From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 09B80AC1222 for ; Tue, 31 Oct 2023 15:36:36 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Q/bn4ZIwxKtYCEwN9co4JxInxVQYF/3MndseFwZlXqc=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1698766595; v=1; b=Z+sa9BJEoay6IN0xgf3JHHScX3ADoITewmX0KKVCOYytvio3gluIOFBnvGx2DdwgRom7u2F0 FsnN+qELlaB16r2PCwHBipusmfsVwmSCvPDIhYuly5xsv4eRt41T2Lx1I4hFxF/uHD5N92zxIZU zJauOwE7eN+tht3FtxztGcpo= X-Received: by 127.0.0.2 with SMTP id PtOZYY7687511xMifYI7rVPy; Tue, 31 Oct 2023 08:36:35 -0700 X-Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.45]) by mx.groups.io with SMTP id smtpd.web11.183374.1698748986869365320 for ; Tue, 31 Oct 2023 03:43:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nXgJOln0EGS70LXPZmted23k0nu2izfCio+WRUOc2wrvez8YWl/+q5HWfJldLBhvdQz/iqI4APfL7p4k82j0dJ/7ZrTpu6gpgDiSWngenTW3GDkiStqY9uNNQEodoPaiS6KBf/SCTWAveGyKP0Sh0xmq7p5UcZ3y558oUzH0Ch3v9BdTXkWHw3q6RnK9Q0YOVQVkL2DhKJwgHTo5MYZlEXGCAI4hOvgXukPRt+zD7+HOni1j8O0kGAJ9CLSuBrjynp/wXOlnk32C+4Sl7P4snWaV8UIzRdSEF6Qme0bxS/VbS4pbk9JXt9wp1T9HRSwtaL4uShnY6SuOiNu8jMJbIg== 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=OI2trmdagJxJHWGs0Mr/3IG1rGf7thrxGHATcP54Cds=; b=gwI20kB6tygTTZUpNDSdQstmAhPhOuGENn4bc26Zn7shkHrthPFtkOmJPC2/GL9XTvZSJFSB87N20aqGV9avD2UK16sxVLnwKDUrVZCOr7Agl3bytKO46dqym9aoo4GeLSpiKD9J41I7tM4U4gJT7GwjmSux7XowOEA8m8ut5rBQeZukweLwMw45RRLjShxUf33O+BHmywPK3rFo55cNFSWCVNzGBn+roxwoQN/IkZxcFCJ8iyMMqys76QRvipg5Qb8jrwFl8FqPNCygwrhtmrIlGGAW6EZADhkkW9tUxXal9kJ3bH5Uy//l1PFTtnENM12YzbDWmbMCp1g39aIBBQ== 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 X-Received: from IA1PR12MB6458.namprd12.prod.outlook.com (2603:10b6:208:3aa::22) by BL1PR12MB5061.namprd12.prod.outlook.com (2603:10b6:208:310::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Tue, 31 Oct 2023 10:43:02 +0000 X-Received: from IA1PR12MB6458.namprd12.prod.outlook.com ([fe80::d727:a124:4199:a8c6]) by IA1PR12MB6458.namprd12.prod.outlook.com ([fe80::d727:a124:4199:a8c6%5]) with mapi id 15.20.6933.024; Tue, 31 Oct 2023 10:43:01 +0000 From: "Attar, AbdulLateef (Abdul Lateef) via groups.io" To: Laszlo Ersek , "devel@edk2.groups.io" , "Lin, Jacque" CC: "Chang, Abner" , Gerd Hoffmann , Paolo Bonzini Subject: Re: [edk2-devel] [PATCH] UefiCpuPkg/MmSaveStateLib: Remove checking Smm Rev ID in AMD MmSaveStateLib Thread-Topic: [edk2-devel] [PATCH] UefiCpuPkg/MmSaveStateLib: Remove checking Smm Rev ID in AMD MmSaveStateLib Thread-Index: AQHaCvgRfxQTobNscky1XBKIrG8ILbBiXeuAgAFTvyA= Date: Tue, 31 Oct 2023 10:43:01 +0000 Message-ID: References: <20231030061203.1166-1-hsienchieh.lin@amd.com> In-Reply-To: Accept-Language: en-US X-Mentions: HsienChieh.Lin@amd.com X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=02b58db7-8d9d-4dc4-80ab-1a30fabd210c;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=0;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP 2.0;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2023-10-31T10:20:12Z;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR12MB6458:EE_|BL1PR12MB5061:EE_ x-ms-office365-filtering-correlation-id: 90a0292e-9dd7-43c2-ea45-08dbd9fe27ff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: +UfWTuBi4PpXBnrVJgigpz2jWYW3ndfMolX/2/Of1Ar0NYv7GbU7ViC4AU41iLX7g2/OaYvZgC5px/xKOZDCh+aWRuqUhnJvVJSn/n4TI0c2fS/XjqxfamVWI7WeDn/C1HaGEm2T4LEs6RgDIHd+SySEa+io0idQhDXEk+xtJtqCpMVifK+pKIdcVirPlnDGTWm5JNeU/zknX+iu+r/OKUQNKwB/sO1BfeNxyeKRhku/Jt9twRIjt1938Qd8giYiOWlS39yKBI4pLgIx1/OPyVWLtjobSE+R0aGjVeekfoEkjy0Bs3ZFpOIC2uHh1dx0yTNeqprcxCSLV6c5apMAXi4tB1wfyAYPoF7aiHhywCxJ+TMvf7xVZNEuLL4WrqExkDOvblvt3HtpE1Je1WH8HEK6owdUBrWS3ea7pyYXZh5G/eGdjWXywU96eahpsw80EYqImp3mod0Kr3sjZ5q4LzoSa+ObplHxW8DoeUMzA9Zp3DMCgKmUux+1dW15e1dCb15Mr8AuoTuFgJR0fECuh8RZ2eaBBFeEVEvXKmctYo3IGnJZx4w9Rs9NmTi62uZcBvtZGW6smCzsJPUgEAIbAXVlMZQJT1UKSuc02h6XWo61OGKrcjknUkzsB3SlKNcjubnbTSobkOTXSyXiQbCmPvNQwOHZhUTunxMKSSAuEwc= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q0FMWHpvSUZHQ3ZNUDJDMUo3YnNRaTlKVmdhalpuZlpxVDBJdFQ5QlRzbmpx?= =?utf-8?B?c2tZQUk4eUNMbmV1YWhmQUFpZldNYzhxWmhWb3F0Mkd5VEtlMHlKeHlsUERn?= =?utf-8?B?QlBBSjZtcFJjYVBOM1ZXYk13U0Fmcm5KSUEwSjd3eFJkL0V2aklyRDFiRHl5?= =?utf-8?B?MytEWjJXQmlyZWpDMHBCcjVxSEpobXdXd0dHQSt2TFkxNzdnRkUyaHJheXFX?= =?utf-8?B?MjQybDZuUjZJbUpxVXRuQmM2RFdKRTJPbTFVOEU5WnlPL2FXZ1QyQ0RFR216?= =?utf-8?B?SHl3RHBNOVBkL3NUMW4zdlRUQUlybkUrRHZpTXdEWS93b2ZuU2VCQ2h5ajFQ?= =?utf-8?B?KzVrcEI1NU9FQU5SeFVPTkx2NVJrSHFPQWM0WkhGS2FNbFZvMFVVZkxHNjFX?= =?utf-8?B?VGFPbzZQZ2hnVDFZWmVJa09IN0QvVUxhK0Y2UzBRV2Q1RVJ2Um1zemYrczUw?= =?utf-8?B?WkoyNFhIVnZtejZIaU43ZGR3UGFuMzUrNjV0RWkrZmw2dDRWZ1RPY2JRZGxS?= =?utf-8?B?b0VFSWdZZDZUSG4zaklJK0pLbC9uT2JGQVpDWUZodGpQU3NZR3JyM3FFUkFJ?= =?utf-8?B?QWRPYk5CWEJoQXFBbjFjZXVJbUYxRjVzcDVKREZta09PYkk1eHVzUHZCZGJT?= =?utf-8?B?MjAxdWJHZHVTUktFYlhYaU1tUmZCS1g0ZWtKa2NrcURLWjA5ZVpGMDNOMXF5?= =?utf-8?B?S2JWMUgwZ2tGRDlmSWFIdW42N040Z3Y4QmN4U3hOVW85WVRHV2tnZVdrN3Mr?= =?utf-8?B?cnJhMlJOLzVocnV3bWNNd0ZyQnUrdlMxZnFkYURlT0dxTzJaamFMMlF1Qzkx?= =?utf-8?B?c2U2OHpOUTRCUXFjMzVhNFRSblhTNmlmdVp4YVpkekNlemxiZ0QwWWdOTG54?= =?utf-8?B?aDlpcTlzanAyV2J4bjZaSURtY2owcGZYRzNURGtMclZ1TmRVVEJIakJqQm82?= =?utf-8?B?L2haZTFqRG1PUkR5eXNvaDZxQ25uZzVSaTNORngrTlY3aU54K2xrc0RWN3pS?= =?utf-8?B?cnJmVHk3K3NFY3cveEdVcmxSQXZnemlNd3NRR3lvNG5EZ0p0SXkzQkNORi85?= =?utf-8?B?RHlpSnlDS2N3bjFrWmVwNWtzbkR6RTJLQ2lIdWw4WmJFQlltYUxFbURxRXpR?= =?utf-8?B?S0kwcnV4bXdiMUJKRzNsTEQ5UXgzbHVJd2hvMmFHUFAwYmZyL3N3UlZYNFRT?= =?utf-8?B?NmM4alZaaTkwQSsrbDZWRStDcnBueGxIU24rM0doanBQeWpuc2x3U2ZyMnFP?= =?utf-8?B?VjB5MmUzSmNYdEltbUt6WTIxTEpxUUl0RlJGNmczd2JzVTEvZEhqdmloLzNk?= =?utf-8?B?QWYxeU45a21jNVo5bUNEVWpzVy9ZWEpnWThCUXNnVlROZ3hFQTZBaVo1U0tJ?= =?utf-8?B?emxTN2dwZjZPMEpWbTc1MDBFZVVRaVhtV1g1TG9CUmd6U21EQmJUdUdBeUhp?= =?utf-8?B?dzZrdVFVR1hQYjdFTkFXZjJsb0llR1ppdHB3aE9PRFJrcjNmMmdVaGcvWTFL?= =?utf-8?B?dlA0K2pxWGJMaUxsdVh6Z09ucDlXUTQzWXBVMkl2UGVaRlNtd01VaVhSaGow?= =?utf-8?B?THh3RlR5UUorR1crSWIvQWZpZDQzREtYN01nUnI3UjkwQkxabWZCLzVkOWhB?= =?utf-8?B?bVpzRDFLTUhLMExCRzA0dlhuYUp0amtzd25vL1FJTThFdGNwT2hoL2lNSW5y?= =?utf-8?B?MFBucEZ1U0pRU1h3cnlWamNSWUdZVWVUeTlxMkJkVXVpTXVnbkdZdDZ4NzZQ?= =?utf-8?B?anlmbEVnNktKVVpyYWRRaHVzU25VTEc1RG5RSk9aMDZDbEdwWFp6NmV2SWJU?= =?utf-8?B?RE5iUXlsMEV0VFdFRk5CUzdFa1JBclBVdWc4eWl2cmw2elBnNGU2bHVVYmlB?= =?utf-8?B?ZXg5MUNmQmljaTI0LzJYdld4Q3VHM0w1VFNRSG41UkZ5SXYwNXcwTVJZU2ZH?= =?utf-8?B?STVIc1JFV3B6QVJ4S2EzeVJEdGh1YTgzV0NBTGJVWXgrU2JnSHc2SWw0KzMw?= =?utf-8?B?VFBSQ1puTDhlNFNlbzRQT0dyTVNaUzVDSGN2NjRjdVhNdTBndHh1NUs4dVJL?= =?utf-8?B?WVNLdjU5MnZHY2RRSjVob3lXZDlFUzFYTVkrU1dCa0IycVBVOUE3TG1CQmpD?= =?utf-8?Q?TqPo=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA1PR12MB6458.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90a0292e-9dd7-43c2-ea45-08dbd9fe27ff X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2023 10:43:01.8922 (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: qR9/Erm4Lc9ndaPzzjieZf+jZoKqi+V72DGxjp+2NeWjvgqhh5KxzbhHPIhwZn+Il+ul85Piq/lS+G7RzXZbyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5061 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,AbdulLateef.Attar@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: dcoY0XaVt9Go5MQIruEEIwqZx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=Z+sa9BJE; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io W1B1YmxpY10NCg0KSGkgTGFzemxvIGFuZCBATGluLCBKYWNxdWUNCiAgICAgICAgUGxlYXNlIGZp bmQgbXkgcmVzcG9uc2UgaW5saW5lLg0KVGhhbmtzDQpBYmR1TA0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQpTZW50OiBN b25kYXksIE9jdG9iZXIgMzAsIDIwMjMgNzozNCBQTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlv OyBMaW4sIEphY3F1ZSA8SHNpZW5DaGllaC5MaW5AYW1kLmNvbT4NCkNjOiBBdHRhciwgQWJkdWxM YXRlZWYgKEFiZHVsIExhdGVlZikgPEFiZHVsTGF0ZWVmLkF0dGFyQGFtZC5jb20+OyBDaGFuZywg QWJuZXIgPEFibmVyLkNoYW5nQGFtZC5jb20+OyBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0 LmNvbT47IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+DQpTdWJqZWN0OiBSZTog W2VkazItZGV2ZWxdIFtQQVRDSF0gVWVmaUNwdVBrZy9NbVNhdmVTdGF0ZUxpYjogUmVtb3ZlIGNo ZWNraW5nIFNtbSBSZXYgSUQgaW4gQU1EIE1tU2F2ZVN0YXRlTGliDQoNCkNhdXRpb246IFRoaXMg bWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVyIGNh dXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9u ZGluZy4NCg0KDQorR2VyZCwgK1Bhb2xvDQoNCk9uIDEwLzMwLzIzIDA3OjEyLCBKYWNxdWUgTGlu IHZpYSBncm91cHMuaW8gd3JvdGU6DQo+IFJlbW92ZSBjaGVja2luZyBTTU0gUmV2IElEIGluIEFN RCBTYXZlIFN0YXRlIGxpYiB3aGVuIHJlYWRpbmcgU2F2ZQ0KPiBTdGF0ZSBSZWdpc3RlciBFRklf TU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTy4NCj4gRm9yIEFNRCwgaXQgaXMgbm90IG5lY2Vzc2Fy eSB0byBjaGVjayBTbW1SZXZJZCB3aGVuIHJlYWRpbmcgU2F2ZSBTdGF0ZQ0KPiBSZWdpc3RlciBF RklfTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTy4NCj4NCj4gQ2M6IEFiZHVsIExhdGVlZiBBdHRh ciA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNvbT4NCj4gQ2M6IEFibmVyIENoYW5nIDxhYm5lci5j aGFuZ0BhbWQuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBKYWNxdWUgTGluIDxoc2llbmNoaWVoLmxp bkBhbWQuY29tPg0KPiAtLS0NCj4gIFVlZmlDcHVQa2cvTGlicmFyeS9NbVNhdmVTdGF0ZUxpYi9B bWRNbVNhdmVTdGF0ZS5jIHwgMTMgLS0tLS0tLS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDEz IGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L01tU2F2 ZVN0YXRlTGliL0FtZE1tU2F2ZVN0YXRlLmMNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTW1TYXZl U3RhdGVMaWIvQW1kTW1TYXZlU3RhdGUuYw0KPiBpbmRleCAzMzE1YTZjYzQ0Li5jNGJmNmFkNGJi IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTW1TYXZlU3RhdGVMaWIvQW1kTW1T YXZlU3RhdGUuYw0KPiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTW1TYXZlU3RhdGVMaWIvQW1k TW1TYXZlU3RhdGUuYw0KPiBAQCAtMTAyLDcgKzEwMiw2IEBAIE1tU2F2ZVN0YXRlUmVhZFJlZ2lz dGVyICgNCj4gICAgT1VUIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyDQo+DQo+ ICAgICkNCj4NCj4gIHsNCj4NCj4gLSAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgU21tUmV2 SWQ7DQo+DQo+ICAgIEVGSV9NTV9TQVZFX1NUQVRFX0lPX0lORk8gICpJb0luZm87DQo+DQo+ICAg IEFNRF9TTVJBTV9TQVZFX1NUQVRFX01BUCAgICpDcHVTYXZlU3RhdGU7DQo+DQo+ICAgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgIERhdGFXaWR0aDsNCj4NCj4gQEAgLTEyNCwxOCArMTIzLDYg QEAgTW1TYXZlU3RhdGVSZWFkUmVnaXN0ZXIgKA0KPg0KPg0KPiAgICAvLyBDaGVjayBmb3Igc3Bl Y2lhbCBFRklfTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTw0KPg0KPiAgICBpZiAoUmVnaXN0ZXIg PT0gRUZJX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfSU8pIHsNCj4NCj4gLSAgICAvLw0KPg0KPiAt ICAgIC8vIEdldCBTTU0gUmV2aXNpb24gSUQNCj4NCj4gLSAgICAvLw0KPg0KPiAtICAgIE1tU2F2 ZVN0YXRlUmVhZFJlZ2lzdGVyQnlJbmRleCAoQ3B1SW5kZXgsIEFNRF9NTV9TQVZFX1NUQVRFX1JF R0lTVEVSX1NNTVJFVklEX0lOREVYLCBzaXplb2YgKFNtbVJldklkKSwgJlNtbVJldklkKTsNCj4N Cj4gLQ0KPg0KPiAtICAgIC8vDQo+DQo+IC0gICAgLy8gU2VlIGlmIHRoZSBDUFUgc3VwcG9ydHMg dGhlIElPTWlzYyByZWdpc3RlciBpbiB0aGUgc2F2ZSBzdGF0ZQ0KPg0KPiAtICAgIC8vDQo+DQo+ IC0gICAgaWYgKFNtbVJldklkIDwgQU1EX1NNTV9NSU5fUkVWX0lEX1g2NCkgew0KPg0KPiAtICAg ICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+DQo+IC0gICAgfQ0KPg0KPiAtDQo+DQo+ICAgICAg Ly8gQ2hlY2sgaWYgSU8gUmVzdGFydCBEd29yZCBbSU8gVHJhcF0gaXMgdmFsaWQgb3Igbm90IHVz aW5nIGJpdCAxLg0KPg0KPiAgICAgIGlmICghKENwdVNhdmVTdGF0ZS0+eDY0LklPX0RXb3JkICYg MHgwMnUpKSB7DQo+DQo+ICAgICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4NCg0KSSBzdGls bCBkb24ndCB1bmRlcnN0YW5kLg0KDQpBcmUgeW91IHNheWluZyB0aGF0IHRoZQ0KDQogIFNtbVJl dklkIDwgQU1EX1NNTV9NSU5fUkVWX0lEX1g2NA0KDQpjaGVjayB3aWxsIGFsd2F5cyBldmFsdWF0 ZSB0byBGQUxTRSwgYW5kIHNvIHRoZSAicmV0dXJuIEVGSV9OT1RfRk9VTkQiDQpicmFuY2ggaXMg ZGVhZCBjb2RlPw0KW0F0dGFyLCBBYmR1bExhdGVlZiAoQWJkdWwgTGF0ZWVmKV0gdGhhdCdzIHJp Z2h0IGl0IGFsd2F5cyBldmFsdWF0ZSB0byBGQUxTRQ0KSWYgdGhhdCdzIHRoZSBjYXNlLCB0aGVu IHRoZSBwYXRjaCBzZWVtcyByaWdodCwgYnV0ICp3aHkqIGlzIFNtbVJldklkIGFsd2F5cyBncmVh dGVyIHRoYW4gb3IgZXF1YWwgdG8gQU1EX1NNTV9NSU5fUkVWX0lEX1g2ND8NCltBdHRhciwgQWJk dWxMYXRlZWYgKEFiZHVsIExhdGVlZildIGFzIHBlciBBTUQ2NCBQcm9ncmFtbWVyJ3MgbWFudWFs IDEwLjIuNCBTTU0tUmV2aXNpb24gSWRlbnRpZmllci4NCkZpcnN0IDE2Yml0IGNvbnRhaW5zIHRo ZSB2ZXJzaW9uLCB3aGljaCAweDY0IGZvciA2NGJpdCBhcmNoaXRlY3R1cmUuDQpCaXQgMTYgYW5k IGJpdCAxNyBhbHdheXMgc2V0IDEuDQpIZW5jZSBTbW1SZXZJZCBpcyBhbHdheXMgZXF1YWwgdG8g QU1EX1NNTV9NSU5fUkVWX0lEX1g2NC4NCg0KU21tUmV2SWQgaXMgdXNlZCB0byB0ZWxsIGFwYXJ0 IHg4NiBmcm9tIHg2NCAoaS5lLiwgdG8gZGlzdGluZ3Vpc2ggdGhlIHR3byBmb3JtYXRzIG9mIHRo ZSBzYXZlIHN0YXRlIG1hcCkuIElzIHRoZSBpbnRlbnQgb2YgdGhpcyBwYXRjaCB0byByZW1vdmUg MzItYml0ICh4ODYpIHN1cHBvcnQ/DQpbQXR0YXIsIEFiZHVsTGF0ZWVmIChBYmR1bCBMYXRlZWYp XSAgTm9wZSwgd2UgYXJlIG5vdCByZW1vdmluZyB0aGUgeDg2KDMyYml0KSBzdXBwb3J0Lg0KQExp biwgSmFjcXVlIGNhbiB5b3UgbW9kaWZ5IHRoZSBsb2dpYyBsaWtlIGJlbG93LCBzbyB0aGF0IHdl IHdpbGwgaG9ub3IgeDg2KDMyYml0KS4NCg0KaWYgKE1tU2F2ZVN0YXRlR2V0UmVnaXN0ZXJMbWEg KCkgPT0gRUZJX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfTE1BXzMyQklUKSB7DQogICAgLy8NCiAg ICAvLyBHZXQgU01NIFJldmlzaW9uIElEDQogICAgLy8NCiAgICBNbVNhdmVTdGF0ZVJlYWRSZWdp c3RlckJ5SW5kZXggKENwdUluZGV4LCBBTURfTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9TTU1SRVZJ RF9JTkRFWCwgc2l6ZW9mIChTbW1SZXZJZCksICZTbW1SZXZJZCk7DQogICAgaWYgKFNtbVJldklk IDwgQU1EX1NNTV9NSU5fUkVWX0lEX1g2NCkgew0KICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7 DQogICAgfQ0KfQ0KVGhhdCBtYWtlcyBtZSB1bmNvbWZvcnRhYmxlLCBiZWNhdXNlIGl0IGNvdWxk IGJyZWFrIFNNTSBzdXBwb3J0IGluDQoqSUEzMiogT1ZNRi4gTm90ZSB0aGF0IGNvbW1pdCBmMjE4 OGZlNWQxNTUgKCJPdm1mUGtnOiBVc2VzIE1tU2F2ZVN0YXRlTGliIGxpYnJhcnkiLCAyMDIzLTA3 LTAzKSBhbHNvIHVwZGF0ZWQgIk92bWZQa2cvT3ZtZlBrZ0lhMzIuZHNjIi4NCg0KSW4gZmFjdCwg SSdtIHdvcnJpZWQgdGhhdCB0aGUgY29udmVyc2lvbiBvZiBPVk1GIHRvIE1tU2F2ZVN0YXRlTGli IG1heSBoYXZlIGJlZW4gaW5jb3JyZWN0LiBOb3RlIHRoYXQgY29tbWl0IGYyMTg4ZmU1ZDE1NSBy ZW1vdmVkIHRoZSBmb2xsb3dpbmcgY29tbWVudCBmcm9tICJPdm1mUGtnL0xpYnJhcnkvU21tQ3B1 RmVhdHVyZXNMaWIvU21tQ3B1RmVhdHVyZXNMaWIuYyI6DQoNCj4gLy8NCj4gLy8gTm8gc3VwcG9y dCBmb3IgSS9PIHJlc3RhcnQNCj4gLy8NCg0KRnVydGhlcm1vcmUsIGNvbW1pdCBmMjE4OGZlNWQx NTUgcmVtb3ZlZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoNCkdldFJlZ2lzdGVySW5kZXgoKSwg UmVhZFNhdmVTdGF0ZVJlZ2lzdGVyQnlJbmRleCgpLCBTbW1DcHVGZWF0dXJlc1JlYWRTYXZlU3Rh dGVSZWdpc3RlcigpLA0KU21tQ3B1RmVhdHVyZXNXcml0ZVNhdmVTdGF0ZVJlZ2lzdGVyKCkuDQoN CkluIHBhcnRpY3VsYXIsIHRoZSBsYXR0ZXIgdHdvIGZ1bmN0aW9ucyBjb250YWluZWQgY29tbWVu dHMgYW5kIGNvZGUNCmxpa2U6DQoNCj4gICAvLw0KPiAgIC8vIENoZWNrIGZvciBzcGVjaWFsIEVG SV9TTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTw0KPiAgIC8vDQo+ICAgaWYgKFJlZ2lzdGVyID09 IEVGSV9TTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTykgew0KPiAgICAgcmV0dXJuIEVGSV9OT1Rf Rk9VTkQ7DQo+ICAgfQ0KDQphbmQNCg0KPiAgIC8vDQo+ICAgLy8gV3JpdGVzIHRvIEVGSV9TTU1f U0FWRV9TVEFURV9SRUdJU1RFUl9JTyBhcmUgbm90IHN1cHBvcnRlZA0KPiAgIC8vDQo+ICAgaWYg KFJlZ2lzdGVyID09IEVGSV9TTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTykgew0KPiAgICAgcmV0 dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICAgfQ0KDQpBbGwgb2YgdGhlc2UgY2FtZSBmcm9tIFBhb2xv J3Mgb3JpZ2luYWwgY29tbWl0IDQwMzZiNGU1N2NjZSAoIk92bWZQa2c6DQpTbW1DcHVGZWF0dXJl c0xpYjogaW1wbGVtZW50IFNNUkFNIHN0YXRlIHNhdmUgbWFwIGFjY2VzcyIsIDIwMTUtMTEtMzAp Lg0KDQpDb25zaWRlciB0aGUgZm9sbG93aW5nIGNvbW1pdHMgZnJvbSBQYW9sbyAoaW5jbHVkaW5n IDQwMzZiNGU1N2NjZSk6DQoNCj4gY29tbWl0IDg2ZDcxNTg5YzFmZGIwOTljMDRhMGY5ZTU0OGZl ODY4YTJmZWYyNjYNCj4gQXV0aG9yOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29t Pg0KPiBEYXRlOiAgIE1vbiBOb3YgMzAgMTg6NDY6MjcgMjAxNSArMDAwMA0KPg0KPiAgICAgT3Zt ZlBrZzogaW1wb3J0IFNtbUNwdUZlYXR1cmVzTGliIGZyb20gVWVmaUNwdVBrZw0KPg0KPiAgICAg VGhlIG5leHQgcGF0Y2hlcyB3aWxsIGN1c3RvbWl6ZSB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBs ZXQncyBzdGFydCBmcm9tDQo+ICAgICB0aGUgY29tbW9uIHZlcnNpb24gdG8gYmV0dGVyIHNob3cg dGhlIGNoYW5nZXMuDQoNCmFuZA0KDQo+IGNvbW1pdCBkN2U3MWIyOTI1MDEyYzk3MDZkMWQwNDRj YTQ2NjE3M2FhYzgwMmE4DQo+IEF1dGhvcjogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0 LmNvbT4NCj4gRGF0ZTogICBNb24gTm92IDMwIDE4OjQ2OjMyIDIwMTUgKzAwMDANCj4NCj4gICAg IE92bWZQa2c6IFNtbUNwdUZlYXR1cmVzTGliOiByZW1vdmUgdW5uZWNlc3NhcnkgYml0cw0KPg0K PiAgICAgU01SUiwgTVRSUiwgYW5kIFNNTSBGZWF0dXJlIENvbnRyb2wgc3VwcG9ydCBpcyBub3Qg bmVlZGVkIG9uIGEgdmlydHVhbA0KPiAgICAgcGxhdGZvcm0uDQoNCmFuZA0KDQo+IGNvbW1pdCA0 MDM2YjRlNTdjY2VmNGUwZmE0OGQ4Mzg5YWNmNjM5MDgyNmMyYmVkDQo+IEF1dGhvcjogUGFvbG8g Qm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4NCj4gRGF0ZTogICBNb24gTm92IDMwIDE4OjQ2 OjM3IDIwMTUgKzAwMDANCj4NCj4gICAgIE92bWZQa2c6IFNtbUNwdUZlYXR1cmVzTGliOiBpbXBs ZW1lbnQgU01SQU0gc3RhdGUgc2F2ZSBtYXAgYWNjZXNzDQo+DQo+ICAgICBUaGlzIGltcGxlbWVu dGF0aW9uIGNvcGllcyBTTVJBTSBzdGF0ZSBzYXZlIG1hcCBhY2Nlc3MgZnJvbSB0aGUNCj4gICAg IFBpU21tQ3B1RHhlU21tIG1vZHVsZS4NCj4NCj4gICAgIFRoZSBtb3N0IG5vdGFibGUgY2hhbmdl IGlzOg0KPg0KPiAgICAgLSBkcm9wcGluZyBzdXBwb3J0IGZvciBFRklfU01NX1NBVkVfU1RBVEVf UkVHSVNURVJfSU8NCj4NCj4gICAgIC0gY2hhbmdpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIEVG SV9TTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9MTUEgdG8gdXNlDQo+ICAgICAgIHRoZSBTTU0gcmV2 aXNpb24gaWQgaW5zdGVhZCBvZiBhIGxvY2FsIHZhcmlhYmxlICh3aGljaA0KPiAgICAgICBVZWZp Q3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMgaW5pdGlhbGl6ZXMgZnJvbSBD UFVJRCdzIExNDQo+ICAgICAgIGJpdCkuICBUaGlzIGFjY291bnRzIGZvciBRRU1VJ3MgaW1wbGVt ZW50YXRpb24gb2YgeDg2XzY0LCB3aGljaCBhbHdheXMNCj4gICAgICAgdXNlcyByZXZpc2lvbiAw eDIwMDY0IGV2ZW4gaWYgdGhlIExNIGJpdCBpcyB6ZXJvLg0KDQphbmQNCg0KPiBjb21taXQgYzFm Y2Q4MGJmNDJlNmIxZTkxYzFjNzQyZDIyMmYxYmE0MjFiMWQxZA0KPiBBdXRob3I6IFBhb2xvIEJv bnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+DQo+IERhdGU6ICAgTW9uIE5vdiAzMCAxODo0Njo0 MiAyMDE1ICswMDAwDQo+DQo+ICAgICBPdm1mUGtnOiBTbW1DcHVGZWF0dXJlc0xpYjogY3VzdG9t aXplIHN0YXRlIHNhdmUgbWFwIGZvcm1hdA0KPg0KPiAgICAgVGhpcyBhZGp1c3RzIHRoZSBwcmV2 aW91c2x5IGludHJvZHVjZWQgc3RhdGUgc2F2ZSBtYXAgYWNjZXNzIGZ1bmN0aW9ucywgdG8NCj4g ICAgIGFjY291bnQgZm9yIFFFTVUgYW5kIEtWTSdzIDY0LWJpdCBzdGF0ZSBzYXZlIG1hcCBmb2xs b3dpbmcgdGhlIEFNRCBzcGVjDQo+ICAgICByYXRoZXIgdGhhbiB0aGUgSW50ZWwgb25lLg0KDQpX ZXJlIHRoZXNlIFFFTVUtc3BlY2lmaWMgZGlmZmVyZW5jZXMgY29uc2lkZXJlZCB3aGVuIE9WTUYg d2FzIG1pZ3JhdGVkIHRvIE1tU2F2ZVN0YXRlTGliLCBpbiBjb21taXQ/DQoNCkJlZm9yZSB0aGUg cGF0Y2hlcyBmb3IgVGlhbm9Db3JlIEJ1Z3ppbGxhIDQxODIgKGNvbW1pdCByYW5nZSBhZDdkM2Fj ZTFhZDQuLmYyMTg4ZmU1ZDE1NSksIHdlIHVzZWQgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIGNhbGwg dHJlZSwgZm9yIEVGSV9TTU1fQ1BVX1BST1RPQ09MLlJlYWRTYXZlU3RhdGUsIGluIE9WTUY6DQoN CiAgU21tUmVhZFNhdmVTdGF0ZSgpICAgICAgICAgICAgICAgICAgICAgIFtVZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmNdDQogICAgU21tQ3B1RmVhdHVyZXNSZWFkU2F2 ZVN0YXRlUmVnaXN0ZXIoKSBbT3ZtZlBrZy9MaWJyYXJ5L1NtbUNwdUZlYXR1cmVzTGliL1NtbUNw dUZlYXR1cmVzTGliLmNdDQogICAgICByZXR1cm4gRUZJX05PVF9GT1VORA0KICAgICAgZm9yIEVG SV9TTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTw0KDQpUaHVzLCB0aGUgcHJvdG9jb2wgbWVtYmVy IGZ1bmN0aW9uIHdvdWxkIHByb3BhZ2F0ZSBFRklfTk9UX0ZPVU5EIG91dHdhcmRzLCBhbmQgUmVh ZFNhdmVTdGF0ZVJlZ2lzdGVyKCkgW1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vU21yYW1TYXZl U3RhdGUuY10gd291bGQgbm90IGJlIHJlYWNoZWQuIEluIHBhcnRpY3VsYXIsIHRoZSByZWdpc3Rl ciB3b3VsZCBub3QgYmUgYWNjZXNzZWQgYXQgYWxsLg0KDQpBZnRlciBjb21taXQgZjIxODhmZTVk MTU1IGhvd2V2ZXIsIHdlIGhhdmUgdGhpcywgaW4gT1ZNRjoNCg0KICBTbW1SZWFkU2F2ZVN0YXRl KCkgICAgICAgICAgW1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uY10N CiAgICBNbVNhdmVTdGF0ZVJlYWRSZWdpc3RlcigpIFtVZWZpQ3B1UGtnL0xpYnJhcnkvTW1TYXZl U3RhdGVMaWIvQW1kTW1TYXZlU3RhdGUuY10NCg0KTmFtZWx5Og0KDQo+ICAgLy8gQ2hlY2sgZm9y IHNwZWNpYWwgRUZJX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfSU8NCj4gICBpZiAoUmVnaXN0ZXIg PT0gRUZJX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfSU8pIHsNCj4gICAgIC8vDQo+ICAgICAvLyBH ZXQgU01NIFJldmlzaW9uIElEDQo+ICAgICAvLw0KPiAgICAgTW1TYXZlU3RhdGVSZWFkUmVnaXN0 ZXJCeUluZGV4IChDcHVJbmRleCwNCj4gQU1EX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfU01NUkVW SURfSU5ERVgsIHNpemVvZiAoU21tUmV2SWQpLA0KPiAmU21tUmV2SWQpOw0KPg0KPiAgICAgLy8N Cj4gICAgIC8vIFNlZSBpZiB0aGUgQ1BVIHN1cHBvcnRzIHRoZSBJT01pc2MgcmVnaXN0ZXIgaW4g dGhlIHNhdmUgc3RhdGUNCj4gICAgIC8vDQo+ICAgICBpZiAoU21tUmV2SWQgPCBBTURfU01NX01J Tl9SRVZfSURfWDY0KSB7DQo+ICAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiAgICAgfQ0K Pg0KPiAgICAgLy8gQ2hlY2sgaWYgSU8gUmVzdGFydCBEd29yZCBbSU8gVHJhcF0gaXMgdmFsaWQg b3Igbm90IHVzaW5nIGJpdCAxLg0KPiAgICAgaWYgKCEoQ3B1U2F2ZVN0YXRlLT54NjQuSU9fRFdv cmQgJiAweDAydSkpIHsNCj4gICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICAgICB9DQoN ClNvLCBpbmRlZWQuIFRoZSBwYXRjaGVzIGZvciBUaWFub0NvcmUgQnVnemlsbGEgNDE4MiB3ZXJl IG5vdCBjb3JyZWN0IGZvciBPVk1GLg0KDQpBbmQgKnRoaXMqIHBhdGNoIHdvdWxkIG1ha2UgdGhp bmdzIGV2ZW4gd29yc2UuDQoNCkFzIFBhb2xvJ3MgY29tbWl0IDQwMzZiNGU1N2NjZSBhYm92ZSBz dGF0ZXMsIFFFTVUgI2RlZmluZXMgU01NX1JFVklTSU9OX0lEIGFzIDB4MDAwMjAwNjQgKHNlZSAi dGFyZ2V0L2kzODYvdGNnL3N5c2VtdS9zbW1faGVscGVyLmMiKS4NCg0KVGhhdCBtZWFucyB0aGF0 LCAqZXZlbiBhZnRlciogY29tbWl0IGYyMTg4ZmU1ZDE1NSwgdGhlIGNoZWNrDQoNCiAgICBpZiAo U21tUmV2SWQgPCBBTURfU01NX01JTl9SRVZfSURfWDY0KSB7DQogICAgICByZXR1cm4gRUZJX05P VF9GT1VORDsNCiAgICB9DQoNCndvdWxkIHByZXZlbnQgT1ZNRiBmcm9tIGFjY2Vzc2luZyBFRklf TU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTywgYmVjYXVzZQ0KQU1EX1NNTV9NSU5fUkVWX0lEX1g2 NCBpcyAjZGVmaW5lZCBhcyAweDMwMDY0IGluICJNZGVQa2cvSW5jbHVkZS9SZWdpc3Rlci9BbWQv U21yYW1TYXZlU3RhdGVNYXAuaCIuDQoNClNvIHRoZSBjb25kaXRpb24gd291bGQgYWN0dWFsbHkg ZXZhbHVhdGUgdG8gVFJVRSwNCk1tU2F2ZVN0YXRlUmVhZFJlZ2lzdGVyKCkgd291bGQgcmV0dXJu IEVGSV9OT1RfRk9VTkQsIGFuZA0KU21tUmVhZFNhdmVTdGF0ZSgpIC0tIHRoZSBFRklfU01NX0NQ VV9QUk9UT0NPTC5SZWFkU2F2ZVN0YXRlIHByb3RvY29sIG1lbWJlciBmdW5jdGlvbiAtLSB3b3Vs ZCBhbHNvIHJldHVybiBFRklfTk9UX0ZPVU5ELg0KDQpQdXQgZGlmZmVyZW50bHksIHRoYXQgcGFy dGljdWxhciBjaGVjayB3b3VsZCBtYWludGFpbiB0aGUgY29uc2lzdGVuY3kgb2YgT1ZNRidzIGJl aGF2aW9yIHJlZ2FyZGluZyBFRklfTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9JTywgKmV2ZW4gdGhv dWdoKiB0aGUgcGF0Y2hlcyBmb3IgVGlhbm9Db3JlIEJ1Z3ppbGxhIDQxODIgKGNvbW1pdCByYW5n ZQ0KYWQ3ZDNhY2UxYWQ0Li5mMjE4OGZlNWQxNTUpIG1heSBoYXZlIGJlZW4gaW5jb3JyZWN0IGlu IG90aGVyIGFzcGVjdHMuDQoNCkFuZCB0aGVuIHRoZSAqcHJlc2VudCogcGF0Y2ggd291bGQgYnJl YWsgKnRoYXQqIGxhc3QgcmVzb3J0Lg0KDQpJbiBzaG9ydCwgdGhlIHN0YXRlbWVudCAiUUVNVS9P Vk1GIHVzZXMgdGhlIEFNRCBzYXZlIHN0YXRlIG1hcCIgaXMgbm90IGFjY3VyYXRlLiBJbiBtb3N0 IHNlbnNlcywgeWVzLCBidXQgbm90IGV4YWN0bHkuDQoNClRoZXJlZm9yZSB0aGlzIHBhdGNoIGlz IG5vdCBhY2NlcHRhYmxlIGZvciBPVk1GICh1bmxlc3MgeW91IGNhbiBwcm92ZSB0aGF0IGl0IG1h a2VzIGFic29sdXRlbHkgbm8gZGlmZmVyZW5jZSBmb3IgZWl0aGVyIG9mIElBMzIsIElBMzJYNjQs IGFuZA0KWDY0IE9WTUYpLg0KDQoNCi4uLiBCYWNrIHRvIHRoZSBhbHJlYWR5IHVwc3RyZWFtIHBh dGNoZXMuIEFnYWluIGZyb20gUGFvbG8ncyBvcmlnaW5hbCBjb21taXQgNDAzNmI0ZTU3Y2NlICgi T3ZtZlBrZzogU21tQ3B1RmVhdHVyZXNMaWI6IGltcGxlbWVudCBTTVJBTSBzdGF0ZSBzYXZlIG1h cCBhY2Nlc3MiLCAyMDE1LTExLTMwKSwgd2UgdXNlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgYWNj ZXNzIGxvZ2ljIGZvciBFRklfU01NX1NBVkVfU1RBVEVfUkVHSVNURVJfTE1BLCBhdCBjb21taXQg YWQ3ZDNhY2UxYWQ0IChpLmUuLCBiZWZvcmUgdGhlIGNvbnZlcnNpb24pLCBpbiBTbW1DcHVGZWF0 dXJlc1JlYWRTYXZlU3RhdGVSZWdpc3RlcigpDQpbT3ZtZlBrZy9MaWJyYXJ5L1NtbUNwdUZlYXR1 cmVzTGliL1NtbUNwdUZlYXR1cmVzTGliLmNdDQoNCj4gICAvLw0KPiAgIC8vIENoZWNrIGZvciBz cGVjaWFsIEVGSV9TTU1fU0FWRV9TVEFURV9SRUdJU1RFUl9MTUENCj4gICAvLw0KPiAgIGlmIChS ZWdpc3RlciA9PSBFRklfU01NX1NBVkVfU1RBVEVfUkVHSVNURVJfTE1BKSB7DQo+ICAgICAvLw0K PiAgICAgLy8gT25seSBieXRlIGFjY2VzcyBpcyBzdXBwb3J0ZWQgZm9yIHRoaXMgcmVnaXN0ZXIN Cj4gICAgIC8vDQo+ICAgICBpZiAoV2lkdGggIT0gMSkgew0KPiAgICAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiAgICAgfQ0KPg0KPiAgICAgQ3B1U2F2ZVN0YXRlID0gKFFFTVVf U01SQU1fU0FWRV9TVEFURV9NQVANCj4gKilnU21zdC0+Q3B1U2F2ZVN0YXRlW0NwdUluZGV4XTsN Cj4NCj4gICAgIC8vDQo+ICAgICAvLyBDaGVjayBDUFUgbW9kZQ0KPiAgICAgLy8NCj4gICAgIGlm ICgoQ3B1U2F2ZVN0YXRlLT54ODYuU01NUmV2SWQgJiAweEZGRkYpID09IDApIHsNCj4gICAgICAg KihVSU5UOCAqKUJ1ZmZlciA9IDMyOw0KPiAgICAgfSBlbHNlIHsNCj4gICAgICAgKihVSU5UOCAq KUJ1ZmZlciA9IDY0Ow0KPiAgICAgfQ0KPg0KPiAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAg IH0NCg0KQnV0IG5vdyB3ZSBoYXZlLCBpbiBNbVNhdmVTdGF0ZVJlYWRSZWdpc3RlcigpDQpbVWVm aUNwdVBrZy9MaWJyYXJ5L01tU2F2ZVN0YXRlTGliL0FtZE1tU2F2ZVN0YXRlLmNdOg0KDQo+ICAg Ly8gQ2hlY2sgZm9yIHNwZWNpYWwgRUZJX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfTE1BDQo+ICAg aWYgKFJlZ2lzdGVyID09IEVGSV9NTV9TQVZFX1NUQVRFX1JFR0lTVEVSX0xNQSkgew0KPiAgICAg Ly8gT25seSBieXRlIGFjY2VzcyBpcyBzdXBwb3J0ZWQgZm9yIHRoaXMgcmVnaXN0ZXINCj4gICAg IGlmIChXaWR0aCAhPSAxKSB7DQo+ICAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ICAgICB9DQo+DQo+ICAgICAqKFVJTlQ4ICopQnVmZmVyID0gTW1TYXZlU3RhdGVHZXRSZWdp c3RlckxtYSAoKTsNCj4NCj4gICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gICB9DQoNCndoZXJl IE1tU2F2ZVN0YXRlR2V0UmVnaXN0ZXJMbWEoKQ0KW1VlZmlDcHVQa2cvTGlicmFyeS9NbVNhdmVT dGF0ZUxpYi9BbWRNbVNhdmVTdGF0ZS5jXSBkb2VzIHRoZSBmb2xsb3dpbmc6DQoNCj4gICBVSU5U MzIgIExNQVZhbHVlOw0KPg0KPiAgIExNQVZhbHVlID0gKFVJTlQzMilBc21SZWFkTXNyNjQgKEVG RVJfQUREUkVTUykgJiBMTUE7DQo+ICAgaWYgKExNQVZhbHVlKSB7DQo+ICAgICByZXR1cm4gRUZJ X01NX1NBVkVfU1RBVEVfUkVHSVNURVJfTE1BXzY0QklUOw0KPiAgIH0NCj4NCj4gICByZXR1cm4g RUZJX01NX1NBVkVfU1RBVEVfUkVHSVNURVJfTE1BXzMyQklUOw0KDQpJIGRvbid0IGtub3cgaWYg dGhpcyBpcyBzdGlsbCBjb3JyZWN0IG9uIFFFTVUgb3Igbm90LCBidXQgdGhpcyBpcyBub3Qgd2hh dCB0aGUgb3JpZ2luYWwgY29kZSBkaWQuIFRoZSBvcmlnaW5hbCBjb2RlIGNoZWNrZWQgU01NUmV2 SWQsIGFzIFBhb2xvIHNhaWQgaW4gdGhlIG1lc3NhZ2Ugb2YgY29tbWl0IDQwMzZiNGU1N2NjZTsg dGhlIG5ldyBjb2RlIHJlYWRzIHRoZSBFRkVSIE1TUi4NCg0KTGFzemxvDQoNCg0KCi09LT0tPS09 LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2Vz IHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMTA0MzApOiBodHRwczov L2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS8xMTA0MzAKTXV0ZSBUaGlzIFRvcGljOiBo dHRwczovL2dyb3Vwcy5pby9tdC8xMDIyNjk5MDgvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwr b3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8v Zy9kZXZlbC91bnN1YiBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09LT0t CgoNCg==