From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: eric.dong@intel.com) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by groups.io with SMTP; Mon, 24 Jun 2019 19:15:46 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jun 2019 19:15:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,413,1557212400"; d="scan'208";a="163498919" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga007.fm.intel.com with ESMTP; 24 Jun 2019 19:15:46 -0700 Received: from fmsmsx157.amr.corp.intel.com (10.18.116.73) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 24 Jun 2019 19:15:46 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX157.amr.corp.intel.com (10.18.116.73) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 24 Jun 2019 19:15:45 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.33]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.246]) with mapi id 14.03.0439.000; Tue, 25 Jun 2019 10:15:44 +0800 From: "Dong, Eric" To: "devel@edk2.groups.io" , "lersek@redhat.com" CC: "Ni, Ray" Subject: Re: [edk2-devel] [Patch 2/2] UefiCpuPkg/PiSmmCpuDxeSmm: Enable MM MP Protocol. Thread-Topic: [edk2-devel] [Patch 2/2] UefiCpuPkg/PiSmmCpuDxeSmm: Enable MM MP Protocol. Thread-Index: AQHVJ4ePbDNLMEjKFUqj9fPVdyXijqarpqeA Date: Tue, 25 Jun 2019 02:15:44 +0000 Message-ID: References: <20190619055114.12744-1-eric.dong@intel.com> <20190619055114.12744-3-eric.dong@intel.com> <68f92355-3cd1-1557-67c4-57ecb52eaa98@redhat.com> In-Reply-To: <68f92355-3cd1-1557-67c4-57ecb52eaa98@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: eric.dong@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5p byBbbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvXSBPbiBCZWhhbGYgT2YNCj4gTGFzemxvIEVy c2VrDQo+IFNlbnQ6IEZyaWRheSwgSnVuZSAyMSwgMjAxOSAxMjo0NSBBTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+IENjOiBO aSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQ YXRjaCAyLzJdIFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW06DQo+IEVuYWJsZSBNTSBNUCBQcm90 b2NvbC4NCj4gDQo+IE9uIDA2LzE5LzE5IDA3OjUxLCBEb25nLCBFcmljIHdyb3RlOg0KPiA+IEFk ZCBNTSBNcCBQcm90b2NvbCBpbiBQaVNtbUNwdUR4ZVNtbSBkcml2ZXIuDQo+ID4NCj4gPiBDYzog UmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0By ZWRoYXQuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVs LmNvbT4NCj4gPiAtLS0NCj4gPiAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9NcFByb3RvY29s LmMgICAgICAgfCAzNzUNCj4gKysrKysrKysrKysrKysrDQo+ID4gIFVlZmlDcHVQa2cvUGlTbW1D cHVEeGVTbW0vTXBQcm90b2NvbC5oICAgICAgIHwgMjgzICsrKysrKysrKysrDQo+ID4gIFVlZmlD cHVQa2cvUGlTbW1DcHVEeGVTbW0vTXBTZXJ2aWNlLmMgICAgICAgIHwgNDY4DQo+ICsrKysrKysr KysrKysrKysrKy0NCj4gPiAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNt bS5jICAgfCAgMTEgKw0KPiA+ICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhl U21tLmggICB8IDE3MiArKysrKystDQo+ID4gIFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlT bW1DcHVEeGVTbW0uaW5mIHwgICAzICsNCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMjk2IGluc2Vy dGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKSAgY3JlYXRlIG1vZGUNCj4gPiAxMDA2NDQgVWVmaUNw dVBrZy9QaVNtbUNwdUR4ZVNtbS9NcFByb3RvY29sLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vTXBQcm90b2NvbC5oDQo+ID4NCj4gPiBkaWZmIC0t Z2l0IGEvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9NcFByb3RvY29sLmMNCj4gPiBiL1VlZmlD cHVQa2cvUGlTbW1DcHVEeGVTbW0vTXBQcm90b2NvbC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi44Y2Y2OTQyOGMyDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vTXBQcm90b2NvbC5jDQo+ID4gQEAg LTAsMCArMSwzNzUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gK1NNTSBNUCBwcm90b2NvbCBpbXBs ZW1lbnRhdGlvbg0KPiA+ICsNCj4gPiArQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICtTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSAiUGlTbW1DcHVEeGVTbW0uaCINCj4gPiArI2luY2x1ZGUgIk1wUHJvdG9j b2wuaCINCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gU01NIE1QIFByb3RvY29sIGluc3RhbmNl DQo+ID4gKy8vLw0KPiA+ICtFRklfU01NX01QX1BST1RPQ09MICBtU21tTXAgID0gew0KPiA+ICsg IEVGSV9TTU1fTVBfUFJPVE9DT0xfUkVWSVNJT04sDQo+ID4gKyAgMCwNCj4gPiArICBTbW1NcEdl dE51bWJlck9mUHJvY2Vzc29ycywNCj4gPiArICBTbW1NcERpc3BhdGNoUHJvY2VkdXJlLA0KPiA+ ICsgIFNtbU1wQnJvYWRjYXN0UHJvY2VkdXJlLA0KPiA+ICsgIFNtbU1wU2V0U3RhcnR1cFByb2Nl ZHVyZSwNCj4gPiArICBTbW1NcENoZWNrRm9yUHJvY2VkdXJlLA0KPiA+ICsgIFNtbU1wV2FpdEZv clByb2NlZHVyZQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VydmljZSB0byBy ZXRyaWV2ZXMgdGhlIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvciBpbiB0aGUgcGxhdGZvcm0u DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgVGhlIEVGSV9N TV9NUF9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1bb3V0XSBOdW1iZXJPZlByb2Nl c3NvcnMgIFBvaW50ZXIgdG8gdGhlIHRvdGFsIG51bWJlciBvZg0KPiBsb2dpY2FsIHByb2Nlc3Nv cnMgaW4gdGhlIHN5c3RlbSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluY2x1ZGluZyB0aGUgQlNQIGFuZCBhbGwgQVBzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyB3YXMgcmV0cmll dmVkDQo+IHN1Y2Nlc3NmdWxseQ0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICAgTnVtYmVyT2ZQcm9jZXNzb3JzIGlzIE5VTEwNCj4gPiArKiovDQo+ID4gKw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTbW1NcEdldE51bWJlck9mUHJvY2Vzc29ycyAoDQo+ ID4gKyAgSU4gQ09OU1QgRUZJX1NNTV9NUF9QUk9UT0NPTCAgKlRoaXMsDQo+ID4gKyAgT1VUICAg ICAgVUlOVE4gICAgICAgICAgICAgICAgKk51bWJlck9mUHJvY2Vzc29ycw0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIGlmIChOdW1iZXJPZlByb2Nlc3NvcnMgPT0gTlVMTCkgew0KPiA+ICsgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgICpO dW1iZXJPZlByb2Nlc3NvcnMgPQ0KPiA+ICsgZ1NtbUNwdVByaXZhdGUtPlNtbUNvcmVFbnRyeUNv bnRleHQuTnVtYmVyT2ZDcHVzOw0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIHNlcnZpY2UgYWxsb3dz IHRoZSBjYWxsZXIgdG8gaW52b2tlIGEgcHJvY2VkdXJlIG9uZSBvZiB0aGUNCj4gPiArYXBwbGlj YXRpb24gcHJvY2Vzc29ycyAoQVApLiBUaGlzDQo+ID4gKyAgZnVuY3Rpb24gdXNlcyBhbiBvcHRp b25hbCB0b2tlbiBwYXJhbWV0ZXIgdG8gc3VwcG9ydCBibG9ja2luZyBhbmQNCj4gPiArbm9uLWJs b2NraW5nIG1vZGVzLiBJZiB0aGUgdG9rZW4NCj4gPiArICBpcyBwYXNzZWQgaW50byB0aGUgY2Fs bCwgdGhlIGZ1bmN0aW9uIHdpbGwgb3BlcmF0ZSBpbiBhDQo+ID4gK25vbi1ibG9ja2luZyBmYXNo aW9uIGFuZCB0aGUgY2FsbGVyIGNhbg0KPiA+ICsgIGNoZWNrIGZvciBjb21wbGV0aW9uIHdpdGgg Q2hlY2tPblByb2NlZHVyZSBvciBXYWl0Rm9yUHJvY2VkdXJlLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dICAgICBUaGlzICAgICAgICAgICAgICAgICAgIFRoZSBFRklfTU1fTVBfUFJPVE9DT0wg aW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgUHJvY2VkdXJlICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIHByb2NlZHVyZSB0byBiZSBydW4gb24NCj4gdGhlIGRlc2lnbmF0ZWQg dGFyZ2V0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUCBv ZiB0aGUgc3lzdGVtLiBUeXBlIEVGSV9BUF9QUk9DRURVUkUyIGlzDQo+IGRlZmluZWQgYmVsb3cg aW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWQg ZGVmaW5pdGlvbnMuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgQ3B1TnVtYmVyICAgICAgICAgICAg ICBUaGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgcHJvY2Vzc29yDQo+IG51bWJlciBvZiB0aGUg dGFyZ2V0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUCwg b24gd2hpY2ggdGhlIGNvZGUgc3RyZWFtIGlzIHN1cHBvc2VkIHRvIHJ1bi4gSWYNCj4gdGhlIG51 bWJlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRz IHRvIHRoZSBjYWxsaW5nIHByb2Nlc3NvciB0aGVuIGl0IHdpbGwgbm90IHJ1biB0aGUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVkIGNvZGUuDQo+ ID4gKyAgQHBhcmFtW2luXSAgICAgVGltZW91dEluTWljcm9zZWNvbmRzICBJbmRpY2F0ZXMgdGhl IHRpbWUgbGltaXQgaW4NCj4gbWljcm9zZWNvbmRzIGZvciB0aGlzIEFQIHRvDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2ggZXhlY3V0aW9uIG9mIFBy b2NlZHVyZSwgZWl0aGVyIGZvciBibG9ja2luZyBvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbm9uLWJsb2NraW5nIG1vZGUuIFplcm8gbWVhbnMgaW5maW5p dHkuIElmIHRoZQ0KPiB0aW1lb3V0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleHBpcmVzIGJlZm9yZSB0aGlzIEFQIHJldHVybnMgZnJvbSBQcm9jZWR1cmUs IHRoZW4NCj4gUHJvY2VkdXJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbiB0aGUgQVAgaXMgdGVybWluYXRlZC4gSWYgdGhlIHRpbWVvdXQgZXhwaXJlcyBp bg0KPiBibG9ja2luZw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbW9kZSwgdGhlIGNhbGwgcmV0dXJucyBFRklfVElNRU9VVC4gSWYgdGhlIHRpbWVvdXQNCj4g ZXhwaXJlcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g bm9uLWJsb2NraW5nIG1vZGUsIHRoZSB0aW1lb3V0IGRldGVybWluZWQgY2FuIGJlDQo+IHRocm91 Z2gNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrT25Q cm9jZWR1cmUgb3IgV2FpdEZvclByb2NlZHVyZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aW1lb3V0IHN1cHBvcnQgaXMgb3B0aW9uYWwu IFdoZXRoZXIgYW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHRoaXMgZmVhdHVyZSwgY2FuIGJlDQo+IGRldGVybWlu ZWQgdmlhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUg QXR0cmlidXRlcyBkYXRhIG1lbWJlci4NCj4gPiArICBAcGFyYW1baW4sb3V0XSBQcm9jZWR1cmVB cmd1bWVudHMgICAgIEFsbG93cyB0aGUgY2FsbGVyIHRvIHBhc3MgYSBsaXN0IG9mDQo+IHBhcmFt ZXRlcnMgdG8gdGhlIGNvZGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoYXQgaXMgcnVuIGJ5IHRoZSBBUC4gSXQgaXMgYW4gb3B0aW9uYWwgY29tbW9uIG1h aWxib3gNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdl ZW4gQVBzIGFuZCB0aGUgY2FsbGVyIHRvIHNoYXJlIGluZm9ybWF0aW9uLg0KPiA+ICsgIEBwYXJh bVtpbixvdXRdIFRva2VuICAgICAgICAgICAgICAgICAgVGhpcyBpcyBwYXJhbWV0ZXIgaXMgYnJv a2VuIGludG8gdHdvDQo+IGNvbXBvbmVudHM6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxLlRva2VuLT5Db21wbGV0aW9uIGlzIGFuIG9wdGlvbmFsIHBhcmFt ZXRlciB0aGF0DQo+IGFsbG93cyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNhbGxlciB0byBleGVjdXRlIHRoZSBwcm9jZWR1cmUgaW4gYSBibG9ja2lu ZyBvciBub24tDQo+IGJsb2NraW5nDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmYXNoaW9uLiBJZiBpdCBpcyBOVUxMIHRoZSBjYWxsIGlzIGJsb2NraW5nLCBh bmQgdGhlIGNhbGwgd2lsbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbm90IHJldHVybiB1bnRpbCB0aGUgQVAgaGFzIGNvbXBsZXRlZCB0aGUgcHJvY2VkdXJl Lg0KPiBJZiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRva2VuIGlzIG5vdCBOVUxMLCB0aGUgY2FsbCB3aWxsIHJldHVybiBpbW1lZGlhdGVseS4gVGhl DQo+IGNhbGxlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2FuIGNoZWNrIHdoZXRoZXIgdGhlIHByb2NlZHVyZSBoYXMgY29tcGxldGVkIHdpdGgNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrT25Qcm9jZWR1cmUg b3IgV2FpdEZvclByb2NlZHVyZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDIuVG9rZW4tPlN0YXR1cyBUaGUgaW1wbGVtZW50YXRpb24gdXBkYXRlcyB0aGUN Cj4gYWRkcmVzcyBwb2ludGVkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdCBieSB0aGlzIHZhcmlhYmxlIHdpdGggdGhlIHN0YXR1cyBjb2RlIHJldHVybmVk IGJ5DQo+IFByb2NlZHVyZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2hlbiBpdCBjb21wbGV0ZXMgZXhlY3V0aW9uIG9uIHRoZSB0YXJnZXQgQVAsIG9yIHdp dGgNCj4gRUZJX1RJTUVPVVQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIHRoZSBQcm9jZWR1cmUgZmFpbHMgdG8gY29tcGxldGUgd2l0aGluIHRoZSBvcHRp b25hbA0KPiB0aW1lb3V0Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGhlIGltcGxlbWVudGF0aW9uIHdpbGwgdXBkYXRlIHRoaXMgdmFyaWFibGUgd2l0aA0K PiBFRklfTk9UX1JFQURZDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcmlvciB0byBzdGFydGluZyBQcm9jZWR1cmUgb24gdGhlIHRhcmdldCBBUA0KPiA+ICsg IEBwYXJhbVtpbixvdXRdIENQVVN0YXR1cyAgICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBwb2lu dGVyIG1heSBiZSB1c2VkIHRvDQo+IGdldCB0aGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IFByb2NlZHVyZSB3aGVu IGl0IGNvbXBsZXRlcyBleGVjdXRpb24gb24gdGhlDQo+IHRhcmdldCBBUCwgb3Igd2l0aA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RJTUVPVVQgaWYg dGhlIFByb2NlZHVyZSBmYWlscyB0byBjb21wbGV0ZSB3aXRoaW4NCj4gdGhlIG9wdGlvbmFsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LiBUaGUg aW1wbGVtZW50YXRpb24gd2lsbCB1cGRhdGUgdGhpcyB2YXJpYWJsZQ0KPiB3aXRoDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTk9UX1JFQURZIHByaW9y IHRvIHN0YXJ0aW5nIFByb2NlZHVyZSBvbiB0aGUNCj4gdGFyZ2V0IEFQLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgICAgIEluIHRoZSBibG9ja2luZyBj YXNlLCB0aGlzIGluZGljYXRlcyB0aGF0DQo+IFByb2NlZHVyZSBoYXMgY29tcGxldGVkDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpb24gb24gdGhl IHRhcmdldCBBUC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEluIHRoZSBub24tYmxvY2tpbmcgY2FzZSB0aGlzIGluZGljYXRlcyB0aGF0IHRoZQ0KPiBwcm9j ZWR1cmUgaGFzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi ZWVuIHN1Y2Nlc3NmdWxseSBzY2hlZHVsZWQgZm9yIGV4ZWN1dGlvbiBvbiB0aGUNCj4gdGFyZ2V0 IEFQLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgICAgVGhlIGlu cHV0IGFyZ3VtZW50cyBhcmUgb3V0IG9mDQo+IHJhbmdlLiBFaXRoZXIgdGhlIHRhcmdldCBBUCBp cyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxl ciBvZiB0aGUgZnVuY3Rpb24sIG9yIHRoZSBQcm9jZWR1cmUgb3IgVG9rZW4gaXMNCj4gTlVMTA0K PiA+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgICAgICAgICAgICAgSWYgdGhlIHRhcmdl dCBBUCBpcyBidXN5IGV4ZWN1dGluZw0KPiBhbm90aGVyIHByb2NlZHVyZQ0KPiA+ICsgIEByZXR2 YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgICAgICAgVG9rZW4gaXMgYWxyZWFkeSBpbiB1c2Ug Zm9yIGFub3RoZXINCj4gcHJvY2VkdXJlDQo+ID4gKyAgQHJldHZhbCBFRklfVElNRU9VVCAgICAg ICAgICAgICAgICAgICBJbiBibG9ja2luZyBtb2RlLCB0aGUgdGltZW91dCBleHBpcmVkDQo+IGJl Zm9yZSB0aGUgc3BlY2lmaWVkIEFQDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoYXMgZmluaXNoZWQgKiovIEVGSV9TVEFUVVMNCj4gPiArRUZJQVBJIFNtbU1w RGlzcGF0Y2hQcm9jZWR1cmUgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9TTU1fTVBfUFJPVE9DT0wg ICAgICAgICAgICpUaGlzLA0KPiA+ICsgIElOICAgICAgIEVGSV9BUF9QUk9DRURVUkUyICAgICAg ICAgICAgIFByb2NlZHVyZSwNCj4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICBDcHVOdW1iZXIsDQo+ID4gKyAgSU4gICAgICAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgVGltZW91dEluTWljcm9zZWNvbmRzLA0KPiA+ICsgIElOIE9VVCAgIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICpQcm9jZWR1cmVBcmd1bWVudHMgT1BUSU9OQUwsDQo+ID4g KyAgSU4gT1VUICAgU01NX0NPTVBMRVRJT04gICAgICAgICAgICAgICAgKlRva2VuLA0KPiA+ICsg IElOIE9VVCAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICpDUFVTdGF0dXMNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBpZiAoVG9rZW4gIT0gTlVMTCkgew0KPiA+ICsgICAgKlRva2Vu ID0gQWxsb2NhdGVQb29sIChzaXplb2YgKFNQSU5fTE9DSykpOw0KPiA+ICsgICAgQVNTRVJUICgq VG9rZW4gIT0gTlVMTCk7DQo+ID4gKyAgICBJbml0aWFsaXplU3BpbkxvY2sgKChTUElOX0xPQ0sg KikoKlRva2VuKSk7DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIEludGVybmFsU21tU3RhcnR1cFRo aXNBcCgNCj4gPiArICAgICAgUHJvY2VkdXJlLA0KPiA+ICsgICAgICBDcHVOdW1iZXIsDQo+ID4g KyAgICAgIFByb2NlZHVyZUFyZ3VtZW50cywNCj4gPiArICAgICAgU21tQ3B1Q2FsbEluTmV3VHlw ZSwNCj4gPiArICAgICAgKFNQSU5fTE9DSyAqKSgqVG9rZW4pLA0KPiA+ICsgICAgICBUaW1lb3V0 SW5NaWNyb3NlY29uZHMsDQo+ID4gKyAgICAgIENQVVN0YXR1cw0KPiA+ICsgICAgICApOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEludGVybmFsU21tU3RhcnR1cFRoaXNBcCgNCj4g PiArICAgIFByb2NlZHVyZSwNCj4gPiArICAgIENwdU51bWJlciwNCj4gPiArICAgIFByb2NlZHVy ZUFyZ3VtZW50cywNCj4gPiArICAgIFNtbUNwdUNhbGxJbk5ld1R5cGUsDQo+ID4gKyAgICBOVUxM LA0KPiA+ICsgICAgVGltZW91dEluTWljcm9zZWNvbmRzLA0KPiA+ICsgICAgQ1BVU3RhdHVzDQo+ ID4gKyAgICApOw0KPiA+ICt9DQo+IA0KPiBUaGlzIGZ1bmN0aW9uIGJyZWFrcyB0aGUgYnVpbGQg Zm9yIG1lOg0KPiANCj4gICBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ0ludGVybmFsU21tU3RhcnR1 cFRoaXNBcCcgZnJvbSBpbmNvbXBhdGlibGUNCj4gICBwb2ludGVyIHR5cGUgWy1XZXJyb3JdDQo+ IA0KPiBJbnRlcm5hbFNtbVN0YXJ0dXBUaGlzQXAoKSBleHBlY3RzIGFuIEVGSV9BUF9QUk9DRURV UkUgYXMgZmlyc3QNCj4gcGFyYW1ldGVyOg0KPiANCj4gICB0eXBlZGVmDQo+ICAgVk9JRA0KPiAg IChFRklBUEkgKkVGSV9BUF9QUk9DRURVUkUpKA0KPiAgICAgSU4gT1VUIFZPSUQgICpCdWZmZXIN Cj4gICAgICk7DQo+IA0KPiBidXQgeW91IHBhc3MgRUZJX0FQX1BST0NFRFVSRTI6DQo+IA0KPiAg IHR5cGVkZWYNCj4gICBFRklfU1RBVFVTDQo+ICAgKEVGSUFQSSAqRUZJX0FQX1BST0NFRFVSRTIp KA0KPiAgICAgSU4gVk9JRCAgKlByb2NlZHVyZUFyZ3VtZW50DQo+ICAgKTsNCj4gDQo+IEFzc3Vt aW5nIHRoZSByZXR1cm4gc3RhdHVzIHByb3BhZ2F0aW9uIGlzIG90aGVyd2lzZSBjb3JyZWN0bHkg aW1wbGVtZW50ZWQNCj4gdGhyb3VnaCAiQ3B1U3RhdHVzIiAtLSBJIGRpZG4ndCBjaGVjayAtLSwg cGxlYXNlIHVzZSBhIGRlZGljYXRlZCB3cmFwcGVyDQo+IGZ1bmN0aW9uIGZvciB0aGUgY2FsbGJh Y2ssIHNvIHRoYXQgd2UgY2FuIGF2b2lkIHR5cGUgcHVubmluZyBvZiBmdW5jdGlvbg0KPiBwb2lu dGVycy4gKEl0J3MgcG9zc2libGUgdGhhdCB5b3UnbGwgaGF2ZSB0byBpbnRyb2R1Y2UgYSBzZXBh cmF0ZSB3cmFwcGVyDQo+IHN0cnVjdHVyZSB0b28sIGZvciBwYXNzaW5nIGluIGJvdGggdGhlIGZ1 bmN0aW9uIHBvaW50ZXIgYW5kIHRoZSBwcm9jZWR1cmUNCj4gYXJndW1lbnQgcG9pbnRlciAtLSBh bmQgdGhlbiB0aGF0IHN0cnVjdHVyZSBzaG91bGQgYmUgYWxsb2NhdGVkIGR5bmFtaWNhbGx5LikN Cg0KSGkgTGFzemxvLA0KDQpDYW4geW91IGhlbHAgdG8gZXhwbGFpbiBtb3JlIGFib3V0IGhvdyB0 byB1c2UgZGVkaWNhdGVkIHdyYXBwZXIgZnVuY3Rpb24gZm9yIHRoZSBjYWxsYmFjaz8gV2hhdCBJ IGNhbiBpbWFnZSBpcyB1c2luZyB0eXBlIGNhc3QgaGVyZSB0byBmaXggdGhpcyBpc3N1ZS4gV2h5 IHlvdSB0aGluayB0eXBlIGNhc3QgaXMgbm90IGVub3VnaCBoZXJlPyANCg0KPiANCj4gDQo+IC0t Ki0tDQo+IA0KPiANCj4gSW5kZXBlbmRlbnRseSwgSSB0aGluayB0aGF0IGNhdGNoaW5nICJvdXQg b2YgbWVtb3J5IiBzaXR1YXRpb25zIGluDQo+IFBpU21tQ3B1RHhlU21tIHdpdGggQVNTRVJUcyBp cyBiYWQgcHJhY3RpY2UuIFRoaXMgaXMgYSBwcml2aWxlZ2VkIC8NCj4gc2VjdXJpdHktcmVsZXZh bnQgZHJpdmVyLCBhbmQgdGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGV4cG9zZWQgYXMgYSBw cm90b2NvbA0KPiBtZW1iZXIgZnVuY3Rpb24gKGkuZS4gaXQncyBub3QgKm9ubHkqIGEgcGFydCBv ZiBkcml2ZXIgc3RhcnR1cCkuIFdoaWNoIEkgYmVsaWV2ZQ0KPiBtaWdodCBtYWtlIGl0IHBvc3Np YmxlIGZvciB0aGUgT1MsIGluZGlyZWN0bHkgKHZpYSBFRkkgcnVudGltZSBjYWxscyBmb3INCj4g ZXhhbXBsZSksIHRvIHRyaWdnZXIgdGhpcyBmdW5jdGlvbi4NCj4gDQo+IFNvLCBldmVuIHRob3Vn aCB0aGUgUEkgc3BlYyBkb2Vzbid0IGxpc3QgRUZJX09VVF9PRl9SRVNPVVJDRVMgYXMgYSB2YWxp ZA0KPiByZXR1cm4gY29kZSBmb3IgdGhpcyBtZW1iZXIgZnVuY3Rpb24sIHdlIHNob3VsZCByZXR1 cm4gdGhhdCwgaWYNCj4gQWxsb2NhdGVQb29sKCkgZmFpbHMuIChUaGlzIGFwcGxpZXMgdG8gU21t TXBCcm9hZGNhc3RQcm9jZWR1cmUoKSB0b28uKQ0KDQpBZ3JlZSwgd2lsbCBhZGQgZXJyb3IgaGFu ZGxpbmcgaGVyZSBhbmQgYWRkIHRoZSByZXR1cm4gc3RhdHVzIGNvZGUgdG8gdGhlIGZ1bmN0aW9u IGhlYWRlciBjb21tZW50cy4NCg0KVGhhbmtzLA0KRXJpYw0KPiANCj4gVGhhbmtzDQo+IExhc3ps bw0KPiANCj4gDQoNCg==