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.20; helo=mga02.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (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 2477A2115993B for ; Thu, 27 Sep 2018 08:36:42 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Sep 2018 08:36:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,311,1534834800"; d="scan'208";a="93898109" Received: from orsmsx101.amr.corp.intel.com ([10.22.225.128]) by fmsmga001.fm.intel.com with ESMTP; 27 Sep 2018 08:36:41 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.89]) by ORSMSX101.amr.corp.intel.com ([169.254.8.122]) with mapi id 14.03.0319.002; Thu, 27 Sep 2018 08:36:41 -0700 From: "Kinney, Michael D" To: Ard Biesheuvel , "Zeng, Star" , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "Zimmer, Vincent" , "Richardson, Brian" , Andrew Fish , Leif Lindholm , "Dong, Eric" , "Ni, Ruiyu" , "Gao, Liming" , "Carsey, Jaben" , "Shi, Steven" Thread-Topic: [PATCH v3 1/7] MdeModulePkg: introduce PE/COFF image emulator protocol Thread-Index: AQHUUTXz0NqA/Q/BQEWYhQW1rqT7SaUC0gOAgAAEKoCAAACYUIAA87aAgACqlAD//9LWwA== Date: Thu, 27 Sep 2018 15:36:39 +0000 Message-ID: References: <20180920230145.7565-1-ard.biesheuvel@linaro.org> <20180920230145.7565-2-ard.biesheuvel@linaro.org> <0C09AFA07DD0434D9E2A0C6AEB0483103BBF0A34@shsmsx102.ccr.corp.intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103BBF1D27@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.138] MIME-Version: 1.0 Subject: Re: [PATCH v3 1/7] MdeModulePkg: introduce PE/COFF image emulator protocol 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: Thu, 27 Sep 2018 15:36:42 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQXJkLA0KDQpZZXMuICBJIHRoaW5rIGl0IGlzIHNpbXBsZXIgaWYgYW4gZW11bGF0b3IgbW9k dWxlIHJlZ2lzdGVycw0Kb25lIG1hY2hpbmUgdHlwZSBhdCBhIHRpbWUuICBJZiBhbiBlbXVsYXRv ciBtb2R1bGUgd2FudHMNCnRvIGRvIGEgc2luZ2xlIHJlZ2lzdHJhdGlvbiBhbmQgdGhhdCByZWdp c3RyYXRpb24gc3VwcG9ydHMNCm11bHRpcGxlIG1hY2hpbmUgdHlwZXMsIHRoZW4gdGhlIGVtdWxh dG9yIGltcGxlbWVudGF0aW9uDQppcyBtb3JlIGNvbXBsZXgsIGJ1dCBpdCBpcyBzdGlsbCBmZWFz aWJsZS4NCg0KSSB0aGluayBJIHNlZSB3aGVyZSB0aGluZ3MgZ290IGNvbmZ1c2VkLiAgVGhlIHBy b3Bvc2FsIGZyb20NClN0YXIgZm9yIGEgbmV3IHByb3RvY29sIHByb2R1Y2VkIGJ5IHRoZSBEWEUg Q29yZSBoYXMgc29tZSBpc3N1ZXMuDQpBIHJlZmluZWQgcHJvcG9zYWwgaXMgc2hvd24gYmVsb3cu ICBJdCBhbHNvIHN1cHBvcnRzIHRoZSBpZGVhIHRoYXQNCmFuIGVtdWxhdG9yIG1vZHVsZSBjYW4g YmUgbG9hZGVkIGFuZCB1bmxvYWRlZCB0byBzdXBwb3J0IHRlc3RpbmcNCmZyb20gZW52aXJvbm1l bnRzIGxpa2UgdGhlIFVFRkkgU2hlbGwgdG8gc29mdCBsb2FkIGFuIGVtdWxhdG9yLA0KdGVzdCBz b21lIGltYWdlcywgYW5kIHVubG9hZCBpdC4NCg0KQWxzbywgYnkgaGF2aW5nIGEgcHJvdG9jb2wg cHJvZHVjZWQgYnkgdGhlIERYRSBDb3JlLCB0aGUgZW11bGF0b3INCm1vZHVsZSBjYW4gdGVsbCBp ZiB0aGUgRFhFIENvcmUgc3VwcG9ydHMgZW11bGF0b3JzIG9yIG5vdCANCmJ5IGNoZWNraW5nIGZv ciB0aGUgcHJlc2VuY2Ugb2YgdGhpcyBwcm90b2NvbC4gIFRoZSBlbXVsYXRvcg0KbW9kdWxlIGNh biBmYWlsIGdyYWNlZnVsbHkgd2l0aCBzb21lIERFQlVHKCkgbWVzc2FnZSBhbmQgdW5sb2FkDQpp ZiBEWEUgQ29yZSBkb2VzIG5vdCBzdXBwb3J0IGVtdWxhdG9ycy4gIFRoaXMgYWxzbyBhbGxvd3Mg dGhlDQpvcHRpb24gdG8gdXBkYXRlIHRoZSBEWEUgQ29yZSBtb2R1bGUgdG8gb3B0aW9uYWxseSBz dXBwb3J0IA0KZW11bGF0b3JzIHVzaW5nIGEgUENEIEZlYXR1cmUgRmxhZyBhbmQgcmVtb3ZlIHNv bWUgbG9naWMgaWYNCmVtdWxhdG9ycyBhcmUgbm90IHJlcXVpcmVkIG9uIGEgc3BlY2lmaWMgcGxh dGZvcm0uDQoNCnR5cGVkZWYNCkVGSV9TVEFUVVMNCihFRklBUEkgKkVES0lJX1BFQ09GRl9JTUFH RV9FTVVMQVRPUl9BRERfRU1VTEFUT1IpICgNCiAgSU4gRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxB VE9SX1BST1RPQ09MICAgICAgICAgICAgKlRoaXMsDQogIElOIEVES0lJX1BFQ09GRl9JTUFHRV9F TVVMQVRPUl9JU19JTUFHRV9TVVBQT1JURUQgIElzSW1hZ2VTdXBwb3J0ZWQsDQogIElOIEVES0lJ X1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9SRUdJU1RFUl9JTUFHRSAgICAgIFJlZ2lzdGVySW1hZ2Us DQogIElOIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9VTlJFR0lTVEVSX0lNQUdFICAgIFVu cmVnaXN0ZXJJbWFnZQ0KICApOw0KDQp0eXBlZGVmDQpFRklfU1RBVFVTDQooRUZJQVBJICpFREtJ SV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUkVNT1ZFX0VNVUxBVE9SKSAoDQogIElOIEVES0lJX1BF Q09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTCAgICAgICAgICAgICpUaGlzLA0KICBJTiBFREtJ SV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfSVNfSU1BR0VfU1VQUE9SVEVEICBJc0ltYWdlU3VwcG9y dGVkLA0KICBJTiBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUkVHSVNURVJfSU1BR0UgICAg ICBSZWdpc3RlckltYWdlLA0KICBJTiBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfVU5SRUdJ U1RFUl9JTUFHRSAgICBVbnJlZ2lzdGVySW1hZ2UNCiAgKTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VE S0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTCB7DQogIEVES0lJX1BFQ09GRl9JTUFH RV9FTVVMQVRPUl9BRERfRU1VTEFUT1IgICAgIEFkZEVtdWxhdG9yOw0KICBFREtJSV9QRUNPRkZf SU1BR0VfRU1VTEFUT1JfUkVNT1ZFX0VNVUxBVE9SICBSZW1vdmVFbXVsYXRvcjsNCn0gRURLSUlf UEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RPQ09MDQoNClRoZSBJc0ltYWdlU3VwcG9ydGVkKCks IFJlZ2lzdGVySW1hZ2UoKSwgYW5kIFVuUmVnaXN0ZXJJbWFnZSgpDQphcmUgYWRkZWQgaW4gYSBz ZXQgaW4gYSBzaW5nbGUgY2FsbCB0byBBZGRFbXVsYXRvcigpIGZyb20gdGhlDQplbXVsYXRvciBt b2R1bGUuICBJbiBMb2FkSW1hZ2UoKSwgaWYgSXNJbWFnZVN1cHBvcnRlZCgpIHJldHVybnMNClRS VUUsIExvYWRJbWFnZSgpIHVzZXMgdGhlIFJlZ2lzdGVySW1hZ2UoKSBhbmQgVW5SZWdpc3Rlcklt YWdlKCkNCkFQSXMgdGhhdCB3ZXJlIGFkZGVkIHdpdGggdGhlIElzSW1hZ2VTdXBwb3J0ZWQoKSBB UEkgaW4gdGhlDQpjYWxsIHRvIEFkZEVtdWxhdG9yKCkuDQoNClRoYW5rcywNCg0KTWlrZQ0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFyZCBCaWVzaGV1dmVsIFttYWls dG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJl ciAyNywgMjAxOCAzOjU5IEFNDQo+IFRvOiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29t Pg0KPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsN Cj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFppbW1lciwgVmluY2VudA0KPiA8dmluY2VudC56 aW1tZXJAaW50ZWwuY29tPjsgUmljaGFyZHNvbiwgQnJpYW4NCj4gPGJyaWFuLnJpY2hhcmRzb25A aW50ZWwuY29tPjsgQW5kcmV3IEZpc2gNCj4gPGFmaXNoQGFwcGxlLmNvbT47IExlaWYgTGluZGhv bG0NCj4gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IERvbmcsIEVyaWMNCj4gPGVyaWMuZG9u Z0BpbnRlbC5jb20+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47DQo+IEdhbywgTGlt aW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IENhcnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNl eUBpbnRlbC5jb20+OyBTaGksIFN0ZXZlbg0KPiA8c3RldmVuLnNoaUBpbnRlbC5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS83XSBNZGVNb2R1bGVQa2c6IGludHJvZHVjZQ0KPiBQRS9D T0ZGIGltYWdlIGVtdWxhdG9yIHByb3RvY29sDQo+IA0KPiBPbiAyNyBTZXB0ZW1iZXIgMjAxOCBh dCAwMjo0OCwgWmVuZywgU3Rhcg0KPiA8c3Rhci56ZW5nQGludGVsLmNvbT4gd3JvdGU6DQo+ID4g WWVzLiBUaGlzIGlkZWEgYWxzbyBjYW1lIHRvIG15IG1pbmQgbGFzdCBuaWdodCwgdGhlbg0KPiBu byBuZWVkIGludHJvZHVjZSBQZUNvZmZFbXVsYXRvckR4ZSBhbmQgbm8gcGxhdGZvcm0NCj4gY2hh bmdlIGlzIG5lZWRlZC4NCj4gPg0KPiANCj4gVGhlIG9ubHkgcHJvYmxlbSB3aXRoIHRoaXMgYXBw cm9hY2ggaXMgdGhhdCB3ZSBjYW5ub3QNCj4ga2VlcCB0cmFjayBvZg0KPiB3aGljaCBlbXVsYXRv ciByZXR1cm5lZCBUUlVFIGZvciBJc1N1cHBvcnRlZCgpLCBhbmQgc28NCj4gUmVnaXN0ZXJJbWFn ZSgpDQo+IGFuZCBhbHNvIFVucmVnaXN0ZXJJbWFnZSgpIHdpbGwgaGF2ZSB0byBkbyBzb21lDQo+ IGludGVybmFsIGJvb2trZWVwaW5nDQo+IGluIHRoZSAnbWFuYWdlcicgcHJvdG9jb2wgaW1wbGVt ZW50YXRpb24gdGhhdA0KPiBkdXBsaWNhdGVzIGNvZGUgaW4gdGhlDQo+IGVtdWxhdG9ycy4NCj4g DQo+IFNvIGNvdWxkIHdlIGZsZXNoIHRoaXMgb3V0IGEgYml0IGJlZm9yZSBJIGRpdmUgaW50byB0 aGUNCj4gY29kZSBhZ2FpbiBhbmQNCj4gdHVybiBldmVyeXRoaW5nIHVwc2lkZSBkb3duPw0KPiAN Cj4gLSB0aGUgUENJIGJ1cyBkcml2ZXIgbm8gbG9uZ2VyIGNoZWNrcyB0aGUgbWFjaGluZSB0eXBl DQo+IC0gdGhlIEJEUyBubyBsb25nZXIgY2hlY2tzIHRoZSBtYWNoaW5lIHR5cGUgZm9yDQo+IERy aXZlciMjIyMgaW1hZ2VzDQo+IC0gQ29yZUxvYWRJbWFnZSgpIGNoZWNrcyBJc1N1cHBvcnRlZCgp IHRvIGVzdGFibGlzaA0KPiB3aGV0aGVyIHRoZQ0KPiBlbXVsYXRvciBtYW5hZ2VyIGhhcyBhbiBl bXVsYXRvciBhdmFpbGFibGUgdGhhdCBpcw0KPiB3aWxsaW5nIHRvIHRha2UNCj4gY2hhcmdlIG9m IHRoZSBpbWFnZQ0KPiAtIHdoYXQgaGFwcGVucyBuZXh0PyBDb3JlTG9hZEltYWdlKCkgY2FsbHMN Cj4gUmVnaXN0ZXJJbWFnZSgpIG9uIHdoYXQ/DQo+IFNob3VsZCBJc1N1cHBvcnRlZCgpIHJldHVy biBzb21lIGtpbmQgb2YgaGFuZGxlPw0KPiANCj4gQWxzbywgcGVyaGFwcyB3ZSBzaG91bGQgc2lt cGx5IHN0aWNrIHdpdGggb25lIGVtdWxhdG9yDQo+IHBlciBtYWNoaW5lDQo+IHR5cGUgKHdoaWNo IGRvZXNuJ3QgcHJlY2x1ZGUgYW4gaW1wbGVtZW50YXRpb24gZnJvbQ0KPiByZWdpc3RlcmluZyBp dHNlbGYNCj4gZm9yIG11bHRpcGxlIG9uZXMpLiBUaGF0IHNpbXBsaWZpZXMgdGhlIElzU3VwcG9y dGVkIHZzDQo+IFJlZ2lzdGVySW1hZ2UNCj4gaXNzdWUgYWJvdmUgYXMgd2VsbCAoaS5lLiwgaXQg aXMgdW5hbWJpZ3VvdXMgKndoaWNoKg0KPiBSZWdpc3RlckltYWdlKCkNCj4gc2hvdWxkIGJlIGNh bGxlZCkNCj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZy b206IEtpbm5leSwgTWljaGFlbCBEDQo+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNywg MjAxOCAxOjMyIEFNDQo+ID4gVG86IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPjsgWmVuZywNCj4gU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47IEtpbm5leSwgTWlj aGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogZWRrMi1kZXZl bEBsaXN0cy4wMS5vcmc7IFppbW1lciwgVmluY2VudA0KPiA8dmluY2VudC56aW1tZXJAaW50ZWwu Y29tPjsgUmljaGFyZHNvbiwgQnJpYW4NCj4gPGJyaWFuLnJpY2hhcmRzb25AaW50ZWwuY29tPjsg QW5kcmV3IEZpc2gNCj4gPGFmaXNoQGFwcGxlLmNvbT47IExlaWYgTGluZGhvbG0NCj4gPGxlaWYu bGluZGhvbG1AbGluYXJvLm9yZz47IERvbmcsIEVyaWMNCj4gPGVyaWMuZG9uZ0BpbnRlbC5jb20+ OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47DQo+IEdhbywgTGltaW5nIDxsaW1pbmcu Z2FvQGludGVsLmNvbT47IENhcnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+ OyBTaGksIFN0ZXZlbg0KPiA8c3RldmVuLnNoaUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6 IFtQQVRDSCB2MyAxLzddIE1kZU1vZHVsZVBrZzogaW50cm9kdWNlDQo+IFBFL0NPRkYgaW1hZ2Ug ZW11bGF0b3IgcHJvdG9jb2wNCj4gPg0KPiA+IEhpIEFyZCwNCj4gPg0KPiA+IEkgdGhpbmsgdGhp cyByZWdpc3RyYXRpb24gcHJvdG9jb2wgd291bGQgYmUgYSBuZXcNCj4gcHJvdG9jb2wgaW4gdGhl IE1kZU1vZHVsZVBrZyBhbmQgdGhlIHByb3RvY29sIHdvdWxkIGJlDQo+IHByb2R1Y2VkIGJ5IHRo ZSBEWEUgQ29yZS4gIFRoZSBlbXVsYXRpb24gZHJpdmVycywNCj4gaW5jbHVkaW5nIEVCQyB3b3Vs ZCBjb25zdW1lIHRoaXMgcHJvdG9jb2wgdG8gcmVnaXN0ZXINCj4gdGhlaXIgc2VydmljZXMuICBU aGlzIHJlbW92ZXMgdGhlIG5lZWQgZm9yIHRoZSBEWEUgQ29yZQ0KPiB0byBkbyBhIFJlZ2lzdGVy IFByb3RvY29sIE5vdGlmeSBldmVudCBmb3IgdGhlIGVtdWxhdG9yDQo+IHByb3RvY29sLiAgVGhl IERYRSBDb3JlIHdvdWxkIGJ1aWxkIGEgdGFibGUgb2YNCj4gcmVnaXN0ZXJlZCBzZXJ2aWNlcywg c28gaXQgY2FuIHF1aWNrbHkgbG9vcCB0aHJvdWdoDQo+IHRoZW0gdG8gY2hlY2sgaWYgYW4gZW11 bGF0b3Igc3VwcG9ydHMgYSBzcGVjaWZpYw0KPiBQRS9DT0ZGIGltYWdlIG9yIG5vdC4NCj4gPg0K PiA+IEJlc3QgcmVnYXJkcywNCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBBcmQgQmllc2hldXZlbA0KPiBbbWFpbHRvOmFyZC5i aWVzaGV1dmVsQGxpbmFyby5vcmddDQo+ID4+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDI2 LCAyMDE4IDM6MTQgQU0NCj4gPj4gVG86IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+ DQo+ID4+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgWmltbWVyLCBWaW5jZW50DQo+ID4+ IDx2aW5jZW50LnppbW1lckBpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcmlhbg0KPiA+PiA8YnJp YW4ucmljaGFyZHNvbkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA+PiA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBBbmRyZXcgRmlzaA0KPiA8YWZpc2hAYXBwbGUuY29tPjsg TGVpZg0KPiA+PiBMaW5kaG9sbSA8bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnPjsgRG9uZywgRXJp Yw0KPiA8ZXJpYy5kb25nQGludGVsLmNvbT47DQo+ID4+IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50 ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPj4gQ2Fy c2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT47IFNoaSwgU3RldmVuDQo+ID4+IDxz dGV2ZW4uc2hpQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAxLzddIE1k ZU1vZHVsZVBrZzogaW50cm9kdWNlDQo+IFBFL0NPRkYgaW1hZ2UNCj4gPj4gZW11bGF0b3IgcHJv dG9jb2wNCj4gPj4NCj4gPj4gT24gV2VkLCAyNiBTZXAgMjAxOCBhdCAxMjowNywgWmVuZywgU3Rh cg0KPiA8c3Rhci56ZW5nQGludGVsLmNvbT4gd3JvdGU6DQo+ID4+ID4NCj4gPj4gPiBBIGxpdHRs ZSBsYXRlIGZlZWRiYWNrLiBKdXN0IGFuIGlkZWEuDQo+ID4+ID4NCj4gPj4gPiBEbyB5b3UgdGhp bmsgd2hldGhlciBpdCBjYW4gbWFrZSB0aGUgY29uc3VtZXINCj4gc2ltcGxlcg0KPiA+PiBsaWtl IGJlbG93IG9yIG5vdD8NCj4gPj4gPg0KPiA+PiA+IEFkZCBhIG5ldyBBUEkgUmVnaXN0ZXJJbnRl cmZhY2VzIGluIHRoZSBwcm90b2NvbA0KPiBhbmQNCj4gPj4gYWRkIGEgd3JhcHBlciBkcml2ZXIg UGVDb2ZmRW11bGF0b3JEeGUuDQo+ID4+ID4gVGhlIGVtdWxhdG9ycyBjYW4gY2FsbCBSZWdpc3Rl ckludGVyZmFjZXMsIGFuZA0KPiA+PiBjb25zdW1lciB3aWxsIGNhbGwgb3RoZXIgQVBJcyBzaW1w bHksDQo+IFBlQ29mZkVtdWxhdG9yRHhlIHdpbGwgYmUgYQ0KPiA+PiB3cmFwcGVyIGFzIG1hbmFn ZXIuDQo+ID4+ID4NCj4gPj4gPiB0eXBlZGVmDQo+ID4+ID4gRUZJX1NUQVRVUw0KPiA+PiA+IChF RklBUEkNCj4gPj4gKkVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9SRUdJU1RFUl9JTlRFUkZB Q0VTKSAoDQo+ID4+ID4gICBJTiBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wN Cj4gKlRoaXMsDQo+ID4+ID4gICBJTg0KPiBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfSVNf SU1BR0VfU1VQUE9SVEVEDQo+ID4+IElzSW1hZ2VTdXBwb3J0ZWQsDQo+ID4+ID4gICBJTiBFREtJ SV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUkVHSVNURVJfSU1BR0UNCj4gPj4gUmVnaXN0ZXJJbWFn ZSwNCj4gPj4gPiAgIElOIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9VTlJFR0lTVEVSX0lN QUdFDQo+ID4+IFVucmVnaXN0ZXJJbWFnZQ0KPiA+PiA+ICAgKTsNCj4gPj4gPg0KPiA+PiA+IHR5 cGVkZWYgc3RydWN0DQo+IF9FREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wgew0K PiA+PiA+ICAgRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1JFR0lTVEVSX0lOVEVSRkFDRVMN Cj4gPj4gUmVnaXN0ZXJJbnRlcmZhY2VzOw0KPiA+PiA+ICAgRURLSUlfUEVDT0ZGX0lNQUdFX0VN VUxBVE9SX0lTX0lNQUdFX1NVUFBPUlRFRA0KPiA+PiBJc0ltYWdlU3VwcG9ydGVkOw0KPiA+PiA+ ICAgRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1JFR0lTVEVSX0lNQUdFDQo+ID4+IFJlZ2lz dGVySW1hZ2U7DQo+ID4+ID4gICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfVU5SRUdJU1RF Ul9JTUFHRQ0KPiA+PiBVbnJlZ2lzdGVySW1hZ2U7DQo+ID4+ID4gfSBFREtJSV9QRUNPRkZfSU1B R0VfRU1VTEFUT1JfUFJPVE9DT0w7DQo+ID4+ID4NCj4gPj4NCj4gPj4gSGkgU3RhciwNCj4gPj4N Cj4gPj4gVGhhbmtzIGZvciB0YWtpbmcgYSBsb29rLg0KPiA+Pg0KPiA+PiBJIHRyaWVkIHRvIGF2 b2lkIGludHJvZHVjaW5nIG5ldyBkcml2ZXJzIG9yIGxpYnJhcnkNCj4gY2xhc3NlcyBiZWNhdXNl IGl0DQo+ID4+IHdpbGwgYnJlYWsgZXhpc3RpbmcgcGxhdGZvcm1zIHRoYXQgaW5jb3Jwb3JhdGUN Cj4gRWJjRHhlLg0KPiA+PiBEbyB5b3UgdGhpbmsNCj4gPj4gdGhpcyBpcyBub3QgYW4gaXNzdWU/ DQo+ID4+DQo+ID4+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gPiBGcm9tOiBB cmQgQmllc2hldXZlbA0KPiA+PiBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+ ID4+ID4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjEsIDIwMTggNzowMiBBTQ0KPiA+PiA+IFRv OiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiA+IENjOiBBcmQgQmllc2hldXZlbCA8YXJk LmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47DQo+ID4+IFppbW1lciwgVmluY2VudCA8dmluY2VudC56 aW1tZXJAaW50ZWwuY29tPjsNCj4gUmljaGFyZHNvbiwgQnJpYW4NCj4gPj4gPGJyaWFuLnJpY2hh cmRzb25AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPj4gPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsgQW5kcmV3IEZpc2gNCj4gPGFmaXNoQGFwcGxlLmNvbT47IExlaWYNCj4g Pj4gTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IFplbmcsIFN0YXINCj4gPHN0 YXIuemVuZ0BpbnRlbC5jb20+Ow0KPiA+PiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29t PjsgTmksIFJ1aXl1DQo+IDxydWl5dS5uaUBpbnRlbC5jb20+OyBHYW8sDQo+ID4+IExpbWluZyA8 bGltaW5nLmdhb0BpbnRlbC5jb20+OyBDYXJzZXksIEphYmVuDQo+IDxqYWJlbi5jYXJzZXlAaW50 ZWwuY29tPjsNCj4gPj4gU2hpLCBTdGV2ZW4gPHN0ZXZlbi5zaGlAaW50ZWwuY29tPg0KPiA+PiA+ IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzddIE1kZU1vZHVsZVBrZzogaW50cm9kdWNlDQo+ID4+IFBF L0NPRkYgaW1hZ2UgZW11bGF0b3IgcHJvdG9jb2wNCj4gPj4gPg0KPiA+PiA+IEludHJvZHVjZSBh IHByb3RvY29sIHRoYXQgY2FuIGJlIGludm9rZWQgYnkgdGhlDQo+IGltYWdlDQo+ID4+IGxvYWRp bmcgc2VydmljZXMgdG8gZXhlY3V0ZSBmb3JlaWduIGFyY2hpdGVjdHVyZQ0KPiBQRS9DT0ZGIGlt YWdlcyB2aWEgYW4NCj4gPj4gZW11bGF0b3IuDQo+ID4+ID4NCj4gPj4gPiBDb250cmlidXRlZC11 bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbg0KPiBBZ3JlZW1lbnQNCj4gPj4gMS4xDQo+ID4+ ID4gU2lnbmVkLW9mZi1ieTogQXJkIEJpZXNoZXV2ZWwNCj4gPj4gPGFyZC5iaWVzaGV1dmVsQGxp bmFyby5vcmc+DQo+ID4+ID4gLS0tDQo+ID4+ID4NCj4gTWRlTW9kdWxlUGtnL0luY2x1ZGUvUHJv dG9jb2wvUGVDb2ZmSW1hZ2VFbXVsYXRvci5oIHwNCj4gPj4gMTAyICsrKysrKysrKysrKysrKysr KysrDQo+ID4+ID4gIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+IHwNCj4gPj4gNCAr DQo+ID4+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKykNCj4gPj4gPg0KPiA+ PiA+IGRpZmYgLS1naXQNCj4gPj4NCj4gYS9NZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90b2NvbC9Q ZUNvZmZJbWFnZUVtdWxhdG9yLmgNCj4gPj4NCj4gYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90 b2NvbC9QZUNvZmZJbWFnZUVtdWxhdG9yLmgNCj4gPj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjdiYWQ1NTYyMDljDQo+ID4+ID4gLS0tIC9kZXYv bnVsbA0KPiA+PiA+ICsrKw0KPiA+Pg0KPiBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29s L1BlQ29mZkltYWdlRW11bGF0b3IuaA0KPiA+PiA+IEBAIC0wLDAgKzEsMTAyIEBADQo+ID4+ID4g Ky8qKiBAZmlsZQ0KPiA+PiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvLCBMdGQuIEFs bCByaWdodHMNCj4gPj4gcmVzZXJ2ZWQuPEJSPg0KPiA+PiA+ICsNCj4gPj4gPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZQ0KPiA+PiBsaWNlbnNlZCBh bmQgbWFkZQ0KPiA+PiA+ICsgYXZhaWxhYmxlICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlDQo+IEJTRA0KPiA+PiBMaWNlbnNlIHdoaWNoDQo+ID4+ID4gKyBhY2NvbXBhbmll cyB0aGlzICBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0DQo+IG9mDQo+ID4+IHRoZSBsaWNl bnNlIG1heSBiZQ0KPiA+PiA+ICsgZm91bmQgYXQgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtDQo+ID4+IGxpY2Vuc2UucGhwDQo+ID4+ID4gKw0KPiA+PiA+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QNCj4gTElDRU5TRSBPTg0KPiA+PiBBTiAi QVMgSVMiIEJBU0lTLA0KPiA+PiA+ICsgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkNCj4gS0lORCwNCj4gPj4gRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g Pj4gPiArDQo+ID4+ID4gKyoqLw0KPiA+PiA+ICsNCj4gPj4gPiArI2lmbmRlZiBQRUNPRkZfSU1B R0VfRU1VTEFUT1JfUFJPVE9DT0xfR1VJRF9IDQo+ID4+ID4gKyNkZWZpbmUgUEVDT0ZGX0lNQUdF X0VNVUxBVE9SX1BST1RPQ09MX0dVSURfSA0KPiA+PiA+ICsNCj4gPj4gPiArI2RlZmluZSBFREtJ SV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0xfR1VJRA0KPiBcDQo+ID4+ID4gKyAgeyAw eDk2RjQ2MTUzLCAweDk3QTcsIDB4NDc5MywgeyAweEFDLCAweEMxLA0KPiAweEZBLA0KPiA+PiAw eDE5LCAweEJGLCAweDc4LA0KPiA+PiA+ICsweEVBLCAweDk3IH0gfQ0KPiA+PiA+ICsNCj4gPj4g PiArdHlwZWRlZiBzdHJ1Y3QNCj4gX0VES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NP TA0KPiA+PiA+ICtFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0w7DQo+ID4+ID4g Kw0KPiA+PiA+ICsvKioNCj4gPj4gPiArICBDaGVjayB3aGV0aGVyIHRoZSBlbXVsYXRvciBzdXBw b3J0cyBleGVjdXRpbmcgYQ0KPiA+PiBjZXJ0YWluIFBFL0NPRkYgaW1hZ2UNCj4gPj4gPiArDQo+ ID4+ID4gKyAgQHBhcmFtW2luXSBUaGlzICAgICAgICAgVGhpcyBwb2ludGVyIGZvcg0KPiA+PiBF REtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wNCj4gPj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3R1cmUgIEBwYXJhbVtpbl0NCj4gTWFjaGluZVR5cGUgIFRoZQ0K PiA+PiA+ICsgbWFjaGluZSB0eXBlIGZvciB3aGljaA0KPiA+PiB0aGUgaW1hZ2Ugd2FzIGJ1aWx0 DQo+ID4+ID4gKyAgQHBhcmFtW2luXSBJbWFnZVR5cGUgICAgV2hldGhlciB0aGUgaW1hZ2UgaXMg YW4NCj4gPj4gYXBwbGljYXRpb24sIGEgYm9vdCB0aW1lDQo+ID4+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZHJpdmVyIG9yIGEgcnVudGltZQ0KPiBkcml2ZXIuDQo+ID4+ID4gKyAgQHBh cmFtW2luXSBEZXZpY2VQYXRoICAgUGF0aCB0byBkZXZpY2Ugd2hlcmUNCj4gdGhlDQo+ID4+IGlt YWdlIG9yaWdpbmF0ZWQNCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiwg YSBQQ0kgb3B0aW9uDQo+IFJPTSkNCj4gPj4gPiArDQo+ID4+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgICAgVGhlIGltYWdlIGlzIHN1cHBvcnRlZA0KPiBieQ0KPiA+PiB0aGUgZW11bGF0b3IN Cj4gPj4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgICBUaGUgaW1hZ2UgaXMgbm90DQo+IHN1 cHBvcnRlZA0KPiA+PiBieSB0aGUgZW11bGF0b3IuDQo+ID4+ID4gKyoqLw0KPiA+PiA+ICt0eXBl ZGVmDQo+ID4+ID4gK0JPT0xFQU4NCj4gPj4gPiArKEVGSUFQSQ0KPiA+PiAqRURLSUlfUEVDT0ZG X0lNQUdFX0VNVUxBVE9SX0lTX0lNQUdFX1NVUFBPUlRFRCkgKA0KPiA+PiA+ICsgIElOICBFREtJ SV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wNCj4gKlRoaXMsDQo+ID4+ID4gKyAgSU4g IFVJTlQxNg0KPiA+PiBNYWNoaW5lVHlwZSwNCj4gPj4gPiArICBJTiAgVUlOVDE2DQo+ID4+IElt YWdlVHlwZSwNCj4gPj4gPiArICBJTiAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MDQo+ID4+ICpE ZXZpY2VQYXRoICAgT1BUSU9OQUwNCj4gPj4gPiArICApOw0KPiA+PiA+ICsNCj4gPj4gPiArLyoq DQo+ID4+ID4gKyAgUmVnaXN0ZXIgYSBzdXBwb3J0ZWQgUEUvQ09GRiBpbWFnZSB3aXRoIHRoZQ0K PiA+PiBlbXVsYXRvci4gQWZ0ZXIgdGhpcyBjYWxsDQo+ID4+ID4gKyAgY29tcGxldGVzIHN1Y2Nl c3NmdWxseSwgdGhlIFBFL0NPRkYgaW1hZ2UgbWF5DQo+IGJlDQo+ID4+IHN0YXJ0ZWQgYXMgdXN1 YWwsDQo+ID4+ID4gK2FuZA0KPiA+PiA+ICsgIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0 aGUgZW11bGF0b3INCj4gPj4gaW1wbGVtZW50YXRpb24gdGhhdCBhbnkNCj4gPj4gPiArYnJhbmNo DQo+ID4+ID4gKyAgaW50byB0aGUgY29kZSBzZWN0aW9uIG9mIHRoZSBpbWFnZSAoaW5jbHVkaW5n DQo+ID4+IHJldHVybnMgZnJvbSBmdW5jdGlvbnMNCj4gPj4gPiArY2FsbGVkDQo+ID4+ID4gKyAg ZnJvbSB0aGUgZm9yZWlnbiBjb2RlKSBpcyBleGVjdXRlZCBhcyBpZiBpdA0KPiB3ZXJlDQo+ID4+ IHJ1bm5pbmcgb24gdGhlDQo+ID4+ID4gK21hY2hpbmUNCj4gPj4gPiArICB0eXBlIGl0IHdhcyBi dWlsdCBmb3IuDQo+ID4+ID4gKw0KPiA+PiA+ICsgIEBwYXJhbVtpbl0gICAgICBUaGlzICAgICAg ICAgIFRoaXMgcG9pbnRlciBmb3INCj4gPj4gPiArDQo+ID4+IEVES0lJX1BFQ09GRl9JTUFHRV9F TVVMQVRPUl9QUk9UT0NPTCBzdHJ1Y3R1cmUNCj4gPj4gPiArICBAcGFyYW1baW5dICAgICAgSW1h Z2VCYXNlICAgICBUaGUgYmFzZSBhZGRyZXNzDQo+IGluDQo+ID4+IG1lbW9yeSBvZiB0aGUgUEUv Q09GRiBpbWFnZQ0KPiA+PiA+ICsgIEBwYXJhbVtpbl0gICAgICBJbWFnZVNpemUgICAgIFRoZSBz aXplIGluDQo+IG1lbW9yeSBvZg0KPiA+PiB0aGUgUEUvQ09GRiBpbWFnZQ0KPiA+PiA+ICsgIEBw YXJhbVtpbixvdXRdICBFbnRyeVBvaW50ICAgIFRoZSBlbnRyeSBwb2ludA0KPiBvZg0KPiA+PiB0 aGUgUEUvQ09GRiBpbWFnZS4gUGFzc2VkIGJ5DQo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVmZXJlbmNlIHNvIHRoYXQNCj4gdGhlDQo+ID4+IGVtdWxhdG9yIG1heSBt b2RpZnkgaXQuDQo+ID4+ID4gKw0KPiA+PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIFRoZSBpbWFnZSB3YXMNCj4gPj4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBlbXVsYXRvciBhbmQN Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgc3RhcnRlZCBh cw0KPiA+PiB1c3VhbC4NCj4gPj4gPiArICBAcmV0dmFsIG90aGVyICAgICAgICAgICAgICAgICBU aGUgaW1hZ2UgY291bGQNCj4gbm90DQo+ID4+IGJlIHJlZ2lzdGVyZWQuDQo+ID4+ID4gKw0KPiA+ PiA+ICsgIElmIHRoZSBQRS9DT0ZGIG1hY2hpbmUgdHlwZSBvciBpbWFnZSB0eXBlIGFyZQ0KPiBu b3QNCj4gPj4gc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+PiA+ICtlbXVsYXRvciwNCj4gPj4gPiArICB0 aGVuIEFTU0VSVCgpLg0KPiA+PiA+ICsqKi8NCj4gPj4gPiArdHlwZWRlZg0KPiA+PiA+ICtFRklf U1RBVFVTDQo+ID4+ID4gKyhFRklBUEkNCj4gKkVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9S RUdJU1RFUl9JTUFHRSkNCj4gPj4gKA0KPiA+PiA+ICsgIElOICAgICAgRURLSUlfUEVDT0ZGX0lN QUdFX0VNVUxBVE9SX1BST1RPQ09MDQo+ID4+ICpUaGlzLA0KPiA+PiA+ICsgIElOICAgICAgRUZJ X1BIWVNJQ0FMX0FERFJFU1MNCj4gPj4gSW1hZ2VCYXNlLA0KPiA+PiA+ICsgIElOICAgICAgVUlO VDY0DQo+ID4+IEltYWdlU2l6ZSwNCj4gPj4gPiArICBJTiAgT1VUIEVGSV9JTUFHRV9FTlRSWV9Q T0lOVA0KPiA+PiAqRW50cnlQb2ludA0KPiA+PiA+ICsgICk7DQo+ID4+ID4gKw0KPiA+PiA+ICsv KioNCj4gPj4gPiArICBVbnJlZ2lzdGVyIGEgUEUvQ09GRiBpbWFnZSB0aGF0IGhhcyBiZWVuDQo+ IHJlZ2lzdGVyZWQNCj4gPj4gd2l0aCB0aGUgZW11bGF0b3IuDQo+ID4+ID4gKyAgVGhpcyBzaG91 bGQgYmUgZG9uZSBiZWZvcmUgdGhlIGltYWdlIGlzDQo+IHVubG9hZGVkDQo+ID4+IGZyb20gbWVt b3J5Lg0KPiA+PiA+ICsNCj4gPj4gPiArICBAcGFyYW1baW5dIFRoaXMgICAgICAgICBUaGlzIHBv aW50ZXIgZm9yDQo+ID4+IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTA0KPiA+ PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZQ0KPiA+PiA+ICsgIEBwYXJh bVtpbl0gSW1hZ2VCYXNlICAgIFRoZSBiYXNlIGFkZHJlc3MgaW4NCj4gbWVtb3J5DQo+ID4+IG9m IHRoZSBQRS9DT0ZGIGltYWdlDQo+ID4+ID4gKw0KPiA+PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgIFRoZSBpbWFnZSB3YXMNCj4gdW5yZWdpc3RlcmVkDQo+ID4+IHdpdGggdGhlIGVtdWxh dG9yLg0KPiA+PiA+ICsgIEByZXR2YWwgb3RoZXIgICAgICAgICAgIEltYWdlIGNvdWxkIG5vdCBi ZQ0KPiA+PiB1bmxvYWRlZC4NCj4gPj4gPiArKiovDQo+ID4+ID4gK3R5cGVkZWYNCj4gPj4gPiAr RUZJX1NUQVRVUw0KPiA+PiA+ICsoRUZJQVBJDQo+ID4+ICpFREtJSV9QRUNPRkZfSU1BR0VfRU1V TEFUT1JfVU5SRUdJU1RFUl9JTUFHRSkgKA0KPiA+PiA+ICsgIElOICBFREtJSV9QRUNPRkZfSU1B R0VfRU1VTEFUT1JfUFJPVE9DT0wNCj4gKlRoaXMsDQo+ID4+ID4gKyAgSU4gIEVGSV9QSFlTSUNB TF9BRERSRVNTDQo+ID4+IEltYWdlQmFzZQ0KPiA+PiA+ICsgICk7DQo+ID4+ID4gKw0KPiA+PiA+ ICt0eXBlZGVmIHN0cnVjdA0KPiBfRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RPQ09M DQo+ID4+IHsNCj4gPj4gPiArICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfSVNfSU1BR0Vf U1VQUE9SVEVEDQo+ID4+IElzSW1hZ2VTdXBwb3J0ZWQ7DQo+ID4+ID4gKyAgRURLSUlfUEVDT0ZG X0lNQUdFX0VNVUxBVE9SX1JFR0lTVEVSX0lNQUdFDQo+ID4+IFJlZ2lzdGVySW1hZ2U7DQo+ID4+ ID4gKyAgRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1VOUkVHSVNURVJfSU1BR0UNCj4gPj4g VW5yZWdpc3RlckltYWdlOw0KPiA+PiA+ICt9IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9Q Uk9UT0NPTDsNCj4gPj4gPiArDQo+ID4+ID4gK2V4dGVybiBFRklfR1VJRA0KPiA+PiBnRWRraWlQ ZUNvZmZJbWFnZUVtdWxhdG9yUHJvdG9jb2xHdWlkOw0KPiA+PiA+ICsNCj4gPj4gPiArI2VuZGlm DQo+ID4+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ IGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgaW5kZXgNCj4gPj4gNmE2ZDk2NjBlZGMy Li5iZTMwNzMyOWY5MDEgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCj4gPj4gPiArKysgYi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ PiA+IEBAIC02MTcsNiArNjE3LDEwIEBADQo+ID4+ID4NCj4gPj4gPiAgICAjIyBJbmNsdWRlL1By b3RvY29sL0F0YUF0YXBpUG9saWN5LmgNCj4gPj4gPiAgICBnRWRraWlBdGFBdGFwaVBvbGljeVBy b3RvY29sR3VpZCA9IHsNCj4gMHhlNTljZDc2OSwNCj4gPj4gMHg1MDgzLCAweDRmMjYseyAweDkw LCAweDk0LCAweDZjLCAweDkxLCAweDlmLCAweDkxLA0KPiAweDZjLCAweDRlIH0gfQ0KPiA+PiA+ ICsNCj4gPj4gPiArICAjIyBJbmNsdWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3IuaA0K PiA+PiA+ICsgIGdFZGtpaVBlQ29mZkltYWdlRW11bGF0b3JQcm90b2NvbEd1aWQgPSB7DQo+ID4+ IDB4OTZmNDYxNTMsIDB4OTdhNywgMHg0NzkzLA0KPiA+PiA+ICsgeyAweGFjLCAweGMxLCAweGZh LCAweDE5LCAweGJmLCAweDc4LCAweGVhLCAweDk3DQo+IH0gfQ0KPiA+PiA+ICsNCj4gPj4gPiAg Iw0KPiA+PiA+ICAjIFtFcnJvci5nRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWRdDQo+ID4+ ID4gICMgICAweDgwMDAwMDAxIHwgSW52YWxpZCB2YWx1ZSBwcm92aWRlZC4NCj4gPj4gPiAtLQ0K PiA+PiA+IDIuMTcuMQ0KPiA+PiA+DQo=