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.100; helo=mga07.intel.com; envelope-from=bob.c.feng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 0D7D521962301 for ; Mon, 28 Jan 2019 02:35:33 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jan 2019 02:35:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,533,1539673200"; d="scan'208";a="141962827" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga001.fm.intel.com with ESMTP; 28 Jan 2019 02:35:33 -0800 Received: from fmsmsx157.amr.corp.intel.com (10.18.116.73) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 28 Jan 2019 02:35:33 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX157.amr.corp.intel.com (10.18.116.73) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 28 Jan 2019 02:35:32 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.110]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.194]) with mapi id 14.03.0415.000; Mon, 28 Jan 2019 18:35:30 +0800 From: "Feng, Bob C" To: Laszlo Ersek CC: "edk2-devel@lists.01.org" , "Gao, Liming" Thread-Topic: [edk2] [Patch 00/33] BaseTools python3 migration patch set Thread-Index: AQHUtGubdXY1ZeTLHUyxsMfS01NmtqW/KM0AgACNeACAAA9kgIAENBxwgACHpSA= Date: Mon, 28 Jan 2019 10:35:30 +0000 Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D160076553@SHSMSX101.ccr.corp.intel.com> References: <20190125045626.14700-1-bob.c.feng@intel.com> <64c49419-fe14-1be4-bfaf-1d601aedb294@redhat.com> <08650203BA1BD64D8AD9B6D5D74A85D160071956@SHSMSX101.ccr.corp.intel.com> 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: [Patch 00/33] BaseTools python3 migration patch set 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: Mon, 28 Jan 2019 10:35:34 -0000 X-List-Received-Date: Mon, 28 Jan 2019 10:35:34 -0000 X-List-Received-Date: Mon, 28 Jan 2019 10:35:34 -0000 X-List-Received-Date: Mon, 28 Jan 2019 10:35:34 -0000 X-List-Received-Date: Mon, 28 Jan 2019 10:35:34 -0000 X-List-Received-Date: Mon, 28 Jan 2019 10:35:34 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpJIHNlbnQgb3V0IDIgcGF0Y2hlcyB0byBmaXggdGhpcyBpc3N1ZS4gQW5k IEkgYWxzbyBwdXNoZWQgdGhlIHBhdGNoZXMgdG8gdGhlIHJlcG8gaHR0cHM6Ly9naXRodWIuY29t L0JvYkNGL2VkazIuZ2l0IGJyYW5jaCBweTNiYXNldG9vbHMNCg0KVGhhbmtzLA0KQm9iDQoNCi0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBGZW5nLCBCb2IgQyANClNlbnQ6IE1vbmRh eSwgSmFudWFyeSAyOCwgMjAxOSAxMDozMyBBTQ0KVG86ICdMYXN6bG8gRXJzZWsnIDxsZXJzZWtA cmVkaGF0LmNvbT4NCkNjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgR2FvLCBMaW1pbmcgPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtlZGsyXSBbUGF0Y2ggMDAvMzNdIEJh c2VUb29scyBweXRob24zIG1pZ3JhdGlvbiBwYXRjaCBzZXQNCg0KSGkgTGFzemxvLA0KDQpUaGFu a3MgZm9yIHlvdXIgdGVzdGluZyBhbmQgZGV0YWlsZWQgdGVzdGluZyByZXN1bHQuIEknbGwgY2hl Y2sgdGhlIGlzc3VlIGhhcHBlbmVkIGluIChhMikgYW5kIHByb3ZpZGUgYSBwYXRjaCBmb3IgaXQu DQoNClRoYW5rcywNCkJvYiANCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IExh c3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KU2VudDogU2F0dXJkYXksIEph bnVhcnkgMjYsIDIwMTkgMjoxOCBBTQ0KVG86IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVs LmNvbT4NCkNjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgR2FvLCBMaW1pbmcgPGxpbWluZy5n YW9AaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtlZGsyXSBbUGF0Y2ggMDAvMzNdIEJhc2VUb29s cyBweXRob24zIG1pZ3JhdGlvbiBwYXRjaCBzZXQNCg0KT24gMDEvMjUvMTkgMTA6NDIsIEZlbmcs IEJvYiBDIHdyb3RlOg0KPiBbLi4uXQ0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gU2VudDog RnJpZGF5LCBKYW51YXJ5IDI1LCAyMDE5IDQ6NTcgUE0NCj4gVG86IEZlbmcsIEJvYiBDIDxib2Iu Yy5mZW5nQGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBHYW8sIExp bWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNo IDAwLzMzXSBCYXNlVG9vbHMgcHl0aG9uMyBtaWdyYXRpb24gcGF0Y2ggDQo+IHNldA0KPg0KPiBb Li4uXQ0KPg0KPiBPbiAwMS8yNS8xOSAwNTo1NSwgRmVuZywgQm9iIEMgd3JvdGU6DQo+PiBCWjog aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD01NQ0KPj4NCj4+ IFRoaXMgcGF0Y2ggc2V0IGlzIHRvIGVuYWJsZSBweXRob24zIG9uIEJhc2VUb29scy4gQmFzZXRv b2xzIGNvZGUgd2lsbCANCj4+IGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIHB5dGhvbjMgYW5kIHB5 dGhvbjIuDQo+Pg0KPj4gV2Ugd2lsbCBoYXZlIHR3byBlbnZzIFBZVEhPTjNfRU5BQkxFIGFuZCBQ WVRIT05fQ09NTUFORC4gVGhlIGJlaGF2aW9yIA0KPj4gY2FuIGJlIGNvbWJpbmVkIGFzIHRoZSBi ZWxvdyB0byBzdXBwb3J0IHRoaXMgdXNhZ2UuDQo+PiBJZiB1c2VyIHdhbnRzIHRoZSBzcGVjaWZp YyBweXRob24gaW50ZXJwcmV0ZXIsIGhlIG9ubHkgbmVlZHMgdG8gc2V0IA0KPj4gUFlUSE9OX0NP TU1BTkQgZW52Lg0KPj4gSWYgUFlUSE9OM19FTkFCTEUgaXMgc2V0LCBQWVRIT05fQ09NTUFORCB3 aWxsIGJlIHNldCB0byB0aGUgZm91bmQgb25lIA0KPj4gYnkgZWRrMiBzY3JpcHRzIGJhc2VkIG9u IFBZVEhPTjNfRU5BQkxFIHZhbHVlLg0KPj4gSWYgUFlUSE9OM19FTkFCTEUgaXMgbm90IHNldCwg YnV0IFBZVEhPTl9DT01NQU5EIGlzIHNldCwgdGhlbiANCj4+IFBZVEhPTl9DT01NQU5EIHdpbGwg YmUgdXNlZCB0byBydW4gcHl0aG9uIHNjcmlwdC4gTm8gdmVyc2lvbiBjaGVjayANCj4+IGhlcmUu DQo+PiBJZiBQWVRIT04zX0VOQUJMRSBpcyBub3Qgc2V0LCBidXQgUFlUSE9OX0NPTU1BTkQgaXMg bm90IHNldCwgDQo+PiBQWVRIT05fQ09NTUFORCB3aWxsIGJlIHNldCB0byB0aGUgaGlnaCB2ZXJz aW9uIHB5dGhvbiBpbnN0YWxsZWQgaW4gDQo+PiBPUy4NCg0KSSByYW4gdGhlIGZvbGxvd2luZyB0 ZXN0cywgYXQgY29tbWl0IDQxYzA2MTZmYzA4MSAoIkJhc2VUb29sczogRW90IHRvb2wNClB5dGhv bjMgYWRhcHRpb24iLCAyMDE5LTAxLTI1KS4gRWFjaCB0ZXN0IHdhcyBwZXJmb3JtZWQgaW4gYSBj bGVhbiB0cmVlIChhZnRlciBydW5uaW5nICJnaXQgY2xlYW4gLWZmZHgiKSBhbmQgY2xlYW4gZW52 aXJvbm1lbnQgKEkgcmUtc291cmNlZCAiZWRrc2V0dXAuc2giIGZvciBlYWNoIHRlc3QgaW4gc2Vw YXJhdGlvbikuIEluIGFkZGl0aW9uLCB0aGUgYmFzZSB0b29scyB3ZXJlIHJlYnVpbHQgKGFnYWlu IGZyb20gYSBjbGVhbiB0cmVlKSBmb3IgZWFjaCB0ZXN0LCB3aXRoIHRoZSBmb2xsb3dpbmcgY29t bWFuZCBbMV06DQoNCiAgbmljZSBtYWtlIC1DICIkRURLX1RPT0xTX1BBVEgiIC1qICQoZ2V0Y29u ZiBfTlBST0NFU1NPUlNfT05MTikNCg0KKGEpIE9uIG15IFJIRUw3LjUgV29ya3N0YXRpb24gbGFw dG9wLCBJIGhhdmUgYm90aCB0aGUgc3lzdGVtLWxldmVsIHB5dGhvbiBwYWNrYWdlcyBpbnN0YWxs ZWQgKHB5dGhvbi0yLjcuNS02OS5lbDdfNS54ODZfNjQpLCBhbmQgdGhlIGV4dHJhDQpweXRob24t My40IHN0dWZmIGZyb20gRVBFTC03IChweXRob24zNC0zLjQuOS0xLmVsNy54ODZfNjQpLg0KDQoo YTEpIERpZG4ndCBzZXQgZWl0aGVyIFBZVEhPTjNfRU5BQkxFIG9yIFBZVEhPTl9DT01NQU5ELiBU aGUgYnVpbGQgdXRpbGl0eSBwaWNrZWQNCg0KICBQWVRIT05fQ09NTUFORCAgID0gL3Vzci9iaW4v cHl0aG9uMy40DQoNCmFuZCBJIHN1Y2Nlc3NmdWxseSBidWlsdCBPdm1mUGtnIGZvciBJQTMyLCBJ QTMyWDY0LCBhbmQgWDY0OyBhbHNvIEFybVZpcnRRZW11IGZvciBBQVJDSDY0LiBUaGUgYnVpbHQg ZmlybXdhcmUgaW1hZ2VzIHBhc3NlZCBhIHNtb2tlIHRlc3QgdG9vLg0KDQooYTIpIEkgcmVtb3Zl ZCBhbGwgdGhlIHB5dGhvbjM0IHBhY2thZ2VzIChhbmQgdGhlIGRlcGVuZGVudCBwYWNrYWdlcykg ZnJvbSBteSBsYXB0b3AuIERpZG4ndCBzZXQgZWl0aGVyIG9mIFBZVEhPTjNfRU5BQkxFIGFuZCBQ WVRIT05fQ09NTUFORC4NCihUaGlzIGlzIHRoZSBjb25maWd1cmF0aW9uIHdoYXQgYSAibm9ybWFs IiBSSEVMNyBlbnZpcm9ubWVudCB3b3VsZA0KcHJvdmlkZS4pDQoNCkluIHRoaXMgY2FzZSwgcmVi dWlsZGluZyB0aGUgYmFzZSB0b29scyBbMV0gZmFpbGVkLCBpbiB0aGUgdGVzdGluZw0KcGhhc2U6 DQoNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KPiBGQUlMOiB0ZXN0X0VjY19DUGFyc2VyNF9DTGV4ZXIgKENo ZWNrUHl0aG9uU3ludGF4LlRlc3RzKQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToNCj4gICBGaWxlICIuLi4vQmFzZVRvb2xzL1Rlc3RzL0NoZWNr UHl0aG9uU3ludGF4LnB5IiwgbGluZSA1NSwgaW4gPGxhbWJkYT4NCj4gICAgIG5ld21ldGhvZCA9 IGxhbWJkYSBzZWxmOiBzZWxmLlNpbmdsZUZpbGVUZXN0KGZpbGVuYW1lKQ0KPiAgIEZpbGUgIi4u Li9CYXNlVG9vbHMvVGVzdHMvQ2hlY2tQeXRob25TeW50YXgucHkiLCBsaW5lIDMzLCBpbiBTaW5n bGVGaWxlVGVzdA0KPiAgICAgc2VsZi5mYWlsKCdzeW50YXggZXJyb3I6ICVzLCBFcnJvciBpcyAl cycgJSAoZmlsZW5hbWUsIHN0cihlKSkpDQo+IEFzc2VydGlvbkVycm9yOiBzeW50YXggZXJyb3I6 IC4uLi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjQvQ0xleGVyLnB5LCBFcnJv ciBpcyAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjQvQ0xl eGVyLnB5IiwgbGluZSA1OTANCj4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnB1dD1Ob25lLCBv dXRwdXQ6VGV4dElPID0gc3lzLnN0ZG91dCk6DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXg0KPiBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgNCj4NCj4NCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KPiBGQUlMOiB0ZXN0X0VjY19DUGFyc2VyNF9DTGlzdGVuZXIgKENoZWNr UHl0aG9uU3ludGF4LlRlc3RzKQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToNCj4gICBGaWxlICIuLi4vQmFzZVRvb2xzL1Rlc3RzL0NoZWNrUHl0 aG9uU3ludGF4LnB5IiwgbGluZSA1NSwgaW4gPGxhbWJkYT4NCj4gICAgIG5ld21ldGhvZCA9IGxh bWJkYSBzZWxmOiBzZWxmLlNpbmdsZUZpbGVUZXN0KGZpbGVuYW1lKQ0KPiAgIEZpbGUgIi4uLi9C YXNlVG9vbHMvVGVzdHMvQ2hlY2tQeXRob25TeW50YXgucHkiLCBsaW5lIDMzLCBpbiBTaW5nbGVG aWxlVGVzdA0KPiAgICAgc2VsZi5mYWlsKCdzeW50YXggZXJyb3I6ICVzLCBFcnJvciBpcyAlcycg JSAoZmlsZW5hbWUsIHN0cihlKSkpDQo+IEFzc2VydGlvbkVycm9yOiBzeW50YXggZXJyb3I6IC4u Li9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjQvQ0xpc3RlbmVyLnB5LCBFcnJv ciBpcyAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjQvQ0xp c3RlbmVyLnB5IiwgbGluZSAzNQ0KPiAgICAgZGVmIGVudGVyVHJhbnNsYXRpb25fdW5pdChzZWxm LCBjdHg6Q1BhcnNlci5UcmFuc2xhdGlvbl91bml0Q29udGV4dCk6DQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4NCj4gU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4 DQo+DQo+DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCj4gRkFJTDogdGVzdF9FY2NfQ1BhcnNlcjRfQ1BhcnNl ciAoQ2hlY2tQeXRob25TeW50YXguVGVzdHMpDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gVHJhY2ViYWNr IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPiAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvVGVzdHMv Q2hlY2tQeXRob25TeW50YXgucHkiLCBsaW5lIDU1LCBpbiA8bGFtYmRhPg0KPiAgICAgbmV3bWV0 aG9kID0gbGFtYmRhIHNlbGY6IHNlbGYuU2luZ2xlRmlsZVRlc3QoZmlsZW5hbWUpDQo+ICAgRmls ZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhvblN5bnRheC5weSIsIGxpbmUgMzMsIGlu IFNpbmdsZUZpbGVUZXN0DQo+ICAgICBzZWxmLmZhaWwoJ3N5bnRheCBlcnJvcjogJXMsIEVycm9y IGlzICVzJyAlIChmaWxlbmFtZSwgc3RyKGUpKSkNCj4gQXNzZXJ0aW9uRXJyb3I6IHN5bnRheCBl cnJvcjogLi4uL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9DUGFyc2VyNC9DUGFyc2VyLnB5 LCBFcnJvciBpcyAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNl cjQvQ1BhcnNlci5weSIsIGxpbmUgNzQ0DQo+ICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5wdXQ6 VG9rZW5TdHJlYW0sIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4NCj4gU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4DQo+DQo+DQo+ ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCj4gRkFJTDogdGVzdF9Fb3RfQ1BhcnNlcjRfQ0xleGVyIChDaGVja1B5 dGhvblN5bnRheC5UZXN0cykNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6DQo+ICAgRmlsZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhv blN5bnRheC5weSIsIGxpbmUgNTUsIGluIDxsYW1iZGE+DQo+ICAgICBuZXdtZXRob2QgPSBsYW1i ZGEgc2VsZjogc2VsZi5TaW5nbGVGaWxlVGVzdChmaWxlbmFtZSkNCj4gICBGaWxlICIuLi4vQmFz ZVRvb2xzL1Rlc3RzL0NoZWNrUHl0aG9uU3ludGF4LnB5IiwgbGluZSAzMywgaW4gU2luZ2xlRmls ZVRlc3QNCj4gICAgIHNlbGYuZmFpbCgnc3ludGF4IGVycm9yOiAlcywgRXJyb3IgaXMgJXMnICUg KGZpbGVuYW1lLCBzdHIoZSkpKQ0KPiBBc3NlcnRpb25FcnJvcjogc3ludGF4IGVycm9yOiAuLi4v QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXI0L0NMZXhlci5weSwgRXJyb3IgaXMg ICBGaWxlICIuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXI0L0NMZXhlci5w eSIsIGxpbmUgNTkxDQo+ICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5wdXQ9Tm9uZSwgb3V0cHV0 OlRleHRJTyA9IHN5cy5zdGRvdXQpOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4NCj4gU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4DQo+DQo+DQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCj4gRkFJTDogdGVzdF9Fb3RfQ1BhcnNlcjRfQ0xpc3RlbmVyIChDaGVja1B5dGhv blN5bnRheC5UZXN0cykNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6DQo+ICAgRmlsZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhvblN5 bnRheC5weSIsIGxpbmUgNTUsIGluIDxsYW1iZGE+DQo+ICAgICBuZXdtZXRob2QgPSBsYW1iZGEg c2VsZjogc2VsZi5TaW5nbGVGaWxlVGVzdChmaWxlbmFtZSkNCj4gICBGaWxlICIuLi4vQmFzZVRv b2xzL1Rlc3RzL0NoZWNrUHl0aG9uU3ludGF4LnB5IiwgbGluZSAzMywgaW4gU2luZ2xlRmlsZVRl c3QNCj4gICAgIHNlbGYuZmFpbCgnc3ludGF4IGVycm9yOiAlcywgRXJyb3IgaXMgJXMnICUgKGZp bGVuYW1lLCBzdHIoZSkpKQ0KPiBBc3NlcnRpb25FcnJvcjogc3ludGF4IGVycm9yOiAuLi4vQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXI0L0NMaXN0ZW5lci5weSwgRXJyb3IgaXMg ICBGaWxlICIuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXI0L0NMaXN0ZW5l ci5weSIsIGxpbmUgMzUNCj4gICAgIGRlZiBlbnRlclRyYW5zbGF0aW9uX3VuaXQoc2VsZiwgY3R4 OkNQYXJzZXIuVHJhbnNsYXRpb25fdW5pdENvbnRleHQpOg0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeDQo+IFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheA0KPg0K Pg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+IEZBSUw6IHRlc3RfRW90X0NQYXJzZXI0X0NQYXJzZXIgKENo ZWNrUHl0aG9uU3ludGF4LlRlc3RzKQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToNCj4gICBGaWxlICIuLi4vQmFzZVRvb2xzL1Rlc3RzL0NoZWNr UHl0aG9uU3ludGF4LnB5IiwgbGluZSA1NSwgaW4gPGxhbWJkYT4NCj4gICAgIG5ld21ldGhvZCA9 IGxhbWJkYSBzZWxmOiBzZWxmLlNpbmdsZUZpbGVUZXN0KGZpbGVuYW1lKQ0KPiAgIEZpbGUgIi4u Li9CYXNlVG9vbHMvVGVzdHMvQ2hlY2tQeXRob25TeW50YXgucHkiLCBsaW5lIDMzLCBpbiBTaW5n bGVGaWxlVGVzdA0KPiAgICAgc2VsZi5mYWlsKCdzeW50YXggZXJyb3I6ICVzLCBFcnJvciBpcyAl cycgJSAoZmlsZW5hbWUsIHN0cihlKSkpDQo+IEFzc2VydGlvbkVycm9yOiBzeW50YXggZXJyb3I6 IC4uLi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvQ1BhcnNlcjQvQ1BhcnNlci5weSwgRXJy b3IgaXMgICBGaWxlICIuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXI0L0NQ YXJzZXIucHkiLCBsaW5lIDc0NA0KPiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0OlRva2Vu U3RyZWFtLCBvdXRwdXQ6VGV4dElPID0gc3lzLnN0ZG91dCk6DQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeDQo+IFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheA0KPg0KPg0KPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+IFJhbiAyNzAgdGVzdHMgaW4gMC45MzhzDQo+DQo+IEZBSUxFRCAoZmFpbHVy ZXM9NikNCg0KSSBkaWRuJ3QgY29udGludWUgdGVzdGluZyBvbiBteSBSSEVMNyBsYXB0b3AgYmV5 b25kIHRoaXMgcG9pbnQuDQoNCg0KKGIpIFJIRUwtOCB2aXJ0dWFsIG1hY2hpbmUsIHdpdGggIi91 c3IvYmluL3B5dGhvbjMuNiIgZnJvbSBweXRob24zNi0zLjYuNi0xOC5lbDgueDg2XzY0LCBhbmQg Ii91c3IvbGliZXhlYy9wbGF0Zm9ybS1weXRob24iIGZyb20gcGxhdGZvcm0tcHl0aG9uLTMuNi44 LTEuZWw4Lng4Nl82NC4NCg0KKGIxKSBEaWRuJ3Qgc2V0IGVpdGhlciBQWVRIT04zX0VOQUJMRSBv ciBQWVRIT05fQ09NTUFORC4gVGhlIGJ1aWxkIHV0aWxpdHkgcGlja2VkDQoNCiAgUFlUSE9OX0NP TU1BTkQgICA9IC91c3IvYmluL3B5dGhvbjMuNg0KDQphbmQgSSBzdWNjZXNzZnVsbHkgYnVpbHQg T3ZtZlBrZyBmb3IgSUEzMiwgSUEzMlg2NCwgYW5kIFg2NC4gKEkgZG9uJ3QgaGF2ZSBhIGNyb3Nz LWNvbXBpbGVyIGluc3RhbGxlZCBpbiB0aGlzIGVudmlyb25tZW50IHlldCwgbm9yIGEgUkhFTDgN CmFhcmNoNjQgS1ZNIGd1ZXN0LCBzbyBJIGNvdWxkbid0IHRlc3QgQXJtVmlydFFlbXUgZm9yIG5v dykuDQoNCihiMikgSSBzZXQgUFlUSE9OX0NPTU1BTkQgdG8gIi91c3IvbGliZXhlYy9wbGF0Zm9y bS1weXRob24iLiBEaWRuJ3Qgc2V0IFBZVEhPTjNfRU5BQkxFLiBUaGUgc2FtZSBidWlsZHMgYXMg aW4gKGIxKSBzdWNjZWVkZWQuDQoNCg0KVGh1cywgd2hhdCBzZWVtcyB0byBiZSBtaXNzaW5nIGlz IGEgbGl0dGxlIGJpdCBvZiBweXRob24yIGNvbXBhdGliaWxpdHksIGluIChhMikuDQoNClRoYW5r cywNCkxhc3psbw0K