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 45AAF2E8A for ; Mon, 25 May 2015 10:40:54 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 25 May 2015 01:40:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,490,1427785200"; d="scan'208";a="715173296" Received: from pgsmsx105.gar.corp.intel.com ([10.221.44.96]) by fmsmga001.fm.intel.com with ESMTP; 25 May 2015 01:40:51 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by PGSMSX105.gar.corp.intel.com (10.221.44.96) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 25 May 2015 16:38:35 +0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.23]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.94]) with mapi id 14.03.0224.002; Mon, 25 May 2015 16:38:33 +0800 From: "Liu, Yong" To: "Tang, HaifengX" , "dts@dpdk.org" Thread-Topic: [dts] [PATCH] add unit_test_cmdline ,unit_test_dump and unit_test_eal test suite and testplan Thread-Index: AQHQlsA3AGnRAG5dY0mcvE+r7AcwcJ2MVwSA Date: Mon, 25 May 2015 08:38:34 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E10E3340A@SHSMSX103.ccr.corp.intel.com> References: <1432540503-14108-1-git-send-email-haifengx.tang@intel.com> In-Reply-To: <1432540503-14108-1-git-send-email-haifengx.tang@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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] [PATCH] add unit_test_cmdline , unit_test_dump and unit_test_eal test suite and testplan 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, 25 May 2015 08:40:55 -0000 SGFpZmVuZywgcGxlYXNlIHNlcGFyYXRlIGRpZmZlcmVudCBzdWl0ZXMgaW50byBpbmRlcGVuZGVu dCBwYXRjaGVzLiBJdCB3aWxsIGJlIGVhc2llciByZWFkIGFuZCBhZGQgY29tbWVudHMuDQoNClBs ZWFzZSBhZGQgbWlzc2luZyBkZXNjcmlwdGlvbnMgZm9yIHVuaXQgY2FzZXMuIA0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGR0cyBbbWFpbHRvOmR0cy1ib3VuY2VzQGRw ZGsub3JnXSBPbiBCZWhhbGYgT2YgaGFpZmVuZw0KPiBTZW50OiBNb25kYXksIE1heSAyNSwgMjAx NSAzOjU1IFBNDQo+IFRvOiBkdHNAZHBkay5vcmcNCj4gU3ViamVjdDogW2R0c10gW1BBVENIXSBh ZGQgdW5pdF90ZXN0X2NtZGxpbmUgLHVuaXRfdGVzdF9kdW1wIGFuZA0KPiB1bml0X3Rlc3RfZWFs IHRlc3Qgc3VpdGUgYW5kIHRlc3RwbGFuDQo+IA0KPiBGcm9tOiBUYW5nSGFpZmVuZyA8aGFpZmVu Z3gudGFuZ0BpbnRlbC5jb20+DQo+IA0KPiAtLS0NCj4gIHRlc3RfcGxhbnMvdW5pdF90ZXN0c19j bWRsaW5lX3Rlc3RfcGxhbi5yc3QgfCAgIDM4ICsrKw0KQ29tbWFuZCBsaW5lIGlzIGp1c3Qgb25l IHNpbXBsZSB0ZXN0IGxpa2UgZWFsIGF1dG90ZXN0LCBjYW4gd2UgbWVyZ2UgaXQgaW50byBUZXN0 U3VpdGVfdW5pdF90ZXN0c19lYWwucHk/DQoNCj4gIHRlc3RfcGxhbnMvdW5pdF90ZXN0c19kdW1w X3Rlc3RfcGxhbi5yc3QgICAgfCAgMTY5ICsrKysrKysrKysrDQo+ICB0ZXN0X3BsYW5zL3VuaXRf dGVzdHNfZWFsX3Rlc3RfcGxhbi5yc3QgICAgIHwgIDMxNSArKysrKysrKysrKysrKysrKysrKysN Cj4gIHRlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2NtZGxpbmUucHkgICAgICAgfCAgIDYwICsr KysNCj4gIHRlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2R1bXAucHkgICAgICAgICAgfCAgMTgx ICsrKysrKysrKysrKw0KPiAgdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZWFsLnB5ICAgICAg ICAgICB8ICA0MDkNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICA2IGZpbGVzIGNo YW5nZWQsIDExNzIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0ZXN0X3BsYW5zL3VuaXRfdGVzdHNfY21kbGluZV90ZXN0X3BsYW4ucnN0DQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdF9wbGFucy91bml0X3Rlc3RzX2R1bXBfdGVzdF9wbGFuLnJz dA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RfcGxhbnMvdW5pdF90ZXN0c19lYWxfdGVzdF9w bGFuLnJzdA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3Rz X2NtZGxpbmUucHkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9UZXN0U3VpdGVfdW5pdF90 ZXN0c19kdW1wLnB5DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvVGVzdFN1aXRlX3VuaXRf dGVzdHNfZWFsLnB5DQo+IA0KPiBkaWZmIC0tZ2l0IGEvdGVzdF9wbGFucy91bml0X3Rlc3RzX2Nt ZGxpbmVfdGVzdF9wbGFuLnJzdA0KPiBiL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19jbWRsaW5lX3Rl c3RfcGxhbi5yc3QNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uOTU3 MDJlMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19jbWRs aW5lX3Rlc3RfcGxhbi5yc3QNCj4gQEAgLTAsMCArMSwzOCBAQA0KPiArLi4gQ29weXJpZ2h0IChj KSA8MjAxMD4sIEludGVsIENvcnBvcmF0aW9uDQpJdCBoYXMgYmVlbiAyMDE1IGFscmVhZHksIHBs ZWFzZSBtb2RpZnkgY29weXJpZ2h0LiANCg0KPiArICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g Kw0KPiArICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0DQo+ICsgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gKyAgIGFyZSBtZXQ6DQo+ICsN Cj4gKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gKyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsg ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbg0KPiArICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKw0KPiArICAg LSBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg aXRzDQo+ICsgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsNCj4gKyAgIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN Cj4gKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UDQo+ICsgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KPiArICAgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gKyAgIENPUFlS SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwNCj4gKyAgIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO VElBTCBEQU1BR0VTDQo+ICsgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KPiArICAgSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULA0KPiArICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQ0KPiArICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KPiArICAgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT0NCj4gK0Nt ZGxpbmUgIEF1dG90ZXN0cw0KPiArPT09PT09PT09PT09PT09PT09DQo+ICsNCj4gKw0KPiArVE9E Ty4NCj4gZGlmZiAtLWdpdCBhL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19kdW1wX3Rlc3RfcGxhbi5y c3QNCj4gYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZHVtcF90ZXN0X3BsYW4ucnN0DQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjIzZGQ5OTMNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZHVtcF90ZXN0X3BsYW4ucnN0DQo+IEBA IC0wLDAgKzEsMTY5IEBADQo+ICsuLiBDb3B5cmlnaHQgKGMpIDwyMDE0PiwgSW50ZWwgQ29ycG9y YXRpb24NCg0KU2FtZSBhcyBhYm92ZS4NCg0KPiArICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g Kw0KPiArICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0DQo+ICsgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gKyAgIGFyZSBtZXQ6DQo+ICsN Cj4gKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gKyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsg ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbg0KPiArICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKw0KPiArICAg LSBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg aXRzDQo+ICsgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsNCj4gKyAgIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN Cj4gKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UDQo+ICsgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KPiArICAgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gKyAgIENPUFlS SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwNCj4gKyAgIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO VElBTCBEQU1BR0VTDQo+ICsgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KPiArICAgSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULA0KPiArICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQ0KPiArICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KPiArICAgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ICtEdW1wIGxvZyBoaXN0b3J5IEF1dG90ZXN0DQo+ICs9PT09PT09PT09PT09PT09PT09PT09 PT09DQo+ICsNCj4gK1RoaXMgaXMgdGhlIHRlc3QgcGxhbiBmb3IgZHVtcCBoaXN0b3J5IGxvZyBv ZiBJbnRlbMKuIERQREsgLg0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZXhwbGFpbnMgaG93IHRvIHJ1 biB0aGUgdW5pdCB0ZXN0cyBmb3IgZHVtcCBoaXN0b3J5IGxvZy4gVGhlDQo+IHRlc3QNCj4gK2Nh biBiZSBsYXVuY2hlZCBpbmRlcGVuZGVudGx5IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJm YWNlLg0KPiArVGhpcyB0ZXN0IGlzIGltcGxlbWVudGVkIGFzIGEgbGludXhhcHAgZW52aXJvbm1l bnQgYXBwbGljYXRpb24uDQo+ICsNCj4gK1RoZSBjb21wbGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5j aGVkIGF1dG9tYXRpY2FsbHkgdXNpbmcgYSBweXRob24tZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5j aGVkIHVzaW5nIGBgbWFrZSB0ZXN0YGApIHRoYXQgc2VuZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBh cHBsaWNhdGlvbiBhbmQgY2hlY2tzIHRoZSByZXN1bHRzLiBBIHRlc3QgcmVwb3J0IGlzIGRpc3Bs YXllZCBvbg0KPiArc3Rkb3V0Lg0KPiArDQo+ICtUaGUgc3RlcHMgdG8gcnVuIHRoZSB1bml0IHRl c3QgbWFudWFsbHkgYXJlIGFzIGZvbGxvdzo6DQo+ICsNCj4gKyAgIyBtYWtlIC1DIC4vYXBwL3Rl c3QvDQo+ICsgICMgLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZg0KPiArICBSVEU+PiBkdW1w X2xvZ19oaXN0b3J5DQo+ICsNCj4gK1RoZSBmaW5hbCBvdXRwdXQgb2YgdGhlIHRlc3Qgd2lsbCBi ZSB0aGUgaW5pdGlhbCBsb2cgb2YgRFBESy4NCj4gKw0KPiArPT09PT09PT09PT09PT09PT09DQo+ ICtEdW1wIHJpbmcgQXV0b3Rlc3QNCj4gKz09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGlz IGlzIHRoZSB0ZXN0IHBsYW4gZm9yIGR1bXAgdGhlIGVsZW1lbnRzIG9mIEludGVswq4gRFBESyBy aW5nLg0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZXhwbGFpbnMgaG93IHRvIHJ1biB0aGUgdW5pdCB0 ZXN0cyBmb3IgZHVtcCBlbGVtZW50cyBvZiByaW5nLg0KPiArVGhlIHRlc3QgY2FuIGJlIGxhdW5j aGVkIGluZGVwZW5kZW50bHkgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuDQo+ICtU aGlzIHRlc3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBsaW51eGFwcCBlbnZpcm9ubWVudCBhcHBsaWNh dGlvbi4NCj4gKw0KPiArVGhlIGNvbXBsZXRlIHRlc3Qgc3VpdGUgaXMgbGF1bmNoZWQgYXV0b21h dGljYWxseSB1c2luZyBhIHB5dGhvbi1leHBlY3QNCj4gK3NjcmlwdCAobGF1bmNoZWQgdXNpbmcg YGBtYWtlIHRlc3RgYCkgdGhhdCBzZW5kcyBjb21tYW5kcyB0bw0KPiArdGhlIGFwcGxpY2F0aW9u IGFuZCBjaGVja3MgdGhlIHJlc3VsdHMuIEEgdGVzdCByZXBvcnQgaXMgZGlzcGxheWVkIG9uDQo+ ICtzdGRvdXQuDQo+ICsNCj4gK1RoZSBzdGVwcyB0byBydW4gdGhlIHVuaXQgdGVzdCBtYW51YWxs eSBhcmUgYXMgZm9sbG93OjoNCj4gKw0KPiArICAjIG1ha2UgLUMgLi9hcHAvdGVzdC8NCj4gKyAg IyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmDQo+ICsgIFJURT4+IGR1bXBfcmluZw0KPiAr DQo+ICtUaGUgZmluYWwgb3V0cHV0IG9mIHRoZSB0ZXN0IHdpbGwgYmUgZGV0YWlsIGVsZW1lbnRz IG9mIERQREsgcmluZy4NCj4gKw0KPiArPT09PT09PT09PT09PT09PT09PT09DQo+ICtEdW1wIG1l bXBvb2wgQXV0b3Rlc3QNCj4gKz09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGlzIGlz IHRoZSB0ZXN0IHBsYW4gZm9yIGR1bXAgdGhlIGVsZW1lbnRzIG9mIEludGVswq4gRFBESyBtZW1w b29sLg0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZXhwbGFpbnMgaG93IHRvIHJ1biB0aGUgdW5pdCB0 ZXN0cyBmb3IgZHVtcCBlbGVtZW50cyBvZg0KPiBtZW1wb29sLg0KPiArVGhlIHRlc3QgY2FuIGJl IGxhdW5jaGVkIGluZGVwZW5kZW50bHkgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2Uu DQo+ICtUaGlzIHRlc3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBsaW51eGFwcCBlbnZpcm9ubWVudCBh cHBsaWNhdGlvbi4NCj4gKw0KPiArVGhlIGNvbXBsZXRlIHRlc3Qgc3VpdGUgaXMgbGF1bmNoZWQg YXV0b21hdGljYWxseSB1c2luZyBhIHB5dGhvbi1leHBlY3QNCj4gK3NjcmlwdCAobGF1bmNoZWQg dXNpbmcgYGBtYWtlIHRlc3RgYCkgdGhhdCBzZW5kcyBjb21tYW5kcyB0bw0KPiArdGhlIGFwcGxp Y2F0aW9uIGFuZCBjaGVja3MgdGhlIHJlc3VsdHMuIEEgdGVzdCByZXBvcnQgaXMgZGlzcGxheWVk IG9uDQo+ICtzdGRvdXQuDQo+ICsNCj4gK1RoZSBzdGVwcyB0byBydW4gdGhlIHVuaXQgdGVzdCBt YW51YWxseSBhcmUgYXMgZm9sbG93OjoNCj4gKw0KPiArICAjIG1ha2UgLUMgLi9hcHAvdGVzdC8N Cj4gKyAgIyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmDQo+ICsgIFJURT4+IGR1bXBfbWVt cG9vbA0KPiArDQo+ICtUaGUgZmluYWwgb3V0cHV0IG9mIHRoZSB0ZXN0IHdpbGwgYmUgZGV0YWls IGVsZW1lbnRzIG9mIERQREsgbWVtcG9vbC4NCj4gKw0KPiArPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCj4gK0R1bXAgUGh5c2ljYWwgbWVtb3J5IEF1dG90ZXN0DQo+ICs9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGlzIGlzIHRoZSB0ZXN0IHBsYW4gZm9yIGR1 bXAgdGhlIGVsZW1lbnRzIG9mIEludGVswq4gRFBESyBwaHlzaWNhbA0KPiBtZW1vcnkuDQo+ICsN Cj4gK1RoaXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8gcnVuIHRoZSB1bml0IHRlc3RzIGZvciBk dW1wIGVsZW1lbnRzIG9mDQo+IG1lbW9yeS4NCj4gK1RoZSB0ZXN0IGNhbiBiZSBsYXVuY2hlZCBp bmRlcGVuZGVudGx5IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLg0KPiArVGhpcyB0 ZXN0IGlzIGltcGxlbWVudGVkIGFzIGEgbGludXhhcHAgZW52aXJvbm1lbnQgYXBwbGljYXRpb24u DQo+ICsNCj4gK1RoZSBjb21wbGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5jaGVkIGF1dG9tYXRpY2Fs bHkgdXNpbmcgYSBweXRob24tZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5jaGVkIHVzaW5nIGBgbWFr ZSB0ZXN0YGApIHRoYXQgc2VuZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBhcHBsaWNhdGlvbiBhbmQg Y2hlY2tzIHRoZSByZXN1bHRzLiBBIHRlc3QgcmVwb3J0IGlzIGRpc3BsYXllZCBvbg0KPiArc3Rk b3V0Lg0KPiArDQo+ICtUaGUgc3RlcHMgdG8gcnVuIHRoZSB1bml0IHRlc3QgbWFudWFsbHkgYXJl IGFzIGZvbGxvdzo6DQo+ICsNCj4gKyAgIyBtYWtlIC1DIC4vYXBwL3Rlc3QvDQo+ICsgICMgLi9h cHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZg0KPiArICBSVEU+PiBkdW1wX3BoeXNtZW0NCj4gKw0K PiArVGhlIGZpbmFsIG91dHB1dCBvZiB0aGUgdGVzdCB3aWxsIGJlIGRldGFpbCBlbGVtZW50cyBv ZiBEUERLIHBoeXNpY2FsDQo+IG1lbW9yeS4NCj4gKw0KPiArPT09PT09PT09PT09PT09PT09PT09 DQo+ICtEdW1wIE1lbXpvbmUgQXV0b3Rlc3QNCj4gKz09PT09PT09PT09PT09PT09PT09PQ0KPiAr DQo+ICtUaGlzIGlzIHRoZSB0ZXN0IHBsYW4gZm9yIGR1bXAgdGhlIGVsZW1lbnRzIG9mIEludGVs wq4gRFBESyBtZW16b25lLg0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZXhwbGFpbnMgaG93IHRvIHJ1 biB0aGUgdW5pdCB0ZXN0cyBmb3IgZHVtcCBlbGVtZW50cyBvZg0KPiBtZW16b25lLg0KPiArVGhl IHRlc3QgY2FuIGJlIGxhdW5jaGVkIGluZGVwZW5kZW50bHkgdXNpbmcgdGhlIGNvbW1hbmQgbGlu ZSBpbnRlcmZhY2UuDQo+ICtUaGlzIHRlc3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBsaW51eGFwcCBl bnZpcm9ubWVudCBhcHBsaWNhdGlvbi4NCj4gKw0KPiArVGhlIGNvbXBsZXRlIHRlc3Qgc3VpdGUg aXMgbGF1bmNoZWQgYXV0b21hdGljYWxseSB1c2luZyBhIHB5dGhvbi1leHBlY3QNCj4gK3Njcmlw dCAobGF1bmNoZWQgdXNpbmcgYGBtYWtlIHRlc3RgYCkgdGhhdCBzZW5kcyBjb21tYW5kcyB0bw0K PiArdGhlIGFwcGxpY2F0aW9uIGFuZCBjaGVja3MgdGhlIHJlc3VsdHMuIEEgdGVzdCByZXBvcnQg aXMgZGlzcGxheWVkIG9uDQo+ICtzdGRvdXQuDQo+ICsNCj4gK1RoZSBzdGVwcyB0byBydW4gdGhl IHVuaXQgdGVzdCBtYW51YWxseSBhcmUgYXMgZm9sbG93OjoNCj4gKw0KPiArICAjIG1ha2UgLUMg Li9hcHAvdGVzdC8NCj4gKyAgIyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmDQo+ICsgIFJU RT4+IGR1bXBfbWVtem9uZQ0KPiArDQo+ICtUaGUgZmluYWwgb3V0cHV0IG9mIHRoZSB0ZXN0IHdp bGwgYmUgZGV0YWlsIGVsZW1lbnRzIG9mIERQREsgbWVtem9uZS4NCj4gKw0KPiArPT09PT09PT09 PT09PT09PQ0KPiArRHVtcCBTdHJ1Y3Qgc2l6ZQ0KPiArPT09PT09PT09PT09PT09PQ0KPiArDQo+ ICtUaGlzIGlzIHRoZSB0ZXN0IHBsYW4gZm9yIGR1bXAgdGhlIHNpemUgb2YgSW50ZWzCriBEUERL IHN0cnVjdHVyZS4NCj4gKw0KPiArVGhpcyBzZWN0aW9uIGV4cGxhaW5zIGhvdyB0byBydW4gdGhl IHVuaXQgdGVzdHMgZm9yIGR1bXAgc3RydWN0dXJlIHNpemUuDQo+ICtUaGUgdGVzdCBjYW4gYmUg bGF1bmNoZWQgaW5kZXBlbmRlbnRseSB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZS4N Cj4gK1RoaXMgdGVzdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGxpbnV4YXBwIGVudmlyb25tZW50IGFw cGxpY2F0aW9uLg0KPiArDQo+ICtUaGUgY29tcGxldGUgdGVzdCBzdWl0ZSBpcyBsYXVuY2hlZCBh dXRvbWF0aWNhbGx5IHVzaW5nIGEgcHl0aG9uLWV4cGVjdA0KPiArc2NyaXB0IChsYXVuY2hlZCB1 c2luZyBgYG1ha2UgdGVzdGBgKSB0aGF0IHNlbmRzIGNvbW1hbmRzIHRvDQo+ICt0aGUgYXBwbGlj YXRpb24gYW5kIGNoZWNrcyB0aGUgcmVzdWx0cy4gQSB0ZXN0IHJlcG9ydCBpcyBkaXNwbGF5ZWQg b24NCj4gK3N0ZG91dC4NCj4gKw0KPiArVGhlIHN0ZXBzIHRvIHJ1biB0aGUgdW5pdCB0ZXN0IG1h bnVhbGx5IGFyZSBhcyBmb2xsb3c6Og0KPiArDQo+ICsgICMgbWFrZSAtQyAuL2FwcC90ZXN0Lw0K PiArICAjIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYNCj4gKyAgUlRFPj4gZHVtcF9zdHJ1 Y3Rfc2l6ZXMNCj4gKw0KPiArVGhlIGZpbmFsIG91dHB1dCBvZiB0aGUgdGVzdCB3aWxsIGJlIHRo ZSBzaXplIG9mIERQREsgc3RydWN0dXJlLg0KPiBkaWZmIC0tZ2l0IGEvdGVzdF9wbGFucy91bml0 X3Rlc3RzX2VhbF90ZXN0X3BsYW4ucnN0DQo+IGIvdGVzdF9wbGFucy91bml0X3Rlc3RzX2VhbF90 ZXN0X3BsYW4ucnN0DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmMx Zjg5NTANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZWFs X3Rlc3RfcGxhbi5yc3QNCj4gQEAgLTAsMCArMSwzMTUgQEANCj4gKy4uIENvcHlyaWdodCAoYykg PDIwMTA+LCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g Kw0KPiArICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0DQo+ICsgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gKyAgIGFyZSBtZXQ6DQo+ICsN Cj4gKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gKyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsg ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbg0KPiArICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKw0KPiArICAg LSBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg aXRzDQo+ICsgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsNCj4gKyAgIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN Cj4gKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UDQo+ICsgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KPiArICAgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gKyAgIENPUFlS SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwNCj4gKyAgIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO VElBTCBEQU1BR0VTDQo+ICsgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KPiArICAgSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULA0KPiArICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQ0KPiArICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KPiArICAgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiArDQo+ICs9PT09PT09PT09PT09DQo+ICtFQUwgQXV0 b3Rlc3RzDQo+ICs9PT09PT09PT09PT09DQo+ICsNCj4gK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMg dGhlIHRlc3RzIHRoYXQgYXJlIGRvbmUgdG8gdmFsaWRhdGUgdGhlIEVBTC4gRWFjaA0KPiArdGVz dCBjYW4gYmUgbGF1bmNoZWQgaW5kZXBlbmRlbnRseSB1c2luZyB0aGUgY29tbWFuZCBsaW5lDQo+ ICtpbnRlcmZhY2UuIFRoZXNlIHRlc3RzIGFyZSBpbXBsZW1lbnRlZCBhcyBhIGxpbnV4YXBwIGVu dmlyb25tZW50DQo+ICthcHBsaWNhdGlvbi4NCj4gKw0KPiArVGhlIGNvbXBsZXRlIHRlc3Qgc3Vp dGUgaXMgbGF1bmNoZWQgYXV0b21hdGljYWxseSB1c2luZyBhIHB5dGhvbi1leHBlY3QNCj4gK3Nj cmlwdCAobGF1bmNoZWQgdXNpbmcgYGBtYWtlIHRlc3RgYCkgdGhhdCBzZW5kcyBjb21tYW5kcyB0 bw0KPiArdGhlIGFwcGxpY2F0aW9uIGFuZCBjaGVja3MgdGhlIHJlc3VsdHMuIEEgdGVzdCByZXBv cnQgaXMgZGlzcGxheWVkIG9uDQo+ICtzdGRvdXQuDQo+ICsNCj4gK1ZlcnNpb24NCj4gKz09PT09 PT0NCj4gKw0KPiArVG8gQmUgRmlsbGVkDQoNClBsZWFzZSBmaWxsIGluIHRoZXNlIGZ1bmN0aW9u IGRlc2NyaXB0aW9ucy4NCg0KPiArDQo+ICsNCj4gK0NvbW1vbg0KPiArPT09PT09PQ0KPiArDQo+ ICtUbyBCZSBGaWxsZWQNCj4gKw0KUGxlYXNlIGZpbGwgaW4gdGhlc2UgZnVuY3Rpb24gZGVzY3Jp cHRpb25zLg0KDQo+ICtFYWxfZnMNCj4gKz09PT09PQ0KPiArDQo+ICtUbyBCZSBGaWxsZWQNCj4g Kw0KUGxlYXNlIGZpbGwgaW4gdGhlc2UgZnVuY3Rpb24gZGVzY3JpcHRpb25zLg0KDQo+ICtNZW1v cnkNCj4gKz09PT09PQ0KPiArDQo+ICstIER1bXAgdGhlIG1hcHBlZCBtZW1vcnkuIFRoZSBweXRo b24tZXhwZWN0IHNjcmlwdCBjaGVja3MgdGhhdCBhdA0KPiArICBsZWFzdCBvbmUgbGluZSBpcyBk dW1wZWQuDQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCBtZW1vcnkgc2l6ZSBpcyBkaWZmZXJlbnQgdGhh biAwLg0KPiArDQo+ICstIFRyeSB0byByZWFkIGFsbCBtZW1vcnk7IGl0IHNob3VsZCBub3Qgc2Vn ZmF1bHQuDQo+ICsNCj4gK1BDSQ0KPiArPT09DQo+ICsNCj4gKy0gUmVnaXN0ZXIgYSBkcml2ZXIg d2l0aCBhIGBgZGV2aW5pdCgpYGAgZnVuY3Rpb24uDQo+ICsNCj4gKy0gRHVtcCBhbGwgUENJIGRl dmljZXMuDQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCB0aGUgYGBkZXZpbml0KClgYCBmdW5jdGlvbiBp cyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4NCj4gKw0KPiArUGVyLWxjb3JlIFZhcmlhYmxlcyBhbmQg bGNvcmUgTGF1bmNoDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g Kw0KPiArLSBVc2UgYGBydGVfZWFsX21wX3JlbW90ZV9sYXVuY2goKWBgIHRvIGNhbGwgYGBhc3Np Z25fdmFycygpYGAgb24NCj4gKyAgZXZlcnkgYXZhaWxhYmxlIGxjb3JlLiBJbiB0aGlzIGZ1bmN0 aW9uLCBhIHBlci1sY29yZSB2YXJpYWJsZSBpcw0KPiArICBhc3NpZ25lZCB0byB0aGUgbGNvcmVf aWQuDQo+ICsNCj4gKy0gVXNlIGBgcnRlX2VhbF9tcF9yZW1vdGVfbGF1bmNoKClgYCB0byBjYWxs IGBgZGlzcGxheV92YXJzKClgYCBvbg0KPiArICBldmVyeSBhdmFpbGFibGUgbGNvcmUuIFRoZSBm dW5jdGlvbiBjaGVja3MgdGhhdCB0aGUgdmFyaWFibGUgaXMNCj4gKyAgY29ycmVjdGx5IHNldCwg b3IgcmV0dXJucyAtMS4NCj4gKw0KPiArLSBJZiBhdCBsZWFzdCBvbmUgcGVyLWNvcmUgdmFyaWFi bGUgd2FzIG5vdCBjb3JyZWN0LCB0aGUgdGVzdCBmdW5jdGlvbg0KPiArICByZXR1cm5zIC0xLg0K PiArDQo+ICtTcGlubG9jaw0KPiArPT09PT09PT0NCj4gKw0KPiArLSBUaGVyZSBpcyBhIGdsb2Jh bCBzcGlubG9jayBhbmQgYSB0YWJsZSBvZiBzcGlubG9ja3MgKG9uZSBwZXIgbGNvcmUpLg0KPiAr DQo+ICstIFRoZSB0ZXN0IGZ1bmN0aW9uIHRha2VzIGFsbCBvZiB0aGVzZSBsb2NrcyBhbmQgbGF1 bmNoZXMgdGhlDQo+ICsgIGBgdGVzdF9zcGlubG9ja19wZXJfY29yZSgpYGAgZnVuY3Rpb24gb24g ZWFjaCBjb3JlIChleGNlcHQgdGhlIG1hc3RlcikuDQo+ICsNCj4gKyAgLSBUaGUgZnVuY3Rpb24g dGFrZXMgdGhlIGdsb2JhbCBsb2NrLCBkaXNwbGF5cyBzb21ldGhpbmcsIHRoZW4gcmVsZWFzZXMN Cj4gKyAgICB0aGUgZ2xvYmFsIGxvY2suDQo+ICsgIC0gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBw ZXItbGNvcmUgbG9jaywgZGlzcGxheXMgc29tZXRoaW5nLCB0aGVuDQo+IHJlbGVhc2VzDQo+ICsg ICAgdGhlIHBlci1jb3JlIGxvY2suDQo+ICsNCj4gKy0gVGhlIG1haW4gZnVuY3Rpb24gdW5sb2Nr cyB0aGUgcGVyLWxjb3JlIGxvY2tzIHNlcXVlbnRpYWxseSBhbmQNCj4gKyAgd2FpdHMgYmV0d2Vl biBlYWNoIGxvY2suIFRoaXMgdHJpZ2dlcnMgdGhlIGRpc3BsYXkgb2YgYSBtZXNzYWdlDQo+ICsg IGZvciBlYWNoIGNvcmUsIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBUaGUgYXV0b3Rlc3Qgc2NyaXB0 IGNoZWNrcyB0aGF0DQo+ICsgIHRoaXMgb3JkZXIgaXMgY29ycmVjdC4NCj4gKw0KPiArUndsb2Nr DQo+ICs9PT09PT0NCj4gKw0KPiArLSBUaGVyZSBpcyBhIGdsb2JhbCByd2xvY2sgYW5kIGEgdGFi bGUgb2Ygcndsb2NrcyAob25lIHBlciBsY29yZSkuDQo+ICsNCj4gKy0gVGhlIHRlc3QgZnVuY3Rp b24gdGFrZXMgYWxsIG9mIHRoZXNlIGxvY2tzIGFuZCBsYXVuY2hlcyB0aGUNCj4gKyAgYGB0ZXN0 X3J3bG9ja19wZXJfY29yZSgpYGAgZnVuY3Rpb24gb24gZWFjaCBjb3JlIChleGNlcHQgdGhlIG1h c3RlcikuDQo+ICsNCj4gKyAgLSBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGdsb2JhbCB3cml0ZSBs b2NrLCBkaXNwbGF5IHNvbWV0aGluZywNCj4gKyAgICB0aGVuIHJlbGVhc2VzIHRoZSBnbG9iYWwg bG9jay4NCj4gKyAgLSBUaGVuLCBpdCB0YWtlcyB0aGUgcGVyLWxjb3JlIHdyaXRlIGxvY2ssIGRp c3BsYXkgc29tZXRoaW5nLCBhbmQNCj4gKyAgICByZWxlYXNlcyB0aGUgcGVyLWNvcmUgbG9jay4N Cj4gKyAgLSBGaW5hbGx5LCBhIHJlYWQgbG9jayBpcyB0YWtlbiBkdXJpbmcgMTAwIG1zLCB0aGVu IHJlbGVhc2VkLg0KPiArDQo+ICstIFRoZSBtYWluIGZ1bmN0aW9uIHVubG9ja3MgdGhlIHBlci1s Y29yZSBsb2NrcyBzZXF1ZW50aWFsbHkgYW5kDQo+ICsgIHdhaXRzIGJldHdlZW4gZWFjaCBsb2Nr LiBUaGlzIHRyaWdnZXJzIHRoZSBkaXNwbGF5IG9mIGEgbWVzc2FnZQ0KPiArICBmb3IgZWFjaCBj b3JlLCBpbiB0aGUgY29ycmVjdCBvcmRlci4NCj4gKw0KPiArICBUaGVuLCBpdCB0cmllcyB0byB0 YWtlIHRoZSBnbG9iYWwgd3JpdGUgbG9jayBhbmQgZGlzcGxheSB0aGUgbGFzdA0KPiArICBtZXNz YWdlLiBUaGUgYXV0b3Rlc3Qgc2NyaXB0IGNoZWNrcyB0aGF0IHRoZSBtZXNzYWdlIG9yZGVyIGlz IGNvcnJlY3QuDQo+ICsNCj4gK0F0b21pYyBWYXJpYWJsZXMNCj4gKz09PT09PT09PT09PT09PT0N Cj4gKw0KPiArLSBUaGUgbWFpbiB0ZXN0IGZ1bmN0aW9uIHBlcmZvcm1zIHRocmVlIHN1YnRlc3Rz LiBUaGUgZmlyc3QgdGVzdA0KPiArICBjaGVja3MgdGhhdCB0aGUgdXN1YWwgaW5jL2RlYy9hZGQv c3ViIGZ1bmN0aW9ucyBhcmUgd29ya2luZw0KPiArICBjb3JyZWN0bHk6DQo+ICsNCj4gKyAgLSBJ bml0aWFsaXplIDMyLWJpdCBhbmQgNjQtYml0IGF0b21pYyB2YXJpYWJsZXMgdG8gc3BlY2lmaWMN Cj4gKyAgICB2YWx1ZXMuDQo+ICsNCj4gKyAgLSBUaGVzZSB2YXJpYWJsZXMgYXJlIGluY3JlbWVu dGVkIGFuZCBkZWNyZW1lbnRlZCBvbiBlYWNoIGNvcmUgYXQNCj4gKyAgICB0aGUgc2FtZSB0aW1l IGluIGBgdGVzdF9hdG9taWNfdXN1YWwoKWBgLg0KPiArDQo+ICsgIC0gVGhlIGZ1bmN0aW9uIGNo ZWNrcyB0aGF0IG9uY2UgYWxsIGxjb3JlcyBmaW5pc2ggdGhlaXIgZnVuY3Rpb24sDQo+ICsgICAg dGhlIHZhbHVlIG9mIHRoZSBhdG9taWMgdmFyaWFibGVzIGFyZSBzdGlsbCB0aGUgc2FtZS4NCj4g Kw0KPiArLSBUaGUgc2Vjb25kIHRlc3QgdmVyaWZpZXMgdGhlIGJlaGF2aW9yIG9mICJ0ZXN0IGFu ZCBzZXQiIGZ1bmN0aW9ucy4NCj4gKw0KPiArICAtIEluaXRpYWxpemUgMzItYml0IGFuZCA2NC1i aXQgYXRvbWljIHZhcmlhYmxlcyB0byB6ZXJvLg0KPiArDQo+ICsgIC0gSW52b2tlIGBgdGVzdF9h dG9taWNfdGFzKClgYCBvbiBlYWNoIGxjb3JlIGJlZm9yZSBkb2luZyBhbnl0aGluZw0KPiArICAg IGVsc2UuIFRoZSBjb3JlcyBhcmUgYXdhaXRpbmcgc3luY2hyb25pemF0aW9pbiB1c2luZyB0aGUg YGB3aGlsZQ0KPiArICAgIChydGVfYXRvbWljMzJfcmVhZCgmdmFsKSA9PSAwKWBgIHN0YXRlbWVu dCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgdGhlDQo+ICsgICAgbWFpbiB0ZXN0IGZ1bmN0aW9uLiBU aGVuIGFsbCBjb3JlcyBkbyBhbg0KPiArICAgIGBgcnRlX2F0b21pY1hYX3Rlc3RfYW5kX3NldCgp YGAgYXQgdGhlIHNhbWUgdGltZS4gSWYgaXQgaXMgc3VjY2Vzc2Z1bCwNCj4gKyAgICBpdCBpbmNy ZW1lbnRzIGFub3RoZXIgYXRvbWljIGNvdW50ZXIuDQo+ICsNCj4gKyAgLSBUaGUgbWFpbiBmdW5j dGlvbiBjaGVja3MgdGhhdCB0aGUgYXRvbWljIGNvdW50ZXIgd2FzIGluY3JlbWVudGVkDQo+ICsg ICAgdHdpY2Ugb25seSAob25lIGZvciAzMi1iaXQgYW5kIG9uZSBmb3IgNjQtYml0IHZhbHVlcyku DQo+ICsNCj4gKy0gVGVzdCAiYWRkL3N1YiBhbmQgcmV0dXJuIg0KPiArDQo+ICsgIC0gSW5pdGlh bGl6ZSAzMi1iaXQgYW5kIDY0LWJpdCBhdG9taWMgdmFyaWFibGVzIHRvIHplcm8uDQo+ICsNCj4g KyAgLSBJbnZva2UgYGB0ZXN0X2F0b21pY19hZGRzdWJfcmV0dXJuKClgYCBvbiBlYWNoIGxjb3Jl LiBCZWZvcmUgZG9pbmcNCj4gKyAgICBhbnl0aGluZyBlbHNlLCB0aGUgY29yZXMgYXJlIHdhaXRp bmcgYSBzeW5jaHJvLiBFYWNoIGxjb3JlIGRvZXMNCj4gKyAgICB0aGlzIG9wZXJhdGlvbiBzZXZl cmFsIHRpbWVzOjoNCj4gKw0KPiArICAgICAgdG1wID0gYXRvbWljX2FkZF9yZXR1cm4oJmEsIDEp Ow0KPiArICAgICAgYXRvbWljX2FkZCgmY291bnQsIHRtcCk7DQo+ICsgICAgICB0bXAgPSBhdG9t aWNfc3ViX3JldHVybigmYSwgMSk7DQo+ICsgICAgICBhdG9taWNfc3ViKCZjb3VudCwgdG1wKzEp Ow0KPiArDQo+ICsgIC0gQXQgdGhlIGVuZCBvZiB0aGUgdGVzdCwgdGhlICpjb3VudCogdmFsdWUg bXVzdCBiZSAwLg0KPiArDQo+ICtQcmVmZXRjaA0KPiArPT09PT09PT0NCj4gKw0KPiArSnVzdCB0 ZXN0IHRoYXQgdGhlIG1hY3JvIGNhbiBiZSBjYWxsZWQgYW5kIHZhbGlkYXRlIHRoZSBjb21waWxh dGlvbi4NCj4gK1RoZSB0ZXN0IGFsd2F5cyByZXR1cm4gc3VjY2Vzcy4NCj4gKw0KPiArQnl0ZW9y ZGVyIGZ1bmN0aW9ucw0KPiArPT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtDaGVjayB0aGUg cmVzdWx0IG9mIG9wdGltaXplZCBieXRlIHN3YXAgZnVuY3Rpb25zIGZvciBlYWNoIHNpemUgKDE2 LSwNCj4gKzMyLSBhbmQgNjQtYml0KS4NCj4gKw0KPiArQ3ljbGVzIFRlc3QNCj4gKz09PT09PT09 PT09DQo+ICsNCj4gKy0gTG9vcCBOIHRpbWVzIGFuZCBjaGVjayB0aGF0IHRoZSB0aW1lciBhbHdh eSBpbmNyZW1lbnRzIGFuZA0KPiArICBuZXZlciBkZWNyZW1lbnRzIGR1cmluZyB0aGlzIGxvb3Au DQo+ICsNCj4gKy0gV2FpdCBvbmUgc2Vjb25kIHVzaW5nIHJ0ZV91c2xlZXAoKSBhbmQgY2hlY2sg dGhhdCB0aGUgaW5jcmVtZW50DQo+ICsgIG9mIGN5Y2xlcyBpcyBjb3JyZWN0IHdpdGggcmVnYXJk IHRvIHRoZSBmcmVxdWVuY3kgb2YgdGhlIHRpbWVyLg0KPiArDQo+ICtMb2dzDQo+ICs9PT09DQo+ ICsNCj4gKy0gRW5hYmxlIGxvZyB0eXBlcy4NCj4gKy0gU2V0IGxvZyBsZXZlbC4NCj4gKy0gRXhl Y3V0ZSBsb2dnaW5nIGZ1bmN0aW9ucyB3aXRoIGRpZmZlcmVudCB0eXBlcyBhbmQgbGV2ZWxzOyBz b21lIHNob3VsZA0KPiArICBub3QgYmUgZGlzcGxheWVkLg0KPiArDQo+ICtNZW16b25lDQo+ICs9 PT09PT09DQo+ICsNCj4gKy0gU2VhcmNoIGZvciB0aHJlZSByZXNlcnZlZCB6b25lcyBvciByZXNl cnZlIHRoZW0gaWYgdGhleSBkbyBub3QgZXhpc3Q6DQo+ICsNCj4gKyAgLSBPbmUgaXMgb24gYW55 IHNvY2tldCBpZC4NCj4gKyAgLSBUaGUgc2Vjb25kIGlzIG9uIHNvY2tldCAwLg0KPiArICAtIFRo ZSBsYXN0IG9uZSBpcyBvbiBzb2NrZXQgMSAoaWYgc29ja2V0IDEgZXhpc3RzKS4NCj4gKw0KPiAr LSBDaGVjayB0aGF0IHRoZSB6b25lcyBleGlzdC4NCj4gKw0KPiArLSBDaGVjayB0aGF0IHRoZSB6 b25lcyBhcmUgY2FjaGUtYWxpZ25lZC4NCj4gKw0KPiArLSBDaGVjayB0aGF0IHpvbmVzIGRvIG5v dCBvdmVybGFwLg0KPiArDQo+ICstIENoZWNrIHRoYXQgdGhlIHpvbmVzIGFyZSBvbiB0aGUgY29y cmVjdCBzb2NrZXQgaWQuDQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCBhIGxvb2t1cCBvZiB0aGUgZmly c3Qgem9uZSByZXR1cm5zIHRoZSBzYW1lIHBvaW50ZXIuDQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCBp dCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIGFub3RoZXIgem9uZSB3aXRoIHRoZQ0KPiArICBz YW1lIG5hbWUgYXMgYW4gZXhpc3Rpbmcgem9uZS4NCj4gKw0KPiArTWVtY3B5DQo+ICs9PT09PT0N Cj4gKw0KPiArQ3JlYXRlIHR3byBidWZmZXJzLCBhbmQgaW5pdGlhbGlzZSBvbmUgd2l0aCByYW5k b20gdmFsdWVzLiBUaGVzZSBhcmUNCj4gY29waWVkDQo+ICt0byB0aGUgc2Vjb25kIGJ1ZmZlciBh bmQgdGhlbiBjb21wYXJlZCB0byBzZWUgaWYgdGhlIGNvcHkgd2FzIHN1Y2Nlc3NmdWxsLg0KPiAr VGhlIGJ5dGVzIG91dHNpZGUgdGhlIGNvcGllZCBhcmVhIGFyZSBhbHNvIGNoZWNrZWQgdG8gbWFr ZSBzdXJlIHRoZXkgd2VyZQ0KPiBub3QNCj4gK2NoYW5nZWQuDQo+ICsNCj4gK1RoaXMgaXMgcmVw ZWF0ZWQgZm9yIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBzaXplcyBhbmQgb2Zmc2V0cywgd2l0aA0K PiArdGhlIHNlY29uZCBidWZmZXIgYmVpbmcgY2xlYXJlZCBiZWZvcmUgZWFjaCB0ZXN0Lg0KPiAr DQo+ICtEZWJ1ZyB0ZXN0DQo+ICs9PT09PT09PT09DQo+ICsNCj4gKy0gQ2FsbCBydGVfZHVtcF9z dGFjaygpIGFuZCBydGVfZHVtcF9yZWdpc3RlcnMoKS4NCj4gKw0KPiArQWxhcm0NCj4gKz09PT09 DQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCB0aGUgY2FsbGJhY2sgZm9yIHRoZSBhbGFybSBjYW4gdG8g YmUgY2FsbGVkLg0KPiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZXQgYWxh cm0gd2l0aCBpbnZhbGlkIHRpbWUgdmFsdWUuDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBv c3NpYmxlIHRvIHNldCBhbGFybSB3aXRob3V0IGEgY2FsbGJhY2suDQo+ICstIENoZWNrIHRoYXQg aXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbmNlbCBhbGFybSB3aXRob3V0IGEgY2FsbGJhY2sNCj4g cG9pbnRlci4NCj4gKy0gQ2hlY2sgdGhhdCBtdWx0aXBsZSBjYWxsYmFja3MgZm9yIHRoZSBhbGFy bSBjYW4gYmUgY2FsbGVkLg0KPiArLSBDaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgcmVtb3ZlZCBh bmQgdW5yZW1vdmVkIGFsYXJtcyBhcmUgY29ycmVjdC4NCj4gKy0gQ2hlY2sgdGhhdCBubyBjYWxs YmFjayBpcyBjYWxsZWQgaWYgYWxsIGFsYXJtIHJlbW92ZWQuDQo+ICstIENoZWNrIHRoYXQgaXQg aXMgbm90IHBvc3NpYmxlIHRvIGNhbmNlbCBhbiBhbGFybSB3aXRoaW4gdGhlIGNhbGxiYWNrDQo+ IGl0c2VsZi4NCj4gKy0gQ2hlY2sgdGhhdCB0aGUgY2FsbGJhY2sgd2hpY2ggaXMgdGhlIGhlYWQg b2YgYWxsIGlzIGFibGUgdG8gYmUgcmVtb3ZlZC4NCj4gKy0gQ2hlY2sgdGhhdCBhbGwgYWxhcm1z IGZvciB0aGUgc2FtZSBjYWxsYmFjayBjYW4gYmUgY2FuY2VsbGVkLg0KPiArDQo+ICsNCj4gK0NQ VSBmbGFncw0KPiArPT09PT09PT09DQo+ICsNCj4gKy0gVXNpbmcgdGhlIHJ0ZV9jcHVfZ2V0X2Zs YWdfZW5hYmxlZCgpIGNoZWNrcyBmb3IgQ1BVIGZlYXR1cmVzIGZyb20NCj4gZGlmZmVyZW50IENQ VUlEIHRhYmxlcw0KPiArLSBDaGVja3MgaWYgcnRlX2NwdV9nZXRfZmxhZ19lbmFibGVkKCkgcHJv cGVybHkgZmFpbHMgb24gdHJ5aW5nIHRvIGNoZWNrDQo+IGZvciBpbnZhbGlkIGZlYXR1cmUNCj4g Kw0KPiArDQo+ICtFcnJubw0KPiArPT09PT0NCj4gKw0KPiArUGVyZm9ybXMgdmFsaWRhdGlvbiBv biB0aGUgZXJyb3IgbWVzc2FnZSBzdHJpbmdzIHByb3ZpZGVkIGJ5IHRoZQ0KPiBydGVfc3RyZXJy b3IoKSBjYWxsLCB0byBlbnN1cmUgdGhhdCBzdWl0YWJsZSBzdHJpbmdzIGFyZSByZXR1cm5lZCBm b3IgdGhlDQo+IHJ0ZS1zcGVjaWZpYyBlcnJvciBjb2RlcywgYXMgd2VsbCBhcyBlbnN1cmluZyB0 aGF0IGZvciBzdGFuZGFyZCBlcnJvcg0KPiBjb2RlcyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdl IGlzIHJldHVybmVkLg0KPiArDQo+ICtJbnRlcnJ1cHRzDQo+ICs9PT09PT09PT09DQo+ICstIENo ZWNrIHRoYXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgc3BlY2lmaWMgaW50ZXJydXB0IGNhbiBiZSBj YWxsZWQuDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlZ2lzdGVyIGEg Y2FsbGJhY2sgdG8gYW4gaW52YWxpZA0KPiBpbnRlcnJ1cHQgaGFuZGxlLg0KPiArLSBDaGVjayB0 aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZWdpc3RlciBubyBjYWxsYmFjayB0byBhbiBpbnRl cnJ1cHQNCj4gaGFuZGxlLg0KPiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1 bnJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYW4gaW52YWxpZA0KPiBpbnRlcnJ1cHQgaGFuZGxlLg0K PiArLSBDaGVjayB0aGF0IG11bHRpcGxlIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCB0byB0aGUg c2FtZSBpbnRlcnJ1cHQNCj4gaGFuZGxlLg0KPiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3Nz aWJsZSB0byB1bnJlZ2lzdGVyIGEgY2FsbGJhY2sgd2l0aCBpbnZhbGlkDQo+IHBhcmFtZXRlci4N Cj4gKy0gQ2hlY2sgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gZW5hYmxlIGFuIGludGVycnVw dCB3aXRoIGludmFsaWQNCj4gaGFuZGxlIG9yIHdyb25nIGhhbmRsZSB0eXBlLg0KPiArLSBDaGVj ayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGFuIGludGVycnVwdCB3aXRoIGlu dmFsaWQNCj4gaGFuZGxlIG9yIHdyb25nIGhhbmRsZSB0eXBlLg0KPiArDQo+ICsNCj4gK011bHRp cHJvY2Vzcw0KPiArPT09PT09PT09PT09DQo+ICsNCj4gK1ZhbGlkYXRlcyB0aGF0IGEgc2Vjb25k YXJ5IEludGVsIERQREsgaW5zdGFuY2UgY2FuIGJlIHJ1biBhbG9uZ3NpZGUgYQ0KPiBwcmltYXJ5 IHdoZW4gdGhlIGFwcHJvcHJpYXRlIEVBTCBjb21tYW5kLWxpbmUgZmxhZ3MgYXJlIHBhc3NlZC4g QWxzbw0KPiB2YWxpZGF0ZXMgdGhhdCBzZWNvbmRhcnkgcHJvY2Vzc2VzIGNhbm5vdCBpbnRlcmZl cmUgd2l0aCBwcmltYXJ5IHByb2Nlc3Nlcw0KPiBieSBjcmVhdGluZyBtZW1vcnkgb2JqZWN0cywg c3VjaCBhcyBtZW1wb29scyBvciByaW5ncy4NCj4gKw0KPiArU3RyaW5nDQo+ICs9PT09PT0NCj4g Kw0KPiArUGVyZm9ybXMgdmFsaWRhdGlvbiBvbiB0aGUgbmV3IHN0cmluZyBmdW5jdGlvbnMgcHJv dmlkZWQgaW4NCj4gcnRlX3N0cmluZ19mbnMuaCwgZW5zdXJpbmcgdGhhdCBhbGwgdmFsdWVzIHJl dHVybmVkIGFyZSBOVUxMIHRlcm1pbmF0ZWQsDQo+IGFuZCB0aGF0IHN1aXRhYmxlIGVycm9ycyBh cmUgcmV0dXJuZWQgd2hlbiBjYWxsZWQgd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMuDQo+ICsNCj4g K1RhaWxxDQo+ICs9PT09PQ0KPiArDQo+ICtWYWxpZGF0ZXMgdGhhdCB3ZSBjYW4gY3JlYXRlIGFu ZCBwZXJmb3JtIGxvb2t1cHMgb24gbmFtZWQgdGFpbCBxdWV1ZXMNCj4gd2l0aGluIHRoZSBFQUwg Zm9yIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiBBbHNvIGVuc3VyZXMgYXBwcm9wcmlhdGUgZXJyb3IN Cj4gY29kZXMgYXJlIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9ucyBpZiBpbnZhbGlkIHBhcmFt ZXRlcnMgYXJlIHBhc3NlZC4NCj4gKw0KPiArRGV2YXJncw0KPiArPT09PT09PQ0KPiArVG8gQmUg RmlsbGVkDQo+ICsNCg0KUGxlYXNlIGZpbGwgaW4gdGhlc2UgZnVuY3Rpb24gZGVzY3JpcHRpb25z Lg0KPiArS3ZhcmdzDQo+ICs9PT09PT0NCj4gK1RvIEJlIEZpbGxlZA0KPiArDQoNClBsZWFzZSBm aWxsIGluIHRoZXNlIGZ1bmN0aW9uIGRlc2NyaXB0aW9ucy4NCj4gK0FjbA0KPiArPT09DQo+ICtU byBCZSBGaWxsZWQNCj4gKw0KDQpQbGVhc2UgZmlsbCBpbiB0aGVzZSBmdW5jdGlvbiBkZXNjcmlw dGlvbnMuDQo+ICtMaW5rX2JvbmRpbmcNCj4gKz09PT09PT09PT09PQ0KPiArVG8gQmUgRmlsbGVk DQoNClBsZWFzZSBmaWxsIGluIHRoZXNlIGZ1bmN0aW9uIGRlc2NyaXB0aW9ucy4NCg0KPiBkaWZm IC0tZ2l0IGEvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfY21kbGluZS5weQ0KPiBiL3Rlc3Rz L1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2NtZGxpbmUucHkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMC4uOGExMzcwMw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rlc3Rz L1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2NtZGxpbmUucHkNCj4gQEAgLTAsMCArMSw2MCBAQA0KPiAr IyA8Q09QWVJJR0hUX1RBRz4NCj4gKw0KPiArIiIiDQo+ICtEUERLIFRlc3Qgc3VpdGUuDQo+ICsN Cj4gK0NtZGxpbmUgYXV0b3Rlc3QNCj4gKw0KPiArIiIiDQo+ICsNCj4gK2Zyb20gdGVzdF9jYXNl IGltcG9ydCBUZXN0Q2FzZQ0KPiArDQo+ICsjDQo+ICsjDQo+ICsjIFRlc3QgY2xhc3MuDQo+ICsj DQo+ICsNCj4gKw0KPiArY2xhc3MgVGVzdFVuaXRUZXN0c0NtZGxpbmUoVGVzdENhc2UpOg0KPiAr DQo+ICsgICAgIw0KPiArICAgICMNCj4gKyAgICAjDQo+ICsgICAgIyBUZXN0IGNhc2VzLg0KPiAr ICAgICMNCj4gKw0KPiArICAgIGRlZiBzZXRfdXBfYWxsKHNlbGYpOg0KPiArICAgICAgICAiIiIN Cj4gKyAgICAgICAgUnVuIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5idWlsZF9kcGRrX2FwcHMoJy4vYXBw L3Rlc3QvJykNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoJ21ha2U6IExlYXZpbmcgZGlyZWN0b3J5 JyBpbiBvdXQsICJDb21waWxhdGlvbg0KPiBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHNldF91 cChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBiZWZvcmUgZWFjaCB0ZXN0 IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBwYXNzDQo+ICsNCj4gKyAgICBkZWYg dGVzdF9jbWRsaW5lKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGNtZGxp bmUgYXV0b3Rlc3RzIGluIFJURSBjb21hbmQgbGluZS4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZm ZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5z ZW5kX2V4cGVjdCgiY21kbGluZV9hdXRvdGVzdCIsICJSVEU+PiIsIDEwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsgICAgICAgIHJldHVybiAnU1VD Q0VTUycNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd24oc2VsZik6DQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBwYXNzDQo+ICsNCj4gKyAgICBkZWYgdGVhcl9kb3duX2FsbChzZWxmKToNCj4gKyAg ICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhZnRlciBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBwYXNzDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVf dW5pdF90ZXN0c19kdW1wLnB5DQo+IGIvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZHVtcC5w eQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5mZmNiMTU4DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZHVtcC5weQ0K PiBAQCAtMCwwICsxLDE4MSBAQA0KPiArIyA8Q09QWVJJR0hUX1RBRz4NCj4gK2ltcG9ydCByZQ0K PiArDQo+ICsiIiINCj4gK0RQREsgVGVzdCBzdWl0ZS4NCj4gKw0KPiArUnVuIEludGVyLVZNIHNo YXJlIG1lbW9yeSBhdXRvdGVzdHMNCj4gKyIiIg0KPiArDQo+ICsNCj4gK2Zyb20gdGVzdF9jYXNl IGltcG9ydCBUZXN0Q2FzZQ0KPiArDQo+ICsjDQo+ICsjDQo+ICsjIFRlc3QgY2xhc3MuDQo+ICsj DQo+ICsNCj4gKw0KPiArY2xhc3MgVGVzdFVuaXRUZXN0c0R1bXAoVGVzdENhc2UpOg0KPiArDQo+ ICsgICAgIw0KPiArICAgICMNCj4gKyAgICAjDQo+ICsgICAgIyBUZXN0IGNhc2VzLg0KPiArICAg ICMNCj4gKw0KPiArICAgIGRlZiBzZXRfdXBfYWxsKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4g KyAgICAgICAgUnVuIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAg IE5vdGhpbmcgdG8gZG8gaGVyZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgICMgQmFzZWQg b24gaC93IHR5cGUsIGNob29zZSBob3cgbWFueSBwb3J0cyB0byB1c2UNCj4gKyAgICAgICAgc2Vs Zi5kdXRfcG9ydHMgPSBzZWxmLmR1dC5nZXRfcG9ydHMoc2VsZi5uaWMpDQo+ICsgICAgICAgIHNl bGYudmVyaWZ5KGxlbihzZWxmLmR1dF9wb3J0cykgPj0gMSwgIkluc3VmZmljaWVudCBwb3J0cyBm b3INCj4gdGVzdGluZyIpDQo+ICsNCj4gKyAgICBkZWYgc2V0X3VwKHNlbGYpOg0KPiArICAgICAg ICAiIiINCj4gKyAgICAgICAgUnVuIGJlZm9yZSBlYWNoIHRlc3QgY2FzZS4NCj4gKyAgICAgICAg Tm90aGluZyB0byBkbyBoZXJlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0KPiAr DQo+ICsgICAgZGVmIHRlc3RfbG9nX2R1bXAoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBSdW4gaGlzdG9yeSBsb2cgZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi8lcy9hcHAvdGVzdCAtbiAxIC1jIGZmZmYi ICUgKHNlbGYudGFyZ2V0KSwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0 ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImR1bXBfbG9nX2hpc3RvcnkiLCAiUlRFPj4iLCAxMjAp DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAg ICAgc2VsZi52ZXJpZnkoIkVBTCIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAg ZGVmIHRlc3RfcmluZ19kdW1wKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVu IGhpc3RvcnkgbG9nIGR1bXAgdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAg c2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vJXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIiAlIChzZWxm LnRhcmdldCksDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCJkdW1wX3JpbmciLCAiUlRFPj4iLCAxMjApDQo+ICsgICAgICAgIHNl bGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgZWxlbWVudHMgPSBb J3JpbmcnLCAnYWRkcmVzcycsICdmbGFncycsICdzaXplJywgJ2N0JywgJ2NoJywgJ3B0JywNCj4g J3BoJywgJ3VzZWQnLCAnYXZhaWwnLCAnd2F0ZXJtYXJrJ10NCj4gKyAgICAgICAgbWF0Y2hfcmVn ZXggPSAicmluZyA8KC4qPyk+QDB4KC4qKVxyXG4iDQo+ICsgICAgICAgIGZvciBlbGVtZW50IGlu IGVsZW1lbnRzWzI6XToNCj4gKyAgICAgICAgICAgIG1hdGNoX3JlZ2V4ICs9ICIgICVzPShcZCop XHJcbiIgJSBlbGVtZW50DQo+ICsgICAgICAgIG0gPSByZS5jb21waWxlKHIiJXMiICUgbWF0Y2hf cmVnZXgsIHJlLlMpDQo+ICsgICAgICAgIHJlc3VsdCA9IG0uc2VhcmNoKG91dCkNCj4gKyAgICAg ICAgcmluZ19pbmZvID0gZGljdCh6aXAoZWxlbWVudHMsIHJlc3VsdC5ncm91cHMoKSkpDQo+ICsN Cj4gKyAgICAgICAgc2VsZi52ZXJpZnkocmluZ19pbmZvWydyaW5nJ10gPT0gJ01QX2xvZ19oaXN0 b3J5JywgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X21lbXBvb2xfZHVtcChz ZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBtZW1wb29sIGR1bXAgdGVzdCBj YXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4v JXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIiAlIChzZWxmLnRhcmdldCksDQo+ICJSLipULipFLio+ Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJkdW1wX21l bXBvb2wiLCAiUlRFPj4iLCAxMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJx dWl0IiwgIiMgIikNCj4gKyAgICAgICAgZWxlbWVudHMgPSBbJ21lbXBvb2wnLCAnYWRkcmVzcycs ICdmbGFncycsICdyaW5nJywgJ3BoeXNfYWRkcicsDQo+ICdzaXplJywgJ2hlYWRlcl9zaXplJywg J2VsdF9zaXplJywNCj4gKyAgICAgICAgICAgICAgICAgICAgJ3RyYWlsZXJfc2l6ZScsICd0b3Rh bF9vYmpfc2l6ZScsICdwcml2YXRlX2RhdGFfc2l6ZScsDQo+ICdwZ19udW0nLCAncGdfc2hpZnQn LCAncGdfbWFzaycsDQo+ICsgICAgICAgICAgICAgICAgICAgICdlbHRfdmFfc3RhcnQnLCAnZWx0 X3ZhX2VuZCcsICdlbHRfcGFcWzBcXScsICdhdmcNCj4gYnl0ZXMvb2JqZWN0Jw0KPiArICAgICAg ICAgICAgICAgICAgICBdDQo+ICsgICAgICAgIG1hdGNoX3JlZ2V4ID0gIm1lbXBvb2wgPCguKj8p PkAweCguKj8pXHJcbiINCj4gKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gZWxlbWVudHNbMjpdOg0K PiArICAgICAgICAgICAgbWF0Y2hfcmVnZXggKz0gIiAgJXM9KC4qPylcclxuIiAlIGVsZW1lbnQN Cj4gKyAgICAgICAgbSA9IHJlLmNvbXBpbGUociIlcyIgJSBtYXRjaF9yZWdleCwgcmUuUykNCj4g KyAgICAgICAgcmVzdWx0ID0gbS5zZWFyY2gob3V0KQ0KPiArICAgICAgICBtZW1wb29sX2luZm8g PSBkaWN0KHppcChlbGVtZW50cywgcmVzdWx0Lmdyb3VwcygpKSkNCj4gKw0KPiArICAgICAgICBz ZWxmLnZlcmlmeShtZW1wb29sX2luZm9bJ21lbXBvb2wnXSA9PSAnbG9nX2hpc3RvcnknLCAiVGVz dA0KPiBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfcGh5c21lbV9kdW1wKHNlbGYpOg0K PiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHBoeXNpY2FsIG1lbW9yeSBkdW1wIHRlc3Qg Y2FzZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIu LyVzL2FwcC90ZXN0IC1uIDEgLWMgZmZmZiIgJSAoc2VsZi50YXJnZXQpLA0KPiAiUi4qVC4qRS4q Pi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZHVtcF9w aHlzbWVtIiwgIlJURT4+IiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi cXVpdCIsICIjICIpDQo+ICsgICAgICAgIGVsZW1lbnRzID0gWydTZWdtZW50JywgJ3BoeXMnLCAn bGVuJywgJ3ZpcnQnLCAnc29ja2V0X2lkJywNCj4gJ2h1Z2VwYWdlX3N6JywgJ25jaGFubmVsJywg J25yYW5rJ10NCj4gKyAgICAgICAgbWF0Y2hfcmVnZXggPSAiU2VnbWVudCAoXGQpKzoiDQo+ICsg ICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1lbnRzWzE6LTFdOg0KPiArICAgICAgICAgICAgbWF0 Y2hfcmVnZXggKz0gIiAlczooLio/KSwiICUgZWxlbWVudA0KPiArICAgICAgICBtYXRjaF9yZWdl eCArPSAiICVzOiguKj8pXG4iICUgZWxlbWVudHNbLTFdDQo+ICsgICAgICAgIG0gPSByZS5jb21w aWxlKHIiJXMiICUgbWF0Y2hfcmVnZXgsIHJlLkRPVEFMTCkNCj4gKyAgICAgICAgcmVzdWx0cyA9 IG0uZmluZGFsbChvdXQpDQo+ICsgICAgICAgIHBoeV9pbmZvID0gW10NCj4gKyAgICAgICAgZm9y IHJlc3VsdCBpbiByZXN1bHRzOg0KPiArICAgICAgICAgICAgcGh5X2luZm8uYXBwZW5kKGRpY3Qo emlwKGVsZW1lbnRzLCByZXN1bHQpKSkNCj4gKw0KPiArICAgICAgICBzZWxmLnZlcmlmeShsZW4o cGh5X2luZm8pID4gMCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X21lbXpv bmVfZHVtcChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBtZW16b25lIGR1 bXAgdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoIi4vJXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIiAlIChzZWxmLnRhcmdldCksDQo+ICJS LipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCJkdW1wX21lbXpvbmUiLCAiUlRFPj4iLCAxMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRf ZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKw0KPiArICAgICAgICBlbGVtZW50cyA9IFsnWm9uZScs ICduYW1lJywgJ3BoeXMnLCAnbGVuJywgJ3ZpcnQnLCAnc29ja2V0X2lkJywNCj4gJ2ZsYWdzJ10N Cj4gKyAgICAgICAgbWF0Y2hfcmVnZXggPSAiWm9uZSAoXGQpOiINCj4gKyAgICAgICAgZm9yIGVs ZW1lbnQgaW4gZWxlbWVudHNbMTotMV06DQo+ICsgICAgICAgICAgICBtYXRjaF9yZWdleCArPSAi ICVzOiguKj8pLCIgJSBlbGVtZW50DQo+ICsgICAgICAgIG1hdGNoX3JlZ2V4ICs9ICIgJXM6KC4q PylcbiIgJSBlbGVtZW50c1stMV0NCj4gKyAgICAgICAgbSA9IHJlLmNvbXBpbGUociIlcyIgJSBt YXRjaF9yZWdleCwgcmUuRE9UQUxMKQ0KPiArICAgICAgICByZXN1bHRzID0gbS5maW5kYWxsKG91 dCkNCj4gKw0KPiArICAgICAgICBtZW16b25lX2luZm8gPSBbXQ0KPiArICAgICAgICBmb3IgcmVz dWx0IGluIHJlc3VsdHM6DQo+ICsgICAgICAgICAgICBtZW16b25lX2luZm8uYXBwZW5kKGRpY3Qo emlwKGVsZW1lbnRzLCByZXN1bHQpKSkNCj4gKw0KPiArICAgICAgICBzZWxmLnZlcmlmeShsZW4o bWVtem9uZV9pbmZvKSA+IDAsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9k dW1wX3N0cnVjdF9zaXplKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHN0 cnVjdCBzaXplIGR1bXAgdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoIi4vJXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIiAlIChzZWxmLnRh cmdldCksDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0 LnNlbmRfZXhwZWN0KCJkdW1wX3N0cnVjdF9zaXplcyIsICJSVEU+PiIsIDEyMCkNCj4gKyAgICAg ICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArDQo+ICsgICAgICAgIGVs ZW1lbnRzID0gWydzdHJ1Y3QgcnRlX21idWYnLCAnc3RydWN0IHJ0ZV9tZW1wb29sJywgJ3N0cnVj dA0KPiBydGVfcmluZyddDQo+ICsgICAgICAgIG1hdGNoX3JlZ2V4ID0gIiINCj4gKyAgICAgICAg Zm9yIGVsZW1lbnQgaW4gZWxlbWVudHNbOi0xXToNCj4gKyAgICAgICAgICAgIG1hdGNoX3JlZ2V4 ICs9ICJzaXplb2ZcKCVzXCkgPSAoXGQrKVxyXG4iICUgZWxlbWVudA0KPiArICAgICAgICBtYXRj aF9yZWdleCArPSAic2l6ZW9mXCglc1wpID0gKFxkKykiICUgZWxlbWVudHNbLTFdDQo+ICsgICAg ICAgIG0gPSByZS5jb21waWxlKHIiJXMiICUgbWF0Y2hfcmVnZXgsIHJlLlMpDQo+ICsgICAgICAg IHJlc3VsdCA9IG0uc2VhcmNoKG91dCkNCj4gKyAgICAgICAgc3RydWN0X2luZm8gPSBkaWN0KHpp cChlbGVtZW50cywgcmVzdWx0Lmdyb3VwcygpKSkNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2R1bXBf ZGV2YXJncyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBkZXZhcmdzIGR1 bXAgdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgdGVzdF9wb3J0ID0gc2Vs Zi5kdXRfcG9ydHNbMF0NCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vJXMvYXBw L3Rlc3QgLW4gMSAtYyBmZmZmIC1iIDAwMDA6JXMiDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICUgKHNlbGYudGFyZ2V0LA0KPiBzZWxmLmR1dC5wb3J0c19pbmZvW3Rlc3RfcG9ydF1b J3BjaSddKSwgIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoImR1bXBfZGV2YXJncyIsICJSVEU+PiIsIDEyMCkNCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBibGFja19zdHIgPSAi UENJIGJsYWNrbGlzdCAwMDAwOiVzIiAlDQo+IHNlbGYuZHV0LnBvcnRzX2luZm9bdGVzdF9wb3J0 XVsncGNpJ10NCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoYmxhY2tfc3RyIGluIG91dCwgIkR1bXAg YmxhY2sgbGlzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCIuLyVzL2FwcC90ZXN0IC1uIDEgLWMgZmZmZiAtdyAwMDAwOiVzIg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAlIChzZWxmLnRhcmdldCwNCj4gc2VsZi5kdXQucG9ydHNfaW5mb1t0 ZXN0X3BvcnRdWydwY2knXSksICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9 IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJkdW1wX2RldmFyZ3MiLCAiUlRFPj4iLCAxMjApDQo+ICsg ICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKw0KPiArICAgICAg ICB3aGl0ZV9zdHIgPSAiUENJIHdoaXRlbGlzdCAwMDAwOiVzIiAlDQo+IHNlbGYuZHV0LnBvcnRz X2luZm9bdGVzdF9wb3J0XVsncGNpJ10NCj4gKyAgICAgICAgc2VsZi52ZXJpZnkod2hpdGVfc3Ry IGluIG91dCwgIkR1bXAgd2hpdGUgbGlzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlYXJf ZG93bihzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhZnRlciBlYWNoIHRl c3QgY2FzZS4NCj4gKyAgICAgICAgU3RvcCBhcHBsaWNhdGlvbiB0ZXN0IGFmdGVyIGV2ZXJ5IGNh c2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLmR1dC5raWxsX2FsbCgpDQo+ICsg ICAgICAgIHBhc3MNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd25fYWxsKHNlbGYpOg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFmdGVyIGVhY2ggdGVzdCBzdWl0ZS4NCj4gKyAgICAg ICAgTm90aGluZyB0byBkbyBoZXJlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0K PiBkaWZmIC0tZ2l0IGEvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZWFsLnB5DQo+IGIvdGVz dHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZWFsLnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAuLmUzNmFkYzUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0cy9U ZXN0U3VpdGVfdW5pdF90ZXN0c19lYWwucHkNCj4gQEAgLTAsMCArMSw0MDkgQEANCj4gKyMgPENP UFlSSUdIVF9UQUc+DQo+ICsNCj4gKyIiIg0KPiArRFBESyBUZXN0IHN1aXRlLg0KPiArDQo+ICtF QUwgYXV0b3Rlc3QuDQo+ICsNCj4gKyIiIg0KPiArDQo+ICtpbXBvcnQgZHRzDQo+ICsNCj4gKw0K PiArZnJvbSB0ZXN0X2Nhc2UgaW1wb3J0IFRlc3RDYXNlDQo+ICsNCj4gKyMNCj4gKyMNCj4gKyMg VGVzdCBjbGFzcy4NCj4gKyMNCj4gKw0KPiArDQo+ICtjbGFzcyBUZXN0VW5pdFRlc3RzRWFsKFRl c3RDYXNlKToNCj4gKw0KPiArICAgICMNCj4gKyAgICAjDQo+ICsgICAgIw0KPiArICAgICMgVGVz dCBjYXNlcy4NCj4gKyAgICAjDQo+ICsNCj4gKyAgICBkZWYgc2V0X3VwX2FsbChzZWxmKToNCj4g KyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhdCB0aGUgc3RhcnQgb2YgZWFjaCB0ZXN0IHN1 aXRlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuYnVpbGRfZHBk a19hcHBzKCcuL2FwcC90ZXN0LycpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCdtYWtlOiBMZWF2 aW5nIGRpcmVjdG9yeScgaW4gb3V0LCAiQ29tcGlsYXRpb24NCj4gZmFpbGVkIikNCj4gKyAgICAg ICAgW2FyY2gsIG1hY2hpbmUsIHNlbGYuZW52LCB0b29sY2hhaW5dID0gc2VsZi50YXJnZXQuc3Bs aXQoJy0nKQ0KPiArDQo+ICsgICAgZGVmIHNldF91cChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ ICsgICAgICAgIFJ1biBiZWZvcmUgZWFjaCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBwYXNzDQo+ICsNCj4gKyAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgUnVuIHZlcnNpb24gYXV0b3Rlc3QuDQo+ICsgICAgICAgICIi Ig0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIlcyAuL2FwcC90ZXN0L3Rl c3QgLW4gMSAtYyBmZmZmIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQoMSksDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9 IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJ2ZXJzaW9uX2F1dG90ZXN0IiwgIlJURT4+IiwgMzApDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAg c2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAg IGRlZiB0ZXN0X21lbWNvcHkoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4g bWVtY29weSBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5k dXQuc2VuZF9leHBlY3QoIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiICUNCj4gc2Vs Zi5kdXQudGFza3NldCgxKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlIuKlQu KkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoIm1l bWNweV9hdXRvdGVzdCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBv dXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9jb21tb24oc2VsZik6DQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gY29tbW9uIGF1dG90ZXN0Lg0KPiArICAgICAg ICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAvdGVz dC90ZXN0IC1uIDEgLWMgZmZmZiIgJQ0KPiBzZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBv dXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiY29tbW9uX2F1dG90ZXN0IiwgIlJURT4+IiwgMzAp DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAg ICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiAr ICAgIGRlZiB0ZXN0X2VhbF9mcyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1 biBtZW1jb3B5IGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIgJQ0KPiBz ZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUi4q VC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi ZWFsX2ZzX2F1dG90ZXN0IiwgIlJURT4+IiwgMzApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRf ZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGlu IG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X21lbWNweShzZWxmKToN Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBtZW1jb3B5IGF1dG90ZXN0Lg0KPiArICAg ICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAv dGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIgJQ0KPiBzZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAg ICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgibWVtY3B5X2F1dG90ZXN0IiwgIlJURT4+Iiwg MzApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAg ICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0K PiArICAgIGRlZiB0ZXN0X21lbWNweV9wZXJmKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAg ICAgICAgUnVuIG1lbWNvcHkgcGVyZm9ybWFuY2UgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAvdGVzdC90ZXN0IC1uIDEg LWMgZmZmZiIgJQ0KPiBzZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgibWVtY3B5X3BlcmZfYXV0b3Rlc3QiLCAiUlRFPj4iLCAyNDApDQo+ICsg ICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2Vs Zi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRl ZiB0ZXN0X2hhc2goc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gaGFzaCBh dXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIs IDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiaGFzaF9hdXRvdGVz dCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIs ICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZh aWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9oYXNoX3BlcmYoc2VsZik6DQo+ICsgICAgICAg ICIiIg0KPiArICAgICAgICBSdW4gaGFzIHBlcmZvcm1hbmNlIGF1dG90ZXN0Lg0KPiArICAgICAg ICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAvdGVz dC90ZXN0IC1uIDEgLWMgZmZmZSIgJQ0KPiBzZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBv dXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiaGFzaF9wZXJmX2F1dG90ZXN0IiwgIlJURT4+Iiwg NjAwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsg ICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsN Cj4gKyAgICBkZWYgdGVzdF9tYWxsb2Moc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAg ICBSdW4gbWFsbG9jIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJS LipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCJtYWxsb2NfYXV0b3Rlc3QiLCAiUlRFPj4iLCAzMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2Vu ZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIg aW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfZnVuY19yZWVudHJh bmN5KHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGZ1bmN0aW9uIHJlZW50 cmFuY3kgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIGlmIHNlbGYu ZHV0LmFyY2hpdGVjdHVyZSA9PSAieDg2XzY0IjoNCj4gKyAgICAgICAgICAgIGNtZGxpbmUgPSAi Li9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiINCj4gKyAgICAgICAgZWxzZToNCj4gKyAgICAg ICAgICAgICMgbWFzayBjb3JlcyBvbmx5IG9uIHNvY2tldCAwDQo+ICsgICAgICAgICAgICBjbWRs aW5lID0gIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIDU1NTUiICUNCj4gc2VsZi5kdXQudGFz a3NldCgxKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdChjbWRsaW5lLCAiUi4qVC4q RS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZnVu Y19yZWVudHJhbmN5X2F1dG90ZXN0IiwgIlJURT4+IiwNCj4gMzApDQo+ICsgICAgICAgIHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRl c3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X3BjaShz ZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBwY2kgYXV0b3Rlc3QuDQo+ICsg ICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90 ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAg ICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoInBjaV9hdXRvdGVzdCIsICJSVEU+PiIsIDMw KQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAg ICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4g KyAgICBkZWYgdGVzdF9hdG9taWMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBS dW4gYXRvbWljIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipU LipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJh dG9taWNfYXV0b3Rlc3QiLCAiUlRFPj4iLCAzMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4g b3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbWVtb3J5KHNlbGYpOg0K PiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG1lbW9yeSBhdXRvdGVzdC4NCj4gKyAgICAg ICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3Qv dGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBv dXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgnbWVtb3J5X2F1dG90ZXN0JywgIlJURT4+IiwgMjAp DQo+ICsgICAgICAgIHJlZ2V4cCA9ICJwaHlzOjB4WzAtOWEtZl0qLCBsZW46KFswLTlhLWZdKiks IHZpcnQ6MHhbMC05YS1mXSosDQo+IHNvY2tldF9pZDpbMC05XSoiDQo+ICsgICAgICAgIG1hdGNo ID0gZHRzLnJlZ2V4cChvdXQsIHJlZ2V4cCkNCj4gKyAgICAgICAgc2l6ZSA9IGludChtYXRjaCwg MTYpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KHNpemUgPiAwLCAiYmFkIHNpemUiKQ0KPiArICAg ICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsNCj4gKyAgICBkZWYg dGVzdF9sY29yZV9sYXVuY2goc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4g bGNvcmUgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0 LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUu Kj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoInBlcl9s Y29yZV9hdXRvdGVzdCIsICJSVEU+PiIsIDIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBv dXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9zcGlubG9jayhzZWxmKToN Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBzcGlubG9jayBhdXRvdGVzdC4NCj4gKyAg ICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rl c3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAg ICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgic3BpbmxvY2tfYXV0b3Rlc3QiLCAiUlRFPj4i LCAxMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4g KyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4g Kw0KPiArICAgIGRlZiB0ZXN0X3J3bG9jayhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAg ICAgIFJ1biByd2xvY2sgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAg IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4g IlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBl Y3QoInJ3bG9ja19hdXRvdGVzdCIsICJSVEU+PiIsIDIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5z ZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9L IiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9wcmVmZXRjaChz ZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBwcmVmZXRjaCBhdXRvdGVzdC4N Cj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4v YXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicHJlZmV0Y2hfYXV0b3Rlc3QiLCAi UlRFPj4iLCAyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAi KQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQi KQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfYnl0ZW9yZGVyKHNlbGYpOg0KPiArICAgICAgICAiIiIN Cj4gKyAgICAgICAgUnVuIGJ5dGUgb3JkZXIgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiAr DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAt YyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5k dXQuc2VuZF9leHBlY3QoImJ5dGVvcmRlcl9hdXRvdGVzdCIsICJSVEU+PiIsIDEwKQ0KPiArICAg ICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYu dmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYg dGVzdF9jeWNsZXMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gY3ljbGVz IGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+ IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJjeWNsZXNfYXV0 b3Rlc3QiLCAiUlRFPj4iLCAyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1 aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVz dCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbG9ncyhzZWxmKToNCj4gKyAgICAgICAg IiIiDQo+ICsgICAgICAgIFJ1biBsb2dzIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0K PiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMg ZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0 LnNlbmRfZXhwZWN0KCJsb2dzX2F1dG90ZXN0IiwgIlJURT4+IiwgMTApDQo+ICsgICAgICAgIHNl bGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnko IlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X21l bXpvbmUoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gbWVtem9uZSBhdXRv dGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBl Y3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEw KQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgibWVtem9uZV9hdXRvdGVz dCIsICJSVEU+PiIsIDEwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIs ICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZh aWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9kZWJ1ZyhzZWxmKToNCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIFJ1biBkZWJ1ZyBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZm ZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5z ZW5kX2V4cGVjdCgiZGVidWdfYXV0b3Rlc3QiLCAiUlRFPj4iLCAxMCkNCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgi VGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfZmxh Z3Moc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gZWFsIGZsYWdzIGF1dG90 ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiAtbSA2NCIsDQo+ICJSLipULipFLio+Lio+ IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJlYWxfZmxhZ3Nf YXV0b3Rlc3QiLCAiUlRFPj4iLCA0MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3Qo InF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAi VGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfYWxhcm0oc2VsZik6DQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBSdW4gYWxhcm0gYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0K PiArDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KHNlbGYuZW52ID09ICJsaW51eGFwcCIsICJBbGFy bSBvbmx5IHN1cHBvcnRlZCBpbg0KPiBsaW51eCBlbnYiKQ0KPiArICAgICAgICBzZWxmLmR1dC5z ZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+ Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJhbGFybV9h dXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi cXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJU ZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9jcHVmbGFncyhzZWxmKToNCj4gKyAg ICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBDUFUgZmxhZ3MgYXV0b3Rlc3QuDQo+ICsgICAgICAg ICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rl c3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0 ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImNwdWZsYWdzX2F1dG90ZXN0IiwgIlJURT4+IiwgNjAp DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAg ICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiAr ICAgIGRlZiB0ZXN0X2Vycm5vKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVu IGVycm5vIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipURT4+ fFJULipFPj58UlRFLio+PnxSVEU+Lio+IiwgMjApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0 LnNlbmRfZXhwZWN0KCJlcnJub19hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9p bnRlcnJ1cHRzKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGludGVycnVw dCBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi52ZXJpZnko c2VsZi5lbnYgPT0gImxpbnV4YXBwIiwgIkludGVycnVwdCBvbmx5IHN1cHBvcnRlZCBpbg0KPiBs aW51eCBlbnYiKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90 ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipURT4+fFJULipFPj58UlRFLio+PnxSVEU+Lio+Iiwg MjApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJpbnRlcnJ1cHRfYXV0 b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1 aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVz dCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbXVsdGlwcm9jZXNzKHNlbGYpOg0KPiAr ICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG11bHRpcHJvY2VzcyBhdXRvdGVzdC4NCj4gKyAg ICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rl c3QvdGVzdCAtbiAxIC1jIGZmZmYgLW0gNjQiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgibXVsdGlwcm9jZXNzX2F1dG90ZXN0 IiwgIlJURT4+IiwgNjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0Iiwg IiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFp bGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X3N0cmluZyhzZWxmKToNCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIFJ1biBzdHJpbmcgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBm ZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoInN0cmluZ19hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF90 YWlscShzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biB0YWlscSBhdXRvdGVz dC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3Qo Ii4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0K PiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgidGFpbHFfYXV0b3Rlc3QiLCAi UlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAi KQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQi KQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfZGV2YXJncyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ ICsgICAgICAgIFJ1biBkZXZhcmdzIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiAr ICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZm ZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJkZXZhcmdzX2F1dG90ZXN0IiwgIlJURT4+IiwgNjApDQo+ICsgICAgICAgIHNl bGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnko IlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2t2 YXJncyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBrdmFyZ3MgYXV0b3Rl c3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkN Cj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImt2YXJnc19hdXRvdGVzdCIs ICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIj ICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxl ZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9hY2woc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gYWNsIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAg ICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJhY2xfYXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2Vu ZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIg aW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbGlua19ib25kaW5n KHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFjbCBhdXRvdGVzdC4NCj4g KyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBw L3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAg ICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgibGlua19ib25kaW5nX2F1dG90ZXN0Iiwg IlJURT4+IiwgNjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMg IikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVk IikNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd24oc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBwYXNzDQo+ICsNCj4gKyAgICBkZWYgdGVhcl9kb3duX2FsbChzZWxmKToNCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIFJ1biBhZnRlciBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAg ICIiIg0KPiArICAgICAgICBwYXNzDQo+IC0tDQo+IDEuNy40LjQNCg0K