From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 050E321E1B776 for ; Thu, 21 Sep 2017 19:56:49 -0700 (PDT) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP; 21 Sep 2017 19:59:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,426,1500966000"; d="scan'208";a="1174698151" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga001.jf.intel.com with ESMTP; 21 Sep 2017 19:59:55 -0700 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Sep 2017 19:59:53 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX113.amr.corp.intel.com (10.18.116.7) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Sep 2017 19:59:53 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.159]) with mapi id 14.03.0319.002; Fri, 22 Sep 2017 10:59:50 +0800 From: "Ni, Ruiyu" To: "Zeng, Star" , Paulo Alcantara , "Wu, Hao A" , "edk2-devel@lists.01.org" CC: Laszlo Ersek , "Dong, Eric" Thread-Topic: [edk2] [PATCH v3 2/2] MdeModulePkg/PartitionDxe: Fix creation of UDF logical partition Thread-Index: AQHTMjzuYh8YiHkKSEilBN5hMWf4oqK+xA0AgAAMm4CAAAT8gIAAAZQAgAAGpgCAAMvxAIAAjiTA Date: Fri, 22 Sep 2017 02:59:50 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BA65B71@SHSMSX103.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> <0C09AFA07DD0434D9E2A0C6AEB0483103B9787BF@shsmsx102.ccr.corp.intel.com> In-Reply-To: <0C09AFA07DD0434D9E2A0C6AEB0483103B9787BF@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US, zh-CN 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:56:49 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGF1bG8sDQpBcmUgeW91IG9rIHRvIHRoZSBtYWNybyByZWxhdGVkIGNvbW1lbnRzIEkgcHJvdmlk ZWQgdG8gcGF0Y2ggVjMuIzE/DQpJZiB5ZXMsIGNvdWxkIHlvdSBwbGVhc2UgdXBkYXRlIHRoZSBw YXRjaCBWMy4jMiBhY2NvcmRpbmdseT8NCg0KSSBub3RpY2VkIHRoYXQgeW91IHB1dCBzb21lIHN0 cnVjdHVyZXMgdGhhdCBzZWVtIHRvIGJlIFVERiBzdGFuZGFyZA0KaW50byB0aGUgVWRmRHhlIGRy aXZlciBsb2NhbCBoZWFkZXIgZmlsZS4NCkkgYW0gb2sgd2l0aCB5b3VyIGRlY2lzaW9uLiBGb3Ig cHVibGljIGludGVyZmFjZXMsIG5vbmUgaXMgYmV0dGVyIHRoYW4gYmFkLg0KDQpJIGFsc28gY2hl Y2tlZCBhIGJpdCBvZiB5b3VyIHVwZGF0ZWQgY29kZSwgYnV0IGRpZG4ndCBkaWcgaW50byB2ZXJ5 IGRldGFpbHMuDQpJIGFtIG9rIHRvIHRoZSBsb2dpYy4NCg0KVGhhbmtzL1JheQ0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFplbmcsIFN0YXINCj4gU2VudDogRnJpZGF5 LCBTZXB0ZW1iZXIgMjIsIDIwMTcgMTA6MjcgQU0NCj4gVG86IFBhdWxvIEFsY2FudGFyYSA8cGNh Y2pyQGdtYWlsLmNvbT47IFd1LCBIYW8gQSA8aGFvLmEud3VAaW50ZWwuY29tPjsNCj4gZWRrMi1k ZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsg TGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IERvbmcsDQo+IEVyaWMgPGVyaWMuZG9u Z0BpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0 OiBSRTogW2VkazJdIFtQQVRDSCB2MyAyLzJdIE1kZU1vZHVsZVBrZy9QYXJ0aXRpb25EeGU6IEZp eCBjcmVhdGlvbg0KPiBvZiBVREYgbG9naWNhbCBwYXJ0aXRpb24NCj4gDQo+IE9rLCBJIHdpbGwg Z28gdG8gaGVscCBwdXNoIHRoZSBwYXRjaCBzZXJpZXMgaWYgUmF5IGhhcyBubyBhbnkgY29tbWVu dHMuDQo+IA0KPiBUaGFua3MsDQo+IFN0YXINCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogUGF1bG8gQWxjYW50YXJhIFttYWlsdG86cGNhY2pyQGdtYWlsLmNvbV0NCj4gU2Vu dDogVGh1cnNkYXksIFNlcHRlbWJlciAyMSwgMjAxNyAxMDoxNyBQTQ0KPiBUbzogWmVuZywgU3Rh ciA8c3Rhci56ZW5nQGludGVsLmNvbT47IFd1LCBIYW8gQSA8aGFvLmEud3VAaW50ZWwuY29tPjsN Cj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50 ZWwuY29tPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IERvbmcsDQo+IEVyaWMg PGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIHYzIDIv Ml0gTWRlTW9kdWxlUGtnL1BhcnRpdGlvbkR4ZTogRml4DQo+IGNyZWF0aW9uIG9mIFVERiBsb2dp Y2FsIHBhcnRpdGlvbg0KPiANCj4gT24gVGh1LCBTZXAgMjEsIDIwMTcgYXQgMTA6NTIgQU0sIFBh dWxvIEFsY2FudGFyYSA8cGNhY2pyQHp5dG9yLmNvbT4NCj4gd3JvdGU6DQo+ID4NCj4gPg0KPiA+ IE9uIFNlcHRlbWJlciAyMSwgMjAxNyAxMDo0NzowNyBBTSBHTVQtMDM6MDAsICJaZW5nLCBTdGFy Ig0KPiA8c3Rhci56ZW5nQGludGVsLmNvbT4gd3JvdGU6DQo+ID4+RG9lcyBpdCBoYXZlIGZ1bmN0 aW9uYWwgaW1wYWN0Pw0KPiA+DQo+ID4gTm9wZS4gV2hlbiBQYXJ0aXRpb24gZHJpdmVyIHdhbGtz IHRoZSBwYXJ0aXRpb24gZGV0ZWN0IHJvdXRpbmUgdGFibGUsIGl0DQo+IGV4ZWN1dGVzIGVhY2gg cm91dGluZSBhbmQgdGhlbiBjaGVja3MgZm9yIEVGSV9OT19NRURJQSBhbmQNCj4gRUZJX01FRElB X0NIQU5HRUQgb25seS4gU28sIHRoZSBjaGlsZCBoYW5kbGUgaXMgaW5zdGFsbGVkIGFuZCB0aGUN Cj4gRUZJX05PVF9GT1VORCBpcyBhIG5vLW9wIGluIHRoYXQgY2FzZS4NCj4gDQo+IEJUVywgSSBw ZXJmb3JtZWQgYSBxdWljayB0ZXN0IHdpdGggVWRmRHhlIGVuYWJsZWQgYW5kIGRpc2FibGVkIGlu IE9WTUYNCj4gYW5kIHRoZSByZW1vdmFsIGRpZCBub3Qgc2VlbSB0byBicmVhayBvciBjaGFuZ2Ug YW55IGJlaGF2aW9yLg0KPiANCj4gVGhhbmtzIQ0KPiBQYXVsbw0KPiANCj4gPg0KPiA+IFRoYW5r cyENCj4gPiBQYXVsbw0KPiA+DQo+ID4+DQo+ID4+VGhhbmtzLA0KPiA+PlN0YXINCj4gPj4tLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PkZyb206IFBhdWxvIEFsY2FudGFyYSBbbWFpbHRv OnBjYWNqckB6eXRvci5jb21dDQo+ID4+U2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMSwgMjAx NyA5OjI5IFBNDQo+ID4+VG86IFd1LCBIYW8gQSA8aGFvLmEud3VAaW50ZWwuY29tPjsgZWRrMi1k ZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj5DYzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+ OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsNCj4gPj5Eb25nLCBFcmljIDxlcmlj LmRvbmdAaW50ZWwuY29tPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPj5T dWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCB2MyAyLzJdIE1kZU1vZHVsZVBrZy9QYXJ0aXRpb25E eGU6IEZpeA0KPiA+PmNyZWF0aW9uIG9mIFVERiBsb2dpY2FsIHBhcnRpdGlvbg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+Pk9uIFNlcHRlbWJlciAyMSwgMjAxNyA5OjQ0OjEwIEFNIEdNVC0wMzowMCwg Ild1LCBIYW8gQSINCj4gPj48aGFvLmEud3VAaW50ZWwuY29tPiB3cm90ZToNCj4gPj4+T25lIHNt YWxsIGNvbW1lbnQsIHdpdGhpbiBmdW5jdGlvbiBQYXJ0aXRpb25JbnN0YWxsVWRmQ2hpbGRIYW5k bGVzKCk6DQo+ID4+Pg0KPiA+Pj4gIC4uLg0KPiA+Pj4gIC8vDQo+ID4+PiAgLy8gSW5zdGFsbCBw YXJ0aXRpb24gY2hpbGQgaGFuZGxlIGZvciBVREYgZmlsZSBzeXN0ZW0NCj4gPj4+ICAvLw0KPiA+ Pj4gIFN0YXR1cyA9IFBhcnRpdGlvbkluc3RhbGxDaGlsZEhhbmRsZSAoDQo+ID4+PiAgICAuLi4N Cj4gPj4+ICAgICk7DQo+ID4+PmlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7ICA8LS0tLS0gSXMg dGhpcyBhIHR5cG8/ICJpZiAoRUZJX0VSUk9SDQo+ID4+PihTdGF0dXMpKSB7Ig0KPiA+Pj4gICAg U3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gPj4+ICB9DQo+ID4+DQo+ID4+WWVzLCBpdCBpcy4g R29vZCBjYXRjaCEgQ291bGQgeW91IHBsZWFzZSBmaXggdGhhdCBmb3IgbWUgYnkgcmVtb3ZpbmcN Cj4gPj50aGUgaWYgY29uZGl0aW9uPyBPdGhlcndpc2UgSSBjYW4gc2VuZCBhIHY0IGxhdGVyIHdp dGggdGhhdC4NCj4gPj4NCj4gPj5UaGFua3MhDQo+ID4+UGF1bG8NCj4gPj4NCj4gPj4+DQo+ID4+ Pg0KPiA+Pj5CZXN0IFJlZ2FyZHMsDQo+ID4+PkhhbyBXdQ0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBlZGsyLWRldmVsIFttYWls dG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmDQo+ID4+Pk9mIFBh dWxvDQo+ID4+Pj4gQWxjYW50YXJhDQo+ID4+Pj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAy MSwgMjAxNyAyOjE2IEFNDQo+ID4+Pj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+ Pj4gQ2M6IE5pLCBSdWl5dTsgTGFzemxvIEVyc2VrOyBEb25nLCBFcmljOyBaZW5nLCBTdGFyDQo+ ID4+Pj4gU3ViamVjdDogW2VkazJdIFtQQVRDSCB2MyAyLzJdIE1kZU1vZHVsZVBrZy9QYXJ0aXRp b25EeGU6IEZpeA0KPiA+Pj5jcmVhdGlvbiBvZg0KPiA+Pj4+IFVERiBsb2dpY2FsIHBhcnRpdGlv bg0KPiA+Pj4+DQo+ID4+Pj4gRG8gbm90IHJlc2VydmUgZW50aXJlIGJsb2NrIGRldmljZSBzaXpl IGZvciBhbiBVREYgZmlsZSBzeXN0ZW0gLQ0KPiA+Pj4+IGluc3RlYWQsIHJlc2VydmUgdGhlIGFw cHJvcHJpYXRlIHNwYWNlIChVREYgbG9naWNhbCB2b2x1bWUgc3BhY2UpDQo+ID4+Zm9yDQo+ID4+ Pj4gaXQuDQo+ID4+Pj4NCj4gPj4+PiBBZGRpdGlvbmFsbHksIG9ubHkgY3JlYXRlIGEgbG9naWNh bCBwYXJ0aXRpb24gZm9yIFVERiBsb2dpY2FsDQo+ID4+dm9sdW1lcw0KPiA+Pj4+IHRoYXQgYXJl IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgRURLMiBVREYgZmlsZSBzeXN0ZW0gaW1wbGVtZW50YXRp b24uDQo+ID4+PkZvcg0KPiA+Pj4+IGluc3RhbmNlLCBhbiBVREYgdm9sdW1lIHdpdGggYSBzaW5n bGUgTFZEIGFuZCBhIHNpbmdsZSBQaHlzaWNhbA0KPiA+PihUeXBlDQo+ID4+PjEpDQo+ID4+Pj4g UGFydGl0aW9uIHdpbGwgYmUgc3VwcG9ydGVkLg0KPiA+Pj4+DQo+ID4+Pj4gQ2M6IEVyaWMgRG9u ZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4gPj4+PiBDYzogUnVpeXUgTmkgPHJ1aXl1Lm5pQGlu dGVsLmNvbT4NCj4gPj4+PiBDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+ Pj4+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+Pj4+IFJlcG9ydGVk LWJ5OiBSdWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0KPiA+Pj4+IENvbnRyaWJ1dGVkLXVu ZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gPj4+PiBTaWduZWQt b2ZmLWJ5OiBQYXVsbyBBbGNhbnRhcmEgPHBjYWNqckB6eXRvci5jb20+DQo+ID4+Pj4gLS0tDQo+ ID4+Pj4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9QYXJ0aXRpb25EeGUvVWRmLmMgICAg ICAgICAgICB8IDM2Mw0KPiA+Pj4rKysrKysrKysrLS0NCj4gPj4+PiAgTWRlTW9kdWxlUGtnL1Vu aXZlcnNhbC9EaXNrL1VkZkR4ZS9GaWxlLmMgICAgICAgICAgICAgICAgIHwgIDE2ICstDQo+ID4+ Pj4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvRmlsZVN5c3RlbU9wZXJhdGlv bnMuYyB8IDYyNw0KPiA+Pj4+ICsrKysrKysrLS0tLS0tLS0tLS0tDQo+ID4+Pj4gIE1kZU1vZHVs ZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvVWRmLmMgICAgICAgICAgICAgICAgICB8ICAgNyAt DQo+ID4+Pj4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvVWRmLmggICAgICAg ICAgICAgICAgICB8IDE1OA0KPiA+Pj4rKy0tLQ0KPiA+Pj4+ICA1IGZpbGVzIGNoYW5nZWQsIDYw NiBpbnNlcnRpb25zKCspLCA1NjUgZGVsZXRpb25zKC0pDQo+ID4+Pj4NCj4gPj4+PiBkaWZmIC0t Z2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9VZGYuYw0KPiA+ Pj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9VZGYuYw0KPiA+ Pj4+IGluZGV4IDYwOWY1NmNlZjYuLjU3MmJhN2E4MWEgMTAwNjQ0DQo+ID4+Pj4gLS0tIGEvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9VZGYuYw0KPiA+Pj4+ICsrKyBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9QYXJ0aXRpb25EeGUvVWRmLmMNCj4gPj4+PiBA QCAtNjQsMTEgKzY0LDEyIEBAIEZpbmRBbmNob3JWb2x1bWVEZXNjcmlwdG9yUG9pbnRlciAoDQo+ ID4+Pj4gICAgT1VUICBVREZfQU5DSE9SX1ZPTFVNRV9ERVNDUklQVE9SX1BPSU5URVIgICpBbmNo b3JQb2ludA0KPiA+Pj4+ICAgICkNCj4gPj4+PiAgew0KPiA+Pj4+IC0gIEVGSV9TVEFUVVMgIFN0 YXR1czsNCj4gPj4+PiAtICBVSU5UMzIgICAgICBCbG9ja1NpemU7DQo+ID4+Pj4gLSAgRUZJX0xC QSAgICAgRW5kTEJBOw0KPiA+Pj4+IC0gIEVGSV9MQkEgICAgIERlc2NyaXB0b3JMQkFzWzRdOw0K PiA+Pj4+IC0gIFVJTlROICAgICAgIEluZGV4Ow0KPiA+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgU3RhdHVzOw0KPiA+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgQmxvY2tTaXplOw0KPiA+ Pj4+ICsgIEVGSV9MQkEgICAgICAgICAgICAgRW5kTEJBOw0KPiA+Pj4+ICsgIEVGSV9MQkEgICAg ICAgICAgICAgRGVzY3JpcHRvckxCQXNbNF07DQo+ID4+Pj4gKyAgVUlOVE4gICAgICAgICAgICAg ICBJbmRleDsNCj4gPj4+PiArICBVREZfREVTQ1JJUFRPUl9UQUcgICpEZXNjcmlwdG9yVGFnOw0K PiA+Pj4+DQo+ID4+Pj4gICAgQmxvY2tTaXplID0gQmxvY2tJby0+TWVkaWEtPkJsb2NrU2l6ZTsN Cj4gPj4+PiAgICBFbmRMQkEgPSBCbG9ja0lvLT5NZWRpYS0+TGFzdEJsb2NrOyBAQCAtODgsMTAg Kzg5LDEzIEBADQo+ID4+Pj4gRmluZEFuY2hvclZvbHVtZURlc2NyaXB0b3JQb2ludGVyICgNCj4g Pj4+PiAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+PiAgICAgICAgcmV0dXJu IFN0YXR1czsNCj4gPj4+PiAgICAgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgICBEZXNjcmlwdG9y VGFnID0gJkFuY2hvclBvaW50LT5EZXNjcmlwdG9yVGFnOw0KPiA+Pj4+ICsNCj4gPj4+PiAgICAg IC8vDQo+ID4+Pj4gICAgICAvLyBDaGVjayBpZiByZWFkIExCQSBoYXMgYSB2YWxpZCBBVkRQIGRl c2NyaXB0b3IuDQo+ID4+Pj4gICAgICAvLw0KPiA+Pj4+IC0gICAgaWYgKElTX0FWRFAgKEFuY2hv clBvaW50KSkgew0KPiA+Pj4+ICsgICAgaWYgKERlc2NyaXB0b3JUYWctPlRhZ0lkZW50aWZpZXIg PT0NCj4gPj4+VWRmQW5jaG9yVm9sdW1lRGVzY3JpcHRvclBvaW50ZXIpIHsNCj4gPj4+PiAgICAg ICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+Pj4+ICAgICAgfQ0KPiA+Pj4+ICAgIH0NCj4gPj4+ PiBAQCAtMTAyLDIzICsxMDYsMTggQEAgRmluZEFuY2hvclZvbHVtZURlc2NyaXB0b3JQb2ludGVy ICggIH0NCj4gPj4+Pg0KPiA+Pj4+ICAvKioNCj4gPj4+PiAtICBDaGVjayBpZiBibG9jayBkZXZp Y2Ugc3VwcG9ydHMgYSB2YWxpZCBVREYgZmlsZSBzeXN0ZW0gYXMNCj4gPj4+c3BlY2lmaWVkIGJ5 IE9TVEENCj4gPj4+PiAtICBVbml2ZXJzYWwgRGlzayBGb3JtYXQgU3BlY2lmaWNhdGlvbiAyLjYw Lg0KPiA+Pj4+ICsgIEZpbmQgVURGIHZvbHVtZSBpZGVudGlmaWVycyBpbiBhIFZvbHVtZSBSZWNv Z25pdGlvbiBTZXF1ZW5jZS4NCj4gPj4+Pg0KPiA+Pj4+IC0gIEBwYXJhbVtpbl0gICBCbG9ja0lv ICBCbG9ja0lvIGludGVyZmFjZS4NCj4gPj4+PiAtICBAcGFyYW1baW5dICAgRGlza0lvICAgRGlz a0lvIGludGVyZmFjZS4NCj4gPj4+PiArICBAcGFyYW1baW5dICBCbG9ja0lvICAgICAgICAgICAg IEJsb2NrSW8gaW50ZXJmYWNlLg0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gIERpc2tJbyAgICAgICAg ICAgICAgRGlza0lvIGludGVyZmFjZS4NCj4gPj4+Pg0KPiA+Pj4+IC0gIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgVURGIGZpbGUgc3lzdGVtIGZvdW5kLg0KPiA+Pj4+IC0gIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgVURGIGZpbGUgc3lzdGVtIG5vdCBmb3VuZC4NCj4gPj4+PiAt ICBAcmV0dmFsIEVGSV9OT19NRURJQSAgICAgICAgIFRoZSBkZXZpY2UgaGFzIG5vIG1lZGlhLg0K PiA+Pj4+IC0gIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgVGhlIGRldmljZSByZXBvcnRl ZCBhbiBlcnJvci4NCj4gPj4+PiAtICBAcmV0dmFsIEVGSV9WT0xVTUVfQ09SUlVQVEVEIFRoZSBm aWxlIHN5c3RlbSBzdHJ1Y3R1cmVzIGFyZQ0KPiA+Pj5jb3JydXB0ZWQuDQo+ID4+Pj4gLSAgQHJl dHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBUaGUgc2NhbiB3YXMgbm90IHN1Y2Nlc3NmdWwgZHVl IHRvDQo+ID4+PmxhY2sgb2YNCj4gPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc291cmNlcy4NCj4gPj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFVE RiB2b2x1bWUgaWRlbnRpZmllcnMgd2VyZQ0KPiA+PmZvdW5kLg0KPiA+Pj4+ICsgIEByZXR2YWwg RUZJX05PVF9GT1VORCAgICAgICAgICAgVURGIHZvbHVtZSBpZGVudGlmaWVycyB3ZXJlIG5vdA0K PiA+Pj5mb3VuZC4NCj4gPj4+PiArICBAcmV0dmFsIG90aGVyICAgICAgICAgICAgICAgICAgIEZh aWxlZCB0byBwZXJmb3JtIGRpc2sgSS9PLg0KPiA+Pj4+DQo+ID4+Pj4gICoqLw0KPiA+Pj4+ICBF RklfU1RBVFVTDQo+ID4+Pj4gLVN1cHBvcnRVZGZGaWxlU3lzdGVtICgNCj4gPj4+PiArRmluZFVk ZlZvbHVtZUlkZW50aWZpZXJzICgNCj4gPj4+PiAgICBJTiBFRklfQkxPQ0tfSU9fUFJPVE9DT0wg ICpCbG9ja0lvLA0KPiA+Pj4+ICAgIElOIEVGSV9ESVNLX0lPX1BST1RPQ09MICAgKkRpc2tJbw0K PiA+Pj4+ICAgICkNCj4gPj4+PiBAQCAtMTI4LDcgKzEyNyw2IEBAIFN1cHBvcnRVZGZGaWxlU3lz dGVtICgNCj4gPj4+PiAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVu ZERpc2tPZmZzZXQ7DQo+ID4+Pj4gICAgQ0RST01fVk9MVU1FX0RFU0NSSVBUT1IgICAgICAgICAg ICAgICBWb2xEZXNjcmlwdG9yOw0KPiA+Pj4+ICAgIENEUk9NX1ZPTFVNRV9ERVNDUklQVE9SICAg ICAgICAgICAgICAgVGVybWluYXRpbmdWb2xEZXNjcmlwdG9yOw0KPiA+Pj4+IC0gIFVERl9BTkNI T1JfVk9MVU1FX0RFU0NSSVBUT1JfUE9JTlRFUiAgQW5jaG9yUG9pbnQ7DQo+ID4+Pj4NCj4gPj4+ PiAgICBaZXJvTWVtICgoVk9JRCAqKSZUZXJtaW5hdGluZ1ZvbERlc2NyaXB0b3IsIHNpemVvZg0K PiA+Pj4+IChDRFJPTV9WT0xVTUVfREVTQ1JJUFRPUikpOw0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTE2 Nyw3ICsxNjUsNyBAQCBTdXBwb3J0VWRmRmlsZVN5c3RlbSAoDQo+ID4+Pj4gICAgICAgICAgKENv bXBhcmVNZW0gKChWT0lEICopJlZvbERlc2NyaXB0b3IsDQo+ID4+Pj4gICAgICAgICAgICAgICAg ICAgICAgIChWT0lEICopJlRlcm1pbmF0aW5nVm9sRGVzY3JpcHRvciwNCj4gPj4+PiAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mIChDRFJPTV9WT0xVTUVfREVTQ1JJUFRPUikpID09IDApKSB7 DQo+ID4+Pj4gLSAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4+Pj4gKyAgICAgIHJl dHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+Pj4+ICAgICAgfQ0KPiA+Pj4+ICAgIH0NCj4gPj4+Pg0K PiA+Pj4+IEBAIC0xNzYsNyArMTc0LDcgQEAgU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKA0KPiA+Pj4+ ICAgIC8vDQo+ID4+Pj4gICAgT2Zmc2V0ICs9IFVERl9MT0dJQ0FMX1NFQ1RPUl9TSVpFOw0KPiA+ Pj4+ICAgIGlmIChPZmZzZXQgPj0gRW5kRGlza09mZnNldCkgew0KPiA+Pj4+IC0gICAgcmV0dXJu IEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4+PiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ Pj4+ICAgIH0NCj4gPj4+Pg0KPiA+Pj4+ICAgIFN0YXR1cyA9IERpc2tJby0+UmVhZERpc2sgKA0K PiA+Pj4+IEBAIC0xOTYsNyArMTk0LDcgQEAgU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKA0KPiA+Pj4+ ICAgICAgICAoQ29tcGFyZU1lbSAoKFZPSUQgKilWb2xEZXNjcmlwdG9yLlVua25vd24uSWQsDQo+ ID4+Pj4gICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKVVERl9OU1IzX0lERU5USUZJRVIsDQo+ ID4+Pj4gICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFZvbERlc2NyaXB0b3IuVW5rbm93bi5J ZCkpICE9IDApKSB7DQo+ID4+Pj4gLSAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+Pj4+ ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4+Pj4gICAgfQ0KPiA+Pj4+DQo+ID4+Pj4g ICAgLy8NCj4gPj4+PiBAQCAtMjA0LDcgKzIwMiw3IEBAIFN1cHBvcnRVZGZGaWxlU3lzdGVtICgN Cj4gPj4+PiAgICAvLw0KPiA+Pj4+ICAgIE9mZnNldCArPSBVREZfTE9HSUNBTF9TRUNUT1JfU0la RTsNCj4gPj4+PiAgICBpZiAoT2Zmc2V0ID49IEVuZERpc2tPZmZzZXQpIHsNCj4gPj4+PiAtICAg IHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4+Pj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VO RDsNCj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4gPj4+PiAgICBTdGF0dXMgPSBEaXNrSW8tPlJlYWRE aXNrICgNCj4gPj4+PiBAQCAtMjIxLDE1ICsyMTksMjkxIEBAIFN1cHBvcnRVZGZGaWxlU3lzdGVt ICgNCj4gPj4+PiAgICBpZiAoQ29tcGFyZU1lbSAoKFZPSUQgKilWb2xEZXNjcmlwdG9yLlVua25v d24uSWQsDQo+ID4+Pj4gICAgICAgICAgICAgICAgICAgIChWT0lEICopVURGX1RFQV9JREVOVElG SUVSLA0KPiA+Pj4+ICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFZvbERlc2NyaXB0b3IuVW5r bm93bi5JZCkpICE9IDApIHsNCj4gPj4+PiAtICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ ID4+Pj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPj4+PiArICB9DQo+ID4+Pj4gKw0K PiA+Pj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4+PiArfQ0KPiA+Pj4+ICsNCj4gPj4+ PiArLyoqDQo+ID4+Pj4gKyAgQ2hlY2sgaWYgTG9naWNhbCBWb2x1bWUgRGVzY3JpcHRvciBpcyBz dXBwb3J0ZWQgYnkgY3VycmVudCBFREsyDQo+ID4+PlVERiBmaWxlDQo+ID4+Pj4gKyAgc3lzdGVt IGltcGxlbWVudGF0aW9uLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1baW5dICBMb2dpY2Fs Vm9sRGVzYyAgTG9naWNhbCBWb2x1bWUgRGVzY3JpcHRvciBwb2ludGVyLg0KPiA+Pj4+ICsNCj4g Pj4+PiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgICAgICAgTG9naWNhbCBWb2x1bWUgRGVzY3Jp cHRvciBpcw0KPiA+Pj5zdXBwb3J0ZWQuDQo+ID4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAg ICAgICAgIExvZ2ljYWwgVm9sdW1lIERlc2NyaXB0b3IgaXMgbm90DQo+ID4+PnN1cHBvcnRlZC4N Cj4gPj4+PiArDQo+ID4+Pj4gKyoqLw0KPiA+Pj4+ICtCT09MRUFODQo+ID4+Pj4gK0lzTG9naWNh bFZvbHVtZURlc2NyaXB0b3JTdXBwb3J0ZWQgKA0KPiA+Pj4+ICsgIFVERl9MT0dJQ0FMX1ZPTFVN RV9ERVNDUklQVE9SICpMb2dpY2FsVm9sRGVzYw0KPiA+Pj4+ICsgICkNCj4gPj4+PiArew0KPiA+ Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gQ2hlY2sgZm9yIGEgdmFsaWQgVURGIHJldmlzaW9uIHJh bmdlDQo+ID4+Pj4gKyAgLy8NCj4gPj4+PiArICBzd2l0Y2ggKFVERl9MVkRfUkVWSVNJT04gKExv Z2ljYWxWb2xEZXNjKSkgew0KPiA+Pj4+ICsgIGNhc2UgMHgwMTAyOg0KPiA+Pj4+ICsgIGNhc2Ug MHgwMTUwOg0KPiA+Pj4+ICsgIGNhc2UgMHgwMjAwOg0KPiA+Pj4+ICsgIGNhc2UgMHgwMjAxOg0K PiA+Pj4+ICsgIGNhc2UgMHgwMjUwOg0KPiA+Pj4+ICsgIGNhc2UgMHgwMjYwOg0KPiA+Pj4+ICsg ICAgYnJlYWs7DQo+ID4+Pj4gKyAgZGVmYXVsdDoNCj4gPj4+PiArICAgIHJldHVybiBGQUxTRTsN Cj4gPj4+PiArICB9DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gQ2hlY2sg Zm9yIGEgc2luZ2xlIFBhcnRpdGlvbiBNYXAgIC8vICBpZg0KPiA+Pj4+ICsgKExvZ2ljYWxWb2xE ZXNjLT5OdW1iZXJPZlBhcnRpdGlvbk1hcHMgPiAxKSB7DQo+ID4+Pj4gKyAgICByZXR1cm4gRkFM U0U7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gVURGIDEuMDIgcmV2 aXNpb24gc3VwcG9ydHMgb25seSBUeXBlIDEgKFBoeXNpY2FsKSBwYXJ0aXRpb25zLA0KPiA+Pj5i dXQNCj4gPj4+PiArICAvLyBsZXQncyBjaGVjayBpdCBhbnkgd2F5Lg0KPiA+Pj4+ICsgIC8vDQo+ ID4+Pj4gKyAgLy8gUGFydGl0aW9uTWFwWzBdIC0+IHR5cGUNCj4gPj4+PiArICAvLyBQYXJ0aXRp b25NYXBbMV0gLT4gbGVuZ3RoIChpbiBieXRlcykgIC8vICBpZg0KPiA+Pj4+ICsgKExvZ2ljYWxW b2xEZXNjLT5QYXJ0aXRpb25NYXBzWzBdICE9IDEgfHwNCj4gPj4+PiArICAgICAgTG9naWNhbFZv bERlc2MtPlBhcnRpdGlvbk1hcHNbMV0gIT0gNikgew0KPiA+Pj4+ICsgICAgcmV0dXJuIEZBTFNF Ow0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgcmV0dXJuIFRSVUU7DQo+ID4+Pj4g K30NCj4gPj4+PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIEZpbmQgVURGIGxvZ2ljYWwgdm9s dW1lIGxvY2F0aW9uIGFuZCB3aGV0aGVyIGl0IGlzIHN1cHBvcnRlZCBieQ0KPiA+Pj5jdXJyZW50 IEVESzINCj4gPj4+PiArICBVREYgZmlsZSBzeXN0ZW0gaW1wbGVtZW50YXRpb24uDQo+ID4+Pj4g Kw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gIEJsb2NrSW8gICAgICAgICAgICAgQmxvY2tJbyBpbnRl cmZhY2UuDQo+ID4+Pj4gKyAgQHBhcmFtW2luXSAgRGlza0lvICAgICAgICAgICAgICBEaXNrSW8g aW50ZXJmYWNlLg0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gIEFuY2hvclBvaW50ICAgICAgICAgQW5j aG9yIHZvbHVtZSBkZXNjcmlwdG9yIHBvaW50ZXIuDQo+ID4+Pj4gKyAgQHBhcmFtW291dF0gTWFp blZkc1N0YXJ0QmxvY2sgICBNYWluIFZEUyBzdGFydGluZyBibG9jayBudW1iZXIuDQo+ID4+Pj4g KyAgQHBhcmFtW291dF0gTWFpblZkc0VuZEJsb2NrICAgICBNYWluIFZEUyBlbmRpbmcgYmxvY2sg bnVtYmVyLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgIFVERiBsb2dpY2FsIHZvbHVtZSB3YXMgZm91bmQuDQo+ID4+Pj4gKyAgQHJldHZhbCBFRklf Vk9MVU1FX0NPUlJVUFRFRCAgICBVREYgZmlsZSBzeXN0ZW0gc3RydWN0dXJlcyBhcmUNCj4gPj4+ PiBjb3JydXB0ZWQuDQo+ID4+Pj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICBV REYgbG9naWNhbCB2b2x1bWUgaXMgbm90DQo+ID4+PnN1cHBvcnRlZC4NCj4gPj4+PiArICBAcmV0 dmFsIG90aGVyICAgICAgICAgICAgICAgICAgIEZhaWxlZCB0byBwZXJmb3JtIGRpc2sgSS9PLg0K PiA+Pj4+ICsNCj4gPj4+PiArKiovDQo+ID4+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+PiArRmluZExv Z2ljYWxWb2x1bWVMb2NhdGlvbiAoDQo+ID4+Pj4gKyAgSU4gICBFRklfQkxPQ0tfSU9fUFJPVE9D T0wgICAgICAgICAgICAgICAgICpCbG9ja0lvLA0KPiA+Pj4+ICsgIElOICAgRUZJX0RJU0tfSU9f UFJPVE9DT0wgICAgICAgICAgICAgICAgICAqRGlza0lvLA0KPiA+Pj4+ICsgIElOICAgVURGX0FO Q0hPUl9WT0xVTUVfREVTQ1JJUFRPUl9QT0lOVEVSICAqQW5jaG9yUG9pbnQsDQo+ID4+Pj4gKyAg T1VUICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpNYWluVmRzU3RhcnRC bG9jaywNCj4gPj4+PiArICBPVVQgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKk1haW5WZHNFbmRCbG9jaw0KPiA+Pj4+ICsgICkNCj4gPj4+PiArew0KPiA+Pj4+ICsgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgIEJsb2NrU2l6ZTsNCj4gPj4+PiArICBFRklfTEJBICAgICAg ICAgICAgICAgICAgICAgICAgTGFzdEJsb2NrOw0KPiA+Pj4+ICsgIFVERl9FWFRFTlRfQUQgICAg ICAgICAgICAgICAgICAqRXh0ZW50QWQ7DQo+ID4+Pj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICAgICAgIFNlcUJsb2Nrc051bTsNCj4gPj4+PiArICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgICAgICAgU2VxU3RhcnRCbG9jazsNCj4gPj4+PiArICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgICAgICAgR3VhcmRNYWluVmRzU3RhcnRCbG9jazsNCj4gPj4+PiArICBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAgICAgKkJ1ZmZlcjsNCj4gPj4+PiArICBVSU5UNjQgICAgICAgICAgICAg ICAgICAgICAgICAgU2VxRW5kQmxvY2s7DQo+ID4+Pj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAg ICAgICAgICAgIFN0b3BTZXF1ZW5jZTsNCj4gPj4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgTHZkc0NvdW50Ow0KPiA+Pj4+ICsgIFVERl9MT0dJQ0FMX1ZPTFVNRV9ERVNDUklQ VE9SICAqTG9naWNhbFZvbERlc2M7DQo+ID4+Pj4gKyAgVURGX0RFU0NSSVBUT1JfVEFHICAgICAg ICAgICAgICpEZXNjcmlwdG9yVGFnOw0KPiA+Pj4+ICsNCj4gPj4+PiArICBCbG9ja1NpemUgPSBC bG9ja0lvLT5NZWRpYS0+QmxvY2tTaXplOyAgTGFzdEJsb2NrID0NCj4gPj4+PiArIEJsb2NrSW8t Pk1lZGlhLT5MYXN0QmxvY2s7ICBFeHRlbnRBZCA9DQo+ID4+Pj4gKyAmQW5jaG9yUG9pbnQtPk1h aW5Wb2x1bWVEZXNjcmlwdG9yU2VxdWVuY2VFeHRlbnQ7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIC8v DQo+ID4+Pj4gKyAgLy8gVURGIDIuNjAsIDIuMi4zLjEgc3RydWN0IE1haW5Wb2x1bWVEZXNjcmlw dG9yU2VxdWVuY2VFeHRlbnQNCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIC8vIFRoZSBNYWluIFZv bHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlIEV4dGVudCBzaGFsbCBoYXZlIGENCj4gPj5taW5pbXVt DQo+ID4+Pmxlbmd0aA0KPiA+Pj4+IG9mDQo+ID4+Pj4gKyAgLy8gMTYgbG9naWNhbCBzZWN0b3Jz Lg0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gQWxzbyBtYWtlIHN1cmUgaXQgZG9lcyBub3Qg ZXhjZWVkIG1heGltdW0gbnVtYmVyIG9mIGJsb2NrcyBpbg0KPiA+Pj50aGUgZGlzay4NCj4gPj4+ PiArICAvLw0KPiA+Pj4+ICsgIFNlcUJsb2Nrc051bSA9IERpdlU2NHgzMiAoKFVJTlQ2NClFeHRl bnRBZC0+RXh0ZW50TGVuZ3RoLA0KPiA+Pj5CbG9ja1NpemUpOw0KPiA+Pj4+ICsgIGlmIChTZXFC bG9ja3NOdW0gPCAxNiB8fCAoRUZJX0xCQSlTZXFCbG9ja3NOdW0gPiBMYXN0QmxvY2sgKyAxKSB7 DQo+ID4+Pj4gKyAgICByZXR1cm4gRUZJX1ZPTFVNRV9DT1JSVVBURUQ7DQo+ID4+Pj4gKyAgfQ0K PiA+Pj4+ICsNCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIC8vIENoZWNrIGZvciB2YWxpZCBWb2x1 bWUgRGVzY3JpcHRvciBTZXF1ZW5jZSBzdGFydGluZyBibG9jaw0KPiA+Pj5udW1iZXINCj4gPj4+ PiArICAvLw0KPiA+Pj4+ICsgIFNlcVN0YXJ0QmxvY2sgPSAoVUlOVDY0KUV4dGVudEFkLT5FeHRl bnRMb2NhdGlvbjsgIGlmDQo+ID4+Pj4gKyAoU2VxU3RhcnRCbG9jayA+IExhc3RCbG9jayB8fA0K PiA+Pj4+ICsgICAgICBTZXFTdGFydEJsb2NrICsgU2VxQmxvY2tzTnVtIC0gMSA+IExhc3RCbG9j aykgew0KPiA+Pj4+ICsgICAgcmV0dXJuIEVGSV9WT0xVTUVfQ09SUlVQVEVEOw0KPiA+Pj4+ICAg IH0NCj4gPj4+Pg0KPiA+Pj4+ICsgIEd1YXJkTWFpblZkc1N0YXJ0QmxvY2sgPSBTZXFTdGFydEJs b2NrOw0KPiA+Pj4+ICsNCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIC8vIEFsbG9jYXRlIGJ1ZmZl ciBmb3IgcmVhZGluZyBkaXNrIGJsb2NrcyAgLy8gIEJ1ZmZlciA9DQo+ID4+Pj4gKyBBbGxvY2F0 ZVplcm9Qb29sICgoVUlOVE4pQmxvY2tTaXplKTsgIGlmIChCdWZmZXIgPT0gTlVMTCkgew0KPiA+ Pj4+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pj4+ICsgIH0NCj4gPj4+ PiArDQo+ID4+Pj4gKyAgU2VxRW5kQmxvY2sgPSBTZXFTdGFydEJsb2NrICsgU2VxQmxvY2tzTnVt OyAgU3RvcFNlcXVlbmNlID0NCj4gPj5GQUxTRTsNCj4gPj4+PiArIEx2ZHNDb3VudCA9IDA7ICBT dGF0dXMgPSBFRklfVk9MVU1FX0NPUlJVUFRFRDsgIC8vICAvLyBTdGFydCBNYWluDQo+ID4+Pj4g KyBWb2x1bWUgRGVzY3JpcHRvciBTZXF1ZW5jZSAgLy8gIGZvciAoOyBTZXFTdGFydEJsb2NrIDwN Cj4gPj4+PiArIFNlcUVuZEJsb2NrDQo+ID4+DQo+ID4+Pj4gKyAmJiAhU3RvcFNlcXVlbmNlOw0K PiA+Pj5TZXFTdGFydEJsb2NrKyspIHsNCj4gPj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICAvLyBS ZWFkIGRpc2sgYmxvY2sNCj4gPj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICBTdGF0dXMgPSBCbG9j a0lvLT5SZWFkQmxvY2tzICgNCj4gPj4+PiArICAgICAgQmxvY2tJbywNCj4gPj4+PiArICAgICAg QmxvY2tJby0+TWVkaWEtPk1lZGlhSWQsDQo+ID4+Pj4gKyAgICAgIFNlcVN0YXJ0QmxvY2ssDQo+ ID4+Pj4gKyAgICAgIEJsb2NrU2l6ZSwNCj4gPj4+PiArICAgICAgQnVmZmVyDQo+ID4+Pj4gKyAg ICAgICk7DQo+ID4+Pj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4gKyAg ICAgIGdvdG8gT3V0X0ZyZWU7DQo+ID4+Pj4gKyAgICB9DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgICAg RGVzY3JpcHRvclRhZyA9IEJ1ZmZlcjsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgICAvLw0KPiA+Pj4+ ICsgICAgLy8gRUNNQSAxNjcsIDguNC4xIENvbnRlbnRzIG9mIGEgVm9sdW1lIERlc2NyaXB0b3Ig U2VxdWVuY2UNCj4gPj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICAvLyAtIEEgVm9sdW1lIERlc2Ny aXB0b3IgU2VxdWVuY2Ugc2hhbGwgY29udGFpbiBvbmUgb3IgbW9yZQ0KPiA+Pj5QcmltYXJ5DQo+ ID4+Pj4gVm9sdW1lDQo+ID4+Pj4gKyAgICAvLyAgIERlc2NyaXB0b3JzLg0KPiA+Pj4+ICsgICAg Ly8gLSBBIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlIHNoYWxsIGNvbnRhaW4gemVybyBvciBt b3JlDQo+ID4+Pj4gSW1wbGVtZW50YXRpb24NCj4gPj4+PiArICAgIC8vICAgVXNlIFZvbHVtZSBE ZXNjcmlwdG9ycy4NCj4gPj4+PiArICAgIC8vIC0gQSBWb2x1bWUgRGVzY3JpcHRvciBTZXF1ZW5j ZSBzaGFsbCBjb250YWluIHplcm8gb3IgbW9yZQ0KPiA+Pj5QYXJ0aXRpb24NCj4gPj4+PiArICAg IC8vICAgRGVzY3JpcHRvcnMuDQo+ID4+Pj4gKyAgICAvLyAtIEEgVm9sdW1lIERlc2NyaXB0b3Ig U2VxdWVuY2Ugc2hhbGwgY29udGFpbiB6ZXJvIG9yIG1vcmUNCj4gPj4+TG9naWNhbA0KPiA+Pj4+ IFZvbHVtZQ0KPiA+Pj4+ICsgICAgLy8gICBEZXNjcmlwdG9ycy4NCj4gPj4+PiArICAgIC8vIC0g QSBWb2x1bWUgRGVzY3JpcHRvciBTZXF1ZW5jZSBzaGFsbCBjb250YWluIHplcm8gb3IgbW9yZQ0K PiA+Pj5VbmFsbG9jYXRlZA0KPiA+Pj4+ICsgICAgLy8gICBTcGFjZSBEZXNjcmlwdG9ycy4NCj4g Pj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICBzd2l0Y2ggKFVERl9UQUdfSUQgKERlc2NyaXB0b3JU YWcpKSB7DQo+ID4+Pj4gKyAgICBjYXNlIFVkZlByaW1hcnlWb2x1bWVEZXNjcmlwdG9yOg0KPiA+ Pj4+ICsgICAgY2FzZSBVZGZJbXBsZW1lbmF0aW9uVXNlVm9sdW1lRGVzY3JpcHRvcjoNCj4gPj4+ PiArICAgIGNhc2UgVWRmUGFydGl0aW9uRGVzY3JpcHRvcjoNCj4gPj4+PiArICAgIGNhc2UgVWRm VW5hbGxvY2F0ZWRTcGFjZURlc2NyaXB0b3I6DQo+ID4+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4+ ICsNCj4gPj4+PiArICAgIGNhc2UgVWRmTG9naWNhbFZvbHVtZURlc2NyaXB0b3I6DQo+ID4+Pj4g KyAgICAgIExvZ2ljYWxWb2xEZXNjID0gQnVmZmVyOw0KPiA+Pj4+ICsNCj4gPj4+PiArICAgICAg Ly8NCj4gPj4+PiArICAgICAgLy8gQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIHNpbmdsZSBMVkQg YW5kIHdoZXRoZXIgaXQgaXMNCj4gPj4+c3VwcG9ydGVkIGJ5DQo+ID4+Pj4gKyAgICAgIC8vIGN1 cnJlbnQgRURLMiBVREYgZmlsZSBzeXN0ZW0gaW1wbGVtZW50YXRpb24uDQo+ID4+Pj4gKyAgICAg IC8vDQo+ID4+Pj4gKyAgICAgIGlmICgrK0x2ZHNDb3VudCA+IDEgfHwNCj4gPj4+PiArICAgICAg ICAgICFJc0xvZ2ljYWxWb2x1bWVEZXNjcmlwdG9yU3VwcG9ydGVkIChMb2dpY2FsVm9sRGVzYykp IHsNCj4gPj4+PiArICAgICAgICBTdGF0dXMgPSBFRklfVU5TVVBQT1JURUQ7DQo+ID4+Pj4gKyAg ICAgICAgU3RvcFNlcXVlbmNlID0gVFJVRTsNCj4gPj4+PiArICAgICAgfQ0KPiA+Pj4+ICsNCj4g Pj4+PiArICAgICAgYnJlYWs7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgICAgY2FzZSBVZGZUZXJtaW5h dGluZ0Rlc2NyaXB0b3I6DQo+ID4+Pj4gKyAgICAgIC8vDQo+ID4+Pj4gKyAgICAgIC8vIFN0b3Ag dGhlIHNlcXVlbmNlIHdoZW4gd2UgZmluZCBhIFRlcm1pbmF0aW5nIERlc2NyaXB0b3INCj4gPj4+ PiArICAgICAgLy8gKGFrYSBVbmFsbG9jYXRlZCBTZWN0b3IpLCBzZSB3ZSBkb24ndCBoYXZlIHRv IHdhbGsgYWxsDQo+ID4+Pj4gKyB0aGUNCj4gPj4+dW5hbGxvY2F0ZWQNCj4gPj4+PiArICAgICAg Ly8gYXJlYSB1bm5lY2Vzc2FyaWx5Lg0KPiA+Pj4+ICsgICAgICAvLw0KPiA+Pj4+ICsgICAgICBT dG9wU2VxdWVuY2UgPSBUUlVFOw0KPiA+Pj4+ICsgICAgICBicmVhazsNCj4gPj4+PiArDQo+ID4+ Pj4gKyAgICBkZWZhdWx0Og0KPiA+Pj4+ICsgICAgICAvLw0KPiA+Pj4+ICsgICAgICAvLyBBbiBp bnZhbGlkIFZvbHVtZSBEZXNjcmlwdG9yIGhhcyBiZWVuIGZvdW5kIGluIHRoZQ0KPiA+PnNlcXVl Y2UuDQo+ID4+PlZvbHVtZSBpcw0KPiA+Pj4+ICsgICAgICAvLyBjb3JydXB0ZWQuDQo+ID4+Pj4g KyAgICAgIC8vDQo+ID4+Pj4gKyAgICAgIFN0YXR1cyA9IEVGSV9WT0xVTUVfQ09SUlVQVEVEOw0K PiA+Pj4+ICsgICAgICBnb3RvIE91dF9GcmVlOw0KPiA+Pj4+ICsgICAgfQ0KPiA+Pj4+ICsgIH0N Cj4gPj4+PiArDQo+ID4+Pj4gKyAgLy8NCj4gPj4+PiArICAvLyBDaGVjayBpZiBMVkQgd2FzIGZv dW5kDQo+ID4+Pj4gKyAgLy8NCj4gPj4+PiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSAmJiBM dmRzQ291bnQgPT0gMSkgew0KPiA+Pj4+ICsgICAgKk1haW5WZHNTdGFydEJsb2NrID0gR3VhcmRN YWluVmRzU3RhcnRCbG9jazsNCj4gPj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICAvLyBXZSBkbyBu b3QgbmVlZCB0byByZWFkIGVpdGhlciBMVkQgb3IgUEQgZGVzY3JpcHRvcnMgdG8ga25vdw0KPiA+ Pj50aGUgbGFzdA0KPiA+Pj4+ICsgICAgLy8gdmFsaWQgYmxvY2sgaW4gdGhlIGZvdW5kIFVERiBm aWxlIHN5c3RlbS4gSXQncyBhbHJlYWR5DQo+ID4+Pkxhc3RCbG9jay4NCj4gPj4+PiArICAgIC8v DQo+ID4+Pj4gKyAgICAqTWFpblZkc0VuZEJsb2NrID0gTGFzdEJsb2NrOw0KPiA+Pj4+ICsNCj4g Pj4+PiArICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ ID4+Pj4gK091dF9GcmVlOg0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gRnJlZSBibG9jayBy ZWFkIGJ1ZmZlcg0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgRnJlZVBvb2wgKEJ1ZmZlcik7DQo+ ID4+Pj4gKw0KPiA+Pj4+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4gK30NCj4gPj4+PiArDQo+ ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIEZpbmQgYSBzdXBwb3J0ZWQgVURGIGZpbGUgc3lzdGVtIGlu IGJsb2NrIGRldmljZS4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHBhcmFtW2luXSAgQmxvY2tJbyAg ICAgICAgICAgICBCbG9ja0lvIGludGVyZmFjZS4NCj4gPj4+PiArICBAcGFyYW1baW5dICBEaXNr SW8gICAgICAgICAgICAgIERpc2tJbyBpbnRlcmZhY2UuDQo+ID4+Pj4gKyAgQHBhcmFtW291dF0g U3RhcnRpbmdMQkEgICAgICAgICBVREYgZmlsZSBzeXN0ZW0gc3RhcnRpbmcgTEJBLg0KPiA+Pj4+ ICsgIEBwYXJhbVtvdXRdIEVuZGluZ0xCQSAgICAgICAgICAgVURGIGZpbGUgc3lzdGVtIHN0YXJ0 aW5nIExCQS4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgICBVREYgZmlsZSBzeXN0ZW0gd2FzIGZvdW5kLg0KPiA+Pj4+ICsgIEByZXR2YWwgb3RoZXIg ICAgICAgICAgICAgICAgICAgVURGIGZpbGUgc3lzdGVtIHdhcyBub3QgZm91bmQuDQo+ID4+Pj4g Kw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+ICtGaW5kVWRmRmlsZVN5 c3RlbSAoDQo+ID4+Pj4gKyAgSU4gRUZJX0JMT0NLX0lPX1BST1RPQ09MICAqQmxvY2tJbywNCj4g Pj4+PiArICBJTiBFRklfRElTS19JT19QUk9UT0NPTCAgICpEaXNrSW8sDQo+ID4+Pj4gKyAgT1VU IEVGSV9MQkEgICAgICAgICAgICAgICAqU3RhcnRpbmdMQkEsDQo+ID4+Pj4gKyAgT1VUIEVGSV9M QkEgICAgICAgICAgICAgICAqRW5kaW5nTEJBDQo+ID4+Pj4gKyAgKQ0KPiA+Pj4+ICt7DQo+ID4+ Pj4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ID4+Pj4gKyAgVURGX0FOQ0hPUl9WT0xVTUVfREVT Q1JJUFRPUl9QT0lOVEVSICBBbmNob3JQb2ludDsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgLy8NCj4g Pj4+PiArICAvLyBGaW5kIFVERiB2b2x1bWUgaWRlbnRpZmllcnMNCj4gPj4+PiArICAvLw0KPiA+ Pj4+ICsgIFN0YXR1cyA9IEZpbmRVZGZWb2x1bWVJZGVudGlmaWVycyAoQmxvY2tJbywgRGlza0lv KTsgIGlmDQo+ID4+Pj4gKyAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgLy8NCj4gPj4+PiAr ICAvLyBGaW5kIEFuY2hvciBWb2x1bWUgRGVzY3JpcHRvciBQb2ludGVyICAvLw0KPiA+Pj4+ICAg IFN0YXR1cyA9IEZpbmRBbmNob3JWb2x1bWVEZXNjcmlwdG9yUG9pbnRlciAoQmxvY2tJbywgRGlz a0lvLA0KPiA+Pj4mQW5jaG9yUG9pbnQpOw0KPiA+Pj4+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPj4+PiAtICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4+Pj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+Pj4+ICAgIH0NCj4gPj4+Pg0KPiA+Pj4+IC0gIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIC8vIEZpbmQgTG9naWNhbCBWb2x1bWUg bG9jYXRpb24NCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIFN0YXR1cyA9IEZpbmRMb2dpY2FsVm9s dW1lTG9jYXRpb24gKA0KPiA+Pj4+ICsgICAgQmxvY2tJbywNCj4gPj4+PiArICAgIERpc2tJbywN Cj4gPj4+PiArICAgICZBbmNob3JQb2ludCwNCj4gPj4+PiArICAgIChVSU5UNjQgKilTdGFydGlu Z0xCQSwNCj4gPj4+PiArICAgIChVSU5UNjQgKilFbmRpbmdMQkENCj4gPj4+PiArICAgICk7DQo+ ID4+Pj4gKw0KPiA+Pj4+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4gIH0NCj4gPj4+Pg0KPiA+ Pj4+ICAvKioNCj4gPj4+PiBAQCAtMjYzLDkgKzUzNyw5IEBAIFBhcnRpdGlvbkluc3RhbGxVZGZD aGlsZEhhbmRsZXMgKA0KPiA+Pj4+ICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgUmVt YWluZGVyQnlNZWRpYUJsb2NrU2l6ZTsNCj4gPj4+PiAgICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPj4+PiAgICBFRklfQkxPQ0tfSU9fTUVESUEgICAgICAgICAgICpN ZWRpYTsNCj4gPj4+PiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICpEZXZpY2VQYXRo Tm9kZTsNCj4gPj4+PiAtICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JEZWZp bmVkR3VpZDsNCj4gPj4+PiAgICBFRklfUEFSVElUSU9OX0lORk9fUFJPVE9DT0wgIFBhcnRpdGlv bkluZm87DQo+ID4+Pj4gKyAgRUZJX0xCQSAgICAgICAgICAgICAgICAgICAgICBTdGFydGluZ0xC QTsNCj4gPj4+PiArICBFRklfTEJBICAgICAgICAgICAgICAgICAgICAgIEVuZGluZ0xCQTsNCj4g Pj4+Pg0KPiA+Pj4+ICAgIE1lZGlhID0gQmxvY2tJby0+TWVkaWE7DQo+ID4+Pj4NCj4gPj4+PiBA QCAtMjgxLDM1ICs1NTUsMTAgQEAgUGFydGl0aW9uSW5zdGFsbFVkZkNoaWxkSGFuZGxlcyAoDQo+ ID4+Pj4gICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4g Pj4+PiAtICBEZXZpY2VQYXRoTm9kZSA9IERldmljZVBhdGg7DQo+ID4+Pj4gLSAgd2hpbGUgKCFJ c0RldmljZVBhdGhFbmQgKERldmljZVBhdGhOb2RlKSkgew0KPiA+Pj4+IC0gICAgLy8NCj4gPj4+ PiAtICAgIC8vIERvIG5vdCBhbGxvdyBjaGVja2luZyBmb3IgVURGIGZpbGUgc3lzdGVtcyBpbiBD RFJPTSAiRWwNCj4gPj4+VG9yaXRvIg0KPiA+Pj4+IC0gICAgLy8gcGFydGl0aW9ucywgYW5kIHNr aXAgZHVwbGljYXRlIGluc3RhbGxhdGlvbiBvZiBVREYgZmlsZQ0KPiA+Pj5zeXN0ZW0gY2hpbGQN Cj4gPj4+PiAtICAgIC8vIG5vZGVzLg0KPiA+Pj4+IC0gICAgLy8NCj4gPj4+PiAtICAgIGlmIChE ZXZpY2VQYXRoVHlwZSAoRGV2aWNlUGF0aE5vZGUpID09IE1FRElBX0RFVklDRV9QQVRIKSB7DQo+ ID4+Pj4gLSAgICAgIGlmIChEZXZpY2VQYXRoU3ViVHlwZSAoRGV2aWNlUGF0aE5vZGUpID09IE1F RElBX0NEUk9NX0RQKSB7DQo+ID4+Pj4gLSAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ ID4+Pj4gLSAgICAgIH0NCj4gPj4+PiAtICAgICAgaWYgKERldmljZVBhdGhTdWJUeXBlIChEZXZp Y2VQYXRoTm9kZSkgPT0gTUVESUFfVkVORE9SX0RQKQ0KPiB7DQo+ID4+Pj4gLSAgICAgICAgVmVu ZG9yRGVmaW5lZEd1aWQgPSAoRUZJX0dVSUQgKikoKFVJTlROKURldmljZVBhdGhOb2RlICsNCj4g Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPRkZTRVRfT0YN Cj4gPj4+KFZFTkRPUl9ERVZJQ0VfUEFUSCwgR3VpZCkpOw0KPiA+Pj4+IC0gICAgICAgIGlmIChD b21wYXJlR3VpZCAoVmVuZG9yRGVmaW5lZEd1aWQsICZnVWRmRGV2UGF0aEd1aWQpKSB7DQo+ID4+ Pj4gLSAgICAgICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPj4+PiAtICAgICAgICB9DQo+ ID4+Pj4gLSAgICAgIH0NCj4gPj4+PiAtICAgIH0NCj4gPj4+PiAtICAgIC8vDQo+ID4+Pj4gLSAg ICAvLyBUcnkgbmV4dCBkZXZpY2UgcGF0aCBub2RlDQo+ID4+Pj4gLSAgICAvLw0KPiA+Pj4+IC0g ICAgRGV2aWNlUGF0aE5vZGUgPSBOZXh0RGV2aWNlUGF0aE5vZGUgKERldmljZVBhdGhOb2RlKTsN Cj4gPj4+PiAtICB9DQo+ID4+Pj4gLQ0KPiA+Pj4+ICAgIC8vDQo+ID4+Pj4gLSAgLy8gQ2hlY2sg aWYgYmxvY2sgZGV2aWNlIHN1cHBvcnRzIGFuIFVERiBmaWxlIHN5c3RlbQ0KPiA+Pj4+ICsgIC8v IFNlYXJjaCBmb3IgYW4gVURGIGZpbGUgc3lzdGVtIG9uIGJsb2NrIGRldmljZQ0KPiA+Pj4+ICAg IC8vDQo+ID4+Pj4gLSAgU3RhdHVzID0gU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKEJsb2NrSW8sIERp c2tJbyk7DQo+ID4+Pj4gKyAgU3RhdHVzID0gRmluZFVkZkZpbGVTeXN0ZW0gKEJsb2NrSW8sIERp c2tJbywgJlN0YXJ0aW5nTEJBLA0KPiA+Pj4mRW5kaW5nTEJBKTsNCj4gPj4+PiAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4gICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4g Pj4+PiAgICB9DQo+ID4+Pj4gQEAgLTMzNCw4ICs1ODMsOCBAQCBQYXJ0aXRpb25JbnN0YWxsVWRm Q2hpbGRIYW5kbGVzICgNCj4gPj4+PiAgICAgIERldmljZVBhdGgsDQo+ID4+Pj4gICAgICAoRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICopJmdVZGZEZXZpY2VQYXRoLA0KPiA+Pj4+ICAgICAgJlBh cnRpdGlvbkluZm8sDQo+ID4+Pj4gLSAgICAwLA0KPiA+Pj4+IC0gICAgTWVkaWEtPkxhc3RCbG9j aywNCj4gPj4+PiArICAgIFN0YXJ0aW5nTEJBLA0KPiA+Pj4+ICsgICAgRW5kaW5nTEJBLA0KPiA+ Pj4+ICAgICAgTWVkaWEtPkJsb2NrU2l6ZQ0KPiA+Pj4+ICAgICAgKTsNCj4gPj4+PiAgICBpZiAo IUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0Rpc2svVWRmRHhlL0ZpbGUuYw0KPiA+Pj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9EaXNrL1VkZkR4ZS9GaWxlLmMNCj4gPj4+PiBpbmRleCA2MjVmMmM1NjM3Li42ZjA3YmYy MDY2IDEwMDY0NA0KPiA+Pj4+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZE eGUvRmlsZS5jDQo+ID4+Pj4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4 ZS9GaWxlLmMNCj4gPj4+PiBAQCAtMTMxLDcgKzEzMSw2IEBAIEVycm9yX0FsbG9jX1ByaXZfRmls ZV9EYXRhOg0KPiA+Pj4+ICAgIENsZWFudXBGaWxlSW5mb3JtYXRpb24gKCZQcml2RnNEYXRhLT5S b290KTsNCj4gPj4+Pg0KPiA+Pj4+ICBFcnJvcl9GaW5kX1Jvb3RfRGlyOg0KPiA+Pj4+IC0gIENs ZWFudXBWb2x1bWVJbmZvcm1hdGlvbiAoJlByaXZGc0RhdGEtPlZvbHVtZSk7DQo+ID4+Pj4NCj4g Pj4+PiAgRXJyb3JfUmVhZF9VZGZfVm9sdW1lOg0KPiA+Pj4+ICBFcnJvcl9JbnZhbGlkX1BhcmFt czoNCj4gPj4+PiBAQCAtNDI5LDcgKzQyOCw3IEBAIFVkZlJlYWQgKA0KPiA+Pj4+ICAgICAgfQ0K PiA+Pj4+ICAgICAgQVNTRVJUIChOZXdGaWxlRW50cnlEYXRhICE9IE5VTEwpOw0KPiA+Pj4+DQo+ ID4+Pj4gLSAgICBpZiAoSVNfRkVfU1lNTElOSyAoTmV3RmlsZUVudHJ5RGF0YSkpIHsNCj4gPj4+ PiArICAgIGlmIChGRV9JQ0JfRklMRV9UWVBFIChOZXdGaWxlRW50cnlEYXRhKSA9PQ0KPiA+Pj4+ ICsgVWRmRmlsZUVudHJ5U3ltbGluaykNCj4gPj4+ew0KPiA+Pj4+ICAgICAgICBTdGF0dXMgPSBS ZXNvbHZlU3ltbGluayAoDQo+ID4+Pj4gICAgICAgICAgQmxvY2tJbywNCj4gPj4+PiAgICAgICAg ICBEaXNrSW8sDQo+ID4+Pj4gQEAgLTUyOSw3ICs1MjgsNiBAQCBVZGZDbG9zZSAoDQo+ID4+Pj4g ICAgRUZJX1RQTCAgICAgICAgICAgICAgICAgICAgIE9sZFRwbDsNCj4gPj4+PiAgICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+Pj4+ICAgIFBSSVZBVEVfVURGX0ZJTEVf REFUQSAgICAgICAqUHJpdkZpbGVEYXRhOw0KPiA+Pj4+IC0gIFBSSVZBVEVfVURGX1NJTVBMRV9G U19EQVRBICAqUHJpdkZzRGF0YTsNCj4gPj4+Pg0KPiA+Pj4+ICAgIE9sZFRwbCA9IGdCUy0+UmFp c2VUUEwgKFRQTF9DQUxMQkFDSyk7DQo+ID4+Pj4NCj4gPj4+PiBAQCAtNTQyLDggKzU0MCw2IEBA IFVkZkNsb3NlICgNCj4gPj4+Pg0KPiA+Pj4+ICAgIFByaXZGaWxlRGF0YSA9IFBSSVZBVEVfVURG X0ZJTEVfREFUQV9GUk9NX1RISVMgKFRoaXMpOw0KPiA+Pj4+DQo+ID4+Pj4gLSAgUHJpdkZzRGF0 YSA9IFBSSVZBVEVfVURGX1NJTVBMRV9GU19EQVRBX0ZST01fVEhJUw0KPiAoUHJpdkZpbGVEYXRh LQ0KPiA+Pj4+ID5TaW1wbGVGcyk7DQo+ID4+Pj4gLQ0KPiA+Pj4+ICAgIGlmICghUHJpdkZpbGVE YXRhLT5Jc1Jvb3REaXJlY3RvcnkpIHsNCj4gPj4+PiAgICAgIENsZWFudXBGaWxlSW5mb3JtYXRp b24gKCZQcml2RmlsZURhdGEtPkZpbGUpOw0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTU1MiwxMCArNTQ4 LDYgQEAgVWRmQ2xvc2UgKA0KPiA+Pj4+ICAgICAgfQ0KPiA+Pj4+ICAgIH0NCj4gPj4+Pg0KPiA+ Pj4+IC0gIGlmICgtLVByaXZGc0RhdGEtPk9wZW5GaWxlcyA9PSAwKSB7DQo+ID4+Pj4gLSAgICBD bGVhbnVwVm9sdW1lSW5mb3JtYXRpb24gKCZQcml2RnNEYXRhLT5Wb2x1bWUpOw0KPiA+Pj4+IC0g IH0NCj4gPj4+PiAtDQo+ID4+Pj4gICAgRnJlZVBvb2wgKChWT0lEICopUHJpdkZpbGVEYXRhKTsN Cj4gPj4+Pg0KPiA+Pj4+ICBFeGl0Og0KPiA+Pj4+IEBAIC02NTIsNyArNjQ0LDcgQEAgVWRmR2V0 UG9zaXRpb24gKA0KPiA+Pj4+ICAgIC8vIEFzIHBlciBVRUZJIHNwZWMsIGlmIHRoZSBmaWxlIGhh bmRsZSBpcyBhIGRpcmVjdG9yeSwgdGhlbiB0aGUNCj4gPj4+Y3VycmVudCBmaWxlDQo+ID4+Pj4g ICAgLy8gcG9zaXRpb24gaGFzIG5vIG1lYW5pbmcgYW5kIHRoZSBvcGVyYXRpb24gaXMgbm90IHN1 cHBvcnRlZC4NCj4gPj4+PiAgICAvLw0KPiA+Pj4+IC0gIGlmIChJU19GSURfRElSRUNUT1JZX0ZJ TEUNCj4gPj4+KCZQcml2RmlsZURhdGEtPkZpbGUuRmlsZUlkZW50aWZpZXJEZXNjKSkgew0KPiA+ Pj4+ICsgIGlmIChJU19GSURfRElSRUNUT1JZX0ZJTEUNCj4gPj4oUHJpdkZpbGVEYXRhLT5GaWxl LkZpbGVJZGVudGlmaWVyRGVzYykpDQo+ID4+PnsNCj4gPj4+PiAgICAgIHJldHVybiAgRUZJX1VO U1VQUE9SVEVEOw0KPiA+Pj4+ICAgIH0NCj4gPj4+Pg0KPiA+Pj4+IEBAIC03ODgsNyArNzgwLDcg QEAgVWRmR2V0SW5mbyAoDQo+ID4+Pj4gICAgfSBlbHNlIGlmIChDb21wYXJlR3VpZCAoSW5mb3Jt YXRpb25UeXBlLA0KPiA+PiZnRWZpRmlsZVN5c3RlbUluZm9HdWlkKSkNCj4gPj4+ew0KPiA+Pj4+ ICAgICAgU3RyaW5nID0gVm9sdW1lTGFiZWw7DQo+ID4+Pj4NCj4gPj4+PiAtICAgIEZpbGVTZXRE ZXNjID0gUHJpdkZzRGF0YS0+Vm9sdW1lLkZpbGVTZXREZXNjc1swXTsNCj4gPj4+PiArICAgIEZp bGVTZXREZXNjID0gJlByaXZGc0RhdGEtPlZvbHVtZS5GaWxlU2V0RGVzYzsNCj4gPj4+Pg0KPiA+ Pj4+ICAgICAgT3N0YUNvbXByZXNzZWQgPSAmRmlsZVNldERlc2MtPkxvZ2ljYWxWb2x1bWVJZGVu dGlmaWVyWzBdOw0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTg0Nyw3ICs4MzksNyBAQCBVZGZHZXRJbmZv ICgNCj4gPj4+PiAgICAgIEZpbGVTeXN0ZW1JbmZvLT5TaXplICAgICAgICA9IEZpbGVTeXN0ZW1J bmZvTGVuZ3RoOw0KPiA+Pj4+ICAgICAgRmlsZVN5c3RlbUluZm8tPlJlYWRPbmx5ICAgID0gVFJV RTsNCj4gPj4+PiAgICAgIEZpbGVTeXN0ZW1JbmZvLT5CbG9ja1NpemUgICA9DQo+ID4+Pj4gLSAg ICAgIExWX0JMT0NLX1NJWkUgKCZQcml2RnNEYXRhLT5Wb2x1bWUsIFVERl9ERUZBVUxUX0xWX05V TSk7DQo+ID4+Pj4gKyAgICAgIFByaXZGc0RhdGEtPlZvbHVtZS5Mb2dpY2FsVm9sRGVzYy5Mb2dp Y2FsQmxvY2tTaXplOw0KPiA+Pj4+ICAgICAgRmlsZVN5c3RlbUluZm8tPlZvbHVtZVNpemUgID0g Vm9sdW1lU2l6ZTsNCj4gPj4+PiAgICAgIEZpbGVTeXN0ZW1JbmZvLT5GcmVlU3BhY2UgICA9IEZy ZWVTcGFjZVNpemU7DQo+ID4+Pj4NCj4gPj4+PiBkaWZmIC0tZ2l0DQo+ID4+PmEvTWRlTW9kdWxl UGtnL1VuaXZlcnNhbC9EaXNrL1VkZkR4ZS9GaWxlU3lzdGVtT3BlcmF0aW9ucy5jDQo+ID4+Pj4g Yi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Rpc2svVWRmRHhlL0ZpbGVTeXN0ZW1PcGVyYXRpb25z LmMNCj4gPj4+PiBpbmRleCA1ZGYyNjc3NjFmLi42MmQ4MTc5ODlmIDEwMDY0NA0KPiA+Pj4+IC0t LSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUvRmlsZVN5c3RlbU9wZXJhdGlv bnMuYw0KPiA+Pj4+ICsrKw0KPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9VZGZEeGUv RmlsZVN5c3RlbU9wZXJhdGlvbnMuYw0KPiA+Pj4+IEBAIC0zOCwxMSArMzgsMTIgQEAgRmluZEFu Y2hvclZvbHVtZURlc2NyaXB0b3JQb2ludGVyICgNCj4gPj4+PiAgICBPVVQgIFVERl9BTkNIT1Jf Vk9MVU1FX0RFU0NSSVBUT1JfUE9JTlRFUiAgKkFuY2hvclBvaW50DQo+ID4+Pj4gICAgKQ0KPiA+ Pj4+ICB7DQo+ID4+Pj4gLSAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+Pj4+IC0gIFVJTlQzMiAg ICAgIEJsb2NrU2l6ZTsNCj4gPj4+PiAtICBFRklfTEJBICAgICBFbmRMQkE7DQo+ID4+Pj4gLSAg RUZJX0xCQSAgICAgRGVzY3JpcHRvckxCQXNbNF07DQo+ID4+Pj4gLSAgVUlOVE4gICAgICAgSW5k ZXg7DQo+ID4+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4gKyAgVUlO VDMyICAgICAgICAgICAgICBCbG9ja1NpemU7DQo+ID4+Pj4gKyAgRUZJX0xCQSAgICAgICAgICAg ICBFbmRMQkE7DQo+ID4+Pj4gKyAgRUZJX0xCQSAgICAgICAgICAgICBEZXNjcmlwdG9yTEJBc1s0 XTsNCj4gPj4+PiArICBVSU5UTiAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+Pj4+ICsgIFVERl9E RVNDUklQVE9SX1RBRyAgKkRlc2NyaXB0b3JUYWc7DQo+ID4+Pj4NCj4gPj4+PiAgICBCbG9ja1Np emUgPSBCbG9ja0lvLT5NZWRpYS0+QmxvY2tTaXplOw0KPiA+Pj4+ICAgIEVuZExCQSA9IEJsb2Nr SW8tPk1lZGlhLT5MYXN0QmxvY2s7IEBAIC02MiwxMCArNjMsMTMgQEANCj4gPj4+PiBGaW5kQW5j aG9yVm9sdW1lRGVzY3JpcHRvclBvaW50ZXIgKA0KPiA+Pj4+ICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+Pj4+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+ICAgICAgfQ0K PiA+Pj4+ICsNCj4gPj4+PiArICAgIERlc2NyaXB0b3JUYWcgPSAmQW5jaG9yUG9pbnQtPkRlc2Ny aXB0b3JUYWc7DQo+ID4+Pj4gKw0KPiA+Pj4+ICAgICAgLy8NCj4gPj4+PiAgICAgIC8vIENoZWNr IGlmIHJlYWQgTEJBIGhhcyBhIHZhbGlkIEFWRFAgZGVzY3JpcHRvci4NCj4gPj4+PiAgICAgIC8v DQo+ID4+Pj4gLSAgICBpZiAoSVNfQVZEUCAoQW5jaG9yUG9pbnQpKSB7DQo+ID4+Pj4gKyAgICBp ZiAoRGVzY3JpcHRvclRhZy0+VGFnSWRlbnRpZmllciA9PQ0KPiA+Pj5VZGZBbmNob3JWb2x1bWVE ZXNjcmlwdG9yUG9pbnRlcikgew0KPiA+Pj4+ICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4+Pj4gICAgICB9DQo+ID4+Pj4gICAgfQ0KPiA+Pj4+IEBAIC05OSwxNDggKzEwMyw5OCBAQCBT dGFydE1haW5Wb2x1bWVEZXNjcmlwdG9yU2VxdWVuY2UgKA0KPiA+Pj4+ICAgIE9VVCAgVURGX1ZP TFVNRV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAqVm9sdW1lDQo+ID4+Pj4gICAgKQ0KPiA+ Pj4+ICB7DQo+ID4+Pj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPj4+PiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tTaXplOw0KPiA+ Pj4+IC0gIFVERl9FWFRFTlRfQUQgICAgICAgICAgICAgICAgICAqRXh0ZW50QWQ7DQo+ID4+Pj4g LSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5nTHNuOw0KPiA+Pj4+IC0g IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICBFbmRpbmdMc247DQo+ID4+Pj4gLSAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXI7DQo+ID4+Pj4gLSAgVURGX0xPR0lD QUxfVk9MVU1FX0RFU0NSSVBUT1IgICpMb2dpY2FsVm9sRGVzYzsNCj4gPj4+PiAtICBVREZfUEFS VElUSU9OX0RFU0NSSVBUT1IgICAgICAgKlBhcnRpdGlvbkRlc2M7DQo+ID4+Pj4gLSAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+Pj4+IC0gIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgICBMb2dpY2FsQmxvY2tTaXplOw0KPiA+Pj4+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIEJsb2Nr U2l6ZTsNCj4gPj4+PiArICBVREZfRVhURU5UX0FEICAgICAgICAgKkV4dGVudEFkOw0KPiA+Pj4+ ICsgIEVGSV9MQkEgICAgICAgICAgICAgICBTZXFTdGFydEJsb2NrOw0KPiA+Pj4+ICsgIEVGSV9M QkEgICAgICAgICAgICAgICBTZXFFbmRCbG9jazsNCj4gPj4+PiArICBCT09MRUFOICAgICAgICAg ICAgICAgU3RvcFNlcXVlbmNlOw0KPiA+Pj4+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAqQnVm ZmVyOw0KPiA+Pj4+ICsgIFVERl9ERVNDUklQVE9SX1RBRyAgICAqRGVzY3JpcHRvclRhZzsNCj4g Pj4+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgTG9naWNhbEJsb2NrU2l6ZTsNCj4gPj4+PiAr DQo+ID4+Pj4gKyAgQmxvY2tTaXplID0gQmxvY2tJby0+TWVkaWEtPkJsb2NrU2l6ZTsgIEV4dGVu dEFkID0NCj4gPj4+PiArICZBbmNob3JQb2ludC0+TWFpblZvbHVtZURlc2NyaXB0b3JTZXF1ZW5j ZUV4dGVudDsNCj4gPj4+Pg0KPiA+Pj4+ICAgIC8vDQo+ID4+Pj4gLSAgLy8gV2UndmUgYWxyZWFk eSBmb3VuZCBhbiBBRFZQIG9uIHRoZSB2b2x1bWUuIEl0IGNvbnRhaW5zIHRoZQ0KPiA+Pj5leHRl bnQNCj4gPj4+PiAtICAvLyAoTWFpblZvbHVtZURlc2NyaXB0b3JTZXF1ZW5jZUV4dGVudCkgd2hl cmUgdGhlIE1haW4gVm9sdW1lDQo+ID4+Pj4gRGVzY3JpcHRvcg0KPiA+Pj4+IC0gIC8vIFNlcXVl bmNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB3ZSdsbCBsb29rIGZvciBMb2dpY2FsIFZvbHVtZQ0KPiA+ Pj5EZXNjcmlwdG9ycyBhbmQNCj4gPj4+PiAtICAvLyBQYXJ0aXRpb25zIERlc2NyaXB0b3JzIGFu ZCBzYXZlIHRoZW0gaW4gbWVtb3J5LCBhY2NvcmRpbmdseS4NCj4gPj4+PiAtICAvLw0KPiA+Pj4+ IC0gIC8vIE5vdGUgYWxzbyB0aGF0IGVhY2ggZGVzY3JpcHRvciB3aWxsIGJlIGFsaWduZWQgb24g YSBibG9jaw0KPiA+Pj4+IHNpemUNCj4gPj4+KEJsb2NrU2l6ZSkNCj4gPj4+PiAtICAvLyBib3Vu ZGFyeSwgc28gd2UgbmVlZCB0byByZWFkIG9uZSBibG9jayBhdCBhIHRpbWUuDQo+ID4+Pj4gKyAg Ly8gQWxsb2NhdGUgYnVmZmVyIGZvciByZWFkaW5nIGRpc2sgYmxvY2tzDQo+ID4+Pj4gICAgLy8N Cj4gPj4+PiAtICBCbG9ja1NpemUgICAgPSBCbG9ja0lvLT5NZWRpYS0+QmxvY2tTaXplOw0KPiA+ Pj4+IC0gIEV4dGVudEFkICAgICA9ICZBbmNob3JQb2ludC0NCj4gPk1haW5Wb2x1bWVEZXNjcmlw dG9yU2VxdWVuY2VFeHRlbnQ7DQo+ID4+Pj4gLSAgU3RhcnRpbmdMc24gID0gKFVJTlQ2NClFeHRl bnRBZC0+RXh0ZW50TG9jYXRpb247DQo+ID4+Pj4gLSAgRW5kaW5nTHNuICAgID0gU3RhcnRpbmdM c24gKyBEaXZVNjR4MzIgKA0KPiA+Pj4+IC0NCj4gPj4oVUlOVDY0KUV4dGVudEFkLT5FeHRlbnRM ZW5ndGgsDQo+ID4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9j a1NpemUNCj4gPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ ID4+Pj4gLQ0KPiA+Pj4+IC0gIFZvbHVtZS0+TG9naWNhbFZvbERlc2NzID0NCj4gPj4+PiAtICAg IChVREZfTE9HSUNBTF9WT0xVTUVfREVTQ1JJUFRPUiAqKilBbGxvY2F0ZVplcm9Qb29sDQo+IChF eHRlbnRBZC0NCj4gPj4+PiA+RXh0ZW50TGVuZ3RoKTsNCj4gPj4+PiAtICBpZiAoVm9sdW1lLT5M b2dpY2FsVm9sRGVzY3MgPT0gTlVMTCkgew0KPiA+Pj4+IC0gICAgcmV0dXJuIEVGSV9PVVRfT0Zf UkVTT1VSQ0VTOw0KPiA+Pj4+IC0gIH0NCj4gPj4+PiAtDQo+ID4+Pj4gLSAgVm9sdW1lLT5QYXJ0 aXRpb25EZXNjcyA9DQo+ID4+Pj4gLSAgICAoVURGX1BBUlRJVElPTl9ERVNDUklQVE9SICoqKUFs bG9jYXRlWmVyb1Bvb2wgKEV4dGVudEFkLQ0KPiA+Pj4+ID5FeHRlbnRMZW5ndGgpOw0KPiA+Pj4+ IC0gIGlmIChWb2x1bWUtPlBhcnRpdGlvbkRlc2NzID09IE5VTEwpIHsNCj4gPj4+PiAtICAgIFN0 YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pj4+IC0gICAgZ290byBFcnJvcl9BbGxv Y19QZHM7DQo+ID4+Pj4gLSAgfQ0KPiA+Pj4+IC0NCj4gPj4+PiAtICBCdWZmZXIgPSBBbGxvY2F0 ZVplcm9Qb29sIChCbG9ja1NpemUpOw0KPiA+Pj4+ICsgIEJ1ZmZlciA9IEFsbG9jYXRlWmVyb1Bv b2wgKChVSU5UTilCbG9ja1NpemUpOw0KPiA+Pj4+ICAgIGlmIChCdWZmZXIgPT0gTlVMTCkgew0K PiA+Pj4+IC0gICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4+Pj4gLSAgICBn b3RvIEVycm9yX0FsbG9jX0J1ZjsNCj4gPj4+PiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09V UkNFUzsNCj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4gPj4+PiAtICBWb2x1bWUtPkxvZ2ljYWxWb2xE ZXNjc05vICA9IDA7DQo+ID4+Pj4gLSAgVm9sdW1lLT5QYXJ0aXRpb25EZXNjc05vICAgPSAwOw0K PiA+Pj4+IC0NCj4gPj4+PiAtICB3aGlsZSAoU3RhcnRpbmdMc24gPD0gRW5kaW5nTHNuKSB7DQo+ ID4+Pj4gLSAgICBTdGF0dXMgPSBEaXNrSW8tPlJlYWREaXNrICgNCj4gPj4+PiAtICAgICAgRGlz a0lvLA0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gVGhlIGxvZ2ljYWwgcGFydGl0aW9uIGNy ZWF0ZWQgYnkgUGFydGl0aW9uIGRyaXZlciBpcyByZWxhdGl2ZQ0KPiA+Pj50byB0aGUgbWFpbg0K PiA+Pj4+ICsgIC8vIFZEUyBleHRlbnQgbG9jYXRpb24sIHNvIHdlIHN0YXJ0IHRoZSBNYWluIFZv bHVtZSBEZXNjcmlwdG9yDQo+ID4+PlNlcXVlbmNlIGF0DQo+ID4+Pj4gKyAgLy8gTEJBIDAuDQo+ ID4+Pj4gKyAgLy8NCj4gPj4+PiArICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGFnYWluIGlm IHdlIGhhdmUgdmFsaWQgVm9sdW1lDQo+ID4+PkRlc2NyaXB0b3JzIGhlcmUNCj4gPj4+PiBzaW5j ZQ0KPiA+Pj4+ICsgIC8vIFBhcnRpdGlvbiBkcml2ZXIgYWxyZWFkeSBkaWQuDQo+ID4+Pj4gKyAg Ly8NCj4gPj4+PiArICBTZXFTdGFydEJsb2NrID0gMDsNCj4gPj4+PiArICBTZXFFbmRCbG9jayA9 IFNlcVN0YXJ0QmxvY2sgKyBEaXZVNjR4MzINCj4gPj4+KChVSU5UNjQpRXh0ZW50QWQtPkV4dGVu dExlbmd0aCwNCj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJsb2NrU2l6ZSk7DQo+ID4+U3RvcFNlcXVlbmNlDQo+ID4+Pj4gKyA9IEZBTFNFOyAgZm9y ICg7IFNlcVN0YXJ0QmxvY2sgPCBTZXFFbmRCbG9jayAmJiAhU3RvcFNlcXVlbmNlOw0KPiA+Pj5T ZXFTdGFydEJsb2NrKyspIHsNCj4gPj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICAvLyBSZWFkIGRp c2sgYmxvY2sNCj4gPj4+PiArICAgIC8vDQo+ID4+Pj4gKyAgICBTdGF0dXMgPSBCbG9ja0lvLT5S ZWFkQmxvY2tzICgNCj4gPj4+PiArICAgICAgQmxvY2tJbywNCj4gPj4+PiAgICAgICAgQmxvY2tJ by0+TWVkaWEtPk1lZGlhSWQsDQo+ID4+Pj4gLSAgICAgIE11bHRVNjR4MzIgKFN0YXJ0aW5nTHNu LCBCbG9ja1NpemUpLA0KPiA+Pj4+ICsgICAgICBTZXFTdGFydEJsb2NrLA0KPiA+Pj4+ICAgICAg ICBCbG9ja1NpemUsDQo+ID4+Pj4gICAgICAgIEJ1ZmZlcg0KPiA+Pj4+ICAgICAgICApOw0KPiA+ Pj4+ICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+IC0gICAgICBnb3RvIEVy cm9yX1JlYWRfRGlza19CbGs7DQo+ID4+Pj4gKyAgICAgIGdvdG8gT3V0X0ZyZWU7DQo+ID4+Pj4g ICAgICB9DQo+ID4+Pj4NCj4gPj4+PiAtICAgIGlmIChJU19URCAoQnVmZmVyKSkgew0KPiA+Pj4+ ICsgICAgRGVzY3JpcHRvclRhZyA9IEJ1ZmZlcjsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgICBzd2l0 Y2ggKFVERl9UQUdfSUQgKERlc2NyaXB0b3JUYWcpKSB7DQo+ID4+Pj4gKyAgICBjYXNlIFVkZlBh cnRpdGlvbkRlc2NyaXB0b3I6DQo+ID4+Pj4gICAgICAgIC8vDQo+ID4+Pj4gLSAgICAgIC8vIEZv dW5kIGEgVGVybWluYXRpbmcgRGVzY3JpcHRvci4gU3RvcCB0aGUgc2VxdWVuY2UgdGhlbi4NCj4g Pj4+PiArICAgICAgLy8gU2F2ZSBQYXJ0aXRpb24gRGVzY3JpcHRvcg0KPiA+Pj4+ICAgICAgICAv Lw0KPiA+Pj4+ICsgICAgICBDb3B5TWVtICgmVm9sdW1lLT5QYXJ0aXRpb25EZXNjLCBCdWZmZXIs IHNpemVvZiAoVm9sdW1lLQ0KPiA+Pj4+ID5QYXJ0aXRpb25EZXNjKSk7DQo+ID4+Pj4gICAgICAg IGJyZWFrOw0KPiA+Pj4+IC0gICAgfQ0KPiA+Pj4+DQo+ID4+Pj4gLSAgICBpZiAoSVNfTFZEIChC dWZmZXIpKSB7DQo+ID4+Pj4gKyAgICBjYXNlIFVkZkxvZ2ljYWxWb2x1bWVEZXNjcmlwdG9yOg0K PiA+Pj4+ICAgICAgICAvLw0KPiA+Pj4+IC0gICAgICAvLyBGb3VuZCBhIExvZ2ljYWwgVm9sdW1l IERlc2NyaXB0b3IuDQo+ID4+Pj4gKyAgICAgIC8vIFNhdmUgTG9naWNhbCBWb2x1bWUgRGVzY3Jp cHRvcg0KPiA+Pj4+ICAgICAgICAvLw0KPiA+Pj4+IC0gICAgICBMb2dpY2FsVm9sRGVzYyA9DQo+ ID4+Pj4gLSAgICAgICAgKFVERl9MT0dJQ0FMX1ZPTFVNRV9ERVNDUklQVE9SICopDQo+ID4+Pj4g LSAgICAgICAgQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVREZfTE9HSUNBTF9WT0xVTUVfREVT Q1JJUFRPUikpOw0KPiA+Pj4+IC0gICAgICBpZiAoTG9naWNhbFZvbERlc2MgPT0gTlVMTCkgew0K PiA+Pj4+IC0gICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pj4+IC0g ICAgICAgIGdvdG8gRXJyb3JfQWxsb2NfTHZkOw0KPiA+Pj4+IC0gICAgICB9DQo+ID4+Pj4gKyAg ICAgIENvcHlNZW0gKCZWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjLCBCdWZmZXIsIHNpemVvZiAoVm9s dW1lLQ0KPiA+Pj4+ID5Mb2dpY2FsVm9sRGVzYykpOw0KPiA+Pj4+ICsgICAgICBicmVhazsNCj4g Pj4+Pg0KPiA+Pj4+IC0gICAgICBDb3B5TWVtICgoVk9JRCAqKUxvZ2ljYWxWb2xEZXNjLCBCdWZm ZXIsDQo+ID4+Pj4gLSAgICAgICAgICAgICAgIHNpemVvZiAoVURGX0xPR0lDQUxfVk9MVU1FX0RF U0NSSVBUT1IpKTsNCj4gPj4+PiAtICAgICAgVm9sdW1lLT5Mb2dpY2FsVm9sRGVzY3NbVm9sdW1l LT5Mb2dpY2FsVm9sRGVzY3NObysrXSA9DQo+ID4+Pj4gTG9naWNhbFZvbERlc2M7DQo+ID4+Pj4g LSAgICB9IGVsc2UgaWYgKElTX1BEIChCdWZmZXIpKSB7DQo+ID4+Pj4gLSAgICAgIC8vDQo+ID4+ Pj4gLSAgICAgIC8vIEZvdW5kIGEgUGFydGl0aW9uIERlc2NyaXB0b3IuDQo+ID4+Pj4gLSAgICAg IC8vDQo+ID4+Pj4gLSAgICAgIFBhcnRpdGlvbkRlc2MgPQ0KPiA+Pj4+IC0gICAgICAgIChVREZf UEFSVElUSU9OX0RFU0NSSVBUT1IgKikNCj4gPj4+PiAtICAgICAgICBBbGxvY2F0ZVplcm9Qb29s IChzaXplb2YgKFVERl9QQVJUSVRJT05fREVTQ1JJUFRPUikpOw0KPiA+Pj4+IC0gICAgICBpZiAo UGFydGl0aW9uRGVzYyA9PSBOVUxMKSB7DQo+ID4+Pj4gLSAgICAgICAgU3RhdHVzID0gRUZJX09V VF9PRl9SRVNPVVJDRVM7DQo+ID4+Pj4gLSAgICAgICAgZ290byBFcnJvcl9BbGxvY19QZDsNCj4g Pj4+PiAtICAgICAgfQ0KPiA+Pj4+ICsgICAgY2FzZSBVZGZUZXJtaW5hdGluZ0Rlc2NyaXB0b3I6 DQo+ID4+Pj4gKyAgICAgIFN0b3BTZXF1ZW5jZSA9IFRSVUU7DQo+ID4+Pj4gKyAgICAgIGJyZWFr Ow0KPiA+Pj4+DQo+ID4+Pj4gLSAgICAgIENvcHlNZW0gKChWT0lEICopUGFydGl0aW9uRGVzYywg QnVmZmVyLA0KPiA+Pj4+IC0gICAgICAgICAgICAgICBzaXplb2YgKFVERl9QQVJUSVRJT05fREVT Q1JJUFRPUikpOw0KPiA+Pj4+IC0gICAgICBWb2x1bWUtPlBhcnRpdGlvbkRlc2NzW1ZvbHVtZS0+ UGFydGl0aW9uRGVzY3NObysrXSA9DQo+ID4+PlBhcnRpdGlvbkRlc2M7DQo+ID4+Pj4gKyAgICBk ZWZhdWx0Og0KPiA+Pj4+ICsgICAgICA7DQo+ID4+Pj4gICAgICB9DQo+ID4+Pj4gLQ0KPiA+Pj4+ IC0gICAgU3RhcnRpbmdMc24rKzsNCj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4gPj4+PiAgICAvLw0K PiA+Pj4+IC0gIC8vIFdoZW4gYW4gVURGIHZvbHVtZSAocmV2aXNpb24gMi4wMCBvciBoaWdoZXIp IGNvbnRhaW5zIGEgRmlsZQ0KPiA+Pj5FbnRyeSByYXRoZXINCj4gPj4+PiAtICAvLyB0aGFuIGFu IEV4dGVuZGVkIEZpbGUgRW50cnkgKHdoaWNoIGlzIG5vdCByZWNvbW1lbmRlZCBhcyBwZXINCj4g Pj4+c3BlYyksIHdlDQo+ID4+Pj4gbmVlZA0KPiA+Pj4+IC0gIC8vIHRvIG1ha2Ugc3VyZSB0aGUg c2l6ZSBvZiBhIEZFIHdpbGwgYmUgX2F0IGxlYXN0XyAyMDQ4DQo+ID4+Pj4gLSAgLy8gKFVERl9M T0dJQ0FMX1NFQ1RPUl9TSVpFKSBieXRlcyBsb25nIHRvIGtlZXAgYmFja3dhcmQNCj4gPj4+Y29t cGF0aWJpbGl0eS4NCj4gPj4+PiArICAvLyBEZXRlcm1pbmUgRkUgKEZpbGUgRW50cnkpIHNpemUN Cj4gPj4+PiAgICAvLw0KPiA+Pj4+IC0gIExvZ2ljYWxCbG9ja1NpemUgPSBMVl9CTE9DS19TSVpF IChWb2x1bWUsDQo+IFVERl9ERUZBVUxUX0xWX05VTSk7DQo+ID4+Pj4gKyAgTG9naWNhbEJsb2Nr U2l6ZSA9IFZvbHVtZS0+TG9naWNhbFZvbERlc2MuTG9naWNhbEJsb2NrU2l6ZTsNCj4gPj4+PiAg ICBpZiAoTG9naWNhbEJsb2NrU2l6ZSA+PSBVREZfTE9HSUNBTF9TRUNUT1JfU0laRSkgew0KPiA+ Pj4+IC0gICAgVm9sdW1lLT5GaWxlRW50cnlTaXplID0gTG9naWNhbEJsb2NrU2l6ZTsNCj4gPj4+ PiArICAgIFZvbHVtZS0+RmlsZUVudHJ5U2l6ZSA9IChVSU5UTilMb2dpY2FsQmxvY2tTaXplOw0K PiA+Pj4+ICAgIH0gZWxzZSB7DQo+ID4+Pj4gICAgICBWb2x1bWUtPkZpbGVFbnRyeVNpemUgPSBV REZfTE9HSUNBTF9TRUNUT1JfU0laRTsNCj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4gPj4+PiAtICBG cmVlUG9vbCAoQnVmZmVyKTsNCj4gPj4+PiArICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPj4+ Pg0KPiA+Pj4+IC0gIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4+PiAtDQo+ID4+Pj4gLUVycm9y X0FsbG9jX1BkOg0KPiA+Pj4+IC1FcnJvcl9BbGxvY19MdmQ6DQo+ID4+Pj4gLSAgZm9yIChJbmRl eCA9IDA7IEluZGV4IDwgVm9sdW1lLT5QYXJ0aXRpb25EZXNjc05vOyBJbmRleCsrKSB7DQo+ID4+ Pj4gLSAgICBGcmVlUG9vbCAoKFZPSUQgKilWb2x1bWUtPlBhcnRpdGlvbkRlc2NzW0luZGV4XSk7 DQo+ID4+Pj4gLSAgfQ0KPiA+Pj4+IC0NCj4gPj4+PiAtICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjc05vOyBJbmRleCsrKSB7DQo+ID4+Pj4gLSAgICBGcmVl UG9vbCAoKFZPSUQgKilWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjc1tJbmRleF0pOw0KPiA+Pj4+IC0g IH0NCj4gPj4+PiAtDQo+ID4+Pj4gLUVycm9yX1JlYWRfRGlza19CbGs6DQo+ID4+Pj4gK091dF9G cmVlOg0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gRnJlZSBibG9jayByZWFkIGJ1ZmZlcg0K PiA+Pj4+ICsgIC8vDQo+ID4+Pj4gICAgRnJlZVBvb2wgKEJ1ZmZlcik7DQo+ID4+Pj4NCj4gPj4+ PiAtRXJyb3JfQWxsb2NfQnVmOg0KPiA+Pj4+IC0gIEZyZWVQb29sICgoVk9JRCAqKVZvbHVtZS0+ UGFydGl0aW9uRGVzY3MpOw0KPiA+Pj4+IC0gIFZvbHVtZS0+UGFydGl0aW9uRGVzY3MgPSBOVUxM Ow0KPiA+Pj4+IC0NCj4gPj4+PiAtRXJyb3JfQWxsb2NfUGRzOg0KPiA+Pj4+IC0gIEZyZWVQb29s ICgoVk9JRCAqKVZvbHVtZS0+TG9naWNhbFZvbERlc2NzKTsNCj4gPj4+PiAtICBWb2x1bWUtPkxv Z2ljYWxWb2xEZXNjcyA9IE5VTEw7DQo+ID4+Pj4gLQ0KPiA+Pj4+ICAgIHJldHVybiBTdGF0dXM7 DQo+ID4+Pj4gIH0NCj4gPj4+Pg0KPiA+Pj4+IEBAIC0yNjIsNDggKzIxNiw1MyBAQCBHZXRQZEZy b21Mb25nQWQgKA0KPiA+Pj4+ICAgICkNCj4gPj4+PiAgew0KPiA+Pj4+ICAgIFVERl9MT0dJQ0FM X1ZPTFVNRV9ERVNDUklQVE9SICAqTG9naWNhbFZvbERlc2M7DQo+ID4+Pj4gLSAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+Pj4+IC0gIFVERl9QQVJUSVRJT05fREVT Q1JJUFRPUiAgICAgICAqUGFydGl0aW9uRGVzYzsNCj4gPj4+PiAgICBVSU5UMTYgICAgICAgICAg ICAgICAgICAgICAgICAgUGFydGl0aW9uTnVtOw0KPiA+Pj4+DQo+ID4+Pj4gLSAgTG9naWNhbFZv bERlc2MgPSBWb2x1bWUtPkxvZ2ljYWxWb2xEZXNjc1tVREZfREVGQVVMVF9MVl9OVU1dOw0KPiA+ Pj4+ICsgIExvZ2ljYWxWb2xEZXNjID0gJlZvbHVtZS0+TG9naWNhbFZvbERlc2M7DQo+ID4+Pj4N Cj4gPj4+PiAtICBzd2l0Y2ggKExWX1VERl9SRVZJU0lPTiAoTG9naWNhbFZvbERlc2MpKSB7DQo+ ID4+Pj4gKyAgc3dpdGNoIChVREZfTFZEX1JFVklTSU9OIChMb2dpY2FsVm9sRGVzYykpIHsNCj4g Pj4+PiAgICBjYXNlIDB4MDEwMjoNCj4gPj4+PiArICBjYXNlIDB4MDE1MDoNCj4gPj4+PiArICBj YXNlIDB4MDIwMDoNCj4gPj4+PiArICBjYXNlIDB4MDIwMToNCj4gPj4+PiArICBjYXNlIDB4MDI1 MDoNCj4gPj4+PiArICBjYXNlIDB4MDI2MDoNCj4gPj4+PiAgICAgIC8vDQo+ID4+Pj4gLSAgICAv LyBBcyBwZXIgVURGIDEuMDIgc3BlY2lmaWNhdGlvbjoNCj4gPj4+PiArICAgIC8vIFVERiAxLjAy IHNwZWNpZmljYXRpb246DQo+ID4+Pj4gICAgICAvLw0KPiA+Pj4+ICAgICAgLy8gVGhlcmUgc2hh bGwgYmUgZXhhY3RseSBvbmUgcHJldmFpbGluZyBMb2dpY2FsIFZvbHVtZQ0KPiA+Pj5EZXNjcmlw dG9yIHJlY29yZGVkDQo+ID4+Pj4gICAgICAvLyBwZXIgVm9sdW1lIFNldC4gVGhlIFBhcnRpdGlv biBNYXBzIGZpZWxkIHNoYWxsIGNvbnRhaW4gb25seQ0KPiA+Pj5UeXBlIDENCj4gPj4+PiAgICAg IC8vIFBhcnRpdGlvbiBNYXBzLg0KPiA+Pj4+ICAgICAgLy8NCj4gPj4+PiAtICAgIFBhcnRpdGlv bk51bSA9ICooVUlOVDE2DQo+ID4+PiopKChVSU5UTikmTG9naWNhbFZvbERlc2MtPlBhcnRpdGlv bk1hcHNbNF0pOw0KPiA+Pj4+IC0gICAgYnJlYWs7DQo+ID4+Pj4gLSAgY2FzZSAweDAxNTA6DQo+ ID4+Pj4gKyAgICAvLyBVREYgMS41MCB0aHJvdWdoIDIuNjAgc3BlY3Mgc2F5Og0KPiA+Pj4+ICAg ICAgLy8NCj4gPj4+PiAtICAgIC8vIEVuc3VyZSBUeXBlIDEgUGFydGl0aW9uIG1hcC4gT3RoZXIg dHlwZXMgYXJlbid0IHN1cHBvcnRlZCBpbg0KPiA+Pj50aGlzDQo+ID4+Pj4gLSAgICAvLyBpbXBs ZW1lbnRhdGlvbi4NCj4gPj4+PiArICAgIC8vIEZvciB0aGUgcHVycG9zZSBvZiBpbnRlcmNoYW5n ZSBwYXJ0aXRpb24gbWFwcyBzaGFsbCBiZQ0KPiA+Pj5saW1pdGVkIHRvDQo+ID4+Pj4gKyAgICAv LyBQYXJ0aXRpb24gTWFwIHR5cGUgMSwgZXhjZXB0IHR5cGUgMiBtYXBzIGFzIGRlc2NyaWJlZCBp bg0KPiA+Pj4+ICsgdGhlDQo+ID4+PmRvY3VtZW50Lg0KPiA+Pj4+ICsgICAgLy8NCj4gPj4+PiAr ICAgIC8vIE5PVEU6IE9ubHkgb25lIFR5cGUgMSAoUGh5c2ljYWwpIFBhcnRpdGlvbiBpcyBzdXBw b3J0ZWQuIEl0DQo+ID4+PmhhcyBiZWVuDQo+ID4+Pj4gKyAgICAvLyBjaGVja2VkIGFscmVhZHkg aW4gUGFydGl0aW9uIGRyaXZlciBmb3IgZXhpc3RlbmNlIG9mIGENCj4gPj5zaW5nbGUNCj4gPj4+ VHlwZSAxDQo+ID4+Pj4gKyAgICAvLyBQYXJ0aXRpb24gbWFwLCBzbyB3ZSBkb24ndCBoYXZlIHRv IGRvdWJsZSBjaGVjayBoZXJlLg0KPiA+Pj4+ICsgICAgLy8NCj4gPj4+PiArICAgIC8vIFBhcnRp dGlvbiByZWZlcmVuY2UgbnVtYmVyIGNhbiBhbHNvIGJlIHJldHJpZXZlZCBmcm9tDQo+ID4+Pj4g KyAgICAvLyBMb25nQWQtPkV4dGVudExvY2F0aW9uLlBhcnRpdGlvblJlZmVyZW5jZU51bWJlciwg aG93ZXZlcg0KPiA+Pj4+ICsgdGhlDQo+ID4+PnNwZWMNCj4gPj4+PiBzYXlzDQo+ID4+Pj4gKyAg ICAvLyBpdCBtYXkgYmUgMCwgc28gbGV0J3Mgbm90IHJlbHkgb24gaXQuDQo+ID4+Pj4gICAgICAv Lw0KPiA+Pj4+IC0gICAgaWYgKExvZ2ljYWxWb2xEZXNjLT5QYXJ0aXRpb25NYXBzWzBdICE9IDEg fHwNCj4gPj4+PiAtICAgICAgICBMb2dpY2FsVm9sRGVzYy0+UGFydGl0aW9uTWFwc1sxXSAhPSA2 KSB7DQo+ID4+Pj4gLSAgICAgIHJldHVybiBOVUxMOw0KPiA+Pj4+IC0gICAgfQ0KPiA+Pj4+ICAg ICAgUGFydGl0aW9uTnVtID0gKihVSU5UMTYNCj4gPj4+KikoKFVJTlROKSZMb2dpY2FsVm9sRGVz Yy0+UGFydGl0aW9uTWFwc1s0XSk7DQo+ID4+Pj4gICAgICBicmVhazsNCj4gPj4+PiAtICBjYXNl IDB4MDI2MDoNCj4gPj4+PiArDQo+ID4+Pj4gKyAgZGVmYXVsdDoNCj4gPj4+PiAgICAgIC8vDQo+ ID4+Pj4gLSAgICAvLyBGYWxsIHRocm91Z2guDQo+ID4+Pj4gKyAgICAvLyBVbnN1cHBvcnRlZCBV REYgcmV2aXNpb24NCj4gPj4+PiAgICAgIC8vDQo+ID4+Pj4gLSAgZGVmYXVsdDoNCj4gPj4+PiAt ICAgIFBhcnRpdGlvbk51bSA9IExvbmdBZC0+RXh0ZW50TG9jYXRpb24uUGFydGl0aW9uUmVmZXJl bmNlTnVtYmVyOw0KPiA+Pj4+IC0gICAgYnJlYWs7DQo+ID4+Pj4gKyAgICByZXR1cm4gTlVMTDsN Cj4gPj4+PiAgICB9DQo+ID4+Pj4NCj4gPj4+PiAtDQo+ID4NCj4gPiAtLQ0KPiA+IFNlbnQgZnJv bSBteSBBbmRyb2lkIGRldmljZSB3aXRoIEstOSBNYWlsLiBQbGVhc2UgZXhjdXNlIG15IGJyZXZp dHkuDQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N Cj4gPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn DQo+ID4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo+ IA0KPiANCj4gDQo+IC0tDQo+IFBhdWxvIEFsY2FudGFyYSwgSFANCj4gU3BlYWtpbmcgZm9yIG15 c2VsZiBvbmx5Lg0K