From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 1A1CFA6A for ; Tue, 1 Sep 2015 02:57:55 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP; 31 Aug 2015 17:57:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,445,1437462000"; d="scan'208";a="552620607" Received: from pgsmsx104.gar.corp.intel.com ([10.221.44.91]) by FMSMGA003.fm.intel.com with ESMTP; 31 Aug 2015 17:57:53 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by PGSMSX104.gar.corp.intel.com (10.221.44.91) with Microsoft SMTP Server (TLS) id 14.3.224.2; Tue, 1 Sep 2015 08:57:52 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.171]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.210]) with mapi id 14.03.0224.002; Tue, 1 Sep 2015 08:57:50 +0800 From: "Xu, HuilongX" To: "Tu, LijuanX A" , "dts@dpdk.org" Thread-Topic: =?utf-8?B?W+KAmGR0c+KAmV0gICAgIEFkZCBtdWx0aXBsZSBwdGhyZWFkIHRlc3QgcGxh?= =?utf-8?Q?n_____Add_multiple_pthread_test_suite,?= Thread-Index: AQHQ49IDYWnXFXm4gkCra9BrO4Ebr54m0k2A Date: Tue, 1 Sep 2015 00:57:50 +0000 Message-ID: References: <1441014417-23495-1-git-send-email-lijuanx.a.tu@intel.com> In-Reply-To: <1441014417-23495-1-git-send-email-lijuanx.a.tu@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-cr-hashedpuzzle: mYQ= zhE= ANf0 Bbe5 B08Y E92E FCt/ F53R GAk9 GGwt H2Vr IFxC JKiR J9mz J+qh KieO; 1; ZAB0AHMAQABkAHAAZABrAC4AbwByAGcA; Sosha1_v1; 7; {B8CF037B-0421-4DC6-B6EF-0365ED165653}; aAB1AGkAbABvAG4AZwB4AC4AeAB1AEAAaQBuAHQAZQBsAC4AYwBvAG0A; Tue, 01 Sep 2015 00:57:48 GMT; UgBFADoAIABbABggZAB0AHMAGSBdACAAIAAgACAAIABBAGQAZAAgAG0AdQBsAHQAaQBwAGwAZQAgAHAAdABoAHIAZQBhAGQAIAB0AGUAcwB0ACAAcABsAGEAbgAgACAAIAAgACAAQQBkAGQAIABtAHUAbAB0AGkAcABsAGUAIABwAHQAaAByAGUAYQBkACAAdABlAHMAdAAgAHMAdQBpAHQAZQAsAA== x-cr-puzzleid: {B8CF037B-0421-4DC6-B6EF-0365ED165653} 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+KAmGR0c+KAmV0gICAgIEFkZCBtdWx0aXBsZSBwdGhyZWFk?= =?utf-8?q?_test_plan_____Add_multiple_pthread_test_suite=2C?= 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, 01 Sep 2015 00:57:57 -0000 SGkgbGlqdWFuLA0KUGxzIHNlZSBteSBjb21tZW50cyAgYXMgYmVsb3cuDQpUaGFua3MNCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUdSwgTGlqdWFuWCBBDQo+IFNlbnQ6 IE1vbmRheSwgQXVndXN0IDMxLCAyMDE1IDU6NDcgUE0NCj4gVG86IGR0c0BkcGRrLm9yZw0KPiBD YzogWHUsIEh1aWxvbmdYOyBUYW5nLCBIYWlmZW5nWDsgVHUsIExpanVhblggQQ0KPiBTdWJqZWN0 OiBb4oCYZHRz4oCZXSBBZGQgbXVsdGlwbGUgcHRocmVhZCB0ZXN0IHBsYW4gQWRkIG11bHRpcGxl IHB0aHJlYWQgdGVzdA0KPiBzdWl0ZSwNCj4gDQo+ICAgICBUaGVyZSdyZSB0aHJlZSBjYXNlcyBj b250YWluZWQgaW4gdGhpcyBzdWl0ZQ0KPiAgICAgMSlCYXNpYyBvcGVyYXRpb24NCj4gICAgIDIp UG9zaXRpdmUgVGVzdA0KPiAgICAgMylOZWdhdGl2ZSBUZXN0DQo+IA0KPiBTaWduZWQtb2ZmLWJ5 OiBMaWp1YW4gVHUgPGxpanVhbnguYS50dUBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgdGVzdF9wbGFu cy9tdWx0aXBsZV9wdGhyZWFkX3Rlc3RfcGxhbi5yc3QgfCAxMTcgKysrKysrKw0KPiAgdGVzdHMv VGVzdFN1aXRlX211bHRpcGxlX3B0aHJlYWQucHkgICAgICAgfCA0OTMNCj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDYxMCBpbnNlcnRpb25zKCsp DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdF9wbGFucy9tdWx0aXBsZV9wdGhyZWFkX3Rlc3Rf cGxhbi5yc3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9UZXN0U3VpdGVfbXVsdGlwbGVf cHRocmVhZC5weQ0KPiANCkNvdWxkIHlvdSBzcGxpdCBtYW55IHBhdGNoZXMgZm9yIGV2ZXJ5IGZp bGUgY2hhbmdlZCwgYW5kIGFkZCB0ZXN0IHN1aXRlIGluIGV4ZWN1dGlvbiBmaWxlPw0KIA0KPiBk aWZmIC0tZ2l0IGEvdGVzdF9wbGFucy9tdWx0aXBsZV9wdGhyZWFkX3Rlc3RfcGxhbi5yc3QNCj4g Yi90ZXN0X3BsYW5zL211bHRpcGxlX3B0aHJlYWRfdGVzdF9wbGFuLnJzdA0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5lZGUzZGFhDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvdGVzdF9wbGFucy9tdWx0aXBsZV9wdGhyZWFkX3Rlc3RfcGxhbi5yc3QNCj4gQEAgLTAs MCArMSwxMTcgQEANCj4gKy4uZg0KPiArICA8Q09QWVJJR0hUX1RBRz4NCj4gKw0KPiArPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiArTXVsdGlwbGUgUHRocmVhZCBUZXN0IEluc3Ry dWN0aW9ucw0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtDZ3Jv dXAgRnVuY3Rpb24gVGVzdA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiAr RGVzY3JpcHRpb24NCj4gKy0tLS0tLS0tLS0tDQo+ICsNCj4gK1RoaXMgdGVzdCBpcyBhIGJhc2lj IG11bHRpcGxlIHB0aHJlYWQgdGVzdCB3aGljaCBkZW1vbnN0cmF0ZXMgdGhlIGJhc2ljcw0KPiBv ZiBjb250cm9sIGdyb3VwLiBDZ3JvdXAgaXMgYSBMaW51eCBrZXJuZWwgZmVhdHVyZSB0aGF0IGxp bWl0cywgYWNjb3VudHMNCj4gZm9yIGFuZCBpc29sYXRlcyB0aGUgcmVzb3VyY2UgdXNhZ2UsIGxp a2UgQ1BVLCBtZW1vcnksIGRpc2sgSS9PLCBuZXR3b3JrLA0KPiBldGMgb2YgYSBjb2xsZWN0aW9u IG9mIHByb2Nlc3Nlcy4gTm93LCBpdCdzIGZvY3VzIG9uIHRoZSBDUFUgdXNhZ2UuDQo+ICsNCj4g K1ByZXJlcXVpc2l0ZXMNCj4gKy0tLS0tLS0tLS0tLS0NCj4gK1N1cHBvcnQgaWdiX3VpbyBkcml2 ZXIsIGtlcm5lbCBpcyAzLjExKy4gVXNlICJtb2RlcHJvYmUgdWlvIiAibW9kcHJvYmUNCj4gaWdi X3VpbyIgYW5kIHRoZW4gdXNlICIuL3Rvb2xzL2RwZGtfbmljX2JpbmQucHkgLS1iaW5kPWlnYl91 aW8NCj4gZGV2aWNlX2J1c19pZCIgdG8gYmluZCB0aGUgcG9ydHMuDQo+ICsNCj4gK0Fzc3VtaW5n IHRoYXQgYW4gSW50ZWzvv70gRFBESyBidWlsZCBoYXMgYmVlbiBzZXQgdXAgYW5kIHRoZSB0ZXN0 cG1kDQo+ICthcHBsaWNhdGlvbnMgaGF2ZSBiZWVuIGJ1aWx0Lg0KPiArDQo+ICtPcyByZXF1aXJl ZDogTGludXggYW5kIEZyZWVCU0QNCj4gKw0KPiArVGVzdCBDYXNlIDE6IEJhc2ljIG9wZXJhdGlv bg0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArVG8gcnVuIHRoZSBhcHBs aWNhdGlvbiwgc3RhcnQgdGhlIHRlc3RwbWQgd2l0aCB0aGUgbGNvcmVzcyBhbGwgcnVubmluZw0K PiB3aXRoIHRocmVhZHMgYW5kIGFsc28gdGhlIHVuaXF1ZSBjb3JlIGFzc2lnbmVkLCBjb21tYW5k IGFzIGZvbGxvd3M6Og0KPiArDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBw L3Rlc3RwbWQgLS1sY29yZXM9JzBAOCwoNC0NCj4gNSlAOScgLW4gNCAtLSAtaSAtLXBvcnRtYXNr PTB4Yw0KPiArCQlFQUw6IE1hc3RlciBsY29yZSAwIGlzIHJlYWR5ICh0aWQ9ZmZkNDkwMDtjcHVz ZXQ9WzhdKQ0KPiArCQlFQUw6IGxjb3JlIDQgaXMgcmVhZHkgKHRpZD04NzNlNzcwMDtjcHVzZXQ9 WzldKQ0KPiArCQlFQUw6IGxjb3JlIDUgaXMgcmVhZHkgKHRpZD04NzNlNzcwMDtjcHVzZXQ9Wzld KQ0KPiArVG8gY2hlY2sgdGhlIG91dHB1dCwgd2Ugc2hhbGwgbWFrZSBzdXJlIHRoZSBsY29yZSBh cmUgaW5pdCBvbiB0aGUgY29ycmVjdA0KPiBjcHUuIGUuZy4gRHVpbmcgSU5JVCBsb2cgd2UgY2Fu IGZvdW5kIGJlbG93Og0KPiArDQo+ICtUaGUgcHJvY2VzcyBzaG91bGQgc3RhcnQgc3VjY2Vzc2Z1 bGx5IGFuZCBkaXNwbGF5IGEgY29tbWFuZCBwcm9tcHQgYXMNCj4gZm9sbG93czo6DQo+ICsNCj4g KwkJLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtLWxjb3Jlcz0nMEA4 LCg0LQ0KPiA1KUA5JyAtbiA0IC0tIC1pIC0tcG9ydG1hc2s9MHhjDQo+ICsJCUNoZWNraW5nIGxp bmsgc3RhdHVzZXMuLi4NCj4gKwkJUG9ydCAwIExpbmsgVXAgLSBzcGVlZCAxMDAwMCBNYnBzIC0g ZnVsbC1kdXBsZXgNCj4gKwkJUG9ydCAxIExpbmsgVXAgLSBzcGVlZCAxMDAwMCBNYnBzIC0gZnVs bC1kdXBsZXgNCj4gKwkJRG9uZQ0KPiArDQo+ICtTdGFydCB0aGUgcGFja2V0IGZvcndhcmRpbmcg YXMgZm9sbG93cw0KPiArDQo+ICsJCXRlc3RwbWQ+c2V0IGZ3ZCBtYWMNCj4gKw0KPiArQmVmb3Jl IHJ1bm5pbmcgdGhlIHRlc3QsIG1ha2Ugc3VyZSB0aGUgY29yZSBpcyBhIHVuaXF1ZSBvbmUgb3Ro ZXJ3aXNlLA0KPiB0aGUgdGhyb3VnaHB1dCB3aWxsIGJlIGZsb2F0aW5nIG9uIGRpZmZlcmVudCBj b3JlcywgYW5vdGhlciB0aGluZyBpcyB0bw0KPiBtYWtlIHN1cmUgYWxsIHRoZSBsb2dpYyBjb3Jl cyBhcmUgcnVubmluZywgY29tbWFuZCBhcyBmb2xsb3dzOg0KPiArDQo+ICsJCXRlc3RwbWQ+c2V0 IGNvcmVsaXN0IDQsNQ0KPiArDQo+ICtwYXkgYXR0ZW50aW9uIHRoYXQgc2V0IGNvcmVsaXN0IG5l ZWQgdG8gYmUgY29uZmlndXJlZCBiZWZvcmUgc3RhcnQsDQo+IG90aGVyd2lzZSwgaXQgd2lsbCBu b3Qgd29yaw0KPiArDQo+ICsJCXRlc3RwbWQ+c3RhcnQNCj4gKw0KPiArCQl0ZXN0cG1kPnNob3cg Y29uZmlnIGZ3ZA0KPiArDQo+ICtVc2luZyB0aGUgY29tbWFuZCB0byBmaW5kIHRoZSB0aHJlYWRz IHRoYXQncyBydW5uaW5nLCBhcyBmb2xsb3dzOg0KPiArDQo+ICsJCXBzIC1DIHRlc3RwbWQgLUwg LW9waWQsdGlkLCVjcHUscHNyLGFyZ3MNCj4gKw0KPiArUmVzdWx0IGFzIGZvbGxvd3M6DQo+ICsN Cj4gKwkgICBQSUQgICAgVElEICVDUFUgUFNSIENPTU1BTkQNCj4gKwkxNzk0NTkgMTc5NDU5ICAw LjIgICA4IC4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS0NCj4gbGNv cmVzPTBAOCwoNC01KUA5IC1uIDQgLS0gLWkgLS1wb3J0bWFzaz0weGMNCj4gKwkxNzk0NTkgMTc5 NDYwICAwLjAgIDIxIC4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS0N Cj4gbGNvcmVzPTBAOCwoNC01KUA5IC1uIDQgLS0gLWkgLS1wb3J0bWFzaz0weGMNCj4gKwkxNzk0 NjEgIDAuMCAgMjEgLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtLQ0K PiBsY29yZXM9MEA4LCg0LTUpQDkgLW4gNCAtLSAtaSAtLXBvcnRtYXNrPTB4Yw0KPiArCTE3OTQ1 OSAxNzk0NjIgODAuNCAgIDkgLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBt ZCAtLQ0KPiBsY29yZXM9MEA4LCg0LTUpQDkgLW4gNCAtLSAtaSAtLXBvcnRtYXNrPTB4Yw0KPiAr CTE3OTQ1OSAxNzk0NjMgIDAuMCAgIDkgLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAv dGVzdHBtZCAtLQ0KPiBsY29yZXM9MEA4LCg0LTUpQDkgLW4gNCAtLSAtaSAtLXBvcnRtYXNrPTB4 Yw0KPiArDQo+ICtZb3Ugd2lsbCBzZWUgdGhhdCB0aGVyZSBhcmUgdHdvIHRocmVhZHMgcnVubmlu ZyBvbiBjb3JlIDkuIFRoZSBsYXN0IDINCj4gdGhyZWFkcyBhcmUgcnVubmluZyB0aHJlYWRzLCB0 aGVpciBUSUQgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgdGFza3MgaW4NCj4gdGhlIGZvbGRlciB0 aHJlYWQwLg0KPiArDQo+ICsJCWNkIC9zeXMvZnMvY2dyb3VwL2NwdS9kcGRrL3RocmVhZDANCj4g KwkJZWNobyAxNzk0NjIgPiB0YXNrcw0KPiArCQllY2hvIDE3OTQ2MyA+IHRhc2tzDQo+ICsNCj4g K0Fzc2dpbmVkIHRoZSBwZXJjZW50YWdlIG9mIGNwdSB0aGVzZSB0d28gdGhyZWFkcyBvY2N1cHkg YXMgZm9sbG93czoNCj4gKw0KPiArCQllY2hvIDEwMDAwID4gY3B1LmNmc19xdW90YV91cw0KPiAr DQo+ICtUaGlzIG1lYW5zIHRoZSB0d28gdGhyZWFkcyB3aWxsIHRvdGFsbHkgb2NjdXB5IDEwJSBv ZiB0aGUgQ1BVIGFuZCBlYWNoIDUlLg0KPiArDQo+ICsNCj4gK0JvdW5kYXJ5IFRlc3QNCj4gKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArVGVzdCBDYXNlIDI6IFBvc2l0aXZlIFRl c3QNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAr DQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9 JzBAOCwoNC0NCj4gNSlAKDgtMTEpJyAtbiA0IC0tIC1pIC0tdHhmcmVldD0zMiAtLXJ4ZnJlZXQ9 MzIgLS10eHFmbGFncz0weGYwMSAtLQ0KPiB0eHJzdD0zMg0KPiArCQkuL3g4Nl82NC1uYXRpdmUt bGludXhhcHAtZ2NjL2FwcC90ZXN0cG1kIC0tbGNvcmVzPScxLDJAKDAtDQo+IDQsNiksKDMtNCw2 KUA1LCg3LDgpJyAtbiA0IC0tIC1pIC0tdHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS0NCj4gdHhx ZmxhZ3M9MHhmMDEgLS10eHJzdD0zMg0KPiArCQkuL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2Nj L2FwcC90ZXN0cG1kIC0tDQo+IGxjb3Jlcz0nKDAsQ09ORklHX1JURV9NQVhfTENPUkUtMSlAKDQs NSknIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tDQo+IHJ4ZnJlZXQ9MzIgLS10eHFmbGFncz0w eGYwMSAtLXR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rl c3RwbWQgLS1sY29yZXM9JygwLDY0LQ0KPiA2NilAKDQsNSknIC1uIDQgLS0gLWkgLS10eGZyZWV0 PTMyIC0tcnhmcmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0tDQo+IHR4cnN0PTMyDQo+ICsJCS4v eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JzItNSw2LDct OScNCj4gLW4gNCAtLSAtaSAtLXR4ZnJlZXQ9MzIgLS1yeGZyZWV0PTMyIC0tdHhxZmxhZ3M9MHhm MDEgLS10eHJzdD0zMg0KPiArCQkuL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjL2FwcC90ZXN0 cG1kIC0tbGNvcmVzPScyLCAoMy01KUANCj4gMycgLW4gNCAtLSAtaSAtLXR4ZnJlZXQ9MzIgLS1y eGZyZWV0PTMyIC0tdHhxZmxhZ3M9MHhmMDEgLS10eHJzdD0zMg0KPiArDQo+ICsNCj4gK1Rlc3Qg Q2FzZSAzOiBOZWdhdGl2ZSBUZXN0DQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArCQkuL3g4Nl82NC1uYXRpdmUtbGludXhhcHAt Z2NjL2FwcC90ZXN0cG1kIC0tbGNvcmVzPScoMC0sNC0NCj4gNylAKDQsNSknIC1uIDQgLS0gLWkg LS10eGZyZWV0PTMyIC0tcnhmcmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0tdHhyc3Q9MzINCj4g KwkJLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtLWxjb3Jlcz0nKC0x LDQtDQo+IDcpQCg0LDUpJyAtbiA0IC0tIC1pIC0tdHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS10 eHFmbGFncz0weGYwMSAtLXR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1n Y2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JygwLDctDQo+IDQpQCg0LDUpJyAtbiA0IC0tIC1pIC0t dHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS10eHFmbGFncz0weGYwMSAtLXR4cnN0PTMyDQo+ICsJ CS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JygwLDQt Ny0NCj4gOSlAKDQsNSknIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tcnhmcmVldD0zMiAtLXR4 cWZsYWdzPTB4ZjAxIC0tdHhyc3Q9MzINCj4gKwkJLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdj Yy9hcHAvdGVzdHBtZCAtLQ0KPiBsY29yZXM9JygwLGFiY2QpQCg0LDUpJyAtbiA0IC0tIC1pIC0t dHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS0NCj4gdHhxZmxhZ3M9MHhmMDEgLS10eHJzdD0zMg0K PiArCQkuL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjL2FwcC90ZXN0cG1kIC0tbGNvcmVzPSco MCw0LQ0KPiA3KUAoMS0sNSknIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tcnhmcmVldD0zMiAt LXR4cWZsYWdzPTB4ZjAxIC0tDQo+IHR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51 eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JygwLDQtNylAKC0NCj4gMSw1KScgLW4gNCAt LSAtaSAtLXR4ZnJlZXQ9MzIgLS1yeGZyZWV0PTMyIC0tdHhxZmxhZ3M9MHhmMDEgLS10eHJzdD0z Mg0KPiArCQkuL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjL2FwcC90ZXN0cG1kIC0tbGNvcmVz PScoMCw0LQ0KPiA3KUAoNCw1LTgtOSknIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tcnhmcmVl dD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0tDQo+IHR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2 ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JygwLDQtDQo+IDcpQChhYmMsNSkn IC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tcnhmcmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0t DQo+IHR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3Rw bWQgLS1sY29yZXM9JygwLDQtDQo+IDcpQCg0LHh5eiknIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMy IC0tcnhmcmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0tDQo+IHR4cnN0PTMyDQo+ICsJCS4veDg2 XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JygwLDQtDQo+IDcp PSg4LDkpJyAtbiA0IC0tIC1pIC0tdHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS10eHFmbGFncz0w eGYwMSAtLXR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rl c3RwbWQgLS1sY29yZXM9JzIsM0A0LCgwLQ0KPiAxLCw0KSknIC1uIDQgLS0gLWkgLS10eGZyZWV0 PTMyIC0tcnhmcmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0tdHhyc3Q9MzINCj4gKwkJLi94ODZf NjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtLWxjb3Jlcz0nWzAtLDQtDQo+IDdd QCg0LDUpJyAtbiA0IC0tIC1pIC0tdHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS10eHFmbGFncz0w eGYwMSAtLXR4cnN0PTMyDQo+ICsJCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rl c3RwbWQgLS1sY29yZXM9JygwLSw0LQ0KPiA3KUBbNCw1XScgLW4gNCAtLSAtaSAtLXR4ZnJlZXQ9 MzIgLS1yeGZyZWV0PTMyIC0tdHhxZmxhZ3M9MHhmMDEgLS10eHJzdD0zMg0KPiArCQkuL3g4Nl82 NC1uYXRpdmUtbGludXhhcHAtZ2NjL2FwcC90ZXN0cG1kIC0tbGNvcmVzPSczLTRAMywyQDUtDQo+ IDYnIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tcnhmcmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAx IC0tdHhyc3Q9MzINCj4gKwkJLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBt ZCAtLWxjb3Jlcz0nMiwsMycnMi0tDQo+IDMnIC1uIDQgLS0gLWkgLS10eGZyZWV0PTMyIC0tcnhm cmVldD0zMiAtLXR4cWZsYWdzPTB4ZjAxIC0tdHhyc3Q9MzINCj4gKwkJLi94ODZfNjQtbmF0aXZl LWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtLWxjb3Jlcz0nMiwsLDMnJzItLQ0KPiAzJyAtbiA0 IC0tIC1pIC0tdHhmcmVldD0zMiAtLXJ4ZnJlZXQ9MzIgLS10eHFmbGFncz0weGYwMSAtLXR4cnN0 PTMyDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVfbXVsdGlwbGVfcHRocmVhZC5weQ0K PiBiL3Rlc3RzL1Rlc3RTdWl0ZV9tdWx0aXBsZV9wdGhyZWFkLnB5DQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjU4Y2I5OTENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi90ZXN0cy9UZXN0U3VpdGVfbXVsdGlwbGVfcHRocmVhZC5weQ0KPiBAQCAtMCwwICsxLDQ5MyBA QA0KPiArIyBCU0QgTElDRU5TRQ0KPiArIw0KPiArIyBDb3B5cmlnaHQoYykgMjAxMC0yMDE0IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIyBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArIw0KPiArIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICsjIGFyZSBt ZXQ6DQo+ICsjDQo+ICsjICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArIyAgICogUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQNCj4gKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbg0KPiArIyAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArIyAgICAgZGlzdHJpYnV0aW9uLg0K PiArIyAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5h bWVzIG9mIGl0cw0KPiArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsjICAgICBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsjDQo+ICsjIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U UklCVVRPUlMNCj4gKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCj4gKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQo+ICsjIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ R0hUDQo+ICsjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLA0KPiArIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQo+ICsjIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0K PiArIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkNCj4gKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KPiArIyAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4g KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4NCj4gKw0KPiArIiIiDQo+ICtEUERLIFRlc3Qgc3VpdGUuDQo+ICsNCj4g K1Rlc3QgTXVsdGlwbGUgUHRocmVhZCBGZWF0dXJlDQo+ICsNCj4gKyIiIg0KPiArDQo+ICtpbXBv cnQgZHRzDQo+ICtpbXBvcnQgdGltZQ0KPiAraW1wb3J0IHJlDQo+ICtpbXBvcnQgb3MNCj4gK2Zy b20gdGVzdF9jYXNlIGltcG9ydCBUZXN0Q2FzZQ0KPiArZnJvbSBwbWRfb3V0cHV0IGltcG9ydCBQ bWRPdXRwdXQNCj4gKw0KPiArIw0KPiArIw0KPiArIyBUZXN0IGNsYXNzLg0KPiArIw0KPiArDQo+ ICsNCj4gK2NsYXNzIFRlc3RNdWx0aXBsZVB0aHJlYWQoVGVzdENhc2UpOg0KPiArDQo+ICsgICAg Iw0KPiArICAgICMNCj4gKyAgICAjDQo+ICsgICAgIyBUZXN0IGNhc2VzLg0KPiArICAgICMNCj4g Kw0KPiArICAgIGRlZiBzZXRfdXBfYWxsKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgUnVuIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICBzZWxmLnBvcnRzID0gc2VsZi5kdXQuZ2V0X3BvcnRzKCkNCg0KUHJpbnQgZnVu Y3Rpb24gZm9yIGRlYnVnLCBjb3VsZCB5b3UgZGVsZXRlIHRoaXMgY29kZSwgb3IgdXNlZCBzZWxm LmxvZ2dlciB0byBwcmludCB5b3VyIGRlYnVnIGluZm8uDQo+ICsgICAgICAgIHByaW50IHNlbGYu bmljLCBzZWxmLnBvcnRzDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KGxlbihzZWxmLnBvcnRzKSA+ PSAyLCAiSW5zdWZmaWNpZW50IG51bWJlciBvZiBwb3J0cy4iKQ0KPiArICAgICAgICBzZWxmLnBv cnRzX3NvY2tldCA9IHNlbGYuZHV0LmdldF9udW1hX2lkKHNlbGYucG9ydHNbMF0pDQo+ICsgICAg ICAgIHNlbGYucG1kb3V0ID0gUG1kT3V0cHV0KHNlbGYuZHV0KQ0KPiArDQo+ICsgICAgZGVmIGdl dF9zdGF0cyhzZWxmLCBwb3J0aWQpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgR2V0IHBh Y2tldHMgbnVtYmVyIGZyb20gcG9ydCBzdGF0aXN0aWMuDQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBvdXRwdXQgPSBQbWRPdXRwdXQoc2VsZi5kdXQpDQo+ICsgICAgICAgIHN0YXRzID0gb3V0 cHV0LmdldF9wbWRfc3RhdHMocG9ydGlkKQ0KPiArICAgICAgICByZXR1cm4gc3RhdHMNCj4gKw0K PiArICAgIGRlZiBjaGVja19mb3J3YXJkaW5nKHNlbGYsIHBvcnRzLCBuaWMsIHRlc3RlcnBvcnRz PVtOb25lLCBOb25lXSwNCj4gcGt0U2l6ZT02NCwgcmVjZWl2ZWQ9VHJ1ZSwgY3JjU3RyaXA9RmFs c2UsIHZsYW49RmFsc2UpOg0KSW4geW91ciBmdW5jdGlvbiB5b3Ugbm90IGNoZWNrIGNyY1N0cmlw IGFuZCB2bGFuIGZlYXR1cmUsIHNvIEkgdGhpbmsgeW91IGNhbiBpZ25vcmUgY3Jjc3RyaXAgYW5k IHZsYW4gY29uZmlnIHdoZW4geW91IHNlbmQgcGFja2FnZS4NCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocG9ydHMpKToNCj4gKyAg ICAgICAgICAgIGlmIGkgJSAyID09IDA6DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Bh Y2tldChwb3J0c1tpXSwgcG9ydHNbaSArIDFdLCBzZWxmLm5pYywNCj4gdGVzdGVycG9ydHNbMV0s IHBrdFNpemUsIHJlY2VpdmVkLCBjcmNTdHJpcD1jcmNTdHJpcCwgdmxhbj12bGFuKQ0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc2VuZF9wYWNrZXQocG9ydHNbaSArIDFdLCBwb3J0c1tpXSwgc2Vs Zi5uaWMsDQo+IHRlc3RlcnBvcnRzWzBdLCBwa3RTaXplLCByZWNlaXZlZCwgY3JjU3RyaXA9Y3Jj U3RyaXAsIHZsYW49dmxhbikNCj4gKw0KPiArICAgIGRlZiBzZW5kX3BhY2tldChzZWxmLCB0eFBv cnQsIHJ4UG9ydCwgbmljLCB0ZXN0ZXJwb3J0cz1Ob25lLA0KPiBwa3RTaXplPTY0LCByZWNlaXZl ZD1UcnVlLCBjcmNTdHJpcD1GYWxzZSwgdmxhbj1GYWxzZSk6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBTZW5kIHBhY2thZ2VzIGFjY29yZGluZyB0byBwYXJhbWV0ZXJzLg0KPiArICAgICAg ICAiIiINCj4gKyAgICAgICAgcG9ydDBfc3RhdHMgPSBzZWxmLmdldF9zdGF0cyh0eFBvcnQpDQpN YXliZSB5b3Ugbm90IG5lZWQgY2hlY2sgcngvdHggcGFja2FnZSBzaXplLCBvbmx5IG5lZWQgY2hl Y2sgcngvdHggbnVtYmVycy4gDQpTbyB5b3Ugbm90IG5lZWQgY2hlY2sgcngvdHggcGFja2FnZSBz aXplLg0KDQo+ICsgICAgICAgIGdwMHR4X3BrdHMsIGdwMHR4X2J5dGVzID0gW3BvcnQwX3N0YXRz WydUWC1wYWNrZXRzJ10sDQo+IHBvcnQwX3N0YXRzWydUWC1ieXRlcyddXQ0KPiArICAgICAgICBw b3J0MV9zdGF0cyA9IHNlbGYuZ2V0X3N0YXRzKHJ4UG9ydCkNCj4gKyAgICAgICAgZ3AxcnhfcGt0 cywgZ3AxcnhfZXJyLCBncDFyeF9ieXRlcyA9IFtwb3J0MV9zdGF0c1snUlgtcGFja2V0cyddLA0K PiBwb3J0MV9zdGF0c1snUlgtZXJyb3JzJ10sIHBvcnQxX3N0YXRzWydSWC1ieXRlcyddXQ0KPiAr ICAgICAgICB0aW1lLnNsZWVwKDUpDQo+ICsNCj4gKyAgICAgICAgaWYgdGVzdGVycG9ydHMgaXMg Tm9uZToNCj4gKyAgICAgICAgICAgIGl0ZiA9DQo+IHNlbGYudGVzdGVyLmdldF9pbnRlcmZhY2Uo c2VsZi50ZXN0ZXIuZ2V0X2xvY2FsX3BvcnQocnhQb3J0KSkNCj4gKyAgICAgICAgZWxzZToNCj4g KyAgICAgICAgICAgIGl0ZiA9IHRlc3RlcnBvcnRzDQo+ICsNCj4gKyAgICAgICAgZGVzdE1hYyA9 IHNlbGYuZHV0LmdldF9tYWNfYWRkcmVzcyh0eFBvcnQpDQo+ICsgICAgICAgIHNlbGYudGVzdGVy LnNjYXB5X2ZvcmVncm91bmQoKQ0KPiArICAgICAgICBzZWxmLnRlc3Rlci5zY2FweV9hcHBlbmQo J3NlbmRwKFtFdGhlcihkc3Q9IiVzIiwNCj4gc3JjPSI1MjowMDowMDowMDowMDowMCIpXSwgaWZh Y2U9IiVzIiknICUgKGRlc3RNYWMsIGl0ZikpDQo+ICsgICAgICAgIHNlbGYudGVzdGVyLnNjYXB5 X2V4ZWN1dGUoKQ0KPiArICAgICAgICB0aW1lLnNsZWVwKDMpDQo+ICsNCj4gKyAgICAgICAgcG9y dDBfc3RhdHMgPSBzZWxmLmdldF9zdGF0cyh0eFBvcnQpDQo+ICsgICAgICAgIHAwdHhfcGt0cywg cDB0eF9ieXRlcyA9IFtwb3J0MF9zdGF0c1snVFgtcGFja2V0cyddLA0KPiBwb3J0MF9zdGF0c1sn VFgtYnl0ZXMnXV0NCj4gKyAgICAgICAgcG9ydDFfc3RhdHMgPSBzZWxmLmdldF9zdGF0cyhyeFBv cnQpDQo+ICsgICAgICAgIHAxcnhfcGt0cywgcDFyeF9lcnIsIHAxcnhfYnl0ZXMgPSBbcG9ydDFf c3RhdHNbJ1JYLXBhY2tldHMnXSwNCj4gcG9ydDFfc3RhdHNbJ1JYLWVycm9ycyddLCBwb3J0MV9z dGF0c1snUlgtYnl0ZXMnXV0NCj4gKyAgICAgICAgdGltZS5zbGVlcCg1KQ0KPiArDQo+ICsgICAg ICAgIHAwdHhfcGt0cyAtPSBncDB0eF9wa3RzDQo+ICsgICAgICAgIHAwdHhfYnl0ZXMgLT0gZ3Aw dHhfYnl0ZXMNCj4gKyAgICAgICAgcDFyeF9wa3RzIC09IGdwMXJ4X3BrdHMNCj4gKyAgICAgICAg cDFyeF9ieXRlcyAtPSBncDFyeF9ieXRlcw0KPiArICAgICAgICBwMXJ4X2VyciAtPSBncDFyeF9l cnINCj4gKyAgICAgICAgaWYgcmVjZWl2ZWQ6DQo+ICsgICAgICAgICAgICBzZWxmLnZlcmlmeShw MHR4X3BrdHMgPT0gcDFyeF9wa3RzLCJXcm9uZyBUWCBwa3RzIHAwX3R4PSVkLA0KPiBwMV9yeD0l ZCIgJSAocDB0eF9wa3RzLCBwMXJ4X3BrdHMpKQ0KPiArDQo+ICsgICAgZGVmIHNldF91cChzZWxm KToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBiZWZvcmUgZWFjaCB0ZXN0IGNhc2Uu DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBwYXNzDQo+ICsNCj4gKyAgICBkZWYgY2hlY2tf dGhyZWFkcyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgICAgICBDaGVjayB0aHJl YWRzIHRoYXQncyBydW5uaW5nLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0KPiAr DQo+ICsgICAgZGVmIGJhc2ljX29wZXJhdGlvbihzZWxmLCBsY29yZXMsIGNvcmVsaXN0KToNCj4g KyAgICAgICAgIiIiDQo+ICsgICAgICAgIEJhc2ljIG9wZXJhdGlvbg0KPiArICAgICAgICAiIiIN ClBscyBjaGVjayB5b3UgY29kZSBieSBwZXA4Lg0KPiArICAgICAgICAjbGNvcmVzID0gJzBAOCwo NC01KUA5Jw0KRG9uJ3Qgc2V0IHBvcnRtYXNrIGlzIGEgY29uc3RhbnQsIGJlY2F1c2UgZGlmZmVy ZW50IHRlc3QgZW52aXJvbm1lbnQsIHBvcnRtYXNrIGlzIGRpZmZlcmVudCwNCllvdSBjYW4gY291 bnQgaW4gc2V0dXBfYWxsIGZ1bmN0aW9uLg0KPiArICAgICAgICBwbWRfY21kID0gIi4vJXMvYXBw L3Rlc3RwbWQgLS1sY29yZXM9JyVzJyAtbiA0IC0tIC1pIC0tDQo+IHBvcnRtYXNrPTB4YyIgJSAo c2VsZi50YXJnZXQsIGxjb3JlcykNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QocG1k X2NtZCwgInRlc3RwbWQ+ICIsIDEwMCkNCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgic2V0IGZ3ZCBtYWMiLCAidGVzdHBtZD4iKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgic2V0IGNvcmVsaXN0ICVzIiAlIGNvcmVsaXN0LCAidGVzdHBtZD4gIikNCj4gKyAg ICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInN0YXJ0IiwgInRlc3RwbWQ+ICIpDQo+ICsgICAg ICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzaG93IGNvbmZpZyBmd2QiLCAidGVzdHBtZD4gIikN CllvdSBzaG91bGQgY2hlY2sgZndkIGNvcmUgbGlzdCBhZnRlciB5b3UgY2hhbmdlZCBmd2QgY29y ZSBsaXN0Lg0KDQo+ICsgICAgICAgIHNlbGYuY2hlY2tfZm9yd2FyZGluZyhzZWxmLnBvcnRzLCBz ZWxmLm5pYykNCj4gKw0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5zZW5k X2V4cGVjdCgicHMgLUMgdGVzdHBtZCAtTCAtDQo+IG9waWQsdGlkLCVjcHUscHNyLGFyZ3MiLCAi IyIpDQo+ICsgICAgICAgIHByaW50IG91dA0KPiArCXJlc3VsdF9zY2FubmVyID0gIlxkK1xzK1xk K1xzK1x3Ky5cdytccys5XHMuLyVzL2FwcC90ZXN0cG1kIiAlDQo+IHNlbGYudGFyZ2V0DQo+ICsJ c2Nhbm5lciA9IHJlLmNvbXBpbGUocmVzdWx0X3NjYW5uZXIsIHJlLkRPVEFMTCkNCj4gKyAgICAg ICAgbSA9IHNjYW5uZXIuZmluZGl0ZXIob3V0KQ0KPiArCXNlbGYuZHV0LmFsdF9zZXNzaW9uLnNl bmRfZXhwZWN0KCJjZA0KPiAvc3lzL2ZzL2Nncm91cC9jcHUvZHBkay90aHJlYWQwIiwgIiMiKQ0K PiArICAgICAgICBpZiBtOg0KPiArICAgICAgICAgICAgY291bnQgPSAwDQo+ICsgICAgICAgICAg ICBmb3IgaSBpbiBtOg0KPiArCQl0ZXh0ID0gaS5ncm91cCgpDQo+ICsgCQlzZWxmLmR1dC5hbHRf c2Vzc2lvbi5zZW5kX2V4cGVjdCgiZWNobyAnJXMnID4gL3Jvb3QvdGVtcCIgJQ0KPiB0ZXh0LCAi IyIpDQo+ICsgICAgICAgICAgICAgICAgb3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9l eHBlY3QoImNhdCAvcm9vdC90ZW1wIHwNCj4gYXdrICd7cHJpbnQgJDJ9JyIsICIjIikNCj4gKwkJ Y291bnQgKz0gMQ0KPiArICAgICAgICAgICAgc2VsZi52ZXJpZnkoY291bnQgPT0gMiwgIlRocmVh ZHMgcnVubmluZyBlcnJvciIpDQo+ICsNCj4gKyAgICBkZWYgcG9zaXRpdmVfMV90ZXN0KHNlbGYs IGxjb3JlcywgY29yZWxpc3QpOg0KPiArCSIiIg0KPiArCSIiIg0KPiArICAgICAgICAjbGNvcmVz ID0gJzBAOCwoNC01KUAoOC0xMSknDQo+ICsgICAgICAgIHBtZF9jbWQgPSAiLi8lcy9hcHAvdGVz dHBtZCAtLWxjb3Jlcz0nJXMnIC1uIDQgLS0gLWkgLS0NCj4gcG9ydG1hc2s9MHhjIiAlIChzZWxm LnRhcmdldCwgbGNvcmVzKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdChw bWRfY21kLCAidGVzdHBtZD4gIiwgMTAwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgic2V0IGZ3ZCBtYWMiLCAidGVzdHBtZD4iKQ0KPiArCXNlbGYuZHV0LnNlbmRfZXhwZWN0KCJz ZXQgY29yZWxpc3QgJXMiICUgY29yZWxpc3QsICJ0ZXN0cG1kPiAiKQ0KPiArCXNlbGYuZHV0LnNl bmRfZXhwZWN0KCJzdGFydCIsICJ0ZXN0cG1kPiAiKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgic2hvdyBjb25maWcgZndkIiwgInRlc3RwbWQ+ICIpDQo+ICsgICAgICAgIHNlbGYu Y2hlY2tfZm9yd2FyZGluZyhzZWxmLnBvcnRzLCBzZWxmLm5pYykNCj4gKw0KPiArICAgICAgICBv dXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgicHMgLUMgdGVzdHBtZCAtTCAt DQo+IG9waWQsdGlkLCVjcHUscHNyLGFyZ3MiLCAiIyIpDQpZb3UgY2FuIHVzZWQgc2VsZi5sb2dn ZXIgZm9yIHdyaXRlIGRlYnVnIGluZm8gdG8gbG9nIGZpbGUuDQo+ICsgICAgICAgIHByaW50IG91 dA0KPiArCSNkaWZmDQo+ICsgICAgICAgIHJlc3VsdF9zY2FubmVyID0gIlxkK1xzK1xkK1xzK1x3 Ky5cdytccytcZCtccy4vJXMvYXBwL3Rlc3RwbWQiICUNCj4gc2VsZi50YXJnZXQNCj4gKyAgICAg ICAgc2Nhbm5lciA9IHJlLmNvbXBpbGUocmVzdWx0X3NjYW5uZXIsIHJlLkRPVEFMTCkNCj4gKyAg ICAgICAgbSA9IHNjYW5uZXIuZmluZGl0ZXIob3V0KQ0KPiArICAgICAgICBzZWxmLmR1dC5hbHRf c2Vzc2lvbi5zZW5kX2V4cGVjdCgiY2QNCj4gL3N5cy9mcy9jZ3JvdXAvY3B1L2RwZGsvdGhyZWFk MCIsICIjIikNCj4gKyAgICAgICAgaWYgbToNCj4gKyAgICAgICAgICAgIGNvdW50ID0gMA0KPiAr ICAgICAgICAgICAgZm9yIGkgaW4gbToNCj4gKyAgICAgICAgICAgICAgICB0ZXh0ID0gaS5ncm91 cCgpDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3Qo ImVjaG8gJyVzJyA+DQo+IC9yb290L3RlbXAiICUgdGV4dCwgIiMiKQ0KPiArCQlvdXQgPSBzZWxm LmR1dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgiY2F0IC9yb290L3RlbXAgfCBhd2sNCj4gJ3tw cmludCAkNH0nIiwgIiMiKQ0KWW91IGNhbiB1c2VkICJpZiBvdXQgaW4gWyc4JywgJzknLCAnMTAn LCAnMTEnXToiIHRvIHJlcGxhY2UgbmV4dCBsb2dpYyBleHByZXNzaW9uLiANCj4gKwkJaWYgb3V0 ID09ICc4JyBvciBvdXQgPT0gJzknIG9yIG91dCA9PSAnMTAnIG9yIG91dCA9PSAnMTEnOg0KPiAr ICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxDQo+ICsgICAgICAgICAgICBzZWxmLnZlcmlm eShjb3VudCA9PSAzLCAiVGhyZWFkcyBydW5uaW5nIGVycm9yIikNCj4gKw0KPiArCXNlbGYuZHV0 LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMiKQ0KPiArDQo+ICsgICAgZGVmIHBvc2l0aXZlXzJfdGVz dChzZWxmLCBsY29yZXMsIGNvcmVsaXN0KToNCj4gKwkiIiINCj4gKwkiIiINCj4gKyAgICAgICAg cG1kX2NtZCA9ICIuLyVzL2FwcC90ZXN0cG1kIC0tbGNvcmVzPSclcycgLW4gNCAtLSAtaSAtLQ0K PiBwb3J0bWFzaz0weGMiICUgKHNlbGYudGFyZ2V0LCBsY29yZXMpDQo+ICsgICAgICAgIG91dCA9 IHNlbGYuZHV0LnNlbmRfZXhwZWN0KHBtZF9jbWQsICJ0ZXN0cG1kPiAiLCAxMDApDQo+ICsgICAg ICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzZXQgZndkIG1hYyIsICJ0ZXN0cG1kPiIpDQo+ICsN Cj4gKwlzZWxmLmR1dC5zZW5kX2V4cGVjdCgic2V0IGNvcmVsaXN0ICVzIiAlIGNvcmVsaXN0LCAi dGVzdHBtZD4gIikNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInN0YXJ0IiwgInRl c3RwbWQ+ICIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzaG93IGNvbmZpZyBm d2QiLCAidGVzdHBtZD4gIikNCj4gKyAgICAgICAgc2VsZi5jaGVja19mb3J3YXJkaW5nKHNlbGYu cG9ydHMsIHNlbGYubmljKQ0KPiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2Vu ZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1LHBzcixhcmdzIiwg IiMiKQ0KPiArICAgICAgICBwcmludCBvdXQNCj4gKw0KPiArCSMgZGVjb2RlIGxjb3JlcyB3b3Jr IGNwdXMNCj4gKwlvdXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgicHMgLUMg dGVzdHBtZCAtTCAtDQo+IG9waWQsdGlkLCVjcHUscHNyLGFyZ3MgfCBoZWFkIC1uIDIgfCB0YWls IC1uIDEgfCBhd2sgJ3twcmludCAkNH0nIiwgIiMiKQ0KPiArCXNlbGYudmVyaWZ5KG91dCA9PSAn MScsICJUaHJlYWRzIHJ1bm5pbmcgZXJyb3IiKQ0KPiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0 X3Nlc3Npb24uc2VuZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1 LHBzcixhcmdzIHwgaGVhZCAtbiA0IHwgdGFpbCAtbiAxIHwgYXdrICd7cHJpbnQgJDR9JyIsICIj IikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkob3V0ID09ICcwJyBvciBvdXQgPT0gJzEnIG9yIG91 dCA9PSAnMicgb3Igb3V0ID09ICczJw0KPiBvciBvdXQgPT0gJzQnIG9yIG91dCA9PSAnNicsICJU aHJlYWRzIHJ1bm5pbmcgZXJyb3IiKQ0KPiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Np b24uc2VuZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1LHBzcixh cmdzIHwgaGVhZCAtbiA3IHwgdGFpbCAtbiAzIiwgIiMiKQ0KPiArCXJlc3VsdF9zY2FubmVyID0g IlxkK1xzK1xkK1xzK1x3Ky5cdytccys1XHMuLyVzL2FwcC90ZXN0cG1kIiAlDQo+IHNlbGYudGFy Z2V0DQo+ICsgICAgICAgIHNjYW5uZXIgPSByZS5jb21waWxlKHJlc3VsdF9zY2FubmVyLCByZS5E T1RBTEwpDQo+ICsgICAgICAgIG0gPSBzY2FubmVyLmZpbmRpdGVyKG91dCkNCj4gKyAgICAgICAg aWYgbToNCj4gKyAgICAgICAgICAgIGNvdW50ID0gMA0KPiArICAgICAgICAgICAgZm9yIGkgaW4g bToNCj4gKyAgICAgICAgICAgICAgICB0ZXh0ID0gaS5ncm91cCgpDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoImVjaG8gJyVzJyA+DQo+IC9yb290 L3RlbXAiICUgdGV4dCwgIiMiKQ0KPiArICAgICAgICAgICAgICAgIG91dCA9IHNlbGYuZHV0LmFs dF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJjYXQgL3Jvb3QvdGVtcCB8DQo+IGF3ayAne3ByaW50ICQ0 fSciLCAiIyIpDQo+ICsgICAgICAgICAgICAgICAgY291bnQgKz0gMQ0KPiArICAgICAgICAgICAg c2VsZi52ZXJpZnkoY291bnQgPT0gMywgIlRocmVhZHMgcnVubmluZyBlcnJvciIpDQo+ICsNCj4g KwlvdXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgicHMgLUMgdGVzdHBtZCAt TCAtDQo+IG9waWQsdGlkLCVjcHUscHNyLGFyZ3MgfCB0YWlsIC1uIDIiLCAiIyIpDQo+ICsJcmVz dWx0X3NjYW5uZXIgPSAiXGQrXHMrXGQrXHMrXHcrLlx3K1xzK1xkXHMuLyVzL2FwcC90ZXN0cG1k IiAlDQo+IHNlbGYudGFyZ2V0DQo+ICsgICAgICAgIHNjYW5uZXIgPSByZS5jb21waWxlKHJlc3Vs dF9zY2FubmVyLCByZS5ET1RBTEwpDQo+ICsgICAgICAgIG0gPSBzY2FubmVyLmZpbmRpdGVyKG91 dCkNCj4gKyAgICAgICAgc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoImNkDQo+IC9z eXMvZnMvY2dyb3VwL2NwdS9kcGRrL3RocmVhZDAiLCAiIyIpDQo+ICsgICAgICAgIGlmIG06DQo+ ICsgICAgICAgICAgICBjb3VudCA9IDANCj4gKyAgICAgICAgICAgIGZvciBpIGluIG06DQo+ICsg ICAgICAgICAgICAgICAgdGV4dCA9IGkuZ3JvdXAoKQ0KPiArICAgICAgICAgICAgICAgIHNlbGYu ZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJlY2hvICclcycgPg0KPiAvcm9vdC90ZW1wIiAl IHRleHQsICIjIikNCj4gKyAgICAgICAgICAgICAgICBvdXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lv bi5zZW5kX2V4cGVjdCgiY2F0IC9yb290L3RlbXAgfA0KPiBhd2sgJ3twcmludCAkNH0nIiwgIiMi KQ0KPiArCQlpZiBvdXQgPT0gJzgnIG9yIG91dCA9PSAnNyc6DQo+ICsgICAgICAgICAgICAJICAg IGNvdW50ICs9IDENCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoY291bnQgPT0gMiwgIlRocmVhZHMg cnVubmluZyBlcnJvciIpDQo+ICsNCj4gKwlzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIj IikNCj4gKw0KPiArICAgIGRlZiBwb3NpdGl2ZV8zX3Rlc3Qoc2VsZiwgbGNvcmVzLCBjb3JlbGlz dCk6DQo+ICsJIiIiDQo+ICsJIiIiDQo+ICsgICAgICAgICNsY29yZXMgPSAnKDAsMTI3KUAoNCw1 KScNCj4gKyAgICAgICAgcG1kX2NtZCA9ICIuLyVzL2FwcC90ZXN0cG1kIC0tbGNvcmVzPSclcycg LW4gNCAtLSAtaSAtLQ0KPiBwb3J0bWFzaz0weGMiICUgKHNlbGYudGFyZ2V0LCBsY29yZXMpDQo+ ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KHBtZF9jbWQsICJ0ZXN0cG1kPiAi LCAxMDApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzZXQgZndkIG1hYyIsICJ0 ZXN0cG1kPiIpDQo+ICsJc2VsZi5kdXQuc2VuZF9leHBlY3QoInNldCBjb3JlbGlzdCAlcyIgJSBj b3JlbGlzdCwgInRlc3RwbWQ+ICIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJz dGFydCIsICJ0ZXN0cG1kPiAiKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgic2hv dyBjb25maWcgZndkIiwgInRlc3RwbWQ+ICIpDQo+ICsgICAgICAgIHNlbGYuY2hlY2tfZm9yd2Fy ZGluZyhzZWxmLnBvcnRzLCBzZWxmLm5pYykNCj4gKw0KPiArCW91dCA9IHNlbGYuZHV0LmFsdF9z ZXNzaW9uLnNlbmRfZXhwZWN0KCJwcyAtQyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0aWQsJWNwdSxw c3IsYXJncyIsICIjIikNCj4gKyAgICAgICAgcHJpbnQgb3V0DQo+ICsNCj4gKwlyZXN1bHRfc2Nh bm5lciA9ICJcZCtccytcZCtccytcdysuXHcrXHMrXGRccy4vJXMvYXBwL3Rlc3RwbWQiICUNCj4g c2VsZi50YXJnZXQNCj4gKyAgICAgICAgc2Nhbm5lciA9IHJlLmNvbXBpbGUocmVzdWx0X3NjYW5u ZXIsIHJlLkRPVEFMTCkNCj4gKyAgICAgICAgbSA9IHNjYW5uZXIuZmluZGl0ZXIob3V0KQ0KPiAr ICAgICAgICBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgiY2QNCj4gL3N5cy9mcy9j Z3JvdXAvY3B1L2RwZGsvdGhyZWFkMCIsICIjIikNCj4gKyAgICAgICAgaWYgbToNCj4gKyAgICAg ICAgICAgIGNvdW50ID0gMA0KPiArICAgICAgICAgICAgZm9yIGkgaW4gbToNCj4gKyAgICAgICAg ICAgICAgICB0ZXh0ID0gaS5ncm91cCgpDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5kdXQuYWx0 X3Nlc3Npb24uc2VuZF9leHBlY3QoImVjaG8gJyVzJyA+DQo+IC9yb290L3RlbXAiICUgdGV4dCwg IiMiKQ0KPiArICAgICAgICAgICAgICAgIG91dCA9IHNlbGYuZHV0LmFsdF9zZXNzaW9uLnNlbmRf ZXhwZWN0KCJjYXQgL3Jvb3QvdGVtcCB8DQo+IGF3ayAne3ByaW50ICQ0fSciLCAiIyIpDQo+ICsg ICAgICAgICAgICAgICAgaWYgb3V0ID09ICc1JyBvciBvdXQgPT0gJzQnOg0KPiArICAgICAgICAg ICAgICAgICAgICBjb3VudCArPSAxDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KGNvdW50ID09IDIs ICJUaHJlYWRzIHJ1bm5pbmcgZXJyb3IiKQ0KPiArDQo+ICsJc2VsZi5kdXQuc2VuZF9leHBlY3Qo InF1aXQiLCAiIyIpDQo+ICsNCj4gKyAgICBkZWYgcG9zaXRpdmVfNF90ZXN0KHNlbGYsIGxjb3Jl cywgY29yZWxpc3QpOg0KPiArCSIiIg0KPiArCSIiIg0KPiArICAgICAgICAjbGNvcmVzID0gJygw LDY0LTY2KUAoNCw1KScNCj4gKyAgICAgICAgcG1kX2NtZCA9ICIuLyVzL2FwcC90ZXN0cG1kIC0t bGNvcmVzPSclcycgLW4gNCAtLSAtaSAtLQ0KPiBwb3J0bWFzaz0weGMiICUgKHNlbGYudGFyZ2V0 LCBsY29yZXMpDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KHBtZF9jbWQs ICJ0ZXN0cG1kPiAiLCAxMDApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzZXQg ZndkIG1hYyIsICJ0ZXN0cG1kPiIpDQo+ICsJc2VsZi5kdXQuc2VuZF9leHBlY3QoInNldCBjb3Jl bGlzdCAlcyIgJSBjb3JlbGlzdCwgInRlc3RwbWQ+ICIpDQo+IA0KPiArICAgICAgICBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgic3RhcnQiLCAidGVzdHBtZD4gIikNCj4gKyAgICAgICAgc2VsZi5kdXQu c2VuZF9leHBlY3QoInNob3cgY29uZmlnIGZ3ZCIsICJ0ZXN0cG1kPiAiKQ0KPiArCXNlbGYuY2hl Y2tfZm9yd2FyZGluZyhzZWxmLnBvcnRzLCBzZWxmLm5pYykNCj4gKw0KPiArCW91dCA9IHNlbGYu ZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJwcyAtQyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0 aWQsJWNwdSxwc3IsYXJncyIsICIjIikNCj4gKwlwcmludCBvdXQNCj4gKw0KPiArCXJlc3VsdF9z Y2FubmVyID0gIlxkK1xzK1xkK1xzK1x3Ky5cdytccytcZFxzLi8lcy9hcHAvdGVzdHBtZCIgJQ0K PiBzZWxmLnRhcmdldA0KPiArICAgICAgICBzY2FubmVyID0gcmUuY29tcGlsZShyZXN1bHRfc2Nh bm5lciwgcmUuRE9UQUxMKQ0KPiArICAgICAgICBtID0gc2Nhbm5lci5maW5kaXRlcihvdXQpDQo+ ICsgICAgICAgIHNlbGYuZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJjZA0KPiAvc3lzL2Zz L2Nncm91cC9jcHUvZHBkay90aHJlYWQwIiwgIiMiKQ0KPiArICAgICAgICBpZiBtOg0KPiArICAg ICAgICAgICAgY291bnQgPSAwDQo+ICsgICAgICAgICAgICBmb3IgaSBpbiBtOg0KPiArICAgICAg ICAgICAgICAgIHRleHQgPSBpLmdyb3VwKCkNCj4gKyAgICAgICAgICAgICAgICBzZWxmLmR1dC5h bHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgiZWNobyAnJXMnID4NCj4gL3Jvb3QvdGVtcCIgJSB0ZXh0 LCAiIyIpDQo+ICsgICAgICAgICAgICAgICAgb3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2Vu ZF9leHBlY3QoImNhdCAvcm9vdC90ZW1wIHwNCj4gYXdrICd7cHJpbnQgJDR9JyIsICIjIikNCj4g KyAgICAgICAgICAgICAgICBpZiBvdXQgPT0gJzUnIG9yIG91dCA9PSAnNCc6DQo+ICsgICAgICAg ICAgICAgICAgICAgIGNvdW50ICs9IDENCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoY291bnQgPT0g NCwgIlRocmVhZHMgcnVubmluZyBlcnJvcjpjcHUgaXMgJXMsIGV4cGVjdA0KPiA0IC4iICUgY291 bnQpDQo+ICsNCj4gKwlzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjIikNCj4gKw0KPiAr ICAgIGRlZiBwb3NpdGl2ZV81X3Rlc3Qoc2VsZiwgbGNvcmVzLCBjb3JlbGlzdCk6DQo+ICsJIiIi DQo+ICsJIiIiDQo+ICsgICAgICAgICNsY29yZXMgPSAnMi01LDYsNy05Jw0KPiArICAgICAgICBw bWRfY21kID0gIi4vJXMvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JyVzJyAtbiA0IC0tIC1pIC0tDQo+ IHBvcnRtYXNrPTB4YyIgJSAoc2VsZi50YXJnZXQsIGxjb3JlcykNCj4gKyAgICAgICAgb3V0ID0g c2VsZi5kdXQuc2VuZF9leHBlY3QocG1kX2NtZCwgInRlc3RwbWQ+ICIsIDEwMCkNCj4gKyAgICAg ICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInNldCBmd2QgbWFjIiwgInRlc3RwbWQ+IikNCj4gKwlz ZWxmLmR1dC5zZW5kX2V4cGVjdCgic2V0IGNvcmVsaXN0ICVzIiAlIGNvcmVsaXN0LCAidGVzdHBt ZD4gIikNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInN0YXJ0IiwgInRlc3RwbWQ+ ICIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzaG93IGNvbmZpZyBmd2QiLCAi dGVzdHBtZD4gIikNCj4gKyAgICAgICAgc2VsZi5jaGVja19mb3J3YXJkaW5nKHNlbGYucG9ydHMs IHNlbGYubmljKQ0KPiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBl Y3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1LHBzcixhcmdzIiwgIiMiKQ0K PiArICAgICAgICBwcmludCBvdXQNCj4gKw0KPiArCW91dCA9IHNlbGYuZHV0LmFsdF9zZXNzaW9u LnNlbmRfZXhwZWN0KCJwcyAtQyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0aWQsJWNwdSxwc3IsYXJn cyB8IGhlYWQgLW4gMiB8IHRhaWwgLW4gMSB8IGF3ayAne3ByaW50ICQ0fSciLCAiIyIpDQo+ICsg ICAgICAgIHNlbGYudmVyaWZ5KG91dCA9PSAnMicsICJUaHJlYWRzIHJ1bm5pbmcgZXJyb3IiKQ0K PiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoInBzIC1DIHRl c3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1LHBzcixhcmdzIHwgaGVhZCAtbiA0IHwgdGFpbCAt biAxIHwgYXdrICd7cHJpbnQgJDR9JyIsICIjIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkob3V0 ID09ICczJywgIlRocmVhZHMgcnVubmluZyBlcnJvciIpDQo+ICsNCj4gKwlvdXQgPSBzZWxmLmR1 dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgicHMgLUMgdGVzdHBtZCAtTCAtDQo+IG9waWQsdGlk LCVjcHUscHNyLGFyZ3MgfCBoZWFkIC1uIDUgfCB0YWlsIC1uIDEgfCBhd2sgJ3twcmludCAkNH0n IiwgIiMiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeShvdXQgPT0gJzQnLCAiVGhyZWFkcyBydW5u aW5nIGVycm9yIikNCj4gKw0KPiArCW91dCA9IHNlbGYuZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhw ZWN0KCJwcyAtQyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0aWQsJWNwdSxwc3IsYXJncyB8IGhlYWQg LW4gNiB8IHRhaWwgLW4gMSB8IGF3ayAne3ByaW50ICQ0fSciLCAiIyIpDQo+ICsgICAgICAgIHNl bGYudmVyaWZ5KG91dCA9PSAnNScsICJUaHJlYWRzIHJ1bm5pbmcgZXJyb3IiKQ0KPiArDQo+ICsJ b3V0ID0gc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwg LQ0KPiBvcGlkLHRpZCwlY3B1LHBzcixhcmdzIHwgaGVhZCAtbiA3IHwgdGFpbCAtbiAxIHwgYXdr ICd7cHJpbnQgJDR9JyIsICIjIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkob3V0ID09ICc2Jywg IlRocmVhZHMgcnVubmluZyBlcnJvciIpDQo+ICsNCj4gKwlvdXQgPSBzZWxmLmR1dC5hbHRfc2Vz c2lvbi5zZW5kX2V4cGVjdCgicHMgLUMgdGVzdHBtZCAtTCAtDQo+IG9waWQsdGlkLCVjcHUscHNy LGFyZ3MgfCBoZWFkIC1uIDggfCB0YWlsIC1uIDEgfCBhd2sgJ3twcmludCAkNH0nIiwgIiMiKQ0K PiArICAgICAgICBzZWxmLnZlcmlmeShvdXQgPT0gJzcnLCAiVGhyZWFkcyBydW5uaW5nIGVycm9y IikNCj4gKw0KPiArCW91dCA9IHNlbGYuZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJwcyAt QyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0aWQsJWNwdSxwc3IsYXJncyB8IGhlYWQgLW4gOSB8IHRh aWwgLW4gMSB8IGF3ayAne3ByaW50ICQ0fSciLCAiIyIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KG91dCA9PSAnOCcsICJUaHJlYWRzIHJ1bm5pbmcgZXJyb3IiKQ0KPiArDQo+ICsJb3V0ID0gc2Vs Zi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlk LHRpZCwlY3B1LHBzcixhcmdzIHwgaGVhZCAtbiAxMCB8IHRhaWwgLW4gMSB8IGF3ayAne3ByaW50 ICQ0fSciLCAiIyIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KG91dCA9PSAnOScsICJUaHJlYWRz IHJ1bm5pbmcgZXJyb3IiKQ0KPiArDQo+ICsJc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAi IyIpDQo+ICsNCj4gKyAgICBkZWYgcG9zaXRpdmVfNl90ZXN0KHNlbGYsIGxjb3JlcywgY29yZWxp c3QpOg0KPiArCSIiIg0KPiArCSIiIg0KPiArICAgICAgICAjbGNvcmVzID0gJzIsICgzLTUpQCAz Jw0KPiArICAgICAgICBwbWRfY21kID0gIi4vJXMvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JyVzJyAt biA0IC0tIC1pIC0tDQo+IHBvcnRtYXNrPTB4YyIgJSAoc2VsZi50YXJnZXQsIGxjb3JlcykNCj4g KyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QocG1kX2NtZCwgInRlc3RwbWQ+ICIs IDEwMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInNldCBmd2QgbWFjIiwgInRl c3RwbWQ+IikNCj4gKwlzZWxmLmR1dC5zZW5kX2V4cGVjdCgic2V0IGNvcmVsaXN0ICVzIiAlIGNv cmVsaXN0LCAidGVzdHBtZD4gIikNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInN0 YXJ0IiwgInRlc3RwbWQ+ICIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzaG93 IGNvbmZpZyBmd2QiLCAidGVzdHBtZD4gIikNCj4gKyAgICAgICAgc2VsZi5jaGVja19mb3J3YXJk aW5nKHNlbGYucG9ydHMsIHNlbGYubmljKQ0KPiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0X3Nl c3Npb24uc2VuZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1LHBz cixhcmdzIiwgIiMiKQ0KPiArICAgICAgICBwcmludCBvdXQNCj4gKw0KPiArCW91dCA9IHNlbGYu ZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJwcyAtQyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0 aWQsJWNwdSxwc3IsYXJncyB8IGhlYWQgLW4gMiB8IHRhaWwgLW4gMSB8IGF3ayAne3ByaW50ICQ0 fSciLCAiIyIpDQo+ICsgICAgICAgIHByaW50IG91dA0KPiArICAgICAgICBzZWxmLnZlcmlmeShv dXQgPT0gJzInLCAiVGhyZWFkcyBydW5uaW5nIGVycm9yIikNCj4gKw0KPiArCW91dCA9IHNlbGYu ZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJwcyAtQyB0ZXN0cG1kIC1MIC0NCj4gb3BpZCx0 aWQsJWNwdSxwc3IsYXJncyIsICIjIikNCj4gKyAgICAgICAgcHJpbnQgb3V0DQo+ICsJcmVzdWx0 X3NjYW5uZXIgPSAiXGQrXHMrXGQrXHMrXHcrLlx3K1xzK1xkXHMuLyVzL2FwcC90ZXN0cG1kIiAl DQo+IHNlbGYudGFyZ2V0DQo+ICsgICAgICAgIHNjYW5uZXIgPSByZS5jb21waWxlKHJlc3VsdF9z Y2FubmVyLCByZS5ET1RBTEwpDQo+ICsgICAgICAgIG0gPSBzY2FubmVyLmZpbmRpdGVyKG91dCkN Cj4gKyAgICAgICAgc2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoImNkDQo+IC9zeXMv ZnMvY2dyb3VwL2NwdS9kcGRrL3RocmVhZDAiLCAiIyIpDQo+ICsgICAgICAgIGlmIG06DQo+ICsg ICAgICAgICAgICBjb3VudCA9IDANCj4gKyAgICAgICAgICAgIGZvciBpIGluIG06DQo+ICsgICAg ICAgICAgICAgICAgdGV4dCA9IGkuZ3JvdXAoKQ0KPiArICAgICAgICAgICAgICAgIHNlbGYuZHV0 LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0KCJlY2hvICclcycgPg0KPiAvcm9vdC90ZW1wIiAlIHRl eHQsICIjIikNCj4gKyAgICAgICAgICAgICAgICBvdXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5z ZW5kX2V4cGVjdCgiY2F0IC9yb290L3RlbXAgfA0KPiBhd2sgJ3twcmludCAkNH0nIiwgIiMiKQ0K PiArICAgICAgICAgICAgICAgIGlmIG91dCA9PSAnMyc6DQo+ICsgICAgICAgICAgICAgICAgICAg IGNvdW50ICs9IDENCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoY291bnQgPT0gMywgIlRocmVhZHMg cnVubmluZyBlcnJvciIpDQo+ICsNCj4gKwlzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIj IikNCj4gKw0KPiArICAgIGRlZiBwb3NpdGl2ZV83X3Rlc3Qoc2VsZiwgbGNvcmVzLCBjb3JlbGlz dCk6DQo+ICsJIiIiDQo+ICsJIiIiDQo+ICsgICAgICAgICNsY29yZXMgPSAnKDAsNjQtNjYpQCg0 LDUpJw0KPiArICAgICAgICBwbWRfY21kID0gIi4vJXMvYXBwL3Rlc3RwbWQgLS1sY29yZXM9JyVz JyAtbiA0IC0tIC1pIC0tDQo+IHBvcnRtYXNrPTB4YyIgJSAoc2VsZi50YXJnZXQsIGxjb3JlcykN Cj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QocG1kX2NtZCwgInRlc3RwbWQ+ ICIsIDEwMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInNldCBmd2QgbWFjIiwg InRlc3RwbWQ+IikNCj4gKwlzZWxmLmR1dC5zZW5kX2V4cGVjdCgic2V0IGNvcmVsaXN0ICVzIiAl IGNvcmVsaXN0LCAidGVzdHBtZD4gIikNCj4gDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJzdGFydCIsICJ0ZXN0cG1kPiAiKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgic2hvdyBjb25maWcgZndkIiwgInRlc3RwbWQ+ICIpDQo+ICsJc2VsZi5jaGVja19mb3J3YXJk aW5nKHNlbGYucG9ydHMsIHNlbGYubmljKQ0KPiArDQo+ICsJb3V0ID0gc2VsZi5kdXQuYWx0X3Nl c3Npb24uc2VuZF9leHBlY3QoInBzIC1DIHRlc3RwbWQgLUwgLQ0KPiBvcGlkLHRpZCwlY3B1LHBz cixhcmdzIiwgIiMiKQ0KPiArCXByaW50IG91dA0KPiArDQo+ICsJcmVzdWx0X3NjYW5uZXIgPSAi XGQrXHMrXGQrXHMrXHcrLlx3K1xzK1xkXHMuLyVzL2FwcC90ZXN0cG1kIiAlDQo+IHNlbGYudGFy Z2V0DQo+ICsgICAgICAgIHNjYW5uZXIgPSByZS5jb21waWxlKHJlc3VsdF9zY2FubmVyLCByZS5E T1RBTEwpDQo+ICsgICAgICAgIG0gPSBzY2FubmVyLmZpbmRpdGVyKG91dCkNCj4gKyAgICAgICAg c2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QoImNkDQo+IC9zeXMvZnMvY2dyb3VwL2Nw dS9kcGRrL3RocmVhZDAiLCAiIyIpDQo+ICsgICAgICAgIGlmIG06DQo+ICsgICAgICAgICAgICBj b3VudCA9IDANCj4gKyAgICAgICAgICAgIGZvciBpIGluIG06DQo+ICsgICAgICAgICAgICAgICAg dGV4dCA9IGkuZ3JvdXAoKQ0KPiArICAgICAgICAgICAgICAgIHNlbGYuZHV0LmFsdF9zZXNzaW9u LnNlbmRfZXhwZWN0KCJlY2hvICclcycgPg0KPiAvcm9vdC90ZW1wIiAlIHRleHQsICIjIikNCj4g KyAgICAgICAgICAgICAgICBvdXQgPSBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5zZW5kX2V4cGVjdCgi Y2F0IC9yb290L3RlbXAgfA0KPiBhd2sgJ3twcmludCAkNH0nIiwgIiMiKQ0KPiArICAgICAgICAg ICAgICAgIGlmIG91dCA9PSAnNScgb3Igb3V0ID09ICc0JzoNCj4gKyAgICAgICAgICAgICAgICAg ICAgY291bnQgKz0gMQ0KPiArICAgICAgICBzZWxmLnZlcmlmeShjb3VudCA9PSA1LCAiVGhyZWFk cyBydW5uaW5nIGVycm9yOmNwdSBpcyAlcywgZXhwZWN0DQo+IDUgLiIgJSBjb3VudCkNCj4gKw0K PiArCXNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMiKQ0KPiArDQo+ICsgICAgZGVmIGNo ZWNrX25lZ2F0aXZlKHNlbGYsIGxjb3Jlcyk6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICAi IiINCj4gKyAgICAgICAgcG1kX2NtZCA9ICIuLyVzL2FwcC90ZXN0cG1kIC0tbGNvcmVzPSclcycg LW4gNCAtLSAtaSAtLQ0KPiBwb3J0bWFzaz0weGMiICUgKHNlbGYudGFyZ2V0LCBsY29yZXMpDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KHBtZF9jbWQsICIjIiwgMTAwKQ0KPiArDQo+ ICsgICAgZGVmIHRlc3RfYmFzaWNfb3BlcmF0aW9uKHNlbGYpOg0KPiArCSIiIg0KPiArICAgICAg ICBCYXNpYyBvcGVyYXRpb24NCj4gKyAgICAgICAgIiIiDQo+ICsJbGNvcmVzID0gJzBAOCwoNC01 KUA5Jw0KPiArCWNvcmVsaXN0ID0gWyc0JywgJzUnLCAnNCw1J10NCj4gKwlmb3IgY29yZSBpbiBj b3JlbGlzdDoNCj4gKwkgICAgc2VsZi5iYXNpY19vcGVyYXRpb24obGNvcmVzLCBjb3JlKQ0KPiAr DQo+ICsgICAgZGVmIHRlc3RfcG9zaXRpdmVfdGVzdChzZWxmKToNCj4gKwkiIiINCj4gKyAgICAg ICAgUG9zaXRpdmUgVGVzdA0KPiArICAgICAgICAiIiINCj4gKwkjaXRlbSAxDQo+ICsJbGNvcmVz ID0gJzBAOCwoNC01KUAoOC0xMSknDQo+ICsgICAgICAgIGNvcmVsaXN0ID0gWyc0JywgJzUnLCAn NCw1J10NCj4gKwlmb3IgY29yZSBpbiBjb3JlbGlzdDoNCj4gKwkgICAgc2VsZi5wb3NpdGl2ZV8x X3Rlc3QobGNvcmVzLCBjb3JlKQ0KPiArDQo+ICsJI2l0ZW0gMg0KPiArCWxjb3JlcyA9ICcxLDJA KDAtNCw2KSwoMy00LDYpQDUsKDcsOCknDQo+ICsgICAgICAgIGNvcmVsaXN0ID0gWycyJywgJzMn LCAnNCcsICc2JywgJzcnLCAnOCcsICcyLDMnLCAnMiw0JywgJzIsNicsDQo+ICcyLDcnLCAnMiw4 JywgJzMsNCcsICczLDYnLCAnMyw3JywgJzMsOCcsICc0LDYnLCAnNCw3JywgJzQsOCcsICc2LDcn LA0KPiAnNiw4JywgJzcsOCddDQo+ICsgICAgICAgIGZvciBjb3JlIGluIGNvcmVsaXN0Og0KPiAr ICAgICAgICAgICAgc2VsZi5wb3NpdGl2ZV8yX3Rlc3QobGNvcmVzLCBjb3JlKQ0KPiArDQo+ICsJ I2l0ZW0gMw0KPiArCWxjb3JlcyA9ICcoMCwxMjcpQCg0LDUpJw0KPiArICAgICAgICBjb3JlbGlz dCA9IFsnMTI3J10NCj4gKyAgICAgICAgZm9yIGNvcmUgaW4gY29yZWxpc3Q6DQo+ICsgICAgICAg ICAgICBzZWxmLnBvc2l0aXZlXzNfdGVzdChsY29yZXMsIGNvcmUpDQo+ICsNCj4gKwkjaXRlbSA0 DQo+ICsJbGNvcmVzID0gJygwLDY0LTY2KUAoNCw1KScNCj4gKyAgICAgICAgY29yZWxpc3QgPSBb JzY0JywgJzY1JywgJzY2JywgJzY0LDY1JywgJzY0LDY2JywgJzY1LDY2J10NCj4gKyAgICAgICAg Zm9yIGNvcmUgaW4gY29yZWxpc3Q6DQo+ICsgICAgICAgICAgICBzZWxmLnBvc2l0aXZlXzRfdGVz dChsY29yZXMsIGNvcmUpDQo+ICsNCj4gKwkjaXRlbSA1DQo+ICsJbGNvcmVzID0gJzItNSw2LDct OScNCj4gKyAgICAgICAgY29yZWxpc3QgPSBbJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4Jywg JzknLCAnMyw0JywgJzMsNScsDQo+ICczLDYnLCAnMyw3JywgJzMsOCcsICczLDknLCAnNCw1Jywg JzQsNicsICc0LDcnLCAnNCw4JywgJzQsOScsICc1LDYnLA0KPiAnNSw3JywgJzUsOCcsICc1LDkn LCAnNiw3JywgJzYsOCcsICc2LDknLCAnNyw4JywgJzcsOScsICc4LDknXQ0KPiArICAgICAgICBm b3IgY29yZSBpbiBjb3JlbGlzdDoNCj4gKyAgICAgICAgICAgIHNlbGYucG9zaXRpdmVfNV90ZXN0 KGxjb3JlcywgY29yZSkNCj4gKw0KPiArCSNpdGVtIDYNCj4gKwlsY29yZXMgPSAnMiwgKDMtNSlA IDMnDQo+ICsgICAgICAgIGNvcmVsaXN0ID0gWycyJywgJzMnLCAnNCcsICc1JywgJzMsNCcsICcz LDUnLCAnNCw1JyBdDQo+ICsgICAgICAgIGZvciBjb3JlIGluIGNvcmVsaXN0Og0KPiArICAgICAg ICAgICAgc2VsZi5wb3NpdGl2ZV82X3Rlc3QobGNvcmVzLCBjb3JlKQ0KPiArCSNpdGVtIDcNCj4g KwlsY29yZXMgPSAnKDAsNy00KUAoNCw1KScNCj4gKwljb3JlbGlzdCA9IFsnNycsICc2JywgJzUn LCAnNCcsICc3LDYnLCAnNyw1JywgJzcsNCcsICc2LDUnLCAnNiw0JywNCj4gJzUsNCddDQo+ICsJ Zm9yIGNvcmUgaW4gY29yZWxpc3Q6DQo+ICsgICAgICAgICAgICBzZWxmLnBvc2l0aXZlXzdfdGVz dChsY29yZXMsIGNvcmUpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV90ZXN0KHNlbGYp Og0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgTmVnYXRpdmUgVGVzdA0KPiArICAgICAgICAi IiINCj4gKwlsY29yZXMgPSBbJygwLSw0LTcpQCg0LDUpJywgJygtMSw0LTcpQCg0LDUpJywgJygw LDQtNy05KUAoNCw1KScsDQo+ICcoMCxhYmNkKUAoNCw1KScsICcoMCw0LTcpQCgxLSw1KScsICco MCw0LTcpQCgtMSw1KScsICcoMCw0LTcpQCg0LDUtOC05KScsDQo+ICcoMCw0LTcpQChhYmMsNSkn LCAnKDAsNC03KUAoNCx4eXopJywgJygwLDQtNyk9KDgsOSknLCAnMiwzQDQsKDAtMSwsNCkpJywN Cj4gJ1swLSw0LTddQCg0LDUpJywgJygwLSw0LTcpQFs0LDVdJywgJzMtNEAzLDJANS02JywgJzIs LDMnJzItLTMnLA0KPiAnMiwsLDMnJzItLTMnXQ0KPiArCWZvciBsY29yZSBpbiBsY29yZXM6DQo+ ICsJICAgIHNlbGYuY2hlY2tfbmVnYXRpdmUobGNvcmUpDQo+ICsNCj4gKyAgICBkZWYgdGVhcl9k b3duKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFmdGVyIGVhY2ggdGVz dCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQua2lsbF9hbGwoKQ0K PiArDQo+ICsgICAgZGVmIHRlYXJfZG93bl9hbGwoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IHN1aXRlLg0KPiArICAgICAgICAiIiINCj4gLS0N Cj4gMS45LjMNCg0K