From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 073089A9E for ; Tue, 19 May 2015 09:05:37 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP; 19 May 2015 00:05:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,456,1427785200"; d="scan'208";a="495400572" Received: from pgsmsx108.gar.corp.intel.com ([10.221.44.103]) by FMSMGA003.fm.intel.com with ESMTP; 19 May 2015 00:05:36 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by PGSMSX108.gar.corp.intel.com (10.221.44.103) with Microsoft SMTP Server (TLS) id 14.3.224.2; Tue, 19 May 2015 15:05:33 +0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.94]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.180]) with mapi id 14.03.0224.002; Tue, 19 May 2015 15:05:31 +0800 From: "Jiajia, SunX" To: "Liu, Yong" , "dts@dpdk.org" Thread-Topic: =?utf-8?B?W2R0c10gW+KAmGR0cy12MeKAmSAyLzldIE9wdGltaXplIHNzaCBjb25uZWN0?= =?utf-8?Q?ion?= Thread-Index: AQHQkSiPPOSpQa6ncEqplx/fI50StZ2AyeCAgACMSLCAAJm+AIAA8cuQ Date: Tue, 19 May 2015 07:05:30 +0000 Message-ID: References: <1431925646-1314-1-git-send-email-sunx.jiajia@intel.com> <1431925646-1314-3-git-send-email-sunx.jiajia@intel.com> <86228AFD5BCD8E4EBFD2B90117B5E81E10DE47C6@SHSMSX103.ccr.corp.intel.com> <86228AFD5BCD8E4EBFD2B90117B5E81E10DE4F0B@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <86228AFD5BCD8E4EBFD2B90117B5E81E10DE4F0B@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-cr-hashedpuzzle: AZSb BIom BUdI CE6L Cthg Epxt Ex0R FNAe HS9l H8fd Imwp JIbb JQpn JcVV Jnbt K17H; 1; ZAB0AHMAQABkAHAAZABrAC4AbwByAGcA; Sosha1_v1; 7; {A49EF431-B87E-4787-A5E8-8CDDCA861C1C}; cwB1AG4AeAAuAGoAaQBhAGoAaQBhAEAAaQBuAHQAZQBsAC4AYwBvAG0A; Tue, 19 May 2015 07:05:28 GMT; UgBFADoAIABbAGQAdABzAF0AIABbABggZAB0AHMALQB2ADEAGSAgADIALwA5AF0AIABPAHAAdABpAG0AaQB6AGUAIABzAHMAaAAgAGMAbwBuAG4AZQBjAHQAaQBvAG4A x-cr-puzzleid: {A49EF431-B87E-4787-A5E8-8CDDCA861C1C} 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+KAmGR0cy12MeKAmSAyLzldIE9wdGltaXplIHNzaCBjb25u?= =?utf-8?q?ection?= 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: Tue, 19 May 2015 07:05:39 -0000 T2ssIEkgd2lsbCB0cnkgdG8gZG8gaXQuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogTGl1LCBZb25nDQo+IFNlbnQ6IFR1ZXNkYXksIE1heSAxOSwgMjAxNSA4OjM5IEFN DQo+IFRvOiBKaWFqaWEsIFN1blg7IGR0c0BkcGRrLm9yZw0KPiBTdWJqZWN0OiBSRTogW2R0c10g W+KAmGR0cy12MeKAmSAyLzldIE9wdGltaXplIHNzaCBjb25uZWN0aW9uDQo+IA0KPiBKaWFqaWEs IGFib3V0IGdldF9vYmpfZnVuY3MsIGl04oCZcyBjb21tb24gZnVuY3Rpb24gYW5kIGNhbiBiZSBp bg0KPiB1dGlscy5weS4gV2hhdCBJIG1lYW4gaXMgdGhhdCBpbiBmcmVlX2FsbF9yZXNvdXJjZSwg ZG8gbm90IHVzZQ0KPiBnZXRfb2JqX2Z1bmNzIHRvIGV4dHJhY3QgYWxsIGZyZWUgZnVuY3Rpb25z Lg0KPiANCj4gSXQncyB1bmNsZWFyIGFib3V0IHdoYXQgbmVlZCB0byBiZSBmcmVlZCBhbmQgbWF5 YmUgd2lsbCBiZSBzZXF1ZW5jZQ0KPiBpc3N1ZS4NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiBGcm9tOiBKaWFqaWEsIFN1blgNCj4gPiBTZW50OiBNb25kYXksIE1heSAx OCwgMjAxNSAzOjQzIFBNDQo+ID4gVG86IExpdSwgWW9uZzsgZHRzQGRwZGsub3JnDQo+ID4gU3Vi amVjdDogUkU6IFtkdHNdIFvigJhkdHMtdjHigJkgMi85XSBPcHRpbWl6ZSBzc2ggY29ubmVjdGlv bg0KPiA+DQo+ID4gSGkgWW9uZywNCj4gPg0KPiA+IEkgaGF2ZSByZXBsaWVkIHRoZSBjb21tZW50 cyBhcyBiZWxvdy4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ IEZyb206IExpdSwgWW9uZw0KPiA+ID4gU2VudDogTW9uZGF5LCBNYXkgMTgsIDIwMTUgMzowNiBQ TQ0KPiA+ID4gVG86IEppYWppYSwgU3VuWDsgZHRzQGRwZGsub3JnDQo+ID4gPiBTdWJqZWN0OiBS RTogW2R0c10gW+KAmGR0cy12MeKAmSAyLzldIE9wdGltaXplIHNzaCBjb25uZWN0aW9uDQo+ID4g Pg0KPiA+ID4gSmlhamlhLA0KPiA+ID4gUGxlYXNlIHNlZSBteSBjb21tZW50cyBiZWxvdy4NCj4g PiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IGR0 cyBbbWFpbHRvOmR0cy1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2Ygc2ppYWppYXgNCj4g PiA+ID4gU2VudDogTW9uZGF5LCBNYXkgMTgsIDIwMTUgMTowNyBQTQ0KPiA+ID4gPiBUbzogZHRz QGRwZGsub3JnDQo+ID4gPiA+IFN1YmplY3Q6IFtkdHNdIFvigJhkdHMtdjHigJkgMi85XSBPcHRp bWl6ZSBzc2ggY29ubmVjdGlvbg0KPiA+ID4gPg0KPiA+ID4gPiBPcHRpbWl6ZSBjb25maWd1cmUg cGFyc2UNCj4gPiA+ID4NCj4gPiA+ID4gTW92ZSBzb21lIGZ1bmN0aW9ucyBpbiBkdHMgdG8gYW4g Y29tbW9uIHV0aWxzIG1vZHVsZQ0KPiA+ID4gPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBzamlh amlheCA8c3VueC5qaWFqaWFAaW50ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGZyYW1l d29yay9jb25maWcucHkgICAgICAgICB8IDE3MQ0KPiA+ID4gKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tDQo+ID4gPiA+IC0tLS0tDQo+ID4gPiA+ICBmcmFtZXdvcmsvc3No X2Nvbm5lY3Rpb24ucHkgfCAgIDUgKysNCj4gPiA+ID4gIGZyYW1ld29yay9zc2hfcGV4cGVjdC5w eSAgICB8ICA2MyArKysrKysrKysrKysrLS0tDQo+ID4gPiA+ICBmcmFtZXdvcmsvdXRpbHMucHkg ICAgICAgICAgfCAgNzcgKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gIDQgZmlsZXMgY2hh bmdlZCwgMjcwIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQ0KPiA+ID4gPiAgbW9kZSBj aGFuZ2UgMTAwNzU1ID0+IDEwMDY0NCBmcmFtZXdvcmsvY29uZmlnLnB5DQo+ID4gPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZnJhbWV3b3JrL3V0aWxzLnB5DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYg LS1naXQgYS9mcmFtZXdvcmsvY29uZmlnLnB5IGIvZnJhbWV3b3JrL2NvbmZpZy5weQ0KPiA+ID4g PiBvbGQgbW9kZSAxMDA3NTUNCj4gPiA+ID4gbmV3IG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4 IGQyNTQ4ZTguLjkyN2M4NDYNCj4gPiA+ID4gLS0tIGEvZnJhbWV3b3JrL2NvbmZpZy5weQ0KPiA+ ID4gPiArKysgYi9mcmFtZXdvcmsvY29uZmlnLnB5DQo+ID4gPiA+IEBAIC0zNyw0NSArMzcsMTMz IEBAIGltcG9ydCByZQ0KPiA+ID4gPiAgaW1wb3J0IENvbmZpZ1BhcnNlciAgIyBjb25maWcgcGFy c2UgbW9kdWxlDQo+ID4gPiA+ICBpbXBvcnQgYXJncGFyc2UgICAgICAjIHByYXNlIGFyZ3VtZW50 cyBtb2R1bGUNCj4gPiA+ID4NCj4gPiA+ID4gLXBvcnRjb25mID0gImNvbmYvcG9ydHMuY2ZnIg0K PiA+ID4gPiAtY3JiY29uZiA9ICJjb25mL2NyYnMuY2ZnIg0KPiA+ID4gPiArUE9SVENPTkYgPSAi Y29uZi9wb3J0cy5jZmciDQo+ID4gPiA+ICtDUkJDT05GID0gImNvbmYvY3Jicy5jZmciDQo+ID4g PiA+ICtWSVJUQ09ORiA9ICJjb25mL3ZpcnRfZ2xvYmFsLmNmZyINCj4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gIGNsYXNzIFVzZXJDb25mKCk6DQo+ID4gPiA+DQo+ID4gPiA+IC0gICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBvcnRfY29uZj1wb3J0Y29uZiwgY3JiX2NvbmY9Y3JiY29uZik6DQo+ID4g PiA+IC0gICAgICAgIHNlbGYucG9ydF9jb25maWcgPSBwb3J0X2NvbmYNCj4gPiA+ID4gLSAgICAg ICAgc2VsZi5jcmJfY29uZmlnID0gY3JiX2NvbmYNCj4gPiA+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgY29uZmlnKToNCj4gPiA+ID4gKyAgICAgICAgc2VsZi5jb25mID0gQ29uZmlnUGFyc2Vy LlNhZmVDb25maWdQYXJzZXIoKQ0KPiA+ID4gPiArICAgICAgICBsb2FkX2ZpbGVzID0gc2VsZi5j b25mLnJlYWQoY29uZmlnKQ0KPiA+ID4gPiArICAgICAgICBpZiBsb2FkX2ZpbGVzID09IFtdOg0K PiA+ID4gPiArICAgICAgICAgICAgcHJpbnQgIkZBSUxFRCBMT0FESU5HICVzISEhIiAlIGNvbmZp Zw0KPiA+ID4gPiArICAgICAgICAgICAgc2VsZi5jb25mID0gTm9uZQ0KPiA+ID4gPiArICAgICAg ICAgICAgcmFpc2UNCj4gPiA+ID4gKw0KPiA+ID4NCj4gPiA+IFRoZXJlJ3MgbmVlZCBvbmUgc3Bl Y2lhbCBleGNlcHRpb24gZm9yIGNvbmZpZ3VyYXRpb24gcGFyc2VkIGZhaWx1cmUuDQo+ID4NCj4g PiBZZXMsIEkgdGhpbmsgaXQgaXMgZ29vZCB0byBkbyB0aGF0Lg0KPiA+DQo+ID4gPg0KPiA+ID4g PiArICAgIGRlZiBnZXRfc2VjdGlvbnMoc2VsZik6DQo+ID4gPiA+ICsgICAgICAgIGlmIHNlbGYu Y29uZiBpcyBOb25lOg0KPiA+ID4gPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgICAgICByZXR1cm4gc2VsZi5jb25mLnNlY3Rpb25zKCkNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgIGRlZiBsb2FkX3NlY3Rpb24oc2VsZiwgc2VjdGlvbik6DQo+ID4gPiA+ ICsgICAgICAgIGlmIHNlbGYuY29uZiBpcyBOb25lOg0KPiA+ID4gPiArICAgICAgICAgICAgcmV0 dXJuIE5vbmUNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICBpdGVtcyA9IE5vbmUNCj4gPiA+ ID4gKyAgICAgICAgZm9yIGNvbmZfc2VjdCBpbiBzZWxmLmNvbmYuc2VjdGlvbnMoKToNCj4gPiA+ ID4gKyAgICAgICAgICAgIGlmIGNvbmZfc2VjdCA9PSBzZWN0aW9uOg0KPiA+ID4gPiArICAgICAg ICAgICAgICAgIGl0ZW1zID0gc2VsZi5jb25mLml0ZW1zKHNlY3Rpb24pDQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgICAgICAgcmV0dXJuIGl0ZW1zDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBkZWYg bG9hZF9jb25maWcoc2VsZiwgaXRlbSk6DQo+ID4gPiA+ICsgICAgICAgIGNvbmZzID0gW2NvbmYu c3RyaXAoKSBmb3IgY29uZiBpbiBpdGVtLnNwbGl0KCc7JyldDQo+ID4gPiA+ICsgICAgICAgIGlm ICcnIGluIGNvbmZzOg0KPiA+ID4gPiArICAgICAgICAgICAgY29uZnMucmVtb3ZlKCcnKQ0KPiA+ ID4gPiArICAgICAgICByZXR1cm4gY29uZnMNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIGRlZiBs b2FkX3BhcmFtKHNlbGYsIGNvbmYpOg0KPiA+ID4gPiArICAgICAgICBwYXJhbURpY3QgPSBkaWN0 KCkNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICBmb3IgcGFyYW0gaW4gY29uZi5zcGxpdCgn LCcpOg0KPiA+ID4gPiArICAgICAgICAgICAgKGtleSwgXywgdmFsdWUpID0gcGFyYW0ucGFydGl0 aW9uKCc9JykNCj4gPiA+ID4gKyAgICAgICAgICAgIHBhcmFtRGljdFtrZXldID0gdmFsdWUNCj4g PiA+ID4gKyAgICAgICAgcmV0dXJuIHBhcmFtRGljdA0KPiA+ID4gPiArDQo+ID4gPiA+ICsNCj4g PiA+ID4gK2NsYXNzIFZpcnRDb25mKFVzZXJDb25mKToNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLCB2aXJ0X2NvbmY9VklSVENPTkYpOg0KPiA+ID4gPiArICAgICAg ICBzZWxmLmNvbmZpZ19maWxlID0gdmlydF9jb25mDQo+ID4gPiA+ICsgICAgICAgIHNlbGYudmly dF9jZmcgPSB7fQ0KPiA+ID4gPiArICAgICAgICB0cnk6DQo+ID4gPiA+ICsgICAgICAgICAgICBz ZWxmLnZpcnRfY29uZiA9IFVzZXJDb25mKHNlbGYuY29uZmlnX2ZpbGUpDQo+ID4gPiA+ICsgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiA+ID4gKyAgICAgICAgICAgIHByaW50ICJG QUlMRUQgTE9BRElORyBWSVJUIENPTkZJRyEhISINCj4gPiA+ID4gKyAgICAgICAgICAgIHNlbGYu dmlydF9jb25mID0gTm9uZQ0KPiA+ID4gPiArDQo+ID4gPiBUaGVyZSdzIG5lZWQgb25lIHNwZWNp YWwgZXhjZXB0aW9uIGZvciBjb25maWd1cmF0aW9uIHBhcnNlZCBmYWlsdXJlLg0KPiA+DQo+ID4g SSB3aWxsIGRvIGl0IGluIHRoZSBuZXh0IHZlcnNpb24uDQo+ID4NCj4gPiA+DQo+ID4gPiA+ICsg ICAgZGVmIGxvYWRfdmlydF9jb25maWcoc2VsZiwgbmFtZSk6DQo+ID4gPiA+ICsgICAgICAgIHNl bGYudmlydF9jZmdzID0gW10NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICB0cnk6DQo+ID4g PiA+ICsgICAgICAgICAgICB2aXJ0X2NvbmZzID0gc2VsZi52aXJ0X2NvbmYubG9hZF9zZWN0aW9u KG5hbWUpDQo+ID4gPiA+ICsgICAgICAgIGV4Y2VwdDoNCj4gPiA+ID4gKyAgICAgICAgICAgIHBy aW50ICJGQUlMRUQgRklORCBTRUNUSU9OICVzISEhIiAlIG5hbWUNCj4gPiA+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+ID4gPiArDQo+ID4gPiBBZGQgZXhjZXB0aW9uIGZvciBsb2FkIHNlY3Rp b24gZmFpbGVkLg0KPiA+DQo+ID4gSSB3aWxsIGRvIGl0IGluIHRoZSBuZXh0IHZlcnNpb24uDQo+ ID4NCj4gPiA+DQo+ID4gPiA+ICsgICAgICAgIGZvciB2aXJ0X2NvbmYgaW4gdmlydF9jb25mczoN Cj4gPiA+ID4gKyAgICAgICAgICAgIHZpcnRfY2ZnID0ge30NCj4gPiA+ID4gKyAgICAgICAgICAg IHZpcnRfcGFyYW1zID0gW10NCj4gPiA+ID4gKyAgICAgICAgICAgIGtleSwgY29uZmlnID0gdmly dF9jb25mDQo+ID4gPiA+ICsgICAgICAgICAgICBjb25mcyA9IHNlbGYudmlydF9jb25mLmxvYWRf Y29uZmlnKGNvbmZpZykNCj4gPiA+ID4gKyAgICAgICAgICAgIGZvciBjb25maWcgaW4gY29uZnM6 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgdmlydF9wYXJhbXMuYXBwZW5kKHNlbGYubG9hZF92 aXJ0X3BhcmFtKGNvbmZpZykpDQo+ID4gPiA+ICsgICAgICAgICAgICB2aXJ0X2NmZ1trZXldID0g dmlydF9wYXJhbXMNCj4gPiA+ID4gKyAgICAgICAgICAgIHNlbGYudmlydF9jZmdzLmFwcGVuZCh2 aXJ0X2NmZykNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIGRlZiBnZXRfdmlydF9jb25maWcoc2Vs Zik6DQo+ID4gPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpcnRfY2Zncw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgICAgZGVmIGxvYWRfdmlydF9wYXJhbShzZWxmLCBjb25maWcpOg0KPiA+ID4gPiAr ICAgICAgICBjZmdfcGFyYW1zID0gc2VsZi52aXJ0X2NvbmYubG9hZF9wYXJhbShjb25maWcpDQo+ ID4gPiA+ICsgICAgICAgIHJldHVybiBjZmdfcGFyYW1zDQo+ID4gPiA+ICsNCj4gPiA+ID4gKw0K PiA+ID4gPiArY2xhc3MgUG9ydENvbmYoVXNlckNvbmYpOg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfY29uZj1QT1JUQ09ORik6DQo+ID4gPiA+ICsgICAg ICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBwb3J0X2NvbmYNCj4gPiA+ID4gICAgICAgICAgc2VsZi5w b3J0c19jZmcgPSB7fQ0KPiA+ID4gPiAgICAgICAgICBzZWxmLnBjaV9yZWdleCA9ICIoW1xkYS1m XXsyfTpbXGRhLWZdezJ9LlxkezF9KSQiDQo+ID4gPiA+ICAgICAgICAgIHRyeToNCj4gPiA+ID4g LSAgICAgICAgICAgIHNlbGYucG9ydF9jb25mID0gQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJz ZXIoKQ0KPiA+ID4gPiAtICAgICAgICAgICAgc2VsZi5wb3J0X2NvbmYucmVhZChzZWxmLnBvcnRf Y29uZmlnKQ0KPiA+ID4gPiArICAgICAgICAgICAgc2VsZi5wb3J0X2NvbmYgPSBVc2VyQ29uZihz ZWxmLmNvbmZpZ19maWxlKQ0KPiA+ID4gPiAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 DQo+ID4gPiA+ICAgICAgICAgICAgICBwcmludCAiRkFJTEVEIExPQURJTkcgUE9SVCBDT05GSUch ISEiDQo+ID4gPiA+ICsgICAgICAgICAgICBzZWxmLnBvcnRfY29uZiA9IE5vbmUNCj4gPiA+ID4N Cj4gPiA+IFRoZXJlJ3MgbmVlZCBvbmUgc3BlY2lhbCBleGNlcHRpb24gZm9yIGNvbmZpZ3VyYXRp b24gcGFyc2VkIGZhaWx1cmUuDQo+ID4NCj4gPiBJIHdpbGwgZG8gaXQgaW4gdGhlIG5leHQgdmVy c2lvbi4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gICAgICBkZWYgbG9hZF9wb3J0c19jb25maWcoc2Vs ZiwgY3JiSVApOg0KPiA+ID4gPiAtICAgICAgICBwb3J0cyA9IFtdDQo+ID4gPiA+IC0gICAgICAg IGZvciBjcmIgaW4gc2VsZi5wb3J0X2NvbmYuc2VjdGlvbnMoKToNCj4gPiA+ID4gLSAgICAgICAg ICAgIGlmIGNyYiAhPSBjcmJJUDoNCj4gPiA+ID4gLSAgICAgICAgICAgICAgICBjb250aW51ZQ0K PiA+ID4gPiAtICAgICAgICAgICAgcG9ydHMgPSBbcG9ydC5zdHJpcCgpDQo+ID4gPiA+IC0gICAg ICAgICAgICAgICAgICAgICBmb3IgcG9ydCBpbiBzZWxmLnBvcnRfY29uZi5nZXQoY3JiLA0KPiA+ ID4gPiAncG9ydHMnKS5zcGxpdCgnOycpXQ0KPiA+ID4gPiArICAgICAgICBzZWxmLnBvcnRzX2Nm ZyA9IHt9DQo+ID4gPiA+ICsgICAgICAgIGlmIHNlbGYucG9ydF9jb25mIGlzIE5vbmU6DQo+ID4g PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICBwb3J0 cyA9IHNlbGYucG9ydF9jb25mLmxvYWRfc2VjdGlvbihjcmJJUCkNCj4gPiA+ID4gKyAgICAgICAg aWYgcG9ydHMgaXMgTm9uZToNCj4gPiA+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ID4gPiAr ICAgICAgICBrZXksIGNvbmZpZyA9IHBvcnRzWzBdDQo+ID4gPiA+ICsgICAgICAgIGNvbmZzID0g c2VsZi5wb3J0X2NvbmYubG9hZF9jb25maWcoY29uZmlnKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgICAgIGZvciBjb25maWcgaW4gY29uZnM6DQo+ID4gPiA+ICsgICAgICAgICAgICBwb3J0X3Bh cmFtID0gc2VsZi5wb3J0X2NvbmYubG9hZF9wYXJhbShjb25maWcpDQo+ID4gPiA+DQo+ID4gPiA+ IC0gICAgICAgIGZvciBwb3J0IGluIHBvcnRzOg0KPiA+ID4gPiAtICAgICAgICAgICAgcG9ydF9j ZmcgPSBzZWxmLl9fcGFyc2VfcG9ydF9wYXJhbShwb3J0KQ0KPiA+ID4gPiAgICAgICAgICAgICAg IyBjaGVjayBwY2kgQkRGIHZhbGlkaXR5DQo+ID4gPiA+IC0gICAgICAgICAgICBpZiAncGNpJyBu b3QgaW4gcG9ydF9jZmc6DQo+ID4gPiA+ICsgICAgICAgICAgICBpZiAncGNpJyBub3QgaW4gcG9y dF9wYXJhbToNCj4gPiA+ID4gICAgICAgICAgICAgICAgICBwcmludCAiTk9UIEZPVU5EIENPTkZJ RyBGT1IgTk8gUENJIEFERFJFU1MhISEiDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgY29udGlu dWUNCj4gPiA+ID4gLSAgICAgICAgICAgIG0gPSByZS5tYXRjaChzZWxmLnBjaV9yZWdleCwgcG9y dF9jZmdbJ3BjaSddKQ0KPiA+ID4gPiArICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHNlbGYucGNp X3JlZ2V4LCBwb3J0X3BhcmFtWydwY2knXSkNCj4gPiA+ID4gICAgICAgICAgICAgIGlmIG0gaXMg Tm9uZToNCj4gPiA+ID4gICAgICAgICAgICAgICAgICBwcmludCAiSU5WQUxJRCBDT05GSUcgRk9S IE5PIFBDSSBBRERSRVNTISEhIg0KPiA+ID4gPiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ ID4gPiA+DQo+ID4gPiA+IC0gICAgICAgICAgICBrZXlzID0gcG9ydF9jZmcua2V5cygpDQo+ID4g PiA+ICsgICAgICAgICAgICBrZXlzID0gcG9ydF9wYXJhbS5rZXlzKCkNCj4gPiA+ID4gICAgICAg ICAgICAgIGtleXMucmVtb3ZlKCdwY2knKQ0KPiA+ID4gPiAtICAgICAgICAgICAgc2VsZi5wb3J0 c19jZmdbcG9ydF9jZmdbJ3BjaSddXSA9IHtrZXk6IHBvcnRfY2ZnW2tleV0NCj4gPiA+IGZvciBr ZXkNCj4gPiA+ID4gaW4ga2V5c30NCj4gPiA+ID4gKyAgICAgICAgICAgIHNlbGYucG9ydHNfY2Zn W3BvcnRfcGFyYW1bJ3BjaSddXSA9IHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBrZXk6IHBv cnRfcGFyYW1ba2V5XSBmb3Iga2V5IGluIGtleXN9DQo+ID4gPiA+ICsgICAgICAgICAgICBpZiAn bnVtYScgaW4gc2VsZi5wb3J0c19jZmdbcG9ydF9wYXJhbVsncGNpJ11dOg0KPiA+ID4gPiArICAg ICAgICAgICAgICAgIG51bWFfc3RyID0NCj4gc2VsZi5wb3J0c19jZmdbcG9ydF9wYXJhbVsncGNp J11dWydudW1hJ10NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnBvcnRzX2NmZ1twb3J0 X3BhcmFtWydwY2knXV1bJ251bWEnXSA9DQo+ID4gPiBpbnQobnVtYV9zdHIpDQo+ID4gPiA+DQo+ ID4gPiA+ICAgICAgZGVmIGdldF9wb3J0c19jb25maWcoc2VsZik6DQo+ID4gPiA+ICAgICAgICAg IHJldHVybiBzZWxmLnBvcnRzX2NmZw0KPiA+ID4gPiBAQCAtODYsMjMgKzE3NCwzNiBAQCBjbGFz cyBVc2VyQ29uZigpOg0KPiA+ID4gPiAgICAgICAgICBlbHNlOg0KPiA+ID4gPiAgICAgICAgICAg ICAgcmV0dXJuIEZhbHNlDQo+ID4gPiA+DQo+ID4gPiA+IC0gICAgZGVmIF9fcGFyc2VfcG9ydF9w YXJhbShzZWxmLCBwb3J0KToNCj4gPiA+ID4gLSAgICAgICAgcG9ydERpY3QgPSBkaWN0KCkNCj4g PiA+ID4gLQ0KPiA+ID4gPiAtICAgICAgICBmb3IgcGFyYW0gaW4gcG9ydC5zcGxpdCgnLCcpOg0K PiA+ID4gPiAtICAgICAgICAgICAgKGtleSwgXywgdmFsdWUpID0gcGFyYW0ucGFydGl0aW9uKCc9 JykNCj4gPiA+ID4gLSAgICAgICAgICAgIGlmIGtleSA9PSAnbnVtYSc6DQo+ID4gPiA+IC0gICAg ICAgICAgICAgICAgcG9ydERpY3Rba2V5XSA9IGludCh2YWx1ZSkNCj4gPiA+ID4gLSAgICAgICAg ICAgIGVsc2U6DQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgcG9ydERpY3Rba2V5XSA9IHZhbHVl DQo+ID4gPiA+IC0gICAgICAgIHJldHVybiBwb3J0RGljdA0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+ICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0KPiA+ID4gPiAtICAg IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJMb2FkIERUUw0K PiA+ID4gY29uZmlndXJhdGlvbg0KPiA+ID4gPiBmaWxlcyIpDQo+ID4gPiA+IC0gICAgcGFyc2Vy LmFkZF9hcmd1bWVudCgiLXAiLCAiLS1wb3J0Y29uZiIsIGRlZmF1bHQ9cG9ydGNvbmYpDQo+ID4g PiA+IC0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWMiLCAiLS1jcmJjb25mIiwgZGVmYXVsdD1j cmJjb25mKQ0KPiA+ID4gPiArICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKA0K PiA+ID4gPiArICAgICAgICBkZXNjcmlwdGlvbj0iTG9hZCBEVFMgY29uZmlndXJhdGlvbiBmaWxl cyIpDQo+ID4gPiA+ICsgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXAiLCAiLS1wb3J0Y29uZiIs IGRlZmF1bHQ9UE9SVENPTkYpDQo+ID4gPiA+ICsgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWMi LCAiLS1jcmJjb25mIiwgZGVmYXVsdD1DUkJDT05GKQ0KPiA+ID4gPiArICAgIHBhcnNlci5hZGRf YXJndW1lbnQoIi12IiwgIi0tdmlydGNvbmYiLCBkZWZhdWx0PVZJUlRDT05GKQ0KPiA+ID4gPiAg ICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpDQo+ID4gPiA+IC0gICAgY29uZiA9IFVzZXJD b25mKCkNCj4gPiA+ID4gLSAgICBjb25mLmxvYWRfcG9ydHNfY29uZmlnKCcxOTIuMTY4LjEuMScp DQo+ID4gPiA+IC0gICAgY29uZi5jaGVja19wb3J0X2F2YWlsYWJsZSgnMDAwMDo4NjowMC4wJykN Cj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICMgbm90IGV4aXN0ZWQgY29uZmlndXJhdGlvbiBmaWxl DQo+ID4gPiA+ICsgICAgVmlydENvbmYoJy90bXAvbm90LWV4aXN0ZWQuY2ZnJykNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgICMgZXhhbXBsZSBmb3IgYmFzaWMgdXNlIGNvbmZpZ3VyYXRpb24gZmls ZQ0KPiA+ID4gPiArICAgIGNvbmYgPSBVc2VyQ29uZihQT1JUQ09ORikNCj4gPiA+ID4gKyAgICBm b3Igc2VjdGlvbiBpbiBjb25mLmdldF9zZWN0aW9ucygpOg0KPiA+ID4gPiArICAgICAgICBpdGVt cyA9IGNvbmYubG9hZF9zZWN0aW9uKHNlY3Rpb24pDQo+ID4gPiA+ICsgICAgICAgIGtleSwgdmFs dWUgPSBpdGVtc1swXQ0KPiA+ID4gPiArICAgICAgICBjb25mcyA9IGNvbmYubG9hZF9jb25maWco dmFsdWUpDQo+ID4gPiA+ICsgICAgICAgIGZvciBjb25maWcgaW4gY29uZnM6DQo+ID4gPiA+ICsg ICAgICAgICAgICBjb25mLmxvYWRfcGFyYW0oY29uZmlnKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgIyBleGFtcGxlIGZvciBwb3J0IGNvbmZpZ3VyYXRpb24gZmlsZQ0KPiA+ID4gPiArICAgIHBv cnRjb25mID0gUG9ydENvbmYoUE9SVENPTkYpDQo+ID4gPiA+ICsgICAgcG9ydGNvbmYubG9hZF9w b3J0c19jb25maWcoJ0RVVCBJUCcpDQo+ID4gPiA+ICsgICAgcHJpbnQgcG9ydGNvbmYuZ2V0X3Bv cnRzX2NvbmZpZygpDQo+ID4gPiA+ICsgICAgcG9ydGNvbmYuY2hlY2tfcG9ydF9hdmFpbGFibGUo Jzg2OjAwLjAnKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgIyBleGFtcGxlIGZvciBnbG9iYWwg dmlydHVhbGl6YXRpb24gY29uZmlndXJhdGlvbiBmaWxlDQo+ID4gPiA+ICsgICAgdmlydGNvbmYg PSBWaXJ0Q29uZihWSVJUQ09ORikNCj4gPiA+ID4gKyAgICB2aXJ0Y29uZi5sb2FkX3ZpcnRfY29u ZmlnKCdMSUJWSVJUJykNCj4gPiA+ID4gKyAgICBwcmludCB2aXJ0Y29uZi5nZXRfdmlydF9jb25m aWcoKQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZnJhbWV3b3JrL3NzaF9jb25uZWN0aW9uLnB5DQo+ ID4gPiBiL2ZyYW1ld29yay9zc2hfY29ubmVjdGlvbi5weQ0KPiA+ID4gPiBpbmRleCAxOGE2NTE3 Li43Mjg2YjE0IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9mcmFtZXdvcmsvc3NoX2Nvbm5lY3Rpb24u cHkNCj4gPiA+ID4gKysrIGIvZnJhbWV3b3JrL3NzaF9jb25uZWN0aW9uLnB5DQo+ID4gPiA+IEBA IC02Miw2ICs2MiwxMSBAQCBjbGFzcyBTU0hDb25uZWN0aW9uKG9iamVjdCk6DQo+ID4gPiA+ICAg ICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKG91dCkNCj4gPiA+ID4gICAgICAgICAgcmV0dXJuIG91 dA0KPiA+ID4gPg0KPiA+ID4gPiArICAgIGRlZiBnZXRfc2Vzc2lvbl9iZWZvcmUoc2VsZiwgdGlt ZW91dD0xNSk6DQo+ID4gPiA+ICsgICAgICAgIG91dCA9IHNlbGYuc2Vzc2lvbi5nZXRfc2Vzc2lv bl9iZWZvcmUodGltZW91dCkNCj4gPiA+ID4gKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcob3V0 KQ0KPiA+ID4gPiArICAgICAgICByZXR1cm4gb3V0DQo+ID4gPiA+ICsNCj4gPiA+DQo+ID4gPiBJ J3ZlIHNlbnQgb3V0IHRoaXMgcGF0Y2gsIHBsZWFzZSBtYWtlIHN1cmUgdGhlcmUncyBubyBnYXAg dGhlcmUuDQo+ID4gPiBZb3UnZCBiZXR0ZXIgcmVtb3ZlIHRob3NlIGZyb20geW91ciBwYXRjaCB3 b3JrLg0KPiA+ID4NCj4gPg0KPiA+IEFib3V0IHRoaXMsIEkgaGF2ZSBjaGVja2VkIGl0LCB5ZXMs IHlvdSBoYXZlIHNlbnQgaXQsIEkgd2lsbCByZW1vdmUNCj4gaXQNCj4gPiBmcm9tIG15IHBhdGNo IHdvcmsuDQo+ID4NCj4gPiA+ID4gICAgICBkZWYgY2xvc2Uoc2VsZik6DQo+ID4gPiA+ICAgICAg ICAgIHNlbGYuc2Vzc2lvbi5jbG9zZSgpDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9m cmFtZXdvcmsvc3NoX3BleHBlY3QucHkgYi9mcmFtZXdvcmsvc3NoX3BleHBlY3QucHkNCj4gPiA+ ID4gaW5kZXggNzM1ZGY0NC4uNDE5MzAyMCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZnJhbWV3b3Jr L3NzaF9wZXhwZWN0LnB5DQo+ID4gPiA+ICsrKyBiL2ZyYW1ld29yay9zc2hfcGV4cGVjdC5weQ0K PiA+ID4gPiBAQCAtMiw3ICsyLDggQEAgaW1wb3J0IHRpbWUNCj4gPiA+ID4gIGltcG9ydCBwZXhw ZWN0DQo+ID4gPiA+ICBpbXBvcnQgcHhzc2gNCj4gPiA+ID4gIGZyb20gZGVidWdnZXIgaW1wb3J0 IGlnbm9yZV9rZXlpbnRyLCBhd2FyZV9rZXlpbnRyDQo+ID4gPiA+IC1mcm9tIGV4Y2VwdGlvbiBp bXBvcnQgVGltZW91dEV4Y2VwdGlvbiwgU1NIQ29ubmVjdGlvbkV4Y2VwdGlvbg0KPiA+ID4gPiAr ZnJvbSBleGNlcHRpb24gaW1wb3J0IFRpbWVvdXRFeGNlcHRpb24sIFNTSENvbm5lY3Rpb25FeGNl cHRpb24sDQo+ID4gPiA+IFNTSFNlc3Npb25EZWFkRXhjZXB0aW9uDQo+ID4gPiA+ICtmcm9tIHV0 aWxzIGltcG9ydCBSRUQsIEdSRUVODQo+ID4gPiA+DQo+ID4gPiA+ICAiIiINCj4gPiA+ID4gIE1v ZHVsZSBoYW5kbGUgc3NoIHNlc3Npb25zIGJldHdlZW4gdGVzdGVyIGFuZCBEVVQuDQo+ID4gPiA+ IEBAIC0xNCwxNiArMTUsMjggQEAgQXNsbyBzdXBwb3J0IHRyYW5zZmVyIGZpbGVzIHRvIHRlc3Rl ciBvciBEVVQuDQo+ID4gPiA+ICBjbGFzcyBTU0hQZXhwZWN0KG9iamVjdCk6DQo+ID4gPiA+DQo+ ID4gPiA+ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHVzZXJuYW1lLCBwYXNzd29yZCk6 DQo+ID4gPiA+IC0gICAgICAgIHNlbGYubWFnaWNfcHJvbXB0ID0gIltNQUdJQyBQUk9NUFRdIg0K PiA+ID4gPiArICAgICAgICBzZWxmLm1hZ2ljX3Byb21wdCA9ICJNQUdJQyBQUk9NUFQiDQo+ID4g PiA+ICAgICAgICAgIHRyeToNCj4gPiA+ID4gICAgICAgICAgICAgIHNlbGYuc2Vzc2lvbiA9IHB4 c3NoLnB4c3NoKCkNCj4gPiA+ID4gLSAgICAgICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFt ZQ0KPiA+ID4gPiAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdA0KPiA+ID4gPiArICAgICAg ICAgICAgc2VsZi51c2VybmFtZSA9IHVzZXJuYW1lDQo+ID4gPiA+ICAgICAgICAgICAgICBzZWxm LnBhc3N3b3JkID0gcGFzc3dvcmQNCj4gPiA+ID4gLSAgICAgICAgICAgIHNlbGYuc2Vzc2lvbi5s b2dpbihzZWxmLmhvc3QsIHNlbGYudXNlcm5hbWUsDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5wYXNzd29yZCwNCj4gPiA+IG9yaWdpbmFsX3Byb21wdD0nWyQj Pl0nKQ0KPiA+ID4gPiArICAgICAgICAgICAgaWYgJzonIGluIGhvc3Q6DQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5pcCA9IGhvc3Quc3BsaXQoJzonKVswXQ0KPiA+ID4gPiArICAgICAg ICAgICAgICAgIHNlbGYucG9ydCA9IGludChob3N0LnNwbGl0KCc6JylbMV0pDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zZXNzaW9uLmxvZ2luKHNlbGYuaXAsIHNlbGYudXNlcm5hbWUs DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFzc3dv cmQsDQo+ID4gPiBvcmlnaW5hbF9wcm9tcHQ9J1skIz5dJywNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1zZWxmLnBvcnQsDQo+IGxvZ2luX3RpbWVvdXQ9 MjApDQo+ID4gPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ID4gPiArICAgICAgICAgICAgICAg IHNlbGYuc2Vzc2lvbi5sb2dpbihzZWxmLmhvc3QsIHNlbGYudXNlcm5hbWUsDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmQsDQo+ID4gPiBv cmlnaW5hbF9wcm9tcHQ9J1skIz5dJykNCj4gPiA+ID4gICAgICAgICAgICAgIHNlbGYuc2VuZF9l eHBlY3QoJ3N0dHkgLWVjaG8nLCAnIyAnLCB0aW1lb3V0PTIpDQo+ID4gPiA+IC0gICAgICAgIGV4 Y2VwdCBFeGNlcHRpb246DQo+ID4gPiA+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6DQo+ ID4gPiA+ICsgICAgICAgICAgICBwcmludCBSRUQoZSkNCj4gPiA+ID4gKyAgICAgICAgICAgIGlm IGdldGF0dHIoc2VsZiwgJ3BvcnQnLCBOb25lKToNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBz dWdnZXN0aW9uID0gIlxuU3VnZ2Vzc2lvbjogQ2hlY2sgaWYgdGhlDQo+IGZpcmV3YXJlIG9uDQo+ ID4gPiA+IFsgJXMgXSAiICUgXA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmlw ICsgImlzIHN0b3BlZFxuIg0KPiA+ID4gPiArICAgICAgICAgICAgICAgIHByaW50IEdSRUVOKHN1 Z2dlc3Rpb24pDQo+ID4gPiA+ICAgICAgICAgICAgICByYWlzZSBTU0hDb25uZWN0aW9uRXhjZXB0 aW9uKGhvc3QpDQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgZGVmIGluaXRfbG9nKHNlbGYsIGxvZ2dl ciwgbmFtZSk6DQo+ID4gPiA+IEBAIC0zMyw3ICs0Niw3IEBAIGNsYXNzIFNTSFBleHBlY3Qob2Jq ZWN0KToNCj4gPiA+ID4NCj4gPiA+ID4gICAgICBkZWYgc2VuZF9leHBlY3RfYmFzZShzZWxmLCBj b21tYW5kLCBleHBlY3RlZCwgdGltZW91dD0xNSk6DQo+ID4gPiA+ICAgICAgICAgIGlnbm9yZV9r ZXlpbnRyKCkNCj4gPiA+ID4gLSAgICAgICAgc2VsZi5fX2ZsdXNoKCkgIyBjbGVhciBidWZmZXIN Cj4gPiA+ID4gKyAgICAgICAgc2VsZi5fX2ZsdXNoKCkgICMgY2xlYXIgYnVmZmVyDQo+ID4gPiA+ ICAgICAgICAgIHNlbGYuc2Vzc2lvbi5QUk9NUFQgPSBleHBlY3RlZA0KPiA+ID4gPiAgICAgICAg ICBzZWxmLl9fc2VuZGxpbmUoY29tbWFuZCkNCj4gPiA+ID4gICAgICAgICAgc2VsZi5fX3Byb21w dChjb21tYW5kLCB0aW1lb3V0KQ0KPiA+ID4gPiBAQCAtNDUsNyArNTgsNyBAQCBjbGFzcyBTU0hQ ZXhwZWN0KG9iamVjdCk6DQo+ID4gPiA+ICAgICAgZGVmIHNlbmRfZXhwZWN0KHNlbGYsIGNvbW1h bmQsIGV4cGVjdGVkLCB0aW1lb3V0PTE1LA0KPiA+ID4gdmVyaWZ5PUZhbHNlKToNCj4gPiA+ID4g ICAgICAgICAgcmV0ID0gc2VsZi5zZW5kX2V4cGVjdF9iYXNlKGNvbW1hbmQsIGV4cGVjdGVkLCB0 aW1lb3V0KQ0KPiA+ID4gPiAgICAgICAgICBpZiB2ZXJpZnk6DQo+ID4gPiA+IC0gICAgICAgICAg ICByZXRfc3RhdHVzID0gc2VsZi5zZW5kX2V4cGVjdF9iYXNlKCJlY2hvICQ/IiwNCj4gZXhwZWN0 ZWQpDQo+ID4gPiA+ICsgICAgICAgICAgICByZXRfc3RhdHVzID0gc2VsZi5zZW5kX2V4cGVjdF9i YXNlKCJlY2hvICQ/IiwNCj4gZXhwZWN0ZWQsDQo+ID4gPiA+IHRpbWVvdXQpDQo+ID4gPiA+ICAg ICAgICAgICAgICBpZiBub3QgaW50KHJldF9zdGF0dXMpOg0KPiA+ID4gPiAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQNCj4gPiA+ID4gICAgICAgICAgICAgIGVsc2U6DQo+ID4gPiA+IEBAIC01 NCwyMSArNjcsNDQgQEAgY2xhc3MgU1NIUGV4cGVjdChvYmplY3QpOg0KPiA+ID4gPiAgICAgICAg ICBlbHNlOg0KPiA+ID4gPiAgICAgICAgICAgICAgcmV0dXJuIHJldA0KPiA+ID4gPg0KPiA+ID4g PiAtICAgIGRlZiBfX2ZsdXNoKHNlbGYpOg0KPiA+ID4gPiArICAgIGRlZiBnZXRfc2Vzc2lvbl9i ZWZvcmUoc2VsZiwgdGltZW91dD0xNSk6DQo+ID4gPiA+ICsgICAgICAgICIiIg0KPiA+ID4gPiAr ICAgICAgICBHZXQgYWxsIG91dHB1dCBiZWZvcmUgdGltZW91dA0KPiA+ID4gPiArICAgICAgICAi IiINCj4gPiA+ID4gKyAgICAgICAgaWdub3JlX2tleWludHIoKQ0KPiA+ID4gPiAgICAgICAgICBz ZWxmLnNlc3Npb24uUFJPTVBUID0gc2VsZi5tYWdpY19wcm9tcHQNCj4gPiA+ID4gLSAgICAgICAg c2VsZi5zZXNzaW9uLnByb21wdCgwLjEpDQo+ID4gPiA+ICsgICAgICAgIHRyeToNCj4gPiA+ID4g KyAgICAgICAgICAgIHNlbGYuc2Vzc2lvbi5wcm9tcHQodGltZW91dCkNCj4gPiA+ID4gKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOg0KPiA+ID4gPiArICAgICAgICAgICAgcGFzcw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgICAgICAgIGF3YXJlX2tleWludHIoKQ0KPiA+ID4gPiArICAgICAg ICBiZWZvcmUgPSBzZWxmLmdldF9vdXRwdXRfYmVmb3JlKCkNCj4gPiA+ID4gKyAgICAgICAgc2Vs Zi5fX2ZsdXNoKCkNCj4gPiA+ID4gKyAgICAgICAgcmV0dXJuIGJlZm9yZQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgICAgZGVmIF9fZmx1c2goc2VsZik6DQo+ID4gPiA+ICsgICAgICAgICIiIg0KPiA+ ID4gPiArICAgICAgICBDbGVhciBhbGwgc2Vzc2lvbiBidWZmZXINCj4gPiA+ID4gKyAgICAgICAg IiIiDQo+ID4gPiA+ICsgICAgICAgIHNlbGYuc2Vzc2lvbi5idWZmZXIgPSAiIg0KPiA+ID4gPiAr ICAgICAgICBzZWxmLnNlc3Npb24uYmVmb3JlID0gIiINCj4gPiA+ID4NCj4gPiA+ID4gICAgICBk ZWYgX19wcm9tcHQoc2VsZiwgY29tbWFuZCwgdGltZW91dCk6DQo+ID4gPiA+ICAgICAgICAgIGlm IG5vdCBzZWxmLnNlc3Npb24ucHJvbXB0KHRpbWVvdXQpOg0KPiA+ID4gPiAgICAgICAgICAgICAg cmFpc2UgVGltZW91dEV4Y2VwdGlvbihjb21tYW5kLA0KPiBzZWxmLmdldF9vdXRwdXRfYWxsKCkp DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgZGVmIF9fc2VuZGxpbmUoc2VsZiwgY29tbWFuZCk6DQo+ ID4gPiA+ICsgICAgICAgIGlmIG5vdCBzZWxmLmlzYWxpdmUoKToNCj4gPiA+ID4gKyAgICAgICAg ICAgIHJhaXNlIFNTSFNlc3Npb25EZWFkRXhjZXB0aW9uKHNlbGYuaG9zdCkNCj4gPiA+ID4gICAg ICAgICAgaWYgbGVuKGNvbW1hbmQpID09IDIgYW5kIGNvbW1hbmQuc3RhcnRzd2l0aCgnXicpOg0K PiA+ID4gPiAgICAgICAgICAgICAgc2VsZi5zZXNzaW9uLnNlbmRjb250cm9sKGNvbW1hbmRbMV0p DQo+ID4gPiA+ICAgICAgICAgIGVsc2U6DQo+ID4gPiA+ICAgICAgICAgICAgICBzZWxmLnNlc3Np b24uc2VuZGxpbmUoY29tbWFuZCkNCj4gPiA+ID4NCj4gPiA+ID4gICAgICBkZWYgZ2V0X291dHB1 dF9iZWZvcmUoc2VsZik6DQo+ID4gPiA+ICsgICAgICAgIGlmIG5vdCBzZWxmLmlzYWxpdmUoKToN Cj4gPiA+ID4gKyAgICAgICAgICAgIHJhaXNlIFNTSFNlc3Npb25EZWFkRXhjZXB0aW9uKHNlbGYu aG9zdCkNCj4gPiA+ID4gICAgICAgICAgc2VsZi5zZXNzaW9uLmZsdXNoKCkNCj4gPiA+ID4gICAg ICAgICAgYmVmb3JlID0gc2VsZi5zZXNzaW9uLmJlZm9yZS5yc3BsaXQoJ1xyXG4nLCAxKQ0KPiA+ ID4gPiAgICAgICAgICBpZiBiZWZvcmVbMF0gPT0gIltQRVhQRUNUXSI6DQo+ID4gPiA+IEBAIC0x MDMsNyArMTM5LDEyIEBAIGNsYXNzIFNTSFBleHBlY3Qob2JqZWN0KToNCj4gPiA+ID4gICAgICAg ICAgIiIiDQo+ID4gPiA+ICAgICAgICAgIFNlbmRzIGEgbG9jYWwgZmlsZSB0byBhIHJlbW90ZSBw bGFjZS4NCj4gPiA+ID4gICAgICAgICAgIiIiDQo+ID4gPiA+IC0gICAgICAgIGNvbW1hbmQgPSAn c2NwIHswfSB7MX1AezJ9OnszfScuZm9ybWF0KHNyYywNCj4gc2VsZi51c2VybmFtZSwNCj4gPiA+ ID4gc2VsZi5ob3N0LCBkc3QpDQo+ID4gPiA+ICsgICAgICAgIGlmICc6JyBpbiBzZWxmLmhvc3Q6 DQo+ID4gPiA+ICsgICAgICAgICAgICBjb21tYW5kID0gJ3NjcCAtUCB7MH0gLW8NCj4gPiA+IE5v SG9zdEF1dGhlbnRpY2F0aW9uRm9yTG9jYWxob3N0PXllcw0KPiA+ID4gPiB7MX0gezJ9QHszfTp7 NH0nLmZvcm1hdCgNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5wb3J0KSwgc3Jj LCBzZWxmLnVzZXJuYW1lLCBzZWxmLmlwLCBkc3QpDQo+ID4gPiA+ICsgICAgICAgIGVsc2U6DQo+ ID4gPiA+ICsgICAgICAgICAgICBjb21tYW5kID0gJ3NjcCB7MH0gezF9QHsyfTp7M30nLmZvcm1h dCgNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBzcmMsIHNlbGYudXNlcm5hbWUsIHNlbGYuaG9z dCwgZHN0KQ0KPiA+ID4gPiAgICAgICAgICBpZiBwYXNzd29yZCA9PSAnJzoNCj4gPiA+ID4gICAg ICAgICAgICAgIHNlbGYuX3NwYXduX3NjcChjb21tYW5kLCBzZWxmLnBhc3N3b3JkKQ0KPiA+ID4g PiAgICAgICAgICBlbHNlOg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZnJhbWV3b3JrL3V0aWxzLnB5 IGIvZnJhbWV3b3JrL3V0aWxzLnB5DQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g PiA+IGluZGV4IDAwMDAwMDAuLjU3ZWI5ODgNCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4g PiArKysgYi9mcmFtZXdvcmsvdXRpbHMucHkNCj4gPiA+ID4gQEAgLTAsMCArMSw3NyBAQA0KPiA+ ID4gPiArIyBCU0QgTElDRU5TRQ0KPiA+ID4gPiArIw0KPiA+ID4gPiArIyBDb3B5cmlnaHQoYykg MjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4g PiArIyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4gPiArIw0KPiA+ID4gPiArIyBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yDQo+IHdp dGhvdXQNCj4gPiA+ID4gKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZw0KPiBjb25kaXRpb25zDQo+ID4gPiA+ICsjIGFyZSBtZXQ6DQo+ID4g PiA+ICsjDQo+ID4gPiA+ICsjICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlDQo+IGNvcHlyaWdodA0KPiA+ID4gPiArIyAgICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0KPiBkaXNjbGFpbWVyLg0K PiA+ID4gPiArIyAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k dWNlIHRoZSBhYm92ZQ0KPiA+ID4gY29weXJpZ2h0DQo+ID4gPiA+ICsjICAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQo+IGRpc2NsYWltZXINCj4g PiA+IGluDQo+ID4gPiA+ICsjICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ID4gPiA+ICsjICAgICBkaXN0cmlidXRpb24uDQo+ ID4gPiA+ICsjICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0 aGUgbmFtZXMgb2YgaXRzDQo+ID4gPiA+ICsjICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzDQo+ID4gPiBkZXJpdmVkDQo+ID4gPiA+ICsj ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuDQo+ IHBlcm1pc3Npb24uDQo+ID4gPiA+ICsjDQo+ID4gPiA+ICsjIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiA+ID4gQ09OVFJJQlVUT1JTDQo+ ID4gPiA+ICsjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg SU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+ID4gPiA+ICsjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTDQo+ID4gPiBGT1IN Cj4gPiA+ID4gKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW RU5UIFNIQUxMIFRIRQ0KPiA+ID4gQ09QWVJJR0hUDQo+ID4gPiA+ICsjIE9XTkVSIE9SIENPTlRS SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiA+ID4gSU5DSURF TlRBTCwNCj4gPiA+ID4gKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiA+ID4gPiArIyBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GDQo+ID4g PiBVU0UsDQo+ID4gPiA+ICsjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EDQo+IE9ODQo+ID4gPiBBTlkNCj4gPiA+ID4gKyMgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg T1INCj4gPiA+IFRPUlQNCj4gPiA+ID4gKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUNCj4gPiA+IFVTRQ0KPiA+ID4g PiArIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0gNCj4gPiA+IERBTUFHRS4NCj4gPiA+ID4gKw0KPiA+ID4gPiAraW1wb3J0IGpzb24g ICAgICAgICAjIGpzb24gZm9ybWF0DQo+ID4gPiA+ICtpbXBvcnQgcmUNCj4gPiA+ID4gKw0KPiA+ ID4gPiArDQo+ID4gPiA+ICtkZWYgUkVEKHRleHQpOg0KPiA+ID4gPiArICAgIHJldHVybiAiXHgx QlsiICsgIjMxOzFtIiArIHN0cih0ZXh0KSArICJceDFCWyIgKyAiMG0iDQo+ID4gPiA+ICsNCj4g PiA+ID4gKw0KPiA+ID4gPiArZGVmIEJMVUUodGV4dCk6DQo+ID4gPiA+ICsgICAgcmV0dXJuICJc eDFCWyIgKyAiMzY7MW0iICsgc3RyKHRleHQpICsgIlx4MUJbIiArICIwbSINCj4gPiA+ID4gKw0K PiA+ID4gPiArDQo+ID4gPiA+ICtkZWYgR1JFRU4odGV4dCk6DQo+ID4gPiA+ICsgICAgcmV0dXJu ICJceDFCWyIgKyAiMzI7MW0iICsgc3RyKHRleHQpICsgIlx4MUJbIiArICIwbSINCj4gPiA+ID4g Kw0KPiA+ID4gPiArDQo+ID4gPiA+ICtkZWYgcHByaW50KHNvbWVfZGljdCk6DQo+ID4gPiA+ICsg ICAgIiIiDQo+ID4gPiA+ICsgICAgUHJpbnQgSlNPTiBmb3JtYXQgZGljdGlvbmFyeSBvYmplY3Qu DQo+ID4gPiA+ICsgICAgIiIiDQo+ID4gPiA+ICsgICAgcmV0dXJuIGpzb24uZHVtcHMoc29tZV9k aWN0LCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArZGVmIHJlZ2V4cChzLCB0b19tYXRjaCwgYWxsU3RyaW5nPUZhbHNlKToNCj4gPiA+ID4g KyAgICAiIiINCj4gPiA+ID4gKyAgICBFbnN1cmUgdGhhdCB0aGUgcmUgYHRvX21hdGNoJyBvbmx5 IGhhcyBvbmUgZ3JvdXAgaW4gaXQuDQo+ID4gPiA+ICsgICAgIiIiDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgICBzY2FubmVyID0gcmUuY29tcGlsZSh0b19tYXRjaCwgcmUuRE9UQUxMKQ0KPiA+ID4g PiArICAgIGlmIGFsbFN0cmluZzoNCj4gPiA+ID4gKyAgICAgICAgcmV0dXJuIHNjYW5uZXIuZmlu ZGFsbChzKQ0KPiA+ID4gPiArICAgIG0gPSBzY2FubmVyLnNlYXJjaChzKQ0KPiA+ID4gPiArICAg IGlmIG0gaXMgTm9uZToNCj4gPiA+ID4gKyAgICAgICAgcHJpbnQgUkVEKCJGYWlsZWQgdG8gbWF0 Y2ggIiArIHRvX21hdGNoICsgIiBpbiB0aGUNCj4gc3RyaW5nICINCj4gPiA+ICsgcykNCj4gPiA+ ID4gKyAgICAgICAgcmV0dXJuIE5vbmUNCj4gPiA+ID4gKyAgICByZXR1cm4gbS5ncm91cCgxKQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsNCj4gPiA+ID4gK2RlZiBnZXRfb2JqX2Z1bmNzKG9iaiwgZnVu Y19uYW1lX3JlZ2V4KToNCj4gPiA+ID4gKyAgICAiIiINCj4gPiA+ID4gKyAgICBSZXR1cm4gZnVu Y3Rpb24gbGlzdCB3aGljaCBuYW1lIG1hdGNoZWQgcmVnZXguDQo+ID4gPiA+ICsgICAgIiIiDQo+ ID4gPiA+ICsgICAgZm9yIGZ1bmNfbmFtZSBpbiBkaXIob2JqKToNCj4gPiA+ID4gKyAgICAgICAg ZnVuYyA9IGdldGF0dHIob2JqLCBmdW5jX25hbWUpDQo+ID4gPiA+ICsgICAgICAgIGlmIGNhbGxh YmxlKGZ1bmMpIGFuZCByZS5tYXRjaChmdW5jX25hbWVfcmVnZXgsDQo+ID4gPiBmdW5jLl9fbmFt ZV9fKToNCj4gPiA+ID4gKyAgICAgICAgICAgIHlpZWxkIGZ1bmMNCj4gPiA+ID4gLS0NCj4gPiA+ IFRoaXMgZnVuY3Rpb24gbm93IHVzZWQgdG8gZnJlZSByZXNvdXJjZSBvZiB2aXJ0dWFsaXphdGlv biBtYWNoaW5lLA0KPiBJDQo+ID4gPiB0aGluayBpdCdzIGJldHRlciB0byBjYWxsIGZyZWUgZnVu Y3Rpb25zIGRpcmVjdGx5Lg0KPiA+ID4gTWF5YmUgdGhlcmUgd2lsbCBiZSBkZXBlbmRlbmN5IG9m IHRoZXNlIGZyZWUgZnVuY3Rpb25zLiBXaGF0J3MgeW91cg0KPiA+ID4gaWRlYSBhYm91dCBpdD8N Cj4gPg0KPiA+IE5vLCBub3cgaXQgaXMganVzdCB1c2VkIG9uIHRoZSBtb2R1bGUgb2YgdmlydHVh bCByZXNvdXJjZS4NCj4gPiBCdXQgSSB0aGluayB0aGlzIGlzIGNvbW1vbiBmdW5jdGlvbiwgaXQg Y2FuIGJlIHVzZWQgaW4gb3RoZXIgbW9kdWxlDQo+IGlmDQo+ID4gdGhlcmUNCj4gPiBpcyBhIGRl bWFuZC4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gMS45LjANCg0K