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 D0C483855009 for ; Fri, 11 Jun 2021 19:25:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D0C483855009 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=med.uni-goettingen.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=med.uni-goettingen.de Received: from umg-exc-03.ads.local.med.uni-goettingen.de ([10.76.100.76]:35613) by mail1.med.uni-goettingen.de with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1lrmmh-0001ce-0X; Fri, 11 Jun 2021 21:25:39 +0200 Received: from umg-exc-03.ads.local.med.uni-goettingen.de (10.76.100.76) by umg-exc-03.ads.local.med.uni-goettingen.de (10.76.100.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Fri, 11 Jun 2021 21:25:38 +0200 Received: from UMG-EXCARCHIV-1.ads.local.med.uni-goettingen.de (10.76.100.18) by umg-exc-03.ads.local.med.uni-goettingen.de (10.76.100.76) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.1.2242.4 via Frontend Transport; Fri, 11 Jun 2021 21:25:38 +0200 Received: from UMG-EXC-1.ads.local.med.uni-goettingen.de ([fe80::c97f:60fd:6a2d:e4b9]) by umg-excarchiv-1.ads.local.med.uni-goettingen.de ([fe80::e077:5c8d:4a85:75fb%22]) with mapi id 14.03.0439.000; Fri, 11 Jun 2021 21:25:38 +0200 From: "Uecker, Martin" To: "gcc-patches@gcc.gnu.org" CC: "joseph@codesourcery.com" Subject: Re: [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+3UzUjC0UiuMIFpqho6sKsPLNCA Date: Fri, 11 Jun 2021 19:25:37 +0000 Message-ID: <565bf3fe305aebd561f8a96569693af97801832e.camel@med.uni-goettingen.de> References: <5690541802513d86355283933c811c171410543e.camel@med.uni-goettingen.de> In-Reply-To: <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.76] Content-Type: text/plain; charset="utf-8" Content-ID: <761CC59AD832234BB534D692E267447F@med.uni-goettingen.de> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, 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: Fri, 11 Jun 2021 19:25:48 -0000 DQooUElORy4gSW4gY2FzZSB5b3UgbWlzc2VkIHRoaXMuIFNvcnJ5LCBmb3Jnb3QgdG8gQ0MgeW91 LikNCg0KQW0gTW9udGFnLCBkZW4gMjQuMDUuMjAyMSwgMDg6MDUgKzAyMDAgc2NocmllYiBNYXJ0 aW4gVWVja2VyOg0KPiBIaSBKb3NlcGgsDQo+IA0KPiBJIGZvdW5kIHNvbWUgdGltZSB0byB1cGRh dGUgdGhpcyBwYXRjaC4gVGhlIG9ubHkgcmVhbCBjaGFuZ2UNCj4gb2YgdGhlIHBhdGNoIGlzIHRo ZSBxdWFsaWZpZXIgaW4gdGhlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gZm9yDQo+IHBvaW50ZXIg dG8gYXJyYXlzIGluIEMyWC4gQWxsIHRoZSByZXN0IGFyZSB0aGUgd2FybmluZ3MsDQo+IHdoaWNo IHdlcmUgd3JvbmcgaW4gdGhlIGxhc3QgdmVyc2lvbi4NCj4gDQo+IEkgaG9wZSBJIGdvdCB0aGlz IGNvcnJlY3QgdGhpcyB0aW1lIGluIGNvbWJpbmF0aW9uIHdpdGgNCj4gLXBlZGFudGljLWVycm9y cyBhbmQgLVdjMTEtYzJ4LWNvbXBhdC4gDQo+IA0KPiBNYXJ0aW4NCj4gDQo+IA0KPiAyMDIxLTA1 LTE2ICBNYXJ0aW4gVWVja2VyICA8bXVlY2tlckBnd2RnLmRlPg0KPiAgICAgDQo+IGdjYy9jLw0K PiAgICAgIFBSIGMvOTgzOTcNCj4gICAgICAqIGMtdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVz KTogQ2hhbmdlIHBlZHdhcm4gdG8gcGVkd2Fybl9jMTENCj4gICAgICBmb3IgcG9pbnRlcnMgdG8g YXJyYXlzIHdpdGggcXVhbGlmaWVycy4NCj4gICAgICAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6 IEZvciBDMjMgZG9uJ3QgbG9zZSBxdWFsaWZpZXJzIGZvciBwb2ludGVycw0KPiAgICAgIHRvIGFy cmF5cyB3aGVuIHRoZSBvdGhlciBwb2ludGVyIGlzIGEgdm9pZCBwb2ludGVyLiBVcGRhdGUgd2Fy bmluZ3MuDQo+ICAgICAgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBVcGRhdGUgd2FybmluZ3Mg Zm9yIEMyWCB3aGVuIGNvbnZlcnRpbmcgZnJvbQ0KPiAgICAgIHZvaWQqIHdpdGggcXVhbGlmaWVy cyB0byBhIHBvaW50ZXIgdG8gYXJyYXkgd2l0aCB0aGUgc2FtZSBxdWFsaWZpZXJzLg0KPiANCj4g Z2NjL3Rlc3RzdWl0ZS8NCj4gICAgICBQUiBjLzk4Mzk3DQo+ICAgICAgKiBnY2MuZGcvYzExLXF1 YWwtMS5jOiBOZXcgdGVzdC4NCj4gICAgICAqIGdjYy5kZy9jMngtcXVhbC0xLmM6IE5ldyB0ZXN0 Lg0KPiAgICAgICogZ2NjLmRnL2MyeC1xdWFsLTIuYzogTmV3IHRlc3QuDQo+ICAgICAgKiBnY2Mu ZGcvYzJ4LXF1YWwtMy5jOiBOZXcgdGVzdC4NCj4gICAgICAqIGdjYy5kZy9jMngtcXVhbC00LmM6 IE5ldyB0ZXN0Lg0KPiAgICAgICogZ2NjLmRnL2MyeC1xdWFsLTUuYzogTmV3IHRlc3QuDQo+ICAg ICAgKiBnY2MuZGcvYzJ4LXF1YWwtNi5jOiBOZXcgdGVzdC4NCj4gICAgICAqIGdjYy5kZy9wb2lu dGVyLWFycmF5LXF1YWxzLTEuYzogUmVtb3ZlIHVubmVjZXNzYXJ5IGZsYWcuDQo+ICAgICAgKiBn Y2MuZGcvcG9pbnRlci1hcnJheS1xdWFscy0yLmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmbGFnLg0K PiANCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvYy9jLXR5cGVjay5jIGIvZ2NjL2MvYy10eXBlY2su Yw0KPiBpbmRleCBmYzY0ZWY5NmZiOC4uNWIxMzY1NmMwOTAgMTAwNjQ0DQo+IC0tLSBhL2djYy9j L2MtdHlwZWNrLmMNCj4gKysrIGIvZ2NjL2MvYy10eXBlY2suYw0KPiBAQCAtMTMyOCw4ICsxMzI4 LDggQEAgY29tcF90YXJnZXRfdHlwZXMgKGxvY2F0aW9uX3QgbG9jYXRpb24sIHRyZWUgdHRsLCB0 cmVlIHR0cikNCj4gICAgdmFsID0gY29tcHR5cGVzX2NoZWNrX2VudW1faW50IChtdmwsIG12ciwg JmVudW1fYW5kX2ludF9wKTsNCj4gIA0KPiAgICBpZiAodmFsID09IDEgJiYgdmFsX3BlZCAhPSAx KQ0KPiAtICAgIHBlZHdhcm4gKGxvY2F0aW9uLCBPUFRfV3BlZGFudGljLCAicG9pbnRlcnMgdG8g YXJyYXlzIHdpdGggZGlmZmVyZW50IHF1YWxpZmllcnMgIg0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiYXJlIGluY29tcGF0aWJsZSBpbiBJU08gQyIpOw0KPiArICAg IHBlZHdhcm5fYzExIChsb2NhdGlvbiwgT1BUX1dwZWRhbnRpYywgImludmFsaWQgdXNlIG9mIHBv aW50ZXJzIHRvIGFycmF5cyB3aXRoIGRpZmZlcmVudA0KPiBxdWFsaWZpZXJzICINCj4gKwkJCQkJ ICAiaW4gSVNPIEMgYmVmb3JlIEMyWCIpOw0KPiAgDQo+ICAgIGlmICh2YWwgPT0gMikNCj4gICAg ICBwZWR3YXJuIChsb2NhdGlvbiwgT1BUX1dwZWRhbnRpYywgInR5cGVzIGFyZSBub3QgcXVpdGUg Y29tcGF0aWJsZSIpOw0KPiBAQCAtNTM5NiwzOSArNTM5Niw0MCBAQCBidWlsZF9jb25kaXRpb25h bF9leHByIChsb2NhdGlvbl90IGNvbG9uX2xvYywgdHJlZSBpZmV4cCwgYm9vbCBpZmV4cF9iY3As DQo+ICAJCSAgICAidXNlZCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uIik7DQo+ICAJICByZXR1 cm4gZXJyb3JfbWFya19ub2RlOw0KPiAgCX0NCj4gLSAgICAgIGVsc2UgaWYgKFZPSURfVFlQRV9Q IChUUkVFX1RZUEUgKHR5cGUxKSkNCj4gLQkgICAgICAgJiYgIVRZUEVfQVRPTUlDIChUUkVFX1RZ UEUgKHR5cGUxKSkpDQo+IC0Jew0KPiAtCSAgaWYgKChUUkVFX0NPREUgKFRSRUVfVFlQRSAodHlw ZTIpKSA9PSBBUlJBWV9UWVBFKQ0KPiAtCSAgICAgICYmIChUWVBFX1FVQUxTIChzdHJpcF9hcnJh eV90eXBlcyAoVFJFRV9UWVBFICh0eXBlMikpKQ0KPiAtCQkgICYgflRZUEVfUVVBTFMgKFRSRUVf VFlQRSAodHlwZTEpKSkpDQo+IC0JICAgIHdhcm5pbmdfYXQgKGNvbG9uX2xvYywgT1BUX1dkaXNj YXJkZWRfYXJyYXlfcXVhbGlmaWVycywNCj4gLQkJCSJwb2ludGVyIHRvIGFycmF5IGxvc2VzIHF1 YWxpZmllciAiDQo+IC0JCQkiaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIpOw0KPiAtDQo+IC0J ICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHR5cGUyKSkgPT0gRlVOQ1RJT05fVFlQRSkNCj4g KyAgICAgIGVsc2UgaWYgKChWT0lEX1RZUEVfUCAoVFJFRV9UWVBFICh0eXBlMSkpDQo+ICsJCSYm ICFUWVBFX0FUT01JQyAoVFJFRV9UWVBFICh0eXBlMSkpKQ0KPiArCSAgICAgICB8fCAoVk9JRF9U WVBFX1AgKFRSRUVfVFlQRSAodHlwZTIpKQ0KPiArCQkgICAmJiAhVFlQRV9BVE9NSUMgKFRSRUVf VFlQRSAodHlwZTIpKSkpDQo+ICsJew0KPiArCSAgdHJlZSB0MSA9IFRSRUVfVFlQRSAodHlwZTEp Ow0KPiArCSAgdHJlZSB0MiA9IFRSRUVfVFlQRSAodHlwZTIpOw0KPiArCSAgaWYgKCFWT0lEX1RZ UEVfUCAodDEpKQ0KPiArCSAgIHsNCj4gKwkgICAgIC8qIHJvbGVzIGFyZSBzd2FwcGVkICovDQo+ ICsJICAgICB0MSA9IHQyOw0KPiArCSAgICAgdDIgPSBUUkVFX1RZUEUgKHR5cGUxKTsNCj4gKwkg ICB9DQo+ICsJICB0cmVlIHQyX3N0cmlwcGVkID0gc3RyaXBfYXJyYXlfdHlwZXMgKHQyKTsNCj4g KwkgIGlmICgoVFJFRV9DT0RFICh0MikgPT0gQVJSQVlfVFlQRSkNCj4gKwkgICAgICAmJiAoVFlQ RV9RVUFMUyAodDJfc3RyaXBwZWQpICYgflRZUEVfUVVBTFMgKHQxKSkpDQo+ICsJICAgIHsNCj4g KwkgICAgICBpZiAoIWZsYWdfaXNvYzJ4KQ0KPiArCQl3YXJuaW5nX2F0IChjb2xvbl9sb2MsIE9Q VF9XZGlzY2FyZGVkX2FycmF5X3F1YWxpZmllcnMsDQo+ICsJCQkgICAgInBvaW50ZXIgdG8gYXJy YXkgbG9zZXMgcXVhbGlmaWVyICINCj4gKwkJCSAgICAiaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lv biIpOw0KPiArCSAgICAgIGVsc2UgaWYgKHdhcm5fYzExX2MyeF9jb21wYXQgPiAwKQ0KPiArCQl3 YXJuaW5nX2F0IChjb2xvbl9sb2MsIE9QVF9XYzExX2MyeF9jb21wYXQsDQo+ICsJCQkgICAgInBv aW50ZXIgdG8gYXJyYXkgbG9zZXMgcXVhbGlmaWVyICINCj4gKwkJCSAgICAiaW4gY29uZGl0aW9u YWwgZXhwcmVzc2lvbiBpbiBJU08gQyBiZWZvcmUgQzJYIik7DQo+ICsJICAgIH0NCj4gKwkgIGlm IChUUkVFX0NPREUgKHQyKSA9PSBGVU5DVElPTl9UWVBFKQ0KPiAgCSAgICBwZWR3YXJuIChjb2xv bl9sb2MsIE9QVF9XcGVkYW50aWMsDQo+ICAJCSAgICAgIklTTyBDIGZvcmJpZHMgY29uZGl0aW9u YWwgZXhwciBiZXR3ZWVuICINCj4gIAkJICAgICAiJTx2b2lkIColPiBhbmQgZnVuY3Rpb24gcG9p bnRlciIpOw0KPiAtCSAgcmVzdWx0X3R5cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKHF1YWxpZnlf dHlwZSAoVFJFRV9UWVBFICh0eXBlMSksDQo+IC0JCQkJCQkJICBUUkVFX1RZUEUgKHR5cGUyKSkp Ow0KPiAtCX0NCj4gLSAgICAgIGVsc2UgaWYgKFZPSURfVFlQRV9QIChUUkVFX1RZUEUgKHR5cGUy KSkNCj4gLQkgICAgICAgJiYgIVRZUEVfQVRPTUlDIChUUkVFX1RZUEUgKHR5cGUyKSkpDQo+IC0J ew0KPiAtCSAgaWYgKChUUkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZTEpKSA9PSBBUlJBWV9UWVBF KQ0KPiAtCSAgICAgICYmIChUWVBFX1FVQUxTIChzdHJpcF9hcnJheV90eXBlcyAoVFJFRV9UWVBF ICh0eXBlMSkpKQ0KPiAtCQkgICYgflRZUEVfUVVBTFMgKFRSRUVfVFlQRSAodHlwZTIpKSkpDQo+ IC0JICAgIHdhcm5pbmdfYXQgKGNvbG9uX2xvYywgT1BUX1dkaXNjYXJkZWRfYXJyYXlfcXVhbGlm aWVycywNCj4gLQkJCSJwb2ludGVyIHRvIGFycmF5IGxvc2VzIHF1YWxpZmllciAiDQo+IC0JCQki aW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIpOw0KPiAtDQo+IC0JICBpZiAoVFJFRV9DT0RFIChU UkVFX1RZUEUgKHR5cGUxKSkgPT0gRlVOQ1RJT05fVFlQRSkNCj4gLQkgICAgcGVkd2FybiAoY29s b25fbG9jLCBPUFRfV3BlZGFudGljLA0KPiAtCQkgICAgICJJU08gQyBmb3JiaWRzIGNvbmRpdGlv bmFsIGV4cHIgYmV0d2VlbiAiDQo+IC0JCSAgICAgIiU8dm9pZCAqJT4gYW5kIGZ1bmN0aW9uIHBv aW50ZXIiKTsNCj4gLQkgIHJlc3VsdF90eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlIChxdWFsaWZ5 X3R5cGUgKFRSRUVfVFlQRSAodHlwZTIpLA0KPiAtCQkJCQkJCSAgVFJFRV9UWVBFICh0eXBlMSkp KTsNCj4gKwkgIC8qIGZvciBhcnJheSwgdXNlIHF1YWxpZmllcnMgb2YgZWxlbWVudCB0eXBlICov DQo+ICsJICBpZiAoZmxhZ19pc29jMngpDQo+ICsJICAgIHQyID0gdDJfc3RyaXBwZWQ7DQo+ICsJ ICByZXN1bHRfdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAocXVhbGlmeV90eXBlICh0MSwgdDIp KTsNCj4gIAl9DQo+ICAgICAgICAvKiBPYmplY3RpdmUtQyBwb2ludGVyIGNvbXBhcmlzb25zIGFy ZSBhIGJpdCBtb3JlIGxlbmllbnQuICAqLw0KPiAgICAgICAgZWxzZSBpZiAob2JqY19oYXZlX2Nv bW1vbl90eXBlICh0eXBlMSwgdHlwZTIsIC0zLCBOVUxMX1RSRUUpKQ0KPiBAQCAtNjc4NiwyNyAr Njc4Nyw0MCBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50IChsb2NhdGlvbl90IGxvY2F0aW9uLCBs b2NhdGlvbl90IGV4cHJfbG9jLCB0cmVlDQo+IHR5cGUsDQo+ICANCj4gICAgLyogVGhpcyBtYWNy byBpcyB1c2VkIHRvIGVtaXQgZGlhZ25vc3RpY3MgdG8gZW5zdXJlIHRoYXQgYWxsIGZvcm1hdA0K PiAgICAgICBzdHJpbmdzIGFyZSBjb21wbGV0ZSBzZW50ZW5jZXMsIHZpc2libGUgdG8gZ2V0dGV4 dCBhbmQgY2hlY2tlZCBhdA0KPiAtICAgICBjb21waWxlIHRpbWUuICBJdCBpcyB0aGUgc2FtZSBh cyBQRURXQVJOX0ZPUl9BU1NJR05NRU5UIGJ1dCB3aXRoIGFuDQo+IC0gICAgIGV4dHJhIHBhcmFt ZXRlciB0byBlbnVtZXJhdGUgcXVhbGlmaWVycy4gICovDQo+IC0jZGVmaW5lIFBFRFdBUk5fRk9S X1FVQUxJRklFUlMoTE9DQVRJT04sIFBMT0MsIE9QVCwgQVIsIEFTLCBJTiwgUkUsIFFVQUxTKSBc DQo+ICsgICAgIGNvbXBpbGUgdGltZS4gIEl0IGNhbiBiZSBjYWxsZWQgd2l0aCAncGVkd2Fybicg b3IgJ3dhcm5pbmdfYXQnLiAgKi8NCj4gKyNkZWZpbmUgV0FSTklOR19GT1JfUVVBTElGSUVSUyhQ RURXQVJOLCBMT0NBVElPTiwgUExPQywgT1BULCBBUiwgQVMsIElOLCBSRSwgUVVBTFMpIFwNCj4g ICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICAgICAgc3dpdGNoIChlcnJ0eXBlKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gICAgICAgIGNhc2UgaWNfYXJncGFzczogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+IC0JewkJCQkJCQkJXA0KPiAtCWF1dG9fZGlh Z25vc3RpY19ncm91cCBkOwkJCQkJCVwNCj4gLQlpZiAocGVkd2FybiAoUExPQywgT1BULCBBUiwg cGFybW51bSwgcm5hbWUsIFFVQUxTKSkJCVwNCj4gLQkgIGluZm9ybV9mb3JfYXJnIChmdW5kZWNs LCAoUExPQyksIHBhcm1udW0sIHR5cGUsIHJoc3R5cGUpOwlcDQo+IC0JfQkJCQkJCQkJXA0KPiAr CXsJCQkJCQkJCSBcDQo+ICsJICBhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsJCQkJCSBcDQo+ICsJ ICBpZiAoUEVEV0FSTikgewkJCQkJCSBcDQo+ICsJICAgIGlmIChwZWR3YXJuIChQTE9DLCBPUFQs IEFSLCBwYXJtbnVtLCBybmFtZSwgUVVBTFMpKSAgICAgICAgICBcDQo+ICsJICAgICAgaW5mb3Jt X2Zvcl9hcmcgKGZ1bmRlY2wsIChQTE9DKSwgcGFybW51bSwgdHlwZSwgcmhzdHlwZSk7ICBcDQo+ ICsJICB9IGVsc2UgewkJCQkJCQkgXA0KPiArCSAgICBpZiAod2FybmluZ19hdCAoUExPQywgT1BU LCBBUiwgcGFybW51bSwgcm5hbWUsIFFVQUxTKSkJIFwNCj4gKwkgICAgICBpbmZvcm1fZm9yX2Fy ZyAoZnVuZGVjbCwgKFBMT0MpLCBwYXJtbnVtLCB0eXBlLCByaHN0eXBlKTsgIFwNCj4gKwkgIH0J CQkJCQkJCSBcDQo+ICsJfQkJCQkJCQkJIFwNCj4gICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAg ICBjYXNlIGljX2Fzc2lnbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiAtICAgICAgICBwZWR3YXJuIChMT0NBVElPTiwgT1BULCBBUywgUVVB TFMpOwkJCQkgXA0KPiArCWlmIChQRURXQVJOKQkJCQkJCQkgXA0KPiArCSAgcGVkd2FybiAoTE9D QVRJT04sIE9QVCwgQVMsIFFVQUxTKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr CWVsc2UJCQkJCQkJCSBcDQo+ICsJICB3YXJuaW5nX2F0IChMT0NBVElPTiwgT1BULCBBUywgUVVB TFMpOyAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgICAgIGJyZWFrOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAg ICAgICAgY2FzZSBpY19pbml0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gLSAgICAgICAgcGVkd2FybiAoTE9DQVRJT04sIE9QVCwgSU4s IFFVQUxTKTsJCQkJIFwNCj4gKwlpZiAoUEVEV0FSTikJCQkJCQkJIFwNCj4gKwkgIHBlZHdhcm4g KExPQ0FUSU9OLCBPUFQsIElOLCBRVUFMUyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKwllbHNlCQkJCQkJCQkgXA0KPiArCSAgd2FybmluZ19hdCAoTE9DQVRJT04sIE9QVCwgSU4s IFFVQUxTKTsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgICBicmVhazsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gICAgICAgIGNhc2UgaWNfcmV0dXJuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+IC0gICAgICAgIHBlZHdhcm4gKExPQ0FUSU9OLCBPUFQs IFJFLCBRVUFMUyk7CQkJCSBcDQo+ICsJaWYgKFBFRFdBUk4pCQkJCQkJCSBcDQo+ICsJICBwZWR3 YXJuIChMT0NBVElPTiwgT1BULCBSRSwgUVVBTFMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsJZWxzZQkJCQkJCQkJIFwNCj4gKwkgIHdhcm5pbmdfYXQgKExPQ0FUSU9OLCBPUFQs IFJFLCBRVUFMUyk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgYnJlYWs7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gQEAgLTY4 MTUsMzIgKzY4MjksMTEgQEAgY29udmVydF9mb3JfYXNzaWdubWVudCAobG9jYXRpb25fdCBsb2Nh dGlvbiwgbG9jYXRpb25fdCBleHByX2xvYywgdHJlZQ0KPiB0eXBlLA0KPiAgDQo+ICAgIC8qIFRo aXMgbWFjcm8gaXMgdXNlZCB0byBlbWl0IGRpYWdub3N0aWNzIHRvIGVuc3VyZSB0aGF0IGFsbCBm b3JtYXQNCj4gICAgICAgc3RyaW5ncyBhcmUgY29tcGxldGUgc2VudGVuY2VzLCB2aXNpYmxlIHRv IGdldHRleHQgYW5kIGNoZWNrZWQgYXQNCj4gLSAgICAgY29tcGlsZSB0aW1lLiAgSXQgaXMgdGhl IHNhbWUgYXMgUEVEV0FSTl9GT1JfUVVBTElGSUVSUyBidXQgdXNlcw0KPiAtICAgICB3YXJuaW5n X2F0IGluc3RlYWQgb2YgcGVkd2Fybi4gICovDQo+IC0jZGVmaW5lIFdBUk5JTkdfRk9SX1FVQUxJ RklFUlMoTE9DQVRJT04sIFBMT0MsIE9QVCwgQVIsIEFTLCBJTiwgUkUsIFFVQUxTKSBcDQo+IC0g IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiAtICAgIHN3aXRjaCAoZXJydHlwZSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gLSAgICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+IC0gICAgICBjYXNlIGljX2FyZ3Bhc3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAtCXsJCQkJCQkJCVwNCj4gLQkgIGF1dG9fZGlh Z25vc3RpY19ncm91cCBkOwkJCQkJCVwNCj4gLQkgIGlmICh3YXJuaW5nX2F0IChQTE9DLCBPUFQs IEFSLCBwYXJtbnVtLCBybmFtZSwgUVVBTFMpKQlcDQo+IC0JICAgIGluZm9ybV9mb3JfYXJnIChm dW5kZWNsLCAoUExPQyksIHBhcm1udW0sIHR5cGUsIHJoc3R5cGUpOyBcDQo+IC0JfQkJCQkJCQkJ XA0KPiAtICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gLSAgICAgIGNhc2UgaWNfYXNzaWduOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+IC0gICAgICAg IHdhcm5pbmdfYXQgKExPQ0FUSU9OLCBPUFQsIEFTLCBRVUFMUyk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiAtICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gLSAgICAgIGNhc2UgaWNfaW5pdDog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ IC0gICAgICAgIHdhcm5pbmdfYXQgKExPQ0FUSU9OLCBPUFQsIElOLCBRVUFMUyk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiAtICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gLSAgICAgIGNhc2Ug aWNfcmV0dXJuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+IC0gICAgICAgIHdhcm5pbmdfYXQgKExPQ0FUSU9OLCBPUFQsIFJFLCBRVUFMUyk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAtICAgICAgICBicmVhazsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gLSAg ICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+IC0gICAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAtICAgICAgfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gLSAgfSB3aGlsZSAoMCkNCj4gKyAgICAgY29tcGlsZSB0aW1lLiAgSXQgaXMgdGhlIHNh bWUgYXMgUEVEV0FSTl9GT1JfQVNTSUdOTUVOVCBidXQgd2l0aCBhbg0KPiArICAgICBleHRyYSBw YXJhbWV0ZXIgdG8gZW51bWVyYXRlIHF1YWxpZmllcnMuICAqLw0KPiArI2RlZmluZSBQRURXQVJO X0ZPUl9RVUFMSUZJRVJTKExPQ0FUSU9OLCBQTE9DLCBPUFQsIEFSLCBBUywgSU4sIFJFLCBRVUFM UykgXA0KPiArICAgV0FSTklOR19GT1JfUVVBTElGSUVSUyAodHJ1ZSwgTE9DQVRJT04sIFBMT0Ms IE9QVCwgQVIsIEFTLCBJTiwgUkUsIFFVQUxTKQ0KPiArDQo+ICANCj4gICAgaWYgKFRSRUVfQ09E RSAocmhzKSA9PSBFWENFU1NfUFJFQ0lTSU9OX0VYUFIpDQo+ICAgICAgcmhzID0gVFJFRV9PUEVS QU5EIChyaHMsIDApOw0KPiBAQCAtNzM0OCwxNyArNzM0MSwxOCBAQCBjb252ZXJ0X2Zvcl9hc3Np Z25tZW50IChsb2NhdGlvbl90IGxvY2F0aW9uLCBsb2NhdGlvbl90IGV4cHJfbG9jLCB0cmVlDQo+ IHR5cGUsDQo+ICANCj4gIAkgICAgICBpZiAoVFlQRV9RVUFMU19OT19BRERSX1NQQUNFX05PX0FU T01JQyAodHRyKQ0KPiAgCQkgICYgflRZUEVfUVVBTFNfTk9fQUREUl9TUEFDRV9OT19BVE9NSUMg KHR0bCkpDQo+IC0JCVdBUk5JTkdfRk9SX1FVQUxJRklFUlMgKGxvY2F0aW9uLCBleHByX2xvYywN Cj4gLQkJCQkgICAgICAgIE9QVF9XZGlzY2FyZGVkX2FycmF5X3F1YWxpZmllcnMsDQo+IC0JCQkJ ICAgICAgICBHXygicGFzc2luZyBhcmd1bWVudCAlZCBvZiAlcUUgZGlzY2FyZHMgIg0KPiArCQlX QVJOSU5HX0ZPUl9RVUFMSUZJRVJTIChmbGFnX2lzb2MyeCwNCj4gKwkJCQkJbG9jYXRpb24sIGV4 cHJfbG9jLA0KPiArCQkJCQlPUFRfV2Rpc2NhcmRlZF9hcnJheV9xdWFsaWZpZXJzLA0KPiArCQkJ CQlHXygicGFzc2luZyBhcmd1bWVudCAlZCBvZiAlcUUgZGlzY2FyZHMgIg0KPiAgCQkJCQkgICAi JXF2IHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiKSwNCj4gLQkJCQkgICAgICAg IEdfKCJhc3NpZ25tZW50IGRpc2NhcmRzICVxdiBxdWFsaWZpZXIgIg0KPiArCQkJCQlHXygiYXNz aWdubWVudCBkaXNjYXJkcyAlcXYgcXVhbGlmaWVyICINCj4gIAkJCQkJICAgImZyb20gcG9pbnRl ciB0YXJnZXQgdHlwZSIpLA0KPiAtCQkJCSAgICAgICAgR18oImluaXRpYWxpemF0aW9uIGRpc2Nh cmRzICVxdiBxdWFsaWZpZXIgIg0KPiArCQkJCQlHXygiaW5pdGlhbGl6YXRpb24gZGlzY2FyZHMg JXF2IHF1YWxpZmllciAiDQo+ICAJCQkJCSAgICJmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiKSwN Cj4gLQkJCQkgICAgICAgIEdfKCJyZXR1cm4gZGlzY2FyZHMgJXF2IHF1YWxpZmllciBmcm9tICIN Cj4gKwkJCQkJR18oInJldHVybiBkaXNjYXJkcyAlcXYgcXVhbGlmaWVyIGZyb20gIg0KPiAgCQkJ CQkgICAicG9pbnRlciB0YXJnZXQgdHlwZSIpLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRZUEVfUVVBTFMgKHR0cikgJiB+VFlQRV9RVUFMUyAodHRsKSk7DQo+ ICsJCQkJCVRZUEVfUVVBTFMgKHR0cikgJiB+VFlQRV9RVUFMUyAodHRsKSk7DQo+ICAgICAgICAg ICAgICB9DQo+ICAgICAgICAgICAgZWxzZSBpZiAocGVkYW50aWMNCj4gIAkgICAgICAmJiAoKFZP SURfVFlQRV9QICh0dGwpICYmIFRSRUVfQ09ERSAodHRyKSA9PSBGVU5DVElPTl9UWVBFKQ0KPiBA QCAtNzM4MSwyOCArNzM3NSwzMSBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50IChsb2NhdGlvbl90 IGxvY2F0aW9uLCBsb2NhdGlvbl90IGV4cHJfbG9jLCB0cmVlDQo+IHR5cGUsDQo+ICAJICBlbHNl IGlmIChUUkVFX0NPREUgKHR0cikgIT0gRlVOQ1RJT05fVFlQRQ0KPiAgCQkgICAmJiBUUkVFX0NP REUgKHR0bCkgIT0gRlVOQ1RJT05fVFlQRSkNCj4gIAkgICAgew0KPiArCSAgICAgICAvKiBBc3Np Z25tZW50cyBiZXR3ZWVuIGF0b21pYyBhbmQgbm9uLWF0b21pYyBvYmplY3RzIGFyZSBPSy4gICov DQo+ICsJICAgICAgIGJvb2wgd2Fybl9xdWFsc19wZWQgPSBUWVBFX1FVQUxTX05PX0FERFJfU1BB Q0VfTk9fQVRPTUlDICh0dHIpDQo+ICsJCQkJICAgICAmIH5UWVBFX1FVQUxTX05PX0FERFJfU1BB Q0VfTk9fQVRPTUlDICh0dGwpOw0KPiArCSAgICAgICBib29sIHdhcm5fcXVhbHMgPSBUWVBFX1FV QUxTX05PX0FERFJfU1BBQ0VfTk9fQVRPTUlDICh0dHIpDQo+ICsJCQkJICYgflRZUEVfUVVBTFNf Tk9fQUREUl9TUEFDRV9OT19BVE9NSUMgKHN0cmlwX2FycmF5X3R5cGVzICh0dGwpKTsNCj4gKw0K PiAgCSAgICAgIC8qIERvbid0IHdhcm4gYWJvdXQgbG9zcyBvZiBxdWFsaWZpZXIgZm9yIGNvbnZl cnNpb25zIGZyb20NCj4gIAkJIHF1YWxpZmllZCB2b2lkKiB0byBwb2ludGVycyB0byBhcnJheXMg d2l0aCBjb3JyZXNwb25kaW5nDQo+IC0JCSBxdWFsaWZpZXIgb24gdGhlIGVsZW1lbnQgdHlwZS4g Ki8NCj4gLQkgICAgICBpZiAoIXBlZGFudGljKQ0KPiAtCSAgICAgICAgdHRsID0gc3RyaXBfYXJy YXlfdHlwZXMgKHR0bCk7DQo+ICsJCSBxdWFsaWZpZXIgb24gdGhlIGVsZW1lbnQgdHlwZSAoZXhj ZXB0IGZvciBwZWRhbnRpYyBiZWZvcmUgQzIzKS4gKi8NCj4gKwkgICAgICBpZiAod2Fybl9xdWFs cyB8fCAod2Fybl9xdWFsc19wZWQgJiYgcGVkYW50aWMgJiYgIWZsYWdfaXNvYzJ4KSkNCj4gKwkJ UEVEV0FSTl9GT1JfUVVBTElGSUVSUyAobG9jYXRpb24sIGV4cHJfbG9jLA0KPiArCQkJCQlPUFRf V2Rpc2NhcmRlZF9xdWFsaWZpZXJzLA0KPiArCQkJCQlHXygicGFzc2luZyBhcmd1bWVudCAlZCBv ZiAlcUUgZGlzY2FyZHMgIg0KPiArCQkJCQkgICAiJXF2IHF1YWxpZmllciBmcm9tIHBvaW50ZXIg dGFyZ2V0IHR5cGUiKSwNCj4gKwkJCQkJR18oImFzc2lnbm1lbnQgZGlzY2FyZHMgJXF2IHF1YWxp ZmllciAiDQo+ICsJCQkJCSAgICJmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiKSwNCj4gKwkJCQkJ R18oImluaXRpYWxpemF0aW9uIGRpc2NhcmRzICVxdiBxdWFsaWZpZXIgIg0KPiArCQkJCQkgICAi ZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiksDQo+ICsJCQkJCUdfKCJyZXR1cm4gZGlzY2FyZHMg JXF2IHF1YWxpZmllciBmcm9tICINCj4gKwkJCQkJICAgInBvaW50ZXIgdGFyZ2V0IHR5cGUiKSwN Cj4gKwkJCQkJVFlQRV9RVUFMUyAodHRyKSAmIH5UWVBFX1FVQUxTICh0dGwpKTsNCj4gKwkgICAg ICBlbHNlIGlmICh3YXJuX3F1YWxzX3BlZCkNCj4gKwkJcGVkd2Fybl9jMTEgKGxvY2F0aW9uLCBP UFRfV2MxMV9jMnhfY29tcGF0LA0KPiArCQkJICAgICAiYXJyYXkgd2l0aCBxdWFsaWZpZXIgb24g dGhlIGVsZW1lbnQgaXMgbm90IHF1YWxpZmllZCBiZWZvcmUgQzJYIik7DQo+ICANCj4gLQkgICAg ICAvKiBBc3NpZ25tZW50cyBiZXR3ZWVuIGF0b21pYyBhbmQgbm9uLWF0b21pYyBvYmplY3RzIGFy ZSBPSy4gICovDQo+IC0JICAgICAgaWYgKFRZUEVfUVVBTFNfTk9fQUREUl9TUEFDRV9OT19BVE9N SUMgKHR0cikNCj4gLQkJICAmIH5UWVBFX1FVQUxTX05PX0FERFJfU1BBQ0VfTk9fQVRPTUlDICh0 dGwpKQ0KPiAtCQl7DQo+IC0JCSAgUEVEV0FSTl9GT1JfUVVBTElGSUVSUyAobG9jYXRpb24sIGV4 cHJfbG9jLA0KPiAtCQkJCSAgICAgICAgICBPUFRfV2Rpc2NhcmRlZF9xdWFsaWZpZXJzLA0KPiAt CQkJCSAgICAgICAgICBHXygicGFzc2luZyBhcmd1bWVudCAlZCBvZiAlcUUgZGlzY2FyZHMgIg0K PiAtCQkJCQkgICAgICIlcXYgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIpLA0K PiAtCQkJCSAgICAgICAgICBHXygiYXNzaWdubWVudCBkaXNjYXJkcyAlcXYgcXVhbGlmaWVyICIN Cj4gLQkJCQkJICAgICAiZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiksDQo+IC0JCQkJICAgICAg ICAgIEdfKCJpbml0aWFsaXphdGlvbiBkaXNjYXJkcyAlcXYgcXVhbGlmaWVyICINCj4gLQkJCQkJ ICAgICAiZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiksDQo+IC0JCQkJICAgICAgICAgIEdfKCJy ZXR1cm4gZGlzY2FyZHMgJXF2IHF1YWxpZmllciBmcm9tICINCj4gLQkJCQkJICAgICAicG9pbnRl ciB0YXJnZXQgdHlwZSIpLA0KPiAtCQkJCSAgICAgICAgICBUWVBFX1FVQUxTICh0dHIpICYgflRZ UEVfUVVBTFMgKHR0bCkpOw0KPiAtCQl9DQo+ICAJICAgICAgLyogSWYgdGhpcyBpcyBub3QgYSBj YXNlIG9mIGlnbm9yaW5nIGEgbWlzbWF0Y2ggaW4gc2lnbmVkbmVzcywNCj4gIAkJIG5vIHdhcm5p bmcuICAqLw0KPiAgCSAgICAgIGVsc2UgaWYgKFZPSURfVFlQRV9QICh0dGwpIHx8IFZPSURfVFlQ RV9QICh0dHIpDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMTEtcXVhbC0x LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMTEtcXVhbC0xLmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmY3MzFlMDY4ODMwDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzExLXF1YWwtMS5jDQo+IEBAIC0wLDAgKzEs MTEgQEANCj4gKy8qIFRlc3QgdGhhdCBxdWFsaWZpZXJzIGFyZSBsb3N0IGluIHRlcnRpYXJ5IG9w ZXJhdG9yIGZvciBwb2ludGVycyB0byBhcnJheXMgYmVmb3JlIEMyWCwgUFI5ODM5Nw0KPiAqLw0K PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLXN0ZD1jMTEg LXBlZGFudGljLWVycm9ycyAtV25vLWRpc2NhcmRlZC1hcnJheS1xdWFsaWZpZXJzIiB9ICovDQo+ ICsNCj4gK3ZvaWQgZm9vKHZvaWQpDQo+ICt7DQo+ICsJY29uc3QgaW50ICgqdSlbMV07DQo+ICsJ dm9pZCAqdjsNCj4gKwlfU3RhdGljX2Fzc2VydChfR2VuZXJpYygxID8gdSA6IHYsIGNvbnN0IHZv aWQqOiAwLCB2b2lkKjogMSksICJxdWFsaWZpZXIgbm90IGxvc3QiKTsNCj4gKwlfU3RhdGljX2Fz c2VydChfR2VuZXJpYygxID8gdiA6IHUsIGNvbnN0IHZvaWQqOiAwLCB2b2lkKjogMSksICJxdWFs aWZpZXIgbm90IGxvc3QiKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2MyeC1xdWFsLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTEuYw0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNGQzM2RiMTkwN2QNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0xLmMN Cj4gQEAgLTAsMCArMSwzMCBAQA0KPiArLyogVGVzdHMgcmVsYXRlZCB0byBxdWFsaWZpZXJzIGFu ZCBwb2ludGVycyB0byBhcnJheXMgaW4gQzJYLCBQUjk4Mzk3ICovDQo+ICsvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLw0KPiArLyogeyBkZy1vcHRpb25zICItc3RkPWMyeCAtcGVkYW50aWMtZXJyb3Jz IiB9ICovDQo+ICsNCj4gKy8qIHRlc3QgdGhhdCBxdWFsaWZpZXJzIGFyZSBwcmVzZXJ2ZWQgaW4g dGVydGlhcnkgb3BlcmF0b3IgZm9yIHBvaW50ZXJzIHRvIGFycmF5cyBpbiBDMlggKi8NCj4gKw0K PiArdm9pZCBmKHZvaWQpDQo+ICt7DQo+ICsJY29uc3QgaW50ICgqdSlbMV07DQo+ICsJdm9pZCAq djsNCj4gKwlfU3RhdGljX2Fzc2VydChfR2VuZXJpYygxID8gdSA6IHYsIGNvbnN0IHZvaWQqOiAx LCB2b2lkKjogMCksICJsb3N0IHF1YWxpZmllciIpOw0KPiArCV9TdGF0aWNfYXNzZXJ0KF9HZW5l cmljKDEgPyB2IDogdSwgY29uc3Qgdm9pZCo6IDEsIHZvaWQqOiAwKSwgImxvc3QgcXVhbGlmaWVy Iik7DQo+ICt9DQo+ICsNCj4gKy8qIHRlc3QgdGhhdCBhc3NpZ25tZW50IG9mIHVucXVhbGlmaWVk IHRvIHF1YWxpZmllZCBwb2ludGVycyB3b3JrcyBhcyBleHBlY3RlZCAqLw0KPiArDQo+ICt2b2lk IGcodm9pZCkNCj4gK3sNCj4gKwlpbnQgKCp4KVszXTsNCj4gKwljb25zdCBpbnQgKCpwKVszXSA9 IHg7DQo+ICt9DQo+ICsNCj4gKy8qIHRlc3QgdGhhdCBhc3NpZ25tZW50IG9mIHF1YWxpZmllZCB2 b2lkIHBvaW50ZXJzIHdvcmtzIGFzIGV4cGVjdGVkICovDQo+ICsNCj4gK3ZvaWQgaCh2b2lkKQ0K PiArew0KPiArCWNvbnN0IHZvaWQqIHg7DQo+ICsJY29uc3QgaW50ICgqcClbM10gPSB4Ow0KPiAr fQ0KPiArDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0yLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVhbC0yLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmY2MGE1YjE4ZmFhDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtMi5jDQo+IEBAIC0wLDAgKzEsMzAg QEANCj4gKy8qIFRlc3RzIHJlbGF0ZWQgdG8gcXVhbGlmaWVycyBhbmQgcG9pbnRlcnMgdG8gYXJy YXlzIGluIEMyWCwgUFI5ODM5NyAqLw0KPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8q IHsgZGctb3B0aW9ucyAiLXN0ZD1jMnggLVdjMTEtYzJ4LWNvbXBhdCIgfSAqLw0KPiArDQo+ICsv KiB0ZXN0IHRoYXQgcXVhbGlmaWVycyBhcmUgcHJlc2VydmVkIGluIHRlcnRpYXJ5IG9wZXJhdG9y IGZvciBwb2ludGVycyB0byBhcnJheXMgaW4gQzJYICovDQo+ICsNCj4gK3ZvaWQgZih2b2lkKQ0K PiArew0KPiArCWNvbnN0IGludCAoKnUpWzFdOw0KPiArCXZvaWQgKnY7DQo+ICsJX1N0YXRpY19h c3NlcnQoX0dlbmVyaWMoMSA/IHUgOiB2LCBjb25zdCB2b2lkKjogMSwgdm9pZCo6IDApLCAibG9z dCBxdWFsaWZpZXIiKTsJLyogeyBkZy0NCj4gd2FybmluZyAicG9pbnRlciB0byBhcnJheSBsb3Nl cyBxdWFsaWZpZXIgaW4gY29uZGl0aW9uYWwiIH0gKi8NCj4gKwlfU3RhdGljX2Fzc2VydChfR2Vu ZXJpYygxID8gdiA6IHUsIGNvbnN0IHZvaWQqOiAxLCB2b2lkKjogMCksICJsb3N0IHF1YWxpZmll ciIpOwkvKiB7IGRnLQ0KPiB3YXJuaW5nICJwb2ludGVyIHRvIGFycmF5IGxvc2VzIHF1YWxpZmll ciBpbiBjb25kaXRpb25hbCIgfSAqLw0KPiArfQ0KPiArDQo+ICsvKiB0ZXN0IHRoYXQgYXNzaWdu bWVudCBvZiB1bnF1YWxpZmllZCB0byBxdWFsaWZpZWQgcG9pbnRlcnMgd29ya3MgYXMgZXhwZWN0 ZWQgKi8NCj4gKw0KPiArdm9pZCBnKHZvaWQpDQo+ICt7DQo+ICsJaW50ICgqeClbM107DQo+ICsJ Y29uc3QgaW50ICgqcClbM10gPSB4OyAvKiB7IGRnLXdhcm5pbmcgImFycmF5cyB3aXRoIGRpZmZl cmVudCBxdWFsaWZpZXJzIiAgfSAqLw0KPiArfQ0KPiArDQo+ICsvKiB0ZXN0IHRoYXQgYXNzaWdu bWVudCBvZiBxdWFsaWZpZWQgdm9pZCBwb2ludGVycyB3b3JrcyBhcyBleHBlY3RlZCAqLw0KPiAr DQo+ICt2b2lkIGgodm9pZCkNCj4gK3sNCj4gKwljb25zdCB2b2lkKiB4Ow0KPiArCWNvbnN0IGlu dCAoKnApWzNdID0geDsgLyogeyBkZy13YXJuaW5nICJhcnJheSB3aXRoIHF1YWxpZmllciBvbiB0 aGUgZWxlbWVudCBpcyBub3QgcXVhbGlmaWVkDQo+IGJlZm9yZSBDMlgiIH0gKi8NCj4gK30NCj4g Kw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtMy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtMy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwLi4zMTg5NmZjYjFhMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTMuYw0KPiBAQCAtMCwwICsxLDMwIEBADQo+ ICsvKiBUZXN0cyByZWxhdGVkIHRvIHF1YWxpZmllcnMgYW5kIHBvaW50ZXJzIHRvIGFycmF5cyBp biBDMlgsIFBSOTgzOTcgKi8NCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRn LW9wdGlvbnMgIi1zdGQ9YzJ4IC1XYzExLWMyeC1jb21wYXQgLXBlZGFudGljLWVycm9ycyIgfSAq Lw0KPiArDQo+ICsvKiB0ZXN0IHRoYXQgcXVhbGlmaWVycyBhcmUgcHJlc2VydmVkIGluIHRlcnRp YXJ5IG9wZXJhdG9yIGZvciBwb2ludGVycyB0byBhcnJheXMgaW4gQzJYICovDQo+ICsNCj4gK3Zv aWQgZih2b2lkKQ0KPiArew0KPiArCWNvbnN0IGludCAoKnUpWzFdOw0KPiArCXZvaWQgKnY7DQo+ ICsJX1N0YXRpY19hc3NlcnQoX0dlbmVyaWMoMSA/IHUgOiB2LCBjb25zdCB2b2lkKjogMSwgdm9p ZCo6IDApLCAibG9zdCBxdWFsaWZpZXIiKTsJLyogeyBkZy0NCj4gd2FybmluZyAicG9pbnRlciB0 byBhcnJheSBsb3NlcyBxdWFsaWZpZXIgaW4gY29uZGl0aW9uYWwiIH0gKi8NCj4gKwlfU3RhdGlj X2Fzc2VydChfR2VuZXJpYygxID8gdiA6IHUsIGNvbnN0IHZvaWQqOiAxLCB2b2lkKjogMCksICJs b3N0IHF1YWxpZmllciIpOwkvKiB7IGRnLQ0KPiB3YXJuaW5nICJwb2ludGVyIHRvIGFycmF5IGxv c2VzIHF1YWxpZmllciBpbiBjb25kaXRpb25hbCIgfSAqLw0KPiArfQ0KPiArDQo+ICsvKiB0ZXN0 IHRoYXQgYXNzaWdubWVudCBvZiB1bnF1YWxpZmllZCB0byBxdWFsaWZpZWQgcG9pbnRlcnMgd29y a3MgYXMgZXhwZWN0ZWQgKi8NCj4gKw0KPiArdm9pZCBnKHZvaWQpDQo+ICt7DQo+ICsJaW50ICgq eClbM107DQo+ICsJY29uc3QgaW50ICgqcClbM10gPSB4OyAvKiB7IGRnLXdhcm5pbmcgImFycmF5 cyB3aXRoIGRpZmZlcmVudCBxdWFsaWZpZXJzIiAgfSAqLw0KPiArfQ0KPiArDQo+ICsvKiB0ZXN0 IHRoYXQgYXNzaWdubWVudCBvZiBxdWFsaWZpZWQgdm9pZCBwb2ludGVycyB3b3JrcyBhcyBleHBl Y3RlZCAqLw0KPiArDQo+ICt2b2lkIGgodm9pZCkNCj4gK3sNCj4gKwljb25zdCB2b2lkKiB4Ow0K PiArCWNvbnN0IGludCAoKnApWzNdID0geDsgLyogeyBkZy13YXJuaW5nICJhcnJheSB3aXRoIHF1 YWxpZmllciBvbiB0aGUgZWxlbWVudCBpcyBub3QgcXVhbGlmaWVkDQo+IGJlZm9yZSBDMlgiIH0g Ki8NCj4gK30NCj4gKw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1 YWwtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtNC5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi45M2I0NzIzZGNkNg0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTQuYw0KPiBAQCAtMCww ICsxLDEwNSBAQA0KPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9u cyAiLXN0ZD1jMngiIH0gKi8NCj4gK3ZvaWQgdHZvaWQodm9pZCogeCk7DQo+ICt2b2lkIHRyYW5z cG9zZTAoZG91YmxlKiBvdXQsIGNvbnN0IGRvdWJsZSogaW4pIHsgfQ0KPiArdm9pZCB0cmFuc3Bv c2UxKGRvdWJsZSBvdXRbMl1bMl0sIGNvbnN0IGRvdWJsZSBpblsyXVsyXSkgeyB9DQo+ICt2b2lk IHRyYW5zcG9zZTIoZG91YmxlIG91dFsyXVsyXVsyXSwgY29uc3QgZG91YmxlIGluWzJdWzJdWzJd KSB7IH0NCj4gKy8vIHJldHVybg0KPiAraW50ICgqeTIoY29uc3QgaW50IHhbM11bM10pKVszXSB7 IHJldHVybiB4OyB9IC8qIHsgZGctd2FybmluZyAicmV0dXJuIGRpc2NhcmRzICdjb25zdCcgcXVh bGlmaWVyDQo+IGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KPiArY29uc3QgaW50ICgq eTMoaW50IHhbM11bM10pKVszXSB7IHJldHVybiB4OyB9DQo+ICt2b2lkIHRlc3Qodm9pZCkNCj4g K3sNCj4gKwlkb3VibGUgeDBbMl07DQo+ICsJZG91YmxlIHkwWzJdOw0KPiArCWNvbnN0IGRvdWJs ZSB6MFs0XTsNCj4gKwlkb3VibGUgeDFbMl1bMl07DQo+ICsJZG91YmxlIHkxWzJdWzJdOw0KPiAr CWRvdWJsZSBvMVsyXVszXTsNCj4gKwljb25zdCBkb3VibGUgejFbMl1bMl07DQo+ICsJZG91Ymxl IHgyWzJdWzJdWzJdOw0KPiArCWRvdWJsZSB5MlsyXVsyXVsyXTsNCj4gKwlkb3VibGUgbzJbMl1b Ml1bM107DQo+ICsJY29uc3QgZG91YmxlIHoyWzJdWzJdWzJdOw0KPiArCS8vIHZvaWQgcG9pbnRl cnMNCj4gKwl0dm9pZCh4MCk7DQo+ICsJdHZvaWQoeDEpOw0KPiArCXR2b2lkKHgyKTsNCj4gKwl0 dm9pZCh6MCk7IC8qIHsgZGctd2FybmluZyAicGFzc2luZyBhcmd1bWVudCAxIG9mICd0dm9pZCcg ZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbQ0KPiBwb2ludGVyIHRhcmdldCB0eXBlIiB9 ICovDQo+ICsJdHZvaWQoejEpOyAvKiB7IGRnLXdhcm5pbmcgInBhc3NpbmcgYXJndW1lbnQgMSBv ZiAndHZvaWQnIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20NCj4gcG9pbnRlciB0YXJn ZXQgdHlwZSIgfSAqLw0KPiArCXR2b2lkKHoyKTsgLyogeyBkZy13YXJuaW5nICJwYXNzaW5nIGFy Z3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tDQo+IHBv aW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl2b2lkKiBwOw0KPiArCWNvbnN0IHZvaWQqIHBj Ow0KPiArCXAgPSB4MDsNCj4gKwlwID0geDE7DQo+ICsJcCA9IHgyOw0KPiArCXAgPSB6MDsgLyog eyBkZy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20g cG9pbnRlciB0YXJnZXQgdHlwZSIgfQ0KPiAqLw0KPiArCXAgPSB6MTsgLyogeyBkZy13YXJuaW5n ICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJn ZXQgdHlwZSIgfQ0KPiAqLw0KPiArCXAgPSB6MjsgLyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50 IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfQ0K PiAqLw0KPiArCXBjID0geDA7DQo+ICsJcGMgPSB4MTsNCj4gKwlwYyA9IHgyOw0KPiArCXBjID0g ejA7DQo+ICsJcGMgPSB6MTsNCj4gKwlwYyA9IHoyOw0KPiArCXRyYW5zcG9zZTAocGMsIHApOyAv KiB7IGRnLXdhcm5pbmcgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHJhbnNwb3NlMCcgZGlzY2Fy ZHMgJ2NvbnN0Jw0KPiBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ ICsJdHJhbnNwb3NlMShwYywgcCk7IC8qIHsgZGctd2FybmluZyAicGFzc2luZyBhcmd1bWVudCAx IG9mICd0cmFuc3Bvc2UxJyBkaXNjYXJkcyAnY29uc3QnDQo+IHF1YWxpZmllciBmcm9tIHBvaW50 ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl0cmFuc3Bvc2UyKHBjLCBwKTsgLyogeyBkZy13YXJu aW5nICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3RyYW5zcG9zZTInIGRpc2NhcmRzICdjb25zdCcN Cj4gcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0KPiArCXRyYW5zcG9z ZTAocCwgcGMpOw0KPiArCXRyYW5zcG9zZTEocCwgcGMpOw0KPiArCXRyYW5zcG9zZTIocCwgcGMp Ow0KPiArCS8vIHBhc3NpbmcgYXMgYXJndW1lbnRzDQo+ICsJdHJhbnNwb3NlMCh5MCwgeDApOw0K PiArCXRyYW5zcG9zZTEoeTEsIHgxKTsNCj4gKwl0cmFuc3Bvc2UyKHkyLCB4Mik7DQo+ICsJLy8g aW5pdGlhbGl6YXRpb24NCj4gKwljb25zdCBkb3VibGUgKCp1MHApID0geDA7DQo+ICsJY29uc3Qg ZG91YmxlICgqdTFwKVsyXSA9IHgxOw0KPiArCWNvbnN0IGRvdWJsZSAoKnUycClbMl1bMl0gPSB4 MjsNCj4gKwlkb3VibGUgKCp2MHApID0gejA7IC8qIHsgZGctd2FybmluZyAiaW5pdGlhbGl6YXRp b24gZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyDQo+IHRhcmdldCB0eXBl IiB9ICovDQo+ICsJZG91YmxlICgqdjFwKVsyXSA9IHoxOyAvKiB7IGRnLXdhcm5pbmcgImluaXRp YWxpemF0aW9uIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20NCj4gcG9pbnRlciB0YXJn ZXQgdHlwZSIgfSAqLw0KPiArCWRvdWJsZSAoKnYycClbMl1bMl0gPSB6MjsgLyogeyBkZy13YXJu aW5nICJpbml0aWFsaXphdGlvbiBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tDQo+IHBv aW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwkvLyBzdWJ0cmFjdGlvbg0KPiArCSYoeDBbMV0p IC0gJih6MFswXSk7DQo+ICsJJih4MVsxXSkgLSAmKHoxWzBdKTsNCj4gKwkmKHgyWzFdKSAtICYo ejJbMF0pOw0KPiArCS8vIGNvbXBhcmlzb24NCj4gKwl4MCA9PSB6MDsNCj4gKwl4MSA9PSB6MTsN Cj4gKwl4MiA9PSB6MjsNCj4gKwl4MCA8IHowOyANCj4gKwl4MSA8IHoxOyANCj4gKwl4MiA8IHoy OyANCj4gKwl4MCA+IHowOw0KPiArCXgxID4gejE7DQo+ICsJeDIgPiB6MjsNCj4gKwkvLyBhc3Np Z25tZW50DQo+ICsJdTBwID0geDA7DQo+ICsJdTFwID0geDE7DQo+ICsJdTJwID0geDI7DQo+ICsJ djBwID0gejA7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1 YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0NCj4gKi8NCj4gKwl2MXAgPSB6MTsg LyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZy b20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfQ0KPiAqLw0KPiArCXYycCA9IHoyOyAvKiB7IGRnLXdh cm5pbmcgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVy IHRhcmdldCB0eXBlIiB9DQo+ICovDQo+ICsJLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMNCj4g Kwkodm9pZCkoMSA/IHgwIDogejApOw0KPiArCSh2b2lkKSgxID8geDEgOiB6MSk7DQo+ICsJKHZv aWQpKDEgPyB4MiA6IHoyKTsNCj4gKwkodm9pZCkoMSA/IHgwIDogeDEpOyAvKiB7IGRnLXdhcm5p bmcgInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uIiB9ICov DQo+ICsJKHZvaWQpKDEgPyB4MSA6IHgyKTsgLyogeyBkZy13YXJuaW5nICJwb2ludGVyIHR5cGUg bWlzbWF0Y2ggaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIgfSAqLw0KPiArCSh2b2lkKSgxID8g eDIgOiB4MCk7IC8qIHsgZGctd2FybmluZyAicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbmRp dGlvbmFsIGV4cHJlc3Npb24iIH0gKi8NCj4gKwl2MHAgPSAoMSA/IHowIDogdjBwKTsgLyogeyBk Zy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9p bnRlcg0KPiB0YXJnZXQgdHlwZSIgfSAqLw0KPiArCXYxcCA9ICgxID8gejEgOiB2MXApOyAvKiB7 IGRnLXdhcm5pbmcgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBw b2ludGVyDQo+IHRhcmdldCB0eXBlIiB9ICovDQo+ICsJdjJwID0gKDEgPyB6MiA6IHYycCk7IC8q IHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9t IHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl2MHAgPSAoMSA/IHgwIDogdTBwKTsg LyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZy b20gcG9pbnRlcg0KPiB0YXJnZXQgdHlwZSIgfSAqLw0KPiArCXYxcCA9ICgxID8geDEgOiB1MXAp OyAvKiB7IGRnLXdhcm5pbmcgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIg ZnJvbSBwb2ludGVyDQo+IHRhcmdldCB0eXBlIiB9ICovDQo+ICsJdjJwID0gKDEgPyB4MiA6IHUy cCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmll ciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwkoMSA/IHgwIDogejApWzBd ID0gMTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0g Ki8NCj4gKwkoMSA/IHgxIDogejEpWzBdWzBdID0gMTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVu dCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0gKi8NCj4gKwkoMSA/IHgyIDogejIpWzBdWzBdWzBd ID0gMTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24iIH0g Ki8NCj4gKwl2MHAgPSAoMSA/IHAgOiB6MCk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBk aXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0g Ki8NCj4gKwl2MXAgPSAoMSA/IHAgOiB6MSk7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBk aXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0g Ki8NCj4gKwl2MnAgPSAoMSA/IHAgOiB6Mik7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVudCBk aXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0g Ki8NCj4gKwl2MHAgPSAoMSA/IHBjIDogeDApOyAvKiB7IGRnLXdhcm5pbmcgImFzc2lnbm1lbnQg ZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyDQo+IHRhcmdldCB0eXBlIiB9 ICovDQo+ICsJdjFwID0gKDEgPyBwYyA6IHgxKTsgLyogeyBkZy13YXJuaW5nICJhc3NpZ25tZW50 IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlcg0KPiB0YXJnZXQgdHlwZSIg fSAqLw0KPiArCXYycCA9ICgxID8gcGMgOiB4Mik7IC8qIHsgZGctd2FybmluZyAiYXNzaWdubWVu dCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUi IH0gKi8NCj4gK30NCj4gKw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4 LXF1YWwtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzJ4LXF1YWwtNS5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi4wODAxZmEwZWVkNQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTUuYw0KPiBAQCAt MCwwICsxLDEwMSBAQA0KPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0 aW9ucyAiLXN0ZD1jMnggLXBlZGFudGljLWVycm9ycyIgfSAqLw0KPiArdm9pZCB0dm9pZCh2b2lk KiB4KTsNCj4gK3ZvaWQgdHJhbnNwb3NlMChkb3VibGUqIG91dCwgY29uc3QgZG91YmxlKiBpbikg eyB9DQo+ICt2b2lkIHRyYW5zcG9zZTEoZG91YmxlIG91dFsyXVsyXSwgY29uc3QgZG91YmxlIGlu WzJdWzJdKSB7IH0NCj4gK3ZvaWQgdHJhbnNwb3NlMihkb3VibGUgb3V0WzJdWzJdWzJdLCBjb25z dCBkb3VibGUgaW5bMl1bMl1bMl0pIHsgfQ0KPiArLy8gcmV0dXJuDQo+ICtpbnQgKCp4Mihjb25z dCBpbnQgeFszXVszXSkpWzNdIHsgcmV0dXJuIHg7IH0gLyogeyBkZy1lcnJvciAicmV0dXJuIGRp c2NhcmRzIiB9ICovDQo+ICtjb25zdCBpbnQgKCp4MyhpbnQgeFszXVszXSkpWzNdIHsgcmV0dXJu IHg7IH0NCj4gK3ZvaWQgdGVzdCh2b2lkKQ0KPiArew0KPiArCWRvdWJsZSB4MFsyXTsNCj4gKwlk b3VibGUgeTBbMl07DQo+ICsJY29uc3QgZG91YmxlIHowWzRdOw0KPiArCWRvdWJsZSB4MVsyXVsy XTsNCj4gKwlkb3VibGUgeTFbMl1bMl07DQo+ICsJZG91YmxlIG8xWzJdWzNdOw0KPiArCWNvbnN0 IGRvdWJsZSB6MVsyXVsyXTsNCj4gKwlkb3VibGUgeDJbMl1bMl1bMl07DQo+ICsJZG91YmxlIHky WzJdWzJdWzJdOw0KPiArCWRvdWJsZSBvMlsyXVsyXVszXTsNCj4gKwljb25zdCBkb3VibGUgejJb Ml1bMl1bMl07DQo+ICsJLy8gdm9pZCBwb2ludGVycw0KPiArCXR2b2lkKHowKTsgLyogeyBkZy1l cnJvciAicGFzc2luZyBhcmd1bWVudCAxIG9mICd0dm9pZCcgZGlzY2FyZHMgJ2NvbnN0JyBxdWFs aWZpZXIgZnJvbQ0KPiBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ICsJdHZvaWQoejEpOyAv KiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3R2b2lkJyBkaXNjYXJkcyAnY29u c3QnIHF1YWxpZmllciBmcm9tDQo+IHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl0dm9p ZCh6Mik7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHZvaWQnIGRpc2Nh cmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20NCj4gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0K PiArCXZvaWQqIHA7DQo+ICsJY29uc3Qgdm9pZCogcGM7DQo+ICsJcCA9IHgwOw0KPiArCXAgPSB4 MTsNCj4gKwlwID0geDI7DQo+ICsJcCA9IHowOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRp c2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSIgfSAqLw0K PiArCXAgPSB6MTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1 YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwlwID0gejI7IC8qIHsg ZGctZXJyb3IgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2lu dGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ICsJcGMgPSB4MDsNCj4gKwlwYyA9IHgxOw0KPiArCXBj ID0geDI7DQo+ICsJcGMgPSB6MDsNCj4gKwlwYyA9IHoxOw0KPiArCXBjID0gejI7DQo+ICsJdHJh bnNwb3NlMChwYywgcCk7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHJh bnNwb3NlMCcgZGlzY2FyZHMgJ2NvbnN0Jw0KPiBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdl dCB0eXBlIiB9ICovDQo+ICsJdHJhbnNwb3NlMShwYywgcCk7IC8qIHsgZGctZXJyb3IgInBhc3Np bmcgYXJndW1lbnQgMSBvZiAndHJhbnNwb3NlMScgZGlzY2FyZHMgJ2NvbnN0Jw0KPiBxdWFsaWZp ZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ICsJdHJhbnNwb3NlMihwYywgcCk7 IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHJhbnNwb3NlMicgZGlzY2Fy ZHMgJ2NvbnN0Jw0KPiBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ ICsJdHJhbnNwb3NlMChwLCBwYyk7DQo+ICsJdHJhbnNwb3NlMShwLCBwYyk7DQo+ICsJdHJhbnNw b3NlMihwLCBwYyk7DQo+ICsJLy8gcGFzc2luZyBhcyBhcmd1bWVudHMNCj4gKwl0cmFuc3Bvc2Uw KHkwLCB4MCk7DQo+ICsJdHJhbnNwb3NlMSh5MSwgbzEpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5n IGFyZ3VtZW50IDIgb2YgJ3RyYW5zcG9zZTEnIGZyb20gaW5jb21wYXRpYmxlDQo+IHBvaW50ZXIg dHlwZSIgfSAqLw0KPiArCXRyYW5zcG9zZTEoeTEsIHgxKTsNCj4gKwl0cmFuc3Bvc2UyKHkyLCBv Mik7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMiBvZiAndHJhbnNwb3NlMicgZnJv bSBpbmNvbXBhdGlibGUNCj4gcG9pbnRlciB0eXBlIiB9ICovDQo+ICsJdHJhbnNwb3NlMih5Miwg eDIpOw0KPiArCS8vIGluaXRpYWxpemF0aW9uDQo+ICsJY29uc3QgZG91YmxlICgqeDBwKSA9IHgw Ow0KPiArCWNvbnN0IGRvdWJsZSAoKngxcClbMl0gPSB4MTsNCj4gKwljb25zdCBkb3VibGUgKCp4 MnApWzJdWzJdID0geDI7DQo+ICsJZG91YmxlICgqdjBwKSA9IHowOyAvKiB7IGRnLWVycm9yICJp bml0aWFsaXphdGlvbiBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXINCj4g dGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwlkb3VibGUgKCp2MXApWzJdID0gejE7IC8qIHsgZGctZXJy b3IgImluaXRpYWxpemF0aW9uIGRpc2NhcmRzIiB9ICovDQo+ICsJZG91YmxlICgqdjJwKVsyXVsy XSA9IHoyOyAvKiB7IGRnLWVycm9yICJpbml0aWFsaXphdGlvbiBkaXNjYXJkcyIgfSAqLw0KPiAr CS8vIGFzc2lnbm1lbnQNCj4gKwl4MHAgPSB4MDsNCj4gKwl4MXAgPSB4MTsNCj4gKwl4MnAgPSB4 MjsNCj4gKwkvLyBzdWJ0cmFjdGlvbg0KPiArCSYoeDBbMV0pIC0gJih6MFswXSk7DQo+ICsJJih4 MVsxXSkgLSAmKHoxWzBdKTsNCj4gKwkmKHgyWzFdKSAtICYoejJbMF0pOw0KPiArCS8vIGNvbXBh cmlzb24NCj4gKwl4MCA9PSB6MDsNCj4gKwl4MSA9PSB6MTsNCj4gKwl4MiA9PSB6MjsNCj4gKwl4 MCA8IHowOw0KPiArCXgxIDwgejE7DQo+ICsJeDIgPCB6MjsNCj4gKwl4MCA+IHowOw0KPiArCXgx ID4gejE7DQo+ICsJeDIgPiB6MjsNCj4gKwkvLyBjb25kaXRpb25hbCBleHByZXNzaW9ucw0KPiAr CSh2b2lkKSgxID8geDAgOiB6MCk7DQo+ICsJKHZvaWQpKDEgPyB4MSA6IHoxKTsNCj4gKwkodm9p ZCkoMSA/IHgyIDogejIpOw0KPiArCSh2b2lkKSgxID8geDAgOiB4MSk7IC8qIHsgZGctZXJyb3Ig InBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uIiB9ICovDQo+ ICsJKHZvaWQpKDEgPyB4MSA6IHgyKTsgLyogeyBkZy1lcnJvciAicG9pbnRlciB0eXBlIG1pc21h dGNoIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24iIH0gKi8NCj4gKwkodm9pZCkoMSA/IHgyIDog eDApOyAvKiB7IGRnLWVycm9yICJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29uZGl0aW9uYWwg ZXhwcmVzc2lvbiIgfSAqLw0KPiArCXYwcCA9ICgxID8gejAgOiB2MHApOyAvKiB7IGRnLWVycm9y ICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlcg0KPiB0 YXJnZXQgdHlwZSIgfSAqLw0KPiArCXYxcCA9ICgxID8gejEgOiB2MXApOyAvKiB7IGRnLWVycm9y ICJhc3NpZ25tZW50IGRpc2NhcmRzIiB9ICovDQo+ICsJdjJwID0gKDEgPyB6MiA6IHYycCk7IC8q IHsgZGctZXJyb3IgImFzc2lnbm1lbnQgZGlzY2FyZHMiIH0gKi8NCj4gKwl2MHAgPSAoMSA/IHgw IDogeDBwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxp ZmllciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl2MXAgPSAoMSA/IHgx IDogeDFwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyIgfSAqLw0KPiArCXYy cCA9ICgxID8geDIgOiB4MnApOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzIiB9 ICovDQo+ICsJKDEgPyB4MCA6IHowKVswXSA9IDE7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQg b2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQo+ICsJKDEgPyB4MSA6IHoxKVswXVswXSA9IDE7 IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQo+ ICsJKDEgPyB4MiA6IHoyKVswXVswXVswXSA9IDE7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQg b2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQo+ICsJdjBwID0gKDEgPyBwIDogejApOyAvKiB7 IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9p bnRlciB0YXJnZXQNCj4gdHlwZSIgfSAqLw0KPiArCXYxcCA9ICgxID8gcCA6IHoxKTsgLyogeyBk Zy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50 ZXIgdGFyZ2V0DQo+IHR5cGUiIH0gKi8NCj4gKwl2MnAgPSAoMSA/IHAgOiB6Mik7IC8qIHsgZGct ZXJyb3IgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVy IHRhcmdldA0KPiB0eXBlIiB9ICovDQo+ICsJdjBwID0gKDEgPyBwYyA6IHgwKTsgLyogeyBkZy1l cnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIN Cj4gdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl2MXAgPSAoMSA/IHBjIDogeDEpOyAvKiB7IGRnLWVy cm9yICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlcg0K PiB0YXJnZXQgdHlwZSIgfSAqLw0KPiArCXYycCA9ICgxID8gcGMgOiB4Mik7IC8qIHsgZGctZXJy b3IgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyDQo+ IHRhcmdldCB0eXBlIiB9ICovDQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2MyeC1xdWFsLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2MyeC1xdWFsLTYu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uOWM5MWUyMDZl MzANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9jMngtcXVh bC02LmMNCj4gQEAgLTAsMCArMSwxMTQgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ ICsvKiB7IGRnLW9wdGlvbnMgIi1zdGQ9YzJ4IC1XYzExLWMyeC1jb21wYXQgLXBlZGFudGljLWVy cm9ycyIgfSAqLw0KPiArdm9pZCB0dm9pZCh2b2lkKiB4KTsNCj4gK3ZvaWQgdHJhbnNwb3NlMChk b3VibGUqIG91dCwgY29uc3QgZG91YmxlKiBpbikgeyB9DQo+ICt2b2lkIHRyYW5zcG9zZTEoZG91 YmxlIG91dFsyXVsyXSwgY29uc3QgZG91YmxlIGluWzJdWzJdKSB7IH0NCj4gK3ZvaWQgdHJhbnNw b3NlMihkb3VibGUgb3V0WzJdWzJdWzJdLCBjb25zdCBkb3VibGUgaW5bMl1bMl1bMl0pIHsgfQ0K PiArLy8gcmV0dXJuDQo+ICtpbnQgKCp4Mihjb25zdCBpbnQgeFszXVszXSkpWzNdIHsgcmV0dXJu IHg7IH0gLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQo+ICsJCQkJCQkvKiB7IGRn LWVycm9yICJyZXR1cm4gZGlzY2FyZHMiICIiIHsgdGFyZ2V0ICotKi0qIH0NCj4gLi0xIH0gKi8N Cj4gK2NvbnN0IGludCAoKngzKGludCB4WzNdWzNdKSlbM10geyByZXR1cm4geDsgfQkvKiB7IGRn LXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCj4gK3ZvaWQgdGVzdCh2b2lkKQ0KPiArew0KPiAr CWRvdWJsZSB4MFsyXTsNCj4gKwlkb3VibGUgeTBbMl07DQo+ICsJY29uc3QgZG91YmxlIHowWzRd Ow0KPiArCWRvdWJsZSB4MVsyXVsyXTsNCj4gKwlkb3VibGUgeTFbMl1bMl07DQo+ICsJZG91Ymxl IG8xWzJdWzNdOw0KPiArCWNvbnN0IGRvdWJsZSB6MVsyXVsyXTsNCj4gKwlkb3VibGUgeDJbMl1b Ml1bMl07DQo+ICsJZG91YmxlIHkyWzJdWzJdWzJdOw0KPiArCWRvdWJsZSBvMlsyXVsyXVszXTsN Cj4gKwljb25zdCBkb3VibGUgejJbMl1bMl1bMl07DQo+ICsJLy8gdm9pZCBwb2ludGVycw0KPiAr CXR2b2lkKHowKTsgLyogeyBkZy1lcnJvciAicGFzc2luZyBhcmd1bWVudCAxIG9mICd0dm9pZCcg ZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbQ0KPiBwb2ludGVyIHRhcmdldCB0eXBlIiB9 ICovDQo+ICsJdHZvaWQoejEpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDEgb2Yg J3R2b2lkJyBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tDQo+IHBvaW50ZXIgdGFyZ2V0 IHR5cGUiIH0gKi8NCj4gKwl0dm9pZCh6Mik7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1l bnQgMSBvZiAndHZvaWQnIGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20NCj4gcG9pbnRl ciB0YXJnZXQgdHlwZSIgfSAqLw0KPiArCXZvaWQqIHA7DQo+ICsJY29uc3Qgdm9pZCogcGM7DQo+ ICsJcCA9IHgwOw0KPiArCXAgPSB4MTsNCj4gKwlwID0geDI7DQo+ICsJcCA9IHowOyAvKiB7IGRn LWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRl ciB0YXJnZXQgdHlwZSIgfSAqLw0KPiArCXAgPSB6MTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVu dCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUiIH0g Ki8NCj4gKwlwID0gejI7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0 JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ICsJcGMgPSB4MDsN Cj4gKwlwYyA9IHgxOw0KPiArCXBjID0geDI7DQo+ICsJcGMgPSB6MDsNCj4gKwlwYyA9IHoxOw0K PiArCXBjID0gejI7DQo+ICsJdHJhbnNwb3NlMChwYywgcCk7IC8qIHsgZGctZXJyb3IgInBhc3Np bmcgYXJndW1lbnQgMSBvZiAndHJhbnNwb3NlMCcgZGlzY2FyZHMgJ2NvbnN0Jw0KPiBxdWFsaWZp ZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ICsJdHJhbnNwb3NlMShwYywgcCk7 IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBvZiAndHJhbnNwb3NlMScgZGlzY2Fy ZHMgJ2NvbnN0Jw0KPiBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlIiB9ICovDQo+ ICsJdHJhbnNwb3NlMihwYywgcCk7IC8qIHsgZGctZXJyb3IgInBhc3NpbmcgYXJndW1lbnQgMSBv ZiAndHJhbnNwb3NlMicgZGlzY2FyZHMgJ2NvbnN0Jw0KPiBxdWFsaWZpZXIgZnJvbSBwb2ludGVy IHRhcmdldCB0eXBlIiB9ICovDQo+ICsJdHJhbnNwb3NlMChwLCBwYyk7IA0KPiArCXRyYW5zcG9z ZTEocCwgcGMpOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCj4gKwl0cmFuc3Bv c2UyKHAsIHBjKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQo+ICsJLy8gcGFz c2luZyBhcyBhcmd1bWVudHMNCj4gKwl0cmFuc3Bvc2UwKHkwLCB4MCk7DQo+ICsJdHJhbnNwb3Nl MSh5MSwgbzEpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3RyYW5zcG9z ZTEnIGZyb20gaW5jb21wYXRpYmxlDQo+IHBvaW50ZXIgdHlwZSIgfSAqLw0KPiArCXRyYW5zcG9z ZTEoeTEsIHgxKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQo+ICsJdHJhbnNw b3NlMih5MiwgbzIpOyAvKiB7IGRnLWVycm9yICJwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3RyYW5z cG9zZTInIGZyb20gaW5jb21wYXRpYmxlDQo+IHBvaW50ZXIgdHlwZSIgfSAqLw0KPiArCXRyYW5z cG9zZTIoeTIsIHgyKTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQo+ICsJLy8g aW5pdGlhbGl6YXRpb24NCj4gKwljb25zdCBkb3VibGUgKCp4MHApID0geDA7DQo+ICsJY29uc3Qg ZG91YmxlICgqeDFwKVsyXSA9IHgxOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8N Cj4gKwljb25zdCBkb3VibGUgKCp4MnApWzJdWzJdID0geDI7IC8qIHsgZGctd2FybmluZyAiYmVm b3JlIEMyWCIgfSAqLw0KPiArCWRvdWJsZSAoKnYwcCkgPSB6MDsgLyogeyBkZy1lcnJvciAiaW5p dGlhbGl6YXRpb24gZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyDQo+IHRh cmdldCB0eXBlIiB9ICovDQo+ICsJZG91YmxlICgqdjFwKVsyXSA9IHoxOyAvKiB7IGRnLXdhcm5p bmcgImJlZm9yZSBDMlgiIH0gKi8NCj4gKwkJCQkvKiB7IGRnLWVycm9yICJpbml0aWFsaXphdGlv biBkaXNjYXJkcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLw0KPiArCWRvdWJsZSAoKnYy cClbMl1bMl0gPSB6MjsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQo+ICsJCQkJ LyogeyBkZy1lcnJvciAiaW5pdGlhbGl6YXRpb24gZGlzY2FyZHMiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8NCj4gKwkJCQkNCj4gKwkvLyBhc3NpZ25tZW50DQo+ICsJeDBwID0geDA7DQo+ ICsJeDFwID0geDE7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KPiArCXgycCA9 IHgyOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCj4gKw0KPiArCS8vIHN1YnRy YWN0aW9uDQo+ICsJJih4MFsxXSkgLSAmKHowWzBdKTsNCj4gKwkmKHgxWzFdKSAtICYoejFbMF0p OyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCj4gKwkmKHgyWzFdKSAtICYoejJb MF0pOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8NCj4gKwkvLyBjb21wYXJpc29u DQo+ICsJeDAgPT0gejA7DQo+ICsJeDEgPT0gejE7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMy WCIgfSAqLw0KPiArCXgyID09IHoyOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0gKi8N Cj4gKwl4MCA8IHowOw0KPiArCXgxIDwgejE7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIg fSAqLw0KPiArCXgyIDwgejI7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KPiAr CXgwID4gejA7DQo+ICsJeDEgPiB6MTsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICov DQo+ICsJeDIgPiB6MjsgLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiB9ICovDQo+ICsJLy8g Y29uZGl0aW9uYWwgZXhwcmVzc2lvbnMNCj4gKwkodm9pZCkoMSA/IHgwIDogejApOw0KPiArCSh2 b2lkKSgxID8geDEgOiB6MSk7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KPiAr CSh2b2lkKSgxID8geDIgOiB6Mik7IC8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgfSAqLw0K PiArCSh2b2lkKSgxID8geDAgOiB4MSk7IC8qIHsgZGctZXJyb3IgInBvaW50ZXIgdHlwZSBtaXNt YXRjaCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uIiB9ICovDQo+ICsJKHZvaWQpKDEgPyB4MSA6 IHgyKTsgLyogeyBkZy1lcnJvciAicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbmRpdGlvbmFs IGV4cHJlc3Npb24iIH0gKi8NCj4gKwkodm9pZCkoMSA/IHgyIDogeDApOyAvKiB7IGRnLWVycm9y ICJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiIgfSAqLw0K PiArCXYwcCA9ICgxID8gejAgOiB2MHApOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2Nh cmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlcg0KPiB0YXJnZXQgdHlwZSIgfSAqLw0K PiArCXYxcCA9ICgxID8gejEgOiB2MXApOyAvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiIH0g Ki8NCj4gKwkJCQkvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRpc2NhcmRzIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovDQo+ICsJdjJwID0gKDEgPyB6MiA6IHYycCk7IC8qIHsgZGctd2Fy bmluZyAiYmVmb3JlIEMyWCIgfSAqLw0KPiArCQkJCS8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQg ZGlzY2FyZHMiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8NCj4gKwl2MHAgPSAoMSA/IHgw IDogeDBwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxp ZmllciBmcm9tIHBvaW50ZXINCj4gdGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl2MXAgPSAoMSA/IHgx IDogeDFwKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBkaXNjYXJkcyIgfSAqLw0KPiArCQkJ CS8qIHsgZGctd2FybmluZyAiYmVmb3JlIEMyWCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAq Lw0KPiArCXYycCA9ICgxID8geDIgOiB4MnApOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50IGRp c2NhcmRzIiB9ICovDQo+ICsJCQkJLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9ICovDQo+ICsJKDEgPyB4MCA6IHowKVswXSA9IDE7IC8qIHsgZGct ZXJyb3IgImFzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQo+ICsJKDEgPyB4 MSA6IHoxKVswXVswXSA9IDE7IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgb2YgcmVhZC1vbmx5 IGxvY2F0aW9uIiB9ICovDQo+ICsJCQkJLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovDQo+ICsJKDEgPyB4MiA6IHoyKVswXVswXVswXSA9IDE7 IC8qIHsgZGctZXJyb3IgImFzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IGxvY2F0aW9uIiB9ICovDQo+ ICsJCQkJLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovDQo+ICsJdjBwID0gKDEgPyBwIDogejApOyAvKiB7IGRnLWVycm9yICJhc3NpZ25tZW50 IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQNCj4gdHlwZSIg fSAqLw0KPiArCXYxcCA9ICgxID8gcCA6IHoxKTsgLyogeyBkZy1lcnJvciAiYXNzaWdubWVudCBk aXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0DQo+IHR5cGUiIH0g Ki8NCj4gKwkJCQkvKiB7IGRnLXdhcm5pbmcgImJlZm9yZSBDMlgiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8NCj4gKwl2MnAgPSAoMSA/IHAgOiB6Mik7IC8qIHsgZGctZXJyb3IgImFzc2ln bm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldA0KPiB0 eXBlIiB9ICovDQo+ICsJCQkJLyogeyBkZy13YXJuaW5nICJiZWZvcmUgQzJYIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovDQo+ICsJdjBwID0gKDEgPyBwYyA6IHgwKTsgLyogeyBkZy1lcnJv ciAiYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXINCj4g dGFyZ2V0IHR5cGUiIH0gKi8NCj4gKwl2MXAgPSAoMSA/IHBjIDogeDEpOyAvKiB7IGRnLWVycm9y ICJhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlcg0KPiB0 YXJnZXQgdHlwZSIgfSAqLw0KPiArCXYycCA9ICgxID8gcGMgOiB4Mik7IC8qIHsgZGctZXJyb3Ig ImFzc2lnbm1lbnQgZGlzY2FyZHMgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyDQo+IHRh cmdldCB0eXBlIiB9ICovDQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3BvaW50ZXItYXJyYXktcXVhbHMtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcG9p bnRlci1hcnJheS0NCj4gcXVhbHMtMS5jDQo+IGluZGV4IDkyMWEzN2U5ZTBkLi40OThhYjIyMzE2 MiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcG9pbnRlci1hcnJheS1xdWFs cy0xLmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcG9pbnRlci1hcnJheS1xdWFscy0x LmMNCj4gQEAgLTEsNiArMSw2IEBADQo+ICAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiAgLyog T3JpZ2luOiBNYXJ0aW4gVWVja2VyIDx1ZWNrZXJAZWVjcy5iZXJrZWxleS5lZHU+ICovDQo+IC0v KiB7IGRnLW9wdGlvbnMgIi1XZGlzY2FyZGVkLWFycmF5LXF1YWxpZmllcnMiIH0gKi8NCj4gKy8q IHsgZGctb3B0aW9ucyAiIiB9ICovDQo+ICB2b2lkIHR2b2lkKHZvaWQqIHgpOw0KPiAgdm9pZCB0 cmFuc3Bvc2UwKGRvdWJsZSogb3V0LCBjb25zdCBkb3VibGUqIGluKSB7IH0NCj4gIHZvaWQgdHJh bnNwb3NlMShkb3VibGUgb3V0WzJdWzJdLCBjb25zdCBkb3VibGUgaW5bMl1bMl0pIHsgfQ0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcG9pbnRlci1hcnJheS1xdWFscy0yLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wb2ludGVyLWFycmF5LQ0KPiBxdWFscy0yLmMNCj4gaW5k ZXggMzA2ODljNzMxMmQuLjRjOTVkOGEzYTc4IDEwMDY0NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRl L2djYy5kZy9wb2ludGVyLWFycmF5LXF1YWxzLTIuYw0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9wb2ludGVyLWFycmF5LXF1YWxzLTIuYw0KPiBAQCAtMSw1ICsxLDUgQEANCj4gIC8qIHsg ZGctZG8gY29tcGlsZSB9ICovDQo+IC0vKiB7IGRnLW9wdGlvbnMgIi1XZGlzY2FyZGVkLWFycmF5 LXF1YWxpZmllcnMgLXBlZGFudGljLWVycm9ycyIgfSAqLw0KPiArLyogeyBkZy1vcHRpb25zICIt cGVkYW50aWMtZXJyb3JzIiB9ICovDQo+ICAvKiBPcmlnaW46IE1hcnRpbiBVZWNrZXIgPHVlY2tl ckBlZWNzLmJlcmtlbGV5LmVkdT4gKi8NCj4gIHZvaWQgdHZvaWQodm9pZCogeCk7DQo+ICB2b2lk IHRyYW5zcG9zZTAoZG91YmxlKiBvdXQsIGNvbnN0IGRvdWJsZSogaW4pIHsgfQ0K