From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.48]) by mx.groups.io with SMTP id smtpd.web10.3730.1681547922915096182 for ; Sat, 15 Apr 2023 01:38:43 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=AfRBNAMC; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.237.48, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UeQLL/YetwrYZhLsmTFFyuj0f0dikObeMFE4S2aBsDy6zGVJqGlLj+cyJD293bXd6nS4hg+3j2O8Bd20+9m1z/93aOCjKdLk1+v3yUalOEQZ8c9owf6IcRrMnRA/T78UlOm93u8lQzfUTvUdrVgyHF67V14x0nM7goGHvy4deJFFmBp712I1pKePtnzWYz9OK9bMz+IupjUGr9ZyFsh/sSr2mUGuKld++Vb6zieXNnhRRNbfhcsLssy3OZaihOihs4Yn9mlcSaWCsmaLuS69gLBXhlVrqZGiCZEV+P19iCZp5GzGche5m9WLzVOrQViuIIQNtgikvaB33/GvWu8vNQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fkWF/FFtHnf/eMYeR+mfvzie6snCDusd1QN/KjCWiZY=; b=e35ZNMkAskZCbOsYflqv0/qvxw3eiRvOhT5jiYurt6emvbN9pPNq5sXcjLglyn9/M/fi5HVzG3vlS71wttmgdqnXvWBbqcS956QsHDCIgG45pAjsyyaCMcWVgmGaZI8KBw+XyGqrP/dWk/3Ibm4bKkQ/QY+FQST0whM1kbJsJawQIO+YidAw27b79goFvldcV7QAUANRM4v0Xu7putvgITQPXiEAkqpszGeXcHGhQ9nOf8jEI+uPa6BTdiJQQoNaYSXE17LKKRARiRN4Y2Ct6i65lJugsAIQVGDLtECVJRs0QNMpA9Fm+S6B7hdqbUP5rpq8KBbg4MtytN/dWiF/Ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fkWF/FFtHnf/eMYeR+mfvzie6snCDusd1QN/KjCWiZY=; b=AfRBNAMC5gqi7mHpkwDskv0fZoG75Jo4sf60FjDScW/GtLZ/qlJusyHxgzsWqTCem8x2Q3wQWXxAM9sCOEJeVjiJnpgWOCudTCj5Lj30XL15JrY6GWHMXuyP7/gVrSxCOt1ET72S9/QvpJFAjK7h1Zirid0eZTbHXbQqb0ySNd0= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by DM4PR12MB6470.namprd12.prod.outlook.com (2603:10b6:8:b8::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.27; Sat, 15 Apr 2023 08:38:38 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::30f:bd83:40dd:8f1]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::30f:bd83:40dd:8f1%3]) with mapi id 15.20.6298.030; Sat, 15 Apr 2023 08:38:38 +0000 From: "Chang, Abner" To: Tinh Nguyen , "devel@edk2.groups.io" CC: Liming Gao , Isaac Oram , Nate DeSimone , "Attar, AbdulLateef (Abdul Lateef)" , Nickle Wang , Igor Kulchytskyy Subject: Re: [edk2-devel] [PATCH v4 7/9] ManageabilityPkg: Implement Ipmi Protocol/Ppi Thread-Topic: [edk2-devel] [PATCH v4 7/9] ManageabilityPkg: Implement Ipmi Protocol/Ppi Thread-Index: AQHZXb9YHJZ6qeFo4kysvC6VnpMyb68sK35Q Date: Sat, 15 Apr 2023 08:38:37 +0000 Message-ID: References: <20230322024840.1629-1-abner.chang@amd.com> <20230322024840.1629-7-abner.chang@amd.com> <4064fa08-dec2-91dd-ba42-42200eec7e55@amperemail.onmicrosoft.com> In-Reply-To: <4064fa08-dec2-91dd-ba42-42200eec7e55@amperemail.onmicrosoft.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-15T08:38:34Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=20af69a4-ede6-4f4f-8a50-4c3b4e5f6acf; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|DM4PR12MB6470:EE_ x-ms-office365-filtering-correlation-id: 20e8b032-0a2d-4f96-69db-08db3d8cce7f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: L/kUCuXmgEM05/1qTb7vZCDwZUOG+xQHVryuMO2wTU28xl4n6AvaGWgJyjFTVewMX3f3RuGDSGp1WCKDgDiItSrq+9cxabrquSO6C5GfRy+G/wsf2c/di1/e0qfYDUCAR6r9ZlktqGetG2gAZoDqC3b29p+YktQAkgXqWli76uppvxJORU4CO4lI+60YH7qJkVYmSWb9c5BnZmMXFwUwCB05tk8BSxexiCzceD1RPV4kRzrBZg8t+RH/8UVwDlctPH55nweUVdLdze9kA+Tb9jDEbBEx6fXre10dU91jgu5VTkAB1l4xDPgBC1a3vCulRPhsqZ893jIKfo2b/gWbxi1iv5B8At8YNlbpllmk5dtTlujgE65y3+OtG+IarjTvhOjGhgVw3yGmk0Xj/RANtZANmzu6DiwveHz+FXbz3jPxKedLRMKRIuG85yRXb5J4SHAgT0w3xGaka0YgtAP4o9/nleYDfMI568OyqszDtSwnpsh3UNvpcb/jPeURJOpaS2a+dw3c+Hz/XFKDj70mH9dsAySr3pxyM1x2AW0AawHQ5JgV8dWizn2cn+Oq4lnWlRpat6FzCc1W1tYMc3I6jqdtxrRfAbLiVP4QO5yxTyv5Q/XIECqNmvgAM67/vQIytq4XatZGT9Gs+LnbxcasuQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(396003)(136003)(366004)(39860400002)(376002)(451199021)(26005)(9686003)(186003)(55016003)(5660300002)(7696005)(66556008)(66446008)(66476007)(38070700005)(478600001)(52536014)(76116006)(4326008)(64756008)(66946007)(8676002)(316002)(8936002)(41300700001)(2906002)(83380400001)(53546011)(30864003)(122000001)(71200400001)(33656002)(86362001)(54906003)(38100700002)(110136005)(6506007)(296002)(559001)(579004)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OWZDZDgxK3BLUDlzNjBPbmZWMXhLZUNHaThkeEhGZHVrdUwrSVNXcHJvZHV0?= =?utf-8?B?amdYTVh4Y1lVR0pQK2Q0WCtBTkNib2ttY1ZRaWZqMk5nc050VkR1OHV6VlJU?= =?utf-8?B?T0pXWkYzU1RZSlBvbXRxV0E5dHZkaFpJdHgxcnkzbzFuaWdoVlJOWHlWSFpT?= =?utf-8?B?UkpKUkJwaCtKMzR0NGFySE4vRk90QUdyMW4yTnpCdld4dmJMSVlyV0hzRDUw?= =?utf-8?B?cmtyc3RiTXlFN3RMaW03TE1NS1ZmdE1KQ0ZKcXcyelRvNlFuSkwwVUIveFZm?= =?utf-8?B?VXBMZFREcXl6cU1ucVdkTzE3aHB5TWFBT0tBaWprc092WTBkQVJPUHIwOVl3?= =?utf-8?B?emJWODFpTHVjaHV1c0xtcWZ0LzVZUVloWUxmS3dIZXhDajFhYllkNkpURGFD?= =?utf-8?B?anA4RnJuMS9jcjRORWZuWS92aDQ0NkRDaUp4VXIxYjVTUGdHZTg0ZHdoTVN6?= =?utf-8?B?b3NFZlFQUTNXZDd1bGM1c2MxbHY4MlAwcGU4eVoyZ08wUXdmY2ttT1h4NFlq?= =?utf-8?B?aXJKb0xzRGliOGNMdEdtek9IN1ROalZ0eVV0TlEwbUFrSXhRM2dsVkV5ZXhq?= =?utf-8?B?M201eDVjUXozSUhVTWhRWEVTc1dObTFnZ0dJS1JFZkhham9Qb3NMMmFhamFJ?= =?utf-8?B?RVpJUEhTUzFMTDVPdDYwNDZlQnlsZDJiZDgxazBhZEFrWnBoS3RTb0grUFVM?= =?utf-8?B?WUxvS3E3T1pvUnAzZVhVRy9CSkRJWktVMlhoeU53dTBRVTV3eUlORWZXM1Vm?= =?utf-8?B?MGhkdHdNQWVXOFhYTy9WTFZtaWlsbkNtZEZTdG1DNnJmaWh2UEc4b3k1NDNx?= =?utf-8?B?MUsrNEI5V0I4c3lWcTE3aDdMOXNvVlVkelptWnhRNndDUUJMTzNFVlJJOVpT?= =?utf-8?B?YWlLZzJUTzVSZEJScUREMGZaTkFGR0JxM3J0bk1WY2NWdlcvL29Qa1dpOHJS?= =?utf-8?B?aW55cm1VNjRsbVdZMDB1ZUhtZUo4Z1dqbjhZZ0FzM0F3bnJFUUdCRE5qdFFZ?= =?utf-8?B?RVdHNkpHTGg4V3BoQmtENG1FM2tXaEJtdzFUVWQyektMczJhcUkySUE1UUJJ?= =?utf-8?B?K0FtMUdNaVZtdTBWQ2c3SzR4cG9pN1pUQzFZRGNtMWUxVS9yZjV6UThBWnJ5?= =?utf-8?B?aEM5V3ZTVHArTXY2aDZKaFhLb2Jwb3l3dTlPbTJ6cWhRSGhYMFNvc2IvQnNz?= =?utf-8?B?R0UrZlpVcWNiVWlKYUxNUVU5Qi9jNHNEK2tHUFJmc2F6VVJrcFRZa05oQWFZ?= =?utf-8?B?V1dpelNqaUlacW96N2MvS2hqQmF6cnZmRC9TOVRnYnovWTlNQmVRaXV6ay8z?= =?utf-8?B?c2Jha3UvZlc2dVJsRFlCVURkNGwwVDJtN0lzZEk1TXo5TjlVTldNajVGbjFL?= =?utf-8?B?NkFoM1JkTjdTNUp5amg3UjA3a1hPdy9vMFhwUjVPU1FyRDBzTWplNzRuME9n?= =?utf-8?B?Um4rcVJNQmRuT3FVTjMySHNTaUhZbnU5eVpLUldVRGRFQk9zTjN4MnhsTUtq?= =?utf-8?B?THpKbGlYOWpJbW5LaEZCUHBROGIzbmpkL29zNFdrRExabFJTaHgxUkkwUWxQ?= =?utf-8?B?MjYzTmNZQnlCSk5YNnJTU2pXZDQ3K2w3elhoUWxYRlRIS0pJOHRqQWJpcnp2?= =?utf-8?B?M3U3cXZ3ZlBXelR3ZWQ4OHBtYm4ySHcyc1FEK2xKd1p1QkdqR3BVQ1JUQnFX?= =?utf-8?B?SWE5UzI0ZHVFUzlDbU9URzVaVGxGN3hQK3BPRTlWUjgyS0d1YXdRaUMwRGNF?= =?utf-8?B?WWhock9sR3dnbGIyaGhhc2R0bFhCVlNuMG5HakdpSWFUZ3JPRGhWTWo0WGJE?= =?utf-8?B?citzRlZ1NnMvOGs2WThZYWJWVmkzamNxcnQra1p0NVc3R3dCTWxJUk44RDFx?= =?utf-8?B?OXpCU25XMzFhcmp0VG9vcUo1NjE4ajhUa0ZWQjBrR0x6K0tjZ0Q3SjJqb2JK?= =?utf-8?B?cVVWKzlXZHV1bE1rOTQ0SEFUZ0drSUZ2ak1aV0JlVkVJSmRyNW5wVVBTVnpp?= =?utf-8?B?U3BpL0Jab2pYWGZ2RENjSHY4NU1EeTdybDFlY3dtbE5PQlBlbWVTSW9mYU9E?= =?utf-8?B?NWVGelhCTjJ5NVVQdnFvUlhHVk0rSUlCYlk1bDFSSlBGbytsa0J0cVQvNzZp?= =?utf-8?Q?D21w=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 20e8b032-0a2d-4f96-69db-08db3d8cce7f X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2023 08:38:37.1842 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QZRzBYg1ss6dFpAzQwSmIlv0ZYnjOf5QdJ/KndBzXsiPVeyqp2fL2qQA65ego4hdYQGwu7PUNb6YQPlT8Hm9WA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6470 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFRpbmggTmd1eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwu b25taWNyb3NvZnQuY29tPg0KPiBTZW50OiBGcmlkYXksIE1hcmNoIDI0LCAyMDIzIDM6NDEgQU0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFt ZC5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBJc2Fh YyBPcmFtDQo+IDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsgTmF0ZSBEZVNpbW9uZQ0KPiA8bmF0 aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPjsgQXR0YXIsIEFiZHVsTGF0ZWVmIChBYmR1bCBM YXRlZWYpDQo+IDxBYmR1bExhdGVlZi5BdHRhckBhbWQuY29tPjsgTmlja2xlIFdhbmcgPG5pY2ts ZXdAbnZpZGlhLmNvbT47IElnb3INCj4gS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY0IDcvOV0gTWFuYWdlYWJpbGl0eVBrZzog SW1wbGVtZW50IElwbWkNCj4gUHJvdG9jb2wvUHBpDQo+IA0KPiBDYXV0aW9uOiBUaGlzIG1lc3Nh Z2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlIHByb3Blcg0KPiBjYXV0 aW9uIHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIHJlc3BvbmRp bmcuDQo+IA0KPiANCj4gSGkgQWJuZXIsDQo+IA0KPiANCj4gT24gMy8yMi8yMDIzIDk6NDggQU0s IENoYW5nLCBBYm5lciB2aWEgZ3JvdXBzLmlvIHdyb3RlOg0KPiA+IEZyb206IEFibmVyIENoYW5n IDxhYm5lci5jaGFuZ0BhbWQuY29tPg0KPiA+DQo+ID4gQWRkIElwbWkgUHJvdG9jb2wvUHBpL1NN TSBpbXBsZW1lbnRhdGlvbnMuDQo+ID4gVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2Yg dHJhbnNwb3J0IGludGVyZmFjZSBkZXBlbmRzIG9uIHRoZQ0KPiA+IGJpbmRlZCBNYW5hZ2VhYmls aXR5VHJhbnNwb3J0TGliLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWJuZXIgQ2hhbmcgPGFi bmVyLmNoYW5nQGFtZC5jb20+DQo+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0 LmNvbS5jbj4NCj4gPiBDYzogSXNhYWMgT3JhbSA8aXNhYWMudy5vcmFtQGludGVsLmNvbT4NCj4g PiBDYzogTmF0ZSBEZVNpbW9uZSA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0KPiA+ IENjOiBBYmR1bCBMYXRlZWYgQXR0YXIgPGFiZGF0dGFyQGFtZC5jb20+DQo+ID4gQ2M6IE5pY2ts ZSBXYW5nIDxuaWNrbGV3QG52aWRpYS5jb20+DQo+ID4gQ2M6IElnb3IgS3VsY2h5dHNreXkgPGln b3JrQGFtaS5jb20+DQo+ID4gLS0tDQo+ID4gICAuLi4vSXBtaVByb3RvY29sL0R4ZS9JcG1pUHJv dG9jb2xEeGUuaW5mICAgICAgfCAgNTAgKysrKw0KPiA+ICAgLi4uL1VuaXZlcnNhbC9JcG1pUHJv dG9jb2wvUGVpL0lwbWlQcGlQZWkuaW5mIHwgIDUzICsrKysNCj4gPiAgIC4uLi9JcG1pUHJvdG9j b2wvU21tL0lwbWlQcm90b2NvbFNtbS5pbmYgICAgICB8ICA1MiArKysrDQo+ID4gICAuLi4vSXBt aVByb3RvY29sL0NvbW1vbi9JcG1pUHJvdG9jb2xDb21tb24uaCAgfCAxMDggKysrKysrKysNCj4g PiAgIC4uLi9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGlJbnRlcm5hbC5oICAgICAgICB8ICAyNSAr Kw0KPiA+ICAgLi4uL0lwbWlQcm90b2NvbC9Db21tb24vSXBtaVByb3RvY29sQ29tbW9uLmMgIHwg MjUyDQo+ICsrKysrKysrKysrKysrKysrKw0KPiA+ICAgLi4uL1VuaXZlcnNhbC9JcG1pUHJvdG9j b2wvRHhlL0lwbWlQcm90b2NvbC5jIHwgMTc3ICsrKysrKysrKysrKw0KPiA+ICAgLi4uL1VuaXZl cnNhbC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGkuYyAgICAgIHwgMTU5ICsrKysrKysrKysrDQo+ ID4gICAuLi4vVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sLmMgfCAxNDcg KysrKysrKysrKw0KPiA+ICAgOSBmaWxlcyBjaGFuZ2VkLCAxMDIzIGluc2VydGlvbnMoKykNCj4g PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBGZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZl cnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbER4ZS5pbg0KPiBmDQo+ID4gICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBt aVByb3RvY29sL1BlaS9JcG1pUHBpUGVpLmluZg0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ IEZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBt aVByb3RvY29sU21tDQo+IC5pbmYNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBGZWF0dXJl cy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvQ29tbW9uL0lwbWlQcm90 b2NvbEMNCj4gb21tb24uaA0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IEZlYXR1cmVzL01h bmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUludGVybmFs LmgNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBGZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvQ29tbW9uL0lwbWlQcm90b2NvbEMNCj4gb21tb24uYw0K PiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IEZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5p dmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBtaVByb3RvY29sLmMNCj4gPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiBGZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9j b2wvUGVpL0lwbWlQcGkuYw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1NtbS9JcG1pUHJvdG9jb2wu Yw0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBr Zy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL0R4ZS9JcG1pUHJvdG9jb2xEeGUNCj4gPiAuaW5mDQo+ ID4NCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wv RHhlL0lwbWlQcm90b2NvbER4ZQ0KPiA+IC5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+IGluZGV4IDAwMDAwMDAwMDAuLmZmNWVjNTZjNzMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4g KysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29s L0R4ZS9JcG1pUHJvdG9jbw0KPiA+ICsrKyBsRHhlLmluZg0KPiA+IEBAIC0wLDAgKzEsNTAgQEAN Cj4gPiArIyMgQGZpbGUNCj4gPiArIyBJUE1JIFByb3RvY29sIERYRSBEcml2ZXIuDQo+ID4gKyMN Cj4gPiArIyBDb3B5cmlnaHQgKEMpIDIwMjMgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBB bGwgcmlnaHRzDQo+ID4gK3Jlc2VydmVkLjxCUj4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudCAjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5G X1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxZA0KPiA+ICsgIEJBU0VfTkFN RSAgICAgICAgICAgICAgICAgICAgICA9IElwbWlEeGUNCj4gPiArICBGSUxFX0dVSUQgICAgICAg ICAgICAgICAgICAgICAgPSBCQzQxQjBDMi05RDhBLTQyQjUtQTI4Ri0wMkNFMEQ0QTZDMjgNCj4g PiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ID4gKyAg VkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gKyAgRU5UUllfUE9JTlQg ICAgICAgICAgICAgICAgICAgID0gRHhlSXBtaUVudHJ5DQo+ID4gKyAgVU5MT0FEX0lNQUdFICAg ICAgICAgICAgICAgICAgID0gSXBtaVVubG9hZEltYWdlDQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMg IFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgQVJNIEFBUkNINjQNCj4g PiArIw0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgSXBtaVByb3RvY29sLmMNCj4gPiAr ICAuLi9Db21tb24vSXBtaVByb3RvY29sQ29tbW9uLmMNCj4gPiArICAuLi9Db21tb24vSXBtaVBy b3RvY29sQ29tbW9uLmgNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRl UGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgTWFu YWdlYWJpbGl0eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlD bGFzc2VzXQ0KPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIE1h bmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaWINCj4gPiArICBNYW5hZ2VhYmlsaXR5VHJhbnNw b3J0TGliDQo+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPiArICBVZWZpQm9vdFNlcnZp Y2VzVGFibGVMaWINCj4gPiArDQo+ID4gK1tQcm90b2NvbHNdDQo+ID4gKyAgZ0lwbWlQcm90b2Nv bEd1aWQgICAgICAgICAgICAgICAjIFBST1RPQ09MIEFMV0FZU19QUk9EVUNFRA0KPiA+ICsNCj4g PiArW0d1aWRzXQ0KPiA+ICsgIGdNYW5hZ2VhYmlsaXR5UHJvdG9jb2xJcG1pR3VpZA0KPiA+ICsg IGdNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzR3VpZA0KPiA+ICsNCj4gPiArW0ZpeGVkUGNkXQ0K PiA+ICsgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RJcG1pS2NzQmFzZUFkZHJlc3MNCj4g PiArDQo+ID4gK1tEZXBleF0NCj4gPiArICBUUlVFDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvRmVh dHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBp UGVpLmluZg0KPiA+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVBy b3RvY29sL1BlaS9JcG1pUHBpUGVpLmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXggMDAwMDAwMDAwMC4uNGUwMDY5M2Y2NA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvUGVpL0lw bWlQcGlQZWkuDQo+ID4gKysrIGluZg0KPiA+IEBAIC0wLDAgKzEsNTMgQEANCj4gPiArIyMgQGZp bGUNCj4gPiArIyBJUE1JIFByb3RvY29sIFBFSSBEcml2ZXIuDQo+ID4gKyMNCj4gPiArIyBDb3B5 cmlnaHQgKEMpIDIwMjMgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzDQo+ ID4gK3Jlc2VydmVkLjxCUj4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudCAjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAg ICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxZA0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAg ICAgICAgICAgICA9IElwbWlQZWkNCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAg ICAgPSA3ODMyRjk4OS1DQjcyLTQ3MTUtQURDQS0zNUMwQjAzMTg1NkMNCj4gPiArICBNT0RVTEVf VFlQRSAgICAgICAgICAgICAgICAgICAgPSBQRUlNDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAg ICAgICAgICAgICAgID0gMS4wDQo+ID4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAg ID0gUGVpSXBtaUVudHJ5DQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgVGhlIGZvbGxvd2luZyBpbmZv cm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUNCj4g YnVpbGQgdG9vbHMuDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAg ICAgPSBJQTMyIFg2NCBBUk0gQUFSQ0g2NA0KPiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10N Cj4gPiArICBJcG1pUHBpLmMNCj4gPiArICBJcG1pUHBpSW50ZXJuYWwuaA0KPiA+ICsgIC4uL0Nv bW1vbi9JcG1pUHJvdG9jb2xDb21tb24uYw0KPiA+ICsgIC4uL0NvbW1vbi9JcG1pUHJvdG9jb2xD b21tb24uaA0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArICBNYW5hZ2VhYmls aXR5UGtnL01hbmFnZWFiaWxpdHlQa2cuZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNd DQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgTWVtb3J5QWxs b2NhdGlvbkxpYg0KPiA+ICsgIE1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaWINCj4gPiAr ICBNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliDQo+ID4gKyAgUGVpbUVudHJ5UG9pbnQNCj4gPiAr ICBNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliDQo+IER1cGxpY2F0ZSBNYW5hZ2VhYmlsaXR5VHJh bnNwb3J0TGliDQpPaywgd2lsbCBmaXggaXQuDQoNCj4gPiArDQo+ID4gK1tQcGlzXQ0KPiA+ICsg IGdQZWlJcG1pUHBpR3VpZCAgICAgICAjIFBQSSBBTFdBWVMgUFJPRFVDRUQNCj4gPiArDQo+ID4g K1tHdWlkc10NCj4gPiArICBnTWFuYWdlYWJpbGl0eVByb3RvY29sSXBtaUd1aWQNCj4gPiArICBn TWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0d1aWQNCj4gPiArDQo+ID4gK1tGaXhlZFBjZF0NCj4g PiArICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkSXBtaUtjc0Jhc2VBZGRyZXNzDQo+ID4g Kw0KPiA+ICtbRGVwZXhdDQo+ID4gKyAgVFJVRQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL0Zl YXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVBy b3RvY29sU20NCj4gbQ0KPiA+IC5pbmYNCj4gPg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sU20NCj4gbQ0KPiA+IC5p bmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmNhZTE0 NjJmNGYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJp bGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1NtbS9JcG1pUHJvdG9jbw0KPiA+ICsrKyBs U21tLmluZg0KPiA+IEBAIC0wLDAgKzEsNTIgQEANCj4gPiArIyMgQGZpbGUNCj4gPiArIyBJUE1J IFByb3RvY29sIFNNTSBEcml2ZXIuDQo+ID4gKyMNCj4gPiArIyBDb3B5cmlnaHQgKEMpIDIwMjMg QWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzDQo+ID4gK3Jlc2VydmVkLjxC Uj4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjIw0KPiA+ ICsNCj4gPiArIw0KPiA+ICsjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVy ZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlDQo+IGJ1aWxkIHRvb2xzLg0KPiA+ICsj DQo+ID4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgQVJNIEFB UkNINjQNCj4gPiArIw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZfVkVSU0lPTiAgICAgICAg ICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMWQNCj4gPiArICBCQVNFX05BTUUgICAgICAgICAg ICAgICAgICAgICAgICAgICA9IElwbWlTbW0NCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAg ICAgICAgICAgICAgICA9IENERDVEMURFLUUzRDMtNEIxRi04Njg5LURDQzY2MTU2MUJCNA0KPiA+ ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICAgICAgID0gRFhFX1NNTV9EUklWRVIN Cj4gPiArICBQSV9TUEVDSUZJQ0FUSU9OX1ZFUlNJT04gICAgICAgICAgICA9IDB4MDAwMTAwMEEN Cj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsg IEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICAgICAgID0gU21tSXBtaUVudHJ5DQo+ID4g Kw0KPiA+ICtbU291cmNlc10NCj4gPiArICBJcG1pUHJvdG9jb2wuYw0KPiA+ICsgIC4uL0NvbW1v bi9JcG1pUHJvdG9jb2xDb21tb24uYw0KPiA+ICsgIC4uL0NvbW1vbi9JcG1pUHJvdG9jb2xDb21t b24uaA0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArICBNYW5hZ2VhYmlsaXR5 UGtnL01hbmFnZWFiaWxpdHlQa2cuZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgTWFuYWdlYWJpbGl0 eVRyYW5zcG9ydEhlbHBlckxpYg0KPiA+ICsgIE1hbmFnZWFiaWxpdHlUcmFuc3BvcnRMaWINCj4g PiArICBTbW1TZXJ2aWNlc1RhYmxlTGliDQo+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4g PiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiArDQo+ID4gK1tQcm90b2NvbHNdDQo+ ID4gKyAgZ1NtbUlwbWlQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAjIFBST1RPQ09MIEFMV0FZ U19QUk9EVUNFRA0KPiA+ICsNCj4gPiArW0d1aWRzXQ0KPiA+ICsgIGdNYW5hZ2VhYmlsaXR5UHJv dG9jb2xJcG1pR3VpZA0KPiA+ICsgIGdNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzR3VpZA0KPiA+ ICsNCj4gPiArW0ZpeGVkUGNkXQ0KPiA+ICsgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RJ cG1pS2NzQmFzZUFkZHJlc3MNCj4gPiArDQo+ID4gK1tEZXBleF0NCj4gPiArICBUUlVFDQo+ID4g ZGlmZiAtLWdpdA0KPiA+DQo+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwv SXBtaVByb3RvY29sL0NvbW1vbi9JcG1pUHJvdG9jDQo+IG9sDQo+ID4gQ29tbW9uLmgNCj4gPg0K PiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9Db21t b24vSXBtaVByb3RvYw0KPiBvbA0KPiA+IENvbW1vbi5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi41N2I5MmNmMmJlDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKw0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90 b2NvbC9Db21tb24vSXBtaVByb3QNCj4gPiArKysgb2NvbENvbW1vbi5oDQo+ID4gQEAgLTAsMCAr MSwxMDggQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKw0KPiA+ICsgICAgSVBNSSBNYW5hZ2VhYmls aXR5IFByb3RvY29sIGNvbW1vbiBoZWFkZXIgZmlsZS4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0 IChDKSAyMDIzIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cw0KPiA+ICty ZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQgKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIE1BTkFHRUFCSUxJVFlfSVBNSV9DT01N T05fSF8NCj4gPiArI2RlZmluZSBNQU5BR0VBQklMSVRZX0lQTUlfQ09NTU9OX0hfDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9JcG1pS2NzLmg+ICNpbmNsdWRlDQo+ID4g KzxMaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRMaWIuaD4NCj4gPiArDQo+ID4gKy8vLw0K PiA+ICsvLy8gSVBNSSBLQ1MgaGFyZHdhcmUgaW5mb3JtYXRpb24uDQo+ID4gKy8vLw0KPiA+ICsj ZGVmaW5lIElQTUlfS0NTX0JBU0VfQUREUkVTUyAgUGNkR2V0MTYgKFBjZElwbWlLY3NCYXNlQWRk cmVzcykNCj4gPiArI2RlZmluZSBJUE1JX0tDU19SRUdfREFUQV9JTiAgIElQTUlfS0NTX0JBU0Vf QUREUkVTUyArDQo+IElQTUlfS0NTX0RBVEFfSU5fUkVHSVNURVJfT0ZGU0VUDQo+ID4gKyNkZWZp bmUgSVBNSV9LQ1NfUkVHX0RBVEFfT1VUICBJUE1JX0tDU19CQVNFX0FERFJFU1MgKw0KPiBJUE1J X0tDU19EQVRBX09VVF9SRUdJU1RFUl9PRkZTRVQNCj4gPiArI2RlZmluZSBJUE1JX0tDU19SRUdf Q09NTUFORCAgIElQTUlfS0NTX0JBU0VfQUREUkVTUyArDQo+IElQTUlfS0NTX0NPTU1BTkRfUkVH SVNURVJfT0ZGU0VUDQo+ID4gKyNkZWZpbmUgSVBNSV9LQ1NfUkVHX1NUQVRVUyAgICBJUE1JX0tD U19CQVNFX0FERFJFU1MgKw0KPiBJUE1JX0tDU19TVEFUVVNfUkVHSVNURVJfT0ZGU0VUDQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9ucyBzZXR1cCB0aGUgSVBNSSB0cmFuc3Bv cnQgaGFyZHdhcmUgaW5mb3JtYXRpb24NCj4gPiArYWNjb3JkaW5nDQo+ID4gKyAgdG8gdGhlIHNw ZWNpZmljYXRpb24gb2YgdHJhbnNwb3J0IHRva2VuIGFjcXVpcmVkIGZyb20gdHJhbnNwb3J0IGxp YnJhcnkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBUcmFuc3BvcnRUb2tlbiAg ICAgICBUaGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiArICBAcGFyYW1bb3V0XSAgICAgICAg SGFyZHdhcmVJbmZvcm1hdGlvbiAgUG9pbnRlciB0byByZWNlaXZlIHRoZSBoYXJkd2FyZQ0KPiBp bmZvcm1hdGlvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg IEhhcmR3YXJlIGluZm9ybWF0aW9uIGlzIHJldHVybmVkIGluDQo+IEhhcmR3YXJlSW5mb3JtYXRp b24uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxlciBtdXN0IGZy ZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yDQo+IEhhcmR3YXJlSW5mb3JtYXRpb24NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSBpdCBkb2Vzbid0IG5lZWQgaXQu DQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIE5vIGhhcmR3YXJlIGluZm9y bWF0aW9uIGZvciB0aGUNCj4gc3BlY2lmaWNhdGlvbiBzcGVjaWZpZWQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHRyYW5zcG9ydCB0b2tlbi4NCj4gPiArKiov DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2V0dXBJcG1pVHJhbnNwb3J0SGFyZHdhcmVJbmZvcm1h dGlvbiAoDQo+ID4gKyAgSU4gICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAg ICAgICAgICAgKlRyYW5zcG9ydFRva2VuLA0KPiA+ICsgIE9VVCAgTUFOQUdFQUJJTElUWV9UUkFO U1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJT04NCj4gPiArKkhhcmR3YXJlSW5mb3JtYXRpb24NCj4g PiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbnMgc2V0dXAgdGhl IGZpbmFsIGhlYWRlci9ib2R5L3RyYWlsZXIgcGFja2V0cyBmb3INCj4gPiArICB0aGUgYWNxdWly ZWQgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAg IFRyYW5zcG9ydFRva2VuICBUaGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiArICBAcGFyYW1b aW5dICAgICAgICAgTmV0RnVuY3Rpb24gICAgIElQTUkgZnVuY3Rpb24uDQo+ID4gKyAgQHBhcmFt W2luXSAgICAgICAgIENvbW1hbmQgICAgICAgICBJUE1JIGNvbW1hbmQuDQo+ID4gKyAgQHBhcmFt W291dF0gICAgICAgIFBhY2tldEhlYWRlciAgICBUaGUgcG9pbnRlciB0byByZWNlaXZlIGhlYWRl ciBvZg0KPiByZXF1ZXN0Lg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgICBQYWNrZXRCb2R5ICAg ICAgVGhlIHJlcXVlc3QgYm9keS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFdoZW4gSU4sIGl0IGlzIHRoZSBjYWxsZXIncyByZXF1ZXN0IGJvZHkuDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIE9VVCBhbmQgTlVMTCwgdGhl IHJlcXVlc3QgYm9keSBpcyBub3QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoYW5nZWQuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBXaGVlIG91dCBhbmQgbm9uLU5VTEwsIHRoZSByZXF1ZXN0IGJvZHkgaXMNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgdG8gY29tZm9ydCB0aGUgdHJh bnNwb3J0IGludGVyZmFjZS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gICAgUGFja2V0Qm9keVNp emUgIFRoZSByZXF1ZXN0IGJvZHkgc2l6ZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFdoZW4gSU4gYW5kIG5vbi16ZXJvLCBpdCBpcyB0aGUgbmV3IGRhdGENCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCBvZiByZXF1ZXN0 IGJvZHkuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIElO IGFuZCB6ZXJvLCB0aGUgcmVxdWVzdCBib2R5IGlzIHVuY2hhbmdlZC4NCj4gPiArICBAcGFyYW1b b3V0XSAgICAgICAgUGFja2V0VHJhaWxlciAgIFRoZSBwb2ludGVyIHRvIHJlY2VpdmUgdHJhaWxl ciBvZiByZXF1ZXN0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgUmVxdWVzdCBwYWNrZXQgaXMgcmV0dXJuZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQ T1JURUQgICAgICAgIFJlcXVlc3QgcGFja2V0IGlzIG5vdCByZXR1cm5lZCBiZWNhdXNlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB1bnN1cHBvcnRlZCB0cmFuc3Bv cnQgaW50ZXJmYWNlLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZXR1cElwbWlS ZXF1ZXN0VHJhbnNwb3J0UGFja2V0ICgNCj4gPiArICBJTiAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQ T1JUX1RPS0VOICAgICpUcmFuc3BvcnRUb2tlbiwNCj4gPiArICBJTiAgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5ldEZ1bmN0aW9uLA0KPiA+ICsgIElOICAgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZCwNCj4gPiArICBPVVQgIE1BTkFHRUFCSUxJVFlf VFJBTlNQT1JUX0hFQURFUiAgICpQYWNrZXRIZWFkZXIgT1BUSU9OQUwsDQo+ID4gKyAgSU4gT1VU IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAqKlBhY2tldEJvZHkgT1BUSU9OQUwsDQo+ ID4gKyAgSU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAqUGFja2V0Qm9keVNp emUgT1BUSU9OQUwsDQo+ID4gKyAgT1VUICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UUkFJTEVS ICAqUGFja2V0VHJhaWxlciBPUFRJT05BTA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBDb21tb24gY29kZSB0byBzdWJtaXQgSVBNSSBjb21tYW5kcw0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICAgICAgICAgVHJhbnNwb3J0VG9rZW4gICAgVFJhbnNwb3J0IHRva2VuLg0KPiA+ ICsgIEBwYXJhbVtpbl0gICAgICAgICBOZXRGdW5jdGlvbiAgICAgICBOZXQgZnVuY3Rpb24gb2Yg dGhlIGNvbW1hbmQuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIENvbW1hbmQgICAgICAgICAg IElQTUkgQ29tbWFuZC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgICAgUmVxdWVzdERhdGEgICAg ICAgQ29tbWFuZCBSZXF1ZXN0IERhdGEuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIFJlcXVl c3REYXRhU2l6ZSAgIFNpemUgb2YgQ29tbWFuZCBSZXF1ZXN0IERhdGEuDQo+ID4gKyAgQHBhcmFt W291dF0gICAgICAgIFJlc3BvbnNlRGF0YSAgICAgIENvbW1hbmQgUmVzcG9uc2UgRGF0YS4gVGhl DQo+IGNvbXBsZXRpb24gY29kZSBpcyB0aGUgZmlyc3QgYnl0ZSBvZiByZXNwb25zZSBkYXRhLg0K PiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgICBSZXNwb25zZURhdGFTaXplICBTaXplIG9mIENvbW1h bmQgUmVzcG9uc2UgRGF0YS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgIFRoZSBjb21tYW5kIGJ5dGUgc3RyZWFtIHdhcyBzdWNjZXNzZnVsbHkNCj4gc3VibWl0 IHRvIHRoZSBkZXZpY2UgYW5kIGEgcmVzcG9uc2Ugd2FzIHN1Y2Nlc3NmdWxseSByZWNlaXZlZC4N Cj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgVGhlIGNvbW1hbmQgd2FzIG5v dCBzdWNjZXNzZnVsbHkgc2VudA0KPiB0byB0aGUgZGV2aWNlIG9yIGEgcmVzcG9uc2Ugd2FzIG5v dCBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwg RUZJX05PVF9SRUFEWSAgICAgICAgICBJcG1pIERldmljZSBpcyBub3QgcmVhZHkgZm9yIElwbWkg Y29tbWFuZA0KPiBhY2Nlc3MuDQo+ID4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAg IElwbWkgRGV2aWNlIGhhcmR3YXJlIGVycm9yLg0KPiA+ICsgIEByZXR2YWwgRUZJX1RJTUVPVVQg ICAgICAgICAgICBUaGUgY29tbWFuZCB0aW1lIG91dC4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgICAgICAgVGhlIGNvbW1hbmQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgc2VudA0KPiB0 byB0aGUgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBUaGUg cmVzb3VyY2UgYWxsb2NhdGlvbiBpcyBvdXQgb2YNCj4gcmVzb3VyY2Ugb3IgZGF0YSBzaXplIGVy cm9yLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtDb21tb25JcG1pU3VibWl0Q29t bWFuZCAoDQo+ID4gKyAgSU4gICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAqVHJh bnNwb3J0VG9rZW4sDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAg ICBOZXRGdW5jdGlvbiwNCj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgIENvbW1hbmQsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAg ICAqUmVxdWVzdERhdGEgT1BUSU9OQUwsDQo+ID4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICBSZXF1ZXN0RGF0YVNpemUsDQo+ID4gKyAgT1VUICAgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAqUmVzcG9uc2VEYXRhIE9QVElPTkFMLA0KPiA+ICsgIElOIE9V VCBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgKlJlc3BvbnNlRGF0YVNpemUgT1BUSU9O QUwNCj4gPiArICApOw0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEv RmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1p UHBpSW50ZXJuYWwNCj4gPiAuaA0KPiA+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2 ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpSW50ZXJuYWwNCj4gPiAuaA0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uYmJlMGM4YzVjYg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNh bC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGlJbnRlDQo+ID4gKysrIHJuYWwuaA0KPiA+IEBAIC0w LDAgKzEsMjUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKw0KPiA+ICsgICAgSVBNSSBNYW5hZ2Vh YmlsaXR5IFBQSSBpbnRlcm5hbCBoZWFkZXIgZmlsZS4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0 IChDKSAyMDIzIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cw0KPiA+ICty ZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQgKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIE1BTkFHRUFCSUxJVFlfSVBNSV9QUElf SU5URVJOQUxfSF8NCj4gPiArI2RlZmluZSBNQU5BR0VBQklMSVRZX0lQTUlfUFBJX0lOVEVSTkFM X0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxQcGkvSXBtaVBwaS5oPg0KPiA+ICsNCj4gPiArI2RlZmlu ZSBNQU5BR0VBQklMSVRZX0lQTUlfUFBJX0lOVEVSTkFMX1NJR05BVFVSRQ0KPiBTSUdOQVRVUkVf MzIgKCdJJywNCj4gPiArJ1AnLCAnUCcsICdJJykNCj4gPiArDQo+ID4gKyNkZWZpbmUgTUFOQUdF QUJJTElUWV9JUE1JX1BQSV9JTlRFUk5BTF9GUk9NX0xJTksoYSkgIENSIChhLA0KPiA+ICtQRUlf SVBNSV9QUElfSU5URVJOQUwsIFBlaUlwbWlQcGksDQo+ID4gK01BTkFHRUFCSUxJVFlfSVBNSV9Q UElfSU5URVJOQUxfU0lHTkFUVVJFKQ0KPiA+ICsNCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmU7DQo+ID4gKyAgTUFO QUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICpUcmFuc3BvcnRUb2tlbjsNCj4gPiArICBQRUlf SVBNSV9QUEkgICAgICAgICAgICAgICAgICAgUGVpSXBtaVBwaTsNCj4gPiArfSBQRUlfSVBNSV9Q UElfSU5URVJOQUw7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLy8gTUFOQUdFQUJJTElUWV9JUE1JX1BQ SV9JTlRFUk5BTF9IXw0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL0ZlYXR1cmVzL01hbmFnZWFi aWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9Db21tb24vSXBtaVByb3RvYw0KPiBvbA0K PiA+IENvbW1vbi5jDQo+ID4NCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNh bC9JcG1pUHJvdG9jb2wvQ29tbW9uL0lwbWlQcm90b2MNCj4gb2wNCj4gPiBDb21tb24uYw0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZDEyOTRkMmY3Yw0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvQ29tbW9uL0lwbWlQcm90DQo+ID4gKysrIG9jb2xDb21t b24uYw0KPiA+IEBAIC0wLDAgKzEsMjUyIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsNCj4gPiAr ICBJUE1JIE1hbmFnZWFiaWxpdHkgUHJvdG9jb2wgY29tbW9uIGZpbGUuDQo+ID4gKw0KPiA+ICsg IENvcHlyaWdodCAoQykgMjAyMyBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdo dHMNCj4gPiArIHJlc2VydmVkLjxCUj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKyNpbmNsdWRlIDxVZWZp Lmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1 ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxs b2NhdGlvbkxpYi5oPiAjaW5jbHVkZQ0KPiA+ICs8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNw b3J0SXBtaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNw b3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiSXBtaVByb3RvY29sQ29tbW9uLmgiDQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9ucyBzZXR1cCB0aGUgSVBNSSB0cmFu c3BvcnQgaGFyZHdhcmUgaW5mb3JtYXRpb24NCj4gPiArYWNjb3JkaW5nDQo+ID4gKyAgdG8gdGhl IHNwZWNpZmljYXRpb24gb2YgdHJhbnNwb3J0IHRva2VuIGFjcXVpcmVkIGZyb20gdHJhbnNwb3J0 IGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBUcmFuc3BvcnRUb2tl biAgICAgICBUaGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiArICBAcGFyYW1bb3V0XSAgICAg ICAgSGFyZHdhcmVJbmZvcm1hdGlvbiAgUG9pbnRlciB0byByZWNlaXZlIHRoZSBoYXJkd2FyZQ0K PiBpbmZvcm1hdGlvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgIEhhcmR3YXJlIGluZm9ybWF0aW9uIGlzIHJldHVybmVkIGluDQo+IEhhcmR3YXJlSW5mb3Jt YXRpb24uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxlciBtdXN0 IGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yDQo+IEhhcmR3YXJlSW5mb3JtYXRpb24NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSBpdCBkb2Vzbid0IG5lZWQg aXQuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIE5vIGhhcmR3YXJlIGlu Zm9ybWF0aW9uIGZvciB0aGUNCj4gc3BlY2lmaWNhdGlvbiBzcGVjaWZpZWQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHRyYW5zcG9ydCB0b2tlbi4NCj4gPiAr ICAjcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgTm90IGVub3VnaCBtZW1vcnkgZm9yDQo+ IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0tDU19IQVJEV0FSRV9JTkZPLg0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtTZXR1cElwbWlUcmFuc3BvcnRIYXJkd2FyZUluZm9ybWF0aW9u ICgNCj4gPiArICBJTiAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAgICAgICAgICAg ICAgICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gKyAgT1VUICBNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9IQVJEV0FSRV9JTkZPUk1BVElPTg0KPiA+ICsqSGFyZHdhcmVJbmZvcm1hdGlvbg0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0tDU19IQVJEV0FSRV9J TkZPDQo+ICpLY3NIYXJkd2FyZUluZm87DQo+ID4gKw0KPiA+ICsgIEtjc0hhcmR3YXJlSW5mbyA9 IEFsbG9jYXRlUG9vbCAoc2l6ZW9mDQo+ID4gKyAoTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfS0NT X0hBUkRXQVJFX0lORk8pKTsNCj4gPiArICBpZiAoS2NzSGFyZHdhcmVJbmZvID09IE5VTEwpIHsN Cj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTm90IGVub3VnaCBtZW1vcnkgZm9y DQo+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0tDU19IQVJEV0FSRV9JTkZPLlxuIiwNCj4gX19G VU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoQ29tcGFyZUd1aWQgKCZnTWFuYWdlYWJpbGl0eVRyYW5z cG9ydEtjc0d1aWQsIFRyYW5zcG9ydFRva2VuLQ0KPiA+VHJhbnNwb3J0LT5NYW5hZ2VhYmlsaXR5 VHJhbnNwb3J0U3BlY2lmaWNhdGlvbikpIHsNCj4gPiArICAgIC8vIFRoaXMgaXMgS0NTIHRyYW5z cG9ydCBpbnRlcmZhY2UuDQo+ID4gKyAgICBLY3NIYXJkd2FyZUluZm8tPk1lbW9yeU1hcCAgICAg ICAgICAgICAgICAgICAgPQ0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9LQ1NfSU9fTUFQX0lP Ow0KPiA+ICsgICAgS2NzSGFyZHdhcmVJbmZvLT5Jb0Jhc2VBZGRyZXNzLklvQWRkcmVzczE2ICAg ID0NCj4gSVBNSV9LQ1NfQkFTRV9BRERSRVNTOw0KPiA+ICsgICAgS2NzSGFyZHdhcmVJbmZvLT5J b0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMTYgID0NCj4gSVBNSV9LQ1NfUkVHX0RBVEFfSU47DQo+ ID4gKyAgICBLY3NIYXJkd2FyZUluZm8tPklvRGF0YU91dEFkZHJlc3MuSW9BZGRyZXNzMTYgPQ0K PiBJUE1JX0tDU19SRUdfREFUQV9PVVQ7DQo+ID4gKyAgICBLY3NIYXJkd2FyZUluZm8tPklvQ29t bWFuZEFkZHJlc3MuSW9BZGRyZXNzMTYgPQ0KPiBJUE1JX0tDU19SRUdfQ09NTUFORDsNCj4gPiAr ICAgIEtjc0hhcmR3YXJlSW5mby0+SW9TdGF0dXNBZGRyZXNzLklvQWRkcmVzczE2ICA9DQo+IElQ TUlfS0NTX1JFR19TVEFUVVM7DQo+ID4gKyAgICAqSGFyZHdhcmVJbmZvcm1hdGlvbiAgICAgICAg ICAgICAgICAgICAgICAgICAgPQ0KPiA+ICsNCj4gKE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0hB UkRXQVJFX0lORk9STUFUSU9OKUtjc0hhcmR3YXJlSW4NCj4gZm87DQo+ID4gKyAgICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJS T1IsICIlYTogTm8gaW1wbGVtZW50YXRpb24gb2Ygc2V0dGluZyBoYXJkd2FyZQ0KPiBpbmZvcm1h dGlvbi4iLCBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsg IH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbnMgc2V0dXAgdGhlIGZpbmFsIGhlYWRlci9i b2R5L3RyYWlsZXIgcGFja2V0cyBmb3INCj4gPiArICB0aGUgYWNxdWlyZWQgdHJhbnNwb3J0IGlu dGVyZmFjZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIFRyYW5zcG9ydFRva2Vu ICBUaGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiArICBAcGFyYW1baW5dICAgICAgICAgTmV0 RnVuY3Rpb24gICAgIElQTUkgZnVuY3Rpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIENv bW1hbmQgICAgICAgICBJUE1JIGNvbW1hbmQuDQo+ID4gKyAgQHBhcmFtW291dF0gICAgICAgIFBh Y2tldEhlYWRlciAgICBUaGUgcG9pbnRlciB0byByZWNlaXZlIGhlYWRlciBvZg0KPiByZXF1ZXN0 Lg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgICBQYWNrZXRCb2R5ICAgICAgVGhlIHJlcXVlc3Qg Ym9keS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gSU4s IGl0IGlzIHRoZSBjYWxsZXIncyByZXF1ZXN0IGJvZHkuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBXaGVuIE9VVCBhbmQgTlVMTCwgdGhlIHJlcXVlc3QgYm9keSBp cyBub3QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQu DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIE9VVCBhbmQg bm9uLU5VTEwsIHRoZSByZXF1ZXN0IGJvZHkgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYW5nZWQgdG8gY29uZm9ybSB0aGUgdHJhbnNwb3J0IGludGVyZmFj ZS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gICAgUGFja2V0Qm9keVNpemUgIFRoZSByZXF1ZXN0 IGJvZHkgc2l6ZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdo ZW4gT1VUIGFuZCBub24temVybywgaXQgaXMgdGhlIG5ldyBkYXRhDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggb2YgcmVxdWVzdCBib2R5Lg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBPVVQgYW5kIHplcm8sIHRo ZSByZXF1ZXN0IGJvZHkgaXMgdW5jaGFuZ2VkLg0KPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgICBQ YWNrZXRUcmFpbGVyICAgVGhlIHBvaW50ZXIgdG8gcmVjZWl2ZSB0cmFpbGVyIG9mIHJlcXVlc3Qu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBSZXF1ZXN0IHBh Y2tldCBpcyByZXR1cm5lZC4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAg UmVxdWVzdCBwYWNrZXQgaXMgbm90IHJldHVybmVkIGJlY2F1c2UNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIHVuc3VwcG9ydGVkIHRyYW5zcG9ydCBpbnRlcmZhY2Uu DQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1NldHVwSXBtaVJlcXVlc3RUcmFuc3Bv cnRQYWNrZXQgKA0KPiA+ICsgIElOICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAg KlRyYW5zcG9ydFRva2VuLA0KPiA+ICsgIElOICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgTmV0RnVuY3Rpb24sDQo+ID4gKyAgSU4gICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDb21tYW5kLA0KPiA+ICsgIE9VVCAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfSEVB REVSICAgKlBhY2tldEhlYWRlciBPUFRJT05BTCwNCj4gPiArICBJTiBPVVQgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICoqUGFja2V0Qm9keSBPUFRJT05BTCwNCj4gPiArICBJTiBPVVQg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICpQYWNrZXRCb2R5U2l6ZSBPUFRJT05BTCwN Cj4gPiArICBPVVQgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RSQUlMRVIgICpQYWNrZXRUcmFp bGVyIE9QVElPTkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgTUFOQUdFQUJJTElUWV9JUE1J X1RSQU5TUE9SVF9IRUFERVIgICpJcG1pSGVhZGVyOw0KPiA+ICsNCj4gPiArICBpZiAoQ29tcGFy ZUd1aWQgKCZnTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0d1aWQsIFRyYW5zcG9ydFRva2VuLQ0K PiA+VHJhbnNwb3J0LT5NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0U3BlY2lmaWNhdGlvbikpIHsNCj4g PiArICAgIC8vIFRoaXMgaXMgS0NTIHRyYW5zcG9ydCBpbnRlcmZhY2UuDQo+ID4gKyAgICBJcG1p SGVhZGVyID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+IChNQU5BR0VBQklMSVRZX0lQTUlf VFJBTlNQT1JUX0hFQURFUikpOw0KPiA+ICsgICAgaWYgKElwbWlIZWFkZXIgPT0gTlVMTCkgew0K PiA+ICsgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICB9DQo+ID4g Kw0KPiA+ICsgICAgSXBtaUhlYWRlci0+Q29tbWFuZCA9IENvbW1hbmQ7DQo+ID4gKyAgICBJcG1p SGVhZGVyLT5MdW4gICAgID0gMDsNCj4gPiArICAgIElwbWlIZWFkZXItPk5ldEZuICAgPSBOZXRG dW5jdGlvbjsNCj4gPiArICAgIGlmIChQYWNrZXRIZWFkZXIgIT0gTlVMTCkgew0KPiA+ICsgICAg ICAqUGFja2V0SGVhZGVyID0gKE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0hFQURFUg0KPiAqKUlw bWlIZWFkZXI7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAoUGFja2V0VHJhaWxlciAhPSBOVUxM KSB7DQo+ID4gKyAgICAgICpQYWNrZXRUcmFpbGVyID0gTlVMTDsNCj4gPiArICAgIH0NCj4gPiAr ICAgIGlmIChQYWNrZXRCb2R5ICE9IE5VTEwpIHsNCj4gPiArICAgICAgKlBhY2tldEJvZHkgPSBO VUxMOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgaWYgKFBhY2tldEJvZHlTaXplICE9IE5VTEwpIHsN Cj4gPiArICAgICAgKlBhY2tldEJvZHlTaXplID0gMDsNCj4gPiArICAgIH0NCj4gPiArICB9IGVs c2Ugew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBObyBpbXBsZW1lbnRhdGlv biBvZiBidWlsZGluZyB1cA0KPiBwYWNrZXQuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICBB U1NFUlQgKEZBTFNFKTsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDb21tb24gY29kZSB0byBzdWJtaXQgSVBNSSBj b21tYW5kcw0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICAgICAgVHJhbnNwb3J0VG9rZW4g ICAgVFJhbnNwb3J0IHRva2VuLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBOZXRGdW5jdGlv biAgICAgICBOZXQgZnVuY3Rpb24gb2YgdGhlIGNvbW1hbmQuDQo+ID4gKyAgQHBhcmFtW2luXSAg ICAgICAgIENvbW1hbmQgICAgICAgICAgIElQTUkgQ29tbWFuZC4NCj4gPiArICBAcGFyYW1baW5d ICAgICAgICAgUmVxdWVzdERhdGEgICAgICAgQ29tbWFuZCBSZXF1ZXN0IERhdGEuDQo+ID4gKyAg QHBhcmFtW2luXSAgICAgICAgIFJlcXVlc3REYXRhU2l6ZSAgIFNpemUgb2YgQ29tbWFuZCBSZXF1 ZXN0IERhdGEuDQo+ID4gKyAgQHBhcmFtW291dF0gICAgICAgIFJlc3BvbnNlRGF0YSAgICAgIENv bW1hbmQgUmVzcG9uc2UgRGF0YS4gVGhlDQo+IGNvbXBsZXRpb24gY29kZSBpcyB0aGUgZmlyc3Qg Ynl0ZSBvZiByZXNwb25zZSBkYXRhLg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgICBSZXNwb25z ZURhdGFTaXplICBTaXplIG9mIENvbW1hbmQgUmVzcG9uc2UgRGF0YS4NCj4gPiArDQo+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBjb21tYW5kIGJ5dGUgc3RyZWFtIHdh cyBzdWNjZXNzZnVsbHkNCj4gc3VibWl0IHRvIHRoZSBkZXZpY2UgYW5kIGEgcmVzcG9uc2Ugd2Fz IHN1Y2Nlc3NmdWxseSByZWNlaXZlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAg ICAgICAgVGhlIGNvbW1hbmQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgc2VudA0KPiB0byB0aGUgZGV2 aWNlIG9yIGEgcmVzcG9uc2Ugd2FzIG5vdCBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQgZnJvbSB0aGUg ZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgICAgICBJcG1pIERldmlj ZSBpcyBub3QgcmVhZHkgZm9yIElwbWkgY29tbWFuZA0KPiBhY2Nlc3MuDQo+ID4gKyAgQHJldHZh bCBFRklfREVWSUNFX0VSUk9SICAgICAgIElwbWkgRGV2aWNlIGhhcmR3YXJlIGVycm9yLg0KPiA+ ICsgIEByZXR2YWwgRUZJX1RJTUVPVVQgICAgICAgICAgICBUaGUgY29tbWFuZCB0aW1lIG91dC4N Cj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIGNvbW1hbmQgd2FzIG5v dCBzdWNjZXNzZnVsbHkgc2VudA0KPiB0byB0aGUgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgICBUaGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBpcyBvdXQgb2YNCj4g cmVzb3VyY2Ugb3IgZGF0YSBzaXplIGVycm9yLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtDb21tb25JcG1pU3VibWl0Q29tbWFuZCAoDQo+ID4gKyAgSU4gICAgIE1BTkFHRUFCSUxJ VFlfVFJBTlNQT1JUX1RPS0VOICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gKyAgSU4gICAgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRGdW5jdGlvbiwNCj4gPiArICBJTiAgICAgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmQsDQo+ID4gKyAgSU4gICAgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAqUmVxdWVzdERhdGEgT1BUSU9OQUwsDQo+ID4gKyAg SU4gICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0RGF0YVNpemUsDQo+ ID4gKyAgT1VUICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAqUmVzcG9uc2VEYXRh IE9QVElPTkFMLA0KPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg KlJlc3BvbnNlRGF0YVNpemUgT1BUSU9OQUwNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklf U1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVGhpc1JlcXVlc3REYXRh Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlz UmVxdWVzdERhdGFTaXplOw0KPiA+ICsgIE1BTkFHRUFCSUxJVFlfVFJBTlNGRVJfVE9LRU4gICAg ICAgICAgICAgICBUcmFuc2ZlclRva2VuOw0KPiA+ICsgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JU X0hFQURFUiAgICAgICAgICAgICBJcG1pVHJhbnNwb3J0SGVhZGVyOw0KPiA+ICsgIE1BTkFHRUFC SUxJVFlfVFJBTlNQT1JUX1RSQUlMRVIgICAgICAgICAgICBJcG1pVHJhbnNwb3J0VHJhaWxlcjsN Cj4gPiArICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiA+ICtU cmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzOw0KPiA+ICsNCj4gPiArICBpZiAoVHJhbnNwb3J0VG9r ZW4gPT0gTlVMTCkgew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBObyB0cmFu c3BvcnQgdG9rZSBmb3IgSVBNSVxuIiwNCj4gX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1 cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gVHJh bnNwb3J0VG9rZW4tPlRyYW5zcG9ydC0+RnVuY3Rpb24uVmVyc2lvbjFfMC0NCj4gPlRyYW5zcG9y dFN0YXR1cyAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnRUb2tlbiwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUcmFuc3BvcnRB ZGRpdGlvbmFsU3RhdHVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOyAgaWYNCj4gPiArIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogVHJhbnNwb3J0IGZvciBJ UE1JIGhhcyBwcm9ibGVtIC0gKCVyKVxuIiwNCj4gX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCj4g PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBUaGlzUmVxdWVz dERhdGEgICAgICAgPSBSZXF1ZXN0RGF0YTsNCj4gPiArICBUaGlzUmVxdWVzdERhdGFTaXplICAg PSBSZXF1ZXN0RGF0YVNpemU7DQo+ID4gKyAgSXBtaVRyYW5zcG9ydEhlYWRlciAgPSBOVUxMOw0K PiA+ICsgIElwbWlUcmFuc3BvcnRUcmFpbGVyID0gTlVMTDsNCj4gPiArICBTdGF0dXMgICAgICAg ICAgICAgICA9IFNldHVwSXBtaVJlcXVlc3RUcmFuc3BvcnRQYWNrZXQgKA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnRUb2tlbiwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgTmV0RnVuY3Rpb24sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IENvbW1hbmQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZJcG1pVHJhbnNwb3J0 SGVhZGVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGhpc1JlcXVlc3REYXRh LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGhpc1JlcXVlc3REYXRhU2l6ZSwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgJklwbWlUcmFuc3BvcnRUcmFpbGVyDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIGJ1 aWxkIHBhY2tldHMgLSAoJXIpXG4iLA0KPiBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KPiA+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZUcmFu c2ZlclRva2VuLCBzaXplb2YNCj4gKE1BTkFHRUFCSUxJVFlfVFJBTlNGRVJfVE9LRU4pKTsNCj4g PiArIFRyYW5zZmVyVG9rZW4uVHJhbnNtaXRIZWFkZXIgID0gSXBtaVRyYW5zcG9ydEhlYWRlcjsN Cj4gPiArIFRyYW5zZmVyVG9rZW4uVHJhbnNtaXRUcmFpbGVyID0gSXBtaVRyYW5zcG9ydFRyYWls ZXI7DQo+ID4gKw0KPiA+ICsgIC8vIFRyYW5zbWl0IHBhY2tldC4NCj4gPiArICBpZiAoKFRoaXNS ZXF1ZXN0RGF0YSA9PSBOVUxMKSB8fCAoVGhpc1JlcXVlc3REYXRhU2l6ZSA9PSAwKSkgew0KPiA+ ICsNCj4gPiArICAgIC8vIFRyYW5zbWl0IHBhcmFtZXRlciB3ZXJlIG5vdCBjaGFuZ2VkIGJ5DQo+ IFNldHVwSXBtaVJlcXVlc3RUcmFuc3BvcnRQYWNrZXQoKS4NCj4gPiArICAgIFRyYW5zZmVyVG9r ZW4uVHJhbnNtaXRQYWNrYWdlLlRyYW5zbWl0UGF5bG9hZCAgICA9IFJlcXVlc3REYXRhOw0KPiA+ ICsgICAgVHJhbnNmZXJUb2tlbi5UcmFuc21pdFBhY2thZ2UuVHJhbnNtaXRTaXplSW5CeXRlID0N Cj4gPiArIFJlcXVlc3REYXRhU2l6ZTsgIH0gZWxzZSB7DQo+ID4gKyAgICBUcmFuc2ZlclRva2Vu LlRyYW5zbWl0UGFja2FnZS5UcmFuc21pdFBheWxvYWQgICAgPSBUaGlzUmVxdWVzdERhdGE7DQo+ ID4gKyAgICBUcmFuc2ZlclRva2VuLlRyYW5zbWl0UGFja2FnZS5UcmFuc21pdFNpemVJbkJ5dGUg PQ0KPiA+ICsgVGhpc1JlcXVlc3REYXRhU2l6ZTsgIH0NCj4gPiArDQo+ID4gKyAgVHJhbnNmZXJU b2tlbi5UcmFuc21pdFBhY2thZ2UuVHJhbnNtaXRUaW1lb3V0SW5NaWxsaXNlY29uZCA9DQo+ID4g KyBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9OT19USU1FT1VUOw0KPiA+ICsNCj4gPiArICAvLyBS ZWNlaXZlIHBhY2tldC4NCj4gPiArICBUcmFuc2ZlclRva2VuLlJlY2VpdmVQYWNrYWdlLlJlY2Vp dmVCdWZmZXIgICAgICAgICAgICAgICAgPSBSZXNwb25zZURhdGE7DQo+ID4gKyAgVHJhbnNmZXJU b2tlbi5SZWNlaXZlUGFja2FnZS5SZWNlaXZlU2l6ZUluQnl0ZSAgICAgICAgICAgID0NCj4gKlJl c3BvbnNlRGF0YVNpemU7DQo+ID4gKyAgVHJhbnNmZXJUb2tlbi5SZWNlaXZlUGFja2FnZS5UcmFu c21pdFRpbWVvdXRJbk1pbGxpc2Vjb25kID0NCj4gPiArIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JU X05PX1RJTUVPVVQ7DQo+ID4gKyAgVHJhbnNwb3J0VG9rZW4tPlRyYW5zcG9ydC0+RnVuY3Rpb24u VmVyc2lvbjFfMC0NCj4gPlRyYW5zcG9ydFRyYW5zbWl0UmVjZWl2ZSAoDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnRUb2tl biwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZUcmFuc2ZlclRva2VuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICBpZiAoSXBtaVRyYW5zcG9ydEhl YWRlciAhPSBOVUxMKSB7DQo+ID4gKyAgICBGcmVlUG9vbCAoKFZPSUQgKilJcG1pVHJhbnNwb3J0 SGVhZGVyKTsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKElwbWlUcmFuc3BvcnRUcmFpbGVyICE9IE5V TEwpIHsNCj4gPiArICAgIEZyZWVQb29sICgoVk9JRCAqKUlwbWlUcmFuc3BvcnRUcmFpbGVyKTsg IH0NCj4gPiArDQo+ID4gKyAgaWYgKFRoaXNSZXF1ZXN0RGF0YSAhPSBOVUxMKSB7DQo+ID4gKyAg ICBGcmVlUG9vbCAoKFZPSUQgKilUaGlzUmVxdWVzdERhdGEpOyAgfQ0KPiA+ICsNCj4gPiArICAv LyBSZXR1cm4gdHJhbnNmZXIgc3RhdHVzLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzICAgICAg ICAgICAgICAgICAgICA9IFRyYW5zZmVyVG9rZW4uVHJhbnNmZXJTdGF0dXM7DQo+ID4gKyAgVHJh bnNwb3J0QWRkaXRpb25hbFN0YXR1cyA9DQo+ID4gKyBUcmFuc2ZlclRva2VuLlRyYW5zcG9ydEFk ZGl0aW9uYWxTdGF0dXM7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gc2VuZCBJUE1JIGNvbW1hbmQu XG4iLA0KPiBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBpZiAoUmVzcG9uc2VEYXRhU2l6ZSAhPSBOVUxMKSB7DQo+ID4gKyAg ICAqUmVzcG9uc2VEYXRhU2l6ZSA9DQo+ID4gK1RyYW5zZmVyVG9rZW4uUmVjZWl2ZVBhY2thZ2Uu UmVjZWl2ZVNpemVJbkJ5dGU7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4g K30NCj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZl cnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC5jDQo+ID4gYi9GZWF0dXJlcy9NYW5h Z2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC5jDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi4wNTE3NWVlNDQ4 DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBtaVByb3RvY28NCj4gPiArKysgbC5jDQo+ ID4gQEAgLTAsMCArMSwxNzcgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgVGhpcyBmaWxlIHBy b3ZpZGVzIElQTUkgUHJvdG9jb2wgaW1wbGVtZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgIENvcHly aWdodCAoQykgMjAyMyBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMNCj4g PiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50ICoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFBpRHhlLmg+DQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VN ZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5o PiAjaW5jbHVkZQ0KPiA+ICs8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRJcG1pTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaWIuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4g KyNpbmNsdWRlIDxQcm90b2NvbC9JcG1pUHJvdG9jb2wuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRl ICJJcG1pUHJvdG9jb2xDb21tb24uaCINCj4gPiArDQo+ID4gK01BTkFHRUFCSUxJVFlfVFJBTlNQ T1JUX1RPS0VOICAqbVRyYW5zcG9ydFRva2VuID0gTlVMTDsNCj4gPiArQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAgICptVHJhbnNwb3J0TmFtZTsNCj4gPiArDQo+ID4gK01BTkFHRUFCSUxJ VFlfVFJBTlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9ODQo+IG1IYXJkd2FyZUluZm9ybWF0aW9u Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBzZXJ2aWNlIGVuYWJsZXMgc3VibWl0dGlu ZyBjb21tYW5kcyB2aWEgSXBtaS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIFRo aXMgICAgICAgICAgICAgIFRoaXMgcG9pbnQgZm9yIElQTUlfUFJPVE9DT0wgc3RydWN0dXJlLg0K PiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBOZXRGdW5jdGlvbiAgICAgICBOZXQgZnVuY3Rpb24g b2YgdGhlIGNvbW1hbmQuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIENvbW1hbmQgICAgICAg ICAgIElQTUkgQ29tbWFuZC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgICAgUmVxdWVzdERhdGEg ICAgICAgQ29tbWFuZCBSZXF1ZXN0IERhdGEuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIFJl cXVlc3REYXRhU2l6ZSAgIFNpemUgb2YgQ29tbWFuZCBSZXF1ZXN0IERhdGEuDQo+ID4gKyAgQHBh cmFtW291dF0gICAgICAgIFJlc3BvbnNlRGF0YSAgICAgIENvbW1hbmQgUmVzcG9uc2UgRGF0YS4g VGhlDQo+IGNvbXBsZXRpb24gY29kZSBpcyB0aGUgZmlyc3QgYnl0ZSBvZiByZXNwb25zZSBkYXRh Lg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgICBSZXNwb25zZURhdGFTaXplICBTaXplIG9mIENv bW1hbmQgUmVzcG9uc2UgRGF0YS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgIFRoZSBjb21tYW5kIGJ5dGUgc3RyZWFtIHdhcyBzdWNjZXNzZnVsbHkNCj4gc3Vi bWl0IHRvIHRoZSBkZXZpY2UgYW5kIGEgcmVzcG9uc2Ugd2FzIHN1Y2Nlc3NmdWxseSByZWNlaXZl ZC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgVGhlIGNvbW1hbmQgd2Fz IG5vdCBzdWNjZXNzZnVsbHkgc2VudA0KPiB0byB0aGUgZGV2aWNlIG9yIGEgcmVzcG9uc2Ugd2Fz IG5vdCBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlLg0KPiA+ICsgIEByZXR2 YWwgRUZJX05PVF9SRUFEWSAgICAgICAgICBJcG1pIERldmljZSBpcyBub3QgcmVhZHkgZm9yIElw bWkgY29tbWFuZA0KPiBhY2Nlc3MuDQo+ID4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAg ICAgIElwbWkgRGV2aWNlIGhhcmR3YXJlIGVycm9yLg0KPiA+ICsgIEByZXR2YWwgRUZJX1RJTUVP VVQgICAgICAgICAgICBUaGUgY29tbWFuZCB0aW1lIG91dC4NCj4gPiArICBAcmV0dmFsIEVGSV9V TlNVUFBPUlRFRCAgICAgICAgVGhlIGNvbW1hbmQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgc2VudA0K PiB0byB0aGUgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBU aGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBpcyBvdXQgb2YNCj4gcmVzb3VyY2Ugb3IgZGF0YSBzaXpl IGVycm9yLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHhl SXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+ICsgIElOICAgICBJUE1JX1BST1RPQ09MICAqVGhpcywN Cj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgTmV0RnVuY3Rpb24sDQo+ID4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgIENvbW1hbmQsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICpS ZXF1ZXN0RGF0YSwNCj4gPiArICBJTiAgICAgVUlOVDMyICAgICAgICAgUmVxdWVzdERhdGFTaXpl LA0KPiA+ICsgIE9VVCAgICBVSU5UOCAgICAgICAgICAqUmVzcG9uc2VEYXRhLA0KPiA+ICsgIElO IE9VVCBVSU5UMzIgICAgICAgICAqUmVzcG9uc2VEYXRhU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gQ29tbW9u SXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+ICsgICAgICAgICAgICAgbVRyYW5zcG9ydFRva2VuLA0K PiA+ICsgICAgICAgICAgICAgTmV0RnVuY3Rpb24sDQo+ID4gKyAgICAgICAgICAgICBDb21tYW5k LA0KPiA+ICsgICAgICAgICAgICAgUmVxdWVzdERhdGEsDQo+ID4gKyAgICAgICAgICAgICBSZXF1 ZXN0RGF0YVNpemUsDQo+ID4gKyAgICAgICAgICAgICBSZXNwb25zZURhdGEsDQo+ID4gKyAgICAg ICAgICAgICBSZXNwb25zZURhdGFTaXplDQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ICsgIHJl dHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBJUE1JX1BST1RPQ09MICBt SXBtaVByb3RvY29sID0gew0KPiA+ICsgIER4ZUlwbWlTdWJtaXRDb21tYW5kDQo+ID4gK307DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGUgZW50cnkgcG9pbnQgb2YgdGhlIElwbWkgRFhFIGRy aXZlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAtIEhhbmRsZSBvZiB0 aGlzIGRyaXZlciBpbWFnZSAgQHBhcmFtW2luXQ0KPiA+ICsgU3lzdGVtVGFibGUgLSBUYWJsZSBj b250YWluaW5nIHN0YW5kYXJkIEVGSSBzZXJ2aWNlcw0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgIC0gSVBNSSBQcm90b2NvbCBpcyBpbnN0YWxsZWQgc3VjY2Vzc2Z1bGx5Lg0K PiA+ICsgIEByZXR2YWwgT3RoZXJ3aXNlICAgICAgLSBPdGhlciBlcnJvcnMuDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEeGVJcG1pRW50cnkgKA0KPiA+ICsg IElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ICsgIElOIEVGSV9TWVNURU1f VEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgRUZJX0hBTkRM RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZTsNCj4gPiArICBNQU5BR0VB QklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eTsN Cj4gPiArICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiA+ICtU cmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzOw0KPiA+ICsNCj4gPiArICBHZXRUcmFuc3BvcnRDYXBh YmlsaXR5ICgmVHJhbnNwb3J0Q2FwYWJpbGl0eSk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IEhl bHBlckFjcXVpcmVNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0ICgNCj4gPiArICAgICAgICAgICAgICZn TWFuYWdlYWJpbGl0eVByb3RvY29sSXBtaUd1aWQsDQo+ID4gKyAgICAgICAgICAgICAmbVRyYW5z cG9ydFRva2VuDQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbGVkIHRvIGFj cXVpcmUgdHJhbnNwb3J0IGludGVyZmFjZSBmb3INCj4gSVBNSSBwcm90b2NvbCAtICVyXG4iLCBf X0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIG1UcmFuc3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNO YW1lDQo+ID4gKyAobVRyYW5zcG9ydFRva2VuLT5UcmFuc3BvcnQtPk1hbmFnZWFiaWxpdHlUcmFu c3BvcnRTcGVjaWZpY2F0aW9uKTsNCj4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogSVBN SSBwcm90b2NvbCBvdmVyICVzLlxuIiwgX19GVU5DVElPTl9fLA0KPiA+ICsgbVRyYW5zcG9ydE5h bWUpKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBTZXR1cCBoYXJkd2FyZSBpbmZvcm1h dGlvbiBhY2NvcmRpbmcgdG8gdGhlIHRyYW5zcG9ydCBpbnRlcmZhY2UuDQo+ID4gKyAgU3RhdHVz ID0gU2V0dXBJcG1pVHJhbnNwb3J0SGFyZHdhcmVJbmZvcm1hdGlvbiAoDQo+ID4gKyAgICAgICAg ICAgICBtVHJhbnNwb3J0VG9rZW4sDQo+ID4gKyAgICAgICAgICAgICAmbUhhcmR3YXJlSW5mb3Jt YXRpb24NCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ICsgICAgaWYgKFN0YXR1cyA9PSBFRklfVU5TVVBQT1JURUQpIHsNCj4gPiArICAg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBObyBoYXJkd2FyZSBpbmZvcm1hdGlvbiBvZiAl cw0KPiB0cmFuc3BvcnQgaW50ZXJmYWNlLlxuIiwgX19GVU5DVElPTl9fLCBtVHJhbnNwb3J0TmFt ZSkpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEluaXRpYWwgdHJhbnNwb3J0IGludGVyZmFj ZSB3aXRoIHRoZSBoYXJkd2FyZSBpbmZvcm1hdGlvbiBhc3NpZ25lZC4NCj4gVGhpcywgSSB0aGlu ayBpcyBub3QgYSBjb21tZW50IHN0eWxlIGRlZmluZWQgaW4gdGhlIEVESzIgY29kaW5nIHN0eWxl Lg0KPiA+ICsgIFN0YXR1cyA9IEhlbHBlckluaXRNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0ICgNCj4g PiArICAgICAgICAgICAgIG1UcmFuc3BvcnRUb2tlbiwNCj4gPiArICAgICAgICAgICAgIG1IYXJk d2FyZUluZm9ybWF0aW9uLA0KPiA+ICsgICAgICAgICAgICAgJlRyYW5zcG9ydEFkZGl0aW9uYWxT dGF0dXMNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiANCj4gQXQg aGVyZSwgZXZlcnl0aGluZyBpcyByZWFkeSB0byBnby4gV2Ugd2lsbCBpbnN0YWxsIHRoZSBwcm90 b2NvbCBhbmQgZG9uZS4gQnV0DQo+IHdoYXQgYWJvdXQgdGhlICJIb3N0J3MgcGFydG5lciI/DQo+ IA0KPiBJUE1JIHByb3RvY29sIGlzIHVzdWFsbHkgdG8gdXNlIHRvIGNvbW11bmljYXRlIGJldHdl ZW4gSG9zdCBhbmQgQk1DLiBJbg0KPiBzb21lIHN5c3RlbXMsDQo+IA0KPiBCTUMgd2lsbCBwcm92 aWRlIGEgbWVjaGFuaXNtIHRvIHRoZSBob3N0IHRvIG5vdGlmeSBpdCB0aGF0IGV2ZXJ5dGhpbmcg aXMgZmluZQ0KPiBhbmQgdGhhdCBpdCBpcyByZWFkeSB0byBjb21tdW5pY2F0ZSAodGhlIGNvbW1v biB3YXkgaXMgR1BJTykuDQo+IA0KPiBXaGF0IGlmIHdlIGlzc3VlIGEgcmVxdWVzdCB0byBCTUMs IGFuZCBCTUMgZmFpbHMgdG8gcmVzcG9uZCBvciByZXR1cm5zDQo+IGR1bW15IGRhdGE/DQo+IA0K PiBPbiBvbmUgbGV2ZWwsIGl0IGlzIGFuIGVuaGFuY2VtZW50IGZlYXR1cmUsIGFuZCBpdCBpcyBu b3Qgc3VwcG9ydGVkIGJ5IGFsbA0KPiBwbGF0Zm9ybXMuICBXaHkgZG9uJ3Qgd2Ugc3VwcG9ydCBh IGxpYnJhcnkvcHJvdG9jb2wNCj4gDQo+IHRoYXQgYWxsb3dzIHBsYXRmb3JtcyB0byBjaG9vc2Ug d2hldGhlciBvciBub3QgdG8gaXNzdWUgYSByZXF1ZXN0Py4NCj4gQmVjYXVzZSB0aGUgcHJvYmxl bSBjb3VsZCBvY2N1ciBhdCBhbnkgdGltZSwgd2Ugc2hvdWxkIGNoZWNrIGJlZm9yZQ0KPiBzdGFy dGluZyBhIHJlcXVlc3QuDQo+IA0KPiBJdCBjYW4gYmUgcHV0IGludG8gQ29tbW9uSXBtaVN1Ym1p dENvbW1hbmQgKCkuDQo+IA0KPiANCj4gV2h5IG5vdCBpbmNsdWRlIGl0IGluIE1hbmFnZWFiaWxp dHlUcmFuc3BvcnRMaWI/IEJlY2F1c2UgdGhhdCBpcyB0aGUgSVBNSQ0KPiBpc3N1ZSwNCj4gDQo+ IHRoZSBLQ1MgY29udHJvbGxlciBpcyBmaW5lLCB0aGUgSTJDIGNvbnRyb2xsZXIgaXMgZmluZSwg YW5kIHRoZSBCTUMgaXMgcmVhZHkgdG8NCj4gY29tbXVuaWNhdGUgdmlhIE1DVFAsIGJ1dCBJUE1J IGlzIHN0dWNrDQo+IA0KV2UgY3VycmVudGx5IHByb3ZpZGUgTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfU1RBVFVTIHRvIGdldCB0aGUgdHJhbnNwb3J0IGludGVyZmFjZSBzdGF0dXMgaW4gdGhlIGEg c3RhbmRhcmQgd2F5LCBob3dldmVyIHlvdXIgc3VnZ2VzdGlvbiBzb3VuZHMgdG8gbWUgZmFpciBm b3IgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uLg0KSSBwcmVmZXIgdG8gaGF2ZSBhIGdlbmVy aWMgcHJvdG9jb2wvcHBpIHRoYXQgYWxsb3cgcGxhdGZvcm0gaGF2aW5nIHNvbWUgcHJvcHJpZXRh cnkgaW1wbGVtZW50YXRpb25zLCBob3dldmVyIHRoZSBwcm90b2NvbC9wcGkgY291bGQgYmUgYXBw bHkgb24gdGhlIHRyYW5zcG9ydCBpbnRlcmZhY2VzLCBub3Qgb25seSBmb3IgdGhlIHNwZWNpZmlj IHRyYW5zcG9ydCBpbnRlcmZhY2UuDQpIb3cgYWJvdXQgdGhlIHByb3RvY29sIGludGVyZmFjZSBh cyBiZWxvdz8NCg0KRURLMl9QTEFURk9STV9NQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9QUk9UT0NP TCAoUFBJKQ0KDQpGb3IgZXhhbXBsZToNClRoZSBwbGF0Zm9ybSBmdW5jdGlvbiBmb3IgTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfU1RBVFVTOg0KDQpFRklfU1RBVFVTDQpQbGF0Zm9ybU1hbmFnZWFi aWxpdHlUcmFuc3BvcnRHZXRTdGF0dXMoDQogRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0aW50ZXJmYWNlLA0KIE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9OICAgICAgICBIYXJkd2FyZWluZm9ybWF0aW9uLA0K IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0FERElUSU9OQUxfU1RBVFVTICAgICAgICAgICAgICAg ICAgICAqQWRkaXRpb25hbFN0YXR1cw0KKQ0KICANCj4gSSdtIGhhcHB5IHdoZW4geW91IGNhbiBh c3Npc3Qgd2l0aCB0aGlzLiBQZXJzb25hbGx5LCBJIGxvdmUgUHJvdG9jb2wgbW9yZQ0KWWVzLCBJ IGNhbi4NCg0KQWJuZXINCg0KDQo+IC0gVGluaA0KPiANCj4gPiArICBIYW5kbGUgPSBOVUxMOw0K PiA+ICsgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiArICAg ICAgICAgICAgICAgICAgJkhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdJcG1pUHJv dG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFDRSwN Cj4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJm1JcG1pUHJvdG9jb2wNCj4gPiArICAg ICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBpbnN0YWxsIElQTUkgcHJv dG9jb2wgLQ0KPiA+ICsgJXJcbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7ICB9DQo+ID4gKw0K PiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRo aXMgaXMgdGhlIHVubG9hZCBoYW5kbGVyIGZvciBJUE1JIHByb3RvY29sIG1vZHVsZS4NCj4gPiAr DQo+ID4gKyAgUmVsZWFzZSB0aGUgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gYWNxdWly ZWQgYXQgZW50cnkNCj4gcG9pbnQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gSW1hZ2VIYW5k bGUgICAgICAgICAgIFRoZSBkcml2ZXJzJyBkcml2ZXIgaW1hZ2UuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgICAgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBpbWFnZSBpcyB1bmxvYWRlZC4NCj4g PiArICBAcmV0dmFsICAgIE90aGVycyAgICAgICAgICAgICAgICBGYWlsZWQgdG8gdW5sb2FkIHRo ZSBpbWFnZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtJcG1pVW5sb2FkSW1hZ2UgKA0KPiA+ICsgIElOIEVGSV9IQU5ETEUgIEltYWdlSGFuZGxl DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ICsNCj4g PiArICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiArICBpZiAobVRyYW5zcG9ydFRva2VuICE9 IE5VTEwpIHsNCj4gPiArICAgIFN0YXR1cyA9IFJlbGVhc2VUcmFuc3BvcnRTZXNzaW9uIChtVHJh bnNwb3J0VG9rZW4pOyAgfQ0KPiA+ICsNCj4gPiArICBpZiAobUhhcmR3YXJlSW5mb3JtYXRpb24u UG9pbnRlciAhPSBOVUxMKSB7DQo+ID4gKyAgICBGcmVlUG9vbCAobUhhcmR3YXJlSW5mb3JtYXRp b24uUG9pbnRlcik7ICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4g PiBkaWZmIC0tZ2l0DQo+ID4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9J cG1pUHJvdG9jb2wvUGVpL0lwbWlQcGkuYw0KPiA+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBr Zy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmY4MzljZDczODcNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVBy b3RvY29sL1BlaS9JcG1pUHBpLmMNCj4gPiBAQCAtMCwwICsxLDE1OSBAQA0KPiA+ICsvKiogQGZp bGUNCj4gPiArICBUaGlzIGZpbGUgcHJvdmlkZXMgSVBNSSBQUEkgaW1wbGVtZW50YXRpb24uDQo+ ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoQykgMjAyMyBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJ bmMuIEFsbCByaWdodHMNCj4gPiArIHJlc2VydmVkLjxCUj4NCj4gPiArICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSA8UGlQZWkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIu aD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+ICNpbmNsdWRlDQo+ID4gKzxMaWJyYXJ5 L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWFu YWdlYWJpbGl0eVRyYW5zcG9ydElwbWlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWFu YWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlckxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Q ZWlTZXJ2aWNlc0xpYi5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFBwaS9JcG1pUHBpLmg+DQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSAiSXBtaVByb3RvY29sQ29tbW9uLmgiDQo+ID4gKyNpbmNsdWRl ICJJcG1pUHBpSW50ZXJuYWwuaCINCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRoaXMgc2Vydmlj ZSBlbmFibGVzIHN1Ym1pdHRpbmcgY29tbWFuZHMgdmlhIElwbWkuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gICAgICAgICBUaGlzICAgICAgICAgICAgICBUaGlzIHBvaW50IGZvciBQRUlfSVBN SV9QUEkgc3RydWN0dXJlLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBOZXRGdW5jdGlvbiAg ICAgICBOZXQgZnVuY3Rpb24gb2YgdGhlIGNvbW1hbmQuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAg ICAgIENvbW1hbmQgICAgICAgICAgIElQTUkgQ29tbWFuZC4NCj4gPiArICBAcGFyYW1baW5dICAg ICAgICAgUmVxdWVzdERhdGEgICAgICAgQ29tbWFuZCBSZXF1ZXN0IERhdGEuDQo+ID4gKyAgQHBh cmFtW2luXSAgICAgICAgIFJlcXVlc3REYXRhU2l6ZSAgIFNpemUgb2YgQ29tbWFuZCBSZXF1ZXN0 IERhdGEuDQo+ID4gKyAgQHBhcmFtW291dF0gICAgICAgIFJlc3BvbnNlRGF0YSAgICAgIENvbW1h bmQgUmVzcG9uc2UgRGF0YS4gVGhlDQo+IGNvbXBsZXRpb24gY29kZSBpcyB0aGUgZmlyc3QgYnl0 ZSBvZiByZXNwb25zZSBkYXRhLg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgICBSZXNwb25zZURh dGFTaXplICBTaXplIG9mIENvbW1hbmQgUmVzcG9uc2UgRGF0YS4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBjb21tYW5kIGJ5dGUgc3RyZWFtIHdhcyBz dWNjZXNzZnVsbHkNCj4gc3VibWl0IHRvIHRoZSBkZXZpY2UgYW5kIGEgcmVzcG9uc2Ugd2FzIHN1 Y2Nlc3NmdWxseSByZWNlaXZlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAg ICAgVGhlIGNvbW1hbmQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgc2VudA0KPiB0byB0aGUgZGV2aWNl IG9yIGEgcmVzcG9uc2Ugd2FzIG5vdCBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2 aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgICAgICBJcG1pIERldmljZSBp cyBub3QgcmVhZHkgZm9yIElwbWkgY29tbWFuZA0KPiBhY2Nlc3MuDQo+ID4gKyAgQHJldHZhbCBF RklfREVWSUNFX0VSUk9SICAgICAgIElwbWkgRGV2aWNlIGhhcmR3YXJlIGVycm9yLg0KPiA+ICsg IEByZXR2YWwgRUZJX1RJTUVPVVQgICAgICAgICAgICBUaGUgY29tbWFuZCB0aW1lIG91dC4NCj4g PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIGNvbW1hbmQgd2FzIG5vdCBz dWNjZXNzZnVsbHkgc2VudA0KPiB0byB0aGUgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJX09V VF9PRl9SRVNPVVJDRVMgICBUaGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBpcyBvdXQgb2YNCj4gcmVz b3VyY2Ugb3IgZGF0YSBzaXplIGVycm9yLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtFRklBUEkNCj4gPiArUGVpSXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+ICsgIElOICAgICBQRUlf SVBNSV9QUEkgICpUaGlzLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgIE5ldEZ1bmN0aW9u LA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgIENvbW1hbmQsDQo+ID4gKyAgSU4gICAgIFVJ TlQ4ICAgICAgICAgKlJlcXVlc3REYXRhLA0KPiA+ICsgIElOICAgICBVSU5UMzIgICAgICAgIFJl cXVlc3REYXRhU2l6ZSwNCj4gPiArICBPVVQgICAgVUlOVDggICAgICAgICAqUmVzcG9uc2VEYXRh LA0KPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICpSZXNwb25zZURhdGFTaXplDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBQ RUlfSVBNSV9QUElfSU5URVJOQUwgKlBlaUlwbWlQcGlpbnRlcm5hbDsNCj4gPiArDQo+ID4gKyAg UGVpSXBtaVBwaWludGVybmFsID0NCj4gPiArTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRFUk5B TF9GUk9NX0xJTksoVGhpcyk7DQo+ID4gKyAgU3RhdHVzID0gQ29tbW9uSXBtaVN1Ym1pdENvbW1h bmQgKA0KPiA+ICsgICAgICAgICAgICAgUGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRUb2tl biwNCj4gPiArICAgICAgICAgICAgIE5ldEZ1bmN0aW9uLA0KPiA+ICsgICAgICAgICAgICAgQ29t bWFuZCwNCj4gPiArICAgICAgICAgICAgIFJlcXVlc3REYXRhLA0KPiA+ICsgICAgICAgICAgICAg UmVxdWVzdERhdGFTaXplLA0KPiA+ICsgICAgICAgICAgICAgUmVzcG9uc2VEYXRhLA0KPiA+ICsg ICAgICAgICAgICAgUmVzcG9uc2VEYXRhU2l6ZQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiAr ICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGUgZW50 cnkgcG9pbnQgb2YgdGhlIElwbWkgUFBJIFBFSU0uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRmls ZUhhbmRsZSAgSGFuZGxlIG9mIHRoZSBmaWxlIGJlaW5nIGludm9rZWQuDQo+ID4gKyAgQHBhcmFt ICBQZWlTZXJ2aWNlcyBEZXNjcmliZXMgdGhlIGxpc3Qgb2YgcG9zc2libGUgUEVJIFNlcnZpY2Vz Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgSW5kaWNhdGVzIHRoYXQgSXBt aSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZWQNCj4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICBJbmRpY2F0ZXMgdGhhdCBJcG1pIGluaXRpYWxpemF0aW9uIGNvdWxk IG5vdCBjb21wbGV0ZQ0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VGSUFQSQ0KPiA+ICtQZWlJcG1pRW50cnkgKA0KPiA+ICsgIElOICAgICAgIEVGSV9Q RUlfRklMRV9IQU5ETEUgIEZpbGVIYW5kbGUsDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJW SUNFUyAgICAgKipQZWlTZXJ2aWNlcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgQ0hB UjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpUcmFuc3BvcnROYW1l Ow0KPiA+ICsgIFBFSV9JUE1JX1BQSV9JTlRFUk5BTCAgICAgICAgICAgICAgICAgICAgICAgICAq UGVpSXBtaVBwaWludGVybmFsOw0KPiA+ICsgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1IgICAgICAg ICAgICAgICAgICAgICAgICAqUHBpRGVzY3JpcHRvcjsNCj4gPiArICBNQU5BR0VBQklMSVRZX1RS QU5TUE9SVF9DQVBBQklMSVRZICAgICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eTsNCj4gPiAr ICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiBUcmFuc3BvcnRB ZGRpdGlvbmFsU3RhdHVzOw0KPiA+ICsgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0hBUkRXQVJF X0lORk9STUFUSU9ODQo+IEhhcmR3YXJlSW5mb3JtYXRpb247DQo+ID4gKw0KPiA+ICsgIFBlaUlw bWlQcGlpbnRlcm5hbCA9IChQRUlfSVBNSV9QUElfSU5URVJOQUwgKilBbGxvY2F0ZVplcm9Qb29s DQo+ID4gKyAoc2l6ZW9mKFBFSV9JUE1JX1BQSV9JTlRFUk5BTCkpOyAgaWYgKFBlaUlwbWlQcGlp bnRlcm5hbCA9PSBOVUxMKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5v dCBlbm91Z2ggbWVtb3J5IGZvcg0KPiBQRUlfSVBNSV9QUElfSU5URVJOQUwuXG4iLCBfX0ZVTkNU SU9OX18pKTsNCj4gPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICB9 DQo+ID4gKyAgUHBpRGVzY3JpcHRvciA9IChFRklfUEVJX1BQSV9ERVNDUklQVE9SICopQWxsb2Nh dGVaZXJvUG9vbA0KPiA+ICsgKHNpemVvZihFRklfUEVJX1BQSV9ERVNDUklQVE9SKSk7ICBpZiAo UHBpRGVzY3JpcHRvciA9PSBOVUxMKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAi JWE6IE5vdCBlbm91Z2ggbWVtb3J5IGZvcg0KPiBFRklfUEVJX1BQSV9ERVNDUklQVE9SLlxuIiwg X19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQZWlJcG1pUHBpaW50ZXJuYWwtPlNpZ25hdHVyZSA9DQo+ ID4gKyBNQU5BR0VBQklMSVRZX0lQTUlfUFBJX0lOVEVSTkFMX1NJR05BVFVSRTsNCj4gPiArICBQ ZWlJcG1pUHBpaW50ZXJuYWwtPlBlaUlwbWlQcGkuSXBtaVN1Ym1pdENvbW1hbmQgPQ0KPiA+ICsg UGVpSXBtaVN1Ym1pdENvbW1hbmQ7DQo+ID4gKw0KPiA+ICsgIFBwaURlc2NyaXB0b3ItPkZsYWdz ID0gRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9QUEkgfA0KPiA+ICsgRUZJX1BFSV9QUElfREVTQ1JJ UFRPUl9URVJNSU5BVEVfTElTVDsNCj4gPiArICBQcGlEZXNjcmlwdG9yLT5HdWlkICA9ICZnUGVp SXBtaVBwaUd1aWQ7DQo+ID4gKyAgUHBpRGVzY3JpcHRvci0+UHBpICAgPSAmUGVpSXBtaVBwaWlu dGVybmFsLT5QZWlJcG1pUHBpOw0KPiA+ICsNCj4gPiArICBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5 ICgmVHJhbnNwb3J0Q2FwYWJpbGl0eSk7ICBTdGF0dXMgPQ0KPiA+ICsgSGVscGVyQWNxdWlyZU1h bmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ICsgICAgICAgICAgICAgJmdNYW5hZ2VhYmlsaXR5 UHJvdG9jb2xJcG1pR3VpZCwNCj4gPiArICAgICAgICAgICAgICZQZWlJcG1pUHBpaW50ZXJuYWwt PlRyYW5zcG9ydFRva2VuDQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbGVk IHRvIGFjcXVpcmUgdHJhbnNwb3J0IGludGVyZmFjZSBmb3INCj4gSVBNSSBwcm90b2NvbCAtICVy XG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIFRyYW5zcG9ydE5hbWUgPSBIZWxwZXJNYW5hZ2VhYmlsaXR5 U3BlY05hbWUNCj4gPiArIChQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydFRva2VuLT5UcmFu c3BvcnQtPk1hbmFnZWFiaWxpdHlUcmFuc3BvDQo+ID4gKyBydFNwZWNpZmljYXRpb24pOyAgREVC VUcgKChERUJVR19JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wgb3Zlcg0KPiA+ICsgJXMuXG4iLCBf X0ZVTkNUSU9OX18sIFRyYW5zcG9ydE5hbWUpKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyBTZXR1cCBoYXJkd2FyZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHRyYW5zcG9ydCBp bnRlcmZhY2UuDQo+ID4gKyAgU3RhdHVzID0gU2V0dXBJcG1pVHJhbnNwb3J0SGFyZHdhcmVJbmZv cm1hdGlvbiAoDQo+ID4gKyAgICAgICAgICAgICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9y dFRva2VuLA0KPiA+ICsgICAgICAgICAgICAgJkhhcmR3YXJlSW5mb3JtYXRpb24NCj4gPiArICAg ICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg aWYgKFN0YXR1cyA9PSBFRklfVU5TVVBQT1JURUQpIHsNCj4gPiArICAgICAgREVCVUcgKChERUJV R19FUlJPUiwgIiVhOiBObyBoYXJkd2FyZSBpbmZvcm1hdGlvbiBvZiAlcw0KPiB0cmFuc3BvcnQg aW50ZXJmYWNlLlxuIiwgX19GVU5DVElPTl9fLCBUcmFuc3BvcnROYW1lKSk7DQo+ID4gKyAgICB9 DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gSW5pdGlhbCB0cmFuc3BvcnQgaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3 YXJlIGluZm9ybWF0aW9uIGFzc2lnbmVkLg0KPiA+ICsgIFN0YXR1cyA9IEhlbHBlckluaXRNYW5h Z2VhYmlsaXR5VHJhbnNwb3J0ICgNCj4gPiArICAgICAgICAgICAgIFBlaUlwbWlQcGlpbnRlcm5h bC0+VHJhbnNwb3J0VG9rZW4sDQo+ID4gKyAgICAgICAgICAgICBIYXJkd2FyZUluZm9ybWF0aW9u LA0KPiA+ICsgICAgICAgICAgICAgJlRyYW5zcG9ydEFkZGl0aW9uYWxTdGF0dXMNCj4gPiArICAg ICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSW5z dGFsbCBJUE1JIFBQSS4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IFBlaVNlcnZpY2VzSW5z dGFsbFBwaSAoUHBpRGVzY3JpcHRvcik7ICBpZiAoRUZJX0VSUk9SDQo+ID4gKyAoU3RhdHVzKSkg ew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gaW5zdGFsbCBJ UE1JIFBQSSAtICVyXG4iLA0KPiA+ICsgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsgIH0NCj4gPiAr DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL0Zl YXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVBy b3RvY29sLmMNCj4gPg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lw bWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+IGluZGV4IDAwMDAwMDAwMDAuLjg3YTU0MzZiZGYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4g KysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29s L1NtbS9JcG1pUHJvdG9jbw0KPiA+ICsrKyBsLmMNCj4gPiBAQCAtMCwwICsxLDE0NyBAQA0KPiA+ ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGZpbGUgcHJvdmlkZXMgSVBNSSBTTU0gUHJvdG9jb2wg aW1wbGVtZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoQykgMjAyMyBBZHZhbmNl ZCBNaWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICoqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPFBpRHhlLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVn TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SXBtaUxpYi5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyTGliLmg+DQo+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L1NtbVNlcnZpY2VzVGFibGVMaWIuaD4gI2luY2x1ZGUNCj4gPiArPExpYnJh cnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8UHJv dG9jb2wvSXBtaVByb3RvY29sLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiSXBtaVByb3RvY29s Q29tbW9uLmgiDQo+ID4gKw0KPiA+ICtNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgKm1U cmFuc3BvcnRUb2tlbiA9IE5VTEw7DQo+ID4gK0NIQVIxNiAgICAgICAgICAgICAgICAgICAgICAg ICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4gKw0KPiA+ICtNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9I QVJEV0FSRV9JTkZPUk1BVElPTg0KPiBtSGFyZHdhcmVJbmZvcm1hdGlvbjsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFRoaXMgc2VydmljZSBlbmFibGVzIHN1Ym1pdHRpbmcgY29tbWFuZHMgdmlh IElwbWkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBUaGlzICAgICAgICAgICAg ICBUaGlzIHBvaW50IGZvciBJUE1JX1BST1RPQ09MIHN0cnVjdHVyZS4NCj4gPiArICBAcGFyYW1b aW5dICAgICAgICAgTmV0RnVuY3Rpb24gICAgICAgTmV0IGZ1bmN0aW9uIG9mIHRoZSBjb21tYW5k Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBDb21tYW5kICAgICAgICAgICBJUE1JIENvbW1h bmQuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICAgIFJlcXVlc3REYXRhICAgICAgIENvbW1hbmQg UmVxdWVzdCBEYXRhLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICBSZXF1ZXN0RGF0YVNpemUg ICBTaXplIG9mIENvbW1hbmQgUmVxdWVzdCBEYXRhLg0KPiA+ICsgIEBwYXJhbVtvdXRdICAgICAg ICBSZXNwb25zZURhdGEgICAgICBDb21tYW5kIFJlc3BvbnNlIERhdGEuIFRoZQ0KPiBjb21wbGV0 aW9uIGNvZGUgaXMgdGhlIGZpcnN0IGJ5dGUgb2YgcmVzcG9uc2UgZGF0YS4NCj4gPiArICBAcGFy YW1baW4sIG91dF0gICAgUmVzcG9uc2VEYXRhU2l6ZSAgU2l6ZSBvZiBDb21tYW5kIFJlc3BvbnNl IERhdGEuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUg Y29tbWFuZCBieXRlIHN0cmVhbSB3YXMgc3VjY2Vzc2Z1bGx5DQo+IHN1Ym1pdCB0byB0aGUgZGV2 aWNlIGFuZCBhIHJlc3BvbnNlIHdhcyBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQuDQo+ID4gKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgIFRoZSBjb21tYW5kIHdhcyBub3Qgc3VjY2Vzc2Z1 bGx5IHNlbnQNCj4gdG8gdGhlIGRldmljZSBvciBhIHJlc3BvbnNlIHdhcyBub3Qgc3VjY2Vzc2Z1 bGx5IHJlY2VpdmVkIGZyb20gdGhlIGRldmljZS4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfUkVB RFkgICAgICAgICAgSXBtaSBEZXZpY2UgaXMgbm90IHJlYWR5IGZvciBJcG1pIGNvbW1hbmQNCj4g YWNjZXNzLg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICBJcG1pIERldmlj ZSBoYXJkd2FyZSBlcnJvci4NCj4gPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgICAgICAg VGhlIGNvbW1hbmQgdGltZSBvdXQuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAg ICAgIFRoZSBjb21tYW5kIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IHNlbnQNCj4gdG8gdGhlIGRldmlj ZS4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgVGhlIHJlc291cmNlIGFs bG9jYXRpb24gaXMgb3V0IG9mDQo+IHJlc291cmNlIG9yIGRhdGEgc2l6ZSBlcnJvci4NCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NtbUlwbWlTdWJtaXRDb21t YW5kICgNCj4gPiArICBJTiAgICAgSVBNSV9QUk9UT0NPTCAgKlRoaXMsDQo+ID4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgIE5ldEZ1bmN0aW9uLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAg ICBDb21tYW5kLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAqUmVxdWVzdERhdGEsDQo+ ID4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgIFJlcXVlc3REYXRhU2l6ZSwNCj4gPiArICBPVVQg ICAgVUlOVDggICAgICAgICAgKlJlc3BvbnNlRGF0YSwNCj4gPiArICBJTiBPVVQgVUlOVDMyICAg ICAgICAgKlJlc3BvbnNlRGF0YVNpemUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RB VFVTICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IENvbW1vbklwbWlTdWJtaXRDb21t YW5kICgNCj4gPiArICAgICAgICAgICAgIG1UcmFuc3BvcnRUb2tlbiwNCj4gPiArICAgICAgICAg ICAgIE5ldEZ1bmN0aW9uLA0KPiA+ICsgICAgICAgICAgICAgQ29tbWFuZCwNCj4gPiArICAgICAg ICAgICAgIFJlcXVlc3REYXRhLA0KPiA+ICsgICAgICAgICAgICAgUmVxdWVzdERhdGFTaXplLA0K PiA+ICsgICAgICAgICAgICAgUmVzcG9uc2VEYXRhLA0KPiA+ICsgICAgICAgICAgICAgUmVzcG9u c2VEYXRhU2l6ZQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgSVBNSV9QUk9UT0NPTCAgbUlwbWlQcm90b2NvbCA9 IHsNCj4gPiArICBTbW1JcG1pU3VibWl0Q29tbWFuZA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgVGhlIGVudHJ5IHBvaW50IG9mIHRoZSBJcG1pIERYRSBkcml2ZXIuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gSW1hZ2VIYW5kbGUgLSBIYW5kbGUgb2YgdGhpcyBkcml2ZXIgaW1h Z2UgIEBwYXJhbVtpbl0NCj4gPiArIFN5c3RlbVRhYmxlIC0gVGFibGUgY29udGFpbmluZyBzdGFu ZGFyZCBFRkkgc2VydmljZXMNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAt IElQTUkgUHJvdG9jb2wgaXMgaW5zdGFsbGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFs IE90aGVyd2lzZSAgICAgIC0gT3RoZXIgZXJyb3JzLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtFRklBUEkNCj4gPiArU21tSXBtaUVudHJ5ICgNCj4gPiArICBJTiBFRklfSEFORExF ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVt VGFibGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIYW5kbGU7DQo+ID4gKyAgTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfQ0FQQUJJTElUWSAgICAgICAgIFRyYW5zcG9ydENhcGFiaWxpdHk7DQo+ID4gKyAgTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfQURESVRJT05BTF9TVEFUVVMNCj4gPiArVHJhbnNwb3J0QWRkaXRp b25hbFN0YXR1czsNCj4gPiArDQo+ID4gKyAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoJlRyYW5z cG9ydENhcGFiaWxpdHkpOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBIZWxwZXJBY3F1aXJlTWFu YWdlYWJpbGl0eVRyYW5zcG9ydCAoDQo+ID4gKyAgICAgICAgICAgICAmZ01hbmFnZWFiaWxpdHlQ cm90b2NvbElwbWlHdWlkLA0KPiA+ICsgICAgICAgICAgICAgJm1UcmFuc3BvcnRUb2tlbg0KPiA+ ICsgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBhY3F1aXJlIHRyYW5zcG9y dCBpbnRlcmZhY2UgZm9yDQo+IElQTUkgcHJvdG9jb2wgLSAlclxuIiwgX19GVU5DVElPTl9fLCBT dGF0dXMpKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBtVHJhbnNwb3J0TmFtZSA9IEhlbHBlck1hbmFnZWFiaWxpdHlTcGVjTmFtZQ0KPiA+ICsgKG1U cmFuc3BvcnRUb2tlbi0+VHJhbnNwb3J0LT5NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0U3BlY2lmaWNh dGlvbik7DQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wgb3Zl ciAlcy5cbiIsIF9fRlVOQ1RJT05fXywNCj4gPiArIG1UcmFuc3BvcnROYW1lKSk7DQo+ID4gKw0K PiA+ICsgIC8vDQo+ID4gKyAgLy8gU2V0dXAgaGFyZHdhcmUgaW5mb3JtYXRpb24gYWNjb3JkaW5n IHRvIHRoZSB0cmFuc3BvcnQgaW50ZXJmYWNlLg0KPiA+ICsgIFN0YXR1cyA9IFNldHVwSXBtaVRy YW5zcG9ydEhhcmR3YXJlSW5mb3JtYXRpb24gKA0KPiA+ICsgICAgICAgICAgICAgbVRyYW5zcG9y dFRva2VuLA0KPiA+ICsgICAgICAgICAgICAgJm1IYXJkd2FyZUluZm9ybWF0aW9uDQo+ID4gKyAg ICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg IGlmIChTdGF0dXMgPT0gRUZJX1VOU1VQUE9SVEVEKSB7DQo+ID4gKyAgICAgIERFQlVHICgoREVC VUdfRVJST1IsICIlYTogTm8gaGFyZHdhcmUgaW5mb3JtYXRpb24gb2YgJXMNCj4gdHJhbnNwb3J0 IGludGVyZmFjZS5cbiIsIF9fRlVOQ1RJT05fXywgbVRyYW5zcG9ydE5hbWUpKTsNCj4gPiArICAg IH0NCj4gPiArDQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBJbml0aWFsIHRyYW5zcG9ydCBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFy ZHdhcmUgaW5mb3JtYXRpb24gYXNzaWduZWQuDQo+ID4gKyAgU3RhdHVzID0gSGVscGVySW5pdE1h bmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ICsgICAgICAgICAgICAgbVRyYW5zcG9ydFRva2Vu LA0KPiA+ICsgICAgICAgICAgICAgbUhhcmR3YXJlSW5mb3JtYXRpb24sDQo+ID4gKyAgICAgICAg ICAgICAmVHJhbnNwb3J0QWRkaXRpb25hbFN0YXR1cw0KPiA+ICsgICAgICAgICAgICAgKTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgSGFuZGxlID0gTlVMTDsNCj4gPiArICBTdGF0dXMgPSBn U21zdC0+U21tSW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiArICAgICAgICAgICAgICAg ICAgICAmSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICZnU21tSXBtaVByb3RvY29s R3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFDRSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmbUlwbWlQcm90b2NvbA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gaW5zdGFsbCBJUE1JIFNN TSBwcm90b2NvbCAtDQo+ID4gKyAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsgIH0NCj4g PiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0K