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.31; helo=mga06.intel.com; envelope-from=hao.a.wu@intel.com; receiver=edk2-devel@lists.01.org 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 09CA1211CCD7B for ; Thu, 21 Feb 2019 16:18:39 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Feb 2019 16:18:38 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,397,1544515200"; d="scan'208";a="119843633" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 21 Feb 2019 16:18:38 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 21 Feb 2019 16:18:38 -0800 Received: from shsmsx153.ccr.corp.intel.com (10.239.6.53) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 21 Feb 2019 16:18:37 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.102]) by SHSMSX153.ccr.corp.intel.com ([169.254.12.190]) with mapi id 14.03.0415.000; Fri, 22 Feb 2019 08:18:36 +0800 From: "Wu, Hao A" To: =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCHv2 1/1] MdeModulePkg/SdMmcPciHcDxe Fix eMMC HS400 switch sequence Thread-Index: AQHUx3rIy8f3+NyslkiJXxh6+lFrPaXmTKbggAPuQgCAALyyMA== Date: Fri, 22 Feb 2019 00:18:35 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCHv2 1/1] MdeModulePkg/SdMmcPciHcDxe Fix eMMC HS400 switch sequence 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: Fri, 22 Feb 2019 00:18:40 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQaGlsaXBwZSBNYXRoaWV1LURh dWTDqSBbbWFpbHRvOnBoaWxtZEByZWRoYXQuY29tXQ0KPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5 IDIyLCAyMDE5IDQ6NTcgQU0NCj4gVG86IFd1LCBIYW8gQTsgZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmcNCj4gQ2M6IEFsYmVja2ksIE1hdGV1c3oNCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0h2 MiAxLzFdIE1kZU1vZHVsZVBrZy9TZE1tY1BjaUhjRHhlIEZpeA0KPiBlTU1DIEhTNDAwIHN3aXRj aCBzZXF1ZW5jZQ0KPiANCj4gSGkgSGFvIEEsDQo+IA0KPiBPbiAyLzIwLzE5IDI6MTEgQU0sIFd1 LCBIYW8gQSB3cm90ZToNCj4gPiBUaGFua3MgTWF0ZXVzeiwNCj4gPg0KPiA+IFJldmlld2VkLWJ5 OiBIYW8gV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiBBbmQgcHVzaGVkIHZpYSBjb21taXQg NjhjNjdkM2EyYTMzMjYxZTQxZmYwMTIzMTI5YjRlOTc1OTYxN2Y3MS4NCj4gDQo+IEkgdGhpbmsg eW91IG1lYW4gInB1c2hlZCAnYWZ0ZXInIGNvbW1pdA0KPiA2OGM2N2QzYTJhMzMyNjFlNDFmZjAx MjMxMjliNGU5NzU5NjE3ZjcxIi4NCg0KWWVzLCB0aGUgY29tbWl0IHNob3VsZCBoYXZlIGJlZW4g MTk1ZjY3M2Y2MjcwYWFmNzNkZDM0Yjc1ZjFkYTI2NDUxYjYzYzMxNi4NCkl0IGlzIG15IG1pc3Rh a2UuDQoNCj4gDQo+IENvbW1pdCA2OGM2N2QzYTJhMzMyNjFlNDFmZjAxMjMxMjliNGU5NzU5NjE3 ZjcxIGlzOg0KPiAiQmFzZVRvb2xzOiBGaXhlZCBhIGNvZGUgYnVnIGZvciBQY2QgQXJyYXkiLCB3 aGlsZQ0KPiB0aGlzIHBhdGNoIGlzIGNvbW1pdGVkIGFzIDE5NWY2NzNmNjI3MGFhZjczZGQzNGI3 NWYxZGEyNjQ1MWI2M2MzMTYuDQo+IA0KPiBOb3cgYWJvdXQgdGhpcyBjb21taXQgMTk1ZjY3M2Y2 MjcwYWFmLCBJIHRoaW5rIHlvdSBoYXZlIGFuIGlzc3VlIHdpdGgNCj4geW91ciBjb25maWd1cmF0 aW9uLCBhcyB0aGUgcGF0Y2ggYXV0aG9yIHdhcyByZW1wbGFjZWQgZnJvbToNCj4gQWxiZWNraSwg TWF0ZXVzeiA8bWF0ZXVzei5hbGJlY2tpQGludGVsLmNvbT4NCj4gdG86DQo+IEFsYmVja2ksIE1h dGV1c3ogPC9vPUludGVsL291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwDQo+IChGWURJ Qk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249QWxiZWNraSwgTWF0ZXVzejNiZT4NCg0KWW91 IGFyZSByaWdodCwgdGhlcmUgaXMgc29tZXRoaW5nIHdyb25nIHdpdGggbXkgbG9jYWwgc2V0dGlu Z3Mgd2hlbg0KYWJzdHJhY3RpbmcgdGhlIHBhdGNoLiBUaGFua3MgZm9yIHBvaW50aW5nIG91dC4N Cg0KQmVzdCBSZWdhcmRzLA0KSGFvIFd1DQoNCj4gDQo+IFJlZ2FyZHMsDQo+IA0KPiBQaGlsLg0K PiANCj4gPg0KPiA+IEJlc3QgUmVnYXJkcywNCj4gPiBIYW8gV3UNCj4gPg0KPiA+DQo+ID4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFsYmVja2ksIE1hdGV1c3oNCj4g Pj4gU2VudDogTW9uZGF5LCBGZWJydWFyeSAxOCwgMjAxOSA3OjEyIFBNDQo+ID4+IFRvOiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiBDYzogQWxiZWNraSwgTWF0ZXVzejsgV3UsIEhhbyBB DQo+ID4+IFN1YmplY3Q6IFtQQVRDSHYyIDEvMV0gTWRlTW9kdWxlUGtnL1NkTW1jUGNpSGNEeGUg Rml4IGVNTUMNCj4gSFM0MDANCj4gPj4gc3dpdGNoIHNlcXVlbmNlDQo+ID4+DQo+ID4+IFJFRjog aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwDQo+ID4+ DQo+ID4+IEluIGVNTUMgSFM0MDAgc3dpdGNoIHNlcXVlbmNlIGZsb3cgZU1NQyBkcml2ZXIgYXR0 ZW1wdGVkDQo+ID4+IHRvIGV4ZWN1dGUgU0VORF9TVEFUVVMganVzdCBhZnRlciBzd2l0Y2hpbmcg YnVzIHRpbWluZyB0byBoaWdoDQo+ID4+IHNwZWVkIGFuZCBiZWZvcmUgZG93bmdyYWRpbmcgY2xv Y2sgZnJlcXVlbmN5IHRvIDUyTUh6LiBTaW5jZSBsaW5rDQo+ID4+IHdhcyBhdCB0aGF0IHRpbWUg aW4gaW5jb3JyZWN0IHN0YXRlIFNFTkRfU1RBVFVTIHdhcyBmYWlsaW5nIHdoaWNoDQo+ID4+IG1h ZGUgZHJpdmVyIHRoaW5rIHN3aXRjaCB0byBIUzQwMCBmYWlsZWQuDQo+ID4+IFRoaXMgY2hhbmdl IG1ha2VzIGRyaXZlciBhbHdheXMgY2hhbmdlIGNsb2NrIGZyZXF1ZW5jeSBhZnRlcg0KPiA+PiBz d2l0Y2hpbmcgYnVzIHRpbWluZyBhbmQgYmVmb3JlIGV4ZWN1dGluZyBTRU5EX1NUQVRVUy4NCj4g Pj4NCj4gPj4gQ2M6IEhhbyBXdSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+PiBDb250cmlidXRl ZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ID4+IFNpZ25l ZC1vZmYtYnk6IEFsYmVja2kgTWF0ZXVzeiA8bWF0ZXVzei5hbGJlY2tpQGludGVsLmNvbT4NCj4g Pj4gLS0tDQo+ID4+ICBNZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL0VtbWNEZXZp Y2UuYyB8IDM5DQo+ID4+ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0NCj4gPj4gIDEgZmlsZSBj aGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlm ZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvRW1tY0RldmljZS5j DQo+ID4+IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9FbW1jRGV2aWNlLmMN Cj4gPj4gaW5kZXggNGVmODQ5ZmQwOTYyLi4xNWRiOGE4N2E1YzQgMTAwNjQ0DQo+ID4+IC0tLSBh L01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvRW1tY0RldmljZS5jDQo+ID4+ICsr KyBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvRW1tY0RldmljZS5jDQo+ID4+ IEBAIC02NDIsNyArNjQyLDcgQEAgRW1tY1N3aXRjaEJ1c1dpZHRoICgNCj4gPj4gIH0NCj4gPj4N Cj4gPj4gIC8qKg0KPiA+PiAtICBTd2l0Y2ggdGhlIGNsb2NrIGZyZXF1ZW5jeSB0byB0aGUgc3Bl Y2lmaWVkIHZhbHVlLg0KPiA+PiArICBTd2l0Y2ggdGhlIGJ1cyB0aW1pbmcgYW5kIGNsb2NrIGZy ZXF1ZW5jeS4NCj4gPj4NCj4gPj4gICAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJk IFNwZWMgNS4xIFNlY3Rpb24gNi42IGFuZCBTRCBIb3N0DQo+ID4+IENvbnRyb2xsZXINCj4gPj4g ICAgU2ltcGxpZmllZCBTcGVjIDMuMCBGaWd1cmUgMy0zIGZvciBkZXRhaWxzLg0KPiA+PiBAQCAt NjYwLDcgKzY2MCw3IEBAIEVtbWNTd2l0Y2hCdXNXaWR0aCAoDQo+ID4+DQo+ID4+ICAqKi8NCj4g Pj4gIEVGSV9TVEFUVVMNCj4gPj4gLUVtbWNTd2l0Y2hDbG9ja0ZyZXEgKA0KPiA+PiArRW1tY1N3 aXRjaEJ1c1RpbWluZyAoDQo+ID4+ICAgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgICAgICAg ICAgICAgKlBjaUlvLA0KPiA+PiAgICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAg ICAgICpQYXNzVGhydSwNCj4gPj4gICAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTbG90LA0KPiA+PiBAQCAtNjg5LDIyICs2ODksMTAgQEAgRW1tY1N3aXRjaENsb2NrRnJl cSAoDQo+ID4+DQo+ID4+ICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2ggKFBhc3NUaHJ1LCBTbG90LCBB Y2Nlc3MsIEluZGV4LCBWYWx1ZSwgQ21kU2V0KTsNCj4gPj4gICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+PiAtICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFbW1jU3dpdGNoQ2xvY2tG cmVxOiBTd2l0Y2ggdG8NCj4gaHN0aW1pbmcgJWQNCj4gPj4gZmFpbHMgd2l0aCAlclxuIiwgSHNU aW1pbmcsIFN0YXR1cykpOw0KPiA+PiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFbW1jU3dp dGNoQnVzVGltaW5nOiBTd2l0Y2ggdG8NCj4gaHN0aW1pbmcgJWQNCj4gPj4gZmFpbHMgd2l0aCAl clxuIiwgSHNUaW1pbmcsIFN0YXR1cykpOw0KPiA+PiAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ ICAgIH0NCj4gPj4NCj4gPj4gLSAgU3RhdHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NUaHJ1LCBT bG90LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+PiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVtbWNTd2l0Y2hDbG9ja0ZyZXE6IFNl bmQgc3RhdHVzIGZhaWxzDQo+ID4+IHdpdGggJXJcbiIsIFN0YXR1cykpOw0KPiA+PiAtICAgIHJl dHVybiBTdGF0dXM7DQo+ID4+IC0gIH0NCj4gPj4gLSAgLy8NCj4gPj4gLSAgLy8gQ2hlY2sgdGhl IHN3aXRjaCBvcGVyYXRpb24gaXMgcmVhbGx5IHN1Y2Nlc3NmdWwgb3Igbm90Lg0KPiA+PiAtICAv Lw0KPiA+PiAtICBpZiAoKERldlN0YXR1cyAmIEJJVDcpICE9IDApIHsNCj4gPj4gLSAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiRW1tY1N3aXRjaENsb2NrRnJlcTogVGhlIHN3aXRjaA0KPiBvcGVy YXRpb24NCj4gPj4gZmFpbHMgYXMgRGV2U3RhdHVzIGlzIDB4JTA4eFxuIiwgRGV2U3RhdHVzKSk7 DQo+ID4+IC0gICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4+IC0gIH0NCj4gPj4gICAg Ly8NCj4gPj4gICAgLy8gQ29udmVydCB0aGUgY2xvY2sgZnJlcSB1bml0IGZyb20gTUh6IHRvIEtI ei4NCj4gPj4gICAgLy8NCj4gPj4gQEAgLTcxMyw2ICs3MDEsMTkgQEAgRW1tY1N3aXRjaENsb2Nr RnJlcSAoDQo+ID4+ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4gICAgfQ0KPiA+Pg0KPiA+PiAr ICBTdGF0dXMgPSBFbW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFNsb3QsIFJjYSwgJkRldlN0YXR1 cyk7DQo+ID4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICBERUJVRyAo KERFQlVHX0VSUk9SLCAiRW1tY1N3aXRjaEJ1c1RpbWluZzogU2VuZCBzdGF0dXMgZmFpbHMNCj4g Pj4gd2l0aCAlclxuIiwgU3RhdHVzKSk7DQo+ID4+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4g KyAgfQ0KPiA+PiArICAvLw0KPiA+PiArICAvLyBDaGVjayB0aGUgc3dpdGNoIG9wZXJhdGlvbiBp cyByZWFsbHkgc3VjY2Vzc2Z1bCBvciBub3QuDQo+ID4+ICsgIC8vDQo+ID4+ICsgIGlmICgoRGV2 U3RhdHVzICYgQklUNykgIT0gMCkgew0KPiA+PiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJF bW1jU3dpdGNoQnVzVGltaW5nOiBUaGUgc3dpdGNoDQo+IG9wZXJhdGlvbg0KPiA+PiBmYWlscyBh cyBEZXZTdGF0dXMgaXMgMHglMDh4XG4iLCBEZXZTdGF0dXMpKTsNCj4gPj4gKyAgICByZXR1cm4g RUZJX0RFVklDRV9FUlJPUjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICAgIGlmIChtT3ZlcnJp ZGUgIT0gTlVMTCAmJiBtT3ZlcnJpZGUtPk5vdGlmeVBoYXNlICE9IE5VTEwpIHsNCj4gPj4gICAg ICBTdGF0dXMgPSBtT3ZlcnJpZGUtPk5vdGlmeVBoYXNlICgNCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHJpdmF0ZS0+Q29udHJvbGxlckhhbmRsZSwNCj4gPj4gQEAgLTc5OSw3ICs4 MDAsNyBAQCBFbW1jU3dpdGNoVG9IaWdoU3BlZWQgKA0KPiA+PiAgICB9DQo+ID4+DQo+ID4+ICAg IEhzVGltaW5nID0gMTsNCj4gPj4gLSAgU3RhdHVzID0gRW1tY1N3aXRjaENsb2NrRnJlcSAoUGNp SW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsIEhzVGltaW5nLA0KPiBUaW1pbmcsDQo+ID4+IENsb2Nr RnJlcSk7DQo+ID4+ICsgIFN0YXR1cyA9IEVtbWNTd2l0Y2hCdXNUaW1pbmcgKFBjaUlvLCBQYXNz VGhydSwgU2xvdCwgUmNhLCBIc1RpbWluZywNCj4gPj4gVGltaW5nLCBDbG9ja0ZyZXEpOw0KPiA+ Pg0KPiA+PiAgICByZXR1cm4gU3RhdHVzOw0KPiA+PiAgfQ0KPiA+PiBAQCAtODg3LDcgKzg4OCw3 IEBAIEVtbWNTd2l0Y2hUb0hTMjAwICgNCj4gPj4gICAgU3RhdHVzID0gU2RNbWNIY09yTW1pbyAo UGNpSW8sIFNsb3QsIFNEX01NQ19IQ19DTE9DS19DVFJMLA0KPiBzaXplb2YNCj4gPj4gKENsb2Nr Q3RybCksICZDbG9ja0N0cmwpOw0KPiA+Pg0KPiA+PiAgICBIc1RpbWluZyA9IDI7DQo+ID4+IC0g IFN0YXR1cyA9IEVtbWNTd2l0Y2hDbG9ja0ZyZXEgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgUmNh LCBIc1RpbWluZywNCj4gVGltaW5nLA0KPiA+PiBDbG9ja0ZyZXEpOw0KPiA+PiArICBTdGF0dXMg PSBFbW1jU3dpdGNoQnVzVGltaW5nIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgSHNUaW1p bmcsDQo+ID4+IFRpbWluZywgQ2xvY2tGcmVxKTsNCj4gPj4gICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+PiAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICAgIH0NCj4gPj4gQEAgLTkz Nyw3ICs5MzgsNyBAQCBFbW1jU3dpdGNoVG9IUzQwMCAoDQo+ID4+ICAgIC8vIFNldCB0byBIaWdo dCBTcGVlZCB0aW1pbmcgYW5kIHNldCB0aGUgY2xvY2sgZnJlcXVlbmN5IHRvIGEgdmFsdWUgbGVz cw0KPiB0aGFuDQo+ID4+IDUyTUh6Lg0KPiA+PiAgICAvLw0KPiA+PiAgICBIc1RpbWluZyA9IDE7 DQo+ID4+IC0gIFN0YXR1cyA9IEVtbWNTd2l0Y2hDbG9ja0ZyZXEgKFBjaUlvLCBQYXNzVGhydSwg U2xvdCwgUmNhLCBIc1RpbWluZywNCj4gPj4gU2RNbWNNbWNIc1NkciwgNTIpOw0KPiA+PiArICBT dGF0dXMgPSBFbW1jU3dpdGNoQnVzVGltaW5nIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwg SHNUaW1pbmcsDQo+ID4+IFNkTW1jTW1jSHNTZHIsIDUyKTsNCj4gPj4gICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+PiAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICAgIH0NCj4gPj4g QEAgLTk1Nyw3ICs5NTgsNyBAQCBFbW1jU3dpdGNoVG9IUzQwMCAoDQo+ID4+ICAgIH0NCj4gPj4N Cj4gPj4gICAgSHNUaW1pbmcgPSAzOw0KPiA+PiAtICBTdGF0dXMgPSBFbW1jU3dpdGNoQ2xvY2tG cmVxIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgSHNUaW1pbmcsDQo+IFRpbWluZywNCj4g Pj4gQ2xvY2tGcmVxKTsNCj4gPj4gKyAgU3RhdHVzID0gRW1tY1N3aXRjaEJ1c1RpbWluZyAoUGNp SW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsIEhzVGltaW5nLA0KPiA+PiBUaW1pbmcsIENsb2NrRnJl cSk7DQo+ID4+DQo+ID4+ICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICB9DQo+ID4+IC0tDQo+ID4+ IDIuMTQuMS53aW5kb3dzLjENCj4gPg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+ID4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz dGluZm8vZWRrMi1kZXZlbA0KPiA+DQo=