From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0607.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe1e::607]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 400EB820EA for ; Thu, 16 Feb 2017 12:16:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=AFjqWMoqlrIfUQygfTtafsNY+xmQIN5uu0LOo/zgHEE=; b=KTDJBg0g7r4ykbq0iU35B6XkDEgMKDiLb58I3xPI50oQTsn/Oz7YfwFT6K7fxrFUwFeb5nm7RszymFkdBgfltJ83zKtxkGSt5vNuwxn9TJ6IaX32z3dMaIS0A4mKgJoQBCMqLyjkj1Y89+lVtxzG3a3rKlrvzNC4qVm0qZkxVoY= Received: from AM5PR0801MB1762.eurprd08.prod.outlook.com (10.169.247.16) by AM5PR0801MB1764.eurprd08.prod.outlook.com (10.169.247.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Thu, 16 Feb 2017 20:16:37 +0000 Received: from AM5PR0801MB1762.eurprd08.prod.outlook.com ([10.169.247.16]) by AM5PR0801MB1762.eurprd08.prod.outlook.com ([10.169.247.16]) with mapi id 15.01.0888.034; Thu, 16 Feb 2017 20:16:37 +0000 From: Evan Lloyd To: "ard.biesheuvel@linaro.org" CC: "edk2-devel@lists.01.org" , Leif Lindholm , "ryan.harkin@linaro.org" Thread-Topic: [PATCH 4/4] ArmPkg:Provide GetTriggerType/SetTriggerType functions Thread-Index: AQHShfnaXCNsxuUDmUuF6CXqVeSQxaFsEpuQ Date: Thu, 16 Feb 2017 20:16:37 +0000 Message-ID: References: <20170209192623.262044-1-evan.lloyd@arm.com> <20170209192623.262044-5-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-office365-filtering-correlation-id: ca7900d3-57eb-4924-9cf7-08d456a8b625 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:AM5PR0801MB1764; x-microsoft-exchange-diagnostics: 1; AM5PR0801MB1764; 7:LUCcdVNP7D7hQCj+2STCVIeruLhhzF2qp221cN2SgsCChfZl1xXxVZTfQWSbNuwTvkmw8k8l+d1Jofz+q49+8Yv7b+2BmxThem61oU6FyI36sEU27VdWHi5UQlEIhFNESAiCql9iQqEEgQWdZ6f3YSREiYiqbMIU1J3qIzKKEhCgxZz4C9TxPtP0mVAuq3wSQCrBwatskZtt6Y09jO10KeHdh3HuRHh5pHXRu7VQMDqy3uyeFAu2sbgZC8TrcqBnpLaAOrCxYnHXwy21EywwtZPI8rEzMgo5HOJbVqeTooL0VGTujIw4zxUnfysNBOsCS1jwBbc8W3MwMnakbrvINw== x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(192374486261705)(162533806227266); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(6072148); SRVR:AM5PR0801MB1764; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB1764; x-forefront-prvs: 0220D4B98D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39850400002)(39410400002)(39840400002)(39860400002)(39450400003)(189002)(199003)(40434004)(13464003)(24454002)(77096006)(229853002)(6506006)(5640700003)(54906002)(575784001)(86362001)(106116001)(106356001)(105586002)(97736004)(55016002)(99286003)(2351001)(6436002)(8936002)(9686003)(33656002)(25786008)(189998001)(81166006)(389900003)(101416001)(8676002)(81156014)(66066001)(122556002)(92566002)(68736007)(50986999)(76176999)(54356999)(4326007)(305945005)(7736002)(74316002)(2900100001)(3660700001)(5890100001)(2501003)(3280700002)(6246003)(53946003)(38730400002)(53936002)(110136004)(2906002)(5660300001)(102836003)(6116002)(3846002)(2950100002)(7696004)(6916009)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0801MB1764; H:AM5PR0801MB1762.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Feb 2017 20:16:37.3492 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1764 Subject: Re: [PATCH 4/4] ArmPkg:Provide GetTriggerType/SetTriggerType functions X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Feb 2017 20:16:42 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQXJkLg0KWW91ciBjb21tZW50cyBtYWtlIHNlbnNlIGFuZCB3ZSB3aWxsIGNvbXBseSAoaW5j bHVkaW5nICJQbGVhc2Ugbm8gc3BhY2VzIGFmdGVyIGNhc3RzIikuDQpIb3dldmVyLCBJIGNhbiBm aW5kIG5vdGhpbmcgcmVxdWlyaW5nIG5vIHNwYWNlIGFmdGVyIGNhc3RzIGluIHRoZSBDQ1MuDQpJ dCBkb2VzIGhhdmUgc29tZSBjYXN0cyBpbiBleGFtcGxlIGNvZGU6DQo1LjcuMi4zIGhhcyAiaWYg KChJTlROKWZvbyA+PSAwKSIgd2l0aCBubyBzcGFjZQ0KNS43LjIuNCBoYXMgImlmICgoIExvZ0Vu dHJ5QXJyYXlbSW5kZXhdLkhhbmRsZSA9PSAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpIChVSU5UTikg SGFuZGxlKSIgd2l0aCBzcGFjZXMgKGFuZCBvdGhlcnMpLg0KDQpCeSB0aGUgc3RhbmRhcmQgZWRr MiBwcm9jZXNzIHdlIHNob3VsZCBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIG1vc3QgcG9wdWxhciBh bmQgaW5zaXN0IG9uIHRoZSByZXZlcnNlLiAgOi0pDQoNClJlZ2FyZHMsDQpFdmFuDQoNCj4tLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJk LmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj5TZW50OiAxMyBGZWJydWFyeSAyMDE3IDEzOjA1DQo+ VG86IEV2YW4gTGxveWQNCj5DYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IExlaWYgTGluZGhv bG07IHJ5YW4uaGFya2luQGxpbmFyby5vcmcNCj5TdWJqZWN0OiBSZTogW1BBVENIIDQvNF0gQXJt UGtnOlByb3ZpZGUgR2V0VHJpZ2dlclR5cGUvU2V0VHJpZ2dlclR5cGUNCj5mdW5jdGlvbnMNCj4N Cj4oYXBvbG9naWVzIGZvciB0aGUgZGVsYXllZCBbYW5kIG5vdyBzb21ld2hhdCByZWR1bmRhbnRd IHJlc3BvbnNlLCB0aGlzDQo+c2F0IGluIG15IG91dGJveCBzaW5jZSB0aGlzIG1vcm5pbmcpDQo+ DQo+T24gOSBGZWJydWFyeSAyMDE3IGF0IDE5OjI2LCAgPGV2YW4ubGxveWRAYXJtLmNvbT4gd3Jv dGU6DQo+PiBGcm9tOiBHaXJpc2ggUGF0aGFrIDxnaXJpc2gucGF0aGFrQGFybS5jb20+DQo+Pg0K Pj4gVGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBHZXRUcmlnZ2VyVHlwZSBhbmQgU2V0VHJpZ2dlclR5 cGUgZnVuY3Rpb25zDQo+PiBpbiBBcm1HaWNWMkR4ZSAoR2ljVjJHZXRUcmlnZ2VyVHlwZS9HaWNW MlNldFRyaWdnZXJUeXBlKQ0KPj4gYW5kIEFybUdpY1YzRHhlIChHaWNWM0dldFRyaWdnZXJUeXBl L0dpY1YzU2V0VHJpZ2dlclR5cGUpDQo+Pg0KPj4gU2V0VHJpZ2dlclR5cGUgY29uZmlndXJlcyB0 aGUgaW50ZXJydXB0IG1vZGUgb2YgYW4gaW50ZXJydXB0DQo+PiBhcyBlZGdlIHNlbnNpdGl2ZSBv ciBsZXZlbCBzZW5zaXRpdmUuDQo+Pg0KPj4gR2V0VHJpZ2dlclR5cGUgZnVuY3Rpb24gcmV0dXJu cyB0aGUgbW9kZSBvZiBhbiBpbnRlcnJ1cHQuDQo+Pg0KPj4gVGhlIHJlcXVpcmVtZW50IGZvciB0 aGlzIGNoYW5nZSBkZXJpdmVzIGZyb20gYSBwcm9ibGVtIGRldGVjdGVkIG9uDQo+QVJNDQo+PiBK dW5vIGJvYXJkcywgYnV0IHRoZSBjaGFuZ2UgaXMgb2YgZ2VuZXJpYyByZWxldmFuY2UuDQo+Pg0K Pj4gTk9URTogQXQgdGhpcyBwb2ludCB0aGUgR0lDdjMgY29kZSBpcyBub3QgdGVzdGVkLg0KPj4N Cj4+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAx LjANCj4+IFNpZ25lZC1vZmYtYnk6IEdpcmlzaCBQYXRoYWsgPGdpcmlzaC5wYXRoYWtAYXJtLmNv bT4NCj4+IFNpZ25lZC1vZmYtYnk6IEV2YW4gTGxveWQgPGV2YW4ubGxveWRAYXJtLmNvbT4NCj4+ IFRlc3RlZC1ieTogR2lyaXNoIFBhdGhhayA8Z2lyaXNoLnBhdGhha0Bhcm0uY29tPg0KPg0KPkl0 J3MgcHJvYmFibHkgYmVzdCB0byByZW9yZGVyIHRoaXMgcGF0Y2ggd2l0aCAjMywgb3IgcGVyaGFw cyBmb2xkIGl0DQo+aW50byAjMiBlbnRpcmVseS4NCj4NCj4+IC0tLQ0KPj4gIEFybVBrZy9JbmNs dWRlL0xpYnJhcnkvQXJtR2ljTGliLmggICAgICAgIHwgICA0ICsNCj4+ICBBcm1Qa2cvRHJpdmVy cy9Bcm1HaWMvR2ljVjIvQXJtR2ljVjJEeGUuYyB8IDE2NQ0KPisrKysrKysrKysrKysrKysrKy0t DQo+PiAgQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YzL0FybUdpY1YzRHhlLmMgfCAxNTkNCj4r KysrKysrKysrKysrKysrKy0tDQo+PiAgMyBmaWxlcyBjaGFuZ2VkLCAzMDggaW5zZXJ0aW9ucygr KSwgMjAgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL0FybVBrZy9JbmNsdWRlL0xp YnJhcnkvQXJtR2ljTGliLmgNCj5iL0FybVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtR2ljTGliLmgN Cj4+IGluZGV4DQo+NDM2NGYzZmZlZjQ2NDU5NmY2NGNmNTk4ODFkNzAzY2Y1NGNmMGRkZC4uNjYx MGYzNTZjMjBlNzNkODRmZjNiYTUxOTk1DQo+NmI0MjZkOTdlZjFlYiAxMDA2NDQNCj4+IC0tLSBh L0FybVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtR2ljTGliLmgNCj4+ICsrKyBiL0FybVBrZy9JbmNs dWRlL0xpYnJhcnkvQXJtR2ljTGliLmgNCj4+IEBAIC01MSw2ICs1MSwxMCBAQA0KPj4gICNkZWZp bmUgQVJNX0dJQ19JQ0REQ1JfQVJFICAgICAgKDEgPDwgNCkgLy8gQWZmaW5pdHkgUm91dGluZyBF bmFibGUNCj4oQVJFKQ0KPj4gICNkZWZpbmUgQVJNX0dJQ19JQ0REQ1JfRFMgICAgICAgKDEgPDwg NikgLy8gRGlzYWJsZSBTZWN1cml0eSAoRFMpDQo+Pg0KPj4gKy8vIEdJQ0RfSUNESUNGUiBiaXRz DQo+PiArI2RlZmluZSBBUk1fR0lDX0lDRElDRlJfTEVWRUxfVFJJR0dFUkVEICAweDAgLy8gTGV2 ZWwgdHJpZ2dlcmVkDQo+aW50ZXJydXB0DQo+PiArI2RlZmluZSBBUk1fR0lDX0lDRElDRlJfRURH RV9UUklHR0VSRUQgICAweDEgLy8gRWRnZSB0cmlnZ2VyZWQNCj5pbnRlcnJ1cHQNCj4+ICsNCj4+ ICAvLw0KPj4gIC8vIEdJQyBSZWRpc3RyaWJ1dG9yDQo+PiAgLy8NCj4+IGRpZmYgLS1naXQgYS9B cm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjIvQXJtR2ljVjJEeGUuYw0KPmIvQXJtUGtnL0RyaXZl cnMvQXJtR2ljL0dpY1YyL0FybUdpY1YyRHhlLmMNCj4+IGluZGV4DQo+OGM0ZDY2MTI1ZTJlOGM3 YWY5ODk4ZjMzNmVlNzQyZWQwYWViZjA1OC4uMWY0NzQwM2M2Y2RjN2U4YzBmNmFjNjVkMw0KPmI5 NWE1NjJkYTZhMmQzMiAxMDA2NDQNCj4+IC0tLSBhL0FybVBrZy9Ecml2ZXJzL0FybUdpYy9HaWNW Mi9Bcm1HaWNWMkR4ZS5jDQo+PiArKysgYi9Bcm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjIvQXJt R2ljVjJEeGUuYw0KPj4gQEAgLTI5LDYgKzI5LDcgQEAgQWJzdHJhY3Q6DQo+PiAgI2RlZmluZSBB Uk1fR0lDX0RFRkFVTFRfUFJJT1JJVFkgIDB4ODANCj4+DQo+PiAgZXh0ZXJuIEVGSV9IQVJEV0FS RV9JTlRFUlJVUFRfUFJPVE9DT0wNCj5nSGFyZHdhcmVJbnRlcnJ1cHRWMlByb3RvY29sOw0KPj4g K2V4dGVybiBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9QUk9UT0NPTA0KPmdIYXJkd2FyZUludGVy cnVwdDJWMlByb3RvY29sOw0KPj4NCj4+ICBTVEFUSUMgVUlOVDMyIG1HaWNJbnRlcnJ1cHRJbnRl cmZhY2VCYXNlOw0KPj4gIFNUQVRJQyBVSU5UMzIgbUdpY0Rpc3RyaWJ1dG9yQmFzZTsNCj4+IEBA IC0xOTMsMTkgKzE5NCw5NSBAQCBFRklfSEFSRFdBUkVfSU5URVJSVVBUX1BST1RPQ09MDQo+Z0hh cmR3YXJlSW50ZXJydXB0VjJQcm90b2NvbCA9IHsNCj4+ICAgIEdpY1YyRW5kT2ZJbnRlcnJ1cHQN Cj4+ICB9Ow0KPj4NCj4+ICsvKioNCj4+ICsgIENhbGN1bGF0ZSBHSUNEX0lDRkdSbiBiYXNlIGFk ZHJlc3MgYW5kIGNvcnJlc3BvbmRpbmcgYml0DQo+PiArICBmaWVsZCBJbnRfY29uZmlnWzFdIG9m IHRoZSBHSUMgZGlzdHJpYnV0b3IgcmVnaXN0ZXIuDQo+PiArDQo+PiArICBAcGFyYW0gU291cmNl ICAgICAgIEhhcmR3YXJlIHNvdXJjZSBvZiB0aGUgaW50ZXJydXB0Lg0KPj4gKyAgQHBhcmFtIFJl Z0FkZHJlc3MgICBDb3JyZXNwb25kaW5nIEdJQ0RfSUNGR1JuIGJhc2UgYWRkcmVzcy4NCj4+ICsg IEBwYXJhbSBCaXROdW1iZXIgICAgQml0IG51bWJlciBpbiB0aGUgcmVnaXN0ZXIgdG8gc2V0L3Jl c2V0Lg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBTb3VyY2UgaW50ZXJy dXB0IHN1cHBvcnRlZC4NCj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgU291cmNlIGlu dGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0KPj4gKyoqLw0KPj4gIFNUQVRJQw0KPj4gIEVGSV9T VEFUVVMNCj4+ICtHaWNHZXREaXN0cmlidXRvckludHJDZmdCYXNlQW5kQml0RmllbGQgKA0KPj4g KyAgSU4gSEFSRFdBUkVfSU5URVJSVVBUX1NPVVJDRSAgICAgICAgICAgICBTb3VyY2UsDQo+PiAr ICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlJlZ0FkZHJlc3MsDQo+ PiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJpdE51bWJlcg0K Pj4gKyAgKQ0KPj4gK3sNCj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgUmVnT2Zmc2V0Ow0K Pj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICBGaWVsZDsNCj4+ICsNCj4+ICsgIGlmIChTb3Vy Y2UgPj0gbUdpY051bUludGVycnVwdHMpIHsNCj4+ICsgICAgQVNTRVJUKFNvdXJjZSA8IG1HaWNO dW1JbnRlcnJ1cHRzKTsNCj4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICsgIH0N Cj4+ICsNCj4+ICsgIFJlZ09mZnNldCA9IFNvdXJjZSAvIDE2Ow0KPj4gKyAgRmllbGQgPSBTb3Vy Y2UgJSAxNjsNCj4+ICsgICpSZWdBZGRyZXNzID0gUGNkR2V0NjQgKFBjZEdpY0Rpc3RyaWJ1dG9y QmFzZSkNCj4+ICsgICAgICAgICAgICAgICAgICArIEFSTV9HSUNfSUNESUNGUg0KPj4gKyAgICAg ICAgICAgICAgICAgICsgKDQgKiBSZWdPZmZzZXQpOw0KPj4gKyAgKkJpdE51bWJlciA9IChGaWVs ZCAqIDIpICsgMTsNCj4+ICsNCj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+ICt9DQo+PiAr DQo+PiArLyoqDQo+PiArICBHZXQgaW50ZXJydXB0IHRyaWdnZXIgdHlwZSBvZiBhbiBpbnRlcnJ1 cHQNCj4+ICsNCj4+ICsgIEBwYXJhbSBUaGlzICAgICAgICAgIEluc3RhbmNlIHBvaW50ZXIgZm9y IHRoaXMgcHJvdG9jb2wNCj4+ICsgIEBwYXJhbSBTb3VyY2UgICAgICAgIEhhcmR3YXJlIHNvdXJj ZSBvZiB0aGUgaW50ZXJydXB0Lg0KPj4gKyAgQHBhcmFtIFRyaWdnZXJUeXBlICAgUmV0dXJucyBp bnRlcnJ1cHQgdHJpZ2dlciB0eXBlLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBTb3VyY2UgaW50ZXJydXB0IHN1cHBvcnRlZC4NCj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgU291cmNlIGludGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0KPj4gKyoqLw0KPj4g K0VGSV9TVEFUVVMNCj4NCj5TVEFUSUMgPw0KPg0KPj4gIEVGSUFQSQ0KPj4gIEdpY1YyR2V0VHJp Z2dlclR5cGUgKA0KPj4gICAgSU4gIEVGSV9IQVJEV0FSRV9JTlRFUlJVUFQyX1BST1RPQ09MICAg ICAgKlRoaXMsDQo+PiAtICBJTiAgSEFSRFdBUkVfSU5URVJSVVBUX1NPVVJDRSAgICAgICAgICAg ICBTb3VyY2UsDQo+PiArICBJTiAgSEFSRFdBUkVfSU5URVJSVVBUX1NPVVJDRSAgICAgICAgICAg ICAgU291cmNlLA0KPj4gICAgT1VUIEVGSV9IQVJEV0FSRV9JTlRFUlJVUFQyX1RSSUdHRVJfVFlQ RSAgKlRyaWdnZXJUeXBlDQo+PiAgICApDQo+PiAgew0KPj4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgUmVnQWRkcmVzczsNCj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIEJpdE51bWJl cjsNCj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsNCj4+ICsNCj4+ICsgIFJl Z0FkZHJlc3MgPSAwOw0KPj4gKyAgQml0TnVtYmVyICA9IDA7DQo+PiArDQo+PiArICBTdGF0dXMg PSBHaWNHZXREaXN0cmlidXRvckludHJDZmdCYXNlQW5kQml0RmllbGQgKA0KPj4gKyAgICAgICAg ICAgICAgU291cmNlLA0KPj4gKyAgICAgICAgICAgICAgJlJlZ0FkZHJlc3MsDQo+PiArICAgICAg ICAgICAgICAmQml0TnVtYmVyDQo+PiArICAgICAgICAgICAgICApOw0KPj4gKw0KPj4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPj4gKyAgfQ0K Pj4gKw0KPj4gKyAgKlRyaWdnZXJUeXBlID0gKE1taW9CaXRGaWVsZFJlYWQzMiAoUmVnQWRkcmVz cywgQml0TnVtYmVyLA0KPkJpdE51bWJlcikgPT0gMCkNCj4+ICsgICAgICAgICAgICAgICAgID8g IEVGSV9IQVJEV0FSRV9JTlRFUlJVUFQyX1RSSUdHRVJfTEVWRUxfSElHSA0KPj4gKyAgICAgICAg ICAgICAgICAgOiAgRUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9FREdFX1JJU0lORzsN Cj4+ICsNCj4+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+ICB9DQo+Pg0KPj4gLVNUQVRJQw0K Pg0KPj8NCj4NCj4+ICsvKioNCj4+ICsgIFNldCBpbnRlcnJ1cHQgdHJpZ2dlciB0eXBlIG9mIGFu IGludGVycnVwdA0KPj4gKw0KPj4gKyAgQHBhcmFtIFRoaXMgICAgICAgICAgSW5zdGFuY2UgcG9p bnRlciBmb3IgdGhpcyBwcm90b2NvbA0KPj4gKyAgQHBhcmFtIFNvdXJjZSAgICAgICAgSGFyZHdh cmUgc291cmNlIG9mIHRoZSBpbnRlcnJ1cHQuDQo+PiArICBAcGFyYW0gVHJpZ2dlclR5cGUgICBJ bnRlcnJ1cHQgdHJpZ2dlciB0eXBlLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBTb3VyY2UgaW50ZXJydXB0IHN1cHBvcnRlZC4NCj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgU291cmNlIGludGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0KPj4gKyoqLw0KPj4g IEVGSV9TVEFUVVMNCj4+ICBFRklBUEkNCj4+ICBHaWNWMlNldFRyaWdnZXJUeXBlICgNCj4+IEBA IC0yMTQsMjAgKzI5MSw4MyBAQCBHaWNWMlNldFRyaWdnZXJUeXBlICgNCj4+ICAgIElOICBFRklf SEFSRFdBUkVfSU5URVJSVVBUMl9UUklHR0VSX1RZUEUgIFRyaWdnZXJUeXBlDQo+PiAgICApDQo+ PiAgew0KPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgUmVnQWRkcmVzcyA9IDA7DQo+PiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICBCaXROdW1iZXIgPSAwOw0KPj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgVmFsdWU7DQo+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0 dXM7DQo+PiArICBCT09MRUFOICAgICAgICAgICAgICAgICBJbnRyU291cmNlRW5hYmxlZDsNCj4+ ICsNCj4+ICsgIGlmIChUcmlnZ2VyVHlwZSAhPQ0KPkVGSV9IQVJEV0FSRV9JTlRFUlJVUFQyX1RS SUdHRVJfRURHRV9SSVNJTkcNCj4+ICsgICAgICYmIFRyaWdnZXJUeXBlICE9DQo+RUZJX0hBUkRX QVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9MRVZFTF9ISUdIKSB7DQo+PiArICAgICAgICAgIERFQlVH ICgoRUZJX0RfRVJST1IsICJJbnZhbGlkIGludGVycnVwdCB0cmlnZ2VyIHR5cGU6ICVkXG4iLCBc DQo+PiArICAgICAgICAgICAgICAgICAgVHJpZ2dlclR5cGUpKTsNCj4+ICsgICAgICAgICAgQVNT RVJUIChGQUxTRSk7DQo+PiArICAgICAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiAr ICB9DQo+PiArDQo+PiArICBTdGF0dXMgPSBHaWNHZXREaXN0cmlidXRvckludHJDZmdCYXNlQW5k Qml0RmllbGQgKA0KPj4gKyAgICAgICAgICAgICBTb3VyY2UsDQo+PiArICAgICAgICAgICAgICZS ZWdBZGRyZXNzLA0KPj4gKyAgICAgICAgICAgICAmQml0TnVtYmVyDQo+PiArICAgICAgICAgICAg ICk7DQo+PiArDQo+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+PiArICAgIHJldHVy biBTdGF0dXM7DQo+PiArICB9DQo+PiArDQo+PiArICBTdGF0dXMgPSBHaWNWMkdldEludGVycnVw dFNvdXJjZVN0YXRlICgNCj4+ICsgICAgICAgICAgICAgKEVGSV9IQVJEV0FSRV9JTlRFUlJVUFRf UFJPVE9DT0wqKVRoaXMsDQo+PiArICAgICAgICAgICAgIFNvdXJjZSwNCj4+ICsgICAgICAgICAg ICAgJkludHJTb3VyY2VFbmFibGVkDQo+PiArICAgICAgICAgICAgICk7DQo+PiArDQo+PiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+PiArICAgIHJldHVybiBTdGF0dXM7DQo+PiArICB9 DQo+PiArDQo+PiArICBWYWx1ZSA9IChUcmlnZ2VyVHlwZSA9PQ0KPkVGSV9IQVJEV0FSRV9JTlRF UlJVUFQyX1RSSUdHRVJfRURHRV9SSVNJTkcpDQo+PiArICAgICAgICAgID8gIEFSTV9HSUNfSUNE SUNGUl9FREdFX1RSSUdHRVJFRA0KPj4gKyAgICAgICAgICA6ICBBUk1fR0lDX0lDRElDRlJfTEVW RUxfVFJJR0dFUkVEOw0KPj4gKw0KPj4gKyAgLy8NCj4+ICsgIC8vIEJlZm9yZSBjaGFuZ2luZyB0 aGUgdmFsdWUsIHdlIG11c3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0LA0KPj4gKyAgLy8gb3RoZXJ3 aXNlIEdJQyBiZWhhdmlvciBpcyBVTlBSRURJQ1RBQkxFLg0KPj4gKyAgLy8NCj4+ICsgIGlmIChJ bnRyU291cmNlRW5hYmxlZCkgew0KPj4gKyAgICBHaWNWMkRpc2FibGVJbnRlcnJ1cHRTb3VyY2Ug KA0KPj4gKyAgICAgIChFRklfSEFSRFdBUkVfSU5URVJSVVBUX1BST1RPQ09MKilUaGlzLA0KPj4g KyAgICAgIFNvdXJjZQ0KPj4gKyAgICAgICk7DQo+PiArICB9DQo+PiArDQo+PiArICBNbWlvQW5k VGhlbk9yMzIgKA0KPj4gKyAgICBSZWdBZGRyZXNzLA0KPj4gKyAgICB+KDB4MSA8PCBCaXROdW1i ZXIpLA0KPj4gKyAgICBWYWx1ZSA8PCBCaXROdW1iZXINCj4+ICsgICAgKTsNCj4+ICsgIC8vDQo+ PiArICAvLyBSZXN0b3JlIGludGVycnVwdCBzdGF0ZQ0KPj4gKyAgLy8NCj4+ICsgIGlmIChJbnRy U291cmNlRW5hYmxlZCkgew0KPj4gKyAgICBHaWNWMkVuYWJsZUludGVycnVwdFNvdXJjZSAoDQo+ PiArICAgICAgKEVGSV9IQVJEV0FSRV9JTlRFUlJVUFRfUFJPVE9DT0wqKVRoaXMsDQo+PiArICAg ICAgU291cmNlDQo+PiArICAgICAgKTsNCj4+ICsgIH0NCj4+ICsNCj4+ICAgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4+ICB9DQo+Pg0KPj4gLVNUQVRJQyBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9Q Uk9UT0NPTA0KPmdIYXJkd2FyZUludGVycnVwdDJWMlByb3RvY29sID0gew0KPj4gLSAgKEhBUkRX QVJFX0lOVEVSUlVQVDJfUkVHSVNURVIpUmVnaXN0ZXJJbnRlcnJ1cHRTb3VyY2UsDQo+PiAtICAo SEFSRFdBUkVfSU5URVJSVVBUMl9FTkFCTEUpR2ljVjJFbmFibGVJbnRlcnJ1cHRTb3VyY2UsDQo+ PiAtICAoSEFSRFdBUkVfSU5URVJSVVBUMl9ESVNBQkxFKUdpY1YyRGlzYWJsZUludGVycnVwdFNv dXJjZSwNCj4+IC0NCj4oSEFSRFdBUkVfSU5URVJSVVBUMl9JTlRFUlJVUFRfU1RBVEUpR2ljVjJH ZXRJbnRlcnJ1cHRTb3VyY2VTdGENCj50ZSwNCj4+IC0gIChIQVJEV0FSRV9JTlRFUlJVUFQyX0VO RF9PRl9JTlRFUlJVUFQpR2ljVjJFbmRPZkludGVycnVwdCwNCj4+ICtFRklfSEFSRFdBUkVfSU5U RVJSVVBUMl9QUk9UT0NPTA0KPmdIYXJkd2FyZUludGVycnVwdDJWMlByb3RvY29sID0gew0KPj4g KyAgKEhBUkRXQVJFX0lOVEVSUlVQVDJfUkVHSVNURVIpIFJlZ2lzdGVySW50ZXJydXB0U291cmNl LA0KPj4gKyAgKEhBUkRXQVJFX0lOVEVSUlVQVDJfRU5BQkxFKSBHaWNWMkVuYWJsZUludGVycnVw dFNvdXJjZSwNCj4+ICsgIChIQVJEV0FSRV9JTlRFUlJVUFQyX0RJU0FCTEUpIEdpY1YyRGlzYWJs ZUludGVycnVwdFNvdXJjZSwNCj4+ICsgIChIQVJEV0FSRV9JTlRFUlJVUFQyX0lOVEVSUlVQVF9T VEFURSkNCj5HaWNWMkdldEludGVycnVwdFNvdXJjZVN0YXRlLA0KPj4gKyAgKEhBUkRXQVJFX0lO VEVSUlVQVDJfRU5EX09GX0lOVEVSUlVQVCkgR2ljVjJFbmRPZkludGVycnVwdCwNCj4NCj5QbGVh c2Ugbm8gc3BhY2VzIGFmdGVyIGNhc3RzDQo+DQo+PiAgICBHaWNWMkdldFRyaWdnZXJUeXBlLA0K Pj4gICAgR2ljVjJTZXRUcmlnZ2VyVHlwZQ0KPj4gIH07DQo+Pg0KPj4gLQ0KPg0KPlNwdXJpb3Vz IHdoaXRlc3BhY2UgY2hhbmdlDQo+DQo+PiAgLyoqDQo+PiAgICBTaHV0ZG93biBvdXIgaGFyZHdh cmUNCj4+DQo+PiBAQCAtMzQ2LDggKzQ4NiwxMSBAQCBHaWNWMkR4ZUluaXRpYWxpemUgKA0KPj4g ICAgQXJtR2ljRW5hYmxlRGlzdHJpYnV0b3IgKG1HaWNEaXN0cmlidXRvckJhc2UpOw0KPj4NCj4+ ICAgIFN0YXR1cyA9IEluc3RhbGxBbmRSZWdpc3RlckludGVycnVwdFNlcnZpY2UgKA0KPj4gLSAg ICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0VjJQcm90b2NvbCwNCj4mZ0hhcmR3YXJlSW50 ZXJydXB0MlYyUHJvdG9jb2wsDQo+PiAtICAgICAgICAgICAgIEdpY1YySXJxSW50ZXJydXB0SGFu ZGxlciwgR2ljVjJFeGl0Qm9vdFNlcnZpY2VzRXZlbnQpOw0KPj4gKyAgICAgICAgICAgICAmZ0hh cmR3YXJlSW50ZXJydXB0VjJQcm90b2NvbCwNCj4+ICsgICAgICAgICAgICAgJmdIYXJkd2FyZUlu dGVycnVwdDJWMlByb3RvY29sLA0KPj4gKyAgICAgICAgICAgICBHaWNWMklycUludGVycnVwdEhh bmRsZXIsDQo+PiArICAgICAgICAgICAgIEdpY1YyRXhpdEJvb3RTZXJ2aWNlc0V2ZW50DQo+PiAr ICAgICAgICAgICAgICk7DQo+Pg0KPg0KPlNwdXJpb3VzIHdoaXRlc3BhY2UgY2hhbmdlDQo+DQo+ PiAgICByZXR1cm4gU3RhdHVzOw0KPj4gIH0NCj4+IGRpZmYgLS1naXQgYS9Bcm1Qa2cvRHJpdmVy cy9Bcm1HaWMvR2ljVjMvQXJtR2ljVjNEeGUuYw0KPmIvQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dp Y1YzL0FybUdpY1YzRHhlLmMNCj4+IGluZGV4DQo+MDJkZWVlZjc4YjZkNzczNzE3MmE1OTkyYzZk ZWNhYzQzY2ZkZDY0YS4uYTAzODNlY2Q3NzM4NzUwZjczYTIyNTM4MQ0KPjE0MDNkNmVkMGQyZmQ1 MSAxMDA2NDQNCj4+IC0tLSBhL0FybVBrZy9Ecml2ZXJzL0FybUdpYy9HaWNWMy9Bcm1HaWNWM0R4 ZS5jDQo+PiArKysgYi9Bcm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjMvQXJtR2ljVjNEeGUuYw0K Pj4gQEAgLTE5LDYgKzE5LDcgQEANCj4+ICAjZGVmaW5lIEFSTV9HSUNfREVGQVVMVF9QUklPUklU WSAgMHg4MA0KPj4NCj4+ICBleHRlcm4gRUZJX0hBUkRXQVJFX0lOVEVSUlVQVF9QUk9UT0NPTA0K PmdIYXJkd2FyZUludGVycnVwdFYzUHJvdG9jb2w7DQo+PiArZXh0ZXJuIEVGSV9IQVJEV0FSRV9J TlRFUlJVUFQyX1BST1RPQ09MDQo+Z0hhcmR3YXJlSW50ZXJydXB0MlYzUHJvdG9jb2w7DQo+Pg0K Pj4gIFNUQVRJQyBVSU5UTiBtR2ljRGlzdHJpYnV0b3JCYXNlOw0KPj4gIFNUQVRJQyBVSU5UTiBt R2ljUmVkaXN0cmlidXRvcnNCYXNlOw0KPj4gQEAgLTE4NCw4ICsxODUsNTQgQEAgRUZJX0hBUkRX QVJFX0lOVEVSUlVQVF9QUk9UT0NPTA0KPmdIYXJkd2FyZUludGVycnVwdFYzUHJvdG9jb2wgPSB7 DQo+PiAgICBHaWNWM0VuZE9mSW50ZXJydXB0DQo+PiAgfTsNCj4+DQo+PiArLyoqDQo+PiArICBD YWxjdWxhdGUgR0lDRF9JQ0ZHUm4gYmFzZSBhZGRyZXNzIGFuZCBjb3JyZXNwb25kaW5nIGJpdA0K Pj4gKyAgZmllbGQgSW50X2NvbmZpZ1sxXSBpbiB0aGUgR0lDIGRpc3RyaWJ1dG9yIHJlZ2lzdGVy Lg0KPj4gKw0KPj4gKyAgQHBhcmFtIFNvdXJjZSAgICAgICBIYXJkd2FyZSBzb3VyY2Ugb2YgdGhl IGludGVycnVwdC4NCj4+ICsgIEBwYXJhbSBSZWdBZGRyZXNzICAgQ29ycmVzcG9uZGluZyBHSUNE X0lDRkdSbiBiYXNlIGFkZHJlc3MuDQo+PiArICBAcGFyYW0gQml0TnVtYmVyICAgIEJpdCBudW1i ZXIgaW4gdGhlIHJlZ2lzdGVyIHRvIHNldC9yZXNldC4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgU291cmNlIGludGVycnVwdCBzdXBwb3J0ZWQuDQo+PiArICBAcmV0dmFs IEVGSV9VTlNVUFBPUlRFRCAgIFNvdXJjZSBpbnRlcnJ1cHQgaXMgbm90IHN1cHBvcnRlZC4NCj4+ ICsqKi8NCj4+ICBTVEFUSUMNCj4+ICBFRklfU1RBVFVTDQo+PiArR2ljR2V0RGlzdHJpYnV0b3JJ bnRyQ2ZnQmFzZUFuZEJpdEZpZWxkICgNCj4+ICsgIElOIEhBUkRXQVJFX0lOVEVSUlVQVF9TT1VS Q0UgICAgICAgICAgICAgIFNvdXJjZSwNCj4+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKlJlZ0FkZHJlc3MsDQo+PiArICBPVVQgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpCaXROdW1iZXINCj4+ICsgICkNCj4+ICt7DQo+PiArICBVSU5U TiAgICAgICAgICAgICAgICAgICBSZWdPZmZzZXQ7DQo+PiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICBGaWVsZDsNCj4+ICsNCj4+ICsgIGlmIChTb3VyY2UgPj0gbUdpY051bUludGVycnVwdHMp IHsNCj4+ICsgICAgQVNTRVJUKEZBTFNFKTsNCj4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRF RDsNCj4+ICsgIH0NCj4+ICsNCj4+ICsgIFJlZ09mZnNldCA9IFNvdXJjZSAvIDE2Ow0KPj4gKyAg RmllbGQgPSBTb3VyY2UgJSAxNjsNCj4+ICsgICpSZWdBZGRyZXNzID0gUGNkR2V0NjQgKFBjZEdp Y0Rpc3RyaWJ1dG9yQmFzZSkNCj4+ICsgICAgICAgICAgICAgICAgICArIEFSTV9HSUNfSUNESUNG Ug0KPj4gKyAgICAgICAgICAgICAgICAgICsgKDQgKiBSZWdPZmZzZXQpOw0KPj4gKyAgKkJpdE51 bWJlciA9IChGaWVsZCAqIDIpICsgMTsNCj4+ICsNCj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBHZXQgaW50ZXJydXB0IHRyaWdnZXIgdHlwZSBv ZiBhbiBpbnRlcnJ1cHQNCj4+ICsNCj4+ICsgIEBwYXJhbSBUaGlzICAgICAgICAgIEluc3RhbmNl IHBvaW50ZXIgZm9yIHRoaXMgcHJvdG9jb2wNCj4+ICsgIEBwYXJhbSBTb3VyY2UgICAgICAgIEhh cmR3YXJlIHNvdXJjZSBvZiB0aGUgaW50ZXJydXB0Lg0KPj4gKyAgQHBhcmFtIFRyaWdnZXJUeXBl ICAgUmV0dXJucyBpbnRlcnJ1cHQgdHJpZ2dlciB0eXBlLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBTb3VyY2UgaW50ZXJydXB0IHN1cHBvcnRlZC4NCj4+ICsgIEByZXR2 YWwgRUZJX1VOU1VQUE9SVEVEICAgU291cmNlIGludGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0K Pj4gKyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4NCj5TVEFUSUMgPw0KPg0KPj4gIEVGSUFQSQ0KPj4g IEdpY1YzR2V0VHJpZ2dlclR5cGUgKA0KPj4gICAgSU4gIEVGSV9IQVJEV0FSRV9JTlRFUlJVUFQy X1BST1RPQ09MICAgICAgKlRoaXMsDQo+PiBAQCAtMTkzLDEwICsyNDAsMzcgQEAgR2ljVjNHZXRU cmlnZ2VyVHlwZSAoDQo+PiAgICBPVVQgRUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9U WVBFICAqVHJpZ2dlclR5cGUNCj4+ICAgICkNCj4+ICB7DQo+PiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICBSZWdBZGRyZXNzID0gMDsNCj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIEJp dE51bWJlciA9IDA7DQo+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7DQo+PiAr DQo+PiArICBTdGF0dXMgPSBHaWNHZXREaXN0cmlidXRvckludHJDZmdCYXNlQW5kQml0RmllbGQg KA0KPj4gKyAgICAgICAgICAgICBTb3VyY2UsDQo+PiArICAgICAgICAgICAgICZSZWdBZGRyZXNz LA0KPj4gKyAgICAgICAgICAgICAmQml0TnVtYmVyDQo+PiArICAgICAgICAgICAgICk7DQo+PiAr DQo+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+PiArICAgIHJldHVybiBTdGF0dXM7 DQo+PiArICB9DQo+PiArDQo+PiArICAqVHJpZ2dlclR5cGUgPSAoTW1pb0JpdEZpZWxkUmVhZDMy IChSZWdBZGRyZXNzLCBCaXROdW1iZXIsDQo+Qml0TnVtYmVyKSA9PSAwKQ0KPj4gKyAgICAgICAg ICAgICAgICAgPyAgRUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9MRVZFTF9ISUdIDQo+ PiArICAgICAgICAgICAgICAgICA6ICBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9UUklHR0VSX0VE R0VfUklTSU5HOw0KPj4gKw0KPj4gICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPj4gIH0NCj4+DQo+ PiAtU1RBVElDDQo+PiArLyoqDQo+PiArICBTZXQgaW50ZXJydXB0IHRyaWdnZXIgdHlwZSBvZiBh biBpbnRlcnJ1cHQNCj4+ICsNCj4+ICsgIEBwYXJhbSBUaGlzICAgICAgICAgIEluc3RhbmNlIHBv aW50ZXIgZm9yIHRoaXMgcHJvdG9jb2wNCj4+ICsgIEBwYXJhbSBTb3VyY2UgICAgICAgIEhhcmR3 YXJlIHNvdXJjZSBvZiB0aGUgaW50ZXJydXB0Lg0KPj4gKyAgQHBhcmFtIFRyaWdnZXJUeXBlICAg SW50ZXJydXB0IHRyaWdnZXIgdHlwZS4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgU291cmNlIGludGVycnVwdCBzdXBwb3J0ZWQuDQo+PiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgIFNvdXJjZSBpbnRlcnJ1cHQgaXMgbm90IHN1cHBvcnRlZC4NCj4+ICsqKi8NCj4+ ICBFRklfU1RBVFVTDQo+PiAgRUZJQVBJDQo+PiAgR2ljVjNTZXRUcmlnZ2VyVHlwZSAoDQo+PiBA QCAtMjA1LDE1ICsyNzksNzkgQEAgR2ljVjNTZXRUcmlnZ2VyVHlwZSAoDQo+PiAgICBJTiAgRUZJ X0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9UWVBFICBUcmlnZ2VyVHlwZQ0KPj4gICAgKQ0K Pj4gIHsNCj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIFJlZ0FkZHJlc3M7DQo+PiArICBV SU5UTiAgICAgICAgICAgICAgICAgICBCaXROdW1iZXI7DQo+PiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICBWYWx1ZTsNCj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsNCj4+ ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEludHJTb3VyY2VFbmFibGVkOw0KPj4gKw0KPj4g KyAgaWYgKFRyaWdnZXJUeXBlICE9DQo+RUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9F REdFX1JJU0lORw0KPj4gKyAgICAgJiYgVHJpZ2dlclR5cGUgIT0NCj5FRklfSEFSRFdBUkVfSU5U RVJSVVBUMl9UUklHR0VSX0xFVkVMX0hJR0gpIHsNCj4+ICsgICAgICAgICAgREVCVUcgKChFRklf RF9FUlJPUiwgIkludmFsaWQgaW50ZXJydXB0IHRyaWdnZXIgdHlwZTogJWRcbiIsIFwNCj4+ICsg ICAgICAgICAgICAgICAgIFRyaWdnZXJUeXBlKSk7DQo+PiArICAgICAgICAgIEFTU0VSVCAoRkFM U0UpOw0KPj4gKyAgICAgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPj4gKyAgfQ0KPj4g Kw0KPj4gKyAgU3RhdHVzID0gR2ljR2V0RGlzdHJpYnV0b3JJbnRyQ2ZnQmFzZUFuZEJpdEZpZWxk ICgNCj4+ICsgICAgICAgICAgICAgU291cmNlLA0KPj4gKyAgICAgICAgICAgICAmUmVnQWRkcmVz cywNCj4+ICsgICAgICAgICAgICAgJkJpdE51bWJlcg0KPj4gKyAgICAgICAgICAgICApOw0KPj4g Kw0KPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4gKyAgICByZXR1cm4gU3RhdHVz Ow0KPj4gKyAgfQ0KPj4gKw0KPj4gKyAgU3RhdHVzID0gR2ljVjNHZXRJbnRlcnJ1cHRTb3VyY2VT dGF0ZSAoDQo+PiArICAgICAgICAgICAgIChFRklfSEFSRFdBUkVfSU5URVJSVVBUX1BST1RPQ09M KilUaGlzLA0KPj4gKyAgICAgICAgICAgICBTb3VyY2UsDQo+PiArICAgICAgICAgICAgICZJbnRy U291cmNlRW5hYmxlZA0KPj4gKyAgICAgICAgICAgICApOw0KPj4gKw0KPj4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPj4gKyAgfQ0KPj4gKw0K Pj4gKyAgVmFsdWUgPSAoVHJpZ2dlclR5cGUgPT0NCj5FRklfSEFSRFdBUkVfSU5URVJSVVBUMl9U UklHR0VSX0VER0VfUklTSU5HKQ0KPj4gKyAgICAgICAgICA/ICBBUk1fR0lDX0lDRElDRlJfRURH RV9UUklHR0VSRUQNCj4+ICsgICAgICAgICAgOiAgQVJNX0dJQ19JQ0RJQ0ZSX0xFVkVMX1RSSUdH RVJFRDsNCj4+ICsNCj4+ICsgIC8vDQo+PiArICAvLyBCZWZvcmUgY2hhbmdpbmcgdGhlIHZhbHVl LCB3ZSBtdXN0IGRpc2FibGUgdGhlIGludGVycnVwdCwNCj4+ICsgIC8vIG90aGVyd2lzZSBHSUMg YmVoYXZpb3IgaXMgVU5QUkVESUNUQUJMRS4NCj4+ICsgIC8vDQo+PiArICBpZiAoSW50clNvdXJj ZUVuYWJsZWQpIHsNCj4+ICsgICAgR2ljVjNEaXNhYmxlSW50ZXJydXB0U291cmNlICgNCj4+ICsg ICAgICAoRUZJX0hBUkRXQVJFX0lOVEVSUlVQVF9QUk9UT0NPTCopVGhpcywNCj4+ICsgICAgICBT b3VyY2UNCj4+ICsgICAgICApOw0KPj4gKyAgfQ0KPj4gKw0KPj4gKyAgTW1pb0FuZFRoZW5PcjMy ICgNCj4+ICsgICAgUmVnQWRkcmVzcywNCj4+ICsgICAgfigweDEgPDwgQml0TnVtYmVyKSwNCj4+ ICsgICAgVmFsdWUgPDwgQml0TnVtYmVyDQo+PiArICAgICk7DQo+PiArICAvLw0KPj4gKyAgLy8g UmVzdG9yZSBpbnRlcnJ1cHQgc3RhdGUNCj4+ICsgIC8vDQo+PiArICBpZiAoSW50clNvdXJjZUVu YWJsZWQpIHsNCj4+ICsgICAgR2ljVjNFbmFibGVJbnRlcnJ1cHRTb3VyY2UgKA0KPj4gKyAgICAg IChFRklfSEFSRFdBUkVfSU5URVJSVVBUX1BST1RPQ09MKilUaGlzLA0KPj4gKyAgICAgIFNvdXJj ZQ0KPj4gKyAgICAgICk7DQo+PiArICB9DQo+PiArDQo+PiAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+PiAgfQ0KPj4NCj4+IC1TVEFUSUMgRUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfUFJPVE9DT0wN Cj5nSGFyZHdhcmVJbnRlcnJ1cHQyVjNQcm90b2NvbCA9IHsNCj4+IC0gIChIQVJEV0FSRV9JTlRF UlJVUFQyX1JFR0lTVEVSKVJlZ2lzdGVySW50ZXJydXB0U291cmNlLA0KPj4gLSAgKEhBUkRXQVJF X0lOVEVSUlVQVDJfRU5BQkxFKUdpY1YzRW5hYmxlSW50ZXJydXB0U291cmNlLA0KPj4gLSAgKEhB UkRXQVJFX0lOVEVSUlVQVDJfRElTQUJMRSlHaWNWM0Rpc2FibGVJbnRlcnJ1cHRTb3VyY2UsDQo+ PiAtDQo+KEhBUkRXQVJFX0lOVEVSUlVQVDJfSU5URVJSVVBUX1NUQVRFKUdpY1YzR2V0SW50ZXJy dXB0U291cmNlU3RhDQo+dGUsDQo+PiAtICAoSEFSRFdBUkVfSU5URVJSVVBUMl9FTkRfT0ZfSU5U RVJSVVBUKUdpY1YzRW5kT2ZJbnRlcnJ1cHQsDQo+PiArRUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJf UFJPVE9DT0wNCj5nSGFyZHdhcmVJbnRlcnJ1cHQyVjNQcm90b2NvbCA9IHsNCj4+ICsgIChIQVJE V0FSRV9JTlRFUlJVUFQyX1JFR0lTVEVSKSBSZWdpc3RlckludGVycnVwdFNvdXJjZSwNCj4+ICsg IChIQVJEV0FSRV9JTlRFUlJVUFQyX0VOQUJMRSkgR2ljVjNFbmFibGVJbnRlcnJ1cHRTb3VyY2Us DQo+PiArICAoSEFSRFdBUkVfSU5URVJSVVBUMl9ESVNBQkxFKSBHaWNWM0Rpc2FibGVJbnRlcnJ1 cHRTb3VyY2UsDQo+PiArICAoSEFSRFdBUkVfSU5URVJSVVBUMl9JTlRFUlJVUFRfU1RBVEUpDQo+ R2ljVjNHZXRJbnRlcnJ1cHRTb3VyY2VTdGF0ZSwNCj4+ICsgIChIQVJEV0FSRV9JTlRFUlJVUFQy X0VORF9PRl9JTlRFUlJVUFQpIEdpY1YzRW5kT2ZJbnRlcnJ1cHQsDQo+PiAgICBHaWNWM0dldFRy aWdnZXJUeXBlLA0KPj4gICAgR2ljVjNTZXRUcmlnZ2VyVHlwZQ0KPj4gIH07DQo+PiBAQCAtMzY1 LDggKzUwMywxMSBAQCBHaWNWM0R4ZUluaXRpYWxpemUgKA0KPj4gICAgQXJtR2ljRW5hYmxlRGlz dHJpYnV0b3IgKG1HaWNEaXN0cmlidXRvckJhc2UpOw0KPj4NCj4+ICAgIFN0YXR1cyA9IEluc3Rh bGxBbmRSZWdpc3RlckludGVycnVwdFNlcnZpY2UgKA0KPj4gLSAgICAgICAgICAgICAmZ0hhcmR3 YXJlSW50ZXJydXB0VjNQcm90b2NvbCwNCj4mZ0hhcmR3YXJlSW50ZXJydXB0MlYzUHJvdG9jb2ws DQo+PiAtICAgICAgICAgICAgIEdpY1YzSXJxSW50ZXJydXB0SGFuZGxlciwgR2ljVjNFeGl0Qm9v dFNlcnZpY2VzRXZlbnQpOw0KPj4gKyAgICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0VjNQ cm90b2NvbCwNCj4+ICsgICAgICAgICAgICAgJmdIYXJkd2FyZUludGVycnVwdDJWM1Byb3RvY29s LA0KPj4gKyAgICAgICAgICAgICBHaWNWM0lycUludGVycnVwdEhhbmRsZXIsDQo+PiArICAgICAg ICAgICAgIEdpY1YzRXhpdEJvb3RTZXJ2aWNlc0V2ZW50DQo+PiArICAgICAgICAgICAgICk7DQo+ Pg0KPj4gICAgcmV0dXJuIFN0YXR1czsNCj4+ICB9DQo+PiAtLQ0KPj4gR3VpZCgiQ0UxNjU2Njkt M0VGMy00OTNGLUI4NUQtNjE5MEVFNUI5NzU5IikNCj4+DQpJTVBPUlRBTlQgTk9USUNFOiBUaGUg Y29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRp YWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRl ZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8g bm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9y IGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVk aXVtLiBUaGFuayB5b3UuDQo=