From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (EUR05-AM6-obe.outbound.protection.outlook.com [40.92.91.104]) by mx.groups.io with SMTP id smtpd.web10.3621.1582193900452835336 for ; Thu, 20 Feb 2020 02:18:21 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: outlook.de, ip: 40.92.91.104, mailfrom: mhaeuser@outlook.de) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E+lzhA1/B55DYIbZmwim2SfjKQJ09+LHw5KzpL5jMwWkhZ+qvnQE9703Ns+gSRtZ/0QDNBFRrgZ504akeym+Y57BxgR7vHqJjaAkGkuXhA5NQROGGcHxglGpQ8JBKJfA2VqE1se3/VpxGPG91vAAcN2osF21NCQ8xYbGD2fw6s2JibdgctyN0UpCm/BTLapjkYXgfMmgAMX+gTsYGFdWtaexCA7rUCLpd9uBogF8iHS0VciLEbA0lBW6WINC5HcstwGtjlgDuvBNVgJcoJsmJTNkqfTDiQM+I7MMr9HfbFdrNOlcy1ea/ym6Uhm0tzijQfcEdCx1Rjdako+Fh5J4og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qbw8PnufxOLmNts7SE8DPRmRFLusTva+/PjBfZXakdM=; b=C1BoXS9yjOLLDbBlqGPLPizJaEhWPx8bZsbrhvZnF+6NDHeRxgsAtQLOuMj7tt7Mk6zYbmc4u++D301Sa65UzlHQ85Lz68MbVg1tdmz3hOrSjfszBJj7h41jA7po6NNNHP69kwehfaN3HFHPGKbzUhkYa00Ymass3yWU4ljywGtYmTnBazFA/p2B3PElInvzeeBH4vVYb1vZJLuJDeDb0jxMLZTMp/U3skA4L0Yq4zIQaDauwADrh+kPIn4xdV2MsSRURkYfgi9vult0oCYN83q/uWaUZKeJoo/wJFoYLa+Vknq42TUF2LC5556hWw6cNz8yi6bkoK+jWDTJdrkYsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from AM6EUR05FT043.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc11::3a) by AM6EUR05HT191.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc11::113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.18; Thu, 20 Feb 2020 10:18:18 +0000 Received: from VI1P195MB0734.EURP195.PROD.OUTLOOK.COM (10.233.240.60) by AM6EUR05FT043.mail.protection.outlook.com (10.233.241.173) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.18 via Frontend Transport; Thu, 20 Feb 2020 10:18:18 +0000 Received: from VI1P195MB0734.EURP195.PROD.OUTLOOK.COM ([fe80::15e1:575c:e0cb:6cf1]) by VI1P195MB0734.EURP195.PROD.OUTLOOK.COM ([fe80::15e1:575c:e0cb:6cf1%7]) with mapi id 15.20.2729.033; Thu, 20 Feb 2020 10:18:18 +0000 Received: from [192.168.1.234] (95.88.181.216) by AM0PR06CA0001.eurprd06.prod.outlook.com (2603:10a6:208:ab::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.17 via Frontend Transport; Thu, 20 Feb 2020 10:18:17 +0000 From: =?UTF-8?B?TWFydmluIEjDpHVzZXI=?= To: Andrew Fish , "devel@edk2.groups.io" CC: Mike Kinney , vit9696 , "Gao, Liming" , "Gao, Zhichao" , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , 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: AQHVwlkNIfzmFi0UlEORchDoajoAgafd+XGAgAAESQCAAwDRAIAdakGAgBYYdwCABlUnAIAAVWUAgAAKeYCAAFd1AIAAFAEAgAA6XgCAADEGAIAA3TSAgAGwOQCAALivgIAEKA6AgACuJQA= Date: Thu, 20 Feb 2020 10:18:18 +0000 Message-ID: References: <20200103171242.63839-1-vit9696@protonmail.com> <492A300B-1CED-4FF0-98F8-20D1E116DCC0@protonmail.com> <2719704F-6DB4-444F-97FE-DBF71D39B698@apple.com> <3D7EB7E9-9B94-40AD-A0E9-BFDEB787F6DA@apple.com> In-Reply-To: Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM0PR06CA0001.eurprd06.prod.outlook.com (2603:10a6:208:ab::14) To VI1P195MB0734.EURP195.PROD.OUTLOOK.COM (2603:10a6:800:146::15) x-incomingtopheadermarker: OriginalChecksum:5BF0C6E67FCFE8EA8903CD4E00EA01DB9DD61033020E49DB603BCA9A55873C70;UpperCasedChecksum:53DC7A4AC204CB9BB7E0C6BA47F24E3EFC7815B70B0189B420BE8DDB05AE16B3;SizeAsReceived:8920;Count:50 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [VGKZl93scHOjZ2cybIqGRH5nEN+n/jZ2] x-microsoft-original-message-id: x-ms-publictraffictype: Email x-incomingheadercount: 50 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 2c6c89d0-abab-4828-77cc-08d7b5ee3418 x-ms-exchange-slblob-mailprops: =?utf-8?B?akdkaTA2WE1XZ0FVdjBxQ0FYSUxSNFVVRXREZmMzYStFVWJhbmlmM2doSkZu?= =?utf-8?B?aWw4b1pEZThld3dnRlIxcU5TNkpCanF3ZE5SYW9GZzJQZms0NFg3QTBzUlZj?= =?utf-8?B?SjdMWXRMZi9aZFhSK0dDcVpjNlN2Vnp0b3AvNFhOQ3Z4MUJkakxJVzJQRCsw?= =?utf-8?B?QWdSaHRhNENYZzNXOFpkaW9YdEloR2dCOEc4RW5nZ2RlUXNaUkFGUlBjcE5r?= =?utf-8?B?OHk0TWxna055bmNBMU12R1BVZmw4TSsrcGNNNTI2cWxiSDR0RTNweHJPWVVy?= =?utf-8?B?NVFqYk4vZ1RTM203ZFQzaG9NYS9hYjRIQjgxWnJQTHhUOGJRMm94Y3JTaDhO?= =?utf-8?B?OGsrRVNuaGR0R1FTUS9ySllXUWNId29sN0dSOVBUaFdIdUlnZ3hCZDdBVFNu?= =?utf-8?B?blJRNkdGSTVTWXcxdXBMOUdFZmVDTWxCaS9DU0hwT0ZsKytUbzVtZGdiTXU4?= =?utf-8?B?VnU5QmY5MTEzMUQ0cDlJSEcyOHd0blkxOUV0L09ia1VKM1creWFVNUFkVGx2?= =?utf-8?B?aTZ3SVdRbXhTRS8zbTlHdmdrVGNzUVVOenpIY2hmWkVkQ0Vubzl1YXNkUlFO?= =?utf-8?B?RC9BeHFPSm1KR3pnUHovVDA1WWdNQndJbTArbnFFYklMeU52S1ZGLzNnVUF3?= =?utf-8?B?Q0lWUXFwT2RSOXE5SWVVQTdqazM4WFFkZklYYXhEYWg5VGs4WE8zVExZd01v?= =?utf-8?B?MXRpTDZHNWtTelJGN3N6WnBNVWlvVWNYY2orc3gxa2IzR0hnRC9RNFo2MEE1?= =?utf-8?B?Z04zZWNHQmF1SjVFNlI1NmFybkFBOGs1bkc4WFhwWVBTUDZ2MFFCdXFlaXVG?= =?utf-8?B?MFNSNS9CQkNNR3htanJLRXZqRWRiWFhjODdUdWg4RmNGVmVzVEJlZlZFSGc1?= =?utf-8?B?STI4UENtRXdocVh0dGdyVG41cHJZM1pKWU5namxhRFM1UWxuUDhvUnpQUWhP?= =?utf-8?B?Y0ZjelpRaitOOU44TVRMR3B0N3Ixc0FaZ3prcG1kU0doeU00MDc0UlQ2TnpI?= =?utf-8?B?UlVpUnZVN2JnYW9DYVdzZ1BJMk12b2o4eldpcmttU0tQZUVSZEtpam93M0xy?= =?utf-8?B?bWwxNDdYTm04SVBqSU1jdkI1akc0V3h6dXJJZUtyelVNTTFyVmZSSWRjeG8w?= =?utf-8?B?dkhWdmlZM0NOTmhuZnE5cWlISzA3YXY5cXVnaCtkalkwb2E0Z1NpSmhpR3No?= =?utf-8?B?UHJaQ29CY29KMlFwNWVNR2dqQmV6N2tTUTJyL2lGMFZVYTJ6MzRpMEp1SlhO?= =?utf-8?Q?4Jxvl+DZnUwzSiOWhUl0Pr9AY0KFmCQEv1M/Kdz9QvljuC8?= x-ms-traffictypediagnostic: AM6EUR05HT191: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZH4xHBNNTaK8qzUYzfDrmLR2Q0jyZM8PNNU1fBfKuPtDBgBaMqXnUVvxCdlEmD6uDogtPDqaBhtuIZF5rPz7kgG8hASL7vcVoMacbo/eyWhR0KSR1wlksh9Yr7BruyXqzpKQTY9yAqFqIpcCegh/dqd3FGgQdkakDsEI1ZvrJPPcX2w7LCnR46qkYrtNzZr5CiPocOcpDcxgAyLbKKkRjSUzufdwZAtSTQa+e0FIyTw= x-ms-exchange-antispam-messagedata: Nov1Sb01df4zyruR/5scJSZxGve+ldxQSC4iOtZ3AOoMA7HGWVsAy5h6fFBq32pKoL93UHGbB8gNMnwKRo85M6V8Fiwf6EkT10OyVELvVpCSLAOD2edlL3tYA3zWDsntVJTSME4nWO6ZqxI7wYfUxg== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 2c6c89d0-abab-4828-77cc-08d7b5ee3418 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2020 10:18:18.1497 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6EUR05HT191 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <9605D8BDA9274F4ABD06DBEC2A728B8C@EURP195.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 SGV5IEFuZHJldywNCg0KVGhhbmtzIG9uY2UgYWdhaW4gZm9yIHlvdXIgY29tbWVudHMsIG1pbmUg YXJlIGlubGluZS4NCg0KQmVzdCByZWdhcmRzLA0KTWFydmluDQoNCkFtIDIwLjAyLjIwMjAgdW0g MDA6NTUgc2NocmllYiBBbmRyZXcgRmlzaDoNCj4gDQo+IA0KPj4gT24gRmViIDE3LCAyMDIwLCBh dCAxMjoyNiBBTSwgTWFydmluIEjDpHVzZXIgPG1oYWV1c2VyQG91dGxvb2suZGUgDQo+PiA8bWFp bHRvOm1oYWV1c2VyQG91dGxvb2suZGU+PiB3cm90ZToNCj4+DQo+PiBHb29kIGRheSBBbmRyZXcs DQo+Pg0KPj4gRmlyc3Qgb2YgYWxsLCB0aGFuayB5b3UgdmVyeSBtdWNoIGZvciBwdXR0aW5nIHRo aXMgYW1vdW50IG9mIHRob3VnaHQNCj4+IGludG8gdGhlIHNpdHVhdGlvbi4gSSBkZWZpbml0ZWx5 IGFncmVlIHdpdGggdGhlIHByb2JsZW0geW91IHNlZSwgYnV0IEkNCj4+IGNvdWxkIGFsc28gbGl2 ZSB3aXRoIFZpdGFseSdzIHByb3Bvc2FsLiBIb3dldmVyLCBJIHRoaW5rIHlvdSBhcmUNCj4+IG92 ZXJjb21wbGljYXRpbmcgdGhlIHNpdHVhdGlvbiBhIGxpdHRsZS4gU28sIHdlIGRvIGFncmVlIHRo ZSBjYWxsZXINCj4+IG5lZWRzIGNvbnRyb2wgb2YgdGhlIGJlaGF2aW91ciwgaG93ZXZlciB5b3Vy IHByb3Bvc2FsIG5lZWRzICJzdXBwb3J0Ig0KPj4gZnJvbSBib3RoIHRoZSBjYWxsZXIgKGNob29z ZSB0aGUgaGFuZGxlcikgYW5kIHRoZSBjYWxsZWUgKGNhbGwgdGhlDQo+PiBoYW5kbGVyKSBhbmQg aXMgbmVpdGhlciB0aHJlYWQtc2FmZSBub3IgZXZlbnQtc2FmZSBhcyBWaXRhbHkgYWxyZWFkeQ0K Pj4gcG9pbnRlZCBvdXQuIEZpeGluZyB0aGVzZSBwcm9ibGVtcyB3b3VsZCBvbmx5IHdvcnNlbiB0 aGUgY29tcGxleGl0eQ0KPj4gc2l0dWF0aW9uIGluIG15IG9waW5pb24uDQo+IA0KPiBXZWxsIEVG SSBkb2VzIG5vdCBoYXZlIFRocmVhZHMgYnV0IGl0IGRvZXMgaGF2ZSBFdmVudHMuIEkgYWdyZWUg aWYgYW4gDQoNClNvcnJ5LCB3ZSB3ZXJlIHJlZmVyaW5nIHRvIHRoZSBVRUZJIE11bHRpLVByb2Nl c3NvciBzZXJ2aWNlcywgc28gdGhyZWFkcyANCmluIGEgcGh5c2ljYWwgc2Vuc2UuIEkgdGhpbmsg dmVyeSBzaW1pbGFyIGNvbmNlcm5zIGFwcGx5IHJlZ2FyZGluZyB0aGVzZSANCnNlcnZpY2VzIGFz IHdpdGggc29mdHdhcmUgbXVsdGl0aHJlYWRpbmcgaW4gdGhpcyBjb250ZXh0LCBwbGVhc2UgY29y cmVjdCANCm1lIGlmIEknbSB3cm9uZy4NCg0KPiBFdmVudCBoYW5kbGVyIGNoYW5nZXMgdGhlIGNv bnN0cmFpbnQgaGFuZGxlciBpdCB3b3VsZCBuZWVkIHRvIHJlc3RvcmUgaXQgDQo+IHNvIG15IHBy b3Bvc2FsIGlzIG1pc3NpbmcgYW4gQVBJLg0KPiANCj4gQ09OU1RSQUlOVF9IQU5ETEVSICoNCj4g R2V0Q29uc3RyYWludEhhbmRsZXIgKA0KPiAgwqAgVk9JRA0KPiAgwqAgKQ0KPiB7DQo+ICDCoCBy ZXR1cm4gZ0FjdGl2ZUNvbnN0cmFpbnRIYW5kbGVyOw0KPiB9DQo+IA0KPiBZb3UgYW4gYWx3YXlz IHVzZSB0aGUgc3RhbmRhcmQgRUZJDQo+IA0KPiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIg dGhhdCBhbGwgdGhlIEVGSSBpbWFnZXMgDQo+IChkcml2ZXJzL2FwcGxpY2F0aW9ucykgYXJlIHN0 YXRpY2FsbHkgbGlua2VkIGFuZCB0aGV5IGNhcnJ5IGEgdW5pcXVlIA0KPiBpbnN0YW5jZSBvZiB0 aGUgRGVidWcgKG9yIG5ldyBDb25zdHJhaW50KSBsaWIuIFNvIGluIHlvdXIgZHJpdmVyIG9yIEFw cCANCj4gaXMgdmVyeSBzZWxmIGNvbnRhaW5lZC4gQWxzbyBhIGxvdCBvZiB0aGUgZXZlbnRzIGFy ZSBwaGFzZSByZWxhdGVkIA0KPiBjYWxsYmFja3MsIGFuZCBzaW5jZSB0aGVyZSBhcmUgbm8gdGhy ZWFkcyB5b3VyIGRyaXZlcnMgbWFpbiB0aHJlYWQgaXMgDQo+IG9ubHkgcmVhbGx5IHJ1bm5pbmcg d2hlbiB5b3VyIGRyaXZlciwgb3IgYXBwLCBkaXNwYXRjaGVzLiBBIGxvdCBvZiB0aGUgDQo+IGNh bGxiYWNrcyBhcmUgdmlhIHByb3RvY29scyB5b3VyIGRyaXZlciBwdWJsaXNoZXMsIGJ1dCB0aGV5 IGhhdmUgc3RyaWN0IA0KPiBUUEwgcnVsZXMgc28geW91IGNhbiBwcmV2ZW50IHJlZW50cmFuY3kg aW4gZ2VuZXJhbC4gU28gdGhlcmUgaXMgYSBsb3QgDQo+IG1vcmUgZGV0ZXJtaW5pc20gaW4gRUZJ IHZzLiBnZW5lcmljIHRocmVhZGVkIGNvZGluZy4NCg0KVGhpcyBpcyB0cnVlLCBidXQgeWV0IGFs bCBlZGdlLWNhc2VzIHNob3VsZCBiZSBjb3ZlcmVkIChldmVudCANCiJpbnRlcnJ1cHRpb24iLCBh Y3R1YWwgKHByb2Nlc3NvcikgaW50ZXJydXB0cywgTXVsdGktUHJvY2Vzc29yIA0KZXhlY3V0aW9u KSwgc28gZGV2ZWxvcGVycyBkbyBub3QgcnVuIGludG8gdW5leHBlY3RlZCAoc2VlbWluZ2x5KSAN CnVuZGV0ZXJtaW5pc3RpYyBiZWhhdmlvdXIuIEhvd2V2ZXIsIEkgYWdyZWUgaXQgaXMgZWFzaWVy IHRvIGVuc3VyZSBmb3IgDQpzb21ldGhpbmcgbGlrZSBVRUZJIHRoYW4gZm9yIGEgZnVsbC1mbGVk Z2VkIE9TIG9mIGNvdXJzZS4NCg0KPiANCj4+DQo+PiBEaXZlcmdpbmcgZnJvbSBib3RoIG9mIHlv dXIgY29uY2VwdHMgZW50aXJlbHkgYW5kIGtlZXBpbmcgaXQgdmVyeQ0KPj4gc2ltcGxlLCB3aGF0 IGtlZXBzIHVzIGZyb20gc2ltcGx5IEFTU0VSVGluZyBiYXNlZCBvbiByZXR1cm4gdmFsdWU/IFdl DQo+PiBjb3VsZCBpbnRyb2R1Y2UgYSBDT05TVFJBSU5UX0FTU0VSVCBvciBzaW1pbGFyLCBidXQg aXQgd291bGQgYmUNCj4+IGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gVml0YWx5J3MgcHJvcG9z YWwuIEl0IHdvdWxkIGJlIGEgY2FsbGVyIG1hY3JvDQo+PiB0byBBU1NFUlQgYmFzZWQgb24gYSBw cmUtZGVmaW5lZCBsaXN0IG9mIHJldHVybiBzdGF0dXNlcy4NCj4+IFRvIGFjaGlldmUgdGhpcywg d2Ugd291bGQgb3JkZXIgYWxsIHN0YXR1c2VzIGJ5IHR5cGVzIChjbGFzc2VzKS4gQXQgdGhlDQo+ PiBtb21lbnQsIEkgY2FuIG9ubHkgdGhpbmsgb2YgdHdvOiAiZW52aXJvbm1lbnRhbCIgYW5kICJj b25zdHJhaW50Ii4gRm9yDQo+PiBleGFtcGxlLCAiT3V0IE9mIFJlc291cmNlcyIgd291bGQgYmUg ZW52aXJvbm1lbnRhbCBhbmQgIkludmFsaWQNCj4+IFBhcmFtZXRlciIgd291bGQgYmUgY29uc3Ry YWludC4gV2UgY291bGQgZGVmaW5lIGVudmlyb25tZW50IHN0YXR1c2VzDQo+PiBleHBsaWNpdGx5 IChhcyBpdCBpcyBsZXNzIGxpa2VseSBuZXcgZW52aXJvbm1lbnQgc3RhdHVzZXMgYXJlDQo+PiBp bnRyb2R1Y2VkKSBhbmQgZGVmaW5lIGNvbnN0cmFpbnQgc3RhdHVzZXMgYXMgIm5vdCBlbnZpcm9u bWVudGFsIiAodG8NCj4+IHNpbGVudGx5IHN1cHBvcnQgbmV3IGNvbnN0cmFpbnQgc3RhdHVzZXMs IGhvd2V2ZXIgb2YgY291cnNlIGl0IGlzIGENCj4+IGxpdHRsZSBlcnJvci1wcm9uZSB3aXRoIGZv cndhcmRzLWNvbXBhdGliaWxpdHkpLiBBcyBhIGJvbnVzLCBpdCBmb3JjZXMNCj4+IGRldmVsb3Bl cnMgdG8gdXNlIHRydWx5IGFwcHJvcGlhdGUgZXJyb3IgY29kZXMgYW5kIGNvcnJlY3RseSBwcm9w YWdhdGUNCj4+IHRoZW0gZnJvbSBjYWxsZWVzIGZvciB0aGlzIHRvIHdvcmsuIDopDQo+PiBUaGlz IHNvbHV0aW9uIHdvdWxkIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlIGluIGEgY29tcGlsYXRpb24g c2Vuc2UgYXMgaXQNCj4+IGNhbiBzaW1wbHkgYmUgYSBuZXcgbWFjcm8sIGhvd2V2ZXIgZm9yIGl0 cyBwb3NzaWJsZSBjb21wbGV4aXR5IChzd2l0Y2gNCj4+IGNhc2VzKSBJIG1pZ2h0IGFjdHVhbGx5 IHByZWZlciBhIGZ1bmN0aW9uLiBCdXQgaXQgd291bGQgbm90IGJlDQo+PiBiYWNrd2FyZHMtY29t cGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IGZ1bmN0aW9uYWxpdHksIHdoaWNoIG5vbmUgb2YgdGhl DQo+PiAiY2FsbGVyLWJhc2VkIiBjb25jZXB0cyBjYW4gYmUgYW55d2F5ICh0aGUgY2FsbGVyIG5l ZWRzIGV4cGxpY2l0IGNvZGUpLg0KPj4NCj4gDQo+IEl0IGlzIGFuIGludGVyZXN0aW5nIGlkZWEg dG8gYWRkIGdyYW51bGFyaXR5LCBidXQgYXQgdGhlIGVuZCBvZiB0aGUgDQo+IGtub3dsZWRnZSBv ZiB0aGUgY29ycmVjdCBiZWhhdmlvciBvZiB0aGUgbG93ZXIgbGV2ZWwgbGlicmFyeSBjb2RlIHJl YWxseSANCj4gbGl2ZXMgaW4gY29kZSB0aGF0IGNhbGxzIHRoaXMuIEkgd2lsbCBhZG1pdCBJIGNh biBzZWUgc29tZSB2YWx1ZSB0byANCj4gbWFraW5nwqBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIg ZGlmZmVyZW50IHRoYW7CoFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxMLg0KDQpTbyBmYXIsIEkgcHJl ZmVyIHRoaXMgaWRlYSBhcyB0aGUgb25seSByZXF1aXJlbWVudCBpcyB0aGF0IGZ1bmN0aW9uIA0K Y29udHJhY3RzIGFyZSB3ZWxsLWRlc2lnbmVkIChpLmUuIHJlZmxlY3QgZW52aXJvbm1lbnRhbCB2 cyBjb25zdHJhaW50IA0KZXJyb3JzIGJ5IHVzaW5nIHNlbnNpY2FsIHJldHVybiB2YWx1ZXMpLg0K DQo+IA0KPiBJIGtpbmQgb2Ygd2VudCBkb3duIHRoZSBDMTEgcGF0aCAodGhhbmtzIGZvciBtZW50 aW9uaW5nIHRoZSBldmVudCBpc3N1ZSkgDQo+IGJ1dCB0aGVyZSBhcmUgb3RoZXIgd2F5cyB0byBl bXBvd2VyIHRoZSBjYWxsZXIuDQoNCkl0J3MgZGVmaW5pdGVseSBhbHdheXMgYSBnb29kIGlkZWEg dG8gc3RpY2sgdG8gc3RhbmRhcmRzIGFuZCANCmNvbnZlbnRpb25zLiBJdCBhcHBlYXJzIG15IHBy b3Bvc2FsIGlzIG5vdCBjb252ZW50aW9uYWwgYXQgYWxsLiBIb3dldmVyLCANCkkgYWxzbyBiZWxp ZXZlIHRoZXJlIHNvbWV0aW1lcyBpcyBhIG1vcmUgcHJhZ21hdGljIGFwcHJvYWNoIHRvIHRoaW5n cyANCndpdGhvdXQgaW1wb3Npbmcgc2lnbmlmaWNhbnQgZGlzYWR2YW50YWdlcywgZXNwZWNpYWxs eSBieSBsaW1pdGluZyB0aGUgDQpzY29wZS4NCg0KVG8gYmUgaG9uZXN0LCBJJ20gbm93IGludGVy ZXN0ZWQgZm9yIHdoaWNoIGNhc2VzIHRoZSBDMTEgcGF0aCBpcyANCmFkdmFudGFnb3VzIG92ZXIg bXkgYXBwcm9hY2gsIGV4Y2VwdCB0aGF0IHNldHRpbmcgdGhlIGNvbnN0cmFpbnQgaGFuZGxlciAN CmlzIGEgb25lLXRpbWUgdGhpbmcgaWYgaXQgcmVtYWlucyBjb25zaXN0ZW50IHRocm91Z2hvdXQg ZXhlY3V0aW9uLiBJJ2QgDQppbWFnaW5lIGZvciBzb21lIG1vcmUgY29tcGxleCBoYW5kbGluZyBs b2dpYyBJIGNhbm5vdCB0aGluayBvZiBhbiANCmV4YW1wbGUgb2YgKGFsbCB3ZSByZWFsbHkgd2Fu dCB0byBkbyBpcyBBU1NFUlQgY29uZGl0aW9uYWxseSBhZnRlcmFsbCksIA0KYW5kIEkgaG9wZSB0 aGlzIGlzIG5vdCBzb21ldGhpbmcgZWRrMiB3b3VsZCBldmVyIHJ1biBpbnRvIC0ga2VlcCBpdCAN CnNpbXBsZSBpbiBteSBvcGluaW9uLg0KDQo+IA0KPiBXZSBjb3VsZCBsZXQgdGhlIGNhbGxlciBk ZWNpZGUgdGhlIGJlaGF2aW9yLiBUaGF0IGltcGxpZXMgcGFzc2luZyANCj4gQ0hFQ0tfREVGQVVM VCAoUENEKSwgQ0hFQ0tfQVNTRVJULCBvciBDSEVDS19OVUxMLg0KPiANCj4gVGhlbiBrZWVwIGJh Y2t3YXJkIGNvbXBhdGliaWxpdHkuDQo+ICNkZWZpbmUgU3RyQ3B5UyhEZXN0aW5hdGlvbixEZXN0 TWF4LFNvdXJjZSlTdHJDcHVTQyhEZXN0aW5hdGlvbiwgDQo+IERlc3RNYXgsIFNvdXJjZSwgQ0hF Q0tfREVGQVVMVCkNCj4gDQo+IEJ1dCB0aGF0IHNlZW1zIGxpa2UgYSBsb3Qgb2YgdGhyYXNoIHRv IHRoZSBCYXNlTGliIGFuZCBhIGxvdCBvZiBuZXcgDQo+IG1hZ2ljIHRvIHRlYWNoIGRldmVsb3Bl cnMuDQoNCkZ1bGx5IGFncmVlZCB3aXRoIHRoZSBsYXN0IHNlbnRlbmNlLiBUaGF0IHdhcyBvbmUg b2YgdGhlIGFwcHJvYWNoZXMgSSANCm1lbnRpb25lZCBiZWZvcmUgbXkgcHJvcG9zYWwsIGJ1dCBJ IGluY2x1ZGVkIGl0IG9ubHkgZm9yIGNvbXBsZXRlbmVzcycgDQpzYWtlIHNvIHdlIGhhdmUgYSBm dWxsIG92ZXJ2aWV3LiBUaGlzIHJlcXVpcmVzIHByb3RvdHlwZSBhZGFwdGlvbiBmb3IgDQpsaXRl cmFsbHkgZXZlcnkgZnVuY3Rpb24gdGhhdCBtYXkgYmUgdXNlZCBpbiBzdWNoIGEgd2F5ICh3aGlj aCBzY29wZXMgDQpiZXlvbmQganVzdCBCYXNlTGliKSwgdWdseSBtYWNyb3MgYW5kIG1vcmUuIFBs ZWFzZSBkb24ndCBkbyB0aGF0LiA6KQ0KDQo+IA0KPiBJIHdvdWxkIGd1ZXNzIHRoYXQgdGhlIG1v c3QgY29tbW9uIHVzYWdlIG9mIG15IGxpYnJhcnkgd291bGQgYmUgdG8gdHVybiANCj4gQ29uc3Ry YWludCBDaGVja2luZyBvZmYgaW4gdGhlIGVudGlyZSBkcml2ZXIgb3IgYXBwIGFuZCB0aGVuIGhh bmRsZSB0aGUgDQo+IGVycm9ycyBtYW51YWxseS4NCg0KSSdtIGFmcmFpZCB0aGF0J3Mgd2hhdCBt b3N0IHBsYXRmb3JtcyB3aWxsIGVuZCB1cCB3aXRoLiBPdXIgbWFpbiBjb25jZXJuIA0Kd2FzIHdl IG1heSBub3QgYWxsb3cgc3VjaCBjb25zdHJhaW50IHZpb2xhdGlvbnMgdG8gQVNTRVJULCB0aGF0 IGlzIG91ciANCm1haW4gb2JqZWN0aXZlLiBIb3dldmVyLCBpZiBpdCBjYW4gYmUgbWFkZSBhZHZh bnRhZ2VvdXMgdG8gZnV0dXJlIGNvZGluZyANCnByYWN0aWNlLCBpdCB3b3VsZCBiZSBuaWNlIHRv IGhhdmUgYSBkZWNlbnQgc29sdXRpb24gZm9yIHRoZSBjYWxsZXIgdG8gDQpoYXZlIHNvbWUgZnJl ZWRvbS4gTW9yZSBhYm91dCB0aGF0IGJlbG93Lg0KDQo+IA0KPiBPbiBkcml2ZXIvYXBwIGVudHJ5 IGRvOg0KPiANCj4gU2V0Q29uc3RyYWludEhhbmRsZXIgKElnbm9yZUNvbnN0cmFpbnRIYW5kbGVy KTsNCj4gDQo+IFRoZW4gaGFuZGxlIHRoZSBlcnJvcnMgeW91IGNhcmUgYWJvdXQuDQo+IA0KPiBT dGF0dXMgPSBTdHJDcHlTIChEZXN0aW5hdGlvbixEZXN0TWF4LFNvdXJjZSk7DQo+IGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gcmV0dXJu IFN0YXR1czsNCj4gfQ0KPiANCj4gb3INCj4gDQo+IFN0YXR1cyA9IFN0ckNweVMgKERlc3RpbmF0 aW9uLERlc3RNYXgsU291cmNlKTsNCj4gaWYgKFN0YXR1cyA9PSBSRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIpIHsNCj4gQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gcmV0dXJuIFN0YXR1czsN Cj4gfQ0KPiANCj4gQXQgdGhlIGVuZCBvZiB0aGUgZGF5IEkndmUgY29kZSBteSBkcml2ZXIgYW5k IEkga25vdyB0aGUgcnVsZXMgSSBjb2RlZCANCj4gdG8gYW5kIEkgd2FudCBwcmVkaWN0YWJsZSBi ZWhhdmlvci4NCg0KWWVzLCBhZ3JlZWQuIFdlIHdhbnQgcHJlZGljdGFibGUgYmVoYXZpb3VyIG9m ICJub3QgQVNTRVJUaW5nIiBmb3IgDQp1bnRydXN0ZWQgaW5wdXQsIGJlY2F1c2Ugd2UgKmtub3cq IGl0IGlzIHVudHJ1c3RlZCBhbmQgdGhlIGZ1bmN0aW9uIA0KKmNhbiogKGFuZCBzaG91bGQgYmUg YWJsZSB0bykgaGFuZGxlIGl0IC0gaXQgaXMgc2ltcGx5IG5vdCBhIHByZWNvbmRpdGlvbi4NCg0K PiANCj4gSSBjYW4gc2VlIGEgU2kgdmVuZG9yIGRldmVsb3Bpbmcgd2l0aCBBU1NFUlQgQ29uc3Ry YWludCBvZmYgYW5kIHRoZW4gDQo+IHdoZW4gdGhlIGN1c3RvbWVyIHR1cm5zIGl0IG9uIHN0dWZm IHN0YXJ0cyByYW5kb21seSBicmVha2luZy4NCg0KQSBsb3Qgb2YgU2kgYW5kIGNvcmUgKER4ZUNv cmUsIFBlaUNvcmUsIHJlbGF0ZWQgbGlicmFyaWVzKSBjb2RlIHNlZW1zIHRvIA0KQVNTRVJUIChm cmVxdWVudGx5ICpvbmx5KiBBU1NFUlQgd2l0aCBubyBhY3R1YWwgaGFuZGxpbmcsIGVzcGVjaWFs bHkgZm9yIA0KQWxsb2NhdGVQb29sKCkgPT0gTlVMTCkgd2hlbiB0aGVyZSBhcmUgdmFsaWQgZXJy b3Igc2l0dWF0aW9ucyBwb3NzaWJsZSwgDQpzbyBJIGhvcGUgdGhpcyBhcHByb2FjaCB3b3VsZCBi ZSBhIGhhbmR5IHRvb2wgdG8gc2F0aXNmeSB0aGVpciBuZWVkcyANCndpdGhvdXQgdGhpcyBhYnNv bHV0ZWx5IHRlcnJpYmxlIHByYWN0aWNlLiA6KQ0KDQoNCg0KSSB0aGluayBJIHVuZGVyc3Rvb2Qg YWxsIHlvdXIgY29tbWVudCBpbmRpdmlkdWFsbHksIGJ1dCBJJ20gYWZyYWlkIEknbSANCm5vdCBz dXJlIHdoYXQgeW91ciBzdWdnZXN0ZWQgc29sdXRpb24gaXMgcmlnaHQgbm93LiBZb3UgY29tbWVu dGVkIA0Kc2VtaS1wb3NpdGl2ZWx5IG9uIG15IHByb3Bvc2FsLCB5b3UgZGlkIG5vdCByZXZva2Ug eW91ciBDMTEgcGF0aCwgYW5kIA0KeW91IGZ1cnRoZXJtb3JlIGludHJvZHVjZWQgQ0hFQ0tfKiAt IHRoaXMgaXMgYnJhaW5zdG9ybWluZywgYW5kIEkgdGhpbmsgDQppdCdzIGEgZ3JlYXQgdGhpbmcs IGJ1dCBJJ20gc2ltcGx5IG5vdCBzdXJlIHdoYXQgeW91ciBleGFjdCBnb2FsIG9yIA0KcHJlZmVy ZWQgcm91dGUgaXMgcmlnaHQgbm93Lg0KDQpNeSBwcm9wb3NhbCBpcyBhIGJpdCB1bmNvbnZlbnRp b25hbCBhbmQgSSBhZ3JlZSBpdCBzb3VuZHMgaGFja3ksIGJ1dCBzbyANCmZhciBJJ20gbm90IGNv bnZpbmNlZCBpdCB3b3VsZCBiZSBiYWQgcHJhY3RpY2UgYXQgYWxsLiBJdCBib2lscyBkb3duIHRv IA0Kc2Vuc2VmdWxseSB1c2luZyB0aGUgaW5mb3JtYXRpb24gYSBmdW5jdGlvbiByZXR1cm5zLiBU aGlzIHJlcXVpcmVzIA0Kbm90aGluZyBidXQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBzZW5zaWNh bCBpbmZvcm1hdGlvbiwgd2hpY2ggZXZlcnkgDQpmdW5jdGlvbiBzaG91bGQgYW55d2F5Lg0KDQpZ b3VyIHByb3Bvc2FsIGlzIGNsb3NlIHRvIHRoZSBDIHN0YW5kYXJkLCBhbmQgdGhhdCBpcyBhIGdv b2QgdGhpbmcgZmlyc3QgDQpvZiBhbGwuIEhvd2V2ZXIsIHdpdGggdGhlIHJlc3Qgb2YgZWRrMiBu b3QgYmVpbmcgdmVyeSBjb21wbGlhbnQsIEkgZG9uJ3QgDQp0aGluayBpdCdzIGFuIGluc3RhbnQg d2luIGFzIGluICJ3ZSBqdXN0IGNvbXBseSB0byBzdGFuZGFyZHMiIGJlY2F1c2UgDQp0aGlzIGNo b2ljZSBkb2VzIG5vdCBzdWRkZW5seSBtYWtlIHBvcnRpbmcgZXhpc3RpbmcgY29kZSBzaWduaWZp Y2FudGx5IA0KZWFzaWVyIGNvbXBhcmVkIHRvIHRoZSB0b3RhbCBsYWNrIG9mIHN0YW5kYXJkIGxp YnJhcnkgc3VwcG9ydCBmb3IgDQphbnl0aGluZyBidXQgU2hlbGwgYXBwcy4NClByYWdtYXRpY2Fs bHksIEkgdGhpbmsgaXQgc29sdmVzIHRoZSBzYW1lIHByb2JsZW0gZXF1YWxseSB3ZWxsLCBidXQg YXQgYSANCmhpZ2hlciBjb3N0IChlbnN1cmluZyB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2FmZSBh bmQsIHN0cmljdGx5IHNwZWFraW5nLCANCmFuIGV2ZXItc28tc2xpZ2h0IHJ1bnRpbWUgb3Zlcmhl YWQpLg0KDQo+IA0KPj4gSG93ZXZlciwgQ09OU1RSQUlOVF9BU1NFUlQgbWlnaHQgYWN0dWFsbHkg YmUgdG9vIHNwZWNpZmljLiBNYXliZSB3ZSB3YW50DQo+PiBzb21ldGhpbmcgbGlrZSAiQVNTRVJU X1JFVFVSTiIgYW5kIGhhdmUgdGhlIGNsYXNzZXMgIkFTU0VSVF9DT05TVFJBSU5UIg0KPj4gYW5k ICJBU1NFUlRfRU5WSVJPTk1FTlQiIChiaXRmaWVsZCwgbGlrZSB3aXRoIERFQlVHKS4gVGhlIHJl YXNvbiBmb3INCj4+IHRoaXMgaXMgZW1iZWRkZWQgc3lzdGVtcyB3aGVyZSB0aGUgZW52aXJvbm1l bnQgaXMgdHJ1c3RlZC9rbm93biBhbmQgdGhlDQo+PiBmaXJtd2FyZSBpcyBzdXBwb3NlZCB0byBi ZSB3ZWxsLW1hdGNoZWQuIFRoaW5rIG9mIGEgU29DIHdpdGggc29sZGVyZWQNCj4+IFJBTSAtIHRo ZSBmaXJtd2FyZSBjYW4gdmVyeSB3ZWxsIG1ha2UgYXNzdW1wdGlvbiBhYm91dCBtZW1vcnkgY2Fw YWNpdHkNCj4+IChjb25zaWRlcmluZyB1c2FnZSBhY3Jvc3MgYWxsIG1vZHVsZXMgaW4gdGhlIHdv cnN0IGNhc2UpIGFuZCBtaWdodA0KPj4gYWN0dWFsbHkgd2FudCBBU1NFUlRzIG9uIHNvbWV0aGlu ZyBsaWtlICJPdXQgT2YgUmVzb3VyY2VzIiBiZWNhdXNlIGl0J3MNCj4+IHN1cHBvc2VkIHRvIGJl IGltcG9zc2libGUgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhpcyBzcGVjaWZpYyBkZXNpZ24uDQo+ PiBJdCdzIHBvc3NpYmxlIHRoaXMgd291bGQgbmVlZCBhIG5ldyBQQ0QncyBpbnZvbHZlbWVudCwg Zm9yIGV4YW1wbGUgdG8NCj4+IHRlbGwgRHhlQ29yZSB3aGV0aGVyIHRvIEFTU0VSVCBvbiBlbnZp cm9ubWVudGFsIGFzcGVjdHMgdG9vLiBUaGVyZSBjb3VsZA0KPj4gYmUgYW4gYXJndW1lbnQtbGVz cyBtYWNybyB0aGF0IHVzZXMgUENEIGNvbmZpZyBhcyBiYXNlLCBhbmQgYW4NCj4+IGFyZ3VtZW50 LWJhc2VkIG1hY3JvIHRoYXQgdXNlcyBvbmx5IHRoZSBwYXJhbWV0ZXJzLiBPZiBjb3Vyc2UgdGhp cw0KPj4gY2Fubm90IGNvdmVyIGV2ZXJ5b25lJ3MgdmVyeSBzcGVjaWZpYyBwcmVmZXJlbmNlcyBh cyBpdCdzIGEgcGVyLW1vZHVsZQ0KPj4gc3dpdGNoLCBidXQgaXQncyB0aGUgYmVzdCBJIGNhbiB0 aGluayBvZiByaWdodCBub3cuDQo+Pg0KPj4gU29tZXRoaW5nIGEgYml0IHVucmVsYXRlZCBub3cs IGJ1dCBpdCB3b3VsZCBtYWtlIHRoaXMgZWFzaWVyLiBZb3UNCj4+IG1lbnRpb25lZCBQZUNvZmZM aWIgYXMgZXhhbXBsZSwgYW5kIEkgdGhpbmsgaXQncyBhIGdvb2Qgb25lLCBob3dldmVyIGl0DQo+ PiBoYXMgaXRzIG93biByZXR1cm4gc3RhdHVzIHR5cGUgd2l0aGluIHRoZSBjb250ZXh0WzFdIHdo aWNoIEkgd2lsbCBtb3N0DQo+PiBkZWZpbml0ZWx5IGJlIGdldHRpbmcgcmlkIG9mIGFzIHBhcnQg b2YgbXkgdXBjb21pbmcgKGluIHRoZSBmYXItaXNoDQo+PiBmdXR1cmUgOikgKSBSRkMuIENvdWxk IHdlIGV4cGFuZCBSRVRVUk5fU1RBVFVTIHRvIGhhdmUgKHZlcnkgaGlnaD8pDQo+PiByZXNlcnZl ZCB2YWx1ZXMgZm9yIGNhbGxlci1kZWZpbmVkIGVycm9yIGNvZGVzIHRvIGhhdmUgYWxsIFJFVFVS Tl9TVEFUVVMNCj4+IG1hY3JvcyBhcHBseSB0byB0aG9zZSBzcGVjaWFsIHJldHVybiB2YWx1ZXMg dG9vPyBXZSdkIG5lZWQgdG8gZGVmaW5lDQo+PiB0aGVtIGNhdGVnb3JpY2FsbHkgYXMgImNvbnN0 cmFpbnQgc3RhdHVzIiwgYnV0IEkgZG9uJ3Qgc2VlIGhvdyBhIGxpYnJhcnkNCj4+IHdvdWxkIGRl Y2xhcmUgYSBuZXcgZW52aXJvbm1lbnQgc3RhdHVzIGFueXdheS4NCj4+DQo+PiBSZWdhcmRpbmcg TWRlUGtnQ29tcGF0YWJpbGl0eS5kc2MuaW5jLCBJIHRoaW5rIG9uZSBjYW4gb3ZlcnJpZGUgbGli cmFyeQ0KPj4gY2xhc3NlcyBmcm9tIHRoZSBpbmMgYnkgZGVjbGFyaW5nIHRoZW0gYWZ0ZXIgdGhl ICFpbmNsdWRlIHN0YXRlbWVudCwNCj4+IHBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZy4g SWYgc28sIEkgc3Ryb25nbHkgYWdyZWUgYW5kIHRoaW5rIGl0DQo+PiBzaG91bGQgYmUgdGhlIGNh c2UgZm9yIGFsbCBwYWNrYWdlcywgc28gb25lIG9ubHkgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0cw0K Pj4gd2hlbiBzb21ldGhpbmcgc3BlY2lmaWMgKGRlYnVnZ2luZywgcGVyZm9ybWFuY2Utb3B0aW1p emVkIHZlcnNpb25zLCAuLi4pDQo+PiBpcyByZXF1aXJlZCAtIGVhc2llciB0byByZWFkLCBlYXNp ZXIgdG8gbWFpbnRhaW4uIFRoZSBjb250ZW50IGlzDQo+PiBuZWVkZWQvdGhlcmUgYW55d2F5IGFz IHRoZSBsaWJyYXJpZXMgYXJlIGRlY2xhcmVkIGluIHRoZSBwYWNrYWdlJ3Mgb3duIA0KPj4gRFND Lg0KPj4NCj4gDQo+IFllcyBpdCB0aGUgbmV3IC5pbmMgRFNDIGZpbGUgY291bGQgYmUgb3ZlcnJp ZGRlbiBieSB0aGUgcGxhdGZvcm0gRFNDIA0KPiB0aGF0IGluY2x1ZGVzIGl0Lg0KPiANCj4gSSB0 aGluayB0aGlzIGlzIGEgbW9yZSBnZW5lcmFsIGlkZWEgdGhhbiBzb21ldGhpbmcgZm9yIHRoaXMg Z2l2ZW4gcGF0Y2guIA0KPiBJdCBpcyBzb21ldGhpbmcgd2UgY291bGQgbWFrZSBzdXJlIHdlIHVw ZGF0ZSBldmVyeSBzdGFibGUgdGFnIG9yIHNvLCBidXQgDQo+IEkgZ3Vlc3Mgc29tZW9uZSBoYXMg dG8gZ28gMXN0IDopLiBJdCB3b3VsZCBtYWtlIGl0IGVhc2llciBvbiBwbGF0Zm9ybXMgDQo+IHdo ZW4gdGhleSB1cGRhdGUgdGhlIGVkazIgdmVyc2lvbi4NCg0KQWdyZWVkLg0KDQo+IA0KPiANCj4g DQo+IA0KPj4gSXQgd291bGQgYmUgbmljZSBpZiB5b3UgaGFkIGNvbW1lbnRzIHJlZ2FyZGluZyBl dmVyeSBhc3BlY3QgSSBqdXN0DQo+PiBtZW50aW9uZWQsIGl0IHdhcyBqdXN0IHNvbWV0aGluZyBj b21pbmcgdG8gbXkgbWluZCB0aGlzIG1vcm5pbmcuIFRoYW5rcw0KPj4gZm9yIHRoZSBpbnB1dCBz byBmYXIsIGl0J3MgbmljZSB0byBzZWUgc29tZSBtb3ZlbWVudCBub3chDQo+Pg0KPiANCj4gU29y cnkgZm9yIHRoZSBkZWxheQ0KDQpTdXJlLCB0aGFua3MgZm9yIHRha2luZyB0aW1lIHRvIHJlc3Bv bmQhDQoNCj4gDQo+IFRoYW5rcywNCj4gDQo+IEFuZHJldyBGaXNoDQo+IA0KPj4gQmVzdCByZWdh cmRzLA0KPj4gTWFydmluDQo+Pg0KPj4gWzFdDQo+PiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9j b3JlL2VkazIvYmxvYi9mMWQ3OGM0ODlhMzk5NzFiNWFhYzVkMmZjOGEzOWJmYTkyNWMzYzVkL01k ZVBrZy9JbmNsdWRlL0xpYnJhcnkvUGVDb2ZmTGliLmgjTDIwLUwzMQ0KPj4gaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvZjFkNzhjNDg5YTM5OTcxYjVhYWM1ZDJmYzhhMzli ZmE5MjVjM2M1ZC9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L1BlQ29mZkxpYi5oI0wxNTkNCj4+DQo+ PiBBbSAxNi4wMi4yMDIwIHVtIDIyOjI1IHNjaHJpZWIgQW5kcmV3IEZpc2ggdmlhIEdyb3Vwcy5J bzoNCj4+PiBNaWtlLA0KPj4+DQo+Pj4gU29ycnkgSSBkb24ndCB0aGluayBJIHRvdGFsbHkgdW5k ZXJzdG9vZCB3aGF0IGZlbHQgd3JvbmcgdG8gbWUsIHNvIEkgZGlkDQo+Pj4gYSBiYWQgam9iIGV4 cGxhaW5pbmcgbXkgY29uY2VybnMuIEFsc28gSSBkb24ndCB0aGluayBJIHdhcyB0aGlua2luZw0K Pj4+IGVub3VnaCBpbiB0aGUgY29udGV4dCBvZiB0aGUgQzExIFN0ZExpYi4NCj4+Pg0KPj4+IEkg dGhpbmsgbXkgY29uY2VybiBpcyBzdGlsbCB0aGUgZ2xvYmFsIHNjb3BlIG9mIHRoZSBjb25zdHJh aW50LCBldmVuIGlmDQo+Pj4gd2UgdHVuZSBpdCBwZXIgbW9kdWxlLiBGb3IgZXhhbXBsZSB0aGUg RFhFIENvcmUgY2FuIGludGVyYWN0IHdpdGgNCj4+PiBQRS9DT0ZGIGltYWdlcyBhbmQgb3RoZXIg ZGF0YSB0aGF0IGNvdWxkIGhhdmUgaW5kaXJlY3RseSBjb21lIGZyb20gdGhlDQo+Pj4gZGlzay4g U28gY29uY2VwdHVhbGx5IHlvdSBtYXkgd2FudCB0byBBU1NFUlQgb24gc29tZSBjb25zdHJhaW50 cyBhbmQgbm90DQo+Pj4gb24gb3RoZXJzLiBJIHRoaW5rIHRoYXQgaXMgd2h5IEkgcmF0aG9sZWQg b24gZXhwYW5kaW5nIHRoZSBlcnJvcg0KPj4+IGhhbmRsaW5nIG1hY3JvcyBhcyB0aGF0IHdhcyBt b3JlIGluIHRoZSB2ZWluIG9mIGhhdmluZyB0aGUgY2FsbGVyIGRlYWwNCj4+PiB3aXRoIGl0LCBz byB0aGF0IGlzIGtpbmQgb2YgbGlrZSB3aGF0IHlvdSB3b3VsZCBkbyBwcmUgQzExLiBBbHNvIHRo ZQ0KPj4+IERlYnVnTGliIGlzIHByb2JhYmx5IG9uZSBvZiB0aGUgTWRlUGtnIExpYnMgdGhhdCBo YXMgdGhlIG1vc3QgaW5zdGFuY2VzDQo+Pj4gZmxvYXRpbmcgYXJvdW5kLCBzbyBJIHRoaW5rIHdl IHNob3VsZCBjaGFuZ2UgaXQgaW4gYSBub24gYmFja3dhcmRzIHdheQ0KPj4+IHZlcnkgY2FyZWZ1 bGx5Lg0KPj4+DQo+Pj4gU28gYWZ0ZXIgcmVhZGluZyB1cCBvbiB0aGUgQzExIGltcGxlbWVudGF0 aW9uIG9mIENvbnN0cmFpbnRzIEkgdGhpbmsgbXkNCj4+PiBhbHRlcm5hdGUgcHJvcG9zYWwgaXMg Zm9yIHVzIHRvIGFkZCBhIENvbnN0cmFpbnRMaWIgbW9kZWxlZCBhZnRlciBDMTENCj4+PiB2cy4g dXBkYXRpbmcgdGhlIERlYnVnTGliLiBUaGlzIHdvdWxkIHNvbHZlIHRoZSAyIHRoaW5ncyB0aGF0 IG1hZGUgbWUNCj4+PiB1bmNvbWZvcnRhYmxlOiAxKSBFeHRlbmRpbmcgdGhlIERlYnVnTGliIEFQ STsgMikgR2l2aW5nIHRoZSBjYWxsZXINCj4+PiBjb250cm9sIG9mIHRoZSBBU1NFUlQgYmVoYXZp b3IuIEl0IHdvdWxkIHN0aWxsIGhhdmUgdGhlIGRvd24gc2lkZSBvZg0KPj4+IGJyZWFraW5nIGJ1 aWxkcyBhcyB0aGUgQmFzZUxpYiB3b3VsZCBnZXQgYSBuZXcgZGVwZW5kZW5jeSwgc28gd2UgY291 bGQNCj4+PiB0YWxrIGFib3V0IGFkZGluZyB0aGVzZSBmdW5jdGlvbnMgdG8gdGhlIERlYnVnTGli IGFzIHRoZSBjb3N0IG9mDQo+Pj4gcmVwbGljYXRpbmcgY29kZS4NCj4+Pg0KPj4+IEMxMSBkZWZp bmVzwqBjb25zdHJhaW50X2hhbmRsZXJfdCBhbmTCoHNldF9jb25zdHJhaW50X2hhbmRsZXJfcyBh cyBhIHdheQ0KPj4+IGZvciB0aGUgY2FsbGVyIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3IgZm9y IGJvdW5kcyBjaGVja2VkIGZ1bmN0aW9ucy4gSQ0KPj4+IHRoaW5rIHRoYXQgaXMgdGhlIGJlaGF2 aW9yIEkgcHJlZmVyLiBTbyBpZiB3ZSBhcmUgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZQ0KPj4+IHRo YXQgaW1wYWN0cyBEZWJ1Z0xpYiBjb21wYXRpYmlsaXR5IEkganVzdCB3YW50IHRvIG1ha2Ugc3Vy ZSB3ZSBoYXZlIGENCj4+PiBjb252ZXJzYXRpb24gYWJvdXQgYWxsIHRoZSBvcHRpb25zLiBNeSBw cmltYXJ5IGdvYWwgaXMgd2UgaGF2ZSB0aGUNCj4+PiBjb252ZXJzYXRpb24sIGFuZCBpZiBmb2xr cyBkb24ndCBhZ3JlZSB3aXRoIG1lIHRoYXQgaXMgZmluZSBhdCBsZWFzdCB3ZQ0KPj4+IHRhbGtl ZCBhYm91dCBpdC4NCj4+Pg0KPj4+IFdoYXQgSSdtIHRoaW5raW5nIGFib3V0IGlzIGFzIHNpbXBs eSBleHBvc2luZyBhbiBBUEkgdG8gY29udHJvbCB0aGUNCj4+PiBDb25zdHJhaW50IGhhbmRsZXIg bGlrZSBDMTEuIFRoaXMgY291bGQgYmUgZG9uZSB2aWEgYW4gQ29uc3RyYWluTGliIG9yDQo+Pj4g ZXh0ZW5kaW5nIHRoZSBEZWJ1Z0xpYi4NCj4+Pg0KPj4+IFRoZSBiYXNpYyBpbXBsZW1lbnRhdGlv biBvZiB0aGUgbGliIHdvdWxkIGxvb2sgbGlrZToNCj4+Pg0KPj4+IHR5cGVkZWYNCj4+PiBWT0lE DQo+Pj4gKEVGSUFQSSAqQ09OU1RSQUlOVF9IQU5ETEVSKSAoDQo+Pj4gSU4gQ09OU1QgQ0hBUjgg wqAqRmlsZU5hbWUsDQo+Pj4gSU4gVUlOVE4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgTGluZU51 bWJlciwNCj4+PiBJTiBDT05TVCBDSEFSOCDCoCpEZXNjcmlwdGlvbiwNCj4+PiBJTiBFRklfU1RB VFVTIMKgIMKgIMKgU3RhdHVzDQo+Pj4gKTsNCj4+Pg0KPj4+DQo+Pj4gLy8gRGVmYXVsdCB0byBB c3NlcnRDb25zdHJhaW50SGFuZGxlciB0byBtYWtlIGl0IGVhc2llciB0byBpbXBsZW1lbnQNCj4+ PiBCYXNlIGFuZCBYSVAgbGlicy4NCj4+PiAvLyBXZSBjb3VsZCBoYXZlIGEgUENEIHRoYXQgYWxz byBzZXRzIHRoZSBkZWZhdWx0IGhhbmRsZXIgaW4gYSBMaWINCj4+PiBDb25zdHJ1Y3Rvci4gVGhl IGRlZmF1bHQgaGFuZGxlciBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGluIEMxMS4NCj4+PiBD T05TVFJBSU5UX0hBTkRMRVIgZ0RlZmF1bHRDb25zdHJhaW50SGFuZGxlciA9wqBBc3NlcnRDb25z dHJhaW50SGFuZGxlcjsNCj4+PiBDT05TVFJBSU5UX0hBTkRMRVIgZ0FjdGl2ZUNvbnN0cmFpbnRI YW5kbGVyID3CoGdEZWZhdWx0Q29uc3RyYWludEhhbmRsZXI7DQo+Pj4NCj4+PiBCT09MRUFODQo+ Pj4gRUZJQVBJDQo+Pj4gQ29uc3RyYWludEFzc2VydEVuYWJsZWQgKA0KPj4+IFZPSUQNCj4+PiAp DQo+Pj4gew0KPj4+IMKgwqByZXR1cm4gKEJPT0xFQU4pICgoUGNkR2V0OChQY2REZWJ1Z1Byb3Bl cnR5TWFzaykgJg0KPj4+IERFQlVHX1BST1BFUlRZX0RFQlVHX0NPTlNUUkFJTlRfRU5BQkxFRCkg IT0gMCk7DQo+Pj4gfQ0KPj4+DQo+Pj4gRUZJX1NUQVRVUw0KPj4+IEVGSUFQSQ0KPj4+IFNldENv bnN0cmFpbnRIYW5kbGVyICgNCj4+PiBJTiBDT05TVFJBSU5UX0hBTkRMRVIgSGFuZGxlcg0KPj4+ ICkNCj4+PiB7DQo+Pj4gaWYgKEhhbmRsZXIgPT0gTlVMTCkgew0KPj4+IGdBY3RpdmVDb25zdHJh aW50SGFuZGxlciA9wqBnRGVmYXVsdENvbnN0cmFpbnRIYW5kbGVyOw0KPj4+IH0gZWxzZSB7DQo+ Pj4gZ0FjdGl2ZUNvbnN0cmFpbnRIYW5kbGVyID0gSGFuZGxlcjsNCj4+PiB9DQo+Pj4gfQ0KPj4+ DQo+Pj4gVk9JRA0KPj4+IEFzc2VydENvbnN0cmFpbnRIYW5kbGVyICgNCj4+PiBJTiBDT05TVCBD SEFSOCDCoCpGaWxlTmFtZSwNCj4+PiBJTiBVSU5UTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBM aW5lTnVtYmVyLA0KPj4+IElOIENPTlNUIENIQVI4IMKgKkRlc2NyaXB0aW9uLA0KPj4+IElOIEVG SV9TVEFUVVMgwqAgwqAgwqBTdGF0dXMNCj4+PiApDQo+Pj4gew0KPj4+IMKgwqBpZiAoQ29uc3Ry YWludEFzc2VydEVuYWJsZWQgKCkpIHsNCj4+PiDCoCDCoCDCoERFQlVHICgoRUZJX0RfRVJST1Is ICJcQ29uc3RyYWludCBBU1NFUlQgKFN0YXR1cyA9ICVyKTogIiwgU3RhdHVzKSk7DQo+Pj4gwqAg wqDCoMKgRGVidWdBc3NlcnQgKEZpbGVOYW1lLMKgTGluZU51bWJlciwgRGVzY3JpcHRpb24pDQo+ Pj4gfQ0KPj4+DQo+Pj4gwqByZXR1cm47DQo+Pj4gfQ0KPj4+DQo+Pj4gVk9JRA0KPj4+IElnbm9y ZUNvbnN0cmFpbnRIYW5kbGVyICgNCj4+PiBJTiBDT05TVCBDSEFSOCDCoCpGaWxlTmFtZSwNCj4+ PiBJTiBVSU5UTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBMaW5lTnVtYmVyLA0KPj4+IElOIENP TlNUIENIQVI4IMKgKkRlc2NyaXB0aW9uLA0KPj4+IElOIEVGSV9TVEFUVVMgwqAgwqAgwqBTdGF0 dXMNCj4+PiApDQo+Pj4gew0KPj4+IHJldHVybjsNCj4+PiB9DQo+Pj4NCj4+PiBXZSBjb3VsZCBh ZGQgbWFjcm9zIGZvciB0aGUgY29kZSBpbiB0aGUgbGliIHRvIGNhbGw6DQo+Pj4NCj4+PiAjZGVm aW5lIENPTlNUUkFJTlRfQ0hFQ0soRXhwcmVzc2lvbiwgU3RhdHVzKSDCoFwNCj4+PiBkbyB7IFwN Cj4+PiBpZiAoIShFeHByZXNzaW9uKSkgeyBcDQo+Pj4gZ0FjdGl2ZUNvbnN0cmFpbnRIYW5kbGVy wqAoX19GSUxFX18sIF9fTElORV9fLCBFeHByZXNzaW9uLCBTdGF0dXMpOyBcDQo+Pj4gcmV0dXJu IFN0YXR1czsgXA0KPj4+IH0gXA0KPj4+IH0gd2hpbGUgKEZBTFNFKQ0KPj4+DQo+Pj4gI2RlZmlu ZSBDT05TVFJBSU5UX1JFUVVJUkUoRXhwcmVzc2lvbiwgU3RhdHVzLCBMYWJlbCkgwqBcDQo+Pj4g ZG8geyBcDQo+Pj4gaWYgKCEoRXhwcmVzc2lvbikpIHsgXA0KPj4+IGdBY3RpdmVDb25zdHJhaW50 SGFuZGxlcsKgKF9fRklMRV9fLCBfX0xJTkVfXywgRXhwcmVzc2lvbiwgU3RhdHVzKTsgXA0KPj4+ IGdvdG/CoExhYmVsOyBcDQo+Pj4gfSBcDQo+Pj4gfSB3aGlsZSAoRkFMU0UpDQo+Pj4NCj4+Pg0K Pj4+IEFzIGEgY2FsbGVyIHdlIGhhdmUgbm93IGhhdmUgY29udHJvbDoNCj4+PiBFRklfU1RBVFVT IFN0YXR1czsNCj4+PiBDSEFSMTYgwqAgwqAgwqAgwqBEc3RbMl07DQo+Pj4NCj4+PiBTZXRDb25z dHJhaW50SGFuZGxlciAoSWdub3JlQ29uc3RyYWludEhhbmRsZXIpOw0KPj4+IFN0YXR1cyA9IFN0 ckNweVMgKERzdCwgc2l6ZW9mIChEc3QpLCBMIlRvbyBMb25nIik7DQo+Pj4gUHJpbnQgKEwiRHN0 ID0lcyAoJXIpXG4iLCDCoERzdCwgU3RhdHVzKTsNCj4+Pg0KPj4+IFNldENvbnN0cmFpbnRIYW5k bGVyIChBc3NlcnRDb25zdHJhaW50SGFuZGxlcik7DQo+Pj4gU3RyQ3B5UyAoRHN0LCBzaXplb2Yg KERzdCksIEwiVG9vIExvbmciKTsNCj4+Pg0KPj4+IFRoYW5rcywNCj4+Pg0KPj4+IEFuZHJldyBG aXNoDQo+Pj4NCj4+PiBQUyBTaW5jZSBJJ20gb24gYSBjcmF6eSBpZGVhIHJvbGwgYW5vdGhlciBp ZGVhIHdvdWxkIGJlIHRvIGFkZCBhDQo+Pj4gTWRlUGtnQ29tcGF0YWJpbGl0eS5kc2MuaW5jIGZp bGUgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIGZ1dHVyZSBwcm9vZg0KPj4+IGFkZGluZyBkZXBlbmRl bnQgbGlicyB0byBleGlzdGluZyBNZGVQa2cgbGlicy4gU28gYSBwbGF0Zm9ybSBjb3VsZA0KPj4+ IGluY2x1ZGUgdGhpcyAuRFNDIGFuZCB0aGF0IHdvdWxkIGdpdmUgdGhlbSB0aGUgZGVmYXVsdCBs aWJyYXJ5IG1hcHBpbmcNCj4+PiB0byBrZWVwIGNvZGUgY29tcGlsaW5nLiBJdCB3aWxsIG9ubHkg d29yayBhZnRlciBvdGhlciBwbGF0Zm9ybXMgc3RhcnQNCj4+PiBpbmNsdWRpbmcgaXQsIGJ1dCBh ZnRlciB0aGF0IGl0IHdvdWxkIGdpdmUgZGVmYXVsdCBtYXBwaW5ncyBmb3INCj4+PiBkZXBlbmRl bnQgbGlicy4NCj4+Pg0KPj4+IEluIG91ciBhYm92ZSBleGFtcGxlIHdlIGNvdWxkIGhhdmUgYWRk ZWQgdGhpcyBhbmQgdGhlbiBleGlzdGluZyBidWlsZHMNCj4+PiB0aGF0IGluY2x1ZGVkIE1kZVBr Z0NvbXBhdGFiaWxpdHkuZHNjLmluYyB3b3VsZCBrZWVwIGNvbXBpbGluZy4NCj4+Pg0KPj4+IMKg W0xpYnJhcnlDbGFzc2VzXQ0KPj4+DQo+Pj4gRGVidWdDb25zdHJhaW50TGlifE1kZVBrZy9MaWJy YXJ5L0RlYnVnQ29uc3RyYWludExpYi9EZWJ1Z0NvbnN0cmFpbnRMaWIuaW5mDQo+Pj4NCj4+Pg0K Pj4+DQo+Pj4+IE9uIEZlYiAxNSwgMjAyMCwgYXQgMTE6MzggQU0sIE1pY2hhZWwgRCBLaW5uZXkN Cj4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tIA0KPj4+PiA8bWFpbHRvOm1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPjxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PiAN Cj4+Pj4gd3JvdGU6DQo+Pj4+DQo+Pj4+IEFuZHJldywNCj4+Pj4gSSBkbyBub3QgdGhpbmsgb2Yg dGhpcyBhcyBhIGdsb2JhbGx5IHNjb3BlZCBQQ0QuSXQgY2FuIGJlIHNldCBpbg0KPj4+PiBnbG9i YWwgc2NvcGUgaW4gRFNDLkJ1dCBpcyBjYW4gYWxzbyBiZSBzZXQgdG8gdmFsdWVzIGJhc2VkIG9u IG1vZHVsZQ0KPj4+PiB0eXBlIG9yIGZvciBzcGVjaWZpYyBtb2R1bGVzLkluIHRoZSBjYXNlIG9m IHRoZSBzYWZlIHN0cmluZyBmdW5jdGlvbnMsDQo+Pj4+IEkgdGhpbmsgdGhlcmUgaXMgYSBkZXNp cmUgdG8gZGlzYWJsZSB0aGUgY29uc3RyYWludCBhc3NlcnRzIHdoZW4NCj4+Pj4gYnVpbGRpbmcg YSBVRUZJIEFwcCBvciBVRUZJIERyaXZlciBhbmQgaW1wbGVtZW50IHRob3NlIG1vZHVsZXMgdG8N Cj4+Pj4gaGFuZGxlIHRoZSBlcnJvciByZXR1cm4gdmFsdWVzLkVuYWJsaW5nIHRoZSBjb25zdHJh aW50IGFzc2VydHMgZm9yIFBFSQ0KPj4+PiBDb3JlLCBEWEUgQ29yZSwgU01NL01NIENvcmUsIFBF SU0sIERYRSwgU01NL01NIG1vZHVsZXMgbWFrZXMgc2Vuc2UgdG8NCj4+Pj4gZmluZCBpbmNvcnJl Y3QgaW5wdXQgdG8gdGhlc2UgZnVuY3Rpb25zIGZyb20gbW9kdWxlcyB0aGF0IGNhbg0KPj4+PiBn dWFyYW50ZWUgdGhlIGlucHV0cyB3b3VsZCBuZXZlciByZXR1cm4gYW4gZXJyb3IgYW5kIGNhdGNo IHRoZXNlIGFzDQo+Pj4+IHBhcnQgb2YgZGV2L2RlYnVnL3ZhbGlkYXRpb24gYnVpbGRzLg0KPj4+ PiBJIHdvdWxkIG5vdCBleHBlY3QgZGlzYWJsaW5nIG9uIGEgbW9kdWxlIGJ5IG1vZHVsZSBiYXNp cyB0byBiZSBjb21tb24uDQo+Pj4+IEkgdGhpbmsgdGhlIHJ1bGUgZm9yIEFQSSBpbXBsZW1lbnRh dGlvbnMgaXMgdG8gb25seSB1c2UNCj4+Pj4gQ09OU1RSQUlOVF9BU1NFUlQoKSBmb3IgY29uZGl0 aW9ucyB0aGF0IGFyZSBhbHNvIGNoZWNrZWQgYW5kIHJldHVybiBhbg0KPj4+PiBlcnJvciBvciBm YWlsIHdpdGggcHJlZGljYWJsZSBiZWhhdmlvciB0aGF0IGFsbG93cyB0aGUgc3lzdGVtIHRvDQo+ Pj4+IGNvbnRpbnVlIHRvIGZ1bmN0aW9uLkFTU0VSVCgpIGlzIGZvciBjb25kaXRpb25zIHRoYXQg dGhlIHN5c3RlbWNhbg0KPj4+PiBub3Rjb250aW51ZS4NCj4+Pj4gQmVzdCByZWdhcmRzLA0KPj4+ PiBNaWtlDQo+Pj4+ICpGcm9tOiphZmlzaEBhcHBsZS5jb20gDQo+Pj4+IDxtYWlsdG86YWZpc2hA YXBwbGUuY29tPjxtYWlsdG86YWZpc2hAYXBwbGUuY29tPjxhZmlzaEBhcHBsZS5jb20gDQo+Pj4+ IDxtYWlsdG86YWZpc2hAYXBwbGUuY29tPg0KPj4+PiA8bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT4+ DQo+Pj4+ICpTZW50OipGcmlkYXksIEZlYnJ1YXJ5IDE0LCAyMDIwIDEwOjI3IFBNDQo+Pj4+ICpU bzoqdml0OTY5NiA8dml0OTY5NkBwcm90b25tYWlsLmNvbSANCj4+Pj4gPG1haWx0bzp2aXQ5Njk2 QHByb3Rvbm1haWwuY29tPjxtYWlsdG86dml0OTY5NkBwcm90b25tYWlsLmNvbT4+DQo+Pj4+ICpD YzoqZGV2ZWxAZWRrMi5ncm91cHMuaW8gDQo+Pj4+IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW8+PG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz47IEtpbm5leSwNCj4+Pj4gTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbSANCj4+Pj4gPG1haWx0bzptaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT4NCj4+Pj4gPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+ OyBHYW8sIExpbWluZw0KPj4+PiA8bGltaW5nLmdhb0BpbnRlbC5jb20gDQo+Pj4+IDxtYWlsdG86 bGltaW5nLmdhb0BpbnRlbC5jb20+PG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT4+OyBHYW8s IA0KPj4+PiBaaGljaGFvDQo+Pj4+IDx6aGljaGFvLmdhb0BpbnRlbC5jb20gDQo+Pj4+IDxtYWls dG86emhpY2hhby5nYW9AaW50ZWwuY29tPjxtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tPj47 IA0KPj4+PiBNYXJ2aW4gSMOkdXNlcg0KPj4+PiA8bWFydmluLmhhZXVzZXJAb3V0bG9vay5jb20g DQo+Pj4+IDxtYWlsdG86bWFydmluLmhhZXVzZXJAb3V0bG9vay5jb20+PG1haWx0bzptYXJ2aW4u aGFldXNlckBvdXRsb29rLmNvbT4+Ow0KPj4+PiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQu Y29tIA0KPj4+PiA8bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPjxtYWlsdG86bGVyc2VrQHJlZGhh dC5jb20+Pg0KPj4+PiAqU3ViamVjdDoqUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBB ZGQgUENEIHRvIGRpc2FibGUgc2FmZQ0KPj4+PiBzdHJpbmcgY29uc3RyYWludCBhc3NlcnRpb25z DQo+Pj4+IFZpdGFseSwNCj4+Pj4gU29ycnkgYWZ0ZXIgSSBzZW50IHRoZSBtYWlsIEkgcmVhbGl6 ZWQgaXQgbWF5IGNvbWUgwqBhY3Jvc3MgYXMgbWUNCj4+Pj4gYXNraW5nIHlvdSB0byBkbyB3b3Jr IGFuZCB0aGF0IHdhcyBub3QgbXkgaW50ZW50Lg0KPj4+PiBJIHdpbGwgcG9pbnQgb3V0IHRob3Vn aCB0aGF0IGEgbm9uIGJhY2t3YXJkIGNvbXBhdGlibGUgY2hhbmdlIHRvDQo+Pj4+IHNvbWV0aGlu ZyBhcyBmdW5kYW1lbnRhbCBhcyB0aGUgRGVidWdMaWIgaXMgYSB2ZXJ5IGJpZyBkZWFsLiBJJ3Zl IGdvdA0KPj4+PiBhIGZldyBkaWZmZXJlbnQgY3VzdG9tIGltcGxlbWVudGF0aW9ucyB0aGF0IHdv dWxkIGJyZWFrIHdpdGggdGhpcw0KPj4+PiBjaGFuZ2UgYXMgTWlrZSBwcm9wb3NlZC4gR2l2ZW4g YnJlYWtpbmcgZXZlcnkgb25lJ3MgZGVidWcgbGliIGlzIHN1Y2gNCj4+Pj4gYSBiaWcgZGVhbCBt YXliZSBpdCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBzaG91bGQgZG8gYXMgYSBsb25nIHRlcm0gcGxh bg0KPj4+PiB2cy4gc29tZSBpbmNyZW1lbnRhbCBmaXguIFNvIG15IGludGVudCB3YXMgdG8gc3Rh cnQgYSBjb252ZXJzYXRpb24NCj4+Pj4gYWJvdXQgd2hhdCBlbHNlIHdlIG1pZ2h0IHdhbnQgdG8g Y2hhbmdlIGlmIHdlIGFyZSBnb2luZyB0byBicmVhayB0aGUNCj4+Pj4gd29ybGQuIFRoZSBvbmx5 IHRoaW5rIHdvcnNlIHRoYW4gYnJlYWtpbmcgdGhlIHdvcmxkIGlzIGJyZWFraW5nIHRoZQ0KPj4+ PiB3b3JsZCBmcmVxdWVudGx5Lg0KPj4+PiBJJ20gYWxzbyBhIGxpdHRsZSB3b3JyaWVkIHRoYXQg d2UgYXJlIHRha2luZyB0aGluZ3MgdGhhdCBhcmUgdG9kYXkNCj4+Pj4gbG9jYWxseSBzY29wZWQg bGlrZcKgU0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVDSyBhbmQNCj4+Pj4gU0FGRV9QUklOVF9D T05TVFJBSU5UX0NIRUNLIGFuZCBtYWtpbmcgdGhlbSBnbG9iYWwgY29uc3RydWN0cy4gSSB0aGlu aw0KPj4+PiB0aGUgd2F5IG90aGVycyBoYXZlIGRlYWx0IHdpdGggdGhpbmdzIGxpa2UgdGhpcyBp cyB0byBtYWtlIHRoZW0gYmUNCj4+Pj4gREVCVUcgcHJpbnRzIHZzLiBBU1NFUlRzLiBBbHNvIGV2 ZW4gc29tZXRoaW5nIGFzIHNpbXBsZSBhcw0KPj4+PiBTQUZFX1NUUklOR19DT05TVFJBSU5UX0NI RUNLIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGNvZGUgdGhhdCB3YW50cw0KPj4+PiBBU1NFUlQgYW5k IENPTlNUUkFJTlRfQVNTRVJUIGJlaGF2aW9yLiBJdCBpcyBub3QgY2xlYXIgdG8gbWUgdGhhdCB0 aGUNCj4+Pj4gbG93IGxldmVsIGNvZGUga25vd3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvIGluIGEg Z2xvYmFsIHNlbnNlIGV2ZW4gaWYNCj4+Pj4gdGhlcmUgaXMgYSBQQ0QuIMKgSXQgYWxtb3N0IHNl ZW1zIGxpa2Ugd2Ugc2hvdWxkIGhhdmUgd3JhcHBlcnMgZm9yIHRoZQ0KPj4+PiBTYWZlIHN0cmlu ZyBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgdGhlIGJlaGF2aW9yIHlvdSB3YW50IGFzIGENCj4+ Pj4gY2FsbGVyLiBJJ20gbm90IHN1cmUgYWJvdXQgdGhhdCwgYnV0IGl0IHNlZW1zIGxpa2UgaXQg aXMgd29ydGggdGFsa2luZw0KPj4+PiBhYm91dD8NCj4+Pj4gVGhhbmtzLA0KPj4+PiBBbmRyZXcg RmlzaA0KPj4+Pg0KPj4+Pg0KPj4+PiDCoMKgwqBPbiBGZWIgMTQsIDIwMjAsIGF0IDc6MzEgUE0s IHZpdDk2OTYgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20gDQo+Pj4+IDxtYWlsdG86dml0OTY5NkBw cm90b25tYWlsLmNvbT4NCj4+Pj4gwqDCoMKgPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29t Pj4gd3JvdGU6DQo+Pj4+IMKgwqDCoEhpIEFuZHJldywNCj4+Pj4gwqDCoMKgV2hpbGUgeW91ciBz dWdnZXN0aW9ucyBsb29rIGludGVyZXN0aW5nLMKgSSBhbSBhZnJhaWQgdGhleSBhcmUgbm90DQo+ Pj4+IMKgwqDCoHBhcnRpY3VsYXJsecKgd2hhdCB3ZSB3YW50IHRvIGNvdmVywqB3aXRoIHRoaXMg ZGlzY3Vzc2lvbiBhdCB0aGUgDQo+Pj4+IG1vbWVudC4NCj4+Pj4gwqDCoMKgTWFraW5nIGFzc2Vy dGlvbnMgZ28gdGhyb3VnaCBERUJVRyBwcmludGluZyBmdW5jdGlvbnMvbWFjcm9zwqBpcw0KPj4+ PiDCoMKgwqB3aGF0IHdlIGhhdmUgdG8gc3Ryb25nbHkgZGlzYWdyZWUgYWJvdXQuIEFzc2VydGlv bnMgYW5kIGRlYnVnDQo+Pj4+IMKgwqDCoHByaW50cyBhcmUgc2VwYXJhdGUgdGhpbmdzwqBjb25m aWd1cmFibGUgYnkgc2VwYXJhdGUgUENEcy7CoFdlDQo+Pj4+IMKgwqDCoHNob3VsZCBub3QgbWl4 IHRoZW0uIEludHJvZHVjaW5nIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucyBpcyBhDQo+Pj4+IMKgwqDC oGxvZ2ljYWwgc3RlcCBmb3J3YXJkIGluIHVuZGVyc3RhbmRpbmcgdGhhdCBkaWZmZXJlbnQgc29m dHdhcmUNCj4+Pj4gwqDCoMKgd29ya3MgaW4gZGlmZmVyZW50IGVudmlyb25tZW50cy4NCj4+Pj4N Cj4+Pj4gwqDCoMKgwqDCoCogVGhlcmUgYXJlIG5vcm1hbCwgb3IsIGFzIEkgY2FsbCB0aGVtLCBp bnZhcmlhbnQNCj4+Pj4gwqDCoMKgwqDCoMKgwqBhc3NlcnRpb25zwqAoZS5nLiBwcmVjb25kaXRp b25zKSwgZm9yIHBsYWNlcyB3aGVyZSB0aGUgZnVuY3Rpb24NCj4+Pj4gwqDCoMKgwqDCoMKgwqBj YW5ub3Qgd29yayB1bmxlc3MgdGhlIGFzc2VydGlvbiBpcyBzYXRpc2ZpZWQuIFRoaXMgaXMgd2hl cmUNCj4+Pj4gwqDCoMKgwqDCoMKgwqB3ZSBBU1NFUlQuDQo+Pj4+IMKgwqDCoMKgwqAqIFRoZXJl IGFyZSBjb25zdHJhaW50IGFzc2VydGlvbnMsIHdoaWNoIHNpZ25hbGlzZSB0aGF0IGJhZCBkYXRh DQo+Pj4+IMKgwqDCoMKgwqDCoMKgY2FtZSB0aHJvdWdoIHRoZSBmdW5jdGlvbiwgZXZlbiB0aG91 Z2ggdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQNCj4+Pj4gwqDCoMKgwqDCoMKgwqBmcm9tIGEgdHJ1 c3RlZCBzb3VyY2UuIFRoaXMgaXMgd2hlcmUgd2UgY2FsbCBDT05TVFJBSU5UX0FTU0VSVC4NCj4+ Pj4NCj4+Pj4gwqDCoMKgVGhlIHRoaW5nIHdlIG5lZWQgaXMgdG8gaGF2ZSB0aGUgbGF0dGVyIHNl cGFyYWJsZQ0KPj4+PiDCoMKgwqBhbmTCoGNvbmZpZ3VyYWJsZSwgYmVjYXVzZSBub3QgZXZlcnkg cGllY2Ugb2bCoHNvZnR3YXJlIHdvcmtzIGluIGENCj4+Pj4gwqDCoMKgdHJ1c3RlZCBlbnZpcm9u bWVudC4gT3RoZXIgdGhhbiB0aGF0LCBjb25zdHJhaW50IGFzc2VydGlvbnMsIHdoZW4NCj4+Pj4g wqDCoMKgZW5hYmxlZCwgYXJlIG5vdCBhbnlob3cgZGlmZmVyZW50IGZyb20gbm9ybWFsIGFzc2Vy dGlvbnMgaW4gdGhlDQo+Pj4+IMKgwqDCoHNlbnNlIG9mIGFjdGlvbiB0YWtlbi4gQXNzZXJ0aW9u cyBoYXZlIGNvbmZpZ3VyYWJsZSBicmVha3BvaW50cw0KPj4+PiDCoMKgwqBhbmQgZGVhZGxvb3Bz LCBhbmTCoERFQlVHIHByaW50cyBnbyB0aHJvdWdoIGEgZGlmZmVyZW50IHJvdXRlIGluDQo+Pj4+ IMKgwqDCoERlYnVnTGliIHRoYXTCoG1heSBjYXVzZcKgZW50aXJlbHnCoGRpZmZlcmVudCBlZmZl Y3RzLiBGb3IgZXhhbXBsZSwNCj4+Pj4gwqDCoMKgd2UgaGFsdCBleGVjdXRpb24gdXBvbiBwcmlu dGluZyB0byBERUJVR19FUlJPUiBpbiBvdXIgRGVidWdMaWINCj4+Pj4gwqDCoMKgZXZlbiBpbiBy ZWxlYXNlIGJ1aWxkcy4NCj4+Pj4NCj4+Pj4gwqDCoMKgPVRvIG1ha2UgaXQgY2xlYXIsIGN1cnJl bnRseSBJIHBsYW4gdG8gYWRkIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOg0KPj4+PiDCoMKgwqAj ZGVmaW5lIENPTlNUUkFJTlRfQVNTRVJUKEV4cHJlc3Npb24pIFwNCj4+Pj4gwqDCoMKgZG8geyBc DQo+Pj4+IMKgwqDCoGlmIChEZWJ1Z0NvbnN0cmFpbnRBc3NlcnRFbmFibGVkICgpKSB7IFwNCj4+ Pj4gwqDCoMKgaWYgKCEoRXhwcmVzc2lvbikpIHsgXA0KPj4+PiDCoMKgwqBfQVNTRVJUIChFeHBy ZXNzaW9uKTsgXA0KPj4+PiDCoMKgwqBBTkFMWVpFUl9VTlJFQUNIQUJMRSAoKTsgXA0KPj4+PiDC oMKgwqB9IFwNCj4+Pj4gwqDCoMKgfSBcDQo+Pj4+IMKgwqDCoH0gd2hpbGUgKEZBTFNFKQ0KPj4+ PiDCoMKgwqB3aXRoIERlYnVnQ29uc3RyYWludEFzc2VydEVuYWJsZWQgaW1wbGVtZW50ZWQgYXMN Cj4+Pj4gwqDCoMKgKEJPT0xFQU4pICgoUGNkR2V0OChQY2REZWJ1Z1Byb3BlcnR5TWFzaykgJg0K Pj4+PiDCoMKgwqBERUJVR19QUk9QRVJUWV9ERUJVR19BU1NFUlRfRU5BQkxFRCB8DQo+Pj4+IMKg wqDCoERFQlVHX1BST1BFUlRZX0NPTlRSQUlOVF9BU1NFUlRfRElTQUJMRUQpID09DQo+Pj4+IMKg wqDCoERFQlVHX1BST1BFUlRZX0RFQlVHX0FTU0VSVF9FTkFCTEVEKQ0KPj4+PiDCoMKgwqBZb3Vy IHN1Z2dlc3Rpb24gd2l0aCByZXF1aXJlIG1hY3JvcyBsb29rcyBpbnRlcmVzdGluZyBpbmRlZWQs IGJ1dA0KPj4+PiDCoMKgwqBJIGJlbGlldmUgaXQgaXMgaW4gZmFjdCBwYXJhbGxlbCB0byB0aGlz IGRpc2N1c3Npb24uIFRoZSBjaGFuZ2Ugd2UNCj4+Pj4gwqDCoMKgZGlzY3VzcyBpbnRyb2R1Y2Vz IGEgbmV3IGFzc2VydGlvbiBwcmltaXRpdmUg4oCUIGNvbnN0cmFpbnQNCj4+Pj4gwqDCoMKgYXNz ZXJ0aW9ucywgd2hpbGUgUkVRVUlSRSBtYWNyb3MgYXJlIG1vc3RseSBhYm91dCBhZHZhbmNlZCBz eW50YXgNCj4+Pj4gwqDCoMKgc3VnYXIgYW5kIGhpZ2hlciBsZXZlbCBhc3NlcnRpb24gcHJpbWl0 aXZlcyBvbiB0b3Agb2YgZXhpc3RpbmcNCj4+Pj4gwqDCoMKgb25lcy4gUGVyaGFwcyB3ZSBjYW4g aGF2ZSB0aGlzIGFuZCBtYWtlIGEgZ29vZCB1c2Ugb2YgaXQsDQo+Pj4+IMKgwqDCoGVzcGVjaWFs bHkgZ2l2ZW4gdGhhdCBpdCBicm91Z2h0IHNvbWUgcHJhY3RpY2FsIGJlbmVmaXQgaW4gQXBwbGUs DQo+Pj4+IMKgwqDCoGJ1dCBJIHdvdWxkIHJhdGhlciBkaXNjdXNzIHRoaXMgbGF0ZXIgb25jZSBj b25zdHJhaW50IGFzc2VydGlvbnMNCj4+Pj4gwqDCoMKgYXJlIG1lcmdlZCBpbnRvIEVESyBJSSB0 cmVlLg0KPj4+PiDCoMKgwqBCZXN0IHdpc2hlcywNCj4+Pj4gwqDCoMKgVml0YWx5DQo+Pj4+IMKg wqDCoE9uIFNhdCwgRmViIDE1LCAyMDIwIGF0IDAzOjAyLCBBbmRyZXcgRmlzaCA8YWZpc2hAYXBw bGUuY29tIA0KPj4+PiA8bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT4NCj4+Pj4gwqDCoMKgPG1haWx0 bzphZmlzaEBhcHBsZS5jb20+PiB3cm90ZToNCj4+Pj4NCj4+Pj4NCj4+Pj4NCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoE9uIEZlYiAxNCwgMjAyMCwgYXQgMjo1MCBQTSwgTWljaGFlbCBEIEtp bm5leQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tIA0KPj4+PiA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+IHdy b3RlOg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSGkgVml0YWx5LA0KPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgSSBhZ3JlZSB0aGF0IHRoaXMgcHJvcG9zYWwgbWFrZXMgYSBsb3Qgb2Yg c2Vuc2UuIFdlDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWNlbnRseSBhZGRlZCBhIG5l dyBhc3NlcnQgdHlwZSBjYWxsZWQgU1RBVElDX0FTU0VSVCgpDQo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmb3IgYXNzZXJ0IGNvbmRpdGlvbnMgdGhhdCBjYW4gYmUgdGVzdGVkIGF0IGJ1aWxk IHRpbWUuDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBIG5ldyBhc3NlcnQgdHlwZSBmb3Ig Y2hlY2tzIHRoYXQgY2FuIGJlIHJlbW92ZWQgYW5kIHRoZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgQVBJIHN0aWxsIGd1YXJhbnRlZXMgdGhhdCBpdCBmYWlscyBncmFjZWZ1bGx5IHdpdGgg YQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJvcGVyIHJldHVybiBjb2RlIGlzIGEgZ29v ZCBpZGVhLiBHaXZlbiB3ZSBoYXZlDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBTVEFUSUNf QVNTRVJUKCksIGhvdyBhYm91dCBuYW1pbmcgdGhlIG5ldyBtYWNybw0KPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgQ09OU1RSQUlOVF9BU1NFUlQoKT8NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFdlIGFsc28gd2FudCB0aGUgZGVmYXVsdCB0byBiZSBlbmFibGVkLiBUaGUgY3VycmVudCB1 c2Ugb2YNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJpdCAweDQwIGluUGNkRGVidWdQcm9w ZXJ0eU1hc2sgaXMgYWx3YXlzIGNsZWFyLCBzbyB3ZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgd2FudCB0aGUgYXNzZXJ0cyBlbmFibGVkIHdoZW4gMHg0MCBpcyBjbGVhci4gV2UgY2FuIGNo YW5nZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGhlIG5hbWUgb2YgdGhlIGRlZmluZSBi aXQgdG8NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERFQlVHX1BST1BFUlRZX0NPTlRSQUlO VF9BU1NFUlRfRElTQUJMRUQgc28gYml0IDB4NDAgbmVlZHMNCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRvIGJlIHNldCBpblBjZERlYnVnUHJvcGVydHlNYXNrdG8gZGlzYWJsZSB0aGVzZSB0 eXBlcyBvZg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXNzZXJ0cy4NCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoFRoaXMgYXBwcm9hY2ggZG9lcyByZXF1aXJlIGFsbCB0aGVEZWJ1Z0xp YmltcGxlbWVudGF0aW9ucw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdG8gYmUgdXBkYXRl ZCB3aXRoIHRoZSBuZXdEZWJ1Z0NvbnN0cmFpbnRBc3NlcnREaXNhYmxlZCgpIA0KPj4+PiBBUEku DQo+Pj4+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgTWlrZSwNCj4+Pj4gwqDCoMKgwqDCoMKgwqBJZiB5 b3Ugd2FudGVkIHRvIGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgeW91IGNvdWxkIGp1c3QNCj4+Pj4g wqDCoMKgwqDCoMKgwqB1c2XCoERlYnVnQXNzZXJ0RW5hYmxlZCAoKSBidXQgaW4gcGxhY2Ugb2Yg X0FTU0VSVCgpIHVzZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoF9DT05TVFJBSU5UX0FTU0VSVA0KPj4+ PiDCoMKgwqDCoMKgwqDCoCNkZWZpbmUgX0FTU0VSVChFeHByZXNzaW9uKSDCoERlYnVnQXNzZXJ0 IChfX0ZJTEVfXywgX19MSU5FX18sDQo+Pj4+IMKgwqDCoMKgwqDCoMKgI0V4cHJlc3Npb24pDQo+ Pj4+IMKgwqDCoMKgwqDCoMKgI2RlZmluZcKgX0NPTlNUUkFJTlRfQVNTRVJUKEV4cHJlc3Npb24p IMKgRGVidWdQcmludA0KPj4+PiDCoMKgwqDCoMKgwqDCoChERUJVR19FUlJPUiwgwqAiQVNTRVJU ICVhKCVkKTogJWFcbiIsLCBfX0ZJTEVfXywgX19MSU5FX18sDQo+Pj4+IMKgwqDCoMKgwqDCoMKg I0V4cHJlc3Npb24pDQo+Pj4+IMKgwqDCoMKgwqDCoMKgTm90IGFzIGVsZWdhbnQgYXMgdGhlIG5v biBiYWNrd2FyZCBjb21wYXRpYmxlIGNoYW5nZSwgYnV0IEkNCj4+Pj4gwqDCoMKgwqDCoMKgwqB0 aG91Z2h0IEknZCB0aHJvdyBpdCBvdXQgdGhlcmUuDQo+Pj4+IMKgwqDCoMKgwqDCoMKgVGhlcmUg YXJlIHNvbWUgYW5jaWVudCBBcHBsZSBDIEFTU0VSVCBtYWNyb3MgW0Fzc2VydE1hY3Jvcy5oXQ0K Pj4+PiDCoMKgwqDCoMKgwqDCoMKgdGhhdCBhbHNvIGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVxdWly ZS4gUmVxdWlyZSBpbmNsdWRlcyBhbg0KPj4+PiDCoMKgwqDCoMKgwqDCoGV4Y2VwdGlvbiBsYWJl bCAoZ290b8KgbGFiZWwpLiBJdCBpcyBsaWtlIGEgQ09OU1RSQUlOVF9BU1NFUlQoKQ0KPj4+PiDC oMKgwqDCoMKgwqDCoGJ1dCB3aXRoIHRoZSBsYWJlbC4gT24gcmVsZWFzZSBidWlsZHMgdGhlIERF QlVHIHByaW50cyBhcmUNCj4+Pj4gwqDCoMKgwqDCoMKgwqBza2lwcGVkLg0KPj4+PiDCoMKgwqDC oMKgwqDCoFNvIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlOg0KPj4+PiDCoMKgwqDCoMKgwqDC oMKgIEVGSV9TVEFUVVMgU3RhdHVzID0gwqBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqAgUkVRVUlSRShBcmcxICE9IE5VTEwsIEVycm9yRXhpdCk7DQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqAgUkVRVUlSRShBcmcyICE9IE5VTEwsIEVycm9yRXhpdCk7DQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqAgUkVRVUlSRShBcmczICE9IE5VTEwsIEVycm9yRXhpdCk7DQo+Pj4+IMKg wqDCoMKgwqDCoMKgRXJyb3JFeGl0Og0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBTdGF0 dXM7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgVGhlcmUgaXMgYW5vdGhlciBmb3JtIHRoYXQgYWxsb3dz IGFuIEFDVElPTiAoYSBzdGF0ZW1lbnQgdG8NCj4+Pj4gwqDCoMKgwqDCoMKgwqBleGVjdXRlLiBT byB5b3UgY291bGQgaGF2ZToNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBFRklfU1RBVFVTIFN0YXR1 czsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBSRVFVSVJFX0FDVElPTihBcmcxICE9IE5VTEwsIEVy cm9yRXhpdCwgU3RhdHVzID0NCj4+Pj4gwqDCoMKgwqDCoMKgwqBFRklfSU5WQUxJRF9QQVJBTUVU RVIpOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgIFJFUVVJUkVfQUNUSU9OKEFyZzIgIT0gTlVMTCwg RXJyb3JFeGl0LCBTdGF0dXMgPQ0KPj4+PiDCoMKgwqDCoMKgwqDCoEVGSV9JTlZBTElEX1BBUkFN RVRFUik7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgUkVRVUlSRV9BQ1RJT04oQXJnMyAhPSBOVUxM LCBFcnJvckV4aXQsIFN0YXR1cyA9DQo+Pj4+IMKgwqDCoMKgwqDCoMKgRUZJX0lOVkFMSURfUEFS QU1FVEVSKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqBFcnJvckV4aXQ6DQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIFN0YXR1czsNCj4+Pj4gwqDCoMKgwqDCoMKgwqBJZiB5b3UgdXNlIENPTlNU UkFJTlRfQVNTRVJUKCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKEFyZzEgPT0gTlVMTCB8 fCBBcmcyID09IE5VTEwgfHwgQXJnMyA9PSBOVUxMKSB7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAg wqBDT05TVFJBSU5UX0FTU0VSVCAoQXJnMSAhPSBOVUxMKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oCDCoENPTlNUUkFJTlRfQVNTRVJUIChBcmcyICE9IE5VTEwpOw0KPj4+PiDCoMKgwqDCoMKgwqDC oMKgIMKgQ09OU1RSQUlOVF9BU1NFUlQgKEFyZzMgIT0gTlVMTCk7DQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgwqByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPj4+PiDCoMKgwqDCoMKgwqDC oMKgfQ0KPj4+PiDCoMKgwqDCoMKgwqDCoEknZCBub3RlIGVycm9yIHByb2Nlc3NpbmcgYXJncyBv biBlbnRyeSBpcyB0aGUgc2ltcGxlc3QgY2FzZS4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoEluIGEg bW9yZSBjb21wbGV4IGNhc2Ugd2hlbiBjbGVhbnVwIGlzIHJlcXVpcmVkIHRoZSBnb3RvDQo+Pj4+ IMKgwqDCoMKgwqDCoMKgbGFiZWwgaXMgbW9yZSB1c2VmdWwuDQo+Pj4+IMKgwqDCoMKgwqDCoMKg SSBndWVzcyB3ZSBjb3VsZCBhcmd1ZSBmb3IgbGVzcyB0eXBpbmcgYW5kIG1vcmUgc3ltbWV0cnkg YW5kDQo+Pj4+IMKgwqDCoMKgwqDCoMKgc2F5IHVzZSBBU1NFUlQsIENPTlNUUkFJTlQsIGFuZCBS RVFVSVJFLiBJIGd1ZXNzIHlvdSBjb3VsZCBhZGQNCj4+Pj4gwqDCoMKgwqDCoMKgwqBhbiBBU1NF UlRfQUNUSU9OIHRvby4NCj4+Pj4gwqDCoMKgwqDCoMKgwqBUaGUgQXNzZXJ0TWFjcm9zLmggdmVy c2lvbnMgYWxzbyBzdXBwb3J0IF9xdWlldCAoc2tpcCB0aGUNCj4+Pj4gwqDCoMKgwqDCoMKgwqBw cmludCkgYW5kIF9zdHJpbmcgKGFkZCBhIHN0cmluZyB0byB0aGUgcHJpbnQpIHNvIHlvdSBlbmQg dXAgDQo+Pj4+IHdpdGg6DQo+Pj4+IMKgwqDCoMKgwqDCoMKgUkVRVUlSRQ0KPj4+PiDCoMKgwqDC oMKgwqDCoFJFUVVJUkVfU1RSSU5HDQo+Pj4+IMKgwqDCoMKgwqDCoMKgUkVRVUlSRV9RVUlFVA0K Pj4+PiDCoMKgwqDCoMKgwqDCoFJFUVVJUkVfQUNUSU9ODQo+Pj4+IMKgwqDCoMKgwqDCoMKgUkVR VUlSRV9BQ1RJT05fU1RSSU5HDQo+Pj4+IMKgwqDCoMKgwqDCoMKgUkVRVUlSRV9BQ1RJT05fUVVJ RVQNCj4+Pj4gwqDCoMKgwqDCoMKgwqBXZSBjb3VsZCBhbHNvIGVuZCB1cCB3aXRoDQo+Pj4+IMKg wqDCoMKgwqDCoMKgQ09OU1RSQUlOVA0KPj4+PiDCoMKgwqDCoMKgwqDCoENPTlNUUkFJTlRfU1RS SU5HDQo+Pj4+IMKgwqDCoMKgwqDCoMKgQ09OU1RSQUlOVF9RVUlFVA0KPj4+PiDCoMKgwqDCoMKg wqDCoEkgdGhpbmsgdGhlIG1haW4gaWRlYSBiZWhpbmQgX1FVSUVUIGlzIHlvdSBjYW4gc2lsZW5j ZSB0aGluZ3MNCj4+Pj4gwqDCoMKgwqDCoMKgwqB0aGF0IGFyZSB0b28gbm9pc3ksIGFuZCB5b3Ug Y2FuIGVhc2lseSBtYWtlIG5vaXNlIHRoaW5ncyBzaG93DQo+Pj4+IMKgwqDCoMKgwqDCoMKgdXAg YnkgcmVtb3ZpbmcgdGhlIF9RVUlFVCB0byBkZWJ1Zy4NCj4+Pj4gwqDCoMKgwqDCoMKgwqBJJ2Qg dGhvdWdodCBJIHRocm93IG91dCB0aGUgb3RoZXIgZm9ybXMgZm9yIGZvbGtzIHRvIHRoaW5rDQo+ Pj4+IMKgwqDCoMKgwqDCoMKgYWJvdXQuIEknbSBwcm9iYWJseSBiaWFzZWQgYXMgSSB1c2VkIHRv IGxvb2tpbmcgYXQgY29kZSBhbmQNCj4+Pj4gwqDCoMKgwqDCoMKgwqBzZWVpbmcgdGhpbmdzIGxp a2UgcmVxdWlyZV9hY3Rpb25fc3RyaW5nKEFyZzEgIT0gTlVMTCwNCj4+Pj4gwqDCoMKgwqDCoMKg wqBFcnJvckV4aXQsIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUiwgIjFzdCBBcmcxIGNo ZWNrIik7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgVGhhbmtzLA0KPj4+PiDCoMKgwqDCoMKgwqDCoEFu ZHJldyBGaXNoDQo+Pj4+IMKgwqDCoMKgwqDCoMKgUFMgVGhlIG9sZCBkZWJ1ZyBtYWNyb3MgaGFk IDIgdmVyc2lvbnMgb2YgQ09OU1RSQUlOVCBjaGVjayBhbmQNCj4+Pj4gwqDCoMKgwqDCoMKgwqB2 ZXJpZnkuIFRoZSBjaGVjayB2ZXJzaW9uIHdhcyBjb21waWxlZCBvdXQgb24gYSByZWxlYXNlIGJ1 aWxkLA0KPj4+PiDCoMKgwqDCoMKgwqDCoHRoZSB2ZXJpZnkgdmVyc2lvbiBhbHdheXMgZG9lcyB0 aGUgY2hlY2sgYW5kIGp1c3Qgc2tpcHMgdGhlDQo+Pj4+IMKgwqDCoMKgwqDCoMKgREVCVUcgcHJp bnQuDQo+Pj4+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBNaWtlDQo+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAqRnJvbToqdml0OTY5NiA8dml0OTY5NkBwcm90b25tYWlsLmNvbSANCj4+ Pj4gPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29tPg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29tPj4NCj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCpTZW50OipGcmlkYXksIEZlYnJ1YXJ5IDE0LCAyMDIwIDk6MzggQU0NCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpUbzoqS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tIA0KPj4+PiA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT4+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqQ2M6KmRldmVsQGVkazIuZ3Jv dXBzLmlvIA0KPj4+PiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPjxtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8+Ow0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tIA0KPj4+PiA8bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNv bT4+OyBHYW8sIFpoaWNoYW8NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDx6aGljaGFvLmdh b0BpbnRlbC5jb20gDQo+Pj4+IDxtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tPjxtYWlsdG86 emhpY2hhby5nYW9AaW50ZWwuY29tPj47DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBNYXJ2 aW4gSMOkdXNlciA8bWFydmluLmhhZXVzZXJAb3V0bG9vay5jb20gDQo+Pj4+IDxtYWlsdG86bWFy dmluLmhhZXVzZXJAb3V0bG9vay5jb20+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFp bHRvOm1hcnZpbi5oYWV1c2VyQG91dGxvb2suY29tPj47IExhc3psbyBFcnNlaw0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgPGxlcnNla0ByZWRoYXQuY29tIA0KPj4+PiA8bWFpbHRvOmxlcnNl a0ByZWRoYXQuY29tPjxtYWlsdG86bGVyc2VrQHJlZGhhdC5jb20+Pg0KPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKlN1YmplY3Q6KlJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYzIDAvMV0gQWRk IFBDRCB0bw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGlzYWJsZSBzYWZlIHN0cmluZyBj b25zdHJhaW50IGFzc2VydGlvbnMNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE1pY2hhZWws DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBHZW5lcmFsaXNpbmcgdGhlIGFwcHJvYWNoIG1h a2VzIGdvb2Qgc2Vuc2UgdG8gbWUsIGJ1dCB3ZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bmVlZCB0byBtYWtlIGFuIG9idmlvdXMgZGlzdGluZ3Vpc2hhYmxlIGRpZmZlcmVuY2UgYmV0d2Vl bjoNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gcHJlY29uZGl0aW9uIGFuZCBpbnZhcmlh bnQgYXNzZXJ0aW9ucyAoaS5lLiBhc3NlcnRpb25zLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgd2hlcmUgZnVuY3Rpb24gd2lsbCBOT1Qgd29yayBpZiB0aGV5IGFyZSB2aW9sYXRlZCkNCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gY29uc3RyYWludCBhc3NlcnRzIChpLmUuIGFzc2Vy dGlvbnMsIHdoaWNoIGFsbG93IHVzIHRvDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcG90 IHVuaW50ZW50aW9uYWwgYmVoYXZpb3VyIHdoZW4gcGFyc2luZyB1bnRydXN0ZWQgZGF0YSwNCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJ1dCB3aGljaCBkbyBub3QgYnJlYWsgZnVuY3Rpb24g YmVoYXZpb3VyKS4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFzIHdlIHdhbnQgdG8gdXNl IHRoaXMgb3V0c2lkZSBvZiBTYWZlU3RyaW5nLMKgwqBJIHN1Z2dlc3QNCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHRoZSBmb2xsb3dpbmc6DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAt IEludHJvZHVjZSBERUJVR19QUk9QRVJUWV9BU1NFUlRfQ09OU1RSQUlOVF9FTkFCTEVEIDB4NDAN Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJpdCBmb3IgUGNkRGVidWdQcm9wZXJ0eU1hc2vC oGluc3RlYWQNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9mwqBQY2RBc3NlcnRPblNhZmVT dHJpbmdDb25zdHJhaW50cy4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gSW50cm9kdWNl IERlYnVnQXNzZXJ0Q29uc3RyYWludEVuYWJsZWQgRGVidWdMaWIgZnVuY3Rpb24NCj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRvIGNoZWNrIGZvcsKgREVCVUdfUFJPUEVSVFlfQVNTRVJUX0NP TlNUUkFJTlRfRU5BQkxFRC4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gSW50cm9kdWNl IEFTU0VSVF9DT05TVFJBSU5UIG1hY3JvLCB0aGF0IHdpbGwgYXNzZXJ0IG9ubHkNCj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmwqBEZWJ1Z0NvbnN0cmFpbnRBc3NlcnRFbmFibGVkwqByZXR1 cm5zIHRydWUuDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAtIENoYW5nZSBTYWZlU3RyaW5n IEFTU0VSVFMNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGluwqBTQUZFX1NUUklOR19DT05T VFJBSU5UX0NIRUNLIHRvwqBBU1NFUlRfQ09OU1RSQUlOVHMuDQo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAtIFVzZcKgQVNTRVJUX0NPTlNUUkFJTlTCoGluIG90aGVyIHBsYWNlcyB3aGVyZSBu ZWNlc3NhcnkuDQo+Pj4+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBJIGJlbGlldmUgdGhp cyB3YXkgbGluZXMgYmVzdCB3aXRoIEVESyBJSSBkZXNpZ24uIElmIHRoZXJlDQo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBhcmUgbm8gb2JqZWN0aW9ucywgSSBjYW4gc3VibWl0IHRoZSBwYXRj aCBpbiB0aGUgYmVnaW5uaW5nDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvZiBuZXh0IHdl ZWsuDQo+Pj4+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCZXN0IHdpc2hlcywNCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoFZpdGFseQ0KPj4+Pg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAxNCDRhNC10LLRgC4gMjAyMCDQsy4sINCyIDIwOjAwLCBLaW5uZXksIE1p Y2hhZWwgRA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20gDQo+Pj4+IDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+PiDQvdCw0L/QuNGB0LDQuyjQsCk6DQo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoFZpdGFseSwNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgSSB3YW50IHRvIG1ha2Ugc3VyZSBhIGZlYXR1cmUgUENEIGNhbiBiZSB1c2VkIHRvDQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRpc2FibGUgQVNTRVJUKCkgYmVoYXZpb3Ig aW4gbW9yZSB0aGFuIGp1c3Qgc2FmZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJpbmcgZnVuY3Rpb25zIGluQmFzZUxpYi4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgQ2FuIHdlIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBuYW1lIGFuZCBkZXNjcmlwdGlv bg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvZlBjZEFzc2VydE9uU2FmZVN0 cmluZ0NvbnN0cmFpbnRzdG8gYmUgbW9yZSBnZW5lcmljLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzbyBpZiB3ZSBmaW5kIG90aGVyIGxpYiBBUElzLCB0aGUgbmFtZSB3aWxs IG1ha2Ugc2Vuc2U/DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE1heWJlIHNv bWV0aGluZyBsaWtlOlBjZEVuYWJsZUxpYnJhcnlBc3NlcnRDaGVja3M/DQo+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoERlZmF1bHQgaXMgVFJVRS4gQ2FuIHNldCB0byBGQUxTRSBp biBEU0MgZmlsZSB0bw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkaXNhYmxl IEFTU0VSVCgpIGNoZWNrcy4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVGhh bmtzLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBNaWtlDQo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpGcm9tOipkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8bWFp bHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPjxkZXZlbEBlZGsyLmdyb3Vwcy5pbyAN Cj4+Pj4gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4+Kk9uIEJlaGFsZiBP ZipWaXRhbHkNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQ2hlcHRzb3Ygdmlh IEdyb3Vwcy5Jbw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqU2VudDoqRnJp ZGF5LCBGZWJydWFyeSAxNCwgMjAyMCAzOjU1IEFNDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCpUbzoqS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tIA0KPj4+PiA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPj47IEdhbywgTGltaW5nDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxs aW1pbmcuZ2FvQGludGVsLmNvbSANCj4+Pj4gPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT48 bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tPj47DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tIA0KPj4+PiA8bWFp bHRvOnpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgPG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20+PjtkZXZlbEBlZGsyLmdyb3Vwcy5p byANCj4+Pj4gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKkNjOipNYXJ2aW4gSMOkdXNlciA8bWFydmluLmhh ZXVzZXJAb3V0bG9vay5jb20gDQo+Pj4+IDxtYWlsdG86bWFydmluLmhhZXVzZXJAb3V0bG9vay5j b20+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86bWFydmluLmhh ZXVzZXJAb3V0bG9vay5jb20+PjsgTGFzemxvIEVyc2VrDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoDxsZXJzZWtAcmVkaGF0LmNvbSANCj4+Pj4gPG1haWx0bzpsZXJzZWtAcmVk aGF0LmNvbT48bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgKlN1YmplY3Q6KlJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYzIDAvMV0g QWRkIFBDRCB0bw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkaXNhYmxlIHNh ZmUgc3RyaW5nIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBSZXBseWluZyBhcyBwZXIgTGltaW5nJ3MgcmVxdWVzdCBmb3IgdGhpcyB0byBi ZSBtZXJnZWQNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50byBlZGsyLXN0 YWJsZTIwMjAwMi4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgT24gTW9uLCBG ZWIgMTAsIDIwMjAgYXQgMTQ6MTIsIHZpdDk2OTYNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20gPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1h aWwuY29tPg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOnZpdDk2 OTZAcHJvdG9ubWFpbC5jb20+PiB3cm90ZToNCj4+Pj4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBIZWxsbywNCj4+Pj4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBJdCBoYXMgYmVlbiBxdWl0ZSBzb21lIHRpbWUgc2luY2Ugd2Ug c3VibWl0dGVkIHRoZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHBhdGNoIHdpdGggc28gZmFyIG5vIG5lZ2F0aXZlIHJlc3BvbnNlLiBBcyBJDQo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWVudGlvbmVkIHByZXZpb3VzbHksIG15 IHRlYW0gd2lsbCBzdHJvbmdseQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGJlbmVmaXQgZnJvbSBpdHMgbGFuZGluZyBpbiBFREsgSUkgbWFpbmxpbmUuIFNpbmNl DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXQgZG9lcyBub3Qg YWRkIGFueSByZWdyZXNzaW9ucyBhbmQgY2FuIGJlIHZpZXdlZA0KPj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFzIGEgZmVhdHVyZSBpbXBsZW1lbnRhdGlvbiBmb3Ig dGhlIHJlc3Qgb2YgRURLIElJDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdXNlcnMsIEkgcmVxdWVzdCB0aGlzIHRvIGJlIG1lcmdlZCB1cHN0cmVhbSBpbg0KPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVkazItc3RhYmxlMjAyMDAy Lg0KPj4+Pg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJlc3Qg d2lzaGVzLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFZpdGFs eQ0KPj4+Pg0KPj4+Pj4gMjcg0Y/QvdCyLiAyMDIwINCzLiwg0LIgMTI6NDcsIHZpdDk2OTYNCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8dml0OTY5NkBwcm90b25t YWlsLmNvbSANCj4+Pj4gPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29tPg0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86dml0OTY5NkBwcm90b25t YWlsLmNvbT4+INC90LDQv9C40YHQsNC7KNCwKToNCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4gSGkgTWlr ZSwNCj4+Pj4+DQo+Pj4+PiBBbnkgcHJvZ3Jlc3Mgd2l0aCB0aGlzPyBXZSB3b3VsZCByZWFsbHkg YmVuZWZpdA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyb20g dGhpcyBsYW5kaW5nIGluIHRoZSBuZXh0IHN0YWJsZSByZWxlYXNlLg0KPj4+Pj4NCj4+Pj4+IEJl c3QsDQo+Pj4+PiBWaXRhbHkNCj4+Pj4+DQo+Pj4+Pj4gOCDRj9C90LIuIDIwMjAg0LMuLCDQsiAx OTozNSwgS2lubmV5LCBNaWNoYWVsIEQNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20gDQo+Pj4+IDxtYWlsdG86bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+INC90LDQv9C4 0YHQsNC7KNCwKToNCj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4gSGkgVml0YWx5LA0KPj4+Pj4+DQo+ Pj4+Pj4gVGhhbmtzIGZvciB0aGUgYWRkaXRpb25hbCBiYWNrZ3JvdW5kLiBJIHdvdWxkIGxpa2UN Cj4+Pj4+PiBhIGNvdXBsZSBleHRyYSBkYXkgdG8gcmV2aWV3IHRoZSBQQ0QgbmFtZSBhbmQNCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aGUgcGxhY2VzDQo+Pj4+ Pj4gdGhlIFBDRCBtaWdodCBwb3RlbnRpYWxseSBiZSB1c2VkLg0KPj4+Pj4+DQo+Pj4+Pj4gSWYg d2UgZmluZCBvdGhlciBBUElzIHdoZXJlIEFTU0VSVCgpIGJlaGF2aW9yDQo+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXMgb25seQ0KPj4+Pj4+IHZhbHVhYmxlIGR1 cmluZyBkZXYvZGVidWcgdG8gcXVpY2tseSBpZGVudGlmeQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1pc3VzZQ0KPj4+Pj4+IHdpdGggdHJ1c3RlZCBkYXRhIGFu ZCB0aGUgQVBJIHByb3ZpZGVzIHByZWRpY2FibGUNCj4+Pj4+PiByZXR1cm4gYmVoYXZpb3Igd2hl biBBU1NFUlQoKSBpcyBkaXNhYmxlZCwgdGhlbg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEkgd291bGQNCj4+Pj4+PiBsaWtlIHRvIGhhdmUgYSBwYXR0ZXJuIHdl IGNhbiBwb3RlbnRpYWxseSBhcHBseQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRvIGFsbA0KPj4+Pj4+IHRoZXNlIEFQSXMgYWNyb3NzIGFsbCBwYWNrYWdlcy4N Cj4+Pj4+Pg0KPj4+Pj4+IFRoYW5rcywNCj4+Pj4+Pg0KPj4+Pj4+IE1pa2UNCj4+Pj4+Pg0KPj4+ Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+Pj4+PiBGcm9tOmRldmVsQGVkazIu Z3JvdXBzLmlvIDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz48 ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOmRldmVsQGVkazIu Z3JvdXBzLmlvPj4gT24NCj4+Pj4+Pj4gQmVoYWxmIE9mIFZpdGFseSBDaGVwdHNvdiB2aWEgR3Jv dXBzLklvDQo+Pj4+Pj4+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSA2LCAyMDIwIDEwOjQ0IEFNDQo+ Pj4+Pj4+IFRvOiBLaW5uZXksIE1pY2hhZWwgRA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbSANCj4+Pj4gPG1haWx0 bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4NCj4+ Pj4+Pj4gQ2M6ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5p bz4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOmRl dmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQ QVRDSCB2MyAwLzFdIEFkZA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFBDRCB0bw0KPj4+Pj4+PiBkaXNhYmxlIHNhZmUgc3RyaW5nIGNvbnN0cmFpbnQgYXNzZXJ0 aW9ucw0KPj4+Pj4+Pg0KPj4+Pj4+PiBIaSBNaWtlLA0KPj4+Pj4+Pg0KPj4+Pj4+PiBZZXMsIHRo ZSBwcmltYXJ5IHVzZSBjYXNlIGlzIGZvciBVRUZJDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgQXBwbGljYXRpb25zLiBXZQ0KPj4+Pj4+PiBkbyBub3Qgd2FudCB0 byBkaXNhYmxlIEFTU0VSVOKAmXMgY29tcGxldGVseSwgYXMNCj4+Pj4+Pj4gYXNzZXJ0aW9ucyB0 aGF0IG1ha2Ugc2Vuc2UsIGkuZS4gdGhlIG9uZXMNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzaWduYWxpc2luZw0KPj4+Pj4+PiBhYm91dCBpbnRlcmZhY2UgbWlz dXNlLCBhcmUgaGVscGZ1bCBmb3IgZGVidWdnaW5nLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBJIGhhdmUg YWxyZWFkeSBleHBsYWluZWQgaW4gdGhlIEJaIHRoYXQNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBiYXNpY2FsbHkgYWxsDQo+Pj4+Pj4+IHNhZmUgc3RyaW5nIGNv bnN0cmFpbnQgYXNzZXJ0aW9ucyBtYWtlIG5vDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc2Vuc2UgZm9yDQo+Pj4+Pj4+IGhhbmRsaW5nIHVudHJ1c3RlZCBkYXRh LiBXZSBmaW5kIHRoaXMgdXNlIGNhc2UNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2ZXJ5DQo+Pj4+Pj4+IGxvZ2ljYWwsIGFzIHRoZXNlIGZ1bmN0aW9ucyBiZWhh dmUgcHJvcGVybHkgd2l0aA0KPj4+Pj4+PiBhc3NlcnRpb25zIGRpc2FibGVkIGFuZCBjb3ZlciBh bGwgdGhlc2UgZXJyb3INCj4+Pj4+Pj4gY29uZGl0aW9ucyBieSB0aGUgcmV0dXJuIHN0YXR1c2Vz LiBJbiBzdWNoDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l0 dWF0aW9uIGlzDQo+Pj4+Pj4+IG5vdCB1c2VmdWwgZm9yIHRoZXNlIGZ1bmN0aW9ucyB0byBhc3Nl cnQsIGFzDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2UgZW5k IHVwDQo+Pj4+Pj4+IGluZWZmaWNpZW50bHkgcmVpbXBsZW1lbnRpbmcgdGhlIGxvZ2ljLiBJDQo+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd291bGQgaGF2ZQ0KPj4+ Pj4+PiBsaWtlZCB0aGUgYXBwcm9hY2ggb2YgZGlzY3Vzc2luZyB0aGUgaW50ZXJmYWNlcw0KPj4+ Pj4+PiBpbmRpdmlkdWFsbHksIGJ1dCBJIHN0cnVnZ2xlIHRvIGZpbmQgYW55IHRoYXQNCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYWtlcw0KPj4+Pj4+PiBzZW5z ZSBmcm9tIHRoaXMgcG9pbnQgb2Ygdmlldy4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gQXNjaWlTdHJUb0d1 aWQgd2lsbCBBU1NFUlQgd2hlbiB0aGUgbGVuZ3RoIG9mIHRoZQ0KPj4+Pj4+PiBwYXNzZWQgc3Ry aW5nIGlzIG9kZC4gRnVuY3Rpb25zIHRoYXQgY2Fubm90LCBhaGVtLA0KPj4+Pj4+PiBwYXJzZSwg Zm9yIHVzIGFyZSBwcmV0dHkgbXVjaCB1c2VsZXNzLg0KPj4+Pj4+PiBBc2NpaVN0ckNhdFMgd2ls bCBBU1NFUlQgd2hlbiB0aGUgYXBwZW5kZWQNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJpbmcgZG9lcw0KPj4+Pj4+PiBub3QgZml0IHRoZSBidWZmZXIuIEZv ciB1cyB0aGlzIGxvZ2ljIG1ha2VzIHRoaXMNCj4+Pj4+Pj4gZnVuY3Rpb24gcHJldHR5IG11Y2gg ZXF1aXZhbGVudCB0byBkZXByZWNhdGVkDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYW5kIHRodXMNCj4+Pj4+Pj4gdW5hdmFpbGFibGUgQXNjaWlTdHJDYXQsIGV4 Y2VwdCBpdCBpcyBhbHNvIHNsb3dlci4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gTXkgb3JpZ2luYWwgc3Vn Z2VzdGlvbiB3YXMgdG8gcmVtb3ZlIHRoZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGFzc2VydGlvbnMNCj4+Pj4+Pj4gZW50aXJlbHksIGJ1dCBzZXZlcmFsIHBl b3BsZSBoZXJlIHNhaWQgdGhhdA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRoZXkgdXNlDQo+Pj4+Pj4+IHRoZW0gdG8gdmVyaWZ5IHVzYWdlIGVycm9ycyB3aGVu IGhhbmRsaW5nDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHJ1 c3RlZCBkYXRhLg0KPj4+Pj4+PiBUaGlzIG1ha2VzIGdvb2Qgc2Vuc2UgdG8gbWUsIHNvIHdlIHN1 Z2dlc3QgdG8NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdXBw b3J0DQo+Pj4+Pj4+IGJvdGggY2FzZXMgYnkgaW50cm9kdWNpbmcgYSBQQ0QgaW4gdGhpcyBwYXRj aC4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gQmVzdCB3aXNoZXMsDQo+Pj4+Pj4+IFZpdGFseQ0KPj4+Pj4+ Pg0KPj4+Pj4+Pj4gNiDRj9C90LIuIDIwMjAg0LMuLCDQsiAyMToyOCwgS2lubmV5LCBNaWNoYWVs IEQNCj4+Pj4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tIDxtYWlsdG86bWljaGFlbC5k Lmtpbm5leUBpbnRlbC5jb20+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+INC90LDQv9C40YHQsNC7 KNCwKToNCj4+Pj4+Pj4+DQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4gSGkgVml0YWx5LA0KPj4+Pj4+Pj4N Cj4+Pj4+Pj4+IElzIHRoZSB1c2UgY2FzZSBmb3IgVUVGSSBBcHBsaWNhdGlvbnM/DQo+Pj4+Pj4+ Pg0KPj4+Pj4+Pj4gVGhlcmUgaXMgYSBkaWZmZXJlbnQgbWVjaGFuaXNtIHRvIGRpc2FibGUgYWxs DQo+Pj4+Pj4+IEFTU0VSVCgpDQo+Pj4+Pj4+PiBzdGF0ZW1lbnRzIHdpdGhpbiBhIFVFRkkgQXBw bGljYXRpb24uDQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4gSWYgYSBjb21wb25lbnQgaXMgY29uc3VtaW5n IGRhdGEgZnJvbSBhbg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHVudHJ1c3RlZA0KPj4+Pj4+PiBzb3VyY2UsDQo+Pj4+Pj4+PiB0aGVuIHRoYXQgY29tcG9uZW50 IGlzIHJlcXVpcmVkIHRvIHZlcmlmeSB0aGUNCj4+Pj4+Pj4gdW50cnVzdGVkDQo+Pj4+Pj4+PiBk YXRhIGJlZm9yZSBwYXNzaW5nIGl0IHRvIGEgZnVuY3Rpb24gdGhhdCBjbGVhcmx5DQo+Pj4+Pj4+ IGRvY3VtZW50cw0KPj4+Pj4+Pj4gaXMgaW5wdXQgcmVxdWlyZW1lbnRzLiBJZiB0aGlzIGFwcHJv YWNoIGlzDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9sbG93 ZWQsDQo+Pj4+Pj4+IHRoZW4NCj4+Pj4+Pj4+IHRoZSBCYXNlTGliIGZ1bmN0aW9ucyBjYW4gYmUg dXNlZCAiYXMgaXMiIGFzDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbG9uZyBhcw0KPj4+Pj4+PiB0aGUNCj4+Pj4+Pj4+IEFTU0VSVCgpIGNvbmRpdGlvbnMgYXJl IHZlcmlmaWVkIGJlZm9yZSBjYWxsaW5nLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IElmIHRoZXJlIGFy ZSBzb21lIEFQSXMgdGhhdCBjdXJyZW50bHkNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkb2N1bWVudCB0aGVpcg0KPj4+Pj4+PiBBU1NFUlQoKQ0KPj4+Pj4+Pj4g YmVoYXZpb3IgYW5kIHdlIHRoaW5rIHRoYXQgQVNTRVJUKCkgYmVoYXZpb3IgaXMNCj4+Pj4+Pj4g aW5jb3JyZWN0IGFuZA0KPj4+Pj4+Pj4gc2hvdWxkIGJlIGhhbmRsZWQgYnkgYW4gZXhpc3Rpbmcg ZXJyb3IgcmV0dXJuDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dmFsdWUsDQo+Pj4+Pj4+IHRoZW4gd2UNCj4+Pj4+Pj4+IHNob3VsZCBkaXNjdXNzIGVhY2ggb2Yg dGhvc2UgQVBJcyBpbmRpdmlkdWFsbHkuDQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4gTWlrZQ0KPj4+Pj4+ Pj4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+Pj4+ Pj4+PiBGcm9tOmRldmVsQGVkazIuZ3JvdXBzLmlvIDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW8+DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzpk ZXZlbEBlZGsyLmdyb3Vwcy5pbz48ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBl ZGsyLmdyb3Vwcy5pbz4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPj4gT24NCj4+Pj4+Pj4+PiBCZWhhbGYgT2Yg Vml0YWx5IENoZXB0c292IHZpYSBHcm91cHMuSW8NCj4+Pj4+Pj4+PiBTZW50OiBGcmlkYXksIEph bnVhcnkgMywgMjAyMCA5OjEzIEFNDQo+Pj4+Pj4+Pj4gVG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8g PG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPj4+Pj4+Pj4+ IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQgUENEIHRvDQo+Pj4+Pj4+ IGRpc2FibGUNCj4+Pj4+Pj4+PiBzYWZlIHN0cmluZyBjb25zdHJhaW50IGFzc2VydGlvbnMNCj4+ Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IFJFRjoNCj4+Pj4+Pj4+PiBodHRwczovL2J1Z3ppbGxhLnRpYW5v Y29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTQNCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IFJlcXVl c3RpbmcgZm9yIG1lcmdlIGluIGVkazItc3RhYmxlMjAyMDAyLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+ Pj4gQ2hhbmdlcyBzaW5jZSBWMToNCj4+Pj4+Pj4+PiAtIEVuYWJsZSBhc3NlcnRpb25zIGJ5IGRl ZmF1bHQgdG8gcHJlc2VydmUgdGhlDQo+Pj4+Pj4+IG9yaWdpbmFsDQo+Pj4+Pj4+Pj4gYmVoYXZp b3VyDQo+Pj4+Pj4+Pj4gLSBGaXggYnVnemlsbGEgcmVmZXJlbmNlIGxpbmsNCj4+Pj4+Pj4+PiAt IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGluIEJhc2VMaWIuaA0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4g Vml0YWx5IENoZXB0c292ICgxKToNCj4+Pj4+Pj4+PiBNZGVQa2c6IEFkZCBQQ0QgdG8gZGlzYWJs ZSBzYWZlIHN0cmluZw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNvbnN0cmFpbnQNCj4+Pj4+Pj4+PiBhc3NlcnRpb25zDQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiBN ZGVQa2cvTWRlUGtnLmRlYyB8IDYgKysNCj4+Pj4+Pj4+PiBNZGVQa2cvTGlicmFyeS9CYXNlTGli L0Jhc2VMaWIuaW5mIHwgMTEgKy0tDQo+Pj4+Pj4+Pj4gTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9C YXNlTGliLmggfCA3NA0KPj4+Pj4+Pj4+ICsrKysrKysrKysrKystLS0tLS0tDQo+Pj4+Pj4+Pj4g TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMgfCA0ICstDQo+Pj4+Pj4+Pj4gTWRl UGtnL01kZVBrZy51bmkgfCA2ICsrDQo+Pj4+Pj4+Pj4gNSBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNl cnRpb25zKCspLCAzMA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlbGV0aW9ucygtKQ0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gLS0NCj4+Pj4+Pj4+PiAyLjIxLjAg KEFwcGxlIEdpdC0xMjIuMikNCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gLT0tPS09 LT0tPS09DQo+Pj4+Pj4+Pj4gR3JvdXBzLmlvIDxodHRwOi8vZ3JvdXBzLmlvLz48aHR0cDovL2dy b3Vwcy5pby8+TGlua3M6IFlvdQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8NCj4+Pj4+Pj4gdGhpcw0KPj4+Pj4+ Pj4+IGdyb3VwLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gVmlldy9SZXBseSBPbmxpbmUgKCM1Mjgz Nyk6DQo+Pj4+Pj4+Pj4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvNTI4 MzcNCj4+Pj4+Pj4+PiBNdXRlIFRoaXMgVG9waWM6DQo+Pj4+Pj4+IGh0dHBzOi8vZ3JvdXBzLmlv L210LzY5NDAxOTQ4LzE2NDM0OTYNCj4+Pj4+Pj4+PiBHcm91cCBPd25lcjpkZXZlbCtvd25lckBl ZGsyLmdyb3Vwcy5pbyANCj4+Pj4+Pj4+PiA8bWFpbHRvOmRldmVsK293bmVyQGVkazIuZ3JvdXBz LmlvPg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDxtYWlsdG86 ZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8+DQo+Pj4+Pj4+Pj4gVW5zdWJzY3JpYmU6aHR0cHM6 Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL3Vuc3ViDQo+Pj4+Pj4+Pj4gW21pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tIDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPG1haWx0bzptaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT5dDQo+Pj4+Pj4+Pj4gLT0tPS09LT0tPS09DQo+Pj4+Pj4+Pg0KPj4+Pj4+ Pg0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pg0KPj4+Pg0KPj4+DQo+Pj4NCj4+DQo+ PiANCj4gDQo=