From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail1.med.uni-goettingen.de (mail1.med.uni-goettingen.de [134.76.103.230]) by sourceware.org (Postfix) with ESMTPS id 83AE53839C53 for ; Mon, 24 May 2021 06:05:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 83AE53839C53 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=med.uni-goettingen.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=prvs=077863f85d=martin.uecker@med.uni-goettingen.de Received: from umg-exc-4.ads.local.med.uni-goettingen.de ([10.76.100.71]:11745) by mail1.med.uni-goettingen.de with esmtps (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1ll3iW-0006wJ-0x; Mon, 24 May 2021 08:05:32 +0200 Received: from UMG-EXC-1.ads.local.med.uni-goettingen.de ([fe80::c97f:60fd:6a2d:e4b9]) by umg-exc-4.ads.local.med.uni-goettingen.de ([fe80::3dbf:681a:6038:982d%14]) with mapi id 14.03.0513.000; Mon, 24 May 2021 08:05:22 +0200 From: "Uecker, Martin" To: "gcc-patches@gcc.gnu.org" CC: "joseph@codesourcery.com" Subject: [C PATCH] qualifiers of pointers to arrays in C2X [PR 98397] Thread-Topic: [C PATCH] qualifiers of pointers to arrays in C2X [PR 98397] Thread-Index: AQHXUGLH3+3UzUjC0UiuMIFpqho6sA== Date: Mon, 24 May 2021 06:05:21 +0000 Message-ID: <5690541802513d86355283933c811c171410543e.camel@med.uni-goettingen.de> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.76.100.74] Content-Type: text/plain; charset="utf-8" Content-ID: <13ECE08B0E75C04A90E978370678DD5E@med.uni-goettingen.de> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2021 06:05:40 -0000 DQpIaSBKb3NlcGgsDQoNCkkgZm91bmQgc29tZSB0aW1lIHRvIHVwZGF0ZSB0aGlzIHBhdGNoLiBU aGUgb25seSByZWFsIGNoYW5nZQ0Kb2YgdGhlIHBhdGNoIGlzIHRoZSBxdWFsaWZpZXIgaW4gdGhl IGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gZm9yDQpwb2ludGVyIHRvIGFycmF5cyBpbiBDMlguIEFs bCB0aGUgcmVzdCBhcmUgdGhlIHdhcm5pbmdzLA0Kd2hpY2ggd2VyZSB3cm9uZyBpbiB0aGUgbGFz dCB2ZXJzaW9uLg0KDQpJIGhvcGUgSSBnb3QgdGhpcyBjb3JyZWN0IHRoaXMgdGltZSBpbiBjb21i aW5hdGlvbiB3aXRoDQotcGVkYW50aWMtZXJyb3JzIGFuZCAtV2MxMS1jMngtY29tcGF0LiANCg0K TWFydGluDQoNCg0KMjAyMS0wNS0xNiAgTWFydGluIFVlY2tlciAgPG11ZWNrZXJAZ3dkZy5kZT4N CiAgICANCmdjYy9jLw0KICAgICBQUiBjLzk4Mzk3DQogICAgICogYy10eXBlY2suYyAoY29tcF90 YXJnZXRfdHlwZXMpOiBDaGFuZ2UgcGVkd2FybiB0byBwZWR3YXJuX2MxMQ0KICAgICBmb3IgcG9p bnRlcnMgdG8gYXJyYXlzIHdpdGggcXVhbGlmaWVycy4NCiAgICAgKGJ1aWxkX2NvbmRpdGlvbmFs X2V4cHIpOiBGb3IgQzIzIGRvbid0IGxvc2UgcXVhbGlmaWVycyBmb3IgcG9pbnRlcnMNCiAgICAg dG8gYXJyYXlzIHdoZW4gdGhlIG90aGVyIHBvaW50ZXIgaXMgYSB2b2lkIHBvaW50ZXIuIFVwZGF0 ZSB3YXJuaW5ncy4NCiAgICAgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBVcGRhdGUgd2Fybmlu Z3MgZm9yIEMyWCB3aGVuIGNvbnZlcnRpbmcgZnJvbQ0KICAgICB2b2lkKiB3aXRoIHF1YWxpZmll cnMgdG8gYSBwb2ludGVyIHRvIGFycmF5IHdpdGggdGhlIHNhbWUgcXVhbGlmaWVycy4NCg0KZ2Nj L3Rlc3RzdWl0ZS8NCiAgICAgUFIgYy85ODM5Nw0KICAgICAqIGdjYy5kZy9jMTEtcXVhbC0xLmM6 IE5ldyB0ZXN0Lg0KICAgICAqIGdjYy5kZy9jMngtcXVhbC0xLmM6IE5ldyB0ZXN0Lg0KICAgICAq IGdjYy5kZy9jMngtcXVhbC0yLmM6IE5ldyB0ZXN0Lg0KICAgICAqIGdjYy5kZy9jMngtcXVhbC0z LmM6IE5ldyB0ZXN0Lg0KICAgICAqIGdjYy5kZy9jMngtcXVhbC00LmM6IE5ldyB0ZXN0Lg0KICAg ICAqIGdjYy5kZy9jMngtcXVhbC01LmM6IE5ldyB0ZXN0Lg0KICAgICAqIGdjYy5kZy9jMngtcXVh bC02LmM6IE5ldyB0ZXN0Lg0KICAgICAqIGdjYy5kZy9wb2ludGVyLWFycmF5LXF1YWxzLTEuYzog UmVtb3ZlIHVubmVjZXNzYXJ5IGZsYWcuDQogICAgICogZ2NjLmRnL3BvaW50ZXItYXJyYXktcXVh bHMtMi5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgZmxhZy4NCg0KDQpkaWZmIC0tZ2l0IGEvZ2NjL2Mv Yy10eXBlY2suYyBiL2djYy9jL2MtdHlwZWNrLmMNCmluZGV4IGZjNjRlZjk2ZmI4Li41YjEzNjU2 YzA5MCAxMDA2NDQNCi0tLSBhL2djYy9jL2MtdHlwZWNrLmMNCisrKyBiL2djYy9jL2MtdHlwZWNr LmMNCkBAIC0xMzI4LDggKzEzMjgsOCBAQCBjb21wX3RhcmdldF90eXBlcyAobG9jYXRpb25fdCBs b2NhdGlvbiwgdHJlZSB0dGwsIHRyZWUgdHRyKQ0KICAgdmFsID0gY29tcHR5cGVzX2NoZWNrX2Vu dW1faW50IChtdmwsIG12ciwgJmVudW1fYW5kX2ludF9wKTsNCiANCiAgIGlmICh2YWwgPT0gMSAm JiB2YWxfcGVkICE9IDEpDQotICAgIHBlZHdhcm4gKGxvY2F0aW9uLCBPUFRfV3BlZGFudGljLCAi cG9pbnRlcnMgdG8gYXJyYXlzIHdpdGggZGlmZmVyZW50IHF1YWxpZmllcnMgIg0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZSBpbmNvbXBhdGlibGUgaW4gSVNPIEMi KTsNCisgICAgcGVkd2Fybl9jMTEgKGxvY2F0aW9uLCBPUFRfV3BlZGFudGljLCAiaW52YWxpZCB1 c2Ugb2YgcG9pbnRlcnMgdG8gYXJyYXlzIHdpdGggZGlmZmVyZW50IHF1YWxpZmllcnMgIg0KKwkJ CQkJICAiaW4gSVNPIEMgYmVmb3JlIEMyWCIpOw0KIA0KICAgaWYgKHZhbCA9PSAyKQ0KICAgICBw ZWR3YXJuIChsb2NhdGlvbiwgT1BUX1dwZWRhbnRpYywgInR5cGVzIGFyZSBub3QgcXVpdGUgY29t cGF0aWJsZSIpOw0KQEAgLTUzOTYsMzkgKzUzOTYsNDAgQEAgYnVpbGRfY29uZGl0aW9uYWxfZXhw ciAobG9jYXRpb25fdCBjb2xvbl9sb2MsIHRyZWUgaWZleHAsIGJvb2wgaWZleHBfYmNwLA0KIAkJ ICAgICJ1c2VkIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24iKTsNCiAJICByZXR1cm4gZXJyb3Jf bWFya19ub2RlOw0KIAl9DQotICAgICAgZWxzZSBpZiAoVk9JRF9UWVBFX1AgKFRSRUVfVFlQRSAo dHlwZTEpKQ0KLQkgICAgICAgJiYgIVRZUEVfQVRPTUlDIChUUkVFX1RZUEUgKHR5cGUxKSkpDQot CXsNCi0JICBpZiAoKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh0eXBlMikpID09IEFSUkFZX1RZUEUp DQotCSAgICAgICYmIChUWVBFX1FVQUxTIChzdHJpcF9hcnJheV90eXBlcyAoVFJFRV9UWVBFICh0 eXBlMikpKQ0KLQkJICAmIH5UWVBFX1FVQUxTIChUUkVFX1RZUEUgKHR5cGUxKSkpKQ0KLQkgICAg d2FybmluZ19hdCAoY29sb25fbG9jLCBPUFRfV2Rpc2NhcmRlZF9hcnJheV9xdWFsaWZpZXJzLA0K LQkJCSJwb2ludGVyIHRvIGFycmF5IGxvc2VzIHF1YWxpZmllciAiDQotCQkJImluIGNvbmRpdGlv bmFsIGV4cHJlc3Npb24iKTsNCi0NCi0JICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHR5cGUy KSkgPT0gRlVOQ1RJT05fVFlQRSkNCisgICAgICBlbHNlIGlmICgoVk9JRF9UWVBFX1AgKFRSRUVf VFlQRSAodHlwZTEpKQ0KKwkJJiYgIVRZUEVfQVRPTUlDIChUUkVFX1RZUEUgKHR5cGUxKSkpDQor CSAgICAgICB8fCAoVk9JRF9UWVBFX1AgKFRSRUVfVFlQRSAodHlwZTIpKQ0KKwkJICAgJiYgIVRZ UEVfQVRPTUlDIChUUkVFX1RZUEUgKHR5cGUyKSkpKQ0KKwl7DQorCSAgdHJlZSB0MSA9IFRSRUVf VFlQRSAodHlwZTEpOw0KKwkgIHRyZWUgdDIgPSBUUkVFX1RZUEUgKHR5cGUyKTsNCisJICBpZiAo IVZPSURfVFlQRV9QICh0MSkpDQorCSAgIHsNCisJICAgICAvKiByb2xlcyBhcmUgc3dhcHBlZCAq Lw0KKwkgICAgIHQxID0gdDI7DQorCSAgICAgdDIgPSBUUkVFX1RZUEUgKHR5cGUxKTsNCisJICAg fQ0KKwkgIHRyZWUgdDJfc3RyaXBwZWQgPSBzdHJpcF9hcnJheV90eXBlcyAodDIpOw0KKwkgIGlm ICgoVFJFRV9DT0RFICh0MikgPT0gQVJSQVlfVFlQRSkNCisJICAgICAgJiYgKFRZUEVfUVVBTFMg KHQyX3N0cmlwcGVkKSAmIH5UWVBFX1FVQUxTICh0MSkpKQ0KKwkgICAgew0KKwkgICAgICBpZiAo IWZsYWdfaXNvYzJ4KQ0KKwkJd2FybmluZ19hdCAoY29sb25fbG9jLCBPUFRfV2Rpc2NhcmRlZF9h cnJheV9xdWFsaWZpZXJzLA0KKwkJCSAgICAicG9pbnRlciB0byBhcnJheSBsb3NlcyBxdWFsaWZp ZXIgIg0KKwkJCSAgICAiaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIpOw0KKwkgICAgICBlbHNl IGlmICh3YXJuX2MxMV9jMnhfY29tcGF0ID4gMCkNCisJCXdhcm5pbmdfYXQgKGNvbG9uX2xvYywg T1BUX1djMTFfYzJ4X2NvbXBhdCwNCisJCQkgICAgInBvaW50ZXIgdG8gYXJyYXkgbG9zZXMgcXVh bGlmaWVyICINCisJCQkgICAgImluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaW4gSVNPIEMgYmVm b3JlIEMyWCIpOw0KKwkgICAgfQ0KKwkgIGlmIChUUkVFX0NPREUgKHQyKSA9PSBGVU5DVElPTl9U WVBFKQ0KIAkgICAgcGVkd2FybiAoY29sb25fbG9jLCBPUFRfV3BlZGFudGljLA0KIAkJICAgICAi SVNPIEMgZm9yYmlkcyBjb25kaXRpb25hbCBleHByIGJldHdlZW4gIg0KIAkJICAgICAiJTx2b2lk IColPiBhbmQgZnVuY3Rpb24gcG9pbnRlciIpOw0KLQkgIHJlc3VsdF90eXBlID0gYnVpbGRfcG9p bnRlcl90eXBlIChxdWFsaWZ5X3R5cGUgKFRSRUVfVFlQRSAodHlwZTEpLA0KLQkJCQkJCQkgIFRS RUVfVFlQRSAodHlwZTIpKSk7DQotCX0NCi0gICAgICBlbHNlIGlmIChWT0lEX1RZUEVfUCAoVFJF RV9UWVBFICh0eXBlMikpDQotCSAgICAgICAmJiAhVFlQRV9BVE9NSUMgKFRSRUVfVFlQRSAodHlw ZTIpKSkNCi0Jew0KLQkgIGlmICgoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHR5cGUxKSkgPT0gQVJS QVlfVFlQRSkNCi0JICAgICAgJiYgKFRZUEVfUVVBTFMgKHN0cmlwX2FycmF5X3R5cGVzIChUUkVF X1RZUEUgKHR5cGUxKSkpDQotCQkgICYgflRZUEVfUVVBTFMgKFRSRUVfVFlQRSAodHlwZTIpKSkp DQotCSAgICB3YXJuaW5nX2F0IChjb2xvbl9sb2MsIE9QVF9XZGlzY2FyZGVkX2FycmF5X3F1YWxp ZmllcnMsDQotCQkJInBvaW50ZXIgdG8gYXJyYXkgbG9zZXMgcXVhbGlmaWVyICINCi0JCQkiaW4g Y29uZGl0aW9uYWwgZXhwcmVzc2lvbiIpOw0KLQ0KLQkgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQ RSAodHlwZTEpKSA9PSBGVU5DVElPTl9UWVBFKQ0KLQkgICAgcGVkd2FybiAoY29sb25fbG9jLCBP UFRfV3BlZGFudGljLA0KLQkJICAgICAiSVNPIEMgZm9yYmlkcyBjb25kaXRpb25hbCBleHByIGJl dHdlZW4gIg0KLQkJICAgICAiJTx2b2lkIColPiBhbmQgZnVuY3Rpb24gcG9pbnRlciIpOw0KLQkg IHJlc3VsdF90eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlIChxdWFsaWZ5X3R5cGUgKFRSRUVfVFlQ RSAodHlwZTIpLA0KLQkJCQkJCQkgIFRSRUVfVFlQRSAodHlwZTEpKSk7DQorCSAgLyogZm9yIGFy cmF5LCB1c2UgcXVhbGlmaWVycyBvZiBlbGVtZW50IHR5cGUgKi8NCisJICBpZiAoZmxhZ19pc29j MngpDQorCSAgICB0MiA9IHQyX3N0cmlwcGVkOw0KKwkgIHJlc3VsdF90eXBlID0gYnVpbGRfcG9p bnRlcl90eXBlIChxdWFsaWZ5X3R5cGUgKHQxLCB0MikpOw0KIAl9DQogICAgICAgLyogT2JqZWN0 aXZlLUMgcG9pbnRlciBjb21wYXJpc29ucyBhcmUgYSBiaXQgbW9yZSBsZW5pZW50LiAgKi8NCiAg ICAgICBlbHNlIGlmIChvYmpjX2hhdmVfY29tbW9uX3R5cGUgKHR5cGUxLCB0eXBlMiwgLTMsIE5V TExfVFJFRSkpDQpAQCAtNjc4NiwyNyArNjc4Nyw0MCBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50 IChsb2NhdGlvbl90IGxvY2F0aW9uLCBsb2NhdGlvbl90IGV4cHJfbG9jLCB0cmVlIHR5cGUsDQog DQogICAvKiBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gZW1pdCBkaWFnbm9zdGljcyB0byBlbnN1cmUg dGhhdCBhbGwgZm9ybWF0DQogICAgICBzdHJpbmdzIGFyZSBjb21wbGV0ZSBzZW50ZW5jZXMsIHZp c2libGUgdG8gZ2V0dGV4dCBhbmQgY2hlY2tlZCBhdA0KLSAgICAgY29tcGlsZSB0aW1lLiAgSXQg aXMgdGhlIHNhbWUgYXMgUEVEV0FSTl9GT1JfQVNTSUdOTUVOVCBidXQgd2l0aCBhbg0KLSAgICAg ZXh0cmEgcGFyYW1ldGVyIHRvIGVudW1lcmF0ZSBxdWFsaWZpZXJzLiAgKi8NCi0jZGVmaW5lIFBF RFdBUk5fRk9SX1FVQUxJRklFUlMoTE9DQVRJT04sIFBMT0MsIE9QVCwgQVIsIEFTLCBJTiwgUkUs IFFVQUxTKSBcDQorICAgICBjb21waWxlIHRpbWUuICBJdCBjYW4gYmUgY2FsbGVkIHdpdGggJ3Bl ZHdhcm4nIG9yICd3YXJuaW5nX2F0Jy4gICovDQorI2RlZmluZSBXQVJOSU5HX0ZPUl9RVUFMSUZJ RVJTKFBFRFdBUk4sIExPQ0FUSU9OLCBQTE9DLCBPUFQsIEFSLCBBUywgSU4sIFJFLCBRVUFMUykg XA0KICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQogICAgIHN3aXRjaCAoZXJydHlwZSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICAgICB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KICAgICAgIGNhc2UgaWNfYXJncGFzczogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQotCXsJCQkJCQkJCVwNCi0JYXV0b19kaWFnbm9zdGlj X2dyb3VwIGQ7CQkJCQkJXA0KLQlpZiAocGVkd2FybiAoUExPQywgT1BULCBBUiwgcGFybW51bSwg cm5hbWUsIFFVQUxTKSkJCVwNCi0JICBpbmZvcm1fZm9yX2FyZyAoZnVuZGVjbCwgKFBMT0MpLCBw YXJtbnVtLCB0eXBlLCByaHN0eXBlKTsJXA0KLQl9CQkJCQkJCQlcDQorCXsJCQkJCQkJCSBcDQor CSAgYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CQkJCQkgXA0KKwkgIGlmIChQRURXQVJOKSB7CQkJ CQkJIFwNCisJICAgIGlmIChwZWR3YXJuIChQTE9DLCBPUFQsIEFSLCBwYXJtbnVtLCBybmFtZSwg UVVBTFMpKSAgICAgICAgICBcDQorCSAgICAgIGluZm9ybV9mb3JfYXJnIChmdW5kZWNsLCAoUExP QyksIHBhcm1udW0sIHR5cGUsIHJoc3R5cGUpOyAgXA0KKwkgIH0gZWxzZSB7CQkJCQkJCSBcDQor CSAgICBpZiAod2FybmluZ19hdCAoUExPQywgT1BULCBBUiwgcGFybW51bSwgcm5hbWUsIFFVQUxT KSkJIFwNCisJICAgICAgaW5mb3JtX2Zvcl9hcmcgKGZ1bmRlY2wsIChQTE9DKSwgcGFybW51bSwg dHlwZSwgcmhzdHlwZSk7ICBcDQorCSAgfQkJCQkJCQkJIFwNCisJfQkJCQkJCQkJIFwNCiAgICAg ICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KICAgICAgIGNhc2UgaWNfYXNzaWduOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAgICBwZWR3YXJuIChMT0NB VElPTiwgT1BULCBBUywgUVVBTFMpOwkJCQkgXA0KKwlpZiAoUEVEV0FSTikJCQkJCQkJIFwNCisJ ICBwZWR3YXJuIChMT0NBVElPTiwgT1BULCBBUywgUVVBTFMpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorCWVsc2UJCQkJCQkJCSBcDQorCSAgd2FybmluZ19hdCAoTE9DQVRJT04sIE9Q VCwgQVMsIFFVQUxTKTsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICAgICAgYnJlYWs7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQogICAgICAgY2FzZSBpY19pbml0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgICAgIHBlZHdhcm4gKExPQ0FUSU9OLCBPUFQs IElOLCBRVUFMUyk7CQkJCSBcDQorCWlmIChQRURXQVJOKQkJCQkJCQkgXA0KKwkgIHBlZHdhcm4g KExPQ0FUSU9OLCBPUFQsIElOLCBRVUFMUyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CisJZWxzZQkJCQkJCQkJIFwNCisJICB3YXJuaW5nX2F0IChMT0NBVElPTiwgT1BULCBJTiwgUVVB TFMpOyAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICBicmVhazsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICAg ICBjYXNlIGljX3JldHVybjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KLSAgICAgICAgcGVkd2FybiAoTE9DQVRJT04sIE9QVCwgUkUsIFFVQUxT KTsJCQkJIFwNCisJaWYgKFBFRFdBUk4pCQkJCQkJCSBcDQorCSAgcGVkd2FybiAoTE9DQVRJT04s IE9QVCwgUkUsIFFVQUxTKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwllbHNlCQkJ CQkJCQkgXA0KKwkgIHdhcm5pbmdfYXQgKExPQ0FUSU9OLCBPUFQsIFJFLCBRVUFMUyk7ICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICAgIGRlZmF1bHQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQogICAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCkBAIC02ODE1LDMyICs2ODI5LDExIEBAIGNvbnZlcnRf Zm9yX2Fzc2lnbm1lbnQgKGxvY2F0aW9uX3QgbG9jYXRpb24sIGxvY2F0aW9uX3QgZXhwcl9sb2Ms IHRyZWUgdHlwZSwNCiANCiAgIC8qIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBlbWl0IGRpYWdub3N0 aWNzIHRvIGVuc3VyZSB0aGF0IGFsbCBmb3JtYXQNCiAgICAgIHN0cmluZ3MgYXJlIGNvbXBsZXRl IHNlbnRlbmNlcywgdmlzaWJsZSB0byBnZXR0ZXh0IGFuZCBjaGVja2VkIGF0DQotICAgICBjb21w aWxlIHRpbWUuICBJdCBpcyB0aGUgc2FtZSBhcyBQRURXQVJOX0ZPUl9RVUFMSUZJRVJTIGJ1dCB1 c2VzDQotICAgICB3YXJuaW5nX2F0IGluc3RlYWQgb2YgcGVkd2Fybi4gICovDQotI2RlZmluZSBX QVJOSU5HX0ZPUl9RVUFMSUZJRVJTKExPQ0FUSU9OLCBQTE9DLCBPUFQsIEFSLCBBUywgSU4sIFJF LCBRVUFMUykgXA0KLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIHN3aXRjaCAoZXJydHlwZSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAg ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KLSAgICAgIGNhc2UgaWNfYXJncGFzczogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotCXsJCQkJCQkJCVwNCi0JICBhdXRv X2RpYWdub3N0aWNfZ3JvdXAgZDsJCQkJCQlcDQotCSAgaWYgKHdhcm5pbmdfYXQgKFBMT0MsIE9Q VCwgQVIsIHBhcm1udW0sIHJuYW1lLCBRVUFMUykpCVwNCi0JICAgIGluZm9ybV9mb3JfYXJnIChm dW5kZWNsLCAoUExPQyksIHBhcm1udW0sIHR5cGUsIHJoc3R5cGUpOyBcDQotCX0JCQkJCQkJCVwN Ci0gICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KLSAgICAgIGNhc2UgaWNfYXNzaWduOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAgICB3YXJuaW5n X2F0IChMT0NBVElPTiwgT1BULCBBUywgUVVBTFMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCi0gICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICAgIGNhc2UgaWNfaW5pdDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAgICB3YXJu aW5nX2F0IChMT0NBVElPTiwgT1BULCBJTiwgUVVBTFMpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCi0gICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICAgIGNhc2UgaWNfcmV0dXJuOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAgICB3 YXJuaW5nX2F0IChMT0NBVElPTiwgT1BULCBSRSwgUVVBTFMpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCi0gICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAg ICBnY2NfdW5yZWFjaGFibGUgKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgfSB3aGlsZSAoMCkNCisgICAgIGNv bXBpbGUgdGltZS4gIEl0IGlzIHRoZSBzYW1lIGFzIFBFRFdBUk5fRk9SX0FTU0lHTk1FTlQgYnV0 IHdpdGggYW4NCisgICAgIGV4dHJhIHBhcmFtZXRlciB0byBlbnVtZXJhdGUgcXVhbGlmaWVycy4g ICovDQorI2RlZmluZSBQRURXQVJOX0ZPUl9RVUFMSUZJRVJTKExPQ0FUSU9OLCBQTE9DLCBPUFQs IEFSLCBBUywgSU4sIFJFLCBRVUFMUykgXA0KKyAgIFdBUk5JTkdfRk9SX1FVQUxJRklFUlMgKHRy dWUsIExPQ0FUSU9OLCBQTE9DLCBPUFQsIEFSLCBBUywgSU4sIFJFLCBRVUFMUykNCisNCiANCiAg IGlmIChUUkVFX0NPREUgKHJocykgPT0gRVhDRVNTX1BSRUNJU0lPTl9FWFBSKQ0KICAgICByaHMg PSBUUkVFX09QRVJBTkQgKHJocywgMCk7DQpAQCAtNzM0OCwxNyArNzM0MSwxOCBAQCBjb252ZXJ0 X2Zvcl9hc3NpZ25tZW50IChsb2NhdGlvbl90IGxvY2F0aW9uLCBsb2NhdGlvbl90IGV4cHJfbG9j LCB0cmVlIHR5cGUsDQogDQogCSAgICAgIGlmIChUWVBFX1FVQUxTX05PX0FERFJfU1BBQ0VfTk9f QVRPTUlDICh0dHIpDQogCQkgICYgflRZUEVfUVVBTFNfTk9fQUREUl9TUEFDRV9OT19BVE9NSUMg KHR0bCkpDQotCQlXQVJOSU5HX0ZPUl9RVUFMSUZJRVJTIChsb2NhdGlvbiwgZXhwcl9sb2MsDQot CQkJCSAgICAgICAgT1BUX1dkaXNjYXJkZWRfYXJyYXlfcXVhbGlmaWVycywNCi0JCQkJICAgICAg ICBHXygicGFzc2luZyBhcmd1bWVudCAlZCBvZiAlcUUgZGlzY2FyZHMgIg0KKwkJV0FSTklOR19G T1JfUVVBTElGSUVSUyAoZmxhZ19pc29jMngsDQorCQkJCQlsb2NhdGlvbiwgZXhwcl9sb2MsDQor CQkJCQlPUFRfV2Rpc2NhcmRlZF9hcnJheV9xdWFsaWZpZXJzLA0KKwkJCQkJR18oInBhc3Npbmcg YXJndW1lbnQgJWQgb2YgJXFFIGRpc2NhcmRzICINCiAJCQkJCSAgICIlcXYgcXVhbGlmaWVyIGZy b20gcG9pbnRlciB0YXJnZXQgdHlwZSIpLA0KLQkJCQkgICAgICAgIEdfKCJhc3NpZ25tZW50IGRp c2NhcmRzICVxdiBxdWFsaWZpZXIgIg0KKwkJCQkJR18oImFzc2lnbm1lbnQgZGlzY2FyZHMgJXF2 IHF1YWxpZmllciAiDQogCQkJCQkgICAiZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiksDQotCQkJ CSAgICAgICAgR18oImluaXRpYWxpemF0aW9uIGRpc2NhcmRzICVxdiBxdWFsaWZpZXIgIg0KKwkJ CQkJR18oImluaXRpYWxpemF0aW9uIGRpc2NhcmRzICVxdiBxdWFsaWZpZXIgIg0KIAkJCQkJICAg ImZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIpLA0KLQkJCQkgICAgICAgIEdfKCJyZXR1cm4gZGlz Y2FyZHMgJXF2IHF1YWxpZmllciBmcm9tICINCisJCQkJCUdfKCJyZXR1cm4gZGlzY2FyZHMgJXF2 IHF1YWxpZmllciBmcm9tICINCiAJCQkJCSAgICJwb2ludGVyIHRhcmdldCB0eXBlIiksDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfUVVBTFMgKHR0cikgJiB+ VFlQRV9RVUFMUyAodHRsKSk7DQorCQkJCQlUWVBFX1FVQUxTICh0dHIpICYgflRZUEVfUVVBTFMg KHR0bCkpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgZWxzZSBpZiAocGVkYW50aWMNCiAJ ICAgICAgJiYgKChWT0lEX1RZUEVfUCAodHRsKSAmJiBUUkVFX0NPREUgKHR0cikgPT0gRlVOQ1RJ T05fVFlQRSkNCkBAIC03MzgxLDI4ICs3Mzc1LDMxIEBAIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQg KGxvY2F0aW9uX3QgbG9jYXRpb24sIGxvY2F0aW9uX3QgZXhwcl9sb2MsIHRyZWUgdHlwZSwNCiAJ ICBlbHNlIGlmIChUUkVFX0NPREUgKHR0cikgIT0gRlVOQ1RJT05fVFlQRQ0KIAkJICAgJiYgVFJF RV9DT0RFICh0dGwpICE9IEZVTkNUSU9OX1RZUEUpDQogCSAgICB7DQorCSAgICAgICAvKiBBc3Np Z25tZW50cyBiZXR3ZWVuIGF0b21pYyBhbmQgbm9uLWF0b21pYyBvYmplY3RzIGFyZSBPSy4gICov DQorCSAgICAgICBib29sIHdhcm5fcXVhbHNfcGVkID0gVFlQRV9RVUFMU19OT19BRERSX1NQQUNF X05PX0FUT01JQyAodHRyKQ0KKwkJCQkgICAgICYgflRZUEVfUVVBTFNfTk9fQUREUl9TUEFDRV9O T19BVE9NSUMgKHR0bCk7DQorCSAgICAgICBib29sIHdhcm5fcXVhbHMgPSBUWVBFX1FVQUxTX05P X0FERFJfU1BBQ0VfTk9fQVRPTUlDICh0dHIpDQorCQkJCSAmIH5UWVBFX1FVQUxTX05PX0FERFJf U1BBQ0VfTk9fQVRPTUlDIChzdHJpcF9hcnJheV90eXBlcyAodHRsKSk7DQorDQogCSAgICAgIC8q IERvbid0IHdhcm4gYWJvdXQgbG9zcyBvZiBxdWFsaWZpZXIgZm9yIGNvbnZlcnNpb25zIGZyb20N CiAJCSBxdWFsaWZpZWQgdm9pZCogdG8gcG9pbnRlcnMgdG8gYXJyYXlzIHdpdGggY29ycmVzcG9u ZGluZw0KLQkJIHF1YWxpZmllciBvbiB0aGUgZWxlbWVudCB0eXBlLiAqLw0KLQkgICAgICBpZiAo IXBlZGFudGljKQ0KLQkgICAgICAgIHR0bCA9IHN0cmlwX2FycmF5X3R5cGVzICh0dGwpOw0KKwkJ IHF1YWxpZmllciBvbiB0aGUgZWxlbWVudCB0eXBlIChleGNlcHQgZm9yIHBlZGFudGljIGJlZm9y ZSBDMjMpLiAqLw0KKwkgICAgICBpZiAod2Fybl9xdWFscyB8fCAod2Fybl9xdWFsc19wZWQgJiYg cGVkYW50aWMgJiYgIWZsYWdfaXNvYzJ4KSkNCisJCVBFRFdBUk5fRk9SX1FVQUxJRklFUlMgKGxv Y2F0aW9uLCBleHByX2xvYywNCisJCQkJCU9QVF9XZGlzY2FyZGVkX3F1YWxpZmllcnMsDQorCQkJ CQlHXygicGFzc2luZyBhcmd1bWVudCAlZCBvZiAlcUUgZGlzY2FyZHMgIg0KKwkJCQkJICAgIiVx diBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiksDQorCQkJCQlHXygiYXNzaWdu bWVudCBkaXNjYXJkcyAlcXYgcXVhbGlmaWVyICINCisJCQkJCSAgICJmcm9tIHBvaW50ZXIgdGFy Z2V0IHR5cGUiKSwNCisJCQkJCUdfKCJpbml0aWFsaXphdGlvbiBkaXNjYXJkcyAlcXYgcXVhbGlm aWVyICINCisJCQkJCSAgICJmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiKSwNCisJCQkJCUdfKCJy ZXR1cm4gZGlzY2FyZHMgJXF2IHF1YWxpZmllciBmcm9tICINCisJCQkJCSAgICJwb2ludGVyIHRh cmdldCB0eXBlIiksDQorCQkJCQlUWVBFX1FVQUxTICh0dHIpICYgflRZUEVfUVVBTFMgKHR0bCkp Ow0KKwkgICAgICBlbHNlIGlmICh3YXJuX3F1YWxzX3BlZCkNCisJCXBlZHdhcm5fYzExIChsb2Nh dGlvbiwgT1BUX1djMTFfYzJ4X2NvbXBhdCwNCisJCQkgICAgICJhcnJheSB3aXRoIHF1YWxpZmll ciBvbiB0aGUgZWxlbWVudCBpcyBub3QgcXVhbGlmaWVkIGJlZm9yZSBDMlgiKTsNCiANCi0JICAg ICAgLyogQXNzaWdubWVudHMgYmV0d2VlbiBhdG9taWMgYW5kIG5vbi1hdG9taWMgb2JqZWN0cyBh cmUgT0suICAqLw0KLQkgICAgICBpZiAoVFlQRV9RVUFMU19OT19BRERSX1NQQUNFX05PX0FUT01J QyAodHRyKQ0KLQkJICAmIH5UWVBFX1FVQUxTX05PX0FERFJfU1BBQ0VfTk9fQVRPTUlDICh0dGwp KQ0KLQkJew0KLQkJICBQRURXQVJOX0ZPUl9RVUFMSUZJRVJTIChsb2NhdGlvbiwgZXhwcl9sb2Ms DQotCQkJCSAgICAgICAgICBPUFRfV2Rpc2NhcmRlZF9xdWFsaWZpZXJzLA0KLQkJCQkgICAgICAg ICAgR18oInBhc3NpbmcgYXJndW1lbnQgJWQgb2YgJXFFIGRpc2NhcmRzICINCi0JCQkJCSAgICAg IiVxdiBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiksDQotCQkJCSAgICAgICAg ICBHXygiYXNzaWdubWVudCBkaXNjYXJkcyAlcXYgcXVhbGlmaWVyICINCi0JCQkJCSAgICAgImZy b20gcG9pbnRlciB0YXJnZXQgdHlwZSIpLA0KLQkJCQkgICAgICAgICAgR18oImluaXRpYWxpemF0 aW9uIGRpc2NhcmRzICVxdiBxdWFsaWZpZXIgIg0KLQkJCQkJICAgICAiZnJvbSBwb2ludGVyIHRh cmdldCB0eXBlIiksDQotCQkJCSAgICAgICAgICBHXygicmV0dXJuIGRpc2NhcmRzICVxdiBxdWFs aWZpZXIgZnJvbSAiDQotCQkJCQkgICAgICJwb2ludGVyIHRhcmdldCB0eXBlIiksDQotCQkJCSAg ICAgICAgICBUWVBFX1FVQUxTICh0dHIpICYgflRZUEVfUVVBTFMgKHR0bCkpOw0KLQkJfQ0KIAkg ICAgICAvKiBJZiB0aGlzIGlzIG5vdCBhIGNhc2Ugb2YgaWdub3JpbmcgYSBtaXNtYXRjaCBpbiBz aWduZWRuZXNzLA0KIAkJIG5vIHdhcm5pbmcuICAqLw0KIAkgICAgICBlbHNlIGlmIChWT0lEX1RZ UEVfUCAodHRsKSB8fCBWT0lEX1RZUEVfUCAodHRyKQ0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2MxMS1xdWFsLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2MxMS1xdWFsLTEu Yw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi5mNzMxZTA2ODgzMA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzExLXF1YWwtMS5jDQpA QCAtMCwwICsxLDExIEBADQorLyogVGVzdCB0aGF0IHF1YWxpZmllcnMgYXJlIGxvc3QgaW4gdGVy dGlhcnkgb3BlcmF0b3IgZm9yIHBvaW50ZXJzIHRvIGFycmF5cyBiZWZvcmUgQzJYLCBQUjk4Mzk3 ICovDQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1zdGQ9YzEx IC1wZWRhbnRpYy1lcnJvcnMgLVduby1kaXNjYXJkZWQtYXJyYXktcXVhbGlmaWVycyIgfSAqLw0K Kw0KK3ZvaWQgZm9vKHZvaWQpDQorew0KKwljb25zdCBpbnQgKCp1KVsxXTsNCisJdm9pZCAqdjsN CisJX1N0YXRpY19hc3NlcnQoX0dlbmVyaWMoMSA/IHUgOiB2LCBjb25zdCB2b2lkKjogMCwgdm9p ZCo6IDEpLCAicXVhbGlmaWVyIG5vdCBsb3N0Iik7DQorCV9TdGF0aWNfYXNzZXJ0KF9HZW5lcmlj KDEgPyB2IDogdSwgY29uc3Qgdm9pZCo6IDAsIHZvaWQqOiAxKSwgInF1YWxpZmllciBub3QgbG9z dCIpOw0KK30NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0xLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0xLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwMDAwMC4uNGQzM2RiMTkwN2QNCi0tLSAvZGV2L251bGwNCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTEuYw0KQEAgLTAsMCArMSwzMCBAQA0KKy8qIFRl c3RzIHJlbGF0ZWQgdG8gcXVhbGlmaWVycyBhbmQgcG9pbnRlcnMgdG8gYXJyYXlzIGluIEMyWCwg UFI5ODM5NyAqLw0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICIt c3RkPWMyeCAtcGVkYW50aWMtZXJyb3JzIiB9ICovDQorDQorLyogdGVzdCB0aGF0IHF1YWxpZmll cnMgYXJlIHByZXNlcnZlZCBpbiB0ZXJ0aWFyeSBvcGVyYXRvciBmb3IgcG9pbnRlcnMgdG8gYXJy YXlzIGluIEMyWCAqLw0KKw0KK3ZvaWQgZih2b2lkKQ0KK3sNCisJY29uc3QgaW50ICgqdSlbMV07 DQorCXZvaWQgKnY7DQorCV9TdGF0aWNfYXNzZXJ0KF9HZW5lcmljKDEgPyB1IDogdiwgY29uc3Qg dm9pZCo6IDEsIHZvaWQqOiAwKSwgImxvc3QgcXVhbGlmaWVyIik7DQorCV9TdGF0aWNfYXNzZXJ0 KF9HZW5lcmljKDEgPyB2IDogdSwgY29uc3Qgdm9pZCo6IDEsIHZvaWQqOiAwKSwgImxvc3QgcXVh bGlmaWVyIik7DQorfQ0KKw0KKy8qIHRlc3QgdGhhdCBhc3NpZ25tZW50IG9mIHVucXVhbGlmaWVk IHRvIHF1YWxpZmllZCBwb2ludGVycyB3b3JrcyBhcyBleHBlY3RlZCAqLw0KKw0KK3ZvaWQgZyh2 b2lkKQ0KK3sNCisJaW50ICgqeClbM107DQorCWNvbnN0IGludCAoKnApWzNdID0geDsNCit9DQor DQorLyogdGVzdCB0aGF0IGFzc2lnbm1lbnQgb2YgcXVhbGlmaWVkIHZvaWQgcG9pbnRlcnMgd29y a3MgYXMgZXhwZWN0ZWQgKi8NCisNCit2b2lkIGgodm9pZCkNCit7DQorCWNvbnN0IHZvaWQqIHg7 DQorCWNvbnN0IGludCAoKnApWzNdID0geDsNCit9DQorDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYzJ4LXF1YWwtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwt Mi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmY2MGE1YjE4ZmFh DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0yLmMN CkBAIC0wLDAgKzEsMzAgQEANCisvKiBUZXN0cyByZWxhdGVkIHRvIHF1YWxpZmllcnMgYW5kIHBv aW50ZXJzIHRvIGFycmF5cyBpbiBDMlgsIFBSOTgzOTcgKi8NCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLw0KKy8qIHsgZGctb3B0aW9ucyAiLXN0ZD1jMnggLVdjMTEtYzJ4LWNvbXBhdCIgfSAqLw0K Kw0KKy8qIHRlc3QgdGhhdCBxdWFsaWZpZXJzIGFyZSBwcmVzZXJ2ZWQgaW4gdGVydGlhcnkgb3Bl cmF0b3IgZm9yIHBvaW50ZXJzIHRvIGFycmF5cyBpbiBDMlggKi8NCisNCit2b2lkIGYodm9pZCkN Cit7DQorCWNvbnN0IGludCAoKnUpWzFdOw0KKwl2b2lkICp2Ow0KKwlfU3RhdGljX2Fzc2VydChf R2VuZXJpYygxID8gdSA6IHYsIGNvbnN0IHZvaWQqOiAxLCB2b2lkKjogMCksICJsb3N0IHF1YWxp ZmllciIpOwkvKiB7IGRnLXdhcm5pbmcgInBvaW50ZXIgdG8gYXJyYXkgbG9zZXMgcXVhbGlmaWVy IGluIGNvbmRpdGlvbmFsIiB9ICovDQorCV9TdGF0aWNfYXNzZXJ0KF9HZW5lcmljKDEgPyB2IDog dSwgY29uc3Qgdm9pZCo6IDEsIHZvaWQqOiAwKSwgImxvc3QgcXVhbGlmaWVyIik7CS8qIHsgZGct d2FybmluZyAicG9pbnRlciB0byBhcnJheSBsb3NlcyBxdWFsaWZpZXIgaW4gY29uZGl0aW9uYWwi IH0gKi8NCit9DQorDQorLyogdGVzdCB0aGF0IGFzc2lnbm1lbnQgb2YgdW5xdWFsaWZpZWQgdG8g cXVhbGlmaWVkIHBvaW50ZXJzIHdvcmtzIGFzIGV4cGVjdGVkICovDQorDQordm9pZCBnKHZvaWQp DQorew0KKwlpbnQgKCp4KVszXTsNCisJY29uc3QgaW50ICgqcClbM10gPSB4OyAvKiB7IGRnLXdh cm5pbmcgImFycmF5cyB3aXRoIGRpZmZlcmVudCBxdWFsaWZpZXJzIiAgfSAqLw0KK30NCisNCisv KiB0ZXN0IHRoYXQgYXNzaWdubWVudCBvZiBxdWFsaWZpZWQgdm9pZCBwb2ludGVycyB3b3JrcyBh cyBleHBlY3RlZCAqLw0KKw0KK3ZvaWQgaCh2b2lkKQ0KK3sNCisJY29uc3Qgdm9pZCogeDsNCisJ Y29uc3QgaW50ICgqcClbM10gPSB4OyAvKiB7IGRnLXdhcm5pbmcgImFycmF5IHdpdGggcXVhbGlm aWVyIG9uIHRoZSBlbGVtZW50IGlzIG5vdCBxdWFsaWZpZWQgYmVmb3JlIEMyWCIgfSAqLw0KK30N CisNCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0zLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0zLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwMDAwMC4uMzE4OTZmY2IxYTENCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTMuYw0KQEAgLTAsMCArMSwzMCBAQA0KKy8qIFRlc3RzIHJl bGF0ZWQgdG8gcXVhbGlmaWVycyBhbmQgcG9pbnRlcnMgdG8gYXJyYXlzIGluIEMyWCwgUFI5ODM5 NyAqLw0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItc3RkPWMy eCAtV2MxMS1jMngtY29tcGF0IC1wZWRhbnRpYy1lcnJvcnMiIH0gKi8NCisNCisvKiB0ZXN0IHRo YXQgcXVhbGlmaWVycyBhcmUgcHJlc2VydmVkIGluIHRlcnRpYXJ5IG9wZXJhdG9yIGZvciBwb2lu dGVycyB0byBhcnJheXMgaW4gQzJYICovDQorDQordm9pZCBmKHZvaWQpDQorew0KKwljb25zdCBp bnQgKCp1KVsxXTsNCisJdm9pZCAqdjsNCisJX1N0YXRpY19hc3NlcnQoX0dlbmVyaWMoMSA/IHUg OiB2LCBjb25zdCB2b2lkKjogMSwgdm9pZCo6IDApLCAibG9zdCBxdWFsaWZpZXIiKTsJLyogeyBk Zy13YXJuaW5nICJwb2ludGVyIHRvIGFycmF5IGxvc2VzIHF1YWxpZmllciBpbiBjb25kaXRpb25h bCIgfSAqLw0KKwlfU3RhdGljX2Fzc2VydChfR2VuZXJpYygxID8gdiA6IHUsIGNvbnN0IHZvaWQq OiAxLCB2b2lkKjogMCksICJsb3N0IHF1YWxpZmllciIpOwkvKiB7IGRnLXdhcm5pbmcgInBvaW50 ZXIgdG8gYXJyYXkgbG9zZXMgcXVhbGlmaWVyIGluIGNvbmRpdGlvbmFsIiB9ICovDQorfQ0KKw0K Ky8qIHRlc3QgdGhhdCBhc3NpZ25tZW50IG9mIHVucXVhbGlmaWVkIHRvIHF1YWxpZmllZCBwb2lu dGVycyB3b3JrcyBhcyBleHBlY3RlZCAqLw0KKw0KK3ZvaWQgZyh2b2lkKQ0KK3sNCisJaW50ICgq eClbM107DQorCWNvbnN0IGludCAoKnApWzNdID0geDsgLyogeyBkZy13YXJuaW5nICJhcnJheXMg d2l0aCBkaWZmZXJlbnQgcXVhbGlmaWVycyIgIH0gKi8NCit9DQorDQorLyogdGVzdCB0aGF0IGFz c2lnbm1lbnQgb2YgcXVhbGlmaWVkIHZvaWQgcG9pbnRlcnMgd29ya3MgYXMgZXhwZWN0ZWQgKi8N CisNCit2b2lkIGgodm9pZCkNCit7DQorCWNvbnN0IHZvaWQqIHg7DQorCWNvbnN0IGludCAoKnAp WzNdID0geDsgLyogeyBkZy13YXJuaW5nICJhcnJheSB3aXRoIHF1YWxpZmllciBvbiB0aGUgZWxl bWVudCBpcyBub3QgcXVhbGlmaWVkIGJlZm9yZSBDMlgiIH0gKi8NCit9DQorDQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYzJ4LXF1YWwtNC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu LjkzYjQ3MjNkY2Q2DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9j MngtcXVhbC00LmMNCkBAIC0wLDAgKzEsMTA1IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8N CisvKiB7IGRnLW9wdGlvbnMgIi1zdGQ9YzJ4IiB9ICovDQordm9pZCB0dm9pZCh2b2lkKiB4KTsN Cit2b2lkIHRyYW5zcG9zZTAoZG91YmxlKiBvdXQsIGNvbnN0IGRvdWJsZSogaW4pIHsgfQ0KK3Zv aWQgdHJhbnNwb3NlMShkb3VibGUgb3V0WzJdWzJdLCBjb25zdCBkb3VibGUgaW5bMl1bMl0pIHsg fQ0KK3ZvaWQgdHJhbnNwb3NlMihkb3VibGUgb3V0WzJdWzJdWzJdLCBjb25zdCBkb3VibGUgaW5b Ml1bMl1bMl0pIHsgfQ0KKy8vIHJldHVybg0KK2ludCAoKnkyKGNvbnN0IGludCB4WzNdWzNdKSlb M10geyByZXR1cm4geDsgfSAvKiB7IGRnLXdhcm5pbmcgInJldHVybiBkaXNjYXJkcyAnY29uc3Qn IHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCitjb25zdCBpbnQgKCp5 MyhpbnQgeFszXVszXSkpWzNdIHsgcmV0dXJuIHg7IH0NCit2b2lkIHRlc3Qodm9pZCkNCit7DQor CWRvdWJsZSB4MFsyXTsNCisJZG91YmxlIHkwWzJdOw0KKwljb25zdCBkb3VibGUgejBbNF07DQor CWRvdWJsZSB4MVsyXVsyXTsNCisJZG91YmxlIHkxWzJdWzJdOw0KKwlkb3VibGUgbzFbMl1bM107 DQorCWNvbnN0IGRvdWJsZSB6MVsyXVsyXTsNCisJZG91YmxlIHgyWzJdWzJdWzJdOw0KKwlkb3Vi bGUgeTJbMl1bMl1bMl07DQorCWRvdWJsZSBvMlsyXVsyXVszXTsNCisJY29uc3QgZG91YmxlIHoy WzJdWzJdWzJdOw0KKwkvLyB2b2lkIHBvaW50ZXJzDQorCXR2b2lkKHgwKTsNCisJdHZvaWQoeDEp Ow0KKwl0dm9pZCh4Mik7DQorCXR2b2lkKHowKTsgLyogeyBkZy13YXJuaW5nICJwYXNzaW5nIGFy Z3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50 ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHZvaWQoejEpOyAvKiB7IGRnLXdhcm5pbmcgInBhc3Np bmcgYXJndW1lbnQgMSBvZiAndHZvaWQnIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20g cG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl0dm9pZCh6Mik7IC8qIHsgZGctd2FybmluZyAi cGFzc2luZyBhcmd1bWVudCAxIG9mICd0dm9pZCcgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIg ZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQorCXZvaWQqIHA7DQorCWNvbnN0IHZvaWQq IHBjOw0KKwlwID0geDA7DQorCXAgPSB4MTsNCisJcCA9IHgyOw0KKwlwID0gejA7IC8qIHsgZGct d2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50 ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJcCA9IHoxOyAvKiB7IGRnLXdhcm5pbmcgImFzc2lnbm1l bnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9 ICovDQorCXAgPSB6MjsgLyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25z dCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwlwYyA9IHgwOw0K KwlwYyA9IHgxOw0KKwlwYyA9IHgyOw0KKwlwYyA9IHowOw0KKwlwYyA9IHoxOw0KKwlwYyA9IHoy Ow0KKwl0cmFuc3Bvc2UwKHBjLCBwKTsgLyogeyBkZy13YXJuaW5nICJwYXNzaW5nIGFyZ3VtZW50 IDEgb2YgJ3RyYW5zcG9zZTAnIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRl ciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl0cmFuc3Bvc2UxKHBjLCBwKTsgLyogeyBkZy13YXJuaW5n ICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3RyYW5zcG9zZTEnIGRpc2NhcmRzICdjb25zdCcgcXVh bGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl0cmFuc3Bvc2UyKHBjLCBw KTsgLyogeyBkZy13YXJuaW5nICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3RyYW5zcG9zZTInIGRp c2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0K Kwl0cmFuc3Bvc2UwKHAsIHBjKTsNCisJdHJhbnNwb3NlMShwLCBwYyk7DQorCXRyYW5zcG9zZTIo cCwgcGMpOw0KKwkvLyBwYXNzaW5nIGFzIGFyZ3VtZW50cw0KKwl0cmFuc3Bvc2UwKHkwLCB4MCk7 DQorCXRyYW5zcG9zZTEoeTEsIHgxKTsNCisJdHJhbnNwb3NlMih5MiwgeDIpOw0KKwkvLyBpbml0 aWFsaXphdGlvbg0KKwljb25zdCBkb3VibGUgKCp1MHApID0geDA7DQorCWNvbnN0IGRvdWJsZSAo KnUxcClbMl0gPSB4MTsNCisJY29uc3QgZG91YmxlICgqdTJwKVsyXVsyXSA9IHgyOw0KKwlkb3Vi bGUgKCp2MHApID0gejA7IC8qIHsgZGctd2FybmluZyAiaW5pdGlhbGl6YXRpb24gZGlzY2FyZHMg J2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQorCWRvdWJs ZSAoKnYxcClbMl0gPSB6MTsgLyogeyBkZy13YXJuaW5nICJpbml0aWFsaXphdGlvbiBkaXNjYXJk cyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJZG91 YmxlICgqdjJwKVsyXVsyXSA9IHoyOyAvKiB7IGRnLXdhcm5pbmcgImluaXRpYWxpemF0aW9uIGRp c2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0K KwkvLyBzdWJ0cmFjdGlvbg0KKwkmKHgwWzFdKSAtICYoejBbMF0pOw0KKwkmKHgxWzFdKSAtICYo ejFbMF0pOw0KKwkmKHgyWzFdKSAtICYoejJbMF0pOw0KKwkvLyBjb21wYXJpc29uDQorCXgwID09 IHowOw0KKwl4MSA9PSB6MTsNCisJeDIgPT0gejI7DQorCXgwIDwgejA7IA0KKwl4MSA8IHoxOyAN CisJeDIgPCB6MjsgDQorCXgwID4gejA7DQorCXgxID4gejE7DQorCXgyID4gejI7DQorCS8vIGFz c2lnbm1lbnQNCisJdTBwID0geDA7DQorCXUxcCA9IHgxOw0KKwl1MnAgPSB4MjsNCisJdjBwID0g ejA7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmll ciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjFwID0gejE7IC8qIHsgZGctd2Fy bmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIg dGFyZ2V0IHR5cGUiIH0gKi8NCisJdjJwID0gejI7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVu dCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0g Ki8NCisJLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMNCisJKHZvaWQpKDEgPyB4MCA6IHowKTsN CisJKHZvaWQpKDEgPyB4MSA6IHoxKTsNCisJKHZvaWQpKDEgPyB4MiA6IHoyKTsNCisJKHZvaWQp KDEgPyB4MCA6IHgxKTsgLyogeyBkZy13YXJuaW5nICJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4g Y29uZGl0aW9uYWwgZXhwcmVzc2lvbiIgfSAqLw0KKwkodm9pZCkoMSA/IHgxIDogeDIpOyAvKiB7 IGRnLXdhcm5pbmcgInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb25kaXRpb25hbCBleHByZXNz aW9uIiB9ICovDQorCSh2b2lkKSgxID8geDIgOiB4MCk7IC8qIHsgZGctd2FybmluZyAicG9pbnRl ciB0eXBlIG1pc21hdGNoIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24iIH0gKi8NCisJdjBwID0g KDEgPyB6MCA6IHYwcCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29u c3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjFwID0gKDEg PyB6MSA6IHYxcCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3Qn IHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjJwID0gKDEgPyB6 MiA6IHYycCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1 YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjBwID0gKDEgPyB4MCA6 IHUwcCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxp ZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjFwID0gKDEgPyB4MSA6IHUx cCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmll ciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjJwID0gKDEgPyB4MiA6IHUycCk7 IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBm cm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJKDEgPyB4MCA6IHowKVswXSA9IDE7IC8q IHsgZGctZXJyb3IgImFzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQorCSgx ID8geDEgOiB6MSlbMF1bMF0gPSAxOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IG9mIHJlYWQt b25seSBsb2NhdGlvbiIgfSAqLw0KKwkoMSA/IHgyIDogejIpWzBdWzBdWzBdID0gMTsgLyogeyBk Zy1lcnJvciAiYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0gKi8NCisJdjBwID0g KDEgPyBwIDogejApOyAvKiB7IGRnLXdhcm5pbmcgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0 JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQorCXYxcCA9ICgxID8g cCA6IHoxKTsgLyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVh bGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl2MnAgPSAoMSA/IHAgOiB6 Mik7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmll ciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjBwID0gKDEgPyBwYyA6IHgwKTsg LyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZy b20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl2MXAgPSAoMSA/IHBjIDogeDEpOyAvKiB7 IGRnLXdhcm5pbmcgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBw b2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQorCXYycCA9ICgxID8gcGMgOiB4Mik7IC8qIHsgZGct d2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50 ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCit9DQorDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYzJ4LXF1YWwtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtNS5jDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjA4MDFmYTBlZWQ1DQotLS0g L2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC01LmMNCkBAIC0w LDAgKzEsMTAxIEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMg Ii1zdGQ9YzJ4IC1wZWRhbnRpYy1lcnJvcnMiIH0gKi8NCit2b2lkIHR2b2lkKHZvaWQqIHgpOw0K K3ZvaWQgdHJhbnNwb3NlMChkb3VibGUqIG91dCwgY29uc3QgZG91YmxlKiBpbikgeyB9DQordm9p ZCB0cmFuc3Bvc2UxKGRvdWJsZSBvdXRbMl1bMl0sIGNvbnN0IGRvdWJsZSBpblsyXVsyXSkgeyB9 DQordm9pZCB0cmFuc3Bvc2UyKGRvdWJsZSBvdXRbMl1bMl1bMl0sIGNvbnN0IGRvdWJsZSBpblsy XVsyXVsyXSkgeyB9DQorLy8gcmV0dXJuDQoraW50ICgqeDIoY29uc3QgaW50IHhbM11bM10pKVsz XSB7IHJldHVybiB4OyB9IC8qIHsgZGctZXJyb3IgInJldHVybiBkaXNjYXJkcyIgfSAqLw0KK2Nv bnN0IGludCAoKngzKGludCB4WzNdWzNdKSlbM10geyByZXR1cm4geDsgfQ0KK3ZvaWQgdGVzdCh2 b2lkKQ0KK3sNCisJZG91YmxlIHgwWzJdOw0KKwlkb3VibGUgeTBbMl07DQorCWNvbnN0IGRvdWJs ZSB6MFs0XTsNCisJZG91YmxlIHgxWzJdWzJdOw0KKwlkb3VibGUgeTFbMl1bMl07DQorCWRvdWJs ZSBvMVsyXVszXTsNCisJY29uc3QgZG91YmxlIHoxWzJdWzJdOw0KKwlkb3VibGUgeDJbMl1bMl1b Ml07DQorCWRvdWJsZSB5MlsyXVsyXVsyXTsNCisJZG91YmxlIG8yWzJdWzJdWzNdOw0KKwljb25z dCBkb3VibGUgejJbMl1bMl1bMl07DQorCS8vIHZvaWQgcG9pbnRlcnMNCisJdHZvaWQoejApOyAv KiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29u c3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHZvaWQoejEp OyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAn Y29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHZvaWQo ejIpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJk cyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdm9p ZCogcDsNCisJY29uc3Qgdm9pZCogcGM7DQorCXAgPSB4MDsNCisJcCA9IHgxOw0KKwlwID0geDI7 DQorCXAgPSB6MDsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1 YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJcCA9IHoxOyAvKiB7IGRn LWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRl ciB0YXJnZXQgdHlwZSIgfSAqLw0KKwlwID0gejI7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQg ZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICov DQorCXBjID0geDA7DQorCXBjID0geDE7DQorCXBjID0geDI7DQorCXBjID0gejA7DQorCXBjID0g ejE7DQorCXBjID0gejI7DQorCXRyYW5zcG9zZTAocGMsIHApOyAvKiB7IGRnLWVycm9yICJwYXNz aW5nIGFyZ3VtZW50IDEgb2YgJ3RyYW5zcG9zZTAnIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVy IGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl0cmFuc3Bvc2UxKHBjLCBwKTsgLyog eyBkZy1lcnJvciAicGFzc2luZyBhcmd1bWVudCAxIG9mICd0cmFuc3Bvc2UxJyBkaXNjYXJkcyAn Y29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHJhbnNw b3NlMihwYywgcCk7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHJhbnNw b3NlMicgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBl IiB9ICovDQorCXRyYW5zcG9zZTAocCwgcGMpOw0KKwl0cmFuc3Bvc2UxKHAsIHBjKTsNCisJdHJh bnNwb3NlMihwLCBwYyk7DQorCS8vIHBhc3NpbmcgYXMgYXJndW1lbnRzDQorCXRyYW5zcG9zZTAo eTAsIHgwKTsNCisJdHJhbnNwb3NlMSh5MSwgbzEpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFy Z3VtZW50IDIgb2YgJ3RyYW5zcG9zZTEnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSIg fSAqLw0KKwl0cmFuc3Bvc2UxKHkxLCB4MSk7DQorCXRyYW5zcG9zZTIoeTIsIG8yKTsgLyogeyBk Zy1lcnJvciAicGFzc2luZyBhcmd1bWVudCAyIG9mICd0cmFuc3Bvc2UyJyBmcm9tIGluY29tcGF0 aWJsZSBwb2ludGVyIHR5cGUiIH0gKi8NCisJdHJhbnNwb3NlMih5MiwgeDIpOw0KKwkvLyBpbml0 aWFsaXphdGlvbg0KKwljb25zdCBkb3VibGUgKCp4MHApID0geDA7DQorCWNvbnN0IGRvdWJsZSAo KngxcClbMl0gPSB4MTsNCisJY29uc3QgZG91YmxlICgqeDJwKVsyXVsyXSA9IHgyOw0KKwlkb3Vi bGUgKCp2MHApID0gejA7IC8qIHsgZGctZXJyb3IgImluaXRpYWxpemF0aW9uIGRpc2NhcmRzICdj b25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwlkb3VibGUg KCp2MXApWzJdID0gejE7IC8qIHsgZGctZXJyb3IgImluaXRpYWxpemF0aW9uIGRpc2NhcmRzIiB9 ICovDQorCWRvdWJsZSAoKnYycClbMl1bMl0gPSB6MjsgLyogeyBkZy1lcnJvciAiaW5pdGlhbGl6 YXRpb24gZGlzY2FyZHMiIH0gKi8NCisJLy8gYXNzaWdubWVudA0KKwl4MHAgPSB4MDsNCisJeDFw ID0geDE7DQorCXgycCA9IHgyOw0KKwkvLyBzdWJ0cmFjdGlvbg0KKwkmKHgwWzFdKSAtICYoejBb MF0pOw0KKwkmKHgxWzFdKSAtICYoejFbMF0pOw0KKwkmKHgyWzFdKSAtICYoejJbMF0pOw0KKwkv LyBjb21wYXJpc29uDQorCXgwID09IHowOw0KKwl4MSA9PSB6MTsNCisJeDIgPT0gejI7DQorCXgw IDwgejA7DQorCXgxIDwgejE7DQorCXgyIDwgejI7DQorCXgwID4gejA7DQorCXgxID4gejE7DQor CXgyID4gejI7DQorCS8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zDQorCSh2b2lkKSgxID8geDAg OiB6MCk7DQorCSh2b2lkKSgxID8geDEgOiB6MSk7DQorCSh2b2lkKSgxID8geDIgOiB6Mik7DQor CSh2b2lkKSgxID8geDAgOiB4MSk7IC8qIHsgZGctZXJyb3IgInBvaW50ZXIgdHlwZSBtaXNtYXRj aCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uIiB9ICovDQorCSh2b2lkKSgxID8geDEgOiB4Mik7 IC8qIHsgZGctZXJyb3IgInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb25kaXRpb25hbCBleHBy ZXNzaW9uIiB9ICovDQorCSh2b2lkKSgxID8geDIgOiB4MCk7IC8qIHsgZGctZXJyb3IgInBvaW50 ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uIiB9ICovDQorCXYwcCA9 ICgxID8gejAgOiB2MHApOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25z dCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl2MXAgPSAoMSA/ IHoxIDogdjFwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyIgfSAqLw0KKwl2 MnAgPSAoMSA/IHoyIDogdjJwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyIg fSAqLw0KKwl2MHAgPSAoMSA/IHgwIDogeDBwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBk aXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8N CisJdjFwID0gKDEgPyB4MSA6IHgxcCk7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgZGlzY2Fy ZHMiIH0gKi8NCisJdjJwID0gKDEgPyB4MiA6IHgycCk7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1l bnQgZGlzY2FyZHMiIH0gKi8NCisJKDEgPyB4MCA6IHowKVswXSA9IDE7IC8qIHsgZGctZXJyb3Ig ImFzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQorCSgxID8geDEgOiB6MSlb MF1bMF0gPSAxOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IG9mIHJlYWQtb25seSBsb2NhdGlv biIgfSAqLw0KKwkoMSA/IHgyIDogejIpWzBdWzBdWzBdID0gMTsgLyogeyBkZy1lcnJvciAiYXNz aWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0gKi8NCisJdjBwID0gKDEgPyBwIDogejAp OyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZy b20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwl2MXAgPSAoMSA/IHAgOiB6MSk7IC8qIHsg ZGctZXJyb3IgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2lu dGVyIHRhcmdldCB0eXBlIiB9ICovDQorCXYycCA9ICgxID8gcCA6IHoyKTsgLyogeyBkZy1lcnJv ciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFy Z2V0IHR5cGUiIH0gKi8NCisJdjBwID0gKDEgPyBwYyA6IHgwKTsgLyogeyBkZy1lcnJvciAiYXNz aWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5 cGUiIH0gKi8NCisJdjFwID0gKDEgPyBwYyA6IHgxKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVu dCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0g Ki8NCisJdjJwID0gKDEgPyBwYyA6IHgyKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNj YXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCit9 DQorDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtNi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtNi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggMDAwMDAwMDAwMDAuLjljOTFlMjA2ZTMwDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9jMngtcXVhbC02LmMNCkBAIC0wLDAgKzEsMTE0IEBADQorLyogeyBkZy1k byBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1zdGQ9YzJ4IC1XYzExLWMyeC1jb21w YXQgLXBlZGFudGljLWVycm9ycyIgfSAqLw0KK3ZvaWQgdHZvaWQodm9pZCogeCk7DQordm9pZCB0 cmFuc3Bvc2UwKGRvdWJsZSogb3V0LCBjb25zdCBkb3VibGUqIGluKSB7IH0NCit2b2lkIHRyYW5z cG9zZTEoZG91YmxlIG91dFsyXVsyXSwgY29uc3QgZG91YmxlIGluWzJdWzJdKSB7IH0NCit2b2lk IHRyYW5zcG9zZTIoZG91YmxlIG91dFsyXVsyXVsyXSwgY29uc3QgZG91YmxlIGluWzJdWzJdWzJd KSB7IH0NCisvLyByZXR1cm4NCitpbnQgKCp4Mihjb25zdCBpbnQgeFszXVszXSkpWzNdIHsgcmV0 dXJuIHg7IH0gLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQorCQkJCQkJLyogeyBk Zy1lcnJvciAicmV0dXJuIGRpc2NhcmRzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovDQor Y29uc3QgaW50ICgqeDMoaW50IHhbM11bM10pKVszXSB7IHJldHVybiB4OyB9CS8qIHsgZGctd2Fy bmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KK3ZvaWQgdGVzdCh2b2lkKQ0KK3sNCisJZG91YmxlIHgw WzJdOw0KKwlkb3VibGUgeTBbMl07DQorCWNvbnN0IGRvdWJsZSB6MFs0XTsNCisJZG91YmxlIHgx WzJdWzJdOw0KKwlkb3VibGUgeTFbMl1bMl07DQorCWRvdWJsZSBvMVsyXVszXTsNCisJY29uc3Qg ZG91YmxlIHoxWzJdWzJdOw0KKwlkb3VibGUgeDJbMl1bMl1bMl07DQorCWRvdWJsZSB5MlsyXVsy XVsyXTsNCisJZG91YmxlIG8yWzJdWzJdWzNdOw0KKwljb25zdCBkb3VibGUgejJbMl1bMl1bMl07 DQorCS8vIHZvaWQgcG9pbnRlcnMNCisJdHZvaWQoejApOyAvKiB7IGRnLWVycm9yICJwYXNzaW5n IGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBv aW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHZvaWQoejEpOyAvKiB7IGRnLWVycm9yICJwYXNz aW5nIGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9t IHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHZvaWQoejIpOyAvKiB7IGRnLWVycm9yICJw YXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBm cm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdm9pZCogcDsNCisJY29uc3Qgdm9pZCog cGM7DQorCXAgPSB4MDsNCisJcCA9IHgxOw0KKwlwID0geDI7DQorCXAgPSB6MDsgLyogeyBkZy1l cnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIg dGFyZ2V0IHR5cGUiIH0gKi8NCisJcCA9IHoxOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRp c2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0K KwlwID0gejI7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFs aWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQorCXBjID0geDA7DQorCXBjID0g eDE7DQorCXBjID0geDI7DQorCXBjID0gejA7DQorCXBjID0gejE7DQorCXBjID0gejI7DQorCXRy YW5zcG9zZTAocGMsIHApOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3Ry YW5zcG9zZTAnIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQg dHlwZSIgfSAqLw0KKwl0cmFuc3Bvc2UxKHBjLCBwKTsgLyogeyBkZy1lcnJvciAicGFzc2luZyBh cmd1bWVudCAxIG9mICd0cmFuc3Bvc2UxJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9t IHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdHJhbnNwb3NlMihwYywgcCk7IC8qIHsgZGct ZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHJhbnNwb3NlMicgZGlzY2FyZHMgJ2NvbnN0 JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQorCXRyYW5zcG9zZTAo cCwgcGMpOyANCisJdHJhbnNwb3NlMShwLCBwYyk7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMy WCIgfSAqLw0KKwl0cmFuc3Bvc2UyKHAsIHBjKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJY IiB9ICovDQorCS8vIHBhc3NpbmcgYXMgYXJndW1lbnRzDQorCXRyYW5zcG9zZTAoeTAsIHgwKTsN CisJdHJhbnNwb3NlMSh5MSwgbzEpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDIg b2YgJ3RyYW5zcG9zZTEnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSIgfSAqLw0KKwl0 cmFuc3Bvc2UxKHkxLCB4MSk7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KKwl0 cmFuc3Bvc2UyKHkyLCBvMik7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMiBvZiAn dHJhbnNwb3NlMicgZnJvbSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlIiB9ICovDQorCXRyYW5z cG9zZTIoeTIsIHgyKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQorCS8vIGlu aXRpYWxpemF0aW9uDQorCWNvbnN0IGRvdWJsZSAoKngwcCkgPSB4MDsNCisJY29uc3QgZG91Ymxl ICgqeDFwKVsyXSA9IHgxOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCisJY29u c3QgZG91YmxlICgqeDJwKVsyXVsyXSA9IHgyOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgi IH0gKi8NCisJZG91YmxlICgqdjBwKSA9IHowOyAvKiB7IGRnLWVycm9yICJpbml0aWFsaXphdGlv biBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0g Ki8NCisJZG91YmxlICgqdjFwKVsyXSA9IHoxOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgi IH0gKi8NCisJCQkJLyogeyBkZy1lcnJvciAiaW5pdGlhbGl6YXRpb24gZGlzY2FyZHMiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8NCisJZG91YmxlICgqdjJwKVsyXVsyXSA9IHoyOyAvKiB7 IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCisJCQkJLyogeyBkZy1lcnJvciAiaW5pdGlh bGl6YXRpb24gZGlzY2FyZHMiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8NCisJCQkJDQor CS8vIGFzc2lnbm1lbnQNCisJeDBwID0geDA7DQorCXgxcCA9IHgxOyAvKiB7IGRnLXdhcm5pbmcg ImJlZm9yZSBDMlgiIH0gKi8NCisJeDJwID0geDI7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMy WCIgfSAqLw0KKw0KKwkvLyBzdWJ0cmFjdGlvbg0KKwkmKHgwWzFdKSAtICYoejBbMF0pOw0KKwkm KHgxWzFdKSAtICYoejFbMF0pOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCisJ Jih4MlsxXSkgLSAmKHoyWzBdKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQor CS8vIGNvbXBhcmlzb24NCisJeDAgPT0gejA7DQorCXgxID09IHoxOyAvKiB7IGRnLXdhcm5pbmcg ImJlZm9yZSBDMlgiIH0gKi8NCisJeDIgPT0gejI7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMy WCIgfSAqLw0KKwl4MCA8IHowOw0KKwl4MSA8IHoxOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBD MlgiIH0gKi8NCisJeDIgPCB6MjsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQor CXgwID4gejA7DQorCXgxID4gejE7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0K Kwl4MiA+IHoyOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCisJLy8gY29uZGl0 aW9uYWwgZXhwcmVzc2lvbnMNCisJKHZvaWQpKDEgPyB4MCA6IHowKTsNCisJKHZvaWQpKDEgPyB4 MSA6IHoxKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQorCSh2b2lkKSgxID8g eDIgOiB6Mik7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KKwkodm9pZCkoMSA/ IHgwIDogeDEpOyAvKiB7IGRnLWVycm9yICJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29uZGl0 aW9uYWwgZXhwcmVzc2lvbiIgfSAqLw0KKwkodm9pZCkoMSA/IHgxIDogeDIpOyAvKiB7IGRnLWVy cm9yICJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIgfSAq Lw0KKwkodm9pZCkoMSA/IHgyIDogeDApOyAvKiB7IGRnLWVycm9yICJwb2ludGVyIHR5cGUgbWlz bWF0Y2ggaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIgfSAqLw0KKwl2MHAgPSAoMSA/IHowIDog djBwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmll ciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjFwID0gKDEgPyB6MSA6IHYxcCk7 IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KKwkJCQkvKiB7IGRnLWVycm9yICJh c3NpZ25tZW50IGRpc2NhcmRzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovDQorCXYycCA9 ICgxID8gejIgOiB2MnApOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCisJCQkJ LyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLw0KKwl2MHAgPSAoMSA/IHgwIDogeDBwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVu dCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0g Ki8NCisJdjFwID0gKDEgPyB4MSA6IHgxcCk7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgZGlz Y2FyZHMiIH0gKi8NCisJCQkJLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovDQorCXYycCA9ICgxID8geDIgOiB4MnApOyAvKiB7IGRnLWVycm9y ICJhc3NpZ25tZW50IGRpc2NhcmRzIiB9ICovDQorCQkJCS8qIHsgZGctd2FybmluZyAiYmVmb3Jl IEMyWCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLw0KKwkoMSA/IHgwIDogejApWzBdID0g MTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0gKi8N CisJKDEgPyB4MSA6IHoxKVswXVswXSA9IDE7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgb2Yg cmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQorCQkJCS8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMy WCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLw0KKwkoMSA/IHgyIDogejIpWzBdWzBdWzBd ID0gMTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0g Ki8NCisJCQkJLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovDQorCXYwcCA9ICgxID8gcCA6IHowKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVu dCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0g Ki8NCisJdjFwID0gKDEgPyBwIDogejEpOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2Nh cmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwkJ CQkvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8NCisJdjJwID0gKDEgPyBwIDogejIpOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2Nh cmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KKwkJ CQkvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8NCisJdjBwID0gKDEgPyBwYyA6IHgwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNj YXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJ djFwID0gKDEgPyBwYyA6IHgxKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAn Y29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCisJdjJwID0g KDEgPyBwYyA6IHgyKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3Qn IHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCit9DQorDQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcG9pbnRlci1hcnJheS1xdWFscy0xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy9wb2ludGVyLWFycmF5LXF1YWxzLTEuYw0KaW5kZXggOTIxYTM3ZTll MGQuLjQ5OGFiMjIzMTYyIDEwMDY0NA0KLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcG9pbnRl ci1hcnJheS1xdWFscy0xLmMNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3BvaW50ZXItYXJy YXktcXVhbHMtMS5jDQpAQCAtMSw2ICsxLDYgQEANCiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0K IC8qIE9yaWdpbjogTWFydGluIFVlY2tlciA8dWVja2VyQGVlY3MuYmVya2VsZXkuZWR1PiAqLw0K LS8qIHsgZGctb3B0aW9ucyAiLVdkaXNjYXJkZWQtYXJyYXktcXVhbGlmaWVycyIgfSAqLw0KKy8q IHsgZGctb3B0aW9ucyAiIiB9ICovDQogdm9pZCB0dm9pZCh2b2lkKiB4KTsNCiB2b2lkIHRyYW5z cG9zZTAoZG91YmxlKiBvdXQsIGNvbnN0IGRvdWJsZSogaW4pIHsgfQ0KIHZvaWQgdHJhbnNwb3Nl MShkb3VibGUgb3V0WzJdWzJdLCBjb25zdCBkb3VibGUgaW5bMl1bMl0pIHsgfQ0KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3BvaW50ZXItYXJyYXktcXVhbHMtMi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcG9pbnRlci1hcnJheS1xdWFscy0yLmMNCmluZGV4IDMwNjg5YzczMTJk Li40Yzk1ZDhhM2E3OCAxMDA2NDQNCi0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3BvaW50ZXIt YXJyYXktcXVhbHMtMi5jDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wb2ludGVyLWFycmF5 LXF1YWxzLTIuYw0KQEAgLTEsNSArMSw1IEBADQogLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCi0v KiB7IGRnLW9wdGlvbnMgIi1XZGlzY2FyZGVkLWFycmF5LXF1YWxpZmllcnMgLXBlZGFudGljLWVy cm9ycyIgfSAqLw0KKy8qIHsgZGctb3B0aW9ucyAiLXBlZGFudGljLWVycm9ycyIgfSAqLw0KIC8q IE9yaWdpbjogTWFydGluIFVlY2tlciA8dWVja2VyQGVlY3MuYmVya2VsZXkuZWR1PiAqLw0KIHZv aWQgdHZvaWQodm9pZCogeCk7DQogdm9pZCB0cmFuc3Bvc2UwKGRvdWJsZSogb3V0LCBjb25zdCBk b3VibGUqIGluKSB7IH0NCg==