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 936B6D80D5A for ; Wed, 8 Nov 2023 13:46:52 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=1J0XEuoxRSpQAJHlbhh7htW/7TlSAIJ7Gq8PN2XNNkY=; 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=1699451211; v=1; b=nWJKQcLzfsLW0ISL6tH3fkPS6gO0ZOSNN+1SazhIsVxbgRSlcNhZYAT/YXfLzdwpj+m5eaxs BkAbrKtVjnBIYk6jqGM0FsPwAOFvqUQDeDA3OoU9q4vDgdPEcfwVF9+VtQDaCOx0e2NzXAgbjpE wM6TZqdF0QoAKkMC1LrN7nVw= X-Received: by 127.0.0.2 with SMTP id 8FfrYY7687511xJfuA68NBq2; Wed, 08 Nov 2023 05:46:51 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.13919.1699451208717503152 for ; Wed, 08 Nov 2023 05:46:48 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="475991640" X-IronPort-AV: E=Sophos;i="6.03,286,1694761200"; d="scan'208";a="475991640" X-Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 05:46:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763067956" X-IronPort-AV: E=Sophos;i="6.03,286,1694761200"; d="scan'208";a="763067956" X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 08 Nov 2023 05:46:39 -0800 X-Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 8 Nov 2023 05:46:39 -0800 X-Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 8 Nov 2023 05:46:37 -0800 X-Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34 via Frontend Transport; Wed, 8 Nov 2023 05:46:37 -0800 X-Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.41) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.34; Wed, 8 Nov 2023 05:46:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kGiJcgzjkyQ6jN0akvVcrJ4CgZoAWXrk+k6WbhhhCN9L73+rp4ARfw+qal6wUZXtBM+r2CUEUvwbPIbBtKW8NVbvtXqIDDwwwlNRHtXg8BGQwf+YHmMI+Q9G9Sl0ghLUBzML6uyX0MZFeWpgc6GlwD7UpcRkF+eH4Gljd6UN3hrIdLreKYQ8hn5iwAvG9YhtOJ0OdhSFCZuAqY1LG2mNu2RGDiskhefokSa7vHA0mFlvtLWGIkJj+yFvh4Xgh8H9Z7nnAe4pyBbkwL9xZ1mLfF6EuGYjHhKp4yZV6AFzsGksCxnRfD7SUt0H6gNp7/bUmgSgdBMzFwLa3k6ODB/yvA== 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=JVw7yXk5n8WfI0cs6jiY8wAdfw4CR7nl0SbDyfI2IDk=; b=GLolmPaPPwkUymeBLX6IDjEuoStLgOT8530Tx4BPXSsSnCsbynPi8C5WKONZ3wa3unbVtRW+J3jdOTLuxLLXqb3zrqr7iMYqixCHMcEpEuLtMub1EZFKA2/EdHtYfDbsVJ91LXJs9ZbD7eRSIWXwXOaGIWqjeIylM1W+VB13ewBnP5vazDqjNLxGPBpNK8WdIP+Hy0v9KPH+nVSR55WGZe8VcRlzlqInSOMXog6qImi3qOt2jNBrvUWL1hGnI98YwMmI8aSM1VKb+uhuvrGAVKS+AUibhKc+d+jtb1CqGHJfCLpefcQuWUwlSnfWruF+lxZ3BVuiCE3H2sjIzJQiWw== 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 MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) by LV3PR11MB8457.namprd11.prod.outlook.com (2603:10b6:408:1b7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Wed, 8 Nov 2023 13:45:47 +0000 X-Received: from MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::5cfe:c156:aa65:75e]) by MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::5cfe:c156:aa65:75e%3]) with mapi id 15.20.6954.029; Wed, 8 Nov 2023 13:45:47 +0000 From: "Yuwei Chen" To: Rebecca Cran , "Gao, Liming" , "Zimmer, Vincent" CC: "Feng, Bob C" , "Yang, Yuting2" , "devel@edk2.groups.io" , "Hartung, Stephen" Subject: Re: [edk2-devel] [PATCH] BaseTools: Python VfrCompiler implementation Thread-Topic: [PATCH] BaseTools: Python VfrCompiler implementation Thread-Index: AQHaEkGbCvCnVndSDESFFNMqTOYyyrBwbfEA Date: Wed, 8 Nov 2023 13:45:46 +0000 Message-ID: References: <20231108124533.1510-1-yuting2.yang@intel.com> In-Reply-To: <20231108124533.1510-1-yuting2.yang@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5906:EE_|LV3PR11MB8457:EE_ x-ms-office365-filtering-correlation-id: 45989d56-d73a-46fa-07e9-08dbe06102d7 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: CY8hkO733c14htjzzN6c/wkglERr7pc5T6Ghzz5bSqhkgGX3NatIR4EDH6RQikQsDUypa5Qv5xqdgfpU/2uQ9OYmk51t6u4LtrM/7qtFcG1QZktFdXu2qlM4JN7Azaa4IbU+YyKqRXV0/JzLOSfAJJfmkCdaXueaPsnMpB1F0O85FjxT1GjBrhwXt1nox8AraESMVEe1ZzLBn3VJExIvwQXRDRPkvXE//6Ps8mHV7cwRfYZaGdmeJwMs+hZDuh35+kbjX43F6m5LtuB7bCTADkkib+mNsMQWjUeUXkP7iYFNf/077QuvkeEP7Y6EySOkAFJL+wvpE3Fiy7k4CW4vrNS5RD3qwHwr1sEMSiopeeWXAAy3ciAzwYSIKJIWDXecJoR32icd3uOrfo4utCLYJKtvZmo0ujiXLg8Q68CvTbrYYL11z1UdFGP0Ys5ifJtAk4SvEmnkCVU2n6ikpcIY9wtmh2nuBii09bmGgB4j+WczKE2w79DbYsyHo42oxZFFZiY/6X56HxOrBR7LumtuBIvdWiF5WleyNbPPyRtble0T8WKVnzsLTzkZoD173IdBCd65rQoHnwRsSiLUiibhFfinPc636T+oMbgO5Jf/lv5ZRLIU/fu5VPs7r3CziYAgdjM+2Mjln36TbQtnrGcC3A0Lk/vKqu5rtPLGqCgTK02tfCWvKZ6NKsukJZqK0HeoVmeujzC9Qj7YLD+aneSMNw== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VlI4VDhkY0JCWm9sQS9ZYmxzQld0L1hwZGFFN084V1M2akgyWUhtTzB1VERG?= =?utf-8?B?N1hzdzM3OGc0bGExN3lrcUhnc25icWpIKzJrNEJ3N3BsYWYwNU5zb0lHMUdB?= =?utf-8?B?djNGemUzNVZtOW1kVHZTdmNuSkRTNFdMbkJFOWpXb2t2a01rTWV3aWpoVWtV?= =?utf-8?B?QUU5V3VHRk41aGtxUWJUTGhBNGdDS29vQzlEc0M2MC9iVG5GZlhudGdkS1c2?= =?utf-8?B?QXkzOHNhZkxsT3VsanE3MFBhY0Zuc0xvdDFxbjRHamZjT3hHdzNFVGkvcUVV?= =?utf-8?B?ZGlrY0hoeHVtTDJHaERSbTRSUG1kVFJwSXNIR0YwQjU0NjFoaDJPNGdKcks0?= =?utf-8?B?RkFrZ2hMN1YvUTlHSFI4ajRzZFF6UFZQU1YwcXUrMUtNZnRlTXYzL09rUmI0?= =?utf-8?B?QWVWeUhXT2JGR2NSZ2dTWjRQNUdnY0IwTndTMTRpaWdkR3J5ZmxHRUZkZllF?= =?utf-8?B?R0t3UkxrV3NxM3drUmV5NENld0M4bEpCUitaU01pL2J4cTNCY2tmdTNjd3Z3?= =?utf-8?B?ZGNMTHAxV3VYRnErYTFURDNYTlFMSmxxQTlKOGFtT1NnMWxjQ2ZUN3BkRlM2?= =?utf-8?B?cHZYVTh2ckg5M0sxWWdaQTFmbnJXaVA4Ym0xeXBUckd3K2p4UnZ1UzE5cDBZ?= =?utf-8?B?S1VoaFJ4RGNyQnpNRllSQlVZdk5FV3JUZWwzWVdPY1FWNGhPaDRtSU91YTRn?= =?utf-8?B?Z0EybTF6Q1MzNUZsR1lyaTIyVmNtWjdZQU9UY3MvbWxDRjUzdXVVL0pCaEUx?= =?utf-8?B?VDFaQjRFeHlIajVIOFdCYzJhSmFKcVltSHI2bXB4N3phak1ybEl3cDVXZkc2?= =?utf-8?B?cXdrdXZxVHlRTlNxcndsTHlPaGwwUVAvQzVXUnp0c0V6SzUxMFlFT3V6NWJW?= =?utf-8?B?SVZmTkkwZ1RZazRLUXRka01DNm54N205bEZhOWlsRHhEa2lWd2I1ZG5tS1Rs?= =?utf-8?B?dE5LK0FJR3NBM3ZNMDNDdmpYWDVRZlRZdUlWVXVjeVVTWTVIMnErcDBHMGJ4?= =?utf-8?B?NTZ2bmIzVW9hVUdRVjhWTVNreG9aUmI5SWNoczJySDg5STJ5dC85UG9BR3JT?= =?utf-8?B?WHQxOUw1TTBUODRGMFhPUUR2MWFDQjBMemNEbGJES1pPbEJYL2ZPaTA0NlFo?= =?utf-8?B?R283aHl6Ky84VE0rMUxIem9rY2NXYUx1aFJQTFRrckFJZzlKQit4Si80TWNn?= =?utf-8?B?TzVuL3ZnNkoyK2lIaXl6c2lsQWFxaEp0djhQV3hqdVExc0VMNUVJbG1IdER2?= =?utf-8?B?RkZuYTZTM0RUVkc1aGJkVENxb2ZSYTNrbkdCWENhOHJPR2dRN2QyLzErdkEx?= =?utf-8?B?NDFQcldYaEV1M0xIM0xXdG95Qng5VTA4TEJHd29qYlJWdnhyeHlZM2ZUNUJ0?= =?utf-8?B?V3piS3dnZkZoUkFZemNqZHQ1Ri9ERTg0QkxUNXVjYUNFWXlsOFdlMXZ6S2pk?= =?utf-8?B?ZmU2bi9nK3hUc0dQRE9wN2hLQ3hxZy9zRUJLQWxkK3ora3RVcXVsMmc3NnhJ?= =?utf-8?B?bUUrMFY4eTV5VWUxWkp6cFlGcExzUlJsSnBkbnNOb0tEYTRDQS84ckthVWdX?= =?utf-8?B?ejZLd2VxRVVQdTczZ2pkVkJBaGFkOE8zWEJKTmt3Y3FnMnRJcTNOSDJxZERJ?= =?utf-8?B?bDREenptZlJQbHpOeFIreVYwTGxrcTAxQmVSZmJucHQzTFpFbzA1VkRSVVRK?= =?utf-8?B?a3M2VG1DR0lnZ2RLaFZEWTBRajgraVhoR3o2OER6cnZnK0duRmZDc2lPeVA1?= =?utf-8?B?emtPS2VKRERjK0szdUREWEZjYUdTc1BVbkdYQ1lUa0hYUFo4OUt1RHVQVStu?= =?utf-8?B?YlpKSXpvTUhQdGdpU0locG1TcXhtWExqSFhaM1pNZzlqTnNzL0x5U3hGSFpD?= =?utf-8?B?R2JiK083NWk3SnlhazI5UUhlRHhkUlZ0SC9mUlZHWC9qRzZqMDZIWDVTaHlT?= =?utf-8?B?REJjTC8vOEpEZG0yT0tVTnFYSWwya2d4Q3h2R3RLWVE3K0JBZ3BuVXdCazRs?= =?utf-8?B?VmpkMW9CelV0ZVRuUytKY2xRUG5zd1ZzYlV3cFFyZml2ejhlcVBRd0NsUVJF?= =?utf-8?B?U2p0c0tBeXZzU1BSQ1U3b1BoakRMamVzRE8yYmc5ME5NSHA1OCtpWEg3aEkv?= =?utf-8?Q?KEks/5pRYUJ1w4Z0rP1wZEQwh?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5906.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45989d56-d73a-46fa-07e9-08dbe06102d7 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2023 13:45:46.6666 (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: LkwFdvcH9wseTUfLV8Aqe1A4VRyGAXvK1dApOhxkhuO63CJUeOJx5MycpWek23qgrbdA3Xp74+x5ed+4SgA7Hw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8457 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,yuwei.chen@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: agkicIEkYQ7utpvTsX2HOzOTx7686176AA= 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=nWJKQcLz; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") SGkgTGltaW5nIGFuZCBDcmFuLCANCg0KQ291bGQgeW91IGhlbHAgb24gcXVpY2sgcmV2aWV3aW5n IHRoaXMgbmV3IFZmckNvbXBpbGVyIHB5dGhvbiB0b29sLCBpdCBoYXMgdGhlIHNhbWUgZnVuY3Rp b25zIHdpdGggb3JpZ2luIEMgdmVyc2lvbiBWZnJDb21waWxlciwgbWVhbndoaWxlIGl0IHN1cHBv cnRzIG1vcmUgbmV3IGZlYXR1cmVzIHN1Y2ggYXMgZ2VuZXJhdGVkIFZmciBmaWxlcyBjb25maWcg aW5mbyBpbnRvIFlhbWwgZm9ybWF0LiANCiANClRoaXMgZmVhdHVyZSBpcyB1cmdlbnQgZm9yIHVz IHRvIHVzZSwgYW5kIHdlIHJlYWxseSBob3BlIGl0IGNhbiBiZSBtZXJnZWQgaW50byB0aGlzIHN0 YWJsZSB0YWcuIFRoaXMgcGF0Y2ggaXMgbGlua2VkIHRvIHRoZSBlZGsyLWJhc2V0b29scyBQUjog aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLWJhc2V0b29scy9wdWxsLzEwOS4gV2Ug bGlzdCBhbGwgdGhlIGtub3duIGlzc3VlcyB3aGljaCB3aWxsIGJlIGVuaGFuY2VkIGluIHRoZSBS ZWFkTWUgZmlsZS4gQW5kIHdpbGwgZW5oYW5jZSB0aGVtIG9uZSBieSBvbmUgYWZ0ZXIgdGhlIHBh dGNoIG1lcmdlZC4NCiANCkZvciB0aGUgY29kZSBxdWFsaXR5LCBpbiB0aGlzIHBhdGNoLCB0aGUg bmV3IHRvb2wgaXMgbm90IGVuYWJsZWQgaW4gYnVpbGQgcHJvY2VzcywgaXQganVzdCBzYXZlcyBp biB0aGUgYmFzZXRvb2xzIHB5dGhvbiBmb2xkZXIsIHdoaWNoIHdpbGwgbm90IGluZmx1ZW5jZSB0 aGUgY3VycmVudCBlZGsyIGJlaGF2aW9ycy4gV2Ugd2lsbCBlbmFibGUgaXQgd2l0aCBhIG5ldyBw YXRjaCB3aGVuIGV2ZXJ5dGhpbmcgaXMgcmVhZHkuDQogDQpNYW55IHRoYW5rc34NCiANCkhpIFZp bmNlbnQsIHBsZWFzZSBoZWxwIGFkZCBtb3JlIGluZm9ybWF0aW9uIGlmIG5lY2Vzc2FyeX4gVGhh bmtzIGEgbG90fg0KIA0KVGhhbmtzLA0KQ2hyaXN0aW5lDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+DQo+ IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgOCwgMjAyMyA4OjQ2IFBNDQo+IFRvOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiBDYzogUmViZWNjYSBDcmFuIDxyZWJlY2NhQGJzZGlvLmNvbT47IEdh bywgTGltaW5nDQo+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBGZW5nLCBCb2IgQyA8Ym9i LmMuZmVuZ0BpbnRlbC5jb20+OyBDaGVuLA0KPiBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwu Y29tPg0KPiBTdWJqZWN0OiBbUEFUQ0hdIEJhc2VUb29sczogUHl0aG9uIFZmckNvbXBpbGVyIGlt cGxlbWVudGF0aW9uDQo+IA0KPiBUaGlzIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGlzIHRoZSBw eXRob24gaW1wbGVtZW50YXRpb24NCj4gb2YgdGhlIGVkazIgVmZyQ29tcGlsZXIgdG9vbCB3aGlj aCBDIGltcGxlbWVudGF0aW9uIGxvY2F0ZXMgYXQNCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5v Y29yZS9lZGsyL3RyZWUvbWFzdGVyL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb20NCj4gcGlsZS4N Cj4gDQo+IFRoaXMgcHl0aG9uIGltcGxlbWVudGF0aW9uIG5vdCBvbmx5IGNvdmVycyB0aGUgc2Ft ZSB1c2FnZSBhcw0KPiB0aGUgQyB2ZXJzaW9uIFZmckNvbXBpbGVyLCBidXQgYWxzbyBleHRlbmRz IHNldmVyYWwgbmV3IGZlYXR1cmVzLg0KPiANCj4gQ2M6IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBi c2Rpby5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ IENjOiBCb2IgRmVuZyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IFl1 dGluZyBZYW5nIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBZdXdl aSBDaGVuIDx5dXdlaS5jaGVuQGludGVsLmNvbT4NCj4gLS0tDQo+ICAuLi4vU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9JZnJDb21tb24ucHkgICAgfCAgIDEwMCArDQo+ICAuLi4vU291cmNlL1B5 dGhvbi9WZnJDb21waWxlci9JZnJDb21waWxlci5weSAgfCAgIDU4NiArDQo+ICAuLi4vU291cmNl L1B5dGhvbi9WZnJDb21waWxlci9JZnJDdHlwZXMucHkgICAgfCAgMTgxMSArKw0KPiAgLi4uL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRXJyb3IucHkgICAgIHwgICAxNTMgKw0KPiAgLi4u L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRm9ybVBrZy5weSAgIHwgIDI5MzcgKysrDQo+ ICAuLi4vUHl0aG9uL1ZmckNvbXBpbGVyL0lmclByZVByb2Nlc3MucHkgICAgICAgfCAgIDI0NSAr DQo+ICAuLi4vU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJUcmVlLnB5ICAgICAgfCAgMTEz MiArDQo+ICAuLi4vU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJVdGlsaXR5LnB5ICAgfCAg MjIyNiArKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvUmVhZG1lLm1k IHwgICAgNjggKw0KPiAgLi4uL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0 ICAgIHwgIDE5MjEgKysNCj4gIC4uLi9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIu cHkgICAgICB8ICAxNzA4ICsrDQo+ICAuLi4vUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheFBh cnNlci5weSAgICAgfCAyMDQ3NSArKysrKysrKysrKysrKysrDQo+ICAuLi4vUHl0aG9uL1ZmckNv bXBpbGVyL1ZmclN5bnRheFZpc2l0b3IucHkgICAgfCAgNTUwNCArKysrKw0KPiAgLi4uL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvX19pbml0X18ucHkgICAgIHwgICAgIDEgKw0KPiAgMTQgZmls ZXMgY2hhbmdlZCwgMzg4NjcgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckNvbW1vbi5weQ0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckNvbXBp bGVyLnB5DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZy Q29tcGlsZXIvSWZyQ3R5cGVzLnB5DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRXJyb3IucHkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJGb3JtUGtnLnB5DQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZy UHJlUHJvY2Vzcy5weQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1ZmckNvbXBpbGVyL0lmclRyZWUucHkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBCYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJVdGlsaXR5LnB5DQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvUmVhZG1lLm1kDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIv VmZyU3ludGF4Lmc0DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQYXJzZXIu cHkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9WZnJTeW50YXhWaXNpdG9yLnB5DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvX19pbml0X18ucHkNCj4gDQo+IGRpZmYgLS1n aXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJDb21tb24ucHkNCj4g Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJDb21tb24ucHkNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNzQyNWFiZTlhOQ0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lm ckNvbW1vbi5weQ0KPiBAQCAtMCwwICsxLDEwMCBAQA0KPiArIyMgQGZpbGUNCj4gDQo+ICsjIFRo aXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSBjb21tb24gZnVudGlvbnMuDQo+IA0KPiArIw0KPiAN Cj4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gDQo+ICsjIw0KPiANCj4gKw0KPiANCj4gK2ltcG9ydCBDb21tb24uRWRr TG9nZ2VyIGFzIEVka0xvZ2dlcg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyQ3R5cGVzIGlt cG9ydCBFRklfR1VJRA0KPiANCj4gK2Zyb20gQ29tbW9uLkJ1aWxkVG9vbEVycm9yIGltcG9ydCBQ QVJBTUVURVJfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyMgRW51bWVyYXRpb24gb2YgRUZJX1NU QVRVUy4NCj4gDQo+ICtSRVRVUk5fU1VDQ0VTUyA9IEVGSV9TVUNDRVNTID0gMA0KPiANCj4gK0VG SV9CVUZGRVJfVE9PX1NNQUxMID0gMHg4MDAwMDAwMDAwMDAwMDAwIHwgKDUpDQo+IA0KPiArRUZJ X0FCT1JURUQgPSAweDgwMDAwMDAwMDAwMDAwMDAgfCAoMjEpDQo+IA0KPiArRUZJX09VVF9PRl9S RVNPVVJDRVMgPSAweDgwMDAwMDAwMDAwMDAwMDAgfCAoOSkNCj4gDQo+ICtFRklfSU5WQUxJRF9Q QVJBTUVURVIgPSAweDgwMDAwMDAwMDAwMDAwMDAgfCAoMikNCj4gDQo+ICtFRklfTk9UX0ZPVU5E ID0gMHg4MDAwMDAwMDAwMDAwMDAwIHwgKDE0KQ0KPiANCj4gK1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiA9IDB4ODAwMDAwMDAwMDAwMDAwMCB8ICgyKQ0KPiANCj4gK1JFVFVSTl9VTlNVUFBPUlRF RCA9IDB4ODAwMDAwMDAwMDAwMDAwMCB8ICgzKQ0KPiANCj4gKw0KPiANCj4gK0FTQ0lJX0dVSURf QlVGRkVSX0lOREVYXzEgPSA4DQo+IA0KPiArQVNDSUlfR1VJRF9CVUZGRVJfSU5ERVhfMiA9IDEz DQo+IA0KPiArQVNDSUlfR1VJRF9CVUZGRVJfSU5ERVhfMyA9IDE4DQo+IA0KPiArQVNDSUlfR1VJ RF9CVUZGRVJfSU5ERVhfNCA9IDIzDQo+IA0KPiArQVNDSUlfR1VJRF9CVUZGRVJfTUFYX0lOREVY ID0gMzYNCj4gDQo+ICtHVUlEX0JVRkZFUl9WQUxVRV9MRU4gPSAxMQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2RlZiBFRklfRVJST1IoQSk6DQo+IA0KPiArICAgIHJldHVybiBBIDwgMA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyMgQ29udmVydHMgYSBzdHJpbmcgdG8gYW4gRUZJX0dVSUQu DQo+IA0KPiArZGVmIFN0cmluZ1RvR3VpZChBc2NpaUd1aWRCdWZmZXI6IHN0ciwgR3VpZEJ1ZmZl cjogRUZJX0dVSUQpOg0KPiANCj4gKyAgICBEYXRhNCA9IFswXSAqIDgNCj4gDQo+ICsgICAgaWYg QXNjaWlHdWlkQnVmZmVyIGlzIE5vbmUgb3IgR3VpZEJ1ZmZlciBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUg0KPiANCj4gKyAgICBJbmRleCA9IDAN Cj4gDQo+ICsgICAgd2hpbGUgSW5kZXggPCBBU0NJSV9HVUlEX0JVRkZFUl9NQVhfSU5ERVg6DQo+ IA0KPiArICAgICAgICBpZiAoDQo+IA0KPiArICAgICAgICAgICAgSW5kZXggPT0gQVNDSUlfR1VJ RF9CVUZGRVJfSU5ERVhfMQ0KPiANCj4gKyAgICAgICAgICAgIG9yIEluZGV4ID09IEFTQ0lJX0dV SURfQlVGRkVSX0lOREVYXzINCj4gDQo+ICsgICAgICAgICAgICBvciBJbmRleCA9PSBBU0NJSV9H VUlEX0JVRkZFUl9JTkRFWF8zDQo+IA0KPiArICAgICAgICAgICAgb3IgSW5kZXggPT0gQVNDSUlf R1VJRF9CVUZGRVJfSU5ERVhfNA0KPiANCj4gKyAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBBc2NpaUd1aWRCdWZmZXJbSW5kZXhdICE9ICItIjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgYnJlYWsNCj4gDQo+ICsgICAgICAgIGVsaWYgKA0KPiANCj4gKyAgICAgICAgICAgIChBc2Np aUd1aWRCdWZmZXJbSW5kZXhdID49ICIwIiBhbmQgQXNjaWlHdWlkQnVmZmVyW0luZGV4XSA8PSAi OSIpDQo+IA0KPiArICAgICAgICAgICAgb3IgKEFzY2lpR3VpZEJ1ZmZlcltJbmRleF0gPj0gImEi IGFuZCBBc2NpaUd1aWRCdWZmZXJbSW5kZXhdIDw9ICJmIikNCj4gDQo+ICsgICAgICAgICAgICBv ciAoQXNjaWlHdWlkQnVmZmVyW0luZGV4XSA+PSAiQSIgYW5kIEFzY2lpR3VpZEJ1ZmZlcltJbmRl eF0gPD0gIkYiKQ0KPiANCj4gKyAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAgICBJbmRleCAr PSAxDQo+IA0KPiArICAgICAgICAgICAgY29udGludWUNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgYnJlYWsNCj4gDQo+ICsgICAgICAgIEluZGV4ICs9IDENCj4gDQo+ ICsgICAgICAgIGNvbnRpbnVlDQo+IA0KPiArDQo+IA0KPiArICAgIGlmIEluZGV4IDwgQVNDSUlf R1VJRF9CVUZGRVJfTUFYX0lOREVYOg0KPiANCj4gKyAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCJW ZnJDb21waWxlciIsIFBBUkFNRVRFUl9JTlZBTElELCAiSW52YWxpZCBvcHRpb24NCj4gdmFsdWUi KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIEVGSV9BQk9SVEVEDQo+IA0KPiArICAgIEluZGV4ID0g R1VJRF9CVUZGRVJfVkFMVUVfTEVODQo+IA0KPiArICAgIHRyeToNCj4gDQo+ICsgICAgICAgIERh dGExID0gaW50KEFzY2lpR3VpZEJ1ZmZlclswOjhdLCAxNikNCj4gDQo+ICsgICAgICAgIERhdGEy ID0gaW50KEFzY2lpR3VpZEJ1ZmZlcls5OjEzXSwgMTYpDQo+IA0KPiArICAgICAgICBEYXRhMyA9 IGludChBc2NpaUd1aWRCdWZmZXJbMTQ6MThdLCAxNikNCj4gDQo+ICsgICAgICAgIERhdGE0WzBd ID0gaW50KEFzY2lpR3VpZEJ1ZmZlclsxOToyMV0sIDE2KQ0KPiANCj4gKyAgICAgICAgRGF0YTRb MV0gPSBpbnQoQXNjaWlHdWlkQnVmZmVyWzIxOjIzXSwgMTYpDQo+IA0KPiArICAgICAgICBEYXRh NFsyXSA9IGludChBc2NpaUd1aWRCdWZmZXJbMjQ6MjZdLCAxNikNCj4gDQo+ICsgICAgICAgIERh dGE0WzNdID0gaW50KEFzY2lpR3VpZEJ1ZmZlclsyNjoyOF0sIDE2KQ0KPiANCj4gKyAgICAgICAg RGF0YTRbNF0gPSBpbnQoQXNjaWlHdWlkQnVmZmVyWzI4OjMwXSwgMTYpDQo+IA0KPiArICAgICAg ICBEYXRhNFs1XSA9IGludChBc2NpaUd1aWRCdWZmZXJbMzA6MzJdLCAxNikNCj4gDQo+ICsgICAg ICAgIERhdGE0WzZdID0gaW50KEFzY2lpR3VpZEJ1ZmZlclszMjozNF0sIDE2KQ0KPiANCj4gKyAg ICAgICAgRGF0YTRbN10gPSBpbnQoQXNjaWlHdWlkQnVmZmVyWzM0OjM2XSwgMTYpDQo+IA0KPiAr ICAgIGV4Y2VwdCBFeGNlcHRpb246DQo+IA0KPiArICAgICAgICBFZGtMb2dnZXIuZXJyb3IoIlZm ckNvbXBpbGVyIiwgUEFSQU1FVEVSX0lOVkFMSUQsICJJbnZhbGlkIERhdGENCj4gdmFsdWUhIikN Cj4gDQo+ICsgICAgICAgIEluZGV4ID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZlcmlmeSB0 aGUgY29ycmVjdCBudW1iZXIgb2YgaXRlbXMgd2VyZSBzY2FubmVkLg0KPiANCj4gKyAgICBpZiBJ bmRleCAhPSBHVUlEX0JVRkZFUl9WQUxVRV9MRU46DQo+IA0KPiArICAgICAgICBFZGtMb2dnZXIu ZXJyb3IoIlZmckNvbXBpbGVyIiwgUEFSQU1FVEVSX0lOVkFMSUQsICJJbnZhbGlkIG9wdGlvbg0K PiB2YWx1ZSIpDQo+IA0KPiArICAgICAgICByZXR1cm4gRUZJX0FCT1JURUQNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBDb3B5IHRoZSBkYXRhIGludG8gb3VyIEdVSUQuDQo+IA0KPiArICAgIEd1aWRC dWZmZXIuRGF0YTEgPSBEYXRhMQ0KPiANCj4gKyAgICBHdWlkQnVmZmVyLkRhdGEyID0gRGF0YTIN Cj4gDQo+ICsgICAgR3VpZEJ1ZmZlci5EYXRhMyA9IERhdGEzDQo+IA0KPiArICAgIEd1aWRCdWZm ZXIuRGF0YTRbMF0gPSBEYXRhNFswXQ0KPiANCj4gKyAgICBHdWlkQnVmZmVyLkRhdGE0WzFdID0g RGF0YTRbMV0NCj4gDQo+ICsgICAgR3VpZEJ1ZmZlci5EYXRhNFsyXSA9IERhdGE0WzJdDQo+IA0K PiArICAgIEd1aWRCdWZmZXIuRGF0YTRbM10gPSBEYXRhNFszXQ0KPiANCj4gKyAgICBHdWlkQnVm ZmVyLkRhdGE0WzRdID0gRGF0YTRbNF0NCj4gDQo+ICsgICAgR3VpZEJ1ZmZlci5EYXRhNFs1XSA9 IERhdGE0WzVdDQo+IA0KPiArICAgIEd1aWRCdWZmZXIuRGF0YTRbNl0gPSBEYXRhNFs2XQ0KPiAN Cj4gKyAgICBHdWlkQnVmZmVyLkRhdGE0WzddID0gRGF0YTRbN10NCj4gDQo+ICsgICAgU3RhdHVz ID0gRUZJX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgcmV0dXJuIFN0YXR1cywgR3VpZEJ1 ZmZlcg0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBp bGVyL0lmckNvbXBpbGVyLnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGls ZXIvSWZyQ29tcGlsZXIucHkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uMTViZjNkNTliYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckNvbXBpbGVyLnB5DQo+IEBAIC0wLDAgKzEsNTg2IEBA DQo+ICsjIyBAZmlsZQ0KPiANCj4gKyMgRXh0ZW50ZWQgUHl0aG9uIFZmckNvbXBpbGVyIFRvb2wu DQo+IA0KPiArIw0KPiANCj4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsjIw0KPiANCj4gKw0KPiANCj4gK2lt cG9ydCBvcw0KPiANCj4gK2ltcG9ydCBzeXMNCj4gDQo+ICtpbXBvcnQgYXJncGFyc2UNCj4gDQo+ ICtpbXBvcnQgQ29tbW9uLkVka0xvZ2dlciBhcyBFZGtMb2dnZXINCj4gDQo+ICtmcm9tIHBhdGhs aWIgaW1wb3J0IFBhdGgNCj4gDQo+ICtmcm9tIGFudGxyNCBpbXBvcnQgKg0KPiANCj4gK2Zyb20g ZW51bSBpbXBvcnQgRW51bQ0KPiANCj4gK2Zyb20gQ29tbW9uLkJ1aWxkVG9vbEVycm9yIGltcG9y dCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5WZnJTeW50YXhQYXJzZXIgaW1wb3J0IFZmclN5 bnRheFBhcnNlcg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyU3ludGF4VmlzaXRvciBpbXBv cnQgVmZyU3ludGF4VmlzaXRvcg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyU3ludGF4TGV4 ZXIgaW1wb3J0IFZmclN5bnRheExleGVyDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJDb21t b24gaW1wb3J0IEVGSV9TVUNDRVNTLCBFRklfRVJST1IsIFN0cmluZ1RvR3VpZA0KPiANCj4gK2Zy b20gVmZyQ29tcGlsZXIuSWZyVHJlZSBpbXBvcnQgSWZyVHJlZU5vZGUsIElmclRyZWUsDQo+IFZG Ul9DT01QSUxFUl9WRVJTSU9OLCBCVUlMRF9WRVJTSU9ODQo+IA0KPiArZnJvbSBWZnJDb21waWxl ci5JZnJQcmVQcm9jZXNzIGltcG9ydCBPcHRpb25zLCBQcmVQcm9jZXNzREINCj4gDQo+ICtmcm9t IFZmckNvbXBpbGVyLklmclV0aWxpdHkgaW1wb3J0IGdWZnJTdHJpbmdEQg0KPiANCj4gK2Zyb20g VmZyQ29tcGlsZXIuSWZyRm9ybVBrZyBpbXBvcnQgKA0KPiANCj4gKyAgICBnRm9ybVBrZywNCj4g DQo+ICsgICAgZ1ZmclZhckRhdGFUeXBlREIsDQo+IA0KPiArICAgIGdWZnJEZWZhdWx0U3RvcmUs DQo+IA0KPiArICAgIGdWZnJEYXRhU3RvcmFnZSwNCj4gDQo+ICsgICAgZ0lmckZvcm1JZCwNCj4g DQo+ICspDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJFcnJvciBpbXBvcnQgZ1ZmckVycm9y SGFuZGxlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ09NUElMRVJfUlVOX1NUQVRV UyhFbnVtKToNCj4gDQo+ICsgICAgU1RBVFVTX1NUQVJURUQgPSAwDQo+IA0KPiArICAgIFNUQVRV U19JTklUSUFMSVpFRCA9IDENCj4gDQo+ICsgICAgU1RBVFVTX1ZGUl9QUkVQUk9DRVNTRUQgPSAy DQo+IA0KPiArICAgIFNUQVRVU19WRlJfQ09NUElMRUVEID0gMw0KPiANCj4gKyAgICBTVEFUVVNf VkZSX0dFTkJJTkFSWSA9IDQNCj4gDQo+ICsgICAgU1RBVFVTX1lBTUxfR0VORVJBVEVEID0gNQ0K PiANCj4gKyAgICBTVEFUVVNfWUFNTF9QUkVQUk9DRVNTRUQgPSA2DQo+IA0KPiArICAgIFNUQVRV U19ZQU1MX0NPTVBJTEVEID0gNw0KPiANCj4gKyAgICBTVEFUVVNfWUFNTF9ETFRfQ09OU1VNRUQg PSA4DQo+IA0KPiArICAgIFNUQVRVU19ZQU1MX0dFTkJJTkFSWSA9IDkNCj4gDQo+ICsgICAgU1RB VFVTX0ZJTklTSEVEID0gMTANCj4gDQo+ICsgICAgU1RBVFVTX0ZBSUxFRCA9IDExDQo+IA0KPiAr ICAgIFNUQVRVU19ERUFEID0gMTINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsiIiINCj4gDQo+ ICsgVGhpcyBpcyBob3cgd2UgaW52b2tlIHRoZSBDIHByZXByb2Nlc3NvciBvbiB0aGUgVkZSIHNv dXJjZSBmaWxlDQo+IA0KPiArIHRvIHJlc29sdmUgI2RlZmluZXMsICNpbmNsdWRlcywgZXRjLiBU byBtYWtlIEMgc291cmNlIGZpbGVzDQo+IA0KPiArIHNoYXJlYWJsZSBiZXR3ZWVuIFZGUiBhbmQg ZHJpdmVycywgZGVmaW5lIFZGUkNPTVBJTEUgc28gdGhhdA0KPiANCj4gKyAjaWZkZWZzIGNhbiBi ZSB1c2VkIGluIHNoYXJlZCAuaCBmaWxlcy4NCj4gDQo+ICsiIiINCj4gDQo+ICtQUkVQUk9DRVNT T1JfQ09NTUFORCA9ICJjbCAiDQo+IA0KPiArUFJFUFJPQ0VTU09SX09QVElPTlMgPSAiL25vbG9n byAvRSAvVEMgL0RWRlJDT01QSUxFICINCj4gDQo+ICsNCj4gDQo+ICsjIFNwZWNpZnkgdGhlIGZp bGVuYW1lIGV4dGVuc2lvbnMgZm9yIHRoZSBmaWxlcyB3ZSBnZW5lcmF0ZS4NCj4gDQo+ICtWRlJf X0ZJTEVOQU1FX0VYVEVOU0lPTiA9ICIudmZyIg0KPiANCj4gK1ZGUl9QUkVQUk9DRVNTX0ZJTEVO QU1FX0VYVEVOU0lPTiA9ICIuaSINCj4gDQo+ICtWRlJfUEFDS0FHRV9GSUxFTkFNRV9FWFRFTlNJ T04gPSAiLmhwayINCj4gDQo+ICtWRlJfUkVDT1JETElTVF9GSUxFTkFNRV9FWFRFTlNJT04gPSAi LmxzdCINCj4gDQo+ICtWRlJfWUFNTF9GSUxFTkFNRV9FWFRFTlNJT04gPSAiLnltbCINCj4gDQo+ ICtWRlJfSlNPTl9GSUxFTkFNRV9FWFRFTlNJT04gPSAiLmpzb24iDQo+IA0KPiArDQo+IA0KPiAr V0FSTklOR19MT0dfTEVWRUwgPSAxNQ0KPiANCj4gK1VUSUxJVFlfTkFNRSA9ICJWZnJDb21waWxl ciINCj4gDQo+ICsNCj4gDQo+ICtwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigNCj4g DQo+ICsgICAgZGVzY3JpcHRpb249IlZmckNvbXBpbGVyIiwNCj4gDQo+ICsgICAgZXBpbG9nPWYi VmZyQ29tcGlsZSB2ZXJzaW9uIHtWRlJfQ09NUElMRVJfVkVSU0lPTn0gXA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB7QlVJTERfVkVSU0lPTn0gQ29weXJpZ2h0 IChjKSAyMDA0LTIwMTYgSW50ZWwNCj4gQ29ycG9yYXRpb24uXA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiIsDQo+IA0KPiArKQ0KPiAN Cj4gK3BhcnNlci5hZGRfYXJndW1lbnQoIklucHV0RmlsZU5hbWUiLCBoZWxwPSJJbnB1dCBzb3Vy Y2UgZmlsZSBuYW1lIikNCj4gDQo+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPiANCj4gKyAgICAi LS12ZnIiLCBkZXN0PSJMYW51Y2hWZnJDb21waWxlciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhl bHA9ImxhbnVjaA0KPiBWZnJDb21waWxlciINCj4gDQo+ICspDQo+IA0KPiArcGFyc2VyLmFkZF9h cmd1bWVudCgNCj4gDQo+ICsgICAgIi0tdmVyc2lvbiIsDQo+IA0KPiArICAgIGFjdGlvbj0idmVy c2lvbiIsDQo+IA0KPiArICAgIHZlcnNpb249ZiJWZnJDb21waWxlIHZlcnNpb24ge1ZGUl9DT01Q SUxFUl9WRVJTSU9OfSBCdWlsZA0KPiB7QlVJTERfVkVSU0lPTn0iLA0KPiANCj4gKyAgICBoZWxw PSJwcmludHMgdmVyc2lvbiBpbmZvIiwNCj4gDQo+ICspDQo+IA0KPiArcGFyc2VyLmFkZF9hcmd1 bWVudCgiLWwiLCBkZXN0PSJDcmVhdGVSZWNvcmRMaXN0RmlsZSIsIGhlbHA9ImNyZWF0ZSBhbg0K PiBvdXRwdXQgSUZSIGxpc3RpbmcgZmlsZSIpDQo+IA0KPiArcGFyc2VyLmFkZF9hcmd1bWVudCgi LWMiLCBkZXN0PSJDcmVhdGVZYW1sRmlsZSIsIGhlbHA9ImNyZWF0ZSBZYW1sIGZpbGUiKQ0KPiAN Cj4gK3BhcnNlci5hZGRfYXJndW1lbnQoIi1qIiwgZGVzdD0iQ3JlYXRlSnNvbkZpbGUiLCBoZWxw PSJjcmVhdGUgSnNvbiBmaWxlIikNCj4gDQo+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KCItdyIsIGRl c3Q9IldvcmtzcGFjZSIsIGhlbHA9IndvcmtzcGFjZSIpDQo+IA0KPiArcGFyc2VyLmFkZF9hcmd1 bWVudCgNCj4gDQo+ICsgICAgIi1vIiwNCj4gDQo+ICsgICAgIi0tb3V0cHV0LWRpcmVjdG9yeSIs DQo+IA0KPiArICAgICItb2QiLA0KPiANCj4gKyAgICBkZXN0PSJPdXRwdXREaXJlY3RvcnkiLA0K PiANCj4gKyAgICBoZWxwPSJkZXBvc2l0IGFsbCBvdXRwdXQgZmlsZXMgdG8gZGlyZWN0b3J5IE91 dHB1dERpciwgXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyBjdXJyZW50 IGRpcmVjdG9yeSIsDQo+IA0KPiArKQ0KPiANCj4gK3BhcnNlci5hZGRfYXJndW1lbnQoDQo+IA0K PiArICAgICItb28iLA0KPiANCj4gKyAgICAiLS1vbGQtb3V0cHV0LWRpcmVjdG9yeSIsDQo+IA0K PiArICAgICItb29kIiwNCj4gDQo+ICsgICAgZGVzdD0iT2xkT3V0cHV0RGlyZWN0b3J5IiwNCj4g DQo+ICsgICAgaGVscD0iRm9ybWVyIGRpcmVjdG9yeSBPdXRwdXREaXIgb2Ygb3V0cHV0IGZpbGVz LCBcDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIGN1cnJlbnQgZGlyZWN0 b3J5IiwNCj4gDQo+ICspDQo+IA0KPiArcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4gDQo+ICsgICAg Ii1iIiwNCj4gDQo+ICsgICAgIi0tY3JlYXRlLWlmci1wYWNrYWdlIiwNCj4gDQo+ICsgICAgIi1p YmluIiwNCj4gDQo+ICsgICAgZGVzdD0iQ3JlYXRlSWZyUGtnRmlsZSIsDQo+IA0KPiArICAgIGhl bHA9ImNyZWF0ZSBhbiBJRlIgSElJIHBhY2sgZmlsZSIsDQo+IA0KPiArKQ0KPiANCj4gK3BhcnNl ci5hZGRfYXJndW1lbnQoDQo+IA0KPiArICAgICItbiIsDQo+IA0KPiArICAgICItLW5vLXByZS1w cm9jZXNzaW5nIiwNCj4gDQo+ICsgICAgIi1ub3BwIiwNCj4gDQo+ICsgICAgZGVzdD0iU2tpcENQ cmVwcm9jZXNzb3IiLA0KPiANCj4gKyAgICBoZWxwPSJkbyBub3QgcHJlcHJvY2Vzc2luZyBpbnB1 dCBmaWxlIiwNCj4gDQo+ICspDQo+IA0KPiArcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4gDQo+ICsg ICAgIi1mIiwNCj4gDQo+ICsgICAgIi0tcHJlLXByb2Nlc3NpbmctZmxhZyIsDQo+IA0KPiArICAg ICItcHBmbGFnIiwNCj4gDQo+ICsgICAgZGVzdD0iQ1ByZXByb2Nlc3Nvck9wdGlvbnMiLA0KPiAN Cj4gKyAgICBoZWxwPSJDLXByZXByb2Nlc3NvciBhcmd1bWVudCIsDQo+IA0KPiArKSAgIw0KPiAN Cj4gK3BhcnNlci5hZGRfYXJndW1lbnQoDQo+IA0KPiArICAgICItcyIsICItLXN0cmluZy1kYiIs IGRlc3Q9IlN0cmluZ0ZpbGVOYW1lIiwgaGVscD0iaW5wdXQgdW5pIHN0cmluZyBwYWNrYWdlDQo+ IGZpbGUiDQo+IA0KPiArKQ0KPiANCj4gK3BhcnNlci5hZGRfYXJndW1lbnQoDQo+IA0KPiArICAg ICItZyIsDQo+IA0KPiArICAgICItLWd1aWQiLA0KPiANCj4gKyAgICBkZXN0PSJPdmVycmlkZUNs YXNzR3VpZCIsDQo+IA0KPiArICAgIGhlbHA9Im92ZXJyaWRlIGNsYXNzIGd1aWQgaW5wdXQsXA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0IGlzIHh4eHh4eHh4LXh4eHgteHh4eC14 eHh4LXh4eHh4eHh4eHh4eCIsDQo+IA0KPiArKQ0KPiANCj4gK3BhcnNlci5hZGRfYXJndW1lbnQo DQo+IA0KPiArICAgICItd2FlIiwgIi0td2FybmluZy1hcy1lcnJvciIsIGRlc3Q9Ildhcm5pbmdB c0Vycm9yIiwgaGVscD0idHJlYXQgd2FybmluZw0KPiBhcyBhbiBlcnJvciINCj4gDQo+ICspDQo+ IA0KPiArcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4gDQo+ICsgICAgIi1hIiwNCj4gDQo+ICsgICAg Ii0tYXV0b2RlZmF1bHQiLA0KPiANCj4gKyAgICBkZXN0PSJBdXRvRGVmYXVsdCIsDQo+IA0KPiAr ICAgIGhlbHA9ImdlbmVyYXRlIGRlZmF1bHQgdmFsdWUgZm9yIHF1ZXN0aW9uIG9wY29kZSBpZiBz b21lIGRlZmF1bHQgaXMNCj4gbWlzc2luZyIsDQo+IA0KPiArKQ0KPiANCj4gK3BhcnNlci5hZGRf YXJndW1lbnQoDQo+IA0KPiArICAgICItZCIsDQo+IA0KPiArICAgICItLWNoZWNrZGVmYXVsdCIs DQo+IA0KPiArICAgIGRlc3Q9IkNoZWNrRGVmYXVsdCIsDQo+IA0KPiArICAgIGhlbHA9ImNoZWNr IHRoZSBkZWZhdWx0IGluZm9ybWF0aW9uIGluIGEgcXVlc3Rpb24gb3Bjb2RlIiwNCj4gDQo+ICsp DQo+IA0KPiArcGFyc2VyLmFkZF9hcmd1bWVudCgiLW0iLCAiLS1tb2R1bGVuYW1lIiwgZGVzdD0i TW9kdWxlTmFtZSIsDQo+IGhlbHA9Ik1vZHVsZSBuYW1lIikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBDbWRQYXJzZXI6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBBcmdz LCBBcmdjKToNCj4gDQo+ICsgICAgICAgIHNlbGYuT3B0aW9ucyA9IE9wdGlvbnMoKQ0KPiANCj4g KyAgICAgICAgc2VsZi5SdW5TdGF0dXMgPSBDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19TVEFS VEVEDQo+IA0KPiArICAgICAgICBzZWxmLlByZVByb2Nlc3NDbWQgPSBQUkVQUk9DRVNTT1JfQ09N TUFORA0KPiANCj4gKyAgICAgICAgc2VsZi5QcmVQcm9jZXNzT3B0ID0gUFJFUFJPQ0VTU09SX09Q VElPTlMNCj4gDQo+ICsgICAgICAgIHNlbGYuT3B0aW9uSW50aWFsaXphdGlvbihBcmdzLCBBcmdj KQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgT3B0aW9uSW50aWFsaXphdGlvbihzZWxmLCBBcmdz LCBBcmdjKToNCj4gDQo+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBpZiBBcmdjID09IDE6DQo+IA0KPiArICAgICAgICAgICAgcGFyc2VyLnBy aW50X2hlbHAoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElM RVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIEFyZ3MuTGFudWNoVmZyQ29tcGlsZXI6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5PcHRpb25zLkxhbnVjaFZmckNvbXBpbGVyID0gVHJ1ZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgQXJncy5DcmVhdGVSZWNvcmRMaXN0RmlsZToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk9wdGlvbnMuQ3JlYXRlUmVjb3JkTGlzdEZpbGUgPSBUcnVlDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBBcmdzLk1vZHVsZU5hbWU6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5PcHRpb25zLk1vZHVsZU5hbWUgPSBBcmdzLk1vZHVsZU5hbWUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIEFyZ3MuT3V0cHV0RGlyZWN0b3J5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgPSBBcmdzLk91dHB1dERpcmVjdG9yeQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCJWZnJDb21waWxlciIsIE9Q VElPTl9NSVNTSU5HLCAiLW8gbWlzc2luZw0KPiBvdXRwdXQgZGlyZWN0b3J5IG5hbWUiKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFU VVMuU1RBVFVTX0RFQUQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuT3B0aW9ucy5EZWJ1Z0RpcmVjdG9yeSA9DQo+IHN0cihQYXRoKHNlbGYu T3B0aW9ucy5PdXRwdXREaXJlY3RvcnkpLnBhcmVudCAvICJERUJVRyIpDQo+IA0KPiArICAgICAg ICAgICAgRWRrTG9nZ2VyLmRlYnVnKEVka0xvZ2dlci5ERUJVR184LCBmIk91dHB1dCBEaXJlY3Rv cnkNCj4ge3NlbGYuT3B0aW9ucy5PdXRwdXREaXJlY3Rvcnl9IikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGlmIEFyZ3MuV29ya3NwYWNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9u cy5Xb3Jrc3BhY2UgPSBBcmdzLldvcmtzcGFjZQ0KPiANCj4gKyAgICAgICAgICAgIElzSW5DbHVk ZVBhdGhMaW5lID0gRmFsc2UNCj4gDQo+ICsgICAgICAgICAgICBIYXNWRlJQUExpbmUgPSBGYWxz ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5JbmNsdWRlUGF0aHMgPSBbXQ0KPiAN Cj4gKyAgICAgICAgICAgIE1ha2VGaWxlID0gUGF0aChzZWxmLk9wdGlvbnMuT3V0cHV0RGlyZWN0 b3J5KS5wYXJlbnQgLyAiTWFrZWZpbGUiDQo+IA0KPiArICAgICAgICAgICAgaWYgTWFrZUZpbGUu ZXhpc3RzKCk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHdpdGggTWFrZUZpbGUub3Blbihtb2Rl PSJyIikgYXMgRmlsZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGZvciBMaW5lIGluIEZp bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGluZS5maW5kKCJJTkMgPSAg XFwiKSAhPSAtMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNJbkNsdWRl UGF0aExpbmUgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGluZS5maW5kKCJWRlJQUCA9 ICIpICE9IC0xOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNWRlJQUExp bmUgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuT3B0aW9u cy5WRlJQUCA9IExpbmUuc3BsaXQoIj0iKVsxXS5zdHJpcCgpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg aWYgSXNJbkNsdWRlUGF0aExpbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpbmUgPSBMaW5lLmxzdHJpcCgpLnJzdHJpcCgiIFxcXG5cciIpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIExpbmUuc3RhcnRzd2l0aCgiL0lDIik6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbkNsdWRlUGF0aCA9IExpbmUucmVwbGFjZSgi L0lDIiwgIkMiLCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5PcHRpb25zLkluY2x1ZGVQYXRocy5hcHBlbmQoSW5DbHVkZVBhdGgpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVsaWYgTGluZS5zdGFydHN3aXRoKCIvSWMiKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluQ2x1ZGVQYXRoID0gTGluZS5yZXBs YWNlKCIvSWMiLCAiQyIsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLk9wdGlvbnMuSW5jbHVkZVBhdGhzLmFwcGVuZChJbkNsdWRlUGF0aCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBMaW5lLnN0YXJ0c3dpdGgoIi9JJChXT1JL U1BBQ0UpIik6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbkNsdWRl UGF0aCA9IExpbmUucmVwbGFjZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiL0kkKFdPUktTUEFDRSkiLCBzZWxmLk9wdGlvbnMuV29ya3NwYWNlLCAxDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLk9wdGlvbnMuSW5jbHVkZVBhdGhzLmFwcGVuZChJbkNs dWRlUGF0aCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBMaW5lLnN0 YXJ0c3dpdGgoIi9JJChERUJVR19ESVIpIik6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbkNsdWRlUGF0aCA9IHNlbGYuT3B0aW9ucy5EZWJ1Z0RpcmVjdG9yeQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5PcHRpb25zLkluY2x1ZGVQ YXRocy5hcHBlbmQoSW5DbHVkZVBhdGgpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVsaWYgSGFzVkZSUFBMaW5lIGlzIEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSXNJbkNsdWRlUGF0aExpbmUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIEFyZ3MuT2xkT3V0cHV0 RGlyZWN0b3J5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5PbGRPdXRwdXREaXJl Y3RvcnkgPSBBcmdzLk9sZE91dHB1dERpcmVjdG9yeQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHNl bGYuT3B0aW9ucy5PbGRPdXRwdXREaXJlY3RvcnkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgRWRrTG9nZ2VyLmVycm9yKCJWZnJDb21waWxlciIsIE9QVElPTl9NSVNTSU5HLCAiLW9v IG1pc3NpbmcNCj4gb3V0cHV0IGRpcmVjdG9yeSBuYW1lIikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKQ0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsgICAgICAgICAgICBFZGtMb2dn ZXIuZGVidWcoDQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5ERUJVR184LCBmIk9s ZCBPdXRwdXQgRGlyZWN0b3J5DQo+IHtzZWxmLk9wdGlvbnMuT2xkT3V0cHV0RGlyZWN0b3J5fSIN Cj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBBcmdzLkNy ZWF0ZUlmclBrZ0ZpbGU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLkNyZWF0ZUlm clBrZ0ZpbGUgPSBUcnVlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBBcmdzLkNyZWF0ZVlh bWxGaWxlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5DcmVhdGVZYW1sRmlsZSA9 IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIEFyZ3MuQ3JlYXRlSnNvbkZpbGU6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLkNyZWF0ZUpzb25GaWxlID0gVHJ1ZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgaWYgQXJncy5Ta2lwQ1ByZXByb2Nlc3NvcjoNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk9wdGlvbnMuU2tpcENQcmVwcm9jZXNzb3IgPSBUcnVlDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBBcmdzLkNQcmVwcm9jZXNzb3JPcHRpb25zOg0KPiANCj4gKyAg ICAgICAgICAgIE9wdGlvbnMgPSBBcmdzLkNQcmVwcm9jZXNzb3JPcHRpb25zDQo+IA0KPiArICAg ICAgICAgICAgaWYgT3B0aW9ucyBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBFZGtM b2dnZXIuZXJyb3IoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAiVmZyQ29tcGlsZXIiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgT1BUSU9OX01JU1NJTkcsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAiLW9kIC0gbWlzc2luZyBDLXByZXByb2Nlc3NvciBhcmd1bWVudCIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5TRVRf UlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9wdGlvbnMuQ1ByZXBy b2Nlc3Nvck9wdGlvbnMgKz0gIiAiICsgT3B0aW9ucw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgQXJncy5TdHJpbmdGaWxlTmFtZToNCj4gDQo+ICsgICAgICAgICAgICBTdHJpbmdGaWxlTmFt ZSA9IEFyZ3MuU3RyaW5nRmlsZU5hbWUNCj4gDQo+ICsgICAgICAgICAgICBpZiBTdHJpbmdGaWxl TmFtZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoIlZm ckNvbXBpbGVyIiwgT1BUSU9OX01JU1NJTkcsICItcyBtaXNzaW5nIGlucHV0DQo+IHN0cmluZyBm aWxlIG5hbWUiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENP TVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiANCj4gKyAgICAgICAgICAgIGdWZnJTdHJpbmdEQi5TZXRTdHJpbmdGaWxlTmFtZShT dHJpbmdGaWxlTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZGVidWcoRWRrTG9n Z2VyLkRFQlVHXzgsIGYiSW5wdXQgc3RyaW5nIGZpbGUgcGF0aA0KPiB7U3RyaW5nRmlsZU5hbWV9 IikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIEFyZ3MuT3ZlcnJpZGVDbGFzc0d1aWQ6DQo+ IA0KPiArICAgICAgICAgICAgcmVzID0gU3RyaW5nVG9HdWlkKEFyZ3MuT3ZlcnJpZGVDbGFzc0d1 aWQsDQo+IHNlbGYuT3B0aW9ucy5PdmVycmlkZUNsYXNzR3VpZCkNCj4gDQo+ICsgICAgICAgICAg ICBpZiB0eXBlKHJlcykgPT0gImludCI6DQo+IA0KPiArICAgICAgICAgICAgICAgIFN0YXR1cyA9 IHJlcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIFN0 YXR1cyA9IHJlc1swXQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLk9wdGlvbnMuT3ZlcnJp ZGVDbGFzc0d1aWQgPSByZXNbMV0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBFRklf RVJST1IoU3RhdHVzKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIEZPUk1BVF9JTlZBTElELA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ZiJJbnZhbGlkIGZvcm1hdDoge0FyZ3MuT3ZlcnJpZGVDbGFzc0d1aWR9IiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVT KENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5IYXNPdmVy cmlkZUNsYXNzR3VpZCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIEFyZ3MuV2Fy bmluZ0FzRXJyb3I6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLldhcm5pbmdBc0Vy cm9yID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQXJncy5BdXRvRGVmYXVsdDoN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9wdGlvbnMuQXV0b0RlZmF1bHQgPSBUcnVlDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBBcmdzLkNoZWNrRGVmYXVsdDoNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLk9wdGlvbnMuQ2hlY2tEZWZhdWx0ID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgQXJncy5JbnB1dEZpbGVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3B0 aW9ucy5JbnB1dEZpbGVOYW1lID0gQXJncy5JbnB1dEZpbGVOYW1lDQo+IA0KPiArICAgICAgICAg ICAgaWYgc2VsZi5PcHRpb25zLklucHV0RmlsZU5hbWUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCJWZnJDb21waWxlciIsIE9QVElPTl9NSVNTSU5HLCAi SW5wdXQgZmlsZSBuYW1lDQo+IGlzIG5vdCBzcGVjaWZpZWQuIikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFE KQ0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICBpZiBzZWxmLk9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5IGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgPSAiIg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgc2VsZi5TZXRCYXNlRmlsZU5hbWUoKSAhPSAwOg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNf REVBRCkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGlmIHNlbGYuU2V0UGtnT3V0cHV0RmlsZU5hbWUoKSAhPSAwOg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYu U2V0Q091dHB1dEZpbGVOYW1lKCkgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNFVF9S VU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLlNldFByZXByb2Nl c3Nvck91dHB1dEZpbGVOYW1lKCkgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNFVF9S VU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLlNldFJlY29yZExp c3RGaWxlTmFtZSgpICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRV UyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKQ0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5TZXRTb3VyY2VZYW1sRmlsZU5h bWUoKSAhPSAwOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElM RVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuU2V0SnNvbkZpbGVOYW1lKCkgIT0gMDoNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMu U1RBVFVTX0RFQUQpDQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXRCYXNlRmlsZU5hbWUoc2VsZik6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLk9w dGlvbnMuSW5wdXRGaWxlTmFtZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiAt MQ0KPiANCj4gKyAgICAgICAgcEZpbGVOYW1lID0gc2VsZi5PcHRpb25zLklucHV0RmlsZU5hbWUN Cj4gDQo+ICsgICAgICAgIHdoaWxlIChwRmlsZU5hbWUuZmluZCgiXFwiKSAhPSAtMSkgb3IgKHBG aWxlTmFtZS5maW5kKCIvIikgIT0gLTEpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBGaWxlTmFt ZS5maW5kKCJcXCIpICE9IC0xOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpID0gcEZpbGVOYW1l LmZpbmQoIlxcIikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBpID0gcEZpbGVOYW1lLmZpbmQoIi8iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgPT0gbGVuKHBGaWxlTmFtZSkgLSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gLTENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBwRmlsZU5hbWUgPSBwRmlsZU5hbWVb aSArIDEgOl0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHBGaWxlTmFtZSA9PSAiIiBvciBw RmlsZU5hbWUuZmluZCgiLiIpID09IC0xOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiAtMQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZSA9IHBGaWxl TmFtZVs6IHBGaWxlTmFtZS5maW5kKCIuIildDQo+IA0KPiArICAgICAgICByZXR1cm4gMA0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgU2V0UGtnT3V0cHV0RmlsZU5hbWUoc2VsZik6DQo+IA0KPiAr ICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIC0xDQo+IA0KPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuTGFudWNo VmZyQ29tcGlsZXI6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLlBrZ091dHB1dEZp bGVOYW1lID0gc3RyKA0KPiANCj4gKyAgICAgICAgICAgICAgICBQYXRoKHNlbGYuT3B0aW9ucy5P dXRwdXREaXJlY3RvcnkpIC8NCj4gZiJQeVZmcl97c2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZX0u aHBrIg0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgIHJldHVybiAwDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXRDT3V0cHV0RmlsZU5hbWUoc2VsZik6DQo+IA0KPiArICAg ICAgICBpZiBzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIC0xDQo+IA0KPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuTGFudWNoVmZy Q29tcGlsZXI6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLkNPdXRwdXRGaWxlTmFt ZSA9IHN0cigNCj4gDQo+ICsgICAgICAgICAgICAgICAgUGF0aChzZWxmLk9wdGlvbnMuRGVidWdE aXJlY3RvcnkpIC8NCj4gZiJQeVZmcl97c2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZX0uYyINCj4g DQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICByZXR1cm4gMA0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgU2V0UHJlcHJvY2Vzc29yT3V0cHV0RmlsZU5hbWUoc2VsZik6DQo+IA0KPiAr ICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIC0xDQo+IA0KPiArICAgICAgICBzZWxmLk9wdGlvbnMuQ1Byb2Nlc3Nl ZFZmckZpbGVOYW1lID0gc3RyKA0KPiANCj4gKyAgICAgICAgICAgIFBhdGgoc2VsZi5PcHRpb25z Lk91dHB1dERpcmVjdG9yeSkgLyBmIntzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lfS5pIg0KPiAN Cj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIDANCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldFJlY29yZExpc3RGaWxlTmFtZShzZWxmKToNCj4gDQo+ICsgICAgICAgIGlmIHNl bGYuT3B0aW9ucy5CYXNlRmlsZU5hbWUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gLTENCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5MYW51Y2hWZnJDb21waWxlcjoN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9wdGlvbnMuUmVjb3JkTGlzdEZpbGVOYW1lID0gc3Ry KA0KPiANCj4gKyAgICAgICAgICAgICAgICBQYXRoKHNlbGYuT3B0aW9ucy5EZWJ1Z0RpcmVjdG9y eSkgLw0KPiBmIlB5VmZyX3tzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lfS5sc3QiDQo+IA0KPiAr ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIDANCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldFNvdXJjZVlhbWxGaWxlTmFtZShzZWxmKToNCj4gDQo+ICsgICAgICAgIGlmIHNl bGYuT3B0aW9ucy5CYXNlRmlsZU5hbWUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gLTENCj4gDQo+ICsgICAgICAgIHNlbGYuT3B0aW9ucy5ZYW1sRmlsZU5hbWUgPSBzdHIoDQo+ IA0KPiArICAgICAgICAgICAgUGF0aChzZWxmLk9wdGlvbnMuRGVidWdEaXJlY3RvcnkpIC8NCj4g ZiJ7c2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZX0ueW1sIg0KPiANCj4gKyAgICAgICAgKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5PcHRpb25zLllhbWxPdXRwdXRGaWxlTmFtZSA9IHN0cigNCj4gDQo+ ICsgICAgICAgICAgICBQYXRoKHNlbGYuT3B0aW9ucy5EZWJ1Z0RpcmVjdG9yeSkgLw0KPiBmIntz ZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lfUNvbXBpbGVkLnltbCINCj4gDQo+ICsgICAgICAgICkN Cj4gDQo+ICsgICAgICAgIHJldHVybiAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRKc29u RmlsZU5hbWUoc2VsZik6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQmFzZUZpbGVO YW1lIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIC0xDQo+IA0KPiArICAgICAg ICBzZWxmLk9wdGlvbnMuSnNvbkZpbGVOYW1lID0gc3RyKA0KPiANCj4gKyAgICAgICAgICAgIFBh dGgoc2VsZi5PcHRpb25zLkRlYnVnRGlyZWN0b3J5KSAvDQo+IGYie3NlbGYuT3B0aW9ucy5CYXNl RmlsZU5hbWV9Lmpzb24iDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArICAgICAgICByZXR1cm4g MA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRmluZEluY2x1ZGVIZWFkZXJGaWxlKHNlbGYsIFN0 YXJ0LCBOYW1lKToNCj4gDQo+ICsgICAgICAgIEZpbGVMaXN0ID0gW10NCj4gDQo+ICsgICAgICAg IGZvciBSZWxwYXRoLCBfLCBGaWxlcyBpbiBvcy53YWxrKFN0YXJ0KToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBOYW1lIGluIEZpbGVzOg0KPiANCj4gKyAgICAgICAgICAgICAgICBGdWxsUGF0aCA9 IG9zLnBhdGguam9pbihTdGFydCwgUmVscGF0aCwgTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgRmlsZUxpc3QuYXBwZW5kKG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5hYnNwYXRoKEZ1bGxQ YXRoKSkpDQo+IA0KPiArICAgICAgICByZXR1cm4gRmlsZUxpc3QNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNFVF9SVU5fU1RBVFVTKHNlbGYsIFN0YXR1cyk6DQo+IA0KPiArICAgICAgICBzZWxm LlJ1blN0YXR1cyA9IFN0YXR1cw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSVNfUlVOX1NUQVRV UyhzZWxmLCBTdGF0dXMpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUnVuU3RhdHVzID09 IFN0YXR1cw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIFZmckNvbXBpbGVyOg0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgQ21kOiBDbWRQYXJzZXIpOg0KPiANCj4gKyAgICAg ICAgc2VsZi5DbGVhcigpDQo+IA0KPiArICAgICAgICBzZWxmLk9wdGlvbnMgPSBDbWQuT3B0aW9u cw0KPiANCj4gKyAgICAgICAgc2VsZi5SdW5TdGF0dXMgPSBDbWQuUnVuU3RhdHVzDQo+IA0KPiAr ICAgICAgICBzZWxmLlZmclJvb3QgPSBJZnJUcmVlTm9kZSgpDQo+IA0KPiArICAgICAgICBzZWxm LlByZVByb2Nlc3NEQiA9IFByZVByb2Nlc3NEQihzZWxmLk9wdGlvbnMpDQo+IA0KPiArICAgICAg ICBzZWxmLlZmclRyZWUgPSBJZnJUcmVlKHNlbGYuVmZyUm9vdCwgc2VsZi5QcmVQcm9jZXNzREIs IHNlbGYuT3B0aW9ucykNCj4gDQo+ICsgICAgICAgIGlmIChub3Qgc2VsZi5JU19SVU5fU1RBVFVT KENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZBSUxFRCkpDQo+IGFuZCAoDQo+IA0KPiArICAg ICAgICAgICAgbm90IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRV U19ERUFEKQ0KPiANCj4gKyAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNFVF9S VU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0lOSVRJQUxJWkVEKQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgQ2xlYXIoc2VsZik6DQo+IA0KPiArICAgICAgICBnVmZyVmFyRGF0 YVR5cGVEQi5DbGVhcigpDQo+IA0KPiArICAgICAgICBnVmZyRGVmYXVsdFN0b3JlLkNsZWFyKCkN Cj4gDQo+ICsgICAgICAgIGdWZnJEYXRhU3RvcmFnZS5DbGVhcigpDQo+IA0KPiArICAgICAgICBn Rm9ybVBrZy5DbGVhcigpDQo+IA0KPiArICAgICAgICBnSWZyRm9ybUlkLkNsZWFyKCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIFByZVByb2Nlc3Moc2VsZik6DQo+IA0KPiArICAgICAgICBpZiBu b3QNCj4gc2VsZi5JU19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0lOSVRJ QUxJWkVEKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3Qgc2VsZi5JU19SVU5fU1RBVFVTKENP TVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZBSUxFRCkNCj4g DQo+ICsgICAgICAgIGVsaWYgc2VsZi5PcHRpb25zLlNraXBDUHJlcHJvY2Vzc29yIGlzIEZhbHNl Og0KPiANCj4gKyAgICAgICAgICAgICMgY2FsbCBDIHByZXByb2Nlc3NvciBmaXJzdCBpbiB0aGUg dG9vbCBpdHNlbGYsIGJ1dCBjdXJyZW50bHkgbm90IHN1cHBvcnQNCj4gaGVyZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNf RkFJTEVEKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAjIG1ha2Vm aWxlIHdpbGwgY2FsbCBjbCBjb21tYW5kcyB0byBnZW5lcmF0ZSAuaSBmaWxlDQo+IA0KPiArICAg ICAgICAgICAgIyBkbyBub3QgbmVlZCB0byBydW4gQyBwcmVwcm9jZXNzb3IgaW4gdGhpcyB0b29s IGl0c2VsZg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUHJlUHJvY2Vzc0RCLlByZXByb2Nlc3Mo KQ0KPiANCj4gKw0KPiBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RB VFVTX1ZGUl9QUkVQUk9DRVNTRUQpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBDb21waWxlKHNl bGYpOg0KPiANCj4gKyAgICAgICAgSW5GaWxlTmFtZSA9IHNlbGYuT3B0aW9ucy5DUHJvY2Vzc2Vk VmZyRmlsZU5hbWUNCj4gDQo+ICsgICAgICAgIGlmIG5vdA0KPiBzZWxmLklTX1JVTl9TVEFUVVMo Q09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfVkZSX1BSRVBST0NFU1NFRCk6DQo+IA0KPiArICAg ICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiANCj4gKyAgICAgICAgICAgICAgICAiVmZyQ29t cGlsZXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICBGSUxFX1BBUlNFX0ZBSUxVUkUsDQo+IA0K PiArICAgICAgICAgICAgICAgICJjb21waWxlIGVycm9yIGluIGZpbGUgJXMiICUgSW5GaWxlTmFt ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgSW5GaWxlTmFtZSwNCj4gDQo+ICsgICAgICAgICAg ICApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5f U1RBVFVTLlNUQVRVU19GQUlMRUQpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIGdWZnJFcnJvckhhbmRsZS5TZXRJbnB1dEZpbGUoc2VsZi5PcHRpb25zLklucHV0Rmls ZU5hbWUpDQo+IA0KPiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLlNldFdhcm5pbmdBc0Vy cm9yKHNlbGYuT3B0aW9ucy5XYXJuaW5nQXNFcnJvcikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgICAgIElucHV0U3RyZWFtID0gRmlsZVN0cmVh bShJbkZpbGVOYW1lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBWZnJMZXhlciA9IFZmclN5bnRh eExleGVyKElucHV0U3RyZWFtKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBWZnJTdHJlYW0gPSBD b21tb25Ub2tlblN0cmVhbShWZnJMZXhlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmZyUGFy c2VyID0gVmZyU3ludGF4UGFyc2VyKFZmclN0cmVhbSkNCj4gDQo+ICsgICAgICAgICAgICBleGNl cHQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBGSUxFX09QRU5fRkFJTFVSRSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJGaWxlIG9w ZW4gZmFpbGVkIGZvciAlcyIgJSBJbkZpbGVOYW1lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgSW5GaWxlTmFtZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiBub3Qgc2VsZi5JU19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RB VFVTX0RFQUQpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRV UyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GQUlMRUQpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVmlzaXRvciA9IFZmclN5bnRheFZp c2l0b3IoDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuUHJlUHJvY2Vzc0RCLCBzZWxmLlZm clJvb3QsIHNlbGYuT3B0aW9ucy5PdmVycmlkZUNsYXNzR3VpZA0KPiANCj4gKyAgICAgICAgICAg ICkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlZpc2l0b3IudmlzaXQoVmZyUGFyc2VyLnZmclBy b2dyYW0oKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLlZpc2l0b3IuUGFy c2VyU3RhdHVzICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLklTX1JV Tl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgIlZmckNvbXBpbGVyIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBGSUxF X1BBUlNFX0ZBSUxVUkUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBpbGUg ZXJyb3IgaW4gZmlsZSAlcyIgJSBJbkZpbGVOYW1lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIEluRmlsZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFU VVMuU1RBVFVTX0ZBSUxFRCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgaWYgZ0Zvcm1Qa2cuSGF2ZVBlbmRpbmdVbmFzc2lnbmVkKCkg aXMgVHJ1ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgZ0Zvcm1Qa2cuUGVuZGluZ0Fzc2lnblBy aW50QWxsKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuSVNfUlVOX1NUQVRV UyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAi VmZyQ29tcGlsZXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfUEFSU0Vf RkFJTFVSRSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGlsZSBlcnJvciBp biBmaWxlICVzIiAlIEluRmlsZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg SW5GaWxlTmFtZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFU VVNfRkFJTEVEKQ0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19WRlJf Q09NUElMRUVEKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5DcmVhdGVKc29u RmlsZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5WZnJUcmVlLkR1bXBKc29uKCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdlbkJpbmFyeShzZWxmKToNCj4gDQo+ICsgICAgICAgIGlm IG5vdA0KPiBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfVkZS X0NPTVBJTEVFRCk6DQo+IA0KPiArICAgICAgICAgICAgaWYgbm90IHNlbGYuSVNfUlVOX1NUQVRV UyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GQUlMRUQp DQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9u cy5DcmVhdGVJZnJQa2dGaWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLlZmclRyZWUu R2VuQmluYXJ5KCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdlbkNGaWxlKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgaWYgbm90DQo+IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RB VFVTLlNUQVRVU19WRlJfQ09NUElMRUVEKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3Qgc2Vs Zi5JU19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMu U1RBVFVTX0ZBSUxFRCkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg aWYgc2VsZi5PcHRpb25zLkNyZWF0ZUlmclBrZ0ZpbGU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuVmZyVHJlZS5HZW5DRmlsZSgpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZW5SZWNv cmRMaXN0RmlsZShzZWxmKToNCj4gDQo+ICsgICAgICAgIGlmIG5vdA0KPiBzZWxmLklTX1JVTl9T VEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfVkZSX0NPTVBJTEVFRCk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgbm90IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVT LlNUQVRVU19ERUFEKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRV UyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GQUlMRUQpDQo+IA0KPiArICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5DcmVhdGVSZWNvcmRMaXN0Rmls ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5WZnJUcmVlLkdlblJlY29yZExpc3RGaWxl KCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdlbkJpbmFyeUZpbGVzKHNlbGYpOg0KPiANCj4g KyAgICAgICAgaWYgbm90DQo+IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVT LlNUQVRVU19WRlJfQ09NUElMRUVEKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3Qgc2VsZi5J U19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RB VFVTX0ZBSUxFRCkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5WZnJUcmVlLkdlbkJpbmFyeUZpbGVzKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNFVF9S VU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZJTklTSEVEKQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgRHVtcFNvdXJjZVlhbWwoc2VsZik6DQo+IA0KPiArICAgICAgICBpZiBu b3Qgc2VsZi5JU19SVU5fU1RBVFVTKA0KPiANCj4gKyAgICAgICAgICAgIENPTVBJTEVSX1JVTl9T VEFUVVMuU1RBVFVTX1ZGUl9DT01QSUxFRUQNCj4gDQo+ICsgICAgICAgICkgYW5kIG5vdA0KPiBz ZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfRklOSVNIRUQpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVO X1NUQVRVUy5TVEFUVVNfREVBRCk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuU0VUX1JV Tl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfRkFJTEVEKQ0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQ3JlYXRlWWFtbEZp bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuVmZyVHJlZS5EdW1wWWFtbEZvclhNTENM SSgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5f U1RBVFVTLlNUQVRVU19GSU5JU0hFRCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNFVF9SVU5f U1RBVFVTKHNlbGYsIFN0YXR1cyk6DQo+IA0KPiArICAgICAgICBzZWxmLlJ1blN0YXR1cyA9IFN0 YXR1cw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSVNfUlVOX1NUQVRVUyhzZWxmLCBTdGF0dXMp Og0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUnVuU3RhdHVzID09IFN0YXR1cw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2RlZiBtYWluKCk6DQo+IA0KPiArICAgIEFyZ3MgPSBwYXJzZXIu cGFyc2VfYXJncygpDQo+IA0KPiArICAgIEFyZ2MgPSBsZW4oc3lzLmFyZ3YpDQo+IA0KPiArICAg IEVka0xvZ2dlci5TZXRMZXZlbChXQVJOSU5HX0xPR19MRVZFTCkNCj4gDQo+ICsgICAgQ21kID0g Q21kUGFyc2VyKEFyZ3MsIEFyZ2MpDQo+IA0KPiArICAgIENvbXBpbGVyID0gVmZyQ29tcGlsZXIo Q21kKQ0KPiANCj4gKyAgICBDb21waWxlci5QcmVQcm9jZXNzKCkNCj4gDQo+ICsgICAgQ29tcGls ZXIuQ29tcGlsZSgpDQo+IA0KPiArICAgIENvbXBpbGVyLkdlbkJpbmFyeUZpbGVzKCkNCj4gDQo+ ICsgICAgQ29tcGlsZXIuRHVtcFNvdXJjZVlhbWwoKQ0KPiANCj4gKyAgICBTdGF0dXMgPSBDb21w aWxlci5SdW5TdGF0dXMNCj4gDQo+ICsgICAgaWYgU3RhdHVzID09IENPTVBJTEVSX1JVTl9TVEFU VVMuU1RBVFVTX0RFQUQgb3IgU3RhdHVzID09DQo+IENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVT X0ZBSUxFRDoNCj4gDQo+ICsgICAgICAgIHJldHVybiAyDQo+IA0KPiArDQo+IA0KPiArICAgIHJl dHVybiBFRklfU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2lmIF9fbmFtZV9fID09 ICJfX21haW5fXyI6DQo+IA0KPiArICAgIHN5cy5leGl0KG1haW4oKSkNCj4gDQo+IGRpZmYgLS1n aXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJDdHlwZXMucHkNCj4g Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJDdHlwZXMucHkNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uYTdmN2EzMmEyNw0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lm ckN0eXBlcy5weQ0KPiBAQCAtMCwwICsxLDE4MTEgQEANCj4gKyMjIEBmaWxlDQo+IA0KPiArIyBU aGlzIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIGNvbW1vbiBDIHN0cnVjdCBhbmQgZnVuY3Rp b25zLg0KPiANCj4gKyMNCj4gDQo+ICsjIENvcHlyaWdodCAoYykgMjAyMi0sIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICsjIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiArIyMNCj4gDQo+ICsNCj4gDQo+ ICtmcm9tIGN0eXBlcyBpbXBvcnQgKg0KPiANCj4gK2Zyb20gc3RydWN0IGltcG9ydCAqDQo+IA0K PiArZnJvbSBlbnVtIGltcG9ydCBFbnVtDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArRUZJX1NU UklOR19JRF9JTlZBTElEID0gMHgwDQo+IA0KPiArRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5E QVJEID0gMHgwMDAwDQo+IA0KPiArRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVVJJTkcg PSAweDAwMDENCj4gDQo+ICtFRklfSUZSX01BWF9MRU5HVEggPSAweEZGDQo+IA0KPiArRUZJX1ZB UlNUT1JFX0lEX0lOVkFMSUQgPSAwDQo+IA0KPiArRUZJX1ZBUlNUT1JFX0lEX1NUQVJUID0gMHgy MA0KPiANCj4gK0VGSV9WQVJPRkZTRVRfSU5WQUxJRCA9IDB4RkZGRg0KPiANCj4gK0VGSV9JTUFH RV9JRF9JTlZBTElEID0gMHhGRkZGDQo+IA0KPiArDQo+IA0KPiArRUZJX05PTl9ERVZJQ0VfQ0xB U1MgPSAweDAwDQo+IA0KPiArRUZJX0RJU0tfREVWSUNFX0NMQVNTID0gMHgwMQ0KPiANCj4gK0VG SV9WSURFT19ERVZJQ0VfQ0xBU1MgPSAweDAyDQo+IA0KPiArRUZJX05FVFdPUktfREVWSUNFX0NM QVNTID0gMHgwNA0KPiANCj4gK0VGSV9JTlBVVF9ERVZJQ0VfQ0xBU1MgPSAweDA4DQo+IA0KPiAr RUZJX09OX0JPQVJEX0RFVklDRV9DTEFTUyA9IDB4MTANCj4gDQo+ICtFRklfT1RIRVJfREVWSUNF X0NMQVNTID0gMHgyMA0KPiANCj4gKw0KPiANCj4gK0VGSV9TRVRVUF9BUFBMSUNBVElPTl9TVUJD TEFTUyA9IDB4MDANCj4gDQo+ICtFRklfR0VORVJBTF9BUFBMSUNBVElPTl9TVUJDTEFTUyA9IDB4 MDENCj4gDQo+ICtFRklfRlJPTlRfUEFHRV9TVUJDTEFTUyA9IDB4MDINCj4gDQo+ICtFRklfU0lO R0xFX1VTRV9TVUJDTEFTUyA9IDB4MDMNCj4gDQo+ICsNCj4gDQo+ICsjIEVGSV9ISUlfUEFDS0FH RV9UWVBFX3guDQo+IA0KPiArDQo+IA0KPiArRUZJX0hJSV9QQUNLQUdFX1RZUEVfQUxMID0gMHgw MA0KPiANCj4gK0VGSV9ISUlfUEFDS0FHRV9UWVBFX0dVSUQgPSAweDAxDQo+IA0KPiArRUZJX0hJ SV9QQUNLQUdFX0ZPUk0gPSAweDAyDQo+IA0KPiArRUZJX0hJSV9QQUNLQUdFX0tFWUJPQVJEX0xB WU9VVCA9IDB4MDMNCj4gDQo+ICtFRklfSElJX1BBQ0tBR0VfU1RSSU5HUyA9IDB4MDQNCj4gDQo+ ICtFRklfSElJX1BBQ0tBR0VfRk9OVFMgPSAweDA1DQo+IA0KPiArRUZJX0hJSV9QQUNLQUdFX0lN QUdFUyA9IDB4MDYNCj4gDQo+ICtFRklfSElJX1BBQ0tBR0VfU0lNUExFX0ZPTlRTID0gMHgwNw0K PiANCj4gK0VGSV9ISUlfUEFDS0FHRV9ERVZJQ0VfUEFUSCA9IDB4MDgNCj4gDQo+ICtFRklfSElJ X1BBQ0tBR0VfRU5EID0gMHhERg0KPiANCj4gK0VGSV9ISUlfUEFDS0FHRV9UWVBFX1NZU1RFTV9C RUdJTiA9IDB4RTANCj4gDQo+ICtFRklfSElJX1BBQ0tBR0VfVFlQRV9TWVNURU1fRU5EID0gMHhG Rg0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfRVhURU5EX09QX0xBQkVMID0gMHgwDQo+IA0KPiAr RUZJX0lGUl9FWFRFTkRfT1BfQkFOTkVSID0gMHgxDQo+IA0KPiArRUZJX0lGUl9FWFRFTkRfT1Bf VElNRU9VVCA9IDB4Mg0KPiANCj4gK0VGSV9JRlJfRVhURU5EX09QX0NMQVNTID0gMHgzDQo+IA0K PiArRUZJX0lGUl9FWFRFTkRfT1BfU1VCQ0xBU1MgPSAweDQNCj4gDQo+ICsNCj4gDQo+ICtNQVhf SUZSX0VYUFJFU1NJT05fREVQVEggPSAweDkNCj4gDQo+ICsNCj4gDQo+ICtJTlZBTElEX0FSUkFZ X0lOREVYID0gMHhGRkZGRkZGRg0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfVFlQRV9OVU1fU0la RV84ID0gMHgwMA0KPiANCj4gK0VGSV9JRlJfVFlQRV9OVU1fOF9CSVRfU0laRSA9IDB4MDENCj4g DQo+ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYgPSAweDAxDQo+IA0KPiArRUZJX0lGUl9UWVBF X05VTV8xNl9CSVRfU0laRSA9IDB4MDINCj4gDQo+ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIg PSAweDAyDQo+IA0KPiArRUZJX0lGUl9UWVBFX05VTV8zMl9CSVRfU0laRSA9IDB4MDQNCj4gDQo+ ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQgPSAweDAzDQo+IA0KPiArRUZJX0lGUl9UWVBFX05V TV82NF9CSVRfU0laRSA9IDB4MDgNCj4gDQo+ICtFRklfSUZSX1RZUEVfQk9PTEVBTiA9IDB4MDQN Cj4gDQo+ICtFRklfSUZSX1RZUEVfVElNRSA9IDB4MDUNCj4gDQo+ICtFRklfSUZSX1RZUEVfREFU RSA9IDB4MDYNCj4gDQo+ICtFRklfSUZSX1RZUEVfU1RSSU5HID0gMHgwNw0KPiANCj4gK0VGSV9J RlJfVFlQRV9PVEhFUiA9IDB4MDgNCj4gDQo+ICtFRklfSUZSX1RZUEVfVU5ERUZJTkVEID0gMHgw OQ0KPiANCj4gK0VGSV9JRlJfVFlQRV9BQ1RJT04gPSAweDBBDQo+IA0KPiArRUZJX0lGUl9UWVBF X0JVRkZFUiA9IDB4MEINCj4gDQo+ICtFRklfSUZSX1RZUEVfUkVGID0gMHgwQw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK0VGSV9JRlJfRkxBR1NfSE9SSVpPTlRBTCA9IDB4MDENCj4gDQo+ICsN Cj4gDQo+ICtFRklfSUZSX0ZMQUdfUkVBRF9PTkxZID0gMHgwMQ0KPiANCj4gK0VGSV9JRlJfRkxB R19DQUxMQkFDSyA9IDB4MDQNCj4gDQo+ICtFRklfSUZSX0ZMQUdfUkVTRVRfUkVRVUlSRUQgPSAw eDEwDQo+IA0KPiArRUZJX0lGUl9GTEFHX1JFU1RfU1RZTEUgPSAweDIwDQo+IA0KPiArRUZJX0lG Ul9GTEFHX1JFQ09OTkVDVF9SRVFVSVJFRCA9IDB4NDANCj4gDQo+ICtFRklfSUZSX0ZMQUdfT1BU SU9OU19PTkxZID0gMHg4MA0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfU1RSSU5HX01VTFRJX0xJ TkUgPSAweDAxDQo+IA0KPiArDQo+IA0KPiArRURLSUlfSUZSX0RJU1BMQVlfQklUID0gMHhDMA0K PiANCj4gK0VES0lJX0lGUl9ESVNQTEFZX0lOVF9ERUNfQklUID0gMHgwMA0KPiANCj4gK0VES0lJ X0lGUl9ESVNQTEFZX1VJTlRfREVDX0JJVCA9IDB4NDANCj4gDQo+ICtFREtJSV9JRlJfRElTUExB WV9VSU5UX0hFWF9CSVQgPSAweDgwDQo+IA0KPiArDQo+IA0KPiArRURLSUlfSUZSX05VTUVSSUNf U0laRV9CSVQgPSAweDNGDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9NQVhfREVGQVVMVF9UWVBF ID0gMHgxMA0KPiANCj4gKw0KPiANCj4gK0VGSV9ISUlfU0lCVF9FTkQgPSAweDAwDQo+IA0KPiAr RUZJX0hJSV9TSUJUX1NUUklOR19TQ1NVID0gMHgxMA0KPiANCj4gK0VGSV9ISUlfU0lCVF9TVFJJ TkdfU0NTVV9GT05UID0gMHgxMQ0KPiANCj4gK0VGSV9ISUlfU0lCVF9TVFJJTkdTX1NDU1UgPSAw eDEyDQo+IA0KPiArRUZJX0hJSV9TSUJUX1NUUklOR1NfU0NTVV9GT05UID0gMHgxMw0KPiANCj4g K0VGSV9ISUlfU0lCVF9TVFJJTkdfVUNTMiA9IDB4MTQNCj4gDQo+ICtFRklfSElJX1NJQlRfU1RS SU5HX1VDUzJfRk9OVCA9IDB4MTUNCj4gDQo+ICtFRklfSElJX1NJQlRfU1RSSU5HU19VQ1MyID0g MHgxNg0KPiANCj4gK0VGSV9ISUlfU0lCVF9TVFJJTkdTX1VDUzJfRk9OVCA9IDB4MTcNCj4gDQo+ ICtFRklfSElJX1NJQlRfRFVQTElDQVRFID0gMHgyMA0KPiANCj4gK0VGSV9ISUlfU0lCVF9TS0lQ MiA9IDB4MjENCj4gDQo+ICtFRklfSElJX1NJQlRfU0tJUDEgPSAweDIyDQo+IA0KPiArRUZJX0hJ SV9TSUJUX0VYVDEgPSAweDMwDQo+IA0KPiArRUZJX0hJSV9TSUJUX0VYVDIgPSAweDMxDQo+IA0K PiArRUZJX0hJSV9TSUJUX0VYVDQgPSAweDMyDQo+IA0KPiArRUZJX0hJSV9TSUJUX0ZPTlQgPSAw eDQwDQo+IA0KPiArDQo+IA0KPiArQmFzaWNUeXBlcyA9IFsNCj4gDQo+ICsgICAgRUZJX0lGUl9U WVBFX05VTV9TSVpFXzgsDQo+IA0KPiArICAgIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNiwNCj4g DQo+ICsgICAgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyLA0KPiANCj4gKyAgICBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfNjQsDQo+IA0KPiArXQ0KPiANCj4gK0Jhc2ljQ0ludHMgPSBbY191aW50NjQs IGNfdWludDMyLCBjX3VpbnQxNiwgY191aW50OCwgY191Ynl0ZSwgY191c2hvcnRdDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0dVSUQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiRGF0 YTEiLCBjX3VpbnQzMiksDQo+IA0KPiArICAgICAgICAoIkRhdGEyIiwgY191aW50MTYpLA0KPiAN Cj4gKyAgICAgICAgKCJEYXRhMyIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiRGF0YTQi LCBjX3VieXRlICogOCksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGZy b21fbGlzdChzZWxmLCBsaXN0Zm9ybWF0OiBsaXN0KSAtPiBOb25lOg0KPiANCj4gKyAgICAgICAg c2VsZi5EYXRhMSA9IGxpc3Rmb3JtYXRbMF0NCj4gDQo+ICsgICAgICAgIHNlbGYuRGF0YTIgPSBs aXN0Zm9ybWF0WzFdDQo+IA0KPiArICAgICAgICBzZWxmLkRhdGEzID0gbGlzdGZvcm1hdFsyXQ0K PiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOCk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5EYXRhNFtpXSA9IGxpc3Rmb3JtYXRbaSArIDNdDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB0 b19zdHJpbmcoc2VsZikgLT4gc3RyOg0KPiANCj4gKyAgICAgICAgR3VpZFN0ciA9IGYie3t7c2Vs Zi5EYXRhMTojeH0sIHtzZWxmLkRhdGEyOiN4fSwge3NlbGYuRGF0YTM6I3h9LCB7eyB7JywNCj4g Jy5qb2luKGYne3g6I3h9JyBmb3IgeCBpbiBzZWxmLkRhdGE0KX19fX19Ig0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIEd1aWRTdHINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fY21w X18oc2VsZiwgb3RoZXJndWlkKSAtPiBib29sOg0KPiANCj4gKyAgICAgICAgaWYgbm90IGlzaW5z dGFuY2Uob3RoZXJndWlkLCBFRklfR1VJRCk6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuICJJ bnB1dCBpcyBub3QgdGhlIEdVSUQgaW5zdGFuY2UhIg0KPiANCj4gKyAgICAgICAgcnQgPSBGYWxz ZQ0KPiANCj4gKyAgICAgICAgaWYgKA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRGF0YTEgPT0g b3RoZXJndWlkLkRhdGExDQo+IA0KPiArICAgICAgICAgICAgYW5kIHNlbGYuRGF0YTIgPT0gb3Ro ZXJndWlkLkRhdGEyDQo+IA0KPiArICAgICAgICAgICAgYW5kIHNlbGYuRGF0YTMgPT0gb3RoZXJn dWlkLkRhdGEzDQo+IA0KPiArICAgICAgICApOg0KPiANCj4gKyAgICAgICAgICAgIHJ0ID0gVHJ1 ZQ0KPiANCj4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDgpOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBydCA9IHJ0ICYgKHNlbGYuRGF0YTRbaV0gPT0gb3RoZXJndWlkLkRhdGE0W2ldKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIHJ0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArR3VpZEFy cmF5ID0gY191Ynl0ZSAqIDgNCj4gDQo+ICtFRklfSElJX1BMQVRGT1JNX1NFVFVQX0ZPUk1TRVRf R1VJRCA9IEVGSV9HVUlEKA0KPiANCj4gKyAgICAweDkzMDM5OTcxLCAweDg1NDUsIDB4NEIwNCwg R3VpZEFycmF5KDB4QjQsIDB4NUUsIDB4MzIsIDB4RUIsIDB4ODMsDQo+IDB4MjYsIDB4NCwgMHhF KQ0KPiANCj4gKykNCj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX1RJQU5PX0dVSUQgPSBFRklfR1VJ RCgNCj4gDQo+ICsgICAgMHhGMEIxNzM1LCAweDg3QTAsIDB4NDE5MywgR3VpZEFycmF5KDB4QjIs IDB4NjYsIDB4NTMsIDB4OEMsIDB4MzgsIDB4QUYsDQo+IDB4NDgsIDB4Q0UpDQo+IA0KPiArKQ0K PiANCj4gKw0KPiANCj4gK0VES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCA9ICgNCj4gDQo+ICsg ICAgMHg4MkRERDY4QiwNCj4gDQo+ICsgICAgMHg5MTYzLA0KPiANCj4gKyAgICAweDQxODcsDQo+ IA0KPiArICAgIEd1aWRBcnJheSgweDlCLCAweDI3LCAweDIwLCAweEE4LCAweEZELCAweDYwLCAw eEE3LCAweDFEKSwNCj4gDQo+ICspDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9GUkFNRVdPUktf R1VJRCA9ICgNCj4gDQo+ICsgICAgMHgzMUNBNUQxQSwNCj4gDQo+ICsgICAgMHhENTExLA0KPiAN Cj4gKyAgICAweDQ5MzEsDQo+IA0KPiArICAgIEd1aWRBcnJheSgweEI3LCAweDgyLCAweEFFLCAw eDZCLCAweDJCLCAweDE3LCAweDhDLCAweEQ3KSwNCj4gDQo+ICspDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9PUF9IRUFERVIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiT3BD b2RlIiwgY191Ynl0ZSksDQo+IA0KPiArICAgICAgICAoIkxlbmd0aCIsIGNfdWJ5dGUsIDcpLA0K PiANCj4gKyAgICAgICAgKCJTY29wZSIsIGNfdWJ5dGUsIDEpLA0KPiANCj4gKyAgICBdDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9GT1JNX1NFVChTdHJ1Y3R1cmUpOg0K PiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAg ICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkd1 aWQiLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAoIkZvcm1TZXRUaXRsZSIsIGNfdWludDE2 KSwNCj4gDQo+ICsgICAgICAgICgiSGVscCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgi RmxhZ3MiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIEVGSV9JRlJfR1VJRF9DTEFTUyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+ IA0KPiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAg KCJDbGFzcyIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIEVGSV9JRlJfR1VJRF9TVUJDTEFTUyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBf cGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFk ZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJ RCksDQo+IA0KPiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAg ICAgICAgKCJTdWJDbGFzcyIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfREVGQVVMVFNUT1JFKFN0cnVjdHVyZSk6DQo+IA0K PiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiRGVmYXVs dE5hbWUiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIkRlZmF1bHRJZCIsIGNfdWludDE2 KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJf VkFSU1RPUkUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBf ZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIp LA0KPiANCj4gKyAgICAgICAgKCJHdWlkIiwgRUZJX0dVSUQpLA0KPiANCj4gKyAgICAgICAgKCJW YXJTdG9yZUlkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJTaXplIiwgY191aW50MTYp LA0KPiANCj4gKyAgICAgICAgKCJOYW1lIiwgQVJSQVkoY191Ynl0ZSwgMikpLA0KPiANCj4gKyAg ICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZGVmIFJlZmluZV9FRklfSUZSX1ZBUlNUT1JF KE51bXMpOg0KPiANCj4gKyAgICBjbGFzcyBFRklfSUZSX1ZBUlNUT1JFKFN0cnVjdHVyZSk6DQo+ IA0KPiArICAgICAgICBfcGFja18gPSAxDQo+IA0KPiArICAgICAgICBfZmllbGRzXyA9IFsNCj4g DQo+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsg ICAgICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAgICAgKCJWYXJT dG9yZUlkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgICAgICgiU2l6ZSIsIGNfdWludDE2 KSwNCj4gDQo+ICsgICAgICAgICAgICAoIk5hbWUiLCBBUlJBWShjX3VieXRlLCBOdW1zKSksDQo+ IA0KPiArICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZikgLT4gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhlYWRlciA9IEVGSV9JRlJfT1Bf SEVBREVSKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgcmV0dXJuIEVGSV9JRlJfVkFSU1RPUkUoKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVkFSU1RPUkVfRUZJKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAg ICAgICgiVmFyU3RvcmVJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiR3VpZCIsIEVG SV9HVUlEKSwNCj4gDQo+ICsgICAgICAgICgiQXR0cmlidXRlcyIsIGNfdWludDMyKSwNCj4gDQo+ ICsgICAgICAgICgiU2l6ZSIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiTmFtZSIsIEFS UkFZKGNfdWJ5dGUsIDIpKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2RlZiBSZWZpbmVfRUZJX0lGUl9WQVJTVE9SRV9FRkkoTnVtcyk6DQo+IA0KPiArICAgIGNsYXNz IEVGSV9JRlJfVkFSU1RPUkVfRUZJKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgICAgICBfcGFja18g PSAxDQo+IA0KPiArICAgICAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICAgICAoIkhl YWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICAgICAoIlZhclN0b3Jl SWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAgICAgKCJHdWlkIiwgRUZJX0dVSUQpLA0K PiANCj4gKyAgICAgICAgICAgICgiQXR0cmlidXRlcyIsIGNfdWludDMyKSwNCj4gDQo+ICsgICAg ICAgICAgICAoIlNpemUiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAgICAgKCJOYW1lIiwg QVJSQVkoY191Ynl0ZSwgTnVtcykpLA0KPiANCj4gKyAgICAgICAgXQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5IZWFkZXIgPSBFRklfSUZSX09QX0hFQURFUigpDQo+IA0KPiArDQo+IA0KPiArICAgIHJl dHVybiBFRklfSUZSX1ZBUlNUT1JFX0VGSSgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9HVUlEKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwNCj4gDQo+ICsgICAg XQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2RlZiBSZWZpbmVfRUZJX0lGUl9CVUZGRVIoTnVt cyk6DQo+IA0KPiArICAgIGNsYXNzIEVGSV9JRlJfQlVGRkVSKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgICAgICBfcGFja18gPSAxDQo+IA0KPiArICAgICAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsg ICAgICAgICAgICAoIkRhdGEiLCBBUlJBWShjX3VieXRlLCBOdW1zKSksDQo+IA0KPiArICAgICAg ICBdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2V0QnVmZmVyKHNlbGYsIEJ1ZmZlcik6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5CdWZmZXIgPSBCdWZmZXINCj4gDQo+ICsNCj4gDQo+ ICsgICAgcmV0dXJuIEVGSV9JRlJfQlVGRkVSKCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtk ZWYgUmVmaW5lX0VGSV9JRlJfQklUX0JVRkZFUihOdW1zKToNCj4gDQo+ICsgICAgY2xhc3MgRUZJ X0lGUl9CSVRfQlVGRkVSKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgICAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgICAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICAgICAoIkRhdGEiLCBB UlJBWShjX3VieXRlLCBOdW1zKSksDQo+IA0KPiArICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgU2V0QnVmZmVyKHNlbGYsIEJ1ZmZlcik6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5CdWZmZXIgPSBCdWZmZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgcmV0dXJuIEVGSV9JRlJf QklUX0JVRkZFUg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2RlZiBSZWZpbmVfRUZJX0lGUl9C SVQoVHlwZSwgUHJlQml0cywgU2l6ZSwgRGF0YSk6DQo+IA0KPiArICAgIGlmIFByZUJpdHMgPT0g MDoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGNsYXNzIFJlZmluZV9FRklfSUZSX0JJVChTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICAgICAgICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgICAgICAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICAgICAgICAgKCJEYXRhIiwgVHlwZSwgU2l6 ZSksICAjIHRoZSByZWFsbHkgbmVlZGVkIGRhdGENCj4gDQo+ICsgICAgICAgICAgICAgICAgKCJQ b3N0Zml4IiwgVHlwZSwgc2l6ZW9mKFR5cGUpICogOCAtIFNpemUpLA0KPiANCj4gKyAgICAgICAg ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgRGF0 YSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRGF0YSA9IERhdGENCj4gDQo+ICsNCj4g DQo+ICsgICAgZWxpZiBzaXplb2YoVHlwZSkgKiA4IC0gU2l6ZSAtIFByZUJpdHMgPT0gMDoNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGNsYXNzIFJlZmluZV9FRklfSUZSX0JJVChTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICAgICAgICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgICAgICAgICBfZmll bGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICAgICAgICAgKCJQcmVmaXgiLCBUeXBlLCBQcmVCaXRz KSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKCJEYXRhIiwgVHlwZSwgU2l6ZSksICAjIHRoZSBy ZWFsbHkgbmVlZGVkIGRhdGENCj4gDQo+ICsgICAgICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIERhdGEpOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLkRhdGEgPSBEYXRhDQo+IA0KPiArDQo+IA0KPiArICAgIGVsc2U6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBjbGFzcyBSZWZpbmVfRUZJX0lGUl9CSVQoU3RydWN0dXJlKToNCj4g DQo+ICsgICAgICAgICAgICBfcGFja18gPSAxDQo+IA0KPiArICAgICAgICAgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAgICAgICAgICgiUHJlZml4IiwgVHlwZSwgUHJlQml0cyksDQo+ IA0KPiArICAgICAgICAgICAgICAgICgiRGF0YSIsIFR5cGUsIFNpemUpLCAgIyB0aGUgcmVhbGx5 IG5lZWRlZCBkYXRhDQo+IA0KPiArICAgICAgICAgICAgICAgICgiUG9zdGZpeCIsIFR5cGUsIHNp emVvZihUeXBlKSAqIDggLSBTaXplIC0gUHJlQml0cyksDQo+IA0KPiArICAgICAgICAgICAgXQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBEYXRhKToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5EYXRhID0gRGF0YQ0KPiANCj4gKw0KPiANCj4gKyAg ICByZXR1cm4gUmVmaW5lX0VGSV9JRlJfQklUKERhdGEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgRUZJX0lGUl9HVUlEX1ZBUkVRTkFNRShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBf cGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFk ZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJ RCksDQo+IA0KPiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWludDgpLA0KPiANCj4gKyAg ICAgICAgKCJRdWVzdGlvbklkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJOYW1lSWQi LCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSElJX1BBQ0tBR0VfSEVBREVSKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkxlbmd0aCIsIGNf dWludDMyLCAyNCksDQo+IA0KPiArICAgICAgICAoIlR5cGUiLCBjX3VpbnQzMiwgOCksDQo+IA0K PiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSElJX1NUUklOR19Q QUNLQUdFX0hEUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1BBQ0tBR0Vf SEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiSGRyU2l6ZSIsIGNfdWludDMyKSwNCj4gDQo+ICsg ICAgICAgICgiU3RyaW5nSW5mb09mZnNldCIsIGNfdWludDMyKSwNCj4gDQo+ICsgICAgICAgICgi TGFuZ3VhZ2VXaW5kb3ciLCBjX3VzaG9ydCAqIDE2KSwNCj4gDQo+ICsgICAgICAgICgiTGFuZ3Vh Z2VOYW1lIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJMYW5ndWFnZSIsIGNfY2hhciAq IDIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lG Ul9WQVJTVE9SRV9OQU1FX1ZBTFVFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDEN Cj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiVmFyU3RvcmVJZCIsIGNfdWludDE2KSwN Cj4gDQo+ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfRk9STShTdHJ1Y3R1cmUpOg0KPiANCj4g KyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAg KCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkZvcm1JZCIs IGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiRm9ybVRpdGxlIiwgY191aW50MTYpLA0KPiAN Cj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9HVUlEX0JB Tk5FUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVs ZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ IA0KPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAoIkV4dGVu ZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCJUaXRsZSIsIGNfdWludDE2KSwN Cj4gDQo+ICsgICAgICAgICgiTGluZU51bWJlciIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAg ICgiQWxpZ25tZW50IiwgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBFRklfSUZSX0dVSURfVElNRU9VVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAg ICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJI ZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkd1aWQiLCBFRklf R1VJRCksDQo+IA0KPiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiANCj4g KyAgICAgICAgKCJUaW1lT3V0IiwgY191aW50MTYpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9HVUlEX0xBQkVMKFN0cnVjdHVyZSk6DQo+IA0K PiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiR3VpZCIs IEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgICAgICgiRXh0ZW5kT3BDb2RlIiwgY191Ynl0ZSksDQo+ IA0KPiArICAgICAgICAoIk51bWJlciIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUlVMRShTdHJ1Y3R1cmUpOg0KPiANCj4g KyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAg KCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIlJ1bGVJZCIs IGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg RUZJX0lGUl9TVEFURU1FTlRfSEVBREVSKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIlByb21wdCIsIGNf dWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiSGVscCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAg XQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfU1VCVElUTEUoU3RydWN0 dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4g DQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAg ICAgKCJTdGF0ZW1lbnQiLCBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIpLA0KPiANCj4gKyAgICAg ICAgKCJGbGFncyIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgRUZJX0lGUl9URVhUKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiU3RhdGVtZW50IiwgRUZJX0lGUl9T VEFURU1FTlRfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiVGV4dFR3byIsIGNfdWludDE2KSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfSU1B R0UoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCJJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIFZhclN0b3JlSW5mb05vZGUoVW5pb24pOg0KPiANCj4gKyAgICBf cGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJWYXJO YW1lIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJWYXJPZmZzZXQiLCBjX3VpbnQxNiks DQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1FV RVNUSU9OX0hFQURFUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiAr ICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX1NUQVRF TUVOVF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJRdWVzdGlvbklkIiwgY191aW50MTYpLA0K PiANCj4gKyAgICAgICAgKCJWYXJTdG9yZUlkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAg KCJWYXJTdG9yZUluZm8iLCBWYXJTdG9yZUluZm9Ob2RlKSwNCj4gDQo+ICsgICAgICAgICgiRmxh Z3MiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIHU4Tm9kZShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJNaW5WYWx1ZSIsIGNfdWJ5dGUpLA0KPiAN Cj4gKyAgICAgICAgKCJNYXhWYWx1ZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCJTdGVw IiwgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyB1MTZOb2RlKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAg X2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIk1pblZhbHVlIiwgY191aW50MTYpLA0KPiAN Cj4gKyAgICAgICAgKCJNYXhWYWx1ZSIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiU3Rl cCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIHUzMk5vZGUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiTWluVmFsdWUiLCBjX3VpbnQzMiksDQo+ IA0KPiArICAgICAgICAoIk1heFZhbHVlIiwgY191aW50MzIpLA0KPiANCj4gKyAgICAgICAgKCJT dGVwIiwgY191aW50MzIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgdTY0Tm9kZShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiAr ICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJNaW5WYWx1ZSIsIGNfdWludDY0KSwN Cj4gDQo+ICsgICAgICAgICgiTWF4VmFsdWUiLCBjX3VpbnQ2NCksDQo+IA0KPiArICAgICAgICAo IlN0ZXAiLCBjX3VpbnQ2NCksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBNSU5NQVhTVEVQX0RBVEEoVW5pb24pOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJ1OCIsIHU4Tm9kZSksDQo+ IA0KPiArICAgICAgICAoInUxNiIsIHUxNk5vZGUpLA0KPiANCj4gKyAgICAgICAgKCJ1MzIiLCB1 MzJOb2RlKSwNCj4gDQo+ICsgICAgICAgICgidTY0IiwgdTY0Tm9kZSksDQo+IA0KPiArICAgIF0N Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX05VTUVSSUNfU0laRSA9IDB4MDMNCj4g DQo+ICtFRklfSUZSX05VTUVSSUNfU0laRV8xID0gMHgwMA0KPiANCj4gK0VGSV9JRlJfTlVNRVJJ Q19TSVpFXzIgPSAweDAxDQo+IA0KPiArRUZJX0lGUl9OVU1FUklDX1NJWkVfNCA9IDB4MDINCj4g DQo+ICtFRklfSUZSX05VTUVSSUNfU0laRV84ID0gMHgwMw0KPiANCj4gK0VGSV9JRlJfRElTUExB WSA9IDB4MzANCj4gDQo+ICtFRklfSUZSX0RJU1BMQVlfSU5UX0RFQyA9IDB4MDANCj4gDQo+ICtF RklfSUZSX0RJU1BMQVlfVUlOVF9ERUMgPSAweDEwDQo+IA0KPiArRUZJX0lGUl9ESVNQTEFZX1VJ TlRfSEVYID0gMHgyMA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfT05F X09GKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxk c18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g DQo+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0K PiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+IA0KPiArICAgICAgICAoIkRhdGEiLCBN SU5NQVhTVEVQX0RBVEEpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ZGVmIFJlZmluZV9FRklfSUZSX09ORV9PRihUeXBlKToNCj4gDQo+ICsgICAgaWYgVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gdThOb2Rl DQo+IA0KPiArICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+IA0K PiArICAgICAgICBEYXRhVHlwZSA9IHUxNk5vZGUNCj4gDQo+ICsgICAgZWxpZiBUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gdTMyTm9k ZQ0KPiANCj4gKyAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiAN Cj4gKyAgICAgICAgRGF0YVR5cGUgPSB1NjROb2RlDQo+IA0KPiArICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICBEYXRhVHlwZSA9IHUzMk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRUZJ X0lGUl9PTkVfT0YoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgICAgICgiSGVhZGVyIiwgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZS X1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAgICAgKCJGbGFncyIsIGNfdWJ5dGUp LA0KPiANCj4gKyAgICAgICAgICAgICgiRGF0YSIsIERhdGFUeXBlKSwNCj4gDQo+ICsgICAgICAg IF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgcmV0dXJuIEVGSV9JRlJfT05FX09GKCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX0NIRUNLQk9YX0RFRkFVTFQgPSAweDAxDQo+IA0KPiAr RUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUX01GRyA9IDB4MDINCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSUZSX0NIRUNLQk9YKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNr XyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIs IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZS X1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+ IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX05VTUVS SUMoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCJRdWVzdGlvbiIsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gDQo+ ICsgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgiRGF0YSIsIE1J Tk1BWFNURVBfREFUQSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtk ZWYgUmVmaW5lX0VGSV9JRlJfTlVNRVJJQyhUeXBlKToNCj4gDQo+ICsgICAgaWYgVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gdThOb2Rl DQo+IA0KPiArICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+IA0K PiArICAgICAgICBEYXRhVHlwZSA9IHUxNk5vZGUNCj4gDQo+ICsgICAgZWxpZiBUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gdTMyTm9k ZQ0KPiANCj4gKyAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiAN Cj4gKyAgICAgICAgRGF0YVR5cGUgPSB1NjROb2RlDQo+IA0KPiArICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICBEYXRhVHlwZSA9IHUzMk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRUZJ X0lGUl9OVU1FUklDKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgICAgICBfcGFja18gPSAxDQo+IA0K PiArICAgICAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lG Ul9RVUVTVElPTl9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgICAgICgiRmxhZ3MiLCBjX3VieXRl KSwNCj4gDQo+ICsgICAgICAgICAgICAoIkRhdGEiLCBEYXRhVHlwZSksDQo+IA0KPiArICAgICAg ICBdDQo+IA0KPiArDQo+IA0KPiArICAgIHJldHVybiBFRklfSUZSX05VTUVSSUMoKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUEFTU1dPUkQoU3RydWN0dXJlKToNCj4g DQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAg ICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJRdWVz dGlvbiIsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiTWluU2l6 ZSIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiTWF4U2l6ZSIsIGNfdWludDE2KSwNCj4g DQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfVElNRShT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCJIb3VyIiwgY191Ynl0ZSksDQo+IA0KPiArICAgICAgICAoIk1p bnV0ZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCJTZWNvbmQiLCBjX3VieXRlKSwNCj4g DQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfREFURShT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCJZZWFyIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJN b250aCIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCJEYXkiLCBjX3VieXRlKSwNCj4gDQo+ ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfUkVGKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAo IkZvcm1JZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiRm9ybVNldEd1aWQiLCBFRklf R1VJRCksDQo+IA0KPiArICAgICAgICAoIkRldmljZVBhdGgiLCBjX3VpbnQxNiksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1RZUEVfVkFMVUUo VW5pb24pOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCJ1OCIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCJ1MTYiLCBj X3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoInUzMiIsIGNfdWludDMyKSwNCj4gDQo+ICsgICAg ICAgICgidTY0IiwgY191aW50NjQpLA0KPiANCj4gKyAgICAgICAgKCJiIiwgY191Ynl0ZSksICAj DQo+IA0KPiArICAgICAgICAoInRpbWUiLCBFRklfSElJX1RJTUUpLA0KPiANCj4gKyAgICAgICAg KCJkYXRlIiwgRUZJX0hJSV9EQVRFKSwNCj4gDQo+ICsgICAgICAgICgic3RyaW5nIiwgY191aW50 MTYpLA0KPiANCj4gKyAgICAgICAgKCJyZWYiLCBFRklfSElJX1JFRiksDQo+IA0KPiArICAgIF0N Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX09ORV9PRl9PUFRJT04oU3Ry dWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsN Cj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAg ICAgICAgKCJPcHRpb24iLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIkZsYWdzIiwgY191 Ynl0ZSksDQo+IA0KPiArICAgICAgICAoIlR5cGUiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAg ICgiVmFsdWUiLCBFRklfSUZSX1RZUEVfVkFMVUUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArVHlwZURpY3QgPSB7DQo+IA0KPiArICAgIEVGSV9JRlJfVFlQRV9OVU1f U0laRV84OiBjX3VieXRlLA0KPiANCj4gKyAgICBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6IGNf dXNob3J0LA0KPiANCj4gKyAgICBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6IGNfdWxvbmcsDQo+ IA0KPiArICAgIEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDogY191bG9uZ2xvbmcsDQo+IA0KPiAr ICAgIEVGSV9JRlJfVFlQRV9CT09MRUFOOiBjX3VieXRlLA0KPiANCj4gKyAgICBFRklfSUZSX1RZ UEVfVElNRTogRUZJX0hJSV9USU1FLA0KPiANCj4gKyAgICBFRklfSUZSX1RZUEVfREFURTogRUZJ X0hJSV9EQVRFLA0KPiANCj4gKyAgICBFRklfSUZSX1RZUEVfU1RSSU5HOiBjX3VpbnQxNiwNCj4g DQo+ICsgICAgRUZJX0lGUl9UWVBFX1JFRjogRUZJX0hJSV9SRUYsDQo+IA0KPiArfQ0KPiANCj4g Kw0KPiANCj4gK1R5cGVTaXplRGljdCA9IHsNCj4gDQo+ICsgICAgRUZJX0lGUl9UWVBFX05VTV9T SVpFXzg6IDEsDQo+IA0KPiArICAgIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjogMiwNCj4gDQo+ ICsgICAgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOiA0LA0KPiANCj4gKyAgICBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfNjQ6IDgsDQo+IA0KPiArICAgIEVGSV9JRlJfVFlQRV9CT09MRUFOOiAxLA0K PiANCj4gKyAgICBFRklfSUZSX1RZUEVfU1RSSU5HOiAyLA0KPiANCj4gK30NCj4gDQo+ICsNCj4g DQo+ICtTaXplVHlwZURpY3QgPSB7DQo+IA0KPiArICAgIDE6IGNfdWludDgsDQo+IA0KPiArICAg IDI6IGNfdWludDE2LA0KPiANCj4gKyAgICA0OiBjX3VpbnQzMiwNCj4gDQo+ICsgICAgODogY191 aW50NjQsDQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2RlZiBSZWZpbmVfRUZJ X0lGUl9PTkVfT0ZfT1BUSU9OKFR5cGUsIE51bXMpOg0KPiANCj4gKyAgICBWYWx1ZVR5cGUgPSBU eXBlRGljdFtUeXBlXQ0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBFRklfSUZSX09ORV9PRl9P UFRJT04oU3RydWN0dXJlKToNCj4gDQo+ICsgICAgICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAg ICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgICAgICgiT3B0aW9uIiwgY191aW50MTYpLA0KPiAN Cj4gKyAgICAgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICAgICAo IlR5cGUiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICAgICAoIlZhbHVlIiwgVmFsdWVUeXBl ICogTnVtcyksDQo+IA0KPiArICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZikgLT4gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhlYWRlciA9 IEVGSV9JRlJfT1BfSEVBREVSKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgcmV0dXJuIEVGSV9JRlJf T05FX09GX09QVElPTigpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9PUFRJT05f REVGQVVMVCA9IDB4MTANCj4gDQo+ICtFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRyA9IDB4MjAN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1NVUFBSRVNTX0lGKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAg XQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTE9DS0VEKFN0cnVjdHVy ZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0K PiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfQUNUSU9OKFN0cnVjdHVyZSk6 DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiAr ICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgi UXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIlF1 ZXN0aW9uQ29uZmlnIiwgY191aW50MTYpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9SRUYoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tf ID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJRdWVzdGlvbiIsIEVGSV9JRlJf UVVFU1RJT05fSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiRm9ybUlkIiwgY191aW50MTYpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9SRUYy KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiAr ICAgICAgICAoIkZvcm1JZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb25J ZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9JRlJfUkVGMyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0K PiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09Q X0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lGUl9RVUVTVElPTl9I RUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJGb3JtSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAg ICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIkZvcm1TZXRJ ZCIsIEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9JRlJfUkVGNChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0K PiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09Q X0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lGUl9RVUVTVElPTl9I RUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJGb3JtSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAg ICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIkZvcm1TZXRJ ZCIsIEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgICAgICgiRGV2aWNlUGF0aCIsIGNfdWludDE2KSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUkVG NShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNf ID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0K PiArICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiANCj4g KyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9SRVNFVF9CVVRU T04oU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCJTdGF0ZW1lbnQiLCBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCJEZWZhdWx0SWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX05PX1NVQk1JVF9JRihTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4g KyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAo IkVycm9yIiwgY191aW50MTYpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYoU3RydWN0dXJlKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVh ZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJFcnJvciIsIGNfdWlu dDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfRVFfSURfVkFMKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb25JZCIsIGNfdWludDE2KSwNCj4gDQo+ICsg ICAgICAgICgiVmFsdWUiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0VRX0lEX0lEKFN0cnVjdHVyZSk6DQo+IA0KPiArICAg IF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhl YWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb25JZDEi LCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIlF1ZXN0aW9uSWQyIiwgY191aW50MTYpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9FUV9J RF9WQUxfTElTVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURF UiksDQo+IA0KPiArICAgICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAg ICAgICAoIkxpc3RMZW5ndGgiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIlZhbHVlTGlz dCIsIGNfdWludDE2KSwgICMNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2RlZiBSZWZpbmVfRUZJX0lGUl9FUV9JRF9WQUxfTElTVChOdW1zKToNCj4gDQo+ICsgICAgY2xh c3MgRUZJX0lGUl9FUV9JRF9WQUxfTElTVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICAgICAgX3Bh Y2tfID0gMQ0KPiANCj4gKyAgICAgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAgICAg KCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAgICAgKCJRdWVz dGlvbklkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgICAgICgiTGlzdExlbmd0aCIsIGNf dWludDE2KSwNCj4gDQo+ICsgICAgICAgICAgICAoIlZhbHVlTGlzdCIsIGNfdWludDE2ICogTnVt cyksDQo+IA0KPiArICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5IZWFkZXIgPSBFRklfSUZSX09QX0hF QURFUigpDQo+IA0KPiArDQo+IA0KPiArICAgIHJldHVybiBFRklfSUZSX0VRX0lEX1ZBTF9MSVNU KCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0FORChTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4g KyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX09SKFN0cnVjdHVyZSk6DQo+IA0K PiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTk9UKFN0cnVjdHVyZSk6DQo+IA0KPiArICAg IF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhl YWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfR1JBWV9PVVRfSUYoU3RydWN0dXJlKToNCj4gDQo+ICsg ICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgi SGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9EQVRFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9w YWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRl ciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklf SUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSks DQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtFRklfUUZfREFURV9ZRUFS X1NVUFBSRVNTID0gMHgwMQ0KPiANCj4gK0VGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTID0gMHgw Mg0KPiANCj4gK0VGSV9RRl9EQVRFX0RBWV9TVVBQUkVTUyA9IDB4MDQNCj4gDQo+ICsNCj4gDQo+ ICtFRklfUUZfREFURV9TVE9SQUdFID0gMHgzMA0KPiANCj4gK1FGX0RBVEVfU1RPUkFHRV9OT1JN QUwgPSAweDAwDQo+IA0KPiArUUZfREFURV9TVE9SQUdFX1RJTUUgPSAweDEwDQo+IA0KPiArUUZf REFURV9TVE9SQUdFX1dBS0VVUCA9IDB4MjANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX1RJTUUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4g KyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJRdWVzdGlvbiIsIEVGSV9JRlJfUVVFU1RJT05fSEVB REVSKSwNCj4gDQo+ICsgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK1FGX1RJTUVfSE9VUl9TVVBQUkVTUyA9IDB4MDENCj4g DQo+ICtRRl9USU1FX01JTlVURV9TVVBQUkVTUyA9IDB4MDINCj4gDQo+ICtRRl9USU1FX1NFQ09O RF9TVVBQUkVTUyA9IDB4MDQNCj4gDQo+ICtRRl9USU1FX1NUT1JBR0UgPSAweDMwDQo+IA0KPiAr UUZfVElNRV9TVE9SQUdFX05PUk1BTCA9IDB4MDANCj4gDQo+ICtRRl9USU1FX1NUT1JBR0VfVElN RSA9IDB4MTANCj4gDQo+ICtRRl9USU1FX1NUT1JBR0VfV0FLRVVQID0gMHgyMA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfU1RSSU5HKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb24i LCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIk1pblNpemUiLCBj X3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgiTWF4U2l6ZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAg ICAgICAgKCJGbGFncyIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9SRUZSRVNIKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9w YWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRl ciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiUmVmcmVzaEludGVydmFs IiwgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX0RJU0FCTEVfSUYoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9UT19MT1dFUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZS X09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX1RPX1VQUEVSKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4g DQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfTUFQKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfT1JERVJFRF9MSVNUKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hF QURFUiksDQo+IA0KPiArICAgICAgICAoIk1heENvbnRhaW5lcnMiLCBjX3VieXRlKSwNCj4gDQo+ ICsgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK0VGSV9JRlJfVU5JUVVFX1NFVCA9IDB4MDENCj4gDQo+ICtFRklfSUZSX05P X0VNUFRZX1NFVCA9IDB4MDINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZS X1ZBUlNUT1JFX0RFVklDRShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0K PiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09Q X0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkRldmljZVBhdGgiLCBjX3VpbnQxNiksDQo+IA0K PiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1ZFUlNJT04o U3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9 IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4g KyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9FTkQoU3RydWN0 dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4g DQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBd DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9NQVRDSChTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4g KyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0dFVChTdHJ1Y3R1cmUpOg0KPiAN Cj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAg ICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIlZhclN0 b3JlSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoIlZhclN0b3JlSW5mbyIsIFZhclN0 b3JlSW5mb05vZGUpLA0KPiANCj4gKyAgICAgICAgKCJWYXJTdG9yZVR5cGUiLCBjX3VieXRlKSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfU0VU KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgICAgICgiVmFyU3RvcmVJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiVmFy U3RvcmVJbmZvIiwgVmFyU3RvcmVJbmZvTm9kZSksDQo+IA0KPiArICAgICAgICAoIlZhclN0b3Jl VHlwZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgRUZJX0lGUl9SRUFEKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4g DQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfV1JJVEUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4g KyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJ X0lGUl9FUVVBTChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURF UiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZS X05PVF9FUVVBTChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURF UiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZS X0dSRUFURVJfVEhBTihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiAr ICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hF QURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklf SUZSX0dSRUFURVJfRVFVQUwoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiAN Cj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg RUZJX0lGUl9MRVNTX0VRVUFMKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4g DQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfTEVTU19USEFOKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4g DQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfQklUV0lTRV9BTkQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9CSVRXSVNFX09SKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDEN Cj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9JRlJfQklUV0lTRV9OT1QoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0g MQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgRUZJX0lGUl9TSElGVF9MRUZUKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIEVGSV9JRlJfU0hJRlRfUklHSFQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tf ID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgRUZJX0lGUl9BREQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9TVUJUUkFDVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZS X09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX01VTFRJUExZKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4g DQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfRElWSURFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVG SV9JRlJfTU9EVUxPKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfUlVMRV9SRUYoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFE RVIpLA0KPiANCj4gKyAgICAgICAgKCJSdWxlSWQiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fUkVGMShTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAg ICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjIoU3RydWN0dXJlKToNCj4g DQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAg ICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9SRUYzKFN0cnVjdHVyZSk6 DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiAr ICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fUkVGM18yKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAg ICAgICgiRGV2aWNlUGF0aCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fUkVGM18zKFN0cnVjdHVyZSk6DQo+ IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAg ICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiRGV2 aWNlUGF0aCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVUlO VDgoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCJWYWx1ZSIsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9VSU5UMTYoU3RydWN0dXJlKToNCj4gDQo+ICsg ICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgi SGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJWYWx1ZSIsIGNf dWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVG SV9JRlJfVUlOVDMyKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gDQo+ICsgICAgICAgICgiVmFsdWUiLCBjX3VpbnQzMiksDQo+IA0KPiArICAgIF0N Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1VJTlQ2NChTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4g KyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAo IlZhbHVlIiwgY191aW50NjQpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgRUZJX0lGUl9UUlVFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDEN Cj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9JRlJfRkFMU0UoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiAN Cj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg RUZJX0lGUl9UT19VSU5UKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVG SV9JRlJfVE9fU1RSSU5HKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiRm9ybWF0IiwgY191Ynl0ZSksDQo+IA0KPiArICAg IF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1RPX0JPT0xFQU4oU3Ry dWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsN Cj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAg ICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9NSUQoU3RydWN0dXJl KToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9GSU5EKFN0cnVjdHVyZSk6DQo+ IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAg ICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiRm9y bWF0IiwgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyBFRklfSUZSX1RPS0VOKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4g DQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfU1RSSU5HX1JFRjEoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJTdHJpbmdJZCIsIGNfdWludDE2KSwNCj4g DQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfU1RSSU5H X1JFRjIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmll bGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9DT05E SVRJT05BTChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9m aWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiks DQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1pF Uk8oU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiAN Cj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9PTkUoU3Ry dWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsN Cj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAg ICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9PTkVTKFN0cnVjdHVy ZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0K PiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVU5ERUZJTkVEKFN0cnVjdHVy ZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0K PiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTEVOR1RIKFN0cnVjdHVyZSk6 DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiAr ICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfRFVQKFN0cnVjdHVyZSk6DQo+IA0K PiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVEhJUyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAg ICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJI ZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5HID0gMHgwMA0KPiANCj4gK0VG SV9JRlJfRkxBR1NfRklSU1RfTk9OX01BVENISU5HID0gMHgwMQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIEVGSV9JRlJfU1BBTihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+ IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1ZBTFVF KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfREVGQVVMVChT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiAr ICAgICAgICAoIkRlZmF1bHRJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiVHlwZSIs IGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCJWYWx1ZSIsIEVGSV9JRlJfVFlQRV9WQUxVRSks DQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtkZWYgUmVmaW5lX0VGSV9J RlJfREVGQVVMVChUeXBlLCBOdW1zKToNCj4gDQo+ICsgICAgVmFsdWVUeXBlID0gVHlwZURpY3Rb VHlwZV0NCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRUZJX0lGUl9ERUZBVUxUKFN0cnVjdHVy ZSk6DQo+IA0KPiArICAgICAgICBfcGFja18gPSAxDQo+IA0KPiArICAgICAgICBfZmllbGRzXyA9 IFsNCj4gDQo+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g DQo+ICsgICAgICAgICAgICAoIkRlZmF1bHRJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAg ICAgICAoIlR5cGUiLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICAgICAoIlZhbHVlIiwgQVJS QVkoVmFsdWVUeXBlLCBOdW1zKSksDQo+IA0KPiArICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5IZWFk ZXIgPSBFRklfSUZSX09QX0hFQURFUigpDQo+IA0KPiArDQo+IA0KPiArICAgIHJldHVybiBFRklf SUZSX0RFRkFVTFQoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfREVG QVVMVF8yKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2Zp ZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gDQo+ICsgICAgICAgICgiRGVmYXVsdElkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAg KCJUeXBlIiwgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBFRklfSUZSX0ZPUk1fTUFQKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgiRm9ybUlkIiwgY191aW50MTYpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9GT1JN X01BUF9NRVRIT0QoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgiTWV0aG9kVGl0bGUiLCBjX3VpbnQxNiks DQo+IA0KPiArICAgICAgICAoIk1ldGhvZElkZW50aWZpZXIiLCBFRklfR1VJRCksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtkZWYgUmVmaW5lX0VGSV9JRlJfRk9STV9N QVAoTnVtcyk6DQo+IA0KPiArICAgIGNsYXNzIEVGSV9JRlJfRk9STV9NQVAoU3RydWN0dXJlKToN Cj4gDQo+ICsgICAgICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4g KyAgICAgICAgICAgICgiRm9ybUlkIiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgICAgICgi Rm9ybU1hcE1ldGhvZCIsIEFSUkFZKEVGSV9JRlJfRk9STV9NQVBfTUVUSE9ELCBOdW1zKSksDQo+ IA0KPiArICAgICAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgIHJldHVybiBFRklfSUZSX0ZPUk1f TUFQKCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0NBVEVOQVRFKFN0 cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBb DQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsg ICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfU0VDVVJJVFkoU3Ry dWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsN Cj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAg ICAgICAgKCJQZXJtaXNzaW9ucyIsIEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTU9EQUxfVEFHKFN0cnVjdHVyZSk6DQo+IA0K PiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUkVGUkVTSF9JRChTdHJ1Y3R1cmUpOg0KPiAN Cj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAg ICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoIlJlZnJl c2hFdmVudEdyb3VwSWQiLCBFRklfR1VJRCksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1dBUk5JTkdfSUYoU3RydWN0dXJlKToNCj4gDQo+ICsg ICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgi SGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCJXYXJuaW5nIiwg Y191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJUaW1lT3V0IiwgY191Ynl0ZSksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX01BVENIMihTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAg ICAgICAoIlN5bnRheFR5cGUiLCBFRklfR1VJRCksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSElJX1NUUklOR19CTE9DSyhTdHJ1Y3R1cmUpOg0KPiAN Cj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAg ICAgKCJCbG9ja1R5cGUiLCBjX3VpbnQ4KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdfU0NTVV9GT05UX0JMT0NLKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9ISUlfU1RSSU5HX0JMT0NLKSwNCj4gDQo+ICsg ICAgICAgICgiRm9udElkZW50aWZpZXIiLCBjX3VpbnQ4KSwNCj4gDQo+ICsgICAgICAgICgiU3Ry aW5nVGV4dCIsIEFSUkFZKGNfdWludDgsIDIpKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1NDU1VfQkxPQ0soU3RydWN0 dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4g DQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0hJSV9TVFJJTkdfQkxPQ0spLA0KPiANCj4gKyAg ICAgICAgKCJTdHJpbmdDb3VudCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiU3RyaW5n VGV4dCIsIEFSUkFZKGNfdWludDgsIDIpKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1NDU1VfRk9OVF9CTE9DSyhTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+IA0KPiAr ICAgICAgICAoIkZvbnRJZGVudGlmaWVyIiwgY191aW50OCksDQo+IA0KPiArICAgICAgICAoIlN0 cmluZ0NvdW50IiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJTdHJpbmdUZXh0IiwgQVJS QVkoY191aW50OCwgMikpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgRUZJX0hJSV9TSUJUX1NUUklOR19VQ1MyX0JMT0NLKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9ISUlfU1RSSU5HX0JMT0NLKSwNCj4gDQo+ICsgICAgICAgICgiU3RyaW5n VGV4dCIsIEFSUkFZKGNfdXNob3J0LCAyKSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBFRklfSElJX1NJQlRfU1RSSU5HX1VDUzJfRk9OVF9CTE9DSyhTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+IA0KPiAr ICAgICAgICAoIkZvbnRJZGVudGlmaWVyIiwgY191aW50OCksDQo+IA0KPiArICAgICAgICAoIlN0 cmluZ1RleHQiLCBBUlJBWShjX3VzaG9ydCwgMikpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0hJSV9TSUJUX1NUUklOR1NfVUNTMl9CTE9DSyhTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+IA0KPiAr ICAgICAgICAoIlN0cmluZ0NvdW50IiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJTdHJp bmdUZXh0IiwgQVJSQVkoY191c2hvcnQsIDIpKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1VDUzJfRk9OVF9CTE9DSyhT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+IA0K PiArICAgICAgICAoIkZvbnRJZGVudGlmaWVyIiwgY191aW50OCksDQo+IA0KPiArICAgICAgICAo IlN0cmluZ0NvdW50IiwgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCJTdHJpbmdUZXh0Iiwg QVJSQVkoY191c2hvcnQsIDIpKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIEVGSV9ISUlfU0lCVF9EVVBMSUNBVEVfQkxPQ0soU3RydWN0dXJlKToNCj4gDQo+ ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAg ICgiSGVhZGVyIiwgRUZJX0hJSV9TVFJJTkdfQkxPQ0spLA0KPiANCj4gKyAgICAgICAgKCJTdHJp bmdJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIEVGSV9ISUlfU0lCVF9FWFQxX0JMT0NLKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9w YWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRl ciIsIEVGSV9ISUlfU1RSSU5HX0JMT0NLKSwNCj4gDQo+ICsgICAgICAgICgiQmxvY2tUeXBlMiIs IGNfdWludDgpLA0KPiANCj4gKyAgICAgICAgKCJMZW5ndGgiLCBjX3VpbnQ4KSwNCj4gDQo+ICsg ICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9ISUlfU0lCVF9FWFQyX0JM T0NLKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxk c18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9ISUlfU1RSSU5HX0JMT0NLKSwN Cj4gDQo+ICsgICAgICAgICgiQmxvY2tUeXBlMiIsIGNfdWludDgpLA0KPiANCj4gKyAgICAgICAg KCJMZW5ndGgiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSElJX1NJQlRfRVhUNF9CTE9DSyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAg ICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCJI ZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+IA0KPiArICAgICAgICAoIkJsb2NrVHlw ZTIiLCBjX3VpbnQ4KSwNCj4gDQo+ICsgICAgICAgICgiTGVuZ3RoIiwgY191aW50MzIpLA0KPiAN Cj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0hJSV9TSUJUX1NL SVAxX0JMT0NLKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAg X2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9ISUlfU1RSSU5HX0JM T0NLKSwNCj4gDQo+ICsgICAgICAgICgiU2tpcENvdW50IiwgY191aW50OCksDQo+IA0KPiArICAg IF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSElJX1NJQlRfU0tJUDJfQkxP Q0soU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0hJSV9TVFJJTkdfQkxPQ0spLA0K PiANCj4gKyAgICAgICAgKCJTa2lwQ291bnQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX0ZPUk1fT1AgPSAweDAxDQo+IA0KPiArRUZJ X0lGUl9TVUJUSVRMRV9PUCA9IDB4MDINCj4gDQo+ICtFRklfSUZSX1RFWFRfT1AgPSAweDAzDQo+ IA0KPiArRUZJX0lGUl9JTUFHRV9PUCA9IDB4MDQNCj4gDQo+ICtFRklfSUZSX09ORV9PRl9PUCA9 IDB4MDUNCj4gDQo+ICtFRklfSUZSX0NIRUNLQk9YX09QID0gMHgwNg0KPiANCj4gK0VGSV9JRlJf TlVNRVJJQ19PUCA9IDB4MDcNCj4gDQo+ICtFRklfSUZSX1BBU1NXT1JEX09QID0gMHgwOA0KPiAN Cj4gK0VGSV9JRlJfT05FX09GX09QVElPTl9PUCA9IDB4MDkNCj4gDQo+ICtFRklfSUZSX1NVUFBS RVNTX0lGX09QID0gMHgwQQ0KPiANCj4gK0VGSV9JRlJfTE9DS0VEX09QID0gMHgwQg0KPiANCj4g K0VGSV9JRlJfQUNUSU9OX09QID0gMHgwQw0KPiANCj4gK0VGSV9JRlJfUkVTRVRfQlVUVE9OX09Q ID0gMHgwRA0KPiANCj4gK0VGSV9JRlJfRk9STV9TRVRfT1AgPSAweDBFDQo+IA0KPiArRUZJX0lG Ul9SRUZfT1AgPSAweDBGDQo+IA0KPiArRUZJX0lGUl9OT19TVUJNSVRfSUZfT1AgPSAweDEwDQo+ IA0KPiArRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1AgPSAweDExDQo+IA0KPiArRUZJX0lGUl9F UV9JRF9WQUxfT1AgPSAweDEyDQo+IA0KPiArRUZJX0lGUl9FUV9JRF9JRF9PUCA9IDB4MTMNCj4g DQo+ICtFRklfSUZSX0VRX0lEX1ZBTF9MSVNUX09QID0gMHgxNA0KPiANCj4gK0VGSV9JRlJfQU5E X09QID0gMHgxNQ0KPiANCj4gK0VGSV9JRlJfT1JfT1AgPSAweDE2DQo+IA0KPiArRUZJX0lGUl9O T1RfT1AgPSAweDE3DQo+IA0KPiArRUZJX0lGUl9SVUxFX09QID0gMHgxOA0KPiANCj4gK0VGSV9J RlJfR1JBWV9PVVRfSUZfT1AgPSAweDE5DQo+IA0KPiArRUZJX0lGUl9EQVRFX09QID0gMHgxQQ0K PiANCj4gK0VGSV9JRlJfVElNRV9PUCA9IDB4MUINCj4gDQo+ICtFRklfSUZSX1NUUklOR19PUCA9 IDB4MUMNCj4gDQo+ICtFRklfSUZSX1JFRlJFU0hfT1AgPSAweDFEDQo+IA0KPiArRUZJX0lGUl9E SVNBQkxFX0lGX09QID0gMHgxRQ0KPiANCj4gK0VGSV9JRlJfVE9fTE9XRVJfT1AgPSAweDIwDQo+ IA0KPiArRUZJX0lGUl9UT19VUFBFUl9PUCA9IDB4MjENCj4gDQo+ICtFRklfSUZSX01BUF9PUCA9 IDB4MjINCj4gDQo+ICtFRklfSUZSX09SREVSRURfTElTVF9PUCA9IDB4MjMNCj4gDQo+ICtFRklf SUZSX1ZBUlNUT1JFX09QID0gMHgyNA0KPiANCj4gK0VGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxV RV9PUCA9IDB4MjUNCj4gDQo+ICtFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUCA9IDB4MjYNCj4gDQo+ ICtFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCA9IDB4MjcNCj4gDQo+ICtFRklfSUZSX1ZFUlNJ T05fT1AgPSAweDI4DQo+IA0KPiArRUZJX0lGUl9FTkRfT1AgPSAweDI5DQo+IA0KPiArRUZJX0lG Ul9NQVRDSF9PUCA9IDB4MkENCj4gDQo+ICtFRklfSUZSX0dFVF9PUCA9IDB4MkINCj4gDQo+ICtF RklfSUZSX1NFVF9PUCA9IDB4MkMNCj4gDQo+ICtFRklfSUZSX1JFQURfT1AgPSAweDJEDQo+IA0K PiArRUZJX0lGUl9XUklURV9PUCA9IDB4MkUNCj4gDQo+ICtFRklfSUZSX0VRVUFMX09QID0gMHgy Rg0KPiANCj4gK0VGSV9JRlJfTk9UX0VRVUFMX09QID0gMHgzMA0KPiANCj4gK0VGSV9JRlJfR1JF QVRFUl9USEFOX09QID0gMHgzMQ0KPiANCj4gK0VGSV9JRlJfR1JFQVRFUl9FUVVBTF9PUCA9IDB4 MzINCj4gDQo+ICtFRklfSUZSX0xFU1NfVEhBTl9PUCA9IDB4MzMNCj4gDQo+ICtFRklfSUZSX0xF U1NfRVFVQUxfT1AgPSAweDM0DQo+IA0KPiArRUZJX0lGUl9CSVRXSVNFX0FORF9PUCA9IDB4MzUN Cj4gDQo+ICtFRklfSUZSX0JJVFdJU0VfT1JfT1AgPSAweDM2DQo+IA0KPiArRUZJX0lGUl9CSVRX SVNFX05PVF9PUCA9IDB4MzcNCj4gDQo+ICtFRklfSUZSX1NISUZUX0xFRlRfT1AgPSAweDM4DQo+ IA0KPiArRUZJX0lGUl9TSElGVF9SSUdIVF9PUCA9IDB4MzkNCj4gDQo+ICtFRklfSUZSX0FERF9P UCA9IDB4M0ENCj4gDQo+ICtFRklfSUZSX1NVQlRSQUNUX09QID0gMHgzQg0KPiANCj4gK0VGSV9J RlJfTVVMVElQTFlfT1AgPSAweDNDDQo+IA0KPiArRUZJX0lGUl9ESVZJREVfT1AgPSAweDNEDQo+ IA0KPiArRUZJX0lGUl9NT0RVTE9fT1AgPSAweDNFDQo+IA0KPiArRUZJX0lGUl9SVUxFX1JFRl9P UCA9IDB4M0YNCj4gDQo+ICtFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1AgPSAweDQwDQo+IA0KPiAr RUZJX0lGUl9RVUVTVElPTl9SRUYyX09QID0gMHg0MQ0KPiANCj4gK0VGSV9JRlJfVUlOVDhfT1Ag PSAweDQyDQo+IA0KPiArRUZJX0lGUl9VSU5UMTZfT1AgPSAweDQzDQo+IA0KPiArRUZJX0lGUl9V SU5UMzJfT1AgPSAweDQ0DQo+IA0KPiArRUZJX0lGUl9VSU5UNjRfT1AgPSAweDQ1DQo+IA0KPiAr RUZJX0lGUl9UUlVFX09QID0gMHg0Ng0KPiANCj4gK0VGSV9JRlJfRkFMU0VfT1AgPSAweDQ3DQo+ IA0KPiArRUZJX0lGUl9UT19VSU5UX09QID0gMHg0OA0KPiANCj4gK0VGSV9JRlJfVE9fU1RSSU5H X09QID0gMHg0OQ0KPiANCj4gK0VGSV9JRlJfVE9fQk9PTEVBTl9PUCA9IDB4NEENCj4gDQo+ICtF RklfSUZSX01JRF9PUCA9IDB4NEINCj4gDQo+ICtFRklfSUZSX0ZJTkRfT1AgPSAweDRDDQo+IA0K PiArRUZJX0lGUl9UT0tFTl9PUCA9IDB4NEQNCj4gDQo+ICtFRklfSUZSX1NUUklOR19SRUYxX09Q ID0gMHg0RQ0KPiANCj4gK0VGSV9JRlJfU1RSSU5HX1JFRjJfT1AgPSAweDRGDQo+IA0KPiArRUZJ X0lGUl9DT05ESVRJT05BTF9PUCA9IDB4NTANCj4gDQo+ICtFRklfSUZSX1FVRVNUSU9OX1JFRjNf T1AgPSAweDUxDQo+IA0KPiArRUZJX0lGUl9aRVJPX09QID0gMHg1Mg0KPiANCj4gK0VGSV9JRlJf T05FX09QID0gMHg1Mw0KPiANCj4gK0VGSV9JRlJfT05FU19PUCA9IDB4NTQNCj4gDQo+ICtFRklf SUZSX1VOREVGSU5FRF9PUCA9IDB4NTUNCj4gDQo+ICtFRklfSUZSX0xFTkdUSF9PUCA9IDB4NTYN Cj4gDQo+ICtFRklfSUZSX0RVUF9PUCA9IDB4NTcNCj4gDQo+ICtFRklfSUZSX1RISVNfT1AgPSAw eDU4DQo+IA0KPiArRUZJX0lGUl9TUEFOX09QID0gMHg1OQ0KPiANCj4gK0VGSV9JRlJfVkFMVUVf T1AgPSAweDVBDQo+IA0KPiArRUZJX0lGUl9ERUZBVUxUX09QID0gMHg1Qg0KPiANCj4gK0VGSV9J RlJfREVGQVVMVFNUT1JFX09QID0gMHg1Qw0KPiANCj4gK0VGSV9JRlJfRk9STV9NQVBfT1AgPSAw eDVEDQo+IA0KPiArRUZJX0lGUl9DQVRFTkFURV9PUCA9IDB4NUUNCj4gDQo+ICtFRklfSUZSX0dV SURfT1AgPSAweDVGDQo+IA0KPiArRUZJX0lGUl9TRUNVUklUWV9PUCA9IDB4NjANCj4gDQo+ICtF RklfSUZSX01PREFMX1RBR19PUCA9IDB4NjENCj4gDQo+ICtFRklfSUZSX1JFRlJFU0hfSURfT1Ag PSAweDYyDQo+IA0KPiArRUZJX0lGUl9XQVJOSU5HX0lGX09QID0gMHg2Mw0KPiANCj4gK0VGSV9J RlJfTUFUQ0gyX09QID0gMHg2NA0KPiANCj4gK0VGSV9JRlJfU0hPV05fREVGQVVMVFNUT1JFX09Q ID0gMHg2NQ0KPiANCj4gKw0KPiANCj4gK0NvbmRpdGlvbk9wcyA9IFsNCj4gDQo+ICsgICAgRUZJ X0lGUl9ESVNBQkxFX0lGX09QLA0KPiANCj4gKyAgICBFRklfSUZSX1NVUFBSRVNTX0lGX09QLA0K PiANCj4gKyAgICBFRklfSUZSX0dSQVlfT1VUX0lGX09QLA0KPiANCj4gKyAgICBFRklfSUZSX0lO Q09OU0lTVEVOVF9JRl9PUCwNCj4gDQo+ICtdDQo+IA0KPiArQmFzaWNEYXRhVHlwZXMgPSBbDQo+ IA0KPiArICAgICJVSU5UOCIsDQo+IA0KPiArICAgICJVSU5UMTYiLA0KPiANCj4gKyAgICAiVUlO VDMyIiwNCj4gDQo+ICsgICAgIlVJTlQ2NCIsDQo+IA0KPiArICAgICJFRklfSElJX0RBVEUiLA0K PiANCj4gKyAgICAiRUZJX0hJSV9USU1FIiwNCj4gDQo+ICsgICAgIkVGSV9ISUlfUkVGIiwNCj4g DQo+ICtdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZGVmIFJlZmluZV9FRklfSUZSX0dVSURf T1BUSU9OS0VZKFR5cGUpOg0KPiANCj4gKyAgICBWYWx1ZVR5cGUgPSBUeXBlRGljdFtUeXBlXQ0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBFRklfSUZSX0dVSURfT1BUSU9OS0VZKFN0cnVjdHVy ZSk6DQo+IA0KPiArICAgICAgICBfcGFja18gPSAxDQo+IA0KPiArICAgICAgICBfZmllbGRzXyA9 IFsNCj4gDQo+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g DQo+ICsgICAgICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAgICAg KCJFeHRlbmRPcENvZGUiLCBjX3VpbnQ4KSwNCj4gDQo+ICsgICAgICAgICAgICAoIlF1ZXN0aW9u SWQiLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAgICAgKCJPcHRpb25WYWx1ZSIsIFZhbHVl VHlwZSksDQo+IA0KPiArICAgICAgICAgICAgKCJLZXlWYWx1ZSIsIGNfdWludDE2KSwNCj4gDQo+ ICsgICAgICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgcmV0dXJuIEVGSV9JRlJfR1VJRF9PUFRJ T05LRVkoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfRVhURU5EX09QX09QVElP TktFWSA9IDB4MA0KPiANCj4gK0VGSV9JRlJfRVhURU5EX09QX1ZBUkVRTkFNRSA9IDB4MQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9DT01QQVJFX1RZUEUoRW51bSk6DQo+IA0K PiArICAgIEVRVUFMID0gMA0KPiANCj4gKyAgICBMRVNTX0VRVUFMID0gMQ0KPiANCj4gKyAgICBM RVNTX1RIQU4gPSAyDQo+IA0KPiArICAgIEdSRUFURVJfVEhBTiA9IDMNCj4gDQo+ICsgICAgR1JF QVRFUl9FUVVBTCA9IDQNCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9JZnJFcnJvci5weQ0KPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1Zm ckNvbXBpbGVyL0lmckVycm9yLnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAuLmM1MDI4OGU5ZTUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJFcnJvci5weQ0KPiBAQCAtMCwwICsxLDE1MyBA QA0KPiArIyMgQGZpbGUNCj4gDQo+ICsjIFZmckNvbXBpbGVyIGVycm9yIGhhbmRsZXIuDQo+IA0K PiArIw0KPiANCj4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsjIw0KPiANCj4gKw0KPiANCj4gK2Zyb20gZW51 bSBpbXBvcnQgRW51bQ0KPiANCj4gK2Zyb20gQ29tbW9uIGltcG9ydCBFZGtMb2dnZXINCj4gDQo+ ICtmcm9tIENvbW1vbi5CdWlsZFRvb2xFcnJvciBpbXBvcnQgKg0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIFZmclJldHVybkNvZGUoRW51bSk6DQo+IA0KPiArICAgIFZGUl9SRVRVUk5f U1VDQ0VTUyA9IDANCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9FUlJPUl9TS0lQRUQgPSAxDQo+IA0K PiArICAgIFZGUl9SRVRVUk5fRkFUQUxfRVJST1IgPSAyDQo+IA0KPiArICAgIFZGUl9SRVRVUk5f TUlTTUFUQ0hFRCA9IDMNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiA9 IDQNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUyA9IDUNCj4gDQo+ICsg ICAgVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCA9IDYNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9SRURF RklORUQgPSA3DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRCA9IDgNCj4g DQo+ICsgICAgVkZSX1JFVFVSTl9RVUVTVElPTklEX1JFREVGSU5FRCA9IDkNCj4gDQo+ICsgICAg VkZSX1JFVFVSTl9WQVJTVE9SRUlEX1JFREVGSU5FRCA9IDEwDQo+IA0KPiArICAgIFZGUl9SRVRV Uk5fVU5ERUZJTkVEID0gMTENCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9WQVJfTk9UREVGSU5FRF9C WV9RVUVTVElPTiA9IDEyDQo+IA0KPiArICAgIFZGUl9SRVRVUk5fVkFSU1RPUkVfREFUQVRZUEVf UkVERUZJTkVEX0VSUk9SID0gMTMNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9HRVRfRUZJVkFSU1RP UkVfRVJST1IgPSAxNA0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0VGSVZBUlNUT1JFX1VTRV9FUlJP UiA9IDE1DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fRUZJVkFSU1RPUkVfU0laRV9FUlJPUiA9IDE2 DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fR0VUX05WVkFSU1RPUkVfRVJST1IgPSAxNw0KPiANCj4g KyAgICBWRlJfUkVUVVJOX1FWQVJfUkVVU0UgPSAxOA0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0ZM QUdTX1VOU1VQUE9SVEVEID0gMTkNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9FUlJPUl9BUlJBUllf TlVNID0gMjANCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9EQVRBX1NUUklOR19FUlJPUiA9IDIxDQo+ IA0KPiArICAgIFZGUl9SRVRVUk5fREVGQVVMVF9WQUxVRV9SRURFRklORUQgPSAyMg0KPiANCj4g KyAgICBWRlJfUkVUVVJOX0NPTlNUQU5UX09OTFkgPSAyMw0KPiANCj4gKyAgICBWRlJfUkVUVVJO X1ZBUlNUT1JFX05BTUVfUkVERUZJTkVEX0VSUk9SID0gMjQNCj4gDQo+ICsgICAgVkZSX1JFVFVS Tl9CSVRfV0lEVEhfRVJST1IgPSAyNQ0KPiANCj4gKyAgICBWRlJfUkVUVVJOX1NUUklOR19UT19V SU5UX09WRVJGTE9XID0gMjYNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9DT0RFVU5ERUZJTkVEID0g MjcNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJFcnJvck1lc3NhZ2UgPSB7DQo+IA0KPiAr ICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOiAiIiwNCj4gDQo+ICsgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRDogIiIsDQo+IA0KPiArICAgIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUjogImZhdGFsIGVycm9yISEiLA0KPiANCj4g KyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fTUlTTUFUQ0hFRDogInVuZXhwZWN0ZWQgdG9r ZW4iLA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVI6ICJpbnZhbGlkIHBhcmFtZXRlciIsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9PVVRfRk9SX1JFU09VUkNFUzogInN5c3RlbSBvdXQgb2YNCj4gbWVtb3J5IiwNCj4gDQo+ ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVEOiAidW5zdXBwb3J0ZWQi LA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEOiAiYWxyZWFk eSBkZWZpbmVkIiwNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZPUk1JRF9S RURFRklORUQ6ICJmb3JtIGlkIGFscmVhZHkNCj4gZGVmaW5lZCIsDQo+IA0KPiArICAgIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9RVUVTVElPTklEX1JFREVGSU5FRDogInF1ZXN0aW9uIGlkDQo+ IGFscmVhZHkgZGVmaW5lZCIsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9W QVJTVE9SRUlEX1JFREVGSU5FRDogInZhcnN0b3JlIGlkDQo+IGFscmVhZHkgZGVmaW5lZCIsDQo+ IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQ6ICJ1bmRlZmluZWQi LA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFSX05PVERFRklORURfQllf UVVFU1RJT046ICJzb21lDQo+IHZhcmlhYmxlIGhhcyBub3QgZGVmaW5lZCBieSBhIHF1ZXN0aW9u IiwNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBF X1JFREVGSU5FRF9FUlJPUjoNCj4gIkRhdGEgU3RydWN0dXJlIGlzIGRlZmluZWQgYnkgbW9yZSB0 aGFuIG9uZSB2YXJzdG9yZXM6IFwNCj4gDQo+ICsgICAgICAgICAgICBpdCBjYW4ndCBiZSByZWZl cnJlZCBhcyB2YXJzdG9yZTogb25seSB2YXJzdG9yZSBuYW1lIGNvdWxkIGJlIHVzZWQuIiwNCj4g DQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0dFVF9FRklWQVJTVE9SRV9FUlJPUjog ImdldCBlZmkgdmFyc3RvcmUNCj4gZXJyb3IiLA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fRUZJVkFSU1RPUkVfVVNFX0VSUk9SOiAiY2FuIG5vdCB1c2UgdGhlDQo+IGVmaSB2 YXJzdG9yZSBsaWtlIHRoaXMiLA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f RUZJVkFSU1RPUkVfU0laRV9FUlJPUjogInVuc3VwcG9ydCBlZmkNCj4gdmFyc3RvcmUgc2l6ZSBz aG91bGQgYmUgPD0gOCBieXRlcyIsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9HRVRfTlZWQVJTVE9SRV9FUlJPUjogImdldCBuYW1lIHZhbHVlDQo+IHZhcnN0b3JlIGVycm9y IiwNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1FWQVJfUkVVU0U6ICJ2YXJp YWJsZSByZXVzZWQgYnkgbW9yZQ0KPiB0aGFuIG9uZSBxdWVzdGlvbiIsDQo+IA0KPiArICAgIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRDogImZsYWdzIHVuc3VwcG9y dGVkIiwNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX0FSUkFSWV9O VU06ICJhcnJheSBudW1iZXINCj4gZXJyb3I6IHRoZSB2YWxpZCB2YWx1ZSBpcyBpbiBcDQo+IA0K PiArICAgICAgICAoMCB+IE1BWF9JTkRFWC0xIGZvciBVRUZJIHZmciBhbmQgaW4gKDEgfiBNQVhf SU5ERVggZm9yIEZyYW1ld29yaw0KPiBWZnIiLA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fREFUQV9TVFJJTkdfRVJST1I6ICJkYXRhIGZpZWxkIHN0cmluZw0KPiBlcnJvciBv ciBub3Qgc3VwcG9ydCIsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9ERUZB VUxUX1ZBTFVFX1JFREVGSU5FRDogImRlZmF1bHQgdmFsdWUNCj4gcmUtZGVmaW5lZCB3aXRoIGRp ZmZlcmVudCB2YWx1ZSIsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9DT05T VEFOVF9PTkxZOiAib25seSBjb25zdGFudCBpcyBhbGxvd2VkDQo+IGluIHRoZSBleHByZXNzaW9u IiwNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX05BTUVfUkVE RUZJTkVEX0VSUk9SOg0KPiAiVmFyc3RvcmUgbmFtZSBpcyBkZWZpbmVkIGJ5IG1vcmUgdGhhbiBv bmUgdmFyc3RvcmVzOiBpdCBjYW4ndCBiZSByZWZlcnJlZCBhcw0KPiB2YXJzdG9yZTpcDQo+IA0K PiArICAgICAgICBvbmx5IHZhcnN0b3JlIHN0cnVjdHVyZSBuYW1lIGNvdWxkIGJlIHVzZWQuIiwN Cj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0JJVF9XSURUSF9FUlJPUjogImJp dCB3aWR0aCBtdXN0IGJlIDw9DQo+IHNpemVvZiAodHlwZSAqIDggYW5kIHRoZSBtYXggd2lkdGgg Y2FuIG5vdCA+IDMyIiwNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NUUklO R19UT19VSU5UX09WRVJGTE9XOiAiU3RyaW5nIHRvDQo+IFVJTlQqIE92ZXJmbG93IiwNCj4gDQo+ ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPREVVTkRFRklORUQ6ICJ1bmRlZmluZWQg RXJyb3IgQ29kZSIsDQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVG SV9WRlJfV0FSTklOR19DT0RFKEVudW0pOg0KPiANCj4gKyAgICBWRlJfV0FSTklOR19ERUZBVUxU X1ZBTFVFX1JFREVGSU5FRCA9IDANCj4gDQo+ICsgICAgVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhf VEVYVF9UV08gPSAxDQo+IA0KPiArICAgIFZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktf T1BDT0RFID0gMg0KPiANCj4gKyAgICBWRlJfV0FSTklOR19DT0RFVU5ERUZJTkVEID0gMw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK3Zmcldhcm5pbmdNZXNzYWdlID0gew0KPiANCj4gKyAgICBF RklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklOR19ERUZBVUxUX1ZBTFVFX1JFREVGSU5FRDoN Cj4gIjogZGVmYXVsdCB2YWx1ZSByZS1kZWZpbmVkIHdpdGggZGlmZmVyZW50IHZhbHVlIiwNCj4g DQo+ICsgICAgRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhfVEVY VF9UV086ICI6DQo+IEFjdGlvbiBvcGNvZGUgc2hvdWxkIG5vdCBoYXZlIFRleHRUd28gcGFydCIs DQo+IA0KPiArDQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9G UkFNRVdPUktfT1BDTw0KPiBERTogIjogTm90IHJlY29tbWVuZCB0byB1c2Ugb2Jzb2xldGVkIGZy YW1ld29yayBvcGNvZGUiLA0KPiANCj4gKyAgICBFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FS TklOR19DT0RFVU5ERUZJTkVEOiAiOg0KPiB1bmRlZmluZWQgV2FybmluZyBDb2RlIiwNCj4gDQo+ ICt9DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgVmZyRXJyb3JIYW5kbGU6DQo+IA0K PiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5wdXRGaWxl TmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmZyRXJyb3JNZXNzYWdlID0gdmZyRXJy b3JNZXNzYWdlDQo+IA0KPiArICAgICAgICBzZWxmLnZmcldhcm5pbmdNZXNzYWdlID0gdmZyV2Fy bmluZ01lc3NhZ2UNCj4gDQo+ICsgICAgICAgIHNlbGYuV2FybmluZ0FzRXJyb3IgPSBGYWxzZQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0V2FybmluZ0FzRXJyb3Ioc2VsZiwgV2FybmluZ0Fz RXJyb3IpOg0KPiANCj4gKyAgICAgICAgc2VsZi5XYXJuaW5nQXNFcnJvciA9IFdhcm5pbmdBc0Vy cm9yDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRJbnB1dEZpbGUoc2VsZiwgSW5wdXRGaWxl KToNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5wdXRGaWxlTmFtZSA9IElucHV0RmlsZQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgSGFuZGxlV2FybmluZyhzZWxmLCBXYXJuaW5nQ29kZSwgTGluZU51 bT1Ob25lLA0KPiBUb2tlblZhbHVlPU5vbmUpOg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi52ZnJX YXJuaW5nTWVzc2FnZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiAxDQo+IA0K PiArICAgICAgICBXYXJuaW5nTXNnID0gIiINCj4gDQo+ICsgICAgICAgIGZvciBrZXkgaW4gc2Vs Zi52ZnJXYXJuaW5nTWVzc2FnZS5rZXlzKCk6DQo+IA0KPiArICAgICAgICAgICAgaWYgV2Fybmlu Z0NvZGUgPT0gc2VsZi52ZnJXYXJuaW5nTWVzc2FnZVtrZXldOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBXYXJuaW5nTXNnID0gc2VsZi52ZnJXYXJuaW5nTWVzc2FnZVtrZXldDQo+IA0KPiArICAg ICAgICAgICAgICAgIGJyZWFrDQo+IA0KPiArICAgICAgICBpZiBXYXJuaW5nTXNnICE9ICIiOg0K PiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuV2FybmluZ0FzRXJyb3I6DQo+IA0KPiArICAgICAg ICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJW ZnJDb21waWxlciIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBXYXJuaW5nQ29kZS52YWx1 ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFdhcm5pbmdNc2csDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLklucHV0RmlsZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBMaW5lTnVtLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgIndhcm5pbmcgdHJlYXRl ZCBhcyBlcnJvciIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAg ICBFZGtMb2dnZXIud2FybigNCj4gDQo+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwg V2FybmluZ0NvZGUudmFsdWUsIHNlbGYuSW5wdXRGaWxlTmFtZSwgTGluZU51bSwNCj4gVG9rZW5W YWx1ZQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFByaW50 TXNnKHNlbGYsIExpbmVOdW0sIE1zZ1R5cGU9IkVycm9yIiwgRXJyb3JNc2c9Tm9uZSwNCj4gVG9r ZW5WYWx1ZT1Ob25lKToNCj4gDQo+ICsgICAgICAgIGlmIE1zZ1R5cGUgPT0gIldhcm5pbmciOg0K PiANCj4gKyAgICAgICAgICAgIEVka0xvZ2dlci52ZXJib3NlKEVycm9yTXNnKQ0KPiANCj4gKyAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZPUk1BVF9JTlZBTElELCBFcnJvck1zZywg c2VsZi5JbnB1dEZpbGVOYW1lLA0KPiBMaW5lTnVtLCBUb2tlblZhbHVlDQo+IA0KPiArICAgICAg ICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSGFuZGxlRXJyb3Ioc2VsZiwgRXJyb3JD b2RlLCBMaW5lTnVtPU5vbmUsIFRva2VuVmFsdWU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBpZiBz ZWxmLnZmckVycm9yTWVzc2FnZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiAx DQo+IA0KPiArICAgICAgICBFcnJvck1zZyA9ICIiDQo+IA0KPiArICAgICAgICBmb3IgS2V5IGlu IHNlbGYudmZyRXJyb3JNZXNzYWdlLmtleXMoKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBFcnJv ckNvZGUgPT0gS2V5Og0KPiANCj4gKyAgICAgICAgICAgICAgICBFcnJvck1zZyA9IHNlbGYudmZy RXJyb3JNZXNzYWdlW0tleV0NCj4gDQo+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gDQo+ICsg ICAgICAgIGlmIEVycm9yTXNnICE9ICIiOg0KPiANCj4gKyAgICAgICAgICAgIEVka0xvZ2dlci5l cnJvcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwgRXJyb3JDb2RlLnZh bHVlLCBFcnJvck1zZywgc2VsZi5JbnB1dEZpbGVOYW1lLA0KPiBMaW5lTnVtLCBUb2tlblZhbHVl DQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiAxDQo+IA0K PiArICAgICAgICByZXR1cm4gMA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2dWZnJFcnJvckhh bmRsZSA9IFZmckVycm9ySGFuZGxlKCkNCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJGb3JtUGtnLnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRm9ybVBrZy5weQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4zNWY1MGIwY2VmDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRm9ybVBrZy5weQ0KPiBA QCAtMCwwICsxLDI5MzcgQEANCj4gKyMjIEBmaWxlDQo+IA0KPiArIyBUaGUgZGVmaW5pdGlvbiBv ZiBGb3JtUGtnJ3MgbWVtYmVyIGZ1bmN0aW9uDQo+IA0KPiArIw0KPiANCj4gKyMgQ29weXJpZ2h0 IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g DQo+ICsjIw0KPiANCj4gKw0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyQ3R5cGVzIGltcG9y dCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJVdGlsaXR5IGltcG9ydCAqDQo+IA0KPiAr ZnJvbSBWZnJDb21waWxlci5JZnJFcnJvciBpbXBvcnQgVmZyUmV0dXJuQ29kZQ0KPiANCj4gKw0K PiANCj4gK2dWZnJWYXJEYXRhVHlwZURCID0gVmZyVmFyRGF0YVR5cGVEQigpDQo+IA0KPiArZ1Zm ckRlZmF1bHRTdG9yZSA9IFZmckRlZmF1bHRTdG9yZSgpDQo+IA0KPiArZ1ZmckRhdGFTdG9yYWdl ID0gVmZyRGF0YVN0b3JhZ2UoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIE9wTm9k ZToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUsIFNjb3BlKToNCj4gDQo+ICsg ICAgICAgIHNlbGYuU2l6ZSA9IFNpemUNCj4gDQo+ICsgICAgICAgIHNlbGYuU2NvcGUgPSBTY29w ZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2dPcGNvZGVTaXplc1Njb3BlVGFibGUgPSBbDQo+ IA0KPiArICAgIE9wTm9kZSgwLCAwKSwgICMgRUZJX0lGUl9JTlZBTElEIC0gMHgwMA0KPiANCj4g KyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfRk9STSksIDEpLCAgIyBFRklfSUZSX0ZPUk1fT1AN Cj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NVQlRJVExFKSwgMSksICAjIEVGSV9J RlJfU1VCVElUTEVfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1RFWFQpLCAw KSwgICMgRUZJX0lGUl9URVhUX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9J TUFHRSksIDApLCAgIyBFRklfSUZSX0lNQUdFX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2Yo RUZJX0lGUl9PTkVfT0YpLCAxKSwgICMgRUZJX0lGUl9PTkVfT0ZfT1AgLSAweDA1DQo+IA0KPiAr ICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9DSEVDS0JPWCksIDEpLCAgIyBFRklfSUZSX0NIRUNL Qk9YX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9OVU1FUklDKSwgMSksICAj IEVGSV9JRlJfTlVNRVJJQ19PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfUEFT U1dPUkQpLCAxKSwgICMgRUZJX0lGUl9QQVNTV09SRF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfT05FX09GX09QVElPTiksIDApLCAgIw0KPiBFRklfSUZSX09ORV9PRl9PUFRJ T05fT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NVUFBSRVNTX0lGKSwgMSks ICAjIEVGSV9JRlJfU1VQUFJFU1NfSUYgLSAweDBBDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2Yo RUZJX0lGUl9MT0NLRUQpLCAwKSwgICMgRUZJX0lGUl9MT0NLRURfT1ANCj4gDQo+ICsgICAgT3BO b2RlKHNpemVvZihFRklfSUZSX0FDVElPTiksIDEpLCAgIyBFRklfSUZSX0FDVElPTl9PUA0KPiAN Cj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfUkVTRVRfQlVUVE9OKSwgMSksICAjDQo+IEVG SV9JRlJfUkVTRVRfQlVUVE9OX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9G T1JNX1NFVCksIDEpLCAgIyBFRklfSUZSX0ZPUk1fU0VUX09QIC0weEUNCj4gDQo+ICsgICAgT3BO b2RlKHNpemVvZihFRklfSUZSX1JFRiksIDApLCAgIyBFRklfSUZSX1JFRl9PUA0KPiANCj4gKyAg ICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfTk9fU1VCTUlUX0lGKSwgMSksICAjDQo+IEVGSV9JRlJf Tk9fU1VCTUlUX0lGX09QIC0weDEwDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9J TkNPTlNJU1RFTlRfSUYpLCAxKSwgICMNCj4gRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ANCj4g DQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0VRX0lEX1ZBTCksIDApLCAgIyBFRklfSUZS X0VRX0lEX1ZBTF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfRVFfSURfSUQp LCAwKSwgICMgRUZJX0lGUl9FUV9JRF9JRF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVG SV9JRlJfRVFfSURfVkFMX0xJU1QpLCAwKSwgICMgRUZJX0lGUl9FUV9JRF9MSVNUX09QIC0NCj4g MHgxNA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfQU5EKSwgMCksICAjIEVGSV9J RlJfQU5EX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9PUiksIDApLCAgIyBF RklfSUZSX09SX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9OT1QpLCAwKSwg ICMgRUZJX0lGUl9OT1RfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1JVTEUp LCAxKSwgICMgRUZJX0lGUl9SVUxFX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lG Ul9HUkFZX09VVF9JRiksIDEpLCAgIyBFRklfSUZSX0dSQVlPVVRfSUZfT1AgLQ0KPiAweDE5DQo+ IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9EQVRFKSwgMSksICAjIEVGSV9JRlJfREFU RV9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVElNRSksIDEpLCAgIyBFRklf SUZSX1RJTUVfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NUUklORyksIDEp LCAgIyBFRklfSUZSX1NUUklOR19PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJf UkVGUkVTSCksIDApLCAgIyBFRklfSUZSX1JFRlJFU0hfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNp emVvZihFRklfSUZSX0RJU0FCTEVfSUYpLCAxKSwgICMgRUZJX0lGUl9ESVNBQkxFX0lGX09QIC0g MHgxRQ0KPiANCj4gKyAgICBPcE5vZGUoMCwgMCksICAjIDB4MUYNCj4gDQo+ICsgICAgT3BOb2Rl KHNpemVvZihFRklfSUZSX1RPX0xPV0VSKSwgMCksICAjIEVGSV9JRlJfVE9fTE9XRVJfT1AgLSAw eDIwDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9UT19VUFBFUiksIDApLCAgIyBF RklfSUZSX1RPX1VQUEVSX09QIC0gMHgyMQ0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9J RlJfTUFQKSwgMSksICAjIEVGSV9JRlJfTUFQIC0gMHgyMg0KPiANCj4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfT1JERVJFRF9MSVNUKSwgMSksICAjIEVGSV9JRlJfT1JERVJFRF9MSVNUX09Q DQo+IC0gMHgyMw0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkUpLCAw KSwgICMgRUZJX0lGUl9WQVJTVE9SRV9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9J RlJfVkFSU1RPUkVfTkFNRV9WQUxVRSksIDApLCAgIw0KPiBFRklfSUZSX1ZBUlNUT1JFX05BTUVf VkFMVUVfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1ZBUlNUT1JFX0VGSSks IDApLCAgIyBFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9m KEVGSV9JRlJfVkFSU1RPUkVfREVWSUNFKSwgMSksICAjDQo+IEVGSV9JRlJfVkFSU1RPUkVfREVW SUNFX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9WRVJTSU9OKSwgMCksICAj IEVGSV9JRlJfVkVSU0lPTl9PUCAtIDB4MjgNCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklf SUZSX0VORCksIDApLCAgIyBFRklfSUZSX0VORF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9m KEVGSV9JRlJfTUFUQ0gpLCAwKSwgICMgRUZJX0lGUl9NQVRDSF9PUCAtIDB4MkENCj4gDQo+ICsg ICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0dFVCksIDApLCAgIyBFRklfSUZSX0dFVCAtIDB4MkIN Cj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NFVCksIDApLCAgIyBFRklfSUZSX1NF VCAtIDB4MkMNCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1JFQUQpLCAwKSwgICMg RUZJX0lGUl9SRUFEIC0gMHgyRA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfV1JJ VEUpLCAwKSwgICMgRUZJX0lGUl9XUklURSAtIDB4MkUNCj4gDQo+ICsgICAgT3BOb2RlKHNpemVv ZihFRklfSUZSX0VRVUFMKSwgMCksICAjIEVGSV9JRlJfRVFVQUxfT1AgLSAweDJGDQo+IA0KPiAr ICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9OT1RfRVFVQUwpLCAwKSwgICMgRUZJX0lGUl9OT1Rf RVFVQUxfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0dSRUFURVJfVEhBTiks IDApLCAgIw0KPiBFRklfSUZSX0dSRUFURVJfVEhBTl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfR1JFQVRFUl9FUVVBTCksIDApLCAgIw0KPiBFRklfSUZSX0dSRUFURVJfRVFV QUxfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0xFU1NfVEhBTiksIDApLCAg IyBFRklfSUZSX0xFU1NfVEhBTl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJf TEVTU19FUVVBTCksIDApLCAgIyBFRklfSUZSX0xFU1NfRVFVQUxfT1AgLQ0KPiAweDM0DQo+IA0K PiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9CSVRXSVNFX0FORCksIDApLCAgIyBFRklfSUZS X0JJVFdJU0VfQU5EX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9CSVRXSVNF X09SKSwgMCksICAjIEVGSV9JRlJfQklUV0lTRV9PUl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfQklUV0lTRV9OT1QpLCAwKSwgICMgRUZJX0lGUl9CSVRXSVNFX05PVF9PUA0K PiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfU0hJRlRfTEVGVCksIDApLCAgIyBFRklf SUZSX1NISUZUX0xFRlRfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NISUZU X1JJR0hUKSwgMCksICAjIEVGSV9JRlJfU0hJRlRfUklHSFRfT1ANCj4gDQo+ICsgICAgT3BOb2Rl KHNpemVvZihFRklfSUZSX0FERCksIDApLCAgIyBFRklfSUZSX0FERF9PUCAtIDB4M0ENCj4gDQo+ ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NVQlRSQUNUKSwgMCksICAjIEVGSV9JRlJfU1VC VFJBQ1RfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX01VTFRJUExZKSwgMCks ICAjIEVGSV9JRlJfTVVMVElQTFlfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZS X0RJVklERSksIDApLCAgIyBFRklfSUZSX0RJVklERV9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfTU9EVUxPKSwgMCksICAjIEVGSV9JRlJfTU9EVUxPX09QIC0gMHgzRQ0KPiAN Cj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfUlVMRV9SRUYpLCAwKSwgICMgRUZJX0lGUl9S VUxFX1JFRl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVG MSksIDApLCAgIw0KPiBFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1ANCj4gDQo+ICsgICAgT3BOb2Rl KHNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JFRjIpLCAwKSwgICMNCj4gRUZJX0lGUl9RVUVTVElP Tl9SRUYyX09QIC0gMHg0MQ0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVUlOVDgp LCAwKSwgICMgRUZJX0lGUl9VSU5UOA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJf VUlOVDE2KSwgMCksICAjIEVGSV9JRlJfVUlOVDE2DQo+IA0KPiArICAgIE9wTm9kZShzaXplb2Yo RUZJX0lGUl9VSU5UMzIpLCAwKSwgICMgRUZJX0lGUl9VSU5UMzINCj4gDQo+ICsgICAgT3BOb2Rl KHNpemVvZihFRklfSUZSX1VJTlQ2NCksIDApLCAgIyBFRklfSUZSX1VUTlQ2NA0KPiANCj4gKyAg ICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVFJVRSksIDApLCAgIyBFRklfSUZSX1RSVUVfT1AgLSAw eDQ2DQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9GQUxTRSksIDApLCAgIyBFRklf SUZSX0ZBTFNFX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9UT19VSU5UKSwg MCksICAjIEVGSV9JRlJfVE9fVUlOVF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9J RlJfVE9fU1RSSU5HKSwgMCksICAjIEVGSV9JRlJfVE9fU1RSSU5HX09QDQo+IA0KPiArICAgIE9w Tm9kZShzaXplb2YoRUZJX0lGUl9UT19CT09MRUFOKSwgMCksICAjIEVGSV9JRlJfVE9fQk9PTEVB Tl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfTUlEKSwgMCksICAjIEVGSV9J RlJfTUlEX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9GSU5EKSwgMCksICAj IEVGSV9JRlJfRklORF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVE9LRU4p LCAwKSwgICMgRUZJX0lGUl9UT0tFTl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9J RlJfU1RSSU5HX1JFRjEpLCAwKSwgICMgRUZJX0lGUl9TVFJJTkdfUkVGMV9PUCAtDQo+IDB4NEUN Cj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NUUklOR19SRUYyKSwgMCksICAjIEVG SV9JRlJfU1RSSU5HX1JFRjJfT1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0NP TkRJVElPTkFMKSwgMCksICAjIEVGSV9JRlJfQ09ORElUSU9OQUxfT1ANCj4gDQo+ICsgICAgT3BO b2RlKHNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JFRjMpLCAwKSwgICMNCj4gRUZJX0lGUl9RVUVT VElPTl9SRUYzX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9aRVJPKSwgMCks ICAjIEVGSV9JRlJfWkVST19PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfT05F KSwgMCksICAjIEVGSV9JRlJfT05FX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lG Ul9PTkVTKSwgMCksICAjIEVGSV9JRlJfT05FU19PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9m KEVGSV9JRlJfVU5ERUZJTkVEKSwgMCksICAjIEVGSV9JRlJfVU5ERUZJTkVEX09QDQo+IA0KPiAr ICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9MRU5HVEgpLCAwKSwgICMgRUZJX0lGUl9MRU5HVEhf T1ANCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0RVUCksIDApLCAgIyBFRklfSUZS X0RVUF9PUCAtIDB4NTcNCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1RISVMpLCAw KSwgICMgRUZJX0lGUl9USElTX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9T UEFOKSwgMCksICAjIEVGSV9JRlJfU1BBTl9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVG SV9JRlJfVkFMVUUpLCAxKSwgICMgRUZJX0lGUl9WQUxVRV9PUA0KPiANCj4gKyAgICBPcE5vZGUo c2l6ZW9mKEVGSV9JRlJfREVGQVVMVCksIDApLCAgIyBFRklfSUZSX0RFRkFVTFRfT1ANCj4gDQo+ ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0RFRkFVTFRTVE9SRSksIDApLCAgIyBFRklfSUZS X0RFRkFVTFRTVE9SRV9PUA0KPiAtIDB4NUMNCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklf SUZSX0ZPUk1fTUFQKSwgMSksICAjIEVGSV9JRlJfRk9STV9NQVBfT1AgLQ0KPiAweDVEDQo+IA0K PiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9DQVRFTkFURSksIDApLCAgIyBFRklfSUZSX0NB VEVOQVRFX09QDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9HVUlEKSwgMCksICAj IEVGSV9JRlJfR1VJRF9PUA0KPiANCj4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfU0VDVVJJ VFkpLCAwKSwgICMgRUZJX0lGUl9TRUNVUklUWV9PUCAtIDB4NjANCj4gDQo+ICsgICAgT3BOb2Rl KHNpemVvZihFRklfSUZSX01PREFMX1RBRyksIDApLCAgIyBFRklfSUZSX01PREFMX1RBR19PUCAt DQo+IDB4NjENCj4gDQo+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1JFRlJFU0hfSUQpLCAw KSwgICMgRUZJX0lGUl9SRUZSRVNIX0lEX09QIC0NCj4gMHg2Mg0KPiANCj4gKyAgICBPcE5vZGUo c2l6ZW9mKEVGSV9JRlJfV0FSTklOR19JRiksIDEpLCAgIyBFRklfSUZSX1dBUk5JTkdfSUZfT1Ag LQ0KPiAweDYzDQo+IA0KPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9NQVRDSDIpLCAwKSwN Cj4gDQo+ICtdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgT3BCdWZmZXJOb2RlOg0K PiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgQnVmZmVyPU5vbmUsIE5leHQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICBzZWxmLkJ1ZmZlciA9IEJ1ZmZlcg0KPiANCj4gKyAgICAgICAgc2VsZi5O ZXh0ID0gTmV4dA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEFTU0lHTl9GTEFHKEVu dW0pOg0KPiANCj4gKyAgICBQRU5ESU5HID0gMQ0KPiANCj4gKyAgICBBU1NJR05FRCA9IDINCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtWQUxVRV9UWVBFX09ORSA9IDENCj4gDQo+ICtWQUxVRV9U WVBFX1RXTyA9IDINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBTUGVuZGluZ0Fzc2ln bjoNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIEtleSwgVmFsQWRkciwgTGluZU5vLCBN c2csIFR5cGU9MCk6DQo+IA0KPiArICAgICAgICBzZWxmLktleSA9IEtleQ0KPiANCj4gKyAgICAg ICAgc2VsZi5BZGRyID0gVmFsQWRkcg0KPiANCj4gKyAgICAgICAgc2VsZi5GbGFnID0gQVNTSUdO X0ZMQUcuUEVORElORw0KPiANCj4gKyAgICAgICAgc2VsZi5MaW5lTm8gPSBMaW5lTm8NCj4gDQo+ ICsgICAgICAgIHNlbGYuTXNnID0gTXNnDQo+IA0KPiArICAgICAgICBzZWxmLlR5cGUgPSBUeXBl DQo+IA0KPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBBc3NpZ25WYWx1ZShzZWxmLCBWYWwpOg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5UeXBlID09 IFZBTFVFX1RZUEVfT05FOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQWRkci5RdWVzdGlvbklk MSA9IFZhbA0KPiANCj4gKyAgICAgICAgZWxpZiBzZWxmLlR5cGUgPT0gVkFMVUVfVFlQRV9UV086 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5BZGRyLlF1ZXN0aW9uSWQyID0gVmFsDQo+IA0KPiAr ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQWRkci5RdWVzdGlvbklkID0g VmFsDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLkZsYWcgPSBBU1NJR05fRkxBRy5BU1NJ R05FRA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEluc2VydE9wTm9kZToNCj4gDQo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIERhdGEsIE9wQ29kZSk6DQo+IA0KPiArICAgICAgICBz ZWxmLkRhdGEgPSBEYXRhDQo+IA0KPiArICAgICAgICBzZWxmLk9wQ29kZSA9IE9wQ29kZQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEZvcm1Qa2c6DQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUGtnTGVuZ3RoID0gMA0KPiANCj4gKyAg ICAgICAgc2VsZi5PZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLlBlbmRpbmdBc3NpZ25M aXN0ID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgQ2xlYXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICBzZWxmLlBrZ0xlbmd0aCA9IDANCj4gDQo+ICsgICAgICAgIHNlbGYuT2Zmc2V0ID0g MA0KPiANCj4gKyAgICAgICAgc2VsZi5QZW5kaW5nQXNzaWduTGlzdCA9IE5vbmUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEJ1aWxkUGtnSGRyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgUGtnSGRy ID0gRUZJX0hJSV9QQUNLQUdFX0hFQURFUigpDQo+IA0KPiArICAgICAgICBQa2dIZHIuVHlwZSA9 IEVGSV9ISUlfUEFDS0FHRV9GT1JNDQo+IA0KPiArICAgICAgICBQa2dIZHIuTGVuZ3RoID0gc2Vs Zi5Qa2dMZW5ndGggKyBzaXplb2YoRUZJX0hJSV9QQUNLQUdFX0hFQURFUikNCj4gDQo+ICsgICAg ICAgIHJldHVybiBQa2dIZHINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEJ1aWxkUGtnKHNlbGYs IFJvb3QpOg0KPiANCj4gKyAgICAgICAgaWYgUm9vdCBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiANCj4gKyAgICAgICAgaWYgUm9vdC5PcENvZGUgaXMgbm90IE5vbmUgYW5k IFJvb3QuT3BDb2RlICE9DQo+IEVGSV9JRlJfU0hPV05fREVGQVVMVFNUT1JFX09QOg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuUGtnTGVuZ3RoICs9IFJvb3QuRGF0YS5HZXRJbmZvKCkuSGVhZGVy Lkxlbmd0aA0KPiANCj4gKyAgICAgICAgICAgIFJvb3QuT2Zmc2V0ID0gZ0Zvcm1Qa2cuT2Zmc2V0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PZmZzZXQgKz0gUm9vdC5EYXRhLkdldEluZm8oKS5I ZWFkZXIuTGVuZ3RoDQo+IA0KPiArICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdOg0KPiANCj4g KyAgICAgICAgICAgIGZvciBDaGlsZE5vZGUgaW4gUm9vdC5DaGlsZDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5CdWlsZFBrZyhDaGlsZE5vZGUpDQo+IA0KPiArDQo+IA0KPiArICAgICMg R2V0IGRhdGEgZnJvbSBjdHlwZXMgdG8gYnl0ZXMuDQo+IA0KPiArICAgIGRlZiBTdHJ1Y3RUb1N0 cmVhbShzZWxmLCBTdHJ1Y3QpIC0+IGJ5dGVzOg0KPiANCj4gKyAgICAgICAgTGVuZ3RoID0gc2l6 ZW9mKFN0cnVjdCkNCj4gDQo+ICsgICAgICAgIFAgPSBjYXN0KHBvaW50ZXIoU3RydWN0KSwgUE9J TlRFUihjX2NoYXIgKiBMZW5ndGgpKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIFAuY29udGVudHMu cmF3DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBBc3NpZ25QZW5kaW5nKHNlbGYsIEtleSwgVmFy QWRkciwgTGluZU5vLCBNc2csIFR5cGU9MCk6DQo+IA0KPiArICAgICAgICBwTmV3ID0gU1BlbmRp bmdBc3NpZ24oS2V5LCBWYXJBZGRyLCBMaW5lTm8sIE1zZywgVHlwZSkNCj4gDQo+ICsgICAgICAg IGlmIHBOZXcgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArICAgICAgICBwTmV3Lk5leHQg PSBzZWxmLlBlbmRpbmdBc3NpZ25MaXN0DQo+IA0KPiArICAgICAgICBzZWxmLlBlbmRpbmdBc3Np Z25MaXN0ID0gcE5ldw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEb1BlbmRpbmdBc3NpZ24oc2Vs ZiwgS2V5LCBWYWwpOg0KPiANCj4gKyAgICAgICAgaWYgS2V5IGlzIE5vbmUgb3IgVmFsIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNl bGYuUGVuZGluZ0Fzc2lnbkxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLktleSA9PSBLZXk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHBOb2RlLkFzc2lnblZhbHVlKFZhbCkNCj4gDQo+ICsgICAgICAgICAgICBw Tm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEhhdmVQZW5kaW5nVW5h c3NpZ25lZChzZWxmKToNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5QZW5kaW5nQXNzaWdu TGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgaWYgcE5vZGUuRmxhZyA9PSBBU1NJR05fRkxBRy5QRU5ESU5HOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5v ZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIEZhbHNlDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBQZW5kaW5nQXNzaWduUHJpbnRBbGwoc2VsZik6DQo+IA0KPiArICAgICAg ICBwTm9kZSA9IHNlbGYuUGVuZGluZ0Fzc2lnbkxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBO b2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLkZsYWcgPT0gQVNT SUdOX0ZMQUcuUEVORElORzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxl LlByaW50TXNnKHBOb2RlLkxpbmVObywgIkVycm9yIiwgcE5vZGUuTXNnLA0KPiBwTm9kZS5LZXkp DQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBEZWNsYXJlUGVuZGluZ1F1ZXN0aW9uKA0KPiANCj4gKyAgICAgICAgc2VsZiwNCj4g DQo+ICsgICAgICAgIGxWZnJWYXJEYXRhVHlwZURCOiBWZnJWYXJEYXRhVHlwZURCLA0KPiANCj4g KyAgICAgICAgbFZmckRhdGFTdG9yYWdlOiBWZnJEYXRhU3RvcmFnZSwNCj4gDQo+ICsgICAgICAg IGxWZnJRdWVzdGlvbkRCOiBWZnJRdWVzdGlvbkRCLA0KPiANCj4gKyAgICAgICAgTGluZU5vPU5v bmUsDQo+IA0KPiArICAgICk6DQo+IA0KPiArICAgICAgICAjIERlY2xhcmUgYWxsIHF1ZXN0aW9u cyBhcyBOdW1lcmljIGluIERpc2FibGVJZiBUcnVlDQo+IA0KPiArICAgICAgICBSZXR1cm5MaXN0 ID0gW10NCj4gDQo+ICsgICAgICAgIEd1aWRPYmogPSBOb25lDQo+IA0KPiArICAgICAgICBESU9i aiA9IElmckRpc2FibGVJZigpDQo+IA0KPiArICAgICAgICBESU9iai5TZXRMaW5lTm8oTGluZU5v KQ0KPiANCj4gKyAgICAgICAgUmV0dXJuTGlzdC5hcHBlbmQoSW5zZXJ0T3BOb2RlKERJT2JqLCBF RklfSUZSX0RJU0FCTEVfSUZfT1ApKQ0KPiANCj4gKyAgICAgICAgIyBUcnVlT3Bjb2RlDQo+IA0K PiArICAgICAgICBUT2JqID0gSWZyVHJ1ZShMaW5lTm8pDQo+IA0KPiArICAgICAgICBSZXR1cm5M aXN0LmFwcGVuZChJbnNlcnRPcE5vZGUoVE9iaiwgRUZJX0lGUl9UUlVFX09QKSkNCj4gDQo+ICsg ICAgICAgIHBOb2RlID0gc2VsZi5QZW5kaW5nQXNzaWduTGlzdA0KPiANCj4gKyAgICAgICAgd2hp bGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuRmxhZyA9 PSBBU1NJR05fRkxBRy5QRU5ESU5HOg0KPiANCj4gKyAgICAgICAgICAgICAgICBJbmZvID0gRUZJ X1ZBUlNUT1JFX0lORk8oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJTdHIgPSBwTm9kZS5L ZXkNCj4gDQo+ICsgICAgICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gbFZmclF1ZXN0aW9u REIuUmVnaXN0ZXJRdWVzdGlvbigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIE5vbmUsIFZh clN0ciwgRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIGdGb3JtUGtnDQo+IA0KPiArICAgICAgICAg ICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGdW ZnJFcnJvckhhbmRsZS5IYW5kbGVFcnJvcihSZXR1cm5Db2RlLCBwTm9kZS5MaW5lTm8sDQo+IHBO b2RlLktleSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXR1cm5MaXN0LCBS ZXR1cm5Db2RlDQo+IA0KPiArICAgICAgICAgICAgICAgICMgaWZkZWYgVkZSRVhQX0RFQlVHDQo+ IA0KPiArICAgICAgICAgICAgICAgICMgcHJpbnRmKCJVbmRlZmluZWQgUXVlc3Rpb24gbmFtZSBp cyAlcyBhbmQgSWQgaXMgMHgleFxuIiwgVmFyU3RyLA0KPiBRSWQpOw0KPiANCj4gKyAgICAgICAg ICAgICAgICAjIGVuZGlmDQo+IA0KPiArICAgICAgICAgICAgICAgICMgR2V0IFF1ZXN0aW9uIElu Zm8sIGZyYW1ld29yayB2ZnIgVmFyTmFtZSA9PSBTdHJ1Y3ROYW1lDQo+IA0KPiArICAgICAgICAg ICAgICAgIEFycmF5SWR4LCBzLCBGTmFtZSwgUmV0dXJuQ29kZSA9DQo+IGxWZnJWYXJEYXRhVHlw ZURCLkV4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBWYXJTdHIsIDANCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLlByaW50TXNnKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHBOb2RlLkxpbmVObywgIkVycm9yIiwgIlZhciBz dHJpbmcgaXMgbm90IHRoZSB2YWxpZCBDIHZhcmlhYmxlIiwNCj4gcE5vZGUuS2V5DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4g UmV0dXJuTGlzdCwgUmV0dXJuQ29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAj IEdldCBWYXJTdG9yZVR5cGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgSW5mby5WYXJTdG9yZUlk LCBSZXR1cm5Db2RlID0NCj4gbFZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoRk5hbWUpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBnVmZy RXJyb3JIYW5kbGUuUHJpbnRNc2coDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgcE5v ZGUuTGluZU5vLCAiRXJyb3IiLCAiVmFyIFN0b3JlIFR5cGUgaXMgbm90IGRlZmluZWQiLCBGTmFt ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIFJldHVybkxpc3QsIFJldHVybkNvZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICAgICAgVmFyU3RvcmVUeXBlID0gbFZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShJ bmZvLlZhclN0b3JlSWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHMgPT0gbGVuKFZhclN0 cikgYW5kIEFycmF5SWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVg6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBSZXR1cm5Db2RlID0gbFZmckRhdGFTdG9yYWdlLkdldE5hbWVWYXJTdG9yZUlu Zm8oSW5mbywNCj4gQXJyYXlJZHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBpZiBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJX1ZGUl9WQVJT VE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIFJldHVybkNvZGUgPSBsVmZyRGF0YVN0b3JhZ2UuR2V0RWZpVmFyU3RvcmVJbmZvKElu Zm8pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBlbGlmICgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVG SV9WRlJfVkFSU1RPUkVfQlVGRkVSDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgb3Ig VmFyU3RvcmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JF X0JVRkZFUl9CSVRTDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIFZhclN0ciA9IHBOb2RlLktleQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIFNOYW1lLCBSZXR1cm5Db2RlID0NCj4gbFZmckRhdGFTdG9yYWdlLkdldEJ1 ZmZlclZhclN0b3JlRGF0YVR5cGVOYW1lKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmZvLlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSA9PSBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmV3U3RyID0gU05hbWUgKyAiLiIgKyBWYXJTdHJbczpdDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZm8uSW5mby5WYXJPZmZzZXQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmZvLlZhclR5cGUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmZvLlZhclRvdGFsU2l6ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZm8uSXNCaXRWYXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZXR1cm5Db2RlLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApID0gbFZm clZhckRhdGFUeXBlREIuR2V0RGF0YUZpZWxkSW5mbyhOZXdTdHIpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybkNv ZGUgPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGdWZnJFcnJvckhhbmRsZS5I YW5kbGVFcnJvcihSZXR1cm5Db2RlLCBwTm9kZS5MaW5lTm8sDQo+IHBOb2RlLktleSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgIyBJZiB0aGUgc3RvcmFnZSBpcyBiaXQgZmllbGRzLCBjcmVhdGUg R3VpZCBvcGNvZGUgdG8gd3JhcCB0aGUgbnVtZXJpYw0KPiBvcGNvZGUuDQo+IA0KPiArICAgICAg ICAgICAgICAgIGlmIEluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBH dWlkT2JqID0gSWZyR3VpZCgwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgR3VpZE9iai5T ZXRHdWlkKEVES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIEd1aWRPYmouU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIFJldHVybkxpc3QuYXBwZW5kKEluc2VydE9wTm9kZShHdWlkT2JqLCBFRklfSUZSX0dVSURf T1ApKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBJbmZvLklzQml0VmFyOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzMyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICMgTnVtZXJpYyBkb2Vz bid0IHN1cHBvcnQgQk9PTEVBTiBkYXRhIHR5cGUuDQo+IA0KPiArICAgICAgICAgICAgICAgICMg Qk9PTEVBTiB0eXBlIGhhcyB0aGUgc2FtZSBkYXRhIHNpemUgdG8gVUlOVDguDQo+IA0KPiArICAg ICAgICAgICAgICAgIGVsaWYgSW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzgNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ05PYmogPSBJZnJOdW1l cmljKEluZm8uVmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ05PYmouU2V0TGluZU5v KExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ05PYmouU2V0UHJvbXB0KDB4MCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgQ05PYmouU2V0SGVscCgweDApDQo+IA0KPiArICAgICAgICAg ICAgICAgIENOT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBD Tk9iai5TZXRWYXJTdG9yZUluZm8oSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgUmV0dXJu TGlzdC5hcHBlbmQoSW5zZXJ0T3BOb2RlKENOT2JqLCBFRklfSUZSX0dVSURfT1ApKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBJbmZvLklzQml0VmFyOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgTWF4VmFsdWUgPSAoMSA8PCBJbmZvLlZhclRvdGFsU2l6ZSkgLSAxDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBDTk9iai5TZXRNaW5NYXhTdGVwRGF0YSgwLCBNYXhW YWx1ZSwgMCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIExGbGFncyA9IEVES0lJX0lGUl9O VU1FUklDX1NJWkVfQklUICYgSW5mby5WYXJUb3RhbFNpemUNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIENOT2JqLlNldEZsYWdzRm9yQml0RmllbGQoMCwgTEZsYWdzKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgQ05PYmouU2V0Rmxh Z3MoMCwgSW5mby5WYXJUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgQ05PYmouU2V0 TWluTWF4U3RlcERhdGEoMCwgLTEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg IGlmIFZhclN0b3JlVHlwZSA9PQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJT VE9SRV9FRkk6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWTk9iaiA9IElmclZhckVxTmFt ZShRSWQsIEluZm8uSW5mby5WYXJOYW1lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVk5P YmouU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFJldHVybkxp c3QuYXBwZW5kKEluc2VydE9wTm9kZShWTk9iaiwgRUZJX0lGUl9HVUlEX09QKSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAgICAgQ0VPYmogPSBJZnJFbmQoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBDRU9iai5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBS ZXR1cm5MaXN0LmFwcGVuZChJbnNlcnRPcE5vZGUoQ0VPYmosIEVGSV9JRlJfRU5EX09QKSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgR3VpZE9iaiBpcyBub3QgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIENFT2JqR3VpZCA9IElmckVuZCgpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBDRU9iakd1aWQuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIFJldHVybkxpc3QuYXBwZW5kKEluc2VydE9wTm9kZShDRU9iakd1aWQs IEVGSV9JRlJfRU5EX09QKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEd1aWRPYmouU2V0 U2NvcGUoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEd1aWRPYmogPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBTRU9iaiA9IElmckVuZCgpDQo+IA0KPiArICAgICAgICBTRU9iai5TZXRMaW5lTm8oTGluZU5v KQ0KPiANCj4gKyAgICAgICAgUmV0dXJuTGlzdC5hcHBlbmQoSW5zZXJ0T3BOb2RlKFNFT2JqLCBF RklfSUZSX0VORF9PUCkpDQo+IA0KPiArICAgICAgICByZXR1cm4gUmV0dXJuTGlzdCwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtnRm9y bVBrZyA9IEZvcm1Qa2coKQ0KPiANCj4gK2dDcmVhdGVPcCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ ICtnSWZyT2JqUHJpbnREZWJ1Z1RhYmxlID0gWw0KPiANCj4gKyAgICAiRUZJX0lGUl9JTlZBTElE IiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfRk9STSIsDQo+IA0KPiArICAgICJFRklfSUZSX1NVQlRJ VExFIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVEVYVCIsDQo+IA0KPiArICAgICJFRklfSUZSX0lN QUdFIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfT05FX09GIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJf Q0hFQ0tCT1giLA0KPiANCj4gKyAgICAiRUZJX0lGUl9OVU1FUklDIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfUEFTU1dPUkQiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9PTkVfT0ZfT1BUSU9OIiwNCj4g DQo+ICsgICAgIkVGSV9JRlJfU1VQUFJFU1NfSUYiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9MT0NL RUQiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9BQ1RJT04iLA0KPiANCj4gKyAgICAiRUZJX0lGUl9S RVNFVF9CVVRUT04iLA0KPiANCj4gKyAgICAiRUZJX0lGUl9GT1JNX1NFVCIsDQo+IA0KPiArICAg ICJFRklfSUZSX1JFRiIsDQo+IA0KPiArICAgICJFRklfSUZSX05PX1NVQk1JVF9JRiIsDQo+IA0K PiArICAgICJFRklfSUZSX0lOQ09OU0lTVEVOVF9JRiIsDQo+IA0KPiArICAgICJFRklfSUZSX0VR X0lEX1ZBTCIsDQo+IA0KPiArICAgICJFRklfSUZSX0VRX0lEX0lEIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfRVFfSURfTElTVCIsDQo+IA0KPiArICAgICJFRklfSUZSX0FORCIsDQo+IA0KPiArICAg ICJFRklfSUZSX09SIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTk9UIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfUlVMRSIsDQo+IA0KPiArICAgICJFRklfSUZSX0dSQVlfT1VUX0lGIiwNCj4gDQo+ICsg ICAgIkVGSV9JRlJfREFURSIsDQo+IA0KPiArICAgICJFRklfSUZSX1RJTUUiLA0KPiANCj4gKyAg ICAiRUZJX0lGUl9TVFJJTkciLA0KPiANCj4gKyAgICAiRUZJX0lGUl9SRUZSRVNIIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfRElTQUJMRV9JRiIsDQo+IA0KPiArICAgICJFRklfSUZSX0lOVkFMSUQi LA0KPiANCj4gKyAgICAiRUZJX0lGUl9UT19MT1dFUiIsDQo+IA0KPiArICAgICJFRklfSUZSX1RP X1VQUEVSIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTUFQIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJf T1JERVJFRF9MSVNUIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVkFSU1RPUkUiLA0KPiANCj4gKyAg ICAiRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVkFS U1RPUkVfRUZJIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVkFSU1RPUkVfREVWSUNFIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfVkVSU0lPTiIsDQo+IA0KPiArICAgICJFRklfSUZSX0VORCIsDQo+IA0K PiArICAgICJFRklfSUZSX01BVENIIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfR0VUIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfU0VUIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUkVBRCIsDQo+IA0KPiAr ICAgICJFRklfSUZSX1dSSVRFIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfRVFVQUwiLA0KPiANCj4g KyAgICAiRUZJX0lGUl9OT1RfRVFVQUwiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9HUkVBVEVSX1RI QU4iLA0KPiANCj4gKyAgICAiRUZJX0lGUl9HUkVBVEVSX0VRVUFMIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfTEVTU19USEFOIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTEVTU19FUVVBTCIsDQo+IA0K PiArICAgICJFRklfSUZSX0JJVFdJU0VfQU5EIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfQklUV0lT RV9PUiIsDQo+IA0KPiArICAgICJFRklfSUZSX0JJVFdJU0VfTk9UIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfU0hJRlRfTEVGVCIsDQo+IA0KPiArICAgICJFRklfSUZSX1NISUZUX1JJR0hUIiwNCj4g DQo+ICsgICAgIkVGSV9JRlJfQUREIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfU1VCVFJBQ1QiLA0K PiANCj4gKyAgICAiRUZJX0lGUl9NVUxUSVBMWSIsDQo+IA0KPiArICAgICJFRklfSUZSX0RJVklE RSIsDQo+IA0KPiArICAgICJFRklfSUZSX01PRFVMTyIsDQo+IA0KPiArICAgICJFRklfSUZSX1JV TEVfUkVGIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUVVFU1RJT05fUkVGMSIsDQo+IA0KPiArICAg ICJFRklfSUZSX1FVRVNUSU9OX1JFRjIiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9VSU5UOCIsDQo+ IA0KPiArICAgICJFRklfSUZSX1VJTlQxNiIsDQo+IA0KPiArICAgICJFRklfSUZSX1VJTlQzMiIs DQo+IA0KPiArICAgICJFRklfSUZSX1VJTlQ2NCIsDQo+IA0KPiArICAgICJFRklfSUZSX1RSVUUi LA0KPiANCj4gKyAgICAiRUZJX0lGUl9GQUxTRSIsDQo+IA0KPiArICAgICJFRklfSUZSX1RPX1VJ TlQiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9UT19TVFJJTkciLA0KPiANCj4gKyAgICAiRUZJX0lG Ul9UT19CT09MRUFOIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTUlEIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfRklORCIsDQo+IA0KPiArICAgICJFRklfSUZSX1RPS0VOIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfU1RSSU5HX1JFRjEiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9TVFJJTkdfUkVGMiIsDQo+ IA0KPiArICAgICJFRklfSUZSX0NPTkRJVElPTkFMIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUVVF U1RJT05fUkVGMyIsDQo+IA0KPiArICAgICJFRklfSUZSX1pFUk8iLA0KPiANCj4gKyAgICAiRUZJ X0lGUl9PTkUiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9PTkVTIiwNCj4gDQo+ICsgICAgIkVGSV9J RlJfVU5ERUZJTkVEIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTEVOR1RIIiwNCj4gDQo+ICsgICAg IkVGSV9JRlJfRFVQIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVEhJUyIsDQo+IA0KPiArICAgICJF RklfSUZSX1NQQU4iLA0KPiANCj4gKyAgICAiRUZJX0lGUl9WQUxVRSIsDQo+IA0KPiArICAgICJF RklfSUZSX0RFRkFVTFQiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9ERUZBVUxUU1RPUkUiLA0KPiAN Cj4gKyAgICAiRUZJX0lGUl9GT1JNX01BUCIsDQo+IA0KPiArICAgICJFRklfSUZSX0NBVEVOQVRF IiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfR1VJRCIsDQo+IA0KPiArICAgICJFRklfSUZSX1NFQ1VS SVRZIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTU9EQUxfVEFHIiwNCj4gDQo+ICsgICAgIkVGSV9J RlJfUkVGUkVTSF9JRCIsDQo+IA0KPiArICAgICJFRklfSUZSX1dBUk5JTkdfSUYiLA0KPiANCj4g KyAgICAiRUZJX0lGUl9NQVRDSDIiLA0KPiANCj4gK10NCj4gDQo+ICsNCj4gDQo+ICtnU2NvcGVD b3VudCA9IDANCj4gDQo+ICtnSXNPcmRlcmVkTGlzdCA9IEZhbHNlDQo+IA0KPiArZ0lzU3RyaW5n T3AgPSBGYWxzZQ0KPiANCj4gK2dDdXJyZW50TWluTWF4RGF0YSA9IE5vbmUNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJMaW5lOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vPTApOg0KPiANCj4gKyAgICAgICAgc2VsZi5MaW5lTm8gPSBMaW5lTm8NCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIFNldExpbmVObyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAg ICAgc2VsZi5MaW5lTm8gPSBMaW5lTm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldExpbmVO byhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkxpbmVObw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIElmckJhc2VJbmZvOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgT2JqPU5vbmUsIFFOYW1lPU5vbmUsIFZhcklkU3RyPSIiKToNCj4gDQo+ICsgICAgICAg IHNlbGYuT2JqID0gT2JqDQo+IA0KPiArICAgICAgICBzZWxmLlFOYW1lID0gUU5hbWUNCj4gDQo+ ICsgICAgICAgIHNlbGYuVmFySWRTdHIgPSBWYXJJZFN0cg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgc2VsZi5GbGFnc1N0cmVhbSA9ICIiDQo+IA0KPiArICAgICAgICBzZWxmLkhhc0tleSA9IEZh bHNlDQo+IA0KPiArICAgICAgICBzZWxmLkhhc1F1ZXN0aW9uSWQgPSBGYWxzZQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgU2V0UU5hbWUoc2VsZiwgUU5hbWUpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5RTmFtZSA9IFFOYW1lDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRWYXJJZFN0cihzZWxm LCBWYXJJZFN0cik6DQo+IA0KPiArICAgICAgICBzZWxmLlZhcklkU3RyID0gVmFySWRTdHINCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzU3RyZWFtKHNlbGYsIEZsYWdzU3RyZWFtKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuRmxhZ3NTdHJlYW0gPSBGbGFnc1N0cmVhbQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgU2V0SGFzS2V5KHNlbGYsIEhhc0tleSk6DQo+IA0KPiArICAgICAgICBz ZWxmLkhhc0tleSA9IEhhc0tleQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0SGFzUXVlc3Rp b25JZChzZWxmLCBIYXNRdWVzdGlvbklkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuSGFzUXVlc3Rp b25JZCA9IEhhc1F1ZXN0aW9uSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5PYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBJZnJPcEhlYWRlcjoNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIE9w SGVhZGVyOiBFRklfSUZSX09QX0hFQURFUiwgT3BDb2RlPU5vbmUsDQo+IExlbmd0aD0wKToNCj4g DQo+ICsgICAgICAgIHNlbGYuT3BIZWFkZXIgPSBPcEhlYWRlcg0KPiANCj4gKyAgICAgICAgaWYg T3BDb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3BIZWFkZXIuT3BD b2RlID0gT3BDb2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcEhlYWRlci5M ZW5ndGggPSBnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlW09wQ29kZV0uU2l6ZSBpZg0KPiBMZW5ndGgg PT0gMCBlbHNlIExlbmd0aA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3BIZWFkZXIuU2NvcGUg PSAoDQo+IA0KPiArICAgICAgICAgICAgICAgIDEgaWYgKGdPcGNvZGVTaXplc1Njb3BlVGFibGVb T3BDb2RlXS5TY29wZSArIGdTY29wZUNvdW50ID4gMCkNCj4gZWxzZSAwDQo+IA0KPiArICAgICAg ICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0TGVuZ3RoKHNlbGYpOg0KPiANCj4g KyAgICAgICAgcmV0dXJuIHNlbGYuT3BIZWFkZXIuTGVuZ3RoDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRTY29wZShzZWxmLCBTY29wZSk6DQo+IA0KPiArICAgICAgICBzZWxmLk9wSGVhZGVy LlNjb3BlID0gU2NvcGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFVwZGF0ZUhlYWRlcihzZWxm LCBIZWFkZXIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5PcEhlYWRlciA9IEhlYWRlcg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgSW5jTGVuZ3RoKHNlbGYsIFNpemUpOg0KPiANCj4gKyAgICAgICAg c2VsZi5PcEhlYWRlci5MZW5ndGggKz0gU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRGVj TGVuZ3RoKHNlbGYsIFNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5PcEhlYWRlci5MZW5ndGgg LT0gU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgQWRqdXN0TGVuZ3RoKHNlbGYsIEJlZm9y ZVNpemUsIEFmdGVyU2l6ZSk6DQo+IA0KPiArICAgICAgICBzZWxmLk9wSGVhZGVyLkxlbmd0aCAt PSBCZWZvcmVTaXplDQo+IA0KPiArICAgICAgICBzZWxmLk9wSGVhZGVyLkxlbmd0aCArPSBBZnRl clNpemUNCj4gDQo+ICsgICAgICAgIHNlbGYuT3BIZWFkZXIuTGVuZ3RoICs9IDENCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldE9wQ29kZShzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLk9wSGVhZGVyLk9wQ29kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclN0 YXRlbWVudEhlYWRlcjoNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNIZWFkZXI6IEVG SV9JRlJfU1RBVEVNRU5UX0hFQURFUik6DQo+IA0KPiArICAgICAgICBzZWxmLnNIZWFkZXIgPSBz SGVhZGVyDQo+IA0KPiArICAgICAgICBzZWxmLnNIZWFkZXIuSGVscCA9IEVGSV9TVFJJTkdfSURf SU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi5zSGVhZGVyLlByb21wdCA9IEVGSV9TVFJJTkdf SURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0U3RhdGVtZW50SGVhZGVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuc0hlYWRlcg0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0UHJvbXB0KHNlbGYsIFByb21wdCk6DQo+IA0KPiArICAgICAgICBzZWxmLnNI ZWFkZXIuUHJvbXB0ID0gUHJvbXB0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRIZWxwKHNl bGYsIEhlbHApOg0KPiANCj4gKyAgICAgICAgc2VsZi5zSGVhZGVyLkhlbHAgPSBIZWxwDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyTWluTWF4U3RlcERhdGE6DQo+IA0KPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLCBNaW5NYXhTdGVwRGF0YSwgTnVtZXJpY09wY29kZT1GYWxzZSk6 DQo+IA0KPiArICAgICAgICBzZWxmLk1pbk1heFN0ZXBEYXRhID0gTWluTWF4U3RlcERhdGENCj4g DQo+ICsgICAgICAgIHNlbGYuTWluTWF4U3RlcERhdGEuTWluVmFsdWUgPSAwDQo+IA0KPiArICAg ICAgICBzZWxmLk1pbk1heFN0ZXBEYXRhLk1heFZhbHVlID0gMA0KPiANCj4gKyAgICAgICAgc2Vs Zi5NaW5NYXhTdGVwRGF0YS5TdGVwID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5WYWx1ZUlzU2V0 ID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIHNlbGYuSXNOdW1lcmljID0gTnVtZXJpY09wY29kZQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TWluTWF4U3RlcERhdGEoc2VsZiwgTWluVmFsdWUs IE1heFZhbHVlLCBTdGVwKToNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuVmFsdWVJc1NldCA9PSBG YWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1pbk1heFN0ZXBEYXRhLk1pblZhbHVlID0g TWluVmFsdWUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1pbk1heFN0ZXBEYXRhLk1heFZhbHVl ID0gTWF4VmFsdWUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1pbk1heFN0ZXBEYXRhLlN0ZXAg PSBTdGVwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYWx1ZUlzU2V0ID0gVHJ1 ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBNaW5WYWx1ZSA8 IHNlbGYuTWluTWF4U3RlcERhdGEuTWluVmFsdWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuTWluTWF4U3RlcERhdGEuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KPiANCj4gKyAgICAgICAgICAg IGlmIE1heFZhbHVlID4gc2VsZi5NaW5NYXhTdGVwRGF0YS5NYXhWYWx1ZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5NaW5NYXhTdGVwRGF0YS5NYXhWYWx1ZSA9IE1heFZhbHVlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5NaW5NYXhTdGVwRGF0YS5TdGVwID0gU3RlcA0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgSXNOdW1lcmljT3Bjb2RlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0 dXJuIHNlbGYuSXNOdW1lcmljDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBVcGRhdGVJZnJNaW5N YXhTdGVwRGF0YShzZWxmLCBNaW5NYXhTdGVwRGF0YSk6DQo+IA0KPiArICAgICAgICBzZWxmLk1p bk1heFN0ZXBEYXRhID0gTWluTWF4U3RlcERhdGENCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdl dE1pbkRhdGEoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5NaW5NYXhTdGVwRGF0 YS5NaW5WYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0TWF4RGF0YShzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLk1pbk1heFN0ZXBEYXRhLk1heFZhbHVlDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRTdGVwRGF0YShzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVy biBzZWxmLk1pbk1heFN0ZXBEYXRhLlN0ZXANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBJZnJGb3JtU2V0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIFNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5Gb3JtU2V0ID0gRUZJX0lGUl9G T1JNX1NFVCgpDQo+IA0KPiArICAgICAgICBzZWxmLkNsYXNzR3VpZCA9IFtdDQo+IA0KPiArICAg ICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkZvcm1TZXQuSGVhZGVyLCBFRklf SUZSX0ZPUk1fU0VUX09QLA0KPiBTaXplKQ0KPiANCj4gKyAgICAgICAgc2VsZi5Gb3JtU2V0Lkhl bHAgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuRm9ybVNldC5G b3JtU2V0VGl0bGUgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYu Rm9ybVNldC5GbGFncyA9IDANCj4gDQo+ICsgICAgICAgIHNlbGYuRm9ybVNldC5HdWlkID0gRUZJ X0dVSUQoMCwgMCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgc2VsZi5DbGFzc0d1aWROdW0gPSAwDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5Gb3JtU2V0 Lkd1aWQgPSBHdWlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRHdWlkKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYuRm9ybVNldC5HdWlkDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRGb3JtU2V0VGl0bGUoc2VsZiwgRm9ybVNldFRpdGxlKToNCj4gDQo+ICsgICAgICAg IHNlbGYuRm9ybVNldC5Gb3JtU2V0VGl0bGUgPSBGb3JtU2V0VGl0bGUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldEZvcm1TZXRUaXRsZShzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLkZvcm1TZXQuRm9ybVNldFRpdGxlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRIZWxw KHNlbGYsIEhlbHApOg0KPiANCj4gKyAgICAgICAgc2VsZi5Gb3JtU2V0LkhlbHAgPSBIZWxwDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWxwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0 dXJuIHNlbGYuRm9ybVNldC5IZWxwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRDbGFzc0d1 aWQoc2VsZiwgR3VpZCk6DQo+IA0KPiArICAgICAgICBzZWxmLkNsYXNzR3VpZC5hcHBlbmQoR3Vp ZCkNCj4gDQo+ICsgICAgICAgIHNlbGYuRm9ybVNldC5GbGFncyArPSAxDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRDbGFzc0d1aWQoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5DbGFzc0d1aWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYuRm9ybVNldC5GbGFncw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0Q2xhc3NHdWlkTnVtKHNlbGYsIE51bSk6DQo+IA0KPiArICAgICAgICBzZWxmLkNs YXNzR3VpZE51bSA9IE51bQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToN Cj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkZvcm1TZXQNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBJZnJPbmVPZk9wdGlvbihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBWYWx1ZVR5cGUsIFZhbHVlTGlzdCk6DQo+IA0KPiArICAg ICAgICBOdW1zID0gbGVuKFZhbHVlTGlzdCkNCj4gDQo+ICsgICAgICAgIHNlbGYuT25lT2ZPcHRp b24gPSBSZWZpbmVfRUZJX0lGUl9PTkVfT0ZfT1BUSU9OKFZhbHVlVHlwZSwgTnVtcykNCj4gDQo+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYs IHNlbGYuT25lT2ZPcHRpb24uSGVhZGVyLCBFRklfSUZSX09ORV9PRl9PUFRJT05fT1AsDQo+IHNp emVvZihzZWxmLk9uZU9mT3B0aW9uKQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg c2VsZi5PbmVPZk9wdGlvbi5GbGFncyA9IDANCj4gDQo+ICsgICAgICAgIHNlbGYuT25lT2ZPcHRp b24uT3B0aW9uID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLk9u ZU9mT3B0aW9uLlR5cGUgPSBFRklfSUZSX1RZUEVfT1RIRVINCj4gDQo+ICsgICAgICAgIHNlbGYu VmFsdWVUeXBlID0gVmFsdWVUeXBlDQo+IA0KPiArICAgICAgICBpZiBWYWx1ZUxpc3QgIT0gW106 DQo+IA0KPiArICAgICAgICAgICAgQXJyYXlUeXBlID0gVHlwZURpY3RbVmFsdWVUeXBlXSAqIE51 bXMNCj4gDQo+ICsgICAgICAgICAgICBWYWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gDQo+ICsg ICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLk9uZU9mT3B0aW9uLlZhbHVlID0gVmFsdWVBcnJheQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgc2VsZi5JZnJPcHRpb25LZXkgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkZs YWdzU3RyZWFtID0gIiINCj4gDQo+ICsgICAgICAgIHNlbGYuVmFsdWVTdHJlYW0gPSAiIg0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIE9wdGlvbik6DQo+IA0KPiArICAg ICAgICBzZWxmLk9uZU9mT3B0aW9uLk9wdGlvbiA9IE9wdGlvbg0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuT25lT2ZPcHRp b24uVHlwZSA9IFR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldElmck9wdGlvbktleShz ZWxmLCBJZnJPcHRpb25LZXkpOg0KPiANCj4gKyAgICAgICAgc2VsZi5JZnJPcHRpb25LZXkgPSBJ ZnJPcHRpb25LZXkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzU3RyZWFtKHNlbGYs IEZsYWdzU3RyZWFtKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRmxhZ3NTdHJlYW0gPSBGbGFnc1N0 cmVhbQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWVTdHJlYW0oc2VsZiwgVmFsdWVT dHJlYW0pOg0KPiANCj4gKyAgICAgICAgc2VsZi5WYWx1ZVN0cmVhbSA9IFZhbHVlU3RyZWFtDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRWYWx1ZVR5cGUoc2VsZik6DQo+IA0KPiArICAgICAg ICByZXR1cm4gc2VsZi5WYWx1ZVR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhbHVl KHNlbGYsIFZhbHVlTGlzdCk6DQo+IA0KPiArICAgICAgICBBcnJheVR5cGUgPSBUeXBlRGljdFtz ZWxmLlZhbHVlVHlwZV0gKiAobGVuKFZhbHVlTGlzdCkpDQo+IA0KPiArICAgICAgICBWYWx1ZUFy cmF5ID0gQXJyYXlUeXBlKCkNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihW YWx1ZUxpc3QpKToNCj4gDQo+ICsgICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0 W2ldDQo+IA0KPiArICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLlZhbHVlID0gVmFsdWVBcnJheQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi5PbmVPZk9wdGlvbi5GbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0 RmxhZ3Moc2VsZiwgTEZsYWdzKToNCj4gDQo+ICsgICAgICAgIHNlbGYuT25lT2ZPcHRpb24uRmxh Z3MgPSAwDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFS KExGbGFncywNCj4gRUZJX0lGUl9PUFRJT05fREVGQVVMVCkNCj4gDQo+ICsgICAgICAgIGlmIFJl dDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJf T1BUSU9OX0RFRkFVTFQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZM QUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRykN Cj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0 aW9uLkZsYWdzIHw9IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAg ICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfOCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9J RlJfVFlQRV9OVU1fU0laRV84DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIExGbGFncyA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0g X0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf MTYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9O VU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxh Z3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9u ZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiAN Cj4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT25lT2ZPcHRpb24uRmxhZ3Mg fD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlm IExGbGFncyA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoNCj4gDQo+ICsgICAgICAgICAgICBMRmxh Z3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9CT09MRUFOKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX0JPT0xFQU4N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9USU1F Og0KPiANCj4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lG Ul9UWVBFX1RJTUUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PbmVPZk9wdGlvbi5GbGFncyB8 PSBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBMRmxhZ3Mg PT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdf Q0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfREFURSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9EQVRFDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfU1RSSU5HOg0KPiANCj4gKyAgICAg ICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX1NUUklORykN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQ RV9TVFJJTkcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJf VFlQRV9PVEhFUjoNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxh Z3MsIEVGSV9JRlJfVFlQRV9PVEhFUikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0 aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9PVEhFUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg cmV0dXJuICgNCj4gDQo+ICsgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KPiANCj4gKyAgICAgICAgICAgIGlmIExGbGFncyA9PSAwDQo+IA0KPiArICAgICAgICAg ICAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gDQo+ ICsgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0K PiArICAgICAgICByZXR1cm4gc2VsZi5PbmVPZk9wdGlvbg0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIElmck9wdGlvbktleShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLCBRdWVzdGlvbklkLCBUeXBlLCBPcHRpb25WYWx1ZSwgS2V5VmFs dWUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5PcHRpb25LZXkgPSBSZWZpbmVfRUZJX0lGUl9HVUlE X09QVElPTktFWShUeXBlKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5PcHRpb25LZXkuSGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQo+IHNpemVvZihzZWxm Lk9wdGlvbktleSkpDQo+IA0KPiArICAgICAgICBzZWxmLk9wdGlvbktleS5FeHRlbmRPcENvZGUg PSBFRklfSUZSX0VYVEVORF9PUF9PUFRJT05LRVkNCj4gDQo+ICsgICAgICAgIHNlbGYuT3B0aW9u S2V5Lkd1aWQgPSBFRklfSUZSX0ZSQU1FV09SS19HVUlEDQo+IA0KPiArICAgICAgICBzZWxmLk9w dGlvbktleS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgc2VsZi5PcHRp b25LZXkuT3B0aW9uVmFsdWUgPSBPcHRpb25WYWx1ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5PcHRp b25LZXkuS2V5VmFsdWUgPSBLZXlWYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLk9wdGlvbktleQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIElmckNsYXNzKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g DQo+ICsgICAgZGVmIF9faW5pdF9fKA0KPiANCj4gKyAgICAgICAgc2VsZiwNCj4gDQo+ICsgICAg KToNCj4gDQo+ICsgICAgICAgIHNlbGYuQ2xhc3MgPSBFRklfSUZSX0dVSURfQ0xBU1MoKSAgIyBz dGF0aWMgZ3VpZA0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5DbGFzcy5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gc2l6ZW9mKEVGSV9JRlJfR1VJRF9D TEFTUykpDQo+IA0KPiArICAgICAgICBzZWxmLkNsYXNzLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJf RVhURU5EX09QX0NMQVNTDQo+IA0KPiArICAgICAgICBzZWxmLkNsYXNzLkd1aWQgPSBFRklfSUZS X1RJQU5PX0dVSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuQ2xhc3MuQ2xhc3MgPSBFRklfTk9OX0RF VklDRV9DTEFTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5IYXNTdWJDbGFzcyA9IEZh bHNlDQo+IA0KPiArICAgICAgICBzZWxmLkNsYXNzU3RyID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0Q2xhc3Moc2VsZiwgQ2xhc3MpOg0KPiANCj4gKyAgICAgICAgc2VsZi5DbGFz cy5DbGFzcyA9IENsYXNzDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRDbGFzc1N0cihzZWxm LCBDbGFzc1N0cik6DQo+IA0KPiArICAgICAgICBzZWxmLkNsYXNzU3RyID0gQ2xhc3NTdHINCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi5DbGFzcw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclN1YkNsYXNz KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKA0KPiANCj4g KyAgICAgICAgc2VsZiwNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuU3ViQ2xh c3MgPSBFRklfSUZSX0dVSURfU1VCQ0xBU1MoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIu X19pbml0X18oDQo+IA0KPiArICAgICAgICAgICAgc2VsZiwgc2VsZi5TdWJDbGFzcy5IZWFkZXIs IEVGSV9JRlJfR1VJRF9PUCwNCj4gc2l6ZW9mKEVGSV9JRlJfR1VJRF9TVUJDTEFTUykNCj4gDQo+ ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIHNlbGYuU3ViQ2xhc3MuRXh0ZW5kT3BDb2RlID0g RUZJX0lGUl9FWFRFTkRfT1BfU1VCQ0xBU1MNCj4gDQo+ICsgICAgICAgIHNlbGYuU3ViQ2xhc3Mu R3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJRA0KPiANCj4gKyAgICAgICAgc2VsZi5TdWJDbGFzcy5T dWJDbGFzcyA9IEVGSV9TRVRVUF9BUFBMSUNBVElPTl9TVUJDTEFTUw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgc2VsZi5TdWJDbGFzc1N0ciA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IFNldFN1YkNsYXNzKHNlbGYsIFN1YkNsYXNzKToNCj4gDQo+ICsgICAgICAgIHNlbGYuU3ViQ2xh c3MuU3ViQ2xhc3MgPSBTdWJDbGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0U3ViQ2xh c3NTdHIoc2VsZiwgU3ViQ2xhc3NTdHIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5TdWJDbGFzc1N0 ciA9IFN1YkNsYXNzU3RyDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuU3ViQ2xhc3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBJZnJEZWZhdWx0U3RvcmUoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlwZU5hbWU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBz ZWxmLkRlZmF1bHRTdG9yZSA9IEVGSV9JRlJfREVGQVVMVFNUT1JFKCkNCj4gDQo+ICsgICAgICAg IElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRGVmYXVsdFN0b3JlLkhlYWRlciwNCj4g RUZJX0lGUl9ERUZBVUxUU1RPUkVfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9y ZS5EZWZhdWx0TmFtZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2Vs Zi5EZWZhdWx0U3RvcmUuRGVmYXVsdElkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gDQo+ ICsgICAgICAgIHNlbGYuVHlwZSA9IFR5cGVOYW1lDQo+IA0KPiArICAgICAgICBzZWxmLkhhc0F0 dHIgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RGVmYXVsdE5hbWUoc2VsZiwg RGVmYXVsdE5hbWUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZhdWx0U3RvcmUuRGVmYXVsdE5h bWUgPSBEZWZhdWx0TmFtZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VHlwZShzZWxmLCBU eXBlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVHlwZSA9IFR5cGUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldERlZmF1bHRJZChzZWxmLCBEZWZhdWx0SWQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5EZWZhdWx0U3RvcmUuRGVmYXVsdElkID0gRGVmYXVsdElkDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXREZWZhdWx0U3RvcmUoc2VsZiwgRGVmYXVsdFN0b3JlOiBFRklfSUZSX0RFRkFVTFRT VE9SRSk6DQo+IA0KPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZSA9IERlZmF1bHRTdG9yZQ0K PiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5EZWZhdWx0U3Rv cmUuSGVhZGVyLA0KPiBFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldERlZmF1bHRJZChzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkRl ZmF1bHRTdG9yZS5EZWZhdWx0SWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5EZWZhdWx0U3RvcmUNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJWYXJTdG9yZShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUeXBlTmFtZSwgU3RvcmVOYW1lKToNCj4gDQo+ ICsgICAgICAgIE51bXMgPSBsZW4oU3RvcmVOYW1lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJz dG9yZSA9IFJlZmluZV9FRklfSUZSX1ZBUlNUT1JFKE51bXMpDQo+IA0KPiArICAgICAgICBJZnJP cEhlYWRlci5fX2luaXRfXygNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLCBzZWxmLlZhcnN0b3Jl LkhlYWRlciwgRUZJX0lGUl9WQVJTVE9SRV9PUCwgc2l6ZW9mKHNlbGYuVmFyc3RvcmUpDQo+ICsg MQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJzdG9yZS5WYXJTdG9y ZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyc3Rv cmUuU2l6ZSA9IDANCj4gDQo+ICsgICAgICAgIEFycmF5VHlwZSA9IGNfdWJ5dGUgKiAoTnVtcykN Cj4gDQo+ICsgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KPiANCj4gKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgTnVtcyk6DQo+IA0KPiArICAgICAgICAgICAgVmFsdWVBcnJheVtp XSA9IG9yZChTdG9yZU5hbWVbaV0pDQo+IA0KPiArICAgICAgICBzZWxmLlZhcnN0b3JlLk5hbWUg PSBWYWx1ZUFycmF5DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIGluZm8gc2F2ZWQgZm9yIHlh bWwgZ2VuZXJhdGlvbg0KPiANCj4gKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZU5hbWUNCj4gDQo+ ICsgICAgICAgIHNlbGYuSGFzVmFyU3RvcmVJZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJzdG9yZS5H dWlkID0gR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0U2l6ZShzZWxmLCBTaXplKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuVmFyc3RvcmUuU2l6ZSA9IFNpemUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIFNldFZhclN0b3JlSWQoc2VsZiwgVmFyU3RvcmVJZCk6DQo+IA0KPiArICAgICAg ICBzZWxmLlZhcnN0b3JlLlZhclN0b3JlSWQgPSBWYXJTdG9yZUlkDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXRIYXNWYXJTdG9yZUlkKHNlbGYsIEhhc1ZhclN0b3JlSWQpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5IYXNWYXJTdG9yZUlkID0gSGFzVmFyU3RvcmVJZA0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlZhcnN0 b3JlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyVmFyU3RvcmVFZmkoSWZyTGlu ZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlwZU5hbWUs IFN0b3JlTmFtZSk6DQo+IA0KPiArICAgICAgICBOdW1zID0gbGVuKFN0b3JlTmFtZSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuVmFyU3RvcmVFZmkgPSBSZWZpbmVfRUZJX0lGUl9WQVJTVE9SRV9FRkko TnVtcykNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYsIHNlbGYuVmFyU3RvcmVFZmkuSGVhZGVyLCBFRklfSUZSX1ZBUlNUT1JFX0VG SV9PUCwNCj4gc2l6ZW9mKHNlbGYuVmFyU3RvcmVFZmkpICsgMQ0KPiANCj4gKyAgICAgICAgKQ0K PiANCj4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUVmaS5WYXJTdG9yZUlkID0gRUZJX1ZBUk9GRlNF VF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlRWZpLlNpemUgPSAwDQo+IA0K PiArICAgICAgICBBcnJheVR5cGUgPSBjX3VieXRlICogKE51bXMpDQo+IA0KPiArICAgICAgICBW YWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAs IE51bXMpOg0KPiANCj4gKyAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBvcmQoU3RvcmVOYW1l W2ldKQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUVmaS5OYW1lID0gVmFsdWVBcnJheQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgIyBpbmZvIHNhdmVkIGZvciB5YW1sIGdlbmVyYXRpb24N Cj4gDQo+ICsgICAgICAgIHNlbGYuVHlwZSA9IFR5cGVOYW1lDQo+IA0KPiArICAgICAgICBzZWxm Lkhhc1ZhclN0b3JlSWQgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi5BdHRyaWJ1dGVzVGV4 dCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuTmFtZVN0cmluZ0lkID0gTm9uZQ0KPiANCj4g KyAgICAgICAgc2VsZi5WYXJTaXplID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0 R3VpZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVFZmkuR3VpZCA9 IEd1aWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFNpemUoc2VsZiwgU2l6ZSk6DQo+IA0K PiArICAgICAgICBzZWxmLlZhclN0b3JlRWZpLlNpemUgPSBTaXplDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXROYW1lU3RyaW5nSWQoc2VsZiwgTmFtZVN0cmluZ0lkKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuTmFtZVN0cmluZ0lkID0gTmFtZVN0cmluZ0lkDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRWYXJTaXplKHNlbGYsIFZhclNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJT aXplID0gVmFyU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFyU3RvcmVJZChzZWxm LCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVFZmkuVmFyU3RvcmVJ ZCA9IFZhclN0b3JlSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEF0dHJpYnV0ZXMoc2Vs ZiwgQXR0cmlidXRlcyk6DQo+IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlRWZpLkF0dHJpYnV0 ZXMgPSBBdHRyaWJ1dGVzDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRIYXNWYXJTdG9yZUlk KHNlbGYsIEhhc1ZhclN0b3JlSWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5IYXNWYXJTdG9yZUlk ID0gSGFzVmFyU3RvcmVJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0QXR0cmlidXRlc1Rl eHQoc2VsZiwgQXR0cmlidXRlc1RleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5BdHRyaWJ1dGVz VGV4dCA9IEF0dHJpYnV0ZXNUZXh0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVmFyU3RvcmVFZmkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJWYXJTdG9yZU5hbWVWYWx1ZShJZnJMaW5lLCBJZnJPcEhl YWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUeXBlTmFtZSk6DQo+IA0KPiAr ICAgICAgICBzZWxmLlZhclN0b3JlTmFtZVZhbHVlID0gRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZB TFVFKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVmFy U3RvcmVOYW1lVmFsdWUuSGVhZGVyLA0KPiBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1Ap DQo+IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlTmFtZVZhbHVlLlZhclN0b3JlSWQgPSBFRklf VkFST0ZGU0VUX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuVHlwZSA9IFR5 cGVOYW1lDQo+IA0KPiArICAgICAgICBzZWxmLk5hbWVJdGVtTGlzdCA9IFtdDQo+IA0KPiArICAg ICAgICBzZWxmLkhhc1ZhclN0b3JlSWQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg U2V0R3VpZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVOYW1lVmFs dWUuR3VpZCA9IEd1aWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhclN0b3JlSWQoc2Vs ZiwgVmFyU3RvcmVJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlTmFtZVZhbHVlLlZh clN0b3JlSWQgPSBWYXJTdG9yZUlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXROYW1lSXRl bUxpc3Qoc2VsZiwgTmFtZUl0ZW0pOg0KPiANCj4gKyAgICAgICAgc2VsZi5OYW1lSXRlbUxpc3Qu YXBwZW5kKE5hbWVJdGVtKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0SGFzVmFyU3RvcmVJ ZChzZWxmLCBIYXNWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuSGFzVmFyU3RvcmVJ ZCA9IEhhc1ZhclN0b3JlSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5WYXJTdG9yZU5hbWVWYWx1ZQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK0VGSV9CSVRTX1BFUl9VSU5UMzIgPSAxIDw8IEVGSV9CSVRTX1NISUZU X1BFUl9VSU5UMzINCj4gDQo+ICtFRklfRk9STV9JRF9NQVggPSAweEZGRkYNCj4gDQo+ICsNCj4g DQo+ICtFRklfRlJFRV9GT1JNX0lEX0JJVE1BUF9TSVpFID0gaW50KChFRklfRk9STV9JRF9NQVgg KyAxKSAvDQo+IEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgSWZyRm9ybUlkOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiAr ICAgICAgICBzZWxmLkZvcm1JZEJpdE1hcCA9IFtdDQo+IA0KPiArICAgICAgICBmb3IgXyBpbiBy YW5nZSgwLCBFRklfRlJFRV9GT1JNX0lEX0JJVE1BUF9TSVpFKToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkZvcm1JZEJpdE1hcC5hcHBlbmQoMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIENs ZWFyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5Gb3JtSWRCaXRNYXAgPSBbXQ0KPiANCj4g KyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfRk9STV9JRF9CSVRNQVBfU0laRSk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Gb3JtSWRCaXRNYXAuYXBwZW5kKDApDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBDaGVja0Zvcm1JZEZyZWUoc2VsZiwgRm9ybUlkKToNCj4gDQo+ICsg ICAgICAgIEluZGV4ID0gaW50KEZvcm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiAr ICAgICAgICBPZmZzZXQgPSBGb3JtSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICByZXR1cm4gKHNlbGYuRm9ybUlkQml0TWFwW0luZGV4XSAmICgweDgwMDAw MDAwID4+IE9mZnNldCkpID09IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIE1hcmtGb3JtSWRV c2VkKHNlbGYsIEZvcm1JZCk6DQo+IA0KPiArICAgICAgICBJbmRleCA9IGludChGb3JtSWQgLyBF RklfQklUU19QRVJfVUlOVDMyKQ0KPiANCj4gKyAgICAgICAgT2Zmc2V0ID0gRm9ybUlkICUgRUZJ X0JJVFNfUEVSX1VJTlQzMg0KPiANCj4gKyAgICAgICAgc2VsZi5Gb3JtSWRCaXRNYXBbSW5kZXhd IHw9IDB4ODAwMDAwMDAgPj4gT2Zmc2V0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZ0lmckZv cm1JZCA9IElmckZvcm1JZCgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyRm9y bShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuRm9ybSA9IEVGSV9JRlJfRk9STSgpDQo+IA0KPiArICAgICAg ICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkZvcm0uSGVhZGVyLCBFRklfSUZSX0ZP Uk1fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLkZvcm0uRm9ybUlkID0gMA0KPiANCj4gKyAgICAg ICAgc2VsZi5Gb3JtLkZvcm1UaXRsZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgU2V0Rm9ybUlkKHNlbGYsIEZvcm1JZCk6DQo+IA0KPiArICAgICAgICAj IEZvcm1JZCBjYW4ndCBiZSAwLg0KPiANCj4gKyAgICAgICAgaWYgRm9ybUlkID09IDA6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUg0KPiANCj4gKyAgICAgICAgaWYgZ0lmckZvcm1JZC5DaGVja0Zvcm1JZEZyZWUoRm9y bUlkKSA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0ZPUk1JRF9SRURFRklORUQNCj4gDQo+ICsgICAgICAgIHNlbGYuRm9ybS5Gb3Jt SWQgPSBGb3JtSWQNCj4gDQo+ICsgICAgICAgIGdJZnJGb3JtSWQuTWFya0Zvcm1JZFVzZWQoRm9y bUlkKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtVGl0bGUoc2VsZiwgRm9ybVRpdGxl KToNCj4gDQo+ICsgICAgICAgIHNlbGYuRm9ybS5Gb3JtVGl0bGUgPSBGb3JtVGl0bGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4g c2VsZi5Gb3JtDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyRm9ybU1hcChJZnJM aW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuRm9ybU1hcCA9IEVGSV9JRlJfRk9STV9NQVAoKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5NZXRob2RNYXBMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuRm9ybU1hcC5IZWFkZXIsDQo+IEVGSV9JRlJfRk9STV9NQVBfT1Ap DQo+IA0KPiArICAgICAgICBzZWxmLkZvcm1NYXAuRm9ybUlkID0gMA0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0Rm9ybUlkKHNlbGYsIEZvcm1JZCk6DQo+IA0KPiArICAgICAgICBpZiBGb3Jt SWQgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBnSWZyRm9y bUlkLkNoZWNrRm9ybUlkRnJlZShGb3JtSWQpID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRA0KPiANCj4g KyAgICAgICAgc2VsZi5Gb3JtTWFwLkZvcm1JZCA9IEZvcm1JZA0KPiANCj4gKyAgICAgICAgZ0lm ckZvcm1JZC5NYXJrRm9ybUlkVXNlZChGb3JtSWQpDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNl dEZvcm1NYXBNZXRob2Qoc2VsZiwgTWV0aG9kVGl0bGUsIE1ldGhvZEd1aWQ6IEVGSV9HVUlEKToN Cj4gDQo+ICsgICAgICAgIE1ldGhvZE1hcCA9IEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKCkNCj4g DQo+ICsgICAgICAgIE1ldGhvZE1hcC5NZXRob2RUaXRsZSA9IE1ldGhvZFRpdGxlDQo+IA0KPiAr ICAgICAgICBNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllciA9IE1ldGhvZEd1aWQNCj4gDQo+ICsg ICAgICAgIHNlbGYuTWV0aG9kTWFwTGlzdC5hcHBlbmQoTWV0aG9kTWFwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkZv cm1NYXANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldE1ldGhvZE1hcExpc3Qoc2VsZik6DQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5NZXRob2RNYXBMaXN0DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgSWZyRW5kKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5FbmQgPSBFRklfSUZSX0VO RCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkVuZC5I ZWFkZXIsIEVGSV9JRlJfRU5EX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhz ZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkVuZA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIElmckJhbm5lcihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAg IGRlZiBfX2luaXRfXygNCj4gDQo+ICsgICAgICAgIHNlbGYsDQo+IA0KPiArICAgICk6DQo+IA0K PiArICAgICAgICBzZWxmLkJhbm5lciA9IEVGSV9JRlJfR1VJRF9CQU5ORVIoKQ0KPiANCj4gKyAg ICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5CYW5uZXIuSGVhZGVyLCBFRklf SUZSX0dVSURfT1AsDQo+IHNpemVvZihFRklfSUZSX0dVSURfQkFOTkVSKSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuQmFubmVyLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX0JBTk5FUg0K PiANCj4gKyAgICAgICAgc2VsZi5CYW5uZXIuR3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJRA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5IYXNUaW1lT3V0ID0gRmFsc2UNCj4gDQo+ICsgICAg ICAgIHNlbGYuVGltZU91dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFRpdGxl KHNlbGYsIFN0cmluZ0lkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuQmFubmVyLlRpdGxlID0gU3Ry aW5nSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldExpbmUoc2VsZiwgTGluZSk6DQo+IA0K PiArICAgICAgICBzZWxmLkJhbm5lci5MaW5lTnVtYmVyID0gTGluZQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0QWxpZ24oc2VsZiwgQWxpZ24pOg0KPiANCj4gKyAgICAgICAgc2VsZi5CYW5u ZXIuQWxpZ25tZW50ID0gQWxpZ24NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEhhc1RpbWVP dXQoc2VsZiwgSGFzVGltZU91dCk6DQo+IA0KPiArICAgICAgICBzZWxmLkhhc1RpbWVPdXQgPSBI YXNUaW1lT3V0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRUaW1lT3V0KHNlbGYsIFRpbWVP dXQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5UaW1lT3V0ID0gVGltZU91dA0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkJh bm5lcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclZhckVxTmFtZShJZnJMaW5l LCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRdWVzdGlvbklk LCBOYW1lSWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJFcU5hbWUgPSBFRklfSUZSX0dVSURf VkFSRVFOQU1FKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYsIHNlbGYuVmFyRXFOYW1lLkhlYWRlciwgRUZJX0lGUl9HVUlEX09Q LA0KPiBzaXplb2YoRUZJX0lGUl9HVUlEX1ZBUkVRTkFNRSkNCj4gDQo+ICsgICAgICAgICkNCj4g DQo+ICsgICAgICAgIHNlbGYuVmFyRXFOYW1lLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5E X09QX1ZBUkVRTkFNRQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJFcU5hbWUuR3VpZCA9IEVGSV9J RlJfRlJBTUVXT1JLX0dVSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyRXFOYW1lLlF1ZXN0aW9u SWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBzZWxmLlZhckVxTmFtZS5OYW1lSWQgPSBO YW1lSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZi5WYXJFcU5hbWUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBJZnJUaW1lb3V0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIFRpbWVvdXQ9MCk6DQo+IA0KPiArICAgICAgICBzZWxmLlRpbWVvdXQgPSBFRklf SUZSX0dVSURfVElNRU9VVCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLCBzZWxmLlRpbWVvdXQuSGVhZGVyLCBFRklfSUZSX0dV SURfT1AsDQo+IHNpemVvZihFRklfSUZSX0dVSURfVElNRU9VVCkNCj4gDQo+ICsgICAgICAgICkN Cj4gDQo+ICsgICAgICAgIHNlbGYuVGltZW91dC5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVO RF9PUF9USU1FT1VUDQo+IA0KPiArICAgICAgICBzZWxmLlRpbWVvdXQuR3VpZCA9IEVGSV9JRlJf VElBTk9fR1VJRA0KPiANCj4gKyAgICAgICAgc2VsZi5UaW1lb3V0LlRpbWVPdXQgPSBUaW1lb3V0 DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRUaW1lb3V0KHNlbGYsIFRpbWVvdXQpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi5UaW1lb3V0LlRpbWVPdXQgPSBUaW1lb3V0DQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVGlt ZW91dA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmckxhYmVsKElmckxpbmUsIElm ck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKA0KPiANCj4gKyAgICAgICAgc2Vs ZiwNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuTGFiZWwgPSBFRklfSUZSX0dV SURfTEFCRUwoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5MYWJlbC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gc2l6ZW9mKEVGSV9JRlJfR1VJRF9M QUJFTCkpDQo+IA0KPiArICAgICAgICBzZWxmLkxhYmVsLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJf RVhURU5EX09QX0xBQkVMDQo+IA0KPiArICAgICAgICBzZWxmLkxhYmVsLkd1aWQgPSBFRklfSUZS X1RJQU5PX0dVSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldE51bWJlcihzZWxmLCBOdW1i ZXIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5MYWJlbC5OdW1iZXIgPSBOdW1iZXINCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5MYWJlbA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclJ1bGUoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUnVsZU5hbWU9Tm9u ZSk6DQo+IA0KPiArICAgICAgICBzZWxmLlJ1bGUgPSBFRklfSUZSX1JVTEUoKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5SdWxlTmFtZSA9IFJ1bGVOYW1lDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLlJ1bGUuSGVhZGVyLCBFRklfSUZSX1JVTEVfT1ApDQo+IA0K PiArICAgICAgICBzZWxmLlJ1bGUuUnVsZUlkID0gRUZJX1JVTEVfSURfSU5WQUxJRA0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgU2V0UnVsZUlkKHNlbGYsIFJ1bGVJZCk6DQo+IA0KPiArICAgICAg ICBzZWxmLlJ1bGUuUnVsZUlkID0gUnVsZUlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRS dWxlTmFtZShzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlJ1bGVOYW1lDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXRSdWxlTmFtZShzZWxmLCBSdWxlTmFtZSk6DQo+IA0KPiAr ICAgICAgICBzZWxmLlJ1bGVOYW1lID0gUnVsZU5hbWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5SdWxlDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArZGVmIF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLCBNYXNrKToN Cj4gDQo+ICsgICAgUmV0ID0gRmxhZ3MgJiBNYXNrDQo+IA0KPiArICAgIEZsYWdzICY9IH5NYXNr DQo+IA0KPiArICAgIHJldHVybiBGbGFncywgUmV0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ZGVmIF9GTEFHX0NMRUFSKEZsYWdzLCBNYXNrKToNCj4gDQo+ICsgICAgRmxhZ3MgJj0gfk1hc2sN Cj4gDQo+ICsgICAgcmV0dXJuIEZsYWdzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg SWZyU3VidGl0bGUoSWZyTGluZSwgSWZyT3BIZWFkZXIsIElmclN0YXRlbWVudEhlYWRlcik6DQo+ IA0KPiArICAgIGRlZiBfX2luaXRfXygNCj4gDQo+ICsgICAgICAgIHNlbGYsDQo+IA0KPiArICAg ICk6DQo+IA0KPiArICAgICAgICBzZWxmLlN1YnRpdGxlID0gRUZJX0lGUl9TVUJUSVRMRSgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlN1 YnRpdGxlLkhlYWRlciwgRUZJX0lGUl9TVUJUSVRMRV9PUCkNCj4gDQo+ICsgICAgICAgIElmclN0 YXRlbWVudEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlN1YnRpdGxlLlN0YXRlbWVudCkNCj4g DQo+ICsgICAgICAgIHNlbGYuU3VidGl0bGUuRmxhZ3MgPSAwDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBzZWxmLkZsYWdzU3RyZWFtID0gIiINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZs YWdzKHNlbGYsIEZsYWdzKToNCj4gDQo+ICsgICAgICAgIEZsYWdzLCBSZXN1bHQgPSBfRkxBR19U RVNUX0FORF9DTEVBUihGbGFncywNCj4gRUZJX0lGUl9GTEFHU19IT1JJWk9OVEFMKQ0KPiANCj4g KyAgICAgICAgaWYgUmVzdWx0Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU3VidGl0bGUuRmxh Z3MgfD0gRUZJX0lGUl9GTEFHU19IT1JJWk9OVEFMDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBy ZXR1cm4gKA0KPiANCj4gKyAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+IA0KPiArICAgICAgICAgICAgaWYgRmxhZ3MgPT0gMA0KPiANCj4gKyAgICAgICAgICAg IGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiAr ICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGbGFnc1N0cmVhbShzZWxmLCBG bGFnc1N0cmVhbSk6DQo+IA0KPiArICAgICAgICBzZWxmLkZsYWdzU3RyZWFtID0gRmxhZ3NTdHJl YW0NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAg ICByZXR1cm4gc2VsZi5TdWJ0aXRsZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElm ckltYWdlKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKA0K PiANCj4gKyAgICAgICAgc2VsZiwNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYu SW1hZ2UgPSBFRklfSUZSX0lNQUdFKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuSW1hZ2UuSGVhZGVyLCBFRklfSUZSX0lNQUdFX09QKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5JbWFnZS5JZCA9IEVGSV9JTUFHRV9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBTZXRJbWFnZUlkKHNlbGYsIEltYWdlSWQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5JbWFnZS5JZCA9IEltYWdlSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5JbWFnZQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIElmckxvY2tlZChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAg IGRlZiBfX2luaXRfXygNCj4gDQo+ICsgICAgICAgIHNlbGYsDQo+IA0KPiArICAgICk6DQo+IA0K PiArICAgICAgICBzZWxmLkxvY2sgPSBFRklfSUZSX0xPQ0tFRCgpDQo+IA0KPiArICAgICAgICBJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkxvY2suSGVhZGVyLCBFRklfSUZSX0xPQ0tF RF9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZi5Mb2NrDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZy TW9kYWwoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oDQo+ IA0KPiArICAgICAgICBzZWxmLA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAgICAgc2VsZi5N b2RhbCA9IEVGSV9JRlJfTU9EQUxfVEFHKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuTW9kYWwuSGVhZGVyLCBFRklfSUZSX01PREFMX1RBR19PUCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi5Nb2RhbA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfUVVFU1RJT05f RkxBR19ERUZBVUxUID0gMA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclF1ZXN0 aW9uSGVhZGVyKElmclN0YXRlbWVudEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBRSGVhZGVyLCBGbGFncz1FRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCk6DQo+IA0K PiArICAgICAgICBzZWxmLlFIZWFkZXIgPSBRSGVhZGVyDQo+IA0KPiArICAgICAgICBJZnJTdGF0 ZW1lbnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5RSGVhZGVyLkhlYWRlcikNCj4gDQo+ICsg ICAgICAgIHNlbGYuUUhlYWRlci5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQN Cj4gDQo+ICsgICAgICAgIHNlbGYuUUhlYWRlci5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lE X0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuUUhlYWRlci5WYXJTdG9yZUluZm8uVmFyTmFt ZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi5RSGVhZGVyLlZh clN0b3JlSW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4gDQo+ICsgICAg ICAgIHNlbGYuUUhlYWRlci5GbGFncyA9IEZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRRdWVzdGlvbklkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUUhlYWRlci5R dWVzdGlvbklkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1 ZXN0aW9uSWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5RSGVhZGVyLlF1ZXN0aW9uSWQgPSBRdWVz dGlvbklkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRWYXJTdG9yZUlkKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUUhlYWRlci5WYXJTdG9yZUlkDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBTZXRWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm8pOg0KPiANCj4gKyAgICAg ICAgc2VsZi5RSGVhZGVyLlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQo+IA0KPiAr ICAgICAgICBzZWxmLlFIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBCYXNlSW5mby5JbmZv LlZhck5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuUUhlYWRlci5WYXJTdG9yZUluZm8uVmFyT2Zm c2V0ID0gQmFzZUluZm8uSW5mby5WYXJPZmZzZXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdl dFZhclN0b3JlSW5mbyhzZWxmLCBJbmZvKToNCj4gDQo+ICsgICAgICAgIEluZm8uVmFyU3RvcmVJ ZCA9IHNlbGYuUUhlYWRlci5WYXJTdG9yZUlkDQo+IA0KPiArICAgICAgICBJbmZvLlZhclN0b3Jl SW5mbyA9IHNlbGYuUUhlYWRlci5WYXJTdG9yZUluZm8NCj4gDQo+ICsgICAgICAgIHJldHVybiBJ bmZvDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRRRmxhZ3Moc2VsZik6DQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZi5RSGVhZGVyLkZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRGbGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdf VEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19SRUFEX09OTFkpDQo+IA0KPiArICAg ICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5RSGVhZGVyLkZsYWdzIHw9IEVG SV9JRlJfRkxBR19SRUFEX09OTFkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEZsYWdzID0gX0ZM QUdfQ0xFQVIoRmxhZ3MsIDB4MDIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBGbGFncywgUmV0 ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19DQUxMQkFDSykNCj4g DQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFIZWFkZXIuRmxh Z3MgfD0gRUZJX0lGUl9GTEFHX0NBTExCQUNLDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIGln bm9yZSBOVkFjY2Vzc0ZsYWcNCj4gDQo+ICsgICAgICAgIEZsYWdzID0gX0ZMQUdfQ0xFQVIoRmxh Z3MsIDB4MDgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVT VF9BTkRfQ0xFQVIoRmxhZ3MsDQo+IEVGSV9JRlJfRkxBR19SRVNFVF9SRVFVSVJFRCkNCj4gDQo+ ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFIZWFkZXIuRmxhZ3Mg fD0gRUZJX0lGUl9GTEFHX1JFU0VUX1JFUVVJUkVEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBG bGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsDQo+IEVGSV9JRlJfRkxBR19S RUNPTk5FQ1RfUkVRVUlSRUQpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5RSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRUNPTk5FQ1RfUkVRVUlS RUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgU2V0IExhdGVDaGVjayBGbGFnIHRvIGNvbXBh dGlibGUgZm9yIGZyYW1ld29yayBmbGFnDQo+IA0KPiArICAgICAgICAjIGJ1dCBpdCB1c2VzIDB4 MjAgYXMgaXRzIGZsYWcsIGlmIGluIHRoZSBmdXR1cmUgVUVGSSBtYXkgdGFrZSB0aGlzIGZsYWcN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVB UihGbGFncywgMHgyMCkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLlFIZWFkZXIuRmxhZ3MgfD0gMHgyMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgRmxh Z3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLA0KPiBFRklfSUZSX0ZMQUdfT1BU SU9OU19PTkxZKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuUUhlYWRlci5GbGFncyB8PSBFRklfSUZSX0ZMQUdfT1BUSU9OU19PTkxZDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICByZXR1cm4gKA0KPiANCj4gKyAgICAgICAgICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAgaWYgRmxhZ3MgPT0gMA0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQ UE9SVEVEDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBVcGRhdGVJ ZnJRdWVzdGlvbkhlYWRlcihzZWxmLCBxSGVhZGVyKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUUhl YWRlciA9IHFIZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJSZWYoSWZy TGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+IA0K PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+IA0K PiArICAgICAgICBzZWxmLlJlZiA9IEVGSV9JRlJfUkVGKCkNCj4gDQo+ICsgICAgICAgIElmckJh c2VJbmZvLl9faW5pdF9fKHNlbGYsIHNlbGYuUmVmLCBRTmFtZSwgVmFySWRTdHIpDQo+IA0KPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlJlZi5IZWFkZXIsIEVGSV9J RlJfUkVGX09QKQ0KPiANCj4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5SZWYuUXVlc3Rpb24pDQo+IA0KPiArICAgICAgICBzZWxmLlJlZi5Gb3JtSWQgPSAw DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuUmVmLkZvcm1JZCA9IEZvcm1JZA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIElmclJlZjIoSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJR dWVzdGlvbkhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25l LCBWYXJJZFN0cj0iIik6DQo+IA0KPiArICAgICAgICBzZWxmLlJlZjIgPSBFRklfSUZSX1JFRjIo KQ0KPiANCj4gKyAgICAgICAgSWZyQmFzZUluZm8uX19pbml0X18oc2VsZiwgc2VsZi5SZWYyLCBR TmFtZSwgVmFySWRTdHIpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLlJlZjIuSGVhZGVyLCBFRklfSUZSX1JFRl9PUCwNCj4gc2l6ZW9mKEVGSV9JRlJfUkVG MikpDQo+IA0KPiArICAgICAgICBJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LlJlZjIuUXVlc3Rpb24pDQo+IA0KPiArICAgICAgICBzZWxmLlJlZjIuRm9ybUlkID0gMA0KPiAN Cj4gKyAgICAgICAgc2VsZi5SZWYyLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJ RA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0Rm9ybUlkKHNlbGYsIEZvcm1JZCk6DQo+IA0K PiArICAgICAgICBzZWxmLlJlZjIuRm9ybUlkID0gRm9ybUlkDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRRSWQoc2VsZiwgUXVlc3Rpb25JZCk6DQo+IA0KPiArICAgICAgICBzZWxmLlJlZjIu UXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJ ZnJSZWYzKElmckxpbmUsIElmckJhc2VJbmZvLCBJZnJPcEhlYWRlciwgSWZyUXVlc3Rpb25IZWFk ZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUU5hbWU9Tm9uZSwgVmFySWRTdHI9 IiIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5SZWYzID0gRUZJX0lGUl9SRUYzKCkNCj4gDQo+ICsg ICAgICAgIElmckJhc2VJbmZvLl9faW5pdF9fKHNlbGYsIHNlbGYuUmVmMywgUU5hbWUsIFZhcklk U3RyKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWYz LkhlYWRlciwgRUZJX0lGUl9SRUZfT1AsDQo+IHNpemVvZihFRklfSUZSX1JFRjMpKQ0KPiANCj4g KyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWYzLlF1ZXN0 aW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5SZWYzLkZvcm1JZCA9IDANCj4gDQo+ICsgICAgICAg IHNlbGYuUmVmMy5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsg ICAgICAgIEVGSV9JRlJfREVGQVVMVF9HVUlEID0gRUZJX0dVSUQoMCwgMCwgMCwgR3VpZEFycmF5 KDAsIDAsIDAsIDAsIDAsIDAsIDAsDQo+IDApKQ0KPiANCj4gKyAgICAgICAgc2VsZi5SZWYzLkZv cm1TZXRJZCA9IEVGSV9JRlJfREVGQVVMVF9HVUlEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUmVmMy5Gb3JtSWQg PSBGb3JtSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFFJZChzZWxmLCBRdWVzdGlvbklk KToNCj4gDQo+ICsgICAgICAgIHNlbGYuUmVmMy5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgU2V0Rm9ybVNldElkKHNlbGYsIEZvcm1TZXRJZCk6DQo+IA0K PiArICAgICAgICBzZWxmLlJlZjMuRm9ybVNldElkID0gRm9ybVNldElkDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArY2xhc3MgSWZyUmVmNChJZnJMaW5lLCBJZnJCYXNlSW5mbywgSWZyT3BIZWFk ZXIsIElmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFFO YW1lPU5vbmUsIFZhcklkU3RyPSIiKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUmVmNCA9IEVGSV9J RlJfUkVGNCgpDQo+IA0KPiArICAgICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxm LlJlZjQsIFFOYW1lLCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuUmVmNC5IZWFkZXIsIEVGSV9JRlJfUkVGX09QLA0KPiBzaXplb2YoRUZJ X0lGUl9SRUY0KSkNCj4gDQo+ICsgICAgICAgIElmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuUmVmNC5RdWVzdGlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuUmVmNC5Gb3JtSWQg PSAwDQo+IA0KPiArICAgICAgICBzZWxmLlJlZjQuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQo+IA0KPiArICAgICAgICBFRklfSUZSX0RFRkFVTFRfR1VJRCA9IEVGSV9HVUlE KDAsIDAsIDAsIEd1aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLA0KPiAwKSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuUmVmNC5Gb3JtU2V0SWQgPSBFRklfSUZSX0RFRkFVTFRfR1VJRA0KPiANCj4g KyAgICAgICAgc2VsZi5SZWY0LkRldmljZVBhdGggPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5SZWY0LkZvcm1JZCA9IEZvcm1JZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg U2V0UUlkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5SZWY0LlF1ZXN0 aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtU2V0SWQo c2VsZiwgRm9ybVNldElkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUmVmNC5Gb3JtU2V0SWQgPSBG b3JtU2V0SWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldERldmljZVBhdGgoc2VsZiwgRGV2 aWNlUGF0aCk6DQo+IA0KPiArICAgICAgICBzZWxmLlJlZjQuRGV2aWNlUGF0aCA9IERldmljZVBh dGgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJSZWY1KElmckxpbmUsIElmckJh c2VJbmZvLCBJZnJPcEhlYWRlciwgSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgUU5hbWU9Tm9uZSwgVmFySWRTdHI9IiIpOg0KPiANCj4gKyAgICAgICAg c2VsZi5SZWY1ID0gRUZJX0lGUl9SRUY1KCkNCj4gDQo+ICsgICAgICAgIElmckJhc2VJbmZvLl9f aW5pdF9fKHNlbGYsIHNlbGYuUmVmNSwgUU5hbWUsIFZhcklkU3RyKQ0KPiANCj4gKyAgICAgICAg SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWY1LkhlYWRlciwgRUZJX0lGUl9SRUZf T1AsDQo+IHNpemVvZihFRklfSUZSX1JFRjUpKQ0KPiANCj4gKyAgICAgICAgSWZyUXVlc3Rpb25I ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWY1LlF1ZXN0aW9uKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIElmckFjdGlvbihJZnJMaW5lLCBJZnJCYXNlSW5mbywgSWZyT3BIZWFk ZXIsIElmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFFO YW1lPU5vbmUsIFZhcklkU3RyPSIiKToNCj4gDQo+ICsgICAgICAgIHNlbGYuQWN0aW9uID0gRUZJ X0lGUl9BQ1RJT04oKQ0KPiANCj4gKyAgICAgICAgSWZyQmFzZUluZm8uX19pbml0X18oc2VsZiwg c2VsZi5BY3Rpb24sIFFOYW1lLCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuQWN0aW9uLkhlYWRlciwgRUZJX0lGUl9BQ1RJT05fT1ApDQo+ IA0KPiArICAgICAgICBJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkFjdGlv bi5RdWVzdGlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuQWN0aW9uLlF1ZXN0aW9uQ29uZmlnID0g RUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRdWVzdGlv bkNvbmZpZyhzZWxmLCBRdWVzdGlvbkNvbmZpZyk6DQo+IA0KPiArICAgICAgICBzZWxmLkFjdGlv bi5RdWVzdGlvbkNvbmZpZyA9IFF1ZXN0aW9uQ29uZmlnDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgSWZyVGV4dChJZnJMaW5lLCBJZnJPcEhlYWRlciwgSWZyU3RhdGVtZW50SGVhZGVy KToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKA0KPiANCj4gKyAgICAgICAgc2VsZiwNCj4gDQo+ ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVGV4dCA9IEVGSV9JRlJfVEVYVCgpDQo+IA0K PiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRleHQuSGVhZGVyLCBF RklfSUZSX1RFWFRfT1ApDQo+IA0KPiArICAgICAgICBJZnJTdGF0ZW1lbnRIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5UZXh0LlN0YXRlbWVudCkNCj4gDQo+ICsgICAgICAgIHNlbGYuVGV4dC5U ZXh0VHdvID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLkhhc1Rl eHRUd28gPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VGV4dFR3byhzZWxmLCBT dHJpbmdJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLlRleHQuVGV4dFR3byA9IFN0cmluZ0lkDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRIYXNUZXh0VHdvKHNlbGYsIEZsYWcpOg0KPiANCj4g KyAgICAgICAgc2VsZi5IYXNUZXh0VHdvID0gRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg R2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlRleHQNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJHdWlkKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g DQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUsIERhdGE9Tm9uZSk6DQo+IA0KPiArICAg ICAgICBzZWxmLkd1aWQgPSBFRklfSUZSX0dVSUQoKQ0KPiANCj4gKyAgICAgICAgc2VsZi5EYXRh ID0gRGF0YSAgIyBkYXRhYnVmZmVyIGlzIHNhdmVkIGhlcmUNCj4gDQo+ICsgICAgICAgIElmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuR3VpZC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwN Cj4gc2l6ZW9mKEVGSV9JRlJfR1VJRCkgKyBTaXplKQ0KPiANCj4gKyAgICAgICAgRUZJX0lGUl9E RUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwg MCwgMCwNCj4gMCkpDQo+IA0KPiArICAgICAgICBzZWxmLkd1aWQuR3VpZCA9IEVGSV9JRlJfREVG QVVMVF9HVUlEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0K PiANCj4gKyAgICAgICAgc2VsZi5HdWlkLkd1aWQgPSBHdWlkDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXREYXRhKHNlbGYsIERhdGEpOg0KPiANCj4gKyAgICAgICAgc2VsZi5EYXRhID0gRGF0 YQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RGF0YShzZWxmKToNCj4gDQo+ICsgICAgICAg IHJldHVybiBzZWxmLkRhdGENCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 ICAjDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5HdWlkDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgSWZyRXh0ZW5zaW9uR3VpZChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0K PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBTaXplPTAsIFR5cGVOYW1lPSIiLCBBcnJheVNpemU9 MCwgRGF0YT1Ob25lKToNCj4gDQo+ICsgICAgICAgIHNlbGYuR3VpZCA9IEVGSV9JRlJfR1VJRCgp DQo+IA0KPiArICAgICAgICBpZiBBcnJheVNpemUgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkRhdGFUeXBlID0gVHlwZU5hbWUgKyAiWyIgKyBzdHIoQXJyYXlTaXplKSArICJdIg0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkRhdGFUeXBlID0gVHlw ZU5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuRmllbGRMaXN0ID0gW10NCj4gDQo+ICsgICAgICAg IHNlbGYuRGF0YSA9IERhdGENCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuR3VpZC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gc2l6ZW9mKEVGSV9JRlJf R1VJRCkgKyBTaXplKQ0KPiANCj4gKyAgICAgICAgRUZJX0lGUl9ERUZBVUxUX0dVSUQgPSBFRklf R1VJRCgwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwNCj4gMCkpDQo+IA0K PiArICAgICAgICBzZWxmLkd1aWQuR3VpZCA9IEVGSV9JRlJfREVGQVVMVF9HVUlEDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5HdWlkLkd1aWQgPSBHdWlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXREYXRhKHNlbGYs IERhdGEpOg0KPiANCj4gKyAgICAgICAgc2VsZi5EYXRhID0gRGF0YQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0RGF0YVR5cGUoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5E YXRhVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RmllbGRMaXN0KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYuRmllbGRMaXN0DQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBTZXRGaWVsZExpc3Qoc2VsZiwgVEZOYW1lLCBURlZhbHVlKToNCj4gDQo+ICsgICAgICAgIHNl bGYuRmllbGRMaXN0LmFwcGVuZChbVEZOYW1lLCBURlZhbHVlXSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldERhdGEoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5EYXRhDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOiAgIw0KPiANCj4gKyAgICAgICAg cmV0dXJuIHNlbGYuR3VpZA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmck9yZGVy ZWRMaXN0KElmckxpbmUsIElmckJhc2VJbmZvLCBJZnJPcEhlYWRlciwgSWZyUXVlc3Rpb25IZWFk ZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUU5hbWU9Tm9uZSwgVmFySWRTdHI9 IiIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5PcmRlcmVkTGlzdCA9IEVGSV9JRlJfT1JERVJFRF9M SVNUKCkNCj4gDQo+ICsgICAgICAgIElmckJhc2VJbmZvLl9faW5pdF9fKHNlbGYsIHNlbGYuT3Jk ZXJlZExpc3QsIFFOYW1lLCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuT3JkZXJlZExpc3QuSGVhZGVyLA0KPiBFRklfSUZSX09SREVSRURf TElTVF9PUCkNCj4gDQo+ICsgICAgICAgIElmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuT3JkZXJlZExpc3QuUXVlc3Rpb24pDQo+IA0KPiArICAgICAgICBzZWxmLk9yZGVyZWRM aXN0Lk1heENvbnRhaW5lcnMgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLk9yZGVyZWRMaXN0LkZs YWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5IYXNNYXhDb250YWluZXJzID0g RmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0KPiANCj4g KyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFFIZWFkZXJG bGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArICAgICAgICBJZnJRdWVzdGlvbkhlYWRlci5TZXRG bGFncyhzZWxmLCBGbGFncykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldE1heENvbnRhaW5l cnMoc2VsZiwgTWF4Q29udGFpbmVycyk6DQo+IA0KPiArICAgICAgICBzZWxmLk9yZGVyZWRMaXN0 Lk1heENvbnRhaW5lcnMgPSBNYXhDb250YWluZXJzDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRIYXNNYXhDb250YWluZXJzKHNlbGYsIEhhc01heENvbnRhaW5lcnMpOg0KPiANCj4gKyAgICAg ICAgc2VsZi5IYXNNYXhDb250YWluZXJzID0gSGFzTWF4Q29udGFpbmVycw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiANCj4gKyAgICAg ICAgUmV0dXJuQ29kZSA9IElmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykN Cj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gDQo+ICsg ICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZS X1VOSVFVRV9TRVQpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5PcmRlcmVkTGlzdC5GbGFncyB8PSBFRklfSUZSX1VOSVFVRV9TRVQNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBF RklfSUZSX05PX0VNUFRZX1NFVCkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLk9yZGVyZWRMaXN0LkZsYWdzIHw9IEVGSV9JRlJfTk9fRU1QVFlfU0VUDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gKA0KPiANCj4gKyAgICAgICAgICAgIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAgaWYgTEZsYWdz ID09IDANCj4gDQo+ICsgICAgICAgICAgICBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9G TEFHU19VTlNVUFBPUlRFRA0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIElmclN0cmluZyhJZnJMaW5lLCBJZnJCYXNlSW5mbywgSWZyT3BIZWFkZXIsIElm clF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFFOYW1lPU5v bmUsIFZhcklkU3RyPSIiKToNCj4gDQo+ICsgICAgICAgIHNlbGYuU3RyID0gRUZJX0lGUl9TVFJJ TkcoKQ0KPiANCj4gKyAgICAgICAgSWZyQmFzZUluZm8uX19pbml0X18oc2VsZiwgc2VsZi5TdHIs IFFOYW1lLCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuU3RyLkhlYWRlciwgRUZJX0lGUl9TVFJJTkdfT1ApDQo+IA0KPiArICAgICAgICBJ ZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlN0ci5RdWVzdGlvbikNCj4gDQo+ ICsgICAgICAgIHNlbGYuU3RyLkZsYWdzID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5TdHIuTWlu U2l6ZSA9IDANCj4gDQo+ICsgICAgICAgIHNlbGYuU3RyLk1heFNpemUgPSAwDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3Mp Og0KPiANCj4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3Mp DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6 DQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Mo c2VsZiwgSEZsYWdzKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJu Q29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FO RF9DTEVBUihMRmxhZ3MsDQo+IEVGSV9JRlJfU1RSSU5HX01VTFRJX0xJTkUpDQo+IA0KPiArICAg ICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TdHIuRmxhZ3MgfD0gRUZJX0lG Ul9TVFJJTkdfTVVMVElfTElORQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuICgNCj4g DQo+ICsgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4g KyAgICAgICAgICAgIGlmIExGbGFncyA9PSAwDQo+IA0KPiArICAgICAgICAgICAgZWxzZSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gDQo+ICsgICAgICAgICkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldE1pblNpemUoc2VsZiwgTWluU2l6ZSk6DQo+IA0K PiArICAgICAgICBzZWxmLlN0ci5NaW5TaXplID0gTWluU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0TWF4U2l6ZShzZWxmLCBNYXhTaXplKToNCj4gDQo+ICsgICAgICAgIHNlbGYuU3Ry Lk1heFNpemUgPSBNYXhTaXplDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyUGFz c3dvcmQoSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRl cik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0i Iik6DQo+IA0KPiArICAgICAgICBzZWxmLlBhc3N3b3JkID0gRUZJX0lGUl9QQVNTV09SRCgpDQo+ IA0KPiArICAgICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLlBhc3N3b3JkLCBR TmFtZSwgVmFySWRTdHIpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLlBhc3N3b3JkLkhlYWRlciwNCj4gRUZJX0lGUl9QQVNTV09SRF9PUCkNCj4gDQo+ICsg ICAgICAgIElmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuUGFzc3dvcmQuUXVl c3Rpb24pDQo+IA0KPiArICAgICAgICBzZWxmLlBhc3N3b3JkLk1pblNpemUgPSAwDQo+IA0KPiAr ICAgICAgICBzZWxmLlBhc3N3b3JkLk1heFNpemUgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBHZXRRdWVzdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KPiANCj4gKyAg ICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBTZXRNaW5TaXplKHNlbGYsIE1pblNpemUpOg0KPiANCj4gKyAgICAgICAg c2VsZi5QYXNzd29yZC5NaW5TaXplID0gTWluU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg U2V0TWF4U2l6ZShzZWxmLCBNYXhTaXplKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUGFzc3dvcmQu TWF4U2l6ZSA9IE1heFNpemUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJEZWZh dWx0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKA0KPiAN Cj4gKyAgICAgICAgc2VsZiwNCj4gDQo+ICsgICAgICAgIFZhbHVlVHlwZSwNCj4gDQo+ICsgICAg ICAgIFZhbHVlTGlzdCwNCj4gDQo+ICsgICAgICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFVTFRf Q0xBU1NfU1RBTkRBUkQsDQo+IA0KPiArICAgICAgICBUeXBlPUVGSV9JRlJfVFlQRV9PVEhFUiwN Cj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIE51bXMgPSBsZW4oVmFsdWVMaXN0KQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5EZWZhdWx0ID0gUmVmaW5lX0VGSV9JRlJfREVGQVVMVChWYWx1ZVR5 cGUsIE51bXMpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LkRlZmF1bHQuSGVhZGVyLCBFRklfSUZSX0RFRkFVTFRfT1AsDQo+IHNpemVvZihzZWxmLkRlZmF1 bHQpKQ0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZhdWx0LlR5cGUgPSBUeXBlDQo+IA0KPiArICAg ICAgICBzZWxmLkRlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBzZWxmLlZhbHVlVHlwZSA9IFZhbHVlVHlwZQ0KPiANCj4gKyAgICAgICAgc2VsZi5E ZWZhdWx0U3RvcmUgPSAiIg0KPiANCj4gKyAgICAgICAgc2VsZi5WYWx1ZVN0cmVhbSA9ICIiDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBWYWx1ZUxpc3QgIT0gW106DQo+IA0KPiArICAgICAg ICAgICAgQXJyYXlUeXBlID0gVHlwZURpY3RbVmFsdWVUeXBlXSAqIE51bXMNCj4gDQo+ICsgICAg ICAgICAgICBWYWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gDQo+ICsgICAgICAgICAgICBmb3Ig aSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIFZh bHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkRlZmF1 bHQuVmFsdWUgPSBWYWx1ZUFycmF5DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXREZWZhdWx0 SWQoc2VsZiwgRGVmYXVsdElkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRGVmYXVsdC5EZWZhdWx0 SWQgPSBEZWZhdWx0SWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhbHVlVHlwZShzZWxm KToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlZhbHVlVHlwZQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRGVmYXVs dC5UeXBlID0gVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFs dWVMaXN0KToNCj4gDQo+ICsgICAgICAgIEFycmF5VHlwZSA9IFR5cGVEaWN0W3NlbGYuVmFsdWVU eXBlXSAqIChsZW4oVmFsdWVMaXN0KSkNCj4gDQo+ICsgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJh eVR5cGUoKQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkp Og0KPiANCj4gKyAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gDQo+ ICsgICAgICAgIHNlbGYuRGVmYXVsdC5WYWx1ZSA9IFZhbHVlQXJyYXkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIFNldERlZmF1bHRTdG9yZShzZWxmLCBEZWZhdWx0U3RvcmUpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5EZWZhdWx0U3RvcmUgPSBEZWZhdWx0U3RvcmUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldFZhbHVlU3RyZWFtKHNlbGYsIFZhbHVlU3RyZWFtKToNCj4gDQo+ICsgICAgICAg IHNlbGYuVmFsdWVTdHJlYW0gPSBWYWx1ZVN0cmVhbQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg R2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkRlZmF1bHQNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJEZWZhdWx0MihJZnJMaW5lLCBJZnJPcEhlYWRl cik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBEZWZhdWx0SWQ9RUZJX0hJSV9ERUZB VUxUX0NMQVNTX1NUQU5EQVJELA0KPiBUeXBlPUVGSV9JRlJfVFlQRV9PVEhFUik6DQo+IA0KPiAr ICAgICAgICBzZWxmLkRlZmF1bHQgPSBFRklfSUZSX0RFRkFVTFRfMigpDQo+IA0KPiArICAgICAg ICBJZnJPcEhlYWRlci5fX2luaXRfXygNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLCBzZWxmLkRl ZmF1bHQuSGVhZGVyLCBFRklfSUZSX0RFRkFVTFRfT1AsDQo+IHNpemVvZihFRklfSUZSX0RFRkFV TFRfMikNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIHNlbGYuRGVmYXVsdC5UeXBl ID0gVHlwZQ0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZhdWx0LkRlZmF1bHRJZCA9IERlZmF1bHRJ ZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZhdWx0U3RvcmUgPSAiIg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgU2V0RGVmYXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQo+IA0KPiAr ICAgICAgICBzZWxmLkRlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZh dWx0LlR5cGUgPSBUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXREZWZhdWx0U3RvcmUo c2VsZiwgRGVmYXVsdFN0b3JlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRGVmYXVsdFN0b3JlID0g RGVmYXVsdFN0b3JlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYuRGVmYXVsdA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIElmckluY29uc2lzdGVudElmKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5JbmNvbnNpc3RlbnRJ ZiA9IEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuSW5jb25zaXN0ZW50SWYuSGVhZGVyLA0KPiBFRklfSUZSX0lO Q09OU0lTVEVOVF9JRl9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5jb25zaXN0ZW50SWYuRXJy b3IgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuRmxhZ3NTdHJl YW0gPSAiIg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RXJyb3Ioc2VsZiwgRXJyb3IpOg0K PiANCj4gKyAgICAgICAgc2VsZi5JbmNvbnNpc3RlbnRJZi5FcnJvciA9IEVycm9yDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRGbGFnc1N0cmVhbShzZWxmLCBGbGFnKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuRmxhZ3NTdHJlYW0gPSBGbGFnDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJ bmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuSW5jb25zaXN0ZW50SWYNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJJbmNvbnNpc3RlbnRJZjIoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAg ICAgICBzZWxmLkluY29uc2lzdGVudElmID0gRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYoKQ0KPiAN Cj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5JbmNvbnNpc3RlbnRJ Zi5IZWFkZXIsDQo+IEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QKQ0KPiANCj4gKyAgICAgICAg c2VsZi5JbmNvbnNpc3RlbnRJZi5FcnJvciA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4g KyAgICAgICAgc2VsZi5GbGFnc1N0cmVhbSA9ICIiDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRFcnJvcihzZWxmLCBFcnJvcik6DQo+IA0KPiArICAgICAgICBzZWxmLkluY29uc2lzdGVudElm LkVycm9yID0gRXJyb3INCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzU3RyZWFtKHNl bGYsIEZsYWcpOg0KPiANCj4gKyAgICAgICAgc2VsZi5GbGFnc1N0cmVhbSA9IEZsYWcNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4g c2VsZi5JbmNvbnNpc3RlbnRJZg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmck5v U3VibWl0SWYoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLk5vU3VibWl0SWYgPSBFRklfSUZSX05PX1NVQk1J VF9JRigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk5v U3VibWl0SWYuSGVhZGVyLA0KPiBFRklfSUZSX05PX1NVQk1JVF9JRl9PUCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuTm9TdWJtaXRJZi5FcnJvciA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgc2VsZi5GbGFnc1N0cmVhbSA9ICIiDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXRFcnJvcihzZWxmLCBFcnJvcik6DQo+IA0KPiArICAgICAgICBzZWxmLk5vU3Vi bWl0SWYuRXJyb3IgPSBFcnJvcg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RmxhZ3NTdHJl YW0oc2VsZiwgRmxhZyk6DQo+IA0KPiArICAgICAgICBzZWxmLkZsYWdzU3RyZWFtID0gRmxhZw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJl dHVybiBzZWxmLk5vU3VibWl0SWYNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJE aXNhYmxlSWYoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLkRpc2FibGVJZiA9IEVGSV9JRlJfRElTQUJMRV9J RigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkRpc2Fi bGVJZi5IZWFkZXIsDQo+IEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5EaXNhYmxl SWYNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJTdXBwcmVzc0lmKElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5TdXBwcmVzc0lmID0gRUZJX0lGUl9TVVBQUkVTU19JRigpDQo+IA0KPiArICAg ICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlN1cHByZXNzSWYuSGVhZGVyLA0K PiBFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlN1cHByZXNzSWYNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJHcmF5T3V0SWYoSWZyTGluZSwgSWZyT3BIZWFkZXIp Og0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLkdy YXlPdXRJZiA9IEVGSV9JRlJfR1JBWV9PVVRfSUYoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5HcmF5T3V0SWYuSGVhZGVyLA0KPiBFRklfSUZSX0dSQVlf T1VUX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLkdyYXlPdXRJZg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIElmclZhbHVlKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9f aW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5WYWx1ZSA9IEVGSV9JRlJfVkFMVUUo KQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5WYWx1ZS5I ZWFkZXIsIEVGSV9JRlJfVkFMVUVfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVmFsdWUNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBJZnJSZWFkKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5SZWFkID0gRUZJX0lG Ul9SRUFEKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu UmVhZC5IZWFkZXIsIEVGSV9JRlJfUkVBRF9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdl dEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5SZWFkDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyV3JpdGUoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLldyaXRlID0g RUZJX0lGUl9XUklURSgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLldyaXRlLkhlYWRlciwgRUZJX0lGUl9XUklURV9PUCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5Xcml0ZQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmcldhcm5pbmdJZihJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAg IHNlbGYuV2FybmluZ0lmID0gRUZJX0lGUl9XQVJOSU5HX0lGKCkNCj4gDQo+ICsgICAgICAgIElm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuV2FybmluZ0lmLkhlYWRlciwNCj4gRUZJX0lG Ul9XQVJOSU5HX0lGX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5XYXJuaW5nSWYuV2FybmluZyA9 IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi5XYXJuaW5nSWYuVGlt ZU91dCA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuSGFzVGltZU91dCA9IEZhbHNl DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRXYXJuaW5nKHNlbGYsIFdhcm5NZXNzYWdlKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuV2FybmluZ0lmLldhcm5pbmcgPSBXYXJuTWVzc2FnZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgU2V0SGFzSGFzVGltZU91dChzZWxmLCBIYXNUaW1lT3V0KToN Cj4gDQo+ICsgICAgICAgIHNlbGYuSGFzVGltZU91dCA9IEhhc1RpbWVPdXQNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFNldFRpbWVPdXQoc2VsZiwgVGltZU91dCk6DQo+IA0KPiArICAgICAgICBz ZWxmLldhcm5pbmdJZi5UaW1lT3V0ID0gVGltZU91dA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg R2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLldhcm5pbmdJZg0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclJlZnJlc2goSWZyTGluZSwgSWZyT3BIZWFk ZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxm LlJlZnJlc2ggPSBFRklfSUZSX1JFRlJFU0goKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5SZWZyZXNoLkhlYWRlciwgRUZJX0lGUl9SRUZSRVNIX09QKQ0K PiANCj4gKyAgICAgICAgc2VsZi5SZWZyZXNoLlJlZnJlc2hJbnRlcnZhbCA9IDANCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIFNldFJlZnJlc2hJbnRlcnZhbChzZWxmLCBSZWZyZXNoSW50ZXJ2YWwp Og0KPiANCj4gKyAgICAgICAgc2VsZi5SZWZyZXNoLlJlZnJlc2hJbnRlcnZhbCA9IFJlZnJlc2hJ bnRlcnZhbA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLlJlZnJlc2gNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBJZnJSZWZyZXNoSWQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLlJlZnJlc2hJZCA9IEVGSV9JRlJfUkVG UkVTSF9JRCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LlJlZnJlc2hJZC5IZWFkZXIsDQo+IEVGSV9JRlJfUkVGUkVTSF9JRF9PUCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuUmVmcmVzaElkLlJlZnJlc2hFdmVudEdyb3VwSWQgPSBFRklfR1VJRCgwLCAwLCAw LCBHdWlkQXJyYXkoMCwgMCwNCj4gMCwgMCwgMCwgMCwgMCwgMCkpDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXRSZWZyZXNoRXZlbnRHcm91dElkKHNlbGYsIFJlZnJlc2hFdmVudEdyb3VwSWQp Og0KPiANCj4gKyAgICAgICAgc2VsZi5SZWZyZXNoSWQuUmVmcmVzaEV2ZW50R3JvdXBJZCA9IFJl ZnJlc2hFdmVudEdyb3VwSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5SZWZyZXNoSWQNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBJZnJWYXJTdG9yZURldmljZShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3Rv cmVEZXZpY2UgPSBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRSgpDQo+IA0KPiArICAgICAgICBJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlZhclN0b3JlRGV2aWNlLkhlYWRlciwNCj4gRUZJ X0lGUl9WQVJTVE9SRV9ERVZJQ0VfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlRGV2 aWNlLkRldmljZVBhdGggPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldERldmljZVBhdGgoc2VsZiwgRGV2aWNlUGF0aCk6DQo+IA0KPiArICAgICAgICBz ZWxmLlZhclN0b3JlRGV2aWNlLkRldmljZVBhdGggPSBEZXZpY2VQYXRoDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVmFy U3RvcmVEZXZpY2UNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJEYXRlKElmckxp bmUsIElmckJhc2VJbmZvLCBJZnJPcEhlYWRlciwgSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgUU5hbWU9Tm9uZSwgVmFySWRTdHI9IiIpOg0KPiANCj4g KyAgICAgICAgc2VsZi5EYXRlID0gRUZJX0lGUl9EQVRFKCkNCj4gDQo+ICsgICAgICAgIElmckJh c2VJbmZvLl9faW5pdF9fKHNlbGYsIHNlbGYuRGF0ZSwgUU5hbWUsIFZhcklkU3RyKQ0KPiANCj4g KyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5EYXRlLkhlYWRlciwgRUZJ X0lGUl9EQVRFX09QKQ0KPiANCj4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5EYXRlLlF1ZXN0aW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5EYXRlLkZsYWdz ID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5ZZWFyID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgc2VsZi5Nb250aCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuRGF5ID0gTm9uZQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5EX1llYXIgPSBOb25lDQo+IA0KPiArICAgICAg ICBzZWxmLkRfTW9udGggPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkRfRGF5ID0gTm9uZQ0K PiANCj4gKyAgICAgICAgc2VsZi5TdGVwID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5NaW4g PSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLk1heCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdzKToNCj4gDQo+ICsgICAgICAgIFJl dHVybkNvZGUgPSBJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+IA0K PiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4g RUZJX1FGX0RBVEVfWUVBUl9TVVBQUkVTUykNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkRhdGUuRmxhZ3MgfD0gRUZJX1FGX0RBVEVfWUVBUl9TVVBQUkVT Uw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9D TEVBUihMRmxhZ3MsDQo+IEVGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTKQ0KPiANCj4gKyAgICAg ICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRGF0ZS5GbGFncyB8PSBFRklfUUZf REFURV9NT05USF9TVVBQUkVTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQg PSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IEVGSV9RRl9EQVRFX0RBWV9TVVBQUkVT UykNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkRhdGUu RmxhZ3MgfD0gRUZJX1FGX0RBVEVfREFZX1NVUFBSRVNTDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gUUZfREFURV9T VE9SQUdFX05PUk1BTCkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkRhdGUuRmxhZ3MgfD0gUUZfREFURV9TVE9SQUdFX05PUk1BTA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ IFFGX0RBVEVfU1RPUkFHRV9USU1FKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRGF0ZS5GbGFncyB8PSBRRl9EQVRFX1NUT1JBR0VfVElNRQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxh Z3MsDQo+IFFGX0RBVEVfU1RPUkFHRV9XQUtFVVApDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5EYXRlLkZsYWdzIHw9IFFGX0RBVEVfU1RPUkFHRV9XQUtF VVANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAoDQo+IA0KPiArICAgICAgICAgICAg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBpZiBM RmxhZ3MgPT0gMA0KPiANCj4gKyAgICAgICAgICAgIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgSWZyVGltZShJZnJMaW5lLCBJZnJCYXNlSW5mbywgSWZyT3BIZWFkZXIs IElmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFFOYW1l PU5vbmUsIFZhcklkU3RyPSIiKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVGltZSA9IEVGSV9JRlJf VElNRSgpDQo+IA0KPiArICAgICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLlRp bWUsIFFOYW1lLCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuVGltZS5IZWFkZXIsIEVGSV9JRlJfVElNRV9PUCkNCj4gDQo+ICsgICAgICAg IElmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVGltZS5RdWVzdGlvbikNCj4g DQo+ICsgICAgICAgIHNlbGYuVGltZS5GbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IHNlbGYuSG91ciA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuTWludXRlID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5TZWNvbmQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBz ZWxmLkRfSG91ciA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuRF9NaW51dGUgPSBOb25lDQo+ IA0KPiArICAgICAgICBzZWxmLkRfU2Vjb25kID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgc2VsZi5TdGVwID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5NaW4gPSBOb25lDQo+IA0K PiArICAgICAgICBzZWxmLk1heCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEhv dXIoc2VsZiwgSG91cik6DQo+IA0KPiArICAgICAgICBzZWxmLkhvdXIgPSBIb3VyDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRNaW51dGUoc2VsZiwgTWludXRlKToNCj4gDQo+ICsgICAgICAg IHNlbGYuTWludXRlID0gTWludXRlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRTZWNvbmQo c2VsZiwgU2Vjb25kKToNCj4gDQo+ICsgICAgICAgIHNlbGYuU2Vjb25kID0gU2Vjb25kDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQo+IA0K PiArICAgICAgICBSZXR1cm5Db2RlID0gSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwg SEZsYWdzKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVB UihMRmxhZ3MsDQo+IFFGX1RJTUVfSE9VUl9TVVBQUkVTUykNCj4gDQo+ICsgICAgICAgIGlmIFJl dDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlRpbWUuRmxhZ3MgfD0gUUZfVElNRV9IT1VSX1NV UFBSRVNTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1Rf QU5EX0NMRUFSKExGbGFncywNCj4gUUZfVElNRV9NSU5VVEVfU1VQUFJFU1MpDQo+IA0KPiArICAg ICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5UaW1lLkZsYWdzIHw9IFFGX1RJ TUVfTUlOVVRFX1NVUFBSRVNTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJldCA9 IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gUUZfVElNRV9TRUNPTkRfU1VQUFJFU1Mp DQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5UaW1lLkZs YWdzIHw9IFFGX1RJTUVfU0VDT05EX1NVUFBSRVNTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBM RmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gUUZfVElNRV9TVE9S QUdFX05PUk1BTCkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLlRpbWUuRmxhZ3MgfD0gUUZfVElNRV9TVE9SQUdFX05PUk1BTA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IFFG X1RJTUVfU1RPUkFHRV9USU1FKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuVGltZS5GbGFncyB8PSBRRl9USU1FX1NUT1JBR0VfVElNRQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3Ms DQo+IFFGX1RJTUVfU1RPUkFHRV9XQUtFVVApDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9XQUtFVVAN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAoDQo+IA0KPiArICAgICAgICAgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBpZiBMRmxh Z3MgPT0gMA0KPiANCj4gKyAgICAgICAgICAgIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgSWZyTnVtZXJpYyhJZnJMaW5lLCBJZnJCYXNlSW5mbywgSWZyT3BIZWFkZXIs IElmclF1ZXN0aW9uSGVhZGVyLA0KPiBJZnJNaW5NYXhTdGVwRGF0YSk6DQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBUeXBlLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+IA0KPiAr ICAgICAgICBzZWxmLk51bWVyaWMgPSBSZWZpbmVfRUZJX0lGUl9OVU1FUklDKFR5cGUpDQo+IA0K PiArICAgICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLk51bWVyaWMsIFFOYW1l LCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuTnVtZXJpYy5IZWFkZXIsIEVGSV9JRlJfTlVNRVJJQ19PUCwNCj4gc2l6ZW9mKHNlbGYuTnVt ZXJpYykpDQo+IA0KPiArICAgICAgICBJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLk51bWVyaWMuUXVlc3Rpb24pDQo+IA0KPiArICAgICAgICBJZnJNaW5NYXhTdGVwRGF0YS5f X2luaXRfXyhzZWxmLCBzZWxmLk51bWVyaWMuRGF0YSwgVHJ1ZSkNCj4gDQo+ICsgICAgICAgIHNl bGYuTnVtZXJpYy5GbGFncyA9IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzEgfA0KPiBFRklfSUZSX0RJ U1BMQVlfVUlOVF9ERUMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuSGFzU3RlcCA9IEZh bHNlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRNaW5NYXhEYXRh KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIFNldFFIZWFkZXJGbGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArICAgICAgICBJZnJRdWVz dGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBGbGFncykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdzLCBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9 RmFsc2UpOg0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9IElmclF1ZXN0aW9uSGVhZGVyLlNl dEZsYWdzKHNlbGYsIEhGbGFncykNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFJldHVybkNvZGUNCj4gDQo+ICsgICAgICAgIGlmIERpc3BsYXlTZXR0aW5nc1NwZWNpZmllZCA9 PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk51bWVyaWMuRmxhZ3MgPSBMRmxhZ3Mg fCBFRklfSUZSX0RJU1BMQVlfVUlOVF9ERUMNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5OdW1lcmljLkZsYWdzID0gTEZsYWdzDQo+IA0KPiArICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldEZsYWdzRm9yQml0RmllbGQoc2VsZiwgSEZsYWdzLCBMRmxhZ3MsIERpc3BsYXlT ZXR0aW5nc1NwZWNpZmllZD1GYWxzZSk6DQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gSWZy UXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiANCj4gKyAgICAgICAgaWYg UmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAgICAgaWYgRGlzcGxheVNl dHRpbmdzU3BlY2lmaWVkID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTnVtZXJp Yy5GbGFncyA9IExGbGFncyB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfREVDX0JJVA0KPiANCj4g KyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk51bWVyaWMuRmxhZ3MgPSBM RmxhZ3MNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0TnVtZXJpY0ZsYWdzKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYuTnVtZXJpYy5GbGFncw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0SGFzU3RlcChzZWxmLCBIYXNTdGVwKToNCj4gDQo+ICsgICAgICAgIHNlbGYuSGFz U3RlcCA9IEhhc1N0ZXANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJPbmVPZihJ ZnJRdWVzdGlvbkhlYWRlciwgSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVyLA0KPiBJ ZnJNaW5NYXhTdGVwRGF0YSk6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUeXBlLCBR TmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+IA0KPiArICAgICAgICBzZWxmLk9uZU9mID0gUmVm aW5lX0VGSV9JRlJfT05FX09GKFR5cGUpDQo+IA0KPiArICAgICAgICBJZnJCYXNlSW5mby5fX2lu aXRfXyhzZWxmLCBzZWxmLk9uZU9mLCBRTmFtZSwgVmFySWRTdHIpDQo+IA0KPiArICAgICAgICBJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk9uZU9mLkhlYWRlciwgRUZJX0lGUl9PTkVf T0ZfT1AsDQo+IHNpemVvZihzZWxmLk9uZU9mKSkNCj4gDQo+ICsgICAgICAgIElmclF1ZXN0aW9u SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuT25lT2YuUXVlc3Rpb24pDQo+IA0KPiArICAgICAg ICBJZnJNaW5NYXhTdGVwRGF0YS5fX2luaXRfXyhzZWxmLCBzZWxmLk9uZU9mLkRhdGEpDQo+IA0K PiArICAgICAgICBzZWxmLk9uZU9mLkZsYWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg c2VsZi5IYXNNaW5NYXggPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5IYXNT dGVwID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldE1p bk1heERhdGEoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZg0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCj4gDQo+ICsgICAgICAg IElmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiANCj4gKyAgICAgICAg UmV0dXJuQ29kZSA9IElmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCj4g DQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gDQo+ICsgICAg ICAgIGlmIExGbGFncyAmIEVGSV9JRlJfRElTUExBWToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk9uZU9mLkZsYWdzID0gTEZsYWdzDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuT25lT2YuRmxhZ3MgPSBMRmxhZ3MgfCBFRklfSUZSX0RJU1BMQVlfVUlOVF9E RUMNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RmxhZ3NGb3JCaXRGaWVsZChzZWxmLCBIRmxh Z3MsIExGbGFncyk6DQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gSWZyUXVlc3Rpb25IZWFk ZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAh PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAgICAgaWYgTEZsYWdzICYgRURLSUlfSUZSX0RJ U1BMQVlfQklUOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT25lT2YuRmxhZ3MgPSBMRmxhZ3MN Cj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PbmVPZi5GbGFn cyA9IExGbGFncyB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfREVDX0JJVA0KPiANCj4gKyAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBTZXRIYXNNaW5NYXgoc2VsZiwgSGFzTWluTWF4KToNCj4gDQo+ICsgICAgICAg IHNlbGYuSGFzTWluTWF4ID0gSGFzTWluTWF4DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRI YXNTdGVwKHNlbGYsIEhhc1N0ZXApOg0KPiANCj4gKyAgICAgICAgc2VsZi5IYXNTdGVwID0gSGFz U3RlcA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmckNoZWNrQm94KElmckxpbmUs IElmckJhc2VJbmZvLCBJZnJPcEhlYWRlciwgSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKyAg ICBkZWYgX19pbml0X18oc2VsZiwgUU5hbWU9Tm9uZSwgVmFySWRTdHI9IiIpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5DaGVja0JveCA9IEVGSV9JRlJfQ0hFQ0tCT1goKQ0KPiANCj4gKyAgICAgICAg SWZyQmFzZUluZm8uX19pbml0X18oc2VsZiwgc2VsZi5DaGVja0JveCwgUU5hbWUsIFZhcklkU3Ry KQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5DaGVja0Jv eC5IZWFkZXIsDQo+IEVGSV9JRlJfQ0hFQ0tCT1hfT1ApDQo+IA0KPiArICAgICAgICBJZnJRdWVz dGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkNoZWNrQm94LlF1ZXN0aW9uKQ0KPiANCj4g KyAgICAgICAgc2VsZi5DaGVja0JveC5GbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IEdldFF1ZXN0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIFNldFFIZWFkZXJGbGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArICAg ICAgICBJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBGbGFncykNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu Q2hlY2tCb3guRmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhG bGFncywgTEZsYWdzKToNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBJZnJRdWVzdGlvbkhl YWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+IA0KPiArICAgICAgICBpZiBSZXR1cm5Db2Rl ICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBSZXR1cm5Db2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJldCA9 IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxU KQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ2hlY2tC b3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gRUZJX0lG Ul9DSEVDS0JPWF9ERUZBVUxUX01GRykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFJldDoN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNoZWNrQm94LkZsYWdzIHw9IEVGSV9JRlJfQ0hFQ0tC T1hfREVGQVVMVF9NRkcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAoDQo+IA0KPiAr ICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAg ICAgICAgICBpZiBMRmxhZ3MgPT0gMA0KPiANCj4gKyAgICAgICAgICAgIGVsc2UgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArICAgICAgICApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyUmVzZXRCdXR0b24oSWZyTGluZSwgSWZyT3BI ZWFkZXIsIElmclN0YXRlbWVudEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBEZWZhdWx0U3RvcmU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBzZWxmLlJlc2V0QnV0dG9uID0g RUZJX0lGUl9SRVNFVF9CVVRUT04oKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5SZXNldEJ1dHRvbi5IZWFkZXIsDQo+IEVGSV9JRlJfUkVTRVRfQlVUVE9O X09QKQ0KPiANCj4gKyAgICAgICAgSWZyU3RhdGVtZW50SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuUmVzZXRCdXR0b24uU3RhdGVtZW50KQ0KPiANCj4gKyAgICAgICAgc2VsZi5SZXNldEJ1dHRv bi5EZWZhdWx0SWQgPSBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYuRGVmYXVsdFN0b3JlID0gRGVmYXVsdFN0b3JlDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBTZXREZWZhdWx0SWQoc2VsZiwgRGVmYXVsdElkKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuUmVzZXRCdXR0b24uRGVmYXVsdElkID0gRGVmYXVsdElkDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBTZXREZWZhdWx0U3RvcmUoc2VsZiwgRGVmYXVsdFN0b3JlKToNCj4gDQo+ICsg ICAgICAgIHNlbGYuRGVmYXVsdFN0b3JlID0gRGVmYXVsdFN0b3JlDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUmVzZXRC dXR0b24NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJPcihJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4g KyAgICAgICAgc2VsZi5PciA9IEVGSV9JRlJfT1IoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5Pci5IZWFkZXIsIEVGSV9JRlJfT1JfT1ApDQo+IA0KPiAr ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuT3INCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJBbmQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuQW5k ID0gRUZJX0lGUl9BTkQoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5BbmQuSGVhZGVyLCBFRklfSUZSX0FORF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5BbmQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBJZnJCaXRXaXNlT3IoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuQml0V2lzZU9y ID0gRUZJX0lGUl9CSVRXSVNFX09SKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuQml0V2lzZU9yLkhlYWRlciwNCj4gRUZJX0lGUl9CSVRXSVNFX09SX09Q KQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkJpdFdp c2VPcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmckNhdGVuYXRlKElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ IA0KPiArICAgICAgICBzZWxmLkNhdGVuYXRlID0gRUZJX0lGUl9DQVRFTkFURSgpDQo+IA0KPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkNhdGVuYXRlLkhlYWRlciwg RUZJX0lGUl9DQVRFTkFURV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAg ICByZXR1cm4gc2VsZi5DYXRlbmF0ZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElm ckRpdmlkZShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5EaXZpZGUgPSBFRklfSUZSX0RJVklE RSgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkRpdmlk ZS5IZWFkZXIsIEVGSV9JRlJfRElWSURFX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLkRpdmlkZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIElmckVxdWFsKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLkVxdWFsID0gRUZJX0lGUl9F UVVBTCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkVx dWFsLkhlYWRlciwgRUZJX0lGUl9FUVVBTF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGlu ZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0K PiArICAgICAgICByZXR1cm4gc2VsZi5FcXVhbA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIElmckdyZWF0ZXJFcXVhbChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5HcmVhdGVyRXF1 YWwgPSBFRklfSUZSX0dSRUFURVJfRVFVQUwoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5HcmVhdGVyRXF1YWwuSGVhZGVyLA0KPiBFRklfSUZSX0dSRUFU RVJfRVFVQUxfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJu IHNlbGYuR3JlYXRlckVxdWFsDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyR3Jl YXRlclRoYW4oSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuR3JlYXRlclRoYW4gPSBFRklfSUZS X0dSRUFURVJfVEhBTigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLkdyZWF0ZXJUaGFuLkhlYWRlciwNCj4gRUZJX0lGUl9HUkVBVEVSX1RIQU5fT1ApDQo+ IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuR3JlYXRlclRo YW4NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJMZXNzRXF1YWwoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4g DQo+ICsgICAgICAgIHNlbGYuTGVzc0VxdWFsID0gRUZJX0lGUl9MRVNTX0VRVUFMKCkNCj4gDQo+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTGVzc0VxdWFsLkhlYWRl ciwNCj4gRUZJX0lGUl9MRVNTX0VRVUFMX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLkxlc3NFcXVhbA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIElmckxlc3NUaGFuKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVm IF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLkxlc3NUaGFuID0g RUZJX0lGUl9MRVNTX1RIQU4oKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5MZXNzVGhhbi5IZWFkZXIsDQo+IEVGSV9JRlJfTEVTU19USEFOX09QKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkxlc3NUaGFuDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyTWFwKElmckxpbmUsIElmck9wSGVhZGVy KToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAg ICBzZWxmLk1hcCA9IEVGSV9JRlJfTUFQKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuTWFwLkhlYWRlciwgRUZJX0lGUl9NQVBfT1ApDQo+IA0KPiArICAg ICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJ bmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuTWFwDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArY2xhc3MgSWZyTWF0Y2goSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuTWF0 Y2ggPSBFRklfSUZSX01BVENIKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuTWF0Y2guSGVhZGVyLCBFRklfSUZSX01BVENIX09QKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLk1hdGNoDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArY2xhc3MgSWZyTWF0Y2gyKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObywgR3VpZCk6DQo+IA0KPiArICAgICAgICBz ZWxmLk1hdGNoMiA9IEVGSV9JRlJfTUFUQ0gyKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuTWF0Y2gyLkhlYWRlciwgRUZJX0lGUl9NQVRDSDJfT1ApDQo+ IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArICAgICAgICBzZWxm Lk1hdGNoMi5TeW50YXhUeXBlID0gR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLk1hdGNoMg0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIElmck11bHRpcGx5KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g DQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxm Lk11bHRpcGx5ID0gRUZJX0lGUl9NVUxUSVBMWSgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLk11bHRpcGx5LkhlYWRlciwgRUZJX0lGUl9NVUxUSVBMWV9P UCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5NdWx0 aXBseQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmck1vZHVsbyhJZnJMaW5lLCBJ ZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiAN Cj4gKyAgICAgICAgc2VsZi5Nb2R1bG8gPSBFRklfSUZSX01PRFVMTygpDQo+IA0KPiArICAgICAg ICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk1vZHVsby5IZWFkZXIsIEVGSV9JRlJf TU9EVUxPX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLk1vZHVsbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmck5vdEVxdWFsKElm ckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQo+IA0KPiArICAgICAgICBzZWxmLk5vdEVxdWFsID0gRUZJX0lGUl9OT1RfRVFVQUwoKQ0K PiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5Ob3RFcXVhbC5I ZWFkZXIsDQo+IEVGSV9JRlJfTk9UX0VRVUFMX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLk5vdEVxdWFsDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgSWZyU2hpZnRMZWZ0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLlNoaWZ0TGVm dCA9IEVGSV9JRlJfU0hJRlRfTEVGVCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLlNoaWZ0TGVmdC5IZWFkZXIsIEVGSV9JRlJfU0hJRlRfTEVGVF9PUCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5TaGlmdExl ZnQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJTaGlmdFJpZ2h0KElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ IA0KPiArICAgICAgICBzZWxmLlNoaWZ0UmlnaHQgPSBFRklfSUZSX1NISUZUX1JJR0hUKCkNCj4g DQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuU2hpZnRSaWdodC5I ZWFkZXIsDQo+IEVGSV9JRlJfU0hJRlRfUklHSFRfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuU2hpZnRSaWdodA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIElmclN1YnRyYWN0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLlN1YnRy YWN0ID0gRUZJX0lGUl9TVUJUUkFDVCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLlN1YnRyYWN0LkhlYWRlciwgRUZJX0lGUl9TVUJUUkFDVF9PUCkNCj4g DQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5TdWJ0cmFjdA0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmckNvbmRpdGlvbmFsKElmckxpbmUsIElm ck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0K PiArICAgICAgICBzZWxmLkNvbmRpdGlvbmFsID0gRUZJX0lGUl9DT05ESVRJT05BTCgpDQo+IA0K PiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkNvbmRpdGlvbmFsLkhl YWRlciwNCj4gRUZJX0lGUl9DT05ESVRJT05BTF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0 TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5Db25kaXRpb25hbA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIElmckZpbmQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRmluZCA9IEVG SV9JRlJfRklORCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLkZpbmQuSGVhZGVyLCBFRklfSUZSX0ZJTkRfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtYXQoc2VsZiwg Rm9ybWF0KToNCj4gDQo+ICsgICAgICAgIHNlbGYuRmluZC5Gb3JtYXQgPSBGb3JtYXQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4g c2VsZi5GaW5kDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyTWlkKElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ IA0KPiArICAgICAgICBzZWxmLk1pZCA9IEVGSV9JRlJfTUlEKCkNCj4gDQo+ICsgICAgICAgIElm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTWlkLkhlYWRlciwgRUZJX0lGUl9NSURfT1Ap DQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuTWlkDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyVG9rZW4oSWZyTGluZSwgSWZyT3BIZWFk ZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuVG9rZW4gPSBFRklfSUZSX1RPS0VOKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVG9rZW4uSGVhZGVyLCBFRklfSUZSX1RPS0VOX09QKQ0K PiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlRva2VuDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyU3BhbihJZnJMaW5lLCBJZnJPcEhlYWRl cik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAg ICAgc2VsZi5TcGFuID0gRUZJX0lGUl9TUEFOKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuU3Bhbi5IZWFkZXIsIEVGSV9JRlJfU1BBTl9PUCkNCj4gDQo+ ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgIHNlbGYuU3Bh bi5GbGFncyA9IEVGSV9JRlJfRkxBR1NfRklSU1RfTUFUQ0hJTkcNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldEZsYWdzKHNlbGYsIExGbGFncyk6DQo+IA0KPiArICAgICAgICBpZiBMRmxhZ3Mg PT0gRUZJX0lGUl9GTEFHU19GSVJTVF9NQVRDSElORzoNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlNwYW4uRmxhZ3MgfD0gRUZJX0lGUl9GTEFHU19GSVJTVF9NQVRDSElORw0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5E X0NMRUFSKExGbGFncywNCj4gRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJTkcpDQo+IA0K PiArICAgICAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLlNwYW4u RmxhZ3MgfD0gRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJTkcNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiAoDQo+IA0KPiArICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBpZiBMRmxhZ3MgPT0gMA0KPiANCj4g KyAgICAgICAgICAgIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9S VEVEDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuU3Bhbg0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIElmckJpdFdpc2VBbmQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuQml0 V2lzZUFuZCA9IEVGSV9JRlJfQklUV0lTRV9BTkQoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5CaXRXaXNlQW5kLkhlYWRlciwNCj4gRUZJX0lGUl9CSVRX SVNFX0FORF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4g c2VsZi5CaXRXaXNlQW5kDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyQWRkKElm ckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQo+IA0KPiArICAgICAgICBzZWxmLkFkZCA9IEVGSV9JRlJfQUREKCkNCj4gDQo+ICsgICAg ICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuQWRkLkhlYWRlciwgRUZJX0lGUl9B RERfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu QWRkDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyVG9TdHJpbmcoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4g DQo+ICsgICAgICAgIHNlbGYuVG9TdHJpbmcgPSBFRklfSUZSX1RPX1NUUklORygpDQo+IA0KPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRvU3RyaW5nLkhlYWRlciwg RUZJX0lGUl9UT19TVFJJTkdfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5l Tm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtYXQoc2VsZiwgRm9ybWF0KToNCj4g DQo+ICsgICAgICAgIHNlbGYuVG9TdHJpbmcuRm9ybWF0ID0gRm9ybWF0DQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVG9T dHJpbmcNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJUb1VwcGVyKElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ IA0KPiArICAgICAgICBzZWxmLlRvVXBwcGVyID0gRUZJX0lGUl9UT19VUFBFUigpDQo+IA0KPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRvVXBwcGVyLkhlYWRlciwN Cj4gRUZJX0lGUl9UT19VUFBFUl9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExp bmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZi5Ub1VwcHBlcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IElmclRvVWludChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5Ub1VpbnQgPSBFRklfSUZSX1RP X1VJTlQoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5U b1VpbnQuSGVhZGVyLCBFRklfSUZSX1RPX1VJTlRfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVG9VaW50DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgSWZyVG9Mb3dlcihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5Ub0xvd2VyID0g RUZJX0lGUl9UT19MT1dFUigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLlRvTG93ZXIuSGVhZGVyLCBFRklfSUZSX1RPX0xPV0VSX09QKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlRvTG93ZXINCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJUb0Jvb2xlYW4oSWZyTGluZSwgSWZyT3BIZWFkZXIp Og0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAg IHNlbGYuQm9vbGVhbiA9IEVGSV9JRlJfVE9fQk9PTEVBTigpDQo+IA0KPiArICAgICAgICBJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkJvb2xlYW4uSGVhZGVyLA0KPiBFRklfSUZSX1RP X0JPT0xFQU5fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJu IHNlbGYuQm9vbGVhbg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmck5vdChJZnJM aW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8p Og0KPiANCj4gKyAgICAgICAgc2VsZi5Ob3QgPSBFRklfSUZSX05PVCgpDQo+IA0KPiArICAgICAg ICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk5vdC5IZWFkZXIsIEVGSV9JRlJfTk9U X09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLk5v dA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmckR1cChJZnJMaW5lLCBJZnJPcEhl YWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAg ICAgICAgc2VsZi5EdXAgPSBFRklfSUZSX0RVUCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLkR1cC5IZWFkZXIsIEVGSV9JRlJfRFVQX09QKQ0KPiANCj4g KyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg R2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuRHVwLkhlYWRlcg0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJl dHVybiBzZWxmLkR1cA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmckVxSWRJZChJ ZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5FcUlkSWQgPSBFRklfSUZSX0VRX0lEX0lEKCkNCj4g DQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRXFJZElkLkhlYWRl ciwgRUZJX0lGUl9FUV9JRF9JRF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExp bmVObykNCj4gDQo+ICsgICAgICAgIHNlbGYuRXFJZElkLlF1ZXN0aW9uSWQxID0gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuRXFJZElkLlF1ZXN0aW9uSWQyID0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRl cihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkVxSWRJZC5IZWFkZXINCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIFNldFF1ZXN0aW9uSWQxKHNlbGYsIFF1ZXN0aW9uSWQsIFZhcklk U3RyLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJ T05fSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVxSWRJZC5RdWVzdGlvbklk MSA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg Z0Zvcm1Qa2cuQXNzaWduUGVuZGluZyhWYXJJZFN0ciwgc2VsZi5FcUlkSWQsIExpbmVObywgIm5v IHF1ZXN0aW9uDQo+IHJlZmVyZWQiLCAxKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0UXVl c3Rpb25JZDIoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIsIExpbmVObyk6DQo+IA0KPiArICAg ICAgICBpZiBRdWVzdGlvbklkICE9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXFJZElkLlF1ZXN0aW9uSWQyID0gUXVlc3Rpb25JZA0KPiANCj4gKyAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBnRm9ybVBrZy5Bc3NpZ25QZW5kaW5nKFZh cklkU3RyLCBzZWxmLkVxSWRJZCwgTGluZU5vLCAibm8gcXVlc3Rpb24NCj4gcmVmZXJlZCIsIDIp DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAg cmV0dXJuIHNlbGYuRXFJZElkDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyRXFJ ZFZhbChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5FcUlkVmFsID0gRUZJX0lGUl9FUV9JRF9W QUwoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5FcUlk VmFsLkhlYWRlciwgRUZJX0lGUl9FUV9JRF9WQUxfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQo+IA0KPiArICAgICAgICBzZWxmLkVxSWRWYWwuUXVlc3Rpb25JZCA9 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRdWVz dGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQsIFZhcklkU3RyLCBMaW5lTm8pOg0KPiANCj4gKyAgICAg ICAgaWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkVxSWRWYWwuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgZ0Zvcm1Qa2cuQXNzaWduUGVuZGluZyhWYXJJ ZFN0ciwgc2VsZi5FcUlkVmFsLCBMaW5lTm8sICJubyBxdWVzdGlvbg0KPiByZWZlcmVkIikNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuRXFJZFZhbC5WYWx1ZSA9IFZhbHVlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5FcUlkVmFsLkhlYWRl cg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAg IHJldHVybiBzZWxmLkVxSWRWYWwNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJF cUlkTGlzdChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBMaW5lTm8sIE51bXMsIFZhbHVlTGlzdD1Ob25lKToNCj4gDQo+ICsgICAgICAgIHNlbGYu RXFJZFZMaXN0ID0gUmVmaW5lX0VGSV9JRlJfRVFfSURfVkFMX0xJU1QoTnVtcykNCj4gDQo+ICsg ICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYsIHNl bGYuRXFJZFZMaXN0LkhlYWRlciwgRUZJX0lGUl9FUV9JRF9WQUxfTElTVF9PUCwNCj4gc2l6ZW9m KHNlbGYuRXFJZFZMaXN0KQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKyAgICAgICAgc2VsZi5FcUlkVkxpc3QuUXVlc3Rpb25J ZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLkVxSWRWTGlz dC5MaXN0TGVuZ3RoID0gMA0KPiANCj4gKyAgICAgICAgaWYgVmFsdWVMaXN0IGlzIG5vdCBOb25l IGFuZCBWYWx1ZUxpc3QgIT0gW106DQo+IA0KPiArICAgICAgICAgICAgQXJyYXlUeXBlID0gY191 aW50MTYgKiBOdW1zDQo+IA0KPiArICAgICAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgp DQo+IA0KPiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0K PiANCj4gKyAgICAgICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkLCBWYXJJ ZFN0ciwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcUlkVkxpc3QuUXVlc3Rp b25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgZ0Zvcm1Qa2cuQXNzaWduUGVuZGluZyhWYXJJZFN0ciwgc2VsZi5FcUlkVkxpc3QsIExpbmVO bywgIm5vIHF1ZXN0aW9uDQo+IHJlZmVyZWQiKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0 TGlzdExlbmd0aChzZWxmLCBMaXN0TGVuZ3RoKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRXFJZFZM aXN0Lkxpc3RMZW5ndGggPSBMaXN0TGVuZ3RoDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRW YWx1ZUxpc3Qoc2VsZiwgVmFsdWVMaXN0KToNCj4gDQo+ICsgICAgICAgIGlmIFZhbHVlTGlzdCAh PSBbXToNCj4gDQo+ICsgICAgICAgICAgICBBcnJheVR5cGUgPSBjX3VpbnQxNiAqIGxlbihWYWx1 ZUxpc3QpDQo+IA0KPiArICAgICAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQo+IA0K PiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KPiANCj4g KyAgICAgICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuRXFJZFZMaXN0LkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxm KToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkVxSWRWTGlzdA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIElmclVpbnQ4KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLlVpbnQ4 ID0gRUZJX0lGUl9VSU5UOCgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLlVpbnQ4LkhlYWRlciwgRUZJX0lGUl9VSU5UOF9PUCkNCj4gDQo+ICsgICAgICAg IHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhbHVl KHNlbGYsIFZhbHVlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVWludDguVmFsdWUgPSBWYWx1ZQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAg cmV0dXJuIHNlbGYuVWludDguSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVWludDgNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBJZnJVaW50MTYoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVWlu dDE2ID0gRUZJX0lGUl9VSU5UMTYoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5VaW50MTYuSGVhZGVyLCBFRklfSUZSX1VJTlQxNl9PUCkNCj4gDQo+ICsg ICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNl dFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVWludDE2LlZhbHVlID0g VmFsdWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLlVpbnQxNi5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5VaW50MTYNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJVaW50MzIoSWZyTGluZSwgSWZyT3BIZWFkZXIp Og0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAg IHNlbGYuVWludDMyID0gRUZJX0lGUl9VSU5UMzIoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5VaW50MzIuSGVhZGVyLCBFRklfSUZSX1VJTlQzMl9PUCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVWludDMy LlZhbHVlID0gVmFsdWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToN Cj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlVpbnQzMi5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5VaW50 MzINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJVaW50NjQoSWZyTGluZSwgSWZy T3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuVWludDY0ID0gRUZJX0lGUl9VSU5UNjQoKQ0KPiANCj4gKyAgICAgICAg SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5VaW50NjQuSGVhZGVyLCBFRklfSUZSX1VJ TlQ2NF9PUCwNCj4gc2l6ZW9mKEVGSV9JRlJfVUlOVDY0KSkNCj4gDQo+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYs IFZhbHVlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVWludDY0LlZhbHVlID0gVmFsdWUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVy biBzZWxmLlVpbnQ2NC5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5VaW50NjQNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBJZnJRdWVzdGlvblJlZjEoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYu UXVlc3Rpb25SZWYxID0gRUZJX0lGUl9RVUVTVElPTl9SRUYxKCkNCj4gDQo+ICsgICAgICAgIElm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuUXVlc3Rpb25SZWYxLkhlYWRlciwNCj4gRUZJ X0lGUl9RVUVTVElPTl9SRUYxX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGlu ZU5vKQ0KPiANCj4gKyAgICAgICAgc2VsZi5RdWVzdGlvblJlZjEuUXVlc3Rpb25JZCA9IEVGSV9R VUVTVElPTl9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWFkZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5RdWVzdGlvblJlZjEuSGVhZGVyDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQsIFZhcklk U3RyLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJ T05fSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmMS5RdWVz dGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBnRm9ybVBrZy5Bc3NpZ25QZW5kaW5nKFZhcklkU3RyLCBzZWxmLlF1ZXN0aW9uUmVmMSwg TGluZU5vLCAibm8NCj4gcXVlc3Rpb24gcmVmZXJlZCIpDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUXVlc3Rpb25SZWYx DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyUXVlc3Rpb25SZWYyKElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ IA0KPiArICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmMiA9IEVGSV9JRlJfUVVFU1RJT05fUkVGMigp DQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlF1ZXN0aW9u UmVmMi5IZWFkZXIsDQo+IEVGSV9JRlJfUVVFU1RJT05fUkVGMl9PUCkNCj4gDQo+ICsgICAgICAg IHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRl cihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlF1ZXN0aW9uUmVmMi5IZWFkZXIN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi5RdWVzdGlvblJlZjINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJ ZnJRdWVzdGlvblJlZjMoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzID0g RUZJX0lGUl9RVUVTVElPTl9SRUYzKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5p dF9fKA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYsIHNlbGYuUXVlc3Rpb25SZWYzLkhlYWRlciwg RUZJX0lGUl9RVUVTVElPTl9SRUYzX09QLA0KPiBzaXplb2YoRUZJX0lGUl9RVUVTVElPTl9SRUYz KQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgcmV0dXJuIHNlbGYuUXVlc3Rpb25SZWYzLkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlF1ZXN0aW9uUmVm Mw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclF1ZXN0aW9uUmVmM18yKElmckxp bmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6 DQo+IA0KPiArICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmM18yID0gRUZJX0lGUl9RVUVTVElPTl9S RUYzXzIoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oDQo+IA0KPiArICAg ICAgICAgICAgc2VsZiwNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmM18yLkhl YWRlciwNCj4gDQo+ICsgICAgICAgICAgICBFRklfSUZSX1FVRVNUSU9OX1JFRjNfT1AsDQo+IA0K PiArICAgICAgICAgICAgc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGM18yKSwNCj4gDQo+ICsg ICAgICAgICkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsg ICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzIuRGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURfSU5W QUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RGV2aWNlUGF0aChzZWxmLCBEZXZpY2VQ YXRoKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzIuRGV2aWNlUGF0aCA9IERl dmljZVBhdGgNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLlF1ZXN0aW9uUmVmM18yLkhlYWRlcg0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlF1 ZXN0aW9uUmVmM18yDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyUXVlc3Rpb25S ZWYzXzMoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzMgPSBFRklfSUZS X1FVRVNUSU9OX1JFRjNfMygpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUXVlc3Rp b25SZWYzXzMuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVG M19PUCwNCj4gDQo+ICsgICAgICAgICAgICBzaXplb2YoRUZJX0lGUl9RVUVTVElPTl9SRUYzXzMp LA0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiANCj4gKyAgICAgICAgc2VsZi5RdWVzdGlvblJlZjNfMy5EZXZpY2VQYXRoID0gRUZJX1NU UklOR19JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmM18zLkd1aWQg PSBFRklfR1VJRCgwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwNCj4gMCkp DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgp Og0KPiANCj4gKyAgICAgICAgc2VsZi5RdWVzdGlvblJlZjNfMy5EZXZpY2VQYXRoID0gRGV2aWNl UGF0aA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0R3VpZChzZWxmLCBHdWlkKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzMuR3VpZCA9IEd1aWQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlF1 ZXN0aW9uUmVmM18zLkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxm KToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlF1ZXN0aW9uUmVmM18zDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyUnVsZVJlZihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5SdWxlUmVmID0gRUZJX0lGUl9SVUxFX1JFRigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLlJ1bGVSZWYuSGVhZGVyLCBFRklfSUZSX1JVTEVfUkVGX09Q KQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKyAgICAgICAg c2VsZi5SdWxlUmVmLlJ1bGVJZCA9IEVGSV9SVUxFX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5S dWxlUmVmLlJ1bGVJZCA9IFJ1bGVJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVy KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuUnVsZVJlZi5IZWFkZXINCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4g c2VsZi5SdWxlUmVmDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZyU3RyaW5nUmVm MShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBM aW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5TdHJpbmdSZWYxID0gRUZJX0lGUl9TVFJJTkdf UkVGMSgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlN0 cmluZ1JlZjEuSGVhZGVyLA0KPiBFRklfSUZSX1NUUklOR19SRUYxX09QKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TdHJpbmdSZWYx LlN0cmluZ0lkID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBTZXRTdHJpbmdJZChzZWxmLCBTdHJpbmdJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLlN0cmlu Z1JlZjEuU3RyaW5nSWQgPSBTdHJpbmdJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVh ZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuU3RyaW5nUmVmMS5IZWFkZXIN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi5TdHJpbmdSZWYxDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgSWZy U3RyaW5nUmVmMihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5TdHJpbmdSZWYyID0gRUZJX0lG Ul9TVFJJTkdfUkVGMigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLlN0cmluZ1JlZjIuSGVhZGVyLA0KPiBFRklfSUZSX1NUUklOR19SRUYyX09QKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuU3RyaW5nUmVm Mi5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiAr ICAgICAgICByZXR1cm4gc2VsZi5TdHJpbmdSZWYyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgSWZyVGhpcyhJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5UaGlzID0gRUZJX0lGUl9U SElTKCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVGhp cy5IZWFkZXIsIEVGSV9JRlJfVEhJU19PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5v KExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLlRoaXMuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVGhpcw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclNlY3VyaXR5KElmckxpbmUsIElmck9wSGVhZGVy KToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAg ICBzZWxmLlNlY3VyaXR5ID0gRUZJX0lGUl9TRUNVUklUWSgpDQo+IA0KPiArICAgICAgICBJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlNlY3VyaXR5LkhlYWRlciwgRUZJX0lGUl9TRUNV UklUWV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsg ICAgICAgIHNlbGYuU2VjdXJpdHkuUGVybWlzc2lvbnMgPSBFRklfR1VJRCgwLCAwLCAwLCBHdWlk QXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwNCj4gMCkpDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBTZXRQZXJtaXNzaW9ucyhzZWxmLCBQZXJtaXNzaW9ucyk6DQo+IA0KPiArICAgICAgICBzZWxm LlNlY3VyaXR5LlBlcm1pc3Npb25zID0gUGVybWlzc2lvbnMNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlNlY3VyaXR5 LkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLlNlY3VyaXR5DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgSWZyR2V0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLkdldCA9IEVGSV9JRlJfR0VUKCkN Cj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuR2V0LkhlYWRl ciwgRUZJX0lGUl9HRVRfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8p DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRWYXJJbmZvKHNlbGYsIEJhc2VJbmZvOiBFRklf VkFSU1RPUkVfSU5GTyk6DQo+IA0KPiArICAgICAgICBzZWxmLkdldC5WYXJTdG9yZUlkID0gQmFz ZUluZm8uVmFyU3RvcmVJZA0KPiANCj4gKyAgICAgICAgc2VsZi5HZXQuVmFyU3RvcmVJbmZvLlZh ck5hbWUgPSBCYXNlSW5mby5JbmZvLlZhck5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuR2V0LlZh clN0b3JlSW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KPiANCj4gKyAg ICAgICAgc2VsZi5HZXQuVmFyU3RvcmVUeXBlID0gQmFzZUluZm8uVmFyVHlwZQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuR2V0LkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLkdldA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIElmclNldChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5TZXQgPSBFRklfSUZSX1NFVCgp DQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlNldC5IZWFk ZXIsIEVGSV9JRlJfU0VUX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFySW5mbyhzZWxmLCBCYXNlSW5mbzogRUZJ X1ZBUlNUT1JFX0lORk8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5TZXQuVmFyU3RvcmVJZCA9IEJh c2VJbmZvLlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0LlZhclN0b3JlSW5mby5W YXJOYW1lID0gQmFzZUluZm8uSW5mby5WYXJOYW1lDQo+IA0KPiArICAgICAgICBzZWxmLlNldC5W YXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0gQmFzZUluZm8uSW5mby5WYXJPZmZzZXQNCj4gDQo+ICsg ICAgICAgIHNlbGYuU2V0LlZhclN0b3JlVHlwZSA9IEJhc2VJbmZvLlZhclR5cGUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLlNldC5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5TZXQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyBJZnJUcnVlKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLlRydWVPcCA9IEVGSV9JRlJf VFJVRSgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRy dWVPcC5IZWFkZXIsIEVGSV9JRlJfVFJVRV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGlu ZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLlRydWVPcC5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5UcnVlT3AN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJGYWxzZShJZnJMaW5lLCBJZnJPcEhl YWRlcik6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAg ICAgICAgc2VsZi5GYWxzZU9wID0gRUZJX0lGUl9UUlVFKCkNCj4gDQo+ICsgICAgICAgIElmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRmFsc2VPcC5IZWFkZXIsIEVGSV9JRlJfRkFMU0Vf T1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5G YWxzZU9wLkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLkZhbHNlT3ANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBJZnJPbmUoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuT25lID0gRUZJX0lGUl9P TkUoKQ0KPiANCj4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5PbmUu SGVhZGVyLCBFRklfSUZSX09ORV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExp bmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLk9uZS5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdl dEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5PbmUNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJPbmVzKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLk9u ZXMgPSBFRklfSUZSX09ORSgpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLk9uZXMuSGVhZGVyLCBFRklfSUZSX09ORVNfT1ApDQo+IA0KPiArICAgICAgICBz ZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWFkZXIo c2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5PbmVzLkhlYWRlcg0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxm Lk9uZXMNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJaZXJvKElmckxpbmUsIElm ck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0K PiArICAgICAgICBzZWxmLlplcm8gPSBFRklfSUZSX1pFUk8oKQ0KPiANCj4gKyAgICAgICAgSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5aZXJvLkhlYWRlciwgRUZJX0lGUl9aRVJPX09Q KQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuWmVy by5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiAr ICAgICAgICByZXR1cm4gc2VsZi5aZXJvDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg SWZyVW5kZWZpbmVkKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLlVuZGVmaW5lZCA9IEVGSV9J RlJfWkVSTygpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LlVuZGVmaW5lZC5IZWFkZXIsDQo+IEVGSV9JRlJfVU5ERUZJTkVEX09QKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVh ZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuVW5kZWZpbmVkLkhlYWRlcg0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJl dHVybiBzZWxmLlVuZGVmaW5lZA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclZl cnNpb24oSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVmVyc2lvbiA9IEVGSV9JRlJfVkVSU0lP TigpDQo+IA0KPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlZlcnNp b24uSGVhZGVyLCBFRklfSUZSX1ZFUlNJT05fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5WZXJzaW9uLkhlYWRlcg0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlZlcnNp b24NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJMZW5ndGgoSWZyTGluZSwgSWZy T3BIZWFkZXIpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuTGVuZ3RoID0gRUZJX0lGUl9MRU5HVEgoKQ0KPiANCj4gKyAgICAgICAg SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5MZW5ndGguSGVhZGVyLCBFRklfSUZSX0xF TkdUSF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5MZW5ndGgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJZnJCaXRXaXNlTm90KElm ckxpbmUsIElmck9wSGVhZGVyKToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQo+IA0KPiArICAgICAgICBzZWxmLkJpdFdpc2VOb3QgPSBFRklfSUZSX0JJVFdJU0VfTk9U KCkNCj4gDQo+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuQml0V2lz ZU5vdC5IZWFkZXIsDQo+IEVGSV9JRlJfQklUV0lTRV9OT1RfT1ApDQo+IA0KPiArICAgICAgICBz ZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuQml0V2lzZU5vdA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEV4cHJlc3Npb25JbmZvOg0KPiANCj4gKyAgICBkZWYgX19pbml0 X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLlJvb3RMZXZlbCA9IDANCj4gDQo+ICsgICAg ICAgIHNlbGYuRXhwT3BDb3VudCA9IDANCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJQcmVQcm9jZXNzLnB5DQo+IGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyUHJlUHJvY2Vzcy5weQ0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5lZDQ1NGNkY2YzDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyUHJlUHJvY2Vz cy5weQ0KPiBAQCAtMCwwICsxLDI0NSBAQA0KPiArIyMgQGZpbGUNCj4gDQo+ICsjIFRoZSBmaWxl IGlzIHVzZWQgdG8gcHJlcHJvY2VzcyB0aGUgc291cmNlIGZpbGUuDQo+IA0KPiArIw0KPiANCj4g KyMgQ29weXJpZ2h0IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gDQo+ICsjIw0KPiANCj4gKw0KPiANCj4gK2ltcG9ydCByZQ0KPiANCj4gK2lt cG9ydCBDb21tb24uRWRrTG9nZ2VyIGFzIEVka0xvZ2dlcg0KPiANCj4gK2Zyb20gYW50bHI0IGlt cG9ydCAqDQo+IA0KPiArZnJvbSBwYXRobGliIGltcG9ydCBQYXRoDQo+IA0KPiArZnJvbSBDb21t b24uQnVpbGRUb29sRXJyb3IgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmckN0 eXBlcyBpbXBvcnQgRUZJX0dVSUQNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmclV0aWxpdHkg aW1wb3J0IFZmclZhckRhdGFUeXBlREINCj4gDQo+ICtmcm9tIENvbW1vbi5Mb25nRmlsZVBhdGhT dXBwb3J0IGltcG9ydCBMb25nRmlsZVBhdGgNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmckNv bW1vbiBpbXBvcnQgR1VJRF9CVUZGRVJfVkFMVUVfTEVODQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgT3B0aW9uczoNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4g KyAgICAgICAgIyBvcGVuL2Nsb3NlIFZmckNvbXBpbGVyDQo+IA0KPiArICAgICAgICBzZWxmLkxh bnVjaFZmckNvbXBpbGVyID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIHNlbGYuTW9kdWxlTmFtZSA9 IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuV29ya3NwYWNlID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5WRlJQUCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5wdXRGaWxlTmFtZSA9 IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuQmFzZUZpbGVOYW1lID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgc2VsZi5JbmNsdWRlUGF0aHMgPSBbXQ0KPiANCj4gKyAgICAgICAgc2VsZi5PdXRwdXRE aXJlY3RvcnkgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkRlYnVnRGlyZWN0b3J5ID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5DcmVhdGVSZWNvcmRMaXN0RmlsZSA9IFRydWUNCj4gDQo+ ICsgICAgICAgIHNlbGYuUmVjb3JkTGlzdEZpbGVOYW1lID0gTm9uZQ0KPiANCj4gKyAgICAgICAg c2VsZi5DcmVhdGVJZnJQa2dGaWxlID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5Qa2dPdXRw dXRGaWxlTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuQ091dHB1dEZpbGVOYW1lID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5Ta2lwQ1ByZXByb2Nlc3NvciA9IFRydWUNCj4gDQo+ ICsgICAgICAgIHNlbGYuQ1ByZXByb2Nlc3Nvck9wdGlvbnMgPSBOb25lDQo+IA0KPiArICAgICAg ICBzZWxmLkNQcm9jZXNzZWRWZnJGaWxlTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYu SGFzT3ZlcnJpZGVDbGFzc0d1aWQgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi5PdmVycmlk ZUNsYXNzR3VpZCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuV2FybmluZ0FzRXJyb3IgPSBG YWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi5BdXRvRGVmYXVsdCA9IEZhbHNlDQo+IA0KPiArICAg ICAgICBzZWxmLkNoZWNrRGVmYXVsdCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxmLkNyZWF0 ZVlhbWxGaWxlID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5ZYW1sRmlsZU5hbWUgPSBOb25l DQo+IA0KPiArICAgICAgICBzZWxmLkNyZWF0ZUpzb25GaWxlID0gVHJ1ZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5Kc29uRmlsZU5hbWUgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLlVuaVN0ckRl ZkZpbGVOYW1lID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5ZYW1sT3V0cHV0RmlsZU5hbWUg PSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLlVuaVN0ckRpc3BsYXlGaWxlID0gTm9uZQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEtWOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgS2V5LCBWYWx1ZSkgLT4gTm9uZToNCj4gDQo+ICsgICAgICAgIHNlbGYuS2V5ID0gS2V5 DQo+IA0KPiArICAgICAgICBzZWxmLlZhbHVlID0gVmFsdWUNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBWYWx1ZURCOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUHJlVmFs LCBQb3N0VmFsKSAtPiBOb25lOg0KPiANCj4gKyAgICAgICAgc2VsZi5QcmVWYWwgPSBQcmVWYWwN Cj4gDQo+ICsgICAgICAgIHNlbGYuUG9zdFZhbCA9IFBvc3RWYWwNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBQcmVQcm9jZXNzREI6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBPcHRpb25zOiBPcHRpb25zKSAtPiBOb25lOg0KPiANCj4gKyAgICAgICAgc2VsZi5PcHRpb25z ID0gT3B0aW9ucw0KPiANCj4gKyAgICAgICAgc2VsZi5WZnJWYXJEYXRhVHlwZURCID0gVmZyVmFy RGF0YVR5cGVEQigpDQo+IA0KPiArICAgICAgICBzZWxmLlByZXByb2Nlc3NlZCA9IEZhbHNlDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBQcmVwcm9jZXNzKHNlbGYpOg0KPiANCj4gKyAgICAgICAg c2VsZi5IZWFkZXJGaWxlcyA9IHNlbGYuX0V4dHJhY3RIZWFkZXJGaWxlcygpDQo+IA0KPiArICAg ICAgICAjIFJlYWQgVW5pIHN0cmluZyB0b2tlbi9pZCBkZWZpbml0aW9ucyBpbiBTdHJEZWYuaCBm aWxlDQo+IA0KPiArICAgICAgICBzZWxmLlVuaURpY3QgPSBzZWxmLl9HZXRVbmlEaWN0cygpDQo+ IA0KPiArICAgICAgICAjIFJlYWQgZGVmaW5pdGlvbnMgaW4gdmZyIGZpbGUNCj4gDQo+ICsgICAg ICAgIHNlbGYuVmZyRGljdCA9IHNlbGYuX0dldFZmckRpY3RzKCkNCj4gDQo+ICsgICAgICAgIHNl bGYuUHJlcHJvY2Vzc2VkID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgVHJhbnNWYWx1 ZShzZWxmLCBWYWx1ZSk6DQo+IA0KPiArICAgICAgICBpZiB0eXBlKFZhbHVlKSA9PSBFRklfR1VJ RDoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmFsdWUNCj4gDQo+ICsgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgU3RyVmFsdWUgPSBzdHIoVmFsdWUpDQo+IA0KPiArICAgICAg ICAgICAgaWYgc2VsZi5fSXNEaWdpdChTdHJWYWx1ZSk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLl9Ub0RpZ2l0KFN0clZhbHVlKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIEd1aWRMaXN0ID0gcmUuZmluZGFsbChyIjB4WzAtOWEt ZkEtRl0rIiwgU3RyVmFsdWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIEd1aWRMaXN0ID0gW2lu dChudW0sIDE2KSBmb3IgbnVtIGluIEd1aWRMaXN0XQ0KPiANCj4gKyAgICAgICAgICAgICAgICBH dWlkID0gRUZJX0dVSUQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBHdWlkLmZyb21fbGlzdChH dWlkTGlzdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEd1aWQNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFJldmVydFZhbHVlKHNlbGYsIFZhbHVlKSAtPiBzdHI6DQo+IA0KPiArICAg ICAgICBpZiB0eXBlKFZhbHVlKSA9PSBFRklfR1VJRDoNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmFsdWUudG9fc3RyaW5nKCkNCj4gDQo+ICsgICAgICAgIGVsaWYgKCIweCIgaW4gVmFsdWUp IG9yICgiMFgiIGluIFZhbHVlKToNCj4gDQo+ICsgICAgICAgICAgICBTdHJWYWx1ZSA9IGhleChW YWx1ZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgU3RyVmFsdWUg PSBzdHIoVmFsdWUpDQo+IA0KPiArICAgICAgICByZXR1cm4gU3RyVmFsdWUNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIERpc3BsYXlWYWx1ZShzZWxmLCBWYWx1ZSwgRmxhZz1GYWxzZSk6DQo+IA0K PiArICAgICAgICBpZiB0eXBlKFZhbHVlKSA9PSBFRklfR1VJRDoNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmFsdWUudG9fc3RyaW5nKCkNCj4gDQo+ICsgICAgICAgIFN0clZhbHVlID0gc3Ry KFZhbHVlKQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fSXNEaWdpdChTdHJWYWx1ZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgRmxhZzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIGYi U1RSSU5HX1RPS0VOKHtTdHJWYWx1ZX0pIg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBpbnQo U3RyVmFsdWUsIDApDQo+IA0KPiArICAgICAgICByZXR1cm4gU3RyVmFsdWUNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIEdldEtleShzZWxmLCBWYWx1ZSk6DQo+IA0KPiArICAgICAgICBpZiB0eXBl KFZhbHVlKSA9PSBFRklfR1VJRDoNCj4gDQo+ICsgICAgICAgICAgICBWYWx1ZSA9IFZhbHVlLnRv X3N0cmluZygpDQo+IA0KPiArICAgICAgICAgICAgaWYgVmFsdWUgaW4gc2VsZi5VbmlEaWN0Og0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5VbmlEaWN0W1ZhbHVlXQ0KPiANCj4g KyAgICAgICAgICAgIGlmIFZhbHVlIGluIHNlbGYuVmZyRGljdDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuVmZyRGljdFtWYWx1ZV0NCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgVmFsdWUgPSAiMHglMDR4IiAlIFZhbHVlDQo+IA0KPiArICAgICAg ICAgICAgVmFsdWUgPSBWYWx1ZVs6Ml0gKyBWYWx1ZVsyOl0udXBwZXIoKQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIFZhbHVlIGluIHNlbGYuVW5pRGljdDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuVW5pRGljdFtWYWx1ZV0NCj4gDQo+ICsgICAgICAgIHJldHVybiBWYWx1ZQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgX0V4dHJhY3RIZWFkZXJGaWxlcyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIEZpbGVOYW1lID0gc2VsZi5PcHRpb25zLklucHV0RmlsZU5hbWUNCj4gDQo+ICsg ICAgICAgIEhlYWRlckZpbGVzID0gW10NCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAg ICAgICAgICB3aXRoIG9wZW4oTG9uZ0ZpbGVQYXRoKEZpbGVOYW1lKSwgbW9kZT0iciIpIGFzIGZG aWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBsaW5lcyA9IGZGaWxlLnJlYWRsaW5lcygpDQo+ IA0KPiArICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6DQo+IA0KPiArICAgICAgICAgICAg ICAgIGlmICIjaW5jbHVkZSIgaW4gbGluZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlm IGxpbmUuZmluZCgiPCIpICE9IC0xOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEhl YWRlckZpbGUgPSBsaW5lW2xpbmUuZmluZCgiPCIpICsgMSA6IGxpbmUuZmluZCgiPiIpXQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckZpbGVzLmFwcGVuZChIZWFkZXJGaWxl KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLmZpbmQoJyInKSAhPSAtMToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBsID0gbGluZS5maW5kKCciJykgKyAxDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgciA9IGwgKyBsaW5lW2w6XS5maW5kKCciJykN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJGaWxlID0gbGluZVtsOnJdDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyRmlsZXMuYXBwZW5kKEhlYWRlckZp bGUpDQo+IA0KPiArICAgICAgICBleGNlcHQgRXhjZXB0aW9uOg0KPiANCj4gKyAgICAgICAgICAg IEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwg RklMRV9QQVJTRV9GQUlMVVJFLCAiRmlsZSBwYXJzZSBmYWlsZWQgZm9yICVzIiAlDQo+IEZpbGVO YW1lLCBOb25lDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIEhl YWRlckZpbGVzDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfR2V0VW5pRGljdHMoc2VsZik6DQo+ IA0KPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuVW5pU3RyRGVmRmlsZU5hbWUgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9wdGlvbnMuVW5pU3RyRGVmRmlsZU5hbWUgPSBzdHIo DQo+IA0KPiArICAgICAgICAgICAgICAgIFBhdGgoc2VsZi5PcHRpb25zLkRlYnVnRGlyZWN0b3J5 KSAvDQo+IGYie3NlbGYuT3B0aW9ucy5Nb2R1bGVOYW1lfVN0ckRlZnMuaCINCj4gDQo+ICsgICAg ICAgICAgICApDQo+IA0KPiArICAgICAgICAjIGZpbmQgVW5pRmlsZQ0KPiANCj4gKyAgICAgICAg RmlsZU5hbWUgPSBzZWxmLk9wdGlvbnMuVW5pU3RyRGVmRmlsZU5hbWUNCj4gDQo+ICsgICAgICAg IFVuaURpY3QgPSB7fQ0KPiANCj4gKyAgICAgICAgc2VsZi5fUGFyc2VEZWZpbmVzKEZpbGVOYW1l LCBVbmlEaWN0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIFVuaURpY3QNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIF9HZXRWZnJEaWN0cyhzZWxmKToNCj4gDQo+ICsgICAgICAgIFZmckRpY3QgPSB7 fQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5PcHRpb25zLkxhbnVjaFZmckNvbXBpbGVyOg0KPiAN Cj4gKyAgICAgICAgICAgIEZpbGVOYW1lID0gc2VsZi5PcHRpb25zLklucHV0RmlsZU5hbWUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9QYXJzZURlZmluZXMoRmlsZU5hbWUsIFZmckRpY3QsIFRy dWUpDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyRGljdA0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgX0lzRGlnaXQoc2VsZiwgU3RyaW5nKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBTdHJpbmcu aXNkaWdpdCgpIG9yICgNCj4gDQo+ICsgICAgICAgICAgICBTdHJpbmcuc3RhcnRzd2l0aCgoIjB4 IiwgIjBYIikpDQo+IA0KPiArICAgICAgICAgICAgYW5kIGFsbChjaGFyIGluICIwMTIzNDU2Nzg5 QUJDREVGYWJjZGVmIiBmb3IgY2hhciBpbiBTdHJpbmdbMjpdKQ0KPiANCj4gKyAgICAgICAgKQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgX1RvRGlnaXQoc2VsZiwgU3RyaW5nKToNCj4gDQo+ICsg ICAgICAgIGlmIFN0cmluZy5zdGFydHN3aXRoKCgiMHgiLCAiMFgiKSk6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIGludChTdHJpbmcsIDE2KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGludChT dHJpbmcpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfUGFyc2VEZWZpbmVzKHNlbGYsIEZpbGVO YW1lLCBEaWN0LCBJc1ZmckRlZj1GYWxzZSk6DQo+IA0KPiArICAgICAgICBQYXR0ZXJuID0gciIj ZGVmaW5lXHMrKFx3KylccysoLio/KSg/Oig/PCFcXClcbnwkKSINCj4gDQo+ICsgICAgICAgIHdp dGggb3BlbihGaWxlTmFtZSkgYXMgRmlsZToNCj4gDQo+ICsgICAgICAgICAgICBDb250ZW50ID0g RmlsZS5yZWFkKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE1hdGNoZXMgPSByZS5maW5kYWxs KFBhdHRlcm4sIENvbnRlbnQsIHJlLkRPVEFMTCkNCj4gDQo+ICsgICAgICAgIGZvciBNYXRjaCBp biBNYXRjaGVzOg0KPiANCj4gKyAgICAgICAgICAgIEtleSA9IE1hdGNoWzBdDQo+IA0KPiArICAg ICAgICAgICAgVmFsdWUgPSByZS5zdWIociJccysiLCAiICIsIE1hdGNoWzFdLnJlcGxhY2UoIlxc XG4iLCAiIikuc3RyaXAoKSkNCj4gDQo+ICsgICAgICAgICAgICBTdWJEZWZpbmVNYXRjaGVzID0g cmUuZmluZGFsbCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgciIjZGVmaW5lXHMrKFx3Kylccyso Lio/KSg/Oig/PCFcXClcbnwkKSIsIFZhbHVlLCByZS5ET1RBTEwNCj4gDQo+ICsgICAgICAgICAg ICApDQo+IA0KPiArICAgICAgICAgICAgaWYgU3ViRGVmaW5lTWF0Y2hlczoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZm9yIFN1Yk1hdGNoIGluIFN1YkRlZmluZU1hdGNoZXM6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBTdWJLZXkgPSBTdWJNYXRjaFswXQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgU3ViVmFsdWUgPSByZS5zdWIociJccysiLCAiICIsIFN1Yk1hdGNoWzFdLnJlcGxh Y2UoIlxcXG4iLA0KPiAiIikuc3RyaXAoKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlm IFN1YlZhbHVlLmZpbmQoIi8vIikgIT0gLTE6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgU3ViVmFsdWUgPSBTdWJWYWx1ZS5zcGxpdCgiLy8iKVswXS5zdHJpcCgpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBTdWJWYWx1ZS5maW5kKCJ7IikgIT0gLTE6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgR3VpZExpc3QgPSByZS5maW5kYWxsKHIiMHhb MC05YS1mQS1GXSsiLCBTdWJWYWx1ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBH dWlkTGlzdCA9IFtpbnQobnVtLCAxNikgZm9yIG51bSBpbiBHdWlkTGlzdF0NCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBTdWJWYWx1ZSA9IEVGSV9HVUlEKCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBpZiBsZW4oR3VpZExpc3QpID09IEdVSURfQlVGRkVSX1ZBTFVFX0xF TjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViVmFsdWUuZnJvbV9saXN0 KEd1aWRMaXN0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5P cHRpb25zLkxhbnVjaFZmckNvbXBpbGVyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICMgR1VJRCBpcyB1bmlxdWUsIHRvIHRyYW5zZmVyIEdVSUQgUGFyc2VkIFZhbHVlIC0+IEdVSUQN Cj4gRGVmaW5lZCBLZXkuDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgSXNWZnJE ZWY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2F2ZSBkZWYgaW5mbyBm b3IgeWFtbCBnZW5lcmF0aW9uDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERp Y3RbU3ViS2V5XSA9IFN1YlZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdHJhbmZlciB2YWx1ZSB0byBrZXkgZm9yIHlhbWwgZ2VuZXJhdGlvbg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFN1YlZhbHVlKSA9PSBFRklfR1VJRDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpY3RbU3ViVmFsdWUudG9fc3Ry aW5nKCldID0gU3ViS2V5DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViVmFsdWUgPSAoDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoU3ViVmFsdWUpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFN1YlZhbHVlKSAhPSBFRklfR1VJRA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBTdWJWYWx1ZS50b19z dHJpbmcoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERpY3RbU3ViVmFsdWVdID0gU3ViS2V5DQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVmFsdWUuZmluZCgi Ly8iKSAhPSAtMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gVmFsdWUuc3Bs aXQoIi8vIilbMF0uc3RyaXAoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBWYWx1ZS5maW5k KCJ7IikgIT0gLTE6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBHdWlkTGlzdCA9IHJlLmZp bmRhbGwociIweFswLTlhLWZBLUZdKyIsIFZhbHVlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgR3VpZExpc3QgPSBbaW50KG51bSwgMTYpIGZvciBudW0gaW4gR3VpZExpc3RdDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IEVGSV9HVUlEKCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGlmIGxlbihHdWlkTGlzdCkgPT0gR1VJRF9CVUZGRVJfVkFMVUVfTEVOOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlLmZyb21fbGlzdChHdWlkTGlzdCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5PcHRpb25zLkxhbnVjaFZmckNv bXBpbGVyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgIyBHVUlEIGlzIHVuaXF1ZSwgdG8g dHJhbnNmZXIgR1VJRCBQYXJzZWQgVmFsdWUgLT4gR1VJRCBEZWZpbmVkDQo+IEtleS4NCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIElzVmZyRGVmOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIERpY3RbS2V5XSA9IFZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgaWYgdHlwZShWYWx1ZSkgPT0gRUZJX0dVSUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERpY3RbVmFsdWUudG9fc3RyaW5nKCldID0gS2V5DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0g c3RyKFZhbHVlKSBpZiB0eXBlKFZhbHVlKSAhPSBFRklfR1VJRCBlbHNlDQo+IFZhbHVlLnRvX3N0 cmluZygpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRGljdFtWYWx1ZV0gPSBLZXkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9GaW5kSW5jbHVkZUhlYWRlckZpbGUoc2VsZiwgSW5j bHVkZVBhdGhzLCBGaWxlKToNCj4gDQo+ICsgICAgICAgIEZpbGVMaXN0ID0gW10NCj4gDQo+ICsg ICAgICAgIE5hbWUgPSBGaWxlLnNwbGl0KCIvIilbLTFdDQo+IA0KPiArICAgICAgICBmb3IgU3Rh cnQgaW4gSW5jbHVkZVBhdGhzOg0KPiANCj4gKyAgICAgICAgICAgIE1hdGNoZXMgPSBsaXN0KFBh dGgoU3RhcnQpLnJnbG9iKE5hbWUpKQ0KPiANCj4gKyAgICAgICAgICAgIGZvciBNYXRjaEZpbGUg aW4gTWF0Y2hlczoNCj4gDQo+ICsgICAgICAgICAgICAgICAgRmlsZUxpc3QuYXBwZW5kKHN0cihN YXRjaEZpbGUpKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxpc3Qoc2V0KEZpbGVMaXN0KSkNCj4g DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJU cmVlLnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyVHJlZS5w eQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mYWEyZTQ2Nzdk DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvSWZyVHJlZS5weQ0KPiBAQCAtMCwwICsxLDExMzIgQEANCj4gKyMjIEBmaWxlDQo+IA0K PiArIyBUaGUgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB2ZnIgdHJlZSBzdHJ1Y3R1cmUgYW5kIHJl bGF0ZWQgb3BlcmF0aW9ucy4NCj4gDQo+ICsjDQo+IA0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMjIt LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArIyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKyMjDQo+ IA0KPiArDQo+IA0KPiAraW1wb3J0IENvbW1vbi5FZGtMb2dnZXIgYXMgRWRrTG9nZ2VyDQo+IA0K PiArZnJvbSBDb21tb24uQnVpbGRUb29sRXJyb3IgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNv bXBpbGVyLklmckN0eXBlcyBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyRm9y bVBrZyBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVXRpbGl0eSBpbXBvcnQg Z1ZmckJ1ZmZlckNvbmZpZw0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyUHJlUHJvY2VzcyBp bXBvcnQgUHJlUHJvY2Vzc0RCLCBPcHRpb25zDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArVkZS X0NPTVBJTEVSX1ZFUlNJT04gPSAiMi4wMSAoVUVGSSAyLjQpIg0KPiANCj4gK0JVSUxEX1ZFUlNJ T04gPSAiRGV2ZWxvcGVyIEJ1aWxkIGJhc2VkIG9uIFJldmlzaW9uOiBVbmtub3duIg0KPiANCj4g K0JZVEVTX1BSRV9MSU5FID0gMHgxMA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyMgSWZyIHJl bGF0ZWQgSW5mbyAtPiBjdHlwZXMgb2JqDQo+IA0KPiArIyBjb25kaXRpb25hbCBJbmZvDQo+IA0K PiArIyBTdHJ1Y3R1cmUgSW5mbw0KPiANCj4gK2NsYXNzIElmclRyZWVOb2RlOg0KPiANCj4gKyAg ICBkZWYgX19pbml0X18oc2VsZiwgT3BDb2RlPU5vbmUsIERhdGE9Tm9uZSwgQnVmZmVyPU5vbmUs DQo+IFBvc2l0aW9uPU5vbmUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5PcENvZGUgPSBPcENvZGUN Cj4gDQo+ICsgICAgICAgIHNlbGYuRGF0YSA9IERhdGENCj4gDQo+ICsgICAgICAgIHNlbGYuQnVm ZmVyID0gQnVmZmVyDQo+IA0KPiArICAgICAgICBzZWxmLlBvc2l0aW9uID0gUG9zaXRpb24NCj4g DQo+ICsgICAgICAgIHNlbGYuQ29uZGl0aW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5F eHByZXNzaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5EaWN0ID0ge30NCj4gDQo+ICsg ICAgICAgIHNlbGYuT2Zmc2V0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5QYXJlbnQgPSBO b25lDQo+IA0KPiArICAgICAgICBzZWxmLkNoaWxkID0gW10NCj4gDQo+ICsgICAgICAgIHNlbGYu TGV2ZWwgPSAtMQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgaGFzQ29uZGl0aW9uKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuQ29uZGl0aW9uDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBoYXNDaGlsZChzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLkNoaWxkID09 IFtdDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBpc0ZpbmFsQ2hpbGQoc2VsZik6DQo+IA0KPiAr ICAgICAgICBQYXJUcmVlID0gc2VsZi5QYXJlbnQNCj4gDQo+ICsgICAgICAgIGlmIFBhclRyZWUg YW5kIFBhclRyZWUuQ2hpbGRbLTFdID09IHNlbGY6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFRydWUNCj4gDQo+ICsgICAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgaW5zZXJ0Q2hpbGQoc2VsZiwgTmV3Tm9kZSwgcG9zOiBpbnQgPSBOb25lKToNCj4gDQo+ICsg ICAgICAgIGlmIE5ld05vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgbm90 IHBvczoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5DaGlsZC5hcHBlbmQoTmV3Tm9kZSkN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkNo aWxkLmluc2VydChwb3MsIE5ld05vZGUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgTmV3 Tm9kZS5QYXJlbnQgPSBzZWxmDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBpbnNlcnRSZWwoc2Vs ZiwgbmV3Tm9kZSk6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLlBhcmVudDoNCj4gDQo+ICsgICAg ICAgICAgICBwYXJlbnRUcmVlID0gc2VsZi5QYXJlbnQNCj4gDQo+ICsgICAgICAgICAgICBuZXdf aW5kZXggPSBwYXJlbnRUcmVlLkNoaWxkLmluZGV4KHNlbGYpICsgMQ0KPiANCj4gKyAgICAgICAg ICAgIHBhcmVudFRyZWUuQ2hpbGQuaW5zZXJ0KG5ld19pbmRleCwgbmV3Tm9kZSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuTmV4dFJlbCA9IG5ld05vZGUNCj4gDQo+ICsgICAgICAgIG5ld05vZGUuTGFz dFJlbCA9IHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGRlbGV0ZU5vZGUoc2VsZiwgZGVs ZXRla2V5OiBzdHIpOg0KPiANCj4gKyAgICAgICAgRmluZFN0YXR1cywgRGVsZXRlVHJlZSA9IHNl bGYuRmluZE5vZGUoZGVsZXRla2V5KQ0KPiANCj4gKyAgICAgICAgaWYgRmluZFN0YXR1czoNCj4g DQo+ICsgICAgICAgICAgICBwYXJlbnRUcmVlID0gRGVsZXRlVHJlZS5QYXJlbnQNCj4gDQo+ICsg ICAgICAgICAgICBsYXN0VHJlZSA9IERlbGV0ZVRyZWUuTGFzdFJlbA0KPiANCj4gKyAgICAgICAg ICAgIG5leHRUcmVlID0gRGVsZXRlVHJlZS5OZXh0UmVsDQo+IA0KPiArICAgICAgICAgICAgaWYg cGFyZW50VHJlZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaW5kZXggPSBwYXJlbnRUcmVlLkNo aWxkLmluZGV4KERlbGV0ZVRyZWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIGRlbCBwYXJlbnRU cmVlLkNoaWxkW2luZGV4XQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhc3RUcmVlIGFuZCBuZXh0 VHJlZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbGFzdFRyZWUuTmV4dFJlbCA9IG5leHRUcmVl DQo+IA0KPiArICAgICAgICAgICAgICAgIG5leHRUcmVlLkxhc3RSZWwgPSBsYXN0VHJlZQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgbGFzdFRyZWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGxh c3RUcmVlLk5leHRSZWwgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBuZXh0VHJlZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbmV4dFRyZWUuTGFzdFJlbCA9IE5vbmUNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gRGVsZXRlVHJlZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIE5vbmUN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtFeHBPcHMgPSBbDQo+IA0KPiArICAgIEVGSV9JRlJf RFVQX09QLA0KPiANCj4gKyAgICBFRklfSUZSX0VRX0lEX1ZBTF9PUCwNCj4gDQo+ICsgICAgRUZJ X0lGUl9RVUVTVElPTl9SRUYxX09QLA0KPiANCj4gKyAgICBFRklfSUZSX0VRX0lEX1ZBTF9PUCwN Cj4gDQo+ICsgICAgRUZJX0lGUl9FUV9JRF9JRF9PUCwNCj4gDQo+ICsgICAgRUZJX0lGUl9FUV9J RF9WQUxfTElTVF9PUCwNCj4gDQo+ICsgICAgRUZJX0lGUl9SVUxFX1JFRl9PUCwNCj4gDQo+ICsg ICAgRUZJX0lGUl9TVFJJTkdfUkVGMV9PUCwNCj4gDQo+ICsgICAgRUZJX0lGUl9USElTX09QLA0K PiANCj4gKyAgICBFRklfSUZSX1NFQ1VSSVRZX09QLA0KPiANCj4gKyAgICBFRklfSUZSX0dFVF9P UCwNCj4gDQo+ICsgICAgRUZJX0lGUl9UUlVFX09QLA0KPiANCj4gKyAgICBFRklfSUZSX0ZBTFNF X09QLA0KPiANCj4gKyAgICBFRklfSUZSX09ORV9PUCwNCj4gDQo+ICsgICAgRUZJX0lGUl9PTkVT X09QLA0KPiANCj4gKyAgICBFRklfSUZSX1pFUk9fT1AsDQo+IA0KPiArICAgIEVGSV9JRlJfVU5E RUZJTkVEX09QLA0KPiANCj4gKyAgICBFRklfSUZSX1ZFUlNJT05fT1AsDQo+IA0KPiArICAgIEVG SV9JRlJfVUlOVDY0X09QLA0KPiANCj4gKyAgICBFRklfSUZSX1FVRVNUSU9OX1JFRjJfT1AsDQo+ IA0KPiArICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCwNCj4gDQo+ICsgICAgRUZJX0lGUl9T RVRfT1AsDQo+IA0KPiArICAgIEVGSV9JRlJfREVGQVVMVFNUT1JFX09QLA0KPiANCj4gKyAgICBF RklfSUZSX09SX09QLA0KPiANCj4gK10NCj4gDQo+ICsNCj4gDQo+ICtEZWZhdWx0RGljdExpc3Qg PSBbXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIFJlQ29yZE5vZGUoU3RydWN0dXJl KToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFJlY29yZCwgTGluZU5vKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuUmVjb3JkID0gUmVjb3JkDQo+IA0KPiArICAgICAgICBzZWxmLkxpbmVO byA9IExpbmVObw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIElmclRyZWU6DQo+IA0K PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBSb290OiBJZnJUcmVlTm9kZSwgUHJlUHJvY2Vzc0RC OiBQcmVQcm9jZXNzREIsIE9wdGlvbnM6DQo+IE9wdGlvbnMpIC0+IE5vbmU6DQo+IA0KPiArICAg ICAgICBzZWxmLlJvb3QgPSBSb290DQo+IA0KPiArICAgICAgICBzZWxmLk9wdGlvbnMgPSBPcHRp b25zDQo+IA0KPiArICAgICAgICBzZWxmLlByZVByb2Nlc3NEQiA9IFByZVByb2Nlc3NEQg0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgR2VuQmluYXJ5RmlsZXMoc2VsZik6DQo+IA0KPiArICAgICAg ICBSZWNvcmRMaW5lcyA9IFtdDQo+IA0KPiArICAgICAgICBIcGtGaWxlID0gc2VsZi5PcHRpb25z LlBrZ091dHB1dEZpbGVOYW1lDQo+IA0KPiArICAgICAgICBDRmlsZSA9IHNlbGYuT3B0aW9ucy5D T3V0cHV0RmlsZU5hbWUNCj4gDQo+ICsgICAgICAgIExzdEZpbGUgPSBzZWxmLk9wdGlvbnMuUmVj b3JkTGlzdEZpbGVOYW1lDQo+IA0KPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQ3JlYXRlSWZy UGtnRmlsZToNCj4gDQo+ICsgICAgICAgICAgICAjIEdlbkJpbmFyeQ0KPiANCj4gKyAgICAgICAg ICAgIFBrZ0hkciA9IGdGb3JtUGtnLkJ1aWxkUGtnSGRyKCkNCj4gDQo+ICsgICAgICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHdpdGggb3BlbihIcGtGaWxlLCAid2IiKSBhcyBI cGs6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBIcGsud3JpdGUoZ0Zvcm1Qa2cuU3RydWN0 VG9TdHJlYW0oUGtnSGRyKSkNCj4gDQo+ICsgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCBmIkZpbGUg b3BlbiBmYWlsZWQgZm9yDQo+IHtIcGtGaWxlfToge2V9Ig0KPiANCj4gKyAgICAgICAgICAgICAg ICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgIyBHZW5DRmlsZQ0KPiANCj4gKyAgICAg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2l0aCBvcGVuKENGaWxlLCAidyIp IGFzIEM6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIvL1xuIikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIEMud3JpdGUoIi8vIiArICIgIiArICJETyBOT1QgRURJVCAt LSBhdXRvLWdlbmVyYXRlZCBmaWxlXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgQy53 cml0ZSgiLy9cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIvLyIgKyAi ICIgKyAiVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgdmZyY29tcGlsZXINCj4gdXRpbGl0 eVxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEMud3JpdGUoIi8vXG5cbiIpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBCYXNlTmFtZSA9ICJ1bnNpZ25lZCBjaGFyICIgKyBzZWxm Lk9wdGlvbnMuQmFzZUZpbGVOYW1lICsNCj4gIkJpbltdID0ge1xuIg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgQy53cml0ZShCYXNlTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IEMud3JpdGUoIiAgLy8gQVJSQVkgTEVOR1RIXG5cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBQa2dMZW5ndGggPSBQa2dIZHIuTGVuZ3RoICsgc2l6ZW9mKGNfdWludDMyKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgZm9yIEIgaW4gUGtnTGVuZ3RoLnRvX2J5dGVzKDQsIGJ5dGVv cmRlcj0ibGl0dGxlIiwgc2lnbmVkPVRydWUpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIEMud3JpdGUoIiAgMHglMDJYLCIgJSBCKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Qy53cml0ZSgiXG5cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIgIC8v IFBBQ0tBR0UgSEVBREVSXG5cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBIZWFkZXJC dWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShQa2dIZHIpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBmb3IgQiBpbiBIZWFkZXJCdWZmZXI6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgQy53cml0ZSgiICAweCUwMlgsIiAlIEIpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBDLndyaXRlKCJcblxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEMud3JpdGUo IiAgLy8iICsgIiAiICsgIlBBQ0tBR0UgREFUQVxuXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5JbmRleCA9IDANCj4gDQo+ICsgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCBmIkZp bGUgb3BlbiBmYWlsZWQgZm9yIHtDRmlsZX06DQo+IHtlfSINCj4gDQo+ICsgICAgICAgICAgICAg ICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5PcHRpb25zLkNyZWF0ZVJlY29y ZExpc3RGaWxlOg0KPiANCj4gKyAgICAgICAgICAgICMgR2VuUmVjb3JkTGlzdA0KPiANCj4gKyAg ICAgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2l0aCBvcGVuKExzdEZpbGUs ICJ3IikgYXMgTHN0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTHN0LndyaXRlKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYiLy9cbi8vICBWRlIgY29tcGlsZXIgdmVyc2lv biB7VkZSX0NPTVBJTEVSX1ZFUlNJT059DQo+IHtCVUlMRF9WRVJTSU9OfVxuLy9cbiINCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCBm IkZpbGUgb3BlbiBmYWlsZWQgZm9yDQo+IHtMc3RGaWxlfToge2V9Ig0KPiANCj4gKyAgICAgICAg ICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9HZW5CaW5hcnlGaWxlc0Rm cyhzZWxmLlJvb3QsIEhwa0ZpbGUsIENGaWxlLCBSZWNvcmRMaW5lcykNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5DcmVhdGVJZnJQa2dGaWxlOg0KPiANCj4gKyAgICAg ICAgICAgICMgR2VuQ0ZpbGUNCj4gDQo+ICsgICAgICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHdpdGggb3BlbihDRmlsZSwgImEiKSBhcyBDOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgQy53cml0ZSgiXG59O1xuIikNCj4gDQo+ICsgICAgICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfV1JJVEVfRkFJTFVS RSwgZiJGaWxlIHdyaXRlIGZhaWxlZCBmb3Ige0NGaWxlfToNCj4ge2V9IiwgTm9uZQ0KPiANCj4g KyAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLk9wdGlv bnMuQ3JlYXRlUmVjb3JkTGlzdEZpbGU6DQo+IA0KPiArICAgICAgICAgICAgIyBHZW5SZWNvcmRM aXN0DQo+IA0KPiArICAgICAgICAgICAgSW5GaWxlTGluZXMgPSBbXQ0KPiANCj4gKyAgICAgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuT3B0aW9ucy5D UHJvY2Vzc2VkVmZyRmlsZU5hbWUsICJyIikgYXMgSW46DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmb3IgTGluZSBpbiBJbjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBJbkZp bGVMaW5lcy5hcHBlbmQoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBGSUxFX09QRU5fRkFJTFVSRSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYiRmls ZSBvcGVuIGZhaWxlZCBmb3Ige3NlbGYuT3B0aW9ucy5DUHJvY2Vzc2VkVmZyRmlsZU5hbWV9OiB7 ZX0iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTm9uZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICAgICAg d2l0aCBvcGVuKExzdEZpbGUsICJhIikgYXMgTHN0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgSW5zZXJ0ZWRMaW5lID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZm9yIFJlY29y ZExpbmUgaW4gUmVjb3JkTGluZXM6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgSW5G aWxlTGluZXMuaW5zZXJ0KFJlY29yZExpbmUuTGluZU5vICsgSW5zZXJ0ZWRMaW5lLA0KPiBSZWNv cmRMaW5lLlJlY29yZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRlZExp bmUgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZm9yIExpbmUgaW4gSW5GaWxlTGlu ZXM6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTHN0LndyaXRlKGYie0xpbmV9IikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIExzdC53cml0ZSgiLy9cbi8vICBBbGwgT3Bjb2Rl IFJlY29yZCBMaXN0XG4vL1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGZvciBSZWNv cmRMaW5lIGluIFJlY29yZExpbmVzOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIExz dC53cml0ZShmIntSZWNvcmRMaW5lLlJlY29yZH0iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgTHN0LndyaXRlKGYiXG5Ub3RhbCBTaXplIG9mIGFsbCByZWNvcmQgaXMge2dGb3JtUGtnLk9m ZnNldDowPjh4fSIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBnVmZyVmFyRGF0YVR5cGVE Qi5EdW1wKExzdCkNCj4gDQo+ICsgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfV1JJVEVfRkFJTFVSRSwgZiJGaWxlIHdyaXRl IGZhaWxlZCBmb3INCj4ge0xzdEZpbGV9OiB7ZX0iLCBOb25lDQo+IA0KPiArICAgICAgICAgICAg ICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9HZW5CaW5hcnlGaWxlc0RmcyhzZWxmLCBS b290LCBIcGtGaWxlLCBDRmlsZSwgUmVjb3JkTGluZXMpOg0KPiANCj4gKyAgICAgICAgaWYgUm9v dCBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgUm9vdC5PcENvZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYg Um9vdC5PcENvZGUgaW4gRXhwT3BzOg0KPiANCj4gKyAgICAgICAgICAgICAgICAjIFRoZSBEYXRh IGlzIGxpa2VseSB0byBiZSBtb2RpZmllZCwgc28gZ2VuZXJhdGUgYnVmZmVyIGhlcmUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgUm9vdC5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShS b290LkRhdGEuR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuQnVmZmVyIGlz IG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQ3JlYXRl SWZyUGtnRmlsZSBhbmQgc2VsZi5PcHRpb25zLkNyZWF0ZVJlY29yZExpc3RGaWxlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHdpdGggb3BlbihIcGtGaWxlLCAiYWIiKSBhcyBIcGs6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEhway53cml0ZShSb290LkJ1ZmZlcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb246DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg RWRrTG9nZ2VyLmVycm9yKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmZy Q29tcGlsZXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX1dSSVRF X0ZBSUxVUkUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIHdyaXRl IGZhaWxlZCBmb3IgJXMiICUNCj4gKHNlbGYuT3B0aW9ucy5Qa2dPdXRwdXRGaWxlTmFtZSksDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3Bl bihDRmlsZSwgImEiKSBhcyBDOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aW5lQnVmZmVyID0gIiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkg aW4gcmFuZ2UoMCwgbGVuKFJvb3QuQnVmZmVyKSk6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkluZGV4ICs9IDENCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERhdGEgPSBSb290LkJ1ZmZlcltpXQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgc2VsZi5JbmRleCAlIEJZVEVTX1BSRV9MSU5FID09IDE6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgiICAiKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgiMHglMDJYIiAl IERhdGEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLklu ZGV4ICE9IGdGb3JtUGtnLlBrZ0xlbmd0aDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBzZWxmLkluZGV4ICUgQllURVNfUFJFX0xJTkUgPT0gMDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgiLFxuIikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIsICAiKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZUJ1ZmZl ciArPSBmIntSb290LkJ1ZmZlcltpXTowPjJYfSAiDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJlY29yZCA9IGYiPntSb290Lk9mZnNldDowPjhYfToge0xpbmVC dWZmZXJ9XG4iDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVObyA9IFJv b3QuRGF0YS5HZXRMaW5lTm8oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZWNvcmRMaW5lcy5hcHBlbmQoUmVDb3JkTm9kZShSZWNvcmQsIExpbmVObykpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlZmckNvbXBpbGVyIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg RklMRV9XUklURV9GQUlMVVJFLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi RmlsZSB3cml0ZSBmYWlsZWQgZm9yICVzIiAlIChzZWxmLk9wdGlvbnMuQ091dHB1dEZpbGVOYW1l KSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5DcmVhdGVJZnJQa2dGaWxlIGFuZCBub3QNCj4g c2VsZi5PcHRpb25zLkNyZWF0ZVJlY29yZExpc3RGaWxlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihIcGtG aWxlLCAiYWIiKSBhcyBIcGs6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhw ay53cml0ZShSb290LkJ1ZmZlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBF eGNlcHRpb246DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9y KA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmZyQ29tcGlsZXIiLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX1dSSVRFX0ZBSUxVUkUsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIHdyaXRlIGZhaWxlZCBmb3IgJXMi ICUNCj4gKHNlbGYuT3B0aW9ucy5Qa2dPdXRwdXRGaWxlTmFtZSksDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihDRmlsZSwgImEiKSBh cyBDOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgw LCBsZW4oUm9vdC5CdWZmZXIpKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuSW5kZXggKz0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGF0YSA9IFJvb3QuQnVmZmVyW2ldDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBzZWxmLkluZGV4ICUgQllURVNfUFJFX0xJTkUgPT0gMToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIgICIpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIweCUwMlgiICUgRGF0YSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuSW5kZXggIT0gZ0Zv cm1Qa2cuUGtnTGVuZ3RoOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHNlbGYuSW5kZXggJSBCWVRFU19QUkVfTElORSA9PSAwOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIsXG4iKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMud3JpdGUoIiwgICIpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiVmZyQ29tcGlsZXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBGSUxFX1dSSVRFX0ZBSUxVUkUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYiRmlsZSB3cml0ZSBmYWlsZWQgZm9yIHtzZWxmLk9wdGlvbnMuQ091dHB1dEZpbGVOYW1l fSA6IHtlfSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5PcHRpb25zLkNyZWF0ZUlmclBrZ0ZpbGUg YW5kDQo+IHNlbGYuT3B0aW9ucy5DcmVhdGVSZWNvcmRMaXN0RmlsZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIExpbmVCdWZmZXIgPSAiIg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFJvb3QuQnVmZmVyKSk6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgTGluZUJ1ZmZlciArPSBmIntSb290LkJ1ZmZlcltpXTowPjJYfSAiDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBSZWNvcmQgPSBmIj57Um9vdC5PZmZzZXQ6MD44WH06IHtM aW5lQnVmZmVyfVxuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTGluZU5vID0gUm9vdC5E YXRhLkdldExpbmVObygpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBSZWNvcmRMaW5lcy5h cHBlbmQoUmVDb3JkTm9kZShSZWNvcmQsIExpbmVObykpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBpZiBSb290LkNoaWxkICE9IFtdOg0KPiANCj4gKyAgICAgICAgICAgIGZvciBDaGlsZE5vZGUg aW4gUm9vdC5DaGlsZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fR2VuQmluYXJ5Rmls ZXNEZnMoQ2hpbGROb2RlLCBIcGtGaWxlLCBDRmlsZSwgUmVjb3JkTGluZXMpDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZW5SZWNvcmRMaXN0RmlsZShzZWxmKToNCj4gDQo+ICsgICAgICAgIEZp bGVOYW1lID0gc2VsZi5PcHRpb25zLlJlY29yZExpc3RGaWxlTmFtZQ0KPiANCj4gKyAgICAgICAg UmVjb3JkTGluZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgc2VsZi5fR2VuUmVjb3JkTGlzdEZpbGVE ZnMoc2VsZi5Sb290LCBSZWNvcmRMaW5lcykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBPdXQgPSBvcGVuKEZpbGVOYW1lLCAidyIpDQo+IA0KPiArICAg ICAgICBleGNlcHQgRXhjZXB0aW9uOg0KPiANCj4gKyAgICAgICAgICAgIEVka0xvZ2dlci5lcnJv cigNCj4gDQo+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwgRklMRV9PUEVOX0ZBSUxV UkUsICJGaWxlIG9wZW4gZmFpbGVkIGZvciAlcyIgJQ0KPiBGaWxlTmFtZSwgTm9uZQ0KPiANCj4g KyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAg ICAgICAgICBPdXQud3JpdGUoIi8vXG4vLyAgQWxsIE9wY29kZSBSZWNvcmQgTGlzdFxuLy9cbiIp DQo+IA0KPiArICAgICAgICAgICAgZm9yIFJlY29yZExpbmUgaW4gUmVjb3JkTGluZXM6DQo+IA0K PiArICAgICAgICAgICAgICAgIE91dC53cml0ZShmIntSZWNvcmRMaW5lfVxuIikNCj4gDQo+ICsg ICAgICAgICAgICBPdXQud3JpdGUoZiJcblRvdGFsIFNpemUgb2YgYWxsIHJlY29yZCBpcyB7Z0Zv cm1Qa2cuT2Zmc2V0OjA+OHh9IikNCj4gDQo+ICsgICAgICAgICAgICBnVmZyVmFyRGF0YVR5cGVE Qi5EdW1wKE91dCkNCj4gDQo+ICsgICAgICAgICAgICBPdXQuY2xvc2UoKQ0KPiANCj4gKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbjoNCj4gDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3Io DQo+IA0KPiArICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfV1JJVEVfRkFJTFVS RSwgIkZpbGUgd3JpdGUgZmFpbGVkIGZvciAlcyIgJQ0KPiBGaWxlTmFtZQ0KPiANCj4gKyAgICAg ICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9HZW5SZWNvcmRMaXN0RmlsZURmcyhz ZWxmLCBSb290LCBSZWNvcmRMaW5lcyk6DQo+IA0KPiArICAgICAgICBpZiBSb290IGlzIE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IA0KPiArICAgICAgICBpZiBSb290Lk9wQ29k ZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBMaW5lQnVmZmVyID0gIiINCj4gDQo+ ICsgICAgICAgICAgICBpZiBSb290LkJ1ZmZlciBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFJvb3QuQnVmZmVyKSk6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBMaW5lQnVmZmVyICs9IGYie1Jvb3QuQnVmZmVyW2ldOjA+Mlh9ICIN Cj4gDQo+ICsgICAgICAgICAgICAgICAgUmVjb3JkID0gZiI+e1Jvb3QuT2Zmc2V0OjA+OFh9OiB7 TGluZUJ1ZmZlcn1cbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgUmVjb3JkTGluZXMuYXBwZW5k KFJlY29yZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFJvb3QuQ2hpbGQgIT0gW106DQo+ IA0KPiArICAgICAgICAgICAgZm9yIENoaWxkTm9kZSBpbiBSb290LkNoaWxkOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLl9HZW5SZWNvcmRMaXN0RmlsZURmcyhDaGlsZE5vZGUsIFJlY29y ZExpbmVzKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRHVtcEpzb24oc2VsZik6DQo+IA0KPiAr ICAgICAgICBGaWxlTmFtZSA9IHNlbGYuT3B0aW9ucy5Kc29uRmlsZU5hbWUNCj4gDQo+ICsgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICB3aXRoIG9wZW4oRmlsZU5hbWUsICJ3IikgYXMg ZjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgie1xuIikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAiRGF0YVN0cnVjdCIgOiB7XG4nKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwTm9kZSA9IGdWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlTGlzdCgpDQo+IA0K PiArICAgICAgICAgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShmJyAgICAie3BOb2RlLlR5cGVOYW1lfSIgOiBbXG4nKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBwTm9kZS5NZW1iZXJzDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICB3aGlsZSBGTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJ7XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZicgICJOYW1lIjogIntGTm9kZS5GaWVsZE5hbWV9IixcbicpDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgRk5vZGUuQXJyYXlOdW0gPiAwOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiVHlwZSI6DQo+ICJ7 Rk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lfVt7Rk5vZGUuQXJyYXlOdW19XSIsXG4nKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZicgICJUeXBlIjogIntGTm9kZS5GaWVsZFR5cGUuVHlwZU5hbWV9 IixcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmJyAgIk9mZnNl dCI6IHtGTm9kZS5PZmZzZXR9XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IEZOb2RlLk5leHQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgifVxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJ9LCBcbiIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBpZiBwTm9kZS5OZXh0IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgiICAgIF1cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIiAgICBdLFxu IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4g KyAgICAgICAgICAgICAgICBmLndyaXRlKCIgIH0sXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICJEYXRhU3RydWN0QXR0cmlidXRlIjoge1xuJykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcE5vZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZUxpc3QoKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICAgIntwTm9kZS5UeXBlTmFtZX0iOiB7e1xuJykN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJBbGlnbm1lbnQiOiB7cE5v ZGUuQWxpZ259LFxuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJU b3RhbFNpemUiOiB7cE5vZGUuVG90YWxTaXplfVxuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGlmIHBOb2RlLk5leHQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCJ9XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJ9LFxuIikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCIgIH0sXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICJWYXJE ZWZpbmUiIDoge1xuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFZzTm9kZSA9IGdWZnJEYXRh U3RvcmFnZS5HZXRCdWZmZXJWYXJTdG9yZUxpc3QoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICB3 aGlsZSBwVnNOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShmJyAgICAie3BWc05vZGUuVmFyU3RvcmVOYW1lfSI6IHt7XG4nKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShmJyAgIlR5cGUiOiAie3BWc05vZGUuRGF0YVR5cGUuVHlw ZU5hbWV9IixcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiQXR0 cmlidXRlcyI6IHtwVnNOb2RlLkF0dHJpYnV0ZXN9LFxuJykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoZicgICJWYXJTdG9yZUlkIjoge3BWc05vZGUuVmFyU3RvcmVJZH0sXG4n KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmJyAgIlZlbmRvckd1aWQiOiB7 cFZzTm9kZS5HdWlkLnRvX3N0cmluZygpfVxuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IGlmIHBWc05vZGUuTmV4dCBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoIn1cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIn0sXG4iKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgcFZzTm9kZSA9IHBWc05vZGUuTmV4dA0KPiANCj4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCIgIH0sXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICJEYXRhIiA6IFtcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBWc05vZGUgPSBn VmZyQnVmZmVyQ29uZmlnLkdldFZhckl0ZW1MaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg d2hpbGUgcFZzTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlm IHBWc05vZGUuSWQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBwVnNO b2RlID0gcFZzTm9kZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBJbmZvTm9kZSA9IHBWc05vZGUuSW5mb1N0 ckxpc3QNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHdoaWxlIHBJbmZvTm9kZSBpcyBub3Qg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJ7XG4iKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJWZW5kb3JHdWlkIjoge3BW c05vZGUuR3VpZC50b19zdHJpbmcoKX0sXG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoZicgICJWYXJOYW1lIjogIntwVnNOb2RlLk5hbWV9IixcbicpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmJyAgIkRlZmF1bHRTdG9yZSI6ICJ7cFZz Tm9kZS5JZH0iLFxuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYn ICAiU2l6ZSI6ICJ7cEluZm9Ob2RlLldpZHRofSIsXG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZicgICJPZmZzZXQiOiB7cEluZm9Ob2RlLk9mZnNldH0sXG4nKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcEluZm9Ob2RlLlR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHR5cGUocEluZm9Ob2RlLlZhbHVlKSA9 PSBFRklfSElJX0RBVEUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZicgICJWYWx1ZSI6DQo+ICJ7cEluZm9Ob2RlLlZhbHVlLlll YXJ9L3twSW5mb05vZGUuVmFsdWUuTW9udGh9L3twSW5mb05vZGUuVmFsdWUuRGF5fSJcbicNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGVsaWYgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5m b05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbmQgdHlwZShwSW5mb05vZGUuVmFsdWUpID09IEVGSV9ISUlfVElNRQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICk6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmJyAgIlZhbHVlIjoNCj4gIntwSW5mb05vZGUuVmFsdWUuSG91cn06e3BJbmZvTm9kZS5WYWx1 ZS5NaW51dGV9OntwSW5mb05vZGUuVmFsdWUuU2Vjb25kDQo+IH0iXG4nDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBl bGlmICgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEluZm9Ob2RlLlR5cGUg PT0gRUZJX0lGUl9UWVBFX1JFRg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh bmQgdHlwZShwSW5mb05vZGUuVmFsdWUpID09IEVGSV9ISUlfUkVGDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnICAiVmFsdWUi Og0KPiAie3BJbmZvTm9kZS5WYWx1ZS5RdWVzdGlvbklkfTt7cEluZm9Ob2RlLlZhbHVlLkZvcm1J ZH07e3BJbmZvTm9kZS5WYWx1ZS5GDQo+IG9ybVNldEd1aWQudG9fc3RyaW5nKCl9O3twSW5mb05v ZGUuVmFsdWUuRGV2aWNlUGF0aH0iXG4nDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiVmFsdWUiOiAie3BJbmZvTm9kZS5W YWx1ZX0iXG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoIn0sXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHBJbmZvTm9kZSA9IHBJ bmZvTm9kZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwVnNOb2RlID0gcFZzTm9k ZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoIntcbiIpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgIlZlbmRvckd1aWQiOiAiTkEiLFxuJykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAiVmFyTmFtZSI6ICJOQSIsXG4nKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICJEZWZhdWx0U3RvcmUiOiAiTkEiLFxuJykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAiU2l6ZSI6IDAsXG4nKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICJPZmZzZXQiOiAwLFxuJykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAiVmFsdWUiOiAiMHgwMCJcbicpDQo+IA0KPiArICAgICAgICAgICAg ICAgIGYud3JpdGUoIn1cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoIiAgXVxu IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgifVxuIikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBmLmNsb3NlKCkNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246 DQo+IA0KPiArICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAiVmZyQ29tcGlsZXIiLCBGSUxFX09QRU5fRkFJTFVSRSwgIkZpbGUgb3BlbiBmYWlsZWQg Zm9yICVzIiAlDQo+IEZpbGVOYW1lLCBOb25lDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKHNlbGYsIFJvb3Qs IGYsIFZhbHVlSW5kZW50KToNCj4gDQo+ICsgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQo+IA0KPiArICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5D b25kaXRpb259J1xuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFJvb3QuRGF0YS5RTmFt ZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fW5hbWU6ICB7Um9vdC5EYXRhLlFOYW1lfSAgIyAgT3B0aW9uYWwNCj4gSW5wdXRcbiIpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBSb290LkRhdGEuVmFySWRTdHIgIT0gIiI6DQo+IA0KPiAr ICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH12YXJpZDogIHtSb290LkRhdGEuVmFy SWRTdHJ9ICAjICBPcHRpb25hbA0KPiBJbnB1dFxuIikNCj4gDQo+ICsgICAgICAgIGlmIFJvb3Qu RGF0YS5IYXNRdWVzdGlvbklkOg0KPiANCj4gKyAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fXF1ZXN0aW9uaWQ6ICB7JzB4JXgnICUgSW5m by5RdWVzdGlvbi5RdWVzdGlvbklkfSAgIw0KPiBPcHRpb25hbCBJbnB1dFxuIg0KPiANCj4gKyAg ICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9cHJvbXB0 Og0KPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KX0n XG4iKQ0KPiANCj4gKyAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1oZWxwOg0KPiAne3Nl bGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCl9J1xuIikNCj4gDQo+ ICsgICAgICAgIGlmIFJvb3QuRGF0YS5GbGFnc1N0cmVhbSAhPSAiIjoNCj4gDQo+ICsgICAgICAg ICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWZsYWdzOiAge1Jvb3QuRGF0YS5GbGFnc1N0cmVh bX0gICMgT3B0aW9uYWwNCj4gaW5wdXQgLCBmbGFnc1xuIikNCj4gDQo+ICsgICAgICAgIGlmIFJv b3QuRGF0YS5IYXNLZXk6DQo+IA0KPiArICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9a2V5OiAgeycweCUweCAnICUgSW5mby5RdWVzdGlv bi5RdWVzdGlvbklkfSAjDQo+IE9wdGlvbmFsIGlucHV0LCBrZXlcbiINCj4gDQo+ICsgICAgICAg ICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfRGlzcGxheVVuaVN0cihzZWxmLCBLZXkp Og0KPiANCj4gKyAgICAgICAgU3RySWQgPSBmIjB4e0tleTowNHh9Ig0KPiANCj4gKyAgICAgICAg Rm9ybWF0ZWRTdHJJZCA9IFN0cklkWzoyXSArIFN0cklkWzI6XS51cHBlcigpDQo+IA0KPiArICAg ICAgICByZXR1cm4gZiJTVFJJTkdfVE9LRU4oe0Zvcm1hdGVkU3RySWR9KSINCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIER1bXBZYW1sRm9yWE1MQ0xJKHNlbGYpOg0KPiANCj4gKyAgICAgICAgRmls ZU5hbWUgPSBzZWxmLk9wdGlvbnMuWWFtbEZpbGVOYW1lDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgd2l0aCBvcGVuKEZpbGVOYW1lLCAidyIsIGVuY29kaW5nPSJ1dGYt OCIpIGFzIGY6DQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoIiMjIERPIE5PVCBSRU1P VkUgLS0gWUFNTCBNb2RlXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9EdW1wWWFt bEZvclhNTENMSURmcyhzZWxmLlJvb3QsIGYpDQo+IA0KPiArICAgICAgICAgICAgZi5jbG9zZSgp DQo+IA0KPiArICAgICAgICBleGNlcHQgRXhjZXB0aW9uOg0KPiANCj4gKyAgICAgICAgICAgIEVk a0xvZ2dlci5lcnJvcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwgRklM RV9PUEVOX0ZBSUxVUkUsICJGaWxlIG9wZW4gZmFpbGVkIGZvciAlcyIgJQ0KPiBGaWxlTmFtZSwg Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9EdW1w WWFtbEZvclhNTENMSURmcyhzZWxmLCBSb290LCBmKToNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBpZiBSb290IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlIGlzIG5vdCBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkxldmVsID09IDA6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBLZXlJbmRlbnQgPSAiIg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg VmFsdWVJbmRlbnQgPSAiIg0KPiANCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgS2V5SW5kZW50ID0gIiAiICogKChSb290LkxldmVsICogMiAtIDEp ICogMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlSW5kZW50ID0gIiAiICogKChS b290LkxldmVsICogMiArIDEpICogMikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg SW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAg ICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9GT1JNX1NFVF9PUDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgImZvcm1zZXQ6XG4iKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgVmFsdWVJbmRlbnQgPSAiICIgKiAoUm9vdC5MZXZlbCArIDEpICog Mg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1ndWlkOiAgJ3t7e0luZm8uR3VpZC5EYXRhMToj eH0sDQo+IHtJbmZvLkd1aWQuRGF0YTI6I3h9LCB7SW5mby5HdWlkLkRhdGEzOiN4fSwge3sgeycs ICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4NCj4gSW5mby5HdWlkLkRhdGE0KX19fX19J1xuIg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Zi53cml0ZShmIntWYWx1ZUluZGVudH10aXRsZToNCj4gJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKElu Zm8uRm9ybVNldFRpdGxlKX0nXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZShmIntWYWx1ZUluZGVudH1oZWxwOiAgJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8uSGVscCl9 J1xuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5D bGFzc0d1aWROdW0gIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRl KFZhbHVlSW5kZW50ICsgImNsYXNzZ3VpZDogICIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFJvb3QuRGF0YS5DbGFzc0d1aWQpKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3VpZCA9IFJvb3QuRGF0YS5HZXRDbGFzc0d1 aWQoKVtpXQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpICE9IGxlbihS b290LkRhdGEuQ2xhc3NHdWlkKSAtIDE6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYiJ3t7e0d1aWQuRGF0YTE6I3h9LCB7R3VpZC5EYXRhMjojeH0sIHtHdWlkLkRhdGEzOiN4 fSwNCj4ge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4gR3VpZC5EYXRhNCl9fX19fScg fCAiDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYiJ3t7e0d1aWQuRGF0YTE6I3h9LCB7R3VpZC5EYXRhMjojeH0sIHtHdWlkLkRh dGEzOiN4fSwNCj4ge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4gR3VpZC5EYXRhNCl9 fX19fScgICMgT3B0aW9uYWwgSW5wdXQgXG4iDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiAoDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgUm9vdC5DaGlsZCAhPSBbXQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPSBFRklfSUZS X0VORF9PUA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0eXBlKFJvb3QuQ2hp bGRbMF0uRGF0YSkgIT0gSWZyU3ViQ2xhc3MNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBhbmQgdHlwZShSb290LkNoaWxkWzBdLkRhdGEpICE9IElmckNsYXNzDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICApOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo VmFsdWVJbmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgZWxpZiAoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShSb290LkNoaWxk WzBdLkRhdGEpID09IElmckNsYXNzDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgYW5k IHR5cGUoUm9vdC5DaGlsZFsxXS5EYXRhKSA9PSBJZnJTdWJDbGFzcw0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBSb290LkNoaWxk WzBdLkRhdGEuSGFzU3ViQ2xhc3MgPSBUcnVlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVkFSU1RPUkVfT1A6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIHZhcnN0b3JlOlxuIikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dHlwZTogIHtSb290 LkRhdGEuVHlwZX1cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEu SGFzVmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYi e1ZhbHVlSW5kZW50fXZhcmlkOiAge0luZm8uVmFyU3RvcmVJZDojMDR4fSAjIE9wdGlvbmFsDQo+ IElucHV0XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTmFtZSA9ICIiLmpvaW4oY2hy KHgpIGZvciB4IGluIEluZm8uTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoZiJ7VmFsdWVJbmRlbnR9bmFtZTogIHtOYW1lfVxuIikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJ bmRlbnR9Z3VpZDogJ3t7e0luZm8uR3VpZC5EYXRhMTojeH0sDQo+IHtJbmZvLkd1aWQuRGF0YTI6 I3h9LCB7SW5mby5HdWlkLkRhdGEzOiN4fSwge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHgg aW4NCj4gSW5mby5HdWlkLkRhdGE0KX19fX19J1xuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBF RklfSUZSX1ZBUlNUT1JFX0VGSV9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoS2V5SW5kZW50ICsgIi0gZWZpdmFyc3RvcmU6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH10eXBlOiAge1Jvb3QuRGF0YS5UeXBlfVxuIikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNWYXJTdG9yZUlkOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICJ2YXJpZCIgaW4gUm9vdC5EaWN0Og0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9dmFyaWQ6ICB7SW5mby5W YXJTdG9yZUlkOiMwNHh9ICMgT3B0aW9uYWwNCj4gSW5wdXRcbiINCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH1hdHRyaWJ1dGU6ICB7Um9vdC5EYXRhLkF0dHJpYnV0ZXNUZXh0fSBcbiIp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuTmFtZVN0cmluZ0lkOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fW5hbWU6DQo+ICd7c2VsZi5fRGlzcGxh eVVuaVN0cihSb290LkRhdGEuTmFtZVN0cmluZ0lkKX0nXG4iDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFs dWVJbmRlbnQgKyAidmFyc2l6ZTogICIgKyBSb290LkRhdGEuVmFyU2l6ZSArICJcbiIpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIE5hbWUgPSAiIi5qb2luKGNocih4KSBmb3IgeCBpbiBJbmZvLk5hbWUpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1uYW1lOiAge05hbWV9 XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1ndWlkOiAgJ3t7e0luZm8uR3VpZC5EYXRh MTojeH0sDQo+IHtJbmZvLkd1aWQuRGF0YTI6I3h9LCB7SW5mby5HdWlkLkRhdGEzOiN4fSwge3sg eycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4NCj4gSW5mby5HdWlkLkRhdGE0KX19fX19J1xu Ig0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1A6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIG5hbWV2 YWx1ZXZhcnN0b3JlOlxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7 VmFsdWVJbmRlbnR9dHlwZTogIHtSb290LkRhdGEuVHlwZX1cbiIpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBpZiBSb290LkRhdGEuSGFzVmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXZhcmlkOiAge0luZm8uVmFyU3Rv cmVJZDojMDR4fSAjIE9wdGlvbmFsDQo+IElucHV0XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUlu ZGVudH1ndWlkOiAgJ3t7e0luZm8uR3VpZC5EYXRhMTojeH0sDQo+IHtJbmZvLkd1aWQuRGF0YTI6 I3h9LCB7SW5mby5HdWlkLkRhdGEzOiN4fSwge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHgg aW4NCj4gSW5mby5HdWlkLkRhdGE0KX19fX19J1xuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLk5hbWVJdGVtTGlz dCAhPSBbXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5k ZW50ICsgIm5hbWV0YWJsZTogXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZv ciBOYW1lSXRlbSBpbiBSb290LkRhdGEuTmFtZUl0ZW1MaXN0Og0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fSAtIG5hbWU6DQo+ICd7c2Vs Zi5fRGlzcGxheVVuaVN0cihOYW1lSXRlbSl9J1xuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9ERUZBVUxUU1RPUkVfT1A6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBnVmZyRGVmYXVsdFN0b3JlLlVwZGF0ZURlZmF1bHRUeXBl KFJvb3QpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09 IEVGSV9JRlJfU0hPV05fREVGQVVMVFNUT1JFX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBkZWZhdWx0c3RvcmU6XG4iKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH10eXBlOiAge1Jvb3QuRGF0YS5U eXBlfVxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRl bnR9cHJvbXB0Og0KPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5EZWZhdWx0TmFtZSl9J1xu IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNBdHRyOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWF0dHJpYnV0ZTogIHsnMHglMDR4JyAlIElu Zm8uRGVmYXVsdElkfSAjDQo+IERlZmF1bHQgSUQsIE9wdGlvbmFsIGlucHV0XG4iDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fT1A6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIGZvcm06IFxuIikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Y29uZGl0aW9uOiAgJ3tS b290LkNvbmRpdGlvbn0nXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Zi53cml0ZShmIntWYWx1ZUluZGVudH1mb3JtaWQ6ICB7JzB4JXgnICUgSW5mby5Gb3JtSWR9IFxu IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dGl0 bGU6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLkZvcm1UaXRsZSl9J1xuIikNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ2hpbGQgIT0gW10gYW5kIFJv b3QuQ2hpbGRbMF0uT3BDb2RlICE9IEVGSV9JRlJfRU5EX09QOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZP Uk1fTUFQX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTWV0aG9kTWFwTGlzdCA9IFJv b3QuRGF0YS5HZXRNZXRob2RNYXBMaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoS2V5SW5kZW50ICsgIi0gZm9ybW1hcDogXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1mb3JtaWQ6ICB7JzB4JXgnICUgSW5mby5Gb3Jt SWR9IFxuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29u ZGl0aW9uIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoZiJ7VmFsdWVJbmRlbnR9Y29uZGl0aW9uOiAgJ3tSb290LkNvbmRpdGlvbn0nXG4iKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWV0aG9kTWFwTGlzdCAhPSBbXToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgIm1h cDogIyBvcHRpb25hbCBpbnB1dFxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBm b3IgTWV0aG9kTWFwIGluIE1ldGhvZE1hcExpc3Q6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9LSBtYXB0aXRsZToNCj4ge01ldGhvZE1h cC5NZXRob2RUaXRsZX1cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUlu ZGVudH0gIG1hcGd1aWQ6ICAne3t7eyINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGYie01ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGExfSwNCj4ge01ldGhvZE1h cC5NZXRob2RJZGVudGlmaWVyLkRhdGEyfSwNCj4ge01ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVy LkRhdGEzfSwiDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmInt7IHsn LCAnLmpvaW4oJzB4JXgnICUgeCBmb3IgeCBpbg0KPiBNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmll ci5EYXRhNCl9IH19Ig0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ9 fX19J1xuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9w Q29kZSAhPSBFRklfSUZSX0VORF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9JTUFHRV9PUDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9aW1hZ2U6ICAne3Nl bGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5JZCl9J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SVUxFX09QOiAgIw0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShmIntLZXlJbmRlbnR9LSBydWxlOlxuIikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5vdCBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Y29uZGl0 aW9uOiAgJ3tSb290LkNvbmRpdGlvbn0nXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1 ZUluZGVudH1uYW1lOiAge1Jvb3QuRGF0YS5HZXRSdWxlTmFtZSgpfVxuIg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246ICB7Um9vdC5FeHBy ZXNzaW9ufSBcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9TVUJUSVRMRV9PUDoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gc3VidGl0 bGU6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMg bm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXRleHQ6DQo+ICd7c2VsZi5fRGlz cGxheVVuaVN0cihJbmZvLlN0YXRlbWVudC5Qcm9tcHQpfSdcbiIpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuRmxhZ3NTdHJlYW0gIT0gIiI6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1mbGFnczog IHtSb290LkRhdGEuRmxhZ3NTdHJlYW19ICAjDQo+IE9wdGlvbmFsIElucHV0XG4iKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXSBhbmQgUm9v dC5DaGlsZFswXS5PcENvZGUgIT0gRUZJX0lGUl9FTkRfT1A6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb21wb25lbnQ6ICBcbiIpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVEVY VF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0g dGV4dDpcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBp cyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1Zh bHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIHR5cGUoSW5mbykgPT0gRUZJX0lGUl9URVhUOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWhlbHA6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJ bmZvLlN0YXRlbWVudC5IZWxwKX0nXG4iDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fXByb21wdDoNCj4gJ3tzZWxmLl9E aXNwbGF5VW5pU3RyKEluZm8uU3RhdGVtZW50LlByb21wdCl9J1xuIg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290 LkRhdGEuSGFzVGV4dFR3bzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShmIntWYWx1ZUluZGVudH10ZXh0Og0KPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5U ZXh0VHdvKX0nXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShJbmZvKSA9 PSBFRklfSUZSX0FDVElPTjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRl KA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1oZWxw Og0KPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCl9J1xu Ig0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm IntWYWx1ZUluZGVudH1wcm9tcHQ6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLlF1ZXN0 aW9uLkhlYWRlci5Qcm9tcHQpfSdcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFt ICE9ICIiOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9ZmxhZ3M6 ICB7Um9vdC5EYXRhLkZsYWdzU3RyZWFtfSAgIyBPcHRpb25hbA0KPiBJbnB1dCwgUXVlc3Rpb24g RmxhZ3NcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNLZXk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1rZXk6ICB7JzB4JTA0eCcgJSBJbmZvLlF1ZXN0 aW9uLlF1ZXN0aW9uSWR9DQo+ICMgT3B0aW9uYWwgSW5wdXQsIFF1ZXN0aW9uIFF1ZXN0aW9uSWRc biINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUg IT0gRUZJX0lGUl9FTkRfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0 ZShWYWx1ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfQUNUSU9OX09QOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBhY3Rpb246XG4iKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fRHVtcFF1ZXN0aW9uSW5mb3NGb3JYTUxDTEko Um9vdCwgZiwgVmFsdWVJbmRlbnQpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRl KGYie1ZhbHVlSW5kZW50fWNvbmZpZzogIHtJbmZvLlF1ZXN0aW9uQ29uZmlnfSAgIw0KPiBRdWVz dGlvbkNvbmZpZ1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ2hpbGQg IT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9IEVGSV9JRlJfRU5EX09QOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAiY29tcG9uZW50 OiAgXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9 PSBFRklfSUZSX09ORV9PRl9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo S2V5SW5kZW50ICsgIi0gb25lb2Y6XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fRHVtcFF1ZXN0aW9uSW5mb3NGb3JYTUxDTEkoUm9vdCwgZiwgVmFsdWVJbmRl bnQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuSGFz TWluTWF4Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fW1heGltdW06ICB7JzB4 JTB4JyAlIEluZm8uRGF0YS5NYXhWYWx1ZX0gIw0KPiBPcHRpb25hbCBJbnB1dFxuIg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUlu ZGVudH1taW5pbXVtOiAgeycweCUweCcgJSBJbmZvLkRhdGEuTWluVmFsdWV9ICMNCj4gT3B0aW9u YWwgSW5wdXRcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuSGFzU3RlcDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXN0ZXA6ICB7SW5m by5EYXRhLlN0ZXB9ICMgT3B0aW9uYWwNCj4gSW5wdXRcbiIpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPSBF RklfSUZSX0VORF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZh bHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBvcHRpb246ICBcbiIp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dGV4dDogJ3tzZWxmLl9EaXNwbGF5VW5pU3Ry KEluZm8uT3B0aW9uKX0nXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgdHlwZShSb290LkRhdGEpID09IElmck9uZU9mT3B0aW9uOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5WYWx1ZVN0cmVhbSAhPSAiIjoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH12YWx1ZTogIHtS b290LkRhdGEuVmFsdWVTdHJlYW19XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgaWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICE9ICIiOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZmxhZ3M6ICB7Um9vdC5EYXRhLkZs YWdzU3RyZWFtfSAjDQo+IE9wdGlvbmFsIElucHV0XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLklmck9wdGlvbktleSBpcyBub3QgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1rZXk6ICB7JzB4JTA0eCcgJQ0KPiBSb290 LkRhdGEuR2V0SWZyT3B0aW9uS2V5KCl9ICMgT3B0aW9uYWwgSW5wdXRcbiINCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPSBFRklfSUZS X0VORF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5k ZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9ERUZBVUxUX09QOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgIyDjgIBzcGVjaWZpYyBjb25kaXRpb24gaGVyZQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgUm9vdC5Qb3NpdGlvbiAhPSAiRG8gbm90IGRpc3BsYXkiOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gZGVmYXVsdDpcbiIp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9Y29uZGl0aW9uOiAgJ3tSb290LkNvbmRpdGlvbn0nXG4iKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJZnJEZWZh dWx0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgPSBSb290LkRhdGEu VmFsdWVTdHJlYW0NCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyLmZp bmQoIjsiKSAhPSAtMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl Zkxpc3QgPSBTdHIuc3BsaXQoIjsiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RyID0gKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlZkxpc3RbMF0NCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr ICI7Ig0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgUmVmTGlz dFsxXQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjsiDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmInt7e0luZm8uVmFs dWVbMF0uRm9ybVNldEd1aWQuRGF0YTE6I3h9LA0KPiB7SW5mby5WYWx1ZVswXS5Gb3JtU2V0R3Vp ZC5EYXRhMjojeH0sIHtJbmZvLlZhbHVlWzBdLkZvcm1TZXRHdWlkLkRhdGEzOiN4fSwNCj4ge3sg eycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4gSW5mby5WYWx1ZVswXS5Gb3JtU2V0R3VpZC5E YXRhNCl9fX19fSINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr ICI7Ig0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VsZi5f RGlzcGxheVVuaVN0cihJbmZvLlZhbHVlWzBdLkRldmljZVBhdGgpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIFN0ciAhPSAiIjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0ciA9IFN0ci5yZXBsYWNlKCJ7IiwgIlsiKS5yZXBsYWNlKCJ9IiwgIl0iKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ci5maW5kKCI6IikgIT0gLTENCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBTdHIuZmluZCgiLyIpICE9 IC0xDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgU3RyLmZp bmQoIjsiKSAhPSAtMQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgPSAiKCIgKyBT dHIgKyAiKSINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo ZiJ7VmFsdWVJbmRlbnR9dmFsdWU6ICB7U3RyfVxuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBlbGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJZnJEZWZhdWx0MjoNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH12 YWx1ZV9leHA6DQo+ICd7Um9vdC5DaGlsZFswXS5FeHByZXNzaW9ufSdcbiIpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkRlZmF1bHRTdG9yZSAh PSAiIjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH1kZWZhdWx0c3RvcmU6DQo+IHtSb290LkRhdGEuRGVmYXVsdFN0b3JlfVxuIikNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9P UkRFUkVEX0xJU1RfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUlu ZGVudCArICItIG9yZGVyZWRsaXN0OlxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYsIFZhbHVlSW5kZW50KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkhhc01heENvbnRhaW5lcnM6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9bWF4Y29udGFpbmVyczogIHtJbmZvLk1h eENvbnRhaW5lcnN9ICMNCj4gT3B0aW9uYWwgSW5wdXRcbiINCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290 LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPSBFRklfSUZSX0VORF9PUDoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImNv bXBvbmVudDogIFxuIikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5P cENvZGUgPT0gRUZJX0lGUl9OVU1FUklDX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Zi53cml0ZShLZXlJbmRlbnQgKyAiLSBudW1lcmljOlxuIikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYsIFZhbHVlSW5k ZW50KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1t YXhpbXVtOiAgeycweCUweCcgJQ0KPiBJbmZvLkRhdGEuTWF4VmFsdWV9XG4iKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1taW5pbXVtOiAgeycweCUw eCcgJQ0KPiBJbmZvLkRhdGEuTWluVmFsdWV9XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkhhc1N0ZXA6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1zdGVwOiAge0luZm8uRGF0YS5TdGVwfSAj IE9wdGlvbmFsDQo+IElucHV0XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgaWYgUm9vdC5DaGlsZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0gRUZJX0lG Ul9FTkRfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUlu ZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg IGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfQ0hFQ0tCT1hfT1A6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIGNoZWNrYm94OlxuIikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3Qs IGYsIFZhbHVlSW5kZW50KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGls ZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0gRUZJX0lGUl9FTkRfT1A6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25l bnQ6ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2Rl ID09IEVGSV9JRlJfVElNRV9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo S2V5SW5kZW50ICsgIi0gdGltZTpcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBS b290LkRhdGEuSG91ciBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYsIFZhbHVlSW5kZW50KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ2hpbGQgIT0gW10gYW5kIFJvb3Qu Q2hpbGRbMF0uT3BDb2RlICE9DQo+IEVGSV9JRlJfRU5EX09QOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1ob3VyOiAge1Jvb3QuRGF0YS5Ib3VyfVxu IikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEu RF9Ib3VyIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKGYie1ZhbHVlSW5kZW50fWRlZmF1bHRfaG91cjoNCj4ge1Jvb3QuRGF0YS5EX0hvdXJ9 XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7 VmFsdWVJbmRlbnR9bWludXRlOiAge1Jvb3QuRGF0YS5NaW51dGV9XG4iKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5EX01pbnV0ZSBpcyBub3Qg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH1kZWZhdWx0X21pbnV0ZToNCj4ge1Jvb3QuRGF0YS5EX01pbnV0ZX1cbiIpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH1zZWNvbmQ6ICB7Um9vdC5EYXRhLlNlY29uZH1cbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkRfU2Vjb25kIGlzIG5vdCBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWRl ZmF1bHRfc2Vjb25kOg0KPiB7Um9vdC5EYXRhLkRfU2Vjb25kfVxuIikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmIntWYWx1ZUluZGVudH1wcm9tcHQ6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZv LlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpfSdcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9aGVscDoNCj4gJ3tzZWxm Ll9EaXNwbGF5VW5pU3RyKEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApfSdcbiINCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg aWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICE9ICIiOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZiJ7VmFsdWVJbmRlbnR9ZmxhZ3M6ICB7Um9vdC5EYXRhLkZsYWdzU3RyZWFtfSAgIyBPcHRp b25hbA0KPiBpbnB1dCAsIGZsYWdzXG4iDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNo aWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPQ0KPiBFRklfSUZSX0RFRkFVTFRf T1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRl bnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0RBVEVfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKEtleUluZGVudCArICItIGRhdGU6XG4iKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgUm9vdC5EYXRhLlllYXIgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLl9EdW1wUXVlc3Rpb25JbmZvc0ZvclhNTENMSShSb290LCBmLCBWYWx1 ZUluZGVudCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9 IFtdIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPQ0KPiBFRklfSUZSX0VORF9PUDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21w b25lbnQ6ICBcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9eWVhcjogIHtSb290 LkRhdGEuWWVhcn1cbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH1taW5feWVhcjogIHtSb290LkRhdGEuTWlufVxuIikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fW1heF95ZWFyOiAge1Jv b3QuRGF0YS5NYXh9XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIFJvb3QuRGF0YS5EX1llYXIgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZGVmYXVsdF95ZWFyOiAge1Jvb3Qu RGF0YS5EX1llYXJ9XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9bW9udGg6ICB7Um9vdC5EYXRhLk1vbnRofVxuIikNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuRF9Nb250 aCBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0 ZShmIntWYWx1ZUluZGVudH1kZWZhdWx0X21vbnRoOg0KPiB7Um9vdC5EYXRhLkRfTW9udGh9XG4i KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9ZGF5OiAge1Jvb3QuRGF0YS5EYXl9XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5EX0RheSBpcyBub3QgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1kZWZh dWx0X2RheTogIHtSb290LkRhdGEuRF9EYXl9XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYie1ZhbHVlSW5kZW50fXByb21wdDoNCj4gJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8u UXVlc3Rpb24uSGVhZGVyLlByb21wdCl9J1xuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1oZWxwOg0KPiAne3NlbGYu X0Rpc3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCl9J1xuIg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBpZiBSb290LkRhdGEuRmxhZ3NTdHJlYW0gIT0gIiI6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmIntWYWx1ZUluZGVudH1mbGFnczogIHtSb290LkRhdGEuRmxhZ3NTdHJlYW19 ICAjIE9wdGlvbmFsDQo+IGlucHV0ICwgZmxhZ3NcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IFJvb3QuQ2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+IEVGSV9JRlJf REVGQVVMVF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShW YWx1ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfU1RSSU5HX09QOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBzdHJpbmc6XG4iKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fRHVtcFF1ZXN0aW9uSW5mb3NGb3JYTUxDTEkoUm9v dCwgZiwgVmFsdWVJbmRlbnQpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYi e1ZhbHVlSW5kZW50fW1pbnNpemU6ICB7SW5mby5NaW5TaXplfVxuIikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9bWF4c2l6ZTogIHtJbmZvLk1heFNp emV9XG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGls ZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0gRUZJX0lGUl9FTkRfT1A6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb21wb25l bnQ6ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2Rl ID09IEVGSV9JRlJfUEFTU1dPUkRfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndy aXRlKEtleUluZGVudCArICItIHBhc3N3b3JkOlxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYsIFZhbHVlSW5kZW50 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1taW5zaXplOiAge1Jvb3QuRGljdFsnbWluc2l6 ZSddLktleSBpZiAnbWluc2l6ZScgaW4NCj4gUm9vdC5EaWN0IGVsc2UgSW5mby5NaW5TaXplfVxu Ig0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVu dH1tYXhzaXplOiAge1Jvb3QuRGljdFsnbWF4c2l6ZSddLktleSBpZiAnbWF4c2l6ZScgaW4NCj4g Um9vdC5EaWN0IGVsc2UgSW5mby5NYXhTaXplfVxuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAh PSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0gRUZJX0lGUl9FTkRfT1A6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb21wb25lbnQ6 ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09 IEVGSV9JRlJfUkVTRVRfQlVUVE9OX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShLZXlJbmRlbnQgKyAiLSByZXNldGJ1dHRvbjpcbiIpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5D b25kaXRpb259J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9ZGVmYXVsdHN0b3JlOiAge1Jvb3QuRGF0YS5EZWZhdWx0U3RvcmV9XG4iKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBmIntWYWx1ZUluZGVudH1wcm9tcHQ6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJ bmZvLlN0YXRlbWVudC5Qcm9tcHQpfSdcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9aGVscDoN Cj4gJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8uU3RhdGVtZW50LkhlbHApfSdcbiIpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxk WzBdLk9wQ29kZSAhPSBFRklfSUZSX0VORF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SRUZfT1A6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIGdvdG86XG4i KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyUmVmNDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmIntWYWx1ZUluZGVudH1kZXZpY2VwYXRoOg0KPiAne3NlbGYuX0Rpc3BsYXlV bmlTdHIoSW5mby5EZXZpY2VQYXRoKX0nICMgT3B0aW9uYWwgSW5wdXRcbiINCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9 Zm9ybXNldGd1aWQ6ICAne3t7SW5mby5Gb3JtU2V0SWQuRGF0YTE6I3h9LA0KPiB7SW5mby5Gb3Jt U2V0SWQuRGF0YTI6I3h9LCB7SW5mby5Gb3JtU2V0SWQuRGF0YTM6I3h9LCB7eyB7JywgJy5qb2lu KGYne3g6I3h9JyBmb3IgeA0KPiBpbiBJbmZvLkZvcm1TZXRJZC5EYXRhNCl9fX19fScgIyAgT3B0 aW9uYWwgSW5wdXRcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1mb3JtaWQ6ICB7 JzB4JXgnICUgSW5mby5Gb3JtSWR9XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5k ZW50fXF1ZXN0aW9uOiAgeycweCV4JyAlIEluZm8uUXVlc3Rpb25JZH0gIw0KPiBPcHRpb25hbCBJ bnB1dFxuIg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJZnJSZWYzOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWZvcm1zZXRndWlkOiAgJ3t7e0luZm8uRm9y bVNldElkLkRhdGExOiN4fSwNCj4ge0luZm8uRm9ybVNldElkLkRhdGEyOiN4fSwge0luZm8uRm9y bVNldElkLkRhdGEzOiN4fSwge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHgNCj4gaW4gSW5m by5Gb3JtU2V0SWQuRGF0YTQpfX19fX0nICMgIE9wdGlvbmFsIElucHV0XG4iDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoZiJ7VmFsdWVJbmRlbnR9Zm9ybWlkOiAgeycweCV4JyAlIEluZm8uRm9ybUlkfVxuIikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1xdWVzdGlvbjogIHsnMHgleCcgJSBJ bmZvLlF1ZXN0aW9uSWR9ICMNCj4gT3B0aW9uYWwgSW5wdXRcbiINCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiB0 eXBlKFJvb3QuRGF0YSkgPT0gSWZyUmVmMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWZvcm1pZDogIHsnMHgleCcgJSBJbmZvLkZvcm1JZH1c biIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9cXVlc3Rpb246ICB7JzB4JXgn ICUgSW5mby5RdWVzdGlvbklkfSAjDQo+IE9wdGlvbmFsIElucHV0XG4iDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgdHlwZShSb290LkRhdGEpID09IElmclJlZjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWZvcm1pZDogIHsnMHgleCcgJSBJbmZvLkZvcm1J ZH1cbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9EdW1wUXVl c3Rpb25JbmZvc0ZvclhNTENMSShSb290LCBmLCBWYWx1ZUluZGVudCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRb MF0uT3BDb2RlICE9IEVGSV9JRlJfRU5EX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1JFRlJFU0hfT1A6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIHJlZnJl c2g6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMg bm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWludGVydmFsOiAge0luZm8uUmVm cmVzaEludGVydmFsfSAgIw0KPiBSZWZyZXNoSW50ZXJ2YWxcbiIpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVkFSU1RPUkVfREVWSUNF X09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSB2 YXJzdG9yZWRldmljZTpcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNv bmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZGV2aWNlcGF0 aDogIHtJbmZvLkRldmljZVBhdGh9ICAjDQo+IERldmljZVBhdGhcbiIpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUkVGUkVTSF9JRF9P UDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gcmVm cmVzaGd1aWQ6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRp b24gaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYie1ZhbHVlSW5kZW50fWd1aWQ6ICAne3t7SW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRh dGExOiN4fSwNCj4ge0luZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhMjojeH0sIHtJbmZvLlJl ZnJlc2hFdmVudEdyb3VwSWQuRGF0YTM6I3h9LA0KPiB7eyB7JywgJy5qb2luKGYne3g6I3h9JyBm b3IgeCBpbiBJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTQpfX19fX0nIFxuIg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1dBUk5JTkdfSUZfT1A6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIHdhcm5pbmdpZjpcbiIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlv bjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9cHJv bXB0OiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5XYXJuaW5nKX0nICMNCj4gT3B0aW9uYWwg SW5wdXRcbiINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNUaW1lT3V0Og0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dGltZW91dDogIHtJbmZvLlRpbWVPdXR9 ICMgb3B0aW9uYWwgaW5wdXQNCj4gXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShmIntWYWx1ZUluZGVudH1leHByZXNzaW9uOiAge1Jvb3QuRXhwcmVzc2lvbn1cbiIpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJf R1VJRF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9 PSBJZnJMYWJlbDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUlu ZGVudCArICItIGxhYmVsOlxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBS b290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9u fSdcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUlu ZGVudH1udW1iZXI6ICB7JzB4JXgnICUgSW5mby5OdW1iZXJ9ICAjDQo+IE51bWJlclxuIikNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJ ZnJCYW5uZXI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRl bnQgKyAiLSBiYW5uZXI6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJv b3QuQ29uZGl0aW9uIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259 J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH10aXRsZTogJ3tzZWxmLl9E aXNwbGF5VW5pU3RyKEluZm8uVGl0bGUpfScgIw0KPiBPcHRpb25hbCBJbnB1dFxuIg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBpZiBub3QgUm9vdC5EYXRhLkhhc1RpbWVPdXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICJsaW5lIiBpbiBSb290LkRpY3Q6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWxpbmU6ICB7Um9vdC5EaWN0 WydsaW5lJ10uS2V5fVxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9bGluZTogIHtJbmZvLkxpbmVOdW1iZXJ9XG4iKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWFsaWduOiAge1Jvb3QuRGlj dFsnYWxpZ24nXS5LZXl9XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRl bnR9dGltZW91dDogIHtSb290LkRhdGEuVGltZU91dH1cbiIpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyQ2xhc3M6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiY2xhc3M6ICAiICsg Um9vdC5EYXRhLkNsYXNzU3RyICsgIlxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBpZiBub3QgUm9vdC5EYXRhLkhhc1N1YkNsYXNzOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyU3Vi Q2xhc3M6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQg KyAic3ViY2xhc3M6ICAiICsgUm9vdC5EYXRhLlN1YkNsYXNzU3RyICsgIlxuIikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICJjb21wb25lbnQ6ICBc biIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0 YSkgPT0gSWZyRXh0ZW5zaW9uR3VpZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiB0eXBlKFJvb3QuUGFyZW50LkRhdGEpID09IElmckV4dGVuc2lvbkd1aWQ6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJvb3QuTGV2ZWwgLT0gMQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBLZXlJbmRlbnQgPSAiICIgKiAoKFJvb3QuTGV2ZWwgKiAyIC0g MSkgKiAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUluZGVudCA9 ICIgIiAqICgoUm9vdC5MZXZlbCAqIDIgKyAxKSAqIDIpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBndWlkb3A6XG4iKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5vdCBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRp dGlvbjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1 ZUluZGVudH1ndWlkOiAgJ3t7e0luZm8uR3VpZC5EYXRhMTojeH0sDQo+IHtJbmZvLkd1aWQuRGF0 YTI6I3h9LCB7SW5mby5HdWlkLkRhdGEzOiN4fSwge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9y IHggaW4NCj4gSW5mby5HdWlkLkRhdGE0KX19fX19JyBcbiINCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRh LkdldERhdGFUeXBlKCkgIT0gIiI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9e1Jvb3QuRGF0YS5HZXREYXRhVHlwZSgpfTogXG4iKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGF0YSBpbiBSb290LkRhdGEu R2V0RmllbGRMaXN0KCk6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKGYie1ZhbHVlSW5kZW50fSAge2RhdGFbMF19OiAge2RhdGFbMV06I3h9XG4iKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX05P X1NVQk1JVF9JRl9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5k ZW50ICsgIi0gbm9zdWJtaXRpZjpcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBS b290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259J1xu IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9cHJv bXB0Og0KPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5FcnJvcil9J1xuIikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5GbGFnc1N0cmVhbSAhPSAiIjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImZsYWdzOiAg IiArIFJvb3QuRGF0YS5GbGFnc1N0cmVhbSArICJcbiIpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246ICAne1Jvb3QuRXhwcmVzc2lv bn0nXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9 PSBFRklfSUZSX1JFQURfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtl eUluZGVudCArICItIHJlYWQ6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9v dC5Db25kaXRpb24gaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJl c3Npb246ICAne1Jvb3QuRXhwcmVzc2lvbn0nXG4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1dSSVRFX09QOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSB3cml0ZTpcbiIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlv bjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZXhwcmVzc2lvbjogICd7Um9vdC5FeHByZXNzaW9ufSdcbiIp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9J RlJfVkFMVUVfT1AgYW5kIFJvb3QuUGFyZW50Lk9wQ29kZSAhPQ0KPiBFRklfSUZSX0RFRkFVTFRf T1A6ICAjDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICIt IHZhbHVlOlxuIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJ bmRlbnR9ZXhwcmVzc2lvbjogICd7Um9vdC5FeHByZXNzaW9ufSdcbiIpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfTU9EQUxfVEFHX09Q Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIG1vZGFsOiBudWxsXG4iKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0xPQ0tFRF9P UDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5vdCBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRl bnR9Y29uZGl0aW9uOiAgJ3tSb290LkNvbmRpdGlvbn0nXG4iKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBsb2NrZWQ6IG51bGxcbiIpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfU1VQUFJF U1NfSUZfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCAr ICItIHN1cHByZXNzaWY6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH1leHByZXNzaW9uOiAgJ3tSb290LkV4cHJlc3Npb259J1xuIikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIGxlbihSb290LkNoaWxkKSA+IDIgYW5kIFJvb3QuQ2hp bGRbbGVuKFJvb3QuQ2hpbGQpIC0gMl0uT3BDb2RlDQo+IG5vdCBpbiBFeHBPcHM6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25lbnQ6 ICBcbiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09 IEVGSV9JRlJfRElTQUJMRV9JRl9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICMgSWYg dGhlIGRpc2FibGUgbm9kZSBpcyBpbnNlcnRlZCBhZnRlciB0aGUgZm9ybXNldCBlbmRzLCBkbyBu b3QNCj4gc2hvdyBpdCBpbiBzb3VyY2UgeW1sDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAj IHVzZSB0aGUgZXhwcmVzc2lvbiBjb250ZW50IHRvIHRlbGwgaWYgdGhlICBkaXNhYmxlIG5vZGUg aXMgaW5zZXJ0ZWQNCj4gYWZ0ZXIgdGhlIGZvcm1zZXQgZW5kcw0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgUm9vdC5FeHByZXNzaW9uIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gZGlzYWJsZWlmOlxuIikNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJl c3Npb246ICAne1Jvb3QuRXhwcmVzc2lvbn0nXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmICgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKFJvb3Qu Q2hpbGQpID4gMg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUm9vdC5D aGlsZFtsZW4oUm9vdC5DaGlsZCkgLSAyXS5PcENvZGUgbm90IGluIEV4cE9wcw0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICk6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0dSQVlfT1VUX0lG X09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBn cmF5b3V0aWY6XG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH1leHByZXNzaW9uOiAgJ3tSb290LkV4cHJlc3Npb259J1xuIikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIGxlbihSb290LkNoaWxkKSA+IDIgYW5kIFJvb3QuQ2hpbGRbbGVu KFJvb3QuQ2hpbGQpIC0gMl0uT3BDb2RlDQo+IG5vdCBpbiBFeHBPcHM6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9J RlJfSU5DT05TSVNURU5UX0lGX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZShLZXlJbmRlbnQgKyAiLSBpbmNvbnNpc3RlbnRpZjpcbiIpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246ICAne1Jvb3QuRXhwcmVz c2lvbn0nXG4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUlu ZGVudH1wcm9tcHQ6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLkVycm9yKX0nXG4iKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICE9ICIi Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAi ZmxhZ3M6ICAiICsgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICsgIlxuIikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkxhc3RPcCA9IFJvb3QuT3BDb2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBl eGNlcHQgRXhjZXB0aW9uOg0KPiANCj4gKyAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4g DQo+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgRklMRV9XUklURV9GQUlMVVJFLA0KPiANCj4gKyAgICAgICAgICAgICAgICAiRmlsZSB3cml0 ZSBmYWlsZWQgZm9yICVzIiAlIChzZWxmLk9wdGlvbnMuWWFtbEZpbGVOYW1lKSwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgTm9uZSwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdOg0KPiANCj4gKyAgICAgICAgICAgIGZvciBD aGlsZE5vZGUgaW4gUm9vdC5DaGlsZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5P cENvZGUgaW4gQ29uZGl0aW9uT3BzOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgQ2hpbGRO b2RlLkxldmVsID0gUm9vdC5MZXZlbCArIDENCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiB0 eXBlKFJvb3QuRGF0YSkgPT0gSWZyR3VpZCBhbmQgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgQ2hpbGROb2RlLk9wQ29kZSBpbiBbRUZJX0lGUl9DSEVDS0JPWF9PUCwNCj4gRUZJX0lGUl9O VU1FUklDX09QLCBFRklfSUZSX09ORV9PRl9PUF0NCj4gDQo+ICsgICAgICAgICAgICAgICAgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIENoaWxkTm9kZS5MZXZlbCA9IFJvb3QuTGV2ZWwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IENoaWxkTm9kZS5MZXZlbCA9IFJvb3QuTGV2ZWwgKyAxDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX0R1bXBZYW1sRm9yWE1MQ0xJRGZzKENoaWxkTm9kZSwgZikNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybg0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmclV0aWxpdHkucHkNCj4gYi9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJVdGlsaXR5LnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjNjNWNlYzI1Y2UNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJVdGlsaXR5LnB5DQo+ IEBAIC0wLDAgKzEsMjIyNiBAQA0KPiArIyMgQGZpbGUNCj4gDQo+ICsjIFZmciBjb21tb24gbGli cmFyeSBmdW5jdGlvbnMuDQo+IA0KPiArIw0KPiANCj4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsjIw0KPiAN Cj4gK2ltcG9ydCBvcw0KPiANCj4gK2Zyb20gZW51bSBpbXBvcnQgRW51bQ0KPiANCj4gK2Zyb20g VmZyQ29tcGlsZXIuSWZyQ3R5cGVzIGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5J ZnJFcnJvciBpbXBvcnQgZ1ZmckVycm9ySGFuZGxlLCBWZnJSZXR1cm5Db2RlDQo+IA0KPiArZnJv bSBWZnJDb21waWxlci5JZnJDb21tb24gaW1wb3J0IEVGSV9TVUNDRVNTLCBFRklfTk9UX0ZPVU5E LA0KPiBSRVRVUk5fU1VDQ0VTUw0KPiANCj4gK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0 cmFjdG1ldGhvZA0KPiANCj4gK2Zyb20gQ29tbW9uLkxvbmdGaWxlUGF0aFN1cHBvcnQgaW1wb3J0 IExvbmdGaWxlUGF0aA0KPiANCj4gKw0KPiANCj4gK1ZGUl9QQUNLX1NIT1cgPSAweDAyDQo+IA0K PiArVkZSX1BBQ0tfQVNTSUdOID0gMHgwMQ0KPiANCj4gK1ZGUl9QQUNLX1BVU0ggPSAweDA0DQo+ IA0KPiArVkZSX1BBQ0tfUE9QID0gMHgwOA0KPiANCj4gK0RFRkFVTFRfUEFDS19BTElHTiA9IDB4 OA0KPiANCj4gK0RFRkFVTFRfQUxJR04gPSAxDQo+IA0KPiArWkVST19BTElHTiA9IDANCj4gDQo+ ICtNQVhfUEFDS19BTElHTiA9IDB4MTANCj4gDQo+ICtNQVhfTkFNRV9MRU4gPSA2NA0KPiANCj4g K01BWF9CSVRfV0lEVEggPSAzMg0KPiANCj4gK0VGSV9WQVJTVE9SRV9JRF9NQVggPSAweEZGRkYN Cj4gDQo+ICtFRklfQklUU19TSElGVF9QRVJfVUlOVDMyID0gMHg1DQo+IA0KPiArRUZJX0JJVFNf UEVSX1VJTlQzMiA9IDEgPDwgRUZJX0JJVFNfU0hJRlRfUEVSX1VJTlQzMg0KPiANCj4gK0VGSV9G UkVFX1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFID0gaW50KChFRklfVkFSU1RPUkVfSURfTUFYICsg MSkgLw0KPiBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIFNWZnJQYWNrU3RhY2tOb2RlOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgSWRl bnRpZmllciwgTnVtYmVyKToNCj4gDQo+ICsgICAgICAgIHNlbGYuSWRlbnRpZmllciA9IElkZW50 aWZpZXINCj4gDQo+ICsgICAgICAgIHNlbGYuTnVtYmVyID0gTnVtYmVyDQo+IA0KPiArICAgICAg ICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBNYXRjaChzZWxmLCBJ ZGVudGlmaWVyKToNCj4gDQo+ICsgICAgICAgIGlmIElkZW50aWZpZXIgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gKyAgICAgICAgZWxpZiBzZWxmLklkZW50 aWZpZXIgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gRmFsc2UNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLklkZW50aWZpZXIgPT0gSWRlbnRpZmllcg0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIFNWZnJEYXRhVHlwZToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsIFR5cGVOYW1lPSIiKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVHlwZU5hbWUgPSBUeXBl TmFtZQ0KPiANCj4gKyAgICAgICAgc2VsZi5UeXBlID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5B bGlnbiA9IDENCj4gDQo+ICsgICAgICAgIHNlbGYuVG90YWxTaXplID0gMA0KPiANCj4gKyAgICAg ICAgc2VsZi5IYXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxmLk1lbWJlcnMg PSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgU1ZmckRhdGFGaWVsZDoNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIEZpZWxkTmFtZT1Ob25lKToNCj4gDQo+ICsgICAgICAgIHNlbGYuRmllbGROYW1lID0gRmll bGROYW1lDQo+IA0KPiArICAgICAgICBzZWxmLkZpZWxkVHlwZSA9IE5vbmUNCj4gDQo+ICsgICAg ICAgIHNlbGYuT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5BcnJheU51bSA9IDANCj4g DQo+ICsgICAgICAgIHNlbGYuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxm LkJpdFdpZHRoID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5CaXRPZmZzZXQgPSAwDQo+IA0KPiAr ICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg SW50ZXJuYWxUeXBlczoNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFR5cGVOYW1lLCBU eXBlLCBTaXplLCBBbGlnbik6DQo+IA0KPiArICAgICAgICBzZWxmLlR5cGVOYW1lID0gVHlwZU5h bWUNCj4gDQo+ICsgICAgICAgIHNlbGYuVHlwZSA9IFR5cGUNCj4gDQo+ICsgICAgICAgIHNlbGYu U2l6ZSA9IFNpemUNCj4gDQo+ICsgICAgICAgIHNlbGYuQWxpZ24gPSBBbGlnbg0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2dJbnRlcm5hbFR5cGVzVGFibGUgPSBbDQo+IA0KPiArICAgIEludGVy bmFsVHlwZXMoIlVJTlQ2NCIsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NCwNCj4gc2l6ZW9mKGNf dWxvbmdsb25nKSwgc2l6ZW9mKGNfdWxvbmdsb25nKSksDQo+IA0KPiArICAgIEludGVybmFsVHlw ZXMoIlVJTlQzMiIsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMiwgc2l6ZW9mKGNfdWxvbmcpLA0K PiBzaXplb2YoY191bG9uZykpLA0KPiANCj4gKyAgICBJbnRlcm5hbFR5cGVzKCJVSU5UMTYiLCBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMTYsIHNpemVvZihjX3VzaG9ydCksDQo+IHNpemVvZihjX3Vz aG9ydCkpLA0KPiANCj4gKyAgICBJbnRlcm5hbFR5cGVzKCJVSU5UOCIsIEVGSV9JRlJfVFlQRV9O VU1fU0laRV84LCBzaXplb2YoY191Ynl0ZSksDQo+IHNpemVvZihjX3VieXRlKSksDQo+IA0KPiAr ICAgIEludGVybmFsVHlwZXMoIkJPT0xFQU4iLCBFRklfSUZSX1RZUEVfQk9PTEVBTiwgc2l6ZW9m KGNfdWJ5dGUpLA0KPiBzaXplb2YoY191Ynl0ZSkpLA0KPiANCj4gKyAgICBJbnRlcm5hbFR5cGVz KCJFRklfR1VJRCIsIEVGSV9JRlJfVFlQRV9PVEhFUiwgc2l6ZW9mKEVGSV9HVUlEKSwNCj4gc2l6 ZW9mKGNfdWJ5dGUgKiA4KSksDQo+IA0KPiArICAgIEludGVybmFsVHlwZXMoIkVGSV9ISUlfREFU RSIsIEVGSV9JRlJfVFlQRV9EQVRFLCBzaXplb2YoRUZJX0hJSV9EQVRFKSwNCj4gc2l6ZW9mKGNf dXNob3J0KSksDQo+IA0KPiArICAgIEludGVybmFsVHlwZXMoIkVGSV9TVFJJTkdfSUQiLCBFRklf SUZSX1RZUEVfU1RSSU5HLCBzaXplb2YoY191c2hvcnQpLA0KPiBzaXplb2YoY191c2hvcnQpKSwN Cj4gDQo+ICsgICAgSW50ZXJuYWxUeXBlcygiRUZJX0hJSV9USU1FIiwgRUZJX0lGUl9UWVBFX1RJ TUUsIHNpemVvZihFRklfSElJX1RJTUUpLA0KPiBzaXplb2YoY191Ynl0ZSkpLA0KPiANCj4gKyAg ICBJbnRlcm5hbFR5cGVzKCJFRklfSElJX1JFRiIsIEVGSV9JRlJfVFlQRV9SRUYsIHNpemVvZihF RklfSElJX1JFRiksDQo+IHNpemVvZihFRklfR1VJRCkpLA0KPiANCj4gK10NCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJWYXJEYXRhVHlwZURCOg0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLlBhY2tBbGlnbiA9IERFRkFVTFRfUEFD S19BTElHTg0KPiANCj4gKyAgICAgICAgc2VsZi5QYWNrU3RhY2sgPSBOb25lDQo+IA0KPiArICAg ICAgICBzZWxmLkRhdGFUeXBlTGlzdCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3RGF0 YVR5cGUgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkN1cnJEYXRhVHlwZSA9IE5vbmUNCj4g DQo+ICsgICAgICAgIHNlbGYuQ3VyckRhdGFGaWVsZCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNl bGYuRmlyc3ROZXdEYXRhVHlwZU5hbWUgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkludGVy bmFsVHlwZXNMaXN0SW5pdCgpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBDbGVhcihzZWxmKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuUGFja0FsaWduID0gREVGQVVMVF9QQUNLX0FMSUdODQo+IA0K PiArICAgICAgICBzZWxmLlBhY2tTdGFjayA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuRGF0 YVR5cGVMaXN0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5OZXdEYXRhVHlwZSA9IE5vbmUN Cj4gDQo+ICsgICAgICAgIHNlbGYuQ3VyckRhdGFUeXBlID0gTm9uZQ0KPiANCj4gKyAgICAgICAg c2VsZi5DdXJyRGF0YUZpZWxkID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5GaXJzdE5ld0Rh dGFUeXBlTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuSW50ZXJuYWxUeXBlc0xpc3RJ bml0KCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEludGVybmFsVHlwZXNMaXN0SW5pdChzZWxm KToNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihnSW50ZXJuYWxUeXBlc1Rh YmxlKSk6DQo+IA0KPiArICAgICAgICAgICAgcE5ld1R5cGUgPSBTVmZyRGF0YVR5cGUoKQ0KPiAN Cj4gKyAgICAgICAgICAgIHBOZXdUeXBlLlR5cGVOYW1lID0gZ0ludGVybmFsVHlwZXNUYWJsZVtp XS5UeXBlTmFtZQ0KPiANCj4gKyAgICAgICAgICAgIHBOZXdUeXBlLlR5cGUgPSBnSW50ZXJuYWxU eXBlc1RhYmxlW2ldLlR5cGUNCj4gDQo+ICsgICAgICAgICAgICBwTmV3VHlwZS5BbGlnbiA9IGdJ bnRlcm5hbFR5cGVzVGFibGVbaV0uQWxpZ24NCj4gDQo+ICsgICAgICAgICAgICBwTmV3VHlwZS5U b3RhbFNpemUgPSBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlNpemUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBpZiBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVOYW1lID09ICJFRklfSElJ X0RBVEUiOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkID0gU1ZmckRhdGFGaWVs ZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBNb250aEZpZWxkID0gU1ZmckRhdGFGaWVsZCgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBEYXlGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLkZpZWxkTmFtZSA9ICJZZWFy Ig0KPiANCj4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYu R2V0RGF0YVR5cGUoIlVJTlQxNiIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBZZWFyRmllbGQu T2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLk5leHQgPSBwTW9u dGhGaWVsZA0KPiANCj4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLkFycmF5TnVtID0gMA0K PiANCj4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5GaWVsZE5hbWUgPSAiTW9u dGgiDQo+IA0KPiArICAgICAgICAgICAgICAgIHBNb250aEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNl bGYuR2V0RGF0YVR5cGUoIlVJTlQ4IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmll bGQuT2Zmc2V0ID0gMg0KPiANCj4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5OZXh0ID0g cERheUZpZWxkDQo+IA0KPiArICAgICAgICAgICAgICAgIHBNb250aEZpZWxkLkFycmF5TnVtID0g MA0KPiANCj4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgcERheUZpZWxkLkZpZWxkTmFtZSA9ICJE YXkiDQo+IA0KPiArICAgICAgICAgICAgICAgIHBEYXlGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxm LkdldERhdGFUeXBlKCJVSU5UOCIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBEYXlGaWVsZC5P ZmZzZXQgPSAzDQo+IA0KPiArICAgICAgICAgICAgICAgIHBEYXlGaWVsZC5OZXh0ID0gTm9uZQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBEYXlGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBZZWFyRmllbGQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIGdJbnRlcm5hbFR5cGVzVGFibGVbaV0uVHlwZU5hbWUg PT0gIkVGSV9ISUlfVElNRSI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkID0g U1ZmckRhdGFGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBNaW51dGVzRmllbGQgPSBT VmZyRGF0YUZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZCA9IFNW ZnJEYXRhRmllbGQoKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBwSG91cnNGaWVs ZC5GaWVsZE5hbWUgPSAiSG91cnMiDQo+IA0KPiArICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxk LkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUoIlVJTlQ4IikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcEhvdXJzRmllbGQuT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICBw SG91cnNGaWVsZC5OZXh0ID0gcE1pbnV0ZXNGaWVsZA0KPiANCj4gKyAgICAgICAgICAgICAgICBw SG91cnNGaWVsZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAgcEhvdXJzRmll bGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBN aW51dGVzRmllbGQuRmllbGROYW1lID0gIk1pbnV0ZXMiDQo+IA0KPiArICAgICAgICAgICAgICAg IHBNaW51dGVzRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgiVUlOVDgiKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLk9mZnNldCA9IDENCj4gDQo+ICsg ICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5OZXh0ID0gcFNlY29uZHNGaWVsZA0KPiANCj4g KyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkFycmF5TnVtID0gMA0KPiANCj4gKyAgICAg ICAgICAgICAgICBwTWludXRlc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLkZpZWxkTmFtZSA9ICJTZWNvbmRzIg0K PiANCj4gKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYu R2V0RGF0YVR5cGUoIlVJTlQ4IikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVs ZC5PZmZzZXQgPSAyDQo+IA0KPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuTmV4dCA9 IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5BcnJheU51bSA9IDAN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBIb3Vy c0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBnSW50ZXJuYWxUeXBlc1Rh YmxlW2ldLlR5cGVOYW1lID09ICJFRklfSElJX1JFRiI6DQo+IA0KPiArICAgICAgICAgICAgICAg IHBRdWVzdGlvbklkRmllbGQgPSBTVmZyRGF0YUZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcEZvcm1JZEZpZWxkID0gU1ZmckRhdGFGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAg IHBGb3JtU2V0R3VpZEZpZWxkID0gU1ZmckRhdGFGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBEZXZpY2VQYXRoRmllbGQgPSBTVmZyRGF0YUZpZWxkKCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5GaWVsZE5hbWUgPSAiUXVlc3Rpb25JZCIN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5GaWVsZFR5cGUsIF8gPSBz ZWxmLkdldERhdGFUeXBlKCJVSU5UMTYiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwUXVlc3Rp b25JZEZpZWxkLk9mZnNldCA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRG aWVsZC5OZXh0ID0gcEZvcm1JZEZpZWxkDQo+IA0KPiArICAgICAgICAgICAgICAgIHBRdWVzdGlv bklkRmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAgICAgICAgICAgICAgIHBRdWVzdGlvbklk RmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg IHBGb3JtSWRGaWVsZC5GaWVsZE5hbWUgPSAiRm9ybUlkIg0KPiANCj4gKyAgICAgICAgICAgICAg ICBwRm9ybUlkRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgiVUlOVDE2IikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkLk9mZnNldCA9IDINCj4gDQo+ICsg ICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkLk5leHQgPSBwRm9ybVNldEd1aWRGaWVsZA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwRm9ybUlkRmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgcEZvcm1TZXRHdWlkRmllbGQuRmllbGROYW1lID0gIkZvcm1T ZXRHdWlkIg0KPiANCj4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5GaWVsZFR5 cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCJFRklfR1VJRCIpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBGb3JtU2V0R3VpZEZpZWxkLk9mZnNldCA9IDQNCj4gDQo+ICsgICAgICAgICAgICAgICAg cEZvcm1TZXRHdWlkRmllbGQuTmV4dCA9IHBEZXZpY2VQYXRoRmllbGQNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcEZvcm1TZXRHdWlkRmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLkZpZWxkTmFtZSA9ICJEZXZpY2VQ YXRoIg0KPiANCj4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLkZpZWxkVHlwZSwg XyA9IHNlbGYuR2V0RGF0YVR5cGUoIkVGSV9TVFJJTkdfSUQiKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwRGV2aWNlUGF0aEZpZWxkLk9mZnNldCA9IDIwDQo+IA0KPiArICAgICAgICAgICAgICAg IHBEZXZpY2VQYXRoRmllbGQuTmV4dCA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICAgICAgcERl dmljZVBhdGhGaWVsZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAgcERldmlj ZVBhdGhGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBRdWVzdGlvbklkRmllbGQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBwTmV3VHlwZS5OZXh0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHBO ZXdUeXBlLk5leHQgPSBzZWxmLkRhdGFUeXBlTGlzdA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RGF0YVR5cGVMaXN0ID0gcE5ld1R5cGUNCj4gDQo+ICsgICAgICAgICAgICBwTmV3VHlwZSA9IE5v bmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldERhdGFUeXBlTGlzdChzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLkRhdGFUeXBlTGlzdA0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgUGFjayhzZWxmLCBMaW5lTnVtLCBBY3Rpb24sIElkZW50aWZpZXI9Tm9uZSwNCj4gTnVtYmVy PURFRkFVTFRfUEFDS19BTElHTik6DQo+IA0KPiArICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFD S19TSE9XOg0KPiANCj4gKyAgICAgICAgICAgIE1zZyA9IHN0ci5mb3JtYXQoInZhbHVlIG9mIHBy YWdtYSBwYWNrKHNob3cpID09ICVkIiAlDQo+IChzZWxmLlBhY2tBbGlnbikpDQo+IA0KPiArICAg ICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLlByaW50TXNnKExpbmVOdW0sICJXYXJuaW5nIiwgTXNn KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQWN0aW9uICYgVkZSX1BBQ0tfUFVTSDoNCj4g DQo+ICsgICAgICAgICAgICBwTmV3ID0gU1ZmclBhY2tTdGFja05vZGUoSWRlbnRpZmllciwgc2Vs Zi5QYWNrQWxpZ24pDQo+IA0KPiArICAgICAgICAgICAgaWYgcE5ldyBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SDQo+IA0KPiArICAgICAgICAgICAgcE5ldy5OZXh0ID0gc2VsZi5QYWNrU3RhY2sNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLlBhY2tTdGFjayA9IHBOZXcNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIEFjdGlvbiAmIFZGUl9QQUNLX1BPUDoNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9 IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLlBhY2tTdGFjayBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBnVmZyRXJyb3JIYW5kbGUuUHJpbnRNc2coTGluZU51bSwgIkVy cm9yIiwgIiNwcmFnbWENCj4gcGFjayhwb3AuLi4pIDogbW9yZSBwb3BzIHRoYW4gcHVzaGVzIikN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHNlbGYuUGFja1N0YWNrDQo+IA0K PiArICAgICAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgIGlmIHBOb2RlLk1hdGNoKElkZW50aWZpZXIpIGlzIFRydWU6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLlBhY2tBbGlnbiA9IHBOb2RlLk51bWJlcg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5QYWNrU3RhY2sgPSBwTm9kZS5OZXh0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg QWN0aW9uICYgVkZSX1BBQ0tfQVNTSUdOOg0KPiANCj4gKyAgICAgICAgICAgIFBhY2tBbGlnbiA9 IChOdW1iZXIgKyBOdW1iZXIgJSAyKSBpZiAoTnVtYmVyID4gMSkgZWxzZSBOdW1iZXINCj4gDQo+ ICsgICAgICAgICAgICBpZiBQYWNrQWxpZ24gPT0gWkVST19BTElHTiBvciBQYWNrQWxpZ24gPiBN QVhfUEFDS19BTElHTjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLlBy aW50TXNnKExpbmVOdW0sICJFcnJvciIsICJleHBlY3RlZCBwcmFnbWENCj4gcGFyYW1ldGVyIHRv IGJlICcxJywgJzInLCAnNCcsICc4Jywgb3IgJzE2JyIpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5QYWNrQWxpZ24gPSBQYWNrQWxpZ24NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRGVjbGFyZURhdGFUeXBlQmVnaW4oc2VsZik6 DQo+IA0KPiArICAgICAgICBwTmV3VHlwZSA9IFNWZnJEYXRhVHlwZSgpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTmV3VHlwZS5UeXBlTmFtZSA9ICIiDQo+IA0KPiArICAgICAgICBwTmV3VHlw ZS5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVSDQo+IA0KPiArICAgICAgICBwTmV3VHlwZS5BbGln biA9IERFRkFVTFRfQUxJR04NCj4gDQo+ICsgICAgICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IDAN Cj4gDQo+ICsgICAgICAgIHBOZXdUeXBlLkhhc0JpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsgICAg ICAgIHBOZXdUeXBlLk1lbWJlcnMgPSBOb25lDQo+IA0KPiArICAgICAgICBwTmV3VHlwZS5OZXh0 ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5OZXdEYXRhVHlwZSA9IHBOZXdUeXBlDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXROZXdUeXBlVHlwZShzZWxmLCBUeXBlKToNCj4gDQo+ICsg ICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgVHlwZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsgICAgICAgICMgbmVl ZCB0byBsaW1pdCB0aGUgdmFsdWUgb2YgdGhlIHR5cGUNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3 RGF0YVR5cGUuVHlwZSA9IFR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0 TmV3VHlwZVRvdGFsU2l6ZShzZWxmLCBTaXplKToNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3RGF0 YVR5cGUuVG90YWxTaXplID0gU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TmV3VHlw ZUFsaWduKHNlbGYsIEFsaWduKToNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuQWxp Z24gPSBBbGlnbg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TmV3VHlwZU5hbWUoc2VsZiwg VHlwZU5hbWUpOg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5OZXdEYXRhVHlwZSBpcyBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1Jf U0tJUEVEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBUeXBlTmFtZSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJS T1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGxlbihUeXBlTmFtZSkgPj0gTUFYX05BTUVf TEVOOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBUeXBlID0gc2VsZi5E YXRhVHlwZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBUeXBlIGlzIG5vdCBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHBUeXBlLlR5cGVOYW1lID09IFR5cGVOYW1lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0K PiANCj4gKyAgICAgICAgICAgIHBUeXBlID0gcFR5cGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgc2VsZi5OZXdEYXRhVHlwZS5UeXBlTmFtZSA9IFR5cGVOYW1lDQo+IA0KPiArICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEFsaWduU3R1ZmYoc2VsZiwgU2l6ZSwgQWxpZ24pOg0KPiANCj4gKyAgICAgICAg cmV0dXJuIEFsaWduIC0gKFNpemUpICUgKEFsaWduKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg RGVjbGFyZURhdGFUeXBlRW5kKHNlbGYpOg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5OZXdEYXRh VHlwZS5UeXBlTmFtZSA9PSAiIjoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplICUgc2VsZi5OZXdE YXRhVHlwZS5BbGlnbiAhPSAwOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUu VG90YWxTaXplICs9DQo+IHNlbGYuQWxpZ25TdHVmZihzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6 ZSwgc2VsZi5OZXdEYXRhVHlwZS5BbGlnbikNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5 cGUuTmV4dCA9IHNlbGYuRGF0YVR5cGVMaXN0DQo+IA0KPiArICAgICAgICBzZWxmLkRhdGFUeXBl TGlzdCA9IHNlbGYuTmV3RGF0YVR5cGUNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuRmlyc3ROZXdE YXRhVHlwZU5hbWUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpcnN0TmV3RGF0 YVR5cGVOYW1lID0gc2VsZi5OZXdEYXRhVHlwZS5UeXBlTmFtZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgc2VsZi5OZXdEYXRhVHlwZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyB0d28g ZGVmaW5pdGlvbnMNCj4gDQo+ICsgICAgZGVmIEdldERhdGFUeXBlU2l6ZUJ5VHlwZU5hbWUoc2Vs ZiwgVHlwZU5hbWUpOg0KPiANCj4gKyAgICAgICAgU2l6ZSA9IDANCj4gDQo+ICsgICAgICAgIHBE YXRhVHlwZSA9IHNlbGYuRGF0YVR5cGVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwRGF0YVR5 cGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcERhdGFUeXBlLlR5cGVOYW1l ID09IFR5cGVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBTaXplID0gcERhdGFUeXBlLlRv dGFsU2l6ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0 YVR5cGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldERh dGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZiwgRGF0YVR5cGUpOg0KPiANCj4gKyAgICAgICAgU2l6 ZSA9IDANCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gRGF0YVR5cGUgJiAweDBGDQo+IA0KPiAr ICAgICAgICAjIEZvciB1c2VyIGRlZmluZWQgZGF0YSB0eXBlLCB0aGUgc2l6ZSBjYW4ndCBiZSBn b3QgYnkgdGhpcyBmdW5jdGlvbi4NCj4gDQo+ICsgICAgICAgIGlmIERhdGFUeXBlID09IEVGSV9J RlJfVFlQRV9PVEhFUjoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgIHBEYXRhVHlwZSA9IHNlbGYu RGF0YVR5cGVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwRGF0YVR5cGUgaXMgbm90IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgaWYgRGF0YVR5cGUgPT0gcERhdGFUeXBlLlR5cGU6DQo+IA0K PiArICAgICAgICAgICAgICAgIFNpemUgPSBwRGF0YVR5cGUuVG90YWxTaXplDQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiANCj4gKyAgICAgICAgICAgIHBEYXRhVHlwZSA9IHBEYXRhVHlwZS5OZXh0DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VO REVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRXh0cmFjdFN0cnVjdFR5cGVOYW1lKHNl bGYsIFZhclN0cik6DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgaW5k ZXggPSBWYXJTdHIuaW5kZXgoIi4iKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0ciwgbGVuKFZhclN0cikNCj4gDQo+ICsg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0clswOmluZGV4XSwg aW5kZXggKyAxDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBFeHRyYWN0RmllbGROYW1lQW5kQXJy YXJ5KHNlbGYsIFZhclN0ciwgcyk6DQo+IA0KPiArICAgICAgICBBcnJheUlkeCA9IElOVkFMSURf QVJSQVlfSU5ERVgNCj4gDQo+ICsgICAgICAgIHNfY29weSA9IHMNCj4gDQo+ICsgICAgICAgIHdo aWxlIHMgPCBsZW4oVmFyU3RyKSBhbmQgVmFyU3RyW3NdICE9ICIuIiBhbmQgVmFyU3RyW3NdICE9 ICJbIiBhbmQNCj4gVmFyU3RyW3NdICE9ICJdIjoNCj4gDQo+ICsgICAgICAgICAgICBzICs9IDEN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEZOYW1lID0gVmFyU3RyW3NfY29weTpzXQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgcyA9PSBsZW4oVmFyU3RyKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gQXJyYXlJZHgsIHMsIEZOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgVmFyU3RyW3NdID09ICIuIjoNCj4gDQo+ ICsgICAgICAgICAgICBzICs9IDENCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gQXJyYXlJZHgs IHMsIEZOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgVmFyU3RyW3NdID09ICJbIjoNCj4gDQo+ICsgICAgICAgICAgICBzICs9 IDENCj4gDQo+ICsgICAgICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgICAgIGUgPSBz ICsgVmFyU3RyW3M6XS5pbmRleCgiXSIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZXhj ZXB0IFZhbHVlRXJyb3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25l LCBOb25lLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fREFUQV9TVFJJTkdfRVJST1INCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBBcnJheVN0ciA9 IFZhclN0cltzOmVdDQo+IA0KPiArICAgICAgICAgICAgICAgIEFycmF5SWR4ID0gaW50KEFycmF5 U3RyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBWYXJTdHJbZV0gPT0gIl0iOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgZSArPSAxDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIGUg PCBsZW4oVmFyU3RyKSBhbmQgKFZhclN0cltlXSA9PSAiLiIpOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZSArPSAxDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwg ZSwgRk5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBpZiBWYXJTdHJbc10gPT0gIl0iOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBOb25lLCBOb25lLCBOb25lLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fREFUQV9TVFJJ TkdfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywgRk5h bWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBHZXRUeXBlRmllbGQoc2VsZiwgRk5hbWUsIFR5cGUpOg0KPiANCj4gKyAgICAgICAgaWYg Rk5hbWUgaXMgTm9uZSBvciBUeXBlIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcEZpZWxkID0gVHlwZS5NZW1iZXJzDQo+IA0KPiArICAgICAgICB3aGlsZSBw RmllbGQgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgVHlwZS5UeXBlID09IEVG SV9JRlJfVFlQRV9USU1FOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBGTmFtZSA9PSAiSG91 ciI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBGTmFtZSA9ICJIb3VycyINCj4gDQo+ICsg ICAgICAgICAgICAgICAgZWxpZiBGTmFtZSA9PSAiTWludXRlIjoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIEZOYW1lID09ICJNaW51dGVzIg0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlm IEZOYW1lID09ICJTZWNvbmQiOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRk5hbWUgPSAi U2Vjb25kcyINCj4gDQo+ICsgICAgICAgICAgICBpZiBwRmllbGQuRmllbGROYW1lID09IEZOYW1l Og0KPiANCj4gKyAgICAgICAgICAgICAgICBGaWVsZCA9IHBGaWVsZA0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gRmllbGQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgcEZpZWxkID0gcEZpZWxkLk5leHQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5E RUZJTkVEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBJc1RoaXNCaXRGaWVsZChzZWxmLCBWYXJT dHJOYW1lKToNCj4gDQo+ICsgICAgICAgIFROYW1lLCBpID0gc2VsZi5FeHRyYWN0U3RydWN0VHlw ZU5hbWUoVmFyU3RyTmFtZSkNCj4gDQo+ICsgICAgICAgIHBUeXBlLCBSZXR1cm5Db2RlID0gc2Vs Zi5HZXREYXRhVHlwZShUTmFtZSkNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IE5vbmUsIFJldHVybkNvZGUNCj4gDQo+ICsgICAgICAgIHBGaWVsZCA9IE5vbmUNCj4gDQo+ICsg ICAgICAgIHdoaWxlIGkgPCBsZW4oVmFyU3RyTmFtZSk6DQo+IA0KPiArICAgICAgICAgICAgIyBp IHN0YXJ0IGZyb20gZmllbGQNCj4gDQo+ICsgICAgICAgICAgICBfLCBpLCBGTmFtZSwgUmV0dXJu Q29kZSA9DQo+IHNlbGYuRXh0cmFjdEZpZWxkTmFtZUFuZEFycmFyeShWYXJTdHJOYW1lLCBpKQ0K PiANCj4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBSZXR1cm5D b2RlDQo+IA0KPiArICAgICAgICAgICAgcEZpZWxkLCBSZXR1cm5Db2RlID0gc2VsZi5HZXRUeXBl RmllbGQoRk5hbWUsIHBUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBOb25lLCBSZXR1cm5Db2RlDQo+IA0KPiArICAgICAgICAgICAgcFR5cGUgPSBwRmll bGQuRmllbGRUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBwRmllbGQgaXMgbm90IE5v bmUgYW5kIHBGaWVsZC5Jc0JpdEZpZWxkOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBUcnVl LCBSZXR1cm5Db2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gRmFsc2UsIFJldHVybkNvZGUNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEZpZWxkT2Zmc2V0KHNlbGYsIEZpZWxkLCBBcnJheUlk eCwgSXNCaXRGaWVsZCk6DQo+IA0KPiArICAgICAgICBpZiBGaWVsZCBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxf RVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIChBcnJheUlkeCAhPSBJTlZBTElEX0FS UkFZX0lOREVYKSBhbmQgKEZpZWxkLkFycmF5TnVtID09IDAgb3INCj4gRmllbGQuQXJyYXlOdW0g PD0gQXJyYXlJZHgpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fRVJST1JfQVJSQVJZX05VTQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg SWR4ID0gMCBpZiBBcnJheUlkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVYIGVsc2UgQXJyYXlJZHgN Cj4gDQo+ICsgICAgICAgIGlmIElzQml0RmllbGQ6DQo+IA0KPiArICAgICAgICAgICAgT2Zmc2V0 ID0gRmllbGQuQml0T2Zmc2V0ICsgRmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSAqIElkeCAqIDgN Cj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgT2Zmc2V0ID0gRmllbGQu T2Zmc2V0ICsgRmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSAqIElkeA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcmV0dXJuIE9mZnNldCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEZpZWxkV2lkdGgoc2VsZiwgRmllbGQpOg0KPiAN Cj4gKyAgICAgICAgaWYgRmllbGQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g MA0KPiANCj4gKyAgICAgICAgcmV0dXJuIEZpZWxkLkZpZWxkVHlwZS5UeXBlDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZXRGaWVsZFNpemUoc2VsZiwgRmllbGQsIEFycmF5SWR4LCBCaXRGaWVs ZCk6DQo+IA0KPiArICAgICAgICBpZiBGaWVsZCBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIChBcnJheUlkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVYKSBhbmQgKEZp ZWxkLkFycmF5TnVtICE9IDApOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBGaWVsZC5GaWVs ZFR5cGUuVG90YWxTaXplICogRmllbGQuQXJyYXlOdW0NCj4gDQo+ICsgICAgICAgIGVsaWYgQml0 RmllbGQ6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIEZpZWxkLkJpdFdpZHRoDQo+IA0KPiAr ICAgICAgICByZXR1cm4gRmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0RGF0YUZpZWxkSW5mbyhzZWxmLCBWYXJTdHIpOg0KPiANCj4gKyAgICAgICAg IyBWYXJTdHIgLT4gVHlwZS5GaWVsZA0KPiANCj4gKyAgICAgICAgT2Zmc2V0ID0gMA0KPiANCj4g KyAgICAgICAgVHlwZSA9IEVGSV9JRlJfVFlQRV9PVEhFUg0KPiANCj4gKyAgICAgICAgU2l6ZSA9 IDANCj4gDQo+ICsgICAgICAgIEJpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIFROYW1lLCBpID0gc2VsZi5FeHRyYWN0U3RydWN0VHlwZU5hbWUoVmFyU3RyKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFRO YW1lKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBT aXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgQml0Rmll bGQsIFJldHVybkNvZGUgPSBzZWxmLklzVGhpc0JpdEZpZWxkKFZhclN0cikNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0 RmllbGQsIFJldHVybkNvZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgaWYgaXQgaXMgbm90 IHN0cnVjdCBkYXRhIHR5cGUNCj4gDQo+ICsgICAgICAgIFR5cGUgPSBwVHlwZS5UeXBlDQo+IA0K PiArICAgICAgICBTaXplID0gcFR5cGUuVG90YWxTaXplDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICB3aGlsZSBpIDwgbGVuKFZhclN0cik6DQo+IA0KPiArICAgICAgICAgICAgQXJyYXlJZHgsIGks IEZOYW1lLCBSZXR1cm5Db2RlID0NCj4gc2VsZi5FeHRyYWN0RmllbGROYW1lQW5kQXJyYXJ5KFZh clN0ciwgaSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zm c2V0LCBUeXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAgICAgICAg IHBGaWVsZCwgUmV0dXJuQ29kZSA9IHNlbGYuR2V0VHlwZUZpZWxkKEZOYW1lLCBwVHlwZSkNCj4g DQo+ICsgICAgICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBT aXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAgICAgICAgIHBUeXBlID0gcEZp ZWxkLkZpZWxkVHlwZQ0KPiANCj4gKyAgICAgICAgICAgIFRtcCwgUmV0dXJuQ29kZSA9IHNlbGYu R2V0RmllbGRPZmZzZXQocEZpZWxkLCBBcnJheUlkeCwNCj4gcEZpZWxkLklzQml0RmllbGQpDQo+ IA0KPiArICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwg U2l6ZSwgQml0RmllbGQsIFJldHVybkNvZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBp ZiBCaXRGaWVsZCBhbmQgcEZpZWxkLklzQml0RmllbGQgaXMgRmFsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIE9mZnNldCA9IGludChPZmZzZXQgKyBUbXAgKiA4KQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIE9mZnNldCA9IGludChPZmZzZXQgKyBU bXApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgVHlwZSA9IHNlbGYuR2V0RmllbGRXaWR0 aChwRmllbGQpDQo+IA0KPiArICAgICAgICAgICAgU2l6ZSA9IHNlbGYuR2V0RmllbGRTaXplKHBG aWVsZCwgQXJyYXlJZHgsIEJpdEZpZWxkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJu IE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0RmllbGQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEYXRhVHlwZUFkZEZpZWxk KHNlbGYsIEZpZWxkTmFtZSwgVHlwZU5hbWUsIEFycmF5TnVtLA0KPiBGaWVsZEluVW5pb24pOg0K PiANCj4gKyAgICAgICAgcEZpZWxkVHlwZSwgUmV0dXJuQ29kZSA9IHNlbGYuR2V0RGF0YVR5cGUo VHlwZU5hbWUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBS ZXR1cm5Db2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBNYXhEYXRhVHlwZVNpemUgPSBzZWxm Lk5ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgbGVuKEZp ZWxkTmFtZSkgPj0gTUFYX05BTUVfTEVOOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHBUbXAgPSBzZWxmLk5ld0RhdGFUeXBlLk1lbWJlcnMNCj4gDQo+ICsgICAgICAgIHdo aWxlIHBUbXAgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcFRtcC5GaWVsZE5h bWUgPT0gRmllbGROYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIHBUbXAgPSBwVG1w Lk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEFsaWduID0gbWluKHNlbGYuUGFja0FsaWdu LCBwRmllbGRUeXBlLkFsaWduKQ0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkID0gU1ZmckRhdGFG aWVsZCgpDQo+IA0KPiArICAgICAgICBpZiBwTmV3RmllbGQgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VT DQo+IA0KPiArICAgICAgICBwTmV3RmllbGQuRmllbGROYW1lID0gRmllbGROYW1lDQo+IA0KPiAr ICAgICAgICBwTmV3RmllbGQuRmllbGRUeXBlID0gcEZpZWxkVHlwZQ0KPiANCj4gKyAgICAgICAg cE5ld0ZpZWxkLkFycmF5TnVtID0gQXJyYXlOdW0NCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZC5J c0JpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuTmV3RGF0 YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBwTmV3Rmll bGQuT2Zmc2V0ID0gc2VsZi5OZXdEYXRhVHlwZS5Ub3RhbFNpemUNCj4gDQo+ICsgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgcE5ld0ZpZWxkLk9mZnNldCA9IHNlbGYuTmV3RGF0YVR5 cGUuVG90YWxTaXplICsNCj4gc2VsZi5BbGlnblN0dWZmKHNlbGYuTmV3RGF0YVR5cGUuVG90YWxT aXplLCBBbGlnbikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUu TWVtYmVycyBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuTWVt YmVycyA9IHBOZXdGaWVsZA0KPiANCj4gKyAgICAgICAgICAgIHBOZXdGaWVsZC5OZXh0ID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBwVG1wID0gc2VsZi5O ZXdEYXRhVHlwZS5NZW1iZXJzDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgcFRtcC5OZXh0IGlz IG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQo+IA0K PiArICAgICAgICAgICAgcFRtcC5OZXh0ID0gcE5ld0ZpZWxkDQo+IA0KPiArICAgICAgICAgICAg cE5ld0ZpZWxkLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLk5ld0Rh dGFUeXBlLkFsaWduID0gbWluKHNlbGYuUGFja0FsaWduLCBtYXgocEZpZWxkVHlwZS5BbGlnbiwN Cj4gc2VsZi5OZXdEYXRhVHlwZS5BbGlnbikpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBG aWVsZEluVW5pb246DQo+IA0KPiArICAgICAgICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwgcE5l d0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu TmV3RGF0YVR5cGUuVG90YWxTaXplID0gcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUNCj4g DQo+ICsgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICBOdW0gPSBBcnJheU51bSBpZiBBcnJheU51bSAhPSAwIGVs c2UgMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplID0gcE5l d0ZpZWxkLk9mZnNldCArDQo+IChwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSkgKiBOdW0N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRGF0YVR5cGVBZGRCaXRGaWVsZChzZWxm LCBGaWVsZE5hbWUsIFR5cGVOYW1lLCBXaWR0aCwNCj4gRmllbGRJblVuaW9uKToNCj4gDQo+ICsg ICAgICAgIHBGaWVsZFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFR5cGVOYW1l KQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgV2lkdGggPiBNQVhfQklUX1dJRFRIOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQklUX1dJRFRIX0VSUk9SDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBXaWR0aCA+IChwRmllbGRUeXBlLlRvdGFsU2l6ZSkg KiA4Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f QklUX1dJRFRIX0VSUk9SDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiAoRmllbGROYW1lIGlz IG5vdCBOb25lKSBhbmQgKGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgV2lkdGggPT0gMCBhbmQgRmllbGROYW1l IGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBUbXAg PSBzZWxmLk5ld0RhdGFUeXBlLk1lbWJlcnMNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBUbXAgaXMg bm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgRmllbGROYW1lIGlzIG5vdCBOb25lIGFu ZCBwVG1wLkZpZWxkTmFtZSA9PSBGaWVsZE5hbWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+IA0KPiArICAgICAgICAg ICAgcFRtcCA9IHBUbXAuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgQWxpZ24gPSBtaW4o c2VsZi5QYWNrQWxpZ24sIHBGaWVsZFR5cGUuQWxpZ24pDQo+IA0KPiArICAgICAgICBVcGRhdGVU b3RhbFNpemUgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkID0gU1Zm ckRhdGFGaWVsZCgpDQo+IA0KPiArICAgICAgICBpZiBwTmV3RmllbGQgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVT T1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBNYXhEYXRhVHlwZVNpemUgPSBzZWxmLk5l d0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkZp ZWxkTmFtZSA9IEZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkZpZWxkVHlwZSA9 IHBGaWVsZFR5cGUNCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZC5Jc0JpdEZpZWxkID0gVHJ1ZQ0K PiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkJpdFdpZHRoID0gV2lkdGgNCj4gDQo+ICsgICAgICAg IHBOZXdGaWVsZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZC5CaXRPZmZz ZXQgPSAwDQo+IA0KPiArICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gMA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgc2VsZi5OZXdEYXRhVHlwZS5NZW1iZXJzIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5OZXdEYXRhVHlwZS5NZW1iZXJzID0gcE5ld0ZpZWxkDQo+IA0KPiAr ICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBOb25lDQo+IA0KPiArICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgIHBUbXAgPSBzZWxmLk5ld0RhdGFUeXBlLk1lbWJlcnMNCj4gDQo+ ICsgICAgICAgICAgICB3aGlsZSBwVG1wLk5leHQgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4gDQo+ICsgICAgICAgICAgICBwVG1wLk5leHQg PSBwTmV3RmllbGQNCj4gDQo+ICsgICAgICAgICAgICBwTmV3RmllbGQuTmV4dCA9IE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIEZpZWxkSW5VbmlvbjoNCj4gDQo+ICsgICAgICAgICAg ICBwTmV3RmllbGQuT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgICAgIGlmIE1heERhdGFUeXBl U2l6ZSA8IHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZSA9IHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90 YWxTaXplDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICMgQ2hlY2sg d2hldGhlciB0aGUgYml0IGZpZWxkcyBjYW4gYmUgY29udGFpbmVkIHdpdGhpbiBvbmUgRmllbGRU eXBlLg0KPiANCj4gKyAgICAgICAgICAgIGNvbmQxID0gKHBUbXAgaXMgbm90IE5vbmUpIGFuZCAo cFRtcC5Jc0JpdEZpZWxkKSBhbmQNCj4gKHBUbXAuRmllbGRUeXBlLlR5cGVOYW1lID09IHBOZXdG aWVsZC5GaWVsZFR5cGUuVHlwZU5hbWUpDQo+IA0KPiArICAgICAgICAgICAgY29uZDIgPSAocFRt cCBpcyBub3QgTm9uZSkgYW5kIChwVG1wLkJpdE9mZnNldCAtIHBUbXAuT2Zmc2V0ICogOCArDQo+ IHBUbXAuQml0V2lkdGggKyBwTmV3RmllbGQuQml0V2lkdGggPD0gcE5ld0ZpZWxkLkZpZWxkVHlw ZS5Ub3RhbFNpemUgKiA4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGNvbmQxIGFuZCBjb25kMjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IHBUbXAuQml0T2Zm c2V0ICsgcFRtcC5CaXRXaWR0aA0KPiANCj4gKyAgICAgICAgICAgICAgICBwTmV3RmllbGQuT2Zm c2V0ID0gcFRtcC5PZmZzZXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgcE5l d0ZpZWxkLkJpdFdpZHRoID09IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwTmV3Rmll bGQuQml0V2lkdGggPSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSAqIDggLQ0KPiAocE5l d0ZpZWxkLkJpdE9mZnNldCAtIHBUbXAuT2Zmc2V0ICogOCkNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwTmV3RmllbGQuQml0T2Zmc2V0ID0gc2VsZi5O ZXdEYXRhVHlwZS5Ub3RhbFNpemUgKiA4DQo+IA0KPiArICAgICAgICAgICAgICAgIFVwZGF0ZVRv dGFsU2l6ZSA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFVwZGF0ZVRvdGFsU2l6 ZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZSAlIEFs aWduID09IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSBzZWxm Lk5ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSBzZWxmLk5ld0RhdGFUeXBlLlRvdGFs U2l6ZSArDQo+IHNlbGYuQWxpZ25TdHVmZihzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZSwgQWxp Z24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3 RmllbGQuT2Zmc2V0ICsNCj4gcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuQWxpZ24gPSBtaW4oc2VsZi5QYWNrQWxp Z24sIG1heChwRmllbGRUeXBlLkFsaWduLA0KPiBzZWxmLk5ld0RhdGFUeXBlLkFsaWduKSkNCj4g DQo+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuSGFzQml0RmllbGQgPSBUcnVlDQo+IA0KPiAr ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldERhdGFUeXBlKHNlbGYsIFR5cGVOYW1lKToNCj4gDQo+ICsgICAg ICAgIGlmIFR5cGVOYW1lIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUs IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9TS0lQRUQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIERhdGFUeXBlID0gc2VsZi5EYXRhVHlwZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxl IERhdGFUeXBlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIERhdGFUeXBlLlR5 cGVOYW1lID09IFR5cGVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gRGF0YVR5 cGUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAg RGF0YVR5cGUgPSBEYXRhVHlwZS5OZXh0DQo+IA0KPiArICAgICAgICByZXR1cm4gTm9uZSwgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg RGF0YVR5cGVIYXNCaXRGaWVsZChzZWxmLCBUeXBlTmFtZSk6DQo+IA0KPiArICAgICAgICBpZiBU eXBlTmFtZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcFR5cGUgPSBzZWxmLkRhdGFUeXBlTGlzdA0KPiANCj4gKyAgICAg ICAgd2hpbGUgcFR5cGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcFR5cGUu VHlwZU5hbWUgPT0gVHlwZU5hbWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+IA0K PiArICAgICAgICAgICAgcFR5cGUgPSBwVHlwZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBpZiBwVHlwZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcFRtcCA9IHBUeXBlLk1lbWJlcnMNCj4gDQo+ICsgICAgICAg IHdoaWxlIHBUbXAgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcFRtcC5Jc0Jp dEZpZWxkOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gKyAgICAg ICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4gDQo+ICsgICAgICAgIHJldHVybiBGYWxzZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgRHVtcChzZWxmLCBmKToNCj4gDQo+ICsgICAgICAgIGYud3Jp dGUoIlxuXG4qKioqKioqKioqKioqXG4iKQ0KPiANCj4gKyAgICAgICAgZi53cml0ZSgiXHRcdFBh Y2tBbGlnbiA9ICIgKyBzdHIoc2VsZi5QYWNrQWxpZ24pICsgIlxuIikNCj4gDQo+ICsgICAgICAg IHBOb2RlID0gc2VsZi5EYXRhVHlwZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlz IG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGYud3JpdGUoIlx0XHRzdHJ1Y3Qge30gOiBB bGlnbiA6IFt7fV0gIFRvdGFsU2l6ZSA6DQo+IFt7OiN4fV1cblxuIi5mb3JtYXQocE5vZGUuVHlw ZU5hbWUsIHBOb2RlLkFsaWduLCBwTm9kZS5Ub3RhbFNpemUpKQ0KPiANCj4gKyAgICAgICAgICAg IGYud3JpdGUoIlx0XHRzdHJ1Y3Qge30iLmZvcm1hdChzdHIocE5vZGUuVHlwZU5hbWUpKSArICJc dHtcbiIpDQo+IA0KPiArICAgICAgICAgICAgRk5vZGUgPSBwTm9kZS5NZW1iZXJzDQo+IA0KPiAr ICAgICAgICAgICAgd2hpbGUgRk5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIGlmIEZOb2RlLkFycmF5TnVtID4gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoIlx0XHRcdCt7OjA+OGR9W3s6MD44eH1dIHt9W3t9XSA8e30+XG4iLmZvcm1hdChGTm9k ZS5PZmZzZXQsDQo+IEZOb2RlLk9mZnNldCwgRk5vZGUuRmllbGROYW1lLCBGTm9kZS5BcnJheU51 bSwNCj4gRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoIlx0XHRcdCt7OjA+OGR9W3s6MD44eH1dIHt9W3t9XSA8e30+XG4iLmZvcm1h dChGTm9kZS5PZmZzZXQsDQo+IEZOb2RlLkJpdE9mZnNldCwgRk5vZGUuRmllbGROYW1lLCBGTm9k ZS5BcnJheU51bSwNCj4gRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lKSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZWxpZiBGTm9kZS5GaWVsZE5hbWUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCJcdFx0XHQrezowPjhkfVt7OjA+OHh9XSB7fSA8e30+XG4i LmZvcm1hdChGTm9kZS5PZmZzZXQsDQo+IEZOb2RlLk9mZnNldCwgRk5vZGUuRmllbGROYW1lLCBG Tm9kZS5GaWVsZFR5cGUuVHlwZU5hbWUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgiXHRcdFx0K3s6MD44ZH1bezowPjh4fV0ge30gPHt9PlxuIi5mb3JtYXQoRk5vZGUuT2Zm c2V0LA0KPiBGTm9kZS5CaXRPZmZzZXQsIEZOb2RlLkZpZWxkTmFtZSwgRk5vZGUuRmllbGRUeXBl LlR5cGVOYW1lKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoIlx0XHRcdCt7OjA+OGR9W3s6MD44eH1dIDx7fT5cbiIuZm9y bWF0KEZOb2RlLk9mZnNldCwNCj4gRk5vZGUuT2Zmc2V0LCBGTm9kZS5GaWVsZFR5cGUuVHlwZU5h bWUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiXHRcdFx0K3s6MD44ZH1b ezowPjh4fV0gPHt9PlxuIi5mb3JtYXQoRk5vZGUuT2Zmc2V0LA0KPiBGTm9kZS5CaXRPZmZzZXQs IEZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIEZOb2Rl ID0gRk5vZGUuTmV4dA0KPiANCj4gKyAgICAgICAgICAgIGYud3JpdGUoIlx0XHR9O1xuIikNCj4g DQo+ICsgICAgICAgICAgICBmLndyaXRlKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpDQo+IA0KPiArICAgICAgICAgICAg cE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IGYud3JpdGUoIioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKipcbiIpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgU1ZmckRlZmF1bHRTdG9yZU5vZGU6DQo+IA0K PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBPYmpBZGRyPU5vbmUsIFJlZk5hbWU9IiIsIERlZmF1 bHRTdG9yZU5hbWVJZD0wLA0KPiBEZWZhdWx0SWQ9MCk6DQo+IA0KPiArICAgICAgICBzZWxmLk9i akFkZHIgPSBPYmpBZGRyDQo+IA0KPiArICAgICAgICBzZWxmLlJlZk5hbWUgPSBSZWZOYW1lDQo+ IA0KPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZU5hbWVJZCA9IERlZmF1bHRTdG9yZU5hbWVJ ZA0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gDQo+ICsgICAg ICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJE ZWZhdWx0U3RvcmU6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuRGVmYXVsdFN0b3JlTGlzdCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IENsZWFyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5EZWZhdWx0U3RvcmVMaXN0ID0gTm9u ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgUmVnaXN0ZXJEZWZhdWx0U3RvcmUoc2VsZiwgT2Jq QWRkcjogRUZJX0lGUl9ERUZBVUxUU1RPUkUsIFJlZk5hbWUsDQo+IERlZmF1bHRTdG9yZU5hbWVJ ZCwgRGVmYXVsdElkKToNCj4gDQo+ICsgICAgICAgIGlmIFJlZk5hbWUgPT0gIiIgb3IgUmVmTmFt ZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5E ZWZhdWx0U3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5SZWZOYW1lID09IFJlZk5hbWU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVE DQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBwTm9kZSA9IFNWZnJEZWZhdWx0U3RvcmVOb2RlKE9iakFkZHIsIFJlZk5hbWUsDQo+ IERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgcE5vZGUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBw Tm9kZS5OZXh0ID0gc2VsZi5EZWZhdWx0U3RvcmVMaXN0DQo+IA0KPiArICAgICAgICBzZWxmLkRl ZmF1bHRTdG9yZUxpc3QgPSBwTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBV cGRhdGVEZWZhdWx0VHlwZShzZWxmLCBEZWZhdWx0Tm9kZSk6DQo+IA0KPiArICAgICAgICBwTm9k ZSA9IHNlbGYuRGVmYXVsdFN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMg bm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuT2JqQWRkci5EZWZhdWx0SWQg PT0gRGVmYXVsdE5vZGUuRGF0YS5HZXREZWZhdWx0SWQoKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgRGVmYXVsdE5vZGUuRGF0YS5TZXRUeXBlKHBOb2RlLlJlZk5hbWUpDQo+IA0KPiArICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEZWZhdWx0 SWRSZWdpc3RlcmVkKHNlbGYsIERlZmF1bHRJZCk6DQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNl bGYuRGVmYXVsdFN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuRGVmYXVsdElkID09IERlZmF1bHRJZDoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUNCj4gDQo+ICsgICAgICAgICAgICBw Tm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBGYWxzZQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgUmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQoc2VsZiwg RGVmYXVsdElkLCBSZWZOYW1lLA0KPiBEZWZhdWx0U3RvcmVOYW1lSWQpOg0KPiANCj4gKyAgICAg ICAgcE5vZGUgPSBzZWxmLkRlZmF1bHRTdG9yZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBO b2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLkRlZmF1bHRJZCA9 PSBEZWZhdWx0SWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+IA0KPiArICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBwTm9k ZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBwTm9kZS5E ZWZhdWx0U3RvcmVOYW1lSWQgPT0gRUZJX1NUUklOR19JRF9JTlZBTElEOg0KPiANCj4gKyAgICAg ICAgICAgIHBOb2RlLkRlZmF1bHRTdG9yZU5hbWVJZCA9IERlZmF1bHRTdG9yZU5hbWVJZA0KPiAN Cj4gKyAgICAgICAgICAgIHBOb2RlLlJlZk5hbWUgPSBSZWZOYW1lDQo+IA0KPiArICAgICAgICAg ICAgaWYgcE5vZGUuT2JqQWRkciBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cE5vZGUuT2JqQWRkci5EZWZhdWx0TmFtZSA9IERlZmF1bHRTdG9yZU5hbWVJZA0KPiANCj4gKyAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIHBO b2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgR2V0RGVmYXVsdElkKHNlbGYsIFJlZk5hbWUpOg0KPiANCj4gKyAgICAgICAgcFRtcCA9 IHNlbGYuRGVmYXVsdFN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcFRtcCBpcyBub3Qg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwVG1wLlJlZk5hbWUgPT0gUmVmTmFtZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgRGVmYXVsdElkID0gcFRtcC5EZWZhdWx0SWQNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRJZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQo+IA0KPiArICAg ICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgQnVmZmVyVmFyU3RvcmVBbHRDb25maWdBZGQoc2VsZiwgRGVm YXVsdElkLCBCYXNlSW5mbywgVmFyU3RvcmVOYW1lLA0KPiBWYXJTdG9yZUd1aWQsIFR5cGUsIFZh bHVlKToNCj4gDQo+ICsgICAgICAgIGlmIFZhclN0b3JlTmFtZSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4g DQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5EZWZhdWx0U3RvcmVMaXN0DQo+IA0KPiArICAgICAg ICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5E ZWZhdWx0SWQgPT0gRGVmYXVsdElkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBicmVhaw0KPiAN Cj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKyAgICAgICAgaWYgcE5v ZGUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOREVGSU5FRA0KPiANCj4gKyAgICAgICAgZ1ZmckJ1ZmZlckNvbmZpZy5PcGVuKCkN Cj4gDQo+ICsgICAgICAgIGlmIGdWZnJCdWZmZXJDb25maWcuU2VsZWN0KFZhclN0b3JlTmFtZSwg VmFyU3RvcmVHdWlkKSA9PSAwOg0KPiANCj4gKyAgICAgICAgICAgIFJldHVybnZhbHVlID0gZ1Zm ckJ1ZmZlckNvbmZpZy5Xcml0ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgImEiLA0KPiANCj4g KyAgICAgICAgICAgICAgICBWYXJTdG9yZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAgIFZh clN0b3JlR3VpZCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE5vZGUuRGVmYXVsdElkLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBUeXBlLA0KPiANCj4gKyAgICAgICAgICAgICAgICBCYXNlSW5m by5JbmZvLlZhck9mZnNldCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgQmFzZUluZm8uVmFyVG90 YWxTaXplLA0KPiANCj4gKyAgICAgICAgICAgICAgICBWYWx1ZSwNCj4gDQo+ICsgICAgICAgICAg ICApDQo+IA0KPiArICAgICAgICAgICAgaWYgUmV0dXJudmFsdWUgIT0gMDoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZ1ZmckJ1ZmZlckNvbmZpZy5DbG9zZSgpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlKFJldHVybnZhbHVlKQ0KPiANCj4gKyAgICAgICAgZ1Zm ckJ1ZmZlckNvbmZpZy5DbG9zZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklf VkZSX1ZBUlNUT1JFX1RZUEUoRW51bSk6DQo+IA0KPiArICAgIEVGSV9WRlJfVkFSU1RPUkVfSU5W QUxJRCA9IDANCj4gDQo+ICsgICAgRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgPSAxDQo+IA0KPiAr ICAgIEVGSV9WRlJfVkFSU1RPUkVfRUZJID0gMg0KPiANCj4gKyAgICBFRklfVkZSX1ZBUlNUT1JF X05BTUUgPSAzDQo+IA0KPiArICAgIEVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMgPSA0DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRWZpVmFyOg0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgVmFyTmFtZT0wLCBWYXJTaXplPTApOg0KPiANCj4gKyAgICAgICAgc2VsZi5F ZmlWYXJOYW1lID0gVmFyTmFtZQ0KPiANCj4gKyAgICAgICAgc2VsZi5FZmlWYXJTaXplID0gVmFy U2l6ZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK0RFRkFVTFRfTkFNRV9UQUJMRV9JVEVNUyA9 IDEwMjQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBTVmZyVmFyU3RvcmFnZU5vZGU6 DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXygNCj4gDQo+ICsgICAgICAgIHNlbGYsDQo+IA0KPiAr ICAgICAgICBWYXJTdG9yZU5hbWU9IiIsDQo+IA0KPiArICAgICAgICBWYXJTdG9yZUlkPTAsDQo+ IA0KPiArICAgICAgICBHdWlkPU5vbmUsDQo+IA0KPiArICAgICAgICBBdHRyaWJ1dGVzPTAsDQo+ IA0KPiArICAgICAgICBGbGFnPVRydWUsDQo+IA0KPiArICAgICAgICBFZmlWYWx1ZT1Ob25lLA0K PiANCj4gKyAgICAgICAgRGF0YVR5cGU9Tm9uZSwNCj4gDQo+ICsgICAgICAgIEJpdHNWYXJzdG9y ZT1GYWxzZSwNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQN Cj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVOYW1lID0gVmFyU3RvcmVOYW1lDQo+IA0KPiAr ICAgICAgICBzZWxmLlZhclN0b3JlSWQgPSBWYXJTdG9yZUlkDQo+IA0KPiArICAgICAgICBzZWxm LkFzc2lnbmVkRmxhZyA9IEZsYWcNCj4gDQo+ICsgICAgICAgIHNlbGYuQXR0cmlidXRlcyA9IEF0 dHJpYnV0ZXMNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsgICAgICAg IHNlbGYuRWZpVmFyID0gRWZpVmFsdWUNCj4gDQo+ICsgICAgICAgIHNlbGYuRGF0YVR5cGUgPSBE YXRhVHlwZQ0KPiANCj4gKyAgICAgICAgc2VsZi5OYW1lU3BhY2UgPSBbXQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgRWZpVmFsdWUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5WYXJzdG9yZVR5cGUgPSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9S RV9FRkkNCj4gDQo+ICsgICAgICAgIGVsaWYgRGF0YVR5cGUgaXMgbm90IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgQml0c1ZhcnN0b3JlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LlZhcnN0b3JlVHlwZSA9DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JF X0JVRkZFUl9CSVRTDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZG Ul9WQVJTVE9SRV9CVUZGRVINCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9W QVJTVE9SRV9OQU1FDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgU0NvbmZpZ0l0ZW06 DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBOYW1lPU5vbmUsIEd1aWQ9Tm9uZSwgSWQ9 Tm9uZSwgVHlwZT1Ob25lLA0KPiBPZmZzZXQ9Tm9uZSwgV2lkdGg9Tm9uZSwgVmFsdWU9Tm9uZSk6 DQo+IA0KPiArICAgICAgICBzZWxmLk5hbWUgPSBOYW1lDQo+IA0KPiArICAgICAgICBzZWxmLkd1 aWQgPSBHdWlkDQo+IA0KPiArICAgICAgICBzZWxmLklkID0gSWQNCj4gDQo+ICsgICAgICAgIGlm IFR5cGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgIyBsaXN0IG9mIE9mZnNldC9W YWx1ZSBpbiB0aGUgdmFyc3RvcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluZm9TdHJMaXN0 ID0gU0NvbmZpZ0luZm8oVHlwZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWUpDQo+IA0KPiArICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSW5mb1N0ckxpc3QgPSBOb25lDQo+IA0K PiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgU0NvbmZpZ0luZm86DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUeXBlLCBPZmZz ZXQsIFdpZHRoLCBWYWx1ZSk6DQo+IA0KPiArICAgICAgICBzZWxmLlR5cGUgPSBUeXBlDQo+IA0K PiArICAgICAgICBzZWxmLk9mZnNldCA9IE9mZnNldA0KPiANCj4gKyAgICAgICAgc2VsZi5XaWR0 aCA9IFdpZHRoDQo+IA0KPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArICAgICAg ICBzZWxmLlZhbHVlID0gVmFsdWUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJC dWZmZXJDb25maWc6DQo+IA0KPiArICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuSXRl bUxpc3RIZWFkID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5JdGVtTGlzdFRhaWwgPSBOb25l DQo+IA0KPiArICAgICAgICBzZWxmLkl0ZW1MaXN0UG9zID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0VmFySXRlbUxpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5JdGVtTGlzdEhlYWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgQGFic3RyYWN0bWV0aG9kDQo+IA0K PiArICAgIGRlZiBPcGVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5JdGVtTGlzdFBvcyA9 IHNlbGYuSXRlbUxpc3RIZWFkDQo+IA0KPiArDQo+IA0KPiArICAgIEBhYnN0cmFjdG1ldGhvZA0K PiANCj4gKyAgICBkZWYgQ2xvc2Uoc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLkl0ZW1MaXN0 UG9zID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBAYWJzdHJhY3RtZXRob2QNCj4gDQo+ICsg ICAgZGVmIFNlbGVjdChzZWxmLCBOYW1lLCBHdWlkLCBJZD1Ob25lKToNCj4gDQo+ICsgICAgICAg IGlmIE5hbWUgaXMgTm9uZSBvciBHdWlkIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5JdGVtTGlzdFBvcyA9IHNlbGYuSXRlbUxpc3RIZWFkDQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIDANCj4gDQo+ICsgICAgICAgIHAgPSBzZWxmLkl0ZW1MaXN0SGVhZA0KPiANCj4gKyAgICAg ICAgd2hpbGUgcCBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwLk5hbWUgIT0g TmFtZSBvciBwLkd1aWQuX19jbXBfXyhHdWlkKSBpcyBGYWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcCA9IHAuTmV4dA0KPiANCj4gKyAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiANCj4g KyAgICAgICAgICAgIGlmIElkIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBwLklkIGlzIE5vbmUgb3IgcC5JZCAhPSBJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHAgPSBwLk5leHQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiBwLklkIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBwID0gcC5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5JdGVtTGlzdFBvcyA9IHANCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g MA0KPiANCj4gKyAgICAgICAgcmV0dXJuIDENCj4gDQo+ICsNCj4gDQo+ICsgICAgQGFic3RyYWN0 bWV0aG9kDQo+IA0KPiArICAgIGRlZiBSZWdpc3RlcihzZWxmLCBOYW1lLCBHdWlkLCBJZD1Ob25l KToNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuU2VsZWN0KE5hbWUsIEd1aWQpID09IDA6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIDENCj4gDQo+ICsgICAgICAgIHBOZXcgPSBTQ29uZmlnSXRl bShOYW1lLCBHdWlkLCBJZCkNCj4gDQo+ICsgICAgICAgIGlmIHBOZXcgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gMg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5JdGVtTGlzdEhl YWQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0SGVhZCA9IHBOZXcN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0VGFpbCA9IHBOZXcNCj4gDQo+ICsgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JdGVtTGlzdFRhaWwuTmV4dCA9IHBO ZXcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0VGFpbCA9IHBOZXcNCj4gDQo+ICsg ICAgICAgIHNlbGYuSXRlbUxpc3RQb3MgPSBwTmV3DQo+IA0KPiArICAgICAgICByZXR1cm4gMA0K PiANCj4gKw0KPiANCj4gKyAgICBAYWJzdHJhY3RtZXRob2QNCj4gDQo+ICsgICAgZGVmIFdyaXRl KHNlbGYsIE1vZGUsIE5hbWUsIEd1aWQsIElkLCBUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSk6 DQo+IA0KPiArICAgICAgICBSZXQgPSBzZWxmLlNlbGVjdChOYW1lLCBHdWlkKQ0KPiANCj4gKyAg ICAgICAgaWYgUmV0ICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFJldA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgTW9kZSA9PSAiYSI6DQo+IA0KPiArICAgICAgICAgICAgaWYg c2VsZi5TZWxlY3QoTmFtZSwgR3VpZCwgSWQpICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgICAg IHBJdGVtID0gU0NvbmZpZ0l0ZW0oTmFtZSwgR3VpZCwgSWQsIFR5cGUsIE9mZnNldCwgV2lkdGgs IFZhbHVlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBwSXRlbSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICAgICAgaWYgc2VsZi5JdGVtTGlzdEhlYWQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuSXRlbUxpc3RIZWFkID0gcEl0ZW0NCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuSXRlbUxpc3RUYWlsID0gcEl0ZW0NCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuSXRlbUxpc3RUYWlsLk5leHQgPSBw SXRlbQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5JdGVtTGlzdFRhaWwgPSBwSXRl bQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0UG9zID0gcEl0 ZW0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAjIHRyYW52ZXJzZSB0aGUgbGlzdCB0byBmaW5kIG91dCBpZiB0aGVyZSdzIGFscmVhZHkg dGhlIHZhbHVlIGZvciB0aGUNCj4gc2FtZSBPZmZzZXQNCj4gDQo+ICsgICAgICAgICAgICAgICAg cEluZm8gPSBzZWxmLkl0ZW1MaXN0UG9zLkluZm9TdHJMaXN0DQo+IA0KPiArICAgICAgICAgICAg ICAgIHdoaWxlIHBJbmZvIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgcEluZm8uT2Zmc2V0ID09IE9mZnNldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gMA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcEluZm8gPSBwSW5mby5OZXh0 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBJbmZvID0gU0NvbmZpZ0luZm8oVHlw ZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHBJbmZv IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gMg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICBwSW5mby5OZXh0ID0gc2VsZi5JdGVtTGlzdFBvcy5JbmZv U3RyTGlzdA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0UG9zLkluZm9TdHJM aXN0ID0gcEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgTW9kZSA9PSAiZCI6DQo+ IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5JdGVtTGlzdEhlYWQgPT0gc2VsZi5JdGVtTGlzdFBv czoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5JdGVtTGlzdEhlYWQgPSBzZWxmLkl0ZW1M aXN0UG9zLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBwSXRlbSA9IHNlbGYuSXRl bUxpc3RIZWFkDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgcEl0ZW0uTmV4dCAhPSBzZWxmLkl0 ZW1MaXN0UG9zOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwSXRlbSA9IHBJdGVtLk5leHQNCj4g DQo+ICsgICAgICAgICAgICBwSXRlbS5OZXh0ID0gc2VsZi5JdGVtTGlzdFBvcy5OZXh0DQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5JdGVtTGlzdFRhaWwgPT0gc2VsZi5JdGVt TGlzdFBvczoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5JdGVtTGlzdFRhaWwgPSBwSXRl bQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSXRlbUxpc3RQb3MgPSBwSXRlbS5O ZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIE1vZGUgPT0gImkiOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIElkIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lkl0ZW1MaXN0UG9zLklkID0gSWQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIDENCj4gDQo+ICsgICAgICAgIHJldHVybiAwDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArZ1ZmckJ1ZmZlckNvbmZpZyA9IFZmckJ1ZmZlckNvbmZpZygpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX1ZBUlNUT1JFX0lORk8oU3RydWN0dXJlKToNCj4gDQo+ ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAg ICgiVmFyU3RvcmVJZCIsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgiSW5mbyIsIFZhclN0 b3JlSW5mb05vZGUpLA0KPiANCj4gKyAgICAgICAgKCJWYXJUeXBlIiwgY191aW50OCksDQo+IA0K PiArICAgICAgICAoIlZhclRvdGFsU2l6ZSIsIGNfdWludDMyKSwNCj4gDQo+ICsgICAgICAgICgi SXNCaXRWYXIiLCBjX2Jvb2wpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXygNCj4gDQo+ICsgICAgICAgIHNlbGYsDQo+IA0KPiArICAgICAgICBWYXJTdG9y ZUlkPUVGSV9WQVJTVE9SRV9JRF9JTlZBTElELA0KPiANCj4gKyAgICAgICAgVmFyTmFtZT1FRklf U1RSSU5HX0lEX0lOVkFMSUQsDQo+IA0KPiArICAgICAgICBWYXJPZmZzZXQ9RUZJX1ZBUk9GRlNF VF9JTlZBTElELA0KPiANCj4gKyAgICAgICAgVmFyVHlwZT1FRklfSUZSX1RZUEVfT1RIRVIsDQo+ IA0KPiArICAgICAgICBWYXJUb3RhbFNpemU9MCwNCj4gDQo+ICsgICAgICAgIElzQml0VmFyPUZh bHNlLA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUlkID0gVmFy U3RvcmVJZA0KPiANCj4gKyAgICAgICAgc2VsZi5JbmZvLlZhck5hbWUgPSBWYXJOYW1lDQo+IA0K PiArICAgICAgICBzZWxmLkluZm8uVmFyT2Zmc2V0ID0gVmFyT2Zmc2V0DQo+IA0KPiArICAgICAg ICBzZWxmLlZhclRvdGFsU2l6ZSA9IFZhclRvdGFsU2l6ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5J c0JpdFZhciA9IElzQml0VmFyDQo+IA0KPiArICAgICAgICBzZWxmLlZhclR5cGUgPSBWYXJUeXBl DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQnVmZmVyVmFyU3RvcmVGaWVsZEluZm9O b2RlOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgQmFzZUluZm86IEVGSV9WQVJTVE9S RV9JTkZPKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvID0gRUZJX1ZBUlNUT1JF X0lORk8oKQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUluZm8uVmFyVHlwZSA9IEJhc2VJ bmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvLlZhclRvdGFsU2l6 ZSA9IEJhc2VJbmZvLlZhclRvdGFsU2l6ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUlu Zm8uSW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KPiANCj4gKyAgICAg ICAgc2VsZi5WYXJTdG9yZUluZm8uVmFyU3RvcmVJZCA9IEJhc2VJbmZvLlZhclN0b3JlSWQNCj4g DQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyBWZnJEYXRhU3RvcmFnZToNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgIyBTVmZyVmFyU3RvcmFnZU5vZGUNCj4gDQo+ICsgICAgICAgIHNlbGYuQnVm ZmVyVmFyU3RvcmVMaXN0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5FZmlWYXJTdG9yZUxp c3QgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLk5hbWVWYXJTdG9yZUxpc3QgPSBOb25lDQo+ IA0KPiArICAgICAgICBzZWxmLkN1cnJWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAg ICAgIHNlbGYuTmV3VmFyU3RvcmFnZU5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkJ1 ZmZlckZpZWxkSW5mb0xpc3RIZWFkID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5tQnVmZmVy RmllbGRJbmZvTGlzdFRhaWwgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkZyZWVWYXJTdG9y ZUlkQml0TWFwID0gW10NCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIEVGSV9GUkVF X1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZyZWVW YXJTdG9yZUlkQml0TWFwLmFwcGVuZCgwKQ0KPiANCj4gKyAgICAgICAgIyBRdWVzdGlvbiBJRDAg aXMgcmVzZXJ2ZWQNCj4gDQo+ICsgICAgICAgIHNlbGYuRnJlZVZhclN0b3JlSWRCaXRNYXBbMF0g PSAweDgwMDAwMDAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBDbGVhcihzZWxmKToNCj4gDQo+ ICsgICAgICAgICMgIFNWZnJWYXJTdG9yYWdlTm9kZQ0KPiANCj4gKyAgICAgICAgc2VsZi5CdWZm ZXJWYXJTdG9yZUxpc3QgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkVmaVZhclN0b3JlTGlz dCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuTmFtZVZhclN0b3JlTGlzdCA9IE5vbmUNCj4g DQo+ICsgICAgICAgIHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuQnVm ZmVyRmllbGRJbmZvTGlzdEhlYWQgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLm1CdWZmZXJG aWVsZEluZm9MaXN0VGFpbCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuRnJlZVZhclN0b3Jl SWRCaXRNYXAgPSBbXQ0KPiANCj4gKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMCwgRUZJX0ZSRUVf VkFSU1RPUkVfSURfQklUTUFQX1NJWkUpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRnJlZVZh clN0b3JlSWRCaXRNYXAuYXBwZW5kKDApDQo+IA0KPiArICAgICAgICAjICBRdWVzdGlvbiBJRDAg aXMgcmVzZXJ2ZWQNCj4gDQo+ICsgICAgICAgIHNlbGYuRnJlZVZhclN0b3JlSWRCaXRNYXBbMF0g PSAweDgwMDAwMDAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRCdWZmZXJWYXJTdG9yZUxp c3Qoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIENoZWNrR3VpZEZpZWxkKHNlbGYsIHBOb2RlLCBTdG9y ZUd1aWQsIEhhc0ZvdW5kT25lLCBSZXR1cm5Db2RlKToNCj4gDQo+ICsgICAgICAgIGlmIFN0b3Jl R3VpZCBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAjICBJZiBoYXMgZ3VpZCBpbmZv LCBjb21wYXJlIHRoZSBndWlkIGZpZWxkLg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLkd1 aWQuX19jbXBfXyhTdG9yZUd1aWQpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkN1cnJW YXJTdG9yYWdlTm9kZSA9IHBOb2RlDQo+IA0KPiArICAgICAgICAgICAgICAgIFJldHVybkNvZGUg PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gVHJ1ZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCj4gDQo+ICsgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgIyAgbm90IGhhcyBHdWlkIGZpZWxkLCBjaGVjayB3aGV0 aGVyIHRoaXMgbmFtZSBpcyB0aGUgb25seSBvbmUuDQo+IA0KPiArICAgICAgICAgICAgaWYgSGFz Rm91bmRPbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICMgIFRoZSBuYW1lIGhhcyBjb25mbGlj dCwgcmV0dXJuIG5hbWUgcmVkZWZpbmVkLg0KPiANCj4gKyAgICAgICAgICAgICAgICBSZXR1cm5D b2RlID0NCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX05BTUVfUkVERUZJTkVE X0VSUk9SDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBUcnVlLCBSZXR1cm5Db2RlLCBI YXNGb3VuZE9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ3VyclZhclN0b3Jh Z2VOb2RlID0gcE5vZGUNCj4gDQo+ICsgICAgICAgICAgICBIYXNGb3VuZE9uZSA9IFRydWUNCj4g DQo+ICsgICAgICAgIHJldHVybiBGYWxzZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhclN0b3JlQnlEYXRhVHlwZShzZWxmLCBEYXRhVHlwZU5h bWUsIFZhckd1aWQpOg0KPiANCj4gKyAgICAgICAgTWF0Y2hOb2RlID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgcE5vZGUgPSBzZWxmLkJ1ZmZlclZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hp bGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuRGF0YVR5 cGUuVHlwZU5hbWUgIT0gRGF0YVR5cGVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwTm9k ZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsgICAgICAgICAgICAgICAgY29udGludWUNCj4gDQo+ICsg ICAgICAgICAgICBpZiBWYXJHdWlkIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBpZiBwTm9kZS5HdWlkLl9fY21wX18oVmFyR3VpZCk6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICByZXR1cm4gcE5vZGUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0K PiArICAgICAgICAgICAgZWxpZiBNYXRjaE5vZGUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgTWF0Y2hOb2RlID0gcE5vZGUNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAjIE1vcmUgdGhhbiBvbmUgdmFyc3RvcmVzIHJlZmVycmVkIHRoZSBz YW1lIGRhdGEgc3RydWN0dXJlcw0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwN Cj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9F UlJPUg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgTWF0Y2hOb2RlIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIE1hdGNoTm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIE1hdGNoTm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgIiIiDQo+IA0KPiArICAgICAgIEJhc2Ug b24gdGhlIGlucHV0IHN0b3JlIG5hbWUgYW5kIGd1aWQgdG8gZmluZCB0aGUgdmFyc3RvcmUgaWQu DQo+IA0KPiArICAgICAgIElmIGJvdGggbmFtZSBhbmQgZ3VpZCBhcmUgaW5wdXRlZCwgYmFzZSBv biB0aGUgbmFtZSBhbmQgZ3VpZCB0bw0KPiANCj4gKyAgICAgICBmb3VuZCB0aGUgdmFyc3RvcmUu IElmIG9ubHkgbmFtZSBpbnB1dGVkLCBiYXNlIG9uIHRoZSBuYW1lIHRvDQo+IA0KPiArICAgICAg IGZvdW5kIHRoZSB2YXJzdG9yZSBhbmQgZ28gb24gdG8gY2hlY2sgd2hldGhlciBtb3JlIHRoYW4g b25lIHZhcnN0b3JlDQo+IA0KPiArICAgICAgIGhhcyB0aGUgc2FtZSBuYW1lLiBJZiBvbmx5IGhh cyBmb3VuZCBvbmUgdmFyc3RvcmUsIHJldHVybiB0aGlzDQo+IA0KPiArICAgICAgIHZhcnN0b3Jl OyBpZiBtb3JlIHRoYW4gb25lIHZhcnN0b3JlIGhhcyBzYW1lIG5hbWUsIHJldHVybiB2YXJzdG9y ZQ0KPiANCj4gKyAgICAgICBuYW1lIHJlZGVmaW5lZCBlcnJvci4gSWYgbm8gdmFyc3RvcmUgZm91 bmQgYnkgdmFyc3RvcmUgbmFtZSwgY2FsbA0KPiANCj4gKyAgICAgICBmdW5jdGlvbiBHZXRWYXJT dG9yZUJ5RGF0YVR5cGUgYW5kIHVzZSBpbnB1dGVkIHZhcnN0b3JlIG5hbWUgYXMNCj4gDQo+ICsg ICAgICAgZGF0YSB0eXBlIG5hbWUgdG8gc2VhcmNoLg0KPiANCj4gKyAgICAgICAiIiINCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhclN0b3JlSWQoc2VsZiwgU3RvcmVOYW1lLCBTdG9yZUd1 aWQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgSGFzRm91bmRPbmUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi5DdXJyVmFyU3RvcmFn ZU5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuQnVmZmVy VmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZU5hbWUgPT0gU3RvcmVOYW1lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNvZGUsIEhhc0ZvdW5kT25lID0gc2Vs Zi5DaGVja0d1aWRGaWVsZChwTm9kZSwNCj4gU3RvcmVHdWlkLCBIYXNGb3VuZE9uZSwgUmV0dXJu Q29kZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgUmVzdWx0Og0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3Jl SWQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBSZXR1cm5D b2RlDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTm9kZSA9IHNlbGYuRWZpVmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3 aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJT dG9yZU5hbWUgPT0gU3RvcmVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJl dHVybkNvZGUsIEhhc0ZvdW5kT25lID0gc2VsZi5DaGVja0d1aWRGaWVsZChwTm9kZSwNCj4gU3Rv cmVHdWlkLCBIYXNGb3VuZE9uZSwgUmV0dXJuQ29kZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgUmVzdWx0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYu Q3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHJldHVybiBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUg PSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuTmFtZVZh clN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVOYW1lID09IFN0b3JlTmFtZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgUmVzdWx0LCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZSA9IHNlbGYu Q2hlY2tHdWlkRmllbGQocE5vZGUsDQo+IFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVybkNv ZGUpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJlc3VsdDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLkN1cnJWYXJTdG9yYWdlTm9kZS5WYXJTdG9yZUlk DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVJZCwgUmV0dXJuQ29k ZQ0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgaWYgSGFzRm91bmRPbmU6DQo+IA0KPiArICAgICAgICAgICAgVmFyU3RvcmVJZCA9 IHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmFyU3RvcmVJZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIFZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0K PiANCj4gKyAgICAgICAgcE5vZGUsIFJldHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3JlQnlEYXRh VHlwZShTdG9yZU5hbWUsDQo+IFN0b3JlR3VpZCkNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlIGlz IG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlID0g cE5vZGUNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gcE5vZGUuVmFyU3RvcmVJZA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEZyZWVWYXJTdG9yZUlkKHNlbGYsIFZhclR5cGUpOg0K PiANCj4gKyAgICAgICAgSW5kZXggPSAwDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgw LCBFRklfRlJFRV9WQVJTVE9SRV9JRF9CSVRNQVBfU0laRSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgc2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcFtpXSAhPSAweEZGRkZGRkZGOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBJbmRleCA9IGkNCj4gDQo+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4g DQo+ICsgICAgICAgIGlmIEluZGV4ID09IEVGSV9GUkVFX1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpF Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgTWFzayA9IDB4 ODAwMDAwMDANCj4gDQo+ICsgICAgICAgIHdoaWxlIE1hc2sgIT0gMDoNCj4gDQo+ICsgICAgICAg ICAgICBpZiAoc2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRleF0gJiBNYXNrKSA9PSAwOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkZyZWVWYXJTdG9yZUlkQml0TWFwW0luZGV4XSB8 PSBNYXNrDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiAoSW5kZXggPDwgRUZJX0JJVFNf U0hJRlRfUEVSX1VJTlQzMikgKyBPZmZzZXQNCj4gDQo+ICsgICAgICAgICAgICBNYXNrID4+PSAx DQo+IA0KPiArICAgICAgICAgICAgT2Zmc2V0ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBF RklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgQ2hlY2tWYXJT dG9yZUlkRnJlZShzZWxmLCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50 KFZhclN0b3JlSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiANCj4gKyAgICAgICAgT2Zmc2V0 ID0gVmFyU3RvcmVJZCAlIEVGSV9CSVRTX1BFUl9VSU5UMzINCj4gDQo+ICsgICAgICAgIHJldHVy biAoc2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRleF0gJiAoMHg4MDAwMDAwMCA+PiBPZmZz ZXQpKSA9PQ0KPiAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBNYXJrVmFyU3RvcmVJZFVzZWQo c2VsZiwgVmFyU3RvcmVJZCk6DQo+IA0KPiArICAgICAgICBJbmRleCA9IGludChWYXJTdG9yZUlk IC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCj4gDQo+ICsgICAgICAgIE9mZnNldCA9IFZhclN0b3Jl SWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+IA0KPiArICAgICAgICBzZWxmLkZyZWVWYXJTdG9y ZUlkQml0TWFwW0luZGV4XSB8PSAweDgwMDAwMDAwID4+IE9mZnNldA0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgRGVjbGFyZUJ1ZmZlclZhclN0b3JlKHNlbGYsIFN0b3JlTmFtZSwgR3VpZCwgRGF0 YVR5cGVEQiwgVHlwZU5hbWUsDQo+IFZhclN0b3JlSWQsIElzQml0VmFyU3RvcmUsIEF0dHI9MCwg RmxhZz1UcnVlKToNCj4gDQo+ICsgICAgICAgIGlmIFN0b3JlTmFtZSBpcyBOb25lIG9yIEd1aWQg aXMgTm9uZSBvciBEYXRhVHlwZURCIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiANCj4gKyAgICAgICAgXywg UmV0dXJuQ29kZSA9IHNlbGYuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsIEd1aWQpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fUkVERUZJTkVEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBEYXRhVHlwZSwgUmV0dXJu Q29kZSA9IERhdGFUeXBlREIuR2V0RGF0YVR5cGUoVHlwZU5hbWUpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBWYXJTdG9yZUlkID09IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiANCj4g KyAgICAgICAgICAgIFZhclN0b3JlSWQgPQ0KPiBzZWxmLkdldEZyZWVWYXJTdG9yZUlkKEVGSV9W RlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUg0KPiApDQo+IA0KPiArICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuQ2hlY2tWYXJTdG9yZUlkRnJl ZShWYXJTdG9yZUlkKSBpcyBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRUlEX1JFREVGSU5FRA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTWFya1ZhclN0b3JlSWRVc2VkKFZhclN0b3JlSWQpDQo+IA0KPiArICAgICAg ICBwTmV3ID0gU1ZmclZhclN0b3JhZ2VOb2RlKFN0b3JlTmFtZSwgVmFyU3RvcmVJZCwgR3VpZCwg QXR0ciwgRmxhZywNCj4gTm9uZSwgRGF0YVR5cGUsIElzQml0VmFyU3RvcmUpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBpZiBwTmV3IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcE5ldy5OZXh0ID0gc2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QNCj4gDQo+ICsg ICAgICAgIHNlbGYuQnVmZmVyVmFyU3RvcmVMaXN0ID0gcE5ldw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgZ1ZmckJ1ZmZlckNvbmZpZy5SZWdpc3RlcihTdG9yZU5hbWUsIEd1aWQpICE9IDA6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRB TF9FUlJPUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEZWNsYXJlTmFtZVZhclN0 b3JlQmVnaW4oc2VsZiwgU3RvcmVOYW1lLCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIGlm IFN0b3JlTmFtZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIF8sIFJl dHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lKQ0KPiANCj4gKyAgICAgICAg aWYgUmV0dXJuQ29kZSA9PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURf SU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0NCj4gc2VsZi5HZXRGcmVl VmFyU3RvcmVJZChFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9OQU1FKQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNrVmFy U3RvcmVJZEZyZWUoVmFyU3RvcmVJZCkgaXMgRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVJRF9SRURFRklORUQNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk1hcmtWYXJTdG9yZUlkVXNlZChWYXJTdG9yZUlkKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyVmFyU3RvcmFnZU5vZGUoU3RvcmVOYW1l LCBWYXJTdG9yZUlkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgcE5vZGUgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9G T1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLk5ld1ZhclN0b3JhZ2VO b2RlID0gcE5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRGVjbGFyZU5hbWVWYXJTdG9yZUVu ZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3VmFyU3RvcmFnZU5vZGUuR3Vp ZCA9IEd1aWQNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV3VmFyU3RvcmFnZU5vZGUuTmV4dCA9IHNl bGYuTmFtZVZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgc2VsZi5OYW1lVmFyU3RvcmVMaXN0 ID0gc2VsZi5OZXdWYXJTdG9yYWdlTm9kZQ0KPiANCj4gKyAgICAgICAgc2VsZi5OZXdWYXJTdG9y YWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIE5hbWVUYWJsZUFkZEl0ZW0o c2VsZiwgSXRlbSk6DQo+IA0KPiArICAgICAgICBzZWxmLk5ld1ZhclN0b3JhZ2VOb2RlLk5hbWVT cGFjZS5hcHBlbmQoSXRlbSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0TmFtZVZhclN0b3Jl SW5mbyhzZWxmLCBCYXNlSW5mbywgSW5kZXgpOg0KPiANCj4gKyAgICAgICAgaWYgQmFzZUluZm8g aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZBVEFMX0VSUk9SDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJWYXJT dG9yYWdlTm9kZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fR0VUX05WVkFSU1RPUkVfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIEJhc2VJbmZvLkluZm8uVmFyTmFtZSA9IHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlLk5hbWVT cGFjZVtJbmRleF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0VmFyU3RvcmVU eXBlKHNlbGYsIFZhclN0b3JlSWQpOg0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVUeXBlID0gRUZJ X1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfSU5WQUxJRA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVUeXBlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBwTm9kZSA9IHNlbGYuQnVmZmVyVmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGls ZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9y ZUlkID09IFZhclN0b3JlSWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBwTm9kZS5W YXJzdG9yZVR5cGUNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5FZmlWYXJTdG9yZUxpc3QNCj4gDQo+ICsg ICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBO b2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHBOb2RlLlZhcnN0b3JlVHlwZQ0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBzZWxmLk5hbWVWYXJTdG9yZUxp c3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHBOb2RlLlZhcnN0b3JlVHlwZQ0KPiANCj4gKyAgICAgICAgICAgIHBO b2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZhclN0b3Jl VHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0VmFyU3RvcmVOYW1lKHNlbGYsIFZhclN0 b3JlSWQpOg0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBzZWxmLkJ1ZmZlclZhclN0b3JlTGlzdA0K PiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gcE5vZGUuVmFyU3RvcmVOYW1lLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBzZWxmLkVmaVZhclN0b3JlTGlzdA0KPiANCj4gKyAg ICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5v ZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gcE5vZGUuVmFyU3RvcmVOYW1lLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcE5vZGUgPSBzZWxmLk5hbWVWYXJTdG9yZUxpc3QNCj4gDQo+ICsgICAgICAgIHdo aWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0 b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2Rl LlZhclN0b3JlTmFtZSwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRCdWZmZXJWYXJTdG9yZURhdGFUeXBlTmFtZShzZWxmLCBWYXJT dG9yZUlkKToNCj4gDQo+ICsgICAgICAgIERhdGFUeXBlTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAg ICAgIGlmIFZhclN0b3JlSWQgPT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIERhdGFUeXBlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZB VEFMX0VSUk9SDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuQnVmZmVyVmFy U3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIERhdGFUeXBlTmFtZSA9IHBOb2RlLkRhdGFUeXBlLlR5cGVOYW1lDQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZU5hbWUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gRGF0YVR5cGVOYW1lLCBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRFZmlW YXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm86IEVGSV9WQVJTVE9SRV9JTkZPKToNCj4gDQo+ICsg ICAgICAgIGlmIEJhc2VJbmZvIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0dFVF9FRklWQVJTVE9SRV9FUlJPUg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgQmFzZUluZm8uSW5mby5WYXJOYW1lID0gc2VsZi5DdXJy VmFyU3RvcmFnZU5vZGUuRWZpVmFyLkVmaVZhck5hbWUNCj4gDQo+ICsgICAgICAgIEJhc2VJbmZv LlZhclRvdGFsU2l6ZSA9IHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlLkVmaVZhci5FZmlWYXJTaXpl DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gRUZJ X0lGUl9UWVBFX05VTV84X0JJVF9TSVpFOg0KPiANCj4gKyAgICAgICAgICAgIEJhc2VJbmZvLlZh clR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOA0KPiANCj4gKyAgICAgICAgZWxpZiBCYXNl SW5mby5WYXJUb3RhbFNpemUgPT0gRUZJX0lGUl9UWVBFX05VTV8xNl9CSVRfU0laRToNCj4gDQo+ ICsgICAgICAgICAgICBCYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2 DQo+IA0KPiArICAgICAgICBlbGlmIEJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9PSBFRklfSUZSX1RZ UEVfTlVNXzMyX0JJVF9TSVpFOg0KPiANCj4gKyAgICAgICAgICAgIEJhc2VJbmZvLlZhclR5cGUg PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzINCj4gDQo+ICsgICAgICAgIGVsaWYgQmFzZUluZm8u VmFyVG90YWxTaXplID09IEVGSV9JRlJfVFlQRV9OVU1fNjRfQklUX1NJWkU6DQo+IA0KPiArICAg ICAgICAgICAgQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NA0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IEdldFZhclN0b3JlR3VpZChzZWxmLCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIFZhckd1 aWQgPSBOb25lDQo+IA0KPiArICAgICAgICBpZiBWYXJTdG9yZUlkID09IEVGSV9WQVJTVE9SRV9J RF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuQnVmZmVyVmFyU3RvcmVMaXN0DQo+IA0KPiArICAg ICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9k ZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIFZhckd1 aWQgPSBwTm9kZS5HdWlkDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQo+ IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBwTm9kZSA9IHNlbGYuRWZpVmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBw Tm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlk ID09IFZhclN0b3JlSWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIFZhckd1aWQgPSBwTm9kZS5H dWlkDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQo+IA0KPiArICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9 IHNlbGYuTmFtZVZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9y ZUlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJHdWlkID0gcE5vZGUuR3VpZA0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gVmFyR3VpZA0KPiANCj4gKyAgICAgICAgICAgIHBOb2Rl ID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZhckd1aWQNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEFkZEJ1ZmZlclZhclN0b3JlRmllbGRJbmZvKHNlbGYsIEJh c2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQo+IA0KPiArICAgICAgICBwTmV3ID0gQnVmZmVy VmFyU3RvcmVGaWVsZEluZm9Ob2RlKEJhc2VJbmZvKQ0KPiANCj4gKyAgICAgICAgaWYgcE5ldyBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuQnVmZmVyRmll bGRJbmZvTGlzdEhlYWQgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkJ1ZmZlckZp ZWxkSW5mb0xpc3RIZWFkID0gcE5ldw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubUJ1ZmZlckZp ZWxkSW5mb0xpc3RUYWlsID0gcE5ldw0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1CdWZmZXJGaWVsZEluZm9MaXN0VGFpbC5OZXh0ID0gcE5ldw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubUJ1ZmZlckZpZWxkSW5mb0xpc3RUYWlsID0gcE5ldw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgVmZyU3RyaW5nREI6DQo+IA0KPiArICAg IGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuU3RyaW5nRmlsZU5hbWUg PSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRTdHJpbmdGaWxlTmFtZShzZWxmLCBT dHJpbmdGaWxlTmFtZSk6DQo+IA0KPiArICAgICAgICBzZWxmLlN0cmluZ0ZpbGVOYW1lID0gU3Ry aW5nRmlsZU5hbWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEJlc3RMYW5ndWFnZShzZWxm LCBTdXBwb3J0ZWRMYW5ndWFnZXMsIExhbmd1YWdlKToNCj4gDQo+ICsgICAgICAgIGlmIFN1cHBv cnRlZExhbmd1YWdlcyBpcyBOb25lIG9yIExhbmd1YWdlIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMYW5ndWFnZUxlbmd0 aCA9IDANCj4gDQo+ICsgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlIGZpcnN0 IFJGQyA0NjQ2IGxhbmd1YWdlIGNvZGUgaW4gTGFuZ3VhZ2UNCj4gDQo+ICsgICAgICAgIHdoaWxl IExhbmd1YWdlTGVuZ3RoIDwgbGVuKExhbmd1YWdlKSBhbmQNCj4gTGFuZ3VhZ2VbTGFuZ3VhZ2VM ZW5ndGhdICE9IDAgYW5kIExhbmd1YWdlW0xhbmd1YWdlTGVuZ3RoXSAhPSAiOyI6DQo+IA0KPiAr ICAgICAgICAgICAgTGFuZ3VhZ2VMZW5ndGggKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg U3VwcG9ydGVkID0gU3VwcG9ydGVkTGFuZ3VhZ2VzDQo+IA0KPiArICAgICAgICAjIFRyaW0gYmFj ayB0aGUgbGVuZ3RoIG9mIExhbmd1YWdlIHVzZWQgdW50aWwgaXQgaXMgZW1wdHkNCj4gDQo+ICsg ICAgICAgIHdoaWxlIExhbmd1YWdlTGVuZ3RoID4gMDoNCj4gDQo+ICsgICAgICAgICAgICAjIExv b3AgdGhyb3VnaCBhbGwgbGFuZ3VhZ2UgY29kZXMgaW4gU3VwcG9ydGVkTGFuZ3VhZ2VzDQo+IA0K PiArICAgICAgICAgICAgd2hpbGUgbGVuKFN1cHBvcnRlZCkgPiAwOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAjIFNraXAgJzsnIGNoYXJhY3RlcnMgaW4gU3VwcG9ydGVkDQo+IA0KPiArICAgICAg ICAgICAgICAgIHdoaWxlIGxlbihTdXBwb3J0ZWQpID4gMCBhbmQgU3VwcG9ydGVkWzBdID09ICI7 IjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFN1cHBvcnRlZCA9IFN1cHBvcnRlZFsxOl0N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ29tcGFyZUxlbmd0aCA9IDANCj4gDQo+ ICsgICAgICAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgbmV4dCBsYW5n dWFnZSBjb2RlIGluIFN1cHBvcnRlZA0KPiANCj4gKyAgICAgICAgICAgICAgICB3aGlsZSBDb21w YXJlTGVuZ3RoIDwgbGVuKFN1cHBvcnRlZCkgYW5kDQo+IFN1cHBvcnRlZFtDb21wYXJlTGVuZ3Ro XSAhPSAwIGFuZCBTdXBwb3J0ZWRbQ29tcGFyZUxlbmd0aF0gIT0gIjsiOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgQ29tcGFyZUxlbmd0aCArPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgICMgSWYgTGFuZ3VhZ2UgaXMgbG9uZ2VyIHRoYW4gdGhlIFN1cHBvcnRlZCwgdGhl biBza2lwIHRvIHRoZSBuZXh0DQo+IGxhbmd1YWdlDQo+IA0KPiArICAgICAgICAgICAgICAgIGlm IExhbmd1YWdlTGVuZ3RoID4gQ29tcGFyZUxlbmd0aDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICMgU2VlIGlmIHRo ZSBmaXJzdCBMYW5ndWFnZUxlbmd0aCBjaGFyYWN0ZXJzIGluIFN1cHBvcnRlZCBtYXRjaA0KPiBM YW5ndWFnZQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBTdXBwb3J0ZWRbOkxhbmd1YWdlTGVu Z3RoXSA9PSBMYW5ndWFnZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVl DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIFN1cHBvcnRlZCA9IFN1cHBvcnRlZFtD b21wYXJlTGVuZ3RoOl0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAjIFRyaW0gTGFuZ3Vh Z2UgZnJvbSB0aGUgcmlnaHQgdG8gdGhlIG5leHQgJy0nIGNoYXJhY3Rlcg0KPiANCj4gKyAgICAg ICAgICAgIExhbmd1YWdlTGVuZ3RoIC09IDENCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBMYW5n dWFnZUxlbmd0aCA+IDAgYW5kIExhbmd1YWdlW0xhbmd1YWdlTGVuZ3RoXSAhPSAiLSI6DQo+IA0K PiArICAgICAgICAgICAgICAgIExhbmd1YWdlTGVuZ3RoIC09IDENCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICMgTm8gbWF0Y2hlcyB3ZXJlIGZvdW5kDQo+IA0KPiArICAgICAgICByZXR1cm4gRmFs c2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFVuaWNvZGVTdHJpbmdUZXh0U2l6ZShzZWxm LCBTdHJpbmdTcmMpOg0KPiANCj4gKyAgICAgICAgU3RyaW5nU2l6ZSA9IHNpemVvZihjX3VzaG9y dCkNCj4gDQo+ICsgICAgICAgIFN0cmluZ1N0ciA9IGNhc3QoU3RyaW5nU3JjLCBQT0lOVEVSKGNf dXNob3J0KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHdoaWxlIFN0cmluZ1N0ci5jb250ZW50 cy52YWx1ZSAhPSAiXDAiOg0KPiANCj4gKyAgICAgICAgICAgIFN0cmluZ1NpemUgKz0gc2l6ZW9m KGNfdXNob3J0KQ0KPiANCj4gKyAgICAgICAgICAgIFN0cmluZ1N0ciA9IGNhc3QoYWRkcmVzc29m KFN0cmluZ1N0ci5jb250ZW50cykgKyBzaXplb2YoY191c2hvcnQpLA0KPiBQT0lOVEVSKGNfdXNo b3J0KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBTdHJpbmdTaXplDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBGaW5kU3RyaW5nQmxvY2soc2VsZiwgc3RyaW5nX2RhdGEsIHN0cmlu Z19pZCk6DQo+IA0KPiArICAgICAgICBjdXJyZW50X3N0cmluZ19pZCA9IDENCj4gDQo+ICsgICAg ICAgIGJsb2NrX2hkciA9IHN0cmluZ19kYXRhDQo+IA0KPiArICAgICAgICBibG9ja19zaXplID0g MA0KPiANCj4gKyAgICAgICAgb2Zmc2V0ID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgd2hp bGUgYmxvY2tfaGRyWzBdICE9IEVGSV9ISUlfU0lCVF9FTkQ6DQo+IA0KPiArICAgICAgICAgICAg YmxvY2tfdHlwZSA9IGJsb2NrX2hkclswXQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlm IGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX1NUUklOR19TQ1NVOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBvZmZzZXQgPSBzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spDQo+IA0KPiArICAg ICAgICAgICAgICAgIHN0cmluZ190ZXh0X3B0ciA9IGJsb2NrX2hkciArIG9mZnNldA0KPiANCj4g KyAgICAgICAgICAgICAgICBibG9ja19zaXplICs9IG9mZnNldCArIGxlbihzdHIoc3RyaW5nX3Rl eHRfcHRyKSkgKyAxDQo+IA0KPiArICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9 IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJ SV9TSUJUX1NUUklOR19TQ1NVX0ZPTlQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIG9mZnNldCA9 IHNpemVvZihFRklfSElJX1NJQlRfU1RSSU5HX1NDU1VfRk9OVF9CTE9DSykgLQ0KPiBzaXplb2Yo Y191aW50OCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gYmxvY2tf aGRyICsgb2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAgICAgIGJsb2NrX3NpemUgKz0gb2Zmc2V0 ICsgbGVuKHN0cihzdHJpbmdfdGV4dF9wdHIpKSArIDENCj4gDQo+ICsgICAgICAgICAgICAgICAg Y3VycmVudF9zdHJpbmdfaWQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg YmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfU1RSSU5HU19TQ1NVOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzdHJpbmdfY291bnQgPSBpbnQuZnJvbV9ieXRlcygNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGJsb2NrX2hkcltzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spIDoNCj4gc2l6 ZW9mKEVGSV9ISUlfU1RSSU5HX0JMT0NLKSArIHNpemVvZihjX3VpbnQxNildLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyPSJsaXR0bGUiLA0KPiANCj4gKyAgICAgICAgICAg ICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgIHN0cmluZ190ZXh0X3B0ciA9IGJsb2NrX2hk ciArDQo+IHNpemVvZihFRklfSElJX1NJQlRfU1RSSU5HU19TQ1NVX0JMT0NLKSAtIHNpemVvZihj X3VpbnQ4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBibG9ja19zaXplICs9IHN0cmluZ190ZXh0 X3B0ciAtIGJsb2NrX2hkcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBmb3IgXyBp biByYW5nZShzdHJpbmdfY291bnQpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tf c2l6ZSArPSBsZW4oc3RyKHN0cmluZ190ZXh0X3B0cikpICsgMQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgaWYgY3VycmVudF9zdHJpbmdfaWQgPT0gc3RyaW5nX2lkOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGUgPSBibG9ja19oZHJbMF0NCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdGV4dF9vZmZzZXQgPSBzdHJpbmdf dGV4dF9wdHIgLSBzdHJpbmdfZGF0YQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBFRklfU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc3Ry aW5nX3RleHRfcHRyID0gc3RyaW5nX3RleHRfcHRyICsgbGVuKHN0cihzdHJpbmdfdGV4dF9wdHIp KSArIDENCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9IDEN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9T SUJUX1NUUklOR1NfU0NTVV9GT05UOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzdHJpbmdfY291 bnQgPSBpbnQuZnJvbV9ieXRlcygNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGJsb2NrX2hk cltzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spICsgc2l6ZW9mKGNfdWludDgpIDoNCj4gc2l6 ZW9mKEVGSV9ISUlfU1RSSU5HX0JMT0NLKSArIHNpemVvZihjX3VpbnQ4KSArIHNpemVvZihjX3Vp bnQxNildLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyPSJsaXR0bGUiLA0K PiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgIHN0cmluZ190 ZXh0X3B0ciA9IGJsb2NrX2hkciArDQo+IHNpemVvZihFRklfSElJX1NJQlRfU1RSSU5HU19TQ1NV X0ZPTlRfQkxPQ0spIC0gc2l6ZW9mKGNfdWludDgpDQo+IA0KPiArICAgICAgICAgICAgICAgIGJs b2NrX3NpemUgKz0gc3RyaW5nX3RleHRfcHRyIC0gYmxvY2tfaGRyDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHN0cmluZ19jb3VudCk6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBibG9ja19zaXplICs9IGxlbihzdHIoc3RyaW5nX3RleHRfcHRyKSkg KyAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50X3N0cmlu Z19pZCA9PSBzdHJpbmdfaWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tf dHlwZSA9IGJsb2NrX2hkclswXQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlu Z190ZXh0X29mZnNldCA9IHN0cmluZ190ZXh0X3B0ciAtIHN0cmluZ19kYXRhDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdGV4dF9wdHIgPSBzdHJpbmdfdGV4dF9wdHIgKyBs ZW4oc3RyKHN0cmluZ190ZXh0X3B0cikpICsgMQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Y3VycmVudF9zdHJpbmdfaWQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg YmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfU1RSSU5HX1VDUzI6DQo+IA0KPiArICAgICAgICAg ICAgICAgIG9mZnNldCA9IHNpemVvZihFRklfSElJX1NUUklOR19CTE9DSykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gYmxvY2tfaGRyICsgb2Zmc2V0DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHN0cmluZ19zaXplID0gc2VsZi5HZXRVbmljb2RlU3RyaW5nVGV4dFNp emUoc3RyaW5nX3RleHRfcHRyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBibG9ja19zaXplICs9 IG9mZnNldCArIHN0cmluZ19zaXplDQo+IA0KPiArICAgICAgICAgICAgICAgIGN1cnJlbnRfc3Ry aW5nX2lkICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGJsb2NrX3R5cGUg PT0gRUZJX0hJSV9TSUJUX1NUUklOR19VQ1MyX0ZPTlQ6DQo+IA0KPiArICAgICAgICAgICAgICAg IG9mZnNldCA9IHNpemVvZihFRklfSElJX1NJQlRfU1RSSU5HX1VDUzJfRk9OVF9CTE9DSykgLQ0K PiBzaXplb2YoY191c2hvcnQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHN0cmluZ190ZXh0X3B0 ciA9IGJsb2NrX2hkciArIG9mZnNldA0KPiANCj4gKyAgICAgICAgICAgICAgICBzdHJpbmdfc2l6 ZSA9IHNlbGYuR2V0VW5pY29kZVN0cmluZ1RleHRTaXplKHN0cmluZ190ZXh0X3B0cikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBvZmZzZXQgKyBzdHJpbmdfc2l6ZQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBjdXJyZW50X3N0cmluZ19pZCArPSAxDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgZWxpZiBibG9ja190eXBlID09IEVGSV9ISUlfU0lCVF9TVFJJTkdTX1VD UzI6DQo+IA0KPiArICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbihFRklfSElJX1NJQlRfU1RS SU5HU19VQ1MyX0JMT0NLKSAtIGxlbihjX3VzaG9ydCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c3RyaW5nX3RleHRfcHRyID0gYmxvY2tfaGRyICsgb2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAg ICAgIGJsb2NrX3NpemUgKz0gb2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAgICAgIHN0cmluZ19j b3VudCA9IGludC5mcm9tX2J5dGVzKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tf aGRyW3NpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgOg0KPiBzaXplb2YoRUZJX0hJSV9TVFJJ TkdfQkxPQ0spICsgc2l6ZW9mKGNfdWludDE2KV0sDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBieXRlb3JkZXI9ImxpdHRsZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2Uoc3RyaW5nX2NvdW50KToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHN0cmluZ19zaXplID0gc2VsZi5HZXRVbmljb2RlU3Ry aW5nVGV4dFNpemUoc3RyaW5nX3RleHRfcHRyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg YmxvY2tfc2l6ZSArPSBzdHJpbmdfc2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgaWYgY3VycmVudF9zdHJpbmdfaWQgPT0gc3RyaW5nX2lkOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGJsb2NrX3R5cGUgPSBibG9ja19oZHJbMF0NCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzdHJpbmdfdGV4dF9vZmZzZXQgPSBzdHJpbmdfdGV4dF9wdHIgLSBz dHJpbmdfZGF0YQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFRklfU1VD Q0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRy ID0gc3RyaW5nX3RleHRfcHRyICsgc3RyaW5nX3NpemUNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBl bGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX1NUUklOR1NfVUNTMl9GT05UOg0KPiANCj4g KyAgICAgICAgICAgICAgICBvZmZzZXQgPSBsZW4oRUZJX0hJSV9TSUJUX1NUUklOR1NfVUNTMl9G T05UX0JMT0NLKSAtDQo+IGxlbihjX3VzaG9ydCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc3Ry aW5nX3RleHRfcHRyID0gYmxvY2tfaGRyICsgb2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAgICAg IGJsb2NrX3NpemUgKz0gb2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAgICAgIHN0cmluZ19jb3Vu dCA9IGludC5mcm9tX2J5dGVzKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tfaGRy W3NpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXplb2YoY191aW50OCkgOg0KPiBzaXpl b2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spICsgc2l6ZW9mKGNfdWludDgpICsgc2l6ZW9mKGNfdWlu dDE2KV0sDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXI9ImxpdHRsZSIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg Zm9yIF8gaW4gcmFuZ2Uoc3RyaW5nX2NvdW50KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHN0cmluZ19zaXplID0gc2VsZi5HZXRVbmljb2RlU3RyaW5nVGV4dFNpemUoc3RyaW5nX3RleHRf cHRyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBzdHJpbmdfc2l6 ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudF9zdHJpbmdf aWQgPT0gc3RyaW5nX2lkOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5 cGUgPSBibG9ja19oZHJbMF0NCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdf dGV4dF9vZmZzZXQgPSBzdHJpbmdfdGV4dF9wdHIgLSBzdHJpbmdfZGF0YQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBFRklfU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gc3RyaW5nX3RleHRfcHRyICsgc3Ry aW5nX3NpemUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9 IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJ SV9TSUJUX0RVUExJQ0FURToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgY3VycmVudF9zdHJp bmdfaWQgPT0gc3RyaW5nX2lkOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2lk ID0gaW50LmZyb21fYnl0ZXMoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tf aGRyW3NpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgOg0KPiBzaXplb2YoRUZJX0hJSV9TVFJJ TkdfQkxPQ0spICsgc2l6ZW9mKGNfdWludDE2KV0sDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgYnl0ZW9yZGVyPSJsaXR0bGUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zdHJpbmdfaWQgPSAxDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplID0gMA0KPiANCj4gKyAgICAgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBzaXplb2Yo RUZJX0hJSV9TSUJUX0RVUExJQ0FURV9CTE9DSykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IGN1cnJlbnRfc3RyaW5nX2lkICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX1NLSVAxOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBza2lwX2NvdW50ID0NCj4gaW50LmZyb21fYnl0ZXMoYmxvY2tfaGRyW3NpemVvZihFRklfSElJ X1NUUklOR19CTE9DSyldLCBieXRlb3JkZXI9ImxpdHRsZSIpDQo+IA0KPiArICAgICAgICAgICAg ICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9IHNraXBfY291bnQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgYmxvY2tfc2l6ZSArPSBzaXplb2YoRUZJX0hJSV9TSUJUX1NLSVAxX0JMT0NLKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgYmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfU0tJ UDI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNraXBfY291bnQgPSBpbnQuZnJvbV9ieXRlcygN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGJsb2NrX2hkcltzaXplb2YoRUZJX0hJSV9TVFJJ TkdfQkxPQ0spIDoNCj4gc2l6ZW9mKEVGSV9ISUlfU1RSSU5HX0JMT0NLKSArIHNpemVvZihjX3Vp bnQxNildLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyPSJsaXR0bGUiLA0K PiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgIGN1cnJlbnRf c3RyaW5nX2lkICs9IHNraXBfY291bnQNCj4gDQo+ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6 ZSArPSBzaXplb2YoRUZJX0hJSV9TSUJUX1NLSVAyX0JMT0NLKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgYmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfRVhUMToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgbGVuZ3RoOCA9IGludC5mcm9tX2J5dGVzKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgYmxvY2tfaGRyW3NpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXpl b2YoY191aW50OCkgOg0KPiBzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spICsgc2l6ZW9mKGNf dWludDgpICsgc2l6ZW9mKGNfdWludDgpXSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGJ5 dGVvcmRlcj0ibGl0dGxlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBibG9ja19zaXplICs9IGxlbmd0aDgNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX0VYVDI6DQo+IA0KPiArICAgICAg ICAgICAgICAgIGxlbmd0aDMyID0gaW50LmZyb21fYnl0ZXMoDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBibG9ja19oZHJbc2l6ZW9mKEVGSV9ISUlfU1RSSU5HX0JMT0NLKSArIHNpemVvZihj X3VpbnQ4KSA6DQo+IHNpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXplb2YoY191aW50 OCkgKyBzaXplb2YoY191aW50MzIpXSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGJ5dGVv cmRlcj0ibGl0dGxlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBibG9ja19zaXplICs9IGxlbmd0aDMyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgaWYgc3RyaW5nX2lkID4gMCBhbmQgc3RyaW5nX2lkICE9IChjX3VpbnQxNikoLTEpOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBibG9ja190eXBlID0gYmxvY2tfaGRyWzBdDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIHN0cmluZ19pZCA9PSBjdXJyZW50X3N0cmluZ19pZCAt IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBibG9ja190eXBlIGluIChFRklfSElJ X1NJQlRfU0tJUDIsIEVGSV9ISUlfU0lCVF9TS0lQMSk6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHJldHVybiBFRklfU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBz dHJpbmdfaWQgPCBjdXJyZW50X3N0cmluZ19pZCAtIDE6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICByZXR1cm4gRUZJX05PVF9GT1VORA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGJs b2NrX2hkciA9IHN0cmluZ19kYXRhICsgYmxvY2tfc2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhclN0 b3JlTmFtZUZvcm1TdHJpbmdJZChzZWxmLCBTdHJpbmdJZCk6DQo+IA0KPiArICAgICAgICBwSW5G aWxlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgTmFtZU9mZnNldCA9IDANCj4gDQo+ICsgICAgICAg IExlbmd0aCA9IDANCj4gDQo+ICsgICAgICAgIFN0cmluZ1B0ciA9IE5vbmUNCj4gDQo+ICsgICAg ICAgIFN0cmluZ05hbWUgPSBOb25lDQo+IA0KPiArICAgICAgICBVbmljb2RlU3RyaW5nID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVOYW1lID0gTm9uZQ0KPiANCj4gKyAgICAgICAgRGVz dFRtcCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIEN1cnJlbnQgPSBOb25lDQo+IA0KPiArICAgICAg ICBTdGF0dXMgPSBOb25lDQo+IA0KPiArICAgICAgICBCbG9ja1R5cGUgPSAwDQo+IA0KPiArICAg ICAgICBQa2dIZWFkZXIgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLlN0 cmluZ0ZpbGVOYW1lIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICB3aXRoIG9wZW4o TG9uZ0ZpbGVQYXRoKHNlbGYuU3RyaW5nRmlsZU5hbWUpLCAicmIiKSBhcyBwSW5GaWxlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAjIEdldCBmaWxlIGxlbmd0aA0KPiANCj4gKyAgICAgICAgICAg ICAgICBwSW5GaWxlLnNlZWsoMCwgb3MuU0VFS19FTkQpDQo+IA0KPiArICAgICAgICAgICAgICAg IExlbmd0aCA9IHBJbkZpbGUudGVsbCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBJbkZpbGUu c2VlaygwLCBvcy5TRUVLX1NFVCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgIyBH ZXQgZmlsZSBkYXRhDQo+IA0KPiArICAgICAgICAgICAgICAgIFN0cmluZ1B0ciA9IGJ5dGVhcnJh eShwSW5GaWxlLnJlYWQoKSkNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFBrZ0hl YWRlciA9IEVGSV9ISUlfU1RSSU5HX1BBQ0tBR0VfSERSLmZyb21fYnVmZmVyKFN0cmluZ1B0cikN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgQ2hlY2sgdGhlIFN0cmluZyBwYWNrYWdlDQo+IA0K PiArICAgICAgICBpZiBQa2dIZWFkZXIuSGVhZGVyLlR5cGUgIT0gRUZJX0hJSV9QQUNLQUdFX1NU UklOR1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICMgU2VhcmNoIHRoZSBsYW5ndWFnZSwgZ2V0IGJlc3QgbGFuZ3VhZ2UgYmFzZWQgb24g UkZDIDQ2NDcgbWF0Y2hpbmcNCj4gYWxnb3JpdGhtDQo+IA0KPiArICAgICAgICBDdXJyZW50ID0g U3RyaW5nUHRyDQo+IA0KPiArICAgICAgICB3aGlsZSBub3Qgc2VsZi5HZXRCZXN0TGFuZ3VhZ2Uo ImVuIiwgUGtnSGVhZGVyLkxhbmd1YWdlKToNCj4gDQo+ICsgICAgICAgICAgICBDdXJyZW50ICs9 IFBrZ0hlYWRlci5IZWFkZXIuTGVuZ3RoDQo+IA0KPiArICAgICAgICAgICAgUGtnSGVhZGVyID0g RUZJX0hJSV9TVFJJTkdfUEFDS0FHRV9IRFIuZnJvbV9idWZmZXIoQ3VycmVudCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAjIElmIGNhbid0IGZpbmQgc3RyaW5nIHBhY2thZ2UgYmFzZWQg b24gbGFuZ3VhZ2UsIGp1c3QgcmV0dXJuIHRoZSBmaXJzdA0KPiBzdHJpbmcgcGFja2FnZQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIEN1cnJlbnQgLSBTdHJpbmdQdHIgPj0gTGVuZ3RoOg0KPiANCj4g KyAgICAgICAgICAgICAgICBDdXJyZW50ID0gU3RyaW5nUHRyDQo+IA0KPiArICAgICAgICAgICAg ICAgIFBrZ0hlYWRlciA9IEVGSV9ISUlfU1RSSU5HX1BBQ0tBR0VfSERSLmZyb21fYnVmZmVyKFN0 cmluZ1B0cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIEN1cnJlbnQgKz0gUGtnSGVhZGVyLkhkclNpemUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICMgRmluZCB0aGUgc3RyaW5nIGJsb2NrIGFjY29yZGluZyB0byB0aGUgc3RyaW5nSWQNCj4g DQo+ICsgICAgICAgIFN0YXR1cywgTmFtZU9mZnNldCwgQmxvY2tUeXBlID0gc2VsZi5GaW5kU3Ry aW5nQmxvY2soQ3VycmVudCwgU3RyaW5nSWQpDQo+IA0KPiArICAgICAgICBpZiBTdGF0dXMgIT0g UkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICMgR2V0IHZhcnN0b3JlIG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBzdHJp bmcgdHlwZQ0KPiANCj4gKyAgICAgICAgaWYgQmxvY2tUeXBlIGluIFsNCj4gDQo+ICsgICAgICAg ICAgICBFRklfSElJX1NJQlRfU1RSSU5HX1NDU1UsDQo+IA0KPiArICAgICAgICAgICAgRUZJX0hJ SV9TSUJUX1NUUklOR19TQ1NVX0ZPTlQsDQo+IA0KPiArICAgICAgICAgICAgRUZJX0hJSV9TSUJU X1NUUklOR1NfU0NTVSwNCj4gDQo+ICsgICAgICAgICAgICBFRklfSElJX1NJQlRfU1RSSU5HU19T Q1NVX0ZPTlQsDQo+IA0KPiArICAgICAgICBdOg0KPiANCj4gKyAgICAgICAgICAgIFN0cmluZ05h bWUgPSBDdXJyZW50ICsgTmFtZU9mZnNldA0KPiANCj4gKyAgICAgICAgICAgIFZhclN0b3JlTmFt ZSA9IFN0cmluZ05hbWUuZGVjb2RlKCJ1dGYtOCIpDQo+IA0KPiArICAgICAgICBlbGlmIEJsb2Nr VHlwZSBpbiBbDQo+IA0KPiArICAgICAgICAgICAgRUZJX0hJSV9TSUJUX1NUUklOR19VQ1MyLA0K PiANCj4gKyAgICAgICAgICAgIEVGSV9ISUlfU0lCVF9TVFJJTkdfVUNTMl9GT05ULA0KPiANCj4g KyAgICAgICAgICAgIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1VDUzIsDQo+IA0KPiArICAgICAgICAg ICAgRUZJX0hJSV9TSUJUX1NUUklOR1NfVUNTMl9GT05ULA0KPiANCj4gKyAgICAgICAgXToNCj4g DQo+ICsgICAgICAgICAgICBVbmljb2RlU3RyaW5nID0gQ3VycmVudCArIE5hbWVPZmZzZXQNCj4g DQo+ICsgICAgICAgICAgICBMZW5ndGggPSBzZWxmLkdldFVuaWNvZGVTdHJpbmdUZXh0U2l6ZShV bmljb2RlU3RyaW5nKQ0KPiANCj4gKyAgICAgICAgICAgIERlc3RUbXAgPSBieXRlYXJyYXkoTGVu Z3RoIC8vIDIgKyAxKQ0KPiANCj4gKyAgICAgICAgICAgIFZhclN0b3JlTmFtZSA9IERlc3RUbXAN Cj4gDQo+ICsgICAgICAgICAgICBpbmRleCA9IDANCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBV bmljb2RlU3RyaW5nW2luZGV4XSAhPSAiXDAiOg0KPiANCj4gKyAgICAgICAgICAgICAgICBEZXN0 VG1wW2luZGV4XSA9IG9yZChVbmljb2RlU3RyaW5nW2luZGV4XSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgaW5kZXggKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIERlc3RUbXBbaW5kZXhdID0gIlww Ig0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gTm9uZQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZhclN0b3JlTmFtZQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2dWZnJTdHJpbmdEQiA9IFZmclN0cmluZ0RCKCkNCj4gDQo+ICsNCj4gDQo+ ICtFRklfUlVMRV9JRF9TVEFSVCA9IDB4MDENCj4gDQo+ICtFRklfUlVMRV9JRF9JTlZBTElEID0g MHgwMA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIFNWZnJSdWxlTm9kZToNCj4gDQo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFJ1bGVOYW1lPU5vbmUsIFJ1bGVJZD0wKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuUnVsZUlkID0gUnVsZUlkDQo+IA0KPiArICAgICAgICBzZWxmLlJ1bGVO YW1lID0gUnVsZU5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJSdWxlc0RCOg0KPiANCj4gKyAgICBkZWYgX19pbml0 X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLlJ1bGVMaXN0ID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgc2VsZi5GcmVlUnVsZUlkID0gRUZJX1ZBUlNUT1JFX0lEX1NUQVJUDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBSZWdpc3RlclJ1bGUoc2VsZiwgUnVsZU5hbWUpOg0KPiANCj4gKyAgICAg ICAgaWYgUnVsZU5hbWUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHBOZXcgPSBTVmZyUnVsZU5vZGUoUnVsZU5hbWUsIHNlbGYuRnJl ZVJ1bGVJZCkNCj4gDQo+ICsgICAgICAgIGlmIHBOZXcgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gDQo+ICsgICAgICAgIHNlbGYuRnJlZVJ1bGVJZCArPSAxDQo+IA0KPiAr ICAgICAgICBwTmV3Lk5leHQgPSBzZWxmLlJ1bGVMaXN0DQo+IA0KPiArICAgICAgICBzZWxmLlJ1 bGVMaXN0ID0gcE5ldw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0UnVsZUlkKHNlbGYsIFJ1 bGVOYW1lKToNCj4gDQo+ICsgICAgICAgIGlmIFJ1bGVOYW1lIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIEVGSV9SVUxFX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHBOb2RlID0gc2VsZi5SdWxlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMg bm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuUnVsZU5hbWUgPT0gUnVsZU5h bWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBwTm9kZS5SdWxlSWQNCj4gDQo+ICsg ICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJl dHVybiBFRklfUlVMRV9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArRUZJX1FV RVNUSU9OX0lEX01BWCA9IDB4RkZGRg0KPiANCj4gK0VGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1B UF9TSVpFID0gaW50KChFRklfUVVFU1RJT05fSURfTUFYICsgMSkgLw0KPiBFRklfQklUU19QRVJf VUlOVDMyKQ0KPiANCj4gK0VGSV9RVUVTVElPTl9JRF9JTlZBTElEID0gMHgwDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX1FVRVNJT05fVFlQRShFbnVtKToNCj4gDQo+ICsgICAg UVVFU1RJT05fTk9STUFMID0gMA0KPiANCj4gKyAgICBRVUVTVElPTl9EQVRFID0gMQ0KPiANCj4g KyAgICBRVUVTVElPTl9USU1FID0gMg0KPiANCj4gKyAgICBRVUVTVElPTl9SRUYgPSAzDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgU1ZmclF1ZXN0aW9uTm9kZToNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIE5hbWU9Tm9uZSwgVmFySWRTdHI9Tm9uZSwgQml0TWFzaz0wKTog ICMNCj4gDQo+ICsgICAgICAgIHNlbGYuTmFtZSA9IE5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYu VmFySWRTdHIgPSBWYXJJZFN0cg0KPiANCj4gKyAgICAgICAgc2VsZi5RdWVzdGlvbklkID0gRUZJ X1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuQml0TWFzayA9IEJpdE1h c2sNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYu UVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK0RBVEVfWUVBUl9CSVRNQVNLID0gMHgwMDAwRkZGRg0KPiANCj4gK0RBVEVfTU9O VEhfQklUTUFTSyA9IDB4MDBGRjAwMDANCj4gDQo+ICtEQVRFX0RBWV9CSVRNQVNLID0gMHhGRjAw MDAwMA0KPiANCj4gK1RJTUVfSE9VUl9CSVRNQVNLID0gMHgwMDAwMDBGRg0KPiANCj4gK1RJTUVf TUlOVVRFX0JJVE1BU0sgPSAweDAwMDBGRjAwDQo+IA0KPiArVElNRV9TRUNPTkRfQklUTUFTSyA9 IDB4MDBGRjAwMDANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJRdWVzdGlvbkRC Og0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLkZy ZWVRSWRCaXRNYXAgPSBbXQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgRUZJX0ZS RUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRnJl ZVFJZEJpdE1hcC5hcHBlbmQoMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgUXVlc3Rpb24g SUQgMCBpcyByZXNlcnZlZC4NCj4gDQo+ICsgICAgICAgIHNlbGYuRnJlZVFJZEJpdE1hcFswXSA9 IDB4ODAwMDAwMDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25MaXN0ID0g Tm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRmluZFF1ZXN0aW9uQnlOYW1lKHNlbGYsIE5h bWUpOg0KPiANCj4gKyAgICAgICAgaWYgTmFtZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAgIHdo aWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLk5hbWUg PT0gTmFtZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VO REVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRmluZFF1ZXN0aW9uQnlJZChzZWxmLCBR dWVzdGlvbklkKToNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9O X0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUg PSBzZWxmLlF1ZXN0aW9uTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuUXVlc3Rpb25JZCA9PSBRdWVzdGlvbklk Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVE DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRGcmVlUXVlc3Rpb25JZChzZWxmKToNCj4gDQo+ ICsgICAgICAgIEluZGV4ID0gMA0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgRUZJ X0ZSRUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNl bGYuRnJlZVFJZEJpdE1hcFtpXSAhPSAweEZGRkZGRkZGOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBJbmRleCA9IGkNCj4gDQo+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gDQo+ICsgICAgICAg IGlmIEluZGV4ID09IEVGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgTWFzayA9IDB4ODAwMDAwMDANCj4g DQo+ICsgICAgICAgIHdoaWxlIE1hc2sgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBpZiAoc2Vs Zi5GcmVlUUlkQml0TWFwW0luZGV4XSAmIE1hc2spID09IDA6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuRnJlZVFJZEJpdE1hcFtJbmRleF0gfD0gTWFzaw0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gKEluZGV4IDw8IEVGSV9CSVRTX1NISUZUX1BFUl9VSU5UMzIpICsgT2Zmc2V0 DQo+IA0KPiArICAgICAgICAgICAgTWFzayA+Pj0gMQ0KPiANCj4gKyAgICAgICAgICAgIE9mZnNl dCArPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lO VkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIENoZWNrUXVlc3Rpb25JZEZyZWUoc2VsZiwg UUlkKToNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50KFFJZCAvIEVGSV9CSVRTX1BFUl9VSU5U MzIpDQo+IA0KPiArICAgICAgICBPZmZzZXQgPSBRSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+ IA0KPiArICAgICAgICByZXR1cm4gKHNlbGYuRnJlZVFJZEJpdE1hcFtJbmRleF0gJiAoMHg4MDAw MDAwMCA+PiBPZmZzZXQpKSA9PSAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBNYXJrUXVlc3Rp b25JZFVzZWQoc2VsZiwgUUlkKToNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50KFFJZCAvIEVG SV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArICAgICAgICBPZmZzZXQgPSBRSWQgJSBFRklfQklU U19QRVJfVUlOVDMyDQo+IA0KPiArICAgICAgICBzZWxmLkZyZWVRSWRCaXRNYXBbSW5kZXhdIHw9 IDB4ODAwMDAwMDAgPj4gT2Zmc2V0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBNYXJrUXVlc3Rp b25JZFVudXNlZChzZWxmLCBRSWQpOg0KPiANCj4gKyAgICAgICAgSW5kZXggPSBpbnQoUUlkIC8g RUZJX0JJVFNfUEVSX1VJTlQzMikNCj4gDQo+ICsgICAgICAgIE9mZnNldCA9IFFJZCAlIEVGSV9C SVRTX1BFUl9VSU5UMzINCj4gDQo+ICsgICAgICAgIHNlbGYuRnJlZVFJZEJpdE1hcFtJbmRleF0g Jj0gfigweDgwMDAwMDAwID4+IE9mZnNldCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFJlZ2lz dGVyUXVlc3Rpb24oc2VsZiwgTmFtZSwgVmFySWRTdHIsIFF1ZXN0aW9uSWQsIGdGb3JtUGtnKToN Cj4gDQo+ICsgICAgICAgIGlmIChOYW1lIGlzIG5vdCBOb25lKSBhbmQgKHNlbGYuRmluZFF1ZXN0 aW9uQnlOYW1lKE5hbWUpID09DQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVl c3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyKQ0KPiANCj4gKyAgICAgICAgaWYgcE5vZGUgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBp ZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAg ICAgIFF1ZXN0aW9uSWQgPSBzZWxmLkdldEZyZWVRdWVzdGlvbklkKCkNCj4gDQo+ICsgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DaGVja1F1ZXN0aW9uSWRGcmVlKFF1 ZXN0aW9uSWQpIGlzIEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gUXVlc3Rp b25JZCwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1FVRVNUSU9OSURfUkVERUZJTkVEDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0K PiArICAgICAgICBwTm9kZS5OZXh0ID0gc2VsZi5RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAg IHNlbGYuUXVlc3Rpb25MaXN0ID0gcE5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGdGb3Jt UGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ciwgUXVlc3Rpb25JZCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgVXBkYXRlUXVlc3Rpb25JZChzZWxmLCBRSWQs IE5ld1FJZCwgZ0Zvcm1Qa2cpOg0KPiANCj4gKyAgICAgICAgaWYgUUlkID09IE5ld1FJZDoNCj4g DQo+ICsgICAgICAgICAgICAjIGRvbid0IHVwZGF0ZQ0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgc2VsZi5DaGVja1F1ZXN0aW9uSWRGcmVlKE5ld1FJZCkgaXMgRmFsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5RdWVzdGlvbkxpc3QNCj4gDQo+ICsg ICAgICAgIFRlbXBMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLlF1ZXN0aW9uSWQgPT0gUUlkOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBUZW1wTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBsZW4o VGVtcExpc3QpID09IDA6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9VTkRFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuTWFya1F1 ZXN0aW9uSWRVbnVzZWQoUUlkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZm9yIHBOb2RlIGlu IFRlbXBMaXN0Og0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlLlF1ZXN0aW9uSWQgPSBOZXdRSWQN Cj4gDQo+ICsgICAgICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24ocE5vZGUuVmFySWRT dHIsIE5ld1FJZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuTWFya1F1ZXN0aW9uSWRV c2VkKE5ld1FJZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0UXVlc3Rpb25J ZChzZWxmLCBOYW1lLCBWYXJJZFN0cj1Ob25lLCBRVHlwZT1Ob25lKToNCj4gDQo+ICsgICAgICAg IFF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgQml0 TWFzayA9IDB4MDAwMDAwMDANCj4gDQo+ICsgICAgICAgIGlmIFFUeXBlIGlzIG5vdCBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIFFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JN QUwNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIE5hbWUgaXMgTm9uZSBhbmQgVmFySWRTdHIg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgQml0TWFzaywg UVR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5RdWVzdGlvbkxpc3QN Cj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIE5hbWUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHBOb2Rl Lk5hbWUgIT0gTmFtZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY29udGludWUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBpZiBWYXJJZFN0ciBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgaWYgcE5vZGUuVmFySWRTdHIgIT0gVmFySWRTdHI6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHBOb2RlLlF1 ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgICAgICBCaXRNYXNrID0gcE5vZGUuQml0TWFzaw0KPiAN Cj4gKyAgICAgICAgICAgIGlmIFFUeXBlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBRVHlwZSA9IHBOb2RlLlFUeXBlDQo+IA0KPiArICAgICAgICAgICAgYnJlYWsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBCaXRNYXNrLCBRVHlwZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgUmVnaXN0ZXJOZXdEYXRlUXVlc3Rpb24oc2VsZiwgTmFtZSwg QmFzZVZhcklkLCBRdWVzdGlvbklkLA0KPiBnRm9ybVBrZyk6DQo+IA0KPiArICAgICAgICBpZiBC YXNlVmFySWQgPT0gIiIgYW5kIE5hbWUgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBR dWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBRdWVzdGlvbklkID0gc2VsZi5HZXRGcmVlUXVlc3Rpb25JZCgpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5DaGVja1F1ZXN0aW9u SWRGcmVlKFF1ZXN0aW9uSWQpIGlzIEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZhcklkU3RyTGlzdCA9IFtd DQo+IA0KPiArICAgICAgICBpZiBCYXNlVmFySWQgIT0gIiI6DQo+IA0KPiArICAgICAgICAgICAg VmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAiLlllYXIiKQ0KPiANCj4gKyAgICAgICAg ICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgIi5Nb250aCIpDQo+IA0KPiArICAg ICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAiLkRheSIpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5h cHBlbmQoTmFtZSArICIuWWVhciIpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChOYW1lICsgIi5Nb250aCIpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChOYW1lICsgIi5EYXkiKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0ID0g W10NCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0 ckxpc3RbMF0sDQo+IERBVEVfWUVBUl9CSVRNQVNLKQ0KPiANCj4gKyAgICAgICAgaWYgcE5vZGUg aXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkN Cj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9u SWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3Ry TGlzdFsxXSwNCj4gREFURV9NT05USF9CSVRNQVNLKQ0KPiANCj4gKyAgICAgICAgaWYgcE5vZGUg aXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkN Cj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9u SWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3Ry TGlzdFsyXSwgREFURV9EQVlfQklUTUFTSykNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlIGlzIG5v dCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0K PiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0K PiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuR2V0RnJlZVF1ZXN0aW9uSWQoKQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNrUXVl c3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkgaXMgRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25J ZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ ICsgICAgICAgIHBOb2RlTGlzdFswXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f REFURQ0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQ RS5RVUVTVElPTl9EQVRFDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0uUVR5cGUgPSBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5O ZXh0ID0gcE5vZGVMaXN0WzFdDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBO b2RlTGlzdFsyXQ0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzJdLk5leHQgPSBzZWxmLlF1ZXN0 aW9uTGlzdA0KPiANCj4gKyAgICAgICAgc2VsZi5RdWVzdGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGdGb3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0 ckxpc3RbMF0sIFF1ZXN0aW9uSWQpDQo+IA0KPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdB c3NpZ24oVmFySWRTdHJMaXN0WzFdLCBRdWVzdGlvbklkKQ0KPiANCj4gKyAgICAgICAgZ0Zvcm1Q a2cuRG9QZW5kaW5nQXNzaWduKFZhcklkU3RyTGlzdFsyXSwgUXVlc3Rpb25JZCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgUmVnaXN0ZXJOZXdUaW1lUXVlc3Rp b24oc2VsZiwgTmFtZSwgQmFzZVZhcklkLCBRdWVzdGlvbklkLA0KPiBnRm9ybVBrZyk6DQo+IA0K PiArICAgICAgICBpZiBCYXNlVmFySWQgPT0gIiIgYW5kIE5hbWUgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5HZXRGcmVlUXVlc3Rpb25JZCgp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgc2Vs Zi5DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpIGlzIEZhbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9SRURFRklORUQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVz ZWQoUXVlc3Rpb25JZCkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZh cklkU3RyTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICBpZiBCYXNlVmFySWQgIT0gIiI6DQo+IA0K PiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAiLkhvdXIiKQ0K PiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgIi5NaW51 dGUiKQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsg Ii5TZWNvbmQiKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAiLkhvdXIiKQ0KPiANCj4gKyAgICAgICAg ICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICIuTWludXRlIikNCj4gDQo+ICsgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAiLlNlY29uZCIpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTm9kZUxpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVl c3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFswXSwNCj4gVElNRV9IT1VSX0JJVE1BU0spDQo+ IA0KPiArICAgICAgICBpZiBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBw Tm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09V VF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVz dGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzFdLA0KPiBUSU1FX01JTlVURV9CSVRNQVNLKQ0K PiANCj4gKyAgICAgICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg cE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9P VVRfRk9SX1JFU09VUkNFUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVl c3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFsyXSwNCj4gVElNRV9TRUNPTkRfQklUTUFTSykN Cj4gDQo+ICsgICAgICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f T1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQg PT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25J ZCA9IHNlbGYuR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkgaXMg RmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5NYXJr UXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2Rl TGlzdFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0 WzFdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0u UXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5RVHlw ZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KPiANCj4gKyAgICAgICAgcE5vZGVM aXN0WzFdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQo+IA0KPiArICAg ICAgICBwTm9kZUxpc3RbMl0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUN Cj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5OZXh0ID0gcE5vZGVMaXN0WzFdDQo+IA0KPiAr ICAgICAgICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KPiANCj4gKyAgICAgICAg cE5vZGVMaXN0WzJdLk5leHQgPSBzZWxmLlF1ZXN0aW9uTGlzdA0KPiANCj4gKyAgICAgICAgc2Vs Zi5RdWVzdGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGdG b3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ckxpc3RbMF0sIFF1ZXN0aW9uSWQpDQo+IA0K PiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24oVmFySWRTdHJMaXN0WzFdLCBRdWVz dGlvbklkKQ0KPiANCj4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKFZhcklkU3Ry TGlzdFsyXSwgUXVlc3Rpb25JZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBRdWVz dGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgUmVnaXN0ZXJSZWZRdWVzdGlvbihzZWxmLCBOYW1lLCBCYXNlVmFySWQsIFF1ZXN0 aW9uSWQsIGdGb3JtUGtnKToNCj4gDQo+ICsgICAgICAgIGlmIEJhc2VWYXJJZCA9PSAiIiBhbmQg TmFtZSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IFZhcklkU3RyTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICBpZiBCYXNlVmFySWQgIT0gIiI6DQo+ IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAiLlF1ZXN0 aW9uSWQiKQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklk ICsgIi5Gb3JtSWQiKQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFz ZVZhcklkICsgIi5Gb3JtU2V0R3VpZCIpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0 LmFwcGVuZChCYXNlVmFySWQgKyAiLkRldmljZVBhdGgiKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJ ZCArICIuUXVlc3Rpb25JZCIpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVu ZChCYXNlVmFySWQgKyAiLkZvcm1JZCIpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0 LmFwcGVuZChCYXNlVmFySWQgKyAiLkZvcm1TZXRHdWlkIikNCj4gDQo+ICsgICAgICAgICAgICBW YXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICIuRGV2aWNlUGF0aCIpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBwTm9kZUxpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZy UXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFswXSkNCj4gDQo+ICsgICAgICAgIGlmIHBO b2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5v ZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVz dGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJ ZFN0ckxpc3RbMV0pDQo+IA0KPiArICAgICAgICBpZiBwTm9kZSBpcyBub3QgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiANCj4gKyAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBw Tm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzJdKQ0KPiANCj4gKyAg ICAgICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0 LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFF1ZXN0aW9uSWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JF U09VUkNFUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2Rl KE5hbWUsIFZhcklkU3RyTGlzdFszXSkNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlIGlzIG5vdCBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiAr ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0K PiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNrUXVlc3Rp b25JZEZyZWUoUXVlc3Rpb25JZCkgaXMgRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0K PiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0K PiArICAgICAgICBwTm9kZUxpc3RbMl0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsg ICAgICAgIHBOb2RlTGlzdFszXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9SRUYNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZ UEUuUVVFU1RJT05fUkVGDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0uUVR5cGUgPSBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX1JFRg0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzNdLlFU eXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHBOb2RlTGlzdFswXS5OZXh0ID0gcE5vZGVMaXN0WzFdDQo+IA0KPiArICAgICAgICBwTm9k ZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzJd Lk5leHQgPSBwTm9kZUxpc3RbM10NCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFszXS5OZXh0ID0g c2VsZi5RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25MaXN0ID0gcE5v ZGVMaXN0WzBdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3Np Z24oVmFySWRTdHJMaXN0WzBdLCBRdWVzdGlvbklkKQ0KPiANCj4gKyAgICAgICAgZ0Zvcm1Qa2cu RG9QZW5kaW5nQXNzaWduKFZhcklkU3RyTGlzdFsxXSwgUXVlc3Rpb25JZCkNCj4gDQo+ICsgICAg ICAgIGdGb3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ckxpc3RbMl0sIFF1ZXN0aW9uSWQp DQo+IA0KPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24oVmFySWRTdHJMaXN0WzNd LCBRdWVzdGlvbklkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQs IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBSZWdpc3Rlck9sZERhdGVRdWVzdGlvbihzZWxmLCBZZWFyVmFySWQsIE1vbnRoVmFySWQsIERh eVZhcklkLA0KPiBRdWVzdGlvbklkLCBnRm9ybVBrZyk6DQo+IA0KPiArICAgICAgICBwTm9kZUxp c3QgPSBbXQ0KPiANCj4gKyAgICAgICAgaWYgWWVhclZhcklkID09ICIiIG9yIE1vbnRoVmFySWQg PT0gIiIgb3IgRGF5VmFySWQgPT0gIiIgb3IgXA0KPiANCj4gKyAgICAgICAgICAgIFllYXJWYXJJ ZCBpcyBOb25lIG9yIE1vbnRoVmFySWQgaXMgTm9uZSBvciBEYXlWYXJJZCBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRVJST1JfU0tJUEVEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVz dGlvbk5vZGUoTm9uZSwgWWVhclZhcklkLCBEQVRFX1lFQVJfQklUTUFTSykNCj4gDQo+ICsgICAg ICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5h cHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IFNWZnJR dWVzdGlvbk5vZGUoTm9uZSwgTW9udGhWYXJJZCwNCj4gREFURV9NT05USF9CSVRNQVNLKQ0KPiAN Cj4gKyAgICAgICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5v ZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELA0KPiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2Rl ID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBEYXlWYXJJZCwgREFURV9EQVlfQklUTUFTSykNCj4g DQo+ICsgICAgICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBO b2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwNCj4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBR dWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAg IFF1ZXN0aW9uSWQgPSBzZWxmLkdldEZyZWVRdWVzdGlvbklkKCkNCj4gDQo+ICsgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0 aW9uSWQpIGlzIEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk1hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklk DQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4g DQo+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4g KyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9E QVRFDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBF LlFVRVNUSU9OX0RBVEUNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RVHlwZSA9IEVGSV9R VUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLk5l eHQgPSBwTm9kZUxpc3RbMV0NCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5v ZGVMaXN0WzJdDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYuUXVlc3Rp b25MaXN0DQo+IA0KPiArICAgICAgICBzZWxmLlF1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKFllYXJWYXJJ ZCwgUXVlc3Rpb25JZCkNCj4gDQo+ICsgICAgICAgIGdGb3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihN b250aFZhcklkLCBRdWVzdGlvbklkKQ0KPiANCj4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5n QXNzaWduKERheVZhcklkLCBRdWVzdGlvbklkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBSZWdpc3Rlck9sZFRpbWVRdWVzdGlvbihzZWxmLCBIb3VyVmFySWQs IE1pbnV0ZVZhcklkLCBTZWNvbmRWYXJJZCwNCj4gUXVlc3Rpb25JZCwgZ0Zvcm1Qa2cpOg0KPiAN Cj4gKyAgICAgICAgcE5vZGVMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIGlmIEhvdXJWYXJJZCA9 PSAiIiBvciBNaW51dGVWYXJJZCA9PSAiIiBvciBTZWNvbmRWYXJJZCA9PSAiIiBcDQo+IA0KPiAr ICAgICAgICAgICAgb3IgSG91clZhcklkIGlzIE5vbmUgb3IgTWludXRlVmFySWQgaXMgTm9uZSBv ciBTZWNvbmRWYXJJZCBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgSG91clZhcklkLCBUSU1F X0hPVVJfQklUTUFTSykNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwN Cj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgTWludXRlVmFySWQs DQo+IFRJTUVfTUlOVVRFX0JJVE1BU0spDQo+IA0KPiArICAgICAgICBpZiBwTm9kZSBpcyBub3Qg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiANCj4g KyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lE X0lOVkFMSUQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5vbmUsIFNl Y29uZFZhcklkLA0KPiBUSU1FX1NFQ09ORF9CSVRNQVNLKQ0KPiANCj4gKyAgICAgICAgaWYgcE5v ZGUgaXMgbm90IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9k ZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9R VUVTVElPTl9JRF9JTlZBTElELA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9S RVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYu R2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBzZWxmLkNoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkgaXMgRmFsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwNCj4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBwTm9kZUxpc3RbMF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBO b2RlTGlzdFsxXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVM aXN0WzJdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3Rb MF0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUNCj4gDQo+ICsgICAgICAg IHBOb2RlTGlzdFsxXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KPiAN Cj4gKyAgICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9USU1FDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0K PiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFdLk5leHQgPSBwTm9kZUxpc3RbMl0NCj4gDQo+ICsg ICAgICAgIHBOb2RlTGlzdFsyXS5OZXh0ID0gc2VsZi5RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAg ICAgIHNlbGYuUXVlc3Rpb25MaXN0ID0gcE5vZGVMaXN0WzBdDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24oSG91clZhcklkLCBRdWVzdGlvbklkKQ0KPiAN Cj4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKE1pbnV0ZVZhcklkLCBRdWVzdGlv bklkKQ0KPiANCj4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKFNlY29uZFZhcklk LCBRdWVzdGlvbklkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQs IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBQcmludEFsbFF1ZXN0aW9uKHNlbGYsIEZpbGVOYW1lKToNCj4gDQo+ICsgICAgICAgIHdpdGgg b3BlbihGaWxlTmFtZSwgInciKSBhcyBmOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gc2Vs Zi5RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgiUXVlc3Rpb24gVmFySWQgaXMge30g YW5kIFF1ZXN0aW9uSWQgaXMNCj4gIi5mb3JtYXQocE5vZGUuVmFySWRTdHIpKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCIlZFxuIiAlIChwTm9kZS5RdWVzdGlvbklkKSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBmLmNsb3NlKCkNCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9SZWFkbWUubWQNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9SZWFkbWUubWQNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uN2JkYzg1MDIzYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JlYWRtZS5tZA0KPiBAQCAtMCwwICsxLDY4IEBADQo+ICsj IFB5dGhvbiBWZnJDb21waWxlciBUb29sDQo+IA0KPiArIyMgT3ZlcnZpZXcNCj4gDQo+ICtUaGlz IHB5dGhvbiBWZnJDb21waWxlciB0b29sIGlzIHRoZSBweXRob24gaW1wbGVtZW50YXRpb24gb2Yg dGhlIGVkazINCj4gVmZyQ29tcGlsZXIgdG9vbCB3aGljaCBDIGltcGxlbWVudGF0aW9uIGxvY2F0 ZXMgYXQNCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL3RyZWUvbWFzdGVyL0Jh c2VUb29scy9Tb3VyY2UvQy9WZnJDb20NCj4gcGlsZS4NCj4gDQo+ICsNCj4gDQo+ICtUaGlzIHB5 dGhvbiBpbXBsZW1lbnRhdGlvbiBub3Qgb25seSBjb3ZlcnMgdGhlIHNhbWUgdXNhZ2UgYXMgdGhl IEMgdmVyc2lvbg0KPiBWZnJDb21waWxlciwgYnV0IGFsc28gZXh0ZW5kcyBzZXZlcmFsIG5ldyBm ZWF0dXJlcy4NCj4gDQo+ICsNCj4gDQo+ICsjIyMgSW50cm9kdWN0aW9uDQo+IA0KPiArVGhlIGNv cmUgZnVuY3Rpb24gb2YgdGhlIG9yaWdpbmFsIEMgVmZyQ29tcGlsZXIgdG9vbCBpcyB0byBjb252 ZXJ0IFZGUiBmaWxlcw0KPiBpbnRvIElGUiBiaW5hcmllcy4gSG93ZXZlciwgdGhlIFZGUiBmb3Jt YXQgc3ludGF4IGlzIHVuY29tbW9uIGFuZCBoYXMgcG9vcg0KPiByZWFkYWJpbGl0eSBmb3IgdXNl cnMuIEFkZGl0aW9uYWxseSwgdGhlIEMgdG9vbCBkb2Vzbid0IGdhdGhlciBvciBzdG9yZSBkZWZh dWx0DQo+IHZhcmlhYmxlIGluZm9ybWF0aW9uLCBleGNlcHQgZm9yIGJpbmFyeSBnZW5lcmF0aW9u LiBXaGVuIG1vZGlmaWNhdGlvbnMgYXJlDQo+IHJlcXVpcmVkLCBkZXZlbG9wZXJzIGhhdmUgdG8g ZGVhbCB3aXRoIHRoZSBhYnN0cmFjdCBJRlIgYmluYXJ5LCByZXN1bHRpbmcgaW4NCj4gaW5lZmZp Y2llbmN5LiBUbyBhZGRyZXNzIHRoZXNlIGNoYWxsZW5nZXMsIHRoaXMgcHl0aG9uIHRvb2wgZ2Vu ZXJhdGVzIFlBTUwNCj4gZm9ybWF0IGZpbGVzIGZyb20gVkZSIGZpbGVzLiBUaGlzIGFwcHJvYWNo IGFsbG93cyBmb3IgcHJlc2VydmF0aW9uIG9mIHRoZSBWRlINCj4gZmlsZSdzIG9wY29kZSBsYXlv dXQgYW5kIGhpZXJhcmNoeSwgc2ltcGxpZnlpbmcgcmVhZGFiaWxpdHkuIE1vcmVvdmVyLCB0aGUg dG9vbA0KPiBnZW5lcmF0ZXMgYW4gYWRkaXRpb25hbCBKU09OIGZpbGUgdG8gcHJvdmlkZSBhIG1v cmUgYWNjZXNzaWJsZSBwcmVzZW50YXRpb24gb2YNCj4gdmFyaWFibGUtcmVsYXRlZCBpbmZvcm1h dGlvbi4gSW4gYSBmZXcgd29yZHMsIHRoZSBuZXcgdG9vbCBvZmZlcnMgdGhlIHNhbWUNCj4gdXNh Z2UgYXMgdGhlIG9yaWdpbmFsIEMgVmZyQ29tcGlsZXIgd2hpbGUgZXhwYW5kaW5nIGZ1bmN0aW9u YWxpdHkgd2l0aCB0aGUNCj4gWUFNTC9KU09OIG91dHB1dCwgZW5oYW5jaW5nIHJlYWRhYmlsaXR5 IGFuZCBhZGFwdGFiaWxpdHkuDQo+IA0KPiArDQo+IA0KPiArIyMjIE1haW4gdXBkYXRlIGluIHRo aXMgY29tbWl0bWVudA0KPiANCj4gKy0gVXBkYXRlIHRoZSB2ZnIgcGFyc2VyIGdlbmVyYXRvciBm cm9tIEFOVExSIHRvIEFOVExSIHY0LCB3aGljaCBpcyBtb3JlDQo+IHJlYWRhYmxlIGFuZCBpcyBl YWlzZXIgdG8gYWRkIG9uIG5ldyBncmFtbWFycyBhbmQgZnVuY3Rpb25zLg0KPiANCj4gKy0gQ292 ZXIgdGhlIHNhbWUgdXNhZ2UgYXMgdGhlIGVkazIgQyBWZnJDb21waWxlci4gVGhlIHRvb2wgaXMg YWJsZSB0bw0KPiBjb21waWxlcyBWRlIgaW50byAuYy9sc3QvaHBrIG91dHB1dCBmaWxlcy4NCj4g DQo+ICstIEV4dHJhY3QgdmFyaWFibGUgaW5mb3JtYXRpb24gZnJvbSBlYWNoIFZGUiBmaWxlIHRv IEpTT04uIFRoZSBvdXRwdXQgSlNPTg0KPiBmaWxlIHN0b3JlcyB0aGUgZGF0YSBzdHJ1Y3R1cmVz IGFuZCBkZWZhdWx0IHZhbHVlcyBvZiB2YXJpYWJsZXMuDQo+IA0KPiArLSBDb252ZXJ0IGVhY2gg VkZSIHNvdXJjZSBmb3JtYXQgdG8gYW4gZXF1aXZhbGVudCBZQU1MLiBUaGUgZ2VuZXJhdGVkDQo+ IFlBTUwgZmlsZSBjb3ZlcnMgdGhlIHNhbWUgZm9ybWF0IGNvbnRlbnRzIGluIHRoZSBWZnIgZmls ZS4NCj4gDQo+ICsNCj4gDQo+ICsjIyMgS25vd24gaXNzdWVzDQo+IA0KPiArLSBJc3N1ZSAxIC0g VGVzdCBDb3ZlcmFnZSBhbmQgTWV0aG9kDQo+IA0KPiArICAtIFRoZSBjdXJyZW50IHB5dGhvbiB2 ZnJjb21waWxlciB0b29sIGRvZXMgbm90IGhhdmUgYSBmdWxsIGNvZGUgY292ZXJhZ2UNCj4gdGVz dC4NCj4gDQo+ICsgICAgLSBTaG91bGQgYWRkIHVuaXQgdGVzdHMgZm9yIGhpZ2hlciBjb2RlIGNv dmVyYWdlLg0KPiANCj4gKyAgLSBUaGUgdGVzdCBzaG91bGQgYmUgZW5hYmxlZCBpbnRvIEF6dXJl IHBpcGVsaW5lcyBmb3IgcmV0cmlnZ2VyaW5nLg0KPiANCj4gKyAgLSBUaGUgY3VycmVudCB0ZXN0 IHNjcmlwdCB1c2VzIHNvbWUgb3V0cHV0IGJpbmFyaWVzIGZvciB0ZXN0IGlucHV0LCB3aWxsDQo+ IHJlbW92ZSB0aGVzZSBiaW5hcmllcywgYW5kIHNhdmUgdGhlIG5lY2Vzc2FyeSBwYXJ0IGNvbnRl bnQgb2YgaXQgZGlyZWN0bHkgaW50bw0KPiB0aGUgdGVzdCBzY3JpcHQgaXRzZWxmLg0KPiANCj4g Ky0gSXNzdWUgMiAtIENvZGUgc3R5bGUNCj4gDQo+ICsgIC0gVGhlIGN1cnJlbnQgcHl0aG9uIHZm cmNvbXBpbGVyIHRvb2wgaGFzIHNvbWUgY29kaW5nIHN0eWxlIHN0aWxsIGxpa2UgQyBzdHlsZQ0K PiB3aGljaCBub3QgZm9sbG93cyB0aGUgcHl0aG9uIHN0YW5kYXJkaXplIHJ1bGUuDQo+IA0KPiAr ICAgIC0gU2hvdWxkIGVuaGFuY2UgR1VJRCB1c2FnZSB3aXRoICd1dWlkJyBwaXAgbW9kdWxlOw0K PiANCj4gKyAgICAtIFNob3VsZCBmaWd1cmUgb3V0IGNvbW1vbiB3YXkgZm9yIFN0YXR1cyBDb2Rl IHByb2Nlc3Npbmc7DQo+IA0KPiArICAtIFRoZSBjdXJyZW50IHB5dGhvbiB2ZnJjb21waWxlciB0 b29sIG5lZWQgZG9jc3RyaW5nIGRlc2NyaXB0aW9uIGZvciBjb2RlDQo+IGV4cGxhbmF0aW9uLg0K PiANCj4gKy0gSXNzdWUgMyAtIE5ldyBnZW5lcmF0ZWQgWUFNTCBmb3JtYXQNCj4gDQo+ICsgIC0g VGhlIGN1cnJlbnQgWUFNTCBmb3JtYXQgaXMgYSByZWZlcmVuY2UgdmVyc2lvbiwgYW5kIHdlIHdh cm1seSB3ZWxjb21lDQo+IGV2ZXJ5b25lIHRvIHByb3ZpZGUgZmVlZGJhY2suDQo+IA0KPiArLSBG dXR1cmUgZXh0ZW5zaW9uDQo+IA0KPiArICAtIFRoZSB0b29sIHdpbGwgZXh0ZW5kIG5ldyBmdW5j dGlvbnMsIHdoaWNoIGlzIGFibGUgdG8gY29tcGlsZSB5YW1sIGZpbGVzLg0KPiBUaGlzIGZlYXR1 cmUgd2lsbCBiZSBhZGRlZCBpbiBmdXR1cmUgdXBkYXRlLg0KPiANCj4gKw0KPiANCj4gKyMjIyBV c2Ugd2l0aCBCdWlsZCBTeXN0ZW0NCj4gDQo+ICtUbyB1c2UgdGhlIFZmckNvbXBpbGVyIFB5dGhv biBUb29sIHdpdGggQnVpbGQgU3lzdGVtLCAgcGxlYXNlIGRvIHRoZQ0KPiBmb2xsb3dpbmcgc3Rl cHMgaW4gdGhlIGJ1aWxkIGNvbW1hbmQuDQo+IA0KPiArMS4gTG9jYXRlIHRoZSAqKlZmckNvbXBp bGVyKiogZm9sZGVyIHRvIHBhdGgNCj4gKionXGVkazJcQmFzZVRvb2xzXFNvdXJjZVxQeXRob24n LioqDQo+IA0KPiArMS4gT3BlbiAgKionYnVpbGRfcnVsZS50ZW1wbGF0ZScqKiAgZmlsZSAgaW4g cGF0aA0KPiAqKidcZWRrMlxCYXNlVG9vbHNcQ29uZlwnLioqDQo+IA0KPiArICAtIEZpbmQgdGhl IEMgVkZSIGNvbW1hbmQgbGluZSBgJChWRlIpIiAkKFZGUl9GTEFHUykgLS1zdHJpbmctZGINCj4g JChPVVRQVVRfRElSKSgrKSQoTU9EVUxFX05BTUUpU3RyRGVmcy5ocGsgLS1vdXRwdXQtZGlyZWN0 b3J5DQo+ICR7ZF9wYXRofSAkKE9VVFBVVF9ESVIpKCspJHtzX2Jhc2V9LmlgIGluICoqYnVpbGRf cnVsZS50ZW1wbGF0ZSoqIGZpbGUuDQo+IFRoZXJlIGFyZSB0d28gQyBWRlIgY29tbWFuZHMgaW4g aXQuDQo+IA0KPiArICAtIEFkZCBuZXcgY29tbWFuZCBsaW5lIGAiJChQWVZGUikiICR7c3JjfSAt LXN0cmluZy1kYg0KPiAkKE9VVFBVVF9ESVIpKCspJChNT0RVTEVfTkFNRSlTdHJEZWZzLmhwayAt dyAkKFdPUktTUEFDRSkgLW0NCj4gJChNT0RVTEVfTkFNRSkgLW8gJChPVVRQVVRfRElSKSAtLXZm cmAgYWZ0ZXIgZWFjaCBWRlIgY29tbWFuZCBsaW5lcy4NCj4gDQo+ICsyLiBPcGVuICAqKid0b29s c19kZWYudGVtcGxhdGUnKiogIGZpbGUgIGluIHBhdGggKionXGVkazJcQmFzZVRvb2xzXENvbmZc Jy4qKg0KPiANCj4gKyAgLSBGaW5kIHRoZSBDIFZGUl9QQVRIIGNvbW1hbmQgbGluZSBgKl8qXypf VkZSX1BBVEggICAgICAgICAgICAgICAgICAgICAgPQ0KPiBWZnJDb21waWxlYCBpbiAqKnRvb2xz X2RlZi50ZW1wbGF0ZSoqIGZpbGUuDQo+IA0KPiArICAtIEFkZCBuZXcgY29tbWFuZCBsaW5lIGAq XypfKl9QWVZGUl9QQVRIICAgICAgICAgICAgICAgICAgICA9IFB5VmZyQ29tcGlsZWANCj4gYWZ0 ZXIgdGhlIFZGUl9QQVRIIGNvbW1hbmQgbGluZS4NCj4gDQo+ICszLiBGb3Igd2luZG93cyBidWls ZCwgY3JlYXRlIGEgKipQeVZmckNvbXBpbGUuYmF0KiogZmlsZSBpbiBwYXRoDQo+ICoqJ0M6XGVk azJcQmFzZVRvb2xzXEJpbldyYXBwZXJzXFdpbmRvd3NMaWtlJy4qKg0KPiANCj4gKyAgLSBBZGQg dGhlIGZvbGxvd2luZyBsaW5lcyBpbiB0aGUgY3JlYXRlZCAqKlB5VmZyQ29tcGlsZS5iYXQqKiBm aWxlLg0KPiANCj4gKyAgICBgYGANCj4gDQo+ICsgICAgQHNldGxvY2FsDQo+IA0KPiArICAgIEBz ZXQgVG9vbE5hbWU9SWZyQ29tcGlsZXINCj4gDQo+ICsgICAgQHNldA0KPiBQWVRIT05QQVRIPSVQ WVRIT05QQVRIJTslQkFTRV9UT09MU19QQVRIJVxTb3VyY2VcUHl0aG9uOyVCQVMNCj4gRV9UT09M U19QQVRIJVxTb3VyY2VcUHl0aG9uXFZmckNvbXBpbGVyDQo+IA0KPiArICAgIEAlUFlUSE9OX0NP TU1BTkQlIC1tICVUb29sTmFtZSUgJSoNCj4gDQo+ICsgICAgYGBgDQo+IA0KPiArNC4gRm9yIFVu aXggYnVpbGQsIGNyZWF0ZSBhICoqUHlWZnJDb21waWxlKiogZmlsZSBpbiBwYXRoDQo+ICoqJ0M6 XGVkazJcQmFzZVRvb2xzXEJpbldyYXBwZXJzXFBvc2l4TGlrZScuKioNCj4gDQo+ICsgIC0gQWRk IHRoZSBmb2xsb3dpbmcgbGluZXMgaW4gdGhlIGNyZWF0ZWQgKipQeVZmckNvbXBpbGUqKiBmaWxl Lg0KPiANCj4gKyAgICBgYGANCj4gDQo+ICsgICAgIyEvdXNyL2Jpbi9lbnYgYmFzaA0KPiANCj4g KyAgICAjcHl0aG9uIGBkaXJuYW1lICQwYC9SdW5Ub29sRnJvbVNvdXJjZS5weSBgYmFzZW5hbWUg JDBgICQqDQo+IA0KPiArDQo+IA0KPiArICAgICMgSWYgYSAke1BZVEhPTl9DT01NQU5EfSBjb21t YW5kIGlzIGF2YWlsYWJsZSwgdXNlIGl0IGluIHByZWZlcmVuY2UNCj4gdG8gcHl0aG9uDQo+IA0K PiArICAgIGlmIGNvbW1hbmQgLXYgJHtQWVRIT05fQ09NTUFORH0gPi9kZXYvbnVsbCAyPiYxOyB0 aGVuDQo+IA0KPiArICAgICAgICBweXRob25fZXhlPSR7UFlUSE9OX0NPTU1BTkR9DQo+IA0KPiAr ICAgIGZpDQo+IA0KPiArICAgIGZ1bGxfY21kPSR7QkFTSF9TT1VSQ0U6LSQwfSAjIHNlZQ0KPiBo dHRwOi8vbXl3aWtpLndvb2xlZGdlLm9yZy9CYXNoRkFRLzAyOCBmb3IgYSBkaXNjdXNzaW9uIG9m IHdoeSAkMCBpcyBub3QgYQ0KPiBnb29kIGNob2ljZSBoZXJlDQo+IA0KPiArICAgIGRpcj0kKGRp cm5hbWUgIiRmdWxsX2NtZCIpDQo+IA0KPiArICAgIGNtZD0ke2Z1bGxfY21kIyMqL30NCj4gDQo+ ICsNCj4gDQo+ICsgICAgZXhwb3J0DQo+IFBZVEhPTlBBVEg9IiRkaXIvLi4vLi4vU291cmNlL1B5 dGhvbjokZGlyLy4uLy4uL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXINCj4gOiRkaXIvLi4vLi4v U291cmNlL1B5dGhvbiR7UFlUSE9OUEFUSDorOiIkUFlUSE9OUEFUSCJ9Ig0KPiANCj4gKyAgICBl eGVjICIke3B5dGhvbl9leGU6LXB5dGhvbn0iIC1tIElmckNvbXBpbGVyICIkQCINCj4gDQo+ICsg ICAgYGBgDQo+IA0KPiArNS4gQWRkIEVudjogcnVuIGBwaXAgaW5zdGFsbCBhbnRscjQtcHl0aG9u My1ydW50aW1lPT00LjcuMWAgYmFzZWQgb24gdGhlDQo+IG9yaWdpbmFsIGJ1aWxkIGVudmlyb25t ZW50Lg0KPiANCj4gKzYuIFJ1biBCdWlsZCBDb21tYW5kOiBgYnVpbGQgLXAgT3ZtZlBrZ1xPdm1m UGtnSWEzMlg2NC5kc2MgLWEgSUEzMiAtYQ0KPiBYNjQgLWogYnVpbGQubG9nYA0KPiANCj4gK2AN Cj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9W ZnJTeW50YXguZzQNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJT eW50YXguZzQNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMjg5 NTM3N2I3NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KPiBAQCAtMCwwICsxLDE5MjEgQEANCj4gKy8vLy8g QGZpbGUNCj4gDQo+ICsvLyB2ZnIgc3ludGF4DQo+IA0KPiArLy8NCj4gDQo+ICsvLyBDb3B5cmln aHQgKGMpIDIwMjItLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+IA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gDQo+ICsvLy8vDQo+IA0KPiArZ3JhbW1hciBWZnJTeW50YXg7DQo+IA0KPiArb3B0aW9ucyB7 DQo+IA0KPiArICAgIGxhbmd1YWdlPVB5dGhvbjsNCj4gDQo+ICt9DQo+IA0KPiArQGhlYWRlcnsN Cj4gDQo+ICsNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmckN0eXBlcyBpbXBvcnQgKg0KPiAN Cj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyRm9ybVBrZyBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZy Q29tcGlsZXIuSWZyVXRpbGl0eSBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZy VHJlZSBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyRXJyb3IgaW1wb3J0ICoN Cj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmclByZVByb2Nlc3MgaW1wb3J0ICoNCj4gDQo+ICt9 DQo+IA0KPiArDQo+IA0KPiArdmZyUHJvZ3JhbQ0KPiANCj4gKyAgICA6ICAgKHZmclByYWdtYVBh Y2tEZWZpbml0aW9uIHwgdmZyRGF0YVN0cnVjdERlZmluaXRpb24gfA0KPiB2ZnJEYXRhVW5pb25E ZWZpbml0aW9uKSogdmZyRm9ybVNldERlZmluaXRpb24/DQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICtwcmFnbWFQYWNrU2hvd0RlZg0KPiANCj4gKyAgICA6ICAgJ3Nob3cnDQo+IA0KPiAr ICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtwcmFnbWFQYWNrU3RhY2tEZWYNCj4gDQo+ICsgICAgOiAg ICgncHVzaCcgfCAncG9wJykgICgnLCcgU3RyaW5nSWRlbnRpZmllcik/ICgnLCcgTnVtYmVyKT8N Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ByYWdtYVBhY2tOdW1iZXINCj4gDQo+ICsg ICAgOiAgIE51bWJlcj8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclByYWdtYVBh Y2tEZWZpbml0aW9uDQo+IA0KPiArICAgIDogICAnI3ByYWdtYScgJ3BhY2snICcoJw0KPiANCj4g KyAgICAgICAgKCAgIHByYWdtYVBhY2tTaG93RGVmDQo+IA0KPiArICAgICAgICB8ICAgcHJhZ21h UGFja1N0YWNrRGVmDQo+IA0KPiArICAgICAgICB8ICAgcHJhZ21hUGFja051bWJlcg0KPiANCj4g KyAgICAgICAgKT8NCj4gDQo+ICsgICAgJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ ICt2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbg0KPiANCj4gKyAgICA6ICAgKFR5cGVEZWYpPyBTdHJ1 Y3QgTm9uTnZEYXRhTWFwPyBOMT1TdHJpbmdJZGVudGlmaWVyPyAneycNCj4gdmZyRGF0YVN0cnVj dEZpZWxkc1tGYWxzZV0gJ30nICBOMj1TdHJpbmdJZGVudGlmaWVyPyAnOycNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK3ZmckRhdGFVbmlvbkRlZmluaXRpb24NCj4gDQo+ICsgICAgOiAg IChUeXBlRGVmKT8gVW5pb24gTm9uTnZEYXRhTWFwPyBOMT1TdHJpbmdJZGVudGlmaWVyPyAneycN Cj4gdmZyRGF0YVN0cnVjdEZpZWxkc1tUcnVlXSd9JyBOMj1TdHJpbmdJZGVudGlmaWVyPyAnOycN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckRhdGFTdHJ1Y3RGaWVsZHNbRmllbGRJ blVuaW9uXQ0KPiANCj4gKyAgICA6DQo+IA0KPiArICAgICggICBkYXRhU3RydWN0RmllbGQ2NFtG aWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0RmllbGQzMltGaWVsZEluVW5p b25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0RmllbGQxNltGaWVsZEluVW5pb25dDQo+IA0K PiArICAgIHwgICBkYXRhU3RydWN0RmllbGQ4W0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgfCAg IGRhdGFTdHJ1Y3RGaWVsZEJvb2xbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICB8ICAgZGF0YVN0 cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgfCAgIGRhdGFTdHJ1Y3RG aWVsZERhdGVbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkVGlt ZVtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0RmllbGRSZWZbRmllbGRJ blVuaW9uXQ0KPiANCj4gKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkVXNlcltGaWVsZEluVW5pb25d DQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+IA0K PiArICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25dDQo+IA0KPiArICAg IHwgICBkYXRhU3RydWN0Qml0RmllbGQxNltGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBk YXRhU3RydWN0Qml0RmllbGQ4W0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgKSoNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlvbl0NCj4g DQo+ICsgICAgOiAgICdVSU5UNjQnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScp PyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZDMyW0Zp ZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgICdVSU5UMzInIE49U3RyaW5nSWRlbnRpZmllciAo J1snIE51bWJlciAnXScpPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFT dHJ1Y3RGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgICdVSU5UMTYnIE49U3Ry aW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZDhbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICA6ICAg J1VJTlQ4JyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0KPiAr ICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0RmllbGRCb29sW0ZpZWxkSW5Vbmlvbl0N Cj4gDQo+ICsgICAgOiAgICdCT09MRUFOJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIg J10nKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0RmllbGRT dHJpbmdbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICA6ICAgJ0VGSV9TVFJJTkdfSUQnIE49U3Ry aW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZERhdGVbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICA6 ICAgJ0VGSV9ISUlfREFURScgTj1TdHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7 Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArZGF0YVN0cnVjdEZpZWxkVGltZVtGaWVs ZEluVW5pb25dDQo+IA0KPiArICAgIDogICAnRUZJX0hJSV9USU1FJyBOPVN0cmluZ0lkZW50aWZp ZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtk YXRhU3RydWN0RmllbGRSZWZbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICA6ICAgJ0VGSV9ISUlf UkVGJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAg IDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0RmllbGRVc2VyW0ZpZWxkSW5Vbmlvbl0NCj4g DQo+ICsgICAgOiAgIFQ9U3RyaW5nSWRlbnRpZmllciBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBO dW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0 Qml0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIDogICBEPSdVSU5UNjQnICBOPVN0 cmluZ0lkZW50aWZpZXI/ICc6JyBOdW1iZXIgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICtkYXRh U3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIDogICBEPSdVSU5UMzIn IE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJlciAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4g K2RhdGFTdHJ1Y3RCaXRGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgIEQ9J1VJ TlQxNicgTj1TdHJpbmdJZGVudGlmaWVyPyAnOicgTnVtYmVyICc7Jw0KPiANCj4gKyAgICA7DQo+ IA0KPiArZGF0YVN0cnVjdEJpdEZpZWxkOFtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIDogICBE PSdVSU5UOCcgTj1TdHJpbmdJZGVudGlmaWVyPyAnOicgTnVtYmVyICc7Jw0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArLy8gVkZSIEZvcm1TZXQgRGVmaW5pdGlvbg0KPiANCj4gK3ZmckZv cm1TZXREZWZpbml0aW9uDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9G T1JNX1NFVF9PUCldDQo+IA0KPiArICAgIDogICAnZm9ybXNldCcNCj4gDQo+ICsgICAgICAgICdn dWlkJyAnPScgZ3VpZERlZmluaXRpb24gJywnDQo+IA0KPiArICAgICAgICAndGl0bGUnICc9JyAn U1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICdoZWxwJyAn PScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+IA0KPiArICAgICAgICAoJ2Ns YXNzZ3VpZCcgJz0nIGNsYXNzZ3VpZERlZmluaXRpb25bbG9jYWxjdHguTm9kZV0gJywnKT8NCj4g DQo+ICsgICAgICAgICgnY2xhc3MnICc9JyBjbGFzc0RlZmluaXRpb24gJywnKT8NCj4gDQo+ICsg ICAgICAgICgnc3ViY2xhc3MnICc9JyBzdWJjbGFzc0RlZmluaXRpb24gJywnKT8NCj4gDQo+ICsg ICAgICAgIHZmckZvcm1TZXRMaXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAnZW5k Zm9ybXNldCcgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzc2d1aWREZWZp bml0aW9uW05vZGVdDQo+IA0KPiArbG9jYWxzW0d1aWRMaXN0PVtdXQ0KPiANCj4gKyAgICA6ICAg Z3VpZERlZmluaXRpb24gKCd8JyBndWlkRGVmaW5pdGlvbik/ICgnfCcgZ3VpZERlZmluaXRpb24p PygnfCcNCj4gZ3VpZERlZmluaXRpb24pPw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr Y2xhc3NEZWZpbml0aW9uDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9H VUlEX09QKV0NCj4gDQo+ICsgICAgOiAgIHZhbGlkQ2xhc3NOYW1lcyAoJ3wnIHZhbGlkQ2xhc3NO YW1lcykqDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2YWxpZENsYXNzTmFtZXMNCj4g DQo+ICtsb2NhbHNbQ2xhc3NOYW1lPTBdDQo+IA0KPiArICAgIDogICBDbGFzc05vbkRldmljZQ0K PiANCj4gKyAgICB8ICAgQ2xhc3NEaXNrRGV2aWNlDQo+IA0KPiArICAgIHwgICBDbGFzc1ZpZGVv RGV2aWNlDQo+IA0KPiArICAgIHwgICBDbGFzc05ldHdvcmtEZXZpY2UNCj4gDQo+ICsgICAgfCAg IENsYXNzSW5wdXREZXZpY2UNCj4gDQo+ICsgICAgfCAgIENsYXNzT25Cb2FyZERldmljZQ0KPiAN Cj4gKyAgICB8ICAgQ2xhc3NPdGhlckRldmljZQ0KPiANCj4gKyAgICB8ICAgTnVtYmVyDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtzdWJjbGFzc0RlZmluaXRpb24NCj4gDQo+ICtsb2Nh bHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApXQ0KPiANCj4gKyAgICA6ICAgU3Vi Y2xhc3NTZXR1cEFwcGxpY2F0aW9uDQo+IA0KPiArICAgIHwgICBTdWJjbGFzc0dlbmVyYWxBcHBs aWNhdGlvbg0KPiANCj4gKyAgICB8ICAgU3ViY2xhc3NGcm9udFBhZ2UNCj4gDQo+ICsgICAgfCAg IFN1YmNsYXNzU2luZ2xlVXNlDQo+IA0KPiArICAgIHwgICBOdW1iZXINCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK3ZmckZvcm1TZXRMaXN0W05vZGVdDQo+IA0KPiArICAg IDogKHZmckZvcm1TZXQpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArLy8yLjUgVkZS IEZvcm1TZXQgTGlzdCBEZWZpbml0aW9uDQo+IA0KPiArdmZyRm9ybVNldA0KPiANCj4gK2xvY2Fs c1tOb2RlPU5vbmVdDQo+IA0KPiArICAgIDoNCj4gDQo+ICsgICAgKCAgIHZmckZvcm1EZWZpbml0 aW9uDQo+IA0KPiArICAgIHwgICB2ZnJGb3JtTWFwRGVmaW5pdGlvbg0KPiANCj4gKyAgICB8ICAg dmZyU3RhdGVtZW50SW1hZ2UNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhclN0b3JlTGlu ZWFyDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaQ0KPiANCj4gKyAgICB8 ICAgdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRl bWVudERlZmF1bHRTdG9yZQ0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9y bVNldA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQNCj4gDQo+ ICsgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiANCj4gKyAgICApDQo+IA0KPiArICAg IDsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsvLzIuNiBWRlIgRGVmYXVsdCBTdG9yZXMgRGVm aW5pdGlvbg0KPiANCj4gK3ZmclN0YXRlbWVudERlZmF1bHRTdG9yZQ0KPiANCj4gK2xvY2Fsc1tO b2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfREVGQVVMVFNUT1JFX09QKV0NCj4gDQo+ICsgICAgOiAg ICdkZWZhdWx0c3RvcmUnIE49U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ICsgICAgICAgICdw cm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgUz1OdW1iZXIgJyknDQo+IA0KPiArICAgICAg ICAoJywnICdhdHRyaWJ1dGUnICc9JyBBPU51bWJlcik/ICc7Jw0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArLy8yLjcgVkZSIFZhcmlhYmxlIFN0b3JlIERlZmluaXRpb24NCj4gDQo+ICt2 ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2Rl KEVGSV9JRlJfVkFSU1RPUkVfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3ZhcnN0b3JlJw0KPiANCj4g KyAgICAgICAgKCAgIFROPVN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAgICB8ICAg J1VJTlQ4JyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAnVUlOVDE2JyAnLCcNCj4gDQo+ICsgICAg ICAgIHwgICAnVUlOVDMyJyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAnVUlOVDY0JyAnLCcNCj4g DQo+ICsgICAgICAgIHwgICAnRUZJX0hJSV9EQVRFJyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAn RUZJX0hJSV9USU1FJyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAnRUZJX0hJSV9SRUYnICcsJw0K PiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgKCd2YXJpZCcgJz0nIElEPU51bWJlciAn LCcpPw0KPiANCj4gKyAgICAgICAgJ25hbWUnICc9JyBTTj1TdHJpbmdJZGVudGlmaWVyICcsJw0K PiANCj4gKyAgICAgICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFZhclN0b3JlRWZpDQo+IA0KPiArbG9jYWxz W05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9FRklfT1ApXQ0KPiANCj4gKyAgICA6 ICAgJ2VmaXZhcnN0b3JlJw0KPiANCj4gKyAgICAgICAgKCAgIFROPVN0cmluZ0lkZW50aWZpZXIg JywnDQo+IA0KPiArICAgICAgICB8ICAgJ1VJTlQ4JyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAn VUlOVDE2JyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAnVUlOVDMyJyAnLCcNCj4gDQo+ICsgICAg ICAgIHwgICAnVUlOVDY0JyAnLCcNCj4gDQo+ICsgICAgICAgIHwgICAnRUZJX0hJSV9EQVRFJyAn LCcNCj4gDQo+ICsgICAgICAgIHwgICAnRUZJX0hJSV9USU1FJyAnLCcNCj4gDQo+ICsgICAgICAg IHwgICAnRUZJX0hJSV9SRUYnICcsJw0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg KCd2YXJpZCcgJz0nIElEPU51bWJlciAnLCcpPw0KPiANCj4gKyAgICAgICAgJ2F0dHJpYnV0ZScg Jz0nIHZmclZhclN0b3JlRWZpQXR0ciAoJ3wnIHZmclZhclN0b3JlRWZpQXR0cikqICcsJw0KPiAN Cj4gKyAgICAgICAgKCAgICduYW1lJyAnPScgU049U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ ICsgICAgICAgIHwgICAnbmFtZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBWTj1OdW1iZXIgJykn ICcsJyAgJ3ZhcnNpemUnICc9Jw0KPiBOPU51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICkNCj4g DQo+ICsgICAgICAgICdndWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJWYXJTdG9yZUVmaUF0dHINCj4gDQo+ICtsb2NhbHNbQXR0cj0w XQ0KPiANCj4gKyAgICA6ICAgTnVtYmVyOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFZh clN0b3JlTmFtZVZhbHVlDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9W QVJTVE9SRV9OQU1FX1ZBTFVFX09QKV0NCj4gDQo+ICsgICAgOiAgICduYW1ldmFsdWV2YXJzdG9y ZScgU049U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ICsgICAgICAgICgndmFyaWQnICc9JyBJ RD1OdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgICAgICgnbmFtZScgJz0nICdTVFJJTkdfVE9LRU4n ICcoJyBOdW1iZXIgJyknICcsJykrDQo+IA0KPiArICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZp bml0aW9uICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50RGlz YWJsZUlmRm9ybVNldA0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfRElT QUJMRV9JRl9PUCldDQo+IA0KPiArICAgIDogICAnZGlzYWJsZWlmJyB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uW2xvY2FsY3R4Lk5vZGVdICc7Jw0KPiANCj4gKyAgICAgICAgdmZyRm9ybVNldExpc3Rb bG9jYWxjdHguTm9kZV0NCj4gDQo+ICsgICAgICAgICdlbmRpZicgJzsnDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldA0KPiANCj4gK2xv Y2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApXQ0KPiANCj4gKyAg ICA6ICAgJ3N1cHByZXNzaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0g JzsnDQo+IA0KPiArICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4g KyAgICAgICAgJ2VuZGlmJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2d1aWRT dWJEZWZpbml0aW9uW0d1aWRdDQo+IA0KPiArICAgIDogICBOdW1iZXIgJywnIE51bWJlciAnLCcg TnVtYmVyICcsJyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICBOdW1iZXIgJywnIE51bWJlciAn LCcgTnVtYmVyICcsJyBOdW1iZXINCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2d1aWRE ZWZpbml0aW9uDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoKSwgR3VpZD1FRklfR1VJ RCgpXQ0KPiANCj4gKyAgICA6ICAgJ3snDQo+IA0KPiArICAgICAgICBOdW1iZXIgJywnIE51bWJl ciAnLCcgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgKCAgICd7JyBndWlkU3ViRGVmaW5pdGlv bltsb2NhbGN0eC5HdWlkXSAnfScNCj4gDQo+ICsgICAgICAgIHwgICBndWlkU3ViRGVmaW5pdGlv bltsb2NhbGN0eC5HdWlkXQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgJ30nDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtnZXRTdHJpbmdJZA0KPiANCj4gK2xvY2Fsc1tT dHJpbmdJZD0nJ10NCj4gDQo+ICsgICAgOiAgICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJykn DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJRdWVzdGlvbkhlYWRlcltOb2RlLCBR VHlwZV0NCj4gDQo+ICsgICAgOiAgIHZmclF1ZXN0aW9uQmFzZUluZm9bTm9kZSwgUVR5cGVdDQo+ IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbTm9kZV0NCj4gDQo+ICsgICAgOw0KPiAN Cj4gKw0KPiANCj4gK3ZmclF1ZXN0aW9uQmFzZUluZm9bTm9kZSwgUVR5cGVdDQo+IA0KPiArbG9j YWxzW0Jhc2VJbmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIFFJZD1FRklfUVVFU1RJT05fSURfSU5W QUxJRCwNCj4gQ2hlY2tGbGFnPVRydWUsIFFOYW1lPU5vbmUsIFZhcklkU3RyPScnXQ0KPiANCj4g KyAgICA6ICAgKCduYW1lJyAnPScgUU49U3RyaW5nSWRlbnRpZmllciAnLCcpPw0KPiANCj4gKyAg ICAgICAgKCd2YXJpZCcgJz0nIHZmclN0b3JhZ2VWYXJJZFtsb2NhbGN0eC5CYXNlSW5mbywgbG9j YWxjdHguQ2hlY2tGbGFnXSAnLCcpPw0KPiANCj4gKyAgICAgICAgKCdxdWVzdGlvbmlkJyAnPScg SUQ9TnVtYmVyICcsJyk/DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1l bnRIZWFkZXJbTm9kZV0NCj4gDQo+ICsgICAgOiAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VO JyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3F1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZA0KPiANCj4gK2xvY2Fsc1tRSEZsYWc9MF0NCj4gDQo+ICsgICAg OiAgIFJlYWRPbmx5RmxhZw0KPiANCj4gKyAgICB8ICAgSW50ZXJhY3RpdmVGbGFnDQo+IA0KPiAr ICAgIHwgICBSZXNldFJlcXVpcmVkRmxhZw0KPiANCj4gKyAgICB8ICAgUmVzdFN0eWxlRmxhZw0K PiANCj4gKyAgICB8ICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnDQo+IA0KPiArICAgIHwgICBPPU9w dGlvbk9ubHlGbGFnDQo+IA0KPiArICAgIHwgICBOPU5WQWNjZXNzRmxhZw0KPiANCj4gKyAgICB8 ICAgTD1MYXRlQ2hlY2tGbGFnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsvLzIuMTAuNQ0KPiANCj4g K3ZmclN0b3JhZ2VWYXJJZFtCYXNlSW5mbywgQ2hlY2tGbGFnXQ0KPiANCj4gK2xvY2Fsc1tWYXJJ ZFN0cj0nJ10NCj4gDQo+ICsgICAgOiAgIChTTjE9U3RyaW5nSWRlbnRpZmllciAnWycgST1OdW1i ZXIgJ10nKSAgICAjIHZmclN0b3JhZ2VWYXJJZFJ1bGUxDQo+IA0KPiArICAgIHwgICAoU04yPVN0 cmluZ0lkZW50aWZpZXIgKCcuJyBhcnJheU5hbWUpKiApICMgdmZyU3RvcmFnZVZhcklkUnVsZTIN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckNvbnN0YW50VmFsdWVGaWVsZA0KPiAN Cj4gK2xvY2Fsc1tWYWx1ZUxpc3Q9W10sIExpc3RUeXBlPUZhbHNlXQ0KPiANCj4gKyAgICA6ICAg KCctJyk/IE51bWJlcg0KPiANCj4gKyAgICB8ICAgJ1RSVUUnDQo+IA0KPiArICAgIHwgICAnRkFM U0UnDQo+IA0KPiArICAgIHwgICAnT05FJw0KPiANCj4gKyAgICB8ICAgJ09ORVMnDQo+IA0KPiAr ICAgIHwgICAnWkVSTycNCj4gDQo+ICsgICAgfCAgIE51bWJlciAnOicgTnVtYmVyICc6JyBOdW1i ZXINCj4gDQo+ICsgICAgfCAgIE51bWJlciAnLycgTnVtYmVyICcvJyBOdW1iZXINCj4gDQo+ICsg ICAgfCAgIE51bWJlciAnOycgTnVtYmVyICc7JyBndWlkRGVmaW5pdGlvbiAnOycgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScNCj4gDQo+ICsgICAgfCAgICdTVFJJTkdfVE9LRU4nICcoJyBO dW1iZXIgJyknDQo+IA0KPiArICAgIHwgICAneycgTnVtYmVyICgnLCcgTnVtYmVyKSogJ30nDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJJbWFnZVRhZw0KPiANCj4gK2xvY2Fsc1tO b2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfSU1BR0VfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2ltYWdl JyAnPScgJ0lNQUdFX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArdmZyTG9ja2VkVGFnDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJ X0lGUl9MT0NLRURfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2xvY2tlZCcNCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFN0YXRUYWcNCj4gDQo+ICtsb2NhbHNbTm9kZV0N Cj4gDQo+ICsgICAgOiAgIHZmckltYWdlVGFnIHwgdmZyTG9ja2VkVGFnDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtOb2RlXQ0KPiANCj4gKyAg ICA6ICAgdmZyU3RhdGVtZW50U3RhdFRhZyAoJywnIHZmclN0YXRlbWVudFN0YXRUYWcpKg0KPiAN Cj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyRm9ybURlZmluaXRpb24NCj4gDQo+ICtsb2Nh bHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2Zv cm0nICdmb3JtaWQnICc9JyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAndGl0bGUnICc9JyAn U1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnOycNCj4gDQo+ICsgICAgICAgICh2ZnJGb3Jt KSoNCj4gDQo+ICsgICAgICAgICdlbmRmb3JtJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0K PiANCj4gK3ZmckZvcm0NCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOg0KPiANCj4g KyAgICAoICAgdmZyU3RhdGVtZW50SW1hZ2UNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudExv Y2tlZA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50UnVsZXMNCj4gDQo+ICsgICAgfCAgIHZm clN0YXRlbWVudERlZmF1bHQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFN0YXQNCj4gDQo+ ICsgICAgfCAgIHZmclN0YXRlbWVudFF1ZXN0aW9ucw0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVt ZW50Q29uZGl0aW9uYWwNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudExhYmVsDQo+IA0KPiAr ICAgIHwgICB2ZnJTdGF0ZW1lbnRCYW5uZXINCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudElu dmFsaWQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiANCj4gKyAgICB8 ICAgdmZyU3RhdGVtZW50TW9kYWwNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFJlZnJlc2hF dmVudCAnOycNCj4gDQo+ICsgICAgKQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZy Rm9ybU1hcERlZmluaXRpb24NCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZS X0ZPUk1fTUFQX09QKV0NCj4gDQo+ICsgICAgOiAgICdmb3JtbWFwJyAnZm9ybWlkJyAnPScgUzE9 TnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgKCAgICdtYXB0aXRsZScgJz0nICdTVFJJTkdfVE9L RU4nICcoJyBOdW1iZXIgJyknICc7Jw0KPiANCj4gKyAgICAgICAgICAgICdtYXBndWlkJyAnPScg Z3VpZERlZmluaXRpb24gJzsnDQo+IA0KPiArICAgICAgICApKg0KPiANCj4gKyAgICAgICAgKHZm ckZvcm0pKg0KPiANCj4gKyAgICAgICAgJ2VuZGZvcm0nICc7Jw0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArdmZyU3RhdGVtZW50SW1hZ2UNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ ICsgICAgOiAgIHZmckltYWdlVGFnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr dmZyU3RhdGVtZW50TG9ja2VkDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICB2 ZnJMb2NrZWRUYWcgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1l bnRSdWxlcw0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfUlVMRV9PUCld DQo+IA0KPiArICAgIDogICAncnVsZScgU3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ICsgICAg ICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0NCj4gDQo+ICsgICAgICAg ICdlbmRydWxlJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVu dFN0YXQNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudFN1 YlRpdGxlDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQo+IA0KPiArICAg IHwgICB2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiArdmZyU3RhdGVtZW50U3ViVGl0bGUNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9k ZShFRklfSUZSX1NVQlRJVExFX09QKV0NCj4gDQo+ICsgICAgOiAgICdzdWJ0aXRsZScNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScNCj4gDQo+ICsgICAgICAgICgnLCcgJ2ZsYWdzJyAnPScgdmZyU3VidGl0bGVGbGFncyk/DQo+ IA0KPiArICAgICAgICAoICAgKCcsJyB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtsb2NhbGN0eC5O b2RlXSk/ICc7Jw0KPiANCj4gKyAgICAgICAgfA0KPiANCj4gKyAgICAgICAgICAgICgnLCcgdmZy U3RhdGVtZW50U3RhdFRhZ0xpc3RbbG9jYWxjdHguTm9kZV0pPw0KPiANCj4gKyAgICAgICAgICAg ICgnLCcgKHZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KSogKT8NCj4gDQo+ICsgICAgICAg ICAgICAnZW5kc3VidGl0bGUnICc7Jw0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICA7DQo+ IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQNCj4gDQo+ICtsb2Nh bHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgdmZyU3RhdGVtZW50U3RhdCB8IHZmclN0YXRlbWVudFF1 ZXN0aW9ucw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3VidGl0bGVGbGFncw0K PiANCj4gK2xvY2Fsc1tTdWJGbGFncz0wXQ0KPiANCj4gKyAgICA6ICAgc3VidGl0bGVGbGFnc0Zp ZWxkICgnfCcgc3VidGl0bGVGbGFnc0ZpZWxkKSoNCj4gDQo+ICsgICAgOw0KPiANCj4gK3N1YnRp dGxlRmxhZ3NGaWVsZA0KPiANCj4gK2xvY2Fsc1tGbGFnPTBdDQo+IA0KPiArICAgIDogICBOdW1i ZXIgfCAnSE9SSVpPTlRBTCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRl bWVudFN0YXRpY1RleHQNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1RF WFRfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3RleHQnDQo+IA0KPiArICAgICAgICAnaGVscCcgJz0n ICdTVFJJTkdfVE9LRU4nICcoJyBTMT1OdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgJ3Rl eHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgUzI9TnVtYmVyICcpJw0KPiANCj4gKyAgICAgICAg KCcsJyAndGV4dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBTMz1OdW1iZXIgJyknKT8NCj4gDQo+ ICsgICAgICAgICgnLCcgRj0nZmxhZ3MnICc9JyBzdGF0aWNUZXh0RmxhZ3NGaWVsZCAoJ3wnIHN0 YXRpY1RleHRGbGFnc0ZpZWxkKSogJywnICdrZXknICc9Jw0KPiBTND1OdW1iZXIpPw0KPiANCj4g KyAgICAgICAgKCcsJyB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtsb2NhbGN0eC5Ob2RlXSk/ICc7 Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArc3RhdGljVGV4dEZsYWdzRmllbGQNCj4g DQo+ICtsb2NhbHNbRmxhZz0wXQ0KPiANCj4gKyAgICA6ICAgTj1OdW1iZXIgfCBxdWVzdGlvbmhl YWRlckZsYWdzRmllbGQNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVu dENyb3NzUmVmZXJlbmNlDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICB2ZnJT dGF0ZW1lbnRHb3RvIHwgdmZyU3RhdGVtZW50UmVzZXRCdXR0b24NCj4gDQo+ICsgICAgOw0KPiAN Cj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudEdvdG8NCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVl Tm9kZShFRklfSUZSX1JFRl9PUCksDQo+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f UkVGXQ0KPiANCj4gKyAgICA6ICAgJ2dvdG8nDQo+IA0KPiArICAgICAgICAoICAgKCAgIERldmlj ZVBhdGggJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAg ICAgICAgICAgICBGb3JtU2V0R3VpZCAnPScgZ3VpZERlZmluaXRpb24gJywnDQo+IA0KPiArICAg ICAgICAgICAgICAgIEZvcm1JZCAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICAg ICBRdWVzdGlvbiAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsg ICAgICAgICAgICB8DQo+IA0KPiArICAgICAgICAgICAgKCAgIEZvcm1TZXRHdWlkICc9JyBndWlk RGVmaW5pdGlvbiAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgRm9ybUlkICc9JyBOdW1iZXIg JywnDQo+IA0KPiArICAgICAgICAgICAgICAgIFF1ZXN0aW9uICc9JyBOdW1iZXIgJywnDQo+IA0K PiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIHwNCj4gDQo+ICsgICAgICAgICAg ICAoICAgRm9ybUlkICc9JyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgIFF1ZXN0 aW9uICc9JyAoUU49U3RyaW5nSWRlbnRpZmllciAnLCcgfCBOdW1iZXIgJywnKQ0KPiANCj4gKyAg ICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICB8DQo+IA0KPiArICAgICAgICAgICAgKCAg IE49TnVtYmVyICcsJyApDQo+IA0KPiArICAgICAgICApPw0KPiANCj4gKyAgICAgICAgdmZyUXVl c3Rpb25IZWFkZXJbbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGVdDQo+IA0KPiArICAgICAg ICAoJywnICdmbGFncycgJz0nIHZmckdvdG9GbGFncyk/DQo+IA0KPiArICAgICAgICAoJywnICdr ZXknICc9JyBOdW1iZXIpPw0KPiANCj4gKyAgICAgICAgKEU9JywnIHZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXSk/ICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArdmZyR290b0ZsYWdzDQo+IA0KPiArbG9jYWxzW0dvdG9GbGFncz0wXQ0KPiANCj4g KyAgICA6ICAgZ290b0ZsYWdzRmllbGQoJ3wnIGdvdG9GbGFnc0ZpZWxkKSoNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK2dvdG9GbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0ZsYWc9MF0N Cj4gDQo+ICsgICAgOiAgTj1OdW1iZXIgfCBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFJlc2V0QnV0dG9uDQo+IA0KPiAr bG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9SRVNFVF9CVVRUT05fT1ApXQ0KPiANCj4g KyAgICA6ICAncmVzZXRidXR0b24nDQo+IA0KPiArICAgICAgICdkZWZhdWx0c3RvcmUnICc9JyBO PVN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAgIHZmclN0YXRlbWVudEhlYWRlclts b2NhbGN0eC5Ob2RlXSAnLCcNCj4gDQo+ICsgICAgICAgKHZmclN0YXRlbWVudFN0YXRUYWdMaXN0 W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQo+IA0KPiArICAgICAgICdlbmRyZXNldGJ1dHRvbicgJzsn DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCj4g DQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudEJvb2xlYW5UeXBl DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnREYXRlDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0 ZW1lbnROdW1lcmljVHlwZQ0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50U3RyaW5nVHlwZQ0K PiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50T3JkZXJlZExpc3QNCj4gDQo+ICsgICAgfCAgIHZm clN0YXRlbWVudFRpbWUNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVu dFF1ZXN0aW9uVGFnDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICB2ZnJTdGF0 ZW1lbnRTdGF0VGFnICcsJw0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWYNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudE5vU3VibWl0SWYNCj4gDQo+ICsgICAgfCAg IHZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRS ZWZyZXNoDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZQ0KPiANCj4g KyAgICB8ICAgdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1l bnRSZWZyZXNoRXZlbnQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFdhcm5pbmdJZg0KPiAN Cj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYgLy8N Cj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9P UCldDQo+IA0KPiArICAgIDogICAnaW5jb25zaXN0ZW50aWYnDQo+IA0KPiArICAgICAgICAncHJv bXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+IA0KPiArICAgICAg ICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAnLCcpPw0KPiANCj4g KyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAg ICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0 YXRlbWVudE5vU3VibWl0SWYgLy8NCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklf SUZSX05PX1NVQk1JVF9JRl9PUCldDQo+IA0KPiArICAgIDogICAnbm9zdWJtaXRpZicNCj4gDQo+ ICsgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cj4gDQo+ICsgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkq ICcsJyk/DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5v ZGVdDQo+IA0KPiArICAgICAgICAnZW5kaWYnICgnOycpPw0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCj4gDQo+ICtsb2NhbHNbTm9kZT1J ZnJUcmVlTm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2Rpc2Fi bGVpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gDQo+ICsg ICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiAN Cj4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K3ZmclN0YXRlbWVudFJlZnJlc2gNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklf SUZSX1JFRlJFU0hfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3JlZnJlc2gnICdpbnRlcnZhbCcgJz0n IE51bWJlcg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50VmFyc3Rv cmVEZXZpY2UNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JF X0RFVklDRV9PUCldDQo+IA0KPiArICAgIDogICAndmFyc3RvcmVkZXZpY2UnICc9JyAnU1RSSU5H X1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K3ZmclN0YXRlbWVudFJlZnJlc2hFdmVudA0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2Rl KEVGSV9JRlJfUkVGUkVTSF9JRF9PUCldDQo+IA0KPiArICAgIDogICAncmVmcmVzaGd1aWQnICc9 JyBndWlkRGVmaW5pdGlvbiAnLCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0 YXRlbWVudFdhcm5pbmdJZiAvLw0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9J RlJfV0FSTklOR19JRl9PUCldDQo+IA0KPiArICAgIDogICAnd2FybmluZ2lmJw0KPiANCj4gKyAg ICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiAN Cj4gKyAgICAgICAgKCd0aW1lb3V0JyAnPScgTnVtYmVyICcsJyk/DQo+IA0KPiArICAgICAgICB2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAnZW5k aWYnICgnOycpPw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50UXVl c3Rpb25UYWdMaXN0W05vZGVdDQo+IA0KPiArICAgIDogICAodmZyU3RhdGVtZW50UXVlc3Rpb25U YWcpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25UYWcNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVu dFN1cHByZXNzSWZRdWVzdA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50R3JheU91dElmUXVl c3QNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhbHVlDQo+IA0KPiArICAgIHwgICB2ZnJT dGF0ZW1lbnREZWZhdWx0DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRPcHRpb25zDQo+IA0K PiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWFkDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRX cml0ZQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArZmxhZ3NGaWVsZA0KPiANCj4gKyAg ICA6ICAgTnVtYmVyDQo+IA0KPiArICAgIHwgICBJbnRlcmFjdGl2ZUZsYWcNCj4gDQo+ICsgICAg fCAgIE1hbnVmYWN0dXJpbmdGbGFnDQo+IA0KPiArICAgIHwgICBEZWZhdWx0RmxhZw0KPiANCj4g KyAgICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCj4gDQo+ICsgICAgfCAgIFJlY29ubmVjdFJlcXVp cmVkRmxhZw0KPiANCj4gKyAgICB8ICAgTj1OVkFjY2Vzc0ZsYWcNCj4gDQo+ICsgICAgfCAgIEw9 TGF0ZUNoZWNrRmxhZw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50 U3VwcHJlc3NJZlF1ZXN0DQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9T VVBQUkVTU19JRl9PUCldDQo+IA0KPiArICAgIDogICAnc3VwcHJlc3NpZicgdmZyU3RhdGVtZW50 RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gDQo+ICsgICAgICAgICgnZmxhZ3MnICc9 JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCApKiAnLCcpPw0KPiANCj4gKyAgICAgICAgdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAg ICAnZW5kaWYnICgnOycpPw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVt ZW50R3JheU91dElmUXVlc3QNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZS X1NVUFBSRVNTX0lGX09QKV0NCj4gDQo+ICsgICAgOiAgICdncmF5b3V0aWYnIHZmclN0YXRlbWVu dEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0gJzsnDQo+IA0KPiArICAgICAgICAoJ2ZsYWdzJyAn PScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQgKSogJywnKT8NCj4gDQo+ICsgICAgICAgIHZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAg ICAgJ2VuZGlmJyAoJzsnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K3ZmclN0YXRlbWVudERlZmF1bHQNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklf SUZSX0RFRkFVTFRfT1ApXQ0KPiANCj4gKyAgICA6ICAgRD0nZGVmYXVsdCcNCj4gDQo+ICsgICAg ICAgICggICAoICAgVj12ZnJTdGF0ZW1lbnRWYWx1ZSAnLCcNCj4gDQo+ICsgICAgICAgICAgICB8 ICAgJz0nIHZmckNvbnN0YW50VmFsdWVGaWVsZCAnLCcNCj4gDQo+ICsgICAgICAgICAgICApDQo+ IA0KPiArICAgICAgICAgICAgKCAgICdkZWZhdWx0c3RvcmUnICc9JyBTTj1TdHJpbmdJZGVudGlm aWVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICk/DQo+IA0KPiArICAgICAgICApDQo+IA0KPiAr ICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRWYWx1ZQ0KPiANCj4gK2xvY2Fsc1tO b2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfVkFMVUVfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3ZhbHVl JyAnPScgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50T3B0aW9ucw0KPiANCj4gK2xvY2Fsc1tOb2Rl XQ0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24NCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudE9uZU9mT3B0aW9uDQo+IA0KPiArbG9jYWxzW05v ZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QKV0NCj4gDQo+ICsgICAgOiAg ICdvcHRpb24nDQo+IA0KPiArICAgICAgICAndGV4dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBO dW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgJ3ZhbHVlJyAnPScgdmZyQ29uc3RhbnRWYWx1 ZUZpZWxkICcsJw0KPiANCj4gKyAgICAgICAgRj0nZmxhZ3MnICc9JyB2ZnJPbmVPZk9wdGlvbkZs YWdzICgnLCcgJ2tleScgJz0nIEtOPU51bWJlcikgPyAoVD0nLCcNCj4gdmZySW1hZ2VUYWcpKiAn OycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Zmck9uZU9mT3B0aW9uRmxhZ3MNCj4g DQo+ICtsb2NhbHNbSEZsYWdzPTAsIExGbGFncz0wXQ0KPiANCj4gKyAgICA6ICAgb25lb2ZvcHRp b25GbGFnc0ZpZWxkICgnfCcgb25lb2ZvcHRpb25GbGFnc0ZpZWxkKSo7DQo+IA0KPiArDQo+IA0K PiArb25lb2ZvcHRpb25GbGFnc0ZpZWxkDQo+IA0KPiArICAgIGxvY2Fsc1tIRmxhZz0wLCBMRmxh Zz0wXQ0KPiANCj4gKyAgICA6ICAgTnVtYmVyDQo+IA0KPiArICAgIHwgICBPcHRpb25EZWZhdWx0 DQo+IA0KPiArICAgIHwgICBPcHRpb25EZWZhdWx0TWZnDQo+IA0KPiArICAgIHwgICBJbnRlcmFj dGl2ZUZsYWcNCj4gDQo+ICsgICAgfCAgIFJlc2V0UmVxdWlyZWRGbGFnDQo+IA0KPiArICAgIHwg ICBSZXN0U3R5bGVGbGFnDQo+IA0KPiArICAgIHwgICBSZWNvbm5lY3RSZXF1aXJlZEZsYWcNCj4g DQo+ICsgICAgfCAgIE1hbnVmYWN0dXJpbmdGbGFnDQo+IA0KPiArICAgIHwgICBEZWZhdWx0Rmxh Zw0KPiANCj4gKyAgICB8ICAgQT1OVkFjY2Vzc0ZsYWcNCj4gDQo+ICsgICAgfCAgIEw9TGF0ZUNo ZWNrRmxhZw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50UmVhZA0K PiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfUkVBRF9PUCldDQo+IA0KPiAr ICAgIDogICAncmVhZCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXSAnOycN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFdyaXRlDQo+IA0KPiAr bG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9XUklURV9PUCldDQo+IA0KPiArICAgIDog ICAnd3JpdGUnIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0gJzsnDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Rb Tm9kZV0NCj4gDQo+ICsgICAgOiAgICh2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbikqDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbg0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiANCj4gKyAgICA6ICAgdmZyU3Rh dGVtZW50UXVlc3Rpb25UYWcgfCB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZw0KPiANCj4g KyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50Qm9vbGVhblR5cGUNCj4gDQo+ICts b2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudENoZWNrQm94IHwgdmZyU3Rh dGVtZW50QWN0aW9uDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRD aGVja0JveA0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tCT1hf T1ApLEd1aWROb2RlPUlmclRyZWVOb2RlKEVGDQo+IElfSUZSX0dVSURfT1ApLCBRVHlwZT1FRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gDQo+ICsgICAgOiAgIEw9J2NoZWNrYm94 Jw0KPiANCj4gKyAgICAgICAgdmZyUXVlc3Rpb25CYXNlSW5mb1tsb2NhbGN0eC5Ob2RlLCBsb2Nh bGN0eC5RVHlwZV0NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEhlYWRlcltsb2NhbGN0eC5O b2RlXSAnLCcNCj4gDQo+ICsgICAgICAgIChGPSdmbGFncycgJz0nIHZmckNoZWNrQm94RmxhZ3Mg JywnKT8NCj4gDQo+ICsgICAgICAgICgna2V5JyAnPScgTnVtYmVyICcsJyk/DQo+IA0KPiArICAg ICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gDQo+ ICsgICAgICAgICdlbmRjaGVja2JveCcgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ ICt2ZnJDaGVja0JveEZsYWdzDQo+IA0KPiArbG9jYWxzW0xGbGFncz0wLCBIRmxhZ3M9MF0NCj4g DQo+ICsgICAgOiAgIGNoZWNrYm94RmxhZ3NGaWVsZCAoJ3wnIGNoZWNrYm94RmxhZ3NGaWVsZCkq DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtjaGVja2JveEZsYWdzRmllbGQNCj4gDQo+ ICtsb2NhbHNbTEZsYWc9MCwgSEZsYWc9MF0NCj4gDQo+ICsgICAgOiAgIE51bWJlcg0KPiANCj4g KyAgICB8ICAgRD0nREVGQVVMVCcNCj4gDQo+ICsgICAgfCAgIE09J01BTlVGQUNUVVJJTkcnDQo+ IA0KPiArICAgIHwgICAnQ0hFQ0tCT1hfREVGQVVMVCcNCj4gDQo+ICsgICAgfCAgICdDSEVDS0JP WF9ERUZBVUxUX01GRycNCj4gDQo+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0K PiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50QWN0aW9uDQo+IA0KPiAr bG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9BQ1RJT05fT1ApLA0KPiBRVHlwZT1FRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gDQo+ICsgICAgOiAgICdhY3Rpb24nDQo+ IA0KPiArICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5R VHlwZV0gJywnDQo+IA0KPiArICAgICAgICAoJ2ZsYWdzJyAnPScgdmZyQWN0aW9uRmxhZ3MgJywn KT8NCj4gDQo+ICsgICAgICAgICdjb25maWcnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVy ICcpJyAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdFtsb2Nh bGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGFjdGlvbicgJzsnDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJBY3Rpb25GbGFncw0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MF0N Cj4gDQo+ICsgICAgOiAgIGFjdGlvbkZsYWdzRmllbGQgKCd8JyBhY3Rpb25GbGFnc0ZpZWxkKSoN Cj4gDQo+ICsgICAgOw0KPiANCj4gK2FjdGlvbkZsYWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbSEZs YWc9MF0NCj4gDQo+ICsgICAgOiAgIE49TnVtYmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxk DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0K PiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50TnVtZXJpYyB8 IHZmclN0YXRlbWVudE9uZU9mDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0 ZW1lbnROdW1lcmljDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9OVU1F UklDX09QKSwNCj4gR3VpZE5vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKSwNCj4gUVR5 cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+IA0KPiArICAgIDogICAnbnVt ZXJpYycNCj4gDQo+ICsgICAgICAgIHZmclF1ZXN0aW9uQmFzZUluZm9bbG9jYWxjdHguTm9kZSwg bG9jYWxjdHguUVR5cGVdDQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbbG9jYWxj dHguTm9kZV0gJywnDQo+IA0KPiArICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJOdW1lcmljRmxh Z3MgJywnKT8NCj4gDQo+ICsgICAgICAgICgna2V5JyAnPScgTnVtYmVyICcsJyk/DQo+IA0KPiAr ICAgICAgICB2ZnJTZXRNaW5NYXhTdGVwW2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICB2 ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gDQo+ICsgICAg ICAgICdlbmRudW1lcmljJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclNl dE1pbk1heFN0ZXBbTm9kZV0gLy8gQ0lmck1pbk1heFN0ZXBEYXRhDQo+IA0KPiArICAgIDogICAn bWluaW11bScgJz0nIChOMT0nLScpPyBJPU51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICdtYXhp bXVtJyAnPScgKE4yPSctJyk/IEE9TnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgKCdzdGVwJyAn PScgUz1OdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Zmck51bWVy aWNGbGFncw0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTAsIElzRGlzcGxheVNwZWNp ZmllZD1GYWxzZSwgVXBkYXRlVmFyVHlwZT1GYWxzZV0NCj4gDQo+ICsgICAgOiAgIG51bWVyaWNG bGFnc0ZpZWxkICgnfCcgbnVtZXJpY0ZsYWdzRmllbGQpKg0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArbnVtZXJpY0ZsYWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbSEZsYWc9MCxJc1NldFR5 cGU9RmFsc2UsSXNEaXNwbGF5U3BlY2lmaWVkPUZhbHNlXQ0KPiANCj4gKyAgICA6ICAgTj1OdW1i ZXINCj4gDQo+ICsgICAgfCAgICdOVU1FUklDX1NJWkVfMScNCj4gDQo+ICsgICAgfCAgICdOVU1F UklDX1NJWkVfMicNCj4gDQo+ICsgICAgfCAgICdOVU1FUklDX1NJWkVfNCcNCj4gDQo+ICsgICAg fCAgICdOVU1FUklDX1NJWkVfOCcNCj4gDQo+ICsgICAgfCAgICdESVNQTEFZX0lOVF9ERUMnDQo+ IA0KPiArICAgIHwgICAnRElTUExBWV9VSU5UX0RFQycNCj4gDQo+ICsgICAgfCAgICdESVNQTEFZ X1VJTlRfSEVYJw0KPiANCj4gKyAgICB8ICAgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRPbmVPZg0KPiANCj4gK2xvY2Fs c1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfT05FX09GX09QKSwNCj4gR3VpZE5vZGU9SWZyVHJl ZU5vZGUoRUZJX0lGUl9HVUlEX09QKSwNCj4gUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9OT1JNQUxdDQo+IA0KPiArICAgIDogICAnb25lb2YnDQo+IA0KPiArICAgICAgICB2ZnJRdWVz dGlvbkJhc2VJbmZvW2xvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlXQ0KPiANCj4gKyAgICAg ICAgdmZyU3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk5vZGVdICcsJw0KPiANCj4gKyAgICAgICAg KEY9J2ZsYWdzJyAnPScgdmZyT25lb2ZGbGFnc0ZpZWxkICcsJyk/IC8vDQo+IA0KPiArICAgICAg ICAodmZyU2V0TWluTWF4U3RlcFtsb2NhbGN0eC5Ob2RlXSk/DQo+IA0KPiArICAgICAgICB2ZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gDQo+ICsgICAgICAg ICdlbmRvbmVvZicgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJPbmVvZkZs YWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbSEZsYWdzPTAsIExGbGFncz0wLCBVcGRhdGVWYXJUeXBl PUZhbHNlXQ0KPiANCj4gKyAgICA6ICAgbnVtZXJpY0ZsYWdzRmllbGQgKCd8JyBudW1lcmljRmxh Z3NGaWVsZCkqDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdHJp bmdUeXBlDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICB2ZnJTdGF0ZW1lbnRT dHJpbmcgfCB2ZnJTdGF0ZW1lbnRQYXNzd29yZA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdmZyU3RhdGVtZW50U3RyaW5nDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJ X0lGUl9TVFJJTkdfT1ApLA0KPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1B TF0NCj4gDQo+ICsgICAgOiAgICdzdHJpbmcnDQo+IA0KPiArICAgICAgICB2ZnJRdWVzdGlvbkhl YWRlcltsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZV0gJywnDQo+IA0KPiArICAgICAgICAo Rj0nZmxhZ3MnICc9JyB2ZnJTdHJpbmdGbGFnc0ZpZWxkICcsJyk/DQo+IA0KPiArICAgICAgICAo J2tleScgJz0nIE51bWJlciAnLCcpPw0KPiANCj4gKyAgICAgICAgTWluPSdtaW5zaXplJyAnPScg TnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgTWF4PSdtYXhzaXplJyAnPScgTnVtYmVyICcsJw0K PiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5v ZGVdDQo+IA0KPiArICAgICAgICAnZW5kc3RyaW5nJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK3ZmclN0cmluZ0ZsYWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbSEZsYWdzPTAsIExG bGFncz0wXQ0KPiANCj4gKyAgICA6ICAgc3RyaW5nRmxhZ3NGaWVsZCAoJ3wnIHN0cmluZ0ZsYWdz RmllbGQpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArc3RyaW5nRmxhZ3NGaWVsZA0K PiANCj4gK2xvY2Fsc1tIRmxhZz0wLCBMRmxhZz0wXQ0KPiANCj4gKyAgICA6ICAgTj1OdW1iZXIN Cj4gDQo+ICsgICAgfCAgICdNVUxUSV9MSU5FJw0KPiANCj4gKyAgICB8ICAgcXVlc3Rpb25oZWFk ZXJGbGFnc0ZpZWxkDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRQ YXNzd29yZA0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfUEFTU1dPUkRf T1ApLA0KPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gDQo+ICsg ICAgOiAgICdwYXNzd29yZCcNCj4gDQo+ICsgICAgICAgIHZmclF1ZXN0aW9uSGVhZGVyW2xvY2Fs Y3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlXScsJw0KPiANCj4gKyAgICAgICAgKEY9J2ZsYWdzJyAn PScgdmZyUGFzc3dvcmRGbGFnc0ZpZWxkICcsJyk/DQo+IA0KPiArICAgICAgICAoJ2tleScgJz0n IE51bWJlciAnLCcpPw0KPiANCj4gKyAgICAgICAgTWluPSdtaW5zaXplJyAnPScgTnVtYmVyICcs Jw0KPiANCj4gKyAgICAgICAgTWF4PSdtYXhzaXplJyAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAg ICAgICAgKCdlbmNvZGluZycgJz0nIE51bWJlciAnLCcpPw0KPiANCj4gKyAgICAgICAgdmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAn ZW5kcGFzc3dvcmQnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyUGFzc3dv cmRGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0hGbGFncz0wXQ0KPiANCj4gKyAgICA6ICAgcGFz c3dvcmRGbGFnc0ZpZWxkKCd8JyBwYXNzd29yZEZsYWdzRmllbGQpKg0KPiANCj4gKyAgICA7DQo+ IA0KPiArDQo+IA0KPiArcGFzc3dvcmRGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0hGbGFnPTBd DQo+IA0KPiArICAgIDogICBOdW1iZXINCj4gDQo+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50T3JkZXJl ZExpc3QNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX09SREVSRURfTElT VF9PUCksDQo+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KPiANCj4g KyAgICA6ICAgJ29yZGVyZWRsaXN0Jw0KPiANCj4gKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJb bG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGVdICcsJw0KPiANCj4gKyAgICAgICAgKE09J21h eGNvbnRhaW5lcnMnICc9JyBOdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgICAgIChGPSdmbGFncycg Jz0nIHZmck9yZGVyZWRMaXN0RmxhZ3MgJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGxp c3QnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyT3JkZXJlZExpc3RGbGFn cw0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBdDQo+IA0KPiArICAgIDogICBvcmRl cmVkbGlzdEZsYWdzRmllbGQgKCd8JyBvcmRlcmVkbGlzdEZsYWdzRmllbGQpKg0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArb3JkZXJlZGxpc3RGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxz W0hGbGFnPTAsIExGbGFnPTBdDQo+IA0KPiArICAgIDogICBOdW1iZXINCj4gDQo+ICsgICAgfCAg ICdVTklRVUUnDQo+IA0KPiArICAgIHwgICAnTk9FTVBUWScNCj4gDQo+ICsgICAgfCAgIHF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3Rh dGVtZW50RGF0ZQ0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfREFURV9P UCksDQo+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURSwgVmFsPUVGSV9ISUlf REFURSgpXQ0KPiANCj4gKyAgICA6ICAgJ2RhdGUnDQo+IA0KPiArICAgICAgICAoICAgKCAgIHZm clF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlXSAnLCcNCj4gDQo+ ICsgICAgICAgICAgICAgICAgKEYxPSdmbGFncycgJz0nIHZmckRhdGVGbGFncyAnLCcpPw0KPiAN Cj4gKyAgICAgICAgICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxj dHguTm9kZV0NCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgfA0KPiAN Cj4gKyAgICAgICAgICAgICggICAneWVhcicgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAn LicgU3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgJ3Byb21wdCcg Jz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgICAg ICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4g KyAgICAgICAgICAgICAgICBtaW5NYXhEYXRlU3RlcERlZmF1bHRbbG9jYWxjdHguTm9kZSwgbG9j YWxjdHguVmFsLCAwXQ0KPiANCj4gKyAgICAgICAgICAgICAgICAnbW9udGgnICd2YXJpZCcgJz0n IFN0cmluZ0lkZW50aWZpZXIgJy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAg ICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVt YmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0 W2xvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMV0NCj4gDQo+ICsgICAgICAgICAgICAgICAg J2RheScgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3RyaW5nSWRlbnRpZmllciAn LCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICco JyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJ TkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICBtaW5N YXhEYXRlU3RlcERlZmF1bHRbbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguVmFsLCAyXQ0KPiANCj4g KyAgICAgICAgICAgICAgICAoRjI9J2ZsYWdzJyAnPScgdmZyRGF0ZUZsYWdzICcsJyk/DQo+IA0K PiArICAgICAgICAgICAgICAgICh2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZikqDQo+IA0KPiAr ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgJ2VuZGRhdGUn ICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArbWluTWF4RGF0ZVN0ZXBEZWZhdWx0 W05vZGUsIERhdGUsIEtleVZhbHVlXQ0KPiANCj4gKyAgICA6ICAgJ21pbmltdW0nICc9JyBOdW1i ZXIgJywnDQo+IA0KPiArICAgICAgICAnbWF4aW11bScgJz0nIE51bWJlciAnLCcNCj4gDQo+ICsg ICAgICAgICgnc3RlcCcgJz0nIE51bWJlciAnLCcpPw0KPiANCj4gKyAgICAgICAgKCdkZWZhdWx0 JyAnPScgTj1OdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckRh dGVGbGFncw0KPiANCj4gK2xvY2Fsc1tMRmxhZ3M9MF0NCj4gDQo+ICsgICAgOiAgIGRhdGVGbGFn c0ZpZWxkICgnfCcgZGF0ZUZsYWdzRmllbGQpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArZGF0ZUZs YWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbTEZsYWc9MF0NCj4gDQo+ICsgICAgOiAgIE51bWJlcg0K PiANCj4gKyAgICB8ICAgJ1lFQVJfU1VQUFJFU1MnDQo+IA0KPiArICAgIHwgICAnTU9OVEhfU1VQ UFJFU1MnDQo+IA0KPiArICAgIHwgICAnREFZX1NVUFBSRVNTJw0KPiANCj4gKyAgICB8ICAgJ1NU T1JBR0VfTk9STUFMJw0KPiANCj4gKyAgICB8ICAgJ1NUT1JBR0VfVElNRScNCj4gDQo+ICsgICAg fCAgICdTVE9SQUdFX1dBS0VVUCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0 YXRlbWVudFRpbWUNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1RJTUVf T1ApLA0KPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUsICBWYWw9RUZJX0hJ SV9USU1FKCldDQo+IA0KPiArICAgIDogICAndGltZScNCj4gDQo+ICsgICAgICAgICggICAoICAg dmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGVdICcsJw0KPiAN Cj4gKyAgICAgICAgICAgICAgICAoRjE9J2ZsYWdzJyAnPScgdmZyVGltZUZsYWdzICcsJyk/DQo+ IA0KPiArICAgICAgICAgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2Nh bGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICB8DQo+ IA0KPiArICAgICAgICAgICAgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAnaG91cicgJ3Zhcmlk JyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ICsg ICAgICAgICAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJykn ICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICco JyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICBtaW5NYXhUaW1lU3RlcERl ZmF1bHRbbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguVmFsLCAwXQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAnbWludXRlJyAndmFyaWQnICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVu dGlmaWVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgICdoZWxwJyAn PScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+IA0KPiArICAgICAgICAgICAg ICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5WYWwsIDFd DQo+IA0KPiArICAgICAgICAgICAgICAgICdzZWNvbmQnICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50 aWZpZXIgJy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgICdw cm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAg ICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbWluTWF4VGltZVN0ZXBEZWZhdWx0W2xvY2FsY3R4Lk5v ZGUsIGxvY2FsY3R4LlZhbCwgMl0NCj4gDQo+ICsgICAgICAgICAgICAgICAgKEYyPSdmbGFncycg Jz0nIHZmclRpbWVGbGFncyAnLCcpPw0KPiANCj4gKyAgICAgICAgICAgICAgICAodmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWYpKg0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAg ICkNCj4gDQo+ICsgICAgICAgICdlbmR0aW1lJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0K PiANCj4gK21pbk1heFRpbWVTdGVwRGVmYXVsdFtOb2RlLCBUaW1lLCBLZXlWYWx1ZV0NCj4gDQo+ ICsgICAgOiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgJ21heGlt dW0nICc9JyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAoJ3N0ZXAnICc9JyBOdW1iZXIgJywn KT8NCj4gDQo+ICsgICAgICAgICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQo+IA0KPiAr ICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJUaW1lRmxhZ3MNCj4gDQo+ICtsb2NhbHNbTEZsYWdz PTBdDQo+IA0KPiArICAgIDogICB0aW1lRmxhZ3NGaWVsZCAoJ3wnIHRpbWVGbGFnc0ZpZWxkKSoN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3RpbWVGbGFnc0ZpZWxkDQo+IA0KPiArbG9j YWxzW0xGbGFnPTBdDQo+IA0KPiArICAgIDogICBOdW1iZXINCj4gDQo+ICsgICAgfCAgICdIT1VS X1NVUFBSRVNTJw0KPiANCj4gKyAgICB8ICAgJ01JTlVURV9TVVBQUkVTUycNCj4gDQo+ICsgICAg fCAgICdTRUNPTkRfU1VQUFJFU1MnDQo+IA0KPiArICAgIHwgICAnU1RPUkFHRV9OT1JNQUwnDQo+ IA0KPiArICAgIHwgICAnU1RPUkFHRV9USU1FJw0KPiANCj4gKyAgICB8ICAgJ1NUT1JBR0VfV0FL RVVQJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50Q29uZGl0aW9u YWwNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudERpc2Fi bGVJZlN0YXQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0IC8vZW5o YW5jZSB0byBiZSBjb21wYXRpYmxlIGZvciBmcmFtZXdvcmsNCj4gZW5kaWYNCj4gDQo+ICsgICAg fCAgIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVu dEluY29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUgY29tcGF0aWJsZSBmb3IgZnJhbWV3b3JrDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICsvLyBuZXcgc2VlbXMgdG8gYmUgdGhlIHNhbWUg YXMgdGhlIG9sZCwgd2h5IG5ldz8NCj4gDQo+ICt2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldw0K PiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50RGlzYWJsZUlm U3RhdA0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcNCj4gDQo+ ICsgICAgICAgIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCj4gDQo+ICsgICAgICAgIHZm clN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUgY29tcGF0aWJsZSBmb3IgZnJh bWV3b3JrDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmU3RhdA0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXROZXcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRl bWVudEdyYXlPdXRJZlN0YXQNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZm clN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K3ZmclN0YXRlbWVudFN0YXRMaXN0DQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDog ICB2ZnJTdGF0ZW1lbnRTdGF0DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMN Cj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudENvbmRpdGlvbmFsDQo+IA0KPiArICAgIHwgICB2 ZnJTdGF0ZW1lbnRMYWJlbA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+ IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlkDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZA0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVt ZW50U3RhdA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25zDQo+IA0KPiArICAg IHwgICB2ZnJTdGF0ZW1lbnRMYWJlbA0KPiANCj4gKyAgLy8gSnVzdCBmb3IgZnJhbWV3b3JrIHZm ciBjb21wYXRpYmlsaXR5DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlkDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0DQo+IA0K PiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9ESVNBQkxFX0lGX09QKV0NCj4gDQo+ ICsgICAgOiAgICdkaXNhYmxlaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9k ZV0gJzsnDQo+IA0KPiArICAgICAgICAodmZyU3RhdGVtZW50U3RhdExpc3QpKg0KPiANCj4gKyAg ICAgICAgJ2VuZGlmJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Ky8vIENvbXBhdGlibGUgZm9yIGZyYW1ld29yayB2ZnIgZmlsZQ0KPiANCj4gK3ZmclN0YXRlbWVu dGdyYXlvdXRJZlN1cHByZXNzSWYNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAg ICdzdXBwcmVzc2lmJw0KPiANCj4gKyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8 JyBmbGFnc0ZpZWxkKSogJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Np b25bbG9jYWxjdHguTm9kZV0gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJT dGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiAr ICAgIDogICAnZ3JheW91dGlmJw0KPiANCj4gKyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmll bGQgKCd8JyBmbGFnc0ZpZWxkKSogJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4 cHJlc3Npb25bbG9jYWxjdHguTm9kZV0gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ ICt2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldw0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRy ZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3N1cHByZXNz aWYnDQo+IA0KPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmll bGQpKiAnLCcpPw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0 eC5Ob2RlXSAnOycNCj4gDQo+ICsgICAgICAgICh2ZnJTdGF0ZW1lbnRTdGF0TGlzdCkqDQo+IA0K PiArICAgICAgICAnZW5kaWYnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZy U3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2Rl KEVGSV9JRlJfR1JBWV9PVVRfSUZfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2dyYXlvdXRpZicNCj4g DQo+ICsgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcs Jyk/DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVd ICc7Jw0KPiANCj4gKyAgICAgICAgKHZmclN0YXRlbWVudFN0YXRMaXN0KSoNCj4gDQo+ICsgICAg ICAgICdlbmRpZicgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1l bnRJbmNvbnNpc3RlbnRJZlN0YXQNCj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklf SUZSX0lOQ09OU0lTVEVOVF9JRl9PUCldDQo+IA0KPiArICAgIDogICAnaW5jb25zaXN0ZW50aWYn DQo+IA0KPiArICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScgJywnDQo+IA0KPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdz RmllbGQpKiAnLCcpPw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2Nh bGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGlmJyAnOycNCj4gDQo+ICsgICAgOw0KPiAN Cj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudEludmFsaWQgLy8gZm9yIGNvbXBhdGliaWxpdHkNCj4g DQo+ICsgICAgOiAgIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4NCj4gDQo+ICsgICAgfCAgIHZm clN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudElu dmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuDQo+IA0KPiArICAgIDogICAnaGlkZGVuJw0KPiANCj4g KyAgICAgICAgJ3ZhbHVlJyAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgJ2tleScgJz0n IE51bWJlciAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudElu dmFsaWRJbnZlbnRvcnkNCj4gDQo+ICsgICAgOiAgICdpbnZlbnRvcnknDQo+IA0KPiArICAgICAg ICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAg ICAgICAgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ ICsgICAgICAgICgndGV4dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknKT8NCj4g DQo+ICsgICAgICAgICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVt ZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMNCj4gDQo+ICsgICAgOiAgICggICAnc2F2ZScN Cj4gDQo+ICsgICAgICAgIHwgICAncmVzdG9yZScNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsg ICAgICAgICdkZWZhdWx0cycgJywnDQo+IA0KPiArICAgICAgICAnZm9ybWlkJyAnPScgTnVtYmVy ICcsJw0KPiANCj4gKyAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1i ZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcg TnVtYmVyICcpJw0KPiANCj4gKyAgICAgICAgKCcsJyAnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgn fCcgZmxhZ3NGaWVsZCkqKT8NCj4gDQo+ICsgICAgICAgICgnLCcgJ2tleScgJz0nIE51bWJlcik/ DQo+IA0KPiArICAgICAgICAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gK3ZmclN0YXRlbWVudExh YmVsDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKV0NCj4g DQo+ICsgICAgOiAgICdsYWJlbCcgTnVtYmVyICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiArdmZyU3RhdGVtZW50QmFubmVyDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUo RUZJX0lGUl9HVUlEX09QKV0NCj4gDQo+ICsgICAgOiAgICdiYW5uZXInICgnLCcpPw0KPiANCj4g KyAgICAgICAgJ3RpdGxlJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ IA0KPiArICAgICAgICAoICAgKCAgICdsaW5lJyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAg ICAgICAgICdhbGlnbicgKCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JykgJzsnDQo+IA0KPiAr ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIHwNCj4gDQo+ICsgICAgICAgICAgICAo ICAgJ3RpbWVvdXQnICc9JyBOdW1iZXIgJzsnDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4g KyAgICAgICAgKQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50RXh0 ZW5zaW9uDQo+IA0KPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKSwg QnVmZmVyPU5vbmUsIFNpemU9MCwNCj4gVHlwZU5hbWU9JycsIFR5cGVTaXplPTAsIElzU3RydWN0 PUZhbHNlLCBBcnJheU51bT0wXQ0KPiANCj4gKyAgICA6ICAgJ2d1aWRvcCcNCj4gDQo+ICsgICAg ICAgICdndWlkJyAnPScgZ3VpZERlZmluaXRpb24NCj4gDQo+ICsgICAgICAgICggICAnLCcgRD0n ZGF0YXR5cGUnICc9Jw0KPiANCj4gKyAgICAgICAgICAgICggICAnVUlOVDY0JyAoJ1snIE51bWJl ciAnXScpPw0KPiANCj4gKyAgICAgICAgICAgIHwgICAnVUlOVDMyJyAoJ1snIE51bWJlciAnXScp Pw0KPiANCj4gKyAgICAgICAgICAgIHwgICAnVUlOVDE2JyAoJ1snIE51bWJlciAnXScpPw0KPiAN Cj4gKyAgICAgICAgICAgIHwgICAnVUlOVDgnICgnWycgTnVtYmVyICddJyk/DQo+IA0KPiArICAg ICAgICAgICAgfCAgICdCT09MRUFOJyAoJ1snIE51bWJlciAnXScpPw0KPiANCj4gKyAgICAgICAg ICAgIHwgICAnRUZJX1NUUklOR19JRCcgKCdbJyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAg ICAgICB8ICAgJ0VGSV9ISUlfREFURScgKCdbJyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAg ICAgICB8ICAgJ0VGSV9ISUlfVElNRScgKCdbJyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAg ICAgICB8ICAgJ0VGSV9ISUlfUkVGJyAoJ1snIE51bWJlciAnXScpPw0KPiANCj4gKyAgICAgICAg ICAgIHwgICBTdHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/DQo+IA0KPiArICAgICAg ICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICh2ZnJFeHRlbnNpb25EYXRhKSoNCj4gDQo+ICsg ICAgICAgICk/DQo+IA0KPiArICAgICAgICAoDQo+IA0KPiArICAgICAgICAgICAgJywnICh2ZnJT dGF0ZW1lbnRFeHRlbnNpb24pKg0KPiANCj4gKyAgICAgICAgICAgICdlbmRndWlkb3AnDQo+IA0K PiArICAgICAgICApPw0KPiANCj4gKyAgICAgICAgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJFeHRlbnNpb25EYXRhDQo+IA0KPiArbG9jYWxzW1RGTmFtZT0n JywgRk5hbWU9JycsIFRGVmFsdWU9Tm9uZV0NCj4gDQo+ICsgICAgOiAgICcsJyAnZGF0YScgKCdb JyBJPU51bWJlciAnXScpPw0KPiANCj4gKyAgICAgICAgKCAnLicgYXJyYXlOYW1lKSogICc9JyBO PU51bWJlcg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVt ZW50TW9kYWwNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiB2ZnJNb2RhbFRhZyAn OycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Zmck1vZGFsVGFnDQo+IA0KPiArbG9j YWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9NT0RBTF9UQUdfT1ApXQ0KPiANCj4gKyAgICA6 ICAgJ21vZGFsJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50RXhw cmVzc2lvbltQYXJlbnROb2RlXQ0KPiANCj4gK2xvY2Fsc1tFeHBJbmZvPUV4cHJlc3Npb25JbmZv KCksIE5vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgYW5kVGVybVtsb2NhbGN0eC5FeHBJbmZvXSAo TD0nT1InIGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10pKg0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YltQYXJlbnROb2Rlc10NCj4gDQo+ICts b2NhbHNbRXhwSW5mbz1FeHByZXNzaW9uSW5mbygpLCBOb2Rlcz1bXV0NCj4gDQo+ICsgICAgOiAg IGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10gKCdPUicgYW5kVGVybVtsb2NhbGN0eC5FeHBJbmZv XSkqDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICthbmRUZXJtW0V4cEluZm9dDQo+IA0K PiArbG9jYWxzW05vZGVzPVtdLCBMaW5lXQ0KPiANCj4gKyAgICA6ICAgYml0d2lzZW9yVGVybVtF eHBJbmZvXSAoTD0nQU5EJyBiaXR3aXNlb3JUZXJtW0V4cEluZm9dKSoNCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK2JpdHdpc2VvclRlcm1bRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTm9k ZXM9W10sIExpbmVdDQo+IA0KPiArICAgIDogICBiaXR3aXNlYW5kVGVybVtFeHBJbmZvXSAoTD0n fCcgYml0d2lzZWFuZFRlcm1bRXhwSW5mb10pKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArYml0d2lzZWFuZFRlcm1bRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTm9kZXM9 W10sIExpbmVdDQo+IA0KPiArICAgIDogICBlcXVhbFRlcm1bRXhwSW5mb10gKEw9JyYnIGVxdWFs VGVybVtFeHBJbmZvXSkqDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtl cXVhbFRlcm1bRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTm9kZXM9W10sIExpbmVdDQo+IA0KPiAr ICAgIDogICBjb21wYXJlVGVybVtFeHBJbmZvXQ0KPiANCj4gKyAgICAgICAgKGVxdWFsVGVybVN1 cHBsZW1lbnRhcnlbRXhwSW5mb10pKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArZXF1YWxUZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2Rl cz1bXV0NCj4gDQo+ICsgICAgOiAgICgnPT0nIGNvbXBhcmVUZXJtW0V4cEluZm9dKSAgIyBlcXVh bFRlcm1FcXVhbFJ1bGUNCj4gDQo+ICsgICAgICAgIHwNCj4gDQo+ICsgICAgICAgICgnIT0nIGNv bXBhcmVUZXJtW0V4cEluZm9dKSAjIGVxdWFsVGVybU5vdEVxdWFsUnVsZQ0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArY29tcGFyZVRlcm1bRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTm9k ZXM9W11dDQo+IA0KPiArICAgIDogICBzaGlmdFRlcm1bRXhwSW5mb10NCj4gDQo+ICsgICAgICAg IChjb21wYXJlVGVybVN1cHBsZW1lbnRhcnlbRXhwSW5mb10pKg0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5W0V4cEluZm9dDQo+IA0KPiArbG9j YWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgKCc8JyBzaGlmdFRlcm1bRXhwSW5mb10pICAg IyBjb21wYXJlVGVybUxlc3NSdWxlDQo+IA0KPiArICAgICAgICB8DQo+IA0KPiArICAgICAgICAo Jzw9JyBzaGlmdFRlcm1bRXhwSW5mb10pICAjICBjb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUNCj4g DQo+ICsgICAgICAgIHwNCj4gDQo+ICsgICAgICAgICgnPicgc2hpZnRUZXJtW0V4cEluZm9dKSAg ICMgIGNvbXBhcmVUZXJtR3JlYXRlclJ1bGUNCj4gDQo+ICsgICAgICAgIHwNCj4gDQo+ICsgICAg ICAgICgnPj0nIHNoaWZ0VGVybVtFeHBJbmZvXSkgICMgIGNvbXBhcmVUZXJtR3JlYXRlckVxdWFs UnVsZQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArc2hpZnRUZXJtW0V4cEluZm9dDQo+ IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgYWRkTWludXNUZXJtW0V4cElu Zm9dDQo+IA0KPiArICAgICAgICAoc2hpZnRUZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXSkqDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtzaGlmdFRlcm1TdXBwbGVtZW50YXJ5W0V4cElu Zm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgKCc8PCcgYWRkTWlu dXNUZXJtW0V4cEluZm9dKSAgIyBzaGlmdFRlcm1MZWZ0DQo+IA0KPiArICAgICAgICB8DQo+IA0K PiArICAgICAgICAoJz4+JyBhZGRNaW51c1Rlcm1bRXhwSW5mb10pICMgc2hpZnRUZXJtUmlnaHQN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2FkZE1pbnVzVGVybVtFeHBJbmZvXQ0KPiAN Cj4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ICsgICAgOiAgIG11bHRkaXZtb2RUZXJtW0V4cElu Zm9dDQo+IA0KPiArICAgICAgICAoYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXSkq DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICthZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5 W0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgKCcrJyBt dWx0ZGl2bW9kVGVybVtFeHBJbmZvXSkgIyBhZGRNaW51c1Rlcm1wQWRkDQo+IA0KPiArICAgICAg ICB8DQo+IA0KPiArICAgICAgICAoJy0nIG11bHRkaXZtb2RUZXJtW0V4cEluZm9dKSAjIGFkZE1p bnVzVGVybVN1YnRyYWN0DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICttdWx0ZGl2bW9k VGVybVtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ICsgICAgOiAgIGNh c3RUZXJtW0V4cEluZm9dDQo+IA0KPiArICAgICAgICAobXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50 YXJ5W0V4cEluZm9dKSoNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK211bHRkaXZtb2RU ZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ ICsgICAgOiAgICgnKicgY2FzdFRlcm1bRXhwSW5mb10pICMgbXVsdGRpdm1vZFRlcm1NdWwNCj4g DQo+ICsgICAgICAgIHwNCj4gDQo+ICsgICAgICAgICgnLycgY2FzdFRlcm1bRXhwSW5mb10pICMg bXVsdGRpdm1vZFRlcm1EaXYNCj4gDQo+ICsgICAgICAgIHwNCj4gDQo+ICsgICAgICAgICgnJScg Y2FzdFRlcm1bRXhwSW5mb10pICMgbXVsdGRpdm1vZFRlcm1Nb2R1bG8NCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK2Nhc3RUZXJtW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtd XQ0KPiANCj4gKyAgICA6ICAgKGNhc3RUZXJtU3ViKSoNCj4gDQo+ICsgICAgICAgIGF0b21UZXJt W0V4cEluZm9dDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtjYXN0VGVybVN1Yg0KPiAN Cj4gK2xvY2Fsc1tDYXN0VHlwZT0weEZGXQ0KPiANCj4gKyAgICA6ICAgJygnDQo+IA0KPiArICAg ICAgICAoICAnQk9PTEVBTicNCj4gDQo+ICsgICAgICAgIHwgICdVSU5UNjQnDQo+IA0KPiArICAg ICAgICB8ICAnVUlOVDMyJw0KPiANCj4gKyAgICAgICAgfCAgJ1VJTlQxNicNCj4gDQo+ICsgICAg ICAgIHwgICdVSU5UOCcNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgICcpJw0KPiAN Cj4gKw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArYXRvbVRlcm1bRXhwSW5mb10NCj4g DQo+ICtsb2NhbHNbTm9kZXM9W11dDQo+IA0KPiArICAgIDogICB2ZnJFeHByZXNzaW9uQ2F0ZW5h dGVbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHZmckV4cHJlc3Npb25NYXRjaFtFeHBJbmZvXQ0K PiANCj4gKyAgICB8ICAgdmZyRXhwcmVzc2lvbk1hdGNoMltFeHBJbmZvXQ0KPiANCj4gKyAgICB8 ICAgdmZyRXhwcmVzc2lvblBhcmVuW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNz aW9uQnVpbGRJbkZ1bmN0aW9uW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNzaW9u Q29uc3RhbnRbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHZmckV4cHJlc3Npb25VbmFyeU9wW0V4 cEluZm9dDQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNzaW9uVGVybmFyeU9wW0V4cEluZm9dDQo+ IA0KPiArICAgIHwgICB2ZnJFeHByZXNzaW9uTWFwW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICAo J05PVCcgYXRvbVRlcm1bRXhwSW5mb10pDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJFeHByZXNzaW9uQ2F0ZW5hdGVbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTm9kZXM9W11dDQo+ IA0KPiArICAgIDogICAnY2F0ZW5hdGUnDQo+IA0KPiArICAgICAgICAnKCcgdmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10gJywnDQo+IHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJbbG9jYWxjdHguTm9kZXNdICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr dmZyRXhwcmVzc2lvbk1hdGNoW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiAN Cj4gKyAgICA6ICAgJ21hdGNoJw0KPiANCj4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJl c3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICAnLCcNCj4gdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 Yltsb2NhbGN0eC5Ob2Rlc10gJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJF eHByZXNzaW9uTWF0Y2gyW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4g KyAgICA6ICAgJ21hdGNoMicNCj4gDQo+ICsgICAgICAgICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViW2xvY2FsY3R4Lk5vZGVzXSAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICAnLCcNCj4gDQo+ICsgICAgICAgIGd1aWREZWZp bml0aW9uICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyRXhwcmVzc2lvblBh cmVuW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJygn IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICAnKScNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb25bRXhwSW5m b10NCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIGR1cEV4cFtFeHBJbmZvXQ0K PiANCj4gKyAgICB8ICAgdmFyZXF2YWxFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIGlkZXF2 YWxFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIGlkZXFpZEV4cFtFeHBJbmZvXQ0KPiANCj4g KyAgICB8ICAgaWRlcXZhbGxpc3RFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHF1ZXN0aW9u cmVmMUV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgcnVsZXJlZkV4cFtFeHBJbmZvXQ0KPiAN Cj4gKyAgICB8ICAgc3RyaW5ncmVmMUV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgcHVzaHRo aXNFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHNlY3VyaXR5RXhwW0V4cEluZm9dDQo+IA0K PiArICAgIHwgICBnZXRFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K2R1cEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJf RFVQX09QKV0NCj4gDQo+ICsgICAgOiAgICdkdXAnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICt2YXJlcXZhbEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0K PiANCj4gKyAgICA6ICAgJ3ZhcmVxdmFsJw0KPiANCj4gKyAgICAgICAgJ3ZhcicgJygnIFZOPU51 bWJlciAnKScNCj4gDQo+ICsgICAgICAgICggICAnPT0nIE51bWJlcg0KPiANCj4gKyAgICAgICAg fCAgICc8PScgTnVtYmVyDQo+IA0KPiArICAgICAgICB8ICAgJzwnICBOdW1iZXINCj4gDQo+ICsg ICAgICAgIHwgICAnPj0nIE51bWJlcg0KPiANCj4gKyAgICAgICAgfCAgICc+JyAgTnVtYmVyDQo+ IA0KPiArICAgICAgICApDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtpZGVxdmFsRXhw W0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICBJPSdpZGVxdmFs JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCj4gDQo+ICsgICAgICAgICggICAnPT0nIE51bWJl cg0KPiANCj4gKyAgICAgICAgfCAgICc8PScgTnVtYmVyDQo+IA0KPiArICAgICAgICB8ICAgJzwn IE51bWJlcg0KPiANCj4gKyAgICAgICAgfCAgICc+PScgTnVtYmVyDQo+IA0KPiArICAgICAgICB8 ICAgJz4nIE51bWJlcg0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiAraWRlcWlkRXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAg IDogICBJPSdpZGVxaWQnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAg KCAgIEU9Jz09JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCj4gDQo+ICsgICAgICAgIHwgICBM RT0nPD0nIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAgfCAgIEw9Jzwn IHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAgfCAgIEJFPSc+PScgdmZy UXVlc3Rpb25EYXRhRmllbGROYW1lDQo+IA0KPiArICAgICAgICB8ICAgQj0nPicgdmZyUXVlc3Rp b25EYXRhRmllbGROYW1lDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICtpZGVxdmFsbGlzdEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiAN Cj4gKyAgICA6ICAgJ2lkZXF2YWxsaXN0JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUgJz09JyAo TnVtYmVyKSsNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZQ0KPiANCj4gK2xvY2Fsc1tRSWQ9RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIE1hc2s9 MCwgVmFySWRTdHI9JycsIExpbmU9Tm9uZV0NCj4gDQo+ICsgICAgOiAgIChTTjE9U3RyaW5nSWRl bnRpZmllciAnWycgST1OdW1iZXIgJ10nKSAjDQo+IHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1 bGUxDQo+IA0KPiArICAgICAgICB8ICAgKFNOMj1TdHJpbmdJZGVudGlmaWVyICgnLicgYXJyYXlO YW1lKSopICMNCj4gdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTINCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK2FycmF5TmFtZQ0KPiANCj4gK2xvY2Fsc1tTdWJTdHI9JycsIFN1YlN0 clo9JyddDQo+IA0KPiArICAgIDogU3RyaW5nSWRlbnRpZmllciAoJ1snIE49TnVtYmVyICddJyk/ DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtxdWVzdGlvbnJlZjFFeHBbRXhwSW5mb10N Cj4gDQo+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1Ap XQ0KPiANCj4gKyAgICA6ICAgJ3F1ZXN0aW9ucmVmJw0KPiANCj4gKyAgICAgICAgJygnICggU3Ry aW5nSWRlbnRpZmllciB8IE51bWJlciApICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArcnVsZXJlZkV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVG SV9JRlJfUlVMRV9SRUZfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3J1bGVyZWYnICcoJyBTdHJpbmdJ ZGVudGlmaWVyICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArc3RyaW5ncmVmMUV4 cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfU1RSSU5H X1JFRjFfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3N0cmluZ3JlZicgJygnDQo+IA0KPiArICAgICAg ICAoDQo+IA0KPiArICAgICAgICAgICAgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScNCj4g DQo+ICsgICAgICAgIHwgICBOdW1iZXINCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtwdXNodGhp c0V4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfVEhJ U19PUCldDQo+IA0KPiArICAgIDogICAncHVzaHRoaXMnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICtzZWN1cml0eUV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlPUlmclRyZWVO b2RlKEVGSV9JRlJfU0VDVVJJVFlfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ3NlY3VyaXR5JyAnKCcg Z3VpZERlZmluaXRpb24gJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtudW1lcmlj VmFyU3RvcmVUeXBlDQo+IA0KPiArbG9jYWxzW1ZhclR5cGVdDQo+IA0KPiArICAgIDogICAnTlVN RVJJQ19TSVpFXzEnDQo+IA0KPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzInDQo+IA0KPiArICAg IHwgICAnTlVNRVJJQ19TSVpFXzQnDQo+IA0KPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzgnDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtnZXRFeHBbRXhwSW5mb10NCj4gDQo+ICtsb2Nh bHNbQmFzZUluZm89RUZJX1ZBUlNUT1JFX0lORk8oKSwNCj4gTm9kZT1JZnJUcmVlTm9kZShFRklf SUZSX0dFVF9PUCldDQo+IA0KPiArICAgIDogICAnZ2V0JyAnKCcgdmZyU3RvcmFnZVZhcklkW2xv Y2FsY3R4LkJhc2VJbmZvLCBGYWxzZV0oJ3wnICdmbGFncycgJz0nDQo+IG51bWVyaWNWYXJTdG9y ZVR5cGUpPyAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckV4cHJlc3Npb25D b25zdGFudFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiANCj4gKyAgICA6ICAgJ1RS VUUnDQo+IA0KPiArICAgIHwgICAnRkFMU0UnDQo+IA0KPiArICAgIHwgICAnT05FJw0KPiANCj4g KyAgICB8ICAgJ09ORVMnDQo+IA0KPiArICAgIHwgICAnWkVSTycNCj4gDQo+ICsgICAgfCAgICdV TkRFRklORUQnDQo+IA0KPiArICAgIHwgICAnVkVSU0lPTicNCj4gDQo+ICsgICAgfCAgIE51bWJl cg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyRXhwcmVzc2lvblVuYXJ5T3BbRXhw SW5mb10NCj4gDQo+ICtsb2NhbHNbTm9kZXNdDQo+IA0KPiArICAgIDogICBsZW5ndGhFeHBbRXhw SW5mb10NCj4gDQo+ICsgICAgfCAgIGJpdHdpc2Vub3RFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAg fCAgIHF1ZXN0aW9uMjNyZWZFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHN0cmluZ3JlZjJF eHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHRvYm9vbEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAg ICB8ICAgdG9zdHJpbmdFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHVuaW50RXhwW0V4cElu Zm9dDQo+IA0KPiArICAgIHwgICB0b3VwcGVyRXhwW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB0 b2x3ZXJFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHNldEV4cFtFeHBJbmZvXQ0KPiANCj4g KyAgICA7DQo+IA0KPiArDQo+IA0KPiArbGVuZ3RoRXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxz W05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJ2xlbmd0aCcgJygnIHZmclN0YXRlbWVudEV4cHJl c3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArYml0d2lzZW5vdEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ ICsgICAgOiAgICd+JyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rl c10gJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtxdWVzdGlvbjIzcmVmRXhwW0V4 cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJ3F1ZXN0aW9u cmVmdmFsJw0KPiANCj4gKyAgICAgICAgJygnDQo+IA0KPiArICAgICAgICAoRGV2aWNlUGF0aCAn PScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnICk/DQo+IA0KPiArICAgICAgICAo VXVpZCAnPScgZ3VpZERlZmluaXRpb24gJywnICk/DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0KPiANCj4gKyAgICAgICAgJyknDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtzdHJpbmdyZWYyRXhwW0V4cEluZm9dDQo+IA0KPiAr bG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJ3N0cmluZ3JlZnZhbCcgJygnIHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICcpJw0KPiANCj4gKyAgICA7DQo+ IA0KPiArDQo+IA0KPiArdG9ib29sRXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtd XQ0KPiANCj4gKyAgICA6ICAgJ2Jvb2x2YWwnICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi W2xvY2FsY3R4Lk5vZGVzXSAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Rvc3Ry aW5nRXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAg J3N0cmluZ3ZhbCcgKCdmb3JtYXQnICc9JyBOdW1iZXIgJywnICk/DQo+IA0KPiArICAgICAgICAn KCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10gJyknDQo+IA0KPiAr ICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt1bmludEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tO b2Rlcz1bXV0NCj4gDQo+ICsgICAgOiAgICd1bmludHZhbCcgJygnIHZmclN0YXRlbWVudEV4cHJl c3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdG91cHBlckV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ICsg ICAgOiAgICd0b3VwcGVyJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5O b2Rlc10gJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt0b2x3ZXJFeHBbRXhwSW5m b10NCj4gDQo+ICtsb2NhbHNbTm9kZXM9W11dDQo+IA0KPiArICAgIDogICAndG9sb3dlcicgJygn IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICcpJw0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArc2V0RXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW0Jhc2VJ bmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIE5vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJ3NldCcN Cj4gDQo+ICsgICAgICAgICcoJw0KPiANCj4gKyAgICAgICAgdmZyU3RvcmFnZVZhcklkW2xvY2Fs Y3R4LkJhc2VJbmZvLCBGYWxzZV0oJ3wnICdmbGFncycgJz0nDQo+IG51bWVyaWNWYXJTdG9yZVR5 cGUpPyAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxj dHguTm9kZXNdDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiAN Cj4gK3ZmckV4cHJlc3Npb25UZXJuYXJ5T3BbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTm9kZXNd DQo+IA0KPiArICAgIDogICBjb25kaXRpb25hbEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAg ZmluZEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgbWlkRXhwW0V4cEluZm9dDQo+IA0KPiAr ICAgIHwgICB0b2tlbkV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgc3BhbkV4cFtFeHBJbmZv XQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArY29uZGl0aW9uYWxFeHBbRXhwSW5mb10N Cj4gDQo+ICtsb2NhbHNbTm9kZXM9W11dDQo+IA0KPiArICAgIDogICAnY29uZCcNCj4gDQo+ICsg ICAgICAgICcoJw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2Nh bGN0eC5Ob2Rlc10NCj4gDQo+ICsgICAgICAgICc/Jw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10NCj4gDQo+ICsgICAgICAgICc6Jw0KPiAN Cj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10NCj4g DQo+ICsgICAgICAgICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArZmluZEV4cFtF eHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ICsgICAgOiAgICdmaW5kJw0K PiANCj4gKyAgICAgICAgJygnDQo+IA0KPiArICAgICAgICBmaW5kRm9ybWF0W0V4cEluZm9dICgn fCcgZmluZEZvcm1hdFtFeHBJbmZvXSkqDQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAg ICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+IA0KPiArICAg ICAgICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxj dHguTm9kZXNdDQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2ZpbmRGb3JtYXRbRXhwSW5mb10NCj4gDQo+ICtsb2Nh bHNbRm9ybWF0PTBdDQo+IA0KPiArICAgIDogICAnU0VOU0lUSVZFJyB8ICdJTlNFTlNJVElWRScN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK21pZEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xv Y2Fsc1tOb2Rlcz1bXV0NCj4gDQo+ICsgICAgOiAgICdtaWQnDQo+IA0KPiArICAgICAgICAnKCcN Cj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNd DQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJbbG9jYWxjdHguTm9kZXNdDQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAg IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+IA0KPiArICAgICAg ICAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Rva2VuRXhwW0V4cEluZm9dDQo+ IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJ3Rva2VuJw0KPiANCj4gKyAg ICAgICAgJygnDQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2Fs Y3R4Lk5vZGVzXQ0KPiANCj4gKyAgICAgICAgJywnDQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0KPiANCj4gKyAgICAgICAgJywnDQo+IA0K PiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0KPiAN Cj4gKyAgICAgICAgJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtzcGFuRXhwW0V4 cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdXQ0KPiANCj4gKyAgICA6ICAgJ3NwYW4nDQo+ IA0KPiArICAgICAgICAnKCcNCj4gDQo+ICsgICAgICAgICdmbGFncycgJz0nIHNwYW5GbGFncyAo J3wnIHNwYW5GbGFncykqDQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+IA0KPiArICAgICAgICAnLCcN Cj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNd DQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJbbG9jYWxjdHguTm9kZXNdDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK3NwYW5GbGFncw0KPiANCj4gK2xvY2Fsc1tGbGFnPTBdDQo+IA0KPiAr ICAgIDogICBOdW1iZXINCj4gDQo+ICsgICAgfCAgICdMQVNUX05PTl9NQVRDSCcNCj4gDQo+ICsg ICAgfCAgICdGSVJTVF9OT05fTUFUQ0gnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJFeHByZXNzaW9uTWFwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW05vZGVzPVtdLCBOb2RlPUlm clRyZWVOb2RlKCldDQo+IA0KPiArICAgIDogICAnbWFwJw0KPiANCj4gKyAgICAgICAgJygnDQo+ IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0K PiANCj4gKyAgICAgICAgJzonDQo+IA0KPiArICAgICAgICAoICAgdmZyU3RhdGVtZW50RXhwcmVz c2lvbltsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgICAgICcsJw0KPiANCj4gKyAgICAg ICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0NCj4gDQo+ICsgICAg ICAgICAgICAnOycNCj4gDQo+ICsgICAgICAgICkqDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK0RlZmluZSA6JyNkZWZpbmUnOw0KPiAN Cj4gK0luY2x1ZGUgOiAnI2luY2x1ZGUnOw0KPiANCj4gK0Zvcm1Qa2dUeXBlIDogJ2Zvcm1wa2d0 eXBlJzsNCj4gDQo+ICtPcGVuQnJhY2UgOiAneyc7DQo+IA0KPiArQ2xvc2VCcmFjZSA6ICd9JzsN Cj4gDQo+ICtPcGVuUGFyZW4gOiAnKCc7DQo+IA0KPiArQ2xvc2VQYXJlbiA6ICcpJzsNCj4gDQo+ ICtPcGVuQnJhY2tldCA6ICdbJzsNCj4gDQo+ICtDbG9zZUJyYWNrZXQgOiAnXSc7DQo+IA0KPiAr RG90IDogJy4nOw0KPiANCj4gK05lZ2F0aXZlIDogJy0nOw0KPiANCj4gK0NvbG9uIDogJzonOw0K PiANCj4gK1NsYXNoIDogJy8nOw0KPiANCj4gK1NlbWljb2xvbiA6ICc7JzsNCj4gDQo+ICtDb21t YSA6ICcsJzsNCj4gDQo+ICtFcXVhbCA6ICc9PSc7DQo+IA0KPiArTm90RXF1YWwgOiAnIT0nOw0K PiANCj4gK0xlc3NFcXVhbDogJzw9JzsNCj4gDQo+ICtMZXNzOic8JzsNCj4gDQo+ICtHcmVhdGVy RXF1YWw6Jz49JzsNCj4gDQo+ICtHcmVhdGVyOic+JzsNCj4gDQo+ICtCaXRXaXNlT3I6ICd8JzsN Cj4gDQo+ICtCaXRXaXNlQW5kOiAnJic7DQo+IA0KPiArDQo+IA0KPiArRGV2aWNlUGF0aCA6ICdk ZXZpY2VwYXRoJzsNCj4gDQo+ICtGb3JtU2V0IDogJ2Zvcm1zZXQnOw0KPiANCj4gK0Zvcm1TZXRJ ZCA6ICdmb3Jtc2V0aWQnOw0KPiANCj4gK0VuZEZvcm1TZXQgOiAnZW5kZm9ybXNldCc7DQo+IA0K PiArVGl0bGUgOiAndGl0bGUnOw0KPiANCj4gK0Zvcm1JZCA6ICdmb3JtaWQnOw0KPiANCj4gK09u ZU9mIDogJ29uZW9mJzsNCj4gDQo+ICtFbmRPbmVPZiA6ICdlbmRvbmVvZic7DQo+IA0KPiArUHJv bXB0IDogJ3Byb21wdCc7DQo+IA0KPiArT3JkZXJlZExpc3QgOiAnb3JkZXJlZGxpc3QnOw0KPiAN Cj4gK01heENvbnRhaW5lcnMgOiAnbWF4Y29udGFpbmVycyc7DQo+IA0KPiArRW5kTGlzdCA6ICdl bmRsaXN0JzsNCj4gDQo+ICtFbmRGb3JtIDogJ2VuZGZvcm0nOw0KPiANCj4gK0Zvcm0gOiAnZm9y bSc7DQo+IA0KPiArRm9ybU1hcCA6ICdmb3JtbWFwJzsNCj4gDQo+ICtNYXBUaXRsZSA6ICdtYXB0 aXRsZSc7DQo+IA0KPiArTWFwR3VpZCA6ICdtYXBndWlkJzsNCj4gDQo+ICtTdWJ0aXRsZSA6ICdz dWJ0aXRsZSc7DQo+IA0KPiArRW5kU3VidGl0bGUgOiAnZW5kc3VidGl0bGUnOw0KPiANCj4gK0hl bHAgOiAnaGVscCc7DQo+IA0KPiArVGV4dCA6ICd0ZXh0JzsNCj4gDQo+ICtPcHRpb24gOiAnb3B0 aW9uJzsNCj4gDQo+ICtGTEFHUyA6ICdmbGFncyc7DQo+IA0KPiArRGF0ZSA6ICdkYXRlJzsNCj4g DQo+ICtFbmREYXRlIDogJ2VuZGRhdGUnOw0KPiANCj4gK1llYXIgOiAneWVhcic7DQo+IA0KPiAr TW9udGggOiAnbW9udGgnOw0KPiANCj4gK0RheSA6ICdkYXknOw0KPiANCj4gK1RpbWUgOiAndGlt ZSc7DQo+IA0KPiArRW5kVGltZSA6ICdlbmR0aW1lJzsNCj4gDQo+ICtIb3VyIDogJ2hvdXInOw0K PiANCj4gK01pbnV0ZSA6ICdtaW51dGUnOw0KPiANCj4gK1NlY29uZCA6ICdzZWNvbmQnOw0KPiAN Cj4gK0dyYXlPdXRJZiA6ICdncmF5b3V0aWYnOw0KPiANCj4gK0xhYmVsIDogJ2xhYmVsJzsNCj4g DQo+ICtUaW1lb3V0IDogJ3RpbWVvdXQnOw0KPiANCj4gK0ludmVudG9yeSA6ICdpbnZlbnRvcnkn Ow0KPiANCj4gK05vbk52RGF0YU1hcCA6ICdfTk9OX05WX0RBVEFfTUFQJzsNCj4gDQo+ICtTdHJ1 Y3QgOiAnc3RydWN0JzsNCj4gDQo+ICtVbmlvbiA6ICd1bmlvbic7DQo+IA0KPiArQm9vbGVhbiA6 ICdCT09MRUFOJzsNCj4gDQo+ICtVaW50NjQgOiAnVUlOVDY0JzsNCj4gDQo+ICtVaW50MzIgOiAn VUlOVDMyJzsNCj4gDQo+ICtVaW50MTYgOiAnVUlOVDE2JzsNCj4gDQo+ICtVaW50OCA6J1VJTlQ4 JzsNCj4gDQo+ICtFRklfU1RSSU5HX0lEIDonRUZJX1NUUklOR19JRCc7DQo+IA0KPiArRUZJX0hJ SV9EQVRFIDogJ0VGSV9ISUlfREFURSc7DQo+IA0KPiArRUZJX0hJSV9USU1FIDogJ0VGSV9ISUlf VElNRSc7DQo+IA0KPiArRUZJX0hJSV9SRUYgOiAnRUZJX0hJSV9SRUYnOw0KPiANCj4gK1V1aWQg OiAnZ3VpZCc7DQo+IA0KPiArQ2hlY2tCb3ggOiAnY2hlY2tib3gnOw0KPiANCj4gK0VuZENoZWNr Qm94IDogJ2VuZGNoZWNrYm94JzsNCj4gDQo+ICtOdW1lcmljIDogJ251bWVyaWMnOw0KPiANCj4g K0VuZE51bWVyaWMgOiAnZW5kbnVtZXJpYyc7DQo+IA0KPiArTWluaW11bSA6ICdtaW5pbXVtJzsN Cj4gDQo+ICtNYXhpbXVtIDogJ21heGltdW0nOw0KPiANCj4gK1N0ZXAgOiAnc3RlcCc7DQo+IA0K PiArRGVmYXVsdCA6ICdkZWZhdWx0JzsNCj4gDQo+ICtQYXNzd29yZCA6ICdwYXNzd29yZCc7DQo+ IA0KPiArRW5kUGFzc3dvcmQgOiAnZW5kcGFzc3dvcmQnOw0KPiANCj4gK1N0cmluZyA6ICdzdHJp bmcnOw0KPiANCj4gK0VuZFN0cmluZyA6ICdlbmRzdHJpbmcnOw0KPiANCj4gK01pblNpemUgOiAn bWluc2l6ZSc7DQo+IA0KPiArTWF4U2l6ZSA6ICdtYXhzaXplJzsNCj4gDQo+ICtFbmNvZGluZyA6 ICdlbmNvZGluZyc7DQo+IA0KPiArU3VwcHJlc3NJZiA6ICdzdXBwcmVzc2lmJzsNCj4gDQo+ICtE aXNhYmxlSWYgOiAnZGlzYWJsZWlmJzsNCj4gDQo+ICtIaWRkZW4gOiAnaGlkZGVuJzsNCj4gDQo+ ICtHb3RvIDogJ2dvdG8nOw0KPiANCj4gK0Zvcm1TZXRHdWlkIDogJ2Zvcm1zZXRndWlkJzsNCj4g DQo+ICtJbmNvbnNpc3RlbnRJZiA6ICdpbmNvbnNpc3RlbnRpZic7DQo+IA0KPiArV2FybmluZ0lm IDogJ3dhcm5pbmdpZic7DQo+IA0KPiArTm9TdWJtaXRJZiA6ICdub3N1Ym1pdGlmJzsNCj4gDQo+ ICtFbmRJZiA6ICdlbmRpZic7DQo+IA0KPiArS2V5IDogJ2tleSc7DQo+IA0KPiArRGVmYXVsdEZs YWcgOiAnREVGQVVMVCc7DQo+IA0KPiArTWFudWZhY3R1cmluZ0ZsYWcgOiAnTUFOVUZBQ1RVUklO Ryc7DQo+IA0KPiArQ2hlY2tCb3hEZWZhdWx0RmxhZyA6ICdDSEVDS0JPWF9ERUZBVUxUJzsNCj4g DQo+ICtDaGVja0JveERlZmF1bHRNZmdGbGFnIDogJ0NIRUNLQk9YX0RFRkFVTFRfTUZHJzsNCj4g DQo+ICtJbnRlcmFjdGl2ZUZsYWcgOiAnSU5URVJBQ1RJVkUnOw0KPiANCj4gK05WQWNjZXNzRmxh ZyA6ICdOVl9BQ0NFU1MnOw0KPiANCj4gK1Jlc2V0UmVxdWlyZWRGbGFnIDogJ1JFU0VUX1JFUVVJ UkVEJzsNCj4gDQo+ICtSZWNvbm5lY3RSZXF1aXJlZEZsYWcgOiAnUkVDT05ORUNUX1JFUVVJUkVE JzsNCj4gDQo+ICtMYXRlQ2hlY2tGbGFnIDogJ0xBVEVfQ0hFQ0snOw0KPiANCj4gK1JlYWRPbmx5 RmxhZyA6ICdSRUFEX09OTFknOw0KPiANCj4gK09wdGlvbk9ubHlGbGFnIDogJ09QVElPTlNfT05M WSc7DQo+IA0KPiArUmVzdFN0eWxlRmxhZyA6ICdSRVNUX1NUWUxFJzsNCj4gDQo+ICtDbGFzcyA6 ICdjbGFzcyc7DQo+IA0KPiArU3ViY2xhc3MgOiAnc3ViY2xhc3MnOw0KPiANCj4gK0NsYXNzR3Vp ZCA6ICdjbGFzc2d1aWQnOw0KPiANCj4gK1R5cGVEZWYgOiAndHlwZWRlZic7DQo+IA0KPiArUmVz dG9yZSA6ICdyZXN0b3JlJzsNCj4gDQo+ICtTYXZlIDogJ3NhdmUnOw0KPiANCj4gK0RlZmF1bHRz IDogJ2RlZmF1bHRzJzsNCj4gDQo+ICtCYW5uZXIgOiAgJ2Jhbm5lcic7DQo+IA0KPiArQWxpZ24g OiAnYWxpZ24nOw0KPiANCj4gK0xlZnQgOiAnbGVmdCc7DQo+IA0KPiArUmlnaHQgOiAncmlnaHQn Ow0KPiANCj4gK0NlbnRlciA6ICdjZW50ZXInOw0KPiANCj4gK0xpbmUgOiAnbGluZSc7DQo+IA0K PiArTmFtZSA6ICduYW1lJzsNCj4gDQo+ICsNCj4gDQo+ICtWYXJJZDogJ3ZhcmlkJzsNCj4gDQo+ ICtRdWVzdGlvbjogJ3F1ZXN0aW9uJzsNCj4gDQo+ICtRdWVzdGlvbklkOiAncXVlc3Rpb25pZCc7 DQo+IA0KPiArSW1hZ2U6ICdpbWFnZSc7DQo+IA0KPiArTG9ja2VkOiAnbG9ja2VkJzsNCj4gDQo+ ICtSdWxlOiAncnVsZSc7DQo+IA0KPiArRW5kUnVsZTogJ2VuZHJ1bGUnOw0KPiANCj4gK1ZhbHVl OiAndmFsdWUnOw0KPiANCj4gK1JlYWQ6ICdyZWFkJzsNCj4gDQo+ICtXcml0ZTogJ3dyaXRlJzsN Cj4gDQo+ICtSZXNldEJ1dHRvbjogJ3Jlc2V0YnV0dG9uJzsNCj4gDQo+ICtFbmRSZXNldEJ1dHRv bjogJ2VuZHJlc2V0YnV0dG9uJzsNCj4gDQo+ICtEZWZhdWx0U3RvcmU6ICdkZWZhdWx0c3RvcmUn Ow0KPiANCj4gK0F0dHJpYnV0ZTogJ2F0dHJpYnV0ZSc7DQo+IA0KPiArVmFyc3RvcmU6ICd2YXJz dG9yZSc7DQo+IA0KPiArRWZpdmFyc3RvcmU6ICdlZml2YXJzdG9yZSc7DQo+IA0KPiArVmFyU2l6 ZTogJ3ZhcnNpemUnOw0KPiANCj4gK05hbWVWYWx1ZVZhclN0b3JlOiAnbmFtZXZhbHVldmFyc3Rv cmUnOw0KPiANCj4gK0FjdGlvbjogJ2FjdGlvbic7DQo+IA0KPiArQ29uZmlnOiAnY29uZmlnJzsN Cj4gDQo+ICtFbmRBY3Rpb246ICdlbmRhY3Rpb24nOw0KPiANCj4gK1JlZnJlc2g6ICdyZWZyZXNo JzsNCj4gDQo+ICtJbnRlcnZhbDogJ2ludGVydmFsJzsNCj4gDQo+ICtWYXJzdG9yZURldmljZTog J3ZhcnN0b3JlZGV2aWNlJzsNCj4gDQo+ICtHdWlkT3A6ICdndWlkb3AnOw0KPiANCj4gK0VuZEd1 aWRPcDogJ2VuZGd1aWRvcCc7DQo+IA0KPiArRGF0YVR5cGU6ICdkYXRhdHlwZSc7DQo+IA0KPiAr RGF0YTogJ2RhdGEnOw0KPiANCj4gK01vZGFsOiAnbW9kYWwnOw0KPiANCj4gKw0KPiANCj4gKy8v DQo+IA0KPiArLy8gRGVmaW5lIHRoZSBjbGFzcyBhbmQgc3ViY2xhc3MgdG9rZW5zDQo+IA0KPiAr Ly8NCj4gDQo+ICsvLw0KPiANCj4gK0NsYXNzTm9uRGV2aWNlOiAnTk9OX0RFVklDRSc7DQo+IA0K PiArQ2xhc3NEaXNrRGV2aWNlOiAnRElTS19ERVZJQ0UnOw0KPiANCj4gK0NsYXNzVmlkZW9EZXZp Y2U6ICdWSURFT19ERVZJQ0UnOw0KPiANCj4gK0NsYXNzTmV0d29ya0RldmljZTogJ05FVFdPUktf REVWSUNFJzsNCj4gDQo+ICtDbGFzc0lucHV0RGV2aWNlOiAnSU5QVVRfREVWSUNFJzsNCj4gDQo+ ICtDbGFzc09uQm9hcmREZXZpY2U6ICdPTkJPQVJEX0RFVklDRSc7DQo+IA0KPiArQ2xhc3NPdGhl ckRldmljZTogJ09USEVSX0RFVklDRSc7DQo+IA0KPiArDQo+IA0KPiArU3ViY2xhc3NTZXR1cEFw cGxpY2F0aW9uOiAnU0VUVVBfQVBQTElDQVRJT04nOw0KPiANCj4gK1N1YmNsYXNzR2VuZXJhbEFw cGxpY2F0aW9uOiAnR0VORVJBTF9BUFBMSUNBVElPTic7DQo+IA0KPiArU3ViY2xhc3NGcm9udFBh Z2U6ICdGUk9OVF9QQUdFJzsNCj4gDQo+ICtTdWJjbGFzc1NpbmdsZVVzZTogJ1NJTkdMRV9VU0Un Ow0KPiANCj4gKw0KPiANCj4gK1llYXJTdXBwcHJlc3NGbGFnOiAnWUVBUl9TVVBQUkVTUyc7DQo+ IA0KPiArTW9udGhTdXBwcmVzc0ZsYWc6ICdNT05USF9TVVBQUkVTUyc7DQo+IA0KPiArRGF5U3Vw cHJlc3NGbGFnOiAnREFZX1NVUFBSRVNTJzsNCj4gDQo+ICtIb3VyU3VwcHByZXNzRmxhZzogJ0hP VVJfU1VQUFJFU1MnOw0KPiANCj4gK01pbnV0ZVN1cHByZXNzRmxhZzogJ01JTlVURV9TVVBQUkVT Uyc7DQo+IA0KPiArU2Vjb25kU3VwcHJlc3NGbGFnOiAnU0VDT05EX1NVUFBSRVNTJzsNCj4gDQo+ ICtTdG9yYWdlTm9ybWFsRmxhZzogJ1NUT1JBR0VfTk9STUFMJzsNCj4gDQo+ICtTdG9yYWdlVGlt ZUZsYWc6ICdTVE9SQUdFX1RJTUUnOw0KPiANCj4gK1N0b3JhZ2VXYWtlVXBGbGFnOiAnU1RPUkFH RV9XQUtFVVAnOw0KPiANCj4gKw0KPiANCj4gK1VuaVF1ZUZsYWc6ICdVTklRVUUnOw0KPiANCj4g K05vRW1wdHlGbGFnOiAnTk9FTVBUWSc7DQo+IA0KPiArDQo+IA0KPiArQ29uZDogJ2NvbmQnOw0K PiANCj4gK0ZpbmQ6ICdmaW5kJzsNCj4gDQo+ICtNaWQ6ICdtaWQnOw0KPiANCj4gK1RvazogJ3Rv a2VuJzsNCj4gDQo+ICtTcGFuOiAnc3Bhbic7DQo+IA0KPiArDQo+IA0KPiArLy8gVGhlIHN5bnRh eCBvZiBleHByZXNzaW9uDQo+IA0KPiArDQo+IA0KPiArRHVwOiAnZHVwJzsNCj4gDQo+ICtWYXJF cVZhbDogJ3ZhcmVxdmFsJzsNCj4gDQo+ICtWYXI6ICd2YXInOw0KPiANCj4gK0lkRXFWYWw6ICdp ZGVxdmFsJzsNCj4gDQo+ICtJZEVxSWQ6ICdpZGVxaWQnOw0KPiANCj4gK0lkRXFWYWxMaXN0OiAn aWRlcXZhbGxpc3QnOw0KPiANCj4gK1F1ZXN0aW9uUmVmOiAncXVlc3Rpb25yZWYnOw0KPiANCj4g K1J1bGVSZWY6ICdydWxlcmVmJzsNCj4gDQo+ICtTdHJpbmdSZWY6ICdzdHJpbmdyZWYnOw0KPiAN Cj4gK1B1c2hUaGlzOiAncHVzaHRoaXMnOw0KPiANCj4gK1NlY3VyaXR5OiAnc2VjdXJpdHknOw0K PiANCj4gK0dldDogJ2dldCc7DQo+IA0KPiArVHJ1ZVN5bWJvbDogJ1RSVUUnOw0KPiANCj4gK0Zh bHNlU3ltYm9sOiAnRkFMU0UnOw0KPiANCj4gK09uZTogJ09ORSc7DQo+IA0KPiArT25lczogJ09O RVMnOw0KPiANCj4gK1plcm86ICdaRVJPJzsNCj4gDQo+ICtVbmRlZmluZWQ6ICdVTkRFRklORUQn Ow0KPiANCj4gK1ZlcnNpb246ICdWRVJTSU9OJzsNCj4gDQo+ICtMZW5ndGg6ICdsZW5ndGgnOw0K PiANCj4gK0FORDogJ0FORCc7DQo+IA0KPiArT1I6ICdPUic7DQo+IA0KPiArTk9UOiAnTk9UJzsN Cj4gDQo+ICtTZXQ6ICdzZXQnOw0KPiANCj4gK0JpdFdpc2VOb3Q6ICd+JzsNCj4gDQo+ICtCb29s VmFsOiAnYm9vbHZhbCc7DQo+IA0KPiArU3RyaW5nVmFsOiAnc3RyaW5ndmFsJzsNCj4gDQo+ICtV bkludFZhbDogJ3VuaW50dmFsJzsNCj4gDQo+ICtUb1VwcGVyOiAndG91cHBlcic7DQo+IA0KPiAr VG9Mb3dlcjogJ3RvbG93ZXInOw0KPiANCj4gK01hdGNoOiAnbWF0Y2gnOw0KPiANCj4gK01hdGNo MjogJ21hdGNoMic7DQo+IA0KPiArQ2F0ZW5hdGU6ICdjYXRlbmF0ZSc7DQo+IA0KPiArUXVlc3Rp b25SZWZWYWw6ICdxdWVzdGlvbnJlZnZhbCc7DQo+IA0KPiArU3RyaW5nUmVmVmFsOiAnc3RyaW5n cmVmdmFsJzsNCj4gDQo+ICtNYXA6ICdtYXAnOw0KPiANCj4gK1JlZnJlc2hHdWlkOiAncmVmcmVz aGd1aWQnOw0KPiANCj4gK1N0cmluZ1Rva2VuOiAnU1RSSU5HX1RPS0VOJzsNCj4gDQo+ICsNCj4g DQo+ICtPcHRpb25EZWZhdWx0OiAnT1BUSU9OX0RFRkFVTFQnOw0KPiANCj4gK09wdGlvbkRlZmF1 bHRNZmc6ICdPUFRJT05fREVGQVVMVF9NRkcnOw0KPiANCj4gKw0KPiANCj4gK051bWVyaWNTaXpl T25lOiAnTlVNRVJJQ19TSVpFXzEnOw0KPiANCj4gK051bWVyaWNTaXplVHdvOiAnTlVNRVJJQ19T SVpFXzInOw0KPiANCj4gK051bWVyaWNTaXplRm91cjogJ05VTUVSSUNfU0laRV80JzsNCj4gDQo+ ICtOdW1lcmljU2l6ZUVpZ2h0OiAnTlVNRVJJQ19TSVpFXzgnOw0KPiANCj4gK0Rpc1BsYXlJbnRE ZWM6ICdESVNQTEFZX0lOVF9ERUMnOw0KPiANCj4gK0Rpc1BsYXlVSW50RGVjOiAnRElTUExBWV9V SU5UX0RFQyc7DQo+IA0KPiArRGlzUGxheVVJbnRIZXg6ICdESVNQTEFZX1VJTlRfSEVYJzsNCj4g DQo+ICsNCj4gDQo+ICtJbnNlbnNpdGl2ZTogICdJTlNFTlNJVElWRSc7DQo+IA0KPiArU2Vuc2l0 aXZlOiAnU0VOU0lUSVZFJzsNCj4gDQo+ICsNCj4gDQo+ICtMYXN0Tm9uTWF0Y2g6ICdMQVNUX05P Tl9NQVRDSCc7DQo+IA0KPiArRmlyc3ROb25NYXRjaDogJ0ZJUlNUX05PTl9NQVRDSCc7DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArTnVtYmVyDQo+IA0KPiArICAgIDogICAoJzB4 J1swLTlBLUZhLWZdKykgfCBbMC05XSsNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK1N0 cmluZ0lkZW50aWZpZXINCj4gDQo+ICsgICAgOiAgIFtBLVphLXpfXVtBLVphLXpfMC05XSoNCj4g DQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK0NvbXBsZXhEZWZpbmUNCj4gDQo+ICsgICAgOiAg ICcjJyBXaGl0ZXNwYWNlPyAnZGVmaW5lJyAgflsjXHJcbl0qDQo+IA0KPiArICAgICAgICAtPiBz a2lwDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtMaW5lRGVmaW5pdGlv bg0KPiANCj4gKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdsaW5lJyAgflsjXHJcbl0qDQo+IA0K PiArICAgICAgICAtPiBza2lwDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtJbmNsdWRl RGVmaW5pdGlvbg0KPiANCj4gKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdpbmNsdWRlJyAgflsj XHJcbl0qDQo+IA0KPiArICAgICAgICAtPiBza2lwDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4g DQo+ICtXaGl0ZXNwYWNlDQo+IA0KPiArICAgIDogICBbIFx0XSsNCj4gDQo+ICsgICAgICAgIC0+ IHNraXANCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK05ld2xpbmUNCj4gDQo+ICsgICAg OiAgICggICAnXHInICdcbic/DQo+IA0KPiArICAgICAgICB8ICAgJ1xuJw0KPiANCj4gKyAgICAg ICAgKQ0KPiANCj4gKyAgICAgICAgLT4gc2tpcA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArTGluZUNvbW1lbnQNCj4gDQo+ICsgICAgOiAgICcvLycgfltcclxuXSoNCj4gDQo+ICsgICAg ICAgIC0+IHNraXANCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKy8vIFNraXAgb3ZlciAn ZXh0ZXJuJyBpbiBhbnkgaW5jbHVkZWQgLkggZmlsZQ0KPiANCj4gK0V4dGVybg0KPiANCj4gKyAg ICA6ICdleHRlcm4nIH5bI1xyXG5dKg0KPiANCj4gKyAgICAgICAgLT4gc2tpcA0KPiANCj4gKyAg ICA7DQo+IA0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGls ZXIvVmZyU3ludGF4TGV4ZXIucHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21w aWxlci9WZnJTeW50YXhMZXhlci5weQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwLi4wZTE2NWEwNDQ2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkNCj4gQEAgLTAsMCAr MSwxNzA4IEBADQo+ICsjIEdlbmVyYXRlZCBmcm9tIFZmclN5bnRheC5nNCBieSBBTlRMUiA0Ljcu Mg0KPiANCj4gKw0KPiANCj4gK2ltcG9ydCBzeXMNCj4gDQo+ICtmcm9tIGFudGxyNCBpbXBvcnQg Kg0KPiANCj4gK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPDQo+IA0KPiArZnJvbSB0eXBpbmcgaW1w b3J0IFRleHRJTw0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyQ3R5cGVzIGltcG9ydCAqDQo+ IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJGb3JtUGtnIGltcG9ydCAqDQo+IA0KPiArZnJvbSBW ZnJDb21waWxlci5JZnJVdGlsaXR5IGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5J ZnJUcmVlIGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJFcnJvciBpbXBvcnQg Kg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyUHJlUHJvY2VzcyBpbXBvcnQgKg0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2RlZiBzZXJpYWxpemVkQVROKCk6DQo+IA0KPiArICAgIHdpdGgg U3RyaW5nSU8oKSBhcyBidWY6DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTYwOGJcdWE3MmFc dTgxMzNcdWI5ZWRcdTQxN2NcdTNiZTdcdTc3ODZcdTU5NjRcMlx1MDEwDQo+IDIiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTBhYjdcYlwxXDRcMlx0XDJcNFwzXHRcM1w0XDRcdFw0XDRc NVx0XDVcNFw2XHRcNlw0XDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdFw3XDRcYlx0 XGJcNFx0XHRcdFw0XG5cdFxuXDRcMTNcdFwxM1w0XGZcdFxmXDRcclx0XHIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcNFwxNlx0XDE2XDRcMTdcdFwxN1w0XDIwXHRcMjBcNFwyMVx0XDIx XDRcMjJcdFwyMlw0XDIzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcMjNcNFwyNFx0 XDI0XDRcMjVcdFwyNVw0XDI2XHRcMjZcNFwyN1x0XDI3XDRcMzBcdFwzMCIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlw0XDMxXHRcMzFcNFwzMlx0XDMyXDRcMzNcdFwzM1w0XDM0XHRcMzRc NFwzNVx0XDM1XDRcMzYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdFwzNlw0XDM3XHRc MzdcNCBcdCBcNCFcdCFcNFwiXHRcIlw0I1x0I1w0JFx0JFw0JVx0JSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlw0Jlx0Jlw0XCdcdFwnXDQoXHQoXDQpXHQpXDQqXHQqXDQrXHQrXDQsXHQs XDQtXHQtXDQuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHQuXDQvXHQvXDRcNjBcdFw2 MFw0XDYxXHRcNjFcNFw2Mlx0XDYyXDRcNjNcdFw2M1w0XDY0IikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHRcNjRcNFw2NVx0XDY1XDRcNjZcdFw2Nlw0XDY3XHRcNjdcNDhcdDhcNDlcdDlc NDpcdDoiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNDtcdDtcNDxcdDxcND1cdD1cND5c dD5cND9cdD9cNEBcdEBcNEFcdEFcNEJcdEJcNENcdCIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIkNcNERcdERcNEVcdEVcNEZcdEZcNEdcdEdcNEhcdEhcNElcdElcNEpcdEpcNEtcdEtcNExc dCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiTFw0TVx0TVw0Tlx0Tlw0T1x0T1w0UFx0UFw0UVx0 UVw0Ulx0Ulw0U1x0U1w0VFx0VFw0VVx0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiVVw0 Vlx0Vlw0V1x0V1w0WFx0WFw0WVx0WVw0Wlx0Wlw0W1x0W1w0XFxcdFxcXDRdXHRdXDQiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJeXHReXDRfXHRfXDRgXHRgXDRhXHRhXDRiXHRiXDRjXHRj XDRkXHRkXDRlXHRlXDRmXHRmXDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJnXHRnXDRo XHRoXDRpXHRpXDRqXHRqXDRrXHRrXDRsXHRsXDRtXHRtXDRuXHRuXDRvXHRvXDQiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJwXHRwXDRxXHRxXDRyXHRyXDRzXHRzXDR0XHR0XDR1XHR1XDR2 XHR2XDR3XHR3XDR4XHR4XDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ5XHR5XDR6XHR6 XDR7XHR7XDR8XHR8XDR9XHR9XDR+XHR+XDRcMTc3XHRcMTc3XDRcdTAwODAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx0XHUwMDgwXDRcdTAwODFcdFx1MDA4MVw0XHUwMDgyXHRcdTAwODJcNFx1 MDA4M1x0XHUwMDgzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDA4NFx0XHUwMDg0XDRc dTAwODVcdFx1MDA4NVw0XHUwMDg2XHRcdTAwODZcNFx1MDA4NyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHRcdTAwODdcNFx1MDA4OFx0XHUwMDg4XDRcdTAwODlcdFx1MDA4OVw0XHUwMDhhXHRc dTAwOGEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMDhiXHRcdTAwOGJcNFx1MDA4Y1x0 XHUwMDhjXDRcdTAwOGRcdFx1MDA4ZFw0XHUwMDhlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dFx1MDA4ZVw0XHUwMDhmXHRcdTAwOGZcNFx1MDA5MFx0XHUwMDkwXDRcdTAwOTFcdFx1MDA5MSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwOTJcdFx1MDA5Mlw0XHUwMDkzXHRcdTAwOTNc NFx1MDA5NFx0XHUwMDk0XDRcdTAwOTUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMDk1 XDRcdTAwOTZcdFx1MDA5Nlw0XHUwMDk3XHRcdTAwOTdcNFx1MDA5OFx0XHUwMDk4IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcNFx1MDA5OVx0XHUwMDk5XDRcdTAwOWFcdFx1MDA5YVw0XHUwMDli XHRcdTAwOWJcNFx1MDA5YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwOWNcNFx1MDA5 ZFx0XHUwMDlkXDRcdTAwOWVcdFx1MDA5ZVw0XHUwMDlmXHRcdTAwOWYiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw0XHUwMGEwXHRcdTAwYTBcNFx1MDBhMVx0XHUwMGExXDRcdTAwYTJcdFx1MDBh Mlw0XHUwMGEzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBhM1w0XHUwMGE0XHRcdTAw YTRcNFx1MDBhNVx0XHUwMGE1XDRcdTAwYTZcdFx1MDBhNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDRcdTAwYTdcdFx1MDBhN1w0XHUwMGE4XHRcdTAwYThcNFx1MDBhOVx0XHUwMGE5XDRcdTAw YWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGFhXDRcdTAwYWJcdFx1MDBhYlw0XHUw MGFjXHRcdTAwYWNcNFx1MDBhZFx0XHUwMGFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1 MDBhZVx0XHUwMGFlXDRcdTAwYWZcdFx1MDBhZlw0XHUwMGIwXHRcdTAwYjBcNFx1MDBiMSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwYjFcNFx1MDBiMlx0XHUwMGIyXDRcdTAwYjNcdFx1 MDBiM1w0XHUwMGI0XHRcdTAwYjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMGI1XHRc dTAwYjVcNFx1MDBiNlx0XHUwMGI2XDRcdTAwYjdcdFx1MDBiN1w0XHUwMGI4IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdFx1MDBiOFw0XHUwMGI5XHRcdTAwYjlcNFx1MDBiYVx0XHUwMGJhXDRc dTAwYmJcdFx1MDBiYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwYmNcdFx1MDBiY1w0 XHUwMGJkXHRcdTAwYmRcNFx1MDBiZVx0XHUwMGJlXDRcdTAwYmYiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx0XHUwMGJmXDRcdTAwYzBcdFx1MDBjMFw0XHUwMGMxXHRcdTAwYzFcNFx1MDBjMlx0 XHUwMGMyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBjM1x0XHUwMGMzXDRcdTAwYzRc dFx1MDBjNFw0XHUwMGM1XHRcdTAwYzVcNFx1MDBjNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHRcdTAwYzZcNFx1MDBjN1x0XHUwMGM3XDRcdTAwYzhcdFx1MDBjOFw0XHUwMGM5XHRcdTAwYzki KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMGNhXHRcdTAwY2FcNFx1MDBjYlx0XHUwMGNi XDRcdTAwY2NcdFx1MDBjY1w0XHUwMGNkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBj ZFw0XHUwMGNlXHRcdTAwY2VcNFx1MDBjZlx0XHUwMGNmXDRcdTAwZDBcdFx1MDBkMCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwZDFcdFx1MDBkMVw0XHUwMGQyXHRcdTAwZDJcNFx1MDBk M1x0XHUwMGQzXDRcdTAwZDQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGQ0XDRcdTAw ZDVcdFx1MDBkNVw0XHUwMGQ2XHRcdTAwZDZcNFx1MDBkN1x0XHUwMGQ3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcNFx1MDBkOFx0XHUwMGQ4XDRcdTAwZDlcdFx1MDBkOVw0XHUwMGRhXHRcdTAw ZGFcNFx1MDBkYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwZGJcNFx1MDBkY1x0XHUw MGRjXDRcdTAwZGRcdFx1MDBkZFw0XHUwMGRlXHRcdTAwZGUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw0XHUwMGRmXHRcdTAwZGZcNFx1MDBlMFx0XHUwMGUwXDRcdTAwZTFcdFx1MDBlMVw0XHUw MGUyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBlMlw0XHUwMGUzXHRcdTAwZTNcNFx1 MDBlNFx0XHUwMGU0XDRcdTAwZTVcdFx1MDBlNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRc dTAwZTZcdFx1MDBlNlw0XHUwMGU3XHRcdTAwZTdcNFx1MDBlOFx0XHUwMGU4XDRcdTAwZTkiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGU5XDRcdTAwZWFcdFx1MDBlYVw0XHUwMGViXHRc dTAwZWJcNFx1MDBlY1x0XHUwMGVjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBlZFx0 XHUwMGVkXDRcdTAwZWVcdFx1MDBlZVw0XHUwMGVmXHRcdTAwZWZcNFx1MDBmMCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx0XHUwMGYwXDRcdTAwZjFcdFx1MDBmMVw0XHUwMGYyXHRcdTAw ZjJcNFx1MDBmM1x0XHUwMGYzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwZjRc dFx1MDBmNFw0XHUwMGY1XHRcdTAwZjVcNFx1MDBmNlx0XHUwMGY2XDRcdTAwZjciKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBmN1w0XHUwMGY4XHRcdTAwZjhcNFx1MDBmOVx0XHUw MGY5XDRcdTAwZmFcdFx1MDBmYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0XHUwMGZi XHRcdTAwZmJcNFx1MDBmY1x0XHUwMGZjXDRcdTAwZmRcdFx1MDBmZFw0XHUwMGZlIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBmZVw0XHUwMGZmXHRcdTAwZmZcNFx1MDEwMFx0XHUwMTAw XDRcdTAxMDFcdFx1MDEwMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcM1wyXDNc MlwzXDJcM1wyXDNcM1wzXDNcM1wzXDNcM1wzXDNcM1w0XDNcNFwzXDRcMyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlw0XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w2XDNc NlwzXDZcM1w2XDNcNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDdcM1w3XDNcYlwz XGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcMyIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlxiXDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwz XHRcM1xuXDNcbiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXG5cM1xuXDNcblwzXG5c M1xuXDNcblwzXG5cM1xuXDNcblwzXDEzXDNcMTNcM1wxM1wzIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXGZcM1xmXDNcZlwzXHJcM1xyXDNcMTZcM1wxNlwzXDE3XDNcMTdcM1wyMFwzXDIw XDNcMjAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyMFwzXDIwXDNcMjBcM1wyMFwz XDIxXDNcMjFcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMjJcM1wyMlwzXDIyXDNcMjNcM1wyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDNcMjNc M1wyMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDIzXDNcMjRcM1wyNFwzXDI0XDNc MjRcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcM1wyNFwzXDI0XDNcMjVcM1wyNVwzXDI2XDNcMjZcM1wyN1wzXDI3XDNcMzBcM1wzMFwz XDMxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzFcM1wzMlwzXDMyXDNcMzNcM1wz M1wzXDM0XDNcMzRcM1wzNVwzXDM1XDNcMzZcM1wzNiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlwzXDM3XDNcMzdcMyBcMyBcMyFcMyFcMyFcM1wiXDNcIlwzXCJcMyNcMyNcMyNcMyRcMyRc MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIiVcMyVcMyVcMyZcMyZcM1wnXDNcJ1wzKFwz KFwzKVwzKVwzKVwzKVwzKVwzKVwzKVwzKVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi KVwzKVwzKVwzKlwzKlwzKlwzKlwzKlwzKlwzKlwzKlwzK1wzK1wzK1wzK1wzK1wzK1wzK1wzIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiK1wzK1wzK1wzLFwzLFwzLFwzLFwzLFwzLFwzLFwz LFwzLFwzLFwzLFwzLVwzLVwzLVwzLVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiLVwz LVwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzL1wzL1wzL1wzL1wzL1wzL1wzXDYwXDNcNjAiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1w2MFwzXDYwXDNcNjBcM1w2MFwzXDYwXDNcNjBcM1w2 MFwzXDYxXDNcNjFcM1w2MVwzXDYxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcNjFc M1w2MVwzXDYxXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2MiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjNcM1w2M1wzXDYz XDNcNjNcM1w2M1wzXDYzXDNcNjMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1w2M1wz XDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDY0XDNcNjRcM1w2NFwzXDY0IikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NVwzXDY1XDNcNjVc M1w2NVwzXDY1XDNcNjVcM1w2NSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDY1XDNc NjZcM1w2NlwzXDY2XDNcNjZcM1w2NlwzXDY3XDNcNjdcM1w2N1wzXDY3XDNcNjciKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcM1w2N1wzXDY3XDNcNjdcMzhcMzhcMzhcMzhcMzhcMzhcMzhc MzhcMzhcMzlcMzlcMzlcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIjlcMzlcMzlcMzlc MzlcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMztcMztcMztcMztcMyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIjtcMztcMztcMztcMztcMztcMztcMztcMzxcMzxcMzxcMzxcMzxcMz1c Mz1cMz1cMz1cMz1cMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiPlwzPlwzPlwzPlwzPlwzPlwz PlwzP1wzP1wzP1wzP1wzP1wzP1wzQFwzQFwzQFwzQFwzQFwzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNCXDNCXDNCXDNCXDNCXDNDXDNDXDNDXDNDXDND XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkNcM0RcM0RcM0RcM0RcM0VcM0VcM0VcM0VcM0Vc M0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiR1wzR1wz R1wzR1wzR1wzSFwzSFwzSFwzSFwzSFwzSFwzSFwzSVwzSVwzSVwzSVwzSVwzSVwzIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiSVwzSlwzSlwzSlwzSlwzSlwzSlwzSlwzSlwzSlwzSlwzS1wz S1wzS1wzS1wzS1wzS1wzTFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJMXDNMXDNMXDNMXDNM XDNMXDNMXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNOXA0KPiAzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNO XDNOXDNPXDNPXDMiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJPXDNPXDNPXDNPXDNPXDNQ XDNQXDNQXDNQXDNQXDNQXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlFcM1JcM1JcM1JcM1JcM1JcM1JcM1JcM1NcM1NcM1NcM1NcM1NcM1NcM1NcM1RcM1Rc M1RcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiVFwzVFwzVFwzVFwzVVwzVVwzVVwzVVwzVVwz VVwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJWXDNW XDNWXDNWXDNWXDNWXDNXXDNXXDNXXDNXXDNXXDNXXDNXXDNXXDNXXDNXXDNXXA0KPiAzV1wzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJXXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNY XDNYXDNYXDNZXDNZXDNZXDNZXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJZXDNZXDNZ XDNZXDNZXDNZXDNZXDNZXDNaXDNaXDNaXDNaXDNaXDNbXDNbXDNbXDNbXDNbXDMiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJbXDNbXDNbXDNbXDNcXFwzXFxcM1xcXDNcXFwzXFxcM1xcXDNc XFwzXFxcM1xcXDNcXFwzXFwiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1xcXDNdXDNd XDNdXDNdXDNdXDNdXDNdXDNdXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDMiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJeXDNeXDNeXDNfXDNfXDNfXDNfXDNfXDNfXDNfXDNfXDNgXDNgXDNg XDNgXDNgXDNgXDNgXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJgXDNhXDNhXDNhXDNh XDNhXDNiXDNiXDNiXDNiXDNiXDNiXDNiXDNiXDNjXDNjXDNjXDNjXDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoImNcM2NcM2NcM2NcM2NcM2RcM2RcM2RcM2RcM2RcM2RcM2RcM2RcM2RcM2RcM2Rc M2RcM2VcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2VcM2Zc M2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2dcM2dcMyIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoImdcM2dcM2dcM2dcM2dcM2dcM2hcM2hcM2hcM2hcM2hcM2hcM2hcM2hcM2lcM2lcM2lc M2lcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoImlcM2lcM2lcM2lcM2lcM2pcM2pcM2pc M2pcM2pcM2pcM2pcM2pcM2pcM2pcM2pcM2tcM2tcMyIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoImtcM2tcM2tcM2tcM2tcM2tcM2tcM2tcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM21cM21cM21c MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgibVwzbVwzblwzblwzblwzblwzblwzblwzblwzblwz blwzblwzblwzblwzb1wzb1wzb1wzb1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJvXDNvXDNv XDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNwXDNwXDNwXDNwXDNwXDNwXDNwXDMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoInBcM3BcM3BcM3FcM3FcM3FcM3FcM3FcM3FcM3FcM3FcM3FcM3FcM3Fc M3JcM3JcM3JcM3JcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInJcM3JcM3NcM3NcM3Nc M3NcM3RcM3RcM3RcM3RcM3RcM3RcM3RcM3RcM3VcM3VcM3VcM3VcMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgidVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdlwzdlwzdlwzdlwzdlwzdlwz dlwzdlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2 XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIndc M3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3hcM3hcM3hcM3hcM3hcM3hcMyINCj4g KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ4XDN4XDN4XDN4XDN4XDN4XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN6XDN6XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ6 XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN7XDN7XDN7XDN7XDN7XDMiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7 XDN7XDN7XDN7XDN8XDN8XDN8XDN8XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ8XDN8 XDN8XDN8XDN8XDN8XDN8XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN+XDMiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJ+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+ XDNcMTc3XDNcMTc3XDNcMTc3XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxNzdcM1wxNzdc M1wxNzdcM1wxNzdcM1wxNzdcM1wxNzdcM1wxNzdcM1wxNzdcM1x1MDA4MCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwODBcM1x1MDA4MFwzXHUwMDgwXDNcdTAwODBcM1x1MDA4MFwzXHUw MDgxXDNcdTAwODEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDgxXDNcdTAwODFcM1x1 MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1 MDA4MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNc dTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMDgzXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwz XHUwMDg0XDNcdTAwODVcM1x1MDA4NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODVc M1x1MDA4NVwzXHUwMDg1XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZc M1x1MDA4N1wzXHUwMDg3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4N1wzXHUwMDg3 XDNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODhcM1x1MDA4OCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OVwzXHUwMDg5 XDNcdTAwODkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDg5XDNcdTAwODlcM1x1MDA4 YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDA4YVwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4 YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1MDA4Y1wzXHUwMDhjXDNcdTAw OGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MDhkXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZlwzXHUw MDhmXDNcdTAwOGZcM1x1MDA4ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGZcM1x1 MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDkwXDNcdTAwOTAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1 MDA5MFwzXHUwMDkwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5MFwzXHUwMDkwXDNc dTAwOTFcM1x1MDA5MVwzXHUwMDkxXDNcdTAwOTFcM1x1MDA5MSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwOTFcM1x1MDA5MlwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkyXDNc dTAwOTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDkyXDNcdTAwOTNcM1x1MDA5M1wz XHUwMDkzXDNcdTAwOTNcM1x1MDA5M1wzXHUwMDk0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOTVcM1x1MDA5NVwzXHUwMDk1XDNcdTAwOTVc M1x1MDA5NVwzXHUwMDk1XDNcdTAwOTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDk2 XDNcdTAwOTZcM1x1MDA5NlwzXHUwMDk2XDNcdTAwOTdcM1x1MDA5N1wzXHUwMDk3IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5N1wzXHUwMDk3XDNcdTAwOTdcM1x1MDA5OFwzXHUwMDk4 XDNcdTAwOThcM1x1MDA5OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOThcM1x1MDA5 OFwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOTgiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXHUwMDk4XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5 OVwzXHUwMDk5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5OVwzXHUwMDk5XDNcdTAw OTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwOTlcM1x1MDA5OVwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAw OWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUw MDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDA5YVwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1 MDA5Y1wzXHUwMDljXDNcdTAwOWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDljXDNc dTAwOWNcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDlkIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNc dTAwOWRcM1x1MDA5ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWRcM1x1MDA5ZFwz XHUwMDlkXDNcdTAwOWRcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWVcM1x1MDA5Zlwz XHUwMDlmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZc M1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWYi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDlmXDNcdTAwOWZcM1x1MDBhMFwzXHUwMGEw XDNcdTAwYTBcM1x1MDBhMFwzXHUwMGEwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBh MFwzXHUwMGEwXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGEyXDNcdTAwYTJcM1x1MDBh MlwzXHUwMGEyXDNcdTAwYTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGEyXDNcdTAw YTJcM1x1MDBhMlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhM1wzXHUwMGEzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAw YTNcM1x1MDBhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTRcM1x1MDBhNFwzXHUw MGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMGE0XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUw MGE1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1 MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwYTVcM1x1MDBhNVwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhN1wzXHUwMGE3XDNc dTAwYTdcM1x1MDBhN1wzXHUwMGE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhN1wz XHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYThcM1x1MDBhOCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwz XHUwMGE4XDNcdTAwYTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE5XDNcdTAwYTlc M1x1MDBhOVwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhYVwzXHUwMGFhIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFiXDNcdTAwYWJc M1x1MDBhYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFi XDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGFiXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFj IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBh Y1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWQiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAw YWRcM1x1MDBhZVwzXHUwMGFlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhZVwzXHUw MGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUw MGFlXDNcdTAwYWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGFmXDNcdTAwYWZcM1x1 MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYjBcM1x1 MDBiMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNc dTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwz XHUwMGIxXDNcdTAwYjFcM1x1MDBiMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjFc M1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIyXDNcdTAwYjIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJc M1x1MDBiMlwzXHUwMGIyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiMlwzXHUwMGIy XDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIz XDNcdTAwYjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBi M1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBi MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjNcM1x1MDBiNFwzXHUwMGI0XDNcdTAw YjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNVwzXHUwMGI1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUw MGI1XDNcdTAwYjVcM1x1MDBiNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjVcM1x1 MDBiNVwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjYiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1 MDBiNlwzXHUwMGI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiNlwzXHUwMGI2XDNc dTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNc dTAwYjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wz XHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI5XDNcdTAwYjlc M1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGI5 XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJh XDNcdTAwYmFcM1x1MDBiYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmFcM1x1MDBi YVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmJcM1x1MDBi YlwzXHUwMGJiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiYlwzXHUwMGJiXDNcdTAw YmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYiINCj4gKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwz XHUwMGJjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNc M1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJk XDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmUiDQo+ ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBi ZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAw YmZcM1x1MDBiZlwzXHUwMGJmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjMFwzXHUw MGMwXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYzBcM1x1MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMVwzXHUw MGMxXDNcdTAwYzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGMyXDNcdTAwYzJcM1x1 MDBjMlwzXHUwMGMyXDNcdTAwYzNcM1x1MDBjM1wzXHUwMGMzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBjM1wzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1 MDBjNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNc dTAwYzVcM1x1MDBjNVwzXHUwMGM2XDNcdTAwYzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGM2XDNcdTAwYzZcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wz XHUwMGM4XDNcdTAwYzhcM1x1MDBjOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzhc M1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzkiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2Fc M1x1MDBjYVwzXHUwMGNhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjYVwzXHUwMGNh XDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNi XDNcdTAwY2IiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGNjXDNcdTAwY2NcM1x1MDBj Y1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2RcM1x1MDBj ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNkXDNcdTAw Y2RcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2UiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGNlXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNlIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2ZcM1x1MDBjZlwzXHUw MGNmXDNcdTAwY2ZcM1x1MDBjZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwY2ZcM1x1 MDBjZlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDBcM1x1 MDBkMFwzXHUwMGQxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkMVwzXHUwMGQxXDNc dTAwZDFcM1x1MDBkMlwzXHUwMGQyXDNcdTAwZDJcM1x1MDBkMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwZDJcM1x1MDBkM1wzXHUwMGQzXDNcdTAwZDNcM1x1MDBkM1wzXHUwMGQzXDNc dTAwZDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGQ0XDNcdTAwZDRcM1x1MDBkNFwz XHUwMGQ0XDNcdTAwZDVcM1x1MDBkNVwzXHUwMGQ1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDBkNVwzXHUwMGQ1XDNcdTAwZDZcM1x1MDBkNlwzXHUwMGQ2XDNcdTAwZDZcM1x1MDBkNiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdc M1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGQ3 XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ4XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkOFwzXHUwMGQ4XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ5 XDNcdTAwZDlcM1x1MDBkOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDlcM1x1MDBk OVwzXHUwMGQ5XDNcdTAwZDlcM1x1MDBkYVwzXHUwMGRhXDNcdTAwZGEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXHUwMGRhXDNcdTAwZGJcM1x1MDBkYlwzXHUwMGRiXDNcdTAwZGNcM1x1MDBk Y1wzXHUwMGRjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkY1wzXHUwMGRkXDNcdTAw ZGRcM1x1MDBkZFwzXHUwMGRkXDNcdTAwZGVcM1x1MDBkZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAw ZGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGRmXDNcdTAwZTBcM1x1MDBlMFwzXHUw MGUwXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDBlMFwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1 MDBlMVwzXHUwMGUxXDNcdTAwZTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGUyXDNc dTAwZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBlM1wzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzXDNc dTAwZTNcM1x1MDBlMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTNcM1x1MDBlNFwz XHUwMGU0XDNcdTAwZTRcM1x1MDBlNFwzXHUwMGU0XDNcdTAwZTQiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwz XHUwMGU1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBlNlwzXHUwMGU2XDNcdTAwZTZc M1x1MDBlNlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTci KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3 XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBl N1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBl OFwzXHUwMGU4XDNcdTAwZTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGU4XDNcdTAw ZThcM1x1MDBlOVwzXHUwMGU5XDNcdTAwZTlcM1x1MDBlOVwzXHUwMGVhIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhXDNcdTAw ZWFcM1x1MDBlYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWFcM1x1MDBlYVwzXHUw MGVhXDNcdTAwZWFcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUw MGViIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWJcM1x1 MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGVjXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNc dTAwZWRcM1x1MDBlZFwzXHUwMGVkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBlZFwz XHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwz XHUwMGVkXDNcdTAwZWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGVkXDNcdTAwZWRc M1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVc M1x1MDBlZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVl XDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVm IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBl ZlwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw ZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAw ZjBcM1x1MDBmMVwzXHUwMGYxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmMVwzXHUw MGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUw MGYxXDNcdTAwZjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGYyXDNcdTAwZjJcM1x1 MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1 MDBmMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjJcM1x1MDBmM1wzXHUwMGYzXDNc dTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wz XHUwMGY0XDNcdTAwZjRcM1x1MDBmNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjRc M1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRc M1x1MDBmNFwzXHUwMGY0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmNVwzXHUwMGY1 XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY2 XDNcdTAwZjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGY2XDNcdTAwZjZcM1x1MDBm NlwzXHUwMGY2XDNcdTAwZjZcM1x1MDBmNlwzXHUwMGY2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDBmNlwzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBm NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAw ZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGY3XDNcdTAwZjdcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUw MGY4XDNcdTAwZjhcM1x1MDBmOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjhcM1x1 MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOVwzXHUwMGY5XDNcdTAwZjkiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDBmOVw2XHUwMGY5XHUwYTQ0XG5cdTAwZjlcclx1MDBmOVwx Nlx1MDBmOVx1MGE0NSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXHUwMGY5XDZcdTAw ZjlcdTBhNDlcblx1MDBmOVxyXHUwMGY5XDE2XHUwMGY5XHUwYTRhIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcNVx1MDBmOVx1MGE0ZFxuXHUwMGY5XDNcdTAwZmFcM1x1MDBmYVw3XHUwMGZhXHUw YTUxXG4iKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcZlx1MDBmYVwxNlx1MDBm YVx1MGE1NFwxM1x1MDBmYVwzXHUwMGZiXDNcdTAwZmIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcNVx1MDBmYlx1MGE1OFxuXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiXDNcdTAw ZmIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmYlwzXHUwMGZiXDNcdTAwZmJc M1x1MDBmYlw3XHUwMGZiXHUwYTYyXG5cdTAwZmIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxm XHUwMGZiXDE2XHUwMGZiXHUwYTY1XDEzXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZjIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZmNcNVx1MDBmY1x1MGE2YlxuXHUwMGZj XDNcdTAwZmNcM1x1MDBmY1wzXHUwMGZjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwZmNcM1x1MDBmY1wzXHUwMGZjXDdcdTAwZmNcdTBhNzNcblx1MDBmY1xmXHUwMGZjIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMTZcdTAwZmNcdTBhNzZcMTNcdTAwZmNcM1x1MDBmY1wzXHUw MGZjXDNcdTAwZmRcM1x1MDBmZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw1XHUwMGZk XHUwYTdjXG5cdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAw ZmRcN1x1MDBmZFx1MGE4NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXG5cdTAwZmRcZlx1MDBm ZFwxNlx1MDBmZFx1MGE4YVwxM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmQiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBmZVw2XHUwMGZlXHUwYThmXG5cdTAwZmVcclx1MDBmZVwxNlx1 MDBmZVx1MGE5MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXHUwMGZlXDNcdTAwZmVc M1x1MDBmZlwzXHUwMGZmXDVcdTAwZmZcdTBhOTdcblx1MDBmZiIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwzXHUwMGZmXDVcdTAwZmZcdTBhOWFcblx1MDBmZlwzXHUwMGZmXDNcdTAwZmZc M1x1MDEwMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAxMDBcM1x1MDEwMFwzXHUwMTAw XDdcdTAxMDBcdTBhYTJcblx1MDEwMFxmXHUwMTAwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MTZcdTAxMDBcdTBhYTVcMTNcdTAxMDBcM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDFcM1x1MDEwMSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAxMDFcM1x1MDEwMVwzXHUwMTAxXDNcdTAxMDFc M1x1MDEwMVwzXHUwMTAxXDdcdTAxMDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFiMVxu XHUwMTAxXGZcdTAxMDFcMTZcdTAxMDFcdTBhYjRcMTNcdTAxMDFcM1x1MDEwMSIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwzXHUwMTAxXDJcMlx1MDEwMlwzXDNcNVw0XDdcNVx0XDZcMTNc N1xyXGJcMTdcdFwyMVxuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDIzXDEzXDI1XGZc MjdcclwzMVwxNlwzM1wxN1wzNVwyMFwzN1wyMSFcMjIjXDIzJVwyNFwnIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDI1KVwyNitcMjctXDMwL1wzMVw2MVwzMlw2M1wzM1w2NVwzNFw2N1wz NTlcMzY7XDM3PSAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCI/IUFcIkMjRSRHJUkmS1wn TShPKVEqUytVLFctDQo+IFkuWy9dXDYwX1w2MWFcNjJjXDYzZVw2NGciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw2NWlcNjZrXDY3bThvOXE6czt1PHc9eT57P31AXDE3N0FcdTAwODFCXHUwMDgz Q1x1MDA4NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiRFx1MDA4N0VcdTAwODlGXHUwMDhiR1x1 MDA4ZEhcdTAwOGZJXHUwMDkxSlx1MDA5M0tcdTAwOTUiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJMXHUwMDk3TVx1MDA5OU5cdTAwOWJPXHUwMDlkUFx1MDA5ZlFcdTAwYTFSXHUwMGEzU1x1 MDBhDQo+IDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlRcdTAwYTdVXHUwMGE5Vlx1MDBhYldc dTAwYWRYXHUwMGFmWVx1MDBiMVpcdTAwYjNbXHUwMGI1DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXFxcdTAwYjddXHUwMGI5Xlx1MDBiYl9cdTAwYmRgXHUwMGJmYVx1MDBjMWJcdTAwYzNj XHUwMGM1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJkXHUwMGM3ZVx1MDBjOWZcdTAwY2JnXHUw MGNkaFx1MDBjZmlcdTAwZDFqXHUwMGQza1x1MDBkNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi bFx1MDBkN21cdTAwZDluXHUwMGRib1x1MDBkZHBcdTAwZGZxXHUwMGUxclx1MDBlM3NcdTAwZTUN Cj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ0XHUwMGU3dVx1MDBlOXZcdTAwZWJ3XHUwMGVk eFx1MDBlZnlcdTAwZjF6XHUwMGYze1x1MDBmNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgifFx1 MDBmN31cdTAwZjl+XHUwMGZiXDE3N1x1MDBmZFx1MDA4MFx1MDBmZlx1MDA4MVx1MDEwMSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDgyXHUwMTAzXHUwMDgzXHUwMTA1XHUwMDg0XHUwMTA3 XHUwMDg1XHUwMTA5XHUwMDg2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMGJcdTAwODdc dTAxMGRcdTAwODhcdTAxMGZcdTAwODlcdTAxMTFcdTAwOGFcdTAxMTMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDA4Ylx1MDExNVx1MDA4Y1x1MDExN1x1MDA4ZFx1MDExOVx1MDA4ZVx1MDEx Ylx1MDA4ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTFkXHUwMDkwXHUwMTFmXHUwMDkx XHUwMTIxXHUwMDkyXHUwMTIzXHUwMDkzXHUwMTI1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwOTRcdTAxMjdcdTAwOTVcdTAxMjlcdTAwOTZcdTAxMmJcdTAwOTdcdTAxMmRcdTAwOTgiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEyZlx1MDA5OVx1MDEzMVx1MDA5YVx1MDEzM1x1MDA5 Ylx1MDEzNVx1MDA5Y1x1MDEzNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDlkXHUwMTM5 XHUwMDllXHUwMTNiXHUwMDlmXHUwMTNkXHUwMGEwXHUwMTNmXHUwMGExIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAxNDFcdTAwYTJcdTAxNDNcdTAwYTNcdTAxNDVcdTAwYTRcdTAxNDdcdTAw YTVcdTAxNDkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhNlx1MDE0Ylx1MDBhN1x1MDE0 ZFx1MDBhOFx1MDE0Zlx1MDBhOVx1MDE1MVx1MDBhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMTUzXHUwMGFiXHUwMTU1XHUwMGFjXHUwMTU3XHUwMGFkXHUwMTU5XHUwMGFlXHUwMTViIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYWZcdTAxNWRcdTAwYjBcdTAxNWZcdTAwYjFcdTAx NjFcdTAwYjJcdTAxNjNcdTAwYjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE2NVx1MDBi NFx1MDE2N1x1MDBiNVx1MDE2OVx1MDBiNlx1MDE2Ylx1MDBiN1x1MDE2ZCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMGI4XHUwMTZmXHUwMGI5XHUwMTcxXHUwMGJhXHUwMTczXHUwMGJiXHUw MTc1XHUwMGJjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNzdcdTAwYmRcdTAxNzlcdTAw YmVcdTAxN2JcdTAwYmZcdTAxN2RcdTAwYzBcdTAxN2YiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDBjMVx1MDE4MVx1MDBjMlx1MDE4M1x1MDBjM1x1MDE4NVx1MDBjNFx1MDE4N1x1MDBjNSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTg5XHUwMGM2XHUwMThiXHUwMGM3XHUwMThkXHUw MGM4XHUwMThmXHUwMGM5XHUwMTkxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwY2FcdTAx OTNcdTAwY2JcdTAxOTVcdTAwY2NcdTAxOTdcdTAwY2RcdTAxOTlcdTAwY2UiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDE5Ylx1MDBjZlx1MDE5ZFx1MDBkMFx1MDE5Zlx1MDBkMVx1MDFhMVx1 MDBkMlx1MDFhMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGQzXHUwMWE1XHUwMGQ0XHUw MWE3XHUwMGQ1XHUwMWE5XHUwMGQ2XHUwMWFiXHUwMGQ3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTAxYWRcdTAwZDhcdTAxYWZcdTAwZDlcdTAxYjFcdTAwZGFcdTAxYjNcdTAwZGJcdTAxYjUi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBkY1x1MDFiN1x1MDBkZFx1MDFiOVx1MDBkZVx1 MDFiYlx1MDBkZlx1MDFiZFx1MDBlMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWJmXHUw MGUxXHUwMWMxXHUwMGUyXHUwMWMzXHUwMGUzXHUwMWM1XHUwMGU0XHUwMWM3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAwZTVcdTAxYzlcdTAwZTZcdTAxY2JcdTAwZTdcdTAxY2RcdTAwZThc dTAxY2ZcdTAwZTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFkMVx1MDBlYVx1MDFkM1x1 MDBlYlx1MDFkNVx1MDBlY1x1MDFkN1x1MDBlZFx1MDFkOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMGVlXHUwMWRiXHUwMGVmXHUwMWRkXHUwMGYwXHUwMWRmXHUwMGYxXHUwMWUxXHUwMGYy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxZTNcdTAwZjNcdTAxZTVcdTAwZjRcdTAxZTdc dTAwZjVcdTAxZTlcdTAwZjZcdTAxZWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBmN1x1 MDFlZFx1MDBmOFx1MDFlZlx1MDBmOVx1MDFmMVx1MDBmYVx1MDFmM1x1MDBmYiIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDFmNVx1MDBmY1x1MDFmN1x1MDBmZFx1MDFmOVx1MDBmZVx1 MDFmYlx1MDBmZlx1MDFmZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTAwXHUwMWZmXHUw MTAxXHUwMjAxXHUwMTAyXDNcMlx0XDVcMlw2MjtDSGNoXDNcMlw2MiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIjtcNVwyQ1xcYWFjfFw2XDJcNjI7Q1xcYWFjfFw1XDJcZlxmXDE3XDE3JSVc NFwyXDEzXDEzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXCJcIlw0XDJcZlxmXDE3XDE3 XDJcdTBhYzVcMlwzXDNcMlwyXDJcMlw1XDNcMlwyXDJcMlw3IikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcMlx0XDNcMlwyXDJcMlwxM1wzXDJcMlwyXDJcclwzXDJcMlwyXDJc MTdcM1wyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXDIxXDNcMlwyXDJcMlwy M1wzXDJcMlwyXDJcMjVcM1wyXDJcMlwyXDI3XDNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwzMVwzXDJcMlwyXDJcMzNcM1wyXDJcMlwyXDM1XDNcMlwyXDJcMlwzN1wzXDJc MlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDIhXDNcMlwyXDJcMiNcM1wyXDJcMlwy JVwzXDJcMlwyXDJcJ1wzXDJcMlwyXDIpXDNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMitcM1wyXDJcMlwyLVwzXDJcMlwyXDIvXDNcMlwyXDJcMlw2MVwzXDJcMlwyXDJcNjMi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXDY1XDNcMlwyXDJcMlw2N1wz XDJcMlwyXDI5XDNcMlwyXDJcMjtcM1wyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc MlwyPVwzXDJcMlwyXDI/XDNcMlwyXDJcMkFcM1wyXDJcMlwyQ1wzXDJcMlwyXDJFXDNcMiIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMkdcM1wyXDJcMlwySVwzXDJcMlwyXDJLXDNc MlwyXDJcMk1cM1wyXDJcMlwyT1wzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwy XDJRXDNcMlwyXDJcMlNcM1wyXDJcMlwyVVwzXDJcMlwyXDJXXDNcMlwyXDJcMlkiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyW1wzXDJcMlwyXDJdXDNcMlwyXDJcMl9cM1wy XDJcMlwyYVwzXDJcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJjXDNcMlwyXDJc MmVcM1wyXDJcMlwyZ1wzXDJcMlwyXDJpXDNcMlwyXDJcMmtcM1wyXDJcMiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwybVwzXDJcMlwyXDJvXDNcMlwyXDJcMnFcM1wyXDJcMlwyc1wzXDJc MlwyXDJ1XDNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMndcM1wyXDJcMlwy eVwzXDJcMlwyXDJ7XDNcMlwyXDJcMn1cM1wyXDJcMlwyXDE3N1wzIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXDJcdTAwODFcM1wyXDJcMlwyXHUwMDgzXDNcMlwyXDJcMlx1MDA4 NVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDA4N1wzXDJcMlwyXDJcdTAw ODlcM1wyXDJcMlwyXHUwMDhiXDNcMlwyXDJcMlx1MDA4ZCIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXDJcdTAwOGZcM1wyXDJcMlwyXHUwMDkxXDNcMlwyXDJcMlx1MDA5M1wz XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDA5NVwzXDJcMlwyXDJcdTAwOTdc M1wyXDJcMlwyXHUwMDk5XDNcMlwyXDJcMlx1MDA5YiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAwOWRcM1wyXDJcMlwyXHUwMDlmXDNcMlwyXDJcMlx1MDBhMVwzXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBhM1wzXDJcMlwyXDJcdTAwYTVcM1wy XDJcMlwyXHUwMGE3XDNcMlwyXDJcMlx1MDBhOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXDJcdTAwYWJcM1wyXDJcMlwyXHUwMGFkXDNcMlwyXDJcMlx1MDBhZlwzXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBiMVwzXDJcMlwyXDJcdTAwYjNcM1wyXDJc MlwyXHUwMGI1XDNcMlwyXDJcMlx1MDBiNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXDJcdTAwYjlcM1wyXDJcMlwyXHUwMGJiXDNcMlwyXDJcMlx1MDBiZFwzXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBiZlwzXDJcMlwyXDJcdTAwYzFcM1wyXDJcMlwy XHUwMGMzXDNcMlwyXDJcMlx1MDBjNSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXDJcdTAwYzdcM1wyXDJcMlwyXHUwMGM5XDNcMlwyXDJcMlx1MDBjYlwzXDJcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBjZFwzXDJcMlwyXDJcdTAwY2ZcM1wyXDJcMlwyXHUw MGQxXDNcMlwyXDJcMlx1MDBkMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XDJcdTAwZDVcM1wyXDJcMlwyXHUwMGQ3XDNcMlwyXDJcMlx1MDBkOVwzXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBkYlwzXDJcMlwyXDJcdTAwZGRcM1wyXDJcMlwyXHUwMGRm XDNcMlwyXDJcMlx1MDBlMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJc dTAwZTNcM1wyXDJcMlwyXHUwMGU1XDNcMlwyXDJcMlx1MDBlN1wzXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlx1MDBlOVwzXDJcMlwyXDJcdTAwZWJcM1wyXDJcMlwyXHUwMGVkXDNc MlwyXDJcMlx1MDBlZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAw ZjFcM1wyXDJcMlwyXHUwMGYzXDNcMlwyXDJcMlx1MDBmNVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MDBmN1wzXDJcMlwyXDJcdTAwZjlcM1wyXDJcMlwyXHUwMGZiXDNcMlwy XDJcMlx1MDBmZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZmZc M1wyXDJcMlwyXHUwMTAxXDNcMlwyXDJcMlx1MDEwM1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlx1MDEwNVwzXDJcMlwyXDJcdTAxMDdcM1wyXDJcMlwyXHUwMTA5XDNcMlwyXDJc Mlx1MDEwYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMGRcM1wy XDJcMlwyXHUwMTBmXDNcMlwyXDJcMlx1MDExMVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlx1MDExM1wzXDJcMlwyXDJcdTAxMTVcM1wyXDJcMlwyXHUwMTE3XDNcMlwyXDJcMlx1 MDExOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMWJcM1wyXDJc MlwyXHUwMTFkXDNcMlwyXDJcMlx1MDExZlwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcMlx1MDEyMVwzXDJcMlwyXDJcdTAxMjNcM1wyXDJcMlwyXHUwMTI1XDNcMlwyXDJcMlx1MDEy NyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMjlcM1wyXDJcMlwy XHUwMTJiXDNcMlwyXDJcMlx1MDEyZFwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDEyZlwzXDJcMlwyXDJcdTAxMzFcM1wyXDJcMlwyXHUwMTMzXDNcMlwyXDJcMlx1MDEzNSIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMzdcM1wyXDJcMlwyXHUw MTM5XDNcMlwyXDJcMlx1MDEzYlwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1 MDEzZFwzXDJcMlwyXDJcdTAxM2ZcM1wyXDJcMlwyXHUwMTQxXDNcMlwyXDJcMlx1MDE0MyIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNDVcM1wyXDJcMlwyXHUwMTQ3 XDNcMlwyXDJcMlx1MDE0OVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE0 YlwzXDJcMlwyXDJcdTAxNGRcM1wyXDJcMlwyXHUwMTRmXDNcMlwyXDJcMlx1MDE1MSIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNTNcM1wyXDJcMlwyXHUwMTU1XDNc MlwyXDJcMlx1MDE1N1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE1OVwz XDJcMlwyXDJcdTAxNWJcM1wyXDJcMlwyXHUwMTVkXDNcMlwyXDJcMlx1MDE1ZiIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNjFcM1wyXDJcMlwyXHUwMTYzXDNcMlwy XDJcMlx1MDE2NVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE2N1wzXDJc MlwyXDJcdTAxNjlcM1wyXDJcMlwyXHUwMTZiXDNcMlwyXDJcMlx1MDE2ZCIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNmZcM1wyXDJcMlwyXHUwMTcxXDNcMlwyXDJc Mlx1MDE3M1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE3NVwzXDJcMlwy XDJcdTAxNzdcM1wyXDJcMlwyXHUwMTc5XDNcMlwyXDJcMlx1MDE3YiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxN2RcM1wyXDJcMlwyXHUwMTdmXDNcMlwyXDJcMlx1 MDE4MVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE4M1wzXDJcMlwyXDJc dTAxODVcM1wyXDJcMlwyXHUwMTg3XDNcMlwyXDJcMlx1MDE4OSIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxOGJcM1wyXDJcMlwyXHUwMThkXDNcMlwyXDJcMlx1MDE4 ZlwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE5MVwzXDJcMlwyXDJcdTAx OTNcM1wyXDJcMlwyXHUwMTk1XDNcMlwyXDJcMlx1MDE5NyIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXDJcdTAxOTlcM1wyXDJcMlwyXHUwMTliXDNcMlwyXDJcMlx1MDE5ZFwz XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE5ZlwzXDJcMlwyXDJcdTAxYTFc M1wyXDJcMlwyXHUwMWEzXDNcMlwyXDJcMlx1MDFhNSIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAxYTdcM1wyXDJcMlwyXHUwMWE5XDNcMlwyXDJcMlx1MDFhYlwzXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFhZFwzXDJcMlwyXDJcdTAxYWZcM1wy XDJcMlwyXHUwMWIxXDNcMlwyXDJcMlx1MDFiMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXDJcdTAxYjVcM1wyXDJcMlwyXHUwMWI3XDNcMlwyXDJcMlx1MDFiOVwzXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFiYlwzXDJcMlwyXDJcdTAxYmRcM1wyXDJc MlwyXHUwMWJmXDNcMlwyXDJcMlx1MDFjMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXDJcdTAxYzNcM1wyXDJcMlwyXHUwMWM1XDNcMlwyXDJcMlx1MDFjN1wzXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFjOVwzXDJcMlwyXDJcdTAxY2JcM1wyXDJcMlwy XHUwMWNkXDNcMlwyXDJcMlx1MDFjZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXDJcdTAxZDFcM1wyXDJcMlwyXHUwMWQzXDNcMlwyXDJcMlx1MDFkNVwzXDJcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFkN1wzXDJcMlwyXDJcdTAxZDlcM1wyXDJcMlwyXHUw MWRiXDNcMlwyXDJcMlx1MDFkZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XDJcdTAxZGZcM1wyXDJcMlwyXHUwMWUxXDNcMlwyXDJcMlx1MDFlM1wzXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFlNVwzXDJcMlwyXDJcdTAxZTdcM1wyXDJcMlwyXHUwMWU5 XDNcMlwyXDJcMlx1MDFlYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJc dTAxZWRcM1wyXDJcMlwyXHUwMWVmXDNcMlwyXDJcMlx1MDFmMVwzXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlx1MDFmM1wzXDJcMlwyXDJcdTAxZjVcM1wyXDJcMlwyXHUwMWY3XDNc MlwyXDJcMlx1MDFmOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAx ZmJcM1wyXDJcMlwyXHUwMWZkXDNcMlwyXDJcMlx1MDFmZlwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MDIwMVwzXDJcMlwyXDNcdTAyMDNcM1wyXDJcMlw1XHUwMjA4XDNcMlwy XDJcN1x1MDIwZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHRcdTAyMTFc M1wyXDJcMlwxM1x1MDIxOVwzXDJcMlwyXHJcdTAyMWVcM1wyIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwxN1x1MDIyMFwzXDJcMlwyXDIxXHUwMjJjXDNcMlwyXDJcMjNcdTAyMzdc M1wyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyNVx1MDI0MlwzXDJcMlwyXDI3 XHUwMjQ1XDNcMlwyXDJcMzFcdTAyNDhcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDMzXHUwMjRhXDNcMlwyXDJcMzVcdTAyNGNcM1wyXDJcMlwzN1x1MDI0ZVwzXDJcMlwyIVx1MDI1 NSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyI1x1MDI1N1wzXDJcMlwyJVx1 MDI1ZlwzXDJcMlwyXCdcdTAyNjhcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IilcdTAyNzRcM1wyXDJcMitcdTAyNzZcM1wyXDJcMi1cdTAyNzhcM1wyXDJcMi9cdTAyN2FcMyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMlw2MVx1MDI3Y1wzXDJcMlwyXDYzXHUw MjdlXDNcMlwyXDJcNjVcdTAyODBcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDY3 XHUwMjgyXDNcMlwyXDI5XHUwMjg0XDNcMlwyXDI7XHUwMjg2XDNcMlwyXDI9XHUwMjg4IikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDI/XHUwMjhhXDNcMlwyXDJBXHUwMjhjXDNc MlwyXDJDXHUwMjhmXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkVcdTAyOTJcM1wy XDJcMkdcdTAyOTVcM1wyXDJcMklcdTAyOTdcM1wyXDJcMktcdTAyOWFcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyTVx1MDI5Y1wzXDJcMlwyT1x1MDI5ZVwzXDJcMlwyUVx1MDJhMFwz XDJcMlwyU1x1MDJhYiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyVVx1MDJi M1wzXDJcMlwyV1x1MDJiZFwzXDJcMlwyWVx1MDJjOFwzXDJcMlwyIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiW1x1MDJjZVwzXDJcMlwyXVx1MDJkNVwzXDJcMlwyX1x1MDJkYlwzXDJcMlwy YVx1MDJlNFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJjXHUwMmViXDNcMlwyXDJl XHUwMmY3XDNcMlwyXDJnXHUwMzA1XDNcMlwyXDJpXHUwMzBkIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJrXHUwMzE1XDNcMlwyXDJtXHUwMzFhXDNcMlwyXDJvXHUwMzIyXDNc MlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInFcdTAzMmJcM1wyXDJcMnNcdTAzMzNcM1wy XDJcMnVcdTAzM2NcM1wyXDJcMndcdTAzNDhcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc MlwyeVx1MDM0ZFwzXDJcMlwye1x1MDM1MlwzXDJcMlwyfVx1MDM1OVwzXDJcMlwyXDE3NyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzVmXDNcMlwyXDJcdTAwODFcdTAzNjRcM1wyXDJcMlx1 MDA4M1x1MDM2Y1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwODVcdTAzNzFc M1wyXDJcMlx1MDA4N1x1MDM3N1wzXDJcMlwyXHUwMDg5XHUwMzdiXDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDA4Ylx1MDM4MFwzXDJcMlwyXHUwMDhkXHUwMzg4XDNcMlwyXDJc dTAwOGZcdTAzOGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMDkxXHUwMzk0 XDNcMlwyXDJcdTAwOTNcdTAzOWJcM1wyXDJcMlx1MDA5NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwM2E1XDNcMlwyXDJcdTAwOTdcdTAzYWJcM1wyXDJcMlx1MDA5OVx1MDNiM1wzXDJcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOWJcdTAzYmRcM1wyXDJcMlx1MDA5ZFx1MDNj ZVwzXDJcMlwyXHUwMDlmXHUwM2Q1XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDBhMVx1MDNkYlwzXDJcMlwyXHUwMGEzXHUwM2UzXDNcMlwyXDJcdTAwYTVcdTAzZWEiDQo+ICkN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYTdcdTAzZjFcM1wyXDJcMlx1 MDBhOVx1MDNmOFwzXDJcMlwyXHUwMGFiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw M2ZlXDNcMlwyXDJcdTAwYWRcdTA0MGNcM1wyXDJcMlx1MDBhZlx1MDQxOVwzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYjFcdTA0MjZcM1wyXDJcMlx1MDBiM1x1MDQzMlwzXDJc MlwyXHUwMGI1XHUwNDM3XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBiN1x1 MDQ0MFwzXDJcMlwyXHUwMGI5XHUwNDRjXDNcMlwyXDJcdTAwYmJcdTA0NTQiDQo+ICkNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYmRcdTA0NWZcM1wyXDJcMlx1MDBiZlx1 MDQ2N1wzXDJcMlwyXHUwMGMxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDZmXDNc MlwyXDJcdTAwYzNcdTA0NzRcM1wyXDJcMlx1MDBjNVx1MDQ3Y1wzXDJcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAwYzdcdTA0ODVcM1wyXDJcMlx1MDBjOVx1MDQ5MVwzXDJcMlwyXHUw MGNiXHUwNDk4XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBjZFx1MDRhMlwz XDJcMlwyXHUwMGNmXHUwNGFhXDNcMlwyXDJcdTAwZDFcdTA0YjIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwMGQzXHUwNGJiXDNcMlwyXDJcdTAwZDVcdTA0YzZcM1wyXDJcMlx1 MDBkNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGQwXDNcMlwyXDJcdTAwZDlcdTA0ZDdc M1wyXDJcMlx1MDBkYlx1MDRkY1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAw ZGRcdTA0ZThcM1wyXDJcMlx1MDBkZlx1MDRmN1wzXDJcMlwyXHUwMGUxXHUwNTAxXDMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBlM1x1MDUwY1wzXDJcMlwyXHUwMGU1XHUwNTEy XDNcMlwyXDJcdTAwZTdcdTA1MTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw MGU5XHUwNTFlXDNcMlwyXDJcdTAwZWJcdTA1MmNcM1wyXDJcMlx1MDBlZCIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx1MDUzZFwzXDJcMlwyXHUwMGVmXHUwNTUyXDNcMlwyXDJcdTAwZjFc dTA1NWVcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGYzXHUwNTY4XDNcMlwy XDJcdTAwZjVcdTA1NzdcM1wyXDJcMlx1MDBmN1x1MDU4YVwzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXDJcdTAwZjlcdTA1OTVcM1wyXDJcMlx1MDBmYlx1MDU5ZlwzXDJcMlwyXHUwMGZk XHUwNWFjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBmZlx1MDViN1wzXDJc MlwyXHUwMTAxXHUwNWJkXDNcMlwyXDJcdTAxMDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDVjNlwzXDJcMlwyXHUwMTA1XHUwNWQwXDNcMlwyXDJcdTAxMDdcdTA1ZDhcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTA5XHUwNWUwXDNcMlwyXDJcdTAxMGJcdTA1ZTVcM1wy XDJcMlx1MDEwZFx1MDVlZVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMGZc dTA1ZjVcM1wyXDJcMlx1MDExMVx1MDVmYlwzXDJcMlwyXHUwMTEzXHUwNjAwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDExNVx1MDYwNlwzXDJcMlwyXHUwMTE3XHUwNjBkXDNc MlwyXDJcdTAxMTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYxMlwzXDJcMlwyXHUwMTFi XHUwNjE3XDNcMlwyXDJcdTAxMWRcdTA2MWRcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMTFmXHUwNjI2XDNcMlwyXDJcdTAxMjFcdTA2MzFcM1wyXDJcMlx1MDEyM1x1MDYzN1wz IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMjVcdTA2M2VcM1wyXDJcMlx1MDEy N1x1MDY0M1wzXDJcMlwyXHUwMTI5XHUwNjRiIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAxMmJcdTA2NTFcM1wyXDJcMlx1MDEyZFx1MDY1NlwzXDJcMlwyXHUwMTJmIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NWNcM1wyXDJcMlx1MDEzMVx1MDY2OFwzXDJcMlwy XHUwMTMzXHUwNjc3XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEzNVx1MDY4 NFwzXDJcMlwyXHUwMTM3XHUwNjhlXDNcMlwyXDJcdTAxMzlcdTA2OTdcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTNiXHUwNmEzXDNcMlwyXDJcdTAxM2RcdTA2YWJcM1wyXDJc Mlx1MDEzZlx1MDZiZCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTQx XHUwNmM0XDNcMlwyXDJcdTAxNDNcdTA2Y2JcM1wyXDJcMlx1MDE0NSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNmQ1XDNcMlwyXDJcdTAxNDdcdTA2ZGRcM1wyXDJcMlx1MDE0OVx1MDZlNlwz XDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNGJcdTA2ZjVcM1wyXDJcMlx1MDE0 ZFx1MDZmY1wzXDJcMlwyXHUwMTRmXHUwNzA2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwy XDJcMlx1MDE1MVx1MDcwZlwzXDJcMlwyXHUwMTUzXHUwNzE0XDNcMlwyXDJcdTAxNTVcdTA3MWEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTU3XHUwNzI1XDNcMlwyXDJcdTAx NTlcdTA3MzFcM1wyXDJcMlx1MDE1YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzNlXDNc MlwyXDJcdTAxNWRcdTA3NGRcM1wyXDJcMlx1MDE1Zlx1MDc1YVwzXDJcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAxNjFcdTA3NjlcM1wyXDJcMlx1MDE2M1x1MDc3NlwzXDJcMlwyXHUw MTY1XHUwNzg4XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDE2N1x1MDc5Y1wz XDJcMlwyXHUwMTY5XHUwN2E3XDNcMlwyXDJcdTAxNmJcdTA3YjIiDQo+ICkNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNmRcdTA3YzBcM1wyXDJcMlx1MDE2Zlx1MDdjZlwz XDJcMlwyXHUwMTcxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZGNcM1wyXDJcMlx1MDE3 M1x1MDdlYVwzXDJcMlwyXHUwMTc1XHUwN2ZhXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDE3N1x1MDgwYVwzXDJcMlwyXHUwMTc5XHUwODE5XDNcMlwyXDJcdTAxN2JcdTA4MjZc MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTdkXHUwODM1XDNcMlwyXDJcdTAx N2ZcdTA4M2NcM1wyXDJcMlx1MDE4MVx1MDg0NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxODNcdTA4NDlcM1wyXDJcMlx1MDE4NVx1MDg0ZVwzXDJcMlwyXHUwMTg3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NTJcM1wyXDJcMlx1MDE4OVx1MDg1OFwzXDJcMlwyXHUw MThiXHUwODVkXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE4ZFx1MDg2MVwz XDJcMlwyXHUwMThmXHUwODZhXDNcMlwyXDJcdTAxOTFcdTA4NmVcMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwMTkzXHUwODc2XDNcMlwyXDJcdTAxOTVcdTA4N2RcM1wyXDJcMlx1 MDE5N1x1MDg4OSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTk5XHUw ODk1XDNcMlwyXDJcdTAxOWJcdTA4OWRcM1wyXDJcMlx1MDE5ZCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwOGE3XDNcMlwyXDJcdTAxOWZcdTA4YjBcM1wyXDJcMlx1MDFhMVx1MDhiOVwzXDJc MlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYTNcdTA4YmRcM1wyXDJcMlx1MDFhNVx1 MDhjMlwzXDJcMlwyXHUwMWE3XHUwOGM4XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJc Mlx1MDFhOVx1MDhjY1wzXDJcMlwyXHUwMWFiXHUwOGQxXDNcMlwyXDJcdTAxYWRcdTA4ZDYiDQo+ ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFhZlx1MDhlMFwzXDJcMlwyXHUw MWIxXHUwOGU4XDNcMlwyXDJcdTAxYjMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4 ZWZcM1wyXDJcMlx1MDFiNVx1MDhmM1wzXDJcMlwyXHUwMWI3XHUwOGY2XDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDFiOVx1MDhmYVwzXDJcMlwyXHUwMWJiXHUwOGZlXDNcMlwy XDJcdTAxYmRcdTA5MDBcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWJmXHUw OTA4XDNcMlwyXDJcdTAxYzFcdTA5MTJcM1wyXDJcMlx1MDFjM1x1MDkxYiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYzVcdTA5MjNcM1wyXDJcMlx1MDFjN1x1MDkyYlwzXDJc MlwyXHUwMWM5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MzFcM1wyXDJcMlx1MDFjYlx1 MDkzOFwzXDJcMlwyXHUwMWNkXHUwOTQxXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDFjZlx1MDk1MFwzXDJcMlwyXHUwMWQxXHUwOTVkXDNcMlwyXDJcdTAxZDNcdTA5NjFcMyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWQ1XHUwOTZkXDNcMlwyXDJcdTAxZDdc dTA5N2FcM1wyXDJcMlx1MDFkOVx1MDk4OSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwMWRiXHUwOTljXDNcMlwyXDJcdTAxZGRcdTA5YWJcM1wyXDJcMlx1MDFkZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWJhXDNcMlwyXDJcdTAxZTFcdTA5YzlcM1wyXDJcMlx1 MDFlM1x1MDlkOFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxZTVcdTA5ZThc M1wyXDJcMlx1MDFlN1x1MDlmOVwzXDJcMlwyXHUwMWU5XHUwYTBhXDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDFlYlx1MGExNlwzXDJcMlwyXHUwMWVkXHUwYTIwXDNcMlwyXDJc dTAxZWZcdTBhMmYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFmMVx1 MGE0Y1wzXDJcMlwyXHUwMWYzXHUwYTRlXDNcMlwyXDJcdTAxZjUiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTBhNTVcM1wyXDJcMlx1MDFmN1x1MGE2OFwzXDJcMlwyXHUwMWY5XHUwYTc5 XDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZmJcdTBhOGVcM1wyXDJc Mlx1MDFmZFx1MGE5OVwzXDJcMlwyXHUwMWZmXHUwYTlkXDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcMlx1MDIwMVx1MGFhOFwzXDJcMlwyXHUwMjAzXHUwMjA0XDd1XDJcMlx1MDIwNFx1 MDIwNSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3alwyXDJcdTAyMDVcdTAyMDZcN3Fc MlwyXHUwMjA2XHUwMjA3XDd5XDJcMlx1MDIwN1w0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDIwOFx1MDIwOVw3clwyXDJcdTAyMDlcdTAyMGFcN3dcMlwyXHUwMjBhXHUwMjBi Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd1XDJcMlx1MDIwYlx1MDIwY1w3alwyXDJc dTAyMGNcNlwzXDJcMlwyXHUwMjBkXHUwMjBlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDdyXDJcMlx1MDIwZVx1MDIwZlw3cVwyXDJcdTAyMGZcdTAyMTBcN3JcMlwyXHUwMjEwXGIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjExXHUwMjEyXDclXDJcMlx1MDIxMlx1 MDIxM1w3clwyXDJcdTAyMTNcdTAyMTQiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN3Rc MlwyXHUwMjE0XHUwMjE1XDdjXDJcMlx1MDIxNVx1MDIxNlw3aVwyXDJcdTAyMTZcdTAyMTciKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw3b1wyXDJcdTAyMTdcdTAyMThcN2NcMlwyXHUwMjE4XG5c M1wyXDJcMlx1MDIxOVx1MDIxYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdyXDJcMlx1MDIx YVx1MDIxYlw3Y1wyXDJcdTAyMWJcdTAyMWNcN2VcMlwyXHUwMjFjXHUwMjFkIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDdtXDJcMlx1MDIxZFxmXDNcMlwyXDJcdTAyMWVcdTAyMWZcNz9c MlwyXHUwMjFmXDE2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDIyMFx1MDIy MVw3S1wyXDJcdTAyMjFcdTAyMjJcN09cMlwyXHUwMjIyXHUwMjIzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcN0NcMlwyXHUwMjIzXHUwMjI0XDdJXDJcMlx1MDIyNFx1MDIyNVw3R1wyXDJcdTAy MjVcdTAyMjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3YVwyXDJcdTAyMjZcdTAyMjdcN1Zc MlwyXHUwMjI3XHUwMjI4XDdRXDJcMlx1MDIyOFx1MDIyOSINCj4gKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw3TVwyXDJcdTAyMjlcdTAyMmFcN0dcMlwyXHUwMjJhXHUwMjJiXDdQXDJcMlx1MDIy YlwyMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMmNcdTAyMmRcN0pcMlwy XHUwMjJkXHUwMjJlXDdRXDJcMlx1MDIyZVx1MDIyZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdUXDJcMlx1MDIyZlx1MDIzMFw3S1wyXDJcdTAyMzBcdTAyMzFcN1xcXDJcMlx1MDIzMVx1MDIz MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdRXDJcMlx1MDIzMlx1MDIzM1w3UFwyXDJcdTAy MzNcdTAyMzRcN1ZcMlwyXHUwMjM0XHUwMjM1Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdDXDJcMlx1MDIzNVx1MDIzNlw3TlwyXDJcdTAyMzZcMjJcM1wyXDJcMlx1MDIzN1x1MDIzOCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdPXDJcMlx1MDIzOFx1MDIzOVw3V1wyXDJcdTAyMzlc dTAyM2FcN05cMlwyXHUwMjNhXHUwMjNiDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdW XDJcMlx1MDIzYlx1MDIzY1w3S1wyXDJcdTAyM2NcdTAyM2RcN2FcMlwyXHUwMjNkXHUwMjNlIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN05cMlwyXHUwMjNlXHUwMjNmXDdLXDJcMlx1MDIzZlx1 MDI0MFw3UFwyXDJcdTAyNDBcdTAyNDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3R1wyXDJc dTAyNDFcMjRcM1wyXDJcMlx1MDI0Mlx1MDI0M1w3PlwyXDJcdTAyNDNcdTAyNDQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3PlwyXDJcdTAyNDRcMjZcM1wyXDJcMlx1MDI0NVx1MDI0Nlw3QFwy XDJcdTAyNDZcdTAyNDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN0BcMlwyXHUwMjQ3 XDMwXDNcMlwyXDJcdTAyNDhcdTAyNDlcNy0NCj4gXDJcMlx1MDI0OVwzMlwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNGFcdTAyNGJcNyxcMlwyXHUwMjRiXDM0XDNcMlwyXDJc dTAyNGNcdTAyNGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XCdcMlwyXHUwMjRkXDM2XDNc MlwyXDJcdTAyNGVcdTAyNGZcN2hcMlwyXHUwMjRmXHUwMjUwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN3FcMlwyXHUwMjUwXHUwMjUxXDd0XDJcMlx1MDI1MVx1MDI1Mlw3b1wyXDJcdTAyNTJc dTAyNTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN2NcMlwyXHUwMjUzXHUwMjU0XDd2 XDJcMlx1MDI1NCBcM1wyXDJcMlx1MDI1NVx1MDI1NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdBXDJcMlx1MDI1NlwiXDNcMlwyXDJcdTAyNTdcdTAyNThcNyVcMlwyXHUwMjU4XHUwMjU5IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2ZcMlwyXHUwMjU5XHUwMjVhXDdnXDJcMlx1MDI1YVx1 MDI1Ylw3aFwyXDJcdTAyNWJcdTAyNWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3a1wyXDJc dTAyNWNcdTAyNWRcN3BcMlwyXHUwMjVkXHUwMjVlXDdnXDJcMlx1MDI1ZSRcMyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjVmXHUwMjYwXDclXDJcMlx1MDI2MFx1MDI2MVw3a1wy XDJcdTAyNjFcdTAyNjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3cFwyXDJcdTAyNjJcdTAy NjNcN2VcMlwyXHUwMjYzXHUwMjY0XDduXDJcMlx1MDI2NFx1MDI2NSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDd3XDJcMlx1MDI2NVx1MDI2Nlw3ZlwyXDJcdTAyNjZcdTAyNjdcN2dcMlwyXHUw MjY3JlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNjhcdTAyNjlcN2hcMlwy XHUwMjY5XHUwMjZhXDdxXDJcMlx1MDI2YVx1MDI2YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDd0XDJcMlx1MDI2Ylx1MDI2Y1w3b1wyXDJcdTAyNmNcdTAyNmRcN3JcMlwyXHUwMjZkXHUwMjZl IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN21cMlwyXHUwMjZlXHUwMjZmXDdpXDJcMlx1MDI2 Zlx1MDI3MFw3dlwyXDJcdTAyNzBcdTAyNzEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3e1wy XDJcdTAyNzFcdTAyNzJcN3JcMlwyXHUwMjcyXHUwMjczXDdnXDJcMlx1MDI3MyhcMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjc0XHUwMjc1XDd9XDJcMlx1MDI3NSpcM1wyXDJc Mlx1MDI3Nlx1MDI3N1w3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDE3N1wyXDJcdTAy NzcsXDNcMlwyXDJcdTAyNzhcdTAyNzlcNypcMlwyXHUwMjc5LlwzXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcdTAyN2FcdTAyN2JcNytcMlwyXHUwMjdiXDYwXDNcMlwyXDJcdTAyN2Nc dTAyN2RcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIl1cMlwyXHUwMjdkXDYyXDNcMlwy XDJcdTAyN2VcdTAyN2ZcN19cMlwyXHUwMjdmXDY0XDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlx1MDI4MFx1MDI4MVw3XDYwXDJcMlx1MDI4MVw2NlwzXDJcMlwyXHUwMjgyXHUwMjgz IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDI4MzhcM1wyXDJcMlx1MDI4 NFx1MDI4NVw3PFwyXDJcdTAyODU6XDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1 MDI4Nlx1MDI4N1w3XDYxXDJcMlx1MDI4NzxcM1wyXDJcMlx1MDI4OFx1MDI4OVw3PSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDI4OT5cM1wyXDJcMlx1MDI4YVx1MDI4Ylw3LlwyXDJc dTAyOGJAXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI4Y1x1MDI4ZFw3P1wy XDJcdTAyOGRcdTAyOGVcNz9cMlwyXHUwMjhlQlwzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMjhmXHUwMjkwXDcjXDJcMlx1MDI5MFx1MDI5MVw3P1wyXDJcdTAyOTFEXDNc MlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOTJcdTAyOTNcNz5cMlwyXHUw MjkzXHUwMjk0XDc/XDJcMlx1MDI5NEZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMjk1XHUwMjk2XDc+XDJcMlx1MDI5NkhcM1wyXDJcMlx1MDI5N1x1MDI5OFw3QFwyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI5OFx1MDI5OVw3P1wyXDJcdTAyOTlKXDNcMlwyXDJc dTAyOWFcdTAyOWJcN0BcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyOWJMXDNcMlwy XDJcdTAyOWNcdTAyOWRcN35cMlwyXHUwMjlkTlwzXDJcMlwyXHUwMjllIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMjlmXDcoXDJcMlx1MDI5ZlBcM1wyXDJcMlx1MDJhMFx1MDJhMVw3 ZlwyXDJcdTAyYTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJhMlw3Z1wyXDJcdTAyYTJc dTAyYTNcN3hcMlwyXHUwMmEzXHUwMmE0XDdrXDJcMlx1MDJhNCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMmE1XDdlXDJcMlx1MDJhNVx1MDJhNlw3Z1wyXDJcdTAyYTZcdTAyYTdcN3JcMlwy XHUwMmE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyYThcN2NcMlwyXHUwMmE4XHUwMmE5 XDd2XDJcMlx1MDJhOVx1MDJhYVw3alwyXDJcdTAyYWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlJcM1wyXDJcMlx1MDJhYlx1MDJhY1w3aFwyXDJcdTAyYWNcdTAyYWRcN3FcMlwyXHUwMmFkIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyYWVcN3RcMlwyXHUwMmFlXHUwMmFmXDdvXDJcMlx1 MDJhZlx1MDJiMFw3dVwyXDJcdTAyYjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJiMVw3 Z1wyXDJcdTAyYjFcdTAyYjJcN3ZcMlwyXHUwMmIyVFwzXDJcMlwyXHUwMmIzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAyYjRcN2hcMlwyXHUwMmI0XHUwMmI1XDdxXDJcMlx1MDJiNVx1MDJi Nlw3dFwyXDJcdTAyYjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJiN1w3b1wyXDJcdTAy YjdcdTAyYjhcN3VcMlwyXHUwMmI4XHUwMmI5XDdnXDJcMlx1MDJiOSINCj4gKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDJiYVw3dlwyXDJcdTAyYmFcdTAyYmJcN2tcMlwyXHUwMmJiXHUwMmJj XDdmXDJcMlx1MDJiYyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlZcM1wyXDJcMlx1MDJi ZFx1MDJiZVw3Z1wyXDJcdTAyYmVcdTAyYmZcN3BcMlwyXHUwMmJmIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAyYzBcN2ZcMlwyXHUwMmMwXHUwMmMxXDdoXDJcMlx1MDJjMVx1MDJjMlw3cVwy XDJcdTAyYzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJjM1w3dFwyXDJcdTAyYzNcdTAy YzRcN29cMlwyXHUwMmM0XHUwMmM1XDd1XDJcMlx1MDJjNSIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDJjNlw3Z1wyXDJcdTAyYzZcdTAyYzdcN3ZcMlwyXHUwMmM3WFwzXDJcMlwyXHUw MmM4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyYzlcN3ZcMlwyXHUwMmM5XHUwMmNhXDdr XDJcMlx1MDJjYVx1MDJjYlw3dlwyXDJcdTAyY2IiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdTAyY2NcN25cMlwyXHUwMmNjXHUwMmNkXDdnXDJcMlx1MDJjZFpcM1wyXDJcMlx1MDJjZSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmNmXDdoXDJcMlx1MDJjZlx1MDJkMFw3cVwyXDJc dTAyZDBcdTAyZDFcN3RcMlwyXHUwMmQxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyZDJc N29cMlwyXHUwMmQyXHUwMmQzXDdrXDJcMlx1MDJkM1x1MDJkNFw3ZlwyXDJcdTAyZDQiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlxcXDNcMlwyXDJcdTAyZDVcdTAyZDZcN3FcMlwyXHUwMmQ2XHUw MmQ3XDdwXDJcMlx1MDJkNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmQ4XDdnXDJcMlx1 MDJkOFx1MDJkOVw3cVwyXDJcdTAyZDlcdTAyZGFcN2hcMlwyXHUwMmRhIg0KPiApDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXlwzXDJcMlwyXHUwMmRiXHUwMmRjXDdnXDJcMlx1MDJkY1x1MDJkZFw3 cFwyXDJcdTAyZGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJkZVw3ZlwyXDJcdTAyZGVc dTAyZGZcN3FcMlwyXHUwMmRmXHUwMmUwXDdwXDJcMlx1MDJlMCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMmUxXDdnXDJcMlx1MDJlMVx1MDJlMlw3cVwyXDJcdTAyZTJcdTAyZTNcN2hcMlwy XHUwMmUzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiYFwzXDJcMlwyXHUwMmU0XHUwMmU1 XDdyXDJcMlx1MDJlNVx1MDJlNlw3dFwyXDJcdTAyZTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDJlN1w3cVwyXDJcdTAyZTdcdTAyZThcN29cMlwyXHUwMmU4XHUwMmU5XDdyXDJcMlx1MDJl OSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDJlYVw3dlwyXDJcdTAyZWFiXDNcMlwy XDJcdTAyZWJcdTAyZWNcN3FcMlwyXHUwMmVjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAy ZWRcN3RcMlwyXHUwMmVkXHUwMmVlXDdmXDJcMlx1MDJlZVx1MDJlZlw3Z1wyXDJcdTAyZWYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJmMFw3dFwyXDJcdTAyZjBcdTAyZjFcN2dcMlwyXHUw MmYxXHUwMmYyXDdmXDJcMlx1MDJmMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmYzXDdu XDJcMlx1MDJmM1x1MDJmNFw3a1wyXDJcdTAyZjRcdTAyZjVcN3VcMlwyXHUwMmY1IikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmY2XDd2XDJcMlx1MDJmNmRcM1wyXDJcMlx1MDJmN1x1 MDJmOFw3b1wyXDJcdTAyZjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJmOVw3Y1wyXDJc dTAyZjlcdTAyZmFcN3pcMlwyXHUwMmZhXHUwMmZiXDdlXDJcMlx1MDJmYiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMmZjXDdxXDJcMlx1MDJmY1x1MDJmZFw3cFwyXDJcdTAyZmRcdTAyZmVc N3ZcMlwyXHUwMmZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyZmZcN2NcMlwyXHUwMmZm XHUwMzAwXDdrXDJcMlx1MDMwMFx1MDMwMVw3cFwyXDJcdTAzMDEiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDMwMlw3Z1wyXDJcdTAzMDJcdTAzMDNcN3RcMlwyXHUwMzAzXHUwMzA0XDd1XDJc Mlx1MDMwNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoImZcM1wyXDJcMlx1MDMwNVx1MDMw Nlw3Z1wyXDJcdTAzMDZcdTAzMDdcN3BcMlwyXHUwMzA3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTAzMDhcN2ZcMlwyXHUwMzA4XHUwMzA5XDduXDJcMlx1MDMwOVx1MDMwYVw3a1wyXDJcdTAz MGEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMwYlw3dVwyXDJcdTAzMGJcdTAzMGNcN3Zc MlwyXHUwMzBjaFwzXDJcMlwyXHUwMzBkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzMGVc N2dcMlwyXHUwMzBlXHUwMzBmXDdwXDJcMlx1MDMwZlx1MDMxMFw3ZlwyXDJcdTAzMTAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDMxMVw3aFwyXDJcdTAzMTFcdTAzMTJcN3FcMlwyXHUwMzEy XHUwMzEzXDd0XDJcMlx1MDMxMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDMxNFw3 b1wyXDJcdTAzMTRqXDNcMlwyXDJcdTAzMTVcdTAzMTZcN2hcMlwyXHUwMzE2IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAzMTdcN3FcMlwyXHUwMzE3XHUwMzE4XDd0XDJcMlx1MDMxOFx1MDMx OVw3b1wyXDJcdTAzMTkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJsXDNcMlwyXDJcdTAz MWFcdTAzMWJcN2hcMlwyXHUwMzFiXHUwMzFjXDdxXDJcMlx1MDMxYyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMzFkXDd0XDJcMlx1MDMxZFx1MDMxZVw3b1wyXDJcdTAzMWVcdTAzMWZcN29c MlwyXHUwMzFmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzIwXDdjXDJcMlx1MDMy MFx1MDMyMVw3clwyXDJcdTAzMjFuXDNcMlwyXDJcdTAzMjIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDMyM1w3b1wyXDJcdTAzMjNcdTAzMjRcN2NcMlwyXHUwMzI0XHUwMzI1XDdyXDJcMlx1 MDMyNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzI2XDd2XDJcMlx1MDMyNlx1MDMyN1w3 a1wyXDJcdTAzMjdcdTAzMjhcN3ZcMlwyXHUwMzI4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAzMjlcN25cMlwyXHUwMzI5XHUwMzJhXDdnXDJcMlx1MDMyYXBcM1wyXDJcMlx1MDMyYiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzJjXDdvXDJcMlx1MDMyY1x1MDMyZFw3Y1wyXDJcdTAz MmRcdTAzMmVcN3JcMlwyXHUwMzJlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzMmZcN2lc MlwyXHUwMzJmXHUwMzMwXDd3XDJcMlx1MDMzMFx1MDMzMVw3a1wyXDJcdTAzMzEiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAzMzJcN2ZcMlwyXHUwMzMyclwzXDJcMlwyXHUwMzMzXHUw MzM0XDd1XDJcMlx1MDMzNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzM1XDd3XDJcMlx1 MDMzNVx1MDMzNlw3ZFwyXDJcdTAzMzZcdTAzMzdcN3ZcMlwyXHUwMzM3Ig0KPiApDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMzM4XDdrXDJcMlx1MDMzOFx1MDMzOVw3dlwyXDJcdTAzMzlcdTAz M2FcN25cMlwyXHUwMzNhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzNiXDdnXDJc Mlx1MDMzYnRcM1wyXDJcMlx1MDMzY1x1MDMzZFw3Z1wyXDJcdTAzM2QiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDMzZVw3cFwyXDJcdTAzM2VcdTAzM2ZcN2ZcMlwyXHUwMzNmXHUwMzQwXDd1 XDJcMlx1MDM0MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzQxXDd3XDJcMlx1MDM0MVx1 MDM0Mlw3ZFwyXDJcdTAzNDJcdTAzNDNcN3ZcMlwyXHUwMzQzIg0KPiApDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMzQ0XDdrXDJcMlx1MDM0NFx1MDM0NVw3dlwyXDJcdTAzNDVcdTAzNDZcN25c MlwyXHUwMzQ2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzQ3XDdnXDJcMlx1MDM0 N3ZcM1wyXDJcMlx1MDM0OFx1MDM0OVw3alwyXDJcdTAzNDkiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDM0YVw3Z1wyXDJcdTAzNGFcdTAzNGJcN25cMlwyXHUwMzRiXHUwMzRjXDdyXDJcMlx1 MDM0YyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInhcM1wyXDJcMlx1MDM0ZFx1MDM0ZVw3 dlwyXDJcdTAzNGVcdTAzNGZcN2dcMlwyXHUwMzRmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzUwXDd6XDJcMlx1MDM1MFx1MDM1MVw3dlwyXDJcdTAzNTF6XDNcMlwyXDJcdTAzNTIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM1M1w3cVwyXDJcdTAzNTNcdTAzNTRcN3JcMlwy XHUwMzU0XHUwMzU1XDd2XDJcMlx1MDM1NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzU2 XDdrXDJcMlx1MDM1Nlx1MDM1N1w3cVwyXDJcdTAzNTdcdTAzNThcN3BcMlwyXHUwMzU4IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJ8XDNcMlwyXDJcdTAzNTlcdTAzNWFcN2hcMlwyXHUwMzVhXHUw MzViXDduXDJcMlx1MDM1YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzVjXDdjXDJcMlx1 MDM1Y1x1MDM1ZFw3aVwyXDJcdTAzNWRcdTAzNWVcN3VcMlwyXHUwMzVlIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiflwzXDJcMlwyXHUwMzVmXHUwMzYwXDdmXDJcMlx1MDM2MFx1MDM2MVw3 Y1wyXDJcdTAzNjEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM2Mlw3dlwyXDJcdTAzNjJc dTAzNjNcN2dcMlwyXHUwMzYzXHUwMDgwXDNcMlwyXDJcdTAzNjQiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAzNjVcN2dcMlwyXHUwMzY1XHUwMzY2XDdwXDJcMlx1MDM2Nlx1MDM2N1w3 ZlwyXDJcdTAzNjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM2OFw3ZlwyXDJcdTAzNjhc dTAzNjlcN2NcMlwyXHUwMzY5XHUwMzZhXDd2XDJcMlx1MDM2YSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMzZiXDdnXDJcMlx1MDM2Ylx1MDA4MlwzXDJcMlwyXHUwMzZjXHUwMzZkXDd7XDJc Mlx1MDM2ZCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM2ZVw3Z1wyXDJcdTAzNmVc dTAzNmZcN2NcMlwyXHUwMzZmXHUwMzcwXDd0XDJcMlx1MDM3MCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMDg0XDNcMlwyXDJcdTAzNzFcdTAzNzJcN29cMlwyXHUwMzcyXHUwMzczXDdxXDJc Mlx1MDM3MyINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM3NFw3cFwyXDJcdTAzNzRc dTAzNzVcN3ZcMlwyXHUwMzc1XHUwMzc2XDdqXDJcMlx1MDM3NiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMDg2XDNcMlwyXDJcdTAzNzdcdTAzNzhcN2ZcMlwyXHUwMzc4XHUwMzc5XDdjXDJc Mlx1MDM3OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzdhXDd7XDJcMlx1MDM3YVx1MDA4 OFwzXDJcMlwyXHUwMzdiXHUwMzdjXDd2XDJcMlx1MDM3YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMzdkXDdrXDJcMlx1MDM3ZFx1MDM3ZVw3b1wyXDJcdTAzN2VcdTAzN2ZcN2dcMlwyXHUw MzdmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOGFcM1wyXDJcMlx1MDM4MFx1MDM4MVw3 Z1wyXDJcdTAzODFcdTAzODJcN3BcMlwyXHUwMzgyIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMzgzXDdmXDJcMlx1MDM4M1x1MDM4NFw3dlwyXDJcdTAzODRcdTAzODVcN2tcMlwyXHUw Mzg1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzODZcN29cMlwyXHUwMzg2XHUwMzg3XDdn XDJcMlx1MDM4N1x1MDA4Y1wzXDJcMlwyXHUwMzg4Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMzg5XDdqXDJcMlx1MDM4OVx1MDM4YVw3cVwyXDJcdTAzOGFcdTAzOGJcN3dcMlwyXHUw MzhiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzOGNcN3RcMlwyXHUwMzhjXHUwMDhlXDNc MlwyXDJcdTAzOGRcdTAzOGVcN29cMlwyXHUwMzhlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAzOGZcN2tcMlwyXHUwMzhmXHUwMzkwXDdwXDJcMlx1MDM5MFx1MDM5MVw3d1wyXDJcdTAzOTEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM5Mlw3dlwyXDJcdTAzOTJcdTAzOTNcN2dcMlwy XHUwMzkzXHUwMDkwXDNcMlwyXDJcdTAzOTQiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAzOTVcN3VcMlwyXHUwMzk1XHUwMzk2XDdnXDJcMlx1MDM5Nlx1MDM5N1w3ZVwyXDJcdTAzOTci KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM5OFw3cVwyXDJcdTAzOThcdTAzOTlcN3BcMlwy XHUwMzk5XHUwMzlhXDdmXDJcMlx1MDM5YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDky XDNcMlwyXDJcdTAzOWJcdTAzOWNcN2lcMlwyXHUwMzljXHUwMzlkXDd0XDJcMlx1MDM5ZCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzllXDdjXDJcMlx1MDM5ZVx1MDM5Zlw3e1wyXDJcdTAz OWZcdTAzYTBcN3FcMlwyXHUwM2EwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYTFcN3dc MlwyXHUwM2ExXHUwM2EyXDd2XDJcMlx1MDNhMlx1MDNhM1w3a1wyXDJcdTAzYTMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDNhNFw3aFwyXDJcdTAzYTRcdTAwOTRcM1wyXDJcMlx1MDNhNVx1 MDNhNlw3blwyXDJcdTAzYTYiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYTdcN2Nc MlwyXHUwM2E3XHUwM2E4XDdkXDJcMlx1MDNhOFx1MDNhOVw3Z1wyXDJcdTAzYTkiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDNhYVw3blwyXDJcdTAzYWFcdTAwOTZcM1wyXDJcMlx1MDNhYlx1 MDNhY1w3dlwyXDJcdTAzYWMiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYWRcN2tc MlwyXHUwM2FkXHUwM2FlXDdvXDJcMlx1MDNhZVx1MDNhZlw3Z1wyXDJcdTAzYWYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDNiMFw3cVwyXDJcdTAzYjBcdTAzYjFcN3dcMlwyXHUwM2IxXHUw M2IyXDd2XDJcMlx1MDNiMiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA5OFwzXDJc MlwyXHUwM2IzXHUwM2I0XDdrXDJcMlx1MDNiNFx1MDNiNVw3cFwyXDJcdTAzYjUNCj4gIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYjZcN3hcMlwyXHUwM2I2XHUwM2I3XDdnXDJcMlx1MDNi N1x1MDNiOFw3cFwyXDJcdTAzYjgiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYjlc N3ZcMlwyXHUwM2I5XHUwM2JhXDdxXDJcMlx1MDNiYVx1MDNiYlw3dFwyXDJcdTAzYmIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDNiY1w3e1wyXDJcdTAzYmNcdTAwOWFcM1wyXDJcMlx1MDNi ZFx1MDNiZVw3YVwyXDJcdTAzYmUiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYmZc N1BcMlwyXHUwM2JmXHUwM2MwXDdRXDJcMlx1MDNjMFx1MDNjMVw3UFwyXDJcdTAzYzEiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDNjMlw3YVwyXDJcdTAzYzJcdTAzYzNcN1BcMlwyXHUwM2Mz XHUwM2M0XDdYXDJcMlx1MDNjNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2M1XDdhXDJc Mlx1MDNjNVx1MDNjNlw3RlwyXDJcdTAzYzZcdTAzYzdcN0NcMlwyXHUwM2M3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAzYzhcN1ZcMlwyXHUwM2M4XHUwM2M5XDdDXDJcMlx1MDNjOVx1MDNj YVw3YVwyXDJcdTAzY2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNjYlw3T1wyXDJcdTAz Y2JcdTAzY2NcN0NcMlwyXHUwM2NjXHUwM2NkXDdSXDJcMlx1MDNjZCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMDljXDNcMlwyXDJcdTAzY2VcdTAzY2ZcN3VcMlwyXHUwM2NmXHUwM2QwXDd2 XDJcMlx1MDNkMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2QxXDd0XDJcMlx1MDNkMVx1 MDNkMlw3d1wyXDJcdTAzZDJcdTAzZDNcN2VcMlwyXHUwM2QzIg0KPiApDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwM2Q0XDd2XDJcMlx1MDNkNFx1MDA5ZVwzXDJcMlwyXHUwM2Q1XHUwM2Q2XDd3 XDJcMlx1MDNkNg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNkN1w3cFwyXDJcdTAz ZDdcdTAzZDhcN2tcMlwyXHUwM2Q4XHUwM2Q5XDdxXDJcMlx1MDNkOSINCj4gKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDNkYVw3cFwyXDJcdTAzZGFcdTAwYTBcM1wyXDJcMlx1MDNkYlx1MDNk Y1w3RFwyXDJcdTAzZGMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZGRcN1FcMlwy XHUwM2RkXHUwM2RlXDdRXDJcMlx1MDNkZVx1MDNkZlw3TlwyXDJcdTAzZGYiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAzZTBcN0dcMlwyXHUwM2UwXHUwM2UxXDdDXDJcMlx1MDNlMVx1 MDNlMlw3UFwyXDJcdTAzZTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhMlwzXDJcMlwy XHUwM2UzXHUwM2U0XDdXXDJcMlx1MDNlNFx1MDNlNVw3S1wyXDJcdTAzZTUNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAzZTZcN1BcMlwyXHUwM2U2XHUwM2U3XDdWXDJcMlx1MDNlN1x1 MDNlOFw3OFwyXDJcdTAzZTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNlOVw3XDY2XDJc Mlx1MDNlOVx1MDBhNFwzXDJcMlwyXHUwM2VhXHUwM2ViXDdXXDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwM2ViXHUwM2VjXDdLXDJcMlx1MDNlY1x1MDNlZFw3UFwyXDJcdTAzZWRcdTAz ZWVcN1YiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzZWVcdTAzZWZcN1w2NVwyXDJc dTAzZWZcdTAzZjBcN1w2NFwyXDJcdTAzZjBcdTAwYTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwM2YxXHUwM2YyXDdXXDJcMlx1MDNmMlx1MDNmM1w3S1wyXDJcdTAzZjNcdTAz ZjQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1BcMlwyXHUwM2Y0XHUwM2Y1XDdWXDJc Mlx1MDNmNVx1MDNmNlw3XDYzXDJcMlx1MDNmNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw M2Y3XDc4XDJcMlx1MDNmN1x1MDBhOFwzXDJcMlwyXHUwM2Y4XHUwM2Y5XDdXXDJcMlx1MDNmOSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2ZhXDdLXDJcMlx1MDNmYVx1MDNmYlw3UFwyXDJc dTAzZmJcdTAzZmNcN1ZcMlwyXHUwM2ZjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZmRc NzpcMlwyXHUwM2ZkXHUwMGFhXDNcMlwyXDJcdTAzZmVcdTAzZmZcN0dcMlwyXHUwM2ZmIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MDBcN0hcMlwyXHUwNDAwXHUwNDAxXDdLXDJcMlx1MDQw MVx1MDQwMlw3YVwyXDJcdTA0MDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQwM1w3VVwy XDJcdTA0MDNcdTA0MDRcN1ZcMlwyXHUwNDA0XHUwNDA1XDdUXDJcMlx1MDQwNSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNDA2XDdLXDJcMlx1MDQwNlx1MDQwN1w3UFwyXDJcdTA0MDdcdTA0 MDhcN0lcMlwyXHUwNDA4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MDlcN2FcMlwyXHUw NDA5XHUwNDBhXDdLXDJcMlx1MDQwYVx1MDQwYlw3RlwyXDJcdTA0MGIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDBhY1wzXDJcMlwyXHUwNDBjXHUwNDBkXDdHXDJcMlx1MDQwZFx1MDQwZVw3 SFwyXDJcdTA0MGUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MGZcN0tcMlwyXHUw NDBmXHUwNDEwXDdhXDJcMlx1MDQxMFx1MDQxMVw3SlwyXDJcdTA0MTEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDQxMlw3S1wyXDJcdTA0MTJcdTA0MTNcN0tcMlwyXHUwNDEzXHUwNDE0XDdh XDJcMlx1MDQxNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDE1XDdGXDJcMlx1MDQxNVx1 MDQxNlw3Q1wyXDJcdTA0MTZcdTA0MTdcN1ZcMlwyXHUwNDE3IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA0MThcN0dcMlwyXHUwNDE4XHUwMGFlXDNcMlwyXDJcdTA0MTlcdTA0MWFcN0dcMlwy XHUwNDFhDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDFiXDdIXDJcMlx1MDQxYlx1 MDQxY1w3S1wyXDJcdTA0MWNcdTA0MWRcN2FcMlwyXHUwNDFkIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA0MWVcN0pcMlwyXHUwNDFlXHUwNDFmXDdLXDJcMlx1MDQxZlx1MDQyMFw3S1wyXDJc dTA0MjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQyMVw3YVwyXDJcdTA0MjFcdTA0MjJc N1ZcMlwyXHUwNDIyXHUwNDIzXDdLXDJcMlx1MDQyMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNDI0XDdPXDJcMlx1MDQyNFx1MDQyNVw3R1wyXDJcdTA0MjVcdTAwYjBcM1wyXDJcMlx1MDQy Ng0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQyN1w3R1wyXDJcdTA0MjdcdTA0Mjhc N0hcMlwyXHUwNDI4XHUwNDI5XDdLXDJcMlx1MDQyOSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDQyYVw3YVwyXDJcdTA0MmFcdTA0MmJcN0pcMlwyXHUwNDJiXHUwNDJjXDdLXDJcMlx1 MDQyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDJkXDdLXDJcMlx1MDQyZFx1MDQyZVw3 YVwyXDJcdTA0MmVcdTA0MmZcN1RcMlwyXHUwNDJmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0MzBcN0dcMlwyXHUwNDMwXHUwNDMxXDdIXDJcMlx1MDQzMVx1MDBiMlwzXDJcMlwyXHUwNDMy DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDMzXDdpXDJcMlx1MDQzM1x1MDQzNFw3 d1wyXDJcdTA0MzRcdTA0MzVcN2tcMlwyXHUwNDM1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0MzZcN2ZcMlwyXHUwNDM2XHUwMGI0XDNcMlwyXDJcdTA0MzdcdTA0MzhcN2VcMlwyXHUwNDM4 Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDM5XDdqXDJcMlx1MDQzOVx1MDQzYVw3 Z1wyXDJcdTA0M2FcdTA0M2JcN2VcMlwyXHUwNDNiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0M2NcN21cMlwyXHUwNDNjXHUwNDNkXDdkXDJcMlx1MDQzZFx1MDQzZVw3cVwyXDJcdTA0M2Ui DQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0M2ZcN3pcMlwyXHUwNDNmXHUwMGI2XDNc MlwyXDJcdTA0NDBcdTA0NDFcN2dcMlwyXHUwNDQxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0NDJcN3BcMlwyXHUwNDQyXHUwNDQzXDdmXDJcMlx1MDQ0M1x1MDQ0NFw3ZVwyXDJcdTA0NDQi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ0NVw3alwyXDJcdTA0NDVcdTA0NDZcN2dcMlwy XHUwNDQ2XHUwNDQ3XDdlXDJcMlx1MDQ0NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDQ4 XDdtXDJcMlx1MDQ0OFx1MDQ0OVw3ZFwyXDJcdTA0NDlcdTA0NGFcN3FcMlwyXHUwNDRhIg0KPiAp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDRiXDd6XDJcMlx1MDQ0Ylx1MDBiOFwzXDJcMlwy XHUwNDRjXHUwNDRkXDdwXDJcMlx1MDQ0ZCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDQ0ZVw3d1wyXDJcdTA0NGVcdTA0NGZcN29cMlwyXHUwNDRmXHUwNDUwXDdnXDJcMlx1MDQ1MCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDUxXDd0XDJcMlx1MDQ1MVx1MDQ1Mlw3a1wyXDJc dTA0NTJcdTA0NTNcN2VcMlwyXHUwNDUzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYmFc M1wyXDJcMlx1MDQ1NFx1MDQ1NVw3Z1wyXDJcdTA0NTVcdTA0NTZcN3BcMlwyXHUwNDU2Ig0KPiAp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDU3XDdmXDJcMlx1MDQ1N1x1MDQ1OFw3cFwyXDJc dTA0NThcdTA0NTlcN3dcMlwyXHUwNDU5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0NWFc N29cMlwyXHUwNDVhXHUwNDViXDdnXDJcMlx1MDQ1Ylx1MDQ1Y1w3dFwyXDJcdTA0NWMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDQ1ZFw3a1wyXDJcdTA0NWRcdTA0NWVcN2VcMlwyXHUwNDVl XHUwMGJjXDNcMlwyXDJcdTA0NWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ2MFw3b1wy XDJcdTA0NjBcdTA0NjFcN2tcMlwyXHUwNDYxXHUwNDYyXDdwXDJcMlx1MDQ2MiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNDYzXDdrXDJcMlx1MDQ2M1x1MDQ2NFw3b1wyXDJcdTA0NjRcdTA0 NjVcN3dcMlwyXHUwNDY1Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDY2XDdvXDJc Mlx1MDQ2Nlx1MDBiZVwzXDJcMlwyXHUwNDY3XHUwNDY4XDdvXDJcMlx1MDQ2OCINCj4gKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDQ2OVw3Y1wyXDJcdTA0NjlcdTA0NmFcN3pcMlwyXHUwNDZh XHUwNDZiXDdrXDJcMlx1MDQ2YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDZjXDdvXDJc Mlx1MDQ2Y1x1MDQ2ZFw3d1wyXDJcdTA0NmRcdTA0NmVcN29cMlwyXHUwNDZlIg0KPiApDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwMGMwXDNcMlwyXDJcdTA0NmZcdTA0NzBcN3VcMlwyXHUwNDcw XHUwNDcxXDd2XDJcMlx1MDQ3MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDcyXDdnXDJc Mlx1MDQ3Mlx1MDQ3M1w3clwyXDJcdTA0NzNcdTAwYzJcM1wyXDJcMlx1MDQ3NCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNDc1XDdmXDJcMlx1MDQ3NVx1MDQ3Nlw3Z1wyXDJcdTA0NzZcdTA0 NzdcN2hcMlwyXHUwNDc3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0NzhcN2NcMlwyXHUw NDc4XHUwNDc5XDd3XDJcMlx1MDQ3OVx1MDQ3YVw3blwyXDJcdTA0N2EiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDQ3Ylw3dlwyXDJcdTA0N2JcdTAwYzRcM1wyXDJcMlx1MDQ3Y1x1MDQ3ZFw3 clwyXDJcdTA0N2QiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ3ZVw3Y1wyXDJcdTA0N2Vc dTA0N2ZcN3VcMlwyXHUwNDdmXHUwNDgwXDd1XDJcMlx1MDQ4MCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNDgxXDd5XDJcMlx1MDQ4MVx1MDQ4Mlw3cVwyXDJcdTA0ODJcdTA0ODNcN3RcMlwy XHUwNDgzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ODRcN2ZcMlwyXHUwNDg0XHUwMGM2 XDNcMlwyXDJcdTA0ODVcdTA0ODZcN2dcMlwyXHUwNDg2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA0ODdcN3BcMlwyXHUwNDg3XHUwNDg4XDdmXDJcMlx1MDQ4OFx1MDQ4OVw3clwyXDJcdTA0 ODkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ4YVw3Y1wyXDJcdTA0OGFcdTA0OGJcN3Vc MlwyXHUwNDhiXHUwNDhjXDd1XDJcMlx1MDQ4YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NDhkXDd5XDJcMlx1MDQ4ZFx1MDQ4ZVw3cVwyXDJcdTA0OGVcdTA0OGZcN3RcMlwyXHUwNDhmIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0OTBcN2ZcMlwyXHUwNDkwXHUwMGM4XDNcMlwyXDJc dTA0OTFcdTA0OTJcN3VcMlwyXHUwNDkyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0OTNc N3ZcMlwyXHUwNDkzXHUwNDk0XDd0XDJcMlx1MDQ5NFx1MDQ5NVw3a1wyXDJcdTA0OTUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDQ5Nlw3cFwyXDJcdTA0OTZcdTA0OTdcN2lcMlwyXHUwNDk3 XHUwMGNhXDNcMlwyXDJcdTA0OTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ5OVw3Z1wy XDJcdTA0OTlcdTA0OWFcN3BcMlwyXHUwNDlhXHUwNDliXDdmXDJcMlx1MDQ5YiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNDljXDd1XDJcMlx1MDQ5Y1x1MDQ5ZFw3dlwyXDJcdTA0OWRcdTA0 OWVcN3RcMlwyXHUwNDllIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0OWZcN2tcMlwyXHUw NDlmXHUwNGEwXDdwXDJcMlx1MDRhMFx1MDRhMVw3aVwyXDJcdTA0YTEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDBjY1wzXDJcMlwyXHUwNGEyXHUwNGEzXDdvXDJcMlx1MDRhM1x1MDRhNFw3 a1wyXDJcdTA0YTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRhNVw3cFwyXDJcdTA0YTVc dTA0YTZcN3VcMlwyXHUwNGE2XHUwNGE3XDdrXDJcMlx1MDRhNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNGE4XDd8XDJcMlx1MDRhOFx1MDRhOVw3Z1wyXDJcdTA0YTlcdTAwY2VcM1wyXDJc Mlx1MDRhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGFiXDdvXDJcMlx1MDRhYlx1MDRh Y1w3Y1wyXDJcdTA0YWNcdTA0YWRcN3pcMlwyXHUwNGFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA0YWVcN3VcMlwyXHUwNGFlXHUwNGFmXDdrXDJcMlx1MDRhZlx1MDRiMFw3fFwyXDJcdTA0 YjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRiMVw3Z1wyXDJcdTA0YjFcdTAwZDBcM1wy XDJcMlx1MDRiMlx1MDRiM1w3Z1wyXDJcdTA0YjMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA0YjRcN3BcMlwyXHUwNGI0XHUwNGI1XDdlXDJcMlx1MDRiNVx1MDRiNlw3cVwyXDJcdTA0 YjYiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YjdcN2ZcMlwyXHUwNGI3XHUwNGI4 XDdrXDJcMlx1MDRiOFx1MDRiOVw3cFwyXDJcdTA0YjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDRiYVw3aVwyXDJcdTA0YmFcdTAwZDJcM1wyXDJcMlx1MDRiYlx1MDRiY1w3dVwyXDJcdTA0 YmMiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YmRcN3dcMlwyXHUwNGJkXHUwNGJl XDdyXDJcMlx1MDRiZVx1MDRiZlw3clwyXDJcdTA0YmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDRjMFw3dFwyXDJcdTA0YzBcdTA0YzFcN2dcMlwyXHUwNGMxXHUwNGMyXDd1XDJcMlx1MDRj MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGMzXDd1XDJcMlx1MDRjM1x1MDRjNFw3a1wy XDJcdTA0YzRcdTA0YzVcN2hcMlwyXHUwNGM1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAw ZDRcM1wyXDJcMlx1MDRjNlx1MDRjN1w3ZlwyXDJcdTA0YzdcdTA0YzhcN2tcMlwyXHUwNGM4IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YzlcN3VcMlwyXHUwNGM5XHUwNGNhXDdjXDJcMlx1 MDRjYVx1MDRjYlw3ZFwyXDJcdTA0Y2IiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRjY1w3 blwyXDJcdTA0Y2NcdTA0Y2RcN2dcMlwyXHUwNGNkXHUwNGNlXDdrXDJcMlx1MDRjZSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNGNmXDdoXDJcMlx1MDRjZlx1MDBkNlwzXDJcMlwyXHUwNGQw XHUwNGQxXDdqXDJcMlx1MDRkMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGQyXDdrXDJc Mlx1MDRkMlx1MDRkM1w3ZlwyXDJcdTA0ZDNcdTA0ZDRcN2ZcMlwyXHUwNGQ0IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA0ZDVcN2dcMlwyXHUwNGQ1XHUwNGQ2XDdwXDJcMlx1MDRkNlx1MDBk OFwzXDJcMlwyXHUwNGQ3DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGQ4XDdpXDJc Mlx1MDRkOFx1MDRkOVw3cVwyXDJcdTA0ZDlcdTA0ZGFcN3ZcMlwyXHUwNGRhIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA0ZGJcN3FcMlwyXHUwNGRiXHUwMGRhXDNcMlwyXDJcdTA0ZGNcdTA0 ZGRcN2hcMlwyXHUwNGRkDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGRlXDdxXDJc Mlx1MDRkZVx1MDRkZlw3dFwyXDJcdTA0ZGZcdTA0ZTBcN29cMlwyXHUwNGUwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA0ZTFcN3VcMlwyXHUwNGUxXHUwNGUyXDdnXDJcMlx1MDRlMlx1MDRl M1w3dlwyXDJcdTA0ZTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRlNFw3aVwyXDJcdTA0 ZTRcdTA0ZTVcN3dcMlwyXHUwNGU1XHUwNGU2XDdrXDJcMlx1MDRlNiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNGU3XDdmXDJcMlx1MDRlN1x1MDBkY1wzXDJcMlwyXHUwNGU4XHUwNGU5XDdr XDJcMlx1MDRlOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGVhXDdwXDJcMlx1MDRlYVx1 MDRlYlw3ZVwyXDJcdTA0ZWJcdTA0ZWNcN3FcMlwyXHUwNGVjIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA0ZWRcN3BcMlwyXHUwNGVkXHUwNGVlXDd1XDJcMlx1MDRlZVx1MDRlZlw3a1wyXDJc dTA0ZWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRmMFw3dVwyXDJcdTA0ZjBcdTA0ZjFc N3ZcMlwyXHUwNGYxXHUwNGYyXDdnXDJcMlx1MDRmMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNGYzXDdwXDJcMlx1MDRmM1x1MDRmNFw3dlwyXDJcdTA0ZjRcdTA0ZjVcN2tcMlwyXHUwNGY1 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ZjZcN2hcMlwyXHUwNGY2XHUwMGRlXDNcMlwy XDJcdTA0ZjdcdTA0ZjhcN3lcMlwyXHUwNGY4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0 ZjlcN2NcMlwyXHUwNGY5XHUwNGZhXDd0XDJcMlx1MDRmYVx1MDRmYlw3cFwyXDJcdTA0ZmIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRmY1w3a1wyXDJcdTA0ZmNcdTA0ZmRcN3BcMlwyXHUw NGZkXHUwNGZlXDdpXDJcMlx1MDRmZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGZmXDdr XDJcMlx1MDRmZlx1MDUwMFw3aFwyXDJcdTA1MDBcdTAwZTBcM1wyXDJcMlx1MDUwMSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNTAyXDdwXDJcMlx1MDUwMlx1MDUwM1w3cVwyXDJcdTA1MDNc dTA1MDRcN3VcMlwyXHUwNTA0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MDVcN3dcMlwy XHUwNTA1XHUwNTA2XDdkXDJcMlx1MDUwNlx1MDUwN1w3b1wyXDJcdTA1MDciDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1MDhcN2tcMlwyXHUwNTA4XHUwNTA5XDd2XDJcMlx1MDUwOVx1 MDUwYVw3a1wyXDJcdTA1MGEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUwYlw3aFwyXDJc dTA1MGJcdTAwZTJcM1wyXDJcMlx1MDUwY1x1MDUwZFw3Z1wyXDJcdTA1MGQiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1MGVcN3BcMlwyXHUwNTBlXHUwNTBmXDdmXDJcMlx1MDUwZlx1 MDUxMFw3a1wyXDJcdTA1MTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUxMVw3aFwyXDJc dTA1MTFcdTAwZTRcM1wyXDJcMlx1MDUxMlx1MDUxM1w3bVwyXDJcdTA1MTMNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1MTRcN2dcMlwyXHUwNTE0XHUwNTE1XDd7XDJcMlx1MDUxNVx1 MDBlNlwzXDJcMlwyXHUwNTE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MTdcN0ZcMlwy XHUwNTE3XHUwNTE4XDdHXDJcMlx1MDUxOFx1MDUxOVw3SFwyXDJcdTA1MTkiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1MWFcN0NcMlwyXHUwNTFhXHUwNTFiXDdXXDJcMlx1MDUxYlx1 MDUxY1w3TlwyXDJcdTA1MWMiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MWRcN1Zc MlwyXHUwNTFkXHUwMGU4XDNcMlwyXDJcdTA1MWVcdTA1MWZcN09cMlwyXHUwNTFmIg0KPiApDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTIwXDdDXDJcMlx1MDUyMFx1MDUyMVw3UFwyXDJcdTA1 MjFcdTA1MjJcN1dcMlwyXHUwNTIyIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTIz XDdIXDJcMlx1MDUyM1x1MDUyNFw3Q1wyXDJcdTA1MjRcdTA1MjVcN0VcMlwyXHUwNTI1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MjZcN1ZcMlwyXHUwNTI2XHUwNTI3XDdXXDJcMlx1MDUy N1x1MDUyOFw3VFwyXDJcdTA1MjgiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1Mjlc N0tcMlwyXHUwNTI5XHUwNTJhXDdQXDJcMlx1MDUyYVx1MDUyYlw3SVwyXDJcdTA1MmIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDBlYVwzXDJcMlwyXHUwNTJjXHUwNTJkXDdFXDJcMlx1MDUy ZFx1MDUyZVw3SlwyXDJcdTA1MmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUyZlw3R1wy XDJcdTA1MmZcdTA1MzBcN0VcMlwyXHUwNTMwXHUwNTMxXDdNXDJcMlx1MDUzMSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNTMyXDdEXDJcMlx1MDUzMlx1MDUzM1w3UVwyXDJcdTA1MzNcdTA1 MzRcN1pcMlwyXHUwNTM0Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTM1XDdhXDJc Mlx1MDUzNVx1MDUzNlw3RlwyXDJcdTA1MzZcdTA1MzdcN0dcMlwyXHUwNTM3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA1MzhcN0hcMlwyXHUwNTM4XHUwNTM5XDdDXDJcMlx1MDUzOVx1MDUz YVw3V1wyXDJcdTA1M2ENCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1M2JcN05cMlwy XHUwNTNiXHUwNTNjXDdWXDJcMlx1MDUzY1x1MDBlY1wzXDJcMlwyXHUwNTNkIg0KPiApDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNTNlXDdFXDJcMlx1MDUzZVx1MDUzZlw3SlwyXDJcdTA1M2Zc dTA1NDBcN0dcMlwyXHUwNTQwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NDFcN0VcMlwy XHUwNTQxXHUwNTQyXDdNXDJcMlx1MDU0Mlx1MDU0M1w3RFwyXDJcdTA1NDMiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1NDRcN1FcMlwyXHUwNTQ0XHUwNTQ1XDdaXDJcMlx1MDU0NVx1 MDU0Nlw3YVwyXDJcdTA1NDYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU0N1w3RlwyXDJc dTA1NDdcdTA1NDhcN0dcMlwyXHUwNTQ4XHUwNTQ5XDdIXDJcMlx1MDU0OSINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDU0YVw3Q1wyXDJcdTA1NGFcdTA1NGJcN1dcMlwyXHUwNTRiXHUw NTRjXDdOXDJcMlx1MDU0YyINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU0ZFw3Vlwy XDJcdTA1NGRcdTA1NGVcN2FcMlwyXHUwNTRlXHUwNTRmXDdPXDJcMlx1MDU0ZiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNTUwXDdIXDJcMlx1MDU1MFx1MDU1MVw3SVwyXDJcdTA1NTFcdTAw ZWVcM1wyXDJcMlx1MDU1MiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU1M1w3S1wy XDJcdTA1NTNcdTA1NTRcN1BcMlwyXHUwNTU0XHUwNTU1XDdWXDJcMlx1MDU1NSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNTU2XDdHXDJcMlx1MDU1Nlx1MDU1N1w3VFwyXDJcdTA1NTdcdTA1 NThcN0NcMlwyXHUwNTU4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NTlcN0VcMlwyXHUw NTU5XHUwNTVhXDdWXDJcMlx1MDU1YVx1MDU1Ylw3S1wyXDJcdTA1NWIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDU1Y1w3WFwyXDJcdTA1NWNcdTA1NWRcN0dcMlwyXHUwNTVkXHUwMGYwXDNc MlwyXDJcdTA1NWUiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NWZcN1BcMlwyXHUw NTVmXHUwNTYwXDdYXDJcMlx1MDU2MFx1MDU2MVw3YVwyXDJcdTA1NjEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDU2Mlw3Q1wyXDJcdTA1NjJcdTA1NjNcN0VcMlwyXHUwNTYzXHUwNTY0XDdF XDJcMlx1MDU2NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTY1XDdHXDJcMlx1MDU2NVx1 MDU2Nlw3VVwyXDJcdTA1NjZcdTA1NjdcN1VcMlwyXHUwNTY3Ig0KPiApDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMGYyXDNcMlwyXDJcdTA1NjhcdTA1NjlcN1RcMlwyXHUwNTY5XHUwNTZhXDdH XDJcMlx1MDU2YSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU2Ylw3VVwyXDJcdTA1 NmJcdTA1NmNcN0dcMlwyXHUwNTZjXHUwNTZkXDdWXDJcMlx1MDU2ZCINCj4gKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDU2ZVw3YVwyXDJcdTA1NmVcdTA1NmZcN1RcMlwyXHUwNTZmXHUwNTcw XDdHXDJcMlx1MDU3MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTcxXDdTXDJcMlx1MDU3 MVx1MDU3Mlw3V1wyXDJcdTA1NzJcdTA1NzNcN0tcMlwyXHUwNTczIg0KPiApDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNTc0XDdUXDJcMlx1MDU3NFx1MDU3NVw3R1wyXDJcdTA1NzVcdTA1NzZc N0ZcMlwyXHUwNTc2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZjRcM1wyXDJcMlx1MDU3 N1x1MDU3OFw3VFwyXDJcdTA1NzhcdTA1NzlcN0dcMlwyXHUwNTc5Ig0KPiApDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNTdhXDdFXDJcMlx1MDU3YVx1MDU3Ylw3UVwyXDJcdTA1N2JcdTA1N2Nc N1BcMlwyXHUwNTdjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1N2RcN1BcMlwyXHUwNTdk XHUwNTdlXDdHXDJcMlx1MDU3ZVx1MDU3Zlw3RVwyXDJcdTA1N2YiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDU4MFw3VlwyXDJcdTA1ODBcdTA1ODFcN2FcMlwyXHUwNTgxXHUwNTgyXDdUXDJc Mlx1MDU4MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTgzXDdHXDJcMlx1MDU4M1x1MDU4 NFw3U1wyXDJcdTA1ODRcdTA1ODVcN1dcMlwyXHUwNTg1Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNTg2XDdLXDJcMlx1MDU4Nlx1MDU4N1w3VFwyXDJcdTA1ODdcdTA1ODhcN0dcMlwy XHUwNTg4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ODlcN0ZcMlwyXHUwNTg5XHUwMGY2 XDNcMlwyXDJcdTA1OGFcdTA1OGJcN05cMlwyXHUwNThiIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNThjXDdDXDJcMlx1MDU4Y1x1MDU4ZFw3VlwyXDJcdTA1OGRcdTA1OGVcN0dcMlwy XHUwNThlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1OGZcN2FcMlwyXHUwNThmXHUwNTkw XDdFXDJcMlx1MDU5MFx1MDU5MVw3SlwyXDJcdTA1OTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDU5Mlw3R1wyXDJcdTA1OTJcdTA1OTNcN0VcMlwyXHUwNTkzXHUwNTk0XDdNXDJcMlx1MDU5 NCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBmOFwzXDJcMlwyXHUwNTk1XHUwNTk2 XDdUXDJcMlx1MDU5Nlx1MDU5N1w3R1wyXDJcdTA1OTciDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA1OThcN0NcMlwyXHUwNTk4XHUwNTk5XDdGXDJcMlx1MDU5OVx1MDU5YVw3YVwyXDJc dTA1OWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU5Ylw3UVwyXDJcdTA1OWJcdTA1OWNc N1BcMlwyXHUwNTljXHUwNTlkXDdOXDJcMlx1MDU5ZCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDU5ZVw3W1wyXDJcdTA1OWVcdTAwZmFcM1wyXDJcMlx1MDU5Zlx1MDVhMFw3UVwyXDJc dTA1YTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVhMVw3UlwyXDJcdTA1YTFcdTA1YTJc N1ZcMlwyXHUwNWEyXHUwNWEzXDdLXDJcMlx1MDVhMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNWE0XDdRXDJcMlx1MDVhNFx1MDVhNVw3UFwyXDJcdTA1YTVcdTA1YTZcN1VcMlwyXHUwNWE2 Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWE3XDdhXDJcMlx1MDVhN1x1MDVhOFw3 UVwyXDJcdTA1YThcdTA1YTlcN1BcMlwyXHUwNWE5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA1YWFcN05cMlwyXHUwNWFhXHUwNWFiXDdbXDJcMlx1MDVhYlx1MDBmY1wzXDJcMlwyXHUwNWFj IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YWRcN1RcMlwyXHUwNWFkXHUwNWFlXDdHXDJc Mlx1MDVhZVx1MDVhZlw3VVwyXDJcdTA1YWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVi MFw3VlwyXDJcdTA1YjBcdTA1YjFcN2FcMlwyXHUwNWIxXHUwNWIyXDdVXDJcMlx1MDViMiINCj4g KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDViM1w3VlwyXDJcdTA1YjNcdTA1YjRcN1tcMlwy XHUwNWI0XHUwNWI1XDdOXDJcMlx1MDViNSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDViNlw3R1wyXDJcdTA1YjZcdTAwZmVcM1wyXDJcMlx1MDViN1x1MDViOFw3ZVwyXDJcdTA1Yjgi DQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YjlcN25cMlwyXHUwNWI5XHUwNWJhXDdj XDJcMlx1MDViYVx1MDViYlw3dVwyXDJcdTA1YmIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA1YmNcN3VcMlwyXHUwNWJjXHUwMTAwXDNcMlwyXDJcdTA1YmRcdTA1YmVcN3VcMlwyXHUw NWJlDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWJmXDd3XDJcMlx1MDViZlx1MDVj MFw3ZFwyXDJcdTA1YzBcdTA1YzFcN2VcMlwyXHUwNWMxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA1YzJcN25cMlwyXHUwNWMyXHUwNWMzXDdjXDJcMlx1MDVjM1x1MDVjNFw3dVwyXDJcdTA1 YzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVjNVw3dVwyXDJcdTA1YzVcdTAxMDJcM1wy XDJcMlx1MDVjNlx1MDVjN1w3ZVwyXDJcdTA1YzciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDVjOFw3blwyXDJcdTA1YzhcdTA1YzlcN2NcMlwyXHUwNWM5XHUwNWNhXDd1XDJcMlx1MDVjYSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWNiXDd1XDJcMlx1MDVjYlx1MDVjY1w3aVwyXDJc dTA1Y2NcdTA1Y2RcN3dcMlwyXHUwNWNkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1Y2Vc N2tcMlwyXHUwNWNlXHUwNWNmXDdmXDJcMlx1MDVjZlx1MDEwNFwzXDJcMlwyXHUwNWQwIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZDFcN3ZcMlwyXHUwNWQxXHUwNWQyXDd7XDJcMlx1MDVk Mlx1MDVkM1w3clwyXDJcdTA1ZDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVkNFw3Z1wy XDJcdTA1ZDRcdTA1ZDVcN2ZcMlwyXHUwNWQ1XHUwNWQ2XDdnXDJcMlx1MDVkNiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWQ3XDdoXDJcMlx1MDVkN1x1MDEwNlwzXDJcMlwyXHUwNWQ4XHUw NWQ5XDd0XDJcMlx1MDVkOSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVkYVw3Z1wy XDJcdTA1ZGFcdTA1ZGJcN3VcMlwyXHUwNWRiXHUwNWRjXDd2XDJcMlx1MDVkYyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWRkXDdxXDJcMlx1MDVkZFx1MDVkZVw3dFwyXDJcdTA1ZGVcdTA1 ZGZcN2dcMlwyXHUwNWRmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMDhcM1wyXDJcMlx1 MDVlMFx1MDVlMVw3dVwyXDJcdTA1ZTFcdTA1ZTJcN2NcMlwyXHUwNWUyIg0KPiApDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWUzXDd4XDJcMlx1MDVlM1x1MDVlNFw3Z1wyXDJcdTA1ZTRcdTAx MGFcM1wyXDJcMlx1MDVlNSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVlNlw3Zlwy XDJcdTA1ZTZcdTA1ZTdcN2dcMlwyXHUwNWU3XHUwNWU4XDdoXDJcMlx1MDVlOCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWU5XDdjXDJcMlx1MDVlOVx1MDVlYVw3d1wyXDJcdTA1ZWFcdTA1 ZWJcN25cMlwyXHUwNWViIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWVjXDd2XDJc Mlx1MDVlY1x1MDVlZFw3dVwyXDJcdTA1ZWRcdTAxMGNcM1wyXDJcMlx1MDVlZSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWVmXDdkXDJcMlx1MDVlZlx1MDVmMFw3Y1wyXDJcdTA1ZjBcdTA1 ZjFcN3BcMlwyXHUwNWYxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZjJcN3BcMlwyXHUw NWYyXHUwNWYzXDdnXDJcMlx1MDVmM1x1MDVmNFw3dFwyXDJcdTA1ZjQiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDEwZVwzXDJcMlwyXHUwNWY1XHUwNWY2XDdjXDJcMlx1MDVmNlx1MDVmN1w3 blwyXDJcdTA1ZjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVmOFw3a1wyXDJcdTA1Zjhc dTA1ZjlcN2lcMlwyXHUwNWY5XHUwNWZhXDdwXDJcMlx1MDVmYSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMTEwXDNcMlwyXDJcdTA1ZmJcdTA1ZmNcN25cMlwyXHUwNWZjXHUwNWZkXDdnXDJc Mlx1MDVmZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWZlXDdoXDJcMlx1MDVmZVx1MDVm Zlw3dlwyXDJcdTA1ZmZcdTAxMTJcM1wyXDJcMlx1MDYwMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNjAxXDd0XDJcMlx1MDYwMVx1MDYwMlw3a1wyXDJcdTA2MDJcdTA2MDNcN2lcMlwyXHUw NjAzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MDRcN2pcMlwyXHUwNjA0XHUwNjA1XDd2 XDJcMlx1MDYwNVx1MDExNFwzXDJcMlwyXHUwNjA2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA2MDdcN2VcMlwyXHUwNjA3XHUwNjA4XDdnXDJcMlx1MDYwOFx1MDYwOVw3cFwyXDJcdTA2MDki KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYwYVw3dlwyXDJcdTA2MGFcdTA2MGJcN2dcMlwy XHUwNjBiXHUwNjBjXDd0XDJcMlx1MDYwYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTE2 XDNcMlwyXDJcdTA2MGRcdTA2MGVcN25cMlwyXHUwNjBlXHUwNjBmXDdrXDJcMlx1MDYwZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjEwXDdwXDJcMlx1MDYxMFx1MDYxMVw3Z1wyXDJcdTA2 MTFcdTAxMThcM1wyXDJcMlx1MDYxMiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYx M1w3cFwyXDJcdTA2MTNcdTA2MTRcN2NcMlwyXHUwNjE0XHUwNjE1XDdvXDJcMlx1MDYxNSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjE2XDdnXDJcMlx1MDYxNlx1MDExYVwzXDJcMlwyXHUw NjE3XHUwNjE4XDd4XDJcMlx1MDYxOCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYx OVw3Y1wyXDJcdTA2MTlcdTA2MWFcN3RcMlwyXHUwNjFhXHUwNjFiXDdrXDJcMlx1MDYxYiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjFjXDdmXDJcMlx1MDYxY1x1MDExY1wzXDJcMlwyXHUw NjFkXHUwNjFlXDdzXDJcMlx1MDYxZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjFmXDd3 XDJcMlx1MDYxZlx1MDYyMFw3Z1wyXDJcdTA2MjBcdTA2MjFcN3VcMlwyXHUwNjIxIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA2MjJcN3ZcMlwyXHUwNjIyXHUwNjIzXDdrXDJcMlx1MDYyM1x1 MDYyNFw3cVwyXDJcdTA2MjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYyNVw3cFwyXDJc dTA2MjVcdTAxMWVcM1wyXDJcMlx1MDYyNlx1MDYyN1w3c1wyXDJcdTA2MjciDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA2MjhcN3dcMlwyXHUwNjI4XHUwNjI5XDdnXDJcMlx1MDYyOVx1 MDYyYVw3dVwyXDJcdTA2MmEiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MmJcN3Zc MlwyXHUwNjJiXHUwNjJjXDdrXDJcMlx1MDYyY1x1MDYyZFw3cVwyXDJcdTA2MmQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDYyZVw3cFwyXDJcdTA2MmVcdTA2MmZcN2tcMlwyXHUwNjJmXHUw NjMwXDdmXDJcMlx1MDYzMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTIwXDNcMlwyXDJc dTA2MzFcdTA2MzJcN2tcMlwyXHUwNjMyXHUwNjMzXDdvXDJcMlx1MDYzMyINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDYzNFw3Y1wyXDJcdTA2MzRcdTA2MzVcN2lcMlwyXHUwNjM1XHUw NjM2XDdnXDJcMlx1MDYzNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTIyXDNcMlwyXDJc dTA2MzdcdTA2MzhcN25cMlwyXHUwNjM4XHUwNjM5XDdxXDJcMlx1MDYzOSINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDYzYVw3ZVwyXDJcdTA2M2FcdTA2M2JcN21cMlwyXHUwNjNiXHUw NjNjXDdnXDJcMlx1MDYzYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjNkXDdmXDJcMlx1 MDYzZFx1MDEyNFwzXDJcMlwyXHUwNjNlXHUwNjNmXDd0XDJcMlx1MDYzZiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjQwXDd3XDJcMlx1MDY0MFx1MDY0MVw3blwyXDJcdTA2NDFcdTA2NDJc N2dcMlwyXHUwNjQyIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTI2XDNcMlwyXDJc dTA2NDNcdTA2NDRcN2dcMlwyXHUwNjQ0XHUwNjQ1XDdwXDJcMlx1MDY0NSINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDY0Nlw3ZlwyXDJcdTA2NDZcdTA2NDdcN3RcMlwyXHUwNjQ3XHUw NjQ4XDd3XDJcMlx1MDY0OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjQ5XDduXDJcMlx1 MDY0OVx1MDY0YVw3Z1wyXDJcdTA2NGFcdTAxMjhcM1wyXDJcMlx1MDY0YiINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDY0Y1w3eFwyXDJcdTA2NGNcdTA2NGRcN2NcMlwyXHUwNjRkXHUw NjRlXDduXDJcMlx1MDY0ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjRmXDd3XDJcMlx1 MDY0Zlx1MDY1MFw3Z1wyXDJcdTA2NTBcdTAxMmFcM1wyXDJcMlx1MDY1MSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjUyXDd0XDJcMlx1MDY1Mlx1MDY1M1w3Z1wyXDJcdTA2NTNcdTA2NTRc N2NcMlwyXHUwNjU0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NTVcN2ZcMlwyXHUwNjU1 XHUwMTJjXDNcMlwyXDJcdTA2NTZcdTA2NTdcN3lcMlwyXHUwNjU3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA2NThcN3RcMlwyXHUwNjU4XHUwNjU5XDdrXDJcMlx1MDY1OVx1MDY1YVw3dlwy XDJcdTA2NWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY1Ylw3Z1wyXDJcdTA2NWJcdTAx MmVcM1wyXDJcMlx1MDY1Y1x1MDY1ZFw3dFwyXDJcdTA2NWQiDQo+ICkNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA2NWVcN2dcMlwyXHUwNjVlXHUwNjVmXDd1XDJcMlx1MDY1Zlx1MDY2MFw3Z1wy XDJcdTA2NjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY2MVw3dlwyXDJcdTA2NjFcdTA2 NjJcN2RcMlwyXHUwNjYyXHUwNjYzXDd3XDJcMlx1MDY2MyINCj4gKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDY2NFw3dlwyXDJcdTA2NjRcdTA2NjVcN3ZcMlwyXHUwNjY1XHUwNjY2XDdxXDJc Mlx1MDY2NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjY3XDdwXDJcMlx1MDY2N1x1MDEz MFwzXDJcMlwyXHUwNjY4XHUwNjY5XDdnXDJcMlx1MDY2OSINCj4gKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDY2YVw3cFwyXDJcdTA2NmFcdTA2NmJcN2ZcMlwyXHUwNjZiXHUwNjZjXDd0XDJc Mlx1MDY2YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjZkXDdnXDJcMlx1MDY2ZFx1MDY2 ZVw3dVwyXDJcdTA2NmVcdTA2NmZcN2dcMlwyXHUwNjZmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2NzBcN3ZcMlwyXHUwNjcwXHUwNjcxXDdkXDJcMlx1MDY3MVx1MDY3Mlw3d1wyXDJcdTA2 NzIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NzNcN3ZcMlwyXHUwNjczXHUwNjc0 XDd2XDJcMlx1MDY3NFx1MDY3NVw3cVwyXDJcdTA2NzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDY3Nlw3cFwyXDJcdTA2NzZcdTAxMzJcM1wyXDJcMlx1MDY3N1x1MDY3OFw3ZlwyXDJcdTA2 NzgiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NzlcN2dcMlwyXHUwNjc5XHUwNjdh XDdoXDJcMlx1MDY3YVx1MDY3Ylw3Y1wyXDJcdTA2N2IiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDY3Y1w3d1wyXDJcdTA2N2NcdTA2N2RcN25cMlwyXHUwNjdkXHUwNjdlXDd2XDJcMlx1MDY3 ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjdmXDd1XDJcMlx1MDY3Zlx1MDY4MFw3dlwy XDJcdTA2ODBcdTA2ODFcN3FcMlwyXHUwNjgxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2 ODJcN3RcMlwyXHUwNjgyXHUwNjgzXDdnXDJcMlx1MDY4M1x1MDEzNFwzXDJcMlwyXHUwNjg0IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ODVcN2NcMlwyXHUwNjg1XHUwNjg2XDd2XDJcMlx1 MDY4Nlx1MDY4N1w3dlwyXDJcdTA2ODciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY4OFw3 dFwyXDJcdTA2ODhcdTA2ODlcN2tcMlwyXHUwNjg5XHUwNjhhXDdkXDJcMlx1MDY4YSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNjhiXDd3XDJcMlx1MDY4Ylx1MDY4Y1w3dlwyXDJcdTA2OGNc dTA2OGRcN2dcMlwyXHUwNjhkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMzZcM1wyXDJc Mlx1MDY4ZVx1MDY4Zlw3eFwyXDJcdTA2OGZcdTA2OTBcN2NcMlwyXHUwNjkwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA2OTFcN3RcMlwyXHUwNjkxXHUwNjkyXDd1XDJcMlx1MDY5Mlx1MDY5 M1w3dlwyXDJcdTA2OTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY5NFw3cVwyXDJcdTA2 OTRcdTA2OTVcN3RcMlwyXHUwNjk1XHUwNjk2XDdnXDJcMlx1MDY5NiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMTM4XDNcMlwyXDJcdTA2OTdcdTA2OThcN2dcMlwyXHUwNjk4XHUwNjk5XDdo XDJcMlx1MDY5OSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY5YVw3a1wyXDJcdTA2 OWFcdTA2OWJcN3hcMlwyXHUwNjliXHUwNjljXDdjXDJcMlx1MDY5YyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNjlkXDd0XDJcMlx1MDY5ZFx1MDY5ZVw3dVwyXDJcdTA2OWVcdTA2OWZcN3Zc MlwyXHUwNjlmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YTBcN3FcMlwyXHUwNmEwXHUw NmExXDd0XDJcMlx1MDZhMVx1MDZhMlw3Z1wyXDJcdTA2YTIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDEzYVwzXDJcMlwyXHUwNmEzXHUwNmE0XDd4XDJcMlx1MDZhNFx1MDZhNVw3Y1wyXDJc dTA2YTUiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YTZcN3RcMlwyXHUwNmE2XHUw NmE3XDd1XDJcMlx1MDZhN1x1MDZhOFw3a1wyXDJcdTA2YTgiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDZhOVw3fFwyXDJcdTA2YTlcdTA2YWFcN2dcMlwyXHUwNmFhXHUwMTNjXDNcMlwyXDJc dTA2YWIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YWNcN3BcMlwyXHUwNmFjXHUw NmFkXDdjXDJcMlx1MDZhZFx1MDZhZVw3b1wyXDJcdTA2YWUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDZhZlw3Z1wyXDJcdTA2YWZcdTA2YjBcN3hcMlwyXHUwNmIwXHUwNmIxXDdjXDJcMlx1 MDZiMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmIyXDduXDJcMlx1MDZiMlx1MDZiM1w3 d1wyXDJcdTA2YjNcdTA2YjRcN2dcMlwyXHUwNmI0Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNmI1XDd4XDJcMlx1MDZiNVx1MDZiNlw3Y1wyXDJcdTA2YjZcdTA2YjdcN3RcMlwyXHUw NmI3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YjhcN3VcMlwyXHUwNmI4XHUwNmI5XDd2 XDJcMlx1MDZiOVx1MDZiYVw3cVwyXDJcdTA2YmEiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2YmJcN3RcMlwyXHUwNmJiXHUwNmJjXDdnXDJcMlx1MDZiY1x1MDEzZVwzXDJcMlwyXHUw NmJkIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmJlXDdjXDJcMlx1MDZiZVx1MDZi Zlw3ZVwyXDJcdTA2YmZcdTA2YzBcN3ZcMlwyXHUwNmMwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2YzFcN2tcMlwyXHUwNmMxXHUwNmMyXDdxXDJcMlx1MDZjMlx1MDZjM1w3cFwyXDJcdTA2 YzMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE0MFwzXDJcMlwyXHUwNmM0XHUwNmM1XDdl XDJcMlx1MDZjNVx1MDZjNlw3cVwyXDJcdTA2YzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDZjN1w3cFwyXDJcdTA2YzdcdTA2YzhcN2hcMlwyXHUwNmM4XHUwNmM5XDdrXDJcMlx1MDZjOSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmNhXDdpXDJcMlx1MDZjYVx1MDE0MlwzXDJcMlwy XHUwNmNiXHUwNmNjXDdnXDJcMlx1MDZjYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmNk XDdwXDJcMlx1MDZjZFx1MDZjZVw3ZlwyXDJcdTA2Y2VcdTA2Y2ZcN2NcMlwyXHUwNmNmIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZDBcN2VcMlwyXHUwNmQwXHUwNmQxXDd2XDJcMlx1MDZk MVx1MDZkMlw3a1wyXDJcdTA2ZDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZkM1w3cVwy XDJcdTA2ZDNcdTA2ZDRcN3BcMlwyXHUwNmQ0XHUwMTQ0XDNcMlwyXDJcdTA2ZDUNCj4gIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZDZcN3RcMlwyXHUwNmQ2XHUwNmQ3XDdnXDJcMlx1MDZk N1x1MDZkOFw3aFwyXDJcdTA2ZDgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZkOVw3dFwy XDJcdTA2ZDlcdTA2ZGFcN2dcMlwyXHUwNmRhXHUwNmRiXDd1XDJcMlx1MDZkYiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNmRjXDdqXDJcMlx1MDZkY1x1MDE0NlwzXDJcMlwyXHUwNmRkXHUw NmRlXDdrXDJcMlx1MDZkZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmRmXDdwXDJcMlx1 MDZkZlx1MDZlMFw3dlwyXDJcdTA2ZTBcdTA2ZTFcN2dcMlwyXHUwNmUxIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA2ZTJcN3RcMlwyXHUwNmUyXHUwNmUzXDd4XDJcMlx1MDZlM1x1MDZlNFw3 Y1wyXDJcdTA2ZTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZlNVw3blwyXDJcdTA2ZTVc dTAxNDhcM1wyXDJcMlx1MDZlNlx1MDZlN1w3eFwyXDJcdTA2ZTciDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA2ZThcN2NcMlwyXHUwNmU4XHUwNmU5XDd0XDJcMlx1MDZlOVx1MDZlYVw3 dVwyXDJcdTA2ZWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZlYlw3dlwyXDJcdTA2ZWJc dTA2ZWNcN3FcMlwyXHUwNmVjXHUwNmVkXDd0XDJcMlx1MDZlZCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNmVlXDdnXDJcMlx1MDZlZVx1MDZlZlw3ZlwyXDJcdTA2ZWZcdTA2ZjBcN2dcMlwy XHUwNmYwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZjFcN3hcMlwyXHUwNmYxXHUwNmYy XDdrXDJcMlx1MDZmMlx1MDZmM1w3ZVwyXDJcdTA2ZjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDZmNFw3Z1wyXDJcdTA2ZjRcdTAxNGFcM1wyXDJcMlx1MDZmNVx1MDZmNlw3aVwyXDJcdTA2 ZjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZmN1w3d1wyXDJcdTA2ZjdcdTA2ZjhcN2tc MlwyXHUwNmY4XHUwNmY5XDdmXDJcMlx1MDZmOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NmZhXDdxXDJcMlx1MDZmYVx1MDZmYlw3clwyXDJcdTA2ZmJcdTAxNGNcM1wyXDJcMlx1MDZmYyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmZkXDdnXDJcMlx1MDZmZFx1MDZmZVw3cFwyXDJc dTA2ZmVcdTA2ZmZcN2ZcMlwyXHUwNmZmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MDBc N2lcMlwyXHUwNzAwXHUwNzAxXDd3XDJcMlx1MDcwMVx1MDcwMlw3a1wyXDJcdTA3MDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDcwM1w3ZlwyXDJcdTA3MDNcdTA3MDRcN3FcMlwyXHUwNzA0 XHUwNzA1XDdyXDJcMlx1MDcwNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTRlXDNcMlwy XDJcdTA3MDZcdTA3MDdcN2ZcMlwyXHUwNzA3XHUwNzA4XDdjXDJcMlx1MDcwOCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNzA5XDd2XDJcMlx1MDcwOVx1MDcwYVw3Y1wyXDJcdTA3MGFcdTA3 MGJcN3ZcMlwyXHUwNzBiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MGNcN3tcMlwyXHUw NzBjXHUwNzBkXDdyXDJcMlx1MDcwZFx1MDcwZVw3Z1wyXDJcdTA3MGUiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDE1MFwzXDJcMlwyXHUwNzBmXHUwNzEwXDdmXDJcMlx1MDcxMFx1MDcxMVw3 Y1wyXDJcdTA3MTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcxMlw3dlwyXDJcdTA3MTJc dTA3MTNcN2NcMlwyXHUwNzEzXHUwMTUyXDNcMlwyXDJcdTA3MTQiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA3MTVcN29cMlwyXHUwNzE1XHUwNzE2XDdxXDJcMlx1MDcxNlx1MDcxN1w3 ZlwyXDJcdTA3MTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcxOFw3Y1wyXDJcdTA3MThc dTA3MTlcN25cMlwyXHUwNzE5XHUwMTU0XDNcMlwyXDJcdTA3MWEiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA3MWJcN1BcMlwyXHUwNzFiXHUwNzFjXDdRXDJcMlx1MDcxY1x1MDcxZFw3 UFwyXDJcdTA3MWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcxZVw3YVwyXDJcdTA3MWVc dTA3MWZcN0ZcMlwyXHUwNzFmXHUwNzIwXDdHXDJcMlx1MDcyMCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNzIxXDdYXDJcMlx1MDcyMVx1MDcyMlw3S1wyXDJcdTA3MjJcdTA3MjNcN0VcMlwy XHUwNzIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MjRcN0dcMlwyXHUwNzI0XHUwMTU2 XDNcMlwyXDJcdTA3MjVcdTA3MjZcN0ZcMlwyXHUwNzI2Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNzI3XDdLXDJcMlx1MDcyN1x1MDcyOFw3VVwyXDJcdTA3MjhcdTA3MjlcN01cMlwy XHUwNzI5Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzJhXDdhXDJcMlx1MDcyYVx1 MDcyYlw3RlwyXDJcdTA3MmJcdTA3MmNcN0dcMlwyXHUwNzJjIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA3MmRcN1hcMlwyXHUwNzJkXHUwNzJlXDdLXDJcMlx1MDcyZVx1MDcyZlw3RVwyXDJc dTA3MmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDczMFw3R1wyXDJcdTA3MzBcdTAxNThc M1wyXDJcMlx1MDczMVx1MDczMlw3WFwyXDJcdTA3MzIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA3MzNcN0tcMlwyXHUwNzMzXHUwNzM0XDdGXDJcMlx1MDczNFx1MDczNVw3R1wyXDJc dTA3MzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDczNlw3UVwyXDJcdTA3MzZcdTA3Mzdc N2FcMlwyXHUwNzM3XHUwNzM4XDdGXDJcMlx1MDczOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNzM5XDdHXDJcMlx1MDczOVx1MDczYVw3WFwyXDJcdTA3M2FcdTA3M2JcN0tcMlwyXHUwNzNi Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzNjXDdFXDJcMlx1MDczY1x1MDczZFw3 R1wyXDJcdTA3M2RcdTAxNWFcM1wyXDJcMlx1MDczZSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDczZlw3UFwyXDJcdTA3M2ZcdTA3NDBcN0dcMlwyXHUwNzQwXHUwNzQxXDdWXDJcMlx1 MDc0MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzQyXDdZXDJcMlx1MDc0Mlx1MDc0M1w3 UVwyXDJcdTA3NDNcdTA3NDRcN1RcMlwyXHUwNzQ0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA3NDVcN01cMlwyXHUwNzQ1XHUwNzQ2XDdhXDJcMlx1MDc0Nlx1MDc0N1w3RlwyXDJcdTA3NDci DQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NDhcN0dcMlwyXHUwNzQ4XHUwNzQ5XDdY XDJcMlx1MDc0OVx1MDc0YVw3S1wyXDJcdTA3NGEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDc0Ylw3RVwyXDJcdTA3NGJcdTA3NGNcN0dcMlwyXHUwNzRjXHUwMTVjXDNcMlwyXDJcdTA3NGQi DQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NGVcN0tcMlwyXHUwNzRlXHUwNzRmXDdQ XDJcMlx1MDc0Zlx1MDc1MFw3UlwyXDJcdTA3NTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDc1MVw3V1wyXDJcdTA3NTFcdTA3NTJcN1ZcMlwyXHUwNzUyXHUwNzUzXDdhXDJcMlx1MDc1MyIN Cj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc1NFw3RlwyXDJcdTA3NTRcdTA3NTVcN0dc MlwyXHUwNzU1XHUwNzU2XDdYXDJcMlx1MDc1NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NzU3XDdLXDJcMlx1MDc1N1x1MDc1OFw3RVwyXDJcdTA3NThcdTA3NTlcN0dcMlwyXHUwNzU5IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNWVcM1wyXDJcMlx1MDc1YVx1MDc1Ylw3UVwyXDJc dTA3NWJcdTA3NWNcN1BcMlwyXHUwNzVjIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NzVkXDdEXDJcMlx1MDc1ZFx1MDc1ZVw3UVwyXDJcdTA3NWVcdTA3NWZcN0NcMlwyXHUwNzVmIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NjBcN1RcMlwyXHUwNzYwXHUwNzYxXDdGXDJcMlx1 MDc2MVx1MDc2Mlw3YVwyXDJcdTA3NjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc2M1w3 RlwyXDJcdTA3NjNcdTA3NjRcN0dcMlwyXHUwNzY0XHUwNzY1XDdYXDJcMlx1MDc2NSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNzY2XDdLXDJcMlx1MDc2Nlx1MDc2N1w3RVwyXDJcdTA3Njdc dTA3NjhcN0dcMlwyXHUwNzY4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNjBcM1wyXDJc Mlx1MDc2OVx1MDc2YVw3UVwyXDJcdTA3NmFcdTA3NmJcN1ZcMlwyXHUwNzZiDQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNzZjXDdKXDJcMlx1MDc2Y1x1MDc2ZFw3R1wyXDJcdTA3NmRc dTA3NmVcN1RcMlwyXHUwNzZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NmZcN2FcMlwy XHUwNzZmXHUwNzcwXDdGXDJcMlx1MDc3MFx1MDc3MVw3R1wyXDJcdTA3NzEiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDc3Mlw3WFwyXDJcdTA3NzJcdTA3NzNcN0tcMlwyXHUwNzczXHUwNzc0 XDdFXDJcMlx1MDc3NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzc1XDdHXDJcMlx1MDc3 NVx1MDE2MlwzXDJcMlwyXHUwNzc2XHUwNzc3XDdVXDJcMlx1MDc3Nw0KPiAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDc3OFw3R1wyXDJcdTA3NzhcdTA3NzlcN1ZcMlwyXHUwNzc5XHUwNzdh XDdXXDJcMlx1MDc3YQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc3Ylw3UlwyXDJc dTA3N2JcdTA3N2NcN2FcMlwyXHUwNzdjXHUwNzdkXDdDXDJcMlx1MDc3ZCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNzdlXDdSXDJcMlx1MDc3ZVx1MDc3Zlw3UlwyXDJcdTA3N2ZcdTA3ODBc N05cMlwyXHUwNzgwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ODFcN0tcMlwyXHUwNzgx XHUwNzgyXDdFXDJcMlx1MDc4Mlx1MDc4M1w3Q1wyXDJcdTA3ODMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDc4NFw3VlwyXDJcdTA3ODRcdTA3ODVcN0tcMlwyXHUwNzg1XHUwNzg2XDdRXDJc Mlx1MDc4NiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc4N1w3UFwyXDJcdTA3ODdc dTAxNjRcM1wyXDJcMlx1MDc4OFx1MDc4OVw3SVwyXDJcdTA3ODkiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDc4YVw3R1wyXDJcdTA3OGFcdTA3OGJcN1BcMlwyXHUwNzhiXHUwNzhjXDdHXDJc Mlx1MDc4YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzhkXDdUXDJcMlx1MDc4ZFx1MDc4 ZVw3Q1wyXDJcdTA3OGVcdTA3OGZcN05cMlwyXHUwNzhmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA3OTBcN2FcMlwyXHUwNzkwXHUwNzkxXDdDXDJcMlx1MDc5MVx1MDc5Mlw3UlwyXDJcdTA3 OTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc5M1w3UlwyXDJcdTA3OTNcdTA3OTRcN05c MlwyXHUwNzk0XHUwNzk1XDdLXDJcMlx1MDc5NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw Nzk2XDdFXDJcMlx1MDc5Nlx1MDc5N1w3Q1wyXDJcdTA3OTdcdTA3OThcN1ZcMlwyXHUwNzk4IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3OTlcN0tcMlwyXHUwNzk5XHUwNzlhXDdRXDJcMlx1 MDc5YVx1MDc5Ylw3UFwyXDJcdTA3OWIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAx NjZcM1wyXDJcMlx1MDc5Y1x1MDc5ZFw3SFwyXDJcdTA3OWRcdTA3OWVcN1RcMlwyXHUwNzllIg0K PiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzlmXDdRXDJcMlx1MDc5Zlx1MDdhMFw3UFwy XDJcdTA3YTBcdTA3YTFcN1ZcMlwyXHUwN2ExIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3 YTJcN2FcMlwyXHUwN2EyXHUwN2EzXDdSXDJcMlx1MDdhM1x1MDdhNFw3Q1wyXDJcdTA3YTQiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdhNVw3SVwyXDJcdTA3YTVcdTA3YTZcN0dcMlwyXHUw N2E2XHUwMTY4XDNcMlwyXDJcdTA3YTciDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3 YThcN1VcMlwyXHUwN2E4XHUwN2E5XDdLXDJcMlx1MDdhOVx1MDdhYVw3UFwyXDJcdTA3YWEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdhYlw3SVwyXDJcdTA3YWJcdTA3YWNcN05cMlwyXHUw N2FjXHUwN2FkXDdHXDJcMlx1MDdhZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2FlXDdh XDJcMlx1MDdhZVx1MDdhZlw3V1wyXDJcdTA3YWZcdTA3YjBcN1VcMlwyXHUwN2IwIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA3YjFcN0dcMlwyXHUwN2IxXHUwMTZhXDNcMlwyXDJcdTA3YjJc dTA3YjNcN1tcMlwyXHUwN2IzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2I0XDdH XDJcMlx1MDdiNFx1MDdiNVw3Q1wyXDJcdTA3YjVcdTA3YjZcN1RcMlwyXHUwN2I2Ig0KPiApDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2I3XDdhXDJcMlx1MDdiN1x1MDdiOFw3VVwyXDJcdTA3 YjhcdTA3YjlcN1dcMlwyXHUwN2I5DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2Jh XDdSXDJcMlx1MDdiYVx1MDdiYlw3UlwyXDJcdTA3YmJcdTA3YmNcN1RcMlwyXHUwN2JjIg0KPiAp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2JkXDdHXDJcMlx1MDdiZFx1MDdiZVw3VVwyXDJc dTA3YmVcdTA3YmZcN1VcMlwyXHUwN2JmIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MTZjXDNcMlwyXDJcdTA3YzBcdTA3YzFcN09cMlwyXHUwN2MxXHUwN2MyXDdRXDJcMlx1MDdjMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2MzXDdQXDJcMlx1MDdjM1x1MDdjNFw3VlwyXDJc dTA3YzRcdTA3YzVcN0pcMlwyXHUwN2M1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3YzZc N2FcMlwyXHUwN2M2XHUwN2M3XDdVXDJcMlx1MDdjN1x1MDdjOFw3V1wyXDJcdTA3YzgiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDdjOVw3UlwyXDJcdTA3YzlcdTA3Y2FcN1JcMlwyXHUwN2Nh XHUwN2NiXDdUXDJcMlx1MDdjYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2NjXDdHXDJc Mlx1MDdjY1x1MDdjZFw3VVwyXDJcdTA3Y2RcdTA3Y2VcN1VcMlwyXHUwN2NlIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAxNmVcM1wyXDJcMlx1MDdjZlx1MDdkMFw3RlwyXDJcdTA3ZDBcdTA3 ZDFcN0NcMlwyXHUwN2QxIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2QyXDdbXDJc Mlx1MDdkMlx1MDdkM1w3YVwyXDJcdTA3ZDNcdTA3ZDRcN1VcMlwyXHUwN2Q0Ig0KPiApDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwN2Q1XDdXXDJcMlx1MDdkNVx1MDdkNlw3UlwyXDJcdTA3ZDZc dTA3ZDdcN1JcMlwyXHUwN2Q3DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2Q4XDdU XDJcMlx1MDdkOFx1MDdkOVw3R1wyXDJcdTA3ZDlcdTA3ZGFcN1VcMlwyXHUwN2RhDQo+ICIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2RiXDdVXDJcMlx1MDdkYlx1MDE3MFwzXDJcMlwyXHUw N2RjXHUwN2RkXDdKXDJcMlx1MDdkZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdk ZVw3UVwyXDJcdTA3ZGVcdTA3ZGZcN1dcMlwyXHUwN2RmXHUwN2UwXDdUXDJcMlx1MDdlMCINCj4g KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdlMVw3YVwyXDJcdTA3ZTFcdTA3ZTJcN1VcMlwy XHUwN2UyXHUwN2UzXDdXXDJcMlx1MDdlMw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDdlNFw3UlwyXDJcdTA3ZTRcdTA3ZTVcN1JcMlwyXHUwN2U1XHUwN2U2XDdUXDJcMlx1MDdlNiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2U3XDdHXDJcMlx1MDdlN1x1MDdlOFw3VVwyXDJc dTA3ZThcdTA3ZTlcN1VcMlwyXHUwN2U5Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MTcyXDNcMlwyXDJcdTA3ZWFcdTA3ZWJcN09cMlwyXHUwN2ViXHUwN2VjXDdLXDJcMlx1MDdlYyIN Cj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdlZFw3UFwyXDJcdTA3ZWRcdTA3ZWVcN1dc MlwyXHUwN2VlXHUwN2VmXDdWXDJcMlx1MDdlZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw N2YwXDdHXDJcMlx1MDdmMFx1MDdmMVw3YVwyXDJcdTA3ZjFcdTA3ZjJcN1VcMlwyXHUwN2YyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZjNcN1dcMlwyXHUwN2YzXHUwN2Y0XDdSXDJcMlx1 MDdmNFx1MDdmNVw3UlwyXDJcdTA3ZjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdmNlw3 VFwyXDJcdTA3ZjZcdTA3ZjdcN0dcMlwyXHUwN2Y3XHUwN2Y4XDdVXDJcMlx1MDdmOCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwN2Y5XDdVXDJcMlx1MDdmOVx1MDE3NFwzXDJcMlwyXHUwN2Zh XHUwN2ZiXDdVXDJcMlx1MDdmYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2ZjXDdHXDJc Mlx1MDdmY1x1MDdmZFw3RVwyXDJcdTA3ZmRcdTA3ZmVcN1FcMlwyXHUwN2ZlIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA3ZmZcN1BcMlwyXHUwN2ZmXHUwODAwXDdGXDJcMlx1MDgwMFx1MDgw MVw3YVwyXDJcdTA4MDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgwMlw3VVwyXDJcdTA4 MDJcdTA4MDNcN1dcMlwyXHUwODAzXHUwODA0XDdSXDJcMlx1MDgwNA0KPiAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDgwNVw3UlwyXDJcdTA4MDVcdTA4MDZcN1RcMlwyXHUwODA2XHUwODA3 XDdHXDJcMlx1MDgwNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODA4XDdVXDJcMlx1MDgw OFx1MDgwOVw3VVwyXDJcdTA4MDlcdTAxNzZcM1wyXDJcMlx1MDgwYQ0KPiAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDgwYlw3VVwyXDJcdTA4MGJcdTA4MGNcN1ZcMlwyXHUwODBjXHUwODBk XDdRXDJcMlx1MDgwZCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgwZVw3VFwyXDJc dTA4MGVcdTA4MGZcN0NcMlwyXHUwODBmXHUwODEwXDdJXDJcMlx1MDgxMCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwODExXDdHXDJcMlx1MDgxMVx1MDgxMlw3YVwyXDJcdTA4MTJcdTA4MTNc N1BcMlwyXHUwODEzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MTRcN1FcMlwyXHUwODE0 XHUwODE1XDdUXDJcMlx1MDgxNVx1MDgxNlw3T1wyXDJcdTA4MTYiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA4MTdcN0NcMlwyXHUwODE3XHUwODE4XDdOXDJcMlx1MDgxOFx1MDE3OFwz XDJcMlwyXHUwODE5DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODFhXDdVXDJcMlx1 MDgxYVx1MDgxYlw3VlwyXDJcdTA4MWJcdTA4MWNcN1FcMlwyXHUwODFjIg0KPiApDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwODFkXDdUXDJcMlx1MDgxZFx1MDgxZVw3Q1wyXDJcdTA4MWVcdTA4 MWZcN0lcMlwyXHUwODFmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MjBcN0dcMlwyXHUw ODIwXHUwODIxXDdhXDJcMlx1MDgyMVx1MDgyMlw3VlwyXDJcdTA4MjIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDgyM1w3S1wyXDJcdTA4MjNcdTA4MjRcN09cMlwyXHUwODI0XHUwODI1XDdH XDJcMlx1MDgyNSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE3YVwzXDJcMlwyXHUw ODI2XHUwODI3XDdVXDJcMlx1MDgyN1x1MDgyOFw3VlwyXDJcdTA4MjgNCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA4MjlcN1FcMlwyXHUwODI5XHUwODJhXDdUXDJcMlx1MDgyYVx1MDgy Ylw3Q1wyXDJcdTA4MmIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MmNcN0lcMlwy XHUwODJjXHUwODJkXDdHXDJcMlx1MDgyZFx1MDgyZVw3YVwyXDJcdTA4MmUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDgyZlw3WVwyXDJcdTA4MmZcdTA4MzBcN0NcMlwyXHUwODMwXHUwODMx XDdNXDJcMlx1MDgzMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODMyXDdHXDJcMlx1MDgz Mlx1MDgzM1w3V1wyXDJcdTA4MzNcdTA4MzRcN1JcMlwyXHUwODM0DQo+ICIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMTdjXDNcMlwyXDJcdTA4MzVcdTA4MzZcN1dcMlwyXHUwODM2XHUwODM3 XDdQXDJcMlx1MDgzNw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgzOFw3S1wyXDJc dTA4MzhcdTA4MzlcN1NcMlwyXHUwODM5XHUwODNhXDdXXDJcMlx1MDgzYSINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDgzYlw3R1wyXDJcdTA4M2JcdTAxN2VcM1wyXDJcMlx1MDgzY1x1 MDgzZFw3UFwyXDJcdTA4M2QNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4M2VcN1Fc MlwyXHUwODNlXHUwODNmXDdHXDJcMlx1MDgzZlx1MDg0MFw3T1wyXDJcdTA4NDAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDg0MVw3UlwyXDJcdTA4NDFcdTA4NDJcN1ZcMlwyXHUwODQyXHUw ODQzXDdbXDJcMlx1MDg0MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTgwXDNcMlwyXDJc dTA4NDRcdTA4NDVcN2VcMlwyXHUwODQ1XHUwODQ2XDdxXDJcMlx1MDg0NiINCj4gKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDg0N1w3cFwyXDJcdTA4NDdcdTA4NDhcN2ZcMlwyXHUwODQ4XHUw MTgyXDNcMlwyXDJcdTA4NDkiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NGFcN2hc MlwyXHUwODRhXHUwODRiXDdrXDJcMlx1MDg0Ylx1MDg0Y1w3cFwyXDJcdTA4NGMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDg0ZFw3ZlwyXDJcdTA4NGRcdTAxODRcM1wyXDJcMlx1MDg0ZVx1 MDg0Zlw3b1wyXDJcdTA4NGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg1MFw3a1wyXDJc dTA4NTBcdTA4NTFcN2ZcMlwyXHUwODUxXHUwMTg2XDNcMlwyXDJcdTA4NTIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDg1M1w3dlwyXDJcdTA4NTNcdTA4NTRcN3FcMlwyXHUwODU0XHUwODU1 XDdtXDJcMlx1MDg1NSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg1Nlw3Z1wyXDJc dTA4NTZcdTA4NTdcN3BcMlwyXHUwODU3XHUwMTg4XDNcMlwyXDJcdTA4NTgiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA4NTlcN3VcMlwyXHUwODU5XHUwODVhXDdyXDJcMlx1MDg1YVx1 MDg1Ylw3Y1wyXDJcdTA4NWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg1Y1w3cFwyXDJc dTA4NWNcdTAxOGFcM1wyXDJcMlx1MDg1ZFx1MDg1ZVw3ZlwyXDJcdTA4NWUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDg1Zlw3d1wyXDJcdTA4NWZcdTA4NjBcN3JcMlwyXHUwODYwXHUwMThj XDNcMlwyXDJcdTA4NjEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg2Mlw3eFwyXDJcdTA4 NjJcdTA4NjNcN2NcMlwyXHUwODYzXHUwODY0XDd0XDJcMlx1MDg2NCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwODY1XDdnXDJcMlx1MDg2NVx1MDg2Nlw3c1wyXDJcdTA4NjZcdTA4NjdcN3hc MlwyXHUwODY3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NjhcN2NcMlwyXHUwODY4XHUw ODY5XDduXDJcMlx1MDg2OVx1MDE4ZVwzXDJcMlwyXHUwODZhIg0KPiApDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwODZiXDd4XDJcMlx1MDg2Ylx1MDg2Y1w3Y1wyXDJcdTA4NmNcdTA4NmRcN3Rc MlwyXHUwODZkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxOTBcM1wyXDJcMlx1MDg2ZVx1 MDg2Zlw3a1wyXDJcdTA4NmZcdTA4NzBcN2ZcMlwyXHUwODcwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA4NzFcN2dcMlwyXHUwODcxXHUwODcyXDdzXDJcMlx1MDg3Mlx1MDg3M1w3eFwyXDJc dTA4NzMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg3NFw3Y1wyXDJcdTA4NzRcdTA4NzVc N25cMlwyXHUwODc1XHUwMTkyXDNcMlwyXDJcdTA4NzYiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA4NzdcN2tcMlwyXHUwODc3XHUwODc4XDdmXDJcMlx1MDg3OFx1MDg3OVw3Z1wyXDJc dTA4NzkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg3YVw3c1wyXDJcdTA4N2FcdTA4N2Jc N2tcMlwyXHUwODdiXHUwODdjXDdmXDJcMlx1MDg3YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMTk0XDNcMlwyXDJcdTA4N2RcdTA4N2VcN2tcMlwyXHUwODdlXHUwODdmXDdmXDJcMlx1MDg3 ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODgwXDdnXDJcMlx1MDg4MFx1MDg4MVw3c1wy XDJcdTA4ODFcdTA4ODJcN3hcMlwyXHUwODgyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4 ODNcN2NcMlwyXHUwODgzXHUwODg0XDduXDJcMlx1MDg4NFx1MDg4NVw3blwyXDJcdTA4ODUiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Nlw3a1wyXDJcdTA4ODZcdTA4ODdcN3VcMlwyXHUw ODg3XHUwODg4XDd2XDJcMlx1MDg4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTk2XDNc MlwyXDJcdTA4ODlcdTA4OGFcN3NcMlwyXHUwODhhXHUwODhiXDd3XDJcMlx1MDg4Yg0KPiAiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Y1w3Z1wyXDJcdTA4OGNcdTA4OGRcN3VcMlwyXHUw ODhkXHUwODhlXDd2XDJcMlx1MDg4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODhmXDdr XDJcMlx1MDg4Zlx1MDg5MFw3cVwyXDJcdTA4OTBcdTA4OTFcN3BcMlwyXHUwODkxIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA4OTJcN3RcMlwyXHUwODkyXHUwODkzXDdnXDJcMlx1MDg5M1x1 MDg5NFw3aFwyXDJcdTA4OTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE5OFwzXDJcMlwy XHUwODk1XHUwODk2XDd0XDJcMlx1MDg5Nlx1MDg5N1w3d1wyXDJcdTA4OTciDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA4OThcN25cMlwyXHUwODk4XHUwODk5XDdnXDJcMlx1MDg5OVx1 MDg5YVw3dFwyXDJcdTA4OWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg5Ylw3Z1wyXDJc dTA4OWJcdTA4OWNcN2hcMlwyXHUwODljXHUwMTlhXDNcMlwyXDJcdTA4OWQiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA4OWVcN3VcMlwyXHUwODllXHUwODlmXDd2XDJcMlx1MDg5Zlx1 MDhhMFw3dFwyXDJcdTA4YTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhhMVw3a1wyXDJc dTA4YTFcdTA4YTJcN3BcMlwyXHUwOGEyXHUwOGEzXDdpXDJcMlx1MDhhMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwOGE0XDd0XDJcMlx1MDhhNFx1MDhhNVw3Z1wyXDJcdTA4YTVcdTA4YTZc N2hcMlwyXHUwOGE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxOWNcM1wyXDJcMlx1MDhh N1x1MDhhOFw3clwyXDJcdTA4YThcdTA4YTlcN3dcMlwyXHUwOGE5Ig0KPiApDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwOGFhXDd1XDJcMlx1MDhhYVx1MDhhYlw3alwyXDJcdTA4YWJcdTA4YWNc N3ZcMlwyXHUwOGFjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YWRcN2pcMlwyXHUwOGFk XHUwOGFlXDdrXDJcMlx1MDhhZVx1MDhhZlw3dVwyXDJcdTA4YWYiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDE5ZVwzXDJcMlwyXHUwOGIwXHUwOGIxXDd1XDJcMlx1MDhiMVx1MDhiMlw3Z1wy XDJcdTA4YjINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YjNcN2VcMlwyXHUwOGIz XHUwOGI0XDd3XDJcMlx1MDhiNFx1MDhiNVw3dFwyXDJcdTA4YjUiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA4YjZcN2tcMlwyXHUwOGI2XHUwOGI3XDd2XDJcMlx1MDhiN1x1MDhiOFw3 e1wyXDJcdTA4YjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhMFwzXDJcMlwyXHUwOGI5 XHUwOGJhXDdpXDJcMlx1MDhiYVx1MDhiYlw3Z1wyXDJcdTA4YmIiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA4YmNcN3ZcMlwyXHUwOGJjXHUwMWEyXDNcMlwyXDJcdTA4YmRcdTA4YmVc N1ZcMlwyXHUwOGJlIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGJmXDdUXDJcMlx1 MDhiZlx1MDhjMFw3V1wyXDJcdTA4YzBcdTA4YzFcN0dcMlwyXHUwOGMxIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAxYTRcM1wyXDJcMlx1MDhjMlx1MDhjM1w3SFwyXDJcdTA4YzNcdTA4YzRc N0NcMlwyXHUwOGM0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YzVcN05cMlwyXHUwOGM1 XHUwOGM2XDdVXDJcMlx1MDhjNlx1MDhjN1w3R1wyXDJcdTA4YzciKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDFhNlwzXDJcMlwyXHUwOGM4XHUwOGM5XDdRXDJcMlx1MDhjOVx1MDhjYVw3UFwy XDJcdTA4Y2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhjYlw3R1wyXDJcdTA4Y2JcdTAx YThcM1wyXDJcMlx1MDhjY1x1MDhjZFw3UVwyXDJcdTA4Y2QiDQo+ICkNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA4Y2VcN1BcMlwyXHUwOGNlXHUwOGNmXDdHXDJcMlx1MDhjZlx1MDhkMFw3VVwy XDJcdTA4ZDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhYVwzXDJcMlwyXHUwOGQxXHUw OGQyXDdcXFwyXDJcdTA4ZDJcdTA4ZDNcN0dcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA4ZDNcdTA4ZDRcN1RcMlwyXHUwOGQ0XHUwOGQ1XDdRXDJcMlx1MDhkNVx1MDFhY1wzXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA4ZDZcdTA4ZDdcN1dcMlwyXHUwOGQ3XHUwOGQ4 XDdQXDJcMlx1MDhkOFx1MDhkOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdGXDJcMlx1MDhk OVx1MDhkYVw3R1wyXDJcdTA4ZGFcdTA4ZGJcN0hcMlwyXHUwOGRiXHUwOGRjIg0KPiApDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDdLXDJcMlx1MDhkY1x1MDhkZFw3UFwyXDJcdTA4ZGRcdTA4ZGVc N0dcMlwyXHUwOGRlXHUwOGRmIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdGXDJcMlx1 MDhkZlx1MDFhZVwzXDJcMlwyXHUwOGUwXHUwOGUxXDdYXDJcMlx1MDhlMVx1MDhlMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDdHXDJcMlx1MDhlMlx1MDhlM1w3VFwyXDJcdTA4ZTNcdTA4ZTRc N1VcMlwyXHUwOGU0XHUwOGU1Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdLXDJcMlx1 MDhlNVx1MDhlNlw3UVwyXDJcdTA4ZTZcdTA4ZTdcN1BcMlwyXHUwOGU3XHUwMWIwIg0KPiApDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4ZThcdTA4ZTlcN25cMlwyXHUwOGU5XHUw OGVhXDdnXDJcMlx1MDhlYVx1MDhlYiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3cFwy XDJcdTA4ZWJcdTA4ZWNcN2lcMlwyXHUwOGVjXHUwOGVkXDd2XDJcMlx1MDhlZFx1MDhlZSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdqXDJcMlx1MDhlZVx1MDFiMlwzXDJcMlwyXHUwOGVmXHUw OGYwXDdDXDJcMlx1MDhmMFx1MDhmMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdQXDJcMlx1 MDhmMVx1MDhmMlw3RlwyXDJcdTA4ZjJcdTAxYjRcM1wyXDJcMlx1MDhmM1x1MDhmNCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDdRXDJcMlx1MDhmNFx1MDhmNVw3VFwyXDJcdTA4ZjVcdTAxYjZc M1wyXDJcMlx1MDhmNlx1MDhmNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdQXDJcMlx1MDhm N1x1MDhmOFw3UVwyXDJcdTA4ZjhcdTA4ZjlcN1ZcMlwyXHUwOGY5XHUwMWI4IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDhmYVx1MDhmYlw3dVwyXDJcdTA4ZmJcdTA4ZmNcN2dc MlwyXHUwOGZjXHUwOGZkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN3ZcMlwyXHUwOGZkXHUw MWJhXDNcMlwyXDJcdTA4ZmVcdTA4ZmZcN1x1MDA4MFwyXDJcdTA4ZmYiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDFiY1wzXDJcMlwyXHUwOTAwXHUwOTAxXDdkXDJcMlx1MDkwMVx1MDkwMlw3 cVwyXDJcdTA5MDIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MDNcN3FcMlwyXHUw OTAzXHUwOTA0XDduXDJcMlx1MDkwNFx1MDkwNVw3eFwyXDJcdTA5MDUiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDkwNlw3Y1wyXDJcdTA5MDZcdTA5MDdcN25cMlwyXHUwOTA3XHUwMWJlXDNc MlwyXDJcdTA5MDgiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MDlcN3VcMlwyXHUw OTA5XHUwOTBhXDd2XDJcMlx1MDkwYVx1MDkwYlw3dFwyXDJcdTA5MGIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDkwY1w3a1wyXDJcdTA5MGNcdTA5MGRcN3BcMlwyXHUwOTBkXHUwOTBlXDdp XDJcMlx1MDkwZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTBmXDd4XDJcMlx1MDkwZlx1 MDkxMFw3Y1wyXDJcdTA5MTBcdTA5MTFcN25cMlwyXHUwOTExIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAxYzBcM1wyXDJcMlx1MDkxMlx1MDkxM1w3d1wyXDJcdTA5MTNcdTA5MTRcN3BcMlwy XHUwOTE0DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTE1XDdrXDJcMlx1MDkxNVx1 MDkxNlw3cFwyXDJcdTA5MTZcdTA5MTdcN3ZcMlwyXHUwOTE3IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA5MThcN3hcMlwyXHUwOTE4XHUwOTE5XDdjXDJcMlx1MDkxOVx1MDkxYVw3blwyXDJc dTA5MWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFjMlwzXDJcMlwyXHUwOTFiXHUwOTFj XDd2XDJcMlx1MDkxY1x1MDkxZFw3cVwyXDJcdTA5MWQiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA5MWVcN3dcMlwyXHUwOTFlXHUwOTFmXDdyXDJcMlx1MDkxZlx1MDkyMFw3clwyXDJc dTA5MjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkyMVw3Z1wyXDJcdTA5MjFcdTA5MjJc N3RcMlwyXHUwOTIyXHUwMWM0XDNcMlwyXDJcdTA5MjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDkyNFw3dlwyXDJcdTA5MjRcdTA5MjVcN3FcMlwyXHUwOTI1XHUwOTI2XDduXDJcMlx1MDky NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTI3XDdxXDJcMlx1MDkyN1x1MDkyOFw3eVwy XDJcdTA5MjhcdTA5MjlcN2dcMlwyXHUwOTI5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5 MmFcN3RcMlwyXHUwOTJhXHUwMWM2XDNcMlwyXDJcdTA5MmJcdTA5MmNcN29cMlwyXHUwOTJjIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MmRcN2NcMlwyXHUwOTJkXHUwOTJlXDd2XDJcMlx1 MDkyZVx1MDkyZlw3ZVwyXDJcdTA5MmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkzMFw3 alwyXDJcdTA5MzBcdTAxYzhcM1wyXDJcMlx1MDkzMVx1MDkzMlw3b1wyXDJcdTA5MzIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDkzM1w3Y1wyXDJcdTA5MzNcdTA5MzRcN3ZcMlwyXHUwOTM0 XHUwOTM1XDdlXDJcMlx1MDkzNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTM2XDdqXDJc Mlx1MDkzNlx1MDkzN1w3XDY0XDJcMlx1MDkzN1x1MDFjYVwzXDJcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA5MzhcdTA5MzlcN2VcMlwyXHUwOTM5XHUwOTNhXDdjXDJcMlx1MDkzYVx1 MDkzYlw3diIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDkzYlx1MDkzY1w3Z1wyXDJc dTA5M2NcdTA5M2RcN3BcMlwyXHUwOTNkXHUwOTNlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc N2NcMlwyXHUwOTNlXHUwOTNmXDd2XDJcMlx1MDkzZlx1MDk0MFw3Z1wyXDJcdTA5NDBcdTAxY2Mi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTQxXHUwOTQyXDdzXDJcMlx1MDk0 Mlx1MDk0M1w3d1wyXDJcdTA5NDNcdTA5NDQiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc N2dcMlwyXHUwOTQ0XHUwOTQ1XDd1XDJcMlx1MDk0NVx1MDk0Nlw3dlwyXDJcdTA5NDZcdTA5NDci KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3a1wyXDJcdTA5NDdcdTA5NDhcN3FcMlwyXHUwOTQ4 XHUwOTQ5XDdwXDJcMlx1MDk0OVx1MDk0YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd0XDJc Mlx1MDk0YVx1MDk0Ylw3Z1wyXDJcdTA5NGJcdTA5NGNcN2hcMlwyXHUwOTRjXHUwOTRkIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcN3hcMlwyXHUwOTRkXHUwOTRlXDdjXDJcMlx1MDk0ZVx1MDk0 Zlw3blwyXDJcdTA5NGZcdTAxY2UiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw OTUwXHUwOTUxXDd1XDJcMlx1MDk1MVx1MDk1Mlw3dlwyXDJcdTA5NTJcdTA5NTMiDQo+ICkNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTUzXHUwOTU0XDdrXDJcMlx1MDk1NFx1MDk1 NVw3cFwyXDJcdTA5NTVcdTA5NTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3aVwyXDJcdTA5 NTZcdTA5NTdcN3RcMlwyXHUwOTU3XHUwOTU4XDdnXDJcMlx1MDk1OFx1MDk1OSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDdoXDJcMlx1MDk1OVx1MDk1YVw3eFwyXDJcdTA5NWFcdTA5NWJcN2Nc MlwyXHUwOTViXHUwOTVjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN25cMlwyXHUwOTVjXHUw MWQwXDNcMlwyXDJcdTA5NWRcdTA5NWVcN29cMlwyXHUwOTVlXHUwOTVmIg0KPiApDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDdjXDJcMlx1MDk1Zlx1MDk2MFw3clwyXDJcdTA5NjBcdTAxZDJcM1wy XDJcMlx1MDk2MVx1MDk2MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDk2Mlx1 MDk2M1w3Z1wyXDJcdTA5NjNcdTA5NjRcN2hcMlwyXHUwOTY0XHUwOTY1IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcN3RcMlwyXHUwOTY1XHUwOTY2XDdnXDJcMlx1MDk2Nlx1MDk2N1w3dVwyXDJc dTA5NjdcdTA5NjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3alwyXDJcdTA5NjhcdTA5Njlc N2lcMlwyXHUwOTY5XHUwOTZhXDd3XDJcMlx1MDk2YVx1MDk2YiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDdrXDJcMlx1MDk2Ylx1MDk2Y1w3ZlwyXDJcdTA5NmNcdTAxZDRcM1wyXDJcMlx1MDk2 ZFx1MDk2ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdVXDJcMlx1MDk2ZVx1MDk2Zlw3Vlwy XDJcdTA5NmZcdTA5NzBcN1RcMlwyXHUwOTcwXHUwOTcxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcN0tcMlwyXHUwOTcxXHUwOTcyXDdQXDJcMlx1MDk3Mlx1MDk3M1w3SVwyXDJcdTA5NzNcdTA5 NzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3YVwyXDJcdTA5NzRcdTA5NzVcN1ZcMlwyXHUw OTc1XHUwOTc2XDdRXDJcMlx1MDk3Nlx1MDk3NyINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw3TVwyXDJcdTA5NzdcdTA5NzhcN0dcMlwyXHUwOTc4XHUwOTc5XDdQXDJcMlx1MDk3OVx1MDFk Ng0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTdhXHUwOTdiXDdRXDJc Mlx1MDk3Ylx1MDk3Y1w3UlwyXDJcdTA5N2NcdTA5N2QNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN1ZcMlwyXHUwOTdkXHUwOTdlXDdLXDJcMlx1MDk3ZVx1MDk3Zlw3UVwyXDJcdTA5N2Zc dTA5ODAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3UFwyXDJcdTA5ODBcdTA5ODFcN2FcMlwy XHUwOTgxXHUwOTgyXDdGXDJcMlx1MDk4Mlx1MDk4MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdHXDJcMlx1MDk4M1x1MDk4NFw3SFwyXDJcdTA5ODRcdTA5ODVcN0NcMlwyXHUwOTg1XHUwOTg2 Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk4Nlx1MDk4N1w3TlwyXDJc dTA5ODdcdTA5ODhcN1ZcMlwyXHUwOTg4XHUwMWQ4DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA5ODlcdTA5OGFcN1FcMlwyXHUwOThhXHUwOThiXDdSXDJcMlx1MDk4Ylx1 MDk4Yw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3VlwyXDJcdTA5OGNcdTA5OGRcN0tc MlwyXHUwOThkXHUwOThlXDdRXDJcMlx1MDk4ZVx1MDk4ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDdQXDJcMlx1MDk4Zlx1MDk5MFw3YVwyXDJcdTA5OTBcdTA5OTFcN0ZcMlwyXHUwOTkxXHUw OTkyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN0dcMlwyXHUwOTkyXHUwOTkzXDdIXDJcMlx1 MDk5M1x1MDk5NFw3Q1wyXDJcdTA5OTRcdTA5OTUiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcN1dcMlwyXHUwOTk1XHUwOTk2XDdOXDJcMlx1MDk5Nlx1MDk5N1w3VlwyXDJcdTA5OTdcdTA5 OTgNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2FcMlwyXHUwOTk4XHUwOTk5XDdPXDJc Mlx1MDk5OVx1MDk5YVw3SFwyXDJcdTA5OWFcdTA5OWIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN0lcMlwyXHUwOTliXHUwMWRhXDNcMlwyXDJcdTA5OWNcdTA5OWRcN1BcMlwyXHUwOTlk XHUwOTllIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk5ZVx1MDk5Zlw3 T1wyXDJcdTA5OWZcdTA5YTBcN0dcMlwyXHUwOWEwXHUwOWExIg0KPiApDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDdUXDJcMlx1MDlhMVx1MDlhMlw3S1wyXDJcdTA5YTJcdTA5YTNcN0VcMlwyXHUw OWEzXHUwOWE0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2FcMlwyXHUwOWE0XHUwOWE1XDdV XDJcMlx1MDlhNVx1MDlhNlw3S1wyXDJcdTA5YTZcdTA5YTciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw3XFxcMlwyXHUwOWE3XHUwOWE4XDdHXDJcMlx1MDlhOFx1MDlhOVw3YVwyXDJcdTA5YTlc dTA5YWEiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1w2M1wyXDJcdTA5YWFcdTAxZGNc M1wyXDJcMlx1MDlhYlx1MDlhY1w3UFwyXDJcdTA5YWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDlhZFw3V1wyXDJcdTA5YWRcdTA5YWVcN09cMlwyXHUwOWFlXHUwOWFmXDdHXDJcMlx1MDlh ZiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDliMFw3VFwyXDJcdTA5YjBcdTA5YjFc N0tcMlwyXHUwOWIxXHUwOWIyXDdFXDJcMlx1MDliMiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDliM1w3YVwyXDJcdTA5YjNcdTA5YjRcN1VcMlwyXHUwOWI0XHUwOWI1XDdLXDJcMlx1 MDliNSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDliNlw3XFxcMlwyXHUwOWI2XHUw OWI3XDdHXDJcMlx1MDliN1x1MDliOFw3YVwyXDJcdTA5YjgNCj4gIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA5YjlcN1w2NFwyXDJcdTA5YjlcdTAxZGVcM1wyXDJcMlx1MDliYVx1MDliYlw3 UFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDliYlx1MDliY1w3V1wyXDJcdTA5YmNc dTA5YmRcN09cMlwyXHUwOWJkXHUwOWJlXDdHIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwy XHUwOWJlXHUwOWJmXDdUXDJcMlx1MDliZlx1MDljMFw3S1wyXDJcdTA5YzBcdTA5YzEiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw3RVwyXDJcdTA5YzFcdTA5YzJcN2FcMlwyXHUwOWMyXHUwOWMz XDdVXDJcMlx1MDljM1x1MDljNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdLXDJcMlx1MDlj NFx1MDljNVw3XFxcMlwyXHUwOWM1XHUwOWM2XDdHXDJcMlx1MDljNlx1MDljNyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDdhXDJcMlx1MDljN1x1MDljOFw3XDY2XDJcMlx1MDljOFx1MDFlMFwz XDJcMlwyXHUwOWM5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5Y2FcN1BcMlwyXHUwOWNh XHUwOWNiXDdXXDJcMlx1MDljYlx1MDljY1w3T1wyXDJcdTA5Y2MiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDljZFw3R1wyXDJcdTA5Y2RcdTA5Y2VcN1RcMlwyXHUwOWNlXHUwOWNmXDdLXDJc Mlx1MDljZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWQwXDdFXDJcMlx1MDlkMFx1MDlk MVw3YVwyXDJcdTA5ZDFcdTA5ZDJcN1VcMlwyXHUwOWQyIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwOWQzXDdLXDJcMlx1MDlkM1x1MDlkNFw3XFxcMlwyXHUwOWQ0XHUwOWQ1XDdHXDJc Mlx1MDlkNQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlkNlw3YVwyXDJcdTA5ZDZc dTA5ZDdcNzpcMlwyXHUwOWQ3XHUwMWUyXDNcMlwyXDJcdTA5ZDgiDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA5ZDlcN0ZcMlwyXHUwOWQ5XHUwOWRhXDdLXDJcMlx1MDlkYVx1MDlkYlw3 VVwyXDJcdTA5ZGIiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZGNcN1JcMlwyXHUw OWRjXHUwOWRkXDdOXDJcMlx1MDlkZFx1MDlkZVw3Q1wyXDJcdTA5ZGUiDQo+ICkNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA5ZGZcN1tcMlwyXHUwOWRmXHUwOWUwXDdhXDJcMlx1MDllMFx1MDll MVw3S1wyXDJcdTA5ZTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDllMlw3UFwyXDJcdTA5 ZTJcdTA5ZTNcN1ZcMlwyXHUwOWUzXHUwOWU0XDdhXDJcMlx1MDllNCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwOWU1XDdGXDJcMlx1MDllNVx1MDllNlw3R1wyXDJcdTA5ZTZcdTA5ZTdcN0Vc MlwyXHUwOWU3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxZTRcM1wyXDJcMlx1MDllOFx1 MDllOVw3RlwyXDJcdTA5ZTlcdTA5ZWFcN0tcMlwyXHUwOWVhIg0KPiApDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwOWViXDdVXDJcMlx1MDllYlx1MDllY1w3UlwyXDJcdTA5ZWNcdTA5ZWRcN05c MlwyXHUwOWVkIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWVlXDdDXDJcMlx1MDll ZVx1MDllZlw3W1wyXDJcdTA5ZWZcdTA5ZjBcN2FcMlwyXHUwOWYwIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA5ZjFcN1dcMlwyXHUwOWYxXHUwOWYyXDdLXDJcMlx1MDlmMlx1MDlmM1w3UFwy XDJcdTA5ZjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlmNFw3VlwyXDJcdTA5ZjRcdTA5 ZjVcN2FcMlwyXHUwOWY1XHUwOWY2XDdGXDJcMlx1MDlmNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwOWY3XDdHXDJcMlx1MDlmN1x1MDlmOFw3RVwyXDJcdTA5ZjhcdTAxZTZcM1wyXDJcMlx1 MDlmOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWZhXDdGXDJcMlx1MDlmYVx1MDlmYlw3 S1wyXDJcdTA5ZmJcdTA5ZmNcN1VcMlwyXHUwOWZjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA5ZmRcN1JcMlwyXHUwOWZkXHUwOWZlXDdOXDJcMlx1MDlmZVx1MDlmZlw3Q1wyXDJcdTA5ZmYi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEwMFw3W1wyXDJcdTBhMDBcdTBhMDFcN2FcMlwy XHUwYTAxXHUwYTAyXDdXXDJcMlx1MGEwMiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MGEwM1w3S1wyXDJcdTBhMDNcdTBhMDRcN1BcMlwyXHUwYTA0XHUwYTA1XDdWXDJcMlx1MGEwNSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTA2XDdhXDJcMlx1MGEwNlx1MGEwN1w3SlwyXDJc dTBhMDdcdTBhMDhcN0dcMlwyXHUwYTA4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMDlc N1pcMlwyXHUwYTA5XHUwMWU4XDNcMlwyXDJcdTBhMGFcdTBhMGJcN0tcMlwyXHUwYTBiIg0KPiAp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTBjXDdQXDJcMlx1MGEwY1x1MGEwZFw3VVwyXDJc dTBhMGRcdTBhMGVcN0dcMlwyXHUwYTBlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMGZc N1BcMlwyXHUwYTBmXHUwYTEwXDdVXDJcMlx1MGExMFx1MGExMVw3S1wyXDJcdTBhMTEiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MGExMlw3VlwyXDJcdTBhMTJcdTBhMTNcN0tcMlwyXHUwYTEz XHUwYTE0XDdYXDJcMlx1MGExNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTE1XDdHXDJc Mlx1MGExNVx1MDFlYVwzXDJcMlwyXHUwYTE2XHUwYTE3XDdVXDJcMlx1MGExNw0KPiAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MGExOFw3R1wyXDJcdTBhMThcdTBhMTlcN1BcMlwyXHUwYTE5 XHUwYTFhXDdVXDJcMlx1MGExYSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGExYlw3 S1wyXDJcdTBhMWJcdTBhMWNcN1ZcMlwyXHUwYTFjXHUwYTFkXDdLXDJcMlx1MGExZCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwYTFlXDdYXDJcMlx1MGExZVx1MGExZlw3R1wyXDJcdTBhMWZc dTAxZWNcM1wyXDJcMlx1MGEyMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTIxXDdOXDJc Mlx1MGEyMVx1MGEyMlw3Q1wyXDJcdTBhMjJcdTBhMjNcN1VcMlwyXHUwYTIzIg0KPiApDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwYTI0XDdWXDJcMlx1MGEyNFx1MGEyNVw3YVwyXDJcdTBhMjVc dTBhMjZcN1BcMlwyXHUwYTI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMjdcN1FcMlwy XHUwYTI3XHUwYTI4XDdQXDJcMlx1MGEyOFx1MGEyOVw3YVwyXDJcdTBhMjkiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MGEyYVw3T1wyXDJcdTBhMmFcdTBhMmJcN0NcMlwyXHUwYTJiXHUwYTJj XDdWXDJcMlx1MGEyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTJkXDdFXDJcMlx1MGEy ZFx1MGEyZVw3SlwyXDJcdTBhMmVcdTAxZWVcM1wyXDJcMlx1MGEyZiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYTMwXDdIXDJcMlx1MGEzMFx1MGEzMVw3S1wyXDJcdTBhMzFcdTBhMzJcN1Rc MlwyXHUwYTMyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMzNcN1VcMlwyXHUwYTMzXHUw YTM0XDdWXDJcMlx1MGEzNFx1MGEzNVw3YVwyXDJcdTBhMzUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MGEzNlw3UFwyXDJcdTBhMzZcdTBhMzdcN1FcMlwyXHUwYTM3XHUwYTM4XDdQXDJcMlx1 MGEzOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTM5XDdhXDJcMlx1MGEzOVx1MGEzYVw3 T1wyXDJcdTBhM2FcdTBhM2JcN0NcMlwyXHUwYTNiIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYTNjXDdWXDJcMlx1MGEzY1x1MGEzZFw3RVwyXDJcdTBhM2RcdTBhM2VcN0pcMlwyXHUw YTNlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWYwXDNcMlwyXDJcdTBhM2ZcdTBh NDBcN1w2MlwyXDJcdTBhNDBcdTBhNDFcN3pcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTBhNDFcdTBhNDNcM1wyXDJcMlx1MGE0Mlx1MGE0NFx0XDJcMlwyXHUwYTQzXHUwYTQyXDMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGE0NFx1MGE0NVwzXDJcMlwyXHUwYTQ1XHUw YTQzXDNcMlwyXDJcdTBhNDVcdTBhNDYiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MGE0Nlx1MGE0ZFwzXDJcMlwyXHUwYTQ3XHUwYTQ5XHRcM1wyXDJcdTBhNDgiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MGE0N1wzXDJcMlwyXHUwYTQ5XHUwYTRhXDNcMlwyXDJcdTBh NGFcdTBhNDhcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTRhXHUwYTRiXDNc MlwyXDJcdTBhNGJcdTBhNGRcM1wyXDJcMlx1MGE0Y1x1MGEzZlwzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlwyXDJcdTBhNGNcdTBhNDhcM1wyXDJcMlx1MGE0ZFx1MDFmMlwzXDJcMlwyXHUw YTRlXHUwYTUyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcNFwyXDJcdTBhNGZcdTBh NTFcdFw1XDJcMlx1MGE1MFx1MGE0ZlwzXDJcMlwyXHUwYTUxIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBhNTRcM1wyXDJcMlx1MGE1Mlx1MGE1MFwzXDJcMlwyXHUwYTUyXHUwYTUzXDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE1M1x1MDFmNFwzXDJcMlwyXHUwYTU0XHUw YTUyXDNcMlwyXDJcdTBhNTVcdTBhNTdcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiJVwyXDJc dTBhNTZcdTBhNThcNVx1MDFmYlx1MDBmZVwyXHUwYTU3XHUwYTU2XDNcMlwyXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MGE1N1x1MGE1OFwzXDJcMlwyXHUwYTU4XHUwYTU5XDNcMlwyXDJc dTBhNTlcdTBhNWFcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiZlwyXDJcdTBhNWFcdTBhNWJc N2dcMlwyXHUwYTViXHUwYTVjXDdoXDJcMlx1MGE1Y1x1MGE1ZCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDdrXDJcMlx1MGE1ZFx1MGE1ZVw3cFwyXDJcdTBhNWVcdTBhNWZcN2dcMlwyXHUwYTVm XHUwYTYzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE2MFx1MGE2MlxuXDZc MlwyXHUwYTYxXHUwYTYwXDNcMlwyXDJcdTBhNjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MGE2NVwzXDJcMlwyXHUwYTYzXHUwYTYxXDNcMlwyXDJcdTBhNjNcdTBhNjRcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTY0XHUwYTY2XDNcMlwyXDJcdTBhNjVcdTBhNjNcM1wy XDJcMlx1MGE2Nlx1MGE2N1xiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZmJcMlwyXHUw YTY3XHUwMWY2XDNcMlwyXDJcdTBhNjhcdTBhNmFcNyVcMlwyXHUwYTY5IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTBhNmJcNVx1MDFmYlx1MDBmZVwyXHUwYTZhXHUwYTY5XDNcMlwyXDJcdTBh NmFcdTBhNmIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE2Ylx1MGE2 Y1wzXDJcMlwyXHUwYTZjXHUwYTZkXDduXDJcMlx1MGE2ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYTZlXDdrXDJcMlx1MGE2ZVx1MGE2Zlw3cFwyXDJcdTBhNmZcdTBhNzBcN2dcMlwyXHUw YTcwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNzRcM1wyXDJcMlx1MGE3MVx1MGE3M1xu XDZcMlwyXHUwYTcyXHUwYTcxXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE3 M1x1MGE3NlwzXDJcMlwyXHUwYTc0XHUwYTcyXDNcMlwyXDJcdTBhNzRcdTBhNzVcMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTc1XHUwYTc3XDNcMlwyXDJcdTBhNzZcdTBhNzRc M1wyXDJcMlx1MGE3N1x1MGE3OCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxiXHUwMGZj XDJcMlx1MGE3OFx1MDFmOFwzXDJcMlwyXHUwYTc5XHUwYTdiXDclXDJcMlx1MGE3YSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwYTdjXDVcdTAxZmJcdTAwZmVcMlx1MGE3Ylx1MGE3YVwzXDJc MlwyXHUwYTdiXHUwYTdjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBh N2NcdTBhN2RcM1wyXDJcMlx1MGE3ZFx1MGE3ZVw3a1wyXDJcdTBhN2UiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MGE3Zlw3cFwyXDJcdTBhN2ZcdTBhODBcN2VcMlwyXHUwYTgwXHUwYTgxXDdu XDJcMlx1MGE4MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTgyXDd3XDJcMlx1MGE4Mlx1 MGE4M1w3ZlwyXDJcdTBhODNcdTBhODRcN2dcMlwyXHUwYTg0IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBhODhcM1wyXDJcMlx1MGE4NVx1MGE4N1xuXDZcMlwyXHUwYTg2XHUwYTg1XDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE4N1x1MGE4YVwzXDJcMlwyXHUwYTg4XHUw YTg2XDNcMlwyXDJcdTBhODhcdTBhODlcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwYTg5XHUwYThiXDNcMlwyXDJcdTBhOGFcdTBhODhcM1wyXDJcMlx1MGE4Ylx1MGE4YyINCj4g KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxiXHUwMGZkXDJcMlx1MGE4Y1x1MDFmYVwzXDJcMlwy XHUwYThkXHUwYThmXHRcN1wyXDJcdTBhOGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE4 ZFwzXDJcMlwyXHUwYThmXHUwYTkwXDNcMlwyXDJcdTBhOTBcdTBhOGVcM1wyXDJcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwYTkwXHUwYTkxXDNcMlwyXDJcdTBhOTFcdTBhOTJcM1wyXDJc Mlx1MGE5Mlx1MGE5M1xiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZmVcMlwyXHUwYTkz XHUwMWZjXDNcMlwyXDJcdTBhOTRcdTBhOTZcN1wxN1wyXDJcdTBhOTUiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MGE5N1w3XGZcMlwyXHUwYTk2XHUwYTk1XDNcMlwyXDJcdTBhOTZcdTBhOTdc M1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTk3XHUwYTlhXDNcMlwyXDJcdTBh OThcdTBhOWFcN1xmXDJcMlx1MGE5OVx1MGE5NFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXDJcdTBhOTlcdTBhOThcM1wyXDJcMlx1MGE5YVx1MGE5YlwzXDJcMlwyXHUwYTliXHUwYTlj Ig0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlxiXHUwMGZmXDJcMlx1MGE5Y1x1MDFm ZVwzXDJcMlwyXHUwYTlkXHUwYTllXDdcNjFcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYTllXHUwYTlmXDdcNjFcMlwyXHUwYTlmXHUwYWEzXDNcMlwyXDJcdTBhYTBcdTBhYTIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxuXGJcMlwyXHUwYWExXHUwYWEwXDNcMlwyXDJcdTBh YTJcdTBhYTVcM1wyXDJcMlx1MGFhMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWExXDNc MlwyXDJcdTBhYTNcdTBhYTRcM1wyXDJcMlx1MGFhNFx1MGFhNlwzXDJcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTBhYTVcdTBhYTNcM1wyXDJcMlx1MGFhNlx1MGFhN1xiXHUwMTAwXDJc Mlx1MGFhN1x1MDIwMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhYThcdTBh YTlcN2dcMlwyXHUwYWE5XHUwYWFhXDd6XDJcMlx1MGFhYVx1MGFhYiINCj4gKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw3dlwyXDJcdTBhYWJcdTBhYWNcN2dcMlwyXHUwYWFjXHUwYWFkXDd0XDJc Mlx1MGFhZFx1MGFhZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3cFwyXDJcdTBhYWVc dTBhYjJcM1wyXDJcMlx1MGFhZlx1MGFiMVxuXDZcMlwyXHUwYWIwIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTBhYWZcM1wyXDJcMlx1MGFiMVx1MGFiNFwzXDJcMlwyXHUwYWIyXHUwYWIwXDNc MlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFiMlx1MGFiM1wzXDJcMlwyXHUwYWIz XHUwYWI1XDNcMlwyXDJcdTBhYjRcdTBhYjJcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwYWI1XHUwYWI2XGJcdTAxMDFcMlwyXHUwYWI2XHUwMjAyXDNcMlwyXDJcMjIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYTQ1XHUwYTRhXHUwYTRjXHUwYTUyXHUwYTU3XHUwYTYz XHUwYTZhXHUwYTc0XHUwYTdiIg0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGE4 OFx1MGE5MFx1MGE5Nlx1MGE5OVx1MGFhM1x1MGFiMlwzXGJcMlwyIikNCj4gDQo+ICsgICAgICAg IHJldHVybiBidWYuZ2V0dmFsdWUoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIFZm clN5bnRheExleGVyKExleGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgYXRuID0gQVRORGVzZXJp YWxpemVyKCkuZGVzZXJpYWxpemUoc2VyaWFsaXplZEFUTigpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWNpc2lvbnNUb0RGQSA9IFsgREZBKGRzLCBpKSBmb3IgaSwgZHMgaW4gZW51bWVyYXRlKGF0 bi5kZWNpc2lvblRvU3RhdGUpIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgVF9fMCA9IDENCj4gDQo+ ICsgICAgVF9fMSA9IDINCj4gDQo+ICsgICAgVF9fMiA9IDMNCj4gDQo+ICsgICAgVF9fMyA9IDQN Cj4gDQo+ICsgICAgVF9fNCA9IDUNCj4gDQo+ICsgICAgVF9fNSA9IDYNCj4gDQo+ICsgICAgVF9f NiA9IDcNCj4gDQo+ICsgICAgVF9fNyA9IDgNCj4gDQo+ICsgICAgVF9fOCA9IDkNCj4gDQo+ICsg ICAgVF9fOSA9IDEwDQo+IA0KPiArICAgIFRfXzEwID0gMTENCj4gDQo+ICsgICAgVF9fMTEgPSAx Mg0KPiANCj4gKyAgICBUX18xMiA9IDEzDQo+IA0KPiArICAgIFRfXzEzID0gMTQNCj4gDQo+ICsg ICAgVF9fMTQgPSAxNQ0KPiANCj4gKyAgICBUX18xNSA9IDE2DQo+IA0KPiArICAgIERlZmluZSA9 IDE3DQo+IA0KPiArICAgIEluY2x1ZGUgPSAxOA0KPiANCj4gKyAgICBGb3JtUGtnVHlwZSA9IDE5 DQo+IA0KPiArICAgIE9wZW5CcmFjZSA9IDIwDQo+IA0KPiArICAgIENsb3NlQnJhY2UgPSAyMQ0K PiANCj4gKyAgICBPcGVuUGFyZW4gPSAyMg0KPiANCj4gKyAgICBDbG9zZVBhcmVuID0gMjMNCj4g DQo+ICsgICAgT3BlbkJyYWNrZXQgPSAyNA0KPiANCj4gKyAgICBDbG9zZUJyYWNrZXQgPSAyNQ0K PiANCj4gKyAgICBEb3QgPSAyNg0KPiANCj4gKyAgICBOZWdhdGl2ZSA9IDI3DQo+IA0KPiArICAg IENvbG9uID0gMjgNCj4gDQo+ICsgICAgU2xhc2ggPSAyOQ0KPiANCj4gKyAgICBTZW1pY29sb24g PSAzMA0KPiANCj4gKyAgICBDb21tYSA9IDMxDQo+IA0KPiArICAgIEVxdWFsID0gMzINCj4gDQo+ ICsgICAgTm90RXF1YWwgPSAzMw0KPiANCj4gKyAgICBMZXNzRXF1YWwgPSAzNA0KPiANCj4gKyAg ICBMZXNzID0gMzUNCj4gDQo+ICsgICAgR3JlYXRlckVxdWFsID0gMzYNCj4gDQo+ICsgICAgR3Jl YXRlciA9IDM3DQo+IA0KPiArICAgIEJpdFdpc2VPciA9IDM4DQo+IA0KPiArICAgIEJpdFdpc2VB bmQgPSAzOQ0KPiANCj4gKyAgICBEZXZpY2VQYXRoID0gNDANCj4gDQo+ICsgICAgRm9ybVNldCA9 IDQxDQo+IA0KPiArICAgIEZvcm1TZXRJZCA9IDQyDQo+IA0KPiArICAgIEVuZEZvcm1TZXQgPSA0 Mw0KPiANCj4gKyAgICBUaXRsZSA9IDQ0DQo+IA0KPiArICAgIEZvcm1JZCA9IDQ1DQo+IA0KPiAr ICAgIE9uZU9mID0gNDYNCj4gDQo+ICsgICAgRW5kT25lT2YgPSA0Nw0KPiANCj4gKyAgICBQcm9t cHQgPSA0OA0KPiANCj4gKyAgICBPcmRlcmVkTGlzdCA9IDQ5DQo+IA0KPiArICAgIE1heENvbnRh aW5lcnMgPSA1MA0KPiANCj4gKyAgICBFbmRMaXN0ID0gNTENCj4gDQo+ICsgICAgRW5kRm9ybSA9 IDUyDQo+IA0KPiArICAgIEZvcm0gPSA1Mw0KPiANCj4gKyAgICBGb3JtTWFwID0gNTQNCj4gDQo+ ICsgICAgTWFwVGl0bGUgPSA1NQ0KPiANCj4gKyAgICBNYXBHdWlkID0gNTYNCj4gDQo+ICsgICAg U3VidGl0bGUgPSA1Nw0KPiANCj4gKyAgICBFbmRTdWJ0aXRsZSA9IDU4DQo+IA0KPiArICAgIEhl bHAgPSA1OQ0KPiANCj4gKyAgICBUZXh0ID0gNjANCj4gDQo+ICsgICAgT3B0aW9uID0gNjENCj4g DQo+ICsgICAgRkxBR1MgPSA2Mg0KPiANCj4gKyAgICBEYXRlID0gNjMNCj4gDQo+ICsgICAgRW5k RGF0ZSA9IDY0DQo+IA0KPiArICAgIFllYXIgPSA2NQ0KPiANCj4gKyAgICBNb250aCA9IDY2DQo+ IA0KPiArICAgIERheSA9IDY3DQo+IA0KPiArICAgIFRpbWUgPSA2OA0KPiANCj4gKyAgICBFbmRU aW1lID0gNjkNCj4gDQo+ICsgICAgSG91ciA9IDcwDQo+IA0KPiArICAgIE1pbnV0ZSA9IDcxDQo+ IA0KPiArICAgIFNlY29uZCA9IDcyDQo+IA0KPiArICAgIEdyYXlPdXRJZiA9IDczDQo+IA0KPiAr ICAgIExhYmVsID0gNzQNCj4gDQo+ICsgICAgVGltZW91dCA9IDc1DQo+IA0KPiArICAgIEludmVu dG9yeSA9IDc2DQo+IA0KPiArICAgIE5vbk52RGF0YU1hcCA9IDc3DQo+IA0KPiArICAgIFN0cnVj dCA9IDc4DQo+IA0KPiArICAgIFVuaW9uID0gNzkNCj4gDQo+ICsgICAgQm9vbGVhbiA9IDgwDQo+ IA0KPiArICAgIFVpbnQ2NCA9IDgxDQo+IA0KPiArICAgIFVpbnQzMiA9IDgyDQo+IA0KPiArICAg IFVpbnQxNiA9IDgzDQo+IA0KPiArICAgIFVpbnQ4ID0gODQNCj4gDQo+ICsgICAgRUZJX1NUUklO R19JRCA9IDg1DQo+IA0KPiArICAgIEVGSV9ISUlfREFURSA9IDg2DQo+IA0KPiArICAgIEVGSV9I SUlfVElNRSA9IDg3DQo+IA0KPiArICAgIEVGSV9ISUlfUkVGID0gODgNCj4gDQo+ICsgICAgVXVp ZCA9IDg5DQo+IA0KPiArICAgIENoZWNrQm94ID0gOTANCj4gDQo+ICsgICAgRW5kQ2hlY2tCb3gg PSA5MQ0KPiANCj4gKyAgICBOdW1lcmljID0gOTINCj4gDQo+ICsgICAgRW5kTnVtZXJpYyA9IDkz DQo+IA0KPiArICAgIE1pbmltdW0gPSA5NA0KPiANCj4gKyAgICBNYXhpbXVtID0gOTUNCj4gDQo+ ICsgICAgU3RlcCA9IDk2DQo+IA0KPiArICAgIERlZmF1bHQgPSA5Nw0KPiANCj4gKyAgICBQYXNz d29yZCA9IDk4DQo+IA0KPiArICAgIEVuZFBhc3N3b3JkID0gOTkNCj4gDQo+ICsgICAgU3RyaW5n ID0gMTAwDQo+IA0KPiArICAgIEVuZFN0cmluZyA9IDEwMQ0KPiANCj4gKyAgICBNaW5TaXplID0g MTAyDQo+IA0KPiArICAgIE1heFNpemUgPSAxMDMNCj4gDQo+ICsgICAgRW5jb2RpbmcgPSAxMDQN Cj4gDQo+ICsgICAgU3VwcHJlc3NJZiA9IDEwNQ0KPiANCj4gKyAgICBEaXNhYmxlSWYgPSAxMDYN Cj4gDQo+ICsgICAgSGlkZGVuID0gMTA3DQo+IA0KPiArICAgIEdvdG8gPSAxMDgNCj4gDQo+ICsg ICAgRm9ybVNldEd1aWQgPSAxMDkNCj4gDQo+ICsgICAgSW5jb25zaXN0ZW50SWYgPSAxMTANCj4g DQo+ICsgICAgV2FybmluZ0lmID0gMTExDQo+IA0KPiArICAgIE5vU3VibWl0SWYgPSAxMTINCj4g DQo+ICsgICAgRW5kSWYgPSAxMTMNCj4gDQo+ICsgICAgS2V5ID0gMTE0DQo+IA0KPiArICAgIERl ZmF1bHRGbGFnID0gMTE1DQo+IA0KPiArICAgIE1hbnVmYWN0dXJpbmdGbGFnID0gMTE2DQo+IA0K PiArICAgIENoZWNrQm94RGVmYXVsdEZsYWcgPSAxMTcNCj4gDQo+ICsgICAgQ2hlY2tCb3hEZWZh dWx0TWZnRmxhZyA9IDExOA0KPiANCj4gKyAgICBJbnRlcmFjdGl2ZUZsYWcgPSAxMTkNCj4gDQo+ ICsgICAgTlZBY2Nlc3NGbGFnID0gMTIwDQo+IA0KPiArICAgIFJlc2V0UmVxdWlyZWRGbGFnID0g MTIxDQo+IA0KPiArICAgIFJlY29ubmVjdFJlcXVpcmVkRmxhZyA9IDEyMg0KPiANCj4gKyAgICBM YXRlQ2hlY2tGbGFnID0gMTIzDQo+IA0KPiArICAgIFJlYWRPbmx5RmxhZyA9IDEyNA0KPiANCj4g KyAgICBPcHRpb25Pbmx5RmxhZyA9IDEyNQ0KPiANCj4gKyAgICBSZXN0U3R5bGVGbGFnID0gMTI2 DQo+IA0KPiArICAgIENsYXNzID0gMTI3DQo+IA0KPiArICAgIFN1YmNsYXNzID0gMTI4DQo+IA0K PiArICAgIENsYXNzR3VpZCA9IDEyOQ0KPiANCj4gKyAgICBUeXBlRGVmID0gMTMwDQo+IA0KPiAr ICAgIFJlc3RvcmUgPSAxMzENCj4gDQo+ICsgICAgU2F2ZSA9IDEzMg0KPiANCj4gKyAgICBEZWZh dWx0cyA9IDEzMw0KPiANCj4gKyAgICBCYW5uZXIgPSAxMzQNCj4gDQo+ICsgICAgQWxpZ24gPSAx MzUNCj4gDQo+ICsgICAgTGVmdCA9IDEzNg0KPiANCj4gKyAgICBSaWdodCA9IDEzNw0KPiANCj4g KyAgICBDZW50ZXIgPSAxMzgNCj4gDQo+ICsgICAgTGluZSA9IDEzOQ0KPiANCj4gKyAgICBOYW1l ID0gMTQwDQo+IA0KPiArICAgIFZhcklkID0gMTQxDQo+IA0KPiArICAgIFF1ZXN0aW9uID0gMTQy DQo+IA0KPiArICAgIFF1ZXN0aW9uSWQgPSAxNDMNCj4gDQo+ICsgICAgSW1hZ2UgPSAxNDQNCj4g DQo+ICsgICAgTG9ja2VkID0gMTQ1DQo+IA0KPiArICAgIFJ1bGUgPSAxNDYNCj4gDQo+ICsgICAg RW5kUnVsZSA9IDE0Nw0KPiANCj4gKyAgICBWYWx1ZSA9IDE0OA0KPiANCj4gKyAgICBSZWFkID0g MTQ5DQo+IA0KPiArICAgIFdyaXRlID0gMTUwDQo+IA0KPiArICAgIFJlc2V0QnV0dG9uID0gMTUx DQo+IA0KPiArICAgIEVuZFJlc2V0QnV0dG9uID0gMTUyDQo+IA0KPiArICAgIERlZmF1bHRTdG9y ZSA9IDE1Mw0KPiANCj4gKyAgICBBdHRyaWJ1dGUgPSAxNTQNCj4gDQo+ICsgICAgVmFyc3RvcmUg PSAxNTUNCj4gDQo+ICsgICAgRWZpdmFyc3RvcmUgPSAxNTYNCj4gDQo+ICsgICAgVmFyU2l6ZSA9 IDE1Nw0KPiANCj4gKyAgICBOYW1lVmFsdWVWYXJTdG9yZSA9IDE1OA0KPiANCj4gKyAgICBBY3Rp b24gPSAxNTkNCj4gDQo+ICsgICAgQ29uZmlnID0gMTYwDQo+IA0KPiArICAgIEVuZEFjdGlvbiA9 IDE2MQ0KPiANCj4gKyAgICBSZWZyZXNoID0gMTYyDQo+IA0KPiArICAgIEludGVydmFsID0gMTYz DQo+IA0KPiArICAgIFZhcnN0b3JlRGV2aWNlID0gMTY0DQo+IA0KPiArICAgIEd1aWRPcCA9IDE2 NQ0KPiANCj4gKyAgICBFbmRHdWlkT3AgPSAxNjYNCj4gDQo+ICsgICAgRGF0YVR5cGUgPSAxNjcN Cj4gDQo+ICsgICAgRGF0YSA9IDE2OA0KPiANCj4gKyAgICBNb2RhbCA9IDE2OQ0KPiANCj4gKyAg ICBDbGFzc05vbkRldmljZSA9IDE3MA0KPiANCj4gKyAgICBDbGFzc0Rpc2tEZXZpY2UgPSAxNzEN Cj4gDQo+ICsgICAgQ2xhc3NWaWRlb0RldmljZSA9IDE3Mg0KPiANCj4gKyAgICBDbGFzc05ldHdv cmtEZXZpY2UgPSAxNzMNCj4gDQo+ICsgICAgQ2xhc3NJbnB1dERldmljZSA9IDE3NA0KPiANCj4g KyAgICBDbGFzc09uQm9hcmREZXZpY2UgPSAxNzUNCj4gDQo+ICsgICAgQ2xhc3NPdGhlckRldmlj ZSA9IDE3Ng0KPiANCj4gKyAgICBTdWJjbGFzc1NldHVwQXBwbGljYXRpb24gPSAxNzcNCj4gDQo+ ICsgICAgU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24gPSAxNzgNCj4gDQo+ICsgICAgU3ViY2xh c3NGcm9udFBhZ2UgPSAxNzkNCj4gDQo+ICsgICAgU3ViY2xhc3NTaW5nbGVVc2UgPSAxODANCj4g DQo+ICsgICAgWWVhclN1cHBwcmVzc0ZsYWcgPSAxODENCj4gDQo+ICsgICAgTW9udGhTdXBwcmVz c0ZsYWcgPSAxODINCj4gDQo+ICsgICAgRGF5U3VwcHJlc3NGbGFnID0gMTgzDQo+IA0KPiArICAg IEhvdXJTdXBwcHJlc3NGbGFnID0gMTg0DQo+IA0KPiArICAgIE1pbnV0ZVN1cHByZXNzRmxhZyA9 IDE4NQ0KPiANCj4gKyAgICBTZWNvbmRTdXBwcmVzc0ZsYWcgPSAxODYNCj4gDQo+ICsgICAgU3Rv cmFnZU5vcm1hbEZsYWcgPSAxODcNCj4gDQo+ICsgICAgU3RvcmFnZVRpbWVGbGFnID0gMTg4DQo+ IA0KPiArICAgIFN0b3JhZ2VXYWtlVXBGbGFnID0gMTg5DQo+IA0KPiArICAgIFVuaVF1ZUZsYWcg PSAxOTANCj4gDQo+ICsgICAgTm9FbXB0eUZsYWcgPSAxOTENCj4gDQo+ICsgICAgQ29uZCA9IDE5 Mg0KPiANCj4gKyAgICBGaW5kID0gMTkzDQo+IA0KPiArICAgIE1pZCA9IDE5NA0KPiANCj4gKyAg ICBUb2sgPSAxOTUNCj4gDQo+ICsgICAgU3BhbiA9IDE5Ng0KPiANCj4gKyAgICBEdXAgPSAxOTcN Cj4gDQo+ICsgICAgVmFyRXFWYWwgPSAxOTgNCj4gDQo+ICsgICAgVmFyID0gMTk5DQo+IA0KPiAr ICAgIElkRXFWYWwgPSAyMDANCj4gDQo+ICsgICAgSWRFcUlkID0gMjAxDQo+IA0KPiArICAgIElk RXFWYWxMaXN0ID0gMjAyDQo+IA0KPiArICAgIFF1ZXN0aW9uUmVmID0gMjAzDQo+IA0KPiArICAg IFJ1bGVSZWYgPSAyMDQNCj4gDQo+ICsgICAgU3RyaW5nUmVmID0gMjA1DQo+IA0KPiArICAgIFB1 c2hUaGlzID0gMjA2DQo+IA0KPiArICAgIFNlY3VyaXR5ID0gMjA3DQo+IA0KPiArICAgIEdldCA9 IDIwOA0KPiANCj4gKyAgICBUcnVlU3ltYm9sID0gMjA5DQo+IA0KPiArICAgIEZhbHNlU3ltYm9s ID0gMjEwDQo+IA0KPiArICAgIE9uZSA9IDIxMQ0KPiANCj4gKyAgICBPbmVzID0gMjEyDQo+IA0K PiArICAgIFplcm8gPSAyMTMNCj4gDQo+ICsgICAgVW5kZWZpbmVkID0gMjE0DQo+IA0KPiArICAg IFZlcnNpb24gPSAyMTUNCj4gDQo+ICsgICAgTGVuZ3RoID0gMjE2DQo+IA0KPiArICAgIEFORCA9 IDIxNw0KPiANCj4gKyAgICBPUiA9IDIxOA0KPiANCj4gKyAgICBOT1QgPSAyMTkNCj4gDQo+ICsg ICAgU2V0ID0gMjIwDQo+IA0KPiArICAgIEJpdFdpc2VOb3QgPSAyMjENCj4gDQo+ICsgICAgQm9v bFZhbCA9IDIyMg0KPiANCj4gKyAgICBTdHJpbmdWYWwgPSAyMjMNCj4gDQo+ICsgICAgVW5JbnRW YWwgPSAyMjQNCj4gDQo+ICsgICAgVG9VcHBlciA9IDIyNQ0KPiANCj4gKyAgICBUb0xvd2VyID0g MjI2DQo+IA0KPiArICAgIE1hdGNoID0gMjI3DQo+IA0KPiArICAgIE1hdGNoMiA9IDIyOA0KPiAN Cj4gKyAgICBDYXRlbmF0ZSA9IDIyOQ0KPiANCj4gKyAgICBRdWVzdGlvblJlZlZhbCA9IDIzMA0K PiANCj4gKyAgICBTdHJpbmdSZWZWYWwgPSAyMzENCj4gDQo+ICsgICAgTWFwID0gMjMyDQo+IA0K PiArICAgIFJlZnJlc2hHdWlkID0gMjMzDQo+IA0KPiArICAgIFN0cmluZ1Rva2VuID0gMjM0DQo+ IA0KPiArICAgIE9wdGlvbkRlZmF1bHQgPSAyMzUNCj4gDQo+ICsgICAgT3B0aW9uRGVmYXVsdE1m ZyA9IDIzNg0KPiANCj4gKyAgICBOdW1lcmljU2l6ZU9uZSA9IDIzNw0KPiANCj4gKyAgICBOdW1l cmljU2l6ZVR3byA9IDIzOA0KPiANCj4gKyAgICBOdW1lcmljU2l6ZUZvdXIgPSAyMzkNCj4gDQo+ ICsgICAgTnVtZXJpY1NpemVFaWdodCA9IDI0MA0KPiANCj4gKyAgICBEaXNQbGF5SW50RGVjID0g MjQxDQo+IA0KPiArICAgIERpc1BsYXlVSW50RGVjID0gMjQyDQo+IA0KPiArICAgIERpc1BsYXlV SW50SGV4ID0gMjQzDQo+IA0KPiArICAgIEluc2Vuc2l0aXZlID0gMjQ0DQo+IA0KPiArICAgIFNl bnNpdGl2ZSA9IDI0NQ0KPiANCj4gKyAgICBMYXN0Tm9uTWF0Y2ggPSAyNDYNCj4gDQo+ICsgICAg Rmlyc3ROb25NYXRjaCA9IDI0Nw0KPiANCj4gKyAgICBOdW1iZXIgPSAyNDgNCj4gDQo+ICsgICAg U3RyaW5nSWRlbnRpZmllciA9IDI0OQ0KPiANCj4gKyAgICBDb21wbGV4RGVmaW5lID0gMjUwDQo+ IA0KPiArICAgIExpbmVEZWZpbml0aW9uID0gMjUxDQo+IA0KPiArICAgIEluY2x1ZGVEZWZpbml0 aW9uID0gMjUyDQo+IA0KPiArICAgIFdoaXRlc3BhY2UgPSAyNTMNCj4gDQo+ICsgICAgTmV3bGlu ZSA9IDI1NA0KPiANCj4gKyAgICBMaW5lQ29tbWVudCA9IDI1NQ0KPiANCj4gKyAgICBFeHRlcm4g PSAyNTYNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2hhbm5lbE5hbWVzID0gWyB1IkRFRkFVTFRfVE9L RU5fQ0hBTk5FTCIsIHUiSElEREVOIiBdDQo+IA0KPiArDQo+IA0KPiArICAgIG1vZGVOYW1lcyA9 IFsgIkRFRkFVTFRfTU9ERSIgXQ0KPiANCj4gKw0KPiANCj4gKyAgICBsaXRlcmFsTmFtZXMgPSBb ICI8SU5WQUxJRD4iLA0KPiANCj4gKyAgICAgICAgICAgICInc2hvdyciLCAiJ3B1c2gnIiwgIidw b3AnIiwgIicjcHJhZ21hJyIsICIncGFjayciLCAiJz0nIiwNCj4gIidJTUFHRV9UT0tFTiciLA0K PiANCj4gKyAgICAgICAgICAgICInSE9SSVpPTlRBTCciLCAiJ01VTFRJX0xJTkUnIiwgIic8PCci LCAiJz4+JyIsICInKyciLCAiJyonIiwNCj4gDQo+ICsgICAgICAgICAgICAiJyUnIiwgIidmb3Jt YXQnIiwgIic/JyIsICInI2RlZmluZSciLCAiJyNpbmNsdWRlJyIsICInZm9ybXBrZ3R5cGUnIiwN Cj4gDQo+ICsgICAgICAgICAgICAiJ3snIiwgIid9JyIsICInKCciLCAiJyknIiwgIidbJyIsICIn XSciLCAiJy4nIiwgIictJyIsICInOiciLA0KPiANCj4gKyAgICAgICAgICAgICInLyciLCAiJzsn IiwgIicsJyIsICInPT0nIiwgIichPSciLCAiJzw9JyIsICInPCciLCAiJz49JyIsDQo+IA0KPiAr ICAgICAgICAgICAgIic+JyIsICInfCciLCAiJyYnIiwgIidkZXZpY2VwYXRoJyIsICInZm9ybXNl dCciLCAiJ2Zvcm1zZXRpZCciLA0KPiANCj4gKyAgICAgICAgICAgICInZW5kZm9ybXNldCciLCAi J3RpdGxlJyIsICInZm9ybWlkJyIsICInb25lb2YnIiwgIidlbmRvbmVvZiciLA0KPiANCj4gKyAg ICAgICAgICAgICIncHJvbXB0JyIsICInb3JkZXJlZGxpc3QnIiwgIidtYXhjb250YWluZXJzJyIs ICInZW5kbGlzdCciLA0KPiANCj4gKyAgICAgICAgICAgICInZW5kZm9ybSciLCAiJ2Zvcm0nIiwg Iidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIsDQo+IA0KPiArICAgICAgICAg ICAgIidzdWJ0aXRsZSciLCAiJ2VuZHN1YnRpdGxlJyIsICInaGVscCciLCAiJ3RleHQnIiwgIidv cHRpb24nIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ2ZsYWdzJyIsICInZGF0ZSciLCAiJ2VuZGRh dGUnIiwgIid5ZWFyJyIsICInbW9udGgnIiwgIidkYXknIiwNCj4gDQo+ICsgICAgICAgICAgICAi J3RpbWUnIiwgIidlbmR0aW1lJyIsICInaG91ciciLCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLCAi J2dyYXlvdXRpZiciLA0KPiANCj4gKyAgICAgICAgICAgICInbGFiZWwnIiwgIid0aW1lb3V0JyIs ICInaW52ZW50b3J5JyIsICInX05PTl9OVl9EQVRBX01BUCciLA0KPiANCj4gKyAgICAgICAgICAg ICInc3RydWN0JyIsICIndW5pb24nIiwgIidCT09MRUFOJyIsICInVUlOVDY0JyIsICInVUlOVDMy JyIsDQo+IA0KPiArICAgICAgICAgICAgIidVSU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJ TkdfSUQnIiwgIidFRklfSElJX0RBVEUnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ0VGSV9ISUlf VElNRSciLCAiJ0VGSV9ISUlfUkVGJyIsICInZ3VpZCciLCAiJ2NoZWNrYm94JyIsDQo+ICInZW5k Y2hlY2tib3gnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ251bWVyaWMnIiwgIidlbmRudW1lcmlj JyIsICInbWluaW11bSciLCAiJ21heGltdW0nIiwgIidzdGVwJyIsDQo+IA0KPiArICAgICAgICAg ICAgIidkZWZhdWx0JyIsICIncGFzc3dvcmQnIiwgIidlbmRwYXNzd29yZCciLCAiJ3N0cmluZyci LCAiJ2VuZHN0cmluZyciLA0KPiANCj4gKyAgICAgICAgICAgICInbWluc2l6ZSciLCAiJ21heHNp emUnIiwgIidlbmNvZGluZyciLCAiJ3N1cHByZXNzaWYnIiwgIidkaXNhYmxlaWYnIiwNCj4gDQo+ ICsgICAgICAgICAgICAiJ2hpZGRlbiciLCAiJ2dvdG8nIiwgIidmb3Jtc2V0Z3VpZCciLCAiJ2lu Y29uc2lzdGVudGlmJyIsICInd2FybmluZ2lmJyIsDQo+IA0KPiArICAgICAgICAgICAgIidub3N1 Ym1pdGlmJyIsICInZW5kaWYnIiwgIidrZXknIiwgIidERUZBVUxUJyIsICInTUFOVUZBQ1RVUklO RyciLA0KPiANCj4gKyAgICAgICAgICAgICInQ0hFQ0tCT1hfREVGQVVMVCciLCAiJ0NIRUNLQk9Y X0RFRkFVTFRfTUZHJyIsDQo+ICInSU5URVJBQ1RJVkUnIiwNCj4gDQo+ICsgICAgICAgICAgICAi J05WX0FDQ0VTUyciLCAiJ1JFU0VUX1JFUVVJUkVEJyIsICInUkVDT05ORUNUX1JFUVVJUkVEJyIs DQo+ICInTEFURV9DSEVDSyciLA0KPiANCj4gKyAgICAgICAgICAgICInUkVBRF9PTkxZJyIsICIn T1BUSU9OU19PTkxZJyIsICInUkVTVF9TVFlMRSciLCAiJ2NsYXNzJyIsDQo+IA0KPiArICAgICAg ICAgICAgIidzdWJjbGFzcyciLCAiJ2NsYXNzZ3VpZCciLCAiJ3R5cGVkZWYnIiwgIidyZXN0b3Jl JyIsICInc2F2ZSciLA0KPiANCj4gKyAgICAgICAgICAgICInZGVmYXVsdHMnIiwgIidiYW5uZXIn IiwgIidhbGlnbiciLCAiJ2xlZnQnIiwgIidyaWdodCciLCAiJ2NlbnRlciciLA0KPiANCj4gKyAg ICAgICAgICAgICInbGluZSciLCAiJ25hbWUnIiwgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIn cXVlc3Rpb25pZCciLA0KPiANCj4gKyAgICAgICAgICAgICInaW1hZ2UnIiwgIidsb2NrZWQnIiwg IidydWxlJyIsICInZW5kcnVsZSciLCAiJ3ZhbHVlJyIsICIncmVhZCciLA0KPiANCj4gKyAgICAg ICAgICAgICInd3JpdGUnIiwgIidyZXNldGJ1dHRvbiciLCAiJ2VuZHJlc2V0YnV0dG9uJyIsICIn ZGVmYXVsdHN0b3JlJyIsDQo+IA0KPiArICAgICAgICAgICAgIidhdHRyaWJ1dGUnIiwgIid2YXJz dG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIndmFyc2l6ZSciLA0KPiAiJ25hbWV2YWx1ZXZhcnN0 b3JlJyIsDQo+IA0KPiArICAgICAgICAgICAgIidhY3Rpb24nIiwgIidjb25maWcnIiwgIidlbmRh Y3Rpb24nIiwgIidyZWZyZXNoJyIsICInaW50ZXJ2YWwnIiwNCj4gDQo+ICsgICAgICAgICAgICAi J3ZhcnN0b3JlZGV2aWNlJyIsICInZ3VpZG9wJyIsICInZW5kZ3VpZG9wJyIsICInZGF0YXR5cGUn IiwNCj4gDQo+ICsgICAgICAgICAgICAiJ2RhdGEnIiwgIidtb2RhbCciLCAiJ05PTl9ERVZJQ0Un IiwgIidESVNLX0RFVklDRSciLA0KPiAiJ1ZJREVPX0RFVklDRSciLA0KPiANCj4gKyAgICAgICAg ICAgICInTkVUV09SS19ERVZJQ0UnIiwgIidJTlBVVF9ERVZJQ0UnIiwgIidPTkJPQVJEX0RFVklD RSciLA0KPiAiJ09USEVSX0RFVklDRSciLA0KPiANCj4gKyAgICAgICAgICAgICInU0VUVVBfQVBQ TElDQVRJT04nIiwgIidHRU5FUkFMX0FQUExJQ0FUSU9OJyIsICInRlJPTlRfUEFHRSciLA0KPiAN Cj4gKyAgICAgICAgICAgICInU0lOR0xFX1VTRSciLCAiJ1lFQVJfU1VQUFJFU1MnIiwgIidNT05U SF9TVVBQUkVTUyciLA0KPiAiJ0RBWV9TVVBQUkVTUyciLA0KPiANCj4gKyAgICAgICAgICAgICIn SE9VUl9TVVBQUkVTUyciLCAiJ01JTlVURV9TVVBQUkVTUyciLCAiJ1NFQ09ORF9TVVBQUkVTUyci LA0KPiANCj4gKyAgICAgICAgICAgICInU1RPUkFHRV9OT1JNQUwnIiwgIidTVE9SQUdFX1RJTUUn IiwgIidTVE9SQUdFX1dBS0VVUCciLA0KPiAiJ1VOSVFVRSciLA0KPiANCj4gKyAgICAgICAgICAg ICInTk9FTVBUWSciLCAiJ2NvbmQnIiwgIidmaW5kJyIsICInbWlkJyIsICIndG9rZW4nIiwgIidz cGFuJyIsDQo+IA0KPiArICAgICAgICAgICAgIidkdXAnIiwgIid2YXJlcXZhbCciLCAiJ3Zhcici LCAiJ2lkZXF2YWwnIiwgIidpZGVxaWQnIiwgIidpZGVxdmFsbGlzdCciLA0KPiANCj4gKyAgICAg ICAgICAgICIncXVlc3Rpb25yZWYnIiwgIidydWxlcmVmJyIsICInc3RyaW5ncmVmJyIsICIncHVz aHRoaXMnIiwgIidzZWN1cml0eSciLA0KPiANCj4gKyAgICAgICAgICAgICInZ2V0JyIsICInVFJV RSciLCAiJ0ZBTFNFJyIsICInT05FJyIsICInT05FUyciLCAiJ1pFUk8nIiwNCj4gIidVTkRFRklO RUQnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ1ZFUlNJT04nIiwgIidsZW5ndGgnIiwgIidBTkQn IiwgIidPUiciLCAiJ05PVCciLCAiJ3NldCciLA0KPiANCj4gKyAgICAgICAgICAgICInficiLCAi J2Jvb2x2YWwnIiwgIidzdHJpbmd2YWwnIiwgIid1bmludHZhbCciLCAiJ3RvdXBwZXInIiwNCj4g DQo+ICsgICAgICAgICAgICAiJ3RvbG93ZXInIiwgIidtYXRjaCciLCAiJ21hdGNoMiciLCAiJ2Nh dGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ3N0cmlu Z3JlZnZhbCciLCAiJ21hcCciLCAiJ3JlZnJlc2hndWlkJyIsICInU1RSSU5HX1RPS0VOJyIsDQo+ IA0KPiArICAgICAgICAgICAgIidPUFRJT05fREVGQVVMVCciLCAiJ09QVElPTl9ERUZBVUxUX01G RyciLA0KPiAiJ05VTUVSSUNfU0laRV8xJyIsDQo+IA0KPiArICAgICAgICAgICAgIidOVU1FUklD X1NJWkVfMiciLCAiJ05VTUVSSUNfU0laRV80JyIsICInTlVNRVJJQ19TSVpFXzgnIiwNCj4gDQo+ ICsgICAgICAgICAgICAiJ0RJU1BMQVlfSU5UX0RFQyciLCAiJ0RJU1BMQVlfVUlOVF9ERUMnIiwg IidESVNQTEFZX1VJTlRfSEVYJyIsDQo+IA0KPiArICAgICAgICAgICAgIidJTlNFTlNJVElWRSci LCAiJ1NFTlNJVElWRSciLCAiJ0xBU1RfTk9OX01BVENIJyIsDQo+ICInRklSU1RfTk9OX01BVENI JyIgXQ0KPiANCj4gKw0KPiANCj4gKyAgICBzeW1ib2xpY05hbWVzID0gWyAiPElOVkFMSUQ+IiwN Cj4gDQo+ICsgICAgICAgICAgICAiRGVmaW5lIiwgIkluY2x1ZGUiLCAiRm9ybVBrZ1R5cGUiLCAi T3BlbkJyYWNlIiwgIkNsb3NlQnJhY2UiLA0KPiANCj4gKyAgICAgICAgICAgICJPcGVuUGFyZW4i LCAiQ2xvc2VQYXJlbiIsICJPcGVuQnJhY2tldCIsICJDbG9zZUJyYWNrZXQiLCAiRG90IiwNCj4g DQo+ICsgICAgICAgICAgICAiTmVnYXRpdmUiLCAiQ29sb24iLCAiU2xhc2giLCAiU2VtaWNvbG9u IiwgIkNvbW1hIiwgIkVxdWFsIiwNCj4gDQo+ICsgICAgICAgICAgICAiTm90RXF1YWwiLCAiTGVz c0VxdWFsIiwgIkxlc3MiLCAiR3JlYXRlckVxdWFsIiwgIkdyZWF0ZXIiLA0KPiANCj4gKyAgICAg ICAgICAgICJCaXRXaXNlT3IiLCAiQml0V2lzZUFuZCIsICJEZXZpY2VQYXRoIiwgIkZvcm1TZXQi LCAiRm9ybVNldElkIiwNCj4gDQo+ICsgICAgICAgICAgICAiRW5kRm9ybVNldCIsICJUaXRsZSIs ICJGb3JtSWQiLCAiT25lT2YiLCAiRW5kT25lT2YiLCAiUHJvbXB0IiwNCj4gDQo+ICsgICAgICAg ICAgICAiT3JkZXJlZExpc3QiLCAiTWF4Q29udGFpbmVycyIsICJFbmRMaXN0IiwgIkVuZEZvcm0i LCAiRm9ybSIsDQo+IA0KPiArICAgICAgICAgICAgIkZvcm1NYXAiLCAiTWFwVGl0bGUiLCAiTWFw R3VpZCIsICJTdWJ0aXRsZSIsICJFbmRTdWJ0aXRsZSIsDQo+IA0KPiArICAgICAgICAgICAgIkhl bHAiLCAiVGV4dCIsICJPcHRpb24iLCAiRkxBR1MiLCAiRGF0ZSIsICJFbmREYXRlIiwgIlllYXIi LA0KPiANCj4gKyAgICAgICAgICAgICJNb250aCIsICJEYXkiLCAiVGltZSIsICJFbmRUaW1lIiwg IkhvdXIiLCAiTWludXRlIiwgIlNlY29uZCIsDQo+IA0KPiArICAgICAgICAgICAgIkdyYXlPdXRJ ZiIsICJMYWJlbCIsICJUaW1lb3V0IiwgIkludmVudG9yeSIsICJOb25OdkRhdGFNYXAiLA0KPiAN Cj4gKyAgICAgICAgICAgICJTdHJ1Y3QiLCAiVW5pb24iLCAiQm9vbGVhbiIsICJVaW50NjQiLCAi VWludDMyIiwgIlVpbnQxNiIsDQo+IA0KPiArICAgICAgICAgICAgIlVpbnQ4IiwgIkVGSV9TVFJJ TkdfSUQiLCAiRUZJX0hJSV9EQVRFIiwgIkVGSV9ISUlfVElNRSIsDQo+ICJFRklfSElJX1JFRiIs DQo+IA0KPiArICAgICAgICAgICAgIlV1aWQiLCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAi TnVtZXJpYyIsICJFbmROdW1lcmljIiwNCj4gDQo+ICsgICAgICAgICAgICAiTWluaW11bSIsICJN YXhpbXVtIiwgIlN0ZXAiLCAiRGVmYXVsdCIsICJQYXNzd29yZCIsDQo+ICJFbmRQYXNzd29yZCIs DQo+IA0KPiArICAgICAgICAgICAgIlN0cmluZyIsICJFbmRTdHJpbmciLCAiTWluU2l6ZSIsICJN YXhTaXplIiwgIkVuY29kaW5nIiwgIlN1cHByZXNzSWYiLA0KPiANCj4gKyAgICAgICAgICAgICJE aXNhYmxlSWYiLCAiSGlkZGVuIiwgIkdvdG8iLCAiRm9ybVNldEd1aWQiLCAiSW5jb25zaXN0ZW50 SWYiLA0KPiANCj4gKyAgICAgICAgICAgICJXYXJuaW5nSWYiLCAiTm9TdWJtaXRJZiIsICJFbmRJ ZiIsICJLZXkiLCAiRGVmYXVsdEZsYWciLA0KPiAiTWFudWZhY3R1cmluZ0ZsYWciLA0KPiANCj4g KyAgICAgICAgICAgICJDaGVja0JveERlZmF1bHRGbGFnIiwgIkNoZWNrQm94RGVmYXVsdE1mZ0Zs YWciLCAiSW50ZXJhY3RpdmVGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAiTlZBY2Nlc3NGbGFn IiwgIlJlc2V0UmVxdWlyZWRGbGFnIiwgIlJlY29ubmVjdFJlcXVpcmVkRmxhZyIsDQo+IA0KPiAr ICAgICAgICAgICAgIkxhdGVDaGVja0ZsYWciLCAiUmVhZE9ubHlGbGFnIiwgIk9wdGlvbk9ubHlG bGFnIiwgIlJlc3RTdHlsZUZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICJDbGFzcyIsICJTdWJj bGFzcyIsICJDbGFzc0d1aWQiLCAiVHlwZURlZiIsICJSZXN0b3JlIiwgIlNhdmUiLA0KPiANCj4g KyAgICAgICAgICAgICJEZWZhdWx0cyIsICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVmdCIsICJSaWdo dCIsICJDZW50ZXIiLCAiTGluZSIsDQo+IA0KPiArICAgICAgICAgICAgIk5hbWUiLCAiVmFySWQi LCAiUXVlc3Rpb24iLCAiUXVlc3Rpb25JZCIsICJJbWFnZSIsICJMb2NrZWQiLA0KPiANCj4gKyAg ICAgICAgICAgICJSdWxlIiwgIkVuZFJ1bGUiLCAiVmFsdWUiLCAiUmVhZCIsICJXcml0ZSIsICJS ZXNldEJ1dHRvbiIsDQo+IA0KPiArICAgICAgICAgICAgIkVuZFJlc2V0QnV0dG9uIiwgIkRlZmF1 bHRTdG9yZSIsICJBdHRyaWJ1dGUiLCAiVmFyc3RvcmUiLA0KPiAiRWZpdmFyc3RvcmUiLA0KPiAN Cj4gKyAgICAgICAgICAgICJWYXJTaXplIiwgIk5hbWVWYWx1ZVZhclN0b3JlIiwgIkFjdGlvbiIs ICJDb25maWciLCAiRW5kQWN0aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAiUmVmcmVzaCIsICJJ bnRlcnZhbCIsICJWYXJzdG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3VpZE9wIiwNCj4gDQo+ ICsgICAgICAgICAgICAiRGF0YVR5cGUiLCAiRGF0YSIsICJNb2RhbCIsICJDbGFzc05vbkRldmlj ZSIsICJDbGFzc0Rpc2tEZXZpY2UiLA0KPiANCj4gKyAgICAgICAgICAgICJDbGFzc1ZpZGVvRGV2 aWNlIiwgIkNsYXNzTmV0d29ya0RldmljZSIsICJDbGFzc0lucHV0RGV2aWNlIiwNCj4gDQo+ICsg ICAgICAgICAgICAiQ2xhc3NPbkJvYXJkRGV2aWNlIiwgIkNsYXNzT3RoZXJEZXZpY2UiLA0KPiAi U3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAiU3ViY2xhc3NH ZW5lcmFsQXBwbGljYXRpb24iLCAiU3ViY2xhc3NGcm9udFBhZ2UiLA0KPiAiU3ViY2xhc3NTaW5n bGVVc2UiLA0KPiANCj4gKyAgICAgICAgICAgICJZZWFyU3VwcHByZXNzRmxhZyIsICJNb250aFN1 cHByZXNzRmxhZyIsICJEYXlTdXBwcmVzc0ZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICJIb3Vy U3VwcHByZXNzRmxhZyIsICJNaW51dGVTdXBwcmVzc0ZsYWciLCAiU2Vjb25kU3VwcHJlc3NGbGFn IiwNCj4gDQo+ICsgICAgICAgICAgICAiU3RvcmFnZU5vcm1hbEZsYWciLCAiU3RvcmFnZVRpbWVG bGFnIiwgIlN0b3JhZ2VXYWtlVXBGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAiVW5pUXVlRmxh ZyIsICJOb0VtcHR5RmxhZyIsICJDb25kIiwgIkZpbmQiLCAiTWlkIiwgIlRvayIsICJTcGFuIiwN Cj4gDQo+ICsgICAgICAgICAgICAiRHVwIiwgIlZhckVxVmFsIiwgIlZhciIsICJJZEVxVmFsIiwg IklkRXFJZCIsICJJZEVxVmFsTGlzdCIsDQo+IA0KPiArICAgICAgICAgICAgIlF1ZXN0aW9uUmVm IiwgIlJ1bGVSZWYiLCAiU3RyaW5nUmVmIiwgIlB1c2hUaGlzIiwgIlNlY3VyaXR5IiwNCj4gDQo+ ICsgICAgICAgICAgICAiR2V0IiwgIlRydWVTeW1ib2wiLCAiRmFsc2VTeW1ib2wiLCAiT25lIiwg Ik9uZXMiLCAiWmVybyIsDQo+ICJVbmRlZmluZWQiLA0KPiANCj4gKyAgICAgICAgICAgICJWZXJz aW9uIiwgIkxlbmd0aCIsICJBTkQiLCAiT1IiLCAiTk9UIiwgIlNldCIsICJCaXRXaXNlTm90IiwN Cj4gDQo+ICsgICAgICAgICAgICAiQm9vbFZhbCIsICJTdHJpbmdWYWwiLCAiVW5JbnRWYWwiLCAi VG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwNCj4gDQo+ICsgICAgICAgICAgICAiTWF0Y2gy IiwgIkNhdGVuYXRlIiwgIlF1ZXN0aW9uUmVmVmFsIiwgIlN0cmluZ1JlZlZhbCIsICJNYXAiLA0K PiANCj4gKyAgICAgICAgICAgICJSZWZyZXNoR3VpZCIsICJTdHJpbmdUb2tlbiIsICJPcHRpb25E ZWZhdWx0IiwgIk9wdGlvbkRlZmF1bHRNZmciLA0KPiANCj4gKyAgICAgICAgICAgICJOdW1lcmlj U2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIsICJOdW1lcmljU2l6ZUZvdXIiLA0KPiAiTnVtZXJp Y1NpemVFaWdodCIsDQo+IA0KPiArICAgICAgICAgICAgIkRpc1BsYXlJbnREZWMiLCAiRGlzUGxh eVVJbnREZWMiLCAiRGlzUGxheVVJbnRIZXgiLCAiSW5zZW5zaXRpdmUiLA0KPiANCj4gKyAgICAg ICAgICAgICJTZW5zaXRpdmUiLCAiTGFzdE5vbk1hdGNoIiwgIkZpcnN0Tm9uTWF0Y2giLCAiTnVt YmVyIiwNCj4gIlN0cmluZ0lkZW50aWZpZXIiLA0KPiANCj4gKyAgICAgICAgICAgICJDb21wbGV4 RGVmaW5lIiwgIkxpbmVEZWZpbml0aW9uIiwgIkluY2x1ZGVEZWZpbml0aW9uIiwNCj4gIldoaXRl c3BhY2UiLA0KPiANCj4gKyAgICAgICAgICAgICJOZXdsaW5lIiwgIkxpbmVDb21tZW50IiwgIkV4 dGVybiIgXQ0KPiANCj4gKw0KPiANCj4gKyAgICBydWxlTmFtZXMgPSBbICJUX18wIiwgIlRfXzEi LCAiVF9fMiIsICJUX18zIiwgIlRfXzQiLCAiVF9fNSIsICJUX182IiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAiVF9fNyIsICJUX184IiwgIlRfXzkiLCAiVF9fMTAiLCAiVF9fMTEiLCAiVF9f MTIiLCAiVF9fMTMiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJUX18xNCIsICJUX18xNSIs ICJEZWZpbmUiLCAiSW5jbHVkZSIsICJGb3JtUGtnVHlwZSIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwgIk9wZW5QYXJlbiIsICJDbG9zZVBhcmVu IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiT3BlbkJyYWNrZXQiLCAiQ2xvc2VCcmFja2V0 IiwgIkRvdCIsICJOZWdhdGl2ZSIsICJDb2xvbiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg IlNsYXNoIiwgIlNlbWljb2xvbiIsICJDb21tYSIsICJFcXVhbCIsICJOb3RFcXVhbCIsICJMZXNz RXF1YWwiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIs ICJHcmVhdGVyIiwgIkJpdFdpc2VPciIsICJCaXRXaXNlQW5kIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAiRGV2aWNlUGF0aCIsICJGb3JtU2V0IiwgIkZvcm1TZXRJZCIsICJFbmRGb3JtU2V0 IiwgIlRpdGxlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiRm9ybUlkIiwgIk9uZU9mIiwg IkVuZE9uZU9mIiwgIlByb21wdCIsICJPcmRlcmVkTGlzdCIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgIk1heENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwgIkZvcm0iLCAiRm9y bU1hcCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIk1hcFRpdGxlIiwgIk1hcEd1aWQiLCAi U3VidGl0bGUiLCAiRW5kU3VidGl0bGUiLCAiSGVscCIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgIlRleHQiLCAiT3B0aW9uIiwgIkZMQUdTIiwgIkRhdGUiLCAiRW5kRGF0ZSIsICJZZWFyIiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGlt ZSIsICJIb3VyIiwgIk1pbnV0ZSIsICJTZWNvbmQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICJHcmF5T3V0SWYiLCAiTGFiZWwiLCAiVGltZW91dCIsICJJbnZlbnRvcnkiLCAiTm9uTnZEYXRh TWFwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiU3RydWN0IiwgIlVuaW9uIiwgIkJvb2xl YW4iLCAiVWludDY0IiwgIlVpbnQzMiIsICJVaW50MTYiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVGSV9ISUlfREFURSIsICJFRklfSElJX1RJ TUUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJFRklfSElJX1JFRiIsICJVdWlkIiwgIkNo ZWNrQm94IiwgIkVuZENoZWNrQm94IiwgIk51bWVyaWMiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICJFbmROdW1lcmljIiwgIk1pbmltdW0iLCAiTWF4aW11bSIsICJTdGVwIiwgIkRlZmF1bHQi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJQYXNzd29yZCIsICJFbmRQYXNzd29yZCIsICJT dHJpbmciLCAiRW5kU3RyaW5nIiwgIk1pblNpemUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICJNYXhTaXplIiwgIkVuY29kaW5nIiwgIlN1cHByZXNzSWYiLCAiRGlzYWJsZUlmIiwgIkhpZGRl biIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkdvdG8iLCAiRm9ybVNldEd1aWQiLCAiSW5j b25zaXN0ZW50SWYiLCAiV2FybmluZ0lmIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTm9T dWJtaXRJZiIsICJFbmRJZiIsICJLZXkiLCAiRGVmYXVsdEZsYWciLCAiTWFudWZhY3R1cmluZ0Zs YWciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJDaGVja0JveERlZmF1bHRGbGFnIiwgIkNo ZWNrQm94RGVmYXVsdE1mZ0ZsYWciLA0KPiAiSW50ZXJhY3RpdmVGbGFnIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAiTlZBY2Nlc3NGbGFnIiwgIlJlc2V0UmVxdWlyZWRGbGFnIiwgIlJlY29u bmVjdFJlcXVpcmVkRmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkxhdGVDaGVja0Zs YWciLCAiUmVhZE9ubHlGbGFnIiwgIk9wdGlvbk9ubHlGbGFnIiwNCj4gIlJlc3RTdHlsZUZsYWci LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJDbGFzcyIsICJTdWJjbGFzcyIsICJDbGFzc0d1 aWQiLCAiVHlwZURlZiIsICJSZXN0b3JlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiU2F2 ZSIsICJEZWZhdWx0cyIsICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVmdCIsICJSaWdodCIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgIkNlbnRlciIsICJMaW5lIiwgIk5hbWUiLCAiVmFySWQiLCAi UXVlc3Rpb24iLCAiUXVlc3Rpb25JZCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkltYWdl IiwgIkxvY2tlZCIsICJSdWxlIiwgIkVuZFJ1bGUiLCAiVmFsdWUiLCAiUmVhZCIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgIldyaXRlIiwgIlJlc2V0QnV0dG9uIiwgIkVuZFJlc2V0QnV0dG9u IiwgIkRlZmF1bHRTdG9yZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkF0dHJpYnV0ZSIs ICJWYXJzdG9yZSIsICJFZml2YXJzdG9yZSIsICJWYXJTaXplIiwNCj4gIk5hbWVWYWx1ZVZhclN0 b3JlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiQWN0aW9uIiwgIkNvbmZpZyIsICJFbmRB Y3Rpb24iLCAiUmVmcmVzaCIsICJJbnRlcnZhbCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg IlZhcnN0b3JlRGV2aWNlIiwgIkd1aWRPcCIsICJFbmRHdWlkT3AiLCAiRGF0YVR5cGUiLCAiRGF0 YSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIk1vZGFsIiwgIkNsYXNzTm9uRGV2aWNlIiwg IkNsYXNzRGlza0RldmljZSIsDQo+ICJDbGFzc1ZpZGVvRGV2aWNlIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwgIkNsYXNzSW5wdXREZXZpY2UiLA0KPiAi Q2xhc3NPbkJvYXJkRGV2aWNlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiQ2xhc3NPdGhl ckRldmljZSIsICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KPiAiU3ViY2xhc3NHZW5lcmFs QXBwbGljYXRpb24iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJTdWJjbGFzc0Zyb250UGFn ZSIsICJTdWJjbGFzc1NpbmdsZVVzZSIsICJZZWFyU3VwcHByZXNzRmxhZyIsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgIk1vbnRoU3VwcHJlc3NGbGFnIiwgIkRheVN1cHByZXNzRmxhZyIsICJI b3VyU3VwcHByZXNzRmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIk1pbnV0ZVN1cHBy ZXNzRmxhZyIsICJTZWNvbmRTdXBwcmVzc0ZsYWciLA0KPiAiU3RvcmFnZU5vcm1hbEZsYWciLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICJTdG9yYWdlVGltZUZsYWciLCAiU3RvcmFnZVdha2VV cEZsYWciLCAiVW5pUXVlRmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIk5vRW1wdHlG bGFnIiwgIkNvbmQiLCAiRmluZCIsICJNaWQiLCAiVG9rIiwgIlNwYW4iLCAiRHVwIiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAiVmFyRXFWYWwiLCAiVmFyIiwgIklkRXFWYWwiLCAiSWRFcUlk IiwgIklkRXFWYWxMaXN0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiUXVlc3Rpb25SZWYi LCAiUnVsZVJlZiIsICJTdHJpbmdSZWYiLCAiUHVzaFRoaXMiLCAiU2VjdXJpdHkiLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICJHZXQiLCAiVHJ1ZVN5bWJvbCIsICJGYWxzZVN5bWJvbCIsICJP bmUiLCAiT25lcyIsICJaZXJvIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiVW5kZWZpbmVk IiwgIlZlcnNpb24iLCAiTGVuZ3RoIiwgIkFORCIsICJPUiIsICJOT1QiLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICJTZXQiLCAiQml0V2lzZU5vdCIsICJCb29sVmFsIiwgIlN0cmluZ1ZhbCIs ICJVbkludFZhbCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIlRvVXBwZXIiLCAiVG9Mb3dl ciIsICJNYXRjaCIsICJNYXRjaDIiLCAiQ2F0ZW5hdGUiLA0KPiAiUXVlc3Rpb25SZWZWYWwiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICJTdHJpbmdSZWZWYWwiLCAiTWFwIiwgIlJlZnJlc2hH dWlkIiwgIlN0cmluZ1Rva2VuIiwNCj4gIk9wdGlvbkRlZmF1bHQiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICJPcHRpb25EZWZhdWx0TWZnIiwgIk51bWVyaWNTaXplT25lIiwgIk51bWVyaWNT aXplVHdvIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTnVtZXJpY1NpemVGb3VyIiwgIk51 bWVyaWNTaXplRWlnaHQiLCAiRGlzUGxheUludERlYyIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgIkRpc1BsYXlVSW50RGVjIiwgIkRpc1BsYXlVSW50SGV4IiwgIkluc2Vuc2l0aXZlIiwgIlNl bnNpdGl2ZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkxhc3ROb25NYXRjaCIsICJGaXJz dE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJpbmdJZGVudGlmaWVyIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAiQ29tcGxleERlZmluZSIsICJMaW5lRGVmaW5pdGlvbiIsICJJbmNsdWRlRGVm aW5pdGlvbiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIldoaXRlc3BhY2UiLCAiTmV3bGlu ZSIsICJMaW5lQ29tbWVudCIsICJFeHRlcm4iIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgZ3JhbW1h ckZpbGVOYW1lID0gIlZmclN5bnRheC5nNCINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIGlucHV0PU5vbmUsIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4gDQo+ ICsgICAgICAgIHN1cGVyKCkuX19pbml0X18oaW5wdXQsIG91dHB1dCkNCj4gDQo+ICsgICAgICAg IHNlbGYuY2hlY2tWZXJzaW9uKCI0LjcuMiIpDQo+IA0KPiArICAgICAgICBzZWxmLl9pbnRlcnAg PSBMZXhlckFUTlNpbXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNUb0RGQSwN Cj4gUHJlZGljdGlvbkNvbnRleHRDYWNoZSgpKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fYWN0aW9u cyA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuX3ByZWRpY2F0ZXMgPSBOb25lDQo+IA0KPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4 UGFyc2VyLnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3lu dGF4UGFyc2VyLnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAu LmQ1ZDYxYTI2YTkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQYXJzZXIucHkNCj4gQEAgLTAsMCArMSwyMDQ3NSBA QA0KPiArIyBHZW5lcmF0ZWQgZnJvbSBWZnJTeW50YXguZzQgYnkgQU5UTFIgNC43LjINCj4gDQo+ ICsjIGVuY29kaW5nOiB1dGYtOA0KPiANCj4gKw0KPiANCj4gK2ltcG9ydCBvcw0KPiANCj4gK2lt cG9ydCBzeXMNCj4gDQo+ICtmcm9tIGFudGxyNCBpbXBvcnQgKg0KPiANCj4gK2Zyb20gaW8gaW1w b3J0IFN0cmluZ0lPDQo+IA0KPiArZnJvbSB0eXBpbmcgaW1wb3J0IFRleHRJTw0KPiANCj4gK2Zy b20gVmZyQ29tcGlsZXIuSWZyQ3R5cGVzIGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxl ci5JZnJGb3JtUGtnIGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJVdGlsaXR5 IGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5JZnJUcmVlIGltcG9ydCAqDQo+IA0K PiArZnJvbSBWZnJDb21waWxlci5JZnJFcnJvciBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29t cGlsZXIuSWZyUHJlUHJvY2VzcyBpbXBvcnQgKg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Rl ZiBzZXJpYWxpemVkQVROKCk6DQo+IA0KPiArICAgIHdpdGggU3RyaW5nSU8oKSBhcyBidWY6DQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTYwOGJcdWE3MmFcdTgxMzNcdWI5ZWRcdTQxN2NcdTNi ZTdcdTc3ODZcdTU5NjRcM1x1MDEwDQo+IDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTBiYTdcNFwyXHRcMlw0XDNcdFwzXDRcNFx0XDRcNFw1XHRcNVw0XDZcdFw2XDRcN1x0XDciKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNFxiXHRcYlw0XHRcdFx0XDRcblx0XG5cNFwxM1x0 XDEzXDRcZlx0XGZcNFxyXHRcclw0XDE2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRc MTZcNFwxN1x0XDE3XDRcMjBcdFwyMFw0XDIxXHRcMjFcNFwyMlx0XDIyXDRcMjNcdFwyMyIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0XDI0XHRcMjRcNFwyNVx0XDI1XDRcMjZcdFwyNlw0 XDI3XHRcMjdcNFwzMFx0XDMwXDRcMzEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdFwz MVw0XDMyXHRcMzJcNFwzM1x0XDMzXDRcMzRcdFwzNFw0XDM1XHRcMzVcNFwzNlx0XDM2IikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzdcdFwzN1w0IFx0IFw0IVx0IVw0XCJcdFwiXDQj XHQjXDQkXHQkXDQlXHQlXDQmXHQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCImXDRcJ1x0 XCdcNChcdChcNClcdClcNCpcdCpcNCtcdCtcNCxcdCxcNC1cdC1cNC5cdC5cNCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIi9cdC9cNFw2MFx0XDYwXDRcNjFcdFw2MVw0XDYyXHRcNjJcNFw2 M1x0XDYzXDRcNjRcdFw2NCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0XDY1XHRcNjVc NFw2Nlx0XDY2XDRcNjdcdFw2N1w0OFx0OFw0OVx0OVw0Olx0Olw0O1x0IikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiO1w0PFx0PFw0PVx0PVw0Plx0Plw0P1x0P1w0QFx0QFw0QVx0QVw0Qlx0 Qlw0Q1x0Q1w0RFx0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiRFw0RVx0RVw0Rlx0Rlw0 R1x0R1w0SFx0SFw0SVx0SVw0Slx0Slw0S1x0S1w0TFx0TFw0TVx0IikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiTVw0Tlx0Tlw0T1x0T1w0UFx0UFw0UVx0UVw0Ulx0Ulw0U1x0U1w0VFx0VFw0 VVx0VVw0Vlx0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiVlw0V1x0V1w0WFx0WFw0WVx0 WVw0Wlx0Wlw0W1x0W1w0XFxcdFxcXDRdXHRdXDReXHReXDQiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJfXHRfXDRgXHRgXDRhXHRhXDRiXHRiXDRjXHRjXDRkXHRkXDRlXHRlXDRmXHRmXDRn XHRnXDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJoXHRoXDRpXHRpXDRqXHRqXDRrXHRr XDRsXHRsXDRtXHRtXDRuXHRuXDRvXHRvXDRwXHRwXDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJxXHRxXDRyXHRyXDRzXHRzXDR0XHR0XDR1XHR1XDR2XHR2XDR3XHR3XDR4XHR4XDR5XHR5 XDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ6XHR6XDR7XHR7XDR8XHR8XDR9XHR9XDR+ XHR+XDRcMTc3XHRcMTc3XDRcdTAwODBcdFx1MDA4MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDRcdTAwODFcdFx1MDA4MVw0XHUwMDgyXHRcdTAwODJcNFx1MDA4M1x0XHUwMDgzXDRcdTAwODQi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMDg0XDRcdTAwODVcdFx1MDA4NVw0XHUwMDg2 XHRcdTAwODZcNFx1MDA4N1x0XHUwMDg3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDA4 OFx0XHUwMDg4XDRcdTAwODlcdFx1MDA4OVw0XHUwMDhhXHRcdTAwOGFcNFx1MDA4YiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwOGJcNFx1MDA4Y1x0XHUwMDhjXDRcdTAwOGRcdFx1MDA4 ZFw0XHUwMDhlXHRcdTAwOGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMDhmXHRcdTAw OGZcNFx1MDA5MFx0XHUwMDkwXDRcdTAwOTFcdFx1MDA5MVw0XHUwMDkyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdFx1MDA5Mlw0XHUwMDkzXHRcdTAwOTNcNFx1MDA5NFx0XHUwMDk0XDRcdTAw OTVcdFx1MDA5NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwOTZcdFx1MDA5Nlw0XHUw MDk3XHRcdTAwOTdcNFx1MDA5OFx0XHUwMDk4XDRcdTAwOTkiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx0XHUwMDk5XDRcdTAwOWFcdFx1MDA5YVw0XHUwMDliXHRcdTAwOWJcNFx1MDA5Y1x0XHUw MDljIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDA5ZFx0XHUwMDlkXDRcdTAwOWVcdFx1 MDA5ZVw0XHUwMDlmXHRcdTAwOWZcNFx1MDBhMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRc dTAwYTBcNFx1MDBhMVx0XHUwMGExXDRcdTAwYTJcdFx1MDBhMlw0XHUwMGEzXHRcdTAwYTMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMGE0XHRcdTAwYTRcNFx1MDBhNVx0XHUwMGE1XDRc dTAwYTZcdFx1MDBhNlw0XHUwMGE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBhN1w0 XHUwMGE4XHRcdTAwYThcNFx1MDBhOVx0XHUwMGE5XDRcdTAwYWFcdFx1MDBhYSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDRcdTAwYWJcdFx1MDBhYlw0XHUwMGFjXHRcdTAwYWNcNFx1MDBhZFx0 XHUwMGFkXDRcdTAwYWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGFlXDRcdTAwYWZc dFx1MDBhZlw0XHUwMGIwXHRcdTAwYjBcNFx1MDBiMVx0XHUwMGIxIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcNFx1MDBiMlx0XHUwMGIyXDRcdTAwYjNcdFx1MDBiM1w0XHUwMGI0XHRcdTAwYjRc NFx1MDBiNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwYjVcNFx1MDBiNlx0XHUwMGI2 XDRcdTAwYjdcdFx1MDBiN1w0XHUwMGI4XHRcdTAwYjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw0XHUwMGI5XHRcdTAwYjlcNFx1MDBiYVx0XHUwMGJhXDRcdTAwYmJcdFx1MDBiYlw0XHUwMGJj IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBiY1w0XHUwMGJkXHRcdTAwYmRcNFx1MDBi ZVx0XHUwMGJlXDRcdTAwYmZcdFx1MDBiZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAw YzBcdFx1MDBjMFw0XHUwMGMxXHRcdTAwYzFcNFx1MDBjMlx0XHUwMGMyXDRcdTAwYzMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGMzXDRcdTAwYzRcdFx1MDBjNFw0XHUwMGM1XHRcdTAw YzVcNFx1MDBjNlx0XHUwMGM2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBjN1x0XHUw MGM3XDRcdTAwYzhcdFx1MDBjOFw0XHUwMGM5XHRcdTAwYzlcNFx1MDBjYSIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx0XHUwMGNhXDRcdTAwY2JcdFx1MDBjYlw0XHUwMGNjXHRcdTAwY2Nc M1wyXDNcMlwzXDJcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMTljXG5cMlxm XDJcMTZcMlx1MDE5ZlwxM1wyXDNcMlw1XDJcdTAxYTJcblwyXDNcMyIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDNcM1w0XDNcNFwzXDRcNVw0XHUwMWE5XG5cNFwzXDRcM1w0XDVcNFx1 MDFhZFxuXDRcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw1XDVcNVx1MDFiMFxuXDVc M1w2XDNcNlwzXDZcM1w2XDNcNlwzXDZcNVw2XHUwMWI4XG5cNiIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwzXDZcM1w2XDNcN1w1XDdcdTAxYmRcblw3XDNcN1wzXDdcNVw3XHUwMWMxXG5c N1wzXDdcNSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUwMWM0XG5cN1wzXDdcM1w3 XDNcN1wzXDdcNVw3XHUwMWNhXG5cN1wzXDdcM1w3XDNcYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDVcYlx1MDFjZlxuXGJcM1xiXDNcYlw1XGJcdTAxZDNcblxiXDNcYlw1XGJcdTAxZDZcblxi IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcYlwzXGJcM1xiXDNcYlw1XGJcdTAxZGNc blxiXDNcYlwzXGJcM1x0XDNcdFwzXHRcM1x0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFw3XHRcdTAxZWVcblx0IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXGZcdFwxNlx0XHUwMWYxXDEzXHRcM1xuXDNcblwz XG5cM1xuXDNcblw1XG5cdTAxZjhcblxuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNc blwzXG5cM1wxM1wzXDEzXDNcMTNcM1wxM1wzXDEzXDVcMTNcdTAyMDFcblwxM1wzXDEzIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMTNcM1xmXDNcZlwzXGZcM1xmXDNcZlw1XGZcdTAy MGFcblxmXDNcZlwzXGZcM1xyXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcclwzXHJc M1xyXDNcclw1XHJcdTAyMTNcblxyXDNcclwzXHJcM1wxNlwzXDE2XDNcMTZcMyIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwxNlwzXDE2XDVcMTZcdTAyMWNcblwxNlwzXDE2XDNcMTZcM1wx N1wzXDE3XDNcMTdcM1wxNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDE3XDVcMTdc dTAyMjVcblwxN1wzXDE3XDNcMTdcM1wyMFwzXDIwXDNcMjBcM1wyMFwzIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDIwXDVcMjBcdTAyMmVcblwyMFwzXDIwXDNcMjBcM1wyMVwzXDIxXDNc MjFcM1wyMVwzXDIxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcMjFcdTAyMzdcblwy MVwzXDIxXDNcMjFcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyXDUiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcMjJcdTAyNDBcblwyMlwzXDIyXDNcMjJcM1wyM1wzXDIzXDNcMjNcM1wyM1wz XDIzXDVcMjMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyNDlcblwyM1wzXDIzXDNc MjNcM1wyNFwzXDI0XDVcMjRcdTAyNGZcblwyNFwzXDI0XDMiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcMjRcM1wyNFwzXDI0XDNcMjVcM1wyNVw1XDI1XHUwMjU3XG5cMjVcM1wyNVwzXDI1 XDNcMjUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyNVwzXDI2XDNcMjZcNVwyNlx1 MDI1ZlxuXDI2XDNcMjZcM1wyNlwzXDI2XDNcMjZcMyIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlwyN1wzXDI3XDVcMjdcdTAyNjdcblwyN1wzXDI3XDNcMjdcM1wyN1wzXDI3XDNcMzBcM1wz MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBc M1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMw IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcMzBcdTAyODVcblwzMFwzXDMwXDNcMzBc M1wzMFwzXDMwXDNcMzBcNVwzMFx1MDI4Y1xuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFw1XDMwXHUwMjkzXG5cMzBcM1wzMFwzXDMwIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcM1wzMFwzXDMxXDNcMzFcM1wzMVw1XDMx XHUwMjljXG5cMzFcM1wzMVwzXDMxXDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzMVx1MDJh MFxuXDMxXDNcMzFcM1wzMVw1XDMxXHUwMmE0XG5cMzFcM1wzMlwzXDMyXDNcMzIiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcN1wzMlx1MDJhOVxuXDMyXGZcMzJcMTZcMzJcdTAyYWNcMTNc MzJcM1wzM1wzXDMzXDNcMzQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wzNFwzXDM1 XDdcMzVcdTAyYjNcblwzNVxmXDM1XDE2XDM1XHUwMmI2XDEzXDM1XDNcMzYiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXDM2XDNcMzZcM1wzNlwzXDM2XDNcMzZcM1wzNlwzXDM2XDNcMzZcM1wz Nlw1XDM2XHUwMmMyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5cMzZcM1wzN1wzXDM3 XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzNyIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDM3XDNcMzdcM1wzN1w1XDM3XHUwMmQxXG5cMzdcM1wzN1wzXDM3XDMg XDMgXDMgXDMgIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMgXDMgXDMgXDMgXDMgXDMg XDMgXDMgXDMgXDMgXDMgXDMgXDMgXDUgXHUwMmU2XG4gXDMiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCIgXDMgXDMgXDMgXDUgXHUwMmVjXG4gXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMg XDMhXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCIhXDMhXDMhXDMhXDMhXDMhXDMhXDMh XDMhXDMhXDMhXDMhXDMhXDMhXDMhXDMhXDUhXHUwMzA4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXG4hXDMhXDMhXDMhXDMhXDUhXHUwMzBlXG4hXDMhXDMhXDMhXDMhXDMhXDchXHUwMzE1 XG4iKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCIhXGYhXDE2IVx1MDMxOFwxMyFcMyFcMyFc MyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IiFcMyFcMyFcMyFcMyFcNSFcdTAzMmFcbiFcMyFcMyFcMyFcMyFcMyFcM1wiXDNcIlwzI1wzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCIjXDMjXDMjXDMjXDMjXDMjXDUjXHUwMzNhXG4jXDMjXDMj XDMjXDMjXDMjXDMjXDMjXDYjXHUwMzQzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcbiNcciNc MTYjXHUwMzQ0XDMjXDMjXDMjXDMjXDMjXDMkXDMkXDMkXDMkXDMkXDMkXDMkXDMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIiVcMyVcMyVcMyVcMyVcMyVcMyVcMyZcMyZcMyZcMyZcMyZcMyZcMyZc MyZcMyZcMyZcMyZcDQo+IDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCImXDMmXDMmXDMm XDMmXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wnXDNcJyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXCdcM1wnXDVcJ1x1MDM3NlxuXCdcM1wnXDNcJ1wzKFwzKFwzKFwz KFwzKFwzKVwzKVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCIpXDMqXDMqXDMqXDMqXDUqXHUw Mzg2XG4qXDMqXDMqXDMqXDMqXDMqXDUqXHUwMzhkXG4qXDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIipcMypcMypcMypcNSpcdTAzOTNcbipcMytcMytcMytcMytcMytcMytcMytcMytcMytcMytc MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIitcMytcMytcMytcMyxcMyxcMyxcMyxcMyxc MyxcMyxcMyxcNSxcdTAzYWJcbixcMy1cMy1cMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ii1cMy1cMy1cMy1cMy1cNy1cdTAzYjRcbi1cZi1cMTYtXHUwM2I3XDEzLVw1LVx1MDNiOVxuIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiLVwzLlw1Llx1MDNiY1xuLlwzLlwzLlwzLlwzLlwz LlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiLlwz LlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzLlwzIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiLlwzLlwzLlwzLlwzLlw3Llx1MDNlMVxuLlxmLlwxNi5c dTAzZTRcMTMuXDMuXDUuXHUwM2U3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG4uXDMv XDMvXDMvXDMvXDMvXDMvXDMvXDNcNjBcM1w2MFwzXDYxXDNcNjFcNVw2MVx1MDNmNCIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlxuXDYxXDNcNjJcM1w2MlwzXDYyXDdcNjJcdTAzZjlcblw2 MlxmXDYyXDE2XDYyXHUwM2ZjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDEzXDYyXDNc NjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDMiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcNjNcM1w2M1wzXDYzXDNcNjNcN1w2M1x1MDQwYlxuXDYzXGZcNjNc MTZcNjNcdTA0MGVcMTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNjNcM1w2M1wzXDYz XDNcNjNcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NCIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcNVw2 NFx1MDQyMlxuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDY0XDNcNjVcM1w2NVwzXDY1 XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjUiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVw3XDY1XHUwNDM1XG5c NjVcZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw2NVwxNlw2NVx1MDQzOFwxM1w2NVwz XDY1XDdcNjVcdTA0M2Jcblw2NVxmXDY1XDE2XDY1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNDNlXDEzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjZcM1w2NlwzXDY2XDNcNjdcM1w2N1wz IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDY3XDM4XDM4XDM4XDM4XDM4XDM4XDM4XDM5 XDM5XDM5XDU5XHUwNDUzXG45XDM6XDM6XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCI6 XDM6XDM6XDM6XDM6XDM6XDM6XDM6XDM6XDU6XHUwNDYwXG46XDM6XDM6XDU6XHUwNDY0XG4iKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCI6XDM6XDM6XDM6XDU6XHUwNDY5XG46XDM6XDM6XDc6 XHUwNDZkXG46XGY6XDE2Olx1MDQ3MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwxMzpc NTpcdTA0NzJcbjpcMzpcMzpcNTpcdTA0NzZcbjpcMztcMztcNTtcdTA0N2FcbjtcMyIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIjxcMzxcMzxcNzxcdTA0N2ZcbjxcZjxcMTY8XHUwNDgyXDEz PFwzPVwzPVwzPlwzPlwzPlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiPlwzPlwzPlwz PlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlw1IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCI+XHUwNDliXG4+XDM+XDM+XDM+XDM+XDM+XDM+XDc+XHUwNGEzXG4+XGY+ XDE2Plx1MDRhNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDEzPlwzPlwzPlwzPlwzPlwzPlw1 Plx1MDRhZFxuPlwzPlwzPlw1Plx1MDRiMVxuPlwzPlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCI+XDM/XDM/XDU/XHUwNGI3XG4/XDNAXDNAXDVAXHUwNGJiXG5AXDNBXDNBXDNBXDNBXDNBXDMi DQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNB XDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkFcM0Fc M0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiQVwzQVwzQVw1QVx1MDRlOVxuQVwzQVwzQVw1QVx1MDRlZFxuQVwz QVwzQVwzQVwzQVwzQVw1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJBXHUwNGY0XG5BXDNBXDNB XDNBXDNBXDVBXHUwNGZhXG5BXDNBXDNBXDVBXHUwNGZlXG5BXDMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIkFcM0FcM0JcM0JcM0JcN0JcdTA1MDVcbkJcZkJcMTZCXHUwNTA4XDEzQlwzQ1wzQ1w1 Q1x1MDUwYyINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxuQ1wzRFwzRFwzRFwzRFwzRFwz RFwzRFwzRFwzRFwzRFw1RFx1MDUxOFxuRFwzRFwzRFwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiRFwzRVwzRVwzRVwzRVwzRVwzRVw1RVx1MDUyM1xuRVwzRlwzRlwzRlwzRlwzRlwzRlwz RlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJGXDNGXDNGXDNGXDVGXHUwNTMwXG5GXDNHXDNH XDNHXDNHXDNHXDNHXDNHXDNHXDNHXDNHXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkdcM0dc M0dcN0dcdTA1M2ZcbkdcZkdcMTZHXHUwNTQyXDEzR1wzR1wzR1w1R1x1MDU0NlxuIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJHXDNHXDNHXDNHXDVHXHUwNTRiXG5HXDNIXDNIXDNIXDNIXDNIXDNI XDNIXDNIXDNIXDNIXDMiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJIXDNIXDNIXDdIXHUw NTVhXG5IXGZIXDE2SFx1MDU1ZFwxM0hcM0hcM0hcNUhcdTA1NjFcbiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIkhcM0hcM0hcM0hcNUhcdTA1NjZcbkhcM0lcM0lcM0lcM0lcM0lcM0lcNUlc dTA1NmVcbklcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIkpcM0pcM0pcM0pcM0pcM0tc M0tcM0tcM0tcM0tcM0tcM0tcM0tcM0xcM0xcM0xcM0xcM0xcMyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVw1TVx1MDU4ZVxuTVwzDQo+ IE1cM01cMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiTVw1TVx1MDU5M1xuTVwzTlw3Tlx1MDU5 NlxuTlxmTlwxNk5cdTA1OTlcMTNOXDNPXDNPXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIk9c M09cM09cM09cM09cNU9cdTA1YTJcbk9cM1BcM1BcM1BcM1BcM1BcM1BcM1BcM1BcNVBcdTA1YQ0K PiBjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcblBcM1FcM1FcM1FcM1FcM1FcM1FcM1FcM1Fc N1FcdTA1YjZcblFcZlFcMTZRXHUwNWI5XDEzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi UVwzUVwzUVw1UVx1MDViZFxuUVwzUVwzUVwzUVw1UVx1MDVjMlxuUVwzUlwzUlwzUlwzUlwzIg0K PiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiUlwzUlwzUlwzUlw3Ulx1MDVjY1xuUlxmUlwxNlJc dTA1Y2ZcMTNSXDNSXDNSXDVSXHUwNWQzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcblJcM1Jc M1JcM1JcNVJcdTA1ZDhcblJcM1NcM1NcM1NcM1NcM1NcM1NcM1NcM1NcNVNcdTA1ZTIiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcblNcM1NcM1NcM1NcM1NcNVNcdTA1ZThcblNcM1RcM1Rc M1RcM1RcM1VcM1VcM1ZcM1ZcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiVlwzVlwzVlwzVlwz VlwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzVlwzVlw1Vlx1MDYwMw0KPiAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlxuVlwzVlwzVlw3Vlx1MDYwN1xuVlxmVlwxNlZcdTA2MGFcMTNW XDNWXDNWXDNXXDNXXDNXIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1dcdTA2MTFcbldcZldc MTZXXHUwNjE0XDEzV1wzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNYXDNYXDNYXDVYXHUwNjIxXG5YXDNZXDNZXDNZXDNZXDNaXDNaXDNaXDNaXDNbXDdb XHUwNjJjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5bXGZbXDE2W1x1MDYyZlwxM1tc M1xcXDNcXFw1XFxcdTA2MzNcblxcXDNdXDNdXDVdXHUwNjM3IikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXG5dXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDVeXHUwNjQyXG5eXDNeXDNe XDNeXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJeXDVeXHUwNjQ4XG5eXDNeXDNeXDNe XDNeXDNfXDNfXDNfXDdfXHUwNjUxXG5fXGZfXDE2XyIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDY1NFwxM19cM2BcM2BcM2BcM2BcM2BcM2BcNWBcdTA2NWNcbmBcM2FcM2FcM2FcM2Fc MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiYVwzYVwzYVwzYVw1YVx1MDY2NlxuYVwzYVwzYVwz YVwzYVwzYVwzYVwzYVwzYVwzYVwzYVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJhXDNiXDNi XDNiXDdiXHUwNjc2XG5iXGZiXDE2Ylx1MDY3OVwxM2JcM2NcM2NcNWNcdTA2N2QiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlxuY1wzZFwzZFw1ZFx1MDY4MVxuZFwzZVwzZVwzZVwzZVwzZVwzZVwz ZVwzZVwzZVw1ZVx1MDY4YyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlxuZVwzZVwzZVwz ZVwzZVw1ZVx1MDY5MlxuZVwzZVwzZVwzZVwzZVwzZVwzZlwzZlwzZlw1IikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiZlx1MDY5Y1xuZlwzZlwzZlwzZlwzZlwzZlw1Zlx1MDZhM1xuZlwzZlwz ZlwzZlwzZlwzZlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiZlw1Zlx1MDZhYlxuZlwz Z1wzZ1wzZ1w3Z1x1MDZiMFxuZ1xmZ1wxNmdcdTA2YjNcMTNnXDMiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJoXDNoXDNoXDNoXDNoXDNoXDNoXDNoXDNoXDVoXHUwNmJlXG5oXDNpXDNpXDNp XDNpXDNpXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJpXDNpXDNpXDNpXDVpXHUwNmM5 XG5pXDNpXDVpXHUwNmNjXG5pXDNpXDNpXDNpXDNpXDNqXDMiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJqXDNqXDdqXHUwNmQ1XG5qXGZqXDE2alx1MDZkOFwxM2pcM2tcM2tcNWtcdTA2ZGNc bmtcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoImxcM2xcM2xcM2xcM2xcM2xcM2xcM2xc NWxcdTA2ZTZcbmxcM2xcM2xcM2xcM2xcNWxcdTA2ZWMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcbmxcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM21cM21cM21cN21c dTA2ZmQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxubVxmbVwxNm1cdTA3MDBcMTNtXDNuXDNu XDNuXDVuXHUwNzA1XG5uXDNvXDNvXDNvXDNvIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM29c M29cM29cM29cNW9cdTA3MGZcbm9cM29cM29cM29cM29cNW9cdTA3MTVcbm9cM29cMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgib1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1w1b1x1MDcy M1xub1wzb1wzb1wzb1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJvXDNwXDNwXDNwXDdwXHUw NzJjXG5wXGZwXDE2cFx1MDcyZlwxM3BcM3FcM3FcNXFcdTA3MzMiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcbnFcM3JcM3JcM3JcM3JcM3JcM3JcM3JcNXJcdTA3M2NcbnJcM3JcM3JcM3Jc M3JcM3JcNSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInJcdTA3NDNcbnJcM3JcM3JcM3Jc M3JcM3NcM3NcM3NcN3NcdTA3NGNcbnNcZnNcMTZzXHUwNzRmIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDEzc1wzdFwzdFwzdFwzdFw1dFx1MDc1NVxudFwzdVwzdVwzdVwzdVwzdVwzdVwz dVwzdVw1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ1XHUwNzVmXG51XDN1XDN1XDN1XDN1XDN1 XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInVc M3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgidVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwz dVwzdVwzdVwzdVwzdVwzdVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1 XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoInVcM3VcM3VcM3VcM3VcNXVcdTA3YWFcbnVcM3VcN3VcdTA3YWRcbnVcZnVcMTZ1 XHUwN2IwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMTN1XDV1XHUwN2IyXG51XDN1XDN1XDN1 XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInZc M3ZcM3ZcNXZcdTA3YzNcbnZcM3ZcM3ZcM3ZcM3ZcNXZcdTA3YzlcbnZcM3dcM3dcM3dcNyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgid1x1MDdjZVxud1xmd1wxNndcdTA3ZDFcMTN3XDN4XDN4XDN5 XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDV5XHUw N2RkXG55XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5 XDN5XDV5XHUwODI4XG55XDN5XDd5XHUwODJiXG55XGZ5XDE2eSIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx1MDgyZVwxM3lcNXlcdTA4MzBcbnlcM3lcM3lcM3lcM3pcM3pcM3pcM3pcM3pc M3pcM3pcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInpcM3pcM3pcM3pcM3pcNXpcdTA4 NDFcbnpcM3pcM3pcM3pcM3pcNXpcdTA4NDdcbnpcM3tcMyIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIntcM3tcN3tcdTA4NGNcbntcZntcMTZ7XHUwODRmXDEze1wzfFwzfFwzfVwzfVwzfVwz fVw1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgifVx1MDg1N1xufVwzflwzflwzflwzflwz flwzXDE3N1wzXDE3N1wzXHUwMDgwXDNcdTAwODAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVw1XHUwMDgxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4Njhcblx1MDA4MVwzXHUwMDgyXDNcdTAwODJcM1x1 MDA4MlwzXHUwMDgyXDVcdTAwODIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg2ZVxuXHUw MDgyXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODNcN1x1MDA4MyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwODc0XG5cdTAwODNcZlx1MDA4M1wxNlx1MDA4M1x1MDg3N1wxM1x1MDA4 M1wzXHUwMDgzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4M1wzXHUwMDgzXDNcdTAw ODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwODRcN1x1MDA4NFx1MDg4MlxuXHUwMDg0XGZcdTAwODRcMTZcdTAwODRcdTA4ODUi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcNVx1MDA4 NFx1MDg4OVxuXHUwMDg0XDNcdTAwODQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDg0 XDNcdTAwODRcM1x1MDA4NVwzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVwzXHUwMDg1IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4NVw3XHUwMDg1XHUwODk0XG5cdTAwODVcZlx1MDA4NVwx Nlx1MDA4NVx1MDg5NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDEzXHUwMDg1XDNcdTAwODVc M1x1MDA4NVw1XHUwMDg1XHUwODliXG5cdTAwODVcM1x1MDA4NSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwODVcM1x1MDA4NVwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNc dTAwODYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDg2XDdcdTAwODZcdTA4YTZcblx1 MDA4NlxmXHUwMDg2XDE2XHUwMDg2XHUwOGE5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMTNc dTAwODZcM1x1MDA4NlwzXHUwMDg2XDVcdTAwODZcdTA4YWRcblx1MDA4NlwzXHUwMDg2IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4NlwzXHUwMDg2XDdcdTAwODZcdTA4YjJcblx1MDA4 NlxmXHUwMDg2XDE2XHUwMDg2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YjVcMTNcdTAw ODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4N1wzXHUwMDg3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1w3XHUwMDg3XHUwOGMw XG5cdTAwODciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxmXHUwMDg3XDE2XHUwMDg3XHUwOGMz XDEzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1w1XHUwMDg3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA4Yzdcblx1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1w3XHUwMDg3XHUwOGNjXG4i KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA4N1xmXHUwMDg3XDE2XHUwMDg3XHUwOGNmXDEz XHUwMDg3XDNcdTAwODdcM1x1MDA4NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODdc M1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODgiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhc M1x1MDA4OFwzXHUwMDg4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDA4OFx1MDhlMVxu XHUwMDg4XGZcdTAwODhcMTZcdTAwODhcdTA4ZTRcMTNcdTAwODgiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcNVx1MDA4OFx1MDhlOFxuXHUwMDg4XDNcdTAwODhcM1x1 MDA4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODhcM1x1MDA4OFwzXHUwMDg5XDNc dTAwODlcM1x1MDA4OVw1XHUwMDg5XHUwOGYxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcblx1 MDA4OVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1 MDA4YlwzXHUwMDhiXDNcdTAwOGIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhiXDNc dTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNc dTAwOGJcM1x1MDA4YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1MDA4Ylwz XHUwMDhiXDNcdTAwOGJcNVx1MDA4Ylx1MDkxMlxuXHUwMDhiIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1 MDA4YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNc dTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wz XHUwMDhjXDNcdTAwOGNcM1x1MDA4YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwOGNc dTA5MzBcblx1MDA4Y1xmXHUwMDhjXDE2XHUwMDhjXHUwOTMzXDEzXHUwMDhjIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcNVx1MDA4Y1x1MDkzNVxuXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUw MDhjXDNcdTAwOGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMDhjXHUwOTNiXG5cdTAw OGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGRcM1x1MDA4ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhlXDNcdTAwOGVcNVx1MDA4ZVx1MDk0NVxuXHUwMDhl IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4 ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw OGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVw1XHUwMDhlXHUwOTU4 XG5cdTAwOGVcM1x1MDA4ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGZcM1x1MDA4 ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk2NVxuXHUw MDhmXDNcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhm XDNcdTAwOGZcNVx1MDA4Zlx1MDk2YlxuXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk3MVxuXHUwMDhm XDNcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNc dTAwOGZcNVx1MDA4Zlx1MDk3N1xuXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk3ZFxuXHUwMDhmXDNc dTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAw OGZcNVx1MDA4Zlx1MDk4M1xuXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk4OVxuXHUwMDhmXDNcdTAw OGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZc NVx1MDA4Zlx1MDk4ZlxuXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk5NVxuXHUwMDhmXDNcdTAwOGYi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1 MDA4Zlx1MDk5YlxuXHUwMDhmXDVcdTAwOGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDk5 ZFxuXHUwMDhmXDNcdTAwOGZcN1x1MDA4Zlx1MDlhMFxuXHUwMDhmXGZcdTAwOGZcMTYiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOGZcdTA5YTNcMTNcdTAwOGZcNVx1MDA4Zlx1MDlh NVxuXHUwMDhmXDNcdTAwOGZcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDA4Zlw3 XHUwMDhmXHUwOWE5XG5cdTAwOGZcZlx1MDA4ZlwxNlx1MDA4Zlx1MDlhY1wxMyIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDA4ZlwzXHUwMDhmXDVcdTAwOGZcdTA5YWZcblx1MDA4Zlwz XHUwMDhmXDNcdTAwOGZcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDkwXDNcdTAwOTBc M1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcNVx1MDA5MFx1MDliOFxuIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDdcdTAwOTBcdTA5YmNcblx1MDA5MFxmXHUw MDkwXDE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOTBcdTA5YmZcMTNcdTAwOTBcM1x1 MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwOTFcM1x1MDA5MVwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5M1wzXHUwMDkzXDNcdTAwOTMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMDkzXHUwOWNjXG5cdTAwOTNcZlx1MDA5M1wxNlx1 MDA5M1x1MDljZlwxM1x1MDA5MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOTRcM1x1 MDA5NFwzXHUwMDk0XDdcdTAwOTRcdTA5ZDRcblx1MDA5NFxmXHUwMDk0IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMTZcdTAwOTRcdTA5ZDdcMTNcdTAwOTRcM1x1MDA5NVwzXHUwMDk1XDNcdTAw OTVcN1x1MDA5NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWRjXG5cdTAwOTVcZlx1MDA5 NVwxNlx1MDA5NVx1MDlkZlwxM1x1MDA5NVwzXHUwMDk2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDA5NlwzXHUwMDk2XDdcdTAwOTZcdTA5ZTRcblx1MDA5NlxmXHUwMDk2XDE2XHUwMDk2 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZTdcMTNcdTAwOTZcM1x1MDA5N1wzXHUwMDk3 XDNcdTAwOTdcN1x1MDA5N1x1MDllYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXG5cdTAwOTdc Zlx1MDA5N1wxNlx1MDA5N1x1MDllZlwxM1x1MDA5N1wzXHUwMDk4XDNcdTAwOTgiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3XHUwMDk4XHUwOWYzXG5cdTAwOThcZlx1MDA5OFwxNlx1MDA5OFx1 MDlmNlwxM1x1MDA5OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOTlcM1x1MDA5OVwz XHUwMDk5XDNcdTAwOTlcNVx1MDA5OVx1MDlmY1xuXHUwMDk5IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDA5YVwzXHUwMDlhXDdcdTAwOWFcdTBhMDBcblx1MDA5YVxmXHUwMDlhXDE2XHUw MDlhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMDNcMTNcdTAwOWFcM1x1MDA5YlwzXHUw MDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDA5YlwzXHUwMDliXDNcdTAwOWJcNVx1MDA5Ylx1MGEwZFxuXHUwMDliXDNcdTAwOWMiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5Y1w3XHUwMDljXHUwYTExXG5cdTAwOWNcZlx1 MDA5Y1wxNlx1MDA5Y1x1MGExNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDEzXHUwMDljXDNc dTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcNVx1MDA5ZFx1MGExYSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXG5cdTAwOWRcM1x1MDA5ZVwzXHUwMDllXDdcdTAwOWVcdTBhMWVcblx1MDA5 ZVxmXHUwMDllIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMTZcdTAwOWVcdTBhMjFcMTNcdTAw OWVcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDVcdTAwOWZcdTBhMjdcblx1MDA5ZlwzXHUwMGEwXDNcdTAwYTBcN1x1MDBhMFx1MGEyYlxu IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYTBcZlx1MDBhMFwxNlx1MDBhMFx1MGEyZVwx M1x1MDBhMFwzXHUwMGExXDNcdTAwYTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGEx XDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExXDVcdTAwYTFcdTBhMzZcblx1MDBhMSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTJcN1x1MDBhMlx1MGEzOVxuXHUwMGEyXGZcdTAwYTJcMTZc dTAwYTJcdTBhM2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxM1x1MDBhMlwzXHUwMGEyXDNc dTAwYTJcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhMyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNc dTAwYTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwz XHUwMGE0XDVcdTAwYTRcdTBhNGZcblx1MDBhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTUiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNc dTAwYTZcM1x1MDBhNlwzXHUwMGE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhN1wz XHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhNyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwz XHUwMGE4XDNcdTAwYTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE5XDNcdTAwYTlc M1x1MDBhOVwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhOVwzXHUwMGE5IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBhOVwzXHUwMGE5XDNcdTAwYTlcNVx1MDBhOVx1MGE3N1xuXHUwMGE5XDNc dTAwYWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGFhXDNcdTAwYWJcM1x1MDBhYlwz XHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhYlw1XHUwMGFiXHUwYThhXG5c dTAwYWJcM1x1MDBhY1wzXHUwMGFjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhY1wz XHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhYyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDVcdTAwYWNcdTBhOThcblx1 MDBhY1wzXHUwMGFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhZFwzXHUwMGFkXDNc dTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcNVx1MDBhZFx1MGFhNlxuXHUw MGFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1 MDBhZVw2XHUwMGFlXHUwYWFjXG5cdTAwYWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxyXHUw MGFlXDE2XHUwMGFlXHUwYWFkXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWYiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcN1x1MDBhZlx1 MGFiN1xuXHUwMGFmXGZcdTAwYWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxNlx1MDBhZlx1 MGFiYVwxM1x1MDBhZlw1XHUwMGFmXHUwYWJjXG5cdTAwYWZcM1x1MDBiMCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDVcdTAwYjBcdTBhYzJcblx1MDBi MFwzXHUwMGIxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiMVwzXHUwMGIxXDNcdTAw YjFcM1x1MDBiMVwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAw YjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGIzXDNcdTAwYjNcNVx1MDBiM1x1MGFk NVxuXHUwMGIzXDNcdTAwYjNcM1x1MDBiMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YjRcM1x1MDBiNFwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiN1wzXHUwMGI3XDNcdTAw YjdcM1x1MDBiN1wzXHUwMGI3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiN1wzXHUw MGI3XDVcdTAwYjdcdTBhZTlcblx1MDBiN1wzXHUwMGI3XDNcdTAwYjciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBi OVwzXHUwMGI5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiOVwzXHUwMGI5XDNcdTAw YjlcM1x1MDBiOVwzXHUwMGI5XDVcdTAwYjlcdTBhZjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlxuXHUwMGI5XDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJi IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBi YlwzXHUwMGJjXDNcdTAwYmNcM1x1MDBiYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDVcdTAwYmMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MGIwZVxuXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJj XDNcdTAwYmNcM1x1MDBiYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAwYmNcdTBiMTVc blx1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJkIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJlXDNcdTAwYmVc M1x1MDBiZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJm XDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcNVx1MDBiZlx1MGIyOVxuXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAw YmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwzXHUw MGMwXDNcdTAwYzBcM1x1MDBjMVwzXHUwMGMxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzJcM1x1MDBjM1wzXHUwMGMzXDNcdTAwYzNcM1x1 MDBjM1wzXHUwMGMzXDNcdTAwYzMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGMzXDVc dTAwYzNcdTBiNDVcblx1MDBjM1wzXHUwMGMzXDNcdTAwYzNcM1x1MDBjMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYzNcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUw MGM0XDVcdTAwYzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGI1MFxuXHUwMGM0XDNcdTAw YzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNlwzXHUwMGM2XDNcdTAw YzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGM2XDNcdTAwYzZcN1x1MDBjNlx1MGI2 MFxuXHUwMGM2XGZcdTAwYzZcMTZcdTAwYzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGI2 M1wxM1x1MDBjNlwzXHUwMGM2XDNcdTAwYzZcM1x1MDBjNlwzXHUwMGM2XDNcdTAwYzYiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGM2XDNcdTAwYzZcM1x1MDBjNlwzXHUwMGM3XDNcdTAw YzdcM1x1MDBjOFwzXHUwMGM4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjOFwzXHUw MGM4XDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwzXHUw MGM5XDNcdTAwYzkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGM5XDNcdTAwYzlcM1x1 MDBjYVwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNhIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBjYVwzXHUwMGNhXDdcdTAwY2FcdTBiODhcblx1MDBjYVxmXHUwMGNhXDE2XHUw MGNhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiOGJcMTNcdTAwY2FcM1x1MDBjYVwzXHUw MGNhXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDBjYVwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2NcM1x1MDBjYyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1 MDBjY1wzXHUwMGNjXDNcdTAwY2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGNjXHUw YmEwXG5cdTAwY2NcZlx1MDBjY1wxNlx1MDBjY1x1MGJhM1wxM1x1MDBjYyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wyXDJcdTAwY2RcMlw0XDZc YlxuXGZcMTZcMjBcMjIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMjRcMjZcMzBcMzJc MzRcMzYgXCIkJigqLC5cNjBcNjJcNjRcNjY4Ojw+QEJERkhKTE5QUiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlRWWFpcXF5gYmRmaGpsbnBydHZ4enx+XHUwMDgwXHUwMDgyXHUwMDg0XHUw MDg2XHUwMDg4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOGFcdTAwOGNcdTAwOGVcdTAw OTBcdTAwOTJcdTAwOTRcdTAwOTZcdTAwOThcdTAwOWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDA5Y1x1MDA5ZVx1MDBhMFx1MDBhMlx1MDBhNFx1MDBhNlx1MDBhOFx1MDBhYVx1MDBhYyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGFlXHUwMGIwXHUwMGIyXHUwMGI0XHUwMGI2XHUw MGI4XHUwMGJhXHUwMGJjXHUwMGJlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYzBcdTAw YzJcdTAwYzRcdTAwYzZcdTAwYzhcdTAwY2FcdTAwY2NcdTAwY2VcdTAwZDAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDBkMlx1MDBkNFx1MDBkNlx1MDBkOFx1MDBkYVx1MDBkY1x1MDBkZVx1 MDBlMFx1MDBlMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGU0XHUwMGU2XHUwMGU4XHUw MGVhXHUwMGVjXHUwMGVlXHUwMGYwXHUwMGYyXHUwMGY0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTAwZjZcdTAwZjhcdTAwZmFcdTAwZmNcdTAwZmVcdTAxMDBcdTAxMDJcdTAxMDRcdTAxMDYi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEwOFx1MDEwYVx1MDEwY1x1MDEwZVx1MDExMFx1 MDExMlx1MDExNFx1MDExNlx1MDExOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTFhXHUw MTFjXHUwMTFlXHUwMTIwXHUwMTIyXHUwMTI0XHUwMTI2XHUwMTI4XHUwMTJhIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAxMmNcdTAxMmVcdTAxMzBcdTAxMzJcdTAxMzRcdTAxMzZcdTAxMzhc dTAxM2FcdTAxM2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEzZVx1MDE0MFx1MDE0Mlx1 MDE0NFx1MDE0Nlx1MDE0OFx1MDE0YVx1MDE0Y1x1MDE0ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMTUwXHUwMTUyXHUwMTU0XHUwMTU2XHUwMTU4XHUwMTVhXHUwMTVjXHUwMTVlXHUwMTYw IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNjJcdTAxNjRcdTAxNjZcdTAxNjhcdTAxNmFc dTAxNmNcdTAxNmVcdTAxNzBcdTAxNzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE3NFx1 MDE3Nlx1MDE3OFx1MDE3YVx1MDE3Y1x1MDE3ZVx1MDE4MFx1MDE4Mlx1MDE4NCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMTg2XHUwMTg4XHUwMThhXHUwMThjXHUwMThlXHUwMTkwXHUwMTky XHUwMTk0XHUwMTk2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyMFwzXDJcNFw1XDRcMlx1 MDBhY1x1MDBiMlx1MDBmYVx1MDBmYVw0XDJcdTAwYjNcdTAwYjYiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDBmYVx1MDBmYVw0XDJcblxuXHUwMGZhXHUwMGZhXDVcMlx1MDBiN1x1MDBiOVx1 MDBiZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGJmXHUwMGZhXHUwMGZhXDRcMlx1MDBi YVx1MDBiZlx1MDBmYVx1MDBmYVwzXDJcdTAwODUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDA4NlwzXDJcdTAwOGFcdTAwOGNcM1wyUlZcM1wyXHUwMGZhXHUwMGZiXDNcMlx1MDBlZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGYyXDRcMlx1MDBkM1x1MDBkOVx1MDBmYVx1MDBmYVwz XDJcdTAwZjZcdTAwZjdcM1wyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGY4XHUw MGZhXDJcdTBjNzFcMlx1MDE5ZFwzXDJcMlwyXDRcdTAxYTNcM1wyXDJcMlw2IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMWE1XDNcMlwyXDJcYlx1MDFhZlwzXDJcMlwyXG5cdTAxYjFc M1wyXDJcMlxmXHUwMWJjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMTZc dTAxY2VcM1wyXDJcMlwyMFx1MDFlZlwzXDJcMlwyXDIyXHUwMWYyXDMiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXDJcMjRcdTAxZmJcM1wyXDJcMlwyNlx1MDIwNFwzXDJcMlwyXDMw XHUwMjBkXDNcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMzJcdTAyMTZcM1wy XDJcMlwzNFx1MDIxZlwzXDJcMlwyXDM2XHUwMjI4XDNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDINCj4gXHUwMjMxXDNcMlwyXDJcIlx1MDIzYVwzXDJcMlwyJFx1MDI0M1wzXDJc MlwyJlx1MDI0YyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyKFx1MDI1NFwz XDJcMlwyKlx1MDI1Y1wzXDJcMlwyLFx1MDI2NFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCIuXHUwMjZjXDNcMlwyXDJcNjBcdTAyOThcM1wyXDJcMlw2Mlx1MDJhNVwzXDJcMlwyXDY0 XHUwMmFkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcNjZcdTAyYWZcM1wy XDJcMjhcdTAyYjRcM1wyXDJcMjpcdTAyYzFcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyPFx1MDJjM1wzXDJcMlwyPlx1MDJkNFwzXDJcMlwyQFx1MDJmNlwzXDJcMlwyQlx1MDMzMCIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyRFx1MDMzMlwzXDJcMlwyRlx1MDM0 YlwzXDJcMlwySFx1MDM1MlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJKXHUwMzU5 XDNcMlwyXDJMXHUwMzY5XDNcMlwyXDJOXHUwMzc5XDNcMlwyXDJQXHUwMzdlXDMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcMlJcdTAzODVcM1wyXDJcMlRcdTAzOTRcM1wyXDJcMlZcdTAz YWFcM1wyXDJcMlhcdTAzYjgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlpc dTAzZTZcM1wyXDJcMlxcXHUwM2U4XDNcMlwyXDJeXHUwM2VmXDNcMlwyXDIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJgXHUwM2YzXDNcMlwyXDJiXHUwM2Y1XDNcMlwyXDJkXHUwM2ZkXDNc MlwyXDJmXHUwNDIxXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMmhcdTA0MjNcM1wy XDJcMmpcdTA0NDJcM1wyXDJcMmxcdTA0NDVcM1wyXDJcMm5cdTA0NDgiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMnBcdTA0NTJcM1wyXDJcMnJcdTA0NTRcM1wyXDJcMnRcdTA0 NzlcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgidlx1MDQ3YlwzXDJcMlwyeFx1MDQ4 M1wzXDJcMlwyelx1MDQ4NVwzXDJcMlwyfFx1MDRiNlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwyflx1MDRiYVwzXDJcMlwyXHUwMDgwXHUwNGJjXDNcMlwyXDJcdTAwODJcdTA1 MDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMDg0XHUwNTBiXDNcMlwyXDJc dTAwODZcdTA1MGRcM1wyXDJcMlx1MDA4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTIy XDNcMlwyXDJcdTAwOGFcdTA1MmZcM1wyXDJcMlx1MDA4Y1x1MDUzMVwzXDJcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwOGVcdTA1NGNcM1wyXDJcMlx1MDA5MFx1MDU2N1wzXDJcMlwy XHUwMDkyXHUwNTZmXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDA5NFx1MDU3 NFwzXDJcMlwyXHUwMDk2XHUwNTdjXDNcMlwyXDJcdTAwOThcdTA1ODEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMDlhXHUwNTk3XDNcMlwyXDJcdTAwOWNcdTA1YTFcM1wyXDJc Mlx1MDA5ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWFiXDNcMlwyXDJcdTAwYTBcdTA1 YWRcM1wyXDJcMlx1MDBhMlx1MDVjM1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwYTRcdTA1ZDlcM1wyXDJcMlx1MDBhNlx1MDVlOVwzXDJcMlwyXHUwMGE4XHUwNWVkXDMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBhYVx1MDVlZlwzXDJcMlwyXHUwMGFjXHUw NjBkXDNcMlwyXDJcdTAwYWVcdTA2MjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwMGIwXHUwNjIyXDNcMlwyXDJcdTAwYjJcdTA2MjZcM1wyXDJcMlx1MDBiNCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNjJkXDNcMlwyXDJcdTAwYjZcdTA2MzJcM1wyXDJcMlx1MDBiOFx1 MDYzNlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYmFcdTA2MzhcM1wyXDJc Mlx1MDBiY1x1MDY0ZFwzXDJcMlwyXHUwMGJlXHUwNjViXDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcMlx1MDBjMFx1MDY1ZFwzXDJcMlwyXHUwMGMyXHUwNjcyXDNcMlwyXDJcdTAwYzRc dTA2N2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMGM2XHUwNjgwXDNcMlwy XDJcdTAwYzhcdTA2ODJcM1wyXDJcMlx1MDBjYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw Njk4XDNcMlwyXDJcdTAwY2NcdTA2YWNcM1wyXDJcMlx1MDBjZVx1MDZiZFwzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZDBcdTA2YmZcM1wyXDJcMlx1MDBkMlx1MDZkMVwzXDJc MlwyXHUwMGQ0XHUwNmRiXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBkNlx1 MDZkZFwzXDJcMlwyXHUwMGQ4XHUwNmY5XDNcMlwyXDJcdTAwZGFcdTA3MDQiDQo+ICkNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBkY1x1MDcwNlwzXDJcMlwyXHUwMGRlXHUwNzI4 XDNcMlwyXDJcdTAwZTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDczMlwzXDJcMlwyXHUw MGUyXHUwNzM0XDNcMlwyXDJcdTAwZTRcdTA3NDhcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMGU2XHUwNzU0XDNcMlwyXDJcdTAwZThcdTA3NTZcM1wyXDJcMlx1MDBlYVx1MDdi NlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwZWNcdTA3Y2FcM1wyXDJcMlx1 MDBlZVx1MDdkMlwzXDJcMlwyXHUwMGYwXHUwN2Q0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAwZjJcdTA4MzRcM1wyXDJcMlx1MDBmNFx1MDg0OFwzXDJcMlwyXHUwMGY2 IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwODUwXDNcMlwyXDJcdTAwZjhcdTA4NTZc M1wyXDJcMlx1MDBmYVx1MDg1OFwzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwMGZjXHUwODVkXDNcMlwyXDJcdTAwZmVcdTA4NWZcM1wyXDJcMlx1MDEwMFx1MDg2N1wzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMDJcdTA4NmRcM1wyXDJcMlx1MDEwNFx1 MDg2ZlwzXDJcMlwyXHUwMTA2XHUwODdiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDEwOFx1MDg4ZFwzXDJcMlwyXHUwMTBhXHUwODlmXDNcMlwyXDJcdTAxMGMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDhiOVwzXDJcMlwyXHUwMTBlXHUwOGQzXDNcMlwyXDJcdTAxMTBc dTA4ZjBcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTEyXHUwOGYyXDNcMlwy XDJcdTAxMTRcdTA4ZmNcM1wyXDJcMlx1MDExNlx1MDkxNVwzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXDJcdTAxMThcdTA5M2VcM1wyXDJcMlx1MDExYVx1MDk0MlwzXDJcMlwyXHUwMTFj XHUwOTU5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDExZVx1MDliMlwzXDJc MlwyXHUwMTIwXHUwOWMzXDNcMlwyXDJcdTAxMjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDljNlwzXDJcMlwyXHUwMTI0XHUwOWM4XDNcMlwyXDJcdTAxMjZcdTA5ZDBcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTI4XHUwOWQ4XDNcMlwyXDJcdTAxMmFcdTA5ZTBcM1wy XDJcMlx1MDEyY1x1MDllOFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMmVc dTA5ZjBcM1wyXDJcMlx1MDEzMFx1MDlmYlwzXDJcMlwyXHUwMTMyXHUwOWZkIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDEzNFx1MGEwY1wzXDJcMlwyXHUwMTM2XHUwYTBlXDNc MlwyXDJcdTAxMzgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGExOVwzXDJcMlwyXHUwMTNh XHUwYTFiXDNcMlwyXDJcdTAxM2NcdTBhMjZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMTNlXHUwYTI4XDNcMlwyXDJcdTAxNDBcdTBhMzVcM1wyXDJcMlx1MDE0Mlx1MGEzYVwz IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxNDRcdTBhM2ZcM1wyXDJcMlx1MDE0 Nlx1MGE0ZVwzXDJcMlwyXHUwMTQ4XHUwYTUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDE0YVx1MGE1N1wzXDJcMlwyXHUwMTRjXHUwYTVlXDNcMlwyXDJcdTAxNGUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MGE2N1wzXDJcMlwyXHUwMTUwXHUwYTc2XDNcMlwyXDJcdTAx NTJcdTBhNzhcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTU0XHUwYTdhXDNc MlwyXDJcdTAxNTZcdTBhOGJcM1wyXDJcMlx1MDE1OFx1MGE5OVwzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlwyXDJcdTAxNWFcdTBhYTdcM1wyXDJcMlx1MDE1Y1x1MGFiYlwzXDJcMlwyXHUw MTVlXHUwYWJkIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNjBcdTBh YzNcM1wyXDJcMlx1MDE2Mlx1MGFjOFwzXDJcMlwyXHUwMTY0IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBhY2RcM1wyXDJcMlx1MDE2Nlx1MGFkOFwzXDJcMlwyXHUwMTY4XHUwYWRhXDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE2YVx1MGFkZlwzXDJcMlwyXHUwMTZjXHUw YWUxXDNcMlwyXDJcdTAxNmVcdTBhZWNcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwMTcwXHUwYWY4XDNcMlwyXDJcdTAxNzJcdTBhZmFcM1wyXDJcMlx1MDE3NFx1MGFmZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNzZcdTBiMDRcM1wyXDJcMlx1MDE3OFx1 MGIxOVwzXDJcMlwyXHUwMTdhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiMWVcM1wyXDJc Mlx1MDE3Y1x1MGIyM1wzXDJcMlwyXHUwMTdlXHUwYjJlXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDE4MFx1MGIzM1wzXDJcMlwyXHUwMTgyXHUwYjM4XDNcMlwyXDJcdTAxODRc dTBiM2RcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTg2XHUwYjRmXDNcMlwy XDJcdTAxODhcdTBiNTFcM1wyXDJcMlx1MDE4YVx1MGI1YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAxOGNcdTBiNmNcM1wyXDJcMlx1MDE4ZVx1MGI2ZVwzXDJcMlwyXHUwMTkw IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiNzdcM1wyXDJcMlx1MDE5Mlx1MGI4MFwzXDJc MlwyXHUwMTk0XHUwYjk0XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE5Nlx1 MGI5NlwzXDJcMlwyXHUwMTk4XHUwMTljXDVcblw2XDJcdTAxOTlcdTAxOWNcNSIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlxmXDdcMlx1MDE5YVx1MDE5Y1w1XDE2XGJcMlx1MDE5Ylx1MDE5 OFwzXDJcMlwyXHUwMTliIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxOTlcM1wyXDJcMlx1 MDE5Ylx1MDE5YVwzXDJcMlwyXHUwMTljXHUwMTlmXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDE5ZFx1MDE5YlwzXDJcMlwyXHUwMTlkXHUwMTllXDNcMlwyXDJcdTAxOWVcdTAx YTFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTlmXHUwMTlkXDNcMlwyXDJc dTAxYTBcdTAxYTJcNS5cMzBcMlx1MDFhMVx1MDFhMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAxYTFcdTAxYTJcM1wyXDJcMlx1MDFhMlwzXDNcMlwyXDJcdTAxYTNcdTAxYTQi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDNcMlwyXHUwMWE0XDVcM1wyXDJcMlx1MDFhNVx1 MDFhOFx0XDJcMlwyXHUwMWE2XHUwMWE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwy XHUwMWE3XHUwMWE5XDdcdTAwZmJcMlwyXHUwMWE4XHUwMWE2XDNcMlwyXDJcdTAxYTgiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYTlcM1wyXDJcMlx1MDFhOVx1MDFhY1wzXDJcMlwy XHUwMWFhXHUwMWFiXDchXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWFiXHUwMWFk XDdcdTAwZmFcMlwyXHUwMWFjXHUwMWFhXDNcMlwyXDJcdTAxYWNcdTAxYWQiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFhZFw3XDNcMlwyXDJcdTAxYWVcdTAxYjBcN1x1 MDBmYVwyXDJcdTAxYWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhZVwzXDJcMlwyXHUw MWFmXHUwMWIwXDNcMlwyXDJcdTAxYjBcdFwzXDJcMlwyXHUwMWIxIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAxYjJcN1w2XDJcMlx1MDFiMlx1MDFiM1w3XDdcMlwyXHUwMWIzXHUwMWI3XDdc MzBcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAxYjRcdTAxYjhcNVw0XDNcMlx1MDFi NVx1MDFiOFw1XDZcNFwyXHUwMWI2XHUwMWI4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVxi XDVcMlx1MDFiN1x1MDFiNFwzXDJcMlwyXHUwMWI3XHUwMWI1XDNcMlwyXDJcdTAxYjciKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDFiNlwzXDJcMlwyXHUwMWI3XHUwMWI4XDNcMlwyXDJcdTAx YjhcdTAxYjlcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWI5XHUwMWJhXDdc MzFcMlwyXHUwMWJhXDEzXDNcMlwyXDJcdTAxYmJcdTAxYmRcN1x1MDA4NA0KPiAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcdTAxYmNcdTAxYmJcM1wyXDJcMlx1MDFiY1x1MDFiZFwzXDJc MlwyXHUwMWJkXHUwMWJlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFiZVx1 MDFjMFw3UFwyXDJcdTAxYmZcdTAxYzFcN09cMlwyXHUwMWMwXHUwMWJmIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYzBcdTAxYzFcM1wyXDJcMlx1MDFjMVx1MDFjM1wz XDJcMlwyXHUwMWMyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWM0XDdcdTAwZmJc MlwyXHUwMWMzXHUwMWMyXDNcMlwyXDJcdTAxYzNcdTAxYzRcM1wyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlwyXHUwMWM0XHUwMWM1XDNcMlwyXDJcdTAxYzVcdTAxYzZcN1wyNlwyXDJcdTAx YzZcdTAxYzciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNVwyMFx0XDJcdTAxYzdcdTAx YzlcN1wyN1wyXDJcdTAxYzhcdTAxY2FcN1x1MDBmYlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDFjOVx1MDFjOFwzXDJcMlwyXHUwMWM5XHUwMWNhXDNcMlwyXDJcdTAxY2FcdTAxY2Jc MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDFjYlx1MDFjY1w3IFwyXDJc dTAxY2NcclwzXDJcMlwyXHUwMWNkXHUwMWNmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1 MDA4NFwyXDJcdTAxY2VcdTAxY2RcM1wyXDJcMlx1MDFjZVx1MDFjZlwzXDJcMlwyXHUwMWNmIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxZDBcM1wyXDJcMlx1MDFkMFx1MDFkMlw3UVwyXDJc dTAxZDFcdTAxZDNcN09cMlwyXHUwMWQNCj4gMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MWQxXDNcMlwyXDJcdTAxZDJcdTAxZDNcM1wyXDJcMlx1MDFkM1x1MDFkNVwzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxZDRcdTAxZDZcN1x1MDBmYlwyXDJcdTAxZDVcdTAxZDRc M1wyXDJcMlx1MDFkNVx1MDFkNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAx ZDZcdTAxZDdcM1wyXDJcMlx1MDFkN1x1MDFkOFw3XDI2XDJcMlx1MDFkOCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMWQ5XDVcMjBcdFwyXHUwMWQ5XHUwMWRiXDdcMjdcMlwyXHUwMWRhXHUw MWRjXDdcdTAwZmIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxZGJcdTAxZGFcM1wy XDJcMlx1MDFkYlx1MDFkY1wzXDJcMlwyXHUwMWRjXHUwMWRkIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAxZGRcdTAxZGVcNw0KPiBcMlwyXHUwMWRlXDE3XDNcMlwyXDJc dTAxZGZcdTAxZWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XDIyXG5cMlx1MDFlMFx1MDFl ZVw1XDI0XDEzXDJcdTAxZTFcdTAxZWVcNVwyNlxmXDJcdTAxZTIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDFlZVw1XDMwXHJcMlx1MDFlM1x1MDFlZVw1XDMyXDE2XDJcdTAxZTRcdTAxZWVc NVwzNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwxN1wyXHUwMWU1XHUwMWVlXDVcMzZc MjBcMlx1MDFlNlx1MDFlZVw1IFwyMVwyXHUwMWU3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAxZWVcNVwiXDIyXDJcdTAxZThcdTAxZWVcNSRcMjNcMlx1MDFlOVx1MDFlZVw1JlwyNCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAxZWFcdTAxZWVcNShcMjVcMlx1MDFlYlx1MDFlZVw1 KlwyNlwyXHUwMWVjXHUwMWVlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNSxcMjdcMlx1MDFl ZFx1MDFkZlwzXDJcMlwyXHUwMWVkXHUwMWUwXDNcMlwyXDJcdTAxZWQiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDFlMVwzXDJcMlwyXHUwMWVkXHUwMWUyXDNcMlwyXDJcdTAxZWRcdTAxZTNc M1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWVkXHUwMWU0XDNcMlwyXDJcdTAx ZWRcdTAxZTVcM1wyXDJcMlx1MDFlZFx1MDFlNlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXDJcdTAxZWRcdTAxZTdcM1wyXDJcMlx1MDFlZFx1MDFlOFwzXDJcMlwyXHUwMWVkXHUwMWU5 Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZWRcdTAxZWFcM1wyXDJc Mlx1MDFlZFx1MDFlYlwzXDJcMlwyXHUwMWVkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwMWVjXDNcMlwyXDJcdTAxZWVcdTAxZjFcM1wyXDJcMlx1MDFlZlx1MDFlZFwzXDJcMlwyIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWVmXHUwMWYwXDNcMlwyXDJcdTAxZjBcMjFc M1wyXDJcMlx1MDFmMVx1MDFlZlwzXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XHUwMWYyXHUwMWYzXDdTXDJcMlx1MDFmM1x1MDFmN1w3XHUwMGZiXDJcMlx1MDFmNCIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDFmNVw3XDMyXDJcMlx1MDFmNVx1MDFmNlw3XHUwMGZh XDJcMlx1MDFmNlx1MDFmOFw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMzXDJcMlx1 MDFmN1x1MDFmNFwzXDJcMlwyXHUwMWY3XHUwMWY4XDNcMlwyXDJcdTAxZjgiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTAxZjlcM1wyXDJcMlx1MDFmOVx1MDFmYVw3DQo+IFwyXDJcdTAx ZmFcMjNcM1wyXDJcMlx1MDFmYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDFmY1w3 VFwyXDJcdTAxZmNcdTAyMDBcN1x1MDBmYlwyXDJcdTAxZmRcdTAxZmVcN1wzMiIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxZmVcdTAxZmZcN1x1MDBmYVwyXDJcdTAxZmZcdTAy MDFcN1wzM1wyXDJcdTAyMDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFmZFwzXDJcMlwy XHUwMjAwXHUwMjAxXDNcMlwyXDJcdTAyMDFcdTAyMDJcM1wyXDJcMiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MDIwMlx1MDIwM1w3IFwyXDJcdTAyMDNcMjVcM1wyXDJcMlx1MDIwNFx1 MDIwNVw3VVwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDIwNVx1MDIwOVw3XHUwMGZi XDJcMlx1MDIwNlx1MDIwN1w3XDMyXDJcMlx1MDIwNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMjA4XDdcdTAwZmFcMlwyXHUwMjA4XHUwMjBhXDdcMzNcMlwyXHUwMjA5XHUwMjA2XDMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDIwOVx1MDIwYVwzXDJcMlwyXHUwMjBhXHUw MjBiXDNcMlwyXDJcdTAyMGJcdTAyMGMiDQo+ICkNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDcNCj4gXDJcMlx1MDIwY1wyN1wzXDJcMlwyXHUwMjBkXHUwMjBlXDdWXDJcMlx1MDIwZVx1MDIx MiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZiXDJcMlx1MDIwZlx1MDIxMFw3 XDMyXDJcMlx1MDIxMFx1MDIxMVw3XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwy XHUwMjExXHUwMjEzXDdcMzNcMlwyXHUwMjEyXHUwMjBmXDNcMlwyXDJcdTAyMTJcdTAyMTMiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDIxM1x1MDIxNFwzXDJcMlwyXHUw MjE0XHUwMjE1XDcgXDJcMlx1MDIxNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDMxXDNcMlwy XDJcdTAyMTZcdTAyMTdcN1JcMlwyXHUwMjE3XHUwMjFiXDdcdTAwZmJcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAyMThcdTAyMTlcN1wzMlwyXDJcdTAyMTlcdTAyMWFcN1x1MDBmYVwy XDJcdTAyMWFcdTAyMWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMzXDJcMlx1MDIxYlx1 MDIxOFwzXDJcMlwyXHUwMjFiXHUwMjFjXDNcMlwyXDJcdTAyMWMiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAyMWRcM1wyXDJcMlx1MDIxZFx1MDIxZVw3DQo+IFwyXDJcdTAyMWVcMzNc M1wyXDJcMlx1MDIxZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjIwXDdXXDJcMlx1MDIy MFx1MDIyNFw3XHUwMGZiXDJcMlx1MDIyMVx1MDIyMlw3XDMyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXHUwMjIyXHUwMjIzXDdcdTAwZmFcMlwyXHUwMjIzXHUwMjI1XDdcMzNcMlwyXHUw MjI0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyMjFcM1wyXDJcMlx1MDIyNFx1MDIyNVwz XDJcMlwyXHUwMjI1XHUwMjI2XDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTAyMjZcdTAyMjdcNyBcMlwyXHUwMjI3XDM1XDNcMlwyXDJcdTAyMjhcdTAyMjlcN1hcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyMjlcdTAyMmRcN1x1MDBmYlwyXDJcdTAyMmFcdTAy MmJcN1wzMlwyXDJcdTAyMmIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyMmNcN1x1 MDBmYVwyXDJcdTAyMmNcdTAyMmVcN1wzM1wyXDJcdTAyMmRcdTAyMmFcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjJkXHUwMjJlXDNcMlwyXDJcdTAyMmVcdTAyMmZcM1wyXDJc Mlx1MDIyZlx1MDIzMCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3DQo+IFwyXDJcdTAy MzBcMzdcM1wyXDJcMlx1MDIzMVx1MDIzMlw3WVwyXDJcdTAyMzJcdTAyMzYiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTAyMzNcdTAyMzRcN1wzMlwyXDJcdTAyMzRc dTAyMzVcN1x1MDBmYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDIzNVx1MDIzN1w3 XDMzXDJcMlx1MDIzNlx1MDIzM1wzXDJcMlwyXHUwMjM2XHUwMjM3IikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMzdcdTAyMzhcM1wyXDJcMlx1MDIzOFx1MDIzOVw3IFwy XDJcdTAyMzkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIiFcM1wyXDJcMlx1MDIzYVx1MDIzYlw3 WlwyXDJcdTAyM2JcdTAyM2ZcN1x1MDBmYlwyXDJcdTAyM2MiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDIzZFw3XDMyXDJcMlx1MDIzZFx1MDIzZVw3XHUwMGZhXDJcMlx1MDIzZVx1MDI0MFw3 IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMzXDJcMlx1MDIzZlx1MDIzY1wzXDJcMlwy XHUwMjNmXHUwMjQwXDNcMlwyXDJcdTAyNDAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTAyNDFcM1wyXDJcMlx1MDI0MVx1MDI0Mlw3DQo+IFwyXDJcdTAyNDIjXDNcMlwyXDJcdTAyNDMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI0NFw3XHUwMGZiXDJcMlx1MDI0NFx1MDI0OFw3 XHUwMGZiXDJcMlx1MDI0NVx1MDI0NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcMzJcMlwy XHUwMjQ2XHUwMjQ3XDdcdTAwZmFcMlwyXHUwMjQ3XHUwMjQ5XDdcMzNcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAyNDhcdTAyNDVcM1wyXDJcMlx1MDI0OFx1MDI0OVwzXDJcMlwyXHUw MjQ5XHUwMjRhXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTAyNGFcdTAy NGJcNw0KPiBcMlwyXHUwMjRiJVwzXDJcMlwyXHUwMjRjXHUwMjRlXDciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlNcMlwyXHUwMjRkXHUwMjRmXDdcdTAwZmJcMlwyXHUwMjRlXHUwMjRkXDNcMlwy XDJcdTAyNGUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyNGZcM1wyXDJcMlx1MDI0 Zlx1MDI1MFwzXDJcMlwyXHUwMjUwXHUwMjUxXDdcMzZcMiIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwyXHUwMjUxXHUwMjUyXDdcdTAwZmFcMlwyXHUwMjUyXHUwMjUzXDcgXDJcMlx1MDI1 M1wnIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDI1NFx1MDI1Nlw3VFwyXDJc dTAyNTVcdTAyNTdcN1x1MDBmYlwyXDJcdTAyNTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDI1NVwzXDJcMlwyXHUwMjU2XHUwMjU3XDNcMlwyXDJcdTAyNTdcdTAyNThcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjU4XHUwMjU5XDdcMzZcMlwyXHUwMjU5XHUwMjVhXDdc dTAwZmFcMlwyXHUwMjVhXHUwMjViIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJc Mlx1MDI1YilcM1wyXDJcMlx1MDI1Y1x1MDI1ZVw3VVwyXDJcdTAyNWRcdTAyNWYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3XHUwMGZiXDJcMlx1MDI1ZVx1MDI1ZFwzXDJcMlwyXHUwMjVlXHUw MjVmXDNcMlwyXDJcdTAyNWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI2MFwzXDJcMlwy XHUwMjYwXHUwMjYxXDdcMzZcMlwyXHUwMjYxXHUwMjYyXDdcdTAwZmEiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwMjYyXHUwMjYzXDcgXDJcMlx1MDI2MytcM1wyXDJcMlx1MDI2 NFx1MDI2Nlw3ViIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDI2NVx1MDI2N1w3XHUw MGZiXDJcMlx1MDI2Nlx1MDI2NVwzXDJcMlwyXHUwMjY2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMjY3XDNcMlwyXDJcdTAyNjdcdTAyNjhcM1wyXDJcMlx1MDI2OFx1MDI2OVw3XDM2 XDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDI2OVx1MDI2YVw3XHUwMGZhXDJc Mlx1MDI2YVx1MDI2Ylw3IFwyXDJcdTAyNmItDQo+IFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTAyNmNcdTAyNmRcNytcMlwyXHUwMjZkXHUwMjZlXDdbXDJcMlx1MDI2ZVx1MDI2 ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAyNmZcdTAyNzBcNUxcJ1wyXHUw MjcwXHUwMjcxXDchXDJcMlx1MDI3MVx1MDI3MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDcu XDJcMlx1MDI3Mlx1MDI3M1w3XGJcMlwyXHUwMjczXHUwMjc0XDdcdTAwZWNcMlwyXHUwMjc0IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyNzVcN1wzMFwyXDJcdTAyNzVcdTAyNzZcN1x1MDBm YVwyXDJcdTAyNzZcdTAyNzdcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDI3 N1x1MDI3OFw3IVwyXDJcdTAyNzhcdTAyNzlcNz1cMlwyXHUwMjc5XHUwMjdhIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAyN2FcdTAyN2JcN1x1MDBlY1wyXDJcdTAyN2Jc dTAyN2NcN1wzMFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI3Y1x1MDI3ZFw3XHUw MGZhXDJcMlx1MDI3ZFx1MDI3ZVw3XDMxXDJcMlx1MDI3ZVx1MDI4NCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDchXDJcMlx1MDI3Zlx1MDI4MFw3XHUwMDgzXDJcMlx1MDI4MFx1MDI4MVw3XGJc MlwyXHUwMjgxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjgyXDVcNjBcMzFcMlx1 MDI4Mlx1MDI4M1w3IVwyXDJcdTAyODNcdTAyODVcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXHUwMjg0XHUwMjdmXDNcMlwyXDJcdTAyODRcdTAyODVcM1wyXDJcMlx1MDI4NVx1MDI4 YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyODZcdTAyODdcN1x1MDA4MVwy XDJcdTAyODdcdTAyODhcN1xiXDJcMlx1MDI4OCINCj4gKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTAyODlcNVw2MlwzMlwyXHUwMjg5XHUwMjhhXDchXDJcMlx1MDI4YVx1MDI4Y1wzXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyOGJcdTAyODZcM1wyXDJcMlx1MDI4Ylx1 MDI4Y1wzXDJcMlwyXHUwMjhjXHUwMjkyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDI4ZFx1MDI4ZVw3XHUwMDgyXDJcMlx1MDI4ZVx1MDI4Zlw3XGJcMlwyXHUwMjhmIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjkwXDVcNjZcMzRcMlx1MDI5MFx1MDI5MVw3IVwy XDJcdTAyOTFcdTAyOTNcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwMjkyXHUw MjhkXDNcMlwyXDJcdTAyOTJcdTAyOTNcM1wyXDJcMlx1MDI5M1x1MDI5NCIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjk0XHUwMjk1XDU4XDM1XDJcdTAyOTVcdTAyOTZc Ny1cMlwyXHUwMjk2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjk3XDcgXDJcMlx1 MDI5Ny9cM1wyXDJcMlx1MDI5OFx1MDI5Ylw1TFwnXDJcdTAyOTkiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDI5YVw3KFwyXDJcdTAyOWFcdTAyOWNcNUxcJ1wyXHUwMjliXHUwMjk5XDNcMlwy XDJcdTAyOWIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOWNcM1wyXDJcMlx1MDI5 Y1x1MDI5ZlwzXDJcMlwyXHUwMjlkXHUwMjllXDcoXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDI5ZVx1MDJhMFw1TFwnXDJcdTAyOWZcdTAyOWRcM1wyXDJcMlx1MDI5Zlx1MDJh MFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyYTBcdTAyYTNcM1wyXDJcMlx1 MDJhMVx1MDJhMlw3KFwyXDJcdTAyYTJcdTAyYTQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcNUxcJ1wyXHUwMmEzXHUwMmExXDNcMlwyXDJcdTAyYTNcdTAyYTRcM1wyXDJcMlx1MDJhNCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDYxXDNcMlwyXDJcdTAyYTVcdTAyYWFcNVw2NFwzM1wy XHUwMmE2XHUwMmE3XDcoXDJcMlx1MDJhNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmE5 XDVcNjRcMzNcMlx1MDJhOFx1MDJhNlwzXDJcMlwyXHUwMmE5XHUwMmFjXDNcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlx1MDJhYVx1MDJhOFwzXDJcMlwyXHUwMmFhXHUwMmFiXDNcMlwy XDJcdTAyYWJcNjNcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMmFjXHUwMmFh XDNcMlwyXDJcdTAyYWRcdTAyYWVcdFwzXDJcMlx1MDJhZVw2NSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTAyYWZcdTAyYjBcdFw0XDJcMlx1MDJiMFw2N1wzXDJcMlwyXHUwMmIx XHUwMmIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNTpcMzZcMlx1MDJiMlx1MDJiMVwzXDJc MlwyXHUwMmIzXHUwMmI2XDNcMlwyXDJcdTAyYjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDJiMlwzXDJcMlwyXHUwMmI0XHUwMmI1XDNcMlwyXDJcdTAyYjU5XDNcMlwyXDJcdTAyYjYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJiNFwzXDJcMlwyXHUwMmI3XHUwMmMyXDVkXDYzXDJc dTAyYjhcdTAyYzJcNWhcNjVcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDJiOVx1 MDJjMlw1alw2NlwyXHUwMmJhXHUwMmMyXDU+DQo+IFwyXHUwMmJiXHUwMmMyXDVAIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCIhXDJcdTAyYmNcdTAyYzJcNUQjXDJcdTAyYmRcdTAyYzJcNTxcMzdc Mlx1MDJiZVx1MDJjMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVGJFwyXHUwMmJmXHUwMmMy XDVIJVwyXHUwMmMwXHUwMmMyXDVcdTAxMWNcdTAwOGZcMlx1MDJjMSINCj4gKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDJiN1wzXDJcMlwyXHUwMmMxXHUwMmI4XDNcMlwyXDJcdTAyYzFcdTAy YjlcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmMxXHUwMmJhXDNcMlwyXDJc dTAyYzFcdTAyYmJcM1wyXDJcMlx1MDJjMVx1MDJiY1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTAyYzFcdTAyYmRcM1wyXDJcMlx1MDJjMVx1MDJiZVwzXDJcMlwyXHUwMmMxXHUw MmJmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDJjMVx1MDJjMFwzXDJcMlwy XHUwMmMyO1wzXDJcMlwyXHUwMmMzXHUwMmM0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDdcdTAwOWJcMlwyXHUwMmM0XHUwMmM1XDdcdTAwZmJcMlwyXHUwMmM1XHUwMmM2XDchXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwMmM2XHUwMmM3XDdcNjJcMlwyXHUwMmM3XHUwMmM4 XDdcYlwyXDJcdTAyYzhcdTAyYzkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBl Y1wyXDJcdTAyYzlcdTAyY2FcN1wzMFwyXDJcdTAyY2FcdTAyY2JcN1x1MDBmYSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDJjYlx1MDJkMFw3XDMxXDJcMlx1MDJjY1x1MDJjZFw3IVwy XDJcdTAyY2RcdTAyY2UiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDA5Y1wyXDJc dTAyY2VcdTAyY2ZcN1xiXDJcMlx1MDJjZlx1MDJkMVw3XHUwMGZhXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXHUwMmQwXHUwMmNjXDNcMlwyXDJcdTAyZDBcdTAyZDFcM1wyXDJcMlx1MDJk MVx1MDJkMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmQyXHUwMmQz XDcNCj4gXDJcMlx1MDJkMz1cM1wyXDJcMlx1MDJkNFx1MDJlNSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDdcdTAwOWRcMlwyXHUwMmQ1XHUwMmQ2XDdcdTAwZmJcMlwyXHUwMmQ2XHUwMmU2XDch XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwMmQ3XHUwMmQ4XDdWXDJcMlx1MDJkOFx1 MDJlNlw3IVwyXDJcdTAyZDlcdTAyZGFcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiVVwyXDJc dTAyZGFcdTAyZTZcNyFcMlwyXHUwMmRiXHUwMmRjXDdUXDJcMlx1MDJkY1x1MDJlNiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDJkZFx1MDJkZVw3U1wyXDJcdTAyZGVcdTAyZTZc NyFcMlwyXHUwMmRmXHUwMmUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1hcMlwyXHUwMmUw XHUwMmU2XDchXDJcMlx1MDJlMVx1MDJlMlw3WVwyXDJcdTAyZTJcdTAyZTYiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw3IVwyXDJcdTAyZTNcdTAyZTRcN1pcMlwyXHUwMmU0XHUwMmU2XDchXDJc Mlx1MDJlNVx1MDJkNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyZTVcdTAy ZDdcM1wyXDJcMlx1MDJlNVx1MDJkOVwzXDJcMlwyXHUwMmU1IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAyZGJcM1wyXDJcMlx1MDJlNVx1MDJkZFwzXDJcMlwyXHUwMmU1XHUwMmRmXDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJlNVx1MDJlMVwzXDJcMlwyXHUwMmU1XHUw MmUzXDNcMlwyXDJcdTAyZTZcdTAyZWJcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwMmU3XHUwMmU4XDdcdTAwOGZcMlwyXHUwMmU4XHUwMmU5XDdcYlwyXDJcdTAyZTkiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZWFcN1x1MDBmYVwyXDJcdTAyZWFcdTAyZWNcNyFc MlwyXHUwMmViXHUwMmU3XDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDJlYlx1 MDJlY1wzXDJcMlwyXHUwMmVjXHUwMmVkXDNcMlwyXDJcdTAyZWRcdTAyZWUiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcN1x1MDA4ZVwyXDJcdTAyZWVcdTAyZWZcN1xiXDJcMlx1MDJlZlx1 MDJmMFw3XHUwMGZiXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDJmMFx1MDJm MVw3IVwyXDJcdTAyZjFcdTAyZjJcN1tcMlwyXHUwMmYyXHUwMmYzXDciKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcYlwyXDJcdTAyZjNcdTAyZjRcNUxcJ1wyXHUwMmY0XHUwMmY1XDcgXDJc Mlx1MDJmNT9cMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDJmNlx1MDMw N1w3XHUwMDllXDJcMlx1MDJmN1x1MDJmOFw3XHUwMGZiXDJcMiIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx1MDJmOFx1MDMwOFw3IVwyXDJcdTAyZjlcdTAyZmFcN1ZcMlwyXHUwMmZhXHUw MzA4XDchIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDJmYlx1MDJmY1w3VVwy XDJcdTAyZmNcdTAzMDhcNyFcMlwyXHUwMmZkXHUwMmZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcN1RcMlwyXHUwMmZlXHUwMzA4XDchXDJcMlx1MDJmZlx1MDMwMFw3U1wyXDJcdTAzMDBcdTAz MDgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTAzMDFcdTAzMDJcN1hcMlwyXHUw MzAyXHUwMzA4XDchXDJcMlx1MDMwM1x1MDMwNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdZ XDJcMlx1MDMwNFx1MDMwOFw3IVwyXDJcdTAzMDVcdTAzMDZcN1pcMlwyXHUwMzA2XHUwMzA4IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDMwN1x1MDJmN1wzXDJcMlwyXHUw MzA3XHUwMmY5XDNcMlwyXDJcdTAzMDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAy ZmJcM1wyXDJcMlx1MDMwN1x1MDJmZFwzXDJcMlwyXHUwMzA3XHUwMmZmXDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDMwN1x1MDMwMVwzXDJcMlwyXHUwMzA3XHUwMzAzXDNcMlwy XDJcdTAzMDdcdTAzMDVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzA4XHUw MzBkXDNcMlwyXDJcdTAzMDlcdTAzMGFcN1x1MDA4ZlwyXDJcdTAzMGEiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzMGJcN1xiXDJcMlx1MDMwYlx1MDMwY1w3XHUwMGZhXDJcMlx1MDMw Y1x1MDMwZVw3ISIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDMwZFx1MDMwOVwzXDJc MlwyXHUwMzBkXHUwMzBlXDNcMlwyXDJcdTAzMGVcdTAzMGYiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwMzBmXHUwMzEwXDdcdTAwOWNcMlwyXHUwMzEwXHUwMzExXDdcYlwyXDJc dTAzMTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMxNlw1QlwiXDJcdTAzMTJcdTAzMTNc NyhcMlwyXHUwMzEzXHUwMzE1XDVCXCJcMlx1MDMxNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMzEyXDNcMlwyXDJcdTAzMTVcdTAzMThcM1wyXDJcMlx1MDMxNlx1MDMxNFwzXDJcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzMTZcdTAzMTdcM1wyXDJcMlx1MDMxN1x1MDMxOVwz XDJcMlwyXHUwMzE4XHUwMzE2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDMx OVx1MDMyOVw3IVwyXDJcdTAzMWFcdTAzMWJcN1x1MDA4ZVwyXDJcdTAzMWIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTAzMWNcN1xiXDJcMlx1MDMxY1x1MDMxZFw3XHUwMGZiXDJcMlx1 MDMxZFx1MDMyYVw3ISIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDMxZVx1MDMxZlw3 XHUwMDhlXDJcMlx1MDMxZlx1MDMyMFw3XGJcMlwyXHUwMzIwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAzMjFcN1x1MDBlY1wyXDJcdTAzMjFcdTAzMjJcN1wzMFwyXDJcdTAzMjJcdTAzMjNc NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDMyM1x1MDMyNFw3XDMxXDJc Mlx1MDMyNFx1MDMyNVw3IVwyXDJcdTAzMjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMy Nlw3XHUwMDlmXDJcMlx1MDMyNlx1MDMyN1w3XGJcMlwyXHUwMzI3XHUwMzI4XDdcdTAwZmEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzMjhcdTAzMmFcNyFcMlwyXHUwMzI5XHUwMzFh XDNcMlwyXDJcdTAzMjlcdTAzMWUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDMyYVx1MDMyYlwzXDJcMlwyXHUwMzJiXHUwMzJjXDdbXDJcMlx1MDMyYyIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDMyZFw3XGJcMlwyXHUwMzJkXHUwMzJlXDVMXCdcMlx1MDMy ZVx1MDMyZlw3DQo+IFwyXDJcdTAzMmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkFcM1wyXDJc Mlx1MDMzMFx1MDMzMVw3XHUwMGZhXDJcMlx1MDMzMUNcM1wyXDJcMlx1MDMzMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMzMzXDdcdTAwYTBcMlwyXHUwMzMzXHUwMzM0XDdcdTAwZmJcMlwy XHUwMzM0XHUwMzM5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwMzM1XHUwMzM2 XDdcdTAwOGZcMlwyXHUwMzM2XHUwMzM3XDdcYlwyXDJcdTAzMzciKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAzMzhcN1x1MDBmYVwyXDJcdTAzMzhcdTAzM2FcNyFcMlwyXHUwMzM5XHUw MzM1XDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDMzOVx1MDMzYVwzXDJcMlwy XHUwMzNhXHUwMzQyXDNcMlwyXDJcdTAzM2JcdTAzM2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw3XHUwMDhlXDJcMlx1MDMzY1x1MDMzZFw3XGJcMlwyXHUwMzNkXHUwMzNlXDdcdTAwZWNcMiIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMzNlXHUwMzNmXDdcMzBcMlwyXHUwMzNm XHUwMzQwXDdcdTAwZmFcMlwyXHUwMzQwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNDFc N1wzMVwyXDJcdTAzNDFcdTAzNDNcNyFcMlwyXHUwMzQyXHUwMzNiXDNcMlwyXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDM0M1x1MDM0NFwzXDJcMlwyXHUwMzQ0XHUwMzQyXDNcMlwyXDJc dTAzNDRcdTAzNDVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzQ1XHUwMzQ2 XDNcMlwyXDJcdTAzNDZcdTAzNDdcN1tcMlwyXHUwMzQ3XHUwMzQ4IikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAzNDhcdTAzNDlcNUxcJ1wyXHUwMzQ5XHUwMzRhXDcgXDJc Mlx1MDM0YUUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDM0Ylx1MDM0 Y1w3bFwyXDJcdTAzNGNcdTAzNGRcNVx1MDEyNFx1MDA5MyIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwyXHUwMzRkXHUwMzRlXDcgXDJcMlx1MDM0ZVx1MDM0Zlw1OFwzNVwyXHUwMzRmXHUw MzUwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdzXDJcMlx1MDM1MFx1MDM1MVw3IFwy XDJcdTAzNTFHXDNcMlwyXDJcdTAzNTJcdTAzNTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcN2tcMlwyXHUwMzUzXHUwMzU0XDVcdTAxMjRcdTAwOTNcMlx1MDM1NFx1MDM1NVw3DQo+IFwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM1NVx1MDM1Nlw1OFwzNVwyXHUwMzU2XHUw MzU3XDdzXDJcMlx1MDM1N1x1MDM1OFw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiDQo+ IFwyXDJcdTAzNThJXDNcMlwyXDJcdTAzNTlcdTAzNWFcN1x1MDBmYVwyXDJcdTAzNWFcdTAzNWIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTAzNWJcdTAzNWNcN1x1MDBmYVwyXDJc dTAzNWNcdTAzNWRcNyFcMlwyXHUwMzVkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNWVc N1x1MDBmYVwyXDJcdTAzNWVcdTAzNWZcNyFcMlwyXHUwMzVmXHUwMzYwXDdcdTAwZmEiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzYwXHUwMzYxXDchXDJcMlx1MDM2MVx1MDM2 Mlw3XHUwMGZhXDJcMlx1MDM2MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzYzXDchXDJc Mlx1MDM2M1x1MDM2NFw3XHUwMGZhXDJcMlx1MDM2NFx1MDM2NVw3IVwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlx1MDM2NVx1MDM2Nlw3XHUwMGZhXDJcMlx1MDM2Nlx1MDM2N1w3IVwyXDJc dTAzNjdcdTAzNjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDM2OEtc M1wyXDJcMlx1MDM2OVx1MDM2YVw3XDI2XDJcMlx1MDM2YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMzZiXDdcdTAwZmFcMlwyXHUwMzZiXHUwMzZjXDchXDJcMlx1MDM2Y1x1MDM2ZFw3XHUw MGZhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDM2ZFx1MDM2ZVw3IVwyXDJc dTAzNmVcdTAzNmZcN1x1MDBmYVwyXDJcdTAzNmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDM3NVw3IVwyXDJcdTAzNzBcdTAzNzFcN1wyNlwyXDJcdTAzNzFcdTAzNzJcNUomXDJcdTAzNzIi DQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNzNcN1wyN1wyXDJcdTAzNzNcdTAzNzZc M1wyXDJcMlx1MDM3NFx1MDM3Nlw1SiZcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzc1 XHUwMzcwXDNcMlwyXDJcdTAzNzVcdTAzNzRcM1wyXDJcMlx1MDM3Nlx1MDM3N1wzIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAzNzdcdTAzNzhcN1wyN1wyXDJcdTAzNzhNXDNcMlwy XDJcdTAzNzlcdTAzN2EiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJc dTAzN2FcdTAzN2JcN1wzMFwyXDJcdTAzN2JcdTAzN2NcN1x1MDBmYSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MDM3Y1x1MDM3ZFw3XDMxXDJcMlx1MDM3ZE9cM1wyXDJcMlx1MDM3ZVx1 MDM3Zlw1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJSKlwyXHUwMzdmXHUwMzgwXDVUK1wyXHUw MzgwUVwzXDJcMlwyXHUwMzgxXHUwMzgyXDdcdTAwOGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTAzODJcdTAzODNcN1xiXDJcMlx1MDM4M1x1MDM4NFw3XHUwMGZiXDJcMlx1MDM4NCIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDM4Nlw3IVwyXDJcdTAzODVcdTAzODFcM1wy XDJcMlx1MDM4NVx1MDM4NlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzODZc dTAzOGNcM1wyXDJcMlx1MDM4N1x1MDM4OFw3XHUwMDhmXDJcMlx1MDM4OFx1MDM4OSIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwMzg5XHUwMzhhXDVYLQ0KPiBcMlx1MDM4 YVx1MDM4Ylw3IVwyXDJcdTAzOGJcdTAzOGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwMzhjXHUwMzg3XDNcMlwyXDJcdTAzOGNcdTAzOGRcM1wyXDJcMlx1MDM4ZCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwMzkyXDNcMlwyXDJcdTAzOGVcdTAzOGZcN1x1MDA5MVwyXDJc dTAzOGZcdTAzOTBcN1xiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDM5MFx1 MDM5MVw3XHUwMGZhXDJcMlx1MDM5MVx1MDM5M1w3IVwyXDJcdTAzOTIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDM4ZVwzXDJcMlwyXHUwMzkyXHUwMzkzXDNcMlwyXDJcdTAzOTNTXDNcMlwy XDJcdTAzOTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM5NVw3XDYyXDJcMlx1MDM5NVx1 MDM5Nlw3XGJcMlwyXHUwMzk2XHUwMzk3XDdcdTAwZWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTAzOTdcdTAzOThcN1wzMFwyXDJcdTAzOThcdTAzOTlcN1x1MDBmYVwyXDJcdTAzOTki KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzOWFcN1wzMVwyXDJcdTAzOWFcdTAzOWJc NyFcMlwyXHUwMzliXHUwMzljXDc9XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzlj XHUwMzlkXDdcYlwyXDJcdTAzOWRcdTAzOWVcN1x1MDBlY1wyXDJcdTAzOWVcdTAzOWYiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw3XDMwXDJcMlx1MDM5Zlx1MDNhMFw3XHUwMGZhXDJcMlx1MDNh MFx1MDNhMVw3XDMxXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2ExVVwzXDJcMlwy XHUwM2EyXHUwM2FiXDd+XDJcMlx1MDNhM1x1MDNhYlw3eVwyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDNhNFx1MDNhYlw3e1wyXDJcdTAzYTVcdTAzYWJcN1x1MDA4MFwyXDJcdTAzYTZc dTAzYWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3fFwyXDJcdTAzYTdcdTAzYWJcN1wxNzdc MlwyXHUwM2E4XHUwM2FiXDd6XDJcMlx1MDNhOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilx1MDNhYlw3fVwyXDJcdTAzYWFcdTAzYTJcM1wyXDJcMlx1MDNhYVx1MDNhM1wzXDJcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYWFcdTAzYTRcM1wyXDJcMlx1MDNhYVx1MDNhNVwz XDJcMlwyXHUwM2FhXHUwM2E2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDNh YVx1MDNhN1wzXDJcMlwyXHUwM2FhXHUwM2E4XDNcMlwyXDJcdTAzYWFcdTAzYTkiDQo+ICkNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNhYldcM1wyXDJcMlx1MDNhY1x1MDNhZFw3 XHUwMGZiXDJcMlx1MDNhZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDNhZVw3XDMy XDJcMlx1MDNhZVx1MDNhZlw3XHUwMGZhXDJcMlx1MDNhZlx1MDNiOVw3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMzNcMlwyXHUwM2IwXHUwM2I1XDdcdTAwZmJcMlwyXHUwM2IxXHUwM2IyXDdc MzRcMlwyXHUwM2IyIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2I0XDVcdTAxNWVc dTAwYjBcMlx1MDNiM1x1MDNiMVwzXDJcMlwyXHUwM2I0XHUwM2I3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDNiNVx1MDNiM1wzXDJcMlwyXHUwM2I1XHUwM2I2XDNcMlwyXDJc dTAzYjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNiOVwzXDJcMlwyXHUwM2I3XHUwM2I1 XDNcMlwyXDJcdTAzYjhcdTAzYWNcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw M2I4XHUwM2IwXDNcMlwyXDJcdTAzYjlZXDNcMlwyXDJcdTAzYmFcdTAzYmNcN1wzNVwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDNiYlx1MDNiYVwzXDJcMlwyXHUwM2JiXHUwM2JjXDNc MlwyXDJcdTAzYmNcdTAzYmQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2Jk XHUwM2U3XDdcdTAwZmFcMlwyXHUwM2JlXHUwM2U3XDdcdTAwZDNcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcdTAzYmZcdTAzZTdcN1x1MDBkNFwyXDJcdTAzYzBcdTAzZTdcN1x1MDBkNVwy XDJcdTAzYzEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNlN1w3XHUwMGQ2XDJcMlx1MDNj Mlx1MDNlN1w3XHUwMGQ3XDJcMlx1MDNjM1x1MDNjNCIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlw3XHUwMGZhXDJcMlx1MDNjNFx1MDNjNVw3XDM2XDJcMlx1MDNjNVx1MDNjNlw3XHUwMGZh IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwM2M2XHUwM2M3XDdcMzZcMlwyXHUwM2M3 XHUwM2U3XDdcdTAwZmFcMlwyXHUwM2M4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw M2M5XDdcdTAwZmFcMlwyXHUwM2M5XHUwM2NhXDdcMzdcMlwyXHUwM2NhXHUwM2NiXDciKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwM2NiXHUwM2NjXDdcMzdcMlwyXHUw M2NjXHUwM2U3XDdcdTAwZmFcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwM2Nk XHUwM2NlXDdcdTAwZmFcMlwyXHUwM2NlXHUwM2NmXDcNCj4gXDJcMlx1MDNjZlx1MDNkMCIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDNkMFx1MDNkMVw3DQo+IFwy XDJcdTAzZDFcdTAzZDJcNUxcJ1wyXHUwM2QyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwM2QzXDcNCj4gXDJcMlx1MDNkM1x1MDNkNFw3XHUwMGVjXDJcMlx1MDNkNFx1MDNkNVw3XDMw IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwM2Q1XHUwM2Q2XDdcdTAwZmFcMlwyXHUw M2Q2XHUwM2Q3XDdcMzFcMlwyXHUwM2Q3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZTdc M1wyXDJcMlx1MDNkOFx1MDNkOVw3XHUwMGVjXDJcMlx1MDNkOVx1MDNkYVw3XDMwIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwM2RhXHUwM2RiXDdcdTAwZmFcMlwyXHUwM2RiXHUwM2U3 XDdcMzFcMlwyXHUwM2RjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZGRcN1wyNlwyXDJc dTAzZGRcdTAzZTJcN1x1MDBmYVwyXDJcdTAzZGVcdTAzZGZcNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiIVwyXDJcdTAzZGZcdTAzZTFcN1x1MDBmYVwyXDJcdTAzZTBcdTAzZGVcM1wyXDJcMlx1 MDNlMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2U0XDNcMlwyXDJcdTAzZTJcdTAzZTBc M1wyXDJcMlx1MDNlMlx1MDNlM1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAz ZTNcdTAzZTVcM1wyXDJcMlx1MDNlNFx1MDNlMlwzXDJcMlwyXHUwM2U1XHUwM2U3XDciKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyN1wyXDJcdTAzZTZcdTAzYmJcM1wyXDJcMlx1MDNlNlx1MDNi ZVwzXDJcMlwyXHUwM2U2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2JmXDNcMlwy XDJcdTAzZTZcdTAzYzBcM1wyXDJcMlx1MDNlNlx1MDNjMVwzXDJcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAzZTZcdTAzYzJcM1wyXDJcMlx1MDNlNlx1MDNjM1wzXDJcMlwyXHUwM2U2 XHUwM2M4XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDNlNlx1MDNjZFwzXDJc MlwyXHUwM2U2XHUwM2Q4XDNcMlwyXDJcdTAzZTZcdTAzZGMiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MDNlN1tcM1wyXDJcMlx1MDNlOFx1MDNlOVw3XHUwMDkyXDJcMlx1 MDNlOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDNlYVw3XGJcMlwyXHUwM2VhXHUw M2ViXDdcdFwyXDJcdTAzZWJcdTAzZWNcN1wzMFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc Mlx1MDNlY1x1MDNlZFw3XHUwMGZhXDJcMlx1MDNlZFx1MDNlZVw3XDMxXDJcMlx1MDNlZSIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIl1cM1wyXDJcMlx1MDNlZlx1MDNmMFw3XHUwMDkzXDJc Mlx1MDNmMF9cM1wyXDJcMlx1MDNmMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDNm NFw1XFwvXDJcdTAzZjJcdTAzZjRcNV5cNjBcMlx1MDNmM1x1MDNmMVwzXDJcMlwyIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2YzXHUwM2YyXDNcMlwyXDJcdTAzZjRhXDNcMlwyXDJc dTAzZjVcdTAzZmFcNWBcNjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDNmNlx1 MDNmN1w3IVwyXDJcdTAzZjdcdTAzZjlcNWBcNjFcMlx1MDNmOFx1MDNmNiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2Y5XHUwM2ZjXDNcMlwyXDJcdTAzZmFcdTAzZjhc M1wyXDJcMlx1MDNmYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDNmYlwzXDJcMlwy XHUwM2ZiY1wzXDJcMlwyXHUwM2ZjXHUwM2ZhXDNcMlwyXDJcdTAzZmQiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzZmVcN1w2N1wyXDJcdTAzZmVcdTAzZmZcNy9cMlwyXHUwM2ZmXHUw NDAwXDdcYlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQwMFx1MDQwMVw3XHUwMGZh XDJcMlx1MDQwMVx1MDQwMlw3IVwyXDJcdTA0MDJcdTA0MDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw3LlwyXDJcdTA0MDNcdTA0MDRcN1xiXDJcMlx1MDQwNFx1MDQwNVw3XHUwMGVjXDJcMlx1 MDQwNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDA2XDdcMzBcMlwyXHUwNDA2XHUwNDA3 XDdcdTAwZmFcMlwyXHUwNDA3XHUwNDA4XDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc MzFcMlwyXHUwNDA4XHUwNDBjXDcNCj4gXDJcMlx1MDQwOVx1MDQwYlw1Zlw2NFwyXHUwNDBhXHUw NDA5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQwYlx1MDQwZVwzXDJcMlwy XHUwNDBjXHUwNDBhXDNcMlwyXDJcdTA0MGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQw ZFwzXDJcMlwyXHUwNDBkXHUwNDBmXDNcMlwyXDJcdTA0MGVcdTA0MGNcM1wyXDJcMiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDQwZlx1MDQxMFw3XDY2XDJcMlx1MDQxMFx1MDQxMVw3 IFwyXDJcdTA0MTFlXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDQxMlx1MDQy Mlw1alw2NlwyXHUwNDEzXHUwNDIyXDVsXDY3XDJcdTA0MTRcdTA0MjIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw1bjhcMlx1MDQxNVx1MDQyMlw1XHUwMGE0U1wyXHUwNDE2XHUwNDIyXDVwOVwy XHUwNDE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MjJcNVx1MDA4OEVcMlx1MDQxOFx1 MDQyMlw1XHUwMGY4fVwyXHUwNDE5XHUwNDIyXDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDExOFx1MDA4ZFwyXHUwNDFhXHUwNDIyXDVcdTAxMWFcdTAwOGVcMlx1MDQxYlx1MDQyMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxMTBcdTAwODlcMlx1MDQxY1x1MDQyMlw1XHUwMTFj XHUwMDhmXDJcdTA0MWRcdTA0MjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTIwXHUw MDkxXDJcdTA0MWVcdTA0MWZcNVx1MDA5NkxcMlx1MDQxZlx1MDQyMFw3IikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiDQo+IFwyXDJcdTA0MjBcdTA0MjJcM1wyXDJcMlx1MDQyMVx1MDQxMlwz XDJcMlwyXHUwNDIxXHUwNDEzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQy MVx1MDQxNFwzXDJcMlwyXHUwNDIxXHUwNDE1XDNcMlwyXDJcdTA0MjEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDQxNlwzXDJcMlwyXHUwNDIxXHUwNDE3XDNcMlwyXDJcdTA0MjFcdTA0MThc M1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDIxXHUwNDE5XDNcMlwyXDJcdTA0 MjFcdTA0MWFcM1wyXDJcMlx1MDQyMVx1MDQxYlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXDJcdTA0MjFcdTA0MWNcM1wyXDJcMlx1MDQyMVx1MDQxZFwzXDJcMlwyXHUwNDIxXHUwNDFl IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQyMmdcM1wyXDJcMlx1MDQyM1x1 MDQyNFw3OFwyXDJcdTA0MjRcdTA0MjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3L1wyXDJc dTA0MjVcdTA0MjZcN1xiXDJcMlx1MDQyNlx1MDQyN1w3XHUwMGZhXDJcMlx1MDQyNyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNDM2XDchXDJcMlx1MDQyOFx1MDQyOVw3OVwyXDJcdTA0Mjlc dTA0MmFcN1xiXDJcMlx1MDQyYSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQyYlw3 XHUwMGVjXDJcMlx1MDQyYlx1MDQyY1w3XDMwXDJcMlx1MDQyY1x1MDQyZFw3IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDQyZFx1MDQyZVw3XDMxXDJcMlx1MDQyZVx1 MDQyZlw3DQo+IFwyXDJcdTA0MmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQzMFw3Olwy XDJcdTA0MzBcdTA0MzFcN1xiXDJcMlx1MDQzMVx1MDQzMlw1TFwnXDJcdTA0MzIiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTA0MzNcNyBcMlwyXHUwNDMzXHUwNDM1XDNcMlwyXDJcdTA0 MzRcdTA0MjhcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDM1XHUwNDM4XDNc MlwyXDJcdTA0MzZcdTA0MzRcM1wyXDJcMlx1MDQzNlx1MDQzN1wzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlwyXDJcdTA0MzdcdTA0M2NcM1wyXDJcMlx1MDQzOFx1MDQzNlwzXDJcMlwyXHUw NDM5XHUwNDNiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNWZcNjRcMlx1MDQzYVx1MDQzOVwz XDJcMlwyXHUwNDNiXHUwNDNlXDNcMlwyXDJcdTA0M2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDQzYVwzXDJcMlwyXHUwNDNjXHUwNDNkXDNcMlwyXDJcdTA0M2RcdTA0M2ZcM1wyXDJcMiIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDQzZVx1MDQzY1wzXDJcMlwyXHUwNDNmXHUw NDQwXDdcNjZcMlwyXHUwNDQwXHUwNDQxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcg XDJcMlx1MDQ0MWlcM1wyXDJcMlx1MDQ0Mlx1MDQ0M1w1XFwvXDJcdTA0NDNcdTA0NDQiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0KPiBcMlwyXHUwNDQ0a1wzXDJcMlwyXHUwNDQ1XHUw NDQ2XDVeXDYwXDJcdTA0NDZcdTA0NDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0K PiBcMlwyXHUwNDQ3bVwzXDJcMlwyXHUwNDQ4XHUwNDQ5XDdcdTAwOTRcMlwyXHUwNDQ5XHUwNDRh IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTA0NGFcdTA0NGJcNyFcMlwy XHUwNDRiXHUwNDRjXDVcdTAxMjRcdTAwOTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc Mlx1MDQ0Y1x1MDQ0ZFw3XHUwMDk1XDJcMlx1MDQ0ZFx1MDQ0ZVw3DQo+IFwyXDJcdTA0NGVvXDMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDQ0Zlx1MDQ1M1w1cjpcMlx1MDQ1MFx1 MDQ1M1w1ej5cMlx1MDQ1MVx1MDQ1MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDV+QFwyXHUw NDUyXHUwNDRmXDNcMlwyXDJcdTA0NTJcdTA0NTBcM1wyXDJcMlx1MDQ1Mlx1MDQ1MQ0KPiAiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDUzcVwzXDJcMlwyXHUwNDU0XHUwNDU1 XDc7XDJcMlx1MDQ1NVx1MDQ1NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDQ1 Nlx1MDQ1N1w3XGJcMlwyXHUwNDU3XHUwNDU4XDdcdTAwZWNcMlwyXHUwNDU4IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDU5XDdcMzBcMlwyXHUwNDU5XHUwNDVhXDdcdTAwZmFcMlwy XHUwNDVhXHUwNDVmXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzMVwyXDJcdTA0NWJcdTA0 NWNcNyFcMlwyXHUwNDVjXHUwNDVkXDdAXDJcMlx1MDQ1ZFx1MDQ1ZSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDdcYlwyXDJcdTA0NWVcdTA0NjBcNXY8XDJcdTA0NWZcdTA0NWJcM1wyXDJcMlx1 MDQ1Zlx1MDQ2MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDYwXHUw NDc1XDNcMlwyXDJcdTA0NjFcdTA0NjJcNyFcMlwyXHUwNDYyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA0NjRcNWJcNjJcMlx1MDQ2M1x1MDQ2MVwzXDJcMlwyXHUwNDYzXHUwNDY0XDNcMlwy XDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NjRcdTA0NjVcM1wyXDJcMlx1MDQ2 NVx1MDQ3Nlw3IFwyXDJcdTA0NjZcdTA0NjdcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiIVwy XDJcdTA0NjdcdTA0NjlcNWJcNjJcMlx1MDQ2OFx1MDQ2NlwzXDJcMlwyXHUwNDY4XHUwNDY5IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0NjlcdTA0NzFcM1wyXDJcMlx1 MDQ2YVx1MDQ2ZVw3IVwyXDJcdTA0NmIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ2ZFw1 dDtcMlx1MDQ2Y1x1MDQ2YlwzXDJcMlwyXHUwNDZkXHUwNDcwXDNcMlwyXDJcdTA0NmUiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NmNcM1wyXDJcMlx1MDQ2ZVx1MDQ2ZlwzXDJcMlwy XHUwNDZmXHUwNDcyXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ3MFx1MDQ2 ZVwzXDJcMlwyXHUwNDcxXHUwNDZhXDNcMlwyXDJcdTA0NzFcdTA0NzJcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNDcyXHUwNDczXDNcMlwyXDJcdTA0NzNcdTA0NzRcNzxcMlwy XHUwNDc0XHUwNDc2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDQ3NVx1 MDQ2M1wzXDJcMlwyXHUwNDc1XHUwNDY4XDNcMlwyXDJcdTA0NzYiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoInNcM1wyXDJcMlx1MDQ3N1x1MDQ3YVw1cDlcMlx1MDQ3OFx1MDQ3YVw1XHUwMDg4RVwy XHUwNDc5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0NzdcM1wyXDJcMlx1MDQ3OVx1MDQ3 OFwzXDJcMlwyXHUwNDdhdVwzXDJcMlwyXHUwNDdiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0ODBcNXg9XDJcdTA0N2NcdTA0N2RcNyhcMlwyXHUwNDdkXHUwNDdmXDV4PVwyXHUwNDdlIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0N2NcM1wyXDJcMlx1MDQ3Zlx1MDQ4MlwzXDJcMlwy XHUwNDgwXHUwNDdlXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ4MFx1MDQ4 MVwzXDJcMlwyXHUwNDgxd1wzXDJcMlwyXHUwNDgyXHUwNDgwXDNcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlx1MDQ4M1x1MDQ4NFx0XDVcMlwyXHUwNDg0eVwzXDJcMlwyXHUwNDg1XHUw NDg2XDc+XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNDg2XHUwNDg3XDc9XDJcMlx1 MDQ4N1x1MDQ4OFw3XGJcMlwyXHUwNDg4XHUwNDg5IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDdcdTAwZWNcMlwyXHUwNDg5XHUwNDhhXDdcMzBcMlwyXHUwNDhhXHUwNDhiXDdcdTAwZmEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA0OGJcdTA0OGNcN1wzMVwyXDJcdTA0OGNc dTA0OGRcNyFcMlwyXHUwNDhkXHUwNDhlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNz5cMlwy XHUwNDhlXHUwNDhmXDdcYlwyXDJcdTA0OGZcdTA0OTBcN1x1MDBlY1wyXDJcdTA0OTAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDQ5MVw3XDMwXDJcMlx1MDQ5MVx1MDQ5Mlw3XHUwMGZhXDJc Mlx1MDQ5Mlx1MDQ5YVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwNDkzXHUw NDk0XDchXDJcMlx1MDQ5NFx1MDQ5NVw3PlwyXDJcdTA0OTVcdTA0OTYiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDQ5Nlx1MDQ5N1w3XHUwMGVjXDJcMlx1MDQ5N1x1MDQ5 OFw3XDMwXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDk4XHUwNDk5XDdcdTAwZmFc MlwyXHUwNDk5XHUwNDliXDdcMzFcMlwyXHUwNDlhXHUwNDkzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDQ5YVx1MDQ5YlwzXDJcMlwyXHUwNDliXHUwNGFjXDNcMlwyXDJcdTA0 OWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ5ZFw3IVwyXDJcdTA0OWRcdTA0OWVcN0Bc MlwyXHUwNDllXHUwNDlmXDdcYlwyXDJcdTA0OWYiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA0YTRcNXw/XDJcdTA0YTBcdTA0YTFcNyhcMlwyXHUwNGExXHUwNGEzXDV8P1wyXHUwNGEy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YTBcM1wyXDJcMlx1MDRhM1x1MDRhNlwzXDJc MlwyXHUwNGE0XHUwNGEyXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRhNFx1 MDRhNVwzXDJcMlwyXHUwNGE1XHUwNGE3XDNcMlwyXDJcdTA0YTZcdTA0YTRcMyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNGE3XHUwNGE4XDchXDJcMlx1MDRhOFx1MDRhOVw3dFwy XDJcdTA0YTlcdTA0YWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNGFhXHUw NGFiXDdcdTAwZmFcMlwyXHUwNGFiXHUwNGFkXDNcMlwyXDJcdTA0YWMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDQ5Y1wzXDJcMlwyXHUwNGFjXHUwNGFkXDNcMlwyXDJcdTA0YWRcdTA0YjBc M1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDRhZVx1MDRhZlw3IVwyXDJc dTA0YWZcdTA0YjFcNWJcNjJcMlx1MDRiMFx1MDRhZVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTA0YjBcdTA0YjFcM1wyXDJcMlx1MDRiMVx1MDRiMlwzXDJcMlwyXHUwNGIyXHUw NGIzIg0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3DQo+IFwyXDJcdTA0YjN7XDNc MlwyXDJcdTA0YjRcdTA0YjdcN1x1MDBmYVwyXDJcdTA0YjVcdTA0YjciKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcNVYsXDJcdTA0YjZcdTA0YjRcM1wyXDJcMlx1MDRiNlx1MDRiNVwzXDJc MlwyXHUwNGI3fSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0YjhcdTA0YmJc NVx1MDA4MEFcMlx1MDRiOVx1MDRiYlw1XHUwMDg2RFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA0YmFcdTA0YjhcM1wyXDJcMlx1MDRiYVx1MDRiOVwzXDJcMlwyXHUwNGJiXDE3N1wzXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA0YmNcdTA0ZWNcN25cMlwyXHUwNGJkXHUw NGJlXDcqXDJcMlx1MDRiZVx1MDRiZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XGJc MlwyXHUwNGJmXHUwNGMwXDdcdTAwZWNcMlwyXHUwNGMwXHUwNGMxXDdcMzBcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA0YzFcdTA0YzJcN1x1MDBmYVwyXDJcdTA0YzJcdTA0YzNcN1wz MVwyXDJcdTA0YzNcdTA0YzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA0YzRc dTA0YzVcN29cMlwyXHUwNGM1XHUwNGM2XDdcYlwyXDJcdTA0YzZcdTA0YzciKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw1TFwnXDJcdTA0YzdcdTA0YzhcNyFcMlwyXHUwNGM4XHUwNGM5XDcvXDJc Mlx1MDRjOVx1MDRjYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0Y2FcdTA0 Y2JcN1x1MDBmYVwyXDJcdTA0Y2JcdTA0Y2NcNyFcMlwyXHUwNGNjIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA0Y2RcN1x1MDA5MFwyXDJcdTA0Y2RcdTA0Y2VcN1xiXDJcMlx1MDRjZVx1MDRj Zlw3XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNGNmXHUwNGQwXDchXDJc Mlx1MDRkMFx1MDRlZFwzXDJcMlwyXHUwNGQxXHUwNGQyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcN29cMlwyXHUwNGQyXHUwNGQzXDdcYlwyXDJcdTA0ZDNcdTA0ZDRcNUxcJ1wyXHUwNGQ0XHUw NGQ1Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDRkNVx1MDRkNlw3L1wy XDJcdTA0ZDZcdTA0ZDdcN1xiXDJcMlx1MDRkN1x1MDRkOCINCj4gKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw3XHUwMGZhXDJcMlx1MDRkOFx1MDRkOVw3IVwyXDJcdTA0ZDlcdTA0ZGFcN1x1MDA5 MFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDRkYVx1MDRkYlw3XGJcMlwyXHUwNGRi XHUwNGRjXDdcdTAwZmFcMlwyXHUwNGRjXHUwNGRkDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDchXDJcMlx1MDRkZFx1MDRlZFwzXDJcMlwyXHUwNGRlXHUwNGRmXDcvXDJcMlx1MDRkZlx1 MDRlMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0ZTBcdTA0ZTFcN1x1MDBm YVwyXDJcdTA0ZTFcdTA0ZTJcNyFcMlwyXHUwNGUyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0ZTNcN1x1MDA5MFwyXDJcdTA0ZTNcdTA0ZThcN1xiXDJcMlx1MDRlNFx1MDRlNVw3XHUwMGZi Ig0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA0ZTVcdTA0ZTlcNyFcMlwy XHUwNGU2XHUwNGU3XDdcdTAwZmFcMlwyXHUwNGU3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNGU5XDchXDJcMlx1MDRlOFx1MDRlNFwzXDJcMlwyXHUwNGU4XHUwNGU2XDNcMlwyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRlOVx1MDRlZFwzXDJcMlwyXHUwNGVhXHUwNGVi XDdcdTAwZmFcMlwyXHUwNGViXHUwNGVkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDch XDJcMlx1MDRlY1x1MDRiZFwzXDJcMlwyXHUwNGVjXHUwNGQxXDNcMlwyXDJcdTA0ZWMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDRkZVwzXDJcMlwyXHUwNGVjXHUwNGVhXDNcMlwyXDJcdTA0 ZWNcdTA0ZWRcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDRlZFx1MDRl ZVwzXDJcMlwyXHUwNGVlXHUwNGYzXDVQKVwyXHUwNGVmXHUwNGYwXDchIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXHUwNGYwXHUwNGYxXDdAXDJcMlx1MDRmMVx1MDRmMlw3XGJcMlwyXHUw NGYyXHUwNGY0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDA4MkJcMlx1MDRmM1x1MDRl ZlwzXDJcMlwyXHUwNGYzXHUwNGY0XDNcMlwyXDJcdTA0ZjQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDRmOVwzXDJcMlwyXHUwNGY1XHUwNGY2XDchXDJcMlx1MDRmNlx1MDRmN1w3dFwyXDJc dTA0ZjciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZjhcN1xiXDJcMlx1MDRmOFx1 MDRmYVw3XHUwMGZhXDJcMlx1MDRmOVx1MDRmNVwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTA0ZjlcdTA0ZmFcM1wyXDJcMlx1MDRmYVx1MDRmZFwzXDJcMlwyXHUwNGZiXHUwNGZj IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNGZjXHUwNGZlXDVcdTAwYjRbXDJc dTA0ZmRcdTA0ZmJcM1wyXDJcMlx1MDRmZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1 MDRmZVwzXDJcMlwyXHUwNGZlXHUwNGZmXDNcMlwyXDJcdTA0ZmZcdTA1MDBcNyBcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MDBcdTAwODFcM1wyXDJcMlx1MDUwMVx1MDUwNlw1XHUw MDg0Q1wyXHUwNTAyXHUwNTAzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyhcMlwyXHUwNTAz XHUwNTA1XDVcdTAwODRDXDJcdTA1MDRcdTA1MDJcM1wyXDJcMlx1MDUwNSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNTA4XDNcMlwyXDJcdTA1MDZcdTA1MDRcM1wyXDJcMlx1MDUwNlx1MDUw N1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MDdcdTAwODNcM1wyXDJcMlx1 MDUwOFx1MDUwNlwzXDJcMlwyXHUwNTA5XHUwNTBjXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDBmYVwyXDJcdTA1MGFcdTA1MGNcNVYsXDJcdTA1MGJcdTA1MDlcM1wyXDJcMlx1MDUwYiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTBhXDNcMlwyXDJcdTA1MGNcdTAwODVcM1wyXDJc Mlx1MDUwZFx1MDUwZVw3XHUwMDk5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNTBl XHUwNTBmXDdcdTAwOWJcMlwyXHUwNTBmXHUwNTEwXDdcYlwyXDJcdTA1MTAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDUxMVw3XHUwMGZiXDJcMlx1MDUxMVx1MDUxMlw3IVwyXDJcdTA1MTJc dTA1MTNcNVQrIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDUxM1x1MDUxN1w3IVwyXDJc dTA1MTRcdTA1MTVcNWJcNjJcMlx1MDUxNVx1MDUxNiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlw3IVwyXDJcdTA1MTZcdTA1MThcM1wyXDJcMlx1MDUxN1x1MDUxNFwzXDJcMlwyXHUwNTE3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MThcM1wyXDJcMlx1MDUxOFx1MDUxOVwzXDJc MlwyXHUwNTE5XHUwNTFhXDdcdTAwOWEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XHUwNTFhXHUwNTFiXDcNCj4gXDJcMlx1MDUxYlx1MDA4N1wzXDJcMlwyXHUwNTFjXHUwNTIzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDBiOF1cMlx1MDUxZFx1MDUyM1w1XHUwMGU4dVwy XHUwNTFlXHUwNTIzXDVcdTAwYzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoImRcMlx1MDUxZlx1 MDUyM1w1XHUwMGQ0a1wyXHUwNTIwXHUwNTIzXDVcdTAwZTJyXDJcdTA1MjEiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1MjNcNVx1MDBmMHlcMlx1MDUyMlx1MDUxY1wzXDJcMlwyXHUw NTIyXHUwNTFkXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDUyMlx1MDUxZVwz XDJcMlwyXHUwNTIyXHUwNTFmXDNcMlwyXDJcdTA1MjJcdTA1MjAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNTIyXHUwNTIxXDNcMlwyXDJcdTA1MjNcdTAwODlcM1wyXDJcMlx1 MDUyNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDUyNVw1YFw2MVwyXHUwNTI1XHUw NTI2XDchXDJcMlx1MDUyNlx1MDUzMFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA1MjdcdTA1MzBcNVx1MDA4Y0dcMlx1MDUyOFx1MDUzMFw1XHUwMDhlSFwyXHUwNTI5XHUwNTMN Cj4gMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAwOTBJXDJcdTA1MmFcdTA1MzBcNVx1 MDA5MkpcMlx1MDUyYlx1MDUzMFw1XHUwMDk0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJLXDJc dTA1MmNcdTA1MzBcNVx1MDExY1x1MDA4ZlwyXHUwNTJkXHUwNTMwXDVcdTAwOTZMXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDUyZVx1MDUzMFw1XHUwMDk4TVwyXHUwNTJmXHUwNTI0XDNc MlwyXDJcdTA1MmZcdTA1MjciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDUyZlx1MDUyOFwzXDJcMlwyXHUwNTJmXHUwNTI5XDNcMlwyXDJcdTA1MmYiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1MmFcM1wyXDJcMlx1MDUyZlx1MDUyYlwzXDJcMlwyXHUwNTJm XHUwNTJjXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUyZlx1MDUyZFwzXDJc MlwyXHUwNTJmXHUwNTJlXDNcMlwyXDJcdTA1MzBcdTAwOGJcMyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlwyXHUwNTMxXHUwNTMyXDdwXDJcMlx1MDUzMlx1MDUzM1w3XDYyXDJcMlx1MDUz M1x1MDUzNCINCj4gKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDUzNFx1 MDUzNVw3XHUwMGVjXDJcMlx1MDUzNVx1MDUzNlw3XDMwXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNTM2XHUwNTM3XDdcdTAwZmFcMlwyXHUwNTM3XHUwNTM4XDdcMzFcMlwyXHUwNTM4 XHUwNTQ1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNTM5XHUwNTNhXDdAXDJc Mlx1MDUzYVx1MDUzYlw3XGJcMlwyXHUwNTNiXHUwNTQwDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDVcdTAwOWVQXDJcdTA1M2NcdTA1M2RcNyhcMlwyXHUwNTNkXHUwNTNmXDVcdTAwOWVQ XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUzZVx1MDUzY1wzXDJcMlwyXHUwNTNmXHUw NTQyXDNcMlwyXDJcdTA1NDBcdTA1M2VcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwNTQwXHUwNTQxXDNcMlwyXDJcdTA1NDFcdTA1NDNcM1wyXDJcMlx1MDU0Mlx1MDU0MCINCj4g KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDU0M1x1MDU0NFw3IVwyXDJc dTA1NDRcdTA1NDZcM1wyXDJcMlx1MDU0NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTM5 XDNcMlwyXDJcdTA1NDVcdTA1NDZcM1wyXDJcMlx1MDU0Nlx1MDU0N1wzXDJcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1NDdcdTA1NDhcNVx1MDEyNFx1MDA5M1wyXHUwNTQ4XHUwNTRh XDdzXDJcMlx1MDU0OSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDU0Ylw3IFwyXDJc dTA1NGFcdTA1NDlcM1wyXDJcMlx1MDU0YVx1MDU0YlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA1NGJcdTAwOGRcM1wyXDJcMlx1MDU0Y1x1MDU0ZFw3clwyXDJcdTA1NGRcdTA1 NGVcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDYyXDJcMlx1MDU0ZVx1MDU0Zlw3XGJcMlwy XHUwNTRmXHUwNTUwXDdcdTAwZWNcMlwyXHUwNTUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA1NTFcN1wzMFwyXDJcdTA1NTFcdTA1NTJcN1x1MDBmYVwyXDJcdTA1NTJcdTA1NTNcNyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDU1M1x1MDU2MFw3IVwyXDJcdTA1NTRcdTA1 NTVcN0BcMlwyXHUwNTU1XHUwNTU2Ig0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwy XDJcdTA1NTZcdTA1NWJcNVx1MDA5ZVBcMlx1MDU1N1x1MDU1OFw3KFwyXDJcdTA1NTgiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDU1YVw1XHUwMDllUFwyXHUwNTU5XHUwNTU3XDNcMlwyXDJc dTA1NWFcdTA1NWRcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNTViXHUwNTU5 XDNcMlwyXDJcdTA1NWJcdTA1NWNcM1wyXDJcMlx1MDU1Y1x1MDU1ZSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTVkXHUwNTViXDNcMlwyXDJcdTA1NWVcdTA1NWZcNyFc MlwyXHUwNTVmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NjFcM1wyXDJcMlx1MDU2MFx1 MDU1NFwzXDJcMlwyXHUwNTYwXHUwNTYxXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDU2MVx1MDU2MlwzXDJcMlwyXHUwNTYyXHUwNTYzXDVcdTAxMjRcdTAwOTNcMlx1MDU2MyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDU2NVw3c1wyXDJcdTA1NjRcdTA1NjZcNw0K PiBcMlwyXHUwNTY1XHUwNTY0XDNcMlwyXDJcdTA1NjUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTA1NjZcM1wyXDJcMlx1MDU2Nlx1MDA4ZlwzXDJcMlwyXHUwNTY3XHUwNTY4XDdsXDJc MiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDU2OFx1MDU2OVw1XHUwMTI0XHUwMDkz XDJcdTA1NjlcdTA1NmFcNw0KPiBcMlwyXHUwNTZhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNTZiXDVcdTAwYjRbXDJcdTA1NmJcdTA1NmRcN3NcMlwyXHUwNTZjXHUwNTZlXDcgXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNTZkXHUwNTZjXDNcMlwyXDJcdTA1NmRcdTA1 NmVcM1wyXDJcMlx1MDU2ZVx1MDA5MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA1NmZcdTA1NzBcN1x1MDBhNFwyXDJcdTA1NzBcdTA1NzFcN1x1MDBhNVwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlx1MDU3MVx1MDU3Mlw3XGJcMlwyXHUwNTcyXHUwNTczXDdcdTAwZmFc MlwyXHUwNTczXHUwMDkzIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1 NzRcdTA1NzVcN1x1MDBhNlwyXDJcdTA1NzVcdTA1NzZcN1xiXDJcMlx1MDU3NiINCj4gKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDU3N1w3XHUwMGVjXDJcMlx1MDU3N1x1MDU3OFw3XDMwXDJc Mlx1MDU3OFx1MDU3OVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwNTc5 XHUwNTdhXDdcMzFcMlwyXHUwNTdhXHUwNTdiXDchXDJcMlx1MDU3YiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMDk1XDNcMlwyXDJcdTA1N2NcdTA1N2RcN1x1MDBlYlwyXDJcdTA1N2RcdTA1 N2VcN1xiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDU3ZVx1MDU3Zlw1TFwn XDJcdTA1N2ZcdTA1ODBcNyFcMlwyXHUwNTgwXHUwMDk3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDU4MVx1MDU4Mlw3cVwyXDJcdTA1ODJcdTA1ODNcN1w2MlwyXDJcdTA1ODMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU4NFw3XGJcMlwyXHUwNTg0XHUwNTg1XDdcdTAw ZWNcMlwyXHUwNTg1XHUwNTg2XDdcMzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA1 ODZcdTA1ODdcN1x1MDBmYVwyXDJcdTA1ODdcdTA1ODhcN1wzMVwyXDJcdTA1ODgiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDU4ZFw3IVwyXDJcdTA1ODlcdTA1OGFcN01cMlwyXHUwNThhXHUw NThiXDdcYlwyXDJcdTA1OGINCj4gIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNThj XDdcdTAwZmFcMlwyXHUwNThjXHUwNThlXDchXDJcMlx1MDU4ZFx1MDU4OVwzXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcdTA1OGRcdTA1OGVcM1wyXDJcMlx1MDU4ZVx1MDU4ZlwzXDJc MlwyXHUwNThmXHUwNTkwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAxMjRcdTAw OTNcMlx1MDU5MFx1MDU5Mlw3c1wyXDJcdTA1OTFcdTA1OTNcNw0KPiBcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA1OTJcdTA1OTFcM1wyXDJcMlx1MDU5Mlx1MDU5M1wzXDJcMlwyXHUw NTkzXHUwMDk5XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDU5NFx1MDU5Nlw1 XHUwMDhhRlwyXHUwNTk1XHUwNTk0XDNcMlwyXDJcdTA1OTYiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDU5OVwzXDJcMlwyXHUwNTk3XHUwNTk1XDNcMlwyXDJcdTA1OTdcdTA1OThcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTk4XHUwMDliXDNcMlwyXDJcdTA1OTlcdTA1 OTdcM1wyXDJcMlx1MDU5YVx1MDVhMlw1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYTBR XDJcdTA1OWJcdTA1YTJcNVx1MDBhMlJcMlx1MDU5Y1x1MDVhMlw1XHUwMGE2VCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcdTA1OWRcdTA1YTJcNVx1MDBhNFNcMlx1MDU5ZVx1MDVhMlw1XHUw MGE4VVwyXHUwNTlmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YTJcNVx1MDBiMFlcMlx1 MDVhMFx1MDVhMlw1XHUwMGIyWlwyXHUwNWExXHUwNTlhXDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcMlx1MDVhMVx1MDU5YlwzXDJcMlwyXHUwNWExXHUwNTljXDNcMlwyXDJcdTA1YTFc dTA1OWQiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDVhMVx1MDU5ZVwz XDJcMlwyXHUwNWExXHUwNTlmXDNcMlwyXDJcdTA1YTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDVhMFwzXDJcMlwyXHUwNWEyXHUwMDlkXDNcMlwyXDJcdTA1YTNcdTA1YWNcN1x1MDBmYSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDVhNFx1MDVhY1w3eVwyXDJcdTA1YTVcdTA1 YWNcN3ZcMlwyXHUwNWE2XHUwNWFjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN3VcMlwyXHUw NWE3XHUwNWFjXDd7XDJcMlx1MDVhOFx1MDVhY1w3fFwyXDJcdTA1YTlcdTA1YWMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3elwyXDJcdTA1YWFcdTA1YWNcN31cMlwyXHUwNWFiXHUwNWEzXDNc MlwyXDJcdTA1YWJcdTA1YTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNWFi XHUwNWE1XDNcMlwyXDJcdTA1YWJcdTA1YTZcM1wyXDJcMlx1MDVhYiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNWE3XDNcMlwyXDJcdTA1YWJcdTA1YThcM1wyXDJcMlx1MDVhYlx1MDVhOVwz XDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YWJcdTA1YWFcM1wyXDJcMlx1MDVh Y1x1MDA5ZlwzXDJcMlwyXHUwNWFkXHUwNWFlXDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJrXDJcMlx1MDVhZVx1MDVhZlw1XHUwMTI0XHUwMDkzXDJcdTA1YWZcdTA1YmNcNw0KPiBcMlwy XHUwNWIwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YjFcN0BcMlwyXHUwNWIxXHUwNWIy XDdcYlwyXDJcdTA1YjJcdTA1YjdcNVx1MDA5ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiUFwy XHUwNWIzXHUwNWI0XDcoXDJcMlx1MDViNFx1MDViNlw1XHUwMDllUFwyXHUwNWI1XHUwNWIzIg0K PiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1YjZcdTA1YjlcM1wyXDJcMlx1 MDViN1x1MDViNVwzXDJcMlwyXHUwNWI3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1Yjhc M1wyXDJcMlx1MDViOFx1MDViYVwzXDJcMlwyXHUwNWI5XHUwNWI3XDNcMlwyXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDViYVx1MDViYlw3IVwyXDJcdTA1YmJcdTA1YmRcM1wyXDJcMlx1 MDViY1x1MDViMFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1YmNcdTA1YmRc M1wyXDJcMlx1MDViZFx1MDViZVwzXDJcMlwyXHUwNWJlXHUwNWJmIg0KPiApDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlw1XHUwMGI0W1wyXHUwNWJmXHUwNWMxXDdzXDJcMlx1MDVjMFx1MDVj Mlw3DQo+IFwyXDJcdTA1YzEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YzBcM1wy XDJcMlx1MDVjMVx1MDVjMlwzXDJcMlwyXHUwNWMyXHUwMGExXDNcMlwyXDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDVjM1x1MDVjNFw3S1wyXDJcdTA1YzRcdTA1YzVcNVx1MDEyNFx1MDA5 M1wyXHUwNWM1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWQyXDcNCj4gXDJcMlx1 MDVjNlx1MDVjN1w3QFwyXDJcdTA1YzdcdTA1YzhcN1xiXDJcMlx1MDVjOCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNWNkXDVcdTAwOWVQXDJcdTA1YzlcdTA1Y2FcNyhcMlwyXHUwNWNhXHUw NWNjXDVcdTAwOWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlBcMlx1MDVjYlx1MDVjOVwzXDJc MlwyXHUwNWNjXHUwNWNmXDNcMlwyXDJcdTA1Y2RcdTA1Y2IiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MDVjZFx1MDVjZVwzXDJcMlwyXHUwNWNlXHUwNWQwXDNcMlwyXDJc dTA1Y2YiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1Y2RcM1wyXDJcMlx1MDVkMFx1 MDVkMVw3IVwyXDJcdTA1ZDFcdTA1ZDNcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNWQyXHUwNWM2XDNcMlwyXDJcdTA1ZDJcdTA1ZDNcM1wyXDJcMlx1MDVkM1x1MDVkNFwzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1ZDRcdTA1ZDVcNVx1MDBiNFtcMlx1MDVk NVx1MDVkN1w3c1wyXDJcdTA1ZDYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZDhc NyBcMlwyXHUwNWQ3XHUwNWQ2XDNcMlwyXDJcdTA1ZDdcdTA1ZDhcM1wyXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWQ4XHUwMGEzXDNcMlwyXDJcdTA1ZDlcdTA1ZTFcN2NcMlwyXHUw NWRhXHUwNWRiXDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhNlRcMlx1MDVkYlx1MDVk Y1w3IVwyXDJcdTA1ZGNcdTA1ZTJcM1wyXDJcMlx1MDVkZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNWRlXDdcYlwyXDJcdTA1ZGVcdTA1ZGZcNVouXDJcdTA1ZGZcdTA1ZTBcNyFcMlwyXHUw NWUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZTJcM1wyXDJcMlx1MDVlMVx1MDVkYVwz XDJcMlwyXHUwNWUxXHUwNWRkXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVl Mlx1MDVlN1wzXDJcMlwyXHUwNWUzXHUwNWU0XDdcdTAwOWJcMlwyXHUwNWU0XHUwNWU1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDVlNVx1MDVlNlw3XHUwMGZiXDJcMlx1MDVl Nlx1MDVlOFw3IVwyXDJcdTA1ZTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVlM1wzXDJc MlwyXHUwNWU3XHUwNWU4XDNcMlwyXDJcdTA1ZThcdTAwYTVcM1wyXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNWU5XHUwNWVhXDdcdTAwOTZcMlwyXHUwNWVhXHUwNWViXDdcYlwyXDJc dTA1ZWJcdTA1ZWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTI0XHUwMDkzXDJcdTA1 ZWNcdTAwYTdcM1wyXDJcMlx1MDVlZFx1MDVlZVw1XHUwMGFhIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJWXDJcdTA1ZWVcdTAwYTlcM1wyXDJcMlx1MDVlZlx1MDVmMFw3P1wyXDJcdTA1ZjBcdTA1 ZjEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3PlwyXDJcdTA1ZjFcdTA1ZjJcN1xiXDJcMlx1 MDVmMlx1MDVmM1w3XHUwMGVjXDJcMlx1MDVmMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilx1MDVmNFw3XDMwXDJcMlx1MDVmNFx1MDVmNVw3XHUwMGZhXDJcMlx1MDVmNVx1MDVmNlw3IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwNWY2XHUwNWY3XDchXDJcMlx1MDVmN1x1 MDVmOFw3XHUwMDk2XDJcMlx1MDVmOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWY5XDdc YlwyXDJcdTA1ZjlcdTA1ZmFcNVouXDJcdTA1ZmFcdTA1ZmJcNyFcMlwyXHUwNWZiIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWZjXDdAXDJcMlx1MDVmY1x1MDVmZFw3XGJcMlwyXHUw NWZkXHUwNjAyXDVcdTAwYWMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJXXDJcdTA1ZmVc dTA1ZmZcNyFcMlwyXHUwNWZmXHUwNjAwXDd0XDJcMlx1MDYwMFx1MDYwMSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2MDFcdTA2MDNcN1x1MDBmYVwyXDJcdTA2MDJcdTA1ZmVc M1wyXDJcMlx1MDYwMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDYwM1wzXDJcMlwy XHUwNjAzXHUwNjA4XDNcMlwyXDJcdTA2MDRcdTA2MDVcNyFcMlwyIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXHUwNjA1XHUwNjA3XDVcXC9cMlx1MDYwNlx1MDYwNFwzXDJcMlwyXHUwNjA3 XHUwNjBhXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDYwOFx1MDYwNlwzXDJc MlwyXHUwNjA4XHUwNjA5XDNcMlwyXDJcdTA2MDlcdTA2MGIiDQo+ICkNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MGFcdTA2MDhcM1wyXDJcMlx1MDYwYlx1MDYwY1w3IFwy XDJcdTA2MGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhYlwzXDJcMlwyXHUwNjBkXHUw NjEyXDVcdTAwYWVYXDJcdTA2MGVcdTA2MGZcNyhcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcdTA2MGZcdTA2MTFcNVx1MDBhZVhcMlx1MDYxMFx1MDYwZVwzXDJcMlwyXHUwNjExXHUwNjE0 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDYxMlx1MDYxMFwzXDJcMlwyXHUw NjEyXHUwNjEzXDNcMlwyXDJcdTA2MTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhZFwz XDJcMlwyXHUwNjE0XHUwNjEyXDNcMlwyXDJcdTA2MTVcdTA2MjFcN1x1MDBmYSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDYxNlx1MDYyMVw3XHUwMGVkXDJcMlx1MDYxN1x1MDYyMVw3 XHUwMGVlXDJcMlx1MDYxOA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYyMVw3eVwy XDJcdTA2MTlcdTA2MjFcN3tcMlwyXHUwNjFhXHUwNjIxXDdcdTAwODBcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTA2MWJcdTA2MjFcN3xcMlwyXHUwNjFjXHUwNjIxXDd2XDJcMlx1MDYx ZFx1MDYyMVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ1XDJcMlx1MDYxZVx1MDYyMVw3elwy XDJcdTA2MWZcdTA2MjFcN31cMlwyXHUwNjIwXHUwNjE1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDYyMFx1MDYxNlwzXDJcMlwyXHUwNjIwXHUwNjE3XDNcMlwyXDJcdTA2MjAi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYxOFwzXDJcMlwyXHUwNjIwXHUwNjE5XDNcMlwy XDJcdTA2MjBcdTA2MWFcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjIwXHUw NjFiXDNcMlwyXDJcdTA2MjBcdTA2MWNcM1wyXDJcMlx1MDYyMFx1MDYxZFwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2MjBcdTA2MWVcM1wyXDJcMlx1MDYyMFx1MDYxZlwzXDJc MlwyXHUwNjIxXHUwMGFmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDYyMlx1 MDYyM1w3XHUwMDk3XDJcMlx1MDYyM1x1MDYyNFw1XHUwMTI0XHUwMDkzDQo+ICIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwyXHUwNjI0XHUwNjI1XDcNCj4gXDJcMlx1MDYyNVx1MDBiMVwz XDJcMlwyXHUwNjI2XHUwNjI3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDA5OFwyXDJc dTA2MjdcdTA2MjhcNVx1MDEyNFx1MDA5M1wyXHUwNjI4XHUwNjI5XDciKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCINCj4gXDJcMlx1MDYyOVx1MDBiM1wzXDJcMlwyXHUwNjJhXHUwNjJjXDVc dTAwYjZcXFwyXHUwNjJiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MmFcM1wyXDJcMlx1 MDYyY1x1MDYyZlwzXDJcMlwyXHUwNjJkXHUwNjJiXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDYyZFx1MDYyZVwzXDJcMlwyXHUwNjJlXHUwMGI1XDNcMlwyXDJcdTA2MmZcdTA2 MmRcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNjMwXHUwNjMzXDVcdTAwOGFG XDJcdTA2MzFcdTA2MzNcNVx1MDA5Y09cMlx1MDYzMg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDYzMFwzXDJcMlwyXHUwNjMyXHUwNjMxXDNcMlwyXDJcdTA2MzNcdTAwYjdcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjM0XHUwNjM3XDVcdTAwYmFeXDJcdTA2MzVc dTA2MzdcNVx1MDBjMGFcMlx1MDYzNlx1MDYzDQo+IDQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwNjM2XHUwNjM1XDNcMlwyXDJcdTA2MzdcdTAwYjlcM1wyXDJcMlx1MDYzOCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjM5XDdcXFwyXDJcdTA2MzlcdTA2M2FcNVIqXDJc dTA2M2FcdTA2M2JcNVQrXDJcdTA2M2IiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY0MVw3 IVwyXDJcdTA2M2NcdTA2M2RcN0BcMlwyXHUwNjNkXHUwNjNlXDdcYlwyXDJcdTA2M2UNCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2M2ZcNVx1MDBiY19cMlx1MDYzZlx1MDY0MFw3IVwy XDJcdTA2NDBcdTA2NDJcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNjQxXHUw NjNjXDNcMlwyXDJcdTA2NDFcdTA2NDJcM1wyXDJcMlx1MDY0Mlx1MDY0NyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjQzXHUwNjQ0XDd0XDJcMlx1MDY0NFx1MDY0NVw3 XGJcMlwyXHUwNjQ1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjQ2XDdcdTAwZmFc MlwyXHUwNjQ2XHUwNjQ4XDchXDJcMlx1MDY0N1x1MDY0M1wzXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwyXDJcdTA2NDdcdTA2NDhcM1wyXDJcMlx1MDY0OFx1MDY0OVwzXDJcMlwyXHUwNjQ5 XHUwNjRhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwYjRbXDJcdTA2NGFcdTA2 NGJcN11cMlwyXHUwNjRiXHUwNjRjXDcNCj4gXDJcMlx1MDY0YyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMGJiXDNcMlwyXDJcdTA2NGRcdTA2NTJcNVx1MDBiZWBcMlx1MDY0ZVx1MDY0Zlw3 KFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDY0Zlx1MDY1MVw1XHUwMGJlYFwyXHUw NjUwXHUwNjRlXDNcMlwyXDJcdTA2NTFcdTA2NTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwNjUyXHUwNjUwXDNcMlwyXDJcdTA2NTJcdTA2NTNcM1wyXDJcMlx1MDY1MyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGJkXDNcMlwyXDJcdTA2NTRcdTA2NTJcM1wyXDJcMlx1 MDY1NVx1MDY1Y1w3XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNjU2XHUw NjVjXDd1XDJcMlx1MDY1N1x1MDY1Y1w3dlwyXDJcdTA2NThcdTA2NWMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw3d1wyXDJcdTA2NTlcdTA2NWNcN3hcMlwyXHUwNjVhXHUwNjVjXDVWLFwyXHUw NjViXHUwNjU1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY1Ylx1MDY1Nlwz XDJcMlwyXHUwNjViXHUwNjU3XDNcMlwyXDJcdTA2NWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDY1OFwzXDJcMlwyXHUwNjViXHUwNjU5XDNcMlwyXDJcdTA2NWJcdTA2NWFcM1wyXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjVjXHUwMGJmXDNcMlwyXDJcdTA2NWRcdTA2NWVc N1x1MDBhMVwyXDJcdTA2NWVcdTA2NWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1UClcMlx1 MDY1Zlx1MDY2NVw3IVwyXDJcdTA2NjBcdTA2NjFcN0BcMlwyXHUwNjYxXHUwNjYyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDY2Mlx1MDY2M1w1XHUwMGMyYlwyXHUwNjYzXHUw NjY0XDchXDJcMlx1MDY2NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjY2XDNcMlwyXDJc dTA2NjVcdTA2NjBcM1wyXDJcMlx1MDY2NVx1MDY2NlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA2NjZcdTA2NjdcM1wyXDJcMlx1MDY2N1x1MDY2OFw3XHUwMGEyXDJcMlx1MDY2 OFx1MDY2OSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwNjY5XHUwNjZh XDdcdTAwZWNcMlwyXHUwNjZhXHUwNjZiXDdcMzBcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2NmJcdTA2NmNcN1x1MDBmYVwyXDJcdTA2NmNcdTA2NmRcN1wzMVwyXDJcdTA2NmRcdTA2 NmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA2NmVcdTA2NmZcNVx1MDA5YU5c Mlx1MDY2Zlx1MDY3MFw3XHUwMGEzXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1 MDY3MFx1MDY3MVw3IFwyXDJcdTA2NzFcdTAwYzFcM1wyXDJcMlx1MDY3Mlx1MDY3N1w1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYzRjXDJcdTA2NzNcdTA2NzRcNyhcMlwyXHUwNjc0XHUw Njc2XDVcdTAwYzRjXDJcdTA2NzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY3M1wzXDJc MlwyXHUwNjc2XHUwNjc5XDNcMlwyXDJcdTA2NzdcdTA2NzVcM1wyXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjc3XHUwNjc4XDNcMlwyXDJcdTA2NzhcdTAwYzNcM1wyXDJcMlx1MDY3 OVx1MDY3N1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2N2FcdTA2N2RcN1x1 MDBmYVwyXDJcdTA2N2JcdTA2N2RcNVYsXDJcdTA2N2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDY3YVwzXDJcMlwyXHUwNjdjXHUwNjdiXDNcMlwyXDJcdTA2N2RcdTAwYzVcM1wyXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjdlXHUwNjgxXDVcdTAwYzhlXDJcdTA2N2ZcdTA2 ODFcNVx1MDBkMGlcMlx1MDY4MFx1MDY3ZSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwNjgwXHUwNjdmXDNcMlwyXDJcdTA2ODFcdTAwYzdcM1wyXDJcMlx1MDY4MiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjgzXDdeXDJcMlx1MDY4M1x1MDY4NFw1UipcMlx1MDY4 NFx1MDY4NVw1VCtcMlx1MDY4NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjhiXDchXDJc Mlx1MDY4Nlx1MDY4N1w3QFwyXDJcdTA2ODdcdTA2ODhcN1xiXDJcMlx1MDY4OA0KPiAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDY4OVw1XHUwMGNjZ1wyXHUwNjg5XHUwNjhhXDchXDJcMlx1 MDY4YVx1MDY4Y1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA2OGJcdTA2ODZc M1wyXDJcMlx1MDY4Ylx1MDY4Y1wzXDJcMlwyXHUwNjhjXHUwNjkxIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2OGRcdTA2OGVcN3RcMlwyXHUwNjhlXHUwNjhmXDdcYlwy XDJcdTA2OGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA2OTBcN1x1MDBmYVwyXDJc dTA2OTBcdTA2OTJcNyFcMlwyXHUwNjkxXHUwNjhkXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlx1MDY5MVx1MDY5MlwzXDJcMlwyXHUwNjkyXHUwNjkzXDNcMlwyXDJcdTA2OTNcdTA2 OTQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDBjYWZcMlx1MDY5NFx1MDY5NVw1 XHUwMGI0W1wyXHUwNjk1XHUwNjk2XDdfXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilx1MDY5Nlx1MDY5N1w3IFwyXDJcdTA2OTdcdTAwYzlcM1wyXDJcMlx1MDY5OFx1MDY5OVw3IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJgXDJcMlx1MDY5OVx1MDY5Ylw3XGJcMlwyXHUwNjlhXHUw NjljXDdcMzVcMlwyXHUwNjliXHUwNjlhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDY5Ylx1MDY5Y1wzXDJcMlwyXHUwNjljXHUwNjlkXDNcMlwyXDJcdTA2OWQiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTA2OWVcN1x1MDBmYVwyXDJcdTA2OWVcdTA2OWZcNyFcMlwy XHUwNjlmXHUwNmEwXDdhXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNmEwXHUwNmEy XDdcYlwyXDJcdTA2YTFcdTA2YTNcN1wzNVwyXDJcdTA2YTJcdTA2YTEiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwNmEyXHUwNmEzXDNcMlwyXDJcdTA2YTNcdTA2YTRcM1wyXDJc Mlx1MDZhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmE1XDdcdTAwZmFcMlwyXHUwNmE1 XHUwNmFhXDchXDJcMlx1MDZhNlx1MDZhN1w3YlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc Mlx1MDZhN1x1MDZhOFw3XGJcMlwyXHUwNmE4XHUwNmE5XDdcdTAwZmFcMlwyXHUwNmE5XHUwNmFi Ig0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA2YWFcdTA2YTZcM1wy XDJcMlx1MDZhYVx1MDZhYlwzXDJcMlwyXHUwNmFiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwY2JcM1wyXDJcMlx1MDZhY1x1MDZiMVw1XHUwMGNlaFwyXHUwNmFkXHUwNmFlXDcoXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNmFlXHUwNmIwXDVcdTAwY2VoXDJcdTA2YWZcdTA2 YWRcM1wyXDJcMlx1MDZiMFx1MDZiMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA2YjFcdTA2YWZcM1wyXDJcMlx1MDZiMVx1MDZiMlwzXDJcMlwyXHUwNmIyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAwY2RcM1wyXDJcMlx1MDZiM1x1MDZiMVwzXDJcMlwyXHUwNmI0XHUw NmJlXDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA2YjVcdTA2YmVcN1x1 MDBlZlwyXDJcdTA2YjZcdTA2YmVcN1x1MDBmMFwyXDJcdTA2YjciDQo+ICkNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA2YmVcN1x1MDBmMVwyXDJcdTA2YjhcdTA2YmVcN1x1MDBmMlwyXDJcdTA2 YjlcdTA2YmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGYzXDJcMlx1MDZiYVx1MDZi ZVw3XHUwMGY0XDJcMlx1MDZiYlx1MDZiZVw3XHUwMGY1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXHUwNmJjXHUwNmJlXDVWLFwyXHUwNmJkXHUwNmI0XDNcMlwyXDJcdTA2YmRcdTA2YjUi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNmJkXHUwNmI2XDNcMlwyXDJcdTA2 YmRcdTA2YjdcM1wyXDJcMlx1MDZiZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmI4XDNc MlwyXDJcdTA2YmRcdTA2YjlcM1wyXDJcMlx1MDZiZFx1MDZiYVwzXDJcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA2YmRcdTA2YmJcM1wyXDJcMlx1MDZiZFx1MDZiY1wzXDJcMlwyXHUw NmJlXHUwMGNmXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDZiZlx1MDZjMFw3 XDYwXDJcMlx1MDZjMFx1MDZjMVw1UipcMlx1MDZjMVx1MDZjMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDVUK1wyXHUwNmMyXHUwNmM4XDchXDJcMlx1MDZjM1x1MDZjNFw3QFwyXDJcdTA2YzRc dTA2YzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNmM1XHUwNmM2XDVcdTAw ZDJqXDJcdTA2YzZcdTA2YzdcNyFcMlwyXHUwNmM3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNmM5XDNcMlwyXDJcdTA2YzhcdTA2YzNcM1wyXDJcMlx1MDZjOFx1MDZjOVwzXDJcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YzlcdTA2Y2JcM1wyXDJcMlx1MDZjYVx1MDZj Y1w1XHUwMGNhZlwyXHUwNmNiXHUwNmNhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTA2Y2JcdTA2Y2NcM1wyXDJcMlx1MDZjY1x1MDZjZFwzXDJcMlwyXHUwNmNkIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmNlXDVcdTAwYjRbXDJcdTA2Y2VcdTA2Y2ZcN1w2 MVwyXDJcdTA2Y2ZcdTA2ZDBcNyAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA2ZDBc dTAwZDFcM1wyXDJcMlx1MDZkMVx1MDZkNlw1XHUwMGNlaFwyXHUwNmQyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA2ZDNcNyhcMlwyXHUwNmQzXHUwNmQ1XDVcdTAwY2VoXDJcdTA2ZDRcdTA2 ZDJcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNmQ1XHUwNmQ4XDNcMlwyXDJc dTA2ZDZcdTA2ZDRcM1wyXDJcMlx1MDZkNlx1MDZkNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA2ZDdcdTAwZDNcM1wyXDJcMlx1MDZkOFx1MDZkNlwzXDJcMlwyXHUwNmQ5IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZGNcNVx1MDBkNmxcMlx1MDZkYVx1MDZkY1w1XHUw MGRjb1wyXHUwNmRiXHUwNmQ5XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDZk Ylx1MDZkYVwzXDJcMlwyXHUwNmRjXHUwMGQ1XDNcMlwyXDJcdTA2ZGRcdTA2ZGUiDQo+ICkNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcN2ZcMlwyXHUwNmRlXHUwNmRmXDVQKVwyXHUwNmRmXHUwNmU1 XDchXDJcMlx1MDZlMFx1MDZlMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDZl MVx1MDZlMlw3XGJcMlwyXHUwNmUyXHUwNmUzXDVcdTAwZDhtXDJcdTA2ZTMiDQo+ICkNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmU0XDchXDJcMlx1MDZlNFx1MDZlNlwzXDJcMlwyXHUw NmU1XHUwNmUwXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZlNVx1MDZlNlwz XDJcMlwyXHUwNmU2XHUwNmViXDNcMlwyXDJcdTA2ZTdcdTA2ZThcNyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgidFwyXDJcdTA2ZThcdTA2ZTlcN1xiXDJcMlx1MDZlOVx1MDZlYVw3XHUwMGZhXDJc Mlx1MDZlYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDZlY1w3IVwyXDJcdTA2ZWJc dTA2ZTdcM1wyXDJcMlx1MDZlYlx1MDZlY1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2ZWNcdTA2ZWRcM1wyXDJcMlx1MDZlZFx1MDZlZVw3aFwyXDJcdTA2ZWVcdTA2ZWZcNyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlxiXDJcMlx1MDZlZlx1MDZmMFw3XHUwMGZhXDJc Mlx1MDZmMFx1MDZmMVw3IVwyXDJcdTA2ZjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTA2ZjJcN2lcMlwyXHUwNmYyXHUwNmYzXDdcYlwyXDJcdTA2ZjNcdTA2ZjRcN1x1MDBmYSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDZmNFx1MDZmNVw3IVwyXDJcdTA2ZjVcdTA2ZjZc NVx1MDBiNFtcMlx1MDZmNlx1MDZmNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3Z1wy XDJcdTA2ZjdcdTA2ZjhcNw0KPiBcMlwyXHUwNmY4XHUwMGQ3XDNcMlwyXDJcdTA2ZjlcdTA2ZmUi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDBkYW5cMlx1MDZmYVx1MDZmYlw3KFwy XDJcdTA2ZmJcdTA2ZmRcNVx1MDBkYW5cMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1 MDZmY1x1MDZmYVwzXDJcMlwyXHUwNmZkXHUwNzAwXDNcMlwyXDJcdTA2ZmVcdTA2ZmNcMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNmZlXHUwNmZmXDNcMlwyXDJcdTA2ZmZcdTAw ZDlcM1wyXDJcMlx1MDcwMFx1MDZmZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXHUwNzAxXHUwNzA1XDdcdTAwZmFcMlwyXHUwNzAyXHUwNzA1XDdcMTNcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA3MDNcdTA3MDVcNVYsXDJcdTA3MDRcdTA3MDFcM1wyXDJcMlx1 MDcwNFx1MDcwMlwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3MDRcdTA3MDNc M1wyXDJcMlx1MDcwNVx1MDBkYlwzXDJcMlwyXHUwNzA2XHUwNzA3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcN2RcMlwyXHUwNzA3XHUwNzA4XDVQKVwyXHUwNzA4XHUwNzBlXDchXDJcMlx1MDcw OVx1MDcwYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDcwYVx1MDcwYlw3XGJc MlwyXHUwNzBiXHUwNzBjXDVcdTAwZGVwXDJcdTA3MGMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTA3MGRcNyFcMlwyXHUwNzBkXHUwNzBmXDNcMlwyXDJcdTA3MGVcdTA3MDlcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzBlXHUwNzBmXDNcMlwyXDJcdTA3MGZcdTA3 MTRcM1wyXDJcMlx1MDcxMFx1MDcxMVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ0XDJcMlx1 MDcxMVx1MDcxMlw3XGJcMlwyXHUwNzEyXHUwNzEzXDdcdTAwZmFcMlwyXHUwNzEzIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzE1XDchXDJcMlx1MDcxNFx1MDcxMFwzXDJcMlwyXHUw NzE0XHUwNzE1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcxNVx1MDcxNlwz XDJcMlwyXHUwNzE2XHUwNzE3XDdoXDJcMlx1MDcxN1x1MDcxOFw3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcYlwyXDJcdTA3MThcdTA3MTlcN1x1MDBmYVwyXDJcdTA3MTlcdTA3MWFcNyFcMlwy XHUwNzFhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzFiXDdpXDJcMlx1MDcxYlx1 MDcxY1w3XGJcMlwyXHUwNzFjXHUwNzFkXDdcdTAwZmEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXHUwNzFkXHUwNzIyXDchXDJcMlx1MDcxZVx1MDcxZlw3alwyXDJcdTA3MWZcdTA3 MjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNzIwXHUwNzIxXDdcdTAwZmFc MlwyXHUwNzIxXHUwNzIzXDchXDJcMlx1MDcyMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NzFlXDNcMlwyXDJcdTA3MjJcdTA3MjNcM1wyXDJcMlx1MDcyM1x1MDcyNFwzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MjRcdTA3MjVcNVx1MDBiNFtcMlx1MDcyNVx1MDcyNlw3 ZVwyXDJcdTA3MjZcdTA3MjciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0KPiBcMlwy XHUwNzI3XHUwMGRkXDNcMlwyXDJcdTA3MjhcdTA3MmRcNVx1MDBlMHFcMlx1MDcyOSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNzJhXDcoXDJcMlx1MDcyYVx1MDcyY1w1XHUwMGUwcVwyXHUw NzJiXHUwNzI5XDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDcyY1x1MDcyZlwz XDJcMlwyXHUwNzJkXHUwNzJiXDNcMlwyXDJcdTA3MmRcdTA3MmUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNzJlXHUwMGRmXDNcMlwyXDJcdTA3MmZcdTA3MmRcM1wyXDJcMlx1 MDczMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzMzXDdcdTAwZmFcMlwyXHUwNzMxXHUw NzMzXDVWLFwyXHUwNzMyXHUwNzMwXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1 MDczMlx1MDczMVwzXDJcMlwyXHUwNzMzXHUwMGUxXDNcMlwyXDJcdTA3MzRcdTA3MzUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw3XDYzXDJcMlx1MDczNVx1MDczNlw1UClcMlx1MDczNlx1MDcz Ylw3IVwyXDJcdTA3MzdcdTA3MzgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1w2NFwy XDJcdTA3MzhcdTA3MzlcN1xiXDJcMlx1MDczOVx1MDczYVw3XHUwMGZhXDJcMiIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDczYVx1MDczY1w3IVwyXDJcdTA3M2JcdTA3MzdcM1wyXDJc Mlx1MDczYlx1MDczY1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA3M2NcdTA3 NDJcM1wyXDJcMlx1MDczZFx1MDczZVw3QFwyXDJcdTA3M2VcdTA3M2YiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw3XGJcMlwyXHUwNzNmXHUwNzQwXDVcdTAwZTRzXDJcdTA3NDBcdTA3NDFcNyFc MlwyXHUwNzQxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NDNcM1wyXDJcMlx1MDc0Mlx1 MDczZFwzXDJcMlwyXHUwNzQyXHUwNzQzXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDc0M1x1MDc0NFwzXDJcMlwyXHUwNzQ0XHUwNzQ1XDVcdTAwYjRbXDJcdTA3NDVcdTA3NDYi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1w2NVwyXDJcdTA3NDZcdTA3NDdcNw0KPiBc MlwyXHUwNzQ3XHUwMGUzXDNcMlwyXDJcdTA3NDgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDc0ZFw1XHUwMGU2dFwyXHUwNzQ5XHUwNzRhXDcoXDJcMlx1MDc0YVx1MDc0Y1w1XHUwMGU2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ0XDJcdTA3NGJcdTA3NDlcM1wyXDJcMlx1MDc0Y1x1MDc0 ZlwzXDJcMlwyXHUwNzRkXHUwNzRiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDc0ZFx1MDc0ZVwzXDJcMlwyXHUwNzRlXHUwMGU1XDNcMlwyXDJcdTA3NGYiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDc0ZFwzXDJcMlwyXHUwNzUwXHUwNzU1XDdcdTAwZmFcMlwyXHUwNzUx XHUwNzU1XDdcdTAwYzAiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNzUyXHUw NzU1XDdcdTAwYzFcMlwyXHUwNzUzXHUwNzU1XDVWLFwyXHUwNzU0XHUwNzUwIg0KPiApDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3NTRcdTA3NTFcM1wyXDJcMlx1MDc1NFx1MDc1 MlwzXDJcMlwyXHUwNzU0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NTNcM1wyXDJcMlx1 MDc1NVx1MDBlN1wzXDJcMlwyXHUwNzU2XHUwN2IxXDdBXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNzU3XHUwNzU4XDVQKVwyXHUwNzU4XHUwNzVlXDchXDJcMlx1MDc1OVx1MDc1YVw3 QFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDc1YVx1MDc1Ylw3XGJcMlwyXHUwNzVi XHUwNzVjXDVcdTAwZWN3XDJcdTA3NWNcdTA3NWQiDQo+ICkNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDchXDJcMlx1MDc1ZFx1MDc1ZlwzXDJcMlwyXHUwNzVlXHUwNzU5XDNcMlwyXDJcdTA3 NWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc1ZlwzXDJcMlwyXHUwNzVmXHUwNzYwXDNc MlwyXDJcdTA3NjBcdTA3NjFcNVx1MDBiNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiW1wyXHUw NzYxXHUwN2IyXDNcMlwyXDJcdTA3NjJcdTA3NjNcN0NcMlwyXHUwNzYzXHUwNzY0IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcN1x1MDA4ZlwyXDJcdTA3NjRcdTA3NjVcN1xiXDJcMlx1MDc2NVx1 MDc2Nlw3XHUwMGZiXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNzY2XHUwNzY3XDdc MzRcMlwyXHUwNzY3XHUwNzY4XDdcdTAwZmJcMlwyXHUwNzY4IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA3NjlcNyFcMlwyXHUwNzY5XHUwNzZhXDdcNjJcMlwyXHUwNzZhXHUwNzZiXDdcYlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc2Ylx1MDc2Y1w3XHUwMGVjXDJcMlx1MDc2 Y1x1MDc2ZFw3XDMwXDJcMlx1MDc2ZFx1MDc2ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdc dTAwZmFcMlwyXHUwNzZlXHUwNzZmXDdcMzFcMlwyXHUwNzZmXHUwNzcwXDchXDJcMlx1MDc3MCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzcxXDc9XDJcMlx1MDc3MVx1MDc3Mlw3XGJcMlwy XHUwNzcyXHUwNzczXDdcdTAwZWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3NzNc dTA3NzRcN1wzMFwyXDJcdTA3NzRcdTA3NzVcN1x1MDBmYVwyXDJcdTA3NzUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDc3Nlw3XDMxXDJcMlx1MDc3Nlx1MDc3N1w3IVwyXDJcdTA3NzdcdTA3 NzhcNVx1MDBlYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgidlwyXHUwNzc4XHUwNzc5XDdEXDJc Mlx1MDc3OVx1MDc3YVw3XHUwMDhmXDJcMlx1MDc3YVx1MDc3Yg0KPiAiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDc3Ylx1MDc3Y1w3XHUwMGZiXDJcMlx1MDc3Y1x1MDc3 ZFw3XDM0XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzdkXHUwNzdlXDdcdTAwZmJc MlwyXHUwNzdlXHUwNzdmXDchXDJcMlx1MDc3Zlx1MDc4MCIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlw3XDYyXDJcMlx1MDc4MFx1MDc4MVw3XGJcMlwyXHUwNzgxXHUwNzgyXDdcdTAwZWNc MlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ODJcdTA3ODNcN1wzMFwyXDJcdTA3ODNc dTA3ODRcN1x1MDBmYVwyXDJcdTA3ODRcdTA3ODUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcN1wzMVwyXDJcdTA3ODVcdTA3ODZcNyFcMlwyXHUwNzg2XHUwNzg3XDc9XDJcMlx1MDc4NyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzg4XDdcYlwyXDJcdTA3ODhcdTA3ODlcN1x1MDBl Y1wyXDJcdTA3ODlcdTA3OGFcN1wzMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDc4 YVx1MDc4Ylw3XHUwMGZhXDJcMlx1MDc4Ylx1MDc4Y1w3XDMxXDJcMlx1MDc4YyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNzhkXDchXDJcMlx1MDc4ZFx1MDc4ZVw1XHUwMGVhdlwyXHUwNzhl XHUwNzhmXDdFXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNzhmXHUwNzkwXDdcdTAw OGZcMlwyXHUwNzkwXHUwNzkxXDdcYlwyXDJcdTA3OTFcdTA3OTIiDQo+ICkNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwNzkyXHUwNzkzXDdcMzRcMlwyXHUwNzkzXHUw Nzk0XDdcdTAwZmIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3OTRcdTA3OTVcNyFc MlwyXHUwNzk1XHUwNzk2XDdcNjJcMlwyXHUwNzk2XHUwNzk3IikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDdcYlwyXDJcdTA3OTdcdTA3OThcN1x1MDBlY1wyXDJcdTA3OThcdTA3OTlcN1wz MFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc5OVx1MDc5YVw3XHUwMGZhXDJcMlx1 MDc5YVx1MDc5Ylw3XDMxXDJcMlx1MDc5Ylx1MDc5YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDchXDJcMlx1MDc5Y1x1MDc5ZFw3PVwyXDJcdTA3OWRcdTA3OWVcN1xiXDJcMlx1MDc5ZVx1MDc5 ZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDc5Zlx1MDdhMFw3 XDMwXDJcMlx1MDdhMFx1MDdhMVw3XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwy XHUwN2ExXHUwN2EyXDdcMzFcMlwyXHUwN2EyXHUwN2EzXDchXDJcMlx1MDdhM1x1MDdhOSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAwZWF2XDJcdTA3YTRcdTA3YTVcN0BcMlwyXHUwN2E1 XHUwN2E2XDdcYlwyXDJcdTA3YTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdhN1w1XHUw MGVjd1wyXHUwN2E3XHUwN2E4XDchXDJcMlx1MDdhOFx1MDdhYVwzXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTA3YTlcdTA3YTRcM1wyXDJcMlx1MDdhOVx1MDdhYVwzXDJcMlwyXHUw N2FhXHUwN2FlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDdhYlx1MDdhZFw1 XHUwMDhjR1wyXHUwN2FjXHUwN2FiXDNcMlwyXDJcdTA3YWQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDdiMFwzXDJcMlwyXHUwN2FlXHUwN2FjXDNcMlwyXDJcdTA3YWVcdTA3YWZcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2FmXHUwN2IyXDNcMlwyXDJcdTA3YjBcdTA3 YWVcM1wyXDJcMlx1MDdiMVx1MDc1N1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJc dTA3YjFcdTA3NjJcM1wyXDJcMlx1MDdiMlx1MDdiM1wzXDJcMlwyXHUwN2IzXHUwN2I0Ig0KPiAp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3QlwyXDJcdTA3YjRcdTA3YjVcNw0KPiBcMlwy XHUwN2I1XHUwMGU5XDNcMlwyXDJcdTA3YjZcdTA3YjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw3YFwyXDJcdTA3YjdcdTA3YjhcN1xiXDJcMlx1MDdiOFx1MDdiOVw3XHUwMGZhXDJcMlx1MDdi OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2JhXDchXDJcMlx1MDdiYVx1MDdiYlw3YVwy XDJcdTA3YmJcdTA3YmNcN1xiXDJcMlx1MDdiYyINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDdiZFw3XHUwMGZhXDJcMlx1MDdiZFx1MDdjMlw3IVwyXDJcdTA3YmVcdTA3YmZcN2JcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA3YmZcdTA3YzBcN1xiXDJcMlx1MDdjMFx1MDdj MVw3XHUwMGZhXDJcMlx1MDdjMVx1MDdjMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3 IVwyXDJcdTA3YzJcdTA3YmVcM1wyXDJcMlx1MDdjMlx1MDdjM1wzXDJcMlwyXHUwN2MzIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2M4XDNcMlwyXDJcdTA3YzRcdTA3YzVcN2NcMlwy XHUwN2M1XHUwN2M2XDdcYlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdjNlx1MDdj N1w3XHUwMGZhXDJcMlx1MDdjN1x1MDdjOVw3IVwyXDJcdTA3YzhcdTA3YzQiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDdjOFx1MDdjOVwzXDJcMlwyXHUwN2M5XHUwMGVi XDNcMlwyXDJcdTA3Y2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdjZlw1XHUwMGVleFwy XHUwN2NiXHUwN2NjXDcoXDJcMlx1MDdjY1x1MDdjZVw1XHUwMGVlIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJ4XDJcdTA3Y2RcdTA3Y2JcM1wyXDJcMlx1MDdjZVx1MDdkMVwzXDJcMlwyXHUwN2Nm XHUwN2NkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDdjZlx1MDdkMFwzXDJc MlwyXHUwN2QwXHUwMGVkXDNcMlwyXDJcdTA3ZDEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdTA3Y2ZcM1wyXDJcMlx1MDdkMlx1MDdkM1x0XDZcMlwyXHUwN2QzXHUwMGVmXDNcMlwyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdkNFx1MDgyZlw3RlwyXDJcdTA3ZDVcdTA3ZDZc NVApXDJcdTA3ZDZcdTA3ZGNcNyFcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA3ZDdc dTA3ZDhcN0BcMlwyXHUwN2Q4XHUwN2Q5XDdcYlwyXDJcdTA3ZDlcdTA3ZGEiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw1XHUwMGY0e1wyXHUwN2RhXHUwN2RiXDchXDJcMlx1MDdkYlx1MDdkZFwz XDJcMlwyXHUwN2RjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZDdcM1wyXDJcMlx1MDdk Y1x1MDdkZFwzXDJcMlwyXHUwN2RkXHUwN2RlXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDdkZVx1MDdkZlw1XHUwMGI0W1wyXHUwN2RmXHUwODMwXDNcMlwyXDJcdTA3ZTBcdTA3 ZTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3SFwyXDJcdTA3ZTFcdTA3ZTJcN1x1MDA4Zlwy XDJcdTA3ZTJcdTA3ZTNcN1xiXDJcMlx1MDdlMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw N2U0XDdcdTAwZmJcMlwyXHUwN2U0XHUwN2U1XDdcMzRcMlwyXHUwN2U1XHUwN2U2XDciKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTA3ZTZcdTA3ZTdcNyFcMlwyXHUwN2U3XHUw N2U4XDdcNjJcMlwyXHUwN2U4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZTlcN1xiXDJc Mlx1MDdlOVx1MDdlYVw3XHUwMGVjXDJcMlx1MDdlYVx1MDdlYlw3XDMwIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXHUwN2ViXHUwN2VjXDdcdTAwZmFcMlwyXHUwN2VjXHUwN2VkXDdcMzFc MlwyXHUwN2VkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZWVcNyFcMlwyXHUwN2VlXHUw N2VmXDc9XDJcMlx1MDdlZlx1MDdmMFw3XGJcMlwyXHUwN2YwIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwN2YxXDdcdTAwZWNcMlwyXHUwN2YxXHUwN2YyXDdcMzBcMlwyXHUwN2YyXHUw N2YzXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA3ZjNcdTA3ZjRcN1wz MVwyXDJcdTA3ZjRcdTA3ZjVcNyFcMlwyXHUwN2Y1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA3ZjZcNVx1MDBmMnpcMlx1MDdmNlx1MDdmN1w3SVwyXDJcdTA3ZjdcdTA3ZjhcN1x1MDA4ZiIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA3ZjhcdTA3ZjlcN1xiXDJcMlx1MDdm OVx1MDdmYVw3XHUwMGZiXDJcMlx1MDdmYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1 MDdmYlw3XDM0XDJcMlx1MDdmYlx1MDdmY1w3XHUwMGZiXDJcMlx1MDdmY1x1MDdmZFw3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCIhXDJcMlx1MDdmZFx1MDdmZVw3XDYyXDJcMlx1MDdmZVx1MDdm Zlw3XGJcMlwyXHUwN2ZmXHUwODAwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAw ZWNcMlwyXHUwODAwXHUwODAxXDdcMzBcMlwyXHUwODAxXHUwODAyXDdcdTAwZmEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcdTA4MDJcdTA4MDNcN1wzMVwyXDJcdTA4MDNcdTA4MDRcNyFc MlwyXHUwODA0XHUwODA1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNz1cMlwyXHUwODA1XHUw ODA2XDdcYlwyXDJcdTA4MDZcdTA4MDdcN1x1MDBlY1wyXDJcdTA4MDciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDgwOFw3XDMwXDJcMlx1MDgwOFx1MDgwOVw3XHUwMGZhXDJcMlx1MDgwOVx1 MDgwYVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwODBhXHUwODBiXDchXDJc Mlx1MDgwYlx1MDgwY1w1XHUwMGYyelwyXHUwODBjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwODBkXDdKXDJcMlx1MDgwZFx1MDgwZVw3XHUwMDhmXDJcMlx1MDgwZVx1MDgwZlw3XGIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA4MGZcdTA4MTBcN1x1MDBmYlwyXDJcdTA4 MTBcdTA4MTFcN1wzNFwyXDJcdTA4MTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgxMlw3 XHUwMGZiXDJcMlx1MDgxMlx1MDgxM1w3IVwyXDJcdTA4MTNcdTA4MTRcN1w2MiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDgxNFx1MDgxNVw3XGJcMlwyXHUwODE1XHUwODE2XDdcdTAw ZWNcMlwyXHUwODE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MTdcN1wzMFwyXDJcdTA4 MTdcdTA4MThcN1x1MDBmYVwyXDJcdTA4MThcdTA4MTlcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDMxXDJcMlx1MDgxOVx1MDgxYVw3IVwyXDJcdTA4MWFcdTA4MWJcNz1cMlwyXHUwODFiXHUw ODFjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA4MWNcdTA4MWRcN1x1 MDBlY1wyXDJcdTA4MWRcdTA4MWVcN1wzMFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDgxZVx1MDgxZlw3XHUwMGZhXDJcMlx1MDgxZlx1MDgyMFw3XDMxXDJcMlx1MDgyMFx1MDgyMSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDgyMVx1MDgyN1w1XHUwMGYyelwyXHUw ODIyXHUwODIzXDdAXDJcMlx1MDgyMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODI0XDdc YlwyXDJcdTA4MjRcdTA4MjVcNVx1MDBmNHtcMlx1MDgyNVx1MDgyNlw3IVwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlx1MDgyNlx1MDgyOFwzXDJcMlwyXHUwODI3XHUwODIyXDNcMlwyXDJc dTA4MjdcdTA4MjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODI4XHUwODJj XDNcMlwyXDJcdTA4MjlcdTA4MmJcNVx1MDA4Y0dcMlx1MDgyYSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwODI5XDNcMlwyXDJcdTA4MmJcdTA4MmVcM1wyXDJcMlx1MDgyY1x1MDgyYVwzXDJc MlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MmNcdTA4MmRcM1wyXDJcMlx1MDgyZFx1 MDgzMFwzXDJcMlwyXHUwODJlXHUwODJjXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJc Mlx1MDgyZlx1MDdkNVwzXDJcMlwyXHUwODJmXHUwN2UwXDNcMlwyXDJcdTA4MzBcdTA4MzEiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDgzMVx1MDgzMlw3R1wyXDJcdTA4 MzJcdTA4MzNcNw0KPiBcMlwyXHUwODMzXHUwMGYxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA4MzRcdTA4MzVcN2BcMlwyXHUwODM1XHUwODM2XDdcYlwyXDJcdTA4MzYi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgzN1w3XHUwMGZhXDJcMlx1MDgzN1x1MDgzOFw3 IVwyXDJcdTA4MzhcdTA4MzlcN2FcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA4Mzlc dTA4M2FcN1xiXDJcMlx1MDgzYVx1MDgzYlw3XHUwMGZhXDJcMlx1MDgzYlx1MDg0MCINCj4gKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA4M2NcdTA4M2RcN2JcMlwyXHUwODNkXHUw ODNlXDdcYlwyXDJcdTA4M2VcdTA4M2YiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGZh XDJcMlx1MDgzZlx1MDg0MVw3IVwyXDJcdTA4NDBcdTA4M2NcM1wyXDJcMlx1MDg0MCIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDg0MVwzXDJcMlwyXHUwODQxXHUwODQ2XDNcMlwyXDJc dTA4NDJcdTA4NDNcN2NcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NDNcdTA4NDRc N1xiXDJcMlx1MDg0NFx1MDg0NVw3XHUwMGZhXDJcMlx1MDg0NVx1MDg0NyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA4NDZcdTA4NDJcM1wyXDJcMlx1MDg0Nlx1MDg0N1wz XDJcMlwyXHUwODQ3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZjNcM1wyXDJcMlx1MDg0 OFx1MDg0ZFw1XHUwMGY2fFwyXHUwODQ5XHUwODRhXDcoXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXHUwODRhXHUwODRjXDVcdTAwZjZ8XDJcdTA4NGJcdTA4NDlcM1wyXDJcMlx1MDg0Y1x1 MDg0ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4NGRcdTA4NGJcM1wyXDJc Mlx1MDg0ZFx1MDg0ZVwzXDJcMlwyXHUwODRlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwMGY1XDNcMlwyXDJcdTA4NGZcdTA4NGRcM1wyXDJcMlx1MDg1MFx1MDg1MVx0XDdcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NTFcdTAwZjdcM1wyXDJcMlx1MDg1Mlx1MDg1N1w1 XHUwMTA0XHUwMDgzXDJcdTA4NTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg1N1w1XHUw MGZjXDE3N1wyXHUwODU0XHUwODU3XDVcdTAwZmVcdTAwODBcMlx1MDg1NSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwODU3XDVcdTAxMGVcdTAwODhcMlx1MDg1Nlx1MDg1MlwzXDJcMlwyXHUw ODU2XHUwODUzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg1Nlx1MDg1NFwz XDJcMlwyXHUwODU2XHUwODU1XDNcMlwyXDJcdTA4NTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDBmOVwzXDJcMlwyXHUwODU4XHUwODU5XDVcdTAxMDRcdTAwODNcMlx1MDg1OVx1MDg1YSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxMGFcdTAwODZcMlx1MDg1YVx1MDg1Ylw1XHUw MTBjXHUwMDg3XDJcdTA4NWJcdTA4NWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTBl XHUwMDg4XDJcdTA4NWNcdTAwZmJcM1wyXDJcMlx1MDg1ZFx1MDg1ZVw1XHUwMTBhIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwODZcMlx1MDg1ZVx1MDBmZFwzXDJcMlwyXHUwODVmXHUwODYw XDVcdTAxMGNcdTAwODciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwODYwXHUwMGZmXDNc MlwyXDJcdTA4NjFcdTA4NjhcNXA5XDJcdTA4NjJcdTA4NjhcNSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMDg4RVwyXHUwODYzXHUwODY4XDVcdTAwZjh9XDJcdTA4NjRcdTA4NjhcNVx1MDEx OFx1MDA4ZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwODY1XHUwODY4XDVcdTAx MWNcdTAwOGZcMlx1MDg2Nlx1MDg2OFw1XHUwMTEwXHUwMDg5IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlx1MDg2N1x1MDg2MVwzXDJcMlwyXHUwODY3XHUwODYyXDNcMlwyXDJcdTA4NjdcdTA4 NjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODY3XHUwODY0XDNcMlwyXDJc dTA4NjdcdTA4NjVcM1wyXDJcMlx1MDg2NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODY2 XDNcMlwyXDJcdTA4NjhcdTAxMDFcM1wyXDJcMlx1MDg2OVx1MDg2ZVw1cDlcMlx1MDg2YSINCj4g KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg2ZVw1XHUwMDg4RVwyXHUwODZiXHUwODZlXDVc dTAxMThcdTAwOGRcMlx1MDg2Y1x1MDg2ZSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1 XHUwMTEwXHUwMDg5XDJcdTA4NmRcdTA4NjlcM1wyXDJcMlx1MDg2ZFx1MDg2YVwzXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA4NmRcdTA4NmJcM1wyXDJcMlx1MDg2ZFx1MDg2Y1wz XDJcMlwyXHUwODZlXHUwMTAzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA4NmZcdTA4NzBcN2xcMlwyXHUwODcwXHUwODcxXDVcdTAxMjRcdTAwOTMiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcMlx1MDg3MVx1MDg3NVw3DQo+IFwyXDJcdTA4NzJcdTA4NzRcNVx1 MDEwMFx1MDA4MVwyXHUwODczIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NzJcM1wyXDJc Mlx1MDg3NFx1MDg3N1wzXDJcMlwyXHUwODc1XHUwODczXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDg3NVx1MDg3NlwzXDJcMlwyXHUwODc2XHUwODc4XDNcMlwyXDJcdTA4Nzdc dTA4NzVcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDg3OFx1MDg3OVw3 c1wyXDJcdTA4NzlcdTA4N2FcNw0KPiBcMlwyXHUwODdhXHUwMTA1IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDg3Ylx1MDg4OFw3a1wyXDJcdTA4N2NcdTA4N2RcN0BcMlwyXHUw ODdkXHUwODdlDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA4N2VcdTA4 ODNcNVx1MDA5ZVBcMlx1MDg3Zlx1MDg4MFw3KFwyXDJcdTA4ODAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDg4Mlw1XHUwMDllUFwyXHUwODgxXHUwODdmXDNcMlwyXDJcdTA4ODJcdTA4ODVc M1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwODgzXHUwODgxXDNcMlwyXDJcdTA4 ODNcdTA4ODRcM1wyXDJcMlx1MDg4NFx1MDg4NiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwODg1XHUwODgzXDNcMlwyXDJcdTA4ODZcdTA4ODdcNyFcMlwyXHUwODg3IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4ODlcM1wyXDJcMlx1MDg4OFx1MDg3Y1wzXDJcMlwy XHUwODg4XHUwODg5XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4OVx1MDg4 YVwzXDJcMlwyXHUwODhhXHUwODhiXDVcdTAxMjRcdTAwOTNcMlx1MDg4YiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx1MDg4Y1w3DQo+IFwyXDJcdTA4OGNcdTAxMDdcM1wyXDJcMlx1MDg4 ZFx1MDg5YVw3S1wyXDJcdTA4OGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Zlw3QFwy XDJcdTA4OGZcdTA4OTBcN1xiXDJcMlx1MDg5MFx1MDg5NVw1XHUwMDllIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJQXDJcdTA4OTFcdTA4OTJcNyhcMlwyXHUwODkyXHUwODk0XDVcdTAwOWVQXDJc dTA4OTNcdTA4OTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODk0XHUwODk3 XDNcMlwyXDJcdTA4OTVcdTA4OTNcM1wyXDJcMlx1MDg5NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwODk2XDNcMlwyXDJcdTA4OTZcdTA4OThcM1wyXDJcMlx1MDg5N1x1MDg5NVwzXDJcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4OThcdTA4OTlcNyFcMlwyXHUwODk5XHUwODli XDNcMlwyXDJcdTA4OWFcdTA4OGVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw ODlhXHUwODliXDNcMlwyXDJcdTA4OWJcdTA4OWNcM1wyXDJcMlx1MDg5Y1x1MDg5ZCIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlw1XHUwMTI0XHUwMDkzXDJcdTA4OWRcdTA4OWVcNw0KPiBc MlwyXHUwODllXHUwMTA5XDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDg5Zlx1 MDhhY1w3a1wyXDJcdTA4YTBcdTA4YTFcN0BcMlwyXHUwOGExXHUwOGEyXDciKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlxiXDJcMlx1MDhhMlx1MDhhN1w1XHUwMDllUFwyXHUwOGEzXHUwOGE0XDco XDJcMlx1MDhhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGE2XDVcdTAwOWVQXDJcdTA4 YTVcdTA4YTNcM1wyXDJcMlx1MDhhNlx1MDhhOVwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTA4YTdcdTA4YTVcM1wyXDJcMlx1MDhhN1x1MDhhOFwzXDJcMlwyXHUwOGE4XHUwOGFh IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YTlcdTA4YTdcM1wyXDJc Mlx1MDhhYVx1MDhhYlw3IVwyXDJcdTA4YWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhh ZFwzXDJcMlwyXHUwOGFjXHUwOGEwXDNcMlwyXDJcdTA4YWNcdTA4YWRcM1wyXDJcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwOGFkXHUwOGFlXDNcMlwyXDJcdTA4YWVcdTA4YWZcNVx1MDEy NFx1MDA5M1wyXHUwOGFmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGIzXDcNCj4g XDJcMlx1MDhiMFx1MDhiMlw1XHUwMTAwXHUwMDgxXDJcdTA4YjFcdTA4YjAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGIyXHUwOGI1XDNcMlwyXDJcdTA4YjNcdTA4YjFcM1wy XDJcMlx1MDhiMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGI0XDNcMlwyXDJcdTA4YjRc dTA4YjZcM1wyXDJcMlx1MDhiNVx1MDhiM1wzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOGI2XHUwOGI3XDdzXDJcMlx1MDhiN1x1MDhiOFw3DQo+IFwyXDJcdTA4YjhcdTAx MGJcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwOGI5XHUwOGM2XDdLXDJcMlx1 MDhiYVx1MDhiYlw3QFwyXDJcdTA4YmJcdTA4YmMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3 XGJcMlwyXHUwOGJjXHUwOGMxXDVcdTAwOWVQXDJcdTA4YmRcdTA4YmVcNyhcMlwyXHUwOGJlIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGMwXDVcdTAwOWVQXDJcdTA4YmZcdTA4YmRc M1wyXDJcMlx1MDhjMFx1MDhjM1wzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA4 YzFcdTA4YmZcM1wyXDJcMlx1MDhjMVx1MDhjMlwzXDJcMlwyXHUwOGMyXHUwOGM0IikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YzNcdTA4YzFcM1wyXDJcMlx1MDhjNFx1 MDhjNVw3IVwyXDJcdTA4YzUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YzdcM1wy XDJcMlx1MDhjNlx1MDhiYVwzXDJcMlwyXHUwOGM2XHUwOGM3XDNcMlwyXDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDhjN1x1MDhjOFwzXDJcMlwyXHUwOGM4XHUwOGM5XDVcdTAxMjRcdTAw OTNcMlx1MDhjOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDhjZFw3IFwyXDJcdTA4 Y2FcdTA4Y2NcNVx1MDEwMFx1MDA4MVwyXHUwOGNiXHUwOGNhIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTA4Y2NcdTA4Y2ZcM1wyXDJcMlx1MDhjZFx1MDhjYlwzXDJcMlwy XHUwOGNkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGNlXDNcMlwyXDJcdTA4Y2Vc dTA4ZDBcM1wyXDJcMlx1MDhjZlx1MDhjZFwzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOGQwXHUwOGQxXDdzXDJcMlx1MDhkMVx1MDhkMlw3DQo+IFwyXDJcdTA4ZDJcdTAx MGRcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwOGQzXHUwOGQ0XDdwXDJcMlx1 MDhkNFx1MDhkNVw3XDYyXDJcMlx1MDhkNVx1MDhkNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdcYlwyXDJcdTA4ZDZcdTA4ZDdcN1x1MDBlY1wyXDJcdTA4ZDdcdTA4ZDhcN1wzMFwyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhkOFx1MDhkOVw3XHUwMGZhXDJcMlx1MDhkOVx1MDhk YVw3XDMxXDJcMlx1MDhkYVx1MDhlNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1 MDhkYlx1MDhkY1w3QFwyXDJcdTA4ZGNcdTA4ZGRcN1xiXDJcMlx1MDhkZFx1MDhlMg0KPiAiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDA5ZVBcMlx1MDhkZVx1MDhkZlw3KFwyXDJc dTA4ZGZcdTA4ZTFcNVx1MDA5ZVBcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGUwXHUw OGRlXDNcMlwyXDJcdTA4ZTFcdTA4ZTRcM1wyXDJcMlx1MDhlMlx1MDhlMFwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTA4ZTJcdTA4ZTNcM1wyXDJcMlx1MDhlM1x1MDhlNVwzXDJc MlwyXHUwOGU0XHUwOGUyIg0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwOGU1XHUwOGU2XDchXDJcMlx1MDhlNlx1MDhlOFwzXDJcMlwyXHUwOGU3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA4ZGJcM1wyXDJcMlx1MDhlN1x1MDhlOFwzXDJcMlwyXHUwOGU4XHUw OGU5XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhlOVx1MDhlYVw1XHUwMTI0 XHUwMDkzXDJcdTA4ZWFcdTA4ZWJcN3NcMlwyXHUwOGViIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOGVjXDcgXDJcMlx1MDhlY1x1MDEwZlwzXDJcMlwyXHUwOGVkXHUwOGYxXDVcdTAx MTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA4YVwyXHUwOGVlXHUwOGYxXDVcdTAxMTRc dTAwOGJcMlx1MDhlZlx1MDhmMVw1XHUwMTE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAw OGNcMlx1MDhmMFx1MDhlZFwzXDJcMlwyXHUwOGYwXHUwOGVlXDNcMlwyXDJcdTA4ZjAiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZWZcM1wyXDJcMlx1MDhmMVx1MDExMVwzXDJcMlwy XHUwOGYyXHUwOGYzXDdtXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGYzXHUwOGY0 XDdcdTAwOTZcMlwyXHUwOGY0XHUwOGY1XDdcYlwyXDJcdTA4ZjVcdTA4ZjYiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDhmNlx1MDhmN1w3IVwyXDJcdTA4ZjdcdTA4Zjhc N3RcMlwyXHUwOGY4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGY5XDdcYlwyXDJc dTA4ZjlcdTA4ZmFcN1x1MDBmYVwyXDJcdTA4ZmFcdTA4ZmJcNyAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwyXDJcdTA4ZmJcdTAxMTNcM1wyXDJcMlx1MDhmY1x1MDhmZFw3TlwyXDJcdTA4ZmRc dTA4ZmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3PVwyXDJcdTA4ZmVcdTA4ZmZcN1xiXDJc Mlx1MDhmZlx1MDkwMFw3XHUwMGVjXDJcMlx1MDkwMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOTAxXDdcMzBcMlwyXHUwOTAxXHUwOTAyXDdcdTAwZmFcMlwyXHUwOTAyXHUwOTAzXDciKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzMVwyXDJcdTA5MDNcdTA5MDRcNyFcMlwyXHUwOTA0XHUw OTA1XDc+XDJcMlx1MDkwNVx1MDkwNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XGJc MlwyXHUwOTA2XHUwOTA3XDdcdTAwZWNcMlwyXHUwOTA3XHUwOTA4XDdcMzBcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA5MDhcdTA5MDlcN1x1MDBmYVwyXDJcdTA5MDlcdTA5MGFcN1wz MVwyXDJcdTA5MGFcdTA5MTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA5MGJc dTA5MGNcNz5cMlwyXHUwOTBjXHUwOTBkXDdcYlwyXDJcdTA5MGRcdTA5MGUiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJcdTA5MGVcdTA5MGZcN1wzMFwyXDJcdTA5MGZc dTA5MTBcN1x1MDBmYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDkxMFx1MDkxMlw3 XDMxXDJcMlx1MDkxMVx1MDkwYlwzXDJcMlwyXHUwOTExXHUwOTEyIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5MTJcdTA5MTNcM1wyXDJcMlx1MDkxM1x1MDkxNFw3IFwy XDJcdTA5MTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDExNVwzXDJcMlwyXHUwOTE1XHUw OTE2XHRcYlwyXDJcdTA5MTZcdTA5MTdcN1x1MDA4NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcMlx1MDkxN1x1MDkxOFw3IVwyXDJcdTA5MThcdTA5MTlcNy9cMlwyXHUwOTE5XHUwOTFhIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDkxYVx1MDkxYlw3XHUwMGZhXDJcMlx1 MDkxYlx1MDkxY1w3IVwyXDJcdTA5MWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkxZFw3 XDYyXDJcMlx1MDkxZFx1MDkxZVw3XGJcMlwyXHUwOTFlXHUwOTFmXDdcdTAwZWMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcdTA5MWZcdTA5MjBcN1wzMFwyXDJcdTA5MjBcdTA5MjFcN1x1 MDBmYVwyXDJcdTA5MjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjJcN1wzMVwy XDJcdTA5MjJcdTA5MjNcNyFcMlwyXHUwOTIzXHUwOTI0XDc9XDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwOTI0XHUwOTI1XDdcYlwyXDJcdTA5MjVcdTA5MjZcN1x1MDBlY1wyXDJcdTA5 MjZcdTA5MjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMwXDJcMlx1MDkyN1x1MDkyOFw3 XHUwMGZhXDJcMlx1MDkyOFx1MDkzNFw3XDMxXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOTI5XHUwOTJhXDchXDJcMlx1MDkyYVx1MDkyYlw3QFwyXDJcdTA5MmJcdTA5MmNcN1xiIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwOTJjXHUwOTMxXDVcdTAwOWVQXDJcdTA5MmRc dTA5MmVcNyhcMlwyXHUwOTJlXHUwOTMwIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVc dTAwOWVQXDJcdTA5MmZcdTA5MmRcM1wyXDJcMlx1MDkzMFx1MDkzM1wzXDJcMlwyXHUwOTMxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MmZcM1wyXDJcMlx1MDkzMVx1MDkzMlwzXDJcMlwy XHUwOTMyXHUwOTM1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkzM1x1MDkz MVwzXDJcMlwyXHUwOTM0XHUwOTI5XDNcMlwyXDJcdTA5MzRcdTA5MzVcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTM1XHUwOTNhXDNcMlwyXDJcdTA5MzZcdTA5MzdcNyFcMlwy XHUwOTM3XHUwOTM4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTM4XHUwOTM5 XDdcYlwyXDJcdTA5MzlcdTA5M2JcN1x1MDBmYVwyXDJcdTA5M2EiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDkzNlwzXDJcMlwyXHUwOTNhXHUwOTNiXDNcMlwyXDJcdTA5M2JcdTA5M2NcM1wy XDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDkzY1x1MDkzZFw3IFwyXDJcdTA5 M2RcdTAxMTdcM1wyXDJcMlx1MDkzZVx1MDkzZlw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiTFwyXDJcdTA5M2ZcdTA5NDBcN1x1MDBmYVwyXDJcdTA5NDBcdTA5NDFcNyBcMlwyXHUwOTQx IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMTlcM1wyXDJcMlx1MDk0Mlx1MDk0NFw3XHUw MDg4XDJcMlx1MDk0M1x1MDk0NVw3ISIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDk0 NFx1MDk0M1wzXDJcMlwyXHUwOTQ0XHUwOTQ1XDNcMlwyXDJcdTA5NDVcdTA5NDYiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDk0Nlx1MDk0N1w3LlwyXDJcdTA5NDdcdTA5 NDhcN1xiXDJcMlx1MDk0OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTQ5XDdcdTAwZWNc MlwyXHUwOTQ5XHUwOTRhXDdcMzBcMlwyXHUwOTRhXHUwOTRiXDciKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDBmYVwyXDJcdTA5NGJcdTA5NGNcN1wzMVwyXDJcdTA5NGNcdTA5NTdcNyFcMlwy XHUwOTRkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5NGVcN1x1MDA4ZFwyXDJcdTA5NGVc dTA5NGZcN1x1MDBmYVwyXDJcdTA5NGZcdTA5NTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3 IVwyXDJcdTA5NTBcdTA5NTFcN1x1MDA4OVwyXDJcdTA5NTFcdTA5NTJcdFx0XDJcMlx1MDk1MiIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDk1OFw3DQo+IFwyXDJcdTA5NTNcdTA5NTRc N01cMlwyXHUwOTU0XHUwOTU1XDdcYlwyXDJcdTA5NTUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTA5NTZcN1x1MDBmYVwyXDJcdTA5NTZcdTA5NThcNyBcMlwyXHUwOTU3XHUwOTRkXDNc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDk1N1x1MDk1M1wzXDJcMlwyXHUwOTU4 XHUwMTFiXDNcMlwyXDJcdTA5NTlcdTA5NWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUw MGE3XDJcMlx1MDk1YVx1MDk1Ylw3W1wyXDJcdTA5NWJcdTA5NWNcN1xiXDJcMlx1MDk1YyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWE0XDVMXCdcMlx1MDk1ZFx1MDk1ZVw3IVwyXDJcdTA5 NWVcdTA5NWZcN1x1MDBhOVwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA5NWZc dTA5OWNcN1xiXDJcMlx1MDk2MFx1MDk2NFw3U1wyXDJcdTA5NjFcdTA5NjIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk2Mlx1MDk2M1w3XHUwMGZhXDJcMlx1MDk2M1x1MDk2 NVw3XDMzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTY0XHUwOTYxXDNcMlwyXDJc dTA5NjRcdTA5NjVcM1wyXDJcMlx1MDk2NVx1MDk5ZFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTA5NjZcdTA5NmFcN1RcMlwyXHUwOTY3XHUwOTY4XDdcMzJcMlwyXHUwOTY4XHUw OTY5Ig0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDk2OVx1 MDk2Ylw3XDMzXDJcMlx1MDk2YVx1MDk2N1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA5NmFcdTA5NmJcM1wyXDJcMlx1MDk2Ylx1MDk5ZFwzXDJcMlwyXHUwOTZjXHUwOTcwXDci KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlVcMlwyXHUwOTZkXHUwOTZlXDdcMzJcMlwyXHUwOTZl XHUwOTZmXDdcdTAwZmFcMlwyXHUwOTZmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw OTcxXDdcMzNcMlwyXHUwOTcwXHUwOTZkXDNcMlwyXDJcdTA5NzBcdTA5NzFcM1wyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXHUwOTcxXHUwOTlkXDNcMlwyXDJcdTA5NzJcdTA5NzZcN1Zc MlwyXHUwOTczXHUwOTc0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5NzRc dTA5NzVcN1x1MDBmYVwyXDJcdTA5NzVcdTA5NzdcN1wzM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDk3Nlx1MDk3M1wzXDJcMlwyXHUwOTc2XHUwOTc3XDNcMlwyXDJcdTA5NzdcdTA5 OWRcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTc4XHUwOTdjXDdSXDJcMlx1 MDk3OVx1MDk3YVw3XDMyXDJcMlx1MDk3YVx1MDk3YiINCj4gKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcN1x1MDBmYVwyXDJcdTA5N2JcdTA5N2RcN1wzM1wyXDJcdTA5N2NcdTA5NzlcM1wy XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTdjXHUwOTdkXDNcMlwyXDJcdTA5N2Rc dTA5OWRcM1wyXDJcMlx1MDk3ZVx1MDk4Mlw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJXXDJc Mlx1MDk3Zlx1MDk4MFw3XDMyXDJcMlx1MDk4MFx1MDk4MVw3XHUwMGZhXDJcMlx1MDk4MSIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDk4M1w3XDMzXDJcMlx1MDk4Mlx1MDk3ZlwzXDJc MlwyXHUwOTgyXHUwOTgzXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDk4M1x1 MDk5ZFwzXDJcMlwyXHUwOTg0XHUwOTg4XDdYXDJcMlx1MDk4NVx1MDk4NiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDdcMzJcMlwyXHUwOTg2XHUwOTg3XDdcdTAwZmFcMlwyXHUwOTg3XHUwOTg5 XDdcMzNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ODhcdTA5ODVcM1wyXDJcMlx1 MDk4OFx1MDk4OVwzXDJcMlwyXHUwOTg5XHUwOTlkXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcMlx1MDk4YVx1MDk4ZVw3WVwyXDJcdTA5OGJcdTA5OGNcN1wzMlwyXDJcdTA5OGNcdTA5 OGQiDQo+ICkNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwOThkXHUw OThmXDdcMzNcMlwyXHUwOThlXHUwOThiXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDk4ZVx1MDk4ZlwzXDJcMlwyXHUwOThmXHUwOTlkXDNcMlwyXDJcdTA5OTBcdTA5OTRcNyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiWlwyXDJcdTA5OTFcdTA5OTJcN1wzMlwyXDJcdTA5OTJc dTA5OTNcN1x1MDBmYVwyXDJcdTA5OTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5 OTVcN1wzM1wyXDJcdTA5OTRcdTA5OTFcM1wyXDJcMlx1MDk5NFx1MDk5NVwzXDJcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA5OTVcdTA5OWRcM1wyXDJcMlx1MDk5Nlx1MDk5YVw3XHUw MGZiXDJcMlx1MDk5N1x1MDk5OCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMyXDJc Mlx1MDk5OFx1MDk5OVw3XHUwMGZhXDJcMlx1MDk5OVx1MDk5Ylw3XDMzXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwOTlhXHUwOTk3XDNcMlwyXDJcdTA5OWFcdTA5OWJcM1wyXDJcMlx1 MDk5Ylx1MDk5ZFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5OWNcdTA5NjBc M1wyXDJcMlx1MDk5Y1x1MDk2NlwzXDJcMlwyXHUwOTljXHUwOTZjIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDk5Y1x1MDk3MlwzXDJcMlwyXHUwOTljXHUwOTc4XDNcMlwyXDJc dTA5OWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDk3ZVwzXDJcMlwyXHUwOTljXHUwOTg0 XDNcMlwyXDJcdTA5OWNcdTA5OGFcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw OTljXHUwOTkwXDNcMlwyXDJcdTA5OWNcdTA5OTZcM1wyXDJcMlx1MDk5ZFx1MDlhMVwzIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5OWVcdTA5YTBcNVx1MDExZVx1MDA5MFwyXHUw OTlmXHUwOTllXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlhMFx1MDlhM1wz XDJcMlwyXHUwOWExXHUwOTlmXDNcMlwyXDJcdTA5YTFcdTA5YTJcMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwOWEyXHUwOWE1XDNcMlwyXDJcdTA5YTNcdTA5YTFcM1wyXDJcMlx1 MDlhNFx1MDk1ZCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOWE0XHUw OWE1XDNcMlwyXDJcdTA5YTVcdTA5YWVcM1wyXDJcMlx1MDlhNiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwOWFhXDchXDJcMlx1MDlhN1x1MDlhOVw1XHUwMTFjXHUwMDhmXDJcdTA5YThcdTA5 YTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOWE5XHUwOWFjXDNcMlwyXDJc dTA5YWFcdTA5YThcM1wyXDJcMlx1MDlhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWFi XDNcMlwyXDJcdTA5YWJcdTA5YWRcM1wyXDJcMlx1MDlhY1x1MDlhYVwzXDJcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA5YWRcdTA5YWZcN1x1MDBhOFwyXDJcdTA5YWVcdTA5YTZcM1wy XDJcMlx1MDlhZVx1MDlhZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUw OWFmXHUwOWIwXDNcMlwyXDJcdTA5YjBcdTA5YjFcNyBcMlwyXHUwOWIxIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAxMWRcM1wyXDJcMlx1MDliMlx1MDliM1w3IVwyXDJcdTA5YjNcdTA5Yjdc N1x1MDBhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDliNFx1MDliNVw3XDMyXDJc Mlx1MDliNVx1MDliNlw3XHUwMGZhXDJcMlx1MDliNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOWI4XDdcMzNcMlwyXHUwOWI3XHUwOWI0XDNcMlwyXDJcdTA5YjdcdTA5YjhcM1wyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwOWI4XHUwOWJkXDNcMlwyXDJcdTA5YjlcdTA5YmFc N1wzNFwyXDJcdTA5YmFcdTA5YmMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTVlXHUw MGIwXDJcdTA5YmJcdTA5YjlcM1wyXDJcMlx1MDliY1x1MDliZlwzXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTA5YmRcdTA5YmJcM1wyXDJcMlx1MDliZFx1MDliZVwzXDJcMlwyXHUw OWJlXHUwOWMwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5YmZcdTA5 YmRcM1wyXDJcMlx1MDljMFx1MDljMVw3XGJcMlwyXHUwOWMxIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA5YzJcN1x1MDBmYVwyXDJcdTA5YzJcdTAxMWZcM1wyXDJcMlx1MDljM1x1MDljNFw1 XHUwMTIyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDkyXDJcdTA5YzRcdTA5YzVc NyBcMlwyXHUwOWM1XHUwMTIxXDNcMlwyXDJcdTA5YzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDljN1w3XHUwMGFiXDJcMlx1MDljN1x1MDEyM1wzXDJcMlwyXHUwOWM4XHUwOWNkXDVcdTAx MjgiDQo+ICkNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOTVcMlx1MDljOVx1MDljYVw3XHUw MGRjXDJcMlx1MDljYVx1MDljY1w1XHUwMTI4XHUwMDk1Ig0KPiApDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwyXHUwOWNiXHUwOWM5XDNcMlwyXDJcdTA5Y2NcdTA5Y2ZcM1wyXDJcMlx1MDlj ZFx1MDljYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOWNkXHUwOWNl XDNcMlwyXDJcdTA5Y2VcdTAxMjVcM1wyXDJcMlx1MDljZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwOWNkXDNcMlwyXDJcdTA5ZDBcdTA5ZDVcNVx1MDEyOFx1MDA5NVwyXHUwOWQxXHUwOWQy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBkY1wyXDJcdTA5ZDJcdTA5ZDRcNVx1MDEy OFx1MDA5NVwyXHUwOWQzXHUwOWQxXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDlkNFx1MDlkN1wzXDJcMlwyXHUwOWQ1XHUwOWQzXDNcMlwyXDJcdTA5ZDVcdTA5ZDYiDQo+ICkN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlkNlx1MDEyN1wzXDJcMlwyXHUwOWQ3 XHUwOWQ1XDNcMlwyXDJcdTA5ZDgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlkZFw1XHUw MTJhXHUwMDk2XDJcdTA5ZDlcdTA5ZGFcN1x1MDBkYlwyXDJcdTA5ZGFcdTA5ZA0KPiBjIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDEyYVx1MDA5NlwyXHUwOWRiXHUwOWQ5XDNcMlwyXDJc dTA5ZGNcdTA5ZGZcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwOWRkXHUwOWRi XDNcMlwyXDJcdTA5ZGRcdTA5ZGVcM1wyXDJcMlx1MDlkZVx1MDEyOSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTA5ZGZcdTA5ZGRcM1wyXDJcMlx1MDllMFx1MDllNVw1XHUwMTJj XHUwMDk3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDllMVx1MDllMlw3KFwyXDJcdTA5 ZTJcdTA5ZTRcNVx1MDEyY1x1MDA5N1wyXHUwOWUzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA5ZTFcM1wyXDJcMlx1MDllNFx1MDllN1wzXDJcMlwyXHUwOWU1XHUwOWUzXDNcMlwyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDllNVx1MDllNlwzXDJcMlwyXHUwOWU2XHUwMTJiXDNc MlwyXDJcdTA5ZTdcdTA5ZTVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOWU4 XHUwOWVkXDVcdTAxMmVcdTAwOThcMlx1MDllOVx1MDllYVw3KVwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDllYVx1MDllY1w1XHUwMTJlXHUwMDk4XDJcdTA5ZWJcdTA5ZTlcM1wyXDJc Mlx1MDllYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWVmXDNcMlwyXDJcdTA5ZWRcdTA5 ZWJcM1wyXDJcMlx1MDllZFx1MDllZVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA5ZWVcdTAxMmRcM1wyXDJcMlx1MDllZlx1MDllZFwzXDJcMlwyXHUwOWYwXHUwOWY0XDUiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEzMlx1MDA5YVwyXHUwOWYxXHUwOWYzXDVcdTAxMzBc dTAwOTlcMlx1MDlmMlx1MDlmMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwOWYzXHUwOWY2XDNcMlwyXDJcdTA5ZjRcdTA5ZjJcM1wyXDJcMlx1MDlmNCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDlmNVwzXDJcMlwyXHUwOWY1XHUwMTJmXDNcMlwyXDJcdTA5 ZjZcdTA5ZjRcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDlmN1x1MDlm OFw3XCJcMlwyXHUwOWY4XHUwOWZjXDVcdTAxMzJcdTAwOWFcMlx1MDlmOSIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx1MDlmYVw3I1wyXDJcdTA5ZmFcdTA5ZmNcNVx1MDEzMlx1MDA5YVwy XHUwOWZiXHUwOWY3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5ZmJc dTA5ZjlcM1wyXDJcMlx1MDlmY1x1MDEzMVwzXDJcMlwyXHUwOWZkIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTBhMDFcNVx1MDEzNlx1MDA5Y1wyXHUwOWZlXHUwYTAwXDVcdTAxMzRcdTAwOWJc Mlx1MDlmZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDlmZVwzXDJcMlwyXHUwYTAw XHUwYTAzXDNcMlwyXDJcdTBhMDFcdTA5ZmZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYTAxXHUwYTAyXDNcMlwyXDJcdTBhMDJcdTAxMzNcM1wyXDJcMlx1MGEwM1x1MGEwMVwz IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTBhMDRcdTBhMDVcNyVcMlwyXHUwYTA1 XHUwYTBkXDVcdTAxMzZcdTAwOWNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTA2XHUw YTA3XDckXDJcMlx1MGEwN1x1MGEwZFw1XHUwMTM2XHUwMDljXDJcdTBhMDgiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MGEwOVw3XCdcMlwyXHUwYTA5XHUwYTBkXDVcdTAxMzZcdTAwOWNcMlx1 MGEwYVx1MGEwYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDcmXDJcMlx1MGEwYlx1MGEwZFw1 XHUwMTM2XHUwMDljXDJcdTBhMGNcdTBhMDRcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXHUwYTBjXHUwYTA2XDNcMlwyXDJcdTBhMGNcdTBhMDhcM1wyXDJcMlx1MGEwY1x1MGEwYSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhMGRcdTAxMzVcM1wyXDJcMlx1MGEw ZVx1MGExMlw1XHUwMTNhXHUwMDllIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MGEwZlx1 MGExMVw1XHUwMTM4XHUwMDlkXDJcdTBhMTBcdTBhMGZcM1wyXDJcMlx1MGExMSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwYTE0XDNcMlwyXDJcdTBhMTJcdTBhMTBcM1wyXDJcMlx1MGExMlx1 MGExM1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMTNcdTAxMzdcM1wyXDJc Mlx1MGExNFx1MGExMlwzXDJcMlwyXHUwYTE1XHUwYTE2XDciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlxmXDJcMlx1MGExNlx1MGExYVw1XHUwMTNhXHUwMDllXDJcdTBhMTdcdTBhMThcN1xyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTE4XHUwYTFhXDVcdTAxM2FcdTAwOWVcMlx1 MGExOVx1MGExNVwzXDJcMlwyXHUwYTE5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMTdc M1wyXDJcMlx1MGExYVx1MDEzOVwzXDJcMlwyXHUwYTFiXHUwYTFmXDVcdTAxM2UiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDBhMFwyXHUwYTFjXHUwYTFlXDVcdTAxM2NcdTAwOWZcMlx1MGEx ZFx1MGExY1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhMWVcdTBhMjFcM1wy XDJcMlx1MGExZlx1MGExZFwzXDJcMlwyXHUwYTFmXHUwYTIwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MGEyMFx1MDEzYlwzXDJcMlwyXHUwYTIxXHUwYTFmXDNcMlwyXDJcdTBh MjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEyM1w3XDE2XDJcMlx1MGEyM1x1MGEyN1w1 XHUwMTNlXHUwMGEwXDJcdTBhMjRcdTBhMjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDM1 XDJcMlx1MGEyNVx1MGEyN1w1XHUwMTNlXHUwMGEwXDJcdTBhMjZcdTBhMjJcM1wyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYTI2XHUwYTI0XDNcMlwyXDJcdTBhMjdcdTAxM2RcM1wy XDJcMlx1MGEyOFx1MGEyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxNDJcdTAwYTJc Mlx1MGEyOVx1MGEyYlw1XHUwMTQwXHUwMGExXDJcdTBhMmFcdTBhMjkiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwYTJiXHUwYTJlXDNcMlwyXDJcdTBhMmNcdTBhMmFcM1wyXDJc Mlx1MGEyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTJkXDNcMlwyXDJcdTBhMmRcdTAx M2ZcM1wyXDJcMlx1MGEyZVx1MGEyY1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTBhMmZcdTBhMzBcN1wxN1wyXDJcdTBhMzBcdTBhMzZcNVx1MDE0Mlx1MDBhMlwyXHUwYTMxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMzJcN1wzN1wyXDJcdTBhMzJcdTBhMzZcNVx1MDE0 Mlx1MDBhMlwyXHUwYTMzXHUwYTM0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1wyMFwyXDJc dTBhMzRcdTBhMzZcNVx1MDE0Mlx1MDBhMlwyXHUwYTM1XHUwYTJmXDNcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlx1MGEzNVx1MGEzMVwzXDJcMlwyXHUwYTM1XHUwYTMzXDNcMlwyXDJc dTBhMzZcdTAxNDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTM3XHUwYTM5 XDVcdTAxNDRcdTAwYTNcMlx1MGEzOFx1MGEzN1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcdTBhMzlcdTBhM2NcM1wyXDJcMlx1MGEzYVx1MGEzOFwzXDJcMlwyXHUwYTNhXHUwYTNi IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGEzYlx1MGEzZFwzXDJcMlwyXHUw YTNjXHUwYTNhXDNcMlwyXDJcdTBhM2QiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEzZVw1 XHUwMTQ2XHUwMGE0XDJcdTBhM2VcdTAxNDNcM1wyXDJcMlx1MGEzZlx1MGE0MCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDdcMzBcMlwyXHUwYTQwXHUwYTQxXHRcblwyXDJcdTBhNDFcdTBhNDJc N1wzMVwyXDJcdTBhNDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE0NVwzXDJcMlwyXHUw YTQzXHUwYTRmXDVcdTAxNDhcdTAwYTVcMlx1MGE0NFx1MGE0ZiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDVcdTAxNGFcdTAwYTZcMlx1MGE0NVx1MGE0Zlw1XHUwMTRjXHUwMGE3XDJcdTBhNDZc dTBhNGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTRlXHUwMGE4XDJcdTBhNDdcdTBh NGZcNVx1MDE1MFx1MDBhOVwyXHUwYTQ4XHUwYTRmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc NVx1MDE2ZVx1MDBiOFwyXHUwYTQ5XHUwYTRmXDVcdTAxNzBcdTAwYjlcMlx1MGE0YVx1MGE0ZiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxODZcdTAwYzRcMlx1MGE0Ylx1MGE0Zlw1XHUw MTk2XHUwMGNjXDJcdTBhNGNcdTBhNGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGRk XDJcMlx1MGE0ZFx1MGE0Zlw1XHUwMTQ2XHUwMGE0XDJcdTBhNGVcdTBhNDNcMyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTRlXHUwYTQ0XDNcMlwyXDJcdTBhNGVcdTBhNDVcM1wy XDJcMlx1MGE0ZVx1MGE0NiINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw YTRlXHUwYTQ3XDNcMlwyXDJcdTBhNGVcdTBhNDhcM1wyXDJcMlx1MGE0ZSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwYTQ5XDNcMlwyXDJcdTBhNGVcdTBhNGFcM1wyXDJcMlx1MGE0ZVx1MGE0 YlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNGVcdTBhNGNcM1wyXDJcMlx1 MGE0Zlx1MDE0N1wzXDJcMlwyXHUwYTUwXHUwYTUxXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDBlN1wyXDJcdTBhNTFcdTBhNTJcN1wzMFwyXDJcdTBhNTJcdTBhNTNcNVx1MDEyNlx1MDA5 NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhNTNcdTBhNTRcNyFcMlwyXHUwYTU0XHUw YTU1XDVcdTAxMjZcdTAwOTRcMlx1MGE1NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTU2 XDdcMzFcMlwyXHUwYTU2XHUwMTQ5XDNcMlwyXDJcdTBhNTdcdTBhNThcN1x1MDBlNSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGE1OFx1MGE1OVw3XDMwXDJcMlx1MGE1OVx1MGE1YVw1 XHUwMTI2XHUwMDk0XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE1YVx1MGE1Ylw3IVwy XDJcdTBhNWJcdTBhNWNcNVx1MDEyNlx1MDA5NFwyXHUwYTVjIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBhNWRcN1wzMVwyXDJcdTBhNWRcdTAxNGJcM1wyXDJcMlx1MGE1ZVx1MGE1Zlw3XHUw MGU2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYTVmXHUwYTYwXDdcMzBcMlwyXHUw YTYwXHUwYTYxXDVcdTAxMjZcdTAwOTRcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTYx XHUwYTYyXDchXDJcMlx1MGE2Mlx1MGE2M1w1XHUwMTI2XHUwMDk0XDJcdTBhNjMiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTBhNjRcNyFcMlwyXHUwYTY0XHUwYTY1XDVMXCdcMlx1MGE2 NVx1MGE2Nlw3XDMxXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTY2XHUwMTRkXDNc MlwyXDJcdTBhNjdcdTBhNjhcN1wzMFwyXDJcdTBhNjhcdTBhNjkiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw1XHUwMTI2XHUwMDk0XDJcdTBhNjlcdTBhNmFcN1wzMVwyXDJcdTBhNmFcdTAxNGZc M1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYTZiXHUwYTc3XDVcdTAxNTJcdTAw YWFcMlx1MGE2Y1x1MGE3N1w1XHUwMTU0XHUwMGFiDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcdTBhNmRcdTBhNzdcNVx1MDE1Nlx1MDBhY1wyXHUwYTZlXHUwYTc3XDVcdTAxNThcdTAw YWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYTZmXHUwYTc3XDVcdTAxNWFcdTAwYWVc Mlx1MGE3MFx1MGE3N1w1XHUwMTYwXHUwMGIxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1 MGE3MVx1MGE3N1w1XHUwMTYyXHUwMGIyXDJcdTBhNzJcdTBhNzdcNVx1MDE2NFx1MDBiMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhNzNcdTBhNzdcNVx1MDE2Nlx1MDBiNFwyXHUwYTc0 XHUwYTc3XDVcdTAxNjhcdTAwYjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYTc1XHUw YTc3XDVcdTAxNmNcdTAwYjdcMlx1MGE3Nlx1MGE2YlwzXDJcMlwyXHUwYTc2IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTBhNmNcM1wyXDJcMlx1MGE3Nlx1MGE2ZFwzXDJcMlwyXHUwYTc2XHUw YTZlXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE3Nlx1MGE2ZlwzXDJcMlwy XHUwYTc2XHUwYTcwXDNcMlwyXDJcdTBhNzZcdTBhNzFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlwyXHUwYTc2XHUwYTcyXDNcMlwyXDJcdTBhNzZcdTBhNzNcM1wyXDJcMlx1MGE3Nlx1 MGE3NCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTc2XHUwYTc1XDNc MlwyXDJcdTBhNzdcdTAxNTFcM1wyXDJcMlx1MGE3OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTc5XDdcdTAwYzdcMlwyXHUwYTc5XHUwMTUzXDNcMlwyXDJcdTBhN2FcdTBhN2JcN1x1MDBj OCINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTBhN2JcdTBhN2NcN1x1MDBjOVwy XDJcdTBhN2NcdTBhN2RcN1wzMFwyXDJcdTBhN2QiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdTBhN2VcN1x1MDBmYVwyXDJcdTBhN2VcdTBhODlcN1wzMVwyXDJcdTBhN2ZcdTBhODBcNyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXCJcMlwyXHUwYTgwXHUwYThhXDdcdTAwZmFcMlwyXHUw YTgxXHUwYTgyXDckXDJcMlx1MGE4MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYThhXDdc dTAwZmFcMlwyXHUwYTgzXHUwYTg0XDclXDJcMlx1MGE4NFx1MGE4YVw3XHUwMGZhIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYTg1XHUwYTg2XDcmXDJcMlx1MGE4Nlx1MGE4YVw3XHUw MGZhXDJcMlx1MGE4NyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGE4OFw3XCdcMlwy XHUwYTg4XHUwYThhXDdcdTAwZmFcMlwyXHUwYTg5XHUwYTdmXDNcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MGE4OVx1MGE4MVwzXDJcMlwyXHUwYTg5XHUwYTgzXDNcMlwyXDJcdTBh ODlcdTBhODUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTg5XHUwYTg3XDNc MlwyXDJcdTBhOGFcdTAxNTVcM1wyXDJcMlx1MGE4YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYThjXDdcdTAwY2FcMlwyXHUwYThjXHUwYTk3XDVcdTAxNWNcdTAwYWZcMlx1MGE4ZFx1MGE4 ZSINCj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XCJcMlwyXHUwYThlXHUwYTk4XDdcdTAw ZmFcMlwyXHUwYThmXHUwYTkwXDckXDJcMlx1MGE5MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTk4XDdcdTAwZmFcMlwyXHUwYTkxXHUwYTkyXDclXDJcMlx1MGE5Mlx1MGE5OFw3XHUwMGZh IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYTkzXHUwYTk0XDcmXDJcMlx1MGE5NFx1 MGE5OFw3XHUwMGZhXDJcMlx1MGE5NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTk2XDdc J1wyXDJcdTBhOTZcdTBhOThcN1x1MDBmYVwyXDJcdTBhOTdcdTBhOGRcM1wyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXHUwYTk3XHUwYThmXDNcMlwyXDJcdTBhOTdcdTBhOTFcM1wyXDJc Mlx1MGE5N1x1MGE5MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhOTdcdTBh OTVcM1wyXDJcMlx1MGE5OFx1MDE1N1wzXDJcMlwyXHUwYTk5IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBhOWFcN1x1MDBjYlwyXDJcdTBhOWFcdTBhYTVcNVx1MDE1Y1x1MDBhZlwyXHUwYTli XHUwYTljIg0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XCJcMlwyXHUwYTljXHUw YWE2XDVcdTAxNWNcdTAwYWZcMlx1MGE5ZFx1MGE5ZVw3JFwyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlx1MGE5ZVx1MGFhNlw1XHUwMTVjXHUwMGFmXDJcdTBhOWZcdTBhYTBcNyVcMlwyXHUw YWEwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhYTZcNVx1MDE1Y1x1MDBhZlwyXHUwYWEx XHUwYWEyXDcmXDJcMlx1MGFhMlx1MGFhNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAx NWNcdTAwYWZcMlx1MGFhM1x1MGFhNFw3XCdcMlwyXHUwYWE0XHUwYWE2XDVcdTAxNWMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDBhZlwyXHUwYWE1XHUwYTliXDNcMlwyXDJcdTBhYTVcdTBh OWRcM1wyXDJcMlx1MGFhNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTlmXDNcMlwyXDJc dTBhYTVcdTBhYTFcM1wyXDJcMlx1MGFhNVx1MGFhM1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTBhYTZcdTAxNTlcM1wyXDJcMlx1MGFhN1x1MGFhOFw3XHUwMGNjXDJcMlx1MGFh OFx1MGFhOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxNWNcdTAwYWZcMlx1MGFhOVx1 MGFhYlw3XCJcMlwyXHUwYWFhXHUwYWFjXDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTBhYWJcdTBhYWFcM1wyXDJcMlx1MGFhY1x1MGFhZFwzXDJcMlwyXHUwYWFkXHUwYWFi IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFhZFx1MGFhZVwzXDJcMlwyXHUw YWFlXHUwMTViXDNcMlwyXDJcdTBhYWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFiMFw3 XHUwMGZiXDJcMlx1MGFiMFx1MGFiMVw3XDMyXDJcMlx1MGFiMVx1MGFiMlw3IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MGFiMlx1MGFiY1w3XDMzXDJcMlx1MGFiM1x1 MGFiOFw3XHUwMGZiXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYWI0XHUwYWI1XDdc MzRcMlwyXHUwYWI1XHUwYWI3XDVcdTAxNWVcdTAwYjBcMlx1MGFiNiINCj4gKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MGFiNFwzXDJcMlwyXHUwYWI3XHUwYWJhXDNcMlwyXDJcdTBhYjhcdTBh YjZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWI4XHUwYWI5XDNcMlwyXDJc dTBhYjlcdTBhYmNcM1wyXDJcMlx1MGFiYVx1MGFiOFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTBhYmJcdTBhYWZcM1wyXDJcMlx1MGFiYlx1MGFiM1wzXDJcMlwyXHUwYWJjXHUw MTVkIg0KPiApDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYWJkXHUwYWMx XDdcdTAwZmJcMlwyXHUwYWJlXHUwYWJmXDdcMzJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTBhYmZcdTBhYzBcN1x1MDBmYVwyXDJcdTBhYzBcdTBhYzJcN1wzM1wyXDJcdTBhYzFcdTBh YmUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFjMVx1MGFjMlwzXDJc MlwyXHUwYWMyXHUwMTVmXDNcMlwyXDJcdTBhYzMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdTBhYzRcN1x1MDBjZFwyXDJcdTBhYzRcdTBhYzVcN1wzMFwyXDJcdTBhYzVcdTBhYzZcdCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDEzXDJcMlx1MGFjNlx1MGFjN1w3XDMxXDJcMlx1MGFj N1x1MDE2MVwzXDJcMlwyXHUwYWM4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWM5 XDdcdTAwY2VcMlwyXHUwYWM5XHUwYWNhXDdcMzBcMlwyXHUwYWNhXHUwYWNiXDciKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTBhY2JcdTBhY2NcN1wzMVwyXDJcdTBhY2NcdTAx NjNcM1wyXDJcMlx1MGFjZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGFjZVw3XHUw MGNmXDJcMlx1MGFjZVx1MGFkNFw3XDMwXDJcMlx1MGFjZlx1MGFkMFw3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAwZWNcMlwyXHUwYWQwXHUwYWQxXDdcMzBcMlwyXHUwYWQxXHUwYWQyXDdc dTAwZmFcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhZDJcdTBhZDVcN1wzMVwyXDJc dTBhZDNcdTBhZDVcN1x1MDBmYVwyXDJcdTBhZDQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MGFjZlwzXDJcMlwyXHUwYWQ0XHUwYWQzXDNcMlwyXDJcdTBhZDVcdTBhZDZcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWQ2XHUwYWQ3XDdcMzFcMlwyXHUwYWQ3XHUwMTY1XDNc MlwyXDJcdTBhZDhcdTBhZDkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGQwXDJcMlx1 MGFkOVx1MDE2N1wzXDJcMlwyXHUwYWRhXHUwYWRiXDdcdTAwZDFcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcdTBhZGJcdTBhZGNcN1wzMFwyXDJcdTBhZGNcdTBhZGRcNUxcJ1wyXHUwYWRk XHUwYWRlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1wzMVwyXDJcdTBhZGVcdTAxNjlcM1wy XDJcMlx1MGFkZlx1MGFlMFx0XGZcMlwyXHUwYWUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAxNmJcM1wyXDJcMlx1MGFlMVx1MGFlMlw3XHUwMGQyXDJcMlx1MGFlMlx1MGFlM1w3XDMwIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MGFlM1x1MGFlOFw1WC0NCj4gXDJcdTBh ZTRcdTBhZTVcNyhcMlwyXHUwYWU1XHUwYWU2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN0Bc MlwyXHUwYWU2XHUwYWU3XDdcYlwyXDJcdTBhZTdcdTBhZTlcNVx1MDE2YVx1MDBiNiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhZThcdTBhZTRcM1wyXDJcMlx1MGFlOFx1MGFlOVwzXDJc MlwyXHUwYWU5XHUwYWVhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFlYVx1 MGFlYlw3XDMxXDJcMlx1MGFlYlx1MDE2ZFwzXDJcMlwyXHUwYWVjIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXHUwYWVkXHRcclwyXDJcdTBhZWRcdTAxNmZcM1wyXDJcMlx1MGFlZVx1MGFm OVw1XHUwMTcyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYmFcMlx1MGFlZlx1MGFmOVw1 XHUwMTc0XHUwMGJiXDJcdTBhZjBcdTBhZjlcNVx1MDE3NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMGJjXDJcdTBhZjFcdTBhZjlcNVx1MDE3OFx1MDBiZFwyXHUwYWYyXHUwYWY5XDVcdTAx N2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBiZVwyXHUwYWYzXHUwYWY5XDVcdTAxN2Nc dTAwYmZcMlx1MGFmNFx1MGFmOVw1XHUwMTdlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAw YzBcMlx1MGFmNVx1MGFmOVw1XHUwMTgwXHUwMGMxXDJcdTBhZjZcdTBhZjlcNVx1MDE4MiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGMyXDJcdTBhZjdcdTBhZjlcNVx1MDE4NFx1MDBjM1wy XHUwYWY4XHUwYWVlXDNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhZjhc dTBhZWZcM1wyXDJcMlx1MGFmOFx1MGFmMFwzXDJcMlwyXHUwYWY4XHUwYWYxIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhZjhcdTBhZjJcM1wyXDJcMlx1MGFmOFx1MGFm M1wzXDJcMlwyXHUwYWY4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWY0XDNcMlwy XDJcdTBhZjhcdTBhZjVcM1wyXDJcMlx1MGFmOFx1MGFmNlwzXDJcMlwyIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYWY4XHUwYWY3XDNcMlwyXDJcdTBhZjlcdTAxNzFcM1wyXDJcMlx1 MGFmYVx1MGFmYlw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZGFcMlwyXHUwYWZiXHUw YWZjXDdcMzBcMlwyXHUwYWZjXHUwYWZkXDVcdTAxMjZcdTAwOTQiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcMlx1MGFmZFx1MGFmZVw3XDMxXDJcMlx1MGFmZVx1MDE3M1wzXDJcMlwyXHUw YWZmXHUwYjAwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBkZlwyXDJcdTBiMDBcdTBi MDFcN1wzMFwyXDJcdTBiMDFcdTBiMDJcNVx1MDEyNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMDk0XDJcdTBiMDJcdTBiMDNcN1wzMVwyXDJcdTBiMDNcdTAxNzVcM1wyXDJcMlx1MGIwNCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjA1XDdcdTAwZThcMlwyXHUwYjA1XHUwYjBkXDdc MzBcMlwyXHUwYjA2XHUwYjA3XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIipcMlwyXHUwYjA3 XHUwYjA4XDdcYlwyXDJcdTBiMDhcdTBiMDlcN1x1MDBlY1wyXDJcdTBiMDkiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MGIwYVw3XDMwXDJcMlx1MGIwYVx1MGIwYlw3XHUwMGZhXDJcMlx1MGIw Ylx1MGIwY1w3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwYjBjXHUwYjBlXDch XDJcMlx1MGIwZFx1MGIwNlwzXDJcMlwyXHUwYjBkXHUwYjBlIg0KPiApDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYjBlXHUwYjE0XDNcMlwyXDJcdTBiMGZcdTBiMTBcN1tc MlwyXHUwYjEwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiMTFcN1xiXDJcMlx1MGIxMVx1 MGIxMlw1TFwnXDJcdTBiMTJcdTBiMTNcNyFcMlwyXHUwYjEzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBiMTVcM1wyXDJcMlx1MGIxNFx1MGIwZlwzXDJcMlwyXHUwYjE0XHUwYjE1XDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGIxNVx1MGIxNlwzXDJcMlwyXHUwYjE2XHUw YjE3XDVcdTAxMjZcdTAwOTRcMlx1MGIxNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjE4 XDdcMzFcMlwyXHUwYjE4XHUwMTc3XDNcMlwyXDJcdTBiMTlcdTBiMWFcN1x1MDBlOSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGIxYVx1MGIxYlw3XDMwXDJcMlx1MGIxYlx1MGIxY1w1 XHUwMTI2XHUwMDk0XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGIxY1x1MGIxZFw3XDMx XDJcMlx1MGIxZFx1MDE3OVwzXDJcMlwyXHUwYjFlXHUwYjFmIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN1x1MDBlMFwyXDJcdTBiMWZcdTBiMjBcN1wzMFwyXDJcdTBiMjBcdTBiMjFcNVx1MDEy NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiMjFcdTBiMjJcN1wzMVwyXDJc dTBiMjJcdTAxN2JcM1wyXDJcMlx1MGIyMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjI4 XDdcdTAwZTFcMlwyXHUwYjI0XHUwYjI1XDdcMjFcMlwyXHUwYjI1XHUwYjI2XDciKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlxiXDJcMlx1MGIyNlx1MGIyN1w3XHUwMGZhXDJcMlx1MGIyN1x1MGIy OVw3IVwyXDJcdTBiMjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGIyNFwzXDJcMlwyXHUw YjI4XHUwYjI5XDNcMlwyXDJcdTBiMjlcdTBiMmFcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwYjJhXHUwYjJiXDdcMzBcMlwyXHUwYjJiXHUwYjJjXDVcdTAxMjZcdTAwOTRcMlx1 MGIyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjJkXDdcMzFcMlwyXHUwYjJkXHUwMTdk XDNcMlwyXDJcdTBiMmVcdTBiMmZcN1x1MDBlMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MGIyZlx1MGIzMFw3XDMwXDJcMlx1MGIzMFx1MGIzMVw1XHUwMTI2XHUwMDk0XDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MGIzMVx1MGIzMlw3XDMxXDJcMlx1MGIzMlx1MDE3ZlwzXDJc MlwyXHUwYjMzXHUwYjM0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBlM1wyXDJcdTBi MzRcdTBiMzVcN1wzMFwyXDJcdTBiMzVcdTBiMzZcNVx1MDEyNiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMDk0XDJcdTBiMzZcdTBiMzdcN1wzMVwyXDJcdTBiMzdcdTAxODFcM1wyXDJcMlx1 MGIzOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjM5XDdcdTAwZTRcMlwyXHUwYjM5XHUw YjNhXDdcMzBcMlwyXHUwYjNhXHUwYjNiXDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEy Nlx1MDA5NFwyXHUwYjNiXHUwYjNjXDdcMzFcMlwyXHUwYjNjXHUwMTgzXDNcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlx1MGIzZFx1MGIzZVw3XHUwMGRlXDJcMlx1MGIzZVx1MGIzZlw3 XDMwXDJcMlx1MGIzZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGI0NFw1WC0NCj4g XDJcdTBiNDBcdTBiNDFcNyhcMlwyXHUwYjQxXHUwYjQyXDdAXDJcMlx1MGI0MiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwYjQzXDdcYlwyXDJcdTBiNDNcdTBiNDVcNVx1MDE2YVx1MDBiNlwy XHUwYjQ0XHUwYjQwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI0NFx1MGI0 NVwzXDJcMlwyXHUwYjQ1XHUwYjQ2XDNcMlwyXDJcdTBiNDYiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MGI0N1w3IVwyXDJcdTBiNDdcdTBiNDhcNVx1MDEyNlx1MDA5NFwyXHUwYjQ4XHUwYjQ5 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1wzMVwyXDJcdTBiNDlcdTAxODVcM1wyXDJcMlx1 MGI0YVx1MGI1MFw1XHUwMTg4XHUwMGM1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MGI0 Ylx1MGI1MFw1XHUwMThhXHUwMGM2XDJcdTBiNGNcdTBiNTBcNVx1MDE4ZVx1MDBjOCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBiNGRcdTBiNTBcNVx1MDE5MFx1MDBjOVwyXHUwYjRlXHUw YjUwXDVcdTAxOTJcdTAwY2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYjRmXHUwYjRh XDNcMlwyXDJcdTBiNGZcdTBiNGJcM1wyXDJcMlx1MGI0Zlx1MGI0YyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTBiNGZcdTBiNGRcM1wyXDJcMlx1MGI0Zlx1MGI0ZVwzXDJcMlwy XHUwYjUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxODdcM1wyXDJcMlx1MGI1MVx1MGI1 Mlw3XHUwMGMyXDJcMlx1MGI1Mlx1MGI1M1w3XDMwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXHUwYjUzXHUwYjU0XDVcdTAxMjZcdTAwOTRcMlx1MGI1NFx1MGI1NVw3XDIyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjU1XHUwYjU2XDVcdTAxMjZcdTAwOTRcMlx1MGI1Nlx1 MGI1N1w3XDM2XDJcMlx1MGI1NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjU4XDVcdTAx MjZcdTAwOTRcMlx1MGI1OFx1MGI1OVw3XDMxXDJcMlx1MGI1OVx1MDE4OSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNWFcdTBiNWJcN1x1MDBjM1wyXDJcdTBiNWJcdTBiNWNc N1wzMFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGI1Y1x1MGI2MVw1XHUwMThjXHUw MGM3XDJcdTBiNWRcdTBiNWVcNyhcMlwyXHUwYjVlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTBiNjBcNVx1MDE4Y1x1MDBjN1wyXHUwYjVmXHUwYjVkXDNcMlwyXDJcdTBiNjBcdTBiNjMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYjYxXHUwYjVmXDNcMlwyXDJcdTBiNjFc dTBiNjJcM1wyXDJcMlx1MGI2MiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGI2NFwz XDJcMlwyXHUwYjYzXHUwYjYxXDNcMlwyXDJcdTBiNjRcdTBiNjVcNyFcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTBiNjVcdTBiNjZcNVx1MDEyNlx1MDA5NFwyXHUwYjY2XHUwYjY3XDch XDJcMlx1MGI2NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjY4XDVcdTAxMjZcdTAwOTRc Mlx1MGI2OFx1MGI2OVw3IVwyXDJcdTBiNjlcdTBiNmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw1XHUwMTI2XHUwMDk0XDJcdTBiNmFcdTBiNmJcN1wzMVwyXDJcdTBiNmJcdTAxOGJcM1wyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYjZjXHUwYjZkXHRcMTZcMlwyXHUwYjZkXHUw MThkXDNcMlwyXDJcdTBiNmVcdTBiNmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGM0 XDJcMlx1MGI2Zlx1MGI3MFw3XDMwXDJcMlx1MGI3MFx1MGI3MVw1XHUwMTI2IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAwOTRcMlx1MGI3MVx1MGI3Mlw3IVwyXDJcdTBiNzJcdTBiNzNcNVx1 MDEyNlx1MDA5NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBiNzNcdTBiNzRcNyFcMlwy XHUwYjc0XHUwYjc1XDVcdTAxMjZcdTAwOTRcMlx1MGI3NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYjc2XDdcMzFcMlwyXHUwYjc2XHUwMThmXDNcMlwyXDJcdTBiNzdcdTBiNzhcN1x1MDBj NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGI3OFx1MGI3OVw3XDMwXDJcMlx1MGI3 OVx1MGI3YVw1XHUwMTI2XHUwMDk0XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGI3YVx1 MGI3Ylw3IVwyXDJcdTBiN2JcdTBiN2NcNVx1MDEyNlx1MDA5NFwyXHUwYjdjIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTBiN2RcNyFcMlwyXHUwYjdkXHUwYjdlXDVcdTAxMjZcdTAwOTRcMlx1 MGI3ZVx1MGI3ZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGI3Zlx1 MDE5MVwzXDJcMlwyXHUwYjgwXHUwYjgxXDdcdTAwYzZcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBiODFcdTBiODJcN1wzMFwyXDJcdTBiODJcdTBiODNcN0BcMlwyXHUwYjgzXHUwYjg0 XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxiXDJcMlx1MGI4NFx1MGI4OVw1XHUwMTk0XHUw MGNiXDJcdTBiODVcdTBiODZcNyhcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiODZc dTBiODhcNVx1MDE5NFx1MDBjYlwyXHUwYjg3XHUwYjg1XDNcMlwyXDJcdTBiODgiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MGI4YlwzXDJcMlwyXHUwYjg5XHUwYjg3XDNcMlwyXDJcdTBiODlc dTBiOGFcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjhhXHUwYjhjXDNcMlwy XDJcdTBiOGJcdTBiODlcM1wyXDJcMlx1MGI4Y1x1MGI4ZFw3IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCIhXDJcMlx1MGI4ZFx1MGI4ZVw1XHUwMTI2XHUwMDk0XDJcdTBiOGVcdTBiOGZcNyFcMlwy XHUwYjhmIg0KPiApDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjkwXDVcdTAxMjZcdTAwOTRc Mlx1MGI5MFx1MGI5MVw3IVwyXDJcdTBiOTFcdTBiOTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw1XHUwMTI2XHUwMDk0XDJcdTBiOTJcdTBiOTNcN1wzMVwyXDJcdTBiOTNcdTAxOTNcM1wyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYjk0XHUwYjk1XHRcMTdcMlwyXHUwYjk1XHUw MTk1XDNcMlwyXDJcdTBiOTZcdTBiOTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGVh XDJcMlx1MGI5N1x1MGI5OFw3XDMwXDJcMlx1MGI5OFx1MGI5OVw1XHUwMTI2IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAwOTRcMlx1MGI5OVx1MGJhMVw3XDM2XDJcMlx1MGI5YVx1MGI5Ylw1 XHUwMTI0XHUwMDkzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MGI5Ylx1MGI5Y1w3IVwy XDJcdTBiOWNcdTBiOWRcNVx1MDEyNFx1MDA5M1wyXHUwYjlkIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwYjllXDcgXDJcMlx1MGI5ZVx1MGJhMFwzXDJcMlwyXHUwYjlmXHUwYjlhXDNc MlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGJhMFx1MGJhM1wzXDJcMlwyXHUwYmEx XHUwYjlmXDNcMlwyXDJcdTBiYTFcdTBiYTJcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwYmEyXHUwYmE0XDNcMlwyXDJcdTBiYTNcdTBiYTFcM1wyXDJcMlx1MGJhNFx1MGJhNSIN Cj4gKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGJhNVx1MDE5N1wzXDJcMlwy XHUwMGYxXHUwMTliXHUwMTlkXHUwMWExIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYThc dTAxYWNcdTAxYWZcdTAxYjdcdTAxYmNcdTAxYzBcdTAxYzNcdTAxYzlcdTAxY2UiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDFkMlx1MDFkNVx1MDFkYlx1MDFlZFx1MDFlZlx1MDFmN1x1MDIw MFx1MDIwOVx1MDIxMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjFiXHUwMjI0XHUwMjJk XHUwMjM2XHUwMjNmXHUwMjQ4XHUwMjRlXHUwMjU2XHUwMjVlIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAyNjZcdTAyODRcdTAyOGJcdTAyOTJcdTAyOWJcdTAyOWZcdTAyYTNcdTAyYWFcdTAy YjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJjMVx1MDJkMFx1MDJlNVx1MDJlYlx1MDMw N1x1MDMwZFx1MDMxNlx1MDMyOVx1MDMzOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzQ0 XHUwMzc1XHUwMzg1XHUwMzhjXHUwMzkyXHUwM2FhXHUwM2I1XHUwM2I4XHUwM2JiIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAzZTJcdTAzZTZcdTAzZjNcdTAzZmFcdTA0MGNcdTA0MjFcdTA0 MzZcdTA0M2NcdTA0NTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ1Zlx1MDQ2M1x1MDQ2 OFx1MDQ2ZVx1MDQ3MVx1MDQ3NVx1MDQ3OVx1MDQ4MFx1MDQ5YSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNGE0XHUwNGFjXHUwNGIwXHUwNGI2XHUwNGJhXHUwNGU4XHUwNGVjXHUwNGYzXHUw NGY5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ZmRcdTA1MDZcdTA1MGJcdTA1MTdcdTA1 MjJcdTA1MmZcdTA1NDBcdTA1NDVcdTA1NGEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU1 Ylx1MDU2MFx1MDU2NVx1MDU2ZFx1MDU4ZFx1MDU5Mlx1MDU5N1x1MDVhMVx1MDVhYiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNWI3XHUwNWJjXHUwNWMxXHUwNWNkXHUwNWQyXHUwNWQ3XHUw NWUxXHUwNWU3XHUwNjAyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MDhcdTA2MTJcdTA2 MjBcdTA2MmRcdTA2MzJcdTA2MzZcdTA2NDFcdTA2NDdcdTA2NTIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDY1Ylx1MDY2NVx1MDY3N1x1MDY3Y1x1MDY4MFx1MDY4Ylx1MDY5MVx1MDY5Ylx1 MDZhMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmFhXHUwNmIxXHUwNmJkXHUwNmM4XHUw NmNiXHUwNmQ2XHUwNmRiXHUwNmU1XHUwNmViIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2 ZmVcdTA3MDRcdTA3MGVcdTA3MTRcdTA3MjJcdTA3MmRcdTA3MzJcdTA3M2JcdTA3NDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDc0ZFx1MDc1NFx1MDc1ZVx1MDdhOVx1MDdhZVx1MDdiMVx1 MDdjMlx1MDdjOFx1MDdjZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2RjXHUwODI3XHUw ODJjXHUwODJmXHUwODQwXHUwODQ2XHUwODRkXHUwODU2XHUwODY3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA4NmRcdTA4NzVcdTA4ODNcdTA4ODhcdTA4OTVcdTA4OWFcdTA4YTdcdTA4YWNc dTA4YjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhjMVx1MDhjNlx1MDhjZFx1MDhlMlx1 MDhlN1x1MDhmMFx1MDkxMVx1MDkzMVx1MDkzNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw OTNhXHUwOTQ0XHUwOTU3XHUwOTY0XHUwOTZhXHUwOTcwXHUwOTc2XHUwOTdjXHUwOTgyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ODhcdTA5OGVcdTA5OTRcdTA5OWFcdTA5OWNcdTA5YTFc dTA5YTRcdTA5YWFcdTA5YWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDliN1x1MDliZFx1 MDljZFx1MDlkNVx1MDlkZFx1MDllNVx1MDllZFx1MDlmNFx1MDlmYiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYTAxXHUwYTBjXHUwYTEyXHUwYTE5XHUwYTFmXHUwYTI2XHUwYTJjXHUwYTM1 XHUwYTNhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNGVcdTBhNzZcdTBhODlcdTBhOTdc dTBhYTVcdTBhYWRcdTBhYjhcdTBhYmJcdTBhYzEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MGFkNFx1MGFlOFx1MGFmOFx1MGIwZFx1MGIxNFx1MGIyOFx1MGI0NFx1MGI0Zlx1MGI2MSIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGI4OVx1MGJhMSIpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gYnVmLmdldHZhbHVlKCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJT eW50YXhQYXJzZXIgKCBQYXJzZXIgKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZ3JhbW1hckZpbGVO YW1lID0gIlZmclN5bnRheC5nNCINCj4gDQo+ICsNCj4gDQo+ICsgICAgYXRuID0gQVRORGVzZXJp YWxpemVyKCkuZGVzZXJpYWxpemUoc2VyaWFsaXplZEFUTigpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWNpc2lvbnNUb0RGQSA9IFsgREZBKGRzLCBpKSBmb3IgaSwgZHMgaW4gZW51bWVyYXRlKGF0 bi5kZWNpc2lvblRvU3RhdGUpIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgc2hhcmVkQ29udGV4dENh Y2hlID0gUHJlZGljdGlvbkNvbnRleHRDYWNoZSgpDQo+IA0KPiArDQo+IA0KPiArICAgIGxpdGVy YWxOYW1lcyA9IFsgIjxJTlZBTElEPiIsICInc2hvdyciLCAiJ3B1c2gnIiwgIidwb3AnIiwgIicj cHJhZ21hJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidwYWNrJyIsICInPSciLCAi J0lNQUdFX1RPS0VOJyIsICInSE9SSVpPTlRBTCciLA0KPiAiJ01VTFRJX0xJTkUnIiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAiJzw8JyIsICInPj4nIiwgIicrJyIsICInKiciLCAiJyUn IiwgIidmb3JtYXQnIiwgIic/JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIicjZGVm aW5lJyIsICInI2luY2x1ZGUnIiwgIidmb3JtcGtndHlwZSciLCAiJ3snIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAiJ30nIiwgIicoJyIsICInKSciLCAiJ1snIiwgIiddJyIsICInLici LCAiJy0nIiwgIic6JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIicvJyIsICInOyci LCAiJywnIiwgIic9PSciLCAiJyE9JyIsICInPD0nIiwgIic8JyIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgIic+PSciLCAiJz4nIiwgIid8JyIsICInJiciLCAiJ2RldmljZXBhdGgnIiwg Iidmb3Jtc2V0JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidmb3Jtc2V0aWQnIiwg IidlbmRmb3Jtc2V0JyIsICIndGl0bGUnIiwgIidmb3JtaWQnIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAiJ29uZW9mJyIsICInZW5kb25lb2YnIiwgIidwcm9tcHQnIiwgIidvcmRlcmVk bGlzdCciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInbWF4Y29udGFpbmVycyciLCAi J2VuZGxpc3QnIiwgIidlbmRmb3JtJyIsICInZm9ybSciLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICInZm9ybW1hcCciLCAiJ21hcHRpdGxlJyIsICInbWFwZ3VpZCciLCAiJ3N1YnRpdGxl JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidlbmRzdWJ0aXRsZSciLCAiJ2hlbHAn IiwgIid0ZXh0JyIsICInb3B0aW9uJyIsICInZmxhZ3MnIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAiJ2RhdGUnIiwgIidlbmRkYXRlJyIsICIneWVhciciLCAiJ21vbnRoJyIsICInZGF5 JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIid0aW1lJyIsICInZW5kdGltZSciLCAi J2hvdXInIiwgIidtaW51dGUnIiwgIidzZWNvbmQnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAiJ2dyYXlvdXRpZiciLCAiJ2xhYmVsJyIsICIndGltZW91dCciLCAiJ2ludmVudG9yeSci LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInX05PTl9OVl9EQVRBX01BUCciLCAiJ3N0 cnVjdCciLCAiJ3VuaW9uJyIsICInQk9PTEVBTiciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICInVUlOVDY0JyIsICInVUlOVDMyJyIsICInVUlOVDE2JyIsICInVUlOVDgnIiwgIidFRklf U1RSSU5HX0lEJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidFRklfSElJX0RBVEUn IiwgIidFRklfSElJX1RJTUUnIiwgIidFRklfSElJX1JFRiciLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICInZ3VpZCciLCAiJ2NoZWNrYm94JyIsICInZW5kY2hlY2tib3gnIiwgIidudW1l cmljJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidlbmRudW1lcmljJyIsICInbWlu aW11bSciLCAiJ21heGltdW0nIiwgIidzdGVwJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgIidkZWZhdWx0JyIsICIncGFzc3dvcmQnIiwgIidlbmRwYXNzd29yZCciLCAiJ3N0cmluZyci LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInZW5kc3RyaW5nJyIsICInbWluc2l6ZSci LCAiJ21heHNpemUnIiwgIidlbmNvZGluZyciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICInc3VwcHJlc3NpZiciLCAiJ2Rpc2FibGVpZiciLCAiJ2hpZGRlbiciLCAiJ2dvdG8nIiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ2Zvcm1zZXRndWlkJyIsICInaW5jb25zaXN0ZW50 aWYnIiwgIid3YXJuaW5naWYnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ25vc3Vi bWl0aWYnIiwgIidlbmRpZiciLCAiJ2tleSciLCAiJ0RFRkFVTFQnIiwNCj4gIidNQU5VRkFDVFVS SU5HJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidDSEVDS0JPWF9ERUZBVUxUJyIs ICInQ0hFQ0tCT1hfREVGQVVMVF9NRkcnIiwNCj4gIidJTlRFUkFDVElWRSciLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICInTlZfQUNDRVNTJyIsICInUkVTRVRfUkVRVUlSRUQnIiwgIidS RUNPTk5FQ1RfUkVRVUlSRUQnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ0xBVEVf Q0hFQ0snIiwgIidSRUFEX09OTFknIiwgIidPUFRJT05TX09OTFknIiwNCj4gIidSRVNUX1NUWUxF JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidjbGFzcyciLCAiJ3N1YmNsYXNzJyIs ICInY2xhc3NndWlkJyIsICIndHlwZWRlZiciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICIncmVzdG9yZSciLCAiJ3NhdmUnIiwgIidkZWZhdWx0cyciLCAiJ2Jhbm5lciciLCAiJ2FsaWdu JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidsZWZ0JyIsICIncmlnaHQnIiwgIidj ZW50ZXInIiwgIidsaW5lJyIsICInbmFtZSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICIndmFyaWQnIiwgIidxdWVzdGlvbiciLCAiJ3F1ZXN0aW9uaWQnIiwgIidpbWFnZSciLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICInbG9ja2VkJyIsICIncnVsZSciLCAiJ2VuZHJ1bGUn IiwgIid2YWx1ZSciLCAiJ3JlYWQnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ3dy aXRlJyIsICIncmVzZXRidXR0b24nIiwgIidlbmRyZXNldGJ1dHRvbiciLCAiJ2RlZmF1bHRzdG9y ZSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInYXR0cmlidXRlJyIsICIndmFyc3Rv cmUnIiwgIidlZml2YXJzdG9yZSciLCAiJ3ZhcnNpemUnIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAiJ25hbWV2YWx1ZXZhcnN0b3JlJyIsICInYWN0aW9uJyIsICInY29uZmlnJyIsICIn ZW5kYWN0aW9uJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidyZWZyZXNoJyIsICIn aW50ZXJ2YWwnIiwgIid2YXJzdG9yZWRldmljZSciLCAiJ2d1aWRvcCciLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICInZW5kZ3VpZG9wJyIsICInZGF0YXR5cGUnIiwgIidkYXRhJyIsICIn bW9kYWwnIiwgIidOT05fREVWSUNFJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidE SVNLX0RFVklDRSciLCAiJ1ZJREVPX0RFVklDRSciLCAiJ05FVFdPUktfREVWSUNFJyIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgIidJTlBVVF9ERVZJQ0UnIiwgIidPTkJPQVJEX0RFVklD RSciLCAiJ09USEVSX0RFVklDRSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInU0VU VVBfQVBQTElDQVRJT04nIiwgIidHRU5FUkFMX0FQUExJQ0FUSU9OJyIsDQo+ICInRlJPTlRfUEFH RSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInU0lOR0xFX1VTRSciLCAiJ1lFQVJf U1VQUFJFU1MnIiwgIidNT05USF9TVVBQUkVTUyciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICInREFZX1NVUFBSRVNTJyIsICInSE9VUl9TVVBQUkVTUyciLCAiJ01JTlVURV9TVVBQUkVT UyciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInU0VDT05EX1NVUFBSRVNTJyIsICIn U1RPUkFHRV9OT1JNQUwnIiwNCj4gIidTVE9SQUdFX1RJTUUnIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAiJ1NUT1JBR0VfV0FLRVVQJyIsICInVU5JUVVFJyIsICInTk9FTVBUWSciLCAi J2NvbmQnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ2ZpbmQnIiwgIidtaWQnIiwg Iid0b2tlbiciLCAiJ3NwYW4nIiwgIidkdXAnIiwgIid2YXJlcXZhbCciLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICIndmFyJyIsICInaWRlcXZhbCciLCAiJ2lkZXFpZCciLCAiJ2lkZXF2 YWxsaXN0JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidxdWVzdGlvbnJlZiciLCAi J3J1bGVyZWYnIiwgIidzdHJpbmdyZWYnIiwgIidwdXNodGhpcyciLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICInc2VjdXJpdHknIiwgIidnZXQnIiwgIidUUlVFJyIsICInRkFMU0UnIiwg IidPTkUnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ09ORVMnIiwgIidaRVJPJyIs ICInVU5ERUZJTkVEJyIsICInVkVSU0lPTiciLCAiJ2xlbmd0aCciLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICInQU5EJyIsICInT1InIiwgIidOT1QnIiwgIidzZXQnIiwgIid+JyIsICIn Ym9vbHZhbCciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInc3RyaW5ndmFsJyIsICIn dW5pbnR2YWwnIiwgIid0b3VwcGVyJyIsICIndG9sb3dlciciLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICInbWF0Y2gnIiwgIidtYXRjaDInIiwgIidjYXRlbmF0ZSciLCAiJ3F1ZXN0aW9u cmVmdmFsJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidzdHJpbmdyZWZ2YWwnIiwg IidtYXAnIiwgIidyZWZyZXNoZ3VpZCciLCAiJ1NUUklOR19UT0tFTiciLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICInT1BUSU9OX0RFRkFVTFQnIiwgIidPUFRJT05fREVGQVVMVF9NRkcn IiwNCj4gIidOVU1FUklDX1NJWkVfMSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICIn TlVNRVJJQ19TSVpFXzInIiwgIidOVU1FUklDX1NJWkVfNCciLCAiJ05VTUVSSUNfU0laRV84JyIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidESVNQTEFZX0lOVF9ERUMnIiwgIidESVNQ TEFZX1VJTlRfREVDJyIsDQo+ICInRElTUExBWV9VSU5UX0hFWCciLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICInSU5TRU5TSVRJVkUnIiwgIidTRU5TSVRJVkUnIiwgIidMQVNUX05PTl9N QVRDSCciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInRklSU1RfTk9OX01BVENIJyIg XQ0KPiANCj4gKw0KPiANCj4gKyAgICBzeW1ib2xpY05hbWVzID0gWyAiPElOVkFMSUQ+IiwgIjxJ TlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJTlZBTElE PiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+ IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIjxJTlZBTElEPiIsICJEZWZpbmUiLCAiSW5jbHVk ZSIsICJGb3JtUGtnVHlwZSIsICJPcGVuQnJhY2UiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAiQ2xvc2VCcmFjZSIsICJPcGVuUGFyZW4iLCAiQ2xvc2VQYXJlbiIsICJPcGVuQnJhY2tl dCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJDbG9zZUJyYWNrZXQiLCAiRG90Iiwg Ik5lZ2F0aXZlIiwgIkNvbG9uIiwgIlNsYXNoIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIlNlbWljb2xvbiIsICJDb21tYSIsICJFcXVhbCIsICJOb3RFcXVhbCIsICJMZXNzRXF1YWwi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiTGVzcyIsICJHcmVhdGVyRXF1YWwiLCAi R3JlYXRlciIsICJCaXRXaXNlT3IiLCAiQml0V2lzZUFuZCIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICJEZXZpY2VQYXRoIiwgIkZvcm1TZXQiLCAiRm9ybVNldElkIiwgIkVuZEZvcm1T ZXQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiVGl0bGUiLCAiRm9ybUlkIiwgIk9u ZU9mIiwgIkVuZE9uZU9mIiwgIlByb21wdCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICJPcmRlcmVkTGlzdCIsICJNYXhDb250YWluZXJzIiwgIkVuZExpc3QiLCAiRW5kRm9ybSIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJGb3JtIiwgIkZvcm1NYXAiLCAiTWFwVGl0bGUi LCAiTWFwR3VpZCIsICJTdWJ0aXRsZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJF bmRTdWJ0aXRsZSIsICJIZWxwIiwgIlRleHQiLCAiT3B0aW9uIiwgIkZMQUdTIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIkRhdGUiLCAiRW5kRGF0ZSIsICJZZWFyIiwgIk1vbnRoIiwg IkRheSIsICJUaW1lIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkVuZFRpbWUiLCAi SG91ciIsICJNaW51dGUiLCAiU2Vjb25kIiwgIkdyYXlPdXRJZiIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICJMYWJlbCIsICJUaW1lb3V0IiwgIkludmVudG9yeSIsICJOb25OdkRhdGFN YXAiLCAiU3RydWN0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlVuaW9uIiwgIkJv b2xlYW4iLCAiVWludDY0IiwgIlVpbnQzMiIsICJVaW50MTYiLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAiVWludDgiLCAiRUZJX1NUUklOR19JRCIsICJFRklfSElJX0RBVEUiLCAiRUZJ X0hJSV9USU1FIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkVGSV9ISUlfUkVGIiwg IlV1aWQiLCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAiTnVtZXJpYyIsICJFbmROdW1lcmljIiwgIk1pbmltdW0iLCAiTWF4aW11bSIsICJT dGVwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkRlZmF1bHQiLCAiUGFzc3dvcmQi LCAiRW5kUGFzc3dvcmQiLCAiU3RyaW5nIiwgIkVuZFN0cmluZyIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICJNaW5TaXplIiwgIk1heFNpemUiLCAiRW5jb2RpbmciLCAiU3VwcHJlc3NJ ZiIsICJEaXNhYmxlSWYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiSGlkZGVuIiwg IkdvdG8iLCAiRm9ybVNldEd1aWQiLCAiSW5jb25zaXN0ZW50SWYiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAiV2FybmluZ0lmIiwgIk5vU3VibWl0SWYiLCAiRW5kSWYiLCAiS2V5Iiwg IkRlZmF1bHRGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIk1hbnVmYWN0dXJp bmdGbGFnIiwgIkNoZWNrQm94RGVmYXVsdEZsYWciLA0KPiAiQ2hlY2tCb3hEZWZhdWx0TWZnRmxh ZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJJbnRlcmFjdGl2ZUZsYWciLCAiTlZB Y2Nlc3NGbGFnIiwgIlJlc2V0UmVxdWlyZWRGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIlJlY29ubmVjdFJlcXVpcmVkRmxhZyIsICJMYXRlQ2hlY2tGbGFnIiwgIlJlYWRPbmx5 RmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25Pbmx5RmxhZyIsICJS ZXN0U3R5bGVGbGFnIiwgIkNsYXNzIiwgIlN1YmNsYXNzIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIkNsYXNzR3VpZCIsICJUeXBlRGVmIiwgIlJlc3RvcmUiLCAiU2F2ZSIsICJEZWZh dWx0cyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJCYW5uZXIiLCAiQWxpZ24iLCAi TGVmdCIsICJSaWdodCIsICJDZW50ZXIiLCAiTGluZSIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICJOYW1lIiwgIlZhcklkIiwgIlF1ZXN0aW9uIiwgIlF1ZXN0aW9uSWQiLCAiSW1hZ2Ui LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiTG9ja2VkIiwgIlJ1bGUiLCAiRW5kUnVs ZSIsICJWYWx1ZSIsICJSZWFkIiwgIldyaXRlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIlJlc2V0QnV0dG9uIiwgIkVuZFJlc2V0QnV0dG9uIiwgIkRlZmF1bHRTdG9yZSIsICJBdHRy aWJ1dGUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiVmFyc3RvcmUiLCAiRWZpdmFy c3RvcmUiLCAiVmFyU2l6ZSIsICJOYW1lVmFsdWVWYXJTdG9yZSIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICJBY3Rpb24iLCAiQ29uZmlnIiwgIkVuZEFjdGlvbiIsICJSZWZyZXNoIiwg IkludGVydmFsIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlZhcnN0b3JlRGV2aWNl IiwgIkd1aWRPcCIsICJFbmRHdWlkT3AiLCAiRGF0YVR5cGUiLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAiRGF0YSIsICJNb2RhbCIsICJDbGFzc05vbkRldmljZSIsICJDbGFzc0Rpc2tE ZXZpY2UiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3NWaWRlb0RldmljZSIs ICJDbGFzc05ldHdvcmtEZXZpY2UiLCAiQ2xhc3NJbnB1dERldmljZSIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJDbGFzc09uQm9hcmREZXZpY2UiLCAiQ2xhc3NPdGhlckRldmljZSIs DQo+ICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAiU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24iLCAiU3ViY2xhc3NGcm9udFBhZ2UiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiU3ViY2xhc3NTaW5nbGVVc2UiLCAiWWVhclN1 cHBwcmVzc0ZsYWciLA0KPiAiTW9udGhTdXBwcmVzc0ZsYWciLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAiRGF5U3VwcHJlc3NGbGFnIiwgIkhvdXJTdXBwcHJlc3NGbGFnIiwNCj4gIk1p bnV0ZVN1cHByZXNzRmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJTZWNvbmRT dXBwcmVzc0ZsYWciLCAiU3RvcmFnZU5vcm1hbEZsYWciLCAiU3RvcmFnZVRpbWVGbGFnIiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlN0b3JhZ2VXYWtlVXBGbGFnIiwgIlVuaVF1ZUZs YWciLCAiTm9FbXB0eUZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiQ29uZCIs ICJGaW5kIiwgIk1pZCIsICJUb2siLCAiU3BhbiIsICJEdXAiLCAiVmFyRXFWYWwiLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAiVmFyIiwgIklkRXFWYWwiLCAiSWRFcUlkIiwgIklkRXFW YWxMaXN0IiwgIlF1ZXN0aW9uUmVmIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlJ1 bGVSZWYiLCAiU3RyaW5nUmVmIiwgIlB1c2hUaGlzIiwgIlNlY3VyaXR5IiwgIkdldCIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwgIk9u ZSIsICJPbmVzIiwgIlplcm8iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiVW5kZWZp bmVkIiwgIlZlcnNpb24iLCAiTGVuZ3RoIiwgIkFORCIsICJPUiIsICJOT1QiLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAiU2V0IiwgIkJpdFdpc2VOb3QiLCAiQm9vbFZhbCIsICJTdHJp bmdWYWwiLCAiVW5JbnRWYWwiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiVG9VcHBl ciIsICJUb0xvd2VyIiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICJRdWVzdGlvblJlZlZhbCIsICJTdHJpbmdSZWZWYWwiLCAiTWFw IiwgIlJlZnJlc2hHdWlkIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlN0cmluZ1Rv a2VuIiwgIk9wdGlvbkRlZmF1bHQiLCAiT3B0aW9uRGVmYXVsdE1mZyIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIsICJOdW1l cmljU2l6ZUZvdXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiTnVtZXJpY1NpemVF aWdodCIsICJEaXNQbGF5SW50RGVjIiwgIkRpc1BsYXlVSW50RGVjIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIkRpc1BsYXlVSW50SGV4IiwgIkluc2Vuc2l0aXZlIiwgIlNlbnNpdGl2 ZSIsICJMYXN0Tm9uTWF0Y2giLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiRmlyc3RO b25NYXRjaCIsICJOdW1iZXIiLCAiU3RyaW5nSWRlbnRpZmllciIsDQo+ICJDb21wbGV4RGVmaW5l IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkxpbmVEZWZpbml0aW9uIiwgIkluY2x1 ZGVEZWZpbml0aW9uIiwgIldoaXRlc3BhY2UiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAiTmV3bGluZSIsICJMaW5lQ29tbWVudCIsICJFeHRlcm4iIF0NCj4gDQo+ICsNCj4gDQo+ICsg ICAgUlVMRV92ZnJQcm9ncmFtID0gMA0KPiANCj4gKyAgICBSVUxFX3ByYWdtYVBhY2tTaG93RGVm ID0gMQ0KPiANCj4gKyAgICBSVUxFX3ByYWdtYVBhY2tTdGFja0RlZiA9IDINCj4gDQo+ICsgICAg UlVMRV9wcmFnbWFQYWNrTnVtYmVyID0gMw0KPiANCj4gKyAgICBSVUxFX3ZmclByYWdtYVBhY2tE ZWZpbml0aW9uID0gNA0KPiANCj4gKyAgICBSVUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9uID0g NQ0KPiANCj4gKyAgICBSVUxFX3ZmckRhdGFVbmlvbkRlZmluaXRpb24gPSA2DQo+IA0KPiArICAg IFJVTEVfdmZyRGF0YVN0cnVjdEZpZWxkcyA9IDcNCj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0 RmllbGQ2NCA9IDgNCj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0RmllbGQzMiA9IDkNCj4gDQo+ ICsgICAgUlVMRV9kYXRhU3RydWN0RmllbGQxNiA9IDEwDQo+IA0KPiArICAgIFJVTEVfZGF0YVN0 cnVjdEZpZWxkOCA9IDExDQo+IA0KPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkQm9vbCA9IDEy DQo+IA0KPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkU3RyaW5nID0gMTMNCj4gDQo+ICsgICAg UlVMRV9kYXRhU3RydWN0RmllbGREYXRlID0gMTQNCj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0 RmllbGRUaW1lID0gMTUNCj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0RmllbGRSZWYgPSAxNg0K PiANCj4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFVzZXIgPSAxNw0KPiANCj4gKyAgICBSVUxF X2RhdGFTdHJ1Y3RCaXRGaWVsZDY0ID0gMTgNCj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0Qml0 RmllbGQzMiA9IDE5DQo+IA0KPiArICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkMTYgPSAyMA0K PiANCj4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDggPSAyMQ0KPiANCj4gKyAgICBSVUxF X3ZmckZvcm1TZXREZWZpbml0aW9uID0gMjINCj4gDQo+ICsgICAgUlVMRV9jbGFzc2d1aWREZWZp bml0aW9uID0gMjMNCj4gDQo+ICsgICAgUlVMRV9jbGFzc0RlZmluaXRpb24gPSAyNA0KPiANCj4g KyAgICBSVUxFX3ZhbGlkQ2xhc3NOYW1lcyA9IDI1DQo+IA0KPiArICAgIFJVTEVfc3ViY2xhc3NE ZWZpbml0aW9uID0gMjYNCj4gDQo+ICsgICAgUlVMRV92ZnJGb3JtU2V0TGlzdCA9IDI3DQo+IA0K PiArICAgIFJVTEVfdmZyRm9ybVNldCA9IDI4DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50 RGVmYXVsdFN0b3JlID0gMjkNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUxp bmVhciA9IDMwDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkgPSAzMQ0K PiANCj4gKyAgICBSVUxFX3ZmclZhclN0b3JlRWZpQXR0ciA9IDMyDQo+IA0KPiArICAgIFJVTEVf dmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUgPSAzMw0KPiANCj4gKyAgICBSVUxFX3ZmclN0 YXRlbWVudERpc2FibGVJZkZvcm1TZXQgPSAzNA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVu dFN1cHByZXNzSWZGb3JtU2V0ID0gMzUNCj4gDQo+ICsgICAgUlVMRV9ndWlkU3ViRGVmaW5pdGlv biA9IDM2DQo+IA0KPiArICAgIFJVTEVfZ3VpZERlZmluaXRpb24gPSAzNw0KPiANCj4gKyAgICBS VUxFX2dldFN0cmluZ0lkID0gMzgNCj4gDQo+ICsgICAgUlVMRV92ZnJRdWVzdGlvbkhlYWRlciA9 IDM5DQo+IA0KPiArICAgIFJVTEVfdmZyUXVlc3Rpb25CYXNlSW5mbyA9IDQwDQo+IA0KPiArICAg IFJVTEVfdmZyU3RhdGVtZW50SGVhZGVyID0gNDENCj4gDQo+ICsgICAgUlVMRV9xdWVzdGlvbmhl YWRlckZsYWdzRmllbGQgPSA0Mg0KPiANCj4gKyAgICBSVUxFX3ZmclN0b3JhZ2VWYXJJZCA9IDQz DQo+IA0KPiArICAgIFJVTEVfdmZyQ29uc3RhbnRWYWx1ZUZpZWxkID0gNDQNCj4gDQo+ICsgICAg UlVMRV92ZnJJbWFnZVRhZyA9IDQ1DQo+IA0KPiArICAgIFJVTEVfdmZyTG9ja2VkVGFnID0gNDYN Cj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0VGFnID0gNDcNCj4gDQo+ICsgICAgUlVM RV92ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdCA9IDQ4DQo+IA0KPiArICAgIFJVTEVfdmZyRm9ybURl ZmluaXRpb24gPSA0OQ0KPiANCj4gKyAgICBSVUxFX3ZmckZvcm0gPSA1MA0KPiANCj4gKyAgICBS VUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uID0gNTENCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1l bnRJbWFnZSA9IDUyDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50TG9ja2VkID0gNTMNCj4g DQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRSdWxlcyA9IDU0DQo+IA0KPiArICAgIFJVTEVfdmZy U3RhdGVtZW50U3RhdCA9IDU1DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGUg PSA1Ng0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50ID0gNTcN Cj4gDQo+ICsgICAgUlVMRV92ZnJTdWJ0aXRsZUZsYWdzID0gNTgNCj4gDQo+ICsgICAgUlVMRV9z dWJ0aXRsZUZsYWdzRmllbGQgPSA1OQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRp Y1RleHQgPSA2MA0KPiANCj4gKyAgICBSVUxFX3N0YXRpY1RleHRGbGFnc0ZpZWxkID0gNjENCj4g DQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSA9IDYyDQo+IA0KPiArICAg IFJVTEVfdmZyU3RhdGVtZW50R290byA9IDYzDQo+IA0KPiArICAgIFJVTEVfdmZyR290b0ZsYWdz ID0gNjQNCj4gDQo+ICsgICAgUlVMRV9nb3RvRmxhZ3NGaWVsZCA9IDY1DQo+IA0KPiArICAgIFJV TEVfdmZyU3RhdGVtZW50UmVzZXRCdXR0b24gPSA2Ng0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRl bWVudFF1ZXN0aW9ucyA9IDY3DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25U YWcgPSA2OA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmID0gNjkN Cj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnROb1N1Ym1pdElmID0gNzANCj4gDQo+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCA9IDcxDQo+IA0KPiArICAgIFJVTEVfdmZy U3RhdGVtZW50UmVmcmVzaCA9IDcyDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50VmFyc3Rv cmVEZXZpY2UgPSA3Mw0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFJlZnJlc2hFdmVudCA9 IDc0DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50V2FybmluZ0lmID0gNzUNCj4gDQo+ICsg ICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QgPSA3Ng0KPiANCj4gKyAgICBSVUxF X3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnID0gNzcNCj4gDQo+ICsgICAgUlVMRV9mbGFn c0ZpZWxkID0gNzgNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3Qg PSA3OQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0ID0gODANCj4g DQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnREZWZhdWx0ID0gODENCj4gDQo+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRWYWx1ZSA9IDgyDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50T3B0aW9u cyA9IDgzDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50T25lT2ZPcHRpb24gPSA4NA0KPiAN Cj4gKyAgICBSVUxFX3Zmck9uZU9mT3B0aW9uRmxhZ3MgPSA4NQ0KPiANCj4gKyAgICBSVUxFX29u ZW9mb3B0aW9uRmxhZ3NGaWVsZCA9IDg2DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UmVh ZCA9IDg3DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50V3JpdGUgPSA4OA0KPiANCj4gKyAg ICBSVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCA9IDg5DQo+IA0KPiArICAgIFJV TEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24gPSA5MA0KPiANCj4gKyAgICBSVUxFX3ZmclN0 YXRlbWVudEJvb2xlYW5UeXBlID0gOTENCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRDaGVj a0JveCA9IDkyDQo+IA0KPiArICAgIFJVTEVfdmZyQ2hlY2tCb3hGbGFncyA9IDkzDQo+IA0KPiAr ICAgIFJVTEVfY2hlY2tib3hGbGFnc0ZpZWxkID0gOTQNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0 ZW1lbnRBY3Rpb24gPSA5NQ0KPiANCj4gKyAgICBSVUxFX3ZmckFjdGlvbkZsYWdzID0gOTYNCj4g DQo+ICsgICAgUlVMRV9hY3Rpb25GbGFnc0ZpZWxkID0gOTcNCj4gDQo+ICsgICAgUlVMRV92ZnJT dGF0ZW1lbnROdW1lcmljVHlwZSA9IDk4DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50TnVt ZXJpYyA9IDk5DQo+IA0KPiArICAgIFJVTEVfdmZyU2V0TWluTWF4U3RlcCA9IDEwMA0KPiANCj4g KyAgICBSVUxFX3Zmck51bWVyaWNGbGFncyA9IDEwMQ0KPiANCj4gKyAgICBSVUxFX251bWVyaWNG bGFnc0ZpZWxkID0gMTAyDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50T25lT2YgPSAxMDMN Cj4gDQo+ICsgICAgUlVMRV92ZnJPbmVvZkZsYWdzRmllbGQgPSAxMDQNCj4gDQo+ICsgICAgUlVM RV92ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlID0gMTA1DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVt ZW50U3RyaW5nID0gMTA2DQo+IA0KPiArICAgIFJVTEVfdmZyU3RyaW5nRmxhZ3NGaWVsZCA9IDEw Nw0KPiANCj4gKyAgICBSVUxFX3N0cmluZ0ZsYWdzRmllbGQgPSAxMDgNCj4gDQo+ICsgICAgUlVM RV92ZnJTdGF0ZW1lbnRQYXNzd29yZCA9IDEwOQ0KPiANCj4gKyAgICBSVUxFX3ZmclBhc3N3b3Jk RmxhZ3NGaWVsZCA9IDExMA0KPiANCj4gKyAgICBSVUxFX3Bhc3N3b3JkRmxhZ3NGaWVsZCA9IDEx MQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0ID0gMTEyDQo+IA0KPiAr ICAgIFJVTEVfdmZyT3JkZXJlZExpc3RGbGFncyA9IDExMw0KPiANCj4gKyAgICBSVUxFX29yZGVy ZWRsaXN0RmxhZ3NGaWVsZCA9IDExNA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudERhdGUg PSAxMTUNCj4gDQo+ICsgICAgUlVMRV9taW5NYXhEYXRlU3RlcERlZmF1bHQgPSAxMTYNCj4gDQo+ ICsgICAgUlVMRV92ZnJEYXRlRmxhZ3MgPSAxMTcNCj4gDQo+ICsgICAgUlVMRV9kYXRlRmxhZ3NG aWVsZCA9IDExOA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFRpbWUgPSAxMTkNCj4gDQo+ ICsgICAgUlVMRV9taW5NYXhUaW1lU3RlcERlZmF1bHQgPSAxMjANCj4gDQo+ICsgICAgUlVMRV92 ZnJUaW1lRmxhZ3MgPSAxMjENCj4gDQo+ICsgICAgUlVMRV90aW1lRmxhZ3NGaWVsZCA9IDEyMg0K PiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudENvbmRpdGlvbmFsID0gMTIzDQo+IA0KPiArICAg IFJVTEVfdmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcgPSAxMjQNCj4gDQo+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCA9IDEyNQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRl bWVudEdyYXlPdXRJZlN0YXQgPSAxMjYNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0 TGlzdCA9IDEyNw0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0T2xkID0gMTI4 DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCA9IDEyOQ0KPiANCj4g KyAgICBSVUxFX3ZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWYgPSAxMzANCj4gDQo+ICsg ICAgUlVMRV92ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmID0gMTMxDQo+IA0KPiArICAg IFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcgPSAxMzINCj4gDQo+ICsgICAgUlVM RV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3ID0gMTMzDQo+IA0KPiArICAgIFJVTEVfdmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0ID0gMTM0DQo+IA0KPiArICAgIFJVTEVfdmZyU3Rh dGVtZW50SW52YWxpZCA9IDEzNQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEludmFsaWRI aWRkZW4gPSAxMzYNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5 ID0gMTM3DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVm YXVsdHMgPSAxMzgNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRMYWJlbCA9IDEzOQ0KPiAN Cj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEJhbm5lciA9IDE0MA0KPiANCj4gKyAgICBSVUxFX3Zm clN0YXRlbWVudEV4dGVuc2lvbiA9IDE0MQ0KPiANCj4gKyAgICBSVUxFX3ZmckV4dGVuc2lvbkRh dGEgPSAxNDINCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRNb2RhbCA9IDE0Mw0KPiANCj4g KyAgICBSVUxFX3Zmck1vZGFsVGFnID0gMTQ0DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50 RXhwcmVzc2lvbiA9IDE0NQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIgPSAxNDYNCj4gDQo+ICsgICAgUlVMRV9hbmRUZXJtID0gMTQ3DQo+IA0KPiArICAgIFJVTEVf Yml0d2lzZW9yVGVybSA9IDE0OA0KPiANCj4gKyAgICBSVUxFX2JpdHdpc2VhbmRUZXJtID0gMTQ5 DQo+IA0KPiArICAgIFJVTEVfZXF1YWxUZXJtID0gMTUwDQo+IA0KPiArICAgIFJVTEVfZXF1YWxU ZXJtU3VwcGxlbWVudGFyeSA9IDE1MQ0KPiANCj4gKyAgICBSVUxFX2NvbXBhcmVUZXJtID0gMTUy DQo+IA0KPiArICAgIFJVTEVfY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5ID0gMTUzDQo+IA0KPiAr ICAgIFJVTEVfc2hpZnRUZXJtID0gMTU0DQo+IA0KPiArICAgIFJVTEVfc2hpZnRUZXJtU3VwcGxl bWVudGFyeSA9IDE1NQ0KPiANCj4gKyAgICBSVUxFX2FkZE1pbnVzVGVybSA9IDE1Ng0KPiANCj4g KyAgICBSVUxFX2FkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkgPSAxNTcNCj4gDQo+ICsgICAgUlVM RV9tdWx0ZGl2bW9kVGVybSA9IDE1OA0KPiANCj4gKyAgICBSVUxFX211bHRkaXZtb2RUZXJtU3Vw cGxlbWVudGFyeSA9IDE1OQ0KPiANCj4gKyAgICBSVUxFX2Nhc3RUZXJtID0gMTYwDQo+IA0KPiAr ICAgIFJVTEVfY2FzdFRlcm1TdWIgPSAxNjENCj4gDQo+ICsgICAgUlVMRV9hdG9tVGVybSA9IDE2 Mg0KPiANCj4gKyAgICBSVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZSA9IDE2Mw0KPiANCj4gKyAg ICBSVUxFX3ZmckV4cHJlc3Npb25NYXRjaCA9IDE2NA0KPiANCj4gKyAgICBSVUxFX3ZmckV4cHJl c3Npb25NYXRjaDIgPSAxNjUNCj4gDQo+ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uUGFyZW4gPSAx NjYNCj4gDQo+ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uID0gMTY3DQo+ IA0KPiArICAgIFJVTEVfZHVwRXhwID0gMTY4DQo+IA0KPiArICAgIFJVTEVfdmFyZXF2YWxFeHAg PSAxNjkNCj4gDQo+ICsgICAgUlVMRV9pZGVxdmFsRXhwID0gMTcwDQo+IA0KPiArICAgIFJVTEVf aWRlcWlkRXhwID0gMTcxDQo+IA0KPiArICAgIFJVTEVfaWRlcXZhbGxpc3RFeHAgPSAxNzINCj4g DQo+ICsgICAgUlVMRV92ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUgPSAxNzMNCj4gDQo+ICsgICAg UlVMRV9hcnJheU5hbWUgPSAxNzQNCj4gDQo+ICsgICAgUlVMRV9xdWVzdGlvbnJlZjFFeHAgPSAx NzUNCj4gDQo+ICsgICAgUlVMRV9ydWxlcmVmRXhwID0gMTc2DQo+IA0KPiArICAgIFJVTEVfc3Ry aW5ncmVmMUV4cCA9IDE3Nw0KPiANCj4gKyAgICBSVUxFX3B1c2h0aGlzRXhwID0gMTc4DQo+IA0K PiArICAgIFJVTEVfc2VjdXJpdHlFeHAgPSAxNzkNCj4gDQo+ICsgICAgUlVMRV9udW1lcmljVmFy U3RvcmVUeXBlID0gMTgwDQo+IA0KPiArICAgIFJVTEVfZ2V0RXhwID0gMTgxDQo+IA0KPiArICAg IFJVTEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50ID0gMTgyDQo+IA0KPiArICAgIFJVTEVfdmZyRXhw cmVzc2lvblVuYXJ5T3AgPSAxODMNCj4gDQo+ICsgICAgUlVMRV9sZW5ndGhFeHAgPSAxODQNCj4g DQo+ICsgICAgUlVMRV9iaXR3aXNlbm90RXhwID0gMTg1DQo+IA0KPiArICAgIFJVTEVfcXVlc3Rp b24yM3JlZkV4cCA9IDE4Ng0KPiANCj4gKyAgICBSVUxFX3N0cmluZ3JlZjJFeHAgPSAxODcNCj4g DQo+ICsgICAgUlVMRV90b2Jvb2xFeHAgPSAxODgNCj4gDQo+ICsgICAgUlVMRV90b3N0cmluZ0V4 cCA9IDE4OQ0KPiANCj4gKyAgICBSVUxFX3VuaW50RXhwID0gMTkwDQo+IA0KPiArICAgIFJVTEVf dG91cHBlckV4cCA9IDE5MQ0KPiANCj4gKyAgICBSVUxFX3RvbHdlckV4cCA9IDE5Mg0KPiANCj4g KyAgICBSVUxFX3NldEV4cCA9IDE5Mw0KPiANCj4gKyAgICBSVUxFX3ZmckV4cHJlc3Npb25UZXJu YXJ5T3AgPSAxOTQNCj4gDQo+ICsgICAgUlVMRV9jb25kaXRpb25hbEV4cCA9IDE5NQ0KPiANCj4g KyAgICBSVUxFX2ZpbmRFeHAgPSAxOTYNCj4gDQo+ICsgICAgUlVMRV9maW5kRm9ybWF0ID0gMTk3 DQo+IA0KPiArICAgIFJVTEVfbWlkRXhwID0gMTk4DQo+IA0KPiArICAgIFJVTEVfdG9rZW5FeHAg PSAxOTkNCj4gDQo+ICsgICAgUlVMRV9zcGFuRXhwID0gMjAwDQo+IA0KPiArICAgIFJVTEVfc3Bh bkZsYWdzID0gMjAxDQo+IA0KPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hcCA9IDIwMg0KPiAN Cj4gKw0KPiANCj4gKyAgICBydWxlTmFtZXMgPSAgWyAidmZyUHJvZ3JhbSIsICJwcmFnbWFQYWNr U2hvd0RlZiIsDQo+ICJwcmFnbWFQYWNrU3RhY2tEZWYiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAicHJhZ21hUGFja051bWJlciIsICJ2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIsDQo+ICJ2 ZnJEYXRhU3RydWN0RGVmaW5pdGlvbiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJE YXRhVW5pb25EZWZpbml0aW9uIiwgInZmckRhdGFTdHJ1Y3RGaWVsZHMiLA0KPiAiZGF0YVN0cnVj dEZpZWxkNjQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEZpZWxkMzIi LCAiZGF0YVN0cnVjdEZpZWxkMTYiLCAiZGF0YVN0cnVjdEZpZWxkOCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJkYXRhU3RydWN0RmllbGRCb29sIiwgImRhdGFTdHJ1Y3RGaWVsZFN0cmlu ZyIsDQo+ICJkYXRhU3RydWN0RmllbGREYXRlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ImRhdGFTdHJ1Y3RGaWVsZFRpbWUiLCAiZGF0YVN0cnVjdEZpZWxkUmVmIiwNCj4gImRhdGFTdHJ1 Y3RGaWVsZFVzZXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZp ZWxkNjQiLCAiZGF0YVN0cnVjdEJpdEZpZWxkMzIiLA0KPiAiZGF0YVN0cnVjdEJpdEZpZWxkMTYi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZpZWxkOCIsICJ2ZnJG b3JtU2V0RGVmaW5pdGlvbiIsDQo+ICJjbGFzc2d1aWREZWZpbml0aW9uIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgImNsYXNzRGVmaW5pdGlvbiIsICJ2YWxpZENsYXNzTmFtZXMiLCAic3Vi Y2xhc3NEZWZpbml0aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmckZvcm1TZXRM aXN0IiwgInZmckZvcm1TZXQiLCAidmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyIiwgInZmclN0YXRl bWVudFZhclN0b3JlRWZpIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclZhclN0b3Jl RWZpQXR0ciIsICJ2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0IiwNCj4gInZmclN0YXRl bWVudFN1cHByZXNzSWZGb3JtU2V0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgImd1aWRT dWJEZWZpbml0aW9uIiwgImd1aWREZWZpbml0aW9uIiwgImdldFN0cmluZ0lkIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgInZmclF1ZXN0aW9uSGVhZGVyIiwgInZmclF1ZXN0aW9uQmFzZUlu Zm8iLA0KPiAidmZyU3RhdGVtZW50SGVhZGVyIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg InF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCIsICJ2ZnJTdG9yYWdlVmFySWQiLA0KPiAidmZyQ29u c3RhbnRWYWx1ZUZpZWxkIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmckltYWdlVGFn IiwgInZmckxvY2tlZFRhZyIsICJ2ZnJTdGF0ZW1lbnRTdGF0VGFnIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudFN0YXRUYWdMaXN0IiwgInZmckZvcm1EZWZpbml0aW9u IiwgInZmckZvcm0iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyRm9ybU1hcERlZmlu aXRpb24iLCAidmZyU3RhdGVtZW50SW1hZ2UiLA0KPiAidmZyU3RhdGVtZW50TG9ja2VkIiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJ1bGVzIiwgInZmclN0YXRlbWVu dFN0YXQiLCAidmZyU3RhdGVtZW50U3ViVGl0bGUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAidmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQiLCAidmZyU3VidGl0bGVGbGFncyIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICJzdWJ0aXRsZUZsYWdzRmllbGQiLCAidmZyU3RhdGVt ZW50U3RhdGljVGV4dCIsDQo+ICJzdGF0aWNUZXh0RmxhZ3NGaWVsZCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSIsICJ2ZnJTdGF0ZW1lbnRH b3RvIiwNCj4gInZmckdvdG9GbGFncyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJnb3Rv RmxhZ3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbiIsDQo+ICJ2ZnJTdGF0ZW1lbnRR dWVzdGlvbnMiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rp b25UYWciLCAidmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYiLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAidmZyU3RhdGVtZW50Tm9TdWJtaXRJZiIsICJ2ZnJTdGF0ZW1lbnREaXNhYmxlSWZR dWVzdCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRSZWZyZXNoIiwg InZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg InZmclN0YXRlbWVudFJlZnJlc2hFdmVudCIsICJ2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYiLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0IiwNCj4g InZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgImZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0IiwNCj4gInZmclN0 YXRlbWVudEdyYXlPdXRJZlF1ZXN0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclN0 YXRlbWVudERlZmF1bHQiLCAidmZyU3RhdGVtZW50VmFsdWUiLA0KPiAidmZyU3RhdGVtZW50T3B0 aW9ucyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlv biIsICJ2ZnJPbmVPZk9wdGlvbkZsYWdzIiwNCj4gIm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRSZWFkIiwgInZmclN0YXRlbWVu dFdyaXRlIiwNCj4gInZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCIsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiIsICJ2ZnJTdGF0ZW1l bnRCb29sZWFuVHlwZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRD aGVja0JveCIsICJ2ZnJDaGVja0JveEZsYWdzIiwNCj4gImNoZWNrYm94RmxhZ3NGaWVsZCIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRBY3Rpb24iLCAidmZyQWN0aW9u RmxhZ3MiLCAiYWN0aW9uRmxhZ3NGaWVsZCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2 ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSIsICJ2ZnJTdGF0ZW1lbnROdW1lcmljIiwNCj4gInZmclNl dE1pbk1heFN0ZXAiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyTnVtZXJpY0ZsYWdz IiwgIm51bWVyaWNGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudE9uZU9mIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgInZmck9uZW9mRmxhZ3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnRTdHJpbmdU eXBlIiwNCj4gInZmclN0YXRlbWVudFN0cmluZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICJ2ZnJTdHJpbmdGbGFnc0ZpZWxkIiwgInN0cmluZ0ZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50 UGFzc3dvcmQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyUGFzc3dvcmRGbGFnc0Zp ZWxkIiwgInBhc3N3b3JkRmxhZ3NGaWVsZCIsDQo+ICJ2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJPcmRlcmVkTGlzdEZsYWdzIiwgIm9yZGVy ZWRsaXN0RmxhZ3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnREYXRlIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIm1pbk1heERhdGVTdGVwRGVmYXVsdCIsICJ2ZnJEYXRlRmxhZ3MiLCAiZGF0ZUZs YWdzRmllbGQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50VGltZSIs ICJtaW5NYXhUaW1lU3RlcERlZmF1bHQiLCAidmZyVGltZUZsYWdzIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgInRpbWVGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudENvbmRpdGlvbmFsIiwN Cj4gInZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgInZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0IiwgInZmclN0YXRlbWVudEdyYXlPdXRJZlN0 YXQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50U3RhdExpc3QiLCAi dmZyU3RhdGVtZW50U3RhdExpc3RPbGQiLA0KPiAidmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVz c0lmIiwNCj4gInZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYiLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAidmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXciLA0KPiAidmZyU3Rh dGVtZW50R3JheU91dElmU3RhdE5ldyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJT dGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQiLCAidmZyU3RhdGVtZW50SW52YWxpZCIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuIiwgInZmclN0 YXRlbWVudEludmFsaWRJbnZlbnRvcnkiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZy U3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMiLCAidmZyU3RhdGVtZW50TGFiZWwi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50QmFubmVyIiwgInZmclN0 YXRlbWVudEV4dGVuc2lvbiIsDQo+ICJ2ZnJFeHRlbnNpb25EYXRhIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudE1vZGFsIiwgInZmck1vZGFsVGFnIiwgInZmclN0YXRl bWVudEV4cHJlc3Npb24iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YiIsICJhbmRUZXJtIiwgImJpdHdpc2VvclRlcm0iLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAiYml0d2lzZWFuZFRlcm0iLCAiZXF1YWxUZXJtIiwgImVxdWFsVGVybVN1 cHBsZW1lbnRhcnkiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiY29tcGFyZVRlcm0iLCAi Y29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5IiwgInNoaWZ0VGVybSIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICJzaGlmdFRlcm1TdXBwbGVtZW50YXJ5IiwgImFkZE1pbnVzVGVybSIsDQo+ICJh ZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIm11 bHRkaXZtb2RUZXJtIiwgIm11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeSIsDQo+ICJjYXN0VGVy bSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJjYXN0VGVybVN1YiIsICJhdG9tVGVybSIs ICJ2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUiLA0KPiAidmZyRXhwcmVzc2lvbk1hdGNoIiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgInZmckV4cHJlc3Npb25NYXRjaDIiLCAidmZyRXhwcmVzc2lv blBhcmVuIiwNCj4gInZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24iLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAiZHVwRXhwIiwgInZhcmVxdmFsRXhwIiwgImlkZXF2YWxFeHAiLCAiaWRl cWlkRXhwIiwNCj4gImlkZXF2YWxsaXN0RXhwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg InZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSIsICJhcnJheU5hbWUiLCAicXVlc3Rpb25yZWYxRXhw IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInJ1bGVyZWZFeHAiLCAic3RyaW5ncmVmMUV4 cCIsICJwdXNodGhpc0V4cCIsICJzZWN1cml0eUV4cCIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICJudW1lcmljVmFyU3RvcmVUeXBlIiwgImdldEV4cCIsICJ2ZnJFeHByZXNzaW9uQ29uc3Rh bnQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyRXhwcmVzc2lvblVuYXJ5T3AiLCAi bGVuZ3RoRXhwIiwgImJpdHdpc2Vub3RFeHAiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAi cXVlc3Rpb24yM3JlZkV4cCIsICJzdHJpbmdyZWYyRXhwIiwgInRvYm9vbEV4cCIsICJ0b3N0cmlu Z0V4cCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ1bmludEV4cCIsICJ0b3VwcGVyRXhw IiwgInRvbHdlckV4cCIsICJzZXRFeHAiLA0KPiAidmZyRXhwcmVzc2lvblRlcm5hcnlPcCIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICJjb25kaXRpb25hbEV4cCIsICJmaW5kRXhwIiwgImZp bmRGb3JtYXQiLCAibWlkRXhwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInRva2VuRXhw IiwgInNwYW5FeHAiLCAic3BhbkZsYWdzIiwgInZmckV4cHJlc3Npb25NYXAiIF0NCj4gDQo+ICsN Cj4gDQo+ICsgICAgRU9GID0gVG9rZW4uRU9GDQo+IA0KPiArICAgIFRfXzA9MQ0KPiANCj4gKyAg ICBUX18xPTINCj4gDQo+ICsgICAgVF9fMj0zDQo+IA0KPiArICAgIFRfXzM9NA0KPiANCj4gKyAg ICBUX180PTUNCj4gDQo+ICsgICAgVF9fNT02DQo+IA0KPiArICAgIFRfXzY9Nw0KPiANCj4gKyAg ICBUX183PTgNCj4gDQo+ICsgICAgVF9fOD05DQo+IA0KPiArICAgIFRfXzk9MTANCj4gDQo+ICsg ICAgVF9fMTA9MTENCj4gDQo+ICsgICAgVF9fMTE9MTINCj4gDQo+ICsgICAgVF9fMTI9MTMNCj4g DQo+ICsgICAgVF9fMTM9MTQNCj4gDQo+ICsgICAgVF9fMTQ9MTUNCj4gDQo+ICsgICAgVF9fMTU9 MTYNCj4gDQo+ICsgICAgRGVmaW5lPTE3DQo+IA0KPiArICAgIEluY2x1ZGU9MTgNCj4gDQo+ICsg ICAgRm9ybVBrZ1R5cGU9MTkNCj4gDQo+ICsgICAgT3BlbkJyYWNlPTIwDQo+IA0KPiArICAgIENs b3NlQnJhY2U9MjENCj4gDQo+ICsgICAgT3BlblBhcmVuPTIyDQo+IA0KPiArICAgIENsb3NlUGFy ZW49MjMNCj4gDQo+ICsgICAgT3BlbkJyYWNrZXQ9MjQNCj4gDQo+ICsgICAgQ2xvc2VCcmFja2V0 PTI1DQo+IA0KPiArICAgIERvdD0yNg0KPiANCj4gKyAgICBOZWdhdGl2ZT0yNw0KPiANCj4gKyAg ICBDb2xvbj0yOA0KPiANCj4gKyAgICBTbGFzaD0yOQ0KPiANCj4gKyAgICBTZW1pY29sb249MzAN Cj4gDQo+ICsgICAgQ29tbWE9MzENCj4gDQo+ICsgICAgRXF1YWw9MzINCj4gDQo+ICsgICAgTm90 RXF1YWw9MzMNCj4gDQo+ICsgICAgTGVzc0VxdWFsPTM0DQo+IA0KPiArICAgIExlc3M9MzUNCj4g DQo+ICsgICAgR3JlYXRlckVxdWFsPTM2DQo+IA0KPiArICAgIEdyZWF0ZXI9MzcNCj4gDQo+ICsg ICAgQml0V2lzZU9yPTM4DQo+IA0KPiArICAgIEJpdFdpc2VBbmQ9MzkNCj4gDQo+ICsgICAgRGV2 aWNlUGF0aD00MA0KPiANCj4gKyAgICBGb3JtU2V0PTQxDQo+IA0KPiArICAgIEZvcm1TZXRJZD00 Mg0KPiANCj4gKyAgICBFbmRGb3JtU2V0PTQzDQo+IA0KPiArICAgIFRpdGxlPTQ0DQo+IA0KPiAr ICAgIEZvcm1JZD00NQ0KPiANCj4gKyAgICBPbmVPZj00Ng0KPiANCj4gKyAgICBFbmRPbmVPZj00 Nw0KPiANCj4gKyAgICBQcm9tcHQ9NDgNCj4gDQo+ICsgICAgT3JkZXJlZExpc3Q9NDkNCj4gDQo+ ICsgICAgTWF4Q29udGFpbmVycz01MA0KPiANCj4gKyAgICBFbmRMaXN0PTUxDQo+IA0KPiArICAg IEVuZEZvcm09NTINCj4gDQo+ICsgICAgRm9ybT01Mw0KPiANCj4gKyAgICBGb3JtTWFwPTU0DQo+ IA0KPiArICAgIE1hcFRpdGxlPTU1DQo+IA0KPiArICAgIE1hcEd1aWQ9NTYNCj4gDQo+ICsgICAg U3VidGl0bGU9NTcNCj4gDQo+ICsgICAgRW5kU3VidGl0bGU9NTgNCj4gDQo+ICsgICAgSGVscD01 OQ0KPiANCj4gKyAgICBUZXh0PTYwDQo+IA0KPiArICAgIE9wdGlvbj02MQ0KPiANCj4gKyAgICBG TEFHUz02Mg0KPiANCj4gKyAgICBEYXRlPTYzDQo+IA0KPiArICAgIEVuZERhdGU9NjQNCj4gDQo+ ICsgICAgWWVhcj02NQ0KPiANCj4gKyAgICBNb250aD02Ng0KPiANCj4gKyAgICBEYXk9NjcNCj4g DQo+ICsgICAgVGltZT02OA0KPiANCj4gKyAgICBFbmRUaW1lPTY5DQo+IA0KPiArICAgIEhvdXI9 NzANCj4gDQo+ICsgICAgTWludXRlPTcxDQo+IA0KPiArICAgIFNlY29uZD03Mg0KPiANCj4gKyAg ICBHcmF5T3V0SWY9NzMNCj4gDQo+ICsgICAgTGFiZWw9NzQNCj4gDQo+ICsgICAgVGltZW91dD03 NQ0KPiANCj4gKyAgICBJbnZlbnRvcnk9NzYNCj4gDQo+ICsgICAgTm9uTnZEYXRhTWFwPTc3DQo+ IA0KPiArICAgIFN0cnVjdD03OA0KPiANCj4gKyAgICBVbmlvbj03OQ0KPiANCj4gKyAgICBCb29s ZWFuPTgwDQo+IA0KPiArICAgIFVpbnQ2ND04MQ0KPiANCj4gKyAgICBVaW50MzI9ODINCj4gDQo+ ICsgICAgVWludDE2PTgzDQo+IA0KPiArICAgIFVpbnQ4PTg0DQo+IA0KPiArICAgIEVGSV9TVFJJ TkdfSUQ9ODUNCj4gDQo+ICsgICAgRUZJX0hJSV9EQVRFPTg2DQo+IA0KPiArICAgIEVGSV9ISUlf VElNRT04Nw0KPiANCj4gKyAgICBFRklfSElJX1JFRj04OA0KPiANCj4gKyAgICBVdWlkPTg5DQo+ IA0KPiArICAgIENoZWNrQm94PTkwDQo+IA0KPiArICAgIEVuZENoZWNrQm94PTkxDQo+IA0KPiAr ICAgIE51bWVyaWM9OTINCj4gDQo+ICsgICAgRW5kTnVtZXJpYz05Mw0KPiANCj4gKyAgICBNaW5p bXVtPTk0DQo+IA0KPiArICAgIE1heGltdW09OTUNCj4gDQo+ICsgICAgU3RlcD05Ng0KPiANCj4g KyAgICBEZWZhdWx0PTk3DQo+IA0KPiArICAgIFBhc3N3b3JkPTk4DQo+IA0KPiArICAgIEVuZFBh c3N3b3JkPTk5DQo+IA0KPiArICAgIFN0cmluZz0xMDANCj4gDQo+ICsgICAgRW5kU3RyaW5nPTEw MQ0KPiANCj4gKyAgICBNaW5TaXplPTEwMg0KPiANCj4gKyAgICBNYXhTaXplPTEwMw0KPiANCj4g KyAgICBFbmNvZGluZz0xMDQNCj4gDQo+ICsgICAgU3VwcHJlc3NJZj0xMDUNCj4gDQo+ICsgICAg RGlzYWJsZUlmPTEwNg0KPiANCj4gKyAgICBIaWRkZW49MTA3DQo+IA0KPiArICAgIEdvdG89MTA4 DQo+IA0KPiArICAgIEZvcm1TZXRHdWlkPTEwOQ0KPiANCj4gKyAgICBJbmNvbnNpc3RlbnRJZj0x MTANCj4gDQo+ICsgICAgV2FybmluZ0lmPTExMQ0KPiANCj4gKyAgICBOb1N1Ym1pdElmPTExMg0K PiANCj4gKyAgICBFbmRJZj0xMTMNCj4gDQo+ICsgICAgS2V5PTExNA0KPiANCj4gKyAgICBEZWZh dWx0RmxhZz0xMTUNCj4gDQo+ICsgICAgTWFudWZhY3R1cmluZ0ZsYWc9MTE2DQo+IA0KPiArICAg IENoZWNrQm94RGVmYXVsdEZsYWc9MTE3DQo+IA0KPiArICAgIENoZWNrQm94RGVmYXVsdE1mZ0Zs YWc9MTE4DQo+IA0KPiArICAgIEludGVyYWN0aXZlRmxhZz0xMTkNCj4gDQo+ICsgICAgTlZBY2Nl c3NGbGFnPTEyMA0KPiANCj4gKyAgICBSZXNldFJlcXVpcmVkRmxhZz0xMjENCj4gDQo+ICsgICAg UmVjb25uZWN0UmVxdWlyZWRGbGFnPTEyMg0KPiANCj4gKyAgICBMYXRlQ2hlY2tGbGFnPTEyMw0K PiANCj4gKyAgICBSZWFkT25seUZsYWc9MTI0DQo+IA0KPiArICAgIE9wdGlvbk9ubHlGbGFnPTEy NQ0KPiANCj4gKyAgICBSZXN0U3R5bGVGbGFnPTEyNg0KPiANCj4gKyAgICBDbGFzcz0xMjcNCj4g DQo+ICsgICAgU3ViY2xhc3M9MTI4DQo+IA0KPiArICAgIENsYXNzR3VpZD0xMjkNCj4gDQo+ICsg ICAgVHlwZURlZj0xMzANCj4gDQo+ICsgICAgUmVzdG9yZT0xMzENCj4gDQo+ICsgICAgU2F2ZT0x MzINCj4gDQo+ICsgICAgRGVmYXVsdHM9MTMzDQo+IA0KPiArICAgIEJhbm5lcj0xMzQNCj4gDQo+ ICsgICAgQWxpZ249MTM1DQo+IA0KPiArICAgIExlZnQ9MTM2DQo+IA0KPiArICAgIFJpZ2h0PTEz Nw0KPiANCj4gKyAgICBDZW50ZXI9MTM4DQo+IA0KPiArICAgIExpbmU9MTM5DQo+IA0KPiArICAg IE5hbWU9MTQwDQo+IA0KPiArICAgIFZhcklkPTE0MQ0KPiANCj4gKyAgICBRdWVzdGlvbj0xNDIN Cj4gDQo+ICsgICAgUXVlc3Rpb25JZD0xNDMNCj4gDQo+ICsgICAgSW1hZ2U9MTQ0DQo+IA0KPiAr ICAgIExvY2tlZD0xNDUNCj4gDQo+ICsgICAgUnVsZT0xNDYNCj4gDQo+ICsgICAgRW5kUnVsZT0x NDcNCj4gDQo+ICsgICAgVmFsdWU9MTQ4DQo+IA0KPiArICAgIFJlYWQ9MTQ5DQo+IA0KPiArICAg IFdyaXRlPTE1MA0KPiANCj4gKyAgICBSZXNldEJ1dHRvbj0xNTENCj4gDQo+ICsgICAgRW5kUmVz ZXRCdXR0b249MTUyDQo+IA0KPiArICAgIERlZmF1bHRTdG9yZT0xNTMNCj4gDQo+ICsgICAgQXR0 cmlidXRlPTE1NA0KPiANCj4gKyAgICBWYXJzdG9yZT0xNTUNCj4gDQo+ICsgICAgRWZpdmFyc3Rv cmU9MTU2DQo+IA0KPiArICAgIFZhclNpemU9MTU3DQo+IA0KPiArICAgIE5hbWVWYWx1ZVZhclN0 b3JlPTE1OA0KPiANCj4gKyAgICBBY3Rpb249MTU5DQo+IA0KPiArICAgIENvbmZpZz0xNjANCj4g DQo+ICsgICAgRW5kQWN0aW9uPTE2MQ0KPiANCj4gKyAgICBSZWZyZXNoPTE2Mg0KPiANCj4gKyAg ICBJbnRlcnZhbD0xNjMNCj4gDQo+ICsgICAgVmFyc3RvcmVEZXZpY2U9MTY0DQo+IA0KPiArICAg IEd1aWRPcD0xNjUNCj4gDQo+ICsgICAgRW5kR3VpZE9wPTE2Ng0KPiANCj4gKyAgICBEYXRhVHlw ZT0xNjcNCj4gDQo+ICsgICAgRGF0YT0xNjgNCj4gDQo+ICsgICAgTW9kYWw9MTY5DQo+IA0KPiAr ICAgIENsYXNzTm9uRGV2aWNlPTE3MA0KPiANCj4gKyAgICBDbGFzc0Rpc2tEZXZpY2U9MTcxDQo+ IA0KPiArICAgIENsYXNzVmlkZW9EZXZpY2U9MTcyDQo+IA0KPiArICAgIENsYXNzTmV0d29ya0Rl dmljZT0xNzMNCj4gDQo+ICsgICAgQ2xhc3NJbnB1dERldmljZT0xNzQNCj4gDQo+ICsgICAgQ2xh c3NPbkJvYXJkRGV2aWNlPTE3NQ0KPiANCj4gKyAgICBDbGFzc090aGVyRGV2aWNlPTE3Ng0KPiAN Cj4gKyAgICBTdWJjbGFzc1NldHVwQXBwbGljYXRpb249MTc3DQo+IA0KPiArICAgIFN1YmNsYXNz R2VuZXJhbEFwcGxpY2F0aW9uPTE3OA0KPiANCj4gKyAgICBTdWJjbGFzc0Zyb250UGFnZT0xNzkN Cj4gDQo+ICsgICAgU3ViY2xhc3NTaW5nbGVVc2U9MTgwDQo+IA0KPiArICAgIFllYXJTdXBwcHJl c3NGbGFnPTE4MQ0KPiANCj4gKyAgICBNb250aFN1cHByZXNzRmxhZz0xODINCj4gDQo+ICsgICAg RGF5U3VwcHJlc3NGbGFnPTE4Mw0KPiANCj4gKyAgICBIb3VyU3VwcHByZXNzRmxhZz0xODQNCj4g DQo+ICsgICAgTWludXRlU3VwcHJlc3NGbGFnPTE4NQ0KPiANCj4gKyAgICBTZWNvbmRTdXBwcmVz c0ZsYWc9MTg2DQo+IA0KPiArICAgIFN0b3JhZ2VOb3JtYWxGbGFnPTE4Nw0KPiANCj4gKyAgICBT dG9yYWdlVGltZUZsYWc9MTg4DQo+IA0KPiArICAgIFN0b3JhZ2VXYWtlVXBGbGFnPTE4OQ0KPiAN Cj4gKyAgICBVbmlRdWVGbGFnPTE5MA0KPiANCj4gKyAgICBOb0VtcHR5RmxhZz0xOTENCj4gDQo+ ICsgICAgQ29uZD0xOTINCj4gDQo+ICsgICAgRmluZD0xOTMNCj4gDQo+ICsgICAgTWlkPTE5NA0K PiANCj4gKyAgICBUb2s9MTk1DQo+IA0KPiArICAgIFNwYW49MTk2DQo+IA0KPiArICAgIER1cD0x OTcNCj4gDQo+ICsgICAgVmFyRXFWYWw9MTk4DQo+IA0KPiArICAgIFZhcj0xOTkNCj4gDQo+ICsg ICAgSWRFcVZhbD0yMDANCj4gDQo+ICsgICAgSWRFcUlkPTIwMQ0KPiANCj4gKyAgICBJZEVxVmFs TGlzdD0yMDINCj4gDQo+ICsgICAgUXVlc3Rpb25SZWY9MjAzDQo+IA0KPiArICAgIFJ1bGVSZWY9 MjA0DQo+IA0KPiArICAgIFN0cmluZ1JlZj0yMDUNCj4gDQo+ICsgICAgUHVzaFRoaXM9MjA2DQo+ IA0KPiArICAgIFNlY3VyaXR5PTIwNw0KPiANCj4gKyAgICBHZXQ9MjA4DQo+IA0KPiArICAgIFRy dWVTeW1ib2w9MjA5DQo+IA0KPiArICAgIEZhbHNlU3ltYm9sPTIxMA0KPiANCj4gKyAgICBPbmU9 MjExDQo+IA0KPiArICAgIE9uZXM9MjEyDQo+IA0KPiArICAgIFplcm89MjEzDQo+IA0KPiArICAg IFVuZGVmaW5lZD0yMTQNCj4gDQo+ICsgICAgVmVyc2lvbj0yMTUNCj4gDQo+ICsgICAgTGVuZ3Ro PTIxNg0KPiANCj4gKyAgICBBTkQ9MjE3DQo+IA0KPiArICAgIE9SPTIxOA0KPiANCj4gKyAgICBO T1Q9MjE5DQo+IA0KPiArICAgIFNldD0yMjANCj4gDQo+ICsgICAgQml0V2lzZU5vdD0yMjENCj4g DQo+ICsgICAgQm9vbFZhbD0yMjINCj4gDQo+ICsgICAgU3RyaW5nVmFsPTIyMw0KPiANCj4gKyAg ICBVbkludFZhbD0yMjQNCj4gDQo+ICsgICAgVG9VcHBlcj0yMjUNCj4gDQo+ICsgICAgVG9Mb3dl cj0yMjYNCj4gDQo+ICsgICAgTWF0Y2g9MjI3DQo+IA0KPiArICAgIE1hdGNoMj0yMjgNCj4gDQo+ ICsgICAgQ2F0ZW5hdGU9MjI5DQo+IA0KPiArICAgIFF1ZXN0aW9uUmVmVmFsPTIzMA0KPiANCj4g KyAgICBTdHJpbmdSZWZWYWw9MjMxDQo+IA0KPiArICAgIE1hcD0yMzINCj4gDQo+ICsgICAgUmVm cmVzaEd1aWQ9MjMzDQo+IA0KPiArICAgIFN0cmluZ1Rva2VuPTIzNA0KPiANCj4gKyAgICBPcHRp b25EZWZhdWx0PTIzNQ0KPiANCj4gKyAgICBPcHRpb25EZWZhdWx0TWZnPTIzNg0KPiANCj4gKyAg ICBOdW1lcmljU2l6ZU9uZT0yMzcNCj4gDQo+ICsgICAgTnVtZXJpY1NpemVUd289MjM4DQo+IA0K PiArICAgIE51bWVyaWNTaXplRm91cj0yMzkNCj4gDQo+ICsgICAgTnVtZXJpY1NpemVFaWdodD0y NDANCj4gDQo+ICsgICAgRGlzUGxheUludERlYz0yNDENCj4gDQo+ICsgICAgRGlzUGxheVVJbnRE ZWM9MjQyDQo+IA0KPiArICAgIERpc1BsYXlVSW50SGV4PTI0Mw0KPiANCj4gKyAgICBJbnNlbnNp dGl2ZT0yNDQNCj4gDQo+ICsgICAgU2Vuc2l0aXZlPTI0NQ0KPiANCj4gKyAgICBMYXN0Tm9uTWF0 Y2g9MjQ2DQo+IA0KPiArICAgIEZpcnN0Tm9uTWF0Y2g9MjQ3DQo+IA0KPiArICAgIE51bWJlcj0y NDgNCj4gDQo+ICsgICAgU3RyaW5nSWRlbnRpZmllcj0yNDkNCj4gDQo+ICsgICAgQ29tcGxleERl ZmluZT0yNTANCj4gDQo+ICsgICAgTGluZURlZmluaXRpb249MjUxDQo+IA0KPiArICAgIEluY2x1 ZGVEZWZpbml0aW9uPTI1Mg0KPiANCj4gKyAgICBXaGl0ZXNwYWNlPTI1Mw0KPiANCj4gKyAgICBO ZXdsaW5lPTI1NA0KPiANCj4gKyAgICBMaW5lQ29tbWVudD0yNTUNCj4gDQo+ICsgICAgRXh0ZXJu PTI1Ng0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5wdXQ6VG9rZW5T dHJlYW0sIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4gDQo+ICsgICAgICAgIHN1cGVy KCkuX19pbml0X18oaW5wdXQsIG91dHB1dCkNCj4gDQo+ICsgICAgICAgIHNlbGYuY2hlY2tWZXJz aW9uKCI0LjcuMiIpDQo+IA0KPiArICAgICAgICBzZWxmLl9pbnRlcnAgPSBQYXJzZXJBVE5TaW11 bGF0b3Ioc2VsZiwgc2VsZi5hdG4sIHNlbGYuZGVjaXNpb25zVG9ERkEsDQo+IHNlbGYuc2hhcmVk Q29udGV4dENhY2hlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fcHJlZGljYXRlcyA9IE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyUHJv Z3JhbUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclByYWdtYVBhY2tE ZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclByYWdtYVBhY2tEZWZpbml0aW9uQ29udGV4dCkN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNr RGVmaW5pdGlvbkNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVm aW5pdGlvbkNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyRGF0YVN0cnVjdERlZmluaXRpb25Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyRGF0YVVuaW9uRGVmaW5pdGlvbihzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5W ZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dCxpKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm1TZXREZWZpbml0aW9uKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUHJvZ3JhbQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclBy b2dyYW0iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy UHJvZ3JhbShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclByb2dyYW0oc2VsZik6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJQcm9n cmFtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMCwgc2VsZi5SVUxFX3ZmclByb2dyYW0pDQo+IA0KPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLlRf XzMgb3IgKCgoKF9sYSAtIDc4KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxDQo+IDw8IChfbGEgLSA3 OCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RydWN0IC0gNzgpKSB8ICgxIDw8DQo+IChW ZnJTeW50YXhQYXJzZXIuVW5pb24gLSA3OCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UeXBl RGVmIC0gNzgpKSkpICE9IDApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDA5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0 KHNlbGYuX2lucHV0LDAsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBsYV8g PT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDYNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyUHJhZ21hUGFja0RlZmluaXRpb24oKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg ICAgICBlbGlmIGxhXyA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDQwNw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJEYXRhU3RydWN0RGVm aW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDM6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDA4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZm ckRhdGFVbmlvbkRlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDEz DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZv cm1TZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTQNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi52ZnJGb3JtU2V0RGVmaW5pdGlvbigpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg UHJhZ21hUGFja1Nob3dEZWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ByYWdtYVBhY2tTaG93RGVmDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UHJhZ21hUGFja1Nob3dEZWYi ICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHJhZ21hUGFj a1Nob3dEZWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBwcmFnbWFQYWNrU2hvd0RlZihz ZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlByYWdtYVBhY2tTaG93RGVmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUp DQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMiwgc2VsZi5SVUxFX3By YWdtYVBhY2tTaG93RGVmKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDE3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fMCkNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBQcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9w cmFnbWFQYWNrU3RhY2tEZWYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRQcmFnbWFQYWNrU3RhY2tEZWYiICk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHJhZ21hUGFja1N0YWNrRGVmKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgcHJhZ21hUGFja1N0YWNrRGVmKHNlbGYpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuUHJhZ21hUGFja1N0YWNr RGVmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNCwgc2VsZi5SVUxFX3ByYWdtYVBhY2tTdGFja0Rl ZikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxOQ0KPiANCj4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgbm90KF9s YT09VmZyU3ludGF4UGFyc2VyLlRfXzEgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMik6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5jb25zdW1lKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDIyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwzLHNlbGYu X2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDQyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0MjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDI0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBQcmFnbWFQYWNrTnVtYmVyQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9wcmFnbWFQYWNrTnVtYmVyDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 UHJhZ21hUGFja051bWJlciIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRQcmFnbWFQYWNrTnVtYmVyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgcHJh Z21hUGFja051bWJlcihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwN Cj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2 LCBzZWxmLlJVTEVfcHJhZ21hUGFja051bWJlcikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQyOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNDI4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJQcmFnbWFQYWNrRGVm aW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFy ZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcHJh Z21hUGFja1Nob3dEZWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUHJhZ21hUGFja1Nob3dEZWZDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcHJhZ21hUGFja1N0 YWNrRGVmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTdGFja0RlZkNvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBwcmFnbWFQYWNrTnVtYmVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJQcmFnbWFQYWNrRGVmaW5p dGlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclByYWdtYVBhY2tEZWZpbml0aW9uIiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyUHJhZ21hUGFja0RlZmluaXRpb24oc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNr RGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDgsIHNlbGYuUlVMRV92ZnJQcmFnbWFQ YWNrRGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQzMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzMpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQzMg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzQpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDQzMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDM3 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1 dCw2LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQzNA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnByYWdtYVBhY2tTaG93RGVmKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IGxhXyA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDM1DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYucHJhZ21hUGFja1N0YWNrRGVmKCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAzOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDM2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYucHJhZ21hUGFja051 bWJlcigpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQzOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xh c3MgVmZyRGF0YVN0cnVjdERlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk4xID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OMiA9IE5vbmUg IyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cnVjdChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RydWN0 LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJy YWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckRhdGFTdHJ1Y3RGaWVsZHMo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNlKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFR5cGVEZWYoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlR5 cGVEZWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTm9uTnZEYXRhTWFwKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Ob25OdkRhdGFNYXAsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRl bnRpZmllcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRGF0YVN0cnVjdERlZmluaXRpb24iICk6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRGF0YVN0cnVj dERlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJEYXRhU3RydWN0RGVm aW5pdGlvbihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTAsIHNlbGYuUlVMRV92ZnJEYXRhU3RydWN0RGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDQ0Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVHlwZURlZjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0MQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UeXBlRGVmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDQNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJ1Y3QpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQ0Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDQ1DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDQ5DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNDQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4xID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDUxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0NTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmckRhdGFTdHJ1Y3RGaWVsZHMo RmFsc2UpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1Mw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1NA0KPiANCj4g KyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQ1Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBjbGFzcyBWZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5OMSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu TjIgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVbmlvbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuVW5pb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJyYWNlKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2UsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyRGF0YVN0cnVj dEZpZWxkcyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlQnJhY2Uoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlQnJhY2UsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVHlwZURlZihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuVHlwZURlZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOb25OdkRhdGFN YXAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk5vbk52RGF0YU1hcCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBT dHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyRGF0YVVuaW9uRGVmaW5pdGlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRhdGFVbmlvbkRlZmluaXRp b24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRGF0 YVVuaW9uRGVmaW5pdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckRhdGFVbmlv bkRlZmluaXRpb24oc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTIsIHNlbGYuUlVMRV92ZnJEYXRhVW5pb25EZWZpbml0aW9uKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDYwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5UeXBlRGVmOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDU5DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlR5cGVEZWYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2Mg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVuaW9uKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2Mw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2Nw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDQ2Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMSA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDcwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJEYXRhU3RydWN0RmllbGRz KFRydWUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3MQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3Mg0KPiANCj4g KyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQ3NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBjbGFzcyBWZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZp ZWxkSW5Vbmlvbj1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkNjQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEZpZWxkNjRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDY0Q29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RGaWVsZDMyQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5EYXRhU3RydWN0RmllbGQzMkNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGQxNihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0 RmllbGQxNkNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRGF0YVN0cnVjdEZpZWxkMTZDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkOChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGQ4Q29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5E YXRhU3RydWN0RmllbGQ4Q29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZEJvb2woc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk Qm9vbENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGRTdHJpbmcoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkU3RyaW5nQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGRTdHJpbmdDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkRGF0ZShzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5E YXRhU3RydWN0RmllbGREYXRlQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGREYXRlQ29udGV4dCxpKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuRGF0YVN0cnVjdEZpZWxkVGltZUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVGltZUNvbnRleHQsaSkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGRSZWYoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRSZWZDb250ZXh0LGkpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkVXNlcihzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dCxpKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dCkNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQs aSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0Qml0Rmll bGQzMihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQzMkNvbnRleHQpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMzJD b250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZGF0YVN0cnVj dEJpdEZpZWxkMTYoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMTZDb250ZXh0KQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRG aWVsZDE2Q29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGRh dGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkOENvbnRl eHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEJpdEZpZWxkOENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmckRhdGFTdHJ1Y3RGaWVsZHMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJEYXRhU3RydWN0RmllbGRzIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckRhdGFTdHJ1 Y3RGaWVsZHMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJEYXRhU3RydWN0RmllbGRz KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxNCwgc2VsZi5SVUxFX3ZmckRhdGFTdHJ1Y3RGaWVsZHMpDQo+IA0K PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA4MCkpICYgfjB4 M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gODApKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4UGFy c2VyLkJvb2xlYW4gLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50NjQgLSA4MCkp IHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5VaW50MzIgLSA4MCkpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5VaW50MTYgLSA4MCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5VaW50 OCAtIDgwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkVGSV9TVFJJTkdfSUQgLSA4MCkpIHwg KDENCj4gPDwgKFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUgLSA4MCkpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5FRklfSElJX1RJTUUNCj4gLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5FRklfSElJX1JFRiAtIDgwKSkpKSAhPSAwKSBvcg0KPiBfbGE9PVZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDkxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0 KHNlbGYuX2lucHV0LDE1LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgbGFf ID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDc3DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVsZDY0KEZpZWxkSW5Vbmlv bikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVj dEZpZWxkMzIoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAzOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3OQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGQxNihGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYg bGFfID09IDQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDgwDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVsZDgoRmllbGRJblVu aW9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA1Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQ4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3Ry dWN0RmllbGRCb29sKEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODINCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkU3RyaW5nKEZpZWxkSW5VbmlvbikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAg ICAgZWxpZiBsYV8gPT0gNzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0ODMNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkRGF0 ZShGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDg6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLmRhdGFTdHJ1Y3RGaWVsZFRpbWUoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9 PSA5Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4NQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGRSZWYoRmllbGRJblVuaW9u KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgICAgICBlbGlmIGxhXyA9PSAxMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0ODYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVj dEZpZWxkVXNlcihGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDExOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Nw0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5kYXRhU3RydWN0Qml0RmllbGQ2NChGaWVsZEluVW5pb24pDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg IGVsaWYgbGFfID09IDEyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQ4OA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Qml0RmllbGQz MihGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDEzOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4OQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5kYXRhU3RydWN0Qml0RmllbGQxNihGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgbGFf ID09IDE0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5MA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Qml0RmllbGQ4KEZpZWxkSW5V bmlvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5NQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQ2NENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5Vbmlv biA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDY0LCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfZGF0YVN0cnVjdEZpZWxkNjQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGQ2NCIgKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGQ2NChzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIEZpZWxkSW5Vbmlv bik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5E YXRhU3RydWN0RmllbGQ2NENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBG aWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYs IHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGQ2NCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQ5Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlVpbnQ2NCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk3DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0OTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTAwDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTAzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RG aWVsZDMyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUg IyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVu aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MzIsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJh Y2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xv c2VCcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQzMg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZDMyIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RG aWVsZDMyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMzIoc2Vs ZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAxOCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDMyKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 MDYNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTEwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDUwNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDUwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MDkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VC cmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1MTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xh c3MgRGF0YVN0cnVjdEZpZWxkMTZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5p b24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50MTYoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlVpbnQxNiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0 cnVjdEZpZWxkMTYiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0RGF0YVN0cnVjdEZpZWxkMTYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBkYXRhU3Ry dWN0RmllbGQxNihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkMTZDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkMTYp DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTQNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDUxNQ0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1MTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTE2DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNTE3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDUxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDUyMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQ4Q29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZp ZWxkSW5Vbmlvbj1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgVWludDgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlVpbnQ4LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNl bWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxk OA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdERhdGFTdHJ1Y3RGaWVsZDgiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkOChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDhDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZp ZWxkOCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyMw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1MjQNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTI4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyNQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyNg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1MjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1MzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIEJvb2xlYW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJvb2xlYW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNr ZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRh U3RydWN0RmllbGRCb29sDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkQm9vbCIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGRCb29sKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkQm9vbChzZWxmLCBGaWVsZEluVW5p b24pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl LCBGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MjQsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGRCb29sKQ0KPiANCj4gKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTMyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQm9vbGVhbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTMzDQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzNw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA1MzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1MzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTM2DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTM5DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5h bGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIERhdGFT dHJ1Y3RGaWVsZFN0cmluZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9 IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9TVFJJTkdfSUQo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkVGSV9TVFJJTkdfSUQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2Vt aWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGRT dHJpbmcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXREYXRhU3RydWN0RmllbGRTdHJpbmciICk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYsIEZpZWxkSW5Vbmlvbik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRh U3RydWN0RmllbGRTdHJpbmdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwg RmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2 LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkU3RyaW5nKQ0KPiANCj4gKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTQxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRUZJX1NUUklOR19JRCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQy DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0 Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1NDMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA1NDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQ1DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJh Y2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTQ4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IERhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5p b24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFRklfSElJX0RB VEUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVGSV9ISUlfREFURSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVs ZERhdGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXREYXRhU3RydWN0RmllbGREYXRlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZERhdGUoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBkYXRhU3RydWN0RmllbGREYXRlKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0 RmllbGREYXRlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5V bmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOCwgc2VsZi5S VUxFX2RhdGFTdHJ1Y3RGaWVsZERhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1NTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklf SElJX0RBVEUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1MQ0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTUyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUz DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1NA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1Nw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBEYXRhU3RydWN0 RmllbGRUaW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5v bmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJ blVuaW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9USU1FKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5F RklfSElJX1RJTUUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRl bnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGRUaW1lDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0 YVN0cnVjdEZpZWxkVGltZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXREYXRhU3RydWN0RmllbGRUaW1lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg ZGF0YVN0cnVjdEZpZWxkVGltZShzZWxmLCBGaWVsZEluVW5pb24pOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVGltZUNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzAsIHNlbGYuUlVMRV9kYXRhU3Ry dWN0RmllbGRUaW1lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTU5DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjANCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTY0DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2MQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJh Y2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2Mg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjMNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjYNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkUmVmQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJ blVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9SRUYoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJy YWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENs b3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkUmVmDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkUmVm IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1 Y3RGaWVsZFJlZihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFJl ZihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAzMiwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFJlZikNCj4gDQo+ ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA1NjkNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTczDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3MA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA1NzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1NzUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBG aWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLlQgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5Vbmlv biA9IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJy YWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENs b3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkVXNlcg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZFVz ZXIiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0 cnVjdEZpZWxkVXNlcihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVs ZFVzZXIoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFVzZXJDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDM0LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkVXNlcikN Cj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAg IHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3Nw0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LlQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzgNCj4gDQo+ICsgICAgICAgICAg ICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTgyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3 OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVu QnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4MA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODQNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEJpdEZpZWxk NjRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5G aWVsZEluVW5pb24gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAjIFRv a2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgVWludDY0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50NjQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDY0DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 RGF0YVN0cnVjdEJpdEZpZWxkNjQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkNjQoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBkYXRhU3RydWN0Qml0RmllbGQ2NChzZWxmLCBGaWVsZEluVW5pb24pOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZp ZWxkNjRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9u KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2LCBzZWxmLlJVTEVf ZGF0YVN0cnVjdEJpdEZpZWxkNjQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 ODYNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVWludDY0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODgNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1ODcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5MA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1OTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5Mg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4g DQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxs eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBEYXRhU3Ry dWN0Qml0RmllbGQzMkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkQg PSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4N Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEJp dEZpZWxkMzINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXREYXRhU3RydWN0Qml0RmllbGQzMiIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0Qml0RmllbGQzMihzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDMyKHNlbGYsIEZpZWxkSW5Vbmlvbik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRh U3RydWN0Qml0RmllbGQzMkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBG aWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgs IHNlbGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQzMikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDU5NA0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDU5Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTk4DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlv bj1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5v bmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJ blVuaW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29sb24oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVpbnQxNihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDE2LCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9k YXRhU3RydWN0Qml0RmllbGQxNg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDE2IiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDE2KHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgZGF0YVN0cnVjdEJpdEZpZWxkMTYoc2VsZiwgRmll bGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNl bGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCA0MCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDE2KQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjAyDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguRCA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQxNikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjA0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjAzDQo+IA0KPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA2MDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xv bikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjA3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2MDgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEJpdEZpZWxkOENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBG aWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5Vbmlv biA9IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Db2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50OChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWlu dDgsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDgNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0Qml0RmllbGQ4IiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RCaXRGaWVs ZDgoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQ4KHNlbGYs IEZpZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA0Miwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDgpDQo+IA0KPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MTANCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5E ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDgpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYxMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxMQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjE0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29s b24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxNQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjE2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFZmckZvcm1TZXREZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX1NFVF9PUCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGb3JtU2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtU2V0LCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFV1aWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3Vp ZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGl0bGUsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBIZWxwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5IZWxwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm ckZvcm1TZXRMaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZEZvcm1TZXQoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkVuZEZvcm1TZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xhc3NHdWlk KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbGFzc0d1aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgY2xhc3Nn dWlkRGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DbGFzc2d1aWREZWZpbml0aW9uQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsYXNzKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbGFzcywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjbGFzc0RlZmluaXRpb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuQ2xhc3NEZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN1YmNsYXNzKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJjbGFzcywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBzdWJjbGFzc0RlZmluaXRpb24oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuU3ViY2xhc3NEZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldERlZmluaXRpb24NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJGb3JtU2V0RGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJGb3JtU2V0RGVmaW5pdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIHZmckZvcm1TZXREZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldERlZmluaXRpb25Db250ZXh0KHNl bGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCA0NCwgc2VsZi5SVUxFX3ZmckZvcm1TZXREZWZpbml0aW9uKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybVNldCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNjE5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VXVpZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjIwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjIxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlv bigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyMg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2MjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UaXRsZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI0DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDYyNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI3DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA2MjkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjMwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGVscCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjMxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjMyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzMw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjM0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNjQyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5DbGFzc0d1aWQ6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xhc3NHdWlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjM4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5jbGFzc2d1aWREZWZpbml0aW9uKGxvY2FsY3R4 Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0OQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuQ2xhc3M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xh c3MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDUNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmNsYXNzRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1 Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3ViY2xhc3M6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2NTENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3ViY2xhc3MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA2NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1Mw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN1YmNsYXNzRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2NTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDY1OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNl dExpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjU5 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kRm9ybVNl dCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjYwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIENsYXNzZ3VpZERlZmluaXRpb25D b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkd1aWRMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBOb2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmlu aXRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0KQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCxpKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jbGFzc2d1aWREZWZpbml0aW9uDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q2xhc3Nn dWlkRGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDbGFzc2d1aWREZWZpbml0aW9uKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgY2xh c3NndWlkRGVmaW5pdGlvbihzZWxmLCBOb2RlKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNsYXNzZ3VpZERlZmluaXRpb25Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgTm9kZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCA0Niwgc2VsZi5SVUxFX2NsYXNzZ3VpZERlZmluaXRpb24pDQo+IA0K PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lmd1aWREZWZpbml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY1DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwz NCxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjY0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmlu aXRpb24oKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA2NjkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYu X2lucHV0LDM1LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY2Nw0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5n dWlkRGVmaW5pdGlvbigpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY3Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjcxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY3Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZp bml0aW9uKCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBDbGFzc0RlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmFsaWRDbGFzc05hbWVzKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZh bGlkQ2xhc3NOYW1lc0NvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmFsaWRDbGFzc05hbWVzQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9jbGFzc0RlZmluaXRpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDbGFzc0RlZmluaXRpb24iICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2xhc3NEZWZpbml0aW9uKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgY2xhc3NEZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2xhc3NEZWZpbml0aW9uQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgNDgsIHNlbGYuUlVMRV9jbGFzc0RlZmluaXRpb24pDQo+IA0K PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnZhbGlkQ2xhc3NOYW1lcygpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY4MA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hp bGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjc2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDY3Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZhbGlkQ2xhc3NOYW1lcygpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2ODINCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmFsaWRDbGFzc05hbWVzQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5DbGFzc05hbWUgPSAwDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgQ2xhc3NOb25EZXZpY2Uoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzTm9uRGV2aWNlLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIENsYXNzRGlza0RldmljZShzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NEaXNrRGV2 aWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsYXNzVmlkZW9EZXZpY2Uoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsYXNzVmlkZW9EZXZpY2UsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xh c3NOZXR3b3JrRGV2aWNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc05ldHdvcmtEZXZpY2UsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ2xhc3NJbnB1dERldmljZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NJbnB1dERldmlj ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbGFzc09uQm9hcmREZXZpY2Uoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsYXNzT25Cb2FyZERldmljZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBD bGFzc090aGVyRGV2aWNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc090aGVyRGV2aWNlLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmFsaWRDbGFzc05hbWVzDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmFsaWRDbGFzc05hbWVz IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZhbGlkQ2xh c3NOYW1lcyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZhbGlkQ2xhc3NOYW1lcyhzZWxm KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZh bGlkQ2xhc3NOYW1lc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDUwLCBzZWxmLlJVTEVfdmFsaWRD bGFzc05hbWVzKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiAN Cj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjgzDQo+IA0KPiAr ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBp ZiBub3QoKCgoKF9sYSAtIDE3MCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTcw KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5DbGFzc05vbkRldmljZSAtIDE3MCkpIHwg KDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5DbGFzc0Rpc2tEZXZpY2UgLSAxNzApKSB8ICgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NWaWRlb0RldmljZSAtIDE3MCkpIHwgKDEgPDwNCj4g KFZmclN5bnRheFBhcnNlci5DbGFzc05ldHdvcmtEZXZpY2UgLSAxNzApKSB8ICgxIDw8DQo+IChW ZnJTeW50YXhQYXJzZXIuQ2xhc3NJbnB1dERldmljZSAtIDE3MCkpIHwgKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5DbGFzc09uQm9hcmREZXZpY2UgLSAxNzApKSB8ICgxIDw8DQo+IChWZnJTeW50 YXhQYXJzZXIuQ2xhc3NPdGhlckRldmljZSAtIDE3MCkpKSkgIT0gMCkgb3INCj4gX2xhPT1WZnJT eW50YXhQYXJzZXIuTnVtYmVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFN1YmNsYXNzRGVmaW5pdGlvbkNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJ RF9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdWJjbGFzc1NldHVwQXBwbGljYXRp b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NHZW5l cmFsQXBwbGljYXRpb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3ViY2xhc3NG cm9udFBhZ2Uoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzRnJvbnRQYWdlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFN1YmNsYXNzU2luZ2xlVXNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJjbGFzc1NpbmdsZVVzZSwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3N1YmNsYXNzRGVmaW5pdGlvbg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFN1YmNsYXNzRGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRTdWJjbGFzc0RlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBzdWJjbGFzc0RlZmluaXRpb24oc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0RlZmluaXRpb25Db250ZXh0KHNlbGYsIHNl bGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCA1Miwgc2VsZi5SVUxFX3N1YmNsYXNzRGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDY4NQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAxNzcpKSAmIH4w eDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE3NykpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQ YXJzZXIuU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uIC0gMTc3KSkgfCAoMSA8PA0KPiAoVmZyU3lu dGF4UGFyc2VyLlN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uIC0gMTc3KSkgfCAoMSA8PA0KPiAo VmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzRnJvbnRQYWdlIC0gMTc3KSkgfCAoMSA8PA0KPiAoVmZy U3ludGF4UGFyc2VyLlN1YmNsYXNzU2luZ2xlVXNlIC0gMTc3KSkpKSAhPSAwKSBvcg0KPiBfbGE9 PVZmclN5bnRheFBhcnNlci5OdW1iZXIpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRm9ybVNldExpc3RDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyRm9ybVNldChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29udGV4dCkNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29udGV4dCxpKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNl dExpc3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJGb3JtU2V0TGlzdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJGb3JtU2V0TGlzdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IHZmckZvcm1TZXRMaXN0KHNlbGYsIE5vZGUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldExpc3RDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSwNCj4gTm9kZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA1NCwgc2VsZi5SVUxFX3ZmckZvcm1TZXRMaXN0KQ0KPiANCj4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNjkwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5Gb3JtIG9yIF9s YT09VmZyU3ludGF4UGFyc2VyLkZvcm1NYXANCj4gb3IgKCgoKF9sYSAtIDEwNSkpICYgfjB4M2Yp ID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTA1KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNl ci5TdXBwcmVzc0lmIC0gMTA1KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAt IDEwNSkpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDEwNSkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUgLQ0KPiAxMDUpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuVmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuRWZp dmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuTmFtZVZhbHVlVmFy U3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0NCj4gMTA1KSkp KSAhPSAwKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY4Nw0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm1TZXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjkyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGNsYXNzIFZmckZvcm1TZXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyRm9ybURlZmluaXRpb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyRm9ybU1hcERlZmluaXRpb24oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW1hZ2Uoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0DQo+ICwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlRWZpQ29udGV4dCwwKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTmFt ZVZhbHVlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVl Q28NCj4gbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVm YXVsdFN0b3JlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RGlzYWJsZUlmRm9ybVNldENvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXRDb24NCj4gdGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4dGVuc2lv bihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJGb3JtU2V0 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyRm9ybVNldCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJGb3JtU2V0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRm9ybVNldChz ZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmckZvcm1TZXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1Niwgc2VsZi5SVUxFX3ZmckZvcm1TZXQp DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDMNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Gb3JtXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY5Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm1EZWZp bml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Gb3JtTWFwXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm ckZvcm1NYXBEZWZpbml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTUNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRJbWFnZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVmFyc3Rv cmVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjk2DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkVmaXZhcnN0b3JlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY5Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFZhclN0 b3JlRWZpKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OYW1lVmFsdWVWYXJTdG9yZV06DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTgNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSgpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuRGVmYXVsdFN0b3JlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDY5OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERlZmF1bHRTdG9y ZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDcwMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudERpc2FibGVJZkZvcm1TZXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWZdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzAxDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkd1aWRPcF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHRlbnNp b24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLlMgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkEgPSBOb25l ICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0U3RvcmUoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHRTdG9yZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBBdHRyaWJ1dGUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0ZSwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudERlZmF1bHRTdG9y ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudERlZmF1bHRTdG9yZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRE ZWZhdWx0U3RvcmVDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1OCwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudERlZmF1bHRTdG9yZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwNQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9y ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzA2DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwNw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3MDgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Qcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwOQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3MTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxMg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LlMgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxMw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDcxOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3MTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQXR0cmlidXRlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzE2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTcNCj4gDQo+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguQSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzIwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9PUCkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLlROID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5JRCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU04gPSBOb25lICMg VG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYXJzdG9yZShzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFyc3Rv cmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTmFtZShzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmFtZSwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFV1 aWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlV1aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmlu aXRpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50OChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MTYsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MzIsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDY0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50NjQsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9EQVRFKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9USU1FKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklf SElJX1RJTUUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9SRUYoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVGSV9ISUlfUkVGLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhcklkKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5WYXJJZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0 YXRlbWVudFZhclN0b3JlTGluZWFyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIiICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFy U3RvcmVMaW5lYXIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJT dG9yZUxpbmVhcihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyQ29udGV4dChzZWxmLA0KPiBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgNjAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcikNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcyMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlZhcnN0b3JlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyXToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcyMw0KPiANCj4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5UTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjQNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuVWludDhdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlVpbnQ4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI2DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlVpbnQxNl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3MjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVWludDE2KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI4DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQzMl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA3MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVWludDMyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMw DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ2NF06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3MzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVWludDY0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURV06DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzM0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRV06 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzM2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkVGSV9ISUlfUkVGXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczNw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJ X1JFRikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczOA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0NQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu VmFySWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDENCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDINCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc0Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5JRCA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc0NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzQ3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQ4DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzQ5DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguU04g PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzUxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVXVpZCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzUyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzUzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1NA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9J RlJfVkFSU1RPUkVfRUZJX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVE4gPSBOb25lICMg VG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklEID0gTm9uZSAjIFRva2VuDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuVk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMg VG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFZml2YXJzdG9yZShzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRWZp dmFyc3RvcmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQXR0cmlidXRlKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5BdHRyaWJ1dGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyVmFyU3RvcmVF ZmlBdHRyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0ckNvbnRleHQpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyVmFyU3RvcmVFZmlBdHRyQ29u dGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgVXVpZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlv bkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50 OChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuVWludDgsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDE2KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50MTYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDMyKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5VaW50MzIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDY0KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5V aW50NjQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9EQVRFKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FRklfSElJX0RBVEUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9U SU1FKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5FRklfSElJX1RJTUUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg RUZJX0hJSV9SRUYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE5hbWUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk5hbWUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgVmFyU2l6ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFyU2l6ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFZhcklkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudFZhclN0b3JlRWZpIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2VsZik6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9y ZUVmaUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDYyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50VmFy U3RvcmVFZmkpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0K PiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTYNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FZml2YXJzdG9yZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzczDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA3NTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguVE4gPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzU4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ4XToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc2MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MTZdOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzYxDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQxNikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDc2Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzYzDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQzMikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDc2NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzY1DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJ X0RBVEVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzY3DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2OA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5FRklfSElJX1RJTUVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkVGSV9ISUlfVElNRSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3MA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRl06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3NzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3NzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2Vw dGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLlZhcklkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzc1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlZhcklkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc2DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4MQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0ZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzgyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzgzDQo+IA0K PiArICAgICAgICAgICAgc2VsZi52ZnJWYXJTdG9yZUVmaUF0dHIoKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3ODgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4NA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3ODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJWYXJTdG9yZUVmaUF0dHIoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzkwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTENCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODA3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJl ZGljdChzZWxmLl9pbnB1dCw0NixzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFf ID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTINCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzk0DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDc5Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzk4DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzk5DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwMA0KPiANCj4gKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5WTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODAyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODAzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlZhclNpemUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDQNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwNQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDgwOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxMA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDgxMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyVmFyU3RvcmVFZmlBdHRyQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5BdHRyID0gMA0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyVmFyU3RvcmVFZmlBdHRyDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyVmFyU3RvcmVFZmlBdHRy IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclZhclN0 b3JlRWZpQXR0cihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclZhclN0b3JlRWZpQXR0 cihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclZhclN0b3JlRWZpQXR0ckNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0 YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDY0LCBzZWxmLlJV TEVfdmZyVmFyU3RvcmVFZmlBdHRyKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODE0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIFZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9O QU1FX1ZBTFVFX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU04gPSBOb25lICMgVG9rZW4N Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLklEID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgTmFtZVZhbHVlVmFyU3RvcmUoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5hbWVWYWx1ZVZhclN0b3Jl LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgVXVpZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBndWlk RGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFZhcklkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5WYXJJZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOYW1l KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5OYW1lKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCBpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFZh clN0b3JlTmFtZVZhbHVlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoc2VsZik6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJT dG9yZU5hbWVWYWx1ZUNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDY2LCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50VmFyU3RvcmVOYW1lVmFsdWUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1l VmFsdWVWYXJTdG9yZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODE3DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTgNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODIzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJ ZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxOQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gODIxDQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LklEID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gODIyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4MzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIHdoaWxlIFRydWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MjUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TmFtZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyNg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODI3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODI4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDgyOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzANCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzMQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgbm90IChfbGE9PVZmclN5 bnRheFBhcnNlci5OYW1lKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzNg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDgzNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzOA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4MzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9P UCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEaXNhYmxlSWYoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJ ZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9u KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiB2ZnJGb3JtU2V0TGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJG b3JtU2V0TGlzdENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RGlzYWJs ZUlmRm9ybVNldCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZkZv cm1TZXRDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERp c2FibGVJZkZvcm1TZXQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4NDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5EaXNhYmxlSWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Mg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg0NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNldExpc3Qo bG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODQ1DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9J RlJfU1VQUFJFU1NfSUZfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3VwcHJlc3NJ ZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU3VwcHJlc3NJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2Vt aWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJGb3JtU2V0TGlzdChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDcwLCBz ZWxmLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQpDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDgNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4NDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4 cHJlc3Npb24obG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODUwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTENCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnZmckZvcm1TZXRMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDg1Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVuZElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTMNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFs bHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgR3VpZFN1 YkRlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgR3VpZD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu R3VpZCA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkd1aWQgPSBHdWlkDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZ3VpZFN1YkRlZmluaXRpb24NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRHdWlkU3Vi RGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRHdWlkU3ViRGVmaW5pdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGd1aWRTdWJE ZWZpbml0aW9uKHNlbGYsIEd1aWQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuR3VpZFN1YkRlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gc2VsZi5zdGF0ZSwgR3VpZCkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCA3Miwgc2VsZi5SVUxFX2d1aWRTdWJEZWZpbml0aW9uKQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU1DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4NTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU3DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjANCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODYxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODYzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4NjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODY1DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4NjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODY3DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODY5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IEd1aWREZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g SWZyVHJlZU5vZGUoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuR3VpZCA9IEVGSV9HVUlEKCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2Uoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBDbG9zZUJyYWNlKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZUJyYWNlLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGd1aWRTdWJE ZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWRTdWJEZWZpbml0aW9uQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZ3VpZERl ZmluaXRpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRHdWlkRGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRHdWlkRGVmaW5pdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA3 NCwgc2VsZi5SVUxFX2d1aWREZWZpbml0aW9uKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODcxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4NzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3Mw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4NzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3NQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDg3Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODMNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5PcGVuQnJhY2VdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gODc4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5CcmFjZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3OQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWRTdWJEZWZpbml0aW9uKGxvY2FsY3R4Lkd1 aWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODANCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gODgyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZ3VpZFN1YkRlZmluaXRpb24o bG9jYWxjdHguR3VpZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4 NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJh Y2UpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg R2V0U3RyaW5nSWRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlN0cmluZ0lkID0g JycNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2dl dFN0cmluZ0lkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0R2V0U3RyaW5nSWQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0R2V0U3RyaW5nSWQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBn ZXRTdHJpbmdJZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLkdldFN0cmluZ0lkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzYsIHNlbGYuUlVM RV9nZXRTdHJpbmdJZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg4Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODgNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gODkwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJRdWVzdGlvbkhlYWRlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUs IFFUeXBlPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuUVR5cGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBRVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVl c3Rpb25CYXNlSW5mb0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 SGVhZGVyQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyUXVlc3Rpb25IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkhlYWRlciIgKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJRdWVzdGlvbkhlYWRlcihz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclF1ZXN0aW9uSGVhZGVyKHNlbGYsIE5vZGUs IFFUeXBlKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3Rh dGUsIE5vZGUsIFFUeXBlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDc4LCBzZWxmLlJVTEVfdmZyUXVlc3Rpb25IZWFkZXIpDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4OTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZm clF1ZXN0aW9uQmFzZUluZm8oTm9kZSwgUVR5cGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg5Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SGVhZGVyKE5v ZGUpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg VmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUsIFFUeXBl PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu UVR5cGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IEVGSV9WQVJT VE9SRV9JTkZPKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFJZCA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBUcnVlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5RTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlZhcklkU3RyID0gJycNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFOID0gTm9uZSAjIFRva2Vu DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0g UVR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOYW1lKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVmFy SWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlZhcklkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0b3Jh Z2VWYXJJZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUXVlc3Rpb25JZChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUXVl c3Rpb25JZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyUXVlc3Rpb25CYXNlSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclF1ZXN0aW9uQmFzZUluZm8iICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyUXVlc3Rpb25CYXNl SW5mbyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUluZm8oc2Vs ZiwgTm9kZSwgUVR5cGUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlLCBOb2RlLCBRVHlwZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA4MCwgc2VsZi5SVUxFX3ZmclF1ZXN0aW9uQmFzZUluZm8pDQo+IA0KPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4OTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5hbWU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4OTUNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDg5Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODk3DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlFOID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg5OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gOTA2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJZDoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkwMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDkwMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTAzDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RvcmFnZVZhcklkKGxvY2FsY3R4LkJhc2VJ bmZvLCBsb2NhbGN0eC5DaGVja0ZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5MDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDkxMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25JZDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDkwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvbklkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gOTA5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MTAN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MTEN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5v ZGU9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFByb21wdChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu UHJvbXB0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt YmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEhlbHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRIZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRIZWFk ZXIiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50SGVhZGVyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50SGVh ZGVyKHNlbGYsIE5vZGUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ IHNlbGYuc3RhdGUsIE5vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgODIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRIZWFkZXIpDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDkxNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDkxOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE5DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTIwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDky MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDkyMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTI2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBRdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLlFIRmxhZyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk8gPSBOb25lICMg VG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBSZWFkT25seUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBJbnRlcmFjdGl2ZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSZXNldFJlcXVpcmVkRmxhZyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVz ZXRSZXF1aXJlZEZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUmVzdFN0eWxl RmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBSZWNvbm5lY3RSZXF1aXJlZEZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcHRpb25Pbmx5RmxhZyhzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3B0aW9u T25seUZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTlZBY2Nlc3NGbGFnKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OVkFjY2Vzc0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTGF0ZUNo ZWNrRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFF1ZXN0aW9uaGVhZGVy RmxhZ3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRRdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBx dWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250ZXh0 KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCA4NCwgc2VsZi5SVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCkN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM2 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5JbnRlcmFjdGl2ZUZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW50 ZXJhY3RpdmVGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnXToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTMwDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5MzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWNvbm5l Y3RSZXF1aXJlZEZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzIN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVjb25u ZWN0UmVxdWlyZWRGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnXToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTMzDQo+IA0KPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4Lk8gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5 RmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWddOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gOTM1DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdG9yYWdlVmFySWRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSwgQmFzZUluZm89Tm9uZSwgQ2hlY2tGbGFnPU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5CYXNlSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNoZWNrRmxhZyA9 IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlZhcklkU3RyID0gJycNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkJhc2VJbmZvID0gQmFzZUluZm8NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkNoZWNrRmxhZyA9IENoZWNrRmxhZw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RvcmFnZVZhcklkDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkJhc2VJbmZvID0gY3R4LkJhc2VJbmZvDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DaGVj a0ZsYWcgPSBjdHguQ2hlY2tGbGFnDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYXJJZFN0ciA9 IGN0eC5WYXJJZFN0cg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cyBWZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQoVmZyU3RvcmFnZVZhcklkQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFy c2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0b3Jh Z2VWYXJJZENvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNl cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNOMSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuSSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu Y29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUxIiApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUxKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJTdG9yYWdlVmFySWRSdWxlMkNvbnRleHQoVmZyU3RvcmFnZVZhcklkQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBj dHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLlZm clN0b3JhZ2VWYXJJZENvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNOMiA9IE5vbmUgIyBUb2tlbg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0K PiArICAgICAgICBkZWYgRG90KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRv dCwgaSkNCj4gDQo+ICsgICAgICAgIGRlZiBhcnJheU5hbWUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQXJyYXlO YW1lQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5B cnJheU5hbWVDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RvcmFnZVZhcklkUnVsZTIiICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RvcmFnZVZhcklk UnVsZTIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdG9yYWdlVmFySWQoc2VsZiwgQmFzZUluZm8s IENoZWNrRmxhZyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5z dGF0ZSwgQmFzZUluZm8sIENoZWNrRmxhZykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA4Niwgc2VsZi5SVUxFX3ZmclN0b3JhZ2VWYXJJZCkNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTUwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJw LmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw1NSxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAg ICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZFJ1bGUxQ29udGV4dChzZWxmLA0KPiBsb2NhbGN0 eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM4DQo+IA0KPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4LlNOMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNr ZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDANCj4gDQo+ICsgICAg ICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0MQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IGxhXyA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdG9yYWdlVmFySWRSdWxlMkNvbnRleHQoc2VsZiwNCj4gbG9jYWxjdHgpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0Mg0KPiANCj4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5TTjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTQ3DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICB3 aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5Eb3Q6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTQzDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTQ0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmFycmF5TmFtZSgpDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTQ5DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJDb25zdGFudFZhbHVlRmllbGRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlZhbHVlTGlzdCA9IFtdDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5MaXN0VHlwZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5W YWx1ZVR5cGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBOZWdhdGl2ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgVHJ1ZVN5bWJvbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVHJ1ZVN5bWJvbCwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGYWxzZVN5bWJvbChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRmFsc2VTeW1ib2wsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT25lKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PbmUsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgT25lcyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lcywgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBaZXJvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5aZXJvLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIENvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29sb24s IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2xhc2goc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNsYXNoKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TbGFzaCwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T3BlbkJyYWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlQnJhY2Uoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2UsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckNvbnN0YW50VmFsdWVGaWVsZA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckNv bnN0YW50VmFsdWVGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiB2ZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCA4OCwgc2VsZi5SVUxFX3ZmckNvbnN0YW50VmFsdWVGaWVsZCkNCj4gDQo+ ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTk2DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw1OCxzZWxmLl9jdHgpDQo+IA0K PiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDk1Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTmVnYXRpdmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTUyDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk1NQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBl bGlmIGxhXyA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NTYNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVHJ1ZVN5bWJv bCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIGVsaWYgbGFfID09IDM6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk1 Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GYWxz ZVN5bWJvbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgbGFfID09IDQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk1OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PbmUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIGxhXyA9PSA1Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5NTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T25lcykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgbGFfID09IDY6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDk2MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5a ZXJvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiBsYV8gPT0gNzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTYxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2Mg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5NjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29sb24pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 NjUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiBsYV8gPT0gODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTY2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2Nw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TbGFzaCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5NjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2xhc2gpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 NzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiBsYV8gPT0gOToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTcxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3Mg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzMNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTc0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDk3NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3Ng0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA5NzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTc5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4MA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiBsYV8gPT0gMTA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMTApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 ODINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODMNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTg0DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTE6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODYNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTg3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTg4DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODkNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZUJyYWNlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgVmZySW1hZ2VUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUg PSBJZnJUcmVlTm9kZShFRklfSUZSX0lNQUdFX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEltYWdlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5JbWFnZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBP cGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZySW1hZ2VUYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJJbWFnZVRhZyIgKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJJbWFnZVRhZyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHZmckltYWdlVGFnKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCA5MCwgc2VsZi5SVUxFX3ZmckltYWdlVGFnKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTk4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuSW1hZ2UpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDk5OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDANCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX182KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDAxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDAyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDAzDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJMb2NrZWRUYWdDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0xPQ0tFRF9P UCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMb2NrZWQoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxvY2tlZCwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckxvY2tlZFRhZw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm ckxvY2tlZFRhZyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJMb2NrZWRUYWcoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJMb2NrZWRUYWco c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJMb2NrZWRUYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA5Miwgc2VsZi5SVUxFX3ZmckxvY2tl ZFRhZykNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw MDUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Mb2NrZWQp DQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZp bmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZy U3RhdGVtZW50U3RhdFRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJJbWFnZVRhZ0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJMb2NrZWRUYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2Vk VGFnQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXRUYWciICk6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdFRh ZyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWcoc2VsZik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdGF0VGFnQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTQsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRTdGF0VGFnKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDA5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW1hZ2VdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA3DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYudmZySW1hZ2VUYWcoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxvY2tlZF06 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJMb2NrZWRUYWcoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2Ug Tm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0 YXRUYWdDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D b21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudFN0YXRUYWdMaXN0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxm LCBOb2RlKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNl bGYuc3RhdGUsIE5vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg OTYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdCkNCj4gDQo+ICsgICAgICAgIHRy eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTENCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFN0YXRUYWcoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDE2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgX2FsdCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2Vs Zi5faW5wdXQsNjAsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9hbHQhPTIg YW5kIF9hbHQhPUFUTi5JTlZBTElEX0FMVF9OVU1CRVI6DQo+IA0KPiArICAgICAgICAgICAgICAg IGlmIF9hbHQ9PTE6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAx Mg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAxMw0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTgNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9h bHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDYwLHNlbGYuX2N0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJGb3JtRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9PUCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBGb3JtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEZvcm1JZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuRm9ybUlkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFRpdGxlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UaXRsZSwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEVuZEZvcm0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZEZvcm0sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgdmZyRm9ybShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dCxpKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybURlZmlu aXRpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJGb3JtRGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtRGVmaW5pdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIHZmckZvcm1EZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA5OCwgc2VsZi5SVUxFX3ZmckZvcm1EZWZpbml0aW9uKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTAxOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkZvcm0pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw MjANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjENCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDIyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDIzDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UaXRsZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjYNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTAyNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAyOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAyOQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEwMzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAg ICAgICAgIHdoaWxlICgoKChfbGEgLSA0NikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xh IC0gNDYpKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0gNDYpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwgKDENCj4gPDwgKFZmclN5bnRh eFBhcnNlci5TdWJ0aXRsZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRleHQgLSA0 NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5EYXRlIC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuVGltZSAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkdyYXlP dXRJZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxhYmVsIC0gNDYpKSB8ICgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuQ2hlY2tCb3ggLSA0NikpIHwgKDENCj4gPDwgKFZmclN5bnRheFBhcnNlci5OdW1lcmlj IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCAtIDQ2KSkgfCAoMQ0KPiA8 PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nIC0gNDYpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfA0KPiAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkdvdG8gLSA0NikpKSkgIT0gMCkNCj4gb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAg YW5kICgoMSA8PCAoX2xhIC0gMTEwKSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5JbmNv bnNpc3RlbnRJZiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXN0b3JlIC0gMTEw KSkNCj4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTApKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuQmFubmVyIC0gMTEwKSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLklt YWdlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxvY2tlZCAtIDExMCkpIHwNCj4g KDEgPDwgKFZmclN5bnRheFBhcnNlci5SdWxlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkNCj4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlv biAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKQ0KPiB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuTW9kYWwgLSAxMTApKSkpICE9IDApIG9yDQo+IF9sYT09VmZy U3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTAzMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm0oKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAzNg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTAzNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkVuZEZvcm0pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzgNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRm9ybUNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbWFnZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRJbWFnZUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRMb2NrZWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 TG9ja2VkQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudFJ1bGVzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJ1bGVzQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dERlZmF1bHQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVmYXVsdENvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbENvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRCYW5uZXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWQoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50SW52YWxpZENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudE1vZGFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudE1vZGFsQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRSZWZyZXNoRXZlbnRDb250ZXh0LDANCj4gKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckZvcm0iICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybShzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIHZmckZvcm0oc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTAwLCBz ZWxmLlJVTEVfdmZyRm9ybSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwNTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQwDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50SW1hZ2UoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxvY2tl ZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQxDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TG9ja2VkKCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5SdWxlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDINCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSdWxlcygpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuRGVmYXVsdF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDQzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGVmYXVsdCgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LA0K PiBWZnJTeW50YXhQYXJzZXIuR290bywgVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVP ZiwgVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0LA0KPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwg VmZyU3ludGF4UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gVmZyU3lu dGF4UGFyc2VyLk51bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFy c2VyLlN0cmluZywNCj4gVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50UXVlc3Rpb25zKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYsIFZm clN5bnRheFBhcnNlci5TdXBwcmVzc0lmLA0KPiBWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmLCBW ZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWZdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTA0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dENvbmRpdGlvbmFsKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYWJlbF06DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50TGFiZWwoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJhbm5lcl06DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ4DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50QmFubmVyKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5J bnZlbnRvcnksIFZmclN5bnRheFBhcnNlci5IaWRkZW4sDQo+IFZmclN5bnRheFBhcnNlci5SZXN0 b3JlLCBWZnJTeW50YXhQYXJzZXIuU2F2ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDQ5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52 YWxpZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3VpZE9wXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEwNTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHRlbnNpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1vZGFsXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRNb2RhbCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVmcmVz aEd1aWRdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1Mg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDUzDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRm9ybU1hcERlZmlu aXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9k ZShFRklfSUZSX0ZPUk1fTUFQX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUzEgPSBOb25l ICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGb3JtTWFwKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3Jt TWFwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybUlk LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRGb3JtKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRGb3JtLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNYXBUaXRsZShzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTWFwVGl0bGUp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1hcFRpdGxlLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1hcEd1aWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk1hcEd1aWQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk1hcEd1aWQsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z3VpZERlZmluaXRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0KQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29u dGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm0oc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybU1hcERlZmlu aXRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy Rm9ybU1hcERlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJGb3JtTWFw RGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTAyLCBzZWxmLlJVTEVfdmZyRm9ybU1hcERlZmluaXRpb24pDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDU3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRm9ybU1hcCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1OA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1JZCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1OQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwNjANCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5TMSA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA2MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDc2DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRh eFBhcnNlci5NYXBUaXRsZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw NjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWFw VGl0bGUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDYzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY0DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTA2NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDY2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw NjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2OQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXBHdWlkKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA3MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9u KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNzINCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3OA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTA4Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChf bGEgLSA0NikpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuT25lT2YgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3lu dGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4dCAt IDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0NikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuR3Jh eU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDEg PDwNCj4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVy aWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EZWZhdWx0IC0gNDYpKSB8ICgxDQo+ IDw8IChWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5TdHJpbmcgLSA0NikpIHwgKDENCj4gPDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lm IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0gNDYpKSB8DQo+ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuSGlkZGVuIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuR290byAtIDQ2KSkpKSAhPSAwKQ0KPiBvciAoKCgoX2xhIC0gMTEwKSkgJiB+MHgzZikgPT0g MCBhbmQgKCgxIDw8IChfbGEgLSAxMTApKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLklu Y29uc2lzdGVudElmIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUgLSAx MTApKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2F2ZSAtIDExMCkpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5CYW5uZXIgLSAxMTApKSB8DQo+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu SW1hZ2UgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTG9ja2VkIC0gMTEwKSkgfA0K PiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJ1bGUgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuUmVzZXRCdXR0b24gLSAxMTApKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQWN0 aW9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkd1aWRPcCAtIDExMCkpDQo+IHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5Nb2RhbCAtIDExMCkpKSkgIT0gMCkgb3INCj4gX2xhPT1W ZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDc5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRm9ybSgpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDg0DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDg1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kRm9ybSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4Ng0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRJbWFnZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJJbWFnZVRhZ0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEltYWdlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50SW1hZ2Ui ICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50SW1hZ2Uoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbWFnZShz ZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEltYWdlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUp DQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTA0LCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50SW1hZ2UpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDg4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwODkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmckxvY2tlZFRhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJMb2NrZWRU YWdDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRMb2NrZWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRMb2NrZWQiICk6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TG9ja2Vk KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50TG9ja2VkKHNlbGYpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50TG9ja2VkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTA2LCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50TG9ja2VkKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTA5MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyTG9ja2VkVGFnKCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfUlVMRV9P UCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSdWxlKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SdWxlLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNv bW1hLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Np b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRSdWxlKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRS dWxlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50UnVsZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSdWxlcyIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSdWxlcyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFJ1bGVzKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UnVsZXNDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxMDgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRSdWxlcykNCj4gDQo+ ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTQNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SdWxlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMDk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA5Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDk3DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTgNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRSdWxlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDk5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50U3ViVGl0bGUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 U3RhdGljVGV4dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0aWNUZXh0Q29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dENyb3NzUmVmZXJlbmNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENyb3NzUmVm ZXJlbmNlQ29udGV4DQo+IHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0IiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0YXQo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0KHNlbGYpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50U3RhdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDExMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dFN0YXQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMDQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdWJ0aXRsZV06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDENCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRTdWJUaXRsZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVGV4dF06 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDINCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5Hb3RvLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b25dOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTAzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2UoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfU1VC VElUTEVfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3VidGl0bGUoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1 YnRpdGxlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFRleHQoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRleHQs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRW5kU3VidGl0 bGUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZFN1YnRpdGxlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENv bW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIHZmclN1YnRpdGxlRmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3VidGl0bGVGbGFnc0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudChzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudEMNCj4gb250ZXh0KQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50 Q28NCj4gbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGUiICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3Vi VGl0bGUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZShz ZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3Rh dGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTEyLCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50U3ViVGl0bGUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTA2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Vi dGl0bGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDcNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTA4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEwOQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTEwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTExDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTEy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTExNw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9 IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNjYsc2VsZi5fY3R4KQ0K PiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTExMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx MTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxB R1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE1DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYudmZyU3VidGl0bGVGbGFncygpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExMzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRp dmVQcmVkaWN0KHNlbGYuX2lucHV0LDcxLHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBp ZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjENCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExMjANCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50U3RhdFRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0g MjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjYNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNjgs c2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI0DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI1DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWdMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTM1DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTI4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTMyDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYp KSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRM aXN0IC0gNDYpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQ YXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwg KDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDENCj4gPDwgKFZmclN5bnRheFBhcnNlci5QYXNz d29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMQ0K PiA8PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8gLSA0NikpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50 YXhQYXJzZXIuUmVzZXRCdXR0b24gb3INCj4gX2xhPT1WZnJTeW50YXhQYXJzZXIuQWN0aW9uOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI5DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVu dCgpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzQNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTEzNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FbmRTdWJ0aXRsZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx MzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFs bHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50U3ViVGl0bGVDb21wb25lbnRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3Rh dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdWJU aXRsZUNvbXBvbmVudA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50IiApOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1YlRpdGxl Q29tcG9uZW50KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3ViVGl0 bGVDb21wb25lbnQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoc2VsZiwN Cj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDExNCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTQz DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUsIFZmclN5bnRheFBhcnNlci5U ZXh0LA0KPiBWZnJTeW50YXhQYXJzZXIuR290bywgVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9u XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0MQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy Lk9uZU9mLCBWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QsDQo+IFZmclN5bnRheFBhcnNlci5E YXRlLCBWZnJTeW50YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LA0KPiBW ZnJTeW50YXhQYXJzZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLCBWZnJTeW50 YXhQYXJzZXIuU3RyaW5nLA0KPiBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN1YnRpdGxlRmxhZ3NDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLlN1YkZsYWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmll bGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN1 YnRpdGxlRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3VidGl0bGVGbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN1YnRpdGxlRmxhZ3MiICk6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3VidGl0bGVGbGFncyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHZmclN1YnRpdGxlRmxhZ3Moc2VsZik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdWJ0aXRsZUZsYWdzQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTE2LCBzZWxmLlJVTEVfdmZyU3VidGl0bGVGbGFncykNCj4gDQo+ ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN1YnRpdGxlRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx NTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExNDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE0Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN1YnRpdGxlRmxhZ3NG aWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTUyDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFN1YnRpdGxlRmxhZ3NGaWVs ZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmxhZyA9IDANCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3N1YnRpdGxlRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN1YnRpdGxlRmxh Z3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRT dWJ0aXRsZUZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzdWJ0aXRsZUZs YWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4g c2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMTgs IHNlbGYuUlVMRV9zdWJ0aXRsZUZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTUzDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICBpZiBub3QoX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fNyBvciBf bGE9PVZmclN5bnRheFBhcnNlci5OdW1iZXIpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdGlj VGV4dENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2Rl KEVGSV9JRlJfVEVYVF9PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlMxID0gTm9uZSAjIFRv a2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TMiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuUzMgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkYgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlM0ID0gTm9uZSAjIFRv a2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVGV4dChzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVGV4dCwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBI ZWxwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5IZWxwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rv a2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBzdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5TdGF0aWNUZXh0RmxhZ3NGaWVs ZENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU3Rh dGljVGV4dEZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgS2V5KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5LZXksIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 U3RhdFRhZ0xpc3RDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJp dFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnRTdGF0aWNUZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdGljVGV4dCIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3RhdGljVGV4dChzZWxmKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0YXRpY1RleHRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMjAsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRTdGF0aWNUZXh0KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1 NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRleHQpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTYNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTU3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1OA0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTYwDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguUzEgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExNjENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTYyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExNjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE2NQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTY2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY3 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguUzIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjgNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTc2DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5f aW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw3NCxzZWxmLl9jdHgpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE3MA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE3MQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTE3Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExNzMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTE3NA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TMyA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExNzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTE5NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qo c2VsZi5faW5wdXQsNzYsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAx Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE3OA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRpY1RleHRGbGFn c0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExODYNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTgyDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Mw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0aWNUZXh0RmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTE4OA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTE4OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExOTANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTE5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TNCA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29t bWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk2DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFN0YXRUYWdMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDANCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgU3RhdGljVGV4dEZsYWdzRmll bGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg cXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZENvbnRleHQsMA0KPiApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9zdGF0aWNUZXh0RmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0YXRpY1RleHRGbGFn c0ZpZWxkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFN0 YXRpY1RleHRGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgc3RhdGljVGV4 dEZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5TdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDEyMiwgc2VsZi5SVUxFX3N0YXRpY1RleHRGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA0DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTIwMg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxh ZywNCj4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0 UmVxdWlyZWRGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBW ZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5 RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIu UmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cyBWZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRHb3RvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdvdG9Db250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UmVzZXRCdXR0 b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVzZXRCdXR0b25Db250ZXh0LDAp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRDcm9zc1JlZmVyZW5jZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudENyb3Nz UmVmZXJlbmNlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50Q3Jvc3NS ZWZlcmVuY2Uoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZUNvbnRleHQoc2VsZiwNCj4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDEyNCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlKQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA4DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuR290b106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEyMDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRHb3Rv KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyMDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRSZXNldEJ1dHRvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEdvdG9Db250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1JFRl9PUCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9S RUYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFOID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F ID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR290byhzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu R290bywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJH b3RvRmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyR290b0ZsYWdzQ29udGV4dCwwKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvDQo+IG50ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgRGV2aWNlUGF0aChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aCwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGb3JtU2V0R3VpZChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Rm9ybVNldEd1aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRp b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRm9ybUlkKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUXVlc3Rpb24oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRHb3RvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R290byIgKToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHb3RvKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50R290byhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdvdG9Db250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxMjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRHb3RvKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkdvdG8pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyNTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZXZpY2VQYXRoXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEyMTMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjE0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxNg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyMTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRm9ybVNldEd1aWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjE5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjIwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyMjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRm9ybUlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyMw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyNA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMjI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTIyNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5RdWVzdGlvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Gb3Jt U2V0R3VpZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjMxDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1TZXRHdWlk KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzMg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lmd1aWREZWZpbml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy MzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM1DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1JZCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzYNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTIzOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24pDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQwDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjQxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyNDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybUlkXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTI0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0Ng0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQ3DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyNDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy NTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjUwDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBsb2NhbGN0eC5RTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTI1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJd Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNTINCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjUzDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUHJvbXB0 LCBWZnJTeW50YXhQYXJzZXIuTmFtZSwNCj4gVmZyU3ludGF4UGFyc2VyLlZhcklkLCBWZnJTeW50 YXhQYXJzZXIuUXVlc3Rpb25JZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZm clF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJw LmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw4MixzZWxmLl9jdHgpDQo+IA0KPiArICAgICAg ICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjYxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI2Mg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjMNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyNjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJHb3RvRmxh Z3MoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjcxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9p bnB1dCw4MyxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY3DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTI2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjcwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3NQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjczDQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkUgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyNzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTI3Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBjbGFzcyBWZnJHb3RvRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkdvdG9GbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnb3Rv RmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR290b0ZsYWdzRmllbGRDb250ZXh0 LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckdvdG9GbGFncw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckdvdG9G bGFncyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJH b3RvRmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJHb3RvRmxhZ3Moc2VsZik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJH b3RvRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMjgsIHNlbGYuUlVMRV92ZnJHb3RvRmxhZ3Mp DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc5DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5nb3RvRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyODQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmdvdG9GbGFnc0Zp ZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODYNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgR290b0ZsYWdzRmllbGRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVt YmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZENvbnRleHQsMA0KPiApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9nb3RvRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEdvdG9GbGFnc0ZpZWxkIiApOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEdvdG9GbGFnc0ZpZWxkKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgZ290b0ZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDEzMCwgc2VsZi5SVUxFX2dvdG9GbGFnc0ZpZWxkKQ0KPiANCj4g KyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjg5DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI4Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLklu dGVyYWN0aXZlRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4 UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVx dWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4UGFy c2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBWZnJT eW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEyODgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZs YWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRp b24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfUkVTRVRfQlVUVE9OX09Q KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFJlc2V0QnV0dG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0U3RvcmUoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFk ZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRW5kUmVz ZXRCdXR0b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVuZFJlc2V0QnV0dG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRSZXNl dEJ1dHRvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlc2V0QnV0dG9uIiApOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFJlc2V0QnV0dG9uKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50UmVzZXRCdXR0b24oc2VsZik6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRSZXNldEJ1dHRvbkNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzMiwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudFJlc2V0QnV0dG9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5 MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0 dG9uKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjkyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjkzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTI5NA0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTYNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEhlYWRlcihsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMjk3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEz MDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkltYWdlIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLkxv Y2tlZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTgNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChsb2NhbGN0eC5Ob2Rl KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5OQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwMw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZFJlc2V0QnV0dG9uKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZUNvbnRleHQsMA0KPiApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGF0ZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnREYXRlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudE51bWVyaWNUeXBlQ29udGV4dCwwDQo+ICkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50T3JkZXJlZExpc3Qoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50VGltZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRUaW1lQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25zDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVl c3Rpb25zIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRl bWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDEzNCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9ucykNCj4gDQo+ICsgICAgICAg IHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxMg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LCBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEJvb2xlYW5UeXBlKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5E YXRlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERhdGUoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk9uZU9mLCBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY106DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzMDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnROdW1lcmljVHlwZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIFZmclN5 bnRheFBhcnNlci5TdHJpbmddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MzA5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RyaW5nVHlwZSgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3RdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzEwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50T3JkZXJlZExpc3QoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRpbWVdOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzExDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50VGltZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3RhdFRhZ0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50SW5jb25zaXN0ZW50SWZDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE5vU3VibWl0SWYoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdENvbnRleHQNCj4gLDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UmVmcmVzaChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlQ29udGV4dA0KPiAsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRlbnNp b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2hF dmVudChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0 LDANCj4gKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dFdhcm5pbmdJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0 aW9uVGFnKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25U YWcoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzNiwg c2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzI1DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuSW1hZ2UsIFZmclN5bnRheFBhcnNlci5Mb2NrZWRdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzE0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50U3RhdFRhZygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MzE1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ob1N1 Ym1pdElmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxOA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE5vU3VibWl0SWYoKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkRpc2FibGVJZl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzMTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnREaXNhYmxl SWZRdWVzdCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVmcmVzaF06DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRSZWZyZXNoKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmlj ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuR3VpZE9wXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWRdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzIzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50UmVmcmVzaEV2ZW50KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5XYXJuaW5nSWZdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzI0DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50V2FybmluZ0lmKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVl Tm9kZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBJbmNvbnNpc3RlbnRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRW5k SWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZElmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 SW5jb25zaXN0ZW50SWYiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVu dElmQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTM4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWYpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzI3DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjgNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzMjkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzMwDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzENCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzMzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzMNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM0DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzNDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzMzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzM4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMzOQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ0DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzNTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FbmRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1Mg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTIsc2Vs Zi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50 Tm9TdWJtaXRJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRy ZWVOb2RlKEVGSV9JRlJfTk9fU1VCTUlUX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE5vU3VibWl0SWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRF eHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkVuZElmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFH UywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudE5vU3VibWl0SWYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElmIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVu dE5vU3VibWl0SWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1 Ym1pdElmKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0 MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE5vU3VibWl0SWYpDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMzU0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTm9TdWJtaXRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1 NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1Ng0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzNTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1OA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1OQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTM2MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNjEN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3NA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu RkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYyDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2Mw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM2NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmll bGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2OQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg d2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNjUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzY2DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxm LmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEz NzENCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzINCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzYNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24obG9jYWxjdHguTm9kZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3Nw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzc5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCw5NSxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09 IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc4DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEaXNhYmxlSWYoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4gbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxl SWZRdWVzdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0IiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3Qoc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0Miwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTM4Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzgz DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg0DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4NQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzg3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCw5NixzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09 IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg2DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9SRUZSRVNIX09QKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFJlZnJlc2goc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlZnJlc2gsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgSW50ZXJ2YWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVydmFsLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dFJlZnJlc2giICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RhdGVtZW50UmVmcmVzaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRl bWVudFJlZnJlc2goc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTQ0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaCkNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWZyZXNoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzkwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuSW50ZXJ2YWwpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzOTENCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzkyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9WQVJT VE9SRV9ERVZJQ0VfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVmFyc3RvcmVEZXZp Y2Uoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlZhcnN0b3JlRGV2aWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFN0cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50VmFyc3RvcmVEZXZpY2UiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2Uoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3Jl RGV2aWNlQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTQ2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50 VmFyc3RvcmVEZXZpY2UpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzk0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVmFyc3RvcmVEZXZpY2UpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzOTUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzk2DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzOTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzOTgN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzOTkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNDAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50Q29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9SRUZSRVNIX0lEX09QKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlZnJlc2hHdWlkKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWZyZXNoR3Vp ZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRSZWZyZXNoRXZlbnQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KHNlbGYpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVmcmVzaEV2 ZW50Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTQ4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVm cmVzaEV2ZW50KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQwMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJl ZnJlc2hHdWlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDAzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQwNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERl ZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA1DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50V2Fy bmluZ0lmQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5v ZGUoRUZJX0lGUl9XQVJOSU5HX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFdh cm5pbmdJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuV2FybmluZ0lmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFByb21wdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0 cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt YmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFRpbWVvdXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpbWVvdXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5nSWYNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRX YXJuaW5nSWYiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RhdGVtZW50V2FybmluZ0lmKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3Rh dGVtZW50V2FybmluZ0lmKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V2FybmluZ0lmQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMTUwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50V2FybmluZ0lmKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQwNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLldhcm5pbmdJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQwOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlBy b21wdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwOQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0MTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTQxMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxMg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQxMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0MTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxOQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuVGltZW91dDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTUN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZW91 dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTYNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQyMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhw cmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDIyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjQNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBsYV8gPSBz ZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDk4LHNlbGYuX2N0eCkNCj4g DQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE0MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFF1ZXN0aW9uVGFn TGlzdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyhzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZXh0LGkpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRRdWVz dGlvblRhZ0xpc3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25UYWdM aXN0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdM aXN0KHNlbGYsIE5vZGUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0Q29udGV4dChzZWxmLA0KPiBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE5vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTUyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0KQ0K PiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQyOQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDEwNikp ICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTA2KSkgJiAoKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5EaXNhYmxlSWYgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5j b25zaXN0ZW50SWYgLSAxMDYpKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lm IC0gMTA2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYNCj4gLSAxMDYpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuTG9ja2VkIC0NCj4gMTA2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlZnJlc2gg LSAxMDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UgLSAxMDYp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0NCj4gMTA2KSkpKSAhPSAwKSBvciBf bGE9PVZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0MjYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRRdWVzdGlvblRhZygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMx DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHBy ZXNzSWZRdWVzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVl c3RDb250ZQ0KPiB4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEdyYXlPdXRJZlF1ZXN0Q29udGV4DQo+IHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYWx1ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRWYWx1ZUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERl ZmF1bHRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50T3B0aW9ucyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcHRpb25z Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFJlYWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVhZENvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRXcml0ZShz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uVGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWciICk6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25UYWcoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvblRhZyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29udGV4dChzZWxmLA0K PiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMTU0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcpDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQzMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFN1cHByZXNzSWZRdWVzdCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JheU91 dElmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzMw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5WYWx1ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0MzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRWYWx1ZSgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE0MzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRE ZWZhdWx0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25dOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDM2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50T3B0aW9ucygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVhZF06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzcNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRSZWFkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Xcml0ZV06DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRXcml0ZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlz ZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIEZsYWdzRmllbGRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBJbnRlcmFj dGl2ZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWcsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVsdEZsYWcoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFn LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlc2V0UmVxdWlyZWRGbGFnKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5SZXNldFJlcXVpcmVkRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSZWNv bm5lY3RSZXF1aXJlZEZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MYXRl Q2hlY2tGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZmxh Z3NGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdEZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0RmxhZ3NGaWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGZsYWdz RmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTU2LCBzZWxmLlJVTEVfZmxh Z3NGaWVsZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTQ0OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDENCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkludGVyYWN0aXZlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0 NDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW50 ZXJhY3RpdmVGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0Mw0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZykNCj4g DQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0NDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRGVmYXVsdEZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1 aXJlZEZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDQ1DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWly ZWRGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZ106DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDYNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZ106DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0NDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5MYXRlQ2hlY2tGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ0OA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5MID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNl IE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1 ZXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUo RUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdXBw cmVzc0lmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3RDbw0KPiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEVuZElmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBG TEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZmxhZ3NG aWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 U3VwcHJlc3NJZlF1ZXN0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdChzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNz SWZRdWVzdENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE1OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dFN1cHByZXNzSWZRdWVzdCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTEN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lm KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDUyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE0NjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQ1NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE0NTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTYNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0NjENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDU3 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ1OA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDYzDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDY0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDY4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQ2OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkVuZElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDcxDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxMDQs c2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVt ZW50R3JheU91dElmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUg PSBJZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIEdyYXlPdXRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbkxpc3RDbw0KPiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxp KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYpOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 R3JheU91dElmUXVlc3RDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjAsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0NzMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmF5 T3V0SWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NzQNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24obG9jYWxjdHguTm9kZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQ4OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDc2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQ3Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3OA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQ4Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0NzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDgwDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0ODUNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0ODYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDkxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRW5kSWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTMN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0 LDEwNyxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDkyDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmlu YWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnREZWZhdWx0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g SWZyVHJlZU5vZGUoRUZJX0lGUl9ERUZBVUxUX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuViA9IE5vbmUgIyBWZnJT dGF0ZW1lbnRWYWx1ZUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNOID0gTm9uZSAj IFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVsdChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVs dCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIHZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFu dFZhbHVlRmllbGRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50VmFsdWUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFs dWVDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVs dFN0b3JlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudERlZmF1bHQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnREZWZhdWx0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudERlZmF1bHQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2 ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVmYXVsdENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDE2Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERlZmF1bHQpDQo+IA0KPiArICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDk1DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguRCA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5W YWx1ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDk2DQo+IA0KPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LlYgPSBzZWxmLnZmclN0YXRlbWVudFZhbHVlKCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuVF9fNV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDk5DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTAwDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1MDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNTA5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTA1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1MDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1MDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTUwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYWx1ZUNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJf VkFMVUVfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhbHVl LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dFZhbHVlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50VmFsdWUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFsdWUoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYWx1ZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhbHVlQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTY0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50VmFsdWUpDQo+IA0KPiArICAg ICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTExDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFsdWUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1MTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTEzDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5v ZGUpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg VmZyU3RhdGVtZW50T3B0aW9uc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZk9w dGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbkNvbnRleHQs DQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRPcHRpb25zDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50T3B0aW9ucyIgKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRPcHRpb25zKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dE9wdGlvbnNDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1l bnRPcHRpb25zKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTUxNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50T25lT2ZPcHRpb24o KQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiAN Cj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBm aW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZm clN0YXRlbWVudE9uZU9mT3B0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuS04g PSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlQgPSBOb25lICMgVG9rZW4N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcHRpb24oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wdGlvbiwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBUZXh0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UZXh0LCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg aSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYWx1ZShzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFsdWUsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyQ29uc3RhbnRWYWx1ZUZpZWxkKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmckNvbnN0YW50VmFsdWVGaWVsZENvbnRleHQsMCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJPbmVPZk9wdGlvbkZsYWdzKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmckltYWdlVGFnKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFnQ29udGV4dCkN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJJbWFnZVRhZ0Nv bnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudE9uZU9mT3B0aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50T25lT2ZPcHRpb24iICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50T25l T2ZPcHRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZk9w dGlvbihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudE9uZU9mT3B0aW9uQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTY4 LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50T25lT2ZPcHRpb24pDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTE3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3B0aW9uKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE4DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUxOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1MjANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTUyMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlZhbHVlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTI2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyNw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTUyOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI5DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdT KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTMwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTUzMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyT25lT2ZPcHRpb25G bGFncygpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzYNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBs YV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDExMCxzZWxmLl9j dHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNTMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTUzMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5LZXkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTM0DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTM1DQo+IA0KPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4LktOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTQyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1MzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguVCA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTUzOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckltYWdlVGFnKCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1NDUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuSEZsYWdzID0gMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5PbmVvZm9wdGlvbkZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLk9uZW9mb3B0aW9uRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyT25lT2ZPcHRpb25GbGFncw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9uZU9m T3B0aW9uRmxhZ3MiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyT25lT2ZPcHRpb25GbGFncyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmck9u ZU9mT3B0aW9uRmxhZ3Moc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJPbmVPZk9wdGlvbkZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTcwLCBzZWxmLlJVTEVfdmZyT25lT2ZPcHRpb25GbGFncykNCj4gDQo+ICsgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm9uZW9mb3B0aW9u RmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9s YT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1NDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTU0OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTU0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIE9uZW9mb3B0aW9uRmxhZ3NGaWVsZENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5MRmxhZyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkEgPSBOb25lICMg VG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBPcHRpb25EZWZhdWx0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcHRpb25EZWZhdWx0LCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wdGlvbkRlZmF1bHRNZmcoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wdGlv bkRlZmF1bHRNZmcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSW50ZXJhY3RpdmVG bGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgUmVzZXRSZXF1aXJlZEZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIFJlc3RTdHlsZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWcs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgTWFudWZhY3R1cmluZ0ZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNz RmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5MYXRlQ2hlY2tGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfb25lb2ZvcHRpb25GbGFnc0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0T25lb2ZvcHRpb25GbGFnc0ZpZWxkIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE9uZW9mb3B0aW9uRmxhZ3NG aWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZChz ZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy Lk9uZW9mb3B0aW9uRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0 YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3Miwgc2VsZi5S VUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVsZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU2Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy Lk51bWJlcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHRdOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTU2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3B0aW9u RGVmYXVsdE1mZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTcNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVm YXVsdE1mZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWddOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTU4DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1NTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVzdFN0 eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjANCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxh ZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWddOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYxDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZ106DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu RGVmYXVsdEZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYzDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRG bGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZ106DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY0DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4LkEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNTY1DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZWFk Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJ X0lGUl9SRUFEX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlYWQoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJl YWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv bihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50UmVhZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlYWQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UmVhZChzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIHZmclN0YXRlbWVudFJlYWQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWFkQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTc0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVhZCkNCj4gDQo+ICsgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjgNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWFkKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTY5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRF eHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1NzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xh c3MgVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1dSSVRFX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFdyaXRlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Xcml0ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRXcml0ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFdyaXRlIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVu dFdyaXRlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50V3JpdGUoc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3Niwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudFdyaXRlKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTU3Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLldyaXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTczDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzQNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUg PSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uQ29udGUNCj4geHQpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25Db250 ZXgNCj4gdCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmLCBOb2RlKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBO b2RlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3OCwgc2VsZi5S VUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCkNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1NzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA2MSkpICYgfjB4M2YpID09IDAgYW5kICgo MSA8PCAoX2xhIC0gNjEpKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLk9wdGlvbiAtIDYx KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiAtIDYxKSkgfCAoMSA8PA0KPiAo VmZyU3ludGF4UGFyc2VyLkRlZmF1bHQgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5T dXBwcmVzc0lmIC0gNjEpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0g NjEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLQ0KPiA2MSkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5XYXJuaW5nSWYgLSA2MSkpIHwgKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5Ob1N1Ym1pdElmIC0gNjEpKSkpICE9IDApIG9yICgoKChfbGEgLSAxNDQpKSAm IH4weDNmKSA9PSAwIGFuZA0KPiAoKDEgPDwgKF9sYSAtIDE0NCkpICYgKCgxIDw8IChWZnJTeW50 YXhQYXJzZXIuSW1hZ2UgLSAxNDQpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuTG9ja2Vk IC0gMTQ0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZhbHVlIC0gMTQ0KSkgfCAoMSA8PA0K PiAoVmZyU3ludGF4UGFyc2VyLlJlYWQgLSAxNDQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu V3JpdGUgLSAxNDQpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuUmVmcmVzaCAtIDE0NCkp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZSAtIDE0NCkpDQo+IHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxNDQpKSkpICE9IDApIG9yDQo+IF9sYT09VmZy U3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTU3Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODENCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBO b25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWco c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25UYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25U YWdDbw0KPiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25Db250 ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAxODAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbikNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTU4NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgVmZyU3ludGF4 UGFyc2VyLkluY29uc2lzdGVudElmLA0KPiBWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lmLCBWZnJT eW50YXhQYXJzZXIuTm9TdWJtaXRJZiwgVmZyU3ludGF4UGFyc2VyLkltYWdlLA0KPiBWZnJTeW50 YXhQYXJzZXIuTG9ja2VkLCBWZnJTeW50YXhQYXJzZXIuUmVmcmVzaCwNCj4gVmZyU3ludGF4UGFy c2VyLlZhcnN0b3JlRGV2aWNlLCBWZnJTeW50YXhQYXJzZXIuR3VpZE9wLA0KPiBWZnJTeW50YXhQ YXJzZXIuUmVmcmVzaEd1aWRdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTgyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25UYWco KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wdGlvbiwgVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJ ZiwNCj4gVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQsIFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lm LCBWZnJTeW50YXhQYXJzZXIuVmFsdWUsDQo+IFZmclN5bnRheFBhcnNlci5SZWFkLCBWZnJTeW50 YXhQYXJzZXIuV3JpdGVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTgz DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25U YWcoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRCb29sZWFuVHlwZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRDaGVja0JveChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDaGVja0JveENv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRBY3Rpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50Qm9vbGVhblR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRCb29sZWFuVHlw ZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudEJvb2xlYW5UeXBlKHNl bGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50Qm9vbGVhblR5cGVDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxODIsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkNoZWNrQm94XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4Ng0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudENoZWNrQm94KCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNTg3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50QWN0aW9u KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgVmZyU3RhdGVtZW50Q2hlY2tCb3hDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0NIRUNLQk9YX09QKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuR3VpZE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9S TUFMDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJh c2VJbmZvQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFkZXJD b250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4gbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRDaGVja0JveChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RW5kQ2hlY2tCb3gsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2hlY2tCb3go c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNoZWNrQm94LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckNoZWNr Qm94RmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDaGVja0JveA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudENoZWNrQm94IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudENoZWNrQm94KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgdmZyU3RhdGVtZW50Q2hlY2tCb3goc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDaGVja0JveENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDE4NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENoZWNrQm94KQ0KPiANCj4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5MA0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DaGVja0JveCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTU5MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVl c3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTU5Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50SGVhZGVyKGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1OTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5OQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTk0 DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTUN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTYNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJDaGVja0JveEZsYWdzKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1OTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2MDUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLktleToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTYwMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwMw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjA0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjA3DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwOA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZENoZWNrQm94KQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjA5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmckNoZWNrQm94RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkxGbGFncyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9 IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjaGVja2JveEZsYWdzRmllbGQoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5DaGVja2JveEZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckNoZWNrQm94RmxhZ3MNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJDaGVja0JveEZs YWdzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckNo ZWNrQm94RmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJDaGVja0JveEZsYWdz KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4Niwgc2VsZi5SVUxF X3ZmckNoZWNrQm94RmxhZ3MpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjEx DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5jaGVja2JveEZsYWdzRmllbGQoKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjE2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRX aXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjEyDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5jaGVja2JveEZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTYxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBDaGVja2JveEZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkxGbGFnID0gMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5NID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVsdEZsYWco c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkRlZmF1bHRGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1hbnVm YWN0dXJpbmdGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBDaGVja0JveERlZmF1bHRGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DaGVja0JveERlZmF1bHRG bGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENoZWNrQm94RGVmYXVsdE1mZ0Zs YWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1 ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQsMA0KPiApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jaGVja2JveEZsYWdzRmllbGQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDaGVja2Jv eEZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hlY2tib3hGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgY2hlY2ti b3hGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTg4LCBzZWxmLlJVTEVfY2hlY2tib3hGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjI1DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYx OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWddOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjIwDQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4 LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2MjENCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTSA9IHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkNoZWNrQm94RGVmYXVsdEZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNjIyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNoZWNrQm94RGVmYXVsdEZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ2hlY2tC b3hEZWZhdWx0TWZnRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2hl Y2tCb3hEZWZhdWx0TWZnRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZs YWcsDQo+IFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZXNl dFJlcXVpcmVkRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywg VmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5SZWFkT25s eUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywNCj4gVmZyU3ludGF4UGFyc2Vy LlJlc3RTdHlsZUZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjI0 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xh c3MgVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9BQ1RJT05fT1ApDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQWN0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5BY3Rpb24sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy UXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg aSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb25maWcoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbmZpZywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1i ZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVz dGlvblRhZ0xpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdM aXN0Q29udGV4DQo+IHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBF bmRBY3Rpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVuZEFjdGlvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg dmZyQWN0aW9uRmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJT dGF0ZW1lbnRBY3Rpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRBY3Rpb24iICk6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50QWN0aW9uKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50QWN0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9u Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTkwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50QWN0aW9u KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAg ICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyNw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkFjdGlvbikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTYyOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25I ZWFkZXIobG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2MjkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzNQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjMwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzMQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzMg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmckFjdGlvbkZsYWdzKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE2MzMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE2MzcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db25maWcpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MzgNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjM5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2NDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDENCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjQzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDQNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdChsb2NhbGN0eC5Ob2RlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQ1DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kQWN0aW9uKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNjQ2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFZmckFjdGlvbkZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5IRmxhZ3MgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWN0aW9uRmxh Z3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5BY3Rpb25GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BY3Rpb25GbGFnc0ZpZWxkQ29udGV4 dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJBY3Rpb25GbGFncw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckFj dGlvbkZsYWdzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmckFjdGlvbkZsYWdzKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyQWN0aW9uRmxh Z3Moc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJBY3Rpb25GbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5Miwgc2VsZi5SVUxFX3Zm ckFjdGlvbkZsYWdzKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0OA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuYWN0aW9uRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2NTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1MA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLmFjdGlvbkZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTY1NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4g DQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBB Y3Rpb25GbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5IRmxhZyA9 IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwDQo+ICkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2FjdGlvbkZsYWdzRmllbGQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBY3Rp b25GbGFnc0ZpZWxkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdEFjdGlvbkZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBhY3Rpb25G bGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBz ZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5NCwg c2VsZi5SVUxFX2FjdGlvbkZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjU2DQo+IA0K PiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLA0KPiBWZnJT eW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZs YWcsDQo+IFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBh cnNlci5MYXRlQ2hlY2tGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJT eW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVG bGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1Nw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRl bWVudE51bWVyaWNUeXBlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g Tm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE51bWVyaWMoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY0NvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudE51bWVyaWNUeXBlDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyU3RhdGVtZW50TnVtZXJpY1R5cGUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNU eXBlQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTk2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50TnVt ZXJpY1R5cGUpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE2NjINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2MA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudE51bWVyaWMoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9uZU9m XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2MQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE9uZU9mKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50TnVtZXJp Y0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfTlVNRVJJQ19PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkd1aWROb2RlID0gSWZy VHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUg PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuRiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWVyaWMo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWVyaWMsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rp b25CYXNlSW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4 dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEhl YWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFkZXJDb250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJTZXRNaW5NYXhTdGVwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclNldE1pbk1heFN0 ZXBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdENvDQo+IG50ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgRW5kTnVtZXJpYyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kTnVtZXJpYywgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJOdW1lcmljRmxhZ3Moc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyTnVtZXJpY0ZsYWdzQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIEtleShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZM QUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudE51bWVyaWMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnROdW1lcmljIiApOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE51bWVyaWMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnROdW1lcmljKHNlbGYpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50TnVtZXJpY0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5OCwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudE51bWVyaWMpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY0DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYykNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2NQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2Ng0KPiANCj4gKyAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50SGVhZGVyKGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2NjcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3Mw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjY4DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2NjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzANCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJOdW1lcmljRmxhZ3MoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY3MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY3OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5Og0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3NQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjc2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjc3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODENCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnZmclNldE1pbk1heFN0ZXAobG9jYWxjdHguTm9kZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FbmROdW1lcmljKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjg0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGNsYXNzIFZmclNldE1pbk1heFN0ZXBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4xID0gTm9u ZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5OMiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuQSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUyA9IE5vbmUg IyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBNaW5pbXVtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5pbXVtLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWF4aW11bShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TWF4aW11bSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0ZXAsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgTmVnYXRpdmUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O ZWdhdGl2ZSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclNl dE1pbk1heFN0ZXANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTZXRNaW5NYXhTdGVwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclNldE1pbk1heFN0ZXAoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB2ZnJTZXRNaW5NYXhTdGVwKHNlbGYsIE5vZGUpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBOb2RlKQ0KPiANCj4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwMCwgc2VsZi5SVUxFX3ZmclNldE1pbk1heFN0ZXAp DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjg2DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWluaW11bSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTY4Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTY4OA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMSA9IHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjkxDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTY5Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjkz DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5NA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2OTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5OMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk4DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguQSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5OQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzA0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdGVwOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcwMA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdGVwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTcwMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcw Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcw Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBWZnJOdW1lcmljRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkhGbGFncyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDAN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLklzRGlzcGxheVNwZWNpZmllZCA9IEZhbHNlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5VcGRhdGVWYXJUeXBlID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBudW1lcmljRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxh Z3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuTnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3Zmck51bWVyaWNGbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck51bWVyaWNGbGFncyIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJOdW1lcmljRmxhZ3Moc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiB2ZnJOdW1lcmljRmxhZ3Moc2VsZik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJOdW1lcmljRmxhZ3NDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAyMDIsIHNlbGYuUlVMRV92ZnJOdW1lcmljRmxhZ3MpDQo+IA0KPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzA2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5u dW1lcmljRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTEN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdo aWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE3MDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTcwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxk KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTMNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgTnVtZXJpY0ZsYWdzRmllbGRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuSXNTZXRUeXBlID0gRmFsc2UNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklzRGlz cGxheVNwZWNpZmllZCA9IEZhbHNlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAj IFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVPbmUoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWVyaWNTaXplT25lLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWVyaWNTaXpl VHdvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3bywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBOdW1lcmljU2l6ZUZvdXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRm91ciwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6ZUVpZ2h0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0 LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIERpc1BsYXlJbnREZWMoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRp c1BsYXlJbnREZWMsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGlzUGxheVVJbnRE ZWMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRpc1BsYXlVSW50RGVjLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IERpc1BsYXlVSW50SGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludEhleCwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwDQo+ICkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX251bWVyaWNGbGFnc0ZpZWxkDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TnVt ZXJpY0ZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0TnVtZXJpY0ZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBudW1l cmljRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLk51bWVyaWNGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MjA0LCBzZWxmLlJVTEVfbnVtZXJpY0ZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE0 DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmVdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE1DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplT25lKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTcxNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3bykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmlj U2l6ZUZvdXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE3DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXpl Rm91cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0XToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkRpc1BsYXlJbnREZWNdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzE5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkRpc1BsYXlJbnREZWMpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnREZWNd Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzIwDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50RGVjKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50SGV4XToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTcyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5EaXNQbGF5VUludEhleCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRl cmFjdGl2ZUZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBh cnNlci5SZXNldFJlcXVpcmVkRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVp cmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcsDQo+IFZmclN5bnRheFBhcnNl ci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywNCj4gVmZyU3lu dGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzIyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFn c0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9u KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50T25lT2ZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX09ORV9PRl9PUCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkd1aWROb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05P Uk1BTA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIE9uZU9mKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PbmVPZiwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkJhc2VJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clF1ZXN0aW9uQmFzZUluZm9Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEhlYWRlckNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlz dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDbw0K PiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZE9uZU9m KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FbmRPbmVPZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJP bmVvZkZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyT25lb2ZGbGFnc0ZpZWxkQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclNldE1pbk1h eFN0ZXAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQsMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRPbmVP Zg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudE9uZU9mIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9mKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgdmZyU3RhdGVtZW50T25lT2Yoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDIwNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE9uZU9mKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTcyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9uZU9mKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI2 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkJhc2VJbmZvKGxvY2FsY3R4Lk5v ZGUsIGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI3 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguTm9k ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyOA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzM0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAg bG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczMA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTczMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmck9uZW9mRmxh Z3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzMyDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzM3DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5NaW5pbXVtOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTczNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclNldE1pbk1heFN0ZXAo bG9jYWxjdHguTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTczOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3NDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5F bmRPbmVPZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc0MQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJPbmVvZkZsYWdz RmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlVw ZGF0ZVZhclR5cGUgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIG51bWVyaWNG bGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNGbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENv bnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Io c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyT25lb2ZGbGFnc0ZpZWxk DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyT25lb2ZGbGFnc0ZpZWxkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmck9uZW9mRmxhZ3NGaWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIHZmck9uZW9mRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDIwOCwgc2VsZi5SVUxFX3Zmck9uZW9mRmxhZ3NGaWVsZCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm51bWVy aWNGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc0OA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUg X2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc0NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNzQ1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY0ZsYWdzRmllbGQoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1MA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdHJpbmdUeXBlQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0cmluZyhzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UGFzc3dvcmRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3Ry aW5nVHlwZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3Rh dGVtZW50U3RyaW5nVHlwZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAyMTAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzUzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0 cmluZygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmRdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzUyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50UGFzc3dvcmQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVB bHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NUUklOR19PUCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9OT1JNQUwNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk1pbiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTWF4ID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3Ry aW5nKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdHJpbmcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVl c3Rpb25IZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3RDbw0KPiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEVuZFN0cmluZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRW5kU3RyaW5nLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE1pblNpemUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pblNpemUsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTWF4U2l6ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4U2l6ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdHJpbmdGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0cmlu Z0ZsYWdzRmllbGRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgS2V5KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5LZXksIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3RhdGVtZW50U3RyaW5nDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RyaW5nIiApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0cmluZyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFN0cmluZyhzZWxmKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0 cmluZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxMiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0 cmluZykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NTUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmcpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE3NTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0 aW9uSGVhZGVyKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzU3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjMN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc1OA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzU5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzYwDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RyaW5nRmxhZ3NGaWVsZCgpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzYxDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY5DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5L ZXk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY1DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLktleSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE3NjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2 OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3 MQ0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk1pbiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk1pblNpemUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzczDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzc0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzUNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5NYXggPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhTaXpl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzc2DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc3Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3OA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzc5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTc4MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkVuZFN0cmluZykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTc4MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBWZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5IRmxhZ3MgPSAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgc3RyaW5nRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5TdHJp bmdGbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdHJpbmdGbGFnc0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RyaW5nRmxhZ3NGaWVsZCIgKToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdHJpbmdGbGFnc0Zp ZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RyaW5nRmxhZ3NGaWVsZChzZWxm KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkN Cj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMTQsIHNlbGYuUlVMRV92 ZnJTdHJpbmdGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4 Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RyaW5nRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODQNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4NQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0cmluZ0ZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc5MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5I RmxhZyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHF1 ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRl ckZsYWdzRmllbGRDb250ZXh0LDANCj4gKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfc3RyaW5nRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmluZ0ZsYWdzRmllbGQiICk6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RyaW5nRmxhZ3NG aWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHN0cmluZ0ZsYWdzRmllbGQoc2VsZik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdHJp bmdGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjE2LCBzZWxmLlJVTEVfc3RyaW5n RmxhZ3NGaWVsZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc5NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTENCj4gDQo+ICsgICAgICAgICAgICAg ICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5UX184XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTc5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX184KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywNCj4gVmZyU3lu dGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFn LA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJz ZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3lu dGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxh Z106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTMNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRQYXNzd29yZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRy ZWVOb2RlKEVGSV9JRlJfUEFTU1dPUkRfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5RVHlw ZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5GID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5NaW4gPSBOb25l ICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1heCA9IE5vbmUgIyBUb2tlbg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFBhc3N3b3JkKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvDQo+IG50ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRW5kUGFzc3dvcmQoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVu ZFBhc3N3b3JkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1pblNpemUoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk1pblNpemUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWF4U2l6ZShzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTWF4U2l6ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJQYXNzd29yZEZs YWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4 dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5 LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuY29kaW5nKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmNvZGlu ZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRQYXNz d29yZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudFBhc3N3b3JkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFBhc3N3b3JkKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgdmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRQYXNzd29yZENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxOCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFBhc3N3b3Jk KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAg ICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5Ng0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzk3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlv bkhlYWRlcihsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTc5OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA0DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBf bGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3OTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTgwMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgwMQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclBhc3N3b3JkRmxhZ3NGaWVsZCgpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODAyDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODEwDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5L ZXk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA2DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLktleSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4MDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgw OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgx Mg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk1pbiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk1pblNpemUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTMNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODE1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTYNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5NYXggPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhTaXpl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTgxOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxOQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODI0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5FbmNv ZGluZzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MjANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5jb2RpbmcpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODIxDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODIyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4MjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODI3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kUGFz c3dvcmQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MjgNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyUGFzc3dvcmRGbGFn c0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgcGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJQYXNzd29yZEZsYWdzRmllbGQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJQYXNzd29yZEZsYWdz RmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy UGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyUGFzc3dv cmRGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjIwLCBzZWxmLlJVTEVfdmZyUGFzc3dvcmRGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTgzMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFzc3dvcmRG bGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzNQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xh PT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTgzMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmRGbGFnc0ZpZWxkKCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MzcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwDQo+ICkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Bhc3N3b3JkRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFBhc3N3b3JkRmxh Z3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQ YXNzd29yZEZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBwYXNzd29yZEZs YWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5QYXNzd29yZEZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4g c2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMjIs IHNlbGYuUlVMRV9wYXNzd29yZEZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDANCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODM4DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+IFZmclN5bnRheFBhcnNl ci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywNCj4gVmZy U3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVD aGVja0ZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNl ci5PcHRpb25Pbmx5RmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODM5DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50T3JkZXJl ZExpc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9k ZShFRklfSUZSX09SREVSRURfTElTVF9PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFUeXBl ID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk0gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMg VG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcmRlcmVkTGlzdChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Jk ZXJlZExpc3QsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFk ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4gbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRMaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRMaXN0LCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIHZmck9yZGVyZWRMaXN0RmxhZ3Moc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyT3JkZXJlZExpc3RGbGFnc0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBNYXhDb250YWluZXJzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXhDb250YWluZXJzLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50T3JkZXJlZExpc3QiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50T3JkZXJlZExpc3Qoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxmKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9yZGVy ZWRMaXN0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjI0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50 T3JkZXJlZExpc3QpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnZmclF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ0DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE4NDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk1heENvbnRhaW5lcnM6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ1DQo+IA0KPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4Lk0gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhDb250YWluZXJzKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg0Ng0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTg0Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTENCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxj dHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTg1Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTg1Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmck9yZGVyZWRMaXN0Rmxh Z3MoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1NA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1OA0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5v ZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRMaXN0KQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODYwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxGbGFn cyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBvcmRlcmVkbGlzdEZsYWdzRmllbGQo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRDb250 ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zmck9yZGVyZWRMaXN0RmxhZ3MN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJPcmRlcmVkTGlzdEZsYWdzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmck9yZGVyZWRMaXN0RmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB2ZnJPcmRlcmVkTGlzdEZsYWdzKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyT3JkZXJlZExpc3RGbGFnc0NvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDIyNiwgc2VsZi5SVUxFX3Zmck9yZGVyZWRMaXN0RmxhZ3MpDQo+IA0KPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODYyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5v cmRlcmVkbGlzdEZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODY3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAg ICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODYzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4NjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5vcmRlcmVkbGlzdEZs YWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg2OQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBPcmRlcmVkbGlzdEZs YWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg VW5pUXVlRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBOb0VtcHR5RmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm9FbXB0eUZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQsMA0KPiApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9vcmRlcmVkbGlzdEZsYWdzRmllbGQNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRP cmRlcmVkbGlzdEZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgb3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMjI4LCBzZWxmLlJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkKQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODc0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTg3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxh Z106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxhZykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5Ob0VtcHR5RmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4NzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTm9FbXB0eUZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVG bGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVz ZXRSZXF1aXJlZEZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcs IFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVhZE9u bHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsDQo+IFZmclN5bnRheFBhcnNl ci5SZXN0U3R5bGVGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3 Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIFZmclN0YXRlbWVudERhdGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0RBVEVfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuVmFsID0gRUZJX0hJSV9EQVRFKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkYx ID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GMiA9IE5vbmUgIyBUb2tl bg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIERhdGUoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRhdGUsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRW5kRGF0ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kRGF0ZSwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvbkxpc3RDbw0KPiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFllYXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlllYXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg VmFySWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLlZhcklkKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgaSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5Eb3QsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUHJvbXB0KHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Q cm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkhlbHApDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIGkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuTWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dCxpKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1vbnRoKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Nb250aCwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEYXkoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRheSwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJEYXRlRmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy RGF0ZUZsYWdzQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudElu Y29uc2lzdGVudElmQ29udGV4dA0KPiApDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZDb250ZXh0LGkNCj4gKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudERhdGUN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnREYXRlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudERhdGUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2 ZnJTdGF0ZW1lbnREYXRlKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDIzMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODc2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2Nw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFyc2VyLk5hbWUsDQo+IFZm clN5bnRheFBhcnNlci5WYXJJZCwgVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRdOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Nw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3OA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYxID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg4MA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODgx DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmckRhdGVGbGFncygpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4Mg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODg2DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4 Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuWWVhcl06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODg4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlllYXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODg5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlZhcklkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5MA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5MQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODkzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODk0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5NQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk2DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTg5OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODk5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDANCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTAyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTAzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA0 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwNQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA2DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTA5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4RGF0ZVN0ZXBEZWZhdWx0KGxv Y2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTW9udGgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTEx DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklk KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxMg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTkxNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTE1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTE2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxNw0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE4DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxOTE5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTkyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTIxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjINCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTI0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI2DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyNw0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI4DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5MzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTMxDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4RGF0ZVN0ZXBEZWZhdWx0KGxvY2FsY3R4 Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRGF5KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzMw0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5MzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkz Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzOA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTk0MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5NDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0Mw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQ0DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQ1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTk0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0 Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0OA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTk1MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTUxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTUyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1Mw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1pbk1heERhdGVTdGVwRGVmYXVsdChsb2NhbGN0eC5Ob2RlLCBs b2NhbGN0eC5WYWwsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTU5 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTU0DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBsb2NhbGN0eC5GMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTUNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1Ng0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi52ZnJEYXRlRmxhZ3MoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5NTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTk2NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIu SW5jb25zaXN0ZW50SWY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk2MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNp c3RlbnRJZigpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2Ng0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2OQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZERhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgTWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEsIE5vZGU9Tm9uZSwgRGF0ZT1Ob25lLCBLZXlWYWx1ZT1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkRhdGUgPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2Rl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5EYXRlID0gRGF0ZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuS2V5VmFsdWUgPSBLZXlWYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1p bmltdW0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk1pbmltdW0sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVt YmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1heGlt dW0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk1heGltdW0sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RlcChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU3RlcCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5EZWZhdWx0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbWlu TWF4RGF0ZVN0ZXBEZWZhdWx0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0IiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE1pbk1heERhdGVTdGVwRGVmYXVsdChz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIG1pbk1heERhdGVTdGVwRGVmYXVsdChzZWxmLCBO b2RlLCBEYXRlLCBLZXlWYWx1ZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5NaW5NYXhEYXRlU3RlcERlZmF1bHRDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gc2VsZi5zdGF0ZSwgTm9kZSwgRGF0ZSwgS2V5VmFsdWUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjMyLCBzZWxmLlJVTEVfbWluTWF4RGF0ZVN0ZXBE ZWZhdWx0KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4g KyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3Mg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1pbmltdW0pDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTc0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTc1DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5NzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5NYXhpbXVtKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTc3DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTk3OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTg0DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5 bnRheFBhcnNlci5TdGVwOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4 MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdGVw KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4MQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTgzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTkwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5EZWZhdWx0Og0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTk4Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk4OA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk4OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBjbGFzcyBWZnJEYXRlRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkxGbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBkYXRlRmxh Z3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRlRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0LGkp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckRhdGVGbGFncw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRhdGVGbGFn cyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJEYXRl RmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJEYXRlRmxhZ3Moc2VsZik6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJEYXRl RmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMzQsIHNlbGYuUlVMRV92ZnJEYXRlRmxhZ3MpDQo+ IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTkyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 OTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5OTMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTk5NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmRhdGVGbGFnc0ZpZWxk KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0ZUZsYWdzRmllbGRDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFllYXJTdXBwcHJlc3NGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5ZZWFyU3VwcHByZXNzRmxhZywgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNb250aFN1cHByZXNzRmxhZyhzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTW9udGhT dXBwcmVzc0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGF5U3VwcHJlc3NG bGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5EYXlTdXBwcmVzc0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgU3RvcmFnZU5vcm1hbEZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIFN0b3JhZ2VUaW1lRmxhZyhzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVRpbWVG bGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0b3JhZ2VXYWtlVXBGbGFnKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdG9yYWdlV2FrZVVwRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX2RhdGVGbGFnc0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0ZUZsYWdzRmllbGQiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0ZUZsYWdzRmllbGQoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBkYXRlRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGVGbGFnc0ZpZWxkQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMjM2LCBzZWxmLlJVTEVfZGF0ZUZsYWdzRmllbGQpDQo+IA0KPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDAwDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDE4MSkp ICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTgxKSkgJiAoKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5ZZWFyU3VwcHByZXNzRmxhZyAtIDE4MSkpIHwgKDEgPDwNCj4gKFZmclN5bnRh eFBhcnNlci5Nb250aFN1cHByZXNzRmxhZyAtIDE4MSkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBh cnNlci5EYXlTdXBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIu U3RvcmFnZU5vcm1hbEZsYWcgLSAxODEpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuU3Rv cmFnZVRpbWVGbGFnIC0gMTgxKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VX YWtlVXBGbGFnIC0gMTgxKSkpKSAhPSAwKSBvcg0KPiBfbGE9PVZmclN5bnRheFBhcnNlci5OdW1i ZXIpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxp bmUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50VGltZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVElNRV9PUCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5WYWwgPSBFRklfSElJX1RJTUUoKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRjEgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkYyID0g Tm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVGltZShzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGlt ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRUaW1lKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRUaW1l LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uSGVhZGVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvDQo+IG50ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgSG91cihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSG91ciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBWYXJJZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZh cklkLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50 aWZpZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRG90KHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBQcm9tcHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBO dW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgSGVscChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuSGVscCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVs cCwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBtaW5NYXhUaW1lU3RlcERlZmF1bHQo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuTWluTWF4VGltZVN0ZXBEZWZhdWx0Q29udGV4dCkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NaW5NYXhUaW1lU3RlcERlZmF1bHRDb250 ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWludXRlKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5NaW51dGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2Vjb25kKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZWNvbmQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyVGltZUZsYWdzKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclRpbWVGbGFnc0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZihzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQNCj4gKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElm Q29udGV4dCxpDQo+ICkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFH UyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRUaW1lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VGltZSIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRUaW1lKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50VGltZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFRpbWVDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyMzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRUaW1lKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAwMg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpbWUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwOTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Qcm9tcHQsIFZmclN5bnRh eFBhcnNlci5OYW1lLA0KPiBWZnJTeW50YXhQYXJzZXIuVmFySWQsIFZmclN5bnRheFBhcnNlci5R dWVzdGlvbklkXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDMNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5Ob2Rl LCBsb2NhbGN0eC5RVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw MDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDEwDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDA1DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBsb2NhbGN0eC5G MSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjAwNw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJU aW1lRmxhZ3MoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjAxMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkhvdXJdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxNA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ib3VyKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjAxNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwMTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTcNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxOQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIwMjENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyMw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDI2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDI3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyOA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyOQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjAzMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwMzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAz Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDMzDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM0DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjAzNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1pbk1h eFRpbWVTdGVwRGVmYXVsdChsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5WYWwsIDApDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1pbnV0ZSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwMzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDM4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM5DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQwDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDQzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDQN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQ2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwNDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjA0OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0 OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTANCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGVscCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwNTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDUzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTQNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1NQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIwNTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5taW5NYXhUaW1l U3RlcERlZmF1bHQobG9jYWxjdHguTm9kZSwgbG9jYWxjdHguVmFsLCAxKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZWNvbmQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDU5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlZhcklkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2 MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2MQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2Mg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDYzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDY0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjA2NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Qcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY2DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY3DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzENCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDcyDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDczDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMDc0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3 NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc2DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzcNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDc5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4VGltZVN0ZXBE ZWZhdWx0KGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwODANCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYyID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjA4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDgyDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclRpbWVGbGFncygpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4Mw0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDkwDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICB3aGls ZSBfbGE9PVZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZjoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDg3DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDkyDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kVGltZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5Ng0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBNaW5NYXhUaW1l U3RlcERlZmF1bHRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lLCBUaW1lPU5vbmUsIEtl eVZhbHVlPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuVGltZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLktleVZhbHVlID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlRpbWUgPSBU aW1lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9IEtleVZhbHVlDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgTWluaW11bShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWluaW11bSwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTWF4aW11bShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4aW11bSwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTdGVwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdGVwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIERlZmF1bHQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9taW5NYXhUaW1lU3RlcERlZmF1bHQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaW5NYXhUaW1lU3Rl cERlZmF1bHQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 TWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgbWluTWF4 VGltZVN0ZXBEZWZhdWx0KHNlbGYsIE5vZGUsIFRpbWUsIEtleVZhbHVlKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk1pbk1heFRpbWVTdGVwRGVm YXVsdENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBOb2RlLCBUaW1lLCBL ZXlWYWx1ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNDAsIHNl bGYuUlVMRV9taW5NYXhUaW1lU3RlcERlZmF1bHQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDk4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTWluaW11bSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5OQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxMDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwMg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1heGltdW0pDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIxMDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTA0DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTA1DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0ZXA6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTA2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0ZXApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTA3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTA4DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTYNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLkRlZmF1bHQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTEyDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTEzDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTE0DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTE1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclRpbWVGbGFnc0Nv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHRpbWVGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlRpbWVGbGFnc0Zp ZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5U aW1lRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy VGltZUZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyVGltZUZsYWdzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclRpbWVGbGFncyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IHZmclRpbWVGbGFncyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclRpbWVGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0Miwgc2Vs Zi5SVUxFX3ZmclRpbWVGbGFncykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnRpbWVGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjEyMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjExOQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTIwDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYudGltZUZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjEyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cyBUaW1lRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcg PSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSG91clN1cHBwcmVzc0ZsYWcoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhv dXJTdXBwcHJlc3NGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1pbnV0ZVN1 cHByZXNzRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTWludXRlU3VwcHJlc3NGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFNlY29uZFN1cHByZXNzRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vjb25kU3VwcHJlc3NGbGFn LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0b3JhZ2VOb3JtYWxGbGFnKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdG9yYWdlTm9ybWFsRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdG9y YWdlVGltZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTdG9yYWdlV2FrZVVwRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVdha2VVcEZsYWcsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90aW1lRmxhZ3NGaWVsZA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFRpbWVGbGFnc0ZpZWxkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFRpbWVGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdGltZUZs YWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0NCwgc2VsZi5S VUxFX3RpbWVGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEy Ng0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAxODQpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwg KF9sYSAtIDE4NCkpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuSG91clN1cHBwcmVzc0Zs YWcgLSAxODQpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuTWludXRlU3VwcHJlc3NGbGFn IC0gMTg0KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlNlY29uZFN1cHByZXNzRmxhZyAt IDE4NCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5TdG9yYWdlTm9ybWFsRmxhZyAtIDE4 NCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5TdG9yYWdlVGltZUZsYWcgLSAxODQpKSB8 ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVdha2VVcEZsYWcgLSAxODQpKSkpICE9 IDApIG9yDQo+IF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcik6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0TWF0Y2goc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4g DQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxs eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRDb25kaXRpb25hbENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZT dGF0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlN0YXRDb250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3Vw cHJlc3NJZlN0YXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0 YXRDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEdyYXlPdXRJZlN0YXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 R3JheU91dElmU3RhdENvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdENvbnQNCj4gZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDb25k aXRpb25hbA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFsIiApOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwoc2VsZik6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRDb25kaXRpb25hbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0Niwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudENvbmRpdGlvbmFsKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTMyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGlzYWJs ZUlmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyOA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLlN1cHByZXNzSWZdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTI5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZl06DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbmNv bnNpc3RlbnRJZl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzENCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQo KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnREaXNhYmxlSWZTdGF0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2Fi bGVJZlN0YXRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb24NCj4gdGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ld0NvbnQNCj4gZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0 ZW50SWZTdGF0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElm U3RhdENvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRp dGlvbmFsTmV3IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg dmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0Nv bnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENvbmRpdGlv bmFsTmV3KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjEzNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjEzNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 R3JheU91dElmU3RhdE5ldygpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzcN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCgp DQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZp bmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZy U3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3Vw cHJlc3NJZlN0YXROZXcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlN0YXROZXdDb24NCj4gdGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0 YXRDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxMzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZT dGF0TmV3KCkNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEdyYXlPdXRJZlN0YXROZXcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdE5ld0NvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50R3JheU91dElmU3RhdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0 YXRDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5 T3V0SWZTdGF0KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjE0MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmU3Rh dE5ldygpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xh c3MgVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3Rh dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TGFiZWwoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TGFiZWxDb250ZXh0LDApDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudFN0YXRMaXN0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg dmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDI1NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0KQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTQ5DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LA0KPiBW ZnJTeW50YXhQYXJzZXIuR290bywgVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0Mw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9uZU9mLCBW ZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QsDQo+IFZmclN5bnRheFBhcnNlci5EYXRlLCBWZnJT eW50YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LA0KPiBWZnJTeW50YXhQ YXJzZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLCBWZnJTeW50YXhQYXJzZXIu U3RyaW5nLA0KPiBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjE0NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudFF1ZXN0aW9ucygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCBWZnJTeW50 YXhQYXJzZXIuU3VwcHJlc3NJZiwNCj4gVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgVmZyU3lu dGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudENvbmRp dGlvbmFsKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYWJlbF06DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxNDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRMYWJlbCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3VpZE9wXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50 b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSwg VmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIFZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRTdGF0Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVz dGlvbnNDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50TGFiZWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TGFiZWxDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SW52YWxpZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50U3RhdExpc3RPbGQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZCIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdE9s ZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0T2xkKHNl bGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3RhdExpc3RPbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5z dGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTYsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE1NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlN1YnRpdGxlLCBWZnJTeW50YXhQYXJzZXIuVGV4dCwNCj4gVmZyU3ludGF4UGFyc2VyLkdv dG8sIFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNTENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRTdGF0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9y ZGVyZWRMaXN0LA0KPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZyU3ludGF4UGFyc2VyLlRpbWUs IFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gVmZyU3ludGF4UGFyc2VyLk51bWVyaWMsIFZm clN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmluZywNCj4gVmZyU3lu dGF4UGFyc2VyLkFjdGlvbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkxhYmVsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE1Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudExh YmVsKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnZlbnRvcnksIFZmclN5bnRheFBhcnNlci5I aWRkZW4sDQo+IFZmclN5bnRheFBhcnNlci5SZXN0b3JlLCBWZnJTeW50YXhQYXJzZXIuU2F2ZV06 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTQNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50RGlzYWJs ZUlmU3RhdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVO b2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBE aXNhYmxlSWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5k SWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4 dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50RGlzYWJsZUlmU3RhdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZlN0YXQiICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGlz YWJsZUlmU3RhdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudERpc2Fi bGVJZlN0YXQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dChzZWxmLA0KPiBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjU4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxNTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24o bG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE1OQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Mw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+ MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQ YXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAt IDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2Vy LkRhdGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMQ0KPiA8 PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5QYXNzd29yZCAtIDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0NikpIHwNCj4gKDEgPDwg KFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5IaWRkZW4gLSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkp ICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDENCj4gPDwgKF9s YSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTAp KSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtIDExMCkpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlJl c2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlvbiAtIDExMCkp IHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSkpICE9IDApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2MA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRMaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNjUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNjYNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lm Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFN1cHByZXNzSWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmll bGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZs YWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Q29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdp c2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Is IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRn cmF5b3V0SWZTdXBwcmVzc0lmDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZiIgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRn cmF5b3V0SWZTdXBwcmVzc0lmKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVt ZW50Z3JheW91dElmU3VwcHJlc3NJZihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWZD b250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNjAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRncmF5b3V0 SWZTdXBwcmVzc0lmKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2OQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3MA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNzENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIxNzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0Zp ZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNzcNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAg IHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTczDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjE3NA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MTc5DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTgwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTg0DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50c3VwcHJlc3NJZkdy YXlPdXRJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBHcmF5T3V0SWYoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxh Z3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Qml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudHN1cHByZXNzSWZHcmF5T3V0SWYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElm IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudHN1cHByZXNzSWZHcmF5T3V0SWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJT dGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlP dXRJZkNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudHN1 cHByZXNzSWZHcmF5T3V0SWYpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTg3 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JheU91dElm KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODgNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTg5DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTkwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZmxh Z3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTk1DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE5MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxOTINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuZmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjE5Nw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE5OA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwMg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2Rl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAzDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0TmV3Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTdXBwcmVzc0lmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FbmRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxB R1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRT dGF0TGlzdENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXROZXciICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0TmV3Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjY0LCBzZWxmLlJVTEVfdmZyU3RhdGVt ZW50U3VwcHJlc3NJZlN0YXROZXcpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3VwcHJl c3NJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxOA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjA2 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdT KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwNw0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxMw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMDkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjEwDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyMTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMTYN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjAN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24obG9jYWxjdHgu Tm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyMQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjIyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0g MCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuT25l T2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfCAo MQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8DQo+IChWZnJT eW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFi ZWwgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3lu dGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29y ZCAtIDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRh eFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4g LSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9y ICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDENCj4gPDwgKF9sYSAtIDExMCkp ICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9u IC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlvbiAtIDExMCkpIHwNCj4gKDEg PDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSkpICE9IDApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudFN0YXRMaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyMjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjgNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjIyOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3Q29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9HUkFZX09V VF9JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBHcmF5T3V0SWYoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdy YXlPdXRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENv bnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3Rh dExpc3Qoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0 Q29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VP cihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5 T3V0SWZTdGF0TmV3DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZT dGF0TmV3KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElm U3RhdE5ldyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdDb250ZXh0KHNlbGYsDQo+IHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAyNjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KQ0KPiANCj4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjI0NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjIzMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzNA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjIzOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyMzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjM2DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDENCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEV4cHJlc3Npb24obG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjI0Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1MQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUg KCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgx IDw8DQo+IChWZnJTeW50YXhQYXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRp dGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PA0K PiAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5U aW1lIC0gNDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRh eFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0Jv eCAtIDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYg LSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBh cnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAw IGFuZCAoKDENCj4gPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5j b25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAt IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PA0KPiAo VmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLkFjdGlvbiAtIDExMCkpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAx MTApKSkpICE9IDApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI0OA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRMaXN0KCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTMNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyNTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5FbmRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1NQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZlN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUg PSBJZnJUcmVlTm9kZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBJbmNvbnNpc3RlbnRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgRW5kSWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBm bGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQo c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXRDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy NjgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQpDQo+IA0KPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjU3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyNTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Qcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyNjENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjY0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNzcNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjI2NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G TEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjYNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjcNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIy NzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjY4DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2OQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMjc0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Mjc1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Mjc5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2Fs Y3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODANCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjI4MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dCwNCj4gMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52 ZW50b3J5KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnlD b250ZQ0KPiB4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZg0KPiBhdWx0c0NvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudElu dmFsaWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEludmFsaWQoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDI3MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWQpDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODYN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5IaWRkZW5dOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjgzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50SW52YWxpZEhpZGRlbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5XToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4NA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5TYXZlXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjI4NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50SW52 YWxpZEhpZGRlbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEhpZGRlbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuSGlkZGVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhbHVlKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5WYWx1ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBLZXkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4NCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZh bGlkSGlkZGVuIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2 ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbkNvbnRl eHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDI3Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRIaWRk ZW4pDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg4 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGlkZGVuKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg5DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFsdWUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyOTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkxDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyOTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTQNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMjk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk2DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRl bWVudEludmFsaWRJbnZlbnRvcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBJbnZlbnRvcnkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBIZWxwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5IZWxwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0 cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBUZXh0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5UZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UZXh0LCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW52 YWxpZEludmVudG9yeQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkiICk6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxpZElu dmVudG9yeShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRJ bnZlbnRvcnkoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dChzZWxmLA0KPiBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMjc0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyOTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAwDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjMwMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzAyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzA0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjMwNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzA2DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjMwNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDgN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl bikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwOQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjMxMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMx MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjMxOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVGV4dDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTMNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzMTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz MTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE2DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIxDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEludmFsaWRTYXZlUmVz dG9yZURlZmF1bHRzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVs dHMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRlZmF1bHRzLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1h KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgRm9ybUlkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBQcm9tcHQoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlByb21wdCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBIZWxw KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5IZWxwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNhdmUoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlNhdmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUmVzdG9yZShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu UmVzdG9yZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxB R1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJT dGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRT YXZlUmVzdG9yZURlZmF1bHRzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVs dHMoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9DQo+IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0c0NvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDI3NiwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRTYXZlUmVz dG9yZURlZmF1bHRzKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyMw0KPiAN Cj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLlJlc3RvcmUgb3IgX2xhPT1WZnJTeW50YXhQ YXJzZXIuU2F2ZSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcklubGluZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjMyNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHRzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI1DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzMjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Gb3JtSWQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz MjcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI4DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzI5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzANCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzMyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzMNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzMzUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM2DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzM4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzOQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMzQwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzQxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM1NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFw dGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTgyLHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAg ICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQ0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjM0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1MQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUg X2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzNDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzQ4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdz RmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTMNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2MA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzU2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1Nw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU4DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzU5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM2Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMYWJlbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGFiZWwsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRMYWJlbA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudExhYmVsIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmclN0YXRlbWVudExhYmVsKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3Rh dGVtZW50TGFiZWwoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI3 OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudExhYmVsKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkxhYmVsKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzY1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzY2DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEJhbm5l ckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfR1VJRF9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCYW5uZXIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkJhbm5lciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGl0 bGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExpbmUoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkxpbmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQWxpZ24oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkFs aWduLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFRpbWVvdXQoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRp bWVvdXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTGVmdChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVmdCwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDZW50ZXIoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNlbnRlciwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSaWdodChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmlnaHQsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXINCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTdGF0ZW1lbnRCYW5uZXIiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50QmFubmVyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg dmZyU3RhdGVtZW50QmFubmVyKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMjgwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50QmFubmVyKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM2OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkJhbm5lcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3 MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzcyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVGl0bGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzMNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzNzUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzYNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzc4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5MaW5lXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzNzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTGluZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODANCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4MQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQWxpZ24pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzgzDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMTM2KSkgJiB+MHgz ZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxMzYpKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4UGFy c2VyLkxlZnQgLSAxMzYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmlnaHQgLSAxMzYpKSB8 ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuQ2VudGVyIC0gMTM2KSkpKSAhPSAwKSk6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzg0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UaW1lb3V0XToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODUNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZW91dCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzODYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIzODcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4OA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IFZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu Tm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkJ1ZmZlciA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNpemUgPSAwDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5UeXBlTmFtZSA9ICcnDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5UeXBlU2l6ZSA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklzU3RydWN0ID0gRmFsc2UN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkFycmF5TnVtID0gMA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEd1aWRP cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuR3VpZE9wLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFV1aWQoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlV1aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBF bmRHdWlkT3Aoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVuZEd1aWRPcCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBEYXRhVHlwZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuRGF0YVR5cGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgVWludDY0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5VaW50NjQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg VWludDMyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5VaW50MzIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWlu dDE2KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5VaW50MTYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDgo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlVpbnQ4LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJvb2xlYW4oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkJvb2xlYW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX1NUUklOR19J RChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRUZJX1NUUklOR19JRCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBF RklfSElJX0RBVEUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBFRklfSElJX1RJTUUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJFeHRlbnNpb25EYXRh KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lvbkRhdGFDb250ZXh0KQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lvbkRhdGFDb250ZXh0LGkpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9u KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29u dGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJy YWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEV4dGVuc2lv biIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0 ZW1lbnRFeHRlbnNpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRF eHRlbnNpb24oc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwN Cj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy ODIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRFeHRlbnNpb24pDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzkxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuR3VpZE9wKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzkyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVXVpZCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzOTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2lu dGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTk4LHNlbGYuX2N0eCkNCj4gDQo+ICsg ICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzOTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk2DQo+IA0K PiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5EYXRhVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTcNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg IHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzOTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDAyDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjM5OQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDAwDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDAxDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDMyXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjQwOA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0MDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjQwNg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQwNw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQxNl06DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxMA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDE2KQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDExDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTINCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTMNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50OF06DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxNg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDgpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyMA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxOA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxOQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJvb2xlYW5d Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjINCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJvb2xlYW4pDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyNg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyNA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyNQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkVGSV9TVFJJTkdfSURdOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0MjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkVGSV9TVFJJTkdfSUQpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQzMg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQzMA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQzMQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURV06DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjQzNA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDM1DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzcNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUVdOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDANCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ0DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0MQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQyDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQzDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuRUZJX0hJSV9SRUZdOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0NDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkVGSV9ISUlfUkVGKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0NTANCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ3 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0NDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0NDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUyDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTYNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUzDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTUNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICByYWlzZSBO b1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjQ2Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2FsdCA9IHNlbGYuX2ludGVy cC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTk3LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQgX2FsdCE9QVROLklOVkFMSURfQUxUX05VTUJF UjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9hbHQ9PTE6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjANCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnZmckV4dGVuc2lvbkRhdGEoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0NjUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2FsdCA9 IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTk3LHNlbGYuX2N0eCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQ3Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDY4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQ3Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuR3VpZE9wOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc0DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDc1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkVuZEd1aWRPcCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjQ3OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBjbGFzcyBWZnJFeHRlbnNpb25EYXRhQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5URk5hbWUgPSAnJw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRk5hbWUg PSAnJw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVEZWYWx1ZSA9IE5vbmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4g PSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGF0YShzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGF0YSwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBEb3Qoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRG90LCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFycmF5TmFtZShzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5BcnJheU5hbWVDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4dGVuc2lvbkRhdGENCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHRlbnNpb25E YXRhIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4 dGVuc2lvbkRhdGEoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJFeHRlbnNpb25EYXRh KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyRXh0ZW5zaW9uRGF0YUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4NCwgc2VsZi5SVUxF X3ZmckV4dGVuc2lvbkRhdGEpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDgw DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODENCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXRhKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNDg1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODINCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDgzDQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4 LkkgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDg0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIu RG90Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ4Nw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDg4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuYXJyYXlOYW1lKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0OTMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0OTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDk1DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJN b2RhbFRhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJNb2RhbFRhZ0NvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dE1vZGFsDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50TW9kYWwiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TW9kYWwoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRNb2RhbChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE1vZGFsQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMjg2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50TW9kYWwpDQo+IA0KPiArICAg ICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDk3DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi52ZnJNb2RhbFRhZygpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0OTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xh c3MgVmZyTW9kYWxUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJ ZnJUcmVlTm9kZShFRklfSUZSX01PREFMX1RBR19PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBNb2RhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTW9kYWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJNb2RhbFRhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck1vZGFsVGFnIiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck1vZGFsVGFnKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgdmZyTW9kYWxUYWcoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJNb2RhbFRhZ0NvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI4OCwgc2VsZi5SVUxFX3Zmck1vZGFsVGFnKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjUwMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk1vZGFsKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmlu dD0tMSwgUGFyZW50Tm9kZT1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUGFyZW50Tm9kZSA9IE5vbmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHByZXNzaW9uSW5mbygpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MID0g Tm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5QYXJlbnROb2RlID0gUGFyZW50 Tm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFuZFRlcm0oc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQW5k VGVybUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQW5k VGVybUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPUihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu T1IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9SLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRl bWVudEV4cHJlc3Npb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZiwgUGFyZW50Tm9kZSk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIFBhcmVudE5vZGUpDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjkwLCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50RXhwcmVzc2lvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 MDINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmFuZFRlcm0obG9jYWxjdHguRXhwSW5mbykNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUwNw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJz ZXIuT1I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTAzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P UikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MDQNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSwgUGFyZW50Tm9kZXM9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlBhcmVudE5vZGVzID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cHJlc3Npb25JbmZvKCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlBhcmVudE5vZGVzID0gUGFyZW50Tm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh bmRUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT1Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk9SKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P UiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi KHNlbGYsIFBhcmVudE5vZGVzKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0KHNlbGYsDQo+ IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgUGFyZW50Tm9kZXMpDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMjkyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmFuZFRlcm0obG9jYWxjdHguRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjUxNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT1I6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTExDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9SKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjUxMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmFuZFRlcm0obG9j YWxjdHguRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQW5kVGVybUNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTGluZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkwgPSBOb25lICMg VG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYml0d2lzZW9yVGVybShzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5CaXR3aXNl b3JUZXJtQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5CaXR3aXNlb3JUZXJtQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIEFORChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQU5EKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5BTkQsIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hbmRUZXJtDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QW5kVGVybSIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBbmRUZXJtKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgYW5kVGVybShzZWxmLCBFeHBJbmZvKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTQsIHNlbGYuUlVMRV9hbmRUZXJtKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUxOA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuYml0d2lzZW9yVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNTIzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5BTkQ6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTE5DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lkwg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5BTkQpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTIwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuYml0d2lzZW9y VGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUyNQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBCaXR3aXNlb3JU ZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5MaW5lID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTCA9IE5v bmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBiaXR3aXNlYW5kVGVybShzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5C aXR3aXNlYW5kVGVybUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX2JpdHdpc2VvclRlcm0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlb3JUZXJtIiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpdHdpc2VvclRlcm0oc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBiaXR3aXNlb3JUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lzZW9yVGVybUNvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI5Niwgc2VsZi5SVUxFX2JpdHdpc2VvclRlcm0p DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTI2DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5iaXR3aXNlYW5kVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTMxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTI3DQo+IA0KPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTI4DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuYml0d2lzZWFuZFRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1MzMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgQml0d2lzZWFuZFRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxpbmUgPSBOb25lDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGVxdWFsVGVybShz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlQW5kKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfYml0d2lzZWFuZFRlcm0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlYW5kVGVybSIgKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRCaXR3aXNlYW5kVGVybShzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGJpdHdpc2VhbmRUZXJtKHNlbGYsIEV4cEluZm8pOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lz ZWFuZFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRXhwSW5mbykN Cj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTgsIHNlbGYuUlVMRV9i aXR3aXNlYW5kVGVybSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzQNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVxdWFsVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTM5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5k Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUzNQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBsb2NhbGN0eC5MID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lz ZUFuZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzYNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5lcXVhbFRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1NDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgRXF1YWxUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5O b2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MaW5lID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBjb21wYXJlVGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUNvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBlcXVhbFRlcm1TdXBwbGVt ZW50YXJ5KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybVN1cHBsZW1l bnRhcnlDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9lcXVhbFRlcm0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRFcXVhbFRlcm0iICk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0RXF1YWxUZXJtKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgZXF1YWxUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzAwLCBzZWxmLlJVTEVfZXF1YWxUZXJtKQ0KPiANCj4gKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU0Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm0oRXhw SW5mbykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0Ng0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuRXF1YWwgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm90RXF1YWw6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTQzDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZXF1YWxUZXJtU3VwcGxlbWVudGFyeShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjU0OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBFcXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfZXF1YWxUZXJtU3VwcGxlbWVudGFyeQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5jb3B5RnJvbShjdHgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gY3R4LkV4cEluZm8NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gY3R4 Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIEVxdWFs VGVybUVxdWFsUnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNl clJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1T dXBwbGVtZW50YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyc2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCj4gDQo+ICsgICAgICAg IGRlZiBjb21wYXJlVGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUNvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRFcXVhbFRlcm1FcXVhbFJ1bGUiICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXF1YWxUZXJtRXF1YWxSdWxlKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBF cXVhbFRlcm1Ob3RFcXVhbFJ1bGVDb250ZXh0KEVxdWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0 eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQYXJzZXIuRXF1 YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOb3RFcXVhbChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm90RXF1YWwsIDApDQo+ IA0KPiArICAgICAgICBkZWYgY29tcGFyZVRlcm0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQ29tcGFy ZVRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RXF1YWxUZXJtTm90RXF1YWxSdWxlIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybU5vdEVxdWFs UnVsZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGVxdWFsVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgRXhw SW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5FcXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzAyLCBzZWxmLlJVTEVfZXF1YWxUZXJtU3VwcGxlbWVudGFyeSkNCj4gDQo+ICsgICAgICAgIHRy eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU1Mw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2Vu ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2NhbGN0eCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0OQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FcXVhbCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5j b21wYXJlVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5vdEVxdWFsXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJt Tm90RXF1YWxSdWxlQ29udGV4dChzZWxmLA0KPiBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjU1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Ob3RFcXVhbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI1NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5jb21wYXJlVGVybShFeHBJ bmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBDb21wYXJlVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMg PSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJt Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNvbXBhcmVU ZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybVN1cHBsZW1lbnRhcnlD b250DQo+IGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5D b21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZQ0KPiB4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY29tcGFyZVRlcm0NCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb21wYXJlVGVybSIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVy bShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYsIEV4cEluZm8p Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ29t cGFyZVRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykN Cj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDQsIHNlbGYuUlVMRV9j b21wYXJlVGVybSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4g DQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NTUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnNoaWZ0VGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICB3aGlsZSAoKChfbGEpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCBf bGEpICYgKCgxIDw8DQo+IFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwpIHwgKDEgPDwgVmZyU3lu dGF4UGFyc2VyLkxlc3MpIHwgKDEgPDwNCj4gVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkg fCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuR3JlYXRlcikpKSAhPSAwKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5j b21wYXJlVGVybVN1cHBsZW1lbnRhcnkoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1NjENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4 cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhw SW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY29t cGFyZVRlcm1TdXBwbGVtZW50YXJ5DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBjdHguRXhwSW5mbw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBjdHguTm9k ZXMNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MNCj4gQ29tcGFy ZVRlcm1MZXNzUnVsZUNvbnRleHQoQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFy c2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVU ZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMZXNzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzLCAwKQ0KPiANCj4gKyAgICAg ICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0Q29tcGFyZVRlcm1MZXNzUnVsZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUxlc3NSdWxlKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBD b21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGVDb250ZXh0KENvbXBhcmVUZXJtU3VwcGxlbWVudGFy eUNvbnRleHQNCj4gKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50 YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29w eUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEdyZWF0ZXJFcXVhbChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuR3JlYXRlckVxdWFsLCAwKQ0KPiANCj4gKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q29tcGFyZVRlcm1HcmVh dGVyRXF1YWxSdWxlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MNCj4gQ29tcGFyZVRl cm1HcmVhdGVyUnVsZUNvbnRleHQoQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFy c2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVU ZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBHcmVhdGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyLCAwKQ0KPiANCj4g KyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0Q29tcGFyZVRlcm1HcmVhdGVyUnVsZSIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcw0KPiBDb21wYXJlVGVybUxlc3NFcXVhbFJ1bGVDb250ZXh0KENvbXBhcmVUZXJtU3Vw cGxlbWVudGFyeUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZm clN5bnRheFBhcnNlci5Db21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5jb3B5RnJvbShjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTGVzc0VxdWFsKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5MZXNzRXF1YWwsIDApDQo+IA0KPiArICAgICAgICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlNoaWZ0VGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb21wYXJlVGVybUxlc3NF cXVhbFJ1bGUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgY29tcGFyZVRlcm1T dXBwbGVtZW50YXJ5KHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChz ZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzA2LCBzZWxmLlJVTEVfY29tcGFyZVRlcm1TdXBwbGVt ZW50YXJ5KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNTcwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+IA0KPiArICAg ICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtTGVzc1J1 bGVDb250ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTYyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkxlc3MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYzDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlQ29udGV4dChzZWxmLA0K PiBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2NA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTY1DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu R3JlYXRlcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLkNvbXBhcmVUZXJtR3JlYXRlclJ1bGVDb250ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTY2DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTY3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc2hp ZnRUZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFy ZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRU ZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2Vw dGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFNoaWZ0VGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu Tm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQWRkTWludXNUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHNoaWZ0VGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtU3Vw cGxlbWVudGFyeUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NoaWZ0VGVybQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFNoaWZ0VGVybSIgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTaGlmdFRlcm0oc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzaGlmdFRlcm0oc2VsZiwgRXhwSW5mbyk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1D b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDgsIHNlbGYuUlVMRV9zaGlmdFRlcm0p DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTcyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjU3Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fOSBvciBfbGE9PVZmclN5bnRh eFBhcnNlci5UX18xMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NzMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm1TdXBwbGVtZW50YXJ5KEV4cElu Zm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc4DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFNoaWZ0VGVybVN1cHBsZW1lbnRh cnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV9zaGlmdFRlcm1TdXBwbGVtZW50YXJ5DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTm9kZXMgPSBjdHguTm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgU2hpZnRUZXJtUmlnaHRDb250ZXh0KFNoaWZ0VGVybVN1cHBsZW1lbnRh cnlDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQ YXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9t KGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQWRkTWludXNUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFNoaWZ0VGVybVJp Z2h0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNoaWZ0 VGVybVJpZ2h0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBTaGlmdFRlcm1MZWZ0Q29udGV4dChTaGlmdFRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZy U3ludGF4UGFyc2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5j b3B5RnJvbShjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWRkTWludXNUZXJtKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTaGlm dFRlcm1MZWZ0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFNoaWZ0VGVybUxlZnQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzaGlmdFRlcm1TdXBwbGVtZW50YXJ5 KHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDMxMCwgc2VsZi5SVUxFX3NoaWZ0VGVybVN1cHBsZW1lbnRhcnkpDQo+IA0KPiAr ICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODMNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX185XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtTGVmdENvbnRleHQoc2VsZiwgbG9jYWxj dHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NzkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fOSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18xMF06DQo+ IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVy bVJpZ2h0Q29udGV4dChzZWxmLCBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX18xMCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODIN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZp bmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQWRk TWludXNUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIG11bHRkaXZtb2RUZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RU ZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFkZE1p bnVzVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtU3VwcGxlbWVu dGFyeUNvbg0KPiB0ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250DQo+IGV4dCxpKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYWRkTWludXNUZXJtDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWlu dXNUZXJtIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFk ZE1pbnVzVGVybShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGFkZE1pbnVzVGVybShzZWxm LCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkFkZE1pbnVzVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl LCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMxMiwg c2VsZi5SVUxFX2FkZE1pbnVzVGVybSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI1ODUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm11bHRkaXZtb2RUZXJtKEV4cEluZm8pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLlRfXzExIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1OTENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0x LCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X2FkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBjb3B5RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IGN0eC5FeHBJbmZvDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IGN0 eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBB ZGRNaW51c1Rlcm1wQWRkQ29udGV4dChBZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6 UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLkFkZE1p bnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJzZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgbXVsdGRpdm1vZFRlcm0oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuTXVsdGRpdm1vZFRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtcEFk ZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBZGRNaW51 c1Rlcm1wQWRkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBBZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQoQWRk TWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1 YWxseSBhDQo+IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4 dA0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE5lZ2F0aXZlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSwgMCkNCj4gDQo+ICsgICAgICAgIGRlZiBtdWx0ZGl2 bW9kVGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRBZGRNaW51c1Rlcm1TdWJ0cmFjdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRBZGRNaW51c1Rlcm1TdWJ0cmFjdChzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIGFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBw bGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8p DQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzE0LCBzZWxmLlJVTEVf YWRkTWludXNUZXJtU3VwcGxlbWVudGFyeSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LlRfXzExXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuQWRkTWludXNUZXJtcEFkZENvbnRleHQoc2VsZiwNCj4gbG9jYWxjdHgpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTkzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubXVsdGRpdm1vZFRl cm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OZWdhdGl2ZV06DQo+IA0KPiArICAg ICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1YnRy YWN0Q29udGV4dChzZWxmLA0KPiBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU5NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OZWdhdGl2ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 OTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tdWx0ZGl2bW9kVGVybShFeHBJbmZvKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cyBNdWx0ZGl2bW9kVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBb XQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRl eHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBtdWx0ZGl2bW9kVGVy bVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5 Qw0KPiBvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu TXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q28NCj4gbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX211bHRkaXZtb2RUZXJtDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TXVsdGRp dm1vZFRlcm0iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 TXVsdGRpdm1vZFRlcm0oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBtdWx0ZGl2bW9kVGVy bShzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNl bGYuc3RhdGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMzE2LCBzZWxmLlJVTEVfbXVsdGRpdm1vZFRlcm0pDQo+IA0KPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTk4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5jYXN0VGVybShFeHBJbmZv KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjAyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSAoKChfbGEpICYgfjB4 M2YpID09IDAgYW5kICgoMSA8PCBfbGEpICYgKCgxIDw8DQo+IFZmclN5bnRheFBhcnNlci5UX18x MikgfCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuVF9fMTMpIHwgKDEgPDwNCj4gVmZyU3ludGF4UGFy c2VyLlNsYXNoKSkpICE9IDApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU5OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm11bHRkaXZtb2RUZXJtU3VwcGxlbWVu dGFyeShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwNA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBNdWx0ZGl2bW9k VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0g W10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9tdWx0ZGl2bW9kVGVybVN1cHBs ZW1lbnRhcnkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjb3B5RnJvbShz ZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku Y29weUZyb20oY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IGN0eC5FeHBJ bmZvDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IGN0eC5Ob2Rlcw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBNdWx0ZGl2bW9kVGVybURpdkNv bnRleHQoTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRl eHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxl bWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNl cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBTbGFzaChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2xhc2gsIDApDQo+IA0KPiArICAgICAgICBkZWYg Y2FzdFRlcm0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 TXVsdGRpdm1vZFRlcm1EaXYiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0TXVsdGRpdm1vZFRlcm1EaXYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzDQo+IE11bHRkaXZtb2RUZXJt TXVsQ29udGV4dChNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxl Q29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1T dXBwbGVtZW50YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyc2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGNhc3RUZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNhc3RUZXJtQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdE11bHRkaXZtb2RUZXJtTXVsIiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE11bHRkaXZtb2RUZXJtTXVsKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cw0KPiBNdWx0ZGl2bW9kVGVybU1vZHVsb0NvbnRleHQoTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50 YXJ5Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4 UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNv cHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVybU1v ZHVsbyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0 ZGl2bW9kVGVybU1vZHVsbyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIG11bHRkaXZtb2RUZXJtU3VwcGxl bWVudGFyeShzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoc2Vs ZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDMxOCwgc2VsZi5SVUxFX211bHRkaXZtb2RUZXJtU3VwcGxl bWVudGFyeSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYxMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzEyXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1N dWxDb250ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjA1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzEyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwNg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuU2xhc2hdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybURpdkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2xhc2gpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjA4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuY2Fz dFRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18xM106DQo+IA0KPiArICAg ICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtTW9k dWxvQ29udGV4dChzZWxmLA0KPiBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjYwOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX18xMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MTAN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5jYXN0VGVybShFeHBJbmZvKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxs eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBDYXN0VGVy bUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhdG9tVGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BdG9tVGVybUNvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjYXN0VGVybVN1YihzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5D YXN0VGVybVN1YkNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuQ2FzdFRlcm1TdWJDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9jYXN0VGVybQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENhc3RUZXJtIiApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENhc3RUZXJtKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgY2FzdFRlcm0oc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDMyMCwgc2VsZi5SVUxFX2Nhc3RUZXJtKQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxNg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9hbHQgPSBz ZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIxOCxzZWxmLl9jdHgpDQo+ IA0KPiArICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQgX2FsdCE9QVROLklOVkFMSURfQUxU X05VTUJFUjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgX2FsdD09MToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjEzDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLmNhc3RUZXJtU3ViKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2MTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQ cmVkaWN0KHNlbGYuX2lucHV0LDIxOCxzZWxmLl9jdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2MTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmF0b21UZXJt KEV4cEluZm8pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgQ2FzdFRlcm1TdWJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNhc3RU eXBlID0gMHhGRg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQm9vbGVhbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQm9vbGVhbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50NjQoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlVpbnQ2NCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50MzIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlVpbnQzMiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVp bnQxNiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50OChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jYXN0VGVybVN1Yg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dENhc3RUZXJtU3ViIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENhc3RUZXJtU3ViKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgY2FzdFRlcm1TdWIo c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5DYXN0VGVybVN1YkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMiwgc2VsZi5SVUxFX2Nhc3RUZXJt U3ViKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyMQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjYyMg0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSA4MCkpICYg fjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gODApKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4 UGFyc2VyLkJvb2xlYW4gLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50NjQgLSA4 MCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5VaW50MzIgLSA4MCkpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5VaW50MTYgLSA4MCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5V aW50OCAtIDgwKSkpKSAhPSAwKSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjYyMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgQXRvbVRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2goc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyRXhwcmVzc2lvbk1hdGNoQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25NYXRjaDIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyRXhwcmVzc2lvbk1hdGNoMkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhw cmVzc2lvblBhcmVuQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIHZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy RXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbkNvbnRlDQo+IHh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbkNvbnN0YW50KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uVW5hcnlPcChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJFeHByZXNzaW9uVW5hcnlPcENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uVGVybmFyeU9wKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25UZXJuYXJ5T3BDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbk1hcChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJFeHByZXNzaW9uTWFwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE5PVChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTk9ULCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGF0 b21UZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkF0b21UZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYXRvbVRlcm0NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBdG9tVGVybSIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBdG9tVGVybShz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGF0b21UZXJtKHNlbGYsIEV4cEluZm8pOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1D b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMjQsIHNlbGYuUlVMRV9hdG9tVGVybSkN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYz Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAg ICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNhdGVuYXRlXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjYyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm ckV4cHJlc3Npb25DYXRlbmF0ZShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1hdGNo XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyNg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25NYXRjaChFeHBJbmZvKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLk1hdGNoMl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 MjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9uTWF0Y2gyKEV4cElu Zm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjYyOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4 cHJlc3Npb25QYXJlbihFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkR1cCwgVmZyU3lu dGF4UGFyc2VyLlZhckVxVmFsLA0KPiBWZnJTeW50YXhQYXJzZXIuSWRFcVZhbCwgVmZyU3ludGF4 UGFyc2VyLklkRXFJZCwgVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0LA0KPiBWZnJTeW50YXhQ YXJzZXIuUXVlc3Rpb25SZWYsIFZmclN5bnRheFBhcnNlci5SdWxlUmVmLA0KPiBWZnJTeW50YXhQ YXJzZXIuU3RyaW5nUmVmLCBWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXMsIFZmclN5bnRheFBhcnNl ci5TZWN1cml0eSwNCj4gVmZyU3ludGF4UGFyc2VyLkdldF06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHBy ZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVHJ1 ZVN5bWJvbCwNCj4gVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sLCBWZnJTeW50YXhQYXJzZXIu T25lLCBWZnJTeW50YXhQYXJzZXIuT25lcywNCj4gVmZyU3ludGF4UGFyc2VyLlplcm8sIFZmclN5 bnRheFBhcnNlci5VbmRlZmluZWQsIFZmclN5bnRheFBhcnNlci5WZXJzaW9uLA0KPiBWZnJTeW50 YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCA2KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYz MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25Db25zdGFudChFeHBJ bmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlbmd0aCwgVmZyU3ludGF4UGFyc2VyLlNldCwN Cj4gVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VOb3QsIFZmclN5bnRheFBhcnNlci5Cb29sVmFsLA0K PiBWZnJTeW50YXhQYXJzZXIuU3RyaW5nVmFsLCBWZnJTeW50YXhQYXJzZXIuVW5JbnRWYWwsIFZm clN5bnRheFBhcnNlci5Ub1VwcGVyLA0KPiBWZnJTeW50YXhQYXJzZXIuVG9Mb3dlciwgVmZyU3lu dGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsLA0KPiBWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmVmFs XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzMQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25VbmFyeU9wKEV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuQ29uZCwgVmZyU3ludGF4UGFyc2VyLkZpbmQsDQo+IFZmclN5bnRheFBhcnNl ci5NaWQsIFZmclN5bnRheFBhcnNlci5Ub2ssIFZmclN5bnRheFBhcnNlci5TcGFuXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzMg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmckV4cHJlc3Npb25UZXJuYXJ5T3AoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5NYXBdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjMzDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbk1hcChFeHBJbmZvKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLk5PVF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMTApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjM0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk5PVCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzUNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5hdG9tVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJFeHByZXNzaW9uQ2F0 ZW5hdGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgQ2F0ZW5hdGUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNhdGVuYXRlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiB0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiBp KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRXhw cmVzc2lvbkNhdGVuYXRlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkNhdGVuYXRlIiApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25DYXRlbmF0ZShzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJlc3Npb25DYXRlbmF0ZShzZWxmLCBFeHBJ bmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMy Niwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZSkNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DYXRlbmF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjYzOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0MA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5O b2RlcykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0MQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNjQyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjQzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBjbGFzcyBWZnJFeHByZXNzaW9uTWF0Y2hDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk5vZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZv DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWF0Y2goc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1hdGNoLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiB0KQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJDb250ZXh0LA0KPiBpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9z ZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoIiApOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25N YXRjaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJlc3Npb25NYXRjaChzZWxm LCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxm LnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDMyOCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaCkNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXRjaCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY0Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0Nw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2Rl cykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0OA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjQ5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjUwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJFeHByZXNzaW9uTWF0Y2gyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1hdGNoMihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF0Y2gyLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiB0KQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJDb250ZXh0LA0KPiBpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaDINCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHBy ZXNzaW9uTWF0Y2gyIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckV4cHJlc3Npb25NYXRjaDIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJF eHByZXNzaW9uTWF0Y2gyKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbk1hdGNoMkNvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzMCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaDIp DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF0Y2gyKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUzDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNjU0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjU1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTYNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY1OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjU5DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJFeHByZXNzaW9uUGFyZW5Db250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViQ29udGV4dCwNCj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvblBhcmVuDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lv blBhcmVuIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckV4cHJlc3Npb25QYXJlbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJlc3Np b25QYXJlbihzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25QYXJlbkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDMzMiwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25QYXJlbikNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjENCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2NjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb25Db250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGR1cEV4cChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmFyZXF2YWxFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmFyZXF2YWxFeHBD b250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgaWRlcXZhbEV4 cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5JZGVxdmFsRXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGlkZXFpZEV4cChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5JZGVx aWRFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgaWRl cXZhbGxpc3RFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuSWRlcXZhbGxpc3RFeHBDb250ZXh0LDAp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcXVlc3Rpb25yZWYxRXhwKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9ucmVmMUV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBydWxlcmVmRXhwKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlJ1 bGVyZWZFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg c3RyaW5ncmVmMUV4cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYxRXhwQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHB1c2h0aGlzRXhwKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlB1c2h0aGlzRXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIHNlY3VyaXR5RXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNlY3Vy aXR5RXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdl dEV4cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0 aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbihz ZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb25Db250ZXh0KHNlbGYsDQo+IHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAzMzQsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9u KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Njc2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRHVwXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjY2NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmR1cEV4 cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhckVxVmFsXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnZhcmVxdmFsRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSWRFcVZhbF06DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5pZGVxdmFsRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSWRF cUlkXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2OA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmlkZXFpZEV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLklkRXFWYWxMaXN0XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2 OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmlkZXF2YWxsaXN0RXhwKEV4cEluZm8pDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25SZWZdOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjcwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYucXVlc3Rpb25y ZWYxRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUnVsZVJlZl06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzENCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5ydWxlcmVmRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVm XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3Mg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0cmluZ3JlZjFFeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5QdXNoVGhpc106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgOSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5wdXNodGhpc0V4cChFeHBJbmZvKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2NzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zZWN1cml0eUV4cChFeHBJ bmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdldF06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjc1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZ2V0RXhwKEV4 cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGNsYXNzIER1cEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElm clRyZWVOb2RlKEVGSV9JRlJfRFVQX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEdXAoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkR1cCwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2R1cEV4cA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdER1cEV4 cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREdXBFeHAo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBkdXBFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EdXBFeHBDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzYsIHNlbGYuUlVMRV9kdXBFeHApDQo+IA0K PiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjc4DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRHVwKQ0KPiANCj4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZhcmVxdmFsRXhwQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuVk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVmFyRXFWYWwoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZh ckVxVmFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhcihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFyLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBFcXVhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRXF1YWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTGVzcyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTGVzcywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBHcmVhdGVyRXF1YWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBHcmVhdGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmFyZXF2YWxFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWYXJlcXZhbEV4cCIgKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWYXJlcXZhbEV4cChzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHZhcmVxdmFsRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmFyZXF2YWxFeHBD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzgsIHNlbGYuUlVMRV92YXJlcXZhbEV4 cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODAN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJFcVZhbCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4MQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjY4Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4Mw0KPiAN Cj4gKyAgICAgICAgICAgIGxvY2FsY3R4LlZOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg0DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRXF1YWwpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg2DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5MZXNzRXF1YWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4 Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNz RXF1YWwpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg4DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5MZXNzXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2ODkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTGVzcykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTANCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbF06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjkxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2OTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJdOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjY5NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIElkZXF2YWxFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwg RXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAj IFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZShzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250ZXh0LA0KPiAwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIElkRXFWYWwoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLklkRXFWYWwsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRXF1YWwoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIExlc3NFcXVhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlc3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgR3JlYXRlckVxdWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRlcihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlciwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2lkZXF2YWxFeHANCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRJZGVxdmFs RXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXF2 YWxFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBpZGVxdmFsRXhwKHNlbGYsIEV4cElu Zm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu SWRlcXZhbEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZv KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM0MCwgc2VsZi5SVUxF X2lkZXF2YWxFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjk3DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLklkRXFWYWwpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 OTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5FcXVhbF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk5 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVxdWFs KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3MDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTGVzc0VxdWFsKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzAzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkxlc3MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA0 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWxdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjcwNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzA2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmVhdGVyXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2Ug Tm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBJZGVxaWRFeHBDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmlu dD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JID0g Tm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FID0gTm9uZSAjIFRva2VuDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5MRSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQkUgPSBO b25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkIgPSBOb25lICMgVG9rZW4NCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleA0KPiB0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQsDQo+IGkp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSWRFcUlkKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JZEVx SWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRXF1YWwoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlc3NFcXVhbChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFs LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlc3Moc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRlckVxdWFsKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1 YWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRl ciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2lkZXFpZEV4cA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dElkZXFpZEV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRJZGVxaWRFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBpZGVxaWRFeHAoc2VsZiwg RXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5JZGVxaWRFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhw SW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNDIsIHNlbGYu UlVMRV9pZGVxaWRFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzExDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLklkRXFJZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjcxMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcyMw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 MTMNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRSA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVxdWFsKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcx NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3MTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTEUg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNzE2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZy UXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZXNzXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3MpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE4DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5HcmVhdGVyRXF1YWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcx OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5CRSA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3MjANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVs ZE5hbWUoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjcyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0 eC5CID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBJZGVxdmFsbGlzdEV4cENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSWRFcVZhbExpc3Qo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLklkRXFWYWxMaXN0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFG aWVsZE5hbWVDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEVxdWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBO dW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfaWRlcXZhbGxpc3RFeHANCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRJ ZGVxdmFsbGlzdEV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRJZGVxdmFsbGlzdEV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGlkZXF2YWxs aXN0RXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuSWRlcXZhbGxpc3RFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAzNDQsIHNlbGYuUlVMRV9pZGVxdmFsbGlzdEV4cCkNCj4gDQo+ICsgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3MjUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5JZEVxVmFsTGlzdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjcyNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcyNw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVxdWFsKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzI5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICB3aGlsZSBUcnVlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjcyOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzMxDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiBub3QgKF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcik6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBicmVhaw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUUlkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFM SUQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1hc2sgPSAwDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5WYXJJZFN0ciA9ICcnDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MaW5lID0gTm9uZQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUXVlc3Rp b25EYXRhRmllbGROYW1lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgY29w eUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFJZCA9IGN0eC5R SWQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1hc2sgPSBjdHguTWFzaw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuVmFySWRTdHIgPSBjdHguVmFySWRTdHINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkxpbmUgPSBjdHguTGluZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcw0KPiBWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoVmZyUXVlc3Rp b25EYXRhRmllbGROYW1lQ29udGV4dCkNCj4gOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxs eSBhDQo+IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250ZXh0DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5TTjIgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNv cHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKyAgICAgICAgZGVmIERvdChzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90 KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQo+IA0KPiArICAgICAgICBk ZWYgYXJyYXlOYW1lKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyIiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUy KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBjbGFzcw0KPiBWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMUNvbnRleHQoVmZy UXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4dCkNCj4gOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBh Y3R1YWxseSBhDQo+IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250 ZXh0DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5TTjEgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJy YWNrZXQsIDApDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNrZXQsIDApDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMSIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxl MShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZShzZWxmKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM0Niwgc2VsZi5SVUxFX3Zm clF1ZXN0aW9uRGF0YUZpZWxkTmFtZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjc0NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qo c2VsZi5faW5wdXQsMjI2LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0g MToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIu VmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTFDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzMzDQo+IA0KPiArICAgICAgICAgICAg ICAgIGxvY2FsY3R4LlNOMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50 aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzM0DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczNQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5JID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczNg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxh XyA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9DQo+IFZmclN5bnRheFBh cnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoc2VsZiwgbG9jYWxjdHgp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MzcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgbG9jYWxjdHguU04yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDINCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzM4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjczOQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcnJh eU5hbWUoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDQNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIEFycmF5TmFtZUNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU3ViU3RyID0gJycNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLlN1YlN0clogPSAnJw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUg IyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3Bl bkJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfYXJyYXlOYW1lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QXJyYXlOYW1lIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFycmF5TmFtZShzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIGFycmF5TmFtZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM0OCwgc2VsZi5SVUxFX2FycmF5TmFtZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3NDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzUxDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBf bGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3NDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzQ5DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzUwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBRdWVzdGlvbnJlZjFFeHBDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1FVRVNUSU9O X1JFRjFfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFF1ZXN0aW9uUmVmKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9xdWVzdGlvbnJlZjFFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRRdWVzdGlvbnJlZjFFeHAiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb25yZWYxRXhwKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgcXVlc3Rpb25yZWYxRXhwKHNlbGYsIEV4cEluZm8pOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25y ZWYxRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzUwLCBzZWxmLlJVTEVfcXVl c3Rpb25yZWYxRXhwKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1Mw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU0DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzU1DQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3QoX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVt YmVyIG9yDQo+IF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuY29u c3VtZSgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTYNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFJ1bGVyZWZFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5v bmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1JV TEVfUkVGX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSdWxlUmVmKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SdWxlUmVmLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3J1bGVyZWZFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRSdWxlcmVmRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFJ1bGVyZWZFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBydWxlcmVmRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDM1Miwgc2VsZi5SVUxFX3J1bGVyZWZFeHApDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU4DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUnVsZVJlZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjc1OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2MA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjENCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFN0cmluZ3JlZjFFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5v bmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NU UklOR19SRUYxX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdSZWYoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3Ry aW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfc3RyaW5ncmVmMUV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmluZ3JlZjFFeHAiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RyaW5ncmVmMUV4cChzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIHN0cmluZ3JlZjFFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYxRXhw Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzU0LCBzZWxmLlJVTEVfc3RyaW5ncmVm MUV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdS ZWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjQNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3NzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY1DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2Ng0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY3DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3NjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJd Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2OQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzcyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBQdXNodGhpc0V4cENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVEhJU19PUCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgUHVzaFRoaXMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcHVzaHRoaXNFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRQdXNodGhpc0V4cCIgKToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQdXNodGhpc0V4cChzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHB1c2h0aGlzRXhwKHNlbGYsIEV4cEluZm8pOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuUHVzaHRoaXNF eHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNTYsIHNlbGYuUlVMRV9wdXNodGhp c0V4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5QdXNoVGhp cykNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4g DQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBT ZWN1cml0eUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVO b2RlKEVGSV9JRlJfU0VDVVJJVFlfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlY3VyaXR5KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZWN1cml0eSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlv bihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2VjdXJpdHlFeHAN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRTZWN1cml0eUV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRTZWN1cml0eUV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHNlY3VyaXR5RXhw KHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NTgsIHNlbGYuUlVMRV9zZWN1cml0eUV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3NzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TZWN1cml0eSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjc3Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3OA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzc5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBOdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5WYXJUeXBlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWVyaWNT aXplT25lKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1lcmljU2l6ZU9uZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBOdW1lcmljU2l6ZVR3byhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVUd28sIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVGb3VyKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXIs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVFaWdodChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtZXJpY1NpemVFaWdodCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX251bWVyaWNWYXJTdG9yZVR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXROdW1lcmljVmFyU3RvcmVUeXBlIiApOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE51bWVyaWNWYXJTdG9yZVR5cGUo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBudW1lcmljVmFyU3RvcmVUeXBlKHNlbGYpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTnVtZXJp Y1ZhclN0b3JlVHlwZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2MCwgc2VsZi5SVUxFX251bWVy aWNWYXJTdG9yZVR5cGUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgxDQo+ IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICBpZiBub3QoKCgoKF9sYSAtIDIzNykpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xh IC0gMjM3KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZU9uZSAtIDIz NykpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3byAtIDIzNykpIHwg KDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXIgLSAyMzcpKSB8ICgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVFaWdodCAtIDIzNykpKSkgIT0gMCkpOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgR2V0RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9 IEVGSV9WQVJTVE9SRV9JTkZPKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJU cmVlTm9kZShFRklfSUZSX0dFVF9PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR2V0KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HZXQsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RvcmFnZVZhcklkKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBudW1lcmljVmFyU3RvcmVUeXBlKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLk51bWVyaWNWYXJTdG9yZVR5cGVDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9nZXRFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRHZXRFeHAiICk6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0R2V0RXhwKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgZ2V0RXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuR2V0RXhwQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzYyLCBzZWxmLlJVTEVfZ2V0RXhwKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjc4Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkdldCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc4NA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc4NQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYudmZyU3RvcmFnZVZhcklkKGxvY2FsY3R4LkJhc2VJbmZvLCBGYWxzZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjc5MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc4Ng0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzg3DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjc4OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjc4OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNWYXJTdG9yZVR5cGUoKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzkyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmlu YWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJF eHByZXNzaW9uQ29uc3RhbnRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBO b25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFRydWVTeW1ib2woc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRmFsc2VTeW1ib2woc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9uZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIE9uZXMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgWmVybyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWmVybywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBVbmRlZmluZWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuZGVmaW5lZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBWZXJzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WZXJzaW9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkNv bnN0YW50IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckV4cHJlc3Npb25Db25zdGFudChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJl c3Npb25Db25zdGFudChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2NCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25Db25zdGFu dCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTQNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIG5vdCgo KCgoX2xhIC0gMjA5KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAyMDkpKSAmICgo MSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wgLSAyMDkpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuRmFsc2VTeW1ib2wgLQ0KPiAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuT25lIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMgLSAyMDkpKQ0KPiB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuWmVybyAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5VbmRlZmluZWQgLSAyMDkpKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmVyc2lv biAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLQ0KPiAyMDkpKSkpICE9 IDApKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5s aW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5Ob2RlcyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgbGVuZ3RoRXhwKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkxlbmd0aEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBiaXR3aXNlbm90RXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkJpdHdpc2Vub3RF eHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcXVlc3Rp b24yM3JlZkV4cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHN0cmluZ3JlZjJFeHAoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMkV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB0b2Jvb2xFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG9ib29s RXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHRvc3Ry aW5nRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHVuaW50RXhwKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlVuaW50RXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHRvdXBwZXJFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG91cHBlckV4cENvbnRleHQsMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB0b2x3ZXJFeHAoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVG9sd2VyRXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHNldEV4cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TZXRFeHBDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uVW5h cnlPcA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmckV4cHJlc3Npb25VbmFyeU9wIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgdmZyRXhwcmVzc2lvblVuYXJ5T3Aoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9u VW5hcnlPcENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2Niwgc2VsZi5SVUxFX3Zm ckV4cHJlc3Npb25VbmFyeU9wKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODA2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVuZ3Ro XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5Ng0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLmxlbmd0aEV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VOb3RdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk3DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuYml0d2lzZW5vdEV4cChFeHBJbmZvKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjc5OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uMjNy ZWZFeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZWYWxdOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk5DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RyaW5ncmVmMkV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJv b2xWYWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODAwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYudG9ib29sRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuU3RyaW5nVmFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCA2KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgw MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnRvc3RyaW5nRXhwKEV4cEluZm8pDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuVW5JbnRWYWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODAyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudW5pbnRFeHAoRXhwSW5m bykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ub1VwcGVyXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgwMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnRvdXBwZXJF eHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ub0xvd2VyXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnRvbHdlckV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlNldF06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODA1DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc2V0RXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIExlbmd0aEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBF eHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMZW5ndGgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlbmd0aCwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0 LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV9sZW5ndGhFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRMZW5ndGhFeHAiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0TGVuZ3RoRXhwKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg bGVuZ3RoRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMzY4LCBzZWxmLlJVTEVfbGVuZ3RoRXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkxlbmd0aCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgwOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxMA0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxMQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQml0d2lzZW5vdEV4cENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNl Tm90KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlTm90LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YkNvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2JpdHdpc2Vub3RFeHANCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlbm90RXhw IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpdHdpc2Vu b3RFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBiaXR3aXNlbm90RXhwKHNlbGYsIEV4 cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuQml0d2lzZW5vdEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBF eHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3MCwgc2Vs Zi5SVUxFX2JpdHdpc2Vub3RFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODEzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU5vdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgx NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxNQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgUXVlc3Rpb24yM3JlZkV4cENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBRdWVzdGlvblJl ZlZhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuUXVlc3Rpb25SZWZWYWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJD b250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGV2aWNlUGF0aChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGV2 aWNlUGF0aCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9u Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfcXVlc3Rpb24yM3JlZkV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFF1ZXN0aW9uMjNyZWZFeHAiICk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb24yM3JlZkV4cChzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIHF1ZXN0aW9uMjNyZWZFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbjIz cmVmRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzcyLCBzZWxmLlJVTEVfcXVl c3Rpb24yM3JlZkV4cCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTgNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZh bCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxOQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjgyNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aDoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjANCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjENCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4MjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODIzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjQN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgyNQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgyNg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgzNA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu VXVpZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVXVpZCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzANCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4MzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5p dGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODMyDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM2DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVz KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBTdHJpbmdyZWYyRXhwQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmlu Z1JlZlZhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmVmFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3N0cmluZ3JlZjJFeHANCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTdHJpbmdy ZWYyRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFN0 cmluZ3JlZjJFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzdHJpbmdyZWYyRXhwKHNl bGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuU3RyaW5ncmVmMkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl LA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3 NCwgc2VsZi5SVUxFX3N0cmluZ3JlZjJFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyODM5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmVmFsKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODQwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQxDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVz KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBUb2Jvb2xFeHBDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQm9vbFZhbChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQm9vbFZhbCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25TdWJDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV90b2Jvb2xFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRUb2Jvb2xFeHAiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9ib29sRXhwKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgdG9ib29sRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG9ib29sRXhwQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzc2LCBzZWxmLlJVTEVfdG9ib29sRXhwKQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0NA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJvb2xWYWwpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4NDUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI4NDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIo bG9jYWxjdHguTm9kZXMpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDcNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0K PiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5h bGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFRvc3Ry aW5nRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFN0cmluZ1ZhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVmFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b3N0cmluZ0V4cA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvc3RyaW5nRXhw IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRvc3RyaW5n RXhwKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdG9zdHJpbmdFeHAoc2VsZiwgRXhwSW5m byk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5U b3N0cmluZ0V4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZv KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3OCwgc2VsZi5SVUxF X3Rvc3RyaW5nRXhwKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0OQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1NA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu VF9fMTQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODUwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzE0KQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1MQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjg1Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODUzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODU3DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODU4DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBVbmludEV4cENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVbkludFZhbChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuVW5JbnRWYWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViQ29udGV4dCwNCj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdW5pbnRFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRVbmludEV4cCIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRVbmludEV4cChzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIHVuaW50RXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVW5pbnRFeHBDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAzODAsIHNlbGYuUlVMRV91bmludEV4cCkNCj4gDQo+ICsgICAgICAgIHRy eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjANCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VbkludFZhbCkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg2MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2Mg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0 eC5Ob2RlcykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2Mw0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVG91cHBlckV4cENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBU b1VwcGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Ub1VwcGVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YkNvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3RvdXBwZXJFeHANCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRUb3VwcGVyRXhwIiApOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRvdXBwZXJFeHAoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB0b3VwcGVyRXhwKHNlbGYsIEV4cEluZm8pOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG91cHBlckV4 cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4Miwgc2VsZi5SVUxFX3RvdXBwZXJF eHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY1 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVG9VcHBlcikN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2Ng0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjg2Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjg2OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgVG9sd2VyRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9 IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFRvTG93ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRvTG93ZXIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG9sd2VyRXhw DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VG9sd2VyRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFRvbHdlckV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHRvbHdlckV4cChzZWxm LCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlRvbHdlckV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBF eHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4NCwgc2Vs Zi5SVUxFX3RvbHdlckV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI4NzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Ub0xvd2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODcxDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODcyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyODczDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBTZXRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkJhc2VJbmZvID0gRUZJX1ZBUlNUT1JFX0lORk8oKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNldCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdG9yYWdlVmFySWQoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIG51bWVyaWNWYXJTdG9yZVR5cGUoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuTnVtZXJpY1ZhclN0b3JlVHlwZUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NldEV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFNldEV4cCIgKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTZXRFeHAoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBzZXRFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TZXRFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAzODYsIHNlbGYuUlVMRV9zZXRFeHApDQo+IA0KPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODc1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2V0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc2DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52 ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFzZUluZm8sIEZhbHNlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODgyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc4DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODgwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODgx DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY1ZhclN0b3JlVHlwZSgpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjg4Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgY2xhc3MgVmZyRXhwcmVzc2lvblRlcm5hcnlPcENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTm9kZXMgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNvbmRpdGlvbmFsRXhw KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkNvbmRpdGlvbmFsRXhwQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZpbmRFeHAoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmlu ZEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBtaWRF eHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIHRva2VuRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRva2VuRXhwQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHNwYW5FeHAoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuU3BhbkV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25UZXJuYXJ5T3ANCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHBy ZXNzaW9uVGVybmFyeU9wIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiB2ZnJFeHByZXNzaW9uVGVybmFyeU9wKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblRlcm5hcnlP cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4OCwgc2VsZi5SVUxFX3ZmckV4cHJl c3Npb25UZXJuYXJ5T3ApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4OTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Db25kXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4OA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmNvbmRpdGlvbmFsRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu RmluZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5maW5kRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuTWlkXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg5MA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1pZEV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlRva106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTENCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi50b2tlbkV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlNwYW5dOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODkyDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3BhbkV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBDb25kaXRpb25h bEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBDb25kKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Db25kLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YkNvbnRleA0KPiB0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiBpKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY29uZGl0aW9uYWxFeHAN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRDb25kaXRpb25hbEV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDb25kaXRpb25hbEV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGNvbmRp dGlvbmFsRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAzOTAsIHNlbGYuUlVMRV9jb25kaXRpb25hbEV4cCkNCj4gDQo+ICsgICAgICAg IHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db25kKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODk2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk3DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4 Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk4DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4OTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI5MDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwMQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2Rl cykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwMg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRmluZEV4cENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGaW5kKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5GaW5kLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZpbmRGb3JtYXQoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNv bnRleA0KPiB0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiBpKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX2ZpbmRFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZpbmRFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBmaW5kRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRmluZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM5Miwgc2VsZi5SVUxFX2ZpbmRFeHApDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTA0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRmluZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwNQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZmlu ZEZvcm1hdChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTExDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGls ZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTA3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5MDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5maW5kRm9ybWF0KEV4cEluZm8p DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTEzDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTE0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MTUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHgu Tm9kZXMpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MTYNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjkxNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjkxOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE5DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVz KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBGaW5kRm9ybWF0Q29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdT dGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5Gb3JtYXQgPSAwDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbnNpdGl2 ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2Vuc2l0aXZlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEluc2Vu c2l0aXZlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5JbnNlbnNpdGl2ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX2ZpbmRGb3JtYXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRm9ybWF0IiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZpbmRGb3JtYXQoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBmaW5kRm9ybWF0KHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDM5NCwgc2VsZi5SVUxFX2ZpbmRGb3JtYXQpDQo+IA0KPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIyDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3QoX2xhPT1WZnJTeW50YXhQ YXJzZXIuSW5zZW5zaXRpdmUgb3INCj4gX2xhPT1WZnJTeW50YXhQYXJzZXIuU2Vuc2l0aXZlKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGNsYXNzIE1pZEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBb XQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBNaWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXgNCj4gdCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4g aSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9taWRFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaWRFeHAiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWlkRXhwKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgbWlkRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzk2LCBzZWxmLlJVTEVfbWlkRXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk1pZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyNg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyNw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyOTI4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyOTI5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzANCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzENCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFRva2VuRXhwQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFRvayhzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVG9rLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiB0KQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWJDb250ZXh0LA0KPiBpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Rva2VuRXhw DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VG9rZW5FeHAiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VG9rZW5FeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB0b2tlbkV4cChzZWxmLCBF eHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlRva2VuRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cElu Zm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzk4LCBzZWxmLlJV TEVfdG9rZW5FeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTMzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VG9rKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM0DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyOTM1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyOTM2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzcNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9k ZXMpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzgNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjkzOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjk0MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgU3BhbkV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBb XQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTcGFuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TcGFuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBzcGFuRmxhZ3Moc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3BhbkZsYWdzQ29udGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0LGkp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEV4cHJlc3Npb25TdWJDb250ZXgNCj4gdCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gaSkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zcGFuRXhwDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3BhbkV4cCIgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTcGFuRXhwKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgc3BhbkV4cChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDAsIHNlbGYuUlVMRV9zcGFuRXhwKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNwYW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5NDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDQNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjk0NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 NDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnNwYW5GbGFncygpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5NTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0OA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnNwYW5GbGFncygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUz DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTU0DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5NTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIobG9jYWxjdHguTm9kZXMpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 NTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk1Nw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk1OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyOTU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi KGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTYwDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmlu YWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBTcGFu RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTGFzdE5vbk1hdGNoKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MYXN0Tm9uTWF0Y2gsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRmlyc3ROb25NYXRjaChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRmlyc3ROb25N YXRjaCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NwYW5GbGFn cw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFNwYW5GbGFncyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRTcGFuRmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzcGFuRmxhZ3Moc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5T cGFuRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDIsIHNlbGYuUlVMRV9zcGFuRmxhZ3MpDQo+ IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTYyDQo+IA0KPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9s YSAtIDI0NikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMjQ2KSkgJiAoKDEgPDwN Cj4gKFZmclN5bnRheFBhcnNlci5MYXN0Tm9uTWF0Y2ggLSAyNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuRmlyc3ROb25NYXRjaA0KPiAtIDI0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5OdW1iZXIgLSAyNDYpKSkpICE9IDApKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25NYXBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5v bmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZSgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1hcChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFw LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRl eHQsDQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29sb24oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4 dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRFeHByZXNzaW9uQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25NYXANCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNzaW9uTWFw IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJl c3Npb25NYXAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJFeHByZXNzaW9uTWFwKHNl bGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyRXhwcmVzc2lvbk1hcENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxm LnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDQwNCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25NYXApDQo+IA0KPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyOTY0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTWFwKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY1DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyOTY3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29sb24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NzUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdo aWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiBvciAoKCgoX2xhIC0gMTkyKSkgJiB+ MHgzZikgPT0gMA0KPiBhbmQgKCgxIDw8IChfbGEgLSAxOTIpKSAmICgoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLkNvbmQgLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuRmluZCAtIDE5 MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NaWQgLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJT eW50YXhQYXJzZXIuVG9rIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNwYW4gLSAx OTIpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuRHVwIC0gMTkyKSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlZhckVxVmFsIC0gMTkyKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2Vy LklkRXFWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSWRFcUlkIC0gMTkyKSkg fCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0IC0gMTkyKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmIC0NCj4gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLlJ1bGVSZWYgLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuU3RyaW5n UmVmIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzIC0gMTkyKSkgfCAo MQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkdldCAtIDE5MikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5UcnVlU3lt Ym9sIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sIC0NCj4gMTky KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZSAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5PbmVzIC0gMTkyKSkNCj4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlplcm8gLSAx OTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVW5kZWZpbmVkIC0gMTkyKSkNCj4gfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlZlcnNpb24gLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuTGVuZ3RoIC0gMTkyKSkNCj4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk5PVCAtIDE5Mikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TZXQgLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU5vdCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Cb29s VmFsIC0gMTkyKSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbCAtIDE5Mikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VbkludFZhbCAtDQo+IDE5MikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5Ub1VwcGVyIC0gMTkyKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2Vy LlRvTG93ZXIgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTWF0Y2ggLSAxOTIpKSB8 ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuTWF0Y2gyIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkNhdGVuYXRlIC0gMTkyKSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLlF1 ZXN0aW9uUmVmVmFsIC0gMTkyKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Jl ZlZhbCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NYXAgLSAxOTIpKSB8ICgxDQo+ IDw8IChWZnJTeW50YXhQYXJzZXIuTnVtYmVyIC0gMTkyKSkpKSAhPSAwKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyOTY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjk3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb24obG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI5NzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk3Nw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk3OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+IGRp ZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhW aXNpdG9yLnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3lu dGF4VmlzaXRvci5weQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw Li42MjJlNjMzNDdjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4VmlzaXRvci5weQ0KPiBAQCAtMCwwICsxLDU1MDQg QEANCj4gKyMjIEBmaWxlDQo+IA0KPiArIyBUaGUgZmlsZSBpcyBkZWZpbmVkIHRvIHBhcnNlIFZm ciBzeW50YXgNCj4gDQo+ICsjDQo+IA0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMjItLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKyMjDQo+IA0KPiArDQo+ IA0KPiArZnJvbSBhbnRscjQgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmckN0 eXBlcyBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyRm9ybVBrZyBpbXBvcnQg Kg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVXRpbGl0eSBpbXBvcnQgKg0KPiANCj4gK2Zy b20gVmZyQ29tcGlsZXIuSWZyVHJlZSBpbXBvcnQgKg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIu SWZyRXJyb3IgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLklmclByZVByb2Nlc3Mg aW1wb3J0ICoNCj4gDQo+ICsNCj4gDQo+ICtpZiBfX25hbWVfXyBpcyBub3QgTm9uZSBhbmQgIi4i IGluIF9fbmFtZV9fOg0KPiANCj4gKyAgICBmcm9tIC5WZnJTeW50YXhQYXJzZXIgaW1wb3J0IFZm clN5bnRheFBhcnNlcg0KPiANCj4gK2Vsc2U6DQo+IA0KPiArICAgIGZyb20gVmZyU3ludGF4UGFy c2VyIGltcG9ydCBWZnJTeW50YXhQYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsjIFRo aXMgY2xhc3MgZGVmaW5lcyBhIGNvbXBsZXRlIGdlbmVyaWMgdmlzaXRvciBmb3IgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlci4NCj4gDQo+ICtjbGFzcyBWZnJTeW50 YXhWaXNpdG9yKFBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICBkZWYgX19pbml0X18oDQo+ IA0KPiArICAgICAgICBzZWxmLA0KPiANCj4gKyAgICAgICAgUHJlUHJvY2Vzc0RCOiBQcmVQcm9j ZXNzREIgPSBOb25lLA0KPiANCj4gKyAgICAgICAgUm9vdD1Ob25lLA0KPiANCj4gKyAgICAgICAg T3ZlcnJpZGVDbGFzc0d1aWQ9Tm9uZSwNCj4gDQo+ICsgICAgICAgIFF1ZXN0aW9uREI6IFZmclF1 ZXN0aW9uREIgPSBOb25lLA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAgICAgc2VsZi5Sb290 ID0gUm9vdCBpZiBSb290ICE9IE5vbmUgZWxzZSBJZnJUcmVlTm9kZSgpDQo+IA0KPiArICAgICAg ICBzZWxmLlByZVByb2Nlc3NEQiA9IFByZVByb2Nlc3NEQg0KPiANCj4gKyAgICAgICAgc2VsZi5P dmVycmlkZUNsYXNzR3VpZCA9IE92ZXJyaWRlQ2xhc3NHdWlkDQo+IA0KPiArICAgICAgICBzZWxm LlZmclF1ZXN0aW9uREIgPSBRdWVzdGlvbkRCIGlmIFF1ZXN0aW9uREIgIT0gTm9uZSBlbHNlDQo+ IFZmclF1ZXN0aW9uREIoKQ0KPiANCj4gKyAgICAgICAgc2VsZi5QYXJzZXJTdGF0dXMgPSAwDQo+ IA0KPiArICAgICAgICBzZWxmLlZhbHVlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5MYXN0 Rm9ybU5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLklmck9wSGRySW5kZXggPSAwDQo+ IA0KPiArICAgICAgICBzZWxmLkNvbnN0YW50T25seUluRXhwcmVzc2lvbiA9IEZhbHNlDQo+IA0K PiArICAgICAgICBzZWxmLklmck9wSGRyID0gW05vbmVdDQo+IA0KPiArICAgICAgICBzZWxmLklm ck9wSGRyTGluZU5vID0gWzBdDQo+IA0KPiArICAgICAgICBzZWxmLlVzZWREZWZhdWx0QXJyYXkg PSBbXQ0KPiANCj4gKyAgICAgICAgc2VsZi5WZnJSdWxlc0RCID0gVmZyUnVsZXNEQigpDQo+IA0K PiArICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mbyA9IEVGSV9WQVJTVE9SRV9JTkZPKCkNCj4g DQo+ICsgICAgICAgIHNlbGYuQ3VycmVudFF1ZXN0aW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAg c2VsZi5DdXJyZW50TWluTWF4RGF0YSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuSXNTdHJp bmdPcCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxmLklzT3JkZXJlZExpc3QgPSBGYWxzZQ0K PiANCj4gKyAgICAgICAgc2VsZi5Jc0NoZWNrQm94T3AgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAg c2VsZi5OZWVkQWRqdXN0T3Bjb2RlID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclByb2dyYW0uDQo+ IA0KPiArICAgIGRlZiB2aXNpdFZmclByb2dyYW0oc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIu VmZyUHJvZ3JhbUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwcmFnbWFQYWNrU2hvd0RlZi4NCj4gDQo+ICsgICAgZGVm IHZpc2l0UHJhZ21hUGFja1Nob3dEZWYoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuUHJh Z21hUGFja1Nob3dEZWZDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KPiANCj4gKyAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuUGFjayhMaW5lLCBWRlJfUEFD S19TSE9XKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNwcmFnbWFQYWNrU3RhY2tEZWYuDQo+IA0KPiArICAgIGRlZiB2aXNpdFByYWdt YVBhY2tTdGFja0RlZihzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU3Rh Y2tEZWZDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIElkZW50aWZpZXIgPSBzZWxmLlRyYW5zSWQo Y3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHN0cihj dHguZ2V0Q2hpbGQoMCkpID09ICJwdXNoIjoNCj4gDQo+ICsgICAgICAgICAgICBBY3Rpb24gPSBW RlJfUEFDS19QVVNIDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIEFj dGlvbiA9IFZGUl9QQUNLX1BPUA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJl cigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgQWN0aW9uIHw9IFZGUl9QQUNLX0FTU0lH Tg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUGFja051bWJlciA9IHNlbGYuVHJhbnNOdW0oY3R4 Lk51bWJlcigpLCBERUZBVUxUX1BBQ0tfQUxJR04pDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4 LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIGdWZnJWYXJEYXRhVHlwZURCLlBhY2soTGluZSwg QWN0aW9uLCBJZGVudGlmaWVyLCBQYWNrTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwcmFnbWFQYWNrTnVtYmVyLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrTnVtYmVyKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4 UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgUGFja051bWJlciA9IHNlbGYuVHJhbnNOdW0o Y3R4Lk51bWJlcigpLCBERUZBVUxUX1BBQ0tfQUxJR04pDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBnVmZyVmFyRGF0YVR5cGVEQi5QYWNrKExpbmUsIFZGUl9QQUNLX0FTU0lHTiwgTm9uZSwgUGFj a051bWJlcikNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyUHJhZ21hUGFja0RlZmluaXRpb24uDQo+IA0KPiArICAgIGRlZiB2aXNp dFZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZm clByYWdtYVBhY2tEZWZpbml0aW9uQ29udGV4dCk6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9u Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJEYXRhU3RydWN0RGVmaW5pdGlvbihzZWxmLCBjdHg6 DQo+IFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGVjbGFyZURhdGFUeXBlQmVnaW4oKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk4xICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLlNldE5ld1R5cGVOYW1lKGN0eC5OMS50 ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0 eC5OMS5saW5lLCBjdHguTjEudGV4dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5O MiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5 cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjIudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTjIubGluZSwgY3R4Lk4yLnRleHQpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGVjbGFyZURhdGFUeXBlRW5kKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhVW5pb25EZWZpbml0aW9u Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJEYXRhVW5pb25EZWZpbml0aW9uKHNlbGYsIGN0eDoN Cj4gVmZyU3ludGF4UGFyc2VyLlZmckRhdGFVbmlvbkRlZmluaXRpb25Db250ZXh0KToNCj4gDQo+ ICsgICAgICAgIGdWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRhVHlwZUJlZ2luKCkNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC5OMSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFJldHVybkNv ZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjEudGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTjEubGluZSwg Y3R4Lk4xLnRleHQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gZ1ZmclZhckRhdGFUeXBlREIuU2V0TmV3 VHlwZU5hbWUoY3R4Lk4yLnRleHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRs ZXIoUmV0dXJuQ29kZSwgY3R4Lk4yLmxpbmUsIGN0eC5OMi50ZXh0KQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGdWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRhVHlwZUVuZCgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRGF0YVN0cnVjdEZpZWxkcy4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VmZyRGF0YVN0cnVjdEZpZWxkcyhzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNl ci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCk6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZDY0Lg0KPiAN Cj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGQ2NChzZWxmLCBjdHg6DQo+IFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGQ2NENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgQXJyYXlO dW0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIFJldHVybkNv ZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKA0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5OLnRleHQsICJVSU5UNjQiLCBBcnJheU51bSwgY3R4LkZpZWxkSW5Vbmlvbg0KPiAN Cj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29k ZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkMzIuDQo+IA0KPiAr ICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLkRhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBBcnJheU51bSA9 IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9 IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoDQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk4udGV4dCwgIlVJTlQzMiIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+IA0KPiAr ICAgICAgICApDQo+IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQxNi4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0RGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkMTZDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIEFycmF5TnVtID0gc2Vs Zi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gZ1Zm clZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Ti50ZXh0LCAiVUlOVDE2IiwgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24NCj4gDQo+ICsgICAg ICAgICkNCj4gDQo+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5O LmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZDguDQo+IA0KPiArICAgIGRlZiB2 aXNpdERhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEZpZWxkOENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5z TnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0 YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKA0KPiANCj4gKyAgICAgICAgICAgIGN0eC5OLnRleHQs ICJVSU5UOCIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+IA0KPiArICAgICAgICApDQo+ IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBj dHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRCb29sLg0KPiANCj4gKyAgICBkZWYgdmlzaXRE YXRhU3RydWN0RmllbGRCb29sKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RGaWVsZEJvb2xDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIEFycmF5TnVtID0gc2VsZi5UcmFu c051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gZ1ZmclZhckRh dGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gDQo+ICsgICAgICAgICAgICBjdHguTi50ZXh0 LCAiQk9PTEVBTiIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+IA0KPiArICAgICAgICAp DQo+IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5l LCBjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRTdHJpbmcuDQo+IA0KPiArICAgIGRlZiB2 aXNpdERhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5E YXRhU3RydWN0RmllbGRTdHJpbmdDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIEFycmF5TnVtID0g c2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0g Z1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gDQo+ICsgICAgICAgICAgICBj dHguTi50ZXh0LCAiRUZJX1NUUklOR19JRCIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ IA0KPiArICAgICAgICApDQo+IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGREYXRlLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGREYXRlKHNlbGYsIGN0eDoNCj4gVmZyU3lu dGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIEFy cmF5TnVtID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBSZXR1 cm5Db2RlID0gZ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTi50ZXh0LCAiRUZJX0hJSV9EQVRFIiwgQXJyYXlOdW0sIGN0eC5GaWVsZElu VW5pb24NCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFRp bWUuDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgY3R4Og0K PiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVGltZUNvbnRleHQpOg0KPiANCj4gKyAg ICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAg ICAgIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKA0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5OLnRleHQsICJFRklfSElJX1RJTUUiLCBBcnJheU51bSwgY3R4 LkZpZWxkSW5Vbmlvbg0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgc2VsZi5FcnJv ckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gDQo+ICsgICAg ICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVj dEZpZWxkUmVmLg0KPiANCj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRSZWYoc2VsZiwg Y3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCk6DQo+IA0K PiArICAgICAgICBBcnJheU51bSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4g KyAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQo DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk4udGV4dCwgIkVGSV9ISUlfUkVGIiwgQXJyYXlOdW0s IGN0eC5GaWVsZEluVW5pb24NCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiAr ICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFT dHJ1Y3RGaWVsZFVzZXIuDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFVzZXIo c2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQp Og0KPiANCj4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkN Cj4gDQo+ICsgICAgICAgIGlmIGN0eC5ULnRleHQgIT0gIkNIQVIxNiI6DQo+IA0KPiArICAgICAg ICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoDQo+ IA0KPiArICAgICAgICAgICAgICAgIGN0eC5OLnRleHQsIGN0eC5ULnRleHQsIEFycmF5TnVtLCBj dHguRmllbGRJblVuaW9uDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gZ1ZmclZhckRhdGFUeXBlREIuRGF0 YVR5cGVBZGRGaWVsZCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk4udGV4dCwgIlVJTlQx NiIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4 Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjZGF0YVN0cnVjdEJpdEZpZWxkNjQuDQo+IA0KPiArICAgIGRlZiB2aXNpdERh dGFTdHJ1Y3RCaXRGaWVsZDY0KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RCaXRGaWVsZDY0Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBXaWR0aCA9IHNlbGYuVHJhbnNO dW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAg Z1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZCgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGN0eC5OLnRleHQsICJVSU5UNjQiLCBXaWR0aCwgY3R4LkZpZWxkSW5Vbmlvbg0K PiANCj4gKyAgICAgICAgICAgICAgICApLA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTi5s aW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTi50ZXh0LA0KPiANCj4gKyAgICAgICAg ICAgICkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJv ckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgIGdWZnJWYXJEYXRhVHlwZURCLkRhdGFU eXBlQWRkQml0RmllbGQoTm9uZSwgIlVJTlQ2NCIsIFdpZHRoLA0KPiBjdHguRmllbGRJblVuaW9u KSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkQubGluZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgY3R4LkQudGV4dCwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFT dHJ1Y3RCaXRGaWVsZDMyLg0KPiANCj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0Qml0RmllbGQz MihzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQzMkNvbnRl eHQpOg0KPiANCj4gKyAgICAgICAgV2lkdGggPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkN Cj4gDQo+ICsgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgIGdWZnJWYXJEYXRhVHlwZURC LkRhdGFUeXBlQWRkQml0RmllbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTi50 ZXh0LCAiVUlOVDMyIiwgV2lkdGgsIGN0eC5GaWVsZEluVW5pb24NCj4gDQo+ICsgICAgICAgICAg ICAgICAgKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk4ubGluZSwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgY3R4Lk4udGV4dCwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4g KyAgICAgICAgICAgICAgICBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKE5v bmUsICJVSU5UMzIiLCBXaWR0aCwNCj4gY3R4LkZpZWxkSW5VbmlvbiksDQo+IA0KPiArICAgICAg ICAgICAgICAgIGN0eC5ELmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5ELnRleHQs DQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0RmllbGQxNi4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMTYoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQ YXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMTZDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIFdpZHRo ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBpZiBjdHguTiAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAg ICAgICAgICAgICAgICBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgY3R4Lk4udGV4dCwgIlVJTlQxNiIsIFdpZHRoLCBjdHgu RmllbGRJblVuaW9uDQo+IA0KPiArICAgICAgICAgICAgICAgICksDQo+IA0KPiArICAgICAgICAg ICAgICAgIGN0eC5OLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5OLnRleHQsDQo+ IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgZ1ZmclZhckRh dGFUeXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChOb25lLCAiVUlOVDE2IiwgV2lkdGgsDQo+IGN0 eC5GaWVsZEluVW5pb24pLA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguRC5saW5lLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBjdHguRC50ZXh0LA0KPiANCj4gKyAgICAgICAgICAgICkNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj ZGF0YVN0cnVjdEJpdEZpZWxkOC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZp ZWxkOChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4Q29u dGV4dCk6DQo+IA0KPiArICAgICAgICBXaWR0aCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigp KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgZ1ZmclZhckRhdGFUeXBl REIuRGF0YVR5cGVBZGRCaXRGaWVsZChjdHguTi50ZXh0LCAiVUlOVDgiLA0KPiBXaWR0aCwgY3R4 LkZpZWxkSW5VbmlvbiksDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5OLmxpbmUsDQo+IA0K PiArICAgICAgICAgICAgICAgIGN0eC5OLnRleHQsDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigN Cj4gDQo+ICsgICAgICAgICAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRCaXRG aWVsZChOb25lLCAiVUlOVDgiLCBXaWR0aCwNCj4gY3R4LkZpZWxkSW5VbmlvbiksDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGN0eC5ELmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5E LnRleHQsDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEZWNsYXJlU3RhbmRh cmREZWZhdWx0U3RvcmFnZShzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgRFNPYmogPSBJ ZnJEZWZhdWx0U3RvcmUoIlN0YW5kYXJkIERlZmF1bHRzIikNCj4gDQo+ICsgICAgICAgIGdWZnJE ZWZhdWx0U3RvcmUuUmVnaXN0ZXJEZWZhdWx0U3RvcmUoDQo+IA0KPiArICAgICAgICAgICAgRFNP YmouRGVmYXVsdFN0b3JlLA0KPiANCj4gKyAgICAgICAgICAgICJTdGFuZGFyZCBEZWZhdWx0cyIs DQo+IA0KPiArICAgICAgICAgICAgRUZJX1NUUklOR19JRF9JTlZBTElELA0KPiANCj4gKyAgICAg ICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwNCj4gDQo+ICsgICAgICAgICkN Cj4gDQo+ICsgICAgICAgIERTT2JqLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArICAgICAgICBE U09iai5TZXREZWZhdWx0TmFtZShFRklfU1RSSU5HX0lEX0lOVkFMSUQpDQo+IA0KPiArICAgICAg ICBEU09iai5TZXREZWZhdWx0SWQoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJEKQ0KPiAN Cj4gKyAgICAgICAgRHNOb2RlID0gSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAgRUZJ X0lGUl9ERUZBVUxUU1RPUkVfT1AsIERTT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShE U09iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBEU09iak1GID0gSWZyRGVmYXVsdFN0b3JlKCJTdGFuZGFyZCBNYW51RmFjdHVyaW5nIikNCj4g DQo+ICsgICAgICAgIGdWZnJEZWZhdWx0U3RvcmUuUmVnaXN0ZXJEZWZhdWx0U3RvcmUoDQo+IA0K PiArICAgICAgICAgICAgRFNPYmpNRi5EZWZhdWx0U3RvcmUsDQo+IA0KPiArICAgICAgICAgICAg IlN0YW5kYXJkIE1hbnVGYWN0dXJpbmciLA0KPiANCj4gKyAgICAgICAgICAgIEVGSV9TVFJJTkdf SURfSU5WQUxJRCwNCj4gDQo+ICsgICAgICAgICAgICBFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFO VUZBQ1RVUklORywNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIERTT2JqTUYuU2V0 TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgIERTT2JqTUYuU2V0RGVmYXVsdE5hbWUoRUZJ X1NUUklOR19JRF9JTlZBTElEKQ0KPiANCj4gKyAgICAgICAgRFNPYmpNRi5TZXREZWZhdWx0SWQo RUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVVJJTkcpDQo+IA0KPiArICAgICAgICBEc05v ZGVNRiA9IElmclRyZWVOb2RlKA0KPiANCj4gKyAgICAgICAgICAgIEVGSV9JRlJfREVGQVVMVFNU T1JFX09QLCBEU09iak1GLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShEU09iak1GLkdldElu Zm8oKSkNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBE c05vZGUsIERzTm9kZU1GDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtU2V0RGVmaW5pdGlvbi4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0VmZyRm9ybVNldERlZmluaXRpb24oc2VsZiwgY3R4Og0KPiBWZnJTeW50 YXhQYXJzZXIuVmZyRm9ybVNldERlZmluaXRpb25Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNl bGYuSW5zZXJ0Q2hpbGQoc2VsZi5Sb290LCBjdHgpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2Vy dENoaWxkKGN0eC5Ob2RlLCBjdHguY2xhc3NEZWZpbml0aW9uKCkpDQo+IA0KPiArICAgICAgICBz ZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBjdHguc3ViY2xhc3NEZWZpbml0aW9uKCkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBEc05vZGUsIERzTm9kZU1GID0gc2VsZi5EZWNsYXJlU3RhbmRh cmREZWZhdWx0U3RvcmFnZShjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl Lmluc2VydENoaWxkKERzTm9kZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLmluc2VydENoaWxk KERzTm9kZU1GKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIENsYXNzR3VpZE51bSA9IDANCj4gDQo+ICsgICAg ICAgIEd1aWRMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIGlmIGN0eC5jbGFzc2d1aWREZWZpbml0 aW9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBHdWlkTGlzdCA9IGN0eC5jbGFzc2d1 aWREZWZpbml0aW9uKCkuR3VpZExpc3QNCj4gDQo+ICsgICAgICAgICAgICBDbGFzc0d1aWROdW0g PSBsZW4oR3VpZExpc3QpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBEZWZhdWx0Q2xhc3NHdWlk ID0gRUZJX0hJSV9QTEFURk9STV9TRVRVUF9GT1JNU0VUX0dVSUQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGlmIHNlbGYuT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSBhbmQgQ2xhc3NHdWlkTnVt ID49IDQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAg ICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LnN0YXJ0LmxpbmUsDQo+IA0KPiArICAgICAgICAg ICAgICAgIE5vbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICJBbHJlYWR5IGhhcyA0IGNsYXNz IGd1aWRzLCBjYW4gbm90IGFkZCBleHRyYSBjbGFzcyBndWlkISIsDQo+IA0KPiArICAgICAgICAg ICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQ2xhc3NHdWlkTnVtID09IDA6DQo+IA0K PiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gPSAyDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ2xhc3NHdWlkTnVtID0gMQ0KPiANCj4gKyAgICAg ICAgICAgIEZTT2JqID0gSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFz c0d1aWROdW0gKg0KPiBzaXplb2YoRUZJX0dVSUQpKQ0KPiANCj4gKyAgICAgICAgICAgIEZTT2Jq LlNldENsYXNzR3VpZChEZWZhdWx0Q2xhc3NHdWlkKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHNl bGYuT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRlNP YmouU2V0Q2xhc3NHdWlkKHNlbGYuT3ZlcnJpZGVDbGFzc0d1aWQpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNl bGYuT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ2xh c3NHdWlkTnVtICs9IDENCj4gDQo+ICsgICAgICAgICAgICBGU09iaiA9IElmckZvcm1TZXQoc2l6 ZW9mKEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gc2l6ZW9mKEVGSV9HVUlE KSkNCj4gDQo+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQo+ IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2VsZi5PdmVycmlkZUNsYXNz R3VpZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgQ2xhc3NHdWlkTnVtID09IDI6DQo+ IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gKz0gMQ0KPiANCj4gKyAgICAgICAgICAg IEZTT2JqID0gSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWRO dW0gKg0KPiBzaXplb2YoRUZJX0dVSUQpKQ0KPiANCj4gKyAgICAgICAgICAgIEZTT2JqLlNldENs YXNzR3VpZChHdWlkTGlzdFswXSkNCj4gDQo+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1 aWQoR3VpZExpc3RbMV0pDQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNz R3VpZCAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQo c2VsZi5PdmVycmlkZUNsYXNzR3VpZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgQ2xh c3NHdWlkTnVtID09IDM6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNz R3VpZCAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gKz0gMQ0K PiANCj4gKyAgICAgICAgICAgIEZTT2JqID0gSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JN X1NFVCkgKyBDbGFzc0d1aWROdW0gKg0KPiBzaXplb2YoRUZJX0dVSUQpKQ0KPiANCj4gKyAgICAg ICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCj4gDQo+ICsgICAgICAgICAg ICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMV0pDQo+IA0KPiArICAgICAgICAgICAgRlNP YmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzJdKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYu T3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRlNPYmou U2V0Q2xhc3NHdWlkKHNlbGYuT3ZlcnJpZGVDbGFzc0d1aWQpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSA0Og0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYu T3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgQ2xhc3NH dWlkTnVtICs9IDENCj4gDQo+ICsgICAgICAgICAgICBGU09iaiA9IElmckZvcm1TZXQoc2l6ZW9m KEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gc2l6ZW9mKEVGSV9HVUlEKSkN Cj4gDQo+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQo+IA0K PiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzFdKQ0KPiANCj4gKyAg ICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsyXSkNCj4gDQo+ICsgICAgICAg ICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbM10pDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBGU09iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBGU09i ai5TZXRHdWlkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQo+IA0KPiArICAgICAgICBGU09i ai5TZXRGb3JtU2V0VGl0bGUoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKSkNCj4gDQo+ICsg ICAgICAgIEZTT2JqLlNldEhlbHAoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKSkNCj4gDQo+ ICsgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZE51bShsZW4oR3VpZExpc3QpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZTT2JqDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShGU09iai5HZXRJbmZvKCkpDQo+ IA0KPiArICAgICAgICBpZiBsZW4oR3VpZExpc3QpID09IDA6DQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk5vZGUuQnVmZmVyICs9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKERlZmF1bHRDbGFzc0d1 aWQpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGZvciBpIGluIHJh bmdlKDAsIGxlbihHdWlkTGlzdCkpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTm9kZS5C dWZmZXIgKz0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oR3VpZExpc3RbaV0pDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAjIERlY2xhcmUgdW5kZWZpbmVkIFF1ZXN0aW9uIHNvIHRoYXQgdGhleSBj YW4gYmUgdXNlZCBpbiBleHByZXNzaW9uLg0KPiANCj4gKyAgICAgICAgSW5zZXJ0T3BDb2RlTGlz dCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIGlmIGdGb3JtUGtnLkhhdmVQZW5kaW5nVW5hc3NpZ25l ZCgpOg0KPiANCj4gKyAgICAgICAgICAgIEluc2VydE9wQ29kZUxpc3QsIFJldHVybkNvZGUgPSBn Rm9ybVBrZy5EZWNsYXJlUGVuZGluZ1F1ZXN0aW9uKA0KPiANCj4gKyAgICAgICAgICAgICAgICBn VmZyVmFyRGF0YVR5cGVEQiwgZ1ZmckRhdGFTdG9yYWdlLCBzZWxmLlZmclF1ZXN0aW9uREIsDQo+ IGN0eC5zdG9wLmxpbmUNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAg U3RhdHVzID0gMCBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+IGVsc2UgMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUGFyc2VyU3RhdHVzICs9IFN0 YXR1cw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTmVlZEFkanVzdE9wY29kZSA9IFRydWUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0 b3AubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuTmVlZEFkanVzdE9wY29k ZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxhc3RGb3JtTm9kZS5DaGlsZC5wb3AoKQ0KPiAN Cj4gKyAgICAgICAgICAgIGZvciBJbnNlcnRPcENvZGUgaW4gSW5zZXJ0T3BDb2RlTGlzdDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgSW5zZXJ0Tm9kZSA9IElmclRyZWVOb2RlKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgSW5zZXJ0T3BDb2RlLk9wQ29kZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIEluc2VydE9wQ29kZS5EYXRhLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Z0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oSW5zZXJ0T3BDb2RlLkRhdGEuR2V0SW5mbygpKSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkxhc3RG b3JtTm9kZS5pbnNlcnRDaGlsZChJbnNlcnROb2RlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg Z0Zvcm1Qa2cuQnVpbGRQa2coc2VsZi5Sb290KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNjbGFzc2d1aWREZWZpbml0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlz aXRDbGFzc2d1aWREZWZpbml0aW9uKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLkNsYXNz Z3VpZERlZmluaXRpb25Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgR3VpZEN0eCBpbiBjdHguZ3VpZERl ZmluaXRpb24oKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguR3VpZExpc3QuYXBwZW5kKEd1aWRD dHguR3VpZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjY2xhc3NEZWZpbml0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRDbGFzc0RlZmluaXRp b24oc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuQ2xhc3NEZWZpbml0aW9uQ29udGV4dCk6DQo+ IA0KPiArICAgICAgICBDT2JqID0gSWZyQ2xhc3MoKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIENsYXNzID0gMA0KPiANCj4gKyAgICAgICAg Zm9yIENsYXNzTmFtZUN0eCBpbiBjdHgudmFsaWRDbGFzc05hbWVzKCk6DQo+IA0KPiArICAgICAg ICAgICAgQ2xhc3MgfD0gQ2xhc3NOYW1lQ3R4LkNsYXNzTmFtZQ0KPiANCj4gKyAgICAgICAgTGlu ZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBDT2JqLlNldExpbmVObyhMaW5lKQ0K PiANCj4gKyAgICAgICAgQ09iai5TZXRDbGFzcyhDbGFzcykNCj4gDQo+ICsgICAgICAgIENPYmou U2V0Q2xhc3NTdHIoc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eCkpDQo+IA0KPiArICAgICAg ICBjdHguTm9kZS5EYXRhID0gQ09iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0g Z0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oQ09iai5HZXRJbmZvKCkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZhbGlkQ2xhc3NOYW1lcy4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmFsaWRDbGFzc05hbWVzKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4 UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5DbGFzc05vbkRl dmljZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9O T05fREVWSUNFX0NMQVNTDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5DbGFzc0Rpc2tEZXZpY2Uo KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfRElTS19E RVZJQ0VfQ0xBU1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzVmlkZW9EZXZpY2UoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfVklERU9fREVW SUNFX0NMQVNTDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5DbGFzc05ldHdvcmtEZXZpY2UoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfTkVUV09SS19E RVZJQ0VfQ0xBU1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzSW5wdXREZXZpY2UoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfSU5QVVRfREVW SUNFX0NMQVNTDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5DbGFzc09uQm9hcmREZXZpY2UoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfT05fQk9BUkRf REVWSUNFX0NMQVNTDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5DbGFzc090aGVyRGV2aWNlKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguQ2xhc3NOYW1lID0gRUZJX09USEVSX0RF VklDRV9DTEFTUw0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Q2xhc3NOYW1lID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICByZXR1cm4gY3R4LkNsYXNzTmFtZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3ViY2xhc3NEZWZpbml0 aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRTdWJjbGFzc0RlZmluaXRpb24oc2VsZiwgY3R4Og0K PiBWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NEZWZpbml0aW9uQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICBTdWJPYmogPSBJZnJTdWJDbGFzcygpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+IA0KPiArICAgICAgICBTdWJPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiAr ICAgICAgICBTdWJDbGFzcyA9IDANCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdWJjbGFzc1NldHVw QXBwbGljYXRpb24oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFN1YkNsYXNzIHw9IEVG SV9TRVRVUF9BUFBMSUNBVElPTl9TVUJDTEFTUw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguU3Vi Y2xhc3NHZW5lcmFsQXBwbGljYXRpb24oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFN1 YkNsYXNzIHw9IEVGSV9HRU5FUkFMX0FQUExJQ0FUSU9OX1NVQkNMQVNTDQo+IA0KPiArICAgICAg ICBlbGlmIGN0eC5TdWJjbGFzc0Zyb250UGFnZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgU3ViQ2xhc3MgfD0gRUZJX0ZST05UX1BBR0VfU1VCQ0xBU1MNCj4gDQo+ICsgICAgICAgIGVs aWYgY3R4LlN1YmNsYXNzU2luZ2xlVXNlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBT dWJDbGFzcyB8PSBFRklfU0lOR0xFX1VTRV9TVUJDTEFTUw0KPiANCj4gKyAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICBTdWJDbGFzcyA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgU3ViT2JqLlNldFN1YkNsYXNzKFN1YkNsYXNzKQ0K PiANCj4gKyAgICAgICAgU3ViT2JqLlNldFN1YkNsYXNzU3RyKHNlbGYuRXh0cmFjdE9yaWdpbmFs VGV4dChjdHgpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFN1Yk9i ag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJl YW0oU3ViT2JqLkdldEluZm8oKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyRm9ybVNldExpc3QuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZm ckZvcm1TZXRMaXN0KHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29u dGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAg ICAgICAgZm9yIEN0eCBpbiBjdHgudmZyRm9ybVNldCgpOg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRm9ybVNldC4NCj4gDQo+ICsgICAgZGVmIHZp c2l0VmZyRm9ybVNldChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29udGV4 dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgY3R4LnZmckZvcm1EZWZpbml0aW9uKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJGb3JtRGVmaW5pdGlvbigpLk5vZGUNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC52ZnJGb3JtTWFwRGVmaW5pdGlvbigpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyRm9ybU1hcERlZmluaXRpb24oKS5Ob2RlDQo+ IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW1hZ2UoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEltYWdlKCkuTm9kZQ0KPiAN Cj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUxp bmVhcigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUVm aSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50VmFyU3RvcmVFZmkoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50 VmFyU3RvcmVOYW1lVmFsdWUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2Rl ID0gY3R4LnZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKCkuTm9kZQ0KPiANCj4gKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudERlZmF1bHRTdG9yZSgpICE9IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKCkuTm9kZQ0K PiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudERpc2Fi bGVJZkZvcm1TZXQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3Vw cHJlc3NJZkZvcm1TZXQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0g Y3R4LnZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkuTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmUuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERlZmF1bHRT dG9yZShzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0U3Rv cmVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IFJlZk5hbWUgPSBjdHguTi50ZXh0DQo+IA0KPiArICAgICAgICBEU09iaiA9IElmckRlZmF1bHRT dG9yZShSZWZOYW1lKQ0KPiANCj4gKyAgICAgICAgRGVmYXVsdFN0b3JlTmFtZUlkID0gc2VsZi5U cmFuc051bShjdHguUy50ZXh0KQ0KPiANCj4gKyAgICAgICAgRGVmYXVsdElkID0gKA0KPiANCj4g KyAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCBpZiBjdHguQXR0cmli dXRlKCkgPT0gTm9uZSBlbHNlDQo+IHNlbGYuVHJhbnNOdW0oY3R4LkEudGV4dCkNCj4gDQo+ICsg ICAgICAgICkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5BdHRyaWJ1dGUoKSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIERTT2JqLkhhc0F0dHIgPSBUcnVlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBnVmZyRGVmYXVsdFN0b3JlLkRlZmF1bHRJZFJlZ2lzdGVyZWQoRGVmYXVsdElkKSA9 PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZ1ZmckRlZmF1bHRTdG9yZS5SZWdpc3RlckRlZmF1bHRTdG9yZSgNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIERTT2JqLkRlZmF1bHRTdG9yZSwgUmVmTmFtZSwgRGVm YXVsdFN0b3JlTmFtZUlkLCBEZWZhdWx0SWQNCj4gDQo+ICsgICAgICAgICAgICAgICAgKSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiAr ICAgICAgICAgICAgRFNPYmouU2V0RGVmYXVsdE5hbWUoRGVmYXVsdFN0b3JlTmFtZUlkKQ0KPiAN Cj4gKyAgICAgICAgICAgIERTT2JqLlNldERlZmF1bHRJZChEZWZhdWx0SWQpDQo+IA0KPiArICAg ICAgICAgICAgRFNPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IERTT2JqDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zv cm1Qa2cuU3RydWN0VG9TdHJlYW0oRFNPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSwgUmV0dXJuQ29kZSA9IGdWZnJEZWZhdWx0U3Rv cmUuUmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQoDQo+IA0KPiArICAgICAgICAgICAgICAgIERl ZmF1bHRJZCwgUmVmTmFtZSwgRGVmYXVsdFN0b3JlTmFtZUlkDQo+IA0KPiArICAgICAgICAgICAg KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUp DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUuT3BDb2RlID0gRUZJX0lGUl9TSE9XTl9ERUZB VUxUU1RPUkVfT1AgICMgRm9yDQo+IGRpc3BsYXkgaW4gWUFNTA0KPiANCj4gKyAgICAgICAgICAg IERTT2JqLlNldERlZmF1bHRJZChEZWZhdWx0SWQpDQo+IA0KPiArICAgICAgICAgICAgRFNPYmou U2V0RGVmYXVsdE5hbWUoRGVmYXVsdFN0b3JlTmFtZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIGN0 eC5Ob2RlLkRhdGEgPSBEU09iag0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhci4NCj4gDQo+ICsgICAgZGVmIHZp c2l0VmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoDQo+IA0KPiArICAgICAgICBzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRleHQNCj4gDQo+ ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBUeXBlTmFtZSA9IHN0cihjdHguZ2V0Q2hpbGQoMSkpDQo+IA0KPiAr ICAgICAgICBpZiBUeXBlTmFtZSA9PSAiQ0hBUjE2IjoNCj4gDQo+ICsgICAgICAgICAgICBUeXBl TmFtZSA9ICJVSU5UMTYiDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJc0JpdFZhclN0b3JlID0g RmFsc2UNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5UTiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIElzQml0VmFyU3RvcmUgPSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUhhc0JpdEZpZWxk KGN0eC5UTi50ZXh0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9W QVJTVE9SRV9JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBpZiBjdHguVmFySWQoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5JRC50 ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ29tcGFyZUVycm9ySGFuZGxlcigNCj4gDQo+ ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVJZCAhPSAwLCBUcnVlLCBjdHguSUQubGluZSwgY3R4 LklELnRleHQsICJ2YXJpZCAwIGlzIG5vdCBhbGxvd2VkLiINCj4gDQo+ICsgICAgICAgICAgICAp DQo+IA0KPiArICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4dA0KPiANCj4gKyAgICAgICAg VlNPYmogPSBJZnJWYXJTdG9yZShUeXBlTmFtZSwgU3RvcmVOYW1lKQ0KPiANCj4gKyAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBWU09iai5TZXRMaW5lTm8oTGlu ZSkNCj4gDQo+ICsgICAgICAgIFZTT2JqLlNldEhhc1ZhclN0b3JlSWQoY3R4LlZhcklkKCkgIT0g Tm9uZSkNCj4gDQo+ICsgICAgICAgIEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQo+ IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICBnVmZy RGF0YVN0b3JhZ2UuRGVjbGFyZUJ1ZmZlclZhclN0b3JlKA0KPiANCj4gKyAgICAgICAgICAgICAg ICBTdG9yZU5hbWUsIEd1aWQsIGdWZnJWYXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJ ZCwNCj4gSXNCaXRWYXJTdG9yZQ0KPiANCj4gKyAgICAgICAgICAgICksDQo+IA0KPiArICAgICAg ICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIFZTT2JqLlNldEd1 aWQoR3VpZCkNCj4gDQo+ICsgICAgICAgIFZhclN0b3JlSWQsIFJldHVybkNvZGUgPSBnVmZyRGF0 YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsDQo+IEd1aWQpDQo+IA0KPiArICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQp DQo+IA0KPiArICAgICAgICBWU09iai5TZXRWYXJTdG9yZUlkKFZhclN0b3JlSWQpDQo+IA0KPiAr ICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5 cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIExpbmUpDQo+IA0KPiArICAgICAgICBWU09iai5TZXRTaXplKFNpemUp DQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gVlNPYmoNCj4gDQo+ICsgICAgICAgIGN0 eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFZTT2JqLkdldEluZm8oKSkN Cj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciArPSBieXRlcygiXDAiLCBlbmNvZGluZz0i dXRmLTgiKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZTT2JqDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50VmFyU3RvcmVFZmkoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 VmFyU3RvcmVFZmlDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBDdXN0b21pemVkTmFtZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICBJc0JpdFZh clN0b3JlID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIFZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVf SURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgSXNVRUZJMjNFZmlWYXJzdG9yZSA9IFRydWUNCj4g DQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBOb25lDQo+IA0KPiArICAgICAgICBOYW1lU3RyaW5n SWQgPSBOb25lDQo+IA0KPiArICAgICAgICBWYXJTaXplID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgVHlwZU5hbWUgPSBzdHIoY3R4LmdldENoaWxkKDEpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgaWYgVHlwZU5hbWUgPT0gIkNIQVIxNiI6DQo+IA0KPiArICAgICAgICAgICAgVHlw ZU5hbWUgPSAiVUlOVDE2Ig0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguVE4gIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBDdXN0b21pemVkTmFtZSA9IFRydWUNCj4gDQo+ICsg ICAgICAgICAgICBJc0JpdFZhclN0b3JlID0gZ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVIYXNC aXRGaWVsZChUeXBlTmFtZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5WYXJJZCgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuVHJhbnNOdW0o Y3R4LklELnRleHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Db21wYXJlRXJyb3JIYW5kbGVy KA0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZUlkICE9IDAsIFRydWUsIGN0eC5JRC5s aW5lLCBjdHguSUQudGV4dCwgInZhcmlkIDAgaXMgbm90IGFsbG93ZWQuIg0KPiANCj4gKyAgICAg ICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEF0dHJpYnV0ZXMgPSAwDQo+IA0KPiAr ICAgICAgICBBdHRyaWJ1dGVzVGV4dCA9ICIiDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5n ZSgwLCBsZW4oY3R4LnZmclZhclN0b3JlRWZpQXR0cigpKSk6DQo+IA0KPiArICAgICAgICAgICAg QXR0cmlidXRlcyB8PSBjdHgudmZyVmFyU3RvcmVFZmlBdHRyKGkpLkF0dHINCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBpZiBpICE9IGxlbihjdHgudmZyVmFyU3RvcmVFZmlBdHRyKCkpIC0g MToNCj4gDQo+ICsgICAgICAgICAgICAgICAgQXR0cmlidXRlc1RleHQgKz0gZiJ7Y3R4LnZmclZh clN0b3JlRWZpQXR0cihpKS5BdHRyOiMwMTB4fSB8ICINCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzVGV4dCArPSBmIntjdHgudmZyVmFy U3RvcmVFZmlBdHRyKGkpLkF0dHI6IzAxMHh9Ig0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg Y3R4LlNOICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgU3RvcmVOYW1lID0gY3R4LlNOLnRl eHQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgSXNVRUZJMjNFZmlW YXJzdG9yZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICAgICAgTmFtZVN0cmluZ0lkID0gc2VsZi5U cmFuc051bShjdHguVk4udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBTdG9yZU5hbWUgPQ0KPiBn VmZyU3RyaW5nREIuR2V0VmFyU3RvcmVOYW1lRnJvbVN0cmluZ0lkKE5hbWVTdHJpbmdJZCkgICMN Cj4gDQo+ICsgICAgICAgICAgICBpZiBTdG9yZU5hbWUgPT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBjdHguVk4ubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICJDYW4ndCBnZXQgdmFyc3RvcmUgbmFtZSBmb3IgdGhpcyBTdHJpbmdJZCEiLA0KPiANCj4g KyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgaWYgbm90IChDdXN0b21pemVk TmFtZSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVE LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICJPbGQgc3R5bGUgZWZpdmFyc3RvcmUgbXVzdCBoYXZlIFN0cmluZyBJZGVudGlmaWVy ISIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBTaXplID0g c2VsZi5UcmFuc051bShjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFNpemUgPT0g MToNCj4gDQo+ICsgICAgICAgICAgICAgICAgVHlwZU5hbWUgPSAiVUlOVDgiDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiBTaXplID09IDI6DQo+IA0KPiArICAgICAgICAgICAgICAgIFR5cGVOYW1l ID0gIlVJTlQxNiINCj4gDQo+ICsgICAgICAgICAgICBlbGlmIFNpemUgPT0gNDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgVHlwZU5hbWUgPSAiVUlOVDMyIg0KPiANCj4gKyAgICAgICAgICAgIGVs aWYgU2l6ZSA9PSA4Og0KPiANCj4gKyAgICAgICAgICAgICAgICBUeXBlTmFtZSA9ICJVSU5UNjQi DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBjdHgu Ti5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgSXNVRUZJMjNF ZmlWYXJzdG9yZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ ICsgICAgICAgICAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVCdWZmZXJWYXJTdG9yZSgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFN0b3JlTmFtZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIEd1aWQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBnVmZyVmFyRGF0YVR5 cGVEQiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFR5cGVOYW1lLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgVmFyU3RvcmVJZCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIElz Qml0VmFyU3RvcmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICApLA0KPiANCj4gKyAgICAgICAgICAgICAgICBMaW5lLA0KPiAN Cj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkLCBSZXR1cm5D b2RlID0gZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lLA0KPiBHdWlkKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTi5s aW5lLCBjdHguU04udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0N Cj4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxl cigNCj4gDQo+ICsgICAgICAgICAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVCdWZmZXJW YXJTdG9yZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuR2V0VGV4dChjdHguVE4p LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgR3VpZCwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIGdWZnJWYXJEYXRhVHlwZURCLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVHlw ZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUlkLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgSXNCaXRWYXJTdG9yZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIEF0dHJpYnV0ZXMsDQo+IA0KPiArICAgICAgICAgICAgICAgICksDQo+IA0KPiArICAgICAg ICAgICAgICAgIExpbmUsDQo+IA0KPiArICAgICAgICAgICAgKSAgIw0KPiANCj4gKyAgICAgICAg ICAgIFZhclN0b3JlSWQsIFJldHVybkNvZGUgPQ0KPiBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3Rv cmVJZChzZWxmLkdldFRleHQoY3R4LlROKSwgR3VpZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguVk4ubGluZSwgY3R4LlZOLnRleHQpDQo+IA0K PiArICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+IGdWZnJWYXJEYXRhVHlwZURCLkdl dERhdGFUeXBlU2l6ZUJ5VHlwZU5hbWUoVHlwZU5hbWUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIFZTRU9iaiA9IElmclZhclN0b3JlRWZpKFR5cGVOYW1lLCBTdG9yZU5hbWUpDQo+IA0K PiArICAgICAgICBWU0VPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICBWU0VPYmou U2V0SGFzVmFyU3RvcmVJZChjdHguVmFySWQoKSAhPSBOb25lKQ0KPiANCj4gKyAgICAgICAgVlNF T2JqLlNldEd1aWQoR3VpZCkNCj4gDQo+ICsgICAgICAgIFZTRU9iai5TZXRWYXJTdG9yZUlkKFZh clN0b3JlSWQpDQo+IA0KPiArICAgICAgICBWU0VPYmouU2V0U2l6ZShTaXplKQ0KPiANCj4gKyAg ICAgICAgVlNFT2JqLlNldEF0dHJpYnV0ZXMoQXR0cmlidXRlcykNCj4gDQo+ICsgICAgICAgIFZT RU9iai5TZXRBdHRyaWJ1dGVzVGV4dChBdHRyaWJ1dGVzVGV4dCkNCj4gDQo+ICsgICAgICAgIFZT RU9iai5TZXROYW1lU3RyaW5nSWQoTmFtZVN0cmluZ0lkKQ0KPiANCj4gKyAgICAgICAgVlNFT2Jq LlNldFZhclNpemUoVmFyU2l6ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRh dGEgPSBWU0VPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0 cnVjdFRvU3RyZWFtKFZTRU9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5C dWZmZXIgKz0gYnl0ZXMoIlwwIiwgZW5jb2Rpbmc9InV0Zi04IikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyVmFyU3RvcmVFZmlBdHRyLg0K PiANCj4gKyAgICBkZWYgdmlzaXRWZnJWYXJTdG9yZUVmaUF0dHIoc2VsZiwgY3R4Og0KPiBWZnJT eW50YXhQYXJzZXIuVmZyVmFyU3RvcmVFZmlBdHRyQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4LkF0dHIgPSBzZWxmLlRy YW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguQXR0cg0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJT eW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKA0KPiANCj4gKyAgICAgICAgc2Vs ZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWVDb250 ZXh0DQo+IA0KPiArICAgICk6DQo+IA0KPiArICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4 dA0KPiANCj4gKyAgICAgICAgVlNOVk9iaiA9IElmclZhclN0b3JlTmFtZVZhbHVlKFN0b3JlTmFt ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBHdWlkID0gY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZA0KPiANCj4gKyAgICAg ICAgSGFzVmFyU3RvcmVJZCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBWYXJTdG9yZUlkID0gRUZJ X1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5WYXJJ ZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgSGFzVmFyU3RvcmVJZCA9IFRydWUNCj4g DQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5UcmFuc051bShjdHguSUQudGV4dCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNvbXBhcmVFcnJvckhhbmRsZXIoDQo+IA0KPiArICAg ICAgICAgICAgICAgIFZhclN0b3JlSWQgIT0gMCwgVHJ1ZSwgY3R4LklELmxpbmUsIGN0eC5JRC50 ZXh0LCAidmFyaWQgMCBpcyBub3QgYWxsb3dlZCINCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBDcmVhdGVkID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHNJbmRleCA9IDAgaWYgSGFzVmFyU3RvcmVJZCA9PSBGYWxzZSBlbHNlIDENCj4gDQo+ICsg ICAgICAgIGVJbmRleCA9IHNJbmRleCArIGxlbihjdHguTmFtZSgpKQ0KPiANCj4gKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2Uoc0luZGV4LCBlSW5kZXgpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIENy ZWF0ZWQgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVOYW1l VmFyU3RvcmVCZWdpbihTdG9yZU5hbWUsDQo+IFZhclN0b3JlSWQpLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgY3R4LlNOLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHgu U04udGV4dCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBDcmVhdGVkID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIEl0ZW0gPSBzZWxmLlRyYW5zTnVt KGN0eC5OdW1iZXIoaSkpDQo+IA0KPiArICAgICAgICAgICAgVlNOVk9iai5TZXROYW1lSXRlbUxp c3QoSXRlbSkNCj4gDQo+ICsgICAgICAgICAgICBnVmZyRGF0YVN0b3JhZ2UuTmFtZVRhYmxlQWRk SXRlbShJdGVtKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkRlY2xh cmVOYW1lVmFyU3RvcmVFbmQoR3VpZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZTTlZPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgVlNOVk9iai5TZXRHdWlk KEd1aWQpDQo+IA0KPiArICAgICAgICBWYXJzdG9yZUlkLCBSZXR1cm5Db2RlID0gZ1ZmckRhdGFT dG9yYWdlLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lLA0KPiBHdWlkKQ0KPiANCj4gKyAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0K PiANCj4gKyAgICAgICAgVlNOVk9iai5TZXRWYXJTdG9yZUlkKFZhcnN0b3JlSWQpDQo+IA0KPiAr ICAgICAgICBWU05WT2JqLlNldEhhc1ZhclN0b3JlSWQoSGFzVmFyU3RvcmVJZCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBWU05WT2JqDQo+IA0KPiArICAgICAgICBj dHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShWU05WT2JqLkdldEluZm8o KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJz ZXIjdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZy U3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgNCj4gDQo+ICsgICAgICAgIHNlbGYsIGN0eDogVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXRDb250ZXh0DQo+IA0KPiAr ICAgICk6DQo+IA0KPiArICAgICAgICBESU9iaiA9IElmckRpc2FibGVJZigpDQo+IA0KPiArICAg ICAgICBESU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBzZWxm LkNvbnN0YW50T25seUluRXhwcmVzc2lvbiA9IFRydWUNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBESU9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0KPiAN Cj4gKyAgICAgICAgICAgICJkaXNhYmxlaWYiICsgIiAiICsNCj4gc2VsZi5FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICApDQo+ IA0KPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0 eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoDQo+IA0KPiAr ICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lm Rm9ybVNldENvbnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIFNJT2JqID0gSWZy U3VwcHJlc3NJZigpDQo+IA0KPiArICAgICAgICBTSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU0lPYmoNCj4gDQo+ICsgICAgICAg IGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICgNCj4gDQo+ICsgICAgICAgICAgICAic3VwcHJlc3NpZiIg KyAiICIgKw0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJl c3Npb24oKSkNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJl c3Npb24gPQ0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJl c3Npb24oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0K PiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2d1aWRTdWJEZWZpbml0aW9u Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRHdWlkU3ViRGVmaW5pdGlvbihzZWxmLCBjdHg6DQo+IFZm clN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5pdGlvbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg Y3R4Lkd1aWQuRGF0YTRbMF0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiAr ICAgICAgICBjdHguR3VpZC5EYXRhNFsxXSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkN Cj4gDQo+ICsgICAgICAgIGN0eC5HdWlkLkRhdGE0WzJdID0gc2VsZi5UcmFuc051bShjdHguTnVt YmVyKDIpKQ0KPiANCj4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRbM10gPSBzZWxmLlRyYW5zTnVt KGN0eC5OdW1iZXIoMykpDQo+IA0KPiArICAgICAgICBjdHguR3VpZC5EYXRhNFs0XSA9IHNlbGYu VHJhbnNOdW0oY3R4Lk51bWJlcig0KSkNCj4gDQo+ICsgICAgICAgIGN0eC5HdWlkLkRhdGE0WzVd ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDUpKQ0KPiANCj4gKyAgICAgICAgY3R4Lkd1aWQu RGF0YTRbNl0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoNikpDQo+IA0KPiArICAgICAgICBj dHguR3VpZC5EYXRhNFs3XSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcig3KSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZ3VpZERlZmluaXRpb24uDQo+IA0KPiArICAgIGRlZiB2aXNpdEd1aWREZWZpbml0aW9uKHNl bGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCk6DQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg Y3R4Lkd1aWQuRGF0YTEgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAg ICAgICBjdHguR3VpZC5EYXRhMiA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ ICsgICAgICAgIGN0eC5HdWlkLkRhdGEzID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDIpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2dldFN0cmlu Z0lkLg0KPiANCj4gKyAgICBkZWYgdmlzaXRHZXRTdHJpbmdJZChzZWxmLCBjdHg6IFZmclN5bnRh eFBhcnNlci5HZXRTdHJpbmdJZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgY3R4LlN0cmluZ0lk ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEhl YWRlci4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SGVhZGVyKHNlbGYsIGN0eDoN Cj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQpOg0KPiANCj4gKyAg ICAgICAgaWYgY3R4Lk5vZGUuRGF0YSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFByb21w dCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Tm9kZS5EYXRhLlNldFByb21wdChQcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgSGVscCA9IHNl bGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZS5E YXRhLlNldEhlbHAoSGVscCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25IZWFkZXIuDQo+IA0KPiAr ICAgIGRlZiB2aXNpdFZmclF1ZXN0aW9uSGVhZGVyKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCk6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclF1ZXN0aW9uQmFzZUluZm8uDQo+ IA0KPiArICAgIGRlZiB2aXNpdFZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZiwgY3R4Og0KPiBWZnJT eW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAg Y3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfT1RIRVINCj4gDQo+ICsgICAgICAg IGN0eC5CYXNlSW5mby5WYXJUb3RhbFNpemUgPSAwDQo+IA0KPiArICAgICAgICBjdHguQmFzZUlu Zm8uSW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4gDQo+ICsgICAgICAg IGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gDQo+ ICsgICAgICAgIGN0eC5CYXNlSW5mby5Jc0JpdFZhciA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBRTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5Vc2VkRGVmYXVsdEFycmF5ID0gW10NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTmFt ZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgUU5hbWUgPSBjdHguUU4udGV4dA0KPiAN Cj4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuRmluZFF1ZXN0 aW9uQnlOYW1lKFFOYW1lKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ29tcGFyZUVycm9ySGFu ZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRCwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgY3R4LlFOLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5RTi50 ZXh0LA0KPiANCj4gKyAgICAgICAgICAgICAgICAiaGFzIGFscmVhZHkgYmVlbiB1c2VkIHBsZWFz ZSB1c2VkIGFudGhlciBuYW1lIiwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBWYXJJZFN0ciA9ICIiIGlmIGN0eC5WYXJJZCgpID09IE5vbmUgZWxzZSBjdHgu dmZyU3RvcmFnZVZhcklkKCkuVmFySWRTdHINCj4gDQo+ICsgICAgICAgIGlmIGN0eC5RdWVzdGlv bklkKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBRSWQgPSBzZWxmLlRyYW5zTnVtKGN0 eC5JRC50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBzZWxmLlZmclF1ZXN0 aW9uREIuRmluZFF1ZXN0aW9uQnlJZChRSWQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Db21w YXJlRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICBSZXR1cm5Db2RlLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELA0K PiANCj4gKyAgICAgICAgICAgICAgICBjdHguSUQubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgY3R4LklELnRleHQsDQo+IA0KPiArICAgICAgICAgICAgICAgICJoYXMgYWxyZWFkeSBiZWVu IHVzZWQgcGxlYXNlIHVzZWQgYW50aGVyIG51bWJlciIsDQo+IA0KPiArICAgICAgICAgICAgKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUu UVVFU1RJT05fTk9STUFMOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuSXNDaGVja0JveE9w Og0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJf VFlQRV9CT09MRUFODQo+IA0KPiArICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5W ZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUXVlc3Rpb24oUU5hbWUsDQo+IFZhcklkU3RyLCBRSWQsIGdG b3JtUGtnKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguUVR5cGUg PT0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFOg0KPiANCj4gKyAgICAgICAgICAgIGN0 eC5CYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gDQo+ICsgICAgICAgICAg ICBRSWQsIFJldHVybkNvZGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuUmVnaXN0ZXJOZXdEYXRlUXVl c3Rpb24oDQo+IA0KPiArICAgICAgICAgICAgICAgIFFOYW1lLCBWYXJJZFN0ciwgUUlkLCBnRm9y bVBrZw0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9y SGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGVsaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToNCj4g DQo+ICsgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1F DQo+IA0KPiArICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5WZnJRdWVzdGlvbkRC LlJlZ2lzdGVyTmV3VGltZVF1ZXN0aW9uKA0KPiANCj4gKyAgICAgICAgICAgICAgICBRTmFtZSwg VmFySWRTdHIsIFFJZCwgZ0Zvcm1Qa2cNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LnN0YXJ0LmxpbmUpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5RVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBF LlFVRVNUSU9OX1JFRjoNCj4gDQo+ICsgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9 IEVGSV9JRlJfVFlQRV9SRUYNCj4gDQo+ICsgICAgICAgICAgICBpZiBWYXJJZFN0ciAhPSAiIjog ICMgc3RhbmQgZm9yIHF1ZXN0aW9uIHdpdGggc3RvcmFnZS4NCj4gDQo+ICsgICAgICAgICAgICAg ICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5WZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUmVmUXVlc3Rp b24oDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBRTmFtZSwgVmFySWRTdHIsIFFJZCwgZ0Zv cm1Qa2cNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPSBz ZWxmLlZmclF1ZXN0aW9uREIuUmVnaXN0ZXJRdWVzdGlvbihRTmFtZSwNCj4gTm9uZSwgUUlkLCBn Rm9ybVBrZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJu Q29kZSwgY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9F UlJPUiwNCj4gY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLkN1 cnJRZXN0VmFySW5mbyA9IGN0eC5CYXNlSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg Y3R4Lk5vZGUuT3BDb2RlID09IEVGSV9JRlJfT05FX09GX09QOg0KPiANCj4gKyAgICAgICAgICAg ICMgbmVlZCB0byBmdXJ0aGVyIHVwZGF0ZSB0aGUgVmFyVHlwZQ0KPiANCj4gKyAgICAgICAgICAg IGN0eC5Ob2RlLkRhdGEgPSBJZnJPbmVPZihFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQsIFFOYW1l LA0KPiBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkN1cnJlbnRRdWVzdGlvbiA9 IGN0eC5Ob2RlLkRhdGENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkN1cnJlbnRNaW5NYXhEYXRh ID0gY3R4Lk5vZGUuRGF0YQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguTm9kZS5P cENvZGUgPT0gRUZJX0lGUl9OVU1FUklDX09QOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBJZnJOdW1lcmljKEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NCwgUU5hbWUsDQo+IFZh cklkU3RyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ3VycmVudFF1ZXN0aW9uID0gY3R4Lk5v ZGUuRGF0YQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ3VycmVudE1pbk1heERhdGEgPSBjdHgu Tm9kZS5EYXRhDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTm9kZS5EYXRhICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YS5TZXRRTmFtZShRTmFtZSkNCj4g DQo+ICsgICAgICAgICAgICBjdHguTm9kZS5EYXRhLlNldFZhcklkU3RyKFZhcklkU3RyKQ0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkRhdGEuU2V0UXVlc3Rpb25JZChRSWQpDQo+IA0KPiAr ICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YS5TZXRIYXNRdWVzdGlvbklkKGN0eC5RdWVzdGlvbklk KCkgIT0gTm9uZSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguQmFzZUluZm8uVmFyU3RvcmVJ ZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4 Lk5vZGUuRGF0YS5TZXRWYXJTdG9yZUluZm8oY3R4LkJhc2VJbmZvKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciNxdWVzdGlvbmhlYWRlckZs YWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChz ZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250 ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAg ICAgICBpZiBjdHguUmVhZE9ubHlGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguUUhGbGFnID0gMHgwMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguSW50ZXJh Y3RpdmVGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguUUhGbGFnID0gMHgw NA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguUmVzZXRSZXF1aXJlZEZsYWcoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDEwDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBlbGlmIGN0eC5SZXN0U3R5bGVGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBjdHguUUhGbGFnID0gMHgyMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxp ZiBjdHguUmVjb25uZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguUUhGbGFnID0gMHg0MA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguT3B0 aW9uT25seUZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGdWZnJFcnJvckhhbmRs ZS5IYW5kbGVXYXJuaW5nKA0KPiANCj4gKw0KPiBFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FS TklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ08NCj4gREUsIGN0eC5PLmxpbmUsIGN0eC5PLnRl eHQNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0 eC5OVkFjY2Vzc0ZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGdWZnJFcnJvckhh bmRsZS5IYW5kbGVXYXJuaW5nKA0KPiANCj4gKw0KPiBFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJf V0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ08NCj4gREUsIGN0eC5OLmxpbmUsIGN0eC5O LnRleHQNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlm IGN0eC5MYXRlQ2hlY2tGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBnVmZyRXJy b3JIYW5kbGUuSGFuZGxlV2FybmluZygNCj4gDQo+ICsNCj4gRUZJX1ZGUl9XQVJOSU5HX0NPREUu VkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPDQo+IERFLCBjdHguTC5saW5lLCBj dHguTC50ZXh0DQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg cmV0dXJuIGN0eC5RSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0b3JhZ2VWYXJJZFJ1bGUxLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMShzZWxmLCBjdHg6DQo+IFZmclN5 bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFNOYW1lID0g Y3R4LlNOMS50ZXh0DQo+IA0KPiArICAgICAgICBjdHguVmFySWRTdHIgKz0gU05hbWUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIElkeCA9IHNlbGYuVHJhbnNOdW0oY3R4LkkudGV4dCkNCj4gDQo+ ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSAiWyINCj4gDQo+ICsgICAgICAgIGN0eC5WYXJJZFN0 ciArPSBjdHguSS50ZXh0DQo+IA0KPiArICAgICAgICBjdHguVmFySWRTdHIgKz0gIl0iDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBjdHguQmFzZUluZm8uVmFyU3RvcmVJZCwgUmV0dXJuQ29kZSA9 DQo+IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUlkKFNOYW1lKQ0KPiANCj4gKyAgICAgICAg aWYgY3R4LkNoZWNrRmxhZyBvciBSZXR1cm5Db2RlID09DQo+IFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVy bkNvZGUsIGN0eC5TTjEubGluZSwgY3R4LlNOMS50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICBnVmZyRGF0YVN0b3JhZ2Uu R2V0TmFtZVZhclN0b3JlSW5mbyhjdHguQmFzZUluZm8sIElkeCksDQo+IGN0eC5TTjEubGluZSwg Y3R4LlNOMS50ZXh0DQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5WYXJJZFN0cg0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RvcmFnZVZhcklkUnVsZTIu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUyKHNlbGYsIGN0eDoNCj4g VmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZFJ1bGUyQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFy U3RyID0gIiIgICMgdHlwZS5maWVsZA0KPiANCj4gKyAgICAgICAgU05hbWUgPSBjdHguU04yLnRl eHQNCj4gDQo+ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSBTTmFtZQ0KPiANCj4gKyAgICAgICAg Y3R4LkJhc2VJbmZvLlZhclN0b3JlSWQsIFJldHVybkNvZGUgPQ0KPiBnVmZyRGF0YVN0b3JhZ2Uu R2V0VmFyU3RvcmVJZChTTmFtZSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3Ig UmV0dXJuQ29kZSA9PQ0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04yLmxpbmUs IGN0eC5TTjIudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPQ0KPiBnVmZy RGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkKQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmICgNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBl ID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBvciBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJX1ZGUl9WQVJTVE9S RV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMNCj4gDQo+ICsgICAgICAgICAgICAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICBUTmFtZSwgUmV0dXJuQ29kZTIgPQ0KPiBnVmZyRGF0 YVN0b3JhZ2UuR2V0QnVmZmVyVmFyU3RvcmVEYXRhVHlwZU5hbWUoDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyU3RvcmVJZA0KPiANCj4gKyAgICAgICAgICAgICAg ICApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUy LCBjdHguU04yLmxpbmUsIGN0eC5TTjIudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFy U3RyICs9IFROYW1lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBDb3VudCA9IGxlbihjdHguRG90 KCkpDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBDb3VudCk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgY3R4LkNoZWNrRmxhZyBvciBSZXR1cm5Db2RlID09DQo+IFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjb25kID0gKFZh clN0b3JlVHlwZSAhPQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9C VUZGRVIpIGFuZCAoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgIT0N Cj4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMNCj4g DQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBSZXR1cm5Db2Rl ID0gKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0VGSVZBUlNUT1JFX1VTRV9FUlJPUg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgY29u ZA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTjIubGluZSwgY3R4LlNOMi50 ZXh0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYXJJZFN0ciArPSAiLiINCj4g DQo+ICsgICAgICAgICAgICBWYXJTdHIgKz0gIi4iDQo+IA0KPiArICAgICAgICAgICAgY3R4LlZh cklkU3RyICs9IGN0eC5hcnJheU5hbWUoaSkuU3ViU3RyDQo+IA0KPiArICAgICAgICAgICAgVmFy U3RyICs9IGN0eC5hcnJheU5hbWUoaSkuU3ViU3RyWg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgVmFyU3RvcmVUeXBlID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JF X0VGSToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkdldEVmaVZhclN0b3JlSW5mbyhjdHguQmFzZUlu Zm8pLCBjdHguU04yLmxpbmUsDQo+IGN0eC5TTjIudGV4dA0KPiANCj4gKyAgICAgICAgICAgICkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgKA0KPiANCj4gKyAgICAgICAgICAgIFZhclN0 b3JlVHlwZSA9PQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZG RVINCj4gDQo+ICsgICAgICAgICAgICBvciBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJX1ZGUl9WQVJT VE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMNCj4gDQo+ICsgICAgICAgICk6 DQo+IA0KPiArICAgICAgICAgICAgKA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUlu Zm8uSW5mby5WYXJPZmZzZXQsDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5W YXJUeXBlLA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXpl LA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uSXNCaXRWYXIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgIFJldHVybkNvZGUsDQo+IA0KPiArICAgICAgICAgICAgKSA9IGdWZnJW YXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVmFyU3RyKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTjIubGluZSwgVmFyU3RyKQ0KPiAN Cj4gKyAgICAgICAgICAgIFZhckd1aWQgPSBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlk KGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JI YW5kbGVyKGdWZnJCdWZmZXJDb25maWcuUmVnaXN0ZXIoU05hbWUsIFZhckd1aWQpLA0KPiBjdHgu U04yLmxpbmUpDQo+IA0KPiArICAgICAgICAgICAgUmV0dXJuQ29kZSA9IFZmclJldHVybkNvZGUo DQo+IA0KPiArICAgICAgICAgICAgICAgIGdWZnJCdWZmZXJDb25maWcuV3JpdGUoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAiYSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBTTmFt ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhckd1aWQsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBOb25lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZv LlZhclR5cGUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uSW5mby5W YXJPZmZzZXQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90 YWxTaXplLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5WYWx1ZSwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04yLmxpbmUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgIGdWZnJE YXRhU3RvcmFnZS5BZGRCdWZmZXJWYXJTdG9yZUZpZWxkSW5mbyhjdHguQmFzZUluZm8pLA0KPiBj dHguU04yLmxpbmUNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICByZXR1cm4gY3R4LlZhcklkU3RyDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJDb25zdGFudFZhbHVlRmllbGQu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxmLCBjdHg6DQo+ IFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0KToNCj4gDQo+ICsg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJ bnREZWNTdHlsZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJlbnRNaW5NYXhE YXRhICE9IE5vbmUgYW5kDQo+IHNlbGYuQ3VycmVudE1pbk1heERhdGEuSXNOdW1lcmljT3Bjb2Rl KCk6DQo+IA0KPiArICAgICAgICAgICAgTnVtZXJpY1FzdCA9IElmck51bWVyaWMoc2VsZi5DdXJy ZW50UXVlc3Rpb24pICAjDQo+IA0KPiArICAgICAgICAgICAgSW50RGVjU3R5bGUgPSAoDQo+IA0K PiArICAgICAgICAgICAgICAgIFRydWUgaWYgKE51bWVyaWNRc3QuR2V0TnVtZXJpY0ZsYWdzKCkg JiBFRklfSUZSX0RJU1BMQVkpID09IDAgZWxzZQ0KPiBGYWxzZQ0KPiANCj4gKyAgICAgICAgICAg ICkgICMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5UcnVlU3ltYm9sKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZCgxKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZWxpZiBjdHguRmFsc2VTeW1ib2woKSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBlbGlmIGN0eC5PbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZUxp c3QuYXBwZW5kKGludChjdHguZ2V0VGV4dCgpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVs aWYgY3R4Lk9uZXMoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3Qu YXBwZW5kKGludChjdHguZ2V0VGV4dCgpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYg Y3R4Llplcm8oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBw ZW5kKGludChjdHguZ2V0VGV4dCgpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4 LkNvbG9uKCkgIT0gW106DQo+IA0KPiArICAgICAgICAgICAgVGltZSA9IEVGSV9ISUlfVElNRSgp DQo+IA0KPiArICAgICAgICAgICAgVGltZS5Ib3VyID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVy KDApKQ0KPiANCj4gKyAgICAgICAgICAgIFRpbWUuTWludXRlID0gc2VsZi5UcmFuc051bShjdHgu TnVtYmVyKDEpKQ0KPiANCj4gKyAgICAgICAgICAgIFRpbWUuU2Vjb25kID0gc2VsZi5UcmFuc051 bShjdHguTnVtYmVyKDIpKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5k KFRpbWUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5TbGFzaCgpICE9IFtdOg0K PiANCj4gKyAgICAgICAgICAgIERhdGUgPSBFRklfSElJX0RBVEUoKQ0KPiANCj4gKyAgICAgICAg ICAgIERhdGUuWWVhciA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAg ICAgICAgICBEYXRlLk1vbnRoID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiANCj4g KyAgICAgICAgICAgIERhdGUuRGF5ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKERhdGUpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBlbGlmIGN0eC5TZW1pY29sb24oKSAhPSBbXToNCj4gDQo+ICsgICAgICAgICAg ICBSZWYgPSBFRklfSElJX1JFRigpDQo+IA0KPiArICAgICAgICAgICAgUmVmLlF1ZXN0aW9uSWQg PSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgUmVmLkZv cm1JZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgICAgICBS ZWYuRGV2aWNlUGF0aCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCj4gDQo+ICsgICAg ICAgICAgICBSZWYuRm9ybVNldEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQo+IA0K PiArICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoUmVmKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZWxpZiBjdHguU3RyaW5nVG9rZW4oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5PcGVuQnJhY2UoKSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5MaXN0VHlwZSA9IFRydWUNCj4gDQo+ICsgICAgICAgICAgICBU eXBlID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiANCj4gKyAgICAgICAgICAgIGZv ciBpIGluIHJhbmdlKDAsIGxlbihjdHguTnVtYmVyKCkpKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKGkpKSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgTmVnYXRpdmUg PSBUcnVlIGlmIGN0eC5OZWdhdGl2ZSgpICE9IE5vbmUgZWxzZSBGYWxzZQ0KPiANCj4gKyAgICAg ICAgICAgICMgVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXQgZmllbGRzIGlzIGFsd2F5cyBzZXQgdG8g VUlOVDMyIHR5cGUuDQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8u SXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKHNl bGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgVHlwZSA9IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUN Cj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf ODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gc2VsZi5UcmFuc051bShjdHgu TnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlID4gMHg4MDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdHguc3RhcnQubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiSU5UOCB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0YsIHNtYWxsIHRoYW4gLTB4ODAiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIFZhbHVlID4gMHg3RjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguc3RhcnQubGluZSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UOCB0eXBlIGNhbid0 IGJpZyB0aGFuIDB4N0YsIHNtYWxsIHRoYW4gLTB4ODAiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRp dmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSB+VmFsdWUgKyAxDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZChWYWx1ZSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfMTY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IHNlbGYuVHJhbnNO dW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0 eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZSA+IDB4ODAwMDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHguc3RhcnQubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiSU5UMTYgdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkYsIHNtYWxsIHRo YW4gLTB4ODAwMCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgVmFsdWUgPiAweDdGRkY6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4 LnN0YXJ0LmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IklOVDE2IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGLCBzbWFsbCB0aGFuIC0weDgwMDAiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg VmFsdWUgPSB+VmFsdWUgKyAxDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguVmFsdWVM aXN0LmFwcGVuZChWYWx1ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBWYWx1ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIE5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1 ZSA+IDB4ODAwMDAwMDA6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnN0YXJ0LmxpbmUsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklOVDMyIHR5cGUgY2FuJ3Qg YmlnIHRoYW4gMHg3RkZGRkZGRiwgc21hbGwgdGhhbiAtDQo+IDB4ODAwMDAwMDAiLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZh bHVlID4gMHg3RkZGRkZGRjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguc3RhcnQubGluZSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UMzIgdHlwZSBjYW4n dCBiaWcgdGhhbiAweDdGRkZGRkZGLCBzbWFsbCB0aGFuIC0NCj4gMHg4MDAwMDAwMCIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBOZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1 ZSA9IH5WYWx1ZSArIDENCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3Qu YXBwZW5kKFZhbHVlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZh bHVlID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgaWYgSW50RGVjU3R5bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYg TmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlID4g MHg4MDAwMDAwMDAwMDAwMDAwOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdGFydC5saW5lLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQ2NCB0eXBlIGNh bid0IGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRiwgc21hbGwNCj4gdGhhbiAtMHg4MDAwMDAw MDAwMDAwMDAwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBWYWx1ZSA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdHguc3RhcnQubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiSU5UNjQgdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYs IHNtYWxsDQo+IHRoYW4gLTB4ODAwMDAwMDAwMDAwMDAwMCIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBOZWdh dGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IH5WYWx1ZSArIDEN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKFZhbHVlKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDAp KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguVmFsdWVMaXN0DQo+IA0KPiAr DQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN2ZnJJbWFnZVRhZy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZySW1hZ2VUYWcoc2VsZiwg Y3R4OiBWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IElPYmogPSBJZnJJbWFnZSgpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKyAgICAgICAgSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiAr ICAgICAgICBJT2JqLlNldEltYWdlSWQoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KPiAN Cj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IElPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKElPYmouR2V0SW5mbygpKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJMb2NrZWRUYWcuDQo+IA0K PiArICAgIGRlZiB2aXNpdFZmckxvY2tlZFRhZyhzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5W ZnJMb2NrZWRUYWdDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExPYmogPSBJZnJMb2NrZWQoKQ0K PiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIExP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IExPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKExPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0VGFnLg0KPiANCj4gKyAgICBkZWYgdmlzaXRW ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0YXRUYWdDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZySW1hZ2VUYWcoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmckltYWdlVGFnKCkuTm9kZQ0KPiANCj4gKyAg ICAgICAgZWxpZiBjdHgudmZyTG9ja2VkVGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJMb2NrZWRUYWcoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0 Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmLCBjdHg6 DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBD dHggaW4gY3R4LnZmclN0YXRlbWVudFN0YXRUYWcoKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lkluc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1 cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckZvcm1EZWZpbml0aW9uLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJGb3JtRGVmaW5pdGlvbihzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5W ZnJGb3JtRGVmaW5pdGlvbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgRk9iaiA9IElmckZvcm0o KQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIEZPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAg Rm9ybUlkID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgRk9i ai5TZXRGb3JtSWQoRm9ybUlkKQ0KPiANCj4gKyAgICAgICAgRm9ybVRpdGxlID0gc2VsZi5UcmFu c051bShjdHguTnVtYmVyKDEpKQ0KPiANCj4gKyAgICAgICAgRk9iai5TZXRGb3JtVGl0bGUoRm9y bVRpdGxlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZPYmoNCj4g DQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckZvcm0oKToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArICAgICAgICBjdHguTm9k ZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShGT2JqLkdldEluZm8oKSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3Au bGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuTGFzdEZvcm1Ob2RlID0gY3R4Lk5vZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRm9ybS4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRm9ybShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5W ZnJGb3JtQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEltYWdlKCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpLk5vZGUNCj4g DQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRMb2NrZWQoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExvY2tlZCgpLk5vZGUNCj4g DQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UnVsZXMoKS5Ob2RlDQo+IA0K PiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpLk5vZGUNCj4g DQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkuTm9kZQ0KPiANCj4g KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkuTm9kZQ0K PiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25h bCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRMYWJlbCgpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50TGFiZWwo KS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50QmFubmVyKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRCYW5uZXIo KS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW52YWxp ZCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4 dGVuc2lvbigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 TW9kYWwoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UmVmcmVzaEV2 ZW50KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0 ZW1lbnRSZWZyZXNoRXZlbnQoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckZvcm1NYXBEZWZpbml0aW9uLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNl ci5WZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgRk1hcE9iaiA9 IElmckZvcm1NYXAoKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsgICAgICAgIEZvcm1NYXBNZXRob2ROdW1iZXIgPSBsZW4oY3R4Lk1hcFRpdGxlKCkpDQo+ IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIEZNYXBP YmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihGTWFw T2JqLlNldEZvcm1JZChzZWxmLlRyYW5zTnVtKGN0eC5TMS50ZXh0KSksDQo+IGN0eC5TMS5saW5l LCBjdHguUzEubGluZSkNCj4gDQo+ICsgICAgICAgIGlmIEZvcm1NYXBNZXRob2ROdW1iZXIgPT0g MDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAg ICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5l LCAiTm8NCj4gTWFwTWV0aG9kIGlzIHNldCBmb3IgRm9ybU1hcCEiDQo+IA0KPiArICAgICAgICAg ICAgKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBGb3JtTWFwTWV0aG9kTnVtYmVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRk1h cE9iai5TZXRGb3JtTWFwTWV0aG9kKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5U cmFuc051bShjdHguTnVtYmVyKGkgKyAxKSksIGN0eC5ndWlkRGVmaW5pdGlvbihpKS5HdWlkDQo+ IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgIEZvcm1NYXAgPSBGTWFwT2Jq LkdldEluZm8oKQ0KPiANCj4gKyAgICAgICAgTWV0aG9kTWFwTGlzdCA9IEZNYXBPYmouR2V0TWV0 aG9kTWFwTGlzdCgpDQo+IA0KPiArICAgICAgICBmb3IgTWV0aG9kTWFwIGluIE1ldGhvZE1hcExp c3Q6DQo+IA0KPiArICAgICAgICAgICAgIyBFeHRlbmQgSGVhZGVyIFNpemUgZm9yIE1ldGhvZE1h cExpc3QNCj4gDQo+ICsgICAgICAgICAgICBGb3JtTWFwLkhlYWRlci5MZW5ndGggKz0gc2l6ZW9m KEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IEZNYXBPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3Jt UGtnLlN0cnVjdFRvU3RyZWFtKEZvcm1NYXApDQo+IA0KPiArICAgICAgICBmb3IgTWV0aG9kTWFw IGluIE1ldGhvZE1hcExpc3Q6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUuQnVmZmVyICs9 IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKE1ldGhvZE1hcCkNCj4gDQo+ICsgICAgICAgIGZvciBD dHggaW4gY3R4LnZmckZvcm0oKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxk KGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5v ZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEltYWdlLg0KPiANCj4gKyAgICBkZWYgdmlzaXRW ZnJTdGF0ZW1lbnRJbWFnZShzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRJbWFnZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmckltYWdlVGFnKCkuTm9kZQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRMb2NrZWQu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudExvY2tlZChzZWxmLCBjdHg6DQo+IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMb2NrZWRDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJMb2NrZWRUYWcoKS5Ob2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudFJ1bGVzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnRSdWxlcyhzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0Nv bnRleHQpOg0KPiANCj4gKyAgICAgICAgUk9iaiA9IElmclJ1bGUoKQ0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFJPYmouU2V0 TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgUnVsZU5hbWUgPSBzZWxmLlRy YW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gDQo+ICsgICAgICAgIFJPYmouU2V0UnVs ZU5hbWUoUnVsZU5hbWUpDQo+IA0KPiArICAgICAgICBzZWxmLlZmclJ1bGVzREIuUmVnaXN0ZXJS dWxlKFJ1bGVOYW1lKQ0KPiANCj4gKyAgICAgICAgUk9iai5TZXRSdWxlSWQoc2VsZi5WZnJSdWxl c0RCLkdldFJ1bGVJZChSdWxlTmFtZSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0g Uk9iag0KPiANCj4gKyAgICAgICAgIyBleHByZXNzaW9uDQo+IA0KPiArICAgICAgICBjdHguTm9k ZS5FeHByZXNzaW9uID0NCj4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBr Zy5TdHJ1Y3RUb1N0cmVhbShST2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5z ZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdC4NCj4gDQo+ICsgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50U3RhdChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdGF0Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN1YlRpdGxlKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdWJUaXRs ZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRT dGF0aWNUZXh0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENyb3Nz UmVmZXJlbmNlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3ViVGl0bGUuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudFN1YlRpdGxlKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBTT2JqID0gSWZy U3VidGl0bGUoKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQo+IA0KPiArICAgICAgICBTT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgUHJvbXB0ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAg ICBTT2JqLlNldFByb21wdChQcm9tcHQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN1YnRp dGxlRmxhZ3MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFNPYmouU2V0RmxhZ3MoY3R4 LnZmclN1YnRpdGxlRmxhZ3MoKS5TdWJGbGFncykNCj4gDQo+ICsgICAgICAgICAgICBTT2JqLlNl dEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3VidGl0bGVGbGFn cygpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtn LlN0cnVjdFRvU3RyZWFtKFNPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgIyBzZXF1ZW5j ZSBxdWVzdGlvbg0KPiANCj4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50U3Vi VGl0bGVDb21wb25lbnQoKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0 eC5Ob2RlLCBDdHgpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU09iag0KPiANCj4g KyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50U3ViVGl0bGVDb21wb25lbnQoDQo+IA0KPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQNCj4gDQo+ICsgICAg KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKS5Ob2RlDQo+IA0KPiAr ICAgICAgICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkuTm9kZQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdWJ0aXRsZUZsYWdzLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdWJ0aXRsZUZsYWdzKHNlbGYsIGN0eDogVmZyU3ludGF4UGFy c2VyLlZmclN1YnRpdGxlRmxhZ3NDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBp biBjdHguc3VidGl0bGVGbGFnc0ZpZWxkKCk6DQo+IA0KPiArICAgICAgICAgICAgY3R4LlN1YkZs YWdzIHw9IEZsYWdzRmllbGRDdHguRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJu IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3N1YnRpdGxlRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZp c2l0U3VidGl0bGVGbGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlN1YnRp dGxlRmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkZsYWcgPSBzZWxmLlRyYW5zTnVtKGN0eC5O dW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkZs YWcgPSAweDAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRpY1RleHQuDQo+IA0KPiArICAg IGRlZiB2aXNpdFZmclN0YXRlbWVudFN0YXRpY1RleHQoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50U3RhdGljVGV4dENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFFJZCA9IEVGSV9R VUVTVElPTl9JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBIZWxwID0gc2VsZi5UcmFuc051bShj dHguUzEudGV4dCkNCj4gDQo+ICsgICAgICAgIFByb21wdCA9IHNlbGYuVHJhbnNOdW0oY3R4LlMy LnRleHQpDQo+IA0KPiArICAgICAgICBUeHRUd28gPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5TMyAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFR4dFR3 byA9IHNlbGYuVHJhbnNOdW0oY3R4LlMzLnRleHQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBU ZXh0RmxhZ3MgPSAwDQo+IA0KPiArICAgICAgICBGbGFnc1N0cmVhbSA9ICIiDQo+IA0KPiArICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LnN0YXRpY1RleHRGbGFnc0ZpZWxkKCkpKToN Cj4gDQo+ICsgICAgICAgICAgICBUZXh0RmxhZ3MgfD0gY3R4LnN0YXRpY1RleHRGbGFnc0ZpZWxk KGkpLkZsYWcNCj4gDQo+ICsgICAgICAgICAgICBGbGFnc1N0cmVhbSArPSBzZWxmLkV4dHJhY3RP cmlnaW5hbFRleHQoY3R4LnN0YXRpY1RleHRGbGFnc0ZpZWxkKGkpKQ0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgIT0gbGVuKGN0eC5zdGF0aWNUZXh0RmxhZ3NGaWVsZCgpKSAtIDE6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIEZsYWdzU3RyZWFtICs9ICIgfCAiDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBUZXh0RmxhZ3MgJiBFRklfSUZSX0ZMQUdfQ0FMTEJBQ0s6DQo+IA0KPiArICAgICAg ICAgICAgaWYgVHh0VHdvICE9IEVGSV9TVFJJTkdfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoDQo+IA0KPiArDQo+IEVGSV9W RlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX0FDVElPTl9XSVRIX1RFWFRfVFdPLA0KPiBjdHgu UzMubGluZSwgY3R4LlMzLnRleHQNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgIEFPYmogPSBJZnJBY3Rpb24oKQ0KPiANCj4gKyAgICAgICAgICAg IFFJZCwgXyA9IHNlbGYuVmZyUXVlc3Rpb25EQi5SZWdpc3RlclF1ZXN0aW9uKE5vbmUsIE5vbmUs IFFJZCwNCj4gZ0Zvcm1Qa2cpDQo+IA0KPiArICAgICAgICAgICAgQU9iai5TZXRMaW5lTm8oY3R4 LkYubGluZSkNCj4gDQo+ICsgICAgICAgICAgICBBT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KPiAN Cj4gKyAgICAgICAgICAgIEFPYmouU2V0SGVscChIZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIEFP YmouU2V0UHJvbXB0KFByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBBT2JqLlNldEZsYWdzU3Ry ZWFtKEZsYWdzU3RyZWFtKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKEFP YmouU2V0RmxhZ3MoVGV4dEZsYWdzKSwgY3R4LkYubGluZSkNCj4gDQo+ICsgICAgICAgICAgICBp ZiBjdHguS2V5KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgQU9iai5TZXRIYXNL ZXkoVHJ1ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgS2V5ID0gc2VsZi5UcmFuc051bShjdHgu UzQudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5Bc3NpZ25RdWVzdGlvbktleShB T2JqLCBLZXkpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEFPYmoNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTm9kZS5PcENvZGUgPSBFRklfSUZSX1RFWFRfT1AgICMNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShB T2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4 Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIFRPYmogPSBJZnJUZXh0KCkNCj4gDQo+ICsgICAgICAgICAgICBMaW5lID0gY3R4LnN0 YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgICAgICBUT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4g KyAgICAgICAgICAgIFRPYmouU2V0SGVscChIZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIFRPYmou U2V0UHJvbXB0KFByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBUeHRUd28gIT0gRUZJX1NU UklOR19JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgICAgICBUT2JqLlNldFRleHRUd28o VHh0VHdvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBUT2JqLlNldEhhc1RleHRUd28oVHJ1ZSkN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZS5EYXRhID0gVE9iag0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFRPYmouR2V0SW5m bygpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNzdGF0aWNUZXh0RmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0U3RhdGljVGV4dEZs YWdzRmllbGQoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuU3RhdGljVGV4dEZsYWdzRmll bGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguRmxhZyA9IHNlbGYuVHJhbnNOdW0oY3R4Lk4udGV4dCkNCj4gDQo+ICsgICAg ICAgICAgICBpZiBjdHguRmxhZyAhPSAwOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5O LmxpbmUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5GbGFn ID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpLlFIRmxhZw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDcm9z c1JlZmVyZW5jZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVu Y2UoDQo+IA0KPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRDcm9zc1JlZmVyZW5jZUNvbnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50 R290bygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50R290bygpLk5vZGUNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFJl c2V0QnV0dG9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbigpLk5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R290by4NCj4gDQo+ICsgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50R290byhzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRHb3RvQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBSZWZUeXBlID0gNQ0KPiANCj4gKyAgICAg ICAgRGV2UGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgUUlkID0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIEJpdE1hc2sgPSAwDQo+IA0K PiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIFI1T2JqID0g SWZyUmVmNSgpDQo+IA0KPiArICAgICAgICBSNU9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsg ICAgICAgIEdPYmogPSBSNU9iag0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LkRldmlj ZVBhdGgoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFJlZlR5cGUgPSA0DQo+IA0KPiAr ICAgICAgICAgICAgRGV2UGF0aCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ ICsgICAgICAgICAgICBGSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+IA0KPiAr ICAgICAgICAgICAgUUlkID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiANCj4gKyAg ICAgICAgICAgIFI0T2JqID0gSWZyUmVmNCgpDQo+IA0KPiArICAgICAgICAgICAgUjRPYmouU2V0 TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgUjRPYmouU2V0RGV2aWNlUGF0aChEZXZQ YXRoKQ0KPiANCj4gKyAgICAgICAgICAgIFI0T2JqLlNldEZvcm1JZChGSWQpDQo+IA0KPiArICAg ICAgICAgICAgUjRPYmouU2V0UUlkKFFJZCkNCj4gDQo+ICsgICAgICAgICAgICBHT2JqID0gUjRP YmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkZvcm1TZXRHdWlkKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBSZWZUeXBlID0gMw0KPiANCj4gKyAgICAgICAgICAgIEZJ ZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAgICBRSWQg PSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+IA0KPiArICAgICAgICAgICAgUjNPYmog PSBJZnJSZWYzKCkNCj4gDQo+ICsgICAgICAgICAgICBSM09iai5TZXRMaW5lTm8oTGluZSkNCj4g DQo+ICsgICAgICAgICAgICBSM09iai5TZXRGb3JtSWQoRklkKQ0KPiANCj4gKyAgICAgICAgICAg IFIzT2JqLlNldFFJZChRSWQpDQo+IA0KPiArICAgICAgICAgICAgR09iaiA9IFIzT2JqDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5RdWVzdGlvbigpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgRklkID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAg ICAgICAgICAgIFJlZlR5cGUgPSAyDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LlFOICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIE5hbWUgPSBjdHguUU4udGV4dA0KPiANCj4gKyAg ICAgICAgICAgICAgICBRSWQsIEJpdE1hc2ssIF8gPSBzZWxmLlZmclF1ZXN0aW9uREIuR2V0UXVl c3Rpb25JZChOYW1lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBRSWQgPT0gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELA0KPiBjdHguUU4ubGluZSkN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQgPSBz ZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+IA0KPiArICAgICAgICAgICAgUjJPYmogPSBJ ZnJSZWYyKCkNCj4gDQo+ICsgICAgICAgICAgICBSMk9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ ICsgICAgICAgICAgICBSMk9iai5TZXRGb3JtSWQoRklkKQ0KPiANCj4gKyAgICAgICAgICAgIFIy T2JqLlNldFFJZChRSWQpDQo+IA0KPiArICAgICAgICAgICAgR09iaiA9IFIyT2JqDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5OICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg UmVmVHlwZSA9IDENCj4gDQo+ICsgICAgICAgICAgICBGSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5O dW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgUk9iaiA9IElmclJlZigpDQo+IA0KPiArICAg ICAgICAgICAgUk9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBST2JqLlNl dEZvcm1JZChGSWQpDQo+IA0KPiArICAgICAgICAgICAgR09iaiA9IFJPYmoNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBHT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2Vs Zi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVf UkVGDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBSZWZUeXBlID09IDQgb3IgUmVmVHlwZSA9 PSAzOg0KPiANCj4gKyAgICAgICAgICAgIEdPYmouU2V0Rm9ybVNldElkKGN0eC5ndWlkRGVmaW5p dGlvbigpLkd1aWQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIEdPYmouU2V0RmxhZ3MoY3R4LnZmckdvdG9GbGFncygp LkdvdG9GbGFncykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5LZXkoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGluZGV4ID0gaW50KGxlbihjdHguTnVtYmVyKCkpKSAtIDEN Cj4gDQo+ICsgICAgICAgICAgICBLZXkgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoaW5kZXgp KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQXNzaWduUXVlc3Rpb25LZXkoR09iaiwgS2V5KQ0K PiANCj4gKyAgICAgICAgICAgIEdPYmouU2V0SGFzS2V5KFRydWUpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBHT2JqLlNldFNjb3BlKDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguRS5saW5lKQ0KPiANCj4gKyAgICAgICAg Y3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oR09iai5HZXRJbmZvKCkp DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckdvdG9GbGFn cy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyR290b0ZsYWdzKHNlbGYsIGN0eDogVmZyU3ludGF4 UGFyc2VyLlZmckdvdG9GbGFnc0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5nb3Rv RmxhZ3NGaWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Hb3RvRmxhZ3MgfD0gRmxhZ3NG aWVsZEN0eC5GbGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkdvdG9GbGFn cw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjZ290b0ZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdEdvdG9G bGFnc0ZpZWxkKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkdvdG9GbGFnc0ZpZWxkQ29udGV4 dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxm LlRyYW5zTnVtKGN0eC5OLnRleHQpICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gY3R4 Lk4ubGluZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkZs YWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+IA0KPiArDQo+IA0K PiArICAgICAgICByZXR1cm4gY3R4LkZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFJl c2V0QnV0dG9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihz ZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbkNvbnRl eHQpOg0KPiANCj4gKyAgICAgICAgRGVmYXVsdHN0b3JlID0gY3R4Lk4udGV4dA0KPiANCj4gKyAg ICAgICAgUkJPYmogPSBJZnJSZXNldEJ1dHRvbihEZWZhdWx0c3RvcmUpDQo+IA0KPiArICAgICAg ICBjdHguTm9kZS5EYXRhID0gUkJPYmoNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAg ICAgIFJCT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgRGVmYXVsdElkLCBSZXR1 cm5Db2RlID0gZ1ZmckRlZmF1bHRTdG9yZS5HZXREZWZhdWx0SWQoRGVmYXVsdHN0b3JlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSkNCj4g DQo+ICsgICAgICAgIFJCT2JqLlNldERlZmF1bHRJZChEZWZhdWx0SWQpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShSQk9i ai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUs IGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFF1ZXN0aW9ucy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 Qm9vbGVhblR5cGUoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGF0 ZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50RGF0ZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnROdW1lcmlj VHlwZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50TnVtZXJpY1R5cGUoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50U3RyaW5nVHlwZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50U3RyaW5nVHlwZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50T3JkZXJlZExpc3QoKS5Ob2RlDQo+IA0KPiArICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50VGltZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50VGltZSgpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UXVlc3Rp b25UYWcuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYs IGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uVGFnQ29udGV4dCk6 DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudFN0YXRUYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN0YXRUYWcoKS5Ob2RlDQo+IA0KPiArICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoKSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkuTm9k ZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudE5vU3VibWl0SWYoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE5vU3VibWl0 SWYoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmUXVl c3QoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudERpc2FibGVJZlF1ZXN0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudFJlZnJlc2goKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4 LnZmclN0YXRlbWVudFJlZnJlc2goKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3Rh dGVtZW50VmFyc3RvcmVEZXZpY2UoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5O b2RlID0gY3R4LnZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKCkuTm9kZQ0KPiANCj4gKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkuTm9kZQ0KPiANCj4g KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KCku Tm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFdhcm5pbmdJZigpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50V2Fybmlu Z0lmKCkuTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZi4NCj4gDQo+ICsgICAgZGVmIHZp c2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoDQo+IA0KPiArICAgICAgICBzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQNCj4gDQo+ ICsgICAgKToNCj4gDQo+ICsgICAgICAgIElJT2JqID0gSWZySW5jb25zaXN0ZW50SWYyKCkNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBJSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBJSU9i ai5TZXRFcnJvcihzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEZsYWdz ID0gIiINCj4gDQo+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmZsYWdz RmllbGQoKSkpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBGbGFncyArPSBzZWxmLkV4dHJhY3RP cmlnaW5hbFRleHQoY3R4LmZsYWdzRmllbGQoaSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlm IGkgIT0gbGVuKGN0eC5mbGFnc0ZpZWxkKCkpIC0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIEZsYWdzICs9ICIgfCAiDQo+IA0KPiArICAgICAgICAgICAgSUlPYmouU2V0RmxhZ3NTdHJl YW0oRmxhZ3MpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gSUlPYmoN Cj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KElJT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICgN Cj4gDQo+ICsgICAgICAgICAgICAiaW5jb25zaXN0ZW50aWYiICsgIiAiICsNCj4gc2VsZi5FeHRy YWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAg ICAgICApDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5FeHRy YWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAg ICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVu dE5vU3VibWl0SWYuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE5vU3VibWl0SWYo c2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRl eHQpOg0KPiANCj4gKyAgICAgICAgTlNJT2JqID0gSWZyTm9TdWJtaXRJZigpDQo+IA0KPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTlNJ T2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5TSU9iai5TZXRF cnJvcihzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+IA0KPiArICAgICAgICBpZiBjdHgu RkxBR1MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEZsYWdzID0gIiINCj4gDQo+ICsg ICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmZsYWdzRmllbGQoKSkpOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBGbGFncyArPSBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4 LmZsYWdzRmllbGQoaSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIGkgIT0gbGVuKGN0eC5m bGFnc0ZpZWxkKCkpIC0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEZsYWdzICs9ICIg fCAiDQo+IA0KPiArICAgICAgICAgICAgTlNJT2JqLlNldEZsYWdzU3RyZWFtKEZsYWdzKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IE5TSU9iag0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTlNJT2JqLkdldElu Zm8oKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiBzZWxmLkV4dHJh Y3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50RGlzYWJsZUlmUXVlc3QuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERpc2Fi bGVJZlF1ZXN0KA0KPiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RGlzYWJsZUlmUXVlc3RDb250ZXh0DQo+IA0KPiArICAgICk6DQo+IA0KPiArICAg ICAgICBESU9iaiA9IElmckRpc2FibGVJZigpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgRElPYmouU2V0TGluZU5vKGN0eC5z dGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERJT2JqDQo+IA0KPiAr ICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShESU9iai5H ZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAoDQo+IA0KPiAr ICAgICAgICAgICAgImRpc2FibGVpZiIgKyAiICIgKw0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRl eHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRl eHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5z ZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UmVmcmVzaC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UmVmcmVzaChzZWxmLCBjdHg6DQo+IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBS T2JqID0gSWZyUmVmcmVzaCgpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUp DQo+IA0KPiArICAgICAgICBST2JqLlNldFJlZnJlc2hJbnRlcnZhbChzZWxmLlRyYW5zTnVtKGN0 eC5OdW1iZXIoKSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gUk9iag0KPiANCj4g KyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oUk9iai5H ZXRJbmZvKCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3lu dGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlLg0KPiANCj4gKyAgICBkZWYgdmlz aXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgNCj4gDQo+ICsgICAgICAgIHNlbGYsIGN0eDog VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlQ29udGV4dA0KPiANCj4g KyAgICApOg0KPiANCj4gKyAgICAgICAgVkRPYmogPSBJZnJWYXJTdG9yZURldmljZSgpDQo+IA0K PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgVkRPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgVkRPYmou U2V0RGV2aWNlUGF0aChzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+IA0KPiArICAgICAg ICBjdHguTm9kZS5EYXRhID0gVkRPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9 IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFZET2JqLkdldEluZm8oKSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UmVm cmVzaEV2ZW50Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQo c2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50Q29u dGV4dCk6DQo+IA0KPiArICAgICAgICBSaU9iaiA9IElmclJlZnJlc2hJZCgpDQo+IA0KPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUmlP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgUmlPYmouU2V0UmVm cmVzaEV2ZW50R3JvdXRJZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IFJpT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIg PSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShSaU9iai5HZXRJbmZvKCkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFdhcm5p bmdJZi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50V2FybmluZ0lmKHNlbGYsIGN0 eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgV0lPYmogPSBJZnJXYXJuaW5nSWYoKQ0KPiANCj4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFdJT2JqLlNldExpbmVO byhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIFdJT2JqLlNldFdhcm5pbmcoc2VsZi5U cmFuc051bShjdHguTnVtYmVyKDApKSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5UaW1lb3V0KCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBXSU9iai5TZXRUaW1lT3V0KHNlbGYuVHJhbnNO dW0oY3R4Lk51bWJlcigxKSkpDQo+IA0KPiArICAgICAgICAgICAgV0lPYmouU2V0SGFzSGFzVGlt ZU91dChUcnVlKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFdJT2JqDQo+IA0KPiAr ICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShXSU9iai5H ZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5F eHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiAr ICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0K PiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFF1 ZXN0aW9uVGFnTGlzdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25U YWdMaXN0KA0KPiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UXVlc3Rpb25UYWdMaXN0Q29udGV4dA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4 LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JbnNl cnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZm clN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZy4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcoDQo+IA0KPiArICAgICAgICBz ZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZ0Nv bnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmUXVlc3QoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50R3JheU91dElmUXVlc3QoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCkuTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhbHVlKCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgpLk5vZGUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0 KCkuTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudE9wdGlv bnMoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudE9wdGlvbnMoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3Rh dGVtZW50UmVhZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50UmVhZCgpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRXcml0ZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50V3JpdGUoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVz dC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KA0KPiAN Cj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJl c3NJZlF1ZXN0Q29udGV4dA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAgICAgU0lPYmogPSBJ ZnJTdXBwcmVzc0lmKCkNCj4gDQo+ICsgICAgICAgIFNJT2JqLlNldExpbmVObyhjdHguc3RhcnQu bGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTSU9iag0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0KPiANCj4gKyAgICAgICAgICAgICJzdXBwcmVzc2lm IiArICIgIiArDQo+IHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpKQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRXhw cmVzc2lvbiA9DQo+IHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFNJT2Jq LkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwg Y3R4LnN0b3AubGluZSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQ YXJzZXIjdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZm clN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KA0KPiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmUXVlc3RDb250ZXh0DQo+IA0KPiArICAg ICk6DQo+IA0KPiArICAgICAgICBHT0lPYmogPSBJZnJHcmF5T3V0SWYoKQ0KPiANCj4gKyAgICAg ICAgR09JT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBHT0lPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICgN Cj4gDQo+ICsgICAgICAgICAgICAiZ3JheW91dGlmIiArICIgIiArDQo+IHNlbGYuRXh0cmFjdE9y aWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiANCj4gKyAgICAgICAg KQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+IHNlbGYuRXh0cmFjdE9y aWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9 IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEdPSU9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAg ICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2ZsYWdzRmllbGQuDQo+IA0KPiArICAg IGRlZiB2aXNpdEZsYWdzRmllbGQoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVs ZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBWZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nKA0KPiANCj4gKw0KPiBFRklfVkZS X1dBUk5JTkdfQ09ERS5WRlJfV0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ08NCj4gREUs IGN0eC5OLmxpbmUsIGN0eC5OLnRleHQNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICBpZiBjdHguTCAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFZmckVycm9ySGFuZGxl LkhhbmRsZVdhcm5pbmcoDQo+IA0KPiArDQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJO SU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDTw0KPiBERSwgY3R4LkwubGluZSwgY3R4LkwudGV4 dA0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RGVmYXVsdC4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGVmYXVsdChzZWxmLCBjdHg6DQo+IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dCk6DQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgSXNFeHAgPSBGYWxzZQ0K PiANCj4gKyAgICAgICAgRGVmYXVsdElkID0gRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJE DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGlmIGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIFZhbHVlTGlzdCA9IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5WYWx1ZUxp c3QNCj4gDQo+ICsgICAgICAgICAgICBWYWx1ZSA9IFZhbHVlTGlzdFswXQ0KPiANCj4gKyAgICAg ICAgICAgIFR5cGUgPSBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyZW50TWluTWF4RGF0YSAhPSBOb25lIGFuZA0KPiBz ZWxmLkN1cnJlbnRNaW5NYXhEYXRhLklzTnVtZXJpY09wY29kZSgpOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAjIGNoZWNrIGRlZmF1bHQgdmFsdWUgaXMgdmFsaWQgZm9yIE51bWVyaWMgT3Bjb2Rl DQo+IA0KPiArICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3Qp KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gVmFsdWVMaXN0W2ldDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFZhbHVlKSA9PSBpbnQ6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWYWx1ZSA8IHNlbGYuQ3VycmVudE1pbk1heERhdGEuR2V0TWluRGF0YSgpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIFZhbHVlID4gc2VsZi5DdXJyZW50TWluTWF4 RGF0YS5HZXRNYXhEYXRhKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTnVtZXJp YyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW5WYWx1ZSBhbmQNCj4gTWF4VmFsdWUu IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUiwgTGluZSwgIkRlZmF1bHQgZGF0 YQ0KPiB0eXBlIGVycm9yLiINCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAg ICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgaWYgdHlwZShWYWx1ZUxpc3RbaV0pID09IGludDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX1RJTUU6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgVmFsdWVMaXN0W2ldID0gRUZJX0hJSV9USU1FKCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVMaXN0W2ldID0gRUZJX0hJSV9EQVRF KCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX1JFRjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUxpc3RbaV0g PSBFRklfSElJX1JFRigpDQo+IA0KPiArICAgICAgICAgICAgRE9iaiA9IElmckRlZmF1bHQoVHlw ZSwgVmFsdWVMaXN0KQ0KPiANCj4gKyAgICAgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQo+ IA0KPiArDQo+IERPYmouU2V0VmFsdWVTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0 eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKSkpDQo+IA0KPiArICAgICAgICAgICAgaWYgbm90IGN0 eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgaWYgc2VsZi5Jc1N0cmluZ09wOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRE9iai5T ZXRUeXBlKEVGSV9JRlJfVFlQRV9TVFJJTkcpDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0Jp dFZhcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzMyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoc2VsZi5DdXJyUWVzdFZh ckluZm8uVmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBET2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX0JVRkZFUikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgSXNFeHAgPSBUcnVlDQo+IA0KPiAr ICAgICAgICAgICAgRE9iaiA9IElmckRlZmF1bHQyKCkNCj4gDQo+ICsgICAgICAgICAgICBET2Jq LlNldExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIERPYmouU2V0U2NvcGUoMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBjdHgudmZyU3RhdGVt ZW50VmFsdWUoKSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5v ZGUsIExpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRGVmYXVsdFN0b3JlKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBEZWZhdWx0SWQsIFJldHVybkNvZGUgPSBnVmZy RGVmYXVsdFN0b3JlLkdldERlZmF1bHRJZChjdHguU04udGV4dCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQp DQo+IA0KPiArICAgICAgICAgICAgRE9iai5TZXREZWZhdWx0SWQoRGVmYXVsdElkKQ0KPiANCj4g KyAgICAgICAgICAgIERPYmouU2V0RGVmYXVsdFN0b3JlKGN0eC5TTi50ZXh0KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgc2VsZi5DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShEZWZhdWx0SWQs IGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0 VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiANCj4gKyAg ICAgICAgICAgIFZhclN0b3JlTmFtZSwgUmV0dXJuQ29kZSA9IGdWZnJEYXRhU3RvcmFnZS5HZXRW YXJTdG9yZU5hbWUoDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZv LlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBWYXJH dWlkID0NCj4gZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlR3VpZChzZWxmLkN1cnJRZXN0VmFy SW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIFZhclN0b3JlVHlwZSA9DQo+IGdW ZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZVR5cGUoc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCkNCj4gDQo+ICsgICAgICAgICAgICBpZiAoSXNFeHAgPT0gRmFsc2UpIGFuZCAoVmFyU3Rv cmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZF Uik6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgZ1ZmckRlZmF1bHRTdG9yZS5CdWZmZXJWYXJTdG9yZUFsdENvbmZp Z0FkZCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0SWQsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8sDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVOYW1lLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIFZhckd1aWQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5D dXJyUWVzdFZhckluZm8uVmFyVHlwZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBW YWx1ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICksDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICBj dHguTm9kZS5EYXRhID0gRE9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zv cm1Qa2cuU3RydWN0VG9TdHJlYW0oRE9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICByZXR1 cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhbHVlLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYWx1ZShzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRWYWx1ZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgVk9iaiA9IElmclZhbHVl KCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBWT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAg IGN0eC5Ob2RlLkRhdGEgPSBWT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBn Rm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShWT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIGN0 eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0 YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShj dHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50T3B0aW9ucy4NCj4gDQo+ICsgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRPcHRpb25zQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50T25l T2ZPcHRpb24oKS5Ob2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudE9uZU9mT3B0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnRPbmVPZk9wdGlvbihzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRPbmVPZk9wdGlvbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlID09 IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxl cihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsIExpbmUsDQo+ICJHZXQgZGF0 YSB0eXBlIGVycm9yLiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFsdWVMaXN0ID0gY3R4LnZmckNvbnN0 YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KPiANCj4gKyAgICAgICAgVmFsdWUgPSBWYWx1ZUxp c3RbMF0NCj4gDQo+ICsgICAgICAgIFR5cGUgPSBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBl DQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJlbnRNaW5NYXhEYXRhICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgIyBzZXQgbWluL21heCB2YWx1ZSBmb3Igb25lb2Ygb3Bjb2RlDQo+IA0K PiArICAgICAgICAgICAgU3RlcCA9IHNlbGYuQ3VycmVudE1pbk1heERhdGEuR2V0U3RlcERhdGEo KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ3VycmVudE1pbk1heERhdGEuU2V0TWluTWF4U3Rl cERhdGEoVmFsdWUsIFZhbHVlLCBTdGVwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2Vs Zi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgVHlwZSA9IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8zMg0KPiANCj4gKyAgICAgICAgT09PT2JqID0gSWZyT25lT2ZP cHRpb24oVHlwZSwgVmFsdWVMaXN0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgbm90IGN0 eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCj4gDQo+ICsgICAgICAgICAgICBP T09PYmouU2V0VHlwZShUeXBlKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBPT09PYmouU2V0VHlwZShFRklfSUZSX1RZUEVfQlVGRkVSKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgT09PT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgT09PT2JqLlNl dE9wdGlvbihzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiANCj4gKw0KPiBPT09PYmou U2V0VmFsdWVTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJDb25zdGFudFZh bHVlRmllbGQoKSkpDQo+IA0KPiArDQo+IE9PT09iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJh Y3RPcmlnaW5hbFRleHQoY3R4LnZmck9uZU9mT3B0aW9uRmxhZ3MoKSkpDQo+IA0KPiArICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcihPT09PYmouU2V0RmxhZ3MoY3R4LnZmck9uZU9mT3B0aW9uRmxh Z3MoKS5MRmxhZ3MpLA0KPiBjdHguRi5saW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5FcnJvckhh bmRsZXIoDQo+IA0KPiArDQo+IHNlbGYuQ3VycmVudFF1ZXN0aW9uLlNldFFIZWFkZXJGbGFncyhj dHgudmZyT25lT2ZPcHRpb25GbGFncygpLkhGbGFncyksDQo+IGN0eC5GLmxpbmUNCj4gDQo+ICsg ICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgQXJyYXkgdHlwZSBvbmx5IGZvciBk ZWZhdWx0IHR5cGUgT25lT2ZPcHRpb24uDQo+IA0KPiArICAgICAgICBpZiAoT09PT2JqLkdldEZs YWdzKCkgJiAoRUZJX0lGUl9PUFRJT05fREVGQVVMVCB8DQo+IEVGSV9JRlJfT1BUSU9OX0RFRkFV TFRfTUZHKSkgPT0gMCBhbmQgKA0KPiANCj4gKyAgICAgICAgICAgIGN0eC52ZnJDb25zdGFudFZh bHVlRmllbGQoKS5MaXN0VHlwZQ0KPiANCj4gKyAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SLA0KPiANCj4gKyAgICAgICAgICAgICAgICBMaW5lLA0K PiANCj4gKyAgICAgICAgICAgICAgICAiRGVmYXVsdCBrZXl3b3JkIHNob3VsZCB3aXRoIGFycmF5 IHZhbHVlIHR5cGUhIiwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAjIENsZWFyIHRoZSBkZWZhdWx0IGZsYWcgaWYgdGhlIG9wdGlvbiBub3QgdXNlIGFycmF5 IHZhbHVlIGJ1dCBoYXMgZGVmYXVsdA0KPiBmbGFnLg0KPiANCj4gKyAgICAgICAgaWYgKA0KPiAN Cj4gKyAgICAgICAgICAgIChPT09PYmouR2V0RmxhZ3MoKSAmIChFRklfSUZSX09QVElPTl9ERUZB VUxUIHwNCj4gRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpKSAhPSAwDQo+IA0KPiArICAgICAg ICAgICAgYW5kIChjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuTGlzdFR5cGUgPT0gRmFsc2Up DQo+IA0KPiArICAgICAgICAgICAgYW5kIChzZWxmLklzT3JkZXJlZExpc3QpDQo+IA0KPiArICAg ICAgICApOg0KPiANCj4gKyAgICAgICAgICAgIE9PT09iai5TZXRGbGFncygNCj4gDQo+ICsgICAg ICAgICAgICAgICAgT09PT2JqLkdldEZsYWdzKCkgJiB+KEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQg fA0KPiBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRykNCj4gDQo+ICsgICAgICAgICAgICApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlk ICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgIFZhclN0b3Jl TmFtZSwgUmV0dXJuQ29kZSA9IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUoDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQNCj4gDQo+ ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUd1aWQgPQ0KPiBnVmZy RGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlkKHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3Jl SWQpDQo+IA0KPiArICAgICAgICAgICAgaWYgT09PT2JqLkdldEZsYWdzKCkgJiBFRklfSUZSX09Q VElPTl9ERUZBVUxUOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkNoZWNrRHVwbGljYXRl RGVmYXVsdFZhbHVlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRUZJX0hJSV9ERUZBVUxU X0NMQVNTX1NUQU5EQVJELCBjdHguRi5saW5lLCBjdHguRi50ZXh0DQo+IA0KPiArICAgICAgICAg ICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBnVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0 Q29uZmlnQWRkKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9ISUlfREVGQVVM VF9DTEFTU19TVEFOREFSRCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkN1 cnJRZXN0VmFySW5mbywNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZU5h bWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVHdWlkLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICApLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIE9PT09iai5HZXRGbGFncygpICYg RUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkc6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu Q2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBF RklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORywgY3R4LkYubGluZSwgY3R4LkYudGV4 dA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZ1ZmckRlZmF1bHRTdG9y ZS5CdWZmZXJWYXJTdG9yZUFsdENvbmZpZ0FkZCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORywNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mbywNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBWYXJTdG9yZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgVmFyU3RvcmVHdWlkLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFs dWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJv ckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBjdHguS04u bGluZSwgY3R4LktOLnRleHQpDQo+IA0KPiArICAgICAgICAgICAgIyDjgIBHdWlkIE9wdGlvbiBL ZXkNCj4gDQo+ICsgICAgICAgICAgICBPT09PYmouU2V0SWZyT3B0aW9uS2V5KHNlbGYuVHJhbnNO dW0oY3R4LktOLnRleHQpKQ0KPiANCj4gKyAgICAgICAgICAgIGdJZnJPcHRpb25LZXkgPSBJZnJP cHRpb25LZXkoDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuQ3VycmVudFF1ZXN0aW9uLkdl dFF1ZXN0aW9uSWQoKSwgVHlwZSwgVmFsdWUsDQo+IHNlbGYuVHJhbnNOdW0oY3R4LktOLnRleHQp DQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVl Tm9kZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgRUZJX0lGUl9HVUlEX09QLCBnSWZyT3B0aW9u S2V5LA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShnSWZyT3B0aW9uS2V5LkdldEluZm8oKSkN Cj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgZ0lmck9wdGlvbktleS5T ZXRMaW5lTm8oKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLmluc2VydENoaWxkKE5vZGUp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJJbWFnZVRhZygpOg0K PiANCj4gKyAgICAgICAgICAgIE9PT09iai5TZXRTY29wZSgxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5ULmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBjdHguTm9kZS5EYXRhID0gT09PT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZm ZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShPT09PYmouR2V0SW5mbygpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJPbmVPZk9wdGlv bkZsYWdzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJPbmVPZk9wdGlvbkZsYWdzKHNlbGYsIGN0 eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0KToNCj4gDQo+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBjdHguTEZsYWdzID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiANCj4gKyAgICAg ICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4Lm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCgpOg0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiANCj4g KyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I29uZW9mb3B0aW9uRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0T25lb2ZvcHRpb25G bGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLk9uZW9mb3B0aW9uRmxhZ3NG aWVsZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5MRmxhZyA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4g KyAgICAgICAgaWYgY3R4Lk9wdGlvbkRlZmF1bHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5MRmxhZyA9IDB4MTANCj4gDQo+ICsgICAgICAgIGlmIGN0eC5PcHRpb25EZWZhdWx0 TWZnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDIwDQo+IA0K PiArICAgICAgICBpZiBjdHguSW50ZXJhY3RpdmVGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguSEZsYWcgPSAweDA0DQo+IA0KPiArICAgICAgICBpZiBjdHguUmVzZXRSZXF1 aXJlZEZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IDB4MTAN Cj4gDQo+ICsgICAgICAgIGlmIGN0eC5SZXN0U3R5bGVGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBjdHguSEZsYWcgPSAweDIwDQo+IA0KPiArICAgICAgICBpZiBjdHguUmVjb25u ZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguSEZsYWcg PSAweDQwDQo+IA0KPiArICAgICAgICBpZiBjdHguTWFudWZhY3R1cmluZ0ZsYWcoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MjANCj4gDQo+ICsgICAgICAgIGlm IGN0eC5EZWZhdWx0RmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFn ID0gMHgxMA0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk5WQWNjZXNzRmxhZygpICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoDQo+IA0KPiAr DQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktf T1BDTw0KPiBERSwgY3R4LkEubGluZSwgY3R4LkEudGV4dA0KPiANCj4gKyAgICAgICAgICAgICkN Cj4gDQo+ICsgICAgICAgIGlmIGN0eC5MYXRlQ2hlY2tGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBnVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZygNCj4gDQo+ICsNCj4gRUZJ X1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPDQo+ IERFLCBjdHguTC5saW5lLCBjdHguTC50ZXh0DQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZywgY3R4LkxGbGFnDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRSZWFkLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZWFk KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlYWRDb250ZXh0KToN Cj4gDQo+ICsgICAgICAgIFJPYmogPSBJZnJSZWFkKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBST2JqLlNldExpbmVObyhj dHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBST2JqDQo+IA0K PiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShST2Jq LkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiBzZWxm LkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50V3JpdGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFdyaXRlKHNlbGYsIGN0 eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFdyaXRlQ29udGV4dCk6DQo+IA0KPiAr ICAgICAgICBXT2JqID0gSWZyV3JpdGUoKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFdPYmouU2V0TGluZU5vKGN0eC5zdGFy dC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFdPYmoNCj4gDQo+ICsgICAg ICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFdPYmouR2V0SW5m bygpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+IHNlbGYuRXh0cmFj dE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbkxpc3QuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdCgNCj4gDQo+ICsgICAgICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQNCj4gDQo+ICsgICAgKToNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBmb3Ig Q3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbigpOg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb24uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKA0K PiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25Db250ZXh0DQo+IA0KPiArICAgICk6DQo+IA0KPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0 aW9uVGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRRdWVzdGlvblRhZygpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYg Y3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZygpLk5v ZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3Rh dGVtZW50Qm9vbGVhblR5cGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEJvb2xl YW5UeXBlKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEJvb2xlYW5U eXBlQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiAN Cj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENoZWNrQm94KCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Q2hlY2tCb3goKS5HdWlk Tm9kZQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudENoZWNrQm94KCkuTm9kZQ0KPiANCj4gKyAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRBY3Rp b24oKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudENoZWNrQm94Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0 ZW1lbnRDaGVja0JveChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRD aGVja0JveENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgQ0JPYmogPSBJZnJDaGVja0JveCgpDQo+ IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gQ0JPYmoNCj4gDQo+ICsgICAgICAgIExpbmUg PSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgQ0JPYmouU2V0TGluZU5vKExpbmUpDQo+ IA0KPiArICAgICAgICBzZWxmLkN1cnJlbnRRdWVzdGlvbiA9IENCT2JqDQo+IA0KPiArICAgICAg ICBzZWxmLklzQ2hlY2tCb3hPcCA9IFRydWUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIENyZWF0ZSBhIEdVSUQgb3Bjb2Rl IHRvIHdyYXAgdGhlIGNoZWNrYm94IG9wY29kZSwgaWYgaXQgcmVmZXIgdG8gYml0DQo+IHZhcnN0 b3JlLg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ IA0KPiArICAgICAgICAgICAgR3VpZE9iaiA9IElmckd1aWQoMCkNCj4gDQo+ICsgICAgICAgICAg ICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZSX0JJVF9WQVJTVE9SRV9HVUlEKQ0KPiANCj4gKyAg ICAgICAgICAgIEd1aWRPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgR3Vp ZE9iai5TZXRTY29wZSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5HdWlkTm9kZS5EYXRhID0g R3VpZE9iag0KPiANCj4gKyAgICAgICAgICAgIGN0eC5HdWlkTm9kZS5CdWZmZXIgPSBnRm9ybVBr Zy5TdHJ1Y3RUb1N0cmVhbShHdWlkT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICAgICBj dHguR3VpZE5vZGUuaW5zZXJ0Q2hpbGQoY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5JbnNlcnRFbmROb2RlKGN0eC5HdWlkTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICMgY2hlY2sgZGF0YVR5cGUNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfQk9PTEVB Tg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICAjIENo ZWNrIHdoZXRoZXIgdGhlIHF1ZXN0aW9uIHJlZmVycyB0byBhIGJpdCBmaWVsZCwgaWYgeWVzLiBj cmVhdGUgYSBHdWlkDQo+IHRvIGluZGljYXRlIHRoZSBxdWVzdGlvbiByZWZlcnMgdG8gYSBiaXQg ZmllbGQuDQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRW YXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIF8sIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5 cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiANCj4gKyAgICAgICAgICAgICAgICAp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExp bmUsICJDaGVja0JveCB2YXJpZCBpcyBub3QgdGhlIHZhbGlkDQo+IGRhdGEgdHlwZSIpDQo+IA0K PiArICAgICAgICAgICAgICAgIGlmICgNCj4gDQo+ICsNCj4gZ1ZmckRhdGFTdG9yYWdlLkdldFZh clN0b3JlVHlwZShzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVf QlVGRkVSX0JJVFMNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLkN1cnJRZXN0 VmFySW5mby5WYXJUb3RhbFNpemUgIT0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgIkNoZWNrQm94IHZhcmlkIG9ubHkgb2NjdXB5IDEgYml0IGluIEJp dCBWYXJzdG9yZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBTaXplLCBSZXR1cm5D b2RlID0NCj4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZSgNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBl DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQgaXMg bm90IHRoZQ0KPiB2YWxpZCBkYXRhIHR5cGUiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgU2l6ZSAhPSAwIGFuZCBTaXplICE9IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6 ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tCb3ggdmFyaWQg ZG9lc24ndCBzdXBwb3J0IGFycmF5IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBlbGlmIGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJT dG9yZVR5cGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZh ckluZm8uVmFyU3RvcmVJZA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKSA9PSBFRklfVkZS X1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgYW5kDQo+IHNlbGYuQ3VyclFl c3RWYXJJbmZvLlZhclRvdGFsU2l6ZSAhPSBzaXplb2YoDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgY19ib29sDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja0JveCB2YXJpZCBvbmx5IHN1cHBvcnQg Qk9PTEVBTiBkYXRhIHR5cGUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArDQo+ IENCT2JqLlNldEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyQ2hl Y2tCb3hGbGFncygpKSkNCj4gDQo+ICsgICAgICAgICAgICBDQk9iai5TZXRGbGFncyhjdHgudmZy Q2hlY2tCb3hGbGFncygpLkhGbGFncywNCj4gY3R4LnZmckNoZWNrQm94RmxhZ3MoKS5MRmxhZ3Mp DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAh PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFyU3Rv cmVOYW1lLCBSZXR1cm5Db2RlID0gZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlTmFtZSgNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQN Cj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkNv bXBhcmVFcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBSZXR1cm5Db2Rl LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1MsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgY3R4LkwudGV4dCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJGYWls ZWQgdG8gcmV0cmlldmUgdmFyc3RvcmUgbmFtZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVHdWlkID0NCj4gZ1ZmckRh dGFTdG9yYWdlLkdldFZhclN0b3JlR3VpZChzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlk KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLlZhbHVlID0gVHJ1ZQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBpZiBDQk9iai5HZXRGbGFncygpICYgMHgwMToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELCBjdHguRi5s aW5lLCBjdHguRi50ZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBSZXR1cm5Db2RlID0gZ1ZmckRlZmF1bHRTdG9yZS5CdWZmZXJWYXJT dG9yZUFsdENvbmZpZ0FkZCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFRklfSElJ X0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5DdXJyUWVzdFZhckluZm8sDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFy U3RvcmVOYW1lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlR3VpZCwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJU eXBlLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuVmFsdWUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkNv bXBhcmVFcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu Q29kZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUywNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5MLnRleHQsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgIk5vIHN0YW5kYXJkIGRlZmF1bHQgc3RvcmFnZSBmb3VuZCIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIENCT2Jq LkdldEZsYWdzKCkgJiAweDAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5DaGVj a0R1cGxpY2F0ZURlZmF1bHRWYWx1ZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBF RklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORywgY3R4LkYubGluZSwgY3R4LkYudGV4 dA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgUmV0dXJuQ29kZSA9IGdWZnJEZWZhdWx0U3RvcmUuQnVmZmVyVmFyU3RvcmVBbHRDb25maWdB ZGQoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0hJSV9ERUZBVUxUX0NMQVNT X01BTlVGQUNUVVJJTkcsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DdXJy UWVzdFZhckluZm8sDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVOYW1l LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlR3VpZCwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuVmFsdWUsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkNvbXBhcmVFcnJv ckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUywNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGN0eC5MLnRleHQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgIk5vIG1hbnVmYWN0dXJpbmcgZGVmYXVsdCBzdG9yYWdlIGZvdW5kIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5LZXko KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEtleSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51 bWJlcigpKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQXNzaWduUXVlc3Rpb25LZXkoQ0JPYmos IEtleSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKENCT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9k ZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSXNDaGVja0Jv eE9wID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyQ2hlY2tCb3hGbGFncy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyQ2hlY2tC b3hGbGFncyhzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJDaGVja0JveEZsYWdzQ29u dGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAg ICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LmNoZWNrYm94RmxhZ3NGaWVsZCgpOg0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KPiANCj4g KyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I2NoZWNrYm94RmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Q2hlY2tib3hGbGFnc0Zp ZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRl eHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGlmIHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSAhPSAwOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JU RUQsDQo+IGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguRGVmYXVsdEZs YWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gY3R4LkQubGluZSwgY3R4LkQudGV4 dCkNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4Lk1hbnVmYWN0dXJpbmdGbGFnKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5NLmxpbmUsIGN0eC5NLnRleHQpDQo+IA0KPiArICAg ICAgICBlbGlmIGN0eC5DaGVja0JveERlZmF1bHRGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTEZsYWcgPSAweDAxDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5DaGVja0Jv eERlZmF1bHRNZmdGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcg PSAweDAyDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxh ZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiBjdHguSEZsYWcsIGN0eC5MRmxhZw0KPiANCj4gKw0KPiANCj4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3Rh dGVtZW50QWN0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRBY3Rpb24oc2Vs ZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4dCk6DQo+ IA0KPiArICAgICAgICBBT2JqID0gSWZyQWN0aW9uKCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBBT2JqDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiAN Cj4gKyAgICAgICAgQU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAg ICBBT2JqLlNldFF1ZXN0aW9uQ29uZmlnKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg QU9iai5TZXRGbGFncyhjdHgudmZyQWN0aW9uRmxhZ3MoKS5IRmxhZ3MpDQo+IA0KPiArICAgICAg ICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShBT2JqLkdldEluZm8o KSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3Au bGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyQWN0aW9uRmxhZ3MuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckFjdGlvbkZsYWdzKHNl bGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmckFjdGlvbkZsYWdzQ29udGV4dCk6DQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIEZsYWdz RmllbGRDdHggaW4gY3R4LmFjdGlvbkZsYWdzRmllbGQoKToNCj4gDQo+ICsgICAgICAgICAgICBj dHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IHJldHVybiBjdHguSEZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNhY3Rpb25GbGFnc0ZpZWxkLg0KPiANCj4g KyAgICBkZWYgdmlzaXRBY3Rpb25GbGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLkFjdGlvbkZsYWdzRmllbGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkg IT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBjdHguTi5saW5lKQ0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFk ZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZm clN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZS4NCj4gDQo+ICsgICAgZGVmIHZp c2l0VmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50TnVtZXJp YygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8u SXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudE51bWVyaWMoKS5HdWlkTm9kZQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE51bWVyaWMoKS5Ob2Rl DQo+IA0KPiArICAgICAgICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRPbmVPZigpICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0K PiArICAgICAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9uZU9mKCkuR3Vp ZE5vZGUNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRPbmVPZigpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQLWFyc2VyI3ZmclN0YXRlbWVudE51bWVyaWMu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE51bWVyaWMoc2VsZiwgY3R4Og0KPiBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY0NvbnRleHQpOg0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIE5PYmogPSBjdHguTm9k ZS5EYXRhDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBOT2JqLlNldExpbmVObyhjdHguc3RhcnQu bGluZSkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAg ICAgVXBkYXRlVmFyVHlwZSA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIENyZWF0 ZSBhIEdVSUQgb3Bjb2RlIHRvIHdyYXAgdGhlIG51bWVyaWMgb3Bjb2RlLCBpZiBpdCByZWZlciB0 byBiaXQNCj4gdmFyc3RvcmUuDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5m by5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICBHdWlkT2JqID0gSWZyR3VpZCgwKQ0KPiAN Cj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0R3VpZChFREtJSV9JRlJfQklUX1ZBUlNUT1JFX0dV SUQpDQo+IA0KPiArICAgICAgICAgICAgR3VpZE9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsg ICAgICAgICAgICBHdWlkT2JqLlNldFNjb3BlKDEpICAjIHBvcw0KPiANCj4gKyAgICAgICAgICAg IGN0eC5HdWlkTm9kZS5EYXRhID0gR3VpZE9iag0KPiANCj4gKyAgICAgICAgICAgIGN0eC5HdWlk Tm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShHdWlkT2JqLkdldEluZm8oKSkN Cj4gDQo+ICsgICAgICAgICAgICBjdHguR3VpZE5vZGUuaW5zZXJ0Q2hpbGQoY3R4Lk5vZGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5HdWlkTm9kZSwgY3R4LnN0 b3AubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgY2hlY2sgZGF0YSB0eXBlDQo+IA0K PiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJT VE9SRV9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJ bmZvLklzQml0VmFyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBMRmxhZ3MgPSBFREtJSV9JRlJf TlVNRVJJQ19TSVpFX0JJVCAmDQo+IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihOT2JqLlNldEZsYWdzRm9y Qml0RmllbGQoTk9iai5HZXRRRmxhZ3MoKSwNCj4gTEZsYWdzKSwgTGluZSkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBEYXRhVHlwZVNpemUsIFJldHVy bkNvZGUgPQ0KPiBnVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0K PiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJOdW1lcmljIHZhcmlkIGlzIG5vdCB0aGUgdmFs aWQNCj4gZGF0YSB0eXBlIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgRGF0YVR5cGVTaXpl ICE9IDAgYW5kIERhdGFUeXBlU2l6ZSAhPQ0KPiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUb3Rh bFNpemU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAiTnVtZXJpYyB2YXJpZCBkb2Vzbid0IHN1cHBv cnQgYXJyYXkiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIE5P YmouU2V0RmxhZ3MoTk9iai5HZXRRRmxhZ3MoKSwgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSksDQo+IExpbmUNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBVcGRhdGVW YXJUeXBlID0gY3R4LnZmck51bWVyaWNGbGFncygpLlVwZGF0ZVZhclR5cGUNCj4gDQo+ICsgICAg ICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBO T2JqLlNldEZsYWdzRm9yQml0RmllbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LnZmck51bWVyaWNGbGFncygpLkhGbGFncywNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBjdHgudmZyTnVtZXJpY0ZsYWdzKCkuTEZsYWdzLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC52ZnJOdW1lcmljRmxhZ3MoKS5Jc0Rpc3BsYXlTcGVjaWZpZWQsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICApLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4 LkYubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgTk9iai5TZXRGbGFncygNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBjdHgudmZyTnVtZXJpY0ZsYWdzKCkuSEZsYWdzLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC52ZnJOdW1lcmljRmxhZ3MoKS5MRmxhZ3MsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgY3R4LnZmck51bWVyaWNGbGFncygpLklzRGlzcGxheVNwZWNpZmll ZCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICksDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBjdHguRi5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAg ICAgICAgTk9iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZm ck51bWVyaWNGbGFncygpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5LZXkoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEtleSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJl cigpKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQXNzaWduUXVlc3Rpb25LZXkoTk9iaiwgS2V5 KQ0KPiANCj4gKyAgICAgICAgICAgIE5PYmouU2V0SGFzS2V5KFRydWUpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBOT2JqLlNldEhhc1N0ZXAoY3R4LnZmclNldE1pbk1heFN0ZXAoKS5TdGVwKCkg IT0gTm9uZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIChzZWxmLkN1cnJRZXN0VmFySW5m by5Jc0JpdFZhciA9PSBGYWxzZSkgYW5kICgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkN1cnJR ZXN0VmFySW5mby5WYXJUeXBlIG5vdCBpbiBCYXNpY1R5cGVzDQo+IA0KPiArICAgICAgICApOg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAg ICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgIExpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICJOdW1lcmljIHF1 ZXN0aW9uIG9ubHkgc3VwcG9ydCBVSU5UOCwgVUlOVDE2LCBVSU5UMzIgYW5kDQo+IFVJTlQ2NCBk YXRhIHR5cGUuIiwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAjIG1vZGlmeSB0aGUgZGF0YSBmb3IgbmFtZXZhbHVlDQo+IA0KPiArICAgICAgICBpZiBzZWxm LkN1cnJRZXN0VmFySW5mby5WYXJUeXBlICE9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4g DQo+ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgVXBkYXRlZE5PYmogPSBJZnJOdW1lcmljKEVGSV9JRlJfVFlQRV9O VU1fU0laRV8zMikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBVcGRhdGVkTk9iaiA9IElmck51bWVyaWMoc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSkNCj4gDQo+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5RTmFtZSA9IE5PYmouUU5hbWUNCj4g DQo+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5WYXJJZFN0ciA9IE5PYmouVmFySWRTdHINCj4g DQo+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5IYXNRdWVzdGlvbklkID0gTk9iai5IYXNRdWVz dGlvbklkDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE5PYmouRmxhZ3NTdHJlYW0gPSBOT2Jq LkZsYWdzU3RyZWFtDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE5PYmouSGFzS2V5ID0gTk9i ai5IYXNLZXkNCj4gDQo+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5IYXNTdGVwID0gTk9iai5I YXNTdGVwDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE5PYmouTGluZU5vID0gTk9iai5MaW5l Tm8NCj4gDQo+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5HZXRJbmZvKCkuUXVlc3Rpb24gPSBO T2JqLkdldEluZm8oKS5RdWVzdGlvbg0KPiANCj4gKyAgICAgICAgICAgIFVwZGF0ZWROT2JqLkdl dEluZm8oKS5GbGFncyA9IE5PYmouR2V0SW5mbygpLkZsYWdzDQo+IA0KPiArICAgICAgICAgICAg VXBkYXRlZE5PYmouR2V0SW5mbygpLkRhdGEuTWluVmFsdWUgPQ0KPiBOT2JqLkdldEluZm8oKS5E YXRhLk1pblZhbHVlDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE5PYmouR2V0SW5mbygpLkRh dGEuTWF4VmFsdWUgPQ0KPiBOT2JqLkdldEluZm8oKS5EYXRhLk1heFZhbHVlDQo+IA0KPiArICAg ICAgICAgICAgVXBkYXRlZE5PYmouR2V0SW5mbygpLkRhdGEuU3RlcCA9IE5PYmouR2V0SW5mbygp LkRhdGEuU3RlcA0KPiANCj4gKyAgICAgICAgICAgIE5PYmogPSBVcGRhdGVkTk9iag0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IE5PYmoNCj4gDQo+ICsgICAgICAgIGN0 eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKE5PYmouR2V0SW5mbygpKQ0K PiANCj4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5l KQ0KPiANCj4gKyAgICAgICAgc2VsZi5DdXJyZW50TWluTWF4RGF0YSA9IE5vbmUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU2V0TWluTWF4 U3RlcC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU2V0TWluTWF4U3RlcChzZWxmLCBjdHg6DQo+ IFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBJbnREZWNTdHlsZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICBPcE9iaiA9IGN0eC5Ob2RlLkRh dGENCj4gDQo+ICsgICAgICAgIGlmICgNCj4gDQo+ICsgICAgICAgICAgICAoc2VsZi5DdXJyUWVz dFZhckluZm8uSXNCaXRWYXIpDQo+IA0KPiArICAgICAgICAgICAgYW5kIChPcE9iai5HZXRPcENv ZGUoKSA9PSBFRklfSUZSX05VTUVSSUNfT1ApDQo+IA0KPiArICAgICAgICAgICAgYW5kICgoT3BP YmouR2V0TnVtZXJpY0ZsYWdzKCkgJiBFREtJSV9JRlJfRElTUExBWV9CSVQpID09IDApDQo+IA0K PiArICAgICAgICApIG9yICgNCj4gDQo+ICsgICAgICAgICAgICAoc2VsZi5DdXJyUWVzdFZhcklu Zm8uSXNCaXRWYXIgPT0gRmFsc2UpDQo+IA0KPiArICAgICAgICAgICAgYW5kIChPcE9iai5HZXRP cENvZGUoKSA9PSBFRklfSUZSX05VTUVSSUNfT1ApDQo+IA0KPiArICAgICAgICAgICAgYW5kICgo T3BPYmouR2V0TnVtZXJpY0ZsYWdzKCkgJiBFRklfSUZSX0RJU1BMQVkpID09IDApDQo+IA0KPiAr ICAgICAgICApOg0KPiANCj4gKyAgICAgICAgICAgIEludERlY1N0eWxlID0gVHJ1ZQ0KPiANCj4g KyAgICAgICAgTWluTmVnYXRpdmUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgTWF4TmVnYXRpdmUg PSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE1pbiA9IHNlbGYuVHJhbnNOdW0oY3R4LkkudGV4dCkN Cj4gDQo+ICsgICAgICAgIE1heCA9IHNlbGYuVHJhbnNOdW0oY3R4LkEudGV4dCkNCj4gDQo+ICsg ICAgICAgIFN0ZXAgPSBzZWxmLlRyYW5zTnVtKGN0eC5TLnRleHQpIGlmIGN0eC5TdGVwKCkgIT0g Tm9uZSBlbHNlIDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5OMSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIE1pbk5lZ2F0aXZlID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgSW50RGVjU3R5bGUgPT0gRmFsc2UgYW5kIE1pbk5lZ2F0aXZlID09IFRydWU6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAg ICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgY3R4LkkubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgIictJyBj YW4ndCBiZSB1c2VkIHdoZW4gbm90IGluIGludCBkZWNpbWFsIHR5cGUuIiwNCj4gDQo+ICsgICAg ICAgICAgICApDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZh cjoNCj4gDQo+ICsgICAgICAgICAgICBpZiAoSW50RGVjU3R5bGUgPT0gRmFsc2UpIGFuZCAoTWlu ID4gKDEgPDwNCj4gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplKSAtIDEpOiAgIw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5JLmxpbmUsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAiQklUIHR5cGUgbWluaW11bSBjYW4ndCBzbWFsbCB0aGFuIDAsIGJpZ2dlciB0 aGFuIDJeQml0V2lkdGggLQ0KPiAxIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIFR5cGUgPSBzZWxmLkN1 cnJRZXN0VmFySW5mby5WYXJUeXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYg SW50RGVjU3R5bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluTmVnYXRp dmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4ODAwMDAw MDAwMDAwMDAwMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguSS5saW5lLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQ2NCB0eXBlIG1pbmltdW0gY2FuJ3Qg c21hbGwgdGhhbiAtDQo+IDB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRkZG RkZGRkZGIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBNaW4gPiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LkkubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiSU5UNjQgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLQ0KPiAweDgwMDAwMDAwMDAw MDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRiIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBNaW5O ZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBNaW4gPSB+TWluICsgMQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9O VU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDgwMDAwMDAwOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC5JLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIklOVDMyIHR5cGUgbWluaW11bSBjYW4ndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAw LCBiaWcNCj4gdGhhbiAweDdGRkZGRkZGIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDdGRkZGRkZGOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC5JLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIklOVDMyIHR5cGUgbWluaW11bSBjYW4ndCBzbWFsbCB0aGFuIC0weDgwMDAw MDAwLCBiaWcNCj4gdGhhbiAweDdGRkZGRkZGIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZl Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbiA9IH5NaW4gKyAxDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzE2Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluTmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4ODAwMDoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHguSS5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJ TlQxNiB0eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBiaWcgdGhhbg0KPiAw eDdGRkYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIE1pbiA+IDB4N0ZGRjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguSS5saW5l LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQxNiB0eXBl IG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBiaWcgdGhhbg0KPiAweDdGRkYiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgTWluTmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgTWluID0gfk1pbiArIDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IGlmIEludERlY1N0eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5l Z2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDgw Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRs ZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC5JLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIklOVDggdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4g LTB4ODAsIGJpZyB0aGFuDQo+IDB4N0YiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4N0Y6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3R4LkkubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiSU5UOCB0eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4N Cj4gMHg3RiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBNaW4gPSB+TWluICsgMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg Y3R4Lk4yICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgTWF4TmVnYXRpdmUgPSBUcnVlDQo+ IA0KPiArICAgICAgICBpZiBJbnREZWNTdHlsZSA9PSBGYWxzZSBhbmQgTWF4TmVnYXRpdmUgPT0g VHJ1ZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAg ICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiANCj4gKyAgICAgICAgICAgICAgICBjdHguQS5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAiICctJyBjYW4ndCBiZSB1c2VkIHdoZW4gbm90IGluIGludCBkZWNpbWFsIHR5cGUuIiwNCj4g DQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5m by5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICBpZiAoSW50RGVjU3R5bGUgPT0gRmFsc2Up IGFuZCAoTWF4ID4gKDEgPDwNCj4gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplKSAt IDEpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5BLmxpbmUsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAiQklUIHR5cGUgbWF4aW11bSBjYW4ndCBiZSBiaWdnZXIgdGhhbiAy XkJpdFdpZHRoIC0xIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIFR5cGUgPSBzZWxmLkN1cnJRZXN0VmFy SW5mby5WYXJUeXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5 bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4ODAwMDAwMDAwMDAwMDAw MDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdHguQS5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJJTlQ2NCB0eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhh biAtDQo+IDB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGIiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBNYXggPiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEu bGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UNjQg dHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLQ0KPiAweDgwMDAwMDAwMDAwMDAwMDAsIGJp ZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSB+TWF4ICsgMQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4IDwgTWluOiAgIw0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5BLmxpbmUsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYXhpbXVtIGNhbid0IGJlIGxlc3MgdGhh biBNaW5pbXVtIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMy Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4ODAwMDAwMDA6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LkEubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi SU5UMzIgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAsIGJpZw0KPiB0 aGFuIDB4N0ZGRkZGRkYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4N0ZGRkZGRkY6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LkEubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiSU5UMzIgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAsIGJpZw0K PiB0aGFuIDB4N0ZGRkZGRkYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgTWF4ID0gfk1heCArIDENCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIGlmIE1heCA8IE1pbjogICMNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguQS5saW5lLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiTWF4aW11bSBjYW4ndCBiZSBsZXNzIHRoYW4gTWluaW11 bSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBNYXggPiAweDgwMDA6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEubGluZSwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UMTYgdHlwZSBt aW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmlnIHRoYW4NCj4gMHg3RkZGIiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNYXggPiAweDdGRkY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEubGluZSwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UMTYgdHlwZSBtaW5pbXVtIGNh bid0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmlnIHRoYW4NCj4gMHg3RkZGIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IGlmIE1heE5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5N YXggKyAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXggPCBNaW46 ICAjDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LkEubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1heGltdW0g Y2FuJ3QgYmUgbGVzcyB0aGFuIE1pbmltdW0iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZS X1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0 eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDgwOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC5BLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIklOVDggdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLTB4ODAsIGJpZyB0 aGFuDQo+IDB4N0YiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4N0Y6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEu bGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UOCB0 eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4NCj4gMHg3RiIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBNYXggPSB+TWF4ICsgMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYg TWF4IDwgTWluOiAgIw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JI YW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC5BLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJNYXhpbXVtIGNhbid0IGJlIGxlc3MgdGhhbiBNaW5pbXVtIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBPcE9iai5TZXRNaW5NYXhT dGVwRGF0YShNaW4sIE1heCwgU3RlcCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyTnVtZXJpY0ZsYWdzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJOdW1l cmljRmxhZ3Moc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyTnVtZXJpY0ZsYWdzQ29u dGV4dCk6DQo+IA0KPiArICAgICAgICAjIGNoZWNrIGRhdGEgdHlwZSBmbGFnDQo+IA0KPiArICAg ICAgICBjdHguTEZsYWdzID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAmIEVGSV9JRlJf TlVNRVJJQ19TSVpFDQo+IA0KPiArICAgICAgICBWYXJTdG9yZVR5cGUgPQ0KPiBnVmZyRGF0YVN0 b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIElzU2V0 VHlwZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4Lm51bWVyaWNGbGFn c0ZpZWxkKCk6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4 LkhGbGFnDQo+IA0KPiArICAgICAgICAgICAgY3R4LklzRGlzcGxheVNwZWNpZmllZCB8PSBGbGFn c0ZpZWxkQ3R4LklzRGlzcGxheVNwZWNpZmllZA0KPiANCj4gKyAgICAgICAgICAgIElzU2V0VHlw ZSB8PSBGbGFnc0ZpZWxkQ3R4LklzU2V0VHlwZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdz RmllbGRDdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVS SUNfU0laRSkgfA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV8xDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZVR3bygpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZh bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9IChjdHguTEZsYWdz ICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRm91 cigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJ bmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxG bGFncyA9IChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+IEVGSV9JRlJf TlVNRVJJQ19TSVpFXzQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxk Q3R4Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNf U0laRSkgfA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV84DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5SW50RGVjKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKGN0eC5MRmxhZ3MgJiB+ RUZJX0lGUl9ESVNQTEFZKSB8DQo+IEVGSV9JRlJfRElTUExBWV9JTlRfREVDDQo+IA0KPiArICAg ICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdz ID0gKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgJiB+RURLSUlf SUZSX0RJU1BMQVlfQklUDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApIHwgRURLSUlfSUZS X0RJU1BMQVlfSU5UX0RFQ19CSVQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFn c0ZpZWxkQ3R4LkRpc1BsYXlVSW50RGVjKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQ TEFZKSB8DQo+IEVGSV9JRlJfRElTUExBWV9VSU5UX0RFQw0KPiANCj4gKyAgICAgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZ X0JJVA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKSB8IEVES0lJX0lGUl9ESVNQTEFZX1VJ TlRfREVDX0JJVA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHgu RGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBzZWxm LkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwNCj4g RUZJX0lGUl9ESVNQTEFZX1VJTlRfSEVYDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgJiB+RURLSUlfSUZSX0RJU1BMQVlfQklUDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICApIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9IRVhfQklU DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBWYXJUeXBlID0gc2VsZi5DdXJyUWVzdFZhckluZm8u VmFyVHlwZQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIg PT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFy U3RvcmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgaWYgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID09DQo+IEVG SV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgb3IgVmFyU3RvcmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQ RS5FRklfVkZSX1ZBUlNUT1JFX0VGSQ0KPiANCj4gKyAgICAgICAgICAgICAgICApOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAhPSAo Y3R4LkxGbGFncyAmDQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFKToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiTnVtZXJpYyBGbGFnIGlzIG5vdCBzYW1lIHRvIE51bWVyaWMg VmFyRGF0YSB0eXBlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAjIHVwZGF0 ZSBkYXRhIHR5cGUgZm9yIG5hbWUvdmFsdWUgc3RvcmUNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPSBjdHguTEZsYWdzICYNCj4gRUZJX0lG Ul9OVU1FUklDX1NJWkUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFNpemUsIF8gPSBnVmZy VmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFl c3RWYXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIElz U2V0VHlwZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFy VHlwZSA9IGN0eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZWxpZiAoDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8u VmFyU3RvcmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgICAg IGFuZCBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcg0KPiANCj4gKyAgICAgICAgKToNCj4g DQo+ICsgICAgICAgICAgICBjdHguTEZsYWdzICY9IEVES0lJX0lGUl9ESVNQTEFZX0JJVA0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRURLSUlfSUZSX05VTUVSSUNfU0laRV9CSVQg Jg0KPiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGlmIFZhclR5cGUgIT0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZToNCj4gDQo+ ICsgICAgICAgICAgICBjdHguVXBkYXRlVmFyVHlwZSA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNudW1lcmlj RmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0TnVtZXJpY0ZsYWdzRmllbGQoc2VsZiwg Y3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0KToNCj4gDQo+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuVHJhbnNOdW0oY3R4Lk4udGV4dCkg IT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBMaW5lKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgY3R4Lk51bWVyaWNTaXplT25lKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgY3R4LklzU2V0VHlwZSA9IFRydWUNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAiQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmljIHZhbHVlIGZv ciBCSVQgZmllbGQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVUd28oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBjdHguSXNTZXRUeXBlID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICJDYW4gbm90IHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIG51bWVyaWMgdmFsdWUg Zm9yIEJJVCBmaWVsZCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICBjdHguSXNTZXRUeXBlID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICJDYW4gbm90IHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIG51bWVyaWMgdmFs dWUgZm9yIEJJVCBmaWVsZCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUVpZ2h0KCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgY3R4LklzU2V0VHlwZSA9IFRydWUNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAiQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmlj IHZhbHVlIGZvciBCSVQgZmllbGQiLA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBjdHguRGlzUGxheUludERlYygpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4LklzRGlzcGxheVNwZWNpZmllZCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC5EaXNQbGF5VUludERlYygpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgY3R4LklzRGlzcGxheVNwZWNpZmllZCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5EaXNQbGF5VUludEhleCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4LklzRGlzcGxheVNwZWNpZmllZCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlm IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0 YXRlbWVudE9uZU9mLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRPbmVPZihzZWxm LCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIFVwZGF0 ZVZhclR5cGUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgT09iaiA9IGN0eC5Ob2RlLkRhdGENCj4g DQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgaWYgc2Vs Zi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgR3VpZE9iaiA9 IElmckd1aWQoMCkNCj4gDQo+ICsgICAgICAgICAgICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZS X0JJVF9WQVJTVE9SRV9HVUlEKQ0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0TGluZU5v KGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0U2NvcGUoMSkg ICMgcG9zDQo+IA0KPiArICAgICAgICAgICAgY3R4Lkd1aWROb2RlLkRhdGEgPSBHdWlkT2JqDQo+ IA0KPiArICAgICAgICAgICAgY3R4Lkd1aWROb2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKEd1aWRPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5HdWlkTm9k ZS5pbnNlcnRDaGlsZChjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydEVu ZE5vZGUoY3R4Lkd1aWROb2RlLCBjdHguc3RvcC5saW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgIyBjaGVjayBkYXRhIHR5cGUNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJ bmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAg ICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAg ICAgICAgIExGbGFncyA9IEVES0lJX0lGUl9OVU1FUklDX1NJWkVfQklUICYNCj4gc2VsZi5DdXJy UWVzdFZhckluZm8uVmFyVG90YWxTaXplDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKE9PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZChPT2JqLkdldFFGbGFncygpLA0KPiBM RmxhZ3MpLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIERhdGFUeXBlU2l6ZSwgUmV0dXJuQ29kZSA9DQo+IGdWZnJWYXJEYXRhVHlwZURCLkdl dERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxm LkN1cnJRZXN0VmFySW5mby5WYXJUeXBlDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIk9u ZU9mIHZhcmlkIGlzIG5vdCB0aGUgdmFsaWQNCj4gZGF0YSB0eXBlIikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgaWYgRGF0YVR5cGVTaXplICE9IDAgYW5kIERhdGFUeXBlU2l6ZSAhPQ0KPiBzZWxm LkN1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAiT25l T2YgdmFyaWQgZG9lc24ndCBzdXBwb3J0IGFycmF5IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBPT2JqLlNldEZsYWdzKE9PYmouR2V0UUZsYWdzKCksIHNlbGYu Q3VyclFlc3RWYXJJbmZvLlZhclR5cGUpLA0KPiBMaW5lDQo+IA0KPiArICAgICAgICAgICAgICAg ICkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgVXBkYXRlVmFyVHlwZSA9IGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5VcGRhdGVWYXJU eXBlDQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgT09iai5TZXRGbGFnc0ZvckJpdEZpZWxkKA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5IRmxhZ3MsIGN0eC52ZnJP bmVvZkZsYWdzRmllbGQoKS5MRmxhZ3MNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICksDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguRi5saW5lLA0KPiANCj4gKyAgICAgICAgICAg ICAgICApDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBPT2JqLlNldEZs YWdzKGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5IRmxhZ3MsDQo+IGN0eC52ZnJPbmVvZkZsYWdz RmllbGQoKS5MRmxhZ3MpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkYubGluZSwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgKHNl bGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlKSBhbmQgKA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgbm90IGluIEJhc2ljVHlwZXMNCj4g DQo+ICsgICAgICAgICk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ IA0KPiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgIk9uZU9mIHF1ZXN0aW9uIG9ubHkgc3VwcG9ydCBVSU5UOCwgVUlOVDE2LCBVSU5UMzIg YW5kIFVJTlQ2NA0KPiBkYXRhIHR5cGUuIiwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAjIG1vZGlmeSB0aGUgZGF0YSBWYXJ0eXBlIGZvciBOYW1lVmFsdWUN Cj4gDQo+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgIT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RW YXJJbmZvLklzQml0VmFyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBVcGRhdGVkT09iaiA9IElm ck9uZU9mKEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICBVcGRhdGVkT09iaiA9IElmck9uZU9mKHNlbGYuQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUpDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE9PYmouUU5h bWUgPSBPT2JqLlFOYW1lDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE9PYmouVmFySWRTdHIg PSBPT2JqLlZhcklkU3RyDQo+IA0KPiArICAgICAgICAgICAgVXBkYXRlZE9PYmouSGFzUXVlc3Rp b25JZCA9IE9PYmouSGFzUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgICAgIFVwZGF0ZWRPT2Jq LkdldEluZm8oKS5RdWVzdGlvbiA9IE9PYmouR2V0SW5mbygpLlF1ZXN0aW9uDQo+IA0KPiArICAg ICAgICAgICAgVXBkYXRlZE9PYmouR2V0SW5mbygpLkZsYWdzID0gT09iai5HZXRJbmZvKCkuRmxh Z3MNCj4gDQo+ICsgICAgICAgICAgICBVcGRhdGVkT09iai5HZXRJbmZvKCkuRGF0YS5NaW5WYWx1 ZSA9DQo+IE9PYmouR2V0SW5mbygpLkRhdGEuTWluVmFsdWUNCj4gDQo+ICsgICAgICAgICAgICBV cGRhdGVkT09iai5HZXRJbmZvKCkuRGF0YS5NYXhWYWx1ZSA9DQo+IE9PYmouR2V0SW5mbygpLkRh dGEuTWF4VmFsdWUNCj4gDQo+ICsgICAgICAgICAgICBVcGRhdGVkT09iai5HZXRJbmZvKCkuRGF0 YS5TdGVwID0gT09iai5HZXRJbmZvKCkuRGF0YS5TdGVwDQo+IA0KPiArICAgICAgICAgICAgT09i aiA9IFVwZGF0ZWRPT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBPT2JqLlNldExpbmVObyhj dHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ IA0KPiArDQo+IE9PYmouU2V0RmxhZ3NTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0 eC52ZnJPbmVvZkZsYWdzRmllbGQoKSkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgu dmZyU2V0TWluTWF4U3RlcCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgT09iai5TZXRI YXNNaW5NYXgoVHJ1ZSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHgudmZyU2V0TWluTWF4U3Rl cCgpLlN0ZXAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBPT2JqLlNldEhhc1N0 ZXAoVHJ1ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPT2JqDQo+ IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShP T2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9k ZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuQ3VycmVudE1pbk1heERhdGEg PSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3Zmck9uZW9mRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyT25lb2ZGbGFn c0ZpZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NGaWVsZENv bnRleHQpOg0KPiANCj4gKyAgICAgICAgY3R4LkxGbGFncyA9IHNlbGYuQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVU eXBlID0NCj4gZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShzZWxmLkN1cnJRZXN0VmFy SW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ IA0KPiArICAgICAgICBJc1NldFR5cGUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4 IGluIGN0eC5udW1lcmljRmxhZ3NGaWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxh Z3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiANCj4gKyAgICAgICAgICAgIElzU2V0VHlwZSB8 PSBGbGFnc0ZpZWxkQ3R4LklzU2V0VHlwZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdzRmll bGRDdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNf U0laRSkgfA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV8xDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZVR3bygpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9IChjdHguTEZsYWdzICYg fkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRm91cigp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZv LklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFn cyA9IChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+IEVGSV9JRlJfTlVN RVJJQ19TSVpFXzQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4 Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBz ZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0la RSkgfA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV84DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5SW50RGVjKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKGN0eC5MRmxhZ3MgJiB+RUZJ X0lGUl9ESVNQTEFZKSB8DQo+IEVGSV9JRlJfRElTUExBWV9JTlRfREVDDQo+IA0KPiArICAgICAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0g KA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgJiB+RURLSUlfSUZS X0RJU1BMQVlfQklUDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApIHwgRURLSUlfSUZSX0RJ U1BMQVlfSU5UX0RFQ19CSVQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0Zp ZWxkQ3R4LkRpc1BsYXlVSW50RGVjKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQTEFZ KSB8DQo+IEVGSV9JRlJfRElTUExBWV9VSU5UX0RFQw0KPiANCj4gKyAgICAgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICgNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJ VA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKSB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRf REVDX0JJVA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlz UGxheVVJbnRIZXgoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLkN1 cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwNCj4gRUZJ X0lGUl9ESVNQTEFZX1VJTlRfSEVYDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC5MRmxhZ3MgJiB+RURLSUlfSUZSX0RJU1BMQVlfQklUDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICApIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9IRVhfQklUDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBWYXJUeXBlID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFy VHlwZQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0g RmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID09DQo+IEVGSV9W RlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgb3IgVmFyU3RvcmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5F RklfVkZSX1ZBUlNUT1JFX0VGSQ0KPiANCj4gKyAgICAgICAgICAgICAgICApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAhPSAoY3R4 LkxGbGFncyAmDQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiTnVtZXJpYyBGbGFnIGlzIG5vdCBzYW1lIHRvIE51bWVyaWMgVmFy RGF0YSB0eXBlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAg ICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBk YXRhIHR5cGUgZm9yIG5hbWUvdmFsdWUgc3RvcmUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPSBjdHguTEZsYWdzICYNCj4gRUZJX0lGUl9O VU1FUklDX1NJWkUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFNpemUsIF8gPSBnVmZyVmFy RGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RW YXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIElzU2V0 VHlwZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSA9IGN0eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZWxpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9S RV9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgJj0gRURLSUlfSUZS X0RJU1BMQVlfQklUDQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBFREtJSV9JRlJf TlVNRVJJQ19TSVpFX0JJVCAmDQo+IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgVmFyVHlwZSAhPSBzZWxmLkN1cnJRZXN0VmFySW5m by5WYXJUeXBlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5VcGRhdGVWYXJUeXBlID0gVHJ1ZQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0cmluZ1R5cGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZm clN0YXRlbWVudFN0cmluZ1R5cGUoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50U3RyaW5nVHlwZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRQYXNzd29yZCgpICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UGFz c3dvcmQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRTdHJpbmco KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dFN0cmluZygpLk5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyU3RhdGVtZW50U3RyaW5nLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRT dHJpbmcoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RyaW5nQ29u dGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLklzU3RyaW5nT3AgPSBUcnVlDQo+IA0KPiArICAg ICAgICBTT2JqID0gSWZyU3RyaW5nKCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBT T2JqDQo+IA0KPiArICAgICAgICBTT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuQ3VycmVudFF1ZXN0aW9uID0gU09iag0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlm IGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgSEZsYWdzID0gY3R4LnZm clN0cmluZ0ZsYWdzRmllbGQoKS5IRmxhZ3MNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBj dHgudmZyU3RyaW5nRmxhZ3NGaWVsZCgpLkxGbGFncw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKFNPYmouU2V0RmxhZ3MoSEZsYWdzLCBMRmxhZ3MpLCBjdHguRi5saW5lKQ0K PiANCj4gKyAgICAgICAgICAgIFNPYmouU2V0RmxhZ3NTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdHJpbmdGbGFnc0ZpZWxkKCkpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgS2V5ID0gc2VsZi5U cmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQXNzaWduUXVl c3Rpb25LZXkoU09iaiwgS2V5KQ0KPiANCj4gKyAgICAgICAgICAgIFNPYmouU2V0SGFzS2V5KFRy dWUpDQo+IA0KPiArICAgICAgICAgICAgU3RyaW5nTWluU2l6ZSA9IHNlbGYuVHJhbnNOdW0oY3R4 Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgICAgICBTdHJpbmdNYXhTaXplID0gc2VsZi5UcmFu c051bShjdHguTnVtYmVyKDIpKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBTdHJpbmdNaW5TaXplID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4g KyAgICAgICAgICAgIFN0cmluZ01heFNpemUgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMSkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBWYXJBcnJheVNpemUgPSBzZWxmLkdldEN1ckFycmF5 U2l6ZSgpDQo+IA0KPiArICAgICAgICBpZiBTdHJpbmdNaW5TaXplID4gMHhGRjoNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAg ICAgICAgICBjdHguTWluLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICJTdHJpbmcgTWlu U2l6ZSB0YWtlcyBvbmx5IG9uZSBieXRlLCB3aGljaCBjYW4ndCBiZSBsYXJnZXIgdGhhbg0KPiAw eEZGLiIsDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgaWYgVmFyQXJyYXlT aXplICE9IDAgYW5kIFN0cmluZ01pblNpemUgPiBWYXJBcnJheVNpemU6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgY3R4Lk1pbi5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAiU3RyaW5nIE1pblNpemUg Y2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBudW1iZXIgb2YgZWxlbWVudHMgaW4NCj4gc3Ry aW5nIGFycmF5LiIsDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgU09iai5T ZXRNaW5TaXplKFN0cmluZ01pblNpemUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBTdHJp bmdNYXhTaXplID4gMHhGRjoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigN Cj4gDQo+ICsgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURf UEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTWF4LmxpbmUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICJTdHJpbmcgTWF4U2l6ZSB0YWtlcyBvbmx5IG9uZSBieXRlLCB3aGlj aCBjYW4ndCBiZSBsYXJnZXIgdGhhbg0KPiAweEZGLiIsDQo+IA0KPiArICAgICAgICAgICAgKQ0K PiANCj4gKyAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgU3RyaW5nTWF4U2l6ZSA+ IFZhckFycmF5U2l6ZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4g DQo+ICsgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTWF4LmxpbmUsDQo+IA0KPiArICAg ICAgICAgICAgICAgICJTdHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4 IG51bWJlciBvZiBlbGVtZW50cyBpbg0KPiBzdHJpbmcgYXJyYXkuIiwNCj4gDQo+ICsgICAgICAg ICAgICApDQo+IA0KPiArICAgICAgICBlbGlmIFN0cmluZ01heFNpemUgPCBTdHJpbmdNaW5TaXpl Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAg ICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0K PiArICAgICAgICAgICAgICAgIGN0eC5NYXgubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg IlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxlc3MgdGhhbiBTdHJpbmcgTWluU2l6ZS4iLA0KPiAN Cj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgIFNPYmouU2V0TWF4U2l6ZShTdHJpbmdN YXhTaXplKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Q a2cuU3RydWN0VG9TdHJlYW0oU09iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBzZWxmLklu c2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBzZWxmLklzU3RyaW5nT3AgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdHJpbmdGbGFnc0ZpZWxkLg0KPiANCj4gKyAg ICBkZWYgdmlzaXRWZnJTdHJpbmdGbGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLlZmclN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgu c3RyaW5nRmxhZ3NGaWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxh Z3NGaWVsZEN0eC5IRmxhZw0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NG aWVsZEN0eC5MRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3Ms IGN0eC5MRmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3N0cmluZ0ZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFN0cmluZ0ZsYWdzRmllbGQoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuU3RyaW5n RmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSAhPSAwOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgZWxp ZiBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+ IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDEN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWcsIGN0eC5MRmxhZw0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyU3RhdGVtZW50UGFzc3dvcmQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0 YXRlbWVudFBhc3N3b3JkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFBhc3N3b3JkQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBQT2JqID0gSWZyUGFzc3dvcmQoKQ0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFBPYmoNCj4gDQo+ICsgICAgICAgIFBPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5DdXJyZW50UXVl c3Rpb24gPSBQT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgS2V5ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuQXNzaWduUXVlc3Rpb25LZXkoUE9iaiwgS2V5KQ0KPiANCj4gKyAg ICAgICAgICAgIFBhc3NXb3JkTWluU2l6ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkN Cj4gDQo+ICsgICAgICAgICAgICBQYXNzd29yZE1heFNpemUgPSBzZWxmLlRyYW5zTnVtKGN0eC5O dW1iZXIoMikpDQo+IA0KPiArICAgICAgICAgICAgUE9iai5TZXRIYXNLZXkoVHJ1ZSkNCj4gDQo+ ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgUGFzc1dvcmRNaW5TaXplID0gc2Vs Zi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgIFBhc3N3b3JkTWF4 U2l6ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgSEZsYWdzID0g Y3R4LnZmclBhc3N3b3JkRmxhZ3NGaWVsZCgpLkhGbGFncw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKFBPYmouU2V0RmxhZ3MoSEZsYWdzKSwgY3R4LkYubGluZSkNCj4gDQo+ ICsNCj4gUE9iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZm clBhc3N3b3JkRmxhZ3NGaWVsZCgpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZhckFycmF5 U2l6ZSA9IHNlbGYuR2V0Q3VyQXJyYXlTaXplKCkNCj4gDQo+ICsgICAgICAgIGlmIFBhc3NXb3Jk TWluU2l6ZSA+IDB4RkY6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ IA0KPiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk1pbi5saW5lLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAiU3RyaW5nIE1pblNpemUgdGFrZXMgb25seSBvbmUgYnl0ZSwgd2hpY2gg Y2FuJ3QgYmUgbGFyZ2VyIHRoYW4NCj4gMHhGRi4iLA0KPiANCj4gKyAgICAgICAgICAgICkNCj4g DQo+ICsgICAgICAgIGlmIFZhckFycmF5U2l6ZSAhPSAwIGFuZCBQYXNzV29yZE1pblNpemUgPiBW YXJBcnJheVNpemU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0K PiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk1pbi5saW5lLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAiU3RyaW5nIE1pblNpemUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBu dW1iZXIgb2YgZWxlbWVudHMgaW4NCj4gc3RyaW5nIGFycmF5LiIsDQo+IA0KPiArICAgICAgICAg ICAgKQ0KPiANCj4gKyAgICAgICAgUE9iai5TZXRNaW5TaXplKFBhc3NXb3JkTWluU2l6ZSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFBhc3N3b3JkTWF4U2l6ZSA+IDB4RkY6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgY3R4Lk1heC5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAiU3RyaW5nIE1h eFNpemUgdGFrZXMgb25seSBvbmUgYnl0ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4NCj4g MHhGRi4iLA0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgIGVsaWYgVmFyQXJy YXlTaXplICE9IDAgYW5kIFBhc3N3b3JkTWF4U2l6ZSA+IFZhckFycmF5U2l6ZToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAg ICAgICAgICBjdHguTWF4LmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICJTdHJpbmcgTWF4 U2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbg0K PiBzdHJpbmcgYXJyYXkuIiwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICBl bGlmIFBhc3N3b3JkTWF4U2l6ZSA8IFBhc3NXb3JkTWluU2l6ZToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICBj dHguTWF4LmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICJTdHJpbmcgTWF4U2l6ZSBjYW4n dCBiZSBsZXNzIHRoYW4gU3RyaW5nIE1pblNpemUuIiwNCj4gDQo+ICsgICAgICAgICAgICApDQo+ IA0KPiArICAgICAgICBQT2JqLlNldE1heFNpemUoUGFzc3dvcmRNYXhTaXplKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o UE9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5v ZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmclBhc3N3b3JkRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZp c2l0VmZyUGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZm clBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5wYXNz d29yZEZsYWdzRmllbGQoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdz RmllbGRDdHguSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdz DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNwYXNzd29yZEZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFBh c3N3b3JkRmxhZ3NGaWVsZChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5QYXNzd29yZEZs YWdzRmllbGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1VOU1VQUE9SVEVELA0KPiBjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkhGbGFnID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZCgpLlFIRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZw0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyU3RhdGVtZW50T3JkZXJlZExpc3QuDQo+IA0KPiArICAgIGRlZiB2aXNp dFZmclN0YXRlbWVudE9yZGVyZWRMaXN0KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudE9yZGVyZWRMaXN0Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBPTE9iaiA9IElm ck9yZGVyZWRMaXN0KCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPTE9iag0KPiAN Cj4gKyAgICAgICAgT0xPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5DdXJyZW50UXVlc3Rpb24gPSBPTE9iag0KPiANCj4gKyAgICAgICAgc2VsZi5Jc09y ZGVyZWRMaXN0ID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZhckFycmF5U2l6ZSA9IHNlbGYuR2V0 Q3VyQXJyYXlTaXplKCkNCj4gDQo+ICsgICAgICAgIGlmIFZhckFycmF5U2l6ZSA+IDB4RkY6DQo+ IA0KPiArICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycygweEZGKQ0KPiANCj4gKyAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBPTE9iai5TZXRNYXhDb250YWluZXJzKFZh ckFycmF5U2l6ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5NYXhDb250YWluZXJz KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBNYXhDb250YWluZXJzID0gc2VsZi5UcmFu c051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICAgICAgaWYgTWF4Q29udGFpbmVycyA+ IDB4RkY6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4Lk0ubGluZSwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICJPcmRlcmVkTGlzdCBNYXhDb250YWluZXJzIHRha2VzIG9ubHkg b25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlDQo+IGxhcmdlciB0aGFuIDB4RkYuIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgVmFyQXJyYXlTaXplICE9 IDAgYW5kIE1heENvbnRhaW5lcnMgPiBWYXJBcnJheVNpemU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgY3R4Lk0ubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJPcmRlcmVk TGlzdCBNYXhDb250YWluZXJzIGNhbid0IGJlIGxhcmdlciB0aGFuIHRoZSBtYXggbnVtYmVyDQo+ IG9mIGVsZW1lbnRzIGluIGFycmF5LiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ ICsgICAgICAgICAgICBPTE9iai5TZXRNYXhDb250YWluZXJzKE1heENvbnRhaW5lcnMpDQo+IA0K PiArICAgICAgICAgICAgT0xPYmouU2V0SGFzTWF4Q29udGFpbmVycyhUcnVlKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBIRmxhZ3MgPSBjdHgudmZyT3JkZXJlZExpc3RGbGFncygpLkhGbGFncw0KPiANCj4gKyAgICAg ICAgICAgIExGbGFncyA9IGN0eC52ZnJPcmRlcmVkTGlzdEZsYWdzKCkuTEZsYWdzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoT0xPYmouU2V0RmxhZ3MoSEZsYWdzLCBMRmxh Z3MpLCBjdHguRi5saW5lKQ0KPiANCj4gKw0KPiBPTE9iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4 dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmck9yZGVyZWRMaXN0RmxhZ3MoKSkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShP TE9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5v ZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArICAgICAgICBzZWxmLklzT3JkZXJlZExpc3QgPSBG YWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJPcmRlcmVkTGlzdEZsYWdzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJPcmRlcmVkTGlz dEZsYWdzKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmck9yZGVyZWRMaXN0RmxhZ3ND b250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgub3JkZXJlZGxpc3RGbGFn c0ZpZWxkKCk6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4 LkhGbGFnDQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkxG bGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFncywgY3R4LkxGbGFn cw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjb3JkZXJlZGxpc3RGbGFnc0ZpZWxkLg0KPiANCj4gKyAgICBkZWYgdmlz aXRPcmRlcmVkbGlzdEZsYWdzRmllbGQoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuT3Jk ZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpICE9 IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAg ICAgICBlbGlmIGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5R SEZsYWcNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LlVuaVF1ZUZsYWcoKSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDENCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4 Lk5vRW1wdHlGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAw eDAyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnLCBjdHguTEZsYWcN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERhdGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0 YXRlbWVudERhdGUoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGF0 ZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgRE9iaiA9IElmckRhdGUoKQ0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IERPYmoNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KPiANCj4gKyAgICAgICAgRE9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAg IHNlbGYuVmFsdWUgPSBjdHguVmFsDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclF1ZXN0aW9uSGVhZGVyKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJU eXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5D dXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfREFURQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgIERPYmouU2V0RmxhZ3NTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52 ZnJEYXRlRmxhZ3MoKSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNU SU9OX0ZMQUdfREVGQVVMVCwNCj4gY3R4LnZmckRhdGVGbGFncygpLkxGbGFncyksDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBjdHguRjEubGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBZZWFy ID0gc2VsZi5UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDApKQ0KPiANCj4gKyAgICAgICAg ICAgIFllYXIgKz0gIi4iDQo+IA0KPiArICAgICAgICAgICAgWWVhciArPSBzZWxmLlRyYW5zSWQo Y3R4LlN0cmluZ0lkZW50aWZpZXIoMSkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgRE9i ai5ZZWFyID0gWWVhcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIE1vbnRoID0gc2VsZi5U cmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDIpKQ0KPiANCj4gKyAgICAgICAgICAgIE1vbnRo ICs9ICIuIg0KPiANCj4gKyAgICAgICAgICAgIE1vbnRoICs9IHNlbGYuVHJhbnNJZChjdHguU3Ry aW5nSWRlbnRpZmllcigzKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBET2JqLk1vbnRo ID0gTW9udGgNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBEYXkgPSBzZWxmLlRyYW5zSWQo Y3R4LlN0cmluZ0lkZW50aWZpZXIoNCkpDQo+IA0KPiArICAgICAgICAgICAgRGF5ICs9ICIuIg0K PiANCj4gKyAgICAgICAgICAgIERheSArPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZp ZXIoNSkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgRE9iai5EYXkgPSBEYXkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBET2JqLlNldEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4 dChjdHgudmZyRGF0ZUZsYWdzKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9y SGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIERPYmouU2V0RmxhZ3MoRUZJX0lG Ul9RVUVTVElPTl9GTEFHX0RFRkFVTFQsDQo+IGN0eC52ZnJEYXRlRmxhZ3MoKS5MRmxhZ3MpLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkYyLmxpbmUsDQo+IA0KPiArICAgICAgICAg ICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBRSWQsIF8gPSBzZWxmLlZmclF1 ZXN0aW9uREIuUmVnaXN0ZXJPbGREYXRlUXVlc3Rpb24oDQo+IA0KPiArICAgICAgICAgICAgICAg IFllYXIsIE1vbnRoLCBEYXksIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBnRm9ybVBrZw0KPiAN Cj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBET2JqLlNldFF1ZXN0aW9uSWQo UUlkKQ0KPiANCj4gKyAgICAgICAgICAgIERPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElPTl9G TEFHX0RFRkFVTFQsDQo+IFFGX0RBVEVfU1RPUkFHRV9USU1FKQ0KPiANCj4gKyAgICAgICAgICAg IERPYmouU2V0UHJvbXB0KHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+IA0KPiArICAg ICAgICAgICAgRE9iai5TZXRIZWxwKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgRGVmYXVsdE9iaiA9IElmckRlZmF1bHQoDQo+IA0KPiAr ICAgICAgICAgICAgICAgIEVGSV9JRlJfVFlQRV9EQVRFLCBbY3R4LlZhbF0sIEVGSV9ISUlfREVG QVVMVF9DTEFTU19TVEFOREFSRCwNCj4gRUZJX0lGUl9UWVBFX0RBVEUNCj4gDQo+ICsgICAgICAg ICAgICApDQo+IA0KPiArICAgICAgICAgICAgRGVmYXVsdE9iai5TZXRMaW5lTm8oTGluZSkNCj4g DQo+ICsgICAgICAgICAgICBEZWZhdWx0Tm9kZSA9IElmclRyZWVOb2RlKA0KPiANCj4gKyAgICAg ICAgICAgICAgICBFRklfSUZSX0RFRkFVTFRfT1AsIERlZmF1bHRPYmosDQo+IGdGb3JtUGtnLlN0 cnVjdFRvU3RyZWFtKERlZmF1bHRPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgICAgICkN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZS5pbnNlcnRDaGlsZChEZWZhdWx0Tm9kZSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKERPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWYoKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2Vy dENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUo Y3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI21pbk1heERhdGVTdGVwRGVmYXVsdC4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTWluaW11 bSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEuTWluID0gTWluaW11bQ0KPiANCj4gKyAgICAgICAgTWF4aW11bSA9IHNlbGYuVHJhbnNO dW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEuTWF4ID0gTWF4 aW11bQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LlN0ZXAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgIGN0eC5Ob2RlLkRhdGEuU3RlcCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkN Cj4gDQo+ICsgICAgICAgIGlmIGN0eC5EZWZhdWx0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkRh dGUuWWVhciA9IHNlbGYuVHJhbnNOdW0oY3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgY3R4Lk5vZGUuRGF0YS5EX1llYXIgPSBjdHguRGF0ZS5ZZWFyDQo+IA0KPiArICAgICAgICAg ICAgICAgIGlmIGN0eC5EYXRlLlllYXIgPCBNaW5pbXVtIG9yIGN0eC5EYXRlLlllYXIgPiBNYXhp bXVtOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5OLmxpbmUs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIlllYXIgZGVmYXVsdCB2YWx1ZSBtdXN0 IGJlIGJldHdlZW4gTWluIHllYXIgYW5kIE1heCB5ZWFyLiIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LktleVZhbHVlID09IDE6DQo+IA0K PiArICAgICAgICAgICAgICAgIGN0eC5EYXRlLk1vbnRoID0gc2VsZi5UcmFuc051bShjdHguTi50 ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTm9kZS5EYXRhLkRfTW9udGggPSBjdHgu RGF0ZS5Nb250aA0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBjdHguRGF0ZS5Nb250aCA8IDEg b3IgY3R4LkRhdGUuTW9udGggPiAxMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBjdHguRC5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICJNb250 aCBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW4gMSBhbmQgTWF4IDEyLiIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LktleVZh bHVlID09IDI6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5EYXRlLkRheSA9IHNlbGYuVHJh bnNOdW0oY3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YS5E X0RheSA9IGN0eC5EYXRlLkRheQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBjdHguRGF0ZS5E YXkgPCAxIG9yIGN0eC5EYXRlLkRheSA+IDMxOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC5ELmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg IkRheSBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW4gMSBhbmQgTWF4IDMxLiIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckRhdGVGbGFncy4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VmZyRGF0ZUZsYWdzKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmckRhdGVG bGFnc0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5kYXRlRmxhZ3NG aWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5M RmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZ3MNCj4gDQo+ICsN Cj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI2RhdGVGbGFnc0ZpZWxkLg0KPiANCj4gKyAgICBkZWYgdmlzaXREYXRlRmxhZ3NGaWVsZChz ZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5EYXRlRmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9 IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LlllYXJT dXBwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAw eDAxDQo+IA0KPiArICAgICAgICBpZiBjdHguTW9udGhTdXBwcmVzc0ZsYWcoKSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDINCj4gDQo+ICsgICAgICAgIGlmIGN0 eC5EYXlTdXBwcmVzc0ZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxh ZyA9IDB4MDQNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlTm9ybWFsRmxhZygpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMA0KPiANCj4gKyAgICAgICAg aWYgY3R4LlN0b3JhZ2VUaW1lRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4 LkxGbGFnID0gMHgwMTANCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlV2FrZVVwRmxhZygp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 VGltZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50VGltZShzZWxmLCBjdHg6DQo+ IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRUaW1lQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBUT2JqID0gSWZyVGltZSgpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gVE9iag0K PiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBUT2Jq LlNldExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5WYWx1ZSA9IGN0eC5WYWwNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBjdHgudmZyUXVlc3Rpb25IZWFkZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVS Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlID09 IEVGSV9JRlJfVFlQRV9USU1FDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LkZM QUdTKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgVE9iai5TZXRGbGFnc1N0cmVh bShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclRpbWVGbGFncygpKSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBUT2JqLlNldEZsYWdzKEVGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxULA0KPiBjdHgu dmZyVGltZUZsYWdzKCkuTEZsYWdzKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5G MS5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgIEhvdXIgPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZp ZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgSG91ciArPSAiLiINCj4gDQo+ICsgICAgICAgICAg ICBIb3VyICs9IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigxKSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBUT2JqLlNldEhvdXIoSG91cikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBNaW51dGUgPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMikp DQo+IA0KPiArICAgICAgICAgICAgTWludXRlICs9ICIuIg0KPiANCj4gKyAgICAgICAgICAgIE1p bnV0ZSArPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgVE9iai5TZXRNaW51dGUoTWludXRlKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIFNlY29uZCA9IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcig0 KSkNCj4gDQo+ICsgICAgICAgICAgICBTZWNvbmQgKz0gIi4iDQo+IA0KPiArICAgICAgICAgICAg U2Vjb25kICs9IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcig1KSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBUT2JqLlNldFNlY29uZChTZWNvbmQpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgVE9iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZm clRpbWVGbGFncygpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIo DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBUT2JqLlNldEZsYWdzKEVGSV9JRlJfUVVFU1RJ T05fRkxBR19ERUZBVUxULA0KPiBjdHgudmZyVGltZUZsYWdzKCkuTEZsYWdzKSwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIGN0eC5GMi5saW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgUUlkLCBfID0gc2VsZi5WZnJRdWVzdGlvbkRC LlJlZ2lzdGVyT2xkVGltZVF1ZXN0aW9uKA0KPiANCj4gKyAgICAgICAgICAgICAgICBIb3VyLCBN aW51dGUsIFNlY29uZCwgRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIGdGb3JtUGtnDQo+IA0KPiAr ICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIFRPYmouU2V0UXVlc3Rpb25JZChRSWQp DQo+IA0KPiArICAgICAgICAgICAgVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdf REVGQVVMVCwNCj4gUUZfVElNRV9TVE9SQUdFX1RJTUUpDQo+IA0KPiArICAgICAgICAgICAgVE9i ai5TZXRQcm9tcHQoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKSkNCj4gDQo+ICsgICAgICAg ICAgICBUT2JqLlNldEhlbHAoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBEZWZhdWx0T2JqID0gSWZyRGVmYXVsdCgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgRUZJX0lGUl9UWVBFX1RJTUUsIFtjdHguVmFsXSwgRUZJX0hJSV9ERUZBVUxU X0NMQVNTX1NUQU5EQVJELA0KPiBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4gKyAgICAgICAgICAg ICkNCj4gDQo+ICsgICAgICAgICAgICBEZWZhdWx0T2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4g KyAgICAgICAgICAgIERlZmF1bHROb2RlID0gSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAg ICAgICAgIEVGSV9JRlJfREVGQVVMVF9PUCwgRGVmYXVsdE9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0 VG9TdHJlYW0oRGVmYXVsdE9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLmluc2VydENoaWxkKERlZmF1bHROb2RlKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJl YW0oVE9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0 ZW1lbnRJbmNvbnNpc3RlbnRJZigpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSW5zZXJ0Q2hp bGQoY3R4Lk5vZGUsIEN0eCkNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHgu Tm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjbWluTWF4VGltZVN0ZXBEZWZhdWx0Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRNaW5N YXhUaW1lU3RlcERlZmF1bHQoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuTWluTWF4VGlt ZVN0ZXBEZWZhdWx0Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhLk1pbiA9 IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRh dGEuTWF4ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiANCj4gKyAgICAgICAgaWYg Y3R4LlN0ZXAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkRhdGEuU3Rl cCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5E ZWZhdWx0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0g MDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlRpbWUuSG91ciA9IHNlbGYuVHJhbnNOdW0o Y3R4Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKSAtIDEpKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBjdHguTm9kZS5EYXRhLkRfSG91ciA9IGN0eC5UaW1lLkhvdXINCj4gDQo+ICsgICAgICAgICAg ICAgICAgaWYgY3R4LlRpbWUuSG91ciA+IDIzOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC5OLmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg IkhvdXIgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjMuIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUg PT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlRpbWUuTWludXRlID0gc2VsZi5UcmFu c051bShjdHguTnVtYmVyKGxlbihjdHguTnVtYmVyKCkpIC0NCj4gMSkpDQo+IA0KPiArICAgICAg ICAgICAgICAgIGN0eC5Ob2RlLkRhdGEuRF9NaW51dGUgPSBjdHguVGltZS5NaW51dGUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgaWYgY3R4LlRpbWUuTWludXRlID4gNTk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lk4ubGluZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAiTWludXRlIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k IDU5LiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAg aWYgY3R4LktleVZhbHVlID09IDI6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5UaW1lLlNl Y29uZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKSAtDQo+IDEp KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTm9kZS5EYXRhLkRfU2Vjb25kID0gY3R4LlRp bWUuU2Vjb25kDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIGN0eC5UaW1lLlNlY29uZCA+IDU5 Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURf UEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5OLmxpbmUsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIlNlY29uZCBkZWZhdWx0IHZhbHVlIG11c3Qg YmUgYmV0d2VlbiAwIGFuZCA1OS4iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0K PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJUaW1lRmxhZ3MuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclRpbWVGbGFncyhzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5WZnJUaW1lRmxhZ3NDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgRmxhZ3NG aWVsZEN0eCBpbiBjdHgudGltZUZsYWdzRmllbGQoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu TEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJl dHVybiBjdHguTEZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0aW1lRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VGltZUZsYWdzRmllbGQoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVGltZUZs YWdzRmllbGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTEZsYWcgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5Ib3VyU3VwcHByZXNzRmxhZygpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk1pbnV0 ZVN1cHByZXNzRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0g MHgwMg0KPiANCj4gKyAgICAgICAgaWYgY3R4LlNlY29uZFN1cHByZXNzRmxhZygpICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwNA0KPiANCj4gKyAgICAgICAgaWYg Y3R4LlN0b3JhZ2VOb3JtYWxGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu TEZsYWcgPSAweDAwDQo+IA0KPiArICAgICAgICBpZiBjdHguU3RvcmFnZVRpbWVGbGFnKCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDEwDQo+IA0KPiArICAgICAg ICBpZiBjdHguU3RvcmFnZVdha2VVcEZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGN0eC5MRmxhZyA9IDB4MjANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTEZs YWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudENvbmRpdGlvbmFsLg0KPiANCj4gKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnREaXNh YmxlSWZTdGF0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZm clN0YXRlbWVudFN1cHByZXNzSWZTdGF0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCgpLk5vZGUNCj4gDQo+ICsg ICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KCku Tm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3Rh dCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0KCkuTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldy4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcoDQo+IA0KPiAr ICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25h bE5ld0NvbnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0 YXQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KA0KPiAN Cj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXRDb250ZXh0DQo+IA0KPiArICAgICk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXROZXcoKS5Ob2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmU3RhdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoKS5Ob2RlDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRMaXN0Lg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRT dGF0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 UXVlc3Rpb25zKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENvbmRp dGlvbmFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRDb25kaXRpb25hbCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnRMYWJlbCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50TGFiZWwoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50RXh0ZW5zaW9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50SW52YWxpZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdExpc3RPbGQuDQo+IA0KPiArICAg IGRlZiB2aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0T2xkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVu dERpc2FibGVJZlN0YXQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERpc2FibGVJ ZlN0YXQoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlm U3RhdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgRElPYmogPSBJZnJEaXNhYmxlSWYoKQ0KPiAN Cj4gKyAgICAgICAgRElPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IERJT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIg PSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShESU9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAg ICBjdHguTm9kZS5Db25kaXRpb24gPSAoDQo+IA0KPiArICAgICAgICAgICAgImRpc2FibGVpZiIg KyAiICIgKw0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJl c3Npb24oKSkNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJl c3Npb24gPQ0KPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJl c3Npb24oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpOg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gDQo+ICsgICAgICAg IHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXROZXcuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0TmV3KA0KPiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0DQo+IA0KPiArICAgICk6DQo+IA0K PiArICAgICAgICBTSU9iaiA9IElmclN1cHByZXNzSWYoKQ0KPiANCj4gKyAgICAgICAgU0lPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IFNJT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShTSU9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5Db25kaXRp b24gPSAoDQo+IA0KPiArICAgICAgICAgICAgInN1cHByZXNzaWYiICsgIiAiICsNCj4gc2VsZi5F eHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiAr ICAgICAgICApDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5F eHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIEN0eCBp biBjdHgudmZyU3RhdGVtZW50U3RhdExpc3QoKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklu c2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5v ZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1 cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoDQo+IA0K PiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0 SWZTdGF0TmV3Q29udGV4dA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAgICAgR09JT2JqID0g SWZyR3JheU91dElmKCkNCj4gDQo+ICsgICAgICAgIEdPSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0 LmxpbmUpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gR09JT2JqDQo+IA0KPiArICAg ICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShHT0lPYmouR2V0 SW5mbygpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0KPiANCj4gKyAg ICAgICAgICAgICJncmF5b3V0aWYiICsgIiAiICsNCj4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0 KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICApDQo+IA0KPiAr ICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0 KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50 U3RhdExpc3QoKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2Rl LCBDdHgpDQo+IA0KPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5z dG9wLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3lu dGF4UGFyc2VyI3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdC4NCj4gDQo+ICsgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KA0KPiANCj4gKyAgICAgICAgc2Vs ZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29u dGV4dA0KPiANCj4gKyAgICApOg0KPiANCj4gKyAgICAgICAgSUlPYmogPSBJZnJJbmNvbnNpc3Rl bnRJZigpDQo+IA0KPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAg SUlPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIElJT2JqLlNldEVycm9yKHNlbGYuVHJhbnNO dW0oY3R4Lk51bWJlcigpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBJSU9iag0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o SUlPYmouR2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0K PiANCj4gKyAgICAgICAgICAgICJpbmNvbnNpc3RlbnRpZiIgKyAiICIgKw0KPiBzZWxmLkV4dHJh Y3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAg ICAgICkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiBzZWxmLkV4dHJh Y3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 SW52YWxpZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW52YWxpZChzZWxmLCBj dHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCk6DQo+IA0K PiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2Vy I3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudEludmFsaWRIaWRkZW4oc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50SW52YWxpZEhpZGRlbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50 b3J5Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5KA0K PiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52 YWxpZEludmVudG9yeUNvbnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHJldHVy biBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50SW52 YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVu dEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKA0KPiANCj4gKyAgICAgICAgc2VsZiwgY3R4OiBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHNDb250 ZXh0DQo+IA0KPiArICAgICk6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudExhYmVsLg0KPiANCj4gKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRMYWJlbChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRMYWJlbENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTE9iaiA9IElmckxhYmVsKCkN Cj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBM T2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIExPYmouU2V0TnVt YmVyKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBMT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5T dHJ1Y3RUb1N0cmVhbShMT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZXguQk9iam50QmFubmVyLg0KPiANCj4gKyAg ICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRCYW5uZXIoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgQk9iaiA9IElmckJhbm5lcigpDQo+IA0KPiAr ICAgICAgICBCT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIEJP YmouU2V0VGl0bGUoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC5MaW5lKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBCT2Jq LlNldExpbmUoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKSkNCj4gDQo+ICsgICAgICAgICAg ICBpZiBjdHguTGVmdCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5Ob2Rl LkRpY3RbImFsaWduIl0gPSBLVigibGVmdCIsIDApDQo+IA0KPiArICAgICAgICAgICAgICAgIEJP YmouU2V0QWxpZ24oMCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguQ2VudGVyKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUuRGljdFsiYWxpZ24iXSA9IEtWKCJj ZW50ZXIiLCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBCT2JqLlNldEFsaWduKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgY3R4LlJpZ2h0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgY3R4Lk5vZGUuRGljdFsiYWxpZ24iXSA9IEtWKCJyaWdodCIsIDIpDQo+IA0KPiArICAg ICAgICAgICAgICAgIEJPYmouU2V0QWxpZ24oMikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0 eC5Ob2RlLkRhdGEgPSBCT2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9y bVBrZy5TdHJ1Y3RUb1N0cmVhbShCT2JqLkdldEluZm8oKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5UaW1lb3V0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBUT2JqID0g SWZyVGltZW91dCgpDQo+IA0KPiArICAgICAgICAgICAgVE9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0 LmxpbmUpDQo+IA0KPiArICAgICAgICAgICAgVE9iai5TZXRUaW1lb3V0KHNlbGYuVHJhbnNOdW0o Y3R4Lk51bWJlcigyKSkpDQo+IA0KPiArICAgICAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfR1VJRF9PUCwgVE9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oVE9iai5HZXRJ bmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLmluc2VydENoaWxkKE5vZGUpDQo+ IA0KPiArICAgICAgICAgICAgQk9iai5TZXRIYXNUaW1lT3V0KFRydWUpDQo+IA0KPiArICAgICAg ICAgICAgQk9iai5TZXRUaW1lT3V0KHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRl bWVudEV4dGVuc2lvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RXh0ZW5zaW9u KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRl eHQpOg0KPiANCj4gKyAgICAgICAgY3R4LklzU3RydWN0ID0gRmFsc2UNCj4gDQo+ICsgICAgICAg IGlmIGN0eC5EYXRhVHlwZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LlVp bnQ2NCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICJV SU5UNjQiDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBjdHguVWludDMyKCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgY3R4LlR5cGVOYW1lID0gIlVJTlQzMiINCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIGN0eC5VaW50MTYoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBjdHguVHlwZU5hbWUgPSAiVUlOVDE2Ig0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgY3R4LlVp bnQ4KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlR5cGVOYW1lID0gIlVJ TlQ4Ig0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgY3R4LkJvb2xlYW4oKSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAiQk9PTEVBTiINCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIGN0eC5FRklfU1RSSU5HX0lEKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgY3R4LlR5cGVOYW1lID0gIkVGSV9TVFJJTkdfSUQiDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiBjdHguRUZJX0hJSV9EQVRFKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgY3R4LlR5cGVOYW1lID0gIkVGSV9ISUlfREFURSINCj4gDQo+ICsgICAgICAgICAgICAgICAg Y3R4LklzU3RydWN0ID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgY3R4LkVGSV9ISUlf VElNRSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICJF RklfSElJX1RJTUUiDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIGN0eC5FRklfSElJX1JFRigpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICJFRklfSElJX1JFRiINCj4gDQo+ICsg ICAgICAgICAgICAgICAgY3R4LklzU3RydWN0ID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9IHNlbGYuVHJhbnNJZChj dHguU3RyaW5nSWRlbnRpZmllcigpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguSXNTdHJ1 Y3QgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgY3R4LkFycmF5TnVtID0gc2VsZi5UcmFuc051 bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICAgICAgY3R4LlR5cGVTaXplLCBSZXR1cm5D b2RlID0NCj4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShjdHgu VHlwZU5hbWUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29k ZSwgY3R4LkQubGluZSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguU2l6ZSA9IGN0eC5UeXBlU2l6 ZSAqIGN0eC5BcnJheU51bSBpZiBjdHguQXJyYXlOdW0gPiAwIGVsc2UNCj4gY3R4LlR5cGVTaXpl DQo+IA0KPiArICAgICAgICAgICAgY3R4LkJ1ZmZlciA9IGJ5dGVhcnJheShjdHguU2l6ZSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIEd1aWRPYmogPSBJZnJF eHRlbnNpb25HdWlkKGN0eC5TaXplLCBjdHguVHlwZU5hbWUsIGN0eC5BcnJheU51bSkNCj4gDQo+ ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckV4dGVuc2lvbkRhdGEoKToNCj4gDQo+ICsgICAg ICAgICAgICBHdWlkT2JqLlNldEZpZWxkTGlzdChDdHguRk5hbWUsIEN0eC5URlZhbHVlKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgR3VpZE9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAg ICAgIEd1aWRPYmouU2V0R3VpZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiANCj4gKyAg ICAgICAgaWYgY3R4LlR5cGVOYW1lICE9ICIiOg0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmou U2V0RGF0YShjdHguQnVmZmVyKQ0KPiANCj4gKyAgICAgICAgR3VpZE9iai5TZXRTY29wZSgxKQ0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEd1aWRPYmoNCj4gDQo+ICsgICAgICAgIGN0 eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEd1aWRPYmouR2V0SW5mbygp KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LkRhdGFUeXBlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBCdWZmZXIgPSBieXRlYXJyYXkoY3R4LlNpemUpDQo+IA0KPiArICAgICAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEJ1ZmZlcikpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBC dWZmZXJbaV0gPSBjdHguQnVmZmVyW2ldDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUuQnVm ZmVyICs9IEJ1ZmZlcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZy U3RhdGVtZW50RXh0ZW5zaW9uKCk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JbnNlcnRDaGls ZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmRO b2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJFeHRlbnNpb25EYXRhLg0KPiANCj4gKyAgICBkZWYgdmlzaXRW ZnJFeHRlbnNpb25EYXRhKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lv bkRhdGFDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIElzQXJyYXkgPSBGYWxzZSBpZiBjdHguSSA9 PSBOb25lIGVsc2UgVHJ1ZQ0KPiANCj4gKyAgICAgICAgaWYgSXNBcnJheToNCj4gDQo+ICsgICAg ICAgICAgICBJbmRleCA9IHNlbGYuVHJhbnNOdW0oY3R4LkkudGV4dCkNCj4gDQo+ICsgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgSW5kZXggPSAwDQo+IA0KPiArICAgICAgICBJc1N0 cnVjdCA9IGN0eC5wYXJlbnRDdHguSXNTdHJ1Y3QNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHguVEZWYWx1ZSA9IHNlbGYuVHJhbnNOdW0o Y3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgIERhdGEgPSBzZWxmLlRyYW5zTnVtKGN0eC5OLnRl eHQpDQo+IA0KPiArICAgICAgICBpZiBJc0FycmF5Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5G TmFtZSArPSAiZGF0YSIgKyAiWyIgKyBjdHguSS50ZXh0ICsgIl0iDQo+IA0KPiArICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5GTmFtZSArPSAiZGF0YSINCj4gDQo+ICsgICAg ICAgIGN0eC5URk5hbWUgPSBjdHgucGFyZW50Q3R4LlR5cGVOYW1lDQo+IA0KPiArICAgICAgICBp ZiBJc1N0cnVjdDoNCj4gDQo+ICsgICAgICAgICAgICBjdHguVEZOYW1lICs9IGN0eC5wYXJlbnRD dHguVHlwZU5hbWUNCj4gDQo+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4 LmFycmF5TmFtZSgpKSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5URk5hbWUgKz0gIi4i DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5URk5hbWUgKz0gY3R4LmFycmF5TmFtZShpKS5T dWJTdHJaDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5GTmFtZSArPSAiLiINCj4gDQo+ICsg ICAgICAgICAgICAgICAgY3R4LkZOYW1lICs9IGN0eC5hcnJheU5hbWUoaSkuU3ViU3RyWg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgQnVmZmVyID0gY3R4LnBhcmVudEN0eC5CdWZmZXINCj4gDQo+ ICsgICAgICAgIEZpZWxkT2Zmc2V0LCBGaWVsZFR5cGUsIEZpZWxkU2l6ZSwgQml0RmllbGQsIF8g PQ0KPiBnVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhRmllbGRJbmZvKA0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5URk5hbWUNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIEJ5dGVPZmZz ZXQgPSBjdHgucGFyZW50Q3R4LlR5cGVTaXplICogSW5kZXgNCj4gDQo+ICsgICAgICAgIGlmIG5v dCBCaXRGaWVsZDoNCj4gDQo+ICsgICAgICAgICAgICBPZmZzZXQgPSBCeXRlT2Zmc2V0ICsgRmll bGRPZmZzZXQNCj4gDQo+ICsgICAgICAgICAgICBCdWZmZXJbT2Zmc2V0IDogT2Zmc2V0ICsgRmll bGRTaXplXSA9IGN0eC5URlZhbHVlLnRvX2J5dGVzKEZpZWxkU2l6ZSwNCj4gImxpdHRsZSIpDQo+ IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIE1hc2sgPSAoMSA8PCBGaWVs ZFNpemUpIC0gMQ0KPiANCj4gKyAgICAgICAgICAgIE9mZnNldCA9IEZpZWxkT2Zmc2V0IC8vIDgN Cj4gDQo+ICsgICAgICAgICAgICBQcmVCaXRzID0gRmllbGRPZmZzZXQgJSA4DQo+IA0KPiArICAg ICAgICAgICAgTWFzayA8PD0gUHJlQml0cw0KPiANCj4gKyAgICAgICAgICAgIFZhbHVlID0gaW50 LmZyb21fYnl0ZXMoDQo+IA0KPiArICAgICAgICAgICAgICAgIEJ1ZmZlcltCeXRlT2Zmc2V0ICsg T2Zmc2V0IDogQnl0ZU9mZnNldCArIE9mZnNldCArIEZpZWxkU2l6ZV0sICJsaXR0bGUiDQo+IA0K PiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIERhdGEgPDw9IFByZUJpdHMNCj4g DQo+ICsgICAgICAgICAgICBWYWx1ZSA9IChWYWx1ZSAmICh+TWFzaykpIHwgRGF0YQ0KPiANCj4g KyAgICAgICAgICAgIEJ1ZmZlcltCeXRlT2Zmc2V0ICsgT2Zmc2V0IDogQnl0ZU9mZnNldCArIE9m ZnNldCArIEZpZWxkU2l6ZV0gPQ0KPiBWYWx1ZS50b19ieXRlcygNCj4gDQo+ICsgICAgICAgICAg ICAgICAgRmllbGRTaXplLCAibGl0dGxlIg0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBCdWZmZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE1v ZGFsLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRNb2RhbChzZWxmLCBjdHg6DQo+ IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQpOg0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4 LnZmck1vZGFsVGFnKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJNb2RhbFRhZy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyTW9kYWxUYWcoc2Vs ZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250ZXh0KToNCj4gDQo+ICsgICAg ICAgIE1PYmogPSBJZnJNb2RhbCgpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiANCj4gKyAgICAgICAgTU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0K PiArICAgICAgICBjdHguTm9kZS5EYXRhID0gTU9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUu QnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTU9iai5HZXRJbmZvKCkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IFNhdmVPcEhkckNvbmQoc2VsZiwgT3BIZHIsIENvbmQsIExpbmVObz0wKToNCj4gDQo+ICsgICAg ICAgIGlmIENvbmQgPT0gVHJ1ZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLklmck9wSGRy W3NlbGYuSWZyT3BIZHJJbmRleF0gIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JZnJPcEhkcltzZWxmLklmck9wSGRySW5kZXhd ID0gT3BIZHINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklmck9wSGRyTGluZU5vW3NlbGYuSWZy T3BIZHJJbmRleF0gPSBMaW5lTm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEluaXRPcEhkckNv bmQoc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLklmck9wSGRyLmFwcGVuZChOb25lKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5JZnJPcEhkckxpbmVOby5hcHBlbmQoMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIFNldFNhdmVkT3BIZHJTY29wZShzZWxmKToNCj4gDQo+ICsgICAgICAgIGlmIHNl bGYuSWZyT3BIZHJbc2VsZi5JZnJPcEhkckluZGV4XSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuSWZyT3BIZHJbc2VsZi5JZnJPcEhkckluZGV4XS5TY29wZSA9IDENCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIEZhbHNlDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBDbGVhclNhdmVkT1BIZHIoc2VsZik6DQo+IA0KPiArICAgICAg ICBzZWxmLklmck9wSGRyW3NlbGYuSWZyT3BIZHJJbmRleF0gPSBOb25lDQo+IA0KPiArDQo+IA0K PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRF eHByZXNzaW9uKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25Db250ZXh0KToNCj4gDQo+ICsgICAgICAgICMgUm9vdCBleHByZXNzaW9uIGV4dGVuc2lv biBmdW5jdGlvbiBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb24uICMjDQo+IA0KPiArICAgICAgICBp ZiBjdHguRXhwSW5mby5Sb290TGV2ZWwgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklm ck9wSGRySW5kZXggKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuSWZyT3BIZHJJbmRl eCA+PSBNQVhfSUZSX0VYUFJFU1NJT05fREVQVEg6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LnN0YXJ0LmxpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAiVGhlIGRlcHRo IG9mIGV4cHJlc3Npb24gZXhjZWVkcyB0aGUgbWF4IHN1cHBvcnRlZCBsZXZlbCA4ISIsDQo+IA0K PiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkluaXRPcEhkckNv bmQoKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguYW5kVGVybSgp KSk6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguYW5kVGVybShpKS5O b2RlcykNCj4gDQo+ICsgICAgICAgICAgICBpZiBpICE9IDA6DQo+IA0KPiArICAgICAgICAgICAg ICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBP T2JqID0gSWZyT3IoY3R4LmFuZFRlcm0oaSkuTGluZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg Tm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfT1JfT1AsIE9PYmosDQo+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKE9PYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk5v ZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgIyBFeHRlbmQgT3BDb2Rl IFNjb3BlIG9ubHkgZm9yIHRoZSByb290IGV4cHJlc3Npb24uDQo+IA0KPiArICAgICAgICBpZiBj dHguRXhwSW5mby5FeHBPcENvdW50ID4gMSBhbmQgY3R4LkV4cEluZm8uUm9vdExldmVsID09IDA6 DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5TZXRTYXZlZE9wSGRyU2NvcGUoKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgRU9iaiA9IElmckVuZCgpDQo+IA0KPiArICAgICAgICAgICAgICAg IGlmIHNlbGYuSWZyT3BIZHJMaW5lTm9bc2VsZi5JZnJPcEhkckluZGV4XSAhPSAwOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgRU9iai5TZXRMaW5lTm8oc2VsZi5JZnJPcEhkckxpbmVOb1tz ZWxmLklmck9wSGRySW5kZXhdKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgRU9iai5TZXRMaW5lTm8oY3R4LnN0b3AubGluZSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRU5EX09QLCBFT2Jq LA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShFT2JqLkdldEluZm8oKSkpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCA9PSAwOg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuQ2xlYXJTYXZlZE9QSGRyKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklmck9wSGRySW5k ZXggPSBzZWxmLklmck9wSGRySW5kZXggLSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3Ig Tm9kZSBpbiBjdHguTm9kZXM6DQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LlBhcmVudE5vZGUg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlBhcmVudE5vZGUuaW5zZXJ0Q2hp bGQoTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuQ29uc3RhbnRPbmx5SW5FeHBy ZXNzaW9uID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg Y3R4LkV4cEluZm8uUm9vdExldmVsID0gY3R4LnBhcmVudEN0eC5FeHBJbmZvLlJvb3RMZXZlbCAr IDENCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPSBjdHgucGFyZW50Q3R4 LkV4cEluZm8uRXhwT3BDb3VudA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxl bihjdHguYW5kVGVybSgpKSk6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChj dHguYW5kVGVybShpKS5Ob2RlcykNCj4gDQo+ICsgICAgICAgICAgICBpZiBpICE9IDA6DQo+IA0K PiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBPT2JqID0gSWZyT3IoY3R4LmFuZFRlcm0oaSkuTGluZSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfT1JfT1AsIE9PYmosDQo+ IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKE9PYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg Y3R4LlBhcmVudE5vZGVzLmV4dGVuZChjdHguTm9kZXMpICAjIyMjIyMNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGN0eC5wYXJlbnRDdHguRXhwSW5mby5FeHBPcENvdW50ID0gY3R4LkV4cEluZm8u RXhwT3BDb3VudA0KPiAjIyMjIyMjIyMjDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNhbmRUZXJtLg0KPiANCj4gKyAgICBkZWYgdmlzaXRBbmRU ZXJtKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0KToNCj4gDQo+ICsg ICAgICAgIGN0eC5MaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4 LmJpdHdpc2VvclRlcm0oKSkpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQo Y3R4LmJpdHdpc2VvclRlcm0oaSkuTm9kZXMpDQo+IA0KPiArICAgICAgICAgICAgaWYgaSAhPSAw Og0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4g DQo+ICsgICAgICAgICAgICAgICAgQU9iaiA9IElmckFuZChjdHguYml0d2lzZW9yVGVybShpKS5M aW5lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9B TkRfT1AsIEFPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEFPYmouR2V0SW5mbygpKSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYml0d2lzZW9yVGVybS4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0Qml0d2lzZW9yVGVybShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5C aXR3aXNlb3JUZXJtQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBjdHguTGluZSA9IGN0eC5zdGFy dC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5iaXR3aXNlYW5kVGVybSgpKSk6DQo+IA0K PiArICAgICAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguYml0d2lzZWFuZFRlcm0oaSkuTm9k ZXMpDQo+IA0KPiArICAgICAgICAgICAgaWYgaSAhPSAwOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgICAgICAgICAgQldP T2JqID0gSWZyQml0V2lzZU9yKGN0eC5iaXR3aXNlYW5kVGVybShpKS5MaW5lKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBFRklfSUZSX0JJVFdJU0VfT1JfT1AsIEJXT09iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9T dHJlYW0oQldPT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNiaXR3aXNlYW5kVGVybS4NCj4g DQo+ICsgICAgZGVmIHZpc2l0Qml0d2lzZWFuZFRlcm0oc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQ YXJzZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIGN0eC5MaW5lID0g Y3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmVxdWFsVGVybSgpKSk6DQo+ IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguZXF1YWxUZXJtKGkpLk5vZGVz KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg Y3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICAgICAgICAgIEJXQU9i aiA9IElmckJpdFdpc2VBbmQoY3R4LmVxdWFsVGVybShpKS5MaW5lKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBF RklfSUZSX0JJVFdJU0VfQU5EX09QLCBCV0FPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KEJXQU9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZXF1YWxUZXJtLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRFcXVhbFRlcm0oc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtQ29u dGV4dCk6DQo+IA0KPiArICAgICAgICBjdHguTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVz LmV4dGVuZChjdHguY29tcGFyZVRlcm0oKS5Ob2RlcykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGZvciBDaGlsZEN0eCBpbiBjdHguZXF1YWxUZXJtU3VwcGxlbWVudGFyeSgpOg0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgICAg IGN0eC5Ob2Rlcy5leHRlbmQoQ2hpbGRDdHguTm9kZXMpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNlcXVhbFRlcm1FcXVhbFJ1bGUuDQo+IA0K PiArICAgIGRlZiB2aXNpdEVxdWFsVGVybUVxdWFsUnVsZShzZWxmLCBjdHg6DQo+IFZmclN5bnRh eFBhcnNlci5FcXVhbFRlcm1FcXVhbFJ1bGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5j b21wYXJlVGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAgRU9iaiA9IElmckVxdWFsKGN0eC5z dGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRVFV QUxfT1AsIEVPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEVPYmouR2V0SW5mbygpKSkN Cj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybU5vdEVxdWFsUnVsZS4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0RXF1YWxUZXJtTm90RXF1YWxSdWxlKHNlbGYsIGN0eDoNCj4gVmZyU3lu dGF4UGFyc2VyLkVxdWFsVGVybU5vdEVxdWFsUnVsZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQo Y3R4LmNvbXBhcmVUZXJtKCkuTm9kZXMpDQo+IA0KPiArICAgICAgICBORU9iaiA9IElmck5vdEVx dWFsKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfTk9UX0VRVUFMX09QLCBORU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTkVP YmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4g DQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtLg0K PiANCj4gKyAgICBkZWYgdmlzaXRDb21wYXJlVGVybShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNl ci5Db21wYXJlVGVybUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQoY3R4LnNoaWZ0VGVybSgpLk5v ZGVzKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZm9yIENoaWxkQ3R4IGluIGN0eC5jb21wYXJl VGVybVN1cHBsZW1lbnRhcnkoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKENoaWxkQ3R4 Lk5vZGVzKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4g Kw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjY29tcGFyZVRlcm1MZXNzUnVsZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Q29tcGFyZVRl cm1MZXNzUnVsZShzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUxlc3NS dWxlQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiAN Cj4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguc2hpZnRUZXJtKCkuTm9kZXMpDQo+IA0K PiArICAgICAgICBMVE9iaiA9IElmckxlc3NUaGFuKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAg ICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfTEVTU19USEFOX09QLCBMVE9iaiwNCj4g Z0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTFRPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAg IGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g VmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZS4NCj4gDQo+ICsgICAgZGVm IHZpc2l0Q29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLkNvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQoY3R4 LnNoaWZ0VGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAgTEVPYmogPSBJZnJMZXNzRXF1YWwo Y3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lG Ul9MRVNTX0VRVUFMX09QLCBMRU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTEVPYmou R2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtR3Jl YXRlclJ1bGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUoc2Vs ZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1HcmVhdGVyUnVsZUNvbnRleHQp Og0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAg IGN0eC5Ob2Rlcy5leHRlbmQoY3R4LnNoaWZ0VGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAg R1RPYmogPSBJZnJHcmVhdGVyVGhhbihjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0dSRUFURVJfVEhBTl9PUCwgR1RPYmosDQo+IGdGb3Jt UGtnLlN0cnVjdFRvU3RyZWFtKEdUT2JqLkdldEluZm8oKSkpDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5 bnRheFBhcnNlciNjb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUuDQo+IA0KPiArICAgIGRlZiB2 aXNpdENvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZSgNCj4gDQo+ICsgICAgICAgIHNlbGYsIGN0 eDogVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZUNvbnRleHQNCj4g DQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0K PiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5zaGlmdFRlcm0oKS5Ob2RlcykNCj4gDQo+ ICsgICAgICAgIEdFT2JqID0gSWZyR3JlYXRlckVxdWFsKGN0eC5zdGFydC5saW5lKQ0KPiANCj4g KyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKA0KPiANCj4gKyAgICAgICAgICAgIEVGSV9JRlJf R1JFQVRFUl9FUVVBTF9PUCwgR0VPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEdFT2Jq LkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5h cHBlbmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3NoaWZ0VGVybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0U2hpZnRUZXJtKHNlbGYsIGN0eDogVmZy U3ludGF4UGFyc2VyLlNoaWZ0VGVybUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQoY3R4LmFkZE1p bnVzVGVybSgpLk5vZGVzKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZm9yIENoaWxkQ3R4IGlu IGN0eC5zaGlmdFRlcm1TdXBwbGVtZW50YXJ5KCk6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmV4dGVu ZChDaGlsZEN0eC5Ob2RlcykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVybUxlZnQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFNoaWZ0 VGVybUxlZnQoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtTGVmdENvbnRleHQp Og0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAg IGN0eC5Ob2Rlcy5leHRlbmQoY3R4LmFkZE1pbnVzVGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAg ICAgU0xPYmogPSBJZnJTaGlmdExlZnQoY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBO b2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9TSElGVF9MRUZUX09QLCBTTE9iaiwNCj4gZ0Zvcm1Q a2cuU3RydWN0VG9TdHJlYW0oU0xPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5O b2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3NoaWZ0VGVybVJpZ2h0Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRTaGlmdFRlcm1SaWdo dChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1SaWdodENvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5O b2Rlcy5leHRlbmQoY3R4LmFkZE1pbnVzVGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAgU1JP YmogPSBJZnJTaGlmdFJpZ2h0KGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgTm9kZSA9 IElmclRyZWVOb2RlKEVGSV9JRlJfU0hJRlRfUklHSFRfT1AsIFNST2JqLA0KPiBnRm9ybVBrZy5T dHJ1Y3RUb1N0cmVhbShTUk9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVz LmFwcGVuZChOb2RlKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjYWRkTWludXNUZXJtLg0KPiANCj4gKyAgICBkZWYgdmlzaXRBZGRNaW51c1Rlcm0oc2VsZiwg Y3R4OiBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVu ZChjdHgubXVsdGRpdm1vZFRlcm0oKS5Ob2RlcykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGZv ciBDaGlsZEN0eCBpbiBjdHguYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeSgpOg0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgICAg IGN0eC5Ob2Rlcy5leHRlbmQoQ2hpbGRDdHguTm9kZXMpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNhZGRNaW51c1Rlcm1wQWRkLg0KPiANCj4g KyAgICBkZWYgdmlzaXRBZGRNaW51c1Rlcm1wQWRkKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFy c2VyLkFkZE1pbnVzVGVybXBBZGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5tdWx0ZGl2 bW9kVGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAgQU9iaiA9IElmckFkZChjdHguc3RhcnQu bGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0FERF9PUCwg QU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oQU9iai5HZXRJbmZvKCkpKQ0KPiANCj4g KyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJtU3VidHJhY3QuDQo+IA0KPiArICAgIGRl ZiB2aXNpdEFkZE1pbnVzVGVybVN1YnRyYWN0KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2Vy LkFkZE1pbnVzVGVybVN1YnRyYWN0Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHgubXVsdGRp dm1vZFRlcm0oKS5Ob2RlcykNCj4gDQo+ICsgICAgICAgIFNPYmogPSBJZnJTdWJ0cmFjdChjdHgu c3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NV QlRSQUNUX09QLCBTT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShTT2JqLkdldEluZm8o KSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNtdWx0ZGl2bW9kVGVybS4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm0oc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIu TXVsdGRpdm1vZFRlcm1Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5jYXN0VGVybSgpLk5v ZGVzKQ0KPiANCj4gKyAgICAgICAgZm9yIENoaWxkQ3R4IGluIGN0eC5tdWx0ZGl2bW9kVGVybVN1 cHBsZW1lbnRhcnkoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50 ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKENoaWxkQ3R4Lk5vZGVz KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj bXVsdGRpdm1vZFRlcm1NdWwuDQo+IA0KPiArICAgIGRlZiB2aXNpdE11bHRkaXZtb2RUZXJtTXVs KHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtTXVsQ29udGV4dCk6 DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg Y3R4Lk5vZGVzLmV4dGVuZChjdHguY2FzdFRlcm0oKS5Ob2RlcykNCj4gDQo+ICsgICAgICAgIE1P YmogPSBJZnJNdWx0aXBseShjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJ ZnJUcmVlTm9kZShFRklfSUZSX01VTFRJUExZX09QLCBNT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShNT2JqLkdldEluZm8oKSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5k KE5vZGUpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNtdWx0 ZGl2bW9kVGVybURpdi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1EaXYoc2Vs ZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1EaXZDb250ZXh0KToNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZXMuZXh0ZW5kKGN0eC5jYXN0VGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAgRE9iaiA9 IElmckRpdmlkZShjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVl Tm9kZShFRklfSUZSX0RJVklERV9PUCwgRE9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o RE9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbXVsdGRpdm1vZFRl cm1Sb3VuZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1Nb2R1bG8oc2VsZiwg Y3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1Nb2R1bG9Db250ZXh0KToNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZXMuZXh0ZW5kKGN0eC5jYXN0VGVybSgpLk5vZGVzKQ0KPiANCj4gKyAgICAgICAgTU9iaiA9 IElmck1vZHVsbyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVl Tm9kZShFRklfSUZSX01PRFVMT19PUCwgTU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o TU9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjY2FzdFRlcm0uDQo+ IA0KPiArICAgIGRlZiB2aXNpdENhc3RUZXJtKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkNh c3RUZXJtQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKyAgICAgICAgQ2FzdFR5cGUgPSAweEZGDQo+IA0KPiArICAgICAgICBmb3IgQ2hpbGRD dHggaW4gY3R4LmNhc3RUZXJtU3ViKCk6DQo+IA0KPiArICAgICAgICAgICAgQ2FzdFR5cGUgPSBD aGlsZEN0eC5DYXN0VHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVu ZChjdHguYXRvbVRlcm0oKS5Ob2RlcykNCj4gDQo+ICsgICAgICAgIGlmIENhc3RUeXBlID09IDA6 DQo+IA0KPiArICAgICAgICAgICAgVEJPYmogPSBJZnJUb0Jvb2xlYW4oY3R4LnN0YXJ0LmxpbmUp DQo+IA0KPiArICAgICAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKA0KPiANCj4gKyAgICAgICAg ICAgICAgICBFRklfSUZSX1RPX0JPT0xFQU5fT1AsIFRCT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShUQk9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgQ2Fz dFR5cGUgPT0gMToNCj4gDQo+ICsgICAgICAgICAgICBUVU9iaiA9IElmclRvVWludChjdHguc3Rh cnQubGluZSkNCj4gDQo+ICsgICAgICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9U T19VSU5UX09QLCBUVU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oVFVPYmouR2V0SW5m bygpKSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiAr ICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICBy ZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjYXN0VGVybVN1Yi4NCj4gDQo+ICsgICAgZGVm IHZpc2l0Q2FzdFRlcm1TdWIoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1TdWJD b250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBpZiBjdHguQm9vbGVhbigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4 LkNhc3RUeXBlID0gMA0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguVWludDMyKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBjdHguQ2FzdFR5cGUgPSAxDQo+IA0KPiArICAgICAgICBlbGlm IGN0eC5VaW50MTYoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DYXN0VHlwZSA9 IDENCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LlVpbnQ4KCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguQ2FzdFR5cGUgPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkNhc3RU eXBlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNhdG9tVGVybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0QXRvbVRlcm0o c2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0KToNCj4gDQo+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyRXhw cmVzc2lvbkNhdGVuYXRlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMg PSBjdHgudmZyRXhwcmVzc2lvbkNhdGVuYXRlKCkuTm9kZXMNCj4gDQo+ICsgICAgICAgIGlmIGN0 eC52ZnJFeHByZXNzaW9uTWF0Y2goKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5O b2RlcyA9IGN0eC52ZnJFeHByZXNzaW9uTWF0Y2goKS5Ob2Rlcw0KPiANCj4gKyAgICAgICAgaWYg Y3R4LnZmckV4cHJlc3Npb25NYXRjaDIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0 eC5Ob2RlcyA9IGN0eC52ZnJFeHByZXNzaW9uTWF0Y2gyKCkuTm9kZXMNCj4gDQo+ICsgICAgICAg IGlmIGN0eC52ZnJFeHByZXNzaW9uUGFyZW4oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGN0eC5Ob2RlcyA9IGN0eC52ZnJFeHByZXNzaW9uUGFyZW4oKS5Ob2Rlcw0KPiANCj4gKyAgICAg ICAgaWYgY3R4LnZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoY3R4LnZmckV4cHJlc3Npb25CdWlsZEluRnVu Y3Rpb24oKS5Ob2RlKQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmckV4cHJlc3Npb25Db25zdGFu dCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChjdHgudmZy RXhwcmVzc2lvbkNvbnN0YW50KCkuTm9kZSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJFeHBy ZXNzaW9uVW5hcnlPcCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzID0g Y3R4LnZmckV4cHJlc3Npb25VbmFyeU9wKCkuTm9kZXMNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52 ZnJFeHByZXNzaW9uVGVybmFyeU9wKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Tm9kZXMgPSBjdHgudmZyRXhwcmVzc2lvblRlcm5hcnlPcCgpLk5vZGVzDQo+IA0KPiArICAgICAg ICBpZiBjdHgudmZyRXhwcmVzc2lvbk1hcCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk5vZGVzID0gY3R4LnZmckV4cHJlc3Npb25NYXAoKS5Ob2Rlcw0KPiANCj4gKyAgICAgICAg aWYgY3R4LmF0b21UZXJtKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMg PSBjdHguYXRvbVRlcm0oKS5Ob2Rlcw0KPiANCj4gKyAgICAgICAgICAgIE5PYmogPSBJZnJOb3Qo Y3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfTk9UX09QLCBOT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShOT2JqLkdldElu Zm8oKSkpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4g KyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbkNhdGVuYXRlLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uQ2F0ZW5hdGUoc2VsZiwgY3R4Og0KPiBWZnJT eW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBjdHguRXhwSW5mby5Sb290TGV2ZWwgKz0gMQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGlu ZQ0KPiANCj4gKyAgICAgICAgQ09iaiA9IElmckNhdGVuYXRlKExpbmUpDQo+IA0KPiArICAgICAg ICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9DQVRFTkFURV9PUCwgQ09iaiwNCj4gZ0Zvcm1Q a2cuU3RydWN0VG9TdHJlYW0oQ09iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5v ZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCAr PSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJFeHByZXNzaW9uTWF0Y2guDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25N YXRjaChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2hDb250 ZXh0KToNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCArPSAxDQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBNT2JqID0gSWZyTWF0Y2goTGlu ZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX01BVENIX09QLCBN T2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShNT2JqLkdldEluZm8oKSkpDQo+IA0KPiAr ICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5m by5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXRjaDIuDQo+IA0KPiArICAgIGRlZiB2aXNp dFZmckV4cHJlc3Npb25NYXRjaDIoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhw cmVzc2lvbk1hdGNoMkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiAN Cj4gKyAgICAgICAgR3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCj4gDQo+ICsgICAg ICAgIE0yT2JqID0gSWZyTWF0Y2gyKExpbmUsIEd1aWQpDQo+IA0KPiArICAgICAgICBOb2RlID0g SWZyVHJlZU5vZGUoRUZJX0lGUl9NQVRDSDJfT1AsIE0yT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShNMk9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVu ZChOb2RlKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0K PiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHBy ZXNzaW9uUGFyZW4uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25QYXJlbihzZWxm LCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uUGFyZW5Db250ZXh0KToNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9u Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKA0KPiAN Cj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkJ1aWxk SW5GdW5jdGlvbkNvbnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHguZHVwRXhwKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC5kdXBFeHAoKS5Ob2RlDQo+IA0KPiAr ICAgICAgICBpZiBjdHgudmFyZXF2YWxFeHAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZhcmVxdmFsRXhwKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4 LmlkZXF2YWxFeHAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4 LmlkZXF2YWxFeHAoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHguaWRlcWlkRXhwKCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC5pZGVxaWRFeHAoKS5Ob2Rl DQo+IA0KPiArICAgICAgICBpZiBjdHguaWRlcXZhbGxpc3RFeHAoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LmlkZXF2YWxsaXN0RXhwKCkuTm9kZQ0KPiANCj4g KyAgICAgICAgaWYgY3R4LnF1ZXN0aW9ucmVmMUV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgY3R4Lk5vZGUgPSBjdHgucXVlc3Rpb25yZWYxRXhwKCkuTm9kZQ0KPiANCj4gKyAgICAg ICAgaWYgY3R4LnJ1bGVyZWZFeHAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5O b2RlID0gY3R4LnJ1bGVyZWZFeHAoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHguc3RyaW5n cmVmMUV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHguc3Ry aW5ncmVmMUV4cCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5wdXNodGhpc0V4cCgpICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgucHVzaHRoaXNFeHAoKS5O b2RlDQo+IA0KPiArICAgICAgICBpZiBjdHguc2VjdXJpdHlFeHAoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnNlY3VyaXR5RXhwKCkuTm9kZQ0KPiANCj4gKyAg ICAgICAgaWYgY3R4LmdldEV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5v ZGUgPSBjdHguZ2V0RXhwKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNkdXBFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdER1cEV4cChzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g DQo+ICsgICAgICAgIERPYmogPSBJZnJEdXAoTGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBET2JqDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5T dHJ1Y3RUb1N0cmVhbShET2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2F2ZU9w SGRyQ29uZChET2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwN Cj4gTGluZSkgICMNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2YXJl cXZhbEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmFyZXF2YWxFeHAoc2VsZiwgY3R4OiBWZnJT eW50YXhQYXJzZXIuVmFyZXF2YWxFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fVU5TVVBQT1JURUQNCj4gDQo+ICsgICAgICAgIFZhcklkU3RyID0gInZhciINCj4gDQo+ICsg ICAgICAgIFZhcklkU3RyICs9IGN0eC5WTi50ZXh0DQo+IA0KPiArICAgICAgICBWYXJTdG9yZUlk LCBSZXR1cm5Db2RlID0gZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoVmFySWRTdHIpDQo+ IA0KPiArICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9V TkRFRklORUQ6DQo+IA0KPiArICAgICAgICAgICAgcGFzcyAgIyMjIyMjIyMjDQo+IA0KPiArICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNv ZGUsIGN0eC5WTi5saW5lKQ0KPiANCj4gKyAgICAgICAgUUlkLCBNYXNrLCBfID0gc2VsZi5WZnJR dWVzdGlvbkRCLkdldFF1ZXN0aW9uSWQoTm9uZSwgVmFySWRTdHIpDQo+IA0KPiArICAgICAgICBD b25zdFZhbCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgIGlm IGN0eC5FcXVhbCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgTWFzayA9PSAwOg0K PiANCj4gKyAgICAgICAgICAgICAgICBFSVZPYmogPSBJZnJFcUlkVmFsKExpbmUpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChFSVZPYmouR2V0SGVhZGVyKCksIChj dHguRXhwSW5mby5FeHBPcENvdW50DQo+ID09IDApLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBjdHguVk4ubGluZSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgRUlWT2JqLlNldFZhbHVlKENvbnN0VmFsKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBjdHguTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRVFfSURfVkFMX09Q LCBFSVZPYmopDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQg Kz0gMQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLA0KPiBF RklfQ09NUEFSRV9UWVBFLkVRVUFMDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsg ICAgICAgIGVsaWYgY3R4Lkxlc3NFcXVhbCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBzZWxmLklkRXFWYWxEb1NwZWNpYWwoDQo+IA0KPiArICAgICAgICAgICAgICAg IGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBDb25zdFZhbCwNCj4gRUZJ X0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFMDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZWxpZiBjdHguTGVzcygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgY3R4Lk5vZGUgPSBzZWxmLklkRXFWYWxEb1NwZWNpYWwoDQo+IA0KPiArICAgICAgICAgICAg ICAgIGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBDb25zdFZhbCwNCj4g RUZJX0NPTVBBUkVfVFlQRS5MRVNTX1RIQU4NCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5HcmVhdGVyRXF1YWwoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0KPiANCj4gKyAg ICAgICAgICAgICAgICBjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29u c3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9FUVVBTA0KPiANCj4gKyAgICAgICAg ICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXIoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0K PiANCj4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwg TWFzaywgQ29uc3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFODQo+IA0KPiAr ICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBDb252ZXJ0SWRFeHByKHNlbGYsIEV4cEluZm8sIExpbmVO bywgUUlkLCBWYXJJZFN0ciwgQml0TWFzayk6DQo+IA0KPiArICAgICAgICBRUjFPYmogPSBJZnJR dWVzdGlvblJlZjEoTGluZU5vKQ0KPiANCj4gKyAgICAgICAgUVIxT2JqLlNldFF1ZXN0aW9uSWQo UUlkLCBWYXJJZFN0ciwgTGluZU5vKQ0KPiANCj4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2Rl KEVGSV9JRlJfUVVFU1RJT05fUkVGMV9PUCwgUVIxT2JqKQ0KPiANCj4gKyAgICAgICAgc2VsZi5T YXZlT3BIZHJDb25kKFFSMU9iai5HZXRIZWFkZXIoKSwgKEV4cEluZm8uRXhwT3BDb3VudCA9PSAw KSkNCj4gDQo+ICsgICAgICAgIGlmIEJpdE1hc2sgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBV MzJPYmogPSBJZnJVaW50MzIoTGluZU5vKQ0KPiANCj4gKyAgICAgICAgICAgIFUzMk9iai5TZXRW YWx1ZShCaXRNYXNrKQ0KPiANCj4gKyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+IA0K PiArICAgICAgICAgICAgICAgIElmclRyZWVOb2RlKEVGSV9JRlJfVUlOVDMyX09QLCBVMzJPYmos DQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFUzMk9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAg ICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBCV0FPYmogPSBJZnJCaXRX aXNlQW5kKExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICBOb2RlLmluc2VydENoaWxkKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9kZSgNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIEVGSV9JRlJfQklUV0lTRV9BTkRfT1AsIEJXQU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9T dHJlYW0oQldBT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4g KyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBVOE9iaiA9IElmclVp bnQ4KExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICBpZiBCaXRNYXNrID09IERBVEVfWUVBUl9C SVRNQVNLOg0KPiANCj4gKyAgICAgICAgICAgICAgICBVOE9iai5TZXRWYWx1ZSgwKQ0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgQml0TWFzayA9PSBUSU1FX1NFQ09ORF9CSVRNQVNLOg0KPiANCj4g KyAgICAgICAgICAgICAgICBVOE9iai5TZXRWYWx1ZSgweDEwKQ0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgQml0TWFzayA9PSBEQVRFX0RBWV9CSVRNQVNLOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBVOE9iai5TZXRWYWx1ZSgweDE4KQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgQml0TWFzayA9 PSBUSU1FX0hPVVJfQklUTUFTSzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgVThPYmouU2V0VmFs dWUoMCkNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIEJpdE1hc2sgPT0gVElNRV9NSU5VVEVfQklU TUFTSzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgVThPYmouU2V0VmFsdWUoMHg4KQ0KPiANCj4g KyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgIElm clRyZWVOb2RlKEVGSV9JRlJfVUlOVDhfT1AsIFU4T2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0 cmVhbShVOE9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBTUk9iaiA9IElmclNoaWZ0UmlnaHQoTGluZU5vKQ0KPiANCj4gKyAg ICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgIElmclRy ZWVOb2RlKEVGSV9JRlJfU0hJRlRfUklHSFRfT1AsIFNST2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShTUk9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSA0DQo+IA0KPiArICAgICAgICBy ZXR1cm4gTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSWRFcVZhbERvU3BlY2lhbChzZWxm LCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1hc2ssDQo+IENvbnN0VmFsLCBD b21wYXJlVHlwZSk6DQo+IA0KPiArICAgICAgICBOb2RlID0gc2VsZi5Db252ZXJ0SWRFeHByKEV4 cEluZm8sIExpbmVObywgUUlkLCBWYXJJZFN0ciwgQml0TWFzaykNCj4gDQo+ICsgICAgICAgIGlm IENvbnN0VmFsID4gMHhGRjoNCj4gDQo+ICsgICAgICAgICAgICBVMTZPYmogPSBJZnJVaW50MTYo TGluZU5vKQ0KPiANCj4gKyAgICAgICAgICAgIFUxNk9iai5TZXRWYWx1ZShDb25zdFZhbCkNCj4g DQo+ICsgICAgICAgICAgICBOb2RlLmluc2VydENoaWxkKA0KPiANCj4gKyAgICAgICAgICAgICAg ICBJZnJUcmVlTm9kZShFRklfSUZSX1VJTlQxNl9PUCwgVTE2T2JqLA0KPiBnRm9ybVBrZy5TdHJ1 Y3RUb1N0cmVhbShVMTZPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0K PiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIFU4T2JqID0gSWZyVWludDgoTGlu ZU5vKQ0KPiANCj4gKyAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlKENvbnN0VmFsKQ0KPiANCj4g KyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgIElm clRyZWVOb2RlKEVGSV9JRlJfVUlOVDhfT1AsIFU4T2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0 cmVhbShVOE9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuRVFVQUw6DQo+ IA0KPiArICAgICAgICAgICAgRU9iaiA9IElmckVxdWFsKExpbmVObykNCj4gDQo+ICsgICAgICAg ICAgICBOb2RlLmluc2VydENoaWxkKA0KPiANCj4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9k ZShFRklfSUZSX0VRVUFMX09QLCBFT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShFT2Jq LkdldEluZm8oKSkpDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFMOg0KPiANCj4g KyAgICAgICAgICAgIExFT2JqID0gSWZyTGVzc0VxdWFsKExpbmVObykNCj4gDQo+ICsgICAgICAg ICAgICBOb2RlLmluc2VydENoaWxkKA0KPiANCj4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9k ZShFRklfSUZSX0xFU1NfRVFVQUxfT1AsIExFT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVh bShMRU9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuTEVTU19USEFOOg0K PiANCj4gKyAgICAgICAgICAgIExUT2JqID0gSWZyTGVzc1RoYW4oTGluZU5vKQ0KPiANCj4gKyAg ICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgIElmclRy ZWVOb2RlKEVGSV9JRlJfTEVTU19USEFOX09QLCBMVE9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9T dHJlYW0oTFRPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJf RVFVQUw6DQo+IA0KPiArICAgICAgICAgICAgR0VPYmogPSBJZnJHcmVhdGVyRXF1YWwoTGluZU5v KQ0KPiANCj4gKyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+IA0KPiArICAgICAgICAg ICAgICAgIElmclRyZWVOb2RlKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9H UkVBVEVSX0VRVUFMX09QLCBHRU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oR0VPYmou R2V0SW5mbygpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAg KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVf VFlQRS5HUkVBVEVSX1RIQU46DQo+IA0KPiArICAgICAgICAgICAgR1RPYmogPSBJZnJHcmVhdGVy VGhhbihMaW5lTm8pDQo+IA0KPiArICAgICAgICAgICAgTm9kZS5pbnNlcnRDaGlsZCgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBFRklfSUZSX0dSRUFURVJfVEhBTl9PUCwgR1RPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3Ry ZWFtKEdUT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAg ICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCAr PSAyDQo+IA0KPiArICAgICAgICByZXR1cm4gTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcXZhbEV4cC4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0SWRlcXZhbEV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNl ci5JZGVxdmFsRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0Lmxp bmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAg ICBNYXNrID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLk1hc2sNCj4gDQo+ICsgICAg ICAgIFFJZCA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5RSWQNCj4gDQo+ICsgICAg ICAgIFZhcklkU3RyID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLlZhcklkU3RyDQo+ IA0KPiArICAgICAgICBMaW5lTm8gPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuTGlu ZQ0KPiANCj4gKyAgICAgICAgQ29uc3RWYWwgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkN Cj4gDQo+ICsgICAgICAgIGlmIGN0eC5FcXVhbCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgaWYgTWFzayA9PSAwOg0KPiANCj4gKyAgICAgICAgICAgICAgICBFSVZPYmogPSBJZnJFcUlk VmFsKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChFSVZP YmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID09IDApLCBMaW5lKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3Ry LCBMaW5lTm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIEVJVk9iai5TZXRWYWx1ZShDb25zdFZh bCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZS X0VRX0lEX1ZBTF9PUCwgRUlWT2JqKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5m by5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcVZhbERvU3BlY2lhbCgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBD b25zdFZhbCwNCj4gRUZJX0NPTVBBUkVfVFlQRS5FUVVBTA0KPiANCj4gKyAgICAgICAgICAgICAg ICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5MZXNzRXF1YWwoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0K PiANCj4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwg TWFzaywgQ29uc3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTA0KPiANCj4gKyAg ICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4Lkxlc3MoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFs KA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0 ciwgTWFzaywgQ29uc3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZUEUuTEVTU19USEFODQo+IA0KPiAr ICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRlckVx dWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcVZh bERvU3BlY2lhbCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8sIExpbmUsIFFJ ZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLA0KPiBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJf RVFVQUwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlm IGN0eC5HcmVhdGVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IHNl bGYuSWRFcVZhbERvU3BlY2lhbCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8s IExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLA0KPiBFRklfQ09NUEFSRV9UWVBF LkdSRUFURVJfVEhBTg0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSWRFcUlkRG9TcGVj aWFsKA0KPiANCj4gKyAgICAgICAgc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQxLCBWYXJJZFN0 cjEsIE1hc2sxLCBRSWQyLCBWYXJJZFN0cjIsIE1hc2syLA0KPiBDb21wYXJlVHlwZQ0KPiANCj4g KyAgICApOg0KPiANCj4gKyAgICAgICAgTm9kZTEgPSBzZWxmLkNvbnZlcnRJZEV4cHIoRXhwSW5m bywgTGluZU5vLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxKQ0KPiANCj4gKyAgICAgICAgTm9kZTIg PSBzZWxmLkNvbnZlcnRJZEV4cHIoRXhwSW5mbywgTGluZU5vLCBRSWQyLCBWYXJJZFN0cjIsIE1h c2syKQ0KPiANCj4gKyAgICAgICAgTm9kZTEuaW5zZXJ0Q2hpbGQoTm9kZTIpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkVRVUFMOg0K PiANCj4gKyAgICAgICAgICAgIEVPYmogPSBJZnJFcXVhbChMaW5lTm8pDQo+IA0KPiArICAgICAg ICAgICAgTm9kZTEuaW5zZXJ0Q2hpbGQoDQo+IA0KPiArICAgICAgICAgICAgICAgIElmclRyZWVO b2RlKEVGSV9JRlJfRVFVQUxfT1AsIEVPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEVP YmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1NfRVFVQUw6DQo+IA0K PiArICAgICAgICAgICAgTEVPYmogPSBJZnJMZXNzRXF1YWwoTGluZU5vKQ0KPiANCj4gKyAgICAg ICAgICAgIE5vZGUxLmluc2VydENoaWxkKA0KPiANCj4gKyAgICAgICAgICAgICAgICBJZnJUcmVl Tm9kZShFRklfSUZSX0xFU1NfRVFVQUxfT1AsIExFT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0 cmVhbShMRU9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuTEVTU19USEFO Og0KPiANCj4gKyAgICAgICAgICAgIExUT2JqID0gSWZyTGVzc1RoYW4oTGluZU5vKQ0KPiANCj4g KyAgICAgICAgICAgIE5vZGUxLmluc2VydENoaWxkKA0KPiANCj4gKyAgICAgICAgICAgICAgICBJ ZnJUcmVlTm9kZShFRklfSUZSX0xFU1NfVEhBTl9PUCwgTFRPYmosDQo+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKExUT2JqLkdldEluZm8oKSkpDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5HUkVB VEVSX0VRVUFMOg0KPiANCj4gKyAgICAgICAgICAgIEdFT2JqID0gSWZyR3JlYXRlckVxdWFsKExp bmVObykNCj4gDQo+ICsgICAgICAgICAgICBOb2RlMS5pbnNlcnRDaGlsZCgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBFRklf SUZSX0dSRUFURVJfRVFVQUxfT1AsIEdFT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShH RU9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAg ICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09N UEFSRV9UWVBFLkdSRUFURVJfVEhBTjoNCj4gDQo+ICsgICAgICAgICAgICBHVE9iaiA9IElmckdy ZWF0ZXJUaGFuKExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICBOb2RlMS5pbnNlcnRDaGlsZCgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX0dSRUFURVJfVEhBTl9PUCwgR1RPYmosDQo+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKEdUT2JqLkdldEluZm8oKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiAN Cj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEV4cEluZm8uRXhwT3BD b3VudCArPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4gTm9kZTENCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2lkZXFp ZEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0SWRlcWlkRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4 UGFyc2VyLklkZXFpZEV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAg ICAgICAgTWFzazEgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDApLk1hc2sNCj4gDQo+ ICsgICAgICAgIFFJZDEgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDApLlFJZA0KPiAN Cj4gKyAgICAgICAgVmFySWRTdHIxID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5W YXJJZFN0cg0KPiANCj4gKyAgICAgICAgTGluZU5vMSA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVs ZE5hbWUoMCkuTGluZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTWFzazIgPSBjdHgudmZyUXVl c3Rpb25EYXRhRmllbGROYW1lKDEpLk1hc2sNCj4gDQo+ICsgICAgICAgIFFJZDIgPSBjdHgudmZy UXVlc3Rpb25EYXRhRmllbGROYW1lKDEpLlFJZA0KPiANCj4gKyAgICAgICAgVmFySWRTdHIyID0g Y3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgxKS5WYXJJZFN0cg0KPiANCj4gKyAgICAgICAg TGluZU5vMiA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuTGluZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgY3R4LkVxdWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBNYXNrMSAmIE1hc2syOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguTm9kZSA9IHNl bGYuSWRFcUlkRG9TcGVjaWFsKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkV4cElu Zm8sDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgUUlkMSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhcklkU3RyMSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIE1hc2sxLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgUUlkMiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhcklkU3RyMiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIE1hc2syLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRUZJ X0NPTVBBUkVfVFlQRS5FUVVBTCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVJSU9iaiA9IElmckVxSWRJ ZChMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLlNhdmVPcEhkckNvbmQoRUlJT2Jq LkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9PSAwKSwgTGluZSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgRUlJT2JqLlNldFF1ZXN0aW9uSWQxKFFJZDEsIFZhcklkU3Ry MSwgTGluZU5vMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgRUlJT2JqLlNldFF1ZXN0aW9uSWQy KFFJZDIsIFZhcklkU3RyMiwgTGluZU5vMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0VRX0lEX0lEX09QLCBFSUlPYmopDQo+IA0KPiArICAg ICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZWxpZiBjdHguTGVzc0VxdWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IHNlbGYuSWRFcUlkRG9TcGVjaWFsKA0KPiANCj4gKyAgICAgICAgICAgICAg ICBjdHguRXhwSW5mbywNCj4gDQo+ICsgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgUUlkMSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFySWRTdHIxLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBNYXNrMSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgUUlkMiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgVmFySWRTdHIyLA0KPiANCj4gKyAgICAgICAgICAgICAg ICBNYXNrMiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgRUZJX0NPTVBBUkVfVFlQRS5MRVNTX0VR VUFMLA0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYg Y3R4Lkxlc3MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5J ZEVxSWREb1NwZWNpYWwoDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQxLA0K PiANCj4gKyAgICAgICAgICAgICAgICBWYXJJZFN0cjEsDQo+IA0KPiArICAgICAgICAgICAgICAg IE1hc2sxLA0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQyLA0KPiANCj4gKyAgICAgICAgICAg ICAgICBWYXJJZFN0cjIsDQo+IA0KPiArICAgICAgICAgICAgICAgIE1hc2syLA0KPiANCj4gKyAg ICAgICAgICAgICAgICBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTiwNCj4gDQo+ICsgICAgICAg ICAgICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5HcmVhdGVyRXF1YWwoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxSWREb1NwZWNp YWwoDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLA0KPiANCj4gKyAgICAgICAg ICAgICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQxLA0KPiANCj4gKyAgICAg ICAgICAgICAgICBWYXJJZFN0cjEsDQo+IA0KPiArICAgICAgICAgICAgICAgIE1hc2sxLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBRSWQyLA0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJJZFN0 cjIsDQo+IA0KPiArICAgICAgICAgICAgICAgIE1hc2syLA0KPiANCj4gKyAgICAgICAgICAgICAg ICBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUwsDQo+IA0KPiArICAgICAgICAgICAgKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRlcigpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBzZWxmLklkRXFJZERvU3BlY2lhbCgNCj4gDQo+ICsg ICAgICAgICAgICAgICAgY3R4LkV4cEluZm8sDQo+IA0KPiArICAgICAgICAgICAgICAgIExpbmUs DQo+IA0KPiArICAgICAgICAgICAgICAgIFFJZDEsDQo+IA0KPiArICAgICAgICAgICAgICAgIFZh cklkU3RyMSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgTWFzazEsDQo+IA0KPiArICAgICAgICAg ICAgICAgIFFJZDIsDQo+IA0KPiArICAgICAgICAgICAgICAgIFZhcklkU3RyMiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgTWFzazIsDQo+IA0KPiArICAgICAgICAgICAgICAgIEVGSV9DT01QQVJF X1RZUEUuR1JFQVRFUl9USEFOLA0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAg IHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSWRFcUxpc3REb1NwZWNp YWwoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBMaXN0TGVuLA0K PiBWYWx1ZUxpc3QpOg0KPiANCj4gKyAgICAgICAgaWYgTGlzdExlbiA9PSAwOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBOb2RlID0gc2Vs Zi5JZEVxVmFsRG9TcGVjaWFsKA0KPiANCj4gKyAgICAgICAgICAgIEV4cEluZm8sIExpbmVObywg UUlkLCBWYXJJZFN0ciwgTWFzaywgVmFsdWVMaXN0WzBdLA0KPiBFRklfQ09NUEFSRV9UWVBFLkVR VUFMDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBM aXN0TGVuKToNCj4gDQo+ICsgICAgICAgICAgICBOb2RlLmluc2VydENoaWxkKA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIE1hc2ssIFZhbHVlTGlzdFtp XSwNCj4gRUZJX0NPTVBBUkVfVFlQRS5FUVVBTA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+ IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIE9PYmogPSBJZnJPcihMaW5l Tm8pDQo+IA0KPiArICAgICAgICAgICAgTm9kZS5pbnNlcnRDaGlsZCgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgSWZyVHJlZU5vZGUoRUZJX0lGUl9PUl9PUCwgT09iaiwNCj4gZ0Zvcm1Qa2cuU3Ry dWN0VG9TdHJlYW0oT09iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ ICsgICAgICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgcmV0dXJuIE5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2lkZXF2YWxsaXN0RXhwLg0KPiANCj4gKyAg ICBkZWYgdmlzaXRJZGVxdmFsbGlzdEV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5JZGVx dmFsbGlzdEV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAg TWFzayA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNrDQo+IA0KPiArICAgICAg ICBRSWQgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuUUlkDQo+IA0KPiArICAgICAg ICBWYXJJZFN0ciA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5WYXJJZFN0cg0KPiAN Cj4gKyAgICAgICAgTGluZU5vID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLkxpbmUN Cj4gDQo+ICsgICAgICAgIFZhbHVlTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oY3R4Lk51bWJlcigpKSk6DQo+IA0KPiArICAgICAgICAgICAgVmFsdWVMaXN0 LmFwcGVuZChzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoaSkpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgTGlzdExlbiA9IGxlbihWYWx1ZUxpc3QpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBp ZiBNYXNrICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBzZWxmLklkRXFMaXN0 RG9TcGVjaWFsKA0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mbywgTGluZU5vLCBR SWQsIFZhcklkU3RyLCBNYXNrLCBMaXN0TGVuLCBWYWx1ZUxpc3QNCj4gDQo+ICsgICAgICAgICAg ICApDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIEVJTE9iaiA9IElm ckVxSWRMaXN0KExpbmUsIExpc3RMZW4pDQo+IA0KPiArICAgICAgICAgICAgaWYgUUlkICE9IEVG SV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgICAgICBFSUxPYmouU2V0 UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lTm8pDQo+IA0KPiArICAgICAgICAgICAgRUlM T2JqLlNldExpc3RMZW5ndGgoTGlzdExlbikNCj4gDQo+ICsgICAgICAgICAgICBFSUxPYmouU2V0 VmFsdWVMaXN0KFZhbHVlTGlzdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNhdmVPcEhkckNv bmQoRUlMT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PQ0KPiAwKSwg TGluZSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBRSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFM SUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVJTE9iai5TZXRRdWVzdGlvbklkKFFJZCwgVmFy SWRTdHIsIExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IElm clRyZWVOb2RlKEVGSV9JRlJfRVFfSURfVkFMX0xJU1RfT1AsIEVJTE9iaikNCj4gDQo+ICsgICAg ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTEu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxKA0KPiAN Cj4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmll bGROYW1lUnVsZTFDb250ZXh0DQo+IA0KPiArICAgICk6DQo+IA0KPiArICAgICAgICBjdHguTGlu ZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjEudGV4dA0KPiANCj4gKyAg ICAgICAgY3R4LlZhcklkU3RyICs9ICJbIg0KPiANCj4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9 IGN0eC5JLnRleHQNCj4gDQo+ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSAiXSINCj4gDQo+ICsg ICAgICAgIGN0eC5RSWQsIGN0eC5NYXNrLCBfID0gc2VsZi5WZnJRdWVzdGlvbkRCLkdldFF1ZXN0 aW9uSWQoTm9uZSwNCj4gY3R4LlZhcklkU3RyKQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5Db25z dGFudE9ubHlJbkV4cHJlc3Npb246DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPTlNUQU5UX09OTFksDQo+IGN0eC5TTjEubGlu ZSkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguUUlkLCBjdHguTWFzaywgY3R4LlZhcklkU3Ry DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ IFZmclN5bnRheFBhcnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMi4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0VmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTIoDQo+IA0KPiArICAgICAg ICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxl MkNvbnRleHQNCj4gDQo+ICsgICAgKToNCj4gDQo+ICsgICAgICAgIGN0eC5MaW5lID0gY3R4LnN0 YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LlNOMi50ZXh0DQo+IA0KPiArICAgICAgICBmb3Ig aSBpbiByYW5nZSgwLCBsZW4oY3R4LmFycmF5TmFtZSgpKSk6DQo+IA0KPiArICAgICAgICAgICAg Y3R4LlZhcklkU3RyICs9ICIuIg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuQ29uc3RhbnRP bmx5SW5FeHByZXNzaW9uOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxl cihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQ09OU1RBTlRfT05MWSwNCj4gY3R4LlNOMi5saW5l KQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYXJJZFN0ciArPSBjdHguYXJyYXlOYW1lKGkpLlN1 YlN0cloNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5RSWQsIGN0eC5NYXNrLCBfID0gc2Vs Zi5WZnJRdWVzdGlvbkRCLkdldFF1ZXN0aW9uSWQoTm9uZSwNCj4gY3R4LlZhcklkU3RyKQ0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5RSWQsIGN0eC5NYXNrLCBjdHguVmFySWRTdHINCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI2FycmF5TmFtZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0QXJyYXlOYW1lKHNlbGYsIGN0 eDogVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5TdWJTdHIgKz0gc2VsZi5U cmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQo+IA0KPiArICAgICAgICBjdHguU3ViU3Ry WiArPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gDQo+ICsgICAgICAg IGlmIGN0eC5OICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgSWR4ID0gc2VsZi5UcmFuc051 bShjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIElkeCA+IDA6DQo+IA0KPiArICAg ICAgICAgICAgICAgIGN0eC5TdWJTdHIgKz0gIlsiDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5TdWJTdHIgKz0gc3RyKElkeCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlN1YlN0ciAr PSAiXSINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBjdHguU3ViU3RyWiArPSAiWyINCj4g DQo+ICsgICAgICAgICAgICBjdHguU3ViU3RyWiArPSBzdHIoSWR4KQ0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5TdWJTdHJaICs9ICJdIg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5TdWJTdHIsIGN0eC5TdWJTdHJaDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNxdWVzdGlvbnJlZjFFeHAuDQo+IA0K PiArICAgIGRlZiB2aXNpdFF1ZXN0aW9ucmVmMUV4cChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBh cnNlci5RdWVzdGlvbnJlZjFFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZSAgIw0KPiANCj4gKyAgICAgICAgUU5hbWUgPSBOb25lICAjDQo+IA0KPiArICAg ICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdHJpbmdJZGVudGlmaWVy KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBRTmFtZSA9IHNlbGYuVHJhbnNJZChjdHgu U3RyaW5nSWRlbnRpZmllcigpKQ0KPiANCj4gKyAgICAgICAgICAgIFFJZCwgXywgXyA9IHNlbGYu VmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKFFOYW1lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZWxpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBRSWQgPSBz ZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFFSMU9i aiA9IElmclF1ZXN0aW9uUmVmMShMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TYXZlT3BIZHJD b25kKFFSMU9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4gMCks IExpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBRUjFPYmouU2V0UXVlc3Rpb25JZChRSWQs IFFOYW1lLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFFSMU9iag0KPiAN Cj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3J1bGVyZWZFeHAuDQo+IA0KPiAr ICAgIGRlZiB2aXNpdFJ1bGVyZWZFeHAoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuUnVsZXJl ZkV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0K PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgUlJPYmog PSBJZnJSdWxlUmVmKExpbmUpDQo+IA0KPiArICAgICAgICBzZWxmLlNhdmVPcEhkckNvbmQoUlJP YmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09DQo+IDApLCBMaW5lKQ0K PiANCj4gKyAgICAgICAgUnVsZUlkID0gc2VsZi5WZnJSdWxlc0RCLkdldFJ1bGVJZChzZWxmLlRy YW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkpDQo+IA0KPiArICAgICAgICBSUk9iai5TZXRS dWxlSWQoUnVsZUlkKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJST2JqDQo+IA0K PiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3RyaW5ncmVmMUV4cC4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0U3RyaW5ncmVmMUV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5T dHJpbmdyZWYxRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0Lmxp bmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAg ICBSZWZTdHJpbmdJZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAg ICAgU1IxT2JqID0gSWZyU3RyaW5nUmVmMShMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TYXZl T3BIZHJDb25kKFNSMU9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0N Cj4gMCksIExpbmUpDQo+IA0KPiArICAgICAgICBTUjFPYmouU2V0U3RyaW5nSWQoUmVmU3RyaW5n SWQpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU1IxT2JqDQo+IA0KPiArICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcHVzaHRoaXNFeHAuDQo+IA0KPiArICAgIGRlZiB2 aXNpdFB1c2h0aGlzRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlB1c2h0aGlzRXhwQ29u dGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBUT2JqID0gSWZyVGhp cyhMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFRPYmouR2V0SGVhZGVy KCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLA0KPiBMaW5lKQ0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IFRPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9w Q291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciNzZWN1cml0eUV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0U2VjdXJpdHlFeHAoc2Vs ZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0KToNCj4gDQo+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIFNPYmogPSBJZnJTZWN1cml0eShMaW5lKQ0KPiANCj4g KyAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFNPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5m by5FeHBPcENvdW50ID09IDApLA0KPiBMaW5lKQ0KPiANCj4gKyAgICAgICAgU09iai5TZXRQZXJt aXNzaW9ucyhjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IFNPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0g MQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNudW1lcmljVmFyU3RvcmVUeXBlLg0KPiANCj4gKyAgICBkZWYgdmlzaXROdW1lcmljVmFyU3Rv cmVUeXBlKHNlbGYsIGN0eDoNCj4gVmZyU3ludGF4UGFyc2VyLk51bWVyaWNWYXJTdG9yZVR5cGVD b250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KPiANCj4gKyAgICAgICAg aWYgY3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu VmFyVHlwZSA9IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gDQo+ICsgICAgICAgIGlmIGN0eC5O dW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYXJUeXBl ID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfNA0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWVyaWNT aXplRWlnaHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYXJUeXBlID0gRUZJ X0lGUl9OVU1FUklDX1NJWkVfOA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5W YXJUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNnZXRFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdEdldEV4cChz ZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID09IDA6DQo+ IA0KPiArICAgICAgICAgICAgIyBzdXBwb3J0IERhdGUvVGltZSBxdWVzdGlvbg0KPiANCj4gKyAg ICAgICAgICAgIFZhcklkU3RyID0gY3R4LnZmclN0b3JhZ2VWYXJJZCgpLlZhcklkU3RyDQo+IA0K PiArICAgICAgICAgICAgUUlkLCBNYXNrLCBRVHlwZSA9IHNlbGYuVmZyUXVlc3Rpb25EQi5HZXRR dWVzdGlvbklkKA0KPiANCj4gKyAgICAgICAgICAgICAgICBOb25lLCBWYXJJZFN0ciwgRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiAr ICAgICAgICAgICAgaWYgKA0KPiANCj4gKyAgICAgICAgICAgICAgICAoUUlkID09IEVGSV9RVUVT VElPTl9JRF9JTlZBTElEKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBvciAoTWFzayA9PSAwKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBvciAoUVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQRS5RVUVT VElPTl9OT1JNQUwpDQo+IA0KPiArICAgICAgICAgICAgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgIkdldC9TZXQgb3Bjb2RlIGNhbid0 IGdldCB0aGUgZW5vdWdoIHZhcnN0b3JlIGluZm9ybWF0aW9uIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUu UVVFU1RJT05fREFURToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5 cGUgPSBFRklfSUZSX1RZUEVfREFURQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgUVR5cGUgPT0g RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FOg0KPiANCj4gKyAgICAgICAgICAgICAgICBj dHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1FDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgaWYgTWFzayA9PSBEQVRFX1lFQVJfQklUTUFTSzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCj4gDQo+ICsgICAgICAgICAgICBl bGlmIE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4 LkJhc2VJbmZvLlZhck9mZnNldCA9IDMNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIE1hc2sgPT0g VElNRV9IT1VSX0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5W YXJPZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfTUlOVVRF X0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQg PSAxDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6 DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAyDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhh bmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fVU5TVVBQT1JURUQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdo IHZhcnN0b3JlIGluZm9ybWF0aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBWYXJUeXBlID0gRUZJ X0lGUl9UWVBFX1VOREVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIFZhclR5cGUgPSBjdHgubnVtZXJpY1ZhclN0 b3JlVHlwZSgpLlZhclR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiAoDQo+IA0K PiArICAgICAgICAgICAgICAgIGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZVR5cGUoY3R4LkJh c2VJbmZvLlZhclN0b3JlSWQpDQo+IA0KPiArICAgICAgICAgICAgICAgID09IEVGSV9WRlJfVkFS U1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX05BTUUNCj4gDQo+ICsgICAgICAgICAgICApIGFu ZCAoVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEKToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBMaW5lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgIkdldC9TZXQgb3Bjb2RlIGRv bid0IHN1cHBvcnQgbmFtZSBzdHJpbmciLA0KPiANCj4gKyAgICAgICAgICAgICAgICApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgaWYgVmFyVHlwZSAhPSBFRklfSUZSX1RZUEVfVU5ERUZJ TkVEOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IFZhclR5 cGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+IGdWZnJWYXJE YXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoY3R4LkJhc2VJbmZvLlZhclR5cGUp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExp bmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyDQo+IHR5cGUgc2l6ZSIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUb3RhbFNpemUgPSBTaXplDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+IGdWZnJWYXJEYXRhVHlw ZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoY3R4LkJhc2VJbmZvLlZhclR5cGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIkdldC9T ZXQgb3Bjb2RlIGNhbid0IGdldCB2YXINCj4gdHlwZSBzaXplIikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBpZiBTaXplICE9IGN0eC5CYXNlSW5mby5WYXJUb3RhbFNpemU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJHZXQvU2V0 IG9wY29kZSBkb24ndCBzdXBwb3J0IGRhdGEgYXJyYXkiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBHT2JqID0gSWZyR2V0KExpbmUpDQo+IA0KPiAr ICAgICAgICBzZWxmLlNhdmVPcEhkckNvbmQoR09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgPT0gMCksDQo+IExpbmUpDQo+IA0KPiArICAgICAgICBHT2JqLlNldFZhcklu Zm8oY3R4LkJhc2VJbmZvKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEdPYmoNCj4g DQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uQ29uc3Rh bnQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25Db25zdGFudChzZWxmLCBjdHg6 DQo+IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQ29uc3RhbnRDb250ZXh0KToNCj4gDQo+ ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5UcnVlU3ltYm9sKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBUT2JqID0gSWZyVHJ1ZShMaW5lKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChUT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8u RXhwT3BDb3VudCA9PQ0KPiAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IElmclRyZWVOb2RlKEVGSV9JRlJfVFJVRV9PUCwgVE9iaikNCj4gDQo+ICsgICAgICAgICAgICBj dHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0 eC5GYWxzZVN5bWJvbCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgRk9iaiA9IElmckZh bHNlKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKEZPYmouR2V0 SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09DQo+IDApLCBMaW5lKQ0KPiANCj4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9GQUxTRV9PUCwgRk9i aikNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5PbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIE9PYmogPSBJZnJPbmUoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNhdmVPcEhk ckNvbmQoT09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4gMCks IExpbmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZS X09ORV9PUCwgT09iaikNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50 ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5PbmVzKCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBPT2JqID0gSWZyT25lcyhMaW5lKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuU2F2ZU9wSGRyQ29uZChPT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BD b3VudCA9PQ0KPiAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IElmclRy ZWVOb2RlKEVGSV9JRlJfT05FU19PUCwgT09iaikNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5aZXJv KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBaT2JqID0gSWZyWmVybyhMaW5lKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChaT2JqLkdldEhlYWRlcigpLCAoY3R4 LkV4cEluZm8uRXhwT3BDb3VudCA9PQ0KPiAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBj dHguTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfWkVST19PUCwgWk9iaikNCj4gDQo+ICsgICAg ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5VbmRlZmluZWQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFVPYmog PSBJZnJVbmRlZmluZWQoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNhdmVPcEhkckNv bmQoVU9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4gMCksIExp bmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1VO REVGSU5FRF9PUCwgVU9iaikNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENv dW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5WZXJzaW9uKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBWT2JqID0gSWZyVmVyc2lvbihMaW5lKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChWT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cElu Zm8uRXhwT3BDb3VudCA9PQ0KPiAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9k ZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVkVSU0lPTl9PUCwgVk9iaikNCj4gDQo+ICsgICAgICAg ICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFU2NE9iaiA9IElm clVpbnQ2NChMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIFU2NE9iai5TZXRWYWx1ZShzZWxmLlRy YW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJD b25kKFU2NE9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPT0gMCks IExpbmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZS X1VJTlQ2NF9PUCwgVTY0T2JqKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9w Q291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJFeHByZXNzaW9uVW5hcnlPcC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRXhw cmVzc2lvblVuYXJ5T3Aoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lv blVuYXJ5T3BDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArICAgICAgICBpZiBjdHgubGVuZ3RoRXhwKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTm9kZXMgPSBjdHgubGVuZ3RoRXhwKCkuTm9kZXMNCj4gDQo+ICsgICAgICAg IGlmIGN0eC5iaXR3aXNlbm90RXhwKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Tm9kZXMgPSBjdHguYml0d2lzZW5vdEV4cCgpLk5vZGVzDQo+IA0KPiArICAgICAgICBpZiBjdHgu cXVlc3Rpb24yM3JlZkV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVz ID0gY3R4LnF1ZXN0aW9uMjNyZWZFeHAoKS5Ob2Rlcw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnN0 cmluZ3JlZjJFeHAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0 eC5zdHJpbmdyZWYyRXhwKCkuTm9kZXMNCj4gDQo+ICsgICAgICAgIGlmIGN0eC50b2Jvb2xFeHAo KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC50b2Jvb2xFeHAo KS5Ob2Rlcw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnRvc3RyaW5nRXhwKCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHgudG9zdHJpbmdFeHAoKS5Ob2Rlcw0KPiAN Cj4gKyAgICAgICAgaWYgY3R4LnVuaW50RXhwKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguTm9kZXMgPSBjdHgudW5pbnRFeHAoKS5Ob2Rlcw0KPiANCj4gKyAgICAgICAgaWYgY3R4 LnRvdXBwZXJFeHAoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0 eC50b3VwcGVyRXhwKCkuTm9kZXMNCj4gDQo+ICsgICAgICAgIGlmIGN0eC50b2x3ZXJFeHAoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC50b2x3ZXJFeHAoKS5O b2Rlcw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnNldEV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgY3R4Lk5vZGVzID0gY3R4LnNldEV4cCgpLk5vZGVzDQo+IA0KPiArICAgICAgICBy ZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNsZW5ndGhFeHAuDQo+IA0KPiArICAgIGRlZiB2 aXNpdExlbmd0aEV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0 KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIExPYmogPSBJZnJMZW5ndGgo TGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0xFTkdUSF9P UCwgTE9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTE9iai5HZXRJbmZvKCkpKQ0KPiAN Cj4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNiaXR3aXNlbm90RXhwLg0KPiANCj4gKyAgICBkZWYgdmlzaXRCaXR3aXNlbm90 RXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkJpdHdpc2Vub3RFeHBDb250ZXh0KToNCj4g DQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIEJXTk9iaiA9IElmckJpdFdpc2VOb3Qo TGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZSgNCj4gDQo+ICsgICAgICAg ICAgICBFRklfSUZSX0JJVFdJU0VfTk9UX09QLCBCV05PYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKEJXTk9iai5HZXRJbmZvKCkpDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArICAgICAg ICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3F1ZXN0aW9uMjNyZWZFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFF1ZXN0aW9uMjNyZWZFeHAo c2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24yM3JlZkV4cENvbnRleHQpOg0K PiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBUeXBl ID0gMHgxDQo+IA0KPiArICAgICAgICBEZXZpY2VQYXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElE DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg aWYgY3R4LkRldmljZVBhdGgoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFR5cGUgPSAw eDINCj4gDQo+ICsgICAgICAgICAgICBEZXZpY2VQYXRoID0gc2VsZi5UcmFuc051bShjdHguTnVt YmVyKCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguVXVpZCgpICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgVHlwZSA9IDB4Mw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg VHlwZSA9PSAweDE6DQo+IA0KPiArICAgICAgICAgICAgUVIyT2JqID0gSWZyUXVlc3Rpb25SZWYy KExpbmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFFSMk9iai5HZXRI ZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPT0gMCksIExpbmUpDQo+IA0KPiAr ICAgICAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfUVVFU1RJT05fUkVGMl9PUCwg UVIyT2JqKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGlmIFR5cGUgPT0gMHgyOg0KPiANCj4gKyAgICAgICAgICAgIFFS M18yT2JqID0gSWZyUXVlc3Rpb25SZWYzXzIoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlNhdmVPcEhkckNvbmQoUVIzXzJPYmouR2V0SGVhZGVyKCksDQo+IChjdHguRXhwSW5mby5FeHBP cENvdW50ID09IDApLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIFFSM18yT2JqLlNldERldmlj ZVBhdGgoRGV2aWNlUGF0aCkNCj4gDQo+ICsgICAgICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUo RUZJX0lGUl9RVUVTVElPTl9SRUYzX09QLCBRUjNfMk9iaikNCj4gDQo+ICsgICAgICAgICAgICBj dHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBUeXBlID09 IDB4MzoNCj4gDQo+ICsgICAgICAgICAgICBRUjNfM09iaiA9IElmclF1ZXN0aW9uUmVmM18zKExp bmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFFSM18zT2JqLkdldEhl YWRlcigpLA0KPiAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gDQo+ICsg ICAgICAgICAgICBRUjNfM09iai5TZXREZXZpY2VQYXRoKERldmljZVBhdGgpDQo+IA0KPiArICAg ICAgICAgICAgUVIzXzNPYmouU2V0R3VpZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiAN Cj4gKyAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1FVRVNUSU9OX1JFRjNf T1AsIFFSM18zT2JqKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3RyaW5n cmVmMkV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0U3RyaW5ncmVmMkV4cChzZWxmLCBjdHg6IFZm clN5bnRheFBhcnNlci5TdHJpbmdyZWYyRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArICAgICAgICBTUjJPYmogPSBJZnJTdHJpbmdSZWYyKExpbmUpDQo+IA0KPiArICAg ICAgICBOb2RlID0gSWZyVHJlZU5vZGUoDQo+IA0KPiArICAgICAgICAgICAgRUZJX0lGUl9TVFJJ TkdfUkVGMl9PUCwgU1IyT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShTUjJPYmouR2V0 SW5mbygpKQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVu ZChOb2RlKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0K PiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b2Jvb2xFeHAuDQo+IA0K PiArICAgIGRlZiB2aXNpdFRvYm9vbEV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5Ub2Jv b2xFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIFRCT2Jq ID0gSWZyVG9Cb29sZWFuKExpbmUpDQo+IA0KPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUo RUZJX0lGUl9UT19CT09MRUFOX09QLCBUQk9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o VEJPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkN Cj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG9zdHJpbmdFeHAuDQo+IA0KPiArICAg IGRlZiB2aXNpdFRvc3RyaW5nRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlRvc3RyaW5n RXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBUU09iaiA9 IElmclRvU3RyaW5nKExpbmUpDQo+IA0KPiArICAgICAgICBGbXQgPSBzZWxmLlRyYW5zTnVtKGN0 eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIFRTT2JqLlNldEZvcm1hdChGbXQpDQo+IA0KPiAr ICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9UT19TVFJJTkdfT1AsIFRTT2JqLA0K PiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShUU09iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN1bmludEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VW5pbnRFeHAoc2VsZiwgY3R4OiBWZnJT eW50YXhQYXJzZXIuVW5pbnRFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ ICsgICAgICAgIFRVT2JqID0gSWZyVG9VaW50KExpbmUpDQo+IA0KPiArICAgICAgICBOb2RlID0g SWZyVHJlZU5vZGUoRUZJX0lGUl9UT19VSU5UX09QLCBUVU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0 VG9TdHJlYW0oVFVPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBl bmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG91cHBlckV4cC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VG91cHBlckV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5U b3VwcGVyRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUN Cj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBU VU9iaiA9IElmclRvVXBwZXIoTGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9k ZShFRklfSUZSX1RPX1VQUEVSX09QLCBUVU9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o VFVPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkN Cj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG9sd2VyRXhwLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRUb2x3ZXJFeHAoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVG9sd2VyRXhwQ29u dGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBUTE9iaiA9IElmclRv TG93ZXIoTGluZSkNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1RP X0xPV0VSX09QLCBUTE9iaiwNCj4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oVExPYmouR2V0SW5m bygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAg ICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjc2V0RXhwLg0KPiANCj4gKyAgICBkZWYgdmlzaXRTZXRFeHAo c2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHguQmFzZUluZm8uVmFyU3RvcmVJZCA9PSAwOg0K PiANCj4gKyAgICAgICAgICAgICMgc3VwcG9ydCBEYXRlL1RpbWUgcXVlc3Rpb24NCj4gDQo+ICsg ICAgICAgICAgICBWYXJJZFN0ciA9IGN0eC52ZnJTdG9yYWdlVmFySWQoKS5WYXJJZFN0cg0KPiAN Cj4gKyAgICAgICAgICAgIFFJZCwgTWFzaywgUVR5cGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuR2V0 UXVlc3Rpb25JZCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgTm9uZSwgVmFySWRTdHIsIEVGSV9R VUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4g KyAgICAgICAgICAgIGlmICgNCj4gDQo+ICsgICAgICAgICAgICAgICAgKFFJZCA9PSBFRklfUVVF U1RJT05fSURfSU5WQUxJRCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgb3IgKE1hc2sgPT0gMCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgb3IgKFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fTk9STUFMKQ0KPiANCj4gKyAgICAgICAgICAgICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBjYW4n dCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICkNCj4gDQo+ICsgICAgICAgICAgICBpZiBRVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBF LlFVRVNUSU9OX0RBVEU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJU eXBlID0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIFFUeXBlID09 IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToNCj4gDQo+ICsgICAgICAgICAgICAgICAg Y3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIGlmIE1hc2sgPT0gREFURV9ZRUFSX0JJVE1BU0s6DQo+IA0KPiArICAgICAg ICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiBNYXNrID09IERBVEVfREFZX0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09 IFRJTUVfSE9VUl9CSVRNQVNLOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8u VmFyT2Zmc2V0ID0gMA0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX01JTlVU RV9CSVRNQVNLOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0 ID0gMQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX1NFQ09ORF9CSVRNQVNL Og0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMg0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JI YW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1VOU1VQUE9SVEVELA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3Vn aCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgVmFyVHlwZSA9IEVG SV9JRlJfVFlQRV9VTkRFRklORUQNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJUeXBlID0gY3R4Lm51bWVyaWNWYXJT dG9yZVR5cGUoKS5WYXJUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKGN0eC5C YXNlSW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICA9PSBFRklfVkZSX1ZB UlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9OQU1FDQo+IA0KPiArICAgICAgICAgICAgKSBh bmQgKFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX1VOREVGSU5FRCk6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgTGluZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBk b24ndCBzdXBwb3J0IG5hbWUgc3RyaW5nIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgIT0gRUZJX0lGUl9UWVBFX1VOREVG SU5FRDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBWYXJU eXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiBnVmZyVmFy RGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKGN0eC5CYXNlSW5mby5WYXJUeXBl KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBM aW5lLCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0IHZhcg0KPiB0eXBlIHNpemUiKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0gU2l6ZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiBnVmZyVmFyRGF0YVR5 cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKGN0eC5CYXNlSW5mby5WYXJUeXBlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJHZXQv U2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyDQo+IHR5cGUgc2l6ZSIpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgaWYgU2l6ZSAhPSBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIExpbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAiR2V0L1Nl dCBvcGNvZGUgZG9uJ3Qgc3VwcG9ydCBkYXRhIGFycmF5IiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVFNPYmogPSBJZnJTZXQoTGluZSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChUU09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJ bmZvLkV4cE9wQ291bnQgPT0NCj4gMCksIExpbmUpDQo+IA0KPiArICAgICAgICBUU09iai5TZXRW YXJJbmZvKGN0eC5CYXNlSW5mbykNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShF RklfSUZSX1NFVF9PUCwgVFNPYmopDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5v ZGUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25UZXJuYXJ5 T3AuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZiwgY3R4 Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblRlcm5hcnlPcENvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0 eC5jb25kaXRpb25hbEV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGVz ID0gY3R4LmNvbmRpdGlvbmFsRXhwKCkuTm9kZXMNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5maW5k RXhwKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHguZmluZEV4 cCgpLk5vZGVzDQo+IA0KPiArICAgICAgICBpZiBjdHgubWlkRXhwKCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHgubWlkRXhwKCkuTm9kZXMNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC50b2tlbkV4cCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5v ZGVzID0gY3R4LnRva2VuRXhwKCkuTm9kZXMNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5zcGFuRXhw KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHguc3BhbkV4cCgp Lk5vZGVzDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjb25k aXRpb25hbEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Q29uZGl0aW9uYWxFeHAoc2VsZiwgY3R4 OiBWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsgICAgICAgIENPYmogPSBJZnJDb25kaXRpb25hbChMaW5lKQ0KPiANCj4g KyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfQ09ORElUSU9OQUxfT1AsIENPYmos DQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKENPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAg ICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZmluZEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0RmluZEV4cChzZWxmLCBjdHg6IFZmclN5 bnRheFBhcnNlci5GaW5kRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0 YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBGT2JqID0gSWZyRmluZChMaW5lKQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgbGVuKGN0eC5maW5kRm9ybWF0KCkpKToNCj4gDQo+ICsgICAgICAgICAgICBGb3JtYXQg PSBjdHguZmluZEZvcm1hdChpKS5Gb3JtYXQNCj4gDQo+ICsgICAgICAgICAgICBGT2JqLlNldEZv cm1hdChGb3JtYXQpDQo+IA0KPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9G SU5EX09QLCBGT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShGT2JqLkdldEluZm8oKSkp DQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAgICAgICBj dHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2ZpbmRGb3JtYXQuDQo+IA0KPiArICAgIGRlZiB2aXNpdEZpbmRGb3Jt YXQoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQpOg0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5T ZW5zaXRpdmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Gb3JtYXQgPSAweDAw DQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5JbnNlbnNpdGl2ZSgpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgY3R4LkZvcm1hdCA9IDB4MDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu Rm9ybWF0DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNtaWRFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdE1pZEV4cChz ZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5NaWRFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsgICAgICAgIE1PYmogPSBJZnJNaWQoTGluZSkNCj4gDQo+ICsgICAgICAg IE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX01JRF9PUCwgTU9iaiwNCj4gZ0Zvcm1Qa2cuU3Ry dWN0VG9TdHJlYW0oTU9iai5HZXRJbmZvKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGVzLmFw cGVuZChOb2RlKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b2tlbkV4cC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VG9rZW5FeHAoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVG9r ZW5FeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIFRPYmog PSBJZnJUb2tlbihMaW5lKQ0KPiANCj4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9J RlJfVE9LRU5fT1AsIFRPYmosDQo+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFRPYmouR2V0SW5m bygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gDQo+ICsgICAg ICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjc3BhbkV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0U3BhbkV4 cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5TcGFuRXhwQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIEZsYWdzID0gMA0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBG bGFnc0N0eCBpbiBjdHguc3BhbkZsYWdzKCk6DQo+IA0KPiArICAgICAgICAgICAgRmxhZ3MgfD0g RmxhZ3NDdHguRmxhZw0KPiANCj4gKyAgICAgICAgU09iaiA9IElmclNwYW4oTGluZSkNCj4gDQo+ ICsgICAgICAgIFNPYmouU2V0RmxhZ3MoRmxhZ3MpDQo+IA0KPiArICAgICAgICBOb2RlID0gSWZy VHJlZU5vZGUoRUZJX0lGUl9TUEFOX09QLCBTT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVh bShTT2JqLkdldEluZm8oKSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUp DQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZXMNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NwYW5GbGFncy4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0U3BhbkZsYWdzKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlNwYW5GbGFnc0Nv bnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsg ICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5G bGFnID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBlbGlmIGN0 eC5MYXN0Tm9uTWF0Y2goKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5GbGFnID0g MHgwMA0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguRmlyc3ROb25NYXRjaCgpICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgY3R4LkZsYWcgPSAweDAxDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4LkZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXAuDQo+IA0KPiArICAgIGRlZiB2 aXNpdFZmckV4cHJlc3Npb25NYXAoc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhw cmVzc2lvbk1hcENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg TU9iaiA9IElmck1hcChMaW5lKQ0KPiANCj4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfTUFQX09QLCBNT2JqLA0KPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShNT2JqLkdldElu Zm8oKSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAg ICAgICBmb3IgTm9kZSBpbiBjdHguTm9kZS5DaGlsZDoNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Tm9kZXMuYXBwZW5kKE5vZGUpDQo+IA0KPiArICAgICAgICBFT2JqID0gSWZyRW5kKCkNCj4gDQo+ ICsgICAgICAgIEVPYmouU2V0TGluZU5vKGN0eC5zdG9wLmxpbmUpDQo+IA0KPiArICAgICAgICBO b2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9FTkRfT1AsIEVPYmosDQo+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKEVPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBl bmQoTm9kZSkNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0 VGV4dChzZWxmLCBjdHgpOg0KPiANCj4gKyAgICAgICAgaWYgY3R4ID09IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIGN0eC50ZXh0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBUcmFuc0lk KHNlbGYsIFN0cmluZ0lkZW50aWZpZXJUb2tlbiwgRGVmYXVsdFZhbHVlPU5vbmUpOg0KPiANCj4g KyAgICAgICAgaWYgU3RyaW5nSWRlbnRpZmllclRva2VuID09IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIERlZmF1bHRWYWx1ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc3RyKFN0cmluZ0lkZW50aWZpZXJUb2tlbikNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFRyYW5zTnVtKHNlbGYsIE51bWJlclRva2VuLCBEZWZhdWx0VmFsdWU9MCk6 DQo+IA0KPiArICAgICAgICBpZiBOdW1iZXJUb2tlbiA9PSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgU3RyVG9rZW4gPSBzdHIoTnVtYmVyVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAg aWYgU3RyVG9rZW4uc3RhcnRzd2l0aCgiMHgiKSBvciBTdHJUb2tlbi5zdGFydHN3aXRoKCIwWCIp Og0KPiANCj4gKyAgICAgICAgICAgICAgICBOdW1iZXJUb2tlbiA9IGludChTdHJUb2tlbiwgMTYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgTnVtYmVy VG9rZW4gPSBpbnQoU3RyVG9rZW4pDQo+IA0KPiArICAgICAgICByZXR1cm4gTnVtYmVyVG9rZW4N Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEFzc2lnblF1ZXN0aW9uS2V5KHNlbGYsIE9wT2JqLCBL ZXkpOg0KPiANCj4gKyAgICAgICAgaWYgS2V5ID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBPcE9iai5HZXRRRmxhZ3MoKSAmIEVG SV9JRlJfRkxBR19DQUxMQkFDSzoNCj4gDQo+ICsgICAgICAgICAgICAjIGlmIHRoZSBxdWVzdGlv biBpcyBub3QgQ0FMTEJBQ0sgaWdub3JlIHRoZSBrZXkuDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5WZnJRdWVzdGlvbkRCLlVwZGF0ZVF1ZXN0aW9uSWQoT3BPYmouR2V0UXVlc3Rpb25JZCgpLCBL ZXksDQo+IGdGb3JtUGtnKQ0KPiANCj4gKyAgICAgICAgICAgIE9wT2JqLlNldFF1ZXN0aW9uSWQo S2V5KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBFeHRy YWN0T3JpZ2luYWxUZXh0KHNlbGYsIGN0eCk6DQo+IA0KPiArICAgICAgICBTb3VyY2UgPSBjdHgu c3RhcnQuZ2V0VG9rZW5Tb3VyY2UoKQ0KPiANCj4gKyAgICAgICAgSW5wdXRTdHJlYW0gPSBTb3Vy Y2UuaW5wdXRTdHJlYW0NCj4gDQo+ICsgICAgICAgIHN0YXJ0LCBzdG9wID0gY3R4LnN0YXJ0LnN0 YXJ0LCBjdHguc3RvcC5zdG9wDQo+IA0KPiArICAgICAgICBUZXh0ID0gSW5wdXRTdHJlYW0uZ2V0 VGV4dChzdGFydCwgc3RvcCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBUZXh0LnJlcGxhY2UoIlxy IiwgIiIpLnJlcGxhY2UoIlxuIiwgIiIpLnJlcGxhY2UoIiAgIiwgIiAiKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoc2VsZiwgRGVmYXVsdElkLCBM aW5lLCBUb2tlblZhbHVlKToNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihz ZWxmLlVzZWREZWZhdWx0QXJyYXkpKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLlVzZWRE ZWZhdWx0QXJyYXlbaV0gPT0gRGVmYXVsdElkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBnVmZy RXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZygNCj4gDQo+ICsNCj4gRUZJX1ZGUl9XQVJOSU5HX0NP REUuVkZSX1dBUk5JTkdfREVGQVVMVF9WQUxVRV9SRURFRklORUQsIExpbmUsDQo+IFRva2VuVmFs dWUNCj4gDQo+ICsgICAgICAgICAgICAgICAgKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg bGVuKHNlbGYuVXNlZERlZmF1bHRBcnJheSkgPj0gRUZJX0lGUl9NQVhfREVGQVVMVF9UWVBFIC0g MToNCj4gDQo+ICsNCj4gZ1ZmckVycm9ySGFuZGxlLkhhbmRsZUVycm9yKFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GQVRBTF9FUlJPUiwNCj4gTGluZSwgVG9rZW5WYWx1ZSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYuVXNlZERlZmF1bHRBcnJheS5hcHBlbmQoRGVmYXVsdElkKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgRXJyb3JIYW5kbGVyKHNlbGYsIFJldHVybkNvZGUsIExpbmVO dW0sIFRva2VuVmFsdWU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBzZWxmLlBhcnNlclN0YXR1cyAr PSBnVmZyRXJyb3JIYW5kbGUuSGFuZGxlRXJyb3IoUmV0dXJuQ29kZSwNCj4gTGluZU51bSwgVG9r ZW5WYWx1ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIENvbXBhcmVFcnJvckhhbmRsZXIoDQo+ IA0KPiArICAgICAgICBzZWxmLCBSZXR1cm5Db2RlLCBFeHBlY3RlZENvZGUsIExpbmVOdW0sIFRv a2VuVmFsdWU9Tm9uZSwNCj4gRXJyb3JNc2c9Tm9uZQ0KPiANCj4gKyAgICApOg0KPiANCj4gKyAg ICAgICAgaWYgUmV0dXJuQ29kZSAhPSBFeHBlY3RlZENvZGU6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5QYXJzZXJTdGF0dXMgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIGdWZnJFcnJvckhhbmRs ZS5QcmludE1zZyhMaW5lTnVtLCAiRXJyb3IiLCBFcnJvck1zZywgVG9rZW5WYWx1ZSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIEluc2VydENoaWxkKHNlbGYsIFBhcmVudE5vZGU6IElmclRyZWVO b2RlLCBDaGlsZEN0eCk6DQo+IA0KPiArICAgICAgICBpZiBDaGlsZEN0eCAhPSBOb25lIGFuZCBD aGlsZEN0eC5Ob2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgUGFyZW50Tm9kZS5pbnNl cnRDaGlsZChDaGlsZEN0eC5Ob2RlKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSW5zZXJ0RW5k Tm9kZShzZWxmLCBQYXJlbnROb2RlLCBMaW5lKToNCj4gDQo+ICsgICAgICAgIEVPYmogPSBJZnJF bmQoKQ0KPiANCj4gKyAgICAgICAgRU9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAg IEVOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9FTkRfT1AsIEVPYmosDQo+IGdGb3JtUGtnLlN0 cnVjdFRvU3RyZWFtKEVPYmouR2V0SW5mbygpKSkNCj4gDQo+ICsgICAgICAgIFBhcmVudE5vZGUu aW5zZXJ0Q2hpbGQoRU5vZGUpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRDdXJBcnJheVNp emUoc2VsZik6DQo+IA0KPiArICAgICAgICBTaXplID0gMQ0KPiANCj4gKyAgICAgICAgaWYgc2Vs Zi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4g DQo+ICsgICAgICAgICAgICBTaXplID0gMQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVz dFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+IA0KPiArICAg ICAgICAgICAgU2l6ZSA9IDINCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAg IFNpemUgPSA0DQo+IA0KPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAgICAgICAgICBTaXplID0g OA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGludChzZWxmLkN1cnJRZXN0VmFySW5m by5WYXJUb3RhbFNpemUgLyBTaXplKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0UXVlc3Rp b25EQihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLlZmclF1ZXN0aW9uREINCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtkZWwgVmZyU3ludGF4UGFyc2VyDQo+IA0KPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvX19pbml0X18ucHkNCj4g Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9fX2luaXRfXy5weQ0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi43MmQzYTQ3YmI3DQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvX19p bml0X18ucHkNCj4gQEAgLTAsMCArMSBAQA0KPiArX19hbGxfXyA9IFsiVmZyQ29tcGlsZXIiXQ0K PiANCj4gLS0NCj4gMi4zOS4xLndpbmRvd3MuMQ0KDQoNCgotPS09LT0tPS09LT0tPS09LT0tPS09 LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMg Z3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTEwOTE0KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5p by9nL2RldmVsL21lc3NhZ2UvMTEwOTE0Ck11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMu aW8vbXQvMTAyNDYzNDYwLzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3Jv dXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIg W3JlYmVjY2FAb3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=