From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.4459.1617864236722776212 for ; Wed, 07 Apr 2021 23:43:57 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=CcmJ0+IN; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: siyuan.fu@intel.com) IronPort-SDR: wL4n4dFbAsLQ8HhEiFCNvwQ/BKptiAb1JLjGCPOTuncVTPG/5eXhxBH4vUsDqdFi/uPB+P6/Pi AczjBExCDThg== X-IronPort-AV: E=McAfee;i="6000,8403,9947"; a="173553757" X-IronPort-AV: E=Sophos;i="5.82,205,1613462400"; d="scan'208";a="173553757" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2021 23:43:56 -0700 IronPort-SDR: X0nb3fi5H6pWTTsb01rU0plMe4CAYr9SjiZgX3RiKwBkZmj0I6humo0lvp5A6a6sNCiGg8lgbH HebztuSe/AzA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,205,1613462400"; d="scan'208";a="519732007" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga001.fm.intel.com with ESMTP; 07 Apr 2021 23:43:56 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 7 Apr 2021 23:43:56 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Wed, 7 Apr 2021 23:43:56 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Wed, 7 Apr 2021 23:43:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DPaahsWr9pFu5HF5kNoip2CLxtX7MiPsNY+Dpb/QLHPV0W2eZo95IlTIUKaLauVp6BPpG5VghUKzNnFwbnaIp88jdg8E2mkv8l0BqxP0yRe3D0H7KKJ5sXmwkJNXOMdbcYjmtA6KX6/x5Kdk9zAsvbsiczb10W1c0AsB8k57ghCC/PKzPcfOusLyIw1gsDIZ3KrKze07WSQTGa4kAvT3QmUxdpegM82urFxuNwNERHQlCQ8kFHE3cuoJjgaHsoiHLbFe/BAg4Xs15hylA3sO5vcflddTb/xv0cn6b0F1K4SaQjmsGvf5z8u8bSuteZ/xmdTlWtoFO/02rv20LywNSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NeGUcQig4cKVv4Ej8t7Fklmmq5RYbWkgjWRLH7MUrC4=; b=e5mUhrdoEcBXL4NYcEBVEbDMDeW/dSU07Vts4bVRKUXLDtU0C+yceXpcMIpiCwU8kbRP6JhBiLnY49AtG1k4VUnYBljTRur1N4D1IpyGT8Rahu0iFkPFgzG2v3iEI6gFSDLxa1sJF/Qlj3hlkZxuEZas9Q8tvJnwOWwfmvHyhQdJVUtyd9vf0e5yFPpgktguzcqD1kjBf0EYl4RoTH8uqSLM0c+ZQe0y/X8hNaio7ssrC/qfglL1UKaGTv/kwRVc1ejksaiRbse9XCb/qf3Bo/Wlm/Eto+k8DoRtsysTdIjYaD1zOIX10ICa0d3RlGICf2EZGZF72z1jjYf70DXDgw== 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=NeGUcQig4cKVv4Ej8t7Fklmmq5RYbWkgjWRLH7MUrC4=; b=CcmJ0+INDm9Nmrwbvewb3BpWI0RNwqW2eUi0ol/PhpiMjzLjFjunjzFSFY2J2zePdwtwx6FV/tINN1gnNtg5KwY13S67tNSV7MVc5vLDgG7OIe30KHit2X3VBUMWuZ62p9Pj92TXdm0ngQJJROX/kL5ydNwA67k4ubys49zUw+8= Received: from SN6PR11MB2863.namprd11.prod.outlook.com (2603:10b6:805:5c::25) by SN6PR11MB3167.namprd11.prod.outlook.com (2603:10b6:805:c6::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.32; Thu, 8 Apr 2021 06:43:54 +0000 Received: from SN6PR11MB2863.namprd11.prod.outlook.com ([fe80::d0ef:3d35:c1c9:be85]) by SN6PR11MB2863.namprd11.prod.outlook.com ([fe80::d0ef:3d35:c1c9:be85%6]) with mapi id 15.20.4020.018; Thu, 8 Apr 2021 06:43:54 +0000 From: "Siyuan, Fu" To: "Ni, Ray" , "devel@edk2.groups.io" CC: "Chaganty, Rangasai V" Subject: Re: [PATCH 3/3] IntelSiliconPkg/ShadowMicrocodePei: Consume MicrocodeLib Thread-Topic: [PATCH 3/3] IntelSiliconPkg/ShadowMicrocodePei: Consume MicrocodeLib Thread-Index: AQHXJ4WOHNLq1E8KkUOhORTMw/+VIqqqNf5Q Date: Thu, 8 Apr 2021 06:43:54 +0000 Message-ID: References: <20210402060021.982-1-ray.ni@intel.com> <20210402060021.982-4-ray.ni@intel.com> In-Reply-To: <20210402060021.982-4-ray.ni@intel.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.203] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d2ee8513-3516-4902-9666-08d8fa59add0 x-ms-traffictypediagnostic: SN6PR11MB3167: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8ycvlWTIbeOsD5PpXB/1q4gkfHFz19n02eDXAdNWhdWf4ndYugTDzEz+lNlTahZv51yovhD4LxXOMlgjdNd719xfoQmHltELS9rKtK3bmFgwPHjwOChV+4SJLRfhhZvfi5JfhUPhmBFt2Fl4OGMHo0j8eXr55m9YlkQ6RNllnoi71WMR2Sx5s336LUF7H56bQDrH2jc7H51bQIikcMmJvtkWf09EagQbgOWPFWUbMwwDW2P17uaAvqc6BXJ/6O/fRmHt5eLSwFXfXBFs95iq3fiwbrR3BNxVgmTs4pRci2ycyR194Y31dks/u77MYarC5qCSUAWc38KkCMOR/11LU2UFw8F8gE1rlUe9z2vYEM9TRkycijZcAZUldGnZ3AqqkOYnHRzYYjq0/ElM5BR31zRK4c0ta6Ra9FweWGdBlX46PfA/RbSiuB/gEqlbd3jEStKwb065ZoPDw6YxxFHtTkUgTNy1dUdJEWBq+9NK9TQfnpFa9gjvo6VEjCEnJmwuYQv/gbiqWX9BvsszL42aAD3j/5TOaJc67ZK6OuT/TSgVrkSqPnQVc7856DMWepva+bsSNHYbKQxhnSBqPpqSWrW2FfVbeN4didg+HEd4YrJBNOKYZEsEFgsVuI4W7oKETQGvRoi7hRuM4OFn7xngJGGz/oOk3jgVofk5hJOmqG4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(346002)(396003)(376002)(39860400002)(366004)(478600001)(66946007)(110136005)(66446008)(64756008)(66476007)(66556008)(186003)(9686003)(316002)(83380400001)(33656002)(107886003)(71200400001)(8936002)(86362001)(7696005)(55016002)(4326008)(26005)(52536014)(5660300002)(76116006)(6506007)(8676002)(38100700001)(2906002)(53546011);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?OWRnVk1KODRjNDMwSmV0YXM2YzNrMGZXMDBTN3lLbk9rNVZrS3g0Q0ZnM0hS?= =?gb2312?B?SUp0aE5YUDFrVmYxTW5zeTMyZ29pZkxHNnBDK253TXdlWGRuQ05NZ0p1cGNY?= =?gb2312?B?VmE1dTI3RDRLQlN0cWVueUJTN0Y0NVp5S3JGRHNLQzUzbE5xZmx4bDU1UFlZ?= =?gb2312?B?MmZqUnBFQVBOMENXY1NxUW8vOVA1QThkbWxlU3dVZEN0cUE4VDRDSDY5YVpD?= =?gb2312?B?SXRqaDR4dSs1ZTFzUHRlbXFVYnJwSEwzWC9lWWdRUDlsVnpGMHBQaEgyZFV0?= =?gb2312?B?NW03cGFVa0M1ZUZJdVhjdUdBenNmaTBsSWRWcXhVQ2gwak85VnlrMXc4TDdt?= =?gb2312?B?MW4xaWVWZU9IenBlRW1PdDc0UE9xYnJwbmFBcUo1akFtM2tzZndOZitxaDV5?= =?gb2312?B?NGNIaHR5TVBVVzVMeGFCc1hlVUxVSTBJN0EvMVBXL0orMDEwb1g2YnR6WExK?= =?gb2312?B?b0pMRHlyaTJMbk9YUzVCN1VuMm5zeDNYdVBLMCtJOUhob3RBSHpXQllZbStn?= =?gb2312?B?LzVUcWpiUFd2WWlTMko3L1l5OFN6dWM3S0NJZERhcitoMCt4WHFCOTA5Mkov?= =?gb2312?B?TmJxS0E1MENxUXMrUExvYW80Rks4ZEtFZE56aU1JNk1LVG4yTXJyQ3NMR0Zn?= =?gb2312?B?T29hRXlOVGNkOHN3dUpWbXoyREQyT2ZFbFROVDJxUi91MGRBMlc5TXBQbDVU?= =?gb2312?B?dWxTRTNndW9rcy9ycVloRFRFQ2Q4TjJWeEpXRGlFUVhDczNSVXpQeTBtdDhV?= =?gb2312?B?dWFFMlQ4WVl6Tm14c29pNkFkT0RyL1VUZ0VUbGZmS01TS3BIU0ZKbkdoVVF5?= =?gb2312?B?d2pRMUtWaFdPWjJHMndKQUh6YVJTNkxya2J3dm93NnZpdGJ3b1ZoTlI5d2tV?= =?gb2312?B?YW56dXJnSE1DVzkrSHdVZHB5b1NERGIrVFV4em1vN1BScnpnM2ZOYTQ2ZVc0?= =?gb2312?B?TEs5RDIrc3lJejQ0N2xiYXVsZ2V5blJ3bUpzb1VPb29ObC9sWFViZmpwcUJP?= =?gb2312?B?dkd6eG5vemdyZHdCRDRJcExycnhCYW5INUVVZmErdEhmVFRwTEYwQ0V4dm44?= =?gb2312?B?elZsamFkTTFtSGFjdy9HdWhxTVgvZG92VnpBS3g3Ym9wdEtIdldQRGJlNGE5?= =?gb2312?B?aFgzVlRHdDNCM3daN29wQkhIdFYrd3NCanViTXVqejhLaDFwRmhIRHQ5YWxY?= =?gb2312?B?eFNCVVJyS1plUy8wbXV5UU9OakErWW1rTzZ1K0ZXK0V4TjdZVG9RMk1ZaXNI?= =?gb2312?B?d1FXRDI1NTZ2NFZMWWVFMlJWd2hKWitWVmdEYkRja3VXOHF5NXhDOVJ4aUZD?= =?gb2312?B?azNiUXQxVjNramJXcGdTY2tneVNUOWFPSGc3bHozajFGMk52UXY2QkpPdFJz?= =?gb2312?B?QnB6Tmo2M1Bwb1BPZEliNTJ2eE1NNjQzREFCT3ZBMHdwRWVNZlF3dEVzOU0r?= =?gb2312?B?SzR4clFlNEF1SllUUmEvRmtvMW5SWmFjcHhBVXNnUlpRVmRuV3FQMXhLeEpL?= =?gb2312?B?SW9FWXoyNFhRZU41TmFoWG14b1FYTDhNRW5EamZ0Y3VqQ1NpRXJhUTBwN2RP?= =?gb2312?B?VmxRaTJ4UVUrUWVmMjBFdkhuNHpDdFg0a2pnT1REWlM2dExraVcvekQ0ZThn?= =?gb2312?B?YnFiWm5kU1Z1OU85K0RsdndzK3l5Z09IWWd2UkJPeEJlb3dwTUxrS1hHSytz?= =?gb2312?B?Z2F6K290Q3U4Z2xQYTJYWXB3d3lVRG1vTEtocVRoTERUZGZKRVl2cDdKU3pV?= =?gb2312?Q?SnlFtWnuA6L4ENdwM8FPe4KZYiT8mdv+GzQ9qRR?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2ee8513-3516-4902-9666-08d8fa59add0 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2021 06:43:54.7107 (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: +lf5qartOpO04MHoxoEUzg4AYFMiWHyQD6pMnQcdy3rHtjAoljHIiC8i1Wd+cu++jNw7j25jyxIx7H3EScN1aw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3167 Return-Path: siyuan.fu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IFNpeXVhbiBGdSA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPg0K PiBTZW50OiAyMDIxxOo01MIyyNUgMTQ6MDANCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ IENjOiBDaGFnYW50eSwgUmFuZ2FzYWkgViA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+ OyBGdSwgU2l5dWFuDQo+IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0gg My8zXSBJbnRlbFNpbGljb25Qa2cvU2hhZG93TWljcm9jb2RlUGVpOiBDb25zdW1lDQo+IE1pY3Jv Y29kZUxpYg0KPiANCj4gU2lnbmVkLW9mZi1ieTogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0K PiBDYzogUmFuZ2FzYWkgViBDaGFnYW50eSA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+ DQo+IENjOiBTaXl1YW4gRnUgPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgLi4uL1No YWRvd01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZGVQZWkuYyAgICAgIHwgMTU1ICsrLS0tLS0tLS0t LS0tLS0tLQ0KPiAgLi4uL1NoYWRvd01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZGVQZWkuaW5mICAg IHwgICAzICstDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDE0NSBkZWxl dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQNCj4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNv blBrZy9GZWF0dXJlL1NoYWRvd01pY3JvY29kZS9TaGFkb3dNaWNyb2NvZGVQZQ0KPiBpLmMNCj4g Yi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01pY3JvY29kZS9T aGFkb3dNaWNyb2NvZGVQZQ0KPiBpLmMNCj4gaW5kZXggOThhN2FlZDY5Ny4uNGU0YjY5YTBjYSAx MDA2NDQNCj4gLS0tDQo+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9T aGFkb3dNaWNyb2NvZGUvU2hhZG93TWljcm9jb2RlUGUNCj4gaS5jDQo+ICsrKw0KPiBiL1NpbGlj b24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRvd01p Y3JvY29kZVBlDQo+IGkuYw0KPiBAQCAtMSw3ICsxLDcgQEANCj4gIC8qKiBAZmlsZQ0KPiANCj4g ICAgRklUIGJhc2VkIG1pY3JvY29kZSBzaGFkb3cgUEVJTS4NCj4gDQo+IA0KPiANCj4gLUNvcHly aWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiANCj4gK0NvcHlyaWdodCAoYykgMjAyMCAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gDQo+IA0KPiAgKiovDQo+IA0KPiBAQCAtMTMsNiAr MTMsNyBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiAg I2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gDQo+ICAjaW5jbHVkZSA8TGlicmFyeS9C YXNlTWVtb3J5TGliLmg+DQo+IA0KPiAgI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlv bkxpYi5oPg0KPiANCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01pY3JvY29kZUxpYi5oPg0KPiANCj4g ICNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0Zpcm13YXJlSW50ZXJmYWNlVGFibGUuaD4NCj4g DQo+ICAjaW5jbHVkZSA8UmVnaXN0ZXIvSW50ZWwvTWljcm9jb2RlLmg+DQo+IA0KPiAgI2luY2x1 ZGUgPFJlZ2lzdGVyL0ludGVsL0NwdWlkLmg+DQo+IA0KPiBAQCAtNzAsMTE4ICs3MSw2IEBAIEVG SV9QRUlfUFBJX0RFU0NSSVBUT1INCj4gbVBlaVNoYWRvd01pY3JvY29kZVBwaUxpc3RbXSA9IHsN Cj4gICAgfQ0KPiANCj4gIH07DQo+IA0KPiANCj4gDQo+IC0vKioNCj4gDQo+IC0gIERldGVybWlu ZSBpZiBhIG1pY3JvY29kZSBwYXRjaCBtYXRjaHMgdGhlIHNwZWNpZmljIHByb2Nlc3NvciBzaWdu YXR1cmUgYW5kDQo+IGZsYWcuDQo+IA0KPiAtDQo+IA0KPiAtICBAcGFyYW1baW5dICBDcHVJZENv dW50ICAgICAgICAgICAgTnVtYmVyIG9mIGVsZW1lbnRzIGluIE1pY3JvY29kZUNwdUlkIGFycmF5 Lg0KPiANCj4gLSAgQHBhcmFtW2luXSAgTWljcm9jb2RlQ3B1SWQgICAgICAgIEEgcG9pbnRlciB0 byBhbiBhcnJheSBvZg0KPiBFREtJSV9QRUlfTUlDUk9DT0RFX0NQVV9JRA0KPiANCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMuDQo+IA0KPiAtICBAcGFy YW1baW5dICBQcm9jZXNzb3JTaWduYXR1cmUgICAgVGhlIHByb2Nlc3NvciBzaWduYXR1cmUgZmll bGQgdmFsdWUNCj4gDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBw b3J0ZWQgYnkgYSBtaWNyb2NvZGUgcGF0Y2guDQo+IA0KPiAtICBAcGFyYW1baW5dICBQcm9jZXNz b3JGbGFncyAgICAgICAgVGhlIHByY2Vzc29yIGZsYWdzIGZpZWxkIHZhbHVlIHN1cHBvcnRlZCBi eQ0KPiANCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgbWljcm9jb2Rl IHBhdGNoLg0KPiANCj4gLQ0KPiANCj4gLSAgQHJldHZhbCBUUlVFICAgICBUaGUgc3BlY2lmaWVk IG1pY3JvY29kZSBwYXRjaCB3aWxsIGJlIGxvYWRlZC4NCj4gDQo+IC0gIEByZXR2YWwgRkFMU0Ug ICAgVGhlIHNwZWNpZmllZCBtaWNyb2NvZGUgcGF0Y2ggd2lsbCBub3QgYmUgbG9hZGVkLg0KPiAN Cj4gLSoqLw0KPiANCj4gLUJPT0xFQU4NCj4gDQo+IC1Jc1Byb2Nlc3Nvck1hdGNoZWRNaWNyb2Nv ZGVQYXRjaCAoDQo+IA0KPiAtICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBD cHVJZENvdW50LA0KPiANCj4gLSAgSU4gIEVES0lJX1BFSV9NSUNST0NPREVfQ1BVX0lEICAgICAg Kk1pY3JvY29kZUNwdUlkLA0KPiANCj4gLSAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHJvY2Vzc29yU2lnbmF0dXJlLA0KPiANCj4gLSAgSU4gVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHJvY2Vzc29yRmxhZ3MNCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0K PiAtICBVSU5UTiAgICAgICAgICBJbmRleDsNCj4gDQo+IC0NCj4gDQo+IC0gIGZvciAoSW5kZXgg PSAwOyBJbmRleCA8IENwdUlkQ291bnQ7IEluZGV4KyspIHsNCj4gDQo+IC0gICAgaWYgKChQcm9j ZXNzb3JTaWduYXR1cmUgPT0gTWljcm9jb2RlQ3B1SWRbSW5kZXhdLlByb2Nlc3NvclNpZ25hdHVy ZSkgJiYNCj4gDQo+IC0gICAgICAgIChQcm9jZXNzb3JGbGFncyAmICgxIDw8IE1pY3JvY29kZUNw dUlkW0luZGV4XS5QbGF0Zm9ybUlkKSkgIT0gMCkgew0KPiANCj4gLSAgICAgIHJldHVybiBUUlVF Ow0KPiANCj4gLSAgICB9DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICByZXR1cm4gRkFM U0U7DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiANCj4gLS8qKg0KPiANCj4gLSAgQ2hlY2sgdGhlICdQ cm9jZXNzb3JTaWduYXR1cmUnIGFuZCAnUHJvY2Vzc29yRmxhZ3MnIG9mIHRoZSBtaWNyb2NvZGUN Cj4gDQo+IC0gIHBhdGNoIGhlYWRlciB3aXRoIHRoZSBDUFVJRCBhbmQgUGxhdGZvcm1JRCBvZiB0 aGUgcHJvY2Vzc29ycyB3aXRoaW4NCj4gDQo+IC0gIHN5c3RlbSB0byBkZWNpZGUgaWYgaXQgd2ls bCBiZSBjb3BpZWQgaW50byBtZW1vcnkuDQo+IA0KPiAtDQo+IA0KPiAtICBAcGFyYW1baW5dICBD cHVJZENvdW50ICAgICAgICAgICAgTnVtYmVyIG9mIGVsZW1lbnRzIGluIE1pY3JvY29kZUNwdUlk IGFycmF5Lg0KPiANCj4gLSAgQHBhcmFtW2luXSAgTWljcm9jb2RlQ3B1SWQgICAgICAgIEEgcG9p bnRlciB0byBhbiBhcnJheSBvZg0KPiBFREtJSV9QRUlfTUlDUk9DT0RFX0NQVV9JRA0KPiANCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMuDQo+IA0KPiAt ICBAcGFyYW1baW5dICBNaWNyb2NvZGVFbnRyeVBvaW50ICAgVGhlIHBvaW50ZXIgdG8gdGhlIG1p Y3JvY29kZSBwYXRjaA0KPiBoZWFkZXIuDQo+IA0KPiAtDQo+IA0KPiAtICBAcmV0dmFsIFRSVUUg ICAgIFRoZSBzcGVjaWZpZWQgbWljcm9jb2RlIHBhdGNoIG5lZWQgdG8gYmUgbG9hZGVkLg0KPiAN Cj4gLSAgQHJldHZhbCBGQUxTRSAgICBUaGUgc3BlY2lmaWVkIG1pY3JvY29kZSBwYXRjaCBkb3Nl bid0IG5lZWQgdG8gYmUgbG9hZGVkLg0KPiANCj4gLSoqLw0KPiANCj4gLUJPT0xFQU4NCj4gDQo+ IC1Jc01pY3JvY29kZVBhdGNoTmVlZExvYWQgKA0KPiANCj4gLSAgSU4gIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgIENwdUlkQ291bnQsDQo+IA0KPiAtICBJTiAgRURLSUlfUEVJX01JQ1JP Q09ERV9DUFVfSUQgICAgKk1pY3JvY29kZUNwdUlkLA0KPiANCj4gLSAgQ1BVX01JQ1JPQ09ERV9I RUFERVIgICAgICAgICAgICAgICpNaWNyb2NvZGVFbnRyeVBvaW50DQo+IA0KPiAtICApDQo+IA0K PiAtew0KPiANCj4gLSAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVl ZExvYWQ7DQo+IA0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE YXRhU2l6ZTsNCj4gDQo+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRvdGFsU2l6ZTsNCj4gDQo+IC0gIENQVV9NSUNST0NPREVfRVhURU5ERURfVEFCTEVfSEVBREVS ICAgICpFeHRlbmRlZFRhYmxlSGVhZGVyOw0KPiANCj4gLSAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRUYWJsZUNvdW50Ow0KPiANCj4gLSAgQ1BVX01JQ1JP Q09ERV9FWFRFTkRFRF9UQUJMRSAgICAgICAgICAgKkV4dGVuZGVkVGFibGU7DQo+IA0KPiAtICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gDQo+IC0NCj4g DQo+IC0gIGlmIChGZWF0dXJlUGNkR2V0IChQY2RTaGFkb3dBbGxNaWNyb2NvZGUpKSB7DQo+IA0K PiAtICAgIHJldHVybiBUUlVFOw0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgLy8NCj4g DQo+IC0gIC8vIENoZWNrIHRoZSAnUHJvY2Vzc29yU2lnbmF0dXJlJyBhbmQgJ1Byb2Nlc3NvckZs YWdzJyBpbiBtaWNyb2NvZGUgcGF0Y2gNCj4gaGVhZGVyLg0KPiANCj4gLSAgLy8NCj4gDQo+IC0g IE5lZWRMb2FkID0gSXNQcm9jZXNzb3JNYXRjaGVkTWljcm9jb2RlUGF0Y2ggKA0KPiANCj4gLSAg ICAgICAgICAgICAgIENwdUlkQ291bnQsDQo+IA0KPiAtICAgICAgICAgICAgICAgTWljcm9jb2Rl Q3B1SWQsDQo+IA0KPiAtICAgICAgICAgICAgICAgTWljcm9jb2RlRW50cnlQb2ludC0+UHJvY2Vz c29yU2lnbmF0dXJlLlVpbnQzMiwNCj4gDQo+IC0gICAgICAgICAgICAgICBNaWNyb2NvZGVFbnRy eVBvaW50LT5Qcm9jZXNzb3JGbGFncw0KPiANCj4gLSAgICAgICAgICAgICAgICk7DQo+IA0KPiAt DQo+IA0KPiAtICAvLw0KPiANCj4gLSAgLy8gSWYgdGhlIEV4dGVuZGVkIFNpZ25hdHVyZSBUYWJs ZSBleGlzdHMsIGNoZWNrIGlmIHRoZSBwcm9jZXNzb3IgaXMgaW4gdGhlDQo+IA0KPiAtICAvLyBz dXBwb3J0IGxpc3QNCj4gDQo+IC0gIC8vDQo+IA0KPiAtICBEYXRhU2l6ZSAgPSBNaWNyb2NvZGVF bnRyeVBvaW50LT5EYXRhU2l6ZTsNCj4gDQo+IC0gIFRvdGFsU2l6ZSA9IChEYXRhU2l6ZSA9PSAw KSA/IDIwNDggOiBNaWNyb2NvZGVFbnRyeVBvaW50LT5Ub3RhbFNpemU7DQo+IA0KPiAtICBpZiAo KCFOZWVkTG9hZCkgJiYgKERhdGFTaXplICE9IDApICYmDQo+IA0KPiAtICAgICAgKFRvdGFsU2l6 ZSAtIERhdGFTaXplID4gc2l6ZW9mIChDUFVfTUlDUk9DT0RFX0hFQURFUikgKw0KPiANCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ1BVX01JQ1JPQ09ERV9FWFRFTkRF RF9UQUJMRV9IRUFERVIpKSkgew0KPiANCj4gLSAgICBFeHRlbmRlZFRhYmxlSGVhZGVyID0gKENQ VV9NSUNST0NPREVfRVhURU5ERURfVEFCTEVfSEVBREVSICopDQo+ICgoVUlOVDggKikgKE1pY3Jv Y29kZUVudHJ5UG9pbnQpDQo+IA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgRGF0 YVNpemUgKyBzaXplb2YgKENQVV9NSUNST0NPREVfSEVBREVSKSk7DQo+IA0KPiAtICAgIEV4dGVu ZGVkVGFibGVDb3VudCAgPSBFeHRlbmRlZFRhYmxlSGVhZGVyLT5FeHRlbmRlZFNpZ25hdHVyZUNv dW50Ow0KPiANCj4gLSAgICBFeHRlbmRlZFRhYmxlICAgICAgID0gKENQVV9NSUNST0NPREVfRVhU RU5ERURfVEFCTEUgKikNCj4gKEV4dGVuZGVkVGFibGVIZWFkZXIgKyAxKTsNCj4gDQo+IC0NCj4g DQo+IC0gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgRXh0ZW5kZWRUYWJsZUNvdW50OyBJbmRl eCArKykgew0KPiANCj4gLSAgICAgIC8vDQo+IA0KPiAtICAgICAgLy8gQ2hlY2sgdGhlICdQcm9j ZXNzb3JTaWduYXR1cmUnIGFuZCAnUHJvY2Vzc29yRmxhZycgb2YgdGhlIEV4dGVuZGVkDQo+IA0K PiAtICAgICAgLy8gU2lnbmF0dXJlIFRhYmxlIGVudHJ5IHdpdGggdGhlIENQVUlEIGFuZCBQbGF0 Zm9ybUlEIG9mIHRoZSBwcm9jZXNzb3JzDQo+IA0KPiAtICAgICAgLy8gd2l0aGluIHN5c3RlbSB0 byBkZWNpZGUgaWYgaXQgd2lsbCBiZSBjb3BpZWQgaW50byBtZW1vcnkNCj4gDQo+IC0gICAgICAv Lw0KPiANCj4gLSAgICAgIE5lZWRMb2FkID0gSXNQcm9jZXNzb3JNYXRjaGVkTWljcm9jb2RlUGF0 Y2ggKA0KPiANCj4gLSAgICAgICAgICAgICAgICAgICBDcHVJZENvdW50LA0KPiANCj4gLSAgICAg ICAgICAgICAgICAgICBNaWNyb2NvZGVDcHVJZCwNCj4gDQo+IC0gICAgICAgICAgICAgICAgICAg RXh0ZW5kZWRUYWJsZS0+UHJvY2Vzc29yU2lnbmF0dXJlLlVpbnQzMiwNCj4gDQo+IC0gICAgICAg ICAgICAgICAgICAgRXh0ZW5kZWRUYWJsZS0+UHJvY2Vzc29yRmxhZw0KPiANCj4gLSAgICAgICAg ICAgICAgICAgICApOw0KPiANCj4gLSAgICAgIGlmIChOZWVkTG9hZCkgew0KPiANCj4gLSAgICAg ICAgYnJlYWs7DQo+IA0KPiAtICAgICAgfQ0KPiANCj4gLSAgICAgIEV4dGVuZGVkVGFibGUgKys7 DQo+IA0KPiAtICAgIH0NCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIHJldHVybiBOZWVk TG9hZDsNCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAgLyoqDQo+IA0KPiAgICBBY3R1YWwgd29y a2VyIGZ1bmN0aW9uIHRoYXQgc2hhZG93cyB0aGUgcmVxdWlyZWQgbWljcm9jb2RlIHBhdGNoZXMg aW50bw0KPiBtZW1vcnkuDQo+IA0KPiANCj4gDQo+IEBAIC00MzksNiArMzI4LDExIEBAIFNoYWRv d01pY3JvY29kZSAoDQo+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiANCj4g ICAgfQ0KPiANCj4gDQo+IA0KPiArICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkU2hhZG93QWxsTWlj cm9jb2RlKSkgew0KPiANCj4gKyAgICBNaWNyb2NvZGVDcHVJZCA9IE5VTEw7DQo+IA0KPiArICAg IENwdUlkQ291bnQgICAgID0gMDsNCj4gDQo+ICsgIH0NCj4gDQo+ICsNCj4gDQo+ICAgIC8vDQo+ IA0KPiAgICAvLyBGaWxsIHVwIG1pY3JvY29kZSBwYXRjaCBpbmZvIGJ1ZmZlciBhY2NvcmRpbmcg dG8gRklUIHRhYmxlLg0KPiANCj4gICAgLy8NCj4gDQo+IEBAIC00NDcsMzcgKzM0MSwxMCBAQCBT aGFkb3dNaWNyb2NvZGUgKA0KPiAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBFbnRyeU51bTsg SW5kZXgrKykgew0KPiANCj4gICAgICBpZiAoRml0RW50cnlbSW5kZXhdLlR5cGUgPT0gRklUX1RZ UEVfMDFfTUlDUk9DT0RFKSB7DQo+IA0KPiAgICAgICAgTWljcm9jb2RlRW50cnlQb2ludCA9IChD UFVfTUlDUk9DT0RFX0hFQURFUiAqKSAoVUlOVE4pDQo+IEZpdEVudHJ5W0luZGV4XS5BZGRyZXNz Ow0KPiANCj4gLQ0KPiANCj4gLSAgICAgIGlmICgqKFVJTlQzMiAqKSBNaWNyb2NvZGVFbnRyeVBv aW50ID09IDB4RkZGRkZGRkYpIHsNCj4gDQo+IC0gICAgICAgIC8vDQo+IA0KPiAtICAgICAgICAv LyBBbiBlbXB0eSBzbG90IGZvciByZXNlcnZlZCBtaWNyb2NvZGUgdXBkYXRlLCBza2lwIHRvIGNo ZWNrIG5leHQgZW50cnkuDQo+IA0KPiAtICAgICAgICAvLw0KPiANCj4gLSAgICAgICAgY29udGlu dWU7DQo+IA0KPiAtICAgICAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgICAgIGlmIChNaWNyb2NvZGVF bnRyeVBvaW50LT5IZWFkZXJWZXJzaW9uICE9IDB4MSkgew0KPiANCj4gLSAgICAgICAgLy8NCj4g DQo+IC0gICAgICAgIC8vIE5vdCBhIHZhbGlkIG1pY3JvY29kZSBoZWFkZXIsIHNraXAgdG8gY2hl Y2sgbmV4dCBlbnRyeS4NCj4gDQo+IC0gICAgICAgIC8vDQo+IA0KPiAtICAgICAgICBjb250aW51 ZTsNCj4gDQo+IC0gICAgICB9DQo+IA0KPiAtDQo+IA0KPiAtICAgICAgRGF0YVNpemUgID0gTWlj cm9jb2RlRW50cnlQb2ludC0+RGF0YVNpemU7DQo+IA0KPiAtICAgICAgVG90YWxTaXplID0gKERh dGFTaXplID09IDApID8gMjA0OCA6IE1pY3JvY29kZUVudHJ5UG9pbnQtPlRvdGFsU2l6ZTsNCj4g DQo+IC0gICAgICBpZiAoIChVSU5UTilNaWNyb2NvZGVFbnRyeVBvaW50ID4gKE1BWF9BRERSRVNT IC0gVG90YWxTaXplKSB8fA0KPiANCj4gLSAgICAgICAgICAgKERhdGFTaXplICYgMHgzKSAhPSAw IHx8DQo+IA0KPiAtICAgICAgICAgICAoVG90YWxTaXplICYgKFNJWkVfMUtCIC0gMSkpICE9IDAg fHwNCj4gDQo+IC0gICAgICAgICAgIFRvdGFsU2l6ZSA8IERhdGFTaXplDQo+IA0KPiAtICAgICAg ICApIHsNCj4gDQo+IC0gICAgICAgIC8vDQo+IA0KPiAtICAgICAgICAvLyBOb3QgYSB2YWxpZCBt aWNyb2NvZGUgaGVhZGVyLCBza2lwIHRvIGNoZWNrIG5leHQgZW50cnkuDQo+IA0KPiAtICAgICAg ICAvLw0KPiANCj4gLSAgICAgICAgY29udGludWU7DQo+IA0KPiAtICAgICAgfQ0KPiANCj4gLQ0K PiANCj4gLSAgICAgIGlmIChJc01pY3JvY29kZVBhdGNoTmVlZExvYWQgKENwdUlkQ291bnQsIE1p Y3JvY29kZUNwdUlkLA0KPiBNaWNyb2NvZGVFbnRyeVBvaW50KSkgew0KPiANCj4gLSAgICAgICAg UGF0Y2hJbmZvQnVmZmVyW1BhdGNoQ291bnRdLkFkZHJlc3MgICAgID0gKFVJTlROKSBNaWNyb2Nv ZGVFbnRyeVBvaW50Ow0KPiANCj4gLSAgICAgICAgUGF0Y2hJbmZvQnVmZmVyW1BhdGNoQ291bnRd LlNpemUgICAgICAgID0gVG90YWxTaXplOw0KPiANCj4gKyAgICAgIFRvdGFsU2l6ZSA9IEdldE1p Y3JvY29kZUxlbmd0aCAoTWljcm9jb2RlRW50cnlQb2ludCk7DQo+IA0KPiArICAgICAgaWYgKElz VmFsaWRNaWNyb2NvZGUgKE1pY3JvY29kZUVudHJ5UG9pbnQsIFRvdGFsU2l6ZSwgTWljcm9jb2Rl Q3B1SWQsDQo+IENwdUlkQ291bnQsIEZBTFNFKSkgew0KPiANCj4gKyAgICAgICAgUGF0Y2hJbmZv QnVmZmVyW1BhdGNoQ291bnRdLkFkZHJlc3MgPSAoVUlOVE4pIE1pY3JvY29kZUVudHJ5UG9pbnQ7 DQo+IA0KPiArICAgICAgICBQYXRjaEluZm9CdWZmZXJbUGF0Y2hDb3VudF0uU2l6ZSAgICA9IFRv dGFsU2l6ZTsNCj4gDQo+ICAgICAgICAgIFRvdGFsTG9hZFNpemUgKz0gVG90YWxTaXplOw0KPiAN Cj4gICAgICAgICAgUGF0Y2hDb3VudCsrOw0KPiANCj4gICAgICAgIH0NCj4gDQo+IGRpZmYgLS1n aXQNCj4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01pY3Jv Y29kZS9TaGFkb3dNaWNyb2NvZGVQZQ0KPiBpLmluZg0KPiBiL1NpbGljb24vSW50ZWwvSW50ZWxT aWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRvd01pY3JvY29kZVBlDQo+IGku aW5mDQo+IGluZGV4IDU4MTc4MGFkZDguLjVlZTIyNTI5N2QgMTAwNjQ0DQo+IC0tLQ0KPiBhL1Np bGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRv d01pY3JvY29kZVBlDQo+IGkuaW5mDQo+ICsrKw0KPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlL1NoYWRvd01pY3JvY29kZVBlDQo+IGkuaW5m DQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgIyMjIEBmaWxlDQo+IA0KPiAgIyBGSVQgYmFzZWQgbWlj cm9jb2RlIHNoYWRvdyBQRUlNLg0KPiANCj4gICMNCj4gDQo+IC0jIENvcHlyaWdodCAoYykgMjAy MCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyMg Q29weXJpZ2h0IChjKSAyMDIwIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiANCj4gICMNCj4gDQo+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiAgIw0KPiANCj4gQEAgLTI1LDYgKzI1LDcgQEAN Cj4gICAgQmFzZU1lbW9yeUxpYg0KPiANCj4gICAgSG9iTGliDQo+IA0KPiAgICBQZWlTZXJ2aWNl c0xpYg0KPiANCj4gKyAgTWljcm9jb2RlTGliDQo+IA0KPiANCj4gDQo+ICBbUGFja2FnZXNdDQo+ IA0KPiAgICBNZGVQa2cvTWRlUGtnLmRlYw0KPiANCj4gLS0NCj4gMi4yNy4wLndpbmRvd3MuMQ0K DQo=