From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.0.67; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=vabhav.sharma@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0067.outbound.protection.outlook.com [104.47.0.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 66DB9220E8DED for ; Tue, 24 Apr 2018 06:36:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=W9LjGsZuNlFcBfkD9AuAuuzIF/sOZIpk8A7yeWJDbL4=; b=cOzZNWy2cqSAvEwBQvSy8txVSIopN6Bvc+we3ahcmZjI1BjNGvS5A0Zujp18VkrQWLBZRa+ah8ml5xxR8Fs1CvcGpP1Y4FSFjpa1NsQjC16nghujW8kb78/hcOkp4l9ElK0PkBFCQm5IxDpLa0/QjY4MsIdEmqhN95kpTGenpps= Received: from DB4PR04MB299.eurprd04.prod.outlook.com (10.141.239.21) by DB4PR04MB0765.eurprd04.prod.outlook.com (10.141.45.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.15; Tue, 24 Apr 2018 13:36:36 +0000 Received: from DB4PR04MB299.eurprd04.prod.outlook.com ([fe80::2dcd:1bc7:8d4e:5dc2]) by DB4PR04MB299.eurprd04.prod.outlook.com ([fe80::2dcd:1bc7:8d4e:5dc2%15]) with mapi id 15.20.0696.017; Tue, 24 Apr 2018 13:36:36 +0000 From: Vabhav Sharma To: Ard Biesheuvel CC: Meenakshi Aggarwal , Leif Lindholm , "Kinney, Michael D" , "edk2-devel@lists.01.org" , Udit Kumar , Varun Sethi Thread-Topic: [PATCH edk2-platforms 34/39] Silicon/NXP: Implement EFI_CPU_IO2_PROTOCOL Thread-Index: AQHTpwPYw6QaPQSm1Ea9jfLwpmKD0qQJuHkAgAaF8tCAAASWgIAAD4jg Date: Tue, 24 Apr 2018 13:36:36 +0000 Message-ID: References: <1518771035-6733-1-git-send-email-meenakshi.aggarwal@nxp.com> <1518771035-6733-35-git-send-email-meenakshi.aggarwal@nxp.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=vabhav.sharma@nxp.com; x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB4PR04MB0765; 7:zTy3GbLZZV0altexjrAqkIibuNWoJFmP2VWgaXy4fubH8XgVPVAJFpgGZlI6BedQMamLleQo73M5Y+XoPT3bLVOGLl6gxkjIr7zk5Ojxfj4SlS1DijVEzKsr+sENZfMujbq1jZk8w4Gy+t92xFs4GygDT/wbSQdUBc0Zs6AVjAqwt+ygs0TmrY6rYCHOm4tWpnDy5gk2i1/Ni2FCy5CdGLaVdfjNbvfxlBDY34JJitaS3kcB2J6InIDctC7VtfUl x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DB4PR04MB0765; x-ms-traffictypediagnostic: DB4PR04MB0765: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(189930954265078)(185117386973197)(162533806227266)(45079756050767)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3231232)(944501410)(52105095)(3002001)(6055026)(6041310)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:DB4PR04MB0765; BCL:0; PCL:0; RULEID:; SRVR:DB4PR04MB0765; x-forefront-prvs: 0652EA5565 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(366004)(396003)(39860400002)(376002)(39380400002)(189003)(199004)(13464003)(3846002)(76176011)(186003)(26005)(3660700001)(11346002)(97736004)(446003)(966005)(15760500003)(6506007)(105586002)(486006)(2900100001)(3280700002)(5660300001)(25786009)(7696005)(2906002)(478600001)(102836004)(476003)(106356001)(6436002)(6116002)(54906003)(93886005)(316002)(44832011)(45080400002)(16799955002)(6916009)(55016002)(59450400001)(8936002)(6246003)(55236004)(66066001)(74316002)(9686003)(14454004)(53946003)(99286004)(6306002)(16200700003)(53936002)(229853002)(81156014)(5250100002)(68736007)(4326008)(86362001)(575784001)(33656002)(7736002)(8676002)(81166006)(305945005)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR04MB0765; H:DB4PR04MB299.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:3; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: xR6LaheILkLHFMMHzGoUEXhk15SVs3X9RzTySBttvo6Pe/QH6bHd33wqR85UGuagCgP3zjIljtfr4zDrjY/b2DAoWvZZkqUNupljNflOwW0YyRvCKzkIxnAHcGtFPgpVPRyx1PrpeplRvrwBPBlovn//y+FJv44y9KMxounKaPc7CRHcok2k8jgumB5HdCSW spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: d6525775-8d81-42b6-8bd7-08d5a9e866bb X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6525775-8d81-42b6-8bd7-08d5a9e866bb X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2018 13:36:36.2460 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB0765 Subject: Re: [PATCH edk2-platforms 34/39] Silicon/NXP: Implement EFI_CPU_IO2_PROTOCOL X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Apr 2018 13:36:48 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEFyZCBCaWVzaGV1dmVsIFtt YWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj5TZW50OiBUdWVzZGF5LCBBcHJpbCAy NCwgMjAxOCA2OjA0IFBNDQo+VG86IFZhYmhhdiBTaGFybWEgPHZhYmhhdi5zaGFybWFAbnhwLmNv bT4NCj5DYzogTWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47 IExlaWYgTGluZGhvbG0NCj48bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnPjsgS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj5lZGsyLWRldmVsQGxpc3RzLjAx Lm9yZzsgVWRpdCBLdW1hciA8dWRpdC5rdW1hckBueHAuY29tPjsgVmFydW4gU2V0aGkNCj48Vi5T ZXRoaUBueHAuY29tPg0KPlN1YmplY3Q6IFJlOiBbUEFUQ0ggZWRrMi1wbGF0Zm9ybXMgMzQvMzld IFNpbGljb24vTlhQOiBJbXBsZW1lbnQNCj5FRklfQ1BVX0lPMl9QUk9UT0NPTA0KPg0KPk9uIDI0 IEFwcmlsIDIwMTggYXQgMTQ6MjYsIFZhYmhhdiBTaGFybWEgPHZhYmhhdi5zaGFybWFAbnhwLmNv bT4gd3JvdGU6DQo+Pg0KPj4NCj4+Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj5Gcm9t OiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+Pj5T ZW50OiBGcmlkYXksIEFwcmlsIDIwLCAyMDE4IDI6MTEgUE0NCj4+PlRvOiBNZWVuYWtzaGkgQWdn YXJ3YWwgPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPg0KPj4+Q2M6IExlaWYgTGluZGhvbG0g PGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IEtpbm5leSwgTWljaGFlbCBEDQo+Pj48bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgVWRpdCBLdW1h cg0KPj4+PHVkaXQua3VtYXJAbnhwLmNvbT47IFZhcnVuIFNldGhpIDxWLlNldGhpQG54cC5jb20+ OyBWYWJoYXYgU2hhcm1hDQo+Pj48dmFiaGF2LnNoYXJtYUBueHAuY29tPg0KPj4+U3ViamVjdDog UmU6IFtQQVRDSCBlZGsyLXBsYXRmb3JtcyAzNC8zOV0gU2lsaWNvbi9OWFA6IEltcGxlbWVudA0K Pj4+RUZJX0NQVV9JTzJfUFJPVE9DT0wNCj4+Pg0KPj4+T24gMTYgRmVicnVhcnkgMjAxOCBhdCAw OTo1MCwgTWVlbmFrc2hpIDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT4NCj4+Pndyb3RlOg0K Pj4+PiBGcm9tOiBWYWJoYXYgPHZhYmhhdi5zaGFybWFAbnhwLmNvbT4NCj4+Pj4NCj4+Pj4gTlhQ IFNPQyBoYXMgbXV0aXBsZSBQQ0llIFJDcyxBZGRpbmcgcmVzcGVjdGl2ZSBpbXBsZW1lbnRhdGlv biBvZg0KPj4+PiBFRklfQ1BVX0lPMl9QUk9UT0NPTCB0byBwcm92aWRlIE1lbW9yeSBTcGFjZSBS ZWFkL1dyaXRlIGZ1bmN0aW9ucw0KPj4+PiB1c2VkIGJ5IGdlbmVyaWMgSG9zdCBCcmlkZ2UgRHJp dmVyIGluY2x1ZGluZyBjb3JyZWN0IHZhbHVlIGZvciB0aGUNCj4+Pj4gdHJhbnNsYXRpb24gb2Zm c2V0IGR1cmluZyBNTUlPIGFjY2Vzc2VzDQo+Pj4+DQo+Pj4+IENvbnRyaWJ1dGVkLXVuZGVyOiBU aWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4+Pj4gU2lnbmVkLW9mZi1ieTog VmFiaGF2IDx2YWJoYXYuc2hhcm1hQG54cC5jb20+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IE1lZW5h a3NoaSBBZ2dhcndhbCA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+DQo+Pj4NCj4+PlRoaXMg ZHJpdmVyIGxvb2tzIGNvbXBsZXRlbHkgd3JvbmcgdG8gbWU6IE1NSU8gYWNjZXNzIGlzIG1lbW9y eQ0KPj4+bWFwcGVkLCBhbmQgZ2l2ZW4gdGhhdCB5b3UgZG9uJ3QgaW1wbGVtZW50IFBDSSB0byBD UFUgdHJhbnNsYXRpb24gb2YNCj4+Pk1NSU8gYWNjZXNzZXMsIHRoZSBtZW1vcnkgcmVhZCBhbmQg d3JpdGUgZnVuY3Rpb25zIHNob3VsZCBub3QgcGVyZm9ybQ0KPj4+YW55IHRyYW5zbGF0aW9uIGF0 IGFsbCwgYW5kIGp1c3QgcmVsYXkgdGhlIGFjY2Vzc2VzLiBPbiB0aGUgb3RoZXINCj4+PmhhbmQs IHRoZSBJL08gYWNjZXNzb3JzIGFyZSBub3QgaW1wbGVtZW50ZWQgYXQgYWxsLCBhbmQgdGhlc2Ug YXJlIHRoZQ0KPj4+b25lcyB0aGF0IHJlcXVpcmUgdHJhbnNsYXRpb24sIGdpdmVuIHRoYXQgdGhl IEkvTyBwb3J0IGFkZHJlc3NlcyBpbiB0aGUgQ1BVDQo+c3BhY2UgbmVlZCB0cmFuc2xhdGlvbiB0 byBNTUlPIGFkZHJlc3Nlc3MuDQo+Pg0KPj4gT24gTlhQIFNvQywgTWFwcGluZyBiZXR3ZWVuIENQ VSB2aWV3IGFuZCBQQ0llIHZpZXcgaXMgbm90IDE6MSBhbmQgcmVxdWlyZQ0KPkNQVSB2aWV3IHRy YW5zbGF0aW9uIGZvciBNTUlPIHJlZ2lvbnMgYWNjZXNzLCBBY2NvcmRpbmdseSB0cmFuc2xhdGlv biBpcyBhZGRlZA0KPmR1cmluZyBtZW1vcnkgcmVhZC93cml0ZSBzZXJ2aWNlcy4NCj4+IEJ1cyBk cml2ZXIgcmVsYXlzIHRoZSBhZGRyZXNzIHJhbmdlIHdoZXJlIFBDSWUgZGV2aWNlIEJhciByZWdp b24gaXMgc3BsaXQgZnJvbSwNCj5UcmFuc2xhdGlvbiBpcyByZXF1aXJlZCBmb3IgcmVsYXlpbmcg aXQgdG8gY29ycmVjdCBQQ0llIGNvbnRyb2xsZXIgY3B1IHZpZXcgYWRkcmVzcy4NCj4+DQo+DQo+ WW91IGNhbm5vdCBpbXBsZW1lbnQgdGhpcyBvbmx5IGluIHRoZSBFRklfQ1BVX0lPMl9QUk9UT0NP TCBkcml2ZXIuDQo+VGhhdCB3YXksIEVGSV9QQ0lfSU9fUFJPVE9DT0wuR2V0QmFyQXR0cmlidXRl cygpIHdpbGwgcmV0dXJuIHJlc291cmNlDQo+ZGVzY3JpcHRvcnMgd2l0aCB1bnRyYW5zbGF0ZWQg YWRkcmVzc2VzLCBicmVha2luZyBkcml2ZXJzIHRoYXQgcmVseSBvbiB0aGlzDQo+aW5mb3JtYXRp b24uDQo+DQo+SWYgeW91ciBQQ0llIGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiBNTUlPIHRyYW5z bGF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlDQo+cmVjZW50bHkgbWVyZ2VkIGNvZGUgaW4gRURL MiBhbmQgZWRrMi1wbGF0Zm9ybXMgaW1wbGVtZW50aW5nIHRoaXMgZm9yDQo+U29jaW9uZXh0IFN5 blF1YWNlci4NCk9rLCBQY2lJby0+R2V0QmFyQXR0cmlidXRlcyBpcyBleHBlY3RlZCB0byByZXR1 cm4gQ1BVIHZpZXcgYWRkcmVzcy4NCkFyZSB5b3UgcmVmZXJyaW5nIHRvIGVkazIgY29tbWl0IDc0 ZDBhMzMoQWRkcmVzcyB0cmFuc2xhdGlvbiBzdXBwb3J0IGFkZGVkIHRvIGdlbmVyaWMgUGNpSG9z dEJyaWRnZSBkcml2ZXIpPyBTdWJtaXR0ZWQgcGF0Y2ggZGV2ZWxvcG1lbnQgaXMgZG9uZSBwcmlv ciB0byB0aGlzIGNvbW1pdC4NCkkgd2lsbCByZWZlciB0aGUgY29tbWl0cyBmb3IgU29jaW9uZXh0 IFN5blF1YWNlciBpbiBlZGsyLXBsYXRmb3JtcyBmb3IgTU1JTyB0cmFuc2xhdGlvbi4NCj4NCj4N Cj4+Pg0KPj4+QWxzbywgeW91IGRvbid0IHNlZW0gdG8gYmUgdXNpbmcgdGhlIFBjZFBjaUV4cD9C YXNlQWRkciBQQ0RzIGFueXdoZXJlLA0KPj4+c28geW91IGNhbiBkcm9wIHRoZW0gZnJvbSB0aGUg LmRzYw0KPj4gTm8sIEl0J3MgdXNlZCBmb3IgY2hlY2tpbmcgdGhlIGFjY2VzcyB0byBNTUlPMzIg cmVnaW9uIGFuZCBDUFUgdmlldw0KPj4gYmFzZSBhZGRyZXNzIHZhcmllcyBiZXR3ZWVuIGRpZmZl cmVudCBOWFAgU29Dcw0KPj4+DQo+Pj4+IC0tLQ0KPj4+PiAgU2lsaWNvbi9OWFAvRHJpdmVycy9Q Y2lDcHVJbzJEeGUvUGNpQ3B1SW8yRHhlLmMgICB8IDUyOQ0KPj4+KysrKysrKysrKysrKysrKysr KysrKw0KPj4+PiAgU2lsaWNvbi9OWFAvRHJpdmVycy9QY2lDcHVJbzJEeGUvUGNpQ3B1SW8yRHhl LmluZiB8ICA0OCArKw0KPj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCA1NzcgaW5zZXJ0aW9ucygrKQ0K Pj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFNpbGljb24vTlhQL0RyaXZlcnMvUGNpQ3B1SW8yRHhl L1BjaUNwdUlvMkR4ZS5jDQo+Pj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4+Pj4gU2lsaWNvbi9O WFAvRHJpdmVycy9QY2lDcHVJbzJEeGUvUGNpQ3B1SW8yRHhlLmluZg0KPj4+Pg0KPj4+PiBkaWZm IC0tZ2l0IGEvU2lsaWNvbi9OWFAvRHJpdmVycy9QY2lDcHVJbzJEeGUvUGNpQ3B1SW8yRHhlLmMN Cj4+Pj4gYi9TaWxpY29uL05YUC9Ecml2ZXJzL1BjaUNwdUlvMkR4ZS9QY2lDcHVJbzJEeGUuYw0K Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+PiBpbmRleCAwMDAwMDAwLi5iNWZiNzJjDQo+ Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4gKysrIGIvU2lsaWNvbi9OWFAvRHJpdmVycy9QY2lDcHVJ bzJEeGUvUGNpQ3B1SW8yRHhlLmMNCj4+Pj4gQEAgLTAsMCArMSw1MjkgQEANCj4+Pj4gKy8qKiBA ZmlsZQ0KPj4+PiArICBQcm9kdWNlcyB0aGUgQ1BVIEkvTyAyIFByb3RvY29sLg0KPj4+PiArDQo+ Pj4+ICsgIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzDQo+Pj4+ICsgcmVzZXJ2ZWQuPEJSPiAgQ29weXJpZ2h0IChjKSAyMDE2LCBMaW5hcm8g THRkLiBBbGwgcmlnaHRzDQo+Pj4+ICsgcmVzZXJ2ZWQuPEJSPiAgQ29weXJpZ2h0IDIwMTggTlhQ DQo+Pj4+ICsNCj4+Pj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscyAgYXJlIGxpY2Vuc2VkIGFuZA0KPj4+PiArIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4+Pj4gKyB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UN Cj4+Pj4gKyBtYXkgYmUgZm91bmQgYXQNCj4+Pj4gKw0KPj4+PiArIGh0dHBzOi8vZW1lYTAxLnNh ZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRg0KPj4+PiAr IG9wDQo+Pj4+ICsgZW5zb3VyY2Uub3JnJTJGbGljZW5zZXMlMkZic2QtDQo+bGljZW5zZS5waHAm ZGF0YT0wMiU3QzAxJTdDdmFiaGF2LnNoDQo+Pj4+ICsgYXINCj4+Pj4gKw0KPj4+bWElNDBueHAu Y29tJTdDNDUwN2MwNzI2YjI0NGFkNjQ3NmQwOGQ1YTY5YTY0ZWUlN0M2ODZlYTFkM2JjMmINCj40 Yw0KPj4+NmZhOQ0KPj4+PiArDQo+Pj4yY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDNjM2NTk4MTA0 NDE0MDQ2NDQwJnNkYXRhPUlGU1UwJTJGZVRkVw0KPnJ3DQo+Pj5nZzBmDQo+Pj4+ICsgMExxMnFT Vkdnb2dHNjh0WVpldnJSbUMlMkJrVjglM0QmcmVzZXJ2ZWQ9MA0KPj4+PiArDQo+Pj4+ICsgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiDQo+Pj4+ICsgQkFTSVMsICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELA0KPkVJVEhFUg0KPj4+RVhQUkVTUyBPUiBJTVBMSUVELg0KPj4+PiArDQo+ Pj4+ICsqKi8NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPj4+ PiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0lvTGliLmg+DQo+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCj4+Pj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPj4+PiArI2luY2x1ZGUg PFBjaWUuaD4NCj4+Pj4gKyNpbmNsdWRlIDxQcm90b2NvbC9DcHVJbzIuaD4NCj4+Pj4gKw0KPj4+ PiArI2RlZmluZSBNQVhfSU9fUE9SVF9BRERSRVNTIFBDSV9TRUcyX1BPUlRJT19NQVgNCj4+Pj4g Kw0KPj4+PiArLy8NCj4+Pj4gKy8vIEhhbmRsZSBmb3IgdGhlIENQVSBJL08gMiBQcm90b2NvbCAv LyBTVEFUSUMgRUZJX0hBTkRMRSAgbUhhbmRsZTsNCj4+Pj4gKw0KPj4+PiArLy8NCj4+Pj4gKy8v IExvb2t1cCB0YWJsZSBmb3IgaW5jcmVtZW50IHZhbHVlcyBiYXNlZCBvbiB0cmFuc2ZlciB3aWR0 aHMgLy8NCj4+Pj4gK1NUQVRJQyBDT05TVCBVSU5UOCBtSW5TdHJpZGVbXSA9IHsNCj4+Pj4gKyAg MSwgLy8gRWZpQ3B1SW9XaWR0aFVpbnQ4DQo+Pj4+ICsgIDIsIC8vIEVmaUNwdUlvV2lkdGhVaW50 MTYNCj4+Pj4gKyAgNCwgLy8gRWZpQ3B1SW9XaWR0aFVpbnQzMg0KPj4+PiArICA4LCAvLyBFZmlD cHVJb1dpZHRoVWludDY0DQo+Pj4+ICsgIDAsIC8vIEVmaUNwdUlvV2lkdGhGaWZvVWludDgNCj4+ Pj4gKyAgMCwgLy8gRWZpQ3B1SW9XaWR0aEZpZm9VaW50MTYNCj4+Pj4gKyAgMCwgLy8gRWZpQ3B1 SW9XaWR0aEZpZm9VaW50MzINCj4+Pj4gKyAgMCwgLy8gRWZpQ3B1SW9XaWR0aEZpZm9VaW50NjQN Cj4+Pj4gKyAgMSwgLy8gRWZpQ3B1SW9XaWR0aEZpbGxVaW50OA0KPj4+PiArICAyLCAvLyBFZmlD cHVJb1dpZHRoRmlsbFVpbnQxNg0KPj4+PiArICA0LCAvLyBFZmlDcHVJb1dpZHRoRmlsbFVpbnQz Mg0KPj4+PiArICA4ICAvLyBFZmlDcHVJb1dpZHRoRmlsbFVpbnQ2NA0KPj4+PiArfTsNCj4+Pj4g Kw0KPj4+PiArLy8NCj4+Pj4gKy8vIExvb2t1cCB0YWJsZSBmb3IgaW5jcmVtZW50IHZhbHVlcyBi YXNlZCBvbiB0cmFuc2ZlciB3aWR0aHMgLy8NCj4+Pj4gK1NUQVRJQyBDT05TVCBVSU5UOCBtT3V0 U3RyaWRlW10gPSB7DQo+Pj4+ICsgIDEsIC8vIEVmaUNwdUlvV2lkdGhVaW50OA0KPj4+PiArICAy LCAvLyBFZmlDcHVJb1dpZHRoVWludDE2DQo+Pj4+ICsgIDQsIC8vIEVmaUNwdUlvV2lkdGhVaW50 MzINCj4+Pj4gKyAgOCwgLy8gRWZpQ3B1SW9XaWR0aFVpbnQ2NA0KPj4+PiArICAxLCAvLyBFZmlD cHVJb1dpZHRoRmlmb1VpbnQ4DQo+Pj4+ICsgIDIsIC8vIEVmaUNwdUlvV2lkdGhGaWZvVWludDE2 DQo+Pj4+ICsgIDQsIC8vIEVmaUNwdUlvV2lkdGhGaWZvVWludDMyDQo+Pj4+ICsgIDgsIC8vIEVm aUNwdUlvV2lkdGhGaWZvVWludDY0DQo+Pj4+ICsgIDAsIC8vIEVmaUNwdUlvV2lkdGhGaWxsVWlu dDgNCj4+Pj4gKyAgMCwgLy8gRWZpQ3B1SW9XaWR0aEZpbGxVaW50MTYNCj4+Pj4gKyAgMCwgLy8g RWZpQ3B1SW9XaWR0aEZpbGxVaW50MzINCj4+Pj4gKyAgMCAgLy8gRWZpQ3B1SW9XaWR0aEZpbGxV aW50NjQNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICBDaGVjayBwYXJhbWV0 ZXJzIHRvIGEgQ1BVIEkvTyAyIFByb3RvY29sIHNlcnZpY2UgcmVxdWVzdC4NCj4+Pj4gKw0KPj4+ PiArICBUaGUgSS9PIG9wZXJhdGlvbnMgYXJlIGNhcnJpZWQgb3V0IGV4YWN0bHkgYXMgcmVxdWVz dGVkLiBUaGUNCj4+Pj4gKyBjYWxsZXIgaXMgcmVzcG9uc2libGUgIGZvciBzYXRpc2Z5aW5nIGFu eSBhbGlnbm1lbnQgYW5kIEkvTyB3aWR0aA0KPj4+PiArIHJlc3RyaWN0aW9ucyB0aGF0IGEgUEkg U3lzdGVtIG9uIGEgIHBsYXRmb3JtIG1pZ2h0IHJlcXVpcmUuIEZvcg0KPj4+PiArIGV4YW1wbGUg b24gc29tZSBwbGF0Zm9ybXMsIHdpZHRoIHJlcXVlc3RzIG9mDQo+Pj4+ICsgIEVmaUNwdUlvV2lk dGhVaW50NjQgZG8gbm90IHdvcmsuDQo+Pj4+ICsNCj4+Pj4gKyAgQHBhcmFtW2luXSBNbWlvT3Bl cmF0aW9uICBUUlVFIGZvciBhbiBNTUlPIG9wZXJhdGlvbiwgRkFMU0UgZm9yDQo+Pj4+ICsgSS9P DQo+Pj5Qb3J0IG9wZXJhdGlvbi4NCj4+Pj4gKyAgQHBhcmFtW2luXSBXaWR0aCAgICAgICAgICBT aWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBJL08gb3IgTWVtb3J5DQo+b3BlcmF0aW9uLg0KPj4+ PiArICBAcGFyYW1baW5dIEFkZHJlc3MgICAgICAgIFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEkv TyBvcGVyYXRpb24uDQo+Pj4+ICsgIEBwYXJhbVtpbl0gQ291bnQgICAgICAgICAgVGhlIG51bWJl ciBvZiBJL08gb3BlcmF0aW9ucyB0byBwZXJmb3JtLiBUaGUNCj4+Pm51bWJlciBvZg0KPj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIG1vdmVkIGlzIFdpZHRoIHNpemUgKiBD b3VudCwgc3RhcnRpbmcgYXQgQWRkcmVzcy4NCj4+Pj4gKyAgQHBhcmFtW2luXSBCdWZmZXIgICAg ICAgICBGb3IgcmVhZCBvcGVyYXRpb25zLCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3Jl DQo+Pj50aGUgcmVzdWx0cy4NCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Ig d3JpdGUgb3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZmZXINCj4+Pj4gKyBmcm9tIHdoaWNoIHRv IHdyaXRlDQo+Pj5kYXRhLg0KPj4+PiArDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICBUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyByZXF1ZXN0IHBhc3MgdGhlDQo+Y2hlY2tz Lg0KPj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgV2lkdGggaXMgaW52YWxp ZCBmb3IgdGhpcyBQSSBzeXN0ZW0uDQo+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICBCdWZmZXIgaXMgTlVMTC4NCj4+Pj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAg ICAgIFRoZSBCdWZmZXIgaXMgbm90IGFsaWduZWQgZm9yIHRoZSBnaXZlbg0KPldpZHRoLg0KPj4+ PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIGFkZHJlc3MgcmFuZ2Ugc3Bl Y2lmaWVkIGJ5IEFkZHJlc3MsDQo+Pj5XaWR0aCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFuZCBDb3VudCBpcyBub3QgdmFsaWQgZm9yIHRoaXMgUEkgc3lzdGVtLg0K Pj4+PiArDQo+Pj4+ICsqKi8NCj4+Pj4gK1NUQVRJQw0KPj4+PiArRUZJX1NUQVRVUw0KPj4+PiAr Q3B1SW9DaGVja1BhcmFtZXRlciAoDQo+Pj4+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICAgICAg ICAgIE1taW9PcGVyYXRpb24sDQo+Pj4+ICsgIElOIEVGSV9DUFVfSU9fUFJPVE9DT0xfV0lEVEgg IFdpZHRoLA0KPj4+PiArICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLA0K Pj4+PiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4+Pj4gKyAgSU4g Vk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcg0KPj4+PiArICApDQo+Pj4+ICt7DQo+ Pj4+ICsgIFVJTlQ2NCAgTWF4Q291bnQ7DQo+Pj4+ICsgIFVJTlQ2NCAgTGltaXQ7DQo+Pj4+ICsN Cj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gQ2hlY2sgdG8gc2VlIGlmIEJ1ZmZlciBpcyBOVUxMICAv LyAgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7DQo+Pj4+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+Pj4+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+ Pj4+ICsgIC8vDQo+Pj4+ICsgIC8vIENoZWNrIHRvIHNlZSBpZiBXaWR0aCBpcyBpbiB0aGUgdmFs aWQgcmFuZ2UgIC8vICBpZg0KPj4+PiArICgoVUlOVDMyKVdpZHRoID49IEVmaUNwdUlvV2lkdGhN YXhpbXVtKSB7DQo+Pj4+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+Pj4+ICsgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIC8vDQo+Pj4+ ICsgIC8vIEZvciBGSUZPIHR5cGUsIHRoZSB0YXJnZXQgYWRkcmVzcyB3b24ndCBpbmNyZWFzZSBk dXJpbmcgdGhlDQo+Pj4+ICsgYWNjZXNzLCAgLy8gc28gdHJlYXQgQ291bnQgYXMgMSAgLy8gIGlm IChXaWR0aCA+PQ0KPj4+PiArIEVmaUNwdUlvV2lkdGhGaWZvVWludDggJiYgV2lkdGggPD0gRWZp Q3B1SW9XaWR0aEZpZm9VaW50NjQpIHsNCj4+Pj4gKyAgICBDb3VudCA9IDE7DQo+Pj4+ICsgIH0N Cj4+Pj4gKw0KPj4+PiArICAvLw0KPj4+PiArICAvLyBDaGVjayB0byBzZWUgaWYgV2lkdGggaXMg aW4gdGhlIHZhbGlkIHJhbmdlIGZvciBJL08gUG9ydA0KPj4+PiArIG9wZXJhdGlvbnMgIC8vICBX aWR0aCA9IChFRklfQ1BVX0lPX1BST1RPQ09MX1dJRFRIKShXaWR0aCAmIDB4MDMpOw0KPj4+PiAr IGlmICghTW1pb09wZXJhdGlvbiAmJiAoV2lkdGggPT0gRWZpQ3B1SW9XaWR0aFVpbnQ2NCkpIHsN Cj4+Pj4gKyAgICBBU1NFUlQgKEZBTFNFKTsNCj4+Pj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOw0KPj4+PiArICB9DQo+Pj4+ICsNCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gQ2hl Y2sgdG8gc2VlIGlmIEFkZHJlc3MgaXMgYWxpZ25lZCAgLy8gIGlmICgoQWRkcmVzcyAmDQo+Pj4+ ICsgKFVJTlQ2NCkobUluU3RyaWRlW1dpZHRoXSAtIDEpKSAhPSAwKSB7DQo+Pj4+ICsgICAgQVNT RVJUIChGQUxTRSk7DQo+Pj4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAg fQ0KPj4+PiArDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8vIENoZWNrIHRvIHNlZSBpZiBhbnkgYWRk cmVzcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0cmFuc2Zlcg0KPj4+PiArIGV4Y2VlZHMgdGhlIG1h eGltdW0gIC8vIGFsbG93ZWQgYWRkcmVzcy4gIFRoZSBtYXhpbXVtIGFkZHJlc3MNCj4+Pj4gKyBp bXBsaWVkIGJ5IHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCBpbiBpcyAgLy8gQWRkcmVzcyArIFNpemUg KiBDb3VudC4NCj4+Pj4gKyBJZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbiBpcyBtZXQsIHRoZW4g dGhlIHRyYW5zZmVyICAvLyBpcyBub3Qgc3VwcG9ydGVkLg0KPj4+PiArICAvLw0KPj4+PiArICAv LyAgICBBZGRyZXNzICsgU2l6ZSAqIENvdW50ID4gKE1taW9PcGVyYXRpb24gPyBNQVhfQUREUkVT UyA6DQo+Pj5NQVhfSU9fUE9SVF9BRERSRVNTKSArIDENCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8g U2luY2UgTUFYX0FERFJFU1MgY2FuIGJlIHRoZSBtYXhpbXVtIGludGVnZXIgdmFsdWUgc3VwcG9y dGVkDQo+Pj4+ICsgYnkgdGhlIENQVSBhbmQgQ291bnQgIC8vIGNhbiBhbHNvIGJlIHRoZSBtYXhp bXVtIGludGVnZXIgdmFsdWUNCj4+Pj4gKyBzdXBwb3J0ZWQgYnkgdGhlIENQVSwgdGhpcyByYW5n ZSAgLy8gY2hlY2sgbXVzdCBiZSBhZGp1c3RlZCB0bw0KPj4+PiArIGF2b2lkIGFsbA0KPj4+b3Zl ZmxvdyBjb25kaXRpb25zLg0KPj4+PiArICAvLw0KPj4+PiArICBMaW1pdCA9IChNbWlvT3BlcmF0 aW9uID8gTUFYX0FERFJFU1MgOiBNQVhfSU9fUE9SVF9BRERSRVNTKTsgIGlmDQo+Pj4+ICsgKENv dW50ID09IDApIHsNCj4+Pj4gKyAgICBpZiAoQWRkcmVzcyA+IExpbWl0KSB7DQo+Pj4+ICsgICAg ICBBU1NFUlQgKEZBTFNFKTsNCj4+Pj4gKyAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ Pj4+ICsgICAgfQ0KPj4+PiArICB9IGVsc2Ugew0KPj4+PiArICAgIE1heENvdW50ID0gUlNoaWZ0 VTY0IChMaW1pdCwgV2lkdGgpOw0KPj4+PiArICAgIGlmIChNYXhDb3VudCA8IChDb3VudCAtIDEp KSB7DQo+Pj4+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4+Pj4gKyAgICAgIHJldHVybiBFRklf VU5TVVBQT1JURUQ7DQo+Pj4+ICsgICAgfQ0KPj4+PiArICAgIGlmIChBZGRyZXNzID4gTFNoaWZ0 VTY0IChNYXhDb3VudCAtIENvdW50ICsgMSwgV2lkdGgpKSB7DQo+Pj4+ICsgICAgICBBU1NFUlQg KEZBTFNFKTsNCj4+Pj4gKyAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+Pj4+ICsgICAg fQ0KPj4+PiArICB9DQo+Pj4+ICsNCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gQ2hlY2sgdG8gc2Vl IGlmIEJ1ZmZlciBpcyBhbGlnbmVkICAvLyAgaWYgKCgoVUlOVE4pQnVmZmVyICYNCj4+Pj4gKyAo KE1JTiAoc2l6ZW9mIChVSU5UTiksIG1JblN0cmlkZVtXaWR0aF0pICAtIDEpKSkgIT0gMCkgew0K Pj4+PiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPj4+PiArICAgIHJldHVybiBFRklfVU5TVVBQT1JU RUQ7DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+Pj4+ ICt9DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICBSZWFkcyBtZW1vcnktbWFwcGVkIHJlZ2lz dGVycy4NCj4+Pj4gKw0KPj4+PiArICBUaGUgSS9PIG9wZXJhdGlvbnMgYXJlIGNhcnJpZWQgb3V0 IGV4YWN0bHkgYXMgcmVxdWVzdGVkLiBUaGUNCj4+Pj4gKyBjYWxsZXIgaXMgcmVzcG9uc2libGUg IGZvciBzYXRpc2Z5aW5nIGFueSBhbGlnbm1lbnQgYW5kIEkvTyB3aWR0aA0KPj4+PiArIHJlc3Ry aWN0aW9ucyB0aGF0IGEgUEkgU3lzdGVtIG9uIGEgIHBsYXRmb3JtIG1pZ2h0IHJlcXVpcmUuIEZv cg0KPj4+PiArIGV4YW1wbGUgb24gc29tZSBwbGF0Zm9ybXMsIHdpZHRoIHJlcXVlc3RzIG9mDQo+ Pj4+ICsgIEVmaUNwdUlvV2lkdGhVaW50NjQgZG8gbm90IHdvcmsuDQo+Pj4+ICsNCj4+Pj4gKyAg SWYgV2lkdGggaXMgRWZpQ3B1SW9XaWR0aFVpbnQ4LCBFZmlDcHVJb1dpZHRoVWludDE2LA0KPj4+ PiArIEVmaUNwdUlvV2lkdGhVaW50MzIsICBvciBFZmlDcHVJb1dpZHRoVWludDY0LCB0aGVuIGJv dGggQWRkcmVzcw0KPj4+PiArIGFuZCBCdWZmZXIgYXJlIGluY3JlbWVudGVkIGZvciAgZWFjaCBv ZiB0aGUgQ291bnQgb3BlcmF0aW9ucyB0aGF0IGlzDQo+cGVyZm9ybWVkLg0KPj4+PiArDQo+Pj4+ ICsgIElmIFdpZHRoIGlzIEVmaUNwdUlvV2lkdGhGaWZvVWludDgsIEVmaUNwdUlvV2lkdGhGaWZv VWludDE2LA0KPj4+PiArIEVmaUNwdUlvV2lkdGhGaWZvVWludDMyLCBvciBFZmlDcHVJb1dpZHRo Rmlmb1VpbnQ2NCwgdGhlbiBvbmx5DQo+Pj4+ICsgQnVmZmVyIGlzICBpbmNyZW1lbnRlZCBmb3Ig ZWFjaCBvZiB0aGUgQ291bnQgb3BlcmF0aW9ucyB0aGF0IGlzDQo+Pj4+ICsgcGVyZm9ybWVkLiBU aGUgcmVhZCBvciAgd3JpdGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBDb3VudCB0aW1lcw0KPj4+ PiArIG9uIHRoZQ0KPj4+c2FtZSBBZGRyZXNzLg0KPj4+PiArDQo+Pj4+ICsgIElmIFdpZHRoIGlz IEVmaUNwdUlvV2lkdGhGaWxsVWludDgsIEVmaUNwdUlvV2lkdGhGaWxsVWludDE2LA0KPj4+PiAr IEVmaUNwdUlvV2lkdGhGaWxsVWludDMyLCBvciBFZmlDcHVJb1dpZHRoRmlsbFVpbnQ2NCwgdGhl biBvbmx5DQo+Pj4+ICsgQWRkcmVzcyBpcyAgaW5jcmVtZW50ZWQgZm9yIGVhY2ggb2YgdGhlIENv dW50IG9wZXJhdGlvbnMgdGhhdCBpcw0KPj4+PiArIHBlcmZvcm1lZC4gVGhlIHJlYWQgb3IgIHdy aXRlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgQ291bnQgdGltZXMNCj4+Pj4gKyBmcm9tIHRoZQ0K Pj4+Zmlyc3QgZWxlbWVudCBvZiBCdWZmZXIuDQo+Pj4+ICsNCj4+Pj4gKyAgQHBhcmFtW2luXSAg VGhpcyAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfQ1BVX0lPMl9QUk9UT0NPTCBpbnN0YW5jZS4N Cj4+Pj4gKyAgQHBhcmFtW2luXSAgV2lkdGggICAgU2lnbmlmaWVzIHRoZSB3aWR0aCBvZiB0aGUg SS9PIG9yIE1lbW9yeSBvcGVyYXRpb24uDQo+Pj4+ICsgIEBwYXJhbVtpbl0gIEFkZHJlc3MgIFRo ZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEkvTyBvcGVyYXRpb24uDQo+Pj4+ICsgIEBwYXJhbVtpbl0g IENvdW50ICAgIFRoZSBudW1iZXIgb2YgSS9PIG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4gVGhlDQo+ bnVtYmVyDQo+Pj5vZg0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBieXRlcyBtb3ZlZCBp cyBXaWR0aCBzaXplICogQ291bnQsIHN0YXJ0aW5nIGF0IEFkZHJlc3MuDQo+Pj4+ICsgIEBwYXJh bVtvdXRdIEJ1ZmZlciAgIEZvciByZWFkIG9wZXJhdGlvbnMsIHRoZSBkZXN0aW5hdGlvbiBidWZm ZXIgdG8gc3RvcmUNCj50aGUNCj4+PnJlc3VsdHMuDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIEZvciB3cml0ZSBvcGVyYXRpb25zLCB0aGUgc291cmNlIGJ1ZmZlciBmcm9tIHdoaWNoIHRv IHdyaXRlDQo+ZGF0YS4NCj4+Pj4gKw0KPj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgVGhlIGRhdGEgd2FzIHJlYWQgZnJvbSBvciB3cml0dGVuIHRvIHRoZSBQSQ0KPj4+c3lz dGVtLg0KPj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgV2lkdGggaXMgaW52 YWxpZCBmb3IgdGhpcyBQSSBzeXN0ZW0uDQo+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSICBCdWZmZXIgaXMgTlVMTC4NCj4+Pj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQg ICAgICAgIFRoZSBCdWZmZXIgaXMgbm90IGFsaWduZWQgZm9yIHRoZSBnaXZlbg0KPldpZHRoLg0K Pj4+PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIGFkZHJlc3MgcmFuZ2Ug c3BlY2lmaWVkIGJ5IEFkZHJlc3MsDQo+Pj5XaWR0aCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFuZCBDb3VudCBpcyBub3QgdmFsaWQgZm9yIHRoaXMgUEkgc3lzdGVt Lg0KPj4+PiArDQo+Pj4+ICsqKi8NCj4+Pj4gK1NUQVRJQw0KPj4+PiArRUZJX1NUQVRVUw0KPj4+ PiArRUZJQVBJDQo+Pj4+ICtDcHVNZW1vcnlTZXJ2aWNlUmVhZCAoDQo+Pj4+ICsgIElOICBFRklf Q1BVX0lPMl9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4+Pj4gKyAgSU4gIEVGSV9DUFVfSU9fUFJP VE9DT0xfV0lEVEggIFdpZHRoLA0KPj4+PiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAg ICAgQWRkcmVzcywNCj4+Pj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgIENvdW50 LA0KPj4+PiArICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcg0KPj4+PiAr ICApDQo+Pj4+ICt7DQo+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4+Pj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgSW5TdHJpZGU7DQo+Pj4+ICsgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgIE91dFN0cmlkZTsNCj4+Pj4gKyAgRUZJX0NQVV9JT19Q Uk9UT0NPTF9XSURUSCAgT3BlcmF0aW9uV2lkdGg7DQo+Pj4+ICsgIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICpVaW50OEJ1ZmZlcjsNCj4+Pj4gKw0KPj4+PiArICBTdGF0dXMgPSBDcHVJb0No ZWNrUGFyYW1ldGVyIChUUlVFLCBXaWR0aCwgQWRkcmVzcywgQ291bnQsDQo+Pj4+ICsgQnVmZmVy KTsgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+ Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICBpZiAoKEFkZHJlc3MgPj0gUENJX1NFRzBfTU1JTzMy X01JTikgJiYNCj4+Pj4gKyAgICAgIChBZGRyZXNzIDw9IFBDSV9TRUcwX01NSU8zMl9NQVgpKSB7 DQo+Pj4+ICsgICAgQWRkcmVzcyArPSBQQ0lfU0VHMF9NTUlPX01FTUJBU0U7ICB9IGVsc2UgaWYg KChBZGRyZXNzID49DQo+Pj4+ICsgUENJX1NFRzFfTU1JTzMyX01JTikgJiYNCj4+Pj4gKyAgICAg ICAgICAgICAoQWRkcmVzcyA8PSBQQ0lfU0VHMV9NTUlPMzJfTUFYKSkgew0KPj4+PiArICAgIEFk ZHJlc3MgKz0gUENJX1NFRzFfTU1JT19NRU1CQVNFOyAgfSBlbHNlIGlmICgoQWRkcmVzcyA+PQ0K Pj4+PiArIFBDSV9TRUcyX01NSU8zMl9NSU4pICYmDQo+Pj4+ICsgICAgICAgICAgICAgKEFkZHJl c3MgPD0gUENJX1NFRzJfTU1JTzMyX01BWCkpIHsNCj4+Pj4gKyAgICBBZGRyZXNzICs9IFBDSV9T RUcyX01NSU9fTUVNQkFTRTsgIH0gZWxzZSBpZiAoKEFkZHJlc3MgPj0NCj4+Pj4gKyBQQ0lfU0VH M19NTUlPMzJfTUlOKSAmJg0KPj4+PiArICAgICAgICAgICAgIChBZGRyZXNzIDw9IFBDSV9TRUcz X01NSU8zMl9NQVgpKSB7DQo+Pj4+ICsgICAgQWRkcmVzcyArPSBQQ0lfU0VHM19NTUlPX01FTUJB U0U7ICB9IGVsc2Ugew0KPj4+PiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPj4+PiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICAvLw0K Pj4+PiArICAvLyBTZWxlY3QgbG9vcCBiYXNlZCBvbiB0aGUgd2lkdGggb2YgdGhlIHRyYW5zZmVy ICAvLyAgSW5TdHJpZGUgPQ0KPj4+PiArIG1JblN0cmlkZVtXaWR0aF07ICBPdXRTdHJpZGUgPSBt T3V0U3RyaWRlW1dpZHRoXTsgIE9wZXJhdGlvbldpZHRoDQo+Pj4+ICsgPSAoRUZJX0NQVV9JT19Q Uk9UT0NPTF9XSURUSCkgKFdpZHRoICYgMHgwMyk7ICBmb3IgKFVpbnQ4QnVmZmVyID0NCj4+Pj4g KyBCdWZmZXI7IENvdW50ID4gMDsgQWRkcmVzcyArPSBJblN0cmlkZSwgVWludDhCdWZmZXIgKz0N Cj4+Pk91dFN0cmlkZSwgQ291bnQtLSkgew0KPj4+PiArICAgIGlmIChPcGVyYXRpb25XaWR0aCA9 PSBFZmlDcHVJb1dpZHRoVWludDgpIHsNCj4+Pj4gKyAgICAgICpVaW50OEJ1ZmZlciA9IE1taW9S ZWFkOCAoKFVJTlROKUFkZHJlc3MpOw0KPj4+PiArICAgIH0gZWxzZSBpZiAoT3BlcmF0aW9uV2lk dGggPT0gRWZpQ3B1SW9XaWR0aFVpbnQxNikgew0KPj4+PiArICAgICAgKigoVUlOVDE2ICopVWlu dDhCdWZmZXIpID0gTW1pb1JlYWQxNiAoKFVJTlROKUFkZHJlc3MpOw0KPj4+PiArICAgIH0gZWxz ZSBpZiAoT3BlcmF0aW9uV2lkdGggPT0gRWZpQ3B1SW9XaWR0aFVpbnQzMikgew0KPj4+PiArICAg ICAgKigoVUlOVDMyICopVWludDhCdWZmZXIpID0gTW1pb1JlYWQzMiAoKFVJTlROKUFkZHJlc3Mp Ow0KPj4+PiArICAgIH0gZWxzZSBpZiAoT3BlcmF0aW9uV2lkdGggPT0gRWZpQ3B1SW9XaWR0aFVp bnQ2NCkgew0KPj4+PiArICAgICAgKigoVUlOVDY0ICopVWludDhCdWZmZXIpID0gTW1pb1JlYWQ2 NCAoKFVJTlROKUFkZHJlc3MpOw0KPj4+PiArICAgIH0NCj4+Pj4gKyAgfQ0KPj4+PiArICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICBXcml0 ZXMgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMuDQo+Pj4+ICsNCj4+Pj4gKyAgVGhlIEkvTyBvcGVy YXRpb25zIGFyZSBjYXJyaWVkIG91dCBleGFjdGx5IGFzIHJlcXVlc3RlZC4gVGhlDQo+Pj4+ICsg Y2FsbGVyIGlzIHJlc3BvbnNpYmxlICBmb3Igc2F0aXNmeWluZyBhbnkgYWxpZ25tZW50IGFuZCBJ L08gd2lkdGgNCj4+Pj4gKyByZXN0cmljdGlvbnMgdGhhdCBhIFBJIFN5c3RlbSBvbiBhICBwbGF0 Zm9ybSBtaWdodCByZXF1aXJlLiBGb3INCj4+Pj4gKyBleGFtcGxlIG9uIHNvbWUgcGxhdGZvcm1z LCB3aWR0aCByZXF1ZXN0cyBvZg0KPj4+PiArICBFZmlDcHVJb1dpZHRoVWludDY0IGRvIG5vdCB3 b3JrLg0KPj4+PiArDQo+Pj4+ICsgIElmIFdpZHRoIGlzIEVmaUNwdUlvV2lkdGhVaW50OCwgRWZp Q3B1SW9XaWR0aFVpbnQxNiwNCj4+Pj4gKyBFZmlDcHVJb1dpZHRoVWludDMyLCAgb3IgRWZpQ3B1 SW9XaWR0aFVpbnQ2NCwgdGhlbiBib3RoIEFkZHJlc3MNCj4+Pj4gKyBhbmQgQnVmZmVyIGFyZSBp bmNyZW1lbnRlZCBmb3IgIGVhY2ggb2YgdGhlIENvdW50IG9wZXJhdGlvbnMgdGhhdCBpcw0KPnBl cmZvcm1lZC4NCj4+Pj4gKw0KPj4+PiArICBJZiBXaWR0aCBpcyBFZmlDcHVJb1dpZHRoRmlmb1Vp bnQ4LCBFZmlDcHVJb1dpZHRoRmlmb1VpbnQxNiwNCj4+Pj4gKyBFZmlDcHVJb1dpZHRoRmlmb1Vp bnQzMiwgb3IgRWZpQ3B1SW9XaWR0aEZpZm9VaW50NjQsIHRoZW4gb25seQ0KPj4+PiArIEJ1ZmZl ciBpcyAgaW5jcmVtZW50ZWQgZm9yIGVhY2ggb2YgdGhlIENvdW50IG9wZXJhdGlvbnMgdGhhdCBp cw0KPj4+PiArIHBlcmZvcm1lZC4gVGhlIHJlYWQgb3IgIHdyaXRlIG9wZXJhdGlvbiBpcyBwZXJm b3JtZWQgQ291bnQgdGltZXMNCj4+Pj4gKyBvbiB0aGUNCj4+PnNhbWUgQWRkcmVzcy4NCj4+Pj4g Kw0KPj4+PiArICBJZiBXaWR0aCBpcyBFZmlDcHVJb1dpZHRoRmlsbFVpbnQ4LCBFZmlDcHVJb1dp ZHRoRmlsbFVpbnQxNiwNCj4+Pj4gKyBFZmlDcHVJb1dpZHRoRmlsbFVpbnQzMiwgb3IgRWZpQ3B1 SW9XaWR0aEZpbGxVaW50NjQsIHRoZW4gb25seQ0KPj4+PiArIEFkZHJlc3MgaXMgIGluY3JlbWVu dGVkIGZvciBlYWNoIG9mIHRoZSBDb3VudCBvcGVyYXRpb25zIHRoYXQgaXMNCj4+Pj4gKyBwZXJm b3JtZWQuIFRoZSByZWFkIG9yICB3cml0ZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIENvdW50IHRp bWVzDQo+Pj4+ICsgZnJvbSB0aGUNCj4+PmZpcnN0IGVsZW1lbnQgb2YgQnVmZmVyLg0KPj4+PiAr DQo+Pj4+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0NQVV9J TzJfUFJPVE9DT0wgaW5zdGFuY2UuDQo+Pj4+ICsgIEBwYXJhbVtpbl0gIFdpZHRoICAgIFNpZ25p ZmllcyB0aGUgd2lkdGggb2YgdGhlIEkvTyBvciBNZW1vcnkgb3BlcmF0aW9uLg0KPj4+PiArICBA cGFyYW1baW5dICBBZGRyZXNzICBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBJL08gb3BlcmF0aW9u Lg0KPj4+PiArICBAcGFyYW1baW5dICBDb3VudCAgICBUaGUgbnVtYmVyIG9mIEkvTyBvcGVyYXRp b25zIHRvIHBlcmZvcm0uIFRoZQ0KPm51bWJlcg0KPj4+b2YNCj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgYnl0ZXMgbW92ZWQgaXMgV2lkdGggc2l6ZSAqIENvdW50LCBzdGFydGluZyBhdCBB ZGRyZXNzLg0KPj4+PiArICBAcGFyYW1baW5dICBCdWZmZXIgICBGb3IgcmVhZCBvcGVyYXRpb25z LCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3JlDQo+dGhlDQo+Pj5yZXN1bHRzLg0KPj4+ PiArICAgICAgICAgICAgICAgICAgICAgICBGb3Igd3JpdGUgb3BlcmF0aW9ucywgdGhlIHNvdXJj ZSBidWZmZXIgZnJvbSB3aGljaCB0byB3cml0ZQ0KPmRhdGEuDQo+Pj4+ICsNCj4+Pj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBkYXRhIHdhcyByZWFkIGZyb20gb3Igd3Jp dHRlbiB0byB0aGUgUEkNCj4+PnN5c3RlbS4NCj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgIFdpZHRoIGlzIGludmFsaWQgZm9yIHRoaXMgUEkgc3lzdGVtLg0KPj4+PiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQnVmZmVyIGlzIE5VTEwuDQo+Pj4+ICsgIEBy ZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgQnVmZmVyIGlzIG5vdCBhbGlnbmVkIGZv ciB0aGUgZ2l2ZW4NCj5XaWR0aC4NCj4+Pj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAg ICAgIFRoZSBhZGRyZXNzIHJhbmdlIHNwZWNpZmllZCBieSBBZGRyZXNzLA0KPj4+V2lkdGgsDQo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ291bnQgaXMgbm90IHZh bGlkIGZvciB0aGlzIFBJIHN5c3RlbS4NCj4+Pj4gKw0KPj4+PiArKiovDQo+Pj4+ICtTVEFUSUMN Cj4+Pj4gK0VGSV9TVEFUVVMNCj4+Pj4gK0VGSUFQSQ0KPj4+PiArQ3B1TWVtb3J5U2VydmljZVdy aXRlICgNCj4+Pj4gKyAgSU4gRUZJX0NQVV9JTzJfUFJPVE9DT0wgICAgICAgKlRoaXMsDQo+Pj4+ ICsgIElOIEVGSV9DUFVfSU9fUFJPVE9DT0xfV0lEVEggIFdpZHRoLA0KPj4+PiArICBJTiBVSU5U NjQgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLA0KPj4+PiArICBJTiBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICBDb3VudCwNCj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAg ICAgKkJ1ZmZlcg0KPj4+PiArICApDQo+Pj4+ICt7DQo+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4+Pj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgSW5T dHJpZGU7DQo+Pj4+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgIE91dFN0cmlkZTsNCj4+ Pj4gKyAgRUZJX0NQVV9JT19QUk9UT0NPTF9XSURUSCAgT3BlcmF0aW9uV2lkdGg7DQo+Pj4+ICsg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICpVaW50OEJ1ZmZlcjsNCj4+Pj4gKw0KPj4+PiAr ICBTdGF0dXMgPSBDcHVJb0NoZWNrUGFyYW1ldGVyIChUUlVFLCBXaWR0aCwgQWRkcmVzcywgQ291 bnQsDQo+Pj4+ICsgQnVmZmVyKTsgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+PiArICAg IHJldHVybiBTdGF0dXM7DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICBpZiAoKEFkZHJlc3Mg Pj0gUENJX1NFRzBfTU1JTzMyX01JTikgJiYNCj4+Pj4gKyAgICAgIChBZGRyZXNzIDw9IFBDSV9T RUcwX01NSU8zMl9NQVgpKSB7DQo+Pj4+ICsgICAgQWRkcmVzcyArPSBQQ0lfU0VHMF9NTUlPX01F TUJBU0U7ICB9IGVsc2UgaWYgKChBZGRyZXNzID49DQo+Pj4+ICsgUENJX1NFRzFfTU1JTzMyX01J TikgJiYNCj4+Pj4gKyAgICAgICAgICAgICAoQWRkcmVzcyA8PSBQQ0lfU0VHMV9NTUlPMzJfTUFY KSkgew0KPj4+PiArICAgIEFkZHJlc3MgKz0gUENJX1NFRzFfTU1JT19NRU1CQVNFOyAgfSBlbHNl IGlmICgoQWRkcmVzcyA+PQ0KPj4+PiArIFBDSV9TRUcyX01NSU8zMl9NSU4pICYmDQo+Pj4+ICsg ICAgICAgICAgICAgKEFkZHJlc3MgPD0gUENJX1NFRzJfTU1JTzMyX01BWCkpIHsNCj4+Pj4gKyAg ICBBZGRyZXNzICs9IFBDSV9TRUcyX01NSU9fTUVNQkFTRTsgIH0gZWxzZSBpZiAoKEFkZHJlc3Mg Pj0NCj4+Pj4gKyBQQ0lfU0VHM19NTUlPMzJfTUlOKSAmJg0KPj4+PiArICAgICAgICAgICAgIChB ZGRyZXNzIDw9IFBDSV9TRUczX01NSU8zMl9NQVgpKSB7DQo+Pj4+ICsgICAgQWRkcmVzcyArPSBQ Q0lfU0VHM19NTUlPX01FTUJBU0U7ICB9IGVsc2Ugew0KPj4+PiArICAgIEFTU0VSVCAoRkFMU0Up Ow0KPj4+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+Pj4+ICsgIH0NCj4+ Pj4gKw0KPj4+PiArICAvLw0KPj4+PiArICAvLyBTZWxlY3QgbG9vcCBiYXNlZCBvbiB0aGUgd2lk dGggb2YgdGhlIHRyYW5zZmVyICAvLyAgSW5TdHJpZGUgPQ0KPj4+PiArIG1JblN0cmlkZVtXaWR0 aF07ICBPdXRTdHJpZGUgPSBtT3V0U3RyaWRlW1dpZHRoXTsgIE9wZXJhdGlvbldpZHRoDQo+Pj4+ ICsgPSAoRUZJX0NQVV9JT19QUk9UT0NPTF9XSURUSCkgKFdpZHRoICYgMHgwMyk7ICBmb3IgKFVp bnQ4QnVmZmVyID0NCj4+Pj4gKyBCdWZmZXI7IENvdW50ID4gMDsgQWRkcmVzcyArPSBJblN0cmlk ZSwgVWludDhCdWZmZXIgKz0NCj4+Pk91dFN0cmlkZSwgQ291bnQtLSkgew0KPj4+PiArICAgIGlm IChPcGVyYXRpb25XaWR0aCA9PSBFZmlDcHVJb1dpZHRoVWludDgpIHsNCj4+Pj4gKyAgICAgIE1t aW9Xcml0ZTggKChVSU5UTilBZGRyZXNzLCAqVWludDhCdWZmZXIpOw0KPj4+PiArICAgIH0gZWxz ZSBpZiAoT3BlcmF0aW9uV2lkdGggPT0gRWZpQ3B1SW9XaWR0aFVpbnQxNikgew0KPj4+PiArICAg ICAgTW1pb1dyaXRlMTYgKChVSU5UTilBZGRyZXNzLCAqKChVSU5UMTYgKilVaW50OEJ1ZmZlcikp Ow0KPj4+PiArICAgIH0gZWxzZSBpZiAoT3BlcmF0aW9uV2lkdGggPT0gRWZpQ3B1SW9XaWR0aFVp bnQzMikgew0KPj4+PiArICAgICAgTW1pb1dyaXRlMzIgKChVSU5UTilBZGRyZXNzLCAqKChVSU5U MzIgKilVaW50OEJ1ZmZlcikpOw0KPj4+PiArICAgIH0gZWxzZSBpZiAoT3BlcmF0aW9uV2lkdGgg PT0gRWZpQ3B1SW9XaWR0aFVpbnQ2NCkgew0KPj4+PiArICAgICAgTW1pb1dyaXRlNjQgKChVSU5U TilBZGRyZXNzLCAqKChVSU5UNjQgKilVaW50OEJ1ZmZlcikpOw0KPj4+PiArICAgIH0NCj4+Pj4g KyAgfQ0KPj4+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4g Ky8qKg0KPj4+PiArICBSZWFkcyBJL08gcmVnaXN0ZXJzLg0KPj4+PiArDQo+Pj4+ICsgIFRoZSBJ L08gb3BlcmF0aW9ucyBhcmUgY2FycmllZCBvdXQgZXhhY3RseSBhcyByZXF1ZXN0ZWQuIFRoZQ0K Pj4+PiArIGNhbGxlciBpcyByZXNwb25zaWJsZSAgZm9yIHNhdGlzZnlpbmcgYW55IGFsaWdubWVu dCBhbmQgSS9PIHdpZHRoDQo+Pj4+ICsgcmVzdHJpY3Rpb25zIHRoYXQgYSBQSSBTeXN0ZW0gb24g YSAgcGxhdGZvcm0gbWlnaHQgcmVxdWlyZS4gRm9yDQo+Pj4+ICsgZXhhbXBsZSBvbiBzb21lIHBs YXRmb3Jtcywgd2lkdGggcmVxdWVzdHMgb2YNCj4+Pj4gKyAgRWZpQ3B1SW9XaWR0aFVpbnQ2NCBk byBub3Qgd29yay4NCj4+Pj4gKw0KPj4+PiArICBJZiBXaWR0aCBpcyBFZmlDcHVJb1dpZHRoVWlu dDgsIEVmaUNwdUlvV2lkdGhVaW50MTYsDQo+Pj4+ICsgRWZpQ3B1SW9XaWR0aFVpbnQzMiwgIG9y IEVmaUNwdUlvV2lkdGhVaW50NjQsIHRoZW4gYm90aCBBZGRyZXNzDQo+Pj4+ICsgYW5kIEJ1ZmZl ciBhcmUgaW5jcmVtZW50ZWQgZm9yICBlYWNoIG9mIHRoZSBDb3VudCBvcGVyYXRpb25zIHRoYXQg aXMNCj5wZXJmb3JtZWQuDQo+Pj4+ICsNCj4+Pj4gKyAgSWYgV2lkdGggaXMgRWZpQ3B1SW9XaWR0 aEZpZm9VaW50OCwgRWZpQ3B1SW9XaWR0aEZpZm9VaW50MTYsDQo+Pj4+ICsgRWZpQ3B1SW9XaWR0 aEZpZm9VaW50MzIsIG9yIEVmaUNwdUlvV2lkdGhGaWZvVWludDY0LCB0aGVuIG9ubHkNCj4+Pj4g KyBCdWZmZXIgaXMgIGluY3JlbWVudGVkIGZvciBlYWNoIG9mIHRoZSBDb3VudCBvcGVyYXRpb25z IHRoYXQgaXMNCj4+Pj4gKyBwZXJmb3JtZWQuIFRoZSByZWFkIG9yICB3cml0ZSBvcGVyYXRpb24g aXMgcGVyZm9ybWVkIENvdW50IHRpbWVzDQo+Pj4+ICsgb24gdGhlDQo+Pj5zYW1lIEFkZHJlc3Mu DQo+Pj4+ICsNCj4+Pj4gKyAgSWYgV2lkdGggaXMgRWZpQ3B1SW9XaWR0aEZpbGxVaW50OCwgRWZp Q3B1SW9XaWR0aEZpbGxVaW50MTYsDQo+Pj4+ICsgRWZpQ3B1SW9XaWR0aEZpbGxVaW50MzIsIG9y IEVmaUNwdUlvV2lkdGhGaWxsVWludDY0LCB0aGVuIG9ubHkNCj4+Pj4gKyBBZGRyZXNzIGlzICBp bmNyZW1lbnRlZCBmb3IgZWFjaCBvZiB0aGUgQ291bnQgb3BlcmF0aW9ucyB0aGF0IGlzDQo+Pj4+ ICsgcGVyZm9ybWVkLiBUaGUgcmVhZCBvciAgd3JpdGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBD b3VudCB0aW1lcw0KPj4+PiArIGZyb20gdGhlDQo+Pj5maXJzdCBlbGVtZW50IG9mIEJ1ZmZlci4N Cj4+Pj4gKw0KPj4+PiArICBAcGFyYW1baW5dICBUaGlzICAgICBBIHBvaW50ZXIgdG8gdGhlIEVG SV9DUFVfSU8yX1BST1RPQ09MIGluc3RhbmNlLg0KPj4+PiArICBAcGFyYW1baW5dICBXaWR0aCAg ICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBJL08gb3IgTWVtb3J5IG9wZXJhdGlvbi4NCj4+ Pj4gKyAgQHBhcmFtW2luXSAgQWRkcmVzcyAgVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgSS9PIG9w ZXJhdGlvbi4NCj4+Pj4gKyAgQHBhcmFtW2luXSAgQ291bnQgICAgVGhlIG51bWJlciBvZiBJL08g b3BlcmF0aW9ucyB0byBwZXJmb3JtLiBUaGUNCj5udW1iZXINCj4+Pm9mDQo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJ5dGVzIG1vdmVkIGlzIFdpZHRoIHNpemUgKiBDb3VudCwgc3RhcnRp bmcgYXQgQWRkcmVzcy4NCj4+Pj4gKyAgQHBhcmFtW291dF0gQnVmZmVyICAgRm9yIHJlYWQgb3Bl cmF0aW9ucywgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0byBzdG9yZQ0KPnRoZQ0KPj4+cmVzdWx0 cy4NCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIHdyaXRlIG9wZXJhdGlvbnMsIHRo ZSBzb3VyY2UgYnVmZmVyIGZyb20gd2hpY2ggdG8gd3JpdGUNCj5kYXRhLg0KPj4+PiArDQo+Pj4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZGF0YSB3YXMgcmVhZCBmcm9t IG9yIHdyaXR0ZW4gdG8gdGhlIFBJDQo+Pj5zeXN0ZW0uDQo+Pj4+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICBXaWR0aCBpcyBpbnZhbGlkIGZvciB0aGlzIFBJIHN5c3RlbS4NCj4+ Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEJ1ZmZlciBpcyBOVUxMLg0KPj4+ PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIEJ1ZmZlciBpcyBub3QgYWxp Z25lZCBmb3IgdGhlIGdpdmVuDQo+V2lkdGguDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9S VEVEICAgICAgICBUaGUgYWRkcmVzcyByYW5nZSBzcGVjaWZpZWQgYnkgQWRkcmVzcywNCj4+Pldp ZHRoLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIENvdW50IGlz IG5vdCB2YWxpZCBmb3IgdGhpcyBQSSBzeXN0ZW0uDQo+Pj4+ICsNCj4+Pj4gKyoqLw0KPj4+PiAr U1RBVElDDQo+Pj4+ICtFRklfU1RBVFVTDQo+Pj4+ICtFRklBUEkNCj4+Pj4gK0NwdUlvU2Vydmlj ZVJlYWQgKA0KPj4+PiArICBJTiAgRUZJX0NQVV9JTzJfUFJPVE9DT0wgICAgICAgKlRoaXMsDQo+ Pj4+ICsgIElOICBFRklfQ1BVX0lPX1BST1RPQ09MX1dJRFRIICBXaWR0aCwNCj4+Pj4gKyAgSU4g IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+Pj4+ICsgIElOICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4+Pj4gKyAgT1VUIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgICpCdWZmZXINCj4+Pj4gKyAgKQ0KPj4+PiArew0KPj4+PiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICBXcml0ZSBJL08g cmVnaXN0ZXJzLg0KPj4+PiArDQo+Pj4+ICsgIFRoZSBJL08gb3BlcmF0aW9ucyBhcmUgY2Fycmll ZCBvdXQgZXhhY3RseSBhcyByZXF1ZXN0ZWQuIFRoZQ0KPj4+PiArIGNhbGxlciBpcyByZXNwb25z aWJsZSAgZm9yIHNhdGlzZnlpbmcgYW55IGFsaWdubWVudCBhbmQgSS9PIHdpZHRoDQo+Pj4+ICsg cmVzdHJpY3Rpb25zIHRoYXQgYSBQSSBTeXN0ZW0gb24gYSAgcGxhdGZvcm0gbWlnaHQgcmVxdWly ZS4gRm9yDQo+Pj4+ICsgZXhhbXBsZSBvbiBzb21lIHBsYXRmb3Jtcywgd2lkdGggcmVxdWVzdHMg b2YNCj4+Pj4gKyAgRWZpQ3B1SW9XaWR0aFVpbnQ2NCBkbyBub3Qgd29yay4NCj4+Pj4gKw0KPj4+ PiArICBJZiBXaWR0aCBpcyBFZmlDcHVJb1dpZHRoVWludDgsIEVmaUNwdUlvV2lkdGhVaW50MTYs DQo+Pj4+ICsgRWZpQ3B1SW9XaWR0aFVpbnQzMiwgIG9yIEVmaUNwdUlvV2lkdGhVaW50NjQsIHRo ZW4gYm90aCBBZGRyZXNzDQo+Pj4+ICsgYW5kIEJ1ZmZlciBhcmUgaW5jcmVtZW50ZWQgZm9yICBl YWNoIG9mIHRoZSBDb3VudCBvcGVyYXRpb25zIHRoYXQgaXMNCj5wZXJmb3JtZWQuDQo+Pj4+ICsN Cj4+Pj4gKyAgSWYgV2lkdGggaXMgRWZpQ3B1SW9XaWR0aEZpZm9VaW50OCwgRWZpQ3B1SW9XaWR0 aEZpZm9VaW50MTYsDQo+Pj4+ICsgRWZpQ3B1SW9XaWR0aEZpZm9VaW50MzIsIG9yIEVmaUNwdUlv V2lkdGhGaWZvVWludDY0LCB0aGVuIG9ubHkNCj4+Pj4gKyBCdWZmZXIgaXMgIGluY3JlbWVudGVk IGZvciBlYWNoIG9mIHRoZSBDb3VudCBvcGVyYXRpb25zIHRoYXQgaXMNCj4+Pj4gKyBwZXJmb3Jt ZWQuIFRoZSByZWFkIG9yICB3cml0ZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIENvdW50IHRpbWVz DQo+Pj4+ICsgb24gdGhlDQo+Pj5zYW1lIEFkZHJlc3MuDQo+Pj4+ICsNCj4+Pj4gKyAgSWYgV2lk dGggaXMgRWZpQ3B1SW9XaWR0aEZpbGxVaW50OCwgRWZpQ3B1SW9XaWR0aEZpbGxVaW50MTYsDQo+ Pj4+ICsgRWZpQ3B1SW9XaWR0aEZpbGxVaW50MzIsIG9yIEVmaUNwdUlvV2lkdGhGaWxsVWludDY0 LCB0aGVuIG9ubHkNCj4+Pj4gKyBBZGRyZXNzIGlzICBpbmNyZW1lbnRlZCBmb3IgZWFjaCBvZiB0 aGUgQ291bnQgb3BlcmF0aW9ucyB0aGF0IGlzDQo+Pj4+ICsgcGVyZm9ybWVkLiBUaGUgcmVhZCBv ciAgd3JpdGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBDb3VudCB0aW1lcw0KPj4+PiArIGZyb20g dGhlDQo+Pj5maXJzdCBlbGVtZW50IG9mIEJ1ZmZlci4NCj4+Pj4gKw0KPj4+PiArICBAcGFyYW1b aW5dICBUaGlzICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9DUFVfSU8yX1BST1RPQ09MIGluc3Rh bmNlLg0KPj4+PiArICBAcGFyYW1baW5dICBXaWR0aCAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9m IHRoZSBJL08gb3IgTWVtb3J5IG9wZXJhdGlvbi4NCj4+Pj4gKyAgQHBhcmFtW2luXSAgQWRkcmVz cyAgVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgSS9PIG9wZXJhdGlvbi4NCj4+Pj4gKyAgQHBhcmFt W2luXSAgQ291bnQgICAgVGhlIG51bWJlciBvZiBJL08gb3BlcmF0aW9ucyB0byBwZXJmb3JtLiBU aGUNCj5udW1iZXINCj4+Pm9mDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIG1v dmVkIGlzIFdpZHRoIHNpemUgKiBDb3VudCwgc3RhcnRpbmcgYXQgQWRkcmVzcy4NCj4+Pj4gKyAg QHBhcmFtW2luXSAgQnVmZmVyICAgRm9yIHJlYWQgb3BlcmF0aW9ucywgdGhlIGRlc3RpbmF0aW9u IGJ1ZmZlciB0byBzdG9yZQ0KPnRoZQ0KPj4+cmVzdWx0cy4NCj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgRm9yIHdyaXRlIG9wZXJhdGlvbnMsIHRoZSBzb3VyY2UgYnVmZmVyIGZyb20gd2hp Y2ggdG8gd3JpdGUNCj5kYXRhLg0KPj4+PiArDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICBUaGUgZGF0YSB3YXMgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8gdGhlIFBJDQo+ Pj5zeXN0ZW0uDQo+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBXaWR0aCBp cyBpbnZhbGlkIGZvciB0aGlzIFBJIHN5c3RlbS4NCj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgIEJ1ZmZlciBpcyBOVUxMLg0KPj4+PiArICBAcmV0dmFsIEVGSV9VTlNVUFBP UlRFRCAgICAgICAgVGhlIEJ1ZmZlciBpcyBub3QgYWxpZ25lZCBmb3IgdGhlIGdpdmVuDQo+V2lk dGguDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgYWRkcmVzcyBy YW5nZSBzcGVjaWZpZWQgYnkgQWRkcmVzcywNCj4+PldpZHRoLA0KPj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYW5kIENvdW50IGlzIG5vdCB2YWxpZCBmb3IgdGhpcyBQSSBz eXN0ZW0uDQo+Pj4+ICsNCj4+Pj4gKyoqLw0KPj4+PiArU1RBVElDDQo+Pj4+ICtFRklfU1RBVFVT DQo+Pj4+ICtFRklBUEkNCj4+Pj4gK0NwdUlvU2VydmljZVdyaXRlICgNCj4+Pj4gKyAgSU4gRUZJ X0NQVV9JTzJfUFJPVE9DT0wgICAgICAgKlRoaXMsDQo+Pj4+ICsgIElOIEVGSV9DUFVfSU9fUFJP VE9DT0xfV0lEVEggIFdpZHRoLA0KPj4+PiArICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgICAg ICBBZGRyZXNzLA0KPj4+PiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICBDb3VudCwN Cj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcg0KPj4+PiArICAp DQo+Pj4+ICt7DQo+Pj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+Pj4gK30NCj4+Pj4gKw0K Pj4+PiArLy8NCj4+Pj4gKy8vIENQVSBJL08gMiBQcm90b2NvbCBpbnN0YW5jZQ0KPj4+PiArLy8N Cj4+Pj4gK1NUQVRJQyBFRklfQ1BVX0lPMl9QUk9UT0NPTCBtQ3B1SW8yID0gew0KPj4+PiArICB7 DQo+Pj4+ICsgICAgQ3B1TWVtb3J5U2VydmljZVJlYWQsDQo+Pj4+ICsgICAgQ3B1TWVtb3J5U2Vy dmljZVdyaXRlDQo+Pj4+ICsgIH0sDQo+Pj4+ICsgIHsNCj4+Pj4gKyAgICBDcHVJb1NlcnZpY2VS ZWFkLA0KPj4+PiArICAgIENwdUlvU2VydmljZVdyaXRlDQo+Pj4+ICsgIH0NCj4+Pj4gK307DQo+ Pj4+ICsNCj4+Pj4gKw0KPj4+PiArLyoqDQo+Pj4+ICsgIFRoZSB1c2VyIEVudHJ5IFBvaW50IGZv ciBtb2R1bGUgQ3B1SW8yRHhlLiBUaGUgdXNlciBjb2RlIHN0YXJ0cw0KPj4+PiArd2l0aCB0aGlz DQo+Pj5mdW5jdGlvbi4NCj4+Pj4gKw0KPj4+PiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICAg IFRoZSBmaXJtd2FyZSBhbGxvY2F0ZWQgaGFuZGxlIGZvciB0aGUgRUZJDQo+aW1hZ2UuDQo+Pj4+ ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgICAgQSBwb2ludGVyIHRvIHRoZSBFRkkgU3lzdGVt IFRhYmxlLg0KPj4+PiArDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGVu dHJ5IHBvaW50IGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4NCj4+Pj4gKyAgQHJldHZhbCBvdGhl ciAgICAgICAgICAgICBTb21lIGVycm9yIG9jY3VycyB3aGVuIGV4ZWN1dGluZyB0aGlzIGVudHJ5 IHBvaW50Lg0KPj4+PiArDQo+Pj4+ICsqKi8NCj4+Pj4gK0VGSV9TVEFUVVMNCj4+Pj4gK0VGSUFQ SQ0KPj4+PiArUGNpQ3B1SW8ySW5pdGlhbGl6ZSAoDQo+Pj4+ICsgIElOIEVGSV9IQU5ETEUgICAg ICAgIEltYWdlSGFuZGxlLA0KPj4+PiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFi bGUNCj4+Pj4gKyAgKQ0KPj4+PiArew0KPj4+PiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4+Pj4g Kw0KPj4+PiArICBBU1NFUlRfUFJPVE9DT0xfQUxSRUFEWV9JTlNUQUxMRUQgKE5VTEwsDQo+Pj4+ ICsgJmdFZmlDcHVJbzJQcm90b2NvbEd1aWQpOyBTdGF0dXMgPSBnQlMtPkluc3RhbGxNdWx0aXBs ZVByb3RvY29sSW50ZXJmYWNlcw0KPigNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICZtSGFuZGxl LA0KPj4+PiArICAgICAgICAgICAgICAgICAgJmdFZmlDcHVJbzJQcm90b2NvbEd1aWQsICZtQ3B1 SW8yLA0KPj4+PiArICAgICAgICAgICAgICAgICAgTlVMTA0KPj4+PiArICAgICAgICAgICAgICAg ICAgKTsNCj4+Pj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4+Pj4gKw0KPj4+PiAr ICByZXR1cm4gU3RhdHVzOw0KPj4+PiArfQ0KPj4+PiBkaWZmIC0tZ2l0IGEvU2lsaWNvbi9OWFAv RHJpdmVycy9QY2lDcHVJbzJEeGUvUGNpQ3B1SW8yRHhlLmluZg0KPj4+PiBiL1NpbGljb24vTlhQ L0RyaXZlcnMvUGNpQ3B1SW8yRHhlL1BjaUNwdUlvMkR4ZS5pbmYNCj4+Pj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4+Pj4gaW5kZXggMDAwMDAwMC4uMjVhMWRiMQ0KPj4+PiAtLS0gL2Rldi9udWxs DQo+Pj4+ICsrKyBiL1NpbGljb24vTlhQL0RyaXZlcnMvUGNpQ3B1SW8yRHhlL1BjaUNwdUlvMkR4 ZS5pbmYNCj4+Pj4gQEAgLTAsMCArMSw0OCBAQA0KPj4+PiArIyMgQGZpbGUNCj4+Pj4gKyMgIFBy b2R1Y2VzIHRoZSBDUFUgSS9PIDIgUHJvdG9jb2wgYnkgdXNpbmcgdGhlIHNlcnZpY2VzIG9mIHRo ZSBJL08gTGlicmFyeS4NCj4+Pj4gKyMNCj4+Pj4gKyMgQ29weXJpZ2h0IDIwMTggTlhQDQo+Pj4+ ICsjDQo+Pj4+ICsjIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMg IyBhcmUgbGljZW5zZWQgYW5kDQo+Pj4+ICttYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlICMNCj4+Pj4gK3doaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZQ0KPj4+ PiArbWF5IGJlIGZvdW5kIGF0ICMNCj4+Pj4gK2h0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90 ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRm8NCj4+Pj4gK3BlDQo+Pj4+ICtu c291cmNlLm9yZyUyRmxpY2Vuc2VzJTJGYnNkLQ0KPj4+bGljZW5zZS5waHAmZGF0YT0wMiU3QzAx JTdDdmFiaGF2LnNoYXJtYQ0KPj4+Pg0KPj4+KyU0MG54cC5jb20lN0M0NTA3YzA3MjZiMjQ0YWQ2 NDc2ZDA4ZDVhNjlhNjRlZSU3QzY4NmVhMWQzYmMyYjRjDQo+NmYNCj4+PmE5MmNkDQo+Pj4+DQo+ Pj4rOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjU5ODEwNDQxNDA0NjQ0MCZzZGF0YT1JRlNVMCUy RmVUZFdydw0KPmdnDQo+Pj4wZjBMcTINCj4+Pj4gK3FTVkdnb2dHNjh0WVpldnJSbUMlMkJrVjgl M0QmcmVzZXJ2ZWQ9MA0KPj4+PiArIw0KPj4+PiArIyBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPj4+PiArQkFTSVMsICMgV0lU SE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwNCj5FSVRIRVIN Cj4+PkVYUFJFU1MgT1IgSU1QTElFRC4NCj4+Pj4gKyMNCj4+Pj4gKyMjDQo+Pj4+ICsNCj4+Pj4g K1tEZWZpbmVzXQ0KPj4+PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAw MDEwMDFBDQo+Pj4+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFBjaUNwdUlv MkR4ZQ0KPj4+PiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA3YmZmMThkNy05 YWFlLTQzNGItOWMwNi1mMTBhN2UxNTdlYWMNCj4+Pj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAg ICAgICAgICAgID0gRFhFX0RSSVZFUg0KPj4+PiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAg ICAgICAgPSAxLjANCj4+Pj4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gUGNp Q3B1SW8ySW5pdGlhbGl6ZQ0KPj4+PiArDQo+Pj4+ICtbU291cmNlc10NCj4+Pj4gKyAgUGNpQ3B1 SW8yRHhlLmMNCj4+Pj4gKw0KPj4+PiArW1BhY2thZ2VzXQ0KPj4+PiArICBNZGVQa2cvTWRlUGtn LmRlYw0KPj4+PiArICBTaWxpY29uL05YUC9OeHBRb3JpcUxzLmRlYw0KPj4+PiArDQo+Pj4+ICtb TGlicmFyeUNsYXNzZXNdDQo+Pj4+ICsgIEJhc2VMaWINCj4+Pj4gKyAgRGVidWdMaWINCj4+Pj4g KyAgSW9MaWINCj4+Pj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+Pj4+ICsgIFVlZmlE cml2ZXJFbnRyeVBvaW50DQo+Pj4+ICsNCj4+Pj4gK1tQY2RdDQo+Pj4+ICsgIGdOeHBRb3JpcUxz VG9rZW5TcGFjZUd1aWQuUGNkUGNpRXhwMUJhc2VBZGRyDQo+Pj4+ICsgIGdOeHBRb3JpcUxzVG9r ZW5TcGFjZUd1aWQuUGNkUGNpRXhwMkJhc2VBZGRyDQo+Pj4+ICsgIGdOeHBRb3JpcUxzVG9rZW5T cGFjZUd1aWQuUGNkUGNpRXhwM0Jhc2VBZGRyDQo+Pj4+ICsgIGdOeHBRb3JpcUxzVG9rZW5TcGFj ZUd1aWQuUGNkUGNpRXhwNEJhc2VBZGRyDQo+Pj4+ICsNCj4+Pj4gK1tQcm90b2NvbHNdDQo+Pj4+ ICsgIGdFZmlDcHVJbzJQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgIyMgUFJP RFVDRVMNCj4+Pj4gKw0KPj4+PiArW0RlcGV4XQ0KPj4+PiArICBUUlVFDQo+Pj4+IC0tDQo+Pj4+ IDEuOS4xDQo+Pj4+DQo=