From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.136; helo=mga12.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (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 05690211B1113 for ; Sun, 13 Jan 2019 23:01:49 -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 fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jan 2019 23:01:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,476,1539673200"; d="scan'208";a="109664788" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 13 Jan 2019 23:01:48 -0800 Received: from fmsmsx122.amr.corp.intel.com (10.18.125.37) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 13 Jan 2019 23:01:48 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx122.amr.corp.intel.com (10.18.125.37) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 13 Jan 2019 23:01:48 -0800 Received: from shsmsx152.ccr.corp.intel.com ([169.254.6.44]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.196]) with mapi id 14.03.0415.000; Mon, 14 Jan 2019 15:01:45 +0800 From: "Gao, Liming" To: Ard Biesheuvel CC: "Feng, Bob C" , "edk2-devel@lists.01.org" , "Carsey, Jaben" Thread-Topic: [edk2] [Patch] BaseTools: Enable component override functionality Thread-Index: AQHUqVbQMrFVadgdMkS7KfQHQc+BYaWuF98w//+8LYCAAIbgYA== Date: Mon, 14 Jan 2019 07:01:44 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B11BA@SHSMSX152.ccr.corp.intel.com> References: <20190111023851.9172-1-bob.c.feng@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B0FD1@SHSMSX152.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] BaseTools: Enable component override functionality 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, 14 Jan 2019 07:01:50 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkOg0KICBTb3JyeSBmb3IgdGhpcyBicmVhaywgQm9iIGp1c3Qgc2VudCBob3QgZml4IGZvciB0 aGlzIGlzc3VlIGluIGh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIw MTktSmFudWFyeS8wMzQ5NDcuaHRtbC4gQ291bGQgeW91IHZlcmlmeSBpdD8NCiAgSW4gZmFjdCwg aXQgaXMgY2F1c2VkIGJ5IHByZXZpb3VzIHBhdGNoIHRvIHJlbW92ZSBFREsgc3VwcG9ydCBpbiBC YXNlVG9vbHMgUHl0aG9uIGNvZGUuIA0KDQpUaGFua3MNCkxpbWluZw0KPi0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+RnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZl bEBsaW5hcm8ub3JnXQ0KPlNlbnQ6IE1vbmRheSwgSmFudWFyeSAxNCwgMjAxOSAyOjU4IFBNDQo+ VG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj5DYzogRmVuZywgQm9iIEMg PGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IENhcnNleSwN Cj5KYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT4NCj5TdWJqZWN0OiBSZTogW2VkazJdIFtQ YXRjaF0gQmFzZVRvb2xzOiBFbmFibGUgY29tcG9uZW50IG92ZXJyaWRlDQo+ZnVuY3Rpb25hbGl0 eQ0KPg0KPk9uIE1vbiwgMTQgSmFuIDIwMTkgYXQgMDQ6MDAsIEdhbywgTGltaW5nIDxsaW1pbmcu Z2FvQGludGVsLmNvbT4gd3JvdGU6DQo+Pg0KPj4gUmV2aWV3ZWQtYnk6IExpbWluZyBHYW8gPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KPj4NCj4NCj5UaGlzIHBhdGNoIGJyZWFrcyB0aGUgYnVpbGQg b24gQUFyY2g2NC9HR0M6DQo+DQo+KFB5dGhvbiAyLjcuMTMgb24gbGludXgyKSBUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQo+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3Jn L2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29s cy9CaW5XcmFwcGVycy9Qb3NpeExpa2UvLi4vLi4vU291cmNlL1B5dGhvbi9iDQo+dWlsZC9idWls ZC5weSIsPg0KPmxpbmUgMjQwMywgaW4gTWFpbg0KPiAgICBNeUJ1aWxkLkxhdW5jaCgpDQo+ICBG aWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0N Cj51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9CaW5XcmFwcGVycy9Qb3NpeExpa2UvLi4vLi4v U291cmNlL1B5dGhvbi9iDQo+dWlsZC9idWlsZC5weSIsPg0KPmxpbmUgMjEzNywgaW4gTGF1bmNo DQo+ICAgIHNlbGYuX011bHRpVGhyZWFkQnVpbGRQbGF0Zm9ybSgpDQo+ICBGaWxlICI8aHR0cHM6 Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj51cHN0cmVhbS93 cy9lZGsyL0Jhc2VUb29scy9CaW5XcmFwcGVycy9Qb3NpeExpa2UvLi4vLi4vU291cmNlL1B5dGhv bi9iDQo+dWlsZC9idWlsZC5weSIsPg0KPmxpbmUgMTkxNywgaW4gX011bHRpVGhyZWFkQnVpbGRQ bGF0Zm9ybQ0KPiAgICBzZWxmLlByb2dyZXNzDQo+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8u b3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj51cHN0cmVhbS93cy9lZGsyL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vQXV0b0dlbi5weSIsPg0KPmxpbmUgMjM5LCBpbiBf X2luaXRfXw0KPiAgICBzZWxmLl9Jbml0V29ya2VyKFdvcmtzcGFjZSwgTWV0YUZpbGUsIFRhcmdl dCwgVG9vbGNoYWluLCBBcmNoLA0KPiphcmdzLCAqKmt3YXJncykNCj4gIEZpbGUgIjxodHRwczov L2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1lZGsyLQ0KPnVwc3RyZWFtL3dz L2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9BdXRvR2VuLnB5Iiw+DQo+bGlu ZSA0MDMsIGluIF9Jbml0V29ya2VyDQo+ICAgIFBsYXRmb3JtUGNkcyA9IFBsYXRmb3JtLlBjZHMN Cj4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1l ZGsyLQ0KPnVwc3RyZWFtL3dzL2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNl L0RzY0J1aWxkRGF0YS5weSIsPg0KPmxpbmUgMTE5NCwgaW4gUGNkcw0KPiAgICBzZWxmLl9QY2Rz ID0gc2VsZi5VcGRhdGVTdHJ1Y3R1cmVkUGNkcyhNT0RFTF9QQ0RfVFlQRV9MSVNULCBzZWxmLl9Q Y2RzKQ0KPiAgRmlsZSAiPGh0dHBzOi8vY2kubGluYXJvLm9yZy9qb2IvbGVnLXZpcnQtdGlhbm9j b3JlLWVkazItDQo+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jr c3BhY2UvRHNjQnVpbGREYXRhLnB5Iiw+DQo+bGluZSAxNDg2LCBpbiBVcGRhdGVTdHJ1Y3R1cmVk UGNkcw0KPiAgICBmb3IgUGNkIGluIHNlbGYuRGVjUGNkczoNCj4gIEZpbGUgIjxodHRwczovL2Np LmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1lZGsyLQ0KPnVwc3RyZWFtL3dzL2Vk azIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weSIsPg0K PmxpbmUgMzE4MywgaW4gRGVjUGNkcw0KPiAgICBzZWxmLl9EZWNQY2RzLCBzZWxmLl9HdWlkRGlj dCA9IEdldERlY2xhcmVkUGNkKHNlbGYsIHNlbGYuX0JkYiwNCj5zZWxmLl9BcmNoLCBzZWxmLl9U YXJnZXQsIHNlbGYuX1Rvb2xjaGFpbiwgUGtnU2V0KQ0KPiAgRmlsZSAiPGh0dHBzOi8vY2kubGlu YXJvLm9yZy9qb2IvbGVnLXZpcnQtdGlhbm9jb3JlLWVkazItDQo+dXBzdHJlYW0vd3MvZWRrMi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvV29ya3NwYWNlQ29tbQ0KPm9uLnB5Iiw+ DQo+bGluZSA2MiwgaW4gR2V0RGVjbGFyZWRQY2QNCj4gICAgUGtnTGlzdCA9IEdldFBhY2thZ2VM aXN0KFBsYXRmb3JtLCBCdWlsZERhdGFiYXNlLCBBcmNoLCBUYXJnZXQsIFRvb2xjaGFpbikNCj4g IEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1lZGsy LQ0KPnVwc3RyZWFtL3dzL2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL1dv cmtzcGFjZUNvbW0NCj5vbi5weSIsPg0KPmxpbmUgNDQsIGluIEdldFBhY2thZ2VMaXN0DQo+ICAg IGZvciBNb2R1bGVGaWxlIGluIFBsYXRmb3JtLk1vZHVsZXM6DQo+ICBGaWxlICI8aHR0cHM6Ly9j aS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj51cHN0cmVhbS93cy9l ZGsyL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkiLD4N Cj5saW5lIDcyOCwgaW4gTW9kdWxlcw0KPiAgICBzZWxmLk92ZXJyaWRlRHVwbGljYXRlTW9kdWxl KCkNCj4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29y ZS1lZGsyLQ0KPnVwc3RyZWFtL3dzL2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3Nw YWNlL0RzY0J1aWxkRGF0YS5weSIsPg0KPmxpbmUgNzEyLCBpbiBPdmVycmlkZUR1cGxpY2F0ZU1v ZHVsZQ0KPiAgICBNYWNyb3NbIkVES19TT1VSQ0UiXSA9IEdsb2JhbERhdGEuZ0VjcFNvdXJjZQ0K PkF0dHJpYnV0ZUVycm9yOiAnbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnZ0VjcFNv dXJjZScNCj4NCj4NCj4NCj4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gPkZyb206 IEZlbmcsIEJvYiBDDQo+PiA+U2VudDogRnJpZGF5LCBKYW51YXJ5IDExLCAyMDE5IDEwOjM5IEFN DQo+PiA+VG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+PiA+Q2M6IEZlbmcsIEJvYiBDIDxi b2IuYy5mZW5nQGludGVsLmNvbT47IEdhbywgTGltaW5nDQo+PiA+PGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgQ2Fyc2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT4NCj4+ID5TdWJqZWN0 OiBbUGF0Y2hdIEJhc2VUb29sczogRW5hYmxlIGNvbXBvbmVudCBvdmVycmlkZSBmdW5jdGlvbmFs aXR5DQo+PiA+DQo+PiA+aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNn aT9pZD0xNDQ5DQo+PiA+VGhpcyBwYXRjaCBlbmFibGUgYnVpbGQgdG9vbHMgdG8gcmVjb2duaXpl IHRoYXQNCj4+ID53aGVuIHR3byBnaXZlbiBmaWxlcyBoYXZlIHRoZSBzYW1lIEdVSUQsIGZpbGUg cGF0aCBhbmQgQVJDSCBpbiBEc2MsDQo+PiA+VGhlIGxhdGVyIG9uZSdzIGRlZmluaXRpb24gd2ls bCBiZSB1c2VkLg0KPj4gPg0KPj4gPkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJp YnV0aW9uIEFncmVlbWVudCAxLjENCj4+ID5TaWduZWQtb2ZmLWJ5OiBCb2IgRmVuZyA8Ym9iLmMu ZmVuZ0BpbnRlbC5jb20+DQo+PiA+Q2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPj4gPkNjOiBDYXJzZXkgSmFiZW4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+DQo+PiA+LS0t DQo+PiA+IC4uLi9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkgICB8IDI0 ICsrKysrKysrKysrKy0tLS0tLQ0KPi0NCj4+ID4gLi4uL1NvdXJjZS9QeXRob24vV29ya3NwYWNl L01ldGFGaWxlUGFyc2VyLnB5IHwgIDUgKysrKw0KPj4gPiAuLi4vU291cmNlL1B5dGhvbi9Xb3Jr c3BhY2UvTWV0YUZpbGVUYWJsZS5weSAgfCAgNyArKysrLS0NCj4+ID4gMyBmaWxlcyBjaGFuZ2Vk LCAyNSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkNCj4+ID4NCj4+ID5kaWZmIC0tZ2l0 IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weQ0KPj4g PmIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weQ0KPj4g PmluZGV4IDdlODJlOGU5MzQuLmY5ODA1ZjU4ZjUgMTAwNjQ0DQo+PiA+LS0tIGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weQ0KPj4gPisrKyBiL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkNCj4+ID5AQCAtNzA0 LDM2ICs3MDQsNDQgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFzc09iamVj dCk6DQo+PiA+ICAgICAgICAgICAgIGlmIFRBQl9ERUZBVUxUX1NUT1JFU19ERUZBVUxUIG5vdCBp biBzZWxmLkRlZmF1bHRTdG9yZXM6DQo+PiA+ICAgICAgICAgICAgICAgICBzZWxmLkRlZmF1bHRT dG9yZXNbVEFCX0RFRkFVTFRfU1RPUkVTX0RFRkFVTFRdID0gKDAsDQo+PiA+VEFCX0RFRkFVTFRf U1RPUkVTX0RFRkFVTFQpDQo+PiA+ICAgICAgICAgICAgIEdsb2JhbERhdGEuZ0RlZmF1bHRTdG9y ZXMgPSBzb3J0ZWQoc2VsZi5EZWZhdWx0U3RvcmVzLmtleXMoKSkNCj4+ID4gICAgICAgICByZXR1 cm4gc2VsZi5EZWZhdWx0U3RvcmVzDQo+PiA+DQo+PiA+KyAgICBkZWYgT3ZlcnJpZGVEdXBsaWNh dGVNb2R1bGUoc2VsZik6DQo+PiA+KyAgICAgICAgUmVjb3JkTGlzdCA9IHNlbGYuX1Jhd0RhdGFb TU9ERUxfTUVUQV9EQVRBX0NPTVBPTkVOVCwNCj4+ID5zZWxmLl9BcmNoXQ0KPj4gPisgICAgICAg IE1hY3JvcyA9IHNlbGYuX01hY3Jvcw0KPj4gPisgICAgICAgIE1hY3Jvc1siRURLX1NPVVJDRSJd ID0gR2xvYmFsRGF0YS5nRWNwU291cmNlDQo+PiA+KyAgICAgICAgQ29tcG9uZW50cyA9IHt9DQo+ PiA+KyAgICAgICAgZm9yIFJlY29yZCBpbiBSZWNvcmRMaXN0Og0KPj4gPisgICAgICAgICAgICBN b2R1bGVJZCA9IFJlY29yZFs2XQ0KPj4gPisgICAgICAgICAgICBmaWxlX2d1aWQgPSBzZWxmLl9S YXdEYXRhW01PREVMX01FVEFfREFUQV9IRUFERVIsDQo+c2VsZi5fQXJjaCwNCj4+ID5Ob25lLCBN b2R1bGVJZF0NCj4+ID4rICAgICAgICAgICAgZmlsZV9ndWlkX3N0ciA9IGZpbGVfZ3VpZFswXVsy XSBpZiBmaWxlX2d1aWQgZWxzZSAiTlVMTCINCj4+ID4rICAgICAgICAgICAgTW9kdWxlRmlsZSA9 IFBhdGhDbGFzcyhOb3JtUGF0aChSZWNvcmRbMF0sIE1hY3JvcyksDQo+PiA+R2xvYmFsRGF0YS5n V29ya3NwYWNlLCBBcmNoPXNlbGYuX0FyY2gpDQo+PiA+KyAgICAgICAgICAgIGlmIHNlbGYuX0Fy Y2ggIT0gVEFCX0FSQ0hfQ09NTU9OIGFuZA0KPj4gPihmaWxlX2d1aWRfc3RyLHN0cihNb2R1bGVG aWxlKSkgaW4gQ29tcG9uZW50czoNCj4+ID4rDQo+PiA+c2VsZi5fUmF3RGF0YS5EaXNhYmxlT3Zl cnJpZGVDb21wb25lbnQoQ29tcG9uZW50c1soZmlsZV9ndWlkX3N0cixzdHINCj4oTQ0KPj4gPm9k dWxlRmlsZSkpXSkNCj4+ID4rICAgICAgICAgICAgQ29tcG9uZW50c1soZmlsZV9ndWlkX3N0cixz dHIoTW9kdWxlRmlsZSkpXSA9IE1vZHVsZUlkDQo+PiA+KyAgICAgICAgc2VsZi5fUmF3RGF0YS5f UG9zdFByb2Nlc3NlZCA9IEZhbHNlDQo+PiA+ICAgICAjIyBSZXRyaWV2ZSBbQ29tcG9uZW50c10g c2VjdGlvbiBpbmZvcm1hdGlvbg0KPj4gPiAgICAgQHByb3BlcnR5DQo+PiA+ICAgICBkZWYgTW9k dWxlcyhzZWxmKToNCj4+ID4gICAgICAgICBpZiBzZWxmLl9Nb2R1bGVzIGlzIG5vdCBOb25lOg0K Pj4gPiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fTW9kdWxlcw0KPj4gPi0NCj4+ID4rICAgICAg ICBzZWxmLk92ZXJyaWRlRHVwbGljYXRlTW9kdWxlKCkNCj4+ID4gICAgICAgICBzZWxmLl9Nb2R1 bGVzID0gT3JkZXJlZERpY3QoKQ0KPj4gPiAgICAgICAgIFJlY29yZExpc3QgPSBzZWxmLl9SYXdE YXRhW01PREVMX01FVEFfREFUQV9DT01QT05FTlQsDQo+PiA+c2VsZi5fQXJjaF0NCj4+ID4gICAg ICAgICBNYWNyb3MgPSBzZWxmLl9NYWNyb3MNCj4+ID4gICAgICAgICBNYWNyb3NbIkVES19TT1VS Q0UiXSA9IEdsb2JhbERhdGEuZ0VjcFNvdXJjZQ0KPj4gPiAgICAgICAgIGZvciBSZWNvcmQgaW4g UmVjb3JkTGlzdDoNCj4+ID4tICAgICAgICAgICAgRHVwbGljYXRlZEZpbGUgPSBGYWxzZQ0KPj4g Pi0NCj4+ID4gICAgICAgICAgICAgTW9kdWxlRmlsZSA9IFBhdGhDbGFzcyhOb3JtUGF0aChSZWNv cmRbMF0sIE1hY3JvcyksDQo+PiA+R2xvYmFsRGF0YS5nV29ya3NwYWNlLCBBcmNoPXNlbGYuX0Fy Y2gpDQo+PiA+ICAgICAgICAgICAgIE1vZHVsZUlkID0gUmVjb3JkWzZdDQo+PiA+ICAgICAgICAg ICAgIExpbmVObyA9IFJlY29yZFs3XQ0KPj4gPg0KPj4gPiAgICAgICAgICAgICAjIGNoZWNrIHRo ZSBmaWxlIHZhbGlkYXRpb24NCj4+ID4gICAgICAgICAgICAgRXJyb3JDb2RlLCBFcnJvckluZm8g PSBNb2R1bGVGaWxlLlZhbGlkYXRlKCcuaW5mJykNCj4+ID4gICAgICAgICAgICAgaWYgRXJyb3JD b2RlICE9IDA6DQo+PiA+ICAgICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoJ2J1aWxkJywg RXJyb3JDb2RlLCBGaWxlPXNlbGYuTWV0YUZpbGUsDQo+TGluZT1MaW5lTm8sDQo+PiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmFEYXRhPUVycm9ySW5mbykNCj4+ID4tICAg ICAgICAgICAgIyBDaGVjayBkdXBsaWNhdGlvbg0KPj4gPi0gICAgICAgICAgICAjIElmIGFyY2gg aXMgQ09NTU9OLCBubyBkdXBsaWNhdGUgbW9kdWxlIGlzIGNoZWNrZWQgc2luY2UgYWxsDQo+bW9k dWxlcw0KPj4gPmluIGFsbCBjb21wb25lbnQgc2VjdGlvbnMgYXJlIHNlbGVjdGVkDQo+PiA+LSAg ICAgICAgICAgIGlmIHNlbGYuX0FyY2ggIT0gVEFCX0FSQ0hfQ09NTU9OIGFuZCBNb2R1bGVGaWxl IGluDQo+c2VsZi5fTW9kdWxlczoNCj4+ID4tICAgICAgICAgICAgICAgIER1cGxpY2F0ZWRGaWxl ID0gVHJ1ZQ0KPj4gPg0KPj4gPiAgICAgICAgICAgICBNb2R1bGUgPSBNb2R1bGVCdWlsZENsYXNz T2JqZWN0KCkNCj4+ID4gICAgICAgICAgICAgTW9kdWxlLk1ldGFGaWxlID0gTW9kdWxlRmlsZQ0K Pj4gPg0KPj4gPiAgICAgICAgICAgICAjIGdldCBtb2R1bGUgcHJpdmF0ZSBsaWJyYXJ5IGluc3Rh bmNlDQo+PiA+QEAgLTc5MiwxMiArODAwLDEwIEBAIGNsYXNzIERzY0J1aWxkRGF0YShQbGF0Zm9y bUJ1aWxkQ2xhc3NPYmplY3QpOg0KPj4gPiAgICAgICAgICAgICAgICAgZWxzZToNCj4+ID4gICAg ICAgICAgICAgICAgICAgICBPcHRpb25TdHJpbmcgPSBNb2R1bGUuQnVpbGRPcHRpb25zW1Rvb2xD aGFpbkZhbWlseSwgVG9vbENoYWluXQ0KPj4gPiAgICAgICAgICAgICAgICAgICAgIE1vZHVsZS5C dWlsZE9wdGlvbnNbVG9vbENoYWluRmFtaWx5LCBUb29sQ2hhaW5dID0NCj5PcHRpb25TdHJpbmcg Kw0KPj4gPiIgIiArIE9wdGlvbg0KPj4gPg0KPj4gPiAgICAgICAgICAgICBSZWNvcmRMaXN0ID0g c2VsZi5fUmF3RGF0YVtNT0RFTF9NRVRBX0RBVEFfSEVBREVSLA0KPnNlbGYuX0FyY2gsDQo+PiA+ Tm9uZSwgTW9kdWxlSWRdDQo+PiA+LSAgICAgICAgICAgIGlmIER1cGxpY2F0ZWRGaWxlIGFuZCBu b3QgUmVjb3JkTGlzdDoNCj4+ID4tICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignYnVp bGQnLCBGSUxFX0RVUExJQ0FURUQsIEZpbGU9c2VsZi5NZXRhRmlsZSwNCj4+ID5FeHRyYURhdGE9 c3RyKE1vZHVsZUZpbGUpLCBMaW5lPUxpbmVObykNCj4+ID4gICAgICAgICAgICAgaWYgUmVjb3Jk TGlzdDoNCj4+ID4gICAgICAgICAgICAgICAgIGlmIGxlbihSZWNvcmRMaXN0KSAhPSAxOg0KPj4g PiAgICAgICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignYnVpbGQnLCBPUFRJT05fVU5L Tk9XTiwgJ09ubHkgRklMRV9HVUlEDQo+Y2FuDQo+PiA+YmUgbGlzdGVkIGluIDxEZWZpbmVzPiBz ZWN0aW9uLicsDQo+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGU9 c2VsZi5NZXRhRmlsZSwgRXh0cmFEYXRhPXN0cihNb2R1bGVGaWxlKSwNCj5MaW5lPUxpbmVObykN Cj4+ID4gICAgICAgICAgICAgICAgIE1vZHVsZUZpbGUgPSBQcm9jZXNzRHVwbGljYXRlZEluZihN b2R1bGVGaWxlLCBSZWNvcmRMaXN0WzBdWzJdLA0KPj4gPkdsb2JhbERhdGEuZ1dvcmtzcGFjZSkN Cj4+ID5kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL01ldGFG aWxlUGFyc2VyLnB5DQo+PiA+Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0 YUZpbGVQYXJzZXIucHkNCj4+ID5pbmRleCAwMzIyMjA4MTNiLi5hNTJlOTIyOWRmIDEwMDY0NA0K Pj4gPi0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRhRmlsZVBhcnNl ci5weQ0KPj4gPisrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRhRmls ZVBhcnNlci5weQ0KPj4gPkBAIC0xNzExLDEwICsxNzExLDE1IEBAIGNsYXNzIERzY1BhcnNlcihN ZXRhRmlsZVBhcnNlcik6DQo+PiA+DQo+PiA+ICAgICBkZWYgX19Qcm9jZXNzQnVpbGRPcHRpb24o c2VsZik6DQo+PiA+ICAgICAgICAgc2VsZi5fVmFsdWVMaXN0ID0gW1JlcGxhY2VNYWNybyhWYWx1 ZSwgc2VsZi5fTWFjcm9zLCBSYWlzZUVycm9yPUZhbHNlKQ0KPj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgVmFsdWUgaW4gc2VsZi5fVmFsdWVMaXN0XQ0KPj4gPg0KPj4gPisgICAg ZGVmIERpc2FibGVPdmVycmlkZUNvbXBvbmVudChzZWxmLG1vZHVsZV9pZCk6DQo+PiA+KyAgICAg ICAgZm9yIG9yaV9pZCBpbiBzZWxmLl9JZE1hcHBpbmc6DQo+PiA+KyAgICAgICAgICAgIGlmIHNl bGYuX0lkTWFwcGluZ1tvcmlfaWRdID09IG1vZHVsZV9pZDoNCj4+ID4rICAgICAgICAgICAgICAg IHNlbGYuX1Jhd1RhYmxlLkRpc2FibGVDb21wb25lbnQob3JpX2lkKQ0KPj4gPisNCj4+ID4gICAg IF9TZWN0aW9uUGFyc2VyID0gew0KPj4gPiAgICAgICAgIE1PREVMX01FVEFfREFUQV9IRUFERVIg ICAgICAgICAgICAgICAgICAgICAgICAgIDogICBfRGVmaW5lUGFyc2VyLA0KPj4gPiAgICAgICAg IE1PREVMX0VGSV9TS1VfSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICBfU2t1 SWRQYXJzZXIsDQo+PiA+ICAgICAgICAgTU9ERUxfRUZJX0RFRkFVTFRfU1RPUkVTICAgICAgICAg ICAgICAgICAgICAgICAgOiAgIF9EZWZhdWx0U3RvcmVzUGFyc2VyLA0KPj4gPiAgICAgICAgIE1P REVMX0VGSV9MSUJSQVJZX0lOU1RBTkNFICAgICAgICAgICAgICAgICAgICAgIDogICBfTGlicmFy eUluc3RhbmNlUGFyc2VyLA0KPj4gPmRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9Xb3Jrc3BhY2UvTWV0YUZpbGVUYWJsZS5weQ0KPj4gPmIvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vV29ya3NwYWNlL01ldGFGaWxlVGFibGUucHkNCj4+ID5pbmRleCAwMDRlOTQ5NGMzLi44MjNh ODdlMDU3IDEwMDY0NA0KPj4gPi0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFj ZS9NZXRhRmlsZVRhYmxlLnB5DQo+PiA+KysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29y a3NwYWNlL01ldGFGaWxlVGFibGUucHkNCj4+ID5AQCAtNzQsMTEgKzc0LDExIEBAIGNsYXNzIE1l dGFGaWxlVGFibGUoKToNCj4+ID4NCj4+ID4gICAgIGRlZiBTZXRFbmRGbGFnKHNlbGYpOg0KPj4g PiAgICAgICAgIHNlbGYuQ3VycmVudENvbnRlbnQuYXBwZW5kKHNlbGYuX0RVTU1ZXykNCj4+ID4N Cj4+ID4gICAgIGRlZiBHZXRBbGwoc2VsZik6DQo+PiA+LSAgICAgICAgcmV0dXJuIFtpdGVtIGZv ciBpdGVtIGluIHNlbGYuQ3VycmVudENvbnRlbnQgaWYgaXRlbVswXSA+PSAwIF0NCj4+ID4rICAg ICAgICByZXR1cm4gW2l0ZW0gZm9yIGl0ZW0gaW4gc2VsZi5DdXJyZW50Q29udGVudCBpZiBpdGVt WzBdID49IDAgYW5kIGl0ZW1bLQ0KPj4gPjFdPj0wXQ0KPj4gPg0KPj4gPiAjIyBQeXRob24gY2xh c3MgcmVwcmVzZW50YXRpb24gb2YgdGFibGUgc3RvcmluZyBtb2R1bGUgZGF0YQ0KPj4gPiBjbGFz cyBNb2R1bGVUYWJsZShNZXRhRmlsZVRhYmxlKToNCj4+ID4gICAgIF9DT0xVTU5fID0gJycnDQo+ PiA+ICAgICAgICAgSUQgUkVBTCBQUklNQVJZIEtFWSwNCj4+ID5AQCAtMzcxLDExICszNzEsMTAg QEAgY2xhc3MgUGxhdGZvcm1UYWJsZShNZXRhRmlsZVRhYmxlKToNCj4+ID4gICAgICMNCj4+ID4g ICAgIGRlZiBRdWVyeShzZWxmLCBNb2RlbCwgU2NvcGUxPU5vbmUsIFNjb3BlMj1Ob25lLA0KPj4g PkJlbG9uZ3NUb0l0ZW09Tm9uZSwgRnJvbUl0ZW09Tm9uZSk6DQo+PiA+DQo+PiA+ICAgICAgICAg UXVlcnlUYWIgPSBzZWxmLkN1cnJlbnRDb250ZW50DQo+PiA+ICAgICAgICAgcmVzdWx0ID0gW2l0 ZW0gZm9yIGl0ZW0gaW4gUXVlcnlUYWIgaWYgaXRlbVsxXSA9PSBNb2RlbCBhbmQgaXRlbVstMV0+ MCBdDQo+PiA+LQ0KPj4gPiAgICAgICAgIGlmIFNjb3BlMSBpcyBub3QgTm9uZSBhbmQgU2NvcGUx ICE9IFRBQl9BUkNIX0NPTU1PTjoNCj4+ID4gICAgICAgICAgICAgU2MxID0gc2V0KFsnQ09NTU9O J10pDQo+PiA+ICAgICAgICAgICAgIFNjMS5hZGQoU2NvcGUxKQ0KPj4gPiAgICAgICAgICAgICBy ZXN1bHQgPSBbaXRlbSBmb3IgaXRlbSBpbiByZXN1bHQgaWYgaXRlbVs1XSBpbiBTYzFdDQo+PiA+ ICAgICAgICAgU2MyID0gc2V0KCBbJ0NPTU1PTicsJ0RFRkFVTFQnXSkNCj4+ID5AQCAtMzk1LDEw ICszOTQsMTQgQEAgY2xhc3MgUGxhdGZvcm1UYWJsZShNZXRhRmlsZVRhYmxlKToNCj4+ID4gICAg ICAgICAgICAgcmVzdWx0ID0gW2l0ZW0gZm9yIGl0ZW0gaW4gcmVzdWx0IGlmIGl0ZW1bOV0gPT0g RnJvbUl0ZW1dDQo+PiA+DQo+PiA+ICAgICAgICAgcmVzdWx0ID0gWyBbclsyXSxyWzNdLHJbNF0s cls1XSxyWzZdLHJbN10sclswXSxyWzldXSBmb3IgciBpbiByZXN1bHQgXQ0KPj4gPiAgICAgICAg IHJldHVybiByZXN1bHQNCj4+ID4NCj4+ID4rICAgIGRlZiBEaXNhYmxlQ29tcG9uZW50KHNlbGYs Y29tcF9pZCk6DQo+PiA+KyAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5DdXJyZW50Q29udGVudDoN Cj4+ID4rICAgICAgICAgICAgaWYgaXRlbVswXSA9PSBjb21wX2lkIG9yIGl0ZW1bOF0gPT0gY29t cF9pZDoNCj4+ID4rICAgICAgICAgICAgICAgIGl0ZW1bLTFdID0gLTENCj4+ID4NCj4+ID4gIyMg RmFjdG9yeSBjbGFzcyB0byBwcm9kdWNlIGRpZmZlcmVudCBzdG9yYWdlIGZvciBkaWZmZXJlbnQg dHlwZSBvZiBtZXRhLQ0KPmZpbGUNCj4+ID4gY2xhc3MgTWV0YUZpbGVTdG9yYWdlKG9iamVjdCk6 DQo+PiA+ICAgICBfRklMRV9UQUJMRV8gPSB7DQo+PiA+ICAgICAgICAgTU9ERUxfRklMRV9JTkYg ICAgICA6ICAgTW9kdWxlVGFibGUsDQo+PiA+LS0NCj4+ID4yLjE5LjEud2luZG93cy4xDQo+Pg0K Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IGVk azItZGV2ZWwgbWFpbGluZyBsaXN0DQo+PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPj4gaHR0 cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=