From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.9533.1582103089620132846 for ; Wed, 19 Feb 2020 01:04:49 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: ray.ni@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Feb 2020 01:04:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,459,1574150400"; d="scan'208";a="382744535" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga004.jf.intel.com with ESMTP; 19 Feb 2020 01:04:48 -0800 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 19 Feb 2020 01:04:48 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.5]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.138]) with mapi id 14.03.0439.000; Wed, 19 Feb 2020 17:04:44 +0800 From: "Ni, Ray" To: "Fu, Siyuan" , "devel@edk2.groups.io" CC: "Kinney, Michael D" , "Chaganty, Rangasai V" Subject: Re: [PATCH v5] IntelSiliconPkg: FIT based shadow microcode PPI support. Thread-Topic: [PATCH v5] IntelSiliconPkg: FIT based shadow microcode PPI support. Thread-Index: AQHV5TO5wKdfnQrH0kyeS1PkhFkvO6ghydPggAAz0uCAAD8AEA== Date: Wed, 19 Feb 2020 09:04:43 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C444EC1@SHSMSX104.ccr.corp.intel.com> References: <2f87cb365f721e89057a5f2eb598bb1221c73ddd.1581903801.git.siyuan.fu@intel.com> <734D49CCEBEEF84792F5B80ED585239D5C44414F@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: ray.ni@intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 U2l5dWFuLA0KWW91ciBwYXN0ZWQgY29kZSBvbmx5IGNvdW50cyB0aGUgVHlwZSAxIGVudHJ5IG5v dCBUeXBlIDAgZW50cnkuDQoNClRoYW5rcywNClJheQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IEZ1LCBTaXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+IFNlbnQ6 IFdlZG5lc2RheSwgRmVicnVhcnkgMTksIDIwMjAgMToyMCBQTQ0KPiBUbzogTmksIFJheSA8cmF5 Lm5pQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBLaW5uZXksIE1pY2hh ZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBDaGFnYW50eSwgUmFuZ2FzYWkgViA8 cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjVd IEludGVsU2lsaWNvblBrZzogRklUIGJhc2VkIHNoYWRvdyBtaWNyb2NvZGUgUFBJIHN1cHBvcnQu DQo+IA0KPiBIaSwgUmF5DQo+IA0KPiBUaGUgIiBKdXN0IG9uZSBUeXBlIDAgZW50cnkgaW4gRklU ICIgd2lsbCBiZSBjb3ZlcmVkIGJ5IGJlbG93IGNvZGUgd2hlbiBjYWxjdWxhdGluZyB0aGUgbWlj cm9jb2RlIGVudHJ5IG51bWJlci4gSSB3aWxsDQo+IHVwZGF0ZSB0aGUgcGF0Y2ggdG8gYWRkcmVz cyB5b3VyIG90aGVyIGNvbW1lbnRzLiBUaGFua3MgZm9yIHRoZSByZXZpZXcuDQo+IA0KPiAgIC8v DQo+ICAgLy8gQ2FsY3VsYXRlIG1pY3JvY29kZSBlbnRyeSBudW1iZXINCj4gICAvLw0KPiAgIE1h eFBhdGNoTnVtYmVyID0gMDsNCj4gICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBFbnRyeU51bTsg SW5kZXgrKykgew0KPiAgICAgaWYgKEZpdEVudHJ5W0luZGV4XS5UeXBlID09IEZJVF9UWVBFXzAx X01JQ1JPQ09ERSkgew0KPiAgICAgICBNYXhQYXRjaE51bWJlcisrOw0KPiAgICAgfQ0KPiAgIH0N Cj4gICBpZiAoTWF4UGF0Y2hOdW1iZXIgPT0gMCkgew0KPiAgICAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQo+ICAgfQ0KPiANCj4gQmVzdCBSZWdhcmRzDQo+IFNpeXVhbg0KPiANCj4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+ DQo+ID4gU2VudDogMjAyMMTqMtTCMTnI1SAxMDozMQ0KPiA+IFRvOiBGdSwgU2l5dWFuIDxzaXl1 YW4uZnVAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogS2lubmV5LCBN aWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgQ2hhZ2FudHksIFJhbmdhc2Fp IFYNCj4gPiA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6 IFtQQVRDSCB2NV0gSW50ZWxTaWxpY29uUGtnOiBGSVQgYmFzZWQgc2hhZG93IG1pY3JvY29kZSBQ UEkNCj4gPiBzdXBwb3J0Lg0KPiA+DQo+ID4gMS4gRUZJQVBJIGlzIG1pc3NpbmcgZm9yIFNoYWRv d01pY3JvY29kZSgpDQo+ID4gMi4gV2hhdCdzIHRoZSByZWFzb24gb2YgY3JlYXRpbmcgYSBzZXBh cmF0ZSBmdW5jdGlvbg0KPiA+IFNoYWRvd01pY3JvY29kZVBhdGNoQnlGaXQgKCk/IElzIHRoYXQg YmVjYXVzZSB5b3UgdGhpbmsgdGhpcyBQRUlNIG1heQ0KPiA+IHN1cHBvcnQgb3RoZXIgdUNvZGUg bG9hZCBtZWNoYW5pc20gdGhhbiBGSVQ/IElmIG5vLCBjYW4geW91IG1lcmdlIHRoZQ0KPiA+ICpC eUZpdCgpIHRvIFNoYWRvd01pY3JvY29kZSgpPw0KPiA+IDMuICJJbnZhbGlkIEZJVCBwb2ludCIg LT4gIkludmFsaWQgRklUIHBvaW50ZXIiDQo+ID4gNC4gQWNjb3JkaW5nIHRvIEZJVCBzcGVjLCBJ IHRoaW5rIHlvdSBtaXNzZWQgdGhyZWUgYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlIEZJVA0KPiA+ IEhlYWRlcjoNCj4gPiAgICAgYSkuIEp1c3Qgb25lIFR5cGUgMCBlbnRyeSBpbiBGSVQNCj4gPiAg ICAgYikuIElmIENfViBpcyBzZXQsIEZJVCB0YWJsZSBjaGVja3N1bSBtdXN0IGJlIDAuDQo+ID4g ICAgIGMpLiBWZXJzaW9uIHNob3VsZCBiZSAweDAxMDAuDQo+ID4gICAgIE1vcmUgY2hlY2tzIGNh biBtYWtlIHN1cmUgdGhhdCB3ZSBhcmUgdmlzaXRpbmcgdGhlIHJlYWwgRklULiBCZWNhdXNlIGZy b20NCj4gPiB0aGUgc3BlYywgd2UgaGF2ZSBubyBvdGhlciB3YXkgdG8ga25vdyB3aGV0aGVyIGEg RklUIHJlYWxseSBleGlzdHMgZnJvbSBkYXRhDQo+ID4gbm90IGZyb20gRklUIGl0c2VsZi4NCj4g Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEZ1LCBTaXl1 YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+ID4gPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDE3 LCAyMDIwIDk6NDQgQU0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gQ2M6 IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IE5pLCBSYXkN Cj4gPiA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+ID4gPiA8cmFu Z2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjVdIElu dGVsU2lsaWNvblBrZzogRklUIGJhc2VkIHNoYWRvdyBtaWNyb2NvZGUgUFBJDQo+ID4gc3VwcG9y dC4NCj4gPiA+DQo+ID4gPiBWNSBDaGFuZ2VzOg0KPiA+ID4gQWRkIEZJVCBhZGRyZXNzIGNoZWNr IHRvIHNlZSBpZiBpdCdzIGluIHZhbGlkIGZpcm13YXJlIHJlZ2lvbi4NCj4gPiA+IFY0IENoYW5n ZXM6DQo+ID4gPiBBZGp1c3QgRURLSUlfTUlDUk9DT0RFX1NIQURPV19JTkZPX0hPQiBzdHJ1Y3R1 cmUgZGVmaW5pdGlvbiBmb3INCj4gPiA+IGJldHRlciBhbGlnbm1lbnQgYW5kIHVuZGVyc3RhbmRp bmcuDQo+ID4gPiBBZGQgRUZJX01JQ1JPQ09ERV9TVE9SQUdFX1RZUEVfRkxBU0hfQ09OVEVYVCBz dHJ1Y3R1cmUNCj4gPiBkZWZpbml0aW9uLg0KPiA+ID4gRml4IGEgdHlwbyBpbiBFRklfTUlDUk9D T0RFX1NUT1JBR0VfVFlQRV9GTEFTSF9HVUlELg0KPiA+ID4gTWVyZ2UgU2hhZG93TWljcm9jb2Rl UGVpLmggaGVhZGVyIGludG8gYyBmaWxlLg0KPiA+ID4gQ29ycmVjdCBmaWxlIGhlYWRlciBkZXNj cmlwdGlvbiBhbmQgY29weSByaWdodCB5ZWFyLg0KPiA+ID4gVjMgQ2hhbmdlczoNCj4gPiA+IFJl bW92ZSB0aGUgZmVhdHVyZSBQQ0QgUGNkQ3B1U2hhZG93TWljcm9jb2RlQnlGaXQgYmVjYXVzZSB0 aGUNCj4gPiA+IHdob2xlIEZJVCBtaWNyb2NvZGUgc2hhZG93IGNvZGUgaXMgbW92ZWQgdG8gdGhp cyBQRUlNIHNvIHBsYXRmb3JtDQo+ID4gPiBjb3VsZCBkaXNhYmxlIHRoaXMgZmVhdHVyZSBieSBu b3QgaW5jbHVkZSBQRUlNIG5vdy4NCj4gPiA+IFYyIENoYW5nZXM6DQo+ID4gPiBSZW5hbWUgRURL SUlfUEVJX0NQVV9NSUNST0NPREVfSUQgdG8gRURLSUlfUEVJX01JQ1JPQ09ERV9DUFVfSUQuDQo+ ID4gPg0KPiA+ID4gVGhpcyBwYXRjaCBhZGRzIGEgcGxhdGZvcm0gUEVJTSBmb3IgRklUIGJhc2Vk IHNoYWRvdyBtaWNyb2NvZGUgUFBJDQo+ID4gPiBzdXBwb3J0LiBBIGRldGFpbGVkIGRlc2lnbiBk b2MgY2FuIGJlIGZvdW5kIGhlcmU6DQo+ID4gPiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2 ZWwvZmlsZXMvRGVzaWducy8yMDIwLzAyMTQvU3VwcG9ydCUyMA0KPiA+ID4gdGhlJTIwMm5kJTIw TWljcm9jb2RlJTIwRlYlMjBGbGFzaCUyMFJlZ2lvbi5wZGYNCj4gPiA+DQo+ID4gPiBURVNUOiBU ZXN0ZWQgb24gRklUIGVuYWJsZWQgcGxhdGZvcm0uDQo+ID4gPiBCWjogaHR0cHM6Ly90aWFub2Nv cmUuYWNnbXVsdGltZWRpYS5jb20vc2hvd19idWcuY2dpP2lkPTI0NDkNCj4gPiA+DQo+ID4gPiBD YzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBD YzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IFJhbmdhc2FpIFYgQ2hhZ2Fu dHkgPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTog U2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgLi4uL1No YWRvd01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZGVQZWkuYyAgICAgIHwgNDQ2DQo+ID4gKysrKysr KysrKysrKysrKysrDQo+ID4gPiAgLi4uL1NoYWRvd01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZGVQ ZWkuaW5mICAgIHwgIDQzICsrDQo+ID4gPiAgLi4uL0luY2x1ZGUvR3VpZC9NaWNyb2NvZGVTaGFk b3dJbmZvSG9iLmggICAgIHwgIDY0ICsrKw0KPiA+ID4gIC4uLi9JbnRlbC9JbnRlbFNpbGljb25Q a2cvSW50ZWxTaWxpY29uUGtnLmRlYyB8ICAgOCArLQ0KPiA+ID4gIC4uLi9JbnRlbC9JbnRlbFNp bGljb25Qa2cvSW50ZWxTaWxpY29uUGtnLmRzYyB8ICAgMyArLQ0KPiA+ID4gIDUgZmlsZXMgY2hh bmdlZCwgNTYyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+ID4gU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9TaGFk b3dNaWNyb2NvZGUvU2hhZG93TWljcm9jb2RlUA0KPiA+IGVpLmMNCj4gPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gPiBTaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRv d01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZGVQDQo+ID4gZWkuaW5mDQo+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+ID4gU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW5jbHVkZS9HdWlk L01pY3JvY29kZVNoYWRvd0luZm9Ib2IuaA0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQNCj4gPiBh L1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1No YWRvd01pY3JvY29kDQo+ID4gZVBlaS5jDQo+ID4gPg0KPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRl bFNpbGljb25Qa2cvRmVhdHVyZS9TaGFkb3dNaWNyb2NvZGUvU2hhZG93TWljcm9jb2QNCj4gPiBl UGVpLmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAw Li5lMTMwZjYxZmIwDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysNCj4gPiBiL1NpbGlj b24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRvd01p Y3JvY29kDQo+ID4gZVBlaS5jDQo+ID4gPiBAQCAtMCwwICsxLDQ0NiBAQA0KPiA+ID4gKy8qKiBA ZmlsZQ0KPiA+ID4gKyAgRklUIGJhc2VkIG1pY3JvY29kZSBzaGFkb3cgUEVJTS4NCj4gPiA+ICsN Cj4gPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRl IDxQaVBlaS5oPg0KPiA+ID4gKyNpbmNsdWRlIDxQcGkvU2hhZG93TWljcm9jb2RlLmg+DQo+ID4g PiArI2luY2x1ZGUgPExpYnJhcnkvUGVpU2VydmljZXNMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9Ib2JMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0K PiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPEluZHVz dHJ5U3RhbmRhcmQvRmlybXdhcmVJbnRlcmZhY2VUYWJsZS5oPg0KPiA+ID4gKyNpbmNsdWRlIDxS ZWdpc3Rlci9JbnRlbC9NaWNyb2NvZGUuaD4NCj4gPiA+ICsjaW5jbHVkZSA8UmVnaXN0ZXIvSW50 ZWwvQ3B1aWQuaD4NCj4gPiA+ICsjaW5jbHVkZSA8R3VpZC9NaWNyb2NvZGVTaGFkb3dJbmZvSG9i Lmg+DQo+ID4gPiArLy8NCj4gPiA+ICsvLyBEYXRhIHN0cnVjdHVyZSBmb3IgbWljcm9jb2RlIHBh dGNoIGluZm9ybWF0aW9uDQo+ID4gPiArLy8NCj4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4g PiArICBVSU5UTiAgICBBZGRyZXNzOw0KPiA+ID4gKyAgVUlOVE4gICAgU2l6ZTsNCj4gPiA+ICt9 IE1JQ1JPQ09ERV9QQVRDSF9JTkZPOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2hh ZG93IG1pY3JvY29kZSB1cGRhdGUgcGF0Y2hlcyB0byBtZW1vcnkuDQo+ID4gPiArDQo+ID4gPiAr ICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBmb3Igc2hhZG93aW5nIG1pY3JvY29kZSB1cGRhdGUgcGF0 Y2hlcyB0byBhDQo+ID4gY29udGludW91cyBtZW1vcnkuDQo+ID4gPiArICBJdCBzaGFsbCBhbGxv Y2F0ZSBtZW1vcnkgYnVmZmVyIGFuZCBvbmx5IHNoYWRvdyB0aGUgbWljcm9jb2RlIHBhdGNoZXMN Cj4gPiBmb3IgdGhvc2UNCj4gPiA+ICsgIHByb2Nlc3NvcnMgc3BlY2lmaWVkIGJ5IE1pY3JvY29k ZUNwdUlkIGFycmF5LiBUaGUgY2hlY2tzdW0gdmVyaWZpY2F0aW9uDQo+ID4gbWF5IGJlDQo+ID4g PiArICBza2lwZWQgaW4gdGhpcyBmdW5jdGlvbiBzbyB0aGUgY2FsbGVyIG11c3QgcGVyZm9ybSBj aGVja3N1bSB2ZXJpZmljYXRpb24NCj4gPiBiZWZvcmUNCj4gPiA+ICsgIHVzaW5nIHRoZSBtaWNy b2NvZGUgcGF0Y2hlcyBpbiByZXR1cm5lZCBtZW1vcnkgYnVmZmVyLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAgVGhlIFBQSSBpbnN0YW5jZSBwb2lu dGVyLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3B1SWRDb3VudCAgICAgICAgICAgTnVtYmVyIG9m IGVsZW1lbnRzIGluIE1pY3JvY29kZUNwdUlkDQo+ID4gYXJyYXkuDQo+ID4gPiArICBAcGFyYW1b aW5dICBNaWNyb2NvZGVDcHVJZCAgICAgICBBIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YNCj4gPiBF REtJSV9QRUlfTUlDUk9DT0RFX0NQVV9JRA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0dXJlcy4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJ1ZmZlclNpemUg ICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgdG90YWwgc2l6ZSBvZiBCdWZmZXIuDQo+ ID4gPiArICBAcGFyYW1bb3V0XSBCdWZmZXIgICAgICAgICAgICAgICBQb2ludGVyIHRvIHJlY2Vp dmUgYWRkcmVzcyBvZiBhbGxvY2F0ZWQNCj4gPiBtZW1vcnkNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdpdGggbWljcm9jb2RlIHBhdGNoZXMgZGF0YSBpbiBpdC4N Cj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBt aWNyb2NvZGUgaGFzIGJlZW4gc2hhZG93ZWQgdG8NCj4gPiBtZW1vcnkuDQo+ID4gPiArICBAcmV0 dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzIGR1ZSB0byBs YWNrIG9mDQo+ID4gcmVzb3VyY2VzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9T VEFUVVMNCj4gPiA+ICtTaGFkb3dNaWNyb2NvZGUgKA0KPiA+ID4gKyAgSU4gIEVES0lJX1BFSV9T SEFET1dfTUlDUk9DT0RFX1BQSSAgICAgICAgKlRoaXMsDQo+ID4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcHVJZENvdW50LA0KPiA+ID4gKyAgSU4gIEVE S0lJX1BFSV9NSUNST0NPREVfQ1BVX0lEICAgICAgICAgICAgKk1pY3JvY29kZUNwdUlkLA0KPiA+ ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlclNp emUsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq KkJ1ZmZlcg0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICtFREtJSV9QRUlf U0hBRE9XX01JQ1JPQ09ERV9QUEkgICBtUGVpU2hhZG93TWljcm9jb2RlUHBpID0gew0KPiA+ID4g KyAgU2hhZG93TWljcm9jb2RlDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICtF RklfUEVJX1BQSV9ERVNDUklQVE9SICAgICAgICAgICBtUGVpU2hhZG93TWljcm9jb2RlUHBpTGlz dFtdID0gew0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1BQ SSB8DQo+ID4gRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9URVJNSU5BVEVfTElTVCwNCj4gPiA+ICsg ICAgJmdFZGtpaVBlaVNoYWRvd01pY3JvY29kZVBwaUd1aWQsDQo+ID4gPiArICAgICZtUGVpU2hh ZG93TWljcm9jb2RlUHBpDQo+ID4gPiArICB9DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIERldGVybWluZSBpZiBhIG1pY3JvY29kZSBwYXRjaCBtYXRjaHMgdGhlIHNw ZWNpZmljIHByb2Nlc3NvciBzaWduYXR1cmUNCj4gPiBhbmQgZmxhZy4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIENwdUlkQ291bnQgICAgICAgICAgICBOdW1iZXIgb2YgZWxlbWVudHMg aW4gTWljcm9jb2RlQ3B1SWQNCj4gPiBhcnJheS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIE1pY3Jv Y29kZUNwdUlkICAgICAgICBBIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YNCj4gPiBFREtJSV9QRUlf TUlDUk9DT0RFX0NQVV9JRA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdHVyZXMuDQo+ID4gPiArICBAcGFyYW1baW5dICBQcm9jZXNzb3JTaWduYXR1cmUg ICAgVGhlIHByb2Nlc3NvciBzaWduYXR1cmUgZmllbGQgdmFsdWUNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYnkgYSBtaWNyb2NvZGUgcGF0Y2gu DQo+ID4gPiArICBAcGFyYW1baW5dICBQcm9jZXNzb3JGbGFncyAgICAgICAgVGhlIHByY2Vzc29y IGZsYWdzIGZpZWxkIHZhbHVlIHN1cHBvcnRlZA0KPiA+IGJ5DQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYSBtaWNyb2NvZGUgcGF0Y2guDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIFRSVUUgICAgIFRoZSBzcGVjaWZpZWQgbWljcm9jb2RlIHBhdGNoIHdpbGwg YmUgbG9hZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICBUaGUgc3BlY2lmaWVkIG1pY3Jv Y29kZSBwYXRjaCB3aWxsIG5vdCBiZSBsb2FkZWQuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVB Tg0KPiA+ID4gK0lzUHJvY2Vzc29yTWF0Y2hlZE1pY3JvY29kZVBhdGNoICgNCj4gPiA+ICsgIElO ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgIENwdUlkQ291bnQsDQo+ID4gPiArICBJ TiAgRURLSUlfUEVJX01JQ1JPQ09ERV9DUFVfSUQgICAgICAqTWljcm9jb2RlQ3B1SWQsDQo+ID4g PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzb3JTaWduYXR1 cmUsDQo+ID4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNz b3JGbGFncw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVJTlROICAgICAgICAgIElu ZGV4Ow0KPiA+ID4gKw0KPiA+ID4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQ3B1SWRDb3Vu dDsgSW5kZXgrKykgew0KPiA+ID4gKyAgICBpZiAoKFByb2Nlc3NvclNpZ25hdHVyZSA9PSBNaWNy b2NvZGVDcHVJZFtJbmRleF0uUHJvY2Vzc29yU2lnbmF0dXJlKQ0KPiA+ICYmDQo+ID4gPiArICAg ICAgICAoUHJvY2Vzc29yRmxhZ3MgJiAoMSA8PCBNaWNyb2NvZGVDcHVJZFtJbmRleF0uUGxhdGZv cm1JZCkpICE9IDApIHsNCj4gPiA+ICsgICAgICByZXR1cm4gVFJVRTsNCj4gPiA+ICsgICAgfQ0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIHRoZSAnUHJvY2Vzc29yU2lnbmF0dXJl JyBhbmQgJ1Byb2Nlc3NvckZsYWdzJyBvZiB0aGUgbWljcm9jb2RlDQo+ID4gPiArICBwYXRjaCBo ZWFkZXIgd2l0aCB0aGUgQ1BVSUQgYW5kIFBsYXRmb3JtSUQgb2YgdGhlIHByb2Nlc3NvcnMgd2l0 aGluDQo+ID4gPiArICBzeXN0ZW0gdG8gZGVjaWRlIGlmIGl0IHdpbGwgYmUgY29waWVkIGludG8g bWVtb3J5Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3B1SWRDb3VudCAgICAgICAg ICAgIE51bWJlciBvZiBlbGVtZW50cyBpbiBNaWNyb2NvZGVDcHVJZA0KPiA+IGFycmF5Lg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgTWljcm9jb2RlQ3B1SWQgICAgICAgIEEgcG9pbnRlciB0byBhbiBh cnJheSBvZg0KPiA+IEVES0lJX1BFSV9NSUNST0NPREVfQ1BVX0lEDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcy4NCj4gPiA+ICsgIEBwYXJhbVtp bl0gIE1pY3JvY29kZUVudHJ5UG9pbnQgICBUaGUgcG9pbnRlciB0byB0aGUgbWljcm9jb2RlIHBh dGNoDQo+ID4gaGVhZGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICBUaGUg c3BlY2lmaWVkIG1pY3JvY29kZSBwYXRjaCBuZWVkIHRvIGJlIGxvYWRlZC4NCj4gPiA+ICsgIEBy ZXR2YWwgRkFMU0UgICAgVGhlIHNwZWNpZmllZCBtaWNyb2NvZGUgcGF0Y2ggZG9zZW4ndCBuZWVk IHRvIGJlDQo+ID4gbG9hZGVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtJ c01pY3JvY29kZVBhdGNoTmVlZExvYWQgKA0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgIENwdUlkQ291bnQsDQo+ID4gPiArICBJTiAgRURLSUlfUEVJX01JQ1JPQ09E RV9DUFVfSUQgICAgKk1pY3JvY29kZUNwdUlkLA0KPiA+ID4gKyAgQ1BVX01JQ1JPQ09ERV9IRUFE RVIgICAgICAgICAgICAgICpNaWNyb2NvZGVFbnRyeVBvaW50DQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVlZExv YWQ7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRh U2l6ZTsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRv dGFsU2l6ZTsNCj4gPiA+ICsgIENQVV9NSUNST0NPREVfRVhURU5ERURfVEFCTEVfSEVBREVSICAg ICpFeHRlbmRlZFRhYmxlSGVhZGVyOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRXh0ZW5kZWRUYWJsZUNvdW50Ow0KPiA+ID4gKyAgQ1BVX01JQ1JPQ09E RV9FWFRFTkRFRF9UQUJMRSAgICAgICAgICAgKkV4dGVuZGVkVGFibGU7DQo+ID4gPiArICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiA+ICsNCj4gPiA+ ICsgIC8vDQo+ID4gPiArICAvLyBDaGVjayB0aGUgJ1Byb2Nlc3NvclNpZ25hdHVyZScgYW5kICdQ cm9jZXNzb3JGbGFncycgaW4gbWljcm9jb2RlDQo+ID4gcGF0Y2ggaGVhZGVyLg0KPiA+ID4gKyAg Ly8NCj4gPiA+ICsgIE5lZWRMb2FkID0gSXNQcm9jZXNzb3JNYXRjaGVkTWljcm9jb2RlUGF0Y2gg KA0KPiA+ID4gKyAgICAgICAgICAgICAgIENwdUlkQ291bnQsDQo+ID4gPiArICAgICAgICAgICAg ICAgTWljcm9jb2RlQ3B1SWQsDQo+ID4gPiArICAgICAgICAgICAgICAgTWljcm9jb2RlRW50cnlQ b2ludC0+UHJvY2Vzc29yU2lnbmF0dXJlLlVpbnQzMiwNCj4gPiA+ICsgICAgICAgICAgICAgICBN aWNyb2NvZGVFbnRyeVBvaW50LT5Qcm9jZXNzb3JGbGFncw0KPiA+ID4gKyAgICAgICAgICAgICAg ICk7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gSWYgdGhlIEV4dGVuZGVkIFNp Z25hdHVyZSBUYWJsZSBleGlzdHMsIGNoZWNrIGlmIHRoZSBwcm9jZXNzb3IgaXMgaW4gdGhlDQo+ ID4gPiArICAvLyBzdXBwb3J0IGxpc3QNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBEYXRhU2l6ZSAg PSBNaWNyb2NvZGVFbnRyeVBvaW50LT5EYXRhU2l6ZTsNCj4gPiA+ICsgIFRvdGFsU2l6ZSA9IChE YXRhU2l6ZSA9PSAwKSA/IDIwNDggOiBNaWNyb2NvZGVFbnRyeVBvaW50LT5Ub3RhbFNpemU7DQo+ ID4gPiArICBpZiAoKCFOZWVkTG9hZCkgJiYgKERhdGFTaXplICE9IDApICYmDQo+ID4gPiArICAg ICAgKFRvdGFsU2l6ZSAtIERhdGFTaXplID4gc2l6ZW9mIChDUFVfTUlDUk9DT0RFX0hFQURFUikg Kw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ1BVX01JQ1JP Q09ERV9FWFRFTkRFRF9UQUJMRV9IRUFERVIpKSkNCj4gPiB7DQo+ID4gPiArICAgIEV4dGVuZGVk VGFibGVIZWFkZXIgPSAoQ1BVX01JQ1JPQ09ERV9FWFRFTkRFRF9UQUJMRV9IRUFERVINCj4gPiAq KSAoKFVJTlQ4ICopIChNaWNyb2NvZGVFbnRyeVBvaW50KQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICArIERhdGFTaXplICsgc2l6ZW9mIChDUFVfTUlDUk9DT0RFX0hFQURFUikp Ow0KPiA+ID4gKyAgICBFeHRlbmRlZFRhYmxlQ291bnQgID0gRXh0ZW5kZWRUYWJsZUhlYWRlci0+ RXh0ZW5kZWRTaWduYXR1cmVDb3VudDsNCj4gPiA+ICsgICAgRXh0ZW5kZWRUYWJsZSAgICAgICA9 IChDUFVfTUlDUk9DT0RFX0VYVEVOREVEX1RBQkxFICopDQo+ID4gKEV4dGVuZGVkVGFibGVIZWFk ZXIgKyAxKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgRXh0 ZW5kZWRUYWJsZUNvdW50OyBJbmRleCArKykgew0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAg ICAgLy8gQ2hlY2sgdGhlICdQcm9jZXNzb3JTaWduYXR1cmUnIGFuZCAnUHJvY2Vzc29yRmxhZycg b2YgdGhlIEV4dGVuZGVkDQo+ID4gPiArICAgICAgLy8gU2lnbmF0dXJlIFRhYmxlIGVudHJ5IHdp dGggdGhlIENQVUlEIGFuZCBQbGF0Zm9ybUlEIG9mIHRoZQ0KPiA+IHByb2Nlc3NvcnMNCj4gPiA+ ICsgICAgICAvLyB3aXRoaW4gc3lzdGVtIHRvIGRlY2lkZSBpZiBpdCB3aWxsIGJlIGNvcGllZCBp bnRvIG1lbW9yeQ0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAgTmVlZExvYWQgPSBJc1By b2Nlc3Nvck1hdGNoZWRNaWNyb2NvZGVQYXRjaCAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAg IENwdUlkQ291bnQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgIE1pY3JvY29kZUNwdUlkLA0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICBFeHRlbmRlZFRhYmxlLT5Qcm9jZXNzb3JTaWduYXR1 cmUuVWludDMyLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICBFeHRlbmRlZFRhYmxlLT5Qcm9j ZXNzb3JGbGFnDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiArICAgICAgaWYg KE5lZWRMb2FkKSB7DQo+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ICsgICAgICB9DQo+ID4g PiArICAgICAgRXh0ZW5kZWRUYWJsZSArKzsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgcmV0dXJuIE5lZWRMb2FkOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIEFjdHVhbCB3b3JrZXIgZnVuY3Rpb24gdGhhdCBzaGFkb3dzIHRoZSBy ZXF1aXJlZCBtaWNyb2NvZGUgcGF0Y2hlcw0KPiA+IGludG8gbWVtb3J5Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgICBQYXRjaGVzICAgICAgICAgIFRoZSBwb2ludGVyIHRvIGFu IGFycmF5IG9mIGluZm9ybWF0aW9uIG9uDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIG1pY3JvY29kZSBwYXRjaGVzIHRoYXQgd2lsbCBiZSBsb2FkZWQNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIG1lbW9yeS4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gICAgICAgUGF0Y2hDb3VudCAgICAgICBUaGUgbnVtYmVyIG9mIG1p Y3JvY29kZSBwYXRjaGVzIHRoYXQNCj4gPiB3aWxsDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmUgbG9hZGVkIGludG8gbWVtb3J5Lg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgICAgICBUb3RhbExvYWRTaXplICAgIFRoZSB0b3RhbCBzaXplIG9mIGFsbCB0aGUgbWlj cm9jb2RlDQo+ID4gcGF0Y2hlcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRvIGJlIGxvYWRlZC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJ1ZmZlclNpemUgICAg ICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHNpemUgb2YgQnVmZmVyLg0KPiA+ ID4gKyAgQHBhcmFtW291dF0gQnVmZmVyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2 ZSBhZGRyZXNzIG9mIGFsbG9jYXRlZA0KPiA+IG1lbW9yeQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdpdGggbWljcm9jb2RlIHBhdGNoZXMgZGF0YSBpbiBpdC4N Cj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArU2hhZG93TWljcm9jb2RlUGF0Y2hXb3Jr ZXIgKA0KPiA+ID4gKyAgSU4gIE1JQ1JPQ09ERV9QQVRDSF9JTkZPICAgICAgICpQYXRjaGVzLA0K PiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgIFBhdGNoQ291bnQsDQo+ID4g PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgVG90YWxMb2FkU2l6ZSwNCj4gPiA+ ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyU2l6ZSwNCj4gPiA+ICsg IE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAqKkJ1ZmZlcg0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4Ow0KPiA+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKk1pY3JvY29kZVBhdGNoSW5SYW07DQo+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqV2Fsa2VyOw0KPiA+ID4gKyAgRURLSUlfTUlDUk9DT0RFX1NI QURPV19JTkZPX0hPQiAgICAgICAgICAgKk1pY3JvY29kZVNoYWRvd0hvYjsNCj4gPiA+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvYkRhdGFMZW5ndGg7DQo+ ID4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTWljcm9j b2RlQWRkcmVzc0luTWVtb3J5Ow0KPiA+ID4gKyAgRUZJX01JQ1JPQ09ERV9TVE9SQUdFX1RZUEVf RkxBU0hfQ09OVEVYVCAgKkZsYXNoY29udGV4dDsNCj4gPiA+ICsNCj4gPiA+ICsgIEFTU0VSVCAo KFBhdGNoZXMgIT0gTlVMTCkgJiYgKFBhdGNoQ291bnQgIT0gMCkpOw0KPiA+ID4gKw0KPiA+ID4g KyAgLy8NCj4gPiA+ICsgIC8vIEluaXQgbWljcm9jb2RlIHNoYWRvdyBpbmZvIEhPQiBjb250ZW50 Lg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIEhvYkRhdGFMZW5ndGggPSBzaXplb2YgKEVES0lJX01J Q1JPQ09ERV9TSEFET1dfSU5GT19IT0IpICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBzaXpl b2YgKFVJTlQ2NCkgKiBQYXRjaENvdW50ICogMjsNCj4gPiA+ICsgIE1pY3JvY29kZVNoYWRvd0hv YiAgPSBBbGxvY2F0ZVBvb2wgKEhvYkRhdGFMZW5ndGgpOw0KPiA+ID4gKyAgaWYgKE1pY3JvY29k ZVNoYWRvd0hvYiA9PSBOVUxMKSB7DQo+ID4gPiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4g KyAgICByZXR1cm47DQo+ID4gPiArICB9DQo+ID4gPiArICBNaWNyb2NvZGVTaGFkb3dIb2ItPk1p Y3JvY29kZUNvdW50ID0gUGF0Y2hDb3VudDsNCj4gPiA+ICsgIENvcHlHdWlkICgNCj4gPiA+ICsg ICAgJk1pY3JvY29kZVNoYWRvd0hvYi0+U3RvcmFnZVR5cGUsDQo+ID4gPiArICAgICZnRWRraWlN aWNyb2NvZGVTdG9yYWdlVHlwZUZsYXNoR3VpZA0KPiA+ID4gKyAgICApOw0KPiA+ID4gKyAgTWlj cm9jb2RlQWRkcmVzc0luTWVtb3J5ID0gKFVJTlQ2NCAqKSAoTWljcm9jb2RlU2hhZG93SG9iICsg MSk7DQo+ID4gPiArICBGbGFzaGNvbnRleHQgPSAoRUZJX01JQ1JPQ09ERV9TVE9SQUdFX1RZUEVf RkxBU0hfQ09OVEVYVCAqKQ0KPiA+IChNaWNyb2NvZGVBZGRyZXNzSW5NZW1vcnkgKyBQYXRjaENv dW50KTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBBbGxvY2F0ZSBtZW1vcnkg Zm9yIG1pY3JvY29kZSBzaGFkb3cgb3BlcmF0aW9uLg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIE1p Y3JvY29kZVBhdGNoSW5SYW0gPSBBbGxvY2F0ZVBhZ2VzIChFRklfU0laRV9UT19QQUdFUw0KPiA+ IChUb3RhbExvYWRTaXplKSk7DQo+ID4gPiArICBpZiAoTWljcm9jb2RlUGF0Y2hJblJhbSA9PSBO VUxMKSB7DQo+ID4gPiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgICByZXR1cm47DQo+ ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gU2hhZG93IGFsbCB0 aGUgcmVxdWlyZWQgbWljcm9jb2RlIHBhdGNoZXMgaW50byBtZW1vcnkNCj4gPiA+ICsgIC8vDQo+ ID4gPiArICBmb3IgKFdhbGtlciA9IE1pY3JvY29kZVBhdGNoSW5SYW0sIEluZGV4ID0gMDsgSW5k ZXggPCBQYXRjaENvdW50Ow0KPiA+IEluZGV4KyspIHsNCj4gPiA+ICsgICAgQ29weU1lbSAoDQo+ ID4gPiArICAgICAgV2Fsa2VyLA0KPiA+ID4gKyAgICAgIChWT0lEICopIFBhdGNoZXNbSW5kZXhd LkFkZHJlc3MsDQo+ID4gPiArICAgICAgUGF0Y2hlc1tJbmRleF0uU2l6ZQ0KPiA+ID4gKyAgICAg ICk7DQo+ID4gPiArICAgIE1pY3JvY29kZUFkZHJlc3NJbk1lbW9yeVtJbmRleF0gPSAoVUlOVDY0 KSBXYWxrZXI7DQo+ID4gPiArICAgIEZsYXNoY29udGV4dC0+TWljcm9jb2RlQWRkcmVzc0luRmxh c2hbSW5kZXhdICA9IChVSU5UNjQpDQo+ID4gUGF0Y2hlc1tJbmRleF0uQWRkcmVzczsNCj4gPiA+ ICsgICAgV2Fsa2VyICs9IFBhdGNoZXNbSW5kZXhdLlNpemU7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gVXBkYXRlIHRoZSBtaWNyb2NvZGUgcGF0Y2ggcmVs YXRlZCBmaWVsZHMgaW4gQ3B1TXBEYXRhDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgKkJ1ZmZlciAg ICAgPSAoVk9JRCAqKSAoVUlOVE4pIE1pY3JvY29kZVBhdGNoSW5SYW07DQo+ID4gPiArICAqQnVm ZmVyU2l6ZSA9IFRvdGFsTG9hZFNpemU7DQo+ID4gPiArDQo+ID4gPiArICBCdWlsZEd1aWREYXRh SG9iICgNCj4gPiA+ICsgICAgJmdFZGtpaU1pY3JvY29kZVNoYWRvd0luZm9Ib2JHdWlkLA0KPiA+ ID4gKyAgICBNaWNyb2NvZGVTaGFkb3dIb2IsDQo+ID4gPiArICAgIEhvYkRhdGFMZW5ndGgNCj4g PiA+ICsgICAgKTsNCj4gPiA+ICsNCj4gPiA+ICsgIERFQlVHICgoDQo+ID4gPiArICAgIERFQlVH X0lORk8sDQo+ID4gPiArICAgICIlYTogUmVxdWlyZWQgbWljcm9jb2RlIHBhdGNoZXMgaGF2ZSBi ZWVuIGxvYWRlZCBhdCAweCVseCwgd2l0aCBzaXplDQo+ID4gMHglbHguXG4iLA0KPiA+ID4gKyAg ICBfX0ZVTkNUSU9OX18sICpCdWZmZXIsICpCdWZmZXJTaXplDQo+ID4gPiArICAgICkpOw0KPiA+ ID4gKw0KPiA+ID4gKyAgcmV0dXJuOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIFNoYWRvdyB0aGUgcmVxdWlyZWQgbWljcm9jb2RlIHBhdGNoZXMgZGF0YSBpbnRvIG1l bW9yeSBhY2NvcmRpbmcNCj4gPiA+ICsgIHRvIEZJVCBtaWNyb2NvZGUgZW50cnkuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK1NoYWRvd01pY3JvY29kZVBh dGNoQnlGaXQgKA0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ3B1SWRDb3VudCwNCj4gPiA+ICsgIElOICBFREtJSV9QRUlfTUlDUk9DT0RFX0NQVV9J RCAgICAgICAgICAgICpNaWNyb2NvZGVDcHVJZCwNCj4gPiA+ICsgIE9VVCBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXJTaXplLA0KPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipCdWZmZXINCj4gPiA+ICsgICkNCj4g PiA+ICt7DQo+ID4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml0UG9p bnRlcjsNCj4gPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXRFbmRp bmc7DQo+ID4gPiArICBGSVJNV0FSRV9JTlRFUkZBQ0VfVEFCTEVfRU5UUlkgICAgKkZpdEVudHJ5 Ow0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudHJ5TnVtOw0K PiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ID4g KyAgTUlDUk9DT0RFX1BBVENIX0lORk8gICAgICAgICAgICAgICpQYXRjaEluZm9CdWZmZXI7DQo+ ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4UGF0Y2hOdW1iZXI7 DQo+ID4gPiArICBDUFVfTUlDUk9DT0RFX0hFQURFUiAgICAgICAgICAgICAgKk1pY3JvY29kZUVu dHJ5UG9pbnQ7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0 Y2hDb3VudDsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3Rh bFNpemU7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWxM b2FkU2l6ZTsNCj4gPiA+ICsNCj4gPiA+ICsgIEZpdFBvaW50ZXIgPSAqKFVJTlQ2NCAqKSAoVUlO VE4pIEZJVF9QT0lOVEVSX0FERFJFU1M7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAg Ly8gVGhlIGVudGlyZSBGSVQgdGFibGUgbXVzdCByZXNpZGUgd2l0aCBpbiB0aGUgZmlybXdhcmUg YWRkcmVzcyByYW5nZQ0KPiA+ID4gKyAgLy8gb2YgKDRHQi0xNk1CKSB0byAoNEdCLTQwaCkuDQo+ ID4gPiArICAvLw0KPiA+ID4gKyAgaWYgKChGaXRQb2ludGVyIDwgKFNJWkVfNEdCIC0gU0laRV8x Nk1CKSkgfHwgKEZpdFBvaW50ZXIgPj0gKFNJWkVfNEdCIC0NCj4gPiAweDQwKSkpIHsNCj4gPiA+ ICsgICAgLy8NCj4gPiA+ICsgICAgLy8gSW52YWxpZCBGSVQgYWRkcmVzcywgdHJlYXQgaXQgYXMg bm8gRklUIHRhYmxlLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiRXJyb3I6IEludmFsaWQgRklUIHBvaW50IDB4JXAuXG4iLCBGaXRQb2ludGVyKSk7DQo+ ID4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgRml0 RW50cnkgPSAoRklSTVdBUkVfSU5URVJGQUNFX1RBQkxFX0VOVFJZICopIChVSU5UTikgRml0UG9p bnRlcjsNCj4gPiA+ICsgIGlmICgoRml0RW50cnlbMF0uVHlwZSAhPSBGSVRfVFlQRV8wMF9IRUFE RVIpIHx8DQo+ID4gPiArICAgICAgKEZpdEVudHJ5WzBdLkFkZHJlc3MgIT0gRklUX1RZUEVfMDBf U0lHTkFUVVJFKSkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBJbnZhbGlkIEZJVCBo ZWFkZXIsIHRyZWF0IGl0IGFzIG5vIEZJVCB0YWJsZS4NCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVycm9yOiBJbnZhbGlkIEZJVCBoZWFkZXIuXG4iKSk7 DQo+ID4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAg RW50cnlOdW0gPSAqKFVJTlQzMiAqKSgmRml0RW50cnlbMF0uU2l6ZVswXSkgJiAweEZGRkZGRjsN Cj4gPiA+ICsgIEZpdEVuZGluZyA9IEZpdFBvaW50ZXIgKyBzaXplb2YgKEZJUk1XQVJFX0lOVEVS RkFDRV9UQUJMRV9FTlRSWSkgKg0KPiA+IEVudHJ5TnVtOw0KPiA+ID4gKyAgaWYgKEZpdEVuZGlu ZyAgPiAoU0laRV80R0IgLSAweDQwKSkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBJ bnZhbGlkIEZJVCBlbmRpbmcgYWRkcmVzcywgdHJlYXQgaXQgYXMgbm8gRklUIHRhYmxlLg0KPiA+ ID4gKyAgICAvLw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRXJyb3I6IEZJVCB0 YWJsZSBleGNlZWRzIHZhbGlkIHJhbmdlLlxuIikpOw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX05P VF9GT1VORDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBD YWxjdWxhdGUgbWljcm9jb2RlIGVudHJ5IG51bWJlcg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIE1h eFBhdGNoTnVtYmVyID0gMDsNCj4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEVudHJ5 TnVtOyBJbmRleCsrKSB7DQo+ID4gPiArICAgIGlmIChGaXRFbnRyeVtJbmRleF0uVHlwZSA9PSBG SVRfVFlQRV8wMV9NSUNST0NPREUpIHsNCj4gPiA+ICsgICAgICBNYXhQYXRjaE51bWJlcisrOw0K PiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ID4gPiArICBpZiAoTWF4UGF0Y2hOdW1iZXIgPT0g MCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiA+ICsgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIFBhdGNoSW5mb0J1ZmZlciA9IEFsbG9jYXRlUG9vbCAoTWF4UGF0Y2hOdW1i ZXIgKiBzaXplb2YNCj4gPiAoTUlDUk9DT0RFX1BBVENIX0lORk8pKTsNCj4gPiA+ICsgIGlmIChQ YXRjaEluZm9CdWZmZXIgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8g RmlsbCB1cCBtaWNyb2NvZGUgcGF0Y2ggaW5mbyBidWZmZXIgYWNjb3JkaW5nIHRvIEZJVCB0YWJs ZS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBQYXRjaENvdW50ID0gMDsNCj4gPiA+ICsgIFRvdGFs TG9hZFNpemUgPSAwOw0KPiA+ID4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgRW50cnlOdW07 IEluZGV4KyspIHsNCj4gPiA+ICsgICAgaWYgKEZpdEVudHJ5W0luZGV4XS5UeXBlID09IEZJVF9U WVBFXzAxX01JQ1JPQ09ERSkgew0KPiA+ID4gKyAgICAgIE1pY3JvY29kZUVudHJ5UG9pbnQgPSAo Q1BVX01JQ1JPQ09ERV9IRUFERVIgKikgKFVJTlROKQ0KPiA+IEZpdEVudHJ5W0luZGV4XS5BZGRy ZXNzOw0KPiA+ID4gKyAgICAgIFRvdGFsU2l6ZSA9IChNaWNyb2NvZGVFbnRyeVBvaW50LT5EYXRh U2l6ZSA9PSAwKSA/IDIwNDggOg0KPiA+IE1pY3JvY29kZUVudHJ5UG9pbnQtPlRvdGFsU2l6ZTsN Cj4gPiA+ICsgICAgICBpZiAoSXNNaWNyb2NvZGVQYXRjaE5lZWRMb2FkIChDcHVJZENvdW50LCBN aWNyb2NvZGVDcHVJZCwNCj4gPiBNaWNyb2NvZGVFbnRyeVBvaW50KSkgew0KPiA+ID4gKyAgICAg ICAgUGF0Y2hJbmZvQnVmZmVyW1BhdGNoQ291bnRdLkFkZHJlc3MgICAgID0gKFVJTlROKQ0KPiA+ IE1pY3JvY29kZUVudHJ5UG9pbnQ7DQo+ID4gPiArICAgICAgICBQYXRjaEluZm9CdWZmZXJbUGF0 Y2hDb3VudF0uU2l6ZSAgICAgICAgPSBUb3RhbFNpemU7DQo+ID4gPiArICAgICAgICBUb3RhbExv YWRTaXplICs9IFRvdGFsU2l6ZTsNCj4gPiA+ICsgICAgICAgIFBhdGNoQ291bnQrKzsNCj4gPiA+ ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlm IChQYXRjaENvdW50ICE9IDApIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICBE RUJVR19JTkZPLA0KPiA+ID4gKyAgICAgICIlYTogMHgleCBtaWNyb2NvZGUgcGF0Y2hlcyB3aWxs IGJlIGxvYWRlZCBpbnRvIG1lbW9yeSwgd2l0aCBzaXplDQo+ID4gMHgleC5cbiIsDQo+ID4gPiAr ICAgICAgX19GVU5DVElPTl9fLCBQYXRjaENvdW50LCBUb3RhbExvYWRTaXplDQo+ID4gPiArICAg ICAgKSk7DQo+ID4gPiArDQo+ID4gPiArICAgIFNoYWRvd01pY3JvY29kZVBhdGNoV29ya2VyIChQ YXRjaEluZm9CdWZmZXIsIFBhdGNoQ291bnQsDQo+ID4gVG90YWxMb2FkU2l6ZSwgQnVmZmVyU2l6 ZSwgQnVmZmVyKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIEZyZWVQb29sIChQYXRj aEluZm9CdWZmZXIpOw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNoYWRvdyBtaWNyb2NvZGUgdXBk YXRlIHBhdGNoZXMgdG8gbWVtb3J5Lg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhlIGZ1bmN0aW9uIGlz IHVzZWQgZm9yIHNoYWRvd2luZyBtaWNyb2NvZGUgdXBkYXRlIHBhdGNoZXMgdG8gYQ0KPiA+IGNv bnRpbnVvdXMgbWVtb3J5Lg0KPiA+ID4gKyAgSXQgc2hhbGwgYWxsb2NhdGUgbWVtb3J5IGJ1ZmZl ciBhbmQgb25seSBzaGFkb3cgdGhlIG1pY3JvY29kZSBwYXRjaGVzDQo+ID4gZm9yIHRob3NlDQo+ ID4gPiArICBwcm9jZXNzb3JzIHNwZWNpZmllZCBieSBNaWNyb2NvZGVDcHVJZCBhcnJheS4gVGhl IGNoZWNrc3VtIHZlcmlmaWNhdGlvbg0KPiA+IG1heSBiZQ0KPiA+ID4gKyAgc2tpcGVkIGluIHRo aXMgZnVuY3Rpb24gc28gdGhlIGNhbGxlciBtdXN0IHBlcmZvcm0gY2hlY2tzdW0gdmVyaWZpY2F0 aW9uDQo+ID4gYmVmb3JlDQo+ID4gPiArICB1c2luZyB0aGUgbWljcm9jb2RlIHBhdGNoZXMgaW4g cmV0dXJuZWQgbWVtb3J5IGJ1ZmZlci4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFRo aXMgICAgICAgICAgICAgICAgIFRoZSBQUEkgaW5zdGFuY2UgcG9pbnRlci4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gIENwdUlkQ291bnQgICAgICAgICAgIE51bWJlciBvZiBlbGVtZW50cyBpbiBNaWNy b2NvZGVDcHVJZA0KPiA+IGFycmF5Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgTWljcm9jb2RlQ3B1 SWQgICAgICAgQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mDQo+ID4gRURLSUlfUEVJX01JQ1JPQ09E RV9DUFVfSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dHVyZXMuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCdWZmZXJTaXplICAgICAgICAgICBQb2ludGVy IHRvIHJlY2VpdmUgdGhlIHRvdGFsIHNpemUgb2YgQnVmZmVyLg0KPiA+ID4gKyAgQHBhcmFtW291 dF0gQnVmZmVyICAgICAgICAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIGFkZHJlc3Mgb2YgYWxs b2NhdGVkDQo+ID4gbWVtb3J5DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3aXRoIG1pY3JvY29kZSBwYXRjaGVzIGRhdGEgaW4gaXQuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgbWljcm9jb2RlIGhhcyBiZWVu IHNoYWRvd2VkIHRvDQo+ID4gbWVtb3J5Lg0KPiA+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JF U09VUkNFUyAgICAgVGhlIG9wZXJhdGlvbiBmYWlscyBkdWUgdG8gbGFjayBvZg0KPiA+IHJlc291 cmNlcy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArU2hh ZG93TWljcm9jb2RlICgNCj4gPiA+ICsgIElOICBFREtJSV9QRUlfU0hBRE9XX01JQ1JPQ09ERV9Q UEkgICAgICAgICpUaGlzLA0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ3B1SWRDb3VudCwNCj4gPiA+ICsgIElOICBFREtJSV9QRUlfTUlDUk9DT0RF X0NQVV9JRCAgICAgICAgICAgICpNaWNyb2NvZGVDcHVJZCwNCj4gPiA+ICsgIE9VVCBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXJTaXplLA0KPiA+ID4gKyAgT1VU IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipCdWZmZXINCj4gPiA+ICsg ICkNCj4gPiA+ICt7DQo+ID4gPiArICBpZiAoQnVmZmVyU2l6ZSA9PSBOVUxMIHx8IEJ1ZmZlciA9 PSBOVUxMKSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g PiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU2hhZG93TWljcm9jb2RlUGF0Y2hCeUZp dCAoQ3B1SWRDb3VudCwgTWljcm9jb2RlQ3B1SWQsDQo+ID4gQnVmZmVyU2l6ZSwgQnVmZmVyKTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBQbGF0Zm9y bSBJbml0IFBFSSBtb2R1bGUgZW50cnkgcG9pbnQNCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtp bl0gIEZpbGVIYW5kbGUgICAgICAgICAgIE5vdCB1c2VkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg UGVpU2VydmljZXMgICAgICAgICAgR2VuZXJhbCBwdXJwb3NlIHNlcnZpY2VzIGF2YWlsYWJsZSB0 bw0KPiA+IGV2ZXJ5IFBFSU0uDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICAgICBFRklfU1VD Q0VTUyAgICAgICAgICBUaGUgZnVuY3Rpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxseQ0KPiA+ID4g KyAgQHJldHZhbCAgICAgRUZJX09VVF9PRl9SRVNPVVJDRVMgSW5zdWZmaWNpZW50IHJlc291cmNl cyB0byBjcmVhdGUNCj4gPiBkYXRhYmFzZQ0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMN Cj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTaGFkb3dNaWNyb2NvZGVQZWltSW5pdCAoDQo+ID4gPiAr ICBJTiAgICAgICBFRklfUEVJX0ZJTEVfSEFORExFICBGaWxlSGFuZGxlLA0KPiA+ID4gKyAgSU4g Q09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgICAgKipQZWlTZXJ2aWNlcw0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBJbnN0YWxsIEVES0lJIFNoYWRvdyBN aWNyb2NvZGUgUFBJDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0gUGVpU2VydmljZXNJ bnN0YWxsUHBpKG1QZWlTaGFkb3dNaWNyb2NvZGVQcGlMaXN0KTsNCj4gPiA+ICsgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ ID4gK30NCj4gPiA+IGRpZmYgLS1naXQNCj4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29u UGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRvd01pY3JvY29kDQo+ID4gZVBlaS5pbmYN Cj4gPiA+DQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRv d01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZA0KPiA+IGVQZWkuaW5mDQo+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDE5NDAwYWIzMQ0KPiA+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ID4gKysrDQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBr Zy9GZWF0dXJlL1NoYWRvd01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZA0KPiA+IGVQZWkuaW5mDQo+ ID4gPiBAQCAtMCwwICsxLDQzIEBADQo+ID4gPiArIyMjIEBmaWxlDQo+ID4gPiArIyBGSVQgYmFz ZWQgbWljcm9jb2RlIHNoYWRvdyBQRUlNLg0KPiA+ID4gKyMNCj4gPiA+ICsjIENvcHlyaWdodCAo YykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ ID4gKyMNCj4gPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gPiArIw0KPiA+ID4gKyMjIw0KPiA+ID4gKw0KPiA+ID4gK1tEZWZpbmVzXQ0KPiA+ ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxNw0KPiA+ID4g KyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gU2hhZG93TWljcm9jb2RlUGVpDQo+ ID4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA4YWY0Y2Y2OC1lYmU0LTRi MjEtYTAwOC0wY2IzZGEyNzdiZTUNCj4gPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAg ICAgICA9IDEuMA0KPiA+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gUEVJ TQ0KPiA+ID4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gU2hhZG93TWljcm9j b2RlUGVpbUluaXQNCj4gPiA+ICsNCj4gPiA+ICtbU291cmNlc10NCj4gPiA+ICsgIFNoYWRvd01p Y3JvY29kZVBlaS5jDQo+ID4gPiArDQo+ID4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4gKyAg UGVpbUVudHJ5UG9pbnQNCj4gPiA+ICsgIERlYnVnTGliDQo+ID4gPiArICBNZW1vcnlBbGxvY2F0 aW9uTGliDQo+ID4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gPiArICBIb2JMaWINCj4gPiA+ICsg IFBlaVNlcnZpY2VzTGliDQo+ID4gPiArDQo+ID4gPiArW1BhY2thZ2VzXQ0KPiA+ID4gKyAgTWRl UGtnL01kZVBrZy5kZWMNCj4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ID4gPiArICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQo+ID4gPiArICBJbnRlbFNpbGljb25Q a2cvSW50ZWxTaWxpY29uUGtnLmRlYw0KPiA+ID4gKw0KPiA+ID4gK1tQcGlzXQ0KPiA+ID4gKyAg Z0Vka2lpUGVpU2hhZG93TWljcm9jb2RlUHBpR3VpZCAgICAgICAgICAgICAgICAgICAgICMjIFBS T0RVQ0VTDQo+ID4gPiArDQo+ID4gPiArW0d1aWRzXQ0KPiA+ID4gKyAgZ0Vka2lpTWljcm9jb2Rl U2hhZG93SW5mb0hvYkd1aWQNCj4gPiA+ICsgIGdFZGtpaU1pY3JvY29kZVN0b3JhZ2VUeXBlRmxh c2hHdWlkDQo+ID4gPiArDQo+ID4gPiArW0RlcGV4XQ0KPiA+ID4gKyAgVFJVRQ0KPiA+ID4gZGlm ZiAtLWdpdA0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW5jbHVkZS9HdWlk L01pY3JvY29kZVNoYWRvd0luZm9Ib2IuaA0KPiA+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2ls aWNvblBrZy9JbmNsdWRlL0d1aWQvTWljcm9jb2RlU2hhZG93SW5mb0hvYi5oDQo+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uZDFhOWQ3OWE1MQ0KPiA+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrDQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2ls aWNvblBrZy9JbmNsdWRlL0d1aWQvTWljcm9jb2RlU2hhZG93SW5mb0hvYi5oDQo+ID4gPiBAQCAt MCwwICsxLDY0IEBADQo+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiArICBUaGUgZGVmaW5pdGlvbiBm b3IgTWljcm9jb2RlIFNoYWRvdyBJbmZvIEhvYi4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdo dCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g PiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsjaWZuZGVmIF9NSUNST0NPREVfU0hB RE9XX0lORk9fSE9CX0hfDQo+ID4gPiArI2RlZmluZSBfTUlDUk9DT0RFX1NIQURPV19JTkZPX0hP Ql9IXw0KPiA+ID4gKw0KPiA+ID4gKy8vLw0KPiA+ID4gKy8vLyBUaGUgR2xvYmFsIElEIG9mIGEg R1VJRGVkIEhPQiB1c2VkIHRvIHBhc3MgbWljcm9jb2RlIHNoYWRvdyBpbmZvIHRvDQo+ID4gRFhF IERyaXZlci4NCj4gPiA+ICsvLy8NCj4gPiA+ICsjZGVmaW5lIEVES0lJX01JQ1JPQ09ERV9TSEFE T1dfSU5GT19IT0JfR1VJRCBcDQo+ID4gPiArICB7IFwNCj4gPiA+ICsgICAgMHg2NTg5MDNmOSwg MHhkYTY2LCAweDQ2MGQsIHsgMHg4YiwgMHhiMCwgMHg5ZCwgMHgyZCwgMHhkZiwgMHg2NSwNCj4g PiAweDQ0LCAweDU5IH0gXA0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gK2V4dGVybiBFRklf R1VJRCBnRWRraWlNaWNyb2NvZGVTaGFkb3dJbmZvSG9iR3VpZDsNCj4gPiA+ICsNCj4gPiA+ICt0 eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gQW4gRUZJX0dVSUQgdGhh dCBkZWZpbmVzIHRoZSBjb250ZW50cyBvZiBTdG9yYWdlQ29udGV4dC4NCj4gPiA+ICsgIC8vDQo+ ID4gPiArICBHVUlEICAgICAgU3RvcmFnZVR5cGU7DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8g TnVtYmVyIG9mIHRoZSBtaWNyb2NvZGUgcGF0Y2hlcyB3aGljaCBoYXZlIGJlZW4NCj4gPiA+ICsg IC8vIHJlbG9jYXRlZCB0byBtZW1vcnkuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgVUlOVDY0ICAg IE1pY3JvY29kZUNvdW50Ow0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIEFuIGFycmF5IHdpdGgg TWljcm9jb2RlQ291bnQgZWxlbWVudHMgdGhhdCBzdG9yZXMNCj4gPiA+ICsgIC8vIHRoZSBzaGFk b3dlZCBtaWNyb2NvZGUgcGF0Y2ggYWRkcmVzcyBpbiBtZW1vcnkuDQo+ID4gPiArICAvLw0KPiA+ ID4gKyAgVUlOVDY0ICAgIE1pY3JvY29kZUFkZHJJbk1lbW9yeVtdOw0KPiA+ID4gKyAgLy8NCj4g PiA+ICsgIC8vIEEgYnVmZmVyIHdoaWNoIGNvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHN0b3Jh Z2UgaW5mb3JtYXRpb24NCj4gPiA+ICsgIC8vIHNwZWNpZmljIHRvIFN0b3JhZ2VUeXBlLg0KPiA+ ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFVJTlQ4ICBTdG9yYWdlQ29udGV4dFtdOw0KPiA+ID4gK30g RURLSUlfTUlDUk9DT0RFX1NIQURPV19JTkZPX0hPQjsNCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ ID4gKy8vIEFuIEVES0lJX01JQ1JPQ09ERV9TSEFET1dfSU5GT19IT0Igd2l0aCBTdG9yYWdlVHlw ZSBzZXQgdG8NCj4gPiBiZWxvdyBHVUlEIHdpbGwgaGF2ZQ0KPiA+ID4gKy8vIHRoZSBTdG9yYWdl Q29udGV4dCBvZiBhDQo+ID4gRUZJX01JQ1JPQ09ERV9TVE9SQUdFX1RZUEVfRkxBU0hfQ09OVEVY VCBzdHJ1Y3V0cmUuDQo+ID4gPiArLy8NCj4gPiA+ICsjZGVmaW5lIEVGSV9NSUNST0NPREVfU1RP UkFHRV9UWVBFX0ZMQVNIX0dVSUQgXA0KPiA+ID4gKyAgeyBcDQo+ID4gPiArICAgIDB4MmNiYTAx YjMsIDB4ZDM5MSwgMHg0NTk4LCB7IDB4OGQsIDB4ODksIDB4YjcsIDB4ZmMsIDB4MzksIDB4MjIs DQo+ID4gMHhmZCwgMHg3MSB9IFwNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICtleHRlcm4g RUZJX0dVSUQgZ0Vka2lpTWljcm9jb2RlU3RvcmFnZVR5cGVGbGFzaEd1aWQ7DQo+ID4gPiArDQo+ ID4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIEFuIGFycmF5 IHdpdGggTWljcm9jb2RlQ291bnQgZWxlbWVudHMgdGhhdCBzdG9yZXMgdGhlIG9yaWdpbmFsDQo+ ID4gPiArICAvLyBtaWNyb2NvZGUgcGF0Y2ggYWRkcmVzcyBvbiBmbGFzaC4gVGhlIGFkZHJlc3Mg aXMgcGxhY2VkIGluIHNhbWUNCj4gPiA+ICsgIC8vIG9yZGVyIGFzIHRoZSBtaWNyb2NvZGUgcGF0 Y2hlcyBpbiBNaWNyb2NvZGVBZGRySW5NZW1vcnkuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgVUlO VDY0ICBNaWNyb2NvZGVBZGRyZXNzSW5GbGFzaFtdOw0KPiA+ID4gK30gRUZJX01JQ1JPQ09ERV9T VE9SQUdFX1RZUEVfRkxBU0hfQ09OVEVYVDsNCj4gPiA+ICsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ IGRpZmYgLS1naXQgYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Q a2cuZGVjDQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Q a2cuZGVjDQo+ID4gPiBpbmRleCAyMmViZjE5YzRlLi4zYzQ5ZmIyODljIDEwMDY0NA0KPiA+ID4g LS0tIGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxTaWxpY29uUGtnLmRlYw0K PiA+ID4gKysrIGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxTaWxpY29uUGtn LmRlYw0KPiA+ID4gQEAgLTMsNyArMyw3IEBADQo+ID4gPiAgIw0KPiA+ID4gICMgVGhpcyBwYWNr YWdlIHByb3ZpZGVzIGNvbW1vbiBvcGVuIHNvdXJjZSBJbnRlbCBzaWxpY29uIG1vZHVsZXMuDQo+ ID4gPiAgIw0KPiA+ID4gLSMgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOSwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAy MDE2IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g PiA+ICAjDQo+ID4gPiAgIyMNCj4gPiA+IEBAIC00OCw2ICs0OCwxMiBAQA0KPiA+ID4gICAgIyMg SE9CIEdVSUQgdG8gZ2V0IG1lbW9yeSBpbmZvcm1hdGlvbiBhZnRlciBNUkMgaXMgZG9uZS4gVGhl IGhvYiBkYXRhDQo+ID4gd2lsbCBiZSB1c2VkIHRvIHNldCB0aGUgUE1SIHJhbmdlcw0KPiA+ID4g ICAgZ1Z0ZFBtckluZm9EYXRhSG9iR3VpZCA9IHsweDZmYjYxNjQ1LCAweGYxNjgsIDB4NDZiZSwg eyAweDgwLCAweGVjLA0KPiA+IDB4YjUsIDB4MDIsIDB4MzgsIDB4NWUsIDB4ZTcsIDB4ZTcgfSB9 DQo+ID4gPg0KPiA+ID4gKyAgIyMgSW5jbHVkZS9HdWlkL01pY3JvY29kZVNoYWRvd0luZm9Ib2Iu aA0KPiA+ID4gKyAgZ0Vka2lpTWljcm9jb2RlU2hhZG93SW5mb0hvYkd1aWQgPSB7IDB4NjU4OTAz ZjksIDB4ZGE2NiwgMHg0NjBkLA0KPiA+IHsgMHg4YiwgMHhiMCwgMHg5ZCwgMHgyZCwgMHhkZiwg MHg2NSwgMHg0NCwgMHg1OSB9IH0NCj4gPiA+ICsNCj4gPiA+ICsgICMjIEluY2x1ZGUvR3VpZC9N aWNyb2NvZGVTaGFkb3dJbmZvSG9iLmgNCj4gPiA+ICsgIGdFZGtpaU1pY3JvY29kZVN0b3JhZ2VU eXBlRmxhc2hHdWlkID0geyAweDJjYmEwMWIzLCAweGQzOTEsIDB4NDU5OCwNCj4gPiB7IDB4OGQs IDB4ODksIDB4YjcsIDB4ZmMsIDB4MzksIDB4MjIsIDB4ZmQsIDB4NzEgfSB9DQo+ID4gPiArDQo+ ID4gPiAgW1BwaXNdDQo+ID4gPiAgICBnRWRraWlWVGRJbmZvUHBpR3VpZCA9IHsgMHg4YTU5ZmNi MywgMHhmMTkxLCAweDQwMGMsIHsgMHg5NywgMHg2NywgMHg2NywNCj4gPiAweGFmLCAweDJiLCAw eDI1LCAweDY4LCAweDRhIH0gfQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9TaWxpY29uL0lu dGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cuZHNjDQo+ID4gYi9TaWxpY29uL0lu dGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cuZHNjDQo+ID4gPiBpbmRleCAwYTY1 MDlkOGIzLi5mOTk1ODgzNjkxIDEwMDY0NA0KPiA+ID4gLS0tIGEvU2lsaWNvbi9JbnRlbC9JbnRl bFNpbGljb25Qa2cvSW50ZWxTaWxpY29uUGtnLmRzYw0KPiA+ID4gKysrIGIvU2lsaWNvbi9JbnRl bC9JbnRlbFNpbGljb25Qa2cvSW50ZWxTaWxpY29uUGtnLmRzYw0KPiA+ID4gQEAgLTEsNyArMSw3 IEBADQo+ID4gPiAgIyMgQGZpbGUNCj4gPiA+ICAjIFRoaXMgcGFja2FnZSBwcm92aWRlcyBjb21t b24gb3BlbiBzb3VyY2UgSW50ZWwgc2lsaWNvbiBtb2R1bGVzLg0KPiA+ID4gICMNCj4gPiA+IC0j IENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICAjDQo+ID4gPiAg IyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4g ICMNCj4gPiA+IEBAIC04NCw2ICs4NCw3IEBADQo+ID4gPg0KPiA+IEludGVsU2lsaWNvblBrZy9G ZWF0dXJlL1ZUZC9QbGF0Zm9ybVZUZEluZm9TYW1wbGVQZWkvUGxhdGZvcm1WVGRJbmZvU2ENCj4g PiBtcGxlUGVpLmluZg0KPiA+ID4NCj4gPiBJbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9DYXBzdWxl L01pY3JvY29kZVVwZGF0ZUR4ZS9NaWNyb2NvZGVVcGRhdGVEeGUNCj4gPiAuaW5mDQo+ID4gPg0K PiA+IEludGVsU2lsaWNvblBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9NaWNyb2NvZGVGbGFz aEFjY2Vzc0xpYk51bGwvTWljcm8NCj4gPiBjb2RlRmxhc2hBY2Nlc3NMaWJOdWxsLmluZg0KPiA+ ID4gKyAgSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRvd01pY3Jv Y29kZVBlaS5pbmYNCj4gPiA+DQo+ID4gSW50ZWxTaWxpY29uUGtnL0xpYnJhcnkvUGVpRHhlU21t Qm9vdE1lZGlhTGliL1BlaUZpcm13YXJlQm9vdE1lZGlhTGliDQo+ID4gLmluZg0KPiA+ID4NCj4g PiBJbnRlbFNpbGljb25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVkaWFMaWIvRHhlU21tRmly bXdhcmVCb290TWUNCj4gPiBkaWFMaWIuaW5mDQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IDIuMTku MS53aW5kb3dzLjENCg0K