From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=eric.dong@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BECA121BADAB2 for ; Wed, 9 Jan 2019 21:53:58 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jan 2019 21:53:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,460,1539673200"; d="scan'208";a="136982508" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 09 Jan 2019 21:53:58 -0800 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 9 Jan 2019 21:53:58 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 9 Jan 2019 21:53:57 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.63]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.160]) with mapi id 14.03.0415.000; Thu, 10 Jan 2019 13:53:55 +0800 From: "Dong, Eric" To: Laszlo Ersek CC: "Brian J. Johnson" , "Yao, Jiewen" , "Ni, Ray" , "edk2-devel@lists.01.org" , "Kinney, Michael D" , "Dong, Eric" Thread-Topic: [edk2] [Patch 1/3] UefiCpuPkg/RegisterCpuFeaturesLib: Avoid AP calls PeiService. Thread-Index: AQHUmAGX/fDvKfBfyEu9xGF40WkoqqWGTfKAgACGwnD//4ZvAIAAAGcAgADymICAHzlngP//0FiAgAHIrlA= Date: Thu, 10 Jan 2019 05:53:55 +0000 Message-ID: References: <20181220011553.14900-1-eric.dong@intel.com> <20181220011553.14900-2-eric.dong@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F460E44@shsmsx102.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5BF673E1@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F4610D1@shsmsx102.ccr.corp.intel.com> <993916e9-86cf-0e3c-19e4-b334de5214e7@hpe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch 1/3] UefiCpuPkg/RegisterCpuFeaturesLib: Avoid AP calls PeiService. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jan 2019 05:53:59 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgIExhc3psbywNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXN6 bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gU2VudDogV2VkbmVzZGF5LCBK YW51YXJ5IDksIDIwMTkgNjozNSBQTQ0KPiBUbzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVs LmNvbT4NCj4gQ2M6IEJyaWFuIEouIEpvaG5zb24gPGJyaWFuLmpvaG5zb25AaHBlLmNvbT47IFlh bywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRl bC5jb20+OyBlZGsyLQ0KPiBkZXZlbEBsaXN0cy4wMS5vcmc7IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUGF0Y2gg MS8zXSBVZWZpQ3B1UGtnL1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWI6IEF2b2lkDQo+IEFQIGNhbGxz IFBlaVNlcnZpY2UuDQo+IA0KPiBIaSBFcmljLA0KPiANCj4gT24gMDEvMDkvMTkgMDY6MjYsIERv bmcsIEVyaWMgd3JvdGU6DQo+ID4gSGkgYWxsLA0KPiA+DQo+ID4gV2UgZ290IHNvbWUgZmVlZGJh Y2sgYWJvdXQgdGhpcyBCWi4gU29tZW9uZSB0aGluayB0aGlzIHRpbWVvdXQgaXMNCj4gdmFsdWFi bGUgZm9yIHRoZSBkZWJ1ZyBwdXJwb3NlLCBhbmQgb3Bwb3NlIHRvIHJlbW92ZSBpdC4NCj4gPiBo dHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTkNCj4gPg0K PiA+IFNvIEknbSBiYWNrIHRvIGhlcmUgYW5kIHdhbnQgdG8gc3RpbGwgdXNlIHRoaXMgY2hhbmdl LiBJIG5vdCB1c2UgInVwZGF0ZQ0KPiBQY2RTcGluTG9ja1RpbWVvdXQgdG8gMCBpbiBwbGF0Zm9y bSIgc29sdXRpb24gYmVjYXVzZSBJIHRoaW5rIGNvcmUgZHJpdmVyDQo+IGRlcGVuZHMgb24gcGxh dGZvcm0gcG9saWN5IGlzIG5vdCBhIGdvb2QgZGVzaWduLg0KPiA+DQo+ID4gRG8geW91IGd1eXMg aGF2ZSBhbnkgb3RoZXIgY29uY2Vybj8NCj4gDQo+IHNvcnJ5LCBJIGRvbid0IHVuZGVyc3RhbmQu DQo+IA0KPiAoMSkgSW4gPGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MTQxOT4sIHdoZXJlDQo+IGN1cnJlbnRseSBjb21tZW50ICMyIGlzIHRoZSBsYXN0IGNv bW1lbnQsIEkgZG9uJ3Qgc2VlIGFueSByZXF1ZXN0IGZvcg0KPiBrZWVwaW5nIHRoZSB0aW1lb3V0 IGZhY2lsaXR5Lg0KDQpQbGVhc2UgY2hlY2sgUmF5J3MgY29tbWVudHMgSSBkaXNjdXNzZWQgd2l0 aCBoaW0gb2ZmbGluZS4NCg0KPiANCj4gKDIpIE9uIHRoZSBtYWlsaW5nIGxpc3QgYXMgd2VsbCwg eW91IHNlZW0gdG8gaGF2ZSByZWNlaXZlZCBjb21tZW50cyBvbmx5IGluDQo+IGZhdm9yIG9mIHJl bW92aW5nIHRoZSB0aW1lb3V0IGZhY2lsaXR5Lg0KPiANCj4gIlNvbWVvbmUgdGhpbmsgdGhpcyB0 aW1lb3V0IGlzIHZhbHVhYmxlIGZvciB0aGUgZGVidWcgcHVycG9zZSIgZG9lc24ndCBjdXQNCj4g aXQsIGZvciBvcGVuIGRldmVsb3BtZW50LiBJIGRvbid0IGNhcmUgYWJvdXQgdGhlIGlkZW50aXR5 IG9mIHRoZSBwZXJzb24gdGhhdA0KPiB3YW50cyB0byBwcmVzZXJ2ZSB0aGUgZmVhdHVyZSwgYnV0 IEkgY2VydGFpbmx5IGNhcmUgYWJvdXQgdGhlaXIgdXNlIGNhc2UuIFlvdQ0KPiBzaG91bGRuJ3Qg aGF2ZSB0byBtZWRpYXRlIGFuZCBkZXNjcmliZSB0aGVpciB1c2UgY2FzZSBmb3IgdGhlbSwgb24g dGhlIGxpc3Q7DQo+IHRoYXQncyBhbHdheXMgYSBsb3NzeSBwcm9jZXNzLg0KPiANCg0KUGxlYXNl IGNoZWNrIFJheSdzIGNvbW1lbnRzIEkgZGlzY3Vzc2VkIHdpdGggaGltIG9mZmxpbmUuDQoNCj4g UmVnYXJkaW5nIHRoZSBQQ0Q6IEkgdGhpbmsgemVyb2luZyAiUGNkU3BpbkxvY2tUaW1lb3V0IiB0 byBkaXNhYmxlIHRoZQ0KPiB0aW1lb3V0IGNhc2UgaXMgYSB2YWxpZCBhcHByb2FjaCwgaXQncyBq dXN0IHRoYXQgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdA0KPiB2YWx1ZSBpbiB0aGUgREVD IGZpbGUgdG8gemVyby4gVGhlbiB0aGUgUENEIHNldHRpbmcgd2lsbCBiZWNvbWUgYSBidXJkZW4g b25seQ0KPiBmb3IgdGhvc2UgcGxhdGZvcm1zIGFuZCB0aG9zZSB1c2UgY2FzZXMgdGhhdCB3YW50 IHRvIHVzZSB0aGUgdGltZW91dA0KPiBmZWF0dXJlIChzdWNoIGFzIGZvciBkZWJ1Z2dpbmcpLg0K PiANCj4gSW4gZ2VuZXJhbCwgUENEIGRlZmF1bHQgdmFsdWVzIGluIERFQyBmaWxlcyBoYXZlIHRv IGJlIGNvbnNpZGVyZWQgY2FyZWZ1bGx5LA0KPiBidXQgaW4gc29tZSBjYXNlcywgc3VjaCBjaGFu Z2VzIGFyZSB0aGUgcmlnaHQgdGhpbmcuIEFub3RoZXIgZXhhbXBsZSB3YXMNCj4gNTA5Zjg0MjVi NzVkICgiVWVmaUNwdVBrZzogY2hhbmdlIFBjZENwdVNtbVN0YWNrR3VhcmQgZGVmYXVsdCB0bw0K PiBUUlVFIiwgMjAxNi0wNi0wNikuDQo+IA0KPiAoWW91IG1hZGUgdGhlIHNhbWUgcG9pbnQgYXQg dGhlIGVuZCBvZg0KPiA8aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNn aT9pZD0xNDE5I2MyPi4pDQo+IA0KPiANCj4gSW4gYWRkaXRpb24gdG8gY2hhbmdpbmcgdGhlIGRl ZmF1bHQgdmFsdWUgdG8gemVybywgSSdkIHN1Z2dlc3QgbW92aW5nDQo+ICJQY2RTcGluTG9ja1Rp bWVvdXQiIGZyb20gc2VjdGlvbg0KPiANCj4gW1BjZHNGaXhlZEF0QnVpbGQsUGNkc1BhdGNoYWJs ZUluTW9kdWxlXQ0KPiANCj4gdG8gc2VjdGlvbg0KPiANCj4gW1BjZHNGaXhlZEF0QnVpbGQsIFBj ZHNQYXRjaGFibGVJbk1vZHVsZSwgUGNkc0R5bmFtaWMsIFBjZHNEeW5hbWljRXhdDQo+IA0KPiBz byB0aGF0IHBsYXRmb3JtcyBjYW4gZW5hYmxlIHRoZSAiZGVidWciIGZlYXR1cmUgKGkuZS4gc2V0 IGEgbm9uemVybw0KPiB2YWx1ZSkgbW9yZSBmbGV4aWJseS4NCg0KQWdyZWUgdG8gZG8gYm90aCBj aGFuZ2VzLCAgd2lsbCBzdWJtaXQgQlogZm9yIGl0IGlmIHdlIGdldCB0aGUgYWdyZWVtZW50IGlu IHRoaXMgbWFpbGluZyBsaXN0Lg0KDQpUaGFua3MsDQpFcmljDQoNCj4gDQo+IFRoYW5rcw0KPiBM YXN6bG8NCj4gDQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEJy aWFuIEouIEpvaG5zb24gW21haWx0bzpicmlhbi5qb2huc29uQGhwZS5jb21dDQo+ID4+IFNlbnQ6 IEZyaWRheSwgRGVjZW1iZXIgMjEsIDIwMTggMTI6MzYgQU0NCj4gPj4gVG86IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IE5pLCBSdWl5dQ0KPiA+PiA8cnVpeXUubmlAaW50ZWwu Y29tPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47DQo+ID4+IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnDQo+ID4+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0K PiA+PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQYXRjaCAxLzNdIFVlZmlDcHVQa2cvUmVnaXN0ZXJD cHVGZWF0dXJlc0xpYjoNCj4gPj4gQXZvaWQgQVAgY2FsbHMgUGVpU2VydmljZS4NCj4gPj4NCj4g Pj4gQWdyZWVkLiAgV2UndmUgc2VlbiBpc3N1ZXMgb24gcmVhbCBwbGF0Zm9ybXMgd2l0aCB0aW1l ZC1vdXQgc3BpbmxvY2tzDQo+ID4+IGluIERYRSBjYXVzaW5nIGNhbGxzIHRvIEdldFBlcmZvcm1h bmNlQ291bnRlciBhbmQgRGVidWdBc3NlcnQuICAoRFhFDQo+ID4+IGhhcyB0aGUgc2FtZSBjb2Rl LCB3aXRoIHRoZSBzYW1lIGlzc3Vlcy4pDQo+ID4+DQo+ID4+IE5vdGUgdGhhdCBpdCdzIHBvc3Np YmxlIHRvIHNldCBQY2RTcGluTG9ja1RpbWVvdXQ9MCB0byB3b3JrIGFyb3VuZA0KPiA+PiB0aGUg aXNzdWUgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLCBvciBpbiBhIHBhcnRpY3VsYXIgbW9kdWxl LiAgQnV0DQo+ID4+IGlmIHlvdSBoYXZlIHRvIGRvIHRoYXQgZm9yIGV2ZXJ5IG1vZHVsZSB3aGlj aCB1c2VzIEFQcywgYW5kIGhlbmNlDQo+ID4+IGNvdWxkIGNvbnRlbmQgZm9yIGEgc3BpbmxvY2ss IGl0IGtpbmQgb2YgZGVmZWF0cyB0aGUgcG9pbnQuLi4uICBXZSdyZSBiZXR0ZXINCj4gb2ZmIHJl bW92aW5nIHRoZSB0aW1lb3V0IGNvZGUuDQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4gQnJpYW4N Cj4gPj4NCj4gPj4gT24gMTIvMTkvMTggODowOCBQTSwgWWFvLCBKaWV3ZW4gd3JvdGU6DQo+ID4+ PiBZZXMsIEkgYWdyZWUsIGlmIHdlIGRvbid0IGhhdmUgYW55IHJlYWwgY2FzZS4NCj4gPj4+DQo+ ID4+Pg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJvbTogTmks IFJ1aXl1DQo+ID4+Pj4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDIwLCAyMDE4IDEwOjA3IEFN DQo+ID4+Pj4gVG86IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBZYW8sIEppZXdl bg0KPiA+Pj4+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn DQo+ID4+Pj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+Pj4gU3Vi amVjdDogUkU6IFtlZGsyXSBbUGF0Y2ggMS8zXSBVZWZpQ3B1UGtnL1JlZ2lzdGVyQ3B1RmVhdHVy ZXNMaWI6DQo+ID4+Pj4gQXZvaWQgQVAgY2FsbHMgUGVpU2VydmljZS4NCj4gPj4+Pg0KPiA+Pj4+ IENhbiB5b3UganVzdCBjaGFuZ2UgdGhlIEFjcXVpcmVTcGluTG9jaygpIGJlaGF2aW9yIHRvIHJl bW92ZSB0aGUNCj4gPj4+PiBUaW1lb3V0IFBDRCBjb25zdW1wdGlvbj8NCj4gPj4+Pg0KPiA+Pj4+ IEkgaGF2ZW4ndCBzZWVuIGEgcmVhbCBjYXNlIHRoYXQgdGhlIHRpbWVkIGFjcXVpc2l0aW9uIG9m IHNwaW4gbG9jayBpcw0KPiBuZWVkZWQuDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFRoYW5rcy9S YXkNCj4gPj4+Pg0KPiA+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+PiBG cm9tOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiA+Pj4+PiBTZW50OiBUaHVy c2RheSwgRGVjZW1iZXIgMjAsIDIwMTggOToyMyBBTQ0KPiA+Pj4+PiBUbzogWWFvLCBKaWV3ZW4g PGppZXdlbi55YW9AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+Pj4g Q2M6IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgTGFzemxvIEVyc2VrDQo+ID4+Pj4+ IDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPj4+Pj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUGF0Y2gg MS8zXSBVZWZpQ3B1UGtnL1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWI6DQo+ID4+Pj4+IEF2b2lkIEFQ IGNhbGxzIFBlaVNlcnZpY2UuDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IEFncmVlZCwgTWF5 YmUgaXQncyB0aW1lIHRvIGFkZCBhIG5ldyBBUEkgbGlrZQ0KPiA+Pj4+PiBBY3F1aXJlU3Bpbkxv Y2tXaXRob3V0VGltZU91dD8NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhhbmtzLA0KPiA+Pj4+PiBFcmlj DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4gRnJvbTogWWFv LCBKaWV3ZW4NCj4gPj4+Pj4+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAyMCwgMjAxOCA5OjE5 IEFNDQo+ID4+Pj4+PiBUbzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IGVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+Pj4+PiBDYzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRl bC5jb20+OyBMYXN6bG8gRXJzZWsNCj4gPj4+Pj4+IDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPj4+ Pj4+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BhdGNoIDEvM10gVWVmaUNwdVBrZy9SZWdpc3RlckNw dUZlYXR1cmVzTGliOg0KPiA+Pj4+Pj4gQXZvaWQgQVAgY2FsbHMgUGVpU2VydmljZS4NCj4gPj4+ Pj4+DQo+ID4+Pj4+PiBIaQ0KPiA+Pj4+Pj4gSWYgd2UgdGhpbmsgYmVsb3cgY29kZSBpcyBnZW5l cmljLCBjYW4gd2UgaGF2ZSBhbiBBUEkgZm9yIHRoYXQ/DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gKyAg ICAgIC8vDQo+ID4+Pj4+PiArICAgICAgLy8gV2FpdCBmb3IgdGhlIEFQIHRvIHJlbGVhc2UgdGhl IE1TUiBzcGluIGxvY2suDQo+ID4+Pj4+PiArICAgICAgLy8NCj4gPj4+Pj4+ICsgICAgICB3aGls ZSAoIUFjcXVpcmVTcGluTG9ja09yRmFpbCAoJkNwdUZsYWdzLT5Db25zb2xlTG9nTG9jaykpIHsN Cj4gPj4+Pj4+ICsgICAgICAgIENwdVBhdXNlICgpOw0KPiA+Pj4+Pj4gKyAgICAgIH0NCj4gPj4+ Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1k ZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24NCj4gPj4+Pj4+PiBCZWhhbGYgT2YgRXJpYyBE b25nDQo+ID4+Pj4+Pj4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDIwLCAyMDE4IDk6MTYgQU0N Cj4gPj4+Pj4+PiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+Pj4+PiBDYzogTmks IFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+OyBMYXN6bG8gRXJzZWsNCj4gPj4+Pj4+PiA8bGVy c2VrQHJlZGhhdC5jb20+DQo+ID4+Pj4+Pj4gU3ViamVjdDogW2VkazJdIFtQYXRjaCAxLzNdIFVl ZmlDcHVQa2cvUmVnaXN0ZXJDcHVGZWF0dXJlc0xpYjoNCj4gPj4+Pj4+PiBBdm9pZCBBUCBjYWxs cyBQZWlTZXJ2aWNlLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSW4gQWNxdWlyZVNwaW5Mb2NrIGZ1 bmN0aW9uLCBpdCBjYWxscyBHZXRQZXJmb3JtYW5jZUNvdW50ZXINCj4gPj4+Pj4+PiB3aGljaCBm aW5hbCBjYWxscyBQZWlTZXJ2aWNlIHNlcnZpY2UuIFRoaXMgcGF0Y2ggYXZvaWQgdG8gY2FsbA0K PiA+Pj4+Pj4+IEFjcXVpcmVTcGluTG9jayBmdW5jdGlvbi4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ IEJaOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEN Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IENjOiBSdWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0K PiA+Pj4+Pj4+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+Pj4+Pj4+ IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjEN Cj4gPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+ DQo+ID4+Pj4+Pj4gLS0tDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBVZWZpQ3B1UGtnL0xpYnJhcnkv UmVnaXN0ZXJDcHVGZWF0dXJlc0xpYi9DcHVGZWF0dXJlc0luaXRpYWxpemUuDQo+ID4+Pj4+Pj4g Yw0KPiA+Pj4+Pj4+IHwNCj4gPj4+Pj4+PiA3DQo+ID4+Pj4+Pj4gKysrKysrLQ0KPiA+Pj4+Pj4+ ICAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+Pj4+ Pj4+DQo+ID4+Pj4+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4+Pj4+DQo+IGEvVWVmaUNwdVBrZy9MaWJy YXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIvQ3B1RmVhdHVyZXNJbml0aWFsaXplLg0KPiA+Pj4+ Pj4+IGMNCj4gPj4+Pj4+Pg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9SZWdpc3RlckNwdUZlYXR1 cmVzTGliL0NwdUZlYXR1cmVzSW5pdGlhbGl6ZS4NCj4gPj4+Pj4+PiBjIGluZGV4IDYyNGRkZWUw NTUuLmE2NDMyNjIzOWYgMTAwNjQ0DQo+ID4+Pj4+Pj4gLS0tDQo+ID4+Pj4+Pj4NCj4gYS9VZWZp Q3B1UGtnL0xpYnJhcnkvUmVnaXN0ZXJDcHVGZWF0dXJlc0xpYi9DcHVGZWF0dXJlc0luaXRpYWxp emUuDQo+ID4+Pj4+Pj4gYw0KPiA+Pj4+Pj4+ICsrKw0KPiA+Pj4+IGIvVWVmaUNwdVBrZy9MaWJy YXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIvQ3B1RmVhdHVyZXNJbml0aWFsaXplLg0KPiA+Pj4+ Pj4+ICsrKyBjDQo+ID4+Pj4+Pj4gQEAgLTgzMiw3ICs4MzIsMTIgQEAgUHJvZ3JhbVByb2Nlc3Nv clJlZ2lzdGVyICgNCj4gPj4+Pj4+PiAgICAgICBSZWdpc3RlclRhYmxlRW50cnkgPSAmUmVnaXN0 ZXJUYWJsZUVudHJ5SGVhZFtJbmRleF07DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgICBERUJV R19DT0RFX0JFR0lOICgpOw0KPiA+Pj4+Pj4+IC0gICAgICBBY3F1aXJlU3BpbkxvY2sgKCZDcHVG bGFncy0+Q29uc29sZUxvZ0xvY2spOw0KPiA+Pj4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+Pj4+ICsg ICAgICAvLyBXYWl0IGZvciB0aGUgQVAgdG8gcmVsZWFzZSB0aGUgTVNSIHNwaW4gbG9jay4NCj4g Pj4+Pj4+PiArICAgICAgLy8NCj4gPj4+Pj4+PiArICAgICAgd2hpbGUgKCFBY3F1aXJlU3Bpbkxv Y2tPckZhaWwgKCZDcHVGbGFncy0+Q29uc29sZUxvZ0xvY2spKSB7DQo+ID4+Pj4+Pj4gKyAgICAg ICAgQ3B1UGF1c2UgKCk7DQo+ID4+Pj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4+PiAgICAgICAgIFRo cmVhZEluZGV4ID0gQXBMb2NhdGlvbi0+UGFja2FnZSAqDQo+ID4+Pj4gQ3B1U3RhdHVzLT5NYXhD b3JlQ291bnQgKg0KPiA+Pj4+Pj4+IENwdVN0YXR1cy0+TWF4VGhyZWFkQ291bnQgKw0KPiA+Pj4+ Pj4+ICAgICAgICAgICAgICAgICBBcExvY2F0aW9uLT5Db3JlICogQ3B1U3RhdHVzLT5NYXhUaHJl YWRDb3VudCArDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAgIEFwTG9jYXRpb24tPlRocmVhZDsN Cj4gPj4+Pj4+PiAtLQ0KPiA+Pj4+Pj4+IDIuMTUuMC53aW5kb3dzLjENCj4gPj4+Pj4+Pg0KPiA+ Pj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ ID4+Pj4+Pj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPj4+Pj4+PiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZw0KPiA+Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGlu Zm8vZWRrMi1kZXZlbA0KPiA+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPj4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4+PiBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZw0KPiA+Pj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0 aW5mby9lZGsyLWRldmVsDQo+ID4+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtLQ0KPiA+PiBCcmlhbiBK LiBKb2huc29uDQo+ID4+IEVudGVycHJpc2UgWDg2IExhYg0KPiA+Pg0KPiA+PiBIZXdsZXR0IFBh Y2thcmQgRW50ZXJwcmlzZQ0KPiA+Pg0KPiA+PiBicmlhbi5qb2huc29uQGhwZS5jb20NCj4gPg0K DQo=