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.120; helo=mga04.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 1438A2118C4EA for ; Mon, 12 Nov 2018 08:44:37 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Nov 2018 08:44:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,495,1534834800"; d="scan'208";a="279175872" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by fmsmga005.fm.intel.com with ESMTP; 12 Nov 2018 08:44:37 -0800 Received: from orsmsx114.amr.corp.intel.com (10.22.240.10) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 12 Nov 2018 08:44:36 -0800 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.125]) by ORSMSX114.amr.corp.intel.com ([169.254.8.128]) with mapi id 14.03.0415.000; Mon, 12 Nov 2018 08:44:36 -0800 From: "Kinney, Michael D" To: "Cohen, Eugene" , "Yao, Jiewen" , "Bin, Sung-Uk (???)" , "edk2-devel@lists.01.org" , "Zhang, Chao B" , "Kinney, Michael D" CC: "Chae, Matthew" Thread-Topic: [RFC] TPM non-MMIO Access Thread-Index: AdR4eHIvXr9RSadIS3utDDz6q0OUJgABNhiwAAEyJOAAa5JakAADxFJAABQAyhAABc6gUA== Date: Mon, 12 Nov 2018 16:44:35 +0000 Message-ID: References: <74D8A39837DF1E4DA445A8C0B3885C503F3DF9C6@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F3E3705@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.22.254.139] MIME-Version: 1.0 Subject: Re: [RFC] TPM non-MMIO Access 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: Mon, 12 Nov 2018 16:44:38 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RXVnZW5lLA0KDQpJIHVuZGVyc3RhbmQgdGhlIGludGVudC4NCg0KRG8gd2Uga25vdyBmb3Igc3Vy ZSB3aXRoIGEgY2hhbmdlIGxpa2UgdGhpcyB0aGF0DQpNTUlPIGFuZCBub24tTU1JTyBUUE1zIHN1 cHBvcnQgdGhlIHNhbWUgcmVnaXN0ZXJzDQphbmQgcmVxdWlyZSB0aGUgZXhhY3Qgc2FtZSBzZXF1 ZW5jZSBvZiByZWdpc3Rlcg0KYWNjZXNzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gIElmIG5vdCwg dGhlbiB0aGUNCnZhbHVlIG9mIGFkZGluZyB0aGlzIG5ldyBsaWIgY2xhc3MgaXMgc21hbGwuDQoN CkFsc28sIHNvbWUgb2YgdGhlIG5vbi1NTUlPIGJ1cyB0eXBlcyBoYXZlIG11Y2gNCmRpZmZlcmVu dCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MsIHdoaWNoIG1heQ0KcmVxdWlyZSBzbGlnaHRs eSBkaWZmZXJlbnQgaW50ZXJhY3Rpb25zIGZvciBiZXN0DQpwZXJmb3JtYW5jZS4NCg0KTWlrZQ0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGVkazItZGV2ZWwgW21haWx0 bzplZGsyLWRldmVsLQ0KPiBib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmIE9mIENvaGVu LCBFdWdlbmUNCj4gU2VudDogTW9uZGF5LCBOb3ZlbWJlciAxMiwgMjAxOCA1OjU5IEFNDQo+IFRv OiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBCaW4sIFN1bmctVWsNCj4gKOu5 iOyEseyasSkgPHN1bmd1ay1iaW5AaHAuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7DQo+ IFpoYW5nLCBDaGFvIEIgPGNoYW8uYi56aGFuZ0BpbnRlbC5jb20+DQo+IENjOiBDaGFlLCBNYXR0 aGV3IDxtYXR0aGV3LmNoYWVAaHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazJdIFtSRkNdIFRQ TSBub24tTU1JTyBBY2Nlc3MNCj4gDQo+IEppZXdlbiwNCj4gDQo+IFdlIGRvbid0IGhhdmUgYSBw YXRjaCB5ZXQg4oCTIHdlIHdhbnRlZCB0byBjaGVjayB3aXRoIHlvdQ0KPiBmaXJzdCBiZWZvcmUg Z29pbmcgdG9vIGZhci4NCj4gDQo+IA0KPiDDmCAgT3IganVzdCBhIHNpbXBsZSByZXBsYWNlLWFs bCBmb3IgTW1pb1JlYWQvV3JpdGUtDQo+ID5UcG1NbWlvUmVhZC9Xcml0ZS4NCj4gDQo+IFllcywg YmFzaWNhbGx5IOKAkyB3aXRoIGEgbGlicmFyeSBjbGFzcyB0byBzdXBwb3J0IGl0Lg0KPiANCj4g V2Ugc2hvdWxkIG5vdCBjYWxsIGl0ICJUcG1NbWlvUmVhZDgiIHNpbmNlIG9uIHNvbWUNCj4gcGF0 aHMgaXQgaXMgbm90IE1NSU8gYXQgYWxsLiAgV2Ugc2hvdWxkIGNhbGwgaXQNCj4gVHBtUmVhZDgg KG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpIGFuZCB0aGVuIHRoZSBNTUlPDQo+IGluc3RhbmNlIG9m IHRoZSBsaWJyYXJ5IGNsYXNzIHdvdWxkIGNhbGwgTW1pbw0KPiBmdW5jdGlvbnMuDQo+IA0KPiBU aGFua3MsDQo+IA0KPiBFdWdlbmUNCj4gDQo+IEZyb206IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFv QGludGVsLmNvbT4NCj4gU2VudDogU3VuZGF5LCBOb3ZlbWJlciAxMSwgMjAxOCA5OjMzIFBNDQo+ IFRvOiBCaW4sIFN1bmctVWsgKOu5iOyEseyasSkgPHN1bmd1ay1iaW5AaHAuY29tPjsgQ29oZW4s DQo+IEV1Z2VuZSA8ZXVnZW5lQGhwLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBaaGFu ZywNCj4gQ2hhbyBCIDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPg0KPiBDYzogQ2hhZSwgTWF0dGhl dyA8bWF0dGhldy5jaGFlQGhwLmNvbT4NCj4gU3ViamVjdDogUkU6IFtSRkNdIFRQTSBub24tTU1J TyBBY2Nlc3MNCj4gDQo+IE9LLiBUaGFua3MgZm9yIHRoZSBjbGFyaWZpY2F0aW9uLg0KPiANCj4g SWYgcG9zc2libGUsIHdvdWxkIHlvdSBwbGVhc2UgcG9zdCB5b3VyIHBhdGNoIHRvDQo+IHNvbWV3 aGVyZT8NCj4gDQo+IERvIHlvdSByZXF1ZXN0IHRvIGNoYW5nZSBhbnkgb3RoZXIgbG9naWMgaW4g ZXhpc3RpbmcNCj4gVHBtMkRldmljZUxpYiA/DQo+IE9yIGp1c3QgYSBzaW1wbGUgcmVwbGFjZS1h bGwgZm9yIE1taW9SZWFkL1dyaXRlLQ0KPiA+VHBtTW1pb1JlYWQvV3JpdGUuDQo+IA0KPiBUaGFu ayB5b3UNCj4gWWFvIEppZXdlbg0KPiANCj4gRnJvbTogQmluLCBTdW5nLVVrICjruYjshLHsmrEp IFttYWlsdG86c3VuZ3VrLWJpbkBocC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMTIs IDIwMTggMTI6MTcgUE0NCj4gVG86IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNv bTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsNCj4gQ29oZW4sIEV1Z2VuZSA8ZXVnZW5l QGhwLmNvbTxtYWlsdG86ZXVnZW5lQGhwLmNvbT4+Ow0KPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9y ZzxtYWlsdG86ZWRrMi0NCj4gZGV2ZWxAbGlzdHMuMDEub3JnPjsgWmhhbmcsIENoYW8gQg0KPiA8 Y2hhby5iLnpoYW5nQGludGVsLmNvbTxtYWlsdG86Y2hhby5iLnpoYW5nQGludGVsLmNvbT4+DQo+ IENjOiBDaGFlLCBNYXR0aGV3DQo+IDxtYXR0aGV3LmNoYWVAaHAuY29tPG1haWx0bzptYXR0aGV3 LmNoYWVAaHAuY29tPj4NCj4gU3ViamVjdDogUkU6IFtSRkNdIFRQTSBub24tTU1JTyBBY2Nlc3MN Cj4gDQo+IEhpIEppZXdlbg0KPiANCj4gV2hhdCBFdWdlbmUgcHJvcG9zZXMgaXMgbm90IHRvIG1h a2UgdGhvc2UgYW5vdGhlciBUUE0NCj4gZGV2aWNlIGxpYnJhcnkgaW5zdGFuY2VzLg0KPiBJbnN0 ZWFkLCB3ZSBwcm9wb3NlIG5ldyDigJxUcG1Jb0xpYuKAnSB3aGljaCBjYW4gaGFuZGxlDQo+IGJv dGggTU1JTyBhbmQgbm9uLU1NSU8gZGV2aWNlLg0KPiANCj4gw6ggQ3VycmVudGx5IFRwbTEyVGlz LmMsIFRwbTJUaXMuYyBhbmQgVHBtMlB0cC5jIHVzZXMNCj4gSW9MaWIgKENQVSBJTyksIGFuZCB3 aGF0IHdlIHByb3Bvc2UgaXMgdG8gcmVwbGFjZSBpdA0KPiB3aXRoIFRwbUlvTGliLg0KPiANCj4g Rm9yIGV4YW1wbGUsIFRwbUlvTGliIGNhbiBwcm92aWRlIFRwbU1taW9SZWFkKCkgYW5kDQo+IFRw bTEyVGlzLmMsIFRwbTJUaXMuYyBhbmQgVHBtMlB0cC5jIGNhbiB1c2UNCj4gVHBtTW1pb1JlYWQo KSBpbnN0ZWFkIG9mIE1taW9SZWFkKCkuDQo+IA0KPiAtICAgICAgICAgIFRwbUlvTGliIGZvciBQ QyAoZGVmYXVsdCBpbiBTZWN1cml0eVBrZykNCj4gVUlOVDggVHBtTW1pb1JlYWQ4IChVSU5UTiAg QWRkcmVzcyApDQo+IHsNCj4gICAgICAgICAgICAgICAgIHJldHVybiBNbWlvUmVhZDgoQWRkcmVz cyk7DQo+IH0NCj4gDQo+IA0KPiAtICAgICAgICAgIFRwbUlvTGliIGZvciBTUEkgKHZlbmRvciBj cmVhdGVzIG5ldw0KPiBpbnN0YW5jZSkNCj4gVUlOVDggVHBtTW1pb1JlYWQ4IChVSU5UTiAgQWRk cmVzcyApDQo+IHsNCj4gICAgICAgICAgICAgICAgIFVJTlQ4IERhdGEsIFNwaUNzOw0KPiAgICAg ICAgICAgICAgICAgU3BpQ3MgPSAoQWRkcmVzcyAmIDB4RkYwMDAwKSA+PiAxNjsNCj4gICAgICAg ICAgICAgICAgIFRwbUFkZHJlc3MgPSBBZGRyZXNzICYgMHhGRkZGOw0KPiANCj4gICAgICAgICAg ICAgICAgLyogVmVuZG9yIHNwZWNpZmljIFNQSSBjb250cm9sIGZvciBUUE0NCj4gKi8NCj4gICAg ICAgICAgICAgICAgIOKApg0KPiAgICAgICAgICAgICAgICAgU3BpV3JpdGUoU3BpQ3MsIFRwbUFk ZHJlc3MpOw0KPiAgICAgICAgICAgICAgICAg4oCmDQo+ICAgICAgICAgICAgICAgICBTcGlSZWFk KFNwaUNzLCBUcG1BZGRyZXNzLCAmRGF0YSk7DQo+ICAgICAgICAgICAgICAgICByZXR1cm4gRGF0 YTsNCj4gfQ0KPiANCj4gVGhpcyBwcm9wb3NhbCBjYW1lIGZyb20gY29kZSBtYWludGFuYW5jZSwN Cj4gd2hlbiB3ZSBuZWVkIHRvIHVwZGF0ZSBTZWN1cml0eVBrZywgdGhlbiBpbiB0aGlzIGNhc2UN Cj4gaXTigJlzIG1vcmUgZWFzeSB0byB1cGRhdGUgdGhhbiBtYWtpbmcgYW5vdGhlcg0KPiBUcG0y RGV2aWNlTGliRFRwbSBpbnN0YW5jZS4NCj4gDQo+IFRoYW5rcywNCj4gQmluDQo+IA0KPiBGcm9t OiBZYW8sIEppZXdlbg0KPiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9A aW50ZWwuY29tPj4NCj4gU2VudDogU2F0dXJkYXksIE5vdmVtYmVyIDEwLCAyMDE4IDg6MTggQU0N Cj4gVG86IENvaGVuLCBFdWdlbmUNCj4gPGV1Z2VuZUBocC5jb208bWFpbHRvOmV1Z2VuZUBocC5j b20+PjsgZWRrMi0NCj4gZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3Rz LjAxLm9yZz47DQo+IFpoYW5nLCBDaGFvIEINCj4gPGNoYW8uYi56aGFuZ0BpbnRlbC5jb208bWFp bHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb20+Pg0KPiBDYzogQmluLCBTdW5nLVVrICjruYjshLHs mrEpIDxzdW5ndWstDQo+IGJpbkBocC5jb208bWFpbHRvOnN1bmd1ay1iaW5AaHAuY29tPj47IENo YWUsIE1hdHRoZXcNCj4gPG1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1hdHRoZXcuY2hhZUBo cC5jb20+Pg0KPiBTdWJqZWN0OiBSRTogW1JGQ10gVFBNIG5vbi1NTUlPIEFjY2Vzcw0KPiANCj4g SGkgRXVnZW5lDQo+IFRoZSBUcG1Jb0xpYiBwcm9wb3NhbCBpcyBzaW1pbGFyIHRvIHRoZSBleGlz dGluZw0KPiBUcG1EZXZpY2VMaWIuDQo+IFdlIGhhdmUgSTJDIFRQTSBpbnN0YW5jZSBhcyBleGFt cGxlLiBZb3UgbWF5IGNyZWF0ZQ0KPiBUcG0xMkRldmljZUxpYlhYWFNwaS4NCj4gDQo+IFBsZWFz ZSBsZXQgdXMga25vdyBpZiB0aGVyZSBpcyBhbnkgZ2FwIHRvIHN1cHBvcnQgeW91cg0KPiBub24t TU1JTyBkZXZpY2UuDQo+IA0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0KPiANCj4gDQo+IEZy b206IFlhbywgSmlld2VuDQo+IFNlbnQ6IFNhdHVyZGF5LCBOb3ZlbWJlciAxMCwgMjAxOCA3OjEy IEFNDQo+IFRvOiAnQ29oZW4sIEV1Z2VuZScNCj4gPGV1Z2VuZUBocC5jb208bWFpbHRvOmV1Z2Vu ZUBocC5jb20+PjsgZWRrMi0NCj4gZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVs QGxpc3RzLjAxLm9yZz47DQo+IFpoYW5nLCBDaGFvIEINCj4gPGNoYW8uYi56aGFuZ0BpbnRlbC5j b208bWFpbHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb20+Pg0KPiBDYzogQmluLCBTdW5nLVVrICjr uYjshLHsmrEpIDxzdW5ndWstDQo+IGJpbkBocC5jb208bWFpbHRvOnN1bmd1ay1iaW5AaHAuY29t Pj47IENoYWUsIE1hdHRoZXcNCj4gPG1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1hdHRoZXcu Y2hhZUBocC5jb20+Pg0KPiBTdWJqZWN0OiBSRTogW1JGQ10gVFBNIG5vbi1NTUlPIEFjY2Vzcw0K PiANCj4gSGkgRXVnZW5lDQo+IENvbXBsZXRlIGFncmVlLg0KPiANCj4gDQo+IDEpICAgICAgIHBs ZWFzZSBpZ25vcmUgVHBtQ29tbUxpYi4gSXQgaXMgZGVwcmVjYXRlZC4g4pi6DQo+IA0KPiANCj4g MikgICAgICAgd2UgZGlkIG5vdGljZSB0aGVyZSBpcyBub24tTU1JTyBUUE0gZGV2aWNlDQo+IGJl Zm9yZSBhbmQgYWJzdHJhY3QgdGhlIGRldmljZSBhY2Nlc3MgdmlhIFRwbTJEZXZpY2VMaWINCj4g YW5kIFRwbTEyRGV2aWNlTGliIGxpYnJhcnkgY2xhc3MuIFRoZSBUcG0yRGV2aWNlTGliRFRwbQ0K PiBhbmQgVHBtMTJEZXZpY2VMaWJEVHBtIGFyZSB0aGUgbGlicmFyeSBpbnN0YW5jZSBmb3INCj4g TU1JTyBUSVMgYWNjZXNzLg0KPiANCj4gV2UgZG8gaGF2ZSBvdGhlciBpbnN0YW5jZSBzdWNoIGFz DQo+IFF1YXJrUGxhdGZvcm1Qa2dcTGlicmFyeVxUcG0xMkRldmljZUxpYkF0bWVsSTJjIG9yDQo+ IFF1YXJrUGxhdGZvcm1Qa2dcTGlicmFyeVxUcG0xMkRldmljZUxpYkluZmluZW9uSTJjLg0KPiAN Cj4gDQo+IDMpICAgICAgIFRjZzJDb25maWcgaXMgYWxzbyBhIFRQTSBkZXZpY2Ugb3JpZW50ZWQN Cj4gZHJpdmVyLiBJdCBpcyBvcHRpb25hbC4NCj4gWW91IG1heSB3YW50IHRvIHRha2UgYSBsb29r IGF0DQo+IFF1YXJrUGxhdGZvcm1Qa2dcUXVhcmsuZHNjIHRvIHNlZSBkaWZmZXJlbnQgVFBNIGRl dmljZQ0KPiBpcyBjaG9zZW4uDQo+IA0KPiAgICMNCj4gICAjIFRQTSAxLjIgSGFyZHdhcmUuICBP cHRpb25zIGFyZSBbTk9ORSwgTFBDLA0KPiBBVE1FTF9JMkMsIElORklORU9OX0kyQ10NCj4gICAj DQo+ICAgREVGSU5FIFRQTV8xMl9IQVJEV0FSRSAgICAgID0gTk9ORQ0KPiANCj4gVGhhbmsgeW91 DQo+IFlhbyBKaWV3ZW4NCj4gDQo+IEZyb206IENvaGVuLCBFdWdlbmUgW21haWx0bzpldWdlbmVA aHAuY29tXQ0KPiBTZW50OiBTYXR1cmRheSwgTm92ZW1iZXIgMTAsIDIwMTggNjozOCBBTQ0KPiBU bzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItDQo+IGRldmVsQGxpc3RzLjAx Lm9yZz47IFpoYW5nLCBDaGFvIEINCj4gPGNoYW8uYi56aGFuZ0BpbnRlbC5jb208bWFpbHRvOmNo YW8uYi56aGFuZ0BpbnRlbC5jb20+Pg0KPiA7IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGlu dGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+Pg0KPiBDYzogQmluLCBTdW5nLVVr ICjruYjshLHsmrEpIDxzdW5ndWstDQo+IGJpbkBocC5jb208bWFpbHRvOnN1bmd1ay1iaW5AaHAu Y29tPj47IENoYWUsIE1hdHRoZXcNCj4gPG1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1hdHRo ZXcuY2hhZUBocC5jb20+Pg0KPiBTdWJqZWN0OiBbUkZDXSBUUE0gbm9uLU1NSU8gQWNjZXNzDQo+ IA0KPiBEZWFyIFNlY3VyaXR5UGtnIG1haW50YWluZXJzLA0KPiANCj4gV2UgYXJlIHRyeWluZyB0 byB1c2UgdGhlIFNlY3VyaXR5UGtnIFRQTSBzdXBwb3J0DQo+IChUY2cyQ29uZmlnLCBUcG0yRGV2 aWNlTGliRFRwbSwgZXRjKSBhbmQgc2VlIHRoYXQNCj4gYWNjZXNzIHRvIHRoZSBUUE0gYXJlIHVz aW5nIHRoZSBNTUlPIHJvdXRpbmVzIHN1Y2ggYXMNCj4gTW1pb1JlYWQ4KCkuDQo+IA0KPiBOb3Qg YWxsIHBsYXRmb3JtcyBzdXBwb3J0IG1lbW9yeS1tYXBwZWQgYWNjZXNzIHRvIHRoZQ0KPiBUUE0g c28gd2Ugd291bGQgbGlrZSB0byBwcm9wb3NlIHRoYXQgd2UgY3JlYXRlIGENCj4gbGlicmFyeSB0 byBhYnN0cmFjdCB0aGUgVFBNIGFjY2VzcywgY2FsbGVkIHRoZQ0KPiBUcG1Jb0xpYi4gIE9uZSBp bnN0YW5jZSBvZiB0aGUgbGlicmFyeSB3b3VsZCBwcm92aWRlDQo+IHRoZSBNbWlvIChUcG1Jb0xp Yk1taW8pIG1ldGhvZCBidXQgb3RoZXJzIGNhbiB1c2UNCj4gcHJvdG9jb2xzIGxpa2UgU1BJIChU cG1Jb0xpYlNwaSkuDQo+IA0KPiBCZWZvcmUgc3RhcnRpbmcgdGhpcyB3b3JrIEkgd2FudGVkIHRv IGNoZWNrIGlmIHlvdQ0KPiBhZ3JlZSB3aXRoIHRoZSBhcHByb2FjaCBvZiByZXBsYWNpbmcgdGhl IE1taW8gY2FsbHMNCj4gd2l0aCBuZXcgVHBtSW9MaWIgb25lcy4gIFdlIGNhbiB1cHN0cmVhbSB0 aGUgbGlicmFyeQ0KPiBoZWFkZXIgYW5kIG1taW8gbGlicmFyeSBpbnN0YW5jZSAob3IgeW91IGNv dWxkIGRvIHRoZQ0KPiB3b3JrIGlmIHlvdSB0aGluayBpdCB3b3VsZCBiZSBlYXNpZXIgZm9yIHlv dSkuDQo+IA0KPiBJIGNvdW50ZWQgdXAgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgb2YgdW5pcXVl IE1NSU8NCj4gY2FsbHMgaW4gdGhlIFRQTSBsaWJyYXJpZXMgYW5kIGdvdA0KPiANCj4gTGlicmFy eS9UcG1Db21tTGliL1Rpc1BjLmM6Nw0KPiBMaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJU aXMuYzoxMw0KPiBMaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJQdHAuYzoyOQ0KPiBMaWJy YXJ5L1RwbTEyRGV2aWNlTGliRFRwbS9UcG0xMlRpcy5jOjE2DQo+IA0KPiBQbGVhc2UgbGV0IG1l IGtub3cgaWYgdGhpcyB3b3JrcyBmb3IgeW91IGFuZCBob3cgeW91J2QNCj4gbGlrZSB0byBzdHJ1 Y3R1cmUgdGhlIGNoYW5nZS4NCj4gDQo+IFRoYW5rcywNCj4gDQo+IEV1Z2VuZQ0KPiANCj4gDQo+ IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N Cj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4g aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=