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.93; helo=mga11.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 B60DA21A10961 for ; Wed, 29 Nov 2017 17:55:13 -0800 (PST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2017 17:59:38 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,339,1508828400"; d="scan'208";a="8701073" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga001.fm.intel.com with ESMTP; 29 Nov 2017 17:59:38 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 29 Nov 2017 17:59:37 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 29 Nov 2017 17:59:37 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.93]) with mapi id 14.03.0319.002; Thu, 30 Nov 2017 09:59:27 +0800 From: "Yao, Jiewen" To: "Wang, Jian J" CC: "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH 0/2] Enable page table write protection Thread-Index: AQHTaO6jTVQ3WoyKZki4Ia2jZfzVHqMqjU6AgAATUYCAAI7Rgf//kAIAgACcepeAADS9gIAAhuCQ//+CNACAAIsRgP//fVaAABEqcwA= Date: Thu, 30 Nov 2017 01:59:26 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AA32861@shsmsx102.ccr.corp.intel.com> References: <20171129084640.20076-1-jian.j.wang@intel.com> <19004429-87DC-4620-8A78-4EF085D5AD9D@intel.com>, <47960CCE-CA63-49FE-99AF-48E61050EF05@intel.com>, <75B70EA2-DA2E-41E5-9580-FA23AB545AC2@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AA326DF@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AA3279A@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjc1Yjg1YzEtMzZhNS00ZTYwLTkzZWItYTM3ZjkxYTFiOTFmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJIWGJSNVRoOVNQZUtwVDR0UTFRbGNONFwvc3RkVjZ5V0Y1bGVKaGlQVk56NzVzTDVqaFhJT0ZPZCtWTXRiVW1vUyJ9 x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 0/2] Enable page table write protection 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: Thu, 30 Nov 2017 01:55:13 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Q2xhcmlmeSBteSB3b3JkIGJlbG93Og0KDQpDYW4geW91IGp1c3QgcHJlZGljdCBhbmQgcHJlLWFs bG9jYXRlIGFkZGl0aW9uYWwgcGFnZXMgZm9yIGZ1dHVyZSBzcGxpdCBpbiB3b3JzdCBjYXNlPw0K SWYgbmV3IG9uZSBuZWVkIHNwbGl0LCB5b3UgY2FuIGp1c3QgdXNlIHRoZSBhZGRpdGlvbmFsIHBh Z2VzLg0KSWYgbm90LCB5b3UgY2FuIGZyZWUgdGhlbSBsYXRlci4NCg0KRm9yIGV4YW1wbGUsIHlv dSBjYW4gYWxsb2NhdGUgMk0gYWxpZ25lZCBtZW1vcnkgZm9yIG5ldyBwYWdlcywgZm9yIG1ha2Ug c3VyZSB0aGV5IGFyZSBpbiBzYW1lIHBhZ2UgZGlyZWN0b3J5Lg0KDQpJIHRoaW5rIGl0IGNhbiBy ZXNvbHZlIHRoZSBwcm9ibGVtLg0KVGhlIGtleSBpcyB0byBwcmUtY2FsY3VsYXRlIGhvdyBtYW55 IHBhZ2VzIGFyZSBpbnZvbHZlZCBpbiB0aGUgd29yc3QgY2FzZS4NCg0KVGhhbmsgeW91DQpZYW8g Smlld2VuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXYW5nLCBK aWFuIEoNCj4gU2VudDogVGh1cnNkYXksIE5vdmVtYmVyIDMwLCAyMDE3IDk6NDcgQU0NCj4gVG86 IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQo+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDAvMl0gRW5hYmxlIHBhZ2Ug dGFibGUgd3JpdGUgcHJvdGVjdGlvbg0KPiANCj4gR29vZCBpZGVhLiBJIHRoaW5rIGl0IHdpbGwg aGlnaGx5IHJlZHVjZSB0aGUgcG9zc2liaWxpdHkgYnV0IG5vdCBzb2x2ZSBpdCBzdGlsbC4NCj4g VGhlIGRpbGVtbWEgaGVyZSBpczogZG8gd2UgbmVlZCB0byB0YWtlIGNhcmUgb2YgaXQ/IFRoaXMg aXNzdWUgZXhpc3RzIGluIHRoZW9yeQ0KPiBidXQgaGFzIG5vdCB5ZXQgYmVlbiBlbmNvdW50ZXJl ZCBpbiBwcmFjdGljZS4NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBG cm9tOiBZYW8sIEppZXdlbg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAzMCwgMjAxNyA5 OjM2IEFNDQo+ID4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BB VENIIDAvMl0gRW5hYmxlIHBhZ2UgdGFibGUgd3JpdGUgcHJvdGVjdGlvbg0KPiA+DQo+ID4gQ2Fu IHlvdSBqdXN0IGFsbG9jYXRlIDEgbW9yZSBwYWdlIGZvciBzcGxpdD8NCj4gPiBJZiBuZXcgb25l IG5lZWQgc3BsaXQsIHlvdSBjYW4ganVzdCB1c2UgdGhlIGFkZGl0aW9uYWwgcGFnZS4NCj4gPiBJ ZiBub3QsIHlvdSBjYW4gZnJlZSBpdCBsYXRlci4NCj4gPg0KPiA+IFRoYW5rIHlvdQ0KPiA+IFlh byBKaWV3ZW4NCj4gPg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ ID4gRnJvbTogV2FuZywgSmlhbiBKDQo+ID4gPiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMzAs IDIwMTcgOToxNyBBTQ0KPiA+ID4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNv bT4NCj4gPiA+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4gU3ViamVjdDogUkU6 IFtlZGsyXSBbUEFUQ0ggMC8yXSBFbmFibGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+ ID4gPg0KPiA+ID4gV2hlbiB5b3Ugc3BsaXQgcGFnZSB0YWJsZXMsIHlvdSBuZWVkIHRvIGFsbG9j YXRlIG5ldyBwYWdlcyBmb3IgbmV3IHBhZ2UNCj4gPiB0YWJsZS4NCj4gPiA+IFNpbmNlIHlvdSBo YXZlIG5ldyBwYWdlIHRhYmxlcyBhZGRlZCwgeW91IG5lZWQgdG8gbWFyayB0aGVtIHRvIGJlDQo+ IHJlYWQtb25seQ0KPiA+ID4gYXMgd2VsbCwgcmlnaHQ/IFdoZW4geW91IGRvIHRoaXMsIHRoZSBw YWdlIHRhYmxlIGZvciB0aGUgbWVtb3J5IG5ld2x5DQo+ID4gYWxsb2NhdGVkDQo+ID4gPiBtaWdo dCBzdGlsbCBuZWVkcyB0byBiZSBzcGxpdC4gVGhpcyBpcyB0aGUgd29yc3QgY2FzZSBidXQgdGhl cmUncyBzdGlsbCBjaGFuY2Ugb2YgaXQsDQo+ID4gPiByaWdodD8gV2UgY2Fubm90IGd1YXJhbnRl ZSwgdGhlb3JldGljYWxseSwgdGhlIHBhZ2UgdGFibGUgZm9yIHRoZSBuZXdseQ0KPiA+IGFsbG9j YXRlZA0KPiA+ID4gcGFnZSB0YWJsZXMgaXMgaW4gdGhlIHNhbWUgYXMganVzdCBzcGxpdCBvbmVz LiBTbywgaW4gd29yc3QgY2FzZSwgb25jZSB3ZSB3YW50DQo+IHRvDQo+ID4gPiBtYXJrIG5ldyBw YWdlIHRhYmxlIHRvIGJlIHJlYWQtb25seSwgd2UgbmVlZCB0byBzcGxpdCB0aGUgcGFnZSB0YWJs ZQ0KPiA+IG1hbmFnaW5nDQo+ID4gPiB0aG9zZSBtZW1vcnksIGFuZCBpZiB3ZSBuZWVkIHRvIGRv IHNwbGl0LCB3ZSBuZWVkIHRvIGFsbG9jYXRlIG1vcmUgbmV3DQo+ID4gcGFnZXMuDQo+ID4gPiBU aGlzIG1pZ2h0IGZhbGwgaW50byBhIHJlY3Vyc2l2ZSBzaXR1YXRpb24gdW50aWwgYWxsIHRoZSBz bWFsbGVzdCBwYWdlIHRhYmxlIGFyZQ0KPiA+ID4gY3JlYXRlZC4NCj4gPiA+IEluIHByYWN0aWNl IGl0J3MgYWxtb3N0IGltcG9zc2libGUgdG8gbGV0IGl0IGhhcHBlbiBidXQgdGhlIGNoYW5jZXMg YXJlIHdlIHdpbGwNCj4gPiBmYWxsDQo+ID4gPiBpbnRvDQo+ID4gPiBzdWNoIHJlY3Vyc2l2ZSBz aXR1YXRpb24gbW9yZSB0aGFuIG9uZSBsZXZlbC4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IFlhbywgSmlld2VuDQo+ID4gPiA+IFNlbnQ6 IFRodXJzZGF5LCBOb3ZlbWJlciAzMCwgMjAxNyA4OjUyIEFNDQo+ID4gPiA+IFRvOiBXYW5nLCBK aWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDAvMl0gRW5hYmxl IHBhZ2UgdGFibGUgd3JpdGUgcHJvdGVjdGlvbg0KPiA+ID4gPg0KPiA+ID4gPiAtLSB3aGVuZXZl ciB5b3UncmUgdHJ5aW5nIHRvIG1hcmsgb25lIHBhZ2UgdXNlZCBhcyBwYWdlIHRhYmxlIHRvIGJl IHJlYWQtDQo+ID4gb25seSwNCj4gPiA+ID4geW91IG5lZWQgdG8gc3BsaXQgaXRzIHBhZ2UgdGFi bGUgaW4gYWR2YW5jZQ0KPiA+ID4gPiBbSmlld2VuXSBTb3JyeSwgSSBkbyBub3QgcXVpdGUgdW5k ZXJzdGFuZCB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQuDQo+ID4gPiA+IFRvIHNldCBhIHBhZ2UgdG8g YmUgUmVhZE9ubHksIHlvdSBqdXN0IGZsaXAgdGhlIFIvVyBiaXQgaW4gdGhlIHBhZ2UgZW50cnku DQo+ID4gPiA+IFRoZSBzdGVwIEkgZXhwZWN0IGlzOg0KPiA+ID4gPiAxKSBZb3Ugc3BsaXQgcGFn ZSB0YWJsZS4NCj4gPiA+ID4gMikgRmlsbCB0aGUgZGF0YSBzdHJ1Y3R1cmUgaW4gdGhlIG5ldyBl bnRyeS4NCj4gPiA+ID4gMykgRmxpcCBSL1cgYml0ICg8PT0gVGhpcyBpcyB0aGUgbmV3IHN0ZXAp Lg0KPiA+ID4gPiA0KSBGbHVzaFBhZ2VUYWJsZS4NCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmsgeW91 DQo+ID4gPiA+IFlhbyBKaWV3ZW4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IFdhbmcsIEppYW4gSg0KPiA+ID4gPiA+IFNlbnQ6 IFRodXJzZGF5LCBOb3ZlbWJlciAzMCwgMjAxNyA4OjQ0IEFNDQo+ID4gPiA+ID4gVG86IFlhbywg Smlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+ID4gPiBDYzogZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmcNCj4gPiA+ID4gPiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAwLzJdIEVu YWJsZSBwYWdlIHRhYmxlIHdyaXRlIHByb3RlY3Rpb24NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkg ZGlkIHRoaW5rIG9mIHByb3RlY3RpbmcgbmV3IHBhZ2UgdGFibGUgaW4gY3B1IGRyaXZlci4gQnV0 IEkgdGhpbmsgdGhlcmUncw0KPiA+IHJpc2tzDQo+ID4gPiA+ID4gdG8gZG8gaXQsIHdoaWNoIGlz IHRoYXQgdGhlcmUgbWlnaHQgYmUgYSBjaGFuY2UgdGhhdCwgd2hlbmV2ZXIgeW91J3JlDQo+IHRy eWluZw0KPiA+IHRvDQo+ID4gPiA+ID4gbWFyayBvbmUgcGFnZSB1c2VkIGFzIHBhZ2UgdGFibGUg dG8gYmUgcmVhZC1vbmx5LCB5b3UgbmVlZCB0byBzcGxpdCBpdHMNCj4gPiBwYWdlDQo+ID4gPiA+ ID4gdGFibGUgaW4gYWR2YW5jZSwgYW5kIGFnYWluIGFuZCBhZ2FpbiwgdW50aWwgYWxsIHBhZ2Ug dGFibGVzIGFyZSBmb3IgNEtCDQo+ID4gcGFnZXMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBbHRo b3VnaCB0aGlzIGlzIGEgcmFyZSBjYXNlLCBvciB0aGUgcGFnZSB0YWJsZSAic3BsaXQiIHdpbGwg anVzdCBoYXBwZW4gZm9yIGENCj4gPiBmZXcNCj4gPiA+ID4gPiB0aW1lcywgaXQgd2lsbCBzbG93 IGRvd24gdGhlIGJvb3QgcHJvY2VzcyBhIGxpdHRsZSBiaXQgYW55d2F5LiBTbyBJIHRob3VnaA0K PiA+IGl0J3MNCj4gPiA+ID4gPiBzYWZlciBub3QgdG8gcHJvdGVjdCBuZXcgcGFnZSB0YWJsZXMg Y3JlYXRlZCBhZnRlciBEeGVJcGwuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBNYXliZSBpdCdzIGp1 c3Qgb3ZlciB3b3JyeWluZyBhYm91dCBpdC4gTWF5YmUgd2UganVzdCBuZWVkIHRvIGFkZCBhIFBD RA0KPiB0bw0KPiA+ID4gPiA+IHR1cm4gb24vb2ZmIGl0IGp1c3QgaW4gY2FzZS4gRG8geW91IGhh dmUgYW55IGlkZWFzIGluIG1pbmQ/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBGcm9tOiBZYW8sIEppZXdlbg0KPiA+ID4gPiA+ ID4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAyOSwgMjAxNyA5OjM1IFBNDQo+ID4gPiA+ID4g PiBUbzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBD YzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZWRr Ml0gW1BBVENIIDAvMl0gRW5hYmxlIHBhZ2UgdGFibGUgd3JpdGUgcHJvdGVjdGlvbg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IEkgZG8gdGhpbmsgd2UgbmVlZCB1cGRhdGUgQ1BVIGRyaXZlciB0 byBwcm90ZWN0IG5ldyBhbGxvY2F0ZWQgc3BsaXQNCj4gcGFnZS4NCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiBJZiB5b3UgdmVyaWZpZWQgaW4gc2hlbGwgZW52LCBJIHRoaW5rIGl0IHdpbGwgZXhw b3NlZCwgcGxlYXNlIGFkZCBhIHRlc3QgdG8NCj4gPiB0cmlnZ2VyDQo+ID4gPiA+ID4gPiBwYWdl IHNwbGl0IGluIENQVSBkcml2ZXIuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSSByZWNvbW1l bmQgdG8gd3JpdGUgc29tZSB1bml0IHRlc3QgdG8gcGFyc2UgcGFnZSB0YWJsZSBpbiBzaGVsbC4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiB0aGFuayB5b3UhDQo+ID4gPiA+ID4gPiBZYW8sIEpp ZXdlbg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+INTaIDIwMTfE6jEx 1MIyOcjVo6zPws7nODoxNaOsV2FuZywgSmlhbiBKDQo+ID4gPGppYW4uai53YW5nQGludGVsLmNv bT4NCj4gPiA+ID4gPiDQtA0KPiA+ID4gPiA+ID4gtcCjug0KPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiBJdCdzIGluIHRoZSBEeGVJcGxQZWltLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiBCeSB0aGUgd2F5LCB0aGVyZSdzIGFuIGlzc3VlIGluIHRoaXMgcGF0Y2guIEkgZm9yZ290 IHRvIHByb3RlY3QgcGFnZSB0YWJsZQ0KPiA+IGZvcg0KPiA+ID4gPiA+IDMyLQ0KPiA+ID4gPiA+ ID4gYml0IG1vZGUuDQo+ID4gPiA+ID4gPiA+IFNvIHRoaXMgcGF0Y2ggd29ya3Mgb25seSBmb3Ig NjQtYml0IG1vZGUuIEknbGwgYWRkIGl0IGluIHYyIHBhdGNoLg0KPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4+IEZy b206IFlhbywgSmlld2VuDQo+ID4gPiA+ID4gPiA+PiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVy IDI5LCAyMDE3IDY6NTYgUE0NCj4gPiA+ID4gPiA+ID4+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4u ai53YW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KPiA+ID4gPiA+ID4gPj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMC8yXSBFbmFi bGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ ID4gPj4gSXMgdGhpcyBjb2RlIGluIENQVSBkcml2ZXI/DQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4g PiA+ID4gPj4gdGhhbmsgeW91IQ0KPiA+ID4gPiA+ID4gPj4gWWFvLCBKaWV3ZW4NCj4gPiA+ID4g PiA+ID4+DQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPj4+INTaIDIwMTfE6jEx1MIyOcjV o6zPws7nNjoyNKOsV2FuZywgSmlhbiBKDQo+ID4gPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ DQo+ID4gPiA+ID4gPiDQtA0KPiA+ID4gPiA+ID4gPj4gtcCjug0KPiA+ID4gPiA+ID4gPj4+DQo+ ID4gPiA+ID4gPiA+Pj4gWWVzLCBJIHZhbGlkYXRlZCB0aGVtIG1hbnVhbGx5IHdpdGggSlRBRyBk ZWJ1ZyB0b29sLg0KPiA+ID4gPiA+ID4gPj4+DQo+ID4gPiA+ID4gPiA+Pj4gaWYgKChMM1BhZ2VU YWJsZVtJbmRleDNdICYgSUEzMl9QR19QUykgIT0gMCkgew0KPiA+ID4gPiA+ID4gPj4+ICAvLyAx RyBwYWdlLiBTcGxpdCB0byAyTS4NCj4gPiA+ID4gPiA+ID4+PiAgTDJQYWdlVGFibGUgPSBBbGxv Y2F0ZVBhZ2VzICgxKTsNCj4gPiA+ID4gPiA+ID4+PiAgQVNTRVJUIChMMlBhZ2VUYWJsZSAhPSBO VUxMKTsNCj4gPiA+ID4gPiA+ID4+PiAgIFBoeXNpY2FsQWRkcmVzcyA9IEwzUGFnZVRhYmxlW0lu ZGV4M10gJg0KPiA+ID4gPiA+IFBBR0lOR18xR19BRERSRVNTX01BU0tfNjQ7DQo+ID4gPiA+ID4g PiA+Pj4gICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBFRklfUEFHRV9TSVpFL3NpemVvZiAoVUlO VDY0KTsgKytJbmRleCkNCj4gew0KPiA+ID4gPiA+ID4gPj4+ICAgIEwyUGFnZVRhYmxlW0luZGV4 XSA9IFBoeXNpY2FsQWRkcmVzcyAgfCBBZGRyZXNzRW5jTWFzayB8DQo+ID4gPiA+ID4gPiA+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgSUEzMl9QR19QUyB8IElBMzJfUEdfUCB8DQo+ID4gPiBJ QTMyX1BHX1JXOw0KPiA+ID4gPiA+ID4gPj4+ICAgIFBoeXNpY2FsQWRkcmVzcyArPSBTSVpFXzJN QjsNCj4gPiA+ID4gPiA+ID4+PiAgfQ0KPiA+ID4gPiA+ID4gPj4+ICBMM1BhZ2VUYWJsZVtJbmRl eDNdID0gKFVJTlQ2NCkgKFVJTlROKSBMMlBhZ2VUYWJsZSB8DQo+ID4gPiA+ID4gQWRkcmVzc0Vu Y01hc2sgfA0KPiA+ID4gPiA+ID4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQTMyX1BHX1AgfA0KPiA+ID4gPiA+IElBMzJfUEdfUlc7DQo+ID4gPiA+ID4gPiA+ Pj4gIFNldFBhZ2VSZWFkT25seSAoUGFnZVRhYmxlQmFzZSwNCj4gPiA+ID4gPiA+ID4+IChFRklf UEhZU0lDQUxfQUREUkVTUykoVUlOVE4pTDJQYWdlVGFibGUpOw0KPiA+ID4gPiA+ID4gPj4+IH0N Cj4gPiA+ID4gPiA+ID4+Pg0KPiA+ID4gPiA+ID4gPj4+IFRoZSBuZXdseSBhbGxvY2F0ZWQgcGFn ZSB0YWJsZSBpcyBzZXQgaW4gdGhlIFNldFBhZ2VSZWFkT25seSgpIGl0c2VsZg0KPiA+ID4gPiA+ ID4gPj4gcmVjdXJzaXZlbHksIGxpa2UNCj4gPiA+ID4gPiA+ID4+PiBhYm92ZSBjb2RlIGluIHdo aWNoIEwyUGFnZVRhYmxlIGlzIGFsbG9jYXRlZCBhbmQgdGhlbiBzZXQgaXQgdG8gYmUNCj4gPiA+ ID4gPiByZWFkLW9ubHkNCj4gPiA+ID4gPiA+ID4+IGFmdGVyDQo+ID4gPiA+ID4gPiA+Pj4gaW5p dGlhbGl6aW5nIHRoZSB0YWJsZSBjb250ZW50Lg0KPiA+ID4gPiA+ID4gPj4+DQo+ID4gPiA+ID4g PiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+Pj4+IEZyb206 IFlhbywgSmlld2VuDQo+ID4gPiA+ID4gPiA+Pj4+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIg MjksIDIwMTcgNToxNiBQTQ0KPiA+ID4gPiA+ID4gPj4+PiBUbzogV2FuZywgSmlhbiBKIDxqaWFu Lmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+Pj4+IENjOiBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KPiA+ID4gPiA+ID4gPj4+PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCAwLzJd IEVuYWJsZSBwYWdlIHRhYmxlIHdyaXRlDQo+IHByb3RlY3Rpb24NCj4gPiA+ID4gPiA+ID4+Pj4N Cj4gPiA+ID4gPiA+ID4+Pj4gVGhhbmtzLg0KPiA+ID4gPiA+ID4gPj4+Pg0KPiA+ID4gPiA+ID4g Pj4+PiBNYXkgSSBrbm93IGlmIHRoaXMgaXMgdmFsaWRhdGVkIGluIHVlZmkgc2hlbGwsIHRoYXQg YWxsIHBhZ2UgdGFibGUgaXMNCj4gPiA+ID4gcmVhZG9ubHk/DQo+ID4gPiA+ID4gPiA+Pj4+DQo+ ID4gPiA+ID4gPiA+Pj4+IEkgZGlkIG5vdCBmaW5kIHRoZSBjb2RlIHRvIHNldCBuZXcgYWxsb2Nh dGVkIHNwbGl0IHBhZ2UgdG8gYmUNCj4gPiByZWFkb25seS4NCj4gPiA+ID4gQ2FuDQo+ID4gPiA+ ID4gPiB5b3UNCj4gPiA+ID4gPiA+ID4+Pj4gZ2l2ZSBtZSBhIGhhbmQgb24gdGhhdD8NCj4gPiA+ ID4gPiA+ID4+Pj4NCj4gPiA+ID4gPiA+ID4+Pj4gdGhhbmsgeW91IQ0KPiA+ID4gPiA+ID4gPj4+ PiBZYW8sIEppZXdlbg0KPiA+ID4gPiA+ID4gPj4+Pg0KPiA+ID4gPiA+ID4gPj4+Pg0KPiA+ID4g PiA+ID4gPj4+Pj4g1NogMjAxN8TqMTHUwjI5yNWjrM/Czuc0OjQ3o6xKaWFuIEogV2FuZw0KPiA+ ID4gPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+PiDQtA0KPiA+ID4g PiA+ID4gPj4+PiC1wKO6DQo+ID4gPiA+ID4gPiA+Pj4+Pg0KPiA+ID4gPiA+ID4gPj4+Pj4gV3Jp dGUgUHJvdGVjdCBmZWF0dXJlIChDUjAuV1ApIGlzIGFsd2F5cyBlbmFibGVkIGluIGRyaXZlcg0K PiA+ID4gPiA+ID4gPj4+PiBVZWZpQ3B1UGtnL0NwdUR4ZS4NCj4gPiA+ID4gPiA+ID4+Pj4+IEJ1 dCB0aGUgbWVtb3J5IHBhZ2VzIHVzZWQgZm9yIHBhZ2UgdGFibGUgYXJlIG5vdCBzZXQgYXMNCj4g cmVhZC1vbmx5DQo+ID4gPiBpbg0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gPj4+PiBkcml2 ZXINCj4gPiA+ID4gPiA+ID4+Pj4+IER4ZUlwbFBlaW0sIGFmdGVyIHRoZSBwYWdpbmcgaXMgc2V0 dXAuIFRoaXMgbWlnaHQgamVvcGFyZGl6ZSB0aGUNCj4gPiBwYWdlDQo+ID4gPiA+ID4gPiB0YWJs ZQ0KPiA+ID4gPiA+ID4gPj4+Pj4gaW50ZWdyaXR5IGlmIHRoZXJlJ3MgYnVmZmVyIG92ZXJmbG93 IG9jY3VyZWQgaW4gb3RoZXIgcGFydCBvZg0KPiBzeXN0ZW0uDQo+ID4gPiA+ID4gPiA+Pj4+Pg0K PiA+ID4gPiA+ID4gPj4+Pj4gVGhpcyBwYXRjaCBzZXJpZXMgd2lsbCBjaGFuZ2UgdGhpcyBzaXR1 YXRpb24gYnkgY2xlYXJpbmcgUi9XIGJpdCBpbg0KPiA+ID4gcGFnZQ0KPiA+ID4gPiA+ID4gPj4g YXR0cmlidXRlDQo+ID4gPiA+ID4gPiA+Pj4+PiBvZiB0aGUgcGFnZXMgdXNlZCBhcyBwYWdlIHRh YmxlLg0KPiA+ID4gPiA+ID4gPj4+Pj4NCj4gPiA+ID4gPiA+ID4+Pj4+IFZhbGlkYXRpb24gd29y a3MgaW5jbHVkZSBib290aW5nIFdpbmRvd3MgKDEwL3NlcnZlciAyMDE2KSBhbmQNCj4gPiA+IExp bnV4DQo+ID4gPiA+ID4gPiA+Pj4+IChGZWRvcmEvVWJ1bnR1KQ0KPiA+ID4gPiA+ID4gPj4+Pj4g b24gT1ZNRiBhbmQgSW50ZWwgcmVhbCBwbGF0Zm9ybS4NCj4gPiA+ID4gPiA+ID4+Pj4+DQo+ID4g PiA+ID4gPiA+Pj4+PiBKaWFuIEogV2FuZyAoMik6DQo+ID4gPiA+ID4gPiA+Pj4+PiBVZWZpQ3B1 UGtnL0NwdUR4ZTogQ2hlY2sgQ1IwLldQIGJlZm9yZSBjaGFuZ2luZyBwYWdlIHRhYmxlDQo+ID4g PiA+ID4gPiA+Pj4+PiBNZGVNb2R1bGVQa2cvRHhlSXBsOiBNYXJrIHBhZ2UgdGFibGUgYXMgcmVh ZC1vbmx5DQo+ID4gPiA+ID4gPiA+Pj4+Pg0KPiA+ID4gPiA+ID4gPj4+Pj4gTWRlTW9kdWxlUGtn L0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1lbW9yeS5jIHwgMTY2DQo+ID4gPiA+ID4gPiA+ Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+Pj4+PiBNZGVNb2R1bGVQ a2cvQ29yZS9EeGVJcGxQZWltL1g2NC9WaXJ0dWFsTWVtb3J5LmggfCAgMTQNCj4gKysNCj4gPiA+ ID4gPiA+ID4+Pj4+IFVlZmlDcHVQa2cvQ3B1RHhlL0NwdVBhZ2VUYWJsZS5jICAgICAgICAgICAg ICAgICB8ICA2NQ0KPiA+ID4gPiA+ICsrKysrKysrLQ0KPiA+ID4gPiA+ID4gPj4+Pj4gMyBmaWxl cyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPiA+ ID4+Pj4+DQo+ID4gPiA+ID4gPiA+Pj4+PiAtLQ0KPiA+ID4gPiA+ID4gPj4+Pj4gMi4xNC4xLndp bmRvd3MuMQ0KPiA+ID4gPiA+ID4gPj4+Pj4NCj4gPiA+ID4gPiA+ID4+Pj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gPiA+ID4gPiA+Pj4+PiBl ZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ID4gPiA+ID4gPj4+Pj4gZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmcNCj4gPiA+ID4gPiA+ID4+Pj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4v bGlzdGluZm8vZWRrMi1kZXZlbA0K