From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id DEF6F941C69 for ; Thu, 7 Sep 2023 21:59:33 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=7MOxVdIS5vptkk3RaBT43gwotwF4VWBur+0Uc27k9jw=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1694123972; v=1; b=dZo4lTaLAnuFW+Mu4y0F3j6jPW6Gjty6tdySlh7bsaikICuGFHMp1nHztHcuuVJ++ruBeAu7 acm2ETg3Jxbx3Ssbu6N+wtXspy9D7hwlqF9gN+TL3mQ4KXg2sesBZw28Od5obmu6zudRDPio1zg Z+UaaatRi/W3eACyLTKLWeYc= X-Received: by 127.0.0.2 with SMTP id stjXYY7687511x5DtwoACWSi; Thu, 07 Sep 2023 14:59:32 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.26276.1694123971648638381 for ; Thu, 07 Sep 2023 14:59:31 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10826"; a="357800244" X-IronPort-AV: E=Sophos;i="6.02,236,1688454000"; d="scan'208";a="357800244" X-Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Sep 2023 14:59:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10826"; a="777245712" X-IronPort-AV: E=Sophos;i="6.02,236,1688454000"; d="scan'208";a="777245712" X-Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga001.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 07 Sep 2023 14:59:29 -0700 X-Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Thu, 7 Sep 2023 14:59:29 -0700 X-Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Thu, 7 Sep 2023 14:59:29 -0700 X-Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.170) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Thu, 7 Sep 2023 14:59:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OvFOdff5GBNR4xp46iQc1ZCsA3X/F5GZUaBf1ES8LNC6rKzAwiupFiYh0UVcJz0cHGCPSXzpCxYyUitfoGAFPqsTKhbCuL41GzUpIKwg58DZVrrg5Q4dSqRRpXoyWNMdg+W4xxopmDETmYxfvIKltumHfI1rUKhXLZqNQl4jlbACtDxzErOTYdSf5UgTBOH5GN8N+ldaPP8llsL5XiC7s5fYd4LImm61mh2tMdZPQLFLut6XKLOIl9ndGY5Mg8gksI79fJDoGq4F7inRW8YMWXA0Tj+zz0VHdqF8cr2PdR83Q4WRfin5OVNCnTiGBhybKZUHpioMLmRzVl6gURWBCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=M3ATCdoBmgXsM20Wx2QrlT9sUSlyn8i9lIyH1zxIgpc=; b=IjpPgN/0i4KZ3KA+wwFnrhjW1ViXfU1EoOraYXPieKOdVfZ0kGi8prQdpFA8r/3w5tc3MGK474wkFlLsL+1OTi7LBU8WbBm/HpgB/jeMKGCtXB2uCXzOuj0vu0cHVCrh/zJnOgc1OSVI0ES90Iq+uB/IzxF0/fQGwVytSWCxsuMPx3gyKK/UMJ80tMbr/WbjIs4dOHhr6sbvXnUalMhHs0MmNOTV+tt59C6bUNRGJwxqdRRCSalS8bMzpaCkPASzdHyHjNrPDZs0H2sroCFgQXBfHoPEJ82EsgNxZ4fF4AFbYStDDGZ1ONFOmakmw7z+4bWLNvhf5BhjeklOxIsEDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by CO1PR11MB4785.namprd11.prod.outlook.com (2603:10b6:303:6f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.34; Thu, 7 Sep 2023 21:59:24 +0000 X-Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::eaa6:1c0:c33f:2a11]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::eaa6:1c0:c33f:2a11%2]) with mapi id 15.20.6745.034; Thu, 7 Sep 2023 21:59:24 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "mikuback@linux.microsoft.com" CC: Sean Brogan , "Gao, Liming" , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v1 7/7] .pytool/Plugin: Add DebugMacroCheck Thread-Topic: [edk2-devel] [PATCH v1 7/7] .pytool/Plugin: Add DebugMacroCheck Thread-Index: AQHZzvD0phPMKfhss0iTKsF69wXLn7AOuM3AgAFR34CAAAOJsA== Date: Thu, 7 Sep 2023 21:59:23 +0000 Message-ID: References: <20230814204859.257-1-mikuback@linux.microsoft.com> <20230814204859.257-8-mikuback@linux.microsoft.com> <664877ff-0d6c-7fc8-3d40-f6bf1ad1c915@linux.microsoft.com> In-Reply-To: <664877ff-0d6c-7fc8-3d40-f6bf1ad1c915@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|CO1PR11MB4785:EE_ x-ms-office365-filtering-correlation-id: a0bebbd4-983f-481e-bdc6-08dbafedb28f x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: uyZr16Y3PK+oiygaaYtGLbRVfY6N7Fc1D4aokN9oWHV/FBMBJEMgMtLh+FHvLyUdVubmjOgUp7EpdHOrVvcF/0u8vAzzitS433BAXhaxiHYLYCTVxA0PIAkqBo/9Tv/Cx8fz39C2luXT+oDlCXxCEUZLQLXIaIBZ8zqe739duhBQQZ8Ej3I0N3S6m0vx3PLj8FBV+nbfkHGcFkexsXIhhJ8XK0ABTJij1RoNHtGCuQoNErBOOg1Up2+OF0/O2UvTyQki3IUfMf2VUJRnQVWa4xrMNWFr1hg13Le+q1cj5cdrGP19hRwfn1x3tad6n2Vk3CoqtnP8eT3Qgh6ol/0d89g102u56hJO0V7A8Zikvm+WPwksmVHrFhQhcLVLwMAISGsUR+p+p61ickOxcKN3RbDgoz5+AQBL/+smSbDioJwDO4SxTPUDp1mOaSUxKkRKmBJ0TMc3QqpDBWRNAu+b95ZXVAr6SAoNxhU/nhBfCJeykSXCSlm11D+6Fa8J4jmkNV8n2KtIB0/zttXE1fz5RXFBZe0D+ooNps2ZyaGwGBcM31WPFDGJdON1n8XIJzXGV24ZIBNeeJMCGt1fq0/Db+robPnud64gEg7O0t7N/5U= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cXZxVFJIN3lCdG9mUFBMR1dreFdxNFhqZmxISkQwUFpzT0JPSFBhODVTTlB5?= =?utf-8?B?T1VRSnZ6OW9nOXYvS0FnRVpmazhtNFphbExkYVJuSEoyTmNoNC9UUnlzVWpI?= =?utf-8?B?aHVTWXlVeHNtTXdqSHJGeWRlWGRzWVpPeWJya2RQTk5CTFQ4K2liYjFnaVF0?= =?utf-8?B?YXhLay9ia0pzY1hUa0xkbHpYdjMvOGRNUHhDbTUrc3ZRS2l4UzJQMld2QVFD?= =?utf-8?B?SGt5RmNHRWIxUmY5LzNXYnNrbE9PaUxqU1o5TVFUY284K0t1VllROHI4M0Zs?= =?utf-8?B?Sy9rcG9RN3g3R2pwc2xtUy83aGIxTHlwNkdkNWFqVGtvcVNUeFc4RWpPb0do?= =?utf-8?B?OENJMUhnM3BENVFReUJhMThJTU0weHB6aEJaVmw5T2JZSG8vZURweERRUUlL?= =?utf-8?B?T1JHUVlVOS80T1dkbUJkSFBhQndoSHVycXlER25BUngyY21sQ2xxeTkzcUNq?= =?utf-8?B?UXY3Mi83ckkxdUpvZFBFU1MvaTl0dS9QQWxSR1h6WnRJbmtvVUY4bjh5cDl0?= =?utf-8?B?b3Y1YkF4RHBTc0tISXRFN1k5YVhMa0FRRXFtQXF3TTc3UXVuaFZ1LzNpVnVX?= =?utf-8?B?aW9jR3FZbUdXTzJhWUsyS1NsWk9Xc0hWRHJTQ3B3N0l2SU91R1ZxVUZCRTI4?= =?utf-8?B?cklabHZLdHQrSEtJeHdMS09pK2dEcUliUWVsWk9NdnFPVHdiY29MMGFDQ0JF?= =?utf-8?B?LzA1UzEyU2xON0Qrc3d3bXNUdU9iSFQxa3MwSGlCTXljbHU4VlRPSEoyQUli?= =?utf-8?B?T0M4L3R0eVc3VVZpR0U5STR4WlpyaDVGeU0xYjZ2NkYrVVFJUzZ0dkgzTUVF?= =?utf-8?B?VVNDTHlMNnAxRTNER1EvUkx6WGo3bmxmU3lzckhLNUdoek1pc25qeGpzd1hv?= =?utf-8?B?TEZmUTRvTjRiSmhia1NyNHRmR1hsVmFHNkF2emFHNkYxaWIzb0FmQXBjNVRq?= =?utf-8?B?b2tlTlhNVVUrZzhMY1JCQlhlMDd2Znpwc0NqOTI3TDRNZlNuZXBLZ2VUVnNy?= =?utf-8?B?c25KS0lUVHJhZ1JjU1grSGtPb3l4ZE9nQTJPQ2M0QlFKZ1lVVXhtZzk5YU9n?= =?utf-8?B?T3NxRnF6NlFBekhETEJVOC9KZVJTdVA3RE5QRy9RWEk0clQvYmxJd3k3WElw?= =?utf-8?B?UTl1WGMrN01SaGJSRE9oWlNkUkxsWGlyNHo0YlhrcTBpZnpNcldSV0VsNjRH?= =?utf-8?B?R0hkQStvd0tGSy9GU3ZScXRRWmhzNFg1QWxkNEpvWXhBaXVXME5NOGowa1F1?= =?utf-8?B?L3RNbkdSTlkxVDBhU3loUVdibE1jMGxVVktucjJZYWEzUmRURUNKYS9sS0xl?= =?utf-8?B?UUNGZHBORURJQVpCVDVqSGZ0bUxtWW4wdWQwaDRVNlNTRXEvbnFuRjhYTW9F?= =?utf-8?B?WitOU1dvbjRzdTIvbGU2alU1MzRjWml5R3Rtbk9saExhZDdTSGUvR1pNSUNE?= =?utf-8?B?N251RHMzRlNrWkFRL1Mya09hUFBFVFBFS1cwZjJxWlp2TUtncEVwbDVFc090?= =?utf-8?B?amR2SXVVMGZVU3pnbjcyREF5NWp0MnZvazZvK1laUzVvUEE2Z1U1NFdkY0Zu?= =?utf-8?B?NVk1QU9vT1lkWHJDQkJkMkxZcndMN29wSUxtajloU3FFVXNpbXF1VVZjV3JP?= =?utf-8?B?dlY1bVJDM1lLZDhQRHUwamRQU3lES1VXOWl5aDZ5anc2aXJxcmJSaTdjTXVl?= =?utf-8?B?OG8rakZEQzhyWHVzMS9zSTVJMHRkdVQ3MHRjWkdOUUVzamhUUkNqdVlVa2tI?= =?utf-8?B?RzVrTkdlLzAwSmZ5NCt4WjNTT2ZJYUhPWXBLcEthSU1YdER6MmV3UjVHcTZO?= =?utf-8?B?elBkT2l5cDZDcW1LVEppR1lvblUzeElaQ1ZmaWJvdCtuQkhRd3p5a1JxZW10?= =?utf-8?B?TGV5YUhia0U2VmFkSmRoaUZBbDE1WlJzMEM0TVdTbUlCU1JEVytmdE9KNjFj?= =?utf-8?B?ZFdteEUrYmZnUndkSGlpM0pFME8zM2x0ZmZyWVNLSEhNTGo0VmNtVlFRTS8v?= =?utf-8?B?b3hKT3pUTGd6cGV2YUxpUFErQmxjU25nVDg4YmJOZzk1bmMrbHRIZElJMXdH?= =?utf-8?B?bm5KbDJxcll4OTBVcDd5WkxRMlpFd2NxZzBDYytvK0s1V2lYMEJwcFNGUVc1?= =?utf-8?B?cXU1NW9vVUZPdWRVemZFbG9ZcmEzSGVvcnNxUk1nQzZSblVISUZNaVVBSWJo?= =?utf-8?B?L1E9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0bebbd4-983f-481e-bdc6-08dbafedb28f X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Sep 2023 21:59:24.0330 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: TM2H2W/vYaa5CiChT1PY6WhcSJI0aFuH0zvvYEwnxcOQ5ftEEU6ORrSgjcYrkbxqadkTqchXgOajOuIkBYS6VmKDbEEagvmNFzuUWgca4eM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4785 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.d.kinney@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: KQN3hkvHyv6AA0BkR0J8J6uwx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=dZo4lTaL; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SSBjYW4gYWdyZWUgdGhpcyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgdGhhbiBzb21lIG9mIHRoZSAN Cm90aGVyIHBsdWdpbnMuICBJdCB3b3VsZCBiZSBncmVhdCBpZiBjb21waWxlcnMgY291bGQgZGV0 ZWN0DQp0aGlzIGlzc3VlcyBmb3VuZCBieSB0aGlzIHBsdWdpbiBhbmQgYnJlYWsgdGhlIGJ1aWxk LiAgVGhhdA0Kc2hvdWxkIGJlIHRoZSByaWdodCBiZWhhdmlvciBiZWNhdXNlIGEgbWlzbWF0Y2gg aW4gdGhlIGFyZ3MNCmNhbiBoYXZlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIEkgdGhpbmsgc29t ZSBjb21waWxlcnMgY2FuDQpkZXRlY3QgdGhpcyBpZiBwcmludGYoKSBpcyB1c2VkIGFuZCB0aGVy ZSBpcyBhIG1pc21hdGNoIG9uDQp0aGUgbnVtYmVyIG9mIGFyZ3MuDQoNCkkgYW0gb2sgd2l0aCB0 aGUgY29uZmlnIG9wdGlvbnMgYXMgdGhleSBhcmUgcmlnaHQgbm93IGFuZA0Kd2UgY2FuIHdhaXQg dG8gc2VlIGlmIHRoZXJlIGlzIGEgcmVxdWVzdCBmb3IgYSBwYWNrYWdlDQpsZXZlbCAic2tpcCIg c2V0dGluZy4NCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9m IE1pY2hhZWwNCj4gS3ViYWNraQ0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDcsIDIwMjMg Mjo0MyBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dh bkBtaWNyb3NvZnQuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5j bj4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjEgNy83XSAucHl0b29sL1Bs dWdpbjogQWRkDQo+IERlYnVnTWFjcm9DaGVjaw0KPiANCj4gVGhlcmUncyBub3QgcGFja2FnZSBs ZXZlbCBjb250cm9sIGF0IHRoZSBtb21lbnQgZnJvbSBhIGdpdmVuIHBhY2thZ2UgQ0kNCj4gWUFN TCBmaWxlLiBXZSd2ZSB0cmVhdGVkIHRoaXMgYXMgZnVuZGFtZW50YWwgZm9yICJjb3JlIiBwYWNr YWdlcyAodGhvc2UNCj4gb2Z0ZW4gYnVpbHQgZnJvbSBhIHNpbmdsZSBDSVNldHRpbmdzLnB5IGZp bGUpIGFuZCBvbi1ieS1kZWZhdWx0IGJ1dCB3aXRoDQo+IGEgZGlzYWJsZSBvcHRpb24gdmlhIHRo ZSBlbnYgdmFyIGZvciBpbmRpdmlkdWFsIHBsYXRmb3JtIGJ1aWxkIGZpbGVzDQo+IChsaWtlIHRo ZSBkaXNhYmxlIEkgYXBwbGllZCBmb3IgT3ZtZlBrZyBpbiBQYXRjaCA2IG9mIHRoZSBzZXJpZXMp Lg0KPiANCj4gSWYgeW91J2QgbGlrZSBhIGRpc2FibGUgb3B0aW9uIGF2YWlsYWJsZSBpbiBDSSBZ QU1MIGZpbGVzLCBpdCBjYW4gZWFzaWx5DQo+IGJlIGNvbnN1bWVkIGluIERlYnVnTWFjcm9DaGVj a0J1aWxkUGx1Z2luLnB5IGFuZCBJJ2xsIGFkZCBpdCBpbiB2Mi4gTGV0DQo+IG1lIGtub3cuDQo+ IA0KPiBUaGFua3MsDQo+IE1pY2hhZWwNCj4gDQo+IE9uIDkvNi8yMDIzIDk6MzUgUE0sIE1pY2hh ZWwgRCBLaW5uZXkgd3JvdGU6DQo+ID4gUmV2aWV3ZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+DQo+ID4gUmVhbGx5IGxpa2UgdGhlIGluY2x1 c2lvbiBvZiB1bml0IHRlc3RzLiAgSWYgYW55IGlzc3VlcyBhcmUNCj4gPiBmb3VuZCwgY2FuIHVw ZGF0ZSB1bml0IHRlc3QgdG8gY292ZXIgdGhhdCBjYXNlLg0KPiA+DQo+ID4gT25lIHF1aWNrIHF1 ZXN0aW9uLiAgSSBzZWUgYSBnbG9iYWwgZGlzYWJsZSB0aHJvdWdoIGVudiB2YXIuDQo+ID4gSSBh bHNvIHNlZSBpdCBzYXlzIHRoYXQgaXMgaXQgcnVucyBvbiBwYWNrYWdlcyB0aGF0IHVzZSB0aGUN Cj4gPiBjb21waWxlciBwbHVnaW4uICBJcyB0aGVyZSBhIHdheSB0byBkaXNhYmxlIHRoaXMgcGx1 Z2luIGF0DQo+ID4gdGhlIHBhY2thZ2Ugc2NvcGU/IE1hbnkgcGx1Z2lucyBzdXBwb3J0IGEgInNr aXAiIHNldHRpbmcgdG9kYXkuDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4NCj4gPiBNaWtlDQo+ID4N Cj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogbWlrdWJhY2tAbGlu dXgubWljcm9zb2Z0LmNvbSA8bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4NCj4gPj4gU2Vu dDogTW9uZGF5LCBBdWd1c3QgMTQsIDIwMjMgMTo0OSBQTQ0KPiA+PiBUbzogZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29t PjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg R2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gPj4gU3ViamVjdDogW1BB VENIIHYxIDcvN10gLnB5dG9vbC9QbHVnaW46IEFkZCBEZWJ1Z01hY3JvQ2hlY2sNCj4gPj4NCj4g Pj4gRnJvbTogTWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4N Cj4gPj4NCj4gPj4gQWRkcyBhIHBsdWdpbiB0aGF0IGZpbmRzIGRlYnVnIG1hY3JvIGZvcm1hdHRp bmcgaXNzdWVzLiBUaGVzZSBlcnJvcnMNCj4gPj4gb2Z0ZW4gY3JlZXAgaW50byBkZWJ1ZyBwcmlu dHMgaW4gZXJyb3IgY29uZGl0aW9ucyBub3QgZnJlcXVlbnRseQ0KPiA+PiBleGVjdXRlZCBhbmQg bWFrZSBkZWJ1ZyBtb3JlIGRpZmZpY3VsdCB3aGVuIHRoZXkgYXJlIGVuY291bnRlcmVkLg0KPiA+ Pg0KPiA+PiBUaGUgY29kZSBjYW4gYmUgYXMgYSBzdGFuZGFsb25lIHNjcmlwdCB3aGljaCBpcyB1 c2VmdWwgdG8gZmluZA0KPiA+PiBwcm9ibGVtcyBpbiBhIGxhcmdlIGNvZGViYXNlIHRoYXQgaGFz IG5vdCBiZWVuIGNoZWNrZWQgYmVmb3JlIG9yIGFzDQo+ID4+IGEgQ0kgcGx1Z2luIHRoYXQgbm90 aWZpZXMgYSBkZXZlbG9wZXIgb2YgYW4gZXJyb3IgcmlnaHQgYXdheS4NCj4gPj4NCj4gPj4gVGhl IHNjcmlwdCB3YXMgYWxyZWFkeSB1c2VkIHRvIGZpbmQgbnVtZXJvdXMgaXNzdWVzIGluIGVkazIg aW4gdGhlDQo+ID4+IHBhc3Qgc28gdGhlcmUncyBub3QgbWFueSBjb2RlIGZpeGVzIGluIHRoaXMg Y2hhbmdlLiBNb3JlIGRldGFpbHMNCj4gPj4gYXJlIGF2YWlsYWJsZSBpbiB0aGUgcmVhZG1lIGZp bGU6DQo+ID4+DQo+ID4+IC5weXRvb2xcUGx1Z2luXERlYnVnTWFjcm9DaGVja1xSZWFkbWUubWQN Cj4gPj4NCj4gPj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPg0K PiA+PiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ ID4+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4+IFNpZ25l ZC1vZmYtYnk6IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5jb20+ DQo+ID4+IC0tLQ0KPiA+Pg0KPiAucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svQnVpbGRQ bHVnaW4vRGVidWdNYWNyb0NoZWNrQnVpbGRQbHVnaW4ucHkNCj4gPj4gfCAxMjcgKysrDQo+ID4+ DQo+IC5weXRvb2wvUGx1Z2luL0RlYnVnTWFjcm9DaGVjay9CdWlsZFBsdWdpbi9EZWJ1Z01hY3Jv Q2hlY2tfcGx1Z19pbi55YW1sDQo+ID4+IHwgIDExICsNCj4gPj4gICAucHl0b29sL1BsdWdpbi9E ZWJ1Z01hY3JvQ2hlY2svRGVidWdNYWNyb0NoZWNrLnB5DQo+ID4+IHwgODU5ICsrKysrKysrKysr KysrKysrKysrDQo+ID4+ICAgLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0NoZWNrL1JlYWRtZS5t ZA0KPiA+PiB8IDI1MyArKysrKysNCj4gPj4gICAucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hl Y2svdGVzdHMvRGVidWdNYWNyb0RhdGFTZXQucHkNCj4gPj4gfCA2NzQgKysrKysrKysrKysrKysr DQo+ID4+ICAgLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0NoZWNrL3Rlc3RzL01hY3JvVGVzdC5w eQ0KPiA+PiB8IDEzMSArKysNCj4gPj4gICAucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2sv dGVzdHMvX19pbml0X18ucHkNCj4gPj4gfCAgIDANCj4gPj4gICAucHl0b29sL1BsdWdpbi9EZWJ1 Z01hY3JvQ2hlY2svdGVzdHMvdGVzdF9EZWJ1Z01hY3JvQ2hlY2sucHkNCj4gPj4gfCAyMDEgKysr KysNCj4gPj4gICA4IGZpbGVzIGNoYW5nZWQsIDIyNTYgaW5zZXJ0aW9ucygrKQ0KPiA+Pg0KPiA+ PiBkaWZmIC0tZ2l0DQo+ID4+DQo+IGEvLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0NoZWNrL0J1 aWxkUGx1Z2luL0RlYnVnTWFjcm9DaGVja0J1aWxkUGx1Z2luLnANCj4gPj4geQ0KPiA+Pg0KPiBi Ly5weXRvb2wvUGx1Z2luL0RlYnVnTWFjcm9DaGVjay9CdWlsZFBsdWdpbi9EZWJ1Z01hY3JvQ2hl Y2tCdWlsZFBsdWdpbi5wDQo+ID4+IHkNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4g aW5kZXggMDAwMDAwMDAwMDAwLi5iMTU0NDY2NjAyNWUNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ PiArKysNCj4gPj4NCj4gYi8ucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svQnVpbGRQbHVn aW4vRGVidWdNYWNyb0NoZWNrQnVpbGRQbHVnaW4ucA0KPiA+PiB5DQo+ID4+IEBAIC0wLDAgKzEs MTI3IEBADQo+ID4+ICsjIEBmaWxlIERlYnVnTWFjcm9DaGVja0J1aWxkUGx1Z2luLnB5DQo+ID4+ ICsjDQo+ID4+ICsjIEEgYnVpbGQgcGx1Z2luIHRoYXQgY2hlY2tzIGlmIERFQlVHIG1hY3JvcyBh cmUgZm9ybWF0dGVkIHByb3Blcmx5Lg0KPiA+PiArIw0KPiA+PiArIyBJbiBwYXJ0aWN1bGFyLCB0 aGF0IHByaW50IGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBkZWZpbmVkDQo+ID4+ICsjIHdpdGggdGhl IGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMgaW4gdGhlIHZhcmlhYmxlDQo+ID4+ICsjIGFy Z3VtZW50IGxpc3QuDQo+ID4+ICsjDQo+ID4+ICsjIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+PiArIyMNCj4gPj4gKw0KPiA+PiAraW1w b3J0IGxvZ2dpbmcNCj4gPj4gK2ltcG9ydCBvcw0KPiA+PiAraW1wb3J0IHBhdGhsaWINCj4gPj4g K2ltcG9ydCBzeXMNCj4gPj4gK2ltcG9ydCB5YW1sDQo+ID4+ICsNCj4gPj4gKyMgSW1wb3J0IHRo ZSBidWlsZCBwbHVnaW4NCj4gPj4gK3BsdWdpbl9maWxlID0gcGF0aGxpYi5QYXRoKF9fZmlsZV9f KQ0KPiA+PiArc3lzLnBhdGguYXBwZW5kKHN0cihwbHVnaW5fZmlsZS5wYXJlbnQucGFyZW50KSkN Cj4gPj4gKw0KPiA+PiArIyBmbGFrZTggKEU0MDIpOiBJZ25vcmUgZmxha2U4IG1vZHVsZSBsZXZl bCBpbXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlDQo+ID4+ICtpbXBvcnQgRGVidWdNYWNyb0NoZWNr ICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vcWE6IEU0MDINCj4gPj4gKw0KPiA+PiArZnJv bSBlZGsydG9vbGV4dCBpbXBvcnQgZWRrMl9sb2dnaW5nICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMNCj4gPj4gbm9xYTogRTQwMg0KPiA+PiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9u bWVudC5wbHVnaW50eXBlcy51ZWZpX2J1aWxkX3BsdWdpbiBpbXBvcnQgXA0KPiA+PiArICAgIElV ZWZpQnVpbGRQbHVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMNCj4gPj4gbm9xYTogRTQwMg0KPiA+PiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9ubWVu dC51ZWZpX2J1aWxkIGltcG9ydCBVZWZpQnVpbGRlciAgICAgICAgICMNCj4gPj4gbm9xYTogRTQw Mg0KPiA+PiArZnJvbSBlZGsydG9vbGxpYi51ZWZpLmVkazIucGF0aF91dGlsaXRpZXMgaW1wb3J0 IEVkazJQYXRoICAgICAgICAgICMNCj4gPj4gbm9xYTogRTQwMg0KPiA+PiArZnJvbSBwYXRobGli IGltcG9ydCBQYXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMN Cj4gPj4gbm9xYTogRTQwMg0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2NsYXNzIERlYnVnTWFjcm9D aGVja0J1aWxkUGx1Z2luKElVZWZpQnVpbGRQbHVnaW4pOg0KPiA+PiArDQo+ID4+ICsgICAgZGVm IGRvX3ByZV9idWlsZChzZWxmLCBidWlsZGVyOiBVZWZpQnVpbGRlcikgLT4gaW50Og0KPiA+PiAr ICAgICAgICAiIiJEZWJ1ZyBNYWNybyBDaGVjayBwcmUtYnVpbGQgZnVuY3Rpb25hbGl0eS4NCj4g Pj4gKw0KPiA+PiArICAgICAgICBUaGUgcGx1Z2luIGlzIGludm9rZWQgaW4gcHJlLWJ1aWxkIHNp bmNlIGl0IGNhbiBvcGVyYXRlDQo+ID4+IGluZGVwZW5kZW50bHkNCj4gPj4gKyAgICAgICAgb2Yg YnVpbGQgdG9vbHMgYW5kIHRvIG5vdGlmeSB0aGUgdXNlciBvZiBhbnkgZXJyb3JzIGVhcmxpZXIN Cj4gaW4NCj4gPj4gdGhlDQo+ID4+ICsgICAgICAgIGJ1aWxkIHByb2Nlc3MgdG8gcmVkdWNlIGZl ZWRiYWNrIHRpbWUuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgQXJnczoNCj4gPj4gKyAgICAgICAg ICAgIGJ1aWxkZXIgKFVlZmlCdWlsZGVyKTogQSBVRUZJIGJ1aWxkZXIgb2JqZWN0IGZvciB0aGlz DQo+IGJ1aWxkLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIFJldHVybnM6DQo+ID4+ICsgICAgICAg ICAgICBpbnQ6IFRoZSBudW1iZXIgb2YgZGVidWcgbWFjcm8gZXJyb3JzIGZvdW5kLiBaZXJvDQo+ IGluZGljYXRlcw0KPiA+PiB0aGUNCj4gPj4gKyAgICAgICAgICAgIGNoZWNrIGVpdGhlciBkaWQg bm90IHJ1biBvciBubyBlcnJvcnMgd2VyZSBmb3VuZC4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ ICsNCj4gPj4gKyAgICAgICAgIyBDaGVjayBpZiBkaXNhYmxlZCBpbiB0aGUgZW52aXJvbm1lbnQN Cj4gPj4gKyAgICAgICAgZW52X2Rpc2FibGUgPQ0KPiBidWlsZGVyLmVudi5HZXRWYWx1ZSgiRElT QUJMRV9ERUJVR19NQUNST19DSEVDSyIpDQo+ID4+ICsgICAgICAgIGlmIGVudl9kaXNhYmxlOg0K PiA+PiArICAgICAgICAgICAgcmV0dXJuIDANCj4gPj4gKw0KPiA+PiArICAgICAgICAjIE9ubHkg cnVuIG9uIHRhcmdldHMgd2l0aCBjb21waWxhdGlvbg0KPiA+PiArICAgICAgICBidWlsZF90YXJn ZXQgPSBidWlsZGVyLmVudi5HZXRWYWx1ZSgiVEFSR0VUIikubG93ZXIoKQ0KPiA+PiArICAgICAg ICBpZiAibm8tdGFyZ2V0IiBpbiBidWlsZF90YXJnZXQ6DQo+ID4+ICsgICAgICAgICAgICByZXR1 cm4gMA0KPiA+PiArDQo+ID4+ICsgICAgICAgIHBwID0gYnVpbGRlci5wcC5zcGxpdChvcy5wYXRo c2VwKQ0KPiA+PiArICAgICAgICBlZGsyID0gRWRrMlBhdGgoYnVpbGRlci53cywgcHApDQo+ID4+ ICsgICAgICAgIHBhY2thZ2UgPSBlZGsyLkdldENvbnRhaW5pbmdQYWNrYWdlKA0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIubXdzLmpvaW4oYnVpbGRlci53cywNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu ZW52LkdldFZhbHVlKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkFDVElWRV9QTEFURk9STSIpKSkNCj4gPj4gKyAgICAgICAgcGFja2FnZV9w YXRoID0gUGF0aCgNCj4gPj4gKw0KPiA+PiBlZGsyLkdldEFic29sdXRlUGF0aE9uVGhpc1N5c3Rl bUZyb21FZGsyUmVsYXRpdmVQYXRoKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYWNrYWdlKSkNCj4gPj4gKw0KPiA+PiArICAgICAgICAjIEV2ZXJ5IGRlYnVnIG1hY3Jv IGlzIHByaW50ZWQgYXQgREVCVUcgbG9nZ2luZyBsZXZlbC4NCj4gPj4gKyAgICAgICAgIyBFbnN1 cmUgdGhlIGxldmVsIGlzIGFib3ZlIERFQlVHIHdoaWxlIGV4ZWN1dGluZyB0aGUgbWFjcm8NCj4g Pj4gY2hlY2sNCj4gPj4gKyAgICAgICAgIyBwbHVnaW4gdG8gYXZvaWQgZmxvb2RpbmcgdGhlIGxv ZyBoYW5kbGVyLg0KPiA+PiArICAgICAgICBoYW5kbGVyX2xldmVsX2NvbnRleHQgPSBbXQ0KPiA+ PiArICAgICAgICBmb3IgaCBpbiBsb2dnaW5nLmdldExvZ2dlcigpLmhhbmRsZXJzOg0KPiA+PiAr ICAgICAgICAgICAgaWYgaC5sZXZlbCA8IGxvZ2dpbmcuSU5GTzoNCj4gPj4gKyAgICAgICAgICAg ICAgICBoYW5kbGVyX2xldmVsX2NvbnRleHQuYXBwZW5kKChoLCBoLmxldmVsKSkNCj4gPj4gKyAg ICAgICAgICAgICAgICBoLnNldExldmVsKGxvZ2dpbmcuSU5GTykNCj4gPj4gKw0KPiA+PiArICAg ICAgICBlZGsyX2xvZ2dpbmcubG9nX3Byb2dyZXNzKCJDaGVja2luZyBERUJVRyBNYWNyb3MiKQ0K PiA+PiArDQo+ID4+ICsgICAgICAgICMgVGhlcmUgYXJlIHR3byB3YXlzIHRvIHNwZWNpZnkgbWFj cm8gc3Vic3RpdHV0aW9uIGRhdGEgZm9yDQo+IHRoaXMNCj4gPj4gKyAgICAgICAgIyBwbHVnaW4u IElmIG11bHRpcGxlIG9wdGlvbnMgYXJlIHByZXNlbnQsIGRhdGEgaXMgYXBwZW5kZWQNCj4gZnJv bQ0KPiA+PiArICAgICAgICAjIGVhY2ggb3B0aW9uLg0KPiA+PiArICAgICAgICAjDQo+ID4+ICsg ICAgICAgICMgMS4gU3BlY2lmeSB0aGUgc3Vic3RpdHV0aW9uIGRhdGEgaW4gdGhlIHBhY2thZ2Ug Q0kgWUFNTA0KPiBmaWxlLg0KPiA+PiArICAgICAgICAjIDIuIFNwZWNpZnkgYSBzdGFuZGFsb25l IHN1YnN0aXR1dGlvbiBkYXRhIFlBTUwgZmlsZS4NCj4gPj4gKyAgICAgICAgIyMNCj4gPj4gKyAg ICAgICAgc3ViX2RhdGEgPSB7fQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgMS4gQWxsb3cgc3Vi c3RpdHV0aW9uIGRhdGEgdG8gYmUgc3BlY2lmaWVkIGluIGENCj4gPj4gIkRlYnVnTWFjcm9DaGVj ayIgb2YNCj4gPj4gKyAgICAgICAgIyB0aGUgcGFja2FnZSBDSSBZQU1MIGZpbGUuIFRoaXMgaXMg dXNlZCB0byBwcm92aWRlIGENCj4gZmFtaWxpYXINCj4gPj4gcGVyLQ0KPiA+PiArICAgICAgICAj IHBhY2thZ2UgY3VzdG9taXphdGlvbiBmbG93IGZvciBhIHBhY2thZ2UgbWFpbnRhaW5lci4NCj4g Pj4gKyAgICAgICAgcGFja2FnZV9jb25maWdfZmlsZSA9IFBhdGgoDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbigNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfcGF0aCwgcGFja2FnZSArDQo+ICIuY2kueWFt bCIpKQ0KPiA+PiArICAgICAgICBpZiBwYWNrYWdlX2NvbmZpZ19maWxlLmlzX2ZpbGUoKToNCj4g Pj4gKyAgICAgICAgICAgIHdpdGggb3BlbihwYWNrYWdlX2NvbmZpZ19maWxlLCAncicpIGFzIGNm Og0KPiA+PiArICAgICAgICAgICAgICAgIHBhY2thZ2VfY29uZmlnX2ZpbGVfZGF0YSA9IHlhbWwu c2FmZV9sb2FkKGNmKQ0KPiA+PiArICAgICAgICAgICAgICAgIGlmICJEZWJ1Z01hY3JvQ2hlY2si IGluIHBhY2thZ2VfY29uZmlnX2ZpbGVfZGF0YSBhbmQNCj4gXA0KPiA+PiArICAgICAgICAgICAg ICAgICAgICJTdHJpbmdTdWJzdGl0dXRpb25zIiBpbiBcDQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgcGFja2FnZV9jb25maWdfZmlsZV9kYXRhWyJEZWJ1Z01hY3JvQ2hlY2siXToNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKGYiTG9hZGluZyBzdWJzdGl0dXRpb24gZGF0 YSBpbiAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntzdHIocGFj a2FnZV9jb25maWdfZmlsZSl9IikNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgc3ViX2RhdGEg fD0NCj4gPj4gcGFja2FnZV9jb25maWdfZmlsZV9kYXRhWyJEZWJ1Z01hY3JvQ2hlY2siXVsiU3Ry aW5nU3Vic3RpdHV0aW9ucyJdICMNCj4gbm9xYQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgMi4g QWxsb3cgYSBzdWJzdGl0dXRpb24gZmlsZSB0byBiZSBzcGVjaWZpZWQgYXMgYW4NCj4gZW52aXJv bm1lbnQNCj4gPj4gKyAgICAgICAgIyB2YXJpYWJsZS4gVGhpcyBpcyB1c2VkIHRvIHByb3ZpZGUg ZmxleGliaWxpdHkgaW4gaG93IHRvDQo+ID4+IHNwZWNpZnkgYQ0KPiA+PiArICAgICAgICAjIHN1 YnN0aXR1dGlvbiBmaWxlLiBUaGUgdmFsdWUgY2FuIGJlIHNldCBhbnl3aGVyZSBwcmlvciB0bw0K PiB0aGlzDQo+ID4+IHBsdWdpbg0KPiA+PiArICAgICAgICAjIGdldHRpbmcgY2FsbGVkIHN1Y2gg YXMgcHJlLWV4aXN0aW5nIGJ1aWxkIHNjcmlwdC4NCj4gPj4gKyAgICAgICAgc3ViX2ZpbGUgPSBi dWlsZGVyLmVudi5HZXRWYWx1ZSgiREVCVUdfTUFDUk9fQ0hFQ0tfU1VCX0ZJTEUiKQ0KPiA+PiAr ICAgICAgICBpZiBzdWJfZmlsZToNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbyhmIkxv YWRpbmcgc3Vic3RpdHV0aW9uIGZpbGUge3N1Yl9maWxlfSIpDQo+ID4+ICsgICAgICAgICAgICB3 aXRoIG9wZW4oc3ViX2ZpbGUsICdyJykgYXMgc2Y6DQo+ID4+ICsgICAgICAgICAgICAgICAgc3Vi X2RhdGEgfD0geWFtbC5zYWZlX2xvYWQoc2YpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgdHJ5Og0K PiA+PiArICAgICAgICAgICAgZXJyb3JfY291bnQgPSBEZWJ1Z01hY3JvQ2hlY2suY2hlY2tfbWFj cm9zX2luX2RpcmVjdG9yeSgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFja2FnZV9wYXRoLA0KPiA+PiArDQo+IGlnbm9yZV9naXRfc3VibW9kdWxl cz1GYWxzZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hvd19wcm9ncmVzc19iYXI9RmFsc2UsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoqc3ViX2RhdGEpDQo+ID4+ICsgICAgICAgIGZpbmFsbHk6 DQo+ID4+ICsgICAgICAgICAgICBmb3IgaCwgbCBpbiBoYW5kbGVyX2xldmVsX2NvbnRleHQ6DQo+ ID4+ICsgICAgICAgICAgICAgICAgaC5zZXRMZXZlbChsKQ0KPiA+PiArDQo+ID4+ICsgICAgICAg IHJldHVybiBlcnJvcl9jb3VudA0KPiA+PiBkaWZmIC0tZ2l0DQo+ID4+DQo+IGEvLnB5dG9vbC9Q bHVnaW4vRGVidWdNYWNyb0NoZWNrL0J1aWxkUGx1Z2luL0RlYnVnTWFjcm9DaGVja19wbHVnX2lu LnlhbWwNCj4gPj4NCj4gYi8ucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svQnVpbGRQbHVn aW4vRGVidWdNYWNyb0NoZWNrX3BsdWdfaW4ueWFtbA0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjUwZjk3Y2JkMzkzNQ0KPiA+PiAtLS0gL2Rldi9u dWxsDQo+ID4+ICsrKw0KPiA+Pg0KPiBiLy5weXRvb2wvUGx1Z2luL0RlYnVnTWFjcm9DaGVjay9C dWlsZFBsdWdpbi9EZWJ1Z01hY3JvQ2hlY2tfcGx1Z19pbi55YW1sDQo+ID4+IEBAIC0wLDAgKzEs MTEgQEANCj4gPj4gKyMjIEBmaWxlDQo+ID4+ICsjIEJ1aWxkIHBsdWdpbiB1c2VkIHRvIGNoZWNr IHRoYXQgZGVidWcgbWFjcm9zIGFyZSBmb3JtYXR0ZWQNCj4gcHJvcGVybHkuDQo+ID4+ICsjDQo+ ID4+ICsjIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiA+PiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiA+PiArIyMNCj4gPj4gK3sNCj4gPj4gKyAgInNjb3BlIjogImdsb2JhbCIsDQo+ID4+ ICsgICJuYW1lIjogIkRlYnVnIE1hY3JvIENoZWNrIFBsdWdpbiIsDQo+ID4+ICsgICJtb2R1bGUi OiAiRGVidWdNYWNyb0NoZWNrQnVpbGRQbHVnaW4iDQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQg YS8ucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svRGVidWdNYWNyb0NoZWNrLnB5DQo+ID4+ IGIvLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0NoZWNrL0RlYnVnTWFjcm9DaGVjay5weQ0KPiA+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmZmYWJjZGY5 MWI2MA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiLy5weXRvb2wvUGx1Z2luL0RlYnVn TWFjcm9DaGVjay9EZWJ1Z01hY3JvQ2hlY2sucHkNCj4gPj4gQEAgLTAsMCArMSw4NTkgQEANCj4g Pj4gKyMgQGZpbGUgRGVidWdNYWNyb0NoZWNrLnB5DQo+ID4+ICsjDQo+ID4+ICsjIEEgc2NyaXB0 IHRoYXQgY2hlY2tzIGlmIERFQlVHIG1hY3JvcyBhcmUgZm9ybWF0dGVkIHByb3Blcmx5Lg0KPiA+ PiArIw0KPiA+PiArIyBJbiBwYXJ0aWN1bGFyLCB0aGF0IHByaW50IGZvcm1hdCBzcGVjaWZpZXJz IGFyZSBkZWZpbmVkDQo+ID4+ICsjIHdpdGggdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVu dHMgaW4gdGhlIHZhcmlhYmxlDQo+ID4+ICsjIGFyZ3VtZW50IGxpc3QuDQo+ID4+ICsjDQo+ID4+ ICsjIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiA+PiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiA+PiArIyMNCj4gPj4gKw0KPiA+PiArZnJvbSBhcmdwYXJzZSBpbXBvcnQgUmF3VGV4dEhl bHBGb3JtYXR0ZXINCj4gPj4gK2ltcG9ydCBsb2dnaW5nDQo+ID4+ICtpbXBvcnQgb3MNCj4gPj4g K2ltcG9ydCByZQ0KPiA+PiAraW1wb3J0IHJlZ2V4DQo+ID4+ICtpbXBvcnQgc3lzDQo+ID4+ICtp bXBvcnQgc2h1dGlsDQo+ID4+ICtpbXBvcnQgdGltZWl0DQo+ID4+ICtpbXBvcnQgeWFtbA0KPiA+ PiArDQo+ID4+ICtmcm9tIGVkazJ0b29sbGliLnV0aWxpdHlfZnVuY3Rpb25zIGltcG9ydCBSdW5D bWQNCj4gPj4gK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPDQo+ID4+ICtmcm9tIHBhdGhsaWIgaW1w b3J0IFBhdGgsIFB1cmVQYXRoDQo+ID4+ICtmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgSXRlcmFi bGUsIExpc3QsIE9wdGlvbmFsLCBUdXBsZQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK1BST0dSQU1f TkFNRSA9ICJEZWJ1ZyBNYWNybyBDaGVja2VyIg0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2NsYXNz IEdpdEhlbHBlcnM6DQo+ID4+ICsgICAgIiIiDQo+ID4+ICsgICAgQ29sbGVjdGlvbiBvZiBHaXQg aGVscGVycy4NCj4gPj4gKw0KPiA+PiArICAgIFdpbGwgYmUgbW92ZWQgdG8gYSBtb3JlIGdlbmVy aWMgbW9kdWxlIGFuZCBpbXBvcnRlZCBpbiB0aGUNCj4gZnV0dXJlLg0KPiA+PiArICAgICIiIg0K PiA+PiArDQo+ID4+ICsgICAgQHN0YXRpY21ldGhvZA0KPiA+PiArICAgIGRlZiBnZXRfZ2l0X2ln bm9yZWRfcGF0aHMoZGlyZWN0b3J5X3BhdGg6IFB1cmVQYXRoKSAtPg0KPiBMaXN0W1BhdGhdOg0K PiA+PiArICAgICAgICAiIiJSZXR1cm5zIGlnbm9yZWQgZmlsZXMgaW4gdGhpcyBnaXQgcmVwb3Np dG9yeS4NCj4gPj4gKw0KPiA+PiArICAgICAgICBBcmdzOg0KPiA+PiArICAgICAgICAgICAgZGly ZWN0b3J5X3BhdGggKFB1cmVQYXRoKTogUGF0aCB0byB0aGUgZ2l0IGRpcmVjdG9yeS4NCj4gPj4g Kw0KPiA+PiArICAgICAgICBSZXR1cm5zOg0KPiA+PiArICAgICAgICAgICAgTGlzdFtQYXRoXTog TGlzdCBvZiBmaWxlIGFic29sdXRlIHBhdGhzIHRvIGFsbCBmaWxlcw0KPiBpZ25vcmVkDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGlzIGdpdCByZXBvc2l0b3J5LiBJZiBnaXQg aXMgbm90IGZvdW5kLA0KPiBhbg0KPiA+PiBlbXB0eQ0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgbGlzdCB3aWxsIGJlIHJldHVybmVkLg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAg ICAgICAgaWYgbm90IHNodXRpbC53aGljaCgiZ2l0Iik6DQo+ID4+ICsgICAgICAgICAgICBsb2dn aW5nLndhcm4oDQo+ID4+ICsgICAgICAgICAgICAgICAgIkdpdCBpcyBub3QgZm91bmQgb24gdGhp cyBzeXN0ZW0uIEdpdCBzdWJtb2R1bGUgcGF0aHMNCj4gPj4gd2lsbCAiDQo+ID4+ICsgICAgICAg ICAgICAgICAgIm5vdCBiZSBjb25zaWRlcmVkLiIpDQo+ID4+ICsgICAgICAgICAgICByZXR1cm4g W10NCj4gPj4gKw0KPiA+PiArICAgICAgICBvdXRfc3RyZWFtX2J1ZmZlciA9IFN0cmluZ0lPKCkN Cj4gPj4gKyAgICAgICAgZXhpdF9jb2RlID0gUnVuQ21kKCJnaXQiLCAibHMtZmlsZXMgLS1vdGhl ciIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nZGlyPXN0cihkaXJl Y3RvcnlfcGF0aCksDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRzdHJlYW09 b3V0X3N0cmVhbV9idWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dn aW5nX2xldmVsPWxvZ2dpbmcuTk9UU0VUKQ0KPiA+PiArICAgICAgICBpZiBleGl0X2NvZGUgIT0g MDoNCj4gPj4gKyAgICAgICAgICAgIHJldHVybiBbXQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIHJl bF9wYXRocyA9IG91dF9zdHJlYW1fYnVmZmVyLmdldHZhbHVlKCkuc3RyaXAoKS5zcGxpdGxpbmVz KCkNCj4gPj4gKyAgICAgICAgYWJzX3BhdGhzID0gW10NCj4gPj4gKyAgICAgICAgZm9yIHBhdGgg aW4gcmVsX3BhdGhzOg0KPiA+PiArICAgICAgICAgICAgYWJzX3BhdGhzLmFwcGVuZChQYXRoKGRp cmVjdG9yeV9wYXRoLCBwYXRoKSkNCj4gPj4gKyAgICAgICAgcmV0dXJuIGFic19wYXRocw0KPiA+ PiArDQo+ID4+ICsgICAgQHN0YXRpY21ldGhvZA0KPiA+PiArICAgIGRlZiBnZXRfZ2l0X3N1Ym1v ZHVsZV9wYXRocyhkaXJlY3RvcnlfcGF0aDogUHVyZVBhdGgpIC0+DQo+IExpc3RbUGF0aF06DQo+ ID4+ICsgICAgICAgICIiIlJldHVybnMgc3VibW9kdWxlcyBpbiB0aGUgZ2l2ZW4gd29ya3NwYWNl IGRpcmVjdG9yeS4NCj4gPj4gKw0KPiA+PiArICAgICAgICBBcmdzOg0KPiA+PiArICAgICAgICAg ICAgZGlyZWN0b3J5X3BhdGggKFB1cmVQYXRoKTogUGF0aCB0byB0aGUgZ2l0IGRpcmVjdG9yeS4N Cj4gPj4gKw0KPiA+PiArICAgICAgICBSZXR1cm5zOg0KPiA+PiArICAgICAgICAgICAgTGlzdFtQ YXRoXTogTGlzdCBvZiBkaXJlY3RvcnkgYWJzb2x1dGUgcGF0aHMgdG8gdGhlIHJvb3QNCj4gb2YN Cj4gPj4gKyAgICAgICAgICAgIGVhY2ggc3VibW9kdWxlIGZvdW5kIGZyb20gdGhpcyBmb2xkZXIu IElmIHN1Ym1vZHVsZXMgYXJlDQo+IG5vdA0KPiA+PiArICAgICAgICAgICAgZm91bmQsIGFuIGVt cHR5IGxpc3Qgd2lsbCBiZSByZXR1cm5lZC4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAg ICAgIGlmIG5vdCBzaHV0aWwud2hpY2goImdpdCIpOg0KPiA+PiArICAgICAgICAgICAgcmV0dXJu IFtdDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZGlyZWN0b3J5X3Bh dGguam9pbnBhdGgoIi5naXRtb2R1bGVzIikpOg0KPiA+PiArICAgICAgICAgICAgb3V0X3N0cmVh bV9idWZmZXIgPSBTdHJpbmdJTygpDQo+ID4+ICsgICAgICAgICAgICBleGl0X2NvZGUgPSBSdW5D bWQoDQo+ID4+ICsgICAgICAgICAgICAgICAgImdpdCIsICJjb25maWcgLS1maWxlIC5naXRtb2R1 bGVzIC0tZ2V0LXJlZ2V4cCBwYXRoIiwNCj4gPj4gKyAgICAgICAgICAgICAgICB3b3JraW5nZGly PXN0cihkaXJlY3RvcnlfcGF0aCksDQo+ID4+ICsgICAgICAgICAgICAgICAgb3V0c3RyZWFtPW91 dF9zdHJlYW1fYnVmZmVyLA0KPiA+PiArICAgICAgICAgICAgICAgIGxvZ2dpbmdfbGV2ZWw9bG9n Z2luZy5OT1RTRVQpDQo+ID4+ICsgICAgICAgICAgICBpZiBleGl0X2NvZGUgIT0gMDoNCj4gPj4g KyAgICAgICAgICAgICAgICByZXR1cm4gW10NCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgc3Vi bW9kdWxlX3BhdGhzID0gW10NCj4gPj4gKyAgICAgICAgICAgIGZvciBsaW5lIGluDQo+ID4+IG91 dF9zdHJlYW1fYnVmZmVyLmdldHZhbHVlKCkuc3RyaXAoKS5zcGxpdGxpbmVzKCk6DQo+ID4+ICsg ICAgICAgICAgICAgICAgc3VibW9kdWxlX3BhdGhzLmFwcGVuZCgNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgUGF0aChkaXJlY3RvcnlfcGF0aCwgbGluZS5zcGxpdCgpWzFdKSkNCj4gPj4gKw0K PiA+PiArICAgICAgICAgICAgcmV0dXJuIHN1Ym1vZHVsZV9wYXRocw0KPiA+PiArICAgICAgICBl bHNlOg0KPiA+PiArICAgICAgICAgICAgcmV0dXJuIFtdDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiAr Y2xhc3MgUXVpZXRGaWx0ZXIobG9nZ2luZy5GaWx0ZXIpOg0KPiA+PiArICAgICIiIkEgbG9nZ2lu ZyBmaWx0ZXIgdGhhdCB0ZW1wb3JhcmlseSBzdXBwcmVzc2VzIG1lc3NhZ2UNCj4gb3V0cHV0LiIi Ig0KPiA+PiArDQo+ID4+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1aWV0OiBib29sID0gRmFs c2UpOg0KPiA+PiArICAgICAgICAiIiJDbGFzcyBjb25zdHJ1Y3RvciBtZXRob2QuDQo+ID4+ICsN Cj4gPj4gKyAgICAgICAgQXJnczoNCj4gPj4gKyAgICAgICAgICAgIHF1aWV0IChib29sLCBvcHRp b25hbCk6IEluZGljYXRlcyBpZiBtZXNzYWdlcyBhcmUNCj4gY3VycmVudGx5DQo+ID4+IGJlaW5n DQo+ID4+ICsgICAgICAgICAgICBwcmludGVkIChGYWxzZSkgb3Igbm90IChUcnVlKS4gRGVmYXVs dHMgdG8gRmFsc2UuDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArDQo+ID4+ICsgICAgICAgIHNl bGYuX3F1aWV0ID0gcXVpZXQNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVj b3JkOiBsb2dnaW5nLkxvZ1JlY29yZCkgLT4gYm9vbDoNCj4gPj4gKyAgICAgICAgIiIiUXVpZXQg ZmlsdGVyIG1ldGhvZC4NCj4gPj4gKw0KPiA+PiArICAgICAgICBBcmdzOg0KPiA+PiArICAgICAg ICAgICAgcmVjb3JkIChsb2dnaW5nLkxvZ1JlY29yZCk6IEEgbG9nIHJlY29yZCBvYmplY3QgdGhh dCB0aGUNCj4gPj4gZmlsdGVyIGlzDQo+ID4+ICsgICAgICAgICAgICBhcHBsaWVkIHRvLg0KPiA+ PiArDQo+ID4+ICsgICAgICAgIFJldHVybnM6DQo+ID4+ICsgICAgICAgICAgICBib29sOiBUcnVl IGlmIG1lc3NhZ2VzIGFyZSBiZWluZyBzdXBwcmVzc2VkLiBPdGhlcndpc2UsDQo+ID4+IEZhbHNl Lg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xdWll dA0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2NsYXNzIFByb2dyZXNzRmlsdGVyKGxvZ2dpbmcuRmls dGVyKToNCj4gPj4gKyAgICAiIiJBIGxvZ2dpbmcgZmlsdGVyIHRoYXQgc3VwcHJlc3NlcyAnUHJv Z3Jlc3MnIG1lc3NhZ2VzLiIiIg0KPiA+PiArDQo+ID4+ICsgICAgZGVmIGZpbHRlcihzZWxmLCBy ZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBib29sOg0KPiA+PiArICAgICAgICAiIiJQcm9n cmVzcyBmaWx0ZXIgbWV0aG9kLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIEFyZ3M6DQo+ID4+ICsg ICAgICAgICAgICByZWNvcmQgKGxvZ2dpbmcuTG9nUmVjb3JkKTogQSBsb2cgcmVjb3JkIG9iamVj dCB0aGF0IHRoZQ0KPiA+PiBmaWx0ZXIgaXMNCj4gPj4gKyAgICAgICAgICAgIGFwcGxpZWQgdG8u DQo+ID4+ICsNCj4gPj4gKyAgICAgICAgUmV0dXJuczoNCj4gPj4gKyAgICAgICAgICAgIGJvb2w6 IFRydWUgaWYgdGhlIG1lc3NhZ2UgaXMgbm90IGEgJ1Byb2dyZXNzJyBtZXNzYWdlLg0KPiA+PiBP dGhlcndpc2UsDQo+ID4+ICsgICAgICAgICAgICBGYWxzZS4NCj4gPj4gKyAgICAgICAgIiIiDQo+ ID4+ICsgICAgICAgIHJldHVybiBub3QgcmVjb3JkLmdldE1lc3NhZ2UoKS5zdGFydHN3aXRoKCJc clByb2dyZXNzIikNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtjbGFzcyBDYWNoZUR1cmluZ1Byb2dy ZXNzRmlsdGVyKGxvZ2dpbmcuRmlsdGVyKToNCj4gPj4gKyAgICAiIiJBIGxvZ2dpbmcgZmlsdGVy IHRoYXQgc3VwcHJlc3NlcyBtZXNzYWdlcyBkdXJpbmcgcHJvZ3Jlc3MNCj4gPj4gb3BlcmF0aW9u cy4iIiINCj4gPj4gKw0KPiA+PiArICAgIF9tZXNzYWdlX2NhY2hlID0gW10NCj4gPj4gKw0KPiA+ PiArICAgIEBwcm9wZXJ0eQ0KPiA+PiArICAgIGRlZiBtZXNzYWdlX2NhY2hlKHNlbGYpIC0+IExp c3RbbG9nZ2luZy5Mb2dSZWNvcmRdOg0KPiA+PiArICAgICAgICAiIiJDb250YWlucyBhIGNhY2hl IG9mIG1lc3NhZ2VzIGFjY3VtdWxhdGVkIGR1cmluZyB0aW1lIG9mDQo+ID4+IG9wZXJhdGlvbi4N Cj4gPj4gKw0KPiA+PiArICAgICAgICBSZXR1cm5zOg0KPiA+PiArICAgICAgICAgICAgTGlzdFts b2dnaW5nLkxvZ1JlY29yZF06IExpc3Qgb2YgbG9nIHJlY29yZHMgc3RvcmVkIHdoaWxlDQo+ID4+ IHRoZQ0KPiA+PiArICAgICAgICAgICAgZmlsdGVyIHdhcyBhY3RpdmUuDQo+ID4+ICsgICAgICAg ICIiIg0KPiA+PiArICAgICAgICByZXR1cm4gc2VsZi5fbWVzc2FnZV9jYWNoZQ0KPiA+PiArDQo+ ID4+ICsgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKToNCj4g Pj4gKyAgICAgICAgIiIiQ2FjaGUgcHJvZ3Jlc3MgZmlsdGVyIHRoYXQgc3VwcHJlc3NlcyBtZXNz YWdlcyBkdXJpbmcNCj4gPj4gcHJvZ3Jlc3MNCj4gPj4gKyAgICAgICAgICAgZGlzcGxheSBvdXRw dXQuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgQXJnczoNCj4gPj4gKyAgICAgICAgICAgIHJlY29y ZCAobG9nZ2luZy5Mb2dSZWNvcmQpOiBBIGxvZyByZWNvcmQgdG8gY2FjaGUuDQo+ID4+ICsgICAg ICAgICIiIg0KPiA+PiArICAgICAgICBzZWxmLl9tZXNzYWdlX2NhY2hlLmFwcGVuZChyZWNvcmQp DQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArZGVmIGNoZWNrX2RlYnVnX21hY3JvcyhtYWNyb3M6IEl0 ZXJhYmxlW0RpY3Rbc3RyLCBzdHJdXSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZmls ZV9kYmdfcGF0aDogc3RyLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAqKm1hY3JvX3N1 YnM6IHN0cg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICApIC0+IFR1cGxlW2ludCwgaW50 LCBpbnRdOg0KPiA+PiArICAgICIiIkNoZWNrcyBpZiBkZWJ1ZyBtYWNyb3MgY29udGFpbiBmb3Jt YXR0aW5nIGVycm9ycy4NCj4gPj4gKw0KPiA+PiArICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgIG1h Y3JvcyAoSXRlcmFibGVbRGljdFtzdHIsIHN0cl1dKTogOiBBIGdyb3VwZGljdCBvZiBtYWNybw0K PiA+PiBtYXRjaGVzLg0KPiA+PiArICAgICAgICBUaGlzIGlzIGFuIGl0ZXJhYmxlIG9mIGRpY3Rp b25hcmllcyB3aXRoIGdyb3VwIG5hbWVzIGZyb20gdGhlDQo+ID4+IHJlZ2V4DQo+ID4+ICsgICAg ICAgIG1hdGNoIGFzIHRoZSBrZXkgYW5kIHRoZSBtYXRjaGVkIHN0cmluZyBhcyB0aGUgdmFsdWUg Zm9yIHRoZQ0KPiA+PiBrZXkuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgZmlsZV9kYmdfcGF0aCAo c3RyKTogVGhlIGZpbGUgcGF0aCAob3Igb3RoZXIgY3VzdG9tIHN0cmluZykNCj4gdG8NCj4gPj4g ZGlzcGxheQ0KPiA+PiArICAgICAgICBpbiBkZWJ1ZyBtZXNzYWdlcy4NCj4gPj4gKw0KPiA+PiAr ICAgICAgICBtYWNyb19zdWJzIChEaWN0W3N0cixzdHJdKTogVmFyaWFibGUtbGVuZ3RoIGtleXdv cmQgYW5kDQo+ID4+IHJlcGxhY2VtZW50DQo+ID4+ICsgICAgICAgIHZhbHVlIHN0cmluZyBwYWly cyB0byBzdWJzdGl0dXRlIGR1cmluZyBkZWJ1ZyBtYWNybyBjaGVja3MuDQo+ID4+ICsNCj4gPj4g KyAgICBSZXR1cm5zOg0KPiA+PiArICAgICAgICBUdXBsZVtpbnQsIGludCwgaW50XTogQSB0dXBs ZSBvZiB0aGUgbnVtYmVyIG9mIGZvcm1hdHRpbmcNCj4gPj4gZXJyb3JzLA0KPiA+PiArICAgICAg ICBudW1iZXIgb2YgcHJpbnQgc3BlY2lmaWVycywgYW5kIG51bWJlciBvZiBhcmd1bWVudHMgZm9y IHRoZQ0KPiA+PiBtYWNyb3MNCj4gPj4gKyAgICAgICAgZ2l2ZW4uDQo+ID4+ICsgICAgIiIiDQo+ ID4+ICsNCj4gPj4gKyAgICBtYWNyb19zdWJzID0ge2subG93ZXIoKTogdiBmb3IgaywgdiBpbiBt YWNyb19zdWJzLml0ZW1zKCl9DQo+ID4+ICsNCj4gPj4gKyAgICBhcmdfY250LCBmYWlsdXJlX2Nu dCwgcHJpbnRfc3BlY19jbnQgPSAwLCAwLCAwDQo+ID4+ICsgICAgZm9yIG1hY3JvIGluIG1hY3Jv czoNCj4gPj4gKyAgICAgICAgIyBTcGVjaWFsIFNwZWNpZmllciBIYW5kbGluZw0KPiA+PiArICAg ICAgICBwcm9jZXNzZWRfZGJnX3N0ciA9IG1hY3JvWydkYmdfc3RyJ10uc3RyaXAoKS5sb3dlcigp DQo+ID4+ICsNCj4gPj4gKyAgICAgICAgbG9nZ2luZy5kZWJ1ZyhmIkluc3BlY3RpbmcgbWFjcm86 IHttYWNyb30iKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgTWFrZSBhbnkgbWFjcm8gc3Vic3Rp dHV0aW9ucyBzbyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMNCj4gYXBwbGllZA0KPiA+PiArICAgICAg ICAjIHRvIHRoZSBzdWJzdGl0dXRlZCB2YWx1ZS4NCj4gPj4gKyAgICAgICAgZm9yIGsgaW4gbWFj cm9fc3Vicy5rZXlzKCk6DQo+ID4+ICsgICAgICAgICAgICBwcm9jZXNzZWRfZGJnX3N0ciA9IHBy b2Nlc3NlZF9kYmdfc3RyLnJlcGxhY2UoaywNCj4gPj4gbWFjcm9fc3Vic1trXSkNCj4gPj4gKw0K PiA+PiArICAgICAgICBsb2dnaW5nLmRlYnVnKCJEZWJ1ZyBtYWNybyBzdHJpbmcgYWZ0ZXIgcmVw bGFjZW1lbnRzOiAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgZiJ7cHJvY2Vzc2VkX2Ri Z19zdHJ9IikNCj4gPj4gKw0KPiA+PiArICAgICAgICAjIFRoZXNlIGFyZSB2ZXJ5IHJhcmVseSB1 c2VkIGluIGRlYnVnIHN0cmluZ3MuIFRoZXkgYXJlDQo+IHNvbWV3aGF0DQo+ID4+ICsgICAgICAg ICMgbW9yZSBjb21tb24gaW4gSElJIGNvZGUgdG8gY29udHJvbCB0ZXh0IGRpc3BsYXllZCBvbiB0 aGUNCj4gPj4gKyAgICAgICAgIyBjb25zb2xlLiBEdWUgdG8gdGhlIHJhcml0eSBhbmQgbGlrZWxp aG9vZCB1c2FnZSBpcyBhDQo+IG1pc3Rha2UsDQo+ID4+ICsgICAgICAgICMgYSB3YXJuaW5nIGlz IHNob3duIGlmIGZvdW5kLg0KPiA+PiArICAgICAgICBzcGVjaWZpZXJfZGlzcGxheV9yZXBsYWNl bWVudHMgPSBbJyVuJywgJyVoJywgJyVlJywgJyViJywNCj4gJyV2J10NCj4gPj4gKyAgICAgICAg Zm9yIHMgaW4gc3BlY2lmaWVyX2Rpc3BsYXlfcmVwbGFjZW1lbnRzOg0KPiA+PiArICAgICAgICAg ICAgaWYgcyBpbiBwcm9jZXNzZWRfZGJnX3N0cjoNCj4gPj4gKyAgICAgICAgICAgICAgICBsb2dn aW5nLndhcm5pbmcoZiJGaWxlOiB7ZmlsZV9kYmdfcGF0aH0iKQ0KPiA+PiArICAgICAgICAgICAg ICAgIGxvZ2dpbmcud2FybmluZyhmIiAge3N9IGZvdW5kIGluIHN0cmluZyBhbmQNCj4gaWdub3Jl ZDoiKQ0KPiA+PiArICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZyhmIiAgXCJ7cHJvY2Vz c2VkX2RiZ19zdHJ9XCIiKQ0KPiA+PiArICAgICAgICAgICAgICAgIHByb2Nlc3NlZF9kYmdfc3Ry ID0gcHJvY2Vzc2VkX2RiZ19zdHIucmVwbGFjZShzLCAnJykNCj4gPj4gKw0KPiA+PiArICAgICAg ICAjIFRoZXNlIGFyZSBtaXNjZWxsYW5lb3VzIHByaW50IHNwZWNpZmllcnMgdGhhdCBkbyBub3QN Cj4gcmVxdWlyZQ0KPiA+PiArICAgICAgICAjIHNwZWNpYWwgcGFyc2luZyBhbmQgc2ltcGx5IG5l ZWQgdG8gYmUgcmVwbGFjZWQgc2luY2UgdGhleQ0KPiBkbw0KPiA+PiArICAgICAgICAjIGhhdmUg YSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGVtLg0KPiA+PiArICAg ICAgICBzcGVjaWZpZXJfb3RoZXJfcmVwbGFjZW1lbnRzID0gWyclJScsICdccicsICdcbiddDQo+ ID4+ICsgICAgICAgIGZvciBzIGluIHNwZWNpZmllcl9vdGhlcl9yZXBsYWNlbWVudHM6DQo+ID4+ ICsgICAgICAgICAgICBpZiBzIGluIHByb2Nlc3NlZF9kYmdfc3RyOg0KPiA+PiArICAgICAgICAg ICAgICAgIHByb2Nlc3NlZF9kYmdfc3RyID0gcHJvY2Vzc2VkX2RiZ19zdHIucmVwbGFjZShzLCAn JykNCj4gPj4gKw0KPiA+PiArICAgICAgICBwcm9jZXNzZWRfZGJnX3N0ciA9IHJlLnN1YigNCj4g Pj4gKyAgICAgICAgICAgIHInJVsuXC0rICxMbDAtOV0qXCpbLlwtKyAsTGwwLTldKlthLXpBLVpd JywgJyVfJV8nLA0KPiA+PiArICAgICAgICAgICAgcHJvY2Vzc2VkX2RiZ19zdHIpDQo+ID4+ICsg ICAgICAgIGxvZ2dpbmcuZGVidWcoZiJGaW5hbCBtYWNybyBiZWZvcmUgcHJpbnQgc3BlY2lmaWVy IHNjYW46ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBmIntwcm9jZXNzZWRfZGJnX3N0 cn0iKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIHByaW50X3NwZWNfY250ID0gcHJvY2Vzc2VkX2Ri Z19zdHIuY291bnQoJyUnKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgTmVlZCB0byB0YWtlIGlu dG8gYWNjb3VudCBwYXJlbnRoZXNlcyBiZXR3ZWVuIGFyZ3MgaW4NCj4gZnVuY3Rpb24NCj4gPj4g KyAgICAgICAgIyBjYWxscyB0aGF0IG1pZ2h0IGJlIGluIHRoZSBhcmdzIGxpc3QuIFVzZSByZWdl eCBtb2R1bGUgZm9yDQo+ID4+ICsgICAgICAgICMgdGhpcyBvbmUgc2luY2UgdGhlIHJlY3Vyc2l2 ZSBwYXR0ZXJuIG1hdGNoIGhlbHBzIHNpbXBsaWZ5DQo+ID4+ICsgICAgICAgICMgb25seSBtYXRj aGluZyBjb21tYXMgb3V0c2lkZSBuZXN0ZWQgY2FsbCBncm91cHMuDQo+ID4+ICsgICAgICAgIGlm IG1hY3JvWydkYmdfYXJncyddIGlzIE5vbmU6DQo+ID4+ICsgICAgICAgICAgICBwcm9jZXNzZWRf YXJnX3N0ciA9ICIiDQo+ID4+ICsgICAgICAgIGVsc2U6DQo+ID4+ICsgICAgICAgICAgICBwcm9j ZXNzZWRfYXJnX3N0ciA9IG1hY3JvWydkYmdfYXJncyddLnN0cmlwKCkNCj4gPj4gKw0KPiA+PiAr ICAgICAgICBhcmd1bWVudF9vdGhlcl9yZXBsYWNlbWVudHMgPSBbJ1xyJywgJ1xuJ10NCj4gPj4g KyAgICAgICAgZm9yIHIgaW4gYXJndW1lbnRfb3RoZXJfcmVwbGFjZW1lbnRzOg0KPiA+PiArICAg ICAgICAgICAgaWYgcyBpbiBwcm9jZXNzZWRfYXJnX3N0cjoNCj4gPj4gKyAgICAgICAgICAgICAg ICBwcm9jZXNzZWRfYXJnX3N0ciA9IHByb2Nlc3NlZF9hcmdfc3RyLnJlcGxhY2UocywgJycpDQo+ ID4+ICsgICAgICAgIHByb2Nlc3NlZF9hcmdfc3RyID0gcmUuc3ViKHInICArJywgJyAnLCBwcm9j ZXNzZWRfYXJnX3N0cikNCj4gPj4gKw0KPiA+PiArICAgICAgICAjIEhhbmRsZSBzcGVjaWFsIGNh c2Ugb2YgY29tbWFzIGluIGFyZyBzdHJpbmdzIC0gcmVtb3ZlIHRoZW0NCj4gZm9yDQo+ID4+ICsg ICAgICAgICMgZmluYWwgY291bnQgdG8gcGljayB1cCBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVu dA0KPiBzZXBhcmF0aW5nDQo+ID4+ICsgICAgICAgICMgY29tbWFzLg0KPiA+PiArICAgICAgICBw cm9jZXNzZWRfYXJnX3N0ciA9IHJlLnN1YigNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcicoW1wiXCddKSg/OnxcXC58W15cXF0pKj8oXDEpJywNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJycsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByb2Nlc3NlZF9hcmdfc3RyKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIGFyZ19t YXRjaGVzID0gcmVnZXguZmluZGFsbCgNCj4gPj4gKyAgICAgICAgICAgIHInKD86XCgoPzpbXiko XSt8KD9SKSkqK1wpKXwoLCknLA0KPiA+PiArICAgICAgICAgICAgcHJvY2Vzc2VkX2FyZ19zdHIs DQo+ID4+ICsgICAgICAgICAgICByZWdleC5NVUxUSUxJTkUpDQo+ID4+ICsNCj4gPj4gKyAgICAg ICAgYXJnX2NudCA9IDANCj4gPj4gKyAgICAgICAgaWYgcHJvY2Vzc2VkX2FyZ19zdHIgIT0gJyc6 DQo+ID4+ICsgICAgICAgICAgICBhcmdfY250ID0gYXJnX21hdGNoZXMuY291bnQoJywnKQ0KPiA+ PiArDQo+ID4+ICsgICAgICAgIGlmIHByaW50X3NwZWNfY250ICE9IGFyZ19jbnQ6DQo+ID4+ICsg ICAgICAgICAgICBsb2dnaW5nLmVycm9yKGYiRmlsZToge2ZpbGVfZGJnX3BhdGh9IikNCj4gPj4g KyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoZiIgIE1lc3NhZ2UgICAgICAgICA9IHttYWNyb1sn ZGJnX3N0ciddfSIpDQo+ID4+ICsgICAgICAgICAgICBsb2dnaW5nLmVycm9yKGYiICBBcmd1bWVu dHMgICAgICAgPQ0KPiA+PiBcIntwcm9jZXNzZWRfYXJnX3N0cn1cIiIpDQo+ID4+ICsgICAgICAg ICAgICBsb2dnaW5nLmVycm9yKGYiICBTcGVjaWZpZXIgQ291bnQgPSB7cHJpbnRfc3BlY19jbnR9 IikNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoZiIgIEFyZ3VtZW50IENvdW50ICA9 IHthcmdfY250fSIpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgIGZhaWx1cmVfY250ICs9IDEN Cj4gPj4gKw0KPiA+PiArICAgIHJldHVybiBmYWlsdXJlX2NudCwgcHJpbnRfc3BlY19jbnQsIGFy Z19jbnQNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtkZWYgZ2V0X2RlYnVnX21hY3JvcyhmaWxlX2Nv bnRlbnRzOiBzdHIpIC0+IExpc3RbRGljdFtzdHIsIHN0cl1dOg0KPiA+PiArICAgICIiIkV4dHJh Y3QgZGVidWcgbWFjcm9zIGZyb20gdGhlIGdpdmVuIGZpbGUgY29udGVudHMuDQo+ID4+ICsNCj4g Pj4gKyAgICBBcmdzOg0KPiA+PiArICAgICAgICBmaWxlX2NvbnRlbnRzIChzdHIpOiBBIHN0cmlu ZyBvZiBzb3VyY2UgZmlsZSBjb250ZW50cyB0aGF0DQo+IG1heQ0KPiA+PiArICAgICAgICBjb250 YWluIGRlYnVnIG1hY3Jvcy4NCj4gPj4gKw0KPiA+PiArICAgIFJldHVybnM6DQo+ID4+ICsgICAg ICAgIExpc3RbRGljdFtzdHIsIHN0cl1dOiBBIGdyb3VwZGljdCBvZiBkZWJ1ZyBtYWNybyByZWdl eA0KPiBtYXRjaGVzDQo+ID4+ICsgICAgICAgIHdpdGhpbiB0aGUgZmlsZSBjb250ZW50cyBwcm92 aWRlZC4NCj4gPj4gKyAgICAiIiINCj4gPj4gKw0KPiA+PiArICAgICMgVGhpcyBpcyB0aGUgbWFp biByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBpcyByZXNwb25zaWJsZSBmb3INCj4gPj4gaWRlbnRp ZnlpbmcNCj4gPj4gKyAgICAjIERFQlVHIG1hY3JvcyB3aXRoaW4gc291cmNlIGZpbGVzIGFuZCBn cm91cGluZyB0aGUgbWFjcm8gbWVzc2FnZQ0KPiA+PiBzdHJpbmcNCj4gPj4gKyAgICAjIGFuZCBt YWNybyBhcmd1bWVudHMgc3RyaW5ncyBzbyB0aGV5IGNhbiBiZSBmdXJ0aGVyIHByb2Nlc3NlZC4N Cj4gPj4gKyAgICByID0gcmVnZXguY29tcGlsZSgNCj4gPj4gKw0KPiA+Pg0KPiByJyg/Pig/UDxw cm9sb2d1ZT5ERUJVR1xzKlwoXHMqXCgoPzouKj8sKSkoPzpccyopKSg/UDxkYmdfc3RyPi4qPyg/ OlwiJw0KPiA+PiArDQo+ID4+DQo+IHInKD86W15cIlxcXXxcXC4pKlwiLio/KSopKD86KD8oPz0s KSg/PGRiZ19hcmdzPi4qPyg/PSg/OlxzKlwpKXsyfVxzKjsnDQo+ID4+ICsgICAgICAgIHInKSkp KSg/OlxzKlwpKXsyLH07PycsDQo+ID4+ICsgICAgICAgIHJlZ2V4Lk1VTFRJTElORSB8IHJlZ2V4 LkRPVEFMTCkNCj4gPj4gKyAgICByZXR1cm4gW20uZ3JvdXBkaWN0KCkgZm9yIG0gaW4gci5maW5k aXRlcihmaWxlX2NvbnRlbnRzKV0NCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtkZWYgY2hlY2tfbWFj cm9zX2luX3N0cmluZyhzcmNfc3RyOiBzdHIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICBmaWxlX2RiZ19wYXRoOiBzdHIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAqKm1hY3JvX3N1YnM6IHN0cikgLT4gVHVwbGVbaW50LCBpbnQsDQo+IGludF06DQo+ID4+ICsg ICAgIiIiQ2hlY2tzIGZvciBkZWJ1ZyBtYWNybyBmb3JtYXR0aW5nIGVycm9ycyBpbiBhIHN0cmlu Zy4NCj4gPj4gKw0KPiA+PiArICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgIHNyY19zdHIgKHN0cik6 IENvbnRlbnRzIG9mIHRoZSBzdHJpbmcgd2l0aCBkZWJ1ZyBtYWNyb3MuDQo+ID4+ICsNCj4gPj4g KyAgICAgICAgZmlsZV9kYmdfcGF0aCAoc3RyKTogVGhlIGZpbGUgcGF0aCAob3Igb3RoZXIgY3Vz dG9tIHN0cmluZykNCj4gdG8NCj4gPj4gZGlzcGxheQ0KPiA+PiArICAgICAgICBpbiBkZWJ1ZyBt ZXNzYWdlcy4NCj4gPj4gKw0KPiA+PiArICAgICAgICBtYWNyb19zdWJzIChEaWN0W3N0cixzdHJd KTogVmFyaWFibGUtbGVuZ3RoIGtleXdvcmQgYW5kDQo+ID4+IHJlcGxhY2VtZW50DQo+ID4+ICsg ICAgICAgIHZhbHVlIHN0cmluZyBwYWlycyB0byBzdWJzdGl0dXRlIGR1cmluZyBkZWJ1ZyBtYWNy byBjaGVja3MuDQo+ID4+ICsNCj4gPj4gKyAgICBSZXR1cm5zOg0KPiA+PiArICAgICAgICBUdXBs ZVtpbnQsIGludCwgaW50XTogQSB0dXBsZSBvZiB0aGUgbnVtYmVyIG9mIGZvcm1hdHRpbmcNCj4g Pj4gZXJyb3JzLA0KPiA+PiArICAgICAgICBudW1iZXIgb2YgcHJpbnQgc3BlY2lmaWVycywgYW5k IG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHRoZQ0KPiA+PiBtYWNyb3MNCj4gPj4gKyAgICAgICAg aW4gdGhlIHN0cmluZyBnaXZlbi4NCj4gPj4gKyAgICAiIiINCj4gPj4gKyAgICByZXR1cm4gY2hl Y2tfZGVidWdfbWFjcm9zKA0KPiA+PiArICAgICAgICAgICAgICAgIGdldF9kZWJ1Z19tYWNyb3Mo c3JjX3N0ciksIGZpbGVfZGJnX3BhdGgsDQo+ICoqbWFjcm9fc3VicykNCj4gPj4gKw0KPiA+PiAr DQo+ID4+ICtkZWYgY2hlY2tfbWFjcm9zX2luX2ZpbGUoZmlsZTogUHVyZVBhdGgsDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9kYmdfcGF0aDogc3RyLA0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgIHNob3dfdXRmOF9kZWNvZGVfd2FybmluZzogYm9vbCA9IEZhbHNl LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICoqbWFjcm9fc3Viczogc3RyKSAtPiBU dXBsZVtpbnQsIGludCwgaW50XToNCj4gPj4gKyAgICAiIiJDaGVja3MgZm9yIGRlYnVnIG1hY3Jv IGZvcm1hdHRpbmcgZXJyb3JzIGluIGEgZmlsZS4NCj4gPj4gKw0KPiA+PiArICAgIEFyZ3M6DQo+ ID4+ICsgICAgICAgIGZpbGUgKFB1cmVQYXRoKTogVGhlIGZpbGUgcGF0aCB0byBjaGVjay4NCj4g Pj4gKw0KPiA+PiArICAgICAgICBmaWxlX2RiZ19wYXRoIChzdHIpOiBUaGUgZmlsZSBwYXRoIChv ciBvdGhlciBjdXN0b20gc3RyaW5nKQ0KPiB0bw0KPiA+PiBkaXNwbGF5DQo+ID4+ICsgICAgICAg IGluIGRlYnVnIG1lc3NhZ2VzLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIHNob3dfdXRmOF9kZWNv ZGVfd2FybmluZyAoYm9vbCwgb3B0aW9uYWwpOiBJbmRpY2F0ZXMgd2hldGhlcg0KPiB0bw0KPiA+ PiBzaG93DQo+ID4+ICsgICAgICAgIHdhcm5pbmdzIGlmIFVURi04IGZpbGVzIGZhaWwgdG8gZGVj b2RlLiBEZWZhdWx0cyB0byBGYWxzZS4NCj4gPj4gKw0KPiA+PiArICAgICAgICBtYWNyb19zdWJz IChEaWN0W3N0cixzdHJdKTogVmFyaWFibGUtbGVuZ3RoIGtleXdvcmQgYW5kDQo+ID4+IHJlcGxh Y2VtZW50DQo+ID4+ICsgICAgICAgIHZhbHVlIHN0cmluZyBwYWlycyB0byBzdWJzdGl0dXRlIGR1 cmluZyBkZWJ1ZyBtYWNybyBjaGVja3MuDQo+ID4+ICsNCj4gPj4gKyAgICBSZXR1cm5zOg0KPiA+ PiArICAgICAgICBUdXBsZVtpbnQsIGludCwgaW50XTogQSB0dXBsZSBvZiB0aGUgbnVtYmVyIG9m IGZvcm1hdHRpbmcNCj4gPj4gZXJyb3JzLA0KPiA+PiArICAgICAgICBudW1iZXIgb2YgcHJpbnQg c3BlY2lmaWVycywgYW5kIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHRoZQ0KPiA+PiBtYWNyb3MN Cj4gPj4gKyAgICAgICAgaW4gdGhlIGZpbGUgZ2l2ZW4uDQo+ID4+ICsgICAgIiIiDQo+ID4+ICsg ICAgdHJ5Og0KPiA+PiArICAgICAgICByZXR1cm4gY2hlY2tfbWFjcm9zX2luX3N0cmluZygNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgZmlsZS5yZWFkX3RleHQoZW5jb2Rpbmc9J3V0Zi04Jyks IGZpbGVfZGJnX3BhdGgsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICoqbWFjcm9fc3VicykN Cj4gPj4gKyAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6DQo+ID4+ICsgICAgICAg IGlmIHNob3dfdXRmOF9kZWNvZGVfd2FybmluZzoNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcu d2FybmluZygNCj4gPj4gKyAgICAgICAgICAgICAgICBmIntmaWxlX2RiZ19wYXRofSBVVEYtOCBk ZWNvZGUgZXJyb3IuXG4iDQo+ID4+ICsgICAgICAgICAgICAgICAgIiAgICAgICAgIERlYnVnIG1h Y3JvIGNvZGUgY2hlY2sgc2tpcHBlZCFcbiINCj4gPj4gKyAgICAgICAgICAgICAgICBmIiAgICAg ICAgIC0+IHtzdHIoZSl9IikNCj4gPj4gKyAgICByZXR1cm4gMCwgMCwgMA0KPiA+PiArDQo+ID4+ ICsNCj4gPj4gK2RlZiBjaGVja19tYWNyb3NfaW5fZGlyZWN0b3J5KGRpcmVjdG9yeTogUHVyZVBh dGgsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX2V4dGVuc2lvbnM6 IEl0ZXJhYmxlW3N0cl0gPQ0KPiAoJy5jJywpLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWdub3JlX2dpdF9pZ25vcmVfZmlsZXM6IE9wdGlvbmFsW2Jvb2xdDQo+ID0NCj4g Pj4gVHJ1ZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9naXRf c3VibW9kdWxlczogT3B0aW9uYWxbYm9vbF0gPQ0KPiA+PiBUcnVlLA0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2hvd19wcm9ncmVzc19iYXI6IE9wdGlvbmFsW2Jvb2xdID0N Cj4gVHJ1ZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdXRmOF9k ZWNvZGVfd2FybmluZzogYm9vbCA9IEZhbHNlLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKiptYWNyb19zdWJzOiBzdHINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkgLT4gaW50Og0KPiA+PiArICAgICIiIkNoZWNrcyBmaWxlcyB3aXRoIHRoZSBnaXZl biBleHRlbnNpb24gaW4gdGhlIGdpdmVuIGRpcmVjdG9yeQ0KPiBmb3INCj4gPj4gZGVidWcNCj4g Pj4gKyAgICAgICBtYWNybyBmb3JtYXR0aW5nIGVycm9ycy4NCj4gPj4gKw0KPiA+PiArICAgIEFy Z3M6DQo+ID4+ICsgICAgICAgIGRpcmVjdG9yeSAoUHVyZVBhdGgpOiBUaGUgcGF0aCB0byB0aGUg ZGlyZWN0b3J5IHRvIGNoZWNrLg0KPiA+PiArICAgICAgICBmaWxlX2V4dGVuc2lvbnMgKEl0ZXJh YmxlW3N0cl0sIG9wdGlvbmFsKTogQW4gaXRlcmFibGUgb2YNCj4gPj4gc3RyaW5ncw0KPiA+PiAr ICAgICAgICByZXByZXNlbnRpbmcgZmlsZSBleHRlbnNpb25zIHRvIGNoZWNrLiBEZWZhdWx0cyB0 byAoJy5jJywpLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIGlnbm9yZV9naXRfaWdub3JlX2ZpbGVz IChPcHRpb25hbFtib29sXSwgb3B0aW9uYWwpOiBJbmRpY2F0ZXMNCj4gPj4gd2hldGhlcg0KPiA+ PiArICAgICAgICBmaWxlcyBpZ25vcmVkIGJ5IGdpdCBzaG91bGQgYmUgaWdub3JlZCBmb3IgdGhl IGRlYnVnIG1hY3JvDQo+ID4+IGNoZWNrLg0KPiA+PiArICAgICAgICBEZWZhdWx0cyB0byBUcnVl Lg0KPiA+PiArDQo+ID4+ICsgICAgICAgIGlnbm9yZV9naXRfc3VibW9kdWxlcyAoT3B0aW9uYWxb Ym9vbF0sIG9wdGlvbmFsKTogSW5kaWNhdGVzDQo+ID4+IHdoZXRoZXINCj4gPj4gKyAgICAgICAg ZmlsZXMgbG9jYXRlZCBpbiBnaXQgc3VibW9kdWxlcyBzaG91bGQgbm90IGJlIGNoZWNrZWQuDQo+ IERlZmF1bHRzDQo+ID4+IHRvDQo+ID4+ICsgICAgICAgIFRydWUuDQo+ID4+ICsNCj4gPj4gKyAg ICAgICAgc2hvd19wcm9ncmVzc19iYXIgKE9wdGlvbmFsW2Jvb2xdLCBvcHRpb25hbCk6IEluZGlj YXRlcw0KPiB3aGV0aGVyDQo+ID4+IHRvDQo+ID4+ICsgICAgICAgIHNob3cgYSBwcm9ncmVzcyBi YXIgdG8gc2hvdyBwcm9ncmVzcyBzdGF0dXMgd2hpbGUgY2hlY2tpbmcNCj4gPj4gbWFjcm9zLg0K PiA+PiArICAgICAgICBUaGlzIGlzIG1vcmUgdXNlZnVsIG9uIGEgdmVyeSBsYXJnZSBkaXJlY3Rv cmllcy4gRGVmYXVsdHMgdG8NCj4gPj4gVHJ1ZS4NCj4gPj4gKw0KPiA+PiArICAgICAgICBzaG93 X3V0ZjhfZGVjb2RlX3dhcm5pbmcgKGJvb2wsIG9wdGlvbmFsKTogSW5kaWNhdGVzIHdoZXRoZXIN Cj4gdG8NCj4gPj4gc2hvdw0KPiA+PiArICAgICAgICB3YXJuaW5ncyBpZiBVVEYtOCBmaWxlcyBm YWlsIHRvIGRlY29kZS4gRGVmYXVsdHMgdG8gRmFsc2UuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAg bWFjcm9fc3VicyAoRGljdFtzdHIsc3RyXSk6IFZhcmlhYmxlLWxlbmd0aCBrZXl3b3JkIGFuZA0K PiA+PiByZXBsYWNlbWVudA0KPiA+PiArICAgICAgICB2YWx1ZSBzdHJpbmcgcGFpcnMgdG8gc3Vi c3RpdHV0ZSBkdXJpbmcgZGVidWcgbWFjcm8gY2hlY2tzLg0KPiA+PiArDQo+ID4+ICsgICAgUmV0 dXJuczoNCj4gPj4gKyAgICAgICAgaW50OiBDb3VudCBvZiBkZWJ1ZyBtYWNybyBlcnJvcnMgaW4g dGhlIGRpcmVjdG9yeS4NCj4gPj4gKyAgICAiIiINCj4gPj4gKyAgICBkZWYgX2dldF9maWxlX2xp c3Qocm9vdF9kaXJlY3Rvcnk6IFB1cmVQYXRoLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICBleHRlbnNpb25zOiBJdGVyYWJsZVtzdHJdKSAtPiBMaXN0W1BhdGhdOg0KPiA+PiArICAgICAg ICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBmaWxlcyByZWN1cnNpdmVseSBsb2NhdGVkIHdpdGhpbiB0 aGUNCj4gcGF0aC4NCj4gPj4gKw0KPiA+PiArICAgICAgICBBcmdzOg0KPiA+PiArICAgICAgICAg ICAgcm9vdF9kaXJlY3RvcnkgKFB1cmVQYXRoKTogQSBkaXJlY3RvcnkgUGF0aCBvYmplY3QgdG8g dGhlDQo+ID4+IHJvb3QNCj4gPj4gKyAgICAgICAgICAgIGZvbGRlci4NCj4gPj4gKw0KPiA+PiAr ICAgICAgICAgICAgZXh0ZW5zaW9ucyAoSXRlcmFibGVbc3RyXSk6IEFuIGl0ZXJhYmxlIG9mIHN0 cmluZ3MgdGhhdA0KPiA+PiArICAgICAgICAgICAgcmVwcmVzZW50IGZpbGUgZXh0ZW5zaW9ucyB0 byByZWN1cnNpdmVseSBzZWFyY2ggZm9yDQo+IHdpdGhpbg0KPiA+PiArICAgICAgICAgICAgcm9v dF9kaXJlY3RvcnkuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgUmV0dXJuczoNCj4gPj4gKyAgICAg ICAgICAgIExpc3RbUGF0aF06IExpc3Qgb2YgZmlsZSBQYXRoIG9iamVjdHMgdG8gZmlsZXMgZm91 bmQgaW4NCj4gdGhlDQo+ID4+ICsgICAgICAgICAgICBnaXZlbiBkaXJlY3Rvcnkgd2l0aCB0aGUg Z2l2ZW4gZXh0ZW5zaW9ucy4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIGRlZiBf c2hvd19maWxlX2Rpc2NvdmVyZWRfbWVzc2FnZShmaWxlX2NvdW50OiBpbnQsDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkX3RpbWU6IGZsb2F0 KSAtPg0KPiBOb25lOg0KPiA+PiArICAgICAgICAgICAgcHJpbnQoZiJcckRpc2NvdmVyZWQge2Zp bGVfY291bnQ6LH0gZmlsZXMgaW4iLA0KPiA+PiArICAgICAgICAgICAgICAgICAgZiJ7Y3VycmVu dF9zdGFydF9kZWx0YTotLjBmfXMiDQo+ID4+ICsgICAgICAgICAgICAgICAgICBmInsnLicgKiBt aW4oaW50KGN1cnJlbnRfc3RhcnRfZGVsdGEpLCA0MCl9IiwNCj4gPj4gZW5kPSJcciIpDQo+ID4+ ICsNCj4gPj4gKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWVpdC5kZWZhdWx0X3RpbWVyKCkNCj4g Pj4gKyAgICAgICAgcHJldmlvdXNfaW5kaWNhdG9yX3RpbWUgPSBzdGFydF90aW1lDQo+ID4+ICsN Cj4gPj4gKyAgICAgICAgZmlsZXMgPSBbXQ0KPiA+PiArICAgICAgICBmb3IgZmlsZSBpbiByb290 X2RpcmVjdG9yeS5yZ2xvYignKicpOg0KPiA+PiArICAgICAgICAgICAgaWYgZmlsZS5zdWZmaXgg aW4gZXh0ZW5zaW9uczoNCj4gPj4gKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoUGF0aChm aWxlKSkNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgIyBHaXZlIGFuIGluZGljYXRvciBwcm9n cmVzcyBpcyBiZWluZyBtYWRlDQo+ID4+ICsgICAgICAgICAgICAjIFRoaXMgaGFzIGEgbmVnbGln aWJsZSBpbXBhY3Qgb24gb3ZlcmFsbCBwZXJmb3JtYW5jZQ0KPiA+PiArICAgICAgICAgICAgIyB3 aXRoIHByaW50IGVtaXNzaW9uIGxpbWl0ZWQgdG8gaGFsZiBzZWNvbmQgaW50ZXJ2YWxzLg0KPiA+ PiArICAgICAgICAgICAgY3VycmVudF90aW1lID0gdGltZWl0LmRlZmF1bHRfdGltZXIoKQ0KPiA+ PiArICAgICAgICAgICAgY3VycmVudF9zdGFydF9kZWx0YSA9IGN1cnJlbnRfdGltZSAtIHN0YXJ0 X3RpbWUNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgaWYgY3VycmVudF90aW1lIC0gcHJldmlv dXNfaW5kaWNhdG9yX3RpbWUgPj0gMC41Og0KPiA+PiArICAgICAgICAgICAgICAgICMgU2luY2Ug dGhpcyByZXdyaXRlcyB0aGUgbGluZSwgaXQgY2FuIGJlIGNvbnNpZGVyZWQNCj4gYQ0KPiA+PiBm b3JtDQo+ID4+ICsgICAgICAgICAgICAgICAgIyBvZiBwcm9ncmVzcyBiYXINCj4gPj4gKyAgICAg ICAgICAgICAgICBpZiBzaG93X3Byb2dyZXNzX2JhcjoNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgX3Nob3dfZmlsZV9kaXNjb3ZlcmVkX21lc3NhZ2UobGVuKGZpbGVzKSwNCj4gPj4gKw0KPiBj dXJyZW50X3N0YXJ0X2RlbHRhKQ0KPiA+PiArICAgICAgICAgICAgICAgIHByZXZpb3VzX2luZGlj YXRvcl90aW1lID0gY3VycmVudF90aW1lDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgaWYgc2hvd19w cm9ncmVzc19iYXI6DQo+ID4+ICsgICAgICAgICAgICBfc2hvd19maWxlX2Rpc2NvdmVyZWRfbWVz c2FnZShsZW4oZmlsZXMpLA0KPiA+PiBjdXJyZW50X3N0YXJ0X2RlbHRhKQ0KPiA+PiArICAgICAg ICAgICAgcHJpbnQoKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIHJldHVybiBmaWxlcw0KPiA+PiAr DQo+ID4+ICsgICAgbG9nZ2luZy5pbmZvKGYiQ2hlY2tpbmcgRGVidWcgTWFjcm9zIGluIGRpcmVj dG9yeTogIg0KPiA+PiArICAgICAgICAgICAgICAgICBmIntkaXJlY3RvcnkucmVzb2x2ZSgpfVxu IikNCj4gPj4gKw0KPiA+PiArICAgIGxvZ2dpbmcuaW5mbygiR2F0aGVyaW5nIHRoZSBvdmVyYWxs IGZpbGUgbGlzdC4gVGhpcyBtaWdodCB0YWtlIGEiDQo+ID4+ICsgICAgICAgICAgICAgICAgICJ3 aGlsZS5cbiIpDQo+ID4+ICsNCj4gPj4gKyAgICBzdGFydF90aW1lID0gdGltZWl0LmRlZmF1bHRf dGltZXIoKQ0KPiA+PiArICAgIGZpbGVfbGlzdCA9IHNldChfZ2V0X2ZpbGVfbGlzdChkaXJlY3Rv cnksIGZpbGVfZXh0ZW5zaW9ucykpDQo+ID4+ICsgICAgZW5kX3RpbWUgPSB0aW1laXQuZGVmYXVs dF90aW1lcigpIC0gc3RhcnRfdGltZQ0KPiA+PiArDQo+ID4+ICsgICAgbG9nZ2luZy5kZWJ1Zyhm IltQRVJGXSBGaWxlIHNlYXJjaCBmb3VuZCB7bGVuKGZpbGVfbGlzdCk6LH0gZmlsZXMNCj4gaW4N Cj4gPj4gIg0KPiA+PiArICAgICAgICAgICAgICAgICAgZiJ7ZW5kX3RpbWU6LjJmfSBzZWNvbmRz LiIpDQo+ID4+ICsNCj4gPj4gKyAgICBpZiBpZ25vcmVfZ2l0X2lnbm9yZV9maWxlczoNCj4gPj4g KyAgICAgICAgbG9nZ2luZy5pbmZvKCJHZXR0aW5nIGdpdCBpZ25vcmUgZmlsZXMuLi4iKQ0KPiA+ PiArICAgICAgICBzdGFydF90aW1lID0gdGltZWl0LmRlZmF1bHRfdGltZXIoKQ0KPiA+PiArICAg ICAgICBpZ25vcmVkX2ZpbGVfcGF0aHMgPQ0KPiBHaXRIZWxwZXJzLmdldF9naXRfaWdub3JlZF9w YXRocyhkaXJlY3RvcnkpDQo+ID4+ICsgICAgICAgIGVuZF90aW1lID0gdGltZWl0LmRlZmF1bHRf dGltZXIoKSAtIHN0YXJ0X3RpbWUNCj4gPj4gKw0KPiA+PiArICAgICAgICBsb2dnaW5nLmRlYnVn KGYiW1BFUkZdIEZpbGUgaWdub3JlIGdhdGhlcmluZyB0b29rDQo+IHtlbmRfdGltZTouMmZ9DQo+ ID4+ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBmInNlY29uZHMuIikNCj4gPj4gKw0K PiA+PiArICAgICAgICBsb2dnaW5nLmluZm8oIklnbm9yaW5nIGdpdCBpZ25vcmUgZmlsZXMuLi4i KQ0KPiA+PiArICAgICAgICBsb2dnaW5nLmRlYnVnKGYiRmlsZSBsaXN0IGNvdW50IGJlZm9yZSBn aXQgaWdub3JlDQo+ID4+IHtsZW4oZmlsZV9saXN0KTosfSIpDQo+ID4+ICsgICAgICAgIHN0YXJ0 X3RpbWUgPSB0aW1laXQuZGVmYXVsdF90aW1lcigpDQo+ID4+ICsgICAgICAgIGZpbGVfbGlzdCA9 IGZpbGVfbGlzdC5kaWZmZXJlbmNlKGlnbm9yZWRfZmlsZV9wYXRocykNCj4gPj4gKyAgICAgICAg ZW5kX3RpbWUgPSB0aW1laXQuZGVmYXVsdF90aW1lcigpIC0gc3RhcnRfdGltZQ0KPiA+PiArICAg ICAgICBsb2dnaW5nLmluZm8oZiIgIHtsZW4oaWdub3JlZF9maWxlX3BhdGhzKTosfSBmaWxlcyBh cmUNCj4gaWdub3JlZA0KPiA+PiBieSBnaXQiKQ0KPiA+PiArICAgICAgICBsb2dnaW5nLmluZm8o ZiIgIHtsZW4oZmlsZV9saXN0KTosfSBmaWxlcyBhZnRlciByZW1vdmluZyAiDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICBmImlnbm9yZWQgZmlsZXMiKQ0KPiA+PiArDQo+ID4+ICsgICAgICAg IGxvZ2dpbmcuZGVidWcoZiJbUEVSRl0gRmlsZSBpZ25vcmUgY2FsY3VsYXRpb24gdG9vaw0KPiA+ PiB7ZW5kX3RpbWU6LjJmfSAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgZiJzZWNvbmRz LiIpDQo+ID4+ICsNCj4gPj4gKyAgICBpZiBpZ25vcmVfZ2l0X3N1Ym1vZHVsZXM6DQo+ID4+ICsg ICAgICAgIGxvZ2dpbmcuaW5mbygiSWdub3JpbmcgZ2l0IHN1Ym1vZHVsZXMuLi4iKQ0KPiA+PiAr ICAgICAgICBzdWJtb2R1bGVfcGF0aHMgPQ0KPiBHaXRIZWxwZXJzLmdldF9naXRfc3VibW9kdWxl X3BhdGhzKGRpcmVjdG9yeSkNCj4gPj4gKyAgICAgICAgaWYgc3VibW9kdWxlX3BhdGhzOg0KPiA+ PiArICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZyhmIkZpbGUgbGlzdCBjb3VudCBiZWZvcmUgZ2l0 IHN1Ym1vZHVsZQ0KPiA+PiBleGNsdXNpb24gIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICBmIntsZW4oZmlsZV9saXN0KTosfSIpDQo+ID4+ICsgICAgICAgICAgICBzdGFydF90aW1l ID0gdGltZWl0LmRlZmF1bHRfdGltZXIoKQ0KPiA+PiArICAgICAgICAgICAgZmlsZV9saXN0ID0g W2YgZm9yIGYgaW4gZmlsZV9saXN0DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgaWYg bm90IGYuaXNfcmVsYXRpdmVfdG8oKnN1Ym1vZHVsZV9wYXRocyldDQo+ID4+ICsgICAgICAgICAg ICBlbmRfdGltZSA9IHRpbWVpdC5kZWZhdWx0X3RpbWVyKCkgLSBzdGFydF90aW1lDQo+ID4+ICsN Cj4gPj4gKyAgICAgICAgICAgIGZvciBwYXRoIGluIGVudW1lcmF0ZShzdWJtb2R1bGVfcGF0aHMp Og0KPiA+PiArICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoIiAgezB9LiB7MX0iLmZvcm1h dCgqcGF0aCkpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbyhmIiAge2xl bihzdWJtb2R1bGVfcGF0aHMpOix9IHN1Ym1vZHVsZXMNCj4gZm91bmQiKQ0KPiA+PiArICAgICAg ICAgICAgbG9nZ2luZy5pbmZvKGYiICB7bGVuKGZpbGVfbGlzdCk6LH0gZmlsZXMgd2lsbCBiZQ0K PiBleGFtaW5lZA0KPiA+PiBhZnRlciAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ZiJleGNsdWRpbmcgZmlsZXMgaW4gc3VibW9kdWxlcyIpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAg ICAgIGxvZ2dpbmcuZGVidWcoZiJbUEVSRl0gU3VibW9kdWxlIGV4Y2x1c2lvbiBjYWxjdWxhdGlv bg0KPiB0b29rDQo+ID4+ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7ZW5k X3RpbWU6LjJmfSBzZWNvbmRzLiIpDQo+ID4+ICsgICAgICAgIGVsc2U6DQo+ID4+ICsgICAgICAg ICAgICBsb2dnaW5nLndhcm5pbmcoIk5vIHN1Ym1vZHVsZXMgZm91bmQiKQ0KPiA+PiArDQo+ID4+ ICsgICAgbG9nZ2luZy5pbmZvKGYiXG5TdGFydGluZyBtYWNybyBjaGVjayBvbiB7bGVuKGZpbGVf bGlzdCk6LH0NCj4gZmlsZXMuIikNCj4gPj4gKw0KPiA+PiArICAgIGNhY2hlX3Byb2dyZXNzX2Zp bHRlciA9IENhY2hlRHVyaW5nUHJvZ3Jlc3NGaWx0ZXIoKQ0KPiA+PiArICAgIGhhbmRsZXIgPSBu ZXh0KChoIGZvciBoIGluIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuaGFuZGxlcnMgaWYNCj4gPj4gaC5n ZXRfbmFtZSgpID09DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgJ3N0ZG91dF9sb2dnZXJfaGFu ZGxlcicpLCBOb25lKQ0KPiA+PiArDQo+ID4+ICsgICAgaWYgaGFuZGxlciBpcyBub3QgTm9uZToN Cj4gPj4gKyAgICAgICAgaGFuZGxlci5hZGRGaWx0ZXIoY2FjaGVfcHJvZ3Jlc3NfZmlsdGVyKQ0K PiA+PiArDQo+ID4+ICsgICAgc3RhcnRfdGltZSA9IHRpbWVpdC5kZWZhdWx0X3RpbWVyKCkNCj4g Pj4gKw0KPiA+PiArICAgIGZhaWx1cmVfY250LCBmaWxlX2NudCA9IDAsIDANCj4gPj4gKyAgICBm b3IgZmlsZV9jbnQsIGZpbGUgaW4gZW51bWVyYXRlKGZpbGVfbGlzdCk6DQo+ID4+ICsgICAgICAg IGZpbGVfcmVsX3BhdGggPSBzdHIoZmlsZS5yZWxhdGl2ZV90byhkaXJlY3RvcnkpKQ0KPiA+PiAr ICAgICAgICBmYWlsdXJlX2NudCArPSBjaGVja19tYWNyb3NfaW5fZmlsZSgNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCBmaWxlX3JlbF9wYXRoLA0KPiA+PiBzaG93X3V0 ZjhfZGVjb2RlX3dhcm5pbmcsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipt YWNyb19zdWJzKVswXQ0KPiA+PiArICAgICAgICBpZiBzaG93X3Byb2dyZXNzX2JhcjoNCj4gPj4g KyAgICAgICAgICAgIF9zaG93X3Byb2dyZXNzKGZpbGVfY250LCBsZW4oZmlsZV9saXN0KSwNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiIHtmYWlsdXJlX2NudH0gZXJyb3JzIiBp ZiBmYWlsdXJlX2NudCA+DQo+IDANCj4gPj4gZWxzZSAiIikNCj4gPj4gKw0KPiA+PiArICAgIGlm IHNob3dfcHJvZ3Jlc3NfYmFyOg0KPiA+PiArICAgICAgICBfc2hvd19wcm9ncmVzcyhsZW4oZmls ZV9saXN0KSwgbGVuKGZpbGVfbGlzdCksDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYi IHtmYWlsdXJlX2NudH0gZXJyb3JzIiBpZiBmYWlsdXJlX2NudCA+IDANCj4gZWxzZQ0KPiA+PiAi IikNCj4gPj4gKyAgICAgICAgcHJpbnQoIlxuIiwgZmx1c2g9VHJ1ZSkNCj4gPj4gKw0KPiA+PiAr ICAgIGVuZF90aW1lID0gdGltZWl0LmRlZmF1bHRfdGltZXIoKSAtIHN0YXJ0X3RpbWUNCj4gPj4g Kw0KPiA+PiArICAgIGlmIGhhbmRsZXIgaXMgbm90IE5vbmU6DQo+ID4+ICsgICAgICAgIGhhbmRs ZXIucmVtb3ZlRmlsdGVyKGNhY2hlX3Byb2dyZXNzX2ZpbHRlcikNCj4gPj4gKw0KPiA+PiArICAg ICAgICBmb3IgcmVjb3JkIGluIGNhY2hlX3Byb2dyZXNzX2ZpbHRlci5tZXNzYWdlX2NhY2hlOg0K PiA+PiArICAgICAgICAgICAgaGFuZGxlci5lbWl0KHJlY29yZCkNCj4gPj4gKw0KPiA+PiArICAg IGxvZ2dpbmcuZGVidWcoZiJbUEVSRl0gVGhlIG1hY3JvIGNoZWNrIG9wZXJhdGlvbiB0b29rDQo+ IHtlbmRfdGltZTouMmZ9DQo+ID4+ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgIGYic2Vjb25k cy4iKQ0KPiA+PiArDQo+ID4+ICsgICAgX2xvZ19mYWlsdXJlX2NvdW50KGZhaWx1cmVfY250LCBm aWxlX2NudCkNCj4gPj4gKw0KPiA+PiArICAgIHJldHVybiBmYWlsdXJlX2NudA0KPiA+PiArDQo+ ID4+ICsNCj4gPj4gK2RlZiBfbG9nX2ZhaWx1cmVfY291bnQoZmFpbHVyZV9jb3VudDogaW50LCBm aWxlX2NvdW50OiBpbnQpIC0+IE5vbmU6DQo+ID4+ICsgICAgIiIiTG9ncyB0aGUgZmFpbHVyZSBj b3VudC4NCj4gPj4gKw0KPiA+PiArICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgIGZhaWx1cmVfY291 bnQgKGludCk6IENvdW50IG9mIGZhaWx1cmVzIHRvIGxvZy4NCj4gPj4gKw0KPiA+PiArICAgICAg ICBmaWxlX2NvdW50IChpbnQpOiBDb3VudCBvZiBmaWxlcyB3aXRoIGZhaWx1cmVzLg0KPiA+PiAr ICAgICIiIg0KPiA+PiArICAgIGlmIGZhaWx1cmVfY291bnQgPiAwOg0KPiA+PiArICAgICAgICBs b2dnaW5nLmVycm9yKCJcbiIpDQo+ID4+ICsgICAgICAgIGxvZ2dpbmcuZXJyb3IoZiJ7ZmFpbHVy ZV9jb3VudDosfSBkZWJ1ZyBtYWNybyBlcnJvcnMgaW4gIg0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgIGYie2ZpbGVfY291bnQ6LH0gZmlsZXMiKQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2Rl ZiBfc2hvd19wcm9ncmVzcyhzdGVwOiBpbnQsIHRvdGFsOiBpbnQsIHN1ZmZpeDogc3RyID0gJycp IC0+IE5vbmU6DQo+ID4+ICsgICAgIiIiUHJpbnQgcHJvZ3Jlc3Mgb2YgdGljayB0byB0b3RhbC4N Cj4gPj4gKw0KPiA+PiArICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgIHN0ZXAgKGludCk6IFRoZSBj dXJyZW50IHN0ZXAgY291bnQuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgdG90YWwgKGludCk6IFRo ZSB0b3RhbCBzdGVwIGNvdW50Lg0KPiA+PiArDQo+ID4+ICsgICAgICAgIHN1ZmZpeCAoc3RyKTog U3RyaW5nIHRvIHByaW50IGF0IHRoZSBlbmQgb2YgdGhlIHByb2dyZXNzIGJhci4NCj4gPj4gKyAg ICAiIiINCj4gPj4gKyAgICBnbG9iYWwgX3Byb2dyZXNzX3N0YXJ0X3RpbWUNCj4gPj4gKw0KPiA+ PiArICAgIGlmIHN0ZXAgPT0gMDoNCj4gPj4gKyAgICAgICAgX3Byb2dyZXNzX3N0YXJ0X3RpbWUg PSB0aW1laXQuZGVmYXVsdF90aW1lcigpDQo+ID4+ICsNCj4gPj4gKyAgICB0ZXJtaW5hbF9jb2wg PSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKS5jb2x1bW5zDQo+ID4+ICsgICAgdmFyX2NvbnN1 bWVfbGVuID0gKGxlbigiUHJvZ3Jlc3N8XHUyNTg4fCAwMDAuMCUgQ29tcGxldGUgMDAwcyIpICsN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGVuKHN1ZmZpeCkpDQo+ID4+ICsgICAgYXZh aWxfbGVuID0gdGVybWluYWxfY29sIC0gdmFyX2NvbnN1bWVfbGVuDQo+ID4+ICsNCj4gPj4gKyAg ICBwZXJjZW50ID0gZiJ7MTAwICogKHN0ZXAgLyBmbG9hdCh0b3RhbCkpOjMuMWZ9Ig0KPiA+PiAr ICAgIGZpbGxlZCA9IGludChhdmFpbF9sZW4gKiBzdGVwIC8vIHRvdGFsKQ0KPiA+PiArICAgIGJh ciA9ICdcdTI1ODgnICogZmlsbGVkICsgJy0nICogKGF2YWlsX2xlbiAtIGZpbGxlZCkNCj4gPj4g KyAgICBzdGVwX3RpbWUgPSB0aW1laXQuZGVmYXVsdF90aW1lcigpIC0gX3Byb2dyZXNzX3N0YXJ0 X3RpbWUNCj4gPj4gKw0KPiA+PiArICAgIHByaW50KGYnXHJQcm9ncmVzc3x7YmFyfXwge3BlcmNl bnR9JSBDb21wbGV0ZSB7c3RlcF90aW1lOi0zLjBmfXMnDQo+ID4+ICsgICAgICAgICAgZid7c3Vm Zml4fScsIGVuZD0nXHInKQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2RlZiBfbW9kdWxlX2ludm9j YXRpb25fY2hlY2tfbWFjcm9zX2luX2RpcmVjdG9yeV93cmFwcGVyKCkgLT4gaW50Og0KPiA+PiAr ICAgICIiIlByb3ZpZGVzIGFuIGNvbW1hbmQtbGluZSBhcmd1bWVudCB3cmFwcGVyIGZvciBjaGVj a2luZyBkZWJ1Zw0KPiA+PiBtYWNyb3MuDQo+ID4+ICsNCj4gPj4gKyAgICBSZXR1cm5zOg0KPiA+ PiArICAgICAgICBpbnQ6IFRoZSBzeXN0ZW0gZXhpdCBjb2RlIHZhbHVlLg0KPiA+PiArICAgICIi Ig0KPiA+PiArICAgIGltcG9ydCBhcmdwYXJzZQ0KPiA+PiArICAgIGltcG9ydCBidWlsdGlucw0K PiA+PiArDQo+ID4+ICsgICAgZGVmIF9jaGVja19kaXJfcGF0aChkaXJfcGF0aDogc3RyKSAtPiBi b29sOg0KPiA+PiArICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIGlmIHRoZSBw YXRoIGlzIGEgZGlyZWN0b3J5LiINCj4gPj4gKw0KPiA+PiArICAgICAgICBBcmdzOg0KPiA+PiAr ICAgICAgICAgICAgZGlyX3BhdGggKHN0cik6IEEgZGlyZWN0b3J5IGZpbGUgc3lzdGVtIHBhdGgu DQo+ID4+ICsNCj4gPj4gKyAgICAgICAgUmFpc2VzOg0KPiA+PiArICAgICAgICAgICAgTm90QURp cmVjdG9yeUVycm9yOiBUaGUgZGlyZWN0b3J5IHBhdGggZ2l2ZW4gaXMgbm90IGENCj4gPj4gZGly ZWN0b3J5Lg0KPiA+PiArDQo+ID4+ICsgICAgICAgIFJldHVybnM6DQo+ID4+ICsgICAgICAgICAg ICBib29sOiBUcnVlIGlmIHRoZSBwYXRoIGlzIGEgZGlyZWN0b3J5IGVsc2UgRmFsc2UuDQo+ID4+ ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBhYnNfZGlyX3BhdGggPSBvcy5wYXRoLmFic3Bh dGgoZGlyX3BhdGgpDQo+ID4+ICsgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlyX3BhdGgpOg0K PiA+PiArICAgICAgICAgICAgcmV0dXJuIGFic19kaXJfcGF0aA0KPiA+PiArICAgICAgICBlbHNl Og0KPiA+PiArICAgICAgICAgICAgcmFpc2UgTm90QURpcmVjdG9yeUVycm9yKGFic19kaXJfcGF0 aCkNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfY2hlY2tfZmlsZV9wYXRoKGZpbGVfcGF0aDogc3Ry KSAtPiBib29sOg0KPiA+PiArICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIGlm IHRoZSBwYXRoIGlzIGEgZmlsZS4iDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgQXJnczoNCj4gPj4g KyAgICAgICAgICAgIGZpbGVfcGF0aCAoc3RyKTogQSBmaWxlIHBhdGguDQo+ID4+ICsNCj4gPj4g KyAgICAgICAgUmFpc2VzOg0KPiA+PiArICAgICAgICAgICAgRmlsZUV4aXN0c0Vycm9yOiBUaGUg cGF0aCBpcyBub3QgYSB2YWxpZCBmaWxlLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIFJldHVybnM6 DQo+ID4+ICsgICAgICAgICAgICBib29sOiBUcnVlIGlmIHRoZSBwYXRoIGlzIGEgdmFsaWQgZmls ZSBlbHNlIEZhbHNlLg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgYWJzX2ZpbGVf cGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlX3BhdGgpDQo+ID4+ICsgICAgICAgIGlmIG9zLnBh dGguaXNmaWxlKGZpbGVfcGF0aCk6DQo+ID4+ICsgICAgICAgICAgICByZXR1cm4gYWJzX2ZpbGVf cGF0aA0KPiA+PiArICAgICAgICBlbHNlOg0KPiA+PiArICAgICAgICAgICAgcmFpc2UgRmlsZUV4 aXN0c0Vycm9yKGZpbGVfcGF0aCkNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfcXVpZXRfcHJpbnQo KmFyZ3MsICoqa3dhcmdzKToNCj4gPj4gKyAgICAgICAgIiIiUmVwbGFjZXMgcHJpbnQgd2hlbiBx dWlldCBpcyByZXF1ZXN0ZWQgdG8gcHJldmVudCBwcmludGluZw0KPiA+PiBtZXNzYWdlcy4NCj4g Pj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIHBhc3MNCj4gPj4gKw0KPiA+PiArICAgIHJv b3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQ0KPiA+PiArICAgIHJvb3RfbG9nZ2VyLnNl dExldmVsKGxvZ2dpbmcuREVCVUcpDQo+ID4+ICsNCj4gPj4gKyAgICBzdGRvdXRfbG9nZ2VyX2hh bmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkNCj4gPj4gKyAgICBzdGRv dXRfbG9nZ2VyX2hhbmRsZXIuc2V0X25hbWUoJ3N0ZG91dF9sb2dnZXJfaGFuZGxlcicpDQo+ID4+ ICsgICAgc3Rkb3V0X2xvZ2dlcl9oYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuSU5GTykNCj4gPj4g Kw0KPiBzdGRvdXRfbG9nZ2VyX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVy KCclKG1lc3NhZ2UpcycpKQ0KPiA+PiArICAgIHJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoc3Rkb3V0 X2xvZ2dlcl9oYW5kbGVyKQ0KPiA+PiArDQo+ID4+ICsgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn dW1lbnRQYXJzZXIoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBwcm9nPVBST0dSQU1f TkFNRSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSgNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tzIGZvciBkZWJ1ZyBtYWNybyBmb3Jt YXR0aW5nICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3JzIHdpdGhp biBmaWxlcyByZWN1cnNpdmVseSBsb2NhdGVkDQo+ID4+IHdpdGhpbiAiDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImEgZ2l2ZW4gZGlyZWN0b3J5LiIpLA0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPVJhd1RleHRIZWxwRm9ybWF0dGVyKQ0K PiA+PiArDQo+ID4+ICsgICAgaW9fcmVxX2dyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNs dXNpdmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkNCj4gPj4gKyAgICBpb19vcHRfZ3JvdXAgPSBwYXJz ZXIuYWRkX2FyZ3VtZW50X2dyb3VwKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJPcHRpb25hbCBpbnB1dCBhbmQgb3V0cHV0IikNCj4gPj4gKyAgICBnaXRfZ3JvdXAgPSBwYXJz ZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJPcHRpb25hbCBnaXQgY29udHJvbCIpDQo+ID4+ICsNCj4g Pj4gKyAgICBpb19yZXFfZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXdvcmtzcGFjZS1kaXJl Y3RvcnknLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1fY2hlY2tf ZGlyX3BhdGgsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXJl Y3Rvcnkgb2Ygc291cmNlIGZpbGVzIHRvDQo+ID4+IGNoZWNrLlxuXG4iKQ0KPiA+PiArDQo+ID4+ ICsgICAgaW9fcmVxX2dyb3VwLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbnB1dC1maWxlJywgbmFy Z3M9Jz8nLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1fY2hlY2tf ZmlsZV9wYXRoLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRmls ZSBwYXRoIGZvciBhbiBpbnB1dCBmaWxlIHRvDQo+ID4+IGNoZWNrLlxuXG4iDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3RlIHRoYXQgc29tZSBvdGhlciBvcHRp b25zIGRvDQo+IG5vdA0KPiA+PiBhcHBseSAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJpZiBhIHNpbmdsZSBmaWxlIGlzIHNwZWNpZmllZA0KPiBzdWNoDQo+ID4+ IGFzICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZVxuZ2l0 IG9wdGlvbnMgYW5kIGZpbGUNCj4gPj4gZXh0ZW5zaW9ucy5cblxuIikNCj4gPj4gKw0KPiA+PiAr ICAgIGlvX29wdF9ncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tbG9nLWZpbGUnLA0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFyZ3M9Jz8nLA0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLA0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Q9J2RlYnVnX21hY3JvX2NoZWNrLmxvZycsDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJGaWxlIHBhdGggZm9yIGxvZyBvdXRwdXQu XG4iDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoZGVmYXVsdDog aWYgdGhlIGZsYWcgaXMgZ2l2ZW4NCj4gd2l0aA0KPiA+PiBubyAiDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIHBhdGggdGhlbiBhIGZpbGUgY2FsbGVkXG4i DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Z19tYWNyb19j aGVjay5sb2cgaXMgY3JlYXRlZA0KPiBhbmQNCj4gPj4gdXNlZCAiDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkpXG5cbiIp DQo+ID4+ICsNCj4gPj4gKyAgICBpb19vcHRfZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXN1 YnN0aXR1dGlvbi1maWxlJywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9X2NoZWNrX2ZpbGVfcGF0aCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhlbHA9IkEgc3Vic3RpdHV0aW9uIFlBTUwgZmlsZQ0KPiBzcGVjaWZpZXMNCj4gPj4gc3RyaW5n ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0aXR1dGlv bnMgdG8gcGVyZm9ybSB3aXRoaW4NCj4gdGhlDQo+ID4+IGRlYnVnICINCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hY3JvLlxuXG5UaGlzIGlzIGludGVuZGVkIHRv IGJlDQo+IGENCj4gPj4gc2ltcGxlICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIm1lY2hhbmlzbSB0byBleHBhbmQgdGhlIHJhcmUNCj4gY2FzZXMNCj4gPj4gb2Yg cHJlLSINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb2Nlc3Nv clxubWFjcm9zIHdpdGhvdXQNCj4gZGlyZWN0bHkgIg0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiaW52b2x2aW5nIHRoZSBwcmUtcHJvY2Vzc29yLiBUaGUNCj4gPj4g ZmlsZSAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zaXN0 cyBvZiBvbmUgb3IgbW9yZVxuc3RyaW5nDQo+ID4+IHZhbHVlICINCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInBhaXJzIHdoZXJlIHRoZSBrZXkgaXMgdGhlDQo+ID4+ IGlkZW50aWZpZXIgdG8gIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicmVwbGFjZSBhbmQgdGhlIHZhbHVlIGlzIHRoZQ0KPiA+PiB2YWx1ZVxudG8gIg0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBpdCB3aXRoLlxuXG5U aGlzIGNhbiBhbHNvDQo+IGJlDQo+ID4+IHVzZWQgIg0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYXMgYSBtZXRob2QgdG8gaWdub3JlIHJlc3VsdHMgYnkNCj4gIg0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjaW5nIHRoZSBw cm9ibGVtYXRpYw0KPiA+PiBzdHJpbmdcbndpdGggYSAiDQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJkaWZmZXJlbnQgc3RyaW5nLlxuXG4iKQ0KPiA+PiArDQo+ID4+ ICsgICAgaW9fb3B0X2dyb3VwLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlLWxvZy1maWxl JywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nY291bnQnLA0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0wLA0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU2V0IGZpbGUgbG9nZ2luZyB2ZXJib3Np dHkNCj4gbGV2ZWwuXG4iDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgLSBOb25lOiAgICBJbmZvICYgPiBsZXZlbA0KPiA+PiBtZXNzYWdlc1xuIg0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0gJy12JzogICAgKyBEZWJ1ZyBsZXZl bA0KPiA+PiBtZXNzYWdlc1xuIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIC0gJy12dic6ICAgKyBGaWxlIG5hbWUgYW5kDQo+ID4+IGZ1bmN0aW9uXG4iDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLSAnLXZ2dic6ICArIExpbmUg bnVtYmVyXG4iDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLSAn LXZ2dnYnOiArIFRpbWVzdGFtcFxuIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiKGRlZmF1bHQ6IHZlcmJvc2UgbG9nZ2luZyBpcyBub3QNCj4gPj4gZW5hYmxlZCki DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcblxuIikNCj4gPj4g Kw0KPiA+PiArICAgIGlvX29wdF9ncm91cC5hZGRfYXJndW1lbnQoJy1uJywgJy0tbm8tcHJvZ3Jl c3MtYmFyJywNCj4gPj4gYWN0aW9uPSdzdG9yZV90cnVlJywNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhlbHA9IkRpc2FibGVzIHByb2dyZXNzIGJhcnMuXG4iDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoZGVmYXVsdDogcHJvZ3Jlc3MgYmFy cyBhcmUgdXNlZA0KPiBpbg0KPiA+PiBzb21lIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAicGxhY2VzIHRvIHNob3cgcHJvZ3Jlc3MpXG5cbiIpDQo+ID4+ICsNCj4g Pj4gKyAgICBpb19vcHRfZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9u PSdzdG9yZV90cnVlJywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9 IkRpc2FibGVzIGNvbnNvbGUgb3V0cHV0LlxuIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiKGRlZmF1bHQ6IGNvbnNvbGUgb3V0cHV0IGlzDQo+ID4+IGVuYWJsZWQp XG5cbiIpDQo+ID4+ICsNCj4gPj4gKyAgICBpb19vcHRfZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScs ICctLXV0Zjh3JywgYWN0aW9uPSdzdG9yZV90cnVlJywNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhlbHA9IlNob3dzIHdhcm5pbmdzIGZvciBmaWxlIFVURi04DQo+IGRlY29k ZQ0KPiA+PiAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJv cnMuXG4iDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoZGVmYXVs dDogVVRGLTggZGVjb2RlIGVycm9ycyBhcmUNCj4gPj4gbm90ICINCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInNob3duKVxuXG4iKQ0KPiA+PiArDQo+ID4+ICsgICAg Z2l0X2dyb3VwLmFkZF9hcmd1bWVudCgnLWRmJywgJy0tZG8tbm90LWlnbm9yZS1naXQtaWdub3Jl LWZpbGVzJywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVf dHJ1ZScsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEbyBub3QgaWdu b3JlIGdpdCBpZ25vcmVkIGZpbGVzLlxuIg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiKGRlZmF1bHQ6IGZpbGVzIGluIGdpdCBpZ25vcmUgZmlsZXMNCj4gYXJlDQo+ID4+ ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZWQpXG5cbiIp DQo+ID4+ICsNCj4gPj4gKyAgICBnaXRfZ3JvdXAuYWRkX2FyZ3VtZW50KCctZHMnLCAnLS1kby1u b3QtaWdub3JlLWdpdF9zdWJtb2R1bGVzJywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBoZWxwPSJEbyBub3QgaWdub3JlIGZpbGVzIGluIGdpdA0KPiA+PiBzdWJtb2R1bGVzLlxuIg0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKGRlZmF1bHQ6IGZpbGVzIGlu IGdpdCBzdWJtb2R1bGVzDQo+IGFyZSAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJpZ25vcmVkKVxuXG4iKQ0KPiA+PiArDQo+ID4+ICsgICAgcGFyc2VyLmFkZF9hcmd1 bWVudCgnLWUnLCAnLS1leHRlbnNpb25zJywgbmFyZ3M9JyonLA0KPiBkZWZhdWx0PVsnLmMnXSwN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ikxpc3Qgb2YgZmlsZSBleHRlbnNp b25zIHRvIGluY2x1ZGUuXG4iDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIo ZGVmYXVsdDogJShkZWZhdWx0KXMpIikNCj4gPj4gKw0KPiA+PiArICAgIGFyZ3MgPSBwYXJzZXIu cGFyc2VfYXJncygpDQo+ID4+ICsNCj4gPj4gKyAgICBpZiBhcmdzLnF1aWV0Og0KPiA+PiArICAg ICAgICAjIERvbid0IHByaW50IGluIHRoZSBmZXcgcGxhY2VzIHRoYXQgZGlyZWN0bHkgcHJpbnQN Cj4gPj4gKyAgICAgICAgYnVpbHRpbnMucHJpbnQgPSBfcXVpZXRfcHJpbnQNCj4gPj4gKyAgICBz dGRvdXRfbG9nZ2VyX2hhbmRsZXIuYWRkRmlsdGVyKFF1aWV0RmlsdGVyKGFyZ3MucXVpZXQpKQ0K PiA+PiArDQo+ID4+ICsgICAgaWYgYXJncy5sb2dfZmlsZToNCj4gPj4gKyAgICAgICAgZmlsZV9s b2dnZXJfaGFuZGxlciA9DQo+ID4+IGxvZ2dpbmcuRmlsZUhhbmRsZXIoZmlsZW5hbWU9YXJncy5s b2dfZmlsZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbW9kZT0ndycsDQo+ID4+IGVuY29kaW5nPSd1dGYtOCcpDQo+ID4+ICsNCj4gPj4g KyAgICAgICAgIyBJbiBhbiBpZGVhbCB3b3JsZCwgZXZlcnlvbmUgd291bGQgdXBkYXRlIHRvIHRo ZSBsYXRlc3QNCj4gUHl0aG9uDQo+ID4+ICsgICAgICAgICMgbWlub3IgdmVyc2lvbiAoMy4xMCkg YWZ0ZXIgYSBmZXcgd2Vla3MvbW9udGhzLiBTaW5jZSB0aGF0J3MNCj4gPj4gbm90IHRoZQ0KPiA+ PiArICAgICAgICAjIGNhc2UsIHJlc2lzdCBmcm9tIHVzaW5nIHN0cnVjdHVyYWwgcGF0dGVybiBt YXRjaGluZyBpbg0KPiBQeXRob24NCj4gPj4gMy4xMC4NCj4gPj4gKyAgICAgICAgIyBodHRwczov L3BlcHMucHl0aG9uLm9yZy9wZXAtMDYzNi8NCj4gPj4gKw0KPiA+PiArICAgICAgICBpZiBhcmdz LnZlcmJvc2VfbG9nX2ZpbGUgPT0gMDoNCj4gPj4gKyAgICAgICAgICAgIGZpbGVfbG9nZ2VyX2hh bmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQ0KPiA+PiArICAgICAgICAgICAgZmlsZV9sb2dn ZXJfZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoDQo+ID4+ICsgICAgICAgICAgICAgICAg JyUobGV2ZWxuYW1lKS04cyAlKG1lc3NhZ2UpcycpDQo+ID4+ICsgICAgICAgIGVsaWYgYXJncy52 ZXJib3NlX2xvZ19maWxlID09IDE6DQo+ID4+ICsgICAgICAgICAgICBmaWxlX2xvZ2dlcl9oYW5k bGVyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpDQo+ID4+ICsgICAgICAgICAgICBmaWxlX2xvZ2dl cl9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigNCj4gPj4gKyAgICAgICAgICAgICAgICAn JShsZXZlbG5hbWUpLThzICUobWVzc2FnZSlzJykNCj4gPj4gKyAgICAgICAgZWxpZiBhcmdzLnZl cmJvc2VfbG9nX2ZpbGUgPT0gMjoNCj4gPj4gKyAgICAgICAgICAgIGZpbGVfbG9nZ2VyX2hhbmRs ZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykNCj4gPj4gKyAgICAgICAgICAgIGZpbGVfbG9nZ2Vy X2Zvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKA0KPiA+PiArICAgICAgICAgICAgICAgICdb JShmaWxlbmFtZSlzIC0gJShmdW5jTmFtZSkyMHMoKSBdICUobGV2ZWxuYW1lKS04cyAnDQo+ID4+ ICsgICAgICAgICAgICAgICAgJyUobWVzc2FnZSlzJykNCj4gPj4gKyAgICAgICAgZWxpZiBhcmdz LnZlcmJvc2VfbG9nX2ZpbGUgPT0gMzoNCj4gPj4gKyAgICAgICAgICAgIGZpbGVfbG9nZ2VyX2hh bmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykNCj4gPj4gKyAgICAgICAgICAgIGZpbGVfbG9n Z2VyX2Zvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKA0KPiA+PiArICAgICAgICAgICAgICAg ICdbJShmaWxlbmFtZSlzOiUobGluZW5vKXMgLSAlKGZ1bmNOYW1lKTIwcygpIF0gJw0KPiA+PiAr ICAgICAgICAgICAgICAgICclKGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMnKQ0KPiA+PiArICAg ICAgICBlbGlmIGFyZ3MudmVyYm9zZV9sb2dfZmlsZSA9PSA0Og0KPiA+PiArICAgICAgICAgICAg ZmlsZV9sb2dnZXJfaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQ0KPiA+PiArICAgICAg ICAgICAgZmlsZV9sb2dnZXJfZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoDQo+ID4+ICsg ICAgICAgICAgICAgICAgJyUoYXNjdGltZSlzIFslKGZpbGVuYW1lKXM6JShsaW5lbm8pcyAtDQo+ ICUoZnVuY05hbWUpMjBzKCkNCj4gPj4gXScNCj4gPj4gKyAgICAgICAgICAgICAgICAnICUobGV2 ZWxuYW1lKS04cyAlKG1lc3NhZ2UpcycpDQo+ID4+ICsgICAgICAgIGVsc2U6DQo+ID4+ICsgICAg ICAgICAgICBmaWxlX2xvZ2dlcl9oYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpDQo+ID4+ ICsgICAgICAgICAgICBmaWxlX2xvZ2dlcl9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigN Cj4gPj4gKyAgICAgICAgICAgICAgICAnJShhc2N0aW1lKXMgWyUoZmlsZW5hbWUpczolKGxpbmVu bylzIC0NCj4gJShmdW5jTmFtZSkyMHMoKQ0KPiA+PiBdJw0KPiA+PiArICAgICAgICAgICAgICAg ICcgJShsZXZlbG5hbWUpLThzICUobWVzc2FnZSlzJykNCj4gPj4gKw0KPiA+PiArICAgICAgICBm aWxlX2xvZ2dlcl9oYW5kbGVyLmFkZEZpbHRlcihQcm9ncmVzc0ZpbHRlcigpKQ0KPiA+PiArICAg ICAgICBmaWxlX2xvZ2dlcl9oYW5kbGVyLnNldEZvcm1hdHRlcihmaWxlX2xvZ2dlcl9mb3JtYXR0 ZXIpDQo+ID4+ICsgICAgICAgIHJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoZmlsZV9sb2dnZXJfaGFu ZGxlcikNCj4gPj4gKw0KPiA+PiArICAgIGxvZ2dpbmcuaW5mbyhQUk9HUkFNX05BTUUgKyAiXG4i KQ0KPiA+PiArDQo+ID4+ICsgICAgc3Vic3RpdHV0aW9uX2RhdGEgPSB7fQ0KPiA+PiArICAgIGlm IGFyZ3Muc3Vic3RpdHV0aW9uX2ZpbGU6DQo+ID4+ICsgICAgICAgIGxvZ2dpbmcuaW5mbyhmIkxv YWRpbmcgc3Vic3RpdHV0aW9uIGZpbGUNCj4gPj4ge2FyZ3Muc3Vic3RpdHV0aW9uX2ZpbGV9IikN Cj4gPj4gKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc3Vic3RpdHV0aW9uX2ZpbGUsICdyJykgYXMg c2Y6DQo+ID4+ICsgICAgICAgICAgICBzdWJzdGl0dXRpb25fZGF0YSA9IHlhbWwuc2FmZV9sb2Fk KHNmKQ0KPiA+PiArDQo+ID4+ICsgICAgaWYgYXJncy53b3Jrc3BhY2VfZGlyZWN0b3J5Og0KPiA+ PiArICAgICAgICByZXR1cm4gY2hlY2tfbWFjcm9zX2luX2RpcmVjdG9yeSgNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgUGF0aChhcmdzLndvcmtzcGFjZV9kaXJlY3RvcnkpLA0KPiA+PiArICAg ICAgICAgICAgICAgICAgICBhcmdzLmV4dGVuc2lvbnMsDQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgIG5vdCBhcmdzLmRvX25vdF9pZ25vcmVfZ2l0X2lnbm9yZV9maWxlcywNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgbm90IGFyZ3MuZG9fbm90X2lnbm9yZV9naXRfc3VibW9kdWxlcywNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Mubm9fcHJvZ3Jlc3NfYmFyLA0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICBhcmdzLnV0Zjh3LA0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAqKnN1YnN0aXR1dGlvbl9kYXRhKQ0KPiA+PiArICAgIGVsc2U6DQo+ID4+ICsgICAgICAgIGN1 cnJfZGlyID0gUGF0aChfX2ZpbGVfXykucGFyZW50DQo+ID4+ICsgICAgICAgIGlucHV0X2ZpbGUg PSBQYXRoKGFyZ3MuaW5wdXRfZmlsZSkNCj4gPj4gKw0KPiA+PiArICAgICAgICByZWxfcGF0aCA9 IHN0cihpbnB1dF9maWxlKQ0KPiA+PiArICAgICAgICBpZiBpbnB1dF9maWxlLmlzX3JlbGF0aXZl X3RvKGN1cnJfZGlyKToNCj4gPj4gKyAgICAgICAgICAgIHJlbF9wYXRoID0gc3RyKGlucHV0X2Zp bGUucmVsYXRpdmVfdG8oY3Vycl9kaXIpKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIGxvZ2dpbmcu aW5mbyhmIkNoZWNraW5nIERlYnVnIE1hY3JvcyBpbiBGaWxlOiAiDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICBmIntpbnB1dF9maWxlLnJlc29sdmUoKX1cbiIpDQo+ID4+ICsNCj4gPj4gKyAg ICAgICAgc3RhcnRfdGltZSA9IHRpbWVpdC5kZWZhdWx0X3RpbWVyKCkNCj4gPj4gKyAgICAgICAg ZmFpbHVyZV9jbnQgPSBjaGVja19tYWNyb3NfaW5fZmlsZSgNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGlucHV0X2ZpbGUsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICByZWxf cGF0aCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MudXRmOHcsDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAqKnN1YnN0aXR1dGlvbl9kYXRhKVswXQ0KPiA+PiArICAg ICAgICBlbmRfdGltZSA9IHRpbWVpdC5kZWZhdWx0X3RpbWVyKCkgLSBzdGFydF90aW1lDQo+ID4+ ICsNCj4gPj4gKyAgICAgICAgbG9nZ2luZy5kZWJ1ZyhmIltQRVJGXSBUaGUgZmlsZSBtYWNybyBj aGVjayBvcGVyYXRpb24gdG9vayAiDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgZiJ7ZW5k X3RpbWU6LjJmfSBzZWNvbmRzLiIpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgX2xvZ19mYWlsdXJl X2NvdW50KGZhaWx1cmVfY250LCAxKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIHJldHVybiBmYWls dXJlX2NudA0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6 DQo+ID4+ICsgICAgIyBUaGUgZXhpdCBzdGF0dXMgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBtYWNy byBmb3JtYXR0aW5nIGVycm9ycw0KPiA+PiBmb3VuZC4NCj4gPj4gKyAgICAjIFRoZXJlZm9yZSwg aWYgbm8gbWFjcm8gZm9ybWF0dGluZyBlcnJvcnMgYXJlIGZvdW5kLCAwIGlzDQo+IHJldHVybmVk Lg0KPiA+PiArICAgICMgU29tZSBzeXN0ZW1zIHJlcXVpcmUgdGhlIHJldHVybiB2YWx1ZSB0byBi ZSBpbiB0aGUgcmFuZ2UgMC0xMjcsDQo+IHNvDQo+ID4+ICsgICAgIyBhIGxvd2VyIG1heGltdW0g b2YgMTAwIGlzIGVuZm9yY2VkIHRvIGFsbG93IGEgd2lkZSByYW5nZSBvZg0KPiA+PiBwb3RlbnRp YWwNCj4gPj4gKyAgICAjIHZhbHVlcyB3aXRoIGEgcmVhc29uYWJseSBsYXJnZSBtYXhpbXVtLg0K PiA+PiArICAgIHRyeToNCj4gPj4gKw0KPiA+PiBzeXMuZXhpdChtYXgoX21vZHVsZV9pbnZvY2F0 aW9uX2NoZWNrX21hY3Jvc19pbl9kaXJlY3Rvcnlfd3JhcHBlcigpLA0KPiA+PiArICAgICAgICAg ICAgICAgICAxMDApKQ0KPiA+PiArICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoNCj4gPj4g KyAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJFeGl0aW5nIGR1ZSB0byBrZXlib2FyZCBpbnRlcnJ1 cHQuIikNCj4gPj4gKyAgICAgICAgIyBBY3R1YWwgZm9ybWF0dGluZyBlcnJvcnMgYXJlIG9ubHkg YWxsb3dlZCB0byByZWFjaCAxMDAuDQo+ID4+ICsgICAgICAgICMgMTAxIHNpZ25hbHMgYSBrZXli b2FyZCBpbnRlcnJ1cHQuDQo+ID4+ICsgICAgICAgIHN5cy5leGl0KDEwMSkNCj4gPj4gKyAgICBl eGNlcHQgRmlsZUV4aXN0c0Vycm9yIGFzIGU6DQo+ID4+ICsgICAgICAgICMgMTAyIHNpZ25hbHMg YSBmaWxlIG5vdCBmb3VuZCBlcnJvci4NCj4gPj4gKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbChm IklucHV0IGZpbGUge2UuYXJnc1swXX0gZG9lcyBub3QgZXhpc3QuIikNCj4gPj4gKyAgICAgICAg c3lzLmV4aXQoMTAyKQ0KPiA+PiBkaWZmIC0tZ2l0IGEvLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNy b0NoZWNrL1JlYWRtZS5tZA0KPiA+PiBiLy5weXRvb2wvUGx1Z2luL0RlYnVnTWFjcm9DaGVjay9S ZWFkbWUubWQNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAw MDAwLi4zM2YxYWQ5NzkwZWQNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi8ucHl0b29s L1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svUmVhZG1lLm1kDQo+ID4+IEBAIC0wLDAgKzEsMjUzIEBA DQo+ID4+ICsjIERlYnVnIE1hY3JvIENoZWNrDQo+ID4+ICsNCj4gPj4gK1RoaXMgUHl0aG9uIGFw cGxpY2F0aW9uIHNjYW5zIGFsbCBmaWxlcyBpbiBhIGJ1aWxkIHBhY2thZ2UgZm9yIGRlYnVnDQo+ ID4+IG1hY3JvIGZvcm1hdHRpbmcgaXNzdWVzLiBJdCBpcyBpbnRlbmRlZCB0byBiZSBhDQo+ID4+ ICtmdW5kYW1lbnRhbCBidWlsZC10aW1lIGNoZWNrIHRoYXQgaXMgcGFydCBvZiBhIG5vcm1hbCBk ZXZlbG9wZXIgYnVpbGQNCj4gPj4gcHJvY2VzcyB0byBjYXRjaCBlcnJvcnMgcmlnaHQgYXdheS4N Cj4gPj4gKw0KPiA+PiArQXMgYSBidWlsZCBwbHVnaW4sIGl0IGlzIGNhcGFibGUgb2YgZmluZGlu ZyB0aGVzZSBlcnJvcnMgZWFybHkgaW4gdGhlDQo+ID4+IGRldmVsb3BtZW50IHByb2Nlc3MgYWZ0 ZXIgY29kZSBpcyBpbml0aWFsbHkNCj4gPj4gK3dyaXR0ZW4gdG8gZW5zdXJlIHRoYXQgYWxsIGNv ZGUgdGVzdGVkIGlzIGZyZWUgb2YgZGVidWcgbWFjcm8NCj4gZm9ybWF0dGluZw0KPiA+PiBlcnJv cnMuIFRoZXNlIGVycm9ycyBvZnRlbiBjcmVlcCBpbnRvIGRlYnVnDQo+ID4+ICtwcmludHMgaW4g ZXJyb3IgY29uZGl0aW9ucyB0aGF0IGFyZSBub3QgZnJlcXVlbnRseSBleGVjdXRlZCBtYWtpbmcN Cj4gZGVidWcNCj4gPj4gZXZlbiBtb3JlIGRpZmZpY3VsdCBhbmQgY29uZnVzaW5nIHdoZW4gdGhl eQ0KPiA+PiArYXJlIGVuY291bnRlcmVkLiBJbiBvdGhlciBjYXNlcywgZGVidWcgbWFjcm9zIHdp dGggdGhlc2UgZXJyb3JzIGluDQo+IHRoZQ0KPiA+PiBtYWluIGNvZGUgcGF0aCBjYW4gbGVhZCB0 byB1bmV4cGVjdGVkIGJlaGF2aW9yDQo+ID4+ICt3aGVuIGV4ZWN1dGVkLiBBcyBhIHN0YW5kYWxv bmUgc2NyaXB0LCBpdCBjYW4gYmUgZWFzaWx5IHJ1biBtYW51YWxseQ0KPiBvcg0KPiA+PiBpbnRl Z3JhdGVkIGludG8gb3RoZXIgQ0kgcHJvY2Vzc2VzLg0KPiA+PiArDQo+ID4+ICtUaGUgcGx1Z2lu IGlzIHBhcnQgb2YgYSBzZXQgb2YgZGVidWcgbWFjcm8gY2hlY2sgc2NyaXB0cyBtZWFudCB0byBi ZQ0KPiA+PiByZWxhdGl2ZWx5IHBvcnRhYmxlIHNvIHRoZXkgY2FuIGJlIGFwcGxpZWQgdG8NCj4g Pj4gK2FkZGl0aW9uYWwgY29kZSBiYXNlcyB3aXRoIG1pbmltYWwgZWZmb3J0Lg0KPiA+PiArDQo+ ID4+ICsjIyAxLiBCdWlsZFBsdWdpbi9EZWJ1Z01hY3JvQ2hlY2tCdWlsZFBsdWdpbi5weQ0KPiA+ PiArDQo+ID4+ICtUaGlzIGlzIHRoZSBidWlsZCBwbHVnaW4uIEl0IGlzIGRpc2NvdmVyZWQgd2l0 aGluIHRoZSBTdHVhcnQgU2VsZi0NCj4gPj4gRGVzY3JpYmluZyBFbnZpcm9ubWVudCAoU0RFKSBk dWUgdG8gdGhlIGFjY29tcGFueWluZw0KPiA+PiArZmlsZSBgRGVidWdNYWNyb0NoZWNrX3BsdWdp bl9pbi55YW1sYC4NCj4gPj4gKw0KPiA+PiArU2luY2UgbWFjcm8gZXJyb3JzIGFyZSBjb25zaWRl cmVkIGEgY29kaW5nIGJ1ZyB0aGF0IHNob3VsZCBiZSBmb3VuZA0KPiBhbmQNCj4gPj4gZml4ZWQg ZHVyaW5nIHRoZSBidWlsZCBwaGFzZSBvZiB0aGUgZGV2ZWxvcGVyDQo+ID4+ICtwcm9jZXNzIChi ZWZvcmUgZGVidWcgYW5kIHRlc3RpbmcpLCB0aGlzIHBsdWdpbiBpcyBydW4gaW4gcHJlLWJ1aWxk Lg0KPiBJdA0KPiA+PiB3aWxsIHJ1biB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBwYWNrYWdlDQo+ ID4+ICtiZWluZyBjb21waWxlZC4gRm9yIGEgcGxhdGZvcm0gYnVpbGQsIHRoaXMgbWVhbnMgaXQg d2lsbCBydW4gYWdhaW5zdA0KPiB0aGUNCj4gPj4gcGFja2FnZSBiZWluZyBidWlsdC4gSW4gYSBD SSBidWlsZCwgaXQgd2lsbA0KPiA+PiArcnVuIGluIHByZS1idWlsZCBmb3IgZWFjaCBwYWNrYWdl IGFzIGVhY2ggcGFja2FnZSBpcyBidWlsdC4NCj4gPj4gKw0KPiA+PiArVGhlIGJ1aWxkIHBsdWdp biBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOg0KPiA+PiArDQo+ID4+ICsgIDEuIFJlZ2lz dGVyZWQgYXQgYGdsb2JhbGAgc2NvcGUuIFRoaXMgbWVhbnMgaXQgd2lsbCBhbHdheXMgcnVuLg0K PiA+PiArDQo+ID4+ICsgIDIuIENhbGxlZCBvbmx5IG9uIGNvbXBpbGFibGUgYnVpbGQgdGFyZ2V0 cyAoaS5lLiBkb2VzIG5vdGhpbmcgb24NCj4gYCJOTy0NCj4gPj4gVEFSR0VUImApLg0KPiA+PiAr DQo+ID4+ICsgIDMuIFJ1bnMgYXMgYSBwcmUtYnVpbGQgc3RlcC4gVGhpcyBtZWFucyBpdCBnaXZl cyByZXN1bHRzIHJpZ2h0IGF3YXkNCj4gdG8NCj4gPj4gZW5zdXJlIGNvbXBpbGF0aW9uIGZvbGxv d3Mgb24gYSBjbGVhbiBzbGF0ZS4NCj4gPj4gKyAgICAgVGhpcyBhbHNvIG1lYW5zIGl0IHJ1bnMg aW4gcGxhdGZvcm0gYnVpbGQgYW5kIENJLiBJdCBpcyBydW4gaW4NCj4gQ0kNCj4gPj4gYXMgYSBw cmUtYnVpbGQgc3RlcCB3aGVuIHRoZSBgQ29tcGlsZXJQbHVnaW5gDQo+ID4+ICsgICAgIGNvbXBp bGVzIGNvZGUuIFRoaXMgZW5zdXJlcyBldmVuIGlmIHRoZSBwbHVnaW4gd2FzIG5vdCBydW4NCj4g bG9jYWxseSwNCj4gPj4gYWxsIGNvZGUgc3VibWlzc2lvbnMgaGF2ZSBiZWVuIGNoZWNrZWQuDQo+ ID4+ICsNCj4gPj4gKyAgNC4gUmVwb3J0cyBhbnkgZXJyb3JzIGluIHRoZSBidWlsZCBsb2cgYW5k IGZhaWxzIHRoZSBidWlsZCB1cG9uDQo+IGVycm9yDQo+ID4+IG1ha2luZyBpdCBlYXN5IHRvIGRp c2NvdmVyIHByb2JsZW1zLg0KPiA+PiArDQo+ID4+ICsgIDUuIFN1cHBvcnRzIHR3byBtZXRob2Rz IG9mIGNvbmZpZ3VyYXRpb24gdmlhICJzdWJzdGl0dXRpb24NCj4gc3RyaW5ncyI6DQo+ID4+ICsN Cj4gPj4gKyAgICAgMS4gQnkgc2V0dGluZyBhIGJ1aWxkIHZhcmlhYmxlIGNhbGxlZA0KPiBgREVC VUdfTUFDUk9fQ0hFQ0tfU1VCX0ZJTEVgDQo+ID4+IHdpdGggdGhlIG5hbWUgb2YgYSBzdWJzdGl0 dXRpb24gWUFNTCBmaWxlIHRvDQo+ID4+ICsgICAgICAgIHVzZS4NCj4gPj4gKw0KPiA+PiArICAg ICAgICAqKkV4YW1wbGU6KioNCj4gPj4gKw0KPiA+PiArICAgICAgICBgYGBweXRob24NCj4gPj4g KyAgICAgICAgc2hlbGxfZW52aXJvbm1lbnQuR2V0QnVpbGRWYXJzKCkuU2V0VmFsdWUoDQo+ID4+ ICsNCj4gPj4gIkRFQlVHX01BQ1JPX0NIRUNLX1NVQl9GSUxFIiwNCj4gPj4gKw0KPiA+PiBvcy5w YXRoLmpvaW4oc2VsZi5HZXRXb3Jrc3BhY2VSb290KCksICJEZWJ1Z01hY3JvQ2hlY2tTdWIueWFt bCIpLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi U2V0IGluIENJU2V0dGluZ3MucHkiKQ0KPiA+PiArICAgICAgICBgYGANCj4gPj4gKw0KPiA+PiAr ICAgICAgICAqKlN1YnN0aXR1dGlvbiBGaWxlIENvbnRlbnQgRXhhbXBsZToqKg0KPiA+PiArDQo+ ID4+ICsgICAgICAgIGBgYHlhbWwNCj4gPj4gKyAgICAgICAgLS0tDQo+ID4+ICsgICAgICAgICMg T3ZtZlBrZy9DcHVIb3RwbHVnU21tL0FwaWNJZC5oDQo+ID4+ICsgICAgICAgICMgUmVhc29uOiBT dWJzdGl0dXRlIHdpdGggbWFjcm8gdmFsdWUNCj4gPj4gKyAgICAgICAgRk1UX0FQSUNfSUQ6IDB4 JTA4eA0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgRHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL0Nv bmZpZ3VyYXRpb25NYW5hZ2VyT2JqZWN0LmgNCj4gPj4gKyAgICAgICAgIyBSZWFzb246IFN1YnN0 aXR1dGUgd2l0aCBtYWNybyB2YWx1ZQ0KPiA+PiArICAgICAgICBGTVRfQ01fT0JKRUNUX0lEOiAw eCVseA0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgT3ZtZlBrZy9JbnRlbFRkeC9UZFRjZzJEeGUv VGRUY2cyRHhlLmMNCj4gPj4gKyAgICAgICAgIyBSZWFzb246IEFja25vd2xlZGdpbmcgdXNlIG9m IHR3byBmb3JtYXQgc3BlY2lmaWVycyBpbg0KPiBzdHJpbmcNCj4gPj4gd2l0aCBvbmUgYXJndW1l bnQNCj4gPj4gKyAgICAgICAgIyAgICAgICAgIFJlcGxhY2UgdGVybmFyeSBvcGVyYXRvciBpbiBk ZWJ1ZyBzdHJpbmcgd2l0aA0KPiBzaW5nbGUNCj4gPj4gc3BlY2lmaWVyDQo+ID4+ICsgICAgICAg ICdJbmRleCA9PSBDT0xVTUVfU0laRS8yID8gIiB8ICUwMngiIDogIiAlMDJ4Iic6ICIlZCINCj4g Pj4gKw0KPiA+PiArICAgICAgICAjDQo+ID4+DQo+IER5bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9D b21tb24vVGFibGVIZWxwZXJMaWIvQ29uZmlndXJhdGlvbk1hbmFnZXJPYmplY3QNCj4gPj4gUGFy c2VyLmMNCj4gPj4gKyAgICAgICAgIyBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMNCj4gPj4gKyAgICAgICAgIyBSZWFzb246IEFja25vd2xl ZGdlIHRoYXQgc3RyaW5nICpzaG91bGQqIGV4cGFuZCB0byBvbmUNCj4gPj4gc3BlY2lmaWVyDQo+ ID4+ICsgICAgICAgICMgICAgICAgICBSZXBsYWNlIHZhcmlhYmxlIHdpdGggZXhwZWN0ZWQgbnVt YmVyIG9mIHNwZWNpZmllcnMNCj4gPj4gKDEpDQo+ID4+ICsgICAgICAgIFBhcnNlcltJbmRleF0u Rm9ybWF0OiAiJWQiDQo+ID4+ICsgICAgICAgIGBgYA0KPiA+PiArDQo+ID4+ICsgICAgIDIuIEJ5 IGVudGVyaW5nIHRoZSBzdHJpbmcgc3Vic3RpdHV0aW9ucyBkaXJlY3RvcnkgaW50byBhDQo+IGRp Y3Rpb25hcnkNCj4gPj4gY2FsbGVkIGBTdHJpbmdTdWJzdGl0dXRpb25zYCBpbiBhDQo+ID4+ICsg ICAgICAgIGBEZWJ1Z01hY3JvQ2hlY2tgIHNlY3Rpb24gb2YgdGhlIHBhY2thZ2UgQ0kgWUFNTCBm aWxlLg0KPiA+PiArDQo+ID4+ICsgICAgICAgICoqRXhhbXBsZToqKg0KPiA+PiArDQo+ID4+ICsg ICAgICAgIGBgYHlhbWwNCj4gPj4gKyAgICAgICAgIkRlYnVnTWFjcm9DaGVjayI6IHsNCj4gPj4g KyAgICAgICAgICAiU3RyaW5nU3Vic3RpdHV0aW9ucyI6IHsNCj4gPj4gKyAgICAgICAgICAgICJT VUJfQSI6ICIlTHgiDQo+ID4+ICsgICAgICAgICAgfQ0KPiA+PiArICAgICAgICB9DQo+ID4+ICsg ICAgICAgIGBgYA0KPiA+PiArDQo+ID4+ICsjIyMgRGVidWcgTWFjcm8gQ2hlY2sgQnVpbGQgUGx1 Z2luOiBTaW1wbGUgRGlzYWJsZQ0KPiA+PiArDQo+ID4+ICtUaGUgYnVpbGQgcGx1Z2luIGNhbiBz aW1wbHkgYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBhbiBlbnZpcm9ubWVudA0KPiA+PiB2YXJpYWJs ZSBuYW1lZCBgIkRJU0FCTEVfREVCVUdfTUFDUk9fQ0hFQ0siYC4gVGhlDQo+ID4+ICtwbHVnaW4g aXMgZGlzYWJsZWQgb24gZXhpc3RlbmNlIG9mIHRoZSB2YXJpYWJsZS4gVGhlIGNvbnRlbnRzIG9m IHRoZQ0KPiA+PiB2YXJpYWJsZSBhcmUgbm90IGluc3BlY3RlZCBhdCB0aGlzIHRpbWUuDQo+ID4+ ICsNCj4gPj4gKyMjIDIuIERlYnVnTWFjcm9DaGVjay5weQ0KPiA+PiArDQo+ID4+ICtUaGlzIGlz IHRoZSBtYWluIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyB0aGUgaW1wbGVtZW50YXRpb24gbG9n aWMuDQo+IFRoZQ0KPiA+PiBidWlsZCBwbHVnaW4gc2ltcGx5IHdyYXBzIGFyb3VuZCBpdC4NCj4g Pj4gKw0KPiA+PiArV2hlbiBmaXJzdCBydW5uaW5nIGRlYnVnIG1hY3JvIGNoZWNrIGFnYWluc3Qg YSBuZXcsIGxhcmdlIGNvZGUgYmFzZSwNCj4gaXQNCj4gPj4gaXMgcmVjb21tZW5kZWQgdG8gZmly c3QgcnVuIHRoaXMgc3RhbmRhbG9uZQ0KPiA+PiArc2NyaXB0IGFuZCBhZGRyZXNzIGFsbCBvZiB0 aGUgaXNzdWVzIGFuZCB0aGVuIGVuYWJsZSB0aGUgYnVpbGQNCj4gcGx1Z2luLg0KPiA+PiArDQo+ ID4+ICtUaGUgbW9kdWxlIHN1cHBvcnRzIGEgbnVtYmVyIG9mIGNvbmZpZ3VyYXRpb24gcGFyYW1l dGVycyB0byBlYXNlDQo+IGRlYnVnDQo+ID4+IG9mIGVycm9ycyBhbmQgdG8gcHJvdmlkZSBmbGV4 aWJpbGl0eSBmb3INCj4gPj4gK2RpZmZlcmVudCBidWlsZCBlbnZpcm9ubWVudHMuDQo+ID4+ICsN Cj4gPj4gKyMjIyBFREsgMiBQeVRvb2wgTGlicmFyeSBEZXBlbmRlbmN5DQo+ID4+ICsNCj4gPj4g K1RoaXMgc2NyaXB0IGhhcyBtaW5pbWFsIGxpYnJhcnkgZGVwZW5kZW5jaWVzLiBIb3dldmVyLCBp dCBoYXMgb25lDQo+ID4+IGRlcGVuZGVuY3kgeW91IG1pZ2h0IG5vdCBiZSBmYW1pbGlhciB3aXRo IG9uIHRoZQ0KPiA+PiArVGlhbm9jb3JlIEVESyAyIFB5VG9vbCBMaWJyYXJ5IChlZGsydG9vbGxp Yik6DQo+ID4+ICsNCj4gPj4gK2BgYHB5DQo+ID4+ICtmcm9tIGVkazJ0b29sbGliLnV0aWxpdHlf ZnVuY3Rpb25zIGltcG9ydCBSdW5DbWQNCj4gPj4gK2BgYA0KPiA+PiArDQo+ID4+ICtZb3Ugc2lt cGx5IG5lZWQgdG8gaW5zdGFsbCB0aGUgZm9sbG93aW5nIHBpcCBtb2R1bGUgdG8gdXNlIHRoaXMN Cj4gbGlicmFyeToNCj4gPj4gYGVkazItcHl0b29sLWxpYnJhcnlgDQo+ID4+ICsoZS5nLiBgcGlw IGluc3RhbGwgZWRrMi1weXRvb2wtbGlicmFyeWApDQo+ID4+ICsNCj4gPj4gK01vcmUgaW5mb3Jt YXRpb24gaXMgYXZhaWxhYmxlIGhlcmU6DQo+ID4+ICsNCj4gPj4gKy0gUHlQSSBwYWdlOiBbZWRr Mi1weXRvb2wtbGlicmFyeV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2VkazItDQo+IHB5dG9v bC0NCj4gPj4gbGlicmFyeS8pDQo+ID4+ICstIEdpdEh1YiByZXBvOiBbdGlhbm9jb3JlL2VkazIt cHl0b29sLQ0KPiA+PiBsaWJyYXJ5XShodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIt cHl0b29sLWxpYnJhcnkpDQo+ID4+ICsNCj4gPj4gK0lmIHlvdSBzdHJvbmdseSBwcmVmZXIgbm90 IGluY2x1ZGluZyB0aGlzIGFkZGl0aW9uYWwgZGVwZW5kZW5jeSwgdGhlDQo+ID4+IGZ1bmN0aW9u YWxpdHkgaW1wb3J0ZWQgaGVyZSBpcyByZWxhdGl2ZWx5DQo+ID4+ICtzaW1wbGUgdG8gc3Vic3Rp dHV0ZSB3aXRoIHRoZSBQeXRob24NCj4gPj4gW2BzdWJwcm9jZXNzYF0oaHR0cHM6Ly9kb2NzLnB5 dGhvbi5vcmcvMy9saWJyYXJ5L3N1YnByb2Nlc3MuaHRtbCkNCj4gYnVpbHQtDQo+ID4+IGluDQo+ ID4+ICttb2R1bGUuDQo+ID4+ICsNCj4gPj4gKyMjIyBFeGFtcGxlcw0KPiA+PiArDQo+ID4+ICtT aW1wbGUgcnVuIGFnYWluc3QgY3VycmVudCBkaXJlY3Rvcnk6DQo+ID4+ICsNCj4gPj4gK2A+IHB5 dGhvbiBEZWJ1Z01hY3JvQ2hlY2sucHkgLXcgLmANCj4gPj4gKw0KPiA+PiArU2ltcGxlIHJ1biBh Z2FpbnN0IGEgc2luZ2xlIGZpbGU6DQo+ID4+ICsNCj4gPj4gK2A+IHB5dGhvbiBEZWJ1Z01hY3Jv Q2hlY2sucHkgLWkgZmlsZW5hbWUuY2ANCj4gPj4gKw0KPiA+PiArUnVuIGFnYWluc3QgYSBkaXJl Y3Rvcnkgd2l0aCBvdXRwdXQgcGxhY2VkIGludG8gYSBmaWxlIGNhbGxlZA0KPiA+PiAiZGVidWdf bWFjcm9fY2hlY2subG9nIjoNCj4gPj4gKw0KPiA+PiArYD4gcHl0aG9uIERlYnVnTWFjcm9DaGVj ay5weSAtdyAuIC1sYA0KPiA+PiArDQo+ID4+ICtSdW4gYWdhaW5zdCBhIGRpcmVjdG9yeSB3aXRo IG91dHB1dCBwbGFjZWQgaW50byBhIGZpbGUgY2FsbGVkDQo+ID4+ICJjdXN0b20ubG9nIiBhbmQg ZGVidWcgbG9nIG1lc3NhZ2VzIGVuYWJsZWQ6DQo+ID4+ICsNCj4gPj4gK2A+IHB5dGhvbiBEZWJ1 Z01hY3JvQ2hlY2sucHkgLXcgLiAtbCBjdXN0b20ubG9nIC12YA0KPiA+PiArDQo+ID4+ICtSdW4g YWdhaW5zdCBhIGRpcmVjdG9yeSB3aXRoIG91dHB1dCBwbGFjZWQgaW50byBhIGZpbGUgY2FsbGVk DQo+ID4+ICJjdXN0b20ubG9nIiwgd2l0aCBkZWJ1ZyBsb2cgbWVzc2FnZXMgZW5hYmxlZCBpbmNs dWRpbmcNCj4gPj4gK3B5dGhvbiBzY3JpcHQgZnVuY3Rpb24gYW5kIGxpbmUgbnVtYmVyLCB1c2Ug YSBzdWJzdGl0dXRpb24gZmlsZQ0KPiBjYWxsZWQNCj4gPj4gImZpbGVfc3ViLnlhbWwiLCBkbyBu b3Qgc2hvdyB0aGUgcHJvZ3Jlc3MgYmFyLA0KPiA+PiArYW5kIHJ1biBhZ2FpbnN0IC5jIGFuZCAu aCBmaWxlczoNCj4gPj4gKw0KPiA+PiArYD4gcHl0aG9uIERlYnVnTWFjcm9DaGVjay5weSAtdyAu IC1sIGN1c3RvbS5sb2cgLXZ2IC1zIGZpbGVfc3ViLnlhbWwNCj4gLW4NCj4gPj4gLWUgLmMgLmhg DQo+ID4+ICsNCj4gPj4gKz4gKipOb3RlKio6IEl0IGlzIG5vcm1hbGx5IG5vdCByZWNvbW1lbmRl ZCB0byBydW4gYWdhaW5zdCAuaCBmaWxlcyBhcw0KPiA+PiB0aGV5IGFuZCBtYW55IG90aGVyIG5v bi0uYyBmaWxlcyBub3JtYWxseSBkbw0KPiA+PiArICBub3QgaGF2ZSBmdWxsIGBERUJVR2AgbWFj cm8gcHJpbnRzLg0KPiA+PiArDQo+ID4+ICtgYGBwbGFpbnRleHQNCj4gPj4gK3VzYWdlOiBEZWJ1 ZyBNYWNybyBDaGVja2VyIFstaF0gKC13IFdPUktTUEFDRV9ESVJFQ1RPUlkgfCAtaQ0KPiA+PiBb SU5QVVRfRklMRV0pIFstbCBbTE9HX0ZJTEVdXSBbLXMgU1VCU1RJVFVUSU9OX0ZJTEVdIFstdl0g Wy1uXSBbLXFdIFstDQo+IHVdDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWRm XSBbLWRzXSBbLWUgW0VYVEVOU0lPTlMgLi4uXV0NCj4gPj4gKw0KPiA+PiArQ2hlY2tzIGZvciBk ZWJ1ZyBtYWNybyBmb3JtYXR0aW5nIGVycm9ycyB3aXRoaW4gZmlsZXMgcmVjdXJzaXZlbHkNCj4g Pj4gbG9jYXRlZCB3aXRoaW4gYSBnaXZlbiBkaXJlY3RvcnkuDQo+ID4+ICsNCj4gPj4gK29wdGlv bnM6DQo+ID4+ICsgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdl IGFuZCBleGl0DQo+ID4+ICsgIC13IFdPUktTUEFDRV9ESVJFQ1RPUlksIC0td29ya3NwYWNlLWRp cmVjdG9yeSBXT1JLU1BBQ0VfRElSRUNUT1JZDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICBEaXJlY3Rvcnkgb2Ygc291cmNlIGZpbGVzIHRvIGNoZWNrLg0KPiA+PiArDQo+ID4+ICsgIC1p IFtJTlBVVF9GSUxFXSwgLS1pbnB1dC1maWxlIFtJTlBVVF9GSUxFXQ0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgRmlsZSBwYXRoIGZvciBhbiBpbnB1dCBmaWxlIHRvIGNoZWNrLg0KPiA+ PiArDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgc29tZSBvdGhlciBv cHRpb25zIGRvIG5vdCBhcHBseSBpZg0KPiBhDQo+ID4+IHNpbmdsZSBmaWxlIGlzIHNwZWNpZmll ZCBzdWNoIGFzIHRoZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgZ2l0IG9wdGlvbnMg YW5kIGZpbGUgZXh0ZW5zaW9ucy4NCj4gPj4gKw0KPiA+PiArICAtZSBbRVhURU5TSU9OUyAuLi5d LCAtLWV4dGVuc2lvbnMgW0VYVEVOU0lPTlMgLi4uXQ0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgdG8gaW5jbHVkZS4NCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIChkZWZhdWx0OiBbJy5jJ10pDQo+ID4+ICsNCj4gPj4gK09wdGlvbmFs IGlucHV0IGFuZCBvdXRwdXQ6DQo+ID4+ICsgIC1sIFtMT0dfRklMRV0sIC0tbG9nLWZpbGUgW0xP R19GSUxFXQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBwYXRoIGZvciBsb2cg b3V0cHV0Lg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IGlmIHRoZSBm bGFnIGlzIGdpdmVuIHdpdGggbm8gZmlsZQ0KPiBwYXRoDQo+ID4+IHRoZW4gYSBmaWxlIGNhbGxl ZA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfbWFjcm9fY2hlY2subG9nIGlz IGNyZWF0ZWQgYW5kIHVzZWQgaW4NCj4gdGhlDQo+ID4+IGN1cnJlbnQgZGlyZWN0b3J5KQ0KPiA+ PiArDQo+ID4+ICsgIC1zIFNVQlNUSVRVVElPTl9GSUxFLCAtLXN1YnN0aXR1dGlvbi1maWxlIFNV QlNUSVRVVElPTl9GSUxFDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBBIHN1YnN0aXR1 dGlvbiBZQU1MIGZpbGUgc3BlY2lmaWVzIHN0cmluZw0KPiA+PiBzdWJzdGl0dXRpb25zIHRvIHBl cmZvcm0gd2l0aGluIHRoZSBkZWJ1ZyBtYWNyby4NCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBhIHNpbXBsZSBtZWNoYW5pc20gdG8N Cj4gPj4gZXhwYW5kIHRoZSByYXJlIGNhc2VzIG9mIHByZS1wcm9jZXNzb3INCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIG1hY3JvcyB3aXRob3V0IGRpcmVjdGx5IGludm9sdmluZyB0aGUg cHJlLQ0KPiA+PiBwcm9jZXNzb3IuIFRoZSBmaWxlIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgdmFsdWUgcGFpcnMgd2hlcmUgdGhl IGtleSBpcyB0aGUNCj4gPj4gaWRlbnRpZmllciB0byByZXBsYWNlIGFuZCB0aGUgdmFsdWUgaXMg dGhlIHZhbHVlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICB0byByZXBsYWNlIGl0IHdp dGguDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2FuIGFsc28g YmUgdXNlZCBhcyBhIG1ldGhvZCB0byBpZ25vcmUNCj4gPj4gcmVzdWx0cyBieSByZXBsYWNpbmcg dGhlIHByb2JsZW1hdGljIHN0cmluZw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgd2l0 aCBhIGRpZmZlcmVudCBzdHJpbmcuDQo+ID4+ICsNCj4gPj4gKyAgLXYsIC0tdmVyYm9zZS1sb2ct ZmlsZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGZpbGUgbG9nZ2luZyB2ZXJi b3NpdHkgbGV2ZWwuDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgLSBOb25lOiAgICBJ bmZvICYgPiBsZXZlbCBtZXNzYWdlcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgIC0g Jy12JzogICAgKyBEZWJ1ZyBsZXZlbCBtZXNzYWdlcw0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgIC0gJy12dic6ICAgKyBGaWxlIG5hbWUgYW5kIGZ1bmN0aW9uDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgLSAnLXZ2dic6ICArIExpbmUgbnVtYmVyDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgLSAnLXZ2dnYnOiArIFRpbWVzdGFtcA0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgKGRlZmF1bHQ6IHZlcmJvc2UgbG9nZ2luZyBpcyBub3QgZW5hYmxlZCkN Cj4gPj4gKw0KPiA+PiArICAtbiwgLS1uby1wcm9ncmVzcy1iYXINCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIERpc2FibGVzIHByb2dyZXNzIGJhcnMuDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAoZGVmYXVsdDogcHJvZ3Jlc3MgYmFycyBhcmUgdXNlZCBpbiBzb21lDQo+IHBs YWNlcw0KPiA+PiB0byBzaG93IHByb2dyZXNzKQ0KPiA+PiArDQo+ID4+ICsgIC1xLCAtLXF1aWV0 ICAgICAgICAgICBEaXNhYmxlcyBjb25zb2xlIG91dHB1dC4NCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIChkZWZhdWx0OiBjb25zb2xlIG91dHB1dCBpcyBlbmFibGVkKQ0KPiA+PiArDQo+ ID4+ICsgIC11LCAtLXV0Zjh3ICAgICAgICAgICBTaG93cyB3YXJuaW5ncyBmb3IgZmlsZSBVVEYt OCBkZWNvZGUgZXJyb3JzLg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6 IFVURi04IGRlY29kZSBlcnJvcnMgYXJlIG5vdCBzaG93bikNCj4gPj4gKw0KPiA+PiArDQo+ID4+ ICtPcHRpb25hbCBnaXQgY29udHJvbDoNCj4gPj4gKyAgLWRmLCAtLWRvLW5vdC1pZ25vcmUtZ2l0 LWlnbm9yZS1maWxlcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IGlnbm9y ZSBnaXQgaWdub3JlZCBmaWxlcy4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh dWx0OiBmaWxlcyBpbiBnaXQgaWdub3JlIGZpbGVzIGFyZQ0KPiBpZ25vcmVkKQ0KPiA+PiArDQo+ ID4+ICsgIC1kcywgLS1kby1ub3QtaWdub3JlLWdpdF9zdWJtb2R1bGVzDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICBEbyBub3QgaWdub3JlIGZpbGVzIGluIGdpdCBzdWJtb2R1bGVzLg0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IGZpbGVzIGluIGdpdCBzdWJt b2R1bGVzIGFyZQ0KPiBpZ25vcmVkKQ0KPiA+PiArYGBgDQo+ID4+ICsNCj4gPj4gKyMjIFN0cmlu ZyBTdWJzdGl0dXRpb25zDQo+ID4+ICsNCj4gPj4gK2BEZWJ1Z01hY3JvQ2hlY2tgIGN1cnJlbnRs eSBydW5zIHNlcGFyYXRlIGZyb20gdGhlIGNvbXBpbGVyDQo+IHRvb2xjaGFpbi4NCj4gPj4gVGhp cyBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IGlzIHZlcnkgcG9ydGFibGUNCj4gPj4gK2FuZCBj YW4gcnVuIGVhcmx5IGluIHRoZSBidWlsZCBwcm9jZXNzLCBidXQgaXQgYWxzbyBtZWFucyBwcmUt DQo+IHByb2Nlc3Nvcg0KPiA+PiBtYWNybyBleHBhbnNpb24gZG9lcyBub3QgaGFwcGVuIHdoZW4g aXQgaXMNCj4gPj4gK2ludm9rZWQuDQo+ID4+ICsNCj4gPj4gK0luIHByYWN0aWNlLCBpdCBoYXMg YmVlbiB2ZXJ5IHJhcmUgdGhhdCB0aGlzIGlzIGFuIGlzc3VlIGZvciBob3cgbW9zdA0KPiA+PiBk ZWJ1ZyBtYWNyb3MgYXJlIHdyaXR0ZW4uIEluIGNhc2UgaXQgaXMsIGENCj4gPj4gK3N1YnN0aXR1 dGlvbiBmaWxlIGNhbiBiZSB1c2VkIHRvIGluZm9ybSBgRGVidWdNYWNyb0NoZWNrYCBhYm91dCB0 aGUNCj4gPj4gc3RyaW5nIHN1YnN0aXR1dGlvbiB0aGUgcHJlLXByb2Nlc3NvciB3b3VsZA0KPiA+ PiArcGVyZm9ybS4NCj4gPj4gKw0KPiA+PiArVGhpcyBwYXR0ZXJuIHNob3VsZCBiZSB0YWtlbiBh cyBhIHdhcm5pbmcuIEl0IGlzIGp1c3QgYXMgZGlmZmljdWx0DQo+IGZvcg0KPiA+PiBodW1hbnMg dG8ga2VlcCBkZWJ1ZyBtYWNybyBzcGVjaWZpZXJzIGFuZA0KPiA+PiArYXJndW1lbnRzIGJhbGFu Y2VkIGFzIGl0IGlzIGZvciBgRGVidWdNYWNyb0NoZWNrYCBwcmUtcHJvY2Vzc29yIG1hY3JvDQo+ ID4+IHN1YnN0aXR1dGlvbiBpcyB1c2VkLiBCeSBzZXBhcmF0aW5nIHRoZSBzdHJpbmcNCj4gPj4g K2Zyb20gdGhlIGFjdHVhbCBhcmd1bWVudHMgcHJvdmlkZWQsIGl0IGlzIG1vcmUgbGlrZWx5IGZv ciBkZXZlbG9wZXJzDQo+IHRvDQo+ID4+IG1ha2UgbWlzdGFrZXMgbWF0Y2hpbmcgcHJpbnQgc3Bl Y2lmaWVycyBpbg0KPiA+PiArdGhlIHN0cmluZyB0byB0aGUgYXJndW1lbnRzLiBJZiB1c2FnZSBp cyByZWFzb25hYmxlLCBhIHN0cmluZw0KPiA+PiBzdWJzdGl0dXRpb24gY2FuIGJlIHVzZWQgYXMg bmVlZGVkLg0KPiA+PiArDQo+ID4+ICsjIyMgSWdub3JpbmcgRXJyb3JzDQo+ID4+ICsNCj4gPj4g K1NpbmNlIHN1YnN0aXR1dGlvbiBmaWxlcyBwZXJmb3JtIGEgc3RyYWlnaHQgdGV4dHVhbCBzdWJz dGl0dXRpb24gaW4NCj4gPj4gbWFjcm9zIGRpc2NvdmVyZWQsIGl0IGNhbiBiZSB1c2VkIHRvIHJl cGxhY2UNCj4gPj4gK3Byb2JsZW1hdGljIHRleHQgd2l0aCB0ZXh0IHRoYXQgcGFzc2VzIGFsbG93 aW5nIGVycm9ycyB0byBiZSBpZ25vcmVkLg0KPiA+PiArDQo+ID4+ICsjIyBQeXRob24gVmVyc2lv biBSZXF1aXJlZCAoMy4xMCkNCj4gPj4gKw0KPiA+PiArVGhpcyBzY3JpcHQgaXMgd3JpdHRlbiB0 byB0YWtlIGFkdmFudGFnZSBvZiBuZXcgUHl0aG9uIGxhbmd1YWdlDQo+IGZlYXR1cmVzDQo+ID4+ IGluIFB5dGhvbiAzLjEwLiBJZiB5b3UgYXJlIG5vdCB1c2luZyBQeXRob24NCj4gPj4gKzMuMTAg b3IgbGF0ZXIsIHlvdSBjYW46DQo+ID4+ICsNCj4gPj4gKyAgMS4gVXBncmFkZSB0byBQeXRob24g My4xMCBvciBncmVhdGVyDQo+ID4+ICsgIDIuIFJ1biB0aGlzIHNjcmlwdCBpbiBhIFt2aXJ0dWFs DQo+ID4+IGVudmlyb25tZW50XShodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL3R1dG9yaWFsL3Zl bnYuaHRtbCkgd2l0aCBQeXRob24NCj4gPj4gMy4xMA0KPiA+PiArICAgICBvciBncmVhdGVyDQo+ ID4+ICsgIDMuIEN1c3RvbWl6ZSB0aGUgc2NyaXB0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggeW91 ciBQeXRob24gdmVyc2lvbg0KPiA+PiArDQo+ID4+ICtUaGVzZSBhcmUgbGlzdGVkIGluIG9yZGVy IG9mIHJlY29tbWVuZGF0aW9uLiAqKigxKSoqIGlzIHRoZSBzaW1wbGVzdA0KPiA+PiBvcHRpb24g YW5kIHdpbGwgdXBncmFkZSB5b3VyIGVudmlyb25tZW50IHRvIGENCj4gPj4gK25ld2VyLCBzYWZl ciwgYW5kIGJldHRlciBQeXRob24gZXhwZXJpZW5jZS4gKiooMikqKiBpcyB0aGUgc2ltcGxlc3QN Cj4gPj4gYXBwcm9hY2ggdG8gaXNvbGF0ZSBkZXBlbmRlbmNpZXMgdG8gd2hhdCBpcyBuZWVkZWQN Cj4gPj4gK3RvIHJ1biB0aGlzIHNjcmlwdCB3aXRob3V0IGltcGFjdGluZyB0aGUgcmVzdCBvZiB5 b3VyIHN5c3RlbQ0KPiA+PiBlbnZpcm9ubWVudC4gKiooMykqKiBjcmVhdGVzIGEgb25lLW9mZiBm b3JrIG9mIHRoZSBzY3JpcHQNCj4gPj4gK3RoYXQsIGJ5IG5hdHVyZSwgaGFzIGEgbGltaXRlZCBs aWZlc3BhbiBhbmQgd2lsbCBtYWtlIGFjY2VwdGluZw0KPiBmdXR1cmUNCj4gPj4gdXBkYXRlcyBk aWZmaWN1bHQgYnV0IGNhbiBiZSBkb25lIHdpdGggcmVsYXRpdmVseQ0KPiA+PiArbWluaW1hbCBl ZmZvcnQgYmFjayB0byByZWNlbnQgUHl0aG9uIDMgcmVsZWFzZXMuDQo+ID4+IGRpZmYgLS1naXQg YS8ucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svdGVzdHMvRGVidWdNYWNyb0RhdGFTZXQu cHkNCj4gPj4gYi8ucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svdGVzdHMvRGVidWdNYWNy b0RhdGFTZXQucHkNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAw MDAwMDAwLi45ODYyOWJiMjMzMzMNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi8ucHl0 b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svdGVzdHMvRGVidWdNYWNyb0RhdGFTZXQucHkNCj4g Pj4gQEAgLTAsMCArMSw2NzQgQEANCj4gPj4gKyMgQGZpbGUgRGVidWdNYWNyb0RhdGFTZXQucHkN Cj4gPj4gKyMNCj4gPj4gKyMgQ29udGFpbnMgYSBkZWJ1ZyBtYWNybyB0ZXN0IGRhdGEgc2V0IGZv ciB2ZXJpZnlpbmcgZGVidWcgbWFjcm9zIGFyZQ0KPiA+PiArIyByZWNvZ25pemVkIGFuZCBwYXJz ZWQgcHJvcGVybHkuDQo+ID4+ICsjDQo+ID4+ICsjIFRoaXMgZGF0YSBpcyBhdXRvbWF0aWNhbGx5 IGNvbnZlcnRlZCBpbnRvIHRlc3QgY2FzZXMuIEp1c3QgYWRkIHRoZQ0KPiBuZXcNCj4gPj4gKyMg ZGF0YSBvYmplY3QgaGVyZSBhbmQgcnVuIHRoZSB0ZXN0cy4NCj4gPj4gKyMNCj4gPj4gKyMgQ29w eXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ID4+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+ ICsjIw0KPiA+PiArDQo+ID4+ICtmcm9tIC5NYWNyb1Rlc3QgaW1wb3J0IChOb1NwZWNpZmllck5v QXJndW1lbnRNYWNyb1Rlc3QsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBFcXVhbFNw ZWNpZmllckVxdWFsQXJndW1lbnRNYWNyb1Rlc3QsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICBNb3JlU3BlY2lmaWVyc1RoYW5Bcmd1bWVudHNNYWNyb1Rlc3QsDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICBMZXNzU3BlY2lmaWVyc1RoYW5Bcmd1bWVudHNNYWNyb1Rlc3QsDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBJZ25vcmVkU3BlY2lmaWVyc01hY3JvVGVzdCwN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0LA0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgQ29kZVNuaXBwZXRNYWNyb1Rlc3QpDQo+ID4+ ICsNCj4gPj4gKw0KPiA+PiArIyBJZ25vcmUgZmxha2U4IGxpbnRlciBlcnJvcnMgZm9yIGxpbmVz IHRoYXQgYXJlIHRvbyBsb25nIChFNTAxKQ0KPiA+PiArIyBmbGFrZTg6IG5vcWE6IEU1MDENCj4g Pj4gKw0KPiA+PiArIyBEYXRhIFNldCBvZiBERUJVRyBtYWNyb3MgYW5kIGV4cGVjdGVkIHJlc3Vs dHMuDQo+ID4+ICsjIG1hY3JvOiBBIHN0cmluZyByZXByZXNlbnRpbmcgYSBERUJVRyBtYWNyby4N Cj4gPj4gKyMgcmVzdWx0OiBBIHR1cGxlIHdpdGggdGhlIGZvbGxvd2luZyB2YWx1ZSByZXByZXNl bnRhdGlvbnMuDQo+ID4+ICsjICAgICAgICAgWzBdOiBDb3VudCBvZiB0b3RhbCBmb3JtYXR0aW5n IGVycm9ycw0KPiA+PiArIyAgICAgICAgIFsxXTogQ291bnQgb2YgcHJpbnQgc3BlY2lmaWVycyBm b3VuZA0KPiA+PiArIyAgICAgICAgIFsyXTogQ291bnQgb2YgbWFjcm8gYXJndW1lbnRzIGZvdW5k DQo+ID4+ICtERUJVR19NQUNST1MgPSBbDQo+ID4+ICsNCj4gPj4gIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ID4+ ICsgICAgIyBTZWN0aW9uOiBObyBQcmludCBTcGVjaWZpZXJzIE5vIEFyZ3VtZW50cw0KPiA+PiAr DQo+ID4+ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIw0KPiA+PiArICAgIE5vU3BlY2lmaWVyTm9Bcmd1bWVudE1hY3Jv VGVzdCgNCj4gPj4gKyAgICAgICAgcicnLA0KPiA+PiArICAgICAgICAoMCwgMCwgMCkNCj4gPj4g KyAgICApLA0KPiA+PiArICAgIE5vU3BlY2lmaWVyTm9Bcmd1bWVudE1hY3JvVGVzdCgNCj4gPj4g KyAgICAgICAgcidERUJVRyAoKERFQlVHX0VSUk9SLCAiXFwiKSk7JywNCj4gPj4gKyAgICAgICAg KDAsIDAsIDApDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBOb1NwZWNpZmllck5vQXJndW1lbnRN YWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19FVkVOVCwgIiIpKTsnLA0K PiA+PiArICAgICAgICAoMCwgMCwgMCkNCj4gPj4gKyAgICApLA0KPiA+PiArICAgIE5vU3BlY2lm aWVyTm9Bcmd1bWVudE1hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0VW RU5ULCAiXG4iKSk7JywNCj4gPj4gKyAgICAgICAgKDAsIDAsIDApDQo+ID4+ICsgICAgKSwNCj4g Pj4gKyAgICBOb1NwZWNpZmllck5vQXJndW1lbnRNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHIn REVCVUcgKChERUJVR19FVkVOVCwNCj4gIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxu IikpOycsDQo+ID4+ICsgICAgICAgICgwLCAwLCAwKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAg Tm9TcGVjaWZpZXJOb0FyZ3VtZW50TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgo REVCVUdfRVZFTlQsICJHQ0Q6SW5pdGlhbCBHQ0QgTWVtb3J5IFNwYWNlDQo+IE1hcFxuIikpOycs DQo+ID4+ICsgICAgICAgICgwLCAwLCAwKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAgTm9TcGVj aWZpZXJOb0FyZ3VtZW50TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdf R0NELCAiR0NEOkluaXRpYWwgR0NEIE1lbW9yeSBTcGFjZQ0KPiBNYXBcbiIpKTsnLA0KPiA+PiAr ICAgICAgICAoMCwgMCwgMCkNCj4gPj4gKyAgICApLA0KPiA+PiArICAgIE5vU3BlY2lmaWVyTm9B cmd1bWVudE1hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0lORk8sICIg ICBSZXR1bmluZyBUaW1lckNudCBEaXNhYmxlZFxuIikpOycsDQo+ID4+ICsgICAgICAgICgwLCAw LCAwKQ0KPiA+PiArICAgICksDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4g Pj4gKyAgICAjIFNlY3Rpb246IEVxdWFsIFByaW50IFNwZWNpZmllcnMgdG8gQXJndW1lbnRzDQo+ ID4+ICsNCj4gPj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ID4+ICsgICAgRXF1YWxTcGVjaWZpZXJFcXVhbEFy Z3VtZW50TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfSU5GTywgIiVk IiwgTnVtYmVyKSk7JywNCj4gPj4gKyAgICAgICAgKDAsIDEsIDEpDQo+ID4+ICsgICAgKSwNCj4g Pj4gKyAgICBFcXVhbFNwZWNpZmllckVxdWFsQXJndW1lbnRNYWNyb1Rlc3QoDQo+ID4+ICsgICAg ICAgIHInREVCVUcgKChERUJVR19CTEtJTywNCj4gIk5vckZsYXNoQmxvY2tJb1Jlc2V0KE1lZGlh SWQ9MHgleClcbiIsDQo+ID4+IFRoaXMtPk1lZGlhLT5NZWRpYUlkKSk7JywNCj4gPj4gKyAgICAg ICAgKDAsIDEsIDEpDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBFcXVhbFNwZWNpZmllckVxdWFs QXJndW1lbnRNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19JTkZPLCAi ICAgUmV0dW5pbmcgVGltZXJDbnQgJWRzZWNvbmRzXG4iLCAyICoNCj4gPj4gKENhcGFiaWxpdHkt PlRpbWVyQ291bnQgLSAxKSkpOycsDQo+ID4+ICsgICAgICAgICgwLCAxLCAxKQ0KPiA+PiArICAg ICksDQo+ID4+ICsgICAgRXF1YWxTcGVjaWZpZXJFcXVhbEFyZ3VtZW50TWFjcm9UZXN0KA0KPiA+ PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfRVJST1IsICJVc2JFbnVtZXJhdGVOZXdEZXY6IGZh aWxlZCB0byByZXNldA0KPiBwb3J0DQo+ID4+ICVkIC0gJXJcbiIsIFBvcnQsIFN0YXR1cykpOycs DQo+ID4+ICsgICAgICAgICgwLCAyLCAyKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAgRXF1YWxT cGVjaWZpZXJFcXVhbEFyZ3VtZW50TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgo REVCVUdfRVJST1IsICJVc2JFbnVtZXJhdGVOZXdEZXY6IGZhaWxlZCB0byByZXNldA0KPiBwb3J0 DQo+ID4+ICVkIC0gJXJcbiIsIFBvcnQsIFN0YXR1cykpOycsDQo+ID4+ICsgICAgICAgICgwLCAy LCAyKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAgRXF1YWxTcGVjaWZpZXJFcXVhbEFyZ3VtZW50 TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfSU5GTywgIkZpbmQgR1BU IFBhcnRpdGlvbiBbMHglbHgiLA0KPiA+PiBQYXJ0aXRpb25FbnRyeUJ1ZmZlcltJbmRleF0uU3Rh cnRpbmdMQkEpKTsnLA0KPiA+PiArICAgICAgICAoMCwgMSwgMSkNCj4gPj4gKyAgICApLA0KPiA+ PiArICAgIEVxdWFsU3BlY2lmaWVyRXF1YWxBcmd1bWVudE1hY3JvVGVzdCgNCj4gPj4gKyAgICAg ICAgcidERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbGVkIHRvIGxvY2F0ZQ0KPiA+PiBnRWRraWlC b290TG9nbzJQcm90b2NvbEd1aWQgU3RhdHVzID0gJXIuICBObyBQcm9ncmVzcyBiYXIgc3VwcG9y dC4NCj4gXG4iLA0KPiA+PiBTdGF0dXMpKTsnLA0KPiA+PiArICAgICAgICAoMCwgMSwgMSkNCj4g Pj4gKyAgICApLA0KPiA+PiArICAgIEVxdWFsU3BlY2lmaWVyRXF1YWxBcmd1bWVudE1hY3JvVGVz dCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0xPQUQsICIgKCVzKSIsIEltYWdlLT5F eGl0RGF0YSkpOycsDQo+ID4+ICsgICAgICAgICgwLCAxLCAxKQ0KPiA+PiArICAgICksDQo+ID4+ ICsgICAgRXF1YWxTcGVjaWZpZXJFcXVhbEFyZ3VtZW50TWFjcm9UZXN0KA0KPiA+PiArICAgICAg ICByJ0RFQlVHICgoREVCVUdfRElTUEFUQ0gsICIlYSVyJXMlbHglcCVjJWciLCBBc2NpaSwgU3Rh dHVzLA0KPiA+PiBVbmljb2RlLCBIZXgsIFBvaW50ZXIsIENoYXJhY3RlciwgR3VpZCkpOycsDQo+ ID4+ICsgICAgICAgICgwLCA3LCA3KQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAgRXF1YWxTcGVj aWZpZXJFcXVhbEFyZ3VtZW50TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVC VUdfSU5GTywgIkxvYWRDYXBzdWxlT25EaXNrIC0NCj4gTG9hZFJlY292ZXJ5Q2Fwc3VsZQ0KPiA+ PiAoJWQpIC0gJXJcbiIsIENhcHN1bGVJbnN0YW5jZSwgU3RhdHVzKSk7JywNCj4gPj4gKyAgICAg ICAgKDAsIDIsIDIpDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBFcXVhbFNwZWNpZmllckVxdWFs QXJndW1lbnRNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19ESVNQQVRD SCwNCj4gPj4gIiVhJXIlcyVseCVwJWMlZyVhJXIlcyVseCVwJWMlZyVhJXIlcyVseCVwJWMlZyVh JXIlcyVseCVwJWMlZyIsIEFzY2lpLA0KPiA+PiBTdGF0dXMsIFVuaWNvZGUsIEhleCwgUG9pbnRl ciwgQ2hhcmFjdGVyLCBHdWlkLCBBc2NpaSwgU3RhdHVzLA0KPiBVbmljb2RlLA0KPiA+PiBIZXgs IFBvaW50ZXIsIENoYXJhY3RlciwgR3VpZCwgQXNjaWksIFN0YXR1cywgVW5pY29kZSwgSGV4LCBQ b2ludGVyLA0KPiA+PiBDaGFyYWN0ZXIsIEd1aWQsIEFzY2lpLCBTdGF0dXMsIFVuaWNvZGUsIEhl eCwgUG9pbnRlciwgQ2hhcmFjdGVyLA0KPiA+PiBHdWlkKSk7JywNCj4gPj4gKyAgICAgICAgKDAs IDI4LCAyOCkNCj4gPj4gKyAgICApLA0KPiA+PiArDQo+ID4+ICsNCj4gPj4gIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj DQo+ID4+ICsgICAgIyBTZWN0aW9uOiBNb3JlIFByaW50IFNwZWNpZmllcnMgVGhhbiBBcmd1bWVu dHMNCj4gPj4gKw0KPiA+PiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPj4gKyAgICBNb3JlU3BlY2lmaWVyc1Ro YW5Bcmd1bWVudHNNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19CTEtJ TywNCj4gIk5vckZsYXNoQmxvY2tJb1JlYWRCbG9ja3MoTWVkaWFJZD0weCV4LA0KPiA+PiBMYmE9 JWxkLCBCdWZmZXJTaXplPTB4JXggYnl0ZXMgKCVkIGtCKSwgQnVmZmVyUHRyIEAgMHglMDh4KVxu IiwNCj4gTWVkaWFJZCwNCj4gPj4gTGJhLCBCdWZmZXJTaXplSW5CeXRlcywgQnVmZmVyKSk7JywN Cj4gPj4gKyAgICAgICAgKDEsIDUsIDQpDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBNb3JlU3Bl Y2lmaWVyc1RoYW5Bcmd1bWVudHNNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChE RUJVR19JTkZPLCAiJWE6IFJlcXVlc3Q9JXNcbiIsIF9fZnVuY19fKSk7JywNCj4gPj4gKyAgICAg ICAgKDEsIDIsIDEpDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBNb3JlU3BlY2lmaWVyc1RoYW5B cmd1bWVudHNNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19FUlJPUiwg IiVhOiBJbnZhbGlkIHJlcXVlc3QgZm9ybWF0ICVkIGZvcg0KPiAlZFxuIiwNCj4gPj4gQ2VydEZv cm1hdCwgQ2VydFJlcXVlc3QpKTsnLA0KPiA+PiArICAgICAgICAoMSwgMywgMikNCj4gPj4gKyAg ICApLA0KPiA+PiArDQo+ID4+ICsNCj4gPj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ID4+ICsgICAgIyBTZWN0 aW9uOiBMZXNzIFByaW50IFNwZWNpZmllcnMgVGhhbiBBcmd1bWVudHMNCj4gPj4gKw0KPiA+PiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMNCj4gPj4gKyAgICBMZXNzU3BlY2lmaWVyc1RoYW5Bcmd1bWVudHNNYWNyb1Rl c3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19JTkZPLCAiRmluZCBHUFQgUGFydGl0 aW9uIFsweCVseCIsDQo+ID4+IFBhcnRpdGlvbkVudHJ5QnVmZmVyW0luZGV4XS5TdGFydGluZ0xC QSwgQmxvY2tEZXZQdHItPkxhc3RCbG9jaykpOycsDQo+ID4+ICsgICAgICAgICgxLCAxLCAyKQ0K PiA+PiArICAgICksDQo+ID4+ICsgICAgTGVzc1NwZWNpZmllcnNUaGFuQXJndW1lbnRzTWFjcm9U ZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfSU5GTywgIiAgIFJldHVuaW5nIFRp bWVyQ250IERpc2FibGVkXG4iLCAyICoNCj4gPj4gKENhcGFiaWxpdHktPlRpbWVyQ291bnQgLSAx KSkpOycsDQo+ID4+ICsgICAgICAgICgxLCAwLCAxKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAg TGVzc1NwZWNpZmllcnNUaGFuQXJndW1lbnRzTWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RF QlVHICgoREVCVUdfRVJST1IsICJGYWlsZWQgdG8gbG9jYXRlDQo+ID4+IGdFZGtpaUJvb3RMb2dv MlByb3RvY29sR3VpZC4gIE5vIFByb2dyZXNzIGJhciBzdXBwb3J0LiBcbiIsDQo+IFN0YXR1cykp OycsDQo+ID4+ICsgICAgICAgICgxLCAwLCAxKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAgTGVz c1NwZWNpZmllcnNUaGFuQXJndW1lbnRzTWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVH ICgoREVCVUdfRVJST1IsICJVc2JFbnVtZXJhdGVQb3J0OiBDcml0aWNhbCBPdmVyDQo+ID4+IEN1 cnJlbnRcbiIsIFBvcnQpKTsnLA0KPiA+PiArICAgICAgICAoMSwgMCwgMSkNCj4gPj4gKyAgICAp LA0KPiA+PiArICAgIExlc3NTcGVjaWZpZXJzVGhhbkFyZ3VtZW50c01hY3JvVGVzdCgNCj4gPj4g KyAgICAgICAgcidERUJVRyAoKERFQlVHX0VSUk9SLCAiW1RQTTJdIFN1Ym1pdCBQUCBSZXF1ZXN0 IGZhaWx1cmUhDQo+IFN5bmMNCj4gPj4gUFBSUS9QUFJNIHdpdGggUFAgdmFyaWFibGUuXG4iLCBT dGF0dXMpKTsnLA0KPiA+PiArICAgICAgICAoMSwgMCwgMSkNCj4gPj4gKyAgICApLA0KPiA+PiAr ICAgIExlc3NTcGVjaWZpZXJzVGhhbkFyZ3VtZW50c01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAg cidERUJVRyAoKERFQlVHX0VSUk9SLCAiOiBGYWlsZWQgdG8gdXBkYXRlIGRlYnVnIGxvZyBpbmRl eA0KPiBmaWxlOg0KPiA+PiAlciAhXG4iLCBfX2Z1bmNfXywgU3RhdHVzKSk7JywNCj4gPj4gKyAg ICAgICAgKDEsIDEsIDIpDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBMZXNzU3BlY2lmaWVyc1Ro YW5Bcmd1bWVudHNNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19FUlJP UiwgIiVhIC0gRmFpbGVkIHRvIGV4dHJhY3Qgbm9uY2UgZnJvbQ0KPiBwb2xpY3kNCj4gPj4gYmxv YiB3aXRoIHJldHVybiBzdGF0dXMgJXJcbiIsIF9fZnVuY19fLA0KPiA+PiBnUG9saWN5QmxvYkZp ZWxkTmFtZVtNRkNJX1BPTElDWV9UQVJHRVRfTk9OQ0VdLCBTdGF0dXMpKTsnLA0KPiA+PiArICAg ICAgICAoMSwgMiwgMykNCj4gPj4gKyAgICApLA0KPiA+PiArDQo+ID4+ICsNCj4gPj4gIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjDQo+ID4+ICsgICAgIyBTZWN0aW9uOiBNYWNyb3Mgd2l0aCBJZ25vcmVkIFNwZWNpZmll cnMNCj4gPj4gKw0KPiA+PiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPj4gKyAgICBJZ25vcmVkU3BlY2lmaWVy c01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0lOSVQsICIlSEVtdU9w ZW5CbG9jazogb3BlbmVkICVhJU5cbiIsDQo+IFByaXZhdGUtDQo+ID4+PiBGaWxlbmFtZSkpOycs DQo+ID4+ICsgICAgICAgICgwLCAxLCAxKQ0KPiA+PiArICAgICksDQo+ID4+ICsgICAgSWdub3Jl ZFNwZWNpZmllcnNNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19MT0FE LCAiICglaHMpIiwgSW1hZ2UtPkV4aXREYXRhKSk7JywNCj4gPj4gKyAgICAgICAgKDAsIDEsIDEp DQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBJZ25vcmVkU3BlY2lmaWVyc01hY3JvVGVzdCgNCj4g Pj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0xPQUQsICIlSCVzJU46IFVua25vd24gZmxhZyAt DQo+ICcnJUglcyVOJydcclxuIiwNCj4gPj4gU3RyaW5nMSwgU3RyaW5nMikpOycsDQo+ID4+ICsg ICAgICAgICgwLCAyLCAyKQ0KPiA+PiArICAgICksDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMNCj4gPj4gKyAgICAjIFNlY3Rpb246IE1hY3JvcyB3aXRoIFNwZWNpYWwgUGFyc2lu ZyBTY2VuYXJpb3MNCj4gPj4gKw0KPiA+PiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPj4gKyAgICBTcGVjaWFs UGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0lORk8sICIg RmlsZSBOYW1lOiAlYVxuIiwgIkRvY3VtZW50LnR4dCIpKScsDQo+ID4+ICsgICAgICAgICgwLCAx LCAxKSwNCj4gPj4gKyAgICAgICAgIk1hbGZvcm1hdHRlZCBNYWNybyAtIE1pc3NpbmcgU2VtaWNv bG9uIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ ID4+ICsgICAgICAgIHInREVCVUcgKERFQlVHX0lORk8sICIgRmlsZSBOYW1lOiAlYVxuIiwgIkRv Y3VtZW50LnR4dCIpOycsDQo+ID4+ICsgICAgICAgICgwLCAwLCAwKSwNCj4gPj4gKyAgICAgICAg Ik1hbGZvcm1hdHRlZCBNYWNybyAtIE1pc3NpbmcgVHdvIFBhcmVudGhlc2VzIg0KPiA+PiArICAg ICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHIn REVCVUcgKChERUJVR19JTkZPLCAiJWFcbiIsICJSZW1vdmFibGUgU2xvdCIpKTsnLA0KPiA+PiAr ICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJTaW5nbGUgU3RyaW5nIEFyZ3VtZW50 IGluIFF1b3RlcyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9U ZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfSU5GTywgIiAgIFNEUjUwIFR1bmlu ZyAgICAgICVhXG4iLA0KPiBDYXBhYmlsaXR5LQ0KPiA+Pj4gVHVuaW5nU0RSNTAgPyAiVFJVRSIg OiAiRkFMU0UiKSk7JywNCj4gPj4gKyAgICAgICAgKDAsIDEsIDEpLA0KPiA+PiArICAgICAgICAi VGVybmFyeSBPcGVyYXRvciBQcmVzZW50Ig0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lh bFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19JTkZPLCAi ICAgU0RSNTAgVHVuaW5nICAgICAgJWFcbiIsDQo+IENhcGFiaWxpdHktDQo+ID4+PiBUdW5pbmdT RFI1MCA/ICJUUlVFIiA6ICJGQUxTRSIpKTsnLA0KPiA+PiArICAgICAgICAoMCwgMSwgMSksDQo+ ID4+ICsgICAgICAgICJUZXJuYXJ5IE9wZXJhdG9yIFByZXNlbnQiDQo+ID4+ICsgICAgKSwNCj4g Pj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcicnJw0KPiA+ PiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiXFwiKSk7DQo+ID4+ICsgICAgICAgIERF QlVHICgoREVCVUdfRVJST1IsICJcXCIpKTsNCj4gPj4gKyAgICAgICAgREVCVUcgKChERUJVR19F UlJPUiwgIlxcIikpOw0KPiA+PiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiXFwiKSk7 DQo+ID4+ICsgICAgICAgICcnJywNCj4gPj4gKyAgICAgICAgKDAsIDAsIDApLA0KPiA+PiArICAg ICAgICAiTXVsdGlwbGUgTWFjcm9zIHdpdGggYW4gRXNjYXBlZCBDaGFyYWN0ZXIiDQo+ID4+ICsg ICAgKSwNCj4gPj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAg cicnJw0KPiA+PiArICAgICAgICBERUJVRyAoKA0KPiA+PiArICAgICAgICAgIERFQlVHX0lORk8s DQo+ID4+ICsgICAgICAgICAgIlVzYkVudW1lcmF0ZU5ld0RldjogZGV2aWNlIHVzZXMgdHJhbnNs YXRvciAoJWQsICVkKVxuIiwNCj4gPj4gKyAgICAgICAgICBDaGlsZC0+VHJhbnNsYXRvci5UcmFu c2xhdG9ySHViQWRkcmVzcywNCj4gPj4gKyAgICAgICAgICBDaGlsZC0+VHJhbnNsYXRvci5UcmFu c2xhdG9yUG9ydE51bWJlcg0KPiA+PiArICAgICAgICAgICkpOw0KPiA+PiArICAgICAgICAnJycs DQo+ID4+ICsgICAgICAgICgwLCAyLCAyKSwNCj4gPj4gKyAgICAgICAgIk11bHRpLWxpbmUgTWFj cm8iDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4g Pj4gKyAgICAgICAgcicnJw0KPiA+PiArICAgICAgICBERUJVRyAoKA0KPiA+PiArICAgICAgICAg IERFQlVHX0lORk8sDQo+ID4+ICsgICAgICAgICAgIlVzYkVudW1lcmF0ZVBvcnQ6IHBvcnQgJWQg c3RhdGUgLSAlMDJ4LCBjaGFuZ2UgLSAlMDJ4IG9uDQo+ID4+ICVwXG4iLA0KPiA+PiArICAgICAg ICAgIFBvcnQsDQo+ID4+ICsgICAgICAgICAgUG9ydFN0YXRlLlBvcnRTdGF0dXMsDQo+ID4+ICsg ICAgICAgICAgUG9ydFN0YXRlLlBvcnRDaGFuZ2VTdGF0dXMsDQo+ID4+ICsgICAgICAgICAgSHVi SWYNCj4gPj4gKyAgICAgICAgICApKTsNCj4gPj4gKyAgICAgICAgJycnLA0KPiA+PiArICAgICAg ICAoMCwgNCwgNCksDQo+ID4+ICsgICAgICAgICJNdWx0aS1saW5lIE1hY3JvIg0KPiA+PiArICAg ICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHIn JycNCj4gPj4gKyAgICAgICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgICBERUJVR19FUlJPUiwN Cj4gPj4gKyAgICAgICAgICAiJWE6JWE6IGZhaWxlZCB0byBhbGxvY2F0ZSByZXNlcnZlZCBwYWdl czogIg0KPiA+PiArICAgICAgICAgICJCdWZmZXJTaXplPSVMdSBMb2FkRmlsZT1cIiVzXCIgRmls ZVBhdGg9XCIlc1wiXG4iLA0KPiA+PiArICAgICAgICAgIGdFZmlDYWxsZXJCYXNlTmFtZSwNCj4g Pj4gKyAgICAgICAgICBfX2Z1bmNfXywNCj4gPj4gKyAgICAgICAgICAoVUlOVDY0KUJ1ZmZlclNp emUsDQo+ID4+ICsgICAgICAgICAgTG9hZEZpbGVUZXh0LA0KPiA+PiArICAgICAgICAgIEZpbGVU ZXh0DQo+ID4+ICsgICAgICAgICAgKSk7DQo+ID4+ICsgICAgICAgICcnJywNCj4gPj4gKyAgICAg ICAgKDAsIDUsIDUpLA0KPiA+PiArICAgICAgICAiTXVsdGktbGluZSBNYWNybyB3aXRoIENvbXBp bGVyIFN0cmluZyBDb25jYXRlbmF0aW9uIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lh bFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4gKyAgICAgICAgREVC VUcgKCgNCj4gPj4gKyAgICAgICAgICBERUJVR19FUlJPUiwNCj4gPj4gKyAgICAgICAgICAiRVJS T1I6IEdURFQ6IEdUIEJsb2NrIEZyYW1lIEluZm8gU3RydWN0dXJlcyAlZCBhbmQgJWQgaGF2ZQ0K PiA+PiB0aGUgc2FtZSAiIFwNCj4gPj4gKyAgICAgICAgICAiZnJhbWUgbnVtYmVyOiAweCV4Llxu IiwNCj4gPj4gKyAgICAgICAgICBJbmRleDEsDQo+ID4+ICsgICAgICAgICAgSW5kZXgyLA0KPiA+ PiArICAgICAgICAgIEZyYW1lTnVtYmVyMQ0KPiA+PiArICAgICAgICAgICkpOw0KPiA+PiArICAg ICAgICAnJycsDQo+ID4+ICsgICAgICAgICgwLCAzLCAzKSwNCj4gPj4gKyAgICAgICAgIk11bHRp LWxpbmUgTWFjcm8gd2l0aCBCYWNrc2xhc2ggU3RyaW5nIENvbmNhdGVuYXRpb24iDQo+ID4+ICsg ICAgKSwNCj4gPj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAg cicnJw0KPiA+PiArICAgICAgICBERUJVRyAoKA0KPiA+PiArICAgICAgICAgIERFQlVHX0VSUk9S LA0KPiA+PiArICAgICAgICAgICJFUlJPUjogUFBUVDogVG9vIG1hbnkgcHJpdmF0ZSByZXNvdXJj ZXMuIENvdW50ID0gJWQuICIgXA0KPiA+PiArICAgICAgICAgICJNYXhpbXVtIHN1cHBvcnRlZCBQ cm9jZXNzb3IgTm9kZSBzaXplIGV4Y2VlZGVkLiAiIFwNCj4gPj4gKyAgICAgICAgICAiVG9rZW4g PSAlcC4gU3RhdHVzID0gJXJcbiIsDQo+ID4+ICsgICAgICAgICAgUHJvY0luZm9Ob2RlLT5Ob09m UHJpdmF0ZVJlc291cmNlcywNCj4gPj4gKyAgICAgICAgICBQcm9jSW5mb05vZGUtPlBhcmVudFRv a2VuLA0KPiA+PiArICAgICAgICAgIFN0YXR1cw0KPiA+PiArICAgICAgICAgICkpOw0KPiA+PiAr ICAgICAgICAnJycsDQo+ID4+ICsgICAgICAgICgwLCAzLCAzKSwNCj4gPj4gKyAgICAgICAgIk11 bHRpLWxpbmUgTWFjcm8gd2l0aCBCYWNrc2xhc2ggU3RyaW5nIENvbmNhdGVuYXRpb24iDQo+ID4+ ICsgICAgKSwNCj4gPj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAg ICAgcicnJw0KPiA+PiArICAgICAgICBERUJVRyAoKA0KPiA+PiArICAgICAgICAgIERFQlVHX1ZF UkJPU0UsDQo+ID4+ICsgICAgICAgICAgIiUgMjBhICUgMjBhICUgMjBhICUgMjBhXG4iLA0KPiA+ PiArICAgICAgICAgICJQaHlzaWNhbFN0YXJ0KDB4KSIsDQo+ID4+ICsgICAgICAgICAgIlBoeXNp Y2FsU2l6ZSgweCkiLA0KPiA+PiArICAgICAgICAgICJDcHVTdGFydCgweCkiLA0KPiA+PiArICAg ICAgICAgICJSZWdpb25TdGF0ZSgweCkiDQo+ID4+ICsgICAgICAgICAgKSk7DQo+ID4+ICsgICAg ICAgICcnJywNCj4gPj4gKyAgICAgICAgKDAsIDQsIDQpLA0KPiA+PiArICAgICAgICAiTXVsdGkt bGluZSBNYWNybyB3aXRoIFF1b3RlZCBTdHJpbmcgQXJndW1lbnRzIg0KPiA+PiArICAgICksDQo+ ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4g Pj4gKyAgICAgICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgICBERUJVR19FUlJPUiwNCj4gPj4g KyAgICAgICAgICAiWGVuUHZCbGs6ICINCj4gPj4gKyAgICAgICAgICAiJWEgZXJyb3IgJWQgb24g JWEgYXQgc2VjdG9yICVMeCwgbnVtIGJ5dGVzICVMeFxuIiwNCj4gPj4gKyAgICAgICAgICBSZXNw b25zZS0+b3BlcmF0aW9uID09IEJMS0lGX09QX1JFQUQgPyAicmVhZCIgOiAid3JpdGUiLA0KPiA+ PiArICAgICAgICAgIFN0YXR1cywNCj4gPj4gKyAgICAgICAgICBJb0RhdGEtPkRldi0+Tm9kZU5h bWUsDQo+ID4+ICsgICAgICAgICAgKFVJTlQ2NClJb0RhdGEtPlNlY3RvciwNCj4gPj4gKyAgICAg ICAgICAoVUlOVDY0KUlvRGF0YS0+U2l6ZQ0KPiA+PiArICAgICAgICAgICkpOw0KPiA+PiArICAg ICAgICAnJycsDQo+ID4+ICsgICAgICAgICgwLCA1LCA1KSwNCj4gPj4gKyAgICAgICAgIk11bHRp LWxpbmUgTWFjcm8gd2l0aCBUZXJuYXJ5IE9wZXJhdG9yIGFuZCBRdW90ZWQgU3RyaW5nDQo+ID4+ IEFyZ3VtZW50cyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9U ZXN0KA0KPiA+PiArICAgICAgICByJycnDQo+ID4+ICsgICAgICAgIERFQlVHICgoDQo+ID4+ICsg ICAgICAgICAgREVCVUdfRVJST1IsDQo+ID4+ICsgICAgICAgICAgIiVhOiBMYWJlbD1cIiVzXCIg T2xkUGFyZW50Tm9kZUlkPSVMdSBPbGROYW1lPVwiJWFcIiAiDQo+ID4+ICsgICAgICAgICAgIk5l d1BhcmVudE5vZGVJZD0lTHUgTmV3TmFtZT1cIiVhXCIgRXJybm89JWRcbiIsDQo+ID4+ICsgICAg ICAgICAgX19mdW5jX18sDQo+ID4+ICsgICAgICAgICAgVmlydGlvRnMtPkxhYmVsLA0KPiA+PiAr ICAgICAgICAgIE9sZFBhcmVudE5vZGVJZCwNCj4gPj4gKyAgICAgICAgICBPbGROYW1lLA0KPiA+ PiArICAgICAgICAgIE5ld1BhcmVudE5vZGVJZCwNCj4gPj4gKyAgICAgICAgICBOZXdOYW1lLA0K PiA+PiArICAgICAgICAgIENvbW1vblJlc3AuRXJyb3INCj4gPj4gKyAgICAgICAgICApKTsNCj4g Pj4gKyAgICAgICAgJycnLA0KPiA+PiArICAgICAgICAoMCwgNywgNyksDQo+ID4+ICsgICAgICAg ICJNdWx0aS1saW5lIE1hY3JvIHdpdGggRXNjYXBlZCBRdW90ZXMgYW5kIFN0cmluZw0KPiBDb25j YXRlbmF0aW9uIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rl c3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4gKyAgICAgICAgREVCVUcgKChERUJVR19XQVJO LCAiRmFpbGVkIHRvIHJldHJpZXZlDQo+IFZhcmlhYmxlOlwiTWVieERhdGFcIiwNCj4gPj4gU3Rh dHVzID0gJXJcbiIsIFN0YXR1cykpOw0KPiA+PiArICAgICAgICAnJycsDQo+ID4+ICsgICAgICAg ICgwLCAxLCAxKSwNCj4gPj4gKyAgICAgICAgIkVzY2FwZWQgUGFyZW50aGVzZXMgaW4gRGVidWcg TWVzc2FnZSINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0 KA0KPiA+PiArICAgICAgICByJycnDQo+ID4+ICsgICAgICAgIERFQlVHKChERUJVR19JTkZPLCAi JTBkICVzIiwgWGJCX2RkcjRbMV1bYmFua0JpdF1beG9yQml0XSwNCj4gPj4geG9yQml0ID09IChY YUJfTlVNX09GX0JJVFMtMSkgPyAiXSI6ICIsICIpKTsNCj4gPj4gKyAgICAgICAgJycnLA0KPiA+ PiArICAgICAgICAoMCwgMiwgMiksDQo+ID4+ICsgICAgICAgICJQYXJlbnRoZXNlcyBpbiBUZXJu YXJ5IE9wZXJhdG9yIEV4cHJlc3Npb24iDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBTcGVjaWFs UGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX0lORk8gfCBE RUJVR19FVkVOVCB8IERFQlVHX1dBUk4sICIgICAldVxuIiwNCj4gPj4gJlN0cnVjdHVyZS0+Qmxv Y2suVmFsdWUpKTsnLA0KPiA+PiArICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJN dWx0aXBsZSBQcmludCBTcGVjaWZpZXIgTGV2ZWxzIFByZXNlbnQiDQo+ID4+ICsgICAgKSwNCj4g Pj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAo KERFQlVHX1dBUk4sICIgICAlc1xuIiwgUmV0dXJuU3RyaW5nKCkpKTsnLA0KPiA+PiArICAgICAg ICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJGdW5jdGlvbiBDYWxsIEFyZ3VtZW50IE5vIFBh cmFtcyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0KA0K PiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfV0FSTiwgIiAgICVzXG4iLCBSZXR1cm5TdHJp bmcoJlBhcmFtMSkpKTsnLA0KPiA+PiArICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAg ICJGdW5jdGlvbiBDYWxsIEFyZ3VtZW50IDEgUGFyYW0iDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAg ICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVH X1dBUk4sICIgICAlc1xuIiwgUmV0dXJuU3RyaW5nKCZQYXJhbTEsDQo+ID4+IFBhcmFtMikpKTsn LA0KPiA+PiArICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJGdW5jdGlvbiBDYWxs IEFyZ3VtZW50IE11bHRpcGxlIFBhcmFtcyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNp YWxQYXJzaW5nTWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfV0FSTiwg IiAgICVzXG4iLCBSZXR1cm5TdHJpbmcoJlBhcmFtMSwNCj4gPj4gUmV0dXJuUGFyYW0oKSkpKTsn LA0KPiA+PiArICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJGdW5jdGlvbiBDYWxs IEFyZ3VtZW50IDItTGV2ZWwgRGVwdGggTm8gMm5kLUxldmVsIFBhcmFtIg0KPiA+PiArICAgICks DQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVC VUcgKChERUJVR19XQVJOLCAiICAgJXNcbiIsIFJldHVyblN0cmluZygmUGFyYW0xLA0KPiA+PiBS ZXR1cm5QYXJhbSgqUGFyYW0pKSkpOycsDQo+ID4+ICsgICAgICAgICgwLCAxLCAxKSwNCj4gPj4g KyAgICAgICAgIkZ1bmN0aW9uIENhbGwgQXJndW1lbnQgMi1MZXZlbCBEZXB0aCAxIDJuZC1MZXZl bCBQYXJhbSINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0 KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfV0FSTiwgIiAgICVzXG4iLCBSZXR1cm5T dHJpbmcoJlBhcmFtMSwNCj4gPj4gUmV0dXJuUGFyYW0oKlBhcmFtLCAmUGFyYW1OZXh0KSkpKTsn LA0KPiA+PiArICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJGdW5jdGlvbiBDYWxs IEFyZ3VtZW50IDItTGV2ZWwgRGVwdGggTXVsdGlwbGUgMm5kLUxldmVsDQo+IFBhcmFtIg0KPiA+ PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAg ICAgIHInREVCVUcgKChERUJVR19XQVJOLCAiICAgJXNcbiIsIFJldHVyblN0cmluZygmUGFyYW0x LA0KPiA+PiBSZXR1cm5QYXJhbSgqUGFyYW0sIEdldFBhcmFtKDEsIDIsIDMpKSkpKTsnLA0KPiA+ PiArICAgICAgICAoMCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJGdW5jdGlvbiBDYWxsIEFyZ3Vt ZW50IDMtTGV2ZWwgRGVwdGggTXVsdGlwbGUgUGFyYW1zIg0KPiA+PiArICAgICksDQo+ID4+ICsg ICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJV R19XQVJOLCAiICAgJXNcbiIsIFJldHVyblN0cmluZygmUGFyYW0xLA0KPiA+PiBSZXR1cm5QYXJh bSgqUGFyYW0sIEdldFBhcmFtKDEsIDIsIDMpLCBOZXh0UGFyYW0pKSkpOycsDQo+ID4+ICsgICAg ICAgICgwLCAxLCAxKSwNCj4gPj4gKyAgICAgICAgIkZ1bmN0aW9uIENhbGwgQXJndW1lbnQgMy1M ZXZlbCBEZXB0aCBNdWx0aXBsZSBQYXJhbXMgd2l0aA0KPiBQYXJhbQ0KPiA+PiBBZnRlciBGdW5j dGlvbiBDYWxsIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rl c3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19XQVJOLCAiICAgJXMtJWFcbiIsIFJl dHVyblN0cmluZygmUGFyYW0xKSwNCj4gPj4gUmV0dXJuU3RyaW5nMigmUGFyYW1OKSkpOycsDQo+ ID4+ICsgICAgICAgICgwLCAyLCAyKSwNCj4gPj4gKyAgICAgICAgIk11bHRpcGxlIEZ1bmN0aW9u IENhbGwgQXJndW1lbnRzIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdN YWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJVR19XQVJOLCAiICAgJXNcbiIs IFJldHVyblN0cmluZygmUGFyYW0xKSwNCj4gPj4gUmV0dXJuU3RyaW5nMigmUGFyYW1OKSkpOycs DQo+ID4+ICsgICAgICAgICgxLCAxLCAyKSwNCj4gPj4gKyAgICAgICAgIk11bHRpcGxlIEZ1bmN0 aW9uIENhbGwgQXJndW1lbnRzIHdpdGggSW1iYWxhbmNlIg0KPiA+PiArICAgICksDQo+ID4+ICsg ICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInREVCVUcgKChERUJV R19XQVJOLCAiICAgJXMlc1xuIiwgKFJldHVyblN0cmluZygmUGFyYW0xKSksDQo+ID4+IChSZXR1 cm5TdHJpbmcyKCZQYXJhbU4pKSkpOycsDQo+ID4+ICsgICAgICAgICgwLCAyLCAyKSwNCj4gPj4g KyAgICAgICAgIk11bHRpcGxlIEZ1bmN0aW9uIENhbGwgQXJndW1lbnRzIFN1cnJvdW5kZWQgd2l0 aA0KPiBQYXJlbnRoZXNlcyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5n TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVHICgoREVCVUdfV0FSTiwgIiAlc1xuIiwN Cj4gPj4gKCgoKFJldHVyblN0cmluZygmUGFyYW0xKSkpKSkpKTsnLA0KPiA+PiArICAgICAgICAo MCwgMSwgMSksDQo+ID4+ICsgICAgICAgICJNdWx0aXBsZSBGdW5jdGlvbiBDYWxsIEFyZ3VtZW50 cyBTdXJyb3VuZGVkIHdpdGggTWFueQ0KPiA+PiBQYXJlbnRoZXNlcyINCj4gPj4gKyAgICApLA0K PiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJ0RFQlVH ICgoREVCVUdfV0FSTiwgIiIlQiUwOFglTjogJS00OGEgJVYqJWEqJU4iIiwNCj4gSGV4TnVtYmVy LA0KPiA+PiBSZXR1cm5TdHJpbmcoQXJyYXlbSW5kZXhdKSwgJkFzY2lpU3RyaW5nWzBdKSk7JywN Cj4gPj4gKyAgICAgICAgKDAsIDMsIDMpLA0KPiA+PiArICAgICAgICAiQ29tcGxleCBTdHJpbmcg UHJpbnQgU3BlY2lmaWVyIDEiDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBTcGVjaWFsUGFyc2lu Z01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVHX1dBUk4sICIweCUtOHg6 JUglcyVOICUgLTY0cyglNzMtLjczcyl7JWd9PCVIJQ0KPiAtDQo+ID4+IDcwcyVOPlxuLiAgIFNp emU6IDB4JS0xNnggKCUtLGQpIGJ5dGVzLlxuXG4iLCBIZXhOdW1iZXIsDQo+IEdldFVuaWNvZGVT dHJpbmcNCj4gPj4gKCksICZVbmljb2RlU3RyaW5nWzRdLCBVbmljb2RlU3RyaW5nMiwgJkd1aWQs IEFub3RoZXJVbmljb2RlU3RyaW5nLA0KPiA+PiBTdHJ1Y3QuU29tZVNpemUsIENvbW1hRGVjaW1h bFZhbHVlKSk7JywNCj4gPj4gKyAgICAgICAgKDAsIDgsIDgpLA0KPiA+PiArICAgICAgICAiTXVs dGlwbGUgQ29tcGxleCBQcmludCBTcGVjaWZpZXJzIDEiDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAg ICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgcidERUJVRyAoKERFQlVH X1dBUk4sICIweCUtOHg6JUglcyVOICUgLTY0cyglNzMtLjczcyl7JWd9PCVIJQ0KPiAtDQo+ID4+ IDcwcyVOJXI+XG4uICAgU2l6ZTogMHglLTE2eCAoJS0sZCkgYnl0ZXMuXG5cbiIsIEhleE51bWJl ciwNCj4gPj4gR2V0VW5pY29kZVN0cmluZyAoKSwgJlVuaWNvZGVTdHJpbmdbNF0sIFVuaWNvZGVT dHJpbmcyLCAmR3VpZCwNCj4gPj4gQW5vdGhlclVuaWNvZGVTdHJpbmcsIFN0cnVjdC5Tb21lU2l6 ZSwgQ29tbWFEZWNpbWFsVmFsdWUpKTsnLA0KPiA+PiArICAgICAgICAoMSwgOSwgOCksDQo+ID4+ ICsgICAgICAgICJNdWx0aXBsZSBDb21wbGV4IFByaW50IFNwZWNpZmllcnMgSW1iYWxhbmNlIDEi DQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4g KyAgICAgICAgcicnJw0KPiA+PiArICAgICAgICBERUJVRyAoKA0KPiA+PiArICAgICAgICAgIERF QlVHX0VSUk9SLA0KPiA+PiArICAgICAgICAgICgiJWE6IExhYmVsPVwiJXNcIiBDYW5vbmljYWxQ YXRobmFtZT1cIiVhXCIgRmlsZU5hbWU9XCIlc1wiDQo+ICINCj4gPj4gKyAgICAgICAgICAgIk9w ZW5Nb2RlPTB4JUx4IEF0dHJpYnV0ZXM9MHglTHg6IG5vbnNlbnNpY2FsIHJlcXVlc3QgdG8NCj4g Pj4gcG9zc2libHkgIg0KPiA+PiArICAgICAgICAgICAiY3JlYXRlIGEgZmlsZSBtYXJrZWQgcmVh ZC1vbmx5LCBmb3IgcmVhZC13cml0ZQ0KPiBhY2Nlc3NcbiIpLA0KPiA+PiArICAgICAgICAgIF9f ZnVuY19fLA0KPiA+PiArICAgICAgICAgIFZpcnRpb0ZzLT5MYWJlbCwNCj4gPj4gKyAgICAgICAg ICBWaXJ0aW9Gc0ZpbGUtPkNhbm9uaWNhbFBhdGhuYW1lLA0KPiA+PiArICAgICAgICAgIEZpbGVO YW1lLA0KPiA+PiArICAgICAgICAgIE9wZW5Nb2RlLA0KPiA+PiArICAgICAgICAgIEF0dHJpYnV0 ZXMNCj4gPj4gKyAgICAgICAgICApKTsNCj4gPj4gKyAgICAgICAgJycnLA0KPiA+PiArICAgICAg ICAoMCwgNiwgNiksDQo+ID4+ICsgICAgICAgICJNdWx0aS1MaW5lIHdpdGggUGFyZW50aGVzZXMg QXJvdW5kIERlYnVnIFN0cmluZyBDb21waWxlcg0KPiBTdHJpbmcNCj4gPj4gQ29uY2F0Ig0KPiA+ PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAg ICAgIHInJycNCj4gPj4gKyAgICAgICAgREVCVUcgKA0KPiA+PiArICAgICAgICAgIChERUJVR19J TkZPLA0KPiA+PiArICAgICAgICAgICIgJTAyeDogJTA0eCAlMDJ4LyUwMngvJTAyeCAlMDJ4LyUw MnggJTA0eCAlMDR4DQo+ICUwNHg6JTA0eFxuIiwNCj4gPj4gKyAgICAgICAgICAoVUlOVE4pSW5k ZXgsDQo+ID4+ICsgICAgICAgICAgKFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkJvb3RQcmlv cml0eSwNCj4gPj4gKyAgICAgICAgICAoVUlOVE4pTG9jYWxCYnNUYWJsZVtJbmRleF0uQnVzLA0K PiA+PiArICAgICAgICAgIChVSU5UTilMb2NhbEJic1RhYmxlW0luZGV4XS5EZXZpY2UsDQo+ID4+ ICsgICAgICAgICAgKFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkZ1bmN0aW9uLA0KPiA+PiAr ICAgICAgICAgIChVSU5UTilMb2NhbEJic1RhYmxlW0luZGV4XS5DbGFzcywNCj4gPj4gKyAgICAg ICAgICAoVUlOVE4pTG9jYWxCYnNUYWJsZVtJbmRleF0uU3ViQ2xhc3MsDQo+ID4+ICsgICAgICAg ICAgKFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkRldmljZVR5cGUsDQo+ID4+ICsgICAgICAg ICAgKFVJTlROKSooVUlOVDE2ICopJkxvY2FsQmJzVGFibGVbSW5kZXhdLlN0YXR1c0ZsYWdzLA0K PiA+PiArICAgICAgICAgIChVSU5UTilMb2NhbEJic1RhYmxlW0luZGV4XS5Cb290SGFuZGxlclNl Z21lbnQsDQo+ID4+ICsgICAgICAgICAgKFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkJvb3RI YW5kbGVyT2Zmc2V0LA0KPiA+PiArICAgICAgICAgIChVSU5UTikoKExvY2FsQmJzVGFibGVbSW5k ZXhdLk1mZ1N0cmluZ1NlZ21lbnQgPDwgNCkgKw0KPiA+PiBMb2NhbEJic1RhYmxlW0luZGV4XS5N ZmdTdHJpbmdPZmZzZXQpLA0KPiA+PiArICAgICAgICAgIChVSU5UTikoKExvY2FsQmJzVGFibGVb SW5kZXhdLkRlc2NTdHJpbmdTZWdtZW50IDw8IDQpICsNCj4gPj4gTG9jYWxCYnNUYWJsZVtJbmRl eF0uRGVzY1N0cmluZ09mZnNldCkpDQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAg JycnLA0KPiA+PiArICAgICAgICAoMSwgMTEsIDEzKSwNCj4gPj4gKyAgICAgICAgIk11bHRpLWxp bmUgTWFjcm8gd2l0aCBNYW55IEFyZ3VtZW50cyBBbmQgTXVsdGktTGluZQ0KPiA+PiBQYXJlbnRo ZXNlcyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0KA0K PiA+PiArICAgICAgICByJycnDQo+ID4+ICsgICAgICAgIERFQlVHICgoDQo+ID4+ICsgICAgICAg ICAgREVCVUdfV0FSTiwNCj4gPj4gKyAgICAgICAgICAiMHglLTh4OiVIJXMlTiAlIC02NHMoJTcz LS43M3MpeyVnfTwlSCUgLTcwcyVOPlxuLiAgIFNpemU6DQo+ID4+IDB4JS0xNnggKCUtLGQpIGJ5 dGVzLlxuXG4iLA0KPiA+PiArICAgICAgICAgIEhleE51bWJlciwNCj4gPj4gKyAgICAgICAgICBH ZXRVbmljb2RlU3RyaW5nIChJbm5lckZ1bmN0aW9uQ2FsbChBcmcxLCAmQXJnMikpLA0KPiA+PiAr ICAgICAgICAgICZVbmljb2RlU3RyaW5nWzRdLA0KPiA+PiArICAgICAgICAgIFVuaWNvZGVTdHJp bmcyLA0KPiA+PiArICAgICAgICAgICZHdWlkLA0KPiA+PiArICAgICAgICAgIEFub3RoZXJVbmlj b2RlU3RyaW5nLA0KPiA+PiArICAgICAgICAgIFN0cnVjdC5Tb21lU2l6ZSwNCj4gPj4gKyAgICAg ICAgICBDb21tYURlY2ltYWxWYWx1ZQ0KPiA+PiArICAgICAgICAgICkpOw0KPiA+PiArICAgICAg ICAnJycsDQo+ID4+ICsgICAgICAgICgwLCA4LCA4KSwNCj4gPj4gKyAgICAgICAgIk11bHRpLWxp bmUgTWFjcm8gd2l0aCBNdWx0aXBsZSBDb21wbGV4IFByaW50IFNwZWNpZmllcnMgMQ0KPiBhbmQN Cj4gPj4gMi1EZXB0aCBGdW5jdGlvbiBDYWxscyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIFNw ZWNpYWxQYXJzaW5nTWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJycnDQo+ID4+ICsgICAgICAg IERFQlVHICgNCj4gPj4gKyAgICAgICAgICAoREVCVUdfTkVULA0KPiA+PiArICAgICAgICAgICJU Y3BGYXN0UmVjb3ZlcjogZW50ZXIgZmFzdCByZXRyYW5zbWlzc2lvbiBmb3IgVENCICVwLA0KPiBy ZWNvdmVyDQo+ID4+IHBvaW50IGlzICVkXG4iLA0KPiA+PiArICAgICAgICAgIFRjYiwNCj4gPj4g KyAgICAgICAgICBUY2ItPlJlY292ZXIpDQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAg ICAgJycnLA0KPiA+PiArICAgICAgICAoMCwgMiwgMiksDQo+ID4+ICsgICAgICAgICJNdWx0aS1s aW5lIE1hY3JvIHdpdGggUGFyZW50aGVzZXMgU2VwYXJhdGVkIg0KPiA+PiArICAgICksDQo+ID4+ ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4g KyAgICAgICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgICBERUJVR19WRVJCT1NFLA0KPiA+PiAr ICAgICAgICAgICIlYTogQVBJQyBJRCAiIEZNVF9BUElDX0lEICIgd2FzIGhvdC1wbHVnZ2VkICIN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVmb3JlOyBpZ25v cmluZyBpdFxuIiwNCj4gPj4gKyAgICAgICAgICBfX2Z1bmNfXywNCj4gPj4gKyAgICAgICAgICBO ZXdBcGljSWQNCj4gPj4gKyAgICAgICAgICApKTsNCj4gPj4gKyAgICAgICAgJycnLA0KPiA+PiAr ICAgICAgICAoMSwgMSwgMiksDQo+ID4+ICsgICAgICAgICJNdWx0aS1saW5lIEltYmFsYW5jZWQg TWFjcm8gd2l0aCBJbmRlbnRlZCBTdHJpbmcNCj4gQ29uY2F0ZW5hdGlvbiINCj4gPj4gKyAgICAp LA0KPiA+PiArICAgIFNwZWNpYWxQYXJzaW5nTWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJycn DQo+ID4+ICsgICAgICAgIERFQlVHICgoDQo+ID4+ICsgICAgICAgICAgREVCVUdfVkVSQk9TRSwN Cj4gPj4gKyAgICAgICAgICAiJWE6IEFQSUMgSUQgd2FzIGhvdC1wbHVnZ2VkIC0gJWEiLA0KPiA+ PiArICAgICAgICAgIF9fZnVuY19fLA0KPiA+PiArICAgICAgICAgICJTdHJpbmcgd2l0aCAsIGlu c2lkZSINCj4gPj4gKyAgICAgICAgICApKTsNCj4gPj4gKyAgICAgICAgJycnLA0KPiA+PiArICAg ICAgICAoMCwgMiwgMiksDQo+ID4+ICsgICAgICAgICJNdWx0aS1saW5lIHdpdGggUXVvdGVkIFN0 cmluZyBBcmd1bWVudCBDb250YWluaW5nIENvbW1hIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAg U3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4gKyAgICAg ICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgICBERUJVR19WRVJCT1NFLA0KPiA+PiArICAgICAg ICAgICIlYTogQVBJQyBJRCB3YXMgaG90LXBsdWdnZWQgLSAlYSIsDQo+ID4+ICsgICAgICAgICAg X19mdW5jX18sDQo+ID4+ICsgICAgICAgICAgIlN0LHJpbmcsIHdpdGggLCBpbnMsaWRlIg0KPiA+ PiArICAgICAgICAgICkpOw0KPiA+PiArICAgICAgICAnJycsDQo+ID4+ICsgICAgICAgICgwLCAy LCAyKSwNCj4gPj4gKyAgICAgICAgIk11bHRpLWxpbmUgd2l0aCBRdW90ZWQgU3RyaW5nIEFyZ3Vt ZW50IENvbnRhaW5pbmcgTXVsdGlwbGUNCj4gPj4gQ29tbWFzIg0KPiA+PiArICAgICksDQo+ID4+ ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4g KyAgICAgICAgREVCVUcgKChERUJVR19WRVJCT1NFLCAiJWE6IEFQSUMgSUQgd2FzIGhvdC1wbHVn Z2VkLCBcIiVhXCIiLA0KPiA+PiBfX2Z1bmNfXywgIlNcInQsXCJyaW5nLCB3aXRoICwgaW5zLGlc ImRlIikpOw0KPiA+PiArICAgICAgICAnJycsDQo+ID4+ICsgICAgICAgICgwLCAyLCAyKSwNCj4g Pj4gKyAgICAgICAgIlF1b3RlZCBTdHJpbmcgQXJndW1lbnQgd2l0aCBFc2NhcGVkIFF1b3RlcyBh bmQgTXVsdGlwbGUNCj4gQ29tbWFzIg0KPiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBh cnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4gKyAgICAgICAgREVCVUcg KCgNCj4gPj4gKyAgICAgICAgICBERUJVR19FUlJPUiwNCj4gPj4gKyAgICAgICAgICAiJWE6IEFk ZFByb2Nlc3NvcigiIEZNVF9BUElDX0lEICIpOiAlclxuIiwNCj4gPj4gKyAgICAgICAgICBfX2Z1 bmNfXywNCj4gPj4gKyAgICAgICAgICBTdGF0dXMNCj4gPj4gKyAgICAgICAgICApKTsNCj4gPj4g KyAgICAgICAgJycnLA0KPiA+PiArICAgICAgICAoMCwgMiwgMiksDQo+ID4+ICsgICAgICAgICJR dW90ZWQgUGFyZW50aGVzaXplZCBTdHJpbmcgSW5zaWRlIERlYnVnIE1lc3NhZ2UgU3RyaW5nIg0K PiA+PiArICAgICksDQo+ID4+ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsg ICAgICAgIHInJycNCj4gPj4gKyAgICAgICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgICBERUJV R19JTkZPLA0KPiA+PiArICAgICAgICAgICIlYTogaG90LWFkZGVkIEFQSUMgSUQgIiBGTVRfQVBJ Q19JRCAiLCBTTUJBU0UgMHglTHgsICINCj4gPj4gKw0KPiA+PiAiRUZJX1NNTV9DUFVfU0VSVklD RV9QUk9UT0NPTCBhc3NpZ25lZCBudW1iZXIgJUx1XG4iLA0KPiA+PiArICAgICAgICAgIF9fZnVu Y19fLA0KPiA+PiArICAgICAgICAgIChVSU5UNjQpbUNwdUhvdFBsdWdEYXRhLT5TbUJhc2VbTmV3 U2xvdF0sDQo+ID4+ICsgICAgICAgICAgKFVJTlQ2NClOZXdQcm9jZXNzb3JOdW1iZXJCeVByb3Rv Y29sDQo+ID4+ICsgICAgICAgICAgKSk7DQo+ID4+ICsgICAgICAgICcnJywNCj4gPj4gKyAgICAg ICAgKDAsIDMsIDMpLA0KPiA+PiArICAgICAgICAiUXVvdGVkIFN0cmluZyB3aXRoIENvbmNhdGVu YXRpb24gSW5zaWRlIERlYnVnIE1lc3NhZ2UNCj4gU3RyaW5nIg0KPiA+PiArICAgICksDQo+ID4+ ICsgICAgU3BlY2lhbFBhcnNpbmdNYWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4g KyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCBJbmRleCA9PSBDT0xVTU5fU0laRS8yID8gIjAi IDogIiAlMDJ4IiwNCj4gPj4gKFVJTlROKURhdGFbSW5kZXhdKSk7DQo+ID4+ICsgICAgICAgICcn JywNCj4gPj4gKyAgICAgICAgKDAsIDEsIDEpLA0KPiA+PiArICAgICAgICAiVGVybmFyeSBPcGVy YXRpbmcgaW4gRGVidWcgTWVzc2FnZSBTdHJpbmciDQo+ID4+ICsgICAgKSwNCj4gPj4gKw0KPiA+ PiArDQo+ID4+ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiA+PiArICAgICMgU2VjdGlvbjogQ29kZSBTbmlwcGV0 IFRlc3RzDQo+ID4+ICsNCj4gPj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ID4+ICsgICAgQ29kZVNuaXBwZXRN YWNyb1Rlc3QoDQo+ID4+ICsgICAgICAgIHInJycNCj4gPj4gKyAgICAgICAgLyoqDQo+ID4+ICsg ICAgICAgIFByaW50IHRoZSBCQlMgVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgQHBhcmFt IExvY2FsQmJzVGFibGUgICBUaGUgQkJTIHRhYmxlLg0KPiA+PiArICAgICAgICBAcGFyYW0gQmJz Q291bnQgICAgICAgIFRoZSBjb3VudCBvZiBlbnRyeSBpbiBCQlMgdGFibGUuDQo+ID4+ICsgICAg ICAgICoqLw0KPiA+PiArICAgICAgICBWT0lEDQo+ID4+ICsgICAgICAgIExlZ2FjeUJtUHJpbnRC YnNUYWJsZSAoDQo+ID4+ICsgICAgICAgIElOIEJCU19UQUJMRSAgKkxvY2FsQmJzVGFibGUsDQo+ ID4+ICsgICAgICAgIElOIFVJTlQxNiAgICAgQmJzQ291bnQNCj4gPj4gKyAgICAgICAgKQ0KPiA+ PiArICAgICAgICB7DQo+ID4+ICsgICAgICAgIFVJTlQxNiAgSW5kZXg7DQo+ID4+ICsNCj4gPj4g KyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiXG4iKSk7DQo+ID4+ICsgICAgICAgIERFQlVH ICgoREVCVUdfSU5GTywgIiBOTyAgUHJpbyBiYi9kZC9mZiBjbC9zYyBUeXBlIFN0YXQNCj4gPj4g c2VnbTpvZmZzXG4iKSk7DQo+ID4+ICsgICAgICAgIERFQlVHICgoREVCVUdfSU5GTywNCj4gPj4g Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikpOw0KPiA+ PiArICAgICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBCYnNDb3VudDsgSW5kZXgrKykgew0K PiA+PiArICAgICAgICAgICAgaWYgKCFMZWdhY3lCbVZhbGlkQmJzRW50cnkgKCZMb2NhbEJic1Rh YmxlW0luZGV4XSkpIHsNCj4gPj4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+PiArICAgICAg ICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICBERUJVRyAoDQo+ID4+ICsgICAgICAg ICAgICAgIChERUJVR19JTkZPLA0KPiA+PiArICAgICAgICAgICAgICAiICUwMng6ICUwNHggJTAy eC8lMDJ4LyUwMnggJTAyeC8lMDJ4ICUwNHggJTA0eA0KPiA+PiAlMDR4OiUwNHhcbiIsDQo+ID4+ ICsgICAgICAgICAgICAgIChVSU5UTilJbmRleCwNCj4gPj4gKyAgICAgICAgICAgICAgKFVJTlRO KUxvY2FsQmJzVGFibGVbSW5kZXhdLkJvb3RQcmlvcml0eSwNCj4gPj4gKyAgICAgICAgICAgICAg KFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkJ1cywNCj4gPj4gKyAgICAgICAgICAgICAgKFVJ TlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkRldmljZSwNCj4gPj4gKyAgICAgICAgICAgICAgKFVJ TlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkZ1bmN0aW9uLA0KPiA+PiArICAgICAgICAgICAgICAo VUlOVE4pTG9jYWxCYnNUYWJsZVtJbmRleF0uQ2xhc3MsDQo+ID4+ICsgICAgICAgICAgICAgIChV SU5UTilMb2NhbEJic1RhYmxlW0luZGV4XS5TdWJDbGFzcywNCj4gPj4gKyAgICAgICAgICAgICAg KFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkRldmljZVR5cGUsDQo+ID4+ICsgICAgICAgICAg ICAgIChVSU5UTikqKFVJTlQxNiAqKSZMb2NhbEJic1RhYmxlW0luZGV4XS5TdGF0dXNGbGFncywN Cj4gPj4gKyAgICAgICAgICAgICAgKFVJTlROKUxvY2FsQmJzVGFibGVbSW5kZXhdLkJvb3RIYW5k bGVyU2VnbWVudCwNCj4gPj4gKyAgICAgICAgICAgICAgKFVJTlROKUxvY2FsQmJzVGFibGVbSW5k ZXhdLkJvb3RIYW5kbGVyT2Zmc2V0LA0KPiA+PiArICAgICAgICAgICAgICAoVUlOVE4pKChMb2Nh bEJic1RhYmxlW0luZGV4XS5NZmdTdHJpbmdTZWdtZW50IDw8IDQpICsNCj4gPj4gTG9jYWxCYnNU YWJsZVtJbmRleF0uTWZnU3RyaW5nT2Zmc2V0KSwNCj4gPj4gKyAgICAgICAgICAgICAgKFVJTlRO KSgoTG9jYWxCYnNUYWJsZVtJbmRleF0uRGVzY1N0cmluZ1NlZ21lbnQgPDwgNCkgKw0KPiA+PiBM b2NhbEJic1RhYmxlW0luZGV4XS5EZXNjU3RyaW5nT2Zmc2V0KSkNCj4gPj4gKyAgICAgICAgICAg ICAgKTsNCj4gPj4gKyAgICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIERFQlVHICgoREVC VUdfSU5GTywgIlxuIikpOw0KPiA+PiArICAgICAgICAnJycsDQo+ID4+ICsgICAgICAgICgxLCAw LCAwKSwNCj4gPj4gKyAgICAgICAgIkNvZGUgU2VjdGlvbiB3aXRoIEFuIEltYmFsYW5jZWQgTWFj cm8iDQo+ID4+ICsgICAgKSwNCj4gPj4gKyAgICBDb2RlU25pcHBldE1hY3JvVGVzdCgNCj4gPj4g KyAgICAgICAgcicnJw0KPiA+PiArICAgICAgICBpZiAoKkJ1ZmZlciA9PSBBTUxfUk9PVF9DSEFS KSB7DQo+ID4+ICsgICAgICAgICAgICAvLw0KPiA+PiArICAgICAgICAgICAgLy8gUm9vdENoYXIN Cj4gPj4gKyAgICAgICAgICAgIC8vDQo+ID4+ICsgICAgICAgICAgICBCdWZmZXIrKzsNCj4gPj4g KyAgICAgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJcXCIpKTsNCj4gPj4gKyAgICAgICAg fSBlbHNlIGlmICgqQnVmZmVyID09IEFNTF9QQVJFTlRfUFJFRklYX0NIQVIpIHsNCj4gPj4gKyAg ICAgICAgICAgIC8vDQo+ID4+ICsgICAgICAgICAgICAvLyBQYXJlbnRQcmVmaXhDaGFyDQo+ID4+ ICsgICAgICAgICAgICAvLw0KPiA+PiArICAgICAgICAgICAgZG8gew0KPiA+PiArICAgICAgICAg ICAgQnVmZmVyKys7DQo+ID4+ICsgICAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiXiIp KTsNCj4gPj4gKyAgICAgICAgICAgIH0gd2hpbGUgKCpCdWZmZXIgPT0gQU1MX1BBUkVOVF9QUkVG SVhfQ0hBUik7DQo+ID4+ICsgICAgICAgIH0NCj4gPj4gKyAgICAgICAgREVCVUcgKChERUJVR19X QVJOLCAiRmFpbGVkIHRvIHJldHJpZXZlDQo+IFZhcmlhYmxlOlwiTWVieERhdGFcIiwNCj4gPj4g U3RhdHVzID0gJXJcbiIsIFN0YXR1cykpOw0KPiA+PiArICAgICAgICAnJycsDQo+ID4+ICsgICAg ICAgICgwLCAxLCAxKSwNCj4gPj4gKyAgICAgICAgIkNvZGUgU2VjdGlvbiB3aXRoIEVzY2FwZWQg QmFja3NsYXNoIGFuZCBFc2NhcGVkIFF1b3RlcyINCj4gPj4gKyAgICApLA0KPiA+PiArICAgIENv ZGVTbmlwcGV0TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICByJycnDQo+ID4+ICsgICAgICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAgICAgICBVSU5UTiAgT2Zmc2V0Ow0K PiA+PiArICAgICAgICAgIFVJTlROICBTdGFydDsNCj4gPj4gKw0KPiA+PiArICAgICAgICAgIERF QlVHICgoDQo+ID4+ICsgICAgICAgICAgICBERUJVR19JTkZPLA0KPiA+PiArICAgICAgICAgICAg IlZhcmlhYmxlIEZWIGhlYWRlciBpcyBub3QgdmFsaWQuIEl0IHdpbGwgYmUNCj4gPj4gcmVpbml0 aWFsaXplZC5cbiINCj4gPj4gKyAgICAgICAgICAgICkpOw0KPiA+PiArDQo+ID4+ICsgICAgICAg ICAgLy8NCj4gPj4gKyAgICAgICAgICAvLyBHZXQgRnZiSW5mbyB0byBwcm92aWRlIGluIEZ3aElu c3RhbmNlLg0KPiA+PiArICAgICAgICAgIC8vDQo+ID4+ICsgICAgICAgICAgU3RhdHVzID0gR2V0 RnZiSW5mbyAoTGVuZ3RoLCAmR29vZEZ3Vm9sSGVhZGVyKTsNCj4gPj4gKyAgICAgICAgICBBU1NF UlQgKCFFRklfRVJST1IgKFN0YXR1cykpOw0KPiA+PiArICAgICAgICB9DQo+ID4+ICsgICAgICAg ICcnJywNCj4gPj4gKyAgICAgICAgKDAsIDAsIDApLA0KPiA+PiArICAgICAgICAiQ29kZSBTZWN0 aW9uIHdpdGggTXVsdGktTGluZSBNYWNybyB3aXRoIE5vIEFyZ3VtZW50cyINCj4gPj4gKyAgICAp DQo+ID4+ICtdDQo+ID4+IGRpZmYgLS1naXQgYS8ucHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hl Y2svdGVzdHMvTWFjcm9UZXN0LnB5DQo+ID4+IGIvLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0No ZWNrL3Rlc3RzL01hY3JvVGVzdC5weQ0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjNiOTY2ZDMxZmZhYQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ ICsrKyBiLy5weXRvb2wvUGx1Z2luL0RlYnVnTWFjcm9DaGVjay90ZXN0cy9NYWNyb1Rlc3QucHkN Cj4gPj4gQEAgLTAsMCArMSwxMzEgQEANCj4gPj4gKyMgQGZpbGUgTWFjcm9UZXN0LnB5DQo+ID4+ ICsjDQo+ID4+ICsjIENvbnRhaW5zIHRoZSBkYXRhIGNsYXNzZXMgdGhhdCBhcmUgdXNlZCB0byBj b21wb3NlIGRlYnVnIG1hY3JvDQo+IHRlc3RzLg0KPiA+PiArIw0KPiA+PiArIyBBbGwgZGF0YSBj bGFzc2VzIGluaGVyaXQgZnJvbSBhIHNpbmdsZSBhYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQNCj4g Pj4gZXhwZWN0cw0KPiA+PiArIyB0aGUgc3ViY2xhc3MgdG8gZGVmaW5lIHRoZSBjYXRlZ29yeSBv ZiB0ZXN0IGl0IHJlcHJlc2VudHMuDQo+ID4+ICsjDQo+ID4+ICsjIENvcHlyaWdodCAoYykgTWlj cm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+PiArIyMNCj4gPj4gKw0K PiA+PiArZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZA0KPiA+PiArZnJv bSBvcyBpbXBvcnQgbGluZXNlcA0KPiA+PiArZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlDQo+ID4+ ICsNCj4gPj4gK2ltcG9ydCBhYmMNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtAZGF0YWNsYXNzKGZy b3plbj1UcnVlKQ0KPiA+PiArY2xhc3MgTWFjcm9UZXN0KGFiYy5BQkMpOg0KPiA+PiArICAgICIi IkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGFuIGluZGl2aWR1YWwgbWFjcm8gdGVzdCBjYXNlLiIi Ig0KPiA+PiArDQo+ID4+ICsgICAgbWFjcm86IHN0cg0KPiA+PiArICAgIHJlc3VsdDogVHVwbGVb aW50LCBpbnQsIGludF0NCj4gPj4gKyAgICBkZXNjcmlwdGlvbjogc3RyID0gZmllbGQoZGVmYXVs dD0nJykNCj4gPj4gKw0KPiA+PiArICAgIEBwcm9wZXJ0eQ0KPiA+PiArICAgIEBhYmMuYWJzdHJh Y3RtZXRob2QNCj4gPj4gKyAgICBkZWYgY2F0ZWdvcnkoc2VsZikgLT4gc3RyOg0KPiA+PiArICAg ICAgICAiIiJSZXR1cm5zIHRoZSB0ZXN0IGNsYXNzIGNhdGVnb3J5IGlkZW50aWZpZXIuDQo+ID4+ ICsNCj4gPj4gKyAgICAgICAgRXhhbXBsZTogJ2VxdWFsX3NwZWNpZmllcl9lcXVhbF9hcmd1bWVu dF9tYWNyb190ZXN0Jw0KPiA+PiArDQo+ID4+ICsgICAgICAgIFRoaXMgc3RyaW5nIGlzIHVzZWQg dG8gYmluZCB0ZXN0IG9iamVjdHMgYWdhaW5zdCB0aGlzIGNsYXNzLg0KPiA+PiArDQo+ID4+ICsg ICAgICAgIFJldHVybnM6DQo+ID4+ICsgICAgICAgICAgICBzdHI6IFRlc3QgY2F0ZWdvcnkgaWRl bnRpZmllciBzdHJpbmcuDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBwYXNzDQo+ ID4+ICsNCj4gPj4gKyAgICBAcHJvcGVydHkNCj4gPj4gKyAgICBkZWYgY2F0ZWdvcnlfZGVzY3Jp cHRpb24oc2VsZikgLT4gc3RyOg0KPiA+PiArICAgICAgICAiIiJSZXR1cm5zIHRoZSB0ZXN0IGNs YXNzIGNhdGVnb3J5IGRlc2NyaXB0aW9uLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIEV4YW1wbGU6 ICdUZXN0IGNhc2Ugd2l0aCBlcXVhbCBjb3VudCBvZiBwcmludCBzcGVjaWZpZXJzIHRvDQo+ID4+ IGFyZ3VtZW50cy4nDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgVGhpcyBzdHJpbmcgaXMgYSBodW1h biByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGVzdA0KPiA+PiBjYXRlZ29yeS4NCj4gPj4g Kw0KPiA+PiArICAgICAgICBSZXR1cm5zOg0KPiA+PiArICAgICAgICAgICAgc3RyOiBTdHJpbmcg ZGVzY3JpYmluZyB0aGUgdGVzdCBjYXRlZ29yeS4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fZG9jX18NCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfX3N0cl9f KHNlbGYpOg0KPiA+PiArICAgICAgICAiIiJSZXR1cm5zIGEgbWFjcm8gdGVzdCBjYXNlIGRlc2Ny aXB0aW9uIHN0cmluZy4iIiINCj4gPj4gKw0KPiA+PiArICAgICAgICBzID0gWw0KPiA+PiArICAg ICAgICAgICAgZiJ7bGluZXNlcH0iLA0KPiA+PiArICAgICAgICAgICAgIj0iICogODAsDQo+ID4+ ICsgICAgICAgICAgICBmIk1hY3JvIFRlc3QgVHlwZTogIHtzZWxmLmNhdGVnb3J5X2Rlc2NyaXB0 aW9ufSIsDQo+ID4+ICsgICAgICAgICAgICBmIntsaW5lc2VwfU1hY3JvOiAgICAgICAgICAgIHtz ZWxmLm1hY3JvfSIsDQo+ID4+ICsgICAgICAgICAgICBmIntsaW5lc2VwfUV4cGVjdGVkIFJlc3Vs dDogIHtzZWxmLnJlc3VsdH0iDQo+ID4+ICsgICAgICAgIF0NCj4gPj4gKw0KPiA+PiArICAgICAg ICBpZiBzZWxmLmRlc2NyaXB0aW9uOg0KPiA+PiArICAgICAgICAgICAgcy5pbnNlcnQoMywgZiJU ZXN0IERlc2NyaXB0aW9uOiB7c2VsZi5kZXNjcmlwdGlvbn0iKQ0KPiA+PiArDQo+ID4+ICsgICAg ICAgIHJldHVybiBmJ3tsaW5lc2VwfScuam9pbihzKQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK0Bk YXRhY2xhc3MoZnJvemVuPVRydWUpDQo+ID4+ICtjbGFzcyBOb1NwZWNpZmllck5vQXJndW1lbnRN YWNyb1Rlc3QoTWFjcm9UZXN0KToNCj4gPj4gKyAgICAiIiJUZXN0IGNhc2Ugd2l0aCBubyBwcmlu dCBzcGVjaWZpZXIgYW5kIG5vIGFyZ3VtZW50cy4iIiINCj4gPj4gKw0KPiA+PiArICAgIEBwcm9w ZXJ0eQ0KPiA+PiArICAgIGRlZiBjYXRlZ29yeShzZWxmKSAtPiBzdHI6DQo+ID4+ICsgICAgICAg IHJldHVybiAibm9fc3BlY2lmaWVyX25vX2FyZ3VtZW50X21hY3JvX3Rlc3QiDQo+ID4+ICsNCj4g Pj4gKw0KPiA+PiArQGRhdGFjbGFzcyhmcm96ZW49VHJ1ZSkNCj4gPj4gK2NsYXNzIEVxdWFsU3Bl Y2lmaWVyRXF1YWxBcmd1bWVudE1hY3JvVGVzdChNYWNyb1Rlc3QpOg0KPiA+PiArICAgICIiIlRl c3QgY2FzZSB3aXRoIGVxdWFsIGNvdW50IG9mIHByaW50IHNwZWNpZmllcnMgdG8NCj4gYXJndW1l bnRzLiIiIg0KPiA+PiArDQo+ID4+ICsgICAgQHByb3BlcnR5DQo+ID4+ICsgICAgZGVmIGNhdGVn b3J5KHNlbGYpIC0+IHN0cjoNCj4gPj4gKyAgICAgICAgcmV0dXJuICJlcXVhbF9zcGVjaWZpZXJf ZXF1YWxfYXJndW1lbnRfbWFjcm9fdGVzdCINCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtAZGF0YWNs YXNzKGZyb3plbj1UcnVlKQ0KPiA+PiArY2xhc3MgTW9yZVNwZWNpZmllcnNUaGFuQXJndW1lbnRz TWFjcm9UZXN0KE1hY3JvVGVzdCk6DQo+ID4+ICsgICAgIiIiVGVzdCBjYXNlIHdpdGggbW9yZSBw cmludCBzcGVjaWZpZXJzIHRoYW4gYXJndW1lbnRzLiIiIg0KPiA+PiArDQo+ID4+ICsgICAgQHBy b3BlcnR5DQo+ID4+ICsgICAgZGVmIGNhdGVnb3J5KHNlbGYpIC0+IHN0cjoNCj4gPj4gKyAgICAg ICAgcmV0dXJuICJtb3JlX3NwZWNpZmllcnNfdGhhbl9hcmd1bWVudHNfbWFjcm9fdGVzdCINCj4g Pj4gKw0KPiA+PiArDQo+ID4+ICtAZGF0YWNsYXNzKGZyb3plbj1UcnVlKQ0KPiA+PiArY2xhc3Mg TGVzc1NwZWNpZmllcnNUaGFuQXJndW1lbnRzTWFjcm9UZXN0KE1hY3JvVGVzdCk6DQo+ID4+ICsg ICAgIiIiVGVzdCBjYXNlIHdpdGggbGVzcyBwcmludCBzcGVjaWZpZXJzIHRoYW4gYXJndW1lbnRz LiIiIg0KPiA+PiArDQo+ID4+ICsgICAgQHByb3BlcnR5DQo+ID4+ICsgICAgZGVmIGNhdGVnb3J5 KHNlbGYpIC0+IHN0cjoNCj4gPj4gKyAgICAgICAgcmV0dXJuICJsZXNzX3NwZWNpZmllcnNfdGhh bl9hcmd1bWVudHNfbWFjcm9fdGVzdCINCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtAZGF0YWNsYXNz KGZyb3plbj1UcnVlKQ0KPiA+PiArY2xhc3MgSWdub3JlZFNwZWNpZmllcnNNYWNyb1Rlc3QoTWFj cm9UZXN0KToNCj4gPj4gKyAgICAiIiJUZXN0IGNhc2UgdG8gdGVzdCBpZ25vcmVkIHByaW50IHNw ZWNpZmllcnMuIiIiDQo+ID4+ICsNCj4gPj4gKyAgICBAcHJvcGVydHkNCj4gPj4gKyAgICBkZWYg Y2F0ZWdvcnkoc2VsZikgLT4gc3RyOg0KPiA+PiArICAgICAgICByZXR1cm4gImlnbm9yZWRfc3Bl Y2lmaWVyc19tYWNyb190ZXN0Ig0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK0BkYXRhY2xhc3MoZnJv emVuPVRydWUpDQo+ID4+ICtjbGFzcyBTcGVjaWFsUGFyc2luZ01hY3JvVGVzdChNYWNyb1Rlc3Qp Og0KPiA+PiArICAgICIiIlRlc3QgY2FzZSB3aXRoIHNwZWNpYWwgKGNvbXBsaWNhdGVkKSBwYXJz aW5nIHNjZW5hcmlvcy4iIiINCj4gPj4gKw0KPiA+PiArICAgIEBwcm9wZXJ0eQ0KPiA+PiArICAg IGRlZiBjYXRlZ29yeShzZWxmKSAtPiBzdHI6DQo+ID4+ICsgICAgICAgIHJldHVybiAic3BlY2lh bF9wYXJzaW5nX21hY3JvX3Rlc3QiDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArQGRhdGFjbGFzcyhm cm96ZW49VHJ1ZSkNCj4gPj4gK2NsYXNzIENvZGVTbmlwcGV0TWFjcm9UZXN0KE1hY3JvVGVzdCk6 DQo+ID4+ICsgICAgIiIiVGVzdCBjYXNlIHdpdGhpbiBhIGxhcmdlciBjb2RlIHNuaXBwZXQuIiIi DQo+ID4+ICsNCj4gPj4gKyAgICBAcHJvcGVydHkNCj4gPj4gKyAgICBkZWYgY2F0ZWdvcnkoc2Vs ZikgLT4gc3RyOg0KPiA+PiArICAgICAgICByZXR1cm4gImNvZGVfc25pcHBldF9tYWNyb190ZXN0 Ig0KPiA+PiBkaWZmIC0tZ2l0IGEvLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0NoZWNrL3Rlc3Rz L19faW5pdF9fLnB5DQo+ID4+IGIvLnB5dG9vbC9QbHVnaW4vRGVidWdNYWNyb0NoZWNrL3Rlc3Rz L19faW5pdF9fLnB5DQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAw MDAwMDAwMC4uZTY5ZGUyOWJiMmQxDQo+ID4+IGRpZmYgLS1naXQNCj4gYS8ucHl0b29sL1BsdWdp bi9EZWJ1Z01hY3JvQ2hlY2svdGVzdHMvdGVzdF9EZWJ1Z01hY3JvQ2hlY2sucHkNCj4gPj4gYi8u cHl0b29sL1BsdWdpbi9EZWJ1Z01hY3JvQ2hlY2svdGVzdHMvdGVzdF9EZWJ1Z01hY3JvQ2hlY2su cHkNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5k YjUxZDIzZTAzZDMNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi8ucHl0b29sL1BsdWdp bi9EZWJ1Z01hY3JvQ2hlY2svdGVzdHMvdGVzdF9EZWJ1Z01hY3JvQ2hlY2sucHkNCj4gPj4gQEAg LTAsMCArMSwyMDEgQEANCj4gPj4gKyMgQGZpbGUgdGVzdF9EZWJ1Z01hY3JvQ2hlY2sucHkNCj4g Pj4gKyMNCj4gPj4gKyMgQ29udGFpbnMgdW5pdCB0ZXN0cyBmb3IgdGhlIERlYnVnTWFjcm9DaGVj ayBidWlsZCBwbHVnaW4uDQo+ID4+ICsjDQo+ID4+ICsjIEFuIGV4YW1wbGUgb2YgcnVubmluZyB0 aGVzZSB0ZXN0cyBmcm9tIHRoZSByb290IG9mIHRoZSB3b3Jrc3BhY2U6DQo+ID4+ICsjICAgcHl0 aG9uIC1tIHVuaXR0ZXN0IGRpc2NvdmVyIC1zDQo+ID4+IC4vLnB5dG9vbC9QbHVnaW4vRGVidWdN YWNyb0NoZWNrL3Rlc3RzIC12DQo+ID4+ICsjDQo+ID4+ICsjIENvcHlyaWdodCAoYykgTWljcm9z b2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+PiArIyMNCj4gPj4gKw0KPiA+ PiAraW1wb3J0IGluc3BlY3QNCj4gPj4gK2ltcG9ydCBwYXRobGliDQo+ID4+ICtpbXBvcnQgc3lz DQo+ID4+ICtpbXBvcnQgdW5pdHRlc3QNCj4gPj4gKw0KPiA+PiArIyBJbXBvcnQgdGhlIGJ1aWxk IHBsdWdpbg0KPiA+PiArdGVzdF9maWxlID0gcGF0aGxpYi5QYXRoKF9fZmlsZV9fKQ0KPiA+PiAr c3lzLnBhdGguYXBwZW5kKHN0cih0ZXN0X2ZpbGUucGFyZW50LnBhcmVudCkpDQo+ID4+ICsNCj4g Pj4gKyMgZmxha2U4IChFNDAyKTogSWdub3JlIGZsYWtlOCBtb2R1bGUgbGV2ZWwgaW1wb3J0IG5v dCBhdCB0b3Agb2YgZmlsZQ0KPiA+PiAraW1wb3J0IERlYnVnTWFjcm9DaGVjayAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBub3FhOiBFNDAyDQo+ID4+ICsNCj4gPj4gK2Zyb20gb3MgaW1wb3J0 IGxpbmVzZXAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9xYTogRTQwMg0KPiA+PiArZnJv bSB0ZXN0cyBpbXBvcnQgRGVidWdNYWNyb0RhdGFTZXQgICAgICAgICAgICAgIyBub3FhOiBFNDAy DQo+ID4+ICtmcm9tIHRlc3RzIGltcG9ydCBNYWNyb1Rlc3QgICAgICAgICAgICAgICAgICAgICAj IG5vcWE6IEU0MDINCj4gPj4gK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgVHVwbGUgICAg ICAgICAgICAgICMgbm9xYTogRTQwMg0KPiA+PiArDQo+ID4+ICsNCj4gPj4gKyMNCj4gPj4gKyMg VGhpcyBtZXRhY2xhc3MgaXMgcHJvdmlkZWQgdG8gZHluYW1pY2FsbHkgcHJvZHVjZSB0ZXN0IGNh c2UNCj4gY29udGFpbmVyDQo+ID4+ICsjIGNsYXNzZXMuIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhp cyBhcHByb2FjaCBpcyB0bzoNCj4gPj4gKyMgICAxLiBBbGxvdyBjYXRlZ29yaWVzIG9mIHRlc3Qg Y2FzZXMgdG8gYmUgZGVmaW5lZCAodGVzdCBjb250YWluZXINCj4gPj4gY2xhc3NlcykNCj4gPj4g KyMgICAyLiBBbGxvdyB0ZXN0IGNhc2VzIHRvIGF1dG9tYXRpY2FsbHkgKGR5bmFtaWNhbGx5KSBi ZSBhc3NpZ25lZCB0bw0KPiA+PiB0aGVpcg0KPiA+PiArIyAgICAgIGNvcnJlc3BvbmRpbmcgdGVz dCBjb250YWluZXIgY2xhc3Mgd2hlbiBuZXcgdGVzdCBkYXRhIGlzDQo+IGRlZmluZWQuDQo+ID4+ ICsjDQo+ID4+ICsjICAgICAgVGhlIGlkZWEgYmVpbmcgdGhhdCBpbmZyYXN0cnVjdHVyZSBhbmQg dGVzdCBkYXRhIGFyZQ0KPiBzZXBhcmF0ZWQuDQo+ID4+IEFkZGluZw0KPiA+PiArIyAgICAgIC8g cmVtb3ZpbmcgLyBtb2RpZnlpbmcgdGVzdCBkYXRhIGRvZXMgbm90IHJlcXVpcmUgYW4NCj4gPj4g aW5mcmFzdHJ1Y3R1cmUNCj4gPj4gKyMgICAgICBjaGFuZ2UgKHVubGVzcyBuZXcgY2F0ZWdvcmll cyBhcmUgZGVmaW5lZCkuDQo+ID4+ICsjICAgMy4gVG8gd29yayB3aXRoIHRoZSB1bml0dGVzdCBk aXNjb3ZlcnkgYWxnb3JpdGhtIGFuZCBWUyBDb2RlIFRlc3QNCj4gPj4gRXhwbG9yZXIuDQo+ID4+ ICsjDQo+ID4+ICsjIE5vdGVzOg0KPiA+PiArIyAgLSAoMSkgY2FuIHJvdWdobHkgYmUgYWNoaWV2 ZWQgd2l0aCB1bml0dGVzdCB0ZXN0IHN1aXRlcy4gSW4NCj4gYW5vdGhlcg0KPiA+PiArIyAgICBp bXBsZW1lbnRhdGlvbiBhcHByb2FjaCwgdGhpcyBzb2x1dGlvbiB3YXMgdGVzdGVkIHdpdGgNCj4g cmVsYXRpdmVseQ0KPiA+PiBtaW5vcg0KPiA+PiArIyAgICBtb2RpZmljYXRpb25zIHRvIHVzZSB0 ZXN0IHN1aXRlcy4gSG93ZXZlciwgdGhpcyBiZWNhbWUgYSBiaXQNCj4gb3Zlcmx5DQo+ID4+ICsj ICAgIGNvbXBsaWNhdGVkIHdpdGggdGhlIGR5bmFtaWMgdGVzdCBjYXNlIG1ldGhvZCBnZW5lcmF0 aW9uIGFuZCBkaWQNCj4gPj4gbm90DQo+ID4+ICsjICAgIHdvcmsgYXMgd2VsbCB3aXRoIFZTIENv ZGUgVGVzdCBFeHBsb3Jlci4NCj4gPj4gKyMgIC0gRm9yICgyKSBhbmQgKDMpLCBwYXJ0aWN1bGFy bHkgZm9yIFZTIENvZGUgVGVzdCBFeHBsb3JlciB0byB3b3JrLA0KPiA+PiB0aGUNCj4gPj4gKyMg ICAgZHluYW1pYyBwb3B1bGF0aW9uIG9mIHRoZSBjb250YWluZXIgY2xhc3MgbmFtZXNwYWNlIG5l ZWRlZCB0bw0KPiA+PiBoYXBwZW4gcHJpb3INCj4gPj4gKyMgICAgdG8gY2xhc3Mgb2JqZWN0IGNy ZWF0aW9uLiBUaGF0IGlzIHdoeSB0aGUgbWV0YWNsYXNzIGFzc2lnbnMgdGVzdA0KPiA+PiBtZXRo b2RzDQo+ID4+ICsjICAgIHRvIHRoZSBuZXcgY2xhc3NlcyBiYXNlZCB1cG9uIHRoZSB0ZXN0IGNh dGVnb3J5IHNwZWNpZmllZCBpbiB0aGUNCj4gPj4gKyMgICAgY29ycmVzcG9uZGluZyBkYXRhIGNs YXNzLg0KPiA+PiArIyAgLSBUaGlzIGNvdWxkIGhhdmUgYmVlbiBzaW1wbGlmaWVkIGEgYml0IGJ5 IGVpdGhlciB1c2luZyBvbmUgdGVzdA0KPiBjYXNlDQo+ID4+ICsjICAgIGNvbnRhaW5lciBjbGFz cyBhbmQvb3IgdGVzdGluZyBkYXRhIGluIGEgc2luZ2xlLCBtb25vbGl0aGljIHRlc3QNCj4gPj4g ZnVuY3Rpb24NCj4gPj4gKyMgICAgdGhhdCBpdGVyYXRlcyBvdmVyIHRoZSBkYXRhIHNldC4gSG93 ZXZlciwgdGhlIGR5bmFtaWMgaGllcmFyY2h5DQo+ID4+IGdyZWF0bHkNCj4gPj4gKyMgICAgaGVs cHMgb3JnYW5pemUgdGVzdCByZXN1bHRzIGFuZCByZXBvcnRpbmcuIFRoZSBpbmZyYXN0cnVjdHVy ZQ0KPiA+PiB0aG91Z2gNCj4gPj4gKyMgICAgaW5oZXJpdGluZyBzb21lIGNvbXBsZXhpdHkgdG8g c3VwcG9ydCBpdCwgc2hvdWxkIG5vdCBuZWVkIHRvDQo+IGNoYW5nZQ0KPiA+PiAobXVjaCkNCj4g Pj4gKyMgICAgYXMgdGhlIGRhdGEgc2V0IGV4cGFuZHMuDQo+ID4+ICsjICAtIFRlc3QgY2FzZSBj YXRlZ29yaWVzIChjb250YWluZXIgY2xhc3NlcykgYXJlIGRlcml2ZWQgZnJvbSB0aGUNCj4gPj4g b3ZlcmFsbA0KPiA+PiArIyAgICB0eXBlIG9mIG1hY3JvIGNvbmRpdGlvbnMgdW5kZXIgdGVzdC4N Cj4gPj4gKyMNCj4gPj4gKyMgIC0gVGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHVuaXR0ZXN0 IHdpbGwgZGlzY292ZXIgdGVzdCBjYXNlcw0KPiA+PiArIyAgICAoY2xhc3NlcyBkZXJpdmVkIGZy b20gdW5pdHRlc3QuVGVzdENhc2UpIHdpdGggdGhlIG5hbWUgcGF0dGVybg0KPiA+PiAiVGVzdF8q Ig0KPiA+PiArIyAgICBhbmQgdGVzdCBmdW5jdGlvbnMgd2l0aCB0aGUgbmFtZSBwYXR0ZXJuICJ0 ZXN0X3giLiBJbmRpdmlkdWFsDQo+IHRlc3RzDQo+ID4+IGFyZQ0KPiA+PiArIyAgICBkeW5hbWlj YWxseSBudW1iZXJlZCBtb25vdG9uaWNhbGx5IHdpdGhpbiBhIGNhdGVnb3J5Lg0KPiA+PiArIyAg LSBUaGUgZmluYWwgdGVzdCBjYXNlIGRlc2NyaXB0aW9uIGlzIGFsc28gYWJsZSB0byByZXR1cm4g ZmFpcmx5DQo+IGNsZWFuDQo+ID4+ICsjICAgIGNvbnRleHQgaW5mb3JtYXRpb24uDQo+ID4+ICsj DQo+ID4+ICtjbGFzcyBNZXRhX1Rlc3REZWJ1Z01hY3JvQ2hlY2sodHlwZSk6DQo+ID4+ICsgICAg IiIiDQo+ID4+ICsgICAgTWV0YWNsYXNzIGZvciBkZWJ1ZyBtYWNybyB0ZXN0IGNhc2UgY2xhc3Mg ZmFjdG9yeS4NCj4gPj4gKyAgICAiIiINCj4gPj4gKyAgICBAY2xhc3NtZXRob2QNCj4gPj4gKyAg ICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMsICoqa3dhcmdzKToNCj4gPj4gKyAg ICAgICAgIiIiUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWVzcGFjZSBmb3IgdGhpcyBjbGFzcy4i IiINCj4gPj4gKyAgICAgICAgY2FuZGlkYXRlX21hY3JvcywgY2xzX25zLCBjbnQgPSBbXSwge30s IDANCj4gPj4gKw0KPiA+PiArICAgICAgICBpZiAiY2F0ZWdvcnkiIGluIGt3YXJncy5rZXlzKCk6 DQo+ID4+ICsgICAgICAgICAgICBjYW5kaWRhdGVfbWFjcm9zID0gW20gZm9yIG0gaW4NCj4gPj4g RGVidWdNYWNyb0RhdGFTZXQuREVCVUdfTUFDUk9TIGlmDQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG0uY2F0ZWdvcnkgPT0ga3dhcmdzWyJjYXRlZ29yeSJdXQ0KPiA+PiAr ICAgICAgICBlbHNlOg0KPiA+PiArICAgICAgICAgICAgY2FuZGlkYXRlX21hY3JvcyA9IERlYnVn TWFjcm9EYXRhU2V0LkRFQlVHX01BQ1JPUw0KPiA+PiArDQo+ID4+ICsgICAgICAgIGZvciBjbnQs IG1hY3JvX3Rlc3QgaW4gZW51bWVyYXRlKGNhbmRpZGF0ZV9tYWNyb3MpOg0KPiA+PiArICAgICAg ICAgICAgZl9uYW1lID0gZid0ZXN0X3ttYWNyb190ZXN0LmNhdGVnb3J5fV97Y250fScNCj4gPj4g KyAgICAgICAgICAgIHRfZGVzYyA9IGYne21hY3JvX3Rlc3Qhc30nDQo+ID4+ICsgICAgICAgICAg ICBjbHNfbnNbZl9uYW1lXSA9IG1jbHMuYnVpbGRfbWFjcm9fdGVzdChtYWNyb190ZXN0LA0KPiB0 X2Rlc2MpDQo+ID4+ICsgICAgICAgIHJldHVybiBjbHNfbnMNCj4gPj4gKw0KPiA+PiArICAgIGRl ZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucywgKiprd2FyZ3MpOg0KPiA+PiArICAgICAg ICAiIiJEZWZpbmVkIHRvIHByZXZlbnQgdmFyaWFibGUgYXJncyBmcm9tIGJ1YmJsaW5nIHRvIHRo ZSBiYXNlDQo+ID4+IGNsYXNzLiIiIg0KPiA+PiArICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25l d19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucykNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfX2luaXRf XyhtY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3dhcmdzKToNCj4gPj4gKyAgICAgICAgIiIiRGVm aW5lZCB0byBwcmV2ZW50IHZhcmlhYmxlIGFyZ3MgZnJvbSBidWJibGluZyB0byB0aGUgYmFzZQ0K PiA+PiBjbGFzcy4iIiINCj4gPj4gKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19pbml0X18obmFt ZSwgYmFzZXMsIG5zKQ0KPiA+PiArDQo+ID4+ICsgICAgQGNsYXNzbWV0aG9kDQo+ID4+ICsgICAg ZGVmIGJ1aWxkX21hY3JvX3Rlc3QoY2xzLCBtYWNyb190ZXN0OiBNYWNyb1Rlc3QuTWFjcm9UZXN0 LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZGVzYzogc3RyKSAtPiBDYWxs YWJsZVtbTm9uZV0sIE5vbmVdOg0KPiA+PiArICAgICAgICAiIiJSZXR1cm5zIGEgdGVzdCBmdW5j dGlvbiBmb3IgdGhpcyBtYWNybyB0ZXN0IGRhdGEuIg0KPiA+PiArDQo+ID4+ICsgICAgICAgIEFy Z3M6DQo+ID4+ICsgICAgICAgICAgICBtYWNyb190ZXN0IChNYWNyb1Rlc3QuTWFjcm9UZXN0KTog VGhlIG1hY3JvIHRlc3QgY2xhc3MuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgIHRlc3RfZGVz YyAoc3RyKTogQSB0ZXN0IGRlc2NyaXB0aW9uIHN0cmluZy4NCj4gPj4gKw0KPiA+PiArICAgICAg ICBSZXR1cm5zOg0KPiA+PiArICAgICAgICAgICAgQ2FsbGFibGVbW05vbmVdLCBOb25lXTogQSB0 ZXN0IGNhc2UgZnVuY3Rpb24uDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBkZWYg dGVzdF9mdW5jKHNlbGYpOg0KPiA+PiArICAgICAgICAgICAgYWN0X3Jlc3VsdCA9IGNscy5jaGVj a19yZWdleChtYWNyb190ZXN0Lm1hY3JvKQ0KPiA+PiArICAgICAgICAgICAgc2VsZi5hc3NlcnRD b3VudEVxdWFsKA0KPiA+PiArICAgICAgICAgICAgICAgIGFjdF9yZXN1bHQsDQo+ID4+ICsgICAg ICAgICAgICAgICAgbWFjcm9fdGVzdC5yZXN1bHQsDQo+ID4+ICsgICAgICAgICAgICAgICAgdGVz dF9kZXNjICsgZid7bGluZXNlcH0nLmpvaW4oDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIFsi IiwgZiJBY3R1YWwgUmVzdWx0OiAgICB7YWN0X3Jlc3VsdH0iLCAiPSIgKiA4MCwNCj4gPj4gIiJd KSkNCj4gPj4gKw0KPiA+PiArICAgICAgICByZXR1cm4gdGVzdF9mdW5jDQo+ID4+ICsNCj4gPj4g KyAgICBAY2xhc3NtZXRob2QNCj4gPj4gKyAgICBkZWYgY2hlY2tfcmVnZXgoY2xzLCBzb3VyY2Vf c3RyOiBzdHIpIC0+IFR1cGxlW2ludCwgaW50LCBpbnRdOg0KPiA+PiArICAgICAgICAiIiJSZXR1 cm5zIHRoZSBwbHVnaW4gcmVzdWx0IGZvciB0aGUgZ2l2ZW4gbWFjcm8gc3RyaW5nLg0KPiA+PiAr DQo+ID4+ICsgICAgICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgICAgICBzb3VyY2Vfc3RyIChzdHIp OiBBIHN0cmluZyBjb250YWluaW5nIGRlYnVnIG1hY3Jvcy4NCj4gPj4gKw0KPiA+PiArICAgICAg ICBSZXR1cm5zOg0KPiA+PiArICAgICAgICAgICAgVHVwbGVbaW50LCBpbnQsIGludF06IEEgdHVw bGUgb2YgdGhlIG51bWJlciBvZiBmb3JtYXR0aW5nDQo+ID4+IGVycm9ycywNCj4gPj4gKyAgICAg ICAgICAgIG51bWJlciBvZiBwcmludCBzcGVjaWZpZXJzLCBhbmQgbnVtYmVyIG9mIGFyZ3VtZW50 cyBmb3INCj4gdGhlDQo+ID4+IG1hY3Jvcw0KPiA+PiArICAgICAgICAgICAgZ2l2ZW4uDQo+ID4+ ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICByZXR1cm4gRGVidWdNYWNyb0NoZWNrLmNoZWNr X2RlYnVnX21hY3JvcygNCj4gPj4gKyAgICAgICAgICAgIERlYnVnTWFjcm9DaGVjay5nZXRfZGVi dWdfbWFjcm9zKHNvdXJjZV9zdHIpLA0KPiA+PiArICAgICAgICAgICAgY2xzLl9nZXRfZnVuY3Rp b25fbmFtZSgpKQ0KPiA+PiArDQo+ID4+ICsgICAgQGNsYXNzbWV0aG9kDQo+ID4+ICsgICAgZGVm IF9nZXRfZnVuY3Rpb25fbmFtZShjbHMpIC0+IHN0cjoNCj4gPj4gKyAgICAgICAgIiIiUmV0dXJu cyB0aGUgZnVuY3Rpb24gbmFtZSBmcm9tIG9uZSBsZXZlbCBvZiBjYWxsIGRlcHRoLg0KPiA+PiAr DQo+ID4+ICsgICAgICAgIFJldHVybnM6DQo+ID4+ICsgICAgICAgICAgICBzdHI6IFRoZSBjYWxs ZXIgZnVuY3Rpb24gbmFtZS4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIHJldHVy biAiZnVuY3Rpb246ICIgKw0KPiA+PiBpbnNwZWN0LmN1cnJlbnRmcmFtZSgpLmZfYmFjay5mX2Nv ZGUuY29fbmFtZQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gKyMgVGVzdCBjb250YWluZXIgY2xhc3Nl cyBmb3IgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIG1hY3JvIHRlc3QgY2FzZXMuDQo+ID4+ICsjIEEg Y2xhc3MgY2FuIGJlIHJlbW92ZWQgYmVsb3cgdG8gc2tpcCAvIHJlbW92ZSBpdCBmcm9tIHRlc3Rp bmcuDQo+ID4+ICsjIFRlc3QgY2FzZSBmdW5jdGlvbnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXBw cm9wcmlhdGUgY2xhc3MgYXMgdGhleQ0KPiBhcmUNCj4gPj4gKyMgY3JlYXRlZC4NCj4gPj4gK2Ns YXNzIFRlc3RfTm9TcGVjaWZpZXJOb0FyZ3VtZW50KA0KPiA+PiArICAgICAgICB1bml0dGVzdC5U ZXN0Q2FzZSwNCj4gPj4gKyAgICAgICAgbWV0YWNsYXNzPU1ldGFfVGVzdERlYnVnTWFjcm9DaGVj aywNCj4gPj4gKyAgICAgICAgY2F0ZWdvcnk9Im5vX3NwZWNpZmllcl9ub19hcmd1bWVudF9tYWNy b190ZXN0Iik6DQo+ID4+ICsgICAgcGFzcw0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2NsYXNzIFRl c3RfRXF1YWxTcGVjaWZpZXJFcXVhbEFyZ3VtZW50KA0KPiA+PiArICAgICAgICB1bml0dGVzdC5U ZXN0Q2FzZSwNCj4gPj4gKyAgICAgICAgbWV0YWNsYXNzPU1ldGFfVGVzdERlYnVnTWFjcm9DaGVj aywNCj4gPj4gKyAgICAgICAgY2F0ZWdvcnk9ImVxdWFsX3NwZWNpZmllcl9lcXVhbF9hcmd1bWVu dF9tYWNyb190ZXN0Iik6DQo+ID4+ICsgICAgcGFzcw0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2Ns YXNzIFRlc3RfTW9yZVNwZWNpZmllcnNUaGFuQXJndW1lbnRzKA0KPiA+PiArICAgICAgICB1bml0 dGVzdC5UZXN0Q2FzZSwNCj4gPj4gKyAgICAgICAgbWV0YWNsYXNzPU1ldGFfVGVzdERlYnVnTWFj cm9DaGVjaywNCj4gPj4gKyAgICAgICAgY2F0ZWdvcnk9Im1vcmVfc3BlY2lmaWVyc190aGFuX2Fy Z3VtZW50c19tYWNyb190ZXN0Iik6DQo+ID4+ICsgICAgcGFzcw0KPiA+PiArDQo+ID4+ICsNCj4g Pj4gK2NsYXNzIFRlc3RfTGVzc1NwZWNpZmllcnNUaGFuQXJndW1lbnRzKA0KPiA+PiArICAgICAg ICB1bml0dGVzdC5UZXN0Q2FzZSwNCj4gPj4gKyAgICAgICAgbWV0YWNsYXNzPU1ldGFfVGVzdERl YnVnTWFjcm9DaGVjaywNCj4gPj4gKyAgICAgICAgY2F0ZWdvcnk9Imxlc3Nfc3BlY2lmaWVyc190 aGFuX2FyZ3VtZW50c19tYWNyb190ZXN0Iik6DQo+ID4+ICsgICAgcGFzcw0KPiA+PiArDQo+ID4+ ICsNCj4gPj4gK2NsYXNzIFRlc3RfSWdub3JlZFNwZWNpZmllcnMoDQo+ID4+ICsgICAgICAgIHVu aXR0ZXN0LlRlc3RDYXNlLA0KPiA+PiArICAgICAgICBtZXRhY2xhc3M9TWV0YV9UZXN0RGVidWdN YWNyb0NoZWNrLA0KPiA+PiArICAgICAgICBjYXRlZ29yeT0iaWdub3JlZF9zcGVjaWZpZXJzX21h Y3JvX3Rlc3QiKToNCj4gPj4gKyAgICBwYXNzDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArY2xhc3Mg VGVzdF9TcGVjaWFsUGFyc2luZ01hY3JvVGVzdCgNCj4gPj4gKyAgICAgICAgdW5pdHRlc3QuVGVz dENhc2UsDQo+ID4+ICsgICAgICAgIG1ldGFjbGFzcz1NZXRhX1Rlc3REZWJ1Z01hY3JvQ2hlY2ss DQo+ID4+ICsgICAgICAgIGNhdGVnb3J5PSJzcGVjaWFsX3BhcnNpbmdfbWFjcm9fdGVzdCIpOg0K PiA+PiArICAgIHBhc3MNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtjbGFzcyBUZXN0X0NvZGVTbmlw cGV0TWFjcm9UZXN0KA0KPiA+PiArICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSwNCj4gPj4gKyAg ICAgICAgbWV0YWNsYXNzPU1ldGFfVGVzdERlYnVnTWFjcm9DaGVjaywNCj4gPj4gKyAgICAgICAg Y2F0ZWdvcnk9ImNvZGVfc25pcHBldF9tYWNyb190ZXN0Iik6DQo+ID4+ICsgICAgcGFzcw0KPiA+ PiArDQo+ID4+ICsNCj4gPj4gK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6DQo+ID4+ICsgICAg dW5pdHRlc3QubWFpbigpDQo+ID4+IC0tDQo+ID4+IDIuNDEuMC53aW5kb3dzLjMNCj4gPg0KPiA+ DQo+ID4NCj4gPg0KPiA+DQo+IA0KPiANCj4gDQo+IA0KDQoNCgotPS09LT0tPS09LT0tPS09LT0t PS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRo aXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTA4NDIxKTogaHR0cHM6Ly9lZGsyLmdyb3Vw cy5pby9nL2RldmVsL21lc3NhZ2UvMTA4NDIxCk11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91 cHMuaW8vbXQvMTAwNzQ1NzExLzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIu Z3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbGVh dmUvMTIzNjcxMTEvNzY4NjE3Ni8xOTEzNDU2MjEyL3h5enp5IFtyZWJlY2NhQG9wZW5mdy5pb10K LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCg0K