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.1353.1583281189879981413 for ; Tue, 03 Mar 2020 16:19:49 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: liming.gao@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Mar 2020 16:19:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,511,1574150400"; d="scan'208";a="263401663" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga004.fm.intel.com with ESMTP; 03 Mar 2020 16:19:49 -0800 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 3 Mar 2020 16:19:48 -0800 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by SHSMSX601.ccr.corp.intel.com (10.109.6.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 4 Mar 2020 08:19:46 +0800 Received: from shsmsx606.ccr.corp.intel.com ([10.109.6.216]) by SHSMSX606.ccr.corp.intel.com ([10.109.6.216]) with mapi id 15.01.1713.004; Wed, 4 Mar 2020 08:19:46 +0800 From: "Liming Gao" To: "devel@edk2.groups.io" , "mhaeuser@outlook.de" , Andrew Fish CC: "Kinney, Michael D" , vit9696 , "Gao, Zhichao" , "Laszlo Ersek" Subject: Re: [edk2-devel] [PATCH v3 0/1] Add PCD to disable safe string constraint assertions Thread-Topic: [edk2-devel] [PATCH v3 0/1] Add PCD to disable safe string constraint assertions Thread-Index: AQHVwlkfmLuBf4WtME+y+6gCl+WrLqfdc1SAgAAESgCAAwDRAIAdakCAgBYYeACABlUnAIAAVWQAgAAKeYCAAFd1AIAAFAEAgAA6XgCAADEGAIAA3TSAgAGwOQCAALiygIAEKAyAgACuJQCAE3h+AIAA1CQA Date: Wed, 4 Mar 2020 00:19:46 +0000 Message-ID: <01abb2a1bb03412b91afd4e7495fa245@intel.com> References: <20200103171242.63839-1-vit9696@protonmail.com> <2719704F-6DB4-444F-97FE-DBF71D39B698@apple.com> <3D7EB7E9-9B94-40AD-A0E9-BFDEB787F6DA@apple.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [10.239.127.36] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWFydmluOg0KICBJIHdpbGwgYWRkIHRoaXMgZmVhdHVyZSBpbnRvIG5leHQgc3RhYmxlIHRhZyBw bGFubmluZy4gTGV0J3MgdHJ5IHRvIGZpbmlzaCBpdCBmb3IgbmV4dCBzdGFibGUgdGFnLiANCg0K VGhhbmtzDQpMaW1pbmcNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBNYXJ2aW4g SMOkdXNlcg0KU2VudDogMjAyMOW5tDPmnIg05pelIDM6MzkNClRvOiBBbmRyZXcgRmlzaCA8YWZp c2hAYXBwbGUuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCkNjOiBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyB2aXQ5Njk2IDx2aXQ5Njk2QHByb3Rvbm1h aWwuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgR2FvLCBaaGljaGFv IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29t Pg0KU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQgUENEIHRvIGRp c2FibGUgc2FmZSBzdHJpbmcgY29uc3RyYWludCBhc3NlcnRpb25zDQoNCkdvb2QgZGF5LA0KDQpV bmZvcnR1bmF0ZWx5LCB0aGlzIGRpc2N1c3Npb24gaGFzIGRpZWQgYWdhaW4uIFRoaXMgaXMgZmlu ZSBieSBtZSwgSSdtIGFsc28gZmluZSB3aXRoIHRoZSBhbHJlYWR5IHByb3Bvc2VkIHBhdGNoIGFu ZCBtb3N0bHkgc2hhcmVkIGRpZmZlcmVudCBhcHByb2FjaGVzIGJhc2VkIG9uIHRoZSB2YXN0bHkg ZGl2ZXJnaW5nIGZlZWRiYWNrLCBidXQgaXQgd29ya3MgZm9yIHVzIGVpdGhlciB3YXkuDQoNCkNh biB0aGUgcGF0Y2ggcGxlYXNlIGJlIHJldmlld2VkIGFuZCBhY2NlcHRlZCBmb3IgdGhlIG5leHQg c3RhYmxlIHRhZz8gDQpUaGFua3MhDQoNCkJlc3QgcmVnYXJkcywNCk1hcnZpbg0KDQpBbSAyMC4w Mi4yMDIwIHVtIDExOjE4IHNjaHJpZWIgTWFydmluIEjDpHVzZXI6DQo+IEhleSBBbmRyZXcsDQo+ IA0KPiBUaGFua3Mgb25jZSBhZ2FpbiBmb3IgeW91ciBjb21tZW50cywgbWluZSBhcmUgaW5saW5l Lg0KPiANCj4gQmVzdCByZWdhcmRzLA0KPiBNYXJ2aW4NCj4gDQo+IEFtIDIwLjAyLjIwMjAgdW0g MDA6NTUgc2NocmllYiBBbmRyZXcgRmlzaDoNCj4+DQo+Pg0KPj4+IE9uIEZlYiAxNywgMjAyMCwg YXQgMTI6MjYgQU0sIE1hcnZpbiBIw6R1c2VyIDxtaGFldXNlckBvdXRsb29rLmRlIA0KPj4+IDxt YWlsdG86bWhhZXVzZXJAb3V0bG9vay5kZT4+IHdyb3RlOg0KPj4+DQo+Pj4gR29vZCBkYXkgQW5k cmV3LA0KPj4+DQo+Pj4gRmlyc3Qgb2YgYWxsLCB0aGFuayB5b3UgdmVyeSBtdWNoIGZvciBwdXR0 aW5nIHRoaXMgYW1vdW50IG9mIHRob3VnaHQgDQo+Pj4gaW50byB0aGUgc2l0dWF0aW9uLiBJIGRl ZmluaXRlbHkgYWdyZWUgd2l0aCB0aGUgcHJvYmxlbSB5b3Ugc2VlLCBidXQgDQo+Pj4gSSBjb3Vs ZCBhbHNvIGxpdmUgd2l0aCBWaXRhbHkncyBwcm9wb3NhbC4gSG93ZXZlciwgSSB0aGluayB5b3Ug YXJlIA0KPj4+IG92ZXJjb21wbGljYXRpbmcgdGhlIHNpdHVhdGlvbiBhIGxpdHRsZS4gU28sIHdl IGRvIGFncmVlIHRoZSBjYWxsZXIgDQo+Pj4gbmVlZHMgY29udHJvbCBvZiB0aGUgYmVoYXZpb3Vy LCBob3dldmVyIHlvdXIgcHJvcG9zYWwgbmVlZHMgInN1cHBvcnQiDQo+Pj4gZnJvbSBib3RoIHRo ZSBjYWxsZXIgKGNob29zZSB0aGUgaGFuZGxlcikgYW5kIHRoZSBjYWxsZWUgKGNhbGwgdGhlDQo+ Pj4gaGFuZGxlcikgYW5kIGlzIG5laXRoZXIgdGhyZWFkLXNhZmUgbm9yIGV2ZW50LXNhZmUgYXMg Vml0YWx5IGFscmVhZHkgDQo+Pj4gcG9pbnRlZCBvdXQuIEZpeGluZyB0aGVzZSBwcm9ibGVtcyB3 b3VsZCBvbmx5IHdvcnNlbiB0aGUgY29tcGxleGl0eSANCj4+PiBzaXR1YXRpb24gaW4gbXkgb3Bp bmlvbi4NCj4+DQo+PiBXZWxsIEVGSSBkb2VzIG5vdCBoYXZlIFRocmVhZHMgYnV0IGl0IGRvZXMg aGF2ZSBFdmVudHMuIEkgYWdyZWUgaWYgYW4NCj4gDQo+IFNvcnJ5LCB3ZSB3ZXJlIHJlZmVyaW5n IHRvIHRoZSBVRUZJIE11bHRpLVByb2Nlc3NvciBzZXJ2aWNlcywgc28gDQo+IHRocmVhZHMgaW4g YSBwaHlzaWNhbCBzZW5zZS4gSSB0aGluayB2ZXJ5IHNpbWlsYXIgY29uY2VybnMgYXBwbHkgDQo+ IHJlZ2FyZGluZyB0aGVzZSBzZXJ2aWNlcyBhcyB3aXRoIHNvZnR3YXJlIG11bHRpdGhyZWFkaW5n IGluIHRoaXMgDQo+IGNvbnRleHQsIHBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZy4NCj4g DQo+PiBFdmVudCBoYW5kbGVyIGNoYW5nZXMgdGhlIGNvbnN0cmFpbnQgaGFuZGxlciBpdCB3b3Vs ZCBuZWVkIHRvIHJlc3RvcmUgDQo+PiBpdCBzbyBteSBwcm9wb3NhbCBpcyBtaXNzaW5nIGFuIEFQ SS4NCj4+DQo+PiBDT05TVFJBSU5UX0hBTkRMRVIgKg0KPj4gR2V0Q29uc3RyYWludEhhbmRsZXIg KA0KPj4gICDCoCBWT0lEDQo+PiAgIMKgICkNCj4+IHsNCj4+ICAgwqAgcmV0dXJuIGdBY3RpdmVD b25zdHJhaW50SGFuZGxlcjsNCj4+IH0NCj4+DQo+PiBZb3UgYW4gYWx3YXlzIHVzZSB0aGUgc3Rh bmRhcmQgRUZJDQo+Pg0KPj4gSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgYWxsIHRo ZSBFRkkgaW1hZ2VzDQo+PiAoZHJpdmVycy9hcHBsaWNhdGlvbnMpIGFyZSBzdGF0aWNhbGx5IGxp bmtlZCBhbmQgdGhleSBjYXJyeSBhIHVuaXF1ZSANCj4+IGluc3RhbmNlIG9mIHRoZSBEZWJ1ZyAo b3IgbmV3IENvbnN0cmFpbnQpIGxpYi4gU28gaW4geW91ciBkcml2ZXIgb3IgDQo+PiBBcHAgaXMg dmVyeSBzZWxmIGNvbnRhaW5lZC4gQWxzbyBhIGxvdCBvZiB0aGUgZXZlbnRzIGFyZSBwaGFzZSAN Cj4+IHJlbGF0ZWQgY2FsbGJhY2tzLCBhbmQgc2luY2UgdGhlcmUgYXJlIG5vIHRocmVhZHMgeW91 ciBkcml2ZXJzIG1haW4gDQo+PiB0aHJlYWQgaXMgb25seSByZWFsbHkgcnVubmluZyB3aGVuIHlv dXIgZHJpdmVyLCBvciBhcHAsIGRpc3BhdGNoZXMuIEEgDQo+PiBsb3Qgb2YgdGhlIGNhbGxiYWNr cyBhcmUgdmlhIHByb3RvY29scyB5b3VyIGRyaXZlciBwdWJsaXNoZXMsIGJ1dCANCj4+IHRoZXkg aGF2ZSBzdHJpY3QgVFBMIHJ1bGVzIHNvIHlvdSBjYW4gcHJldmVudCByZWVudHJhbmN5IGluIGdl bmVyYWwuIA0KPj4gU28gdGhlcmUgaXMgYSBsb3QgbW9yZSBkZXRlcm1pbmlzbSBpbiBFRkkgdnMu IGdlbmVyaWMgdGhyZWFkZWQgY29kaW5nLg0KPiANCj4gVGhpcyBpcyB0cnVlLCBidXQgeWV0IGFs bCBlZGdlLWNhc2VzIHNob3VsZCBiZSBjb3ZlcmVkIChldmVudCANCj4gImludGVycnVwdGlvbiIs IGFjdHVhbCAocHJvY2Vzc29yKSBpbnRlcnJ1cHRzLCBNdWx0aS1Qcm9jZXNzb3IgDQo+IGV4ZWN1 dGlvbiksIHNvIGRldmVsb3BlcnMgZG8gbm90IHJ1biBpbnRvIHVuZXhwZWN0ZWQgKHNlZW1pbmds eSkgDQo+IHVuZGV0ZXJtaW5pc3RpYyBiZWhhdmlvdXIuIEhvd2V2ZXIsIEkgYWdyZWUgaXQgaXMg ZWFzaWVyIHRvIGVuc3VyZSBmb3IgDQo+IHNvbWV0aGluZyBsaWtlIFVFRkkgdGhhbiBmb3IgYSBm dWxsLWZsZWRnZWQgT1Mgb2YgY291cnNlLg0KPiANCj4+DQo+Pj4NCj4+PiBEaXZlcmdpbmcgZnJv bSBib3RoIG9mIHlvdXIgY29uY2VwdHMgZW50aXJlbHkgYW5kIGtlZXBpbmcgaXQgdmVyeSANCj4+ PiBzaW1wbGUsIHdoYXQga2VlcHMgdXMgZnJvbSBzaW1wbHkgQVNTRVJUaW5nIGJhc2VkIG9uIHJl dHVybiB2YWx1ZT8gDQo+Pj4gV2UgY291bGQgaW50cm9kdWNlIGEgQ09OU1RSQUlOVF9BU1NFUlQg b3Igc2ltaWxhciwgYnV0IGl0IHdvdWxkIGJlIA0KPj4+IGNvbXBsZXRlbHkgZGlmZmVyZW50IGZy b20gVml0YWx5J3MgcHJvcG9zYWwuIEl0IHdvdWxkIGJlIGEgY2FsbGVyIA0KPj4+IG1hY3JvIHRv IEFTU0VSVCBiYXNlZCBvbiBhIHByZS1kZWZpbmVkIGxpc3Qgb2YgcmV0dXJuIHN0YXR1c2VzLg0K Pj4+IFRvIGFjaGlldmUgdGhpcywgd2Ugd291bGQgb3JkZXIgYWxsIHN0YXR1c2VzIGJ5IHR5cGVz IChjbGFzc2VzKS4gQXQgDQo+Pj4gdGhlIG1vbWVudCwgSSBjYW4gb25seSB0aGluayBvZiB0d286 ICJlbnZpcm9ubWVudGFsIiBhbmQgDQo+Pj4gImNvbnN0cmFpbnQiLiBGb3IgZXhhbXBsZSwgIk91 dCBPZiBSZXNvdXJjZXMiIHdvdWxkIGJlIGVudmlyb25tZW50YWwgDQo+Pj4gYW5kICJJbnZhbGlk IFBhcmFtZXRlciIgd291bGQgYmUgY29uc3RyYWludC4gV2UgY291bGQgZGVmaW5lIA0KPj4+IGVu dmlyb25tZW50IHN0YXR1c2VzIGV4cGxpY2l0bHkgKGFzIGl0IGlzIGxlc3MgbGlrZWx5IG5ldyAN Cj4+PiBlbnZpcm9ubWVudCBzdGF0dXNlcyBhcmUNCj4+PiBpbnRyb2R1Y2VkKSBhbmQgZGVmaW5l IGNvbnN0cmFpbnQgc3RhdHVzZXMgYXMgIm5vdCBlbnZpcm9ubWVudGFsIiANCj4+PiAodG8gc2ls ZW50bHkgc3VwcG9ydCBuZXcgY29uc3RyYWludCBzdGF0dXNlcywgaG93ZXZlciBvZiBjb3Vyc2Ug aXQgDQo+Pj4gaXMgYSBsaXR0bGUgZXJyb3ItcHJvbmUgd2l0aCBmb3J3YXJkcy1jb21wYXRpYmls aXR5KS4gQXMgYSBib251cywgaXQgDQo+Pj4gZm9yY2VzIGRldmVsb3BlcnMgdG8gdXNlIHRydWx5 IGFwcHJvcGlhdGUgZXJyb3IgY29kZXMgYW5kIGNvcnJlY3RseSANCj4+PiBwcm9wYWdhdGUgdGhl bSBmcm9tIGNhbGxlZXMgZm9yIHRoaXMgdG8gd29yay4gOikgVGhpcyBzb2x1dGlvbiB3b3VsZCAN Cj4+PiBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZSBpbiBhIGNvbXBpbGF0aW9uIHNlbnNlIGFzIGl0 IGNhbiBzaW1wbHkgYmUgYSANCj4+PiBuZXcgbWFjcm8sIGhvd2V2ZXIgZm9yIGl0cyBwb3NzaWJs ZSBjb21wbGV4aXR5IChzd2l0Y2gNCj4+PiBjYXNlcykgSSBtaWdodCBhY3R1YWxseSBwcmVmZXIg YSBmdW5jdGlvbi4gQnV0IGl0IHdvdWxkIG5vdCBiZSANCj4+PiBiYWNrd2FyZHMtY29tcGF0aWJs ZSB3aXRoIHRoZSBjdXJyZW50IGZ1bmN0aW9uYWxpdHksIHdoaWNoIG5vbmUgb2YgDQo+Pj4gdGhl ICJjYWxsZXItYmFzZWQiIGNvbmNlcHRzIGNhbiBiZSBhbnl3YXkgKHRoZSBjYWxsZXIgbmVlZHMg ZXhwbGljaXQgY29kZSkuDQo+Pj4NCj4+DQo+PiBJdCBpcyBhbiBpbnRlcmVzdGluZyBpZGVhIHRv IGFkZCBncmFudWxhcml0eSwgYnV0IGF0IHRoZSBlbmQgb2YgdGhlIA0KPj4ga25vd2xlZGdlIG9m IHRoZSBjb3JyZWN0IGJlaGF2aW9yIG9mIHRoZSBsb3dlciBsZXZlbCBsaWJyYXJ5IGNvZGUgDQo+ PiByZWFsbHkgbGl2ZXMgaW4gY29kZSB0aGF0IGNhbGxzIHRoaXMuIEkgd2lsbCBhZG1pdCBJIGNh biBzZWUgc29tZSANCj4+IHZhbHVlIHRvIG1ha2luZ8KgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS IGRpZmZlcmVudCB0aGFuwqBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTC4NCj4gDQo+IFNvIGZhciwg SSBwcmVmZXIgdGhpcyBpZGVhIGFzIHRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgZnVuY3Rp b24gDQo+IGNvbnRyYWN0cyBhcmUgd2VsbC1kZXNpZ25lZCAoaS5lLiByZWZsZWN0IGVudmlyb25t ZW50YWwgdnMgY29uc3RyYWludCANCj4gZXJyb3JzIGJ5IHVzaW5nIHNlbnNpY2FsIHJldHVybiB2 YWx1ZXMpLg0KPiANCj4+DQo+PiBJIGtpbmQgb2Ygd2VudCBkb3duIHRoZSBDMTEgcGF0aCAodGhh bmtzIGZvciBtZW50aW9uaW5nIHRoZSBldmVudCANCj4+IGlzc3VlKSBidXQgdGhlcmUgYXJlIG90 aGVyIHdheXMgdG8gZW1wb3dlciB0aGUgY2FsbGVyLg0KPiANCj4gSXQncyBkZWZpbml0ZWx5IGFs d2F5cyBhIGdvb2QgaWRlYSB0byBzdGljayB0byBzdGFuZGFyZHMgYW5kIA0KPiBjb252ZW50aW9u cy4gSXQgYXBwZWFycyBteSBwcm9wb3NhbCBpcyBub3QgY29udmVudGlvbmFsIGF0IGFsbC4gDQo+ IEhvd2V2ZXIsIEkgYWxzbyBiZWxpZXZlIHRoZXJlIHNvbWV0aW1lcyBpcyBhIG1vcmUgcHJhZ21h dGljIGFwcHJvYWNoIA0KPiB0byB0aGluZ3Mgd2l0aG91dCBpbXBvc2luZyBzaWduaWZpY2FudCBk aXNhZHZhbnRhZ2VzLCBlc3BlY2lhbGx5IGJ5IA0KPiBsaW1pdGluZyB0aGUgc2NvcGUuDQo+IA0K PiBUbyBiZSBob25lc3QsIEknbSBub3cgaW50ZXJlc3RlZCBmb3Igd2hpY2ggY2FzZXMgdGhlIEMx MSBwYXRoIGlzIA0KPiBhZHZhbnRhZ291cyBvdmVyIG15IGFwcHJvYWNoLCBleGNlcHQgdGhhdCBz ZXR0aW5nIHRoZSBjb25zdHJhaW50IA0KPiBoYW5kbGVyIGlzIGEgb25lLXRpbWUgdGhpbmcgaWYg aXQgcmVtYWlucyBjb25zaXN0ZW50IHRocm91Z2hvdXQgDQo+IGV4ZWN1dGlvbi4gSSdkIGltYWdp bmUgZm9yIHNvbWUgbW9yZSBjb21wbGV4IGhhbmRsaW5nIGxvZ2ljIEkgY2Fubm90IA0KPiB0aGlu ayBvZiBhbiBleGFtcGxlIG9mIChhbGwgd2UgcmVhbGx5IHdhbnQgdG8gZG8gaXMgQVNTRVJUIA0K PiBjb25kaXRpb25hbGx5IGFmdGVyYWxsKSwgYW5kIEkgaG9wZSB0aGlzIGlzIG5vdCBzb21ldGhp bmcgZWRrMiB3b3VsZCANCj4gZXZlciBydW4gaW50byAtIGtlZXAgaXQgc2ltcGxlIGluIG15IG9w aW5pb24uDQo+IA0KPj4NCj4+IFdlIGNvdWxkIGxldCB0aGUgY2FsbGVyIGRlY2lkZSB0aGUgYmVo YXZpb3IuIFRoYXQgaW1wbGllcyBwYXNzaW5nIA0KPj4gQ0hFQ0tfREVGQVVMVCAoUENEKSwgQ0hF Q0tfQVNTRVJULCBvciBDSEVDS19OVUxMLg0KPj4NCj4+IFRoZW4ga2VlcCBiYWNrd2FyZCBjb21w YXRpYmlsaXR5Lg0KPj4gI2RlZmluZSBTdHJDcHlTKERlc3RpbmF0aW9uLERlc3RNYXgsU291cmNl KVN0ckNwdVNDKERlc3RpbmF0aW9uLA0KPj4gRGVzdE1heCwgU291cmNlLCBDSEVDS19ERUZBVUxU KQ0KPj4NCj4+IEJ1dCB0aGF0IHNlZW1zIGxpa2UgYSBsb3Qgb2YgdGhyYXNoIHRvIHRoZSBCYXNl TGliIGFuZCBhIGxvdCBvZiBuZXcgDQo+PiBtYWdpYyB0byB0ZWFjaCBkZXZlbG9wZXJzLg0KPiAN Cj4gRnVsbHkgYWdyZWVkIHdpdGggdGhlIGxhc3Qgc2VudGVuY2UuIFRoYXQgd2FzIG9uZSBvZiB0 aGUgYXBwcm9hY2hlcyBJIA0KPiBtZW50aW9uZWQgYmVmb3JlIG15IHByb3Bvc2FsLCBidXQgSSBp bmNsdWRlZCBpdCBvbmx5IGZvciBjb21wbGV0ZW5lc3MnDQo+IHNha2Ugc28gd2UgaGF2ZSBhIGZ1 bGwgb3ZlcnZpZXcuIFRoaXMgcmVxdWlyZXMgcHJvdG90eXBlIGFkYXB0aW9uIGZvciANCj4gbGl0 ZXJhbGx5IGV2ZXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGJlIHVzZWQgaW4gc3VjaCBhIHdheSAod2hp Y2ggc2NvcGVzIA0KPiBiZXlvbmQganVzdCBCYXNlTGliKSwgdWdseSBtYWNyb3MgYW5kIG1vcmUu IFBsZWFzZSBkb24ndCBkbyB0aGF0LiA6KQ0KPiANCj4+DQo+PiBJIHdvdWxkIGd1ZXNzIHRoYXQg dGhlIG1vc3QgY29tbW9uIHVzYWdlIG9mIG15IGxpYnJhcnkgd291bGQgYmUgdG8gDQo+PiB0dXJu IENvbnN0cmFpbnQgQ2hlY2tpbmcgb2ZmIGluIHRoZSBlbnRpcmUgZHJpdmVyIG9yIGFwcCBhbmQg dGhlbiANCj4+IGhhbmRsZSB0aGUgZXJyb3JzIG1hbnVhbGx5Lg0KPiANCj4gSSdtIGFmcmFpZCB0 aGF0J3Mgd2hhdCBtb3N0IHBsYXRmb3JtcyB3aWxsIGVuZCB1cCB3aXRoLiBPdXIgbWFpbiANCj4g Y29uY2VybiB3YXMgd2UgbWF5IG5vdCBhbGxvdyBzdWNoIGNvbnN0cmFpbnQgdmlvbGF0aW9ucyB0 byBBU1NFUlQsIA0KPiB0aGF0IGlzIG91ciBtYWluIG9iamVjdGl2ZS4gSG93ZXZlciwgaWYgaXQg Y2FuIGJlIG1hZGUgYWR2YW50YWdlb3VzIHRvIA0KPiBmdXR1cmUgY29kaW5nIHByYWN0aWNlLCBp dCB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBkZWNlbnQgc29sdXRpb24gZm9yIA0KPiB0aGUgY2Fs bGVyIHRvIGhhdmUgc29tZSBmcmVlZG9tLiBNb3JlIGFib3V0IHRoYXQgYmVsb3cuDQo+IA0KPj4N Cj4+IE9uIGRyaXZlci9hcHAgZW50cnkgZG86DQo+Pg0KPj4gU2V0Q29uc3RyYWludEhhbmRsZXIg KElnbm9yZUNvbnN0cmFpbnRIYW5kbGVyKTsNCj4+DQo+PiBUaGVuIGhhbmRsZSB0aGUgZXJyb3Jz IHlvdSBjYXJlIGFib3V0Lg0KPj4NCj4+IFN0YXR1cyA9IFN0ckNweVMgKERlc3RpbmF0aW9uLERl c3RNYXgsU291cmNlKTsgaWYgKEVGSV9FUlJPUiANCj4+IChTdGF0dXMpKSB7IEFTU0VSVF9FRklf RVJST1IgKFN0YXR1cyk7IHJldHVybiBTdGF0dXM7IH0NCj4+DQo+PiBvcg0KPj4NCj4+IFN0YXR1 cyA9IFN0ckNweVMgKERlc3RpbmF0aW9uLERlc3RNYXgsU291cmNlKTsgaWYgKFN0YXR1cyA9PSAN Cj4+IFJFVFVSTl9JTlZBTElEX1BBUkFNRVRFUikgeyBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMp OyByZXR1cm4gU3RhdHVzOyANCj4+IH0NCj4+DQo+PiBBdCB0aGUgZW5kIG9mIHRoZSBkYXkgSSd2 ZSBjb2RlIG15IGRyaXZlciBhbmQgSSBrbm93IHRoZSBydWxlcyBJIA0KPj4gY29kZWQgdG8gYW5k IEkgd2FudCBwcmVkaWN0YWJsZSBiZWhhdmlvci4NCj4gDQo+IFllcywgYWdyZWVkLiBXZSB3YW50 IHByZWRpY3RhYmxlIGJlaGF2aW91ciBvZiAibm90IEFTU0VSVGluZyIgZm9yIA0KPiB1bnRydXN0 ZWQgaW5wdXQsIGJlY2F1c2Ugd2UgKmtub3cqIGl0IGlzIHVudHJ1c3RlZCBhbmQgdGhlIGZ1bmN0 aW9uDQo+ICpjYW4qIChhbmQgc2hvdWxkIGJlIGFibGUgdG8pIGhhbmRsZSBpdCAtIGl0IGlzIHNp bXBseSBub3QgYSBwcmVjb25kaXRpb24uDQo+IA0KPj4NCj4+IEkgY2FuIHNlZSBhIFNpIHZlbmRv ciBkZXZlbG9waW5nIHdpdGggQVNTRVJUIENvbnN0cmFpbnQgb2ZmIGFuZCB0aGVuIA0KPj4gd2hl biB0aGUgY3VzdG9tZXIgdHVybnMgaXQgb24gc3R1ZmYgc3RhcnRzIHJhbmRvbWx5IGJyZWFraW5n Lg0KPiANCj4gQSBsb3Qgb2YgU2kgYW5kIGNvcmUgKER4ZUNvcmUsIFBlaUNvcmUsIHJlbGF0ZWQg bGlicmFyaWVzKSBjb2RlIHNlZW1zIA0KPiB0byBBU1NFUlQgKGZyZXF1ZW50bHkgKm9ubHkqIEFT U0VSVCB3aXRoIG5vIGFjdHVhbCBoYW5kbGluZywgDQo+IGVzcGVjaWFsbHkgZm9yDQo+IEFsbG9j YXRlUG9vbCgpID09IE5VTEwpIHdoZW4gdGhlcmUgYXJlIHZhbGlkIGVycm9yIHNpdHVhdGlvbnMg DQo+IHBvc3NpYmxlLCBzbyBJIGhvcGUgdGhpcyBhcHByb2FjaCB3b3VsZCBiZSBhIGhhbmR5IHRv b2wgdG8gc2F0aXNmeSANCj4gdGhlaXIgbmVlZHMgd2l0aG91dCB0aGlzIGFic29sdXRlbHkgdGVy cmlibGUgcHJhY3RpY2UuIDopDQo+IA0KPiANCj4gDQo+IEkgdGhpbmsgSSB1bmRlcnN0b29kIGFs bCB5b3VyIGNvbW1lbnQgaW5kaXZpZHVhbGx5LCBidXQgSSdtIGFmcmFpZCBJJ20gDQo+IG5vdCBz dXJlIHdoYXQgeW91ciBzdWdnZXN0ZWQgc29sdXRpb24gaXMgcmlnaHQgbm93LiBZb3UgY29tbWVu dGVkIA0KPiBzZW1pLXBvc2l0aXZlbHkgb24gbXkgcHJvcG9zYWwsIHlvdSBkaWQgbm90IHJldm9r ZSB5b3VyIEMxMSBwYXRoLCBhbmQgDQo+IHlvdSBmdXJ0aGVybW9yZSBpbnRyb2R1Y2VkIENIRUNL XyogLSB0aGlzIGlzIGJyYWluc3Rvcm1pbmcsIGFuZCBJIA0KPiB0aGluayBpdCdzIGEgZ3JlYXQg dGhpbmcsIGJ1dCBJJ20gc2ltcGx5IG5vdCBzdXJlIHdoYXQgeW91ciBleGFjdCBnb2FsIA0KPiBv ciBwcmVmZXJlZCByb3V0ZSBpcyByaWdodCBub3cuDQo+IA0KPiBNeSBwcm9wb3NhbCBpcyBhIGJp dCB1bmNvbnZlbnRpb25hbCBhbmQgSSBhZ3JlZSBpdCBzb3VuZHMgaGFja3ksIGJ1dCANCj4gc28g ZmFyIEknbSBub3QgY29udmluY2VkIGl0IHdvdWxkIGJlIGJhZCBwcmFjdGljZSBhdCBhbGwuIEl0 IGJvaWxzIA0KPiBkb3duIHRvIHNlbnNlZnVsbHkgdXNpbmcgdGhlIGluZm9ybWF0aW9uIGEgZnVu Y3Rpb24gcmV0dXJucy4gVGhpcyANCj4gcmVxdWlyZXMgbm90aGluZyBidXQgdGhlIGZ1bmN0aW9u IHRvIHJldHVybiBzZW5zaWNhbCBpbmZvcm1hdGlvbiwgDQo+IHdoaWNoIGV2ZXJ5IGZ1bmN0aW9u IHNob3VsZCBhbnl3YXkuDQo+IA0KPiBZb3VyIHByb3Bvc2FsIGlzIGNsb3NlIHRvIHRoZSBDIHN0 YW5kYXJkLCBhbmQgdGhhdCBpcyBhIGdvb2QgdGhpbmcgDQo+IGZpcnN0IG9mIGFsbC4gSG93ZXZl ciwgd2l0aCB0aGUgcmVzdCBvZiBlZGsyIG5vdCBiZWluZyB2ZXJ5IGNvbXBsaWFudCwgDQo+IEkg ZG9uJ3QgdGhpbmsgaXQncyBhbiBpbnN0YW50IHdpbiBhcyBpbiAid2UganVzdCBjb21wbHkgdG8g c3RhbmRhcmRzIiANCj4gYmVjYXVzZSB0aGlzIGNob2ljZSBkb2VzIG5vdCBzdWRkZW5seSBtYWtl IHBvcnRpbmcgZXhpc3RpbmcgY29kZSANCj4gc2lnbmlmaWNhbnRseSBlYXNpZXIgY29tcGFyZWQg dG8gdGhlIHRvdGFsIGxhY2sgb2Ygc3RhbmRhcmQgbGlicmFyeSANCj4gc3VwcG9ydCBmb3IgYW55 dGhpbmcgYnV0IFNoZWxsIGFwcHMuDQo+IFByYWdtYXRpY2FsbHksIEkgdGhpbmsgaXQgc29sdmVz IHRoZSBzYW1lIHByb2JsZW0gZXF1YWxseSB3ZWxsLCBidXQgYXQgDQo+IGEgaGlnaGVyIGNvc3Qg KGVuc3VyaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzYWZlIGFuZCwgc3RyaWN0bHkgDQo+IHNw ZWFraW5nLCBhbiBldmVyLXNvLXNsaWdodCBydW50aW1lIG92ZXJoZWFkKS4NCj4gDQo+Pg0KPj4+ IEhvd2V2ZXIsIENPTlNUUkFJTlRfQVNTRVJUIG1pZ2h0IGFjdHVhbGx5IGJlIHRvbyBzcGVjaWZp Yy4gTWF5YmUgd2UgDQo+Pj4gd2FudCBzb21ldGhpbmcgbGlrZSAiQVNTRVJUX1JFVFVSTiIgYW5k IGhhdmUgdGhlIGNsYXNzZXMgIkFTU0VSVF9DT05TVFJBSU5UIg0KPj4+IGFuZCAiQVNTRVJUX0VO VklST05NRU5UIiAoYml0ZmllbGQsIGxpa2Ugd2l0aCBERUJVRykuIFRoZSByZWFzb24gZm9yIA0K Pj4+IHRoaXMgaXMgZW1iZWRkZWQgc3lzdGVtcyB3aGVyZSB0aGUgZW52aXJvbm1lbnQgaXMgdHJ1 c3RlZC9rbm93biBhbmQgDQo+Pj4gdGhlIGZpcm13YXJlIGlzIHN1cHBvc2VkIHRvIGJlIHdlbGwt bWF0Y2hlZC4gVGhpbmsgb2YgYSBTb0Mgd2l0aCANCj4+PiBzb2xkZXJlZCBSQU0gLSB0aGUgZmly bXdhcmUgY2FuIHZlcnkgd2VsbCBtYWtlIGFzc3VtcHRpb24gYWJvdXQgDQo+Pj4gbWVtb3J5IGNh cGFjaXR5IChjb25zaWRlcmluZyB1c2FnZSBhY3Jvc3MgYWxsIG1vZHVsZXMgaW4gdGhlIHdvcnN0 IA0KPj4+IGNhc2UpIGFuZCBtaWdodCBhY3R1YWxseSB3YW50IEFTU0VSVHMgb24gc29tZXRoaW5n IGxpa2UgIk91dCBPZiANCj4+PiBSZXNvdXJjZXMiIGJlY2F1c2UgaXQncyBzdXBwb3NlZCB0byBi ZSBpbXBvc3NpYmxlIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoaXMgc3BlY2lmaWMgZGVzaWduLg0K Pj4+IEl0J3MgcG9zc2libGUgdGhpcyB3b3VsZCBuZWVkIGEgbmV3IFBDRCdzIGludm9sdmVtZW50 LCBmb3IgZXhhbXBsZSANCj4+PiB0byB0ZWxsIER4ZUNvcmUgd2hldGhlciB0byBBU1NFUlQgb24g ZW52aXJvbm1lbnRhbCBhc3BlY3RzIHRvby4gDQo+Pj4gVGhlcmUgY291bGQgYmUgYW4gYXJndW1l bnQtbGVzcyBtYWNybyB0aGF0IHVzZXMgUENEIGNvbmZpZyBhcyBiYXNlLCANCj4+PiBhbmQgYW4g YXJndW1lbnQtYmFzZWQgbWFjcm8gdGhhdCB1c2VzIG9ubHkgdGhlIHBhcmFtZXRlcnMuIE9mIGNv dXJzZSANCj4+PiB0aGlzIGNhbm5vdCBjb3ZlciBldmVyeW9uZSdzIHZlcnkgc3BlY2lmaWMgcHJl ZmVyZW5jZXMgYXMgaXQncyBhIA0KPj4+IHBlci1tb2R1bGUgc3dpdGNoLCBidXQgaXQncyB0aGUg YmVzdCBJIGNhbiB0aGluayBvZiByaWdodCBub3cuDQo+Pj4NCj4+PiBTb21ldGhpbmcgYSBiaXQg dW5yZWxhdGVkIG5vdywgYnV0IGl0IHdvdWxkIG1ha2UgdGhpcyBlYXNpZXIuIFlvdSANCj4+PiBt ZW50aW9uZWQgUGVDb2ZmTGliIGFzIGV4YW1wbGUsIGFuZCBJIHRoaW5rIGl0J3MgYSBnb29kIG9u ZSwgaG93ZXZlciANCj4+PiBpdCBoYXMgaXRzIG93biByZXR1cm4gc3RhdHVzIHR5cGUgd2l0aGlu IHRoZSBjb250ZXh0WzFdIHdoaWNoIEkgd2lsbCANCj4+PiBtb3N0IGRlZmluaXRlbHkgYmUgZ2V0 dGluZyByaWQgb2YgYXMgcGFydCBvZiBteSB1cGNvbWluZyAoaW4gdGhlIA0KPj4+IGZhci1pc2gg ZnV0dXJlIDopICkgUkZDLiBDb3VsZCB3ZSBleHBhbmQgUkVUVVJOX1NUQVRVUyB0byBoYXZlICh2 ZXJ5IA0KPj4+IGhpZ2g/KSByZXNlcnZlZCB2YWx1ZXMgZm9yIGNhbGxlci1kZWZpbmVkIGVycm9y IGNvZGVzIHRvIGhhdmUgYWxsIA0KPj4+IFJFVFVSTl9TVEFUVVMgbWFjcm9zIGFwcGx5IHRvIHRo b3NlIHNwZWNpYWwgcmV0dXJuIHZhbHVlcyB0b28/IFdlJ2QgDQo+Pj4gbmVlZCB0byBkZWZpbmUg dGhlbSBjYXRlZ29yaWNhbGx5IGFzICJjb25zdHJhaW50IHN0YXR1cyIsIGJ1dCBJIA0KPj4+IGRv bid0IHNlZSBob3cgYSBsaWJyYXJ5IHdvdWxkIGRlY2xhcmUgYSBuZXcgZW52aXJvbm1lbnQgc3Rh dHVzIGFueXdheS4NCj4+Pg0KPj4+IFJlZ2FyZGluZyBNZGVQa2dDb21wYXRhYmlsaXR5LmRzYy5p bmMsIEkgdGhpbmsgb25lIGNhbiBvdmVycmlkZSANCj4+PiBsaWJyYXJ5IGNsYXNzZXMgZnJvbSB0 aGUgaW5jIGJ5IGRlY2xhcmluZyB0aGVtIGFmdGVyIHRoZSAhaW5jbHVkZSANCj4+PiBzdGF0ZW1l bnQsIHBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZy4gSWYgc28sIEkgc3Ryb25nbHkgYWdy ZWUgDQo+Pj4gYW5kIHRoaW5rIGl0IHNob3VsZCBiZSB0aGUgY2FzZSBmb3IgYWxsIHBhY2thZ2Vz LCBzbyBvbmUgb25seSANCj4+PiBvdmVycmlkZXMgdGhlIGRlZmF1bHRzIHdoZW4gc29tZXRoaW5n IHNwZWNpZmljIChkZWJ1Z2dpbmcsIA0KPj4+IHBlcmZvcm1hbmNlLW9wdGltaXplZCB2ZXJzaW9u cywgLi4uKSBpcyByZXF1aXJlZCAtIGVhc2llciB0byByZWFkLCANCj4+PiBlYXNpZXIgdG8gbWFp bnRhaW4uIFRoZSBjb250ZW50IGlzIG5lZWRlZC90aGVyZSBhbnl3YXkgYXMgdGhlIA0KPj4+IGxp YnJhcmllcyBhcmUgZGVjbGFyZWQgaW4gdGhlIHBhY2thZ2UncyBvd24gRFNDLg0KPj4+DQo+Pg0K Pj4gWWVzIGl0IHRoZSBuZXcgLmluYyBEU0MgZmlsZSBjb3VsZCBiZSBvdmVycmlkZGVuIGJ5IHRo ZSBwbGF0Zm9ybSBEU0MgDQo+PiB0aGF0IGluY2x1ZGVzIGl0Lg0KPj4NCj4+IEkgdGhpbmsgdGhp cyBpcyBhIG1vcmUgZ2VuZXJhbCBpZGVhIHRoYW4gc29tZXRoaW5nIGZvciB0aGlzIGdpdmVuIHBh dGNoLg0KPj4gSXQgaXMgc29tZXRoaW5nIHdlIGNvdWxkIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZXZl cnkgc3RhYmxlIHRhZyBvciBzbywgDQo+PiBidXQgSSBndWVzcyBzb21lb25lIGhhcyB0byBnbyAx c3QgOikuIEl0IHdvdWxkIG1ha2UgaXQgZWFzaWVyIG9uIA0KPj4gcGxhdGZvcm1zIHdoZW4gdGhl eSB1cGRhdGUgdGhlIGVkazIgdmVyc2lvbi4NCj4gDQo+IEFncmVlZC4NCj4gDQo+Pg0KPj4NCj4+ DQo+Pg0KPj4+IEl0IHdvdWxkIGJlIG5pY2UgaWYgeW91IGhhZCBjb21tZW50cyByZWdhcmRpbmcg ZXZlcnkgYXNwZWN0IEkganVzdCANCj4+PiBtZW50aW9uZWQsIGl0IHdhcyBqdXN0IHNvbWV0aGlu ZyBjb21pbmcgdG8gbXkgbWluZCB0aGlzIG1vcm5pbmcuIA0KPj4+IFRoYW5rcyBmb3IgdGhlIGlu cHV0IHNvIGZhciwgaXQncyBuaWNlIHRvIHNlZSBzb21lIG1vdmVtZW50IG5vdyENCj4+Pg0KPj4N Cj4+IFNvcnJ5IGZvciB0aGUgZGVsYXkNCj4gDQo+IFN1cmUsIHRoYW5rcyBmb3IgdGFraW5nIHRp bWUgdG8gcmVzcG9uZCENCj4gDQo+Pg0KPj4gVGhhbmtzLA0KPj4NCj4+IEFuZHJldyBGaXNoDQo+ Pg0KPj4+IEJlc3QgcmVnYXJkcywNCj4+PiBNYXJ2aW4NCj4+Pg0KPj4+IFsxXQ0KPj4+IGh0dHBz Oi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL2YxZDc4YzQ4OWEzOTk3MWI1YWFjNWQy ZmM4YTM5DQo+Pj4gYmZhOTI1YzNjNWQvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9QZUNvZmZMaWIu aCNMMjAtTDMxDQo+Pj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvZjFk NzhjNDg5YTM5OTcxYjVhYWM1ZDJmYzhhMzkNCj4+PiBiZmE5MjVjM2M1ZC9NZGVQa2cvSW5jbHVk ZS9MaWJyYXJ5L1BlQ29mZkxpYi5oI0wxNTkNCj4+Pg0KPj4+IEFtIDE2LjAyLjIwMjAgdW0gMjI6 MjUgc2NocmllYiBBbmRyZXcgRmlzaCB2aWEgR3JvdXBzLklvOg0KPj4+PiBNaWtlLA0KPj4+Pg0K Pj4+PiBTb3JyeSBJIGRvbid0IHRoaW5rIEkgdG90YWxseSB1bmRlcnN0b29kIHdoYXQgZmVsdCB3 cm9uZyB0byBtZSwgc28gDQo+Pj4+IEkgZGlkIGEgYmFkIGpvYiBleHBsYWluaW5nIG15IGNvbmNl cm5zLiBBbHNvIEkgZG9uJ3QgdGhpbmsgSSB3YXMgDQo+Pj4+IHRoaW5raW5nIGVub3VnaCBpbiB0 aGUgY29udGV4dCBvZiB0aGUgQzExIFN0ZExpYi4NCj4+Pj4NCj4+Pj4gSSB0aGluayBteSBjb25j ZXJuIGlzIHN0aWxsIHRoZSBnbG9iYWwgc2NvcGUgb2YgdGhlIGNvbnN0cmFpbnQsIA0KPj4+PiBl dmVuIGlmIHdlIHR1bmUgaXQgcGVyIG1vZHVsZS4gRm9yIGV4YW1wbGUgdGhlIERYRSBDb3JlIGNh biANCj4+Pj4gaW50ZXJhY3Qgd2l0aCBQRS9DT0ZGIGltYWdlcyBhbmQgb3RoZXIgZGF0YSB0aGF0 IGNvdWxkIGhhdmUgDQo+Pj4+IGluZGlyZWN0bHkgY29tZSBmcm9tIHRoZSBkaXNrLiBTbyBjb25j ZXB0dWFsbHkgeW91IG1heSB3YW50IHRvIA0KPj4+PiBBU1NFUlQgb24gc29tZSBjb25zdHJhaW50 cyBhbmQgbm90IG9uIG90aGVycy4gSSB0aGluayB0aGF0IGlzIHdoeSBJIA0KPj4+PiByYXRob2xl ZCBvbiBleHBhbmRpbmcgdGhlIGVycm9yIGhhbmRsaW5nIG1hY3JvcyBhcyB0aGF0IHdhcyBtb3Jl IGluIA0KPj4+PiB0aGUgdmVpbiBvZiBoYXZpbmcgdGhlIGNhbGxlciBkZWFsIHdpdGggaXQsIHNv IHRoYXQgaXMga2luZCBvZiBsaWtlIA0KPj4+PiB3aGF0IHlvdSB3b3VsZCBkbyBwcmUgQzExLiBB bHNvIHRoZSBEZWJ1Z0xpYiBpcyBwcm9iYWJseSBvbmUgb2YgdGhlIA0KPj4+PiBNZGVQa2cgTGli cyB0aGF0IGhhcyB0aGUgbW9zdCBpbnN0YW5jZXMgZmxvYXRpbmcgYXJvdW5kLCBzbyBJIHRoaW5r IA0KPj4+PiB3ZSBzaG91bGQgY2hhbmdlIGl0IGluIGEgbm9uIGJhY2t3YXJkcyB3YXkgdmVyeSBj YXJlZnVsbHkuDQo+Pj4+DQo+Pj4+IFNvIGFmdGVyIHJlYWRpbmcgdXAgb24gdGhlIEMxMSBpbXBs ZW1lbnRhdGlvbiBvZiBDb25zdHJhaW50cyBJIA0KPj4+PiB0aGluayBteSBhbHRlcm5hdGUgcHJv cG9zYWwgaXMgZm9yIHVzIHRvIGFkZCBhIENvbnN0cmFpbnRMaWIgDQo+Pj4+IG1vZGVsZWQgYWZ0 ZXIgQzExIHZzLiB1cGRhdGluZyB0aGUgRGVidWdMaWIuIFRoaXMgd291bGQgc29sdmUgdGhlIDIg DQo+Pj4+IHRoaW5ncyB0aGF0IG1hZGUgbWUNCj4+Pj4gdW5jb21mb3J0YWJsZTogMSkgRXh0ZW5k aW5nIHRoZSBEZWJ1Z0xpYiBBUEk7IDIpIEdpdmluZyB0aGUgY2FsbGVyIA0KPj4+PiBjb250cm9s IG9mIHRoZSBBU1NFUlQgYmVoYXZpb3IuIEl0IHdvdWxkIHN0aWxsIGhhdmUgdGhlIGRvd24gc2lk ZSANCj4+Pj4gb2YgYnJlYWtpbmcgYnVpbGRzIGFzIHRoZSBCYXNlTGliIHdvdWxkIGdldCBhIG5l dyBkZXBlbmRlbmN5LCBzbyB3ZSANCj4+Pj4gY291bGQgdGFsayBhYm91dCBhZGRpbmcgdGhlc2Ug ZnVuY3Rpb25zIHRvIHRoZSBEZWJ1Z0xpYiBhcyB0aGUgY29zdCANCj4+Pj4gb2YgcmVwbGljYXRp bmcgY29kZS4NCj4+Pj4NCj4+Pj4gQzExIGRlZmluZXPCoGNvbnN0cmFpbnRfaGFuZGxlcl90IGFu ZMKgc2V0X2NvbnN0cmFpbnRfaGFuZGxlcl9zIGFzIGEgDQo+Pj4+IHdheSBmb3IgdGhlIGNhbGxl ciB0byBjb25maWd1cmUgdGhlIGJlaGF2aW9yIGZvciBib3VuZHMgY2hlY2tlZCANCj4+Pj4gZnVu Y3Rpb25zLiBJIHRoaW5rIHRoYXQgaXMgdGhlIGJlaGF2aW9yIEkgcHJlZmVyLiBTbyBpZiB3ZSBh cmUgDQo+Pj4+IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UgdGhhdCBpbXBhY3RzIERlYnVnTGliIGNv bXBhdGliaWxpdHkgSSBqdXN0IA0KPj4+PiB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY29u dmVyc2F0aW9uIGFib3V0IGFsbCB0aGUgb3B0aW9ucy4gTXkgDQo+Pj4+IHByaW1hcnkgZ29hbCBp cyB3ZSBoYXZlIHRoZSBjb252ZXJzYXRpb24sIGFuZCBpZiBmb2xrcyBkb24ndCBhZ3JlZSANCj4+ Pj4gd2l0aCBtZSB0aGF0IGlzIGZpbmUgYXQgbGVhc3Qgd2UgdGFsa2VkIGFib3V0IGl0Lg0KPj4+ Pg0KPj4+PiBXaGF0IEknbSB0aGlua2luZyBhYm91dCBpcyBhcyBzaW1wbHkgZXhwb3NpbmcgYW4g QVBJIHRvIGNvbnRyb2wgdGhlIA0KPj4+PiBDb25zdHJhaW50IGhhbmRsZXIgbGlrZSBDMTEuIFRo aXMgY291bGQgYmUgZG9uZSB2aWEgYW4gQ29uc3RyYWluTGliIA0KPj4+PiBvciBleHRlbmRpbmcg dGhlIERlYnVnTGliLg0KPj4+Pg0KPj4+PiBUaGUgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgdGhl IGxpYiB3b3VsZCBsb29rIGxpa2U6DQo+Pj4+DQo+Pj4+IHR5cGVkZWYNCj4+Pj4gVk9JRA0KPj4+ PiAoRUZJQVBJICpDT05TVFJBSU5UX0hBTkRMRVIpICgNCj4+Pj4gSU4gQ09OU1QgQ0hBUjggwqAq RmlsZU5hbWUsDQo+Pj4+IElOIFVJTlROIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIExpbmVOdW1i ZXIsIElOIENPTlNUIENIQVI4IMKgKkRlc2NyaXB0aW9uLCANCj4+Pj4gSU4gRUZJX1NUQVRVUyDC oCDCoCDCoFN0YXR1cyApOw0KPj4+Pg0KPj4+Pg0KPj4+PiAvLyBEZWZhdWx0IHRvIEFzc2VydENv bnN0cmFpbnRIYW5kbGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIA0KPj4+PiBpbXBsZW1lbnQgQmFz ZSBhbmQgWElQIGxpYnMuDQo+Pj4+IC8vIFdlIGNvdWxkIGhhdmUgYSBQQ0QgdGhhdCBhbHNvIHNl dHMgdGhlIGRlZmF1bHQgaGFuZGxlciBpbiBhIExpYiANCj4+Pj4gQ29uc3RydWN0b3IuIFRoZSBk ZWZhdWx0IGhhbmRsZXIgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBpbiBDMTEuDQo+Pj4+IENP TlNUUkFJTlRfSEFORExFUiBnRGVmYXVsdENvbnN0cmFpbnRIYW5kbGVyID3CoA0KPj4+PiBBc3Nl cnRDb25zdHJhaW50SGFuZGxlcjsgQ09OU1RSQUlOVF9IQU5ETEVSIA0KPj4+PiBnQWN0aXZlQ29u c3RyYWludEhhbmRsZXIgPcKgZ0RlZmF1bHRDb25zdHJhaW50SGFuZGxlcjsNCj4+Pj4NCj4+Pj4g Qk9PTEVBTg0KPj4+PiBFRklBUEkNCj4+Pj4gQ29uc3RyYWludEFzc2VydEVuYWJsZWQgKA0KPj4+ PiBWT0lEDQo+Pj4+ICkNCj4+Pj4gew0KPj4+PiAgwqDCoHJldHVybiAoQk9PTEVBTikgKChQY2RH ZXQ4KFBjZERlYnVnUHJvcGVydHlNYXNrKSAmDQo+Pj4+IERFQlVHX1BST1BFUlRZX0RFQlVHX0NP TlNUUkFJTlRfRU5BQkxFRCkgIT0gMCk7IH0NCj4+Pj4NCj4+Pj4gRUZJX1NUQVRVUw0KPj4+PiBF RklBUEkNCj4+Pj4gU2V0Q29uc3RyYWludEhhbmRsZXIgKA0KPj4+PiBJTiBDT05TVFJBSU5UX0hB TkRMRVIgSGFuZGxlcg0KPj4+PiApDQo+Pj4+IHsNCj4+Pj4gaWYgKEhhbmRsZXIgPT0gTlVMTCkg ew0KPj4+PiBnQWN0aXZlQ29uc3RyYWludEhhbmRsZXIgPcKgZ0RlZmF1bHRDb25zdHJhaW50SGFu ZGxlcjsgfSBlbHNlIHsgDQo+Pj4+IGdBY3RpdmVDb25zdHJhaW50SGFuZGxlciA9IEhhbmRsZXI7 IH0gfQ0KPj4+Pg0KPj4+PiBWT0lEDQo+Pj4+IEFzc2VydENvbnN0cmFpbnRIYW5kbGVyICgNCj4+ Pj4gSU4gQ09OU1QgQ0hBUjggwqAqRmlsZU5hbWUsDQo+Pj4+IElOIFVJTlROIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIExpbmVOdW1iZXIsIElOIENPTlNUIENIQVI4IMKgKkRlc2NyaXB0aW9uLCAN Cj4+Pj4gSU4gRUZJX1NUQVRVUyDCoCDCoCDCoFN0YXR1cw0KPj4+PiApDQo+Pj4+IHsNCj4+Pj4g IMKgwqBpZiAoQ29uc3RyYWludEFzc2VydEVuYWJsZWQgKCkpIHsNCj4+Pj4gIMKgIMKgIMKgREVC VUcgKChFRklfRF9FUlJPUiwgIlxDb25zdHJhaW50IEFTU0VSVCAoU3RhdHVzID0gJXIpOiAiLCAN Cj4+Pj4gU3RhdHVzKSk7DQo+Pj4+ICDCoCDCoMKgwqBEZWJ1Z0Fzc2VydCAoRmlsZU5hbWUswqBM aW5lTnVtYmVyLCBEZXNjcmlwdGlvbikgfQ0KPj4+Pg0KPj4+PiAgwqByZXR1cm47DQo+Pj4+IH0N Cj4+Pj4NCj4+Pj4gVk9JRA0KPj4+PiBJZ25vcmVDb25zdHJhaW50SGFuZGxlciAoDQo+Pj4+IElO IENPTlNUIENIQVI4IMKgKkZpbGVOYW1lLA0KPj4+PiBJTiBVSU5UTiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBMaW5lTnVtYmVyLCBJTiBDT05TVCBDSEFSOCDCoCpEZXNjcmlwdGlvbiwgDQo+Pj4+ IElOIEVGSV9TVEFUVVMgwqAgwqAgwqBTdGF0dXMNCj4+Pj4gKQ0KPj4+PiB7DQo+Pj4+IHJldHVy bjsNCj4+Pj4gfQ0KPj4+Pg0KPj4+PiBXZSBjb3VsZCBhZGQgbWFjcm9zIGZvciB0aGUgY29kZSBp biB0aGUgbGliIHRvIGNhbGw6DQo+Pj4+DQo+Pj4+ICNkZWZpbmUgQ09OU1RSQUlOVF9DSEVDSyhF eHByZXNzaW9uLCBTdGF0dXMpIMKgXCBkbyB7IFwgaWYgDQo+Pj4+ICghKEV4cHJlc3Npb24pKSB7 IFwgZ0FjdGl2ZUNvbnN0cmFpbnRIYW5kbGVywqAoX19GSUxFX18sIF9fTElORV9fLCANCj4+Pj4g RXhwcmVzc2lvbiwgU3RhdHVzKTsgXCByZXR1cm4gU3RhdHVzOyBcIH0gXCB9IHdoaWxlIChGQUxT RSkNCj4+Pj4NCj4+Pj4gI2RlZmluZSBDT05TVFJBSU5UX1JFUVVJUkUoRXhwcmVzc2lvbiwgU3Rh dHVzLCBMYWJlbCkgwqBcIGRvIHsgXCBpZiANCj4+Pj4gKCEoRXhwcmVzc2lvbikpIHsgXCBnQWN0 aXZlQ29uc3RyYWludEhhbmRsZXLCoChfX0ZJTEVfXywgX19MSU5FX18sIA0KPj4+PiBFeHByZXNz aW9uLCBTdGF0dXMpOyBcIGdvdG/CoExhYmVsOyBcIH0gXCB9IHdoaWxlIChGQUxTRSkNCj4+Pj4N Cj4+Pj4NCj4+Pj4gQXMgYSBjYWxsZXIgd2UgaGF2ZSBub3cgaGF2ZSBjb250cm9sOg0KPj4+PiBF RklfU1RBVFVTIFN0YXR1czsNCj4+Pj4gQ0hBUjE2IMKgIMKgIMKgIMKgRHN0WzJdOw0KPj4+Pg0K Pj4+PiBTZXRDb25zdHJhaW50SGFuZGxlciAoSWdub3JlQ29uc3RyYWludEhhbmRsZXIpOyBTdGF0 dXMgPSBTdHJDcHlTIA0KPj4+PiAoRHN0LCBzaXplb2YgKERzdCksIEwiVG9vIExvbmciKTsgUHJp bnQgKEwiRHN0ID0lcyAoJXIpXG4iLCDCoERzdCwgDQo+Pj4+IFN0YXR1cyk7DQo+Pj4+DQo+Pj4+ IFNldENvbnN0cmFpbnRIYW5kbGVyIChBc3NlcnRDb25zdHJhaW50SGFuZGxlcik7IFN0ckNweVMg KERzdCwgDQo+Pj4+IHNpemVvZiAoRHN0KSwgTCJUb28gTG9uZyIpOw0KPj4+Pg0KPj4+PiBUaGFu a3MsDQo+Pj4+DQo+Pj4+IEFuZHJldyBGaXNoDQo+Pj4+DQo+Pj4+IFBTIFNpbmNlIEknbSBvbiBh IGNyYXp5IGlkZWEgcm9sbCBhbm90aGVyIGlkZWEgd291bGQgYmUgdG8gYWRkIGEgDQo+Pj4+IE1k ZVBrZ0NvbXBhdGFiaWxpdHkuZHNjLmluYyBmaWxlIHRoYXQgY291bGQgYmUgdXNlZCB0byBmdXR1 cmUgcHJvb2YgDQo+Pj4+IGFkZGluZyBkZXBlbmRlbnQgbGlicyB0byBleGlzdGluZyBNZGVQa2cg bGlicy4gU28gYSBwbGF0Zm9ybSBjb3VsZCANCj4+Pj4gaW5jbHVkZSB0aGlzIC5EU0MgYW5kIHRo YXQgd291bGQgZ2l2ZSB0aGVtIHRoZSBkZWZhdWx0IGxpYnJhcnkgDQo+Pj4+IG1hcHBpbmcgdG8g a2VlcCBjb2RlIGNvbXBpbGluZy4gSXQgd2lsbCBvbmx5IHdvcmsgYWZ0ZXIgb3RoZXIgDQo+Pj4+ IHBsYXRmb3JtcyBzdGFydCBpbmNsdWRpbmcgaXQsIGJ1dCBhZnRlciB0aGF0IGl0IHdvdWxkIGdp dmUgZGVmYXVsdCANCj4+Pj4gbWFwcGluZ3MgZm9yIGRlcGVuZGVudCBsaWJzLg0KPj4+Pg0KPj4+ PiBJbiBvdXIgYWJvdmUgZXhhbXBsZSB3ZSBjb3VsZCBoYXZlIGFkZGVkIHRoaXMgYW5kIHRoZW4g ZXhpc3RpbmcgDQo+Pj4+IGJ1aWxkcyB0aGF0IGluY2x1ZGVkIE1kZVBrZ0NvbXBhdGFiaWxpdHku ZHNjLmluYyB3b3VsZCBrZWVwIGNvbXBpbGluZy4NCj4+Pj4NCj4+Pj4gIMKgW0xpYnJhcnlDbGFz c2VzXQ0KPj4+Pg0KPj4+PiBEZWJ1Z0NvbnN0cmFpbnRMaWJ8TWRlUGtnL0xpYnJhcnkvRGVidWdD b25zdHJhaW50TGliL0RlYnVnQ29uc3RyYWluDQo+Pj4+IERlYnVnQ29uc3RyYWludExpYnx0TGli LmluZg0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+Pj4gT24gRmViIDE1LCAyMDIwLCBhdCAxMTozOCBB TSwgTWljaGFlbCBEIEtpbm5leSANCj4+Pj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbSAN Cj4+Pj4+IDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PG1haWx0bzptaWNoYWVs LmQua2lubmV5QGludGVsLg0KPj4+Pj4gY29tPj4NCj4+Pj4+IHdyb3RlOg0KPj4+Pj4NCj4+Pj4+ IEFuZHJldywNCj4+Pj4+IEkgZG8gbm90IHRoaW5rIG9mIHRoaXMgYXMgYSBnbG9iYWxseSBzY29w ZWQgUENELkl0IGNhbiBiZSBzZXQgaW4gDQo+Pj4+PiBnbG9iYWwgc2NvcGUgaW4gRFNDLkJ1dCBp cyBjYW4gYWxzbyBiZSBzZXQgdG8gdmFsdWVzIGJhc2VkIG9uIA0KPj4+Pj4gbW9kdWxlIHR5cGUg b3IgZm9yIHNwZWNpZmljIG1vZHVsZXMuSW4gdGhlIGNhc2Ugb2YgdGhlIHNhZmUgc3RyaW5nIA0K Pj4+Pj4gZnVuY3Rpb25zLCBJIHRoaW5rIHRoZXJlIGlzIGEgZGVzaXJlIHRvIGRpc2FibGUgdGhl IGNvbnN0cmFpbnQgDQo+Pj4+PiBhc3NlcnRzIHdoZW4gYnVpbGRpbmcgYSBVRUZJIEFwcCBvciBV RUZJIERyaXZlciBhbmQgaW1wbGVtZW50IA0KPj4+Pj4gdGhvc2UgbW9kdWxlcyB0byBoYW5kbGUg dGhlIGVycm9yIHJldHVybiB2YWx1ZXMuRW5hYmxpbmcgdGhlIA0KPj4+Pj4gY29uc3RyYWludCBh c3NlcnRzIGZvciBQRUkgQ29yZSwgRFhFIENvcmUsIFNNTS9NTSBDb3JlLCBQRUlNLCBEWEUsIA0K Pj4+Pj4gU01NL01NIG1vZHVsZXMgbWFrZXMgc2Vuc2UgdG8gZmluZCBpbmNvcnJlY3QgaW5wdXQg dG8gdGhlc2UgDQo+Pj4+PiBmdW5jdGlvbnMgZnJvbSBtb2R1bGVzIHRoYXQgY2FuIGd1YXJhbnRl ZSB0aGUgaW5wdXRzIHdvdWxkIG5ldmVyIA0KPj4+Pj4gcmV0dXJuIGFuIGVycm9yIGFuZCBjYXRj aCB0aGVzZSBhcyBwYXJ0IG9mIGRldi9kZWJ1Zy92YWxpZGF0aW9uIGJ1aWxkcy4NCj4+Pj4+IEkg d291bGQgbm90IGV4cGVjdCBkaXNhYmxpbmcgb24gYSBtb2R1bGUgYnkgbW9kdWxlIGJhc2lzIHRv IGJlIGNvbW1vbi4NCj4+Pj4+IEkgdGhpbmsgdGhlIHJ1bGUgZm9yIEFQSSBpbXBsZW1lbnRhdGlv bnMgaXMgdG8gb25seSB1c2UNCj4+Pj4+IENPTlNUUkFJTlRfQVNTRVJUKCkgZm9yIGNvbmRpdGlv bnMgdGhhdCBhcmUgYWxzbyBjaGVja2VkIGFuZCANCj4+Pj4+IHJldHVybiBhbiBlcnJvciBvciBm YWlsIHdpdGggcHJlZGljYWJsZSBiZWhhdmlvciB0aGF0IGFsbG93cyB0aGUgDQo+Pj4+PiBzeXN0 ZW0gdG8gY29udGludWUgdG8gZnVuY3Rpb24uQVNTRVJUKCkgaXMgZm9yIGNvbmRpdGlvbnMgdGhh dCB0aGUgDQo+Pj4+PiBzeXN0ZW1jYW4gbm90Y29udGludWUuDQo+Pj4+PiBCZXN0IHJlZ2FyZHMs DQo+Pj4+PiBNaWtlDQo+Pj4+PiAqRnJvbToqYWZpc2hAYXBwbGUuY29tDQo+Pj4+PiA8bWFpbHRv OmFmaXNoQGFwcGxlLmNvbT48bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT48YWZpc2hAYXBwbGUuY29t DQo+Pj4+PiA8bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT4NCj4+Pj4+IDxtYWlsdG86YWZpc2hAYXBw bGUuY29tPj4NCj4+Pj4+ICpTZW50OipGcmlkYXksIEZlYnJ1YXJ5IDE0LCAyMDIwIDEwOjI3IFBN DQo+Pj4+PiAqVG86KnZpdDk2OTYgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20gDQo+Pj4+PiA8bWFp bHRvOnZpdDk2OTZAcHJvdG9ubWFpbC5jb20+PG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29t Pj4NCj4+Pj4+ICpDYzoqZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4+Pj4+IDxtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8+PG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz47IA0KPj4+Pj4gS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tIA0KPj4+Pj4gPG1haWx0 bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4+Pj4+IDxtYWlsdG86bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+PjsgR2FvLCBMaW1pbmcgDQo+Pj4+PiA8bGltaW5nLmdhb0BpbnRlbC5j b20gDQo+Pj4+PiA8bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tPjxtYWlsdG86bGltaW5nLmdh b0BpbnRlbC5jb20+PjsgR2FvLCANCj4+Pj4+IFpoaWNoYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNv bSANCj4+Pj4+IDxtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tPjxtYWlsdG86emhpY2hhby5n YW9AaW50ZWwuY29tPj47DQo+Pj4+PiBNYXJ2aW4gSMOkdXNlcg0KPj4+Pj4gPG1hcnZpbi5oYWV1 c2VyQG91dGxvb2suY29tDQo+Pj4+PiA8bWFpbHRvOm1hcnZpbi5oYWV1c2VyQG91dGxvb2suY29t PjxtYWlsdG86bWFydmluLmhhZXVzZXJAb3V0bG9vay4NCj4+Pj4+IGNvbT4+Ow0KPj4+Pj4gTGFz emxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbQ0KPj4+Pj4gPG1haWx0bzpsZXJzZWtAcmVkaGF0 LmNvbT48bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4+Pj4+ICpTdWJqZWN0OipSZTogW2Vk azItZGV2ZWxdIFtQQVRDSCB2MyAwLzFdIEFkZCBQQ0QgdG8gZGlzYWJsZSBzYWZlIA0KPj4+Pj4g c3RyaW5nIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucyBWaXRhbHksIFNvcnJ5IGFmdGVyIEkgc2VudCB0 aGUgbWFpbCBJIA0KPj4+Pj4gcmVhbGl6ZWQgaXQgbWF5IGNvbWUgwqBhY3Jvc3MgYXMgbWUgYXNr aW5nIHlvdSB0byBkbyB3b3JrIGFuZCB0aGF0IA0KPj4+Pj4gd2FzIG5vdCBteSBpbnRlbnQuDQo+ Pj4+PiBJIHdpbGwgcG9pbnQgb3V0IHRob3VnaCB0aGF0IGEgbm9uIGJhY2t3YXJkIGNvbXBhdGli bGUgY2hhbmdlIHRvIA0KPj4+Pj4gc29tZXRoaW5nIGFzIGZ1bmRhbWVudGFsIGFzIHRoZSBEZWJ1 Z0xpYiBpcyBhIHZlcnkgYmlnIGRlYWwuIEkndmUgDQo+Pj4+PiBnb3QgYSBmZXcgZGlmZmVyZW50 IGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3b3VsZCBicmVhayB3aXRoIA0KPj4+Pj4gdGhp cyBjaGFuZ2UgYXMgTWlrZSBwcm9wb3NlZC4gR2l2ZW4gYnJlYWtpbmcgZXZlcnkgb25lJ3MgZGVi dWcgbGliIA0KPj4+Pj4gaXMgc3VjaCBhIGJpZyBkZWFsIG1heWJlIGl0IGlzIHNvbWV0aGluZyB0 aGF0IHdlIHNob3VsZCBkbyBhcyBhIA0KPj4+Pj4gbG9uZyB0ZXJtIHBsYW4gdnMuIHNvbWUgaW5j cmVtZW50YWwgZml4LiBTbyBteSBpbnRlbnQgd2FzIHRvIHN0YXJ0IA0KPj4+Pj4gYSBjb252ZXJz YXRpb24gYWJvdXQgd2hhdCBlbHNlIHdlIG1pZ2h0IHdhbnQgdG8gY2hhbmdlIGlmIHdlIGFyZSAN Cj4+Pj4+IGdvaW5nIHRvIGJyZWFrIHRoZSB3b3JsZC4gVGhlIG9ubHkgdGhpbmsgd29yc2UgdGhh biBicmVha2luZyB0aGUgDQo+Pj4+PiB3b3JsZCBpcyBicmVha2luZyB0aGUgd29ybGQgZnJlcXVl bnRseS4NCj4+Pj4+IEknbSBhbHNvIGEgbGl0dGxlIHdvcnJpZWQgdGhhdCB3ZSBhcmUgdGFraW5n IHRoaW5ncyB0aGF0IGFyZSB0b2RheSANCj4+Pj4+IGxvY2FsbHkgc2NvcGVkIGxpa2XCoFNBRkVf U1RSSU5HX0NPTlNUUkFJTlRfQ0hFQ0sgYW5kIA0KPj4+Pj4gU0FGRV9QUklOVF9DT05TVFJBSU5U X0NIRUNLIGFuZCBtYWtpbmcgdGhlbSBnbG9iYWwgY29uc3RydWN0cy4gSSANCj4+Pj4+IHRoaW5r IHRoZSB3YXkgb3RoZXJzIGhhdmUgZGVhbHQgd2l0aCB0aGluZ3MgbGlrZSB0aGlzIGlzIHRvIG1h a2UgDQo+Pj4+PiB0aGVtIGJlIERFQlVHIHByaW50cyB2cy4gQVNTRVJUcy4gQWxzbyBldmVuIHNv bWV0aGluZyBhcyBzaW1wbGUgYXMgDQo+Pj4+PiBTQUZFX1NUUklOR19DT05TVFJBSU5UX0NIRUNL IGNvdWxkIGJlIGNhbGxlZCBmcm9tIGNvZGUgdGhhdCB3YW50cyANCj4+Pj4+IEFTU0VSVCBhbmQg Q09OU1RSQUlOVF9BU1NFUlQgYmVoYXZpb3IuIEl0IGlzIG5vdCBjbGVhciB0byBtZSB0aGF0IA0K Pj4+Pj4gdGhlIGxvdyBsZXZlbCBjb2RlIGtub3dzIHRoZSByaWdodCB0aGluZyB0byBkbyBpbiBh IGdsb2JhbCBzZW5zZSANCj4+Pj4+IGV2ZW4gaWYgdGhlcmUgaXMgYSBQQ0QuIMKgSXQgYWxtb3N0 IHNlZW1zIGxpa2Ugd2Ugc2hvdWxkIGhhdmUgDQo+Pj4+PiB3cmFwcGVycyBmb3IgdGhlIFNhZmUg c3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCB0aGUgYmVoYXZpb3IgDQo+Pj4+PiB5b3Ug d2FudCBhcyBhIGNhbGxlci4gSSdtIG5vdCBzdXJlIGFib3V0IHRoYXQsIGJ1dCBpdCBzZWVtcyBs aWtlIA0KPj4+Pj4gaXQgaXMgd29ydGggdGFsa2luZyBhYm91dD8NCj4+Pj4+IFRoYW5rcywNCj4+ Pj4+IEFuZHJldyBGaXNoDQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+ICDCoMKgwqBPbiBGZWIgMTQsIDIw MjAsIGF0IDc6MzEgUE0sIHZpdDk2OTYgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20gDQo+Pj4+PiA8 bWFpbHRvOnZpdDk2OTZAcHJvdG9ubWFpbC5jb20+DQo+Pj4+PiAgwqDCoMKgPG1haWx0bzp2aXQ5 Njk2QHByb3Rvbm1haWwuY29tPj4gd3JvdGU6DQo+Pj4+PiAgwqDCoMKgSGkgQW5kcmV3LA0KPj4+ Pj4gIMKgwqDCoFdoaWxlIHlvdXIgc3VnZ2VzdGlvbnMgbG9vayBpbnRlcmVzdGluZyzCoEkgYW0g YWZyYWlkIHRoZXkgYXJlIA0KPj4+Pj4gbm90DQo+Pj4+PiAgwqDCoMKgcGFydGljdWxhcmx5wqB3 aGF0IHdlIHdhbnQgdG8gY292ZXLCoHdpdGggdGhpcyBkaXNjdXNzaW9uIGF0IHRoZSANCj4+Pj4+ IG1vbWVudC4NCj4+Pj4+ICDCoMKgwqBNYWtpbmcgYXNzZXJ0aW9ucyBnbyB0aHJvdWdoIERFQlVH IHByaW50aW5nIGZ1bmN0aW9ucy9tYWNyb3PCoA0KPj4+Pj4gaXMNCj4+Pj4+ICDCoMKgwqB3aGF0 IHdlIGhhdmUgdG8gc3Ryb25nbHkgZGlzYWdyZWUgYWJvdXQuIEFzc2VydGlvbnMgYW5kIGRlYnVn DQo+Pj4+PiAgwqDCoMKgcHJpbnRzIGFyZSBzZXBhcmF0ZSB0aGluZ3PCoGNvbmZpZ3VyYWJsZSBi eSBzZXBhcmF0ZSBQQ0RzLsKgV2UNCj4+Pj4+ICDCoMKgwqBzaG91bGQgbm90IG1peCB0aGVtLiBJ bnRyb2R1Y2luZyBjb25zdHJhaW50IGFzc2VydGlvbnMgaXMgYQ0KPj4+Pj4gIMKgwqDCoGxvZ2lj YWwgc3RlcCBmb3J3YXJkIGluIHVuZGVyc3RhbmRpbmcgdGhhdCBkaWZmZXJlbnQgc29mdHdhcmUN Cj4+Pj4+ICDCoMKgwqB3b3JrcyBpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLg0KPj4+Pj4NCj4+ Pj4+ICDCoMKgwqDCoMKgKiBUaGVyZSBhcmUgbm9ybWFsLCBvciwgYXMgSSBjYWxsIHRoZW0sIGlu dmFyaWFudA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgYXNzZXJ0aW9uc8KgKGUuZy4gcHJlY29uZGl0 aW9ucyksIGZvciBwbGFjZXMgd2hlcmUgdGhlIA0KPj4+Pj4gZnVuY3Rpb24NCj4+Pj4+ICDCoMKg wqDCoMKgwqDCoGNhbm5vdCB3b3JrIHVubGVzcyB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4g VGhpcyBpcyANCj4+Pj4+IHdoZXJlDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqB3ZSBBU1NFUlQuDQo+ Pj4+PiAgwqDCoMKgwqDCoCogVGhlcmUgYXJlIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucywgd2hpY2gg c2lnbmFsaXNlIHRoYXQgYmFkIA0KPj4+Pj4gZGF0YQ0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgY2Ft ZSB0aHJvdWdoIHRoZSBmdW5jdGlvbiwgZXZlbiB0aG91Z2ggdGhlIGZ1bmN0aW9uIHdhcyANCj4+ Pj4+IGNhbGxlZA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgZnJvbSBhIHRydXN0ZWQgc291cmNlLiBU aGlzIGlzIHdoZXJlIHdlIGNhbGwgQ09OU1RSQUlOVF9BU1NFUlQuDQo+Pj4+Pg0KPj4+Pj4gIMKg wqDCoFRoZSB0aGluZyB3ZSBuZWVkIGlzIHRvIGhhdmUgdGhlIGxhdHRlciBzZXBhcmFibGUNCj4+ Pj4+ICDCoMKgwqBhbmTCoGNvbmZpZ3VyYWJsZSwgYmVjYXVzZSBub3QgZXZlcnkgcGllY2Ugb2bC oHNvZnR3YXJlIHdvcmtzIGluIA0KPj4+Pj4gYQ0KPj4+Pj4gIMKgwqDCoHRydXN0ZWQgZW52aXJv bm1lbnQuIE90aGVyIHRoYW4gdGhhdCwgY29uc3RyYWludCBhc3NlcnRpb25zLCANCj4+Pj4+IHdo ZW4NCj4+Pj4+ICDCoMKgwqBlbmFibGVkLCBhcmUgbm90IGFueWhvdyBkaWZmZXJlbnQgZnJvbSBu b3JtYWwgYXNzZXJ0aW9ucyBpbiANCj4+Pj4+IHRoZQ0KPj4+Pj4gIMKgwqDCoHNlbnNlIG9mIGFj dGlvbiB0YWtlbi4gQXNzZXJ0aW9ucyBoYXZlIGNvbmZpZ3VyYWJsZSANCj4+Pj4+IGJyZWFrcG9p bnRzDQo+Pj4+PiAgwqDCoMKgYW5kIGRlYWRsb29wcywgYW5kwqBERUJVRyBwcmludHMgZ28gdGhy b3VnaCBhIGRpZmZlcmVudCByb3V0ZSANCj4+Pj4+IGluDQo+Pj4+PiAgwqDCoMKgRGVidWdMaWIg dGhhdMKgbWF5IGNhdXNlwqBlbnRpcmVsecKgZGlmZmVyZW50IGVmZmVjdHMuIEZvciANCj4+Pj4+ IGV4YW1wbGUsDQo+Pj4+PiAgwqDCoMKgd2UgaGFsdCBleGVjdXRpb24gdXBvbiBwcmludGluZyB0 byBERUJVR19FUlJPUiBpbiBvdXIgRGVidWdMaWINCj4+Pj4+ICDCoMKgwqBldmVuIGluIHJlbGVh c2UgYnVpbGRzLg0KPj4+Pj4NCj4+Pj4+ICDCoMKgwqA9VG8gbWFrZSBpdCBjbGVhciwgY3VycmVu dGx5IEkgcGxhbiB0byBhZGQgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6DQo+Pj4+PiAgwqDCoMKg I2RlZmluZSBDT05TVFJBSU5UX0FTU0VSVChFeHByZXNzaW9uKSBcDQo+Pj4+PiAgwqDCoMKgZG8g eyBcDQo+Pj4+PiAgwqDCoMKgaWYgKERlYnVnQ29uc3RyYWludEFzc2VydEVuYWJsZWQgKCkpIHsg XA0KPj4+Pj4gIMKgwqDCoGlmICghKEV4cHJlc3Npb24pKSB7IFwNCj4+Pj4+ICDCoMKgwqBfQVNT RVJUIChFeHByZXNzaW9uKTsgXA0KPj4+Pj4gIMKgwqDCoEFOQUxZWkVSX1VOUkVBQ0hBQkxFICgp OyBcDQo+Pj4+PiAgwqDCoMKgfSBcDQo+Pj4+PiAgwqDCoMKgfSBcDQo+Pj4+PiAgwqDCoMKgfSB3 aGlsZSAoRkFMU0UpDQo+Pj4+PiAgwqDCoMKgd2l0aCBEZWJ1Z0NvbnN0cmFpbnRBc3NlcnRFbmFi bGVkIGltcGxlbWVudGVkIGFzDQo+Pj4+PiAgwqDCoMKgKEJPT0xFQU4pICgoUGNkR2V0OChQY2RE ZWJ1Z1Byb3BlcnR5TWFzaykgJg0KPj4+Pj4gIMKgwqDCoERFQlVHX1BST1BFUlRZX0RFQlVHX0FT U0VSVF9FTkFCTEVEIHwNCj4+Pj4+ICDCoMKgwqBERUJVR19QUk9QRVJUWV9DT05UUkFJTlRfQVNT RVJUX0RJU0FCTEVEKSA9PQ0KPj4+Pj4gIMKgwqDCoERFQlVHX1BST1BFUlRZX0RFQlVHX0FTU0VS VF9FTkFCTEVEKQ0KPj4+Pj4gIMKgwqDCoFlvdXIgc3VnZ2VzdGlvbiB3aXRoIHJlcXVpcmUgbWFj cm9zIGxvb2tzIGludGVyZXN0aW5nIGluZGVlZCwgDQo+Pj4+PiBidXQNCj4+Pj4+ICDCoMKgwqBJ IGJlbGlldmUgaXQgaXMgaW4gZmFjdCBwYXJhbGxlbCB0byB0aGlzIGRpc2N1c3Npb24uIFRoZSAN Cj4+Pj4+IGNoYW5nZSB3ZQ0KPj4+Pj4gIMKgwqDCoGRpc2N1c3MgaW50cm9kdWNlcyBhIG5ldyBh c3NlcnRpb24gcHJpbWl0aXZlIOKAlCBjb25zdHJhaW50DQo+Pj4+PiAgwqDCoMKgYXNzZXJ0aW9u cywgd2hpbGUgUkVRVUlSRSBtYWNyb3MgYXJlIG1vc3RseSBhYm91dCBhZHZhbmNlZCANCj4+Pj4+ IHN5bnRheA0KPj4+Pj4gIMKgwqDCoHN1Z2FyIGFuZCBoaWdoZXIgbGV2ZWwgYXNzZXJ0aW9uIHBy aW1pdGl2ZXMgb24gdG9wIG9mIGV4aXN0aW5nDQo+Pj4+PiAgwqDCoMKgb25lcy4gUGVyaGFwcyB3 ZSBjYW4gaGF2ZSB0aGlzIGFuZCBtYWtlIGEgZ29vZCB1c2Ugb2YgaXQsDQo+Pj4+PiAgwqDCoMKg ZXNwZWNpYWxseSBnaXZlbiB0aGF0IGl0IGJyb3VnaHQgc29tZSBwcmFjdGljYWwgYmVuZWZpdCBp biANCj4+Pj4+IEFwcGxlLA0KPj4+Pj4gIMKgwqDCoGJ1dCBJIHdvdWxkIHJhdGhlciBkaXNjdXNz IHRoaXMgbGF0ZXIgb25jZSBjb25zdHJhaW50IA0KPj4+Pj4gYXNzZXJ0aW9ucw0KPj4+Pj4gIMKg wqDCoGFyZSBtZXJnZWQgaW50byBFREsgSUkgdHJlZS4NCj4+Pj4+ICDCoMKgwqBCZXN0IHdpc2hl cywNCj4+Pj4+ICDCoMKgwqBWaXRhbHkNCj4+Pj4+ICDCoMKgwqBPbiBTYXQsIEZlYiAxNSwgMjAy MCBhdCAwMzowMiwgQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbSANCj4+Pj4+IDxtYWlsdG86 YWZpc2hAYXBwbGUuY29tPg0KPj4+Pj4gIMKgwqDCoDxtYWlsdG86YWZpc2hAYXBwbGUuY29tPj4g d3JvdGU6DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oE9uIEZlYiAxNCwgMjAyMCwgYXQgMjo1MCBQTSwgTWljaGFlbCBEIEtpbm5leQ0KPj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20gDQo+Pj4+PiA8 bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKg wqDCoMKgwqA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4gd3JvdGU6DQo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEhpIFZpdGFseSwNCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgSSBhZ3JlZSB0aGF0IHRoaXMgcHJvcG9zYWwgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2Uu IFdlDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlY2VudGx5IGFkZGVkIGEgbmV3IGFz c2VydCB0eXBlIGNhbGxlZCANCj4+Pj4+IFNUQVRJQ19BU1NFUlQoKQ0KPj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmb3IgYXNzZXJ0IGNvbmRpdGlvbnMgdGhhdCBjYW4gYmUgdGVzdGVkIGF0 IGJ1aWxkIHRpbWUuDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEEgbmV3IGFzc2VydCB0 eXBlIGZvciBjaGVja3MgdGhhdCBjYW4gYmUgcmVtb3ZlZCBhbmQgDQo+Pj4+PiB0aGUNCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQVBJIHN0aWxsIGd1YXJhbnRlZXMgdGhhdCBpdCBmYWls cyBncmFjZWZ1bGx5IHdpdGggYQ0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcm9wZXIg cmV0dXJuIGNvZGUgaXMgYSBnb29kIGlkZWEuIEdpdmVuIHdlIGhhdmUNCj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgU1RBVElDX0FTU0VSVCgpLCBob3cgYWJvdXQgbmFtaW5nIHRoZSBuZXcg bWFjcm8NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQ09OU1RSQUlOVF9BU1NFUlQoKT8N Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgV2UgYWxzbyB3YW50IHRoZSBkZWZhdWx0IHRv IGJlIGVuYWJsZWQuIFRoZSBjdXJyZW50IA0KPj4+Pj4gdXNlIG9mDQo+Pj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGJpdCAweDQwIGluUGNkRGVidWdQcm9wZXJ0eU1hc2sgaXMgYWx3YXlzIGNs ZWFyLCBzbyB3ZQ0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YW50IHRoZSBhc3NlcnRz IGVuYWJsZWQgd2hlbiAweDQwIGlzIGNsZWFyLiBXZSBjYW4gDQo+Pj4+PiBjaGFuZ2UNCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGhlIG5hbWUgb2YgdGhlIGRlZmluZSBiaXQgdG8NCj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgREVCVUdfUFJPUEVSVFlfQ09OVFJBSU5UX0FTU0VS VF9ESVNBQkxFRCBzbyBiaXQgMHg0MCANCj4+Pj4+IG5lZWRzDQo+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRvIGJlIHNldCBpblBjZERlYnVnUHJvcGVydHlNYXNrdG8gZGlzYWJsZSB0aGVz ZSB0eXBlcyANCj4+Pj4+IG9mDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFzc2VydHMu DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFRoaXMgYXBwcm9hY2ggZG9lcyByZXF1aXJl IGFsbCANCj4+Pj4+IHRoZURlYnVnTGliaW1wbGVtZW50YXRpb25zDQo+Pj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGUgDQo+Pj4+PiBuZXdEZWJ1Z0NvbnN0 cmFpbnRBc3NlcnREaXNhYmxlZCgpDQo+Pj4+PiBBUEkuDQo+Pj4+Pg0KPj4+Pj4gIMKgwqDCoMKg wqDCoMKgTWlrZSwNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoElmIHlvdSB3YW50ZWQgdG8gYmUgYmFj a3dhcmQgY29tcGF0aWJsZSB5b3UgY291bGQganVzdA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgdXNl wqBEZWJ1Z0Fzc2VydEVuYWJsZWQgKCkgYnV0IGluIHBsYWNlIG9mIF9BU1NFUlQoKSB1c2UNCj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoF9DT05TVFJBSU5UX0FTU0VSVA0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgI2RlZmluZSBfQVNTRVJUKEV4cHJlc3Npb24pIMKgRGVidWdBc3NlcnQgKF9fRklMRV9fLCAN Cj4+Pj4+IF9fTElORV9fLA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgI0V4cHJlc3Npb24pDQo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqAjZGVmaW5lwqBfQ09OU1RSQUlOVF9BU1NFUlQoRXhwcmVzc2lvbikg wqBEZWJ1Z1ByaW50DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqAoREVCVUdfRVJST1IsIMKgIkFTU0VS VCAlYSglZCk6ICVhXG4iLCwgX19GSUxFX18sIF9fTElORV9fLA0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgI0V4cHJlc3Npb24pDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqBOb3QgYXMgZWxlZ2FudCBhcyB0 aGUgbm9uIGJhY2t3YXJkIGNvbXBhdGlibGUgY2hhbmdlLCBidXQgDQo+Pj4+PiBJDQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqB0aG91Z2h0IEknZCB0aHJvdyBpdCBvdXQgdGhlcmUuDQo+Pj4+PiAgwqDC oMKgwqDCoMKgwqBUaGVyZSBhcmUgc29tZSBhbmNpZW50IEFwcGxlIEMgQVNTRVJUIG1hY3JvcyAN Cj4+Pj4+IFtBc3NlcnRNYWNyb3MuaF0NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgdGhhdCBhbHNv IGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVxdWlyZS4gUmVxdWlyZSBpbmNsdWRlcyANCj4+Pj4+IGFu DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqBleGNlcHRpb24gbGFiZWwgKGdvdG/CoGxhYmVsKS4gSXQg aXMgbGlrZSBhIA0KPj4+Pj4gQ09OU1RSQUlOVF9BU1NFUlQoKQ0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgYnV0IHdpdGggdGhlIGxhYmVsLiBPbiByZWxlYXNlIGJ1aWxkcyB0aGUgREVCVUcgcHJpbnRz IGFyZQ0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgc2tpcHBlZC4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oFNvIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlOg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAg RUZJX1NUQVRVUyBTdGF0dXMgPSDCoEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgIFJFUVVJUkUoQXJnMSAhPSBOVUxMLCBFcnJvckV4aXQpOw0KPj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqAgUkVRVUlSRShBcmcyICE9IE5VTEwsIEVycm9yRXhpdCk7DQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoCBSRVFVSVJFKEFyZzMgIT0gTlVMTCwgRXJyb3JFeGl0KTsNCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoEVycm9yRXhpdDoNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBTdGF0dXM7DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqBUaGVyZSBpcyBhbm90aGVyIGZvcm0gdGhh dCBhbGxvd3MgYW4gQUNUSU9OIChhIHN0YXRlbWVudCANCj4+Pj4+IHRvDQo+Pj4+PiAgwqDCoMKg wqDCoMKgwqBleGVjdXRlLiBTbyB5b3UgY291bGQgaGF2ZToNCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgUkVRVUlSRV9B Q1RJT04oQXJnMSAhPSBOVUxMLCBFcnJvckV4aXQsIFN0YXR1cyA9DQo+Pj4+PiAgwqDCoMKgwqDC oMKgwqBFRklfSU5WQUxJRF9QQVJBTUVURVIpOw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgUkVR VUlSRV9BQ1RJT04oQXJnMiAhPSBOVUxMLCBFcnJvckV4aXQsIFN0YXR1cyA9DQo+Pj4+PiAgwqDC oMKgwqDCoMKgwqBFRklfSU5WQUxJRF9QQVJBTUVURVIpOw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKg wqAgUkVRVUlSRV9BQ1RJT04oQXJnMyAhPSBOVUxMLCBFcnJvckV4aXQsIFN0YXR1cyA9DQo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqBFRklfSU5WQUxJRF9QQVJBTUVURVIpOw0KPj4+Pj4gIMKgwqDCoMKg wqDCoMKgRXJyb3JFeGl0Og0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFN0YXR1czsN Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoElmIHlvdSB1c2UgQ09OU1RSQUlOVF9BU1NFUlQoKTsNCj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgIGlmIChBcmcxID09IE5VTEwgfHwgQXJnMiA9PSBOVUxMIHx8 IEFyZzMgPT0gTlVMTCkgew0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgwqBDT05TVFJBSU5UX0FT U0VSVCAoQXJnMSAhPSBOVUxMKTsNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgIMKgQ09OU1RSQUlO VF9BU1NFUlQgKEFyZzIgIT0gTlVMTCk7DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoCDCoENPTlNU UkFJTlRfQVNTRVJUIChBcmczICE9IE5VTEwpOw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgwqBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqB9DQo+ Pj4+PiAgwqDCoMKgwqDCoMKgwqBJJ2Qgbm90ZSBlcnJvciBwcm9jZXNzaW5nIGFyZ3Mgb24gZW50 cnkgaXMgdGhlIHNpbXBsZXN0IGNhc2UuDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoEluIGEgbW9y ZSBjb21wbGV4IGNhc2Ugd2hlbiBjbGVhbnVwIGlzIHJlcXVpcmVkIHRoZSBnb3RvDQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqBsYWJlbCBpcyBtb3JlIHVzZWZ1bC4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oEkgZ3Vlc3Mgd2UgY291bGQgYXJndWUgZm9yIGxlc3MgdHlwaW5nIGFuZCBtb3JlIHN5bW1ldHJ5 IA0KPj4+Pj4gYW5kDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqBzYXkgdXNlIEFTU0VSVCwgQ09OU1RS QUlOVCwgYW5kIFJFUVVJUkUuIEkgZ3Vlc3MgeW91IGNvdWxkIA0KPj4+Pj4gYWRkDQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqBhbiBBU1NFUlRfQUNUSU9OIHRvby4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oFRoZSBBc3NlcnRNYWNyb3MuaCB2ZXJzaW9ucyBhbHNvIHN1cHBvcnQgX3F1aWV0IChza2lwIHRo ZQ0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgcHJpbnQpIGFuZCBfc3RyaW5nIChhZGQgYSBzdHJpbmcg dG8gdGhlIHByaW50KSBzbyB5b3UgZW5kIA0KPj4+Pj4gdXANCj4+Pj4+IHdpdGg6DQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqBSRVFVSVJFDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqBSRVFVSVJFX1NUUklO Rw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgUkVRVUlSRV9RVUlFVA0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgUkVRVUlSRV9BQ1RJT04NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoFJFUVVJUkVfQUNUSU9OX1NU UklORw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgUkVRVUlSRV9BQ1RJT05fUVVJRVQNCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoFdlIGNvdWxkIGFsc28gZW5kIHVwIHdpdGgNCj4+Pj4+ICDCoMKgwqDCoMKg wqDCoENPTlNUUkFJTlQNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoENPTlNUUkFJTlRfU1RSSU5HDQo+ Pj4+PiAgwqDCoMKgwqDCoMKgwqBDT05TVFJBSU5UX1FVSUVUDQo+Pj4+PiAgwqDCoMKgwqDCoMKg wqBJIHRoaW5rIHRoZSBtYWluIGlkZWEgYmVoaW5kIF9RVUlFVCBpcyB5b3UgY2FuIHNpbGVuY2Ug DQo+Pj4+PiB0aGluZ3MNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoHRoYXQgYXJlIHRvbyBub2lzeSwg YW5kIHlvdSBjYW4gZWFzaWx5IG1ha2Ugbm9pc2UgdGhpbmdzIA0KPj4+Pj4gc2hvdw0KPj4+Pj4g IMKgwqDCoMKgwqDCoMKgdXAgYnkgcmVtb3ZpbmcgdGhlIF9RVUlFVCB0byBkZWJ1Zy4NCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoEknZCB0aG91Z2h0IEkgdGhyb3cgb3V0IHRoZSBvdGhlciBmb3JtcyBm b3IgZm9sa3MgdG8gdGhpbmsNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoGFib3V0LiBJJ20gcHJvYmFi bHkgYmlhc2VkIGFzIEkgdXNlZCB0byBsb29raW5nIGF0IGNvZGUgDQo+Pj4+PiBhbmQNCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoHNlZWluZyB0aGluZ3MgbGlrZSByZXF1aXJlX2FjdGlvbl9zdHJpbmco QXJnMSAhPSBOVUxMLA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgRXJyb3JFeGl0LCBTdGF0dXMgPSBF RklfSU5WQUxJRF9QQVJBTUVURVIsICIxc3QgQXJnMSANCj4+Pj4+IGNoZWNrIik7DQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqBUaGFua3MsDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqBBbmRyZXcgRmlzaA0K Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgUFMgVGhlIG9sZCBkZWJ1ZyBtYWNyb3MgaGFkIDIgdmVyc2lv bnMgb2YgQ09OU1RSQUlOVCBjaGVjayANCj4+Pj4+IGFuZA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKg dmVyaWZ5LiBUaGUgY2hlY2sgdmVyc2lvbiB3YXMgY29tcGlsZWQgb3V0IG9uIGEgcmVsZWFzZSAN Cj4+Pj4+IGJ1aWxkLA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgdGhlIHZlcmlmeSB2ZXJzaW9uIGFs d2F5cyBkb2VzIHRoZSBjaGVjayBhbmQganVzdCBza2lwcyANCj4+Pj4+IHRoZQ0KPj4+Pj4gIMKg wqDCoMKgwqDCoMKgREVCVUcgcHJpbnQuDQo+Pj4+Pg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBNaWtlDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpGcm9tOip2aXQ5Njk2IDx2 aXQ5Njk2QHByb3Rvbm1haWwuY29tIA0KPj4+Pj4gPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwu Y29tPg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOnZpdDk2OTZAcHJvdG9u bWFpbC5jb20+Pg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqU2VudDoqRnJpZGF5LCBG ZWJydWFyeSAxNCwgMjAyMCA5OjM4IEFNDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpU bzoqS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tIA0KPj4+Pj4g PG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+DQo+Pj4+PiAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCpDYzoqZGV2ZWxAZWRrMi5ncm91cHMuaW8gDQo+Pj4+PiA8bWFp bHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPjxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+Ow0K Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRl bC5jb20gDQo+Pj4+PiA8bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tPg0KPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tPj47IEdhbywgWmhp Y2hhbw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8emhpY2hhby5nYW9AaW50ZWwuY29t IA0KPj4+Pj4gPG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20+PG1haWx0bzp6aGljaGFvLmdh b0BpbnRlbC5jb20+PjsNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTWFydmluIEjDpHVz ZXIgPG1hcnZpbi5oYWV1c2VyQG91dGxvb2suY29tIA0KPj4+Pj4gPG1haWx0bzptYXJ2aW4uaGFl dXNlckBvdXRsb29rLmNvbT4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpt YXJ2aW4uaGFldXNlckBvdXRsb29rLmNvbT4+OyBMYXN6bG8gRXJzZWsNCj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgPGxlcnNla0ByZWRoYXQuY29tDQo+Pj4+PiA8bWFpbHRvOmxlcnNla0By ZWRoYXQuY29tPjxtYWlsdG86bGVyc2VrQHJlZGhhdC5jb20+Pg0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAqU3ViamVjdDoqUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQg UENEIHRvDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRpc2FibGUgc2FmZSBzdHJpbmcg Y29uc3RyYWludCBhc3NlcnRpb25zDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE1pY2hh ZWwsDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdlbmVyYWxpc2luZyB0aGUgYXBwcm9h Y2ggbWFrZXMgZ29vZCBzZW5zZSB0byBtZSwgYnV0IA0KPj4+Pj4gd2UNCj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbmVlZCB0byBtYWtlIGFuIG9idmlvdXMgZGlzdGluZ3Vpc2hhYmxlIGRp ZmZlcmVuY2UgYmV0d2VlbjoNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLSBwcmVjb25k aXRpb24gYW5kIGludmFyaWFudCBhc3NlcnRpb25zIChpLmUuIA0KPj4+Pj4gYXNzZXJ0aW9ucywN Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hlcmUgZnVuY3Rpb24gd2lsbCBOT1Qgd29y ayBpZiB0aGV5IGFyZSB2aW9sYXRlZCkNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLSBj b25zdHJhaW50IGFzc2VydHMgKGkuZS4gYXNzZXJ0aW9ucywgd2hpY2ggYWxsb3cgdXMgDQo+Pj4+ PiB0bw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcG90IHVuaW50ZW50aW9uYWwgYmVo YXZpb3VyIHdoZW4gcGFyc2luZyB1bnRydXN0ZWQgDQo+Pj4+PiBkYXRhLA0KPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBidXQgd2hpY2ggZG8gbm90IGJyZWFrIGZ1bmN0aW9uIGJlaGF2aW91 cikuDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFzIHdlIHdhbnQgdG8gdXNlIHRoaXMg b3V0c2lkZSBvZiBTYWZlU3RyaW5nLMKgwqBJIA0KPj4+Pj4gc3VnZ2VzdA0KPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB0aGUgZm9sbG93aW5nOg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAtIEludHJvZHVjZSBERUJVR19QUk9QRVJUWV9BU1NFUlRfQ09OU1RSQUlOVF9FTkFCTEVE IA0KPj4+Pj4gMHg0MA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiaXQgZm9yIFBjZERl YnVnUHJvcGVydHlNYXNrwqBpbnN0ZWFkDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9m wqBQY2RBc3NlcnRPblNhZmVTdHJpbmdDb25zdHJhaW50cy4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLSBJbnRyb2R1Y2UgRGVidWdBc3NlcnRDb25zdHJhaW50RW5hYmxlZCBEZWJ1Z0xp YiANCj4+Pj4+IGZ1bmN0aW9uDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRvIGNoZWNr IGZvcsKgREVCVUdfUFJPUEVSVFlfQVNTRVJUX0NPTlNUUkFJTlRfRU5BQkxFRC4NCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLSBJbnRyb2R1Y2UgQVNTRVJUX0NPTlNUUkFJTlQgbWFjcm8s IHRoYXQgd2lsbCBhc3NlcnQgDQo+Pj4+PiBvbmx5DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmwqBEZWJ1Z0NvbnN0cmFpbnRBc3NlcnRFbmFibGVkwqByZXR1cm5zIHRydWUuDQo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gQ2hhbmdlIFNhZmVTdHJpbmcgQVNTRVJUUw0KPj4+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbsKgU0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVD SyB0b8KgQVNTRVJUX0NPTlNUUkFJTlRzLg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAt IFVzZcKgQVNTRVJUX0NPTlNUUkFJTlTCoGluIG90aGVyIHBsYWNlcyB3aGVyZSBuZWNlc3Nhcnku DQo+Pj4+Pg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBJIGJlbGlldmUgdGhpcyB3YXkg bGluZXMgYmVzdCB3aXRoIEVESyBJSSBkZXNpZ24uIElmIA0KPj4+Pj4gdGhlcmUNCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJlIG5vIG9iamVjdGlvbnMsIEkgY2FuIHN1Ym1pdCB0aGUg cGF0Y2ggaW4gdGhlIA0KPj4+Pj4gYmVnaW5uaW5nDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG9mIG5leHQgd2Vlay4NCj4+Pj4+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJl c3Qgd2lzaGVzLA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBWaXRhbHkNCj4+Pj4+DQo+ Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMTQg0YTQtdCy0YAuIDIwMjAg0LMu LCDQsiAyMDowMCwgS2lubmV5LCBNaWNoYWVsIEQNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20gDQo+Pj4+PiA8bWFpbHRvOm1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PiDQvdCw0L/QuNGB0LDQ uyjQsCk6DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVml0YWx5LA0KPj4+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEkgd2FudCB0byBtYWtlIHN1cmUgYSBm ZWF0dXJlIFBDRCBjYW4gYmUgdXNlZCB0bw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRpc2FibGUgQVNTRVJUKCkgYmVoYXZpb3IgaW4gbW9yZSB0aGFuIGp1c3Qgc2FmZQ0K Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cmluZyBmdW5jdGlvbnMgaW5C YXNlTGliLg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoENhbiB3ZSBjb25z aWRlciBjaGFuZ2luZyB0aGUgbmFtZSBhbmQgZGVzY3JpcHRpb24NCj4+Pj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBvZlBjZEFzc2VydE9uU2FmZVN0cmluZ0NvbnN0cmFpbnRzdG8g YmUgbW9yZSANCj4+Pj4+IGdlbmVyaWMsDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc28gaWYgd2UgZmluZCBvdGhlciBsaWIgQVBJcywgdGhlIG5hbWUgd2lsbCBtYWtlIHNl bnNlPw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE1heWJlIHNvbWV0aGlu ZyBsaWtlOlBjZEVuYWJsZUxpYnJhcnlBc3NlcnRDaGVja3M/DQo+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgRGVmYXVsdCBpcyBUUlVFLiBDYW4gc2V0IHRvIEZBTFNFIGluIERT QyBmaWxlIHRvDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGlzYWJsZSBB U1NFUlQoKSBjaGVja3MuDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVGhh bmtzLA0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE1pa2UNCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqRnJvbToqZGV2ZWxAZWRrMi5ncm91cHMuaW8g DQo+Pj4+PiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+PGRldmVsQGVk azIuZ3JvdXBzLmlvDQo+Pj4+PiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW8+PipPbiBCZWhhbGYgT2YqVml0YWx5DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgQ2hlcHRzb3YgdmlhIEdyb3Vwcy5Jbw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCpTZW50OipGcmlkYXksIEZlYnJ1YXJ5IDE0LCAyMDIwIDM6NTUgQU0NCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqVG86Kktpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbSANCj4+Pj4+IDxtYWlsdG86bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0 bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+OyBHYW8sIExpbWluZw0KPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxsaW1pbmcuZ2FvQGludGVsLmNvbSANCj4+Pj4+IDxt YWlsdG86bGltaW5nLmdhb0BpbnRlbC5jb20+PG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT4+ Ow0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdhbywgWmhpY2hhbyA8emhp Y2hhby5nYW9AaW50ZWwuY29tIA0KPj4+Pj4gPG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20+ DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgDQo+Pj4+PiA8bWFpbHRvOnpo aWNoYW8uZ2FvQGludGVsLmNvbT4+O2RldmVsQGVkazIuZ3JvdXBzLmlvDQo+Pj4+PiA8bWFpbHRv OmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgKkNjOipNYXJ2aW4gSMOkdXNlciA8bWFydmluLmhhZXVzZXJAb3V0bG9v ay5jb20gDQo+Pj4+PiA8bWFpbHRvOm1hcnZpbi5oYWV1c2VyQG91dGxvb2suY29tPg0KPj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86bWFydmluLmhhZXVzZXJAb3V0 bG9vay5jb20+PjsgTGFzemxvIEVyc2VrDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgPGxlcnNla0ByZWRoYXQuY29tIA0KPj4+Pj4gPG1haWx0bzpsZXJzZWtAcmVkaGF0LmNv bT48bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAqU3ViamVjdDoqUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQg UENEIA0KPj4+Pj4gdG8NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkaXNh YmxlIHNhZmUgc3RyaW5nIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucw0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFJlcGx5aW5nIGFzIHBlciBMaW1pbmcncyByZXF1ZXN0IGZvciB0 aGlzIHRvIGJlIA0KPj4+Pj4gbWVyZ2VkDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50byBlZGsyLXN0YWJsZTIwMjAwMi4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBPbiBNb24sIEZlYiAxMCwgMjAyMCBhdCAxNDoxMiwgdml0OTY5Ng0KPj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDx2aXQ5Njk2QHByb3Rvbm1haWwuY29tIA0K Pj4+Pj4gPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29tPg0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86dml0OTY5NkBwcm90b25tYWlsLmNvbT4+IHdyb3Rl Og0KPj4+Pj4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEhl bGxvLA0KPj4+Pj4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oEl0IGhhcyBiZWVuIHF1aXRlIHNvbWUgdGltZSBzaW5jZSB3ZSBzdWJtaXR0ZWQgDQo+Pj4+PiB0 aGUNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhdGNoIHdp dGggc28gZmFyIG5vIG5lZ2F0aXZlIHJlc3BvbnNlLiBBcyBJDQo+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZW50aW9uZWQgcHJldmlvdXNseSwgbXkgdGVhbSB3 aWxsIHN0cm9uZ2x5DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBiZW5lZml0IGZyb20gaXRzIGxhbmRpbmcgaW4gRURLIElJIG1haW5saW5lLiANCj4+Pj4+IFNp bmNlDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpdCBkb2Vz IG5vdCBhZGQgYW55IHJlZ3Jlc3Npb25zIGFuZCBjYW4gYmUgDQo+Pj4+PiB2aWV3ZWQNCj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFzIGEgZmVhdHVyZSBpbXBs ZW1lbnRhdGlvbiBmb3IgdGhlIHJlc3Qgb2YgDQo+Pj4+PiBFREsgSUkNCj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVzZXJzLCBJIHJlcXVlc3QgdGhpcyB0byBi ZSBtZXJnZWQgdXBzdHJlYW0gaW4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGVkazItc3RhYmxlMjAyMDAyLg0KPj4+Pj4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJlc3Qgd2lzaGVzLA0KPj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVml0YWx5DQo+Pj4+Pg0KPj4+Pj4+IDI3INGP0L3Q si4gMjAyMCDQsy4sINCyIDEyOjQ3LCB2aXQ5Njk2DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqA8dml0OTY5NkBwcm90b25tYWlsLmNvbSANCj4+Pj4+IDxtYWls dG86dml0OTY5NkBwcm90b25tYWlsLmNvbT4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86dml0OTY5NkBwcm90b25tYWlsLmNvbT4+INC90LDQv9C4 0YHQsNC7KNCwKToNCj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4gSGkgTWlrZSwNCj4+Pj4+Pg0KPj4+ Pj4+IEFueSBwcm9ncmVzcyB3aXRoIHRoaXM/IFdlIHdvdWxkIHJlYWxseSBiZW5lZml0DQo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcm9tIHRoaXMgbGFuZGlu ZyBpbiB0aGUgbmV4dCBzdGFibGUgcmVsZWFzZS4NCj4+Pj4+Pg0KPj4+Pj4+IEJlc3QsDQo+Pj4+ Pj4gVml0YWx5DQo+Pj4+Pj4NCj4+Pj4+Pj4gOCDRj9C90LIuIDIwMjAg0LMuLCDQsiAxOTozNSwg S2lubmV5LCBNaWNoYWVsIEQNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbSANCj4+Pj4+IDxtYWlsdG86bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4g0L3QsNC/0LjR gdCw0Lso0LApOg0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+PiBIaSBWaXRhbHksDQo+Pj4+Pj4+ DQo+Pj4+Pj4+IFRoYW5rcyBmb3IgdGhlIGFkZGl0aW9uYWwgYmFja2dyb3VuZC4gSSB3b3VsZCBs aWtlIGEgY291cGxlIA0KPj4+Pj4+PiBleHRyYSBkYXkgdG8gcmV2aWV3IHRoZSBQQ0QgbmFtZSBh bmQNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRoZSBwbGFj ZXMNCj4+Pj4+Pj4gdGhlIFBDRCBtaWdodCBwb3RlbnRpYWxseSBiZSB1c2VkLg0KPj4+Pj4+Pg0K Pj4+Pj4+PiBJZiB3ZSBmaW5kIG90aGVyIEFQSXMgd2hlcmUgQVNTRVJUKCkgYmVoYXZpb3INCj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlzIG9ubHkNCj4+Pj4+ Pj4gdmFsdWFibGUgZHVyaW5nIGRldi9kZWJ1ZyB0byBxdWlja2x5IGlkZW50aWZ5DQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtaXN1c2UNCj4+Pj4+Pj4gd2l0 aCB0cnVzdGVkIGRhdGEgYW5kIHRoZSBBUEkgcHJvdmlkZXMgcHJlZGljYWJsZSByZXR1cm4gDQo+ Pj4+Pj4+IGJlaGF2aW9yIHdoZW4gQVNTRVJUKCkgaXMgZGlzYWJsZWQsIHRoZW4NCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEkgd291bGQNCj4+Pj4+Pj4gbGlr ZSB0byBoYXZlIGEgcGF0dGVybiB3ZSBjYW4gcG90ZW50aWFsbHkgYXBwbHkNCj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRvIGFsbA0KPj4+Pj4+PiB0aGVzZSBB UElzIGFjcm9zcyBhbGwgcGFja2FnZXMuDQo+Pj4+Pj4+DQo+Pj4+Pj4+IFRoYW5rcywNCj4+Pj4+ Pj4NCj4+Pj4+Pj4gTWlrZQ0KPj4+Pj4+Pg0KPj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4+Pj4+Pj4+IEZyb206ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBl ZGsyLmdyb3Vwcy5pbz4NCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoA0KPj4+Pj4gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz48ZGV2ZWxAZWRrMi5ncm91 cHMuaW8gDQo+Pj4+PiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vw cy5pbz4+IE9uDQo+Pj4+Pj4+PiBCZWhhbGYgT2YgVml0YWx5IENoZXB0c292IHZpYSBHcm91cHMu SW8NCj4+Pj4+Pj4+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSA2LCAyMDIwIDEwOjQ0IEFNDQo+Pj4+ Pj4+PiBUbzogS2lubmV5LCBNaWNoYWVsIEQNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbSANCj4+Pj4+IDxtYWls dG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4N Cj4+Pj4+Pj4+IENjOmRldmVsQGVkazIuZ3JvdXBzLmlvIDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91 cHMuaW8+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFp bHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoFBDRCB0bw0KPj4+Pj4+Pj4gZGlzYWJsZSBzYWZlIHN0cmluZyBjb25zdHJh aW50IGFzc2VydGlvbnMNCj4+Pj4+Pj4+DQo+Pj4+Pj4+PiBIaSBNaWtlLA0KPj4+Pj4+Pj4NCj4+ Pj4+Pj4+IFllcywgdGhlIHByaW1hcnkgdXNlIGNhc2UgaXMgZm9yIFVFRkkNCj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFwcGxpY2F0aW9ucy4gV2UNCj4+Pj4+ Pj4+IGRvIG5vdCB3YW50IHRvIGRpc2FibGUgQVNTRVJU4oCZcyBjb21wbGV0ZWx5LCBhcyBhc3Nl cnRpb25zIHRoYXQgDQo+Pj4+Pj4+PiBtYWtlIHNlbnNlLCBpLmUuIHRoZSBvbmVzDQo+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzaWduYWxpc2luZw0KPj4+Pj4+ Pj4gYWJvdXQgaW50ZXJmYWNlIG1pc3VzZSwgYXJlIGhlbHBmdWwgZm9yIGRlYnVnZ2luZy4NCj4+ Pj4+Pj4+DQo+Pj4+Pj4+PiBJIGhhdmUgYWxyZWFkeSBleHBsYWluZWQgaW4gdGhlIEJaIHRoYXQN Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJhc2ljYWxseSBh bGwNCj4+Pj4+Pj4+IHNhZmUgc3RyaW5nIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucyBtYWtlIG5vDQo+ Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZW5zZSBmb3INCj4+ Pj4+Pj4+IGhhbmRsaW5nIHVudHJ1c3RlZCBkYXRhLiBXZSBmaW5kIHRoaXMgdXNlIGNhc2UNCj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZlcnkNCj4+Pj4+Pj4+ IGxvZ2ljYWwsIGFzIHRoZXNlIGZ1bmN0aW9ucyBiZWhhdmUgcHJvcGVybHkgd2l0aCBhc3NlcnRp b25zIA0KPj4+Pj4+Pj4gZGlzYWJsZWQgYW5kIGNvdmVyIGFsbCB0aGVzZSBlcnJvciBjb25kaXRp b25zIGJ5IHRoZSByZXR1cm4gDQo+Pj4+Pj4+PiBzdGF0dXNlcy4gSW4gc3VjaA0KPj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l0dWF0aW9uIGlzDQo+Pj4+Pj4+ PiBub3QgdXNlZnVsIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gYXNzZXJ0LCBhcw0KPj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2UgZW5kIHVwDQo+Pj4+Pj4+PiBp bmVmZmljaWVudGx5IHJlaW1wbGVtZW50aW5nIHRoZSBsb2dpYy4gSQ0KPj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd291bGQgaGF2ZQ0KPj4+Pj4+Pj4gbGlrZWQg dGhlIGFwcHJvYWNoIG9mIGRpc2N1c3NpbmcgdGhlIGludGVyZmFjZXMgaW5kaXZpZHVhbGx5LCAN Cj4+Pj4+Pj4+IGJ1dCBJIHN0cnVnZ2xlIHRvIGZpbmQgYW55IHRoYXQNCj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1ha2VzDQo+Pj4+Pj4+PiBzZW5zZSBmcm9t IHRoaXMgcG9pbnQgb2Ygdmlldy4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+PiBBc2NpaVN0clRvR3VpZCB3 aWxsIEFTU0VSVCB3aGVuIHRoZSBsZW5ndGggb2YgdGhlIHBhc3NlZCBzdHJpbmcgDQo+Pj4+Pj4+ PiBpcyBvZGQuIEZ1bmN0aW9ucyB0aGF0IGNhbm5vdCwgYWhlbSwgcGFyc2UsIGZvciB1cyBhcmUg cHJldHR5IA0KPj4+Pj4+Pj4gbXVjaCB1c2VsZXNzLg0KPj4+Pj4+Pj4gQXNjaWlTdHJDYXRTIHdp bGwgQVNTRVJUIHdoZW4gdGhlIGFwcGVuZGVkDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzdHJpbmcgZG9lcw0KPj4+Pj4+Pj4gbm90IGZpdCB0aGUgYnVmZmVy LiBGb3IgdXMgdGhpcyBsb2dpYyBtYWtlcyB0aGlzIGZ1bmN0aW9uIA0KPj4+Pj4+Pj4gcHJldHR5 IG11Y2ggZXF1aXZhbGVudCB0byBkZXByZWNhdGVkDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBhbmQgdGh1cw0KPj4+Pj4+Pj4gdW5hdmFpbGFibGUgQXNjaWlT dHJDYXQsIGV4Y2VwdCBpdCBpcyBhbHNvIHNsb3dlci4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+PiBNeSBv cmlnaW5hbCBzdWdnZXN0aW9uIHdhcyB0byByZW1vdmUgdGhlDQo+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhc3NlcnRpb25zDQo+Pj4+Pj4+PiBlbnRpcmVseSwg YnV0IHNldmVyYWwgcGVvcGxlIGhlcmUgc2FpZCB0aGF0DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aGV5IHVzZQ0KPj4+Pj4+Pj4gdGhlbSB0byB2ZXJpZnkg dXNhZ2UgZXJyb3JzIHdoZW4gaGFuZGxpbmcNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRydXN0ZWQgZGF0YS4NCj4+Pj4+Pj4+IFRoaXMgbWFrZXMgZ29vZCBz ZW5zZSB0byBtZSwgc28gd2Ugc3VnZ2VzdCB0bw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3VwcG9ydA0KPj4+Pj4+Pj4gYm90aCBjYXNlcyBieSBpbnRyb2R1 Y2luZyBhIFBDRCBpbiB0aGlzIHBhdGNoLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IEJlc3Qgd2lzaGVz LA0KPj4+Pj4+Pj4gVml0YWx5DQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IDYg0Y/QvdCyLiAyMDIwINCz Liwg0LIgMjE6MjgsIEtpbm5leSwgTWljaGFlbCBEDQo+Pj4+Pj4+PiA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20gPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+PiDQvdCw0L/QuNGB0LDQuyjQsCk6DQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+ Pg0KPj4+Pj4+Pj4+IEhpIFZpdGFseSwNCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IElzIHRoZSB1c2Ug Y2FzZSBmb3IgVUVGSSBBcHBsaWNhdGlvbnM/DQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiBUaGVyZSBp cyBhIGRpZmZlcmVudCBtZWNoYW5pc20gdG8gZGlzYWJsZSBhbGwNCj4+Pj4+Pj4+IEFTU0VSVCgp DQo+Pj4+Pj4+Pj4gc3RhdGVtZW50cyB3aXRoaW4gYSBVRUZJIEFwcGxpY2F0aW9uLg0KPj4+Pj4+ Pj4+DQo+Pj4+Pj4+Pj4gSWYgYSBjb21wb25lbnQgaXMgY29uc3VtaW5nIGRhdGEgZnJvbSBhbg0K Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW50cnVzdGVkDQo+ Pj4+Pj4+PiBzb3VyY2UsDQo+Pj4+Pj4+Pj4gdGhlbiB0aGF0IGNvbXBvbmVudCBpcyByZXF1aXJl ZCB0byB2ZXJpZnkgdGhlDQo+Pj4+Pj4+PiB1bnRydXN0ZWQNCj4+Pj4+Pj4+PiBkYXRhIGJlZm9y ZSBwYXNzaW5nIGl0IHRvIGEgZnVuY3Rpb24gdGhhdCBjbGVhcmx5DQo+Pj4+Pj4+PiBkb2N1bWVu dHMNCj4+Pj4+Pj4+PiBpcyBpbnB1dCByZXF1aXJlbWVudHMuIElmIHRoaXMgYXBwcm9hY2ggaXMN Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvbGxvd2VkLA0K Pj4+Pj4+Pj4gdGhlbg0KPj4+Pj4+Pj4+IHRoZSBCYXNlTGliIGZ1bmN0aW9ucyBjYW4gYmUgdXNl ZCAiYXMgaXMiIGFzDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBsb25nIGFzDQo+Pj4+Pj4+PiB0aGUNCj4+Pj4+Pj4+PiBBU1NFUlQoKSBjb25kaXRpb25zIGFy ZSB2ZXJpZmllZCBiZWZvcmUgY2FsbGluZy4NCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IElmIHRoZXJl IGFyZSBzb21lIEFQSXMgdGhhdCBjdXJyZW50bHkNCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRvY3VtZW50IHRoZWlyDQo+Pj4+Pj4+PiBBU1NFUlQoKQ0KPj4+ Pj4+Pj4+IGJlaGF2aW9yIGFuZCB3ZSB0aGluayB0aGF0IEFTU0VSVCgpIGJlaGF2aW9yIGlzDQo+ Pj4+Pj4+PiBpbmNvcnJlY3QgYW5kDQo+Pj4+Pj4+Pj4gc2hvdWxkIGJlIGhhbmRsZWQgYnkgYW4g ZXhpc3RpbmcgZXJyb3IgcmV0dXJuDQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2YWx1ZSwNCj4+Pj4+Pj4+IHRoZW4gd2UNCj4+Pj4+Pj4+PiBzaG91bGQgZGlz Y3VzcyBlYWNoIG9mIHRob3NlIEFQSXMgaW5kaXZpZHVhbGx5Lg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+ Pj4gTWlrZQ0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4+Pj4+Pj4+Pj4gRnJvbTpkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8bWFpbHRv OmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgDQo+Pj4+PiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPjxkZXZlbEBl ZGsyLmdyb3Vwcy5pbyANCj4+Pj4+IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOmRldmVsQGVk azIuZ3JvdXBzLmlvPj4gT24NCj4+Pj4+Pj4+Pj4gQmVoYWxmIE9mIFZpdGFseSBDaGVwdHNvdiB2 aWEgR3JvdXBzLklvDQo+Pj4+Pj4+Pj4+IFNlbnQ6IEZyaWRheSwgSmFudWFyeSAzLCAyMDIwIDk6 MTMgQU0gVG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8gDQo+Pj4+Pj4+Pj4+IDxtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8+DQo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4+Pj4+PiBTdWJqZWN0OiBb ZWRrMi1kZXZlbF0gW1BBVENIIHYzIDAvMV0gQWRkIFBDRCB0bw0KPj4+Pj4+Pj4gZGlzYWJsZQ0K Pj4+Pj4+Pj4+PiBzYWZlIHN0cmluZyBjb25zdHJhaW50IGFzc2VydGlvbnMNCj4+Pj4+Pj4+Pj4N Cj4+Pj4+Pj4+Pj4gUkVGOg0KPj4+Pj4+Pj4+PiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5v cmcvc2hvd19idWcuY2dpP2lkPTIwNTQNCj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gUmVxdWVzdGlu ZyBmb3IgbWVyZ2UgaW4gZWRrMi1zdGFibGUyMDIwMDIuDQo+Pj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4+ IENoYW5nZXMgc2luY2UgVjE6DQo+Pj4+Pj4+Pj4+IC0gRW5hYmxlIGFzc2VydGlvbnMgYnkgZGVm YXVsdCB0byBwcmVzZXJ2ZSB0aGUNCj4+Pj4+Pj4+IG9yaWdpbmFsDQo+Pj4+Pj4+Pj4+IGJlaGF2 aW91cg0KPj4+Pj4+Pj4+PiAtIEZpeCBidWd6aWxsYSByZWZlcmVuY2UgbGluaw0KPj4+Pj4+Pj4+ PiAtIFVwZGF0ZSBkb2N1bWVudGF0aW9uIGluIEJhc2VMaWIuaA0KPj4+Pj4+Pj4+Pg0KPj4+Pj4+ Pj4+PiBWaXRhbHkgQ2hlcHRzb3YgKDEpOg0KPj4+Pj4+Pj4+PiBNZGVQa2c6IEFkZCBQQ0QgdG8g ZGlzYWJsZSBzYWZlIHN0cmluZw0KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY29uc3RyYWludA0KPj4+Pj4+Pj4+PiBhc3NlcnRpb25zDQo+Pj4+Pj4+Pj4+DQo+ Pj4+Pj4+Pj4+IE1kZVBrZy9NZGVQa2cuZGVjIHwgNiArKw0KPj4+Pj4+Pj4+PiBNZGVQa2cvTGli cmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mIHwgMTEgKy0tIA0KPj4+Pj4+Pj4+PiBNZGVQa2cvSW5j bHVkZS9MaWJyYXJ5L0Jhc2VMaWIuaCB8IDc0DQo+Pj4+Pj4+Pj4+ICsrKysrKysrKysrKystLS0t LS0tDQo+Pj4+Pj4+Pj4+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvU2FmZVN0cmluZy5jIHwgNCAr LSBNZGVQa2cvTWRlUGtnLnVuaSANCj4+Pj4+Pj4+Pj4gfCA2ICsrDQo+Pj4+Pj4+Pj4+IDUgZmls ZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMzANCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlbGV0aW9ucygtKQ0KPj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+ PiAtLQ0KPj4+Pj4+Pj4+PiAyLjIxLjAgKEFwcGxlIEdpdC0xMjIuMikNCj4+Pj4+Pj4+Pj4NCj4+ Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gLT0tPS09LT0tPS09DQo+Pj4+Pj4+Pj4+IEdyb3Vwcy5pbyA8 aHR0cDovL2dyb3Vwcy5pby8+PGh0dHA6Ly9ncm91cHMuaW8vPkxpbmtzOiBZb3UNCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlY2VpdmUgYWxsIG1lc3NhZ2Vz IHNlbnQgdG8NCj4+Pj4+Pj4+IHRoaXMNCj4+Pj4+Pj4+Pj4gZ3JvdXAuDQo+Pj4+Pj4+Pj4+DQo+ Pj4+Pj4+Pj4+IFZpZXcvUmVwbHkgT25saW5lICgjNTI4MzcpOg0KPj4+Pj4+Pj4+PiBodHRwczov L2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS81MjgzNw0KPj4+Pj4+Pj4+PiBNdXRlIFRo aXMgVG9waWM6DQo+Pj4+Pj4+PiBodHRwczovL2dyb3Vwcy5pby9tdC82OTQwMTk0OC8xNjQzNDk2 DQo+Pj4+Pj4+Pj4+IEdyb3VwIE93bmVyOmRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvIA0KPj4+ Pj4+Pj4+PiA8bWFpbHRvOmRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpkZXZlbCtvd25lckBlZGsy Lmdyb3Vwcy5pbz4NCj4+Pj4+Pj4+Pj4gVW5zdWJzY3JpYmU6aHR0cHM6Ly9lZGsyLmdyb3Vwcy5p by9nL2RldmVsL3Vuc3ViDQo+Pj4+Pj4+Pj4+IFttaWNoYWVsLmQua2lubmV5QGludGVsLmNvbSAN Cj4+Pj4+Pj4+Pj4gPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+XQ0KPj4+Pj4+Pj4+PiAtPS09LT0tPS09LT0NCj4+Pj4+Pj4+Pg0KPj4+ Pj4+Pj4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pg0KPj4+Pg0K Pj4+Pg0KPj4+DQo+Pj4gDQo+Pg0KDQoNCg0K