From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C079821E1B76C for ; Thu, 21 Sep 2017 19:23:27 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP; 21 Sep 2017 19:26:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,426,1500966000"; d="scan'208";a="1222180287" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga002.fm.intel.com with ESMTP; 21 Sep 2017 19:26:34 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Sep 2017 19:26:34 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Sep 2017 19:26:33 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.98]) with mapi id 14.03.0319.002; Fri, 22 Sep 2017 10:26:31 +0800 From: "Zeng, Star" To: Paulo Alcantara , "Wu, Hao A" , "edk2-devel@lists.01.org" CC: "Ni, Ruiyu" , Laszlo Ersek , "Dong, Eric" , "Zeng, Star" Thread-Topic: [edk2] [PATCH v3 2/2] MdeModulePkg/PartitionDxe: Fix creation of UDF logical partition Thread-Index: AQHTMjzuu1ffEG1kO0y3Wi7N1aYjeKK+xA0AgAAMm4CAAIrvgP//e6EAgAAGpgCAAVBXEA== Date: Fri, 22 Sep 2017 02:26:30 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B9787BF@shsmsx102.ccr.corp.intel.com> References: <33171F84-A619-43B3-B9A8-0EC2CA8BA110@zytor.com> <0C09AFA07DD0434D9E2A0C6AEB0483103B97756A@shsmsx102.ccr.corp.intel.com> <7CD2E165-74AE-4E76-A686-BA8CE17720DE@zytor.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v3 2/2] MdeModulePkg/PartitionDxe: Fix creation of UDF logical partition X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Sep 2017 02:23:28 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T2ssIEkgd2lsbCBnbyB0byBoZWxwIHB1c2ggdGhlIHBhdGNoIHNlcmllcyBpZiBSYXkgaGFzIG5v IGFueSBjb21tZW50cy4NCg0KVGhhbmtzLA0KU3Rhcg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IFBhdWxvIEFsY2FudGFyYSBbbWFpbHRvOnBjYWNqckBnbWFpbC5jb21dIA0KU2Vu dDogVGh1cnNkYXksIFNlcHRlbWJlciAyMSwgMjAxNyAxMDoxNyBQTQ0KVG86IFplbmcsIFN0YXIg PHN0YXIuemVuZ0BpbnRlbC5jb20+OyBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT47IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnDQpDYzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+ OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25n QGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIHYzIDIvMl0gTWRlTW9kdWxl UGtnL1BhcnRpdGlvbkR4ZTogRml4IGNyZWF0aW9uIG9mIFVERiBsb2dpY2FsIHBhcnRpdGlvbg0K DQpPbiBUaHUsIFNlcCAyMSwgMjAxNyBhdCAxMDo1MiBBTSwgUGF1bG8gQWxjYW50YXJhIDxwY2Fj anJAenl0b3IuY29tPiB3cm90ZToNCj4NCj4NCj4gT24gU2VwdGVtYmVyIDIxLCAyMDE3IDEwOjQ3 OjA3IEFNIEdNVC0wMzowMCwgIlplbmcsIFN0YXIiIDxzdGFyLnplbmdAaW50ZWwuY29tPiB3cm90 ZToNCj4+RG9lcyBpdCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0Pw0KPg0KPiBOb3BlLiBXaGVuIFBh cnRpdGlvbiBkcml2ZXIgd2Fsa3MgdGhlIHBhcnRpdGlvbiBkZXRlY3Qgcm91dGluZSB0YWJsZSwg aXQgZXhlY3V0ZXMgZWFjaCByb3V0aW5lIGFuZCB0aGVuIGNoZWNrcyBmb3IgRUZJX05PX01FRElB IGFuZCBFRklfTUVESUFfQ0hBTkdFRCBvbmx5LiBTbywgdGhlIGNoaWxkIGhhbmRsZSBpcyBpbnN0 YWxsZWQgYW5kIHRoZSBFRklfTk9UX0ZPVU5EIGlzIGEgbm8tb3AgaW4gdGhhdCBjYXNlLg0KDQpC VFcsIEkgcGVyZm9ybWVkIGEgcXVpY2sgdGVzdCB3aXRoIFVkZkR4ZSBlbmFibGVkIGFuZCBkaXNh YmxlZCBpbiBPVk1GIGFuZCB0aGUgcmVtb3ZhbCBkaWQgbm90IHNlZW0gdG8gYnJlYWsgb3IgY2hh bmdlIGFueSBiZWhhdmlvci4NCg0KVGhhbmtzIQ0KUGF1bG8NCg0KPg0KPiBUaGFua3MhDQo+IFBh dWxvDQo+DQo+Pg0KPj5UaGFua3MsDQo+PlN0YXINCj4+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4+RnJvbTogUGF1bG8gQWxjYW50YXJhIFttYWlsdG86cGNhY2pyQHp5dG9yLmNvbV0NCj4+ U2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMSwgMjAxNyA5OjI5IFBNDQo+PlRvOiBXdSwgSGFv IEEgPGhhby5hLnd1QGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+PkNjOiBO aSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhh dC5jb20+OyANCj4+RG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IFplbmcsIFN0YXIg PHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+PlN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIHYzIDIv Ml0gTWRlTW9kdWxlUGtnL1BhcnRpdGlvbkR4ZTogRml4IA0KPj5jcmVhdGlvbiBvZiBVREYgbG9n aWNhbCBwYXJ0aXRpb24NCj4+DQo+Pg0KPj4NCj4+T24gU2VwdGVtYmVyIDIxLCAyMDE3IDk6NDQ6 MTAgQU0gR01ULTAzOjAwLCAiV3UsIEhhbyBBIg0KPj48aGFvLmEud3VAaW50ZWwuY29tPiB3cm90 ZToNCj4+Pk9uZSBzbWFsbCBjb21tZW50LCB3aXRoaW4gZnVuY3Rpb24gUGFydGl0aW9uSW5zdGFs bFVkZkNoaWxkSGFuZGxlcygpOg0KPj4+DQo+Pj4gIC4uLg0KPj4+ICAvLw0KPj4+ICAvLyBJbnN0 YWxsIHBhcnRpdGlvbiBjaGlsZCBoYW5kbGUgZm9yIFVERiBmaWxlIHN5c3RlbQ0KPj4+ICAvLw0K Pj4+ICBTdGF0dXMgPSBQYXJ0aXRpb25JbnN0YWxsQ2hpbGRIYW5kbGUgKA0KPj4+ICAgIC4uLg0K Pj4+ICAgICk7DQo+Pj5pZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgeyAgPC0tLS0tIElzIHRoaXMg YSB0eXBvPyAiaWYgKEVGSV9FUlJPUg0KPj4+KFN0YXR1cykpIHsiDQo+Pj4gICAgU3RhdHVzID0g RUZJX05PVF9GT1VORDsNCj4+PiAgfQ0KPj4NCj4+WWVzLCBpdCBpcy4gR29vZCBjYXRjaCEgQ291 bGQgeW91IHBsZWFzZSBmaXggdGhhdCBmb3IgbWUgYnkgcmVtb3ZpbmcgDQo+PnRoZSBpZiBjb25k aXRpb24/IE90aGVyd2lzZSBJIGNhbiBzZW5kIGEgdjQgbGF0ZXIgd2l0aCB0aGF0Lg0KPj4NCj4+ VGhhbmtzIQ0KPj5QYXVsbw0KPj4NCj4+Pg0KPj4+DQo+Pj5CZXN0IFJlZ2FyZHMsDQo+Pj5IYW8g V3UNCj4+Pg0KPj4+DQo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4+IEZyb206 IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBC ZWhhbGYNCj4+Pk9mIFBhdWxvDQo+Pj4+IEFsY2FudGFyYQ0KPj4+PiBTZW50OiBUaHVyc2RheSwg U2VwdGVtYmVyIDIxLCAyMDE3IDI6MTYgQU0NCj4+Pj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEu b3JnDQo+Pj4+IENjOiBOaSwgUnVpeXU7IExhc3psbyBFcnNlazsgRG9uZywgRXJpYzsgWmVuZywg U3Rhcg0KPj4+PiBTdWJqZWN0OiBbZWRrMl0gW1BBVENIIHYzIDIvMl0gTWRlTW9kdWxlUGtnL1Bh cnRpdGlvbkR4ZTogRml4DQo+Pj5jcmVhdGlvbiBvZg0KPj4+PiBVREYgbG9naWNhbCBwYXJ0aXRp b24NCj4+Pj4NCj4+Pj4gRG8gbm90IHJlc2VydmUgZW50aXJlIGJsb2NrIGRldmljZSBzaXplIGZv ciBhbiBVREYgZmlsZSBzeXN0ZW0gLSANCj4+Pj4gaW5zdGVhZCwgcmVzZXJ2ZSB0aGUgYXBwcm9w cmlhdGUgc3BhY2UgKFVERiBsb2dpY2FsIHZvbHVtZSBzcGFjZSkNCj4+Zm9yDQo+Pj4+IGl0Lg0K Pj4+Pg0KPj4+PiBBZGRpdGlvbmFsbHksIG9ubHkgY3JlYXRlIGEgbG9naWNhbCBwYXJ0aXRpb24g Zm9yIFVERiBsb2dpY2FsDQo+PnZvbHVtZXMNCj4+Pj4gdGhhdCBhcmUgY3VycmVudGx5IHN1cHBv cnRlZCBieSBFREsyIFVERiBmaWxlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbi4NCj4+PkZvcg0KPj4+ PiBpbnN0YW5jZSwgYW4gVURGIHZvbHVtZSB3aXRoIGEgc2luZ2xlIExWRCBhbmQgYSBzaW5nbGUg UGh5c2ljYWwNCj4+KFR5cGUNCj4+PjEpDQo+Pj4+IFBhcnRpdGlvbiB3aWxsIGJlIHN1cHBvcnRl ZC4NCj4+Pj4NCj4+Pj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4+Pj4g Q2M6IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRlbC5jb20+DQo+Pj4+IENjOiBTdGFyIFplbmcgPHN0 YXIuemVuZ0BpbnRlbC5jb20+DQo+Pj4+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQu Y29tPg0KPj4+PiBSZXBvcnRlZC1ieTogUnVpeXUgTmkgPHJ1aXl1Lm5pQGludGVsLmNvbT4NCj4+ Pj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEu MQ0KPj4+PiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBBbGNhbnRhcmEgPHBjYWNqckB6eXRvci5jb20+ DQo+Pj4+IC0tLQ0KPj4+PiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4 ZS9VZGYuYyAgICAgICAgICAgIHwgMzYzDQo+Pj4rKysrKysrKysrLS0NCj4+Pj4gIE1kZU1vZHVs ZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvRmlsZS5jICAgICAgICAgICAgICAgICB8ICAxNiAr LQ0KPj4+PiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4ZS9GaWxlU3lzdGVtT3Bl cmF0aW9ucy5jIHwgNjI3DQo+Pj4+ICsrKysrKysrLS0tLS0tLS0tLS0tDQo+Pj4+ICBNZGVNb2R1 bGVQa2cvVW5pdmVyc2FsL0Rpc2svVWRmRHhlL1VkZi5jICAgICAgICAgICAgICAgICAgfCAgIDcg LQ0KPj4+PiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4ZS9VZGYuaCAgICAgICAg ICAgICAgICAgIHwgMTU4DQo+Pj4rKy0tLQ0KPj4+PiAgNSBmaWxlcyBjaGFuZ2VkLCA2MDYgaW5z ZXJ0aW9ucygrKSwgNTY1IGRlbGV0aW9ucygtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9VZGYuYw0KPj4+PiBiL01kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9QYXJ0aXRpb25EeGUvVWRmLmMNCj4+Pj4gaW5kZXggNjA5 ZjU2Y2VmNi4uNTcyYmE3YTgxYSAxMDA2NDQNCj4+Pj4gLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9VZGYuYw0KPj4+PiArKysgYi9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1VkZi5jDQo+Pj4+IEBAIC02NCwxMSArNjQsMTIgQEAg RmluZEFuY2hvclZvbHVtZURlc2NyaXB0b3JQb2ludGVyICgNCj4+Pj4gICAgT1VUICBVREZfQU5D SE9SX1ZPTFVNRV9ERVNDUklQVE9SX1BPSU5URVIgICpBbmNob3JQb2ludA0KPj4+PiAgICApDQo+ Pj4+ICB7DQo+Pj4+IC0gIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4+Pj4gLSAgVUlOVDMyICAgICAg QmxvY2tTaXplOw0KPj4+PiAtICBFRklfTEJBICAgICBFbmRMQkE7DQo+Pj4+IC0gIEVGSV9MQkEg ICAgIERlc2NyaXB0b3JMQkFzWzRdOw0KPj4+PiAtICBVSU5UTiAgICAgICBJbmRleDsNCj4+Pj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgQmxvY2tTaXplOw0KPj4+PiArICBFRklfTEJBICAgICAgICAgICAgIEVuZExCQTsNCj4+Pj4g KyAgRUZJX0xCQSAgICAgICAgICAgICBEZXNjcmlwdG9yTEJBc1s0XTsNCj4+Pj4gKyAgVUlOVE4g ICAgICAgICAgICAgICBJbmRleDsNCj4+Pj4gKyAgVURGX0RFU0NSSVBUT1JfVEFHICAqRGVzY3Jp cHRvclRhZzsNCj4+Pj4NCj4+Pj4gICAgQmxvY2tTaXplID0gQmxvY2tJby0+TWVkaWEtPkJsb2Nr U2l6ZTsNCj4+Pj4gICAgRW5kTEJBID0gQmxvY2tJby0+TWVkaWEtPkxhc3RCbG9jazsgQEAgLTg4 LDEwICs4OSwxMyBAQCANCj4+Pj4gRmluZEFuY2hvclZvbHVtZURlc2NyaXB0b3JQb2ludGVyICgN Cj4+Pj4gICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+Pj4+ICAgICAgICByZXR1cm4g U3RhdHVzOw0KPj4+PiAgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgIERlc2NyaXB0b3JUYWcgPSAm QW5jaG9yUG9pbnQtPkRlc2NyaXB0b3JUYWc7DQo+Pj4+ICsNCj4+Pj4gICAgICAvLw0KPj4+PiAg ICAgIC8vIENoZWNrIGlmIHJlYWQgTEJBIGhhcyBhIHZhbGlkIEFWRFAgZGVzY3JpcHRvci4NCj4+ Pj4gICAgICAvLw0KPj4+PiAtICAgIGlmIChJU19BVkRQIChBbmNob3JQb2ludCkpIHsNCj4+Pj4g KyAgICBpZiAoRGVzY3JpcHRvclRhZy0+VGFnSWRlbnRpZmllciA9PQ0KPj4+VWRmQW5jaG9yVm9s dW1lRGVzY3JpcHRvclBvaW50ZXIpIHsNCj4+Pj4gICAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4+Pj4gICAgICB9DQo+Pj4+ICAgIH0NCj4+Pj4gQEAgLTEwMiwyMyArMTA2LDE4IEBAIEZpbmRB bmNob3JWb2x1bWVEZXNjcmlwdG9yUG9pbnRlciAoICB9DQo+Pj4+DQo+Pj4+ICAvKioNCj4+Pj4g LSAgQ2hlY2sgaWYgYmxvY2sgZGV2aWNlIHN1cHBvcnRzIGEgdmFsaWQgVURGIGZpbGUgc3lzdGVt IGFzDQo+Pj5zcGVjaWZpZWQgYnkgT1NUQQ0KPj4+PiAtICBVbml2ZXJzYWwgRGlzayBGb3JtYXQg U3BlY2lmaWNhdGlvbiAyLjYwLg0KPj4+PiArICBGaW5kIFVERiB2b2x1bWUgaWRlbnRpZmllcnMg aW4gYSBWb2x1bWUgUmVjb2duaXRpb24gU2VxdWVuY2UuDQo+Pj4+DQo+Pj4+IC0gIEBwYXJhbVtp bl0gICBCbG9ja0lvICBCbG9ja0lvIGludGVyZmFjZS4NCj4+Pj4gLSAgQHBhcmFtW2luXSAgIERp c2tJbyAgIERpc2tJbyBpbnRlcmZhY2UuDQo+Pj4+ICsgIEBwYXJhbVtpbl0gIEJsb2NrSW8gICAg ICAgICAgICAgQmxvY2tJbyBpbnRlcmZhY2UuDQo+Pj4+ICsgIEBwYXJhbVtpbl0gIERpc2tJbyAg ICAgICAgICAgICAgRGlza0lvIGludGVyZmFjZS4NCj4+Pj4NCj4+Pj4gLSAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICBVREYgZmlsZSBzeXN0ZW0gZm91bmQuDQo+Pj4+IC0gIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgVURGIGZpbGUgc3lzdGVtIG5vdCBmb3VuZC4NCj4+Pj4gLSAg QHJldHZhbCBFRklfTk9fTUVESUEgICAgICAgICBUaGUgZGV2aWNlIGhhcyBubyBtZWRpYS4NCj4+ Pj4gLSAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICBUaGUgZGV2aWNlIHJlcG9ydGVkIGFu IGVycm9yLg0KPj4+PiAtICBAcmV0dmFsIEVGSV9WT0xVTUVfQ09SUlVQVEVEIFRoZSBmaWxlIHN5 c3RlbSBzdHJ1Y3R1cmVzIGFyZQ0KPj4+Y29ycnVwdGVkLg0KPj4+PiAtICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTIFRoZSBzY2FuIHdhcyBub3Qgc3VjY2Vzc2Z1bCBkdWUgdG8NCj4+Pmxh Y2sgb2YNCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuDQo+ Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVURGIHZvbHVtZSBpZGVudGlm aWVycyB3ZXJlDQo+PmZvdW5kLg0KPj4+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAg ICAgIFVERiB2b2x1bWUgaWRlbnRpZmllcnMgd2VyZSBub3QNCj4+PmZvdW5kLg0KPj4+PiArICBA cmV0dmFsIG90aGVyICAgICAgICAgICAgICAgICAgIEZhaWxlZCB0byBwZXJmb3JtIGRpc2sgSS9P Lg0KPj4+Pg0KPj4+PiAgKiovDQo+Pj4+ICBFRklfU1RBVFVTDQo+Pj4+IC1TdXBwb3J0VWRmRmls ZVN5c3RlbSAoDQo+Pj4+ICtGaW5kVWRmVm9sdW1lSWRlbnRpZmllcnMgKA0KPj4+PiAgICBJTiBF RklfQkxPQ0tfSU9fUFJPVE9DT0wgICpCbG9ja0lvLA0KPj4+PiAgICBJTiBFRklfRElTS19JT19Q Uk9UT0NPTCAgICpEaXNrSW8NCj4+Pj4gICAgKQ0KPj4+PiBAQCAtMTI4LDcgKzEyNyw2IEBAIFN1 cHBvcnRVZGZGaWxlU3lzdGVtICgNCj4+Pj4gICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFbmREaXNrT2Zmc2V0Ow0KPj4+PiAgICBDRFJPTV9WT0xVTUVfREVTQ1JJUFRP UiAgICAgICAgICAgICAgIFZvbERlc2NyaXB0b3I7DQo+Pj4+ICAgIENEUk9NX1ZPTFVNRV9ERVND UklQVE9SICAgICAgICAgICAgICAgVGVybWluYXRpbmdWb2xEZXNjcmlwdG9yOw0KPj4+PiAtICBV REZfQU5DSE9SX1ZPTFVNRV9ERVNDUklQVE9SX1BPSU5URVIgIEFuY2hvclBvaW50Ow0KPj4+Pg0K Pj4+PiAgICBaZXJvTWVtICgoVk9JRCAqKSZUZXJtaW5hdGluZ1ZvbERlc2NyaXB0b3IsIHNpemVv ZiANCj4+Pj4gKENEUk9NX1ZPTFVNRV9ERVNDUklQVE9SKSk7DQo+Pj4+DQo+Pj4+IEBAIC0xNjcs NyArMTY1LDcgQEAgU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKA0KPj4+PiAgICAgICAgICAoQ29tcGFy ZU1lbSAoKFZPSUQgKikmVm9sRGVzY3JpcHRvciwNCj4+Pj4gICAgICAgICAgICAgICAgICAgICAg IChWT0lEICopJlRlcm1pbmF0aW5nVm9sRGVzY3JpcHRvciwNCj4+Pj4gICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZiAoQ0RST01fVk9MVU1FX0RFU0NSSVBUT1IpKSA9PSAwKSkgew0KPj4+PiAt ICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAgICAgIHJldHVybiBFRklfTk9U X0ZPVU5EOw0KPj4+PiAgICAgIH0NCj4+Pj4gICAgfQ0KPj4+Pg0KPj4+PiBAQCAtMTc2LDcgKzE3 NCw3IEBAIFN1cHBvcnRVZGZGaWxlU3lzdGVtICgNCj4+Pj4gICAgLy8NCj4+Pj4gICAgT2Zmc2V0 ICs9IFVERl9MT0dJQ0FMX1NFQ1RPUl9TSVpFOw0KPj4+PiAgICBpZiAoT2Zmc2V0ID49IEVuZERp c2tPZmZzZXQpIHsNCj4+Pj4gLSAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPj4+PiArICAg IHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPj4+PiAgICB9DQo+Pj4+DQo+Pj4+ICAgIFN0YXR1cyA9 IERpc2tJby0+UmVhZERpc2sgKA0KPj4+PiBAQCAtMTk2LDcgKzE5NCw3IEBAIFN1cHBvcnRVZGZG aWxlU3lzdGVtICgNCj4+Pj4gICAgICAgIChDb21wYXJlTWVtICgoVk9JRCAqKVZvbERlc2NyaXB0 b3IuVW5rbm93bi5JZCwNCj4+Pj4gICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKVVERl9OU1Iz X0lERU5USUZJRVIsDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChWb2xEZXNjcmlw dG9yLlVua25vd24uSWQpKSAhPSAwKSkgew0KPj4+PiAtICAgIHJldHVybiBFRklfVU5TVVBQT1JU RUQ7DQo+Pj4+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+Pj4+ICAgIH0NCj4+Pj4NCj4+ Pj4gICAgLy8NCj4+Pj4gQEAgLTIwNCw3ICsyMDIsNyBAQCBTdXBwb3J0VWRmRmlsZVN5c3RlbSAo DQo+Pj4+ICAgIC8vDQo+Pj4+ICAgIE9mZnNldCArPSBVREZfTE9HSUNBTF9TRUNUT1JfU0laRTsN Cj4+Pj4gICAgaWYgKE9mZnNldCA+PSBFbmREaXNrT2Zmc2V0KSB7DQo+Pj4+IC0gICAgcmV0dXJu IEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4+Pj4g ICAgfQ0KPj4+Pg0KPj4+PiAgICBTdGF0dXMgPSBEaXNrSW8tPlJlYWREaXNrICgNCj4+Pj4gQEAg LTIyMSwxNSArMjE5LDI5MSBAQCBTdXBwb3J0VWRmRmlsZVN5c3RlbSAoDQo+Pj4+ICAgIGlmIChD b21wYXJlTWVtICgoVk9JRCAqKVZvbERlc2NyaXB0b3IuVW5rbm93bi5JZCwNCj4+Pj4gICAgICAg ICAgICAgICAgICAgIChWT0lEICopVURGX1RFQV9JREVOVElGSUVSLA0KPj4+PiAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mIChWb2xEZXNjcmlwdG9yLlVua25vd24uSWQpKSAhPSAwKSB7DQo+Pj4+ IC0gICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAgICByZXR1cm4gRUZJX05PVF9G T1VORDsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+ Pj4gK30NCj4+Pj4gKw0KPj4+PiArLyoqDQo+Pj4+ICsgIENoZWNrIGlmIExvZ2ljYWwgVm9sdW1l IERlc2NyaXB0b3IgaXMgc3VwcG9ydGVkIGJ5IGN1cnJlbnQgRURLMg0KPj4+VURGIGZpbGUNCj4+ Pj4gKyAgc3lzdGVtIGltcGxlbWVudGF0aW9uLg0KPj4+PiArDQo+Pj4+ICsgIEBwYXJhbVtpbl0g IExvZ2ljYWxWb2xEZXNjICBMb2dpY2FsIFZvbHVtZSBEZXNjcmlwdG9yIHBvaW50ZXIuDQo+Pj4+ ICsNCj4+Pj4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgICAgICAgIExvZ2ljYWwgVm9sdW1lIERl c2NyaXB0b3IgaXMNCj4+PnN1cHBvcnRlZC4NCj4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAg ICAgICAgIExvZ2ljYWwgVm9sdW1lIERlc2NyaXB0b3IgaXMgbm90DQo+Pj5zdXBwb3J0ZWQuDQo+ Pj4+ICsNCj4+Pj4gKyoqLw0KPj4+PiArQk9PTEVBTg0KPj4+PiArSXNMb2dpY2FsVm9sdW1lRGVz Y3JpcHRvclN1cHBvcnRlZCAoDQo+Pj4+ICsgIFVERl9MT0dJQ0FMX1ZPTFVNRV9ERVNDUklQVE9S ICpMb2dpY2FsVm9sRGVzYw0KPj4+PiArICApDQo+Pj4+ICt7DQo+Pj4+ICsgIC8vDQo+Pj4+ICsg IC8vIENoZWNrIGZvciBhIHZhbGlkIFVERiByZXZpc2lvbiByYW5nZQ0KPj4+PiArICAvLw0KPj4+ PiArICBzd2l0Y2ggKFVERl9MVkRfUkVWSVNJT04gKExvZ2ljYWxWb2xEZXNjKSkgew0KPj4+PiAr ICBjYXNlIDB4MDEwMjoNCj4+Pj4gKyAgY2FzZSAweDAxNTA6DQo+Pj4+ICsgIGNhc2UgMHgwMjAw Og0KPj4+PiArICBjYXNlIDB4MDIwMToNCj4+Pj4gKyAgY2FzZSAweDAyNTA6DQo+Pj4+ICsgIGNh c2UgMHgwMjYwOg0KPj4+PiArICAgIGJyZWFrOw0KPj4+PiArICBkZWZhdWx0Og0KPj4+PiArICAg IHJldHVybiBGQUxTRTsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8v IENoZWNrIGZvciBhIHNpbmdsZSBQYXJ0aXRpb24gTWFwICAvLyAgaWYgDQo+Pj4+ICsgKExvZ2lj YWxWb2xEZXNjLT5OdW1iZXJPZlBhcnRpdGlvbk1hcHMgPiAxKSB7DQo+Pj4+ICsgICAgcmV0dXJu IEZBTFNFOw0KPj4+PiArICB9DQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8vIFVERiAxLjAyIHJldmlz aW9uIHN1cHBvcnRzIG9ubHkgVHlwZSAxIChQaHlzaWNhbCkgcGFydGl0aW9ucywNCj4+PmJ1dA0K Pj4+PiArICAvLyBsZXQncyBjaGVjayBpdCBhbnkgd2F5Lg0KPj4+PiArICAvLw0KPj4+PiArICAv LyBQYXJ0aXRpb25NYXBbMF0gLT4gdHlwZQ0KPj4+PiArICAvLyBQYXJ0aXRpb25NYXBbMV0gLT4g bGVuZ3RoIChpbiBieXRlcykgIC8vICBpZiANCj4+Pj4gKyAoTG9naWNhbFZvbERlc2MtPlBhcnRp dGlvbk1hcHNbMF0gIT0gMSB8fA0KPj4+PiArICAgICAgTG9naWNhbFZvbERlc2MtPlBhcnRpdGlv bk1hcHNbMV0gIT0gNikgew0KPj4+PiArICAgIHJldHVybiBGQUxTRTsNCj4+Pj4gKyAgfQ0KPj4+ PiArDQo+Pj4+ICsgIHJldHVybiBUUlVFOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICsvKioNCj4+ Pj4gKyAgRmluZCBVREYgbG9naWNhbCB2b2x1bWUgbG9jYXRpb24gYW5kIHdoZXRoZXIgaXQgaXMg c3VwcG9ydGVkIGJ5DQo+Pj5jdXJyZW50IEVESzINCj4+Pj4gKyAgVURGIGZpbGUgc3lzdGVtIGlt cGxlbWVudGF0aW9uLg0KPj4+PiArDQo+Pj4+ICsgIEBwYXJhbVtpbl0gIEJsb2NrSW8gICAgICAg ICAgICAgQmxvY2tJbyBpbnRlcmZhY2UuDQo+Pj4+ICsgIEBwYXJhbVtpbl0gIERpc2tJbyAgICAg ICAgICAgICAgRGlza0lvIGludGVyZmFjZS4NCj4+Pj4gKyAgQHBhcmFtW2luXSAgQW5jaG9yUG9p bnQgICAgICAgICBBbmNob3Igdm9sdW1lIGRlc2NyaXB0b3IgcG9pbnRlci4NCj4+Pj4gKyAgQHBh cmFtW291dF0gTWFpblZkc1N0YXJ0QmxvY2sgICBNYWluIFZEUyBzdGFydGluZyBibG9jayBudW1i ZXIuDQo+Pj4+ICsgIEBwYXJhbVtvdXRdIE1haW5WZHNFbmRCbG9jayAgICAgTWFpbiBWRFMgZW5k aW5nIGJsb2NrIG51bWJlci4NCj4+Pj4gKw0KPj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgIFVERiBsb2dpY2FsIHZvbHVtZSB3YXMgZm91bmQuDQo+Pj4+ICsgIEByZXR2YWwg RUZJX1ZPTFVNRV9DT1JSVVBURUQgICAgVURGIGZpbGUgc3lzdGVtIHN0cnVjdHVyZXMgYXJlDQo+ Pj4+IGNvcnJ1cHRlZC4NCj4+Pj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICBV REYgbG9naWNhbCB2b2x1bWUgaXMgbm90DQo+Pj5zdXBwb3J0ZWQuDQo+Pj4+ICsgIEByZXR2YWwg b3RoZXIgICAgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHBlcmZvcm0gZGlzayBJL08uDQo+Pj4+ ICsNCj4+Pj4gKyoqLw0KPj4+PiArRUZJX1NUQVRVUw0KPj4+PiArRmluZExvZ2ljYWxWb2x1bWVM b2NhdGlvbiAoDQo+Pj4+ICsgIElOICAgRUZJX0JMT0NLX0lPX1BST1RPQ09MICAgICAgICAgICAg ICAgICAqQmxvY2tJbywNCj4+Pj4gKyAgSU4gICBFRklfRElTS19JT19QUk9UT0NPTCAgICAgICAg ICAgICAgICAgICpEaXNrSW8sDQo+Pj4+ICsgIElOICAgVURGX0FOQ0hPUl9WT0xVTUVfREVTQ1JJ UFRPUl9QT0lOVEVSICAqQW5jaG9yUG9pbnQsDQo+Pj4+ICsgIE9VVCAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqTWFpblZkc1N0YXJ0QmxvY2ssDQo+Pj4+ICsgIE9VVCAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTWFpblZkc0VuZEJsb2NrDQo+ Pj4+ICsgICkNCj4+Pj4gK3sNCj4+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrU2l6 ZTsNCj4+Pj4gKyAgRUZJX0xCQSAgICAgICAgICAgICAgICAgICAgICAgIExhc3RCbG9jazsNCj4+ Pj4gKyAgVURGX0VYVEVOVF9BRCAgICAgICAgICAgICAgICAgICpFeHRlbnRBZDsNCj4+Pj4gKyAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcUJsb2Nrc051bTsNCj4+Pj4gKyAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcVN0YXJ0QmxvY2s7DQo+Pj4+ICsgIFVJTlQ2 NCAgICAgICAgICAgICAgICAgICAgICAgICBHdWFyZE1haW5WZHNTdGFydEJsb2NrOw0KPj4+PiAr ICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcjsNCj4+Pj4gKyAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcUVuZEJsb2NrOw0KPj4+PiArICBCT09MRUFOICAg ICAgICAgICAgICAgICAgICAgICAgU3RvcFNlcXVlbmNlOw0KPj4+PiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgTHZkc0NvdW50Ow0KPj4+PiArICBVREZfTE9HSUNBTF9WT0xVTUVf REVTQ1JJUFRPUiAgKkxvZ2ljYWxWb2xEZXNjOw0KPj4+PiArICBVREZfREVTQ1JJUFRPUl9UQUcg ICAgICAgICAgICAgKkRlc2NyaXB0b3JUYWc7DQo+Pj4+ICsNCj4+Pj4gKyAgQmxvY2tTaXplID0g QmxvY2tJby0+TWVkaWEtPkJsb2NrU2l6ZTsgIExhc3RCbG9jayA9DQo+Pj4+ICsgQmxvY2tJby0+ TWVkaWEtPkxhc3RCbG9jazsgIEV4dGVudEFkID0NCj4+Pj4gKyAmQW5jaG9yUG9pbnQtPk1haW5W b2x1bWVEZXNjcmlwdG9yU2VxdWVuY2VFeHRlbnQ7DQo+Pj4+ICsNCj4+Pj4gKyAgLy8NCj4+Pj4g KyAgLy8gVURGIDIuNjAsIDIuMi4zLjEgc3RydWN0IE1haW5Wb2x1bWVEZXNjcmlwdG9yU2VxdWVu Y2VFeHRlbnQNCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gVGhlIE1haW4gVm9sdW1lIERlc2NyaXB0 b3IgU2VxdWVuY2UgRXh0ZW50IHNoYWxsIGhhdmUgYQ0KPj5taW5pbXVtDQo+Pj5sZW5ndGgNCj4+ Pj4gb2YNCj4+Pj4gKyAgLy8gMTYgbG9naWNhbCBzZWN0b3JzLg0KPj4+PiArICAvLw0KPj4+PiAr ICAvLyBBbHNvIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCBleGNlZWQgbWF4aW11bSBudW1iZXIgb2Yg YmxvY2tzIGluDQo+Pj50aGUgZGlzay4NCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgU2VxQmxvY2tzTnVt ID0gRGl2VTY0eDMyICgoVUlOVDY0KUV4dGVudEFkLT5FeHRlbnRMZW5ndGgsDQo+Pj5CbG9ja1Np emUpOw0KPj4+PiArICBpZiAoU2VxQmxvY2tzTnVtIDwgMTYgfHwgKEVGSV9MQkEpU2VxQmxvY2tz TnVtID4gTGFzdEJsb2NrICsgMSkgew0KPj4+PiArICAgIHJldHVybiBFRklfVk9MVU1FX0NPUlJV UFRFRDsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8vIENoZWNrIGZv ciB2YWxpZCBWb2x1bWUgRGVzY3JpcHRvciBTZXF1ZW5jZSBzdGFydGluZyBibG9jaw0KPj4+bnVt YmVyDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIFNlcVN0YXJ0QmxvY2sgPSAoVUlOVDY0KUV4dGVudEFk LT5FeHRlbnRMb2NhdGlvbjsgIGlmIA0KPj4+PiArIChTZXFTdGFydEJsb2NrID4gTGFzdEJsb2Nr IHx8DQo+Pj4+ICsgICAgICBTZXFTdGFydEJsb2NrICsgU2VxQmxvY2tzTnVtIC0gMSA+IExhc3RC bG9jaykgew0KPj4+PiArICAgIHJldHVybiBFRklfVk9MVU1FX0NPUlJVUFRFRDsNCj4+Pj4gICAg fQ0KPj4+Pg0KPj4+PiArICBHdWFyZE1haW5WZHNTdGFydEJsb2NrID0gU2VxU3RhcnRCbG9jazsN Cj4+Pj4gKw0KPj4+PiArICAvLw0KPj4+PiArICAvLyBBbGxvY2F0ZSBidWZmZXIgZm9yIHJlYWRp bmcgZGlzayBibG9ja3MgIC8vICBCdWZmZXIgPSANCj4+Pj4gKyBBbGxvY2F0ZVplcm9Qb29sICgo VUlOVE4pQmxvY2tTaXplKTsgIGlmIChCdWZmZXIgPT0gTlVMTCkgew0KPj4+PiArICAgIHJldHVy biBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIFNlcUVu ZEJsb2NrID0gU2VxU3RhcnRCbG9jayArIFNlcUJsb2Nrc051bTsgIFN0b3BTZXF1ZW5jZSA9DQo+ PkZBTFNFOw0KPj4+PiArIEx2ZHNDb3VudCA9IDA7ICBTdGF0dXMgPSBFRklfVk9MVU1FX0NPUlJV UFRFRDsgIC8vICAvLyBTdGFydCBNYWluIA0KPj4+PiArIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVl bmNlICAvLyAgZm9yICg7IFNlcVN0YXJ0QmxvY2sgPCANCj4+Pj4gKyBTZXFFbmRCbG9jaw0KPj4N Cj4+Pj4gKyAmJiAhU3RvcFNlcXVlbmNlOw0KPj4+U2VxU3RhcnRCbG9jaysrKSB7DQo+Pj4+ICsg ICAgLy8NCj4+Pj4gKyAgICAvLyBSZWFkIGRpc2sgYmxvY2sNCj4+Pj4gKyAgICAvLw0KPj4+PiAr ICAgIFN0YXR1cyA9IEJsb2NrSW8tPlJlYWRCbG9ja3MgKA0KPj4+PiArICAgICAgQmxvY2tJbywN Cj4+Pj4gKyAgICAgIEJsb2NrSW8tPk1lZGlhLT5NZWRpYUlkLA0KPj4+PiArICAgICAgU2VxU3Rh cnRCbG9jaywNCj4+Pj4gKyAgICAgIEJsb2NrU2l6ZSwNCj4+Pj4gKyAgICAgIEJ1ZmZlcg0KPj4+ PiArICAgICAgKTsNCj4+Pj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+Pj4+ICsg ICAgICBnb3RvIE91dF9GcmVlOw0KPj4+PiArICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgIERlc2Ny aXB0b3JUYWcgPSBCdWZmZXI7DQo+Pj4+ICsNCj4+Pj4gKyAgICAvLw0KPj4+PiArICAgIC8vIEVD TUEgMTY3LCA4LjQuMSBDb250ZW50cyBvZiBhIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlDQo+ Pj4+ICsgICAgLy8NCj4+Pj4gKyAgICAvLyAtIEEgVm9sdW1lIERlc2NyaXB0b3IgU2VxdWVuY2Ug c2hhbGwgY29udGFpbiBvbmUgb3IgbW9yZQ0KPj4+UHJpbWFyeQ0KPj4+PiBWb2x1bWUNCj4+Pj4g KyAgICAvLyAgIERlc2NyaXB0b3JzLg0KPj4+PiArICAgIC8vIC0gQSBWb2x1bWUgRGVzY3JpcHRv ciBTZXF1ZW5jZSBzaGFsbCBjb250YWluIHplcm8gb3IgbW9yZQ0KPj4+PiBJbXBsZW1lbnRhdGlv bg0KPj4+PiArICAgIC8vICAgVXNlIFZvbHVtZSBEZXNjcmlwdG9ycy4NCj4+Pj4gKyAgICAvLyAt IEEgVm9sdW1lIERlc2NyaXB0b3IgU2VxdWVuY2Ugc2hhbGwgY29udGFpbiB6ZXJvIG9yIG1vcmUN Cj4+PlBhcnRpdGlvbg0KPj4+PiArICAgIC8vICAgRGVzY3JpcHRvcnMuDQo+Pj4+ICsgICAgLy8g LSBBIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlIHNoYWxsIGNvbnRhaW4gemVybyBvciBtb3Jl DQo+Pj5Mb2dpY2FsDQo+Pj4+IFZvbHVtZQ0KPj4+PiArICAgIC8vICAgRGVzY3JpcHRvcnMuDQo+ Pj4+ICsgICAgLy8gLSBBIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlIHNoYWxsIGNvbnRhaW4g emVybyBvciBtb3JlDQo+Pj5VbmFsbG9jYXRlZA0KPj4+PiArICAgIC8vICAgU3BhY2UgRGVzY3Jp cHRvcnMuDQo+Pj4+ICsgICAgLy8NCj4+Pj4gKyAgICBzd2l0Y2ggKFVERl9UQUdfSUQgKERlc2Ny aXB0b3JUYWcpKSB7DQo+Pj4+ICsgICAgY2FzZSBVZGZQcmltYXJ5Vm9sdW1lRGVzY3JpcHRvcjoN Cj4+Pj4gKyAgICBjYXNlIFVkZkltcGxlbWVuYXRpb25Vc2VWb2x1bWVEZXNjcmlwdG9yOg0KPj4+ PiArICAgIGNhc2UgVWRmUGFydGl0aW9uRGVzY3JpcHRvcjoNCj4+Pj4gKyAgICBjYXNlIFVkZlVu YWxsb2NhdGVkU3BhY2VEZXNjcmlwdG9yOg0KPj4+PiArICAgICAgYnJlYWs7DQo+Pj4+ICsNCj4+ Pj4gKyAgICBjYXNlIFVkZkxvZ2ljYWxWb2x1bWVEZXNjcmlwdG9yOg0KPj4+PiArICAgICAgTG9n aWNhbFZvbERlc2MgPSBCdWZmZXI7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgIC8vDQo+Pj4+ICsgICAg ICAvLyBDaGVjayBmb3IgZXhpc3RlbmNlIG9mIGEgc2luZ2xlIExWRCBhbmQgd2hldGhlciBpdCBp cw0KPj4+c3VwcG9ydGVkIGJ5DQo+Pj4+ICsgICAgICAvLyBjdXJyZW50IEVESzIgVURGIGZpbGUg c3lzdGVtIGltcGxlbWVudGF0aW9uLg0KPj4+PiArICAgICAgLy8NCj4+Pj4gKyAgICAgIGlmICgr K0x2ZHNDb3VudCA+IDEgfHwNCj4+Pj4gKyAgICAgICAgICAhSXNMb2dpY2FsVm9sdW1lRGVzY3Jp cHRvclN1cHBvcnRlZCAoTG9naWNhbFZvbERlc2MpKSB7DQo+Pj4+ICsgICAgICAgIFN0YXR1cyA9 IEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAgICAgICAgU3RvcFNlcXVlbmNlID0gVFJVRTsNCj4+ Pj4gKyAgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICAgYnJlYWs7DQo+Pj4+ICsNCj4+Pj4gKyAg ICBjYXNlIFVkZlRlcm1pbmF0aW5nRGVzY3JpcHRvcjoNCj4+Pj4gKyAgICAgIC8vDQo+Pj4+ICsg ICAgICAvLyBTdG9wIHRoZSBzZXF1ZW5jZSB3aGVuIHdlIGZpbmQgYSBUZXJtaW5hdGluZyBEZXNj cmlwdG9yDQo+Pj4+ICsgICAgICAvLyAoYWthIFVuYWxsb2NhdGVkIFNlY3RvciksIHNlIHdlIGRv bid0IGhhdmUgdG8gd2FsayBhbGwgDQo+Pj4+ICsgdGhlDQo+Pj51bmFsbG9jYXRlZA0KPj4+PiAr ICAgICAgLy8gYXJlYSB1bm5lY2Vzc2FyaWx5Lg0KPj4+PiArICAgICAgLy8NCj4+Pj4gKyAgICAg IFN0b3BTZXF1ZW5jZSA9IFRSVUU7DQo+Pj4+ICsgICAgICBicmVhazsNCj4+Pj4gKw0KPj4+PiAr ICAgIGRlZmF1bHQ6DQo+Pj4+ICsgICAgICAvLw0KPj4+PiArICAgICAgLy8gQW4gaW52YWxpZCBW b2x1bWUgRGVzY3JpcHRvciBoYXMgYmVlbiBmb3VuZCBpbiB0aGUNCj4+c2VxdWVjZS4NCj4+PlZv bHVtZSBpcw0KPj4+PiArICAgICAgLy8gY29ycnVwdGVkLg0KPj4+PiArICAgICAgLy8NCj4+Pj4g KyAgICAgIFN0YXR1cyA9IEVGSV9WT0xVTUVfQ09SUlVQVEVEOw0KPj4+PiArICAgICAgZ290byBP dXRfRnJlZTsNCj4+Pj4gKyAgICB9DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICAvLw0KPj4+ PiArICAvLyBDaGVjayBpZiBMVkQgd2FzIGZvdW5kDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpICYmIEx2ZHNDb3VudCA9PSAxKSB7DQo+Pj4+ICsgICAgKk1haW5W ZHNTdGFydEJsb2NrID0gR3VhcmRNYWluVmRzU3RhcnRCbG9jazsNCj4+Pj4gKyAgICAvLw0KPj4+ PiArICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlYWQgZWl0aGVyIExWRCBvciBQRCBkZXNjcmlw dG9ycyB0byBrbm93DQo+Pj50aGUgbGFzdA0KPj4+PiArICAgIC8vIHZhbGlkIGJsb2NrIGluIHRo ZSBmb3VuZCBVREYgZmlsZSBzeXN0ZW0uIEl0J3MgYWxyZWFkeQ0KPj4+TGFzdEJsb2NrLg0KPj4+ PiArICAgIC8vDQo+Pj4+ICsgICAgKk1haW5WZHNFbmRCbG9jayA9IExhc3RCbG9jazsNCj4+Pj4g Kw0KPj4+PiArICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPj4+PiArICB9DQo+Pj4+ICsNCj4+ Pj4gK091dF9GcmVlOg0KPj4+PiArICAvLw0KPj4+PiArICAvLyBGcmVlIGJsb2NrIHJlYWQgYnVm ZmVyDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIEZyZWVQb29sIChCdWZmZXIpOw0KPj4+PiArDQo+Pj4+ ICsgIHJldHVybiBTdGF0dXM7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICBG aW5kIGEgc3VwcG9ydGVkIFVERiBmaWxlIHN5c3RlbSBpbiBibG9jayBkZXZpY2UuDQo+Pj4+ICsN Cj4+Pj4gKyAgQHBhcmFtW2luXSAgQmxvY2tJbyAgICAgICAgICAgICBCbG9ja0lvIGludGVyZmFj ZS4NCj4+Pj4gKyAgQHBhcmFtW2luXSAgRGlza0lvICAgICAgICAgICAgICBEaXNrSW8gaW50ZXJm YWNlLg0KPj4+PiArICBAcGFyYW1bb3V0XSBTdGFydGluZ0xCQSAgICAgICAgIFVERiBmaWxlIHN5 c3RlbSBzdGFydGluZyBMQkEuDQo+Pj4+ICsgIEBwYXJhbVtvdXRdIEVuZGluZ0xCQSAgICAgICAg ICAgVURGIGZpbGUgc3lzdGVtIHN0YXJ0aW5nIExCQS4NCj4+Pj4gKw0KPj4+PiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICAgIFVERiBmaWxlIHN5c3RlbSB3YXMgZm91bmQuDQo+Pj4+ ICsgIEByZXR2YWwgb3RoZXIgICAgICAgICAgICAgICAgICAgVURGIGZpbGUgc3lzdGVtIHdhcyBu b3QgZm91bmQuDQo+Pj4+ICsNCj4+Pj4gKyoqLw0KPj4+PiArRUZJX1NUQVRVUw0KPj4+PiArRmlu ZFVkZkZpbGVTeXN0ZW0gKA0KPj4+PiArICBJTiBFRklfQkxPQ0tfSU9fUFJPVE9DT0wgICpCbG9j a0lvLA0KPj4+PiArICBJTiBFRklfRElTS19JT19QUk9UT0NPTCAgICpEaXNrSW8sDQo+Pj4+ICsg IE9VVCBFRklfTEJBICAgICAgICAgICAgICAgKlN0YXJ0aW5nTEJBLA0KPj4+PiArICBPVVQgRUZJ X0xCQSAgICAgICAgICAgICAgICpFbmRpbmdMQkENCj4+Pj4gKyAgKQ0KPj4+PiArew0KPj4+PiAr ICBFRklfU1RBVFVTIFN0YXR1czsNCj4+Pj4gKyAgVURGX0FOQ0hPUl9WT0xVTUVfREVTQ1JJUFRP Ul9QT0lOVEVSICBBbmNob3JQb2ludDsNCj4+Pj4gKw0KPj4+PiArICAvLw0KPj4+PiArICAvLyBG aW5kIFVERiB2b2x1bWUgaWRlbnRpZmllcnMNCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgU3RhdHVzID0g RmluZFVkZlZvbHVtZUlkZW50aWZpZXJzIChCbG9ja0lvLCBEaXNrSW8pOyAgaWYgDQo+Pj4+ICsg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+Pj4+ICsg IH0NCj4+Pj4gKw0KPj4+PiArICAvLw0KPj4+PiArICAvLyBGaW5kIEFuY2hvciBWb2x1bWUgRGVz Y3JpcHRvciBQb2ludGVyICAvLw0KPj4+PiAgICBTdGF0dXMgPSBGaW5kQW5jaG9yVm9sdW1lRGVz Y3JpcHRvclBvaW50ZXIgKEJsb2NrSW8sIERpc2tJbywNCj4+PiZBbmNob3JQb2ludCk7DQo+Pj4+ ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4+Pj4gLSAgICByZXR1cm4gRUZJX1VOU1VQ UE9SVEVEOw0KPj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+Pj4+ICAgIH0NCj4+Pj4NCj4+Pj4g LSAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPj4+PiArICAvLw0KPj4+PiArICAvLyBGaW5kIExvZ2lj YWwgVm9sdW1lIGxvY2F0aW9uDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIFN0YXR1cyA9IEZpbmRMb2dp Y2FsVm9sdW1lTG9jYXRpb24gKA0KPj4+PiArICAgIEJsb2NrSW8sDQo+Pj4+ICsgICAgRGlza0lv LA0KPj4+PiArICAgICZBbmNob3JQb2ludCwNCj4+Pj4gKyAgICAoVUlOVDY0ICopU3RhcnRpbmdM QkEsDQo+Pj4+ICsgICAgKFVJTlQ2NCAqKUVuZGluZ0xCQQ0KPj4+PiArICAgICk7DQo+Pj4+ICsN Cj4+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4+Pj4gIH0NCj4+Pj4NCj4+Pj4gIC8qKg0KPj4+PiBA QCAtMjYzLDkgKzUzNyw5IEBAIFBhcnRpdGlvbkluc3RhbGxVZGZDaGlsZEhhbmRsZXMgKA0KPj4+ PiAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmRlckJ5TWVkaWFCbG9ja1Np emU7DQo+Pj4+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPj4+PiAg ICBFRklfQkxPQ0tfSU9fTUVESUEgICAgICAgICAgICpNZWRpYTsNCj4+Pj4gLSAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAqRGV2aWNlUGF0aE5vZGU7DQo+Pj4+IC0gIEVGSV9HVUlEICAg ICAgICAgICAgICAgICAgICAgKlZlbmRvckRlZmluZWRHdWlkOw0KPj4+PiAgICBFRklfUEFSVElU SU9OX0lORk9fUFJPVE9DT0wgIFBhcnRpdGlvbkluZm87DQo+Pj4+ICsgIEVGSV9MQkEgICAgICAg ICAgICAgICAgICAgICAgU3RhcnRpbmdMQkE7DQo+Pj4+ICsgIEVGSV9MQkEgICAgICAgICAgICAg ICAgICAgICAgRW5kaW5nTEJBOw0KPj4+Pg0KPj4+PiAgICBNZWRpYSA9IEJsb2NrSW8tPk1lZGlh Ow0KPj4+Pg0KPj4+PiBAQCAtMjgxLDM1ICs1NTUsMTAgQEAgUGFydGl0aW9uSW5zdGFsbFVkZkNo aWxkSGFuZGxlcyAoDQo+Pj4+ICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+Pj4+ICAgIH0N Cj4+Pj4NCj4+Pj4gLSAgRGV2aWNlUGF0aE5vZGUgPSBEZXZpY2VQYXRoOw0KPj4+PiAtICB3aGls ZSAoIUlzRGV2aWNlUGF0aEVuZCAoRGV2aWNlUGF0aE5vZGUpKSB7DQo+Pj4+IC0gICAgLy8NCj4+ Pj4gLSAgICAvLyBEbyBub3QgYWxsb3cgY2hlY2tpbmcgZm9yIFVERiBmaWxlIHN5c3RlbXMgaW4g Q0RST00gIkVsDQo+Pj5Ub3JpdG8iDQo+Pj4+IC0gICAgLy8gcGFydGl0aW9ucywgYW5kIHNraXAg ZHVwbGljYXRlIGluc3RhbGxhdGlvbiBvZiBVREYgZmlsZQ0KPj4+c3lzdGVtIGNoaWxkDQo+Pj4+ IC0gICAgLy8gbm9kZXMuDQo+Pj4+IC0gICAgLy8NCj4+Pj4gLSAgICBpZiAoRGV2aWNlUGF0aFR5 cGUgKERldmljZVBhdGhOb2RlKSA9PSBNRURJQV9ERVZJQ0VfUEFUSCkgew0KPj4+PiAtICAgICAg aWYgKERldmljZVBhdGhTdWJUeXBlIChEZXZpY2VQYXRoTm9kZSkgPT0gTUVESUFfQ0RST01fRFAp IHsNCj4+Pj4gLSAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+Pj4+IC0gICAgICB9DQo+ Pj4+IC0gICAgICBpZiAoRGV2aWNlUGF0aFN1YlR5cGUgKERldmljZVBhdGhOb2RlKSA9PSBNRURJ QV9WRU5ET1JfRFApIHsNCj4+Pj4gLSAgICAgICAgVmVuZG9yRGVmaW5lZEd1aWQgPSAoRUZJX0dV SUQgKikoKFVJTlROKURldmljZVBhdGhOb2RlICsNCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUX09GDQo+Pj4oVkVORE9SX0RFVklDRV9QQVRILCBH dWlkKSk7DQo+Pj4+IC0gICAgICAgIGlmIChDb21wYXJlR3VpZCAoVmVuZG9yRGVmaW5lZEd1aWQs ICZnVWRmRGV2UGF0aEd1aWQpKSB7DQo+Pj4+IC0gICAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQo+Pj4+IC0gICAgICAgIH0NCj4+Pj4gLSAgICAgIH0NCj4+Pj4gLSAgICB9DQo+Pj4+IC0g ICAgLy8NCj4+Pj4gLSAgICAvLyBUcnkgbmV4dCBkZXZpY2UgcGF0aCBub2RlDQo+Pj4+IC0gICAg Ly8NCj4+Pj4gLSAgICBEZXZpY2VQYXRoTm9kZSA9IE5leHREZXZpY2VQYXRoTm9kZSAoRGV2aWNl UGF0aE5vZGUpOw0KPj4+PiAtICB9DQo+Pj4+IC0NCj4+Pj4gICAgLy8NCj4+Pj4gLSAgLy8gQ2hl Y2sgaWYgYmxvY2sgZGV2aWNlIHN1cHBvcnRzIGFuIFVERiBmaWxlIHN5c3RlbQ0KPj4+PiArICAv LyBTZWFyY2ggZm9yIGFuIFVERiBmaWxlIHN5c3RlbSBvbiBibG9jayBkZXZpY2UNCj4+Pj4gICAg Ly8NCj4+Pj4gLSAgU3RhdHVzID0gU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKEJsb2NrSW8sIERpc2tJ byk7DQo+Pj4+ICsgIFN0YXR1cyA9IEZpbmRVZGZGaWxlU3lzdGVtIChCbG9ja0lvLCBEaXNrSW8s ICZTdGFydGluZ0xCQSwNCj4+PiZFbmRpbmdMQkEpOw0KPj4+PiAgICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+Pj4+ICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+Pj4+ICAgIH0NCj4+ Pj4gQEAgLTMzNCw4ICs1ODMsOCBAQCBQYXJ0aXRpb25JbnN0YWxsVWRmQ2hpbGRIYW5kbGVzICgN Cj4+Pj4gICAgICBEZXZpY2VQYXRoLA0KPj4+PiAgICAgIChFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKikmZ1VkZkRldmljZVBhdGgsDQo+Pj4+ICAgICAgJlBhcnRpdGlvbkluZm8sDQo+Pj4+IC0g ICAgMCwNCj4+Pj4gLSAgICBNZWRpYS0+TGFzdEJsb2NrLA0KPj4+PiArICAgIFN0YXJ0aW5nTEJB LA0KPj4+PiArICAgIEVuZGluZ0xCQSwNCj4+Pj4gICAgICBNZWRpYS0+QmxvY2tTaXplDQo+Pj4+ ICAgICAgKTsNCj4+Pj4gICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4+Pj4gZGlmZiAt LWdpdCBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvRmlsZS5jDQo+Pj4+IGIv TWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4ZS9GaWxlLmMNCj4+Pj4gaW5kZXggNjI1 ZjJjNTYzNy4uNmYwN2JmMjA2NiAxMDA2NDQNCj4+Pj4gLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9EaXNrL1VkZkR4ZS9GaWxlLmMNCj4+Pj4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9EaXNrL1VkZkR4ZS9GaWxlLmMNCj4+Pj4gQEAgLTEzMSw3ICsxMzEsNiBAQCBFcnJvcl9BbGxv Y19Qcml2X0ZpbGVfRGF0YToNCj4+Pj4gICAgQ2xlYW51cEZpbGVJbmZvcm1hdGlvbiAoJlByaXZG c0RhdGEtPlJvb3QpOw0KPj4+Pg0KPj4+PiAgRXJyb3JfRmluZF9Sb290X0RpcjoNCj4+Pj4gLSAg Q2xlYW51cFZvbHVtZUluZm9ybWF0aW9uICgmUHJpdkZzRGF0YS0+Vm9sdW1lKTsNCj4+Pj4NCj4+ Pj4gIEVycm9yX1JlYWRfVWRmX1ZvbHVtZToNCj4+Pj4gIEVycm9yX0ludmFsaWRfUGFyYW1zOg0K Pj4+PiBAQCAtNDI5LDcgKzQyOCw3IEBAIFVkZlJlYWQgKA0KPj4+PiAgICAgIH0NCj4+Pj4gICAg ICBBU1NFUlQgKE5ld0ZpbGVFbnRyeURhdGEgIT0gTlVMTCk7DQo+Pj4+DQo+Pj4+IC0gICAgaWYg KElTX0ZFX1NZTUxJTksgKE5ld0ZpbGVFbnRyeURhdGEpKSB7DQo+Pj4+ICsgICAgaWYgKEZFX0lD Ql9GSUxFX1RZUEUgKE5ld0ZpbGVFbnRyeURhdGEpID09IA0KPj4+PiArIFVkZkZpbGVFbnRyeVN5 bWxpbmspDQo+Pj57DQo+Pj4+ICAgICAgICBTdGF0dXMgPSBSZXNvbHZlU3ltbGluayAoDQo+Pj4+ ICAgICAgICAgIEJsb2NrSW8sDQo+Pj4+ICAgICAgICAgIERpc2tJbywNCj4+Pj4gQEAgLTUyOSw3 ICs1MjgsNiBAQCBVZGZDbG9zZSAoDQo+Pj4+ICAgIEVGSV9UUEwgICAgICAgICAgICAgICAgICAg ICBPbGRUcGw7DQo+Pj4+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ Pj4+ICAgIFBSSVZBVEVfVURGX0ZJTEVfREFUQSAgICAgICAqUHJpdkZpbGVEYXRhOw0KPj4+PiAt ICBQUklWQVRFX1VERl9TSU1QTEVfRlNfREFUQSAgKlByaXZGc0RhdGE7DQo+Pj4+DQo+Pj4+ICAg IE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9DQUxMQkFDSyk7DQo+Pj4+DQo+Pj4+IEBAIC01 NDIsOCArNTQwLDYgQEAgVWRmQ2xvc2UgKA0KPj4+Pg0KPj4+PiAgICBQcml2RmlsZURhdGEgPSBQ UklWQVRFX1VERl9GSUxFX0RBVEFfRlJPTV9USElTIChUaGlzKTsNCj4+Pj4NCj4+Pj4gLSAgUHJp dkZzRGF0YSA9IFBSSVZBVEVfVURGX1NJTVBMRV9GU19EQVRBX0ZST01fVEhJUyAoUHJpdkZpbGVE YXRhLQ0KPj4+PiA+U2ltcGxlRnMpOw0KPj4+PiAtDQo+Pj4+ICAgIGlmICghUHJpdkZpbGVEYXRh LT5Jc1Jvb3REaXJlY3RvcnkpIHsNCj4+Pj4gICAgICBDbGVhbnVwRmlsZUluZm9ybWF0aW9uICgm UHJpdkZpbGVEYXRhLT5GaWxlKTsNCj4+Pj4NCj4+Pj4gQEAgLTU1MiwxMCArNTQ4LDYgQEAgVWRm Q2xvc2UgKA0KPj4+PiAgICAgIH0NCj4+Pj4gICAgfQ0KPj4+Pg0KPj4+PiAtICBpZiAoLS1Qcml2 RnNEYXRhLT5PcGVuRmlsZXMgPT0gMCkgew0KPj4+PiAtICAgIENsZWFudXBWb2x1bWVJbmZvcm1h dGlvbiAoJlByaXZGc0RhdGEtPlZvbHVtZSk7DQo+Pj4+IC0gIH0NCj4+Pj4gLQ0KPj4+PiAgICBG cmVlUG9vbCAoKFZPSUQgKilQcml2RmlsZURhdGEpOw0KPj4+Pg0KPj4+PiAgRXhpdDoNCj4+Pj4g QEAgLTY1Miw3ICs2NDQsNyBAQCBVZGZHZXRQb3NpdGlvbiAoDQo+Pj4+ICAgIC8vIEFzIHBlciBV RUZJIHNwZWMsIGlmIHRoZSBmaWxlIGhhbmRsZSBpcyBhIGRpcmVjdG9yeSwgdGhlbiB0aGUNCj4+ PmN1cnJlbnQgZmlsZQ0KPj4+PiAgICAvLyBwb3NpdGlvbiBoYXMgbm8gbWVhbmluZyBhbmQgdGhl IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLg0KPj4+PiAgICAvLw0KPj4+PiAtICBpZiAoSVNf RklEX0RJUkVDVE9SWV9GSUxFDQo+Pj4oJlByaXZGaWxlRGF0YS0+RmlsZS5GaWxlSWRlbnRpZmll ckRlc2MpKSB7DQo+Pj4+ICsgIGlmIChJU19GSURfRElSRUNUT1JZX0ZJTEUNCj4+KFByaXZGaWxl RGF0YS0+RmlsZS5GaWxlSWRlbnRpZmllckRlc2MpKQ0KPj4+ew0KPj4+PiAgICAgIHJldHVybiAg RUZJX1VOU1VQUE9SVEVEOw0KPj4+PiAgICB9DQo+Pj4+DQo+Pj4+IEBAIC03ODgsNyArNzgwLDcg QEAgVWRmR2V0SW5mbyAoDQo+Pj4+ICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKEluZm9ybWF0 aW9uVHlwZSwNCj4+JmdFZmlGaWxlU3lzdGVtSW5mb0d1aWQpKQ0KPj4+ew0KPj4+PiAgICAgIFN0 cmluZyA9IFZvbHVtZUxhYmVsOw0KPj4+Pg0KPj4+PiAtICAgIEZpbGVTZXREZXNjID0gUHJpdkZz RGF0YS0+Vm9sdW1lLkZpbGVTZXREZXNjc1swXTsNCj4+Pj4gKyAgICBGaWxlU2V0RGVzYyA9ICZQ cml2RnNEYXRhLT5Wb2x1bWUuRmlsZVNldERlc2M7DQo+Pj4+DQo+Pj4+ICAgICAgT3N0YUNvbXBy ZXNzZWQgPSAmRmlsZVNldERlc2MtPkxvZ2ljYWxWb2x1bWVJZGVudGlmaWVyWzBdOw0KPj4+Pg0K Pj4+PiBAQCAtODQ3LDcgKzgzOSw3IEBAIFVkZkdldEluZm8gKA0KPj4+PiAgICAgIEZpbGVTeXN0 ZW1JbmZvLT5TaXplICAgICAgICA9IEZpbGVTeXN0ZW1JbmZvTGVuZ3RoOw0KPj4+PiAgICAgIEZp bGVTeXN0ZW1JbmZvLT5SZWFkT25seSAgICA9IFRSVUU7DQo+Pj4+ICAgICAgRmlsZVN5c3RlbUlu Zm8tPkJsb2NrU2l6ZSAgID0NCj4+Pj4gLSAgICAgIExWX0JMT0NLX1NJWkUgKCZQcml2RnNEYXRh LT5Wb2x1bWUsIFVERl9ERUZBVUxUX0xWX05VTSk7DQo+Pj4+ICsgICAgICBQcml2RnNEYXRhLT5W b2x1bWUuTG9naWNhbFZvbERlc2MuTG9naWNhbEJsb2NrU2l6ZTsNCj4+Pj4gICAgICBGaWxlU3lz dGVtSW5mby0+Vm9sdW1lU2l6ZSAgPSBWb2x1bWVTaXplOw0KPj4+PiAgICAgIEZpbGVTeXN0ZW1J bmZvLT5GcmVlU3BhY2UgICA9IEZyZWVTcGFjZVNpemU7DQo+Pj4+DQo+Pj4+IGRpZmYgLS1naXQN Cj4+PmEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4ZS9GaWxlU3lzdGVtT3BlcmF0 aW9ucy5jDQo+Pj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4ZS9GaWxlU3lz dGVtT3BlcmF0aW9ucy5jDQo+Pj4+IGluZGV4IDVkZjI2Nzc2MWYuLjYyZDgxNzk4OWYgMTAwNjQ0 DQo+Pj4+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvRmlsZVN5c3Rl bU9wZXJhdGlvbnMuYw0KPj4+PiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Rpc2svVWRm RHhlL0ZpbGVTeXN0ZW1PcGVyYXRpb25zLmMNCj4+Pj4gQEAgLTM4LDExICszOCwxMiBAQCBGaW5k QW5jaG9yVm9sdW1lRGVzY3JpcHRvclBvaW50ZXIgKA0KPj4+PiAgICBPVVQgIFVERl9BTkNIT1Jf Vk9MVU1FX0RFU0NSSVBUT1JfUE9JTlRFUiAgKkFuY2hvclBvaW50DQo+Pj4+ICAgICkNCj4+Pj4g IHsNCj4+Pj4gLSAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPj4+PiAtICBVSU5UMzIgICAgICBCbG9j a1NpemU7DQo+Pj4+IC0gIEVGSV9MQkEgICAgIEVuZExCQTsNCj4+Pj4gLSAgRUZJX0xCQSAgICAg RGVzY3JpcHRvckxCQXNbNF07DQo+Pj4+IC0gIFVJTlROICAgICAgIEluZGV4Ow0KPj4+PiArICBF RklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICBC bG9ja1NpemU7DQo+Pj4+ICsgIEVGSV9MQkEgICAgICAgICAgICAgRW5kTEJBOw0KPj4+PiArICBF RklfTEJBICAgICAgICAgICAgIERlc2NyaXB0b3JMQkFzWzRdOw0KPj4+PiArICBVSU5UTiAgICAg ICAgICAgICAgIEluZGV4Ow0KPj4+PiArICBVREZfREVTQ1JJUFRPUl9UQUcgICpEZXNjcmlwdG9y VGFnOw0KPj4+Pg0KPj4+PiAgICBCbG9ja1NpemUgPSBCbG9ja0lvLT5NZWRpYS0+QmxvY2tTaXpl Ow0KPj4+PiAgICBFbmRMQkEgPSBCbG9ja0lvLT5NZWRpYS0+TGFzdEJsb2NrOyBAQCAtNjIsMTAg KzYzLDEzIEBAIA0KPj4+PiBGaW5kQW5jaG9yVm9sdW1lRGVzY3JpcHRvclBvaW50ZXIgKA0KPj4+ PiAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4+Pj4gICAgICAgIHJldHVybiBTdGF0 dXM7DQo+Pj4+ICAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgRGVzY3JpcHRvclRhZyA9ICZBbmNo b3JQb2ludC0+RGVzY3JpcHRvclRhZzsNCj4+Pj4gKw0KPj4+PiAgICAgIC8vDQo+Pj4+ICAgICAg Ly8gQ2hlY2sgaWYgcmVhZCBMQkEgaGFzIGEgdmFsaWQgQVZEUCBkZXNjcmlwdG9yLg0KPj4+PiAg ICAgIC8vDQo+Pj4+IC0gICAgaWYgKElTX0FWRFAgKEFuY2hvclBvaW50KSkgew0KPj4+PiArICAg IGlmIChEZXNjcmlwdG9yVGFnLT5UYWdJZGVudGlmaWVyID09DQo+Pj5VZGZBbmNob3JWb2x1bWVE ZXNjcmlwdG9yUG9pbnRlcikgew0KPj4+PiAgICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPj4+ PiAgICAgIH0NCj4+Pj4gICAgfQ0KPj4+PiBAQCAtOTksMTQ4ICsxMDMsOTggQEAgU3RhcnRNYWlu Vm9sdW1lRGVzY3JpcHRvclNlcXVlbmNlICgNCj4+Pj4gICAgT1VUICBVREZfVk9MVU1FX0lORk8g ICAgICAgICAgICAgICAgICAgICAgICpWb2x1bWUNCj4+Pj4gICAgKQ0KPj4+PiAgew0KPj4+PiAt ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPj4+PiAtICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tTaXplOw0KPj4+PiAtICBVREZfRVhURU5UX0FE ICAgICAgICAgICAgICAgICAgKkV4dGVudEFkOw0KPj4+PiAtICBVSU5UNjQgICAgICAgICAgICAg ICAgICAgICAgICAgU3RhcnRpbmdMc247DQo+Pj4+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAg ICAgICAgICBFbmRpbmdMc247DQo+Pj4+IC0gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAg ICAqQnVmZmVyOw0KPj4+PiAtICBVREZfTE9HSUNBTF9WT0xVTUVfREVTQ1JJUFRPUiAgKkxvZ2lj YWxWb2xEZXNjOw0KPj4+PiAtICBVREZfUEFSVElUSU9OX0RFU0NSSVBUT1IgICAgICAgKlBhcnRp dGlvbkRlc2M7DQo+Pj4+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsN Cj4+Pj4gLSAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2ljYWxCbG9ja1NpemU7 DQo+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICBTdGF0dXM7DQo+Pj4+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICBCbG9ja1NpemU7DQo+Pj4+ICsgIFVERl9FWFRFTlRfQUQgICAgICAgICAq RXh0ZW50QWQ7DQo+Pj4+ICsgIEVGSV9MQkEgICAgICAgICAgICAgICBTZXFTdGFydEJsb2NrOw0K Pj4+PiArICBFRklfTEJBICAgICAgICAgICAgICAgU2VxRW5kQmxvY2s7DQo+Pj4+ICsgIEJPT0xF QU4gICAgICAgICAgICAgICBTdG9wU2VxdWVuY2U7DQo+Pj4+ICsgIFZPSUQgICAgICAgICAgICAg ICAgICAqQnVmZmVyOw0KPj4+PiArICBVREZfREVTQ1JJUFRPUl9UQUcgICAgKkRlc2NyaXB0b3JU YWc7DQo+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBMb2dpY2FsQmxvY2tTaXplOw0KPj4+ PiArDQo+Pj4+ICsgIEJsb2NrU2l6ZSA9IEJsb2NrSW8tPk1lZGlhLT5CbG9ja1NpemU7ICBFeHRl bnRBZCA9IA0KPj4+PiArICZBbmNob3JQb2ludC0+TWFpblZvbHVtZURlc2NyaXB0b3JTZXF1ZW5j ZUV4dGVudDsNCj4+Pj4NCj4+Pj4gICAgLy8NCj4+Pj4gLSAgLy8gV2UndmUgYWxyZWFkeSBmb3Vu ZCBhbiBBRFZQIG9uIHRoZSB2b2x1bWUuIEl0IGNvbnRhaW5zIHRoZQ0KPj4+ZXh0ZW50DQo+Pj4+ IC0gIC8vIChNYWluVm9sdW1lRGVzY3JpcHRvclNlcXVlbmNlRXh0ZW50KSB3aGVyZSB0aGUgTWFp biBWb2x1bWUgDQo+Pj4+IERlc2NyaXB0b3INCj4+Pj4gLSAgLy8gU2VxdWVuY2Ugc3RhcnRzLiBU aGVyZWZvcmUsIHdlJ2xsIGxvb2sgZm9yIExvZ2ljYWwgVm9sdW1lDQo+Pj5EZXNjcmlwdG9ycyBh bmQNCj4+Pj4gLSAgLy8gUGFydGl0aW9ucyBEZXNjcmlwdG9ycyBhbmQgc2F2ZSB0aGVtIGluIG1l bW9yeSwgYWNjb3JkaW5nbHkuDQo+Pj4+IC0gIC8vDQo+Pj4+IC0gIC8vIE5vdGUgYWxzbyB0aGF0 IGVhY2ggZGVzY3JpcHRvciB3aWxsIGJlIGFsaWduZWQgb24gYSBibG9jayANCj4+Pj4gc2l6ZQ0K Pj4+KEJsb2NrU2l6ZSkNCj4+Pj4gLSAgLy8gYm91bmRhcnksIHNvIHdlIG5lZWQgdG8gcmVhZCBv bmUgYmxvY2sgYXQgYSB0aW1lLg0KPj4+PiArICAvLyBBbGxvY2F0ZSBidWZmZXIgZm9yIHJlYWRp bmcgZGlzayBibG9ja3MNCj4+Pj4gICAgLy8NCj4+Pj4gLSAgQmxvY2tTaXplICAgID0gQmxvY2tJ by0+TWVkaWEtPkJsb2NrU2l6ZTsNCj4+Pj4gLSAgRXh0ZW50QWQgICAgID0gJkFuY2hvclBvaW50 LT5NYWluVm9sdW1lRGVzY3JpcHRvclNlcXVlbmNlRXh0ZW50Ow0KPj4+PiAtICBTdGFydGluZ0xz biAgPSAoVUlOVDY0KUV4dGVudEFkLT5FeHRlbnRMb2NhdGlvbjsNCj4+Pj4gLSAgRW5kaW5nTHNu ICAgID0gU3RhcnRpbmdMc24gKyBEaXZVNjR4MzIgKA0KPj4+PiAtDQo+PihVSU5UNjQpRXh0ZW50 QWQtPkV4dGVudExlbmd0aCwNCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCbG9ja1NpemUNCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApOw0KPj4+PiAtDQo+Pj4+IC0gIFZvbHVtZS0+TG9naWNhbFZvbERlc2NzID0NCj4+Pj4gLSAg ICAoVURGX0xPR0lDQUxfVk9MVU1FX0RFU0NSSVBUT1IgKiopQWxsb2NhdGVaZXJvUG9vbCAoRXh0 ZW50QWQtDQo+Pj4+ID5FeHRlbnRMZW5ndGgpOw0KPj4+PiAtICBpZiAoVm9sdW1lLT5Mb2dpY2Fs Vm9sRGVzY3MgPT0gTlVMTCkgew0KPj4+PiAtICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNF UzsNCj4+Pj4gLSAgfQ0KPj4+PiAtDQo+Pj4+IC0gIFZvbHVtZS0+UGFydGl0aW9uRGVzY3MgPQ0K Pj4+PiAtICAgIChVREZfUEFSVElUSU9OX0RFU0NSSVBUT1IgKiopQWxsb2NhdGVaZXJvUG9vbCAo RXh0ZW50QWQtDQo+Pj4+ID5FeHRlbnRMZW5ndGgpOw0KPj4+PiAtICBpZiAoVm9sdW1lLT5QYXJ0 aXRpb25EZXNjcyA9PSBOVUxMKSB7DQo+Pj4+IC0gICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNP VVJDRVM7DQo+Pj4+IC0gICAgZ290byBFcnJvcl9BbGxvY19QZHM7DQo+Pj4+IC0gIH0NCj4+Pj4g LQ0KPj4+PiAtICBCdWZmZXIgPSBBbGxvY2F0ZVplcm9Qb29sIChCbG9ja1NpemUpOw0KPj4+PiAr ICBCdWZmZXIgPSBBbGxvY2F0ZVplcm9Qb29sICgoVUlOVE4pQmxvY2tTaXplKTsNCj4+Pj4gICAg aWYgKEJ1ZmZlciA9PSBOVUxMKSB7DQo+Pj4+IC0gICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNP VVJDRVM7DQo+Pj4+IC0gICAgZ290byBFcnJvcl9BbGxvY19CdWY7DQo+Pj4+ICsgICAgcmV0dXJu IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPj4+PiAgICB9DQo+Pj4+DQo+Pj4+IC0gIFZvbHVtZS0+ TG9naWNhbFZvbERlc2NzTm8gID0gMDsNCj4+Pj4gLSAgVm9sdW1lLT5QYXJ0aXRpb25EZXNjc05v ICAgPSAwOw0KPj4+PiAtDQo+Pj4+IC0gIHdoaWxlIChTdGFydGluZ0xzbiA8PSBFbmRpbmdMc24p IHsNCj4+Pj4gLSAgICBTdGF0dXMgPSBEaXNrSW8tPlJlYWREaXNrICgNCj4+Pj4gLSAgICAgIERp c2tJbywNCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gVGhlIGxvZ2ljYWwgcGFydGl0aW9uIGNyZWF0 ZWQgYnkgUGFydGl0aW9uIGRyaXZlciBpcyByZWxhdGl2ZQ0KPj4+dG8gdGhlIG1haW4NCj4+Pj4g KyAgLy8gVkRTIGV4dGVudCBsb2NhdGlvbiwgc28gd2Ugc3RhcnQgdGhlIE1haW4gVm9sdW1lIERl c2NyaXB0b3INCj4+PlNlcXVlbmNlIGF0DQo+Pj4+ICsgIC8vIExCQSAwLg0KPj4+PiArICAvLw0K Pj4+PiArICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGFnYWluIGlmIHdlIGhhdmUgdmFsaWQg Vm9sdW1lDQo+Pj5EZXNjcmlwdG9ycyBoZXJlDQo+Pj4+IHNpbmNlDQo+Pj4+ICsgIC8vIFBhcnRp dGlvbiBkcml2ZXIgYWxyZWFkeSBkaWQuDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIFNlcVN0YXJ0Qmxv Y2sgPSAwOw0KPj4+PiArICBTZXFFbmRCbG9jayA9IFNlcVN0YXJ0QmxvY2sgKyBEaXZVNjR4MzIN Cj4+PigoVUlOVDY0KUV4dGVudEFkLT5FeHRlbnRMZW5ndGgsDQo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tTaXplKTsNCj4+U3RvcFNlcXVlbmNl DQo+Pj4+ICsgPSBGQUxTRTsgIGZvciAoOyBTZXFTdGFydEJsb2NrIDwgU2VxRW5kQmxvY2sgJiYg IVN0b3BTZXF1ZW5jZTsNCj4+PlNlcVN0YXJ0QmxvY2srKykgew0KPj4+PiArICAgIC8vDQo+Pj4+ ICsgICAgLy8gUmVhZCBkaXNrIGJsb2NrDQo+Pj4+ICsgICAgLy8NCj4+Pj4gKyAgICBTdGF0dXMg PSBCbG9ja0lvLT5SZWFkQmxvY2tzICgNCj4+Pj4gKyAgICAgIEJsb2NrSW8sDQo+Pj4+ICAgICAg ICBCbG9ja0lvLT5NZWRpYS0+TWVkaWFJZCwNCj4+Pj4gLSAgICAgIE11bHRVNjR4MzIgKFN0YXJ0 aW5nTHNuLCBCbG9ja1NpemUpLA0KPj4+PiArICAgICAgU2VxU3RhcnRCbG9jaywNCj4+Pj4gICAg ICAgIEJsb2NrU2l6ZSwNCj4+Pj4gICAgICAgIEJ1ZmZlcg0KPj4+PiAgICAgICAgKTsNCj4+Pj4g ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+Pj4+IC0gICAgICBnb3RvIEVycm9yX1Jl YWRfRGlza19CbGs7DQo+Pj4+ICsgICAgICBnb3RvIE91dF9GcmVlOw0KPj4+PiAgICAgIH0NCj4+ Pj4NCj4+Pj4gLSAgICBpZiAoSVNfVEQgKEJ1ZmZlcikpIHsNCj4+Pj4gKyAgICBEZXNjcmlwdG9y VGFnID0gQnVmZmVyOw0KPj4+PiArDQo+Pj4+ICsgICAgc3dpdGNoIChVREZfVEFHX0lEIChEZXNj cmlwdG9yVGFnKSkgew0KPj4+PiArICAgIGNhc2UgVWRmUGFydGl0aW9uRGVzY3JpcHRvcjoNCj4+ Pj4gICAgICAgIC8vDQo+Pj4+IC0gICAgICAvLyBGb3VuZCBhIFRlcm1pbmF0aW5nIERlc2NyaXB0 b3IuIFN0b3AgdGhlIHNlcXVlbmNlIHRoZW4uDQo+Pj4+ICsgICAgICAvLyBTYXZlIFBhcnRpdGlv biBEZXNjcmlwdG9yDQo+Pj4+ICAgICAgICAvLw0KPj4+PiArICAgICAgQ29weU1lbSAoJlZvbHVt ZS0+UGFydGl0aW9uRGVzYywgQnVmZmVyLCBzaXplb2YgKFZvbHVtZS0NCj4+Pj4gPlBhcnRpdGlv bkRlc2MpKTsNCj4+Pj4gICAgICAgIGJyZWFrOw0KPj4+PiAtICAgIH0NCj4+Pj4NCj4+Pj4gLSAg ICBpZiAoSVNfTFZEIChCdWZmZXIpKSB7DQo+Pj4+ICsgICAgY2FzZSBVZGZMb2dpY2FsVm9sdW1l RGVzY3JpcHRvcjoNCj4+Pj4gICAgICAgIC8vDQo+Pj4+IC0gICAgICAvLyBGb3VuZCBhIExvZ2lj YWwgVm9sdW1lIERlc2NyaXB0b3IuDQo+Pj4+ICsgICAgICAvLyBTYXZlIExvZ2ljYWwgVm9sdW1l IERlc2NyaXB0b3INCj4+Pj4gICAgICAgIC8vDQo+Pj4+IC0gICAgICBMb2dpY2FsVm9sRGVzYyA9 DQo+Pj4+IC0gICAgICAgIChVREZfTE9HSUNBTF9WT0xVTUVfREVTQ1JJUFRPUiAqKQ0KPj4+PiAt ICAgICAgICBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFVERl9MT0dJQ0FMX1ZPTFVNRV9ERVND UklQVE9SKSk7DQo+Pj4+IC0gICAgICBpZiAoTG9naWNhbFZvbERlc2MgPT0gTlVMTCkgew0KPj4+ PiAtICAgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4+Pj4gLSAgICAgICAg Z290byBFcnJvcl9BbGxvY19MdmQ7DQo+Pj4+IC0gICAgICB9DQo+Pj4+ICsgICAgICBDb3B5TWVt ICgmVm9sdW1lLT5Mb2dpY2FsVm9sRGVzYywgQnVmZmVyLCBzaXplb2YgKFZvbHVtZS0NCj4+Pj4g PkxvZ2ljYWxWb2xEZXNjKSk7DQo+Pj4+ICsgICAgICBicmVhazsNCj4+Pj4NCj4+Pj4gLSAgICAg IENvcHlNZW0gKChWT0lEICopTG9naWNhbFZvbERlc2MsIEJ1ZmZlciwNCj4+Pj4gLSAgICAgICAg ICAgICAgIHNpemVvZiAoVURGX0xPR0lDQUxfVk9MVU1FX0RFU0NSSVBUT1IpKTsNCj4+Pj4gLSAg ICAgIFZvbHVtZS0+TG9naWNhbFZvbERlc2NzW1ZvbHVtZS0+TG9naWNhbFZvbERlc2NzTm8rK10g PQ0KPj4+PiBMb2dpY2FsVm9sRGVzYzsNCj4+Pj4gLSAgICB9IGVsc2UgaWYgKElTX1BEIChCdWZm ZXIpKSB7DQo+Pj4+IC0gICAgICAvLw0KPj4+PiAtICAgICAgLy8gRm91bmQgYSBQYXJ0aXRpb24g RGVzY3JpcHRvci4NCj4+Pj4gLSAgICAgIC8vDQo+Pj4+IC0gICAgICBQYXJ0aXRpb25EZXNjID0N Cj4+Pj4gLSAgICAgICAgKFVERl9QQVJUSVRJT05fREVTQ1JJUFRPUiAqKQ0KPj4+PiAtICAgICAg ICBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFVERl9QQVJUSVRJT05fREVTQ1JJUFRPUikpOw0K Pj4+PiAtICAgICAgaWYgKFBhcnRpdGlvbkRlc2MgPT0gTlVMTCkgew0KPj4+PiAtICAgICAgICBT dGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4+Pj4gLSAgICAgICAgZ290byBFcnJvcl9B bGxvY19QZDsNCj4+Pj4gLSAgICAgIH0NCj4+Pj4gKyAgICBjYXNlIFVkZlRlcm1pbmF0aW5nRGVz Y3JpcHRvcjoNCj4+Pj4gKyAgICAgIFN0b3BTZXF1ZW5jZSA9IFRSVUU7DQo+Pj4+ICsgICAgICBi cmVhazsNCj4+Pj4NCj4+Pj4gLSAgICAgIENvcHlNZW0gKChWT0lEICopUGFydGl0aW9uRGVzYywg QnVmZmVyLA0KPj4+PiAtICAgICAgICAgICAgICAgc2l6ZW9mIChVREZfUEFSVElUSU9OX0RFU0NS SVBUT1IpKTsNCj4+Pj4gLSAgICAgIFZvbHVtZS0+UGFydGl0aW9uRGVzY3NbVm9sdW1lLT5QYXJ0 aXRpb25EZXNjc05vKytdID0NCj4+PlBhcnRpdGlvbkRlc2M7DQo+Pj4+ICsgICAgZGVmYXVsdDoN Cj4+Pj4gKyAgICAgIDsNCj4+Pj4gICAgICB9DQo+Pj4+IC0NCj4+Pj4gLSAgICBTdGFydGluZ0xz bisrOw0KPj4+PiAgICB9DQo+Pj4+DQo+Pj4+ICAgIC8vDQo+Pj4+IC0gIC8vIFdoZW4gYW4gVURG IHZvbHVtZSAocmV2aXNpb24gMi4wMCBvciBoaWdoZXIpIGNvbnRhaW5zIGEgRmlsZQ0KPj4+RW50 cnkgcmF0aGVyDQo+Pj4+IC0gIC8vIHRoYW4gYW4gRXh0ZW5kZWQgRmlsZSBFbnRyeSAod2hpY2gg aXMgbm90IHJlY29tbWVuZGVkIGFzIHBlcg0KPj4+c3BlYyksIHdlDQo+Pj4+IG5lZWQNCj4+Pj4g LSAgLy8gdG8gbWFrZSBzdXJlIHRoZSBzaXplIG9mIGEgRkUgd2lsbCBiZSBfYXQgbGVhc3RfIDIw NDgNCj4+Pj4gLSAgLy8gKFVERl9MT0dJQ0FMX1NFQ1RPUl9TSVpFKSBieXRlcyBsb25nIHRvIGtl ZXAgYmFja3dhcmQNCj4+PmNvbXBhdGliaWxpdHkuDQo+Pj4+ICsgIC8vIERldGVybWluZSBGRSAo RmlsZSBFbnRyeSkgc2l6ZQ0KPj4+PiAgICAvLw0KPj4+PiAtICBMb2dpY2FsQmxvY2tTaXplID0g TFZfQkxPQ0tfU0laRSAoVm9sdW1lLCBVREZfREVGQVVMVF9MVl9OVU0pOw0KPj4+PiArICBMb2dp Y2FsQmxvY2tTaXplID0gVm9sdW1lLT5Mb2dpY2FsVm9sRGVzYy5Mb2dpY2FsQmxvY2tTaXplOw0K Pj4+PiAgICBpZiAoTG9naWNhbEJsb2NrU2l6ZSA+PSBVREZfTE9HSUNBTF9TRUNUT1JfU0laRSkg ew0KPj4+PiAtICAgIFZvbHVtZS0+RmlsZUVudHJ5U2l6ZSA9IExvZ2ljYWxCbG9ja1NpemU7DQo+ Pj4+ICsgICAgVm9sdW1lLT5GaWxlRW50cnlTaXplID0gKFVJTlROKUxvZ2ljYWxCbG9ja1NpemU7 DQo+Pj4+ICAgIH0gZWxzZSB7DQo+Pj4+ICAgICAgVm9sdW1lLT5GaWxlRW50cnlTaXplID0gVURG X0xPR0lDQUxfU0VDVE9SX1NJWkU7DQo+Pj4+ICAgIH0NCj4+Pj4NCj4+Pj4gLSAgRnJlZVBvb2wg KEJ1ZmZlcik7DQo+Pj4+ICsgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPj4+Pg0KPj4+PiAtICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+Pj4+IC0NCj4+Pj4gLUVycm9yX0FsbG9jX1BkOg0KPj4+PiAt RXJyb3JfQWxsb2NfTHZkOg0KPj4+PiAtICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBWb2x1bWUt PlBhcnRpdGlvbkRlc2NzTm87IEluZGV4KyspIHsNCj4+Pj4gLSAgICBGcmVlUG9vbCAoKFZPSUQg KilWb2x1bWUtPlBhcnRpdGlvbkRlc2NzW0luZGV4XSk7DQo+Pj4+IC0gIH0NCj4+Pj4gLQ0KPj4+ PiAtICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjc05vOyBJ bmRleCsrKSB7DQo+Pj4+IC0gICAgRnJlZVBvb2wgKChWT0lEICopVm9sdW1lLT5Mb2dpY2FsVm9s RGVzY3NbSW5kZXhdKTsNCj4+Pj4gLSAgfQ0KPj4+PiAtDQo+Pj4+IC1FcnJvcl9SZWFkX0Rpc2tf QmxrOg0KPj4+PiArT3V0X0ZyZWU6DQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8vIEZyZWUgYmxvY2sg cmVhZCBidWZmZXINCj4+Pj4gKyAgLy8NCj4+Pj4gICAgRnJlZVBvb2wgKEJ1ZmZlcik7DQo+Pj4+ DQo+Pj4+IC1FcnJvcl9BbGxvY19CdWY6DQo+Pj4+IC0gIEZyZWVQb29sICgoVk9JRCAqKVZvbHVt ZS0+UGFydGl0aW9uRGVzY3MpOw0KPj4+PiAtICBWb2x1bWUtPlBhcnRpdGlvbkRlc2NzID0gTlVM TDsNCj4+Pj4gLQ0KPj4+PiAtRXJyb3JfQWxsb2NfUGRzOg0KPj4+PiAtICBGcmVlUG9vbCAoKFZP SUQgKilWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjcyk7DQo+Pj4+IC0gIFZvbHVtZS0+TG9naWNhbFZv bERlc2NzID0gTlVMTDsNCj4+Pj4gLQ0KPj4+PiAgICByZXR1cm4gU3RhdHVzOw0KPj4+PiAgfQ0K Pj4+Pg0KPj4+PiBAQCAtMjYyLDQ4ICsyMTYsNTMgQEAgR2V0UGRGcm9tTG9uZ0FkICgNCj4+Pj4g ICAgKQ0KPj4+PiAgew0KPj4+PiAgICBVREZfTE9HSUNBTF9WT0xVTUVfREVTQ1JJUFRPUiAgKkxv Z2ljYWxWb2xEZXNjOw0KPj4+PiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXg7DQo+Pj4+IC0gIFVERl9QQVJUSVRJT05fREVTQ1JJUFRPUiAgICAgICAqUGFydGl0aW9uRGVz YzsNCj4+Pj4gICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbk51bTsN Cj4+Pj4NCj4+Pj4gLSAgTG9naWNhbFZvbERlc2MgPSBWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjc1tV REZfREVGQVVMVF9MVl9OVU1dOw0KPj4+PiArICBMb2dpY2FsVm9sRGVzYyA9ICZWb2x1bWUtPkxv Z2ljYWxWb2xEZXNjOw0KPj4+Pg0KPj4+PiAtICBzd2l0Y2ggKExWX1VERl9SRVZJU0lPTiAoTG9n aWNhbFZvbERlc2MpKSB7DQo+Pj4+ICsgIHN3aXRjaCAoVURGX0xWRF9SRVZJU0lPTiAoTG9naWNh bFZvbERlc2MpKSB7DQo+Pj4+ICAgIGNhc2UgMHgwMTAyOg0KPj4+PiArICBjYXNlIDB4MDE1MDoN Cj4+Pj4gKyAgY2FzZSAweDAyMDA6DQo+Pj4+ICsgIGNhc2UgMHgwMjAxOg0KPj4+PiArICBjYXNl IDB4MDI1MDoNCj4+Pj4gKyAgY2FzZSAweDAyNjA6DQo+Pj4+ICAgICAgLy8NCj4+Pj4gLSAgICAv LyBBcyBwZXIgVURGIDEuMDIgc3BlY2lmaWNhdGlvbjoNCj4+Pj4gKyAgICAvLyBVREYgMS4wMiBz cGVjaWZpY2F0aW9uOg0KPj4+PiAgICAgIC8vDQo+Pj4+ICAgICAgLy8gVGhlcmUgc2hhbGwgYmUg ZXhhY3RseSBvbmUgcHJldmFpbGluZyBMb2dpY2FsIFZvbHVtZQ0KPj4+RGVzY3JpcHRvciByZWNv cmRlZA0KPj4+PiAgICAgIC8vIHBlciBWb2x1bWUgU2V0LiBUaGUgUGFydGl0aW9uIE1hcHMgZmll bGQgc2hhbGwgY29udGFpbiBvbmx5DQo+Pj5UeXBlIDENCj4+Pj4gICAgICAvLyBQYXJ0aXRpb24g TWFwcy4NCj4+Pj4gICAgICAvLw0KPj4+PiAtICAgIFBhcnRpdGlvbk51bSA9ICooVUlOVDE2DQo+ Pj4qKSgoVUlOVE4pJkxvZ2ljYWxWb2xEZXNjLT5QYXJ0aXRpb25NYXBzWzRdKTsNCj4+Pj4gLSAg ICBicmVhazsNCj4+Pj4gLSAgY2FzZSAweDAxNTA6DQo+Pj4+ICsgICAgLy8gVURGIDEuNTAgdGhy b3VnaCAyLjYwIHNwZWNzIHNheToNCj4+Pj4gICAgICAvLw0KPj4+PiAtICAgIC8vIEVuc3VyZSBU eXBlIDEgUGFydGl0aW9uIG1hcC4gT3RoZXIgdHlwZXMgYXJlbid0IHN1cHBvcnRlZCBpbg0KPj4+ dGhpcw0KPj4+PiAtICAgIC8vIGltcGxlbWVudGF0aW9uLg0KPj4+PiArICAgIC8vIEZvciB0aGUg cHVycG9zZSBvZiBpbnRlcmNoYW5nZSBwYXJ0aXRpb24gbWFwcyBzaGFsbCBiZQ0KPj4+bGltaXRl ZCB0bw0KPj4+PiArICAgIC8vIFBhcnRpdGlvbiBNYXAgdHlwZSAxLCBleGNlcHQgdHlwZSAyIG1h cHMgYXMgZGVzY3JpYmVkIGluIA0KPj4+PiArIHRoZQ0KPj4+ZG9jdW1lbnQuDQo+Pj4+ICsgICAg Ly8NCj4+Pj4gKyAgICAvLyBOT1RFOiBPbmx5IG9uZSBUeXBlIDEgKFBoeXNpY2FsKSBQYXJ0aXRp b24gaXMgc3VwcG9ydGVkLiBJdA0KPj4+aGFzIGJlZW4NCj4+Pj4gKyAgICAvLyBjaGVja2VkIGFs cmVhZHkgaW4gUGFydGl0aW9uIGRyaXZlciBmb3IgZXhpc3RlbmNlIG9mIGENCj4+c2luZ2xlDQo+ Pj5UeXBlIDENCj4+Pj4gKyAgICAvLyBQYXJ0aXRpb24gbWFwLCBzbyB3ZSBkb24ndCBoYXZlIHRv IGRvdWJsZSBjaGVjayBoZXJlLg0KPj4+PiArICAgIC8vDQo+Pj4+ICsgICAgLy8gUGFydGl0aW9u IHJlZmVyZW5jZSBudW1iZXIgY2FuIGFsc28gYmUgcmV0cmlldmVkIGZyb20NCj4+Pj4gKyAgICAv LyBMb25nQWQtPkV4dGVudExvY2F0aW9uLlBhcnRpdGlvblJlZmVyZW5jZU51bWJlciwgaG93ZXZl ciANCj4+Pj4gKyB0aGUNCj4+PnNwZWMNCj4+Pj4gc2F5cw0KPj4+PiArICAgIC8vIGl0IG1heSBi ZSAwLCBzbyBsZXQncyBub3QgcmVseSBvbiBpdC4NCj4+Pj4gICAgICAvLw0KPj4+PiAtICAgIGlm IChMb2dpY2FsVm9sRGVzYy0+UGFydGl0aW9uTWFwc1swXSAhPSAxIHx8DQo+Pj4+IC0gICAgICAg IExvZ2ljYWxWb2xEZXNjLT5QYXJ0aXRpb25NYXBzWzFdICE9IDYpIHsNCj4+Pj4gLSAgICAgIHJl dHVybiBOVUxMOw0KPj4+PiAtICAgIH0NCj4+Pj4gICAgICBQYXJ0aXRpb25OdW0gPSAqKFVJTlQx Ng0KPj4+KikoKFVJTlROKSZMb2dpY2FsVm9sRGVzYy0+UGFydGl0aW9uTWFwc1s0XSk7DQo+Pj4+ ICAgICAgYnJlYWs7DQo+Pj4+IC0gIGNhc2UgMHgwMjYwOg0KPj4+PiArDQo+Pj4+ICsgIGRlZmF1 bHQ6DQo+Pj4+ICAgICAgLy8NCj4+Pj4gLSAgICAvLyBGYWxsIHRocm91Z2guDQo+Pj4+ICsgICAg Ly8gVW5zdXBwb3J0ZWQgVURGIHJldmlzaW9uDQo+Pj4+ICAgICAgLy8NCj4+Pj4gLSAgZGVmYXVs dDoNCj4+Pj4gLSAgICBQYXJ0aXRpb25OdW0gPSBMb25nQWQtPkV4dGVudExvY2F0aW9uLlBhcnRp dGlvblJlZmVyZW5jZU51bWJlcjsNCj4+Pj4gLSAgICBicmVhazsNCj4+Pj4gKyAgICByZXR1cm4g TlVMTDsNCj4+Pj4gICAgfQ0KPj4+Pg0KPj4+PiAtDQo+DQo+IC0tDQo+IFNlbnQgZnJvbSBteSBB bmRyb2lkIGRldmljZSB3aXRoIEstOSBNYWlsLiBQbGVhc2UgZXhjdXNlIG15IGJyZXZpdHkuDQo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGVkazIt ZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IGh0dHBzOi8v bGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KDQoNCg0KLS0NClBhdWxv IEFsY2FudGFyYSwgSFANClNwZWFraW5nIGZvciBteXNlbGYgb25seS4NCg==