From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: star.zeng@intel.com) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by groups.io with SMTP; Tue, 20 Aug 2019 07:00:24 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Aug 2019 07:00:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,408,1559545200"; d="scan'208";a="207373857" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga002.fm.intel.com with ESMTP; 20 Aug 2019 07:00:22 -0700 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 20 Aug 2019 07:00:22 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 20 Aug 2019 07:00:20 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.19]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.112]) with mapi id 14.03.0439.000; Tue, 20 Aug 2019 22:00:18 +0800 From: "Zeng, Star" To: "Gao, Liming" , "Kuo, Donald" , "devel@edk2.groups.io" , "lersek@redhat.com" , "Dong, Eric" CC: "Ni, Ray" , "Chan, Amy" , "Chaganty, Rangasai V" , "Lai, Luke" , "Li, Kevin Y" , "leif.lindholm@linaro.org" , "afish@apple.com" , "Kinney, Michael D" , "Zeng, Star" Subject: Re: [edk2-devel] [PATCH] UefiCpuPkg: Adding a new TSC library by using CPUID(0x15) TSC leaf Thread-Topic: [edk2-devel] [PATCH] UefiCpuPkg: Adding a new TSC library by using CPUID(0x15) TSC leaf Thread-Index: AQHVUcVTaf+Y5VfBGkuaDjbjbUlnS6b6/XEAgAAEhACAABD1gIACX1WAgABJuwCABRyOAIAARRgAgAAIjQCAAEzGgIAAqJFA Date: Tue, 20 Aug 2019 14:00:17 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483104039FD67@shsmsx102.ccr.corp.intel.com> References: <20190813105312.14836-1-donald.kuo@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E4D15C2@SHSMSX104.ccr.corp.intel.com> <305e8729-d681-6eef-fcd6-023bb53755a9@redhat.com> <30b8f129-6e89-7a1e-8821-c38a6c70a4bf@redhat.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E4D6C73@SHSMSX104.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E4D7D9D@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4D7D9D@SHSMSX104.ccr.corp.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMWViZjBhM2UtNmZjNy00ZWY3LTg5YWQtYTUxZmFlMzdhY2I5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidkhIQlVVXC9IdDZMdUtlOG53MnB3MmF0R0RZRE1mSnBkUVVmNFVNNDhwUCtsclllakpiVGpMam9ZV0pYYktGbTIifQ== dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: star.zeng@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmVtZW1iZXIgdG8gYWRkIGVudHJ5IGZvciBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9j b3JlL3RpYW5vY29yZS5naXRodWIuaW8vd2lraS9FREstSUktUmVsZWFzZS1QbGFubmluZy4NCg0K PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHYW8sIExpbWluZw0KPiBTZW50 OiBUdWVzZGF5LCBBdWd1c3QgMjAsIDIwMTkgNzo1NiBQTQ0KPiBUbzogS3VvLCBEb25hbGQgPGRv bmFsZC5rdW9AaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+IGxlcnNla0ByZWRo YXQuY29tOyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiBDYzogTmksIFJheSA8 cmF5Lm5pQGludGVsLmNvbT47IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBDaGFu LCBBbXkNCj4gPGFteS5jaGFuQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+IDxy YW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47IExhaSwgTHVrZSA8bHVrZS5sYWlAaW50ZWwu Y29tPjsgTGksIEtldmluIFkNCj4gPGtldmluLnkubGlAaW50ZWwuY29tPjsgbGVpZi5saW5kaG9s bUBsaW5hcm8ub3JnOyBhZmlzaEBhcHBsZS5jb207IEtpbm5leSwNCj4gTWljaGFlbCBEIDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFU Q0hdIFVlZmlDcHVQa2c6IEFkZGluZyBhIG5ldyBUU0MgbGlicmFyeSBieQ0KPiB1c2luZyBDUFVJ RCgweDE1KSBUU0MgbGVhZg0KPiANCj4gRG9uYWxkOg0KPiAgIFRoYW5rcyBmb3IgeW91ciB1cGRh dGUuIElmIG5vIG90aGVyIGNvbW1lbnQsIEkgd2lsbCBoZWxwIHB1c2ggdGhpcyBwYXRjaA0KPiB0 b21vcnJvdy4NCj4gDQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+IEZyb206IEt1bywgRG9uYWxkDQo+ID4gU2VudDogVHVlc2RheSwgQXVndXN0 IDIwLCAyMDE5IDM6MjIgUE0NCj4gPiBUbzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+ID4gbGVyc2VrQHJlZGhhdC5jb207IERvbmcs IEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IE5pLCBSYXkgPHJheS5uaUBpbnRl bC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsNCj4gPiBDaGFuLCBBbXkg PGFteS5jaGFuQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+ID4gPHJhbmdhc2Fp LnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgTGFpLCBMdWtlIDxsdWtlLmxhaUBpbnRlbC5jb20+OyBM aSwNCj4gPiBLZXZpbiBZIDxrZXZpbi55LmxpQGludGVsLmNvbT47IGxlaWYubGluZGhvbG1AbGlu YXJvLm9yZzsNCj4gPiBhZmlzaEBhcHBsZS5jb207IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRD SF0gVWVmaUNwdVBrZzogQWRkaW5nIGEgbmV3IFRTQyBsaWJyYXJ5DQo+ID4gYnkgdXNpbmcgQ1BV SUQoMHgxNSkgVFNDIGxlYWYNCj4gPg0KPiA+IEhpIExpbWluZywNCj4gPg0KPiA+IERvbmUuDQo+ ID4NCj4gPiBQYXRjaCBpcyBhdHRhY2hlZCB0bw0KPiA+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9j b3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOQ0KPiA+DQo+ID4gQW5vdGhlciBCWiB0byBhcHBs eSBDcHVUaW1lckxpYiB3aWxsIGJlIHRyYWNraW5nIG9uOg0KPiA+IGh0dHBzOi8vYnVnemlsbGEu dGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Ng0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+ IERvbmFsZA0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJv bTogR2FvLCBMaW1pbmcNCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyMCwgMjAxOSAyOjUx IFBNDQo+ID4gPiBUbzogS3VvLCBEb25hbGQgPGRvbmFsZC5rdW9AaW50ZWwuY29tPjsgZGV2ZWxA ZWRrMi5ncm91cHMuaW87DQo+ID4gPiBsZXJzZWtAcmVkaGF0LmNvbTsgRG9uZywgRXJpYyA8ZXJp Yy5kb25nQGludGVsLmNvbT4NCj4gPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsg WmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47DQo+ID4gPiBDaGFuLCBBbXkgPGFteS5j aGFuQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+ID4gPiA8cmFuZ2FzYWkudi5j aGFnYW50eUBpbnRlbC5jb20+OyBMYWksIEx1a2UgPGx1a2UubGFpQGludGVsLmNvbT47IExpLA0K PiA+ID4gS2V2aW4gWSA8a2V2aW4ueS5saUBpbnRlbC5jb20+OyBsZWlmLmxpbmRob2xtQGxpbmFy by5vcmc7DQo+ID4gPiBhZmlzaEBhcHBsZS5jb207IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BB VENIXSBVZWZpQ3B1UGtnOiBBZGRpbmcgYSBuZXcgVFNDDQo+ID4gPiBsaWJyYXJ5IGJ5IHVzaW5n IENQVUlEKDB4MTUpIFRTQyBsZWFmDQo+ID4gPg0KPiA+ID4gRG9uYWxkOg0KPiA+ID4gICBQbGVh c2UgYWxzbyBhdHRhY2ggdGhlIHBhdGNoIGxpbmtlciBpbiBCWnMuDQo+ID4gPg0KPiA+ID4gICBB bmQsIHBsZWFzZSBzdWJtaXQgYW5vdGhlciBCWiBmb3IgZWRrMi0NCj4gPiA+IHBsYXRmb3Jtc1xQ bGF0Zm9ybVxJbnRlbFxLYWJ5bGFrZU9wZW5Cb2FyZFBrZyB0byBhcHBseSB0aGlzIG5ldw0KPiA+ ID4gbGlicmFyeSBpbnN0YW5jZS4NCj4gPiA+DQo+ID4gPiBUaGFua3MNCj4gPiA+IExpbWluZw0K PiA+ID4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+RnJvbTogS3VvLCBEb25h bGQNCj4gPiA+ID5TZW50OiBUdWVzZGF5LCBBdWd1c3QgMjAsIDIwMTkgMTA6NDQgQU0NCj4gPiA+ ID5UbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGxlcnNla0ByZWRoYXQuY29tOyBHYW8sIExpbWlu Zw0KPiA+ID4gPjxsaW1pbmcuZ2FvQGludGVsLmNvbT47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0Bp bnRlbC5jb20+DQo+ID4gPiA+Q2M6IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBaZW5nLCBT dGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsNCj4gPiA+ID5DaGFuLCBBbXkgPGFteS5jaGFuQGlu dGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+ID4gPiA+PHJhbmdhc2FpLnYuY2hhZ2Fu dHlAaW50ZWwuY29tPjsgTGFpLCBMdWtlIDxsdWtlLmxhaUBpbnRlbC5jb20+Ow0KPiA+ID4gPkxp LCBLZXZpbiBZIDxrZXZpbi55LmxpQGludGVsLmNvbT47IGxlaWYubGluZGhvbG1AbGluYXJvLm9y ZzsNCj4gPiA+ID5hZmlzaEBhcHBsZS5jb207IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID5TdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRD SF0gVWVmaUNwdVBrZzogQWRkaW5nIGEgbmV3IFRTQw0KPiA+ID4gPmxpYnJhcnkgYnkgdXNpbmcg Q1BVSUQoMHgxNSkgVFNDIGxlYWYNCj4gPiA+ID4NCj4gPiA+ID5UaGFua3MgTGFzemxvIGhlbHAg dG8gcmV2aWV3IGFuZCBncmVhdCBmZWVkYmFja3MuIFRoYXQgd2UgZGlkIG1pc3MNCj4gPiA+ID50 byBmdWxmaWwNCj4gPiA+IEJaLg0KPiA+ID4gPg0KPiA+ID4gPkkgaGFkIHVwZGF0ZWQgQnVnemls bGENCj4gPiA+ID5odHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTE5MDkNCj4gPiA+ID5mb3IgbW9yZSBkb2N1bWVudGF0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPkFz IEkga25vdyBmb3IgdGhlIGVkazItcGxhdGZvcm1zIHNob3VsZCBiZSBjb25zdW1lZCBhcyBLQkwg KDd0aA0KPiA+ID4gPkdlbmVyYXRpb24pIHBsYXRmb3JtIGluIENsaWVudCwgYW5kIHRoaXMgZmVh dHVyZSBiYXNlZCBvbiBTRE0gaXMNCj4gPiA+ID5zdXBwb3J0ZWQgb24gU0tMICg2dGggR2VuZXJh dGlvbiwgRmFtaWx5IDA2aCkgb253YXJkcy4gU28gaXQncyBvaw0KPiA+ID4gPnRvIHVzZSBhcyBU aW1lckxpYiBpbnN0YW5jZXMgZm9yIGVkazItcGxhdGZvcm1zLg0KPiA+ID4gPg0KPiA+ID4gPkFu ZCBJIHRoaW5rIHRoZSBsaWJyYXJ5IGlzIG5ldyBpbnN0YW5jZXMgZm9yIFRpbWVyTGliIGZvciBz dXBwb3J0ZWQNCj4gPiA+ID5DUFUsIGFuZCB0aG9zZSBub24tc3VwcG9ydGVkIENQVSB3aWxsIHN0 aWxsIGtlZXAgdXNpbmcgQWNwaVRpbWVybGliDQo+ID4gPiA+YXMgVGltZXJMaWIgaW5zdGFuY2Vz Lg0KPiA+ID4gPg0KPiA+ID4gPlRoYW5rcywNCj4gPiA+ID5Eb25hbGQNCj4gPiA+ID4NCj4gPiA+ ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+PiBGcm9tOiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbyBbbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvXSBPbg0KPiA+ID4gPj4gQmVo YWxmIE9mIExhc3psbyBFcnNlaw0KPiA+ID4gPj4gU2VudDogU2F0dXJkYXksIEF1Z3VzdCAxNywg MjAxOSA0OjQwIEFNDQo+ID4gPiA+PiBUbzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgS3VvLCBEb25hbGQNCj4gPiA+ID4+IDxkb25hbGQua3VvQGludGVsLmNvbT47IERvbmcs IEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+Ow0KPiA+ID4gPj4gZGV2ZWxAZWRrMi5ncm91cHMu aW8NCj4gPiA+ID4+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgWmVuZywgU3RhciA8 c3Rhci56ZW5nQGludGVsLmNvbT47DQo+ID4gPiA+PiBDaGFuLCBBbXkgPGFteS5jaGFuQGludGVs LmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+ID4gPiA+PiA8cmFuZ2FzYWkudi5jaGFnYW50 eUBpbnRlbC5jb20+OyBMYWksIEx1a2UgPGx1a2UubGFpQGludGVsLmNvbT47DQo+ID4gPiA+PiBM aSwgS2V2aW4gWSA8a2V2aW4ueS5saUBpbnRlbC5jb20+OyBsZWlmLmxpbmRob2xtQGxpbmFyby5v cmc7DQo+ID4gPiA+PiBhZmlzaEBhcHBsZS5jb207DQo+ID4gPiA+S2lubmV5LA0KPiA+ID4gPj4g TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4+IFN1YmplY3Q6 IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBVZWZpQ3B1UGtnOiBBZGRpbmcgYSBuZXcgVFNDDQo+ ID4gPiA+PiBsaWJyYXJ5IGJ5IHVzaW5nIENQVUlEKDB4MTUpIFRTQyBsZWFmDQo+ID4gPiA+Pg0K PiA+ID4gPj4gT24gMDgvMTYvMTkgMTg6MTYsIExhc3psbyBFcnNlayB3cm90ZToNCj4gPiA+ID4+ ID4gT24gMDgvMTUvMTkgMDY6MDIsIEdhbywgTGltaW5nIHdyb3RlOg0KPiA+ID4gPj4gPj4gRG9u YWxkOiBUaGlzIGNoYW5nZSBpcyBhIG5ldyBmZWF0dXJlLiBOb3csIGl0IGlzIG5vdCBpbiBlZGsy DQo+ID4gPiA+PiA+PiBmZWF0dXJlIHBsYW5uaW5nIGxpc3QuIElmIHlvdSB3YW50IHRvIGNhdGNo IGl0IGludG8gMjAxOTA4DQo+ID4gPiA+PiA+PiBzdGFibGUgdGFnLCBwbGVhc2UgZ2V0IGFwcHJv dmUgZnJvbSBTdGV3YXJkcyBmaXJzdC4gSSBoYXZlIGNjDQo+ID4gPiA+PiA+PiB0aGlzIG1haWwg dG8gYWxsDQo+ID4gPiBTdGV3YXJkcy4NCj4gPiA+ID4+ID4gLSBJIGRvbid0IG1pbmQgYWRkaW5n IGEgbmV3IGZlYXR1cmUsIGFzIGxvbmcgYXMgaXQgZ2V0cw0KPiA+ID4gPj4gPiBwcm9wZXJseSBy ZXZpZXdlZCBieSBwYWNrYWdlIG93bmVycyBiZWZvcmUgd2UgZW50ZXIgdGhlIHNvZnQNCj4gZmVh dHVyZSBmcmVlemUuDQo+ID4gPiA+PiA+DQo+ID4gPiA+PiA+IC0gTG9va2luZyBhdCB0aGUgQloN Cj4gPiA+ID4+ID4gPGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTkwOT4sIGEgYml0DQo+ID4gPiA+PiA+IG1vcmUgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBu aWNlLg0KPiA+ID4gPj4gPg0KPiA+ID4gPj4gPiAtIE9uIHRoZSBuZWdhdGl2ZSBzaWRlLCBJJ20g dmVyeSBtdWNoICpub3QqIGEgZmFuIG9mIGFkZGluZw0KPiA+ID4gPj4gPiBmZWF0dXJlcyB0byB0 aGUgb3BlbiBzb3VyY2UgZWRrMiB0cmVlIHdpdGhvdXQgYWN0dWFsbHkNCj4gPiA+ID4+ID4gKmNv bnN1bWluZyogdGhlIGZlYXR1cmUgaW4gYW4gb3BlbiBzb3VyY2UgdHJlZS4gQXJlIHRoZSBuZXcN Cj4gPiA+ID4+ID4gbGlicmFyeSBpbnN0YW5jZXMgZ29pbmcgdG8gYmUgcHV0IHRvIHVzZSBpbiBl ZGsyLXBsYXRmb3JtcywgcGVyaGFwcz8NCj4gPiA+ID4+ID4NCj4gPiA+ID4+ID4gV2UgZGlzY3Vz c2VkIHRoaXMgdG9waWMgZWFybGllciBvbiBzb21lIG9mIHRoZSBzdGV3YXJkcycgY2FsbHMuDQo+ ID4gPiA+PiA+IE9uIG9uZSBoYW5kLCBpdCdzIG5vdCB1bmNvbW1vbiB0byBzZWUgbGlicmFyeSBp bnN0YW5jZXMgZnJvbQ0KPiA+ID4gPj4gPiBJbnRlbCBlbnRlciBjb3JlDQo+ID4gPiA+PiA+IGVk azIgcGFja2FnZXMgd2l0aG91dCBhbnkgZGVwZW5kZW50IHBsYXRmb3JtIGNvZGUsIG9yIGV2ZW4g YQ0KPiA+ID4gPj4gPiBkZXRhaWxlZCBwcm9ibGVtIHN0YXRlbWVudCAvIHB1cnBvc2UgZGVzY3Jp cHRpb24gKHNlZSBlLmcuDQo+ID4gPiA+PiA+IGNvbW1pdCA1YzliYjg2ZjE3MWMgYW5kIGl0cyBz dXJyb3VuZGluZyBjb21taXRzKS4gT24gdGhlIG90aGVyDQo+ID4gPiA+PiA+IGhhbmQsIGF0dGVt cHRzIGluIHRoZSBwYXN0LCB0byBhZGQgbGlicmFyaWVzIHdpdGggd2VsbA0KPiA+ID4gPj4gPiBk ZW1vbnN0cmF0ZWQgYW5kIGRpcmVjdCBpbi10cmVlIHVzZSBjYXNlcywgdG8NCj4gPiA+ID4+ID4g ZWRrMiBjb3JlLCBoYXZlIGJlZW4gcmVqZWN0ZWQsIGZyb20gb3RoZXIgc3VibWl0dGVycy4gKEhl cmUncw0KPiA+ID4gPj4gPiBvbmUNCj4gPiA+ID4+ID4gZXhhbXBsZTogPGh0dHBzOi8vYnVnemls bGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3Pi4pDQo+ID4gPiA+PiA+IEknbSBu b3QgcHJ5aW5nIGF0IHByb3ByaWV0YXJ5IHBsYXRmb3JtIGluZm9ybWF0aW9uLCBidXQgYSBuZXcN Cj4gPiA+ID4+ID4gbGlicmFyeSBhZGRlZCB0bw0KPiA+ID4gPj4gPiBlZGsyIGNvcmUgKnNob3Vs ZCogYmUgd2VsbC1qdXN0aWZpZWQuDQo+ID4gPiA+PiA+DQo+ID4gPiA+PiA+IFRoZSBjb21taXQg bWVzc2FnZSBvbiB0aGlzIHBhdGNoIGlzIGVtcHR5LiBJdCBvbmx5IHJlZmVyZW5jZXMNCj4gPiA+ ID4+ID4gPGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw OT4uIEFuZCBpZiBJDQo+ID4gPiA+PiA+IG9wZW4gdGhlIEJaLCB0aGlzIGlzIGFsbCBJIGdldDoN Cj4gPiA+ID4+ID4NCj4gPiA+ID4+ID4gICAgIE5lZWQgYSBuZXcgVFNDIGxpYnJhcnkgdG8gY2hl Y2sgdGhlIENQVUlEIGxlYWYgKEVBWD0weDE1KSBmb3IgVFNDLg0KPiA+ID4gPj4gPiAgICAgRm9y IG5ldyBwbGF0Zm9ybSAoc3RhcnQgZnJvbSBTS0wpIGNhbiB1c2UgQ1BVSUQgYW5kDQo+IHJldGly ZS9yZW1vdmUNCj4gPiA+ID4+ID4gICAgIHRoZSBjdXJyZW50IG92ZXJyaWRlIGZyb20gQWNwaVRp bWVyTGliLg0KPiA+ID4gPj4gPg0KPiA+ID4gPj4gPiBEb2VzIHRoaXMgcmVhZCBsaWtlIGFuIGFj dHVhbCBmZWF0dXJlIHJlcXVlc3Q/IChUaW1lckxpYiBpcyBhbg0KPiA+ID4gPj4gPiBNZGVQa2cg bGlicmFyeSBjbGFzcywgc28gbm90IGV4YWN0bHkgIm5pY2hlIi4pDQo+ID4gPiA+Pg0KPiA+ID4g Pj4gSW4gY29tcGFyaXNvbiwgdGhlIGZvbGxvd2luZyBlbWFpbCBkb2VzIHJlYWQgbGlrZSBhIGZl YXR1cmUgcmVxdWVzdDoNCj4gPiA+ID4+DQo+ID4gPiA+PiBbZWRrMi1kZXZlbF0gRGV0ZXJtaW5p bmcgVFNDIGZyZXF1ZW5jeSBwcm9ncmFtbWF0aWNhbGx5DQo+ID4gPiA+PiBodHRwczovL2VkazIu Z3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS80NTc1MA0KPiA+ID4gPj4gaHR0cDovL21pZC5tYWls LWFyY2hpdmUuY29tLzhFQzE0RDBELURGQTUtNDEyRC1BNEUxLQ0KPiA+ID4gPj4gNEQ2NDE1NzZE NThFQHByb3Rvbm1haWwuY29tDQo+ID4gPiA+Pg0KPiA+ID4gPj4gSWYgdGhlIHBvc3RpbmcgaXMg cmVsYXRlZCB0byBUaWFub0NvcmUjMTkwOSwgdGhlbiBJIHVyZ2UgdGhlIEJaDQo+ID4gPiA+PiBh c3NpZ25lZSB0byBwbGVhc2UgcmVmZXJlbmNlIHRoZSBtZXNzYWdlIGluIHRoZSBUaWFub0NvcmUg QlouDQo+ID4gPiA+Pg0KPiA+ID4gPj4gVGhhbmtzDQo+ID4gPiA+PiBMYXN6bG8NCj4gPiA+ID4+ DQo+ID4gPiA+PiANCg0K