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.136, mailfrom: jian.j.wang@intel.com) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by groups.io with SMTP; Tue, 14 May 2019 00:03:20 -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 fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 May 2019 00:03:20 -0700 X-ExtLoop1: 1 Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga003.jf.intel.com with ESMTP; 14 May 2019 00:03:19 -0700 Received: from fmsmsx101.amr.corp.intel.com (10.18.124.199) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 14 May 2019 00:03:18 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx101.amr.corp.intel.com (10.18.124.199) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 14 May 2019 00:03:18 -0700 Received: from shsmsx107.ccr.corp.intel.com ([169.254.9.7]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.213]) with mapi id 14.03.0415.000; Tue, 14 May 2019 15:03:16 +0800 From: "Wang, Jian J" To: Laszlo Ersek , "devel@edk2.groups.io" , "Lu, XiaoyuX" CC: "Ye, Ting" Subject: Re: [edk2-devel] [PATCH v2 5/6] CryptoPkg: Upgrade OpenSSL to 1.1.1b Thread-Topic: [edk2-devel] [PATCH v2 5/6] CryptoPkg: Upgrade OpenSSL to 1.1.1b Thread-Index: AQHVBieJGdrCgCTDG0qhJAsa2AmzE6Zigy8AgAAEGoCAAXXt0IAEvkEAgAFZEVA= Date: Tue, 14 May 2019 07:03:16 +0000 Message-ID: References: <1557379429-7527-1-git-send-email-xiaoyux.lu@intel.com> <1557379429-7527-5-git-send-email-xiaoyux.lu@intel.com> <38ff9c2f-1d16-4719-18f6-07e84e4d8bf8@redhat.com> <56bae128-9d26-3b5a-0c79-b27b39ee29df@redhat.com> In-Reply-To: <56bae128-9d26-3b5a-0c79-b27b39ee29df@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOWZmZDJiNjEtZjQ1OC00ZjJmLTk4OWEtNGU2YTFlOTdkNGZiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVk5xQjhjeElTcjJicERvWDlETE5hc0drcXRcLzFQUlZmdHozK2N2MEhmV1pCSnZaeXh3K1hFczkwSHJTZVVlazMifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.600.7 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 TGFzemxvLA0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxv IEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIE1heSAx NCwgMjAxOSAxMjoxNSBBTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFdhbmcsIEppYW4g SiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dVgNCj4gPHhpYW95dXgubHVAaW50 ZWwuY29tPg0KPiBDYzogWWUsIFRpbmcgPHRpbmcueWVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBS ZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MiA1LzZdIENyeXB0b1BrZzogVXBncmFkZSBPcGVuU1NM IHRvIDEuMS4xYg0KPiANCj4gT24gMDUvMTAvMTkgMTI6MjYsIFdhbmcsIEppYW4gSiB3cm90ZToN Cj4gPiBIaSBMYXN6bG8sDQo+ID4NCj4gPiByYW5kXyogaXMgbmVlZGVkIGJ5IG9wZW5zc2wgaXRz ZWxmLiBCYXNlQ3J5cHRMaWIgYWxzbyBwcm92aWRlIFJhbmRvbVNlZWQoKQ0KPiA+IGFuZCBSYW5k b21CeXRlcygpIGludGVyZmFjZSB0byB3cmFwIG9wZW5zc2wgcmFuZCBmdW5jdGlvbmFsaXR5LiBX ZSBjYW4ndA0KPiA+IGp1c3QgZHJvcCB0aGVtLiBGcm9tIHBsYXRmb3JtIGluZGVwZW5kZW50IHBl cnNwZWN0aXZlLCB1c2luZyBwZXJmb3JtYW5jZQ0KPiA+IGNvdW50ZXIgaXMgdGhlIGJlc3QgY2hv aWNlIHdlIGhhdmUuIElmIHdlIHdhbnQgdG8gYWNoaWV2ZSB0aGUgdXR0ZXJtb3N0DQo+ID4gc2Vj dXJlIG1lY2hhbmlzbSwgb25seSBoYXJkd2FyZSBzZWVkL3JhbmQgZ2VuZXJhdG9yIGNhbiBtZWV0 IGl0LiBEbyB5b3UNCj4gPiBhZ3JlZSB0byBhZGQgY3B1IHNwZWNpZmljIGluc3RydWN0aW9uIHRv IGRvIHRoYXQ/IEZvciB0aG9zZSBwcm9jZXNzb3JzDQo+ID4gd2hpY2ggZG9uJ3Qgc3VwcG9ydCBz ZWVkL3JhbmQgZ2VuZXJhdGlvbiwgd2UgaGF2ZSB0byBmYWxsIGJhY2sgdG8NCj4gcGVyZm9ybWFu Y2UNCj4gPiBjb3VudGVyLg0KPiANCj4gSSBoYXZlIG5vdCBiZWVuIGF3YXJlIG9mIFJhbmRvbVNl ZWQoKSAvIFJhbmRvbUJ5dGVzKCkuDQo+IA0KPiBUaGUgUmFuZG9tU2VlZCgpIGZ1bmN0aW9uIGxl dHMgdGhlIGNhbGxlciBzcGVjaWZ5IGEgc2VlZCwgd2hpY2ggaXMgZ29vZA0KPiBkZXNpZ24sIElN Ty4gSW4gY2FzZSB0aGUgY2FsbGVyIGRvZXMgbm90IHBhc3MgaW4gYSBzZWVkLCB0aGUgZnVuY3Rp b24NCj4gaW1wbGVtZW50cyBpdHMgb3duIHNlZWQuDQo+IA0KPiBGb3IgdGhhdCBkZWZhdWx0IHNl ZWRpbmcsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbnM6DQo+IA0KPiAoMSkg IkNyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9SYW5kL0NyeXB0UmFuZC5jIiAtLSB1c2Vz IGEgY29uc3RhbnQNCj4gc3RyaW5nIGFzIHNlZWQuIDooDQo+IA0KPiAoMikgIkNyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9SYW5kL0NyeXB0UmFuZEl0Yy5jIiAtLSBjYWxscw0KPiBBc21S ZWFkSXRjKCkgdG8gY2FsY3VsYXRlIHRoZSBzZWVkLiBUaGUgZnVuY3Rpb24gQXNtUmVhZEl0Yygp IGlzIG5vdA0KPiBkZWZpbmVkIChvciBldmVuIGRlY2xhcmVkKSBhbnl3aGVyZSBpbiBlZGsyLCBz byBJIGRvbid0IGtub3cgd2hhdCBpdCBkb2VzLg0KPiANCj4gKDMpICJDcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWIvUmFuZC9DcnlwdFJhbmROdWxsLmMiIC0tIGNhbGxzDQo+IEFTU0VSVChG QUxTRSksIHRoZW4gcmV0dXJucyBGQUxTRS4NCj4gDQo+ICg0KSAiQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL1JhbmQvQ3J5cHRSYW5kVHNjLmMiIC0tIGNhbGxzDQo+IEFzbVJlYWRUc2Mo KSB0byBjYWxjdWxhdGUgdGhlIHNlZWQuDQo+IA0KPiANCj4gUEVJTXMgc2VlbSB0byB1c2UgKDMp LCB3aGljaCBhcHBlYXJzIHNhZmUuDQo+IA0KPiBEWEUgZHJpdmVycywgcnVudGltZSBEWEUgZHJp dmVycywgYW5kIFNNTSBkcml2ZXJzLCB1c2UgKDQpIG9uIElBMzIvWDY0LA0KPiBhbmQgKDEpIG9u IEFSTS9BQVJDSDY0LiBBbGwgcXVpdGUgdW5mb3J0dW5hdGUuDQo+IA0KPiBPcHRpb24gKDIpIGlz IG5ldmVyIHVzZWQgaW4gZWRrMi4NCj4gDQo+IEJhc2VkIG9uIHRoZSBhYm92ZSBhbmFseXNpcyAo aXMgaXQgY29ycmVjdD8pLCBJIG11c3QgYWdyZWUgdGhhdCB0aGUgdjENCj4gYW5kIHYyIGFwcHJv YWNoZXMgaW4gdGhlIHByZXNlbnQgcGF0Y2ggc2V0LCBuYW1lbHkgImNvbnN0YW50IGRhdGEiIGFu ZA0KPiAiVGltZXJMaWIiLCBtYXkgbm90IGJlIHdvcnNlIHRoYW4gd2hhdCB3ZSBhbHJlYWR5IGhh dmUuDQo+IA0KDQpJIHRoaW5rIHlvdSdyZSByaWdodC4gQ3VycmVudCBwb3J0aW5nIGluIHRyZWUg c2ltcGx5IHJldHVybnMgMC4NCg0KPiANCj4gPiBBbm90aGVyIG9wdGlvbiBpcyB0aGF0IHdlIGNv dWxkIG1ha2UgdXNlIG9mIEVGSV9STkdfUFJPVE9DT0wuIEFjY29yZGluZw0KPiA+IHRvIFVFRkkg c3BlYyAoc2VlIGJlbG93KSwgaXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGVudHJvcHkuDQo+ID4NCj4g PiAiVGhpcyBwcm90b2NvbCBpcyB1c2VkIHRvIHByb3ZpZGUgcmFuZG9tIG51bWJlcnMgZm9yIHVz ZSBpbiBhcHBsaWNhdGlvbnMsDQo+ID4gb3IgZW50cm9weSBmb3Igc2VlZGluZyBvdGhlciByYW5k b20gbnVtYmVyIGdlbmVyYXRvcnMuIg0KPiA+DQo+ID4gQWdhaW4sIHdlIGNvdWxkIHVzZSBwZXJm b3JtYW5jZSBjb3VudGVyIGFzIGEgZmFsbCBiYWNrIGlmDQo+IEVGSV9STkdfUFJPVE9DT0wNCj4g PiBpcyBub3QgcHJvdmlkZWQgYnkgYSBwbGF0Zm9ybS4gU28gaWYgYSBwbGF0Zm9ybSByZWFsbHkg Y2FyZSBhYm91dCB0aGUgc2VjdXJpdHksDQo+ID4gaXQgc2hvdWxkIHByb3ZpZGUgYSBFRklfUk5H X1BST1RPQ09MLiBUaGlzIGNhbiBhbHNvIGhlbHAgdG8gaGlkZSB0aGUNCj4gPiBoYXJkd2FyZS9w bGF0Zm9ybSBkZXBlbmRlbmN5Lg0KPiANCj4gQ29uc3VtaW5nIEVGSV9STkdfUFJPVE9DT0wgd291 bGQgYmUgYW4gaW1wcm92ZW1lbnQuDQo+IA0KPiBCdXQgaXQgbG9va3MgcXVpdGUgdHJpY2t5LiBO YW1lbHksIEVGSV9STkdfUFJPVE9DT0wgbWF5IGJlIHByb3ZpZGVkIGJ5IGENCj4gVUVGSSBkcml2 ZXIgdGhhdCBmb2xsb3dzIHRoZSBVRUZJIGRyaXZlciBtb2RlbCwgYW5kIHNvIHRoZSBwcm90b2Nv bA0KPiBjb3VsZCBiZWNvbWUgYXZhaWxhYmxlIGZpcnN0IGluIHRoZSBCRFMgcGhhc2UgKHdoZW4g dGhlIHVuZGVybHlpbmcgaHdybmcNCj4gZGV2aWNlIHdlcmUgY29ubmVjdGVkKS4gVW50aWwgdGhl biwgbm8gZHJpdmVyIHRoYXQgZGVwZW5kcyBvbiBlbnRyb3B5IC0tDQo+IHRocm91Z2ggQmFzZUNy eXB0TGliIG9yIE9wZW5zc2xMaWIgLS0gc2hvdWxkIGJlIGRpc3BhdGNoZWQuDQo+IA0KPiBPbiB0 aGUgb3RoZXIgaGFuZCwgaWYgdGhlIHBsYXRmb3JtIGhhcmR3YXJlIGRvZXMgbm90IGluY2x1ZGUg YSBod3JuZw0KPiAoYW5kIHNvIEVGSV9STkdfUFJPVE9DT0wgaXMgbmV2ZXIgcHJvZHVjZWQpLCB0 aGVuIHRoZSBlbnRyb3B5IGRlcGVuZGVudA0KPiBkcml2ZXJzIHNob3VsZCBiZSBkaXNwYXRjaGVk IGFzIHNvb24gYXMgdGhpcyBmYWN0IGlzIGRldGVybWluZWQNCj4gKGR5bmFtaWNhbGx5LCBhdCBl dmVyeSBib290KS4NCj4gDQo+IEluIG90aGVyIHdvcmRzLCBlbnRyb3B5LWRlcGVuZGVudCBkcml2 ZXJzIHNob3VsZCB3YWl0IHVudGlsIHBsYXRmb3JtDQo+IGNvZGUgKGxpa2VseSBpbiBCRFMpIG1h a2VzIHRoZSBkZXRlcm1pbmF0aW9uIHdoZXRoZXIgRUZJX1JOR19QUk9UT0NPTA0KPiBjYW4gb2Zm ZXIgaGlnaC1xdWFsaXR5IGVudHJvcHksIG9yIHRoZSBmYWxsYmFja3MgaGF2ZSB0byBiZSB1c2Vk Lg0KPiANCj4gVG8gbWFrZSBpdCBldmVuIG1vcmUgY29tcGxleCwgU01NIGRyaXZlcnMgdGhhdCBu ZWVkIGVudHJvcHkgc2hvdWxkDQo+IGxpa2VseSBuZXZlciB1c2UgRUZJX1JOR19QUk9UT0NPTCwg YmVjYXVzZSBhIDNyZCBwYXJ0eSBVRUZJIGRyaXZlcg0KPiBzaG91bGQgbm90IGJlIGFibGUgdG8g ZmVlZCBlbnRyb3B5IChzZW5zaXRpdmUgY3J5cHRvIGRhdGEpIHRvIGENCj4gcHJpdmlsZWdlZCAo U01NKSBkcml2ZXIuDQo+IA0KPiBEbyB5b3UgdGhpbmsgdGhpcyBpcyBwb3NzaWJsZSB0byBpbXBs ZW1lbnQ/Li4uIEl0IGxvb2tzIGV4dHJlbWVseQ0KPiBjb21wbGV4IHRvIG1lLg0KPiANCg0KSSBo YXZlIHRvIGFkbWl0IEkgZm9yZ290IHRoZSBTTU0gcGFydC4gWW91J3JlIHJpZ2h0IGl0J3MgY29t cGxleCB0byBkby4NCkxldCdzIGZvcmdldCB0aGlzIG9wdGlvbiBhdCBwcmVzZW50Lg0KDQo+IEhv bmVzdGx5IHRoZSBiZXN0IEkgY291bGQgc3VnZ2VzdCBpcywgInVzZSBSRFJBTkQgaWYgYXZhaWxh YmxlLCBmYWxsDQo+IGJhY2sgdG8gVGltZXJMaWIgb3RoZXJ3aXNlIi4gOiggQnV0IEkgd291bGQg dW5kZXJzdGFuZCBpZiB5b3Ugd2FudGVkIHRvDQo+IHBvc3Rwb25lIFJEUkFORCB1bnRpbCBsYXRl ci4NCj4gDQoNClNvcnJ5IGFib3V0IHRoYXQgWGlhb3l1IHNlbnQgb3V0IHVwZGF0ZSBwYXRjaCBz ZXJpZXMgYmVmb3JlDQp3ZSBnZXQgY29uc2Vuc3VzLiBIZSBtaXN1bmRlcnN0b29kIHNvbWUgZGV0 YWlscyBpbiB0aGUNCnJldmlldyBwcm9jZXNzLiAoQXBwYXJlbnRseSBJIGRpZG4ndCBjb2FjaCBo aW0gd2VsbC4pDQoNCkFjdHVhbGx5IHdlIHdhbnRlZCB0byB1c2UgaGFyZHdhcmUgc2VlZC9yYW5k IGdlbmVyYXRvciBhdCBmaXJzdC4gSQ0KdGhvdWdodCBpdCBtaWdodCBub3QgYmUgYWNjZXB0YWJs ZSBkdWUgdG8gdGhlIGZhY3QgaXQncyBwcm9jZXNzb3INCmRlcGVuZGVudC4gU28gd2UgaGVzaXRh dGVkLiBNeSB1bmRlcnN0YW5kaW5nIHRvIGFib3ZlIGNvbW1lbnQNCmlzIHRoYXQgeW91IGFncmVl IHRvIHVzZSByZHJhbmQvcmRzZWVkIGlmIGF2YWlsYWJsZSBhbmQgZmFsbCBiYWNrIHRvDQpUaW1l ckxpYiBvdGhlcndpc2UsIHJpZ2h0Pw0KDQo+IEdpdmVuIHRoaXMgc2l0dWF0aW9uLCBJIHRoaW5r IEkgY2FuJ3QgZ2l2ZSBBLWIgb3IgUi1iIGZvciB0aGlzIHBhdGNoIGluDQo+IHRoZSBzZXJpZXMu IEkgdGhpbmsgSSBjYW4gb25seSBvZmZlciByZWdyZXNzaW9uLXRlc3RpbmcgKGZvciB0aGUNCj4g dXBjb21pbmcgdjMpLiBBbmQuIEkgZG9uJ3QgaW50ZW5kIHRvIGJsb2NrIHRoaXMgd29yayBiYXNl ZCBvbiB0aGUNCj4gZW50cm9weSBzb3VyY2UgYWxvbmUsIGFueSBtb3JlLg0KPiANCj4gLi4uIENh biB3ZSBhdCBsZWFzdCBjb2xsZWN0IGEgZGV0YWlsZWQgbGlzdCBvZiB1c2UgY2FzZXMgZm9yIHdo aWNoIHdlDQo+IG11c3QgcHJvdmlkZSBlbnRyb3B5PyBJIHRoaW5rIHdlIHNob3VsZCBkb2N1bWVu dCB0aGF0IHNvbWV3aGVyZS4NCj4gDQoNClNvcnJ5IGFnYWluLiBJIHVuZGVyc3RhbmQgdGhlIHNp dHVhdGlvbiBoZXJlLiBUaGFua3MgZm9yIGV2ZXJ5IGVmZm9ydA0KeW91IHB1dCBpbiB0aGUgcmV2 aWV3IGFuZCB0ZXN0LiBSZWFsbHkgYXBwcmVjaWF0ZSBpdC4NCg0KQXMgdG8gdGhlIHVzZSBjYXNl cywgSSBjaGVja2VkIGFsbCBjb2RlIGluIGVkazIgYW5kIGZvdW5kIGZvbGxvd2luZw0KY29kZSB3 aGljaCBjYWxsIFJhbmRTZWVkL1JhbmRCeXRlcyBpbnRlcmZhY2UuIFJhbmRTZWVkIGlzIGNhbGxl ZA0Kd2l0aCAoTlVMTCwgMCkuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhpcyB3aWxsIGxldCBvcGVu c3NsIHRvIGdlbmVyYXRlDQp0aGUgc2VlZC4NCg0KICAtIENyeXB0b1BrZ1xMaWJyYXJ5XFRsc0xp YlxUbHNJbml0LmMNCiAgLSBTZWN1cml0eVBrZ1xIZGRQYXNzd29yZFxIZGRQYXNzd29yZER4ZS5j DQoNCkZvciBvcGVuc3NsIGl0c2VsZiwgSSBmb3VuZCBjb21wb25lbnRzIGFzbjEsIGJuLCBldnAs IG9jc3AsIHBlbSwgcGtjczcsIHBrY3MxMiwgDQpyc2EsIHNzbCAoaW4gYWRkaXRpb24gdG8gY21z LCBkc2EsIHNycCwgd2hpY2ggYXJlIGRpc2FibGVkIGluIGVkazIpIHdpbGwgY2FsbCByYW5kXyoN CmludGVyZmFjZS4NCg0KVGhhbmtzLA0KSmlhbg0KDQo+IFRoYW5rcywNCj4gTGFzemxvDQo+IA0K PiA+DQo+ID4gUmVnYXJkcywNCj4gPiBKaWFuDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0bzpkZXZlbEBl ZGsyLmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mDQo+ID4+IExhc3psbyBFcnNlaw0KPiA+PiBTZW50 OiBGcmlkYXksIE1heSAxMCwgMjAxOSAxOjMwIEFNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbzsgTHUsIFhpYW95dVggPHhpYW95dXgubHVAaW50ZWwuY29tPg0KPiA+PiBDYzogV2FuZywg SmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBZZSwgVGluZyA8dGluZy55ZUBpbnRlbC5j b20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYyIDUvNl0gQ3J5cHRv UGtnOiBVcGdyYWRlIE9wZW5TU0wgdG8NCj4gMS4xLjFiDQo+ID4+DQo+ID4+IE9uIDA1LzA5LzE5 IDE5OjE1LCBMYXN6bG8gRXJzZWsgd3JvdGU6DQo+ID4+DQo+ID4+PiBIb3cgYWJvdXQgdGhlIGZv bGxvd2luZzoNCj4gPj4+DQo+ID4+PiAtIEl0IHNlZW1zIGxpa2Ugd2UgY2Fubm90IGNvbnZpbmNl IE9wZW5TU0wgdG8gKm5ldmVyKiBjYWxsIHRoZXNlDQo+ID4+PiAgIGZ1bmN0aW9ucywgdW5kZXIg VUVGSS4NCj4gPj4+DQo+ID4+PiAtIFdlIGFsc28gY2Fubm90IHByb3ZpZGUgYW4gaW1wbGVtZW50 YXRpb24gdGhhdCBpcyAqZ3VhcmFudGVlZCogdG8gYmUNCj4gPj4+ICAgc2VjdXJlIGVub3VnaCwg SU1PLg0KPiA+Pj4NCj4gPj4+IC0gSXQgc2VlbXMgbGlrZSB0aGVzZSBmdW5jdGlvbnMgKnNob3Vs ZCogbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBlZGsyDQo+ID4+PiAgIGJ1aWxkIGhvd2V2ZXIsIGdp dmVuIHRoYXQgd2UncmUgbm90IHRyeWluZyB0byBkbyBhbnl0aGluZyAibmV3IiB3aXRoDQo+ID4+ PiAgIE9wZW5TU0wgaW4gZWRrMiAtLSB3ZSBqdXN0IHdhbnQgdG8gdXNlIHRoZSBuZXcgT3BlblNT TCByZWxlYXNlIGZvciB0aGUNCj4gPj4+ICAgc2FtZSBvbGQgdGhpbmdzLg0KPiA+Pj4NCj4gPj4+ IC0gU28gd2h5IG5vdCBqdXN0IGVuc3VyZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyAqbmV2ZXIgcmV0 dXJuKj8NCj4gPj4+DQo+ID4+PiAoMSkgQmFzaWNhbGx5IGltcGxlbWVudCBhbGwgb2YgdGhlIGZ1 bmN0aW9ucyBsaWtlIHRoaXM6DQo+ID4+Pg0KPiA+Pj4gICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+ ICAgQ3B1RGVhZExvb3AgKCk7DQo+ID4+PiAgIC8vDQo+ID4+PiAgIC8vIGlmIGEgcmV0dXJuIHZh bHVlIGlzIG5lZWRlZA0KPiA+Pj4gICAvLw0KPiA+Pj4gICByZXR1cm4gMDsNCj4gPj4+DQo+ID4+ PiBXaGF0IGRvIHlvdSB0aGluayBhYm91dCB0aGlzIGFwcHJvYWNoPw0KPiA+Pg0KPiA+PiBJIG5v dGljZSB0aGF0ICJyYW5kIiBpcyBhbm90aGVyIG1vZHVsZSBpbiBPcGVuU1NMLg0KPiA+Pg0KPiA+ PiBDYW4gd2UgdHJ5IGFkZGluZyAibm8tcmFuZCIgdG8gb3VyIENvbmZpZ3VyZSBpbnZvY2F0aW9u PyBQZXJoYXBzIHRoZQ0KPiA+PiBuZWVkIGZvciBhbGwgb2YgdGhlIHJhbmRfKiBmdW5jdGlvbnMg Z29lcyBhd2F5IHRoZW4uDQo+ID4+DQo+ID4+IFRoYW5rcw0KPiA+PiBMYXN6bG8NCj4gPj4NCj4g Pj4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCg0K