From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 77389 invoked by alias); 6 Sep 2017 13:00:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 77303 invoked by uid 89); 6 Sep 2017 13:00:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-oln040092064085.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (40.92.64.85) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 06 Sep 2017 13:00:17 +0000 Received: from VE1EUR01FT043.eop-EUR01.prod.protection.outlook.com (10.152.2.59) by VE1EUR01HT057.eop-EUR01.prod.protection.outlook.com (10.152.3.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1385.11; Wed, 6 Sep 2017 13:00:13 +0000 Received: from AM5PR0701MB2657.eurprd07.prod.outlook.com (10.152.2.56) by VE1EUR01FT043.mail.protection.outlook.com (10.152.3.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1385.11 via Frontend Transport; Wed, 6 Sep 2017 13:00:13 +0000 Received: from AM5PR0701MB2657.eurprd07.prod.outlook.com ([fe80::8c96:1341:5db1:7f8c]) by AM5PR0701MB2657.eurprd07.prod.outlook.com ([fe80::8c96:1341:5db1:7f8c%18]) with mapi id 15.20.0035.010; Wed, 6 Sep 2017 13:00:13 +0000 From: Bernd Edlinger To: "Richard Earnshaw (lists)" , Kyrill Tkachov , "gcc-patches@gcc.gnu.org" CC: Ramana Radhakrishnan , Wilco Dijkstra Subject: Re: [PATCH, ARM] correctly encode the CC reg data flow Date: Wed, 06 Sep 2017 13:00:00 -0000 Message-ID: References: <3f5e5538-5dd3-b416-904f-b87f115336fe@arm.com> <59AD5B44.2080509@foss.arm.com> <6f24b217-9131-6aef-0cdb-f9f26a538fe9@arm.com> In-Reply-To: <6f24b217-9131-6aef-0cdb-f9f26a538fe9@arm.com> authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=hotmail.de; x-incomingtopheadermarker: OriginalChecksum:E3A7CD54FE484A855708A17B5C630904D6C7AF59346F282382F1C7A0EF67AB60;UpperCasedChecksum:31D8F2EAFFFC7A917E788AE62377431981E593163AE0E88D75A2BCFC32EF2EE3;SizeAsReceived:7877;Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [839nL2UiualT7E8C9VvPdACx908TjUh0] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VE1EUR01HT057;6:atWSjWKV0v97uC9IYnUvf16D+mNTo8QKW0/0VK0/2aEKl5wx6qxMlUaigDL433zCQUD46CJJuibZeCL2jRsGu5yE3k1KIY3w3EMd86BSSvDZfrpa+s6crx03OHe2tF9poyuOiIj9EI5nn0GiCMjycUgqzVBEkAAUQdh656pO26U7qmcDdPsVL75xzjoZ/vU0il7bXg9U/AitRZTAie+G/0F3flA6MsOX5ptNtBx+TN2SC/jglERRPNxohimpvnDe9N8sQXbJ3ic2CffkwATwEv7pxMCIdEFY74J7/7e6unezZZe5KrZQeSwA384ZWo9RdOk1IzO1CWqhQjXotGc8OQ==;5:3kUrj/JJCKpnaJ8xAXqZ3Y4j1T5UQZ8l1uTK+RfosX8xjMvqfpczchLYiiI+c5psP9HQYQ+W5pbJhUfJQz/jofH9ssyldp00/qHAULlZHihtytH1v8RyQq56789uemDXAMEhU/5gGbJOOxogL/NGLA==;24:b0e+Hn8rsrgDEMI+5oYDnbq2Xkg9+lFhBQ+5YO3UQs8w2Qc3BByMtuag5vMNPEsTNogtafKKUaDsHKfvGP1WOihyeVgCq+/zBWQUxe+wTeE=;7:+1xUYBqY3jBfOw/5CYk0HqbszzoLao/u8whTMzqpVuPtVDiaQGrHhVsoNLsReVtLzAVJwsqAWLTJWG65ih9l9/I/Mtv1EiXgdRDw/iBGLLmkNa7w4sdA16VOisX6V7ghlzBs+znIk9ud0wXD762+Llr+7MlYRwNLV9dmxuCac3W8R1jxGOT3s0n8ssYQSgL2yQ4XgW/VN8c5gcADNa/nyHF7DovS3x7cimbapiPZ9IM= x-incomingheadercount: 47 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: b812150d-d3c6-472a-1e60-08d4f5273627 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125374)(1603101448)(1701031045)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:VE1EUR01HT057; x-ms-traffictypediagnostic: VE1EUR01HT057: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031);SRVR:VE1EUR01HT057;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VE1EUR01HT057; x-forefront-prvs: 0422860ED4 x-forefront-antispam-report: SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:VE1EUR01HT057;H:AM5PR0701MB2657.eurprd07.prod.outlook.com;FPR:;SPF:None;LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <5CF7A0992992144C9EF855ABE3CE0797@eurprd07.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Sep 2017 13:00:13.3239 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR01HT057 X-SW-Source: 2017-09/txt/msg00366.txt.bz2 T24gMDkvMDYvMTcgMTQ6NTEsIFJpY2hhcmQgRWFybnNoYXcgKGxpc3RzKSB3 cm90ZToNCj4gT24gMDYvMDkvMTcgMTM6NDQsIEJlcm5kIEVkbGluZ2VyIHdy b3RlOg0KPj4gT24gMDkvMDQvMTcgMjE6NTQsIEJlcm5kIEVkbGluZ2VyIHdy b3RlOg0KPj4+IEhpIEt5cmlsbCwNCj4+Pg0KPj4+IFRoYW5rcyBmb3IgeW91 ciByZXZpZXchDQo+Pj4NCj4+Pg0KPj4+IE9uIDA5LzA0LzE3IDE1OjU1LCBL eXJpbGwgVGthY2hvdiB3cm90ZToNCj4+Pj4gSGkgQmVybmQsDQo+Pj4+DQo+ Pj4+IE9uIDE4LzAxLzE3IDE1OjM2LCBCZXJuZCBFZGxpbmdlciB3cm90ZToN Cj4+Pj4+IE9uIDAxLzEzLzE3IDE5OjI4LCBCZXJuZCBFZGxpbmdlciB3cm90 ZToNCj4+Pj4+PiBPbiAwMS8xMy8xNyAxNzoxMCwgQmVybmQgRWRsaW5nZXIg d3JvdGU6DQo+Pj4+Pj4+IE9uIDAxLzEzLzE3IDE0OjUwLCBSaWNoYXJkIEVh cm5zaGF3IChsaXN0cykgd3JvdGU6DQo+Pj4+Pj4+PiBPbiAxOC8xMi8xNiAx Mjo1OCwgQmVybmQgRWRsaW5nZXIgd3JvdGU6DQo+Pj4+Pj4+Pj4gSGksDQo+ Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiB0aGlzIGlzIHJlbGF0ZWQgdG8gUFI3NzMw OCwgdGhlIGZvbGxvdy11cCBwYXRjaCB3aWxsIGRlcGVuZCBvbiB0aGlzDQo+ Pj4+Pj4+Pj4gb25lLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gV2hlbiB0cnlp bmcgdGhlIHNwbGl0IHRoZSAqYXJtX2NtcGRpX2luc24gYW5kICphcm1fY21w ZGlfdW5zaWduZWQNCj4+Pj4+Pj4+PiBiZWZvcmUgcmVsb2FkLCBhIG1pcy1j b21waWxhdGlvbiBpbiBsaWJnY2MgZnVuY3Rpb24NCj4+Pj4+Pj4+PiBfX2du dV9zYXRmcmFjdGRhc3ENCj4+Pj4+Pj4+PiB3YXMgZGlzY292ZXJlZCwgc2Vl IFsxXSBmb3IgbW9yZSBkZXRhaWxzLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4g VGhlIHJlYXNvbiBzZWVtcyB0byBiZSB0aGF0IHdoZW4gdGhlICphcm1fY21w ZGlfaW5zbiBpcyBkaXJlY3RseQ0KPj4+Pj4+Pj4+IGZvbGxvd2VkIGJ5IGEg KmFybV9jbXBkaV91bnNpZ25lZCBpbnN0cnVjdGlvbiwgYm90aCBhcmUgc3Bs aXQNCj4+Pj4+Pj4+PiB1cCBpbnRvIHRoaXM6DQo+Pj4+Pj4+Pj4NCj4+Pj4+ Pj4+PiAgICAgIFsoc2V0IChyZWc6Q0MgQ0NfUkVHTlVNKQ0KPj4+Pj4+Pj4+ ICAgICAgICAgICAgKGNvbXBhcmU6Q0MgKG1hdGNoX2R1cCAwKSAobWF0Y2hf ZHVwIDEpKSkNCj4+Pj4+Pj4+PiAgICAgICAocGFyYWxsZWwgWyhzZXQgKHJl ZzpDQyBDQ19SRUdOVU0pDQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgIChjb21wYXJlOkNDIChtYXRjaF9kdXAgMykgKG1hdGNoX2R1cCA0KSkp DQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAoc2V0IChtYXRjaF9kdXAg MikNCj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgKG1pbnVzOlNJ IChtYXRjaF9kdXAgNSkNCj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGx0dTpTSSAocmVnOkNDX0MgQ0NfUkVHTlVNKQ0KPj4+ Pj4+Pj4+IChjb25zdF9pbnQNCj4+Pj4+Pj4+PiAwKSkpKV0pXQ0KPj4+Pj4+ Pj4+DQo+Pj4+Pj4+Pj4gICAgICBbKHNldCAocmVnOkNDIENDX1JFR05VTSkN Cj4+Pj4+Pj4+PiAgICAgICAgICAgIChjb21wYXJlOkNDIChtYXRjaF9kdXAg MikgKG1hdGNoX2R1cCAzKSkpDQo+Pj4+Pj4+Pj4gICAgICAgKGNvbmRfZXhl YyAoZXE6U0kgKHJlZzpDQyBDQ19SRUdOVU0pIChjb25zdF9pbnQgMCkpDQo+ Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAoc2V0IChyZWc6Q0MgQ0NfUkVH TlVNKQ0KPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAoY29tcGFy ZTpDQyAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgMSkpKSldDQo+Pj4+Pj4+ Pj4NCj4+Pj4+Pj4+PiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSByZWc6Q0Mg ZnJvbSB0aGUgKnN1YnNpM19jYXJyeWluX2NvbXBhcmUNCj4+Pj4+Pj4+PiBp cyBub3QgbWVudGlvbmluZyB0aGF0IHRoZSByZWc6Q0MgaXMgYWxzbyBkZXBl bmRlbnQgb24gdGhlIHJlZzpDQw0KPj4+Pj4+Pj4+IGZyb20gYmVmb3JlLiAg VGhlcmVmb3JlIHRoZSAqYXJtX2NtcHNpX2luc24gYXBwZWFycyB0byBiZQ0K Pj4+Pj4+Pj4+IHJlZHVuZGFudCBhbmQgdGh1cyBnb3QgcmVtb3ZlZCwgYmVj YXVzZSB0aGUgZGF0YSB2YWx1ZXMgYXJlDQo+Pj4+Pj4+Pj4gaWRlbnRpY2Fs Lg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gSSB0aGluayB0aGF0IGFwcGxpZXMg dG8gYSBudW1iZXIgb2Ygc2ltaWxhciBwYXR0ZXJuIHdoZXJlIGRhdGENCj4+ Pj4+Pj4+PiBmbG93IGlzIGhhcHBlbmluZyB0aHJvdWdoIHRoZSBDQyByZWcu DQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiBTbyB0aGlzIGlzIGEga2luZCBvZiBj b3JyZWN0bmVzcyBpc3N1ZSwgYW5kIHNob3VsZCBiZSBmaXhlZA0KPj4+Pj4+ Pj4+IGluZGVwZW5kZW50bHkgZnJvbSB0aGUgb3B0aW1pemF0aW9uIGlzc3Vl IFBSNzczMDguDQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiBUaGVyZWZvcmUgSSB0 aGluayB0aGUgcGF0dGVybnMgbmVlZCB0byBzcGVjaWZ5IHRoZSB0cnVlDQo+ Pj4+Pj4+Pj4gdmFsdWUgdGhhdCB3aWxsIGJlIGluIHRoZSBDQyByZWcsIGlu IG9yZGVyIGZvciBjc2UgdG8NCj4+Pj4+Pj4+PiBrbm93IHdoYXQgdGhlIGlu c3RydWN0aW9ucyBhcmUgcmVhbGx5IGRvaW5nLg0KPj4+Pj4+Pj4+DQo+Pj4+ Pj4+Pj4NCj4+Pj4+Pj4+PiBCb290c3RyYXBwZWQgYW5kIHJlZy10ZXN0ZWQg b24gYXJtLWxpbnV4LWdudWVhYmloZi4NCj4+Pj4+Pj4+PiBJcyBpdCBPSyBm b3IgdHJ1bms/DQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+IEkgYWdyZWUgeW91J3Zl IGZvdW5kIGEgdmFsaWQgcHJvYmxlbSBoZXJlLCBidXQgSSBoYXZlIHNvbWUg aXNzdWVzDQo+Pj4+Pj4+PiB3aXRoDQo+Pj4+Pj4+PiB0aGUgcGF0Y2ggaXRz ZWxmLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+PiAoZGVmaW5lX2lu c25fYW5kX3NwbGl0ICJzdWJkaTNfY29tcGFyZTEiDQo+Pj4+Pj4+PiAgICAg WyhzZXQgKHJlZzpDQ19OQ1YgQ0NfUkVHTlVNKQ0KPj4+Pj4+Pj4gICAgICAg KGNvbXBhcmU6Q0NfTkNWDQo+Pj4+Pj4+PiAgICAgICAgIChtYXRjaF9vcGVy YW5kOkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikNCj4+Pj4+Pj4+ICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIg InIiKSkpDQo+Pj4+Pj4+PiAgICAgIChzZXQgKG1hdGNoX29wZXJhbmQ6REkg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj0mciIpDQo+Pj4+Pj4+PiAgICAgICAo bWludXM6REkgKG1hdGNoX2R1cCAxKSAobWF0Y2hfZHVwIDIpKSldDQo+Pj4+ Pj4+PiAgICAgIlRBUkdFVF8zMkJJVCINCj4+Pj4+Pj4+ICAgICAiIyINCj4+ Pj4+Pj4+ICAgICAiJiYgcmVsb2FkX2NvbXBsZXRlZCINCj4+Pj4+Pj4+ICAg ICBbKHBhcmFsbGVsIFsoc2V0IChyZWc6Q0MgQ0NfUkVHTlVNKQ0KPj4+Pj4+ Pj4gICAgICAgICAgICAgIChjb21wYXJlOkNDIChtYXRjaF9kdXAgMSkgKG1h dGNoX2R1cCAyKSkpDQo+Pj4+Pj4+PiAgICAgICAgICAgICAoc2V0IChtYXRj aF9kdXAgMCkgKG1pbnVzOlNJIChtYXRjaF9kdXAgMSkgKG1hdGNoX2R1cA0K Pj4+Pj4+Pj4gMikpKV0pDQo+Pj4+Pj4+PiAgICAgIChwYXJhbGxlbCBbKHNl dCAocmVnOkNDX0MgQ0NfUkVHTlVNKQ0KPj4+Pj4+Pj4gICAgICAgICAgICAg IChjb21wYXJlOkNDX0MNCj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICh6ZXJv X2V4dGVuZDpESSAobWF0Y2hfZHVwIDQpKQ0KPj4+Pj4+Pj4gICAgICAgICAg ICAgICAgKHBsdXM6REkgKHplcm9fZXh0ZW5kOkRJIChtYXRjaF9kdXAgNSkp DQo+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgIChsdHU6REkgKHJlZzpD Q19DIENDX1JFR05VTSkgKGNvbnN0X2ludCAwKSkpKSkNCj4+Pj4+Pj4+ICAg ICAgICAgICAgIChzZXQgKG1hdGNoX2R1cCAzKQ0KPj4+Pj4+Pj4gICAgICAg ICAgICAgIChtaW51czpTSSAobWludXM6U0kgKG1hdGNoX2R1cCA0KSAobWF0 Y2hfZHVwIDUpKQ0KPj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgIChsdHU6 U0kgKHJlZzpDQ19DIENDX1JFR05VTSkgKGNvbnN0X2ludCAwKSkpKV0pXQ0K Pj4+Pj4+Pj4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+PiBUaGlzIHBhdHRlcm4gaXMg bm93IG5vLWxvbmdlciBzZWxmIGNvbnNpc3RlbnQgaW4gdGhhdCBiZWZvcmUg dGhlDQo+Pj4+Pj4+PiBzcGxpdA0KPj4+Pj4+Pj4gdGhlIG92ZXJhbGwgcmVz dWx0IGZvciB0aGUgY29uZGl0aW9uIHJlZ2lzdGVyIGlzIGluIG1vZGUgQ0Nf TkNWLCBidXQNCj4+Pj4+Pj4+IGFmdGVyd2FyZHMgaXQgaXMganVzdCBDQ19D Lg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IEkgdGhpbmsgQ0NfTkNWIGlzIGNvcnJl Y3QgbW9kZSAodGhlIE4sIEMgYW5kIFYgYml0cyBhbGwgY29ycmVjdGx5DQo+ Pj4+Pj4+PiByZWZsZWN0IHRoZSByZXN1bHQgb2YgdGhlIDY0LWJpdCBjb21w YXJpc29uKSwgYnV0IHRoYXQgdGhlbg0KPj4+Pj4+Pj4gaW1wbGllcyB0aGF0 DQo+Pj4+Pj4+PiB0aGUgY2MgbW9kZSBvZiBzdWJzaTNfY2Fycnlpbl9jb21w YXJlIGlzIGluY29ycmVjdCBhcyB3ZWxsIGFuZA0KPj4+Pj4+Pj4gc2hvdWxk IGluDQo+Pj4+Pj4+PiBmYWN0IGFsc28gYmUgQ0NfTkNWLiAgVGhpbmtpbmcg YWJvdXQgdGhpcyBwYXR0ZXJuLCBJJ20gaW5jbGluZWQgdG8NCj4+Pj4+Pj4+ IGFncmVlDQo+Pj4+Pj4+PiB0aGF0IENDX05DViBpcyB0aGUgY29ycmVjdCBt b2RlIGZvciB0aGlzIG9wZXJhdGlvbg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IEkn bSBub3Qgc3VyZSBpZiB0aGVyZSBhcmUgb3RoZXIgY29uc2VxdWVuY2VzIHRo YXQgd2lsbCBmYWxsIG91dCBmcm9tDQo+Pj4+Pj4+PiBmaXhpbmcgdGhpcyAo aXQncyBwb3NzaWJsZSB0aGF0IHdlIG1pZ2h0IG5lZWQgYSBjaGFuZ2UgdG8N Cj4+Pj4+Pj4+IHNlbGVjdF9jY19tb2RlDQo+Pj4+Pj4+PiBhcyB3ZWxsKS4N Cj4+Pj4+Pj4+DQo+Pj4+Pj4+IFllcywgdGhpcyBpcyBzdGlsbCBhIGJpdCBh d2t3YXJkLi4uDQo+Pj4+Pj4+DQo+Pj4+Pj4+IFRoZSBOIGFuZCBWIGJpdCB3 aWxsIGJlIHRoZSBjb3JyZWN0IHJlc3VsdCBmb3IgdGhlIHN1YmRpM19jb21w YXJlMQ0KPj4+Pj4+PiBhIDY0LWJpdCBjb21wYXJpc29uLCBidXQgemVyb19l eHRlbmQ6REkgKG1hdGNoX2R1cCA0KSAocGx1czpESSAuLi4pDQo+Pj4+Pj4+ IG9ubHkgZ2V0cyB0aGUgQyBiaXQgY29ycmVjdCwgdGhlIGV4cHJlc3Npb24g Zm9yIE4gYW5kIFYgaXMgYSBkaWZmZXJlbnQNCj4+Pj4+Pj4gb25lLg0KPj4+ Pj4+Pg0KPj4+Pj4+PiBJdCBwcm9iYWJseSB3b3JrcywgYmVjYXVzZSB0aGUg c3Vic2kzX2NhcnJ5aW5fY29tcGFyZSBpbnN0cnVjdGlvbiBzZXRzDQo+Pj4+ Pj4+IG1vcmUgQ0MgYml0cyB0aGFuIHRoZSBwYXR0ZXJuIGRvZXMgZXhwbGlj aXRseSBzcGVjaWZ5IHRoZSB2YWx1ZS4NCj4+Pj4+Pj4gV2Uga25vdyB0aGUg c3Vic2kzX2NhcnJ5aW5fY29tcGFyZSBhbHNvIGNvbXB1dGVzIHRoZSBOViBi aXRzLCBidXQNCj4+Pj4+Pj4gaXQgaXMNCj4+Pj4+Pj4gaGFyZCB0byB3cml0 ZSBkb3duIHRoZSBjb3JyZWN0IHJ0bCBleHByZXNzaW9uIGZvciBpdC4NCj4+ Pj4+Pj4NCj4+Pj4+Pj4gSW4gdGhlb3J5IHRoZSBwYXR0ZXJuIHNob3VsZCBk ZXNjcmliZSBldmVyeXRoaW5nIGNvcnJlY3RseSwNCj4+Pj4+Pj4gbWF5YmUs IGxpa2U6DQo+Pj4+Pj4+DQo+Pj4+Pj4+IHNldCAocmVnOkNDX0MgQ0NfUkVH TlVNKQ0KPj4+Pj4+PiAgICAgICAoY29tcGFyZTpDQ19DDQo+Pj4+Pj4+ICAg ICAgICAgKHplcm9fZXh0ZW5kOkRJIChtYXRjaF9kdXAgNCkpDQo+Pj4+Pj4+ ICAgICAgICAgKHBsdXM6REkgKHplcm9fZXh0ZW5kOkRJIChtYXRjaF9kdXAg NSkpDQo+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgKGx0dTpESSAocmVnOkND X0MgQ0NfUkVHTlVNKSAoY29uc3RfaW50IDApKSkpKQ0KPj4+Pj4+PiBzZXQg KHJlZzpDQ19OViBDQ19SRUdOVU0pDQo+Pj4+Pj4+ICAgICAgIChjb21wYXJl OkNDX05WDQo+Pj4+Pj4+ICAgICAgICAobWF0Y2hfZHVwIDQpKQ0KPj4+Pj4+ PiAgICAgICAgKHBsdXM6U0kgKG1hdGNoX2R1cCA1KSAobHR1OlNJIChyZWc6 Q0NfQyBDQ19SRUdOVU0pDQo+Pj4+Pj4+IChjb25zdF9pbnQgMCkpKQ0KPj4+ Pj4+PiBzZXQgKG1hdGNoX2R1cCAzKQ0KPj4+Pj4+PiAgICAgICAobWludXM6 U0kgKG1pbnVzOlNJIChtYXRjaF9kdXAgNCkgKG1hdGNoX2R1cCA1KSkNCj4+ Pj4+Pj4gICAgICAgICAgICAgICAgIChsdHU6U0kgKHJlZzpDQ19DIENDX1JF R05VTSkgKGNvbnN0X2ludCAwKSkpKSkNCj4+Pj4+Pj4NCj4+Pj4+Pj4NCj4+ Pj4+Pj4gQnV0IEkgZG91YnQgdGhhdCB3aWxsIHdvcmsgdG8gc2V0IENDX1JF R05VTSB3aXRoIHR3byBkaWZmZXJlbnQgbW9kZXMNCj4+Pj4+Pj4gaW4gcGFy YWxsZWw/DQo+Pj4+Pj4+DQo+Pj4+Pj4+IEFub3RoZXIgaWRlYSB3b3VsZCBi ZSB0byBpbnZlbnQgYSBDQ19DTlZfTk9PViBtb2RlLCB0aGF0IGltcGxpY2l0 bHkNCj4+Pj4+Pj4gZGVmaW5lcyBDIGZyb20gdGhlIERJbW9kZSByZXN1bHQs IGFuZCBOViBmcm9tIHRoZSBTSW1vZGUgcmVzdWx0LA0KPj4+Pj4+PiBzaW1p bGFyIHRvIHRoZSBDQ19OT09WbW9kZSwgdGhhdCBhbHNvIGxlYXZlcyBzb21l dGhpbmcgb3BlbiB3aGF0DQo+Pj4+Pj4+IGJpdHMgaXQgcmVhbGx5IGRlZmlu ZXM/DQo+Pj4+Pj4+DQo+Pj4+Pj4+DQo+Pj4+Pj4+IFdoYXQgZG8geW91IHRo aW5rPw0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+PiBUaGFua3MNCj4+Pj4+ Pj4gQmVybmQuDQo+Pj4+Pj4gSSB0aGluayBtYXliZSB0aGUgcmlnaHQgc29s dXRpb24gaXMgdG8gaW52ZW50IGEgbmV3IENDbW9kZQ0KPj4+Pj4+IHRoYXQg ZGVmaW5lcyBDIGFzIGlmIHRoZSBjb21wYXJpc29uIGlzIGRvbmUgaW4gRElt b2RlDQo+Pj4+Pj4gYnV0IE4gYW5kIFYgYXMgaWYgdGhlIGNvbXBhcmlzb24g aXMgZG9uZSBpbiBTSW1vZGUuDQo+Pj4+Pj4NCj4+Pj4+PiBJIHRob3VnaHQg bWF5YmUgSSB3b3VsZCBjYWxsIGl0IENDX05DVl9DSUMgKENJQyA9IENhcnJ5 LUluLUNvbXBhcmUpLA0KPj4+Pj4+IGZ1cnRoZXJtb3JlIEkgdGhpbmsgdGhl IENDX05PT1Ygc2hvdWxkIGJlIHJlbmFtZWQgdG8gQ0NfTlogKGJlY2F1c2UN Cj4+Pj4+PiBvbmx5IE4gYW5kIFogYXJlIHNldCBjb3JyZWN0bHkpLCBidXQg aW4gYSBkaWZmZXJlbnQgcGF0Y2ggb2YgY291cnNlLg0KPj4+Pj4+DQo+Pj4+ Pj4gQXR0YWNoZWQgaXMgYSBuZXcgdmVyc2lvbiB0aGF0IGltcGxlbWVudHMg dGhlIG5ldyBDQ21vZGUuDQo+Pj4+Pj4NCj4+Pj4+PiBIb3cgZG8geW91IGxp a2UgdGhpcyBuZXcgdmVyc2lvbj8NCj4+Pj4+Pg0KPj4+Pj4+IEl0IHNlZW1z IHRvIGJlIGFibGUgdG8gYnVpbGQgYSBjcm9zcy1jb21waWxlciBhdCBsZWFz dC4NCj4+Pj4+Pg0KPj4+Pj4+IEkgd2lsbCBzdGFydCBhIG5ldyBib290c3Ry YXAgd2l0aCB0aGlzIG5ldyBwYXRjaCwgYnV0IHRoYXQgY2FuIHRha2UNCj4+ Pj4+PiBzb21lDQo+Pj4+Pj4gdGltZSB1bnRpbCBJIGhhdmUgZGVmaW5pdGl2 ZSByZXN1bHRzLg0KPj4+Pj4+DQo+Pj4+Pj4gSXMgdGhlcmUgc3RpbGwgYSBj aGFuY2UgdGhhdCBpdCBjYW4gZ28gaW50byBnY2MtNyBvciBzaG91bGQgaXQg d2FpdA0KPj4+Pj4+IGZvciB0aGUgbmV4dCBzdGFnZTE/DQo+Pj4+Pj4NCj4+ Pj4+PiBUaGFua3MNCj4+Pj4+PiBCZXJuZC4NCj4+Pj4+DQo+Pj4+PiBJIHRo b3VnaHQgSSBzaG91bGQgYWxzbyBsb29rIGF0IHdoZXJlIHRoZSBzdWJkaV9j b21wYXJlMSBhbWQgdGhlDQo+Pj4+PiBuZWdkaTJfY29tcGFyZSBwYXR0ZXJu cyBhcmUgdXNlZCwgYW5kIGxvb2sgaWYgdGhlIGNhbGxlciBpcyBmaW5lIHdp dGgNCj4+Pj4+IG5vdCBoYXZpbmcgYWxsIENDIGJpdHMgYXZhaWxhYmxlLg0K Pj4+Pj4NCj4+Pj4+IEFuZCBpbmRlZWQgdXN1YnY8bW9kZT40IHR1cm5zIG91 dCB0byBiZSBxdWVzdGlvbmFiZSwgYmVjYXVzZSBpdA0KPj4+Pj4gZW1pdHMg Z2VuX3N1Yjxtb2RlPjNfY29tcGFyZTEgYW5kIHVzZXMgYXJtX2dlbl91bmxp a2VseV9jYnJhbmNoIChMVFUsDQo+Pj4+PiBDQ21vZGUpIHdoaWNoIGlzIGlu Y29uc2lzdGVudCB3aGVuIHN1YmRpM19jb21wYXJlMSBubyBsb25nZXIgdXNl cw0KPj4+Pj4gQ0Ntb2RlLg0KPj4+Pj4NCj4+Pj4+IFRvIGNvcnJlY3QgdGhp cywgdGhlIGJyYW5jaCBzaG91bGQgdXNlIENDX0Ntb2RlIHdoaWNoIGlzIGFs d2F5cyBkZWZpbmVkLg0KPj4+Pj4NCj4+Pj4+IFNvIEkgdHJpZWQgdG8gdGVz dCB0aGlzIHBhdHRlcm4sIHdpdGggdGhlIGZvbGxvd2luZyB0ZXN0IHByb2dy YW1zLA0KPj4+Pj4gYW5kIGZvdW5kIHRoYXQgdGhlIGNvZGUgYWN0dWFsbHkg aW1wcm92ZXMgd2hlbiB0aGUgYnJhbmNoIHVzZXMgQ0NfQ21vZGUNCj4+Pj4+ IGluc3RlYWQgb2YgQ0Ntb2RlLCBib3RoIGZvciBTSW1vZGUgYW5kIERJbW9k ZSBkYXRhLCB3aGljaCB3YXMgYSBiaXQNCj4+Pj4+IHN1cnByaXNpbmcuDQo+ Pj4+Pg0KPj4+Pj4gSSB1c2VkIHRoaXMgdGVzdCBwcm9ncmFtIHRvIHNlZSBo b3cgdGhlIHVzdWJ2PG1vZGU+NCBwYXR0ZXJuIHdvcmtzOg0KPj4+Pj4NCj4+ Pj4+IGNhdCB0ZXN0LmMgKERJbW9kZSkNCj4+Pj4+IHVuc2lnbmVkIGxvbmcg bG9uZyB4LCB5LCB6Ow0KPj4+Pj4gaW50IGI7DQo+Pj4+PiB2b2lkIHRlc3Qo KQ0KPj4+Pj4gew0KPj4+Pj4gICAgICBiID0gX19idWlsdGluX3N1Yl9vdmVy ZmxvdyAoeSx6LCAmeCk7DQo+Pj4+PiB9DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+ IHVucGF0Y2hlZCBjb2RlIHVzZWQgOCBieXRlIG1vcmUgc3RhY2sgdGhhbiBw YXRjaGVkLA0KPj4+Pj4gYmVjYXVzZSB0aGUgREltb2RlIHN1YnRyYWN0aW9u IGlzIGVmZmVjdGl2ZWx5IGRvbmUgdHdpY2UuDQo+Pj4+Pg0KPj4+Pj4gY2F0 IHRlc3QxLmMgKFNJbW9kZSkNCj4+Pj4+IHVuc2lnbmVkIGxvbmcgeCwgeSwg ejsNCj4+Pj4+IGludCBiOw0KPj4+Pj4gdm9pZCB0ZXN0KCkNCj4+Pj4+IHsN Cj4+Pj4+ICAgICAgYiA9IF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cgKHkseiwg JngpOw0KPj4+Pj4gfQ0KPj4+Pj4NCj4+Pj4+IHdoaWNoIGdlbmVyYXRlcyAo dW5wYXRjaGVkKToNCj4+Pj4+ICAgICAgICAgICAgY21wICAgICByMywgcjAN Cj4+Pj4+ICAgICAgICAgICAgc3ViICAgICBpcCwgcjMsIHIwDQo+Pj4+Pg0K Pj4+Pj4gaW5zdGVhZCBvZiBleHBlY3RlZCAocGF0Y2hlZCk6DQo+Pj4+PiAg ICAgIHN1YnMgICAgcjMsIHIzLCByMg0KPj4+Pj4NCj4+Pj4+DQo+Pj4+PiBU aGUgY29uZGl0aW9uIGlzIGV4dHJhY3RlZCBieSBpZmNvbnZlcnNpb24gYW5k L29yIGNvbWJpbmUNCj4+Pj4+IGFuZCBjb21wbGljYXRlcyB0aGUgcmVzdWx0 aW5nIGNvZGUgaW5zdGVhZCBvZiBzaW1wbGlmeWluZy4NCj4+Pj4+DQo+Pj4+ PiBJIHRoaW5rIHRoaXMgaGFwcGVucyBvbmx5IHdoZW4gdGhlIGJyYW5jaCBh bmQgdGhlIHN1YnNpL2RpM19jb21wYXJlMQ0KPj4+Pj4gaXMgdXNpbmcgdGhl IHNhbWUgQ0MgbW9kZS4NCj4+Pj4+DQo+Pj4+PiBUaGF0IGRvZXMgbm90IGhh cHBlbiB3aGVuIHRoZSBDQyBtb2RlcyBkaXNhZ3JlZSwgYXMgd2l0aCB0aGUN Cj4+Pj4+IHByb3Bvc2VkIHBhdGNoLiAgQWxsIG90aGVyIHVzZXMgb2YgdGhl IHBhdHRlcm4gYXJlIGFscmVhZHkgdXNpbmcNCj4+Pj4+IENDX0Ntb2RlIG9y IENDX1Ztb2RlIGluIHRoZSBicmFuY2gsIGFuZCB0aGVzZSBkbyBub3QgY2hh bmdlLg0KPj4+Pj4NCj4+Pj4+IEF0dGFjaGVkIGlzIGFuIHVwZGF0ZWQgdmVy c2lvbiBvZiB0aGUgcGF0Y2gsIHRoYXQgaGFwcGVucyB0bw0KPj4+Pj4gaW1w cm92ZSB0aGUgY29kZSBnZW5lcmF0aW9uIG9mIHRoZSB1c3Vic2k0IGFuZCB1 c3ViZGk0IHBhdHRlcm4sDQo+Pj4+PiBhcyBhIHNpZGUgZWZmZWN0Lg0KPj4+ Pj4NCj4+Pj4+DQo+Pj4+PiBCb290c3RyYXBwZWQgYW5kIHJlZy10ZXN0ZWQg b24gYXJtLWxpbnV4LWdudWVhYmloZi4NCj4+Pj4+IElzIGl0IE9LIGZvciB0 cnVuaz8NCj4+Pj4NCj4+Pj4gSSdtIHZlcnkgc29ycnkgaXQgaGFzIHRha2Vu IHNvIGxvbmcgdG8gcmV2aWV3Lg0KPj4+PiBJJ3ZlIGJlZW4gcmFtcGluZyB1 cCBvbiB0aGUgY29udGV4dCByZWNlbnRseSBub3cgc28gSSdsbCB0cnkgdG8g bW92ZQ0KPj4+PiB0aGlzIGFsb25nLi4uDQo+Pj4+DQo+Pj4+IFRoaXMgcGF0 Y2ggbG9va3MgbW9zdGx5IG9rIHRvIG1lIGZyb20gcmVhZGluZyB0aGUgcGF0 dGVybnMgYW5kIHRoZQ0KPj4+PiBkaXNjdXNzaW9uIGFyb3VuZCBpdC4NCj4+ Pj4gSSBoYXZlIG9uZSBjb25jZXJuOg0KPj4+Pg0KPj4+Pg0KPj4+PiAgICAo ZGVmaW5lX2luc25fYW5kX3NwbGl0ICJuZWdkaTJfY29tcGFyZSINCj4+Pj4g LSAgWyhzZXQgKHJlZzpDQyBDQ19SRUdOVU0pDQo+Pj4+IC0gICAgKGNvbXBh cmU6Q0MNCj4+Pj4gKyAgWyhzZXQgKHJlZzpDQ19OQ1YgQ0NfUkVHTlVNKQ0K Pj4+PiArICAgIChjb21wYXJlOkNDX05DVg0KPj4+PiAgICAgICAgICAoY29u c3RfaW50IDApDQo+Pj4+ICAgICAgICAgIChtYXRjaF9vcGVyYW5kOkRJIDEg InJlZ2lzdGVyX29wZXJhbmQiICIwLHIiKSkpDQo+Pj4+ICAgICAgIChzZXQg KG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yLCZy IikNCj4+Pj4gQEAgLTQ2NDcsOCArNDY1MCwxMiBAQA0KPj4+PiAgICAgICAg ICAgICAgIChjb21wYXJlOkNDIChjb25zdF9pbnQgMCkgKG1hdGNoX2R1cCAx KSkpDQo+Pj4+ICAgICAgICAgICAgICAoc2V0IChtYXRjaF9kdXAgMCkgKG1p bnVzOlNJIChjb25zdF9pbnQgMCkNCj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAobWF0Y2hfZHVwIDEpKSldKQ0KPj4+PiAtICAgKHBhcmFsbGVs IFsoc2V0IChyZWc6Q0MgQ0NfUkVHTlVNKQ0KPj4+PiAtICAgICAgICAgICAo Y29tcGFyZTpDQyAoY29uc3RfaW50IDApIChtYXRjaF9kdXAgMykpKQ0KPj4+ PiArICAgKHBhcmFsbGVsIFsoc2V0IChyZWc6Q0NfTkNWX0NJQyBDQ19SRUdO VU0pDQo+Pj4+ICsgICAgICAgICAgIChjb21wYXJlOkNDX05DVl9DSUMNCj4+ Pj4gKyAgICAgICAgICAgICAoY29uc3RfaW50IDApDQo+Pj4+ICsgICAgICAg ICAgICAgKHBsdXM6REkNCj4+Pj4gKyAgICAgICAgICAgICAgICh6ZXJvX2V4 dGVuZDpESSAobWF0Y2hfZHVwIDMpKQ0KPj4+PiArICAgICAgICAgICAgICAg KGx0dTpESSAocmVnOkNDX0MgQ0NfUkVHTlVNKSAoY29uc3RfaW50IDApKSkp KQ0KPj4+PiAgICAgICAgICAgICAoc2V0IChtYXRjaF9kdXAgMikNCj4+Pj4g ICAgICAgICAgICAgIChtaW51czpTSQ0KPj4+PiAgICAgICAgICAgICAgICht aW51czpTSSAoY29uc3RfaW50IDApIChtYXRjaF9kdXAgMykpDQo+Pj4+DQo+ Pj4+DQo+Pj4+IEkgd2FzIHNvbWV3aGF0IGNvbmNlcm5lZCB3aXRoIGhhdmlu ZyB0aGUgZmlyc3Qgb3BlcmFuZCBvZiB0aGUgQ09NUEFSRQ0KPj4+PiBiZWlu ZyBhIGNvbnN0X2ludCAwIGFuZCB0aGUgc2Vjb25kIGJlaW5nDQo+Pj4+IGEg Y29tcGxleCBleHByZXNzaW9uIGFzIHRoZSBSVEwgY2Fub25pY2FsaXphdGlv biBydWxlcyB1c3VhbGx5IHJlcXVpcmUNCj4+Pj4gdGhlIGNvbXBsZXggb3Bl cmFuZCBnb2luZyBmaXJzdCBpZiBwb3NzaWJsZS4NCj4+Pj4gUmVhZGluZyB0 aGUgUlRMIHJ1bGVzIGluIHJ0bC50ZXhpIEkgc2VlIGl0IHNheXMgdGhpczoN Cj4+Pj4gIklmIG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgYSBjb25zdGFudCwg aXQgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUNCj4+Pj4gc2Vjb25kIG9wZXJh bmQgYW5kIHRoZSBjb21wYXJpc29uIGNvZGUgYWRqdXN0ZWQgYXMgYXBwcm9w cmlhdGUuIg0KPj4+PiBTbyBpdCBzZWVtcyB0aGF0IHRoZSBwcmUtZXhpc3Rp bmcgcGF0dGVybiB0aGF0IHB1dHMgY29uc3RfaW50IDAgYXMgdGhlDQo+Pj4+ IGZpcnN0IG9wZXJhbmQgYWxyZWFkeSBicmVha3MgdGhhdCBydWxlLg0KPj4+ PiBJIHRoaW5rIHdlIHNob3VsZCBmaXggdGhhdCBhbmQgdXBkYXRlIHRoZSB1 c2Ugb2YgY29uZGl0aW9uIGNvZGUgdG8gYQ0KPj4+PiBHRVUgcmF0aGVyIHRo YW4gTFRVIGFzIHdlbGwuDQo+Pj4+DQo+Pj4NCj4+DQo+PiBXZWxsLCB0aGUg c2VudGVuY2UgYmVmb3JlIHRoYXQgb25lIGlzIGV2ZW4gbW9yZSBleHBsaWNp dDoNCj4+DQo+PiAiTm9ybWFsbHksIEB2YXJ7eH0gYW5kIEB2YXJ7eX0gbXVz dCBoYXZlIHRoZSBzYW1lIG1vZGUuICBPdGhlcndpc2UsDQo+PiBAY29kZXtj b21wYXJlfSBpcyB2YWxpZCBvbmx5IGlmIHRoZSBtb2RlIG9mIEB2YXJ7eH0g aXMgaW4gY2xhc3MNCj4+IEBjb2Rle01PREVfSU5UfSBhbmQgQHZhcnt5fSBp cyBhIEBjb2Rle2NvbnN0X2ludH0gb3INCj4+IEBjb2Rle2NvbnN0X2RvdWJs ZX0gd2l0aCBtb2RlIEBjb2Rle1ZPSURtb2RlfS4iDQo+Pg0KPj4gU28gYmVj YXVzZSB0aGUgY29uc3RfaW50IDAgaGFzIFZPSURtb2RlIHRoZSBjb21wYXJp c29uIGlzIGRvbmUNCj4+IGluIHktbW9kZSBub3QgeC1tb2RlLg0KPj4NCj4+ IEJ1dCB1bmZvcnR1bmF0ZWx5IEkgc2VlIG5vIHdheSBob3cgdG8gYWNjb21w bGlzaCB0aGlzLA0KPj4gYmVjYXVzZSB0aGlzIGFzc3VtZXMgdGhhdCB0aGUg Y29tcGFyZSBjYW4gYmUgZWFzaWx5IHN3YXBwZWQNCj4+IGlmIHRoZSBjb25k aXRpb25hbCBpbnN0cnVjdGlvbiBqdXN0IHVzZXMgb25lIG9mIEdUL0dFL0xF L0xUDQo+PiBvciBHVFUvR0VVL0xFVS9MVFUuICBCdXQgdGhhdCBpcyBvbmx5 IHRoZSBjYXNlIGZvciBwbGFpbiBDQ21vZGUuDQo+Pg0KPj4gQW5kIGluIHRo aXMgZXhhbXBsZSB3ZSBhc2sgZm9yICJvdmVyZmxvdyIsIGJ1dCB3aGlsZSAw LVggY2FuDQo+PiBvdmVyZmxvdyBYLTAgc2ltcGx5IGNhbid0LiAgQW5kIG1v cmVvdmVyIHRoZXJlIGFyZSBub24tc3ltbWV0cmljDQo+PiBtb2RlcyBsaWtl IENDX05DVm1vZGUgd2hpY2ggb25seSBzdXBwb3J0IExUL0dFL0xUVS9HRVUg YnV0IG5vdA0KPj4gdGhlIHN3YXBwZWQgY29uZGl0aW9ucyBHVC9MRS9HVFUv TEVVLg0KPj4NCj4+IEkgdGhpbmsgdGhlIG9ubHkgc29sdXRpb24gd291bGQg YmUgdG8gYWRqdXN0IHRoZSBzcGVjIHRvDQo+PiByZWZsZWN0IHRoZSBpbXBs ZW1lbnRhdGlvbjoNCj4+DQo+PiBJbmRleDogcnRsLnRleGkNCj4+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCj4+IC0tLSBydGwudGV4aQkocmV2aXNpb24g MjUxNzUyKQ0KPj4gKysrIHJ0bC50ZXhpCSh3b3JraW5nIGNvcHkpDQo+PiBA QCAtMjI1Miw2ICsyMjUyLDEzIEBADQo+PiAgICBJZiBvbmUgb2YgdGhlIG9w ZXJhbmRzIGlzIGEgY29uc3RhbnQsIGl0IHNob3VsZCBiZSBwbGFjZWQgaW4g dGhlDQo+PiAgICBzZWNvbmQgb3BlcmFuZCBhbmQgdGhlIGNvbXBhcmlzb24g Y29kZSBhZGp1c3RlZCBhcyBhcHByb3ByaWF0ZS4NCj4+DQo+PiArVGhlcmUg bWF5IGJlIGV4Y2VwdGlvbnMgZnJvbSB0aGlzIHJ1bGUgaWYgdGhlIG1vZGUg QHZhcnttfSBjYXJyaWVzDQo+PiArbm90IGVub3VnaCBpbmZvcm1hdGlvbiBm b3IgdGhlIHN3YXBwZWQgY29tcGFyaXNvbiBvcGVyYXRvciwgb3INCj4gDQo+ IFRoZXJlIG1heSBiZSBleGNlcHRpb25zIF90b18gLi4uIGlmIG1vZGUgQHZh cnttfSBkb2VzIG5vdCBjYXJyeSBlbm91Z2guLi4NCj4gDQo+PiAraWYgd2Ug YXNrIGZvciBvdmVyZmxvdyBmcm9tIHRoZSBzdWJ0cmFjdGlvbi4NCj4gDQo+ IEFyZW4ndCB3ZSByZWFsbHkgdHJ5aW5nIHRvICdkZXRlY3Qgb3ZlcmZsb3cn IHJhdGhlciB0aGFuICdhc2snIGZvciBpdD8NCj4gDQoNClllcyA6LSksIG9m IGNvdXJzZTogaXQgaXMgdXNlZCB0aGlzIHdheSBpbiBhIHBhdHRlcm4gdGhh dCBkb2VzDQphIG5lZ2F0aW9uIGFuZCBhIGNvbmRpdGlvbmFsIGJyYW5jaCBp ZiBhIG92ZXJmbG93IGlzIGRldGVjdGVkOg0KDQogICAgZW1pdF9pbnNuIChn ZW5fbmVnZGkyX2NvbXBhcmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkp Ow0KICAgIGFybV9nZW5fdW5saWtlbHlfY2JyYW5jaCAoTkUsIENDX1Ztb2Rl LCBvcGVyYW5kc1syXSk7DQoNCg0KDQo+PiBUaGF0IG1lYW5zLCB3aGlsZQ0K Pj4gKzAtWCBtYXkgb3ZlcmZvdyBYLTAgY2FuIG5ldmVyIG92ZXJmbG93LiAg VW5kZXIgdGhlc2UgY29uZGl0aW9ucw0KPj4gK2EgY29tcGFyZSBtYXkgaGF2 ZSB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbiBhdCB0aGUgbGVmdCBzaWRlLg0K PiANCj4gSW4gdGhlc2UgY2lyY3Vtc3RhbmNlcyB0aGUgY29uc3RhbnQgd2ls bCBiZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCAuDQo+IA0KPiAobGVmdCBhbmQg cmlnaHQgZG9uJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgZm9yIFJUTCkuDQoNClll cywgdGhhbmtzLiAgQ29ycmVjdGVkIHBhcmFncmFwaCBiZWxvdzoNCg0KSW5k ZXg6IHJ0bC50ZXhpDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gcnRs LnRleGkJKFJldmlzaW9uIDI1MTc1MikNCisrKyBydGwudGV4aQkoQXJiZWl0 c2tvcGllKQ0KQEAgLTIyNTIsNiArMjI1MiwxMyBAQA0KICBJZiBvbmUgb2Yg dGhlIG9wZXJhbmRzIGlzIGEgY29uc3RhbnQsIGl0IHNob3VsZCBiZSBwbGFj ZWQgaW4gdGhlDQogIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgY29tcGFyaXNv biBjb2RlIGFkanVzdGVkIGFzIGFwcHJvcHJpYXRlLg0KDQorVGhlcmUgbWF5 IGJlIGV4Y2VwdGlvbnMgZnJvbSB0aGlzIHJ1bGUgaWYgdGhlIG1vZGUgQHZh cnttfSBjYXJyaWVzDQorbm90IGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgdGhl IHN3YXBwZWQgY29tcGFyaXNvbiBvcGVyYXRvciwgb3INCitpZiB3ZSB0cnkg dG8gZGV0ZWN0IG92ZXJmbG93IGZyb20gdGhlIHN1YnRyYWN0aW9uLiAgVGhh dCBtZWFucywgd2hpbGUNCiswLVggbWF5IG92ZXJmb3cgWC0wIGNhbiBuZXZl ciBvdmVyZmxvdy4gIFVuZGVyIHRoZXNlIGNvbmRpdGlvbnMNCithIGNvbXBh cmUgbWF5IGhhdmUgdGhlIGNvbnN0YW50IGV4cHJlc3Npb24gYXQgdGhlIGZp cnN0IG9wZXJhbmQuDQorRXhhbXBsZXMgYXJlIHRoZSBBUk0gbmVnZGkyX2Nv bXBhcmUgcGF0dGVybiBhbmQgc2ltaWxhci4NCisNCiAgQSBAY29kZXtjb21w YXJlfSBzcGVjaWZ5aW5nIHR3byBAY29kZXtWT0lEbW9kZX0gY29uc3RhbnRz IGlzIG5vdCB2YWxpZA0KICBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25v dyBpbiB3aGF0IG1vZGUgdGhlIGNvbXBhcmlzb24gaXMgdG8gYmUNCiAgcGVy Zm9ybWVkOyB0aGUgY29tcGFyaXNvbiBtdXN0IGVpdGhlciBiZSBmb2xkZWQg ZHVyaW5nIHRoZSBjb21waWxhdGlvbg0KDQoNCj4+ICtFeGFtcGxlcyBhcmUg dGhlIEFSTSBuZWdkaTJfY29tcGFyZSBwYXR0ZXJuIGFuZCBzaW1pbGFyLg0K Pj4gKw0KPj4gICAgQSBAY29kZXtjb21wYXJlfSBzcGVjaWZ5aW5nIHR3byBA Y29kZXtWT0lEbW9kZX0gY29uc3RhbnRzIGlzIG5vdCB2YWxpZA0KPj4gICAg c2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgaW4gd2hhdCBtb2RlIHRo ZSBjb21wYXJpc29uIGlzIHRvIGJlDQo+PiAgICBwZXJmb3JtZWQ7IHRoZSBj b21wYXJpc29uIG11c3QgZWl0aGVyIGJlIGZvbGRlZCBkdXJpbmcgdGhlIGNv bXBpbGF0aW9uDQo+Pg0KPj4NCj4+DQo+PiBQbGVhc2UgYWR2aXNlLg0KPj4N Cj4+IFRoYW5rcw0KPj4gQmVybmQuDQo+Pg0KPj4NCj4+Pg0KPj4+IEhtbW0u Li4NCj4+Pg0KPj4+IEkgdGhpbmsgdGhlIGNvbXBhcmUgaXMgbm90IGEgY29t bXV0YXRpdmUgb3BlcmF0aW9uLCBhbmQgc3dhcHBpbmcNCj4+PiB0aGUgYXJn dW1lbnRzIHdpbGwgaW1wbHkgYSBkaWZmZXJlbnQgdmFsdWUgaW4gdGhlIGZs YWdzLg0KPj4+DQo+Pj4gU28gaWYgSSB3cml0ZQ0KPj4+IChzZXQgKHJlZzpD Q19OQ1YgQ0NfUkVHTlVNKQ0KPj4+ICAgICAgICAoY29tcGFyZTpDQ19OQ1YN Cj4+PiAgICAgICAgICAoY29uc3RfaW50IDApDQo+Pj4gICAgICAgICAgKHJl ZzpESSAxMjMpKSkNCj4+Pg0KPj4+IEkgaGF2ZSBDLE4sViBzZXQgdG8gdGhl IHJlc3VsdCBvZiAoMCAtIHIxMjMpLCBDID0gdXNhYmxlIGZvciBMVFUgb3Ig R0VVLA0KPj4+IE4sViA9IHVzYWJsZSBmb3IgTFQsIEdFDQo+Pj4NCj4+PiBC dXQgaWYgSSB3cml0ZQ0KPj4+IChzZXQgKHJlZzpDQ19OQ1YgQ0NfUkVHTlVN KQ0KPj4+ICAgICAgICAoY29tcGFyZTpDQ19OQ1YNCj4+PiAgICAgICAgICAo cmVnOkRJIDEyMykNCj4+PiAgICAgICAgICAoY29uc3RfaW50IDApKSkNCj4+ Pg0KPj4+IEkgaGF2ZSBDLE4sViBzZXQgdG8gdGhlIHJlc3VsdCBvZiAocjEy MyAtIDApLCBidXQgdGhlIGV4cGFuc2lvbiBzdGF5cw0KPj4+IHRoZSBzYW1l IGFuZCB0aGUgYWN0dWFsIHZhbHVlIGluIHRoZSBmbGFncyBpcyBkZWZpbmVk IGJ5IHRoZSBleHBhbnNpb24uDQo+Pj4gT2YgY291cnNlIHRoZXJlIGV4aXN0 cyBwcm9iYWJseSBubyBtYXRjaGluZyBleHBhbnNpb24gZm9yIHRoYXQuDQo+ Pj4NCj4+PiBOb3RlIHRoYXQgYm90aCBMVFUgaW4gdGhlIGFib3ZlIGh1bmsg YXJlIGluIGEgcGFyYWxsZWwtc3RtdCBhbmQgb3BlcmF0ZQ0KPj4+IG9uIHRo ZSBmbGFncyBmcm9tIHRoZSBwcmV2aW91cyBwYXR0ZXJuLCBzbyBjaGFuZ2lu ZyB0aGVzZSB0byBHRVUNCj4+PiB3aWxsIHByb2JhYmx5IGJlIHdyb25nLg0K Pj4+DQo+Pj4gQm90aCAobHR1OlNJIChyZWc6Q0NfQyBDQ19SRUdOVU0pIChj b25zdF9pbnQgMCkpIGluIHRoZSBuZWdkaTJfY29tcGFyZQ0KPj4+IHVzZSB0 aGUgZmxhZ3MgZnJvbSB0aGUgcHJldmlvdXMgKHNldCAocmVnOkNDIENDX1JF R05VTSkgKGNvbXBhcmU6Q0MNCj4+PiAoY29uc3RfaW50IDApIChtYXRjaF9k dXAgMSkpLg0KPj4+DQo+Pj4gT25lIHVzZSBvZiB0aGUgcmVzdWx0aW5nIGZs YWdzIChJIGtub3cgb2YpIGlzIGluIG5lZ3ZkaTMgd2hlcmUgd2UNCj4+PiBo YXZlOg0KPj4+DQo+Pj4gICAgIGVtaXRfaW5zbiAoZ2VuX25lZ2RpMl9jb21w YXJlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKTsNCj4+PiAgICAgYXJt X2dlbl91bmxpa2VseV9jYnJhbmNoIChORSwgQ0NfVm1vZGUsIG9wZXJhbmRz WzJdKTsNCj4+Pg0KPj4+IEkgdGhpbmsgb25seSAwLXggY2FuIG92ZXJmbG93 IHdoaWxlIHgtMCBjYW4gbmV2ZXIgb3ZlcmZsb3cuDQo+Pj4NCj4+PiBPZiBj b3Vyc2UgdGhlIENDX05DVl9DSUMgbW9kZSBiZW5kcyB0aGUgZGVmaW5pdGlv biBvZiB0aGUgUlRMIGNvbXBhcmUNCj4+PiBhIGxvdCBhbmQgSSBndWVzcyBp ZiB0aGlzIHBhdHRlcm4gaXMgY3JlYXRlZCBieSBhIHNwbGl0dGVyLCB0aGlz IGNhbg0KPj4+IG9ubHkgYmUgZXhwYW5kZWQgYnkgYW4gZXhhY3RseSBtYXRj aGluZyBwYXR0ZXJuLCB0aGVyZSBpcyAoaG9wZWZ1bGx5KQ0KPj4+IG5vIHdh eSBob3cgY29tYmluZSBjb3VsZCBtZXNzIHdpdGggdGhpcyBwYXR0ZXJuIGR1 ZSB0byB0aGUgZXhvdGljDQo+Pj4gQ0Ntb2RlLiAgU28gd2hpbGUgSSB0aGlu ayBpdCB3b3VsZCB3b3JrIHRvIHN3YXAgb25seSB0aGUgbm90YXRpb24gb2YN Cj4+PiBhbGwgQ0NfTkNWX0NJQyBwYXR0ZXJucywgX3dpdGhvdXRfIGNoYW5n aW5nIHRoZSBhc3NlbWJsZXItcGFydHMgYW5kIHRoZQ0KPj4+IGNvbnN1bWlu ZyBzdGF0ZW1lbnRzLCB0aGF0IHdvdWxkIG1ha2UgaXQgcXVpdGUgaGFyZCB0 byBmb2xsb3cgZm9yIHRoZQ0KPj4+IGh1bWFuIHJlYWRlciBhdCBsZWFzdC4N Cj4+Pg0KPj4+IFdoYXQgZG8geW91IHRoaW5rPw0KPj4+DQo+Pj4NCj4+PiBC ZXJuZC4NCj4gDQo=