From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: zhichao.gao@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Tue, 24 Sep 2019 06:42:18 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Sep 2019 06:42:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,544,1559545200"; d="scan'208";a="191023795" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga003.jf.intel.com with ESMTP; 24 Sep 2019 06:42:17 -0700 Received: from fmsmsx126.amr.corp.intel.com (10.18.125.43) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 24 Sep 2019 06:42:17 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX126.amr.corp.intel.com (10.18.125.43) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 24 Sep 2019 06:42:16 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.92]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.132]) with mapi id 14.03.0439.000; Tue, 24 Sep 2019 21:42:15 +0800 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "'philmd@redhat.com'" , "Bi, Dandan" CC: "Wang, Jian J" , "Wu, Hao A" , "Ni, Ray" , "Gao, Liming" , "Laszlo Ersek" Subject: Re: [edk2-devel] [patch v3 3/5] MdeModulePkg/UefiBootManager: Unload image on EFI_SECURITY_VIOLATION Thread-Topic: [edk2-devel] [patch v3 3/5] MdeModulePkg/UefiBootManager: Unload image on EFI_SECURITY_VIOLATION Thread-Index: AQHVctrUhM2K7CTSB0uHEiBOLgR076c6SjUAgACKk8A= Date: Tue, 24 Sep 2019 13:42:14 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B83D7DF@SHSMSX101.ccr.corp.intel.com> References: <20190924131644.10412-1-dandan.bi@intel.com> <20190924131644.10412-4-dandan.bi@intel.com> <82949612-609a-27cf-2800-04ce8033ab9d@redhat.com> In-Reply-To: <82949612-609a-27cf-2800-04ce8033ab9d@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZWRhMjI3YWQtNDM2Yi00MWQ2LTlkZmMtN2YzYTUwZmNkNDU2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUzNQWjlucUJmZmpyQm1TM3FzSzFZNW16UlA5MGxNRHduS0x5UEM1dEdSR1ZVY0xXbFlwVVwvZkJhXC9UN1M3VjJaIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: zhichao.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TmljZSBjYXRjaC4gTW92aW5nIHRoZSBjaGVjayBpbnRvIHRoZSBpZiBjb25kaXRpb25hbCBzZWN0 aW9uIHdvdWxkIGF2b2lkIHRoZSBhZGRpdGlvbmFsIGNoZWNrIHdoZW4gdGhlIHN0YXR1cyBpcyBF RklfU1VDQ0VTUy4NCg0KUmV2aWV3ZWQtYnk6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRl bC5jb20+DQoNClRoYW5rcywNClpoaWNoYW8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyBbbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBz LmlvXSBPbiBCZWhhbGYgT2YNCj4gUGhpbGlwcGUgTWF0aGlldS1EYXVkw6kNCj4gU2VudDogVHVl c2RheSwgU2VwdGVtYmVyIDI0LCAyMDE5IDk6MjIgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBz LmlvOyBCaSwgRGFuZGFuIDxkYW5kYW4uYmlAaW50ZWwuY29tPg0KPiBDYzogV2FuZywgSmlhbiBK IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT47 DQo+IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBHYW8sIFpoaWNoYW8gPHpoaWNoYW8uZ2Fv QGludGVsLmNvbT47IEdhbywNCj4gTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IExhc3ps byBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0g W3BhdGNoIHYzIDMvNV0gTWRlTW9kdWxlUGtnL1VlZmlCb290TWFuYWdlcjoNCj4gVW5sb2FkIGlt YWdlIG9uIEVGSV9TRUNVUklUWV9WSU9MQVRJT04NCj4gDQo+IE9uIDkvMjQvMTkgMzoxNiBQTSwg RGFuZGFuIEJpIHdyb3RlOg0KPiA+IEZvciB0aGUgTG9hZEltYWdlKCkgYm9vdCBzZXJ2aWNlLCB3 aXRoIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gcmV0dmFsLA0KPiA+IHRoZSBJbWFnZSB3YXMgbG9h ZGVkIGFuZCBhbiBJbWFnZUhhbmRsZSB3YXMgY3JlYXRlZCB3aXRoIGEgdmFsaWQNCj4gPiBFRklf TE9BREVEX0lNQUdFX1BST1RPQ09MLCBidXQgdGhlIGltYWdlIGNhbiBub3QgYmUgc3RhcnRlZCBy aWdodA0KPiBub3cuDQo+ID4gVGhpcyBmb2xsb3dzIFVFRkkgU3BlYy4NCj4gPg0KPiA+IEJ1dCBp ZiB0aGUgY2FsbGVyIG9mIExvYWRJbWFnZSgpIGRvZXNuJ3QgaGF2ZSB0aGUgb3B0aW9uIHRvIGRl ZmVyIHRoZQ0KPiA+IGV4ZWN1dGlvbiBvZiBhbiBpbWFnZSwgd2UgY2FuIG5vdCB0cmVhdCBFRklf U0VDVVJJVFlfVklPTEFUSU9OIGxpa2UNCj4gPiBhbnkgb3RoZXIgTG9hZEltYWdlKCkgZXJyb3Is IHdlIHNob3VsZCB1bmxvYWQgaW1hZ2UgZm9yIHRoZQ0KPiA+IEVGSV9TRUNVUklUWV9WSU9MQVRJ T04gdG8gYXZvaWQgcmVzb3VyY2UgbGVhay4NCj4gPg0KPiA+IFRoaXMgcGF0Y2ggaXMgdG8gZG8g ZXJyb3IgaGFuZGxpbmcgZm9yIEVGSV9TRUNVUklUWV9WSU9MQVRJT04NCj4gPiBleHBsaWNpdGx5 IGZvciB0aGUgY2FsbGVycyBpbiBVZWZpQm9vdE1hbmFnZXJMaWIgd2hpY2ggZG9uJ3QgaGF2ZSB0 aGUNCj4gPiBwb2xpY3kgdG8gZGVmZXIgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UuDQo+ID4N Cj4gPiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBDYzogSGFv IEEgV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwu Y29tPg0KPiA+IENjOiBaaGljaGFvIEdhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+IENj OiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBDYzogTGFzemxvIEVyc2Vr IDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiBDYzogUGhpbGlwcGUgTWF0aGlldS1EYXVkZSA8cGhp bG1kQHJlZGhhdC5jb20+DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTE5OTINCj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5kYW4gQmkgPGRhbmRh bi5iaUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gVjM6IEVuYWhuY2UgdGhlIGVycm9yIGhhbmRs aW5nIGxvZ2ljIGluIEJtTG9hZE9wdGlvbi5jIGFuZCBCbU1pc2MuYy4NCj4gPiAgTWRlTW9kdWxl UGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtQm9vdC5jICAgfCAgOSArKysrKysrKysN Cj4gPiAgLi4uL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtTG9hZE9wdGlvbi5jICAgICAg fCAxNCArKysrKysrKysrKystLQ0KPiA+ICBNZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1h bmFnZXJMaWIvQm1NaXNjLmMgICB8IDE0DQo+ICsrKysrKysrKysrKy0tDQo+ID4gIDMgZmlsZXMg Y2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYg LS1naXQgYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Cb290LmMN Cj4gPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi9CbUJvb3QuYw0K PiA+IGluZGV4IDk1MjAzM2ZjODIuLjc2MGQ3NjQ3YjggMTAwNjQ0DQo+ID4gLS0tIGEvTWRlTW9k dWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtQm9vdC5jDQo+ID4gKysrIGIvTWRl TW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtQm9vdC5jDQo+ID4gQEAgLTE4 NTksMTAgKzE4NTksMTkgQEAgRWZpQm9vdE1hbmFnZXJCb290ICgNCj4gPiAgICAgIGlmIChGaWxl UGF0aCAhPSBOVUxMKSB7DQo+ID4gICAgICAgIEZyZWVQb29sIChGaWxlUGF0aCk7DQo+ID4gICAg ICB9DQo+ID4NCj4gPiAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAg Ly8NCj4gPiArICAgICAgLy8gV2l0aCBFRklfU0VDVVJJVFlfVklPTEFUSU9OIHJldHZhbCwgdGhl IEltYWdlIHdhcyBsb2FkZWQgYW5kIGFuDQo+IEltYWdlSGFuZGxlIHdhcyBjcmVhdGVkDQo+ID4g KyAgICAgIC8vIHdpdGggYSB2YWxpZCBFRklfTE9BREVEX0lNQUdFX1BST1RPQ09MLCBidXQgdGhl IGltYWdlIGNhbiBub3QNCj4gYmUgc3RhcnRlZCByaWdodCBub3cuDQo+ID4gKyAgICAgIC8vIElm IHRoZSBjYWxsZXIgZG9lc24ndCBoYXZlIHRoZSBvcHRpb24gdG8gZGVmZXIgdGhlIGV4ZWN1dGlv biBvZiBhbg0KPiBpbWFnZSwgd2Ugc2hvdWxkDQo+ID4gKyAgICAgIC8vIHVubG9hZCBpbWFnZSBm b3IgdGhlIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gdG8gYXZvaWQgcmVzb3VyY2UNCj4gbGVhay4N Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgaWYgKFN0YXR1cyA9PSBFRklfU0VDVVJJVFlfVklP TEFUSU9OKSB7DQo+ID4gKyAgICAgICAgZ0JTLT5VbmxvYWRJbWFnZSAoSW1hZ2VIYW5kbGUpOw0K PiA+ICsgICAgICB9DQo+ID4gICAgICAgIC8vDQo+ID4gICAgICAgIC8vIFJlcG9ydCBTdGF0dXMg Q29kZSB3aXRoIHRoZSBmYWlsdXJlIHN0YXR1cyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmYWlsdXJl DQo+IHRvIGxvYWQgYm9vdCBvcHRpb24NCj4gPiAgICAgICAgLy8NCj4gPiAgICAgICAgQm1SZXBv cnRMb2FkRmFpbHVyZQ0KPiAoRUZJX1NXX0RYRV9CU19FQ19CT09UX09QVElPTl9MT0FEX0VSUk9S LCBTdGF0dXMpOw0KPiA+ICAgICAgICBCb290T3B0aW9uLT5TdGF0dXMgPSBTdGF0dXM7DQo+ID4g ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi9CbUxv YWRPcHRpb24uYw0KPiA+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGli L0JtTG9hZE9wdGlvbi5jDQo+ID4gaW5kZXggMDc1OTJmOGViZC4uODkzNzJiM2I5NyAxMDA2NDQN Cj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2Fk T3B0aW9uLmMNCj4gPiArKysgYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJM aWIvQm1Mb2FkT3B0aW9uLmMNCj4gPiBAQCAtMSw5ICsxLDkgQEANCj4gPiAgLyoqIEBmaWxlDQo+ ID4gICAgTG9hZCBvcHRpb24gbGlicmFyeSBmdW5jdGlvbnMgd2hpY2ggcmVsYXRlIHdpdGggY3Jl YXRpbmcgYW5kIHByb2Nlc3NpbmcNCj4gbG9hZCBvcHRpb25zLg0KPiA+DQo+ID4gLUNvcHlyaWdo dCAoYykgMjAxMSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVz ZXJ2ZWQuPEJSPg0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDE5LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cw0KPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gIChDKSBDb3B5cmlnaHQg MjAxNS0yMDE4IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+DQo+ ID4gICoqLw0KPiA+DQo+ID4gQEAgLTE0MDksMTEgKzE0MDksMjEgQEAgRWZpQm9vdE1hbmFnZXJQ cm9jZXNzTG9hZE9wdGlvbiAoDQo+ID4gICAgICAgICAgICAgICAgICAgICAgRmlsZVNpemUsDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgJkltYWdlSGFuZGxlDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiAgICAgIEZyZWVQb29sIChGaWxlQnVmZmVyKTsNCj4gPg0KPiA+IC0gICAg aWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gV2l0aCBFRklfU0VDVVJJVFlfVklP TEFUSU9OIHJldHZhbCwgdGhlIEltYWdlIHdhcyBsb2FkZWQgYW5kIGFuDQo+IEltYWdlSGFuZGxl IHdhcyBjcmVhdGVkDQo+ID4gKyAgICAgIC8vIHdpdGggYSB2YWxpZCBFRklfTE9BREVEX0lNQUdF X1BST1RPQ09MLCBidXQgdGhlIGltYWdlIGNhbiBub3QNCj4gYmUgc3RhcnRlZCByaWdodCBub3cu DQo+ID4gKyAgICAgIC8vIElmIHRoZSBjYWxsZXIgZG9lc24ndCBoYXZlIHRoZSBvcHRpb24gdG8g ZGVmZXIgdGhlIGV4ZWN1dGlvbiBvZiBhbg0KPiBpbWFnZSwgd2Ugc2hvdWxkDQo+ID4gKyAgICAg IC8vIHVubG9hZCBpbWFnZSBmb3IgdGhlIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gdG8gYXZvaWQg cmVzb3VyY2UNCj4gbGVhay4NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgaWYgKFN0YXR1cyA9 PSBFRklfU0VDVVJJVFlfVklPTEFUSU9OKSB7DQo+ID4gKyAgICAgICAgZ0JTLT5VbmxvYWRJbWFn ZSAoSW1hZ2VIYW5kbGUpOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9IGVsc2Ugew0KPiANCj4g VGhhbmtzIGZvciBjaGFuZ2luZyB0aGlzIERhbmRhbiENCj4gDQo+ID4gICAgICAgIFN0YXR1cyA9 IGdCUy0+SGFuZGxlUHJvdG9jb2wgKEltYWdlSGFuZGxlLA0KPiAmZ0VmaUxvYWRlZEltYWdlUHJv dG9jb2xHdWlkLCAoVk9JRCAqKikmSW1hZ2VJbmZvKTsNCj4gPiAgICAgICAgQVNTRVJUX0VGSV9F UlJPUiAoU3RhdHVzKTsNCj4gPg0KPiA+ICAgICAgICBJbWFnZUluZm8tPkxvYWRPcHRpb25zU2l6 ZSA9IExvYWRPcHRpb24tPk9wdGlvbmFsRGF0YVNpemU7DQo+ID4gICAgICAgIEltYWdlSW5mby0+ TG9hZE9wdGlvbnMgPSBMb2FkT3B0aW9uLT5PcHRpb25hbERhdGE7IGRpZmYgLS1naXQNCj4gPiBh L01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi9CbU1pc2MuYw0KPiA+IGIv TWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtTWlzYy5jDQo+ID4gaW5k ZXggNmI4ZmI0ZDkyNC4uODk1OTU3NDdhZiAxMDA2NDQNCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cv TGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1NaXNjLmMNCj4gPiArKysgYi9NZGVNb2R1bGVQ a2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1NaXNjLmMNCj4gPiBAQCAtMSw5ICsxLDkg QEANCj4gPiAgLyoqIEBmaWxlDQo+ID4gICAgTWlzYyBsaWJyYXJ5IGZ1bmN0aW9ucy4NCj4gPg0K PiA+IC1Db3B5cmlnaHQgKGMpIDIwMTEgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiArQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxOSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICAo QykgQ29weXJpZ2h0IDIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQg TFA8QlI+DQo+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4NCj4gPiAgKiovDQo+ID4NCj4gPiBAQCAtNDkxLDExICs0OTEsMjEgQEAgRWZpQm9vdE1h bmFnZXJEaXNwYXRjaERlZmVycmVkSW1hZ2VzICgNCj4gPiAgICAgICAgICBJbWFnZURldmljZVBh dGgsDQo+ID4gICAgICAgICAgTlVMTCwNCj4gPiAgICAgICAgICAwLA0KPiA+ICAgICAgICAgICZJ bWFnZUhhbmRsZQ0KPiA+ICAgICAgICApOw0KPiA+IC0gICAgICBpZiAoIUVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAg ICAgLy8NCj4gPiArICAgICAgICAvLyBXaXRoIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gcmV0dmFs LCB0aGUgSW1hZ2Ugd2FzIGxvYWRlZCBhbmQNCj4gYW4gSW1hZ2VIYW5kbGUgd2FzIGNyZWF0ZWQN Cj4gPiArICAgICAgICAvLyB3aXRoIGEgdmFsaWQgRUZJX0xPQURFRF9JTUFHRV9QUk9UT0NPTCwg YnV0IHRoZSBpbWFnZSBjYW4NCj4gbm90IGJlIHN0YXJ0ZWQgcmlnaHQgbm93Lg0KPiA+ICsgICAg ICAgIC8vIElmIHRoZSBjYWxsZXIgZG9lc24ndCBoYXZlIHRoZSBvcHRpb24gdG8gZGVmZXIgdGhl IGV4ZWN1dGlvbiBvZiBhbg0KPiBpbWFnZSwgd2Ugc2hvdWxkDQo+ID4gKyAgICAgICAgLy8gdW5s b2FkIGltYWdlIGZvciB0aGUgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiB0byBhdm9pZCByZXNvdXJj ZQ0KPiBsZWFrLg0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgaWYgKFN0YXR1cyA9PSBF RklfU0VDVVJJVFlfVklPTEFUSU9OKSB7DQo+ID4gKyAgICAgICAgICBnQlMtPlVubG9hZEltYWdl IChJbWFnZUhhbmRsZSk7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICB9IGVsc2Ugew0KPiAN Cj4gUmV2aWV3ZWQtYnk6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZGUgPHBoaWxtZEByZWRoYXQuY29t Pg0KPiANCj4gPiAgICAgICAgICBMb2FkQ291bnQrKzsNCj4gPiAgICAgICAgICAvLw0KPiA+ICAg ICAgICAgIC8vIEJlZm9yZSBjYWxsaW5nIHRoZSBpbWFnZSwgZW5hYmxlIHRoZSBXYXRjaGRvZyBU aW1lciBmb3INCj4gPiAgICAgICAgICAvLyBhIDUgTWludXRlIHBlcmlvZA0KPiA+ICAgICAgICAg IC8vDQo+ID4NCj4gDQo+IA0KDQo=