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=yonghong.zhu@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 E0F302034D8DE for ; Tue, 27 Feb 2018 16:34:18 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Feb 2018 16:40:23 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,403,1515484800"; d="scan'208";a="21563766" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga006.jf.intel.com with ESMTP; 27 Feb 2018 16:40:23 -0800 Received: from fmsmsx122.amr.corp.intel.com (10.18.125.37) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 27 Feb 2018 16:40:23 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx122.amr.corp.intel.com (10.18.125.37) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 27 Feb 2018 16:40:23 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.116]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.116]) with mapi id 14.03.0319.002; Wed, 28 Feb 2018 08:40:21 +0800 From: "Zhu, Yonghong" To: "Feng, YunhuaX" , "edk2-devel@lists.01.org" CC: "Gao, Liming" , "Zhu, Yonghong" Thread-Topic: [PATCH V2]BaseTools: Fix flexible PCD single quote and double quote bugs Thread-Index: AdOvpdIEDruuST/RT5Gi2RcQRoCaCQAht9+g Date: Wed, 28 Feb 2018 00:40:20 +0000 Message-ID: References: <47C64442C08CCD4089DC43B6B5E46BC482B5DB@shsmsx102.ccr.corp.intel.com> In-Reply-To: <47C64442C08CCD4089DC43B6B5E46BC482B5DB@shsmsx102.ccr.corp.intel.com> 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 V2]BaseTools: Fix flexible PCD single quote and double quote bugs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Feb 2018 00:34:19 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IFlvbmdob25nIFpodSA8eW9uZ2hvbmcuemh1QGludGVsLmNvbT4NCg0KQmVz dCBSZWdhcmRzLA0KWmh1IFlvbmdob25nDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N CkZyb206IEZlbmcsIFl1bmh1YVggDQpTZW50OiBUdWVzZGF5LCBGZWJydWFyeSAyNywgMjAxOCA0 OjQzIFBNDQpUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCkNjOiBaaHUsIFlvbmdob25nIDx5 b25naG9uZy56aHVAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KU3ViamVjdDogW1BBVENIIFYyXUJhc2VUb29sczogRml4IGZsZXhpYmxlIFBDRCBzaW5nbGUg cXVvdGUgYW5kIGRvdWJsZSBxdW90ZSBidWdzDQoNClYyOiANCjEuIEZpeCBwYXJzZSBEU0MgZmls ZSBzcGxpdCBQQ0QgVmFsdWUgeyc5JywnYScsJyMnfSAgYnVpbGQgZXJyb3IgMi4gRml4IHBhcnNl IC0tcGNkICBnVWVmaU92bWZQa2dUb2tlblNwYWNlR3VpZC50ZXN0MTA9IlwnQVwnIiBidWlsZCBl cnJvciwNCiAgICBJZiBQQ0QgdHlwZSBpcyBVSU5UOCBvciBVSU5UMTYgb3IgVUlOVDMyIG9yIFVJ TlQ2NA0KDQpWMToNCjEuIEFyZ3VtZW50IC0tcGNkIGZvcm1hdCBhcyBiZWxvdzoNCiAgU29tZSBl eGFtcGxlcyB0aGF0IHRvIG1hdGNoIC0tcGNkIGZvcm1hdCBhbmQgRFNDIGZvcm1hdA0KICAtLXBj ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFNDIGZvcm1hdA0KICBMIkFCQyIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTCJBQkMiDQogICJBQlxcXCJDIiAgICAgICAgICAgICAgICAg ICAgICAgICAiQUJcIkMiDQogICJBQlx0QyIgICAgICAgICAgICAgICAgICAgICAgICAgICJBQlx0 QyINCiAgIkFCXFxcJ0MiICAgICAgICAgICAgICAgICAgICAgICAgICJBQlwnQyINCiAgIlwnQUJD XCciICAgICAgICAgICAgICAgICAgICAgICAgICdBQkPDouKCrOKEog0KICBMIlwnQUJcXFwiQ1wn IiAgICAgICAgICAgICAgICAgICAgTCdBQlwiQycNCiAgIlwnQUJcXFwnQ1wnIiAgICAgICAgICAg ICAgICAgICAgICdBQlwnQycNCiAgIlwnQUJcdENcJyIgICAgICAgICAgICAgICAgICAgICAgJ0FC XHRDJw0KICBIInswLCBMXCJBQlxcXCJCXCIsIFwnYWJcXFwiY1wnfSIgezAsIEwiQUJcIkIiLCAn YWJcImMnfQ0KICBIInswLCBMXCJBQlxcXCJCXCIsXCdhYlxcXCdjXCd9IiAgezAsIEwiQUJcIkIi LCAnYWJcJ2MnfSAyLiB7JyMnLCAnfCd9IHNwbGl0IHN0cmluZyBpbmNvcnJlY3RseS4NCg0KQ2M6 IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KQ2M6IFlvbmdob25nIFpodSA8eW9u Z2hvbmcuemh1QGludGVsLmNvbT4NCkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJp YnV0aW9uIEFncmVlbWVudCAxLjENCg0KU2lnbmVkLW9mZi1ieTogWXVuaHVhIEZlbmcgPHl1bmh1 YXguZmVuZ0BpbnRlbC5jb20+DQotLS0NCiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2Vu L0dlbk1ha2UucHkgICAgICAgIHwgMjAgKysrKystLS0NCiBCYXNlVG9vbHMvU291cmNlL1B5dGhv bi9Db21tb24vRXhwcmVzc2lvbi5weSAgICAgIHwgNjAgKysrKysrKysrKysrKysrKy0tLS0tLS0N CiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weSAgICAgICAgICAgIHwgMzEg KysrKysrKy0tLS0tDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1N0cmluZy5weSAg ICAgICAgICB8IDQ2ICsrKysrKysrKystLS0tLS0tDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v V29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weSB8IDMxICsrKysrKystLS0tLQ0KIDUgZmlsZXMgY2hh bmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5IGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5DQppbmRleCBhZmU2ZjJmOTljLi40YjkyNGQy MWUwIDEwMDY0NA0KLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtl LnB5DQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0dlbk1ha2UucHkNCkBA IC0xNTUzLDE3ICsxNTUzLDIzIEBAIGNsYXNzIFRvcExldmVsTWFrZWZpbGUoQnVpbGRGaWxlKToN CiANCiAgICAgICAgIGlmIEdsb2JhbERhdGEuQnVpbGRPcHRpb25QY2Q6DQogICAgICAgICAgICAg Zm9yIGluZGV4LCBvcHRpb24gaW4gZW51bWVyYXRlKEdsb2JhbERhdGEuZ0NvbW1hbmQpOg0KICAg ICAgICAgICAgICAgICBpZiAiLS1wY2QiID09IG9wdGlvbiBhbmQgR2xvYmFsRGF0YS5nQ29tbWFu ZFtpbmRleCsxXToNCiAgICAgICAgICAgICAgICAgICAgIHBjZE5hbWUsIHBjZFZhbHVlID0gR2xv YmFsRGF0YS5nQ29tbWFuZFtpbmRleCsxXS5zcGxpdCgnPScpDQotICAgICAgICAgICAgICAgICAg ICBpZiBwY2RWYWx1ZS5zdGFydHN3aXRoKCdIJyk6DQotICAgICAgICAgICAgICAgICAgICAgICAg cGNkVmFsdWUgPSAnSCcgKyAnIicgKyBwY2RWYWx1ZVsxOl0gKyAnIicNCi0gICAgICAgICAgICAg ICAgICAgICAgICBFeHRyYU9wdGlvbiArPSAiIC0tcGNkICIgKyBwY2ROYW1lICsgJz0nICsgcGNk VmFsdWUNCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgcGNkVmFsdWUuc3RhcnRzd2l0aCgiTCci KToNCi0gICAgICAgICAgICAgICAgICAgICAgICBFeHRyYU9wdGlvbiArPSAiLS1wY2QgIiArIHBj ZE5hbWUgKyAnPScgKyBwY2RWYWx1ZQ0KLSAgICAgICAgICAgICAgICAgICAgZWxpZiBwY2RWYWx1 ZS5zdGFydHN3aXRoKCdMJyk6DQotICAgICAgICAgICAgICAgICAgICAgICAgcGNkVmFsdWUgPSAn TCcgKyAnIicgKyBwY2RWYWx1ZVsxOl0gKyAnIicNCisgICAgICAgICAgICAgICAgICAgIGZvciBJ dGVtIGluIEdsb2JhbERhdGEuQnVpbGRPcHRpb25QY2Q6DQorICAgICAgICAgICAgICAgICAgICAg ICAgaWYgJy4nLmpvaW4oSXRlbVswOjJdKSA9PSBwY2ROYW1lOg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwY2RWYWx1ZSA9IEl0ZW1bMl0NCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgcGNkVmFsdWUuc3RhcnRzd2l0aCgnTCcpIG9yIHBjZFZhbHVlLnN0YXJ0c3dpdGgoJyIn KToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjZFZhbHVlLCBTaXplID0gUGFy c2VGaWVsZFZhbHVlKHBjZFZhbHVlKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TmV3VmFsID0gJ3snDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgUyBpbiBy YW5nZShTaXplKToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdWYWwg PSBOZXdWYWwgKyAnMHglMDJYJyAlICgocGNkVmFsdWUgPj4gUyAqIDgpICYgMHhmZikNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdWYWwgKz0gJywnDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwY2RWYWx1ZSA9ICBOZXdWYWxbOi0xXSArICd9Jw0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0KKyAgICAgICAgICAgICAgICAgICAgaWYg cGNkVmFsdWUuc3RhcnRzd2l0aCgneycpOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBjZFZh bHVlID0gJ0gnICsgJyInICsgcGNkVmFsdWUgKyAnIicNCiAgICAgICAgICAgICAgICAgICAgICAg ICBFeHRyYU9wdGlvbiArPSAiIC0tcGNkICIgKyBwY2ROYW1lICsgJz0nICsgcGNkVmFsdWUNCiAg ICAgICAgICAgICAgICAgICAgIGVsc2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmFP cHRpb24gKz0gIiAtLXBjZCAiICsgR2xvYmFsRGF0YS5nQ29tbWFuZFtpbmRleCsxXQ0KIA0KICAg ICAgICAgTWFrZWZpbGVOYW1lID0gc2VsZi5fRklMRV9OQU1FX1tzZWxmLl9GaWxlVHlwZV0gZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9FeHByZXNzaW9uLnB5IGIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL0V4cHJlc3Npb24ucHkNCmluZGV4IGVkYjBh NjBkZTYuLmYxNTE2ZDVjN2IgMTAwNjQ0DQotLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9D b21tb24vRXhwcmVzc2lvbi5weQ0KKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9u L0V4cHJlc3Npb24ucHkNCkBAIC00MywyOCArNDMsNDEgQEAgRVJSX0lOX09QRVJBTkQgICAgICAg ICAgPSAnTWFjcm8gYWZ0ZXIgSU4gb3BlcmF0b3IgY2FuIG9ubHkgYmU6ICQoRkFNSUxZKSwgJChB UkMNCiAjIyBTcGxpdFN0cmluZw0KICMgIFNwbGl0IHN0cmluZyB0byBsaXN0IGFjY29yZGluZyBk b3VibGUgcXVvdGUgICMgIEZvciBleGFtcGxlOiBhYmMiZGVcImYiZ2hpImprbCJtbiB3aWxsIGJl OiBbJ2FiYycsICciZGVcImYiJywgJ2doaScsICciamtsIicsICdtbiddICAjICBkZWYgU3BsaXRT dHJpbmcoU3RyaW5nKToNCi0gICAgIyBUaGVyZSBtaWdodCBiZSBlc2NhcGVkIHF1b3RlOiAiYWJj XCJkZWZcXFwiZ2hpIg0KLSAgICBTdHIgPSBTdHJpbmcucmVwbGFjZSgnXFxcXCcsICcvLycpLnJl cGxhY2UoJ1xcXCInLCAnXFxcJycpDQorICAgICMgVGhlcmUgbWlnaHQgYmUgZXNjYXBlZCBxdW90 ZTogImFiY1wiZGVmXFxcImdoaSIsICdhYmNcJ2RlZlxcXCdnaGknDQorICAgIFN0ciA9IFN0cmlu Zw0KICAgICBSZXRMaXN0ID0gW10NCi0gICAgSW5RdW90ZSA9IEZhbHNlDQorICAgIEluU2luZ2xl UXVvdGUgPSBGYWxzZQ0KKyAgICBJbkRvdWJsZVF1b3RlID0gRmFsc2UNCiAgICAgSXRlbSA9ICcn DQogICAgIGZvciBpLCBjaCBpbiBlbnVtZXJhdGUoU3RyKToNCi0gICAgICAgIGlmIGNoID09ICci JzoNCi0gICAgICAgICAgICBJblF1b3RlID0gbm90IEluUXVvdGUNCi0gICAgICAgICAgICBpZiBu b3QgSW5RdW90ZToNCisgICAgICAgIGlmIGNoID09ICciJyBhbmQgbm90IEluU2luZ2xlUXVvdGU6 DQorICAgICAgICAgICAgaWYgU3RyW2kgLSAxXSAhPSAnXFwnOg0KKyAgICAgICAgICAgICAgICBJ bkRvdWJsZVF1b3RlID0gbm90IEluRG91YmxlUXVvdGUNCisgICAgICAgICAgICBpZiBub3QgSW5E b3VibGVRdW90ZToNCisgICAgICAgICAgICAgICAgSXRlbSArPSBTdHJpbmdbaV0NCisgICAgICAg ICAgICAgICAgUmV0TGlzdC5hcHBlbmQoSXRlbSkNCisgICAgICAgICAgICAgICAgSXRlbSA9ICcn DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlDQorICAgICAgICAgICAgaWYgSXRlbToNCisgICAg ICAgICAgICAgICAgUmV0TGlzdC5hcHBlbmQoSXRlbSkNCisgICAgICAgICAgICAgICAgSXRlbSA9 ICcnDQorICAgICAgICBlbGlmIGNoID09ICInIiBhbmQgbm90IEluRG91YmxlUXVvdGU6DQorICAg ICAgICAgICAgaWYgU3RyW2kgLSAxXSAhPSAnXFwnOg0KKyAgICAgICAgICAgICAgICBJblNpbmds ZVF1b3RlID0gbm90IEluU2luZ2xlUXVvdGUNCisgICAgICAgICAgICBpZiBub3QgSW5TaW5nbGVR dW90ZToNCiAgICAgICAgICAgICAgICAgSXRlbSArPSBTdHJpbmdbaV0NCiAgICAgICAgICAgICAg ICAgUmV0TGlzdC5hcHBlbmQoSXRlbSkNCiAgICAgICAgICAgICAgICAgSXRlbSA9ICcnDQogICAg ICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgaWYgSXRlbToNCiAgICAgICAgICAg ICAgICAgUmV0TGlzdC5hcHBlbmQoSXRlbSkNCiAgICAgICAgICAgICAgICAgSXRlbSA9ICcnDQog ICAgICAgICBJdGVtICs9IFN0cmluZ1tpXQ0KLSAgICBpZiBJblF1b3RlOg0KKyAgICBpZiBJblNp bmdsZVF1b3RlIG9yIEluRG91YmxlUXVvdGU6DQogICAgICAgICByYWlzZSBCYWRFeHByZXNzaW9u KEVSUl9TVFJJTkdfVE9LRU4gJSBJdGVtKQ0KICAgICBpZiBJdGVtOg0KICAgICAgICAgUmV0TGlz dC5hcHBlbmQoSXRlbSkNCiAgICAgcmV0dXJuIFJldExpc3QNCiANCkBAIC00ODEsMTcgKzQ5NCwy MSBAQCBjbGFzcyBWYWx1ZUV4cHJlc3Npb24ob2JqZWN0KToNCiAgICAgICAgICAgICBSYWRpeCA9 IDE2DQogICAgICAgICBpZiBzZWxmLl9Ub2tlbi5zdGFydHN3aXRoKCciJykgb3Igc2VsZi5fVG9r ZW4uc3RhcnRzd2l0aCgnTCInKToNCiAgICAgICAgICAgICBGbGFnID0gMA0KICAgICAgICAgICAg IGZvciBJbmRleCBpbiByYW5nZShsZW4oc2VsZi5fVG9rZW4pKToNCiAgICAgICAgICAgICAgICAg aWYgc2VsZi5fVG9rZW5bSW5kZXhdIGluIFsnIiddOg0KKyAgICAgICAgICAgICAgICAgICAgaWYg c2VsZi5fVG9rZW5bSW5kZXggLSAxXSA9PSAnXFwnOg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgICAgICBGbGFnICs9IDENCiAgICAgICAgICAgICBp ZiBGbGFnID09IDIgYW5kIHNlbGYuX1Rva2VuLmVuZHN3aXRoKCciJyk6DQogICAgICAgICAgICAg ICAgIHJldHVybiBUcnVlDQogICAgICAgICBpZiBzZWxmLl9Ub2tlbi5zdGFydHN3aXRoKCInIikg b3Igc2VsZi5fVG9rZW4uc3RhcnRzd2l0aCgiTCciKToNCiAgICAgICAgICAgICBGbGFnID0gMA0K ICAgICAgICAgICAgIGZvciBJbmRleCBpbiByYW5nZShsZW4oc2VsZi5fVG9rZW4pKToNCiAgICAg ICAgICAgICAgICAgaWYgc2VsZi5fVG9rZW5bSW5kZXhdIGluIFsiJyJdOg0KKyAgICAgICAgICAg ICAgICAgICAgaWYgc2VsZi5fVG9rZW5bSW5kZXggLSAxXSA9PSAnXFwnOg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgICAgICBGbGFnICs9IDENCiAg ICAgICAgICAgICBpZiBGbGFnID09IDIgYW5kIHNlbGYuX1Rva2VuLmVuZHN3aXRoKCInIik6DQog ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlDQogICAgICAgICB0cnk6DQogICAgICAgICAgICAg c2VsZi5fVG9rZW4gPSBpbnQoc2VsZi5fVG9rZW4sIFJhZGl4KSBAQCAtNTM1LDIwICs1NTIsMjkg QEAgY2xhc3MgVmFsdWVFeHByZXNzaW9uKG9iamVjdCk6DQogDQogICAgICAgICAjIFNraXAgbGVm dCBxdW90ZQ0KICAgICAgICAgc2VsZi5fSWR4ICs9IDENCiANCiAgICAgICAgICMgUmVwbGFjZSBl c2NhcGUgXFxcIiwgXCINCi0gICAgICAgIEV4cHIgPSBzZWxmLl9FeHByW3NlbGYuX0lkeDpdLnJl cGxhY2UoJ1xcXFwnLCAnLy8nKS5yZXBsYWNlKCdcXFwiJywgJ1xcXCcnKQ0KLSAgICAgICAgZm9y IENoIGluIEV4cHI6DQotICAgICAgICAgICAgc2VsZi5fSWR4ICs9IDENCi0gICAgICAgICAgICBp ZiBDaCA9PSAnIicgb3IgQ2ggPT0gIiciOg0KLSAgICAgICAgICAgICAgICBicmVhaw0KLSAgICAg ICAgc2VsZi5fVG9rZW4gPSBzZWxmLl9MaXRlcmFsVG9rZW4gPSBzZWxmLl9FeHByW0lkeDpzZWxm Ll9JZHhdDQotICAgICAgICBpZiBzZWxmLl9Ub2tlbi5zdGFydHN3aXRoKCciJykgYW5kIG5vdCBz ZWxmLl9Ub2tlbi5lbmRzd2l0aCgnIicpOg0KLSAgICAgICAgICAgIHJhaXNlIEJhZEV4cHJlc3Np b24oRVJSX1NUUklOR19UT0tFTiAlIHNlbGYuX1Rva2VuKQ0KLSAgICAgICAgaWYgc2VsZi5fVG9r ZW4uc3RhcnRzd2l0aCgiJyIpIGFuZCBub3Qgc2VsZi5fVG9rZW4uZW5kc3dpdGgoIiciKToNCi0g ICAgICAgICAgICByYWlzZSBCYWRFeHByZXNzaW9uKEVSUl9TVFJJTkdfVE9LRU4gJSBzZWxmLl9U b2tlbikNCisgICAgICAgIGlmIHNlbGYuX0V4cHJbSWR4XSA9PSAnIic6DQorICAgICAgICAgICAg RXhwciA9IHNlbGYuX0V4cHJbc2VsZi5fSWR4Ol0ucmVwbGFjZSgnXFxcXCcsICcvLycpLnJlcGxh Y2UoJ1xcXCInLCAnXFxcJycpDQorICAgICAgICAgICAgZm9yIENoIGluIEV4cHI6DQorICAgICAg ICAgICAgICAgIHNlbGYuX0lkeCArPSAxDQorICAgICAgICAgICAgICAgIGlmIENoID09ICciJzoN CisgICAgICAgICAgICAgICAgICAgIGJyZWFrDQorICAgICAgICAgICAgc2VsZi5fVG9rZW4gPSBz ZWxmLl9MaXRlcmFsVG9rZW4gPSBzZWxmLl9FeHByW0lkeDpzZWxmLl9JZHhdDQorICAgICAgICAg ICAgaWYgbm90IHNlbGYuX1Rva2VuLmVuZHN3aXRoKCciJyk6DQorICAgICAgICAgICAgICAgIHJh aXNlIEJhZEV4cHJlc3Npb24oRVJSX1NUUklOR19UT0tFTiAlIHNlbGYuX1Rva2VuKQ0KKyAgICAg ICAgI1JlcGxhY2UgZXNjYXBlIFxcXCcsIFwnDQorICAgICAgICBlbGlmIHNlbGYuX0V4cHJbSWR4 XSA9PSAiJyI6DQorICAgICAgICAgICAgRXhwciA9IHNlbGYuX0V4cHJbc2VsZi5fSWR4Ol0ucmVw bGFjZSgnXFxcXCcsICcvLycpLnJlcGxhY2UoIlxcXCciLCAiXFxcIiIpDQorICAgICAgICAgICAg Zm9yIENoIGluIEV4cHI6DQorICAgICAgICAgICAgICAgIHNlbGYuX0lkeCArPSAxDQorICAgICAg ICAgICAgICAgIGlmIENoID09ICInIjoNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrDQorICAg ICAgICAgICAgc2VsZi5fVG9rZW4gPSBzZWxmLl9MaXRlcmFsVG9rZW4gPSBzZWxmLl9FeHByW0lk eDpzZWxmLl9JZHhdDQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX1Rva2VuLmVuZHN3aXRoKCIn Iik6DQorICAgICAgICAgICAgICAgIHJhaXNlIEJhZEV4cHJlc3Npb24oRVJSX1NUUklOR19UT0tF TiAlIHNlbGYuX1Rva2VuKQ0KICAgICAgICAgc2VsZi5fVG9rZW4gPSBzZWxmLl9Ub2tlblsxOi0x XQ0KICAgICAgICAgcmV0dXJuIHNlbGYuX1Rva2VuDQogDQogICAgICMgR2V0IHRva2VuIHRoYXQg aXMgY29tcHJpc2VkIGJ5IGFscGhhbnVtZXJpYywgdW5kZXJzY29yZSBvciBkb3QodXNlZCBieSBQ Q0QpDQogICAgICMgQHBhcmFtIElzQWxwaGFPcDogSW5kaWNhdGUgaWYgcGFyc2luZyBnZW5lcmFs IHRva2VuIG9yIHNjcmlwdCBvcGVyYXRvcihFUSwgTkUuLi4pIGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0NvbW1vbi9NaXNjLnB5DQppbmRleCAxNDYxZDAwNjY5Li5hN2U3Nzk3ZDA0IDEwMDY0NA0KLS0t IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL01pc2MucHkNCisrKyBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9NaXNjLnB5DQpAQCAtMTQ0MSwyNSArMTQ0MSwzMCBAQCBk ZWYgUGFyc2VDb25zb2xlTG9nKEZpbGVuYW1lKToNCiAgICAgT3ByLmNsb3NlKCkNCiAgICAgT3B3 LmNsb3NlKCkNCiANCiBkZWYgQW5hbHl6ZVBjZEV4cHJlc3Npb24oU2V0dGluZyk6DQogICAgIFNl dHRpbmcgPSBTZXR0aW5nLnN0cmlwKCkNCi0gICAgIyBUaGVyZSBtaWdodCBiZSBlc2NhcGVkIHF1 b3RlIGluIGEgc3RyaW5nOiBcIiwgXFxcIg0KLSAgICBEYXRhID0gU2V0dGluZy5yZXBsYWNlKCdc XFxcJywgJy8vJykucmVwbGFjZSgnXFxcIicsICdcXFwnJykNCisgICAgIyBUaGVyZSBtaWdodCBi ZSBlc2NhcGVkIHF1b3RlIGluIGEgc3RyaW5nOiBcIiwgXFxcIiAsIFwnLCBcXFwnDQorICAgIERh dGEgPSBTZXR0aW5nDQogICAgICMgVGhlcmUgbWlnaHQgYmUgJ3wnIGluIHN0cmluZyBhbmQgaW4g KCAuLi4gfCAuLi4gKSwgcmVwbGFjZSBpdCB3aXRoICctJw0KICAgICBOZXdTdHIgPSAnJw0KLSAg ICBJblN0ciA9IEZhbHNlDQorICAgIEluU2luZ2xlUXVvdGVTdHIgPSBGYWxzZQ0KKyAgICBJbkRv dWJsZVF1b3RlU3RyID0gRmFsc2UNCiAgICAgUGFpciA9IDANCi0gICAgZm9yIGNoIGluIERhdGE6 DQotICAgICAgICBpZiBjaCA9PSAnIic6DQotICAgICAgICAgICAgSW5TdHIgPSBub3QgSW5TdHIN Ci0gICAgICAgIGVsaWYgY2ggPT0gJygnIGFuZCBub3QgSW5TdHI6DQorICAgIGZvciBJbmRleCwg Y2ggaW4gZW51bWVyYXRlKERhdGEpOg0KKyAgICAgICAgaWYgY2ggPT0gJyInIGFuZCBub3QgSW5T aW5nbGVRdW90ZVN0cjoNCisgICAgICAgICAgICBpZiBEYXRhW0luZGV4IC0gMV0gIT0gJ1xcJzoN CisgICAgICAgICAgICAgICAgSW5Eb3VibGVRdW90ZVN0ciA9IG5vdCBJbkRvdWJsZVF1b3RlU3Ry DQorICAgICAgICBlbGlmIGNoID09ICInIiBhbmQgbm90IEluRG91YmxlUXVvdGVTdHI6DQorICAg ICAgICAgICAgaWYgRGF0YVtJbmRleCAtIDFdICE9ICdcXCc6DQorICAgICAgICAgICAgICAgIElu U2luZ2xlUXVvdGVTdHIgPSBub3QgSW5TaW5nbGVRdW90ZVN0cg0KKyAgICAgICAgZWxpZiBjaCA9 PSAnKCcgYW5kIG5vdCAoSW5TaW5nbGVRdW90ZVN0ciBvciBJbkRvdWJsZVF1b3RlU3RyKToNCiAg ICAgICAgICAgICBQYWlyICs9IDENCi0gICAgICAgIGVsaWYgY2ggPT0gJyknIGFuZCBub3QgSW5T dHI6DQorICAgICAgICBlbGlmIGNoID09ICcpJyBhbmQgbm90IChJblNpbmdsZVF1b3RlU3RyIG9y IEluRG91YmxlUXVvdGVTdHIpOg0KICAgICAgICAgICAgIFBhaXIgLT0gMQ0KIA0KLSAgICAgICAg aWYgKFBhaXIgPiAwIG9yIEluU3RyKSBhbmQgY2ggPT0gVEFCX1ZBTFVFX1NQTElUOg0KKyAgICAg ICAgaWYgKFBhaXIgPiAwIG9yIEluU2luZ2xlUXVvdGVTdHIgb3IgSW5Eb3VibGVRdW90ZVN0cikg YW5kIGNoID09IFRBQl9WQUxVRV9TUExJVDoNCiAgICAgICAgICAgICBOZXdTdHIgKz0gJy0nDQog ICAgICAgICBlbHNlOg0KICAgICAgICAgICAgIE5ld1N0ciArPSBjaA0KICAgICBGaWVsZExpc3Qg PSBbXQ0KICAgICBTdGFydFBvcyA9IDANCkBAIC0xNTQ3LDM3ICsxNTUyLDM3IEBAIGRlZiBQYXJz ZUZpZWxkVmFsdWUgKFZhbHVlKToNCiAgICAgICAgICAgICByYWlzZSBCYWRFeHByZXNzaW9uKCcl cycgJSBNZXNzYWdlKQ0KICAgICAgICAgVmFsdWUsIFNpemUgPSBQYXJzZUZpZWxkVmFsdWUoVmFs dWUpDQogICAgICAgICByZXR1cm4gVmFsdWUsIDE2DQogICAgIGlmIFZhbHVlLnN0YXJ0c3dpdGgo J0wiJykgYW5kIFZhbHVlLmVuZHN3aXRoKCciJyk6DQogICAgICAgICAjIFVuaWNvZGUgU3RyaW5n DQotICAgICAgICBMaXN0ID0gbGlzdChWYWx1ZVsyOi0xXSkNCisgICAgICAgIExpc3QgPSBsaXN0 KGV2YWwoVmFsdWVbMTpdKSkgICMgdHJhbnNsYXRlIGVzY2FwZSBjaGFyYWN0ZXINCiAgICAgICAg IExpc3QucmV2ZXJzZSgpDQogICAgICAgICBWYWx1ZSA9IDANCiAgICAgICAgIGZvciBDaGFyIGlu IExpc3Q6DQogICAgICAgICAgICAgVmFsdWUgPSAoVmFsdWUgPDwgMTYpIHwgb3JkKENoYXIpDQog ICAgICAgICByZXR1cm4gVmFsdWUsIChsZW4oTGlzdCkgKyAxKSAqIDINCiAgICAgaWYgVmFsdWUu c3RhcnRzd2l0aCgnIicpIGFuZCBWYWx1ZS5lbmRzd2l0aCgnIicpOg0KICAgICAgICAgIyBBU0NJ SSBTdHJpbmcNCi0gICAgICAgIExpc3QgPSBsaXN0KFZhbHVlWzE6LTFdKQ0KKyAgICAgICAgTGlz dCA9IGxpc3QoZXZhbChWYWx1ZSkpICAjIHRyYW5zbGF0ZSBlc2NhcGUgY2hhcmFjdGVyDQogICAg ICAgICBMaXN0LnJldmVyc2UoKQ0KICAgICAgICAgVmFsdWUgPSAwDQogICAgICAgICBmb3IgQ2hh ciBpbiBMaXN0Og0KICAgICAgICAgICAgIFZhbHVlID0gKFZhbHVlIDw8IDgpIHwgb3JkKENoYXIp DQogICAgICAgICByZXR1cm4gVmFsdWUsIGxlbihMaXN0KSArIDENCiAgICAgaWYgVmFsdWUuc3Rh cnRzd2l0aCgiTCciKSBhbmQgVmFsdWUuZW5kc3dpdGgoIiciKToNCiAgICAgICAgICMgVW5pY29k ZSBDaGFyYWN0ZXIgQ29uc3RhbnQNCi0gICAgICAgIExpc3QgPSBsaXN0KFZhbHVlWzI6LTFdKQ0K KyAgICAgICAgTGlzdCA9IGxpc3QoZXZhbChWYWx1ZVsxOl0pKSAjIHRyYW5zbGF0ZSBlc2NhcGUg Y2hhcmFjdGVyDQogICAgICAgICBpZiBsZW4oTGlzdCkgPT0gMDoNCiAgICAgICAgICAgICByYWlz ZSBCYWRFeHByZXNzaW9uKCdMZW5ndGggJXMgaXMgJXMnICUgKFZhbHVlLCBsZW4oTGlzdCkpKQ0K ICAgICAgICAgTGlzdC5yZXZlcnNlKCkNCiAgICAgICAgIFZhbHVlID0gMA0KICAgICAgICAgZm9y IENoYXIgaW4gTGlzdDoNCiAgICAgICAgICAgICBWYWx1ZSA9IChWYWx1ZSA8PCAxNikgfCBvcmQo Q2hhcikNCiAgICAgICAgIHJldHVybiBWYWx1ZSwgbGVuKExpc3QpICogMg0KICAgICBpZiBWYWx1 ZS5zdGFydHN3aXRoKCInIikgYW5kIFZhbHVlLmVuZHN3aXRoKCInIik6DQogICAgICAgICAjIENo YXJhY3RlciBjb25zdGFudA0KLSAgICAgICAgTGlzdCA9IGxpc3QoVmFsdWVbMTotMV0pDQorICAg ICAgICBMaXN0ID0gbGlzdChldmFsKFZhbHVlKSkgIyB0cmFuc2xhdGUgZXNjYXBlIGNoYXJhY3Rl cg0KICAgICAgICAgaWYgbGVuKExpc3QpID09IDA6DQogICAgICAgICAgICAgcmFpc2UgQmFkRXhw cmVzc2lvbignTGVuZ3RoICVzIGlzICVzJyAlIChWYWx1ZSwgbGVuKExpc3QpKSkNCiAgICAgICAg IExpc3QucmV2ZXJzZSgpDQogICAgICAgICBWYWx1ZSA9IDANCiAgICAgICAgIGZvciBDaGFyIGlu IExpc3Q6DQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1N0cmlu Zy5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9TdHJpbmcucHkNCmluZGV4IDRh OGMwM2U4OGUuLjVlNTBiZWZmNWMgMTAwNjQ0DQotLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9Db21tb24vU3RyaW5nLnB5DQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24v U3RyaW5nLnB5DQpAQCAtNDMsMzAgKzQzLDM2IEBAIGdIdW1hblJlYWRhYmxlVmVyUGF0dCA9IHJl LmNvbXBpbGUocicoWzEtOV1bMC05XSp8MClcLlswLTldezEsMn0kJykNCiAjDQogZGVmIEdldFNw bGl0VmFsdWVMaXN0KFN0cmluZywgU3BsaXRUYWc9RGF0YVR5cGUuVEFCX1ZBTFVFX1NQTElULCBN YXhTcGxpdD0gLTEpOg0KICAgICBWYWx1ZUxpc3QgPSBbXQ0KICAgICBMYXN0ID0gMA0KICAgICBF c2NhcGVkID0gRmFsc2UNCi0gICAgSW5TdHJpbmcgPSBGYWxzZQ0KKyAgICBJblNpbmdsZVF1b3Rl U3RyaW5nID0gRmFsc2UNCisgICAgSW5Eb3VibGVRdW90ZVN0cmluZyA9IEZhbHNlDQogICAgIElu UGFyZW50aGVzaXMgPSAwDQogICAgIGZvciBJbmRleCBpbiByYW5nZSgwLCBsZW4oU3RyaW5nKSk6 DQogICAgICAgICBDaGFyID0gU3RyaW5nW0luZGV4XQ0KIA0KICAgICAgICAgaWYgbm90IEVzY2Fw ZWQ6DQogICAgICAgICAgICAgIyBGb3VuZCBhIHNwbGl0dGVyIG5vdCBpbiBhIHN0cmluZywgc3Bs aXQgaXQNCi0gICAgICAgICAgICBpZiBub3QgSW5TdHJpbmcgYW5kIEluUGFyZW50aGVzaXMgPT0g MCBhbmQgQ2hhciA9PSBTcGxpdFRhZzoNCisgICAgICAgICAgICBpZiAobm90IEluU2luZ2xlUXVv dGVTdHJpbmcgb3Igbm90IEluRG91YmxlUXVvdGVTdHJpbmcpIGFuZCBJblBhcmVudGhlc2lzID09 IDAgYW5kIENoYXIgPT0gU3BsaXRUYWc6DQogICAgICAgICAgICAgICAgIFZhbHVlTGlzdC5hcHBl bmQoU3RyaW5nW0xhc3Q6SW5kZXhdLnN0cmlwKCkpDQogICAgICAgICAgICAgICAgIExhc3QgPSBJ bmRleCArIDENCiAgICAgICAgICAgICAgICAgaWYgTWF4U3BsaXQgPiAwIGFuZCBsZW4oVmFsdWVM aXN0KSA+PSBNYXhTcGxpdDoNCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogDQotICAgICAg ICAgICAgaWYgQ2hhciA9PSAnXFwnIGFuZCBJblN0cmluZzoNCisgICAgICAgICAgICBpZiBDaGFy ID09ICdcXCcgYW5kIChJblNpbmdsZVF1b3RlU3RyaW5nIG9yIEluRG91YmxlUXVvdGVTdHJpbmcp Og0KICAgICAgICAgICAgICAgICBFc2NhcGVkID0gVHJ1ZQ0KLSAgICAgICAgICAgIGVsaWYgQ2hh ciA9PSAnIic6DQotICAgICAgICAgICAgICAgIGlmIG5vdCBJblN0cmluZzoNCi0gICAgICAgICAg ICAgICAgICAgIEluU3RyaW5nID0gVHJ1ZQ0KKyAgICAgICAgICAgIGVsaWYgQ2hhciA9PSAnIicg YW5kIG5vdCBJblNpbmdsZVF1b3RlU3RyaW5nOg0KKyAgICAgICAgICAgICAgICBpZiBub3QgSW5E b3VibGVRdW90ZVN0cmluZzoNCisgICAgICAgICAgICAgICAgICAgIEluRG91YmxlUXVvdGVTdHJp bmcgPSBUcnVlDQogICAgICAgICAgICAgICAgIGVsc2U6DQotICAgICAgICAgICAgICAgICAgICBJ blN0cmluZyA9IEZhbHNlDQorICAgICAgICAgICAgICAgICAgICBJbkRvdWJsZVF1b3RlU3RyaW5n ID0gRmFsc2UNCisgICAgICAgICAgICBlbGlmIENoYXIgPT0gIiciIGFuZCBub3QgSW5Eb3VibGVR dW90ZVN0cmluZzoNCisgICAgICAgICAgICAgICAgaWYgbm90IEluU2luZ2xlUXVvdGVTdHJpbmc6 DQorICAgICAgICAgICAgICAgICAgICBJblNpbmdsZVF1b3RlU3RyaW5nID0gVHJ1ZQ0KKyAgICAg ICAgICAgICAgICBlbHNlOg0KKyAgICAgICAgICAgICAgICAgICAgSW5TaW5nbGVRdW90ZVN0cmlu ZyA9IEZhbHNlDQogICAgICAgICAgICAgZWxpZiBDaGFyID09ICcoJzoNCiAgICAgICAgICAgICAg ICAgSW5QYXJlbnRoZXNpcyA9IEluUGFyZW50aGVzaXMgKyAxDQogICAgICAgICAgICAgZWxpZiBD aGFyID09ICcpJzoNCiAgICAgICAgICAgICAgICAgSW5QYXJlbnRoZXNpcyA9IEluUGFyZW50aGVz aXMgLSAxDQogICAgICAgICBlbHNlOg0KQEAgLTM0MywxOCArMzQ5LDIxIEBAIGRlZiBDbGVhblN0 cmluZyhMaW5lLCBDb21tZW50Q2hhcmFjdGVyPURhdGFUeXBlLlRBQl9DT01NRU5UX1NQTElULCBB bGxvd0NwcFN0eWxlDQogICAgIGlmIEFsbG93Q3BwU3R5bGVDb21tZW50Og0KICAgICAgICAgTGlu ZSA9IExpbmUucmVwbGFjZShEYXRhVHlwZS5UQUJfQ09NTUVOVF9FREtfU1BMSVQsIENvbW1lbnRD aGFyYWN0ZXIpDQogICAgICMNCiAgICAgIyByZW1vdmUgY29tbWVudHMsIGJ1dCB3ZSBzaG91bGQg ZXNjYXBlIGNvbW1lbnQgY2hhcmFjdGVyIGluIHN0cmluZw0KICAgICAjDQotICAgIEluU3RyaW5n ID0gRmFsc2UNCisgICAgSW5Eb3VibGVRdW90ZVN0cmluZyA9IEZhbHNlDQorICAgIEluU2luZ2xl UXVvdGVTdHJpbmcgPSBGYWxzZQ0KICAgICBDb21tZW50SW5TdHJpbmcgPSBGYWxzZQ0KICAgICBm b3IgSW5kZXggaW4gcmFuZ2UoMCwgbGVuKExpbmUpKToNCi0gICAgICAgIGlmIExpbmVbSW5kZXhd ID09ICciJzoNCi0gICAgICAgICAgICBJblN0cmluZyA9IG5vdCBJblN0cmluZw0KLSAgICAgICAg ZWxpZiBMaW5lW0luZGV4XSA9PSBDb21tZW50Q2hhcmFjdGVyIGFuZCBJblN0cmluZyA6DQorICAg ICAgICBpZiBMaW5lW0luZGV4XSA9PSAnIicgYW5kIG5vdCBJblNpbmdsZVF1b3RlU3RyaW5nOg0K KyAgICAgICAgICAgIEluRG91YmxlUXVvdGVTdHJpbmcgPSBub3QgSW5Eb3VibGVRdW90ZVN0cmlu Zw0KKyAgICAgICAgZWxpZiBMaW5lW0luZGV4XSA9PSAiJyIgYW5kIG5vdCBJbkRvdWJsZVF1b3Rl U3RyaW5nOg0KKyAgICAgICAgICAgIEluU2luZ2xlUXVvdGVTdHJpbmcgPSBub3QgSW5TaW5nbGVR dW90ZVN0cmluZw0KKyAgICAgICAgZWxpZiBMaW5lW0luZGV4XSA9PSBDb21tZW50Q2hhcmFjdGVy IGFuZCAoSW5TaW5nbGVRdW90ZVN0cmluZyBvciBJbkRvdWJsZVF1b3RlU3RyaW5nKToNCiAgICAg ICAgICAgICBDb21tZW50SW5TdHJpbmcgPSBUcnVlDQotICAgICAgICBlbGlmIExpbmVbSW5kZXhd ID09IENvbW1lbnRDaGFyYWN0ZXIgYW5kIG5vdCBJblN0cmluZyA6DQorICAgICAgICBlbGlmIExp bmVbSW5kZXhdID09IENvbW1lbnRDaGFyYWN0ZXIgYW5kIG5vdCAoSW5TaW5nbGVRdW90ZVN0cmlu ZyBvciBJbkRvdWJsZVF1b3RlU3RyaW5nKToNCiAgICAgICAgICAgICBMaW5lID0gTGluZVswOiBJ bmRleF0NCiAgICAgICAgICAgICBicmVhaw0KIA0KICAgICBpZiBDb21tZW50SW5TdHJpbmcgYW5k IEJ1aWxkT3B0aW9uOg0KICAgICAgICAgTGluZSA9IExpbmUucmVwbGFjZSgnIicsICcnKQ0KQEAg LTQwMCwxOSArNDA5LDIyIEBAIGRlZiBDbGVhblN0cmluZzIoTGluZSwgQ29tbWVudENoYXJhY3Rl cj1EYXRhVHlwZS5UQUJfQ09NTUVOVF9TUExJVCwgQWxsb3dDcHBTdHlsDQogICAgIGlmIEFsbG93 Q3BwU3R5bGVDb21tZW50Og0KICAgICAgICAgTGluZSA9IExpbmUucmVwbGFjZShEYXRhVHlwZS5U QUJfQ09NTUVOVF9FREtfU1BMSVQsIENvbW1lbnRDaGFyYWN0ZXIpDQogICAgICMNCiAgICAgIyBz ZXBhcmF0ZSBjb21tZW50cyBhbmQgc3RhdGVtZW50cywgYnV0IHdlIHNob3VsZCBlc2NhcGUgY29t bWVudCBjaGFyYWN0ZXIgaW4gc3RyaW5nDQogICAgICMNCi0gICAgSW5TdHJpbmcgPSBGYWxzZQ0K KyAgICBJbkRvdWJsZVF1b3RlU3RyaW5nID0gRmFsc2UNCisgICAgSW5TaW5nbGVRdW90ZVN0cmlu ZyA9IEZhbHNlDQogICAgIENvbW1lbnRJblN0cmluZyA9IEZhbHNlDQogICAgIENvbW1lbnQgPSAn Jw0KICAgICBmb3IgSW5kZXggaW4gcmFuZ2UoMCwgbGVuKExpbmUpKToNCi0gICAgICAgIGlmIExp bmVbSW5kZXhdID09ICciJzoNCi0gICAgICAgICAgICBJblN0cmluZyA9IG5vdCBJblN0cmluZw0K LSAgICAgICAgZWxpZiBMaW5lW0luZGV4XSA9PSBDb21tZW50Q2hhcmFjdGVyIGFuZCBJblN0cmlu ZzoNCisgICAgICAgIGlmIExpbmVbSW5kZXhdID09ICciJyBhbmQgbm90IEluU2luZ2xlUXVvdGVT dHJpbmc6DQorICAgICAgICAgICAgSW5Eb3VibGVRdW90ZVN0cmluZyA9IG5vdCBJbkRvdWJsZVF1 b3RlU3RyaW5nDQorICAgICAgICBlbGlmIExpbmVbSW5kZXhdID09ICInIiBhbmQgbm90IEluRG91 YmxlUXVvdGVTdHJpbmc6DQorICAgICAgICAgICAgSW5TaW5nbGVRdW90ZVN0cmluZyA9IG5vdCBJ blNpbmdsZVF1b3RlU3RyaW5nDQorICAgICAgICBlbGlmIExpbmVbSW5kZXhdID09IENvbW1lbnRD aGFyYWN0ZXIgYW5kIChJbkRvdWJsZVF1b3RlU3RyaW5nIG9yIEluU2luZ2xlUXVvdGVTdHJpbmcp Og0KICAgICAgICAgICAgIENvbW1lbnRJblN0cmluZyA9IFRydWUNCi0gICAgICAgIGVsaWYgTGlu ZVtJbmRleF0gPT0gQ29tbWVudENoYXJhY3RlciBhbmQgbm90IEluU3RyaW5nOg0KKyAgICAgICAg ZWxpZiBMaW5lW0luZGV4XSA9PSBDb21tZW50Q2hhcmFjdGVyIGFuZCBub3QgKEluRG91YmxlUXVv dGVTdHJpbmcgb3IgSW5TaW5nbGVRdW90ZVN0cmluZyk6DQogICAgICAgICAgICAgQ29tbWVudCA9 IExpbmVbSW5kZXg6XS5zdHJpcCgpDQogICAgICAgICAgICAgTGluZSA9IExpbmVbMDpJbmRleF0u c3RyaXAoKQ0KICAgICAgICAgICAgIGJyZWFrDQogDQogICAgIHJldHVybiBMaW5lLCBDb21tZW50 DQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxk RGF0YS5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEu cHkNCmluZGV4IDc1Yjg3N2E1YWEuLmUzZGE0NTg1YjMgMTAwNjQ0DQotLS0gYS9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNjQnVpbGREYXRhLnB5DQorKysgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNjQnVpbGREYXRhLnB5DQpAQCAtOTg5LDEwICs5ODks MTIgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFzc09iamVjdCk6DQogICAg ICAgICAgICAgICAgICAgICAgICAgRm91bmRGbGFnID0gVHJ1ZQ0KICAgICAgICAgICAgICAgICBp ZiBGaWVsZE5hbWU6DQogICAgICAgICAgICAgICAgICAgICBOZXdWYWx1ZSA9IHNlbGYuR2V0Rmll bGRWYWx1ZUZyb21Db21tKHBjZHZhbHVlLCBUb2tlblNwYWNlR3VpZENOYW1lLCBUb2tlbkNOYW1l LCBGaWVsZE5hbWUpDQogICAgICAgICAgICAgICAgICAgICBHbG9iYWxEYXRhLkJ1aWxkT3B0aW9u UGNkW2ldID0gKFRva2VuU3BhY2VHdWlkQ05hbWUsIFRva2VuQ05hbWUsIEZpZWxkTmFtZSxOZXdW YWx1ZSwoImJ1aWxkIGNvbW1hbmQgb3B0aW9ucyIsMSkpDQogICAgICAgICAgICAgICAgIGVsc2U6 DQorICAgICAgICAgICAgICAgICAgICAjIFJlcGxhY2UgXCcgdG8gJywgXFxcJyB0byBcJw0KKyAg ICAgICAgICAgICAgICAgICAgcGNkdmFsdWUgPSBwY2R2YWx1ZS5yZXBsYWNlKCJcXFxcXFwnIiwg DQorICdcXFxcXFwiJykucmVwbGFjZSgnXFxcJycsICdcJycpLnJlcGxhY2UoJ1xcXFxcXCInLCAi XFwnIikNCiAgICAgICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5EZWNQY2RzOg0KICAg ICAgICAgICAgICAgICAgICAgICAgIFBjZEl0ZW0gPSBzZWxmLkRlY1BjZHNba2V5XQ0KICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIEhhc1Rva2VuU3BhY2U6DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChQY2RJdGVtLlRva2VuQ05hbWUsIFBjZEl0ZW0uVG9rZW5TcGFjZUd1aWRD TmFtZSkgPT0gKFRva2VuQ05hbWUsIFRva2VuU3BhY2VHdWlkQ05hbWUpOg0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUGNkRGF0dW1UeXBlID0gUGNkSXRlbS5EYXR1bVR5cGUgQEAg LTEwMDAsMjcgKzEwMDIsMjcgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFz c09iamVjdCk6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5Og0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2R2YWx1ZSA9IFZhbHVlRXhw cmVzc2lvbkV4KHBjZHZhbHVlWzE6XSwgUGNkRGF0dW1UeXBlLCBzZWxmLl9HdWlkRGljdCkoVHJ1 ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgQmFkRXhwcmVz c2lvbiwgVmFsdWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVk a0xvZ2dlci5lcnJvcignUGFyc2VyJywgRk9STUFUX0lOVkFMSUQsICdQQ0QgWyVzLiVzXSBWYWx1 ZSAiJXMiLCAgJXMnICUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChUb2tlblNwYWNlR3VpZENOYW1lLCBUb2tlbkNOYW1lLCBwY2R2YWx1 ZSwgVmFsdWUpKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFBjZERh dHVtVHlwZSA9PSAiVk9JRCoiOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIFBjZERhdHVtVHlwZSBub3QgaW4gW1RBQl9VSU5UOCwgVEFCX1VJTlQxNiwgVEFCX1VJTlQz MiwgVEFCX1VJTlQ2NCwgJ0JPT0xFQU4nXToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGNkdmFsdWUgPSAnSCcgKyBwY2R2YWx1ZQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZWxpZiBwY2R2YWx1ZS5zdGFydHN3aXRoKCJMJyIpOg0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGNkdmFsdWUgPSBWYWx1ZUV4cHJlc3Npb25FeChwY2R2YWx1ZSwg UGNkRGF0dW1UeXBlLCBzZWxmLl9HdWlkRGljdCkoVHJ1ZSkNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleGNlcHQgQmFkRXhwcmVzc2lvbiwgVmFsdWU6DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignUGFyc2VyJywg Rk9STUFUX0lOVkFMSUQsICdQQ0QgWyVzLiVzXSBWYWx1ZSAiJXMiLCAgJXMnICUNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUb2tlblNw YWNlR3VpZENOYW1lLCBUb2tlbkNOYW1lLCBwY2R2YWx1ZSwgVmFsdWUpKQ0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBjZHZhbHVlLnN0YXJ0c3dpdGgoJ3snKToNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBQY2REYXR1bVR5cGUgbm90IGlu IFtUQUJfVUlOVDgsIFRBQl9VSU5UMTYsIFRBQl9VSU5UMzIsIFRBQl9VSU5UNjQsICdCT09MRUFO J106DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjZHZhbHVlID0g J0gnICsgcGNkdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGNk dmFsdWUuc3RhcnRzd2l0aCgiJyIpOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRyeToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNkdmFs dWUgPSBWYWx1ZUV4cHJlc3Npb25FeChwY2R2YWx1ZSwgUGNkRGF0dW1UeXBlLCBzZWxmLl9HdWlk RGljdCkoVHJ1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQg QmFkRXhwcmVzc2lvbiwgVmFsdWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVka0xvZ2dlci5lcnJvcignUGFyc2VyJywgRk9STUFUX0lOVkFMSUQsICdQQ0QgWyVz LiVzXSBWYWx1ZSAiJXMiLCAgJXMnICUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChUb2tlblNwYWNlR3VpZENOYW1lLCBUb2tlbkNOYW1l LCBwY2R2YWx1ZSwgVmFsdWUpKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIHBjZHZhbHVlLnN0YXJ0c3dpdGgoJ3snKToNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBQY2REYXR1bVR5cGUgbm90IGluIFtUQUJfVUlOVDgsIFRBQl9VSU5UMTYs IFRBQl9VSU5UMzIsIFRBQl9VSU5UNjQsICdCT09MRUFOJ106DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBjZHZhbHVlID0gJ0gnICsgcGNkdmFsdWUNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGNkdmFsdWUuc3RhcnRzd2l0aCgnTCcpOg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjZHZhbHVlID0gJ0wiJyArIHBj ZHZhbHVlWzE6XSArICciJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy eToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNkdmFsdWUgPSBW YWx1ZUV4cHJlc3Npb25FeChwY2R2YWx1ZSwgUGNkRGF0dW1UeXBlLCBzZWxmLl9HdWlkRGljdCko VHJ1ZSkgQEAgLTEwMjksMTIgKzEwMzEsMTYgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3Jt QnVpbGRDbGFzc09iamVjdCk6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoVG9rZW5TcGFjZUd1aWRDTmFtZSwgVG9rZW5DTmFtZSwgcGNk dmFsdWUsIFZhbHVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5Og0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwY2R2YWx1ZSA9IFZhbHVlRXhwcmVzc2lvbkV4KHBj ZHZhbHVlLCBQY2REYXR1bVR5cGUsIHNlbGYuX0d1aWREaWN0KShUcnVlKQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCYWRFeHByZXNzaW9uLCBWYWx1ZToNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCdQ YXJzZXInLCBGT1JNQVRfSU5WQUxJRCwgJ1BDRCBbJXMuJXNdIFZhbHVlICIlcyIsICAlcycgJQ0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFRva2VuU3BhY2VHdWlkQ05hbWUsIFRva2VuQ05hbWUsIHBjZHZhbHVlLCBWYWx1ZSkpDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjZHZhbHVlID0gJyInICsgcGNkdmFsdWUg KyAnIicNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjZHZh bHVlID0gVmFsdWVFeHByZXNzaW9uRXgocGNkdmFsdWUsIFBjZERhdHVtVHlwZSwgc2VsZi5fR3Vp ZERpY3QpKFRydWUpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 Y2VwdCBCYWRFeHByZXNzaW9uLCBWYWx1ZToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignUGFyc2VyJywgRk9STUFUX0lOVkFMSUQs ICdQQ0QgWyVzLiVzXSBWYWx1ZSAiJXMiLCAgJXMnICUNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgKFRva2VuU3BhY2VHdWlk Q05hbWUsIFRva2VuQ05hbWUsIHBjZHZhbHVlLCBWYWx1ZSkpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOZXdWYWx1ZSA9IEJ1aWxkT3B0aW9uUGNkVmFsdWVGb3JtYXQoVG9rZW5T cGFjZUd1aWRDTmFtZSwgVG9rZW5DTmFtZSwgUGNkRGF0dW1UeXBlLCBwY2R2YWx1ZSkNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvdW5kRmxhZyA9IFRydWUNCiAgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBQY2RJ dGVtLlRva2VuQ05hbWUgPT0gVG9rZW5DTmFtZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBQY2RJdGVtLlRva2VuU3BhY2VHdWlkQ05hbWUgaW4gVG9rZW5TcGFjZUd1 aWRDTmFtZUxpc3Q6DQpAQCAtMTA0NiwyOSArMTA1MiwyOSBAQCBjbGFzcyBEc2NCdWlsZERhdGEo UGxhdGZvcm1CdWlsZENsYXNzT2JqZWN0KToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwY2R2YWx1ZSA9IFZhbHVlRXhwcmVzc2lvbkV4KHBjZHZhbHVlWzE6XSwg UGNkRGF0dW1UeXBlLCBzZWxmLl9HdWlkRGljdCkoVHJ1ZSkNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCYWRFeHByZXNzaW9uLCBWYWx1ZToNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGtMb2dnZXIu ZXJyb3IoJ1BhcnNlcicsIEZPUk1BVF9JTlZBTElELCAnUENEIFslcy4lc10gVmFsdWUgIiVzIiwg JXMnICUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFRva2VuU3BhY2VHdWlkQ05hbWUsIFRva2VuQ05hbWUsIHBjZHZhbHVl LCBWYWx1ZSkpDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBQY2REYXR1bVR5cGUgPT0gIlZPSUQqIjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIFBjZERhdHVtVHlwZSBub3QgaW4gW1RBQl9VSU5UOCwgVEFCX1VJ TlQxNiwgVEFCX1VJTlQzMiwgVEFCX1VJTlQ2NCwnQk9PTEVBTiddOg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjZHZhbHVlID0gJ0gnICsgcGNkdmFs dWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwY2R2YWx1 ZS5zdGFydHN3aXRoKCJMJyIpOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJ5Og0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBjZHZhbHVlID0gVmFsdWVFeHByZXNzaW9uRXgocGNkdmFsdWUsIFBjZERhdHVtVHlw ZSwgc2VsZi5fR3VpZERpY3QpKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUcnVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhjZXB0IEJhZEV4cHJlc3Npb24sIFZhbHVlOg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignUGFyc2Vy JywgRk9STUFUX0lOVkFMSUQsICdQQ0QgWyVzLiVzXSBWYWx1ZSAiJXMiLCAgJXMnICUNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFRva2VuU3BhY2VHdWlkQ05hbWUsIFRva2VuQ05hbWUsIHBjZHZhbHVlLCBWYWx1ZSkpDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwY2R2YWx1ZS5z dGFydHN3aXRoKCd7Jyk6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBQY2REYXR1bVR5cGUgbm90IGluIFtUQUJfVUlOVDgsIFRBQl9VSU5UMTYsIFRBQl9V SU5UMzIsIFRBQl9VSU5UNjQsICdCT09MRUFOJ106DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGNkdmFsdWUgPSAnSCcgKyBwY2R2YWx1ZQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBjZHZhbHVlLnN0YXJ0c3dp dGgoIiciKToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy eToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2R2 YWx1ZSA9IFZhbHVlRXhwcmVzc2lvbkV4KHBjZHZhbHVlLCBQY2REYXR1bVR5cGUsIHNlbGYuX0d1 aWREaWN0KSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVHJ1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV4Y2VwdCBCYWRFeHByZXNzaW9uLCBWYWx1ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoJ1BhcnNlcicsIEZPUk1BVF9J TlZBTElELCAnUENEIFslcy4lc10gVmFsdWUgIiVzIiwgICVzJyAlDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUb2tlblNw YWNlR3VpZENOYW1lLCBUb2tlbkNOYW1lLCBwY2R2YWx1ZSwgVmFsdWUpKQ0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGNkdmFsdWUuc3RhcnRzd2l0aCgn eycpOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgUGNk RGF0dW1UeXBlIG5vdCBpbiBbVEFCX1VJTlQ4LCBUQUJfVUlOVDE2LCBUQUJfVUlOVDMyLCBUQUJf VUlOVDY0LCAnQk9PTEVBTiddOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBjZHZhbHVlID0gJ0gnICsgcGNkdmFsdWUNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwY2R2YWx1ZS5zdGFydHN3aXRoKCdMJyk6DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2R2YWx1ZSA9ICdM IicgKyBwY2R2YWx1ZVsxOl0gKyAnIicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwY2R2YWx1ZSA9IFZhbHVlRXhwcmVzc2lvbkV4KHBjZHZhbHVlLCBQY2REYXR1 bVR5cGUsIHNlbGYuX0d1aWREaWN0KSggQEAgLTEwNzgsMTMgKzEwODQsMTYgQEAgY2xhc3MgRHNj QnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFzc09iamVjdCk6DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUb2tlblNwYWNl R3VpZENOYW1lLCBUb2tlbkNOYW1lLCBwY2R2YWx1ZSwgVmFsdWUpKQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHJ5Og0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBjZHZhbHVlID0gVmFsdWVFeHByZXNzaW9uRXgocGNkdmFsdWUs IFBjZERhdHVtVHlwZSwgc2VsZi5fR3VpZERpY3QpKFRydWUpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgQmFkRXhwcmVzc2lvbiwgVmFsdWU6DQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRrTG9nZ2Vy LmVycm9yKCdQYXJzZXInLCBGT1JNQVRfSU5WQUxJRCwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDRCBbJXMuJXNdIFZh bHVlICIlcyIsICAlcycgJQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoVG9rZW5TcGFjZUd1aWRDTmFtZSwgVG9rZW5DTmFt ZSwgcGNkdmFsdWUsIFZhbHVlKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0cnk6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBjZHZhbHVlID0gJyInICsgcGNkdmFsdWUgKyAnIicNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNkdmFsdWUgPSBW YWx1ZUV4cHJlc3Npb25FeChwY2R2YWx1ZSwgUGNkRGF0dW1UeXBlLCBzZWxmLl9HdWlkRGljdCko VHJ1ZSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eGNlcHQgQmFkRXhwcmVzc2lvbiwgVmFsdWU6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignUGFyc2VyJywgRk9STUFU X0lOVkFMSUQsICdQQ0QgWyVzLiVzXSBWYWx1ZSAiJXMiLCAgJXMnICUNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K KyAoVG9rZW5TcGFjZUd1aWRDTmFtZSwgVG9rZW5DTmFtZSwgcGNkdmFsdWUsIFZhbHVlKSkNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3VmFsdWUgPSBCdWlsZE9w dGlvblBjZFZhbHVlRm9ybWF0KFRva2VuU3BhY2VHdWlkQ05hbWUsIFRva2VuQ05hbWUsIFBjZERh dHVtVHlwZSwgcGNkdmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZvdW5kRmxhZyA9IFRydWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbHNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGtMb2dn ZXIuZXJyb3IoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2J1aWxkJywNCi0tDQoyLjEyLjIud2luZG93cy4yDQoNCg==