From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (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 5B98E2118FF02 for ; Tue, 13 Nov 2018 14:57:38 -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 orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2018 14:57:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,230,1539673200"; d="scan'208";a="107828122" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga001.fm.intel.com with ESMTP; 13 Nov 2018 14:57:37 -0800 Received: from orsmsx152.amr.corp.intel.com (10.22.226.39) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 13 Nov 2018 14:57:37 -0800 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.125]) by ORSMSX152.amr.corp.intel.com ([169.254.8.87]) with mapi id 14.03.0415.000; Tue, 13 Nov 2018 14:57:36 -0800 From: "Kinney, Michael D" To: "Cohen, Eugene" , "edk2-devel@lists.01.org" , "Yao, Jiewen" , "Zhang, Chao B" , "Kinney, Michael D" CC: "Bin, Sung-Uk (???)" Thread-Topic: [PATCH 3/4] SecurityPkg: add TpmIoLibMmio instance Thread-Index: AdR7nYTa2kHXzqxsRUyIavAWgtxLkAABiLTg Date: Tue, 13 Nov 2018 22:57:36 +0000 Message-ID: References: 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.138] MIME-Version: 1.0 Subject: Re: [PATCH 3/4] SecurityPkg: add TpmIoLibMmio instance 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: Tue, 13 Nov 2018 22:57:38 -0000 Content-Language: en-US Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 RXVnZW5lLA0KDQpJdCBhcHBlYXJzIHlvdSBhcmUgZXhwZWN0aW5nIHRoZSBBZGRyZXNzIHBhcmFt ZXRlcg0KdG8gYmUgdGhlIGZ1bGwgTU1JTyBhZGRyZXNzIGZvciBEVFBNLiAgSWYgeW91IGFyZQ0K d2FudGluZyB0aGlzIGxpYiBjbGFzcyB0byBhYnN0cmFjdCB0aGUgYWNjZXNzIGZvcg0KZGlmZmVy ZW50IGJ1cyB0eXBlcywgc2hvdWxkbqGvdCB0aGUgQWRkcmVzcyBiZSB0aGUNCnJlbGF0aXZlIGFk ZHJlc3MgZnJvbSBhIGJhc2U/DQoNCk9yIGFyZSB5b3UgdXNpbmcgdGhlIGZ1bGwgRFRQTSBNTUlP IGFkZHJlc3Mgb24gDQpwdXJwb3NlIGFuZCB5b3UgZXhwZWN0IG5vbiBEVFBNIE1NSU8gaW1wbGVt ZW50YXRpb25zDQp0byB0cmFuc2xhdGUgZnJvbSB0aGUgRFRQTSBNTUlPIGFkZHJlc3MgdG8gdGhl DQplcXVpdmFsZW50IHJlZ2lzdGVyIGFjY2VzcyBpbiBvbiBhbiBhbHRlcm5hdGUgYnVzDQp0eXBl Pw0KDQpXb3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8gaGF2ZSBhbiBhYnN0cmFjdGlvbiBmb3INCmRp ZmZlcmVudCBUUE0gcmVnaXN0ZXJzIGFuZCB0aGUgRFRQTSBpbXBsZW1lbnRhdGlvbg0Kd291bGQg Y29udmVydCB0byBhIGZ1bGwgTU1JTyBhZGRyZXNzIGluIHRoZSBsaWINCmltcGxlbWVudGF0aW9u Pw0KDQpUaGFua3MsDQoNCk1pa2UNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLQ0KPiBib3VuY2VzQGxpc3RzLjAx Lm9yZ10gT24gQmVoYWxmIE9mIENvaGVuLCBFdWdlbmUNCj4gU2VudDogVHVlc2RheSwgTm92ZW1i ZXIgMTMsIDIwMTggMjoxMyBQTQ0KPiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFlhbywg Smlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFpoYW5nLCBDaGFvIEINCj4gPGNoYW8u Yi56aGFuZ0BpbnRlbC5jb20+DQo+IENjOiBCaW4sIFN1bmctVWsgKLrzvLq/7SkgPHN1bmd1ay1i aW5AaHAuY29tPg0KPiBTdWJqZWN0OiBbZWRrMl0gW1BBVENIIDMvNF0gU2VjdXJpdHlQa2c6IGFk ZA0KPiBUcG1Jb0xpYk1taW8gaW5zdGFuY2UNCj4gDQo+IFNlY3VyaXR5UGtnOiBhZGQgVHBtSW9M aWJNbWlvIGluc3RhbmNlDQo+IA0KPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRy aWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IENjOiBDaGFvIFpoYW5nIDxjaGFvLmIuemhhbmdAaW50 ZWwuY29tPg0KPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IFNpZ25l ZC1vZmYtYnk6IEV1Z2VuZSBDb2hlbiA8ZXVnZW5lQGhwLmNvbT4NCj4gLS0tDQo+ICBTZWN1cml0 eVBrZy9MaWJyYXJ5L1RwbUlvTGliTW1pby9UcG1Jb0xpYk1taW8uYyAgIHwNCj4gMjIxICsrKysr KysrKysrKysrKysrKysrDQo+ICBTZWN1cml0eVBrZy9MaWJyYXJ5L1RwbUlvTGliTW1pby9UcG1J b0xpYk1taW8uaW5mIHwNCj4gNDEgKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNjIgaW5zZXJ0 aW9ucygrKQ0KPiANCj4gZGlmZiAtLWdpdA0KPiBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtSW9M aWJNbWlvL1RwbUlvTGliTW1pby5jDQo+IGIvU2VjdXJpdHlQa2cvTGlicmFyeS9UcG1Jb0xpYk1t aW8vVHBtSW9MaWJNbWlvLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MC4uNTZmMzE4Nw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkv VHBtSW9MaWJNbWlvL1RwbUlvTGliTW1pby5jDQo+IEBAIC0wLDAgKzEsMjIxIEBADQo+ICsvKiog QGZpbGUNCj4gKyAgVGhpcyBsaWJyYXJ5IGlzIHRvIGFic3RyYWN0IFRQTTIgcmVnaXN0ZXIgYWNj ZXNzZXMNCj4gc28gdGhhdCBhIGNvbW1vbg0KPiArICBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZm9y IG11bHRpcGxlIHVuZGVybHlpbmcgYnVzc2VzDQo+IHN1Y2ggYXMgVFBNLA0KPiArICBTUEksIG9y IEkyQyBhY2Nlc3MuDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAxOCBIUCBEZXZlbG9wbWVudCBD b21wYW55LCBMLlAuDQo+ICtUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ICthcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQNCj4gY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gK3doaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZg0KPiB0aGUgbGljZW5zZSBtYXkg YmUgZm91bmQgYXQNCj4gK2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5z ZS5waHANCj4gKw0KPiArVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFODQo+ICJBUyBJUyIgQkFTSVMsDQo+ICtXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELA0KPiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEJhc2UuaD4NCj4gKw0KPiArI2luY2x1 ZGUgPExpYnJhcnkvVHBtSW9MaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ ICsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgUmVhZHMgYW4gOC1iaXQgVFBNIHJlZ2lzdGVyLg0K PiArDQo+ICsgIFJlYWRzIHRoZSA4LWJpdCBUUE0gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJl c3MuDQo+IFRoZSA4LWJpdCByZWFkIHZhbHVlIGlzDQo+ICsgIHJldHVybmVkLiBUaGlzIGZ1bmN0 aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIFRQTQ0KPiByZWFkIGFuZCB3cml0ZQ0KPiArICBv cGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIElmIDgtYml0IFRQTSByZWdpc3Rl ciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLA0KPiB0aGVuIEFTU0VSVCgpLg0KPiArDQo+ ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgVFBNIHJlZ2lzdGVyIHRvIHJlYWQuDQo+ICsNCj4gKyAg QHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gKw0KPiArKiovDQo+ICtVSU5UOA0KPiArRUZJQVBJ DQo+ICtUcG1SZWFkOCAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBB ZGRyZXNzDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIE1taW9SZWFkOCAoQWRkcmVzcyk7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBXcml0ZXMgYW4gOC1iaXQgVFBNIHJlZ2lzdGVyLg0KPiAr DQo+ICsgIFdyaXRlcyB0aGUgOC1iaXQgVFBNIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNz DQo+IHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZA0KPiArICBieSBWYWx1ZSBhbmQgcmV0dXJucyBW YWx1ZS4gVGhpcyBmdW5jdGlvbiBtdXN0DQo+IGd1YXJhbnRlZSB0aGF0IGFsbCBUUE0gcmVhZA0K PiArICBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArICBJZiA4 LWJpdCBUUE0gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhlbiBB U1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIFRQTSByZWdpc3RlciB0byB3 cml0ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgVFBN DQo+IHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiAr VUlOVDgNCj4gK0VGSUFQSQ0KPiArVHBtV3JpdGU4ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDggICAgICAgICAgICAg ICAgICAgICBWYWx1ZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBNbWlvV3JpdGU4IChBZGRy ZXNzLCBWYWx1ZSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgMTYtYml0 IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgMTYtYml0IFRQTSByZWdpc3RlciBz cGVjaWZpZWQgYnkgQWRkcmVzcy4NCj4gVGhlIDE2LWJpdCByZWFkIHZhbHVlIGlzDQo+ICsgIHJl dHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIFRQTQ0KPiByZWFk IGFuZCB3cml0ZQ0KPiArICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIElm IDE2LWJpdCBUUE0gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhl biBBU1NFUlQoKS4NCj4gKyAgSWYgQWRkcmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdCBi b3VuZGFyeSwgdGhlbg0KPiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhl IFRQTSByZWdpc3RlciB0byByZWFkLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQu DQo+ICsNCj4gKyoqLw0KPiArVUlOVDE2DQo+ICtFRklBUEkNCj4gK1RwbVJlYWQxNiAoDQo+ICsg IElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzDQo+ICsgICkNCj4gK3sN Cj4gKyAgcmV0dXJuIE1taW9SZWFkMTYgKEFkZHJlc3MpOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8q Kg0KPiArICBXcml0ZXMgYSAxNi1iaXQgVFBNIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFdyaXRlcyB0 aGUgMTYtYml0IFRQTSByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcw0KPiB3aXRoIHRoZSB2 YWx1ZSBzcGVjaWZpZWQNCj4gKyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMgZnVu Y3Rpb24gbXVzdA0KPiBndWFyYW50ZWUgdGhhdCBhbGwgVFBNIHJlYWQNCj4gKyAgYW5kIHdyaXRl IG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgSWYgMTYtYml0IFRQTSByZWdp c3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLA0KPiB0aGVuIEFTU0VSVCgpLg0KPiAr ICBJZiBBZGRyZXNzIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0IGJvdW5kYXJ5LCB0aGVuDQo+ IEFTU0VSVCgpLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgVFBNIHJlZ2lzdGVyIHRv IHdyaXRlLg0KPiArICBAcGFyYW0gIFZhbHVlICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBU UE0NCj4gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBWYWx1ZS4NCj4gKw0KPiArKiovDQo+ ICtVSU5UMTYNCj4gK0VGSUFQSQ0KPiArVHBtV3JpdGUxNiAoDQo+ICsgIElOICAgICAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLA0KPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgVmFsdWUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gTW1pb1dyaXRlMTYg KEFkZHJlc3MsIFZhbHVlKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgMzItYml0 IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgMzItYml0IFRQTSByZWdpc3RlciBz cGVjaWZpZWQgYnkgQWRkcmVzcy4NCj4gVGhlIDMyLWJpdCByZWFkIHZhbHVlIGlzDQo+ICsgIHJl dHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIFRQTQ0KPiByZWFk IGFuZCB3cml0ZQ0KPiArICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIElm IDMyLWJpdCBUUE0gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhl biBBU1NFUlQoKS4NCj4gKyAgSWYgQWRkcmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDMyLWJpdCBi b3VuZGFyeSwgdGhlbg0KPiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhl IFRQTSByZWdpc3RlciB0byByZWFkLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQu DQo+ICsNCj4gKyoqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK1RwbVJlYWQzMiAoDQo+ICsg IElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzDQo+ICsgICkNCj4gK3sN Cj4gKyAgcmV0dXJuIE1taW9SZWFkMzIgKEFkZHJlc3MpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4g KyAgV3JpdGVzIGEgMzItYml0IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArICBXcml0ZXMgdGhlIDMy LWJpdCBUUE0gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MNCj4gd2l0aCB0aGUgdmFsdWUg c3BlY2lmaWVkDQo+ICsgIGJ5IFZhbHVlIGFuZCByZXR1cm5zIFZhbHVlLiBUaGlzIGZ1bmN0aW9u IG11c3QNCj4gZ3VhcmFudGVlIHRoYXQgYWxsIFRQTSByZWFkDQo+ICsgIGFuZCB3cml0ZSBvcGVy YXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIElmIDMyLWJpdCBUUE0gcmVnaXN0ZXIg b3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhlbiBBU1NFUlQoKS4NCj4gKyAgSWYg QWRkcmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDMyLWJpdCBib3VuZGFyeSwgdGhlbg0KPiBBU1NF UlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIFRQTSByZWdpc3RlciB0byB3cml0 ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgVFBNDQo+ IHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiArVUlO VDMyDQo+ICtFRklBUEkNCj4gK1RwbVdyaXRlMzIgKA0KPiArICBJTiAgICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgIFZhbHVlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIE1taW9Xcml0ZTMyIChBZGRy ZXNzLCBWYWx1ZSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgNjQtYml0 IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgNjQtYml0IFRQTSByZWdpc3RlciBz cGVjaWZpZWQgYnkgQWRkcmVzcy4NCj4gVGhlIDY0LWJpdCByZWFkIHZhbHVlIGlzDQo+ICsgIHJl dHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIFRQTQ0KPiByZWFk IGFuZCB3cml0ZQ0KPiArICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIElm IDY0LWJpdCBUUE0gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhl biBBU1NFUlQoKS4NCj4gKyAgSWYgQWRkcmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDY0LWJpdCBi b3VuZGFyeSwgdGhlbg0KPiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhl IFRQTSByZWdpc3RlciB0byByZWFkLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQu DQo+ICsNCj4gKyoqLw0KPiArVUlOVDY0DQo+ICtFRklBUEkNCj4gK1RwbVJlYWQ2NCAoDQo+ICsg IElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzDQo+ICsgICkNCj4gK3sN Cj4gKyAgcmV0dXJuIE1taW9SZWFkNjQgKEFkZHJlc3MpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4g KyAgV3JpdGVzIGEgNjQtYml0IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArICBXcml0ZXMgdGhlIDY0 LWJpdCBUUE0gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MNCj4gd2l0aCB0aGUgdmFsdWUg c3BlY2lmaWVkDQo+ICsgIGJ5IFZhbHVlIGFuZCByZXR1cm5zIFZhbHVlLiBUaGlzIGZ1bmN0aW9u IG11c3QNCj4gZ3VhcmFudGVlIHRoYXQgYWxsIFRQTSByZWFkDQo+ICsgIGFuZCB3cml0ZSBvcGVy YXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIElmIDY0LWJpdCBUUE0gcmVnaXN0ZXIg b3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhlbiBBU1NFUlQoKS4NCj4gKyAgSWYg QWRkcmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDY0LWJpdCBib3VuZGFyeSwgdGhlbg0KPiBBU1NF UlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIFRQTSByZWdpc3RlciB0byB3cml0 ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgVFBNDQo+ IHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ2NA0KPiArRUZJQVBJDQo+ICtUcG1Xcml0 ZTY0ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiArICApDQo+ICt7 DQo+ICsgIHJldHVybiBNbWlvV3JpdGU2NCAoQWRkcmVzcywgVmFsdWUpOw0KPiArfQ0KPiBkaWZm IC0tZ2l0DQo+IGEvU2VjdXJpdHlQa2cvTGlicmFyeS9UcG1Jb0xpYk1taW8vVHBtSW9MaWJNbWlv LmluZg0KPiBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtSW9MaWJNbWlvL1RwbUlvTGliTW1pby5p bmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uYTQwZjkwZQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtSW9MaWJNbWlvL1Rw bUlvTGliTW1pby5pbmYNCj4gQEAgLTAsMCArMSw0MSBAQA0KPiArIyMgQGZpbGUNCj4gKyMgIFBy b3ZpZGVzIEJhc2VDcnlwdG8gU0hBMSBoYXNoIHNlcnZpY2UNCj4gKyMNCj4gKyMgIFRoaXMgbGli cmFyeSBpcyB0byBhYnN0cmFjdCBUUE0yIHJlZ2lzdGVyIGFjY2Vzc2VzDQo+IHNvIHRoYXQgYSBj b21tb24NCj4gKyMgIGludGVyZmFjZSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgdW5kZXJseWlu Zw0KPiBidXNzZXMgc3VjaCBhcyBUUE0sDQo+ICsjICBTUEksIG9yIEkyQyBhY2Nlc3MuDQo+ICsj DQo+ICsjIENvcHlyaWdodCAoYykgMjAxOCBIUCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuDQo+ ICsjIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kDQo+IGNvbmRp dGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0DQo+IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KPiArIyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsjIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTg0K PiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELA0KPiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIw0K PiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMDUNCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0g VHBtSW9MaWJNbWlvDQo+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IEI1MURF MEM2LThBNDgtNEFGOS0NCj4gQkY4OC01QTQ2Q0M4NTNGQzgNCj4gKyAgTU9EVUxFX1RZUEUgICAg ICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAg ICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gTlVMTA0KPiAr DQo+ICsjDQo+ICsjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBv bmx5IGFuZA0KPiBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1aWxkIHRvb2xzLg0KPiArIw0KPiArIyAg VkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NCBBUk0NCj4gQUFSQ0g2NA0K PiArIw0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgVHBtSW9MaWJNbWlvLmMNCj4gKw0KPiArW1Bh Y2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTZWN1cml0eVBrZy9TZWN1cml0 eVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBCYXNlTGliDQo+ICsgIElv TGliDQo+IC0tDQo+IDIuNy40DQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0KPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiBlZGsyLWRldmVs QGxpc3RzLjAxLm9yZw0KPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Vk azItZGV2ZWwNCg==