From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web11.485.1572413750630916216 for ; Tue, 29 Oct 2019 22:35:50 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: jian.j.wang@intel.com) 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; 29 Oct 2019 22:35:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,246,1569308400"; d="scan'208";a="211253429" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga001.fm.intel.com with ESMTP; 29 Oct 2019 22:35:49 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 29 Oct 2019 22:35:49 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 29 Oct 2019 22:35:49 -0700 Received: from shsmsx107.ccr.corp.intel.com ([169.254.9.63]) by shsmsx102.ccr.corp.intel.com ([169.254.2.108]) with mapi id 14.03.0439.000; Wed, 30 Oct 2019 13:35:47 +0800 From: "Wang, Jian J" To: "Wang, Sunny (HPS SW)" , "devel@edk2.groups.io" , "Ni, Ray" , "Gao, Zhichao" , "lersek@redhat.com" , "Wu, Hao A" CC: "Li, Walon" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/BdsDxe: Make PlatformRecovery work regardless of OsIndications Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/BdsDxe: Make PlatformRecovery work regardless of OsIndications Thread-Index: AQHVg/Ucxgo4C4WdEUOOELSkEJT3lKdcYfSAgAAJaQCAABLQAIAKMVTwgACQLwCAAFnJgIALJk7Q Date: Wed, 30 Oct 2019 05:35:46 +0000 Message-ID: References: <20191016074007.17572-1-sunnywang@hpe.com> <573f0624-50c5-1f12-ed4a-a4747339c839@redhat.com> <3CE959C139B4C44DBEA1810E3AA6F9000B857321@SHSMSX101.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5C32D9C2@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYzkwNGY0OTEtM2VlNi00Y2FhLWJkMzEtMDkzNTAyN2M3Njk1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiWTh3bEZ2TjhLckxsR0pCMVhOZ0hCUmVrWTZaNzlkXC9USGhCWjdaTFBaOVdTK1QrcjRUTUxreFZNb2VGRGhqNVUifQ== 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: jian.j.wang@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UHVzaGVkIGF0IGIxNTY0NjQ4NGVhZmZjZjdjYzQ2NGZkZWEwMjE0NDk4ZjI2YWRkYzINCg0KUmVn YXJkcywNCkppYW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXYW5n LCBTdW5ueSAoSFBTIFNXKSA8c3Vubnl3YW5nQGhwZS5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwg T2N0b2JlciAyMywgMjAxOSA3OjIwIFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTmks IFJheSA8cmF5Lm5pQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndhbmdAaW50 ZWwuY29tPjsgR2FvLCBaaGljaGFvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+Ow0KPiBsZXJzZWtA cmVkaGF0LmNvbTsgV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+DQo+IENjOiBMaSwgV2Fs b24gPHdhbG9uLmxpQGhwZS5jb20+OyBXYW5nLCBTdW5ueSAoSFBTIFNXKQ0KPiA8c3Vubnl3YW5n QGhwZS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQ a2cvQmRzRHhlOiBNYWtlDQo+IFBsYXRmb3JtUmVjb3Zlcnkgd29yayByZWdhcmRsZXNzIG9mIE9z SW5kaWNhdGlvbnMNCj4gDQo+IFRoYW5rcyBmb3IgY2hlY2tpbmcgYW5kIHJldmlld2luZyB0aGlz LCBSYXkgYW5kIEppYW4uDQo+IEkgYXR0YWNoZWQgbXkgdXBkYXRlZCBwYXRjaCB3aGljaCBhZGRy ZXNzZWQgWmhpY2hhbydzIGNvbW1lbnQgYWJvdXQgdGhlDQo+IGNvbW1pdCBtZXNzYWdlIGFuZCBw YXNzZWQgUGF0Y2hDaGVjay5weS4NCj4gSmlhbiwgc2luY2UgdGhlIGNoYW5nZSBpcyBqdXN0IHRo ZSBjb21taXQgbWVzc2FnZSBjaGFuZ2UgKG5vIGNvZGUgY2hhbmdlKSwgSQ0KPiBkaWRuJ3Qgc2Vu ZCBhbiBlbWFpbCB0byBlZGsyLWRldmVsIGFnYWluLiBIb3dldmVyLCBpZiByZXNlbmRpbmcgYW4g cGF0Y2ggZW1haWwNCj4gdG8gZWRrMi1kZXZlbCBpcyBuZWVkZWQsIGZlZWwgZnJlZSB0byBsZXQg bWUga25vdy4NCj4gDQo+IFJlZ2FyZHMsDQo+IFN1bm55IFdhbmcNCj4gDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIFttYWlsdG86ZGV2 ZWxAZWRrMi5ncm91cHMuaW9dIE9uIEJlaGFsZiBPZiBOaSwNCj4gUmF5DQo+IFNlbnQ6IFdlZG5l c2RheSwgT2N0b2JlciAyMywgMjAxOSAxOjU4IFBNDQo+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4u ai53YW5nQGludGVsLmNvbT47IFdhbmcsIFN1bm55IChIUFMgU1cpDQo+IDxzdW5ueXdhbmdAaHBl LmNvbT47IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRr Mi5ncm91cHMuaW87IGxlcnNla0ByZWRoYXQuY29tOyBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVs LmNvbT4NCj4gQ2M6IExpLCBXYWxvbiA8d2Fsb24ubGlAaHBlLmNvbT4NCj4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9CZHNEeGU6IE1ha2UNCj4gUGxhdGZv cm1SZWNvdmVyeSB3b3JrIHJlZ2FyZGxlc3Mgb2YgT3NJbmRpY2F0aW9ucw0KPiBJbXBvcnRhbmNl OiBIaWdoDQo+IA0KPiBXaXRoIFpoaWNoYW8ncyBjb21tZW50cyBhZGRyZXNzZWQsIFJldmlld2Vk LWJ5OiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gRnJvbTogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ DQo+ID4gU2VudDogVHVlc2RheSwgT2N0b2JlciAyMiwgMjAxOSA5OjI3IFBNDQo+ID4gVG86IFdh bmcsIFN1bm55IChIUFMgU1cpIDxzdW5ueXdhbmdAaHBlLmNvbT47IEdhbywgWmhpY2hhbw0KPiA+ IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgbGVyc2VrQHJl ZGhhdC5jb207IFd1LA0KPiA+IEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+OyBOaSwgUmF5IDxy YXkubmlAaW50ZWwuY29tPg0KPiA+IENjOiBMaSwgV2Fsb24gPHdhbG9uLmxpQGhwZS5jb20+DQo+ ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9CZHNEeGU6 IE1ha2UNCj4gPiBQbGF0Zm9ybVJlY292ZXJ5IHdvcmsgcmVnYXJkbGVzcyBvZiBPc0luZGljYXRp b25zDQo+ID4NCj4gPiBJJ20gbm90IGZhbWlsaWFyIHRoaXMgcGFydCBvZiBjb2RlLiBSYXkgaXMg ZXhwZXJ0Lg0KPiA+DQo+ID4gQWNrZWQtYnk6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRl bC5jb20+DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9t OiBXYW5nLCBTdW5ueSAoSFBTIFNXKSA8c3Vubnl3YW5nQGhwZS5jb20+DQo+ID4gPiBTZW50OiBX ZWRuZXNkYXksIE9jdG9iZXIgMTYsIDIwMTkgNTo0MyBQTQ0KPiA+ID4gVG86IEdhbywgWmhpY2hh byA8emhpY2hhby5nYW9AaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+ID4gPiBs ZXJzZWtAcmVkaGF0LmNvbTsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBX dSwgSGFvIEENCj4gPiA+IDxoYW8uYS53dUBpbnRlbC5jb20+DQo+ID4gPiBDYzogTmksIFJheSA8 cmF5Lm5pQGludGVsLmNvbT47IExpLCBXYWxvbiA8d2Fsb24ubGlAaHBlLmNvbT47IFdhbmcsDQo+ ID4gPiBTdW5ueSAoSFBTIFNXKSA8c3Vubnl3YW5nQGhwZS5jb20+DQo+ID4gPiBTdWJqZWN0OiBS RTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL0Jkc0R4ZTogTWFrZQ0KPiA+ID4g UGxhdGZvcm1SZWNvdmVyeSB3b3JrIHJlZ2FyZGxlc3Mgb2YgT3NJbmRpY2F0aW9ucw0KPiA+ID4N Cj4gPiA+IFRoYW5rcyBmb3IgY2F0Y2hpbmcgdGhpcywgTGFzemxvLg0KPiA+ID4gVGhhbmtzIGZv ciB0aGUgc3VnZ2VzdGlvbiBhbmQgaW5mb3JtYXRpb24sIFpoaWNoYW8uIE5leHQgdGltZSwgSQ0K PiA+ID4gd2lsbCBkZWZpbml0ZWx5IHRha2UgY2FyZSBvZiB0aGlzIGluIHRoZSBmaXJzdCBwbGFj ZS4NCj4gPiA+DQo+ID4gPiBIaSBKaWFuIGFuZCBIYW8sDQo+ID4gPiBJIGZvcmdvdCB0byBhZGQg Ym90aCBvZiB5b3UgaW4gQ2MuIFNvcnJ5IGFib3V0IHRoYXQuIEkgd2lsbCBzZW5kIHlvdQ0KPiA+ ID4gZ3V5cyBhIG5ldyBwYXRjaCB3aXRoIHRoZSB1cGRhdGVkIGNvbW1pdCBtZXNzYWdlIGJlbG93 LiBJZiB5b3UgZ3V5cw0KPiA+ID4gbmVlZCBtZSB0byByZXNlbmQgYW4gZW1haWwgdG8gZWRrMi1k ZXZlbCBmb3IgdGhlIG5ldyBwYXRjaCwgZmVlbCBmcmVlIHRvIGxldA0KPiBtZSBrbm93Lg0KPiA+ ID4NCj4gPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ID4gPiBNZGVNb2R1bGVQa2cvQmRzRHhlOiBGaXggUGxhdGZvcm1SZWNvdmVyeSBpc3N1ZQ0K PiA+ID4NCj4gPiA+IEZvciBub3csIFBsYXRmb3JtUmVjb3ZlcnkgZG9lc24ndCB3b3JrIGlmIE9z SW5kaWNhdGlvbnMgdmFyaWFibGUNCj4gPiA+IGRvZXNuJ3QgZXhpc3QsIHdoaWNoIGlzIHdyb25n Lg0KPiA+ID4gQWNjb3JkaW5nIHRvIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gc2VjdGlvbiAzLjQu MSBhbmQgMy40LjIsIGlmDQo+ID4gPiBwcm9jZXNzaW5nIG9mIEJvb3RPcmRlciBkb2VzIG5vdCBy ZXN1bHQgaW4gc3VjY2VzcywgdGhlIE9zUmVjb3ZlcnkNCj4gPiA+IGFuZCBQbGF0Zm9ybVJlY292 ZXJ5IG9wdGlvbnMgc2hvdWxkIHN0aWxsIGJlIHByb2Nlc3NlZCByZWdhcmRsZXNzIG9mDQo+ID4g PiB0aGUgZXhpc3RlbmNlIG9mIHRoZSBPc0luZGljYXRpb25zIHZhcmlhYmxlLg0KPiA+ID4gVGhl cmVmb3JlLCB1cGRhdGUgdGhlIGNvZGUgdG8gY2hlY2sgUGNkUGxhdGZvcm1SZWNvdmVyeVN1cHBv cnQNCj4gPiA+IGluc3RlYWQgb2YgdGhlIHZhbHVlIG9mIE9zSW5kaWNhdGlvbnMgdmFyaWFibGUg KFBsYXRmb3JtUmVjb3ZlcnkpIHRvDQo+ID4gPiBmaXggdGhpcyBpc3N1ZS4NCj4gPiA+DQo+ID4g PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+IENjOiBIYW8g V3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5j b20+DQo+ID4gPiBDYzogWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gPiA+ IENjOiBXYWxvbiBMaSA8d2Fsb24ubGlAaHBlLmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFN1 bm55IFdhbmcgPHN1bm55d2FuZ0BocGUuY29tPg0KPiA+ID4gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4g PiBTdW5ueSBXYW5nDQo+ID4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+IEZyb206IEdhbywgWmhpY2hhbyBbbWFpbHRvOnpoaWNoYW8uZ2FvQGludGVsLmNvbV0NCj4g PiA+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxNiwgMjAxOSA0OjM2IFBNDQo+ID4gPiBUbzog ZGV2ZWxAZWRrMi5ncm91cHMuaW87IGxlcnNla0ByZWRoYXQuY29tOyBXYW5nLCBTdW5ueSAoSFBT IFNXKQ0KPiA+ID4gPHN1bm55d2FuZ0BocGUuY29tPg0KPiA+ID4gQ2M6IE5pLCBSYXkgPHJheS5u aUBpbnRlbC5jb20+OyBMaSwgV2Fsb24gPHdhbG9uLmxpQGhwZS5jb20+DQo+ID4gPiBTdWJqZWN0 OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL0Jkc0R4ZTogTWFrZQ0KPiA+ ID4gUGxhdGZvcm1SZWNvdmVyeSB3b3JrIHJlZ2FyZGxlc3Mgb2YgT3NJbmRpY2F0aW9ucw0KPiA+ ID4gSW1wb3J0YW5jZTogSGlnaA0KPiA+ID4NCj4gPiA+IE1kZU1vZHVsZVBrZy9CZHNEeGU6IERv IFBsYXRmb3JtUmVjb3ZlcnkgcmVnYXJkbGVzcyBvZiBPc0luZGljYXRpb25zDQo+ID4gPg0KPiA+ ID4gQWNjb3JkaW5nIHRvIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gc2VjdGlvbiAzLjQuMSBhbmQg My40LjIsIHRoZQ0KPiA+ID4gT3NSZWNvdmVyeSBhbmQgUGxhdGZvcm1SZWNvdmVyeSBvcHRpb25z IHNob3VsZCBzdGlsbCBiZSBwcm9jZXNzZWQNCj4gPiA+IHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVl IG9mIE9zSW5kaWNhdGlvbnMgdmFyaWFibGUgaWYgcHJvY2Vzc2luZyBvZiBCb290T3JkZXINCj4g ZG9lcyBub3QgcmVzdWx0IGluIHN1Y2Nlc3MuDQo+ID4gPiBUaGVyZWZvcmUsIHVwZGF0ZSB0aGUg Y29kZSB0byBjaGVjayBQY2RQbGF0Zm9ybVJlY292ZXJ5U3VwcG9ydA0KPiA+ID4gaW5zdGVhZCBv ZiB0aGUgdmFsdWUgb2YgT3NJbmRpY2F0aW9ucyB2YXJpYWJsZSAoUGxhdGZvcm1SZWNvdmVyeSku DQo+ID4gPg0KPiA+ID4gSSBzdWdnZXN0IHRvIHVzZSB0aGUgYWJvdmUgdGl0bGUgYmVjYXVzZSBv ZiB0aGUgbGVuZ3RoIGxpbWl0YXRpb24uDQo+ID4gPiBBbmQgSSBhbHNvIGJyZWFrIHRoZSBjb21t aXQgbWVzc2FnZSBpbnRvIHNlcnZhbCBsaW5lcy4NCj4gPiA+IEhlcmUgaXMgdGhlIGRldmVsb3Bt ZW50IHByb2Nlc3MgZm9yIGVkayBvcGVuIHNvdXJjZSBsaW5rOg0KPiA+ID4gaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS90aWFub2NvcmUuZ2l0aHViLmlvL3dpa2kvRURLLUlJLURldmVsb3AN Cj4gPiA+IG1lbnQtIFByb2Nlc3MuIFRoYXQgd291bGQgaGVscCB5b3UgdG8gc2VuZCBhIHBhdGNo IGluIGEgYmFzaWMNCj4gPiA+IGNvcnJlY3QgZm9ybWF0Lg0KPiA+ID4gV2l0aCB0aGUgY29tbWl0 IG1hc3NhZ2UgaXNzdWUgYWRkcmVzc2VkLCBSZXZpZXdlZC1ieTogWmhpY2hhbyBHYW8NCj4gPiA+ IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4gPg0KPiA+ID4gVGhhbmtzLA0KPiA+ID4gWmhp Y2hhbw0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4g RnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10g T24gQmVoYWxmDQo+ID4gPiA+IE9mIExhc3psbyBFcnNlaw0KPiA+ID4gPiBTZW50OiBXZWRuZXNk YXksIE9jdG9iZXIgMTYsIDIwMTkgNDowMiBQTQ0KPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91 cHMuaW87IHN1bm55d2FuZ0BocGUuY29tDQo+ID4gPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50 ZWwuY29tPjsgR2FvLCBaaGljaGFvDQo+ID4gPiA+IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+OyBX YWxvbiBMaSA8d2Fsb24ubGlAaHBlLmNvbT4NCj4gPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9CZHNEeGU6IE1ha2UNCj4gPiA+ID4gUGxhdGZvcm1S ZWNvdmVyeSB3b3JrIHJlZ2FyZGxlc3Mgb2YgT3NJbmRpY2F0aW9ucw0KPiA+ID4gPg0KPiA+ID4g PiBPbiAxMC8xNi8xOSAwOTo0MCwgV2FuZywgU3VubnkgKEhQUyBTVykgd3JvdGU6DQo+ID4gPiA+ ID4gQWNjb3JkaW5nIHRvIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gc2VjdGlvbiAzLjQuMSBhbmQg My40LjIsIHRoZQ0KPiA+ID4gPiA+IE9zUmVjb3ZlcnkNCj4gPiA+ID4gYW5kIFBsYXRmb3JtUmVj b3Zlcnkgb3B0aW9ucyBzaG91bGQgc3RpbGwgYmUgcHJvY2Vzc2VkIHJlZ2FyZGxlc3MNCj4gPiA+ ID4gb2YgdGhlIHZhbHVlIG9mIE9zSW5kaWNhdGlvbnMgdmFyaWFibGUgaWYgcHJvY2Vzc2luZyBv ZiBCb290T3JkZXINCj4gPiA+ID4gZG9lcyBub3QgcmVzdWx0IGluIHN1Y2Nlc3MuIFRoZXJlZm9y ZSwgdXBkYXRlIHRoZSBjb2RlIHRvIGNoZWNrDQo+ID4gPiA+IFBjZFBsYXRmb3JtUmVjb3ZlcnlT dXBwb3J0IGluc3RlYWQgb2YgdGhlIHZhbHVlIG9mIE9zSW5kaWNhdGlvbnMNCj4gPiA+ID4gdmFy aWFibGUNCj4gPiA+IChQbGF0Zm9ybVJlY292ZXJ5KS4NCj4gPiA+ID4NCj4gPiA+ID4gUGxlYXNl IHdyYXAgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIDc0IGNoYXJhY3RlcnMuDQo+ID4gPiA+DQo+ID4g PiA+IChDYW4gYmUgZG9uZSBvbiBwdXNoLCBpZiB0aGUgbWFpbnRhaW5lciBhY2NlcHRzIHRoZSBw YXRjaC4pDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rcw0KPiA+ID4gPiBMYXN6bG8NCj4gPiA+ID4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4g PiA+ID4gQ2M6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4g Q2M6IFdhbG9uIExpIDx3YWxvbi5saUBocGUuY29tPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IFN1bm55IFdhbmcgPHN1bm55d2FuZ0BocGUuY29tPg0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ ICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Jkc0R4ZS9CZHNFbnRyeS5jIHwgNCArKy0tDQo+ID4g PiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9C ZHNEeGUvQmRzRW50cnkuYw0KPiA+ID4gPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQmRzRHhl L0Jkc0VudHJ5LmMNCj4gPiA+ID4gPiBpbmRleCBkNmVjMzExMThjLi5kMzg3ZGJlN2FjIDEwMDY0 NA0KPiA+ID4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQmRzRHhlL0Jkc0VudHJ5 LmMNCj4gPiA+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Jkc0R4ZS9CZHNFbnRy eS5jDQo+ID4gPiA+ID4gQEAgLTYsNyArNiw3IEBADQo+ID4gPiA+ID4gICAgdG8gZW50ZXIgQkRT IHBoYXNlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIENvcHlyaWdodCAoYykgMjAwNCAtIDIwMTks IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ID4gcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gPiA+IC0oQykgQ29weXJpZ2h0IDIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQNCj4gPiA+ID4gPiBMUDxCUj4NCj4gPiA+ID4gPiArKEMpIENvcHlyaWdodCAy MDE2LTIwMTkgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQNCj4gPiA+ID4g PiArTFA8QlI+DQo+ID4gPiA+ID4gIChDKSBDb3B5cmlnaHQgMjAxNSBIZXdsZXR0LVBhY2thcmQg RGV2ZWxvcG1lbnQgQ29tcGFueSwNCj4gPiA+ID4gPiBMLlAuPEJSPg0KPiA+ID4gPiA+ICBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gQEAgLTEwNjksNyArMTA2OSw3IEBAIEJkc0VudHJ5ICgNCj4gPiA+ID4gPiAgICB9DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAgICBpZiAoIUJvb3RTdWNjZXNzKSB7DQo+ID4gPiA+ID4gLSAg ICBpZiAoUGxhdGZvcm1SZWNvdmVyeSkgew0KPiA+ID4gPiA+ICsgICAgaWYgKFBjZEdldEJvb2wg KFBjZFBsYXRmb3JtUmVjb3ZlcnlTdXBwb3J0KSkgew0KPiA+ID4gPiA+ICAgICAgICBMb2FkT3B0 aW9ucyA9IEVmaUJvb3RNYW5hZ2VyR2V0TG9hZE9wdGlvbnMNCj4gPiA+ID4gPiAoJkxvYWRPcHRp b25Db3VudCwNCj4gPiA+ID4gTG9hZE9wdGlvblR5cGVQbGF0Zm9ybVJlY292ZXJ5KTsNCj4gPiA+ ID4gPiAgICAgICAgUHJvY2Vzc0xvYWRPcHRpb25zIChMb2FkT3B0aW9ucywgTG9hZE9wdGlvbkNv dW50KTsNCj4gPiA+ID4gPiAgICAgICAgRWZpQm9vdE1hbmFnZXJGcmVlTG9hZE9wdGlvbnMgKExv YWRPcHRpb25zLA0KPiA+ID4gPiA+IExvYWRPcHRpb25Db3VudCk7DQo+ID4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+IA0KPiANCj4gDQo+IA0KDQo=