From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.6508.1634198343462191229 for ; Thu, 14 Oct 2021 00:59:03 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=KINsARuG; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: min.m.xu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10136"; a="227522612" X-IronPort-AV: E=Sophos;i="5.85,372,1624345200"; d="scan'208";a="227522612" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Oct 2021 00:58:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,372,1624345200"; d="scan'208";a="491843882" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga008.jf.intel.com with ESMTP; 14 Oct 2021 00:58:51 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 14 Oct 2021 00:58:51 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 14 Oct 2021 00:58:51 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.174) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 14 Oct 2021 00:58:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NQFwcYmKzlTeQea2hUHjPGBRZSgy08975cLrWyk7Y6ztHv0S147qMpvpO7DjVksx+biQy64sv5/kuxa0dqLK365ZQ087XLXULUV5IdmoDr51aIisDLG0xXtqrv0UJIP1h6WB2yrV8GBzSUDU9pHrt84ApMqNiF2TM4d82Xd0FhxeXBw8KZTcYw6FZcfUAHFgb0yaUIDMJneDAx7pow5CivVBYGkPJvXNX9+FWDZDuPDKEitqARJBwFkn8s+2//TAsDpgNOpo1TZQ4FqkkhcAiZ9H6nZnY5uUXeXCpyqBB3jZo1sl6gvKi37xD3QYD48Lh6dgyxrj8d1gGpMWWobqKg== 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=PQNYSByiHIboPD+85MsQhiQSBl01srNXm4X6BM+NI6E=; b=nLQxyEGLnaK6p+LGNhKA1odwATmuQ3WoTGkWk1znMIye7J1qh+okfIjjzDfg3/zemD9IP3omMsm1lJq6s4AKvudCzT+zcWfhT8imh5x3dbguhmA6yrE+2SgauwUO7YTny9u/PUp5h2NxVz8Z8PPZmgD94no29y5acDynxBpEkCy4Y5lpmVW24yR18H1sG/JgrSsv25TRGQMLwZUgmGOusCbqS/BiUXeuv9EJAn45pANbgb3O6u2Cy6kO4QMcdzfcSfiwYJ1tztatvMbluIOU9eSIoWCObUPKlX2jTvtfZXUhc6c+JATkhG3EM6R5OvnylSGgMrJQvr1MbWBNTBcAOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PQNYSByiHIboPD+85MsQhiQSBl01srNXm4X6BM+NI6E=; b=KINsARuGDSThkOUnV3YDzSL8OfeApUA3PeO0nGjHovfBrGLp7aTN4ddI5gbFRtD8JiCidrGF+x7t4aiadPcPnkzCcK9yYgiAH/D3VF/MP8Wa5vIKxVsGELf8W9bDL0p2PPBke5GgLLlpOQ11+EH0xaobgX1pl+rAz56YuTJR2L8= Received: from PH0PR11MB5064.namprd11.prod.outlook.com (2603:10b6:510:3b::15) by PH0PR11MB4952.namprd11.prod.outlook.com (2603:10b6:510:40::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Thu, 14 Oct 2021 07:58:49 +0000 Received: from PH0PR11MB5064.namprd11.prod.outlook.com ([fe80::7deb:6c36:73c2:f0d4]) by PH0PR11MB5064.namprd11.prod.outlook.com ([fe80::7deb:6c36:73c2:f0d4%3]) with mapi id 15.20.4608.016; Thu, 14 Oct 2021 07:58:49 +0000 From: "Min Xu" To: "Ni, Ray" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul1" , Brijesh Singh , Erdem Aktas , James Bottomley , "Yao, Jiewen" , Tom Lendacky Subject: Re: [PATCH V2 07/28] UefiCpuPkg: Support TDX in BaseXApicX2ApicLib Thread-Topic: [PATCH V2 07/28] UefiCpuPkg: Support TDX in BaseXApicX2ApicLib Thread-Index: AQHXuZrDhmgNWK86YUawJX7XyijwsavQc62AgAGmryA= Date: Thu, 14 Oct 2021 07:58:48 +0000 Message-ID: References: <0dcb1ac3ad788cc7a4fd293fcf183b6ea9bdffb9.1633401643.git.min.m.xu@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2c6acf12-e07d-4d1e-7e2d-08d98ee874bb x-ms-traffictypediagnostic: PH0PR11MB4952: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nR35wDep2YVpzO6Vw69dZBXLsL/BHMVeBSm+z/gXglcWEQ7li7NsvtRqIwteMG0mSr8WOJjPr/mxEuXbrMSKK+7B5kbtwBuNy978qyiJIMd9Ifbxxn3h7AvxZ2eyYy+yOUh/1mo0BcIyR4tS19VuQfwNHGorUVsWWBhVpmDQjA+KYGSEPPvs5KTDta27UqxG39krlqac+Tszs3+q+VscofaaBBr8pqd+7/0Xxb1FZwtXtFj/TnFqo7NKS2apK2NkaGvxvi4NtDpGcGn3Pi+mpzRUASYGDJY5yyTyPT3Sk1DB2jCY4U2omFeRpckzFwsonswQcOrEsAmiP4t5KZWAMdV997Jhj45otynj0C4qgXNJl+9vfh2subGv3BCH0vsCe3Dj3vD8L6dUrJQztcASJdQg1PklauPgaizoL1DxFH3C+mZZa0zttMFGlJuuqFQ480omJvbFONjF1g2Pl3F3Wbfkc+L6UgMudprdbEfL2zuONNEJ4K3OGr33RAnL70uW7L3DCnJ+AsiHOweQH+1pP7GPzmYcVFK2oRIouHQkejtZao8/Nm35iJanHAGDhcswj2hEIx/zTp0JgIFIaR9v2brhLycEj9Wl31DxzAGkvjHAI35G4ntbfzOjShN3jBoe6GM3j++uIzKrP4TSpZ9u+wu56uBO4OFjMHkSl4Yqly7x3MsjmkH5wQ806IWPS8aw6sNOZcr1PWNkDZnPqToh7yGug+pYG3n4sp47pKBnE4hfXXQ77xqP6r8wnubKdyGbZC2OmRUgAS3gT38qcfqwl3y/HsvNvgBqX2cpvbP5dpY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5064.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(66946007)(83380400001)(122000001)(38100700002)(8936002)(76116006)(2906002)(508600001)(110136005)(54906003)(966005)(316002)(9686003)(55016002)(66476007)(4326008)(26005)(52536014)(38070700005)(186003)(82960400001)(33656002)(5660300002)(7696005)(19627235002)(71200400001)(66556008)(64756008)(66446008)(86362001)(8676002)(6506007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SVVQamlyeXZ2ZG5sQzhOS2RtSlNFY0crUTFaWVpMbG14VSsvMEdmYzFJekNk?= =?utf-8?B?bGR3UmNtaC9sMklIeVV0TTBxZUxVMDc5UzZWZXpsZmdVVUpLTVJyN3dSOTRM?= =?utf-8?B?TWtrMGRoL3UzYnM2RlpHeW1UL3RkVEkzMjlaUWtnWE54TDMzS2ZZZjFmaEF3?= =?utf-8?B?bXBNSVlxWk5ubjMvanVFdVpTOWhyWE1kTjJ3dnZZalpGQmZUNjhnelNxMkpU?= =?utf-8?B?SWFuQjJJRXgxZlFxQlNuM3FiczlkOXZWeTFyS2lNMzA1bDRPVGh6akZIM3RP?= =?utf-8?B?UzlEdlZxaGJFUURKOGJpVUtjaElPbTgzaFYvUDVMSHJqTy9sYzlhQmtrTHVN?= =?utf-8?B?T0dXYzdrKzdmS2xyUDZEekJjNHZwWm5NVWJiR1htc09TeHJCU29NdmZ4UUlH?= =?utf-8?B?MThUNEdmdENVR2k2dXBJSjQ2UzBVMzZzZXVTeFlUbFh1STNRbnZNWDR2cEpz?= =?utf-8?B?K2ZoTy9XSWtIYmdScmd4WGluUnZwc21EdVJMcERTNzd6eGZxM085MUxNOUwy?= =?utf-8?B?ZXNzSlAyblp1V0ZBYVNxVUExZVFhRXBoeUo2d3crczM3VmxFT0U4QmV0MHRx?= =?utf-8?B?SW9ZQmg3REI3c1hNRDl2UFVCRUNPVUJlNGd3bXJHWGRORUJrZERzeVNtelRk?= =?utf-8?B?VkVWbjFsaEF4ek5VQnhoYkpRTFJZalBvUGs5Nks5YVpYUWhvQ1hpVThqaXRI?= =?utf-8?B?M2lPdG12OHN2UmR6QmZLOU1ocXdQR3NYR1FtZzRjS3hiaWhpK2d2TVVReWpa?= =?utf-8?B?T21tVzc5TElSb08xaW5td0VmdHY5VDliNkhsdjVBTDU0QWxhRzEvL012dzh3?= =?utf-8?B?dGtOTzNSNHdmR1p2Zjdjbmt0Y2pCRnlkNHVRclljMEFKNmY4MlRTV2RYUnVw?= =?utf-8?B?YlQrTTlJRC93Zkh2akVNcmhzZjFYZE9lc3RTa3krdFFxUlRNK2wzZElNWkpG?= =?utf-8?B?UVdUR0ZMK1psOXB5VktzcUdWdklmOVltSDlqaWZqU3JSRDc0bm9HM3Q3TzFF?= =?utf-8?B?TUNGWWRhdWU4dW1ZcWJ0cXduNC9wbWhNMThBeXkzaGR6eXJya1hzd1VOcTVJ?= =?utf-8?B?dzZWNk1BeCtuRm1GZDVMWnJySDhDUVRrOXArbVh0dFl0L0RKVDhOa3hiSUNi?= =?utf-8?B?SmZLR0lGZ1ZZbVZqU0hEVDRsU3pIdU4vQUtEanV5aXdkamZyWHUyMGdNaUJz?= =?utf-8?B?QS8xeWxWZnhJUUxpQ1d6M2pYSE9VZk15Q2RTMlNaRGk0MlFTLzR5dWpDaXNU?= =?utf-8?B?STFkME1sU3ZuM0dHZzl1SFhKOVc1YTVUM3g4Z292ZjhWRXJVMERzZlQ5cHY4?= =?utf-8?B?cm03bmFLaW5wbG1yeWlSL1RUb2c2ajdza0luaHhIVEQ1Vk5jSTVlS2JJbWZJ?= =?utf-8?B?dUM5ZWkvUHE1NXRTcjV6R1JjcWR3eHFNbUZIMmhFejVQcVY4UU1La3lxWi8v?= =?utf-8?B?T04wVmEyN2R3WUxlSWZ3SjN4RUNYQkdhUkh2Z2VncC9JUU5Cdk1lemxFcU9L?= =?utf-8?B?aE9zMncxT3dNUEJhM3NOSGoxVFJvcXpGMVRzRHFiZ1pCeDBvZ2pXS2xqMGVW?= =?utf-8?B?VlYvSXozcW1CODlOSUdhRlI1L203UHNQVTBzTlptNDFnM2QwWWpLZG45STZQ?= =?utf-8?B?K0JVQnpKZkVEUk1aakxvb1JnbjRJRk14alFwZmZRNXRmYkx1aUkrQmRMVFNl?= =?utf-8?B?K2JNSzd3RVU5Mk5mOUY1WlZKUElSeGdIS2VNa2pUbEFhZTlSemEvU1QxV05w?= =?utf-8?Q?EEwmRthNnyMXZ4t1ZN/US9/xKlcx7YTM4yMUKjd?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5064.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c6acf12-e07d-4d1e-7e2d-08d98ee874bb X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2021 07:58:48.9695 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: xgDGjFglEaQQHtwzdpjxZAFHGFPHZHibkzb3I3t4pA5DeKvBz+xW49+nCtFRC/rJSMwY30jad/ti36AqkXVBJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4952 Return-Path: min.m.xu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gT2N0b2JlciAxMywgMjAyMSAxOjMxIFBNLCBSYXkgTmkgd3JvdGU6DQo+IE1pbiwNCj4gQ29t bWVudHMgYmVsb3c6DQo+IA0KPiArKiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gDQo+IDEu IEVGSUFQSSBpcyBmb3IgcHVibGljIGxpYiBBUEkuIElzIHRoaXMgYSBwdWJsaWMgQVBJPw0KTm8s IGl0IGlzIG5vdCBhIHB1YmxpYyBBUEkuIFRoZSBFRklBUEkgd2lsbCBiZSByZW1vdmVkLiBUaGFu a3MgZm9yIHJlbWluZGVyLg0KPiANCj4gK0Jhc2VYQXBpY0lzVGR4R3Vlc3QgKA0KPiArICBWT0lE DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyICAgIEVheDsNCj4gKyAgVUlOVDMyICAgIEVieDsN Cj4gKyAgVUlOVDMyICAgIEVjeDsNCj4gKyAgVUlOVDMyICAgIEVkeDsNCj4gKyAgVUlOVDMyICAg IExhcmdlc3RFYXg7DQo+ICsNCj4gKyAgaWYgKG1CYXNlWEFwaWNUZHhQcm9iZWQpIHsNCj4gKyAg ICByZXR1cm4gbUJhc2VYQXBpY0lzVGR4RW5hYmxlZDsNCj4gKyAgfQ0KPiArDQo+ICsgIG1CYXNl WEFwaWNJc1RkeEVuYWJsZWQgPSBGQUxTRTsNCj4gDQo+IDIuIEFwaWNMaWIgY2FuIGJlIHVzZWQg aW4gcHJlLW1lbSBydW5uaW5nIGRpcmVjdGx5IGluIGZsYXNoLg0KPiBUaGUgZ2xvYmFsIHZhcmlh YmxlIGNhbm5vdCBiZSBtb2RpZmllZCBpbiB0aGF0IGNhc2UuDQpXaGF0IHdpbGwgaGFwcGVuIHdo ZW4gdGhlIGdsb2JhbCB2YXJpYWJsZSBpcyBtb2RpZmllZCBpbiBmbGFzaD8NCldpbGwgdGhlIHN5 c3RlbSBoYW5nPyBPciBqdXN0IGEgZmFpbHVyZSBvZiB3cml0ZSBvcGVyYXRpb24/DQo+IA0KPiAN Cj4gKw0KPiArICBkbyB7DQo+ICsgICAgQXNtQ3B1aWQgKDAsICZMYXJnZXN0RWF4LCAmRWJ4LCAm RWN4LCAmRWR4KTsNCj4gDQo+ICsNCj4gKyAgICBpZiAoRWJ4ICE9IFNJR05BVFVSRV8zMiAoJ0cn LCAnZScsICduJywgJ3UnKQ0KPiArICAgICAgfHwgRWR4ICE9IFNJR05BVFVSRV8zMiAoJ2knLCAn bicsICdlJywgJ0knKQ0KPiArICAgICAgfHwgRWN4ICE9IFNJR05BVFVSRV8zMiAoJ24nLCAndCcs ICdlJywgJ2wnKSkgew0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgQXNt Q3B1aWQgKDEsIE5VTEwsIE5VTEwsICZFY3gsIE5VTEwpOw0KPiArICAgIGlmICgoRWN4ICYgQklU MzEpID09IDApIHsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChM YXJnZXN0RWF4IDwgMHgyMSkgew0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsg ICAgQXNtQ3B1aWRFeCAoMHgyMSwgMCwgJkVheCwgJkVieCwgJkVjeCwgJkVkeCk7DQo+ICsgICAg aWYgKEVieCAhPSBTSUdOQVRVUkVfMzIgKCdJJywgJ24nLCAndCcsICdlJykNCj4gKyAgICAgIHx8 IEVkeCAhPSBTSUdOQVRVUkVfMzIgKCdsJywgJ1QnLCAnRCcsICdYJykNCj4gKyAgICAgIHx8IEVj eCAhPSBTSUdOQVRVUkVfMzIgKCcgJywgJyAnLCAnICcsICcgJykpIHsNCj4gKyAgICAgIGJyZWFr Ow0KPiArICAgIH0NCj4gDQo+IA0KPiAzLiBDYW4geW91IHVzZSBkZWZpbml0aW9uIGZyb20gTWRl UGtnXEluY2x1ZGVcUmVnaXN0ZXJcSW50ZWxcQ3B1aWQuaCBpbnN0ZWFkDQo+IG9mIGhhcmRjb2Rl IDAsIDEsIDB4MjEsICJHZW51IiBhbmQgZXRjLj8NClRoYW5rcyBmb3IgcmVtaW5kZXIuIEl0IHdp bGwgYmUgdXBkYXRlZCBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KQ1BVSUQgbGVhZiAweDIxIGlzIG5l d2x5IGFkZGVkIGluIFtURFhdIFNlY3Rpb24gMTAuMg0KVERYOiBodHRwczovL3NvZnR3YXJlLmlu dGVsLmNvbS9jb250ZW50L2RhbS9kZXZlbG9wL2V4dGVybmFsL3VzL2VuL2RvY3VtZW50cy90ZHgt bW9kdWxlLTEuMC1wdWJsaWMtc3BlYy12MC45MzEucGRmDQpDYW4gSSBhZGQgYSBkZWZpbml0aW9u IG9mIGxlYWYgMHgyMSBpbiBNZGVQa2dcSW5jbHVkZVxSZWdpc3RlclxJbnRlbFxDcHVpZC5oPw0K PiANCj4gKw0KPiArICAgIG1CYXNlWEFwaWNJc1RkeEVuYWJsZWQgPSBUUlVFOw0KPiANCj4gNC4g YXZvaWQgcmVseWluZyBvbiBnbG9iYWwgdmFyaWFibGUgZm9yIGNhY2hpbmcgdGhlIHJlc3VsdC4N CklzIGl0IGJlY2F1c2UgTG9jYWxBcGljTGliIHdpbGwgcnVuIGluIGZsYXNoPw0KPiANCj4gKw0K PiArICBzd2l0Y2ggKE1zckluZGV4KSB7DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RQUjoN Cj4gKyAgY2FzZSBNU1JfSUEzMl9YMkFQSUNfUFBSOg0KPiArICBjYXNlIE1TUl9JQTMyX1gyQVBJ Q19FT0k6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lTUjA6DQo+ICsgIGNhc2UgTVNSX0lB MzJfWDJBUElDX0lTUjE6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lTUjI6DQo+ICsgIGNh c2UgTVNSX0lBMzJfWDJBUElDX0lTUjM6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lTUjQ6 DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lTUjU6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJB UElDX0lTUjY6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lTUjc6DQo+ICsgIGNhc2UgTVNS X0lBMzJfWDJBUElDX1RNUjA6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RNUjE6DQo+ICsg IGNhc2UgTVNSX0lBMzJfWDJBUElDX1RNUjI6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RN UjM6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RNUjQ6DQo+ICsgIGNhc2UgTVNSX0lBMzJf WDJBUElDX1RNUjU6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RNUjY6DQo+ICsgIGNhc2Ug TVNSX0lBMzJfWDJBUElDX1RNUjc6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjA6DQo+ ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjE6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElD X0lSUjI6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjM6DQo+ICsgIGNhc2UgTVNSX0lB MzJfWDJBUElDX0lSUjQ6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjU6DQo+ICsgIGNh c2UgTVNSX0lBMzJfWDJBUElDX0lSUjY6DQo+ICsgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjc6 DQo+IA0KPiA1LiBDYW4geW91IGV4cGxhaW4gaW4gdGhlIGNvbW1lbnRzIGFib3V0ICB3aGF0IHNw ZWMgc2F5cyB0aGF0IGFib3ZlIE1TUiBjYW4NCj4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgd2hpbGUg b3RoZXJzIGNhbm5vdD8NClREWDogaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vY29udGVudC9k YW0vZGV2ZWxvcC9leHRlcm5hbC91cy9lbi9kb2N1bWVudHMvdGR4LW1vZHVsZS0xLjAtcHVibGlj LXNwZWMtdjAuOTMxLnBkZg0KW1REWF0gU2VjdGlvbiAxOC4xDQo+IA0KPiANCj4gKyAgVUlOVDY0 ICAgIFZhbDsNCj4gKyAgVUlOVDY0ICAgIFN0YXR1czsNCj4gKyAgaWYgKCFBY2Nlc3NNc3JOYXRp dmUgKE1zckluZGV4KSAmJiBCYXNlWEFwaWNJc1RkeEd1ZXN0ICgpKSB7DQo+IA0KPiA2LiBjYW4g d2Ugc2ltcGxpZnkgdGhlIGFib3ZlIGNoZWNrIHdpdGggIiBpZiAoIUFjY2Vzc01zck5hdGl2ZSAo TXNySW5kZXgpKSI/DQo+IElzVGR4R3Vlc3QoKSBjYW4gYmUgY2FsbGVkIGluc2lkZSBBY2Nlc3NN c3JOYXRpdmUoKS4NClN1cmUuIEl0IHdpbGwgYmUgdXBkYXRlZCBpbiBuZXh0IHZlcnNpb24uDQo+ IA0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gDQo+IDcuIE5vIEVGSUFQSSBwbGVhc2UuDQpTdXJl LiBJdCB3aWxsIGJlIGZpeGVkIGluIG5leHQgdmVyc2lvbi4NCj4gDQo+ICtSZWFkTXNyUmVnMzIg KA0KPiArICBJTiBVSU5UMzIgTXNySW5kZXgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UNjQgICAg VmFsOw0KPiArICBVSU5UNjQgICAgU3RhdHVzOw0KPiArICBpZiAoIUFjY2Vzc01zck5hdGl2ZSAo TXNySW5kZXgpICYmIEJhc2VYQXBpY0lzVGR4R3Vlc3QgKCkpIHsNCj4gKyAgICBTdGF0dXMgPSBU ZFZtQ2FsbCAoVERWTUNBTExfUkRNU1IsIChVSU5UNjQpIE1zckluZGV4LCAwLCAwLCAwLCAmVmFs KTsNCj4gKyAgICBpZiAoU3RhdHVzICE9IDApIHsNCj4gKyAgICAgIFRkVm1DYWxsIChURFZNQ0FM TF9IQUxULCAwLCAwLCAwLCAwLCAwKTsNCj4gKyAgICB9DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAg VmFsID0gQXNtUmVhZE1zcjMyIChNc3JJbmRleCk7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIChVSU5U MzIpKFVJTlROKSBWYWw7DQo+IA0KPiA4LiBDYW4geW91IGRpcmVjdGx5IGNhbGwgUmVhZE1zclJl ZzY0KCk/DQpTdXJlLiBJdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCB2ZXJzaW9uLg0KPiANCj4g DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1dyaXRlTXNyUmVnMzIgKA0KPiArICBJTiBVSU5UMzIg TXNySW5kZXgsDQo+ICsgIElOIFVJTlQzMiBWYWwNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UNjQg ICAgU3RhdHVzOw0KPiArICBpZiAoIUFjY2Vzc01zck5hdGl2ZSAoTXNySW5kZXgpICYmIEJhc2VY QXBpY0lzVGR4R3Vlc3QgKCkpIHsNCj4gKyAgICBTdGF0dXMgPSBUZFZtQ2FsbCAoVERWTUNBTExf V1JNU1IsIChVSU5UNjQpIE1zckluZGV4LCAoVUlOVDY0KSBWYWwsIDAsDQo+IDAsIDApOw0KPiAr ICAgIGlmIChTdGF0dXMgIT0gMCkgew0KPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiV3Jp dGVNc3JSZWczMiByZXR1cm5lZCBmYWlsdXJlLg0KPiBTdGF0dXM9MHglbGx4XG4iLCBTdGF0dXMp KTsNCj4gKyAgICAgIFRkVm1DYWxsIChURFZNQ0FMTF9IQUxULCAwLCAwLCAwLCAwLCAwKTsNCj4g KyAgICB9DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgQXNtV3JpdGVNc3IzMiAoTXNySW5kZXgsIFZh bCk7DQo+IA0KPiA4LiBDYW4geW91IGRpcmVjdGx5IGNhbGwgV3JpdGVNc3JSZWc2NCgpPw0KU3Vy ZS4gSXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgdmVyc2lvbi4NCj4gDQo+IA0KPiAtICBBcGlj QmFzZU1zci5VaW50NjQgPSBBc21SZWFkTXNyNjQgKE1TUl9JQTMyX0FQSUNfQkFTRSk7DQo+ICsg IEFwaWNCYXNlTXNyLlVpbnQ2NCA9IFJlYWRNc3JSZWc2NCAoTVNSX0lBMzJfQVBJQ19CQVNFKTsN Cj4gDQo+IDkuIEkgcHJlZmVyIHRvIHVzZSAiTG9jYWxBcGljTGliUmVhZE1zcjY0KCkiLiBJdCBp bmRpY2F0ZXMgdHdvIG1lYW5pbmdzOg0KPiAgICAgYS4gaXQncyBhIGxvY2FsIGZ1bmN0aW9uIHdo aWNoIGNhbiBiZSBmb3VuZCB3aXRoaW4gdGhpcyBsaWINCj4gICAgIGIuIGl0J3MgY29uc2lzdGVu dCB3aXRoICJBc21SZWFkTXNyNjQiLg0KU3VyZS4gSXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQg dmVyc2lvbi4NCj4gDQoNClRoYW5rcy4NCk1pbg0K