From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 5CA9D21A0BA9B for ; Thu, 11 May 2017 18:36:08 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP; 11 May 2017 18:36:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.38,327,1491289200"; d="scan'208,217";a="86619190" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga004.jf.intel.com with ESMTP; 11 May 2017 18:36:07 -0700 Received: from fmsmsx101.amr.corp.intel.com (10.18.124.199) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 11 May 2017 18:36:07 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx101.amr.corp.intel.com (10.18.124.199) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 11 May 2017 18:36:06 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.246]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.117]) with mapi id 14.03.0319.002; Fri, 12 May 2017 09:36:04 +0800 From: "Yao, Jiewen" To: "Justen, Jordan L" , "edk2-devel@lists.01.org" CC: "Ni, Ruiyu" , Leo Duran , "Ard Biesheuvel" , Brijesh Singh , Laszlo Ersek Thread-Topic: [edk2] [PATCH V5 0/3] Add IOMMU support. Thread-Index: AQHSxPRWY7XrYfhXzE6vqsb9Ti0UDqHvIMYAgADFY7A= Date: Fri, 12 May 2017 01:36:03 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A94B865@shsmsx102.ccr.corp.intel.com> References: <1493915561-8500-1-git-send-email-jiewen.yao@intel.com> <149453590475.11137.7455318344529362497@jljusten-skl.jf.intel.com> In-Reply-To: <149453590475.11137.7455318344529362497@jljusten-skl.jf.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [PATCH V5 0/3] Add IOMMU support. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 May 2017 01:36:08 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 R29vZCBxdWVzdGlvbi4NCg0KQ29tbWVudHMgYmVsb3c6DQoNCkZyb206IEp1c3RlbiwgSm9yZGFu IEwNClNlbnQ6IEZyaWRheSwgTWF5IDEyLCAyMDE3IDQ6NTIgQU0NClRvOiBZYW8sIEppZXdlbiA8 amlld2VuLnlhb0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KQ2M6IE5pLCBS dWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgTGVvIER1cmFuIDxsZW8uZHVyYW5AYW1kLmNvbT47 IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgQnJpamVzaCBTaW5n aCA8YnJpamVzaC5zaW5naEBhbWQuY29tPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNv bT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIFY1IDAvM10gQWRkIElPTU1VIHN1cHBvcnQu DQoNClRoaXMgZGVzaWduIHNlZW1zIHRvIGZvcmNlIGEgcGxhdGZvcm0gdGhlIHVzZSBBUFJJT1JJ IHRvIHByb3ZpZGUgdGhlDQpJb01tdSBwcm90b2NvbC4gSXNuJ3QgdGhpcyBzb21ldGhpbmcgd2Ug dHJ5IHRvIGF2b2lkPw0KW0ppZXdlbl0gSSBhbSBjb25mdXNlZC4gVGhpcyBkZXNpZ24gZG9lcyBu b3QgZm9yY2UgYSBwbGF0Zm9ybSB1c2luZyBBUFJJT1JJLg0KSSBhc3N1bWUgeW91IGFyZSB0YWxr aW5nIFBjaUhvc3RCcmlkZ2UgZHJpdmVyIGltcGxlbWVudGF0aW9uLg0KDQpXZSB1c2VkIHByb3Rv Y29sIGNhbGxiYWNrIGZvciBJT01NVSBwcm90b2NvbCBpbiBQQ0kgSG9zdEJyaWRnZSBkcml2ZXIu DQpGb3IgUGNpSG9zdEJyaWRnZSBkcml2ZXIsIElPTU1VIGNhbiBiZSBkaXNwYXRjaGVkIGJlZm9y ZSBvciBhZnRlciBQY2lIb3N0QnJpZGdlIGRyaXZlci4NCg0KRm9yIFBjaUJ1cyBkcml2ZXIsIGl0 IGlzIGEgZHJpdmVyIG1vZGVsIGRyaXZlciwgU3RhcnQoKSBmdW5jdGlvbiBpcyBjYWxsZWQgYnkg QkRTLg0KSU9NTVUgaXMgaW5zdGFsbGVkIGluIERYRSBwaGFzZS4gSU9NTVUgaXMgaW5zdGFsbGVk IGJlZm9yZSBQY2kuU3RhcnQoKS4NCg0KRm9yIFg4NiBWVGQgSU9NTVUgcGxhdGZvcm0sIHdlIG5l ZWQgUENJIGJ1cyBkcml2ZXIgb3IgaG9zdCBicmlkZ2UgZHJpdmVyIGNhbGxzIElPTU1VIGluIEJE Uy4NClRoYXQgaXMgZW5vdWdoLiBXZSBkbyBub3QgbmVlZCBBUFJJT1JJLg0KDQoNCklmIGEgcGxh dGZvcm0gd2FudHMgdG8gZGlzcGF0Y2ggSU9NTVUgZWFybGllciwgdGhhdCBpcyBPSy4NCkJ1dCB0 aGF0IGlzIHRoZSBwbGF0Zm9ybSBjaG9pY2UsIG5vdCBlbmZvcmNlbWVudC4NCg0KDQpPbiB0aGUg b3RoZXIgaGFuZCwgZW5mb3JjaW5nIElPTU1VIGRlcGVuZGVuY3kgbWVhbnMgYW55IHBsYXRmb3Jt IE1VU1QgYWRkIGEgbmV3IElPTU1VIGRyaXZlciwNCmlmIHRoaXMgcGxhdGZvcm0gaXMgdXNpbmcg dGhlIG9wZW4gc291cmNlIFBjaUhvc3RCcmlkZ2UgZHJpdmVyLg0KVGhhdCBpcyB0aGUgbWFpbiBy ZWFzb24sIEkgZGlkIG5vdCB3YW50IHRvIGZvcmNlIElPTU1VIGRlcGVuZGVuY3kuDQpJIGRvIG5v dCB3YW50IHRvIGJyaW5nIGFuIGluY29tcGF0aWJsZSBjaGFuZ2UgZm9yIGV4aXN0aW5nIHBsYXRm b3JtLg0KDQoNCg0KDQpPbmUgdGhvdWdodCBpcyB0aGF0IHRoZSBQY2lIb3N0QnJpZGdlIGRyaXZl ciBjb3VsZCBhZGQgYSBkZXBleCBvbg0KSW9NbXUgcHJvdG9jb2wgY29uZGl0aW9uYWxseSBiYXNl ZCBvbiBhIGZlYXR1cmUgUENELCByaWdodD8NCg0KVW5mb3J0dW5hdGVseSwgaW4gdGhpcyBjYXNl IGl0IHNlZW1zIHRoYXQgdGhlIElvTW11IHByb3RvY29sIGlzDQppbnN0YWxsZWQgY29uZGl0aW9u YWxseSBhdCBydW50aW1lLg0KDQpPbmUgdGhvdWdodCBJIGhhZCB3YXMsIGNvdWxkIE9WTUYgc2V0 IHRoZSBQQ0QgdG8gZm9yY2UgYW4gSW9NbXUNCmRlcGVuZGVuY3ksIGFuZCB0aGVuIGluc3RhbGwg YSBuby1vcCBJb01tdSBwcm90b2NvbCBpbnN0YW5jZSBpZiBBTUQncw0KU0VWIGlzIG5vdCBkZXRl Y3RlZD8NCltKaWV3ZW5dIEFQUklPUkkgaXMgZGVmaW5lZCBieSBQSSBzcGVjaWZpY2F0aW9uIHZv bCAyIERYRSBDSVMgLSAxMC4zIFRoZSBBIFByaW9yaSBGaWxlDQo9PT09PT09PT09PT09PT09PT09 PQ0KVGhlIGEgcHJpb3JpIGZpbGUgcHJvdmlkZXMgYSBkZXRlcm1pbmlzdGljIGV4ZWN1dGlvbiBv cmRlciBvZiBEWEUgZHJpdmVycy4gRFhFIGRyaXZlcnMgdGhhdCBhcmUgZXhlY3V0ZWQgc29sZWx5 IGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY3kgZXhwcmVzc2lvbiBhcmUgd2Vha2x5IG9yZGVyZWQu IFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBjb21wbGV0ZWx5IGRl dGVybWluaXN0aWMgYmV0d2VlbiBib290cyBvciBiZXR3ZWVuIHBsYXRmb3Jtcy4gVGhlcmUgYXJl IGNhc2VzIHdoZXJlIGEgZGV0ZXJtaW5pc3RpYyBleGVjdXRpb24gb3JkZXIgaXMgcmVxdWlyZWQu DQrigKbigKYNClRoZSBtYWluIHB1cnBvc2Ugb2YgdGhlIGEgcHJpb3JpIGZpbGUgaXMgdG8gcHJv dmlkZSBhIGdyZWF0ZXIgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBkZXNp Z24gb2YgYSBwbGF0Zm9ybS4NCj09PT09PT09PT09PT09PT09PT09DQpUaGlzIGlzIGluZHVzdHJ5 IHN0YW5kYXJkLiBBbmQgdGhpcyBpcyB0aGUgcGxhdGZvcm0gY2hvaWNlLg0KDQpMb29raW5nIGF0 IEVES0lJLCB3ZSBhcmUgYWxyZWFkeSB1c2luZyB0aGF0Og0KICBDOlxob21lXEVkay1JSVxPdm1m UGtnXE92bWZQa2dJYTMyLmZkZigxNDkpOkFQUklPUkkgUEVJIHsNCiAgQzpcaG9tZVxFZGstSUlc T3ZtZlBrZ1xPdm1mUGtnSWEzMi5mZGYoMTkwKTpBUFJJT1JJIERYRSB7DQogIEM6XGhvbWVcRWRr LUlJXE92bWZQa2dcT3ZtZlBrZ0lhMzJYNjQuZmRmKDE0OSk6QVBSSU9SSSBQRUkgew0KICBDOlxo b21lXEVkay1JSVxPdm1mUGtnXE92bWZQa2dJYTMyWDY0LmZkZigxOTApOkFQUklPUkkgRFhFIHsN CiAgQzpcaG9tZVxFZGstSUlcT3ZtZlBrZ1xPdm1mUGtnWDY0LmZkZigxNDkpOkFQUklPUkkgUEVJ IHsNCiAgQzpcaG9tZVxFZGstSUlcT3ZtZlBrZ1xPdm1mUGtnWDY0LmZkZigxOTApOkFQUklPUkkg RFhFIHsNCiAgQzpcaG9tZVxFZGstSUlcUXVhcmtQbGF0Zm9ybVBrZ1xRdWFyay5mZGYoMzA2KTpB UFJJT1JJIFBFSSB7DQogIEM6XGhvbWVcRWRrLUlJXFF1YXJrUGxhdGZvcm1Qa2dcUXVhcmtNaW4u ZmRmKDMwNik6QVBSSU9SSSBQRUkgew0KICBDOlxob21lXEVkay1JSVxWbHYyVGJsdERldmljZVBr Z1xQbGF0Zm9ybVBrZy5mZGYoNDQxKTpBUFJJT1JJIERYRSB7DQogIEM6XGhvbWVcRWRrLUlJXFZs djJUYmx0RGV2aWNlUGtnXFBsYXRmb3JtUGtnR2NjLmZkZigzOTgpOkFQUklPUkkgRFhFIHsNCiAg QzpcaG9tZVxFZGtJSUdpdFxlZGsyXE50MzJQa2dcTnQzMlBrZy5mZGYoMTY0KTpBUFJJT1JJIFBF SSB7DQogIEM6XGhvbWVcRWRrSUlHaXRcZWRrMlxOdDMyUGtnXE50MzJQa2cuZmRmKDE3MCk6QVBS SU9SSSBEWEUgew0KVGhlIEFQUklPUkkgaXMgYWRkZWQgd2hlbiB0aGUgcGxhdGZvcm0gaXMgY3Jl YXRlZC4NCg0KQVBSSU9SSSBpcyBtdWNoIHNpbXBsZXIgdGhhbiBhIG5vLW9wIElPTU1VLCBmcm9t IG15IHBvaW50IG9mIHZpZXcuDQoNCkkgZG8gbm90IGhhdmUgY29uY2VybiBpZiBhIHBsYXRmb3Jt IHdhbnRzIHRvIHVzZSBkZXBlbmRlbmN5LiAoQWdhaW4sIHRoYXQgaXMgcGxhdGZvcm0gY2hvaWNl KQ0KQnV0IGF0IHNhbWUgdGltZSwgbWF5IEkga25vdyB3aGF0IGlzIHRoZSBjb25jZXJuIGlmIGEg cGxhdGZvcm0gd2FudHMgdG8gdXNlIEFQUklPUkk/DQoNCg0KDQoNCkFub3RoZXIgY29uY2VybiBJ IGhhdmUgaXMgdGhhdCB0aGUgSW9NbXUgcHJvdG9jb2wgY2F1c2VzIGJpZyBjaHVua3Mgb2YNCnRo ZSBQY2lIb3N0QnJpZGdlIE1hcC9Vbm1hcCBpbXBsZW1lbnRhdGlvbiB0byBiZSBza2lwcGVkLiBJ cyB0aGlzDQpwb3RlbnRpYWxseSBieXBhc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudD8NCltKaWV3 ZW5dIE5vLg0KDQoNCi1Kb3JkYW4NCg0KT24gMjAxNy0wNS0wNCAwOTozMjozOCwgSmlld2VuIFlh byB3cm90ZToNCj4gPT09PT09PT09PT09PT09PSBWNSA9PT09PT09PT09PT09PQ0KPiBNaW5vciB1 cGRhdGUgZnJvbSBWNC4NCj4NCj4gMSkgUmVtb3ZlIHVudXNlZCBTZXRBdHRyaWJ1dGUoKSBBUEkg aW4gSU9NTVUgcHJvdG9jb2wuDQo+IChGZWVkYmFjayBmcm9tIFJ1aXl1IGFuZCBBcmQpDQo+IDIp IFJlbmFtZSBTZXRNYXBwaW5nQXR0cmlidXRlKCkgdG8gU2V0QXR0cmlidXRlKCkuDQo+IChGZWVk YmFjayBmcm9tIFJ1aXl1KQ0KPiAzKSBGaXggdGhlIGJ1ZyBpbiBQY2lCdXMgZHJpdmVyIGZvciBP cGVyYXRpb24NCj4gKFRoYW5rcyB0byBBcmQgdG8gY2F0Y2ggaXQpDQo+DQo+IFY0Og0KPiBUZXN0 ZWQtYnk6IEJyaWplc2ggU2luZ2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbTxtYWlsdG86YnJpamVz aC5zaW5naEBhbWQuY29tPj4NCj4gV2l0aCB0aGUgaXNzdWUgaW4gMy8zIGFkZHJlc3NlZDoNCj4g VGVzdGVkLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZzxtYWls dG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4+DQo+DQo+ID09PT09PT09PT09PT09PT0gVjQg PT09PT09PT09PT09PT0NCj4gUmVmaW5lIHRoZSBFREtJSV9JT01NVV9QUk9UT0NPTC4NCj4NCj4g MSkgQWRkIEFsbG9jYXRlQnVmZmVyL0ZyZWVCdWZmZXIvTWFwL1VubWFwKCkgQVBJLg0KPiBUaGV5 IGFyZSBzaW1pbGFyIHRvIERtYUxpYiBpbiBFbWJlZGRlZFBrZyBhbmQNCj4gc2ltaWxhciB0byB0 aGUgcHJldmlvdXMgQm1EbWFMaWIgKGJ5IGxlby5kdXJhbkBhbWQuY29tPG1haWx0bzpsZW8uZHVy YW5AYW1kLmNvbT4pLg0KPg0KPiBUaGVzZSBBUElzIGFyZSBpbnZva2VkIGJ5IFBjaUhvc3RCcmlk Z2UgZHJpdmVyDQo+IHRvIGFsbG9jYXRlIERNQSBtZW1vcnkuDQo+DQo+IFRoZSBQY2lIb3N0QnJp ZGdlIGRyaXZlciAoSU9NTVUgY29uc3VtZXIpIGlzIHNpbXBsaWZpZWQ6DQo+IEl0IHVzZXMgSU9N TVUsIGlmIElPTU1VIHByb3RvY29sIGlzIHByZXNlbnQuDQo+IEVsc2UgaXQgdXNlcyBvcmlnaW5h bCBsb2dpYy4NCj4NCj4gMikgQWRkIFNldE1hcHBpbmdBdHRyaWJ1dGUoKSBBUEkuDQo+IEl0IGlz IHNpbWlsYXIgdG8gU2V0QXR0cmlidXRlKCkgQVBJIGluIFYxLg0KPg0KPiBUaGlzIEFQSSBpcyBp bnZva2VkIGJ5IFBjaUJ1cyBkcml2ZXIgdG8gc2V0IERNQQ0KPiBhY2Nlc3MgYXR0cmlidXRlIChy ZWFkL3dyaXRlKSBmb3IgZGV2aWNlLg0KPg0KPiBUaGUgUGNpQnVzIGRyaXZlciAoSU9NTVUgY29u c3VtZXIpIGlzIHNpbXBsaWZpZWQ6DQo+IEl0IHNldHMgYWNjZXNzIGF0dHJpYnV0ZSBpbiBNYXAv VW5tYXAsDQo+IGlmIElPTU1VIHByb3RvY29sIGlzIHByZXNlbnQuDQo+DQo+IDMpIFJlbW92ZSBT ZXRSZW1hcEFkZHJlc3MvR2V0UmVtYXBBZGRyZXNzKCkgQVBJLg0KPiBCZWNhdXNlIFBjaUhvc3RC cmlkZ2UvUGNpQnVzIGNhbiBjYWxsIHRoZSBBUElzIGRlZmluZWQNCj4gYWJvdmUsIHRoZXJlIGlz IG5vIG5lZWQgdG8gcHJvdmlkZSByZW1hcCBjYXBhYmlsaXR5Lg0KPg0KPiAtLSBTYW1wbGUgcHJv ZHVjZXIgZHJpdmVyczoNCj4gMSkgVGhlIHNhbXBsZSBWVGQgZHJpdmVyIChJT01NVSBwcm9kdWNl cikNCj4gaXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2p5YW8xL2VkazIvdHJlZS9kbWFfdjQvSW50 ZWxTaWxpY29uUGtnL0ludGVsVlRkRHhlDQo+DQo+IEl0IGlzIGFkZGVkIHRvIHNob3cgdGhlIGNv bmNlcHQuIEl0IGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZCB5ZXQuDQo+IEl0IHdpbGwgbm90IGJl IGNoZWNrZWQgaW4gaW4gdGhpcyBwYXRjaC4NCj4NCj4gMikgVGhlIHNhbXBsZSBBTUQgU0VWIGRy aXZlciAoSU9NTVUgcHJvZHVjZXIpDQo+IGlzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9qeWFvMS9l ZGsyL3RyZWUvZG1hX3Y0L0ludGVsU2lsaWNvblBrZy9TYW1wbGVBbWRTZXZEeGUNCj4gKGNvZGUg aXMgYm9ycm93ZWQgZnJvbSBsZW8uZHVyYW5AYW1kLmNvbTxtYWlsdG86bGVvLmR1cmFuQGFtZC5j b20+IGFuZCBicmlqZXNoLnNpbmdoQGFtZC5jb208bWFpbHRvOmJyaWplc2guc2luZ2hAYW1kLmNv bT4pDQo+DQo+IFRoaXMgaXMgbm90IGEgcmlnaHQgcGxhY2UgdG8gcHV0IHRoaXMgZHJpdmVyLg0K Pg0KPiBJdCBpcyBhZGRlZCB0byBzaG93IHRoZSBjb25jZXB0Lg0KPiBJdCBpcyBub3QgZnVsbHkg aW1wbGVtZW50ZWQuIEl0IHdpbGwgbm90IGJlIGNoZWNrZWQgaW4uDQo+IFBsZWFzZSBkbyBub3Qg dXNlIGl0IGRpcmVjdGx5Lg0KPg0KPiAzKSBUaGUgc2FtcGxlIFNUWVggZHJpdmVyIChJT01NVSBw cm9kdWNlcikNCj4gaXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2p5YW8xL2VkazIvdHJlZS9kbWFf djQvSW50ZWxTaWxpY29uUGtnL1NhbXBsZVN0eXhEeGUNCj4gKGNvZGUgaXMgYm9ycm93ZWQgZnJv bSBhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPG1haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8u b3JnPikNCj4NCj4gVGhpcyBpcyBub3QgYSByaWdodCBwbGFjZSB0byBwdXQgdGhpcyBkcml2ZXIu DQo+DQo+IEl0IGlzIGFkZGVkIHRvIHNob3cgdGhlIGNvbmNlcHQuDQo+IEl0IGlzIG5vdCBmdWxs eSBpbXBsZW1lbnRlZC4gSXQgd2lsbCBub3QgYmUgY2hlY2tlZCBpbi4NCj4gUGxlYXNlIGRvIG5v dCB1c2UgaXQgZGlyZWN0bHkuDQo+DQo+DQo+ID09PT09PT09PT09PT09PT0gVjMgPT09PT09PT09 PT09PT0NCj4gMSkgQWRkIFJlbWFwIGNhcGFiaWxpdHkgKGZyb20gQXJkIEJpZXNoZXV2ZWwpDQo+ IEFkZCBFREtJSV9JT01NVV9SRU1BUF9BRERSRVNTIEFQSSBpbiBJT01NVV9QUk9UT0NPTC4NCj4N Cj4gTk9URTogVGhlIGNvZGUgaXMgbm90IGZ1bGx5IHZhbGlkYXRlZCB5ZXQuDQo+IFRoZSBwdXJw b3NlIGlzIHRvIGNvbGxlY3QgZmVlZGJhY2sgdG8gZGVjaWRlIHRoZSBuZXh0IHN0ZXAuDQo+DQo+ ID09PT09PT09PT09PT09PT0gVjIgPT09PT09PT09PT09PT0NCj4gMSkgRW5oYW5jZSBVbm1hcCgp IGluIFBjaUlvIChGcm9tIFJ1aXl1IE5pKQ0KPiBNYWludGFpbiBhIGxvY2FsIGxpc3Qgb2YgTWFw SW5mbyBhbmQgbWF0Y2ggaXQgaW4gVW5tYXAuDQo+DQo+IDIpIENvcHlNZW0gZm9yIFJlYWRPcGVy YXRpb24gaW4gUGNpSW8gYWZ0ZXIgU2V0QXR0cmlidXRlIChMZW8gRHVyYW4pDQo+IEZpeCBhIGJ1 ZyBpbiBWMSB0aGF0IGNvcHkgbWVtIGZvciByZWFkIGhhcHBlbiBiZWZvcmUgU2V0QXR0cmlidXRl LA0KPiB3aGljaCB3aWxsIGJyZWFrIEFNRCBTRVYgc29sdXRpb24uDQo+DQo+ID09PT09PT09PT09 PT09PT0gVjEgPT09PT09PT09PT09PT0NCj4NCj4gVGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBJT01N VSBwcm90b2NvbCBhbmQgdXBkYXRlcyB0aGUgY29uc3VtZXINCj4gdG8gc3VwcG9ydCBJT01NVSBi YXNlZCBETUEgYWNjZXNzIGluIFVFRkkuDQo+DQo+IFRoaXMgcGF0Y2ggc2VyaWVzIGNhbiBzdXBw b3J0IHRoZSBCbURtYUxpYiByZXF1ZXN0IGZvciBBTUQgU0VWLg0KPiBzdWJtaXR0ZWQgYnkgRHVy YW4sIExlbyA8bGVvLmR1cmFuQGFtZC5jb208bWFpbHRvOmxlby5kdXJhbkBhbWQuY29tPj4gYW5k IEJyaWplc2ggU2luZ2ggPGJyaWplc2gua3NpbmdoQGdtYWlsLmNvbTxtYWlsdG86YnJpamVzaC5r c2luZ2hAZ21haWwuY29tPj4uDQo+IGh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsy LWRldmVsLzIwMTctTWFyY2gvMDA4MTA5Lmh0bWwsIGFuZA0KPiBodHRwczovL2xpc3RzLjAxLm9y Zy9waXBlcm1haWwvZWRrMi1kZXZlbC8yMDE3LU1hcmNoLzAwODgyMC5odG1sLg0KPiBXZSBjYW4g aGF2ZSBhbiBBTUQgU0VWIHNwZWNpZmljIElPTU1VIGRyaXZlciB0byBwcm9kdWNlIElPTU1VIHBy b3RvY29sLA0KPiBhbmQgY2xlYXIgU0VWIGluIElPTU1VLT5TZXRBdHRyaWJ1dGUoKS4NCj4NCj4g VGhpcyBwYXRjaCBzZXJpZXMgY2FuIGFsc28gc3VwcG9ydCBJbnRlbCBWVGQgYmFzZWQgRE1BIHBy b3RlY3Rpb24sDQo+IHJlcXVlc3RlZCBieSBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNv bTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PiwgZGlzY3Vzc2VkIGluDQo+IGh0dHBzOi8v bGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTctTWFyY2gvMDA4MTU3Lmh0bWwu DQo+IFdlIGNhbiBoYXZlIGFuIEludGVsIFZUZCBzcGVjaWZpYyBJT01NVSBkcml2ZXIgdG8gcHJv ZHVjZSBJT01NVSBwcm90b2NvbCwNCj4gYW5kIHVwZGF0ZSBWVGQgZW5naW5lIHRvIGdyYW50IG9y IGRlbnkgYWNjZXNzIGluIElPTU1VLT5TZXRBdHRyaWJ1dGUoKS4NCj4NCj4gVGhpcyBwYXRjaCBz ZXJpZXMgZG9lcyBub3QgcHJvdmlkZSBhIGZ1bGwgSW50ZWwgVlRkIGRyaXZlciwgd2hpY2gNCj4g d2lsbCBiZSBwcm92aWRlIGluIG90aGVyIHBhdGNoIGluIHRoZSBmdXR1cmUuDQo+DQo+IFRoZSBw dXJwb3NlIG9mIHRoaXMgcGF0Y2ggc2VyaWVzIHRvIHJldmlldyBpZiB0aGlzIElPTU1VIHByb3Rv Y29sIGRlc2lnbg0KPiBjYW4gbWVldCBhbGwgRE1BIGFjY2VzcyBhbmQgbWFuYWdlbWVudCByZXF1 aXJlbWVudC4NCj4NCj4gQ2M6IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRlbC5jb208bWFpbHRvOnJ1 aXl1Lm5pQGludGVsLmNvbT4+DQo+IENjOiBMZW8gRHVyYW4gPGxlby5kdXJhbkBhbWQuY29tPG1h aWx0bzpsZW8uZHVyYW5AYW1kLmNvbT4+DQo+IENjOiBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLnNp bmdoQGFtZC5jb208bWFpbHRvOmJyaWplc2guc2luZ2hAYW1kLmNvbT4+DQo+IENjOiBBcmQgQmll c2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZzxtYWlsdG86YXJkLmJpZXNoZXV2ZWxA bGluYXJvLm9yZz4+DQo+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9u IEFncmVlbWVudCAxLjANCj4gU2lnbmVkLW9mZi1ieTogSmlld2VuIFlhbyA8amlld2VuLnlhb0Bp bnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4NCj4NCj4gSmlld2VuIFlhbyAo Myk6DQo+ICAgTWRlTW9kdWxlUGtnL0luY2x1ZGU6IEFkZCBJT01NVSBwcm90b2NvbCBkZWZpbml0 aW9uLg0KPiAgIE1kZU1vZHVsZVBrZy9QY2lIb3N0QnJpZGdlOiBBZGQgSU9NTVUgc3VwcG9ydC4N Cj4gICBNZGVNb2R1bGVQa2cvUGNpQnVzOiBBZGQgSU9NTVUgc3VwcG9ydC4NCj4NCj4gIE1kZU1v ZHVsZVBrZy9CdXMvUGNpL1BjaUJ1c0R4ZS9QY2lCdXMuYyAgICAgICAgICAgICAgICAgICAgfCAg IDkgKw0KPiAgTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpQnVzRHhlL1BjaUJ1cy5oICAgICAgICAg ICAgICAgICAgICB8ICAgMSArDQo+ICBNZGVNb2R1bGVQa2cvQnVzL1BjaS9QY2lCdXNEeGUvUGNp QnVzRHhlLmluZiAgICAgICAgICAgICAgIHwgICAxICsNCj4gIE1kZU1vZHVsZVBrZy9CdXMvUGNp L1BjaUJ1c0R4ZS9QY2lJby5jICAgICAgICAgICAgICAgICAgICAgfCAgNDcgKysrLQ0KPiAgTWRl TW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJyaWRnZUR4ZS9QY2lIb3N0QnJpZGdlLmMgICAgICB8 ICAzNyArKysNCj4gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1BjaUhvc3RCcmlkZ2VEeGUvUGNpSG9z dEJyaWRnZUR4ZS5pbmYgfCAgIDIgKw0KPiAgTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJy aWRnZUR4ZS9QY2lSb290QnJpZGdlLmggICAgICB8ICAgMiArDQo+ICBNZGVNb2R1bGVQa2cvQnVz L1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaVJvb3RCcmlkZ2VJby5jICAgIHwgIDYxICsrKysrDQo+ ICBNZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jb01tdS5oICAgICAgICAgICAgICAgICAg ICAgIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrDQo+ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxl UGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsNCj4gIDEwIGZpbGVz IGNoYW5nZWQsIDQxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IE1kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL0lvTW11LmgNCj4NCj4gLS0N Cj4gMi43LjQud2luZG93cy4xDQo+DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQo+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCj4gaHR0cHM6Ly9s aXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=