From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: zhichao.gao@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Thu, 11 Apr 2019 02:43:31 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2019 02:43:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,336,1549958400"; d="scan'208";a="149925674" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga002.jf.intel.com with ESMTP; 11 Apr 2019 02:43:30 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 11 Apr 2019 02:33:41 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 11 Apr 2019 02:33:39 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.164]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.92]) with mapi id 14.03.0415.000; Thu, 11 Apr 2019 17:33:38 +0800 From: "Gao, Zhichao" To: "Wu, Hao A" , =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "devel@edk2.groups.io" CC: Bret Barkelew , Michael Turner , "Gao, Liming" , "Zeng, Star" , "Wang, Jian J" Subject: Re: [edk2] [PATCH] MdeModulePkg/CapsulePei: Update the debug code to print 64bit data Thread-Topic: [edk2] [PATCH] MdeModulePkg/CapsulePei: Update the debug code to print 64bit data Thread-Index: AQHU6RgJ4qbW1SvgjUeaAPbD2nHSfKYoeywAgA4jiWD//4V4AIAAi1Wg Date: Thu, 11 Apr 2019 09:33:37 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B7C17F2@SHSMSX101.ccr.corp.intel.com> References: <20190402055020.8656-1-zhichao.gao@intel.com> <3CE959C139B4C44DBEA1810E3AA6F9000B7C1722@SHSMSX101.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: zhichao.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB5b3UgYWR2aWNlcy4NCg0KSSB3b3VsZCBiZXR0ZXIgdG8ga2VlcCB0aGUgJ1VJ TlROJyB3aXRoICcleCcgYmVjYXVzZSBQRUlNIGlzIGNvbXBpbGVkIGFzIDMyIGJpdCBvYmplY3Qu IEFuZCBsb3RzIG9mIFBFSU1zIGtlZXAgdGhpcyBjb21iaW5lLg0KDQpUaGFua3MsDQpaaGljaGFv DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV3UsIEhhbyBBDQo+IFNl bnQ6IFRodXJzZGF5LCBBcHJpbCAxMSwgMjAxOSA0OjEyIFBNDQo+IFRvOiBHYW8sIFpoaWNoYW8g PHpoaWNoYW8uZ2FvQGludGVsLmNvbT47IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpDQo+IDxwaGls bWRAcmVkaGF0LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBCcmV0IEJhcmtlbGV3 IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBNaWNoYWVsIFR1cm5lcg0KPiA8TWljaGFl bC5UdXJuZXJAbWljcm9zb2Z0LmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNv bT47DQo+IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGpp YW4uai53YW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0hdIE1kZU1v ZHVsZVBrZy9DYXBzdWxlUGVpOiBVcGRhdGUgdGhlIGRlYnVnDQo+IGNvZGUgdG8gcHJpbnQgNjRi aXQgZGF0YQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEdh bywgWmhpY2hhbw0KPiA+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCAxMSwgMjAxOSAzOjQ3IFBNDQo+ ID4gVG86IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpOyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ IENjOiBCcmV0IEJhcmtlbGV3OyBNaWNoYWVsIFR1cm5lcjsgR2FvLCBMaW1pbmc7IFplbmcsIFN0 YXI7IFd1LCBIYW8gQTsNCj4gPiBXYW5nLCBKaWFuIEoNCj4gPiBTdWJqZWN0OiBSRTogW2VkazJd IFtQQVRDSF0gTWRlTW9kdWxlUGtnL0NhcHN1bGVQZWk6IFVwZGF0ZSB0aGUNCj4gZGVidWcNCj4g PiBjb2RlIHRvIHByaW50IDY0Yml0IGRhdGENCj4gPg0KPiA+IFNvcnJ5IGZvciBtaXNzaW5nIHRo aXMgZW1haWwuDQo+ID4NCj4gPiBXaGlsZSBJIGNoYW5nZSB0aGUgY29kZSwgaXQgY291bGRuJ3Qg cGFzcyB0aGUgUGF0Y2hjaGVyLnB5IGJlY2F1c2Ugb2YNCj4gPiB0aGUgJ0VGSV9EXyIgdmVyc2lv biBNQUNSTy4gU28gSSBjaGFuZ2UgYWxsIHRoZSBkZWJ1ZyBtZXNzYWdlIGluIHRoaXMNCj4gZHJp dmVyLg0KPiA+IE1heWJlIHRoYXQgaXMgYSByZWR1bmRhbnQgd29yay4NCj4gDQo+IEhlbGxvIFpo aWNoYW8sDQo+IA0KPiBGb3IgdGhpcyBjYXNlLCB5b3UgY2FuIHdvcmsgb3V0IGEgZmlyc3QgcGF0 Y2ggdG8gcmVwbGFjZSBhbGwgdGhlIG1hY3JvcyBzdGFydGluZw0KPiB3aXRoICdFRklfRF8nIHdp dGggJ0RFQlVHXycuIEFuZCBhIHNlY29uZCBwYXRjaCB0byBhZGRyZXNzIHRoZSByZWFsIGlzc3Vl Lg0KPiANCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBaaGljaGFvDQo+ID4NCj4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSBb bWFpbHRvOnBoaWxtZEByZWRoYXQuY29tXQ0KPiA+ID4gU2VudDogVHVlc2RheSwgQXByaWwgMiwg MjAxOSAxMTozNiBQTQ0KPiA+ID4gVG86IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50ZWwu Y29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+IENjOiBCcmV0IEJhcmtlbGV3IDxC cmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBNaWNoYWVsIFR1cm5lcg0KPiA+ID4gPE1pY2hh ZWwuVHVybmVyQG1pY3Jvc29mdC5jb20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5j b20+Ow0KPiA+ID4gWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPiA+IFN1Ympl Y3Q6IFJlOiBbZWRrMl0gW1BBVENIXSBNZGVNb2R1bGVQa2cvQ2Fwc3VsZVBlaTogVXBkYXRlIHRo ZQ0KPiA+IGRlYnVnDQo+ID4gPiBjb2RlIHRvIHByaW50IDY0Yml0IGRhdGENCj4gPiA+DQo+ID4g PiBIaSBCcmV0LA0KPiA+ID4NCj4gPiA+IE9uIDQvMi8xOSA3OjUwIEFNLCBaaGljaGFvIEdhbyB3 cm90ZToNCj4gPiA+ID4gRnJvbTogQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3Nv ZnQuY29tPg0KPiA+ID4gPg0KPiA+ID4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3Jl Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Nw0KPiA+ID4gPg0KPiA+ID4gPiBGb3Igc29tZSBwb2lu dGVyIGFuZCBVSU5UNjQgZGF0YSwgdGhlIGRlYnVnIGNvZGUgcHJpbnQgd2l0aCAnJXgnLg0KPiA+ ID4gPiBXaGljaCB3b3VsZCBsb3NzIHRoZSB1cHBlciAzMmJpdCBkYXRhLiBTbyB1cGRhdGUgJyV4 JyB0byAnJWx4Jw0KPiA+ID4gPiBmb3IgdGhlc2UgZGF0YS4NCj4gPiA+DQo+ID4gPiBTb21lIGFy ZSBVSU5UTi4gUGVyIExhc3psbyBhbnN3ZXIgb24gdGhpcyB0aHJlYWQ6DQo+ID4gPiBodHRwczov L2xpc3RzLjAxLm9yZy9waXBlcm1haWwvZWRrMi1kZXZlbC8yMDE2LVNlcHRlbWJlci8wMDIwOTMu aHRtbA0KPiA+ID4gZm9yIHRob3NlLCBjYXN0aW5nIGFuZCBjaGFuZ2luZyBmb3JtYXQgaXMgdGhl IGFjY2VwdGVkIHdheS4NCj4gDQo+IEFmdGVyIGEgc2tpbSBvZiB0aGUgcGF0Y2gsIEkgdGhpbmsg dGhlcmUgc2VlbXMgb25seSAyIGNhc2VzIHRoYXQgYXJlIGhhbmRsZWQgaW4NCj4gdGhpcyBwYXRj aDoNCj4gDQo+IDEuIFVJTlQ2NA0KPiBGb3IgdGhpcyBvbmUsIHRoZSBjaGFuZ2UgaW4gdGhpcyBw YXRjaCBsb29rcyBnb29kIHRvIG1lLg0KPiANCj4gMi4gUG9pbnRlcnMNCj4gSSB0aGluayB3ZSBj YW4gZGlyZWN0bHkgdXNlICclcCcgZm9yIHBvaW50ZXJzLg0KPiANCj4gSWYgSSBoYXBwZW4gdG8g bWlzcyBvdGhlciBjYXNlcywgcGxlYXNlIGRvIGZvbGxvdyB0aGUgYWJvdmUgbGluayB0byBoYW5k bGUNCj4gVUlOVE4uDQo+IA0KPiANCj4gQmVzdCBSZWdhcmRzLA0KPiBIYW8gV3UNCj4gDQo+ID4g Pg0KPiA+ID4gSG93ZXZlciB0aGlzIGlzIGEgY2hhbmdlLA0KPiA+ID4NCj4gPiA+ID4gQ2hhbmdl IHRoZSBERUJVRyBQcmludExldmVsIGZyb20gRUZJX0RfIHZlcnNpb24gdG8gREVCVUdfIHZlcnNp b24uDQo+ID4gPiA+IERFQlVHXyB2ZXJzaW9uIGlzIHJlY29tbWVuZGVkIHRvIHVzZS4NCj4gPiA+ DQo+ID4gPiBhbmQgdGhpcyBpcyBhbm90aGVyIGNoYW5nZS4NCj4gPiA+DQo+ID4gPiBTcGxpdHRp bmcgdGhpcyBwYXRjaCBpbiAyIHdvdWxkIG1ha2UgaXQgbW9yZSBkaWdlc3RhYmxlLg0KPiA+ID4N Cj4gPiA+ID4NCj4gPiA+ID4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ DQo+ID4gPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBTdGFy IFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBMaW1pbmcgR2FvIDxsaW1p bmcuZ2FvQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBt aWNyb3NvZnQuY29tPg0KPiA+ID4gPiBDYzogTWljaGFlbCBUdXJuZXIgPE1pY2hhZWwuVHVybmVy QG1pY3Jvc29mdC5jb20+DQo+ID4gPiA+IENjOiBCcmV0IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3 QG1pY3Jvc29mdC5jb20+DQo+ID4gPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29u dHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWmhpY2hhbyBH YW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+ICAuLi4vQ2Fw c3VsZVBlaS9Db21tb24vQ2Fwc3VsZUNvYWxlc2NlLmMgICAgICAgfCA5MCArKysrKysrKystLS0t LS0tLS0NCj4gLQ0KPiA+ID4gPiAgLi4uL1VuaXZlcnNhbC9DYXBzdWxlUGVpL1VlZmlDYXBzdWxl LmMgICAgICAgIHwgNDYgKysrKystLS0tLQ0KPiA+ID4gPiAgLi4uL1VuaXZlcnNhbC9DYXBzdWxl UGVpL1g2NC9YNjRFbnRyeS5jICAgICAgIHwgIDIgKy0NCj4gPiA+ID4gIDMgZmlsZXMgY2hhbmdl ZCwgNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRp ZmYgLS1naXQNCj4gPiA+ID4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVQZWkvQ29t bW9uL0NhcHN1bGVDb2FsZXNjZS5jDQo+ID4gPiA+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9D YXBzdWxlUGVpL0NvbW1vbi9DYXBzdWxlQ29hbGVzY2UuYw0KPiA+ID4gPiBpbmRleCAzNTc1YTk0 ZDBmLi4yYTUyNzA1NGJkIDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gYS9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL0NhcHN1bGVQZWkvQ29tbW9uL0NhcHN1bGVDb2FsZXNjZS5jDQo+ID4gPiA+ICsrKw0K PiA+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUGVpL0NvbW1vbi9DYXBzdWxlQ29h bGVzY2UuYw0KPiA+ID4gPiBAQCAtMjU4LDcgKzI1OCw3IEBAIFZhbGlkYXRlQ2Fwc3VsZUJ5TWVt b3J5UmVzb3VyY2UgKA0KPiA+ID4gPiAgICAvLyBTYW5pdHkgQ2hlY2sNCj4gPiA+ID4gICAgLy8N Cj4gPiA+ID4gICAgaWYgKFNpemUgPiBNQVhfQUREUkVTUykgew0KPiA+ID4gPiAtICAgIERFQlVH ICgoRUZJX0RfRVJST1IsICJFUlJPUjogU2l6ZSgweCVseCkgPiBNQVhfQUREUkVTU1xuIiwNCj4g PiBTaXplKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBTaXpl KDB4JWx4KSA+IE1BWF9BRERSRVNTXG4iLA0KPiA+ID4gPiArIFNpemUpKTsNCj4gPiA+ID4gICAg ICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTI2Niw3 ICsyNjYsNyBAQCBWYWxpZGF0ZUNhcHN1bGVCeU1lbW9yeVJlc291cmNlICgNCj4gPiA+ID4gICAg Ly8gU2FuaXR5IENoZWNrDQo+ID4gPiA+ICAgIC8vDQo+ID4gPiA+ICAgIGlmIChBZGRyZXNzID4g KE1BWF9BRERSRVNTIC0gU2l6ZSkpIHsNCj4gPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9S LCAiRVJST1I6IEFkZHJlc3MoMHglbHgpID4gKE1BWF9BRERSRVNTIC0NCj4gPiA+IFNpemUoMHgl bHgpKVxuIiwgQWRkcmVzcywgU2l6ZSkpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJS T1IsICJFUlJPUjogQWRkcmVzcygweCVseCkgPg0KPiAoTUFYX0FERFJFU1MgLQ0KPiA+ID4gPiAr IFNpemUoMHglbHgpKVxuIiwgQWRkcmVzcywgU2l6ZSkpOw0KPiA+ID4gPiAgICAgIHJldHVybiBG QUxTRTsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtMjgwLDE0ICsyODAsMTQg QEAgVmFsaWRhdGVDYXBzdWxlQnlNZW1vcnlSZXNvdXJjZSAoDQo+ID4gPiA+ICAgIGZvciAoSW5k ZXggPSAwOyBNZW1vcnlSZXNvdXJjZVtJbmRleF0uUmVzb3VyY2VMZW5ndGggIT0gMDsNCj4gPiA+ ID4gSW5kZXgrKykNCj4gPiB7DQo+ID4gPiA+ICAgICAgaWYgKChBZGRyZXNzID49IE1lbW9yeVJl c291cmNlW0luZGV4XS5QaHlzaWNhbFN0YXJ0KSAmJg0KPiA+ID4gPiAgICAgICAgICAoKEFkZHJl c3MgKyBTaXplKSA8PSAoTWVtb3J5UmVzb3VyY2VbSW5kZXhdLlBoeXNpY2FsU3RhcnQNCj4gPiA+ ID4gKw0KPiA+ID4gTWVtb3J5UmVzb3VyY2VbSW5kZXhdLlJlc291cmNlTGVuZ3RoKSkpIHsNCj4g PiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkFkZHJlc3MoMHglbHgpIFNpemUoMHgl bHgpIGluDQo+ID4gPiBNZW1vcnlSZXNvdXJjZVsweCV4XSAtIFN0YXJ0KDB4JWx4KSBMZW5ndGgo MHglbHgpXG4iLA0KPiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiQWRkcmVzcygw eCVseCkgU2l6ZSgweCVseCkgaW4NCj4gPiA+ID4gKyBNZW1vcnlSZXNvdXJjZVsweCV4XSAtIFN0 YXJ0KDB4JWx4KSBMZW5ndGgoMHglbHgpXG4iLA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBZGRyZXNzLCBTaXplLA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCwNCj4gPiA+ID4gTWVtb3J5UmVzb3VyY2VbSW5kZXhdLlBoeXNpY2FsU3RhcnQsDQo+ ID4gPiBNZW1vcnlSZXNvdXJjZVtJbmRleF0uUmVzb3VyY2VMZW5ndGgpKTsNCj4gPiA+ID4gICAg ICAgIHJldHVybiBUUlVFOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0K PiA+ID4gPiAtICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6IEFkZHJlc3MoMHglbHgpIFNp emUoMHglbHgpIG5vdCBpbg0KPiA+ID4gPiBhbnkgTWVtb3J5UmVzb3VyY2VcbiIsIEFkZHJlc3Ms IFNpemUpKTsNCj4gPiA+ID4gKyAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBBZGRyZXNz KDB4JWx4KSBTaXplKDB4JWx4KSBub3QgaW4NCj4gPiBhbnkNCj4gPiA+ID4gKyBNZW1vcnlSZXNv dXJjZVxuIiwgQWRkcmVzcywgU2l6ZSkpOw0KPiA+ID4gPiAgICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0zMTIsNyArMzEyLDcgQEAgVmFsaWRhdGVDYXBz dWxlSW50ZWdyaXR5ICgNCj4gPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg IENhcHN1bGVDb3VudDsNCj4gPiA+ID4gICAgRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUiAg ICpQdHI7DQo+ID4gPiA+DQo+ID4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIlZhbGlkYXRl Q2Fwc3VsZUludGVncml0eVxuIikpOw0KPiA+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJW YWxpZGF0ZUNhcHN1bGVJbnRlZ3JpdHlcbiIpKTsNCj4gPiA+ID4NCj4gPiA+ID4gICAgLy8NCj4g PiA+ID4gICAgLy8gR28gdGhyb3VnaCB0aGUgbGlzdCB0byBsb29rIGZvciBpbmNvbnNpc3RlbmNp ZXMuIENoZWNrIGZvcjoNCj4gPiA+ID4gQEAgLTMzMywxNSArMzMzLDE1IEBAIFZhbGlkYXRlQ2Fw c3VsZUludGVncml0eSAoDQo+ID4gPiA+ICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICAgIH0N Cj4gPiA+ID4NCj4gPiA+ID4gLSAgREVCVUcgKChFRklfRF9JTkZPLCAiUHRyIC0gMHgleFxuIiwg UHRyKSk7DQo+ID4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIlB0ci0+TGVuZ3RoIC0gMHgl eFxuIiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+ID4gLSAgREVCVUcgKChFRklfRF9JTkZPLCAiUHRy LT5VbmlvbiAtIDB4JXhcbiIsDQo+ID4gPiA+IFB0ci0+VW5pb24uQ29udGludWF0aW9uUG9pbnRl cikpOw0KPiA+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJQdHIgLSAweCVseFxuIiwgKFVJ TlQ2NClQdHIpKTsgIERFQlVHDQo+ID4gPiA+ICsgKChERUJVR19JTkZPLCAiUHRyLT5MZW5ndGgg LSAweCVseFxuIiwgUHRyLT5MZW5ndGgpKTsgIERFQlVHDQo+ID4gPiA+ICsgKChERUJVR19JTkZP LCAiUHRyLT5VbmlvbiAtIDB4JWx4XG4iLA0KPiA+ID4gPiArIFB0ci0+VW5pb24uQ29udGludWF0 aW9uUG9pbnRlcikpOw0KPiA+ID4gPiAgICB3aGlsZSAoKFB0ci0+TGVuZ3RoICE9IDApIHx8IChQ dHItPlVuaW9uLkNvbnRpbnVhdGlvblBvaW50ZXIgIT0NCj4gPiA+IChFRklfUEhZU0lDQUxfQURE UkVTUykgKFVJTlROKSBOVUxMKSkgew0KPiA+ID4gPiAgICAgIC8vDQo+ID4gPiA+ICAgICAgLy8g TWFrZSBzdXJlIHRoZSBkZXNjcmlwdG9yIGlzIGFsaWduZWQgYXQgVUlOVDY0IGluIG1lbW9yeQ0K PiA+ID4gPiAgICAgIC8vDQo+ID4gPiA+ICAgICAgaWYgKChVSU5UTikgUHRyICYgKHNpemVvZihV SU5UNjQpIC0gMSkpIHsNCj4gPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJP UjogQmxvY2tMaXN0IGFkZHJlc3MgZmFpbGVkIGFsaWdubWVudA0KPiA+ID4gY2hlY2tcbiIpKTsN Cj4gPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjogQmxvY2tMaXN0IGFk ZHJlc3MgZmFpbGVkDQo+ID4gPiA+ICsgYWxpZ25tZW50IGNoZWNrXG4iKSk7DQo+ID4gPiA+ICAg ICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0z NTQsOSArMzU0LDkgQEAgVmFsaWRhdGVDYXBzdWxlSW50ZWdyaXR5ICgNCj4gPiA+ID4gICAgICAg IGlmICghVmFsaWRhdGVDYXBzdWxlQnlNZW1vcnlSZXNvdXJjZSAoTWVtb3J5UmVzb3VyY2UsDQo+ ID4gPiAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpIChVSU5UTikgUHRyLCBzaXplb2YNCj4gPiA+IChF RklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SKSkpIHsNCj4gPiA+ID4gICAgICAgICAgcmV0dXJu IE5VTEw7DQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+IC0gICAgICBERUJVRyAoKEVGSV9EX0lO Rk8sICJQdHIoQykgLSAweCV4XG4iLCBQdHIpKTsNCj4gPiA+ID4gLSAgICAgIERFQlVHICgoRUZJ X0RfSU5GTywgIlB0ci0+TGVuZ3RoIC0gMHgleFxuIiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+ID4g LSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIlB0ci0+VW5pb24gLSAweCV4XG4iLCBQdHItDQo+ ID4gPiA+VW5pb24uQ29udGludWF0aW9uUG9pbnRlcikpOw0KPiA+ID4gPiArICAgICAgREVCVUcg KChERUJVR19JTkZPLCAiUHRyKEMpIC0gMHglbHhcbiIsIChVSU5UNjQpUHRyKSk7DQo+ID4gPiA+ ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJQdHItPkxlbmd0aCAtIDB4JWx4XG4iLCBQdHIt Pkxlbmd0aCkpOw0KPiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiUHRyLT5Vbmlv biAtIDB4JWx4XG4iLA0KPiA+ID4gPiArIFB0ci0+VW5pb24uQ29udGludWF0aW9uUG9pbnRlcikp Ow0KPiA+ID4gPiAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ICAgICAgICBpZiAoIVZhbGlkYXRlQ2Fw c3VsZUJ5TWVtb3J5UmVzb3VyY2UgKE1lbW9yeVJlc291cmNlLCBQdHItDQo+ID4gPiA+VW5pb24u RGF0YUJsb2NrLCBQdHItPkxlbmd0aCkpIHsNCj4gPiA+ID4gICAgICAgICAgcmV0dXJuIE5VTEw7 DQo+ID4gPiA+IEBAIC0zNzUsMTQgKzM3NSwxNCBAQCBWYWxpZGF0ZUNhcHN1bGVJbnRlZ3JpdHkg KA0KPiA+ID4gPiAgICAgICAgICAvLyBTYW5pdHkgY2hlY2sNCj4gPiA+ID4gICAgICAgICAgLy8N Cj4gPiA+ID4gICAgICAgICAgaWYgKFB0ci0+TGVuZ3RoIDwgc2l6ZW9mKEVGSV9DQVBTVUxFX0hF QURFUikpIHsNCj4gPiA+ID4gLSAgICAgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6 IFB0ci0+TGVuZ3RoKDB4JWx4KSA8DQo+ID4gPiBzaXplb2YoRUZJX0NBUFNVTEVfSEVBREVSKVxu IiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+ID4gKyAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiRVJST1I6IFB0ci0+TGVuZ3RoKDB4JWx4KSA8DQo+ID4gPiA+ICsgc2l6ZW9mKEVGSV9DQVBT VUxFX0hFQURFUilcbiIsIFB0ci0+TGVuZ3RoKSk7DQo+ID4gPiA+ICAgICAgICAgICAgcmV0dXJu IE5VTEw7DQo+ID4gPiA+ICAgICAgICAgIH0NCj4gPiA+ID4gICAgICAgICAgLy8NCj4gPiA+ID4g ICAgICAgICAgLy8gTWFrZSBzdXJlIEhlYWRlclNpemUgZmllbGQgaXMgdmFsaWQNCj4gPiA+ID4g ICAgICAgICAgLy8NCj4gPiA+ID4gICAgICAgICAgaWYgKENhcHN1bGVIZWFkZXItPkhlYWRlclNp emUgPg0KPiA+ID4gPiBDYXBzdWxlSGVhZGVyLT5DYXBzdWxlSW1hZ2VTaXplKQ0KPiA+ID4gew0K PiA+ID4gPiAtICAgICAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJPUjogQ2Fwc3VsZUhl YWRlci0NCj4gPiA+SGVhZGVyU2l6ZSgweCV4KSA+DQo+ID4gPiBDYXBzdWxlSGVhZGVyLT5DYXBz dWxlSW1hZ2VTaXplKDB4JXgpXG4iLCBDYXBzdWxlSGVhZGVyLQ0KPiA+ID5IZWFkZXJTaXplLA0K PiA+ID4gQ2Fwc3VsZUhlYWRlci0+Q2Fwc3VsZUltYWdlU2l6ZSkpOw0KPiA+ID4gPiArICAgICAg ICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjoNCj4gPiA+ID4gKyBDYXBzdWxlSGVhZGVy LT5IZWFkZXJTaXplKDB4JXgpID4gQ2Fwc3VsZUltYWdlU2l6ZSgweCV4KVxuIiwNCj4gPiA+ID4g KyBDYXBzdWxlSGVhZGVyLT5DYXBzdWxlSGVhZGVyLQ0KPiA+ID4gPkhlYWRlclNpemUsDQo+ID4g PiA+ICsgQ2Fwc3VsZUhlYWRlci0+Q2Fwc3VsZUltYWdlU2l6ZSkpOw0KPiA+ID4gPiAgICAgICAg ICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAgICAgICAgICB9DQo+ID4gPiA+ICAgICAgICAgIGlm IChJc0NhcHN1bGVDb3JydXB0ZWQgKENhcHN1bGVIZWFkZXIpKSB7IEBAIC0zOTUsNw0KPiA+ID4g PiszOTUsNyBAQCAgVmFsaWRhdGVDYXBzdWxlSW50ZWdyaXR5ICgNCj4gPiA+ID4gICAgICAgIGlm IChDYXBzdWxlU2l6ZSA+PSBQdHItPkxlbmd0aCkgew0KPiA+ID4gPiAgICAgICAgICBDYXBzdWxl U2l6ZSA9IENhcHN1bGVTaXplIC0gUHRyLT5MZW5ndGg7DQo+ID4gPiA+ICAgICAgICB9IGVsc2Ug ew0KPiA+ID4gPiAtICAgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6IENhcHN1bGVT aXplKDB4JWx4KSA8IFB0ci0NCj4gPiA+ID5MZW5ndGgoMHglbHgpXG4iLCBDYXBzdWxlU2l6ZSwg UHRyLT5MZW5ndGgpKTsNCj4gPiA+ID4gKyAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVS Uk9SOiBDYXBzdWxlU2l6ZSgweCVseCkgPA0KPiA+ID4gPiArIFB0ci0+TGVuZ3RoKDB4JWx4KVxu IiwgQ2Fwc3VsZVNpemUsIFB0ci0+TGVuZ3RoKSk7DQo+ID4gPiA+ICAgICAgICAgIC8vDQo+ID4g PiA+ICAgICAgICAgIC8vIFNhbml0eSBjaGVjaw0KPiA+ID4gPiAgICAgICAgICAvLw0KPiA+ID4g PiBAQCAtNDA5LDkgKzQwOSw5IEBAIFZhbGlkYXRlQ2Fwc3VsZUludGVncml0eSAoDQo+ID4gPiA+ ICAgICAgICBpZiAoIVZhbGlkYXRlQ2Fwc3VsZUJ5TWVtb3J5UmVzb3VyY2UgKE1lbW9yeVJlc291 cmNlLA0KPiA+ID4gKEVGSV9QSFlTSUNBTF9BRERSRVNTKSAoVUlOVE4pIFB0ciwgc2l6ZW9mDQo+ ID4gPiAoRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUikpKSB7DQo+ID4gPiA+ICAgICAgICAg IHJldHVybiBOVUxMOw0KPiA+ID4gPiAgICAgICAgfQ0KPiA+ID4gPiAtICAgICAgREVCVUcgKChF RklfRF9JTkZPLCAiUHRyKEIpIC0gMHgleFxuIiwgUHRyKSk7DQo+ID4gPiA+IC0gICAgICBERUJV RyAoKEVGSV9EX0lORk8sICJQdHItPkxlbmd0aCAtIDB4JXhcbiIsIFB0ci0+TGVuZ3RoKSk7DQo+ ID4gPiA+IC0gICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJQdHItPlVuaW9uIC0gMHgleFxuIiwg UHRyLQ0KPiA+ID4gPlVuaW9uLkNvbnRpbnVhdGlvblBvaW50ZXIpKTsNCj4gPiA+ID4gKyAgICAg IERFQlVHICgoREVCVUdfSU5GTywgIlB0cihCKSAtIDB4JWx4XG4iLCAoVUlOVDY0KVB0cikpOw0K PiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiUHRyLT5MZW5ndGggLSAweCVseFxu IiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIlB0 ci0+VW5pb24gLSAweCVseFxuIiwNCj4gPiA+ID4gKyBQdHItPlVuaW9uLkNvbnRpbnVhdGlvblBv aW50ZXIpKTsNCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4g QEAgLTQxOSw3ICs0MTksNyBAQCBWYWxpZGF0ZUNhcHN1bGVJbnRlZ3JpdHkgKA0KPiA+ID4gPiAg ICAgIC8vDQo+ID4gPiA+ICAgICAgLy8gTm8gYW55IGNhcHN1bGUgaXMgZm91bmQgaW4gQmxvY2tM aXN0DQo+ID4gPiA+ICAgICAgLy8NCj4gPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAi RVJST1I6IENhcHN1bGVDb3VudCgweCV4KSA9PSAwXG4iLA0KPiA+ID4gQ2Fwc3VsZUNvdW50KSk7 DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBDYXBzdWxlQ291bnQo MHgleCkgPT0gMFxuIiwNCj4gPiA+ID4gKyBDYXBzdWxlQ291bnQpKTsNCj4gPiA+ID4gICAgICBy ZXR1cm4gTlVMTDsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtNDI3LDcgKzQy Nyw3IEBAIFZhbGlkYXRlQ2Fwc3VsZUludGVncml0eSAoDQo+ID4gPiA+ICAgICAgLy8NCj4gPiA+ ID4gICAgICAvLyBDYXBzdWxlIGRhdGEgaXMgaW5jb21wbGV0ZS4NCj4gPiA+ID4gICAgICAvLw0K PiA+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJPUjogQ2Fwc3VsZVNpemUoMHgl bHgpICE9IDBcbiIsDQo+ID4gPiBDYXBzdWxlU2l6ZSkpOw0KPiA+ID4gPiArICAgIERFQlVHICgo REVCVUdfRVJST1IsICJFUlJPUjogQ2Fwc3VsZVNpemUoMHglbHgpICE9IDBcbiIsDQo+ID4gPiA+ ICsgQ2Fwc3VsZVNpemUpKTsNCj4gPiA+ID4gICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gICAg fQ0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtNTE1LDcgKzUxNSw3IEBAIFJlbG9jYXRlQmxvY2tEZXNj cmlwdG9ycyAoDQo+ID4gPiA+ICAgICAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICAg Q29weU1lbSAoKFZPSUQgKikgUmVsb2NCdWZmZXIsIChWT0lEICopIChVSU5UTikNCj4gPiA+ID5U ZW1wQmxvY2tEZXNjLSBVbmlvbi5EYXRhQmxvY2ssIChVSU5UTikgVGVtcEJsb2NrRGVzYy0+TGVu Z3RoKTsNCj4gPiA+ID4gLSAgICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSByZWxv Y2F0ZSBkZXNjcmlwdG9ycyBmcm9tL3RvL3NpemUNCj4gPiA+IDB4JWxYIDB4JWxYIDB4JWxYXG4i LCBUZW1wQmxvY2tEZXNjLT5Vbmlvbi5EYXRhQmxvY2ssDQo+ID4gPiAoVUlOVDY0KShVSU5UTilS ZWxvY0J1ZmZlciwgVGVtcEJsb2NrRGVzYy0+TGVuZ3RoKSk7DQo+ID4gPiA+ICsgICAgICAgIERF QlVHICgoREVCVUdfSU5GTywgIkNhcHN1bGUgcmVsb2NhdGUgZGVzY3JpcHRvcnMNCj4gPiA+ID4g KyBmcm9tL3RvL3NpemUgIDB4JWxYIDB4JWxYIDB4JWxYXG4iLA0KPiA+ID4gPiArIFRlbXBCbG9j a0Rlc2MtPlVuaW9uLkRhdGFCbG9jaywgKFVJTlQ2NCkoVUlOVE4pUmVsb2NCdWZmZXIsDQo+ID4g PiA+ICsgVGVtcEJsb2NrRGVzYy0+TGVuZ3RoKSk7DQo+ID4gPiA+ICAgICAgICAgIFRlbXBCbG9j a0Rlc2MtPlVuaW9uLkRhdGFCbG9jayA9IChFRklfUEhZU0lDQUxfQUREUkVTUykNCj4gPiAoVUlO VE4pDQo+ID4gPiBSZWxvY0J1ZmZlcjsNCj4gPiA+ID4gICAgICAgIH0NCj4gPiA+ID4gICAgICAg IFRlbXBCbG9ja0Rlc2MrKzsNCj4gPiA+ID4gQEAgLTU1Miw3ICs1NTIsNyBAQCBSZWxvY2F0ZUJs b2NrRGVzY3JpcHRvcnMgKA0KPiA+ID4gPiAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4g ICAgICAgIH0NCj4gPiA+ID4gICAgICAgIENvcHlNZW0gKChWT0lEICopIFJlbG9jQnVmZmVyLCAo Vk9JRCAqKSBDdXJyQmxvY2tEZXNjSGVhZCwNCj4gPiA+IEJsb2NrTGlzdFNpemUpOw0KPiA+ID4g PiAtICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSByZWxvYyBkZXNjcmlwdG9yIGJs b2NrICMyXG4iKSk7DQo+ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJDYXBzdWxl IHJlbG9jIGRlc2NyaXB0b3IgYmxvY2sNCj4gPiA+ID4gKyAjMlxuIikpOw0KPiA+ID4gPiAgICAg ICAgLy8NCj4gPiA+ID4gICAgICAgIC8vIFBvaW50IHRoZSBwcmV2aW91cyBibG9jaydzIG5leHQg cG9pbnQgdG8gdGhpcyBjb3BpZWQgdmVyc2lvbi4gSWYNCj4gPiA+ID4gICAgICAgIC8vIHRoZSB0 YWlsIHBvaW50ZXIgaXMgbnVsbCwgdGhlbiB0aGlzIGlzIHRoZSBmaXJzdCBkZXNjcmlwdG9yIGJs b2NrLg0KPiA+ID4gPiBAQCAtNjUxLDcgKzY1MSw3IEBAIEdldENhcHN1bGVJbmZvICgNCj4gPiA+ ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXNDYXBzdWxlSW1hZ2VTaXpl Ow0KPiA+ID4gPiAgICBFRklfQ0FQU1VMRV9IRUFERVIgICAgICAgICAgICAgKkNhcHN1bGVIZWFk ZXI7DQo+ID4gPiA+DQo+ID4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkdldENhcHN1bGVJ bmZvIGVudGVyXG4iKSk7DQo+ID4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkdldENhcHN1 bGVJbmZvIGVudGVyXG4iKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIEFTU0VSVCAoRGVzYyAhPSBO VUxMKTsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTY3Myw3ICs2NzMsNyBAQCBHZXRDYXBzdWxlSW5m byAoDQo+ID4gPiA+ICAgICAgICAvLyBXaGlsZSBoZXJlIHdlIG5lZWQgY2hlY2sgYWxsIGNhcHN1 bGVzIHNpemUuDQo+ID4gPiA+ICAgICAgICAvLw0KPiA+ID4gPiAgICAgICAgaWYgKERlc2MtPkxl bmd0aCA+PSAoTUFYX0FERFJFU1MgLSBTaXplKSkgew0KPiA+ID4gPiAtICAgICAgICBERUJVRyAo KEVGSV9EX0VSUk9SLCAiRVJST1I6IERlc2MtPkxlbmd0aCgweCVseCkgPj0NCj4gPiA+IChNQVhf QUREUkVTUyAtIFNpemUoMHgleCkpXG4iLCBEZXNjLT5MZW5ndGgsIFNpemUpKTsNCj4gPiA+ID4g KyAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBEZXNjLT5MZW5ndGgoMHglbHgp ID49DQo+ID4gPiA+ICsgKE1BWF9BRERSRVNTIC0gU2l6ZSgweCV4KSlcbiIsIERlc2MtPkxlbmd0 aCwgU2l6ZSkpOw0KPiA+ID4gPiAgICAgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7 DQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ICAgICAgICBTaXplICs9IChVSU5UTikgRGVzYy0+ TGVuZ3RoOyBAQCAtNzA3LDcgKzcwNyw3IEBADQo+ID4gPiA+IEdldENhcHN1bGVJbmZvICgNCj4g PiA+ID4gICAgLy8gSWYgbm8gZGVzY3JpcHRvcnMsIHRoZW4gZmFpbA0KPiA+ID4gPiAgICAvLw0K PiA+ID4gPiAgICBpZiAoQ291bnQgPT0gMCkgew0KPiA+ID4gPiAtICAgIERFQlVHICgoRUZJX0Rf RVJST1IsICJFUlJPUjogQ291bnQgPT0gMFxuIikpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVC VUdfRVJST1IsICJFUlJPUjogQ291bnQgPT0gMFxuIikpOw0KPiA+ID4gPiAgICAgIHJldHVybiBF RklfTk9UX0ZPVU5EOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC03ODcsNyAr Nzg3LDcgQEAgQ2Fwc3VsZVRlc3RQYXR0ZXJuUHJlQ29hbGVzY2UgKA0KPiA+ID4gPiAgICBVSU5U MzIgIFRlc3RDb3VudGVyOw0KPiA+ID4gPiAgICBVSU5UMzIgIFRlc3RTaXplOw0KPiA+ID4gPg0K PiA+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlVGVzdFBhdHRlcm5QcmVDb2Fs ZXNjZVxuIikpOw0KPiA+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJDYXBzdWxlVGVzdFBh dHRlcm5QcmVDb2FsZXNjZVxuIikpOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAg ICAvLyBGaW5kIGZpcnN0IGRhdGEgZGVzY3JpcHRvcg0KPiA+ID4gPiBAQCAtODAzLDcgKzgwMyw3 IEBAIENhcHN1bGVUZXN0UGF0dGVyblByZUNvYWxlc2NlICgNCj4gPiA+ID4gICAgLy8gRmlyc3Qg b25lIGJldHRlciBiZSBsb25nIGVub3VnaCB0byBhdCBsZWFzdCBob2xkIHRoZSB0ZXN0IHNpZ25h dHVyZQ0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAgICBpZiAoRGVzYy0+TGVuZ3RoIDwgc2l6ZW9m IChVSU5UMzIpKSB7DQo+ID4gPiA+IC0gICAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSB0 ZXN0IHBhdHRlcm4gcHJlLWNvYWxlc2NlIHB1bnRlZA0KPiA+ID4gIzFcbiIpKTsNCj4gPiA+ID4g KyAgICBERUJVRyAoKERFQlVHX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBwcmUtY29hbGVz Y2UgcHVudGVkDQo+ID4gPiA+ICsgIzFcbiIpKTsNCj4gPiA+ID4gICAgICByZXR1cm4gOw0KPiA+ ID4gPiAgICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC04MjMsMTMgKzgyMywxMyBAQCBDYXBzdWxl VGVzdFBhdHRlcm5QcmVDb2FsZXNjZSAoDQo+ID4gPiA+ICAgIFRlc3RQdHIgKz0gMjsNCj4gPiA+ ID4gICAgd2hpbGUgKDEpIHsNCj4gPiA+ID4gICAgICBpZiAoKFRlc3RTaXplICYgMHgwMykgIT0g MCkgew0KPiA+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSB0ZXN0IHBh dHRlcm4gcHJlLWNvYWxlc2NlIHB1bnRlZA0KPiA+ID4gIzJcbiIpKTsNCj4gPiA+ID4gKyAgICAg IERFQlVHICgoREVCVUdfSU5GTywgIkNhcHN1bGUgdGVzdCBwYXR0ZXJuIHByZS1jb2FsZXNjZQ0K PiA+ID4gPiArIHB1bnRlZCAjMlxuIikpOw0KPiA+ID4gPiAgICAgICAgcmV0dXJuIDsNCj4gPiA+ ID4gICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgd2hpbGUgKFRlc3RTaXplID4gMCkgew0K PiA+ID4gPiAgICAgICAgaWYgKCpUZXN0UHRyICE9IFRlc3RDb3VudGVyKSB7DQo+ID4gPiA+IC0g ICAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGUgdGVzdCBwYXR0ZXJuIHByZS1jb2Fs ZXNjZSBmYWlsZWQNCj4gZGF0YQ0KPiA+ID4gY29ycnVwdGlvbiBjaGVja1xuIikpOw0KPiA+ID4g PiArICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBwcmUt Y29hbGVzY2UNCj4gPiA+ID4gKyBmYWlsZWQgZGF0YSBjb3JydXB0aW9uIGNoZWNrXG4iKSk7DQo+ ID4gPiA+ICAgICAgICAgIHJldHVybiA7DQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+DQo+ID4g PiA+IEBAIC04NzMsNyArODczLDcgQEAgQnVpbGRDYXBzdWxlRGVzY3JpcHRvcnMgKA0KPiA+ID4g PiAgICBFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SICAgICAqVGVtcEJsb2NrOw0KPiA+ID4g PiAgICBFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SICAgICAqSGVhZEJsb2NrOw0KPiA+ID4g Pg0KPiA+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJCdWlsZENhcHN1bGVEZXNjcmlwdG9y cyBlbnRlclxuIikpOw0KPiA+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJCdWlsZENhcHN1 bGVEZXNjcmlwdG9ycyBlbnRlclxuIikpOw0KPiA+ID4gPg0KPiA+ID4gPiAgICBMYXN0QmxvY2sg ICAgICAgICA9IE5VTEw7DQo+ID4gPiA+ICAgIEhlYWRCbG9jayAgICAgICAgID0gTlVMTDsNCj4g PiA+ID4gQEAgLTkwNCw3ICs5MDQsNyBAQCBCdWlsZENhcHN1bGVEZXNjcmlwdG9ycyAoDQo+ID4g PiA+ICAgICAgICAgIH0NCj4gPiA+ID4gICAgICAgIH0NCj4gPiA+ID4gICAgICB9IGVsc2Ugew0K PiA+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBCbG9ja0xpc3RCdWZm ZXJbSW5kZXhdKDB4JWx4KSA8DQo+ID4gPiBNQVhfQUREUkVTU1xuIiwgQmxvY2tMaXN0QnVmZmVy W0luZGV4XSkpOw0KPiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBC bG9ja0xpc3RCdWZmZXJbSW5kZXhdKDB4JWx4KQ0KPiA+ID4gPiArIDwgTUFYX0FERFJFU1NcbiIs IEJsb2NrTGlzdEJ1ZmZlcltJbmRleF0pKTsNCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+ICAgICAg SW5kZXggKys7DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4gQEAgLTEwMjIsNyArMTAyMiw3IEBAIENh cHN1bGVEYXRhQ29hbGVzY2UgKA0KPiA+ID4gPiAgICBFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQ VE9SICAgKlRlbXBCbG9ja0Rlc2M7DQo+ID4gPiA+ICAgIEVGSV9DQVBTVUxFX0JMT0NLX0RFU0NS SVBUT1IgICBQcml2YXRlRGF0YURlc2NbMl07DQo+ID4gPiA+DQo+ID4gPiA+IC0gIERFQlVHICgo RUZJX0RfSU5GTywgIkNhcHN1bGVEYXRhQ29hbGVzY2UgZW50ZXJcbiIpKTsNCj4gPiA+ID4gKyAg REVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZURhdGFDb2FsZXNjZSBlbnRlclxuIikpOw0KPiA+ ID4gPg0KPiA+ID4gPiAgICBDYXBzdWxlSW5kZXggICAgID0gMDsNCj4gPiA+ID4gICAgU2l6ZUxl ZnQgICAgICAgICA9IDA7DQo+ID4gPiA+IEBAIC0xMDU1LDE1ICsxMDU1LDE1IEBAIENhcHN1bGVE YXRhQ29hbGVzY2UgKA0KPiA+ID4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g PiA+ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPiAtICBERUJVRyAo KEVGSV9EX0lORk8sICJDYXBzdWxlU2l6ZSAtIDB4JXhcbiIsIENhcHN1bGVTaXplKSk7DQo+ID4g PiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGVOdW1iZXIgLSAweCV4XG4iLCBDYXBz dWxlTnVtYmVyKSk7DQo+ID4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIk51bURlc2NyaXB0 b3JzIC0gMHgleFxuIiwNCj4gPiA+ID4gTnVtRGVzY3JpcHRvcnMpKTsNCj4gPiA+ID4gKyAgREVC VUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZVNpemUgLSAweCV4XG4iLCBDYXBzdWxlU2l6ZSkpOw0K PiA+ID4gPiArIERFQlVHICgoREVCVUdfSU5GTywgIkNhcHN1bGVOdW1iZXIgLSAweCV4XG4iLA0K PiBDYXBzdWxlTnVtYmVyKSk7DQo+ID4gPg0KPiA+ID4gVGhpcyBpcyBjb25mdXNlIENhcHN1bGVO dW1iZXIgaXMgZGVjbGFyZWQgVUlOVDY0IGluDQo+ID4gPiBNZGVNb2R1bGVQa2cvVW5pdmVyc2Fs L0NhcHN1bGVQZWkvQ29tbW9uL0NvbW1vbkhlYWRlci5oIGFuZA0KPiA+IHdlDQo+ID4gPiB1c2Ug YSBVSU5UTiBoZXJlLiBXaHkgbm90IGtlZXAgVUlOVDY0IGFuZCB1c2UgIiVseCI/DQo+ID4gPg0K PiA+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJOdW1EZXNjcmlwdG9ycyAtIDB4JXhcbiIs DQo+ID4gPiA+ICsgTnVtRGVzY3JpcHRvcnMpKTsNCj4gPiA+ID4gICAgaWYgKChDYXBzdWxlU2l6 ZSA9PSAwKSB8fCAoTnVtRGVzY3JpcHRvcnMgPT0gMCkgfHwNCj4gPiA+ID4gKENhcHN1bGVOdW1i ZXIgPT0NCj4gPiAwKSkNCj4gPiA+IHsNCj4gPiA+ID4gICAgICByZXR1cm4gRUZJX05PVF9GT1VO RDsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgICBpZiAoQ2Fwc3VsZU51bWJlciAt IDEgPj0gKE1BWF9BRERSRVNTIC0gKHNpemVvZg0KPiA+ID4gKEVGSV9DQVBTVUxFX1BFSU1fUFJJ VkFURV9EQVRBKSAgKyBzaXplb2YoVUlOVDY0KSkpIC8NCj4gPiA+IHNpemVvZihVSU5UNjQpKQ0K PiA+IHsNCj4gPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6IENhcHN1bGVO dW1iZXIgLSAweCV4XG4iLA0KPiA+ID4gQ2Fwc3VsZU51bWJlcikpOw0KPiA+ID4gPiArICAgIERF QlVHICgoREVCVUdfRVJST1IsICJFUlJPUjogQ2Fwc3VsZU51bWJlciAtIDB4JXhcbiIsDQo+ID4g PiA+ICsgQ2Fwc3VsZU51bWJlcikpOw0KPiA+ID4gPiAgICAgIHJldHVybiBFRklfQlVGRkVSX1RP T19TTUFMTDsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtMTA5Myw3ICsxMDkz LDcgQEAgQ2Fwc3VsZURhdGFDb2FsZXNjZSAoDQo+ID4gPiA+ICAgIC8vIFNhbml0eSBjaGVjaw0K PiA+ID4gPiAgICAvLw0KPiA+ID4gPiAgICBpZiAoQ2Fwc3VsZVNpemUgPj0gKE1BWF9BRERSRVNT IC0gKHNpemVvZg0KPiA+ID4gKEVGSV9DQVBTVUxFX1BFSU1fUFJJVkFURV9EQVRBKSArIChDYXBz dWxlTnVtYmVyIC0gMSkgKg0KPiA+ID4gc2l6ZW9mKFVJTlQ2NCkgKyBzaXplb2YoVUlOVDY0KSkp KSB7DQo+ID4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBDYXBzdWxlU2l6 ZSAtIDB4JXhcbiIsDQo+IENhcHN1bGVTaXplKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJV R19FUlJPUiwgIkVSUk9SOiBDYXBzdWxlU2l6ZSAtIDB4JXhcbiIsDQo+ID4gPiA+ICsgQ2Fwc3Vs ZVNpemUpKTsNCj4gPiA+ID4gICAgICByZXR1cm4gRUZJX0JVRkZFUl9UT09fU01BTEw7DQo+ID4g PiA+ICAgIH0NCj4gPiA+ID4gICAgLy8NCj4gPiA+ID4gQEAgLTExMDUsNyArMTEwNSw3IEBAIENh cHN1bGVEYXRhQ29hbGVzY2UgKA0KPiA+ID4gPiAgICAvLyBTYW5pdHkgY2hlY2sNCj4gPiA+ID4g ICAgLy8NCj4gPiA+ID4gICAgaWYgKE51bURlc2NyaXB0b3JzID49IChNQVhfQUREUkVTUyAvDQo+ ID4gPiBzaXplb2YoRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUikpKSB7DQo+ID4gPiA+IC0g ICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBOdW1EZXNjcmlwdG9ycyAtIDB4JXhcbiIs DQo+ID4gPiBOdW1EZXNjcmlwdG9ycykpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJS T1IsICJFUlJPUjogTnVtRGVzY3JpcHRvcnMgLSAweCV4XG4iLA0KPiA+ID4gPiArIE51bURlc2Ny aXB0b3JzKSk7DQo+ID4gPiA+ICAgICAgcmV0dXJuIEVGSV9CVUZGRVJfVE9PX1NNQUxMOw0KPiA+ ID4gPiAgICB9DQo+ID4gPiA+ICAgIERlc2NyaXB0b3JzU2l6ZSAgPSBOdW1EZXNjcmlwdG9ycyAq IHNpemVvZg0KPiA+ID4gPiAoRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUik7IEBAIC0xMTEz LDcgKzExMTMsNyBAQA0KPiA+ID4gQ2Fwc3VsZURhdGFDb2FsZXNjZSAoDQo+ID4gPiA+ICAgIC8v IFNhbml0eSBjaGVjaw0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAgICBpZiAoRGVzY3JpcHRvcnNT aXplID49IChNQVhfQUREUkVTUyAtIENhcHN1bGVTaXplKSkgew0KPiA+ID4gPiAtICAgIERFQlVH ICgoRUZJX0RfRVJST1IsICJFUlJPUjogRGVzY3JpcHRvcnNTaXplIC0gMHglbHgsIENhcHN1bGVT aXplDQo+IC0NCj4gPiA+IDB4JWx4XG4iLCAoVUlOVDY0KURlc2NyaXB0b3JzU2l6ZSwgKFVJTlQ2 NClDYXBzdWxlU2l6ZSkpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJP UjogRGVzY3JpcHRvcnNTaXplIC0gMHglbHgsDQo+ID4gQ2Fwc3VsZVNpemUNCj4gPiA+ID4gKyAt IDB4JWx4XG4iLCAoVUlOVDY0KURlc2NyaXB0b3JzU2l6ZSwgKFVJTlQ2NClDYXBzdWxlU2l6ZSkp Ow0KPiA+ID4gPiAgICAgIHJldHVybiBFRklfQlVGRkVSX1RPT19TTUFMTDsNCj4gPiA+ID4gICAg fQ0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtMTEyMSwxMCArMTEyMSwxMCBAQCBDYXBzdWxlRGF0YUNv YWxlc2NlICgNCj4gPiA+ID4gICAgLy8gRG9uJ3QgZ28gYmVsb3cgc29tZSBtaW4gYWRkcmVzcy4g SWYgdGhlIGJhc2UgaXMgYmVsb3cgaXQsDQo+ID4gPiA+ICAgIC8vIHRoZW4gbW92ZSBpdCB1cCBh bmQgYWRqdXN0IHRoZSBzaXplIGFjY29yZGluZ2x5Lg0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAt ICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIE1lbW9yeSByYW5nZSBmcm9tIDB4JThYIHRv DQo+ID4gMHglOFhcbiIsDQo+ID4gPiA+IChVSU5UTikgKk1lbW9yeUJhc2UsIChVSU5UTikqTWVt b3J5QmFzZSArICpNZW1vcnlTaXplKSk7DQo+ID4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywg IkNhcHN1bGUgTWVtb3J5IHJhbmdlIGZyb20gMHglOFggdG8NCj4gPiA+IDB4JThYXG4iLA0KPiA+ ID4gPiArIChVSU5UTikgKk1lbW9yeUJhc2UsIChVSU5UTikqTWVtb3J5QmFzZSArICpNZW1vcnlT aXplKSk7DQo+ID4gPg0KPiA+ID4gRG9uJ3QgeW91IGFsc28gd2FudCB0byBjYXN0IHRvIFVJTlQ2 NCBhbmQgdXNlICIlbFgiIGhlcmU/DQo+ID4gPg0KPiA+ID4gPiAgICBpZiAoKFVJTlROKSpNZW1v cnlCYXNlIDwgKFVJTlROKSBNSU5fQ09BTEVTQ0VfQUREUikgew0KPiA+ID4gPiAgICAgIGlmICgo KFVJTlROKSpNZW1vcnlCYXNlICsgKk1lbW9yeVNpemUpIDwgKFVJTlROKQ0KPiA+ID4gTUlOX0NP QUxFU0NFX0FERFIpIHsNCj4gPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJP UjogKk1lbW9yeUJhc2UgKyAqTWVtb3J5U2l6ZSAtDQo+ID4gPiAweCV4XG4iLCAoVUlOVE4pKk1l bW9yeUJhc2UgKyAqTWVtb3J5U2l6ZSkpOw0KPiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19F UlJPUiwgIkVSUk9SOiAqTWVtb3J5QmFzZSArICpNZW1vcnlTaXplIC0NCj4gPiA+ID4gKyAweCV4 XG4iLCAoVUlOVE4pKk1lbW9yeUJhc2UgKyAqTWVtb3J5U2l6ZSkpOw0KPiA+ID4gPiAgICAgICAg cmV0dXJuIEVGSV9CVUZGRVJfVE9PX1NNQUxMOw0KPiA+ID4gPiAgICAgIH0gZWxzZSB7DQo+ID4g PiA+ICAgICAgICAqTWVtb3J5U2l6ZSA9ICpNZW1vcnlTaXplIC0gKChVSU5UTikgTUlOX0NPQUxF U0NFX0FERFIgLQ0KPiA+ID4gPiAoVUlOVE4pICpNZW1vcnlCYXNlKTsgQEAgLTExMzMsMTMgKzEx MzMsMTMgQEANCj4gPiBDYXBzdWxlRGF0YUNvYWxlc2NlDQo+ID4gPiAoDQo+ID4gPiA+ICAgIH0N Cj4gPiA+ID4NCj4gPiA+ID4gICAgaWYgKCpNZW1vcnlTaXplIDw9IChDYXBzdWxlU2l6ZSArIERl c2NyaXB0b3JzU2l6ZSkpIHsNCj4gPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJS T1I6IENhcHN1bGVTaXplICsgRGVzY3JpcHRvcnNTaXplIC0NCj4gPiA+IDB4JXhcbiIsIENhcHN1 bGVTaXplICsgRGVzY3JpcHRvcnNTaXplKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19F UlJPUiwgIkVSUk9SOiBDYXBzdWxlU2l6ZSArIERlc2NyaXB0b3JzU2l6ZSAtDQo+ID4gPiA+ICsg MHgleFxuIiwgQ2Fwc3VsZVNpemUgKyBEZXNjcmlwdG9yc1NpemUpKTsNCj4gPiA+ID4gICAgICBy ZXR1cm4gRUZJX0JVRkZFUl9UT09fU01BTEw7DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gICAgRnJlZU1lbUJhc2UgPSAqTWVtb3J5QmFzZTsNCj4gPiA+ID4gICAgRnJlZU1lbVNpemUg PSAqTWVtb3J5U2l6ZTsNCj4gPiA+ID4gLSAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSBG cmVlIE1lbW9yeSBmcm9tIDB4JThYIHRvDQo+ID4gPiA+IDB4JThYXG4iLA0KPiA+ID4gPiAoVUlO VE4pIEZyZWVNZW1CYXNlLCAoVUlOVE4pIEZyZWVNZW1CYXNlICsgRnJlZU1lbVNpemUpKTsNCj4g PiA+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZSBGcmVlIE1lbW9yeSBmcm9tIDB4 JThYIHRvDQo+ID4gMHglOFhcbiIsDQo+ID4gPiA+ICsgKFVJTlROKSBGcmVlTWVtQmFzZSwgKFVJ TlROKSBGcmVlTWVtQmFzZSArIEZyZWVNZW1TaXplKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIC8v DQo+ID4gPiA+ICAgIC8vIFJlbG9jYXRlIGFsbCB0aGUgYmxvY2sgZGVzY3JpcHRvcnMgdG8gbG93 IG1lbW9yeSB0byBtYWtlDQo+ID4gPiA+IGZ1cnRoZXIgQEAgLTEyMDUsNyArMTIwNSw3IEBAIENh cHN1bGVEYXRhQ29hbGVzY2UgKA0KPiA+ID4gPiAgICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ ICAgICAgICAgIENvcHlNZW0gKChWT0lEICopIFJlbG9jUHRyLCAoVk9JRCAqKSAoVUlOVE4pDQo+ ID4gPiA+VGVtcEJsb2NrRGVzYy0gVW5pb24uRGF0YUJsb2NrLCAoVUlOVE4pIFRlbXBCbG9ja0Rl c2MtPkxlbmd0aCk7DQo+ID4gPiA+IC0gICAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1 bGUgcmVsb2MgZGF0YSBibG9jayBmcm9tIDB4JThYIHRvDQo+ID4gMHglOFgNCj4gPiA+IHdpdGgg c2l6ZSAweCU4WFxuIiwNCj4gPiA+ID4gKyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fw c3VsZSByZWxvYyBkYXRhIGJsb2NrIGZyb20gMHglOFgNCj4gPiA+ID4gKyB0byAweCU4WCB3aXRo IHNpemUgMHglOFhcbiIsDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgKFVJTlROKSBUZW1wQmxv Y2tEZXNjLT5Vbmlvbi5EYXRhQmxvY2ssIChVSU5UTikNCj4gPiA+ID4gUmVsb2NQdHIsIChVSU5U TikgVGVtcEJsb2NrRGVzYy0+TGVuZ3RoKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgICAgIFRl bXBCbG9ja0Rlc2MtPlVuaW9uLkRhdGFCbG9jayA9IChFRklfUEhZU0lDQUxfQUREUkVTUykNCj4g PiA+ID4gKFVJTlROKSBSZWxvY1B0cjsgQEAgLTEyNTYsNyArMTI1Niw3IEBAIENhcHN1bGVEYXRh Q29hbGVzY2UgKA0KPiA+ID4gPiAgICAgICAgQVNTRVJUIChDdXJyZW50QmxvY2tEZXNjLT5MZW5n dGggPD0gU2l6ZUxlZnQpOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgQ29weU1lbSAoKFZPSUQg KikgRGVzdFB0ciwgKFZPSUQgKikgKFVJTlROKQ0KPiA+ID4gPihDdXJyZW50QmxvY2tEZXNjLSBV bmlvbi5EYXRhQmxvY2spLCAoVUlOVE4pQ3VycmVudEJsb2NrRGVzYy0NCj4gPkxlbmd0aCk7DQo+ ID4gPiA+IC0gICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIGNvYWxlc2NlIGJsb2Nr IG5vLjB4JWxYIGZyb20gMHglbFgNCj4gPiB0bw0KPiA+ID4gMHglbFggd2l0aCBzaXplIDB4JWxY XG4iLChVSU5UNjQpQ2Fwc3VsZVRpbWVzLA0KPiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19J TkZPLCAiQ2Fwc3VsZSBjb2FsZXNjZSBibG9jayBuby4weCVsWCBmcm9tDQo+ID4gPiA+ICsgMHgl bFggdG8gMHglbFggd2l0aCBzaXplIDB4JWxYXG4iLChVSU5UNjQpQ2Fwc3VsZVRpbWVzLA0KPiA+ ID4gPiAgICAgICAgICAgICAgIEN1cnJlbnRCbG9ja0Rlc2MtPlVuaW9uLkRhdGFCbG9jaywNCj4g PiA+ID4gKFVJTlQ2NCkoVUlOVE4pRGVzdFB0ciwNCj4gPiA+IEN1cnJlbnRCbG9ja0Rlc2MtPkxl bmd0aCkpOw0KPiA+ID4gPiAgICAgICAgRGVzdFB0ciArPSBDdXJyZW50QmxvY2tEZXNjLT5MZW5n dGg7DQo+ID4gPiA+ICAgICAgICBTaXplTGVmdCAtPSBDdXJyZW50QmxvY2tEZXNjLT5MZW5ndGg7 IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVQZWkv VWVmaUNhcHN1bGUuYw0KPiA+ID4gPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVBl aS9VZWZpQ2Fwc3VsZS5jDQo+ID4gPiA+IGluZGV4IDExMzEwOTRjNGYuLmY1ZWMxYzIwZWMgMTAw NjQ0DQo+ID4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVBlaS9VZWZp Q2Fwc3VsZS5jDQo+ID4gPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVBl aS9VZWZpQ2Fwc3VsZS5jDQo+ID4gPiA+IEBAIC00MjcsNyArNDI3LDcgQEAgTW9kZVN3aXRjaCAo DQo+ID4gPiA+ICAgICAgaWYgKFJlc2VydmVkUmFuZ2VFbmQgPCBNZW1vcnlFbmQ2NCkgew0KPiA+ ID4gPiAgICAgICAgTWVtb3J5QmFzZTY0ID0gUmVzZXJ2ZWRSYW5nZUVuZDsNCj4gPiA+ID4gICAg ICB9IGVsc2Ugew0KPiA+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIk1lbW9yeSBp cyBub3QgZW5vdWdoIHRvIHByb2Nlc3MNCj4gPiA+IGNhcHN1bGUhXG4iKSk7DQo+ID4gPiA+ICsg ICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiTWVtb3J5IGlzIG5vdCBlbm91Z2ggdG8gcHJvY2Vz cw0KPiA+ID4gPiArIGNhcHN1bGUhXG4iKSk7DQo+ID4gPiA+ICAgICAgICByZXR1cm4gRUZJX09V VF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiAgICB9IGVsc2UgaWYgKFJl c2VydmVkUmFuZ2VCYXNlIDwgTWVtb3J5RW5kNjQpIHsgQEAgLTUyNSw3ICs1MjUsNw0KPiA+ID4g PiBAQCBGaW5kQ2Fwc3VsZUNvYWxlc2NlSW1hZ2UgKA0KPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJkF1dGhlbnRpY2F0aW9uU3RhdGUNCj4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ID4gPiA+ICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gPiA+IC0gICAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJVbmFibGUgdG8gZmluZCBQ RTMyIHNlY3Rpb24gaW4gQ2Fwc3VsZVg2NA0KPiA+ID4gaW1hZ2UgZmZzICVyIVxuIiwgU3RhdHVz KSk7DQo+ID4gPiA+ICsgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJVbmFibGUgdG8gZmlu ZCBQRTMyIHNlY3Rpb24gaW4NCj4gPiA+ID4gKyBDYXBzdWxlWDY0IGltYWdlIGZmcyAlciFcbiIs IFN0YXR1cykpOw0KPiA+ID4gPiAgICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiAgICAg ICAgfQ0KPiA+ID4gPiAgICAgICAgKkNvYWxlc2NlSW1hZ2VNYWNoaW5lVHlwZSA9IFBlQ29mZkxv YWRlckdldE1hY2hpbmVUeXBlDQo+ID4gKChWT0lEDQo+ID4gPiA+ICopIChVSU5UTikgQ29hbGVz Y2VJbWFnZUFkZHJlc3MpOyBAQCAtNTc0LDcgKzU3NCw3IEBADQo+ID4gPiBHZXRMb25nTW9kZUNv bnRleHQgKA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvbmdN b2RlQnVmZmVyDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gPiA+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiAtICAgIERFQlVH ICgoIEVGSV9EX0VSUk9SLCAiRXJyb3IgR2V0IExvbmdNb2RlQnVmZmVyIHZhcmlhYmxlICVyIVxu IiwNCj4gPiA+IFN0YXR1cykpOw0KPiA+ID4gPiArICAgIERFQlVHICgoIERFQlVHX0VSUk9SLCAi RXJyb3IgR2V0IExvbmdNb2RlQnVmZmVyIHZhcmlhYmxlDQo+ID4gPiA+ICsgJXIhXG4iLCBTdGF0 dXMpKTsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPiAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiAg fQ0KPiA+ID4gPiBAQCAtNzM0LDcgKzczNCw3IEBAIEJ1aWxkTWVtb3J5UmVzb3VyY2VEZXNjcmlw dG9yICgNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgICBpZiAoSW5kZXggPT0gMCkg ew0KPiA+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfSU5GTyB8IEVGSV9EX1dBUk4sICJObyBtZW1v cnkgcmVzb3VyY2UNCj4gPiBkZXNjcmlwdG9yDQo+ID4gPiByZXBvcnRlZCBpbiBIT0IgbGlzdCBi ZWZvcmUgY2Fwc3VsZSBDb2FsZXNjZVxuIikpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdf SU5GTyB8IERFQlVHX1dBUk4sICJObyBtZW1vcnkgcmVzb3VyY2UNCj4gPiA+IGRlc2NyaXB0b3IN Cj4gPiA+ID4gKyByZXBvcnRlZCBpbiBIT0IgbGlzdCBiZWZvcmUgY2Fwc3VsZSBDb2FsZXNjZVxu IikpOw0KPiA+ID4gPiAgI2lmIGRlZmluZWQgKE1ERV9DUFVfSUEzMikgfHwgZGVmaW5lZCAoTURF X0NQVV9YNjQpDQo+ID4gPiA+ICAgICAgLy8NCj4gPiA+ID4gICAgICAvLyBBbGxvY2F0ZSBtZW1v cnkgdG8gaG9sZCBtZW1vcnkgcmVzb3VyY2UgZGVzY3JpcHRvciwgQEANCj4gPiA+ID4gLTc0Niw3 DQo+ID4gPiA+ICs3NDYsNyBAQCBCdWlsZE1lbW9yeVJlc291cmNlRGVzY3JpcHRvciAoDQo+ID4g PiA+DQo+ID4gPiA+ICAgICAgTWVtb3J5UmVzb3VyY2VbMF0uUGh5c2ljYWxTdGFydCA9IDA7DQo+ ID4gPiA+ICAgICAgTWVtb3J5UmVzb3VyY2VbMF0uUmVzb3VyY2VMZW5ndGggPSBMU2hpZnRVNjQg KDEsDQo+ID4gPiBHZXRQaHlzaWNhbEFkZHJlc3NCaXRzICgpKTsNCj4gPiA+ID4gLSAgICBERUJV RyAoKEVGSV9EX0lORk8sICJNZW1vcnlSZXNvdXJjZVsweDBdIC0gU3RhcnQoMHglMGx4KQ0KPiA+ ID4gTGVuZ3RoKDB4JTBseClcbiIsDQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAi TWVtb3J5UmVzb3VyY2VbMHgwXSAtIFN0YXJ0KDB4JTBseCkNCj4gPiA+ID4gKyBMZW5ndGgoMHgl MGx4KVxuIiwNCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVJlc291cmNl WzB4MF0uUGh5c2ljYWxTdGFydCwNCj4gPiA+IE1lbW9yeVJlc291cmNlWzB4MF0uUmVzb3VyY2VM ZW5ndGgpKTsNCj4gPiA+ID4gICAgICByZXR1cm4gTWVtb3J5UmVzb3VyY2U7DQo+ID4gPiA+ICAj ZWxzZQ0KPiA+ID4gPiBAQCAtNzcwLDcgKzc3MCw3IEBAIEJ1aWxkTWVtb3J5UmVzb3VyY2VEZXNj cmlwdG9yICgNCj4gPiA+ID4gICAgd2hpbGUgKEhvYi5SYXcgIT0gTlVMTCkgew0KPiA+ID4gPiAg ICAgIFJlc291cmNlRGVzY3JpcHRvciA9IChFRklfSE9CX1JFU09VUkNFX0RFU0NSSVBUT1IgKikN Cj4gSG9iLlJhdzsNCj4gPiA+ID4gICAgICBpZiAoUmVzb3VyY2VEZXNjcmlwdG9yLT5SZXNvdXJj ZVR5cGUgPT0NCj4gPiA+IEVGSV9SRVNPVVJDRV9TWVNURU1fTUVNT1JZKSB7DQo+ID4gPiA+IC0g ICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJNZW1vcnlSZXNvdXJjZVsweCV4XSAtIFN0YXJ0KDB4 JTBseCkNCj4gPiA+IExlbmd0aCgweCUwbHgpXG4iLA0KPiA+ID4gPiArICAgICAgREVCVUcgKChE RUJVR19JTkZPLCAiTWVtb3J5UmVzb3VyY2VbMHgleF0gLSBTdGFydCgweCUwbHgpDQo+ID4gPiA+ ICsgTGVuZ3RoKDB4JTBseClcbiIsDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4LA0KPiA+ID4gPiBSZXNvdXJjZURlc2NyaXB0b3ItPlBoeXNpY2FsU3RhcnQsDQo+ID4g PiBSZXNvdXJjZURlc2NyaXB0b3ItPlJlc291cmNlTGVuZ3RoKSk7DQo+ID4gPiA+ICAgICAgICBN ZW1vcnlSZXNvdXJjZVtJbmRleF0uUGh5c2ljYWxTdGFydCA9IFJlc291cmNlRGVzY3JpcHRvci0N Cj4gPiA+ID5QaHlzaWNhbFN0YXJ0Ow0KPiA+ID4gPiAgICAgICAgTWVtb3J5UmVzb3VyY2VbSW5k ZXhdLlJlc291cmNlTGVuZ3RoID0NCj4gPiA+ID4gUmVzb3VyY2VEZXNjcmlwdG9yLT5SZXNvdXJj ZUxlbmd0aDsNCj4gPiA+ID4gQEAgLTk3Myw3ICs5NzMsNyBAQCBDYXBzdWxlQ29hbGVzY2UgKA0K PiA+ID4gPiAgICAvLw0KPiA+ID4gPiAgICBTdGF0dXMgPSBQZWlTZXJ2aWNlc0dldEJvb3RNb2Rl ICgmQm9vdE1vZGUpOw0KPiA+ID4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChCb290 TW9kZSAhPSBCT09UX09OX0ZMQVNIX1VQREFURSkpDQo+IHsNCj4gPiA+ID4gLSAgICBERUJVRyAo KEVGSV9EX0VSUk9SLCAiQm9vdCBtb2RlIGlzIG5vdCBjb3JyZWN0IGZvciBjYXBzdWxlDQo+IHVw ZGF0ZQ0KPiA+ID4gcGF0aC5cbiIpKTsNCj4gPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiQm9vdCBtb2RlIGlzIG5vdCBjb3JyZWN0IGZvciBjYXBzdWxlDQo+ID4gdXBkYXRlDQo+ID4g PiA+ICsgcGF0aC5cbiIpKTsNCj4gPiA+ID4gICAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0K PiA+ID4gPiAgICAgIGdvdG8gRG9uZTsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPiBAQCAtMTAxNiwx NCArMTAxNiwxNCBAQCBDYXBzdWxlQ29hbGVzY2UgKA0KPiA+ID4gPiAgICAgICAgLy8NCj4gPiA+ ID4gICAgICAgIC8vIFRoZXJlIGlzIG5vIGNhcHN1bGUgdmFyaWFibGVzLCBxdWl0DQo+ID4gPiA+ ICAgICAgICAvLw0KPiA+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9JTkZPLCJDYXBzdWxlIHZh cmlhYmxlIEluZGV4ID0gJWRcbiIsIEluZGV4KSk7DQo+ID4gPiA+ICsgICAgICBERUJVRyAoKERF QlVHX0lORk8sIkNhcHN1bGUgdmFyaWFibGUgSW5kZXggPSAlZFxuIiwNCj4gPiA+ID4gKyBJbmRl eCkpOw0KPiA+ID4gPiAgICAgICAgYnJlYWs7DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiAgICAg IFZhcmlhYmxlQ291bnQrKzsNCj4gPiA+ID4gICAgICBJbmRleCsrOw0KPiA+ID4gPiAgICB9DQo+ ID4gPiA+DQo+ID4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywiQ2Fwc3VsZSB2YXJpYWJsZSBj b3VudCA9ICVkXG4iLA0KPiA+ID4gPiBWYXJpYWJsZUNvdW50KSk7DQo+ID4gPiA+ICsgIERFQlVH ICgoREVCVUdfSU5GTywiQ2Fwc3VsZSB2YXJpYWJsZSBjb3VudCA9ICVkXG4iLA0KPiA+ID4gPiAr IFZhcmlhYmxlQ291bnQpKTsNCj4gPiA+ID4NCj4gPiA+ID4gICAgLy8NCj4gPiA+ID4gICAgLy8g VGhlIGxhc3QgZW50cnkgaXMgdGhlIGVuZCBmbGFnLg0KPiA+ID4gPiBAQCAtMTAzNCw3ICsxMDM0 LDcgQEAgQ2Fwc3VsZUNvYWxlc2NlICgNCj4gPiA+ID4gICAgICAgICAgICAgICApOw0KPiA+ID4g Pg0KPiA+ID4gPiAgICBpZiAoU3RhdHVzICE9IEVGSV9TVUNDRVNTKSB7DQo+ID4gPiA+IC0gICAg REVCVUcgKChFRklfRF9FUlJPUiwgIkFsbG9jYXRlUGFnZXMgRmFpbGVkISwgU3RhdHVzID0gJXhc biIsDQo+ID4gU3RhdHVzKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkFs bG9jYXRlUGFnZXMgRmFpbGVkISwgU3RhdHVzID0gJXhcbiIsDQo+ID4gPiA+ICsgU3RhdHVzKSk7 DQo+ID4gPiA+ICAgICAgZ290byBEb25lOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ IEBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBDYXBzdWxlQ29hbGVzY2UgKA0KPiA+ID4gPiAgICAvLw0K PiA+ID4gPiAgICBTdGF0dXMgPSBHZXRDYXBzdWxlRGVzY3JpcHRvcnMgKFZhcmlhYmxlQXJyYXlB ZGRyZXNzKTsNCj4gPiA+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiAt ICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJGYWlsIHRvIGZpbmQgY2Fwc3VsZSB2YXJpYWJsZXMu XG4iKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWwgdG8gZmluZCBj YXBzdWxlIHZhcmlhYmxlcy5cbiIpKTsNCj4gPiA+ID4gICAgICBnb3RvIERvbmU7DQo+ID4gPiA+ ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTEwNjQsMTQgKzEwNjQsMTQgQEAgQ2Fwc3VsZUNv YWxlc2NlICgNCj4gPiA+ID4gICAgICBDb2FsZXNjZUltYWdlRW50cnlQb2ludCA9IDA7DQo+ID4g PiA+ICAgICAgU3RhdHVzID0gR2V0TG9uZ01vZGVDb250ZXh0ICgmTG9uZ01vZGVCdWZmZXIpOw0K PiA+ID4gPiAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gLSAgICAgIERF QlVHICgoRUZJX0RfRVJST1IsICJGYWlsIHRvIGZpbmQgdGhlIHZhcmlhYmxlIGZvciBsb25nIG1v ZGUNCj4gPiA+IGNvbnRleHQhXG4iKSk7DQo+ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiRmFpbCB0byBmaW5kIHRoZSB2YXJpYWJsZSBmb3IgbG9uZw0KPiA+ID4gPiArIG1vZGUg Y29udGV4dCFcbiIpKTsNCj4gPiA+ID4gICAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ ID4gPiA+ICAgICAgICBnb3RvIERvbmU7DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4g PiAgICAgIFN0YXR1cyA9IEZpbmRDYXBzdWxlQ29hbGVzY2VJbWFnZSAoJkNvYWxlc2NlSW1hZ2VF bnRyeVBvaW50LA0KPiA+ID4gJkNvYWxlc2NlSW1hZ2VNYWNoaW5lVHlwZSk7DQo+ID4gPiA+ICAg ICAgaWYgKChFRklfRVJST1IgKFN0YXR1cykpIHx8IChDb2FsZXNjZUltYWdlTWFjaGluZVR5cGUg IT0NCj4gPiA+IEVGSV9JTUFHRV9NQUNISU5FX1g2NCkpIHsNCj4gPiA+ID4gLSAgICAgIERFQlVH ICgoRUZJX0RfRVJST1IsICJGYWlsIHRvIGZpbmQgQ2Fwc3VsZVg2NCBtb2R1bGUgaW4gRlYhXG4i KSk7DQo+ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbCB0byBmaW5kIENh cHN1bGVYNjQgbW9kdWxlIGluDQo+ID4gPiA+ICsgRlYhXG4iKSk7DQo+ID4gPiA+ICAgICAgICBT dGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gPiAgICAgICAgZ290byBEb25lOw0KPiA+ID4g PiAgICAgIH0NCj4gPiA+ID4gQEAgLTEwOTEsMTQgKzEwOTEsMTQgQEAgQ2Fwc3VsZUNvYWxlc2Nl ICgNCj4gPiA+ID4gICAgU3RhdHVzID0gQ2Fwc3VsZURhdGFDb2FsZXNjZSAoUGVpU2VydmljZXMs DQo+ID4gPiA+IChFRklfUEhZU0lDQUxfQUREUkVTUyAqKShVSU5UTilWYXJpYWJsZUFycmF5QWRk cmVzcywNCj4gPiA+ID4gTWVtb3J5UmVzb3VyY2UsIE1lbW9yeUJhc2UsIE1lbW9yeVNpemUpOyAg I2VuZGlmDQo+ID4gPiA+DQo+ID4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGUg Q29hbGVzY2UgU3RhdHVzID0gJXIhXG4iLA0KPiA+ID4gPiBTdGF0dXMpKTsNCj4gPiA+ID4gKyAg REVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZSBDb2FsZXNjZSBTdGF0dXMgPSAlciFcbiIsDQo+ ID4gPiA+ICsgU3RhdHVzKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGlmIChTdGF0dXMgPT0gRUZJ X0JVRkZFUl9UT09fU01BTEwpIHsNCj4gPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAi VGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgdG8gcHJvY2Vzcw0KPiA+ID4gY2Fwc3VsZSFcbiIp KTsNCj4gPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVGhlcmUgaXMgbm90IGVub3Vn aCBtZW1vcnkgdG8gcHJvY2Vzcw0KPiA+ID4gPiArIGNhcHN1bGUhXG4iKSk7DQo+ID4gPiA+ICAg IH0NCj4gPiA+ID4NCj4gPiA+ID4gICAgaWYgKFN0YXR1cyA9PSBFRklfTk9UX0ZPVU5EKSB7DQo+ ID4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkZhaWwgdG8gcGFyc2UgY2Fwc3VsZSBk ZXNjcmlwdG9yIGluDQo+ID4gPiBtZW1vcnkhXG4iKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkZhaWwgdG8gcGFyc2UgY2Fwc3VsZSBkZXNjcmlwdG9yIGluDQo+ID4gPiA+ ICsgbWVtb3J5IVxuIikpOw0KPiA+ID4gPiAgICAgIFJFUE9SVF9TVEFUVVNfQ09ERSAoDQo+ID4g PiA+ICAgICAgICBFRklfRVJST1JfQ09ERSB8IEVGSV9FUlJPUl9NQUpPUiwNCj4gPiA+ID4gICAg ICAgIChFRklfU09GVFdBUkVfUEVJX01PRFVMRSB8DQo+ID4gPiA+IEVGSV9TV19QRUlfRUNfSU5W QUxJRF9DQVBTVUxFX0RFU0NSSVBUT1IpDQo+ID4gPiA+IEBAIC0xMTYzLDcgKzExNjMsNyBAQCBD YXBzdWxlVGVzdFBhdHRlcm4gKA0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAgICBpZiAoKlRlc3RQ dHIgPT0gMHg1NDUzNDU1NCkgew0KPiA+ID4gPiAgICAgIFJldFZhbHVlID0gVFJVRTsNCj4gPiA+ ID4gLSAgICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBtb2RlIGFj dGl2YXRlZC4uLlxuIikpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIkNhcHN1 bGUgdGVzdCBwYXR0ZXJuIG1vZGUNCj4gPiA+ID4gKyBhY3RpdmF0ZWQuLi5cbiIpKTsNCj4gPiA+ ID4gICAgICBUZXN0U2l6ZSA9IFRlc3RQdHJbMV0gLyBzaXplb2YgKFVJTlQzMik7DQo+ID4gPiA+ ICAgICAgLy8NCj4gPiA+ID4gICAgICAvLyBTa2lwIG92ZXIgdGhlIHNpZ25hdHVyZSBhbmQgdGhl IHNpemUgZmllbGRzIGluIHRoZSBwYXR0ZXJuDQo+ID4gPiA+IGRhdGEgaGVhZGVyIEBAIC0xMTcy LDcgKzExNzIsNyBAQCBDYXBzdWxlVGVzdFBhdHRlcm4gKA0KPiA+ID4gPiAgICAgIFRlc3RDb3Vu dGVyID0gMDsNCj4gPiA+ID4gICAgICB3aGlsZSAoVGVzdFNpemUgPiAwKSB7DQo+ID4gPiA+ICAg ICAgICBpZiAoKlRlc3RQdHIgIT0gVGVzdENvdW50ZXIpIHsNCj4gPiA+ID4gLSAgICAgICAgREVC VUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSB0ZXN0IHBhdHRlcm4gbW9kZSBGQUlMRUQ6DQo+ID4g PiBCYXNlQWRkci9GYWlsQWRkciAweCVYIDB4JVhcbiIsDQo+ID4gPiAoVUlOVDMyKShVSU5UTiko RUZJX0NBUFNVTEVfUEVJTV9QUklWQVRFX0RBVEEgKilDYXBzdWxlQmFzZSwNCj4gPiA+IChVSU5U MzIpKFVJTlROKVRlc3RQdHIpKTsNCj4gPiA+ID4gKyAgICAgICAgREVCVUcgKChERUJVR19JTkZP LCAiQ2Fwc3VsZSB0ZXN0IHBhdHRlcm4gbW9kZSBGQUlMRUQ6DQo+ID4gPiA+ICsgQmFzZUFkZHIv RmFpbEFkZHIgMHglWCAweCVYXG4iLA0KPiA+ID4gPiArIChVSU5UMzIpKFVJTlROKShFRklfQ0FQ U1VMRV9QRUlNX1BSSVZBVEVfREFUQQ0KPiAqKUNhcHN1bGVCYXNlLA0KPiA+ID4gPiArIChVSU5U MzIpKFVJTlROKVRlc3RQdHIpKTsNCj4gPiA+ID4gICAgICAgICAgcmV0dXJuIFRSVUU7DQo+ID4g PiA+ICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0xMTgxLDcgKzExODEsNyBAQCBDYXBz dWxlVGVzdFBhdHRlcm4gKA0KPiA+ID4gPiAgICAgICAgVGVzdFNpemUtLTsNCj4gPiA+ID4gICAg ICB9DQo+ID4gPiA+DQo+ID4gPiA+IC0gICAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSB0 ZXN0IHBhdHRlcm4gbW9kZSBTVUNDRVNTXG4iKSk7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJV R19JTkZPLCAiQ2Fwc3VsZSB0ZXN0IHBhdHRlcm4gbW9kZSBTVUNDRVNTXG4iKSk7DQo+ID4gPiA+ ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICAgcmV0dXJuIFJldFZhbHVlOw0KPiA+ID4gPiBAQCAt MTIyNiwxMSArMTIyNiwxMSBAQCBDcmVhdGVTdGF0ZSAoDQo+ID4gPiA+ICAgICAgcmV0dXJuIEVG SV9WT0xVTUVfQ09SUlVQVEVEOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+ICAgIGlmIChQcml2YXRl RGF0YS0+Q2Fwc3VsZUFsbEltYWdlU2l6ZSA+PSBNQVhfQUREUkVTUykgew0KPiA+ID4gPiAtICAg IERFQlVHICgoRUZJX0RfRVJST1IsICJDYXBzdWxlQWxsSW1hZ2VTaXplIHRvbyBiaWcgLSAweCVs eFxuIiwNCj4gPiA+IFByaXZhdGVEYXRhLT5DYXBzdWxlQWxsSW1hZ2VTaXplKSk7DQo+ID4gPiA+ ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkNhcHN1bGVBbGxJbWFnZVNpemUgdG9vIGJpZyAt IDB4JWx4XG4iLA0KPiA+ID4gPiArIFByaXZhdGVEYXRhLT5DYXBzdWxlQWxsSW1hZ2VTaXplKSk7 DQo+ID4gPiA+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiAgICB9 DQo+ID4gPiA+ICAgIGlmIChQcml2YXRlRGF0YS0+Q2Fwc3VsZU51bWJlciA+PSBNQVhfQUREUkVT Uykgew0KPiA+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJDYXBzdWxlTnVtYmVyIHRv byBiaWcgLSAweCVseFxuIiwNCj4gPiA+IFByaXZhdGVEYXRhLT5DYXBzdWxlTnVtYmVyKSk7DQo+ ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkNhcHN1bGVOdW1iZXIgdG9vIGJpZyAt IDB4JWx4XG4iLA0KPiA+ID4gPiArIFByaXZhdGVEYXRhLT5DYXBzdWxlTnVtYmVyKSk7DQo+ID4g PiA+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiAgICB9DQo+ID4g PiA+ICAgIC8vDQo+ID4gPiA+IEBAIC0xMjQ4LDEzICsxMjQ4LDEzIEBAIENyZWF0ZVN0YXRlICgN Cj4gPiA+ID4gICAgICAgICAgICAgICApOw0KPiA+ID4gPg0KPiA+ID4gPiAgICBpZiAoU3RhdHVz ICE9IEVGSV9TVUNDRVNTKSB7DQo+ID4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkFs bG9jYXRlUGFnZXMgRmFpbGVkIVxuIikpOw0KPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJS T1IsICJBbGxvY2F0ZVBhZ2VzIEZhaWxlZCFcbiIpKTsNCj4gPiA+ID4gICAgICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+ICAgIC8vDQo+ID4gPiA+ICAgIC8vIENvcHkgdG8g b3VyIG5ldyBidWZmZXIgZm9yIERYRQ0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAtICBERUJVRyAo KEVGSV9EX0lORk8sICJDYXBzdWxlIGNvcHkgZnJvbSAweCU4WCB0byAweCU4WCB3aXRoIHNpemUN Cj4gPiA+ID4gMHglOFhcbiIsIChVSU5UTikoKFVJTlQ4ICopUHJpdmF0ZURhdGEgKw0KPiA+ID4g PiBzaXplb2YoRUZJX0NBUFNVTEVfUEVJTV9QUklWQVRFX0RBVEEpICsgKENhcHN1bGVOdW1iZXIg LSAxKSAqDQo+ID4gPiA+IHNpemVvZihVSU5UNjQpKSwgKFVJTlROKSBOZXdCdWZmZXIsIFNpemUp KTsNCj4gPiA+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZSBjb3B5IGZyb20gMHgl OFggdG8gMHglOFggd2l0aA0KPiBzaXplDQo+ID4gPiA+ICsgMHglOFhcbiIsIChVSU5UTikoKFVJ TlQ4ICopUHJpdmF0ZURhdGEgKw0KPiA+ID4gPiArIHNpemVvZihFRklfQ0FQU1VMRV9QRUlNX1BS SVZBVEVfREFUQSkgKyAoQ2Fwc3VsZU51bWJlciAtIDEpICoNCj4gPiA+ID4gKyBzaXplb2YoVUlO VDY0KSksIChVSU5UTikgTmV3QnVmZmVyLCBTaXplKSk7DQo+ID4gPiA+ICAgIENvcHlNZW0gKChW T0lEICopIChVSU5UTikgTmV3QnVmZmVyLCAoVk9JRCAqKSAoVUlOVE4pICgoVUlOVDgNCj4gPiA+ ICopUHJpdmF0ZURhdGEgKyBzaXplb2YoRUZJX0NBUFNVTEVfUEVJTV9QUklWQVRFX0RBVEEpICsN Cj4gPiA+IChDYXBzdWxlTnVtYmVyIC0gMSkgKiBzaXplb2YoVUlOVDY0KSksIFNpemUpOw0KPiA+ ID4gPiAgICAvLw0KPiA+ID4gPiAgICAvLyBDaGVjayBmb3IgdGVzdCBkYXRhIHBhdHRlcm4uIElm IGl0IGlzIHRoZSB0ZXN0IHBhdHRlcm4sIHRoZW4NCj4gPiA+ID4gd2UnbGwgZGlmZiAtLWdpdA0K PiA+ID4gPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVBlaS9YNjQvWDY0RW50cnku Yw0KPiA+ID4gPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVBlaS9YNjQvWDY0RW50 cnkuYw0KPiA+ID4gPiBpbmRleCA0MGI3MDk1MTk0Li4yYzMwOTk5MGZiIDEwMDY0NA0KPiA+ID4g PiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVQZWkvWDY0L1g2NEVudHJ5LmMN Cj4gPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUGVpL1g2NC9YNjRF bnRyeS5jDQo+ID4gPiA+IEBAIC0xNzQsNyArMTc0LDcgQEAgUGFnZUZhdWx0SGFuZGxlciAoDQo+ ID4gPiA+ICAgIEFkZHJlc3NFbmNNYXNrID0gUGFnZUZhdWx0Q29udGV4dC0+QWRkcmVzc0VuY01h c2s7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIFBGQWRkcmVzcyA9IEFzbVJlYWRDcjIgKCk7DQo+ID4g PiA+IC0gIERFQlVHICgoRUZJX0RfRVJST1IsICJDYXBzdWxlWDY0IC0gUGFnZUZhdWx0SGFuZGxl cjogQ3IyIC0NCj4gPiA+ID4gJWx4XG4iLCBQRkFkZHJlc3MpKTsNCj4gPiA+ID4gKyAgREVCVUcg KChERUJVR19FUlJPUiwgIkNhcHN1bGVYNjQgLSBQYWdlRmF1bHRIYW5kbGVyOiBDcjIgLQ0KPiA+ ID4gPiArICVseFxuIiwgUEZBZGRyZXNzKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGlmIChQRkFk ZHJlc3MgPj0gUGh5TWFzayArIFNJWkVfNEtCKSB7DQo+ID4gPiA+ICAgICAgcmV0dXJuIFBhZ2VG YXVsdENvbnRleHQtPk9yaWdpbmFsSGFuZGxlcjsNCj4gPiA+ID4NCg==