From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (EUR01-DB5-obe.outbound.protection.outlook.com [40.107.15.40]) by mx.groups.io with SMTP id smtpd.web10.7567.1588931634143239283 for ; Fri, 08 May 2020 02:53:54 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=4n9cdZL/; spf=pass (domain: arm.com, ip: 40.107.15.40, mailfrom: samer.el-haj-mahmoud@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e6oWesdh5GBCxMhUimor0Feu8FnTt/C0tZPtoATr4Gc=; b=4n9cdZL/KkiAG9QA4ArcLtQEvnl/nS57OFOEK9gX3ko/hTaTcjf6ZQ1JMMjWyeHsMvrloHxDY3KGaIyK8WXlCoqysfeaLsq61OkNiJT2G+qKqMTX0Sk6LZZZUkQLIBVy8slx4ISDVJTCUYULK+rFFJuT1lkfK/utX3UhpP7ujkw= Received: from DB6PR0501CA0047.eurprd05.prod.outlook.com (2603:10a6:4:67::33) by VI1PR08MB3197.eurprd08.prod.outlook.com (2603:10a6:803:3e::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.28; Fri, 8 May 2020 09:53:49 +0000 Received: from DB5EUR03FT004.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:67:cafe::fe) by DB6PR0501CA0047.outlook.office365.com (2603:10a6:4:67::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.27 via Frontend Transport; Fri, 8 May 2020 09:53:49 +0000 Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT004.mail.protection.outlook.com (10.152.20.128) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.27 via Frontend Transport; Fri, 8 May 2020 09:53:49 +0000 Received: ("Tessian outbound 5abcb386707e:v54"); Fri, 08 May 2020 09:53:49 +0000 X-CR-MTA-TID: 64aa7808 Received: from 5886cbfec102.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 3CA1827C-6C3C-40DB-AB42-D80B8293A00B.1; Fri, 08 May 2020 09:53:44 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5886cbfec102.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 08 May 2020 09:53:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GIIXHMoFZqPdPsQZTc9o+0rwXDe2/j9tA6VVzeExMoAtKEi+4X5wqIcLMjpQ8n9ZOkVWQ/nUSPAGlAORS19gqNOIoNmLgXowUS3EgYne7pqtehbOg9sSfZ1wyKi6GqM+RvbxlKHPG5LlpPMTTvRyuFoqHOfVNZz9YM7HfZZkaem1ViqAAgQKk1PTalZdKMttaxHHul4mgUy4gBx1P9UPq6iZBfLBOr+/YZBeGF8dPBmeeHJC96FN6MJ4tjfJsDFYvne4Ki2HY1lZN05F4aKguLXP809cvryMcBi6Vryaavs9jncUZ+4YiaJMPg6XnLAuk5qYmv+arIiyJTX9Pa28Lg== 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=e6oWesdh5GBCxMhUimor0Feu8FnTt/C0tZPtoATr4Gc=; b=Yp2railk18lF4+Prsz4CZhI8p6o7SNaKOUSTiMFkkgJEN+QCmrICfv6NhYcLpS8mFPDboyyib6mrdnS2vII7wOPFHX2ki2YvKK9KwSbQgxkpdy3i4YZ6YwGPIzy03XhugFDxxJSZ7nYNr5FFty8NGw/fhdk37iYNLS/zi/+i2250BMgcnyBmAjtAMVy90Iye3ZT5TMuw1hfPLGCFriZc7eKMAKj/+VDR8Uba5KRZBhbVa58sCN7ZmoOdRkHBqww66TetWhz+c3bsQE0VjODkY4aPgLiQflqKChRrpRgRxQ68WZyFhhncnx6SZSSHR2QgGx90j1zyv36zEnTjDmQdcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e6oWesdh5GBCxMhUimor0Feu8FnTt/C0tZPtoATr4Gc=; b=4n9cdZL/KkiAG9QA4ArcLtQEvnl/nS57OFOEK9gX3ko/hTaTcjf6ZQ1JMMjWyeHsMvrloHxDY3KGaIyK8WXlCoqysfeaLsq61OkNiJT2G+qKqMTX0Sk6LZZZUkQLIBVy8slx4ISDVJTCUYULK+rFFJuT1lkfK/utX3UhpP7ujkw= Received: from DB7PR08MB3260.eurprd08.prod.outlook.com (2603:10a6:5:21::23) by DB7PR08MB3243.eurprd08.prod.outlook.com (2603:10a6:5:21::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2958.20; Fri, 8 May 2020 09:53:40 +0000 Received: from DB7PR08MB3260.eurprd08.prod.outlook.com ([fe80::990e:ed79:bec0:9dac]) by DB7PR08MB3260.eurprd08.prod.outlook.com ([fe80::990e:ed79:bec0:9dac%7]) with mapi id 15.20.2958.035; Fri, 8 May 2020 09:53:40 +0000 From: "Samer El-Haj-Mahmoud" To: Vladimir Olovyannikov , "devel@edk2.groups.io" , Ray Ni , Zhichao Gao CC: nd Subject: Re: [edk2-devel] [PATCH 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Topic: [edk2-devel] [PATCH 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Index: AQHV0xp60E9pnJ5deE+cW1VmcKoG8aiA5OcQgAHh/gCAAYkF8IAAENqAgBo16yA= Date: Fri, 8 May 2020 09:53:40 +0000 Message-ID: References: <20200125005718.8931-1-vladimir.olovyannikov@broadcom.com> <9a006acebab2c210464a84a99df2e40f@mail.gmail.com> In-Reply-To: <9a006acebab2c210464a84a99df2e40f@mail.gmail.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 16418632-f2ed-445d-bf41-67b3521d0c02.1 x-checkrecipientchecked: true Authentication-Results-Original: broadcom.com; dkim=none (message not signed) header.d=none;broadcom.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [99.132.126.10] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 856b5d50-9a12-473f-ef48-08d7f335b537 x-ms-traffictypediagnostic: DB7PR08MB3243:|VI1PR08MB3197: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2399;OLM:2399; x-forefront-prvs: 039735BC4E X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: lfLbwiirvjF+Mxvg5Gkkfa+al3VsnC5v2DPtbf9mpYZg6TO6ltw2tLV9a176rsndwr4hZMc5m9erZ17TG+x1uTsBv8IK/MXHsWskkQYver84F7C/XACSMD7OYMN3mSJP5vPpJD1ZT8jje6DHipl11iomcupBHurYZoI6SKEb/Q5FKpRfnCTkVxcDcX1DzAatHsYCsYMqK+7zS9TAOhNECAkhzytd6QDyL3jOtIoxOFV2A+B+V0N/sTL1ufCHkcJG4rqqRUa1BGshb8tO+p3bJhLF0NFiJ3tXvoBoTTNWag80gk+X2SiQSsSM3bqWl/APKcWMP63fBUI0SD0E5agDZj+wsQqvKvyzm3O624VHy3ceFiWujP90AisbLUUvjtWLgSRR3ROaWNTu9ctLJvVRm3nz54fpazzkNMWNOjWx+qqSBXc5rxIvSKpNh6Rhd/89/XCLwPAMqlxzOL/UHaU4qB9JwZUtb0WlgfqwbshU3YYkniWtPEJiNez3bxE7RIVIxfgGDDeF1fQukO7A4aKllzoqmtXwPJ7ljAFuvHk+pNGm1AfDJs1umLumYnLHggrZR2V2nzVL6az/nXWVwhsP4auNOTQLeD2oDkZtdva/ZFHkgSb6IXakLupHtOJxflaq X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3260.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(6019001)(4636009)(366004)(136003)(396003)(346002)(39860400002)(376002)(33430700001)(2906002)(66476007)(19627235002)(66446008)(66556008)(76116006)(83300400001)(33656002)(8936002)(8676002)(66946007)(86362001)(83320400001)(83290400001)(83280400001)(83310400001)(64756008)(55016002)(71200400001)(53546011)(110136005)(30864003)(52536014)(186003)(6506007)(316002)(9686003)(5660300002)(966005)(4326008)(7696005)(33440700001)(83080400001)(478600001)(26005)(579004)(569008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: BaMBZMwOT5juX48Cs/Rl4B9hDew9vwW7N1YLT++OY2sD5bhxZBqtPrGAxBhNdgKmPXMZis/vs6dWxqah5JidjPCDwVrbRIVnUub+0Sj+CsjgtBphcE/Z4WngczRoY4b+TJOQq/oZNDeuHAojxY/965QGqdc2BfhNtl1KqtYh/ykiVFB3tMOVrq9A07YCdJNQTdTTGlJHCJ1F44JA7FbH4SyiqgeTiTWpTb+CB3km7ZMEv//2N0WILNk2t+HYZYgpMhMM0CZu5bnSUKU7WsibdMUXxg3CSWLgGSXh+z1EnYbwu7iRlpre+4IHjkp+zkEHL9sq0pWDoua2cRiAyUBuzNenpvjp2VPBG7Ts0wJStTlpPxf/0/76GjA2giJwRa1qt2wyxFOU/2lGTqOA9WGh4O8+36hbFEiI1Y+V0ry3kfYk+YbKS2rCisjvTW8DXiz57Ljq9fnrSF0c6R1ANeiplVxNtdJTiSKEiImR2I0+KlQbA3v3QcyUmoK2qYTchvkR x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3243 Original-Authentication-Results: broadcom.com; dkim=none (message not signed) header.d=none;broadcom.com; dmarc=none action=none header.from=arm.com; Return-Path: Samer.El-Haj-Mahmoud@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT004.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFTY:;SFS:(6019001)(4636009)(396003)(136003)(346002)(39860400002)(376002)(46966005)(33430700001)(9686003)(8676002)(8936002)(2906002)(110136005)(186003)(33656002)(316002)(336012)(26005)(478600001)(47076004)(966005)(5660300002)(82310400002)(53546011)(4326008)(6506007)(30864003)(356005)(33440700001)(19627235002)(82740400003)(52536014)(55016002)(70586007)(7696005)(81166007)(70206006)(83080400001)(86362001)(559001)(579004);DIR:OUT;SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: 578b6624-c7ae-4ac2-2ad7-08d7f335affb X-Forefront-PRVS: 039735BC4E X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5IhSHmRNzxfGmOH7PwbsqLuurwJ7PvmmIg/8J4tml8tVZxDC1lZ2ztX6UvirY0RKg9m+4qEB6m2DgKmxFfy89yl/asfng1aPDH3fj4kX7eLWSPzFbzLm4u/oUR1hOVT6g/jdp9nmSSPcmH8QZlhBE5VNqID3LMmeIhoKlU5q5Ji9w73wlWGbN34ROBFICsEPVMroP4cA5tjei6bmty3Q59nA/8dFAtCEEAxjLSexzX+BtmuZRZmN6UhN1cR7ufpJcHCnxv81BVVTW3b/DECk5g1gx3NAr80Q3bT0E4A92LiAACH0Afl6o/7PxZMqa1ipniF6VgiywTYdnTnFBuoU2onRprkgQmtN34mUJBRgsyeFMk04WUBftabQC/ZEc5jDtLkJBL0fUIVIy+5Seh4xMYect2A+A1EQNbLOyKWGR+k20dBUFOgzqq7CCD5i9LqgmpiDwv3QNQJ5PVSmSp0VFaAZwW3/es6zca/85rsHk3san8+qefsXC0Y9EuX00pfbh/4kgbfZ7A3XGWPj116c4PJNjaz8zzXx7YJj9Qfh1GjNo/eHqZ6wnA+bW+Vqs06A7yx104hxOisgF/55CW9t1i2bmH/GHZqYbN37MBsMZEidxan09Up0Rq0nwPkZL8DPZmK/RYbSVx7WOLmimpe3OQ== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2020 09:53:49.5302 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 856b5d50-9a12-473f-ef48-08d7f335b537 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3197 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QW55IHVwZGF0ZSBvbiB0aGlzIHBhdGNoPyBUaGlzIGlzIGEgdXNlZnVsIGNvbW1hbmQgdG8gYWRk IHRvIHRoZSBTaGVsbCAoZm9yIGJvdGggdGVzdGluZyBhbmQgZGVwbG95bWVudC9zY3JpcHRpbmcp Lg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZsYWRpbWlyIE9sb3Z5 YW5uaWtvdiA8dmxhZGltaXIub2xvdnlhbm5pa292QGJyb2FkY29tLmNvbT4NCj4gU2VudDogVHVl c2RheSwgQXByaWwgMjEsIDIwMjAgMTozNyBQTQ0KPiBUbzogU2FtZXIgRWwtSGFqLU1haG1vdWQg PFNhbWVyLkVsLUhhai1NYWhtb3VkQGFybS5jb20+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg UmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPjsgWmhpY2hhbyBHYW8NCj4gPHpoaWNoYW8uZ2FvQGlu dGVsLmNvbT4NCj4gQ2M6IG5kIDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSRTogW2VkazItZGV2 ZWxdIFtQQVRDSCAxLzFdIFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kOiBhZGQNCj4gSHR0cER5bmFt aWNDb21tYW5kDQo+IA0KPiAuLiBTa2lwcGVkLi4NCj4gPiBUaGFua3MgVmxhZGltaXIgZm9yIHRo ZSBleHBsYW5hdGlvbi4NCj4gPg0KPiA+IFdvbmRlcmluZyB3aGF0IGlzIG1vcmUgdXNlZnVsIHRv IHVzZXJzOg0KPiA+DQo+ID4gICAxLSBIYXZpbmcgdGhlICdodHRwJyBhbmQgJ3RmdHAnIGNvbW1h bmRzIHNoYXJlIGEgY29tbW9uIGludGVyZmFjZSB0bw0KPiA+IG1ha2UNCj4gPiBpdCBlYXNpZXIg dG8gc2NyaXB0IHVzaW5nIGVpdGhlciB0b29sL3Byb3RvY29sIChhcyBleHBsYWluZWQgYmVsb3cp DQo+ID4gT3INCj4gPiAgIDItIEhhdmluZyBhIG1vcmUgbmF0dXJhbCBzdXBwb3J0IGZvciBVUklz IGluICdodHRwJyBjb21tYW5kLCBzaW1pbGFyIHRvDQo+ID4gd2hhdA0KPiA+IGlzIGNvbW1vbiBp biBvdGhlciBodHRwIENMSSBjbGllbnRzIGxpa2UgY3VybA0KPiA+DQo+ID4gSWYgKDEpIGlzIGlt cG9ydGFudCBlbm91Z2ggZm9yIHVzZXJzLCB0aGVuIGNvdWxkIHdlIGVudGVydGFpbiBhZGRpbmcg KDIpDQo+ID4gaW4NCj4gPiBhZGRpdGlvbiB0byAoMSkuDQo+IFRoYW5rIHlvdSBmb3IgdGhlIGZl ZWRiYWNrIFNhbWVyLA0KPiBXZWxsLCAoMSkgaXMgaW1wb3J0YW50IGZvciB1cyBhcyB3ZSB1c2Ug dW5pdmVyc2FsIFVFRkkgU2hlbGwgc2NyaXB0cyBmb3INCj4gbXVsdGlwbGUgaW1hZ2VzIHVwZGF0 ZXMgZnJvbSBhbnkgbWVkaWEgKHVzYiwgbmV0d29yayhodHRwL3RmdHApLCBldGMuKQ0KPiBJIGFn cmVlIHRoYXQgYWRkaW5nICgyKSB0byAoMSkgbWFrZXMgc2Vuc2UuIFdvdWxkIGJlIG5pY2UgdG8g Z2V0IG1vcmUNCj4gZmVlZGJhY2sgZnJvbSBlZGsyIGNvbW11bml0eSBvbiB0aGF0Lg0KPiANCj4g VGhhbmsgeW91LA0KPiBWbGFkaW1pcg0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IC0tU2FtZXINCj4g Pg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogVmxh ZGltaXIgT2xvdnlhbm5pa292IDx2bGFkaW1pci5vbG92eWFubmlrb3ZAYnJvYWRjb20uY29tPg0K PiA+ID4gU2VudDogTW9uZGF5LCBBcHJpbCAyMCwgMjAyMCAxOjEwIFBNDQo+ID4gPiBUbzogU2Ft ZXIgRWwtSGFqLU1haG1vdWQgPFNhbWVyLkVsLUhhai1NYWhtb3VkQGFybS5jb20+Ow0KPiA+ID4g ZGV2ZWxAZWRrMi5ncm91cHMuaW87IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT47IFpoaWNoYW8g R2FvDQo+ID4gPiA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+ID4gQ2M6IG5kIDxuZEBhcm0u Y29tPg0KPiA+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMS8xXSBTaGVsbFBr Zy9EeW5hbWljQ29tbWFuZDogYWRkDQo+ID4gPiBIdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+DQo+ ID4gPiBIaSBTYW1lciwNCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ ID4gRnJvbTogU2FtZXIgRWwtSGFqLU1haG1vdWQgPFNhbWVyLkVsLUhhai1NYWhtb3VkQGFybS5j b20+DQo+ID4gPiA+IFNlbnQ6IFN1bmRheSwgQXByaWwgMTksIDIwMjAgNTozMSBBTQ0KPiA+ID4g PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IHZsYWRpbWlyLm9sb3Z5YW5uaWtvdkBicm9hZGNv bS5jb207DQo+IFJheQ0KPiA+IE5pDQo+ID4gPiA+IDxyYXkubmlAaW50ZWwuY29tPjsgWmhpY2hh byBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IG5kIDxuZEBhcm0uY29t Pg0KPiA+ID4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCAxLzFdIFNoZWxsUGtn L0R5bmFtaWNDb21tYW5kOiBhZGQNCj4gPiA+ID4gSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ DQo+ID4gPiA+IFRlc3RlZC1CeTogU2FtZXIgRWwtSGFqLU1haG1vdWQgPFNhbWVyLkVsLUhhai0N Cj4gTWFobW91ZEBhcm0uY29tPg0KPiA+ID4gPg0KPiA+ID4gPiBJIHRlc3RlZCBvbiBBYXJjaDY0 IChSUGk0KSBhbmQgdGhlIGNvbW1hbmQgc2VlbXMgdG8gd29yayB3ZWxsLg0KPiA+ID4gPg0KPiA+ ID4gPiBPbmUgcXVlc3Rpb246IHdoeSBpcyB0aGUgaW5wdXQgYXJndW1lbnRzICJob3N0Wzpwb3J0 XSIgYW5kIHRoZSByZW1vdGUNCj4gPiA+IGZpbGUNCj4gPiA+ID4gImh0dHBfdXJpIiBub3QgdHJl YXRlZCBhcyBhIHNpbmdsZSAiaHR0cF91cmkiIGFyZ3VtZW50Pw0KPiA+ID4gPg0KPiA+ID4gPiBG b3IgZXhhbXBsZSwgaW5zdGVhZCBvZjoNCj4gPiA+ID4gICAgZnMwOlw+IGh0dHAgaHR0cDovLzE5 Mi4xNjguMS4xOjgwODAgZGlyMS9maWxlMS5kYXQgZmlsZTIuZGF0DQo+ID4gPiA+DQo+ID4gPiA+ IFdoeSBub3Q6DQo+ID4gPiA+ICAgZnMwOlw+IGh0dHAgaHR0cDovLzE5Mi4xNjguMS4xOjgwODAv ZGlyMS9maWxlMS5kYXQgZmlsZTIuZGF0DQo+ID4gPiBUaGUgaWRlYSB3YXMgdG8gbWFrZSBpdCAx MDAlIGNvbXBhdGlibGUgd2l0aCB0ZnRwIGNvbW1hbmQuDQo+ID4gPiBUaGlzIHdheSwgb25lIGNv dWxkIGVhc2lseSBzdXBwb3J0IGJvdGggaW4gb25lIHNjcmlwdCBsaWtlIHRoaXM6DQo+ID4gPiBz ZXQgLXYgZXRoX2ludCAiIC1pIGV0aDAiDQo+ID4gPiAuLi4NCj4gPiA+ICMgU2V0IHVwZGF0ZSBw cm90b2NvbCBvbiBzb21lIGxvdy1sZXZlbCBpbml0DQo+ID4gPiBzZXQgdXBkX3Byb3RvIGh0dHAg KG9yIHRmdHAsIG9yIHNvbWV0aGluZyBlbHNlIGlmIG5lZWRlZCBhbmQgc3VwcG9ydGVkKQ0KPiA+ ID4gLi4uDQo+ID4gPiAjIFNldCBwcm90b2NvbC1zcGVjaWZpYyBwYXJhbWV0ZXJzDQo+ID4gPiBp ZiAiJXVfcHJvdG8lIiA9PSAidGZ0cCIgdGhlbg0KPiA+ID4gICBzZXQgLXYgIHRmdHBfYmxrX3Bh cmFtICIgLXMgJXRmdHBfYmxvY2tzaXplJSINCj4gPiA+ICAgc2V0IC12IHRmdHBfd2luX3BhcmFt ICIgLXcgJXRmdHBfd2luZG93c2l6ZSUiDQo+ID4gPiBlbmRpZg0KPiA+ID4gLi4uDQo+ID4gPiAj ICJVbml2ZXJzYWxpemUiIHRyYW5zZmVyIGNvbW1hbmQNCj4gPiA+IHNldCAtdiB0cmFuc2Zlcl9j bWQgIiV1X3Byb3RvJSAlZXRoX2ludCUgJXRmdHBfYmxrX3BhcmFtJQ0KPiA+ID4gJXRmdHBfd2lu X3BhcmFtJQ0KPiA+ID4gJXNlcnZlcmlwJSAldGZ0cF9kaXIlIg0KPiA+ID4gLi4uDQo+ID4gPiAj IFVzZSB1bml2ZXJzYWwgdHJhbnNmZXIgY29tbWFuZCB3aXRoIG5vIGNoYW5nZXMgZm9yIGFueSB1 cGRhdGUNCj4gcHJvdG9jb2wNCj4gPiA+IChiZSBpdCB0ZnRwLCBodHRwLCBldGMuKS4NCj4gPiA+ ICV0cmFuc2Zlcl9jbWQlL21kNXN1bS50eHQgJWVzcF9yb290JVxtZDVzdW0udHh0DQo+ID4gPiAu Li4NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBWbGFkaW1pcg0KPiA+ID4gPg0KPiA+ID4g Pg0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBC ZWhhbGYgT2YNCj4gPiA+ID4gVmxhZGltaXINCj4gPiA+ID4gPiBPbG92eWFubmlrb3YgdmlhIEdy b3Vwcy5Jbw0KPiA+ID4gPiA+IFNlbnQ6IEZyaWRheSwgSmFudWFyeSAyNCwgMjAyMCA3OjU3IFBN DQo+ID4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBSYXkgTmkgPHJheS5uaUBpbnRl bC5jb20+OyBaaGljaGFvIEdhbw0KPiA+ID4gPiA+IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ ID4gPiA+ID4gQ2M6IFZsYWRpbWlyIE9sb3Z5YW5uaWtvdiA8dmxhZGltaXIub2xvdnlhbm5pa292 QGJyb2FkY29tLmNvbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BBVENIIDEv MV0gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQ6IGFkZA0KPiA+ID4gPiA+IEh0dHBEeW5hbWljQ29t bWFuZA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSW50cm9kdWNlIGFuIGh0dHAgY2xpZW50IHV0aWxp emluZyBFREsyIEhUVFAgcHJvdG9jb2wsIHRvDQo+ID4gPiA+ID4gYWxsb3cgZmFzdCBpbWFnZSBk b3dubG9hZGluZyBmcm9tIGh0dHAvaHR0cHMgc2VydmVycy4NCj4gPiA+ID4gPiBIVFRQIGRvd25s b2FkIHNwZWVkIGlzIHVzdWFsbHkgeDMwIHRpbWVzIGZhc3RlciB0aGFuIHRmdHAuDQo+ID4gPiA+ ID4gVGhlIGNsaWVudCBpcyBiYXNlZCBvbiB0aGUgc2FtZSBhcHByb2FjaCBhcyB0ZnRwIGR5bmFt aWMgY29tbWFuZCwNCj4gPiBhbmQNCj4gPiA+ID4gPiB1c2VzIHRoZSBzYW1lIFVFRkkgU2hlbGwg Y29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuIFRoaXMgbWFrZXMgaXQNCj4gZWFzeQ0KPiA+ID4gPiA+ IGludGVncmF0aW5nIGh0dHAgaW50byBleGlzdGluZyBVRUZJIFNoZWxsIHNjcmlwdHMuDQo+ID4g PiA+ID4gTm90ZSB0aGF0IHRvIGVuYWJsZSBIVFRQIGRvd25sb2FkLCBmZWF0dXJlIFBjZA0KPiA+ ID4gPiA+IGdFZmlOZXR3b3JrUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWxsb3dIdHRwQ29ubmVjdGlv bnMgbXVzdA0KPiA+ID4gPiA+IGJlIHNldCB0byBUUlVFLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g U2lnbmVkLW9mZi1ieTogVmxhZGltaXIgT2xvdnlhbm5pa292DQo+ID4gPiA+IDx2bGFkaW1pci5v bG92eWFubmlrb3ZAYnJvYWRjb20uY29tPg0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICAuLi4v RHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuYyAgfCAxNjM5DQo+ID4gPiA+ ID4gKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiAgLi4uL0R5bmFtaWNDb21tYW5kL0h0dHBE eW5hbWljQ29tbWFuZC9IdHRwLmggIHwgICA4OCArDQo+ID4gPiA+ID4gIC4uLi9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cC51bmkgICAgICAgICAgICAgICB8ICAgOTUgKw0KPiA+ID4gPiA+ICAuLi4v SHR0cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuYyAgICAgICAgICAgICAgfCAgIDUzICsNCj4gPiA+ ID4gPiAgLi4uL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwQXBwLmluZiAgICAgICAgICAgIHwgICA1 OCArDQo+ID4gPiA+ID4gIC4uLi9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5k LmMgICB8ICAxMzQgKysNCj4gPiA+ID4gPiAgLi4uL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHlu YW1pY0NvbW1hbmQuaW5mIHwgICA2MyArDQo+ID4gPiA+ID4gIFNoZWxsUGtnL0luY2x1ZGUvR3Vp ZC9TaGVsbExpYkhpaUd1aWQuaCAgICAgICB8ICAgIDcgKy0NCj4gPiA+ID4gPiAgU2hlbGxQa2cv U2hlbGxQa2cuZGVjICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ID4gPiA+ID4g IFNoZWxsUGtnL1NoZWxsUGtnLmRzYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKw0K PiA+ID4gPiA+ICAxMCBmaWxlcyBjaGFuZ2VkLCAyMTQyIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkNCj4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gU2hlbGxQa2cv RHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuYw0KPiA+ID4gPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHlu YW1pY0NvbW1hbmQvSHR0cC5oDQo+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4g PiA+IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLnVuaQ0K PiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBTaGVsbFBrZy9EeW5hbWlj Q29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NA0KPiA+ID4gPiA+IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWlj Q29tbWFuZC9IdHRwQXBwLmluZg0KPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+ ID4gPg0KPiA+ID4gPg0KPiA+DQo+IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWlj Q29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+ID4gLmMNCj4gPiA+ID4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPg0KPiBTaGVsbFBrZy9EeW5hbWlj Q29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+IC5p bg0KPiA+ID4gPiA+IGYNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVs bFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5jDQo+ID4gPiA+ID4g Yi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5jDQo+ID4g PiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LjRlMGFmMzQxNzM0OA0KPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiArKysgYi9T aGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5jDQo+ID4gPiA+ ID4gQEAgLTAsMCArMSwxNjM5IEBADQo+ID4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPiA+ICsg IFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICdodHRwJyBTaGVsbCBjb21tYW5kLg0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTgs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ID4gcmVzZXJ2ZWQuDQo+ID4g PiA8QlI+DQo+ID4gPiA+ID4gKyAgKEMpIENvcHlyaWdodCAyMDE1IEhld2xldHQgUGFja2FyZCBF bnRlcnByaXNlIERldmVsb3BtZW50DQo+IExQPEJSPg0KPiA+ID4gPiA+ICsgIENvcHlyaWdodCAo YykgMjAyMCwgQnJvYWRjb20uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsjaW5jbHVkZSAiSHR0 cC5oIg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2RlZmluZSBJUDRfQ09ORklHMl9JTlRFUkZB Q0VfSU5GT19OQU1FX0xFTkdUSCAzMg0KPiA+ID4gPiA+ICtFRklfSElJX0hBTkRMRSAgIG1IdHRw SGlpSGFuZGxlOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiArICAgQ29u c3RhbnQgc3RyaW5ncyBhbmQgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byB0aGUgbWVzc2FnZQ0KPiA+ ID4gPiA+ICsgICBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgcHJvZ3Jlc3MgaW4gdGhlIGRvd2xv YWRpbmcgb2YgYSBIVFRQDQo+ID4gPiBmaWxlLg0KPiA+ID4gPiA+ICsqLw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArLy8gTnVtYmVyIG9mIHN0ZXBzIGluIHRoZSBwcm9ncmVzc2lvbiBzbGlkZXIN Cj4gPiA+ID4gPiArI2RlZmluZSBIVFRQX1BST0dSRVNTX1NMSURFUl9TVEVQUyAgXA0KPiA+ID4g PiA+ICsgICgoc2l6ZW9mIChIVFRQX1BST0dSX0ZSQU1FKSAvIHNpemVvZiAoQ0hBUjE2KSkgLSAz KQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLy8gU2l6ZSBpbiBudW1iZXIgb2YgY2hhcmFjdGVy cyBwbHVzIG9uZSAoZmluYWwgemVybykgb2YgdGhlDQo+ID4gPiA+ID4gbWVzc2FnZQ0KPiA+ID4g dG8NCj4gPiA+ID4gPiArLy8gaW5kaWNhdGUgdGhlIHByb2dyZXNzIG9mIGFuIEhUVFAgZG93bmxv YWQuIFRoZSBmb3JtYXQgaXMNCj4gPiA+ICJbKHByb2dyZXNzDQo+ID4gPiA+IHNsaWRlcjoNCj4g PiA+ID4gPiArLy8gNDAgY2hhcmFjdGVycyldIChuYiBvZiBLQnl0ZXMgZG93bmxvYWRlZCBzbyBm YXI6IDcgY2hhcmFjdGVycykNCj4gPiA+IEtiIi4NCj4gPiA+ID4gVGhlcmUNCj4gPiA+ID4gPiAr Ly8gYXJlIHRodXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIEhUVFBfUFJPR1JfRlJBTUVb XSBwbHVzDQo+ID4gMTENCj4gPiA+ID4gPiBjaGFyYWN0ZXJzDQo+ID4gPiA+ID4gKy8vICgyIC8v IHNwYWNlcywgIktiIiBhbmQgc2V2ZW4gY2hhcmFjdGVycyBmb3IgdGhlIG51bWJlciBvZg0KPiA+ ID4gPiA+IEtCeXRlcykuDQo+ID4gPiA+ID4gKyNkZWZpbmUgSFRUUF9QUk9HUkVTU19NRVNTQUdF X1NJWkUgIFwNCj4gPiA+ID4gPiArICAoKHNpemVvZiAoSFRUUF9QUk9HUl9GUkFNRSkgLyBzaXpl b2YgKENIQVIxNikpICsgMTIpDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ ICsvLyBCdWZmZXIgc2l6ZS4gTm90ZSB0aGF0IGxhcmdlciBidWZmZXIgZG9lcyBub3QgbWVhbiBi ZXR0ZXIgc3BlZWQhDQo+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4gKyNkZWZpbmUgREVGQVVMVF9C VUZfU0laRSAgICAgIFNJWkVfMzJLQg0KPiA+ID4gPiA+ICsjZGVmaW5lIE1BWF9CVUZfU0laRSAg ICAgICAgICBTSVpFXzRNQg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2RlZmluZSBUSU1FUl9N QVhfVElNRU9VVF9TICAgMTANCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8vIEZpbGUgbmFtZSB0 byB1c2Ugd2hlbiBVUkkgZW5kcyB3aXRoICIvIg0KPiA+ID4gPiA+ICsjZGVmaW5lIERFRkFVTFRf SFRNTF9GSUxFICAgICBMImluZGV4Lmh0bWwiDQo+ID4gPiA+ID4gKyNkZWZpbmUgREVGQVVMVF9I VFRQX1BST1RPICAgIEwiaHR0cCINCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8vIFN0cmluZyB0 byBkZWxldGUgdGhlIEhUVFAgcHJvZ3Jlc3MgbWVzc2FnZSB0byBiZSBhYmxlIHRvIHVwZGF0ZQ0K PiA+ID4gPiA+IGl0DQo+ID4gPiA6DQo+ID4gPiA+ID4gKy8vIChIVFRQX1BST0dSRVNTX01FU1NB R0VfU0laRS0xKSAnXGInDQo+ID4gPiA+ID4gKyNkZWZpbmUgSFRUUF9QUk9HUkVTU19ERUwgXA0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+IEwiXGJcYlxiXGJcYlxiXGJcYlxi XGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlwNCj4gPiA+ID4g YlxiXGJcDQo+ID4gPiA+ID4gK1xiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYiIN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyNkZWZpbmUgSFRUUF9LQiAgICAgICAgICAgICAgTCJc YlxiXGJcYlxiXGJcYlxiXGJcYiINCj4gPiA+ID4gPiArLy8gRnJhbWUgZm9yIHRoZSBwcm9ncmVz c2lvbiBzbGlkZXINCj4gPiA+ID4gPiArI2RlZmluZSBIVFRQX1BST0dSX0ZSQU1FICAgICBMIlsN Cj4gPiA+IF0iDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvLyBTdHJpbmcgZGVzY3JpcHRpb25z IGZvciBzZXJ2ZXIgZXJyb3JzDQo+ID4gPiA+ID4gK1NUQVRJQyBDT05TVCBDSEFSMTYgKkVyclN0 YXR1c0Rlc2NbXSA9DQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBMIjQwMCBCYWQgUmVxdWVz dCIsDQo+ID4gPiA+ID4gKyAgTCI0MDEgVW5hdXRob3JpemVkIiwNCj4gPiA+ID4gPiArICBMIjQw MiBQYXltZW50IHJlcXVpcmVkIiwNCj4gPiA+ID4gPiArICBMIjQwMyBGb3JiaWRkZW4iLA0KPiA+ ID4gPiA+ICsgIEwiNDA0IE5vdCBGb3VuZCIsDQo+ID4gPiA+ID4gKyAgTCI0MDUgTWV0aG9kIG5v dCBhbGxvd2VkIiwNCj4gPiA+ID4gPiArICBMIjQwNiBOb3QgYWNjZXB0YWJsZSIsDQo+ID4gPiA+ ID4gKyAgTCI0MDcgUHJveHkgYXV0aGVudGljYXRpb24gcmVxdWlyZWQiLA0KPiA+ID4gPiA+ICsg IEwiNDA4IFJlcXVlc3QgdGltZSBvdXQiLA0KPiA+ID4gPiA+ICsgIEwiNDA5IENvbmZsaWN0IiwN Cj4gPiA+ID4gPiArICBMIjQxMCBHb25lIiwNCj4gPiA+ID4gPiArICBMIjQxMSBMZW5ndGggcmVx dWlyZWQiLA0KPiA+ID4gPiA+ICsgIEwiNDEyIFByZWNvbmRpdGlvbiBmYWlsZWQiLA0KPiA+ID4g PiA+ICsgIEwiNDEzIFJlcXVlc3QgZW50aXR5IHRvbyBsYXJnZSIsDQo+ID4gPiA+ID4gKyAgTCI0 MTQgUmVxdWVzdCBVUkkgdG8gbGFyZ2UiLA0KPiA+ID4gPiA+ICsgIEwiNDE1IFVuc3VwcG9ydGVk IG1lZGlhIHR5cGUiLA0KPiA+ID4gPiA+ICsgIEwiNDE2IFJlcXVlc3RlZCByYW5nZSBub3Qgc2F0 aXNmaWVkIiwNCj4gPiA+ID4gPiArICBMIjQxNyBFeHBlY3RhdGlvbiBmYWlsZWQiLA0KPiA+ID4g PiA+ICsgIEwiNTAwIEludGVybmFsIHNlcnZlciBlcnJvciIsDQo+ID4gPiA+ID4gKyAgTCI1MDEg Tm90IGltcGxlbWVudGVkIiwNCj4gPiA+ID4gPiArICBMIjUwMiBCYWQgZ2F0ZXdheSIsDQo+ID4g PiA+ID4gKyAgTCI1MDMgU2VydmljZSB1bmF2YWlsYWJsZSIsDQo+ID4gPiA+ID4gKyAgTCI1MDQg R2F0ZXdheSB0aW1lb3V0IiwNCj4gPiA+ID4gPiArICBMIjUwNSBIVFRQIHZlcnNpb24gbm90IHN1 cHBvcnRlZCINCj4gPiA+ID4gPiArfTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8vIExvY2Fs IEZpbGUgSGFuZGxlDQo+ID4gPiA+ID4gK1NUQVRJQyBTSEVMTF9GSUxFX0hBTkRMRSAgICAgbUZp bGVIYW5kbGUgPSBOVUxMOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLy8gUGF0aCBvZiB0aGUg bG9jYWwgZmlsZSwgVW5pY29kZSBlbmNvZGVkDQo+ID4gPiA+ID4gK1NUQVRJQyBDT05TVCBDSEFS MTYgICAgICAgICAqbUxvY2FsRmlsZVBhdGg7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtTVEFU SUMgQk9PTEVBTiBnUmVxdWVzdENhbGxiYWNrQ29tcGxldGUgPSBGQUxTRTsNCj4gPiA+ID4gPiAr U1RBVElDIEJPT0xFQU4gZ1Jlc3BvbnNlQ2FsbGJhY2tDb21wbGV0ZSA9IEZBTFNFOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQ2xlYW5zIG9mZiBsZWFkaW5nIGFu ZCB0cmFpbGluZyBzcGFjZXMgYW5kIHRhYnMuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gU3RyaW5nIHBvaW50ZXIgdG8gdGhlIHN0cmluZyB0byB0cmltIHRoZW0gb2ZmLg0K PiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gK0VGSV9TVEFUVVMN Cj4gPiA+ID4gPiArVHJpbVNwYWNlcygNCj4gPiA+ID4gPiArICBJTiBDSEFSMTYgKipTdHJpbmcN Cj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQoU3RyaW5n ICE9IE5VTEwpOw0KPiA+ID4gPiA+ICsgIEFTU0VSVCgqU3RyaW5nIT0gTlVMTCk7DQo+ID4gPiA+ ID4gKyAgLy8NCj4gPiA+ID4gPiArICAvLyBSZW1vdmUgYW55IHNwYWNlcyBhbmQgdGFicyBhdCB0 aGUgYmVnaW5uaW5nIG9mIHRoZSAoKlN0cmluZykuDQo+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4g PiArICB3aGlsZSAoKCgqU3RyaW5nKVswXSA9PSBMJyAnKSB8fCAoKCpTdHJpbmcpWzBdID09IEwn XHQnKSkgew0KPiA+ID4gPiA+ICsgICAgQ29weU1lbSgoKlN0cmluZyksICgqU3RyaW5nKSsxLCBT dHJTaXplKCgqU3RyaW5nKSkgLQ0KPiA+ID4gPiBzaXplb2YoKCpTdHJpbmcpWzBdKSk7DQo+ID4g PiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsgIC8v IFJlbW92ZSBhbnkgc3BhY2VzIGFuZCB0YWJzIGF0IHRoZSBlbmQgb2YgdGhlICgqU3RyaW5nKS4N Cj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsgIHdoaWxlICgoU3RyTGVuICgqU3RyaW5nKSA+ IDApICYmICgoKCpTdHJpbmcpW1N0ckxlbigoKlN0cmluZykpLTFdDQo+ID4gPiA9PSBMJyAnKSB8 fA0KPiA+ID4gPiA+ICgoKlN0cmluZylbU3RyTGVuKCgqU3RyaW5nKSktMV0gPT0gTCdcdCcpKSkg ew0KPiA+ID4gPiA+ICsgICAgKCpTdHJpbmcpW1N0ckxlbigoKlN0cmluZykpLTFdID0gQ0hBUl9O VUxMOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0dXJuIChF RklfU1VDQ0VTUyk7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsvKg0KPiA+ID4gPiA+ICsgKiBDYWxsYmFja3MgZm9yIHJlcXVlc3QgYW5kIHJlc3Bv bnNlLg0KPiA+ID4gPiA+ICsgKiBXZSBqdXN0IGFja25vd2xlZGdlIHRoYXQgb3BlcmF0aW9uIGhh cyBjb21wbGV0ZWQgaGVyZS4NCj4gPiA+ID4gPiArICovDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtSZXF1ZXN0Q2FsbGJh Y2sgKA0KPiA+ID4gPiA+ICsgIElOIEVGSV9FVkVOVCBFdmVudCwNCj4gPiA+ID4gPiArICBJTiBW T0lEICpDb250ZXh0DQo+ID4gPiA+ID4gKykNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIGdS ZXF1ZXN0Q2FsbGJhY2tDb21wbGV0ZSA9IFRSVUU7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ICtSZXNwb25zZUNhbGxiYWNrICgNCj4gPiA+ID4gPiArICBJTiBFRklfRVZFTlQg RXZlbnQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAqQ29udGV4dA0KPiA+ID4gPiA+ICspDQo+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiArICBnUmVzcG9uc2VDYWxsYmFja0NvbXBsZXRlID0gVFJVRTsN Cj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ICsgIENoZWNrIGFuZCBjb252ZXJ0IHRoZSBVSU5UMTYgb3B0aW9uIHZhbHVlcyBv ZiB0aGUgJ2h0dHAnIGNvbW1hbmQNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgVmFsdWVTdHIgIFZhbHVlIGFzIGFuIFVuaWNvZGUgZW5jb2RlZCBzdHJpbmcNCj4gPiA+ID4g PiArICBAcGFyYW1bb3V0XSBWYWx1ZSAgICAgVUlOVDE2IHZhbHVlDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIEByZXR1cm4gICAgIFRSVUUgICAgICBUaGUgdmFsdWUgd2FzIHJldHVybmVkLg0K PiA+ID4gPiA+ICsgIEByZXR1cm4gICAgIEZBTFNFICAgICBBIHBhcnNpbmcgZXJyb3Igb2NjdXJl ZC4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtCT09MRUFO DQo+ID4gPiA+ID4gK1N0cmluZ1RvVWludDE2ICgNCj4gPiA+ID4gPiArICBJTiAgIENPTlNUIENI QVIxNiAgKlZhbHVlU3RyLA0KPiA+ID4gPiA+ICsgIE9VVCAgVUlOVDE2ICAgICAgICAqVmFsdWUN Cj4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4g KyAgR2V0IHRoZSBuYW1lIG9mIHRoZSBOSUMuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gICBDb250cm9sbGVySGFuZGxlICBUaGUgbmV0d29yayBwaHlzaWNhbCBkZXZpY2UN Cj4gPiA+ID4gPiBoYW5kbGUuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIE5pY051bWJlciAg ICAgICAgIFRoZSBuZXR3b3JrIHBoeXNpY2FsIGRldmljZQ0KPiA+ID4gPiA+IG51bWJlci4NCj4g PiA+ID4gPiArICBAcGFyYW1bb3V0XSAgTmljTmFtZSAgICAgICAgICAgQWRkcmVzcyB3aGVyZSB0 byBzdG9yZSB0aGUgTklDDQo+ID4gPiA+ID4gbmFtZS4NCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGhlIG1lbW9yeSBhcmVhIGhhcyB0byBiZSBhdCBsZWFzdA0K PiA+ID4gPiA+ICsNCj4gPiA+IElQNF9DT05GSUcyX0lOVEVSRkFDRV9JTkZPX05BTUVfTEVOR1RI DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBieXRl IHdpZGUuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9TVUNDRVNTICBU aGUgbmFtZSBvZiB0aGUgTklDIHdhcyByZXR1cm5lZC4NCj4gPiA+ID4gPiArICBAcmV0dXJuICBP dGhlcnMgICAgICAgVGhlIGNyZWF0aW9uIG9mIHRoZSBjaGlsZCBmb3IgdGhlIE1hbmFnZWQNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29yayBTZXJ2aWNlIGZhaWxlZCBv ciB0aGUgb3BlbmluZyBvZg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aGUg TWFuYWdlZCBOZXR3b3JrIFByb3RvY29sIGZhaWxlZCBvcg0KPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgb3BlcmF0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWQgTmV0d29yayBQcm90b2NvbCBjb3Vs ZCBub3QgYmUNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC4NCj4gPiA+ ID4gPiArKiovDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4g PiA+ID4gK0dldE5pY05hbWUgKA0KPiA+ID4gPiA+ICsgIElOICAgRUZJX0hBTkRMRSAgQ29udHJv bGxlckhhbmRsZSwNCj4gPiA+ID4gPiArICBJTiAgIFVJTlROICAgICAgIE5pY051bWJlciwNCj4g PiA+ID4gPiArICBPVVQgIENIQVIxNiAgICAgICpOaWNOYW1lDQo+ID4gPiA+ID4gKyAgKTsNCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIENyZWF0ZSBhIGNoaWxkIGZv ciB0aGUgc2VydmljZSBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcNCj4gPiA+IHBy b3RvY29sDQo+ID4gPiA+IEdVSUQNCj4gPiA+ID4gPiArICBhbmQgZ2V0IGZyb20gdGhlIGNoaWxk IHRoZSBpbnRlcmZhY2Ugb2YgdGhlIHByb3RvY29sIGlkZW50aWZpZWQNCj4gPiA+ID4gPiBieQ0K PiA+ID4gaXRzDQo+ID4gPiA+IEdVSUQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gICBDb250cm9sbGVySGFuZGxlICAgICAgICAgICAgQ29udHJvbGxlciBoYW5kbGUuDQo+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICBTZXJ2 aWNlIGJpbmRpbmcgcHJvdG9jb2wNCj4gPiA+IEdVSUQNCj4gPiA+ID4gb2YNCj4gPiA+ID4gPiB0 aGUNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlcnZpY2UgdG8gYmUgY3JlYXRlZC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgUHJvdG9j b2xHdWlkICAgICAgICAgICAgICAgIEdVSUQgb2YgdGhlIHByb3RvY29sIHRvDQo+ID4gPiA+ID4g YmUNCj4gPiA+IG9wZW4uDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gIENoaWxkSGFuZGxlICAg ICAgICAgICAgICAgICBBZGRyZXNzIHdoZXJlIHRoZQ0KPiA+ID4gPiA+IGhhbmRsZXINCj4gPiA+ IG9mIHRoZQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3JlYXRlZCBjaGlsZCBpcw0KPiA+ID4gPiA+IHJldHVybmVkLg0KPiA+ID4gTlVMTCBp cw0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuZWQgaW4gY2FzZSBvZg0KPiA+ID4gPiA+IGVycm9yLg0KPiA+ID4gPiA+ICsgIEBwYXJh bVtvdXRdICBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgQWRkcmVzcyB3aGVyZSBhIHBvaW50 ZXINCj4gPiA+ID4gPiB0bw0KPiA+ID4gdGhlDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCBpbnRlcmZhY2UgaXMNCj4gPiA+IHJl dHVybmVkIGluDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYXNlIG9mIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR1 cm4gIEVGSV9TVUNDRVNTICBUaGUgY2hpbGQgd2FzIGNyZWF0ZWQgYW5kIHRoZSBwcm90b2NvbA0K PiA+ID4gb3BlbmVkLg0KPiA+ID4gPiA+ICsgIEByZXR1cm4gIE90aGVycyAgICAgICBFaXRoZXIg dGhlIGNyZWF0aW9uIG9mIHRoZSBjaGlsZCBvciB0aGUNCj4gPiA+IG9wZW5pbmcNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHByb3RvY29sIGZhaWxlZC4NCj4gPiA+ ID4gPiArKiovDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4g PiA+ID4gK0NyZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90b2NvbCAoDQo+ID4gPiA+ID4gKyAg SU4gICBFRklfSEFORExFICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ICsgIElOICAgRUZJ X0dVSUQgICAgKlNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ICsgIElOICAg RUZJX0dVSUQgICAgKlByb3RvY29sR3VpZCwNCj4gPiA+ID4gPiArICBPVVQgIEVGSV9IQU5ETEUg ICpDaGlsZEhhbmRsZSwNCj4gPiA+ID4gPiArICBPVVQgIFZPSUQgICAgICAgICoqSW50ZXJmYWNl DQo+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgIENsb3NlIHRoZSBwcm90b2NvbCBpZGVudGlmaWVkIGJ5IGl0cyBHVUlEIG9uIHRoZSBjaGls ZCBoYW5kbGUgb2YNCj4gPiA+IHRoZQ0KPiA+ID4gPiBzZXJ2aWNlDQo+ID4gPiA+ID4gKyAgaWRl bnRpZmllZCBieSBpdHMgc2VydmljZSBiaW5kaW5nIHByb3RvY29sIEdVSUQsIHRoZW4gZGVzdHJv eSB0aGUNCj4gPiA+IGNoaWxkDQo+ID4gPiA+ID4gKyAgaGFuZGxlLg0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVySGFuZGxlICAgICAgICAgICAgQ29udHJv bGxlciBoYW5kbGUuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgU2VydmljZUJpbmRpbmdQcm90 b2NvbEd1aWQgIFNlcnZpY2UgYmluZGluZyBwcm90b2NvbA0KPiA+ID4gR1VJRA0KPiA+ID4gPiBv Zg0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2aWNlIHRvIGJlIGRlc3Ryb3llZC4NCj4gPiA+ID4gPiArICBAcGFy YW1baW5dICBQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgR1VJRCBvZiB0aGUgcHJvdG9jb2wg dG8NCj4gPiA+ID4gPiBiZQ0KPiA+ID4gY2xvc2VkLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IENoaWxkSGFuZGxlICAgICAgICAgICAgICAgICBIYW5kbGUgb2YgdGhlIGNoaWxkIHRvIGJlDQo+ ID4gPiBkZXN0cm95ZWQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiAr U1RBVElDDQo+ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiArQ2xvc2VQcm90b2NvbEFuZERlc3Ry b3lTZXJ2aWNlQ2hpbGQgKA0KPiA+ID4gPiA+ICsgIElOICBFRklfSEFORExFICBDb250cm9sbGVy SGFuZGxlLA0KPiA+ID4gPiA+ICsgIElOICBFRklfR1VJRCAgICAqU2VydmljZUJpbmRpbmdQcm90 b2NvbEd1aWQsDQo+ID4gPiA+ID4gKyAgSU4gIEVGSV9HVUlEICAgICpQcm90b2NvbEd1aWQsDQo+ ID4gPiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUgIENoaWxkSGFuZGxlDQo+ID4gPiA+ID4gKyAgKTsN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBX b3JrZXIgZnVuY3Rpb24gdGhhdCBkb3dubG9hZCB0aGUgZGF0YSBvZiBhIGZpbGUgZnJvbSBhIEhU VFANCj4gPiA+ID4gPiBzZXJ2ZXINCj4gPiA+ID4gZ2l2ZW4NCj4gPiA+ID4gPiArICB0aGUgcGF0 aCBvZiB0aGUgZmlsZSBhbmQgaXRzIHNpemUuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gICBDb250ZXh0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGRvd25sb2FkIGNv bnRleHQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgZmlsZSB3YXMgZG93bmxvYWRlZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsICBF RklfT1VUX09GX1JFU09VUkNFUyAgQSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ ID4gKyAgQHJldHZhbCAgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSBkb3dubG9hZGluZyBvZiB0 aGUgZmlsZQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t IHRoZSBzZXJ2ZXIgZmFpbGVkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gK0Rvd25sb2FkRmls ZSAoDQo+ID4gPiA+ID4gKyAgSU4gICBET1dOTE9BRF9DT05URVhUICAgKkNvbnRleHQNCj4gPiA+ ID4gPiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArU1RBVElDIENPTlNUIFNIRUxMX1BB UkFNX0lURU0gUGFyYW1MaXN0W10gPSB7DQo+ID4gPiA+ID4gKyAge0wiLWkiLCBUeXBlVmFsdWV9 LA0KPiA+ID4gPiA+ICsgIHtMIi1sIiwgVHlwZVZhbHVlfSwNCj4gPiA+ID4gPiArICB7TCItcCIs IFR5cGVWYWx1ZX0sDQo+ID4gPiA+ID4gKyAge0wiLXMiLCBUeXBlVmFsdWV9LA0KPiA+ID4gPiA+ ICsgIHtMIi10IiwgVHlwZVZhbHVlfSwNCj4gPiA+ID4gPiArICB7TlVMTCAsIFR5cGVNYXh9DQo+ ID4gPiA+ID4gKyAgfTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsg IEZ1bmN0aW9uIGZvciAnaHR0cCcgY29tbWFuZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVMTCBpZiBJbnRl cm5hbCkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0 aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmDQo+ID4gPiBJbnRlcm5hbCkuDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIEByZXR1cm4gIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICBUaGUgJ2h0dHAn IGNvbW1hbmQgY29tcGxldGVkDQo+ID4gPiA+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiArICBA cmV0dXJuICBTSEVMTF9BQk9SVEVEICAgICAgICAgICAgVGhlIFNoZWxsIExpYnJhcnkNCj4gPiA+ ID4gPiBpbml0aWFsaXphdGlvbg0KPiA+ID4gZmFpbGVkLg0KPiA+ID4gPiA+ICsgIEByZXR1cm4g IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSICBBdCBsZWFzdCBvbmUgb2YgdGhlDQo+ID4gY29tbWFu ZCdzDQo+ID4gPiA+ID4gYXJndW1lbnRzIGlzDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vdCB2YWxpZC4NCj4gPiA+ID4gPiArICBAcmV0dXJuICBTSEVM TF9PVVRfT0ZfUkVTT1VSQ0VTICAgQSBtZW1vcnkgYWxsb2NhdGlvbg0KPiBmYWlsZWQuDQo+ID4g PiA+ID4gKyAgQHJldHVybiAgU0hFTExfTk9UX0ZPVU5EICAgICAgICAgIE5ldHdvcmsgSW50ZXJm YWNlIENhcmQgbm90DQo+ID4gZm91bmQuDQo+ID4gPiA+ID4gKyAgQHJldHVybiAgU0hFTExfVU5T VVBQT1JURUQgICAgICAgIENvbW1hbmQgd2FzIHZhbGlkLCBidXQgdGhlDQo+ID4gc2VydmVyDQo+ ID4gPiA+ID4gcmV0dXJuZWQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIHNvbWUNCj4gPiA+IGVycm9yLg0KPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSBm aWxlIHJlcXVlc3RlZCBmb3INCj4gPiA+IGVycm9yIGJvZHkuDQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiArU0hFTExfU1RBVFVTDQo+ID4gPiA+ID4gK1J1bkh0dHAgKA0K PiA+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4gPiA+ ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ID4gPiA+ICsgICkNCj4g PiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPiA+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAqQ2hlY2tQYWNrYWdlOw0KPiA+ ID4gPiA+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICpQcm9ibGVtUGFyYW07DQo+ID4gPiA+ ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgUGFyYW1Db3VudDsNCj4gPiA+ID4gPiArICBD T05TVCBDSEFSMTYgICAgICAgICAgICAqVXNlck5pY05hbWU7DQo+ID4gPiA+ID4gKyAgQk9PTEVB TiAgICAgICAgICAgICAgICAgTmljRm91bmQ7DQo+ID4gPiA+ID4gKyAgQ09OU1QgQ0hBUjE2ICAg ICAgICAgICAgKlZhbHVlU3RyOw0KPiA+ID4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAg ICpSZW1vdGVGaWxlUGF0aDsNCj4gPiA+ID4gPiArICBDT05TVCBDSEFSMTYgICAgICAgICAgICAq V2Fsa2VyOw0KPiA+ID4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpQcm94eVNlcnZl ckFkZHI7DQo+ID4gPiA+ID4gKyAgRUZJX0hUVFBfQ09ORklHX0RBVEEgICAgSHR0cENvbmZpZ0Rh dGE7DQo+ID4gPiA+ID4gKyAgRUZJX0hUVFB2NF9BQ0NFU1NfUE9JTlQgSVB2NE5vZGU7DQo+ID4g PiA+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgKkhhbmRsZXM7DQo+ID4gPiA+ID4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgSGFuZGxlQ291bnQ7DQo+ID4gPiA+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgTmljTnVtYmVyOw0KPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgIEluaXRpYWxTaXplOw0KPiA+ID4gPiA+ICsgIENIQVIxNg0KPiA+ID4gPiA+IE5p Y05hbWVbSVA0X0NPTkZJRzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5HVEhdOw0KPiA+ID4gPiA+ ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGU7DQo+ID4gPiA+ID4g KyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgSHR0cENoaWxkSGFuZGxlOw0KPiA+ID4gPiA+ICsg IERPV05MT0FEX0NPTlRFWFQgICAgICAgIENvbnRleHQ7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsgIFByb2JsZW1QYXJhbSAgICAgICAgPSBOVUxMOw0KPiA+ID4gPiA+ICsgIE5pY0ZvdW5kICAg ICAgICAgICAgPSBGQUxTRTsNCj4gPiA+ID4gPiArICBIYW5kbGVzICAgICAgICAgICAgID0gTlVM TDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiArICAvLyBJbml0aWFs aXplIHRoZSBTaGVsbCBsaWJyYXJ5ICh3ZSBtdXN0IGJlIGluIG5vbi1hdXRvLWluaXQuLi4pDQo+ ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiArICBTdGF0dXMgPSBTaGVsbEluaXRpYWxpemUgKCk7 DQo+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAg QVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiArICAgIHJldHVybiBTSEVMTF9B Qk9SVEVEOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgWmVyb01l bSAoJkNvbnRleHQsIHNpemVvZiAoQ29udGV4dCkpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr ICAvLw0KPiA+ID4gPiA+ICsgIC8vIFBhcnNlIHRoZSBjb21tYW5kIGxpbmUuDQo+ID4gPiA+ID4g KyAgLy8NCj4gPiA+ID4gPiArICBTdGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFt TGlzdCwgJkNoZWNrUGFja2FnZSwNCj4gPiA+ID4gPiAmUHJvYmxlbVBhcmFtLCBUUlVFKTsNCj4g PiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICBpZiAo KFN0YXR1cyA9PSBFRklfVk9MVU1FX0NPUlJVUFRFRCkgJiYNCj4gPiA+ID4gPiArICAgICAgICAo UHJvYmxlbVBhcmFtICE9IE5VTEwpICkgew0KPiA+ID4gPiA+ICsgICAgICBTaGVsbFByaW50SGlp RXggKA0KPiA+ID4gPiA+ICsgICAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJf R0VOX1BST0JMRU0pLA0KPiA+IG1IdHRwSGlpSGFuZGxlLA0KPiA+ID4gPiA+ICsgICAgICAgIEhU VFBfQVBQX05BTUUsIFByb2JsZW1QYXJhbQ0KPiA+ID4gPiA+ICsgICAgICAgICk7DQo+ID4gPiA+ ID4gKyAgICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKFByb2JsZW1QYXJhbSk7DQo+ID4gPiA+ID4g KyAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4g PiArICAgIH0NCj4gPiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsgIC8vIENoZWNrIHRoZSBudW1i ZXIgb2YgcGFyYW1ldGVycw0KPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gKyAgU3RhdHVzID0g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBQYXJhbUNv dW50ID0gU2hlbGxDb21tYW5kTGluZUdldENvdW50IChDaGVja1BhY2thZ2UpOw0KPiA+ID4gPiA+ ICsgIGlmIChQYXJhbUNvdW50ID4gNCkgew0KPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4 ICgNCj4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5f VE9PX01BTlkpLA0KPiA+ID4gPiA+ICsgICAgICBtSHR0cEhpaUhhbmRsZSwgSFRUUF9BUFBfTkFN RQ0KPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlmIChQYXJhbUNvdW50IDwgMykg ew0KPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiArICAgICAgLTEs IC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX0ZFVyksDQo+ID4gPiA+ID4gKyAg ICAgIG1IdHRwSGlpSGFuZGxlLCBIVFRQX0FQUF9OQU1FDQo+ID4gPiA+ID4gKyAgICAgICk7DQo+ ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgWmVyb01lbSAoJkh0dHBDb25maWdEYXRhLCBzaXplb2YgKEh0dHBDb25maWdE YXRhKSk7DQo+ID4gPiA+ID4gKyAgWmVyb01lbSAoJklQdjROb2RlLCBzaXplb2YgKElQdjROb2Rl KSk7DQo+ID4gPiA+ID4gKyAgSVB2NE5vZGUuVXNlRGVmYXVsdEFkZHJlc3MgPSBUUlVFOw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICBIdHRwQ29uZmlnRGF0YS5IdHRwVmVyc2lvbiA9IEh0dHBW ZXJzaW9uMTE7DQo+ID4gPiA+ID4gKyAgSHR0cENvbmZpZ0RhdGEuQWNjZXNzUG9pbnQuSVB2NE5v ZGUgPSAmSVB2NE5vZGU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4g KyAgLy8gR2V0IHRoZSBob3N0IGFkZHJlc3MgKG5vdCBuZWNlc3NhcmlseSBJUHY0IGZvcm1hdCkN Cj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsgIFZhbHVlU3RyID0gU2hlbGxDb21tYW5kTGlu ZUdldFJhd1ZhbHVlIChDaGVja1BhY2thZ2UsIDEpOw0KPiA+ID4gPiA+ICsgIGlmICghVmFsdWVT dHIpIHsNCj4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gKyAgICAg IC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1BBUkFNX0lOViksDQo+ID4gPiA+ IG1IdHRwSGlpSGFuZGxlLA0KPiA+ID4gPiA+ICsgICAgICBIVFRQX0FQUF9OQU1FLCBWYWx1ZVN0 cg0KPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAgVUlOVE4gU3RhcnRTaXplOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICAgIFN0YXJ0U2l6ZSA9IDA7DQo+ID4gPiA+ID4gKyAgICBpZiAo IVN0clN0ciAoVmFsdWVTdHIsIEwiOi8vIikpIHsNCj4gPiA+ID4gPiArICAgICAgQ29udGV4dC5T ZXJ2ZXJBZGRyQW5kUHJvdG8gPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29udGV4dC5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RhcnRTaXpl LA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVM VF9IVFRQX1BST1RPLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RyTGVuIChERUZBVUxUX0hUVFBfUFJPVE8pDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsgICAgICBDb250ZXh0LlNl cnZlckFkZHJBbmRQcm90byA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90bywNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGFydFNpemUs DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIjovLyIs DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJMZW4g KEwiOi8vIikNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICk7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgQ29udGV4 dC5TZXJ2ZXJBZGRyQW5kUHJvdG8gPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvbnRleHQuU2VydmVyQWRkckFuZFByb3RvLA0K PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGFydFNpemUs DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVTdHIs DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyTGVuIChW YWx1ZVN0cikNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiA+ID4gPiA+ICsgICAgaWYgKCFDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90bykgew0KPiA+ ID4gPiA+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiAr ICAgICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArICB9DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsgIFJlbW90ZUZpbGVQYXRoID0gU2hlbGxDb21tYW5kTGluZUdl dFJhd1ZhbHVlIChDaGVja1BhY2thZ2UsDQo+ID4gMik7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChS ZW1vdGVGaWxlUGF0aCAhPSBOVUxMKTsNCj4gPiA+ID4gPiArICBpZiAoUmVtb3RlRmlsZVBhdGgp IHsNCj4gPiA+ID4gPiArICAgIFRyaW1TcGFjZXMgKChDSEFSMTYgKiopJlJlbW90ZUZpbGVQYXRo KTsNCj4gPiA+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlmIChQYXJhbUNvdW50ID09IDQpIHsNCj4g PiA+ID4gPiArICAgIG1Mb2NhbEZpbGVQYXRoID0gU2hlbGxDb21tYW5kTGluZUdldFJhd1ZhbHVl IChDaGVja1BhY2thZ2UsDQo+ID4gMyk7DQo+ID4gPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ID4g PiArICAgIFdhbGtlciA9IFJlbW90ZUZpbGVQYXRoICsgU3RyTGVuIChSZW1vdGVGaWxlUGF0aCk7 DQo+ID4gPiA+ID4gKyAgICB3aGlsZSAoKC0tV2Fsa2VyKSA+PSBSZW1vdGVGaWxlUGF0aCkgew0K PiA+ID4gPiA+ICsgICAgICBpZiAoKCpXYWxrZXIgPT0gTCdcXCcpIHx8DQo+ID4gPiA+ID4gKyAg ICAgICAgICAoKldhbGtlciA9PSBMJy8nICkgICAgKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgYnJl YWs7DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgICBtTG9jYWxGaWxlUGF0aCA9IFdhbGtlciArIDE7DQo+ID4gPiA+ID4gKyAg fQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBpZiAoIVN0ckxlbiAobUxvY2FsRmlsZVBhdGgp KSB7DQo+ID4gPiA+ID4gKyAgICBtTG9jYWxGaWxlUGF0aCA9IERFRkFVTFRfSFRNTF9GSUxFOw0K PiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgSW5pdGlhbFNpemUgPSAw Ow0KPiA+ID4gPiA+ICsgIENvbnRleHQuVVJJID0gU3RybkNhdEdyb3cgKA0KPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAmQ29udGV4dC5VUkksDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICZJbml0aWFsU2l6ZSwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgUmVtb3RlRmls ZVBhdGgsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIFN0ckxlbiAoUmVtb3RlRmlsZVBh dGgpDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gKyAgaWYgKCFD b250ZXh0LlVSSSkgew0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQo+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiArICAvLyBHZXQgdGhlIG5hbWUgb2YgdGhl IE5ldHdvcmsgSW50ZXJmYWNlIENhcmQgdG8gYmUgdXNlZCBpZiBhbnkuDQo+ID4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4gPiArICBVc2VyTmljTmFtZSA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAo Q2hlY2tQYWNrYWdlLCBMIi1pIik7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFZhbHVlU3Ry ID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1BhY2thZ2UsIEwiLWwiKTsNCj4gPiA+ ID4gPiArICBpZiAoVmFsdWVTdHIgIT0gTlVMTCkgew0KPiA+ID4gPiA+ICsgICAgaWYgKCFTdHJp bmdUb1VpbnQxNiAoDQo+ID4gPiA+ID4gKyAgICAgICAgIFZhbHVlU3RyLA0KPiA+ID4gPiA+ICsg ICAgICAgICAmSHR0cENvbmZpZ0RhdGEuQWNjZXNzUG9pbnQuSVB2NE5vZGUtPkxvY2FsUG9ydA0K PiA+ID4gPiA+ICsgICAgICAgKQ0KPiA+ID4gPiA+ICsgICAgICkgew0KPiA+ID4gPiA+ICsgICAg ICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgLy8gSXMgcHJveHkgc2VydmVyIHVzZWQ/DQo+ID4gPiA+ID4gKyAg UHJveHlTZXJ2ZXJBZGRyID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1BhY2thZ2Us IEwiLQ0KPiA+IHAiKTsNCj4gPiA+ID4gPiArICBpZiAoUHJveHlTZXJ2ZXJBZGRyKSB7DQo+ID4g PiA+ID4gKyAgICBVSU5UTiBTdHJpbmdTaXplOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAg IFN0cmluZ1NpemUgPSBTdHJMZW4gKFByb3h5U2VydmVyQWRkcikgKyAxOw0KPiA+ID4gPiA+ICsg ICAgICBDb250ZXh0LlByb3h5U2VydmVyQWRkciA9IEFsbG9jYXRlUG9vbCAoU3RyaW5nU2l6ZSk7 DQo+ID4gPiA+ID4gKyAgICAgIGlmICghQ29udGV4dC5Qcm94eVNlcnZlckFkZHIpIHsNCj4gPiA+ ID4gPiArICAgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiAr ICAgICAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gKyAgICAg IFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoDQo+ID4gPiA+ID4gKyAgICAgICAgUHJveHlTZXJ2ZXJB ZGRyLA0KPiA+ID4gPiA+ICsgICAgICAgIENvbnRleHQuUHJveHlTZXJ2ZXJBZGRyLA0KPiA+ID4g PiA+ICsgICAgICAgIFN0cmluZ1NpemUNCj4gPiA+ID4gPiArICAgICAgICApOw0KPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQ29udGV4dC5CdWZmZXJTaXplID0gREVG QVVMVF9CVUZfU0laRTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgLy8gQnkgZGVmYXVsdCwg dGhlIGJ1ZmZlciBzaXplIGlzIDFNLiBUaGlzIGNhbiBiZSBjaGFuZ2VkIHdpdGggLXMNCj4gPiA+ ID4gcGFyYW1ldGVyLg0KPiA+ID4gPiA+ICsgIFZhbHVlU3RyID0gU2hlbGxDb21tYW5kTGluZUdl dFZhbHVlIChDaGVja1BhY2thZ2UsIEwiLXMiKTsNCj4gPiA+ID4gPiArICAgIGlmIChWYWx1ZVN0 ciAhPSBOVUxMKSB7DQo+ID4gPiA+ID4gKyAgICAgIENvbnRleHQuQnVmZmVyU2l6ZSA9IFNoZWxs U3RyVG9VaW50biAoVmFsdWVTdHIpOw0KPiA+ID4gPiA+ICsgICAgICBpZiAoIUNvbnRleHQuQnVm ZmVyU2l6ZSB8fCBDb250ZXh0LkJ1ZmZlclNpemUgPiBNQVhfQlVGX1NJWkUpDQo+ID4gPiA+ID4g ew0KPiA+ID4gPiA+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gKyAgICAg ICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9QQVJBTV9JTlYpLA0KPiA+ ID4gPiA+ICsgICAgICAgICAgbUh0dHBIaWlIYW5kbGUsIEhUVFBfQVBQX05BTUUsIFZhbHVlU3Ry DQo+ID4gPiA+ID4gKyAgICAgICAgICApOw0KPiA+ID4gPiA+ICsgICAgICAgIGdvdG8gRXJyb3I7 DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgVmFsdWVTdHIgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKENoZWNrUGFja2Fn ZSwgTCItdCIpOw0KPiA+ID4gPiA+ICsgIGlmIChWYWx1ZVN0ciAhPSBOVUxMKSB7DQo+ID4gPiA+ ID4gKyAgICBIdHRwQ29uZmlnRGF0YS5UaW1lT3V0TWlsbGlzZWMgPSBTaGVsbFN0clRvVWludG4g KFZhbHVlU3RyKTsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8v DQo+ID4gPiA+ID4gKyAgLy8gTG9jYXRlIGFsbCBIVFRQIFNlcnZpY2UgQmluZGluZyBwcm90b2Nv bHMNCj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlSGFu ZGxlQnVmZmVyICgNCj4gPiA+ID4gPiArICAgICAgICAgICAgIEJ5UHJvdG9jb2wsDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAmZ0VmaU1hbmFnZWROZXR3b3JrU2VydmljZUJpbmRpbmdQcm90b2Nv bEd1aWQsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPiA+ICsgICAgICAg ICAgICAgJkhhbmRsZUNvdW50LA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgJkhhbmRsZXMNCj4g PiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSB8fCAoSGFuZGxlQ291bnQgPT0gMCkpIHsNCj4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRI aWlFeCAoDQo+ID4gPiA+ID4gKyAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJf SFRUUF9FUlJfTk9fTklDKSwNCj4gPiA+ID4gbUh0dHBIaWlIYW5kbGUNCj4gPiA+ID4gPiArICAg ICAgKTsNCj4gPiA+ID4gPiArICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ ID4gKyAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4g PiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KyAgZm9yIChOaWNOdW1iZXIgPSAwOw0KPiA+ID4gPiA+ICsgICAgICAgKE5pY051bWJlciA8IEhh bmRsZUNvdW50KSAmJiAoU3RhdHVzICE9IEVGSV9TVUNDRVNTKTsNCj4gPiA+ID4gPiArICAgICAg IE5pY051bWJlcisrKSB7DQo+ID4gPiA+ID4gKyAgICBDb250cm9sbGVySGFuZGxlID0gSGFuZGxl c1tOaWNOdW1iZXJdOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEdldE5p Y05hbWUgKENvbnRyb2xsZXJIYW5kbGUsIE5pY051bWJlciwgTmljTmFtZSk7DQo+ID4gPiA+ID4g KyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJp bnRIaWlFeCAoDQo+ID4gPiA+ID4gKyAgICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4g KFNUUl9IVFRQX0VSUl9OSUNfTkFNRSksDQo+ID4gPiA+ID4gKyAgICAgICAgbUh0dHBIaWlIYW5k bGUsIE5pY051bWJlciwgU3RhdHVzDQo+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ID4gKyAg ICAgIGNvbnRpbnVlOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr ICAgIGlmIChVc2VyTmljTmFtZSAhPSBOVUxMKSB7DQo+ID4gPiA+ID4gKyAgICAgIGlmIChTdHJD bXAgKE5pY05hbWUsIFVzZXJOaWNOYW1lKSAhPSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgY29u dGludWU7DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArICAgICAgTmljRm91bmQgPSBU UlVFOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIFN0YXR1 cyA9IENyZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90b2NvbCAoDQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICZn RWZpSHR0cFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAmZ0VmaUh0dHBQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICZI dHRwQ2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIChWT0lEKiopJkNvbnRl eHQuSHR0cA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgN Cj4gPiA+ID4gPiArICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiAoU1RSX0hU VFBfRVJSX09QRU5fUFJPVE9DT0wpLA0KPiA+ID4gPiA+ICsgICAgICAgIG1IdHRwSGlpSGFuZGxl LCBOaWNOYW1lLCBTdGF0dXMNCj4gPiA+ID4gPiArICAgICAgICApOw0KPiA+ID4gPiA+ICsgICAg ICBjb250aW51ZTsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg ICBTdGF0dXMgPSBDb250ZXh0Lkh0dHAtPkNvbmZpZ3VyZSAoQ29udGV4dC5IdHRwLA0KPiA+ID4g PiA+ICZIdHRwQ29uZmlnRGF0YSk7DQo+ID4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gKyAg ICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0VSUl9DT05GSUdVUkUp LA0KPiA+ID4gPiA+ICsgICAgICAgIG1IdHRwSGlpSGFuZGxlLCBOaWNOYW1lLCBTdGF0dXMNCj4g PiA+ID4gPiArICAgICAgICApOw0KPiA+ID4gPiA+ICsgICAgICBnb3RvIE5leHRIYW5kbGU7DQo+ ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gRG93 bmxvYWRGaWxlICgmQ29udGV4dCk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgU2hlbGxQ cmludEhpaUV4ICgNCj4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4g KFNUUl9HRU5fQ1JMRiksIG1IdHRwSGlpSGFuZGxlDQo+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgQ2xvc2VQcm90b2NvbEFuZERlc3Ryb3lTZXJ2aWNlQ2hp bGQgKA0KPiA+ID4gPiA+ICsgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ICsgICAg ICAmZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiArICAgICAg JmdFZmlIdHRwUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ICsgICAgICBIdHRwQ2hpbGRIYW5kbGUN Cj4gPiA+ID4gPiArICAgICAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ ID4gPiA+ID4gKyAgICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0VS Ul9ET1dOTE9BRCksDQo+ID4gPiA+ID4gKyAgICAgICAgbUh0dHBIaWlIYW5kbGUsIFJlbW90ZUZp bGVQYXRoLCBOaWNOYW1lLCBTdGF0dXMNCj4gPiA+ID4gPiArICAgICAgICApOw0KPiA+ID4gPiA+ ICsgICAgICAvLyBJZiBhIHVzZXIgYWJvcnRlZCB0aGUgb3BlcmF0aW9uLCBkbyBub3QgdHJ5IGFu b3RoZXINCj4gPiA+IGNvbnRyb2xsZXIuDQo+ID4gPiA+ID4gKyAgICAgIGlmIChTdGF0dXMgPT0g RUZJX0FCT1JURUQpIHsNCj4gPiA+ID4gPiArICAgICAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ ICsgICAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgICBnb3RvIE5leHRIYW5kbGU7 DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0g RUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtOZXh0SGFuZGxlOg0KPiA+ID4g PiA+ICsgICAgaWYgKFN0YXR1cyA9PSBFRklfSFRUUF9FUlJPUikgew0KPiA+ID4gPiA+ICsgICAg ICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgaWYgKChVc2VyTmljTmFtZSAhPSBOVUxMKSAmJiAoIU5pY0ZvdW5k KSkgew0KPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiArICAgICAg LTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9IVFRQX0VSUl9OSUNfTk9UX0ZPVU5E KSwNCj4gPiA+ID4gPiArICAgICAgbUh0dHBIaWlIYW5kbGUsIFVzZXJOaWNOYW1lDQo+ID4gPiA+ ID4gKyAgICAgICk7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArRXJy b3I6DQo+ID4gPiA+ID4gKyAgU2hlbGxDb21tYW5kTGluZUZyZWVWYXJMaXN0IChDaGVja1BhY2th Z2UpOw0KPiA+ID4gPiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKEhhbmRsZXMpOw0KPiA+ID4g PiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKENvbnRleHQuUHJveHlTZXJ2ZXJBZGRyKTsNCj4g PiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9OVUxMIChDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90 byk7DQo+ID4gPiA+ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoQ29udGV4dC5VUkkpOw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICByZXR1cm4gU3RhdHVzICYgfk1BWF9CSVQ7DQo+ID4gPiA+ ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIENoZWNrIGFu ZCBjb252ZXJ0IHRoZSBVSU5UMTYgb3B0aW9uIHZhbHVlcyBvZiB0aGUgJ2h0dHAnIGNvbW1hbmQN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgVmFsdWVTdHIgIFZhbHVlIGFz IGFuIFVuaWNvZGUgZW5jb2RlZCBzdHJpbmcNCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBWYWx1 ZSAgICAgVUlOVDE2IHZhbHVlDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR1cm4gICAg IFRSVUUgICAgICBUaGUgdmFsdWUgd2FzIHJldHVybmVkLg0KPiA+ID4gPiA+ICsgIEByZXR1cm4g ICAgIEZBTFNFICAgICBBIHBhcnNpbmcgZXJyb3Igb2NjdXJlZC4NCj4gPiA+ID4gPiArKiovDQo+ ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK1N0cmluZ1Rv VWludDE2ICgNCj4gPiA+ID4gPiArICBJTiAgIENPTlNUIENIQVIxNiAgKlZhbHVlU3RyLA0KPiA+ ID4gPiA+ICsgIE9VVCAgVUlOVDE2ICAgICAgICAqVmFsdWUNCj4gPiA+ID4gPiArICApDQo+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiArICBVSU5UTiAgVmFsOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArICBWYWwgPSBTaGVsbFN0clRvVWludG4gKFZhbHVlU3RyKTsNCj4gPiA+ID4gPiArICBpZiAo VmFsID4gTUFYX1VJTlQxNikgew0KPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4g PiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fUEFSQU1f SU5WKSwNCj4gPiA+ID4gPiArICAgICAgbUh0dHBIaWlIYW5kbGUsIEhUVFBfQVBQX05BTUUsIFZh bHVlU3RyDQo+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7 DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAqVmFsdWUgPSAoVUlO VDE2KVZhbDsNCj4gPiA+ID4gPiArICByZXR1cm4gVFJVRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0IHRoZSBuYW1lIG9mIHRoZSBO SUMuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250cm9sbGVySGFu ZGxlICBUaGUgbmV0d29yayBwaHlzaWNhbCBkZXZpY2UNCj4gPiA+ID4gPiBoYW5kbGUuDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgIE5pY051bWJlciAgICAgICAgIFRoZSBuZXR3b3JrIHBoeXNp Y2FsIGRldmljZQ0KPiA+ID4gPiA+IG51bWJlci4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAg TmljTmFtZSAgICAgICAgICAgQWRkcmVzcyB3aGVyZSB0byBzdG9yZSB0aGUgTklDDQo+ID4gPiA+ ID4gbmFtZS4NCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhl IG1lbW9yeSBhcmVhIGhhcyB0byBiZSBhdCBsZWFzdA0KPiA+ID4gPiA+ICsNCj4gPiA+IElQNF9D T05GSUcyX0lOVEVSRkFDRV9JTkZPX05BTUVfTEVOR1RIDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBieXRlIHdpZGUuDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9TVUNDRVNTICBUaGUgbmFtZSBvZiB0aGUgTklDIHdhcyBy ZXR1cm5lZC4NCj4gPiA+ID4gPiArICBAcmV0dXJuICBPdGhlcnMgICAgICAgVGhlIGNyZWF0aW9u IG9mIHRoZSBjaGlsZCBmb3IgdGhlIE1hbmFnZWQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgTmV0d29yayBTZXJ2aWNlIGZhaWxlZCBvciB0aGUgb3BlbmluZyBvZg0KPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTWFuYWdlZCBOZXR3b3JrIFByb3RvY29s IGZhaWxlZCBvcg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3BlcmF0 aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIE1hbmFnZWQgTmV0d29yayBQcm90b2NvbCBjb3VsZCBub3QgYmUNCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgcmVhZC4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1NU QVRJQw0KPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gK0dldE5pY05hbWUgKA0KPiA+ ID4gPiA+ICsgIElOICAgRUZJX0hBTkRMRSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiAr ICBJTiAgIFVJTlROICAgICAgIE5pY051bWJlciwNCj4gPiA+ID4gPiArICBPVVQgIENIQVIxNiAg ICAgICpOaWNOYW1lDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ICsgIEVGSV9I QU5ETEUgICAgICAgICAgICAgICAgICAgIE1ucEhhbmRsZTsNCj4gPiA+ID4gPiArICBFRklfTUFO QUdFRF9ORVRXT1JLX1BST1RPQ09MICAqTW5wOw0KPiA+ID4gPiA+ICsgIEVGSV9TSU1QTEVfTkVU V09SS19NT0RFICAgICAgIFNucE1vZGU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFN0YXR1 cyA9IENyZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90b2NvbCAoDQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgJmdFZmlN YW5hZ2VkTmV0d29ya1NlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgJmdFZmlNYW5hZ2VkTmV0d29ya1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiArICAg ICAgICAgICAgICZNbnBIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAoVk9JRCoqKSZN bnANCj4gPiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9IE1ucC0+R2V0TW9kZURhdGEgKE1u cCwgTlVMTCwgJlNucE1vZGUpOw0KPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykg JiYgKFN0YXR1cyAhPSBFRklfTk9UX1NUQVJURUQpKSB7DQo+ID4gPiA+ID4gKyAgICBnb3RvIEVy cm9yOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgVW5pY29kZVNQ cmludCAoDQo+ID4gPiA+ID4gKyAgICBOaWNOYW1lLA0KPiA+ID4gPiA+ICsgICAgSVA0X0NPTkZJ RzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5HVEgsDQo+ID4gPiA+ID4gKyAgICBTbnBNb2RlLklm VHlwZSA9PSBORVRfSUZUWVBFX0VUSEVSTkVUID8NCj4gPiA+ID4gPiArICAgIEwiZXRoJWQiIDoN Cj4gPiA+ID4gPiArICAgIEwidW5rJWQiLA0KPiA+ID4gPiA+ICsgICAgTmljTnVtYmVyDQo+ID4g PiA+ID4gKyAgICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBTdGF0dXMgPSBFRklfU1VD Q0VTUzsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK0Vycm9yOg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBpZiAoTW5wSGFuZGxlICE9IE5VTEwpIHsNCj4gPiA+ID4gPiArICAgIENsb3NlUHJv dG9jb2xBbmREZXN0cm95U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiArICAgICAgQ29udHJvbGxl ckhhbmRsZSwNCj4gPiA+ID4gPiArICAgICAgJmdFZmlNYW5hZ2VkTmV0d29ya1NlcnZpY2VCaW5k aW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ICsgICAgICAmZ0VmaU1hbmFnZWROZXR3b3JrUHJv dG9jb2xHdWlkLA0KPiA+ID4gPiA+ICsgICAgICBNbnBIYW5kbGUNCj4gPiA+ID4gPiArICAgICAg KTsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIHJldHVybiBTdGF0 dXM7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgIENyZWF0ZSBhIGNoaWxkIGZvciB0aGUgc2VydmljZSBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2 aWNlIGJpbmRpbmcNCj4gPiA+IHByb3RvY29sDQo+ID4gPiA+IEdVSUQNCj4gPiA+ID4gPiArICBh bmQgZ2V0IGZyb20gdGhlIGNoaWxkIHRoZSBpbnRlcmZhY2Ugb2YgdGhlIHByb3RvY29sIGlkZW50 aWZpZWQNCj4gPiA+ID4gPiBieQ0KPiA+ID4gaXRzDQo+ID4gPiA+IEdVSUQuDQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250cm9sbGVySGFuZGxlICAgICAgICAgICAg Q29udHJvbGxlciBoYW5kbGUuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIFNlcnZpY2VCaW5k aW5nUHJvdG9jb2xHdWlkICBTZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wNCj4gPiA+IEdVSUQNCj4g PiA+ID4gb2YNCj4gPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgdG8gYmUgY3JlYXRlZC4NCj4gPiA+ID4gPiAr ICBAcGFyYW1baW5dICAgUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgIEdVSUQgb2YgdGhlIHBy b3RvY29sIHRvDQo+ID4gPiA+ID4gYmUNCj4gPiA+IG9wZW4uDQo+ID4gPiA+ID4gKyAgQHBhcmFt W291dF0gIENoaWxkSGFuZGxlICAgICAgICAgICAgICAgICBBZGRyZXNzIHdoZXJlIHRoZQ0KPiA+ ID4gPiA+IGhhbmRsZXINCj4gPiA+IG9mIHRoZQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBjaGlsZCBpcw0KPiA+ID4gPiA+IHJl dHVybmVkLg0KPiA+ID4gTlVMTCBpcw0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgaW4gY2FzZSBvZg0KPiA+ID4gPiA+IGVycm9y Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAg QWRkcmVzcyB3aGVyZSBhIHBvaW50ZXINCj4gPiA+ID4gPiB0bw0KPiA+ID4gdGhlDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCBp bnRlcmZhY2UgaXMNCj4gPiA+IHJldHVybmVkIGluDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG9mIHN1Y2Nlc3MuDQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9TVUNDRVNTICBUaGUgY2hpbGQgd2FzIGNyZWF0 ZWQgYW5kIHRoZSBwcm90b2NvbA0KPiA+ID4gb3BlbmVkLg0KPiA+ID4gPiA+ICsgIEByZXR1cm4g IE90aGVycyAgICAgICBFaXRoZXIgdGhlIGNyZWF0aW9uIG9mIHRoZSBjaGlsZCBvciB0aGUNCj4g PiA+IG9wZW5pbmcNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHBy b3RvY29sIGZhaWxlZC4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4g PiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gK0NyZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90 b2NvbCAoDQo+ID4gPiA+ID4gKyAgSU4gICBFRklfSEFORExFICBDb250cm9sbGVySGFuZGxlLA0K PiA+ID4gPiA+ICsgIElOICAgRUZJX0dVSUQgICAgKlNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlk LA0KPiA+ID4gPiA+ICsgIElOICAgRUZJX0dVSUQgICAgKlByb3RvY29sR3VpZCwNCj4gPiA+ID4g PiArICBPVVQgIEVGSV9IQU5ETEUgICpDaGlsZEhhbmRsZSwNCj4gPiA+ID4gPiArICBPVVQgIFZP SUQgICAgICAgICoqSW50ZXJmYWNlDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAq Q2hpbGRIYW5kbGUgPSBOVUxMOw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9IE5ldExpYkNyZWF0ZVNl cnZpY2VDaGlsZCAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0K PiA+ID4gPiA+ICsgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiA+ID4gPiA+ICsgICAgICAg ICAgICAgU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICBDaGlsZEhhbmRsZQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICBp ZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5P cGVuUHJvdG9jb2wgKA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAqQ2hpbGRIYW5kbGUsDQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgIFByb3RvY29sR3VpZCwNCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgSW50ZXJmYWNlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBnSW1hZ2VIYW5k bGUsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTA0KPiA+ID4g PiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ID4gPiA+ICsgICAgICBOZXRMaWJEZXN0cm95U2VydmljZUNoaWxkICgNCj4g PiA+ID4gPiArICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ICsgICAgICAgIGdJ bWFnZUhhbmRsZSwNCj4gPiA+ID4gPiArICAgICAgICBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3Vp ZCwNCj4gPiA+ID4gPiArICAgICAgICAqQ2hpbGRIYW5kbGUNCj4gPiA+ID4gPiArICAgICAgICAp Ow0KPiA+ID4gPiA+ICsgICAgICAqQ2hpbGRIYW5kbGUgPSBOVUxMOw0KPiA+ID4gPiA+ICsgICAg fQ0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4g KyAgQ2xvc2UgdGhlIHByb3RvY29sIGlkZW50aWZpZWQgYnkgaXRzIEdVSUQgb24gdGhlIGNoaWxk IGhhbmRsZSBvZg0KPiA+ID4gdGhlDQo+ID4gPiA+IHNlcnZpY2UNCj4gPiA+ID4gPiArICBpZGVu dGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wgR1VJRCwgdGhlbiBkZXN0cm95 IHRoZQ0KPiA+ID4gY2hpbGQNCj4gPiA+ID4gPiArICBoYW5kbGUuDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgICAgICAgICBDb250cm9s bGVyIGhhbmRsZS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBTZXJ2aWNlQmluZGluZ1Byb3Rv Y29sR3VpZCAgU2VydmljZSBiaW5kaW5nIHByb3RvY29sDQo+ID4gPiBHVUlEDQo+ID4gPiA+IG9m DQo+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZpY2UgdG8gYmUgZGVzdHJveWVkLg0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIFByb3RvY29sR3VpZCAgICAgICAgICAgICAgICBHVUlEIG9mIHRoZSBwcm90b2NvbCB0 bw0KPiA+ID4gPiA+IGJlDQo+ID4gPiBjbG9zZWQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg Q2hpbGRIYW5kbGUgICAgICAgICAgICAgICAgIEhhbmRsZSBvZiB0aGUgY2hpbGQgdG8gYmUNCj4g PiA+IGRlc3Ryb3llZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtT VEFUSUMNCj4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ICtDbG9zZVByb3RvY29sQW5kRGVzdHJv eVNlcnZpY2VDaGlsZCAoDQo+ID4gPiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUgIENvbnRyb2xsZXJI YW5kbGUsDQo+ID4gPiA+ID4gKyAgSU4gIEVGSV9HVUlEICAgICpTZXJ2aWNlQmluZGluZ1Byb3Rv Y29sR3VpZCwNCj4gPiA+ID4gPiArICBJTiAgRUZJX0dVSUQgICAgKlByb3RvY29sR3VpZCwNCj4g PiA+ID4gPiArICBJTiAgRUZJX0hBTkRMRSAgQ2hpbGRIYW5kbGUNCj4gPiA+ID4gPiArICApDQo+ ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBnQlMtPkNsb3NlUHJvdG9jb2wgKA0KPiA+ID4gPiA+ ICsgICAgQ2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICBQcm90b2NvbEd1aWQsDQo+ID4gPiA+ ID4gKyAgICBnSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICBDb250cm9sbGVySGFuZGxlDQo+ ID4gPiA+ID4gKyAgICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBOZXRMaWJEZXN0cm95 U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiArICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ ID4gKyAgICBnSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICBTZXJ2aWNlQmluZGluZ1Byb3Rv Y29sR3VpZCwNCj4gPiA+ID4gPiArICAgIENoaWxkSGFuZGxlDQo+ID4gPiA+ID4gKyAgICApOw0K PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBX YWl0IHVudGlsIG9wZXJhdGlvbiBjb21wbGV0ZXMuIENvbXBsZXRpb24gaXMgaW5kaWNhdGVkIGJ5 DQo+ID4gPiA+ID4gKyAgc2V0dGluZyBvZiBhbiBhcHByb3ByaWF0ZSB2YXJpYWJsZS4NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAgICAgICAgICAgQSBw b2ludGVyIHRvIHRoZSBIVFRQIGRvd25sb2FkDQo+ID4gPiBjb250ZXh0Lg0KPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gICBDYWxsQmFja0NvbXBsZXRlICAgIEEgcG9pbnRlciB0byB0aGUgY2FsbGJh Y2sNCj4gPiA+IGNvbXBsZXRpb24NCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YXJpYWJsZSBzZXQgYnkgdGhlIGNhbGxiYWNrLg0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArICBAcmV0dXJuICBFRklfU1VDQ0VTUyAgICAgICAgICAgICBDYWxsYmFjayBzaWdu YWxsZWQgY29tcGxldGlvbi4NCj4gPiA+ID4gPiArICBAcmV0dXJuICBFRklfVElNRU9VVCAgICAg ICAgICAgICBUaW1lZCBvdXQgd2FpdGluZyBmb3INCj4gPiA+ID4gPiBjb21wbGV0aW9uLg0KPiA+ ID4gPiA+ICsgIEByZXR1cm4gIE90aGVycyAgICAgICAgICAgICAgICAgIEVycm9yIHdhaXRpbmcg Zm9yIGNvbXBsZXRpb24uDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ICtXYWl0Rm9yQ29tcGxldGlvbiAoDQo+ID4gPiA+ ID4gKyAgSU4gRE9XTkxPQURfQ09OVEVYVCAgKkNvbnRleHQsDQo+ID4gPiA+ID4gKyAgSU4gT1VU IEJPT0xFQU4gICAgICAgKkNhbGxCYWNrQ29tcGxldGUNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ ID4gK3sNCj4gPiA+ID4gPiArICBFRklfU1RBVFVTICAgU3RhdHVzOw0KPiA+ID4gPiA+ICsgIEVG SV9FVkVOVCAgICBXYWl0RXZ0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBTdGF0dXMgPSBF RklfU1VDQ0VTUzsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgLy8gVXNlIGEgdGltZXIgdG8g bWVhc3VyZSB0aW1lb3V0LiBDYW5ub3QgdXNlIFN0YWxsIGhlcmUhDQo+ID4gPiA+ID4gKyAgU3Rh dHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgRVZU X1RJTUVSLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg IE5VTEwsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgJldhaXRFdnQNCj4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0 dXMpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiA+ID4gPiArICAgICBTdGF0dXMgPSBnQlMtPlNldFRpbWVyKA0KPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICBXYWl0RXZ0LA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICBUaW1lclJlbGF0aXZlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBFRklf VElNRVJfUEVSSU9EX1NFQ09ORFMNCj4gKFRJTUVSX01BWF9USU1FT1VUX1MpDQo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgIEFT U0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiA+ID4gKyAgIH0NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgd2hpbGUgKCEgKkNhbGxCYWNrQ29tcGxldGUgJiYNCj4gPiA+ID4gPiArICAg ICAgICAgKCFFRklfRVJST1IgKFN0YXR1cykpICYmDQo+ID4gPiA+ID4gKyAgICAgICAgIEVGSV9F UlJPUiAoZ0JTLT5DaGVja0V2ZW50IChXYWl0RXZ0KSkNCj4gPiA+ID4gPiArICAgICAgICApIHsN Cj4gPiA+ID4gPiArICAgIFN0YXR1cyA9IENvbnRleHQtPkh0dHAtPlBvbGwgKENvbnRleHQtPkh0 dHApOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgZ0JTLT5TZXRU aW1lciAoV2FpdEV2dCwgVGltZXJDYW5jZWwsIDApOw0KPiA+ID4gPiA+ICsgIGdCUy0+Q2xvc2VF dmVudCAoV2FpdEV2dCk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlmICgqQ2FsbEJhY2tD b21wbGV0ZSkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9USU1FT1VUOw0KPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiArfQ0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2VuZXJhdGUgYW5kIHNl bmQgYSByZXF1ZXN0IHRvIHRoZSBodHRwIHNlcnZlci4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAgICAgICAgIEhUVFAgZG93bmxvYWQgY29udGV4dC4N Cj4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgRG93bmxvYWRVcmwgICAgICAgRnVsbHkgcXVhbGlm aWVkIFVSTCB0byBiZQ0KPiA+ID4gZG93bmxvYWRlZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgICAgICAgIFJlcXVlc3QgaGFzIGJlZW4gc2VudA0K PiA+ID4gPiA+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiArICBAcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgSW52YWxpZCBVUkwuDQo+ID4gPiA+ID4gKyAgQHJldHVybiBFRklfT1VUX09G X1JFU09VUkNFUyAgIE91dCBvZiBtZW1vcnkuDQo+ID4gPiA+ID4gKyAgQHJldHVybiBFRklfREVW SUNFX0VSUk9SICAgICAgIElmIEhUVFBTIGlzIHVzZWQsIHRoaXMgcHJvYmFibHkNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhbnMgdGhhdCBUTFMgc3VwcG9y dCBlaXRoZXIgd2FzDQo+ID4gPiBub3QNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFsbGVkIG9yIG5vdCBjb25maWd1cmVkLg0KPiA+ID4gPiA+ICsgIEBy ZXR1cm4gT3RoZXJzICAgICAgICAgICAgICAgICBFcnJvciBzZW5kaW5nIHRoZSByZXF1ZXN0Lg0K PiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gK1NlbmRSZXF1ZXN0ICgNCj4gPiA+ID4gPiArICBJTiBE T1dOTE9BRF9DT05URVhUICAqQ29udGV4dCwNCj4gPiA+ID4gPiArICBJTiBDSEFSMTYgICAgICAg ICAgICAqRG93bmxvYWRVcmwNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiArICAgIEVGSV9IVFRQX1JFUVVFU1RfREFUQSAgICAgICBSZXF1ZXN0RGF0YTsNCj4gPiA+ID4g PiArICAgIEVGSV9IVFRQX0hFQURFUiAgICAgICAgICAgICBSZXF1ZXN0SGVhZGVyOw0KPiA+ID4g PiA+ICsgICAgRUZJX0hUVFBfTUVTU0FHRSAgICAgICAgICAgIFJlcXVlc3RNZXNzYWdlOw0KPiA+ ID4gPiA+ICsgICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgICBaZXJvTWVtICgmUmVxdWVzdERhdGEsIHNpemVvZiAoUmVxdWVz dERhdGEpKTsNCj4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXF1ZXN0SGVhZGVyLCBzaXplb2Yg KFJlcXVlc3RIZWFkZXIpKTsNCj4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXF1ZXN0TWVzc2Fn ZSwgc2l6ZW9mIChSZXF1ZXN0TWVzc2FnZSkpOw0KPiA+ID4gPiA+ICsgICAgWmVyb01lbSAoJkNv bnRleHQtPlJlcXVlc3RUb2tlbiwgc2l6ZW9mIChDb250ZXh0LQ0KPiA+ID4gPiA+UmVxdWVzdFRv a2VuKSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgUmVxdWVzdEhlYWRlci5GaWVsZE5h bWUgPSAiSG9zdCI7DQo+ID4gPiA+ID4gKyAgICBpZiAoQ29udGV4dC0+UHJveHlTZXJ2ZXJBZGRy KSB7DQo+ID4gPiA+ID4gKyAgICAgIFJlcXVlc3RIZWFkZXIuRmllbGRWYWx1ZSA9IENvbnRleHQt PlByb3h5U2VydmVyQWRkcjsNCj4gPiA+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAg ICAgICAgQ0hBUjE2ICAqSG9zdDsNCj4gPiA+ID4gPiArICAgICAgICBVSU5UTiAgIFN0cmluZ1Np emU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgICAgIEhvc3QgPSAoQ0hBUjE2ICopQ29u dGV4dC0+U2VydmVyQWRkckFuZFByb3RvOw0KPiA+ID4gPiA+ICsgICAgICAgIHdoaWxlICgqSG9z dCAhPSBDSEFSX05VTEwgJiYgKkhvc3QgIT0gTCcvJykgew0KPiA+ID4gPiA+ICsgICAgICAgICAg SG9zdCsrOw0KPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg ICAgICAgaWYgKCpIb3N0ID09IENIQVJfTlVMTCkgew0KPiA+ID4gPiA+ICsgICAgICAgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gKyAgICAgICAgLy8gR2V0IHRo ZSBuZXh0IHNsYXNoDQo+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiArICAgICAgICBI b3N0Kys7DQo+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiArICAgICAgICAvLyBBbmQg bm93IHRoZSBob3N0IG5hbWUNCj4gPiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ICsgICAg ICAgIEhvc3QrKzsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgU3RyaW5nU2l6ZSA9 IFN0ckxlbiAoSG9zdCkgKyAxOw0KPiA+ID4gPiA+ICsgICAgICAgIFJlcXVlc3RIZWFkZXIuRmll bGRWYWx1ZSA9IEFsbG9jYXRlUG9vbCAoU3RyaW5nU2l6ZSk7DQo+ID4gPiA+ID4gKyAgICAgICAg aWYgKCFSZXF1ZXN0SGVhZGVyLkZpZWxkVmFsdWUpIHsNCj4gPiA+ID4gPiArICAgICAgICAgIHJl dHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgICAgICAgIFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoSG9zdCwgUmVx dWVzdEhlYWRlci5GaWVsZFZhbHVlLA0KPiA+ID4gU3RyaW5nU2l6ZSk7DQo+ID4gPiA+ID4gKyAg ICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgUmVxdWVzdE1lc3NhZ2UuSGVhZGVyQ291 bnQrKzsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBSZXF1ZXN0RGF0YS5NZXRob2QgPSBI dHRwTWV0aG9kR2V0Ow0KPiA+ID4gPiA+ICsgICAgUmVxdWVzdERhdGEuVXJsID0gRG93bmxvYWRV cmw7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgUmVxdWVzdE1lc3NhZ2UuRGF0YS5SZXF1 ZXN0ID0gJlJlcXVlc3REYXRhOw0KPiA+ID4gPiA+ICsgICAgUmVxdWVzdE1lc3NhZ2UuSGVhZGVy cyA9ICZSZXF1ZXN0SGVhZGVyOw0KPiA+ID4gPiA+ICsgICAgUmVxdWVzdE1lc3NhZ2UuQm9keUxl bmd0aCA9IDA7DQo+ID4gPiA+ID4gKyAgICBSZXF1ZXN0TWVzc2FnZS5Cb2R5ID0gTlVMTDsNCj4g PiA+ID4gPiArICAgIENvbnRleHQtPlJlcXVlc3RUb2tlbi5FdmVudCA9IE5VTEw7DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4gPiArICAgIC8vIENvbXBsZXRpb24gY2Fs bGJhY2sgZXZlbnQgdG8gYmUgc2V0IHdoZW4gUmVxdWVzdCBjb21wbGV0ZXMuDQo+ID4gPiA+ID4g KyAgICAvLw0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4g PiA+ID4gKyAgICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ID4gPiA+ICsgICAgICBUUExfQ0FM TEJBQ0ssDQo+ID4gPiA+ID4gKyAgICAgIFJlcXVlc3RDYWxsYmFjaywNCj4gPiA+ID4gPiArICAg ICAgQ29udGV4dCwNCj4gPiA+ID4gPiArICAgICAgJkNvbnRleHQtPlJlcXVlc3RUb2tlbi5FdmVu dA0KPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBDb250ZXh0LT5SZXF1ZXN0VG9r ZW4uU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gKyAgICBDb250ZXh0LT5SZXF1ZXN0 VG9rZW4uTWVzc2FnZSA9ICZSZXF1ZXN0TWVzc2FnZTsNCj4gPiA+ID4gPiArICAgIGdSZXF1ZXN0 Q2FsbGJhY2tDb21wbGV0ZSA9IEZBTFNFOw0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gQ29udGV4 dC0+SHR0cC0+UmVxdWVzdCAoQ29udGV4dC0+SHR0cCwgJkNvbnRleHQtDQo+ID4gPiA+ID5SZXF1 ZXN0VG9rZW4pOw0KPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ID4gPiA+ICsgICAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICAgIFN0YXR1cyA9IFdhaXRGb3JDb21wbGV0aW9uIChDb250ZXh0LA0KPiA+ ICZnUmVxdWVzdENhbGxiYWNrQ29tcGxldGUpOw0KPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAgICBDb250ZXh0LT5IdHRwLT5DYW5jZWwgKENv bnRleHQtPkh0dHAsICZDb250ZXh0LQ0KPiA+ID5SZXF1ZXN0VG9rZW4pOw0KPiA+ID4gPiA+ICsg ICAgfQ0KPiA+ID4gPiA+ICtFcnJvcjoNCj4gPiA+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05V TEwgKFJlcXVlc3RIZWFkZXIuRmllbGRWYWx1ZSk7DQo+ID4gPiA+ID4gKyAgICBpZiAoQ29udGV4 dC0+UmVxdWVzdFRva2VuLkV2ZW50KSB7DQo+ID4gPiA+ID4gKyAgICAgIGdCUy0+Q2xvc2VFdmVu dCAoQ29udGV4dC0+UmVxdWVzdFRva2VuLkV2ZW50KTsNCj4gPiA+ID4gPiArICAgICAgWmVyb01l bSAoJkNvbnRleHQtPlJlcXVlc3RUb2tlbiwgc2l6ZW9mIChDb250ZXh0LQ0KPiA+ID4gPiA+UmVx dWVzdFRva2VuKSk7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr LyoqDQo+ID4gPiA+ID4gKyAgVXBkYXRlIHRoZSBwcm9ncmVzcyBvZiBhIGZpbGUgZG93bmxvYWQN Cj4gPiA+ID4gPiArICBUaGlzIHByb2NlZHVyZSBpcyBjYWxsZWQgZWFjaCB0aW1lIGEgbmV3IEhU VFAgYm9keSBwb3J0aW9uIGlzDQo+ID4gPiByZWNlaXZlZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICAgIEhUVFAgZG93bmxvYWQgY29udGV4dC4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBEb3dubG9hZExlbiAgUG9ydGlvbiBzaXplLCBpbiBieXRl cy4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCdWZmZXIgICAgICAgVGhlIHBvaW50ZXIgdG8g dGhlIHBhcnNlZCBidWZmZXIuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgIEVG SV9TVUNDRVNTICAgICBQb3J0aW9uIHNhdmVkLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgIE90aGVy ICAgICAgICAgICBFcnJvciBzYXZpbmcgdGhlIHBvcnRpb24uDQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK1NhdmVQb3J0aW9uICgNCj4gPiA+ID4gPiArICBJTiBE T1dOTE9BRF9DT05URVhUICAgICAqQ29udGV4dCwNCj4gPiA+ID4gPiArICBJTiBVSU5UTiAgICAg ICAgICAgICAgICBEb3dubG9hZExlbiwNCj4gPiA+ID4gPiArICBJTiBDSEFSOCAgICAgICAgICAg ICAgICAqQnVmZmVyDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAg Q0hBUjE2ICAgICAgICAgICAgUHJvZ3Jlc3NbSFRUUF9QUk9HUkVTU19NRVNTQUdFX1NJWkVdOw0K PiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgIE5iT2ZLYjsNCj4gPiA+ID4gPiArICBVSU5U TiAgICAgICAgICAgICBJbmRleDsNCj4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICBMYXN0 U3RlcDsNCj4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICBTdGVwOw0KPiA+ID4gPiA+ICsg IEVGSV9TVEFUVVMgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgTGFz dFN0ZXAgPSAwOw0KPiA+ID4gPiA+ICsgIFN0ZXAgPSAwOw0KPiA+ID4gPiA+ICsgIFNoZWxsU2V0 RmlsZVBvc2l0aW9uIChtRmlsZUhhbmRsZSwgQ29udGV4dC0NCj4gPiA+TGFzdFJlcG9ydGVkTmJP ZkJ5dGVzKTsNCj4gPiA+ID4gPiArICBTdGF0dXMgPSBTaGVsbFdyaXRlRmlsZSAobUZpbGVIYW5k bGUsICZEb3dubG9hZExlbiwgQnVmZmVyKTsNCj4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICBpZiAoQ29udGV4dC0+Q29udGVudERvd25sb2FkZWQg PiAwKSB7DQo+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gKyAg ICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fQ1JMRiksIG1IdHRwSGlp SGFuZGxlDQo+ID4gPiA+ID4gKyAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ICsgICAgICAt MSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0hUVFBfRVJSX1dSSVRFKSwNCj4gPiA+ID4g PiArICAgICAgbUh0dHBIaWlIYW5kbGUsIG1Mb2NhbEZpbGVQYXRoLCBTdGF0dXMNCj4gPiA+ID4g PiArICAgICAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKENvbnRleHQtPkNv bnRlbnREb3dubG9hZGVkID09IDApIHsNCj4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRFeCAoLTEs IC0xLCBMIiVzICAgICAgIDAgS2IiLCBIVFRQX1BST0dSX0ZSQU1FKTsNCj4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIENvbnRleHQtPkNvbnRlbnREb3dubG9hZGVkICs9 IERvd25sb2FkTGVuOw0KPiA+ID4gPiA+ICsgIE5iT2ZLYiA9IENvbnRleHQtPkNvbnRlbnREb3du bG9hZGVkID4+IDEwOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBQcm9ncmVzc1swXSA9IEwn XDAnOw0KPiA+ID4gPiA+ICsgIGlmIChDb250ZXh0LT5Db250ZW50TGVuZ3RoKSB7DQo+ID4gPiA+ ID4gKyAgICBMYXN0U3RlcCAgPSAoQ29udGV4dC0+TGFzdFJlcG9ydGVkTmJPZkJ5dGVzICoNCj4g PiA+ID4gPiBIVFRQX1BST0dSRVNTX1NMSURFUl9TVEVQUykgLw0KPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgIENvbnRleHQtPkNvbnRlbnRMZW5ndGg7DQo+ID4gPiA+ID4gKyAgICBTdGVwICAg ICAgPSAoQ29udGV4dC0+Q29udGVudERvd25sb2FkZWQgKg0KPiA+ID4gPiBIVFRQX1BST0dSRVNT X1NMSURFUl9TVEVQUykNCj4gPiA+ID4gPiAvDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg Q29udGV4dC0+Q29udGVudExlbmd0aDsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIENvbnRleHQtPkxhc3RSZXBvcnRlZE5iT2ZCeXRlcyA9IENvbnRleHQtDQo+ID5D b250ZW50RG93bmxvYWRlZDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKFN0ZXAgPD0g TGFzdFN0ZXApIHsNCj4gPiA+ID4gPiArICAgIGlmICghQ29udGV4dC0+Q29udGVudExlbmd0aCkg ew0KPiA+ID4gPiA+ICsgICAgICAvLw0KPiA+ID4gPiA+ICsgICAgICAvLyBVcGRhdGUgZG93bmxv YWRlZCBzaXplLCB0aGVyZSBpcyBubyBsZW5ndGggaW5mbyBhdmFpbGFibGUuDQo+ID4gPiA+ID4g KyAgICAgIC8vDQo+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRFeCAoLTEsIC0xLCBMIiVzIiwg SFRUUF9LQik7DQo+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRFeCAoLTEsIC0xLCBMIiU3ZCBL YiIsIE5iT2ZLYik7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg ICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgU2hlbGxQcmludEV4ICgtMSwgLTEsIEwiJXMiLCBIVFRQX1BST0dSRVNTX0RFTCk7 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9IFN0ckNweVMgKFByb2dyZXNzLCBI VFRQX1BST0dSRVNTX01FU1NBR0VfU0laRSwNCj4gPiA+ID4gPiBIVFRQX1BST0dSX0ZSQU1FKTsN Cj4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg Zm9yIChJbmRleCA9IDE7IEluZGV4IDwgU3RlcDsgSW5kZXgrKykgew0KPiA+ID4gPiA+ICsgICAg UHJvZ3Jlc3NbSW5kZXhdID0gTCc9JzsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIGlmIChTdGVwKSB7DQo+ID4gPiA+ID4gKyAgICBQcm9ncmVzc1tTdGVwXSA9IEwn Pic7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBVbmljb2RlU1By aW50ICgNCj4gPiA+ID4gPiArICAgIFByb2dyZXNzICsgKHNpemVvZiAoSFRUUF9QUk9HUl9GUkFN RSkgLyBzaXplb2YgKENIQVIxNikpIC0gMSwNCj4gPiA+ID4gPiArICAgIHNpemVvZiAoUHJvZ3Jl c3MpIC0gc2l6ZW9mIChIVFRQX1BST0dSX0ZSQU1FKSwNCj4gPiA+ID4gPiArICAgIEwiICU3ZCBL YiIsDQo+ID4gPiA+ID4gKyAgICBOYk9mS2INCj4gPiA+ID4gPiArICAgICk7DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBTaGVsbFByaW50RXggKC0xLCAtMSwgTCIlcyIs IFByb2dyZXNzKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiAr ICBSZXBsYWNlIHRoZSBvcmlnaW5hbCBIb3N0IGFuZCBVUkkgd2l0aCBIb3N0IGFuZCBVUkkgcmV0 dXJuZWQgYnkNCj4gPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiArICBIVFRQIHNlcnZlciBpbiAnTG9j YXRpb24nIGhlYWRlciAocmVkaXJlY3Rpb24pLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBA cGFyYW1baW5dICAgTG9jYXRpb24gICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgJ0xvY2F0aW9u Jw0KPiA+ID4gPiA+IHN0cmluZw0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJvdmlkZWQgYnkgSFRUUCBzZXJ2ZXIuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgIENvbnRleHQgICAgICAgICAgICBBIHBvaW50ZXIgdG8gSFRUUCBkb3dubG9hZA0KPiA+ID4g PiA+IGNvbnRleHQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIERvd25sb2FkVXJsICAgICAg ICBGdWxseSBxdWFsaWZpZWQgSFRUUCBVUkwuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBy ZXR1cm4gIEVGSV9TVUNDRVNTICAgICAgICAgICAgSG9zdCBhbmQgVVJJIHdlcmUgc3VjY2Vzc2Z1 bGx5DQo+ID4gPiA+ID4gc2V0Lg0KPiA+ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICAgRXJyb3Igc2V0dGluZyBIb3N0IG9yIFVSSS4NCj4gPiA+ID4gPiArKiovDQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4g PiA+ICtTZXRIb3N0VVJJICgNCj4gPiA+ID4gPiArICBJTiBDSEFSOCAgICAgICAgICAgICpMb2Nh dGlvbiwNCj4gPiA+ID4gPiArICBJTiBET1dOTE9BRF9DT05URVhUICpDb250ZXh0LA0KPiA+ID4g PiA+ICsgIElOIENIQVIxNiAgICAgICAgICAgKkRvd25sb2FkVXJsDQo+ID4gPiA+ID4gKyAgKQ0K PiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ID4gPiA+ID4g KyAgVUlOVE4gICAgICBTdHJpbmdTaXplOw0KPiA+ID4gPiA+ICsgIENIQVI4ICAgICAgKlRtcDsN Cj4gPiA+ID4gPiArICBDSEFSMTYgICAgICpVcmw7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg IFRtcCA9IE5VTEw7DQo+ID4gPiA+ID4gKyAgVXJsID0gTlVMTDsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgU3RyaW5nU2l6ZSA9IChBc2NpaVN0clNpemUgKExvY2F0aW9uKSAqIHNpemVvZiAo Q0hBUjE2KSk7DQo+ID4gPiA+ID4gKyAgVXJsID0gQWxsb2NhdGVaZXJvUG9vbCAoU3RyaW5nU2l6 ZSk7DQo+ID4gPiA+ID4gKyAgaWYgKCFVcmwpIHsNCj4gPiA+ID4gPiArICAgIHJldHVybiBFRklf T1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsgIFN0YXR1cyA9IEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoDQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgKENPTlNUIENIQVI4ICopTG9jYXRpb24sDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgVXJsLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIFN0cmluZ1NpemUNCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgZ290byBFcnJvcjsNCj4g PiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gKyAg Ly8gSWYgYW4gSFRUUCBzZXJ2ZXIgcmVkaXJlY3QgdG8gdGhlIHNhbWUgbG9jYXRpb24gbW9yZSB0 aGFuDQo+ID4gPiA+ID4gb25jZSwNCj4gPiA+ID4gPiArICAvLyB0aGVuIHN0b3AgYXR0ZW1wdHMg YW5kIHRlbGwgaXQgaXMgbm90IHJlYWNoYWJsZS4NCj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ ICsgIGlmICghU3RyQ21wIChVcmwsIERvd25sb2FkVXJsKSkgew0KPiA+ID4gPiA+ICsgICAgU3Rh dHVzID0gRUZJX05PX01BUFBJTkc7DQo+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4g PiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKEFzY2lpU3RyU3RyIChMb2Nh dGlvbiwgIjovLyIpKSB7DQo+ID4gPiA+ID4gKyAgICBDSEFSOCAgICAgICpXYWxrZXI7DQo+ID4g PiA+ID4gKyAgICBVSU5UTiAgICAgIElkeDsNCj4gPiA+ID4gPiArICAgIFVJTlROICAgICAgU3Rl cDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBJZHggPSAwOw0KPiA+ID4gPiA+ICsgICAg V2Fsa2VyID0gTG9jYXRpb247DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgZm9yIChTdGVw ID0gMDsgU3RlcCA8IDI7IFN0ZXArKykgew0KPiA+ID4gPiA+ICsgICAgICBmb3IgKDsgKldhbGtl ciAhPSAnLycgJiYgKldhbGtlciAhPSAnXDAnOyBXYWxrZXIrKykgew0KPiA+ID4gPiA+ICsgICAg ICAgIElkeCsrOw0KPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gKyAgICAgIGlmICghU3Rl cCkgew0KPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gKyAgICAgICAgLy8gU2tpcCAi Ly8iDQo+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiArICAgICAgICBJZHggKz0gMjsN Cj4gPiA+ID4gPiArICAgICAgICBXYWxrZXIgKz0gMjsNCj4gPiA+ID4gPiArICAgICAgfQ0KPiA+ ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIFRtcCA9IEFsbG9jYXRl WmVyb1Bvb2wgKElkeCArIDEpOw0KPiA+ID4gPiA+ICsgICAgaWYgKCFUbXApIHsNCj4gPiA+ID4g PiArICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ID4gKyAgICAg IGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg ICAgQ29weU1lbSAoVG1wLCBMb2NhdGlvbiwgSWR4KTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KyAgICAvLw0KPiA+ID4gPiA+ICsgICAgLy8gTG9jYXRpb24gbm93IHBvaW50cyB0byBVUkkNCj4g PiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ID4gKyAgICBMb2NhdGlvbiArPSBJZHg7DQo+ID4gPiA+ ID4gKyAgICBTdHJpbmdTaXplID0gKElkeCArIDEpICogc2l6ZW9mIChDSEFSMTYpOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKENvbnRleHQtPlNlcnZl ckFkZHJBbmRQcm90byk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgQ29udGV4dC0+U2Vy dmVyQWRkckFuZFByb3RvID0gQWxsb2NhdGVaZXJvUG9vbCAoU3RyaW5nU2l6ZSk7DQo+ID4gPiA+ ID4gKyAgICBpZiAoIUNvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90bykgew0KPiA+ID4gPiA+ICsg ICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiArICAgICAgZ290 byBFcnJvcjsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBT dGF0dXMgPSBBc2NpaVN0clRvVW5pY29kZVN0clMgKA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAoQ09OU1QgQ0hBUjggKilUbXAsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIENvbnRleHQt PlNlcnZlckFkZHJBbmRQcm90bywNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgU3RyaW5nU2l6 ZQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ ICsgICAgfQ0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgU0hFTExf RlJFRV9OT05fTlVMTCAoQ29udGV4dC0+VVJJKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg U3RyaW5nU2l6ZSA9IEFzY2lpU3RyU2l6ZSAoTG9jYXRpb24pICogc2l6ZW9mIChDSEFSMTYpOw0K PiA+ID4gPiA+ICsgIENvbnRleHQtPlVSSSA9IEFsbG9jYXRlWmVyb1Bvb2wgKFN0cmluZ1NpemUp Ow0KPiA+ID4gPiA+ICsgIGlmICghQ29udGV4dC0+VVJJKSB7DQo+ID4gPiA+ID4gKyAgICBTdGF0 dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsg IC8vIE5vdyBtYWtlIGNoYW5nZXMgdG8gdGhlIFVSSSBwYXJ0Lg0KPiA+ID4gPiA+ICsgIC8vDQo+ ID4gPiA+ID4gKyAgU3RhdHVzID0gQXNjaWlTdHJUb1VuaWNvZGVTdHJTICgNCj4gPiA+ID4gPiAr ICAgICAgICAgICAgIChDT05TVCBDSEFSOCAqKUxvY2F0aW9uLA0KPiA+ID4gPiA+ICsgICAgICAg ICAgICAgQ29udGV4dC0+VVJJLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgU3RyaW5nU2l6ZQ0K PiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArRXJyb3I6DQo+ID4gPiA+ID4g KyAgU0hFTExfRlJFRV9OT05fTlVMTCAoVG1wKTsNCj4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05P Tl9OVUxMIChVcmwpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIE1lc3NhZ2UgcGFyc2Vy IGNhbGxiYWNrLg0KPiA+ID4gPiA+ICsgIFNhdmUgYSBwb3J0aW9uIG9mIEhUVFAgYm9keS4NCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIEV2ZW50VHlwZSAgICAgICBUeXBl IG9mIGV2ZW50LiBDYW4gYmUgZWl0aGVyDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPbkNvbXBsZXRlIG9yIE9uRGF0YS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5d ICAgRGF0YSAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHdpdGggZGF0YS4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICAgTGVuZ3RoICAgICAgICAgIERhdGEgbGVuZ3RoIG9mIHRo aXMgcG9ydGlvbi4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ29udGV4dCAgICAgICAgIEEg cG9pbnRlciB0byB0aGUgSFRUUCBkb3dubG9hZA0KPiA+ID4gY29udGV4dC4NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgIEVGSV9TVUNDRVNTICAgIFRoZSBwb3J0aW9uIHdh cyBwcm9jZXNzZWQNCj4gPiA+ID4gPiBzdWNjZXNzZnVsbHkuDQo+ID4gPiA+ID4gKyAgQHJldHVy biAgICAgIE90aGVyICAgICAgICAgIEVycm9yIHJldHVybmVkIGJ5IFNhdmVQb3J0aW9uLg0KPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtQYXJzZU1zZyAoDQo+ID4g PiA+ID4gKyAgSU4gSFRUUF9CT0RZX1BBUlNFX0VWRU5UICAgICAgRXZlbnRUeXBlLA0KPiA+ID4g PiA+ICsgIElOIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICpEYXRhLA0KPiA+ID4gPiA+ICsg IElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCwNCj4gPiA+ID4gPiArICBJTiBW T0lEICAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ICsgIGlmICghRGF0YSB8fA0KPiA+ID4gPiA+ICsgICAgICAoRXZl bnRUeXBlID09IEJvZHlQYXJzZUV2ZW50T25Db21wbGV0ZSkgfHwNCj4gPiA+ID4gPiArICAgICAg KCFDb250ZXh0KQ0KPiA+ID4gPiA+ICsgICAgICkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0 dXJuIFNhdmVQb3J0aW9uIChDb250ZXh0LCBMZW5ndGgsIERhdGEpOw0KPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0 IEhUVFAgc2VydmVyIHJlc3BvbnNlIGFuZCBjb2xsZWN0IHRoZSB3aG9sZSBib2R5IGFzIGEgZmls ZS4NCj4gPiA+ID4gPiArICBTZXQgYXBwcm9wcmlhdGUgc3RhdHVzIGluIENvbnRleHQgKFJFUV9P SywgUkVRX1JFUEVBVCwNCj4gPiBSRVFfRVJST1IpLg0KPiA+ID4gPiA+ICsgIE5vdGUgdGhhdCBl dmVuIGlmIEhUVFAgc2VydmVyIHJldHVybnMgYW4gZXJyb3IgY29kZSwgaXQgbWlnaHQNCj4gPiA+ ID4gPiBzZW5kDQo+ID4gPiA+ID4gKyAgdGhlIGJvZHkgYXMgd2VsbC4gVGhpcyBib2R5IHdpbGwg YmUgY29sbGVjdGVkIGluIHRoZSByZXN1bHRhbnQNCj4gPiA+IGZpbGUuDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250ZXh0ICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBIVFRQIGRvd25sb2FkDQo+ID4gPiBjb250ZXh0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g ICBEb3dubG9hZGVkVXJsICAgQSBwb2ludGVyIHRvIHRoZSBmdWxseSBxdWFsaWZpZWQgVVJMDQo+ ID4gPiB0bw0KPiA+ID4gPiA+IGRvd25sb2FkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBA cmV0dXJuICBFRklfU1VDQ0VTUyAgICAgICAgIFZhbGlkIGZpbGUuIEJvZHkgc3VjY2Vzc2Z1bGx5 DQo+ID4gPiBjb2xsZWN0ZWQuDQo+ID4gPiA+ID4gKyAgQHJldHVybiAgRUZJX0hUVFBfRVJST1Ig ICAgICBSZXNwb25zZSBpcyBhIHZhbGlkIEhUVFAgcmVzcG9uc2UsDQo+ID4gPiA+ID4gYnV0DQo+ ID4gPiB0aGUNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAg c2VydmVyDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0 ZWQgYW4gZXJyb3IgKEhUVFAgY29kZSA+PQ0KPiA+ID4gPiA+IDQwMCkuDQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZSBib2R5IG1heSBjb250YWluIGZ1 bGwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAgc2VydmVy IHJlc3BvbnNlLg0KPiA+ID4gPiA+ICsgIEByZXR1cm4gT3RoZXJzICAgICAgICAgICAgICAgRXJy b3IgZ2V0dGluZyB0aGUgcmVwb25zZSBmcm9tIHRoZQ0KPiA+ID4gSFRUUCBzZXJ2ZXIuDQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZSBib2R5IGlzIG5v dCBjb2xsZWN0ZWQuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4g PiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ICtHZXRSZXNwb25zZSAoDQo+ID4gPiA+ID4gKyAgSU4g RE9XTkxPQURfQ09OVEVYVCAqQ29udGV4dCwNCj4gPiA+ID4gPiArICBJTiBDSEFSMTYgICAgICAg ICAgICpEb3dubG9hZFVybA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ ICsgICAgRUZJX0hUVFBfUkVTUE9OU0VfREFUQSAgICAgIFJlc3BvbnNlRGF0YTsNCj4gPiA+ID4g PiArICAgIEVGSV9IVFRQX01FU1NBR0UgICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2U7DQo+ID4g PiA+ID4gKyAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ ICsgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICpNc2dQYXJzZXI7DQo+ID4gPiA+ID4g KyAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgSXNUcnVua2VkOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXNwb25zZURhdGEsIHNpemVvZiAoUmVzcG9uc2VE YXRhKSk7DQo+ID4gPiA+ID4gKyAgICBaZXJvTWVtICgmUmVzcG9uc2VNZXNzYWdlLCBzaXplb2Yg KFJlc3BvbnNlTWVzc2FnZSkpOw0KPiA+ID4gPiA+ICsgICAgWmVyb01lbSAoJkNvbnRleHQtPlJl c3BvbnNlVG9rZW4sIHNpemVvZiAoQ29udGV4dC0NCj4gPiA+ID4gPlJlc3BvbnNlVG9rZW4pKTsN Cj4gPiA+ID4gPiArICAgIElzVHJ1bmtlZCA9IEZBTFNFOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5ID0gQ29udGV4dC0+QnVmZmVyOw0KPiA+ID4gPiA+ ICsgICAgQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5TdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiA+ ID4gPiArICAgIENvbnRleHQtPlJlc3BvbnNlVG9rZW4uTWVzc2FnZSA9ICZSZXNwb25zZU1lc3Nh Z2U7DQo+ID4gPiA+ID4gKyAgICBDb250ZXh0LT5Db250ZW50TGVuZ3RoID0gMDsNCj4gPiA+ID4g PiArICAgIENvbnRleHQtPlN0YXR1cyA9IFJFUV9PSzsNCj4gPiA+ID4gPiArICAgIE1zZ1BhcnNl ciA9IE5VTEw7DQo+ID4gPiA+ID4gKyAgICBSZXNwb25zZURhdGEuU3RhdHVzQ29kZSA9DQo+ID4g SFRUUF9TVEFUVVNfVU5TVVBQT1JURURfU1RBVFVTOw0KPiA+ID4gPiA+ICsgICAgUmVzcG9uc2VN ZXNzYWdlLkRhdGEuUmVzcG9uc2UgPSAmUmVzcG9uc2VEYXRhOw0KPiA+ID4gPiA+ICsgICAgQ29u dGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVudCA9IE5VTEw7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsgICAgZG8gew0KPiA+ID4gPiA+ICsgICAgICBTSEVMTF9GUkVFX05PTl9OVUxMIChSZXNwb25z ZU1lc3NhZ2UuSGVhZGVycyk7DQo+ID4gPiA+ID4gKyAgICAgIFJlc3BvbnNlTWVzc2FnZS5IZWFk ZXJDb3VudCA9IDA7DQo+ID4gPiA+ID4gKyAgICAgIGdSZXNwb25zZUNhbGxiYWNrQ29tcGxldGUg PSBGQUxTRTsNCj4gPiA+ID4gPiArICAgICAgUmVzcG9uc2VNZXNzYWdlLkJvZHlMZW5ndGggPSBD b250ZXh0LT5CdWZmZXJTaXplOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgaWYgKFNo ZWxsR2V0RXhlY3V0aW9uQnJlYWtGbGFnICgpKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVz ID0gRUZJX0FCT1JURUQ7DQo+ID4gPiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gKyAg ICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIGlmICghQ29udGV4dC0+Q29udGVu dERvd25sb2FkZWQgJiYgIUNvbnRleHQtDQo+ID4gPiA+ID5SZXNwb25zZVRva2VuLkV2ZW50KSB7 DQo+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgIFJlc3BvbnNlQ2FsbGJhY2ssDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBDb250 ZXh0LA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgJkNvbnRleHQtPlJlc3BvbnNlVG9r ZW4uRXZlbnQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gKyAg ICAgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiArICAgICAgfSBlbHNl IHsNCj4gPiA+ID4gPiArICAgICAgICBSZXNwb25zZU1lc3NhZ2UuRGF0YS5SZXNwb25zZSA9IE5V TEw7DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIFN0 YXR1cyA9IENvbnRleHQtPkh0dHAtPlJlc3BvbnNlIChDb250ZXh0LT5IdHRwLCAmQ29udGV4dC0N Cj4gPiA+ID4gPiA+UmVzcG9uc2VUb2tlbik7DQo+ID4gPiA+ID4gKyAgICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ID4gPiArICAg ICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgU3RhdHVzID0gV2FpdEZvckNvbXBs ZXRpb24gKENvbnRleHQsDQo+ID4gPiAmZ1Jlc3BvbnNlQ2FsbGJhY2tDb21wbGV0ZSk7DQo+ID4g PiA+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykgJiYgUmVzcG9uc2VNZXNzYWdlLkhl YWRlckNvdW50KSB7DQo+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiArICAgICAgICBDb250ZXh0LT5IdHRwLT5DYW5j ZWwgKENvbnRleHQtPkh0dHAsDQo+ID4gPiAmQ29udGV4dC0+UmVzcG9uc2VUb2tlbik7DQo+ID4g PiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgICAgIGlmICghQ29udGV4dC0+Q29udGVudERvd25sb2FkZWQpIHsNCj4gPiA+ ID4gPiArICAgICAgICBFRklfSFRUUF9IRUFERVIgKkhlYWRlcjsNCj4gPiA+ID4gPiArICAgICAg ICBCT09MRUFOICAgICAgICAgUmVkaXJlY3Rpb247DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg ICAgICAgIFJlZGlyZWN0aW9uID0NCj4gPiA+ID4gPiArICAgICAgICAgICgoUmVzcG9uc2VEYXRh LlN0YXR1c0NvZGUgPj0NCj4gPiA+ID4gSFRUUF9TVEFUVVNfMzAwX01VTFRJUExFX0NIT0lDRVMp DQo+ID4gPiA+ID4gJiYNCj4gPiA+ID4gPiArICAgICAgICAgICAoUmVzcG9uc2VEYXRhLlN0YXR1 c0NvZGUgPD0NCj4gPiA+ID4gPiBIVFRQX1NUQVRVU18zMDdfVEVNUE9SQVJZX1JFRElSRUNUKQ0K PiA+ID4gPiA+ICsgICAgICAgICAgKSB8fA0KPiA+ID4gPiA+ICsgICAgICAgICAgKFJlc3BvbnNl RGF0YS5TdGF0dXNDb2RlID09DQo+ID4gPiA+ID4gSFRUUF9TVEFUVVNfMzA4X1BFUk1BTkVOVF9S RURJUkVDVCk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgICAgIGlmIChSZWRpcmVjdGlv bikgew0KPiA+ID4gPiA+ICsgICAgICAgICAgLy8NCj4gPiA+ID4gPiArICAgICAgICAgIC8vIE5l ZWQgdG8gcmVwZWF0IHRoZSByZXF1ZXN0IHdpdGggbmV3IExvY2F0aW9uIChzZXJ2ZXINCj4gPiA+ IHJlZGlyZWN0ZWQpLg0KPiA+ID4gPiA+ICsgICAgICAgICAgLy8NCj4gPiA+ID4gPiArICAgICAg ICAgIENvbnRleHQtPlN0YXR1cyA9IFJFUV9ORUVEX1JFUEVBVDsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgICAgICAgICBIZWFkZXIgPSBIdHRwRmluZEhlYWRlciAoDQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5IZWFkZXJDb3VudCwNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlcnMsDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbiINCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgICAgICAgIGlmIChIZWFkZXIpIHsNCj4gPiA+ ID4gPiArICAgICAgICAgICAgU3RhdHVzID0gU2V0SG9zdFVSSSAoSGVhZGVyLT5GaWVsZFZhbHVl LCBDb250ZXh0LA0KPiA+ID4gRG93bmxvYWRVcmwpOw0KPiA+ID4gPiA+ICsgICAgICAgICAgICBp ZiAoU3RhdHVzID09IEVGSV9OT19NQVBQSU5HKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAg U2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIC0xLCAtMSwgTlVM TCwgU1RSSU5HX1RPS0VODQo+ID4gPiA+ID4gKFNUUl9IVFRQX0VSUl9TVEFUVVNDT0RFKSwNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgIG1IdHRwSGlpSGFuZGxlLCBDb250ZXh0LT5TZXJ2ZXJB ZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBMIlJlY3Vyc2l2ZSBIVFRQ IHNlcnZlciByZWxvY2F0aW9uIiwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIENvbnRleHQt PlVSSQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgICAgICAg ICAgfQ0KPiA+ID4gPiA+ICsgICAgICAgICAgfSBlbHNlIHsNCj4gPiA+ID4gPiArICAgICAgICAg ICAgLy8NCj4gPiA+ID4gPiArICAgICAgICAgICAgLy8gQmFkIHJlcGx5IGZyb20gdGhlIHNlcnZl ci4gU2VydmVyIG11c3Qgc3BlY2lmeSB0aGUNCj4gPiA+IGxvY2F0aW9uLg0KPiA+ID4gPiA+ICsg ICAgICAgICAgICAvLyBJbmRpY2F0ZSB0aGF0IHJlc291cmNlIHdhcyBub3QgZm91bmQsIGFuZCBu byBib2R5DQo+ID4gPiBjb2xsZWN0ZWQuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgIC8vDQo+ID4g PiA+ID4gKyAgICAgICAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiA+ID4gKyAg ICAgICAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgICAgICAgQ29udGV4dC0+SHR0 cC0+Q2FuY2VsIChDb250ZXh0LT5IdHRwLCAmQ29udGV4dC0NCj4gPiA+ID4gPlJlc3BvbnNlVG9r ZW4pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ ICsgICAgICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4g PiArICAgICAgICAvLyBJbml0IG1lc3NhZ2UtYm9keSBwYXJzZXIgYnkgaGVhZGVyIGluZm9ybWF0 aW9uLg0KPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gKyAgICAgICAgaWYgKCFNc2dQ YXJzZXIpIHsNCj4gPiA+ID4gPiArICAgICAgICAgIFN0YXR1cyA9IEh0dHBJbml0TXNnUGFyc2Vy ICgNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkRhdGEu UmVxdWVzdC0+TWV0aG9kLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBSZXNwb25z ZURhdGEuU3RhdHVzQ29kZSwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgUmVzcG9u c2VNZXNzYWdlLkhlYWRlckNvdW50LA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBS ZXNwb25zZU1lc3NhZ2UuSGVhZGVycywNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg UGFyc2VNc2csDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIENvbnRleHQsDQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICZNc2dQYXJzZXINCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgICAgICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ID4gPiArICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gKyAgICAg ICAgICB9DQo+ID4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAg ICAgICAvLw0KPiA+ID4gPiA+ICsgICAgICAgIC8vIElmIGl0IGlzIGEgdHJ1bmtlZCBtZXNzYWdl LCByZWx5IG9uIHRoZSBwYXJzZXIuDQo+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiAr ICAgICAgICBIZWFkZXIgPSBIdHRwRmluZEhlYWRlciAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlckNvdW50LA0KPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5IZWFkZXJzLA0K PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFuc2Zlci1FbmNvZGlu ZyINCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ ICsgICAgICAgIElzVHJ1bmtlZCA9IChIZWFkZXIgJiYNCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgIUFzY2lpU3RyQ21wIChIZWFkZXItPkZpZWxkVmFsdWUsICJjaHVua2VkIikNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr ICAgICAgICBIdHRwR2V0RW50aXR5TGVuZ3RoIChNc2dQYXJzZXIsICZDb250ZXh0LT5Db250ZW50 TGVuZ3RoKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgaWYgKFJlc3BvbnNlRGF0 YS5TdGF0dXNDb2RlID49DQo+ID4gSFRUUF9TVEFUVVNfNDAwX0JBRF9SRVFVRVNUDQo+ID4gPiA+ ICYmDQo+ID4gPiA+ID4gKyAgICAgICAgICAgIChSZXNwb25zZURhdGEuU3RhdHVzQ29kZSAhPQ0K PiA+ID4gPiA+IEhUVFBfU1RBVFVTXzMwOF9QRVJNQU5FTlRfUkVESVJFQ1QpDQo+ID4gPiA+ID4g KyAgICAgICAgICAgKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIC8vDQo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgIC8vIFNlcnZlciByZXBvcnRlZCBhbiBlcnJvciB2aWEgUmVzcG9uc2Ug Y29kZS4NCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgLy8gQ29sbGVjdCB0aGUgYm9keSBpZiBh bnkuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIC8vDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIGlmIChDb250ZXh0LT5TdGF0dXMgIT0gUkVRX0VSUk9SKSB7DQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgQ29udGV4dC0+U3RhdHVzID0gUkVRX0VSUk9SOw0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+ID4gKFNUUl9IVFRQX0VSUl9TVEFU VVNDT0RFKSwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIG1IdHRwSGlpSGFuZGxlLCBD b250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICBFcnJTdGF0dXNEZXNjW1Jlc3BvbnNlRGF0YS5TdGF0dXNDb2RlIC0NCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUF9TVEFUVVNfNDAwX0JBRF9SRVFVRVNU XSwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIENvbnRleHQtPlVSSQ0KPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIH0NCj4g PiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgICAgIC8vIERvIE5PVCB0cnkgdG8gcGFyc2UgYW4gZW1wdHkgYm9keS4NCj4gPiA+ ID4gPiArICAgICAgaWYgKFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoIHx8IElzVHJ1bmtlZCkg ew0KPiA+ID4gPiA+ICsgICAgICAgIFN0YXR1cyA9IEh0dHBQYXJzZU1lc3NhZ2VCb2R5ICgNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgIE1zZ1BhcnNlciwNCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoLA0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkJvZHkNCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICk7DQo+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiArICAgIH0gd2hpbGUg KCFIdHRwSXNNZXNzYWdlQ29tcGxldGUgKE1zZ1BhcnNlcikgJiYNCj4gPiA+ID4gPiArICAgICAg ICAgICAgICFFRklfRVJST1IgKFN0YXR1cykgJiYNCj4gPiA+ID4gPiArICAgICAgICAgICAgIFJl c3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICApOw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKE1zZ1BhcnNlcik7 DQo+ID4gPiA+ID4gKyAgICBpZiAoQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVudCkgew0KPiA+ ID4gPiA+ICsgICAgICBnQlMtPkNsb3NlRXZlbnQgKENvbnRleHQtPlJlc3BvbnNlVG9rZW4uRXZl bnQpOw0KPiA+ID4gPiA+ICsgICAgICBaZXJvTWVtICgmQ29udGV4dC0+UmVzcG9uc2VUb2tlbiwg c2l6ZW9mIChDb250ZXh0LQ0KPiA+ID4gPiA+UmVzcG9uc2VUb2tlbikpOw0KPiA+ID4gPiA+ICsg ICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIFdvcmtlciBm dW5jdGlvbiB0aGF0IGRvd25sb2FkIHRoZSBkYXRhIG9mIGEgZmlsZSBmcm9tIGEgSFRUUA0KPiA+ ID4gPiA+IHNlcnZlcg0KPiA+ID4gPiBnaXZlbg0KPiA+ID4gPiA+ICsgIHRoZSBwYXRoIG9mIHRo ZSBmaWxlIGFuZCBpdHMgc2l6ZS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgIENvbnRleHQgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgSFRUUCBkb3dubG9hZA0KPiA+ ID4gY29udGV4dC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBmaWxlIHdhcyBkb3dubG9hZGVkLg0KPiA+ID4gPiA+ICsgIEByZXR2 YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBBIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4NCj4g PiA+ID4gPiArICAjcmV0dmFsICBFRklfSFRUUF9FUlJPUiAgICAgICAgVGhlIHNlcnZlciByZXR1 cm5lZCBhIHZhbGlkIEhUVFANCj4gPiA+IGVycm9yLg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSBtTG9jYWxGaWxlUGF0aCBmaWxlDQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBlcnJvciBib2R5 Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgIE90aGVycyAgICAgICAgICAgICAgICBUaGUgZG93bmxv YWRpbmcgb2YgdGhlIGZpbGUgZnJvbQ0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gc2VydmVyDQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZC4NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiArRUZJX1NU QVRVUw0KPiA+ID4gPiA+ICtEb3dubG9hZEZpbGUgKA0KPiA+ID4gPiA+ICsgIElOICAgRE9XTkxP QURfQ09OVEVYVCAgICpDb250ZXh0DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiArICBDSEFS MTYgICAgICAgICAgICAgICAgKkRvd25sb2FkVXJsOw0KPiA+ID4gPiA+ICsgIFVJTlROICAgICAg ICAgICAgICAgICBVcmxTaXplOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBBU1NFUlQgKENv bnRleHQpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBEb3dubG9hZFVybCA9IE5VTEw7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIENvbnRleHQtPkJ1ZmZlciA9IEFsbG9jYXRlUG9vbCAo Q29udGV4dC0+QnVmZmVyU2l6ZSk7DQo+ID4gPiA+ID4gKyAgaWYgKCFDb250ZXh0LT5CdWZmZXIp IHsNCj4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4g PiA+ICsgICAgZ290byBPTl9FWElUOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgLy8NCj4gPiA+ID4gPiArICAvLyBPUEVOIEZJTEUNCj4gPiA+ID4gPiArICAvLw0K PiA+ID4gPiA+ICsgIGlmICghRUZJX0VSUk9SIChTaGVsbEZpbGVFeGlzdHMgKG1Mb2NhbEZpbGVQ YXRoKSkpIHsNCj4gPiA+ID4gPiArICAgIFNoZWxsRGVsZXRlRmlsZUJ5TmFtZSAobUxvY2FsRmls ZVBhdGgpOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgU3RhdHVz ID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICBtTG9jYWxG aWxlUGF0aCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICZtRmlsZUhhbmRsZSwNCj4gPiA+ID4g PiArICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfQ1JFQVRFIHwNCj4gPiA+ID4gPiArICAgICAg ICAgICAgIEVGSV9GSUxFX01PREVfV1JJVEUgIHwNCj4gPiA+ID4gPiArICAgICAgICAgICAgIEVG SV9GSUxFX01PREVfUkVBRCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgIDApOw0KPiA+ID4gPiA+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRI aWlFeCAoDQo+ID4gPiA+ID4gKyAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJf R0VOX0ZJTEVfT1BFTl9GQUlMKSwNCj4gPiA+ID4gPiArICAgICAgbUh0dHBIaWlIYW5kbGUsIEhU VFBfQVBQX05BTUUsIG1Mb2NhbEZpbGVQYXRoDQo+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ ID4gKyAgICBnb3RvIE9OX0VYSVQ7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBkbyB7DQo+ID4gPiA+ID4gKyAgICBTSEVMTF9GUkVFX05PTl9OVUxMIChEb3dubG9h ZFVybCk7DQo+ID4gPiA+ID4gKyAgICBVcmxTaXplID0gMDsNCj4gPiA+ID4gPiArICAgIERvd25s b2FkVXJsID0gU3RybkNhdEdyb3cgKA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICZE b3dubG9hZFVybCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAmVXJsU2l6ZSwNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICBDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8s DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgU3RyTGVuIChDb250ZXh0LT5TZXJ2ZXJB ZGRyQW5kUHJvdG8pDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4g PiArICAgIGlmIChDb250ZXh0LT5VUklbMF0gIT0gTCcvJykgew0KPiA+ID4gPiA+ICsgICAgICBE b3dubG9hZFVybCA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ID4gPiArICAgICAgICAgICZEb3dubG9h ZFVybCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICZVcmxTaXplLA0KPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgTCIvIiwNCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgIFN0ckxlbiAoQ29udGV4dC0+U2VydmVyQWRkckFuZFByb3RvKQ0KPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKyAgICBEb3dubG9hZFVybCA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAmRG93bmxvYWRVcmwsDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgJlVybFNpemUsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQ29udGV4 dC0+VVJJLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIFN0ckxlbiAoQ29udGV4dC0+ VVJJKSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4g PiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0RPV05M T0FESU5HKSwNCj4gPiA+ID4gPiArICAgICAgbUh0dHBIaWlIYW5kbGUsIERvd25sb2FkVXJsKTsN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBTZW5kUmVxdWVzdCAoQ29udGV4 dCwgRG93bmxvYWRVcmwpOw0KPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ID4gPiA+ICsgICAgICBnb3RvIE9OX0VYSVQ7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gR2V0UmVzcG9uc2UgKENvbnRleHQsIERv d25sb2FkVXJsKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICAgIGdvdG8gT05fRVhJVDsNCj4gPiA+ID4gPiArICAg IH0NCj4gPiA+ID4gPiArICB9IHdoaWxlIChDb250ZXh0LT5TdGF0dXMgPT0gUkVRX05FRURfUkVQ RUFUKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKENvbnRleHQtPlN0YXR1cyA9PSBS RVFfRVJST1IpIHsNCj4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9IVFRQX0VSUk9SOw0KPiA+ ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK09OX0VYSVQ6DQo+ID4gPiA+ID4g KyAgLy8NCj4gPiA+ID4gPiArICAvLyBDTE9TRSBGSUxFDQo+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ ID4gPiArICBpZiAobUZpbGVIYW5kbGUpIHsNCj4gPiA+ID4gPiArICAgIFNoZWxsQ2xvc2VGaWxl ICgmbUZpbGVIYW5kbGUpOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KyAgU0hFTExfRlJFRV9OT05fTlVMTCAoRG93bmxvYWRVcmwpOw0KPiA+ID4gPiA+ICsgIFNIRUxM X0ZSRUVfTk9OX05VTEwgKENvbnRleHQtPkJ1ZmZlcik7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g Ky8qKg0KPiA+ID4gPiA+ICsgIFJldHJpdmUgSElJIHBhY2thZ2UgbGlzdCBmcm9tIEltYWdlSGFu ZGxlIGFuZCBwdWJsaXNoIHRvIEhJSQ0KPiA+ID4gZGF0YWJhc2UuDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUg b2YgdGhlIHByb2Nlc3MuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR1cm4gSElJIGhh bmRsZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0VGSV9ISUlfSEFORExFDQo+ID4gPiA+ ID4gK0luaXRpYWxpemVIaWlQYWNrYWdlICgNCj4gPiA+ID4gPiArICBFRklfSEFORExFICAgICAg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4g PiA+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ ICsgIEVGSV9ISUlfUEFDS0FHRV9MSVNUX0hFQURFUiAqUGFja2FnZUxpc3Q7DQo+ID4gPiA+ID4g KyAgRUZJX0hJSV9IQU5ETEUgICAgICAgICAgICAgIEhpaUhhbmRsZTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiArICAvLyBSZXRyaWV2ZSBISUkgcGFja2FnZSBsaXN0 IGZyb20gSW1hZ2VIYW5kbGUNCj4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9 IGdCUy0+T3BlblByb3RvY29sICgNCj4gPiA+ID4gPiArICAgICAgICAgICAgIEltYWdlSGFuZGxl LA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgJmdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3Vp ZCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgIChWT0lEICoqKSZQYWNrYWdlTGlzdCwNCj4gPiA+ ID4gPiArICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAg TlVMTCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9U T0NPTA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICBBU1NFUlRfRUZJ X0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiArICAvLyBQdWJsaXNoIEhJSSBwYWNrYWdlIGxp c3QgdG8gSElJIERhdGFiYXNlLg0KPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gKyAgU3RhdHVz ID0gZ0hpaURhdGFiYXNlLT5OZXdQYWNrYWdlTGlzdCAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICBnSGlpRGF0YWJhc2UsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICBQYWNrYWdlTGlzdCwNCj4g PiA+ID4gPiArICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAmSGlp SGFuZGxlDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ICsgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ ICsgIHJldHVybiBIaWlIYW5kbGU7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0 DQo+IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaA0K PiA+ID4gPiA+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0 dHAuaA0KPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gaW5kZXggMDAw MDAwMDAwMDAwLi5kYWViZTljZjE3MzENCj4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ ID4gKysrIGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAu aA0KPiA+ID4gPiA+IEBAIC0wLDAgKzEsODggQEANCj4gPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4g PiA+ID4gKyAgSGVhZGVyIGZpbGUgZm9yICdodHRwJyBjb21tYW5kIGZ1bmN0aW9ucy4NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxNywgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gPiByZXNlcnZlZC4NCj4gPiA+IDxCUj4NCj4g PiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMCwgQnJvYWRjb20uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArKiovDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsjaWZuZGVmIF9IVFRQX0hfDQo+ID4gPiA+ ID4gKyNkZWZpbmUgX0hUVFBfSF8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyNpbmNsdWRlIDxV ZWZpLmg+DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGli Lmg+DQo+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiA+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvSGlpTGliLmg+DQo+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0h0dHBMaWIu aD4NCj4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0K PiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9OZXRMaWIuaD4NCj4gPiA+ID4gPiArI2luY2x1 ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvU2hl bGxMaWIuaD4NCj4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliLmg+DQo+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlIaWlTZXJ2aWNlc0xp Yi5oPg0KPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPiA+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL0hpaVBhY2thZ2VMaXN0Lmg+DQo+ ID4gPiA+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9IdHRwVXRpbGl0aWVzLmg+DQo+ID4gPiA+ID4g KyNpbmNsdWRlIDxQcm90b2NvbC9TZXJ2aWNlQmluZGluZy5oPg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArI2RlZmluZSBIVFRQX0FQUF9OQU1FIEwiaHR0cCINCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gK2V4dGVybiBFRklfSElJX0hBTkRMRSBtSHR0cEhpaUhhbmRsZTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gK3R5cGVkZWYgZW51bSB7DQo+ID4gPiA+ID4gKyAgUkVRX09LID0gMCwNCj4gPiA+ ID4gPiArICBSRVFfTkVFRF9SRVBFQVQgPSAxLA0KPiA+ID4gPiA+ICsgIFJFUV9FUlJPUiA9IDIN Cj4gPiA+ID4gPiArfSBSRVFfU1RBVFVTOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICBDb250ZW50RG93 bmxvYWRlZDsNCj4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgQ29udGVudExlbmd0 aDsNCj4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgTGFzdFJlcG9ydGVkTmJPZkJ5 dGVzOw0KPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICBCdWZmZXJTaXplOw0KPiA+ ID4gPiA+ICsgIFJFUV9TVEFUVVMgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiA+ID4gKyAgVUlO VDggICAgICAgICAgICAgICAgICpCdWZmZXI7DQo+ID4gPiA+ID4gKyAgQ0hBUjggICAgICAgICAg ICAgICAgICpQcm94eVNlcnZlckFkZHI7DQo+ID4gPiA+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAg ICAgICpTZXJ2ZXJBZGRyQW5kUHJvdG87DQo+ID4gPiA+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAg ICAgICpVUkk7DQo+ID4gPiA+ID4gKyAgRUZJX0hUVFBfVE9LRU4gICAgICAgIFJlc3BvbnNlVG9r ZW47DQo+ID4gPiA+ID4gKyAgRUZJX0hUVFBfVE9LRU4gICAgICAgIFJlcXVlc3RUb2tlbjsNCj4g PiA+ID4gPiArICBFRklfSFRUUF9QUk9UT0NPTCAgICAgKkh0dHA7DQo+ID4gPiA+ID4gK30gRE9X TkxPQURfQ09OVEVYVDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsg IEZ1bmN0aW9uIGZvciAnaHR0cCcgY29tbWFuZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgICAgIFRoZSBpbWFnZSBoYW5kbGUuDQo+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgU3lzdGVtVGFibGUgICAgIFRoZSBzeXN0ZW0gdGFibGUuDQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgU0hFTExfU1VDQ0VTUyAgICAgICAgICAgIENvbW1h bmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiArICBAcmV0dmFsIFNIRUxMX0lO VkFMSURfUEFSQU1FVEVSICBDb21tYW5kIHVzYWdlIGVycm9yLg0KPiA+ID4gPiA+ICsgIEByZXR2 YWwgU0hFTExfQUJPUlRFRCAgICAgICAgICAgIFRoZSB1c2VyIGFib3J0cyB0aGUgb3BlcmF0aW9u Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgdmFsdWUgICAgICAgICAgICAgICAgICAgIFVua25vd24g ZXJyb3IuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtTSEVMTF9TVEFUVVMNCj4gPiA+ID4g PiArUnVuSHR0cCAoDQo+ID4gPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5k bGUsDQo+ID4gPiA+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4g PiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIFJl dHJpdmUgSElJIHBhY2thZ2UgbGlzdCBmcm9tIEltYWdlSGFuZGxlIGFuZCBwdWJsaXNoIHRvIEhJ SQ0KPiA+ID4gZGF0YWJhc2UuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbSBJbWFn ZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR1cm4gSElJIGhhbmRsZS4NCj4gPiA+ID4gPiArKiov DQo+ID4gPiA+ID4gK0VGSV9ISUlfSEFORExFDQo+ID4gPiA+ID4gK0luaXRpYWxpemVIaWlQYWNr YWdlICgNCj4gPiA+ID4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5k bGUNCj4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ICsjZW5kaWYgLy8gX0hUVFBfSF8NCj4gPiA+ ID4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cC51bmkNCj4gPiA+ID4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0 dHBEeW5hbWljQ29tbWFuZC9IdHRwLnVuaQ0KPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYjYyZmZhY2I4MTINCj4gPiA+ID4gPiAt LS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0 cER5bmFtaWNDb21tYW5kL0h0dHAudW5pDQo+ID4gPiA+ID4gQEAgLTAsMCArMSw5NSBAQA0KPiA+ ID4gPiA+ICsvLyAvKioNCj4gPiA+ID4gPiArLy8NCj4gPiA+ID4gPiArLy8gKEMpIENvcHlyaWdo dCAyMDE1LTIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQNCj4gPiA+ ID4gTFA8QlI+DQo+ID4gPiA+ID4gKy8vIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ID4gcmVzZXJ2ZWQuDQo+ID4gPiA8QlI+ DQo+ID4gPiA+ID4gKy8vIENvcHlyaWdodCAoYykgMjAyMCwgQnJvYWRjb20uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ICsvLyBNb2R1bGUgTmFt ZToNCj4gPiA+ID4gPiArLy8NCj4gPiA+ID4gPiArLy8gSHR0cC51bmkNCj4gPiA+ID4gPiArLy8N Cj4gPiA+ID4gPiArLy8gQWJzdHJhY3Q6DQo+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4gKy8vIFN0 cmluZyBkZWZpbml0aW9ucyBmb3IgVUVGSSBTaGVsbCBIVFRQIGNvbW1hbmQNCj4gPiA+ID4gPiAr Ly8NCj4gPiA+ID4gPiArLy8NCj4gPiA+ID4gPiArLy8gKiovDQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsvPSMNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyNsYW5nZGVmICAgZW4tVVMgImVuZ2xp c2giDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9HRU5fVE9PX01BTlkgICAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOg0KPiBUb28NCj4gPiA+ID4gbWFueQ0KPiA+ ID4gPiA+IGFyZ3VtZW50cy4gVHJ5IGhlbHAgaHR0cC5cclxuIg0KPiA+ID4gPiA+ICsjc3RyaW5n IFNUUl9HRU5fVE9PX0ZFVyAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBUb28N Cj4gPiBmZXcNCj4gPiA+ID4gPiBhcmd1bWVudHMuIFRyeSBoZWxwIGh0dHAuXHJcbiINCj4gPiA+ ID4gPiArI3N0cmluZyBTVFJfR0VOX1BBUkFNX0lOViAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg IiVIJXMlTjoNCj4gPiBJbnZhbGlkDQo+ID4gPiA+ID4gYXJndW1lbnQgLSAnJUglcyVOJy4gVHJ5 IGhlbHAgaHR0cC5cclxuIg0KPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAgICAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOg0KPiA+IFVua25vd24NCj4gPiA+ID4gZmxh Zw0KPiA+ID4gPiA+IC0gJyVIJXMlTicuIFRyeSBoZWxwIGh0dHAuXHJcbiINCj4gPiA+ID4gPiAr I3N0cmluZyBTVFJfR0VOX0ZJTEVfT1BFTl9GQUlMICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMl TjoNCj4gPiBDYW5ub3QNCj4gPiA+ID4gPiBvcGVuIGZpbGUgLSAnJUglcyVOJ1xyXG4iDQo+ID4g PiA+ID4gKyNzdHJpbmcgU1RSX0dFTl9DUkxGICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVT ICJcclxuIg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfTk9f TklDICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIk5vIG5ldHdvcmsNCj4gPiA+ID4gaW50ZXJmYWNl DQo+ID4gPiA+ID4gY2FyZCBmb3VuZC5cclxuIg0KPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQ X0VSUl9OSUNfTkFNRSAgICAgICNsYW5ndWFnZSBlbi1VUyAiRmFpbGVkIHRvDQo+IGdldA0KPiA+ IHRoZQ0KPiA+ID4gPiA+IG5hbWUgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgbnVtYmVy ICVkIC0gJXJcclxuIg0KPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0VSUl9PUEVOX1BST1RP Q09MICNsYW5ndWFnZSBlbi1VUyAiVW5hYmxlDQo+ID4gdG8NCj4gPiA+ID4gb3Blbg0KPiA+ID4g PiA+IEhUVFAgcHJvdG9jb2wgb24gJyVIJXMlTicgLSAlclxyXG4iDQo+ID4gPiA+ID4gKyNzdHJp bmcgU1RSX0hUVFBfRVJSX0NPTkZJR1VSRSAgICAgI2xhbmd1YWdlIGVuLVVTICJVbmFibGUgdG8N Cj4gPiA+ID4gY29uZmlndXJlDQo+ID4gPiA+ID4gSFRUUCBwcm90b2NvbCBvbiAnJUglcyVOJyAt ICVyXHJcbiINCj4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfRE9XTkxPQUQgICAgICAj bGFuZ3VhZ2UgZW4tVVMgIlVuYWJsZSB0bw0KPiA+ID4gPiA+IGRvd25sb2FkIHRoZSBmaWxlICcl SCVzJU4nIG9uICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQ X0VSUl9XUklURSAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiVW5hYmxlIHRvDQo+IHdyaXRlDQo+ ID4gPiBpbnRvDQo+ID4gPiA+IGZpbGUNCj4gPiA+ID4gPiAnJUglcyVOJyAtICVyXHJcbiINCj4g PiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfTklDX05PVF9GT1VORCAjbGFuZ3VhZ2UgZW4t VVMNCj4gIk5ldHdvcmsNCj4gPiA+ID4gPiBJbnRlcmZhY2UgQ2FyZCAnJUglcyVOJyBub3QgZm91 bmQuXHJcbiINCj4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfU1RBVFVTQ09ERSAgICAj bGFuZ3VhZ2UgZW4tVVMNCj4gIlxyJyVIJXMlTicNCj4gPiA+ID4gcmVwb3J0cw0KPiA+ID4gPiA+ ICclcycgZm9yICclSCVzJU4nIFxyXG4iDQo+ID4gPiA+ID4gKyNzdHJpbmcgU1RSX0hUVFBfRE9X TkxPQURJTkcgICAgICAgI2xhbmd1YWdlIGVuLVVTDQo+ICJEb3dubG9hZGluZw0KPiA+ID4gPiA+ ICclSCVzJU4nXHJcbiINCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyNzdHJpbmcgU1RSX0dFVF9I RUxQX0hUVFAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIiDQo+ID4gPiA+ID4gKyIuVEggaHR0 cCAwICJEb3dubG9hZCBhIGZpbGUgZnJvbSBIVFRQIHNlcnZlci4iXHJcbiINCj4gPiA+ID4gPiAr Ii5TSCBOQU1FXHJcbiINCj4gPiA+ID4gPiArIkRvd25sb2FkIGEgZmlsZSBmcm9tIEhUVFAgc2Vy dmVyLlxyXG4iDQo+ID4gPiA+ID4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiA+ID4gPiA+ICsiIFxy XG4iDQo+ID4gPiA+ID4gKyJIVFRQIFstaSBpbnRlcmZhY2VdIFstbCA8cG9ydD5dIFstdCA8dGlt ZW91dD5dXHJcbiINCj4gPiA+ID4gPiArIiAgICAgIGhvc3RbOnBvcnRdIGh0dHBfdXJpIFtsb2Nh bGZpbGVwYXRoXVxyXG4iDQo+ID4gPiA+ID4gKyIuU0ggT1BUSU9OU1xyXG4iDQo+ID4gPiA+ID4g KyIgXHJcbiINCj4gPiA+ID4gPiArIiAgLWkgaW50ZXJmYWNlICAgICAtIFNwZWNpZmllcyBhbiBh ZGFwdGVyIG5hbWUsIGkuZS4sIGV0aDAuXHJcbiINCj4gPiA+ID4gPiArIiAgLWwgcG9ydCAgICAg ICAgICAtIFNwZWNpZmllcyB0aGUgbG9jYWwgcG9ydCBudW1iZXIuIERlZmF1bHQNCj4gPiA+ID4g PiB2YWx1ZQ0KPiA+ID4gaXMgMFxyXG4iDQo+ID4gPiA+ID4gKyIgICAgICAgICAgICAgICAgICAg ICBhbmQgdGhlIHBvcnQgbnVtYmVyIGlzIGF1dG9tYXRpY2FsbHkNCj4gPiA+IGFzc2lnbmVkLlxy XG4iDQo+ID4gPiA+ID4gKyIgIC10IDx0aW1lb3V0PiAgICAgLSBUaGUgbnVtYmVyIG9mIHNlY29u ZHMgdG8gd2FpdCBmb3IgYSByZXNwb25zZQ0KPiA+ID4gPiBhZnRlclxyXG4iDQo+ID4gPiA+ID4g KyIgICAgICAgICAgICAgICAgICAgICBzZW5kaW5nIGEgcmVxdWVzdCBwYWNrZXQuIERlZmF1bHQg dmFsdWUgaXMgMA0KPiA+ID4gd2hpY2ggaXMNCj4gPiA+ID4gPiAnYXV0b21hdGljJy5cclxuIg0K PiA+ID4gPiA+ICsiICBob3N0ICAgICAgICAgICAgIC0gU3BlY2lmeSBIVFRQIFNlcnZlciBJUHY0 IGFkZHJlc3MuXHJcbg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGVp dGhlciBhZGRyZXNzIG9yICdodHRwIChvcg0KPiA+ID4gaHR0cHMpOi8vYWRkcidcclxuDQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBDYW4gdXNlIGFkZHJlc3NlcyByZXNvbHZhYmxl IGJ5IEROUyBhcyB3ZWxsLg0KPiA+ID4gXHJcbg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgUG9ydCBjYW4gYmUgc3BlY2lmaWVkIGFmdGVyICc6JyBpZiBuZWVkZWQuDQo+ID4gPiA+ ID4gXHJcbg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCBwb3J0 IDgwIGlzIHVzZWQuXHJcbiINCj4gPiA+ID4gPiArIiAgaHR0cF91cmkgICAgICAgICAtIEhUVFAg c2VydmVyIFVSSSB0byBkb3dubG9hZCB0aGUgZmlsZS5cclxuIg0KPiA+ID4gPiA+ICsiICBsb2Nh bGZpbGVwYXRoICAgIC0gTG9jYWwgZGVzdGluYXRpb24gZmlsZSBwYXRoLlxyXG4iDQo+ID4gPiA+ ID4gKyIuU0ggREVTQ1JJUFRJT05cclxuIg0KPiA+ID4gPiA+ICsiIFxyXG4iDQo+ID4gPiA+ID4g KyJOT1RFUzpcclxuIg0KPiA+ID4gPiA+ICsiICAxLiBUaGUgSFRUUCBjb21tYW5kIGFsbG93cyBn ZXRpbmcgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGl0cw0KPiA+ID4gPiA+ICdodHRwX3VyaSdc clxuIg0KPiA+ID4gPiA+ICsiICAgICBwYXRoIGZyb20gdGhlIEhUVFAgc2VydmVyIHNwZWNpZmll ZCBieSBpdHMgJ2hvc3QnIElQdjQNCj4gPiA+ID4gPiBhZGRyZXNzLg0KPiA+ID4gSWYNCj4gPiA+ ID4gdGhlXHJcbiINCj4gPiA+ID4gPiArIiAgICAgb3B0aW9uYWwgJ2xvY2FsZmlsZXBhdGgnIHBh cmFtZXRlciBpcyBwcm92aWRlZCwgdGhlDQo+ID4gPiA+ID4gZG93bmxvYWRlZA0KPiA+ID4gZmls ZQ0KPiA+ID4gPiBpc1xyXG4iDQo+ID4gPiA+ID4gKyIgICAgIHN0b3JlZCBsb2NhbGx5IHVzaW5n IHRoZSBwcm92aWRlZCBmaWxlIHBhdGguIElmIHRoZSBsb2NhbA0KPiA+ID4gPiA+IGZpbGUNCj4g PiA+IHBhdGggaXNcclxuIg0KPiA+ID4gPiA+ICsiICAgICBub3Qgc3BlY2lmaWVkLCB0aGUgZmls ZSBpcyBzdG9yZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5DQo+ID4gPiB1c2luZyB0aGUNCj4g PiA+ID4gZmlsZVxyXG4iDQo+ID4gPiA+ID4gKyIgICAgIHNlcnZlcidzIG5hbWUuXHJcbiINCj4g PiA+ID4gPiArIiAgMi4gQmVmb3JlIHVzaW5nIHRoZSBIVFRQIGNvbW1hbmQsIHRoZSBuZXR3b3Jr IGludGVyZmFjZQ0KPiBpbnRlbmRlZA0KPiA+ID4gdG8NCj4gPiA+ID4gPiBiZVxyXG4iDQo+ID4g PiA+ID4gKyIgICAgIHVzZWQgdG8gcmV0cmlldmUgdGhlIGZpbGUgbXVzdCBiZSBjb25maWd1cmVk LiBUaGlzDQo+ID4gPiBjb25maWd1cmF0aW9uIG1heQ0KPiA+ID4gPiA+IGJlXHJcbiINCj4gPiA+ ID4gPiArIiAgICAgZG9uZSBieSBtZWFucyBvZiB0aGUgJ2lmY29uZmlnJyBjb21tYW5kLlxyXG4i DQo+ID4gPiA+ID4gKyIgIDMuIElmIGEgbmV0d29yayBpbnRlcmZhY2UgaXMgZGVmaW5lZCB3aXRo IHRoZSAnLWknIG9wdGlvbiB0aGVuDQo+ID4gPiBvbmx5DQo+ID4gPiA+IHRoaXNcclxuIg0KPiA+ ID4gPiA+ICsiICAgICBpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSByZW1v dGUgZmlsZS4NCj4gPiA+ID4gPiBPdGhlcndpc2UsDQo+ID4gPiBhbGwNCj4gPiA+ID4gPiBuZXR3 b3JrXHJcbiINCj4gPiA+ID4gPiArIiAgICAgaW50ZXJmYWNlcyBhcmUgdHJpZWQgaW4gdGhlIG9y ZGVyIHRoZXkgaGF2ZSBiZWVuIGRpc2NvdmVyZWQNCj4gPiA+IGR1cmluZw0KPiA+ID4gPiA+IHRo ZVxyXG4iDQo+ID4gPiA+ID4gKyIgICAgIERYRSBwaGFzZS5cclxuIg0KPiA+ID4gPiA+ICsiLlNI IEVYQU1QTEVTXHJcbiINCj4gPiA+ID4gPiArIiBcclxuIg0KPiA+ID4gPiA+ICsiRVhBTVBMRVM6 XHJcbiINCj4gPiA+ID4gPiArIiAgKiBUbyBnZXQgdGhlIGZpbGUgImRpcjEvZmlsZTEuZGF0IiBm cm9tIHRoZSBIVFRQIHNlcnZlcg0KPiA+ID4gMTkyLjE2OC4xLjEsIHBvcnQNCj4gPiA+ID4gPiA4 MDgwLCBhbmRcclxuIg0KPiA+ID4gPiA+ICsiICAgIHN0b3JlIGl0IGFzIGZpbGUyLmRhdCBpbiB0 aGUgY3VycmVudCBkaXJlY3RvcnkgOlxyXG4iDQo+ID4gPiA+ID4gKyIgICAgZnMwOlw+IGh0dHAg MTkyLjE2OC4xLjE6ODA4MCBkaXIxL2ZpbGUxLmRhdCBmaWxlMi5kYXRcclxuIg0KPiA+ID4gPiA+ ICsiICAqIFRvIGdldCB0aGUgZmlsZSAvaW1hZ2UuYmluIHZpYSBIVFRQUyBmcm9tIHNlcnZlciAx OTIuMTY4LjEuMQ0KPiA+ID4gPiA+IGF0DQo+ID4gPiBwb3J0IDQ0Mw0KPiA+ID4gPiA+IFxyXG4i DQo+ID4gPiA+ID4gKyIgICAgKGRlZmF1bHQgSFRUUFMgcG9ydCksIGFuZCBzdG9yZSBpdCBpbiB0 aGUgY3VycmVudCBkaXJlY3Rvcnk6DQo+ID4gPiBcclxuIg0KPiA+ID4gPiA+ICsiICAgIGZzMDpc PiBodHRwIGh0dHBzOi8vMTkyLjE2OC4xLjEgaW1hZ2UuYmluXHJcbiINCj4gPiA+ID4gPiArIi5T SCBSRVRVUk5WQUxVRVNcclxuIg0KPiA+ID4gPiA+ICsiIFxyXG4iDQo+ID4gPiA+ID4gKyJSRVRV Uk4gVkFMVUVTOlxyXG4iDQo+ID4gPiA+ID4gKyIgIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAg VGhlIGFjdGlvbiB3YXMgY29tcGxldGVkIGFzDQo+ID4gPiByZXF1ZXN0ZWQuXHJcbiINCj4gPiA+ ID4gPiArIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBPbmUgb2YgdGhlIHBhc3NlZC1pbiBw YXJhbWV0ZXJzDQo+IHdhcw0KPiA+ID4gPiA+IGluY29ycmVjdGx5XHJcbiINCj4gPiA+ID4gPiAr IiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgb3IgaXRzIHZhbHVlIHdhcyBv dXQgb2YNCj4gPiA+IGJvdW5kcy5cclxuIg0KPiA+ID4gPiA+ICsiICBTSEVMTF9IVFRQX0VSUk9S ICAgICAgICAgIE5vIEVGSSBlcnJvcnMsIGJ1dCB0aGUgc2VydmVyIHJlcG9ydGVkDQo+ID4gPiA+ ID4gYQ0KPiA+ID4gc3RhdHVzDQo+ID4gPiA+ID4gY29kZVxyXG4NCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJv ci4NCj4gPiA+ID4gPiBJZg0KPiA+ID4gYW4gZXJyb3IgYm9keQ0KPiA+ID4gPiA+IHNlbnRcclxu DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHNlcnZlciwg aXQgd291bGQgYmUgc2F2ZWQgYXMNCj4gPiA+IGxvY2FsZmlsZXBhdGgNCj4gPiA+ID4gcGFyYW1l dGVyLiINCj4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFu ZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gYi9TaGVsbFBrZy9EeW5h bWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdiZDViNDZkMzk5 Nw0KPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiArKysgYi9TaGVsbFBrZy9EeW5h bWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gQEAgLTAs MCArMSw1MyBAQA0KPiA+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gPiArICBFbnRyeXBvaW50 IG9mICJodHRwIiBzaGVsbCBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cw0KPiA+ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPEJSPg0KPiA+ID4gPiA+ICsg IENvcHlyaWdodCAoYykgMjAxNSwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsqKi8NCj4g PiA+ID4gPiArI2luY2x1ZGUgIkh0dHAuaCINCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qDQo+ ID4gPiA+ID4gKyAqIFN0cmluZyB0b2tlbiBJRCBvZiBoZWxwIG1lc3NhZ2UgdGV4dC4NCj4gPiA+ ID4gPiArICogU2hlbGwgc3VwcG9ydHMgdG8gZmluZCBoZWxwIG1lc3NhZ2UgaW4gdGhlIHJlc291 cmNlIHNlY3Rpb24gb2YNCj4gPiA+ID4gPiBhbg0KPiA+ID4gPiA+ICsgKiBhcHBsaWNhdGlvbiBp bWFnZSBpZiAqIC5NQU4gZmlsZSBpcyBub3QgZm91bmQuDQo+ID4gPiA+ID4gKyAqIFRoaXMgZ2xv YmFsIHZhcmlhYmxlIGlzIGFkZGVkIHRvIG1ha2UgYnVpbGQgdG9vbCByZWNvZ25pemVzDQo+ID4g PiA+ID4gKyAqIHRoYXQgdGhlIGhlbHAgc3RyaW5nIGlzIGNvbnN1bWVkIGJ5IHVzZXIgYW5kIHRo ZW4gYnVpbGQgdG9vbA0KPiA+ID4gPiA+IHdpbGwNCj4gPiA+ID4gPiArICogYWRkIHRoZSBzdHJp bmcgaW50byB0aGUgcmVzb3VyY2Ugc2VjdGlvbi4NCj4gPiA+ID4gPiArICogVGh1cyB0aGUgYXBw bGljYXRpb24gY2FuIHVzZSAnLT8nIG9wdGlvbiB0byBzaG93IGhlbHAgbWVzc2FnZSBpbg0KPiA+ ID4gU2hlbGwuDQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VO UkVGRVJFTkNFRA0KPiA+ID4gPiA+ICtFRklfU1RSSU5HX0lEIG1TdHJpbmdIZWxwVG9rZW5JZCA9 IFNUUklOR19UT0tFTg0KPiA+ID4gPiAoU1RSX0dFVF9IRUxQX0hUVFApOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgRW50cnkgcG9pbnQgb2YgSHR0cCBzdGFuZGFs b25lIGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW0gSW1hZ2VI YW5kbGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiA+ID4g PiA+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVtIFRhYmxl IHBvaW50ZXIuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIEh0dHAgY29tbWFuZCBpcyBleGVjdXRlZA0KPiA+ID4gPiA+IHN1Y2Vzc2Z1bGx5 Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRUZJX0FCT1JURUQgICAgICAgICAgIEhJSSBwYWNrYWdl IHdhcyBmYWlsZWQgdG8NCj4gPiA+ID4gPiBpbml0aWFsaXplLg0KPiA+ID4gPiA+ICsgIEByZXR2 YWwgb3RoZXJzICAgICAgICAgICAgICAgIE90aGVyIGVycm9ycyB3aGVuIGV4ZWN1dGluZyBodHRw DQo+ID4gPiBjb21tYW5kLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArRUZJX1NUQVRVUw0K PiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArSHR0cEFwcEluaXRpYWxpemUgKA0KPiA+ID4g PiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4g PiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAgICAgICAgKlN5c3RlbVRhYmxlDQo+ID4gPiA+ID4g KyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiA+ID4gPiArICBtSHR0cEhpaUhhbmRsZSA9IEluaXRpYWxpemVIaWlQ YWNrYWdlIChJbWFnZUhhbmRsZSk7DQo+ID4gPiA+ID4gKyAgaWYgKG1IdHRwSGlpSGFuZGxlID09 IE5VTEwpIHsNCj4gPiA+ID4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9IChFRklfU1RBVFVTKVJ1bkh0 dHAgKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg IEhpaVJlbW92ZVBhY2thZ2VzIChtSHR0cEhpaUhhbmRsZSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0 DQo+ID4gPiA+IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0 dHBBcHAuaW5mDQo+ID4gPiA+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cEFwcC5pbmYNCj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDA4ZDQ3ZmIzN2Q1DQo+ID4gPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gPiA+ICsrKw0KPiA+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0 cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuaW5mDQo+ID4gPiA+ID4gQEAgLTAsMCArMSw1OCBAQA0K PiA+ID4gPiA+ICsjIyAgQGZpbGUNCj4gPiA+ID4gPiArIyBQcm92aWRlcyBTaGVsbCAnaHR0cCcg c3RhbmRhbG9uZSBhcHBsaWNhdGlvbi4NCj4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ICsjIENvcHly aWdodCAoYykgMjAxMCAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4g PiA+ID4gcmVzZXJ2ZWQuDQo+ID4gPiA8QlI+DQo+ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAy MDE1LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiArIyBDb3B5 cmlnaHQgKGMpIDIwMjAsIEJyb2FkY29tLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ ID4gPiArIw0KPiA+ID4gPiA+ICsjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiArIyMNCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gK1tEZWZpbmVzXQ0KPiA+ID4gPiA+ICsgIElORl9WRVJTSU9O ICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDYNCj4gPiA+ID4gPiArICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICAgICAgPSBodHRwDQo+ID4gPiA+ID4gKyAgRklMRV9HVUlEICAgICAg ICAgICAgICAgICAgICAgID0NCj4gPiA+IDU2QjAwRkI3LTkxRDItODY5Qi1DRTVDLTI2Q0QxQTg5 QzczQw0KPiA+ID4gPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVFRklf QVBQTElDQVRJT04NCj4gPiA+ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAg PSAxLjANCj4gPiA+ID4gPiArICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBIdHRw QXBwSW5pdGlhbGl6ZQ0KPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gKyMgIFRoaXMgZmxhZyBzcGVj aWZpZXMgd2hldGhlciBISUkgcmVzb3VyY2Ugc2VjdGlvbiBpcyBnZW5lcmF0ZWQNCj4gPiA+ID4g PiBpbnRvDQo+ID4gPiBQRQ0KPiA+ID4gPiBpbWFnZS4NCj4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ ICsgIFVFRklfSElJX1JFU09VUkNFX1NFQ1RJT04gICAgICA9IFRSVUUNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gK1tTb3VyY2VzLmNvbW1vbl0NCj4gPiA+ID4gPiArICBIdHRwLmMNCj4gPiA+ID4g PiArICBIdHRwQXBwLmMNCj4gPiA+ID4gPiArICBIdHRwLmgNCj4gPiA+ID4gPiArICBIdHRwLnVu aQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArW1BhY2thZ2VzXQ0KPiA+ID4gPiA+ICsgIEVtYmVk ZGVkUGtnL0VtYmVkZGVkUGtnLmRlYw0KPiA+ID4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQo+ID4gPiA+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ID4gPiArICBO ZXR3b3JrUGtnL05ldHdvcmtQa2cuZGVjDQo+ID4gPiA+ID4gKyAgU2hlbGxQa2cvU2hlbGxQa2cu ZGVjDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPiA+ID4g KyAgQmFzZUxpYg0KPiA+ID4gPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiA+ID4gPiArICBEZWJ1 Z0xpYg0KPiA+ID4gPiA+ICsgIEZpbGVIYW5kbGVMaWINCj4gPiA+ID4gPiArICBIaWlMaWINCj4g PiA+ID4gPiArICBIdHRwTGliDQo+ID4gPiA+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ ID4gPiA+ICsgIE5ldExpYg0KPiA+ID4gPiA+ICsgIFNoZWxsTGliDQo+ID4gPiA+ID4gKyAgVWVm aUFwcGxpY2F0aW9uRW50cnlQb2ludA0KPiA+ID4gPiA+ICsgIFVlZmlCb290U2VydmljZXNUYWJs ZUxpYg0KPiA+ID4gPiA+ICsgIFVlZmlIaWlTZXJ2aWNlc0xpYg0KPiA+ID4gPiA+ICsgIFVlZmlM aWINCj4gPiA+ID4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gK1tQcm90b2NvbHNdDQo+ID4gPiA+ID4gKyAgZ0VmaUhpaVBhY2thZ2VMaXN0 UHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ID4gPiA+ICsgIGdF ZmlIdHRwUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ ID4gPiA+ID4gKyAgZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgICAgICAgICAg IyMgQ09OU1VNRVMNCj4gPiA+ID4gPiArICBnRWZpTWFuYWdlZE5ldHdvcmtTZXJ2aWNlQmluZGlu Z1Byb3RvY29sR3VpZCAgICMjIENPTlNVTUVTDQo+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4g PiA+DQo+ID4gPiA+DQo+ID4NCj4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYQ0KPiA+ID4gPiBuZC4NCj4gPiA+ID4gPiBjDQo+ID4g PiA+ID4NCj4gPiA+ID4NCj4gPg0KPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5h bWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4gPiA+IG5kLg0KPiA+ID4gPiA+IGMNCj4g PiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uYmE2NTQ3NDlhMDc1DQo+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ICsrKw0K PiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4NCj4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRw RHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYQ0KPiA+ID4gPiBuZC4NCj4gPiA+ID4gPiBj DQo+ID4gPiA+ID4gQEAgLTAsMCArMSwxMzQgQEANCj4gPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4g PiA+ID4gKyAgUHJvZHVjZSAiaHR0cCIgc2hlbGwgZHluYW1pYyBjb21tYW5kLg0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE3LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPEJSPg0KPiA+ID4g PiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsq Ki8NCj4gPiA+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL1NoZWxsRHluYW1pY0NvbW1hbmQuaD4N Cj4gPiA+ID4gPiArI2luY2x1ZGUgIkh0dHAuaCINCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8q Kg0KPiA+ID4gPiA+ICsgIFRoaXMgaXMgdGhlIHNoZWxsIGNvbW1hbmQgaGFuZGxlciBmdW5jdGlv biBwb2ludGVyIGNhbGxiYWNrIHR5cGUuDQo+ID4gPiBUaGlzDQo+ID4gPiA+ID4gKyAgZnVuY3Rp b24gaGFuZGxlcyB0aGUgY29tbWFuZCB3aGVuIGl0IGlzIGludm9rZWQgaW4gdGhlIHNoZWxsLg0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dIFRoaXMgICAgICAgICAgICAgICBU aGUgaW5zdGFuY2Ugb2YgdGhlDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1NIRUxMX0RZTkFNSUNfQ09NTUFORF9QUk9UT0NPTC4NCj4gPiA+ID4gPiArICBA cGFyYW1baW5dIFN5c3RlbVRhYmxlICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgc3lzdGVtIHRh YmxlLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2hlbGxQYXJhbWV0ZXJzICAgIFRoZSBwYXJh bWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUNCj4gPiA+ID4gPiBjb21tYW5kLg0KPiA+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gU2hlbGwgICAgICAgICAgICAgIFRoZSBpbnN0YW5jZSBvZiB0aGUgc2hl bGwgcHJvdG9jb2wNCj4gPiA+IHVzZWQgaW4NCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgY29udGV4dCBvZiBwcm9jZXNzaW5nIHRoaXMNCj4gPiA+IGNvbW1h bmQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR1cm4gRUZJX1NVQ0NFU1MgICAgICAg ICAgIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Vzc2Z1bA0KPiA+ID4gPiA+ICsgIEByZXR1cm4gb3Ro ZXIgICAgICAgICAgICAgICAgIHRoZSBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gPiArU0hFTExfU1RBVFVTDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtI dHRwQ29tbWFuZEhhbmRsZXIgKA0KPiA+ID4gPiA+ICsgIElOIEVGSV9TSEVMTF9EWU5BTUlDX0NP TU1BTkRfUFJPVE9DT0wgICAgKlRoaXMsDQo+ID4gPiA+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJM RSAgICAgICAgICAgICAgICAgICAgICAqU3lzdGVtVGFibGUsDQo+ID4gPiA+ID4gKyAgSU4gRUZJ X1NIRUxMX1BBUkFNRVRFUlNfUFJPVE9DT0wgICAgICAgICAqU2hlbGxQYXJhbWV0ZXJzLA0KPiA+ ID4gPiA+ICsgIElOIEVGSV9TSEVMTF9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgKlNoZWxs DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgZ0VmaVNoZWxsUGFy YW1ldGVyc1Byb3RvY29sID0gU2hlbGxQYXJhbWV0ZXJzOw0KPiA+ID4gPiA+ICsgIGdFZmlTaGVs bFByb3RvY29sICAgICAgICAgICA9IFNoZWxsOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBy ZXR1cm4gUnVuSHR0cCAoZ0ltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7DQo+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIFRoaXMgaXMgdGhlIGNv bW1hbmQgaGVscCBoYW5kbGVyIGZ1bmN0aW9uIHBvaW50ZXIgY2FsbGJhY2sgdHlwZS4NCj4gPiA+ IFRoaXMNCj4gPiA+ID4gPiArICBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGlzcGxheWlu ZyBoZWxwIGluZm9ybWF0aW9uIGZvciB0aGUNCj4gPiA+IGFzc29jaWF0ZWQNCj4gPiA+ID4gPiAr ICBjb21tYW5kLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dIFRoaXMgICAg ICAgIFRoZSBpbnN0YW5jZSBvZiB0aGUNCj4gPiA+ID4gPiBFRklfU0hFTExfRFlOQU1JQ19DT01N QU5EX1BST1RPQ09MLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gTGFuZ3VhZ2UgICAgVGhlIHBv aW50ZXIgdG8gdGhlIGxhbmd1YWdlIHN0cmluZyB0byB1c2UuDQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsgIEByZXR1cm4gc3RyaW5nICAgICAgICAgUG9vbCBhbGxvY2F0ZWQgaGVscCBzdHJpbmcs IG11c3QgYmUgZnJlZWQNCj4gPiA+ID4gPiBieQ0KPiA+ID4gY2FsbGVyDQo+ID4gPiA+ID4gKyoq Lw0KPiA+ID4gPiA+ICtDSEFSMTYgKg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArSHR0 cENvbW1hbmRHZXRIZWxwICgNCj4gPiA+ID4gPiArICBJTiBFRklfU0hFTExfRFlOQU1JQ19DT01N QU5EX1BST1RPQ09MICAgICpUaGlzLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIENIQVI4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEhpaUdldFN0cmluZyhtSHR0cEhpaUhhbmRsZSwNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQ X0hUVFApLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UpOw0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtFRklfU0hFTExfRFlOQU1JQ19DT01N QU5EX1BST1RPQ09MDQo+ID4gbUh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA9IHsNCj4gPiA+ ID4gPiArICBIVFRQX0FQUF9OQU1FLA0KPiA+ID4gPiA+ICsgIEh0dHBDb21tYW5kSGFuZGxlciwN Cj4gPiA+ID4gPiArICBIdHRwQ29tbWFuZEdldEhlbHANCj4gPiA+ID4gPiArfTsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEVudHJ5IHBvaW50IG9mIEh0dHAgRHlu YW1pYyBDb21tYW5kLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBQcm9kdWNlIHRoZSBEeW5h bWljQ29tbWFuZCBwcm90b2NvbCB0byBoYW5kbGUgImh0dHAiDQo+IGNvbW1hbmQuDQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFn ZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gPiA+ID4gKyAgQHBhcmFtIFN5c3RlbVRhYmxl ICAgICAgICAgICAgVGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgSHR0cCBjb21tYW5kIGlz IGV4ZWN1dGVkDQo+ID4gPiA+ID4gc3VjZXNzZnVsbHkuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBF RklfQUJPUlRFRCAgICAgICAgICAgSElJIHBhY2thZ2Ugd2FzIGZhaWxlZCB0bw0KPiA+ID4gPiA+ IGluaXRpYWxpemUuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBvdGhlcnMgICAgICAgICAgICAgICAg T3RoZXIgZXJyb3JzIHdoZW4gZXhlY3V0aW5nIGh0dHANCj4gPiA+IGNvbW1hbmQuDQo+ID4gPiA+ ID4gKyoqLw0KPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiA+ICtIdHRwQ29tbWFuZEluaXRpYWxpemUgKA0KPiA+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiArICBJTiBFRklfU1lTVEVNX1RB QkxFICAgICAgICAgKlN5c3RlbVRhYmxlDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgbUh0dHBIaWlIYW5kbGUgPSBJbml0aWFsaXplSGlpUGFja2FnZSAo SW1hZ2VIYW5kbGUpOw0KPiA+ID4gPiA+ICsgIGlmIChtSHR0cEhpaUhhbmRsZSA9PSBOVUxMKSB7 DQo+ID4gPiA+ID4gKyAgICByZXR1cm4gRUZJX0FCT1JURUQ7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICBTdGF0dXMgPSBnQlMtPkluc3RhbGxQcm90b2NvbEludGVy ZmFjZSAoDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAmSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4g KyAgICAgICAgICAgICAmZ0VmaVNoZWxsRHluYW1pY0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4g PiA+ID4gKyAgICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFDRSwNCj4gPiA+ID4gPiArICAg ICAgICAgICAgICZtSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAp Ow0KPiA+ID4gPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiA+ID4gKyAg cmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoq DQo+ID4gPiA+ID4gKyAgSHR0cCBkcml2ZXIgdW5sb2FkIGhhbmRsZXIuDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5k bGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBpbWFnZSBpcyB1bmxvYWRlZC4NCj4gPiA+ID4gPiArICBA cmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICBGYWlsZWQgdG8gdW5sb2FkIHRoZSBpbWFnZS4N Cj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiArRUZJQVBJ DQo+ID4gPiA+ID4gK0h0dHBVbmxvYWQgKA0KPiA+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZQ0KPiA+ID4gPiA+ICspDQo+ID4gPiA+ID4gK3sNCj4gPiA+ ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ICsg IFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiA+ID4gPiA+ICsg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAmZ0VmaVNo ZWxsRHluYW1pY0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAm bUh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgSGlpUmVtb3Zl UGFja2FnZXMgKG1IdHRwSGlpSGFuZGxlKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ ID4gPiA+DQo+ID4gPiA+DQo+ID4NCj4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHlu YW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYQ0KPiA+ID4gPiBuZC4NCj4gPiA+ID4gPiBpbmYN Cj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+DQo+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0 cER5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWENCj4gPiA+ID4gbmQuDQo+ID4gPiA+ID4g aW5mDQo+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLjVkNDZlZTIzODRkNQ0KPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4g PiArKysNCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+DQo+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWENCj4gPiA+ID4gbmQuDQo+ID4g PiA+ID4gaW5mDQo+ID4gPiA+ID4gQEAgLTAsMCArMSw2MyBAQA0KPiA+ID4gPiA+ICsjIyAgQGZp bGUNCj4gPiA+ID4gPiArIyBQcm92aWRlcyBTaGVsbCAnaHR0cCcgZHluYW1pYyBjb21tYW5kLg0K PiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gPiByZXNlcnZlZC4NCj4gPiA+IDxC Uj4NCj4gPiA+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMCwgQnJvYWRjb20u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gKyMgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gKyMN Cj4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ICsjIw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArW0Rl ZmluZXNdDQo+ID4gPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgw MDAxMDAwNg0KPiA+ID4gPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IGh0 dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAg ICAgICA9DQo+ID4gPiAxOTYxOEJDRS01NUFFLTA5QzYtMzdFOS00Q0UwNDA4NEM3QTENCj4gPiA+ ID4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ID4g PiA+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gPiA+ID4g KyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gSHR0cENvbW1hbmRJbml0aWFsaXpl DQo+ID4gPiA+ID4gKyAgVU5MT0FEX0lNQUdFICAgICAgICAgICAgICAgICAgID0gSHR0cFVubG9h ZA0KPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gKyMgIFRoaXMgZmxhZyBzcGVjaWZpZXMgd2hldGhl ciBISUkgcmVzb3VyY2Ugc2VjdGlvbiBpcyBnZW5lcmF0ZWQNCj4gPiA+ID4gPiBpbnRvDQo+ID4g PiBQRQ0KPiA+ID4gPiBpbWFnZS4NCj4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ICsgIFVFRklfSElJ X1JFU09VUkNFX1NFQ1RJT04gICAgICA9IFRSVUUNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK1tT b3VyY2VzLmNvbW1vbl0NCj4gPiA+ID4gPiArICBIdHRwLmMNCj4gPiA+ID4gPiArICBIdHRwRHlu YW1pY0NvbW1hbmQuYw0KPiA+ID4gPiA+ICsgIEh0dHAuaA0KPiA+ID4gPiA+ICsgIEh0dHAudW5p DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiA+ID4gKyAgRW1iZWRk ZWRQa2cvRW1iZWRkZWRQa2cuZGVjDQo+ID4gPiA+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4g PiA+ID4gPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4gPiA+ICsgIE5l dHdvcmtQa2cvTmV0d29ya1BrZy5kZWMNCj4gPiA+ID4gPiArICBTaGVsbFBrZy9TaGVsbFBrZy5k ZWMNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ID4gPiAr ICBCYXNlTGliDQo+ID4gPiA+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ID4gPiA+ICsgIERlYnVn TGliDQo+ID4gPiA+ID4gKyAgRmlsZUhhbmRsZUxpYg0KPiA+ID4gPiA+ICsgIEhpaUxpYg0KPiA+ ID4gPiA+ICsgIEh0dHBMaWINCj4gPiA+ID4gPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4g PiA+ID4gKyAgTmV0TGliDQo+ID4gPiA+ID4gKyAgU2hlbGxMaWINCj4gPiA+ID4gPiArICBVZWZp Qm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiA+ID4gPiArICBVZWZpRHJpdmVyRW50cnlQb2ludA0K PiA+ID4gPiA+ICsgIFVlZmlIaWlTZXJ2aWNlc0xpYg0KPiA+ID4gPiA+ICsgIFVlZmlMaWINCj4g PiA+ID4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gK1tQcm90b2NvbHNdDQo+ID4gPiA+ID4gKyAgZ0VmaUhpaVBhY2thZ2VMaXN0UHJvdG9j b2xHdWlkICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ID4gPiA+ICsgIGdFZmlIdHRw UHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4gPiA+ ID4gKyAgZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgICAgICAgICAgIyMgQ09O U1VNRVMNCj4gPiA+ID4gPiArICBnRWZpTWFuYWdlZE5ldHdvcmtTZXJ2aWNlQmluZGluZ1Byb3Rv Y29sR3VpZCAgICMjIENPTlNVTUVTDQo+ID4gPiA+ID4gKyAgZ0VmaVNoZWxsRHluYW1pY0NvbW1h bmRQcm90b2NvbEd1aWQgICAgICAgICAgICAjIyBQUk9EVUNFUw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArW0RFUEVYXQ0KPiA+ID4gPiA+ICsgIFRSVUUNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv U2hlbGxQa2cvSW5jbHVkZS9HdWlkL1NoZWxsTGliSGlpR3VpZC5oDQo+ID4gPiA+ID4gYi9TaGVs bFBrZy9JbmNsdWRlL0d1aWQvU2hlbGxMaWJIaWlHdWlkLmgNCj4gPiA+ID4gPiBpbmRleCA1ZGE5 MTI4MzMzYTQuLmQ1ZjJjZWFjMDdhOSAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9TaGVsbFBrZy9J bmNsdWRlL0d1aWQvU2hlbGxMaWJIaWlHdWlkLmgNCj4gPiA+ID4gPiArKysgYi9TaGVsbFBrZy9J bmNsdWRlL0d1aWQvU2hlbGxMaWJIaWlHdWlkLmgNCj4gPiA+ID4gPiBAQCAtNTgsNyArNTgsMTEg QEANCj4gPiA+ID4gPiAgICB7IFwNCj4gPiA+ID4gPiAgICAgIDB4NzM4YTkzMTQsIDB4ODJjMSwg MHg0NTkyLCB7IDB4OGYsIDB4ZjcsIDB4YzEsIDB4YmQsIDB4ZjEsDQo+ID4gPiA+ID4gMHhiMiwN Cj4gPiA+IDB4MGUsDQo+ID4gPiA+IDB4ZDQNCj4gPiA+ID4gPiB9IFwNCj4gPiA+ID4gPiAgICB9 DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2RlZmluZSBTSEVMTF9IVFRQ X0hJSV9HVUlEIFwNCj4gPiA+ID4gPiArICB7IFwNCj4gPiA+ID4gPiArICAgIDB4MzkwZjg0YjMs IDB4MjIxYywgMHg0ZDllLCB7IDB4YjUsIDB4MDYsIDB4NmQsIDB4YjksIDB4NDIsDQo+ID4gPiA+ ID4gMHgzZSwNCj4gPiA+IDB4MGEsDQo+ID4gPiA+ID4gMHg3ZSB9IFwNCj4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgI2RlZmluZSBTSEVMTF9CQ0ZHX0hJSV9HVUlEIFwNCj4g PiA+ID4gPiAgICB7IFwNCj4gPiA+ID4gPiBAQCAtNzUsNiArNzksNyBAQCBleHRlcm4gRUZJX0dV SUQgZ1NoZWxsTGV2ZWwzSGlpR3VpZDsNCj4gPiA+ID4gPiAgZXh0ZXJuIEVGSV9HVUlEIGdTaGVs bE5ldHdvcmsxSGlpR3VpZDsNCj4gPiA+ID4gPiAgZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbE5ldHdv cmsySGlpR3VpZDsNCj4gPiA+ID4gPiAgZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbFRmdHBIaWlHdWlk Ow0KPiA+ID4gPiA+ICtleHRlcm4gRUZJX0dVSUQgZ1NoZWxsSHR0cEhpaUd1aWQ7DQo+ID4gPiA+ ID4gIGV4dGVybiBFRklfR1VJRCBnU2hlbGxCY2ZnSGlpR3VpZDsNCj4gPiA+ID4gPg0KPiA+ID4g PiA+ICAjZW5kaWYNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVj IGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiA+ID4gaW5kZXggYzE3ZTM1OGQxNWVkLi5m ODBhMjk2MmRmZDEgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiA+ID4gQEAgLTUw LDYgKzUwLDcgQEAgW0d1aWRzXQ0KPiA+ID4gPiA+ICAgIGdTaGVsbE5ldHdvcmsxSGlpR3VpZCAg ICAgICAgICAgPSB7MHhmM2QzMDFiYiwgMHhmNGE1LCAweDQ1YTgsDQo+ID4gPiB7MHhiMCwgMHhi NywNCj4gPiA+ID4gPiAweGZhLCAweDk5LCAweDljLCAweDYyLCAweDM3LCAweGFlfX0NCj4gPiA+ ID4gPiAgICBnU2hlbGxOZXR3b3JrMkhpaUd1aWQgICAgICAgICAgID0gezB4MTc0YjJiNSwgMHhm NTA1LCAweDRiMTIsDQo+ID4gPiB7MHhhYSwgMHg2MCwNCj4gPiA+ID4gPiAweDU5LCAweGRmLCAw eGY4LCAweGQ2LCAweGVhLCAweDM3fX0NCj4gPiA+ID4gPiAgICBnU2hlbGxUZnRwSGlpR3VpZCAg ICAgICAgICAgICAgID0gezB4NzM4YTkzMTQsIDB4ODJjMSwgMHg0NTkyLA0KPiA+ID4gezB4OGYs IDB4ZjcsIDB4YzEsDQo+ID4gPiA+ID4gMHhiZCwgMHhmMSwgMHhiMiwgMHgwZSwgMHhkNH19DQo+ ID4gPiA+ID4gKyAgZ1NoZWxsSHR0cEhpaUd1aWQgICAgICAgICAgICAgICA9IHsweDM5MGY4NGIz LCAweDIyMWMsIDB4NGQ5ZSwNCj4gPiA+IHsweGI1LCAweDA2LA0KPiA+ID4gPiAweDZkLA0KPiA+ ID4gPiA+IDB4YjksIDB4NDIsIDB4M2UsIDB4MGEsIDB4N2V9fQ0KPiA+ID4gPiA+ICAgIGdTaGVs bEJjZmdIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg1ZjVmNjA1ZCwgMHgxNTgzLCAweDRhMmQs DQo+ID4gPiB7MHhhNiwgMHhiMiwgMHhlYiwNCj4gPiA+ID4gPiAweDEyLCAweGRhLCAweGI0LCAw eGEyLCAweGI2fX0NCj4gPiA+ID4gPiAgICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAg ID0gezB4ZGE4Y2NkZjQsIDB4ZWQ4ZiwgMHg0ZmZjLA0KPiA+ID4gezB4YjUsIDB4ZWYsDQo+ID4g PiA+IDB4MmUsDQo+ID4gPiA+ID4gMHhmNSwgMHg1ZSwgMHgyNCwgMHg5MywgMHgyYX19DQo+ID4g PiA+ID4gICAgIyBGSUxFX0dVSUQgYXMgZGVmaW5lZCBpbiBTaGVsbFBrZy9BcHBsaWNhdGlvbi9T aGVsbC9TaGVsbC5pbmYNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cu ZHNjIGIvU2hlbGxQa2cvU2hlbGxQa2cuZHNjDQo+ID4gPiA+ID4gaW5kZXggOTE0OTM0MDBjYWI3 Li5hZWUwMDI0NTE4NWQgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cu ZHNjDQo+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvU2hlbGxQa2cuZHNjDQo+ID4gPiA+ID4gQEAg LTEzNyw2ICsxMzcsMTEgQEAgW0NvbXBvbmVudHNdDQo+ID4gPiA+ID4gICAgICAgIGdFZmlTaGVs bFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsTGliQXV0b0luaXRpYWxpemV8RkFMU0UNCj4gPiA+ ID4gPiAgICB9DQo+ID4gPiA+ID4gICAgU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvVGZ0cER5bmFt aWNDb21tYW5kL1RmdHBBcHAuaW5mDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ ID4NCj4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBEeW5h bWljQ29tbWFuZA0KPiA+ID4gPiAuaW4NCj4gPiA+ID4gPiBmIHsNCj4gPiA+ID4gPiArICAgIDxQ Y2RzRml4ZWRBdEJ1aWxkPg0KPiA+ID4gPiA+ICsgICAgICBnRWZpU2hlbGxQa2dUb2tlblNwYWNl R3VpZC5QY2RTaGVsbExpYkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ICsgIFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRw QXBwLmluZg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4NCj4gU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvRHBEeW5hbWljQ29tbWFuZC9EcER5bmFtaWNDb21tYW5kLmluZg0KPiA+ID4gPiA+IHsNCj4g PiA+ID4gPiAgICAgIDxQY2RzRml4ZWRBdEJ1aWxkPg0KPiA+ID4gPiA+ICAgICAgICBnRWZpU2hl bGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVsbExpYkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4g PiA+ID4gLS0NCj4gPiA+ID4gPiAyLjE3LjENCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gDQo=