From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 297469A87 for ; Mon, 18 May 2015 10:09:16 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 18 May 2015 01:09:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,452,1427785200"; d="scan'208";a="731004614" Received: from pgsmsx101.gar.corp.intel.com ([10.221.44.78]) by orsmga002.jf.intel.com with ESMTP; 18 May 2015 01:09:14 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by PGSMSX101.gar.corp.intel.com (10.221.44.78) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 18 May 2015 16:09:02 +0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.94]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.23]) with mapi id 14.03.0224.002; Mon, 18 May 2015 16:08:57 +0800 From: "Jiajia, SunX" To: "Liu, Yong" , "dts@dpdk.org" Thread-Topic: =?utf-8?B?W2R0c10gW+KAmGR0cy12MeKAmSAzLzldIEFkZCBzb21lIHBhcmFtcyBhbmQg?= =?utf-8?Q?functions_related_to_the_virtual_test?= Thread-Index: AQHQkSiTZ8GAM1eHHUeAqbFy6HINGZ2Az3gAgACLaxA= Date: Mon, 18 May 2015 08:08:56 +0000 Message-ID: References: <1431925646-1314-1-git-send-email-sunx.jiajia@intel.com> <1431925646-1314-4-git-send-email-sunx.jiajia@intel.com> <86228AFD5BCD8E4EBFD2B90117B5E81E10DE47F8@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <86228AFD5BCD8E4EBFD2B90117B5E81E10DE47F8@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-cr-hashedpuzzle: CVU= AYcN BRex BWAe D6yk Ea7J EsLh GMMj GpdO Hj5P ICIf IJyV JDNL J2HN KMwc LYji; 1; ZAB0AHMAQABkAHAAZABrAC4AbwByAGcA; Sosha1_v1; 7; {9C314573-BAA5-45FD-9112-6FD039B140F5}; cwB1AG4AeAAuAGoAaQBhAGoAaQBhAEAAaQBuAHQAZQBsAC4AYwBvAG0A; Mon, 18 May 2015 08:08:54 GMT; UgBFADoAIABbAGQAdABzAF0AIABbABggZAB0AHMALQB2ADEAGSAgADMALwA5AF0AIABBAGQAZAAgAHMAbwBtAGUAIABwAGEAcgBhAG0AcwAgAGEAbgBkACAAZgB1AG4AYwB0AGkAbwBuAHMAIAByAGUAbABhAHQAZQBkACAAdABvACAAdABoAGUAIAB2AGkAcgB0AHUAYQBsACAAdABlAHMAdAA= x-cr-puzzleid: {9C314573-BAA5-45FD-9112-6FD039B140F5} x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dts] =?utf-8?b?W+KAmGR0cy12MeKAmSAzLzldIEFkZCBzb21lIHBhcmFtcyBh?= =?utf-8?q?nd_functions_related_to_the_virtual_test?= X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 May 2015 08:09:18 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGl1LCBZb25nDQo+IFNl bnQ6IE1vbmRheSwgTWF5IDE4LCAyMDE1IDM6MjYgUE0NCj4gVG86IEppYWppYSwgU3VuWDsgZHRz QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJFOiBbZHRzXSBb4oCYZHRzLXYx4oCZIDMvOV0gQWRkIHNv bWUgcGFyYW1zIGFuZCBmdW5jdGlvbnMgcmVsYXRlZA0KPiB0byB0aGUgdmlydHVhbCB0ZXN0DQo+ IA0KPiBKaWFqaWEsIHBsZWFzZSBzZWUgbXkgY29tbWVudHMgYmVsb3cuDQo+IA0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZHRzIFttYWlsdG86ZHRzLWJvdW5jZXNA ZHBkay5vcmddIE9uIEJlaGFsZiBPZiBzamlhamlheA0KPiA+IFNlbnQ6IE1vbmRheSwgTWF5IDE4 LCAyMDE1IDE6MDcgUE0NCj4gPiBUbzogZHRzQGRwZGsub3JnDQo+ID4gU3ViamVjdDogW2R0c10g W+KAmGR0cy12MeKAmSAzLzldIEFkZCBzb21lIHBhcmFtcyBhbmQgZnVuY3Rpb25zIHJlbGF0ZWQN Cj4gdG8gdGhlDQo+ID4gdmlydHVhbCB0ZXN0DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBzamlh amlheCA8c3VueC5qaWFqaWFAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBmcmFtZXdvcmsvZHRz LnB5ICAgICAgICAgIHwgOTIgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAtLS0tLQ0KPiA+IC0tLS0tDQo+ID4gIGZyYW1ld29yay9leGNlcHRpb24ucHkgICAgfCAyNyAr KysrKysrKysrKysrKw0KPiA+ICBmcmFtZXdvcmsvbG9nZ2VyLnB5ICAgICAgIHwgNjkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0NCj4gPiAgZnJhbWV3b3JrL21haW4ucHkgICAg ICAgICB8ICA3ICsrKy0NCj4gPiAgZnJhbWV3b3JrL3Byb2plY3RfZHBkay5weSB8IDYyICsrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tDQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTU3IGlu c2VydGlvbnMoKyksIDEwMCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9mcmFt ZXdvcmsvZHRzLnB5IGIvZnJhbWV3b3JrL2R0cy5weQ0KPiA+IGluZGV4IGM5ZWNjY2IuLmMwZGY0 ZTkgMTAwNjQ0DQo+ID4gLS0tIGEvZnJhbWV3b3JrL2R0cy5weQ0KPiA+ICsrKyBiL2ZyYW1ld29y ay9kdHMucHkNCj4gPiBAQCAtNDksNiArNDksNyBAQCBmcm9tIHRlc3RfY2FzZSBpbXBvcnQgVGVz dENhc2UNCj4gPiAgZnJvbSB0ZXN0X3Jlc3VsdCBpbXBvcnQgUmVzdWx0DQo+ID4gIGZyb20gc3Rh dHNfcmVwb3J0ZXIgaW1wb3J0IFN0YXRzUmVwb3J0ZXINCj4gPiAgZnJvbSBleGNlbF9yZXBvcnRl ciBpbXBvcnQgRXhjZWxSZXBvcnRlcg0KPiA+ICtmcm9tIHV0aWxzIGltcG9ydCAqDQo+ID4gIGZy b20gZXhjZXB0aW9uIGltcG9ydCBUaW1lb3V0RXhjZXB0aW9uDQo+ID4gIGZyb20gbG9nZ2VyIGlt cG9ydCBnZXRMb2dnZXINCj4gPiAgaW1wb3J0IGxvZ2dlcg0KPiA+IEBAIC01Nyw2ICs1OCw3IEBA IGltcG9ydCBzeXMNCj4gPiAgcmVsb2FkKHN5cykNCj4gPiAgc3lzLnNldGRlZmF1bHRlbmNvZGlu ZygnVVRGOCcpDQo+ID4NCj4gPiArUFJPSkVDVF9NT0RVTEVfUFJFRklYID0gJ3Byb2plY3RfJw0K PiA+DQo+ID4gIGRlYnVnX21vZGUgPSBGYWxzZQ0KPiA+ICBjb25maWcgPSBOb25lDQo+ID4gQEAg LTczLDQ0ICs3NSwxMiBAQCByZXN1bHQgPSBOb25lDQo+ID4gIGV4Y2VsX3JlcG9ydCA9IE5vbmUN Cj4gPiAgc3RhdHMgPSBOb25lDQo+ID4gIGxvZ19oYW5kbGVyID0gTm9uZQ0KPiA+ICtQYWNrYWdl ID0gJycNCj4gPiArUGF0Y2hlcyA9IFtdDQo+ID4gIGRyaXZlcm5hbWUgPSAiIg0KPiA+ICBpbnRl cnJ1cHR0eXByID0gIiINCj4gPg0KPiA+DQo+ID4gLWRlZiBSRUQodGV4dCk6DQo+ID4gLSAgICBy ZXR1cm4gIlx4MUJbIiArICIzMTsxbSIgKyB0ZXh0ICsgIlx4MUJbIiArICIwbSINCj4gPiAtDQo+ ID4gLQ0KPiA+IC1kZWYgQkxVRSh0ZXh0KToNCj4gPiAtICAgIHJldHVybiAiXHgxQlsiICsgIjM2 OzFtIiArIHRleHQgKyAiXHgxQlsiICsgIjBtIg0KPiA+IC0NCj4gPiAtDQo+ID4gLWRlZiBHUkVF Tih0ZXh0KToNCj4gPiAtICAgIHJldHVybiAiXHgxQlsiICsgIjMyOzFtIiArIHRleHQgKyAiXHgx QlsiICsgIjBtIg0KPiA+IC0NCj4gPiAtDQo+ID4gLWRlZiByZWdleHAocywgdG9fbWF0Y2gsIGFs bFN0cmluZz1GYWxzZSk6DQo+ID4gLSAgICAiIiINCj4gPiAtICAgIEVuc3VyZSB0aGF0IHRoZSBy ZSBgdG9fbWF0Y2gnIG9ubHkgaGFzIG9uZSBncm91cCBpbiBpdC4NCj4gPiAtICAgICIiIg0KPiA+ IC0NCj4gPiAtICAgIHNjYW5uZXIgPSByZS5jb21waWxlKHRvX21hdGNoLCByZS5ET1RBTEwpDQo+ ID4gLSAgICBpZiBhbGxTdHJpbmc6DQo+ID4gLSAgICAgICAgcmV0dXJuIHNjYW5uZXIuZmluZGFs bChzKQ0KPiA+IC0gICAgbSA9IHNjYW5uZXIuc2VhcmNoKHMpDQo+ID4gLSAgICBpZiBtIGlzIE5v bmU6DQo+ID4gLSAgICAgICAgbG9nX2hhbmRsZXIud2FybmluZygiRmFpbGVkIHRvIG1hdGNoICIg KyB0b19tYXRjaCArICIgaW4gdGhlDQo+ID4gc3RyaW5nICIgKyBzKQ0KPiA+IC0gICAgICAgIHJl dHVybiBOb25lDQo+ID4gLSAgICByZXR1cm4gbS5ncm91cCgxKQ0KPiA+IC0NCj4gPiAtDQo+ID4g LWRlZiBwcHJpbnQoc29tZV9kaWN0KToNCj4gPiAtICAgICIiIg0KPiA+IC0gICAgUHJpbnQgSlNP TiBmb3JtYXQgZGljdGlvbmFyeSBvYmplY3QuDQo+ID4gLSAgICAiIiINCj4gPiAtICAgIHJldHVy biBqc29uLmR1bXBzKHNvbWVfZGljdCwgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQ0KPiA+IC0N Cj4gPiAtDQo+ID4gIGRlZiByZXBvcnQodGV4dCwgZnJhbWU9RmFsc2UsIGFubmV4PUZhbHNlKToN Cj4gPiAgICAgICIiIg0KPiA+ICAgICAgU2F2ZSByZXBvcnQgdGV4dCBpbnRvIHJzdCBmaWxlLg0K PiA+IEBAIC0xMzIsMzYgKzEwMiw2IEBAIGRlZiBjbG9zZV9jcmJfc2Vzc2lvbnMoKToNCj4gPiAg ICAgIGxvZ19oYW5kbGVyLmluZm8oIkRUUyBlbmRlZCIpDQo+ID4NCj4gPg0KPiA+IC1kZWYgZ2V0 X25pY19kcml2ZXIocGNpX2lkKToNCj4gPiAtICAgICIiIg0KPiA+IC0gICAgUmV0dXJuIGxpbnV4 IGRyaXZlciBmb3Igc3BlY2lmaWVkIHBjaSBkZXZpY2UNCj4gPiAtICAgICIiIg0KPiA+IC0gICAg ZHJpdmVybGlzdCA9IGRpY3QoemlwKE5JQ1MudmFsdWVzKCksIERSSVZFUlMua2V5cygpKSkNCj4g PiAtICAgIHRyeToNCj4gPiAtICAgICAgICBkcml2ZXIgPSBEUklWRVJTW2RyaXZlcmxpc3RbcGNp X2lkXV0NCj4gPiAtICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiAtICAgICAgICBkcml2 ZXIgPSBOb25lDQo+ID4gLSAgICByZXR1cm4gZHJpdmVyDQo+ID4gLQ0KPiA+IC0NCj4gPiAtZGVm IGFjY2VwdGVkX25pYyhwY2lfaWQpOg0KPiA+IC0gICAgIiIiDQo+ID4gLSAgICBSZXR1cm4gVHJ1 ZSBpZiB0aGUgcGNpX2lkIGlzIGEga25vd24gTklDIGNhcmQgaW4gdGhlIHNldHRpbmdzDQo+IGZp bGUNCj4gPiBhbmQgaWYNCj4gPiAtICAgIGl0IGlzIHNlbGVjdGVkIGluIHRoZSBleGVjdXRpb24g ZmlsZSwgb3RoZXJ3aXNlIGl0IHJldHVybnMgRmFsc2UuDQo+ID4gLSAgICAiIiINCj4gPiAtICAg IGlmIHBjaV9pZCBub3QgaW4gTklDUy52YWx1ZXMoKToNCj4gPiAtICAgICAgICByZXR1cm4gRmFs c2UNCj4gPiAtDQo+ID4gLSAgICBpZiBuaWMgaXMgJ2FueSc6DQo+ID4gLSAgICAgICAgcmV0dXJu IFRydWUNCj4gPiAtDQo+ID4gLSAgICBlbHNlOg0KPiA+IC0gICAgICAgIGlmIHBjaV9pZCA9PSBO SUNTW25pY106DQo+ID4gLSAgICAgICAgICAgIHJldHVybiBUcnVlDQo+ID4gLQ0KPiA+IC0gICAg cmV0dXJuIEZhbHNlDQo+ID4gLQ0KPiA+IC0NCj4gPiAgZGVmIGdldF9jcmJfb3MoY3JiKToNCj4g PiAgICAgIGlmICdPUycgaW4gY3JiOg0KPiA+ICAgICAgICAgIHJldHVybiBjcmJbJ09TJ10NCj4g PiBAQCAtMjIwLDkgKzE2MCwxMCBAQCBkZWYgZ2V0X3Byb2plY3Rfb2JqKHByb2plY3RfbmFtZSwg c3VwZXJfY2xhc3MsDQo+ID4gY3JiSW5zdCwgc2VyaWFsaXplcik6DQo+ID4gICAgICAiIiINCj4g PiAgICAgIExvYWQgcHJvamVjdCBtb2R1bGUgYW5kIHJldHVybiBjcmIgaW5zdGFuY2UuDQo+ID4g ICAgICAiIiINCj4gPiArICAgIGdsb2JhbCBQUk9KRUNUX01PRFVMRV9QUkVGSVgNCj4gPiAgICAg IHByb2plY3Rfb2JqID0gTm9uZQ0KPiA+ICAgICAgdHJ5Og0KPiA+IC0gICAgICAgIHByb2plY3Rf bW9kdWxlID0gX19pbXBvcnRfXygicHJvamVjdF8iICsgcHJvamVjdF9uYW1lKQ0KPiA+ICsgICAg ICAgIHByb2plY3RfbW9kdWxlID0gX19pbXBvcnRfXyhQUk9KRUNUX01PRFVMRV9QUkVGSVggKw0K PiBwcm9qZWN0X25hbWUpDQo+ID4NCj4gPiAgICAgICAgICBmb3IgcHJvamVjdF9zdWJjbGFzc25h bWUsIHByb2plY3Rfc3ViY2xhc3MgaW4NCj4gPiBnZXRfc3ViY2xhc3Nlcyhwcm9qZWN0X21vZHVs ZSwgc3VwZXJfY2xhc3MpOg0KPiA+ICAgICAgICAgICAgICBwcm9qZWN0X29iaiA9IHByb2plY3Rf c3ViY2xhc3MoY3JiSW5zdCwgc2VyaWFsaXplcikNCj4gPiBAQCAtMjY3LDE5ICsyMDgsMjAgQEAg ZGVmIGR0c19sb2dfZXhlY3V0aW9uKGxvZ19oYW5kbGVyKToNCj4gPiAgICAgICAgICBwYXNzDQo+ ID4NCj4gPg0KPiA+IC1kZWYgZHRzX2NyYnNfaW5pdChjcmJJbnN0LCBza2lwX3NldHVwLCByZWFk X2NhY2hlLCBwcm9qZWN0LCBiYXNlX2RpciwNCj4gPiBuaWMpOg0KPiA+ICtkZWYgZHRzX2NyYnNf aW5pdChjcmJJbnN0LCBza2lwX3NldHVwLCByZWFkX2NhY2hlLCBwcm9qZWN0LCBiYXNlX2RpciwN Cj4gbmljLA0KPiA+IHZpcnR0eXBlKToNCj4gPiAgICAgICIiIg0KPiA+ICAgICAgQ3JlYXRlIGR0 cyBkdXQvdGVzdGVyIGluc3RhbmNlIGFuZCBpbml0aWFsaXplIHRoZW0uDQo+ID4gICAgICAiIiIN Cj4gPiAgICAgIGdsb2JhbCBkdXQNCj4gPiAgICAgIGdsb2JhbCB0ZXN0ZXINCj4gPiAtICAgIHNl cmlhbGl6ZXIuc2V0X3NlcmlhbGl6ZWRfZmlsZW5hbWUoJy4uLy4lcy5jYWNoZScgJQ0KPiBjcmJJ bnN0WydJUCddKQ0KPiA+ICsgICAgc2VyaWFsaXplci5zZXRfc2VyaWFsaXplZF9maWxlbmFtZSgn LiVzLmNhY2hlJyAlIGNyYkluc3RbJ0lQJ10pDQo+ID4gICAgICBzZXJpYWxpemVyLmxvYWRfZnJv bV9maWxlKCkNCj4gPg0KPiA+ICAgICAgZHV0ID0gZ2V0X3Byb2plY3Rfb2JqKHByb2plY3QsIER1 dCwgY3JiSW5zdCwgc2VyaWFsaXplcikNCj4gPiAgICAgIHRlc3RlciA9IGdldF9wcm9qZWN0X29i aihwcm9qZWN0LCBUZXN0ZXIsIGNyYkluc3QsIHNlcmlhbGl6ZXIpDQo+ID4gICAgICBkdXQudGVz dGVyID0gdGVzdGVyDQo+ID4gICAgICB0ZXN0ZXIuZHV0ID0gZHV0DQo+ID4gKyAgICBkdXQuc2V0 X3ZpcnR0eXBlKHZpcnR0eXBlKQ0KPiA+ICAgICAgZHV0LnNldF9zcGVlZHVwX29wdGlvbnMocmVh ZF9jYWNoZSwgc2tpcF9zZXR1cCkNCj4gPiAgICAgIGR1dC5zZXRfZGlyZWN0b3J5KGJhc2VfZGly KQ0KPiA+ICAgICAgZHV0LnNldF9uaWNfdHlwZShuaWMpDQo+ID4gQEAgLTMzNyw3ICsyNzksNiBA QCBkZWYgZHRzX3J1bl90YXJnZXQoY3JiSW5zdCwgdGFyZ2V0cywgdGVzdF9zdWl0ZXMsDQo+IG5p Yyk6DQo+ID4gICAgICAgICAgaWYgJ25pY190eXBlJyBub3QgaW4gcGFyYW1EaWN0Og0KPiA+ICAg ICAgICAgICAgICBwYXJhbURpY3RbJ25pY190eXBlJ10gPSAnYW55Jw0KPiA+ICAgICAgICAgICAg ICBuaWMgPSAnYW55Jw0KPiA+IC0gICAgICAgIHJlc3VsdC5uaWMgPSBuaWMNCj4gPg0KPiA+ICAg ICAgICAgIGR0c19ydW5fc3VpdGUoY3JiSW5zdCwgdGVzdF9zdWl0ZXMsIHRhcmdldCwgbmljKQ0K PiA+DQo+ID4gQEAgLTM1OSw3ICszMDAsOSBAQCBkZWYgZHRzX3J1bl9zdWl0ZShjcmJJbnN0LCB0 ZXN0X3N1aXRlcywgdGFyZ2V0LA0KPiBuaWMpOg0KPiA+ICAgICAgICAgICAgICB0ZXN0X21vZHVs ZSA9IF9faW1wb3J0X18oJ1Rlc3RTdWl0ZV8nICsgdGVzdF9zdWl0ZSkNCj4gPiAgICAgICAgICAg ICAgZm9yIHRlc3RfY2xhc3NuYW1lLCB0ZXN0X2NsYXNzIGluDQo+IGdldF9zdWJjbGFzc2VzKHRl c3RfbW9kdWxlLA0KPiA+IFRlc3RDYXNlKToNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgdGVz dF9zdWl0ZSA9IHRlc3RfY2xhc3MoZHV0LCB0ZXN0ZXIsIHRhcmdldCkNCj4gPiArICAgICAgICAg ICAgICAgIHRlc3Rfc3VpdGUgPSB0ZXN0X2NsYXNzKGR1dCwgdGVzdGVyLCB0YXJnZXQsDQo+IHRl c3Rfc3VpdGUpDQo+ID4gKyAgICAgICAgICAgICAgICByZXN1bHQubmljID0gdGVzdF9zdWl0ZS5u aWMNCj4gPiArDQo+ID4gICAgICAgICAgICAgICAgICBkdHNfbG9nX3Rlc3RzdWl0ZSh0ZXN0X3N1 aXRlLCBsb2dfaGFuZGxlciwNCj4gdGVzdF9jbGFzc25hbWUpDQo+ID4NCj4gPiAgICAgICAgICAg ICAgICAgIGxvZ19oYW5kbGVyLmluZm8oIlxuVEVTVCBTVUlURSA6ICIgKyB0ZXN0X2NsYXNzbmFt ZSkNCj4gPiBAQCAtMzg2LDcgKzMyOSw3IEBAIGRlZiBkdHNfcnVuX3N1aXRlKGNyYkluc3QsIHRl c3Rfc3VpdGVzLCB0YXJnZXQsDQo+IG5pYyk6DQo+ID4NCj4gPiAgZGVmIHJ1bl9hbGwoY29uZmln X2ZpbGUsIHBrZ05hbWUsIGdpdCwgcGF0Y2gsIHNraXBfc2V0dXAsDQo+ID4gICAgICAgICAgICAg IHJlYWRfY2FjaGUsIHByb2plY3QsIHN1aXRlX2RpciwgdGVzdF9jYXNlcywNCj4gPiAtICAgICAg ICAgICAgYmFzZV9kaXIsIG91dHB1dF9kaXIsIHZlcmJvc2UsIGRlYnVnKToNCj4gPiArICAgICAg ICAgICAgYmFzZV9kaXIsIG91dHB1dF9kaXIsIHZlcmJvc2UsIHZpcnR0eXBlLCBkZWJ1Zyk6DQo+ ID4gICAgICAiIiINCj4gPiAgICAgIE1haW4gcHJvY2VzcyBvZiBEVFMsIGl0IHdpbGwgcnVuIGFs bCB0ZXN0IHN1aXRlcyBpbiB0aGUgY29uZmlnDQo+IGZpbGUuDQo+ID4gICAgICAiIiINCj4gPiBA QCAtNDAwLDYgKzM0MywxMiBAQCBkZWYgcnVuX2FsbChjb25maWdfZmlsZSwgcGtnTmFtZSwgZ2l0 LCBwYXRjaCwNCj4gPiBza2lwX3NldHVwLA0KPiA+ICAgICAgZ2xvYmFsIHN0YXRzDQo+ID4gICAg ICBnbG9iYWwgbG9nX2hhbmRsZXINCj4gPiAgICAgIGdsb2JhbCBkZWJ1Z19tb2RlDQo+ID4gKyAg ICBnbG9iYWwgUGFja2FnZQ0KPiA+ICsgICAgZ2xvYmFsIFBhdGNoZXMNCj4gPiArDQo+ID4gKyAg ICAjIHNhdmUgZ2xvYmFsIHZhcmlhYmxlDQo+ID4gKyAgICBQYWNrYWdlID0gcGtnTmFtZQ0KPiA+ ICsgICAgUGF0Y2hlcyA9IHBhdGNoDQo+ID4NCj4gPiAgICAgICMgcHJlcGFyZSB0aGUgb3V0cHV0 IGZvbGRlcg0KPiA+ICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9kaXIpOg0KPiA+ IEBAIC00NjYsNyArNDE1LDggQEAgZGVmIHJ1bl9hbGwoY29uZmlnX2ZpbGUsIHBrZ05hbWUsIGdp dCwgcGF0Y2gsDQo+ID4gc2tpcF9zZXR1cCwNCj4gPiAgICAgICAgICByZXN1bHQuZHV0ID0gZHV0 SVANCj4gPg0KPiA+ICAgICAgICAgICMgaW5pdCBkdXQsIHRlc3RlciBjcmINCj4gPiAtICAgICAg ICBkdHNfY3Jic19pbml0KGNyYkluc3QsIHNraXBfc2V0dXAsIHJlYWRfY2FjaGUsIHByb2plY3Qs DQo+IGJhc2VfZGlyLA0KPiA+IG5pY3MpDQo+ID4gKyAgICAgICAgZHRzX2NyYnNfaW5pdCgNCj4g PiArICAgICAgICAgICAgY3JiSW5zdCwgc2tpcF9zZXR1cCwgcmVhZF9jYWNoZSwgcHJvamVjdCwg YmFzZV9kaXIsIG5pY3MsDQo+ID4gdmlydHR5cGUpDQo+ID4NCj4gPiAgICAgICAgICAjIFJ1biBE VVQgcHJlcmVxdWlzaXRlcw0KPiA+ICAgICAgICAgIGlmIGR0c19ydW5fcHJlcmVxdWlzdGllcyhw a2dOYW1lLCBwYXRjaCkgaXMgRmFsc2U6DQo+ID4gZGlmZiAtLWdpdCBhL2ZyYW1ld29yay9leGNl cHRpb24ucHkgYi9mcmFtZXdvcmsvZXhjZXB0aW9uLnB5DQo+ID4gaW5kZXggYmUzOGMxNi4uOThk ZWRmNCAxMDA2NDQNCj4gPiAtLS0gYS9mcmFtZXdvcmsvZXhjZXB0aW9uLnB5DQo+ID4gKysrIGIv ZnJhbWV3b3JrL2V4Y2VwdGlvbi5weQ0KPiA+IEBAIC00NiwzICs0NiwzMCBAQCBjbGFzcyBTU0hD b25uZWN0aW9uRXhjZXB0aW9uKEV4Y2VwdGlvbik6DQo+ID4NCj4gPiAgICAgIGRlZiBfX3N0cl9f KHNlbGYpOg0KPiA+ICAgICAgICAgIHJldHVybiAnRXJyb3IgdHJ5aW5nIHRvIGNvbm5lY3Qgd2l0 aCAlcycgJSBzZWxmLmhvc3QNCj4gPiArDQo+ID4gKw0KPiA+ICtjbGFzcyBTU0hTZXNzaW9uRGVh ZEV4Y2VwdGlvbihFeGNlcHRpb24pOg0KPiA+ICsNCj4gPiArICAgICIiIg0KPiA+ICsgICAgU1NI IHNlc3Npb24gaXMgbm90IGFsaXZlLg0KPiA+ICsgICAgSXQgY2FuIG5vIGxvbmdlciBiZSB1c2Vk Lg0KPiA+ICsgICAgIiIiDQo+ID4gKw0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Qp Og0KPiA+ICsgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QNCj4gPiArDQo+ID4gKyAgICBkZWYgX19z dHJfXyhzZWxmKToNCj4gPiArICAgICAgICByZXR1cm4gJ1NTSCBzZXNzaW9uIHdpdGggJXMgaGFz IGJlZW4gZGVhZCcgJSBzZWxmLmhvc3QNCj4gPiArDQo+ID4gKw0KPiA+ICtjbGFzcyBTdGFydFZN RmFpbGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6DQo+ID4gKw0KPiA+ICsgICAgIiIiDQo+ID4gKyAg ICBTdGFydCBWTSBmYWlsZWQuDQo+ID4gKyAgICAiIiINCj4gPiArDQo+ID4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgZXJyb3IpOg0KPiA+ICsgICAgICAgIHNlbGYuZXJyb3IgPSBlcnJvcg0KPiA+ ICsNCj4gPiArICAgIGRlZiBfX3N0cl9fKHNlbGYpOg0KPiA+ICsgICAgICAgIHJldHVybiByZXBy KHNlbGYuZXJyb3IpDQo+ID4gZGlmZiAtLWdpdCBhL2ZyYW1ld29yay9sb2dnZXIucHkgYi9mcmFt ZXdvcmsvbG9nZ2VyLnB5DQo+ID4gaW5kZXggMTgyOWUxOC4uNTU5N2UzMyAxMDA2NDQNCj4gPiAt LS0gYS9mcmFtZXdvcmsvbG9nZ2VyLnB5DQo+ID4gKysrIGIvZnJhbWV3b3JrL2xvZ2dlci5weQ0K PiA+IEBAIC0zNSw2ICszNSw5IEBAIGltcG9ydCBzeXMNCj4gPiAgaW1wb3J0IGluc3BlY3QNCj4g PiAgaW1wb3J0IHJlDQo+ID4NCj4gPiArZnJvbSBzZXR0aW5ncyBpbXBvcnQgTE9HX05BTUVfU0VQ DQo+ID4gK2Zyb20gdXRpbHMgaW1wb3J0IFJFRA0KPiA+ICsNCj4gPiAgIiIiDQo+ID4gIERUUyBs b2dnZXIgbW9kdWxlIHdpdGggc2V2ZXJhbCBsb2cgbGV2ZWwuIERUUyBmcmFtd29yayBhbmQgVGVz dFN1aXRlDQo+IGxvZw0KPiA+ICB3aWxsIHNhdmVkIGludG8gZGlmZmVyZW50IGxvZyBmaWxlcy4N Cj4gPiBAQCAtNTgsNiArNjEsOSBAQCBsb2dnaW5nLlNVSVRFX1RFU1RFUl9PVVRQVVQgPSBsb2dn aW5nLkRFQlVHICsgNA0KPiA+ICBsb2dnaW5nLkRUU19JWElBX0NNRCA9IGxvZ2dpbmcuSU5GTyAr IDUNCj4gPiAgbG9nZ2luZy5EVFNfSVhJQV9PVVRQVVQgPSBsb2dnaW5nLkRFQlVHICsgNQ0KPiA+ DQo+ID4gK2xvZ2dpbmcuRFRTX1ZJUlREVVRfQ01EID0gbG9nZ2luZy5JTkZPICsgNg0KPiA+ICts b2dnaW5nLkRUU19WSVJURFVUX09VVFBVVCA9IGxvZ2dpbmcuREVCVUcgKyA2DQo+ID4gKw0KPiA+ ICBsb2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19EVVRfQ01ELCAnRFRTX0RVVF9DTUQn KQ0KPiA+ICBsb2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19EVVRfT1VUUFVULCAnRFRT X0RVVF9PVVRQVVQnKQ0KPiA+ICBsb2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19EVVRf UkVTVUxULCAnRFRTX0RVVF9SRVNVVEwnKQ0KPiA+IEBAIC02Niw2ICs3MiwxMiBAQCBsb2dnaW5n LmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19URVNURVJfQ01ELA0KPiA+ICdEVFNfVEVTVEVSX0NN RCcpDQo+ID4gIGxvZ2dpbmcuYWRkTGV2ZWxOYW1lKGxvZ2dpbmcuRFRTX1RFU1RFUl9PVVRQVVQs ICdEVFNfVEVTVEVSX09VVFBVVCcpDQo+ID4gIGxvZ2dpbmcuYWRkTGV2ZWxOYW1lKGxvZ2dpbmcu RFRTX1RFU1RFUl9SRVNVTFQsICdEVFNfVEVTVEVSX1JFU1VMVCcpDQo+ID4NCj4gPiArbG9nZ2lu Zy5hZGRMZXZlbE5hbWUobG9nZ2luZy5EVFNfSVhJQV9DTUQsICdEVFNfSVhJQV9DTUQnKQ0KPiA+ ICtsb2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19JWElBX09VVFBVVCwgJ0RUU19JWElB X09VVFBVVCcpDQo+ID4gKw0KPiA+ICtsb2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19W SVJURFVUX0NNRCwgJ1ZJUlREVVRfQ01EJykNCj4gPiArbG9nZ2luZy5hZGRMZXZlbE5hbWUobG9n Z2luZy5EVFNfVklSVERVVF9PVVRQVVQsICdWSVJURFVUX09VVFBVVCcpDQo+ID4gKw0KPiA+ICBs b2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLlNVSVRFX0RVVF9DTUQsICdTVUlURV9EVVRfQ01E JykNCj4gPiAgbG9nZ2luZy5hZGRMZXZlbE5hbWUobG9nZ2luZy5TVUlURV9EVVRfT1VUUFVULCAn U1VJVEVfRFVUX09VVFBVVCcpDQo+ID4NCj4gPiBAQCAtODIsMTUgKzk0LDE4IEBAIHN0cmVhbV9m bXQgPQ0KPiAnJShjb2xvcilzJShsZXZlbG5hbWUpMjBzOiAlKG1lc3NhZ2UpcycgKw0KPiA+IFJF U0VUX0NPTE9SDQo+ID4gIGxvZ19kaXIgPSBOb25lDQo+ID4NCj4gPg0KPiA+IC1kZWYgUkVEKHRl eHQpOg0KPiA+IC0gICAgcmV0dXJuICJceDFCWyIgKyAiMzE7MW0iICsgdGV4dCArICJceDFCWyIg KyAiMG0iDQo+ID4gLQ0KPiA+IC0NCj4gPiAgZGVmIHNldF92ZXJib3NlKCk6DQo+ID4gICAgICBn bG9iYWwgdmVyYm9zZQ0KPiA+ICAgICAgdmVyYm9zZSA9IFRydWUNCj4gPg0KPiA+DQo+ID4gK2Rl ZiBhZGRfc2FsdChzYWx0LCBtc2cpOg0KPiA+ICsgICAgaWYgbm90IHNhbHQ6DQo+ID4gKyAgICAg ICAgcmV0dXJuIG1zZw0KPiA+ICsgICAgZWxzZToNCj4gPiArICAgICAgICByZXR1cm4gJ1slc10g JyAlIHNhbHQgKyBzdHIobXNnKQ0KPiA+ICsNCj4gPiArDQo+ID4gIGNsYXNzIEJhc2VMb2dnZXJB ZGFwdGVyKGxvZ2dpbmcuTG9nZ2VyQWRhcHRlcik6DQo+ID4gICAgICAiIiINCj4gPiAgICAgIFVw cGVyIGxheWVyIG9mIG9yaWdpbmFsIGxvZ2dpbmcgbW9kdWxlLg0KPiA+IEBAIC0xMzIsNiArMTQ3 LDEyIEBAIGNsYXNzIEJhc2VMb2dnZXJBZGFwdGVyKGxvZ2dpbmcuTG9nZ2VyQWRhcHRlcik6DQo+ ID4gICAgICBkZWYgZHRzX2l4aWFfb3V0cHV0KHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToN Cj4gPiAgICAgICAgICBzZWxmLmxvZyhsb2dnaW5nLkRUU19JWElBX09VVFBVVCwgbXNnLCAqYXJn cywgKiprd2FyZ3MpDQo+ID4NCj4gPiArICAgIGRlZiBkdHNfdmlydGR1dF9jbWQoc2VsZiwgbXNn LCAqYXJncywgKiprd2FyZ3MpOg0KPiA+ICsgICAgICAgIHNlbGYubG9nKGxvZ2dpbmcuRFRTX1ZJ UlREVVRfQ01ELCBtc2csICphcmdzLCAqKmt3YXJncykNCj4gPiArDQo+ID4gKyAgICBkZWYgZHRz X3ZpcnRkdXRfb3V0cHV0KHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToNCj4gPiArICAgICAg ICBzZWxmLmxvZyhsb2dnaW5nLkRUU19WSVJURFVUX09VVFBVVCwgbXNnLCAqYXJncywgKiprd2Fy Z3MpDQo+ID4gKw0KPiA+DQo+ID4gIGNsYXNzIENvbG9ySGFuZGxlcihsb2dnaW5nLlN0cmVhbUhh bmRsZXIpOg0KPiA+ICAgICAgIiIiDQo+ID4gQEAgLTE1MCw2ICsxNzEsOCBAQCBjbGFzcyBDb2xv ckhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKToNCj4gPiAgICAgICAgICBsb2dnaW5nLlNV SVRFX1RFU1RFUl9DTUQ6ICcnLCAgIyBTWVNURU0NCj4gPiAgICAgICAgICBsb2dnaW5nLkRUU19J WElBX0NNRDogJycsICAjIFNZU1RFTQ0KPiA+ICAgICAgICAgIGxvZ2dpbmcuRFRTX0lYSUFfT1VU UFVUOiAnJywgICMgU1lTVEVNDQo+ID4gKyAgICAgICAgbG9nZ2luZy5EVFNfVklSVERVVF9DTUQ6 ICcnLCAgIyBTWVNURU0NCj4gPiArICAgICAgICBsb2dnaW5nLkRUU19WSVJURFVUX09VVFBVVDog JycsICAjIFNZU1RFTQ0KPiA+ICAgICAgICAgIGxvZ2dpbmcuV0FSTjogJ1wwMzNbMDE7MzNtJywg ICMgQk9MRCBZRUxMT1cNCj4gPiAgICAgICAgICBsb2dnaW5nLkRUU19EVVRfUkVTVUxUOiAnXDAz M1swMTszNG0nLCAgIyBCT0xEIEJMVUUNCj4gPiAgICAgICAgICBsb2dnaW5nLkRUU19URVNURVJf UkVTVUxUOiAnXDAzM1swMTszNG0nLCAgIyBCT0xEIEJMVUUNCj4gPiBAQCAtMTg5LDYgKzIxMiw4 IEBAIGNsYXNzIERUU0xPRyhCYXNlTG9nZ2VyQWRhcHRlcik6DQo+ID4gICAgICAgICAgc2VsZi5j cmIgPSBjcmINCj4gPiAgICAgICAgICBzdXBlcihEVFNMT0csIHNlbGYpLl9faW5pdF9fKHNlbGYu bG9nZ2VyLCBkaWN0KGNyYj1zZWxmLmNyYikpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnNhbHQg PSAnJw0KPiA+ICsNCj4gPiAgICAgICAgICBzZWxmLmZoID0gTm9uZQ0KPiA+ICAgICAgICAgIHNl bGYuY2ggPSBOb25lDQo+ID4NCj4gPiBAQCAtMjIxLDI0ICsyNDYsMjggQEAgY2xhc3MgRFRTTE9H KEJhc2VMb2dnZXJBZGFwdGVyKToNCj4gPiAgICAgICAgICAiIiINCj4gPiAgICAgICAgICBEVFMg d2Fybm5pbmcgbGV2ZWwgbG9nIGZ1bmN0aW9uLg0KPiA+ICAgICAgICAgICIiIg0KPiA+ICsgICAg ICAgIG1lc3NhZ2UgPSBhZGRfc2FsdChzZWxmLnNhbHQsIG1lc3NhZ2UpDQo+ID4gICAgICAgICAg c2VsZi5sb2dnZXIubG9nKHNlbGYud2Fybl9sdmwsIG1lc3NhZ2UpDQo+ID4NCj4gPiAgICAgIGRl ZiBpbmZvKHNlbGYsIG1lc3NhZ2UpOg0KPiA+ICAgICAgICAgICIiIg0KPiA+ICAgICAgICAgIERU UyBpbmZvcm1hdGlvbiBsZXZlbCBsb2cgZnVuY3Rpb24uDQo+ID4gICAgICAgICAgIiIiDQo+ID4g KyAgICAgICAgbWVzc2FnZSA9IGFkZF9zYWx0KHNlbGYuc2FsdCwgbWVzc2FnZSkNCj4gPiAgICAg ICAgICBzZWxmLmxvZ2dlci5sb2coc2VsZi5pbmZvX2x2bCwgbWVzc2FnZSkNCj4gPg0KPiA+ICAg ICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOg0KPiA+ICAgICAgICAgICIiIg0KPiA+ICAgICAg ICAgIERUUyBlcnJvciBsZXZlbCBsb2cgZnVuY3Rpb24uDQo+ID4gICAgICAgICAgIiIiDQo+ID4g KyAgICAgICAgbWVzc2FnZSA9IGFkZF9zYWx0KHNlbGYuc2FsdCwgbWVzc2FnZSkNCj4gPiAgICAg ICAgICBzZWxmLmxvZ2dlci5sb2coc2VsZi5lcnJvcl9sdmwsIG1lc3NhZ2UpDQo+ID4NCj4gPiAg ICAgIGRlZiBkZWJ1ZyhzZWxmLCBtZXNzYWdlKToNCj4gPiAgICAgICAgICAiIiINCj4gPiAgICAg ICAgICBEVFMgZGVidWcgbGV2ZWwgbG9nIGZ1bmN0aW9uLg0KPiA+ICAgICAgICAgICIiIg0KPiA+ ICsgICAgICAgIG1lc3NhZ2UgPSBhZGRfc2FsdChzZWxmLnNhbHQsIG1lc3NhZ2UpDQo+ID4gICAg ICAgICAgc2VsZi5sb2dnZXIubG9nKHNlbGYuZGVidWdfbHZsLCBtZXNzYWdlKQ0KPiA+DQo+ID4g ICAgICBkZWYgc2V0X2xvZ2ZpbGVfcGF0aChzZWxmLCBwYXRoKToNCj4gPiBAQCAtMjcwLDE3ICsy OTksMzQgQEAgY2xhc3MgRFRTTE9HKEJhc2VMb2dnZXJBZGFwdGVyKToNCj4gPiAgICAgICAgICBj aCA9IENvbG9ySGFuZGxlcigpDQo+ID4gICAgICAgICAgc2VsZi5fX2xvZ19oYW5kZXIoZmgsIGNo KQ0KPiA+DQo+ID4gLSAgICAgICAgaWYgY3JiID09ICJkdXQiOg0KPiA+ICsgICAgICAgIGRlZiBz ZXRfc2FsdChjcmIsIHN0YXJ0X2ZsYWcpOg0KPiA+ICsgICAgICAgICAgICBpZiBMT0dfTkFNRV9T RVAgaW4gY3JiOg0KPiA+ICsgICAgICAgICAgICAgICAgb2xkID0gJyVzJXMnICUgKHN0YXJ0X2Zs YWcsIExPR19OQU1FX1NFUCkNCj4gPiArICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNhbHQ6 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zYWx0ID0gY3JiLnJlcGxhY2Uob2xkLCAn JywgMSkNCj4gPiArDQo+ID4gKyAgICAgICAgaWYgY3JiLnN0YXJ0c3dpdGgoJ2R1dCcpOg0KPiA+ ICAgICAgICAgICAgICBzZWxmLmluZm9fbHZsID0gbG9nZ2luZy5EVFNfRFVUX0NNRA0KPiA+ICAg ICAgICAgICAgICBzZWxmLmRlYnVnX2x2bCA9IGxvZ2dpbmcuRFRTX0RVVF9PVVRQVVQNCj4gPiAg ICAgICAgICAgICAgc2VsZi53YXJuX2x2bCA9IGxvZ2dpbmcuRFRTX0RVVF9SRVNVTFQNCj4gPiAt ICAgICAgICBlbGlmIGNyYiA9PSAidGVzdGVyIjoNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIHNl dF9zYWx0KGNyYiwgJ2R1dCcpDQo+ID4gKyAgICAgICAgZWxpZiBjcmIuc3RhcnRzd2l0aCgndGVz dGVyJyk6DQo+ID4gICAgICAgICAgICAgIHNlbGYuaW5mb19sdmwgPSBsb2dnaW5nLkRUU19URVNU RVJfQ01EDQo+ID4gICAgICAgICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2luZy5EVFNfVEVT VEVSX09VVFBVVA0KPiA+ICAgICAgICAgICAgICBzZWxmLndhcm5fbHZsID0gbG9nZ2luZy5EVFNf VEVTVEVSX1JFU1VMVA0KPiA+IC0gICAgICAgIGVsaWYgY3JiID09ICJpeGlhIjoNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgIHNldF9zYWx0KGNyYiwgJ3Rlc3RlcicpDQo+ID4gKyAgICAgICAgZWxp ZiBjcmIuc3RhcnRzd2l0aCgnaXhpYScpOg0KPiA+ICAgICAgICAgICAgICBzZWxmLmluZm9fbHZs ID0gbG9nZ2luZy5EVFNfSVhJQV9DTUQNCj4gPiAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19sdmwg PSBsb2dnaW5nLkRUU19JWElBX09VVFBVVA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgc2V0X3Nh bHQoY3JiLCAnaXhpYScpDQo+ID4gKyAgICAgICAgZWxpZiBjcmIuc3RhcnRzd2l0aCgndmlydGR1 dCcpOg0KPiA+ICsgICAgICAgICAgICBzZWxmLmluZm9fbHZsID0gbG9nZ2luZy5EVFNfVklSVERV VF9DTUQNCj4gPiArICAgICAgICAgICAgc2VsZi5kZWJ1Z19sdmwgPSBsb2dnaW5nLkRUU19WSVJU RFVUX09VVFBVVA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgc2V0X3NhbHQoY3JiLCAndmlydGR1 dCcpDQo+ID4gICAgICAgICAgZWxzZToNCj4gPiAgICAgICAgICAgICAgc2VsZi5lcnJvcl9sdmwg PSBsb2dnaW5nLkVSUk9SDQo+ID4gICAgICAgICAgICAgIHNlbGYud2Fybl9sdmwgPSBsb2dnaW5n LldBUk5JTkcNCj4gPiBAQCAtMjk2LDE1ICszNDIsMTggQEAgY2xhc3MgRFRTTE9HKEJhc2VMb2dn ZXJBZGFwdGVyKToNCj4gPiAgICAgICAgICBjaCA9IENvbG9ySGFuZGxlcigpDQo+ID4gICAgICAg ICAgc2VsZi5fX2xvZ19oYW5kZXIoZmgsIGNoKQ0KPiA+DQo+ID4gLSAgICAgICAgaWYgY3JiID09 ICJkdXQiOg0KPiA+ICsgICAgICAgIGlmIGNyYiA9PSAnZHV0JzoNCj4gPiAgICAgICAgICAgICAg c2VsZi5pbmZvX2x2bCA9IGxvZ2dpbmcuU1VJVEVfRFVUX0NNRA0KPiA+ICAgICAgICAgICAgICBz ZWxmLmRlYnVnX2x2bCA9IGxvZ2dpbmcuU1VJVEVfRFVUX09VVFBVVA0KPiA+IC0gICAgICAgIGVs aWYgY3JiID09ICJ0ZXN0ZXIiOg0KPiA+ICsgICAgICAgIGVsaWYgY3JiID09ICd0ZXN0ZXInOg0K PiA+ICAgICAgICAgICAgICBzZWxmLmluZm9fbHZsID0gbG9nZ2luZy5TVUlURV9URVNURVJfQ01E DQo+ID4gICAgICAgICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2luZy5TVUlURV9URVNURVJf T1VUUFVUDQo+ID4gLSAgICAgICAgZWxpZiBjcmIgPT0gIml4aWEiOg0KPiA+ICsgICAgICAgIGVs aWYgY3JiID09ICdpeGlhJzoNCj4gPiAgICAgICAgICAgICAgc2VsZi5pbmZvX2x2bCA9IGxvZ2dp bmcuRFRTX0lYSUFfQ01EDQo+ID4gICAgICAgICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2lu Zy5EVFNfSVhJQV9PVVRQVVQNCj4gPiArICAgICAgICBlbGlmIGNyYiA9PSAndmlydGR1dCc6DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuaW5mb19sdmwgPSBsb2dnaW5nLkRUU19WSVJURFVUX0NNRA0K PiA+ICsgICAgICAgICAgICBzZWxmLmRlYnVnX2x2bCA9IGxvZ2dpbmcuRFRTX1ZJUlREVVRfT1VU UFVUDQo+ID4NCj4gPiAgICAgIGRlZiBsb2dnZXJfZXhpdChzZWxmKToNCj4gPiAgICAgICAgICAi IiINCj4gPiBkaWZmIC0tZ2l0IGEvZnJhbWV3b3JrL21haW4ucHkgYi9mcmFtZXdvcmsvbWFpbi5w eQ0KPiA+IGluZGV4IDNlNDY3ZDAuLjA0OTZiMjAgMTAwNzU1DQo+ID4gLS0tIGEvZnJhbWV3b3Jr L21haW4ucHkNCj4gPiArKysgYi9mcmFtZXdvcmsvbWFpbi5weQ0KPiA+IEBAIC0xMTcsNiArMTE3 LDEwIEBAIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywNCj4gPiAgICAgICAgICAgICAgICAg ICAgICBoZWxwPSdlbmFibGUgdmVyYm9zZSBvdXRwdXQsIGFsbCBtZXNzYWdlIG91dHB1dA0KPiBv bg0KPiA+IHNjcmVlbicpDQo+ID4NCj4gPiArcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12aXJ0dHlw ZScsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0na3ZtJywNCj4gPiArICAgICAg ICAgICAgICAgICAgICBoZWxwPSdzZXQgdmlydCB0eXBlLHN1cHBvcnQgbGlidmlydCx4ZW4sa3Zt JykNCj4gPiArDQo+ID4gIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGVidWcnLA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgaGVscD0nZW5hYmxlIGRlYnVnIG1vZGUsIHVzZXIgY2FuIGVudGVyIGRlYnVnDQo+IG1v ZGUgaW4NCj4gPiBwcm9jZXNzJykNCj4gPiBAQCAtMTM2LDQgKzE0MCw1IEBAIGlmIGFyZ3MuZ2l0 IGlzIG5vdCBOb25lOg0KPiA+ICBkdHMucnVuX2FsbChhcmdzLmNvbmZpZ19maWxlLCBhcmdzLnNu YXBzaG90LCBhcmdzLmdpdCwNCj4gPiAgICAgICAgICAgICAgYXJncy5wYXRjaCwgYXJncy5za2lw X3NldHVwLCBhcmdzLnJlYWRfY2FjaGUsDQo+ID4gICAgICAgICAgICAgIGFyZ3MucHJvamVjdCwg YXJncy5zdWl0ZV9kaXIsIGFyZ3MudGVzdF9jYXNlcywNCj4gPiAtICAgICAgICAgICAgYXJncy5k aXIsIGFyZ3Mub3V0cHV0LCBhcmdzLnZlcmJvc2UsIGFyZ3MuZGVidWcpDQo+ID4gKyAgICAgICAg ICAgIGFyZ3MuZGlyLCBhcmdzLm91dHB1dCwgYXJncy52ZXJib3NlLGFyZ3MudmlydHR5cGUsDQo+ ID4gKyAgICAgICAgICAgIGFyZ3MuZGVidWcpDQo+ID4gZGlmZiAtLWdpdCBhL2ZyYW1ld29yay9w cm9qZWN0X2RwZGsucHkgYi9mcmFtZXdvcmsvcHJvamVjdF9kcGRrLnB5DQo+ID4gaW5kZXggODk2 MzkyNC4uNjdiZDQ5MiAxMDA2NDQNCj4gPiAtLS0gYS9mcmFtZXdvcmsvcHJvamVjdF9kcGRrLnB5 DQo+ID4gKysrIGIvZnJhbWV3b3JrL3Byb2plY3RfZHBkay5weQ0KPiA+IEBAIC0zOSw3ICszOSw3 IEBAIGZyb20gY3JiIGltcG9ydCBDcmINCj4gPiAgZnJvbSBkdXQgaW1wb3J0IER1dA0KPiA+ICBm cm9tIHRlc3RlciBpbXBvcnQgVGVzdGVyDQo+ID4gIGZyb20gbG9nZ2VyIGltcG9ydCBnZXRMb2dn ZXINCj4gPiAtZnJvbSBzZXR0aW5ncyBpbXBvcnQgSVhJQQ0KPiA+ICtmcm9tIHNldHRpbmdzIGlt cG9ydCBJWElBLCBhY2NlcHRlZF9uaWMNCj4gPg0KPiA+DQo+ID4gIGNsYXNzIERQREtkdXQoRHV0 KToNCj4gPiBAQCAtNTAsOCArNTAsOSBAQCBjbGFzcyBEUERLZHV0KER1dCk6DQo+ID4gICAgICAi IiINCj4gPg0KPiA+ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNyYiwgc2VyaWFsaXplcik6DQo+ ID4gLSAgICAgICAgc2VsZi5OQU1FID0gJ2R1dCcNCj4gPiArDQo+ID4gICAgICAgICAgc3VwZXIo RFBES2R1dCwgc2VsZikuX19pbml0X18oY3JiLCBzZXJpYWxpemVyKQ0KPiA+ICsgICAgICAgIHNl bGYudGVzdHBtZCA9IE5vbmUNCj4gPg0KPiA+ICAgICAgZGVmIHNldF90YXJnZXQoc2VsZiwgdGFy Z2V0KToNCj4gPiAgICAgICAgICAiIiINCj4gPiBAQCAtNjAsNiArNjEsNyBAQCBjbGFzcyBEUERL ZHV0KER1dCk6DQo+ID4gICAgICAgICAgU2V0IGh1Z2VwYWdlIG9uIERVVCBhbmQgaW5zdGFsbCBt b2R1bGVzIHJlcXVpcmVkIGJ5IERQREsuDQo+ID4gICAgICAgICAgQ29uZmlndXJlIGRlZmF1bHQg aXhnYmUgUE1EIGZ1bmN0aW9uLg0KPiA+ICAgICAgICAgICIiIg0KPiA+ICsgICAgICAgIHNlbGYu dGFyZ2V0ID0gdGFyZ2V0DQo+ID4gICAgICAgICAgc2VsZi5zZXRfdG9vbGNoYWluKHRhcmdldCkN Cj4gPg0KPiA+ICAgICAgICAgICMgc2V0IGVudiB2YXJpYWJsZQ0KPiA+IEBAIC05OSw3ICsxMDEs MTYgQEAgY2xhc3MgRFBES2R1dChEdXQpOg0KPiA+ICAgICAgICAgICAgICBvdXQgPSBzZWxmLnNl bmRfZXhwZWN0KCJsc21vZCB8IGdyZXAgaWdiX3VpbyIsICIjIikNCj4gPiAgICAgICAgICAgICAg aWYgImlnYl91aW8iIGluIG91dDoNCj4gPiAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9leHBl Y3QoInJtbW9kIC1mIGlnYl91aW8iLCAiIyIsIDcwKQ0KPiA+IC0gICAgICAgICAgICBzZWxmLnNl bmRfZXhwZWN0KCJpbnNtb2QgLi8iICsgdGFyZ2V0ICsNCj4gIi9rbW9kL2lnYl91aW8ua28iLA0K PiA+ICIjIiwgNjApDQo+ID4gKyAgICAgICAgICAgIGlmICJydGVfZG9tMF9tbSIgaW4gc2VsZi5z ZW5kX2V4cGVjdCgibHNtb2QgfGdyZXANCj4gPiBydGVfZG9tMF9tbSIsICIjIik6DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJybW1vZCAtZiBydGVfZG1vMF9tbSIsICIj IiwgNzApDQo+ID4gKyAgICAgICAgICAgIHNlbGYuc2VuZF9leHBlY3QoDQo+ID4gKyAgICAgICAg ICAgICAgICAiaW5zbW9kIC4vIiArIHRhcmdldCArICIva21vZC9pZ2JfdWlvLmtvIiwgIiMiLCA2 MCkNCj4gDQo+ICJydGVfZG9tMF9tbSIgbW9kdWxlIG9ubHkgY2FuIGJlIGJ1aWx0IG91dCB3aGVu IERPTTAgZW5hYmxlZCBpbiBEUERLDQo+IGNvbmZpZ3VyYXRpb24gZmlsZS4NCj4gV2Ugc2hvdWxk IG5vdCBleHBlY3RlZCBpdCBleGlzdGVkIGluIGhvc3QuIE1ha2Ugc3VyZSBET00wIGNvbmZpZ3Vy YXRpb24NCj4gZW5hYmxlZCBhbmQgYnVpbGQgdGFyZ2V0IHdpdGggbW9kaWZpZWQgY29uZmlndXJh dGlvbi4NCj4gDQoNClRoaXMgd2lsbCBiZSBjaGVja2VkIGlmIHRoZSAndmlydHR5cGUnIGlzIHNl dCB0byBiZSAneGVuJy4NCg0KPiANCj4gPiArICAgICAgICAgICAgaWYgc2VsZi52aXJ0dHlwZSA9 PSAneGVuJzoNCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9leHBlY3QoDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgImluc21vZCAuLyIgKyB0YXJnZXQgKyAiL2ttb2QvcnRlX2RvbTBf bW0ua28iLA0KPiAiIyIsDQo+ID4gNjApDQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRf ZXhwZWN0KA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHInZWNobyAxMDI0ID4gL3N5cy9rZXJu ZWwvbW0vZG9tMC1tbS9tZW1zaXplLQ0KPiA+IG1CL21lbXNpemUnLCAiIyIsIDcwKQ0KPiA+ICsN Cj4gQmV0dGVyIHRvIHVzZSBtYWNybyByZXBsYWNlIG9mIDEwMjQsIHRoZXNlIHNldHRpbmdzIHNo b3VsZCBiZSBkZWZpbmVkDQo+IGluIHNldHRpbmdzLnB5Lg0KDQpPaywgSSB3aWxsIGRlZmluZSBp dCBpbiB0aGUgc2V0dGluZy5weS4NCg0KPiANCj4gPiAgICAgICAgICAgICAgb3V0ID0gc2VsZi5z ZW5kX2V4cGVjdCgibHNtb2QgfCBncmVwIGlnYl91aW8iLCAiIyIpDQo+ID4gICAgICAgICAgICAg IGFzc2VydCAoImlnYl91aW8iIGluIG91dCksICJGYWlsZWQgdG8gaW5zbW9kIGlnYl91aW8iDQo+ ID4NCj4gPiBAQCAtMTEwLDcgKzEyMSw3IEBAIGNsYXNzIERQREtkdXQoRHV0KToNCj4gPiAgICAg ICAgICBiaW5kaW5nX2xpc3QgPSAnJw0KPiA+DQo+ID4gICAgICAgICAgZm9yIChwY2lfYnVzLCBw Y2lfaWQpIGluIHNlbGYucGNpX2RldmljZXNfaW5mbzoNCj4gPiAtICAgICAgICAgICAgaWYgZHRz LmFjY2VwdGVkX25pYyhwY2lfaWQpOg0KPiA+ICsgICAgICAgICAgICBpZiBhY2NlcHRlZF9uaWMo cGNpX2lkKToNCj4gPiAgICAgICAgICAgICAgICAgIGJpbmRpbmdfbGlzdCArPSAnJXMsJyAlIChw Y2lfYnVzKQ0KPiA+DQo+ID4gICAgICAgICAgc2VsZi5zZW5kX2V4cGVjdCgia2xkdW5sb2FkIGlm X2l4Z2JlLmtvIiwgIiMiKQ0KPiA+IEBAIC0xNTgsNiArMTY5LDkgQEAgY2xhc3MgRFBES2R1dChE dXQpOg0KPiA+ICAgICAgICAgICIiIg0KPiA+ICAgICAgICAgICMgY2xlYW4gYWxsDQo+ID4gICAg ICAgICAgc2VsZi5zZW5kX2V4cGVjdCgicm0gLXJmICIgKyB0YXJnZXQsICIjIikNCj4gPiArICAg ICAgICBpZiBzZWxmLnZpcnR0eXBlID09ICd4ZW4nOg0KPiA+ICsgICAgICAgICAgICBzZWxmLnNl bmRfZXhwZWN0KCJzZWQgLWkgLWUNCj4gPiAncy9DT05GSUdfUlRFX0xJQlJURV9YRU5fRE9NMD0u KiQvIg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkNPTkZJR19SVEVfTElC UlRFX1hFTl9ET00wPXkvJw0KPiA+IGNvbmZpZy9jb21tb25fbGludXhhcHAiLCAiIyAiLCAzMCkN Cj4gPg0KPiA+ICAgICAgICAgICMgY29tcGlsZQ0KPiA+ICAgICAgICAgIG91dCA9IHNlbGYuc2Vu ZF9leHBlY3QoIm1ha2UgLWogaW5zdGFsbCBUPSVzICVzIiAlICh0YXJnZXQsDQo+ID4gZXh0cmFf b3B0aW9ucyksICIjICIsIDEyMCkNCj4gPiBAQCAtMTc4LDkgKzE5Miw5IEBAIGNsYXNzIERQREtk dXQoRHV0KToNCj4gPiAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJybSAtcmYgIiArIHRhcmdl dCwgIiMiKQ0KPiA+DQo+ID4gICAgICAgICAgIyBjb21waWxlDQo+ID4gLSAgICAgICAgb3V0ID0g c2VsZi5zZW5kX2V4cGVjdCgibWFrZSAtaiAlZCBpbnN0YWxsIFQ9JXMgQ0M9Z2NjNDgiICUNCj4g PiAoc2VsZi5udW1iZXJfb2ZfY29yZXMsDQo+ID4gLQ0KPiA+IHRhcmdldCksDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIyIsIDEyMCkNCj4gPiArICAgICAgICBvdXQgPSBz ZWxmLnNlbmRfZXhwZWN0KA0KPiA+ICsgICAgICAgICAgICAibWFrZSAtaiAlZCBpbnN0YWxsIFQ9 JXMgQ0M9Z2NjNDgiICUNCj4gPiArICAgICAgICAgICAgKHNlbGYubnVtYmVyX29mX2NvcmVzLCB0 YXJnZXQpLCAiIyIsIDEyMCkNCj4gPg0KPiA+ICAgICAgICAgIGlmKCJFcnJvciIgaW4gb3V0IG9y ICJObyBydWxlIHRvIG1ha2UiIGluIG91dCk6DQo+ID4gICAgICAgICAgICAgIHNlbGYubG9nZ2Vy LmVycm9yKCJFUlJPUiAtIHRyeSB3aXRob3V0ICctaiciKQ0KPiA+IEBAIC0xOTEsMTAgKzIwNSw3 IEBAIGNsYXNzIERQREtkdXQoRHV0KToNCj4gPiAgICAgICAgICBhc3NlcnQgKCJFcnJvciIgbm90 IGluIG91dCksICJDb21waWxhdGlvbiBlcnJvci4uLiINCj4gPiAgICAgICAgICBhc3NlcnQgKCJO byBydWxlIHRvIG1ha2UiIG5vdCBpbiBvdXQpLCAiTm8gcnVsZSB0byBtYWtlDQo+IGVycm9yLi4u Ig0KPiA+DQo+ID4gLSAgICBkZWYgcHJlcmVxdWlzaXRlcyhzZWxmLCBwa2dOYW1lLCBwYXRjaCk6 DQo+ID4gLSAgICAgICAgIiIiDQo+ID4gLSAgICAgICAgQ29weSBEUERLIHBhY2thZ2UgdG8gRFVU IGFuZCBhcHBseSBwYXRjaCBmaWxlcy4NCj4gPiAtICAgICAgICAiIiINCj4gPiArICAgIGRlZiBw cmVwYXJlX3BhY2thZ2Uoc2VsZiwgcGtnTmFtZSwgcGF0Y2gpOg0KPiA+ICAgICAgICAgIGlmIG5v dCBzZWxmLnNraXBfc2V0dXA6DQo+ID4gICAgICAgICAgICAgIGFzc2VydCAob3MucGF0aC5pc2Zp bGUocGtnTmFtZSkgaXMgVHJ1ZSksICJJbnZhbGlkDQo+IHBhY2thZ2UiDQo+ID4NCj4gPiBAQCAt MjAyLDcgKzIxMyw3IEBAIGNsYXNzIERQREtkdXQoRHV0KToNCj4gPiAgICAgICAgICAgICAgIyBU b0RvOiBtYWtlIHRoaXMgY29uZmlndXJhYmxlDQo+ID4gICAgICAgICAgICAgIGRzdF9kaXIgPSAi L3RtcC8iDQo+ID4NCj4gPiAtICAgICAgICAgICAgb3V0ID0gc2VsZi5zZW5kX2V4cGVjdCgibHMg JXMgJiYgY2QgJXMiICUgKGRzdF9kaXIsDQo+IHBfZGlyKSwNCj4gPiArICAgICAgICAgICAgb3V0 ID0gc2VsZi5zZW5kX2V4cGVjdCgibGwgJXMgJiYgY2QgJXMiICUgKGRzdF9kaXIsDQo+IHBfZGly KSwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIyIsIHZlcmlmeT1U cnVlKQ0KPiBDb21tYW5kICJsbCIgbWF5IG5vdCBleGlzdGVkIG9uIGV2ZXJ5IE9TLCBwbGVhc2Ug anVzdCB1c2UgYmFzaWMgImxzIg0KPiBjb21tYW5kLg0KPiANCg0KT2ssIEkgd2lsbCBjaGFuZ2Ug aXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KDQo+ID4gICAgICAgICAgICAgIGlmIG91dCA9PSAt MToNCj4gPiAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRpcmVjdGlyeSAlcyBv ciAlcyBkb2VzIG5vdA0KPiBleGlzdCwiDQo+ID4gQEAgLTI0OSw2ICsyNjAsMTcgQEAgY2xhc3Mg RFBES2R1dChEdXQpOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNlbGYuYmFzZV9kaXIsIGRzdF9kaXIgKw0KPiBwKSwNCj4gPiAiIyAiKQ0KPiA+ICAg ICAgICAgICAgICAgICAgICAgIGFzc2VydCAiKioqKiIgbm90IGluIG91dA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc2Vzc2lvbi5jb3B5X2ZpbGVfdG8oImRlcC9hY2xydWxlLnRneiIsIGRz dF9kaXIpDQo+ID4gKyAgICAgICAgICAgICMgdW5wYWNrIGFjbCBydWxlDQo+ID4gKyAgICAgICAg ICAgIG91dCA9IHNlbGYuc2VuZF9leHBlY3QoInRhciB6eGYgJXNhY2xydWxlLnRneiAtQyAlcyIg JQ0KPiA+IChkc3RfZGlyLCBwX2RpciksICIjICIsIDIwLCB2ZXJpZnk9VHJ1ZSkNCj4gPiArICAg ICAgICAgICAgaWYgb3V0ID09IC0xOg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF cnJvcigiYWNsIHJ1bGUgZXh0cmFjdCBmYWlsdXJlISEhIikNCj4gPiArDQo+IA0KPiBUaGVzZSBm aWxlcyByZWxhdGVkIHdpdGggbDNmd2QgYWNsIHN1aXRlLCB3ZSBzaG91bGQgbWVyZ2VkIHRoZXNl IGZpbGVzDQo+IGluIGZvbGxvd2luZyB3aXRoIGFjbCBzdWl0ZS4NCj4gUGxlYXNlIHJlbW92ZSB0 aGVzZSBjb2RlcyBmcm9tIHlvdXIgcGF0Y2ggc2V0Lg0KDQpPaywgSSB3aWxsIHJlbW92ZSBpdCBp biB0aGUgbmV4dCB2ZXJzaW9uLg0KDQoNCj4gDQo+ID4gKyAgICBkZWYgcHJlcmVxdWlzaXRlcyhz ZWxmLCBwa2dOYW1lLCBwYXRjaCk6DQo+ID4gKyAgICAgICAgIiIiDQo+ID4gKyAgICAgICAgQ29w eSBEUERLIHBhY2thZ2UgdG8gRFVUIGFuZCBhcHBseSBwYXRjaCBmaWxlcy4NCj4gPiArICAgICAg ICAiIiINCj4gPiArICAgICAgICBzZWxmLnByZXBhcmVfcGFja2FnZShwa2dOYW1lLCBwYXRjaCkN Cj4gPiAgICAgICAgICBzZWxmLmR1dF9wcmVyZXF1aXNpdGVzKCkNCj4gPg0KPiA+ICAgICAgZGVm IGJpbmRfaW50ZXJmYWNlc19saW51eChzZWxmLCBkcml2ZXI9J2lnYl91aW8nLA0KPiBuaWNzX3Rv X2JpbmQ9Tm9uZSk6DQo+ID4gQEAgLTM1NCwxNiArMzc2LDIwIEBAIGNsYXNzIERQREt0ZXN0ZXIo VGVzdGVyKToNCj4gPiAgICAgICAgICAgICAgdG90YWxfaHVnZV9wYWdlcyA9IHNlbGYuZ2V0X3Rv dGFsX2h1Z2VfcGFnZXMoKQ0KPiA+ICAgICAgICAgICAgICBpZiB0b3RhbF9odWdlX3BhZ2VzID09 IDA6DQo+ID4gICAgICAgICAgICAgICAgICBzZWxmLm1vdW50X2h1Z2VfcGFnZXMoKQ0KPiA+IC0g ICAgICAgICAgICAgICAgc2VsZi5zZXRfaHVnZV9wYWdlcyg0MDk2KQ0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zZXRfaHVnZV9wYWdlcygxMDI0KQ0KPiA+DQo+ID4gICAgICAgICAgICAgIHNl bGYuc2Vzc2lvbi5jb3B5X2ZpbGVfdG8oImRlcC90Z2VuLnRneiIpDQo+ID4gICAgICAgICAgICAg IHNlbGYuc2Vzc2lvbi5jb3B5X2ZpbGVfdG8oImRlcC90Y2xjbGllbnQudGd6IikNCj4gPiArICAg ICAgICAgICAgc2VsZi5zZXNzaW9uLmNvcHlfZmlsZV90bygiZGVwL2FjbHBjYXAudGd6IikNCj4g PiAgICAgICAgICAgICAgIyB1bnBhY2sgdGdlbg0KPiA+ICAgICAgICAgICAgICBvdXQgPSBzZWxm LnNlbmRfZXhwZWN0KCJ0YXIgenhmIHRnZW4udGd6IiwgIiMgIikNCj4gPiAgICAgICAgICAgICAg YXNzZXJ0ICJFcnJvciIgbm90IGluIG91dA0KPiA+ICAgICAgICAgICAgICAjIHVucGFjayB0Y2xj bGllbnQNCj4gPiAgICAgICAgICAgICAgb3V0ID0gc2VsZi5zZW5kX2V4cGVjdCgidGFyIHp4ZiB0 Y2xjbGllbnQudGd6IiwgIiMgIikNCj4gPiAgICAgICAgICAgICAgYXNzZXJ0ICJFcnJvciIgbm90 IGluIG91dA0KPiANCj4gDQo+IFRoZXNlIGZpbGVzIHJlbGF0ZWQgd2l0aCBsM2Z3ZCBhY2wgc3Vp dGUsIHdlIHNob3VsZCBtZXJnZWQgdGhlc2UgZmlsZXMNCj4gaW4gZm9sbG93aW5nIHdpdGggYWNs IHN1aXRlLg0KPiBQbGVhc2UgcmVtb3ZlIHRoZXNlIGNvZGVzIGZyb20geW91ciBwYXRjaCBzZXQu DQoNCk9rLCBJIHdpbGwgcmVtb3ZlIGl0IGluIHRoZSBuZXh0IHZlcnNpb24uDQoNCj4gDQo+ID4g KyAgICAgICAgICAgICMgdW5wYWNsIEFDTCBwY2FwIGZpbGVzDQo+ID4gKyAgICAgICAgICAgIG91 dCA9IHNlbGYuc2VuZF9leHBlY3QoInRhciB6eGYgYWNscGNhcC50Z3oiLCAiIyAiKQ0KPiA+ICsg ICAgICAgICAgICBhc3NlcnQgIkVycm9yIiBub3QgaW4gb3V0DQo+ID4NCj4gPiAgICAgICAgICBz ZWxmLnNlbmRfZXhwZWN0KCJtb2Rwcm9iZSB1aW8iLCAiIyAiKQ0KPiA+DQo+ID4gQEAgLTM4Niwx MCArNDEyLDEwIEBAIGNsYXNzIERQREt0ZXN0ZXIoVGVzdGVyKToNCj4gPiAgICAgICAgICAiIiIN Cj4gPiAgICAgICAgICBodWdlcGFnZXNfc2l6ZSA9IHNlbGYuc2VuZF9leHBlY3QoImF3ayAnL0h1 Z2VwYWdlc2l6ZS8NCj4ge3ByaW50DQo+ID4gJDJ9JyAvcHJvYy9tZW1pbmZvIiwgIiMgIikNCj4g Pg0KPiA+IC0gICAgICAgIGlmIGludChodWdlcGFnZXNfc2l6ZSkgPCAoMTAyNCAqIDEwMjQpOg0K PiA+IC0gICAgICAgICAgICBhcmNoX2h1Z2VfcGFnZXMgPSBodWdlcGFnZXMgaWYgaHVnZXBhZ2Vz ID4gMCBlbHNlIDQwOTYNCj4gPiArICAgICAgICBpZiBpbnQoaHVnZXBhZ2VzX3NpemUpIDwgKDIw NDggKiAyMDQ4KToNCj4gPiArICAgICAgICAgICAgYXJjaF9odWdlX3BhZ2VzID0gaHVnZXBhZ2Vz IGlmIGh1Z2VwYWdlcyA+IDAgZWxzZSAyMDQ4DQo+IA0KPiBCZXR0ZXIgdG8gdXNlIG1hY3JvIHJl cGxhY2Ugb2YgMjA0OCwgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIGRlZmluZWQNCj4gaW4gc2V0 dGluZ3MucHkuDQoNCk9rLCBJIHdpbGwgY2hhbmdlIGl0IGluIHRoZSBuZXh0IHZlcnNpb24uDQoN Cj4gDQo+ID4gICAgICAgICAgICAgIHRvdGFsX2h1Z2VfcGFnZXMgPSBzZWxmLmdldF90b3RhbF9o dWdlX3BhZ2VzKCkNCj4gPg0KPiA+IC0gICAgICAgICAgICBzZWxmLm1vdW50X2h1Z2VfcGFnZXMo KQ0KPiA+IC0gICAgICAgICAgICBpZiB0b3RhbF9odWdlX3BhZ2VzICE9IGFyY2hfaHVnZV9wYWdl czoNCj4gPiAtICAgICAgICAgICAgICAgIHNlbGYuc2V0X2h1Z2VfcGFnZXMoYXJjaF9odWdlX3Bh Z2VzKQ0KPiA+ICsgICAgICAgIHNlbGYubW91bnRfaHVnZV9wYWdlcygpDQo+ID4gKyAgICAgICAg aWYgdG90YWxfaHVnZV9wYWdlcyAhPSBhcmNoX2h1Z2VfcGFnZXM6DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc2V0X2h1Z2VfcGFnZXMoYXJjaF9odWdlX3BhZ2VzKQ0KPiA+IC0tDQo+ID4gMS45LjAN Cg0K