From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.34512.1670287909500687287 for ; Mon, 05 Dec 2022 16:51:49 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=EeOzE9lb; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: bob.c.feng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670287909; x=1701823909; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=07mH6YRL3bdjp9KgyGxyTs2TPsmQ2sz1ElUEl+NcQA0=; b=EeOzE9lbDuoqgW11feqmFD11bcydBU0QTSR5QDbbhXF9ayNv7rcm0pHF t7DNzM7CctjnbQz/cSVkdR2MJUhrpPgqZBU8s7f40wVpRR85drdLsP8d0 JZzJxgPTQchp/gvs+iX6KgZ1LeHqpdptvdtd/dz0swTxgKJKjYeqBZIrB l3OSC8ow0vuboT5LTB1/qCZ/I9eYXN+OzPcwfVyqwpFYXTd8CFer5pwkp xCW/YYb64ya17mg54Cn9TRoAWu65epujiaSzuTQ+kW0j8oNrPmwXjs+Wg Np/gzBvOx4SjrQ4u3NNzZRHJoyRCA/Ia2MR7fvq01XB1Ss9sI43/Zncsi w==; X-IronPort-AV: E=McAfee;i="6500,9779,10552"; a="296192902" X-IronPort-AV: E=Sophos;i="5.96,220,1665471600"; d="scan'208";a="296192902" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 16:51:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10552"; a="770542591" X-IronPort-AV: E=Sophos;i="5.96,220,1665471600"; d="scan'208";a="770542591" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga004.jf.intel.com with ESMTP; 05 Dec 2022 16:51:41 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 5 Dec 2022 16:51:39 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 5 Dec 2022 16:51:38 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 5 Dec 2022 16:51:38 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.44) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 5 Dec 2022 16:51:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jFPEETQ8ZboNoSHQfiZZaA7GyrxW0L37aksWHJMdtXj3stGjberihLwPD60q7sOvxvyPOB5CB57S6dOQ/aVKDe4s7A6u7yraNRnPaMa47Yy81YmWbzpvgKrCShN1w6gi9dkfxU5mXcPvvgfdwGZZ5ruSm9zkSB1Y4VTmHm+5zIRIVkyUwxfMU9lDP4oFrSg1Se90URinP8MyB7I4dcGY2u8EDxgKBMvrUHoMIY5HFayEZBKX3hkWNSgJA8j1cKBqj6oPKAYRVlkU4CuUo0yOgGlrRhStkg5TqcxWdL30T8GKZXGPI/2amiqfxfNPE7CVtDi1faMnX7t/Qaglkm59xg== 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=07mH6YRL3bdjp9KgyGxyTs2TPsmQ2sz1ElUEl+NcQA0=; b=T/xV0LDzCNyHRS/5TlNEhtlZeGQGFg0zlb0e+oYzPqDawZ1aPsH1KPRLwnFMPGurczrmdyMVx+XytqOZQqjNuj4ckhHzDUIdsSe3Z0naTTN8uZxpAdX9y9+xbRHwC/4YxnhmILhSCwY/mUvt5pHb0+Y8h6SPCO0xfMd1Inl4Q/iUTugS4jXRXuGJbw4CqiC6xxeDOC7WZ+gQf7bXd6Ux8tmjbeMaxvA7VFbTKWZGxsGpoQTGRGvfoTHYjvNl8xH34wXgw4riC0GPR3GrcEIIPP4DHX0UpDXEOWLZuQmakszMU0sWrPEqnFzgo2uc7oaFPhZR1IOGKCSMbGbLaL9WZg== 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 Received: from PH7PR11MB5863.namprd11.prod.outlook.com (2603:10b6:510:135::11) by CO1PR11MB5057.namprd11.prod.outlook.com (2603:10b6:303:6c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Tue, 6 Dec 2022 00:51:04 +0000 Received: from PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::5d54:9569:9daf:e8a9]) by PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::5d54:9569:9daf:e8a9%7]) with mapi id 15.20.5880.013; Tue, 6 Dec 2022 00:51:04 +0000 From: "Bob Feng" To: "Chen, Christine" , "devel@edk2.groups.io" CC: "Yang, Yuting2" , "Gao, Liming" Subject: Re: [Patch V2 1/3] [edk2-staging]BaseTools: Add Python VfrCompiler tool Thread-Topic: [Patch V2 1/3] [edk2-staging]BaseTools: Add Python VfrCompiler tool Thread-Index: AQHY+M6yNzZ1Y1uic060v719FVDIW65gJ3yA Date: Tue, 6 Dec 2022 00:51:03 +0000 Message-ID: References: <20221115084539.331-1-yuwei.chen@intel.com> In-Reply-To: <20221115084539.331-1-yuwei.chen@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB5863:EE_|CO1PR11MB5057:EE_ x-ms-office365-filtering-correlation-id: 6c9a2ad8-e81d-4d6e-d1c2-08dad723f3ca x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vy4oulXduHOPseKSdnmJqgYco3lly/IBp1bqouHpvi54whNESMM/mPdjN1Nm1zyO2XW9XPy50PrV/c4Z/5gEYdPB3AZSCL0Nd8LFSVfTGQ6p4QgylvqZLyWqBg9bfq0Z8n4UTZRhhYsbfCjTUbvq9h8AzONbYO5Qj5hq/5V4gP/Q2xwo9Ns4ObakbvfmzNHbB8QH0PDfWn1Ve1MYl9RT5N4rhXqOyasbAub68Tm1LoSwhx7CHBZS5wP/Azx2qnROx7K3u83HgLFB64XZjPnhrX22yD3xdvWnSVw2LjNZudcPiGlX+bv24s2FyX+EdxRBV7kegxSq131uXaQzNVXVjuHpxXTAKjK8QUY+cMb78llkl3Og/wsAjdgcvUGCILYyliMpy034ux/Y52UPzypsRBFiEVSQMIri0qv407uhqnxdMLvKua0uIdA0lgorsAsKW6JT5Q9gMYjWjgMACVHRp9InCJYQ74f1TsBzslq4Ki6gvPil5SSXhqJ78f42V2RmLjmCSGMPbNyLjnBU2OU/kwnFXMe+a41BD9lHHo0clTsMgSM+262rCco+4qho0Njirk5BqXq7RA8/x7SL9YVGTLeI0MgoLw24Yt1pnZJYD/bE10x7iAPeq9JTFjp5shxRuXFd4sKQ1XWlWy3YZqKssuNL3cTiZjhUpHX2XP2GCSXq9HxIl4qHHRW8CidXxKVnGRnCaecSYr+fNQQ8vKrhXAgivONLGEAAzNMBXfNjKtQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(366004)(396003)(376002)(346002)(136003)(451199015)(66899015)(82960400001)(30864003)(38100700002)(86362001)(8936002)(41300700001)(2906002)(4326008)(5660300002)(38070700005)(83380400001)(122000001)(33656002)(66446008)(478600001)(966005)(66946007)(66476007)(66556008)(316002)(19627235002)(110136005)(71200400001)(54906003)(76116006)(55016003)(52536014)(8676002)(64756008)(53546011)(186003)(7696005)(9686003)(6506007)(26005)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UXhoUmRaWFNBeVNqOWhsMzN2bUJCbW1VaHNYVHZnNE5WYU9jVmFNVkRkeXo2?= =?utf-8?B?bGRoY0RVU0hoYnZCL0lmYUV5UDVsYk9KeVppZ3AxNTQ4VElmemNJQTBMUkov?= =?utf-8?B?MzVqUGN3WXNqMzBHeUI0OFN0THVKRlZhdXNVeFNnMkN1U0NmemFyTXRuWEVZ?= =?utf-8?B?cnZHOFRUYWJqa0IwK1NCVXpaNnE4a3A0cjZUMHpBUUZFdFVGSVhPQTJnSlVD?= =?utf-8?B?NG9oOGsxZHJHemxJTWlOQXA2Vi95cGlTYWpWcldrWkJyQ2ZubTU3NVk2SDNz?= =?utf-8?B?RVZ2eXNzUnFkK3NoSkhqMkpoRE52RkU2VUtoUlRyWG1YNzFoZ3BrZFVUak5s?= =?utf-8?B?V2h4YlV3Sm8yTGhCdnBRY3YvQTdNaFdQSjlSaDAvc1o2eU44emJFOGlsbCta?= =?utf-8?B?OVJoT3E2K29HQUI3WXIwWHRUVGpUanE2aUJVUVhVSzA1OXBabmtySjE0Z2U5?= =?utf-8?B?Z0dTdXJ0RHVGdklMS1Y3MmFGeXZaU1NpU0NKY1N0SFVkdzhkODNBdjAwT0hC?= =?utf-8?B?OU9OREc1aGJxeXQ3WTdJWWl2cTd6NWUvVVFwZzZEU2VrUm1NRGFmMG1aQXJH?= =?utf-8?B?SVB3TkF2QmpSZ25YVk5jbjhxZHlQMDk4S0lqR28rS05iaWV5SlNLWlRHR2hH?= =?utf-8?B?UkhiNWoyaEk5Vy9tRkhXMjc2NUtJTXdtVkNoYUdIeS8vRkZUcTU1QURZYlNB?= =?utf-8?B?cWFVL1BMZDdMbW12Sk1zb1dIR2dqS1p0bDNkTFpSMnBWelcrclg5OWwxK1VH?= =?utf-8?B?VGJMYkFINGl5S2kzWVB2SVBxdDg3eHRDU2ZXMC9vT0VneUo5cGp5Rm5kOXZQ?= =?utf-8?B?T0hVbEZFQzZ5bDJOeWlDb01yYThUWkZpVnBrVFNQdC84dVVZNytsZVgwcFUz?= =?utf-8?B?WEV2dWVRSFNMQ1NTK0VQeU9pdGsvZWttVmZvb01Uc05tQkdFRlMwRjB4dWlk?= =?utf-8?B?Ymo2eUFMUjVieHk0VnhsejZmNlNCb2MzbHBlby9TVVlkUWNWTHhZdGdqMEFC?= =?utf-8?B?d3VMK2NwNWxmYlZVRm5HZjA4T3h1NTM5K1FpcHdFTnNKQktSc3d3bkFmZjY4?= =?utf-8?B?anFtc0F4WTI3Yk43VTZNUnM2K3ExaTJMNVhzdWpwRi9vdHREcjJ1MGlKTTNi?= =?utf-8?B?L2FEb05PdkVERzFZcTlIS1VYaWlmQklmMGsxM0E2WWkzcHdPK04rdDNYYjZE?= =?utf-8?B?VWRzaVhnQUtORmdUc3NqRWVxRUpoVXluUGdNVk9hSGV2OE9qZkVKcURxQVJi?= =?utf-8?B?ajFCM21wOUNlSW1XUFd6NllYYS9DZUNTZWhnOEFiemJHdWU5dWN3RjgxOW8w?= =?utf-8?B?WjZaQzJpNWlYTnN5eXQxN3pTRDI2N0ZVMkdoVGZlclQzNDRLQk5Cb043dlo2?= =?utf-8?B?RXhnUUd0QlVscENkcDFJdUk0YUZiT052SWowOWFjSy9qeDU4bElhU3hDT2pj?= =?utf-8?B?ckRmekRoU1dqZ0hoRTRXdll2b1NTajIrN3JuTXQ2UFlETXEybEp2ckF0RkpK?= =?utf-8?B?Y3htbHU4L25SVENLRWlWeU1YQnRHQ1FVKzRhQm50UW1MVHJ5SzRFQ3RWS2h0?= =?utf-8?B?VWVZY0QyYXY1b0dNTUxJQWd5UnBKRGUvbXVFcmZsdzczSWMvYnMydnJZMzVI?= =?utf-8?B?YXpxNWlPbVpmRkFpYW1FVEUvcXFNbWQwb1hYUUdJejl6MEp4cjhCOGxpeWhl?= =?utf-8?B?QnpPWkIxTFNXTzhheHdZNHJiYUtkMHE3TDZCM21kL2FieVJhT1NQK3h1K2tV?= =?utf-8?B?UVRpWnhrUEJqMjVCZlJyOEQ1OFpEb05DUmVDbko3czRScFNHWGthNVRXSVhr?= =?utf-8?B?VlNHS0RVSnJqNFBqTjc0eVMzbUFScGtYOVNGSjd5SDdXL0I1SGJRK05HQ0Za?= =?utf-8?B?TWdsaTJpVDBiZkdpS21OYk5yTkM1ZGRRMVNWd0dEUi9KLzMwTWJDRDh4Mmxk?= =?utf-8?B?K3I3cUlQcCtQdVpqZTRYd09KUFBKNHFEbEFjTkhuKzh4dUNLVFJvV2JvWlRu?= =?utf-8?B?cUtmTHlqeEJEeFdPRE1nWXRRaHlCOTVWTk16R09meTVkdlNBNlpMREU3MDhP?= =?utf-8?B?TU5UNVFiWVJCY25LWnpmazBZNE1vcDlWeks0cnh0NENNTVczckdPbHBRV1Br?= =?utf-8?Q?RDya2YBR0jXr1tvNtTCCr9IG5?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c9a2ad8-e81d-4d6e-d1c2-08dad723f3ca X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Dec 2022 00:51:04.0172 (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: 16RaM/jVXYYp1VjSTkhGY7cOOaXwnOUBfWMhc9obzEe22b56XtTHm4qh4ashLuq6dq98W5FJg5fo20b1wLClhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5057 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhpcyBwYXRjaCBsb29rcyBnb29kLiBBcyB3ZSBhcmUgV0lQIG9mIGNvbnZlcnQgQyB0b29sIHRv IFB5dGhvbiB0b29sLCBUaGlzIHBhdGNoIGNhbiBiZSBtZXJnZWQgdG8gc3RhZ2luZyBicmFuY2gu DQoNClJldmlld2VkLWJ5OiBCb2IgRmVuZyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQoNCi0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5A aW50ZWwuY29tPiANClNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDE1LCAyMDIyIDQ6NDYgUE0NClRv OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0Bp bnRlbC5jb20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWlu ZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KU3ViamVjdDogW1BhdGNoIFYyIDEvM10gW2Vk azItc3RhZ2luZ11CYXNlVG9vbHM6IEFkZCBQeXRob24gVmZyQ29tcGlsZXIgdG9vbA0KDQpGcm9t OiBZdXRpbmcgWWFuZyA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCg0KVGhpcyBpcyB0aGUgcHl0 aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDIFZmckNvbXBpbGVyIHRvb2wuDQpDdXJyZW50bHks IHRoaXMgcHl0aG9uIHRvb2wgd2lsbCBnZW5lcmF0ZSB5YW1sL2pzb24gZmlsZXMNCmZvciBiZXR0 ZXIgdmFyaWFibGUgcmVsYXRlZCBpbmZvcm1hdGlvbiBwcmVzZW50YXRpb24uDQpJbiBmdXR1cmUs IGl0IHdpbGwgY292ZXIgdGhlIHNhbWUgdXNhZ2UgYXMgdGhlIEMgdG9vbC4NCg0KQ2M6IEJvYiBG ZW5nIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCkNjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlv c29mdC5jb20uY24+DQpDYzogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQpTaWdu ZWQtb2ZmLWJ5OiBZdXRpbmcgWWFuZyA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCi0tLQ0KIEJh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0NvbW1vbkN0eXBlcy5weSAgICAgfCAg MTM5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvUkVBRE1F Lm1kICAgICAgICAgICB8ICAgIDIwICsNCiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21w aWxlci9WZnJFcnJvci5weSAgICAgICAgIHwgICAxNjIgKysrKysrKysNCiBCYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5ICAgICAgIHwgIDI3MzggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXguZzQg ICAgICAgIHwgIDE4ODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkgICB8ICAxNzA5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L1ZmclN5bnRheFBhcnNlci5weSAgfCAyMDQ2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4VmlzaXRvci5weSB8ICA1 MTA2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyVHJlZS5w eSAgICAgICAgICB8ICAgIDg4ICsrKysrDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvVmZyVXRpbGl0eS5weSAgICAgICB8ICAxOTkxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9tYWluLnB5 ICAgICAgICAgICAgIHwgICAgMjcgKysNCiAxMSBmaWxlcyBjaGFuZ2VkLCAzNTU4MiBpbnNlcnRp b25zKCspDQoNCmRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxl ci9Db21tb25DdHlwZXMucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9D b21tb25DdHlwZXMucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi43 MzFhZTE1NjA5DQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9W ZnJDb21waWxlci9Db21tb25DdHlwZXMucHkNCkBAIC0wLDAgKzEsMTM5NCBAQA0KK2Zyb20gY3R5 cGVzIGltcG9ydCAqDQoNCitmcm9tIHJlIGltcG9ydCBBLCBYDQoNCitmcm9tIHRlbG5ldGxpYiBp bXBvcnQgWDNQQUQNCg0KK2Zyb20gdGtpbnRlciBpbXBvcnQgWVZpZXcNCg0KK2ltcG9ydCB1dWlk DQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckVycm9yIGltcG9ydCAqDQoNCitmcm9tIHN0cnVjdCBp bXBvcnQgKg0KDQorDQoNCitFRklfU1RSSU5HX0lEX0lOVkFMSUQgPSAweDANCg0KK0VGSV9ISUlf REVGQVVMVF9DTEFTU19TVEFOREFSRCA9IDB4MDAwMA0KDQorRUZJX0hJSV9ERUZBVUxUX0NMQVNT X01BTlVGQUNUVVJJTkcgPSAweDAwMDENCg0KK0VGSV9JRlJfTUFYX0xFTkdUSCA9IDB4RkYNCg0K K0VGSV9WQVJTVE9SRV9JRF9JTlZBTElEID0gMA0KDQorRUZJX1ZBUlNUT1JFX0lEX1NUQVJUID0g MHgyMA0KDQorRUZJX1ZBUk9GRlNFVF9JTlZBTElEID0gMHhGRkZGDQoNCitFRklfSU1BR0VfSURf SU5WQUxJRCA9IDB4RkZGRg0KDQorDQoNCitFRklfTk9OX0RFVklDRV9DTEFTUyA9IDB4MDANCg0K K0VGSV9ESVNLX0RFVklDRV9DTEFTUyA9IDB4MDENCg0KK0VGSV9WSURFT19ERVZJQ0VfQ0xBU1Mg PSAweDAyDQoNCitFRklfTkVUV09SS19ERVZJQ0VfQ0xBU1MgPSAweDA0DQoNCitFRklfSU5QVVRf REVWSUNFX0NMQVNTID0gMHgwOA0KDQorRUZJX09OX0JPQVJEX0RFVklDRV9DTEFTUyA9IDB4MTAN Cg0KK0VGSV9PVEhFUl9ERVZJQ0VfQ0xBU1MgPSAweDIwDQoNCisNCg0KK0VGSV9TRVRVUF9BUFBM SUNBVElPTl9TVUJDTEFTUyA9IDB4MDANCg0KK0VGSV9HRU5FUkFMX0FQUExJQ0FUSU9OX1NVQkNM QVNTID0gMHgwMQ0KDQorRUZJX0ZST05UX1BBR0VfU1VCQ0xBU1MgPSAweDAyDQoNCitFRklfU0lO R0xFX1VTRV9TVUJDTEFTUyA9IDB4MDMNCg0KKw0KDQorIyBFRklfSElJX1BBQ0tBR0VfVFlQRV94 Lg0KDQorDQoNCitFRklfSElJX1BBQ0tBR0VfVFlQRV9BTEwgPSAweDAwDQoNCitFRklfSElJX1BB Q0tBR0VfVFlQRV9HVUlEID0gMHgwMQ0KDQorRUZJX0hJSV9QQUNLQUdFX0ZPUk0gPSAweDAyDQoN CitFRklfSElJX1BBQ0tBR0VfS0VZQk9BUkRfTEFZT1VUID0gMHgwMw0KDQorRUZJX0hJSV9QQUNL QUdFX1NUUklOR1MgPSAweDA0DQoNCitFRklfSElJX1BBQ0tBR0VfRk9OVFMgPSAweDA1DQoNCitF RklfSElJX1BBQ0tBR0VfSU1BR0VTID0gMHgwNg0KDQorRUZJX0hJSV9QQUNLQUdFX1NJTVBMRV9G T05UUyA9IDB4MDcNCg0KK0VGSV9ISUlfUEFDS0FHRV9ERVZJQ0VfUEFUSCA9IDB4MDgNCg0KK0VG SV9ISUlfUEFDS0FHRV9FTkQgPSAweERGDQoNCitFRklfSElJX1BBQ0tBR0VfVFlQRV9TWVNURU1f QkVHSU4gPSAweEUwDQoNCitFRklfSElJX1BBQ0tBR0VfVFlQRV9TWVNURU1fRU5EID0gMHhGRg0K DQorDQoNCitFRklfSUZSX0VYVEVORF9PUF9MQUJFTCA9IDB4MA0KDQorRUZJX0lGUl9FWFRFTkRf T1BfQkFOTkVSID0gMHgxDQoNCitFRklfSUZSX0VYVEVORF9PUF9USU1FT1VUID0gMHgyDQoNCitF RklfSUZSX0VYVEVORF9PUF9DTEFTUyA9IDB4Mw0KDQorRUZJX0lGUl9FWFRFTkRfT1BfU1VCQ0xB U1MgPSAweDQNCg0KKw0KDQorTUFYX0lGUl9FWFBSRVNTSU9OX0RFUFRIID0gMHg5DQoNCisNCg0K K0lOVkFMSURfQVJSQVlfSU5ERVggPSAweEZGRkZGRkZGDQoNCisNCg0KK0VGSV9JRlJfVFlQRV9O VU1fU0laRV84ID0gMHgwMA0KDQorRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2ID0gMHgwMQ0KDQor RUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyID0gMHgwMg0KDQorRUZJX0lGUl9UWVBFX05VTV9TSVpF XzY0ID0gMHgwMw0KDQorRUZJX0lGUl9UWVBFX0JPT0xFQU4gPSAweDA0DQoNCitFRklfSUZSX1RZ UEVfVElNRSA9IDB4MDUNCg0KK0VGSV9JRlJfVFlQRV9EQVRFID0gMHgwNg0KDQorRUZJX0lGUl9U WVBFX1NUUklORyA9IDB4MDcNCg0KK0VGSV9JRlJfVFlQRV9PVEhFUiA9IDB4MDgNCg0KK0VGSV9J RlJfVFlQRV9VTkRFRklORUQgPSAweDA5DQoNCitFRklfSUZSX1RZUEVfQUNUSU9OID0gMHgwQQ0K DQorRUZJX0lGUl9UWVBFX0JVRkZFUiA9IDB4MEINCg0KK0VGSV9JRlJfVFlQRV9SRUYgPSAweDBD DQoNCisNCg0KKw0KDQorRUZJX0lGUl9GTEFHU19IT1JJWk9OVEFMID0gMHgwMQ0KDQorDQoNCitF RklfSUZSX0ZMQUdfUkVBRF9PTkxZID0gMHgwMQ0KDQorRUZJX0lGUl9GTEFHX0NBTExCQUNLID0g MHgwNA0KDQorRUZJX0lGUl9GTEFHX1JFU0VUX1JFUVVJUkVEID0gMHgxMA0KDQorRUZJX0lGUl9G TEFHX1JFU1RfU1RZTEUgPSAweDIwDQoNCitFRklfSUZSX0ZMQUdfUkVDT05ORUNUX1JFUVVJUkVE ID0gMHg0MA0KDQorRUZJX0lGUl9GTEFHX09QVElPTlNfT05MWSA9IDB4ODANCg0KKw0KDQorRUZJ X0lGUl9TVFJJTkdfTVVMVElfTElORSA9IDB4MDENCg0KKw0KDQorRURLSUlfSUZSX0RJU1BMQVlf QklUID0gMHhDMA0KDQorRURLSUlfSUZSX0RJU1BMQVlfSU5UX0RFQ19CSVQgPSAweDAwDQoNCitF REtJSV9JRlJfRElTUExBWV9VSU5UX0RFQ19CSVQgPSAweDQwDQoNCitFREtJSV9JRlJfRElTUExB WV9VSU5UX0hFWF9CSVQgPSAweDgwDQoNCisNCg0KK0VES0lJX0lGUl9OVU1FUklDX1NJWkVfQklU ID0gMHgzRg0KDQorDQoNCitFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUgPSAweDEwDQoNCisNCg0K Kw0KDQorY2xhc3MgRUZJX0dVSUQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnRGF0YTEnLCBjX3VpbnQzMiksDQoNCisgICAg ICAgICgnRGF0YTInLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnRGF0YTMnLCBjX3VpbnQxNiks DQoNCisgICAgICAgICgnRGF0YTQnLCBjX3VieXRlICogOCksDQoNCisgICAgXQ0KDQorDQoNCisg ICAgZGVmIGZyb21fbGlzdChzZWxmLCBsaXN0Zm9ybWF0OiBsaXN0KSAtPiBOb25lOg0KDQorICAg ICAgICBzZWxmLkRhdGExID0gbGlzdGZvcm1hdFswXQ0KDQorICAgICAgICBzZWxmLkRhdGEyID0g bGlzdGZvcm1hdFsxXQ0KDQorICAgICAgICBzZWxmLkRhdGEzID0gbGlzdGZvcm1hdFsyXQ0KDQor ICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToNCg0KKyAgICAgICAgICAgIHNlbGYuRGF0YTRbaV0g PSBsaXN0Zm9ybWF0W2kgKyAzXQ0KDQorDQoNCisgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXJn dWlkKSAtPiBib29sOg0KDQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlcmd1aWQsIEVG SV9HVUlEKToNCg0KKyAgICAgICAgICAgIHJldHVybiAnSW5wdXQgaXMgbm90IHRoZSBHVUlEIGlu c3RhbmNlIScNCg0KKyAgICAgICAgcnQgPSBGYWxzZQ0KDQorICAgICAgICBpZiBzZWxmLkRhdGEx ID09IG90aGVyZ3VpZC5EYXRhMSBhbmQgc2VsZi5EYXRhMiA9PSBvdGhlcmd1aWQuRGF0YTIgYW5k IHNlbGYuRGF0YTMgPT0gb3RoZXJndWlkLkRhdGEzOg0KDQorICAgICAgICAgICAgcnQgPSBUcnVl DQoNCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToNCg0KKyAgICAgICAgICAgICAgICBy dCA9IHJ0ICYgKHNlbGYuRGF0YTRbaV0gPT0gb3RoZXJndWlkLkRhdGE0W2ldKQ0KDQorICAgICAg ICByZXR1cm4gcnQNCg0KKw0KDQorDQoNCitHdWlkQXJyYXkgPSBjX3VieXRlICogOA0KDQorRUZJ X0hJSV9QTEFURk9STV9TRVRVUF9GT1JNU0VUX0dVSUQgPSBFRklfR1VJRCgNCg0KKyAgICAweDkz MDM5OTcxLCAweDg1NDUsIDB4NGIwNCwNCg0KKyAgICBHdWlkQXJyYXkoMHhiNCwgMHg1ZSwgMHgz MiwgMHhlYiwgMHg4MywgMHgyNiwgMHg0LCAweGUpKQ0KDQorDQoNCitFRklfSUZSX1RJQU5PX0dV SUQgPSBFRklfR1VJRCgNCg0KKyAgICAweGYwYjE3MzUsIDB4ODdhMCwgMHg0MTkzLA0KDQorICAg IEd1aWRBcnJheSgweGIyLCAweDY2LCAweDUzLCAweDhjLCAweDM4LCAweGFmLCAweDQ4LCAweGNl KSkNCg0KKw0KDQorRURLSUlfSUZSX0JJVF9WQVJTVE9SRV9HVUlEID0gKDB4ODJEREQ2OEIsIDB4 OTE2MywgMHg0MTg3LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJh eSgweDlCLCAweDI3LCAweDIwLCAweEE4LCAweEZELCAweDYwLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweEE3LCAweDFEKSkNCg0KKw0KDQorRUZJX0lGUl9G UkFNRVdPUktfR1VJRCA9ICgweDMxY2E1ZDFhLCAweGQ1MTEsIDB4NDkzMSwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDB4YjcsIDB4ODIsIDB4YWUsIDB4NmIsIDB4MmIs IDB4MTcsIDB4OGMsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3 KSkNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9PUF9IRUFERVIoU3RydWN0dXJlKToNCg0KKyAgICBf cGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnT3BDb2RlJywgY191 Ynl0ZSksDQoNCisgICAgICAgICgnTGVuZ3RoJywgY191Ynl0ZSwgNyksICAjDQoNCisgICAgICAg ICgnU2NvcGUnLCBjX3VieXRlLCAxKSwgICMNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3Mg RUZJX0lGUl9GT1JNX1NFVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBf ZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoN CisgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdGb3JtU2V0VGl0bGUn LCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnSGVscCcsIGNfdWludDE2KSwNCg0KKyAgICAgICAg KCdGbGFncycsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZS X0dVSURfQ0xBU1MoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxk c18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAg ICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgICAgICgnRXh0ZW5kT3BDb2RlJywgY191 Ynl0ZSksDQoNCisgICAgICAgICgnQ2xhc3MnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfR1VJRF9TVUJDTEFTUyhTdHJ1Y3R1cmUpOg0KDQorICAgIF9w YWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAg ICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCg0KKyAgICAgICAgKCdTdWJDbGFzcycsIGNf dWludDE2KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9ERUZBVUxUU1RP UkUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoN CisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ0Rl ZmF1bHROYW1lJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0RlZmF1bHRJZCcsIGNfdWludDE2 KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9WQVJTVE9SRShTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcsIEVGSV9H VUlEKSwNCg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAo J1NpemUnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnTmFtZScsIGNfd2NoYXJfcCksDQoNCisg ICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVkFSU1RPUkVfRUZJKFN0cnVjdHVyZSk6 DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hl YWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQp LA0KDQorICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnQXR0 cmlidXRlcycsIGNfdWludDMyKSwNCg0KKyAgICAgICAgKCdTaXplJywgY191aW50MTYpLA0KDQor ICAgICAgICAoJ05hbWUnLCBjX3djaGFyX3ApLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFz cyBFRklfSUZSX0dVSUQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2Zp ZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQor ICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNz IEVGSV9ISUlfUEFDS0FHRV9IRUFERVIoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoN CisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnTGVuZ3RoJywgY191aW50MzIsIDI0KSwN Cg0KKyAgICAgICAgKCdUeXBlJywgY191aW50MzIsIDgpLA0KDQorICAgIF0NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfSElJX1NUUklOR19QQUNLQUdFX0hEUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9w YWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklf SElJX1BBQ0tBR0VfSEVBREVSKSwNCg0KKyAgICAgICAgKCdIZHJTaXplJywgY191aW50MzIpLA0K DQorICAgICAgICAoJ1N0cmluZ0luZm9PZmZzZXQnLCBjX3VpbnQzMiksDQoNCisgICAgICAgICgn TGFuZ3VhZ2VXaW5kb3cnLCBjX3VzaG9ydCAqIDE2KSwNCg0KKyAgICAgICAgKCdMYW5ndWFnZU5h bWUnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnTGFuZ3VhZ2UnLCBjX2NoYXIgKiAyKSwNCg0K KyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFKFN0 cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAg ICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdWYXJTdG9y ZUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAg XQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfRk9STShTdHJ1Y3R1cmUpOg0KDQorICAgIF9w YWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KDQorICAg ICAgICAoJ0Zvcm1UaXRsZScsIGNfdWludDE2KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xh c3MgRUZJX0lGUl9HVUlEX0JBTk5FUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0K KyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQoNCisgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdFeHRlbmRP cENvZGUnLCBjX3VieXRlKSwNCg0KKyAgICAgICAgKCdUaXRsZScsIGNfdWludDE2KSwNCg0KKyAg ICAgICAgKCdMaW5lTnVtYmVyJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0FsaWdubWVudCcs IGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0dVSURfVElN RU9VVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgn R3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwN Cg0KKyAgICAgICAgKCdUaW1lT3V0JywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfSUZSX0dVSURfTEFCRUwoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAx DQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KDQorICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgICAgICgnRXh0 ZW5kT3BDb2RlJywgY191Ynl0ZSksDQoNCisgICAgICAgICgnTnVtYmVyJywgY191aW50MTYpLA0K DQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1JVTEUoU3RydWN0dXJlKToNCg0K KyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1J1bGVJZCcsIGNfdWJ5dGUpLA0K DQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIoU3Ry dWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAg ICAgICgnUHJvbXB0JywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0hlbHAnLCBjX3VpbnQxNiks DQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1VCVElUTEUoU3RydWN0dXJl KToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1N0YXRlbWVudCcsIEVG SV9JRlJfU1RBVEVNRU5UX0hFQURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwN Cg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9URVhUKFN0cnVjdHVyZSk6DQoN CisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdTdGF0ZW1lbnQnLCBFRklfSUZS X1NUQVRFTUVOVF9IRUFERVIpLA0KDQorICAgICAgICAoJ1RleHRUd28nLCBjX3VpbnQxNiksDQoN CisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfSU1BR0UoU3RydWN0dXJlKToNCg0K KyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ0lkJywgY191aW50MTYpLA0KDQor ICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBWYXJTdG9yZUluZm9Ob2RlKFVuaW9uKToNCg0KKyAg ICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnVmFyTmFtZScs IGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdWYXJPZmZzZXQnLCBjX3VpbnQxNiksDQoNCisgICAg XQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKFN0cnVjdHVyZSk6 DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hl YWRlcicsIEVGSV9JRlJfU1RBVEVNRU5UX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb25J ZCcsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KDQor ICAgICAgICAoJ1ZhclN0b3JlSW5mbycsIFZhclN0b3JlSW5mb05vZGUpLA0KDQorICAgICAgICAo J0ZsYWdzJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIHU4Tm9kZShT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdNaW5WYWx1ZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ01heFZhbHVlJywgY191 Ynl0ZSksDQoNCisgICAgICAgICgnU3RlcCcsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyB1MTZOb2RlKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAg IF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ01pblZhbHVlJywgY191aW50MTYpLA0KDQorICAg ICAgICAoJ01heFZhbHVlJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1N0ZXAnLCBjX3VpbnQx NiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIHUzMk5vZGUoU3RydWN0dXJlKToNCg0K KyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnTWluVmFs dWUnLCBjX3VpbnQzMiksDQoNCisgICAgICAgICgnTWF4VmFsdWUnLCBjX3VpbnQzMiksDQoNCisg ICAgICAgICgnU3RlcCcsIGNfdWludDMyKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3Mg dTY0Tm9kZShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9 IFsNCg0KKyAgICAgICAgKCdNaW5WYWx1ZScsIGNfdWludDY0KSwNCg0KKyAgICAgICAgKCdNYXhW YWx1ZScsIGNfdWludDY0KSwNCg0KKyAgICAgICAgKCdTdGVwJywgY191aW50NjQpLA0KDQorICAg IF0NCg0KKw0KDQorDQoNCitjbGFzcyBNSU5NQVhTVEVQX0RBVEEoVW5pb24pOg0KDQorICAgIF9w YWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCd1OCcsIHU4Tm9kZSks DQoNCisgICAgICAgICgndTE2JywgdTE2Tm9kZSksDQoNCisgICAgICAgICgndTMyJywgdTMyTm9k ZSksDQoNCisgICAgICAgICgndTY0JywgdTY0Tm9kZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0K K0VGSV9JRlJfTlVNRVJJQ19TSVpFID0gMHgwMw0KDQorRUZJX0lGUl9OVU1FUklDX1NJWkVfMSA9 IDB4MDANCg0KK0VGSV9JRlJfTlVNRVJJQ19TSVpFXzIgPSAweDAxDQoNCitFRklfSUZSX05VTUVS SUNfU0laRV80ID0gMHgwMg0KDQorRUZJX0lGUl9OVU1FUklDX1NJWkVfOCA9IDB4MDMNCg0KKw0K DQorRUZJX0lGUl9ESVNQTEFZID0gMHgzMA0KDQorRUZJX0lGUl9ESVNQTEFZX0lOVF9ERUMgPSAw eDAwDQoNCitFRklfSUZSX0RJU1BMQVlfVUlOVF9ERUMgPSAweDEwDQoNCitFRklfSUZSX0RJU1BM QVlfVUlOVF9IRVggPSAweDIwDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfT05FX09GKFN0cnVjdHVy ZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbicsIEVG SV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCg0KKyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0K DQorICAgICAgICAoJ2RhdGEnLCBNSU5NQVhTVEVQX0RBVEEpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitFRklfSUZSX0NIRUNLQk9YX0RFRkFVTFQgPSAweDAxDQoNCitFRklfSUZSX0NIRUNLQk9Y X0RFRkFVTFRfTUZHID0gMHgwMg0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQ0hFQ0tCT1go U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1F1ZXN0 aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191 Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTlVNRVJJQyhTdHJ1 Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24n LCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRl KSwNCg0KKyAgICAgICAgKCdEYXRhJywgTUlOTUFYU1RFUF9EQVRBKSwNCg0KKyAgICBdDQoNCisN Cg0KKw0KDQorY2xhc3MgRUZJX0lGUl9QQVNTV09SRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNr XyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hF QURFUiksDQoNCisgICAgICAgICgnTWluU2l6ZScsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdN YXhTaXplJywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSElJ X1RJTUUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBb DQoNCisgICAgICAgICgnSG91cicsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ01pbnV0ZScsIGNf dWJ5dGUpLA0KDQorICAgICAgICAoJ1NlY29uZCcsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0K DQorDQoNCitjbGFzcyBFRklfSElJX0RBVEUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAx DQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnWWVhcicsIGNfdWludDE2KSwNCg0K KyAgICAgICAgKCdNb250aCcsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ0RheScsIGNfdWJ5dGUp LA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSElJX1JFRihTdHJ1Y3R1cmUpOg0K DQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdRdWVz dGlvbklkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0Zvcm1JZCcsIGNfdWludDE2KSwNCg0K KyAgICAgICAgKCdGb3JtU2V0R3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdEZXZpY2VQ YXRoJywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1RZ UEVfVkFMVUUoVW5pb24pOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCd1OCcsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ3UxNicsIGNfdWludDE2 KSwNCg0KKyAgICAgICAgKCd1MzInLCBjX3VpbnQzMiksDQoNCisgICAgICAgICgndTY0JywgY191 aW50NjQpLA0KDQorICAgICAgICAoJ2InLCBjX2Jvb2wpLA0KDQorICAgICAgICAoJ3RpbWUnLCBF RklfSElJX1RJTUUpLA0KDQorICAgICAgICAoJ2RhdGUnLCBFRklfSElJX0RBVEUpLA0KDQorICAg ICAgICAoJ3N0cmluZycsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdyZWYnLCBFRklfSElJX1JF RiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfT05FX09GX09QVElPTihT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnT3B0aW9u JywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQoNCisgICAgICAg ICgnVHlwZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ1ZhbHVlJywgRUZJX0lGUl9UWVBFX1ZB TFVFKSwNCg0KKyAgICBdDQoNCisNCg0KK2RlZiBSZWZpbmVfRUZJX0lGUl9PTkVfT0ZfT1BUSU9O KE51bXMpOg0KDQorICAgIGNsYXNzIEVGSV9JRlJfT05FX09GX09QVElPTihTdHJ1Y3R1cmUpOg0K DQorICAgICAgICBfcGFja18gPSAxDQoNCisgICAgICAgIF9maWVsZHNfID0gWw0KDQorICAgICAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICAgICAoJ09w dGlvbicsIGNfdWludDE2KSwNCg0KKyAgICAgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0K KyAgICAgICAgICAgICgnVHlwZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAgICAgKCdWYWx1ZScs IEVGSV9JRlJfVFlQRV9WQUxVRSAqIE51bXMpLA0KDQorICAgICAgICBdDQoNCisgICAgcmV0dXJu IEVGSV9JRlJfT05FX09GX09QVElPTg0KDQorDQoNCisNCg0KK0VGSV9JRlJfT1BUSU9OX0RFRkFV TFQgPSAweDEwDQoNCitFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRyA9IDB4MjANCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX1NVUFBSRVNTX0lGKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tf ID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9MT0NLRUQo U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX0FDVElPTihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiks DQoNCisgICAgICAgICgnUXVlc3Rpb25Db25maWcnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQor DQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfUkVGKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0g MQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVS KSwNCg0KKyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisN Cg0KK2NsYXNzIEVGSV9JRlJfUkVGMihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0K KyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoN CisgICAgICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1F1ZXN0aW9uSWQn LCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfUkVGMyhT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rp b24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisgICAgICAgICgnRm9ybUlkJywgY191 aW50MTYpLA0KDQorICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAg ICgnRm9ybVNldElkJywgRUZJX0dVSUQpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBF RklfSUZSX1JFRjQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxk c18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAg ICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgICAgICAo J0Zvcm1JZCcsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYp LA0KDQorICAgICAgICAoJ0Zvcm1TZXRJZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdEZXZp Y2VQYXRoJywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZS X1JFRjUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBb DQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAo J1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX1JFU0VUX0JVVFRPTihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNr XyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQoNCisgICAgICAgICgnU3RhdGVtZW50JywgRUZJX0lGUl9TVEFURU1FTlRf SEVBREVSKSwNCg0KKyAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0K DQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTk9fU1VCTUlUX0lGKFN0cnVjdHVyZSk6DQoNCisg ICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdFcnJvcicsIGNfdWludDE2KSwNCg0K KyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYoU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ0Vycm9yJywgY191 aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0VRX0lEX1ZBTChT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rp b25JZCcsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdWYWx1ZScsIGNfdWludDE2KSwNCg0KKyAg ICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9FUV9JRF9JRChTdHJ1Y3R1cmUpOg0KDQor ICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb25JZDEnLCBjX3VpbnQx NiksDQoNCisgICAgICAgICgnUXVlc3Rpb25JZDInLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQor DQoNCitjbGFzcyBFRklfSUZSX0VRX0lEX1ZBTF9MSVNUKFN0cnVjdHVyZSk6DQoNCisgICAgX3Bh Y2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KDQor ICAgICAgICAoJ0xpc3RMZW5ndGgnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnVmFsdWVMaXN0 JywgY191aW50MTYpLCAgIw0KDQorICAgIF0NCg0KKw0KDQorDQoNCitkZWYgUmVmaW5lX0VGSV9J RlJfRVFfSURfVkFMX0xJU1QoTnVtcyk6DQoNCisgICAgY2xhc3MgRUZJX0lGUl9FUV9JRF9WQUxf TElTVChTdHJ1Y3R1cmUpOg0KDQorICAgICAgICBfcGFja18gPSAxDQoNCisgICAgICAgIF9maWVs ZHNfID0gWw0KDQorICAgICAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoN CisgICAgICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICAgICAo J0xpc3RMZW5ndGgnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICAgICAoJ1ZhbHVlTGlzdCcsIGNf dWludDE2ICogTnVtcyksICAjDQoNCisgICAgICAgIF0NCg0KKyAgICByZXR1cm4gRUZJX0lGUl9F UV9JRF9WQUxfTElTVA0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQU5EKFN0cnVjdHVyZSk6 DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hl YWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3Mg RUZJX0lGUl9PUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRz XyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAg XQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTk9UKFN0cnVjdHVyZSk6DQoNCisgICAgX3Bh Y2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9HUkFZ X09VVF9JRihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9 IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0K DQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfREFURShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNr XyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hF QURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0K Kw0KDQorRUZJX1FGX0RBVEVfWUVBUl9TVVBQUkVTUyA9IDB4MDENCg0KK0VGSV9RRl9EQVRFX01P TlRIX1NVUFBSRVNTID0gMHgwMg0KDQorRUZJX1FGX0RBVEVfREFZX1NVUFBSRVNTID0gMHgwNA0K DQorDQoNCitFRklfUUZfREFURV9TVE9SQUdFID0gMHgzMA0KDQorUUZfREFURV9TVE9SQUdFX05P Uk1BTCA9IDB4MDANCg0KK1FGX0RBVEVfU1RPUkFHRV9USU1FID0gMHgxMA0KDQorUUZfREFURV9T VE9SQUdFX1dBS0VVUCA9IDB4MjANCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1RJTUUoU3Ry dWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1F1ZXN0aW9u JywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191Ynl0 ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK1FGX1RJTUVfSE9VUl9TVVBQUkVTUyA9IDB4MDEN Cg0KK1FGX1RJTUVfTUlOVVRFX1NVUFBSRVNTID0gMHgwMg0KDQorUUZfVElNRV9TRUNPTkRfU1VQ UFJFU1MgPSAweDA0DQoNCitRRl9USU1FX1NUT1JBR0UgPSAweDMwDQoNCitRRl9USU1FX1NUT1JB R0VfTk9STUFMID0gMHgwMA0KDQorUUZfVElNRV9TVE9SQUdFX1RJTUUgPSAweDEwDQoNCitRRl9U SU1FX1NUT1JBR0VfV0FLRVVQID0gMHgyMA0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1RS SU5HKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0K DQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdR dWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCg0KKyAgICAgICAgKCdNaW5TaXpl JywgY191Ynl0ZSksDQoNCisgICAgICAgICgnTWF4U2l6ZScsIGNfdWJ5dGUpLA0KDQorICAgICAg ICAoJ0ZsYWdzJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9J RlJfUkVGUkVTSChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRz XyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAg ICAgICgnUmVmcmVzaEludGVydmFsJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfRElTQUJMRV9JRihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVE9fTE9XRVIoU3Ry dWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfSUZSX1RPX1VQUEVSKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0K DQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NQVAoU3RydWN0dXJl KToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFz cyBFRklfSUZSX09SREVSRURfTElTVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0K KyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoN CisgICAgICAgICgnTWF4Q29udGFpbmVycycsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ0ZsYWdz JywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK0VGSV9JRlJfVU5JUVVFX1NFVCA9 IDB4MDENCg0KK0VGSV9JRlJfTk9fRU1QVFlfU0VUID0gMHgwMg0KDQorDQoNCisNCg0KK2NsYXNz IEVGSV9JRlJfVkFSU1RPUkVfREVWSUNFKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0K DQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCg0KKyAgICAgICAgKCdEZXZpY2VQYXRoJywgY191aW50MTYpLA0KDQorICAgIF0NCg0K Kw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1ZFUlNJT04oU3RydWN0dXJlKToNCg0KKyAgICBfcGFj a18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lG Ul9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0VORChT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisN Cg0KK2NsYXNzIEVGSV9JRlJfTUFUQ0goU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoN CisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFE RVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0dFVChTdHJ1Y3R1cmUp Og0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdI ZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnVmFyU3RvcmVJZCcsIGNf dWludDE2KSwNCg0KKyAgICAgICAgKCdWYXJTdG9yZUluZm8nLCBWYXJTdG9yZUluZm9Ob2RlKSwg ICMjIyMjIyMjIyMNCg0KKyAgICAgICAgKCdWYXJTdG9yZVR5cGUnLCBjX3VieXRlKSwNCg0KKyAg ICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9TRVQoU3RydWN0dXJlKToNCg0KKyAgICBf cGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQoN CisgICAgICAgICgnVmFyU3RvcmVJbmZvJywgVmFyU3RvcmVJbmZvTm9kZSksICAjIyMjIyMjIyMj DQoNCisgICAgICAgICgnVmFyU3RvcmVUeXBlJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfUkVBRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfV1JJVEUoU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX0VRVUFMKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAg IF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9OT1RfRVFVQUwoU3RydWN0dXJl KToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFz cyBFRklfSUZSX0dSRUFURVJfVEhBTihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0K KyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfR1JFQVRFUl9FUVVBTChT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisN Cg0KK2NsYXNzIEVGSV9JRlJfTEVTU19FUVVBTChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9 IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTEVTU19USEFO KFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQor ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0K Kw0KDQorY2xhc3MgRUZJX0lGUl9CSVRXSVNFX0FORChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNr XyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQklUV0lT RV9PUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQor DQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQklUV0lTRV9OT1QoU3RydWN0dXJlKToNCg0KKyAgICBf cGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1NI SUZUX0xFRlQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18g PSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0N Cg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1NISUZUX1JJR0hUKFN0cnVjdHVyZSk6DQoNCisg ICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lG Ul9BREQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBb DQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0K Kw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1NVQlRSQUNUKFN0cnVjdHVyZSk6DQoNCisgICAgX3Bh Y2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NVUxU SVBMWShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQor DQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfRElWSURFKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tf ID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NT0RVTE8o U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX1JVTEVfUkVGKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0g MQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCg0KKyAgICAgICAgKCdSdWxlSWQnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisN Cg0KKw0KDQorY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9SRUYxKFN0cnVjdHVyZSk6DQoNCisgICAg X3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0K DQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjIoU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjMoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAx DQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JF RjNfMihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgn RGV2aWNlUGF0aCcsIGNfdWludDE2KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJ X0lGUl9RVUVTVElPTl9SRUYzXzMoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KDQorICAgICAgICAoJ0RldmljZVBhdGgnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnR3Vp ZCcsIEVGSV9HVUlEKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9VSU5U OChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0K KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnVmFs dWUnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9VSU5U MTYoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoN CisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1Zh bHVlJywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1VJ TlQzMihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgn VmFsdWUnLCBjX3VpbnQzMiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJf VUlOVDY0KFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0g Ww0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAg KCdWYWx1ZScsIGNfdWludDY0KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lG Ul9UUlVFKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0g Ww0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoN CisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9GQUxTRShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNr XyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVE9fVUlO VChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0K KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfVE9fU1RSSU5HKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tf ID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdGb3JtYXQnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoN CisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9UT19CT09MRUFOKFN0cnVjdHVyZSk6DQoNCisgICAg X3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9N SUQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoN CisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0K DQorDQoNCitjbGFzcyBFRklfSUZSX0ZJTkQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAx DQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KDQorICAgICAgICAoJ0Zvcm1hdCcsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0K DQorDQoNCitjbGFzcyBFRklfSUZSX1RPS0VOKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0g MQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9TVFJJTkdfUkVG MShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0K KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnU3Ry aW5nSWQnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJf U1RSSU5HX1JFRjIoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxk c18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAg IF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0NPTkRJVElPTkFMKFN0cnVjdHVyZSk6DQoN CisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJ X0lGUl9aRVJPKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNf ID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBd DQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9PTkUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFj a18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lG Ul9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX09ORVMo U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX1VOREVGSU5FRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9 IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTEVOR1RIKFN0 cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAg ICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0K DQorY2xhc3MgRUZJX0lGUl9EVVAoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1RISVMoU3RydWN0dXJlKToN Cg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitFRklfSUZS X0ZMQUdTX0ZJUlNUX01BVENISU5HID0gMHgwMA0KDQorRUZJX0lGUl9GTEFHU19GSVJTVF9OT05f TUFUQ0hJTkcgPSAweDAxDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1BBTihTdHJ1Y3R1cmUpOg0K DQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwN Cg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9WQUxVRShTdHJ1Y3R1cmUpOg0K DQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVG SV9JRlJfREVGQVVMVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmll bGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisg ICAgICAgICgnRGVmYXVsdElkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1R5cGUnLCBjX3Vi eXRlKSwNCg0KKyAgICAgICAgKCdWYWx1ZScsIEVGSV9JRlJfVFlQRV9WQUxVRSksDQoNCisgICAg XQ0KDQorDQoNCitkZWYgUmVmaW5lX0VGSV9JRlJfREVGQVVMVChOdW1zKToNCg0KKyAgICBjbGFz cyBFRklfSUZSX0RFRkFVTFQoU3RydWN0dXJlKToNCg0KKyAgICAgICAgX3BhY2tfID0gMQ0KDQor ICAgICAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KDQorICAgICAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQoNCisg ICAgICAgICAgICAoJ1R5cGUnLCBjX3VieXRlKSwNCg0KKyAgICAgICAgICAgICgnVmFsdWUnLCBF RklfSUZSX1RZUEVfVkFMVUUgKiBOdW1zKSwNCg0KKyAgICAgICAgXQ0KDQorICAgIHJldHVybiBF RklfSUZSX0RFRkFVTFQNCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0RFRkFVTFRfMihTdHJ1 Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnRGVmYXVsdElk JywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1R5cGUnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfRk9STV9NQVAoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18g PSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KDQorICAgICAgICAoJ0Zvcm1JZCcsIGNfdWludDE2KSwNCg0KKyAgICBdDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKFN0cnVjdHVyZSk6DQoNCisgICAg X3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ01ldGhvZFRpdGxl JywgY191aW50MTYpLA0KDQorICAgICAgICAoJ01ldGhvZElkZW50aWZpZXInLCBFRklfR1VJRCks DQoNCisgICAgXQ0KDQorDQoNCitjbGFzcyBFRklfSUZSX0NBVEVOQVRFKFN0cnVjdHVyZSk6DQoN CisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJ X0lGUl9TRUNVUklUWShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmll bGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisg ICAgICAgICgnUGVybWlzc2lvbnMnLCBFRklfR1VJRCksDQoNCisgICAgXQ0KDQorDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfTU9EQUxfVEFHKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0K DQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9SRUZSRVNIX0lEKFN0 cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAg ICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdSZWZyZXNo RXZlbnRHcm91cElkJywgRUZJX0dVSUQpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBF RklfSUZSX1dBUk5JTkdfSUYoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAg X2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K DQorICAgICAgICAoJ1dhcm5pbmcnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnVGltZU91dCcs IGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX01BVENIMihT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnU3ludGF4 VHlwZScsIEVGSV9HVUlEKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorRUZJX0lGUl9GT1JNX09Q ID0gMHgwMQ0KDQorRUZJX0lGUl9TVUJUSVRMRV9PUCA9IDB4MDINCg0KK0VGSV9JRlJfVEVYVF9P UCA9IDB4MDMNCg0KK0VGSV9JRlJfSU1BR0VfT1AgPSAweDA0DQoNCitFRklfSUZSX09ORV9PRl9P UCA9IDB4MDUNCg0KK0VGSV9JRlJfQ0hFQ0tCT1hfT1AgPSAweDA2DQoNCitFRklfSUZSX05VTUVS SUNfT1AgPSAweDA3DQoNCitFRklfSUZSX1BBU1NXT1JEX09QID0gMHgwOA0KDQorRUZJX0lGUl9P TkVfT0ZfT1BUSU9OX09QID0gMHgwOQ0KDQorRUZJX0lGUl9TVVBQUkVTU19JRl9PUCA9IDB4MEEN Cg0KK0VGSV9JRlJfTE9DS0VEX09QID0gMHgwQg0KDQorRUZJX0lGUl9BQ1RJT05fT1AgPSAweDBD DQoNCitFRklfSUZSX1JFU0VUX0JVVFRPTl9PUCA9IDB4MEQNCg0KK0VGSV9JRlJfRk9STV9TRVRf T1AgPSAweDBFDQoNCitFRklfSUZSX1JFRl9PUCA9IDB4MEYNCg0KK0VGSV9JRlJfTk9fU1VCTUlU X0lGX09QID0gMHgxMA0KDQorRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1AgPSAweDExDQoNCitF RklfSUZSX0VRX0lEX1ZBTF9PUCA9IDB4MTINCg0KK0VGSV9JRlJfRVFfSURfSURfT1AgPSAweDEz DQoNCitFRklfSUZSX0VRX0lEX1ZBTF9MSVNUX09QID0gMHgxNA0KDQorRUZJX0lGUl9BTkRfT1Ag PSAweDE1DQoNCitFRklfSUZSX09SX09QID0gMHgxNg0KDQorRUZJX0lGUl9OT1RfT1AgPSAweDE3 DQoNCitFRklfSUZSX1JVTEVfT1AgPSAweDE4DQoNCitFRklfSUZSX0dSQVlfT1VUX0lGX09QID0g MHgxOQ0KDQorRUZJX0lGUl9EQVRFX09QID0gMHgxQQ0KDQorRUZJX0lGUl9USU1FX09QID0gMHgx Qg0KDQorRUZJX0lGUl9TVFJJTkdfT1AgPSAweDFDDQoNCitFRklfSUZSX1JFRlJFU0hfT1AgPSAw eDFEDQoNCitFRklfSUZSX0RJU0FCTEVfSUZfT1AgPSAweDFFDQoNCitFRklfSUZSX1RPX0xPV0VS X09QID0gMHgyMA0KDQorRUZJX0lGUl9UT19VUFBFUl9PUCA9IDB4MjENCg0KK0VGSV9JRlJfTUFQ X09QID0gMHgyMg0KDQorRUZJX0lGUl9PUkRFUkVEX0xJU1RfT1AgPSAweDIzDQoNCitFRklfSUZS X1ZBUlNUT1JFX09QID0gMHgyNA0KDQorRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QID0g MHgyNQ0KDQorRUZJX0lGUl9WQVJTVE9SRV9FRklfT1AgPSAweDI2DQoNCitFRklfSUZSX1ZBUlNU T1JFX0RFVklDRV9PUCA9IDB4MjcNCg0KK0VGSV9JRlJfVkVSU0lPTl9PUCA9IDB4MjgNCg0KK0VG SV9JRlJfRU5EX09QID0gMHgyOQ0KDQorRUZJX0lGUl9NQVRDSF9PUCA9IDB4MkENCg0KK0VGSV9J RlJfR0VUX09QID0gMHgyQg0KDQorRUZJX0lGUl9TRVRfT1AgPSAweDJDDQoNCitFRklfSUZSX1JF QURfT1AgPSAweDJEDQoNCitFRklfSUZSX1dSSVRFX09QID0gMHgyRQ0KDQorRUZJX0lGUl9FUVVB TF9PUCA9IDB4MkYNCg0KK0VGSV9JRlJfTk9UX0VRVUFMX09QID0gMHgzMA0KDQorRUZJX0lGUl9H UkVBVEVSX1RIQU5fT1AgPSAweDMxDQoNCitFRklfSUZSX0dSRUFURVJfRVFVQUxfT1AgPSAweDMy DQoNCitFRklfSUZSX0xFU1NfVEhBTl9PUCA9IDB4MzMNCg0KK0VGSV9JRlJfTEVTU19FUVVBTF9P UCA9IDB4MzQNCg0KK0VGSV9JRlJfQklUV0lTRV9BTkRfT1AgPSAweDM1DQoNCitFRklfSUZSX0JJ VFdJU0VfT1JfT1AgPSAweDM2DQoNCitFRklfSUZSX0JJVFdJU0VfTk9UX09QID0gMHgzNw0KDQor RUZJX0lGUl9TSElGVF9MRUZUX09QID0gMHgzOA0KDQorRUZJX0lGUl9TSElGVF9SSUdIVF9PUCA9 IDB4MzkNCg0KK0VGSV9JRlJfQUREX09QID0gMHgzQQ0KDQorRUZJX0lGUl9TVUJUUkFDVF9PUCA9 IDB4M0INCg0KK0VGSV9JRlJfTVVMVElQTFlfT1AgPSAweDNDDQoNCitFRklfSUZSX0RJVklERV9P UCA9IDB4M0QNCg0KK0VGSV9JRlJfTU9EVUxPX09QID0gMHgzRQ0KDQorRUZJX0lGUl9SVUxFX1JF Rl9PUCA9IDB4M0YNCg0KK0VGSV9JRlJfUVVFU1RJT05fUkVGMV9PUCA9IDB4NDANCg0KK0VGSV9J RlJfUVVFU1RJT05fUkVGMl9PUCA9IDB4NDENCg0KK0VGSV9JRlJfVUlOVDhfT1AgPSAweDQyDQoN CitFRklfSUZSX1VJTlQxNl9PUCA9IDB4NDMNCg0KK0VGSV9JRlJfVUlOVDMyX09QID0gMHg0NA0K DQorRUZJX0lGUl9VSU5UNjRfT1AgPSAweDQ1DQoNCitFRklfSUZSX1RSVUVfT1AgPSAweDQ2DQoN CitFRklfSUZSX0ZBTFNFX09QID0gMHg0Nw0KDQorRUZJX0lGUl9UT19VSU5UX09QID0gMHg0OA0K DQorRUZJX0lGUl9UT19TVFJJTkdfT1AgPSAweDQ5DQoNCitFRklfSUZSX1RPX0JPT0xFQU5fT1Ag PSAweDRBDQoNCitFRklfSUZSX01JRF9PUCA9IDB4NEINCg0KK0VGSV9JRlJfRklORF9PUCA9IDB4 NEMNCg0KK0VGSV9JRlJfVE9LRU5fT1AgPSAweDREDQoNCitFRklfSUZSX1NUUklOR19SRUYxX09Q ID0gMHg0RQ0KDQorRUZJX0lGUl9TVFJJTkdfUkVGMl9PUCA9IDB4NEYNCg0KK0VGSV9JRlJfQ09O RElUSU9OQUxfT1AgPSAweDUwDQoNCitFRklfSUZSX1FVRVNUSU9OX1JFRjNfT1AgPSAweDUxDQoN CitFRklfSUZSX1pFUk9fT1AgPSAweDUyDQoNCitFRklfSUZSX09ORV9PUCA9IDB4NTMNCg0KK0VG SV9JRlJfT05FU19PUCA9IDB4NTQNCg0KK0VGSV9JRlJfVU5ERUZJTkVEX09QID0gMHg1NQ0KDQor RUZJX0lGUl9MRU5HVEhfT1AgPSAweDU2DQoNCitFRklfSUZSX0RVUF9PUCA9IDB4NTcNCg0KK0VG SV9JRlJfVEhJU19PUCA9IDB4NTgNCg0KK0VGSV9JRlJfU1BBTl9PUCA9IDB4NTkNCg0KK0VGSV9J RlJfVkFMVUVfT1AgPSAweDVBDQoNCitFRklfSUZSX0RFRkFVTFRfT1AgPSAweDVCDQoNCitFRklf SUZSX0RFRkFVTFRTVE9SRV9PUCA9IDB4NUMNCg0KK0VGSV9JRlJfRk9STV9NQVBfT1AgPSAweDVE DQoNCitFRklfSUZSX0NBVEVOQVRFX09QID0gMHg1RQ0KDQorRUZJX0lGUl9HVUlEX09QID0gMHg1 Rg0KDQorRUZJX0lGUl9TRUNVUklUWV9PUCA9IDB4NjANCg0KK0VGSV9JRlJfTU9EQUxfVEFHX09Q ID0gMHg2MQ0KDQorRUZJX0lGUl9SRUZSRVNIX0lEX09QID0gMHg2Mg0KDQorRUZJX0lGUl9XQVJO SU5HX0lGX09QID0gMHg2Mw0KDQorRUZJX0lGUl9NQVRDSDJfT1AgPSAweDY0DQoNCisNCg0KK0Nv bmRpdGlvbk9wcyA9IFtFRklfSUZSX05PX1NVQk1JVF9JRl9PUCwgRUZJX0lGUl9ESVNBQkxFX0lG X09QLCBFRklfSUZSX1NVUFBSRVNTX0lGX09QLCBFRklfSUZSX0dSQVlfT1VUX0lGX09QLCBFRklf SUZSX0lOQ09OU0lTVEVOVF9JRl9PUF0NCg0KK0Jhc2ljRGF0YVR5cGVzID0gWydVSU5UOCcsICdV SU5UMTYnLCAnVUlOVDMyJywgJ1VJTlQ2NCcsICdFRklfSElJX0RBVEUnLCAnRUZJX0hJSV9USU1F JywgJ0VGSV9ISUlfUkVGJ10NCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9HVUlEX09QVElPTktFWShT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcs IEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VpbnQ4KSwNCg0KKyAg ICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ09wdGlvblZhbHVl JywgRUZJX0lGUl9UWVBFX1ZBTFVFKSwNCg0KKyAgICAgICAgKCdLZXlWYWx1ZScsIGNfdWludDE2 KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorRUZJX0lGUl9FWFRFTkRfT1BfT1BUSU9OS0VZID0g MHgwDQoNCitFRklfSUZSX0VYVEVORF9PUF9WQVJFUU5BTUUgPSAweDENCg0KKw0KDQorY2xhc3Mg RUZJX0NPTVBBUkVfVFlQRShFbnVtKToNCg0KKyAgICBFUVVBTCA9IDANCg0KKyAgICBMRVNTX0VR VUFMID0gMQ0KDQorICAgIExFU1NfVEhBTiA9IDINCg0KKyAgICBHUkVBVEVSX1RIQU4gPSAzDQoN CisgICAgR1JFQVRFUl9FUVVBTCA9IDQNClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZCBi L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZA0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLmNmNjAwNTgxYzkNCi0tLSAvZGV2L251bGwN CisrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZA0KQEAg LTAsMCArMSwyMCBAQA0KKyMgUHl0aG9uIFZmckNvbXBpbGVyIFRvb2wNCg0KKyMjIE92ZXJ2aWV3 DQoNCitUaGlzIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBv ZiB0aGUgZWRrMiBWZnJDb21waWxlciB0b29sIHdoaWNoIGxvY2F0ZXMgYXQgaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS9lZGsyL3RyZWUvbWFzdGVyL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJD b21waWxlLg0KDQorDQoNCisjIyMgSW50cm9kdWN0aW9uDQoNCitUaGUgY29yZSBmdW5jdGlvbiBv ZiB0aGUgb3JpZ2luYWwgQyBWZnJDb21waWxlciB0b29sIGlzIHRvIGNvbnZlcnQgdGhlIHZmciBm aWxlIGludG8gSUZSIGJpbmFyeSBhcnJheS4gSG93ZXZlciwgdGhlIHZmciBmb3JtYXQgZmlsZSBz eW50YXggaXMgcmVsYXRpdmVseSB1bmNvbW1vbiBhbmQgaGFzIHBvb3IgcmVhZGFiaWxpdHkgZm9y IHVzZXJzLiBXaGF0J3MgbW9yZSwgdGhlIEMgdG9vbCBkb2VzIG5vdCBjb2xsZWN0IGFuZCBzdG9y ZSBleHRyYSBpbmZvcm1hdGlvbiBleGNlcHQgZm9yIGJpbmFyeSBnZW5lcmF0aW9uLiBXaGVuIGFu eSBtb2RpZmljYXRpb24gaXMgbmVlZGVkLCBkZXZlbG9wZXJzIGhhdmUgdG8gcmVhZCBhbmQgZGVh bCB3aXRoIHRoZSBJRlIgYmluYXJ5LCB3aGljaCBpcyBxdWl0ZSBpbmVmZmljaWVudC4gVG8gc29s dmUgdGhpcyBpc3N1ZSwgdGhpcyBweXRob24gVmZyQ29tcGlsZXIgdG9vbCBwcm9wb3NlcyB0byBn ZW5lcmF0ZSB0aGUgeWFtbCBmb3JtYXQgZmlsZSBvbiB0aGUgYmFzaXMgb2YgdGhlIHZmciBmb3Jt YXQgZmlsZS4gV2l0aCB0aGUgeWFtbCBmaWxlLCAgdGhlIGxheW91dCBhbmQgaGllcmFyY2h5IG9m IGFsbCBPcGNvZGVzIGluIHRoZSB2ZnIgZmlsZSB3aWxsIGJlIHNhdmVkLiBUaGVuIG1vZGlmaWNh dGlvbiB3aWxsIGJlIG11Y2ggZWFpc2VyLiBJbiBhZGRpdGlvbiwgYW4gZXh0cmEganNvbiBmaWxl IHdpbGwgYmUgZ2VuZXJhdGVkIGZvciBiZXR0ZXIgdmFyaWFibGUgcmVsYXRlZCBpbmZvcm1hdGlv biBwcmVzZW50YXRpb24uIFNvIHRoZSBsb25nLXRlcm0gYWltIG9mIHRoaXMgdG9vbCBpcyB0byBj b3ZlciB0aGUgc2FtZSB1c2FnZSBhcyB0aGUgZWRrMiBDIFZmckNvbXBpbGVyIGFuZCBleHRlbmQg dGhlIHlhbWwvanNvbiBvdXRwdXQgZm9yIGJldHRlciByZWFkYWJpbGl0eSBhbmQgdmFyaWFiaWxp dHkuDQoNCisNCg0KKyMjIyBNYWluIHVwZGF0ZSBpbiB0aGlzIGNvbW1pdG1lbnQNCg0KKy0gVXBk YXRlIHRoZSB2ZnIgcGFyc2VyIGdlbmVyYXRvciBmcm9tIEFOVExSIHRvIEFOVExSIHY0LCB3aGlj aCBpcyBtb3JlIHJlYWRhYmxlIGFuZCBpcyBlYWlzZXIgdG8gYWRkIG9uIG5ldyBmdW5jdGlvbnMu DQoNCistIEdlbmVyYXRlIGEgeWFtbCBmaWxlIGZvciBlYWNoIHZmciBmaWxlLiBUaGUgeWFtbCBm aWxlIGRpc3BsYXlzIGFsbCB0aGUgY29udGVudHMgaW4gdGhlIFZmciBmaWxlIGJ5IGRpZmZlcmVu dCBPcGNvZGUgdHlwZXMgaW4gc2VxdWVuY2UuDQoNCistIEdlbmVyYXRlIGEganNvbiBmaWxlIGZv ciBlYWNoIHZmciBmaWxlLiBUaGUganNvbiBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZGVmYXVsdCB2 YWx1ZXMgZm9yIGRpZmZlcmVudCBPcGNvZGUgdHlwZXMgaW4gdmZyIGZpbGVzLg0KDQorDQoNCisj IyMgS25vd24gaXNzdWVzDQoNCisNCg0KKy0gVGhlIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGFp bXMgdG8gY292ZXIgdGhlIHNhbWUgdXNhZ2UgYXMgdGhlIGVkazIgQyBWZnJDb21waWxlci4gQnV0 IGN1cnJlbnRseSwgdGhlIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGRvZXMgbm90IHN1cHBvcnQg SUZSIGJpbmFyeSBnZW5lcmF0aW9uIGZlYXR1cmUsIHRoaXMgZmVhdHVyZSB3aWxsIGJlIGFkZGVk IGluIGZ1dHVyZSB1cGRhdGUuDQoNCistIFRoZSBweXRob24gVmZyQ29tcGlsZXIgdG9vbCB3aWxs IGV4dGVuZCBuZXcgZnVuY3Rpb25zLCB3aGljaCBpcyBhYmxlIHRvIGNvbXBpbGUgYm90aCB0aGUg dmZyIGFuZCB5YW1sIGZpbGVzLiBUaGlzIGZlYXR1cmUgd2lsbCBiZSBhZGRlZCBpbiBmdXR1cmUg dXBkYXRlLg0KDQorDQoNCisjIyMgVXNlIHdpdGggQnVpbGQgU3lzdGVtDQoNCistIFRvIHVzZSB0 aGUgVmZyQ29tcGlsZXIgUHl0aG9uIFRvb2wgd2l0aCBCdWlsZCBTeXN0ZW0sICBwbGVhc2UgYWRk IHRoZSAqKionLS12ZnIteWFtbC1lbmFibGUnKioqICBvcHRpb24gaW4gdGhlIGJ1aWxkIGNvbW1h bmQuDQoNCistIEZvciBFeGFtcGxlOiAqKipidWlsZCAtcCBPdm1mUGtnXE92bWZQa2dJYTMyWDY0 LmRzYyAtYSBJQTMyIC1hIFg2NCAtaiBidWlsZC5sb2cgLS12ZnIteWFtbC1lbmFibGUqKioNClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1ZmckNvbXBpbGVyL1ZmckVycm9yLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyRXJyb3IucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwLi41M2I5NjBiNGUxDQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNl L1B5dGhvbi9WZnJDb21waWxlci9WZnJFcnJvci5weQ0KQEAgLTAsMCArMSwxNjIgQEANCitpbXBv cnQgaW1wDQoNCitpbXBvcnQgc3lzDQoNCitpbXBvcnQgb3MNCg0KK2Zyb20gZW51bSBpbXBvcnQg RW51bQ0KDQorZnJvbSBDb21tb24uQnVpbGRUb29sRXJyb3IgaW1wb3J0ICoNCg0KK2ltcG9ydCBD b21tb24uRWRrTG9nZ2VyIGFzIEVka0xvZ2dlcg0KDQorDQoNCisNCg0KK2NsYXNzIFZmclJldHVy bkNvZGUoRW51bSk6DQoNCisgICAgVkZSX1JFVFVSTl9TVUNDRVNTID0gMA0KDQorICAgIFZGUl9S RVRVUk5fRVJST1JfU0tJUEVEID0gMQ0KDQorICAgIFZGUl9SRVRVUk5fRkFUQUxfRVJST1IgPSAy DQoNCisgICAgVkZSX1JFVFVSTl9NSVNNQVRDSEVEID0gMw0KDQorICAgIFZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIgPSA0DQoNCisgICAgVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUyA9 IDUNCg0KKyAgICBWRlJfUkVUVVJOX1VOU1VQUE9SVEVEID0gNg0KDQorICAgIFZGUl9SRVRVUk5f UkVERUZJTkVEID0gNw0KDQorICAgIFZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRCA9IDgNCg0K KyAgICBWRlJfUkVUVVJOX1FVRVNUSU9OSURfUkVERUZJTkVEID0gOQ0KDQorICAgIFZGUl9SRVRV Uk5fVkFSU1RPUkVJRF9SRURFRklORUQgPSAxMA0KDQorICAgIFZGUl9SRVRVUk5fVU5ERUZJTkVE ID0gMTENCg0KKyAgICBWRlJfUkVUVVJOX1ZBUl9OT1RERUZJTkVEX0JZX1FVRVNUSU9OID0gMTIN Cg0KKyAgICBWRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUiA9IDEz DQoNCisgICAgVkZSX1JFVFVSTl9HRVRfRUZJVkFSU1RPUkVfRVJST1IgPSAxNA0KDQorICAgIFZG Ul9SRVRVUk5fRUZJVkFSU1RPUkVfVVNFX0VSUk9SID0gMTUNCg0KKyAgICBWRlJfUkVUVVJOX0VG SVZBUlNUT1JFX1NJWkVfRVJST1IgPSAxNg0KDQorICAgIFZGUl9SRVRVUk5fR0VUX05WVkFSU1RP UkVfRVJST1IgPSAxNw0KDQorICAgIFZGUl9SRVRVUk5fUVZBUl9SRVVTRSA9IDE4DQoNCisgICAg VkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRCA9IDE5DQoNCisgICAgVkZSX1JFVFVSTl9FUlJP Ul9BUlJBUllfTlVNID0gMjANCg0KKyAgICBWRlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SID0g MjENCg0KKyAgICBWRlJfUkVUVVJOX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVEID0gMjINCg0KKyAg ICBWRlJfUkVUVVJOX0NPTlNUQU5UX09OTFkgPSAyMw0KDQorICAgIFZGUl9SRVRVUk5fVkFSU1RP UkVfTkFNRV9SRURFRklORURfRVJST1IgPSAyNA0KDQorICAgIFZGUl9SRVRVUk5fQklUX1dJRFRI X0VSUk9SID0gMjUNCg0KKyAgICBWRlJfUkVUVVJOX1NUUklOR19UT19VSU5UX09WRVJGTE9XID0g MjYNCg0KKyAgICBWRlJfUkVUVVJOX0NPREVVTkRFRklORUQgPSAyNw0KDQorDQoNCisNCg0KK3Zm ckVycm9yTWVzc2FnZSA9IHsNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT UzogJycsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRDogJycs DQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SOiAnZmF0YWwgZXJy b3IhIScsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX01JU01BVENIRUQ6ICd1bmV4 cGVjdGVkIHRva2VuJywNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVI6ICdpbnZhbGlkIHBhcmFtZXRlcicsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTOiAnc3lzdGVtIG91dCBvZiBtZW1vcnknLA0KDQorICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRDogJ3Vuc3VwcG9ydGVkJywNCg0K KyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEOiAnYWxyZWFkeSBkZWZpbmVk JywNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRDogJ2Zv cm0gaWQgYWxyZWFkeSBkZWZpbmVkJywNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f UVVFU1RJT05JRF9SRURFRklORUQ6DQoNCisgICAgJ3F1ZXN0aW9uIGlkIGFscmVhZHkgZGVmaW5l ZCcsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVERUZJTkVE Og0KDQorICAgICd2YXJzdG9yZSBpZCBhbHJlYWR5IGRlZmluZWQnLA0KDQorICAgIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQ6ICd1bmRlZmluZWQnLA0KDQorICAgIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9WQVJfTk9UREVGSU5FRF9CWV9RVUVTVElPTjoNCg0KKyAgICAnc29t ZSB2YXJpYWJsZSBoYXMgbm90IGRlZmluZWQgYnkgYSBxdWVzdGlvbicsDQoNCisgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUjoNCg0K KyAgICAnRGF0YSBTdHJ1Y3R1cmUgaXMgZGVmaW5lZCBieSBtb3JlIHRoYW4gb25lIHZhcnN0b3Jl czogaXQgY2FuXCd0IGJlIHJlZmVycmVkIGFzIHZhcnN0b3JlOiBvbmx5IHZhcnN0b3JlIG5hbWUg Y291bGQgYmUgdXNlZC4nLA0KDQorICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9HRVRfRUZJ VkFSU1RPUkVfRVJST1I6ICdnZXQgZWZpIHZhcnN0b3JlIGVycm9yJywNCg0KKyAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fRUZJVkFSU1RPUkVfVVNFX0VSUk9SOg0KDQorICAgICdjYW4gbm90 IHVzZSB0aGUgZWZpIHZhcnN0b3JlIGxpa2UgdGhpcycsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0VGSVZBUlNUT1JFX1NJWkVfRVJST1I6DQoNCisgICAgJ3Vuc3VwcG9ydCBlZmkg dmFyc3RvcmUgc2l6ZSBzaG91bGQgYmUgPD0gOCBieXRlcycsDQoNCisgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0dFVF9OVlZBUlNUT1JFX0VSUk9SOg0KDQorICAgICdnZXQgbmFtZSB2YWx1 ZSB2YXJzdG9yZSBlcnJvcicsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1FWQVJf UkVVU0U6DQoNCisgICAgJ3ZhcmlhYmxlIHJldXNlZCBieSBtb3JlIHRoYW4gb25lIHF1ZXN0aW9u JywNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQ6ICdm bGFncyB1bnN1cHBvcnRlZCcsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9S X0FSUkFSWV9OVU06DQoNCisgICAgJ2FycmF5IG51bWJlciBlcnJvcjogdGhlIHZhbGlkIHZhbHVl IGlzIGluICgwIH4gTUFYX0lOREVYLTEgZm9yIFVFRkkgdmZyIGFuZCBpbiAoMSB+IE1BWF9JTkRF WCBmb3IgRnJhbWV3b3JrIFZmcicsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RB VEFfU1RSSU5HX0VSUk9SOg0KDQorICAgICdkYXRhIGZpZWxkIHN0cmluZyBlcnJvciBvciBub3Qg c3VwcG9ydCcsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RFRkFVTFRfVkFMVUVf UkVERUZJTkVEOg0KDQorICAgICdkZWZhdWx0IHZhbHVlIHJlLWRlZmluZWQgd2l0aCBkaWZmZXJl bnQgdmFsdWUnLA0KDQorICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9DT05TVEFOVF9PTkxZ Og0KDQorICAgICdvbmx5IGNvbnN0YW50IGlzIGFsbG93ZWQgaW4gdGhlIGV4cHJlc3Npb24nLA0K DQorICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9F UlJPUjoNCg0KKyAgICAnVmFyc3RvcmUgbmFtZSBpcyBkZWZpbmVkIGJ5IG1vcmUgdGhhbiBvbmUg dmFyc3RvcmVzOiBpdCBjYW5cJ3QgYmUgcmVmZXJyZWQgYXMgdmFyc3RvcmU6IG9ubHkgdmFyc3Rv cmUgc3RydWN0dXJlIG5hbWUgY291bGQgYmUgdXNlZC4nLA0KDQorICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9CSVRfV0lEVEhfRVJST1I6DQoNCisgICAgJ2JpdCB3aWR0aCBtdXN0IGJlIDw9 IHNpemVvZiAodHlwZSAqIDggYW5kIHRoZSBtYXggd2lkdGggY2FuIG5vdCA+IDMyJywNCg0KKyAg ICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1RSSU5HX1RPX1VJTlRfT1ZFUkZMT1c6DQoNCisg ICAgJ1N0cmluZyB0byBVSU5UKiBPdmVyZmxvdycsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0NPREVVTkRFRklORUQ6ICd1bmRlZmluZWQgRXJyb3IgQ29kZScNCg0KK30NCg0KKw0K DQorDQoNCitjbGFzcyBFRklfVkZSX1dBUk5JTkdfQ09ERShFbnVtKToNCg0KKyAgICBWRlJfV0FS TklOR19ERUZBVUxUX1ZBTFVFX1JFREVGSU5FRCA9IDANCg0KKyAgICBWRlJfV0FSTklOR19BQ1RJ T05fV0lUSF9URVhUX1RXTyA9IDENCg0KKyAgICBWRlJfV0FSTklOR19PQlNPTEVURURfRlJBTUVX T1JLX09QQ09ERSA9IDINCg0KKyAgICBWRlJfV0FSTklOR19DT0RFVU5ERUZJTkVEID0gMw0KDQor DQoNCisNCg0KK3Zmcldhcm5pbmdNZXNzYWdlID0gew0KDQorICAgIEVGSV9WRlJfV0FSTklOR19D T0RFLlZGUl9XQVJOSU5HX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVEOg0KDQorICAgICI6IGRlZmF1 bHQgdmFsdWUgcmUtZGVmaW5lZCB3aXRoIGRpZmZlcmVudCB2YWx1ZSIsDQoNCisgICAgRUZJX1ZG Ul9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhfVEVYVF9UV086DQoNCisgICAg IjogQWN0aW9uIG9wY29kZSBzaG91bGQgbm90IGhhdmUgVGV4dFR3byBwYXJ0IiwNCg0KKyAgICBF RklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09E RToNCg0KKyAgICAiOiBOb3QgcmVjb21tZW5kIHRvIHVzZSBvYnNvbGV0ZWQgZnJhbWV3b3JrIG9w Y29kZSIsDQoNCisgICAgRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfQ09ERVVOREVG SU5FRDogIjogdW5kZWZpbmVkIFdhcm5pbmcgQ29kZSINCg0KK30NCg0KKw0KDQorDQoNCitjbGFz cyBDVmZyRXJyb3JIYW5kbGUoKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0K KyAgICAgICAgc2VsZi5fX0lucHV0RmlsZU5hbWUgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX192 ZnJFcnJvck1lc3NhZ2UgPSB2ZnJFcnJvck1lc3NhZ2UNCg0KKyAgICAgICAgc2VsZi5fX3Zmcldh cm5pbmdNZXNzYWdlID0gdmZyV2FybmluZ01lc3NhZ2UNCg0KKyAgICAgICAgc2VsZi5fX1dhcm5p bmdBc0Vycm9yID0gRmFsc2UNCg0KKw0KDQorICAgIGRlZiBTZXRXYXJuaW5nQXNFcnJvcihzZWxm LCBXYXJuaW5nQXNFcnJvcik6DQoNCisgICAgICAgIHNlbGYuX19XYXJuaW5nQXNFcnJvciA9IFdh cm5pbmdBc0Vycm9yDQoNCisNCg0KKyAgICBkZWYgU2V0SW5wdXRGaWxlKHNlbGYsIElucHV0Rmls ZSk6DQoNCisgICAgICAgIHNlbGYuX19JbnB1dEZpbGVOYW1lID0gSW5wdXRGaWxlDQoNCisNCg0K KyAgICBkZWYgSGFuZGxlV2FybmluZyhzZWxmLCBXYXJuaW5nQ29kZSwgTGluZU51bSwgVG9rZW5W YWx1ZT1Ob25lKToNCg0KKyAgICAgICAgaWYgc2VsZi5fX3Zmcldhcm5pbmdNZXNzYWdlID09IE5v bmU6DQoNCisgICAgICAgICAgICByZXR1cm4gMQ0KDQorICAgICAgICBXYXJuaW5nTXNnID0gJycN Cg0KKyAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9fdmZyV2FybmluZ01lc3NhZ2Uua2V5cygpOg0K DQorICAgICAgICAgICAgaWYgV2FybmluZ0NvZGUgPT0gc2VsZi5fX3Zmcldhcm5pbmdNZXNzYWdl W2tleV06DQoNCisgICAgICAgICAgICAgICAgV2FybmluZ01zZyA9IHNlbGYuX192ZnJXYXJuaW5n TWVzc2FnZVtrZXldDQoNCisgICAgICAgICAgICAgICAgYnJlYWsNCg0KKyAgICAgICAgaWYgV2Fy bmluZ01zZyAhPSAnJzoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19XYXJuaW5nQXNFcnJvcjoN Cg0KKyAgICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoJ1ZmckNvbXBpbGVyJywgV2Fybmlu Z0NvZGUsIFdhcm5pbmdNc2csDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuX19JbnB1dEZpbGVOYW1lLCBMaW5lTnVtLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAid2FybmluZyB0cmVhdGVkIGFzIGVycm9yIikNCg0KKyAgICAgICAgICAgIEVka0xv Z2dlci53YXJuKCdWZnJDb21waWxlcicsIFdhcm5pbmdNc2csIHNlbGYuX19JbnB1dEZpbGVOYW1l LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZU51bSwgVG9rZW5WYWx1ZSkNCg0K Kw0KDQorICAgIGRlZiBQcmludE1zZyhzZWxmLA0KDQorICAgICAgICAgICAgICAgICBMaW5lTnVt LA0KDQorICAgICAgICAgICAgICAgICBNc2dUeXBlPSdFcnJvcicsDQoNCisgICAgICAgICAgICAg ICAgIEVycm9yTXNnPU5vbmUsDQoNCisgICAgICAgICAgICAgICAgIFRva2VuVmFsdWU9Tm9uZSk6 DQoNCisgICAgICAgIGlmIE1zZ1R5cGUgPT0gJ1dhcm5pbmcnOg0KDQorICAgICAgICAgICAgRWRr TG9nZ2VyLnZlcmJvc2UoRXJyb3JNc2cpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICBFZGtMb2dnZXIuZXJyb3IoJ1ZmckNvbXBpbGVyJywgMHgzMDAwLCBFcnJvck1zZywNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fSW5wdXRGaWxlTmFtZSwgTGluZU51bSwg VG9rZW5WYWx1ZSkNCg0KKw0KDQorICAgIGRlZiBIYW5kbGVFcnJvcihzZWxmLCBFcnJvckNvZGUs IExpbmVOdW09Tm9uZSwgVG9rZW5WYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgaWYgc2VsZi5fX3Zm ckVycm9yTWVzc2FnZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIDENCg0KKyAgICAg ICAgRXJyb3JNc2cgPSAnJw0KDQorICAgICAgICBmb3Iga2V5IGluIHNlbGYuX192ZnJFcnJvck1l c3NhZ2Uua2V5cygpOg0KDQorICAgICAgICAgICAgaWYgRXJyb3JDb2RlID09IHNlbGYuX192ZnJF cnJvck1lc3NhZ2Vba2V5XToNCg0KKyAgICAgICAgICAgICAgICBFcnJvck1zZyA9IHNlbGYuX192 ZnJFcnJvck1lc3NhZ2Vba2V5XQ0KDQorICAgICAgICAgICAgICAgIGJyZWFrDQoNCisgICAgICAg IGlmIEVycm9yTXNnICE9ICcnOg0KDQorICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCdWZnJD b21waWxlcicsIEVycm9yQ29kZSwgRXJyb3JNc2csDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5fX0lucHV0RmlsZU5hbWUsIExpbmVOdW0sIFRva2VuVmFsdWUpDQoNCisgICAg ICAgICAgICByZXR1cm4gMQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJu IDANCg0KKw0KDQorDQoNCitnQ1ZmckVycm9ySGFuZGxlID0gQ1ZmckVycm9ySGFuZGxlKCkNClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1ZmckNvbXBpbGVyL1ZmckZvcm1Qa2cucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMC4uZWZhODEyOWQ5MA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyRm9ybVBrZy5weQ0KQEAgLTAsMCArMSwyNzM4IEBA DQorZnJvbSBhc3QgaW1wb3J0IEZvcg0KDQorZnJvbSByZSBpbXBvcnQgTA0KDQorZnJvbSBzcmVf cGFyc2UgaW1wb3J0IEZMQUdTDQoNCitmcm9tIHN0YXQgaW1wb3J0IEZJTEVfQVRUUklCVVRFX1NQ QVJTRV9GSUxFDQoNCitmcm9tIFZmckNvbXBpbGVyLkNvbW1vbkN0eXBlcyBpbXBvcnQgKg0KDQor ZnJvbSBWZnJDb21waWxlci5WZnJFcnJvciBpbXBvcnQgVmZyUmV0dXJuQ29kZQ0KDQorZnJvbSBW ZnJDb21waWxlci5WZnJVdGlsaXR5IGltcG9ydCAqDQoNCisNCg0KK2Zyb20gY3R5cGVzIGltcG9y dCAqDQoNCisNCg0KKw0KDQorY2xhc3MgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoKToNCg0KKw0KDQor ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBTaXplLCBTY29wZSk6DQoNCisgICAgICAgIHNlbGYuU2l6 ZSA9IFNpemUNCg0KKyAgICAgICAgc2VsZi5TY29wZSA9IFNjb3BlDQoNCisNCg0KKw0KDQorZ09w Y29kZVNpemVzU2NvcGVUYWJsZSA9IFsNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZSgwLCAw KSwgICMgRUZJX0lGUl9JTlZBTElEIC0gMHgwMA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2Rl KGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GT1JNKSwgMSksICAjIEVGSV9JRlJfRk9STV9PUA0KDQor ICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TVUJUSVRMRSks DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfU1VCVElUTEVfT1AN Cg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVEVYVCks IDApLCAgIyBFRklfSUZSX1RFWFRfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfSU1BR0UpLCAwKSwgICMgRUZJX0lGUl9JTUFHRV9PUA0KDQorICAg IE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9PTkVfT0YpLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX09ORV9PRl9PUCAtIDB4MDUN Cg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfQ0hFQ0tC T1gpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0NIRUNLQk9Y X09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX05V TUVSSUMpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX05VTUVS SUNfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf UEFTU1dPUkQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1BB U1NXT1JEX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklf SUZSX09ORV9PRl9PUFRJT04pLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX09ORV9PRl9PUFRJT05fT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfU1VQUFJFU1NfSUYpLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgIDEpLCAgIyBFRklfSUZSX1NVUFBSRVNTX0lGIC0gMHgwQQ0KDQorICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9MT0NLRUQpLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0xPQ0tFRF9PUA0KDQorICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BQ1RJT04pLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0FDVElPTl9PUA0KDQorICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9SRVNFVF9CVVRUT04pLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUA0KDQorICAg IE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GT1JNX1NFVCksDQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfRk9STV9TRVRfT1AgLTB4 RQ0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9SRUYp LCAwKSwgICMgRUZJX0lGUl9SRUZfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfTk9fU1VCTUlUX0lGKSwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAxKSwgICMgRUZJX0lGUl9OT19TVUJNSVRfSUZfT1AgLTB4MTANCg0KKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKSwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZf T1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRVFf SURfVkFMKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9FUV9J RF9WQUxfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfRVFfSURfSUQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZS X0VRX0lEX0lEX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihF RklfSUZSX0VRX0lEX1ZBTF9MSVNUKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwg ICMgRUZJX0lGUl9FUV9JRF9MSVNUX09QIC0gMHgxNA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BTkQpLCAwKSwgICMgRUZJX0lGUl9BTkRfT1ANCg0K KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT1IpLCAwKSwg ICMgRUZJX0lGUl9PUl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9OT1QpLCAwKSwgICMgRUZJX0lGUl9OT1RfT1ANCg0KKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUlVMRSksIDEpLCAgIyBFRklfSUZSX1JV TEVfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf R1JBWV9PVVRfSUYpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZS X0dSQVlPVVRfSUZfT1AgLSAweDE5DQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVz LnNpemVvZihFRklfSUZSX0RBVEUpLCAxKSwgICMgRUZJX0lGUl9EQVRFX09QDQoNCisgICAgT3Bj b2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RJTUUpLCAxKSwgICMgRUZJ X0lGUl9USU1FX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihF RklfSUZSX1NUUklORyksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9J RlJfU1RSSU5HX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihF RklfSUZSX1JFRlJFU0gpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX1JFRlJFU0hfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfRElTQUJMRV9JRiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAj IEVGSV9JRlJfRElTQUJMRV9JRl9PUCAtIDB4MUUNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZSgwLCAwKSwgICMgMHgxRg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9UT19MT1dFUiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAj IEVGSV9JRlJfVE9fTE9XRVJfT1AgLSAweDIwDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUo Y3R5cGVzLnNpemVvZihFRklfSUZSX1RPX1VQUEVSKSwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAwKSwgICMgRUZJX0lGUl9UT19VUFBFUl9PUCAtIDB4MjENCg0KKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTUFQKSwgMSksICAjIEVGSV9JRlJfTUFQ IC0gMHgyMg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9PUkRFUkVEX0xJU1QpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklf SUZSX09SREVSRURfTElTVF9PUCAtIDB4MjMNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShj dHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkUpLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgIDApLCAgIyBFRklfSUZSX1ZBUlNUT1JFX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5v ZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUUpLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1AN Cg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkFSU1RP UkVfRUZJKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9WQVJT VE9SRV9FRklfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfVkFSU1RPUkVfREVWSUNFKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwg ICMgRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0VfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkVSU0lPTiksDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfVkVSU0lPTl9PUCAtIDB4MjgNCg0KKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRU5EKSwgMCksICAjIEVGSV9JRlJfRU5E X09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01B VENIKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9NQVRDSF9P UCAtIDB4MkENCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfR0VUKSwgMCksICAjIEVGSV9JRlJfR0VUIC0gMHgyQg0KDQorICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TRVQpLCAwKSwgICMgRUZJX0lGUl9TRVQgLSAw eDJDDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1JF QUQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1JFQUQgLSAw eDJEDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1dS SVRFKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9XUklURSAt IDB4MkUNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf RVFVQUwpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0VRVUFM X09QIC0gMHgyRg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9OT1RfRVFVQUwpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX05PVF9FUVVBTF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9HUkVBVEVSX1RIQU4pLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDAp LCAgIyBFRklfSUZSX0dSRUFURVJfVEhBTl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2Rl KGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HUkVBVEVSX0VRVUFMKSwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9HUkVBVEVSX0VRVUFMX09QDQoNCisgICAgT3Bjb2Rl U2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0xFU1NfVEhBTiksDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTEVTU19USEFOX09QDQoNCisgICAg T3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0xFU1NfRVFVQUwpLA0K DQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0xFU1NfRVFVQUxfT1Ag LSAweDM0DQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X0JJVFdJU0VfQU5EKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lG Ul9CSVRXSVNFX0FORF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9CSVRXSVNFX09SKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwg ICMgRUZJX0lGUl9CSVRXSVNFX09SX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5 cGVzLnNpemVvZihFRklfSUZSX0JJVFdJU0VfTk9UKSwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAwKSwgICMgRUZJX0lGUl9CSVRXSVNFX05PVF9PUA0KDQorICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TSElGVF9MRUZUKSwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TSElGVF9MRUZUX09QDQoNCisgICAgT3Bjb2Rl U2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NISUZUX1JJR0hUKSwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TSElGVF9SSUdIVF9PUA0KDQor ICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BREQpLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0FERF9PUCAtIDB4M0ENCg0K KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU1VCVFJBQ1Qp LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1NVQlRSQUNUX09Q DQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01VTFRJ UExZKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9NVUxUSVBM WV9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9E SVZJREUpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0RJVklE RV9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9N T0RVTE8pLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX01PRFVM T19PUCAtIDB4M0UNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfUlVMRV9SRUYpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX1JVTEVfUkVGX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVv ZihFRklfSUZSX1FVRVNUSU9OX1JFRjEpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDAp LCAgIyBFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGMiksDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfUVVFU1RJT05fUkVGMl9PUCAtIDB4NDENCg0KKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVUlOVDgpLCAwKSwg ICMgRUZJX0lGUl9VSU5UOA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9VSU5UMTYpLCAwKSwgICMgRUZJX0lGUl9VSU5UMTYNCg0KKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVUlOVDMyKSwgMCksICAjIEVGSV9J RlJfVUlOVDMyDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklf SUZSX1VJTlQ2NCksIDApLCAgIyBFRklfSUZSX1VUTlQ2NA0KDQorICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9UUlVFKSwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAwKSwgICMgRUZJX0lGUl9UUlVFX09QIC0gMHg0Ng0KDQorICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GQUxTRSksIDApLCAgIyBFRklfSUZSX0ZB TFNFX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X1RPX1VJTlQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1RP X1VJTlRfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfVE9fU1RSSU5HKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lG Ul9UT19TVFJJTkdfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfVE9fQk9PTEVBTiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAj IEVGSV9JRlJfVE9fQk9PTEVBTl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9NSUQpLCAwKSwgICMgRUZJX0lGUl9NSURfT1ANCg0KKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRklORCksIDApLCAgIyBFRklf SUZSX0ZJTkRfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfVE9LRU4pLCAwKSwgICMgRUZJX0lGUl9UT0tFTl9PUA0KDQorICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TVFJJTkdfUkVGMSksDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfU1RSSU5HX1JFRjFfT1AgLSAweDRFDQoN CisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NUUklOR19S RUYyKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TVFJJTkdf UkVGMl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9DT05ESVRJT05BTCksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfQ09ORElUSU9OQUxfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGMyksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9aRVJPKSwgMCksICAjIEVGSV9JRlJfWkVST19PUA0K DQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9PTkUpLCAw KSwgICMgRUZJX0lGUl9PTkVfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfT05FUyksIDApLCAgIyBFRklfSUZSX09ORVNfT1ANCg0KKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVU5ERUZJTkVEKSwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9VTkRFRklORURfT1ANCg0KKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTEVOR1RIKSwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9MRU5HVEhfT1ANCg0KKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRFVQKSwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9EVVBfT1AgLSAweDU3DQoNCisg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RISVMpLCAwKSwg ICMgRUZJX0lGUl9USElTX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNp emVvZihFRklfSUZSX1NQQU4pLCAwKSwgICMgRUZJX0lGUl9TUEFOX09QDQoNCisgICAgT3Bjb2Rl U2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1ZBTFVFKSwgMSksICAjIEVGSV9J RlJfVkFMVUVfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfREVGQVVMVCksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfREVGQVVMVF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2Yo RUZJX0lGUl9ERUZBVUxUU1RPUkUpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAg IyBFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCAtIDB4NUMNCg0KKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRk9STV9NQVApLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0ZPUk1fTUFQX09QIC0gMHg1RA0KDQorICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9DQVRFTkFURSksDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfQ0FURU5BVEVfT1ANCg0KKyAgICBP cGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRCksIDApLCAgIyBF RklfSUZSX0dVSURfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfU0VDVVJJVFkpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX1NFQ1VSSVRZX09QIC0gMHg2MA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0 eXBlcy5zaXplb2YoRUZJX0lGUl9NT0RBTF9UQUcpLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgIDApLCAgIyBFRklfSUZSX01PREFMX1RBR19PUCAtIDB4NjENCg0KKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUkVGUkVTSF9JRCksDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfUkVGUkVTSF9JRF9PUCAtIDB4NjINCg0K KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfV0FSTklOR19J RiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfV0FSTklOR19J Rl9PUCAtIDB4NjMNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfTUFUQ0gyKSwgMCkNCg0KK10NCg0KKw0KDQorDQoNCitjbGFzcyBTQnVmZmVyTm9kZSgp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIEJ1ZmZlcj0nJywgTmV4dD1Ob25lKToN Cg0KKyAgICAgICAgc2VsZi5CdWZmZXIgPSBCdWZmZXINCg0KKyAgICAgICAgc2VsZi5OZXh0ID0g TmV4dA0KDQorDQoNCisNCg0KK2NsYXNzIENGb3JtUGtnKCk6DQoNCisNCg0KKyAgICBkZWYgX19p bml0X18oc2VsZiwgQnVmZmVyU2l6ZT00MDk2KToNCg0KKw0KDQorICAgICAgICBOb2RlID0gU0J1 ZmZlck5vZGUoKQ0KDQorICAgICAgICBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlSGVhZCA9IE5vZGUN Cg0KKyAgICAgICAgc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwgPSBOb2RlDQoNCisgICAgICAg IHNlbGYuX19DdXJyQnVmZmVyTm9kZSA9IE5vZGUNCg0KKyAgICAgICAgc2VsZi5fX1JlYWRCdWZm ZXJOb2RlID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fUmVhZEJ1ZmZlck9mZnNldCA9IDANCg0K KyAgICAgICAgc2VsZi5fX1BrZ0xlbmd0aCA9IDANCg0KKyAgICAgICAgc2VsZi5fX1BlbmRpbmdB c3NpZ25MaXN0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fQnVmZmVyU2l6ZSA9IEJ1ZmZlclNp emUNCg0KKw0KDQorICAgIGRlZiBHZXRQa2dMZW5ndGgoc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fUGtnTGVuZ3RoDQoNCisNCg0KKyAgICBkZWYgX19jcmVhdGVOZXdOb2RlKHNlbGYp Og0KDQorICAgICAgICBOb2RlID0gU0J1ZmZlck5vZGUoKQ0KDQorICAgICAgICByZXR1cm4gTm9k ZQ0KDQorDQoNCisgICAgZGVmIF9fR2V0Tm9kZUJlZm9yZShzZWxmLCBDdXJyZW50Tm9kZSk6DQoN CisgICAgICAgIEZpcnN0Tm9kZSA9IHNlbGYuX19CdWZmZXJOb2RlUXVldWVIZWFkDQoNCisgICAg ICAgIExhc3ROb2RlID0gc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZUhlYWQNCg0KKyAgICAgICAgd2hp bGUgRmlyc3ROb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBGaXJzdE5vZGUgPT0gQ3Vy cmVudE5vZGU6DQoNCisgICAgICAgICAgICAgICAgYnJlYWsNCg0KKw0KDQorICAgICAgICAgICAg TGFzdE5vZGUgPSBGaXJzdE5vZGUNCg0KKyAgICAgICAgICAgIEZpcnN0Tm9kZSA9IEZpcnN0Tm9k ZS5OZXh0DQoNCisNCg0KKyAgICAgICAgaWYgRmlyc3ROb2RlID09IE5vbmU6DQoNCisgICAgICAg ICAgICBMYXN0Tm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICByZXR1cm4gTGFzdE5vZGUNCg0K Kw0KDQorICAgIGRlZiBfX0luc2VydE5vZGVCZWZvcmUoc2VsZiwgQ3VycmVudE5vZGUsIE5ld05v ZGUpOg0KDQorICAgICAgICBMYXN0Tm9kZSA9IHNlbGYuX19HZXROb2RlQmVmb3JlKEN1cnJlbnRO b2RlKQ0KDQorICAgICAgICBpZiBMYXN0Tm9kZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9NSVNNQVRDSEVEDQoNCisNCg0KKyAgICAgICAg TmV3Tm9kZS5OZXh0ID0gTGFzdE5vZGUuTmV4dA0KDQorICAgICAgICBMYXN0Tm9kZS5OZXh0ID0g TmV3Tm9kZQ0KDQorDQoNCisgICAgZGVmIElmckJpbkJ1ZmZlckdldChzZWxmLCBMZW4pOg0KDQor ICAgICAgICBpZiBMZW4gPT0gMCBvciBMZW4gPiBzZWxmLl9fQnVmZmVyU2l6ZToNCg0KKyAgICAg ICAgICAgIHJldHVybiBOb25lDQoNCisgICAgICAgIGlmIGxlbihzZWxmLl9fQ3VyckJ1ZmZlck5v ZGUuQnVmZmVyKSArIExlbiA+IHNlbGYuX19CdWZmZXJTaXplOg0KDQorICAgICAgICAgICAgTm9k ZSA9IHNlbGYuX19jcmVhdGVOZXdOb2RlKCkNCg0KKyAgICAgICAgICAgIGlmIE5vZGUgPT0gTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQ0KDQorDQoNCisgICAgICAgICAgICBp ZiBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlVGFpbCA9PSBOb25lOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuX19CdWZmZXJOb2RlUXVldWVIZWFkID0gc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwg PSBOb2RlDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19C dWZmZXJOb2RlUXVldWVUYWlsLk5leHQgPSBOb2RlDQoNCisgICAgICAgICAgICAgICAgbUJ1ZmZl ck5vZGVRdWV1ZVRhaWwgPSBOb2RlDQoNCisgICAgICAgICAgICBzZWxmLl9fQ3VyckJ1ZmZlck5v ZGUgPSBOb2RlDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX1BrZ0xlbmd0aCArPSBMZW4NCg0KKw0K DQorICAgICAgICByZXR1cm4gc2VsZi5fX0N1cnJCdWZmZXJOb2RlLkJ1ZmZlcg0KDQorDQoNCisN Cg0KKw0KDQorZ0NGb3JtUGtnID0gQ0Zvcm1Qa2coKQ0KDQorZ0NyZWF0ZU9wID0gVHJ1ZQ0KDQor DQoNCitnSWZyT2JqUHJpbnREZWJ1Z1RhYmxlID0gWw0KDQorICAgICJFRklfSUZSX0lOVkFMSUQi LA0KDQorICAgICJFRklfSUZSX0ZPUk0iLA0KDQorICAgICJFRklfSUZSX1NVQlRJVExFIiwNCg0K KyAgICAiRUZJX0lGUl9URVhUIiwNCg0KKyAgICAiRUZJX0lGUl9JTUFHRSIsDQoNCisgICAgIkVG SV9JRlJfT05FX09GIiwNCg0KKyAgICAiRUZJX0lGUl9DSEVDS0JPWCIsDQoNCisgICAgIkVGSV9J RlJfTlVNRVJJQyIsDQoNCisgICAgIkVGSV9JRlJfUEFTU1dPUkQiLA0KDQorICAgICJFRklfSUZS X09ORV9PRl9PUFRJT04iLA0KDQorICAgICJFRklfSUZSX1NVUFBSRVNTX0lGIiwNCg0KKyAgICAi RUZJX0lGUl9MT0NLRUQiLA0KDQorICAgICJFRklfSUZSX0FDVElPTiIsDQoNCisgICAgIkVGSV9J RlJfUkVTRVRfQlVUVE9OIiwNCg0KKyAgICAiRUZJX0lGUl9GT1JNX1NFVCIsDQoNCisgICAgIkVG SV9JRlJfUkVGIiwNCg0KKyAgICAiRUZJX0lGUl9OT19TVUJNSVRfSUYiLA0KDQorICAgICJFRklf SUZSX0lOQ09OU0lTVEVOVF9JRiIsDQoNCisgICAgIkVGSV9JRlJfRVFfSURfVkFMIiwNCg0KKyAg ICAiRUZJX0lGUl9FUV9JRF9JRCIsDQoNCisgICAgIkVGSV9JRlJfRVFfSURfTElTVCIsDQoNCisg ICAgIkVGSV9JRlJfQU5EIiwNCg0KKyAgICAiRUZJX0lGUl9PUiIsDQoNCisgICAgIkVGSV9JRlJf Tk9UIiwNCg0KKyAgICAiRUZJX0lGUl9SVUxFIiwNCg0KKyAgICAiRUZJX0lGUl9HUkFZX09VVF9J RiIsDQoNCisgICAgIkVGSV9JRlJfREFURSIsDQoNCisgICAgIkVGSV9JRlJfVElNRSIsDQoNCisg ICAgIkVGSV9JRlJfU1RSSU5HIiwNCg0KKyAgICAiRUZJX0lGUl9SRUZSRVNIIiwNCg0KKyAgICAi RUZJX0lGUl9ESVNBQkxFX0lGIiwNCg0KKyAgICAiRUZJX0lGUl9JTlZBTElEIiwNCg0KKyAgICAi RUZJX0lGUl9UT19MT1dFUiIsDQoNCisgICAgIkVGSV9JRlJfVE9fVVBQRVIiLA0KDQorICAgICJF RklfSUZSX01BUCIsDQoNCisgICAgIkVGSV9JRlJfT1JERVJFRF9MSVNUIiwNCg0KKyAgICAiRUZJ X0lGUl9WQVJTVE9SRSIsDQoNCisgICAgIkVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRSIsDQoN CisgICAgIkVGSV9JRlJfVkFSU1RPUkVfRUZJIiwNCg0KKyAgICAiRUZJX0lGUl9WQVJTVE9SRV9E RVZJQ0UiLA0KDQorICAgICJFRklfSUZSX1ZFUlNJT04iLA0KDQorICAgICJFRklfSUZSX0VORCIs DQoNCisgICAgIkVGSV9JRlJfTUFUQ0giLA0KDQorICAgICJFRklfSUZSX0dFVCIsDQoNCisgICAg IkVGSV9JRlJfU0VUIiwNCg0KKyAgICAiRUZJX0lGUl9SRUFEIiwNCg0KKyAgICAiRUZJX0lGUl9X UklURSIsDQoNCisgICAgIkVGSV9JRlJfRVFVQUwiLA0KDQorICAgICJFRklfSUZSX05PVF9FUVVB TCIsDQoNCisgICAgIkVGSV9JRlJfR1JFQVRFUl9USEFOIiwNCg0KKyAgICAiRUZJX0lGUl9HUkVB VEVSX0VRVUFMIiwNCg0KKyAgICAiRUZJX0lGUl9MRVNTX1RIQU4iLA0KDQorICAgICJFRklfSUZS X0xFU1NfRVFVQUwiLA0KDQorICAgICJFRklfSUZSX0JJVFdJU0VfQU5EIiwNCg0KKyAgICAiRUZJ X0lGUl9CSVRXSVNFX09SIiwNCg0KKyAgICAiRUZJX0lGUl9CSVRXSVNFX05PVCIsDQoNCisgICAg IkVGSV9JRlJfU0hJRlRfTEVGVCIsDQoNCisgICAgIkVGSV9JRlJfU0hJRlRfUklHSFQiLA0KDQor ICAgICJFRklfSUZSX0FERCIsDQoNCisgICAgIkVGSV9JRlJfU1VCVFJBQ1QiLA0KDQorICAgICJF RklfSUZSX01VTFRJUExZIiwNCg0KKyAgICAiRUZJX0lGUl9ESVZJREUiLA0KDQorICAgICJFRklf SUZSX01PRFVMTyIsDQoNCisgICAgIkVGSV9JRlJfUlVMRV9SRUYiLA0KDQorICAgICJFRklfSUZS X1FVRVNUSU9OX1JFRjEiLA0KDQorICAgICJFRklfSUZSX1FVRVNUSU9OX1JFRjIiLA0KDQorICAg ICJFRklfSUZSX1VJTlQ4IiwNCg0KKyAgICAiRUZJX0lGUl9VSU5UMTYiLA0KDQorICAgICJFRklf SUZSX1VJTlQzMiIsDQoNCisgICAgIkVGSV9JRlJfVUlOVDY0IiwNCg0KKyAgICAiRUZJX0lGUl9U UlVFIiwNCg0KKyAgICAiRUZJX0lGUl9GQUxTRSIsDQoNCisgICAgIkVGSV9JRlJfVE9fVUlOVCIs DQoNCisgICAgIkVGSV9JRlJfVE9fU1RSSU5HIiwNCg0KKyAgICAiRUZJX0lGUl9UT19CT09MRUFO IiwNCg0KKyAgICAiRUZJX0lGUl9NSUQiLA0KDQorICAgICJFRklfSUZSX0ZJTkQiLA0KDQorICAg ICJFRklfSUZSX1RPS0VOIiwNCg0KKyAgICAiRUZJX0lGUl9TVFJJTkdfUkVGMSIsDQoNCisgICAg IkVGSV9JRlJfU1RSSU5HX1JFRjIiLA0KDQorICAgICJFRklfSUZSX0NPTkRJVElPTkFMIiwNCg0K KyAgICAiRUZJX0lGUl9RVUVTVElPTl9SRUYzIiwNCg0KKyAgICAiRUZJX0lGUl9aRVJPIiwNCg0K KyAgICAiRUZJX0lGUl9PTkUiLA0KDQorICAgICJFRklfSUZSX09ORVMiLA0KDQorICAgICJFRklf SUZSX1VOREVGSU5FRCIsDQoNCisgICAgIkVGSV9JRlJfTEVOR1RIIiwNCg0KKyAgICAiRUZJX0lG Ul9EVVAiLA0KDQorICAgICJFRklfSUZSX1RISVMiLA0KDQorICAgICJFRklfSUZSX1NQQU4iLA0K DQorICAgICJFRklfSUZSX1ZBTFVFIiwNCg0KKyAgICAiRUZJX0lGUl9ERUZBVUxUIiwNCg0KKyAg ICAiRUZJX0lGUl9ERUZBVUxUU1RPUkUiLA0KDQorICAgICJFRklfSUZSX0ZPUk1fTUFQIiwNCg0K KyAgICAiRUZJX0lGUl9DQVRFTkFURSIsDQoNCisgICAgIkVGSV9JRlJfR1VJRCIsDQoNCisgICAg IkVGSV9JRlJfU0VDVVJJVFkiLA0KDQorICAgICJFRklfSUZSX01PREFMX1RBRyIsDQoNCisgICAg IkVGSV9JRlJfUkVGUkVTSF9JRCIsDQoNCisgICAgIkVGSV9JRlJfV0FSTklOR19JRiIsDQoNCisg ICAgIkVGSV9JRlJfTUFUQ0gyIiwNCg0KK10NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyT2JqKCk6 DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgT2JqPU5vbmUsIE9wQ29kZT1Ob25lLCBP YmpCaW5MZW49MCwgRGVsYXlFbWl0PUZhbHNlLCBMaW5lTm89MCk6DQoNCisNCg0KKyAgICAgICAg c2VsZi5fX0RlbGF5RW1pdCA9IERlbGF5RW1pdA0KDQorICAgICAgICBzZWxmLl9fUGtnT2Zmc2V0 ID0gZ0NGb3JtUGtnLkdldFBrZ0xlbmd0aCgpDQoNCisgICAgICAgIHNlbGYuX19PYmpCaW5MZW4g PSBnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlWw0KDQorICAgICAgICAgICAgT3BDb2RlXS5TaXplIGlm IE9iakJpbkxlbiA9PSAwIGVsc2UgT2JqQmluTGVuDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX09i akJpbkJ1ZiA9IE9iag0KDQorICAgICAgICBzZWxmLl9fTGluZU5vID0gTGluZU5vDQoNCisNCg0K KyAgICAgICAgIyBwcmludCAoIj09PT09PUNyZWF0ZSBJRlIgWyVzXVxuIiwgZ0lmck9ialByaW50 RGVidWdUYWJsZVtPcENvZGVdKQ0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09iakJpbkJ1Zg0K DQorDQoNCisgICAgZGVmIFNldE9iakJpbihzZWxmLCBPYmpCaW5MZW4pOg0KDQorDQoNCisgICAg ICAgIHNlbGYuX19PYmpCaW5MZW4gPSBPYmpCaW5MZW4NCg0KKyAgICAgICAgaWYgc2VsZi5fX0Rl bGF5RW1pdCA9PSBGYWxzZSBhbmQgZ0NyZWF0ZU9wID09IFRydWU6DQoNCisgICAgICAgICAgICBz ZWxmLl9fT2JqQmluQnVmID0gZ0NGb3JtUGtnLklmckJpbkJ1ZmZlckdldChzZWxmLl9fT2JqQmlu TGVuKQ0KDQorDQoNCisgICAgZGVmIFNldExpbmVObyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAg ICBzZWxmLl9fTGluZU5vID0gTGluZU5vDQoNCisNCg0KKyAgICBkZWYgR2V0T2JqQmluQWRkcihz ZWxmLCBBZGRyKToNCg0KKyAgICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9IEFkZHINCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYuX19PYmpCaW5CdWYNCg0KKw0KDQorICAgIGRlZiBHZXRPYmpCaW5PZmZz ZXQoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUGtnT2Zmc2V0DQoNCisNCg0KKyAg ICBkZWYgR2V0T2JqQmluTGVuKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09iakJp bkxlbg0KDQorDQoNCisgICAgZGVmIEV4cGVuZE9iakJpbihzZWxmLCBTaXplKToNCg0KKyAgICAg ICAgaWYgKHNlbGYuX19EZWxheUVtaXQpID09IFRydWUgYW5kICgNCg0KKyAgICAgICAgICAgIChz ZWxmLl9fT2JqQmluTGVuICsgU2l6ZSkgPiBzZWxmLl9fT2JqQmluTGVuKToNCg0KKyAgICAgICAg ICAgIHNlbGYuX19PYmpCaW5MZW4gPSBzZWxmLl9fT2JqQmluTGVuICsgU2l6ZQ0KDQorICAgICAg ICAgICAgcmV0dXJuIFRydWUNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVy biBGYWxzZQ0KDQorDQoNCisgICAgZGVmIFNocmlua09iakJpbihzZWxmLCBTaXplKToNCg0KKyAg ICAgICAgaWYgKHNlbGYuX19EZWxheUVtaXQpID09IFRydWUgYW5kIChzZWxmLl9fT2JqQmluTGVu ID4gU2l6ZSk6DQoNCisgICAgICAgICAgICBzZWxmLl9fT2JqQmluTGVuID0gc2VsZi5fX09iakJp bkxlbiAtIFNpemUNCg0KKw0KDQorICAgIGRlZiBHZXRPYmpCaW4oc2VsZik6DQoNCisgICAgICAg IHJldHVybiBzZWxmLl9fT2JqQmluQnVmDQoNCisNCg0KKyAgICBkZWYgRU1JVF9QRU5ESU5HX09C SihzZWxmKToNCg0KKyAgICAgICAgaWYgc2VsZi5fX0RlbGF5RW1pdCA9PSBGYWxzZSBvciBnQ3Jl YXRlT3AgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBz ZWxmLl9fUGtnT2Zmc2V0ID0gZ0NGb3JtUGtnLkdldFBrZ0xlbmd0aCgpDQoNCisgICAgICAgICMg dXBkYXRlIGRhdGEgYnVmZmVyIHRvIHBhY2thZ2UgZGF0YQ0KDQorICAgICAgICBzZWxmLl9fT2Jq QmluQnVmID0gZ0NGb3JtUGtnLklmckJpbkJ1ZmZlckdldChzZWxmLl9fT2JqQmluTGVuKQ0KDQor DQoNCisgICAgICAgIHNlbGYuX19EZWxheUVtaXQgPSBGYWxzZQ0KDQorDQoNCisNCg0KK2dTY29w ZUNvdW50ID0gMA0KDQorZ0lzT3JkZXJlZExpc3QgPSBGYWxzZQ0KDQorZ0lzU3RyaW5nT3AgPSBG YWxzZQ0KDQorZ0N1cnJlbnRRdWVzdGlvbiA9IE5vbmUNCg0KK2dDdXJyZW50TWluTWF4RGF0YSA9 IE5vbmUNCg0KKw0KDQorDQoNCitkZWYgU2V0Q3VycmVudFF1ZXN0aW9uKFF1ZXN0aW9uKToNCg0K Kw0KDQorICAgIGdDdXJyZW50UXVlc3Rpb24gPSBRdWVzdGlvbg0KDQorICAgIHJldHVybiBnQ3Vy cmVudFF1ZXN0aW9uDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck9wSGVhZGVyKCk6DQoNCisNCg0K KyAgICBkZWYgX19pbml0X18oc2VsZiwgT3BIZWFkZXI6IEVGSV9JRlJfT1BfSEVBREVSLCBPcENv ZGU9Tm9uZSwgTGVuZ3RoPTApOg0KDQorICAgICAgICBzZWxmLl9fT3BIZWFkZXIgPSBPcEhlYWRl cg0KDQorICAgICAgICBpZiBPcENvZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19P cEhlYWRlci5PcENvZGUgPSBPcENvZGUNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5fX09wSGVh ZGVyLkxlbmd0aCA9IGdPcGNvZGVTaXplc1Njb3BlVGFibGVbDQoNCisgICAgICAgICAgICAgICAg T3BDb2RlXS5TaXplIGlmIExlbmd0aCA9PSAwIGVsc2UgTGVuZ3RoDQoNCisgICAgICAgICAgICBz ZWxmLl9fT3BIZWFkZXIuU2NvcGUgPSAxIGlmICgNCg0KKyAgICAgICAgICAgICAgICBnT3Bjb2Rl U2l6ZXNTY29wZVRhYmxlW09wQ29kZV0uU2NvcGUgKyBnU2NvcGVDb3VudCA+IDApIGVsc2UgMA0K DQorDQoNCisgICAgZGVmIEdldExlbmd0aChzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYu X19PcEhlYWRlci5MZW5ndGgNCg0KKw0KDQorICAgIGRlZiBTZXRTY29wZShzZWxmLCBTY29wZSk6 DQoNCisgICAgICAgIHNlbGYuX19PcEhlYWRlci5TY29wZSA9IFNjb3BlDQoNCisNCg0KKyAgICBk ZWYgR2V0U2NvcGUoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fT3BIZWFkZXIuU2Nv cGUNCg0KKw0KDQorICAgIGRlZiBVcGRhdGVIZWFkZXIoc2VsZiwgSGVhZGVyKToNCg0KKyAgICAg ICAgc2VsZi5fX09wSGVhZGVyID0gSGVhZGVyDQoNCisNCg0KKyAgICBkZWYgSW5jTGVuZ3RoKHNl bGYsIFNpemUpOg0KDQorICAgICAgICBzZWxmLl9fT3BIZWFkZXIuTGVuZ3RoICs9IFNpemUNCg0K Kw0KDQorICAgIGRlZiBEZWNMZW5ndGgoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuX19P cEhlYWRlci5MZW5ndGggLT0gU2l6ZQ0KDQorDQoNCisgICAgZGVmIEdldE9wQ29kZShzZWxmKToN Cg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19PcEhlYWRlci5PcENvZGUNCg0KKw0KDQorDQoNCitj bGFzcyBDSWZyU3RhdGVtZW50SGVhZGVyKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs Ziwgc0hlYWRlcjogRUZJX0lGUl9TVEFURU1FTlRfSEVBREVSKToNCg0KKyAgICAgICAgc2VsZi5f X3NIZWFkZXIgPSBzSGVhZGVyDQoNCisgICAgICAgIHNlbGYuX19zSGVhZGVyLkhlbHAgPSBFRklf U1RSSU5HX0lEX0lOVkFMSUQNCg0KKyAgICAgICAgc2VsZi5fX3NIZWFkZXIuUHJvbXB0ID0gRUZJ X1NUUklOR19JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgR2V0U3RhdGVtZW50SGVhZGVyKHNl bGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX3NIZWFkZXINCg0KKw0KDQorICAgIGRlZiBT ZXRQcm9tcHQoc2VsZiwgUHJvbXB0KToNCg0KKyAgICAgICAgc2VsZi5fX3NIZWFkZXIuUHJvbXB0 ID0gUHJvbXB0DQoNCisNCg0KKyAgICBkZWYgU2V0SGVscChzZWxmLCBIZWxwKToNCg0KKyAgICAg ICAgc2VsZi5fX3NIZWFkZXIuSGVscCA9IEhlbHANCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyTWlu TWF4U3RlcERhdGEoKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBNaW5NYXhTdGVw RGF0YSwgTnVtZXJpY09wY29kZT1GYWxzZSk6DQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVw RGF0YSA9IE1pbk1heFN0ZXBEYXRhDQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51 NjQuTWluVmFsdWUgPSAwDQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4 VmFsdWUgPSAwDQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuU3RlcCA9IDAN Cg0KKyAgICAgICAgc2VsZi5fX1ZhbHVlSXNTZXQgPSBGYWxzZQ0KDQorICAgICAgICBzZWxmLl9f SXNOdW1lcmljID0gTnVtZXJpY09wY29kZQ0KDQorICAgICAgICBzZWxmLl9fVmFyVHlwZSA9IEVG SV9JRlJfVFlQRV9OVU1fU0laRV82NA0KDQorDQoNCisgICAgZGVmIFNldE1pbk1heFN0ZXBEYXRh KHNlbGYsIE1pblZhbHVlLCBNYXhWYWx1ZSwgU3RlcCwgVmFyVHlwZSk6DQoNCisgICAgICAgIHNl bGYuX19WYXJUeXBlID0gVmFyVHlwZQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19WYWx1ZUlz U2V0ID09IEZhbHNlOg0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVf TlVNX1NJWkVfNjQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2 NC5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0 ZXBEYXRhLnU2NC5NYXhWYWx1ZSA9IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5f X01pbk1heFN0ZXBEYXRhLnU2NC5TdGVwID0gU3RlcA0KDQorICAgICAgICAgICAgaWYgVmFyVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5f X01pbk1heFN0ZXBEYXRhLnUzMi5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZSA9IE1heFZhbHVlDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5TdGVwID0gU3RlcA0KDQorICAg ICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NaW5WYWx1ZSA9IE1pblZhbHVl DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NYXhWYWx1ZSA9 IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5T dGVwID0gU3RlcA0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfODoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWlu VmFsdWUgPSBNaW5WYWx1ZQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0 YS51OC5NYXhWYWx1ZSA9IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1h eFN0ZXBEYXRhLnU4LlN0ZXAgPSBTdGVwDQoNCisgICAgICAgICAgICBzZWxmLl9fVmFsdWVJc1Nl dCA9IFRydWUNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIGlmIE1pblZhbHVl IDwgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZToNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisg ICAgICAgICAgICAgICAgaWYgTWF4VmFsdWUgPiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1h eFZhbHVlOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0 Lk1heFZhbHVlID0gTWF4VmFsdWUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3Rl cERhdGEudTY0LlN0ZXAgPSBTdGVwDQoNCisgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICBpZiBNaW5WYWx1ZSA8IHNl bGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWU6DQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KDQorICAgICAg ICAgICAgICAgIGlmIE1heFZhbHVlID4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1 ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhW YWx1ZSA9IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRh LnUzMi5TdGVwID0gU3RlcA0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAgICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLl9f TWluTWF4U3RlcERhdGEudTE2Lk1pblZhbHVlOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fTWluTWF4U3RlcERhdGEudTE2Lk1pblZhbHVlID0gTWluVmFsdWUNCg0KKyAgICAgICAgICAg ICAgICBpZiBNYXhWYWx1ZSA+IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MTYuTWF4VmFsdWU6DQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MTYuTWF4VmFsdWUg PSBNYXhWYWx1ZQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MTYu U3RlcCA9IFN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLl9fTWluTWF4 U3RlcERhdGEudTguTWluVmFsdWU6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5N YXhTdGVwRGF0YS51OC5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAgICAgICAgICAgaWYg TWF4VmFsdWUgPiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWF4VmFsdWU6DQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NYXhWYWx1ZSA9IE1heFZhbHVl DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU4LlN0ZXAgPSBTdGVw DQoNCisNCg0KKyAgICBkZWYgR2V0VmFyVHlwZShzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYuX19WYXJUeXBlDQoNCisNCg0KKyAgICBkZWYgSXNOdW1lcmljT3Bjb2RlKHNlbGYpOg0KDQor ICAgICAgICByZXR1cm4gc2VsZi5fX0lzTnVtZXJpYw0KDQorDQoNCisgICAgZGVmIFVwZGF0ZUNJ ZnJNaW5NYXhTdGVwRGF0YShzZWxmLCBNaW5NYXhTdGVwRGF0YSk6DQoNCisgICAgICAgIHNlbGYu X19NaW5NYXhTdGVwRGF0YSA9IE1pbk1heFN0ZXBEYXRhDQoNCisNCg0KKyAgICBkZWYgR2V0TWlu RGF0YShzZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6DQoNCisNCg0KKyAgICAgICAgaWYgSXNCaXRW YXI6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NaW5W YWx1ZQ0KDQorDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBpZiBWYXJUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZQ0KDQorICAgICAgICAgICAgaWYgVmFyVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWUNCg0KKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTE2Lk1pblZhbHVlDQoNCisgICAgICAgICAgICBp ZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWluVmFsdWUNCg0KKw0KDQorICAgICAg ICByZXR1cm4gMA0KDQorDQoNCisgICAgZGVmIEdldE1heERhdGEoc2VsZiwgVmFyVHlwZSwgSXNC aXRWYXIpOg0KDQorDQoNCisgICAgICAgIGlmIElzQml0VmFyOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWF4VmFsdWUNCg0KKw0KDQorICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf NjQ6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQu TWF4VmFsdWUNCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9T SVpFXzMyOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEu dTMyLk1heFZhbHVlDQoNCisgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9O VU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBE YXRhLnUxNi5NYXhWYWx1ZQ0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfODoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0 ZXBEYXRhLnU4Lk1heFZhbHVlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIDANCg0KKw0KDQorICAg IGRlZiBHZXRTdGVwRGF0YShzZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6DQoNCisNCg0KKyAgICAg ICAgaWYgSXNCaXRWYXI6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBE YXRhLnUzMi5TdGVwDQoNCisNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0LlN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLlN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTE2LlN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5TdGVwDQoNCisNCg0KKyAgICAgICAgcmV0dXJu IDANCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRm9ybVNldChDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KDQorICAgICAgICBzZWxm Ll9fRm9ybVNldCA9IEVGSV9JRlJfRk9STV9TRVQoKQ0KDQorICAgICAgICBDSWZyT2JqLl9faW5p dF9fKHNlbGYsIHNlbGYuX19Gb3JtU2V0LCBFRklfSUZSX0ZPUk1fU0VUX09QKQ0KDQorICAgICAg ICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0Zvcm1TZXQuSGVhZGVyLCBFRklf SUZSX0ZPUk1fU0VUX09QLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSkN Cg0KKyAgICAgICAgc2VsZi5fX0Zvcm1TZXQuSGVscCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0K DQorICAgICAgICBzZWxmLl9fRm9ybVNldC5Gb3JtU2V0VGl0bGUgPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCg0KKyAgICAgICAgc2VsZi5fX0Zvcm1TZXQuRmxhZ3MgPSAwDQoNCisgICAgICAgIHNl bGYuX19Gb3JtU2V0Lkd1aWQgPSBFRklfR1VJRCgwLCAwLCAwLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp KQ0KDQorICAgICAgICBzZWxmLl9fQ2xhc3NHdWlkID0gW10NCg0KKw0KDQorICAgIGRlZiBTZXRH dWlkKHNlbGYsIEd1aWQpOg0KDQorICAgICAgICBzZWxmLl9fRm9ybVNldC5HdWlkID0gR3VpZA0K DQorDQoNCisgICAgZGVmIEdldEd1aWQoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f Rm9ybVNldC5HdWlkDQoNCisNCg0KKyAgICBkZWYgU2V0Rm9ybVNldFRpdGxlKHNlbGYsIEZvcm1T ZXRUaXRsZSk6DQoNCisgICAgICAgIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZSA9IEZvcm1T ZXRUaXRsZQ0KDQorDQoNCisgICAgZGVmIEdldEZvcm1TZXRUaXRsZShzZWxmKToNCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZQ0KDQorDQoNCisgICAgZGVmIFNl dEhlbHAoc2VsZiwgSGVscCk6DQoNCisgICAgICAgIHNlbGYuX19Gb3JtU2V0LkhlbHAgPSBIZWxw DQoNCisNCg0KKyAgICBkZWYgR2V0SGVscChzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYu X19Gb3JtU2V0LkhlbHANCg0KKw0KDQorICAgIGRlZiBTZXRDbGFzc0d1aWQoc2VsZiwgR3VpZCk6 DQoNCisgICAgICAgIHNlbGYuX19DbGFzc0d1aWQuYXBwZW5kKEd1aWQpDQoNCisgICAgICAgIHNl bGYuX19Gb3JtU2V0LkZsYWdzICs9IDENCg0KKw0KDQorICAgIGRlZiBHZXRDbGFzc0d1aWQoc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fQ2xhc3NHdWlkDQoNCisNCg0KKyAgICBkZWYg R2V0RmxhZ3Moc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fRm9ybVNldC5GbGFncw0K DQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f Rm9ybVNldA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJPbmVPZk9wdGlvbihDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KDQorICAg ICAgICBzZWxmLl9fT25lT2ZPcHRpb24gPSBFRklfSUZSX09ORV9PRl9PUFRJT04oKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX09uZU9mT3B0aW9uLkhlYWRl ciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfT05FX09GX09QVElP Tl9PUCwgU2l6ZSkNCg0KKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzID0gMA0KDQor ICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gRUZJX1NUUklOR19JRF9JTlZBTElE DQoNCisgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVS DQoNCisgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5WYWx1ZSA9IEVGSV9JRlJfVFlQRV9WQUxV RSgpDQoNCisNCg0KKyAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIE9wdGlvbik6DQoNCisgICAgICAg IHNlbGYuX19PbmVPZk9wdGlvbi5PcHRpb24gPSBPcHRpb24NCg0KKw0KDQorICAgIGRlZiBTZXRU eXBlKHNlbGYsIFR5cGUpOg0KDQorICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uVHlwZSA9IFR5 cGUNCg0KKw0KDQorICAgIGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQoNCisgICAgICAgIHNl bGYuX19PbmVPZk9wdGlvbi5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0RmxhZ3Mo c2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MNCg0KKw0K DQorICAgIGRlZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3MpOg0KDQorDQoNCisgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5GbGFncyA9IDANCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19U RVNUX0FORF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQpDQoNCisgICAgICAg IGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklf SUZSX09QVElPTl9ERUZBVUxUDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19U RVNUX0FORF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHKQ0KDQorICAg ICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0g RUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcNCg0KKw0KDQorICAgICAgICBpZiBMRmxhZ3MgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV84KQ0KDQorICAgICAgICAgICAgc2Vs Zi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84DQoNCisNCg0K KyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAg ICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMTYpDQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzE2DQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIo TEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICBzZWxmLl9f T25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyDQoNCisNCg0KKyAg ICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAg ICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVf NjQpDQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzY0DQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9U WVBFX0JPT0xFQU46DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3Ms IEVGSV9JRlJfVFlQRV9CT09MRUFOKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9u LkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9CT09MRUFODQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxh Z3MgPT0gRUZJX0lGUl9UWVBFX1RJTUU6DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9USU1FKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09u ZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9USU1FDQoNCisNCg0KKyAgICAgICAgZWxp ZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBf RkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9EQVRFKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9EQVRFDQoNCisNCg0KKyAgICAg ICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCg0KKyAgICAgICAgICAgIExG bGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX1NUUklORykNCg0KKyAgICAg ICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfU1RSSU5HDQoN CisNCg0KKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KDQorICAg ICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfT1RIRVIp DQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBF X09USEVSDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdT X1VOU1VQUE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAg cmV0dXJuIHNlbGYuX19PbmVPZk9wdGlvbg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJPbmVPZk9w dGlvbjIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBTaXplLCBOdW1zLCBWYWx1ZVR5cGUsIFZhbHVlTGlzdD1bXSk6DQoNCisgICAgICAgIHNl bGYuX19PbmVPZk9wdGlvbiA9IFJlZmluZV9FRklfSUZSX09ORV9PRl9PUFRJT04oTnVtcykNCg0K KyAgICAgICAgSGVhZGVyID0gRUZJX0lGUl9PUF9IRUFERVIoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgSGVhZGVyLCBFRklfSUZSX09ORV9PRl9PUFRJT05fT1AsIFNp emUpDQoNCisgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5IZWFkZXIgPSBIZWFkZXINCg0KKyAg ICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzID0gMA0KDQorICAgICAgICBzZWxmLl9fT25l T2ZPcHRpb24uT3B0aW9uID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVSDQoNCisgICAgICAgIHNlbGYu X19WYWx1ZVR5cGUgPSBWYWx1ZVR5cGUNCg0KKyAgICAgICAgaWYgVmFsdWVMaXN0ICE9IFtdOg0K DQorICAgICAgICAgICAgQXJyYXlUeXBlID0gRUZJX0lGUl9UWVBFX1ZBTFVFICogTnVtcw0KDQor ICAgICAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQoNCisgICAgICAgICAgICBmb3Ig aSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQoNCisgICAgICAgICAgICAgICAgVmFsdWVB cnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9u LlZhbHVlID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIFNldE9wdGlvbihzZWxmLCBPcHRp b24pOg0KDQorICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gT3B0aW9uDQoNCisN Cg0KKyAgICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToNCg0KKyAgICAgICAgc2VsZi5fX09uZU9m T3B0aW9uLlR5cGUgPSBUeXBlDQoNCisNCg0KKyAgICBkZWYgR2V0VmFsdWVUeXBlKHNlbGYpOg0K DQorICAgICAgICByZXR1cm4gc2VsZi5fX1ZhbHVlVHlwZQ0KDQorDQoNCisgICAgZGVmIFNldFZh bHVlKHNlbGYsIFZhbHVlTGlzdCk6DQoNCisgICAgICAgIEFycmF5VHlwZSA9IEVGSV9JRlJfVFlQ RV9WQUxVRSAqIChsZW4oVmFsdWVMaXN0KSkNCg0KKyAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5 VHlwZSgpDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCg0K KyAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAgc2Vs Zi5fX09uZU9mT3B0aW9uLlZhbHVlID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIEdldEZs YWdzKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzDQoN CisNCg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgTEZsYWdzKToNCg0KKw0KDQorICAgICAgICBz ZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgPSAwDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZM QUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX09QVElPTl9ERUZBVUxUKQ0KDQorICAg ICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0g RUZJX0lGUl9PUFRJT05fREVGQVVMVA0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZM QUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRykNCg0K KyAgICAgICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdz IHw9IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHDQoNCisNCg0KKyAgICAgICAgaWYgTEZsYWdz ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZM QUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOCkNCg0KKyAgICAgICAgICAg IHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOA0KDQor DQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0K KyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX05V TV9TSVpFXzE2KQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8xNg0KDQorDQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NM RUFSKExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0KDQorDQoN CisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAg ICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9T SVpFXzY0KQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9J RlJfVFlQRV9OVU1fU0laRV82NA0KDQorDQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9J RlJfVFlQRV9CT09MRUFOOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZs YWdzLCBFRklfSUZSX1RZUEVfQk9PTEVBTikNCg0KKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9w dGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfQk9PTEVBTg0KDQorDQoNCisgICAgICAgIGVsaWYg TEZsYWdzID09IEVGSV9JRlJfVFlQRV9USU1FOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZM QUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfVElNRSkNCg0KKyAgICAgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfVElNRQ0KDQorDQoNCisgICAgICAg IGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9EQVRFOg0KDQorICAgICAgICAgICAgTEZsYWdz ID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfREFURSkNCg0KKyAgICAgICAgICAg IHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfREFURQ0KDQorDQoNCisg ICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9TVFJJTkc6DQoNCisgICAgICAgICAg ICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9TVFJJTkcpDQoNCisg ICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX1NUUklO Rw0KDQorDQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0K KyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX09U SEVSKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJf VFlQRV9PVEhFUg0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9G TEFHU19VTlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAg ICAgIHJldHVybiBzZWxmLl9fT25lT2ZPcHRpb24NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyT3B0 aW9uS2V5KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZiwgUXVlc3Rpb25JZCwgT3B0aW9uVmFsdWUsIEtleVZhbHVlKToNCg0KKw0KDQorICAgICAg ICBzZWxmLl9fT3B0aW9uS2V5ID0gRUZJX0lGUl9HVUlEX09QVElPTktFWSgpDQoNCisgICAgICAg IENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT3B0aW9uS2V5LkhlYWRlciwgRUZJ X0lGUl9HVUlEX09QLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLnNp emVvZihFRklfSUZSX0dVSURfT1BUSU9OS0VZKSkNCg0KKyAgICAgICAgc2VsZi5fX09wdGlvbktl eS5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9PUFRJT05LRVkNCg0KKyAgICAgICAg c2VsZi5fX09wdGlvbktleS5HdWlkID0gRUZJX0lGUl9GUkFNRVdPUktfR1VJRA0KDQorICAgICAg ICBzZWxmLl9fT3B0aW9uS2V5LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHNl bGYuX19PcHRpb25LZXkuT3B0aW9uVmFsdWUgPSBPcHRpb25WYWx1ZQ0KDQorICAgICAgICBzZWxm Ll9fT3B0aW9uS2V5LktleVZhbHVlID0gS2V5VmFsdWUNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09wdGlvbktleQ0KDQorDQoNCisNCg0K K2NsYXNzIENJZnJDbGFzcyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19DbGFzcyA9IEVGSV9JRlJfR1VJ RF9DTEFTUygpICAjIHN0YXRpYyBndWlkDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fQ2xhc3MuSGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRF9DTEFTUykp DQoNCisgICAgICAgIHNlbGYuX19DbGFzcy5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9P UF9DTEFTUw0KDQorICAgICAgICBzZWxmLl9fQ2xhc3MuR3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJ RA0KDQorICAgICAgICBzZWxmLl9fQ2xhc3MuQ2xhc3MgPSBFRklfTk9OX0RFVklDRV9DTEFTUw0K DQorDQoNCisgICAgZGVmIFNldENsYXNzKHNlbGYsIENsYXNzKToNCg0KKyAgICAgICAgc2VsZi5f X0NsYXNzLkNsYXNzID0gQ2xhc3MNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQor ICAgICAgICByZXR1cm4gc2VsZi5fX0NsYXNzDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclN1YkNs YXNzKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgKToNCg0KKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzID0gRUZJX0lGUl9HVUlEX1NVQkNMQVNT KCkgICMgc3RhdGljIGd1aWQNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19TdWJDbGFzcy5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEX1NVQkNMQVNTKSkN Cg0KKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5E X09QX1NVQkNMQVNTDQoNCisgICAgICAgIHNlbGYuX19TdWJDbGFzcy5HdWlkID0gRUZJX0lGUl9U SUFOT19HVUlEDQoNCisgICAgICAgIHNlbGYuX19TdWJDbGFzcy5TdWJDbGFzcyA9IEVGSV9TRVRV UF9BUFBMSUNBVElPTl9TVUJDTEFTUw0KDQorDQoNCisgICAgZGVmIFNldFN1YkNsYXNzKHNlbGYs IFN1YkNsYXNzKToNCg0KKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzLlN1YkNsYXNzID0gU3ViQ2xh c3MNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2Vs Zi5fX1N1YkNsYXNzDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckRlZmF1bHRTdG9yZShDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQoNCisg ICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUgPSBFRklfSUZSX0RFRkFVTFRTVE9SRSgpDQoNCisg ICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGVmYXVsdFN0b3JlLkhl YWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfREVGQVVMVFNU T1JFX09QKQ0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHROYW1lID0gRUZJ X1NUUklOR19JRF9JTlZBTElEDQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUuRGVmYXVs dElkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0 TmFtZShzZWxmLCBEZWZhdWx0TmFtZSk6DQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUu RGVmYXVsdE5hbWUgPSBEZWZhdWx0TmFtZQ0KDQorDQoNCisgICAgZGVmIFNldERlZmF1bHRJZChz ZWxmLCBEZWZhdWx0SWQpOg0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHRJ ZCA9IERlZmF1bHRJZA0KDQorDQoNCisgICAgZGVmIEdldERlZmF1bHRTdG9yZShzZWxmKToNCg0K KyAgICAgICAgcmV0dXJuIHNlbGYuX19EZWZhdWx0U3RvcmUNCg0KKw0KDQorICAgIGRlZiBTZXRE ZWZhdWx0U3RvcmUoc2VsZiwgRGVmYXVsdFN0b3JlOiBFRklfSUZSX0RFRkFVTFRTVE9SRSk6DQoN CisgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUgPSBEZWZhdWx0U3RvcmUNCg0KKw0KDQorICAg IGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHRTdG9y ZQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJWYXJTdG9yZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19W YXJzdG9yZSA9IEVGSV9JRlJfVkFSU1RPUkUoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1ZhcnN0b3JlLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9JRlJfVkFSU1RPUkVfT1ApDQoNCisgICAgICAgIHNlbGYuX19WYXJz dG9yZS5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKyAgICAgICAgc2Vs Zi5fX1ZhcnN0b3JlLlNpemUgPSAwDQoNCisgICAgICAgIHNlbGYuX19WYXJzdG9yZS5OYW1lID0g JycNCg0KKw0KDQorICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KDQorICAgICAgICBzZWxm Ll9fVmFyc3RvcmUuR3VpZCA9IEd1aWQNCg0KKw0KDQorICAgIGRlZiBTZXRTaXplKHNlbGYsIFNp emUpOg0KDQorICAgICAgICBzZWxmLl9fVmFyc3RvcmUuU2l6ZSA9IFNpemUNCg0KKw0KDQorICAg IGRlZiBTZXRWYXJTdG9yZUlkKHNlbGYsIFZhclN0b3JlSWQpOg0KDQorICAgICAgICBzZWxmLl9f VmFyc3RvcmUuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCg0KKw0KDQorICAgIGRlZiBTZXROYW1l KHNlbGYsIE5hbWUpOg0KDQorICAgICAgICBzZWxmLl9fVmFyc3RvcmUuTmFtZSA9IE5hbWUNCg0K Kw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1Zh cnN0b3JlDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclZhclN0b3JlRWZpKENJZnJPYmosIENJZnJP cEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAg c2VsZi5fX1ZhclN0b3JlRWZpID0gRUZJX0lGUl9WQVJTVE9SRV9FRkkoKQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1ZhclN0b3JlRWZpLkhlYWRlciwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfVkFSU1RPUkVfRUZJX09QKQ0K DQorICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuVmFyU3RvcmVJZCA9IEVGSV9WQVJPRkZTRVRf SU5WQUxJRA0KDQorICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuU2l6ZSA9IDANCg0KKyAgICAg ICAgc2VsZi5fX1ZhclN0b3JlRWZpLk5hbWUgPSAnJw0KDQorDQoNCisgICAgZGVmIFNldEd1aWQo c2VsZiwgR3VpZCk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5HdWlkID0gR3VpZA0K DQorDQoNCisgICAgZGVmIFNldFNpemUoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuX19W YXJTdG9yZUVmaS5TaXplID0gU2l6ZQ0KDQorDQoNCisgICAgZGVmIFNldFZhclN0b3JlSWQoc2Vs ZiwgVmFyU3RvcmVJZCk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5WYXJTdG9yZUlk ID0gVmFyU3RvcmVJZA0KDQorDQoNCisgICAgZGVmIFNldE5hbWUoc2VsZiwgTmFtZSk6DQoNCisg ICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5OYW1lID0gTmFtZQ0KDQorDQoNCisgICAgZGVmIFNl dEF0dHJpYnV0ZXMoc2VsZiwgQXR0cmlidXRlcyk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9y ZUVmaS5BdHRyaWJ1dGVzID0gQXR0cmlidXRlcw0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fVmFyU3RvcmVFZmkNCg0KKw0KDQorDQoNCitj bGFzcyBDSWZyVmFyU3RvcmVOYW1lVmFsdWUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1ZhclN0b3JlTmFt ZVZhbHVlID0gRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFKCkNCg0KKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1ZS5IZWFkZXIsDQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFM VUVfT1ApDQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1ZS5WYXJTdG9yZUlkID0g RUZJX1ZBUk9GRlNFVF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0R3VpZChzZWxmLCBHdWlk KToNCg0KKyAgICAgICAgc2VsZi5fX1ZhclN0b3JlTmFtZVZhbHVlLkd1aWQgPSBHdWlkDQoNCisN Cg0KKyAgICBkZWYgU2V0VmFyU3RvcmVJZChzZWxmLCBWYXJTdG9yZUlkKToNCg0KKyAgICAgICAg c2VsZi5fX1ZhclN0b3JlTmFtZVZhbHVlLlZhclN0b3JlSWQgPSBWYXJTdG9yZUlkDQoNCisNCg0K KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19WYXJTdG9y ZU5hbWVWYWx1ZQ0KDQorDQoNCisNCg0KK0VGSV9CSVRTX1BFUl9VSU5UMzIgPSAxIDw8IEVGSV9C SVRTX1NISUZUX1BFUl9VSU5UMzINCg0KK0VGSV9GT1JNX0lEX01BWCA9IDB4RkZGRg0KDQorDQoN CitFRklfRlJFRV9GT1JNX0lEX0JJVE1BUF9TSVpFID0gaW50KChFRklfRk9STV9JRF9NQVggKyAx KSAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckZvcm1JZCgp Og0KDQorDQoNCisgICAgRm9ybUlkQml0TWFwID0gW10NCg0KKyAgICBmb3IgaSBpbiByYW5nZSgw LCBFRklfRlJFRV9GT1JNX0lEX0JJVE1BUF9TSVpFKToNCg0KKyAgICAgICAgRm9ybUlkQml0TWFw LmFwcGVuZCgwKQ0KDQorDQoNCisgICAgQGNsYXNzbWV0aG9kDQoNCisgICAgZGVmIENoZWNrRm9y bUlkRnJlZShjbHMsIEZvcm1JZCk6DQoNCisNCg0KKyAgICAgICAgSW5kZXggPSBpbnQoRm9ybUlk IC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCg0KKyAgICAgICAgT2Zmc2V0ID0gRm9ybUlkICUgRUZJ X0JJVFNfUEVSX1VJTlQzMg0KDQorDQoNCisgICAgICAgIHJldHVybiAoY2xzLkZvcm1JZEJpdE1h cFtJbmRleF0gJiAoMHg4MDAwMDAwMCA+PiBPZmZzZXQpKSA9PSAwDQoNCisNCg0KKyAgICBAY2xh c3NtZXRob2QNCg0KKyAgICBkZWYgTWFya0Zvcm1JZFVzZWQoY2xzLCBGb3JtSWQpOg0KDQorDQoN CisgICAgICAgIEluZGV4ID0gaW50KEZvcm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQoNCisg ICAgICAgIE9mZnNldCA9IEZvcm1JZCAlIEVGSV9CSVRTX1BFUl9VSU5UMzINCg0KKyAgICAgICAg Y2xzLkZvcm1JZEJpdE1hcFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KQ0KDQorDQoN CisNCg0KK2NsYXNzIENJZnJGb3JtKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAg ICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19Gb3JtID0gRUZJX0lGUl9G T1JNKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Gb3Jt LkhlYWRlciwgRUZJX0lGUl9GT1JNX09QKQ0KDQorICAgICAgICBzZWxmLl9fRm9ybS5Gb3JtSWQg PSAwDQoNCisgICAgICAgIHNlbGYuX19Gb3JtLkZvcm1UaXRsZSA9IEVGSV9TVFJJTkdfSURfSU5W QUxJRA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0KDQorICAgICAg ICAjIEZvcm1JZCBjYW4ndCBiZSAwLg0KDQorICAgICAgICBpZiBGb3JtSWQgPT0gMDoNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVINCg0KKyAgICAgICAgaWYgQ0lmckZvcm1JZC5DaGVja0Zvcm1JZEZyZWUoRm9ybUlkKSA9PSBG YWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRk9S TUlEX1JFREVGSU5FRA0KDQorICAgICAgICBzZWxmLl9fRm9ybS5Gb3JtSWQgPSBGb3JtSWQNCg0K KyAgICAgICAgQ0lmckZvcm1JZC5NYXJrRm9ybUlkVXNlZChGb3JtSWQpDQoNCisgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIFNl dEZvcm1UaXRsZShzZWxmLCBGb3JtVGl0bGUpOg0KDQorICAgICAgICBzZWxmLl9fRm9ybS5Gb3Jt VGl0bGUgPSBGb3JtVGl0bGUNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX0Zvcm0NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRm9ybU1hcChD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0K DQorICAgICAgICBzZWxmLl9fRm9ybU1hcCA9IEVGSV9JRlJfRk9STV9NQVAoKQ0KDQorICAgICAg ICBzZWxmLl9fTWV0aG9kTWFwTGlzdCA9IFtdICAjIEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Gb3JtTWFwLkhl YWRlciwgRUZJX0lGUl9GT1JNX01BUF9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0Zvcm1NYXAuRm9y bUlkID0gMA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0KDQorICAg ICAgICBpZiBGb3JtSWQgPT0gMDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCg0KKw0KDQorICAgICAgICBpZiBDSWZyRm9y bUlkLkNoZWNrRm9ybUlkRnJlZShGb3JtSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEDQoNCisgICAgICAg IHNlbGYuX19Gb3JtTWFwLkZvcm1JZCA9IEZvcm1JZA0KDQorICAgICAgICBDSWZyRm9ybUlkLk1h cmtGb3JtSWRVc2VkKEZvcm1JZCkNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgU2V0Rm9ybU1hcE1ldGhvZChzZWxmLCBN ZXRob2RUaXRsZSwgTWV0aG9kR3VpZDogRUZJX0dVSUQpOg0KDQorICAgICAgICBNZXRob2RNYXAg PSBFRklfSUZSX0ZPUk1fTUFQX01FVEhPRCgpDQoNCisgICAgICAgIE1ldGhvZE1hcC5NZXRob2RU aXRsZSA9IE1ldGhvZFRpdGxlDQoNCisgICAgICAgIE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVy ID0gTWV0aG9kR3VpZA0KDQorICAgICAgICBzZWxmLl9fTWV0aG9kTWFwTGlzdC5hcHBlbmQoTWV0 aG9kTWFwKQ0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fRm9ybU1hcCwgc2VsZi5fX01ldGhvZE1hcExpc3QNCg0KKw0KDQorDQoNCitjbGFz cyBDSWZyRW5kKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0 X18oc2VsZiwgKToNCg0KKyAgICAgICAgc2VsZi5fX0VuZCA9IEVGSV9JRlJfRU5EKCkNCg0KKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19FbmQuSGVhZGVyLCBFRklf SUZSX0VORF9PUCkNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQmFubmVyKENJZnJPYmosIENJZnJP cEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAg c2VsZi5fX0Jhbm5lciA9IEVGSV9JRlJfR1VJRF9CQU5ORVIoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0Jhbm5lci5IZWFkZXIsIEVGSV9JRlJfR1VJRF9P UCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9HVUlEX0JBTk5FUikpDQoNCisgICAgICAgIHNlbGYuX19CYW5uZXIuRXh0ZW5kT3BDb2RlID0g RUZJX0lGUl9FWFRFTkRfT1BfQkFOTkVSDQoNCisgICAgICAgIHNlbGYuX19CYW5uZXIuR3VpZCA9 IEVGSV9JRlJfVElBTk9fR1VJRA0KDQorDQoNCisgICAgZGVmIFNldFRpdGxlKHNlbGYsIFN0cmlu Z0lkKToNCg0KKyAgICAgICAgc2VsZi5fX0Jhbm5lci5UaXRsZSA9IFN0cmluZ0lkDQoNCisNCg0K KyAgICBkZWYgU2V0TGluZShzZWxmLCBMaW5lKToNCg0KKyAgICAgICAgc2VsZi5fX0Jhbm5lci5M aW5lTnVtYmVyID0gTGluZQ0KDQorDQoNCisgICAgZGVmIFNldEFsaWduKHNlbGYsIEFsaWduKToN Cg0KKyAgICAgICAgc2VsZi5fX0Jhbm5lci5BbGlnbm1lbnQgPSBBbGlnbg0KDQorDQoNCisgICAg ZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fQmFubmVyDQoNCisN Cg0KKw0KDQorY2xhc3MgQ0lmclRpbWVvdXQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUaW1lb3V0PTApOg0KDQorICAgICAgICBzZWxmLl9f VGltZW91dCA9IEVGSV9JRlJfR1VJRF9USU1FT1VUKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19UaW1lb3V0LkhlYWRlciwgRUZJX0lGUl9HVUlEX09QLA0K DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dV SURfVElNRU9VVCkpDQoNCisgICAgICAgIHNlbGYuX19UaW1lb3V0LkV4dGVuZE9wQ29kZSA9IEVG SV9JRlJfRVhURU5EX09QX1RJTUVPVVQNCg0KKyAgICAgICAgc2VsZi5fX1RpbWVvdXQuR3VpZCA9 IEVGSV9JRlJfVElBTk9fR1VJRA0KDQorICAgICAgICBzZWxmLl9fVGltZW91dC5UaW1lT3V0ID0g VGltZW91dA0KDQorDQoNCisgICAgZGVmIFNldFRpbWVvdXQoc2VsZiwgVGltZW91dCk6DQoNCisg ICAgICAgIHNlbGYuX19UaW1lb3V0LlRpbWVPdXQgPSBUaW1lb3V0DQoNCisNCg0KKyAgICBkZWYg R2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19UaW1lb3V0DQoNCisNCg0K Kw0KDQorY2xhc3MgQ0lmckxhYmVsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAg ICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAgc2VsZi5fX0xhYmVsID0gRUZJX0lG Ul9HVUlEX0xBQkVMKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19MYWJlbC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEX0xBQkVMKSkNCg0KKyAgICAg ICAgc2VsZi5fX0xhYmVsLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX0xBQkVMDQoN CisgICAgICAgIHNlbGYuX19MYWJlbC5HdWlkID0gRUZJX0lGUl9USUFOT19HVUlEDQoNCisNCg0K KyAgICBkZWYgU2V0TnVtYmVyKHNlbGYsIE51bWJlcik6DQoNCisgICAgICAgIHNlbGYuX19MYWJl bC5OdW1iZXIgPSBOdW1iZXINCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX0xhYmVsDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJ1bGUoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0K DQorICAgICAgICBzZWxmLl9fUnVsZSA9IEVGSV9JRlJfUlVMRSgpDQoNCisgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUnVsZS5IZWFkZXIsIEVGSV9JRlJfUlVMRV9P UCkNCg0KKyAgICAgICAgc2VsZi5fX1J1bGUuUnVsZUlkID0gRUZJX1JVTEVfSURfSU5WQUxJRA0K DQorDQoNCisgICAgZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KDQorICAgICAgICBzZWxm Ll9fUnVsZS5SdWxlSWQgPSBSdWxlSWQNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K DQorICAgICAgICByZXR1cm4gc2VsZi5fX1J1bGUNCg0KKw0KDQorDQoNCitkZWYgX0ZMQUdfVEVT VF9BTkRfQ0xFQVIoRmxhZ3MsIE1hc2spOg0KDQorDQoNCisgICAgUmV0ID0gRmxhZ3MgJiBNYXNr DQoNCisgICAgRmxhZ3MgJj0gKH5NYXNrKQ0KDQorICAgIHJldHVybiBGbGFncywgUmV0DQoNCisN Cg0KKw0KDQorZGVmIF9GTEFHX0NMRUFSKEZsYWdzLCBNYXNrKToNCg0KKw0KDQorICAgIEZsYWdz ICY9ICh+TWFzaykNCg0KKyAgICByZXR1cm4gRmxhZ3MNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZy U3VidGl0bGUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyU3RhdGVtZW50SGVhZGVyKToNCg0K Kw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fU3VidGl0 bGUgPSBFRklfSUZSX1NVQlRJVExFKCkNCg0KKw0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1N1YnRpdGxlLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9JRlJfU1VCVElUTEVfT1ApDQoNCisgICAgICAgIENJZnJTdGF0ZW1l bnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YnRpdGxlLlN0YXRlbWVudCkNCg0KKw0K DQorICAgICAgICBzZWxmLl9fU3VidGl0bGUuRmxhZ3MgPSAwDQoNCisNCg0KKyAgICBkZWYgU2V0 RmxhZ3Moc2VsZiwgRmxhZ3MpOg0KDQorICAgICAgICBGbGFncywgUmVzdWx0ID0gX0ZMQUdfVEVT VF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR1NfSE9SSVpPTlRBTCkNCg0KKyAgICAgICAg aWYgUmVzdWx0Og0KDQorICAgICAgICAgICAgc2VsZi5fX1N1YnRpdGxlLkZsYWdzIHw9IEVGSV9J RlJfRkxBR1NfSE9SSVpPTlRBTA0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUyBpZiBGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToN Cg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19TdWJ0aXRsZQ0KDQorDQoNCisNCg0KK2NsYXNzIENJ ZnJJbWFnZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9f KHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19JbWFnZSA9IEVGSV9JRlJfSU1BR0UoKQ0KDQor ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0ltYWdlLkhlYWRlciwg RUZJX0lGUl9JTUFHRV9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0ltYWdlLklkID0gRUZJX0lNQUdF X0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBTZXRJbWFnZUlkKHNlbGYsIEltYWdlSWQpOg0K DQorICAgICAgICBzZWxmLl9fSW1hZ2UuSWQgPSBJbWFnZUlkDQoNCisNCg0KKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19JbWFnZQ0KDQorDQoNCisNCg0K K2NsYXNzIENJZnJMb2NrZWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRl ZiBfX2luaXRfXyhzZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fTG9jayA9IEVGSV9JRlJfTE9D S0VEKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Mb2Nr LkhlYWRlciwgRUZJX0lGUl9MT0NLRURfT1ApDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck1vZGFs KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwg KToNCg0KKyAgICAgICAgc2VsZi5fX01vZGFsID0gRUZJX0lGUl9NT0RBTF9UQUcoKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01vZGFsLkhlYWRlciwgRUZJ X0lGUl9NT0RBTF9UQUdfT1ApDQoNCisNCg0KKw0KDQorRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RF RkFVTFQgPSAwDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclF1ZXN0aW9uSGVhZGVyKENJZnJTdGF0 ZW1lbnRIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHFIZWFkZXIsIEZs YWdzPUVGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxUKToNCg0KKw0KDQorICAgICAgICBzZWxm Ll9fcUhlYWRlciA9IHFIZWFkZXINCg0KKyAgICAgICAgQ0lmclN0YXRlbWVudEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fcUhlYWRlci5IZWFkZXIpDQoNCisgICAgICAgIHNlbGYuX19xSGVh ZGVyLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxm Ll9fcUhlYWRlci5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKyAgICAg ICAgc2VsZi5fX3FIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCg0KKyAgICAgICAgc2VsZi5fX3FIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck9mZnNldCA9 IEVGSV9WQVJPRkZTRVRfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLl9fcUhlYWRlci5GbGFncyA9 IEZsYWdzDQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rpb25JZChzZWxmKToNCg0KKyAgICAgICAg cmV0dXJuIHNlbGYuX19xSGVhZGVyLlF1ZXN0aW9uSWQNCg0KKw0KDQorICAgIGRlZiBTZXRRdWVz dGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KDQorDQoNCisgICAgICAgIHNlbGYuX19xSGVhZGVy LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisNCg0KKyAgICBkZWYgR2V0VmFyU3RvcmVJZChz ZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSWQNCg0KKw0K DQorICAgIGRlZiBTZXRWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm8pOg0KDQorDQoNCisgICAg ICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQoNCisg ICAgICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mby5WYXJOYW1lID0gQmFzZUluZm8uSW5m by5WYXJOYW1lDQoNCisgICAgICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mby5WYXJPZmZz ZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KDQorDQoNCisgICAgZGVmIEdldFZhclN0b3Jl SW5mbyhzZWxmLCBJbmZvKTogICMgQnVnDQoNCisNCg0KKyAgICAgICAgSW5mby5WYXJTdG9yZUlk ID0gc2VsZi5fX3FIZWFkZXIuVmFyU3RvcmVJZA0KDQorICAgICAgICBJbmZvLlZhclN0b3JlSW5m byA9IHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mbw0KDQorICAgICAgICByZXR1cm4gSW5mbw0K DQorDQoNCisgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5f X3FIZWFkZXIuRmxhZ3MNCg0KKw0KDQorICAgIGRlZiBTZXRGbGFncyhzZWxmLCBGbGFncyk6DQoN CisNCg0KKyAgICAgICAgRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLCBF RklfSUZSX0ZMQUdfUkVBRF9PTkxZKQ0KDQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAg ICBzZWxmLl9fcUhlYWRlci5GbGFncyB8PSBFRklfSUZSX0ZMQUdfUkVBRF9PTkxZDQoNCisNCg0K KyAgICAgICAgRmxhZ3MgPSBfRkxBR19DTEVBUihGbGFncywgMHgwMikNCg0KKw0KDQorICAgICAg ICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19D QUxMQkFDSykNCg0KKyAgICAgICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX3FIZWFk ZXIuRmxhZ3MgfD0gRUZJX0lGUl9GTEFHX0NBTExCQUNLDQoNCisNCg0KKyAgICAgICAgIyBpZ25v cmUgTlZBY2Nlc3NGbGFnDQoNCisgICAgICAgIEZsYWdzID0gX0ZMQUdfQ0xFQVIoRmxhZ3MsIDB4 MDgpDQoNCisNCg0KKyAgICAgICAgRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZs YWdzLCBFRklfSUZSX0ZMQUdfUkVTRVRfUkVRVUlSRUQpDQoNCisgICAgICAgIGlmIFJldDoNCg0K KyAgICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRVNFVF9S RVFVSVJFRA0KDQorDQoNCisgICAgICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVB UihGbGFncywNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9JRlJfRkxBR19SRUNPTk5FQ1RfUkVRVUlSRUQpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAg ICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRUNPTk5FQ1Rf UkVRVUlSRUQNCg0KKw0KDQorICAgICAgICAjIFNldCBMYXRlQ2hlY2sgRmxhZyB0byBjb21wYXRp YmxlIGZvciBmcmFtZXdvcmsgZmxhZw0KDQorICAgICAgICAjIGJ1dCBpdCB1c2VzIDB4MjAgYXMg aXRzIGZsYWcsIGlmIGluIHRoZSBmdXR1cmUgVUVGSSBtYXkgdGFrZSB0aGlzIGZsYWcNCg0KKw0K DQorICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIDB4MjAp DQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdz IHw9IDB4MjANCg0KKw0KDQorICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xF QVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19PUFRJT05TX09OTFkpDQoNCisgICAgICAgIGlmIFJldDoN Cg0KKyAgICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19PUFRJ T05TX09OTFkNCg0KKw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MgaWYgRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFH U19VTlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIFVwZGF0ZUNJZnJRdWVzdGlvbkhlYWRlcihz ZWxmLCBxSGVhZGVyKToNCg0KKyAgICAgICAgc2VsZi5fX3FIZWFkZXIgPSBxSGVhZGVyDQoNCisN Cg0KKw0KDQorY2xhc3MgQ0lmclJlZihDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlv bkhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAg c2VsZi5fX1JlZiA9IEVGSV9JRlJfUkVGKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19SZWYuSGVhZGVyLCBFRklfSUZSX1JFRl9PUCkNCg0KKyAgICAgICAg Q0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWYuUXVlc3Rpb24pDQoN CisgICAgICAgIHNlbGYuX19SZWYuRm9ybUlkID0gMA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1J ZChzZWxmLCBGb3JtSWQpOg0KDQorICAgICAgICBzZWxmLl9fUmVmLkZvcm1JZCA9IEZvcm1JZA0K DQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f UmVmDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlZjIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBD SWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQoN CisgICAgICAgIHNlbGYuX19SZWYyID0gRUZJX0lGUl9SRUYyKCkNCg0KKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWYyLkhlYWRlciwgRUZJX0lGUl9SRUZfT1Ap DQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVm Mi5RdWVzdGlvbikNCg0KKyAgICAgICAgc2VsZi5fX1JlZjIuRm9ybUlkID0gMA0KDQorICAgICAg ICBzZWxmLl9fUmVmMi5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCg0KKw0K DQorICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCg0KKyAgICAgICAgc2VsZi5fX1Jl ZjIuRm9ybUlkID0gRm9ybUlkDQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBR dWVzdGlvbklkKToNCg0KKw0KDQorICAgICAgICBzZWxmLl9fUmVmMi5RdWVzdGlvbklkID0gUXVl c3Rpb25JZA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fUmVmMg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJSZWYzKENJZnJPYmosIENJZnJP cEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhz ZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fUmVmMyA9IEVGSV9JRlJfUkVGMygpDQoNCisgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmMy5IZWFkZXIsIEVGSV9J RlJfUkVGX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX1JlZjMuUXVlc3Rpb24pDQoNCisgICAgICAgIHNlbGYuX19SZWYzLkZvcm1JZCA9IDAN Cg0KKyAgICAgICAgc2VsZi5fX1JlZjMuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZB TElEDQoNCisgICAgICAgIEVGSV9JRlJfREVGQVVMVF9HVUlEID0gRUZJX0dVSUQoMCwgMCwgMCwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdWlkQXJyYXkoMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCkpDQoNCisgICAgICAgIHNlbGYuX19SZWYzLkZvcm1TZXRJZCA9 IEVGSV9JRlJfREVGQVVMVF9HVUlEDQoNCisNCg0KKyAgICBkZWYgU2V0Rm9ybUlkKHNlbGYsIEZv cm1JZCk6DQoNCisgICAgICAgIHNlbGYuX19SZWYzLkZvcm1JZCA9IEZvcm1JZA0KDQorDQoNCisg ICAgZGVmIFNldFF1ZXN0aW9uSWQoc2VsZiwgUXVlc3Rpb25JZCk6DQoNCisNCg0KKyAgICAgICAg c2VsZi5fX1JlZjMuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKw0KDQorICAgIGRlZiBTZXRG b3JtU2V0SWQoc2VsZiwgRm9ybVNldElkKToNCg0KKyAgICAgICAgc2VsZi5fX1JlZjMuRm9ybVNl dElkID0gRm9ybVNldElkDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYuX19SZWYzDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlZjQoQ0lmck9i aiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9f aW5pdF9fKHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19SZWY0ID0gRUZJX0lGUl9SRUY0KCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWY0LkhlYWRl ciwgRUZJX0lGUl9SRUZfT1ApDQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fUmVmNC5RdWVzdGlvbikNCg0KKyAgICAgICAgc2VsZi5fX1JlZjQuRm9y bUlkID0gMA0KDQorICAgICAgICBzZWxmLl9fUmVmNC5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9O X0lEX0lOVkFMSUQNCg0KKyAgICAgICAgRUZJX0lGUl9ERUZBVUxUX0dVSUQgPSBFRklfR1VJRCgw LCAwLCAwLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRB cnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSkNCg0KKyAgICAgICAgc2VsZi5fX1JlZjQuRm9y bVNldElkID0gRUZJX0lGUl9ERUZBVUxUX0dVSUQNCg0KKyAgICAgICAgc2VsZi5fX1JlZjQuRGV2 aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1J ZChzZWxmLCBGb3JtSWQpOg0KDQorICAgICAgICBzZWxmLl9fUmVmNC5Gb3JtSWQgPSBGb3JtSWQN Cg0KKw0KDQorICAgIGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KDQorDQoN CisgICAgICAgIHNlbGYuX19SZWY0LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisNCg0KKyAg ICBkZWYgU2V0Rm9ybVNldElkKHNlbGYsIEZvcm1TZXRJZCk6DQoNCisgICAgICAgIHNlbGYuX19S ZWY0LkZvcm1TZXRJZCA9IEZvcm1TZXRJZA0KDQorDQoNCisgICAgZGVmIFNldERldmljZVBhdGgo c2VsZiwgRGV2aWNlUGF0aCk6DQoNCisgICAgICAgIHNlbGYuX19SZWY0LkRldmljZVBhdGggPSBE ZXZpY2VQYXRoDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19SZWY0DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlZjUoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9f KHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19SZWY1ID0gRUZJX0lGUl9SRUY1KCkNCg0KKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWY1LkhlYWRlciwgRUZJ X0lGUl9SRUZfT1ApDQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fUmVmNS5RdWVzdGlvbikNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K DQorICAgICAgICByZXR1cm4gc2VsZi5fX1JlZjUNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQWN0 aW9uKENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCg0KKw0KDQor ICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fQWN0aW9uID0gRUZJ X0lGUl9BQ1RJT04oKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX0FjdGlvbi5IZWFkZXIsIEVGSV9JRlJfQUNUSU9OX09QKQ0KDQorICAgICAgICBDSWZyUXVl c3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0FjdGlvbi5RdWVzdGlvbikNCg0KKyAg ICAgICAgc2VsZi5fX0FjdGlvbi5RdWVzdGlvbkNvbmZpZyA9IEVGSV9TVFJJTkdfSURfSU5WQUxJ RA0KDQorDQoNCisgICAgZGVmIFNldFF1ZXN0aW9uQ29uZmlnKHNlbGYsIFF1ZXN0aW9uQ29uZmln KToNCg0KKyAgICAgICAgc2VsZi5fX0FjdGlvbi5RdWVzdGlvbkNvbmZpZyA9IFF1ZXN0aW9uQ29u ZmlnDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYuX19BY3Rpb24NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVGV4dChDSWZyT2JqLCBDSWZyT3BI ZWFkZXIsIENJZnJTdGF0ZW1lbnRIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNl bGYsICk6DQoNCisgICAgICAgIHNlbGYuX19UZXh0ID0gRUZJX0lGUl9URVhUKCkNCg0KKyAgICAg ICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19UZXh0LkhlYWRlciwgRUZJX0lG Ul9URVhUX09QKQ0KDQorICAgICAgICBDSWZyU3RhdGVtZW50SGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19UZXh0LlN0YXRlbWVudCkNCg0KKyAgICAgICAgc2VsZi5fX1RleHQuVGV4dFR3byA9 IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIFNldFRleHRUd28oc2VsZiwg U3RyaW5nSWQpOg0KDQorICAgICAgICBzZWxmLl9fVGV4dC5UZXh0VHdvID0gU3RyaW5nSWQNCg0K Kw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1Rl eHQNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyR3VpZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0K DQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUsIERhdGFidWZmPU5vbmUpOg0KDQor ICAgICAgICBzZWxmLl9fR3VpZCA9IEVGSV9JRlJfR1VJRCgpDQoNCisgICAgICAgIHNlbGYuX19E YXRhID0gRGF0YWJ1ZmYNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19HdWlkLkhlYWRlciwgRUZJX0lGUl9HVUlEX09QLA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dVSUQpICsgU2l6ZSkNCg0KKyAgICAg ICAgRUZJX0lGUl9ERUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAwLCAwLA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAw LCAwLCAwKSkNCg0KKyAgICAgICAgc2VsZi5fX0d1aWQuR3VpZCA9IEVGSV9JRlJfREVGQVVMVF9H VUlEDQoNCisNCg0KKyAgICBkZWYgU2V0R3VpZChzZWxmLCBHdWlkKToNCg0KKyAgICAgICAgc2Vs Zi5fX0d1aWQuR3VpZCA9IEd1aWQNCg0KKw0KDQorICAgIGRlZiBTZXREYXRhKHNlbGYsIERhdGFi dWZmKToNCg0KKyAgICAgICAgc2VsZi5fX0RhdGEgPSBEYXRhYnVmZg0KDQorDQoNCisgICAgZGVm IEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fR3VpZA0KDQorDQoNCisN Cg0KK2NsYXNzIENJZnJPcmRlcmVkTGlzdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVz dGlvbkhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAg IHNlbGYuX19PcmRlcmVkTGlzdCA9IEVGSV9JRlJfT1JERVJFRF9MSVNUKCkNCg0KKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PcmRlcmVkTGlzdC5IZWFkZXIsDQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX09SREVSRURfTElTVF9PUCkN Cg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PcmRl cmVkTGlzdC5RdWVzdGlvbikNCg0KKyAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0Lk1heENvbnRh aW5lcnMgPSAwDQoNCisgICAgICAgIHNlbGYuX19PcmRlcmVkTGlzdC5GbGFncyA9IDANCg0KKw0K DQorICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYNCg0K Kw0KDQorICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KDQorICAgICAgICBD SWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQoNCisNCg0KKyAgICBkZWYg U2V0TWF4Q29udGFpbmVycyhzZWxmLCBNYXhDb250YWluZXJzKToNCg0KKyAgICAgICAgc2VsZi5f X09yZGVyZWRMaXN0Lk1heENvbnRhaW5lcnMgPSBNYXhDb250YWluZXJzDQoNCisNCg0KKyAgICBk ZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KDQorDQoNCisgICAgICAgIFJldHVy bkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KDQorICAg ICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0K DQorICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQg PSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVU5JUVVFX1NFVCkNCg0KKyAg ICAgICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0LkZsYWdzIHw9 IEVGSV9JRlJfVU5JUVVFX1NFVA0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdf VEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX05PX0VNUFRZX1NFVCkNCg0KKyAgICAgICAg aWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0LkZsYWdzIHw9IEVGSV9J RlJfTk9fRU1QVFlfU0VUDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0K KyAgICAgICAgcmV0dXJuIHNlbGYuX19PcmRlcmVkTGlzdA0KDQorDQoNCisNCg0KK2NsYXNzIENJ ZnJTdHJpbmcoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fU3RyID0gRUZJ X0lGUl9TVFJJTkcoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1N0ci5IZWFkZXIsIEVGSV9JRlJfU1RSSU5HX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rp b25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0ci5RdWVzdGlvbikNCg0KKyAgICAgICAg c2VsZi5fX1N0ci5GbGFncyA9IDANCg0KKyAgICAgICAgc2VsZi5fX1N0ci5NaW5TaXplID0gMA0K DQorICAgICAgICBzZWxmLl9fU3RyLk1heFNpemUgPSAwDQoNCisNCg0KKyAgICBkZWYgR2V0UXVl c3Rpb24oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgU2V0 UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVy LlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KDQorDQoNCisgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhG bGFncywgTEZsYWdzKToNCg0KKw0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9u SGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAh PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVy biBSZXR1cm5Db2RlDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FO RF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfU1RSSU5HX01VTFRJX0xJTkUpDQoNCisgICAgICAgIGlm IFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19TdHIuRmxhZ3MgfD0gRUZJX0lGUl9TVFJJTkdf TVVMVElfTElORQ0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9G TEFHU19VTlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIFNldE1pblNpemUoc2VsZiwgTWluU2l6 ZSk6DQoNCisgICAgICAgIHNlbGYuX19TdHIuTWluU2l6ZSA9IE1pblNpemUNCg0KKw0KDQorICAg IGRlZiBTZXRNYXhTaXplKHNlbGYsIE1heFNpemUpOg0KDQorICAgICAgICBzZWxmLl9fU3RyLk1h eFNpemUgPSBNYXhTaXplDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYuX19TdHINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUGFzc3dvcmQoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fUGFzc3dvcmQgPSBFRklfSUZSX1BB U1NXT1JEKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Q YXNzd29yZC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X1BBU1NXT1JEX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX1Bhc3N3b3JkLlF1ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fUGFzc3dvcmQu TWluU2l6ZSA9IDANCg0KKyAgICAgICAgc2VsZi5fX1Bhc3N3b3JkLk1heFNpemUgPSAwDQoNCisN Cg0KKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoN CisNCg0KKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCg0KKyAgICAgICAg Q0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KDQorDQoNCisgICAgZGVm IFNldE1pblNpemUoc2VsZiwgTWluU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuX19QYXNzd29yZC5N aW5TaXplID0gTWluU2l6ZQ0KDQorDQoNCisgICAgZGVmIFNldE1heFNpemUoc2VsZiwgTWF4U2l6 ZSk6DQoNCisgICAgICAgIHNlbGYuX19QYXNzd29yZC5NYXhTaXplID0gTWF4U2l6ZQ0KDQorDQoN CisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUGFzc3dv cmQNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRGVmYXVsdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIFNp emUsDQoNCisgICAgICAgICAgICAgICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFVTFRfQ0xBU1Nf U1RBTkRBUkQsDQoNCisgICAgICAgICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0K DQorICAgICAgICAgICAgICAgICBWYWx1ZT1FRklfSUZSX1RZUEVfVkFMVUUoKSk6DQoNCisgICAg ICAgIHNlbGYuX19EZWZhdWx0ID0gRUZJX0lGUl9ERUZBVUxUKCkNCg0KKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19EZWZhdWx0LkhlYWRlciwgRUZJX0lGUl9ERUZB VUxUX09QLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSkNCg0KKyAgICAg ICAgc2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQu RGVmYXVsdElkID0gRGVmYXVsdElkDQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0LlZhbHVlID0g VmFsdWUNCg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0SWQoc2VsZiwgRGVmYXVsdElkKToNCg0K KyAgICAgICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQoNCisNCg0KKyAg ICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVHlw ZSA9IFR5cGUNCg0KKw0KDQorICAgIGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQoNCisgICAg ICAgIHNlbGYuX19EZWZhdWx0LlZhbHVlID0gVmFsdWUNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHQNCg0KKw0KDQorDQoNCitj bGFzcyBDSWZyRGVmYXVsdDMoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRl ZiBfX2luaXRfXyhzZWxmLA0KDQorICAgICAgICAgICAgICAgICBTaXplLA0KDQorICAgICAgICAg ICAgICAgICBOdW1zLA0KDQorICAgICAgICAgICAgICAgICBWYWx1ZVR5cGUsDQoNCisgICAgICAg ICAgICAgICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsDQoNCisg ICAgICAgICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KDQorICAgICAgICAgICAg ICAgICBWYWx1ZUxpc3Q9W10pOg0KDQorICAgICAgICBIZWFkZXIgPSBFRklfSUZSX09QX0hFQURF UigpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBIZWFkZXIsIEVGSV9J RlJfREVGQVVMVF9PUCwgU2l6ZSkNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQgPSBSZWZpbmVf RUZJX0lGUl9ERUZBVUxUKE51bXMpDQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0LkhlYWRlciA9 IEhlYWRlcg0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdC5UeXBlID0gVHlwZQ0KDQorICAgICAg ICBzZWxmLl9fRGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCg0KKyAgICAgICAgc2VsZi5f X1ZhbHVlVHlwZSA9IFZhbHVlVHlwZQ0KDQorDQoNCisgICAgICAgIGlmIFZhbHVlTGlzdCAhPSBb XToNCg0KKyAgICAgICAgICAgIEFycmF5VHlwZSA9IEVGSV9JRlJfVFlQRV9WQUxVRSAqIE51bXMN Cg0KKyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KDQorICAgICAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KDQorICAgICAgICAgICAgICAgIFZh bHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAgICAgIHNlbGYuX19EZWZhdWx0 LlZhbHVlID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIFNldERlZmF1bHRJZChzZWxmLCBE ZWZhdWx0SWQpOg0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0 SWQNCg0KKw0KDQorICAgIGRlZiBHZXRWYWx1ZVR5cGUoc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fVmFsdWVUeXBlDQoNCisNCg0KKyAgICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToN Cg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCg0KKw0KDQorICAgIGRlZiBT ZXRWYWx1ZShzZWxmLCBWYWx1ZUxpc3QpOg0KDQorICAgICAgICBBcnJheVR5cGUgPSBFRklfSUZS X1RZUEVfVkFMVUUgKiAobGVuKFZhbHVlTGlzdCkpDQoNCisgICAgICAgIFZhbHVlQXJyYXkgPSBB cnJheVR5cGUoKQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6 DQoNCisgICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQoNCisgICAgICAg IHNlbGYuX19EZWZhdWx0LlZhbHVlID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIEdldElu Zm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fRGVmYXVsdA0KDQorDQoNCisNCg0K K2NsYXNzIENJZnJEZWZhdWx0MihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAg ZGVmIF9faW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIERlZmF1bHRJZD1FRklfSElJ X0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsDQoNCisgICAgICAgICAgICAgICAgIFR5cGU9RUZJX0lG Ul9UWVBFX09USEVSKToNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQgPSBFRklfSUZSX0RFRkFV TFRfMigpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGVm YXVsdC5IZWFkZXIsIEVGSV9JRlJfREVGQVVMVF9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1 bHQuVHlwZSA9IFR5cGUNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVsdElkID0gRGVm YXVsdElkDQoNCisNCg0KKyAgICBkZWYgU2V0RGVmYXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQoN CisgICAgICAgIHNlbGYuX19EZWZhdWx0LkRlZmF1bHRJZCA9IERlZmF1bHRJZA0KDQorDQoNCisg ICAgZGVmIFNldFR5cGUoc2VsZiwgVHlwZSk6DQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0LlR5 cGUgPSBUeXBlDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19EZWZhdWx0DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckluY29uc2lzdGVudElm KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6 DQoNCisgICAgICAgIHNlbGYuX19JbmNvbnNpc3RlbnRJZiA9IEVGSV9JRlJfSU5DT05TSVNURU5U X0lGKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19JbmNv bnNpc3RlbnRJZi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf SUZSX0lOQ09OU0lTVEVOVF9JRl9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0luY29uc2lzdGVudElm LkVycm9yID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0RXJyb3Io c2VsZiwgRXJyb3IpOg0KDQorICAgICAgICBzZWxmLl9fSW5jb25zaXN0ZW50SWYuRXJyb3IgPSBF cnJvcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJOb1N1Ym1pdElmKENJZnJPYmosIENJZnJPcEhl YWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYu X19Ob1N1Ym1pdElmID0gRUZJX0lGUl9OT19TVUJNSVRfSUYoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX05vU3VibWl0SWYuSGVhZGVyLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9OT19TVUJNSVRfSUZfT1ApDQoNCisgICAg ICAgIHNlbGYuX19Ob1N1Ym1pdElmLkVycm9yID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisN Cg0KKyAgICBkZWYgU2V0RXJyb3Ioc2VsZiwgRXJyb3IpOg0KDQorICAgICAgICBzZWxmLl9fTm9T dWJtaXRJZi5FcnJvciA9IEVycm9yDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckRpc2FibGVJZihD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0K DQorICAgICAgICBzZWxmLl9fRGlzYWJsZUlmID0gRUZJX0lGUl9ESVNBQkxFX0lGKCkNCg0KKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19EaXNhYmxlSWYuSGVhZGVy LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9ESVNBQkxFX0lGX09Q KQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTdXBwcmVzc0lmKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19T dXBwcmVzc0lmID0gRUZJX0lGUl9TVVBQUkVTU19JRigpDQoNCisgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fU3VwcHJlc3NJZi5IZWFkZXIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KDQorDQoNCisNCg0K K2NsYXNzIENJZnJHcmF5T3V0SWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX0dyYXlPdXRJZiA9IEVGSV9J RlJfR1JBWV9PVVRfSUYoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX0dyYXlPdXRJZi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfSUZSX0dSQVlfT1VUX0lGX09QKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJWYWx1ZShD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0K DQorICAgICAgICBzZWxmLl9fVmFsdWUgPSBFRklfSUZSX1ZBTFVFKCkNCg0KKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19WYWx1ZS5IZWFkZXIsIEVGSV9JRlJfVkFM VUVfT1ApDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlYWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVy KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1Jl YWQgPSBFRklfSUZSX1JFQUQoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX1JlYWQuSGVhZGVyLCBFRklfSUZSX1JFQURfT1ApDQoNCisNCg0KKw0KDQorY2xh c3MgQ0lmcldyaXRlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19p bml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19Xcml0ZSA9IEVGSV9JRlJfV1JJVEUoKQ0K DQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1dyaXRlLkhlYWRl ciwgRUZJX0lGUl9XUklURV9PUCkNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyV2FybmluZ0lmKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoN CisgICAgICAgIHNlbGYuX19XYXJuaW5nSWYgPSBFRklfSUZSX1dBUk5JTkdfSUYoKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1dhcm5pbmdJZi5IZWFkZXIs DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1dBUk5JTkdfSUZfT1Ap DQoNCisgICAgICAgIHNlbGYuX19XYXJuaW5nSWYuV2FybmluZyA9IEVGSV9TVFJJTkdfSURfSU5W QUxJRA0KDQorICAgICAgICBzZWxmLl9fV2FybmluZ0lmLlRpbWVPdXQgPSAwDQoNCisNCg0KKyAg ICBkZWYgU2V0V2FybmluZyhzZWxmLCBXYXJuaW5nKToNCg0KKyAgICAgICAgc2VsZi5fX1dhcm5p bmdJZi5XYXJuaW5nID0gV2FybmluZw0KDQorDQoNCisgICAgZGVmIFNldFRpbWVPdXQoc2VsZiwg VGltZU91dCk6DQoNCisgICAgICAgIHNlbGYuX19XYXJuaW5nSWYuVGltZU91dCA9IFRpbWVPdXQN Cg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5f X1dhcm5pbmdJZg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJSZWZyZXNoKENJZnJPYmosIENJZnJP cEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNl bGYuX19SZWZyZXNoID0gRUZJX0lGUl9SRUZSRVNIKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWZyZXNoLkhlYWRlciwgRUZJX0lGUl9SRUZSRVNIX09Q KQ0KDQorICAgICAgICBzZWxmLl9fUmVmcmVzaC5SZWZyZXNoSW50ZXJ2YWwgPSAwDQoNCisNCg0K KyAgICBkZWYgU2V0UmVmcmVzaEludGVydmFsKHNlbGYsIFJlZnJlc2hJbnRlcnZhbCk6DQoNCisg ICAgICAgIHNlbGYuX19SZWZyZXNoLlJlZnJlc2hJbnRlcnZhbCA9IFJlZnJlc2hJbnRlcnZhbA0K DQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f UmVmcmVzaA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJSZWZyZXNoSWQoQ0lmck9iaiwgQ0lmck9w SGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2Vs Zi5fX1JlZnJlc2hJZCA9IEVGSV9JRlJfUkVGUkVTSF9JRCgpDQoNCisgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmcmVzaElkLkhlYWRlciwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUkVGUkVTSF9JRF9PUCkNCg0KKyAgICAgICAg c2VsZi5fX1JlZnJlc2hJZC5SZWZyZXNoRXZlbnRHcm91cElkID0gRUZJX0dVSUQoDQoNCisgICAg ICAgICAgICAwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpDQoNCisN Cg0KKyAgICBkZWYgU2V0UmVmcmVzaEV2ZW50R3JvdXRJZChzZWxmLCBSZWZyZXNoRXZlbnRHcm91 cElkKToNCg0KKyAgICAgICAgc2VsZi5fX1JlZnJlc2hJZC5SZWZyZXNoRXZlbnRHcm91cElkID0g UmVmcmVzaEV2ZW50R3JvdXBJZA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisg ICAgICAgIHJldHVybiBzZWxmLl9fUmVmcmVzaElkDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclZh clN0b3JlRGV2aWNlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19p bml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZURldmljZSA9IEVGSV9JRlJf VkFSU1RPUkVfREVWSUNFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19WYXJTdG9yZURldmljZS5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCkNCg0KKyAgICAgICAgc2VsZi5fX1Zh clN0b3JlRGV2aWNlLkRldmljZVBhdGggPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCg0KKw0KDQor ICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgpOg0KDQorICAgICAgICBzZWxm Ll9fVmFyU3RvcmVEZXZpY2UuRGV2aWNlUGF0aCA9IERldmljZVBhdGgNCg0KKw0KDQorICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1ZhclN0b3JlRGV2aWNl DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckRhdGUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZy UXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAg ICAgICBzZWxmLl9fRGF0ZSA9IEVGSV9JRlJfREFURSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGF0ZS5IZWFkZXIsIEVGSV9JRlJfREFURV9PUCkNCg0K KyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19EYXRlLlF1 ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyA9IDANCg0KKw0KDQorICAgIGRl ZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQoNCisNCg0KKyAgICAgICAgUmV0dXJu Q29kZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQoNCisgICAg ICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoN CisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgIExGbGFncywg UmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfUUZfREFURV9ZRUFSX1NVUFBS RVNTKQ0KDQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFn cyB8PSBFRklfUUZfREFURV9ZRUFSX1NVUFBSRVNTDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBS ZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsIEVGSV9RRl9EQVRFX01PTlRIX1NVUFBS RVNTKQ0KDQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFn cyB8PSBFRklfUUZfREFURV9NT05USF9TVVBQUkVTUw0KDQorDQoNCisgICAgICAgIExGbGFncywg UmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfUUZfREFURV9EQVlfU1VQUFJF U1MpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdz IHw9IEVGSV9RRl9EQVRFX0RBWV9TVVBQUkVTUw0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0 ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBRRl9EQVRFX1NUT1JBR0VfTk9STUFMKQ0K DQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBR Rl9EQVRFX1NUT1JBR0VfTk9STUFMDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxB R19URVNUX0FORF9DTEVBUihMRmxhZ3MsIFFGX0RBVEVfU1RPUkFHRV9USU1FKQ0KDQorICAgICAg ICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBRRl9EQVRFX1NU T1JBR0VfVElNRQ0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRf Q0xFQVIoTEZsYWdzLCBRRl9EQVRFX1NUT1JBR0VfV0FLRVVQKQ0KDQorICAgICAgICBpZiBSZXQ6 DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBRRl9EQVRFX1NUT1JBR0VfV0FL RVVQDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTIGlmIExGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VO U1VQUE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19EYXRlDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclRpbWUoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9f KHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fVGltZSA9IEVGSV9JRlJfVElNRSgpDQoNCisgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVGltZS5IZWFkZXIsIEVGSV9J RlJfVElNRV9PUCkNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19UaW1lLlF1ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fVGltZS5GbGFncyA9IDAN Cg0KKw0KDQorICAgIGRlZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQoNCisNCg0K KyAgICAgICAgUmV0dXJuQ29kZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBI RmxhZ3MpDQoNCisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisg ICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBRRl9USU1F X0hPVVJfU1VQUFJFU1MpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYu X19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfSE9VUl9TVVBQUkVTUw0KDQorDQoNCisgICAgICAgIExG bGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBRRl9USU1FX01JTlVURV9T VVBQUkVTUykNCg0KKyAgICAgICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX1RpbWUu RmxhZ3MgfD0gUUZfVElNRV9NSU5VVEVfU1VQUFJFU1MNCg0KKw0KDQorICAgICAgICBMRmxhZ3Ms IFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywgUUZfVElNRV9TRUNPTkRfU1VQUFJF U1MpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdz IHw9IFFGX1RJTUVfU0VDT05EX1NVUFBSRVNTDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQg PSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsIFFGX1RJTUVfU1RPUkFHRV9OT1JNQUwpDQoN CisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFG X1RJTUVfU1RPUkFHRV9OT1JNQUwNCg0KKw0KDQorICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFH X1RFU1RfQU5EX0NMRUFSKExGbGFncywgUUZfVElNRV9TVE9SQUdFX1RJTUUpDQoNCisgICAgICAg IGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RP UkFHRV9USU1FDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9D TEVBUihMRmxhZ3MsIFFGX1RJTUVfU1RPUkFHRV9XQUtFVVApDQoNCisgICAgICAgIGlmIFJldDoN Cg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9XQUtF VVANCg0KKw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MgaWYgTEZsYWdzID09IDAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5T VVBQT1JURUQNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1 cm4gc2VsZi5fX1RpbWUNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyTnVtZXJpYyhDSWZyT2JqLCBD SWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgIENJ ZnJNaW5NYXhTdGVwRGF0YSk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisg ICAgICAgIHNlbGYuX19OdW1lcmljID0gRUZJX0lGUl9OVU1FUklDKCkgICMgZGF0YQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX051bWVyaWMuSGVhZGVyLCBF RklfSUZSX05VTUVSSUNfT1ApDQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fTnVtZXJpYy5RdWVzdGlvbikNCg0KKyAgICAgICAgQ0lmck1pbk1heFN0 ZXBEYXRhLl9faW5pdF9fKHNlbGYsIHNlbGYuX19OdW1lcmljLkRhdGEsIFRydWUpDQoNCisgICAg ICAgIHNlbGYuX19OdW1lcmljLkZsYWdzID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMSB8IEVGSV9J RlJfRElTUExBWV9VSU5UX0RFQw0KDQorDQoNCisgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0K DQorICAgICAgICByZXR1cm4gc2VsZg0KDQorDQoNCisgICAgZGVmIEdldE1pbk1heERhdGEoc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgU2V0UUhlYWRlckZs YWdzKHNlbGYsIEZsYWdzKToNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdz KHNlbGYsIEZsYWdzKQ0KDQorDQoNCisgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZs YWdzLCBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2UpOg0KDQorICAgICAgICBSZXR1cm5D b2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAg ICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0K KyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQoNCisgICAgICAgIGlmIERpc3BsYXlTZXR0 aW5nc1NwZWNpZmllZCA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19OdW1lcmljLkZs YWdzID0gTEZsYWdzIHwgRUZJX0lGUl9ESVNQTEFZX1VJTlRfREVDDQoNCisgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICBzZWxmLl9fTnVtZXJpYy5GbGFncyA9IExGbGFncw0KDQorICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRl ZiBTZXRGbGFnc0ZvckJpdEZpZWxkKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSEZsYWdzLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExGbGFncywNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2Up Og0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNl bGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQoNCisg ICAgICAgIGlmIERpc3BsYXlTZXR0aW5nc1NwZWNpZmllZCA9PSBGYWxzZToNCg0KKyAgICAgICAg ICAgIHNlbGYuX19OdW1lcmljLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlO VF9ERUNfQklUDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBzZWxmLl9fTnVtZXJp Yy5GbGFncyA9IExGbGFncw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBHZXROdW1lcmljRmxhZ3Moc2VsZik6DQoNCisg ICAgICAgIHJldHVybiBzZWxmLl9fTnVtZXJpYy5GbGFncw0KDQorDQoNCisgICAgZGVmIFNocmlu a0JpblNpemUoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuU2hyaW5rQmluU2l6ZShTaXpl KQ0KDQorICAgICAgICBzZWxmLkRlY0xlbmd0aChTaXplKQ0KDQorICAgICAgICAjICBfRU1JVF9Q RU5ESU5HX09CSigpOw0KDQorICAgICAgICBOdW1lcmljID0gRUZJX0lGUl9OVU1FUklDKCkNCg0K KyAgICAgICAgc2VsZi5VcGRhdGVIZWFkZXIoTnVtZXJpYy5IZWFkZXIpDQoNCisNCg0KKyAgICBk ZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19OdW1lcmljDQoNCisN Cg0KKw0KDQorY2xhc3MgQ0lmck9uZU9mKA0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIs DQoNCisgICAgICAgIENJZnJPYmosDQoNCisgICAgICAgIENJZnJPcEhlYWRlciwNCg0KKyk6DQoN CisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19PbmVPZiA9 IEVGSV9JRlJfT05FX09GKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19PbmVPZi5IZWFkZXIsIEVGSV9JRlJfT05FX09GX09QKQ0KDQorICAgICAgICBDSWZy UXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX09uZU9mLlF1ZXN0aW9uKQ0KDQor ICAgICAgICBzZWxmLl9fT25lT2YuRmxhZ3MgPSAwDQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rp b24oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgR2V0TWlu TWF4RGF0YShzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYNCg0KKw0KDQorICAgIGRlZiBT ZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFk ZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQoNCisNCg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwg SEZsYWdzLCBMRmxhZ3MpOg0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVh ZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBS ZXR1cm5Db2RlDQoNCisgICAgICAgIGlmIExGbGFncyAmIEVGSV9JRlJfRElTUExBWToNCg0KKyAg ICAgICAgICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncw0KDQorICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgc2VsZi5fX09uZU9mLkZsYWdzID0gTEZsYWdzIHwgRUZJX0lGUl9ESVNQ TEFZX1VJTlRfREVDDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIFNldEZsYWdzRm9yQml0RmllbGQoc2VsZiwgSEZsYWdz LCBMRmxhZ3MpOg0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNl dEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5D b2RlDQoNCisgICAgICAgIGlmIExGbGFncyAmIEVES0lJX0lGUl9ESVNQTEFZX0JJVDoNCg0KKyAg ICAgICAgICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncw0KDQorICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgc2VsZi5fX09uZU9mLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJ U1BMQVlfVUlOVF9ERUNfQklUDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAg IHJldHVybiBzZWxmLl9fT25lT2YNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQ2hlY2tCb3goQ0lm ck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fQ2hlY2tCb3ggPSBFRklfSUZSX0NI RUNLQk9YKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19D aGVja0JveC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X0NIRUNLQk9YX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX0NoZWNrQm94LlF1ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fQ2hlY2tCb3gu RmxhZ3MgPSAwDQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6DQoNCisgICAgICAg IHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdz KToNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0K DQorDQoNCisgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5f X0NoZWNrQm94LkZsYWdzDQoNCisNCg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBM RmxhZ3MpOg0KDQorDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIu U2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KDQorICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KDQorICAgICAgICAgICAgcmV0dXJuIFJldHVy bkNvZGUNCg0KKw0KDQorICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFS KExGbGFncywgRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUKQ0KDQorICAgICAgICBpZiBSZXQ6DQoN CisgICAgICAgICAgICBzZWxmLl9fQ2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9E RUZBVUxUDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVB UihMRmxhZ3MsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUX01GRykNCg0KKw0KDQorICAgICAgICBpZiBSZXQ6DQoN CisgICAgICAgICAgICBzZWxmLl9fQ2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9E RUZBVUxUX01GRw0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9G TEFHU19VTlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAg ICAgIHJldHVybiBzZWxmLl9fQ2hlY2tCb3gNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUmVzZXRC dXR0b24oQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyU3RhdGVtZW50SGVhZGVyKToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1Jlc2V0QnV0dG9u ID0gRUZJX0lGUl9SRVNFVF9CVVRUT04oKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5fX1Jlc2V0QnV0dG9uLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9JRlJfUkVTRVRfQlVUVE9OX09QKQ0KDQorICAgICAgICBDSWZyU3Rh dGVtZW50SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZXNldEJ1dHRvbi5TdGF0ZW1lbnQp DQoNCisgICAgICAgIHNlbGYuX19SZXNldEJ1dHRvbi5EZWZhdWx0SWQgPSBFRklfSElJX0RFRkFV TFRfQ0xBU1NfU1RBTkRBUkQNCg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0SWQoc2VsZiwgRGVm YXVsdElkKToNCg0KKyAgICAgICAgc2VsZi5fX1Jlc2V0QnV0dG9uLkRlZmF1bHRJZCA9IERlZmF1 bHRJZA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBz ZWxmLl9fUmVzZXRCdXR0b24NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyT3IoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQor ICAgICAgICBzZWxmLl9fT3IgPSBFRklfSUZSX09SKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19Pci5IZWFkZXIsIEVGSV9JRlJfT1JfT1ApDQoNCisgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQW5kKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0FuZCA9IEVGSV9JRlJfQU5EKCkNCg0KKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19BbmQuSGVhZGVyLCBFRklfSUZSX0FO RF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2Ns YXNzIENJZnJCaXRXaXNlT3IoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fQml0V2lzZU9yID0g RUZJX0lGUl9CSVRXSVNFX09SKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19CaXRXaXNlT3IuSGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX0lGUl9CSVRXSVNFX09SX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhM aW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckNhdGVuYXRlKENJZnJPYmosIENJZnJPcEhl YWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAg ICAgc2VsZi5fX0NhdGVuYXRlID0gRUZJX0lGUl9DQVRFTkFURSgpDQoNCisgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQ2F0ZW5hdGUuSGVhZGVyLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9DQVRFTkFURV9PUCkNCg0KKyAgICAgICAg c2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJEaXZpZGUoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KDQorICAgICAgICBzZWxmLl9fRGl2aWRlID0gRUZJX0lGUl9ESVZJREUoKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0RpdmlkZS5IZWFkZXIsIEVG SV9JRlJfRElWSURFX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisN Cg0KKw0KDQorY2xhc3MgQ0lmckVxdWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0K KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0VxdWFs ID0gRUZJX0lGUl9FUVVBTCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fRXF1YWwuSGVhZGVyLCBFRklfSUZSX0VRVUFMX09QKQ0KDQorICAgICAgICBzZWxm LlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckdyZWF0ZXJFcXVhbChD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQoNCisgICAgICAgIHNlbGYuX19HcmVhdGVyRXF1YWwgPSBFRklfSUZSX0dSRUFURVJf RVFVQUwoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0dy ZWF0ZXJFcXVhbC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf SUZSX0dSRUFURVJfRVFVQUxfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykN Cg0KKw0KDQorDQoNCitjbGFzcyBDSWZyR3JlYXRlclRoYW4oQ0lmck9iaiwgQ0lmck9wSGVhZGVy KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBz ZWxmLl9fR3JlYXRlclRoYW4gPSBFRklfSUZSX0dSRUFURVJfVEhBTigpDQoNCisgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fR3JlYXRlclRoYW4uSGVhZGVyLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9HUkVBVEVSX1RIQU5fT1ApDQoN CisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZy TGVzc0VxdWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0xlc3NFcXVhbCA9IEVGSV9JRlJf TEVTU19FUVVBTCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fTGVzc0VxdWFsLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9JRlJfTEVTU19FUVVBTF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0K DQorDQoNCisNCg0KK2NsYXNzIENJZnJMZXNzVGhhbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0K DQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYu X19MZXNzVGhhbiA9IEVGSV9JRlJfTEVTU19USEFOKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19MZXNzVGhhbi5IZWFkZXIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfSUZSX0xFU1NfVEhBTl9PUCkNCg0KKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJNYXAoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQor ICAgICAgICBzZWxmLl9fTWFwID0gRUZJX0lGUl9NQVAoKQ0KDQorICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01hcC5IZWFkZXIsIEVGSV9JRlJfTUFQX09QKQ0KDQor ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck1h dGNoKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX01hdGNoID0gRUZJX0lGUl9NQVRDSCgpDQoN CisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTWF0Y2guSGVhZGVy LCBFRklfSUZSX01BVENIX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoN CisNCg0KKw0KDQorY2xhc3MgQ0lmck1hdGNoMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObywgR3VpZCk6DQoNCisgICAgICAgIHNl bGYuX19NYXRjaDIgPSBFRklfSUZSX01BVENIMigpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fTWF0Y2gyLkhlYWRlciwgRUZJX0lGUl9NQVRDSDJfT1ApDQoN CisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKyAgICAgICAgc2VsZi5fX01hdGNo Mi5TeW50YXhUeXBlID0gR3VpZA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJNdWx0aXBseShDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQoNCisgICAgICAgIHNlbGYuX19NdWx0aXBseSA9IEVGSV9JRlJfTVVMVElQTFkoKQ0KDQor ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX011bHRpcGx5LkhlYWRl ciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfTVVMVElQTFlfT1Ap DQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyTW9kdWxvKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX01vZHVsbyA9IEVGSV9JRlJfTU9E VUxPKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Nb2R1 bG8uSGVhZGVyLCBFRklfSUZSX01PRFVMT19PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8o TGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJOb3RFcXVhbChDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAg ICAgIHNlbGYuX19Ob3RFcXVhbCA9IEVGSV9JRlJfTk9UX0VRVUFMKCkNCg0KKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ob3RFcXVhbC5IZWFkZXIsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX05PVF9FUVVBTF9PUCkNCg0KKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTaGlmdExl ZnQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxm LCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fU2hpZnRMZWZ0ID0gRUZJX0lGUl9TSElGVF9M RUZUKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19TaGlm dExlZnQuSGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9T SElGVF9MRUZUX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0K Kw0KDQorY2xhc3MgQ0lmclNoaWZ0UmlnaHQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fU2hp ZnRSaWdodCA9IEVGSV9JRlJfU0hJRlRfUklHSFQoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5fX1NoaWZ0UmlnaHQuSGVhZGVyLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0lGUl9TSElGVF9SSUdIVF9PUCkNCg0KKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTdWJ0cmFjdChDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQoNCisgICAgICAgIHNlbGYuX19TdWJ0cmFjdCA9IEVGSV9JRlJfU1VCVFJBQ1QoKQ0KDQor ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YnRyYWN0LkhlYWRl ciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfU1VCVFJBQ1RfT1Ap DQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyQ29uZGl0aW9uYWwoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBf X2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fQ29uZGl0aW9uYWwgPSBF RklfSUZSX0NPTkRJVElPTkFMKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19Db25kaXRpb25hbC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX0NPTkRJVElPTkFMX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVO byhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckZpbmQoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAg ICBzZWxmLl9fRmluZCA9IEVGSV9JRlJfRklORCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fRmluZC5IZWFkZXIsIEVGSV9JRlJfRklORF9PUCkNCg0KKyAg ICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIFNldEZvcm1hdChz ZWxmLCBGb3JtYXQpOg0KDQorICAgICAgICBzZWxmLl9fRmluZC5Gb3JtYXQgPSBGb3JtYXQNCg0K Kw0KDQorDQoNCitjbGFzcyBDSWZyTWlkKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0K KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX01pZCA9 IEVGSV9JRlJfTUlEKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19NaWQuSGVhZGVyLCBFRklfSUZSX01JRF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUb2tlbihDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAg ICAgIHNlbGYuX19Ub2tlbiA9IEVGSV9JRlJfVE9LRU4oKQ0KDQorICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1Rva2VuLkhlYWRlciwgRUZJX0lGUl9UT0tFTl9PUCkN Cg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJ ZnJTcGFuKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1NwYW4gPSBFRklfSUZSX1NQQU4oKQ0K DQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1NwYW4uSGVhZGVy LCBFRklfSUZSX1NQQU5fT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0K KyAgICAgICAgc2VsZi5fX1NwYW4uRmxhZ3MgPSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5H DQoNCisNCg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgTEZsYWdzKToNCg0KKyAgICAgICAgaWYg TEZsYWdzID09IEVGSV9JRlJfRkxBR1NfRklSU1RfTUFUQ0hJTkc6DQoNCisgICAgICAgICAgICBz ZWxmLl9fU3Bhbi5GbGFncyB8PSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5HDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NM RUFSKA0KDQorICAgICAgICAgICAgICAgIExGbGFncywgRUZJX0lGUl9GTEFHU19GSVJTVF9OT05f TUFUQ0hJTkcpDQoNCisgICAgICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fX1NwYW4uRmxhZ3MgfD0gRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJTkcNCg0KKw0K DQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MgaWYgTEZs YWdzID09IDAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQN Cg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQml0V2lzZUFuZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNl bGYuX19CaXRXaXNlQW5kID0gRUZJX0lGUl9CSVRXSVNFX0FORCgpDQoNCisgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQml0V2lzZUFuZC5IZWFkZXIsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0JJVFdJU0VfQU5EX09QKQ0KDQorICAg ICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckJpdFdp c2VPcihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19CaXRXaXNlT3IgPSBFRklfSUZSX0JJVFdJ U0VfT1IoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0Jp dFdpc2VPci5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X0JJVFdJU0VfT1JfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0K DQorDQoNCitjbGFzcyBDSWZyQWRkKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAg ICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0FkZCA9IEVG SV9JRlJfQUREKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19BZGQuSGVhZGVyLCBFRklfSUZSX0FERF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8o TGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUb1N0cmluZyhDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAg ICAgIHNlbGYuX19Ub1N0cmluZyA9IEVGSV9JRlJfVE9fU1RSSU5HKCkNCg0KKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ub1N0cmluZy5IZWFkZXIsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1RPX1NUUklOR19PUCkNCg0KKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIFNldEZvcm1hdChzZWxm LCBGb3JtYXQpOg0KDQorICAgICAgICBzZWxmLl9fVG9TdHJpbmcuRm9ybWF0ID0gRm9ybWF0DQoN CisNCg0KKw0KDQorY2xhc3MgQ0lmclRvVXBwZXIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0K Kw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9f VG9VcHBwZXIgPSBFRklfSUZSX1RPX1VQUEVSKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19Ub1VwcHBlci5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfSUZSX1RPX1VQUEVSX09QKQ0KDQorICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclRvVWludChDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisg ICAgICAgIHNlbGYuX19Ub1VpbnQgPSBFRklfSUZSX1RPX1VJTlQoKQ0KDQorICAgICAgICBDSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RvVWludC5IZWFkZXIsIEVGSV9JRlJfVE9f VUlOVF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0K K2NsYXNzIENJZnJUb0xvd2VyKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1RvTG93ZXIgPSBF RklfSUZSX1RPX0xPV0VSKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19Ub0xvd2VyLkhlYWRlciwgRUZJX0lGUl9UT19MT1dFUl9PUCkNCg0KKyAgICAgICAg c2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUb0Jvb2xlYW4o Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBM aW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fQm9vbGVhbiA9IEVGSV9JRlJfVE9fQk9PTEVBTigp DQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQm9vbGVhbi5I ZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1RPX0JPT0xF QU5fT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitj bGFzcyBDSWZyTm90KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX05vdCA9IEVGSV9JRlJfTk9U KCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ob3QuSGVh ZGVyLCBFRklfSUZSX05PVF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0K DQorDQoNCisNCg0KK2NsYXNzIENJZnJEdXAoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fRHVw ID0gRUZJX0lGUl9EVVAoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX0R1cC5IZWFkZXIsIEVGSV9JRlJfRFVQX09QKQ0KDQorICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAg ICByZXR1cm4gc2VsZi5fX0R1cC5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRXFJZElk KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwg TGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0VxSWRJZCA9IEVGSV9JRlJfRVFfSURfSUQoKQ0K DQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0VxSWRJZC5IZWFk ZXIsIEVGSV9JRlJfRVFfSURfSURfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCg0KKyAgICAgICAgc2VsZi5fX0VxSWRJZC5RdWVzdGlvbklkMSA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQoNCisgICAgICAgIHNlbGYuX19FcUlkSWQuUXVlc3Rpb25JZDIgPSBFRklfUVVF U1RJT05fSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAg ICAgICAgcmV0dXJuIHNlbGYuX19FcUlkSWQuSGVhZGVyDQoNCisNCg0KKyAgICBkZWYgU2V0UXVl c3Rpb25JZDEoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIsIExpbmVObyk6DQoNCisgICAgICAg IGlmIFF1ZXN0aW9uSWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAg ICBzZWxmLl9fRXFJZElkLlF1ZXN0aW9uSWQxID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgZGVmIFNldFF1ZXN0aW9uSWQyKHNl bGYsIFF1ZXN0aW9uSWQsIFZhcklkU3RyLCBMaW5lTm8pOg0KDQorICAgICAgICBpZiBRdWVzdGlv bklkICE9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vx SWRJZC5RdWVzdGlvbklkMiA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgIHBhc3MNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRXFJZFZhbChDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisg ICAgICAgIHNlbGYuX19FcUlkVmFsID0gRUZJX0lGUl9FUV9JRF9WQUwoKQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0VxSWRWYWwuSGVhZGVyLA0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9FUV9JRF9WQUxfT1ApDQoNCisgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKyAgICAgICAgc2VsZi5fX0VxSWRWYWwuUXVl c3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0UXVl c3Rpb25JZChzZWxmLCBRdWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCg0KKyAgICAgICAg aWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAg IHNlbGYuX19FcUlkVmFsLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFs dWUpOg0KDQorICAgICAgICBzZWxmLl9fRXFJZFZhbC5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAg ICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0VxSWRWYWwu SGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckVxSWRMaXN0KENJZnJPYmosIENJZnJPcEhl YWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vLCBOdW1zLCBWYWx1 ZUxpc3Q9W10pOg0KDQorICAgICAgICBzZWxmLl9fRXFJZFZMaXN0ID0gUmVmaW5lX0VGSV9JRlJf RVFfSURfVkFMX0xJU1QoTnVtcykNCg0KKyAgICAgICAgSGVhZGVyID0gRUZJX0lGUl9PUF9IRUFE RVIoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgSGVhZGVyLCBFRklf SUZSX0VRX0lEX1ZBTF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQor ICAgICAgICBzZWxmLl9fRXFJZFZMaXN0LkhlYWRlciA9IEhlYWRlcg0KDQorICAgICAgICBzZWxm Ll9fRXFJZFZMaXN0LlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAg ICAgICBzZWxmLl9fRXFJZFZMaXN0Lkxpc3RMZW5ndGggPSAwDQoNCisgICAgICAgIGlmIFZhbHVl TGlzdCAhPSBbXToNCg0KKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNfdWludDE2ICogTnVtcw0K DQorICAgICAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQoNCisgICAgICAgICAgICBm b3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQoNCisgICAgICAgICAgICAgICAgVmFs dWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0KDQorICAgICAgICAgICAgc2VsZi5fX0VxSWRWTGlz dC5WYWx1ZUxpc3QgPSBWYWx1ZUFycmF5DQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25JZChz ZWxmLCBRdWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCg0KKyAgICAgICAgaWYgUXVlc3Rp b25JZCAhPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19F cUlkVkxpc3QuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgIGRlZiBTZXRMaXN0TGVuZ3RoKHNlbGYsIExpc3RM ZW5ndGgpOg0KDQorICAgICAgICBzZWxmLl9fRXFJZFZMaXN0Lkxpc3RMZW5ndGggPSBMaXN0TGVu Z3RoDQoNCisNCg0KKyAgICBkZWYgU2V0VmFsdWVMaXN0KHNlbGYsIFZhbHVlTGlzdCk6DQoNCisg ICAgICAgIGlmIFZhbHVlTGlzdCAhPSBbXToNCg0KKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNf dWludDE2ICogbGVuKFZhbHVlTGlzdCkNCg0KKyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJh eVR5cGUoKQ0KDQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkp Og0KDQorICAgICAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCg0KKyAg ICAgICAgICAgIHNlbGYuX19FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KDQorDQoN CisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19FcUlk Vkxpc3QuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclVpbnQ4KENJZnJPYmosIENJZnJP cEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAg ICAgICAgc2VsZi5fX1VpbnQ4ID0gRUZJX0lGUl9VSU5UOCgpDQoNCisgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVWludDguSGVhZGVyLCBFRklfSUZSX1VJTlQ4X09Q KQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgU2V0 VmFsdWUoc2VsZiwgVmFsdWUpOg0KDQorICAgICAgICBzZWxmLl9fVWludDguVmFsdWUgPSBWYWx1 ZQ0KDQorDQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYuX19VaW50OC5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVWludDE2KENJZnJPYmos IENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToN Cg0KKyAgICAgICAgc2VsZi5fX1VpbnQxNiA9IEVGSV9JRlJfVUlOVDE2KCkNCg0KKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19VaW50MTYuSGVhZGVyLCBFRklfSUZS X1VJTlQxNl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisg ICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCg0KKyAgICAgICAgc2VsZi5fX1VpbnQxNi5W YWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAg ICByZXR1cm4gc2VsZi5fX1VpbnQxNi5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVWlu dDMyKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1VpbnQzMiA9IEVGSV9JRlJfVUlOVDMyKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19VaW50MzIuSGVh ZGVyLCBFRklfSUZSX1VJTlQzMl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KDQorDQoNCisgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCg0KKyAgICAgICAgc2Vs Zi5fX1VpbnQzMi5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYp Og0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQzMi5IZWFkZXINCg0KKw0KDQorDQoNCitj bGFzcyBDSWZyVWludDY0KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1VpbnQ2NCA9IEVGSV9J RlJfVUlOVDY0KCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19VaW50NjQuSGVhZGVyLCBFRklfSUZSX1VJTlQ2NF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCg0K KyAgICAgICAgc2VsZi5fX1VpbnQ2NC5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0 SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQ2NC5IZWFkZXINCg0K Kw0KDQorDQoNCitjbGFzcyBDSWZyUXVlc3Rpb25SZWYxKENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2Vs Zi5fX1F1ZXN0aW9uUmVmMSA9IEVGSV9JRlJfUVVFU1RJT05fUkVGMSgpDQoNCisgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYxLkhlYWRlciwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGMV9PUCkN Cg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorICAgICAgICBzZWxmLl9fUXVl c3Rpb25SZWYxLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorDQoNCisg ICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlv blJlZjEuSGVhZGVyDQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlv bklkLCBWYXJJZFN0ciwgTGluZU5vKToNCg0KKyAgICAgICAgaWYgUXVlc3Rpb25JZCAhPSBFRklf UVVFU1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjEu UXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg IHBhc3MNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUXVlc3Rpb25SZWYyKENJZnJPYmosIENJZnJP cEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAg ICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmMiA9IEVGSV9JRlJfUVVFU1RJT05fUkVGMigpDQoNCisg ICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYyLkhl YWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05f UkVGMl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJl ZjIuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclF1ZXN0aW9uUmVmMyhDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoN CisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjMgPSBFRklfSUZSX1FVRVNUSU9OX1JFRjMoKQ0K DQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1F1ZXN0aW9uUmVm My5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1FVRVNU SU9OX1JFRjNfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQor ICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUXVlc3Rp b25SZWYzLkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJRdWVzdGlvblJlZjNfMihDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQoNCisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMiA9IEVGSV9JRlJfUVVFU1RJT05f UkVGM18yKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19R dWVzdGlvblJlZjNfMi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF RklfSUZSX1FVRVNUSU9OX1JFRjNfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmM18yLkRldmljZVBhdGggPSBFRklfU1RS SU5HX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmlj ZVBhdGgpOg0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzIuRGV2aWNlUGF0aCA9IERl dmljZVBhdGgNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJl dHVybiBzZWxmLl9fUXVlc3Rpb25SZWYzXzIuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lm clF1ZXN0aW9uUmVmM18zKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmM18z ID0gRUZJX0lGUl9RVUVTVElPTl9SRUYzXzMoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1F1ZXN0aW9uUmVmM18zLkhlYWRlciwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCkNCg0KKyAgICAgICAg c2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzMu RGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLl9fUXVl c3Rpb25SZWYzXzMuR3VpZCA9IEVGSV9HVUlEKA0KDQorICAgICAgICAgICAgMCwgMCwgMCwgR3Vp ZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKQ0KDQorDQoNCisgICAgZGVmIFNldERldmlj ZVBhdGgoc2VsZiwgRGV2aWNlUGF0aCk6DQoNCisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNf My5EZXZpY2VQYXRoID0gRGV2aWNlUGF0aA0KDQorDQoNCisgICAgZGVmIFNldEd1aWQoc2VsZiwg R3VpZCk6DQoNCisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMy5HdWlkID0gR3VpZA0KDQor DQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19R dWVzdGlvblJlZjNfMy5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUnVsZVJlZihDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQoNCisgICAgICAgIHNlbGYuX19SdWxlUmVmID0gRUZJX0lGUl9SVUxFX1JFRigpDQoNCisg ICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUnVsZVJlZi5IZWFkZXIs IEVGSV9JRlJfUlVMRV9SRUZfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykN Cg0KKyAgICAgICAgc2VsZi5fX1J1bGVSZWYuUnVsZUlkID0gRUZJX1JVTEVfSURfSU5WQUxJRA0K DQorDQoNCisgICAgZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KDQorICAgICAgICBzZWxm Ll9fUnVsZVJlZi5SdWxlSWQgPSBSdWxlSWQNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUnVsZVJlZi5IZWFkZXINCg0KKw0KDQorDQoN CitjbGFzcyBDSWZyU3RyaW5nUmVmMShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19TdHJpbmdS ZWYxID0gRUZJX0lGUl9TVFJJTkdfUkVGMSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fU3RyaW5nUmVmMS5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfSUZSX1NUUklOR19SRUYxX09QKQ0KDQorICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQoNCisgICAgICAgIHNlbGYuX19TdHJpbmdSZWYxLlN0cmluZ0lkID0g RUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0U3RyaW5nSWQoc2VsZiwg U3RyaW5nSWQpOg0KDQorICAgICAgICBzZWxmLl9fU3RyaW5nUmVmMS5TdHJpbmdJZCA9IFN0cmlu Z0lkDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4g c2VsZi5fX1N0cmluZ1JlZjEuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclN0cmluZ1Jl ZjIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxm LCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fU3RyaW5nUmVmMiA9IEVGSV9JRlJfU1RSSU5H X1JFRjIoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0 cmluZ1JlZjIuSGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lG Ul9TVFJJTkdfUkVGMl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQor DQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19T dHJpbmdSZWYyLkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUaGlzKENJZnJPYmosIENJ ZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0K KyAgICAgICAgc2VsZi5fX1RoaXMgPSBFRklfSUZSX1RISVMoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RoaXMuSGVhZGVyLCBFRklfSUZSX1RISVNfT1Ap DQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRlZiBHZXRI ZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fVGhpcy5IZWFkZXINCg0KKw0K DQorDQoNCitjbGFzcyBDSWZyU2VjdXJpdHkoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fU2Vj dXJpdHkgPSBFRklfSUZSX1NFQ1VSSVRZKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19TZWN1cml0eS5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFRklfSUZSX1NFQ1VSSVRZX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVO byhMaW5lTm8pDQoNCisgICAgICAgIHNlbGYuX19TZWN1cml0eS5QZXJtaXNzaW9ucyA9IEVGSV9H VUlEKA0KDQorICAgICAgICAgICAgMCwgMCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAs IDAsIDApKQ0KDQorDQoNCisgICAgZGVmIFNldFBlcm1pc3Npb25zKHNlbGYsIFBlcm1pc3Npb25z KToNCg0KKyAgICAgICAgc2VsZi5fX1NlY3VyaXR5LlBlcm1pc3Npb25zID0gUGVybWlzc2lvbnMN Cg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxm Ll9fU2VjdXJpdHkuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckdldChDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoN CisgICAgICAgIHNlbGYuX19HZXQgPSBFRklfSUZSX0dFVCgpDQoNCisgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fR2V0LkhlYWRlciwgRUZJX0lGUl9HRVRfT1ApDQoN CisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRlZiBTZXRWYXJJ bmZvKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQoNCisgICAgICAgIHNlbGYu X19HZXQuVmFyU3RvcmVJZCA9IEJhc2VJbmZvLlZhclN0b3JlSWQNCg0KKyAgICAgICAgc2VsZi5f X0dldC5WYXJTdG9yZUluZm8uVmFyTmFtZSA9IEJhc2VJbmZvLkluZm8uVmFyTmFtZQ0KDQorICAg ICAgICBzZWxmLl9fR2V0LlZhclN0b3JlSW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZh ck9mZnNldA0KDQorICAgICAgICBzZWxmLl9fR2V0LlZhclN0b3JlVHlwZSA9IEJhc2VJbmZvLlZh clR5cGUNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fR2V0LkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTZXQoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0K DQorICAgICAgICBzZWxmLl9fU2V0ID0gRUZJX0lGUl9TRVQoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1NldC5IZWFkZXIsIEVGSV9JRlJfU0VUX09QKQ0K DQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgU2V0VmFy SW5mbyhzZWxmLCBCYXNlSW5mbzogRUZJX1ZBUlNUT1JFX0lORk8pOg0KDQorICAgICAgICBzZWxm Ll9fU2V0LlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQoNCisgICAgICAgIHNlbGYu X19TZXQuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBCYXNlSW5mby5JbmZvLlZhck5hbWUNCg0KKyAg ICAgICAgc2VsZi5fX1NldC5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0gQmFzZUluZm8uSW5mby5W YXJPZmZzZXQNCg0KKyAgICAgICAgc2VsZi5fX1NldC5WYXJTdG9yZVR5cGUgPSBCYXNlSW5mby5W YXJUeXBlDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1 cm4gc2VsZi5fX1NldC5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVHJ1ZShDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6 DQoNCisgICAgICAgIHNlbGYuX19UcnVlID0gRUZJX0lGUl9UUlVFKCkNCg0KKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19UcnVlLkhlYWRlciwgRUZJX0lGUl9UUlVF X09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYg R2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1RydWUuSGVhZGVyDQoN CisNCg0KKw0KDQorY2xhc3MgQ0lmckZhbHNlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisN Cg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0Zh bHNlID0gRUZJX0lGUl9UUlVFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19GYWxzZS5IZWFkZXIsIEVGSV9JRlJfRkFMU0VfT1ApDQoNCisgICAgICAgIHNl bGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoN CisgICAgICAgIHJldHVybiBzZWxmLl9fRmFsc2UuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3Mg Q0lmck9uZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9f KHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19PbmUgPSBFRklfSUZSX09ORSgpDQoN CisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT25lLkhlYWRlciwg RUZJX0lGUl9PTkVfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0K DQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fT25l LkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJPbmVzKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAg c2VsZi5fX09uZXMgPSBFRklfSUZSX09ORSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fT25lcy5IZWFkZXIsIEVGSV9JRlJfT05FU19PUCkNCg0KKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxm KToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19PbmVzLkhlYWRlcg0KDQorDQoNCisNCg0KK2Ns YXNzIENJZnJaZXJvKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1plcm8gPSBFRklfSUZSX1pF Uk8oKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1plcm8u SGVhZGVyLCBFRklfSUZSX1pFUk9fT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBz ZWxmLl9fWmVyby5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVW5kZWZpbmVkKENJZnJP YmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5v KToNCg0KKyAgICAgICAgc2VsZi5fX1VuZGVmaW5lZCA9IEVGSV9JRlJfWkVSTygpDQoNCisgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVW5kZWZpbmVkLkhlYWRlciwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfVU5ERUZJTkVEX09QKQ0K DQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVh ZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1VuZGVmaW5lZC5IZWFkZXINCg0K Kw0KDQorDQoNCitjbGFzcyBDSWZyVmVyc2lvbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19W ZXJzaW9uID0gRUZJX0lGUl9WRVJTSU9OKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19WZXJzaW9uLkhlYWRlciwgRUZJX0lGUl9WRVJTSU9OX09QKQ0KDQor ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVy KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1ZlcnNpb24uSGVhZGVyDQoNCisNCg0K Kw0KDQorY2xhc3MgQ0lmckxlbmd0aChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19MZW5ndGgg PSBFRklfSUZSX0xFTkdUSCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fTGVuZ3RoLkhlYWRlciwgRUZJX0lGUl9MRU5HVEhfT1ApDQoNCisgICAgICAgIHNl bGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQml0V2lzZU5vdChD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQoNCisgICAgICAgIHNlbGYuX19CaXRXaXNlTm90ID0gRUZJX0lGUl9CSVRXSVNFX05P VCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQml0V2lz ZU5vdC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0JJ VFdJU0VfTk9UX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0K Kw0KDQorY2xhc3MgRXhwcmVzc2lvbkluZm8oKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhz ZWxmKToNCg0KKyAgICAgICAgc2VsZi5Sb290TGV2ZWwgPSAwDQoNCisgICAgICAgIHNlbGYuRXhw T3BDb3VudCA9IDANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNCBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjg5YzllNjdiNTkNCi0tLSAvZGV2L251bGwNCisrKyBi L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KQEAgLTAs MCArMSwxODg3IEBADQorZ3JhbW1hciBWZnJTeW50YXg7DQoNCitvcHRpb25zIHsNCg0KKyAgICBs YW5ndWFnZT1QeXRob247DQoNCit9DQoNCitAaGVhZGVyew0KDQorDQoNCitmcm9tIFZmckNvbXBp bGVyLkNvbW1vbkN0eXBlcyBpbXBvcnQgKg0KDQorZnJvbSBWZnJDb21waWxlci5WZnJGb3JtUGtn IGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmclV0aWxpdHkgaW1wb3J0ICoNCg0KK2Zy b20gVmZyQ29tcGlsZXIuVmZyVHJlZSBpbXBvcnQgKg0KDQorfQ0KDQorDQoNCit2ZnJQcm9ncmFt DQoNCisgICAgOiAgICh2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiB8IHZmckRhdGFTdHJ1Y3REZWZp bml0aW9uIHwgdmZyRGF0YVVuaW9uRGVmaW5pdGlvbikqIHZmckZvcm1TZXREZWZpbml0aW9uDQoN CisgICAgOw0KDQorDQoNCitwcmFnbWFQYWNrU2hvd0RlZg0KDQorICAgIDogICAnc2hvdycNCg0K KyAgICA7DQoNCisNCg0KK3ByYWdtYVBhY2tTdGFja0RlZg0KDQorICAgIDogICAoJ3B1c2gnIHwg J3BvcCcpICAoJywnIFN0cmluZ0lkZW50aWZpZXIpPyAoJywnIE51bWJlcik/DQoNCisgICAgOw0K DQorDQoNCitwcmFnbWFQYWNrTnVtYmVyDQoNCisgICAgOiAgIE51bWJlcj8NCg0KKyAgICA7DQoN CisNCg0KK3ZmclByYWdtYVBhY2tEZWZpbml0aW9uDQoNCisgICAgOiAgICcjcHJhZ21hJyAncGFj aycgJygnDQoNCisgICAgICAgICggICBwcmFnbWFQYWNrU2hvd0RlZg0KDQorICAgICAgICB8ICAg cHJhZ21hUGFja1N0YWNrRGVmDQoNCisgICAgICAgIHwgICBwcmFnbWFQYWNrTnVtYmVyDQoNCisg ICAgICAgICk/DQoNCisgICAgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJEYXRhU3RydWN0RGVm aW5pdGlvbg0KDQorICAgIDogICAoVHlwZURlZik/IFN0cnVjdCBOb25OdkRhdGFNYXA/IE4xPVN0 cmluZ0lkZW50aWZpZXI/ICd7JyB2ZnJEYXRhU3RydWN0RmllbGRzW0ZhbHNlXSAnfScgIE4yPVN0 cmluZ0lkZW50aWZpZXI/ICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyRGF0YVVuaW9uRGVmaW5p dGlvbg0KDQorICAgIDogICAoVHlwZURlZik/IFVuaW9uIE5vbk52RGF0YU1hcD8gTjE9U3RyaW5n SWRlbnRpZmllcj8gJ3snIHZmckRhdGFTdHJ1Y3RGaWVsZHNbVHJ1ZV0nfScgTjI9U3RyaW5nSWRl bnRpZmllcj8gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJEYXRhU3RydWN0RmllbGRzW0ZpZWxk SW5Vbmlvbl0NCg0KKyAgICA6DQoNCisgICAgKCAgIGRhdGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5V bmlvbl0NCg0KKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkMzJbRmllbGRJblVuaW9uXQ0KDQorICAg IHwgICBkYXRhU3RydWN0RmllbGQxNltGaWVsZEluVW5pb25dDQoNCisgICAgfCAgIGRhdGFTdHJ1 Y3RGaWVsZDhbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBkYXRhU3RydWN0RmllbGRCb29sW0Zp ZWxkSW5Vbmlvbl0NCg0KKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlv bl0NCg0KKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkRGF0ZVtGaWVsZEluVW5pb25dDQoNCisgICAg fCAgIGRhdGFTdHJ1Y3RGaWVsZFRpbWVbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBkYXRhU3Ry dWN0RmllbGRSZWZbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBkYXRhU3RydWN0RmllbGRVc2Vy W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICB8ICAgZGF0YVN0cnVjdEJpdEZpZWxkNjRbRmllbGRJblVu aW9uXQ0KDQorICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25dDQoNCisg ICAgfCAgIGRhdGFTdHJ1Y3RCaXRGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICB8ICAgZGF0 YVN0cnVjdEJpdEZpZWxkOFtGaWVsZEluVW5pb25dDQoNCisgICAgKSoNCg0KKyAgICA7DQoNCisN Cg0KK2RhdGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgJ1VJTlQ2NCcg Tj1TdHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KDQorICAgIDsNCg0KKw0K DQorZGF0YVN0cnVjdEZpZWxkMzJbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnVUlOVDMyJyBO PVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQoNCisgICAgOw0KDQorDQoN CitkYXRhU3RydWN0RmllbGQxNltGaWVsZEluVW5pb25dDQoNCisgICAgOiAgICdVSU5UMTYnIE49 U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisNCg0K K2RhdGFTdHJ1Y3RGaWVsZDhbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnVUlOVDgnIE49U3Ry aW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KK2Rh dGFTdHJ1Y3RGaWVsZEJvb2xbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnQk9PTEVBTicgTj1T dHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KDQorICAgIDsNCg0KKw0KDQor ZGF0YVN0cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgJ0VGSV9TVFJJ TkdfSUQnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7 DQoNCisNCg0KK2RhdGFTdHJ1Y3RGaWVsZERhdGVbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAn RUZJX0hJSV9EQVRFJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQoN CisgICAgOw0KDQorDQoNCitkYXRhU3RydWN0RmllbGRUaW1lW0ZpZWxkSW5Vbmlvbl0NCg0KKyAg ICA6ICAgJ0VGSV9ISUlfVElNRScgTj1TdHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ ICc7Jw0KDQorICAgIDsNCg0KKw0KDQorZGF0YVN0cnVjdEZpZWxkUmVmW0ZpZWxkSW5Vbmlvbl0N Cg0KKyAgICA6ICAgJ0VGSV9ISUlfUkVGJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIg J10nKT8gJzsnDQoNCisgICAgOw0KDQorDQoNCitkYXRhU3RydWN0RmllbGRVc2VyW0ZpZWxkSW5V bmlvbl0NCg0KKyAgICA6ICAgVD1TdHJpbmdJZGVudGlmaWVyIE49U3RyaW5nSWRlbnRpZmllciAo J1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KK2RhdGFTdHJ1Y3RCaXRGaWVs ZDY0W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgRD0nVUlOVDY0JyAgTj1TdHJpbmdJZGVudGlm aWVyPyAnOicgTnVtYmVyICc7Jw0KDQorICAgIDsNCg0KK2RhdGFTdHJ1Y3RCaXRGaWVsZDMyW0Zp ZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgRD0nVUlOVDMyJyBOPVN0cmluZ0lkZW50aWZpZXI/ICc6 JyBOdW1iZXIgJzsnDQoNCisgICAgOw0KDQorZGF0YVN0cnVjdEJpdEZpZWxkMTZbRmllbGRJblVu aW9uXQ0KDQorICAgIDogICBEPSdVSU5UMTYnIE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJl ciAnOycNCg0KKyAgICA7DQoNCitkYXRhU3RydWN0Qml0RmllbGQ4W0ZpZWxkSW5Vbmlvbl0NCg0K KyAgICA6ICAgRD0nVUlOVDgnIE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJlciAnOycNCg0K KyAgICA7DQoNCisNCg0KKy8vIDIuNCBWRlIgRm9ybVNldCBEZWZpbml0aW9uDQoNCit2ZnJGb3Jt U2V0RGVmaW5pdGlvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX1NF VF9PUCldDQoNCisgICAgOiAgICdmb3Jtc2V0Jw0KDQorICAgICAgICAnZ3VpZCcgJz0nIGd1aWRE ZWZpbml0aW9uICcsJw0KDQorICAgICAgICAndGl0bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcg TnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcg TnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgKCdjbGFzc2d1aWQnICc9JyBjbGFzc2d1aWREZWZp bml0aW9uW2xvY2FsY3R4Lk5vZGVdICcsJyk/DQoNCisgICAgICAgICgnY2xhc3MnICc9JyBjbGFz c0RlZmluaXRpb24gJywnKT8NCg0KKyAgICAgICAgKCdzdWJjbGFzcycgJz0nIHN1YmNsYXNzRGVm aW5pdGlvbiAnLCcpPw0KDQorICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0K DQorICAgICAgICAnZW5kZm9ybXNldCcgJzsnDQoNCisgICAgOw0KDQorDQoNCitjbGFzc2d1aWRE ZWZpbml0aW9uW05vZGVdDQoNCitsb2NhbHNbR3VpZExpc3Q9W11dDQoNCisgICAgOiAgIGd1aWRE ZWZpbml0aW9uICgnfCcgZ3VpZERlZmluaXRpb24pPyAoJ3wnIGd1aWREZWZpbml0aW9uKT8oJ3wn IGd1aWREZWZpbml0aW9uKT8NCg0KKyAgICA7DQoNCisNCg0KK2NsYXNzRGVmaW5pdGlvbg0KDQor bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKV0NCg0KKyAgICA6ICAgdmFs aWRDbGFzc05hbWVzICgnfCcgdmFsaWRDbGFzc05hbWVzKSoNCg0KKyAgICA7DQoNCisNCg0KK3Zh bGlkQ2xhc3NOYW1lcw0KDQorbG9jYWxzW0NsYXNzTmFtZT0wXQ0KDQorICAgIDogICBDbGFzc05v bkRldmljZQ0KDQorICAgIHwgICBDbGFzc0Rpc2tEZXZpY2UNCg0KKyAgICB8ICAgQ2xhc3NWaWRl b0RldmljZQ0KDQorICAgIHwgICBDbGFzc05ldHdvcmtEZXZpY2UNCg0KKyAgICB8ICAgQ2xhc3NJ bnB1dERldmljZQ0KDQorICAgIHwgICBDbGFzc09uQm9hcmREZXZpY2UNCg0KKyAgICB8ICAgQ2xh c3NPdGhlckRldmljZQ0KDQorICAgIHwgICBOdW1iZXINCg0KKyAgICA7DQoNCisNCg0KK3N1YmNs YXNzRGVmaW5pdGlvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09Q KV0NCg0KKyAgICA6ICAgU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uDQoNCisgICAgfCAgIFN1YmNs YXNzR2VuZXJhbEFwcGxpY2F0aW9uDQoNCisgICAgfCAgIFN1YmNsYXNzRnJvbnRQYWdlDQoNCisg ICAgfCAgIFN1YmNsYXNzU2luZ2xlVXNlDQoNCisgICAgfCAgIE51bWJlcg0KDQorICAgIDsNCg0K Kw0KDQorDQoNCit2ZnJGb3JtU2V0TGlzdFtOb2RlXQ0KDQorICAgIDogKHZmckZvcm1TZXQpKg0K DQorICAgIDsNCg0KKw0KDQorLy8yLjUgVkZSIEZvcm1TZXQgTGlzdCBEZWZpbml0aW9uDQoNCit2 ZnJGb3JtU2V0DQoNCitsb2NhbHNbTm9kZT1Ob25lXQ0KDQorICAgIDoNCg0KKyAgICAoICAgdmZy Rm9ybURlZmluaXRpb24NCg0KKyAgICB8ICAgdmZyRm9ybU1hcERlZmluaXRpb24NCg0KKyAgICB8 ICAgdmZyU3RhdGVtZW50SW1hZ2UNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5l YXINCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkNCg0KKyAgICB8ICAgdmZyU3Rh dGVtZW50VmFyU3RvcmVOYW1lVmFsdWUNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50RGVmYXVsdFN0 b3JlDQoNCisgICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQNCg0KKyAgICB8ICAg dmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0 ZW5zaW9uDQoNCisgICAgKQ0KDQorICAgIDsNCg0KKw0KDQorDQoNCisvLzIuNiBWRlIgRGVmYXVs dCBTdG9yZXMgRGVmaW5pdGlvbg0KDQordmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlDQoNCitsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCldDQoNCisgICAgOiAg ICdkZWZhdWx0c3RvcmUnIE49U3RyaW5nSWRlbnRpZmllciAnLCcNCg0KKyAgICAgICAgJ3Byb21w dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBTPU51bWJlciAnKScNCg0KKyAgICAgICAgKCcsJyAn YXR0cmlidXRlJyAnPScgQT1OdW1iZXIpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KKy8vMi43IFZG UiBWYXJpYWJsZSBTdG9yZSBEZWZpbml0aW9uDQoNCit2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVh cg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9PUCldDQoNCisg ICAgOiAgICd2YXJzdG9yZScNCg0KKyAgICAgICAgKCAgIFROPVN0cmluZ0lkZW50aWZpZXIgJywn DQoNCisgICAgICAgIHwgICAnVUlOVDgnICcsJw0KDQorICAgICAgICB8ICAgJ1VJTlQxNicgJywn DQoNCisgICAgICAgIHwgICAnVUlOVDMyJyAnLCcNCg0KKyAgICAgICAgfCAgICdVSU5UNjQnICcs Jw0KDQorICAgICAgICB8ICAgJ0VGSV9ISUlfREFURScgJywnDQoNCisgICAgICAgIHwgICAnRUZJ X0hJSV9USU1FJyAnLCcNCg0KKyAgICAgICAgfCAgICdFRklfSElJX1JFRicgJywnDQoNCisgICAg ICAgICkNCg0KKyAgICAgICAgKCd2YXJpZCcgJz0nIElEPU51bWJlciAnLCcpPw0KDQorICAgICAg ICAnbmFtZScgJz0nIFNOPVN0cmluZ0lkZW50aWZpZXIgJywnDQoNCisgICAgICAgICdndWlkJyAn PScgZ3VpZERlZmluaXRpb24gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRWYXJT dG9yZUVmaQ0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9FRklf T1ApXQ0KDQorICAgIDogICAnZWZpdmFyc3RvcmUnDQoNCisgICAgICAgICggICBUTj1TdHJpbmdJ ZGVudGlmaWVyICcsJw0KDQorICAgICAgICB8ICAgJ1VJTlQ4JyAnLCcNCg0KKyAgICAgICAgfCAg ICdVSU5UMTYnICcsJw0KDQorICAgICAgICB8ICAgJ1VJTlQzMicgJywnDQoNCisgICAgICAgIHwg ICAnVUlOVDY0JyAnLCcNCg0KKyAgICAgICAgfCAgICdFRklfSElJX0RBVEUnICcsJw0KDQorICAg ICAgICB8ICAgJ0VGSV9ISUlfVElNRScgJywnDQoNCisgICAgICAgIHwgICAnRUZJX0hJSV9SRUYn ICcsJw0KDQorICAgICAgICApDQoNCisgICAgICAgICgndmFyaWQnICc9JyBJRD1OdW1iZXIgJywn KT8NCg0KKyAgICAgICAgJ2F0dHJpYnV0ZScgJz0nIHZmclZhclN0b3JlRWZpQXR0ciAoJ3wnIHZm clZhclN0b3JlRWZpQXR0cikqICcsJw0KDQorICAgICAgICAoICAgJ25hbWUnICc9JyBTTj1TdHJp bmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICB8ICAgJ25hbWUnICc9JyAnU1RSSU5HX1RPS0VO JyAnKCcgVk49TnVtYmVyICcpJyAnLCcgICd2YXJzaXplJyAnPScgTj1OdW1iZXIgJywnDQoNCisg ICAgICAgICkNCg0KKyAgICAgICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCg0KKyAg ICA7DQoNCisNCg0KK3ZmclZhclN0b3JlRWZpQXR0cg0KDQorbG9jYWxzW0F0dHI9MF0NCg0KKyAg ICA6ICAgTnVtYmVyOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZQ0KDQor bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QKV0N Cg0KKyAgICA6ICAgJ25hbWV2YWx1ZXZhcnN0b3JlJyBTTj1TdHJpbmdJZGVudGlmaWVyICcsJw0K DQorICAgICAgICAoJ3ZhcmlkJyAnPScgSUQ9TnVtYmVyICcsJyk/DQoNCisgICAgICAgICgnbmFt ZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJykrDQoNCisgICAgICAgICdn dWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1l bnREaXNhYmxlSWZGb3JtU2V0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RJ U0FCTEVfSUZfT1ApXQ0KDQorICAgIDogICAnZGlzYWJsZWlmJyB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uICc7Jw0KDQorICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAg ICAgICAnZW5kaWYnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3VwcHJlc3NJ ZkZvcm1TZXQNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZf T1ApXQ0KDQorICAgIDogICAnc3VwcHJlc3NpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycN Cg0KKyAgICAgICAgdmZyRm9ybVNldExpc3RbbG9jYWxjdHguTm9kZV0NCg0KKyAgICAgICAgJ2Vu ZGlmJyAnOycNCg0KKyAgICA7DQoNCisNCg0KK2d1aWRTdWJEZWZpbml0aW9uW0d1aWRdDQoNCisg ICAgOiAgIE51bWJlciAnLCcgTnVtYmVyICcsJyBOdW1iZXIgJywnIE51bWJlciAnLCcNCg0KKyAg ICAgICAgTnVtYmVyICcsJyBOdW1iZXIgJywnIE51bWJlciAnLCcgTnVtYmVyDQoNCisgICAgOw0K DQorDQoNCitndWlkRGVmaW5pdGlvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoKSwgR3Vp ZD1FRklfR1VJRCgpXQ0KDQorICAgIDogICAneycNCg0KKyAgICAgICAgTnVtYmVyICcsJyBOdW1i ZXIgJywnIE51bWJlciAnLCcNCg0KKyAgICAgICAgKCAgICd7JyBndWlkU3ViRGVmaW5pdGlvblts b2NhbGN0eC5HdWlkXSAnfScNCg0KKyAgICAgICAgfCAgIGd1aWRTdWJEZWZpbml0aW9uW2xvY2Fs Y3R4Lkd1aWRdDQoNCisgICAgICAgICkNCg0KKyAgICAgICAgJ30nDQoNCisgICAgOw0KDQorDQoN CitnZXRTdHJpbmdJZA0KDQorbG9jYWxzW1N0cmluZ0lkPScnXQ0KDQorICAgIDogICAnU1RSSU5H X1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KDQorICAgIDsNCg0KKw0KDQordmZyUXVlc3Rpb25IZWFk ZXJbT3BPYmosIFFUeXBlXQ0KDQorICAgIDogICB2ZnJRdWVzdGlvbkJhc2VJbmZvW09wT2JqLCBR VHlwZV0NCg0KKyAgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW09wT2JqXQ0KDQorICAgIDsNCg0K Kw0KDQordmZyUXVlc3Rpb25CYXNlSW5mb1tPcE9iaiwgUVR5cGVdDQoNCitsb2NhbHNbQmFzZUlu Zm89RUZJX1ZBUlNUT1JFX0lORk8oKSwgUUlkPUVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBDaGVj a0ZsYWc9VHJ1ZV0NCg0KKyAgICA6ICAgKCduYW1lJyAnPScgUU49U3RyaW5nSWRlbnRpZmllciAn LCcpPw0KDQorICAgICAgICAoJ3ZhcmlkJyAnPScgdmZyU3RvcmFnZVZhcklkW2xvY2FsY3R4LkJh c2VJbmZvLCBsb2NhbGN0eC5DaGVja0ZsYWddICcsJyk/DQoNCisgICAgICAgICgncXVlc3Rpb25p ZCcgJz0nIElEPU51bWJlciAnLCcpPw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50SGVh ZGVyW09wT2JqXQ0KDQorICAgIDogICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51 bWJlciAnKScgJywnDQoNCisgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51 bWJlciAnKScNCg0KKyAgICA7DQoNCisNCg0KK3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KDQor bG9jYWxzW1FIRmxhZz0wXQ0KDQorICAgIDogICBSZWFkT25seUZsYWcNCg0KKyAgICB8ICAgSW50 ZXJhY3RpdmVGbGFnDQoNCisgICAgfCAgIFJlc2V0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIFJl c3RTdHlsZUZsYWcNCg0KKyAgICB8ICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAg IE89T3B0aW9uT25seUZsYWcNCg0KKyAgICB8ICAgTj1OVkFjY2Vzc0ZsYWcNCg0KKyAgICB8ICAg TD1MYXRlQ2hlY2tGbGFnDQoNCisgICAgOw0KDQorLy8yLjEwLjUNCg0KK3ZmclN0b3JhZ2VWYXJJ ZFtCYXNlSW5mbywgQ2hlY2tGbGFnXQ0KDQorbG9jYWxzW1ZhcklkU3RyPScnXQ0KDQorICAgIDog ICAoU04xPVN0cmluZ0lkZW50aWZpZXIgJ1snIEk9TnVtYmVyICddJykgICAgIyB2ZnJTdG9yYWdl VmFySWRSdWxlMQ0KDQorICAgIHwgICAoU04yPVN0cmluZ0lkZW50aWZpZXIgKCcuJyBhcnJheU5h bWUpKiApICMgdmZyU3RvcmFnZVZhcklkUnVsZTINCg0KKyAgICA7DQoNCisNCg0KK3ZmckNvbnN0 YW50VmFsdWVGaWVsZA0KDQorbG9jYWxzW1ZhbHVlPUVGSV9JRlJfVFlQRV9WQUxVRSgpLCBWYWx1 ZUxpc3Q9W10sIExpc3RUeXBlPUZhbHNlXQ0KDQorICAgIDogICAoJy0nKT8gTnVtYmVyDQoNCisg ICAgfCAgICdUUlVFJw0KDQorICAgIHwgICAnRkFMU0UnDQoNCisgICAgfCAgICdPTkUnDQoNCisg ICAgfCAgICdPTkVTJw0KDQorICAgIHwgICAnWkVSTycNCg0KKyAgICB8ICAgTnVtYmVyICc6JyBO dW1iZXIgJzonIE51bWJlcg0KDQorICAgIHwgICBOdW1iZXIgJy8nIE51bWJlciAnLycgTnVtYmVy DQoNCisgICAgfCAgIE51bWJlciAnOycgTnVtYmVyICc7JyBndWlkRGVmaW5pdGlvbiAnOycgJ1NU UklOR19UT0tFTicgJygnIE51bWJlciAnKScNCg0KKyAgICB8ICAgJ1NUUklOR19UT0tFTicgJygn IE51bWJlciAnKScNCg0KKyAgICB8ICAgJ3snIE51bWJlciAoJywnIE51bWJlcikqICd9Jw0KDQor ICAgIDsNCg0KKw0KDQordmZySW1hZ2VUYWcNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVG SV9JRlJfSU1BR0VfT1ApXQ0KDQorICAgIDogICAnaW1hZ2UnICc9JyAnSU1BR0VfVE9LRU4nICco JyBOdW1iZXIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJMb2NrZWRUYWcNCg0KK2xvY2Fsc1tO b2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfTE9DS0VEX09QKV0NCg0KKyAgICA6ICAgJ2xvY2tlZCcN Cg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFN0YXRUYWcNCg0KK2xvY2Fsc1tOb2RlXQ0K DQorICAgIDogICB2ZnJJbWFnZVRhZyB8IHZmckxvY2tlZFRhZw0KDQorICAgIDsNCg0KKw0KDQor dmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RbTm9kZV0NCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50U3Rh dFRhZyAoJywnIHZmclN0YXRlbWVudFN0YXRUYWcpKg0KDQorICAgIDsNCg0KKw0KDQordmZyRm9y bURlZmluaXRpb24NCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9PUCld DQoNCisgICAgOiAgICdmb3JtJyAnZm9ybWlkJyAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAn dGl0bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnOycNCg0KKyAgICAgICAg KHZmckZvcm0pKg0KDQorICAgICAgICAnZW5kZm9ybScgJzsnDQoNCisgICAgOw0KDQorDQoNCit2 ZnJGb3JtDQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6DQoNCisgICAgKCAgIHZmclN0YXRlbWVu dEltYWdlDQoNCisgICAgfCAgIHZmclN0YXRlbWVudExvY2tlZA0KDQorICAgIHwgICB2ZnJTdGF0 ZW1lbnRSdWxlcw0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnREZWZhdWx0DQoNCisgICAgfCAgIHZm clN0YXRlbWVudFN0YXQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25zDQoNCisgICAg fCAgIHZmclN0YXRlbWVudENvbmRpdGlvbmFsDQoNCisgICAgfCAgIHZmclN0YXRlbWVudExhYmVs DQoNCisgICAgfCAgIHZmclN0YXRlbWVudEJhbm5lcg0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRJ bnZhbGlkDQoNCisgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorICAgIHwgICB2ZnJT dGF0ZW1lbnRNb2RhbA0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQgJzsnDQoN CisgICAgKQ0KDQorICAgIDsNCg0KKw0KDQordmZyRm9ybU1hcERlZmluaXRpb24NCg0KK2xvY2Fs c1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9NQVBfT1ApXQ0KDQorICAgIDogICAnZm9y bW1hcCcgJ2Zvcm1pZCcgJz0nIFMxPU51bWJlciAnLCcNCg0KKyAgICAgICAgKCAgICdtYXB0aXRs ZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICc7Jw0KDQorICAgICAgICAgICAg J21hcGd1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCg0KKyAgICAgICAgKSoNCg0KKyAgICAg ICAgKHZmckZvcm0pKg0KDQorICAgICAgICAnZW5kZm9ybScgJzsnDQoNCisgICAgOw0KDQorDQoN Cit2ZnJTdGF0ZW1lbnRJbWFnZQ0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmckltYWdl VGFnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50TG9ja2VkDQoNCitsb2NhbHNb Tm9kZV0NCg0KKyAgICA6ICAgdmZyTG9ja2VkVGFnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZy U3RhdGVtZW50UnVsZXMNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUlVMRV9P UCldDQoNCisgICAgOiAgICdydWxlJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICB2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCisgICAgICAgICdlbmRydWxlJyAnOycNCg0KKyAgICA7 DQoNCisNCg0KK3ZmclN0YXRlbWVudFN0YXQNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2 ZnJTdGF0ZW1lbnRTdWJUaXRsZQ0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQoN CisgICAgfCAgIHZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlDQoNCisgICAgOw0KDQorDQoNCit2 ZnJTdGF0ZW1lbnRTdWJUaXRsZQ0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9T VUJUSVRMRV9PUCksIE9wT2JqPUNJZnJTdWJ0aXRsZSgpXQ0KDQorICAgIDogICAnc3VidGl0bGUn DQoNCisNCg0KKyAgICAgICAgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcp Jw0KDQorICAgICAgICAoJywnICdmbGFncycgJz0nIHZmclN1YnRpdGxlRmxhZ3MpPw0KDQorICAg ICAgICAoICAgKCcsJyB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtsb2NhbGN0eC5Ob2RlXSk/ICc7 Jw0KDQorICAgICAgICB8DQoNCisgICAgICAgICAgICAoJywnIHZmclN0YXRlbWVudFN0YXRUYWdM aXN0W2xvY2FsY3R4Lk5vZGVdKT8NCg0KKyAgICAgICAgICAgICgnLCcgKHZmclN0YXRlbWVudFN1 YlRpdGxlQ29tcG9uZW50KSogKT8NCg0KKyAgICAgICAgICAgICdlbmRzdWJ0aXRsZScgJzsnDQoN CisgICAgICAgICkNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9u ZW50DQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6ICB2ZnJTdGF0ZW1lbnRTdGF0IHwgdmZyU3Rh dGVtZW50UXVlc3Rpb25zDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdWJ0aXRsZUZsYWdzDQoNCits b2NhbHNbU3ViRmxhZ3M9MF0NCg0KKyAgICA6ICAgc3VidGl0bGVGbGFnc0ZpZWxkICgnfCcgc3Vi dGl0bGVGbGFnc0ZpZWxkKSoNCg0KKyAgICA7DQoNCitzdWJ0aXRsZUZsYWdzRmllbGQNCg0KK2xv Y2Fsc1tGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlciB8ICdIT1JJWk9OVEFMJw0KDQorICAgIDsN Cg0KKw0KDQordmZyU3RhdGVtZW50U3RhdGljVGV4dA0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5v ZGUoRUZJX0lGUl9URVhUX09QKV0NCg0KKyAgICA6ICAgJ3RleHQnDQoNCisgICAgICAgICdoZWxw JyAnPScgJ1NUUklOR19UT0tFTicgJygnIFMxPU51bWJlciAnKScgJywnDQoNCisgICAgICAgICd0 ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIFMyPU51bWJlciAnKScNCg0KKyAgICAgICAgKCcs JyAndGV4dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBTMz1OdW1iZXIgJyknKT8NCg0KKyAgICAg ICAgKCcsJyBGPSdmbGFncycgJz0nIHN0YXRpY1RleHRGbGFnc0ZpZWxkICgnfCcgc3RhdGljVGV4 dEZsYWdzRmllbGQpKiAnLCcgJ2tleScgJz0nIFM0PU51bWJlcik/DQoNCisgICAgICAgICgnLCcg dmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RbbG9jYWxjdHguTm9kZV0pPyAnOycNCg0KKyAgICA7DQoN CisNCg0KK3N0YXRpY1RleHRGbGFnc0ZpZWxkDQoNCitsb2NhbHNbRmxhZz0wXQ0KDQorICAgIDog ICBOPU51bWJlciB8IHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KDQorICAgIDsNCg0KKw0KDQor dmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2UNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2 ZnJTdGF0ZW1lbnRHb3RvIHwgdmZyU3RhdGVtZW50UmVzZXRCdXR0b24NCg0KKyAgICA7DQoNCisN Cg0KK3ZmclN0YXRlbWVudEdvdG8NCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJf UkVGX09QKSwgT3BPYmo9Tm9uZSwgT0hPYmo9Tm9uZSwgUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5R VUVTVElPTl9SRUZdDQoNCisgICAgOiAgICdnb3RvJw0KDQorICAgICAgICAoICAgKCAgIERldmlj ZVBhdGggJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAgICAgICAg ICAgICAgIEZvcm1TZXRHdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcNCg0KKyAgICAgICAgICAg ICAgICBGb3JtSWQgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgICAgICAgICBRdWVzdGlvbiAn PScgTnVtYmVyICcsJw0KDQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0KDQorICAg ICAgICAgICAgKCAgIEZvcm1TZXRHdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcNCg0KKyAgICAg ICAgICAgICAgICBGb3JtSWQgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgICAgICAgICBRdWVz dGlvbiAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0K DQorICAgICAgICAgICAgKCAgIEZvcm1JZCAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAgICAg ICAgIFF1ZXN0aW9uICc9JyAoUU49U3RyaW5nSWRlbnRpZmllciAnLCcgfCBOdW1iZXIgJywnKQ0K DQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0KDQorICAgICAgICAgICAgKCAgIE51 bWJlciAnLCcgKQ0KDQorICAgICAgICApPw0KDQorICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlclts b2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdDQoNCisgICAgICAgICgnLCcgJ2ZsYWdzJyAn PScgdmZyR290b0ZsYWdzW2xvY2FsY3R4Lk9wT2JqXSk/DQoNCisgICAgICAgICgnLCcgJ2tleScg Jz0nIE51bWJlcik/DQoNCisgICAgICAgICgnLCcgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0W2xvY2FsY3R4Lk5vZGVdKT8gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJHb3RvRmxhZ3Nb T2JqXQ0KDQorbG9jYWxzW0dvdG9GbGFncz0wXQ0KDQorICAgIDogICBnb3RvRmxhZ3NGaWVsZCgn fCcgZ290b0ZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQorZ290b0ZsYWdzRmllbGQNCg0K K2xvY2Fsc1tGbGFnPTBdDQoNCisgICAgOiAgTj1OdW1iZXIgfCBxdWVzdGlvbmhlYWRlckZsYWdz RmllbGQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFJlc2V0QnV0dG9uDQoNCitsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1JFU0VUX0JVVFRPTl9PUCksIE9wT2JqPUNJZnJS ZXNldEJ1dHRvbigpXQ0KDQorICAgIDogICdyZXNldGJ1dHRvbicNCg0KKyAgICAgICAnZGVmYXVs dHN0b3JlJyAnPScgTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgIHZmclN0YXRlbWVu dEhlYWRlcltsb2NhbGN0eC5PcE9ial0gJywnDQoNCisgICAgICAgKHZmclN0YXRlbWVudFN0YXRU YWdMaXN0W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQoNCisgICAgICAgJ2VuZHJlc2V0YnV0dG9uJyAn OycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFF1ZXN0aW9ucw0KDQorbG9jYWxzW05v ZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVudEJvb2xlYW5UeXBlDQoNCisgICAgfCAgIHZmclN0 YXRlbWVudERhdGUNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUNCg0KKyAgICB8 ICAgdmZyU3RhdGVtZW50U3RyaW5nVHlwZQ0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRPcmRlcmVk TGlzdA0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRUaW1lDQoNCisgICAgOw0KDQorDQoNCit2ZnJT dGF0ZW1lbnRRdWVzdGlvblRhZw0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRl bWVudFN0YXRUYWcgJywnDQoNCisgICAgfCAgIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmDQoN CisgICAgfCAgIHZmclN0YXRlbWVudE5vU3VibWl0SWYNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50 RGlzYWJsZUlmUXVlc3QNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50UmVmcmVzaA0KDQorICAgIHwg ICB2ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZQ0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRFeHRl bnNpb24NCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50DQoNCisgICAgfCAgIHZm clN0YXRlbWVudFdhcm5pbmdJZg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWYNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05TSVNURU5U X0lGX09QKV0NCg0KKyAgICA6ICAgJ2luY29uc2lzdGVudGlmJw0KDQorICAgICAgICAncHJvbXB0 JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQoNCisgICAgICAgICgnZmxh Z3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZm clN0YXRlbWVudEV4cHJlc3Npb24NCg0KKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCg0KKyAgICA7 DQoNCisNCg0KK3ZmclN0YXRlbWVudE5vU3VibWl0SWYNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVO b2RlKEVGSV9JRlJfTk9fU1VCTUlUX0lGX09QKV0NCg0KKyAgICA6ICAgJ25vc3VibWl0aWYnDQoN CisgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cg0KKyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSogJywn KT8NCg0KKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KDQorICAgICAgICAnZW5kaWYn ICgnOycpPw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCg0K K2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCldDQoNCisgICAg OiAgICdkaXNhYmxlaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgICAgIHZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAn ZW5kaWYnICgnOycpPw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50UmVmcmVzaA0KDQor bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9SRUZSRVNIX09QKV0NCg0KKyAgICA6ICAg J3JlZnJlc2gnICdpbnRlcnZhbCcgJz0nIE51bWJlcg0KDQorICAgIDsNCg0KKw0KDQordmZyU3Rh dGVtZW50VmFyc3RvcmVEZXZpY2UNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJf VkFSU1RPUkVfREVWSUNFX09QKV0NCg0KKyAgICA6ICAgJ3ZhcnN0b3JlZGV2aWNlJyAnPScgJ1NU UklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0 ZW1lbnRSZWZyZXNoRXZlbnQNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUkVG UkVTSF9JRF9PUCldDQoNCisgICAgOiAgICdyZWZyZXNoZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9u ICcsJw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50V2FybmluZ0lmDQoNCitsb2NhbHNb Tm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1dBUk5JTkdfSUZfT1ApXQ0KDQorICAgIDogICAnd2Fy bmluZ2lmJw0KDQorICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJl ciAnKScgJywnDQoNCisgICAgICAgICgndGltZW91dCcgJz0nIE51bWJlciAnLCcpPw0KDQorICAg ICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCisgICAgICAgICdlbmRpZicgKCc7Jyk/DQoN CisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RbTm9kZV0NCg0KKyAg ICA6ICAgKHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKSoNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnDQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6ICAgdmZy U3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQoNCisgICAgfCAgIHZmclN0YXRlbWVudEdyYXlPdXRJ ZlF1ZXN0DQoNCisgICAgfCAgIHZmclN0YXRlbWVudFZhbHVlDQoNCisgICAgfCAgIHZmclN0YXRl bWVudERlZmF1bHQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50T3B0aW9ucw0KDQorICAgIHwgICB2 ZnJTdGF0ZW1lbnRSZWFkDQoNCisgICAgfCAgIHZmclN0YXRlbWVudFdyaXRlDQoNCisgICAgOw0K DQorDQoNCitmbGFnc0ZpZWxkDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICBJbnRlcmFj dGl2ZUZsYWcNCg0KKyAgICB8ICAgTWFudWZhY3R1cmluZ0ZsYWcNCg0KKyAgICB8ICAgRGVmYXVs dEZsYWcNCg0KKyAgICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCg0KKyAgICB8ICAgUmVjb25uZWN0 UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIE49TlZBY2Nlc3NGbGFnDQoNCisgICAgfCAgIEw9TGF0 ZUNoZWNrRmxhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0 DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKV0NCg0K KyAgICA6ICAgJ3N1cHByZXNzaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAg ICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCApKiAnLCcpPw0KDQor ICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCg0K KyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudEdy YXlPdXRJZlF1ZXN0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNT X0lGX09QKV0NCg0KKyAgICA6ICAgJ2dyYXlvdXRpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAn OycNCg0KKyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkICkq ICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0 eC5Ob2RlXQ0KDQorICAgICAgICAnZW5kaWYnICgnOycpPw0KDQorICAgIDsNCg0KKw0KDQorDQoN Cit2ZnJTdGF0ZW1lbnREZWZhdWx0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZS X0RFRkFVTFRfT1ApXQ0KDQorICAgIDogICBEPSdkZWZhdWx0Jw0KDQorICAgICAgICAoICAgKCAg IHZmclN0YXRlbWVudFZhbHVlICcsJw0KDQorICAgICAgICAgICAgfCAgICc9JyB2ZnJDb25zdGFu dFZhbHVlRmllbGQgJywnDQoNCisgICAgICAgICAgICApDQoNCisgICAgICAgICAgICAoICAgJ2Rl ZmF1bHRzdG9yZScgJz0nIFNOPVN0cmluZ0lkZW50aWZpZXIgJywnDQoNCisgICAgICAgICAgICAp Pw0KDQorICAgICAgICApDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRWYWx1ZQ0KDQor bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQUxVRV9PUCldDQoNCisgICAgOiAgICd2 YWx1ZScgJz0nIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0 YXRlbWVudE9wdGlvbnMNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2ZnJTdGF0ZW1lbnRP bmVPZk9wdGlvbg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50T25lT2ZPcHRpb24NCg0K K2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09GX09QVElPTl9PUCldDQoNCisg ICAgOiAgICdvcHRpb24nDQoNCisgICAgICAgICd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygn IE51bWJlciAnKScgJywnDQoNCisgICAgICAgICd2YWx1ZScgJz0nIHZmckNvbnN0YW50VmFsdWVG aWVsZCAnLCcNCg0KKyAgICAgICAgRj0nZmxhZ3MnICc9JyB2ZnJPbmVPZk9wdGlvbkZsYWdzICgn LCcgJ2tleScgJz0nIEtOPU51bWJlcikgPyAoJywnIHZmckltYWdlVGFnKSogJzsnDQoNCisgICAg Ow0KDQorDQoNCit2ZnJPbmVPZk9wdGlvbkZsYWdzDQoNCitsb2NhbHNbSEZsYWdzPTAsIExGbGFn cz0wXQ0KDQorICAgIDogICBvbmVvZm9wdGlvbkZsYWdzRmllbGQgKCd8JyBvbmVvZm9wdGlvbkZs YWdzRmllbGQpKjsNCg0KKw0KDQorb25lb2ZvcHRpb25GbGFnc0ZpZWxkDQoNCisJbG9jYWxzW0hG bGFnPTAsIExGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICBPcHRpb25EZWZh dWx0DQoNCisgICAgfCAgIE9wdGlvbkRlZmF1bHRNZmcNCg0KKyAgICB8ICAgSW50ZXJhY3RpdmVG bGFnDQoNCisgICAgfCAgIFJlc2V0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIFJlc3RTdHlsZUZs YWcNCg0KKyAgICB8ICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIE1hbnVmYWN0 dXJpbmdGbGFnDQoNCisgICAgfCAgIERlZmF1bHRGbGFnDQoNCisgICAgfCAgIEE9TlZBY2Nlc3NG bGFnDQoNCisgICAgfCAgIEw9TGF0ZUNoZWNrRmxhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3Rh dGVtZW50UmVhZA0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9SRUFEX09QKV0N Cg0KKyAgICA6ICAgJ3JlYWQnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgOw0K DQorDQoNCit2ZnJTdGF0ZW1lbnRXcml0ZQ0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9XUklURV9PUCldDQoNCisgICAgOiAgICd3cml0ZScgdmZyU3RhdGVtZW50RXhwcmVzc2lv biAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtO b2RlXQ0KDQorICAgIDogICAodmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24pKg0KDQorICAgIDsN Cg0KKw0KDQorDQoNCisNCg0KK3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uDQoNCitsb2NhbHNb Tm9kZV0NCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcgfCB2ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvblRhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50Qm9vbGVhblR5 cGUNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2ZnJTdGF0ZW1lbnRDaGVja0JveCB8IHZm clN0YXRlbWVudEFjdGlvbg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50Q2hlY2tCb3gN Cg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tCT1hfT1ApLCBPcE9iaj1D SWZyQ2hlY2tCb3goKSwgUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQoN CisgICAgOiAgIEw9J2NoZWNrYm94Jw0KDQorICAgICAgICB2ZnJRdWVzdGlvbkJhc2VJbmZvW2xv Y2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0NCg0KKyAgICAgICAgdmZyU3RhdGVtZW50SGVh ZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCg0KKyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyQ2hl Y2tCb3hGbGFncyAnLCcpPw0KDQorICAgICAgICAoJ2tleScgJz0nIE51bWJlciAnLCcpPw0KDQor ICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCg0K KyAgICAgICAgJ2VuZGNoZWNrYm94JyAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmckNoZWNrQm94 RmxhZ3MNCg0KK2xvY2Fsc1tMRmxhZ3M9MCwgSEZsYWdzPTBdDQoNCisgICAgOiAgIGNoZWNrYm94 RmxhZ3NGaWVsZCAoJ3wnIGNoZWNrYm94RmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorDQoNCitj aGVja2JveEZsYWdzRmllbGQNCg0KK2xvY2Fsc1tMRmxhZz0wLCBIRmxhZz0wXQ0KDQorICAgIDog ICBOdW1iZXINCg0KKyAgICB8ICAgRD0nREVGQVVMVCcNCg0KKyAgICB8ICAgTT0nTUFOVUZBQ1RV UklORycNCg0KKyAgICB8ICAgJ0NIRUNLQk9YX0RFRkFVTFQnDQoNCisgICAgfCAgICdDSEVDS0JP WF9ERUZBVUxUX01GRycNCg0KKyAgICB8ICAgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQoNCisg ICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRBY3Rpb24NCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVO b2RlKEVGSV9JRlJfQUNUSU9OX09QKSxPcE9iaj1DSWZyQWN0aW9uKCksIFFUeXBlPUVGSV9RVUVT SU9OX1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KDQorICAgIDogICAnYWN0aW9uJw0KDQorICAgICAg ICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0K DQorICAgICAgICAoJ2ZsYWdzJyAnPScgdmZyQWN0aW9uRmxhZ3MgJywnKT8NCg0KKyAgICAgICAg J2NvbmZpZycgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAgICAg ICB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RbbG9jYWxjdHguTm9kZV0NCg0KKyAgICAgICAg J2VuZGFjdGlvbicgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJBY3Rpb25GbGFncw0KDQorbG9j YWxzW0hGbGFncz0wXQ0KDQorICAgIDogICBhY3Rpb25GbGFnc0ZpZWxkICgnfCcgYWN0aW9uRmxh Z3NGaWVsZCkqDQoNCisgICAgOw0KDQorYWN0aW9uRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hGbGFn PTBdDQoNCisgICAgOiAgIE49TnVtYmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQoNCisg ICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0KDQorbG9jYWxzW05vZGVdDQoN CisgICAgOiAgIHZmclN0YXRlbWVudE51bWVyaWMgfCB2ZnJTdGF0ZW1lbnRPbmVPZg0KDQorICAg IDsNCg0KKw0KDQordmZyU3RhdGVtZW50TnVtZXJpYw0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5v ZGUoRUZJX0lGUl9OVU1FUklDX09QKSwgT3BPYmo9Q0lmck51bWVyaWMoKSwgUVR5cGU9RUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQoNCisgICAgOiAgICdudW1lcmljJw0KDQorICAg ICAgICB2ZnJRdWVzdGlvbkJhc2VJbmZvW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0N Cg0KKyAgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCg0KKyAg ICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyTnVtZXJpY0ZsYWdzICcsJyk/DQoNCisgICAgICAgICgn a2V5JyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAgIHZmclNldE1pbk1heFN0ZXBbbG9jYWxj dHguT3BPYmpdDQoNCisgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2Nh bGN0eC5Ob2RlXQ0KDQorICAgICAgICAnZW5kbnVtZXJpYycgJzsnDQoNCisgICAgOw0KDQorDQoN Cit2ZnJTZXRNaW5NYXhTdGVwW09wT2JqXSAvLyBDSWZyTWluTWF4U3RlcERhdGENCg0KKyAgICA6 ICAgJ21pbmltdW0nICc9JyAoTjE9Jy0nKT8gST1OdW1iZXIgJywnDQoNCisgICAgICAgICdtYXhp bXVtJyAnPScgKE4yPSctJyk/IEE9TnVtYmVyICcsJw0KDQorICAgICAgICAoJ3N0ZXAnICc9JyBT PU51bWJlciAnLCcpPw0KDQorICAgIDsNCg0KKw0KDQordmZyTnVtZXJpY0ZsYWdzDQoNCitsb2Nh bHNbSEZsYWdzPTAsIExGbGFncz0wLElzRGlzcGxheVNwZWNpZmllZD1GYWxzZV0NCg0KKyAgICA6 ICAgbnVtZXJpY0ZsYWdzRmllbGQgKCd8JyBudW1lcmljRmxhZ3NGaWVsZCkqDQoNCisgICAgOw0K DQorDQoNCitudW1lcmljRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hGbGFnPTAsSXNTZXRUeXBlPUZh bHNlLElzRGlzcGxheVNwZWNpZmllZD1GYWxzZV0NCg0KKyAgICA6ICAgTj1OdW1iZXINCg0KKyAg ICB8ICAgJ05VTUVSSUNfU0laRV8xJw0KDQorICAgIHwgICAnTlVNRVJJQ19TSVpFXzInDQoNCisg ICAgfCAgICdOVU1FUklDX1NJWkVfNCcNCg0KKyAgICB8ICAgJ05VTUVSSUNfU0laRV84Jw0KDQor ICAgIHwgICAnRElTUExBWV9JTlRfREVDJw0KDQorICAgIHwgICAnRElTUExBWV9VSU5UX0RFQycN Cg0KKyAgICB8ICAgJ0RJU1BMQVlfVUlOVF9IRVgnDQoNCisgICAgfCAgIHF1ZXN0aW9uaGVhZGVy RmxhZ3NGaWVsZA0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50T25lT2YNCg0KK2xvY2Fs c1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09GX09QKSwgT3BPYmo9Q0lmck9uZU9mKCks IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KDQorICAgIDogICAnb25l b2YnDQoNCisgICAgICAgIHZmclF1ZXN0aW9uQmFzZUluZm9bbG9jYWxjdHguT3BPYmosIGxvY2Fs Y3R4LlFUeXBlXQ0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbbG9jYWxjdHguT3BPYmpd ICcsJw0KDQorICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJPbmVvZkZsYWdzRmllbGQgJywnKT8N Cg0KKyAgICAgICAgKHZmclNldE1pbk1heFN0ZXBbbG9jYWxjdHguT3BPYmpdKT8NCg0KKyAgICAg ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQoNCisgICAg ICAgICdlbmRvbmVvZicgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJPbmVvZkZsYWdzRmllbGQN Cg0KK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBdDQoNCisgICAgOiAgIG51bWVyaWNGbGFnc0Zp ZWxkICgnfCcgbnVtZXJpY0ZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVt ZW50U3RyaW5nVHlwZQ0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVudFN0 cmluZyB8IHZmclN0YXRlbWVudFBhc3N3b3JkDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1l bnRTdHJpbmcNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfU1RSSU5HX09QKSwg T3BPYmo9Q0lmclN0cmluZygpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1B TF0NCg0KKyAgICA6ICAgJ3N0cmluZycNCg0KKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9j YWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXSAnLCcNCg0KKyAgICAgICAgKEY9J2ZsYWdzJyAn PScgdmZyU3RyaW5nRmxhZ3NGaWVsZCAnLCcpPw0KDQorICAgICAgICAoJ2tleScgJz0nIE51bWJl ciAnLCcpPw0KDQorICAgICAgICBNaW49J21pbnNpemUnICc9JyBOdW1iZXIgJywnDQoNCisgICAg ICAgIE1heD0nbWF4c2l6ZScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgdmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQoNCisgICAgICAgICdlbmRzdHJpbmcn ICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RyaW5nRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hG bGFncz0wLCBMRmxhZ3M9MF0NCg0KKyAgICA6ICAgc3RyaW5nRmxhZ3NGaWVsZCAoJ3wnIHN0cmlu Z0ZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQorc3RyaW5nRmxhZ3NGaWVsZA0KDQorbG9j YWxzW0hGbGFnPTAsIExGbGFnPTBdDQoNCisgICAgOiAgIE49TnVtYmVyDQoNCisgICAgfCAgICdN VUxUSV9MSU5FJw0KDQorICAgIHwgICBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCg0KKyAgICA7 DQoNCisNCg0KK3ZmclN0YXRlbWVudFBhc3N3b3JkDQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9k ZShFRklfSUZSX1BBU1NXT1JEX09QKSwgT3BPYmo9Q0lmclBhc3N3b3JkKCksIFFUeXBlPUVGSV9R VUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KDQorICAgIDogICAncGFzc3dvcmQnDQoNCisg ICAgICAgIHZmclF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0n LCcNCg0KKyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyUGFzc3dvcmRGbGFnc0ZpZWxkICcsJyk/ DQoNCisgICAgICAgICgna2V5JyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAgIE1pbj0nbWlu c2l6ZScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgTWF4PSdtYXhzaXplJyAnPScgTnVtYmVy ICcsJw0KDQorICAgICAgICAoJ2VuY29kaW5nJyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAg IHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAg ICAnZW5kcGFzc3dvcmQnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyUGFzc3dvcmRGbGFnc0Zp ZWxkDQoNCitsb2NhbHNbSEZsYWdzPTBdDQoNCisgICAgOiAgIHBhc3N3b3JkRmxhZ3NGaWVsZCgn fCcgcGFzc3dvcmRGbGFnc0ZpZWxkKSoNCg0KKyAgICA7DQoNCisNCg0KK3Bhc3N3b3JkRmxhZ3NG aWVsZA0KDQorbG9jYWxzW0hGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICBx dWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudE9y ZGVyZWRMaXN0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX09SREVSRURfTElT VF9PUCksIE9wT2JqPUNJZnJPcmRlcmVkTGlzdCgpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFV RVNUSU9OX05PUk1BTF0NCg0KKyAgICA6ICAgJ29yZGVyZWRsaXN0Jw0KDQorICAgICAgICB2ZnJR dWVzdGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0KDQorICAg ICAgICAoTT0nbWF4Y29udGFpbmVycycgJz0nIE51bWJlciAnLCcpPw0KDQorICAgICAgICAoRj0n ZmxhZ3MnICc9JyB2ZnJPcmRlcmVkTGlzdEZsYWdzICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAnZW5kbGlz dCcgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJPcmRlcmVkTGlzdEZsYWdzDQoNCitsb2NhbHNb SEZsYWdzPTAsIExGbGFncz0wXQ0KDQorICAgIDogICBvcmRlcmVkbGlzdEZsYWdzRmllbGQgKCd8 JyBvcmRlcmVkbGlzdEZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQorb3JkZXJlZGxpc3RG bGFnc0ZpZWxkDQoNCitsb2NhbHNbSEZsYWc9MCwgTEZsYWc9MF0NCg0KKyAgICA6ICAgTnVtYmVy DQoNCisgICAgfCAgICdVTklRVUUnDQoNCisgICAgfCAgICdOT0VNUFRZJw0KDQorICAgIHwgICBx dWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudERh dGUNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfREFURV9PUCksIE9wT2JqPUNJ ZnJEYXRlKCksIFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURSwgVmFsPUVGSV9J RlJfVFlQRV9WQUxVRSgpXQ0KDQorICAgIDogICAnZGF0ZScNCg0KKyAgICAgICAgKCAgICggICB2 ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0KDQor ICAgICAgICAgICAgICAgIChGMT0nZmxhZ3MnICc9JyB2ZnJEYXRlRmxhZ3MgJywnKT8NCg0KKyAg ICAgICAgICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9k ZV0NCg0KKyAgICAgICAgICAgICkNCg0KKyAgICAgICAgICAgIHwNCg0KKyAgICAgICAgICAgICgg ICAneWVhcicgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3RyaW5nSWRlbnRpZmll ciAnLCcNCg0KKyAgICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygn IE51bWJlciAnKScgJywnDQoNCisgICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgICAgICAgICBtaW5NYXhEYXRlU3Rl cERlZmF1bHRbbG9jYWxjdHguVmFsLmRhdGUsIDBdDQoNCisgICAgICAgICAgICAgICAgJ21vbnRo JyAndmFyaWQnICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0K DQorICAgICAgICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVy ICcpJyAnLCcNCg0KKyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICco JyBOdW1iZXIgJyknICcsJw0KDQorICAgICAgICAgICAgICAgIG1pbk1heERhdGVTdGVwRGVmYXVs dFtsb2NhbGN0eC5WYWwuZGF0ZSwgMV0NCg0KKyAgICAgICAgICAgICAgICAnZGF5JyAndmFyaWQn ICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAg ICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cg0KKyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIg JyknICcsJw0KDQorICAgICAgICAgICAgICAgIG1pbk1heERhdGVTdGVwRGVmYXVsdFtsb2NhbGN0 eC5WYWwuZGF0ZSwgMl0NCg0KKyAgICAgICAgICAgICAgICAoRjI9J2ZsYWdzJyAnPScgdmZyRGF0 ZUZsYWdzICcsJyk/DQoNCisgICAgICAgICAgICAgICAgKHZmclN0YXRlbWVudEluY29uc2lzdGVu dElmKSoNCg0KKyAgICAgICAgICAgICkNCg0KKyAgICAgICAgKQ0KDQorICAgICAgICAnZW5kZGF0 ZScgJzsnDQoNCisgICAgOw0KDQorDQoNCittaW5NYXhEYXRlU3RlcERlZmF1bHRbRGF0ZSwgS2V5 VmFsdWVdDQoNCisgICAgOiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAn bWF4aW11bScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgKCdzdGVwJyAnPScgTnVtYmVyICcs Jyk/DQoNCisgICAgICAgICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQoNCisgICAgOw0K DQorDQoNCit2ZnJEYXRlRmxhZ3MNCg0KK2xvY2Fsc1tMRmxhZ3M9MF0NCg0KKyAgICA6ICAgZGF0 ZUZsYWdzRmllbGQgKCd8JyBkYXRlRmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorZGF0ZUZsYWdz RmllbGQNCg0KK2xvY2Fsc1tMRmxhZz0wXQ0KDQorICAgIDogICBOdW1iZXINCg0KKyAgICB8ICAg J1lFQVJfU1VQUFJFU1MnDQoNCisgICAgfCAgICdNT05USF9TVVBQUkVTUycNCg0KKyAgICB8ICAg J0RBWV9TVVBQUkVTUycNCg0KKyAgICB8ICAgJ1NUT1JBR0VfTk9STUFMJw0KDQorICAgIHwgICAn U1RPUkFHRV9USU1FJw0KDQorICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQoNCisgICAgOw0KDQor DQoNCit2ZnJTdGF0ZW1lbnRUaW1lDQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZS X1RJTUVfT1ApLCBPcE9iaj1DSWZyVGltZSgpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNU SU9OX1RJTUUsICBWYWw9RUZJX0lGUl9UWVBFX1ZBTFVFKCldDQoNCisgICAgOiAgICd0aW1lJw0K DQorICAgICAgICAoICAgKCAgIHZmclF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2Nh bGN0eC5RVHlwZV0gJywnDQoNCisgICAgICAgICAgICAgICAgKEYxPSdmbGFncycgJz0nIHZmclRp bWVGbGFncyAnLCcpPw0KDQorICAgICAgICAgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAg fA0KDQorICAgICAgICAgICAgKA0KDQorICAgICAgICAgICAgICAgICdob3VyJyAndmFyaWQnICc9 JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAg ICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0K KyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJykn ICcsJw0KDQorICAgICAgICAgICAgICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5W YWwudGltZSwgMF0NCg0KKyAgICAgICAgICAgICAgICAnbWludXRlJyAndmFyaWQnICc9JyBTdHJp bmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAgICAgICAg ICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAg ICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0K DQorICAgICAgICAgICAgICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwudGlt ZSwgMV0NCg0KKyAgICAgICAgICAgICAgICAnc2Vjb25kJyAndmFyaWQnICc9JyBTdHJpbmdJZGVu dGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAgICAgICAgICdwcm9t cHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgICAg ICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAg ICAgICAgICAgICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwudGltZSwgMl0N Cg0KKyAgICAgICAgICAgICAgICAoRjI9J2ZsYWdzJyAnPScgdmZyVGltZUZsYWdzICcsJyk/DQoN CisgICAgICAgICAgICAgICAgKHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKSoNCg0KKyAgICAg ICAgICAgICkNCg0KKyAgICAgICAgKQ0KDQorICAgICAgICAnZW5kdGltZScgJzsnDQoNCisgICAg Ow0KDQorDQoNCittaW5NYXhUaW1lU3RlcERlZmF1bHRbVGltZSwgS2V5VmFsdWVdDQoNCisgICAg OiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAnbWF4aW11bScgJz0nIE51 bWJlciAnLCcNCg0KKyAgICAgICAgKCdzdGVwJyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAg ICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQoNCisgICAgOw0KDQorDQoNCit2ZnJUaW1l RmxhZ3MNCg0KK2xvY2Fsc1tMRmxhZ3M9MF0NCg0KKyAgICA6ICAgdGltZUZsYWdzRmllbGQgKCd8 JyB0aW1lRmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorDQoNCit0aW1lRmxhZ3NGaWVsZA0KDQor bG9jYWxzW0xGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICAnSE9VUl9TVVBQ UkVTUycNCg0KKyAgICB8ICAgJ01JTlVURV9TVVBQUkVTUycNCg0KKyAgICB8ICAgJ1NFQ09ORF9T VVBQUkVTUycNCg0KKyAgICB8ICAgJ1NUT1JBR0VfTk9STUFMJw0KDQorICAgIHwgICAnU1RPUkFH RV9USU1FJw0KDQorICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQoNCisgICAgOw0KDQorDQoNCit2 ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0 YXRlbWVudERpc2FibGVJZlN0YXQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0 YXQgLy9lbmhhbmNlIHRvIGJlIGNvbXBhdGlibGUgZm9yIGZyYW1ld29yayBlbmRpZg0KDQorICAg IHwgICB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0DQoNCisgICAgfCAgIHZmclN0YXRlbWVudElu Y29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUgY29tcGF0aWJsZSBmb3IgZnJhbWV3b3JrDQoNCisg ICAgOw0KDQorDQoNCisvLyBuZXcgc2VlbXMgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG9sZCwgd2h5 IG5ldz8NCg0KK3ZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3DQoNCitsb2NhbHNbTm9kZV0NCg0K KyAgICA6ICAgdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdA0KDQorICAgICAgICB2ZnJTdGF0ZW1l bnRTdXBwcmVzc0lmU3RhdE5ldw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0 TmV3DQoNCisgICAgICAgIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUg Y29tcGF0aWJsZSBmb3IgZnJhbWV3b3JrDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdA0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0TmV3DQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZT dGF0DQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50R3JheU91dElmU3Rh dE5ldw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3RhdExpc3QNCg0KK2xvY2Fsc1tO b2RlXQ0KDQorICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0DQoNCisgICAgfCAgIHZmclN0YXRlbWVu dFF1ZXN0aW9ucw0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KDQorICAgIHwg ICB2ZnJTdGF0ZW1lbnRMYWJlbA0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24NCg0K KyAgICB8ICAgdmZyU3RhdGVtZW50SW52YWxpZA0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVt ZW50U3RhdExpc3RPbGQNCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50U3RhdA0KDQorICAgIHwgICB2 ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50TGFiZWwNCg0KKyAg Ly8gSnVzdCBmb3IgZnJhbWV3b3JrIHZmciBjb21wYXRpYmlsaXR5DQoNCisgICAgfCAgIHZmclN0 YXRlbWVudEludmFsaWQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudERpc2FibGVJZlN0 YXQNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCldDQoN CisgICAgOiAgICdkaXNhYmxlaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAg ICAgICh2ZnJTdGF0ZW1lbnRTdGF0TGlzdCkqDQoNCisgICAgICAgICdlbmRpZicgJzsnDQoNCisg ICAgOw0KDQorDQoNCisNCg0KKy8vIENvbXBhdGlibGUgZm9yIGZyYW1ld29yayB2ZnIgZmlsZQ0K DQorLy8NCg0KK3ZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWYNCg0KKyAgICA6ICAgJ3N1 cHByZXNzaWYnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NG aWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisg ICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmDQoNCisgICAgOiAg ICdncmF5b3V0aWYnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxh Z3NGaWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoN CisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldw0KDQorbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQoNCisgICAgOiAgICdz dXBwcmVzc2lmJw0KDQorICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdz RmllbGQpKiAnLCcpPw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7Jw0KDQor ICAgICAgICAodmZyU3RhdGVtZW50U3RhdExpc3QpKg0KDQorICAgICAgICAnZW5kaWYnICc7Jw0K DQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0KDQorbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HUkFZX09VVF9JRl9PUCldDQoNCisgICAgOiAgICdn cmF5b3V0aWYnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NG aWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisg ICAgICAgICh2ZnJTdGF0ZW1lbnRTdGF0TGlzdCkqDQoNCisgICAgICAgICdlbmRpZicgJzsnDQoN CisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQNCg0KK2xvY2Fs c1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QKV0NCg0KKyAgICA6 ICAgJ2luY29uc2lzdGVudGlmJw0KDQorICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tF TicgJygnIE51bWJlciAnKScgJywnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxk ICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Np b24NCg0KKyAgICAgICAgJ2VuZGlmJyAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVu dEludmFsaWQgLy8gZm9yIGNvbXBhdGliaWxpdHkNCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50SW52 YWxpZEhpZGRlbg0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5DQoNCisg ICAgfCAgIHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQoNCisgICAgOw0K DQorDQoNCit2ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuDQoNCisgICAgOiAgICdoaWRkZW4nDQoN CisgICAgICAgICd2YWx1ZScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgJ2tleScgJz0nIE51 bWJlciAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkN Cg0KKyAgICA6ICAgJ2ludmVudG9yeScNCg0KKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgJ3RleHQnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgKCd0ZXh0JyAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScpPw0KDQorICAgICAgICAnOycNCg0KKyAgICA7DQoNCisNCg0K K3ZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQoNCisgICAgOiAgICggICAn c2F2ZScNCg0KKyAgICAgICAgfCAgICdyZXN0b3JlJw0KDQorICAgICAgICApDQoNCisgICAgICAg ICdkZWZhdWx0cycgJywnDQoNCisgICAgICAgICdmb3JtaWQnICc9JyBOdW1iZXIgJywnDQoNCisg ICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0K KyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KDQorICAg ICAgICAoJywnICdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSopPw0KDQor ICAgICAgICAoJywnICdrZXknICc9JyBOdW1iZXIpPw0KDQorICAgICAgICAnOycNCg0KKyAgICA7 DQoNCit2ZnJTdGF0ZW1lbnRMYWJlbA0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lG Ul9HVUlEX09QKV0NCg0KKyAgICA6ICAgJ2xhYmVsJyBOdW1iZXIgJzsnDQoNCisgICAgOw0KDQor DQoNCit2ZnJTdGF0ZW1lbnRCYW5uZXIgLy8gSXMgVGltZU91dCBuZWVkZWQNCg0KK2xvY2Fsc1tO b2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCldDQoNCisgICAgOiAgICdiYW5uZXInICgn LCcpPw0KDQorICAgICAgICAndGl0bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcp JyAnLCcNCg0KKyAgICAgICAgKCAgICggICAnbGluZScgTnVtYmVyICcsJw0KDQorICAgICAgICAg ICAgICAgICdhbGlnbicgKCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JykgJzsnDQoNCisgICAg ICAgICAgICApDQoNCisgICAgICAgICAgICB8DQoNCisgICAgICAgICAgICAoICAgJ3RpbWVvdXQn ICc9JyBOdW1iZXIgJzsnDQoNCisgICAgICAgICAgICApDQoNCisgICAgICAgICkNCg0KKyAgICA7 DQoNCisNCg0KK3ZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5v ZGUoRUZJX0lGUl9HVUlEX09QKSwgRGF0YUJ1ZmYsIFNpemU9MCwgVHlwZU5hbWU9JycsIFR5cGVT aXplPTAsIElzU3RydWN0PUZhbHNlLCBBcnJheU51bT0wXQ0KDQorICAgIDogICAnZ3VpZG9wJw0K DQorICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uDQoNCisgICAgICAgICggICAnLCcg RD0nZGF0YXR5cGUnICc9Jw0KDQorICAgICAgICAgICAgKCAgICdVSU5UNjQnICgnWycgTnVtYmVy ICddJyk/DQoNCisgICAgICAgICAgICB8ICAgJ1VJTlQzMicgKCdbJyBOdW1iZXIgJ10nKT8NCg0K KyAgICAgICAgICAgIHwgICAnVUlOVDE2JyAoJ1snIE51bWJlciAnXScpPw0KDQorICAgICAgICAg ICAgfCAgICdVSU5UOCcgKCdbJyBOdW1iZXIgJ10nKT8NCg0KKyAgICAgICAgICAgIHwgICAnQk9P TEVBTicgKCdbJyBOdW1iZXIgJ10nKT8NCg0KKyAgICAgICAgICAgIHwgICAnRUZJX1NUUklOR19J RCcgKCdbJyBOdW1iZXIgJ10nKT8NCg0KKyAgICAgICAgICAgIHwgICAnRUZJX0hJSV9EQVRFJyAo J1snIE51bWJlciAnXScpPw0KDQorICAgICAgICAgICAgfCAgICdFRklfSElJX1RJTUUnICgnWycg TnVtYmVyICddJyk/DQoNCisgICAgICAgICAgICB8ICAgJ0VGSV9ISUlfUkVGJyAoJ1snIE51bWJl ciAnXScpPw0KDQorICAgICAgICAgICAgfCAgIFN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIg J10nKT8NCg0KKyAgICAgICAgICAgICkNCg0KKyAgICAgICAgICAgICh2ZnJFeHRlbnNpb25EYXRh W2xvY2FsY3R4LkRhdGFCdWZmXSkqDQoNCisgICAgICAgICk/DQoNCisgICAgICAgICgNCg0KKyAg ICAgICAgICAgICcsJyAodmZyU3RhdGVtZW50RXh0ZW5zaW9uKSoNCg0KKyAgICAgICAgICAgICdl bmRndWlkb3AnDQoNCisgICAgICAgICk/DQoNCisgICAgICAgICc7Jw0KDQorICAgIDsNCg0KKw0K DQorDQoNCit2ZnJFeHRlbnNpb25EYXRhW0RhdGFCdWZmXQ0KDQorbG9jYWxzW0lzU3RydWN0XQ0K DQorICAgIDogICAnLCcgJ2RhdGEnICgnWycgTnVtYmVyICddJyk/DQoNCisgICAgICAgICggJy4n IGFycmF5TmFtZSkqICAnPScgTj1OdW1iZXINCg0KKyAgICA7DQoNCisNCg0KKw0KDQordmZyU3Rh dGVtZW50TW9kYWwNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogdmZyTW9kYWxUYWcgJzsnDQoN CisgICAgOw0KDQorDQoNCit2ZnJNb2RhbFRhZw0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUo RUZJX0lGUl9NT0RBTF9UQUdfT1ApXQ0KDQorICAgIDogICAnbW9kYWwnDQoNCisgICAgOw0KDQor DQoNCit2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCitsb2NhbHNbRXhwSW5mbz1FeHByZXNzaW9u SW5mbygpXQ0KDQorICAgIDogICBhbmRUZXJtW2xvY2FsY3R4LkV4cEluZm9dICgnT1InIGFuZFRl cm1bbG9jYWxjdHguRXhwSW5mb10pKg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50RXhw cmVzc2lvblN1Yg0KDQorbG9jYWxzW0V4cEluZm89RXhwcmVzc2lvbkluZm8oKV0NCg0KKyAgICA6 ICAgYW5kVGVybVtsb2NhbGN0eC5FeHBJbmZvXSAoJ09SJyBhbmRUZXJtW2xvY2FsY3R4LkV4cElu Zm9dKSoNCg0KKyAgICA7DQoNCisNCg0KK2FuZFRlcm1bRXhwSW5mb10NCg0KK2xvY2Fsc1tDSWZy QW5kTGlzdD1bXV0NCg0KKyAgICA6ICAgYml0d2lzZW9yVGVybVtFeHBJbmZvXSAoJ0FORCcgYml0 d2lzZW9yVGVybVtFeHBJbmZvXSkqDQoNCisgICAgOw0KDQorDQoNCitiaXR3aXNlb3JUZXJtW0V4 cEluZm9dDQoNCitsb2NhbHNbQ0lmckJpdFdpc2VPckxpc3Q9W11dDQoNCisgICAgOiAgIGJpdHdp c2VhbmRUZXJtW0V4cEluZm9dICgnfCcgYml0d2lzZWFuZFRlcm1bRXhwSW5mb10pKg0KDQorICAg IDsNCg0KKw0KDQorDQoNCitiaXR3aXNlYW5kVGVybVtFeHBJbmZvXQ0KDQorbG9jYWxzW0NJZnJC aXRXaXNlQW5kTGlzdD1bXV0NCg0KKyAgICA6ICAgZXF1YWxUZXJtW0V4cEluZm9dICgnJicgZXF1 YWxUZXJtW0V4cEluZm9dKSoNCg0KKyAgICA7DQoNCisNCg0KKw0KDQorZXF1YWxUZXJtW0V4cElu Zm9dDQoNCitsb2NhbHNbQ0lmckVxdWFsTGlzdD1bXSwgQ0lmck5vdEVxdWFsTGlzdD1bXV0NCg0K KyAgICA6ICAgY29tcGFyZVRlcm1bbG9jYWxjdHguRXhwSW5mb10NCg0KKyAgICAgICAgKGVxdWFs VGVybVN1cHBsZW1lbnRhcnlbbG9jYWxjdHguQ0lmckVxdWFsTGlzdCwgbG9jYWxjdHguQ0lmck5v dEVxdWFsTGlzdCwgRXhwSW5mb10pKg0KDQorICAgIDsNCg0KKw0KDQorDQoNCitlcXVhbFRlcm1T dXBwbGVtZW50YXJ5W0NJZnJFcXVhbExpc3QsIENJZnJOb3RFcXVhbExpc3QsIEV4cEluZm9dDQoN CisgICAgOiAgICgnPT0nIGNvbXBhcmVUZXJtW0V4cEluZm9dKSAgIyBlcXVhbFRlcm1FcXVhbFJ1 bGUNCg0KKyAgICAgICAgfA0KDQorICAgICAgICAoJyE9JyBjb21wYXJlVGVybVtFeHBJbmZvXSkg IyBlcXVhbFRlcm1Ob3RFcXVhbFJ1bGUNCg0KKyAgICA7DQoNCisNCg0KK2NvbXBhcmVUZXJtW0V4 cEluZm9dDQoNCitsb2NhbHNbQ0lmckxlc3NUaGFuTGlzdD1bXSwgQ0lmckxlc3NFcXVhbExpc3Q9 W10sIENJZnJHcmVhdGVyVGhhbkxpc3Q9W10sIENJZnJHcmVhdGVyRXF1YWxMaXN0PVtdXQ0KDQor ICAgIDogICBzaGlmdFRlcm1bRXhwSW5mb10NCg0KKyAgICAgICAgKGNvbXBhcmVUZXJtU3VwcGxl bWVudGFyeVtsb2NhbGN0eC5DSWZyTGVzc1RoYW5MaXN0LCBsb2NhbGN0eC5DSWZyTGVzc0VxdWFs TGlzdCwgbG9jYWxjdHguQ0lmckdyZWF0ZXJUaGFuTGlzdCwgbG9jYWxjdHguQ0lmckdyZWF0ZXJF cXVhbExpc3QsIEV4cEluZm9dKSoNCg0KKyAgICA7DQoNCisNCg0KK2NvbXBhcmVUZXJtU3VwcGxl bWVudGFyeVtDSWZyTGVzc1RoYW5MaXN0LCBDSWZyTGVzc0VxdWFsTGlzdCwgQ0lmckdyZWF0ZXJU aGFuTGlzdCwgQ0lmckdyZWF0ZXJFcXVhbExpc3QsIEV4cEluZm9dDQoNCisgICAgOiAgICgnPCcg c2hpZnRUZXJtW0V4cEluZm9dKSAgICMgY29tcGFyZVRlcm1MZXNzUnVsZQ0KDQorICAgICAgICB8 DQoNCisgICAgICAgICgnPD0nIHNoaWZ0VGVybVtFeHBJbmZvXSkgICMgIGNvbXBhcmVUZXJtTGVz c0VxdWFsUnVsZQ0KDQorICAgICAgICB8DQoNCisgICAgICAgICgnPicgc2hpZnRUZXJtW0V4cElu Zm9dKSAgICMgIGNvbXBhcmVUZXJtR3JlYXRlclJ1bGUNCg0KKyAgICAgICAgfA0KDQorICAgICAg ICAoJz49JyBzaGlmdFRlcm1bRXhwSW5mb10pICAjICBjb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1 bGUNCg0KKyAgICA7DQoNCisNCg0KK3NoaWZ0VGVybVtFeHBJbmZvXQ0KDQorbG9jYWxzW0NJZnJT aGlmdExlZnRMaXN0PVtdLCBDSWZyU2hpZnRSaWdodExpc3Q9W11dDQoNCisgICAgOiAgIGFkZE1p bnVzVGVybVtFeHBJbmZvXQ0KDQorICAgICAgICAoc2hpZnRUZXJtU3VwcGxlbWVudGFyeVtsb2Nh bGN0eC5DSWZyU2hpZnRMZWZ0TGlzdCwgbG9jYWxjdHguQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJ bmZvXSkqDQoNCisgICAgOw0KDQorDQoNCitzaGlmdFRlcm1TdXBwbGVtZW50YXJ5W0NJZnJTaGlm dExlZnRMaXN0LCBDSWZyU2hpZnRSaWdodExpc3QsIEV4cEluZm9dDQoNCisgICAgOiAgICgnPDwn IGFkZE1pbnVzVGVybVtFeHBJbmZvXSkgICMgc2hpZnRUZXJtTGVmdA0KDQorICAgICAgICB8DQoN CisgICAgICAgICgnPj4nIGFkZE1pbnVzVGVybVtFeHBJbmZvXSkgIyBzaGlmdFRlcm1SaWdodA0K DQorICAgIDsNCg0KKw0KDQorYWRkTWludXNUZXJtW0V4cEluZm9dDQoNCitsb2NhbHNbQ0lmckFk ZExpc3Q9W10sIENJZnJTdWJ0cmFjdExpc3Q9W11dDQoNCisgICAgOiAgIG11bHRkaXZtb2RUZXJt W0V4cEluZm9dDQoNCisgICAgICAgIChhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5W2xvY2FsY3R4 LkNJZnJBZGRMaXN0LCBsb2NhbGN0eC5DSWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvXSkqDQoNCisg ICAgOw0KDQorDQoNCithZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5W0NJZnJBZGRMaXN0LCBDSWZy U3VidHJhY3RMaXN0LCBFeHBJbmZvXQ0KDQorICAgIDogICAoJysnIG11bHRkaXZtb2RUZXJtW0V4 cEluZm9dKSAjIGFkZE1pbnVzVGVybXBBZGQNCg0KKyAgICAgICAgfA0KDQorICAgICAgICAoJy0n IG11bHRkaXZtb2RUZXJtW0V4cEluZm9dKSAjIGFkZE1pbnVzVGVybVN1YnRyYWN0DQoNCisgICAg Ow0KDQorDQoNCittdWx0ZGl2bW9kVGVybVtFeHBJbmZvXQ0KDQorbG9jYWxzW0NJZnJNdWx0aXBs eUxpc3Q9W10sIENJZnJEaXZpZGVMaXN0PVtdLCBDSWZyTW9kdWxvTGlzdD1bXV0NCg0KKyAgICA6 ICAgY2FzdFRlcm1bRXhwSW5mb10NCg0KKyAgICAgICAgKG11bHRkaXZtb2RUZXJtU3VwcGxlbWVu dGFyeVtsb2NhbGN0eC5DSWZyTXVsdGlwbHlMaXN0LCBsb2NhbGN0eC5DSWZyRGl2aWRlTGlzdCwg bG9jYWxjdHguQ0lmck1vZHVsb0xpc3QsIEV4cEluZm9dKSoNCg0KKyAgICA7DQoNCisNCg0KK211 bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeVtDSWZyTXVsdGlwbHlMaXN0LCBDSWZyRGl2aWRlTGlz dCwgQ0lmck1vZHVsb0xpc3QsIEV4cEluZm9dDQoNCisgICAgOiAgICgnKicgY2FzdFRlcm1bRXhw SW5mb10pICMgbXVsdGRpdm1vZFRlcm1NdWwNCg0KKyAgICAgICAgfA0KDQorICAgICAgICAoJy8n IGNhc3RUZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtRGl2DQoNCisgICAgICAgIHwNCg0K KyAgICAgICAgKCclJyBjYXN0VGVybVtFeHBJbmZvXSkgIyBtdWx0ZGl2bW9kVGVybU1vZHVsbw0K DQorICAgIDsNCg0KKw0KDQorY2FzdFRlcm1bRXhwSW5mb10NCg0KK2xvY2Fsc1tUQk9iaj1Ob25l LCBUVU9iaj1Ob25lXQ0KDQorICAgIDogICAoICAgJygnDQoNCisgICAgICAgICAgICAoICAnQk9P TEVBTicNCg0KKyAgICAgICAgICAgIHwgICdVSU5UNjQnDQoNCisgICAgICAgICAgICB8ICAnVUlO VDMyJw0KDQorICAgICAgICAgICAgfCAgJ1VJTlQxNicNCg0KKyAgICAgICAgICAgIHwgICdVSU5U OCcNCg0KKyAgICAgICAgICAgICkNCg0KKyAgICAgICAgICAgICcpJw0KDQorICAgICAgICApKg0K DQorICAgICAgICBhdG9tVGVybVtFeHBJbmZvXQ0KDQorICAgIDsNCg0KKw0KDQorYXRvbVRlcm1b RXhwSW5mb10NCg0KKyAgICA6ICAgdmZyRXhwcmVzc2lvbkNhdGVuYXRlW0V4cEluZm9dDQoNCisg ICAgfCAgIHZmckV4cHJlc3Npb25NYXRjaFtFeHBJbmZvXQ0KDQorICAgIHwgICB2ZnJFeHByZXNz aW9uTWF0Y2gyW0V4cEluZm9dDQoNCisgICAgfCAgIHZmckV4cHJlc3Npb25QYXJlbltFeHBJbmZv XQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uW0V4cEluZm9dDQoNCisg ICAgfCAgIHZmckV4cHJlc3Npb25Db25zdGFudFtFeHBJbmZvXQ0KDQorICAgIHwgICB2ZnJFeHBy ZXNzaW9uVW5hcnlPcFtFeHBJbmZvXQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9uVGVybmFyeU9w W0V4cEluZm9dDQoNCisgICAgfCAgIHZmckV4cHJlc3Npb25NYXBbRXhwSW5mb10NCg0KKyAgICB8 ICAgKCdOT1QnIGF0b21UZXJtW0V4cEluZm9dKQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9uTWF0 Y2gyW0V4cEluZm9dDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uQ2F0ZW5hdGVbRXhw SW5mb10NCg0KK2xvY2Fsc1tDT2JqPU5vbmVdDQoNCisgICAgOiAgICdjYXRlbmF0ZScNCg0KKyAg ICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uTWF0Y2hbRXhwSW5m b10NCg0KK2xvY2Fsc1tNT2JqPU5vbmVdDQoNCisgICAgOiAgICdtYXRjaCcNCg0KKyAgICAgICAg JygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uTWF0Y2gyW0V4cEluZm9dDQoN Citsb2NhbHNbTTJPYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ21hdGNoMicNCg0KKyAgICAgICAgJygn IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWInLCcNCg0KKyAgICAgICAgdmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YiAnLCcNCg0KKyAgICAgICAgZ3VpZERlZmluaXRpb24gJyknDQoNCisgICAgOw0K DQorDQoNCit2ZnJFeHByZXNzaW9uUGFyZW5bRXhwSW5mb10NCg0KKyAgICA6ICAgJygnIHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9u QnVpbGRJbkZ1bmN0aW9uW0V4cEluZm9dDQoNCisgICAgOiAgIGR1cEV4cFtFeHBJbmZvXQ0KDQor ICAgIHwgICB2YXJlcXZhbEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBpZGVxdmFsRXhwW0V4cElu Zm9dDQoNCisgICAgfCAgIGlkZXFpZEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBpZGVxdmFsbGlz dEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBxdWVzdGlvbnJlZjFFeHBbRXhwSW5mb10NCg0KKyAg ICB8ICAgcnVsZXJlZkV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBzdHJpbmdyZWYxRXhwW0V4cElu Zm9dDQoNCisgICAgfCAgIHB1c2h0aGlzRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHNlY3VyaXR5 RXhwW0V4cEluZm9dDQoNCisgICAgfCAgIGdldEV4cFtFeHBJbmZvXQ0KDQorICAgIDsNCg0KKw0K DQorZHVwRXhwW0V4cEluZm9dDQoNCitsb2NhbHNbRE9iaj1Ob25lXQ0KDQorICAgIDogICAnZHVw Jw0KDQorICAgIDsNCg0KKw0KDQorDQoNCit2YXJlcXZhbEV4cFtFeHBJbmZvXQ0KDQorICAgIDog ICAndmFyZXF2YWwnDQoNCisgICAgICAgICd2YXInICcoJyBOdW1iZXIgJyknDQoNCisgICAgICAg ICggICAnPT0nIE51bWJlcg0KDQorCSAgICB8ICAgJzw9JyBOdW1iZXINCg0KKwkgICAgfCAgICc8 JyBOdW1iZXINCg0KKwkgICAgfCAgICc+PScgTnVtYmVyDQoNCisJICAgIHwgICAnPicgTnVtYmVy DQoNCisgICAgICAgICkNCg0KKyAgICA7DQoNCisNCg0KK2lkZXF2YWxFeHBbRXhwSW5mb10NCg0K KyAgICA6ICAgST0naWRlcXZhbCcgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lDQoNCisgICAgICAg ICggICAnPT0nIE51bWJlcg0KDQorCSAgICB8ICAgJzw9JyBOdW1iZXINCg0KKwkgICAgfCAgICc8 JyBOdW1iZXINCg0KKwkgICAgfCAgICc+PScgTnVtYmVyDQoNCisJICAgIHwgICAnPicgTnVtYmVy DQoNCisgICAgICAgICkNCg0KKyAgICA7DQoNCisNCg0KK2lkZXFpZEV4cFtFeHBJbmZvXQ0KDQor ICAgIDogICBJPSdpZGVxaWQnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KDQorICAgICAgICAo ICAgRT0nPT0nIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KDQorCSAgICB8ICAgTEU9Jzw9JyB2 ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCg0KKwkgICAgfCAgIEw9JzwnIHZmclF1ZXN0aW9uRGF0 YUZpZWxkTmFtZQ0KDQorCSAgICB8ICAgQkU9Jz49JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUN Cg0KKwkgICAgfCAgIEI9Jz4nIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KDQorICAgICAgICAp DQoNCisgICAgOw0KDQorDQoNCitpZGVxdmFsbGlzdEV4cFtFeHBJbmZvXQ0KDQorICAgIDogICAn aWRlcXZhbGxpc3QnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSAnPT0nIChOdW1iZXIpKw0KDQor ICAgIDsNCg0KKw0KDQordmZyUXVlc3Rpb25EYXRhRmllbGROYW1lDQoNCitsb2NhbHNbUUlkPUVG SV9RVUVTVElPTl9JRF9JTlZBTElELCBNYXNrPTAsIFZhcklkU3RyPScnLCBMaW5lPU5vbmVdDQoN CisgICAgOiAgIChTTjE9U3RyaW5nSWRlbnRpZmllciAnWycgST1OdW1iZXIgJ10nKSAjIHZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxDQoNCisgICAgICAgIHwgICAoU04yPVN0cmluZ0lkZW50 aWZpZXIgKCcuJyBhcnJheU5hbWUpKikgIyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMg0K DQorICAgIDsNCg0KKw0KDQorYXJyYXlOYW1lDQoNCitsb2NhbHNbU3ViU3RyPScnLCBTdWJTdHJa PScnXQ0KDQorICAgIDogU3RyaW5nSWRlbnRpZmllciAoJ1snIE49TnVtYmVyICddJyk/DQoNCisg ICAgOw0KDQorDQoNCitxdWVzdGlvbnJlZjFFeHBbRXhwSW5mb10NCg0KKyAgICA6ICAgJ3F1ZXN0 aW9ucmVmJw0KDQorICAgICAgICAnKCcgKCBTdHJpbmdJZGVudGlmaWVyIHwgTnVtYmVyICkgJykn DQoNCisgICAgOw0KDQorDQoNCitydWxlcmVmRXhwW0V4cEluZm9dDQoNCisgICAgOiAgICdydWxl cmVmJyAnKCcgU3RyaW5nSWRlbnRpZmllciAnKScNCg0KKyAgICA7DQoNCisNCg0KK3N0cmluZ3Jl ZjFFeHBbRXhwSW5mb10NCg0KKyAgICA6ICAgJ3N0cmluZ3JlZicgJygnDQoNCisgICAgICAgICgN Cg0KKyAgICAgICAgICAgICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknDQoNCisgICAgICAg IHwgICBOdW1iZXINCg0KKyAgICAgICAgKQ0KDQorDQoNCisNCg0KKyAgICAnKScNCg0KKyAgICA7 DQoNCisNCg0KK3B1c2h0aGlzRXhwW0V4cEluZm9dDQoNCisgICAgOiAgICdwdXNodGhpcycNCg0K KyAgICA7DQoNCisNCg0KK3NlY3VyaXR5RXhwW0V4cEluZm9dDQoNCisgICAgOiAgICdzZWN1cml0 eScgJygnIGd1aWREZWZpbml0aW9uICcpJw0KDQorICAgIDsNCg0KKw0KDQorbnVtZXJpY1ZhclN0 b3JlVHlwZQ0KDQorbG9jYWxzW1ZhclR5cGVdDQoNCisgICAgOiAgICdOVU1FUklDX1NJWkVfMScN Cg0KKyAgICB8ICAgJ05VTUVSSUNfU0laRV8yJw0KDQorICAgIHwgICAnTlVNRVJJQ19TSVpFXzQn DQoNCisgICAgfCAgICdOVU1FUklDX1NJWkVfOCcNCg0KKyAgICA7DQoNCisNCg0KK2dldEV4cFtF eHBJbmZvXQ0KDQorbG9jYWxzW0Jhc2VJbmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIEdPYmo9Tm9u ZV0NCg0KKyAgICA6ICAgJ2dldCcgJygnIHZmclN0b3JhZ2VWYXJJZFtsb2NhbGN0eC5CYXNlSW5m bywgRmFsc2VdKCd8JyAnZmxhZ3MnICc9JyBudW1lcmljVmFyU3RvcmVUeXBlKT8gJyknDQoNCisg ICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uQ29uc3RhbnRbRXhwSW5mb10NCg0KKyAgICA6ICAg J1RSVUUnDQoNCisgICAgfCAgICdGQUxTRScNCg0KKyAgICB8ICAgJ09ORScNCg0KKyAgICB8ICAg J09ORVMnDQoNCisgICAgfCAgICdaRVJPJw0KDQorICAgIHwgICAnVU5ERUZJTkVEJw0KDQorICAg IHwgICAnVkVSU0lPTicNCg0KKyAgICB8ICAgTnVtYmVyDQoNCisgICAgOw0KDQorDQoNCit2ZnJF eHByZXNzaW9uVW5hcnlPcFtFeHBJbmZvXQ0KDQorICAgIDogICBsZW5ndGhFeHBbRXhwSW5mb10N Cg0KKyAgICB8ICAgYml0d2lzZW5vdEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBxdWVzdGlvbjIz cmVmRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHN0cmluZ3JlZjJFeHBbRXhwSW5mb10NCg0KKyAg ICB8ICAgdG9ib29sRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHRvc3RyaW5nRXhwW0V4cEluZm9d DQoNCisgICAgfCAgIHVuaW50RXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHRvdXBwZXJFeHBbRXhw SW5mb10NCg0KKyAgICB8ICAgdG9sd2VyRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHNldEV4cFtF eHBJbmZvXQ0KDQorICAgIDsNCg0KKw0KDQorbGVuZ3RoRXhwW0V4cEluZm9dDQoNCitsb2NhbHNb TE9iaj1Ob25lXQ0KDQorICAgIDogICAnbGVuZ3RoJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YiAnKScNCg0KKyAgICA7DQoNCisNCg0KK2JpdHdpc2Vub3RFeHBbRXhwSW5mb10NCg0KK2xv Y2Fsc1tCV05PYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ34nICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViICcpJw0KDQorICAgIDsNCg0KKw0KDQorcXVlc3Rpb24yM3JlZkV4cFtFeHBJbmZvXQ0K DQorICAgIDogICAncXVlc3Rpb25yZWZ2YWwnDQoNCisgICAgICAgICcoJw0KDQorICAgICAgICAo RGV2aWNlUGF0aCAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnICk/DQoNCisg ICAgICAgIChVdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcgKT8NCg0KKyAgICAgICAgdmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0KK3N0 cmluZ3JlZjJFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tTUjJPYmo9Tm9uZV0NCg0KKyAgICA6ICAg J3N0cmluZ3JlZnZhbCcgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAg Ow0KDQorDQoNCit0b2Jvb2xFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUQk9iaj1Ob25lXQ0KDQor ICAgIDogICAnYm9vbHZhbCcgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisg ICAgOw0KDQorDQoNCit0b3N0cmluZ0V4cFtFeHBJbmZvXQ0KDQorbG9jYWxzW1RTT2JqPU5vbmVd DQoNCisgICAgOiAgICdzdHJpbmd2YWwnICgnZm9ybWF0JyAnPScgTnVtYmVyICcsJyApPw0KDQor ICAgICAgICAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScNCg0KKyAgICA7DQoNCisN Cg0KK3VuaW50RXhwW0V4cEluZm9dDQoNCitsb2NhbHNbVFVPYmo9Tm9uZV0NCg0KKyAgICA6ICAg J3VuaW50dmFsJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScNCg0KKyAgICA7DQoN CisNCg0KK3RvdXBwZXJFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUVU9iaj1Ob25lXQ0KDQorICAg IDogICAndG91cHBlcicgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAg Ow0KDQorDQoNCit0b2x3ZXJFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUTE9iaj1Ob25lXQ0KDQor ICAgIDogICAndG9sb3dlcicgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisg ICAgOw0KDQorDQoNCitzZXRFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tCYXNlSW5mbz1FRklfVkFS U1RPUkVfSU5GTygpLCBUU09iaj1Ob25lXQ0KDQorICAgIDogICAnc2V0Jw0KDQorICAgICAgICAn KCcNCg0KKyAgICAgICAgdmZyU3RvcmFnZVZhcklkW2xvY2FsY3R4LkJhc2VJbmZvLCBGYWxzZV0o J3wnICdmbGFncycgJz0nIG51bWVyaWNWYXJTdG9yZVR5cGUpPyAnLCcNCg0KKyAgICAgICAgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0K K3ZmckV4cHJlc3Npb25UZXJuYXJ5T3BbRXhwSW5mb10NCg0KKyAgICA6ICAgY29uZGl0aW9uYWxF eHBbRXhwSW5mb10NCg0KKyAgICB8ICAgZmluZEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBtaWRF eHBbRXhwSW5mb10NCg0KKyAgICB8ICAgdG9rZW5FeHBbRXhwSW5mb10NCg0KKyAgICB8ICAgc3Bh bkV4cFtFeHBJbmZvXQ0KDQorICAgIDsNCg0KKw0KDQorY29uZGl0aW9uYWxFeHBbRXhwSW5mb10N Cg0KK2xvY2Fsc1tDT2JqPU5vbmVdDQoNCisgICAgOiAgICdjb25kJw0KDQorICAgICAgICAnKCcN Cg0KKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KDQorICAgICAgICAnPycN Cg0KKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KDQorICAgICAgICAnOicN Cg0KKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KDQorICAgICAgICAnKScN Cg0KKyAgICA7DQoNCisNCg0KK2ZpbmRFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tGT2JqPU5vbmVd DQoNCisgICAgOiAgICdmaW5kJw0KDQorICAgICAgICAnKCcNCg0KKyAgICAgICAgZmluZEZvcm1h dFtFeHBJbmZvXSAoJ3wnIGZpbmRGb3JtYXRbRXhwSW5mb10pKg0KDQorICAgICAgICAnLCcNCg0K KyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnLCcNCg0KKyAg ICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnLCcNCg0KKyAgICAg ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoN CisNCg0KK2ZpbmRGb3JtYXRbRXhwSW5mb10NCg0KK2xvY2Fsc1tGb3JtYXQ9MF0NCg0KKyAgICA6 ICAgJ1NFTlNJVElWRScgfCAnSU5TRU5TSVRJVkUnDQoNCisgICAgOw0KDQorDQoNCittaWRFeHBb RXhwSW5mb10NCg0KK2xvY2Fsc1tNT2JqPU5vbmVdDQoNCisgICAgOiAgICdtaWQnDQoNCisgICAg ICAgICcoJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAg ICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAgICcs Jw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAgICcpJw0K DQorICAgIDsNCg0KKw0KDQordG9rZW5FeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUT2JqPU5vbmVd DQoNCisgICAgOiAgICd0b2tlbicNCg0KKyAgICAgICAgJygnDQoNCisgICAgICAgIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWINCg0KKyAgICAgICAgJywnDQoNCisgICAgICAgIHZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWINCg0KKyAgICAgICAgJywnDQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWINCg0KKyAgICAgICAgJyknDQoNCisgICAgOw0KDQorDQoNCitzcGFuRXhwW0V4 cEluZm9dDQoNCitsb2NhbHNbU09iaj1Ob25lXQ0KDQorICAgIDogICAnc3BhbicNCg0KKyAgICAg ICAgJygnDQoNCisgICAgICAgICdmbGFncycgJz0nIHNwYW5GbGFncyAoJ3wnIHNwYW5GbGFncykq DQoNCisgICAgICAgICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoN CisgICAgICAgICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisg ICAgICAgICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAg ICAgICcpJw0KDQorICAgIDsNCg0KKw0KDQorc3BhbkZsYWdzDQoNCitsb2NhbHNbRmxhZz0wXQ0K DQorICAgIDogICBOdW1iZXINCg0KKyAgICB8ICAgJ0xBU1RfTk9OX01BVENIJw0KDQorICAgIHwg ICAnRklSU1RfTk9OX01BVENIJw0KDQorICAgIDsNCg0KKw0KDQordmZyRXhwcmVzc2lvbk1hcFtF eHBJbmZvXQ0KDQorbG9jYWxzW01PYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ21hcCcNCg0KKyAgICAg ICAgJygnDQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCg0KKyAgICAgICAg JzonDQoNCisgICAgICAgICggICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCisgICAgICAgICAg ICAnLCcNCg0KKyAgICAgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCg0KKyAgICAgICAg ICAgICc7Jw0KDQorICAgICAgICApKg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0K Kw0KDQorRGVmaW5lIDonI2RlZmluZSc7DQoNCitJbmNsdWRlIDogJyNpbmNsdWRlJzsNCg0KK0Zv cm1Qa2dUeXBlIDogJ2Zvcm1wa2d0eXBlJzsNCg0KK09wZW5CcmFjZSA6ICd7JzsNCg0KK0Nsb3Nl QnJhY2UgOiAnfSc7DQoNCitPcGVuUGFyZW4gOiAnKCc7DQoNCitDbG9zZVBhcmVuIDogJyknOw0K DQorT3BlbkJyYWNrZXQgOiAnWyc7DQoNCitDbG9zZUJyYWNrZXQgOiAnXSc7DQoNCitEb3QgOiAn Lic7DQoNCitOZWdhdGl2ZSA6ICctJzsNCg0KK0NvbG9uIDogJzonOw0KDQorU2xhc2ggOiAnLyc7 DQoNCitTZW1pY29sb24gOiAnOyc7DQoNCitDb21tYSA6ICcsJzsNCg0KK0VxdWFsIDogJz09JzsN Cg0KK05vdEVxdWFsIDogJyE9JzsNCg0KK0xlc3NFcXVhbDogJzw9JzsNCg0KK0xlc3M6JzwnOw0K DQorR3JlYXRlckVxdWFsOic+PSc7DQoNCitHcmVhdGVyOic+JzsNCg0KK0JpdFdpc2VPcjogJ3wn Ow0KDQorQml0V2lzZUFuZDogJyYnOw0KDQorDQoNCitEZXZpY2VQYXRoIDogJ2RldmljZXBhdGgn Ow0KDQorRm9ybVNldCA6ICdmb3Jtc2V0JzsNCg0KK0Zvcm1TZXRJZCA6ICdmb3Jtc2V0aWQnOw0K DQorRW5kRm9ybVNldCA6ICdlbmRmb3Jtc2V0JzsNCg0KK1RpdGxlIDogJ3RpdGxlJzsNCg0KK0Zv cm1JZCA6ICdmb3JtaWQnOw0KDQorT25lT2YgOiAnb25lb2YnOw0KDQorRW5kT25lT2YgOiAnZW5k b25lb2YnOw0KDQorUHJvbXB0IDogJ3Byb21wdCc7DQoNCitPcmRlcmVkTGlzdCA6ICdvcmRlcmVk bGlzdCc7DQoNCitNYXhDb250YWluZXJzIDogJ21heGNvbnRhaW5lcnMnOw0KDQorRW5kTGlzdCA6 ICdlbmRsaXN0JzsNCg0KK0VuZEZvcm0gOiAnZW5kZm9ybSc7DQoNCitGb3JtIDogJ2Zvcm0nOw0K DQorRm9ybU1hcCA6ICdmb3JtbWFwJzsNCg0KK01hcFRpdGxlIDogJ21hcHRpdGxlJzsNCg0KK01h cEd1aWQgOiAnbWFwZ3VpZCc7DQoNCitTdWJ0aXRsZSA6ICdzdWJ0aXRsZSc7DQoNCitFbmRTdWJ0 aXRsZSA6ICdlbmRzdWJ0aXRsZSc7DQoNCitIZWxwIDogJ2hlbHAnOw0KDQorVGV4dCA6ICd0ZXh0 JzsNCg0KK09wdGlvbiA6ICdvcHRpb24nOw0KDQorRkxBR1MgOiAnZmxhZ3MnOw0KDQorRGF0ZSA6 ICdkYXRlJzsNCg0KK0VuZERhdGUgOiAnZW5kZGF0ZSc7DQoNCitZZWFyIDogJ3llYXInOw0KDQor TW9udGggOiAnbW9udGgnOw0KDQorRGF5IDogJ2RheSc7DQoNCitUaW1lIDogJ3RpbWUnOw0KDQor RW5kVGltZSA6ICdlbmR0aW1lJzsNCg0KK0hvdXIgOiAnaG91cic7DQoNCitNaW51dGUgOiAnbWlu dXRlJzsNCg0KK1NlY29uZCA6ICdzZWNvbmQnOw0KDQorR3JheU91dElmIDogJ2dyYXlvdXRpZic7 DQoNCitMYWJlbCA6ICdsYWJlbCc7DQoNCitUaW1lb3V0IDogJ3RpbWVvdXQnOw0KDQorSW52ZW50 b3J5IDogJ2ludmVudG9yeSc7DQoNCitOb25OdkRhdGFNYXAgOiAnX05PTl9OVl9EQVRBX01BUCc7 DQoNCitTdHJ1Y3QgOiAnc3RydWN0JzsNCg0KK1VuaW9uIDogJ3VuaW9uJzsNCg0KK0Jvb2xlYW4g OiAnQk9PTEVBTic7DQoNCitVaW50NjQgOiAnVUlOVDY0JzsNCg0KK1VpbnQzMiA6ICdVSU5UMzIn Ow0KDQorVWludDE2IDogJ1VJTlQxNic7DQoNCitVaW50OCA6J1VJTlQ4JzsNCg0KK0VGSV9TVFJJ TkdfSUQgOidFRklfU1RSSU5HX0lEJzsNCg0KK0VGSV9ISUlfREFURSA6ICdFRklfSElJX0RBVEUn Ow0KDQorRUZJX0hJSV9USU1FIDogJ0VGSV9ISUlfVElNRSc7DQoNCitFRklfSElJX1JFRiA6ICdF RklfSElJX1JFRic7DQoNCitVdWlkIDogJ2d1aWQnOw0KDQorQ2hlY2tCb3ggOiAnY2hlY2tib3gn Ow0KDQorRW5kQ2hlY2tCb3ggOiAnZW5kY2hlY2tib3gnOw0KDQorTnVtZXJpYyA6ICdudW1lcmlj JzsNCg0KK0VuZE51bWVyaWMgOiAnZW5kbnVtZXJpYyc7DQoNCitNaW5pbXVtIDogJ21pbmltdW0n Ow0KDQorTWF4aW11bSA6ICdtYXhpbXVtJzsNCg0KK1N0ZXAgOiAnc3RlcCc7DQoNCitEZWZhdWx0 IDogJ2RlZmF1bHQnOw0KDQorUGFzc3dvcmQgOiAncGFzc3dvcmQnOw0KDQorRW5kUGFzc3dvcmQg OiAnZW5kcGFzc3dvcmQnOw0KDQorU3RyaW5nIDogJ3N0cmluZyc7DQoNCitFbmRTdHJpbmcgOiAn ZW5kc3RyaW5nJzsNCg0KK01pblNpemUgOiAnbWluc2l6ZSc7DQoNCitNYXhTaXplIDogJ21heHNp emUnOw0KDQorRW5jb2RpbmcgOiAnZW5jb2RpbmcnOw0KDQorU3VwcHJlc3NJZiA6ICdzdXBwcmVz c2lmJzsNCg0KK0Rpc2FibGVJZiA6ICdkaXNhYmxlaWYnOw0KDQorSGlkZGVuIDogJ2hpZGRlbic7 DQoNCitHb3RvIDogJ2dvdG8nOw0KDQorRm9ybVNldEd1aWQgOiAnZm9ybXNldGd1aWQnOw0KDQor SW5jb25zaXN0ZW50SWYgOiAnaW5jb25zaXN0ZW50aWYnOw0KDQorV2FybmluZ0lmIDogJ3dhcm5p bmdpZic7DQoNCitOb1N1Ym1pdElmIDogJ25vc3VibWl0aWYnOw0KDQorRW5kSWYgOiAnZW5kaWYn Ow0KDQorS2V5IDogJ2tleSc7DQoNCitEZWZhdWx0RmxhZyA6ICdERUZBVUxUJzsNCg0KK01hbnVm YWN0dXJpbmdGbGFnIDogJ01BTlVGQUNUVVJJTkcnOw0KDQorQ2hlY2tCb3hEZWZhdWx0RmxhZyA6 ICdDSEVDS0JPWF9ERUZBVUxUJzsNCg0KK0NoZWNrQm94RGVmYXVsdE1mZ0ZsYWcgOiAnQ0hFQ0tC T1hfREVGQVVMVF9NRkcnOw0KDQorSW50ZXJhY3RpdmVGbGFnIDogJ0lOVEVSQUNUSVZFJzsNCg0K K05WQWNjZXNzRmxhZyA6ICdOVl9BQ0NFU1MnOw0KDQorUmVzZXRSZXF1aXJlZEZsYWcgOiAnUkVT RVRfUkVRVUlSRUQnOw0KDQorUmVjb25uZWN0UmVxdWlyZWRGbGFnIDogJ1JFQ09OTkVDVF9SRVFV SVJFRCc7DQoNCitMYXRlQ2hlY2tGbGFnIDogJ0xBVEVfQ0hFQ0snOw0KDQorUmVhZE9ubHlGbGFn IDogJ1JFQURfT05MWSc7DQoNCitPcHRpb25Pbmx5RmxhZyA6ICdPUFRJT05TX09OTFknOw0KDQor UmVzdFN0eWxlRmxhZyA6ICdSRVNUX1NUWUxFJzsNCg0KK0NsYXNzIDogJ2NsYXNzJzsNCg0KK1N1 YmNsYXNzIDogJ3N1YmNsYXNzJzsNCg0KK0NsYXNzR3VpZCA6ICdjbGFzc2d1aWQnOw0KDQorVHlw ZURlZiA6ICd0eXBlZGVmJzsNCg0KK1Jlc3RvcmUgOiAncmVzdG9yZSc7DQoNCitTYXZlIDogJ3Nh dmUnOw0KDQorRGVmYXVsdHMgOiAnZGVmYXVsdHMnOw0KDQorQmFubmVyIDogICdiYW5uZXInOw0K DQorQWxpZ24gOiAnYWxpZ24nOw0KDQorTGVmdCA6ICdsZWZ0JzsNCg0KK1JpZ2h0IDogJ3JpZ2h0 JzsNCg0KK0NlbnRlciA6ICdjZW50ZXInOw0KDQorTGluZSA6ICdsaW5lJzsNCg0KK05hbWUgOiAn bmFtZSc7DQoNCisNCg0KK1ZhcklkOiAndmFyaWQnOw0KDQorUXVlc3Rpb246ICdxdWVzdGlvbic7 DQoNCitRdWVzdGlvbklkOiAncXVlc3Rpb25pZCc7DQoNCitJbWFnZTogJ2ltYWdlJzsNCg0KK0xv Y2tlZDogJ2xvY2tlZCc7DQoNCitSdWxlOiAncnVsZSc7DQoNCitFbmRSdWxlOiAnZW5kcnVsZSc7 DQoNCitWYWx1ZTogJ3ZhbHVlJzsNCg0KK1JlYWQ6ICdyZWFkJzsNCg0KK1dyaXRlOiAnd3JpdGUn Ow0KDQorUmVzZXRCdXR0b246ICdyZXNldGJ1dHRvbic7DQoNCitFbmRSZXNldEJ1dHRvbjogJ2Vu ZHJlc2V0YnV0dG9uJzsNCg0KK0RlZmF1bHRTdG9yZTogJ2RlZmF1bHRzdG9yZSc7DQoNCitBdHRy aWJ1dGU6ICdhdHRyaWJ1dGUnOw0KDQorVmFyc3RvcmU6ICd2YXJzdG9yZSc7DQoNCitFZml2YXJz dG9yZTogJ2VmaXZhcnN0b3JlJzsNCg0KK1ZhclNpemU6ICd2YXJzaXplJzsNCg0KK05hbWVWYWx1 ZVZhclN0b3JlOiAnbmFtZXZhbHVldmFyc3RvcmUnOw0KDQorQWN0aW9uOiAnYWN0aW9uJzsNCg0K K0NvbmZpZzogJ2NvbmZpZyc7DQoNCitFbmRBY3Rpb246ICdlbmRhY3Rpb24nOw0KDQorUmVmcmVz aDogJ3JlZnJlc2gnOw0KDQorSW50ZXJ2YWw6ICdpbnRlcnZhbCc7DQoNCitWYXJzdG9yZURldmlj ZTogJ3ZhcnN0b3JlZGV2aWNlJzsNCg0KK0d1aWRPcDogJ2d1aWRvcCc7DQoNCitFbmRHdWlkT3A6 ICdlbmRndWlkb3AnOw0KDQorRGF0YVR5cGU6ICdkYXRhdHlwZSc7DQoNCitEYXRhOiAnZGF0YSc7 DQoNCitNb2RhbDogJ21vZGFsJzsNCg0KKw0KDQorLy8NCg0KKy8vIERlZmluZSB0aGUgY2xhc3Mg YW5kIHN1YmNsYXNzIHRva2Vucw0KDQorLy8NCg0KKy8vDQoNCitDbGFzc05vbkRldmljZTogJ05P Tl9ERVZJQ0UnOw0KDQorQ2xhc3NEaXNrRGV2aWNlOiAnRElTS19ERVZJQ0UnOw0KDQorQ2xhc3NW aWRlb0RldmljZTogJ1ZJREVPX0RFVklDRSc7DQoNCitDbGFzc05ldHdvcmtEZXZpY2U6ICdORVRX T1JLX0RFVklDRSc7DQoNCitDbGFzc0lucHV0RGV2aWNlOiAnSU5QVVRfREVWSUNFJzsNCg0KK0Ns YXNzT25Cb2FyZERldmljZTogJ09OQk9BUkRfREVWSUNFJzsNCg0KK0NsYXNzT3RoZXJEZXZpY2U6 ICdPVEhFUl9ERVZJQ0UnOw0KDQorDQoNCitTdWJjbGFzc1NldHVwQXBwbGljYXRpb246ICdTRVRV UF9BUFBMSUNBVElPTic7DQoNCitTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbjogJ0dFTkVSQUxf QVBQTElDQVRJT04nOw0KDQorU3ViY2xhc3NGcm9udFBhZ2U6ICdGUk9OVF9QQUdFJzsNCg0KK1N1 YmNsYXNzU2luZ2xlVXNlOiAnU0lOR0xFX1VTRSc7DQoNCisNCg0KK1llYXJTdXBwcHJlc3NGbGFn OiAnWUVBUl9TVVBQUkVTUyc7DQoNCitNb250aFN1cHByZXNzRmxhZzogJ01PTlRIX1NVUFBSRVNT JzsNCg0KK0RheVN1cHByZXNzRmxhZzogJ0RBWV9TVVBQUkVTUyc7DQoNCitIb3VyU3VwcHByZXNz RmxhZzogJ0hPVVJfU1VQUFJFU1MnOw0KDQorTWludXRlU3VwcHJlc3NGbGFnOiAnTUlOVVRFX1NV UFBSRVNTJzsNCg0KK1NlY29uZFN1cHByZXNzRmxhZzogJ1NFQ09ORF9TVVBQUkVTUyc7DQoNCitT dG9yYWdlTm9ybWFsRmxhZzogJ1NUT1JBR0VfTk9STUFMJzsNCg0KK1N0b3JhZ2VUaW1lRmxhZzog J1NUT1JBR0VfVElNRSc7DQoNCitTdG9yYWdlV2FrZVVwRmxhZzogJ1NUT1JBR0VfV0FLRVVQJzsN Cg0KKw0KDQorVW5pUXVlRmxhZzogJ1VOSVFVRSc7DQoNCitOb0VtcHR5RmxhZzogJ05PRU1QVFkn Ow0KDQorDQoNCitDb25kOiAnY29uZCc7DQoNCitGaW5kOiAnZmluZCc7DQoNCitNaWQ6ICdtaWQn Ow0KDQorVG9rOiAndG9rZW4nOw0KDQorU3BhbjogJ3NwYW4nOw0KDQorDQoNCisvLyBUaGUgc3lu dGF4IG9mIGV4cHJlc3Npb24NCg0KKw0KDQorRHVwOiAnZHVwJzsNCg0KK1ZhckVxVmFsOiAndmFy ZXF2YWwnOw0KDQorVmFyOiAndmFyJzsNCg0KK0lkRXFWYWw6ICdpZGVxdmFsJzsNCg0KK0lkRXFJ ZDogJ2lkZXFpZCc7DQoNCitJZEVxVmFsTGlzdDogJ2lkZXF2YWxsaXN0JzsNCg0KK1F1ZXN0aW9u UmVmOiAncXVlc3Rpb25yZWYnOw0KDQorUnVsZVJlZjogJ3J1bGVyZWYnOw0KDQorU3RyaW5nUmVm OiAnc3RyaW5ncmVmJzsNCg0KK1B1c2hUaGlzOiAncHVzaHRoaXMnOw0KDQorU2VjdXJpdHk6ICdz ZWN1cml0eSc7DQoNCitHZXQ6ICdnZXQnOw0KDQorVHJ1ZVN5bWJvbDogJ1RSVUUnOw0KDQorRmFs c2VTeW1ib2w6ICdGQUxTRSc7DQoNCitPbmU6ICdPTkUnOw0KDQorT25lczogJ09ORVMnOw0KDQor WmVybzogJ1pFUk8nOw0KDQorVW5kZWZpbmVkOiAnVU5ERUZJTkVEJzsNCg0KK1ZlcnNpb246ICdW RVJTSU9OJzsNCg0KK0xlbmd0aDogJ2xlbmd0aCc7DQoNCitBTkQ6ICdBTkQnOw0KDQorT1I6ICdP Uic7DQoNCitOT1Q6ICdOT1QnOw0KDQorU2V0OiAnc2V0JzsNCg0KK0JpdFdpc2VOb3Q6ICd+JzsN Cg0KK0Jvb2xWYWw6ICdib29sdmFsJzsNCg0KK1N0cmluZ1ZhbDogJ3N0cmluZ3ZhbCc7DQoNCitV bkludFZhbDogJ3VuaW50dmFsJzsNCg0KK1RvVXBwZXI6ICd0b3VwcGVyJzsNCg0KK1RvTG93ZXI6 ICd0b2xvd2VyJzsNCg0KK01hdGNoOiAnbWF0Y2gnOw0KDQorTWF0Y2gyOiAnbWF0Y2gyJzsNCg0K K0NhdGVuYXRlOiAnY2F0ZW5hdGUnOw0KDQorUXVlc3Rpb25SZWZWYWw6ICdxdWVzdGlvbnJlZnZh bCc7DQoNCitTdHJpbmdSZWZWYWw6ICdzdHJpbmdyZWZ2YWwnOw0KDQorTWFwOiAnbWFwJzsNCg0K K1JlZnJlc2hHdWlkOiAncmVmcmVzaGd1aWQnOw0KDQorU3RyaW5nVG9rZW46ICdTVFJJTkdfVE9L RU4nOw0KDQorDQoNCitPcHRpb25EZWZhdWx0OiAnT1BUSU9OX0RFRkFVTFQnOw0KDQorT3B0aW9u RGVmYXVsdE1mZzogJ09QVElPTl9ERUZBVUxUX01GRyc7DQoNCisNCg0KK051bWVyaWNTaXplT25l OiAnTlVNRVJJQ19TSVpFXzEnOw0KDQorTnVtZXJpY1NpemVUd286ICdOVU1FUklDX1NJWkVfMic7 DQoNCitOdW1lcmljU2l6ZUZvdXI6ICdOVU1FUklDX1NJWkVfNCc7DQoNCitOdW1lcmljU2l6ZUVp Z2h0OiAnTlVNRVJJQ19TSVpFXzgnOw0KDQorRGlzUGxheUludERlYzogJ0RJU1BMQVlfSU5UX0RF Qyc7DQoNCitEaXNQbGF5VUludERlYzogJ0RJU1BMQVlfVUlOVF9ERUMnOw0KDQorRGlzUGxheVVJ bnRIZXg6ICdESVNQTEFZX1VJTlRfSEVYJzsNCg0KKw0KDQorSW5zZW5zaXRpdmU6ICAnSU5TRU5T SVRJVkUnOw0KDQorU2Vuc2l0aXZlOiAnU0VOU0lUSVZFJzsNCg0KKw0KDQorTGFzdE5vbk1hdGNo OiAnTEFTVF9OT05fTUFUQ0gnOw0KDQorRmlyc3ROb25NYXRjaDogJ0ZJUlNUX05PTl9NQVRDSCc7 DQoNCisNCg0KKw0KDQorDQoNCitOdW1iZXINCg0KKyAgICA6ICAgKCcweCdbMC05QS1GYS1mXSsp IHwgWzAtOV0rDQoNCisgICAgOw0KDQorDQoNCitTdHJpbmdJZGVudGlmaWVyDQoNCisgICAgOiAg IFtBLVphLXpfXVtBLVphLXpfMC05XSoNCg0KKyAgICA7DQoNCisNCg0KK0NvbXBsZXhEZWZpbmUN Cg0KKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdkZWZpbmUnICB+WyNcclxuXSoNCg0KKyAgICAg ICAgLT4gc2tpcA0KDQorICAgIDsNCg0KKw0KDQorDQoNCitMaW5lRGVmaW5pdGlvbg0KDQorICAg IDogICAnIycgV2hpdGVzcGFjZT8gJ2xpbmUnICB+WyNcclxuXSoNCg0KKyAgICAgICAgLT4gc2tp cA0KDQorICAgIDsNCg0KKw0KDQorSW5jbHVkZURlZmluaXRpb24NCg0KKyAgICA6ICAgJyMnIFdo aXRlc3BhY2U/ICdpbmNsdWRlJyAgflsjXHJcbl0qDQoNCisgICAgICAgIC0+IHNraXANCg0KKyAg ICA7DQoNCisNCg0KK1doaXRlc3BhY2UNCg0KKyAgICA6ICAgWyBcdF0rDQoNCisgICAgICAgIC0+ IHNraXANCg0KKyAgICA7DQoNCisNCg0KK05ld2xpbmUNCg0KKyAgICA6ICAgKCAgICdccicgJ1xu Jz8NCg0KKyAgICAgICAgfCAgICdcbicNCg0KKyAgICAgICAgKQ0KDQorICAgICAgICAtPiBza2lw DQoNCisgICAgOw0KDQorDQoNCitMaW5lQ29tbWVudA0KDQorICAgIDogICAnLy8nIH5bXHJcbl0q DQoNCisgICAgICAgIC0+IHNraXANCg0KKyAgICA7DQoNCisNCg0KKy8vIFNraXAgb3ZlciAnZXh0 ZXJuJyBpbiBhbnkgaW5jbHVkZWQgLkggZmlsZQ0KDQorRXh0ZXJuDQoNCisgICAgOiAnZXh0ZXJu JyB+WyNcclxuXSoNCg0KKyAgICAgICAgLT4gc2tpcA0KDQorICAgIDsNClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNv bXBpbGVyL1ZmclN5bnRheExleGVyLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvVmZyU3ludGF4TGV4ZXIucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwLi4yYjdhNWMzMmEzDQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNl L1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhMZXhlci5weQ0KQEAgLTAsMCArMSwxNzA5IEBA DQorIyBHZW5lcmF0ZWQgZnJvbSBWZnJTeW50YXguZzQgYnkgQU5UTFIgNC43LjINCg0KK2Zyb20g YW50bHI0IGltcG9ydCAqDQoNCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJTw0KDQorZnJvbSB0eXBp bmcgaW1wb3J0IFRleHRJTw0KDQoraW1wb3J0IHN5cw0KDQorDQoNCisNCg0KKw0KDQorZnJvbSBW ZnJDb21waWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZy Rm9ybVBrZyBpbXBvcnQgKg0KDQorZnJvbSBWZnJDb21waWxlci5WZnJVdGlsaXR5IGltcG9ydCAq DQoNCitmcm9tIFZmckNvbXBpbGVyLlZmclRyZWUgaW1wb3J0ICoNCg0KKw0KDQorDQoNCisNCg0K K2RlZiBzZXJpYWxpemVkQVROKCk6DQoNCisgICAgd2l0aCBTdHJpbmdJTygpIGFzIGJ1ZjoNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1NjA4Ylx1YTcyYVx1ODEzM1x1YjllZFx1NDE3Y1x1M2Jl N1x1Nzc4Nlx1NTk2NFwyXHUwMTAyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhYjdcYlwx XDRcMlx0XDJcNFwzXHRcM1w0XDRcdFw0XDRcNVx0XDVcNFw2XHRcNlw0XDciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx0XDdcNFxiXHRcYlw0XHRcdFx0XDRcblx0XG5cNFwxM1x0XDEzXDRcZlx0 XGZcNFxyXHRcciIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMTZcdFwxNlw0XDE3XHRcMTdc NFwyMFx0XDIwXDRcMjFcdFwyMVw0XDIyXHRcMjJcNFwyMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHRcMjNcNFwyNFx0XDI0XDRcMjVcdFwyNVw0XDI2XHRcMjZcNFwyN1x0XDI3XDRcMzBcdFwz MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzFcdFwzMVw0XDMyXHRcMzJcNFwzM1x0XDMz XDRcMzRcdFwzNFw0XDM1XHRcMzVcNFwzNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcMzZc NFwzN1x0XDM3XDQgXHQgXDQhXHQhXDRcIlx0XCJcNCNcdCNcNCRcdCRcNCVcdCUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw0Jlx0Jlw0XCdcdFwnXDQoXHQoXDQpXHQpXDQqXHQqXDQrXHQrXDQs XHQsXDQtXHQtXDQuIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdC5cNC9cdC9cNFw2MFx0XDYw XDRcNjFcdFw2MVw0XDYyXHRcNjJcNFw2M1x0XDYzXDRcNjQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx0XDY0XDRcNjVcdFw2NVw0XDY2XHRcNjZcNFw2N1x0XDY3XDQ4XHQ4XDQ5XHQ5XDQ6XHQ6 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNDtcdDtcNDxcdDxcND1cdD1cND5cdD5cND9cdD9c NEBcdEBcNEFcdEFcNEJcdEJcNENcdCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiQ1w0RFx0RFw0 RVx0RVw0Rlx0Rlw0R1x0R1w0SFx0SFw0SVx0SVw0Slx0Slw0S1x0S1w0TFx0IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJMXDRNXHRNXDROXHROXDRPXHRPXDRQXHRQXDRRXHRRXDRSXHRSXDRTXHRT XDRUXHRUXDRVXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlVcNFZcdFZcNFdcdFdcNFhcdFhc NFlcdFlcNFpcdFpcNFtcdFtcNFxcXHRcXFw0XVx0XVw0IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJeXHReXDRfXHRfXDRgXHRgXDRhXHRhXDRiXHRiXDRjXHRjXDRkXHRkXDRlXHRlXDRmXHRmXDQi KQ0KDQorICAgICAgICBidWYud3JpdGUoImdcdGdcNGhcdGhcNGlcdGlcNGpcdGpcNGtcdGtcNGxc dGxcNG1cdG1cNG5cdG5cNG9cdG9cNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgicFx0cFw0cVx0 cVw0clx0clw0c1x0c1w0dFx0dFw0dVx0dVw0dlx0dlw0d1x0d1w0eFx0eFw0IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJ5XHR5XDR6XHR6XDR7XHR7XDR8XHR8XDR9XHR9XDR+XHR+XDRcMTc3XHRc MTc3XDRcdTAwODAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMDgwXDRcdTAwODFcdFx1 MDA4MVw0XHUwMDgyXHRcdTAwODJcNFx1MDA4M1x0XHUwMDgzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNFx1MDA4NFx0XHUwMDg0XDRcdTAwODVcdFx1MDA4NVw0XHUwMDg2XHRcdTAwODZcNFx1 MDA4NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwODdcNFx1MDA4OFx0XHUwMDg4XDRc dTAwODlcdFx1MDA4OVw0XHUwMDhhXHRcdTAwOGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0 XHUwMDhiXHRcdTAwOGJcNFx1MDA4Y1x0XHUwMDhjXDRcdTAwOGRcdFx1MDA4ZFw0XHUwMDhlIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDA4ZVw0XHUwMDhmXHRcdTAwOGZcNFx1MDA5MFx0 XHUwMDkwXDRcdTAwOTFcdFx1MDA5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwOTJc dFx1MDA5Mlw0XHUwMDkzXHRcdTAwOTNcNFx1MDA5NFx0XHUwMDk0XDRcdTAwOTUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx0XHUwMDk1XDRcdTAwOTZcdFx1MDA5Nlw0XHUwMDk3XHRcdTAwOTdc NFx1MDA5OFx0XHUwMDk4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDA5OVx0XHUwMDk5 XDRcdTAwOWFcdFx1MDA5YVw0XHUwMDliXHRcdTAwOWJcNFx1MDA5YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHRcdTAwOWNcNFx1MDA5ZFx0XHUwMDlkXDRcdTAwOWVcdFx1MDA5ZVw0XHUwMDlm XHRcdTAwOWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGEwXHRcdTAwYTBcNFx1MDBh MVx0XHUwMGExXDRcdTAwYTJcdFx1MDBhMlw0XHUwMGEzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdFx1MDBhM1w0XHUwMGE0XHRcdTAwYTRcNFx1MDBhNVx0XHUwMGE1XDRcdTAwYTZcdFx1MDBh NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwYTdcdFx1MDBhN1w0XHUwMGE4XHRcdTAw YThcNFx1MDBhOVx0XHUwMGE5XDRcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUw MGFhXDRcdTAwYWJcdFx1MDBhYlw0XHUwMGFjXHRcdTAwYWNcNFx1MDBhZFx0XHUwMGFkIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBhZVx0XHUwMGFlXDRcdTAwYWZcdFx1MDBhZlw0XHUw MGIwXHRcdTAwYjBcNFx1MDBiMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwYjFcNFx1 MDBiMlx0XHUwMGIyXDRcdTAwYjNcdFx1MDBiM1w0XHUwMGI0XHRcdTAwYjQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw0XHUwMGI1XHRcdTAwYjVcNFx1MDBiNlx0XHUwMGI2XDRcdTAwYjdcdFx1 MDBiN1w0XHUwMGI4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBiOFw0XHUwMGI5XHRc dTAwYjlcNFx1MDBiYVx0XHUwMGJhXDRcdTAwYmJcdFx1MDBiYiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDRcdTAwYmNcdFx1MDBiY1w0XHUwMGJkXHRcdTAwYmRcNFx1MDBiZVx0XHUwMGJlXDRc dTAwYmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGJmXDRcdTAwYzBcdFx1MDBjMFw0 XHUwMGMxXHRcdTAwYzFcNFx1MDBjMlx0XHUwMGMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc NFx1MDBjM1x0XHUwMGMzXDRcdTAwYzRcdFx1MDBjNFw0XHUwMGM1XHRcdTAwYzVcNFx1MDBjNiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwYzZcNFx1MDBjN1x0XHUwMGM3XDRcdTAwYzhc dFx1MDBjOFw0XHUwMGM5XHRcdTAwYzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGNh XHRcdTAwY2FcNFx1MDBjYlx0XHUwMGNiXDRcdTAwY2NcdFx1MDBjY1w0XHUwMGNkIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdFx1MDBjZFw0XHUwMGNlXHRcdTAwY2VcNFx1MDBjZlx0XHUwMGNm XDRcdTAwZDBcdFx1MDBkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwZDFcdFx1MDBk MVw0XHUwMGQyXHRcdTAwZDJcNFx1MDBkM1x0XHUwMGQzXDRcdTAwZDQiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx0XHUwMGQ0XDRcdTAwZDVcdFx1MDBkNVw0XHUwMGQ2XHRcdTAwZDZcNFx1MDBk N1x0XHUwMGQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBkOFx0XHUwMGQ4XDRcdTAw ZDlcdFx1MDBkOVw0XHUwMGRhXHRcdTAwZGFcNFx1MDBkYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHRcdTAwZGJcNFx1MDBkY1x0XHUwMGRjXDRcdTAwZGRcdFx1MDBkZFw0XHUwMGRlXHRcdTAw ZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGRmXHRcdTAwZGZcNFx1MDBlMFx0XHUw MGUwXDRcdTAwZTFcdFx1MDBlMVw0XHUwMGUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1 MDBlMlw0XHUwMGUzXHRcdTAwZTNcNFx1MDBlNFx0XHUwMGU0XDRcdTAwZTVcdFx1MDBlNSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwZTZcdFx1MDBlNlw0XHUwMGU3XHRcdTAwZTdcNFx1 MDBlOFx0XHUwMGU4XDRcdTAwZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGU5XDRc dTAwZWFcdFx1MDBlYVw0XHUwMGViXHRcdTAwZWJcNFx1MDBlY1x0XHUwMGVjIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcNFx1MDBlZFx0XHUwMGVkXDRcdTAwZWVcdFx1MDBlZVw0XHUwMGVmXHRc dTAwZWZcNFx1MDBmMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwZjBcNFx1MDBmMVx0 XHUwMGYxXDRcdTAwZjJcdFx1MDBmMlw0XHUwMGYzXHRcdTAwZjMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw0XHUwMGY0XHRcdTAwZjRcNFx1MDBmNVx0XHUwMGY1XDRcdTAwZjZcdFx1MDBmNlw0 XHUwMGY3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBmN1w0XHUwMGY4XHRcdTAwZjhc NFx1MDBmOVx0XHUwMGY5XDRcdTAwZmFcdFx1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDRcdTAwZmJcdFx1MDBmYlw0XHUwMGZjXHRcdTAwZmNcNFx1MDBmZFx0XHUwMGZkXDRcdTAwZmUi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGZlXDRcdTAwZmZcdFx1MDBmZlw0XHUwMTAw XHRcdTAxMDBcNFx1MDEwMVx0XHUwMTAxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDNc MlwzXDJcM1wyXDNcMlwzXDNcM1wzXDNcM1wzXDNcM1wzXDNcNFwzXDRcM1w0XDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw0XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w2XDNc NlwzXDZcM1w2XDNcNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcN1wzXDdcM1xiXDNcYlwz XGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcYlwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcblwz XG4iKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXG5cM1xuXDNcblwzXG5cM1xuXDNcblwzXG5c M1xuXDNcblwzXDEzXDNcMTNcM1wxM1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcZlwzXGZc M1xmXDNcclwzXHJcM1wxNlwzXDE2XDNcMTdcM1wxN1wzXDIwXDNcMjBcM1wyMCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMjBcM1wyMFwzXDIwXDNcMjBcM1wyMVwzXDIxXDNcMjJcM1wyMlwz XDIyXDNcMjJcM1wyMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjJcM1wyMlwzXDIyXDNc MjNcM1wyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDNcMjNcM1wyMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMjNcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRc M1wyNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjRcM1wyNFwzXDI1XDNcMjVcM1wyNlwz XDI2XDNcMjdcM1wyN1wzXDMwXDNcMzBcM1wzMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MzFcM1wzMlwzXDMyXDNcMzNcM1wzM1wzXDM0XDNcMzRcM1wzNVwzXDM1XDNcMzZcM1wzNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzdcM1wzN1wzIFwzIFwzIVwzIVwzIVwzXCJcM1wiXDNc IlwzI1wzI1wzI1wzJFwzJFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIlXDMlXDMlXDMmXDMm XDNcJ1wzXCdcMyhcMyhcMylcMylcMylcMylcMylcMylcMylcMylcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiKVwzKVwzKVwzKlwzKlwzKlwzKlwzKlwzKlwzKlwzKlwzK1wzK1wzK1wzK1wzK1wz K1wzK1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIrXDMrXDMrXDMsXDMsXDMsXDMsXDMsXDMs XDMsXDMsXDMsXDMsXDMsXDMtXDMtXDMtXDMtXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIi1c My1cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy9cMy9cMy9cMy9cMy9cMy9cM1w2MFwzXDYwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1w2MFwzXDYwXDNcNjBcM1w2MFwzXDYwXDNcNjBcM1w2MFwz XDYxXDNcNjFcM1w2MVwzXDYxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2MVwzXDYxXDNc NjFcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNc M1w2M1wzXDYzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2M1wzXDYzXDNcNjNcM1w2M1wz XDYzXDNcNjNcM1w2M1wzXDY0XDNcNjRcM1w2NFwzXDY0IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NVwzXDY2XDNcNjZcM1w2NlwzXDY2XDNcNjZc M1w2N1wzXDY3XDNcNjdcM1w2N1wzXDY3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2N1wz XDY3XDNcNjdcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzlcMzlcMzlcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiOVwzOVwzOVwzOVwzOVwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwz O1wzO1wzO1wzO1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCI7XDM7XDM7XDM7XDM7XDM7XDM7 XDM7XDM8XDM8XDM8XDM8XDM8XDM9XDM9XDM9XDM9XDM9XDMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIj5cMz5cMz5cMz5cMz5cMz5cMz5cMz9cMz9cMz9cMz9cMz9cMz9cM0BcM0BcM0BcM0BcM0Bc MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQlwzQlwz QlwzQlwzQlwzQ1wzQ1wzQ1wzQ1wzQ1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJDXDNEXDNE XDNEXDNEXDNFXDNFXDNFXDNFXDNFXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIkdcM0dcM0dcM0dcM0dcM0hcM0hcM0hcM0hcM0hcM0hcM0hcM0lcM0lc M0lcM0lcM0lcM0lcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiSVwzSlwzSlwzSlwzSlwzSlwz SlwzSlwzSlwzSlwzSlwzS1wzS1wzS1wzS1wzS1wzS1wzTFwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJMXDNMXDNMXDNMXDNMXDNMXDNMXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNO XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIk5cM05cM05cM05cM05cM05cM05cM05cM05cM05c M05cM05cM05cM05cM05cM05cM09cM09cMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiT1wzT1wz T1wzT1wzT1wzUFwzUFwzUFwzUFwzUFwzUFwzUVwzUVwzUVwzUVwzUVwzUVwzUVwzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJRXDNSXDNSXDNSXDNSXDNSXDNSXDNSXDNTXDNTXDNTXDNTXDNTXDNT XDNTXDNUXDNUXDNUXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlRcM1RcM1RcM1RcM1VcM1Vc M1VcM1VcM1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiVlwzVlwzVlwzVlwzVlwzVlwzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wz V1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJXXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNY XDNYXDNYXDNYXDNYXDNZXDNZXDNZXDNZXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIllcM1lc M1lcM1lcM1lcM1lcM1lcM1lcM1pcM1pcM1pcM1pcM1pcM1tcM1tcM1tcM1tcM1tcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiW1wzW1wzW1wzW1wzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxc M1xcXDNcXFwzXFxcM1xcIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1xcXDNdXDNdXDNdXDNd XDNdXDNdXDNdXDNdXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIl5cM15cM15cM19cM19cM19cM19cM19cM19cM19cM19cM2BcM2BcM2BcM2BcM2BcM2Bc M2BcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiYFwzYVwzYVwzYVwzYVwzYVwzYlwzYlwzYlwz YlwzYlwzYlwzYlwzYlwzY1wzY1wzY1wzY1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJjXDNj XDNjXDNjXDNjXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNlXDMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2VcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2Zc M2ZcM2ZcM2ZcM2dcM2dcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiZ1wzZ1wzZ1wzZ1wzZ1wz Z1wzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaVwzaVwzaVwzaVwzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJpXDNpXDNpXDNpXDNpXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNr XDNrXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoImtcM2tcM2tcM2tcM2tcM2tcM2tcM2tcM2xc M2xcM2xcM2xcM2xcM2xcM2xcM21cM21cM21cMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgibVwz bVwzblwzblwzblwzblwzblwzblwzblwzblwzblwzblwzblwzblwzb1wzb1wzb1wzb1wzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNwXDNw XDNwXDNwXDNwXDNwXDNwXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInBcM3BcM3BcM3FcM3Fc M3FcM3FcM3FcM3FcM3FcM3FcM3FcM3FcM3FcM3JcM3JcM3JcM3JcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiclwzclwzc1wzc1wzc1wzc1wzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdVwzdVwz dVwzdVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1 XDN1XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInZc M3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgid1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wz eFwzeFwzeFwzeFwzeFwzeFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ4XDN4XDN4XDN4XDN4 XDN4XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN6XDN6XDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoInpcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3tcM3tcM3tc M3tcM3tcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgie1wze1wze1wze1wze1wze1wze1wze1wz e1wze1wze1wze1wze1wze1wzfFwzfFwzfFwzfFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ8 XDN8XDN8XDN8XDN8XDN8XDN8XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN+XDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIn5cM35cM35cM35cM35cM35cM35cM35cM35cM35cM35cM35c M1wxNzdcM1wxNzdcM1wxNzdcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE3N1wzXDE3N1wz XDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXHUwMDgwIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDA4MFwzXHUwMDgwXDNcdTAwODBcM1x1MDA4MFwzXHUwMDgwXDNcdTAw ODFcM1x1MDA4MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODFcM1x1MDA4MVwzXHUw MDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNcdTAwODEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUw MDgyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1 MDA4M1wzXHUwMDgzXDNcdTAwODNcM1x1MDA4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODNcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNc dTAwODRcM1x1MDA4NVwzXHUwMDg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4NVwz XHUwMDg1XDNcdTAwODVcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4Nlwz XHUwMDg3XDNcdTAwODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg3XDNcdTAwODdc M1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4OFwzXHUwMDg4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg5XDNcdTAwODlc M1x1MDA4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODlcM1x1MDA4OVwzXHUwMDhh XDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGEiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMDhhXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4 Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw OGRcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGRcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhmXDNcdTAw OGZcM1x1MDA4ZlwzXHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUw MDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOTBcM1x1MDA5MCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MFwzXHUw MDkwXDNcdTAwOTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTBcM1x1 MDA5MVwzXHUwMDkxXDNcdTAwOTFcM1x1MDA5MVwzXHUwMDkxIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDA5MVwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkyXDNcdTAwOTJcM1x1 MDA5MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOTJcM1x1MDA5M1wzXHUwMDkzXDNc dTAwOTNcM1x1MDA5M1wzXHUwMDkzXDNcdTAwOTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5NVwzXHUwMDk1XDNcdTAwOTVcM1x1MDA5NVwz XHUwMDk1XDNcdTAwOTVcM1x1MDA5NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOTZc M1x1MDA5NlwzXHUwMDk2XDNcdTAwOTZcM1x1MDA5N1wzXHUwMDk3XDNcdTAwOTciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMDk3XDNcdTAwOTdcM1x1MDA5N1wzXHUwMDk4XDNcdTAwOThc M1x1MDA5OFwzXHUwMDk4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5OFwzXHUwMDk4 XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwOThcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5 XDNcdTAwOTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5 OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5 YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAw OWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MDlhXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUw MDljXDNcdTAwOWNcM1x1MDA5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWNcM1x1 MDA5Y1wzXHUwMDljXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcM1x1 MDA5ZFwzXHUwMDlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5ZFwzXHUwMDlkXDNc dTAwOWRcM1x1MDA5ZFwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDlmXDNc dTAwOWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5Zlwz XHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMGEwXDNcdTAwYTBc M1x1MDBhMFwzXHUwMGEwXDNcdTAwYTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGEw XDNcdTAwYTBcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEy XDNcdTAwYTJcM1x1MDBhMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTJcM1x1MDBh MlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEzXDNcdTAwYTMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBh M1wzXHUwMGE0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhNFwzXHUwMGE0XDNcdTAw YTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwYTRcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAw YTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUw MGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBhNVwzXHUwMGE1XDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE3XDNcdTAwYTdcM1x1 MDBhN1wzXHUwMGE3XDNcdTAwYTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGE3XDNc dTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhOFwzXHUwMGE4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNc dTAwYThcM1x1MDBhOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTlcM1x1MDBhOVwz XHUwMGE5XDNcdTAwYTlcM1x1MDBhOVwzXHUwMGFhXDNcdTAwYWEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWJcM1x1MDBhYlwz XHUwMGFiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJc M1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwYWJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFj XDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBh ZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBh ZFwzXHUwMGFlXDNcdTAwYWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGFlXDNcdTAw YWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAw YWVcM1x1MDBhZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWZcM1x1MDBhZlwzXHUw MGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBiMFwzXHUw MGIwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1 MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNc dTAwYjFcM1x1MDBiMVwzXHUwMGIxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMVwz XHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjJcM1x1MDBiMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwz XHUwMGIyXDNcdTAwYjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJc M1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNc M1x1MDBiMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIz XDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiM1wzXHUwMGI0XDNcdTAwYjRcM1x1MDBi NFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw YjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI1XDNcdTAwYjUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAw YjVcM1x1MDBiNVwzXHUwMGI1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiNVwzXHUw MGI1XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUw MGI2XDNcdTAwYjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1 MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1 MDBiNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNc dTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjlcM1x1MDBiOVwz XHUwMGI5XDNcdTAwYjlcM1x1MDBiOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjlc M1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFc M1x1MDBiYVwzXHUwMGJhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiYVwzXHUwMGJh XDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYlwzXHUwMGJi XDNcdTAwYmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBi YlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBi YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAw YmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUw MGJkXDNcdTAwYmRcM1x1MDBiZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYmRcM1x1 MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1 MDBiZVwzXHUwMGJlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiZVwzXHUwMGJlXDNc dTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNc dTAwYmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwz XHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDBjMFwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzJcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJc M1x1MDBjM1wzXHUwMGMzXDNcdTAwYzMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMz XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1 XDNcdTAwYzZcM1x1MDBjNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzZcM1x1MDBj NlwzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzhcM1x1MDBj OFwzXHUwMGM4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjOFwzXHUwMGM5XDNcdTAw YzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNhXDNcdTAw Y2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYlwzXHUw MGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1 MDBjY1wzXHUwMGNjXDNcdTAwY2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGNjXDNc dTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjZFwzXHUwMGNkIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNkXDNc dTAwY2RcM1x1MDBjZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwY2VcM1x1MDBjZVwz XHUwMGNlXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2UiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBjZlwz XHUwMGNmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2Zc M1x1MDBjZlwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGQxXDNcdTAwZDFcM1x1MDBkMVwzXHUwMGQy XDNcdTAwZDJcM1x1MDBkMlwzXHUwMGQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBk MlwzXHUwMGQzXDNcdTAwZDNcM1x1MDBkM1wzXHUwMGQzXDNcdTAwZDNcM1x1MDBkMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZDRcM1x1MDBkNFwzXHUwMGQ0XDNcdTAwZDRcM1x1MDBk NVwzXHUwMGQ1XDNcdTAwZDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGQ1XDNcdTAw ZDVcM1x1MDBkNlwzXHUwMGQ2XDNcdTAwZDZcM1x1MDBkNlwzXHUwMGQ2IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAw ZDdcM1x1MDBkNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZDdcM1x1MDBkN1wzXHUw MGQ3XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4XDNcdTAwZDgiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGQ4XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4XDNcdTAwZDlcM1x1MDBkOVwzXHUw MGQ5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZDlcM1x1 MDBkOVwzXHUwMGRhXDNcdTAwZGFcM1x1MDBkYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwZGFcM1x1MDBkYlwzXHUwMGRiXDNcdTAwZGJcM1x1MDBkY1wzXHUwMGRjXDNcdTAwZGMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGRjXDNcdTAwZGRcM1x1MDBkZFwzXHUwMGRkXDNc dTAwZGRcM1x1MDBkZVwzXHUwMGRlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBkZlwz XHUwMGRmXDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAwZGZcM1x1MDBkZiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwZGZcM1x1MDBlMFwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMFwz XHUwMGUwXDNcdTAwZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGUwXDNcdTAwZTBc M1x1MDBlMFwzXHUwMGUwXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFc M1x1MDBlMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUy XDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAwZTIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlM1wzXHUwMGU0XDNcdTAwZTRcM1x1MDBl NFwzXHUwMGU0XDNcdTAwZTRcM1x1MDBlNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw ZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAwZTUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU2XDNcdTAw ZTZcM1x1MDBlNlwzXHUwMGU2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlNlwzXHUw MGU2XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlNyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUw MGU3XDNcdTAwZTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGU3XDNcdTAwZTdcM1x1 MDBlN1wzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1 MDBlOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZThcM1x1MDBlOFwzXHUwMGU5XDNc dTAwZTlcM1x1MDBlOVwzXHUwMGU5XDNcdTAwZWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwz XHUwMGViXDNcdTAwZWJcM1x1MDBlYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZWJc M1x1MDBlYlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGVjXDNcdTAwZWNc M1x1MDBlY1wzXHUwMGVjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlY1wzXHUwMGVj XDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlYyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlZFwzXHUwMGVk XDNcdTAwZWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGVkXDNcdTAwZWRcM1x1MDBl ZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBl ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVlXDNcdTAw ZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZlwzXHUw MGVmXDNcdTAwZWZcM1x1MDBlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZWZcM1x1 MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZjBcM1x1 MDBmMFwzXHUwMGYwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmMFwzXHUwMGYwXDNc dTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYxXDNc dTAwZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwz XHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJc M1x1MDBmMlwzXHUwMGYyXDNcdTAwZjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGYy XDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDBmMlwzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYz XDNcdTAwZjNcM1x1MDBmMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjNcM1x1MDBm M1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjRcM1x1MDBm NFwzXHUwMGY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmNFwzXHUwMGY0XDNcdTAw ZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAw ZjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUw MGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBmNVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjZcM1x1MDBmNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjZcM1x1MDBmNlwzXHUwMGY2XDNcdTAwZjZcM1x1 MDBmNlwzXHUwMGY2XDNcdTAwZjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGY2XDNc dTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNc dTAwZjdcM1x1MDBmNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjdcM1x1MDBmN1wz XHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjgiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwz XHUwMGY4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhc M1x1MDBmOFwzXHUwMGY5XDNcdTAwZjlcM1x1MDBmOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwZjlcNlx1MDBmOVx1MGE0NFxuXHUwMGY5XHJcdTAwZjlcMTZcdTAwZjlcdTBhNDUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGY5XDZcdTAwZjlcdTBhNDlcblx1MDBmOVxyXHUw MGY5XDE2XHUwMGY5XHUwYTRhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDBmOVx1MGE0 ZFxuXHUwMGY5XDNcdTAwZmFcM1x1MDBmYVw3XHUwMGZhXHUwYTUxXG4iKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDBmYVxmXHUwMGZhXDE2XHUwMGZhXHUwYTU0XDEzXHUwMGZhXDNcdTAwZmJc M1x1MDBmYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwZmJcdTBhNThcblx1MDBmYlwz XHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDBmYlwzXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlw3XHUwMGZiXHUwYTYyXG5cdTAwZmIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlxmXHUwMGZiXDE2XHUwMGZiXHUwYTY1XDEzXHUwMGZiXDNc dTAwZmJcM1x1MDBmYlwzXHUwMGZjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmY1w1 XHUwMGZjXHUwYTZiXG5cdTAwZmNcM1x1MDBmY1wzXHUwMGZjXDNcdTAwZmMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGZjXDNcdTAwZmNcM1x1MDBmY1w3XHUwMGZjXHUwYTczXG5cdTAw ZmNcZlx1MDBmYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE2XHUwMGZjXHUwYTc2XDEzXHUw MGZjXDNcdTAwZmNcM1x1MDBmY1wzXHUwMGZkXDNcdTAwZmQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw1XHUwMGZkXHUwYTdjXG5cdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRcM1x1MDBm ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAw ZmRcM1x1MDBmZFw3XHUwMGZkXHUwYTg3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcblx1MDBm ZFxmXHUwMGZkXDE2XHUwMGZkXHUwYThhXDEzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZmVcNlx1MDBmZVx1MGE4ZlxuXHUwMGZlXHJcdTAwZmVc MTZcdTAwZmVcdTBhOTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGZlXDNcdTAwZmVc M1x1MDBmZlwzXHUwMGZmXDVcdTAwZmZcdTBhOTdcblx1MDBmZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwZmZcNVx1MDBmZlx1MGE5YVxuXHUwMGZmXDNcdTAwZmZcM1x1MDBmZlwzXHUw MTAwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDBcN1x1 MDEwMFx1MGFhMlxuXHUwMTAwXGZcdTAxMDAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxNlx1 MDEwMFx1MGFhNVwxM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDBcM1x1MDEwMVwzXHUwMTAxIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDEwMVwzXHUwMTAxXDNcdTAxMDFcM1x1MDEwMVwzXHUw MTAxXDNcdTAxMDFcN1x1MDEwMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWIxXG5cdTAx MDFcZlx1MDEwMVwxNlx1MDEwMVx1MGFiNFwxM1x1MDEwMVwzXHUwMTAxIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDEwMVwyXDJcdTAxMDJcM1wzXDVcNFw3XDVcdFw2XDEzXDdcclxiXDE3 XHRcMjFcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDIzXDEzXDI1XGZcMjdcclwzMVwxNlwz M1wxN1wzNVwyMFwzN1wyMSFcMjIjXDIzJVwyNFwnIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MjUpXDI2K1wyNy1cMzAvXDMxXDYxXDMyXDYzXDMzXDY1XDM0XDY3XDM1OVwzNjtcMzc9ICIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiPyFBXCJDI0UkRyVJJktcJ00oTylRKlMrVSxXLVkuWy9dXDYw X1w2MWFcNjJjXDYzZVw2NGciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2NWlcNjZrXDY3bThv OXE6czt1PHc9eT57P31AXDE3N0FcdTAwODFCXHUwMDgzQ1x1MDA4NSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiRFx1MDA4N0VcdTAwODlGXHUwMDhiR1x1MDA4ZEhcdTAwOGZJXHUwMDkxSlx1MDA5 M0tcdTAwOTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkxcdTAwOTdNXHUwMDk5Tlx1MDA5Yk9c dTAwOWRQXHUwMDlmUVx1MDBhMVJcdTAwYTNTXHUwMGE1IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJUXHUwMGE3VVx1MDBhOVZcdTAwYWJXXHUwMGFkWFx1MDBhZllcdTAwYjFaXHUwMGIzW1x1MDBi NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXFxcdTAwYjddXHUwMGI5Xlx1MDBiYl9cdTAwYmRg XHUwMGJmYVx1MDBjMWJcdTAwYzNjXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJkXHUw MGM3ZVx1MDBjOWZcdTAwY2JnXHUwMGNkaFx1MDBjZmlcdTAwZDFqXHUwMGQza1x1MDBkNSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgibFx1MDBkN21cdTAwZDluXHUwMGRib1x1MDBkZHBcdTAwZGZx XHUwMGUxclx1MDBlM3NcdTAwZTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoInRcdTAwZTd1XHUw MGU5dlx1MDBlYndcdTAwZWR4XHUwMGVmeVx1MDBmMXpcdTAwZjN7XHUwMGY1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJ8XHUwMGY3fVx1MDBmOX5cdTAwZmJcMTc3XHUwMGZkXHUwMDgwXHUwMGZm XHUwMDgxXHUwMTAxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODJcdTAxMDNcdTAwODNc dTAxMDVcdTAwODRcdTAxMDdcdTAwODVcdTAxMDlcdTAwODYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDEwYlx1MDA4N1x1MDEwZFx1MDA4OFx1MDEwZlx1MDA4OVx1MDExMVx1MDA4YVx1MDEx MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDhiXHUwMTE1XHUwMDhjXHUwMTE3XHUwMDhk XHUwMTE5XHUwMDhlXHUwMTFiXHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMWRc dTAwOTBcdTAxMWZcdTAwOTFcdTAxMjFcdTAwOTJcdTAxMjNcdTAwOTNcdTAxMjUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDA5NFx1MDEyN1x1MDA5NVx1MDEyOVx1MDA5Nlx1MDEyYlx1MDA5 N1x1MDEyZFx1MDA5OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTJmXHUwMDk5XHUwMTMx XHUwMDlhXHUwMTMzXHUwMDliXHUwMTM1XHUwMDljXHUwMTM3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAwOWRcdTAxMzlcdTAwOWVcdTAxM2JcdTAwOWZcdTAxM2RcdTAwYTBcdTAxM2ZcdTAw YTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE0MVx1MDBhMlx1MDE0M1x1MDBhM1x1MDE0 NVx1MDBhNFx1MDE0N1x1MDBhNVx1MDE0OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGE2 XHUwMTRiXHUwMGE3XHUwMTRkXHUwMGE4XHUwMTRmXHUwMGE5XHUwMTUxXHUwMGFhIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAxNTNcdTAwYWJcdTAxNTVcdTAwYWNcdTAxNTdcdTAwYWRcdTAx NTlcdTAwYWVcdTAxNWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBhZlx1MDE1ZFx1MDBi MFx1MDE1Zlx1MDBiMVx1MDE2MVx1MDBiMlx1MDE2M1x1MDBiMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMTY1XHUwMGI0XHUwMTY3XHUwMGI1XHUwMTY5XHUwMGI2XHUwMTZiXHUwMGI3XHUw MTZkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYjhcdTAxNmZcdTAwYjlcdTAxNzFcdTAw YmFcdTAxNzNcdTAwYmJcdTAxNzVcdTAwYmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE3 N1x1MDBiZFx1MDE3OVx1MDBiZVx1MDE3Ylx1MDBiZlx1MDE3ZFx1MDBjMFx1MDE3ZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMGMxXHUwMTgxXHUwMGMyXHUwMTgzXHUwMGMzXHUwMTg1XHUw MGM0XHUwMTg3XHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxODlcdTAwYzZcdTAx OGJcdTAwYzdcdTAxOGRcdTAwYzhcdTAxOGZcdTAwYzlcdTAxOTEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBjYVx1MDE5M1x1MDBjYlx1MDE5NVx1MDBjY1x1MDE5N1x1MDBjZFx1MDE5OVx1 MDBjZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTliXHUwMGNmXHUwMTlkXHUwMGQwXHUw MTlmXHUwMGQxXHUwMWExXHUwMGQyXHUwMWEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAw ZDNcdTAxYTVcdTAwZDRcdTAxYTdcdTAwZDVcdTAxYTlcdTAwZDZcdTAxYWJcdTAwZDciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDFhZFx1MDBkOFx1MDFhZlx1MDBkOVx1MDFiMVx1MDBkYVx1 MDFiM1x1MDBkYlx1MDFiNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGRjXHUwMWI3XHUw MGRkXHUwMWI5XHUwMGRlXHUwMWJiXHUwMGRmXHUwMWJkXHUwMGUwIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAxYmZcdTAwZTFcdTAxYzFcdTAwZTJcdTAxYzNcdTAwZTNcdTAxYzVcdTAwZTRc dTAxYzciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBlNVx1MDFjOVx1MDBlNlx1MDFjYlx1 MDBlN1x1MDFjZFx1MDBlOFx1MDFjZlx1MDBlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MWQxXHUwMGVhXHUwMWQzXHUwMGViXHUwMWQ1XHUwMGVjXHUwMWQ3XHUwMGVkXHUwMWQ5IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAwZWVcdTAxZGJcdTAwZWZcdTAxZGRcdTAwZjBcdTAxZGZc dTAwZjFcdTAxZTFcdTAwZjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFlM1x1MDBmM1x1 MDFlNVx1MDBmNFx1MDFlN1x1MDBmNVx1MDFlOVx1MDBmNlx1MDFlYiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMGY3XHUwMWVkXHUwMGY4XHUwMWVmXHUwMGY5XHUwMWYxXHUwMGZhXHUwMWYz XHUwMGZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZjVcdTAwZmNcdTAxZjdcdTAwZmRc dTAxZjlcdTAwZmVcdTAxZmJcdTAwZmZcdTAxZmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDEwMFx1MDFmZlx1MDEwMVx1MDIwMVx1MDEwMlwzXDJcdFw1XDJcNjI7Q0hjaFwzXDJcNjIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIjtcNVwyQ1xcYWFjfFw2XDJcNjI7Q1xcYWFjfFw1XDJcZlxm XDE3XDE3JSVcNFwyXDEzXDEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcIlwiXDRcMlxmXGZc MTdcMTdcMlx1MGFjNVwyXDNcM1wyXDJcMlwyXDVcM1wyXDJcMlwyXDciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXDJcdFwzXDJcMlwyXDJcMTNcM1wyXDJcMlwyXHJcM1wyXDJcMlwy XDE3XDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXDIxXDNcMlwyXDJcMlwyM1wz XDJcMlwyXDJcMjVcM1wyXDJcMlwyXDI3XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXDMxXDNcMlwyXDJcMlwzM1wzXDJcMlwyXDJcMzVcM1wyXDJcMlwyXDM3XDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyIVwzXDJcMlwyXDIjXDNcMlwyXDJcMiVcM1wyXDJcMlwy XCdcM1wyXDJcMlwyKVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMitcM1wyXDJc MlwyLVwzXDJcMlwyXDIvXDNcMlwyXDJcMlw2MVwzXDJcMlwyXDJcNjMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXDJcNjVcM1wyXDJcMlwyXDY3XDNcMlwyXDJcMjlcM1wyXDJcMlwy O1wzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMj1cM1wyXDJcMlwyP1wzXDJcMlwy XDJBXDNcMlwyXDJcMkNcM1wyXDJcMlwyRVwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XDJcMkdcM1wyXDJcMlwySVwzXDJcMlwyXDJLXDNcMlwyXDJcMk1cM1wyXDJcMlwyT1wzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcMlFcM1wyXDJcMlwyU1wzXDJcMlwyXDJVXDNcMlwy XDJcMldcM1wyXDJcMlwyWSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMltcM1wy XDJcMlwyXVwzXDJcMlwyXDJfXDNcMlwyXDJcMmFcM1wyXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJjXDNcMlwyXDJcMmVcM1wyXDJcMlwyZ1wzXDJcMlwyXDJpXDNcMlwyXDJcMmtcM1wy XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJtXDNcMlwyXDJcMm9cM1wyXDJcMlwycVwz XDJcMlwyXDJzXDNcMlwyXDJcMnVcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJ3 XDNcMlwyXDJcMnlcM1wyXDJcMlwye1wzXDJcMlwyXDJ9XDNcMlwyXDJcMlwxNzdcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXDJcdTAwODFcM1wyXDJcMlwyXHUwMDgzXDNcMlwyXDJc Mlx1MDA4NVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDA4N1wzXDJcMlwy XDJcdTAwODlcM1wyXDJcMlwyXHUwMDhiXDNcMlwyXDJcMlx1MDA4ZCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDA4ZlwzXDJcMlwyXDJcdTAwOTFcM1wyXDJcMlwyXHUwMDkz XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMDk1XDNcMlwyXDJcMlx1MDA5 N1wzXDJcMlwyXDJcdTAwOTlcM1wyXDJcMlwyXHUwMDliIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1wyXDJcMlwyXHUwMDlkXDNcMlwyXDJcMlx1MDA5ZlwzXDJcMlwyXDJcdTAwYTFcM1wyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAwYTNcM1wyXDJcMlwyXHUwMGE1XDNcMlwy XDJcMlx1MDBhN1wzXDJcMlwyXDJcdTAwYTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXDJcdTAwYWJcM1wyXDJcMlwyXHUwMGFkXDNcMlwyXDJcMlx1MDBhZlwzXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDBiMVwzXDJcMlwyXDJcdTAwYjNcM1wyXDJcMlwyXHUw MGI1XDNcMlwyXDJcMlx1MDBiNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1 MDBiOVwzXDJcMlwyXDJcdTAwYmJcM1wyXDJcMlwyXHUwMGJkXDNcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXHUwMGJmXDNcMlwyXDJcMlx1MDBjMVwzXDJcMlwyXDJcdTAwYzNcM1wy XDJcMlwyXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGM3XDNc MlwyXDJcMlx1MDBjOVwzXDJcMlwyXDJcdTAwY2JcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcdTAwY2RcM1wyXDJcMlwyXHUwMGNmXDNcMlwyXDJcMlx1MDBkMVwzXDJcMlwyXDJc dTAwZDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZDVcM1wyXDJcMlwy XHUwMGQ3XDNcMlwyXDJcMlx1MDBkOVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc Mlx1MDBkYlwzXDJcMlwyXDJcdTAwZGRcM1wyXDJcMlwyXHUwMGRmXDNcMlwyXDJcMlx1MDBlMSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBlM1wzXDJcMlwyXDJcdTAwZTVc M1wyXDJcMlwyXHUwMGU3XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMGU5 XDNcMlwyXDJcMlx1MDBlYlwzXDJcMlwyXDJcdTAwZWRcM1wyXDJcMlwyXHUwMGVmIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGYxXDNcMlwyXDJcMlx1MDBmM1wzXDJcMlwy XDJcdTAwZjVcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAwZjdcM1wyXDJc MlwyXHUwMGY5XDNcMlwyXDJcMlx1MDBmYlwzXDJcMlwyXDJcdTAwZmQiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZmZcM1wyXDJcMlwyXHUwMTAxXDNcMlwyXDJcMlx1MDEw M1wzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDEwNVwzXDJcMlwyXDJcdTAx MDdcM1wyXDJcMlwyXHUwMTA5XDNcMlwyXDJcMlx1MDEwYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcMlx1MDEwZFwzXDJcMlwyXDJcdTAxMGZcM1wyXDJcMlwyXHUwMTExXDNcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMTEzXDNcMlwyXDJcMlx1MDExNVwzXDJc MlwyXDJcdTAxMTdcM1wyXDJcMlwyXHUwMTE5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlwyXHUwMTFiXDNcMlwyXDJcMlx1MDExZFwzXDJcMlwyXDJcdTAxMWZcM1wyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxMjFcM1wyXDJcMlwyXHUwMTIzXDNcMlwyXDJcMlx1 MDEyNVwzXDJcMlwyXDJcdTAxMjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJc dTAxMjlcM1wyXDJcMlwyXHUwMTJiXDNcMlwyXDJcMlx1MDEyZFwzXDJcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlx1MDEyZlwzXDJcMlwyXDJcdTAxMzFcM1wyXDJcMlwyXHUwMTMzXDNc MlwyXDJcMlx1MDEzNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDEzN1wz XDJcMlwyXDJcdTAxMzlcM1wyXDJcMlwyXHUwMTNiXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXHUwMTNkXDNcMlwyXDJcMlx1MDEzZlwzXDJcMlwyXDJcdTAxNDFcM1wyXDJcMlwy XHUwMTQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTQ1XDNcMlwyXDJc Mlx1MDE0N1wzXDJcMlwyXDJcdTAxNDlcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XDJcdTAxNGJcM1wyXDJcMlwyXHUwMTRkXDNcMlwyXDJcMlx1MDE0ZlwzXDJcMlwyXDJcdTAxNTEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNTNcM1wyXDJcMlwyXHUwMTU1 XDNcMlwyXDJcMlx1MDE1N1wzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDE1 OVwzXDJcMlwyXDJcdTAxNWJcM1wyXDJcMlwyXHUwMTVkXDNcMlwyXDJcMlx1MDE1ZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDE2MVwzXDJcMlwyXDJcdTAxNjNcM1wyXDJc MlwyXHUwMTY1XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMTY3XDNcMlwy XDJcMlx1MDE2OVwzXDJcMlwyXDJcdTAxNmJcM1wyXDJcMlwyXHUwMTZkIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTZmXDNcMlwyXDJcMlx1MDE3MVwzXDJcMlwyXDJcdTAx NzNcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxNzVcM1wyXDJcMlwyXHUw MTc3XDNcMlwyXDJcMlx1MDE3OVwzXDJcMlwyXDJcdTAxN2IiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAxN2RcM1wyXDJcMlwyXHUwMTdmXDNcMlwyXDJcMlx1MDE4MVwzXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDE4M1wzXDJcMlwyXDJcdTAxODVcM1wy XDJcMlwyXHUwMTg3XDNcMlwyXDJcMlx1MDE4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcMlx1MDE4YlwzXDJcMlwyXDJcdTAxOGRcM1wyXDJcMlwyXHUwMThmXDNcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMTkxXDNcMlwyXDJcMlx1MDE5M1wzXDJcMlwyXDJc dTAxOTVcM1wyXDJcMlwyXHUwMTk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwy XHUwMTk5XDNcMlwyXDJcMlx1MDE5YlwzXDJcMlwyXDJcdTAxOWRcM1wyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcdTAxOWZcM1wyXDJcMlwyXHUwMWExXDNcMlwyXDJcMlx1MDFhM1wz XDJcMlwyXDJcdTAxYTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxYTdc M1wyXDJcMlwyXHUwMWE5XDNcMlwyXDJcMlx1MDFhYlwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlx1MDFhZFwzXDJcMlwyXDJcdTAxYWZcM1wyXDJcMlwyXHUwMWIxXDNcMlwyXDJc Mlx1MDFiMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDFiNVwzXDJcMlwy XDJcdTAxYjdcM1wyXDJcMlwyXHUwMWI5XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXHUwMWJiXDNcMlwyXDJcMlx1MDFiZFwzXDJcMlwyXDJcdTAxYmZcM1wyXDJcMlwyXHUwMWMx IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWMzXDNcMlwyXDJcMlx1MDFj NVwzXDJcMlwyXDJcdTAxYzdcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAx YzlcM1wyXDJcMlwyXHUwMWNiXDNcMlwyXDJcMlx1MDFjZFwzXDJcMlwyXDJcdTAxY2YiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxZDFcM1wyXDJcMlwyXHUwMWQzXDNcMlwy XDJcMlx1MDFkNVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDFkN1wzXDJc MlwyXDJcdTAxZDlcM1wyXDJcMlwyXHUwMWRiXDNcMlwyXDJcMlx1MDFkZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDFkZlwzXDJcMlwyXDJcdTAxZTFcM1wyXDJcMlwyXHUw MWUzXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMWU1XDNcMlwyXDJcMlx1 MDFlN1wzXDJcMlwyXDJcdTAxZTlcM1wyXDJcMlwyXHUwMWViIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1wyXDJcMlwyXHUwMWVkXDNcMlwyXDJcMlx1MDFlZlwzXDJcMlwyXDJcdTAxZjFcM1wy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxZjNcM1wyXDJcMlwyXHUwMWY1XDNc MlwyXDJcMlx1MDFmN1wzXDJcMlwyXDJcdTAxZjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXDJcdTAxZmJcM1wyXDJcMlwyXHUwMWZkXDNcMlwyXDJcMlx1MDFmZlwzXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDIwMVwzXDJcMlwyXDNcdTAyMDNcM1wyXDJcMlw1 XHUwMjA4XDNcMlwyXDJcN1x1MDIwZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dFx1MDIxMVwzXDJcMlwyXDEzXHUwMjE5XDNcMlwyXDJcclx1MDIxZVwzXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcMTdcdTAyMjBcM1wyXDJcMlwyMVx1MDIyY1wzXDJcMlwyXDIzXHUw MjM3XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyNVx1MDI0MlwzXDJcMlwyXDI3 XHUwMjQ1XDNcMlwyXDJcMzFcdTAyNDhcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDMzXHUwMjRhXDNcMlwyXDJcMzVcdTAyNGNcM1wyXDJcMlwzN1x1MDI0ZVwzXDJcMlwyIVx1MDI1 NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDIjXHUwMjU3XDNcMlwyXDIlXHUwMjVm XDNcMlwyXDJcJ1x1MDI2OFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIpXHUwMjc0 XDNcMlwyXDIrXHUwMjc2XDNcMlwyXDItXHUwMjc4XDNcMlwyXDIvXHUwMjdhXDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcMlw2MVx1MDI3Y1wzXDJcMlwyXDYzXHUwMjdlXDNcMlwyXDJc NjVcdTAyODBcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDY3XHUwMjgyXDNcMlwy XDI5XHUwMjg0XDNcMlwyXDI7XHUwMjg2XDNcMlwyXDI9XHUwMjg4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMj9cdTAyOGFcM1wyXDJcMkFcdTAyOGNcM1wyXDJcMkNcdTAyOGZcM1wy XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiRVx1MDI5MlwzXDJcMlwyR1x1MDI5NVwzXDJc MlwySVx1MDI5N1wzXDJcMlwyS1x1MDI5YVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XDJNXHUwMjljXDNcMlwyXDJPXHUwMjllXDNcMlwyXDJRXHUwMmEwXDNcMlwyXDJTXHUwMmFiIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlVcdTAyYjNcM1wyXDJcMldcdTAyYmRcM1wy XDJcMllcdTAyYzhcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiW1x1MDJjZVwzXDJc MlwyXVx1MDJkNVwzXDJcMlwyX1x1MDJkYlwzXDJcMlwyYVx1MDJlNFwzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXDJjXHUwMmViXDNcMlwyXDJlXHUwMmY3XDNcMlwyXDJnXHUwMzA1XDNc MlwyXDJpXHUwMzBkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMmtcdTAzMTVcM1wy XDJcMm1cdTAzMWFcM1wyXDJcMm9cdTAzMjJcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgicVx1MDMyYlwzXDJcMlwyc1x1MDMzM1wzXDJcMlwydVx1MDMzY1wzXDJcMlwyd1x1MDM0OFwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJ5XHUwMzRkXDNcMlwyXDJ7XHUwMzUyXDNc MlwyXDJ9XHUwMzU5XDNcMlwyXDJcMTc3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNWZc M1wyXDJcMlx1MDA4MVx1MDM2NFwzXDJcMlwyXHUwMDgzXHUwMzZjXDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDA4NVx1MDM3MVwzXDJcMlwyXHUwMDg3XHUwMzc3XDNcMlwyXDJc dTAwODlcdTAzN2JcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMDhiXHUwMzgw XDNcMlwyXDJcdTAwOGRcdTAzODhcM1wyXDJcMlx1MDA4Zlx1MDM4ZCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAwOTFcdTAzOTRcM1wyXDJcMlx1MDA5M1x1MDM5YlwzXDJcMlwy XHUwMDk1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTVcM1wyXDJcMlx1MDA5N1x1MDNh YlwzXDJcMlwyXHUwMDk5XHUwM2IzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDA5Ylx1MDNiZFwzXDJcMlwyXHUwMDlkXHUwM2NlXDNcMlwyXDJcdTAwOWZcdTAzZDVcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGExXHUwM2RiXDNcMlwyXDJcdTAwYTNcdTAz ZTNcM1wyXDJcMlx1MDBhNVx1MDNlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAwYTdcdTAzZjFcM1wyXDJcMlx1MDBhOVx1MDNmOFwzXDJcMlwyXHUwMGFiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzZmVcM1wyXDJcMlx1MDBhZFx1MDQwY1wzXDJcMlwyXHUwMGFmXHUw NDE5XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBiMVx1MDQyNlwzXDJcMlwy XHUwMGIzXHUwNDMyXDNcMlwyXDJcdTAwYjVcdTA0MzdcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlwyXHUwMGI3XHUwNDQwXDNcMlwyXDJcdTAwYjlcdTA0NGNcM1wyXDJcMlx1MDBiYlx1 MDQ1NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYmRcdTA0NWZcM1wyXDJc Mlx1MDBiZlx1MDQ2N1wzXDJcMlwyXHUwMGMxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0 NmZcM1wyXDJcMlx1MDBjM1x1MDQ3NFwzXDJcMlwyXHUwMGM1XHUwNDdjXDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDBjN1x1MDQ4NVwzXDJcMlwyXHUwMGM5XHUwNDkxXDNcMlwy XDJcdTAwY2JcdTA0OThcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGNkXHUw NGEyXDNcMlwyXDJcdTAwY2ZcdTA0YWFcM1wyXDJcMlx1MDBkMVx1MDRiMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZDNcdTA0YmJcM1wyXDJcMlx1MDBkNVx1MDRjNlwzXDJc MlwyXHUwMGQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZDBcM1wyXDJcMlx1MDBkOVx1 MDRkN1wzXDJcMlwyXHUwMGRiXHUwNGRjXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBkZFx1MDRlOFwzXDJcMlwyXHUwMGRmXHUwNGY3XDNcMlwyXDJcdTAwZTFcdTA1MDFcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGUzXHUwNTBjXDNcMlwyXDJcdTAwZTVc dTA1MTJcM1wyXDJcMlx1MDBlN1x1MDUxNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAwZTlcdTA1MWVcM1wyXDJcMlx1MDBlYlx1MDUyY1wzXDJcMlwyXHUwMGVkIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1M2RcM1wyXDJcMlx1MDBlZlx1MDU1MlwzXDJcMlwyXHUwMGYx XHUwNTVlXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBmM1x1MDU2OFwzXDJc MlwyXHUwMGY1XHUwNTc3XDNcMlwyXDJcdTAwZjdcdTA1OGFcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMGY5XHUwNTk1XDNcMlwyXDJcdTAwZmJcdTA1OWZcM1wyXDJcMlx1MDBm ZFx1MDVhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZmZcdTA1YjdcM1wy XDJcMlx1MDEwMVx1MDViZFwzXDJcMlwyXHUwMTAzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA1YzZcM1wyXDJcMlx1MDEwNVx1MDVkMFwzXDJcMlwyXHUwMTA3XHUwNWQ4XDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDEwOVx1MDVlMFwzXDJcMlwyXHUwMTBiXHUwNWU1XDNc MlwyXDJcdTAxMGRcdTA1ZWVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTBm XHUwNWY1XDNcMlwyXDJcdTAxMTFcdTA1ZmJcM1wyXDJcMlx1MDExM1x1MDYwMCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMTVcdTA2MDZcM1wyXDJcMlx1MDExN1x1MDYwZFwz XDJcMlwyXHUwMTE5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MTJcM1wyXDJcMlx1MDEx Ylx1MDYxN1wzXDJcMlwyXHUwMTFkXHUwNjFkXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDExZlx1MDYyNlwzXDJcMlwyXHUwMTIxXHUwNjMxXDNcMlwyXDJcdTAxMjNcdTA2Mzdc MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTI1XHUwNjNlXDNcMlwyXDJcdTAx MjdcdTA2NDNcM1wyXDJcMlx1MDEyOVx1MDY0YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxMmJcdTA2NTFcM1wyXDJcMlx1MDEyZFx1MDY1NlwzXDJcMlwyXHUwMTJmIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA2NWNcM1wyXDJcMlx1MDEzMVx1MDY2OFwzXDJcMlwyXHUw MTMzXHUwNjc3XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzNVx1MDY4NFwz XDJcMlwyXHUwMTM3XHUwNjhlXDNcMlwyXDJcdTAxMzlcdTA2OTdcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwyXHUwMTNiXHUwNmEzXDNcMlwyXDJcdTAxM2RcdTA2YWJcM1wyXDJcMlx1 MDEzZlx1MDZiZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNDFcdTA2YzRc M1wyXDJcMlx1MDE0M1x1MDZjYlwzXDJcMlwyXHUwMTQ1IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA2ZDVcM1wyXDJcMlx1MDE0N1x1MDZkZFwzXDJcMlwyXHUwMTQ5XHUwNmU2XDNcMlwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE0Ylx1MDZmNVwzXDJcMlwyXHUwMTRkXHUwNmZj XDNcMlwyXDJcdTAxNGZcdTA3MDZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUw MTUxXHUwNzBmXDNcMlwyXDJcdTAxNTNcdTA3MTRcM1wyXDJcMlx1MDE1NVx1MDcxYSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNTdcdTA3MjVcM1wyXDJcMlx1MDE1OVx1MDcz MVwzXDJcMlwyXHUwMTViIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3M2VcM1wyXDJcMlx1 MDE1ZFx1MDc0ZFwzXDJcMlwyXHUwMTVmXHUwNzVhXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDE2MVx1MDc2OVwzXDJcMlwyXHUwMTYzXHUwNzc2XDNcMlwyXDJcdTAxNjVcdTA3 ODhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTY3XHUwNzljXDNcMlwyXDJc dTAxNjlcdTA3YTdcM1wyXDJcMlx1MDE2Ylx1MDdiMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAxNmRcdTA3YzBcM1wyXDJcMlx1MDE2Zlx1MDdjZlwzXDJcMlwyXHUwMTcxIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZGNcM1wyXDJcMlx1MDE3M1x1MDdlYVwzXDJcMlwy XHUwMTc1XHUwN2ZhXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE3N1x1MDgw YVwzXDJcMlwyXHUwMTc5XHUwODE5XDNcMlwyXDJcdTAxN2JcdTA4MjZcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTdkXHUwODM1XDNcMlwyXDJcdTAxN2ZcdTA4M2NcM1wyXDJc Mlx1MDE4MVx1MDg0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxODNcdTA4 NDlcM1wyXDJcMlx1MDE4NVx1MDg0ZVwzXDJcMlwyXHUwMTg3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA4NTJcM1wyXDJcMlx1MDE4OVx1MDg1OFwzXDJcMlwyXHUwMThiXHUwODVkXDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE4ZFx1MDg2MVwzXDJcMlwyXHUwMThmXHUw ODZhXDNcMlwyXDJcdTAxOTFcdTA4NmVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwy XHUwMTkzXHUwODc2XDNcMlwyXDJcdTAxOTVcdTA4N2RcM1wyXDJcMlx1MDE5N1x1MDg4OSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxOTlcdTA4OTVcM1wyXDJcMlx1MDE5Ylx1 MDg5ZFwzXDJcMlwyXHUwMTlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YTdcM1wyXDJc Mlx1MDE5Zlx1MDhiMFwzXDJcMlwyXHUwMWExXHUwOGI5XDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDFhM1x1MDhiZFwzXDJcMlwyXHUwMWE1XHUwOGMyXDNcMlwyXDJcdTAxYTdc dTA4YzhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWE5XHUwOGNjXDNcMlwy XDJcdTAxYWJcdTA4ZDFcM1wyXDJcMlx1MDFhZFx1MDhkNiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAxYWZcdTA4ZTBcM1wyXDJcMlx1MDFiMVx1MDhlOFwzXDJcMlwyXHUwMWIz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZWZcM1wyXDJcMlx1MDFiNVx1MDhmM1wzXDJc MlwyXHUwMWI3XHUwOGY2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFiOVx1 MDhmYVwzXDJcMlwyXHUwMWJiXHUwOGZlXDNcMlwyXDJcdTAxYmRcdTA5MDBcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWJmXHUwOTA4XDNcMlwyXDJcdTAxYzFcdTA5MTJcM1wy XDJcMlx1MDFjM1x1MDkxYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYzVc dTA5MjNcM1wyXDJcMlx1MDFjN1x1MDkyYlwzXDJcMlwyXHUwMWM5IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA5MzFcM1wyXDJcMlx1MDFjYlx1MDkzOFwzXDJcMlwyXHUwMWNkXHUwOTQxXDNc MlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjZlx1MDk1MFwzXDJcMlwyXHUwMWQx XHUwOTVkXDNcMlwyXDJcdTAxZDNcdTA5NjFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc MlwyXHUwMWQ1XHUwOTZkXDNcMlwyXDJcdTAxZDdcdTA5N2FcM1wyXDJcMlx1MDFkOVx1MDk4OSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZGJcdTA5OWNcM1wyXDJcMlx1MDFk ZFx1MDlhYlwzXDJcMlwyXHUwMWRmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YmFcM1wy XDJcMlx1MDFlMVx1MDljOVwzXDJcMlwyXHUwMWUzXHUwOWQ4XDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDFlNVx1MDllOFwzXDJcMlwyXHUwMWU3XHUwOWY5XDNcMlwyXDJcdTAx ZTlcdTBhMGFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWViXHUwYTE2XDNc MlwyXDJcdTAxZWRcdTBhMjBcM1wyXDJcMlx1MDFlZlx1MGEyZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTAxZjFcdTBhNGNcM1wyXDJcMlx1MDFmM1x1MGE0ZVwzXDJcMlwyXHUw MWY1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNTVcM1wyXDJcMlx1MDFmN1x1MGE2OFwz XDJcMlwyXHUwMWY5XHUwYTc5XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFm Ylx1MGE4ZVwzXDJcMlwyXHUwMWZkXHUwYTk5XDNcMlwyXDJcdTAxZmZcdTBhOWRcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjAxXHUwYWE4XDNcMlwyXDJcdTAyMDNcdTAyMDRc N3VcMlwyXHUwMjA0XHUwMjA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2pcMlwyXHUwMjA1 XHUwMjA2XDdxXDJcMlx1MDIwNlx1MDIwN1w3eVwyXDJcdTAyMDdcNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAyMDhcdTAyMDlcN3JcMlwyXHUwMjA5XHUwMjBhXDd3XDJcMlx1 MDIwYVx1MDIwYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd1XDJcMlx1MDIwYlx1MDIwY1w3 alwyXDJcdTAyMGNcNlwzXDJcMlwyXHUwMjBkXHUwMjBlIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN3JcMlwyXHUwMjBlXHUwMjBmXDdxXDJcMlx1MDIwZlx1MDIxMFw3clwyXDJcdTAyMTBcYiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMTFcdTAyMTJcNyVcMlwyXHUwMjEy XHUwMjEzXDdyXDJcMlx1MDIxM1x1MDIxNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd0XDJc Mlx1MDIxNFx1MDIxNVw3Y1wyXDJcdTAyMTVcdTAyMTZcN2lcMlwyXHUwMjE2XHUwMjE3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN29cMlwyXHUwMjE3XHUwMjE4XDdjXDJcMlx1MDIxOFxuXDNc MlwyXDJcdTAyMTlcdTAyMWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3clwyXDJcdTAyMWFc dTAyMWJcN2NcMlwyXHUwMjFiXHUwMjFjXDdlXDJcMlx1MDIxY1x1MDIxZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdtXDJcMlx1MDIxZFxmXDNcMlwyXDJcdTAyMWVcdTAyMWZcNz9cMlwyXHUw MjFmXDE2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDIyMFx1MDIyMVw3S1wy XDJcdTAyMjFcdTAyMjJcN09cMlwyXHUwMjIyXHUwMjIzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN0NcMlwyXHUwMjIzXHUwMjI0XDdJXDJcMlx1MDIyNFx1MDIyNVw3R1wyXDJcdTAyMjVcdTAy MjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3YVwyXDJcdTAyMjZcdTAyMjdcN1ZcMlwyXHUw MjI3XHUwMjI4XDdRXDJcMlx1MDIyOFx1MDIyOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdN XDJcMlx1MDIyOVx1MDIyYVw3R1wyXDJcdTAyMmFcdTAyMmJcN1BcMlwyXHUwMjJiXDIwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDIyY1x1MDIyZFw3SlwyXDJcdTAyMmRcdTAy MmVcN1FcMlwyXHUwMjJlXHUwMjJmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1RcMlwyXHUw MjJmXHUwMjMwXDdLXDJcMlx1MDIzMFx1MDIzMVw3XFxcMlwyXHUwMjMxXHUwMjMyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcN1FcMlwyXHUwMjMyXHUwMjMzXDdQXDJcMlx1MDIzM1x1MDIzNFw3 VlwyXDJcdTAyMzRcdTAyMzUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3Q1wyXDJcdTAyMzVc dTAyMzZcN05cMlwyXHUwMjM2XDIyXDNcMlwyXDJcdTAyMzdcdTAyMzgiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3T1wyXDJcdTAyMzhcdTAyMzlcN1dcMlwyXHUwMjM5XHUwMjNhXDdOXDJcMlx1 MDIzYVx1MDIzYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDIzYlx1MDIzY1w3 S1wyXDJcdTAyM2NcdTAyM2RcN2FcMlwyXHUwMjNkXHUwMjNlIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN05cMlwyXHUwMjNlXHUwMjNmXDdLXDJcMlx1MDIzZlx1MDI0MFw3UFwyXDJcdTAyNDBc dTAyNDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3R1wyXDJcdTAyNDFcMjRcM1wyXDJcMlx1 MDI0Mlx1MDI0M1w3PlwyXDJcdTAyNDNcdTAyNDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 PlwyXDJcdTAyNDRcMjZcM1wyXDJcMlx1MDI0NVx1MDI0Nlw3QFwyXDJcdTAyNDZcdTAyNDciKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3QFwyXDJcdTAyNDdcMzBcM1wyXDJcMlx1MDI0OFx1MDI0 OVw3LVwyXDJcdTAyNDlcMzJcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjRh XHUwMjRiXDcsXDJcMlx1MDI0YlwzNFwzXDJcMlwyXHUwMjRjXHUwMjRkIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN1wnXDJcMlx1MDI0ZFwzNlwzXDJcMlwyXHUwMjRlXHUwMjRmXDdoXDJcMlx1 MDI0Zlx1MDI1MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdxXDJcMlx1MDI1MFx1MDI1MVw3 dFwyXDJcdTAyNTFcdTAyNTJcN29cMlwyXHUwMjUyXHUwMjUzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN2NcMlwyXHUwMjUzXHUwMjU0XDd2XDJcMlx1MDI1NCBcM1wyXDJcMlx1MDI1NVx1MDI1 NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdBXDJcMlx1MDI1NlwiXDNcMlwyXDJcdTAyNTdc dTAyNThcNyVcMlwyXHUwMjU4XHUwMjU5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2ZcMlwy XHUwMjU5XHUwMjVhXDdnXDJcMlx1MDI1YVx1MDI1Ylw3aFwyXDJcdTAyNWJcdTAyNWMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3a1wyXDJcdTAyNWNcdTAyNWRcN3BcMlwyXHUwMjVkXHUwMjVl XDdnXDJcMlx1MDI1ZSRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjVmXHUw MjYwXDclXDJcMlx1MDI2MFx1MDI2MVw3a1wyXDJcdTAyNjFcdTAyNjIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3cFwyXDJcdTAyNjJcdTAyNjNcN2VcMlwyXHUwMjYzXHUwMjY0XDduXDJcMlx1 MDI2NFx1MDI2NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd3XDJcMlx1MDI2NVx1MDI2Nlw3 ZlwyXDJcdTAyNjZcdTAyNjdcN2dcMlwyXHUwMjY3JlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlwyXDJcdTAyNjhcdTAyNjlcN2hcMlwyXHUwMjY5XHUwMjZhXDdxXDJcMlx1MDI2YVx1MDI2 YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDI2Ylx1MDI2Y1w3b1wyXDJcdTAy NmNcdTAyNmRcN3JcMlwyXHUwMjZkXHUwMjZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN21c MlwyXHUwMjZlXHUwMjZmXDdpXDJcMlx1MDI2Zlx1MDI3MFw3dlwyXDJcdTAyNzBcdTAyNzEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3e1wyXDJcdTAyNzFcdTAyNzJcN3JcMlwyXHUwMjcyXHUw MjczXDdnXDJcMlx1MDI3MyhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjc0 XHUwMjc1XDd9XDJcMlx1MDI3NSpcM1wyXDJcMlx1MDI3Nlx1MDI3N1w3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMTc3XDJcMlx1MDI3NyxcM1wyXDJcMlx1MDI3OFx1MDI3OVw3KlwyXDJcdTAy NzkuXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI3YVx1MDI3Ylw3K1wyXDJc dTAyN2JcNjBcM1wyXDJcMlx1MDI3Y1x1MDI3ZFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJd XDJcMlx1MDI3ZFw2MlwzXDJcMlwyXHUwMjdlXHUwMjdmXDdfXDJcMlx1MDI3Zlw2NFwzXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyODBcdTAyODFcN1w2MFwyXDJcdTAyODFcNjZc M1wyXDJcMlx1MDI4Mlx1MDI4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDI4 MzhcM1wyXDJcMlx1MDI4NFx1MDI4NVw3PFwyXDJcdTAyODU6XDNcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlx1MDI4Nlx1MDI4N1w3XDYxXDJcMlx1MDI4NzxcM1wyXDJcMlx1MDI4OFx1 MDI4OVw3PSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI4OT5cM1wyXDJcMlx1MDI4 YVx1MDI4Ylw3LlwyXDJcdTAyOGJAXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDI4Y1x1MDI4ZFw3P1wyXDJcdTAyOGRcdTAyOGVcNz9cMlwyXHUwMjhlQlwzXDJcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAyOGZcdTAyOTBcNyNcMlwyXHUwMjkwXHUwMjkxXDc/XDJc Mlx1MDI5MURcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjkyXHUwMjkzXDc+ XDJcMlx1MDI5M1x1MDI5NFw3P1wyXDJcdTAyOTRGXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDI5NVx1MDI5Nlw3PlwyXDJcdTAyOTZIXDNcMlwyXDJcdTAyOTdcdTAyOThcN0Bc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOThcdTAyOTlcNz9cMlwyXHUwMjk5Slwz XDJcMlwyXHUwMjlhXHUwMjliXDdAXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjli TFwzXDJcMlwyXHUwMjljXHUwMjlkXDd+XDJcMlx1MDI5ZE5cM1wyXDJcMlx1MDI5ZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMjlmXDcoXDJcMlx1MDI5ZlBcM1wyXDJcMlx1MDJhMFx1MDJh MVw3ZlwyXDJcdTAyYTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJhMlw3Z1wyXDJcdTAy YTJcdTAyYTNcN3hcMlwyXHUwMmEzXHUwMmE0XDdrXDJcMlx1MDJhNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMmE1XDdlXDJcMlx1MDJhNVx1MDJhNlw3Z1wyXDJcdTAyYTZcdTAyYTdcN3Jc MlwyXHUwMmE3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYThcN2NcMlwyXHUwMmE4XHUw MmE5XDd2XDJcMlx1MDJhOVx1MDJhYVw3alwyXDJcdTAyYWEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlJcM1wyXDJcMlx1MDJhYlx1MDJhY1w3aFwyXDJcdTAyYWNcdTAyYWRcN3FcMlwyXHUwMmFk IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYWVcN3RcMlwyXHUwMmFlXHUwMmFmXDdvXDJc Mlx1MDJhZlx1MDJiMFw3dVwyXDJcdTAyYjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJi MVw3Z1wyXDJcdTAyYjFcdTAyYjJcN3ZcMlwyXHUwMmIyVFwzXDJcMlwyXHUwMmIzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAyYjRcN2hcMlwyXHUwMmI0XHUwMmI1XDdxXDJcMlx1MDJiNVx1 MDJiNlw3dFwyXDJcdTAyYjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJiN1w3b1wyXDJc dTAyYjdcdTAyYjhcN3VcMlwyXHUwMmI4XHUwMmI5XDdnXDJcMlx1MDJiOSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMmJhXDd2XDJcMlx1MDJiYVx1MDJiYlw3a1wyXDJcdTAyYmJcdTAyYmNc N2ZcMlwyXHUwMmJjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJWXDNcMlwyXDJcdTAyYmRcdTAy YmVcN2dcMlwyXHUwMmJlXHUwMmJmXDdwXDJcMlx1MDJiZiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMmMwXDdmXDJcMlx1MDJjMFx1MDJjMVw3aFwyXDJcdTAyYzFcdTAyYzJcN3FcMlwyXHUw MmMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYzNcN3RcMlwyXHUwMmMzXHUwMmM0XDdv XDJcMlx1MDJjNFx1MDJjNVw3dVwyXDJcdTAyYzUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDJjNlw3Z1wyXDJcdTAyYzZcdTAyYzdcN3ZcMlwyXHUwMmM3WFwzXDJcMlwyXHUwMmM4IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAyYzlcN3ZcMlwyXHUwMmM5XHUwMmNhXDdrXDJcMlx1MDJj YVx1MDJjYlw3dlwyXDJcdTAyY2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJjY1w3blwy XDJcdTAyY2NcdTAyY2RcN2dcMlwyXHUwMmNkWlwzXDJcMlwyXHUwMmNlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAyY2ZcN2hcMlwyXHUwMmNmXHUwMmQwXDdxXDJcMlx1MDJkMFx1MDJkMVw3 dFwyXDJcdTAyZDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJkMlw3b1wyXDJcdTAyZDJc dTAyZDNcN2tcMlwyXHUwMmQzXHUwMmQ0XDdmXDJcMlx1MDJkNCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXFxcM1wyXDJcMlx1MDJkNVx1MDJkNlw3cVwyXDJcdTAyZDZcdTAyZDdcN3BcMlwyXHUw MmQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZDhcN2dcMlwyXHUwMmQ4XHUwMmQ5XDdx XDJcMlx1MDJkOVx1MDJkYVw3aFwyXDJcdTAyZGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIl5c M1wyXDJcMlx1MDJkYlx1MDJkY1w3Z1wyXDJcdTAyZGNcdTAyZGRcN3BcMlwyXHUwMmRkIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAyZGVcN2ZcMlwyXHUwMmRlXHUwMmRmXDdxXDJcMlx1MDJk Zlx1MDJlMFw3cFwyXDJcdTAyZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJlMVw3Z1wy XDJcdTAyZTFcdTAyZTJcN3FcMlwyXHUwMmUyXHUwMmUzXDdoXDJcMlx1MDJlMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiYFwzXDJcMlwyXHUwMmU0XHUwMmU1XDdyXDJcMlx1MDJlNVx1MDJlNlw3 dFwyXDJcdTAyZTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJlN1w3cVwyXDJcdTAyZTdc dTAyZThcN29cMlwyXHUwMmU4XHUwMmU5XDdyXDJcMlx1MDJlOSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMmVhXDd2XDJcMlx1MDJlYWJcM1wyXDJcMlx1MDJlYlx1MDJlY1w3cVwyXDJcdTAy ZWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJlZFw3dFwyXDJcdTAyZWRcdTAyZWVcN2Zc MlwyXHUwMmVlXHUwMmVmXDdnXDJcMlx1MDJlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MmYwXDd0XDJcMlx1MDJmMFx1MDJmMVw3Z1wyXDJcdTAyZjFcdTAyZjJcN2ZcMlwyXHUwMmYyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZjNcN25cMlwyXHUwMmYzXHUwMmY0XDdrXDJcMlx1 MDJmNFx1MDJmNVw3dVwyXDJcdTAyZjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJmNlw3 dlwyXDJcdTAyZjZkXDNcMlwyXDJcdTAyZjdcdTAyZjhcN29cMlwyXHUwMmY4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyZjlcN2NcMlwyXHUwMmY5XHUwMmZhXDd6XDJcMlx1MDJmYVx1MDJm Ylw3ZVwyXDJcdTAyZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJmY1w3cVwyXDJcdTAy ZmNcdTAyZmRcN3BcMlwyXHUwMmZkXHUwMmZlXDd2XDJcMlx1MDJmZSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMmZmXDdjXDJcMlx1MDJmZlx1MDMwMFw3a1wyXDJcdTAzMDBcdTAzMDFcN3Bc MlwyXHUwMzAxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDJcN2dcMlwyXHUwMzAyXHUw MzAzXDd0XDJcMlx1MDMwM1x1MDMwNFw3dVwyXDJcdTAzMDQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoImZcM1wyXDJcMlx1MDMwNVx1MDMwNlw3Z1wyXDJcdTAzMDZcdTAzMDdcN3BcMlwyXHUwMzA3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDhcN2ZcMlwyXHUwMzA4XHUwMzA5XDduXDJc Mlx1MDMwOVx1MDMwYVw3a1wyXDJcdTAzMGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMw Ylw3dVwyXDJcdTAzMGJcdTAzMGNcN3ZcMlwyXHUwMzBjaFwzXDJcMlwyXHUwMzBkIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAzMGVcN2dcMlwyXHUwMzBlXHUwMzBmXDdwXDJcMlx1MDMwZlx1 MDMxMFw3ZlwyXDJcdTAzMTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxMVw3aFwyXDJc dTAzMTFcdTAzMTJcN3FcMlwyXHUwMzEyXHUwMzEzXDd0XDJcMlx1MDMxMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMzE0XDdvXDJcMlx1MDMxNGpcM1wyXDJcMlx1MDMxNVx1MDMxNlw3aFwy XDJcdTAzMTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxN1w3cVwyXDJcdTAzMTdcdTAz MThcN3RcMlwyXHUwMzE4XHUwMzE5XDdvXDJcMlx1MDMxOSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgibFwzXDJcMlwyXHUwMzFhXHUwMzFiXDdoXDJcMlx1MDMxYlx1MDMxY1w3cVwyXDJcdTAzMWMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxZFw3dFwyXDJcdTAzMWRcdTAzMWVcN29cMlwy XHUwMzFlXHUwMzFmXDdvXDJcMlx1MDMxZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzIw XDdjXDJcMlx1MDMyMFx1MDMyMVw3clwyXDJcdTAzMjFuXDNcMlwyXDJcdTAzMjIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDMyM1w3b1wyXDJcdTAzMjNcdTAzMjRcN2NcMlwyXHUwMzI0XHUw MzI1XDdyXDJcMlx1MDMyNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzI2XDd2XDJcMlx1 MDMyNlx1MDMyN1w3a1wyXDJcdTAzMjdcdTAzMjhcN3ZcMlwyXHUwMzI4IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzMjlcN25cMlwyXHUwMzI5XHUwMzJhXDdnXDJcMlx1MDMyYXBcM1wyXDJc Mlx1MDMyYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzJjXDdvXDJcMlx1MDMyY1x1MDMy ZFw3Y1wyXDJcdTAzMmRcdTAzMmVcN3JcMlwyXHUwMzJlIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAzMmZcN2lcMlwyXHUwMzJmXHUwMzMwXDd3XDJcMlx1MDMzMFx1MDMzMVw3a1wyXDJcdTAz MzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMzMlw3ZlwyXDJcdTAzMzJyXDNcMlwyXDJc dTAzMzNcdTAzMzRcN3VcMlwyXHUwMzM0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMzVc N3dcMlwyXHUwMzM1XHUwMzM2XDdkXDJcMlx1MDMzNlx1MDMzN1w3dlwyXDJcdTAzMzciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDMzOFw3a1wyXDJcdTAzMzhcdTAzMzlcN3ZcMlwyXHUwMzM5 XHUwMzNhXDduXDJcMlx1MDMzYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzNiXDdnXDJc Mlx1MDMzYnRcM1wyXDJcMlx1MDMzY1x1MDMzZFw3Z1wyXDJcdTAzM2QiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDMzZVw3cFwyXDJcdTAzM2VcdTAzM2ZcN2ZcMlwyXHUwMzNmXHUwMzQwXDd1 XDJcMlx1MDM0MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzQxXDd3XDJcMlx1MDM0MVx1 MDM0Mlw3ZFwyXDJcdTAzNDJcdTAzNDNcN3ZcMlwyXHUwMzQzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAzNDRcN2tcMlwyXHUwMzQ0XHUwMzQ1XDd2XDJcMlx1MDM0NVx1MDM0Nlw3blwyXDJc dTAzNDYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM0N1w3Z1wyXDJcdTAzNDd2XDNcMlwy XDJcdTAzNDhcdTAzNDlcN2pcMlwyXHUwMzQ5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAz NGFcN2dcMlwyXHUwMzRhXHUwMzRiXDduXDJcMlx1MDM0Ylx1MDM0Y1w3clwyXDJcdTAzNGMiKQ0K DQorICAgICAgICBidWYud3JpdGUoInhcM1wyXDJcMlx1MDM0ZFx1MDM0ZVw3dlwyXDJcdTAzNGVc dTAzNGZcN2dcMlwyXHUwMzRmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNTBcN3pcMlwy XHUwMzUwXHUwMzUxXDd2XDJcMlx1MDM1MXpcM1wyXDJcMlx1MDM1MiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMzUzXDdxXDJcMlx1MDM1M1x1MDM1NFw3clwyXDJcdTAzNTRcdTAzNTVcN3Zc MlwyXHUwMzU1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNTZcN2tcMlwyXHUwMzU2XHUw MzU3XDdxXDJcMlx1MDM1N1x1MDM1OFw3cFwyXDJcdTAzNTgiKQ0KDQorICAgICAgICBidWYud3Jp dGUoInxcM1wyXDJcMlx1MDM1OVx1MDM1YVw3aFwyXDJcdTAzNWFcdTAzNWJcN25cMlwyXHUwMzVi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNWNcN2NcMlwyXHUwMzVjXHUwMzVkXDdpXDJc Mlx1MDM1ZFx1MDM1ZVw3dVwyXDJcdTAzNWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIn5cM1wy XDJcMlx1MDM1Zlx1MDM2MFw3ZlwyXDJcdTAzNjBcdTAzNjFcN2NcMlwyXHUwMzYxIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAzNjJcN3ZcMlwyXHUwMzYyXHUwMzYzXDdnXDJcMlx1MDM2M1x1 MDA4MFwzXDJcMlwyXHUwMzY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNjVcN2dcMlwy XHUwMzY1XHUwMzY2XDdwXDJcMlx1MDM2Nlx1MDM2N1w3ZlwyXDJcdTAzNjciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDM2OFw3ZlwyXDJcdTAzNjhcdTAzNjlcN2NcMlwyXHUwMzY5XHUwMzZh XDd2XDJcMlx1MDM2YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzZiXDdnXDJcMlx1MDM2 Ylx1MDA4MlwzXDJcMlwyXHUwMzZjXHUwMzZkXDd7XDJcMlx1MDM2ZCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMzZlXDdnXDJcMlx1MDM2ZVx1MDM2Zlw3Y1wyXDJcdTAzNmZcdTAzNzBcN3Rc MlwyXHUwMzcwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODRcM1wyXDJcMlx1MDM3MVx1 MDM3Mlw3b1wyXDJcdTAzNzJcdTAzNzNcN3FcMlwyXHUwMzczIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAzNzRcN3BcMlwyXHUwMzc0XHUwMzc1XDd2XDJcMlx1MDM3NVx1MDM3Nlw3alwyXDJc dTAzNzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA4NlwzXDJcMlwyXHUwMzc3XHUwMzc4 XDdmXDJcMlx1MDM3OFx1MDM3OVw3Y1wyXDJcdTAzNzkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDM3YVw3e1wyXDJcdTAzN2FcdTAwODhcM1wyXDJcMlx1MDM3Ylx1MDM3Y1w3dlwyXDJcdTAz N2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM3ZFw3a1wyXDJcdTAzN2RcdTAzN2VcN29c MlwyXHUwMzdlXHUwMzdmXDdnXDJcMlx1MDM3ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MDhhXDNcMlwyXDJcdTAzODBcdTAzODFcN2dcMlwyXHUwMzgxXHUwMzgyXDdwXDJcMlx1MDM4MiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzgzXDdmXDJcMlx1MDM4M1x1MDM4NFw3dlwyXDJc dTAzODRcdTAzODVcN2tcMlwyXHUwMzg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzODZc N29cMlwyXHUwMzg2XHUwMzg3XDdnXDJcMlx1MDM4N1x1MDA4Y1wzXDJcMlwyXHUwMzg4IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAzODlcN2pcMlwyXHUwMzg5XHUwMzhhXDdxXDJcMlx1MDM4 YVx1MDM4Ylw3d1wyXDJcdTAzOGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM4Y1w3dFwy XDJcdTAzOGNcdTAwOGVcM1wyXDJcMlx1MDM4ZFx1MDM4ZVw3b1wyXDJcdTAzOGUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDM4Zlw3a1wyXDJcdTAzOGZcdTAzOTBcN3BcMlwyXHUwMzkwXHUw MzkxXDd3XDJcMlx1MDM5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzkyXDd2XDJcMlx1 MDM5Mlx1MDM5M1w3Z1wyXDJcdTAzOTNcdTAwOTBcM1wyXDJcMlx1MDM5NCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMzk1XDd1XDJcMlx1MDM5NVx1MDM5Nlw3Z1wyXDJcdTAzOTZcdTAzOTdc N2VcMlwyXHUwMzk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzOThcN3FcMlwyXHUwMzk4 XHUwMzk5XDdwXDJcMlx1MDM5OVx1MDM5YVw3ZlwyXDJcdTAzOWEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDA5MlwzXDJcMlwyXHUwMzliXHUwMzljXDdpXDJcMlx1MDM5Y1x1MDM5ZFw3dFwy XDJcdTAzOWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM5ZVw3Y1wyXDJcdTAzOWVcdTAz OWZcN3tcMlwyXHUwMzlmXHUwM2EwXDdxXDJcMlx1MDNhMCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwM2ExXDd3XDJcMlx1MDNhMVx1MDNhMlw3dlwyXDJcdTAzYTJcdTAzYTNcN2tcMlwyXHUw M2EzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTRcN2hcMlwyXHUwM2E0XHUwMDk0XDNc MlwyXDJcdTAzYTVcdTAzYTZcN25cMlwyXHUwM2E2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAzYTdcN2NcMlwyXHUwM2E3XHUwM2E4XDdkXDJcMlx1MDNhOFx1MDNhOVw3Z1wyXDJcdTAzYTki KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNhYVw3blwyXDJcdTAzYWFcdTAwOTZcM1wyXDJc Mlx1MDNhYlx1MDNhY1w3dlwyXDJcdTAzYWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNh ZFw3a1wyXDJcdTAzYWRcdTAzYWVcN29cMlwyXHUwM2FlXHUwM2FmXDdnXDJcMlx1MDNhZiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2IwXDdxXDJcMlx1MDNiMFx1MDNiMVw3d1wyXDJcdTAz YjFcdTAzYjJcN3ZcMlwyXHUwM2IyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOThcM1wy XDJcMlx1MDNiM1x1MDNiNFw3a1wyXDJcdTAzYjRcdTAzYjVcN3BcMlwyXHUwM2I1IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAzYjZcN3hcMlwyXHUwM2I2XHUwM2I3XDdnXDJcMlx1MDNiN1x1 MDNiOFw3cFwyXDJcdTAzYjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNiOVw3dlwyXDJc dTAzYjlcdTAzYmFcN3FcMlwyXHUwM2JhXHUwM2JiXDd0XDJcMlx1MDNiYiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwM2JjXDd7XDJcMlx1MDNiY1x1MDA5YVwzXDJcMlwyXHUwM2JkXHUwM2Jl XDdhXDJcMlx1MDNiZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2JmXDdQXDJcMlx1MDNi Zlx1MDNjMFw3UVwyXDJcdTAzYzBcdTAzYzFcN1BcMlwyXHUwM2MxIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAzYzJcN2FcMlwyXHUwM2MyXHUwM2MzXDdQXDJcMlx1MDNjM1x1MDNjNFw3WFwy XDJcdTAzYzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNjNVw3YVwyXDJcdTAzYzVcdTAz YzZcN0ZcMlwyXHUwM2M2XHUwM2M3XDdDXDJcMlx1MDNjNyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwM2M4XDdWXDJcMlx1MDNjOFx1MDNjOVw3Q1wyXDJcdTAzYzlcdTAzY2FcN2FcMlwyXHUw M2NhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzY2JcN09cMlwyXHUwM2NiXHUwM2NjXDdD XDJcMlx1MDNjY1x1MDNjZFw3UlwyXDJcdTAzY2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDA5Y1wzXDJcMlwyXHUwM2NlXHUwM2NmXDd1XDJcMlx1MDNjZlx1MDNkMFw3dlwyXDJcdTAzZDAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNkMVw3dFwyXDJcdTAzZDFcdTAzZDJcN3dcMlwy XHUwM2QyXHUwM2QzXDdlXDJcMlx1MDNkMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2Q0 XDd2XDJcMlx1MDNkNFx1MDA5ZVwzXDJcMlwyXHUwM2Q1XHUwM2Q2XDd3XDJcMlx1MDNkNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2Q3XDdwXDJcMlx1MDNkN1x1MDNkOFw3a1wyXDJcdTAz ZDhcdTAzZDlcN3FcMlwyXHUwM2Q5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZGFcN3Bc MlwyXHUwM2RhXHUwMGEwXDNcMlwyXDJcdTAzZGJcdTAzZGNcN0RcMlwyXHUwM2RjIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAzZGRcN1FcMlwyXHUwM2RkXHUwM2RlXDdRXDJcMlx1MDNkZVx1 MDNkZlw3TlwyXDJcdTAzZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNlMFw3R1wyXDJc dTAzZTBcdTAzZTFcN0NcMlwyXHUwM2UxXHUwM2UyXDdQXDJcMlx1MDNlMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMGEyXDNcMlwyXDJcdTAzZTNcdTAzZTRcN1dcMlwyXHUwM2U0XHUwM2U1 XDdLXDJcMlx1MDNlNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2U2XDdQXDJcMlx1MDNl Nlx1MDNlN1w3VlwyXDJcdTAzZTdcdTAzZThcNzhcMlwyXHUwM2U4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAzZTlcN1w2NlwyXDJcdTAzZTlcdTAwYTRcM1wyXDJcMlx1MDNlYVx1MDNlYlw3 V1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNlYlx1MDNlY1w3S1wyXDJcdTAzZWNc dTAzZWRcN1BcMlwyXHUwM2VkXHUwM2VlXDdWIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XHUwM2VlXHUwM2VmXDdcNjVcMlwyXHUwM2VmXHUwM2YwXDdcNjRcMlwyXHUwM2YwXHUwMGE2IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNmMVx1MDNmMlw3V1wyXDJcdTAzZjJc dTAzZjNcN0tcMlwyXHUwM2YzXHUwM2Y0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1BcMlwy XHUwM2Y0XHUwM2Y1XDdWXDJcMlx1MDNmNVx1MDNmNlw3XDYzXDJcMlx1MDNmNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwM2Y3XDc4XDJcMlx1MDNmN1x1MDBhOFwzXDJcMlwyXHUwM2Y4XHUw M2Y5XDdXXDJcMlx1MDNmOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2ZhXDdLXDJcMlx1 MDNmYVx1MDNmYlw3UFwyXDJcdTAzZmJcdTAzZmNcN1ZcMlwyXHUwM2ZjIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzZmRcNzpcMlwyXHUwM2ZkXHUwMGFhXDNcMlwyXDJcdTAzZmVcdTAzZmZc N0dcMlwyXHUwM2ZmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MDBcN0hcMlwyXHUwNDAw XHUwNDAxXDdLXDJcMlx1MDQwMVx1MDQwMlw3YVwyXDJcdTA0MDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDQwM1w3VVwyXDJcdTA0MDNcdTA0MDRcN1ZcMlwyXHUwNDA0XHUwNDA1XDdUXDJc Mlx1MDQwNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDA2XDdLXDJcMlx1MDQwNlx1MDQw N1w3UFwyXDJcdTA0MDdcdTA0MDhcN0lcMlwyXHUwNDA4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA0MDlcN2FcMlwyXHUwNDA5XHUwNDBhXDdLXDJcMlx1MDQwYVx1MDQwYlw3RlwyXDJcdTA0 MGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBhY1wzXDJcMlwyXHUwNDBjXHUwNDBkXDdH XDJcMlx1MDQwZFx1MDQwZVw3SFwyXDJcdTA0MGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDQwZlw3S1wyXDJcdTA0MGZcdTA0MTBcN2FcMlwyXHUwNDEwXHUwNDExXDdKXDJcMlx1MDQxMSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDEyXDdLXDJcMlx1MDQxMlx1MDQxM1w3S1wyXDJc dTA0MTNcdTA0MTRcN2FcMlwyXHUwNDE0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MTVc N0ZcMlwyXHUwNDE1XHUwNDE2XDdDXDJcMlx1MDQxNlx1MDQxN1w3VlwyXDJcdTA0MTciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDQxOFw3R1wyXDJcdTA0MThcdTAwYWVcM1wyXDJcMlx1MDQx OVx1MDQxYVw3R1wyXDJcdTA0MWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQxYlw3SFwy XDJcdTA0MWJcdTA0MWNcN0tcMlwyXHUwNDFjXHUwNDFkXDdhXDJcMlx1MDQxZCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNDFlXDdKXDJcMlx1MDQxZVx1MDQxZlw3S1wyXDJcdTA0MWZcdTA0 MjBcN0tcMlwyXHUwNDIwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MjFcN2FcMlwyXHUw NDIxXHUwNDIyXDdWXDJcMlx1MDQyMlx1MDQyM1w3S1wyXDJcdTA0MjMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDQyNFw3T1wyXDJcdTA0MjRcdTA0MjVcN0dcMlwyXHUwNDI1XHUwMGIwXDNc MlwyXDJcdTA0MjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQyN1w3R1wyXDJcdTA0Mjdc dTA0MjhcN0hcMlwyXHUwNDI4XHUwNDI5XDdLXDJcMlx1MDQyOSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNDJhXDdhXDJcMlx1MDQyYVx1MDQyYlw3SlwyXDJcdTA0MmJcdTA0MmNcN0tcMlwy XHUwNDJjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MmRcN0tcMlwyXHUwNDJkXHUwNDJl XDdhXDJcMlx1MDQyZVx1MDQyZlw3VFwyXDJcdTA0MmYiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDQzMFw3R1wyXDJcdTA0MzBcdTA0MzFcN0hcMlwyXHUwNDMxXHUwMGIyXDNcMlwyXDJcdTA0 MzIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQzM1w3aVwyXDJcdTA0MzNcdTA0MzRcN3dc MlwyXHUwNDM0XHUwNDM1XDdrXDJcMlx1MDQzNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NDM2XDdmXDJcMlx1MDQzNlx1MDBiNFwzXDJcMlwyXHUwNDM3XHUwNDM4XDdlXDJcMlx1MDQzOCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDM5XDdqXDJcMlx1MDQzOVx1MDQzYVw3Z1wyXDJc dTA0M2FcdTA0M2JcN2VcMlwyXHUwNDNiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0M2Nc N21cMlwyXHUwNDNjXHUwNDNkXDdkXDJcMlx1MDQzZFx1MDQzZVw3cVwyXDJcdTA0M2UiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDQzZlw3elwyXDJcdTA0M2ZcdTAwYjZcM1wyXDJcMlx1MDQ0 MFx1MDQ0MVw3Z1wyXDJcdTA0NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ0Mlw3cFwy XDJcdTA0NDJcdTA0NDNcN2ZcMlwyXHUwNDQzXHUwNDQ0XDdlXDJcMlx1MDQ0NCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNDQ1XDdqXDJcMlx1MDQ0NVx1MDQ0Nlw3Z1wyXDJcdTA0NDZcdTA0 NDdcN2VcMlwyXHUwNDQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NDhcN21cMlwyXHUw NDQ4XHUwNDQ5XDdkXDJcMlx1MDQ0OVx1MDQ0YVw3cVwyXDJcdTA0NGEiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDQ0Ylw3elwyXDJcdTA0NGJcdTAwYjhcM1wyXDJcMlx1MDQ0Y1x1MDQ0ZFw3 cFwyXDJcdTA0NGQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ0ZVw3d1wyXDJcdTA0NGVc dTA0NGZcN29cMlwyXHUwNDRmXHUwNDUwXDdnXDJcMlx1MDQ1MCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNDUxXDd0XDJcMlx1MDQ1MVx1MDQ1Mlw3a1wyXDJcdTA0NTJcdTA0NTNcN2VcMlwy XHUwNDUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYmFcM1wyXDJcMlx1MDQ1NFx1MDQ1 NVw3Z1wyXDJcdTA0NTVcdTA0NTZcN3BcMlwyXHUwNDU2IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA0NTdcN2ZcMlwyXHUwNDU3XHUwNDU4XDdwXDJcMlx1MDQ1OFx1MDQ1OVw3d1wyXDJcdTA0 NTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ1YVw3b1wyXDJcdTA0NWFcdTA0NWJcN2dc MlwyXHUwNDViXHUwNDVjXDd0XDJcMlx1MDQ1YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NDVkXDdrXDJcMlx1MDQ1ZFx1MDQ1ZVw3ZVwyXDJcdTA0NWVcdTAwYmNcM1wyXDJcMlx1MDQ1ZiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDYwXDdvXDJcMlx1MDQ2MFx1MDQ2MVw3a1wyXDJc dTA0NjFcdTA0NjJcN3BcMlwyXHUwNDYyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NjNc N2tcMlwyXHUwNDYzXHUwNDY0XDdvXDJcMlx1MDQ2NFx1MDQ2NVw3d1wyXDJcdTA0NjUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDQ2Nlw3b1wyXDJcdTA0NjZcdTAwYmVcM1wyXDJcMlx1MDQ2 N1x1MDQ2OFw3b1wyXDJcdTA0NjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ2OVw3Y1wy XDJcdTA0NjlcdTA0NmFcN3pcMlwyXHUwNDZhXHUwNDZiXDdrXDJcMlx1MDQ2YiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNDZjXDdvXDJcMlx1MDQ2Y1x1MDQ2ZFw3d1wyXDJcdTA0NmRcdTA0 NmVcN29cMlwyXHUwNDZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYzBcM1wyXDJcMlx1 MDQ2Zlx1MDQ3MFw3dVwyXDJcdTA0NzBcdTA0NzFcN3ZcMlwyXHUwNDcxIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA0NzJcN2dcMlwyXHUwNDcyXHUwNDczXDdyXDJcMlx1MDQ3M1x1MDBjMlwz XDJcMlwyXHUwNDc0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NzVcN2ZcMlwyXHUwNDc1 XHUwNDc2XDdnXDJcMlx1MDQ3Nlx1MDQ3N1w3aFwyXDJcdTA0NzciKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDQ3OFw3Y1wyXDJcdTA0NzhcdTA0NzlcN3dcMlwyXHUwNDc5XHUwNDdhXDduXDJc Mlx1MDQ3YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDdiXDd2XDJcMlx1MDQ3Ylx1MDBj NFwzXDJcMlwyXHUwNDdjXHUwNDdkXDdyXDJcMlx1MDQ3ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNDdlXDdjXDJcMlx1MDQ3ZVx1MDQ3Zlw3dVwyXDJcdTA0N2ZcdTA0ODBcN3VcMlwyXHUw NDgwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ODFcN3lcMlwyXHUwNDgxXHUwNDgyXDdx XDJcMlx1MDQ4Mlx1MDQ4M1w3dFwyXDJcdTA0ODMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDQ4NFw3ZlwyXDJcdTA0ODRcdTAwYzZcM1wyXDJcMlx1MDQ4NVx1MDQ4Nlw3Z1wyXDJcdTA0ODYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ4N1w3cFwyXDJcdTA0ODdcdTA0ODhcN2ZcMlwy XHUwNDg4XHUwNDg5XDdyXDJcMlx1MDQ4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDhh XDdjXDJcMlx1MDQ4YVx1MDQ4Ylw3dVwyXDJcdTA0OGJcdTA0OGNcN3VcMlwyXHUwNDhjIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA0OGRcN3lcMlwyXHUwNDhkXHUwNDhlXDdxXDJcMlx1MDQ4 ZVx1MDQ4Zlw3dFwyXDJcdTA0OGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ5MFw3Zlwy XDJcdTA0OTBcdTAwYzhcM1wyXDJcMlx1MDQ5MVx1MDQ5Mlw3dVwyXDJcdTA0OTIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDQ5M1w3dlwyXDJcdTA0OTNcdTA0OTRcN3RcMlwyXHUwNDk0XHUw NDk1XDdrXDJcMlx1MDQ5NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDk2XDdwXDJcMlx1 MDQ5Nlx1MDQ5N1w3aVwyXDJcdTA0OTdcdTAwY2FcM1wyXDJcMlx1MDQ5OCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNDk5XDdnXDJcMlx1MDQ5OVx1MDQ5YVw3cFwyXDJcdTA0OWFcdTA0OWJc N2ZcMlwyXHUwNDliIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0OWNcN3VcMlwyXHUwNDlj XHUwNDlkXDd2XDJcMlx1MDQ5ZFx1MDQ5ZVw3dFwyXDJcdTA0OWUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDQ5Zlw3a1wyXDJcdTA0OWZcdTA0YTBcN3BcMlwyXHUwNGEwXHUwNGExXDdpXDJc Mlx1MDRhMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGNjXDNcMlwyXDJcdTA0YTJcdTA0 YTNcN29cMlwyXHUwNGEzXHUwNGE0XDdrXDJcMlx1MDRhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNGE1XDdwXDJcMlx1MDRhNVx1MDRhNlw3dVwyXDJcdTA0YTZcdTA0YTdcN2tcMlwyXHUw NGE3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YThcN3xcMlwyXHUwNGE4XHUwNGE5XDdn XDJcMlx1MDRhOVx1MDBjZVwzXDJcMlwyXHUwNGFhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA0YWJcN29cMlwyXHUwNGFiXHUwNGFjXDdjXDJcMlx1MDRhY1x1MDRhZFw3elwyXDJcdTA0YWQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRhZVw3dVwyXDJcdTA0YWVcdTA0YWZcN2tcMlwy XHUwNGFmXHUwNGIwXDd8XDJcMlx1MDRiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGIx XDdnXDJcMlx1MDRiMVx1MDBkMFwzXDJcMlwyXHUwNGIyXHUwNGIzXDdnXDJcMlx1MDRiMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGI0XDdwXDJcMlx1MDRiNFx1MDRiNVw3ZVwyXDJcdTA0 YjVcdTA0YjZcN3FcMlwyXHUwNGI2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YjdcN2Zc MlwyXHUwNGI3XHUwNGI4XDdrXDJcMlx1MDRiOFx1MDRiOVw3cFwyXDJcdTA0YjkiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDRiYVw3aVwyXDJcdTA0YmFcdTAwZDJcM1wyXDJcMlx1MDRiYlx1 MDRiY1w3dVwyXDJcdTA0YmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRiZFw3d1wyXDJc dTA0YmRcdTA0YmVcN3JcMlwyXHUwNGJlXHUwNGJmXDdyXDJcMlx1MDRiZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNGMwXDd0XDJcMlx1MDRjMFx1MDRjMVw3Z1wyXDJcdTA0YzFcdTA0YzJc N3VcMlwyXHUwNGMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YzNcN3VcMlwyXHUwNGMz XHUwNGM0XDdrXDJcMlx1MDRjNFx1MDRjNVw3aFwyXDJcdTA0YzUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBkNFwzXDJcMlwyXHUwNGM2XHUwNGM3XDdmXDJcMlx1MDRjN1x1MDRjOFw3a1wy XDJcdTA0YzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRjOVw3dVwyXDJcdTA0YzlcdTA0 Y2FcN2NcMlwyXHUwNGNhXHUwNGNiXDdkXDJcMlx1MDRjYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNGNjXDduXDJcMlx1MDRjY1x1MDRjZFw3Z1wyXDJcdTA0Y2RcdTA0Y2VcN2tcMlwyXHUw NGNlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0Y2ZcN2hcMlwyXHUwNGNmXHUwMGQ2XDNc MlwyXDJcdTA0ZDBcdTA0ZDFcN2pcMlwyXHUwNGQxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA0ZDJcN2tcMlwyXHUwNGQyXHUwNGQzXDdmXDJcMlx1MDRkM1x1MDRkNFw3ZlwyXDJcdTA0ZDQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRkNVw3Z1wyXDJcdTA0ZDVcdTA0ZDZcN3BcMlwy XHUwNGQ2XHUwMGQ4XDNcMlwyXDJcdTA0ZDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRk OFw3aVwyXDJcdTA0ZDhcdTA0ZDlcN3FcMlwyXHUwNGQ5XHUwNGRhXDd2XDJcMlx1MDRkYSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGRiXDdxXDJcMlx1MDRkYlx1MDBkYVwzXDJcMlwyXHUw NGRjXHUwNGRkXDdoXDJcMlx1MDRkZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGRlXDdx XDJcMlx1MDRkZVx1MDRkZlw3dFwyXDJcdTA0ZGZcdTA0ZTBcN29cMlwyXHUwNGUwIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA0ZTFcN3VcMlwyXHUwNGUxXHUwNGUyXDdnXDJcMlx1MDRlMlx1 MDRlM1w3dlwyXDJcdTA0ZTMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRlNFw3aVwyXDJc dTA0ZTRcdTA0ZTVcN3dcMlwyXHUwNGU1XHUwNGU2XDdrXDJcMlx1MDRlNiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNGU3XDdmXDJcMlx1MDRlN1x1MDBkY1wzXDJcMlwyXHUwNGU4XHUwNGU5 XDdrXDJcMlx1MDRlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGVhXDdwXDJcMlx1MDRl YVx1MDRlYlw3ZVwyXDJcdTA0ZWJcdTA0ZWNcN3FcMlwyXHUwNGVjIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA0ZWRcN3BcMlwyXHUwNGVkXHUwNGVlXDd1XDJcMlx1MDRlZVx1MDRlZlw3a1wy XDJcdTA0ZWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRmMFw3dVwyXDJcdTA0ZjBcdTA0 ZjFcN3ZcMlwyXHUwNGYxXHUwNGYyXDdnXDJcMlx1MDRmMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNGYzXDdwXDJcMlx1MDRmM1x1MDRmNFw3dlwyXDJcdTA0ZjRcdTA0ZjVcN2tcMlwyXHUw NGY1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZjZcN2hcMlwyXHUwNGY2XHUwMGRlXDNc MlwyXDJcdTA0ZjdcdTA0ZjhcN3lcMlwyXHUwNGY4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA0ZjlcN2NcMlwyXHUwNGY5XHUwNGZhXDd0XDJcMlx1MDRmYVx1MDRmYlw3cFwyXDJcdTA0ZmIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRmY1w3a1wyXDJcdTA0ZmNcdTA0ZmRcN3BcMlwy XHUwNGZkXHUwNGZlXDdpXDJcMlx1MDRmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGZm XDdrXDJcMlx1MDRmZlx1MDUwMFw3aFwyXDJcdTA1MDBcdTAwZTBcM1wyXDJcMlx1MDUwMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTAyXDdwXDJcMlx1MDUwMlx1MDUwM1w3cVwyXDJcdTA1 MDNcdTA1MDRcN3VcMlwyXHUwNTA0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MDVcN3dc MlwyXHUwNTA1XHUwNTA2XDdkXDJcMlx1MDUwNlx1MDUwN1w3b1wyXDJcdTA1MDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDUwOFw3a1wyXDJcdTA1MDhcdTA1MDlcN3ZcMlwyXHUwNTA5XHUw NTBhXDdrXDJcMlx1MDUwYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTBiXDdoXDJcMlx1 MDUwYlx1MDBlMlwzXDJcMlwyXHUwNTBjXHUwNTBkXDdnXDJcMlx1MDUwZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNTBlXDdwXDJcMlx1MDUwZVx1MDUwZlw3ZlwyXDJcdTA1MGZcdTA1MTBc N2tcMlwyXHUwNTEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MTFcN2hcMlwyXHUwNTEx XHUwMGU0XDNcMlwyXDJcdTA1MTJcdTA1MTNcN21cMlwyXHUwNTEzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1MTRcN2dcMlwyXHUwNTE0XHUwNTE1XDd7XDJcMlx1MDUxNVx1MDBlNlwzXDJc MlwyXHUwNTE2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MTdcN0ZcMlwyXHUwNTE3XHUw NTE4XDdHXDJcMlx1MDUxOFx1MDUxOVw3SFwyXDJcdTA1MTkiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDUxYVw3Q1wyXDJcdTA1MWFcdTA1MWJcN1dcMlwyXHUwNTFiXHUwNTFjXDdOXDJcMlx1 MDUxYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTFkXDdWXDJcMlx1MDUxZFx1MDBlOFwz XDJcMlwyXHUwNTFlXHUwNTFmXDdPXDJcMlx1MDUxZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNTIwXDdDXDJcMlx1MDUyMFx1MDUyMVw3UFwyXDJcdTA1MjFcdTA1MjJcN1dcMlwyXHUwNTIy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MjNcN0hcMlwyXHUwNTIzXHUwNTI0XDdDXDJc Mlx1MDUyNFx1MDUyNVw3RVwyXDJcdTA1MjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUy Nlw3VlwyXDJcdTA1MjZcdTA1MjdcN1dcMlwyXHUwNTI3XHUwNTI4XDdUXDJcMlx1MDUyOCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTI5XDdLXDJcMlx1MDUyOVx1MDUyYVw3UFwyXDJcdTA1 MmFcdTA1MmJcN0lcMlwyXHUwNTJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZWFcM1wy XDJcMlx1MDUyY1x1MDUyZFw3RVwyXDJcdTA1MmRcdTA1MmVcN0pcMlwyXHUwNTJlIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1MmZcN0dcMlwyXHUwNTJmXHUwNTMwXDdFXDJcMlx1MDUzMFx1 MDUzMVw3TVwyXDJcdTA1MzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUzMlw3RFwyXDJc dTA1MzJcdTA1MzNcN1FcMlwyXHUwNTMzXHUwNTM0XDdaXDJcMlx1MDUzNCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNTM1XDdhXDJcMlx1MDUzNVx1MDUzNlw3RlwyXDJcdTA1MzZcdTA1Mzdc N0dcMlwyXHUwNTM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MzhcN0hcMlwyXHUwNTM4 XHUwNTM5XDdDXDJcMlx1MDUzOVx1MDUzYVw3V1wyXDJcdTA1M2EiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDUzYlw3TlwyXDJcdTA1M2JcdTA1M2NcN1ZcMlwyXHUwNTNjXHUwMGVjXDNcMlwy XDJcdTA1M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUzZVw3RVwyXDJcdTA1M2VcdTA1 M2ZcN0pcMlwyXHUwNTNmXHUwNTQwXDdHXDJcMlx1MDU0MCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNTQxXDdFXDJcMlx1MDU0MVx1MDU0Mlw3TVwyXDJcdTA1NDJcdTA1NDNcN0RcMlwyXHUw NTQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NDRcN1FcMlwyXHUwNTQ0XHUwNTQ1XDda XDJcMlx1MDU0NVx1MDU0Nlw3YVwyXDJcdTA1NDYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDU0N1w3RlwyXDJcdTA1NDdcdTA1NDhcN0dcMlwyXHUwNTQ4XHUwNTQ5XDdIXDJcMlx1MDU0OSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTRhXDdDXDJcMlx1MDU0YVx1MDU0Ylw3V1wyXDJc dTA1NGJcdTA1NGNcN05cMlwyXHUwNTRjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NGRc N1ZcMlwyXHUwNTRkXHUwNTRlXDdhXDJcMlx1MDU0ZVx1MDU0Zlw3T1wyXDJcdTA1NGYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDU1MFw3SFwyXDJcdTA1NTBcdTA1NTFcN0lcMlwyXHUwNTUx XHUwMGVlXDNcMlwyXDJcdTA1NTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1M1w3S1wy XDJcdTA1NTNcdTA1NTRcN1BcMlwyXHUwNTU0XHUwNTU1XDdWXDJcMlx1MDU1NSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNTU2XDdHXDJcMlx1MDU1Nlx1MDU1N1w3VFwyXDJcdTA1NTdcdTA1 NThcN0NcMlwyXHUwNTU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NTlcN0VcMlwyXHUw NTU5XHUwNTVhXDdWXDJcMlx1MDU1YVx1MDU1Ylw3S1wyXDJcdTA1NWIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDU1Y1w3WFwyXDJcdTA1NWNcdTA1NWRcN0dcMlwyXHUwNTVkXHUwMGYwXDNc MlwyXDJcdTA1NWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1Zlw3UFwyXDJcdTA1NWZc dTA1NjBcN1hcMlwyXHUwNTYwXHUwNTYxXDdhXDJcMlx1MDU2MSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNTYyXDdDXDJcMlx1MDU2Mlx1MDU2M1w3RVwyXDJcdTA1NjNcdTA1NjRcN0VcMlwy XHUwNTY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjVcN0dcMlwyXHUwNTY1XHUwNTY2 XDdVXDJcMlx1MDU2Nlx1MDU2N1w3VVwyXDJcdTA1NjciKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBmMlwzXDJcMlwyXHUwNTY4XHUwNTY5XDdUXDJcMlx1MDU2OVx1MDU2YVw3R1wyXDJcdTA1 NmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU2Ylw3VVwyXDJcdTA1NmJcdTA1NmNcN0dc MlwyXHUwNTZjXHUwNTZkXDdWXDJcMlx1MDU2ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NTZlXDdhXDJcMlx1MDU2ZVx1MDU2Zlw3VFwyXDJcdTA1NmZcdTA1NzBcN0dcMlwyXHUwNTcwIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NzFcN1NcMlwyXHUwNTcxXHUwNTcyXDdXXDJcMlx1 MDU3Mlx1MDU3M1w3S1wyXDJcdTA1NzMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU3NFw3 VFwyXDJcdTA1NzRcdTA1NzVcN0dcMlwyXHUwNTc1XHUwNTc2XDdGXDJcMlx1MDU3NiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMGY0XDNcMlwyXDJcdTA1NzdcdTA1NzhcN1RcMlwyXHUwNTc4 XHUwNTc5XDdHXDJcMlx1MDU3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTdhXDdFXDJc Mlx1MDU3YVx1MDU3Ylw3UVwyXDJcdTA1N2JcdTA1N2NcN1BcMlwyXHUwNTdjIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA1N2RcN1BcMlwyXHUwNTdkXHUwNTdlXDdHXDJcMlx1MDU3ZVx1MDU3 Zlw3RVwyXDJcdTA1N2YiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU4MFw3VlwyXDJcdTA1 ODBcdTA1ODFcN2FcMlwyXHUwNTgxXHUwNTgyXDdUXDJcMlx1MDU4MiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNTgzXDdHXDJcMlx1MDU4M1x1MDU4NFw3U1wyXDJcdTA1ODRcdTA1ODVcN1dc MlwyXHUwNTg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ODZcN0tcMlwyXHUwNTg2XHUw NTg3XDdUXDJcMlx1MDU4N1x1MDU4OFw3R1wyXDJcdTA1ODgiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDU4OVw3RlwyXDJcdTA1ODlcdTAwZjZcM1wyXDJcMlx1MDU4YVx1MDU4Ylw3TlwyXDJc dTA1OGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU4Y1w3Q1wyXDJcdTA1OGNcdTA1OGRc N1ZcMlwyXHUwNThkXHUwNThlXDdHXDJcMlx1MDU4ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNThmXDdhXDJcMlx1MDU4Zlx1MDU5MFw3RVwyXDJcdTA1OTBcdTA1OTFcN0pcMlwyXHUwNTkx IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1OTJcN0dcMlwyXHUwNTkyXHUwNTkzXDdFXDJc Mlx1MDU5M1x1MDU5NFw3TVwyXDJcdTA1OTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBm OFwzXDJcMlwyXHUwNTk1XHUwNTk2XDdUXDJcMlx1MDU5Nlx1MDU5N1w3R1wyXDJcdTA1OTciKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDU5OFw3Q1wyXDJcdTA1OThcdTA1OTlcN0ZcMlwyXHUw NTk5XHUwNTlhXDdhXDJcMlx1MDU5YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTliXDdR XDJcMlx1MDU5Ylx1MDU5Y1w3UFwyXDJcdTA1OWNcdTA1OWRcN05cMlwyXHUwNTlkIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1OWVcN1tcMlwyXHUwNTllXHUwMGZhXDNcMlwyXDJcdTA1OWZc dTA1YTBcN1FcMlwyXHUwNWEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YTFcN1JcMlwy XHUwNWExXHUwNWEyXDdWXDJcMlx1MDVhMlx1MDVhM1w3S1wyXDJcdTA1YTMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDVhNFw3UVwyXDJcdTA1YTRcdTA1YTVcN1BcMlwyXHUwNWE1XHUwNWE2 XDdVXDJcMlx1MDVhNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWE3XDdhXDJcMlx1MDVh N1x1MDVhOFw3UVwyXDJcdTA1YThcdTA1YTlcN1BcMlwyXHUwNWE5IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1YWFcN05cMlwyXHUwNWFhXHUwNWFiXDdbXDJcMlx1MDVhYlx1MDBmY1wzXDJc MlwyXHUwNWFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YWRcN1RcMlwyXHUwNWFkXHUw NWFlXDdHXDJcMlx1MDVhZVx1MDVhZlw3VVwyXDJcdTA1YWYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDViMFw3VlwyXDJcdTA1YjBcdTA1YjFcN2FcMlwyXHUwNWIxXHUwNWIyXDdVXDJcMlx1 MDViMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWIzXDdWXDJcMlx1MDViM1x1MDViNFw3 W1wyXDJcdTA1YjRcdTA1YjVcN05cMlwyXHUwNWI1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA1YjZcN0dcMlwyXHUwNWI2XHUwMGZlXDNcMlwyXDJcdTA1YjdcdTA1YjhcN2VcMlwyXHUwNWI4 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YjlcN25cMlwyXHUwNWI5XHUwNWJhXDdjXDJc Mlx1MDViYVx1MDViYlw3dVwyXDJcdTA1YmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVi Y1w3dVwyXDJcdTA1YmNcdTAxMDBcM1wyXDJcMlx1MDViZFx1MDViZVw3dVwyXDJcdTA1YmUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDViZlw3d1wyXDJcdTA1YmZcdTA1YzBcN2RcMlwyXHUw NWMwXHUwNWMxXDdlXDJcMlx1MDVjMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWMyXDdu XDJcMlx1MDVjMlx1MDVjM1w3Y1wyXDJcdTA1YzNcdTA1YzRcN3VcMlwyXHUwNWM0IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1YzVcN3VcMlwyXHUwNWM1XHUwMTAyXDNcMlwyXDJcdTA1YzZc dTA1YzdcN2VcMlwyXHUwNWM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YzhcN25cMlwy XHUwNWM4XHUwNWM5XDdjXDJcMlx1MDVjOVx1MDVjYVw3dVwyXDJcdTA1Y2EiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDVjYlw3dVwyXDJcdTA1Y2JcdTA1Y2NcN2lcMlwyXHUwNWNjXHUwNWNk XDd3XDJcMlx1MDVjZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWNlXDdrXDJcMlx1MDVj ZVx1MDVjZlw3ZlwyXDJcdTA1Y2ZcdTAxMDRcM1wyXDJcMlx1MDVkMCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNWQxXDd2XDJcMlx1MDVkMVx1MDVkMlw3e1wyXDJcdTA1ZDJcdTA1ZDNcN3Jc MlwyXHUwNWQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZDRcN2dcMlwyXHUwNWQ0XHUw NWQ1XDdmXDJcMlx1MDVkNVx1MDVkNlw3Z1wyXDJcdTA1ZDYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDVkN1w3aFwyXDJcdTA1ZDdcdTAxMDZcM1wyXDJcMlx1MDVkOFx1MDVkOVw3dFwyXDJc dTA1ZDkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVkYVw3Z1wyXDJcdTA1ZGFcdTA1ZGJc N3VcMlwyXHUwNWRiXHUwNWRjXDd2XDJcMlx1MDVkYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNWRkXDdxXDJcMlx1MDVkZFx1MDVkZVw3dFwyXDJcdTA1ZGVcdTA1ZGZcN2dcMlwyXHUwNWRm IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMDhcM1wyXDJcMlx1MDVlMFx1MDVlMVw3dVwy XDJcdTA1ZTFcdTA1ZTJcN2NcMlwyXHUwNWUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1 ZTNcN3hcMlwyXHUwNWUzXHUwNWU0XDdnXDJcMlx1MDVlNFx1MDEwYVwzXDJcMlwyXHUwNWU1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZTZcN2ZcMlwyXHUwNWU2XHUwNWU3XDdnXDJcMlx1 MDVlN1x1MDVlOFw3aFwyXDJcdTA1ZTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVlOVw3 Y1wyXDJcdTA1ZTlcdTA1ZWFcN3dcMlwyXHUwNWVhXHUwNWViXDduXDJcMlx1MDVlYiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNWVjXDd2XDJcMlx1MDVlY1x1MDVlZFw3dVwyXDJcdTA1ZWRc dTAxMGNcM1wyXDJcMlx1MDVlZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWVmXDdkXDJc Mlx1MDVlZlx1MDVmMFw3Y1wyXDJcdTA1ZjBcdTA1ZjFcN3BcMlwyXHUwNWYxIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA1ZjJcN3BcMlwyXHUwNWYyXHUwNWYzXDdnXDJcMlx1MDVmM1x1MDVm NFw3dFwyXDJcdTA1ZjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEwZVwzXDJcMlwyXHUw NWY1XHUwNWY2XDdjXDJcMlx1MDVmNlx1MDVmN1w3blwyXDJcdTA1ZjciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDVmOFw3a1wyXDJcdTA1ZjhcdTA1ZjlcN2lcMlwyXHUwNWY5XHUwNWZhXDdw XDJcMlx1MDVmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTEwXDNcMlwyXDJcdTA1ZmJc dTA1ZmNcN25cMlwyXHUwNWZjXHUwNWZkXDdnXDJcMlx1MDVmZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNWZlXDdoXDJcMlx1MDVmZVx1MDVmZlw3dlwyXDJcdTA1ZmZcdTAxMTJcM1wyXDJc Mlx1MDYwMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjAxXDd0XDJcMlx1MDYwMVx1MDYw Mlw3a1wyXDJcdTA2MDJcdTA2MDNcN2lcMlwyXHUwNjAzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA2MDRcN2pcMlwyXHUwNjA0XHUwNjA1XDd2XDJcMlx1MDYwNVx1MDExNFwzXDJcMlwyXHUw NjA2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MDdcN2VcMlwyXHUwNjA3XHUwNjA4XDdn XDJcMlx1MDYwOFx1MDYwOVw3cFwyXDJcdTA2MDkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDYwYVw3dlwyXDJcdTA2MGFcdTA2MGJcN2dcMlwyXHUwNjBiXHUwNjBjXDd0XDJcMlx1MDYwYyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTE2XDNcMlwyXDJcdTA2MGRcdTA2MGVcN25cMlwy XHUwNjBlXHUwNjBmXDdrXDJcMlx1MDYwZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjEw XDdwXDJcMlx1MDYxMFx1MDYxMVw3Z1wyXDJcdTA2MTFcdTAxMThcM1wyXDJcMlx1MDYxMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjEzXDdwXDJcMlx1MDYxM1x1MDYxNFw3Y1wyXDJcdTA2 MTRcdTA2MTVcN29cMlwyXHUwNjE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MTZcN2dc MlwyXHUwNjE2XHUwMTFhXDNcMlwyXDJcdTA2MTdcdTA2MThcN3hcMlwyXHUwNjE4IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA2MTlcN2NcMlwyXHUwNjE5XHUwNjFhXDd0XDJcMlx1MDYxYVx1 MDYxYlw3a1wyXDJcdTA2MWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDYxY1w3ZlwyXDJc dTA2MWNcdTAxMWNcM1wyXDJcMlx1MDYxZFx1MDYxZVw3c1wyXDJcdTA2MWUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDYxZlw3d1wyXDJcdTA2MWZcdTA2MjBcN2dcMlwyXHUwNjIwXHUwNjIx XDd1XDJcMlx1MDYyMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjIyXDd2XDJcMlx1MDYy Mlx1MDYyM1w3a1wyXDJcdTA2MjNcdTA2MjRcN3FcMlwyXHUwNjI0IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA2MjVcN3BcMlwyXHUwNjI1XHUwMTFlXDNcMlwyXDJcdTA2MjZcdTA2MjdcN3Nc MlwyXHUwNjI3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MjhcN3dcMlwyXHUwNjI4XHUw NjI5XDdnXDJcMlx1MDYyOVx1MDYyYVw3dVwyXDJcdTA2MmEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDYyYlw3dlwyXDJcdTA2MmJcdTA2MmNcN2tcMlwyXHUwNjJjXHUwNjJkXDdxXDJcMlx1 MDYyZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjJlXDdwXDJcMlx1MDYyZVx1MDYyZlw3 a1wyXDJcdTA2MmZcdTA2MzBcN2ZcMlwyXHUwNjMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAxMjBcM1wyXDJcMlx1MDYzMVx1MDYzMlw3a1wyXDJcdTA2MzJcdTA2MzNcN29cMlwyXHUwNjMz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MzRcN2NcMlwyXHUwNjM0XHUwNjM1XDdpXDJc Mlx1MDYzNVx1MDYzNlw3Z1wyXDJcdTA2MzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEy MlwzXDJcMlwyXHUwNjM3XHUwNjM4XDduXDJcMlx1MDYzOFx1MDYzOVw3cVwyXDJcdTA2MzkiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDYzYVw3ZVwyXDJcdTA2M2FcdTA2M2JcN21cMlwyXHUw NjNiXHUwNjNjXDdnXDJcMlx1MDYzYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjNkXDdm XDJcMlx1MDYzZFx1MDEyNFwzXDJcMlwyXHUwNjNlXHUwNjNmXDd0XDJcMlx1MDYzZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNjQwXDd3XDJcMlx1MDY0MFx1MDY0MVw3blwyXDJcdTA2NDFc dTA2NDJcN2dcMlwyXHUwNjQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMjZcM1wyXDJc Mlx1MDY0M1x1MDY0NFw3Z1wyXDJcdTA2NDRcdTA2NDVcN3BcMlwyXHUwNjQ1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA2NDZcN2ZcMlwyXHUwNjQ2XHUwNjQ3XDd0XDJcMlx1MDY0N1x1MDY0 OFw3d1wyXDJcdTA2NDgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY0OVw3blwyXDJcdTA2 NDlcdTA2NGFcN2dcMlwyXHUwNjRhXHUwMTI4XDNcMlwyXDJcdTA2NGIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDY0Y1w3eFwyXDJcdTA2NGNcdTA2NGRcN2NcMlwyXHUwNjRkXHUwNjRlXDdu XDJcMlx1MDY0ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjRmXDd3XDJcMlx1MDY0Zlx1 MDY1MFw3Z1wyXDJcdTA2NTBcdTAxMmFcM1wyXDJcMlx1MDY1MSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNjUyXDd0XDJcMlx1MDY1Mlx1MDY1M1w3Z1wyXDJcdTA2NTNcdTA2NTRcN2NcMlwy XHUwNjU0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NTVcN2ZcMlwyXHUwNjU1XHUwMTJj XDNcMlwyXDJcdTA2NTZcdTA2NTdcN3lcMlwyXHUwNjU3IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA2NThcN3RcMlwyXHUwNjU4XHUwNjU5XDdrXDJcMlx1MDY1OVx1MDY1YVw3dlwyXDJcdTA2 NWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY1Ylw3Z1wyXDJcdTA2NWJcdTAxMmVcM1wy XDJcMlx1MDY1Y1x1MDY1ZFw3dFwyXDJcdTA2NWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDY1ZVw3Z1wyXDJcdTA2NWVcdTA2NWZcN3VcMlwyXHUwNjVmXHUwNjYwXDdnXDJcMlx1MDY2MCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjYxXDd2XDJcMlx1MDY2MVx1MDY2Mlw3ZFwyXDJc dTA2NjJcdTA2NjNcN3dcMlwyXHUwNjYzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NjRc N3ZcMlwyXHUwNjY0XHUwNjY1XDd2XDJcMlx1MDY2NVx1MDY2Nlw3cVwyXDJcdTA2NjYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDY2N1w3cFwyXDJcdTA2NjdcdTAxMzBcM1wyXDJcMlx1MDY2 OFx1MDY2OVw3Z1wyXDJcdTA2NjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY2YVw3cFwy XDJcdTA2NmFcdTA2NmJcN2ZcMlwyXHUwNjZiXHUwNjZjXDd0XDJcMlx1MDY2YyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNjZkXDdnXDJcMlx1MDY2ZFx1MDY2ZVw3dVwyXDJcdTA2NmVcdTA2 NmZcN2dcMlwyXHUwNjZmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NzBcN3ZcMlwyXHUw NjcwXHUwNjcxXDdkXDJcMlx1MDY3MVx1MDY3Mlw3d1wyXDJcdTA2NzIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDY3M1w3dlwyXDJcdTA2NzNcdTA2NzRcN3ZcMlwyXHUwNjc0XHUwNjc1XDdx XDJcMlx1MDY3NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjc2XDdwXDJcMlx1MDY3Nlx1 MDEzMlwzXDJcMlwyXHUwNjc3XHUwNjc4XDdmXDJcMlx1MDY3OCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNjc5XDdnXDJcMlx1MDY3OVx1MDY3YVw3aFwyXDJcdTA2N2FcdTA2N2JcN2NcMlwy XHUwNjdiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2N2NcN3dcMlwyXHUwNjdjXHUwNjdk XDduXDJcMlx1MDY3ZFx1MDY3ZVw3dlwyXDJcdTA2N2UiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDY3Zlw3dVwyXDJcdTA2N2ZcdTA2ODBcN3ZcMlwyXHUwNjgwXHUwNjgxXDdxXDJcMlx1MDY4 MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjgyXDd0XDJcMlx1MDY4Mlx1MDY4M1w3Z1wy XDJcdTA2ODNcdTAxMzRcM1wyXDJcMlx1MDY4NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw Njg1XDdjXDJcMlx1MDY4NVx1MDY4Nlw3dlwyXDJcdTA2ODZcdTA2ODdcN3ZcMlwyXHUwNjg3IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ODhcN3RcMlwyXHUwNjg4XHUwNjg5XDdrXDJcMlx1 MDY4OVx1MDY4YVw3ZFwyXDJcdTA2OGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY4Ylw3 d1wyXDJcdTA2OGJcdTA2OGNcN3ZcMlwyXHUwNjhjXHUwNjhkXDdnXDJcMlx1MDY4ZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMTM2XDNcMlwyXDJcdTA2OGVcdTA2OGZcN3hcMlwyXHUwNjhm XHUwNjkwXDdjXDJcMlx1MDY5MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjkxXDd0XDJc Mlx1MDY5MVx1MDY5Mlw3dVwyXDJcdTA2OTJcdTA2OTNcN3ZcMlwyXHUwNjkzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA2OTRcN3FcMlwyXHUwNjk0XHUwNjk1XDd0XDJcMlx1MDY5NVx1MDY5 Nlw3Z1wyXDJcdTA2OTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzOFwzXDJcMlwyXHUw Njk3XHUwNjk4XDdnXDJcMlx1MDY5OFx1MDY5OVw3aFwyXDJcdTA2OTkiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDY5YVw3a1wyXDJcdTA2OWFcdTA2OWJcN3hcMlwyXHUwNjliXHUwNjljXDdj XDJcMlx1MDY5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjlkXDd0XDJcMlx1MDY5ZFx1 MDY5ZVw3dVwyXDJcdTA2OWVcdTA2OWZcN3ZcMlwyXHUwNjlmIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA2YTBcN3FcMlwyXHUwNmEwXHUwNmExXDd0XDJcMlx1MDZhMVx1MDZhMlw3Z1wyXDJc dTA2YTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzYVwzXDJcMlwyXHUwNmEzXHUwNmE0 XDd4XDJcMlx1MDZhNFx1MDZhNVw3Y1wyXDJcdTA2YTUiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDZhNlw3dFwyXDJcdTA2YTZcdTA2YTdcN3VcMlwyXHUwNmE3XHUwNmE4XDdrXDJcMlx1MDZh OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmE5XDd8XDJcMlx1MDZhOVx1MDZhYVw3Z1wy XDJcdTA2YWFcdTAxM2NcM1wyXDJcMlx1MDZhYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NmFjXDdwXDJcMlx1MDZhY1x1MDZhZFw3Y1wyXDJcdTA2YWRcdTA2YWVcN29cMlwyXHUwNmFlIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2YWZcN2dcMlwyXHUwNmFmXHUwNmIwXDd4XDJcMlx1 MDZiMFx1MDZiMVw3Y1wyXDJcdTA2YjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZiMlw3 blwyXDJcdTA2YjJcdTA2YjNcN3dcMlwyXHUwNmIzXHUwNmI0XDdnXDJcMlx1MDZiNCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNmI1XDd4XDJcMlx1MDZiNVx1MDZiNlw3Y1wyXDJcdTA2YjZc dTA2YjdcN3RcMlwyXHUwNmI3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2YjhcN3VcMlwy XHUwNmI4XHUwNmI5XDd2XDJcMlx1MDZiOVx1MDZiYVw3cVwyXDJcdTA2YmEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDZiYlw3dFwyXDJcdTA2YmJcdTA2YmNcN2dcMlwyXHUwNmJjXHUwMTNl XDNcMlwyXDJcdTA2YmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZiZVw3Y1wyXDJcdTA2 YmVcdTA2YmZcN2VcMlwyXHUwNmJmXHUwNmMwXDd2XDJcMlx1MDZjMCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNmMxXDdrXDJcMlx1MDZjMVx1MDZjMlw3cVwyXDJcdTA2YzJcdTA2YzNcN3Bc MlwyXHUwNmMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNDBcM1wyXDJcMlx1MDZjNFx1 MDZjNVw3ZVwyXDJcdTA2YzVcdTA2YzZcN3FcMlwyXHUwNmM2IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA2YzdcN3BcMlwyXHUwNmM3XHUwNmM4XDdoXDJcMlx1MDZjOFx1MDZjOVw3a1wyXDJc dTA2YzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZjYVw3aVwyXDJcdTA2Y2FcdTAxNDJc M1wyXDJcMlx1MDZjYlx1MDZjY1w3Z1wyXDJcdTA2Y2MiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDZjZFw3cFwyXDJcdTA2Y2RcdTA2Y2VcN2ZcMlwyXHUwNmNlXHUwNmNmXDdjXDJcMlx1MDZj ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmQwXDdlXDJcMlx1MDZkMFx1MDZkMVw3dlwy XDJcdTA2ZDFcdTA2ZDJcN2tcMlwyXHUwNmQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 ZDNcN3FcMlwyXHUwNmQzXHUwNmQ0XDdwXDJcMlx1MDZkNFx1MDE0NFwzXDJcMlwyXHUwNmQ1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZDZcN3RcMlwyXHUwNmQ2XHUwNmQ3XDdnXDJcMlx1 MDZkN1x1MDZkOFw3aFwyXDJcdTA2ZDgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZkOVw3 dFwyXDJcdTA2ZDlcdTA2ZGFcN2dcMlwyXHUwNmRhXHUwNmRiXDd1XDJcMlx1MDZkYiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNmRjXDdqXDJcMlx1MDZkY1x1MDE0NlwzXDJcMlwyXHUwNmRk XHUwNmRlXDdrXDJcMlx1MDZkZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmRmXDdwXDJc Mlx1MDZkZlx1MDZlMFw3dlwyXDJcdTA2ZTBcdTA2ZTFcN2dcMlwyXHUwNmUxIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA2ZTJcN3RcMlwyXHUwNmUyXHUwNmUzXDd4XDJcMlx1MDZlM1x1MDZl NFw3Y1wyXDJcdTA2ZTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZlNVw3blwyXDJcdTA2 ZTVcdTAxNDhcM1wyXDJcMlx1MDZlNlx1MDZlN1w3eFwyXDJcdTA2ZTciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDZlOFw3Y1wyXDJcdTA2ZThcdTA2ZTlcN3RcMlwyXHUwNmU5XHUwNmVhXDd1 XDJcMlx1MDZlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmViXDd2XDJcMlx1MDZlYlx1 MDZlY1w3cVwyXDJcdTA2ZWNcdTA2ZWRcN3RcMlwyXHUwNmVkIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA2ZWVcN2dcMlwyXHUwNmVlXHUwNmVmXDdmXDJcMlx1MDZlZlx1MDZmMFw3Z1wyXDJc dTA2ZjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZmMVw3eFwyXDJcdTA2ZjFcdTA2ZjJc N2tcMlwyXHUwNmYyXHUwNmYzXDdlXDJcMlx1MDZmMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNmY0XDdnXDJcMlx1MDZmNFx1MDE0YVwzXDJcMlwyXHUwNmY1XHUwNmY2XDdpXDJcMlx1MDZm NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmY3XDd3XDJcMlx1MDZmN1x1MDZmOFw3a1wy XDJcdTA2ZjhcdTA2ZjlcN2ZcMlwyXHUwNmY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 ZmFcN3FcMlwyXHUwNmZhXHUwNmZiXDdyXDJcMlx1MDZmYlx1MDE0Y1wzXDJcMlwyXHUwNmZjIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZmRcN2dcMlwyXHUwNmZkXHUwNmZlXDdwXDJcMlx1 MDZmZVx1MDZmZlw3ZlwyXDJcdTA2ZmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDcwMFw3 aVwyXDJcdTA3MDBcdTA3MDFcN3dcMlwyXHUwNzAxXHUwNzAyXDdrXDJcMlx1MDcwMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNzAzXDdmXDJcMlx1MDcwM1x1MDcwNFw3cVwyXDJcdTA3MDRc dTA3MDVcN3JcMlwyXHUwNzA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNGVcM1wyXDJc Mlx1MDcwNlx1MDcwN1w3ZlwyXDJcdTA3MDdcdTA3MDhcN2NcMlwyXHUwNzA4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA3MDlcN3ZcMlwyXHUwNzA5XHUwNzBhXDdjXDJcMlx1MDcwYVx1MDcw Ylw3dlwyXDJcdTA3MGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDcwY1w3e1wyXDJcdTA3 MGNcdTA3MGRcN3JcMlwyXHUwNzBkXHUwNzBlXDdnXDJcMlx1MDcwZSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMTUwXDNcMlwyXDJcdTA3MGZcdTA3MTBcN2ZcMlwyXHUwNzEwXHUwNzExXDdj XDJcMlx1MDcxMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzEyXDd2XDJcMlx1MDcxMlx1 MDcxM1w3Y1wyXDJcdTA3MTNcdTAxNTJcM1wyXDJcMlx1MDcxNCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNzE1XDdvXDJcMlx1MDcxNVx1MDcxNlw3cVwyXDJcdTA3MTZcdTA3MTdcN2ZcMlwy XHUwNzE3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MThcN2NcMlwyXHUwNzE4XHUwNzE5 XDduXDJcMlx1MDcxOVx1MDE1NFwzXDJcMlwyXHUwNzFhIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA3MWJcN1BcMlwyXHUwNzFiXHUwNzFjXDdRXDJcMlx1MDcxY1x1MDcxZFw3UFwyXDJcdTA3 MWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDcxZVw3YVwyXDJcdTA3MWVcdTA3MWZcN0Zc MlwyXHUwNzFmXHUwNzIwXDdHXDJcMlx1MDcyMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NzIxXDdYXDJcMlx1MDcyMVx1MDcyMlw3S1wyXDJcdTA3MjJcdTA3MjNcN0VcMlwyXHUwNzIzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MjRcN0dcMlwyXHUwNzI0XHUwMTU2XDNcMlwyXDJc dTA3MjVcdTA3MjZcN0ZcMlwyXHUwNzI2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3Mjdc N0tcMlwyXHUwNzI3XHUwNzI4XDdVXDJcMlx1MDcyOFx1MDcyOVw3TVwyXDJcdTA3MjkiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDcyYVw3YVwyXDJcdTA3MmFcdTA3MmJcN0ZcMlwyXHUwNzJi XHUwNzJjXDdHXDJcMlx1MDcyYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzJkXDdYXDJc Mlx1MDcyZFx1MDcyZVw3S1wyXDJcdTA3MmVcdTA3MmZcN0VcMlwyXHUwNzJmIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA3MzBcN0dcMlwyXHUwNzMwXHUwMTU4XDNcMlwyXDJcdTA3MzFcdTA3 MzJcN1hcMlwyXHUwNzMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MzNcN0tcMlwyXHUw NzMzXHUwNzM0XDdGXDJcMlx1MDczNFx1MDczNVw3R1wyXDJcdTA3MzUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDczNlw3UVwyXDJcdTA3MzZcdTA3MzdcN2FcMlwyXHUwNzM3XHUwNzM4XDdG XDJcMlx1MDczOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzM5XDdHXDJcMlx1MDczOVx1 MDczYVw3WFwyXDJcdTA3M2FcdTA3M2JcN0tcMlwyXHUwNzNiIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA3M2NcN0VcMlwyXHUwNzNjXHUwNzNkXDdHXDJcMlx1MDczZFx1MDE1YVwzXDJcMlwy XHUwNzNlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3M2ZcN1BcMlwyXHUwNzNmXHUwNzQw XDdHXDJcMlx1MDc0MFx1MDc0MVw3VlwyXDJcdTA3NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDc0Mlw3WVwyXDJcdTA3NDJcdTA3NDNcN1FcMlwyXHUwNzQzXHUwNzQ0XDdUXDJcMlx1MDc0 NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzQ1XDdNXDJcMlx1MDc0NVx1MDc0Nlw3YVwy XDJcdTA3NDZcdTA3NDdcN0ZcMlwyXHUwNzQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3 NDhcN0dcMlwyXHUwNzQ4XHUwNzQ5XDdYXDJcMlx1MDc0OVx1MDc0YVw3S1wyXDJcdTA3NGEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDc0Ylw3RVwyXDJcdTA3NGJcdTA3NGNcN0dcMlwyXHUw NzRjXHUwMTVjXDNcMlwyXDJcdTA3NGQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc0ZVw3 S1wyXDJcdTA3NGVcdTA3NGZcN1BcMlwyXHUwNzRmXHUwNzUwXDdSXDJcMlx1MDc1MCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNzUxXDdXXDJcMlx1MDc1MVx1MDc1Mlw3VlwyXDJcdTA3NTJc dTA3NTNcN2FcMlwyXHUwNzUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NTRcN0ZcMlwy XHUwNzU0XHUwNzU1XDdHXDJcMlx1MDc1NVx1MDc1Nlw3WFwyXDJcdTA3NTYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDc1N1w3S1wyXDJcdTA3NTdcdTA3NThcN0VcMlwyXHUwNzU4XHUwNzU5 XDdHXDJcMlx1MDc1OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTVlXDNcMlwyXDJcdTA3 NWFcdTA3NWJcN1FcMlwyXHUwNzViXHUwNzVjXDdQXDJcMlx1MDc1YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNzVkXDdEXDJcMlx1MDc1ZFx1MDc1ZVw3UVwyXDJcdTA3NWVcdTA3NWZcN0Nc MlwyXHUwNzVmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NjBcN1RcMlwyXHUwNzYwXHUw NzYxXDdGXDJcMlx1MDc2MVx1MDc2Mlw3YVwyXDJcdTA3NjIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDc2M1w3RlwyXDJcdTA3NjNcdTA3NjRcN0dcMlwyXHUwNzY0XHUwNzY1XDdYXDJcMlx1 MDc2NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzY2XDdLXDJcMlx1MDc2Nlx1MDc2N1w3 RVwyXDJcdTA3NjdcdTA3NjhcN0dcMlwyXHUwNzY4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAxNjBcM1wyXDJcMlx1MDc2OVx1MDc2YVw3UVwyXDJcdTA3NmFcdTA3NmJcN1ZcMlwyXHUwNzZi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NmNcN0pcMlwyXHUwNzZjXHUwNzZkXDdHXDJc Mlx1MDc2ZFx1MDc2ZVw3VFwyXDJcdTA3NmUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc2 Zlw3YVwyXDJcdTA3NmZcdTA3NzBcN0ZcMlwyXHUwNzcwXHUwNzcxXDdHXDJcMlx1MDc3MSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzcyXDdYXDJcMlx1MDc3Mlx1MDc3M1w3S1wyXDJcdTA3 NzNcdTA3NzRcN0VcMlwyXHUwNzc0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NzVcN0dc MlwyXHUwNzc1XHUwMTYyXDNcMlwyXDJcdTA3NzZcdTA3NzdcN1VcMlwyXHUwNzc3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3NzhcN0dcMlwyXHUwNzc4XHUwNzc5XDdWXDJcMlx1MDc3OVx1 MDc3YVw3V1wyXDJcdTA3N2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc3Ylw3UlwyXDJc dTA3N2JcdTA3N2NcN2FcMlwyXHUwNzdjXHUwNzdkXDdDXDJcMlx1MDc3ZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNzdlXDdSXDJcMlx1MDc3ZVx1MDc3Zlw3UlwyXDJcdTA3N2ZcdTA3ODBc N05cMlwyXHUwNzgwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ODFcN0tcMlwyXHUwNzgx XHUwNzgyXDdFXDJcMlx1MDc4Mlx1MDc4M1w3Q1wyXDJcdTA3ODMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDc4NFw3VlwyXDJcdTA3ODRcdTA3ODVcN0tcMlwyXHUwNzg1XHUwNzg2XDdRXDJc Mlx1MDc4NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzg3XDdQXDJcMlx1MDc4N1x1MDE2 NFwzXDJcMlwyXHUwNzg4XHUwNzg5XDdJXDJcMlx1MDc4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNzhhXDdHXDJcMlx1MDc4YVx1MDc4Ylw3UFwyXDJcdTA3OGJcdTA3OGNcN0dcMlwyXHUw NzhjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3OGRcN1RcMlwyXHUwNzhkXHUwNzhlXDdD XDJcMlx1MDc4ZVx1MDc4Zlw3TlwyXDJcdTA3OGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDc5MFw3YVwyXDJcdTA3OTBcdTA3OTFcN0NcMlwyXHUwNzkxXHUwNzkyXDdSXDJcMlx1MDc5MiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzkzXDdSXDJcMlx1MDc5M1x1MDc5NFw3TlwyXDJc dTA3OTRcdTA3OTVcN0tcMlwyXHUwNzk1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3OTZc N0VcMlwyXHUwNzk2XHUwNzk3XDdDXDJcMlx1MDc5N1x1MDc5OFw3VlwyXDJcdTA3OTgiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDc5OVw3S1wyXDJcdTA3OTlcdTA3OWFcN1FcMlwyXHUwNzlh XHUwNzliXDdQXDJcMlx1MDc5YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTY2XDNcMlwy XDJcdTA3OWNcdTA3OWRcN0hcMlwyXHUwNzlkXHUwNzllXDdUXDJcMlx1MDc5ZSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNzlmXDdRXDJcMlx1MDc5Zlx1MDdhMFw3UFwyXDJcdTA3YTBcdTA3 YTFcN1ZcMlwyXHUwN2ExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YTJcN2FcMlwyXHUw N2EyXHUwN2EzXDdSXDJcMlx1MDdhM1x1MDdhNFw3Q1wyXDJcdTA3YTQiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDdhNVw3SVwyXDJcdTA3YTVcdTA3YTZcN0dcMlwyXHUwN2E2XHUwMTY4XDNc MlwyXDJcdTA3YTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdhOFw3VVwyXDJcdTA3YThc dTA3YTlcN0tcMlwyXHUwN2E5XHUwN2FhXDdQXDJcMlx1MDdhYSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwN2FiXDdJXDJcMlx1MDdhYlx1MDdhY1w3TlwyXDJcdTA3YWNcdTA3YWRcN0dcMlwy XHUwN2FkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YWVcN2FcMlwyXHUwN2FlXHUwN2Fm XDdXXDJcMlx1MDdhZlx1MDdiMFw3VVwyXDJcdTA3YjAiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDdiMVw3R1wyXDJcdTA3YjFcdTAxNmFcM1wyXDJcMlx1MDdiMlx1MDdiM1w3W1wyXDJcdTA3 YjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdiNFw3R1wyXDJcdTA3YjRcdTA3YjVcN0Nc MlwyXHUwN2I1XHUwN2I2XDdUXDJcMlx1MDdiNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw N2I3XDdhXDJcMlx1MDdiN1x1MDdiOFw3VVwyXDJcdTA3YjhcdTA3YjlcN1dcMlwyXHUwN2I5IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YmFcN1JcMlwyXHUwN2JhXHUwN2JiXDdSXDJcMlx1 MDdiYlx1MDdiY1w3VFwyXDJcdTA3YmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdiZFw3 R1wyXDJcdTA3YmRcdTA3YmVcN1VcMlwyXHUwN2JlXHUwN2JmXDdVXDJcMlx1MDdiZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMTZjXDNcMlwyXDJcdTA3YzBcdTA3YzFcN09cMlwyXHUwN2Mx XHUwN2MyXDdRXDJcMlx1MDdjMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2MzXDdQXDJc Mlx1MDdjM1x1MDdjNFw3VlwyXDJcdTA3YzRcdTA3YzVcN0pcMlwyXHUwN2M1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA3YzZcN2FcMlwyXHUwN2M2XHUwN2M3XDdVXDJcMlx1MDdjN1x1MDdj OFw3V1wyXDJcdTA3YzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdjOVw3UlwyXDJcdTA3 YzlcdTA3Y2FcN1JcMlwyXHUwN2NhXHUwN2NiXDdUXDJcMlx1MDdjYiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwN2NjXDdHXDJcMlx1MDdjY1x1MDdjZFw3VVwyXDJcdTA3Y2RcdTA3Y2VcN1Vc MlwyXHUwN2NlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNmVcM1wyXDJcMlx1MDdjZlx1 MDdkMFw3RlwyXDJcdTA3ZDBcdTA3ZDFcN0NcMlwyXHUwN2QxIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA3ZDJcN1tcMlwyXHUwN2QyXHUwN2QzXDdhXDJcMlx1MDdkM1x1MDdkNFw3VVwyXDJc dTA3ZDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdkNVw3V1wyXDJcdTA3ZDVcdTA3ZDZc N1JcMlwyXHUwN2Q2XHUwN2Q3XDdSXDJcMlx1MDdkNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwN2Q4XDdUXDJcMlx1MDdkOFx1MDdkOVw3R1wyXDJcdTA3ZDlcdTA3ZGFcN1VcMlwyXHUwN2Rh IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZGJcN1VcMlwyXHUwN2RiXHUwMTcwXDNcMlwy XDJcdTA3ZGNcdTA3ZGRcN0pcMlwyXHUwN2RkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3 ZGVcN1FcMlwyXHUwN2RlXHUwN2RmXDdXXDJcMlx1MDdkZlx1MDdlMFw3VFwyXDJcdTA3ZTAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDdlMVw3YVwyXDJcdTA3ZTFcdTA3ZTJcN1VcMlwyXHUw N2UyXHUwN2UzXDdXXDJcMlx1MDdlMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2U0XDdS XDJcMlx1MDdlNFx1MDdlNVw3UlwyXDJcdTA3ZTVcdTA3ZTZcN1RcMlwyXHUwN2U2IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3ZTdcN0dcMlwyXHUwN2U3XHUwN2U4XDdVXDJcMlx1MDdlOFx1 MDdlOVw3VVwyXDJcdTA3ZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE3MlwzXDJcMlwy XHUwN2VhXHUwN2ViXDdPXDJcMlx1MDdlYlx1MDdlY1w3S1wyXDJcdTA3ZWMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDdlZFw3UFwyXDJcdTA3ZWRcdTA3ZWVcN1dcMlwyXHUwN2VlXHUwN2Vm XDdWXDJcMlx1MDdlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2YwXDdHXDJcMlx1MDdm MFx1MDdmMVw3YVwyXDJcdTA3ZjFcdTA3ZjJcN1VcMlwyXHUwN2YyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA3ZjNcN1dcMlwyXHUwN2YzXHUwN2Y0XDdSXDJcMlx1MDdmNFx1MDdmNVw3Ulwy XDJcdTA3ZjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdmNlw3VFwyXDJcdTA3ZjZcdTA3 ZjdcN0dcMlwyXHUwN2Y3XHUwN2Y4XDdVXDJcMlx1MDdmOCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwN2Y5XDdVXDJcMlx1MDdmOVx1MDE3NFwzXDJcMlwyXHUwN2ZhXHUwN2ZiXDdVXDJcMlx1 MDdmYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2ZjXDdHXDJcMlx1MDdmY1x1MDdmZFw3 RVwyXDJcdTA3ZmRcdTA3ZmVcN1FcMlwyXHUwN2ZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA3ZmZcN1BcMlwyXHUwN2ZmXHUwODAwXDdGXDJcMlx1MDgwMFx1MDgwMVw3YVwyXDJcdTA4MDEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgwMlw3VVwyXDJcdTA4MDJcdTA4MDNcN1dcMlwy XHUwODAzXHUwODA0XDdSXDJcMlx1MDgwNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODA1 XDdSXDJcMlx1MDgwNVx1MDgwNlw3VFwyXDJcdTA4MDZcdTA4MDdcN0dcMlwyXHUwODA3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA4MDhcN1VcMlwyXHUwODA4XHUwODA5XDdVXDJcMlx1MDgw OVx1MDE3NlwzXDJcMlwyXHUwODBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MGJcN1Vc MlwyXHUwODBiXHUwODBjXDdWXDJcMlx1MDgwY1x1MDgwZFw3UVwyXDJcdTA4MGQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDgwZVw3VFwyXDJcdTA4MGVcdTA4MGZcN0NcMlwyXHUwODBmXHUw ODEwXDdJXDJcMlx1MDgxMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODExXDdHXDJcMlx1 MDgxMVx1MDgxMlw3YVwyXDJcdTA4MTJcdTA4MTNcN1BcMlwyXHUwODEzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA4MTRcN1FcMlwyXHUwODE0XHUwODE1XDdUXDJcMlx1MDgxNVx1MDgxNlw3 T1wyXDJcdTA4MTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgxN1w3Q1wyXDJcdTA4MTdc dTA4MThcN05cMlwyXHUwODE4XHUwMTc4XDNcMlwyXDJcdTA4MTkiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDgxYVw3VVwyXDJcdTA4MWFcdTA4MWJcN1ZcMlwyXHUwODFiXHUwODFjXDdRXDJc Mlx1MDgxYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODFkXDdUXDJcMlx1MDgxZFx1MDgx ZVw3Q1wyXDJcdTA4MWVcdTA4MWZcN0lcMlwyXHUwODFmIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA4MjBcN0dcMlwyXHUwODIwXHUwODIxXDdhXDJcMlx1MDgyMVx1MDgyMlw3VlwyXDJcdTA4 MjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgyM1w3S1wyXDJcdTA4MjNcdTA4MjRcN09c MlwyXHUwODI0XHUwODI1XDdHXDJcMlx1MDgyNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MTdhXDNcMlwyXDJcdTA4MjZcdTA4MjdcN1VcMlwyXHUwODI3XHUwODI4XDdWXDJcMlx1MDgyOCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODI5XDdRXDJcMlx1MDgyOVx1MDgyYVw3VFwyXDJc dTA4MmFcdTA4MmJcN0NcMlwyXHUwODJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MmNc N0lcMlwyXHUwODJjXHUwODJkXDdHXDJcMlx1MDgyZFx1MDgyZVw3YVwyXDJcdTA4MmUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDgyZlw3WVwyXDJcdTA4MmZcdTA4MzBcN0NcMlwyXHUwODMw XHUwODMxXDdNXDJcMlx1MDgzMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODMyXDdHXDJc Mlx1MDgzMlx1MDgzM1w3V1wyXDJcdTA4MzNcdTA4MzRcN1JcMlwyXHUwODM0IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAxN2NcM1wyXDJcMlx1MDgzNVx1MDgzNlw3V1wyXDJcdTA4MzZcdTA4 MzdcN1BcMlwyXHUwODM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MzhcN0tcMlwyXHUw ODM4XHUwODM5XDdTXDJcMlx1MDgzOVx1MDgzYVw3V1wyXDJcdTA4M2EiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDgzYlw3R1wyXDJcdTA4M2JcdTAxN2VcM1wyXDJcMlx1MDgzY1x1MDgzZFw3 UFwyXDJcdTA4M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgzZVw3UVwyXDJcdTA4M2Vc dTA4M2ZcN0dcMlwyXHUwODNmXHUwODQwXDdPXDJcMlx1MDg0MCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwODQxXDdSXDJcMlx1MDg0MVx1MDg0Mlw3VlwyXDJcdTA4NDJcdTA4NDNcN1tcMlwy XHUwODQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxODBcM1wyXDJcMlx1MDg0NFx1MDg0 NVw3ZVwyXDJcdTA4NDVcdTA4NDZcN3FcMlwyXHUwODQ2IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA4NDdcN3BcMlwyXHUwODQ3XHUwODQ4XDdmXDJcMlx1MDg0OFx1MDE4MlwzXDJcMlwyXHUw ODQ5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NGFcN2hcMlwyXHUwODRhXHUwODRiXDdr XDJcMlx1MDg0Ylx1MDg0Y1w3cFwyXDJcdTA4NGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDg0ZFw3ZlwyXDJcdTA4NGRcdTAxODRcM1wyXDJcMlx1MDg0ZVx1MDg0Zlw3b1wyXDJcdTA4NGYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg1MFw3a1wyXDJcdTA4NTBcdTA4NTFcN2ZcMlwy XHUwODUxXHUwMTg2XDNcMlwyXDJcdTA4NTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg1 M1w3dlwyXDJcdTA4NTNcdTA4NTRcN3FcMlwyXHUwODU0XHUwODU1XDdtXDJcMlx1MDg1NSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODU2XDdnXDJcMlx1MDg1Nlx1MDg1N1w3cFwyXDJcdTA4 NTdcdTAxODhcM1wyXDJcMlx1MDg1OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODU5XDd1 XDJcMlx1MDg1OVx1MDg1YVw3clwyXDJcdTA4NWFcdTA4NWJcN2NcMlwyXHUwODViIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA4NWNcN3BcMlwyXHUwODVjXHUwMThhXDNcMlwyXDJcdTA4NWRc dTA4NWVcN2ZcMlwyXHUwODVlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NWZcN3dcMlwy XHUwODVmXHUwODYwXDdyXDJcMlx1MDg2MFx1MDE4Y1wzXDJcMlwyXHUwODYxIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA4NjJcN3hcMlwyXHUwODYyXHUwODYzXDdjXDJcMlx1MDg2M1x1MDg2 NFw3dFwyXDJcdTA4NjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg2NVw3Z1wyXDJcdTA4 NjVcdTA4NjZcN3NcMlwyXHUwODY2XHUwODY3XDd4XDJcMlx1MDg2NyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwODY4XDdjXDJcMlx1MDg2OFx1MDg2OVw3blwyXDJcdTA4NjlcdTAxOGVcM1wy XDJcMlx1MDg2YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODZiXDd4XDJcMlx1MDg2Ylx1 MDg2Y1w3Y1wyXDJcdTA4NmNcdTA4NmRcN3RcMlwyXHUwODZkIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAxOTBcM1wyXDJcMlx1MDg2ZVx1MDg2Zlw3a1wyXDJcdTA4NmZcdTA4NzBcN2ZcMlwy XHUwODcwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NzFcN2dcMlwyXHUwODcxXHUwODcy XDdzXDJcMlx1MDg3Mlx1MDg3M1w3eFwyXDJcdTA4NzMiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDg3NFw3Y1wyXDJcdTA4NzRcdTA4NzVcN25cMlwyXHUwODc1XHUwMTkyXDNcMlwyXDJcdTA4 NzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg3N1w3a1wyXDJcdTA4NzdcdTA4NzhcN2Zc MlwyXHUwODc4XHUwODc5XDdnXDJcMlx1MDg3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw ODdhXDdzXDJcMlx1MDg3YVx1MDg3Ylw3a1wyXDJcdTA4N2JcdTA4N2NcN2ZcMlwyXHUwODdjIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxOTRcM1wyXDJcMlx1MDg3ZFx1MDg3ZVw3a1wyXDJc dTA4N2VcdTA4N2ZcN2ZcMlwyXHUwODdmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ODBc N2dcMlwyXHUwODgwXHUwODgxXDdzXDJcMlx1MDg4MVx1MDg4Mlw3eFwyXDJcdTA4ODIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDg4M1w3Y1wyXDJcdTA4ODNcdTA4ODRcN25cMlwyXHUwODg0 XHUwODg1XDduXDJcMlx1MDg4NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODg2XDdrXDJc Mlx1MDg4Nlx1MDg4N1w3dVwyXDJcdTA4ODdcdTA4ODhcN3ZcMlwyXHUwODg4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAxOTZcM1wyXDJcMlx1MDg4OVx1MDg4YVw3c1wyXDJcdTA4OGFcdTA4 OGJcN3dcMlwyXHUwODhiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OGNcN2dcMlwyXHUw ODhjXHUwODhkXDd1XDJcMlx1MDg4ZFx1MDg4ZVw3dlwyXDJcdTA4OGUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDg4Zlw3a1wyXDJcdTA4OGZcdTA4OTBcN3FcMlwyXHUwODkwXHUwODkxXDdw XDJcMlx1MDg5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODkyXDd0XDJcMlx1MDg5Mlx1 MDg5M1w3Z1wyXDJcdTA4OTNcdTA4OTRcN2hcMlwyXHUwODk0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAxOThcM1wyXDJcMlx1MDg5NVx1MDg5Nlw3dFwyXDJcdTA4OTZcdTA4OTdcN3dcMlwy XHUwODk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OThcN25cMlwyXHUwODk4XHUwODk5 XDdnXDJcMlx1MDg5OVx1MDg5YVw3dFwyXDJcdTA4OWEiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDg5Ylw3Z1wyXDJcdTA4OWJcdTA4OWNcN2hcMlwyXHUwODljXHUwMTlhXDNcMlwyXDJcdTA4 OWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg5ZVw3dVwyXDJcdTA4OWVcdTA4OWZcN3Zc MlwyXHUwODlmXHUwOGEwXDd0XDJcMlx1MDhhMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw OGExXDdrXDJcMlx1MDhhMVx1MDhhMlw3cFwyXDJcdTA4YTJcdTA4YTNcN2lcMlwyXHUwOGEzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YTRcN3RcMlwyXHUwOGE0XHUwOGE1XDdnXDJcMlx1 MDhhNVx1MDhhNlw3aFwyXDJcdTA4YTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE5Y1wz XDJcMlwyXHUwOGE3XHUwOGE4XDdyXDJcMlx1MDhhOFx1MDhhOVw3d1wyXDJcdTA4YTkiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDhhYVw3dVwyXDJcdTA4YWFcdTA4YWJcN2pcMlwyXHUwOGFi XHUwOGFjXDd2XDJcMlx1MDhhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGFkXDdqXDJc Mlx1MDhhZFx1MDhhZVw3a1wyXDJcdTA4YWVcdTA4YWZcN3VcMlwyXHUwOGFmIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAxOWVcM1wyXDJcMlx1MDhiMFx1MDhiMVw3dVwyXDJcdTA4YjFcdTA4 YjJcN2dcMlwyXHUwOGIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YjNcN2VcMlwyXHUw OGIzXHUwOGI0XDd3XDJcMlx1MDhiNFx1MDhiNVw3dFwyXDJcdTA4YjUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDhiNlw3a1wyXDJcdTA4YjZcdTA4YjdcN3ZcMlwyXHUwOGI3XHUwOGI4XDd7 XDJcMlx1MDhiOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWEwXDNcMlwyXDJcdTA4Yjlc dTA4YmFcN2lcMlwyXHUwOGJhXHUwOGJiXDdnXDJcMlx1MDhiYiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOGJjXDd2XDJcMlx1MDhiY1x1MDFhMlwzXDJcMlwyXHUwOGJkXHUwOGJlXDdWXDJc Mlx1MDhiZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGJmXDdUXDJcMlx1MDhiZlx1MDhj MFw3V1wyXDJcdTA4YzBcdTA4YzFcN0dcMlwyXHUwOGMxIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAxYTRcM1wyXDJcMlx1MDhjMlx1MDhjM1w3SFwyXDJcdTA4YzNcdTA4YzRcN0NcMlwyXHUw OGM0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YzVcN05cMlwyXHUwOGM1XHUwOGM2XDdV XDJcMlx1MDhjNlx1MDhjN1w3R1wyXDJcdTA4YzciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDFhNlwzXDJcMlwyXHUwOGM4XHUwOGM5XDdRXDJcMlx1MDhjOVx1MDhjYVw3UFwyXDJcdTA4Y2Ei KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjYlw3R1wyXDJcdTA4Y2JcdTAxYThcM1wyXDJc Mlx1MDhjY1x1MDhjZFw3UVwyXDJcdTA4Y2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhj ZVw3UFwyXDJcdTA4Y2VcdTA4Y2ZcN0dcMlwyXHUwOGNmXHUwOGQwXDdVXDJcMlx1MDhkMCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWFhXDNcMlwyXDJcdTA4ZDFcdTA4ZDJcN1xcXDJcMlx1 MDhkMlx1MDhkM1w3R1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhkM1x1MDhkNFw3 VFwyXDJcdTA4ZDRcdTA4ZDVcN1FcMlwyXHUwOGQ1XHUwMWFjXDNcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlx1MDhkNlx1MDhkN1w3V1wyXDJcdTA4ZDdcdTA4ZDhcN1BcMlwyXHUwOGQ4 XHUwOGQ5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0ZcMlwyXHUwOGQ5XHUwOGRhXDdHXDJc Mlx1MDhkYVx1MDhkYlw3SFwyXDJcdTA4ZGJcdTA4ZGMiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3S1wyXDJcdTA4ZGNcdTA4ZGRcN1BcMlwyXHUwOGRkXHUwOGRlXDdHXDJcMlx1MDhkZVx1MDhk ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdGXDJcMlx1MDhkZlx1MDFhZVwzXDJcMlwyXHUw OGUwXHUwOGUxXDdYXDJcMlx1MDhlMVx1MDhlMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdH XDJcMlx1MDhlMlx1MDhlM1w3VFwyXDJcdTA4ZTNcdTA4ZTRcN1VcMlwyXHUwOGU0XHUwOGU1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0tcMlwyXHUwOGU1XHUwOGU2XDdRXDJcMlx1MDhlNlx1 MDhlN1w3UFwyXDJcdTA4ZTdcdTAxYjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwOGU4XHUwOGU5XDduXDJcMlx1MDhlOVx1MDhlYVw3Z1wyXDJcdTA4ZWFcdTA4ZWIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3cFwyXDJcdTA4ZWJcdTA4ZWNcN2lcMlwyXHUwOGVjXHUwOGVk XDd2XDJcMlx1MDhlZFx1MDhlZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdqXDJcMlx1MDhl ZVx1MDFiMlwzXDJcMlwyXHUwOGVmXHUwOGYwXDdDXDJcMlx1MDhmMFx1MDhmMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdQXDJcMlx1MDhmMVx1MDhmMlw3RlwyXDJcdTA4ZjJcdTAxYjRcM1wy XDJcMlx1MDhmM1x1MDhmNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdRXDJcMlx1MDhmNFx1 MDhmNVw3VFwyXDJcdTA4ZjVcdTAxYjZcM1wyXDJcMlx1MDhmNlx1MDhmNyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdQXDJcMlx1MDhmN1x1MDhmOFw3UVwyXDJcdTA4ZjhcdTA4ZjlcN1ZcMlwy XHUwOGY5XHUwMWI4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDhmYVx1MDhm Ylw3dVwyXDJcdTA4ZmJcdTA4ZmNcN2dcMlwyXHUwOGZjXHUwOGZkIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN3ZcMlwyXHUwOGZkXHUwMWJhXDNcMlwyXDJcdTA4ZmVcdTA4ZmZcN1x1MDA4MFwy XDJcdTA4ZmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFiY1wzXDJcMlwyXHUwOTAwXHUw OTAxXDdkXDJcMlx1MDkwMVx1MDkwMlw3cVwyXDJcdTA5MDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDkwM1w3cVwyXDJcdTA5MDNcdTA5MDRcN25cMlwyXHUwOTA0XHUwOTA1XDd4XDJcMlx1 MDkwNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTA2XDdjXDJcMlx1MDkwNlx1MDkwN1w3 blwyXDJcdTA5MDdcdTAxYmVcM1wyXDJcMlx1MDkwOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOTA5XDd1XDJcMlx1MDkwOVx1MDkwYVw3dlwyXDJcdTA5MGFcdTA5MGJcN3RcMlwyXHUwOTBi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MGNcN2tcMlwyXHUwOTBjXHUwOTBkXDdwXDJc Mlx1MDkwZFx1MDkwZVw3aVwyXDJcdTA5MGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkw Zlw3eFwyXDJcdTA5MGZcdTA5MTBcN2NcMlwyXHUwOTEwXHUwOTExXDduXDJcMlx1MDkxMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWMwXDNcMlwyXDJcdTA5MTJcdTA5MTNcN3dcMlwyXHUw OTEzXHUwOTE0XDdwXDJcMlx1MDkxNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTE1XDdr XDJcMlx1MDkxNVx1MDkxNlw3cFwyXDJcdTA5MTZcdTA5MTdcN3ZcMlwyXHUwOTE3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5MThcN3hcMlwyXHUwOTE4XHUwOTE5XDdjXDJcMlx1MDkxOVx1 MDkxYVw3blwyXDJcdTA5MWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjMlwzXDJcMlwy XHUwOTFiXHUwOTFjXDd2XDJcMlx1MDkxY1x1MDkxZFw3cVwyXDJcdTA5MWQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDkxZVw3d1wyXDJcdTA5MWVcdTA5MWZcN3JcMlwyXHUwOTFmXHUwOTIw XDdyXDJcMlx1MDkyMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTIxXDdnXDJcMlx1MDky MVx1MDkyMlw3dFwyXDJcdTA5MjJcdTAxYzRcM1wyXDJcMlx1MDkyMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwOTI0XDd2XDJcMlx1MDkyNFx1MDkyNVw3cVwyXDJcdTA5MjVcdTA5MjZcN25c MlwyXHUwOTI2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjdcN3FcMlwyXHUwOTI3XHUw OTI4XDd5XDJcMlx1MDkyOFx1MDkyOVw3Z1wyXDJcdTA5MjkiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDkyYVw3dFwyXDJcdTA5MmFcdTAxYzZcM1wyXDJcMlx1MDkyYlx1MDkyY1w3b1wyXDJc dTA5MmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkyZFw3Y1wyXDJcdTA5MmRcdTA5MmVc N3ZcMlwyXHUwOTJlXHUwOTJmXDdlXDJcMlx1MDkyZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOTMwXDdqXDJcMlx1MDkzMFx1MDFjOFwzXDJcMlwyXHUwOTMxXHUwOTMyXDdvXDJcMlx1MDkz MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTMzXDdjXDJcMlx1MDkzM1x1MDkzNFw3dlwy XDJcdTA5MzRcdTA5MzVcN2VcMlwyXHUwOTM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5 MzZcN2pcMlwyXHUwOTM2XHUwOTM3XDdcNjRcMlwyXHUwOTM3XHUwMWNhXDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDkzOFx1MDkzOVw3ZVwyXDJcdTA5MzlcdTA5M2FcN2NcMlwy XHUwOTNhXHUwOTNiXDd2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOTNiXHUwOTNj XDdnXDJcMlx1MDkzY1x1MDkzZFw3cFwyXDJcdTA5M2RcdTA5M2UiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw3Y1wyXDJcdTA5M2VcdTA5M2ZcN3ZcMlwyXHUwOTNmXHUwOTQwXDdnXDJcMlx1MDk0 MFx1MDFjYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5NDFcdTA5NDJcN3Nc MlwyXHUwOTQyXHUwOTQzXDd3XDJcMlx1MDk0M1x1MDk0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDdnXDJcMlx1MDk0NFx1MDk0NVw3dVwyXDJcdTA5NDVcdTA5NDZcN3ZcMlwyXHUwOTQ2XHUw OTQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2tcMlwyXHUwOTQ3XHUwOTQ4XDdxXDJcMlx1 MDk0OFx1MDk0OVw3cFwyXDJcdTA5NDlcdTA5NGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 dFwyXDJcdTA5NGFcdTA5NGJcN2dcMlwyXHUwOTRiXHUwOTRjXDdoXDJcMlx1MDk0Y1x1MDk0ZCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd4XDJcMlx1MDk0ZFx1MDk0ZVw3Y1wyXDJcdTA5NGVc dTA5NGZcN25cMlwyXHUwOTRmXHUwMWNlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDk1MFx1MDk1MVw3dVwyXDJcdTA5NTFcdTA5NTJcN3ZcMlwyXHUwOTUyXHUwOTUzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN3RcMlwyXHUwOTUzXHUwOTU0XDdrXDJcMlx1MDk1NFx1MDk1 NVw3cFwyXDJcdTA5NTVcdTA5NTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3aVwyXDJcdTA5 NTZcdTA5NTdcN3RcMlwyXHUwOTU3XHUwOTU4XDdnXDJcMlx1MDk1OFx1MDk1OSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdoXDJcMlx1MDk1OVx1MDk1YVw3eFwyXDJcdTA5NWFcdTA5NWJcN2Nc MlwyXHUwOTViXHUwOTVjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN25cMlwyXHUwOTVjXHUw MWQwXDNcMlwyXDJcdTA5NWRcdTA5NWVcN29cMlwyXHUwOTVlXHUwOTVmIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN2NcMlwyXHUwOTVmXHUwOTYwXDdyXDJcMlx1MDk2MFx1MDFkMlwzXDJcMlwy XHUwOTYxXHUwOTYyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN3RcMlwyXHUwOTYyXHUwOTYz XDdnXDJcMlx1MDk2M1x1MDk2NFw3aFwyXDJcdTA5NjRcdTA5NjUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw3dFwyXDJcdTA5NjVcdTA5NjZcN2dcMlwyXHUwOTY2XHUwOTY3XDd1XDJcMlx1MDk2 N1x1MDk2OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdqXDJcMlx1MDk2OFx1MDk2OVw3aVwy XDJcdTA5NjlcdTA5NmFcN3dcMlwyXHUwOTZhXHUwOTZiIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN2tcMlwyXHUwOTZiXHUwOTZjXDdmXDJcMlx1MDk2Y1x1MDFkNFwzXDJcMlwyXHUwOTZkXHUw OTZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1VcMlwyXHUwOTZlXHUwOTZmXDdWXDJcMlx1 MDk2Zlx1MDk3MFw3VFwyXDJcdTA5NzBcdTA5NzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 S1wyXDJcdTA5NzFcdTA5NzJcN1BcMlwyXHUwOTcyXHUwOTczXDdJXDJcMlx1MDk3M1x1MDk3NCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdhXDJcMlx1MDk3NFx1MDk3NVw3VlwyXDJcdTA5NzVc dTA5NzZcN1FcMlwyXHUwOTc2XHUwOTc3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN01cMlwy XHUwOTc3XHUwOTc4XDdHXDJcMlx1MDk3OFx1MDk3OVw3UFwyXDJcdTA5NzlcdTAxZDYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTdhXHUwOTdiXDdRXDJcMlx1MDk3Ylx1MDk3 Y1w3UlwyXDJcdTA5N2NcdTA5N2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3VlwyXDJcdTA5 N2RcdTA5N2VcN0tcMlwyXHUwOTdlXHUwOTdmXDdRXDJcMlx1MDk3Zlx1MDk4MCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdQXDJcMlx1MDk4MFx1MDk4MVw3YVwyXDJcdTA5ODFcdTA5ODJcN0Zc MlwyXHUwOTgyXHUwOTgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0dcMlwyXHUwOTgzXHUw OTg0XDdIXDJcMlx1MDk4NFx1MDk4NVw3Q1wyXDJcdTA5ODVcdTA5ODYiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3V1wyXDJcdTA5ODZcdTA5ODdcN05cMlwyXHUwOTg3XHUwOTg4XDdWXDJcMlx1 MDk4OFx1MDFkOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5ODlcdTA5OGFc N1FcMlwyXHUwOThhXHUwOThiXDdSXDJcMlx1MDk4Ylx1MDk4YyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdWXDJcMlx1MDk4Y1x1MDk4ZFw3S1wyXDJcdTA5OGRcdTA5OGVcN1FcMlwyXHUwOThl XHUwOThmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1BcMlwyXHUwOThmXHUwOTkwXDdhXDJc Mlx1MDk5MFx1MDk5MVw3RlwyXDJcdTA5OTFcdTA5OTIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3R1wyXDJcdTA5OTJcdTA5OTNcN0hcMlwyXHUwOTkzXHUwOTk0XDdDXDJcMlx1MDk5NFx1MDk5 NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk5NVx1MDk5Nlw3TlwyXDJcdTA5 OTZcdTA5OTdcN1ZcMlwyXHUwOTk3XHUwOTk4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2Fc MlwyXHUwOTk4XHUwOTk5XDdPXDJcMlx1MDk5OVx1MDk5YVw3SFwyXDJcdTA5OWFcdTA5OWIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3SVwyXDJcdTA5OWJcdTAxZGFcM1wyXDJcMlx1MDk5Y1x1 MDk5ZFw3UFwyXDJcdTA5OWRcdTA5OWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3V1wyXDJc dTA5OWVcdTA5OWZcN09cMlwyXHUwOTlmXHUwOWEwXDdHXDJcMlx1MDlhMFx1MDlhMSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdUXDJcMlx1MDlhMVx1MDlhMlw3S1wyXDJcdTA5YTJcdTA5YTNc N0VcMlwyXHUwOWEzXHUwOWE0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2FcMlwyXHUwOWE0 XHUwOWE1XDdVXDJcMlx1MDlhNVx1MDlhNlw3S1wyXDJcdTA5YTZcdTA5YTciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3XFxcMlwyXHUwOWE3XHUwOWE4XDdHXDJcMlx1MDlhOFx1MDlhOVw3YVwy XDJcdTA5YTlcdTA5YWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDYzXDJcMlx1MDlhYVx1 MDFkY1wzXDJcMlwyXHUwOWFiXHUwOWFjXDdQXDJcMlx1MDlhYyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOWFkXDdXXDJcMlx1MDlhZFx1MDlhZVw3T1wyXDJcdTA5YWVcdTA5YWZcN0dcMlwy XHUwOWFmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YjBcN1RcMlwyXHUwOWIwXHUwOWIx XDdLXDJcMlx1MDliMVx1MDliMlw3RVwyXDJcdTA5YjIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDliM1w3YVwyXDJcdTA5YjNcdTA5YjRcN1VcMlwyXHUwOWI0XHUwOWI1XDdLXDJcMlx1MDli NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWI2XDdcXFwyXDJcdTA5YjZcdTA5YjdcN0dc MlwyXHUwOWI3XHUwOWI4XDdhXDJcMlx1MDliOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw OWI5XDdcNjRcMlwyXHUwOWI5XHUwMWRlXDNcMlwyXDJcdTA5YmFcdTA5YmJcN1BcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5YmJcdTA5YmNcN1dcMlwyXHUwOWJjXHUwOWJkXDdPXDJc Mlx1MDliZFx1MDliZVw3RyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDliZVx1MDli Zlw3VFwyXDJcdTA5YmZcdTA5YzBcN0tcMlwyXHUwOWMwXHUwOWMxIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN0VcMlwyXHUwOWMxXHUwOWMyXDdhXDJcMlx1MDljMlx1MDljM1w3VVwyXDJcdTA5 YzNcdTA5YzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3S1wyXDJcdTA5YzRcdTA5YzVcN1xc XDJcMlx1MDljNVx1MDljNlw3R1wyXDJcdTA5YzZcdTA5YzciKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3YVwyXDJcdTA5YzdcdTA5YzhcN1w2NlwyXDJcdTA5YzhcdTAxZTBcM1wyXDJcMlx1MDlj OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWNhXDdQXDJcMlx1MDljYVx1MDljYlw3V1wy XDJcdTA5Y2JcdTA5Y2NcN09cMlwyXHUwOWNjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5 Y2RcN0dcMlwyXHUwOWNkXHUwOWNlXDdUXDJcMlx1MDljZVx1MDljZlw3S1wyXDJcdTA5Y2YiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDlkMFw3RVwyXDJcdTA5ZDBcdTA5ZDFcN2FcMlwyXHUw OWQxXHUwOWQyXDdVXDJcMlx1MDlkMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWQzXDdL XDJcMlx1MDlkM1x1MDlkNFw3XFxcMlwyXHUwOWQ0XHUwOWQ1XDdHXDJcMlx1MDlkNSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwOWQ2XDdhXDJcMlx1MDlkNlx1MDlkN1w3OlwyXDJcdTA5ZDdc dTAxZTJcM1wyXDJcMlx1MDlkOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWQ5XDdGXDJc Mlx1MDlkOVx1MDlkYVw3S1wyXDJcdTA5ZGFcdTA5ZGJcN1VcMlwyXHUwOWRiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5ZGNcN1JcMlwyXHUwOWRjXHUwOWRkXDdOXDJcMlx1MDlkZFx1MDlk ZVw3Q1wyXDJcdTA5ZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlkZlw3W1wyXDJcdTA5 ZGZcdTA5ZTBcN2FcMlwyXHUwOWUwXHUwOWUxXDdLXDJcMlx1MDllMSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwOWUyXDdQXDJcMlx1MDllMlx1MDllM1w3VlwyXDJcdTA5ZTNcdTA5ZTRcN2Fc MlwyXHUwOWU0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZTVcN0ZcMlwyXHUwOWU1XHUw OWU2XDdHXDJcMlx1MDllNlx1MDllN1w3RVwyXDJcdTA5ZTciKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDFlNFwzXDJcMlwyXHUwOWU4XHUwOWU5XDdGXDJcMlx1MDllOVx1MDllYVw3S1wyXDJc dTA5ZWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDllYlw3VVwyXDJcdTA5ZWJcdTA5ZWNc N1JcMlwyXHUwOWVjXHUwOWVkXDdOXDJcMlx1MDllZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOWVlXDdDXDJcMlx1MDllZVx1MDllZlw3W1wyXDJcdTA5ZWZcdTA5ZjBcN2FcMlwyXHUwOWYw IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZjFcN1dcMlwyXHUwOWYxXHUwOWYyXDdLXDJc Mlx1MDlmMlx1MDlmM1w3UFwyXDJcdTA5ZjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlm NFw3VlwyXDJcdTA5ZjRcdTA5ZjVcN2FcMlwyXHUwOWY1XHUwOWY2XDdGXDJcMlx1MDlmNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWY3XDdHXDJcMlx1MDlmN1x1MDlmOFw3RVwyXDJcdTA5 ZjhcdTAxZTZcM1wyXDJcMlx1MDlmOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWZhXDdG XDJcMlx1MDlmYVx1MDlmYlw3S1wyXDJcdTA5ZmJcdTA5ZmNcN1VcMlwyXHUwOWZjIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5ZmRcN1JcMlwyXHUwOWZkXHUwOWZlXDdOXDJcMlx1MDlmZVx1 MDlmZlw3Q1wyXDJcdTA5ZmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEwMFw3W1wyXDJc dTBhMDBcdTBhMDFcN2FcMlwyXHUwYTAxXHUwYTAyXDdXXDJcMlx1MGEwMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwYTAzXDdLXDJcMlx1MGEwM1x1MGEwNFw3UFwyXDJcdTBhMDRcdTBhMDVc N1ZcMlwyXHUwYTA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMDZcN2FcMlwyXHUwYTA2 XHUwYTA3XDdKXDJcMlx1MGEwN1x1MGEwOFw3R1wyXDJcdTBhMDgiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGEwOVw3WlwyXDJcdTBhMDlcdTAxZThcM1wyXDJcMlx1MGEwYVx1MGEwYlw3S1wy XDJcdTBhMGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEwY1w3UFwyXDJcdTBhMGNcdTBh MGRcN1VcMlwyXHUwYTBkXHUwYTBlXDdHXDJcMlx1MGEwZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYTBmXDdQXDJcMlx1MGEwZlx1MGExMFw3VVwyXDJcdTBhMTBcdTBhMTFcN0tcMlwyXHUw YTExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTJcN1ZcMlwyXHUwYTEyXHUwYTEzXDdL XDJcMlx1MGExM1x1MGExNFw3WFwyXDJcdTBhMTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MGExNVw3R1wyXDJcdTBhMTVcdTAxZWFcM1wyXDJcMlx1MGExNlx1MGExN1w3VVwyXDJcdTBhMTci KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGExOFw3R1wyXDJcdTBhMThcdTBhMTlcN1BcMlwy XHUwYTE5XHUwYTFhXDdVXDJcMlx1MGExYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTFi XDdLXDJcMlx1MGExYlx1MGExY1w3VlwyXDJcdTBhMWNcdTBhMWRcN0tcMlwyXHUwYTFkIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTBhMWVcN1hcMlwyXHUwYTFlXHUwYTFmXDdHXDJcMlx1MGEx Zlx1MDFlY1wzXDJcMlwyXHUwYTIwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMjFcN05c MlwyXHUwYTIxXHUwYTIyXDdDXDJcMlx1MGEyMlx1MGEyM1w3VVwyXDJcdTBhMjMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MGEyNFw3VlwyXDJcdTBhMjRcdTBhMjVcN2FcMlwyXHUwYTI1XHUw YTI2XDdQXDJcMlx1MGEyNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTI3XDdRXDJcMlx1 MGEyN1x1MGEyOFw3UFwyXDJcdTBhMjhcdTBhMjlcN2FcMlwyXHUwYTI5IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTBhMmFcN09cMlwyXHUwYTJhXHUwYTJiXDdDXDJcMlx1MGEyYlx1MGEyY1w3 VlwyXDJcdTBhMmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEyZFw3RVwyXDJcdTBhMmRc dTBhMmVcN0pcMlwyXHUwYTJlXHUwMWVlXDNcMlwyXDJcdTBhMmYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGEzMFw3SFwyXDJcdTBhMzBcdTBhMzFcN0tcMlwyXHUwYTMxXHUwYTMyXDdUXDJc Mlx1MGEzMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTMzXDdVXDJcMlx1MGEzM1x1MGEz NFw3VlwyXDJcdTBhMzRcdTBhMzVcN2FcMlwyXHUwYTM1IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTBhMzZcN1BcMlwyXHUwYTM2XHUwYTM3XDdRXDJcMlx1MGEzN1x1MGEzOFw3UFwyXDJcdTBh MzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEzOVw3YVwyXDJcdTBhMzlcdTBhM2FcN09c MlwyXHUwYTNhXHUwYTNiXDdDXDJcMlx1MGEzYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YTNjXDdWXDJcMlx1MGEzY1x1MGEzZFw3RVwyXDJcdTBhM2RcdTBhM2VcN0pcMlwyXHUwYTNlIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZjBcM1wyXDJcMlx1MGEzZlx1MGE0MFw3XDYyXDJc Mlx1MGE0MFx1MGE0MVw3elwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0MVx1MGE0 M1wzXDJcMlwyXHUwYTQyXHUwYTQ0XHRcMlwyXDJcdTBhNDNcdTBhNDJcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTQ0XHUwYTQ1XDNcMlwyXDJcdTBhNDVcdTBhNDNcM1wyXDJc Mlx1MGE0NVx1MGE0NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhNDZcdTBh NGRcM1wyXDJcMlx1MGE0N1x1MGE0OVx0XDNcMlwyXHUwYTQ4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBhNDdcM1wyXDJcMlx1MGE0OVx1MGE0YVwzXDJcMlwyXHUwYTRhXHUwYTQ4XDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0YVx1MGE0YlwzXDJcMlwyXHUwYTRiXHUw YTRkXDNcMlwyXDJcdTBhNGNcdTBhM2ZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwy XHUwYTRjXHUwYTQ4XDNcMlwyXDJcdTBhNGRcdTAxZjJcM1wyXDJcMlx1MGE0ZVx1MGE1MiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHRcNFwyXDJcdTBhNGZcdTBhNTFcdFw1XDJcMlx1MGE1MFx1 MGE0ZlwzXDJcMlwyXHUwYTUxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNTRcM1wyXDJc Mlx1MGE1Mlx1MGE1MFwzXDJcMlwyXHUwYTUyXHUwYTUzXDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MGE1M1x1MDFmNFwzXDJcMlwyXHUwYTU0XHUwYTUyXDNcMlwyXDJcdTBhNTVc dTBhNTdcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiJVwyXDJcdTBhNTZcdTBhNThcNVx1MDFm Ylx1MDBmZVwyXHUwYTU3XHUwYTU2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MGE1N1x1MGE1OFwzXDJcMlwyXHUwYTU4XHUwYTU5XDNcMlwyXDJcdTBhNTlcdTBhNWFcNyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiZlwyXDJcdTBhNWFcdTBhNWJcN2dcMlwyXHUwYTViXHUwYTVj XDdoXDJcMlx1MGE1Y1x1MGE1ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdrXDJcMlx1MGE1 ZFx1MGE1ZVw3cFwyXDJcdTBhNWVcdTBhNWZcN2dcMlwyXHUwYTVmXHUwYTYzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE2MFx1MGE2MlxuXDZcMlwyXHUwYTYxXHUwYTYwXDNc MlwyXDJcdTBhNjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE2NVwzXDJcMlwyXHUwYTYz XHUwYTYxXDNcMlwyXDJcdTBhNjNcdTBhNjRcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYTY0XHUwYTY2XDNcMlwyXDJcdTBhNjVcdTBhNjNcM1wyXDJcMlx1MGE2Nlx1MGE2N1xi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmJcMlwyXHUwYTY3XHUwMWY2XDNcMlwyXDJc dTBhNjhcdTBhNmFcNyVcMlwyXHUwYTY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNmJc NVx1MDFmYlx1MDBmZVwyXHUwYTZhXHUwYTY5XDNcMlwyXDJcdTBhNmFcdTBhNmIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTZiXHUwYTZjXDNcMlwyXDJcdTBhNmNcdTBhNmRc N25cMlwyXHUwYTZkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNmVcN2tcMlwyXHUwYTZl XHUwYTZmXDdwXDJcMlx1MGE2Zlx1MGE3MFw3Z1wyXDJcdTBhNzAiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGE3NFwzXDJcMlwyXHUwYTcxXHUwYTczXG5cNlwyXDJcdTBhNzJcdTBhNzFcM1wy XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTczXHUwYTc2XDNcMlwyXDJcdTBhNzRc dTBhNzJcM1wyXDJcMlx1MGE3NFx1MGE3NVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XDJcdTBhNzVcdTBhNzdcM1wyXDJcMlx1MGE3Nlx1MGE3NFwzXDJcMlwyXHUwYTc3XHUwYTc4IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcYlx1MDBmY1wyXDJcdTBhNzhcdTAxZjhcM1wyXDJcMlx1 MGE3OVx1MGE3Ylw3JVwyXDJcdTBhN2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE3Y1w1 XHUwMWZiXHUwMGZlXDJcdTBhN2JcdTBhN2FcM1wyXDJcMlx1MGE3Ylx1MGE3YyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhN2NcdTBhN2RcM1wyXDJcMlx1MGE3ZFx1MGE3ZVw3 a1wyXDJcdTBhN2UiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE3Zlw3cFwyXDJcdTBhN2Zc dTBhODBcN2VcMlwyXHUwYTgwXHUwYTgxXDduXDJcMlx1MGE4MSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwYTgyXDd3XDJcMlx1MGE4Mlx1MGE4M1w3ZlwyXDJcdTBhODNcdTBhODRcN2dcMlwy XHUwYTg0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODhcM1wyXDJcMlx1MGE4NVx1MGE4 N1xuXDZcMlwyXHUwYTg2XHUwYTg1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MGE4N1x1MGE4YVwzXDJcMlwyXHUwYTg4XHUwYTg2XDNcMlwyXDJcdTBhODhcdTBhODlcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTg5XHUwYThiXDNcMlwyXDJcdTBhOGFcdTBh ODhcM1wyXDJcMlx1MGE4Ylx1MGE4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXGJcdTAwZmRc MlwyXHUwYThjXHUwMWZhXDNcMlwyXDJcdTBhOGRcdTBhOGZcdFw3XDJcMlx1MGE4ZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwYThkXDNcMlwyXDJcdTBhOGZcdTBhOTBcM1wyXDJcMlx1MGE5 MFx1MGE4ZVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhOTBcdTBhOTFcM1wy XDJcMlx1MGE5MVx1MGE5MlwzXDJcMlwyXHUwYTkyXHUwYTkzXGIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBmZVwyXDJcdTBhOTNcdTAxZmNcM1wyXDJcMlx1MGE5NFx1MGE5Nlw3XDE3XDJc Mlx1MGE5NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTk3XDdcZlwyXDJcdTBhOTZcdTBh OTVcM1wyXDJcMlx1MGE5Nlx1MGE5N1wzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBhOTdcdTBhOWFcM1wyXDJcMlx1MGE5OFx1MGE5YVw3XGZcMlwyXHUwYTk5XHUwYTk0XDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGE5OVx1MGE5OFwzXDJcMlwyXHUwYTlhXHUw YTliXDNcMlwyXDJcdTBhOWJcdTBhOWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxiXHUwMGZm XDJcMlx1MGE5Y1x1MDFmZVwzXDJcMlwyXHUwYTlkXHUwYTllXDdcNjFcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTBhOWVcdTBhOWZcN1w2MVwyXDJcdTBhOWZcdTBhYTNcM1wyXDJcMlx1 MGFhMFx1MGFhMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cYlwyXDJcdTBhYTFcdTBhYTBc M1wyXDJcMlx1MGFhMlx1MGFhNVwzXDJcMlwyXHUwYWEzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTBhYTFcM1wyXDJcMlx1MGFhM1x1MGFhNFwzXDJcMlwyXHUwYWE0XHUwYWE2XDNcMlwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFhNVx1MGFhM1wzXDJcMlwyXHUwYWE2XHUwYWE3 XGJcdTAxMDBcMlwyXHUwYWE3XHUwMjAwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MGFhOFx1MGFhOVw3Z1wyXDJcdTBhYTlcdTBhYWFcN3pcMlwyXHUwYWFhXHUwYWFiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN3ZcMlwyXHUwYWFiXHUwYWFjXDdnXDJcMlx1MGFhY1x1MGFh ZFw3dFwyXDJcdTBhYWRcdTBhYWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3cFwyXDJcdTBh YWVcdTBhYjJcM1wyXDJcMlx1MGFhZlx1MGFiMVxuXDZcMlwyXHUwYWIwIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTBhYWZcM1wyXDJcMlx1MGFiMVx1MGFiNFwzXDJcMlwyXHUwYWIyXHUwYWIw XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFiMlx1MGFiM1wzXDJcMlwyXHUw YWIzXHUwYWI1XDNcMlwyXDJcdTBhYjRcdTBhYjJcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlwyXHUwYWI1XHUwYWI2XGJcdTAxMDFcMlwyXHUwYWI2XHUwMjAyXDNcMlwyXDJcMjIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYTQ1XHUwYTRhXHUwYTRjXHUwYTUyXHUwYTU3XHUw YTYzXHUwYTZhXHUwYTc0XHUwYTdiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODhcdTBh OTBcdTBhOTZcdTBhOTlcdTBhYTNcdTBhYjJcM1xiXDJcMiIpDQoNCisgICAgICAgIHJldHVybiBi dWYuZ2V0dmFsdWUoKQ0KDQorDQoNCisNCg0KK2NsYXNzIFZmclN5bnRheExleGVyKExleGVyKToN Cg0KKw0KDQorICAgIGF0biA9IEFUTkRlc2VyaWFsaXplcigpLmRlc2VyaWFsaXplKHNlcmlhbGl6 ZWRBVE4oKSkNCg0KKw0KDQorICAgIGRlY2lzaW9uc1RvREZBID0gWyBERkEoZHMsIGkpIGZvciBp LCBkcyBpbiBlbnVtZXJhdGUoYXRuLmRlY2lzaW9uVG9TdGF0ZSkgXQ0KDQorDQoNCisgICAgVF9f MCA9IDENCg0KKyAgICBUX18xID0gMg0KDQorICAgIFRfXzIgPSAzDQoNCisgICAgVF9fMyA9IDQN Cg0KKyAgICBUX180ID0gNQ0KDQorICAgIFRfXzUgPSA2DQoNCisgICAgVF9fNiA9IDcNCg0KKyAg ICBUX183ID0gOA0KDQorICAgIFRfXzggPSA5DQoNCisgICAgVF9fOSA9IDEwDQoNCisgICAgVF9f MTAgPSAxMQ0KDQorICAgIFRfXzExID0gMTINCg0KKyAgICBUX18xMiA9IDEzDQoNCisgICAgVF9f MTMgPSAxNA0KDQorICAgIFRfXzE0ID0gMTUNCg0KKyAgICBUX18xNSA9IDE2DQoNCisgICAgRGVm aW5lID0gMTcNCg0KKyAgICBJbmNsdWRlID0gMTgNCg0KKyAgICBGb3JtUGtnVHlwZSA9IDE5DQoN CisgICAgT3BlbkJyYWNlID0gMjANCg0KKyAgICBDbG9zZUJyYWNlID0gMjENCg0KKyAgICBPcGVu UGFyZW4gPSAyMg0KDQorICAgIENsb3NlUGFyZW4gPSAyMw0KDQorICAgIE9wZW5CcmFja2V0ID0g MjQNCg0KKyAgICBDbG9zZUJyYWNrZXQgPSAyNQ0KDQorICAgIERvdCA9IDI2DQoNCisgICAgTmVn YXRpdmUgPSAyNw0KDQorICAgIENvbG9uID0gMjgNCg0KKyAgICBTbGFzaCA9IDI5DQoNCisgICAg U2VtaWNvbG9uID0gMzANCg0KKyAgICBDb21tYSA9IDMxDQoNCisgICAgRXF1YWwgPSAzMg0KDQor ICAgIE5vdEVxdWFsID0gMzMNCg0KKyAgICBMZXNzRXF1YWwgPSAzNA0KDQorICAgIExlc3MgPSAz NQ0KDQorICAgIEdyZWF0ZXJFcXVhbCA9IDM2DQoNCisgICAgR3JlYXRlciA9IDM3DQoNCisgICAg Qml0V2lzZU9yID0gMzgNCg0KKyAgICBCaXRXaXNlQW5kID0gMzkNCg0KKyAgICBEZXZpY2VQYXRo ID0gNDANCg0KKyAgICBGb3JtU2V0ID0gNDENCg0KKyAgICBGb3JtU2V0SWQgPSA0Mg0KDQorICAg IEVuZEZvcm1TZXQgPSA0Mw0KDQorICAgIFRpdGxlID0gNDQNCg0KKyAgICBGb3JtSWQgPSA0NQ0K DQorICAgIE9uZU9mID0gNDYNCg0KKyAgICBFbmRPbmVPZiA9IDQ3DQoNCisgICAgUHJvbXB0ID0g NDgNCg0KKyAgICBPcmRlcmVkTGlzdCA9IDQ5DQoNCisgICAgTWF4Q29udGFpbmVycyA9IDUwDQoN CisgICAgRW5kTGlzdCA9IDUxDQoNCisgICAgRW5kRm9ybSA9IDUyDQoNCisgICAgRm9ybSA9IDUz DQoNCisgICAgRm9ybU1hcCA9IDU0DQoNCisgICAgTWFwVGl0bGUgPSA1NQ0KDQorICAgIE1hcEd1 aWQgPSA1Ng0KDQorICAgIFN1YnRpdGxlID0gNTcNCg0KKyAgICBFbmRTdWJ0aXRsZSA9IDU4DQoN CisgICAgSGVscCA9IDU5DQoNCisgICAgVGV4dCA9IDYwDQoNCisgICAgT3B0aW9uID0gNjENCg0K KyAgICBGTEFHUyA9IDYyDQoNCisgICAgRGF0ZSA9IDYzDQoNCisgICAgRW5kRGF0ZSA9IDY0DQoN CisgICAgWWVhciA9IDY1DQoNCisgICAgTW9udGggPSA2Ng0KDQorICAgIERheSA9IDY3DQoNCisg ICAgVGltZSA9IDY4DQoNCisgICAgRW5kVGltZSA9IDY5DQoNCisgICAgSG91ciA9IDcwDQoNCisg ICAgTWludXRlID0gNzENCg0KKyAgICBTZWNvbmQgPSA3Mg0KDQorICAgIEdyYXlPdXRJZiA9IDcz DQoNCisgICAgTGFiZWwgPSA3NA0KDQorICAgIFRpbWVvdXQgPSA3NQ0KDQorICAgIEludmVudG9y eSA9IDc2DQoNCisgICAgTm9uTnZEYXRhTWFwID0gNzcNCg0KKyAgICBTdHJ1Y3QgPSA3OA0KDQor ICAgIFVuaW9uID0gNzkNCg0KKyAgICBCb29sZWFuID0gODANCg0KKyAgICBVaW50NjQgPSA4MQ0K DQorICAgIFVpbnQzMiA9IDgyDQoNCisgICAgVWludDE2ID0gODMNCg0KKyAgICBVaW50OCA9IDg0 DQoNCisgICAgRUZJX1NUUklOR19JRCA9IDg1DQoNCisgICAgRUZJX0hJSV9EQVRFID0gODYNCg0K KyAgICBFRklfSElJX1RJTUUgPSA4Nw0KDQorICAgIEVGSV9ISUlfUkVGID0gODgNCg0KKyAgICBV dWlkID0gODkNCg0KKyAgICBDaGVja0JveCA9IDkwDQoNCisgICAgRW5kQ2hlY2tCb3ggPSA5MQ0K DQorICAgIE51bWVyaWMgPSA5Mg0KDQorICAgIEVuZE51bWVyaWMgPSA5Mw0KDQorICAgIE1pbmlt dW0gPSA5NA0KDQorICAgIE1heGltdW0gPSA5NQ0KDQorICAgIFN0ZXAgPSA5Ng0KDQorICAgIERl ZmF1bHQgPSA5Nw0KDQorICAgIFBhc3N3b3JkID0gOTgNCg0KKyAgICBFbmRQYXNzd29yZCA9IDk5 DQoNCisgICAgU3RyaW5nID0gMTAwDQoNCisgICAgRW5kU3RyaW5nID0gMTAxDQoNCisgICAgTWlu U2l6ZSA9IDEwMg0KDQorICAgIE1heFNpemUgPSAxMDMNCg0KKyAgICBFbmNvZGluZyA9IDEwNA0K DQorICAgIFN1cHByZXNzSWYgPSAxMDUNCg0KKyAgICBEaXNhYmxlSWYgPSAxMDYNCg0KKyAgICBI aWRkZW4gPSAxMDcNCg0KKyAgICBHb3RvID0gMTA4DQoNCisgICAgRm9ybVNldEd1aWQgPSAxMDkN Cg0KKyAgICBJbmNvbnNpc3RlbnRJZiA9IDExMA0KDQorICAgIFdhcm5pbmdJZiA9IDExMQ0KDQor ICAgIE5vU3VibWl0SWYgPSAxMTINCg0KKyAgICBFbmRJZiA9IDExMw0KDQorICAgIEtleSA9IDEx NA0KDQorICAgIERlZmF1bHRGbGFnID0gMTE1DQoNCisgICAgTWFudWZhY3R1cmluZ0ZsYWcgPSAx MTYNCg0KKyAgICBDaGVja0JveERlZmF1bHRGbGFnID0gMTE3DQoNCisgICAgQ2hlY2tCb3hEZWZh dWx0TWZnRmxhZyA9IDExOA0KDQorICAgIEludGVyYWN0aXZlRmxhZyA9IDExOQ0KDQorICAgIE5W QWNjZXNzRmxhZyA9IDEyMA0KDQorICAgIFJlc2V0UmVxdWlyZWRGbGFnID0gMTIxDQoNCisgICAg UmVjb25uZWN0UmVxdWlyZWRGbGFnID0gMTIyDQoNCisgICAgTGF0ZUNoZWNrRmxhZyA9IDEyMw0K DQorICAgIFJlYWRPbmx5RmxhZyA9IDEyNA0KDQorICAgIE9wdGlvbk9ubHlGbGFnID0gMTI1DQoN CisgICAgUmVzdFN0eWxlRmxhZyA9IDEyNg0KDQorICAgIENsYXNzID0gMTI3DQoNCisgICAgU3Vi Y2xhc3MgPSAxMjgNCg0KKyAgICBDbGFzc0d1aWQgPSAxMjkNCg0KKyAgICBUeXBlRGVmID0gMTMw DQoNCisgICAgUmVzdG9yZSA9IDEzMQ0KDQorICAgIFNhdmUgPSAxMzINCg0KKyAgICBEZWZhdWx0 cyA9IDEzMw0KDQorICAgIEJhbm5lciA9IDEzNA0KDQorICAgIEFsaWduID0gMTM1DQoNCisgICAg TGVmdCA9IDEzNg0KDQorICAgIFJpZ2h0ID0gMTM3DQoNCisgICAgQ2VudGVyID0gMTM4DQoNCisg ICAgTGluZSA9IDEzOQ0KDQorICAgIE5hbWUgPSAxNDANCg0KKyAgICBWYXJJZCA9IDE0MQ0KDQor ICAgIFF1ZXN0aW9uID0gMTQyDQoNCisgICAgUXVlc3Rpb25JZCA9IDE0Mw0KDQorICAgIEltYWdl ID0gMTQ0DQoNCisgICAgTG9ja2VkID0gMTQ1DQoNCisgICAgUnVsZSA9IDE0Ng0KDQorICAgIEVu ZFJ1bGUgPSAxNDcNCg0KKyAgICBWYWx1ZSA9IDE0OA0KDQorICAgIFJlYWQgPSAxNDkNCg0KKyAg ICBXcml0ZSA9IDE1MA0KDQorICAgIFJlc2V0QnV0dG9uID0gMTUxDQoNCisgICAgRW5kUmVzZXRC dXR0b24gPSAxNTINCg0KKyAgICBEZWZhdWx0U3RvcmUgPSAxNTMNCg0KKyAgICBBdHRyaWJ1dGUg PSAxNTQNCg0KKyAgICBWYXJzdG9yZSA9IDE1NQ0KDQorICAgIEVmaXZhcnN0b3JlID0gMTU2DQoN CisgICAgVmFyU2l6ZSA9IDE1Nw0KDQorICAgIE5hbWVWYWx1ZVZhclN0b3JlID0gMTU4DQoNCisg ICAgQWN0aW9uID0gMTU5DQoNCisgICAgQ29uZmlnID0gMTYwDQoNCisgICAgRW5kQWN0aW9uID0g MTYxDQoNCisgICAgUmVmcmVzaCA9IDE2Mg0KDQorICAgIEludGVydmFsID0gMTYzDQoNCisgICAg VmFyc3RvcmVEZXZpY2UgPSAxNjQNCg0KKyAgICBHdWlkT3AgPSAxNjUNCg0KKyAgICBFbmRHdWlk T3AgPSAxNjYNCg0KKyAgICBEYXRhVHlwZSA9IDE2Nw0KDQorICAgIERhdGEgPSAxNjgNCg0KKyAg ICBNb2RhbCA9IDE2OQ0KDQorICAgIENsYXNzTm9uRGV2aWNlID0gMTcwDQoNCisgICAgQ2xhc3NE aXNrRGV2aWNlID0gMTcxDQoNCisgICAgQ2xhc3NWaWRlb0RldmljZSA9IDE3Mg0KDQorICAgIENs YXNzTmV0d29ya0RldmljZSA9IDE3Mw0KDQorICAgIENsYXNzSW5wdXREZXZpY2UgPSAxNzQNCg0K KyAgICBDbGFzc09uQm9hcmREZXZpY2UgPSAxNzUNCg0KKyAgICBDbGFzc090aGVyRGV2aWNlID0g MTc2DQoNCisgICAgU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uID0gMTc3DQoNCisgICAgU3ViY2xh c3NHZW5lcmFsQXBwbGljYXRpb24gPSAxNzgNCg0KKyAgICBTdWJjbGFzc0Zyb250UGFnZSA9IDE3 OQ0KDQorICAgIFN1YmNsYXNzU2luZ2xlVXNlID0gMTgwDQoNCisgICAgWWVhclN1cHBwcmVzc0Zs YWcgPSAxODENCg0KKyAgICBNb250aFN1cHByZXNzRmxhZyA9IDE4Mg0KDQorICAgIERheVN1cHBy ZXNzRmxhZyA9IDE4Mw0KDQorICAgIEhvdXJTdXBwcHJlc3NGbGFnID0gMTg0DQoNCisgICAgTWlu dXRlU3VwcHJlc3NGbGFnID0gMTg1DQoNCisgICAgU2Vjb25kU3VwcHJlc3NGbGFnID0gMTg2DQoN CisgICAgU3RvcmFnZU5vcm1hbEZsYWcgPSAxODcNCg0KKyAgICBTdG9yYWdlVGltZUZsYWcgPSAx ODgNCg0KKyAgICBTdG9yYWdlV2FrZVVwRmxhZyA9IDE4OQ0KDQorICAgIFVuaVF1ZUZsYWcgPSAx OTANCg0KKyAgICBOb0VtcHR5RmxhZyA9IDE5MQ0KDQorICAgIENvbmQgPSAxOTINCg0KKyAgICBG aW5kID0gMTkzDQoNCisgICAgTWlkID0gMTk0DQoNCisgICAgVG9rID0gMTk1DQoNCisgICAgU3Bh biA9IDE5Ng0KDQorICAgIER1cCA9IDE5Nw0KDQorICAgIFZhckVxVmFsID0gMTk4DQoNCisgICAg VmFyID0gMTk5DQoNCisgICAgSWRFcVZhbCA9IDIwMA0KDQorICAgIElkRXFJZCA9IDIwMQ0KDQor ICAgIElkRXFWYWxMaXN0ID0gMjAyDQoNCisgICAgUXVlc3Rpb25SZWYgPSAyMDMNCg0KKyAgICBS dWxlUmVmID0gMjA0DQoNCisgICAgU3RyaW5nUmVmID0gMjA1DQoNCisgICAgUHVzaFRoaXMgPSAy MDYNCg0KKyAgICBTZWN1cml0eSA9IDIwNw0KDQorICAgIEdldCA9IDIwOA0KDQorICAgIFRydWVT eW1ib2wgPSAyMDkNCg0KKyAgICBGYWxzZVN5bWJvbCA9IDIxMA0KDQorICAgIE9uZSA9IDIxMQ0K DQorICAgIE9uZXMgPSAyMTINCg0KKyAgICBaZXJvID0gMjEzDQoNCisgICAgVW5kZWZpbmVkID0g MjE0DQoNCisgICAgVmVyc2lvbiA9IDIxNQ0KDQorICAgIExlbmd0aCA9IDIxNg0KDQorICAgIEFO RCA9IDIxNw0KDQorICAgIE9SID0gMjE4DQoNCisgICAgTk9UID0gMjE5DQoNCisgICAgU2V0ID0g MjIwDQoNCisgICAgQml0V2lzZU5vdCA9IDIyMQ0KDQorICAgIEJvb2xWYWwgPSAyMjINCg0KKyAg ICBTdHJpbmdWYWwgPSAyMjMNCg0KKyAgICBVbkludFZhbCA9IDIyNA0KDQorICAgIFRvVXBwZXIg PSAyMjUNCg0KKyAgICBUb0xvd2VyID0gMjI2DQoNCisgICAgTWF0Y2ggPSAyMjcNCg0KKyAgICBN YXRjaDIgPSAyMjgNCg0KKyAgICBDYXRlbmF0ZSA9IDIyOQ0KDQorICAgIFF1ZXN0aW9uUmVmVmFs ID0gMjMwDQoNCisgICAgU3RyaW5nUmVmVmFsID0gMjMxDQoNCisgICAgTWFwID0gMjMyDQoNCisg ICAgUmVmcmVzaEd1aWQgPSAyMzMNCg0KKyAgICBTdHJpbmdUb2tlbiA9IDIzNA0KDQorICAgIE9w dGlvbkRlZmF1bHQgPSAyMzUNCg0KKyAgICBPcHRpb25EZWZhdWx0TWZnID0gMjM2DQoNCisgICAg TnVtZXJpY1NpemVPbmUgPSAyMzcNCg0KKyAgICBOdW1lcmljU2l6ZVR3byA9IDIzOA0KDQorICAg IE51bWVyaWNTaXplRm91ciA9IDIzOQ0KDQorICAgIE51bWVyaWNTaXplRWlnaHQgPSAyNDANCg0K KyAgICBEaXNQbGF5SW50RGVjID0gMjQxDQoNCisgICAgRGlzUGxheVVJbnREZWMgPSAyNDINCg0K KyAgICBEaXNQbGF5VUludEhleCA9IDI0Mw0KDQorICAgIEluc2Vuc2l0aXZlID0gMjQ0DQoNCisg ICAgU2Vuc2l0aXZlID0gMjQ1DQoNCisgICAgTGFzdE5vbk1hdGNoID0gMjQ2DQoNCisgICAgRmly c3ROb25NYXRjaCA9IDI0Nw0KDQorICAgIE51bWJlciA9IDI0OA0KDQorICAgIFN0cmluZ0lkZW50 aWZpZXIgPSAyNDkNCg0KKyAgICBDb21wbGV4RGVmaW5lID0gMjUwDQoNCisgICAgTGluZURlZmlu aXRpb24gPSAyNTENCg0KKyAgICBJbmNsdWRlRGVmaW5pdGlvbiA9IDI1Mg0KDQorICAgIFdoaXRl c3BhY2UgPSAyNTMNCg0KKyAgICBOZXdsaW5lID0gMjU0DQoNCisgICAgTGluZUNvbW1lbnQgPSAy NTUNCg0KKyAgICBFeHRlcm4gPSAyNTYNCg0KKw0KDQorICAgIGNoYW5uZWxOYW1lcyA9IFsgdSJE RUZBVUxUX1RPS0VOX0NIQU5ORUwiLCB1IkhJRERFTiIgXQ0KDQorDQoNCisgICAgbW9kZU5hbWVz ID0gWyAiREVGQVVMVF9NT0RFIiBdDQoNCisNCg0KKyAgICBsaXRlcmFsTmFtZXMgPSBbICI8SU5W QUxJRD4iLA0KDQorICAgICAgICAgICAgIidzaG93JyIsICIncHVzaCciLCAiJ3BvcCciLCAiJyNw cmFnbWEnIiwgIidwYWNrJyIsICInPSciLCAiJ0lNQUdFX1RPS0VOJyIsDQoNCisgICAgICAgICAg ICAiJ0hPUklaT05UQUwnIiwgIidNVUxUSV9MSU5FJyIsICInPDwnIiwgIic+PiciLCAiJysnIiwg IicqJyIsDQoNCisgICAgICAgICAgICAiJyUnIiwgIidmb3JtYXQnIiwgIic/JyIsICInI2RlZmlu ZSciLCAiJyNpbmNsdWRlJyIsICInZm9ybXBrZ3R5cGUnIiwNCg0KKyAgICAgICAgICAgICIneyci LCAiJ30nIiwgIicoJyIsICInKSciLCAiJ1snIiwgIiddJyIsICInLiciLCAiJy0nIiwgIic6JyIs DQoNCisgICAgICAgICAgICAiJy8nIiwgIic7JyIsICInLCciLCAiJz09JyIsICInIT0nIiwgIic8 PSciLCAiJzwnIiwgIic+PSciLA0KDQorICAgICAgICAgICAgIic+JyIsICInfCciLCAiJyYnIiwg IidkZXZpY2VwYXRoJyIsICInZm9ybXNldCciLCAiJ2Zvcm1zZXRpZCciLA0KDQorICAgICAgICAg ICAgIidlbmRmb3Jtc2V0JyIsICIndGl0bGUnIiwgIidmb3JtaWQnIiwgIidvbmVvZiciLCAiJ2Vu ZG9uZW9mJyIsDQoNCisgICAgICAgICAgICAiJ3Byb21wdCciLCAiJ29yZGVyZWRsaXN0JyIsICIn bWF4Y29udGFpbmVycyciLCAiJ2VuZGxpc3QnIiwNCg0KKyAgICAgICAgICAgICInZW5kZm9ybSci LCAiJ2Zvcm0nIiwgIidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIsDQoNCisg ICAgICAgICAgICAiJ3N1YnRpdGxlJyIsICInZW5kc3VidGl0bGUnIiwgIidoZWxwJyIsICIndGV4 dCciLCAiJ29wdGlvbiciLA0KDQorICAgICAgICAgICAgIidmbGFncyciLCAiJ2RhdGUnIiwgIidl bmRkYXRlJyIsICIneWVhciciLCAiJ21vbnRoJyIsICInZGF5JyIsDQoNCisgICAgICAgICAgICAi J3RpbWUnIiwgIidlbmR0aW1lJyIsICInaG91ciciLCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLCAi J2dyYXlvdXRpZiciLA0KDQorICAgICAgICAgICAgIidsYWJlbCciLCAiJ3RpbWVvdXQnIiwgIidp bnZlbnRvcnknIiwgIidfTk9OX05WX0RBVEFfTUFQJyIsDQoNCisgICAgICAgICAgICAiJ3N0cnVj dCciLCAiJ3VuaW9uJyIsICInQk9PTEVBTiciLCAiJ1VJTlQ2NCciLCAiJ1VJTlQzMiciLA0KDQor ICAgICAgICAgICAgIidVSU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdfSUQnIiwgIidF RklfSElJX0RBVEUnIiwNCg0KKyAgICAgICAgICAgICInRUZJX0hJSV9USU1FJyIsICInRUZJX0hJ SV9SRUYnIiwgIidndWlkJyIsICInY2hlY2tib3gnIiwgIidlbmRjaGVja2JveCciLA0KDQorICAg ICAgICAgICAgIidudW1lcmljJyIsICInZW5kbnVtZXJpYyciLCAiJ21pbmltdW0nIiwgIidtYXhp bXVtJyIsICInc3RlcCciLA0KDQorICAgICAgICAgICAgIidkZWZhdWx0JyIsICIncGFzc3dvcmQn IiwgIidlbmRwYXNzd29yZCciLCAiJ3N0cmluZyciLCAiJ2VuZHN0cmluZyciLA0KDQorICAgICAg ICAgICAgIidtaW5zaXplJyIsICInbWF4c2l6ZSciLCAiJ2VuY29kaW5nJyIsICInc3VwcHJlc3Np ZiciLCAiJ2Rpc2FibGVpZiciLA0KDQorICAgICAgICAgICAgIidoaWRkZW4nIiwgIidnb3RvJyIs ICInZm9ybXNldGd1aWQnIiwgIidpbmNvbnNpc3RlbnRpZiciLCAiJ3dhcm5pbmdpZiciLA0KDQor ICAgICAgICAgICAgIidub3N1Ym1pdGlmJyIsICInZW5kaWYnIiwgIidrZXknIiwgIidERUZBVUxU JyIsICInTUFOVUZBQ1RVUklORyciLA0KDQorICAgICAgICAgICAgIidDSEVDS0JPWF9ERUZBVUxU JyIsICInQ0hFQ0tCT1hfREVGQVVMVF9NRkcnIiwgIidJTlRFUkFDVElWRSciLA0KDQorICAgICAg ICAgICAgIidOVl9BQ0NFU1MnIiwgIidSRVNFVF9SRVFVSVJFRCciLCAiJ1JFQ09OTkVDVF9SRVFV SVJFRCciLCAiJ0xBVEVfQ0hFQ0snIiwNCg0KKyAgICAgICAgICAgICInUkVBRF9PTkxZJyIsICIn T1BUSU9OU19PTkxZJyIsICInUkVTVF9TVFlMRSciLCAiJ2NsYXNzJyIsDQoNCisgICAgICAgICAg ICAiJ3N1YmNsYXNzJyIsICInY2xhc3NndWlkJyIsICIndHlwZWRlZiciLCAiJ3Jlc3RvcmUnIiwg IidzYXZlJyIsDQoNCisgICAgICAgICAgICAiJ2RlZmF1bHRzJyIsICInYmFubmVyJyIsICInYWxp Z24nIiwgIidsZWZ0JyIsICIncmlnaHQnIiwgIidjZW50ZXInIiwNCg0KKyAgICAgICAgICAgICIn bGluZSciLCAiJ25hbWUnIiwgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25pZCci LA0KDQorICAgICAgICAgICAgIidpbWFnZSciLCAiJ2xvY2tlZCciLCAiJ3J1bGUnIiwgIidlbmRy dWxlJyIsICIndmFsdWUnIiwgIidyZWFkJyIsDQoNCisgICAgICAgICAgICAiJ3dyaXRlJyIsICIn cmVzZXRidXR0b24nIiwgIidlbmRyZXNldGJ1dHRvbiciLCAiJ2RlZmF1bHRzdG9yZSciLA0KDQor ICAgICAgICAgICAgIidhdHRyaWJ1dGUnIiwgIid2YXJzdG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIs ICIndmFyc2l6ZSciLCAiJ25hbWV2YWx1ZXZhcnN0b3JlJyIsDQoNCisgICAgICAgICAgICAiJ2Fj dGlvbiciLCAiJ2NvbmZpZyciLCAiJ2VuZGFjdGlvbiciLCAiJ3JlZnJlc2gnIiwgIidpbnRlcnZh bCciLA0KDQorICAgICAgICAgICAgIid2YXJzdG9yZWRldmljZSciLCAiJ2d1aWRvcCciLCAiJ2Vu ZGd1aWRvcCciLCAiJ2RhdGF0eXBlJyIsDQoNCisgICAgICAgICAgICAiJ2RhdGEnIiwgIidtb2Rh bCciLCAiJ05PTl9ERVZJQ0UnIiwgIidESVNLX0RFVklDRSciLCAiJ1ZJREVPX0RFVklDRSciLA0K DQorICAgICAgICAgICAgIidORVRXT1JLX0RFVklDRSciLCAiJ0lOUFVUX0RFVklDRSciLCAiJ09O Qk9BUkRfREVWSUNFJyIsICInT1RIRVJfREVWSUNFJyIsDQoNCisgICAgICAgICAgICAiJ1NFVFVQ X0FQUExJQ0FUSU9OJyIsICInR0VORVJBTF9BUFBMSUNBVElPTiciLCAiJ0ZST05UX1BBR0UnIiwN Cg0KKyAgICAgICAgICAgICInU0lOR0xFX1VTRSciLCAiJ1lFQVJfU1VQUFJFU1MnIiwgIidNT05U SF9TVVBQUkVTUyciLCAiJ0RBWV9TVVBQUkVTUyciLA0KDQorICAgICAgICAgICAgIidIT1VSX1NV UFBSRVNTJyIsICInTUlOVVRFX1NVUFBSRVNTJyIsICInU0VDT05EX1NVUFBSRVNTJyIsDQoNCisg ICAgICAgICAgICAiJ1NUT1JBR0VfTk9STUFMJyIsICInU1RPUkFHRV9USU1FJyIsICInU1RPUkFH RV9XQUtFVVAnIiwgIidVTklRVUUnIiwNCg0KKyAgICAgICAgICAgICInTk9FTVBUWSciLCAiJ2Nv bmQnIiwgIidmaW5kJyIsICInbWlkJyIsICIndG9rZW4nIiwgIidzcGFuJyIsDQoNCisgICAgICAg ICAgICAiJ2R1cCciLCAiJ3ZhcmVxdmFsJyIsICIndmFyJyIsICInaWRlcXZhbCciLCAiJ2lkZXFp ZCciLCAiJ2lkZXF2YWxsaXN0JyIsDQoNCisgICAgICAgICAgICAiJ3F1ZXN0aW9ucmVmJyIsICIn cnVsZXJlZiciLCAiJ3N0cmluZ3JlZiciLCAiJ3B1c2h0aGlzJyIsICInc2VjdXJpdHknIiwNCg0K KyAgICAgICAgICAgICInZ2V0JyIsICInVFJVRSciLCAiJ0ZBTFNFJyIsICInT05FJyIsICInT05F UyciLCAiJ1pFUk8nIiwgIidVTkRFRklORUQnIiwNCg0KKyAgICAgICAgICAgICInVkVSU0lPTici LCAiJ2xlbmd0aCciLCAiJ0FORCciLCAiJ09SJyIsICInTk9UJyIsICInc2V0JyIsDQoNCisgICAg ICAgICAgICAiJ34nIiwgIidib29sdmFsJyIsICInc3RyaW5ndmFsJyIsICIndW5pbnR2YWwnIiwg Iid0b3VwcGVyJyIsDQoNCisgICAgICAgICAgICAiJ3RvbG93ZXInIiwgIidtYXRjaCciLCAiJ21h dGNoMiciLCAiJ2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCg0KKyAgICAgICAgICAg ICInc3RyaW5ncmVmdmFsJyIsICInbWFwJyIsICIncmVmcmVzaGd1aWQnIiwgIidTVFJJTkdfVE9L RU4nIiwNCg0KKyAgICAgICAgICAgICInT1BUSU9OX0RFRkFVTFQnIiwgIidPUFRJT05fREVGQVVM VF9NRkcnIiwgIidOVU1FUklDX1NJWkVfMSciLA0KDQorICAgICAgICAgICAgIidOVU1FUklDX1NJ WkVfMiciLCAiJ05VTUVSSUNfU0laRV80JyIsICInTlVNRVJJQ19TSVpFXzgnIiwNCg0KKyAgICAg ICAgICAgICInRElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9VSU5UX0RFQyciLCAiJ0RJU1BM QVlfVUlOVF9IRVgnIiwNCg0KKyAgICAgICAgICAgICInSU5TRU5TSVRJVkUnIiwgIidTRU5TSVRJ VkUnIiwgIidMQVNUX05PTl9NQVRDSCciLCAiJ0ZJUlNUX05PTl9NQVRDSCciIF0NCg0KKw0KDQor ICAgIHN5bWJvbGljTmFtZXMgPSBbICI8SU5WQUxJRD4iLA0KDQorICAgICAgICAgICAgIkRlZmlu ZSIsICJJbmNsdWRlIiwgIkZvcm1Qa2dUeXBlIiwgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwN Cg0KKyAgICAgICAgICAgICJPcGVuUGFyZW4iLCAiQ2xvc2VQYXJlbiIsICJPcGVuQnJhY2tldCIs ICJDbG9zZUJyYWNrZXQiLCAiRG90IiwNCg0KKyAgICAgICAgICAgICJOZWdhdGl2ZSIsICJDb2xv biIsICJTbGFzaCIsICJTZW1pY29sb24iLCAiQ29tbWEiLCAiRXF1YWwiLA0KDQorICAgICAgICAg ICAgIk5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIsICJHcmVh dGVyIiwNCg0KKyAgICAgICAgICAgICJCaXRXaXNlT3IiLCAiQml0V2lzZUFuZCIsICJEZXZpY2VQ YXRoIiwgIkZvcm1TZXQiLCAiRm9ybVNldElkIiwNCg0KKyAgICAgICAgICAgICJFbmRGb3JtU2V0 IiwgIlRpdGxlIiwgIkZvcm1JZCIsICJPbmVPZiIsICJFbmRPbmVPZiIsICJQcm9tcHQiLA0KDQor ICAgICAgICAgICAgIk9yZGVyZWRMaXN0IiwgIk1heENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJF bmRGb3JtIiwgIkZvcm0iLA0KDQorICAgICAgICAgICAgIkZvcm1NYXAiLCAiTWFwVGl0bGUiLCAi TWFwR3VpZCIsICJTdWJ0aXRsZSIsICJFbmRTdWJ0aXRsZSIsDQoNCisgICAgICAgICAgICAiSGVs cCIsICJUZXh0IiwgIk9wdGlvbiIsICJGTEFHUyIsICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIs DQoNCisgICAgICAgICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJIb3Vy IiwgIk1pbnV0ZSIsICJTZWNvbmQiLA0KDQorICAgICAgICAgICAgIkdyYXlPdXRJZiIsICJMYWJl bCIsICJUaW1lb3V0IiwgIkludmVudG9yeSIsICJOb25OdkRhdGFNYXAiLA0KDQorICAgICAgICAg ICAgIlN0cnVjdCIsICJVbmlvbiIsICJCb29sZWFuIiwgIlVpbnQ2NCIsICJVaW50MzIiLCAiVWlu dDE2IiwNCg0KKyAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVGSV9ISUlf REFURSIsICJFRklfSElJX1RJTUUiLCAiRUZJX0hJSV9SRUYiLA0KDQorICAgICAgICAgICAgIlV1 aWQiLCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAiTnVtZXJpYyIsICJFbmROdW1lcmljIiwN Cg0KKyAgICAgICAgICAgICJNaW5pbXVtIiwgIk1heGltdW0iLCAiU3RlcCIsICJEZWZhdWx0Iiwg IlBhc3N3b3JkIiwgIkVuZFBhc3N3b3JkIiwNCg0KKyAgICAgICAgICAgICJTdHJpbmciLCAiRW5k U3RyaW5nIiwgIk1pblNpemUiLCAiTWF4U2l6ZSIsICJFbmNvZGluZyIsICJTdXBwcmVzc0lmIiwN Cg0KKyAgICAgICAgICAgICJEaXNhYmxlSWYiLCAiSGlkZGVuIiwgIkdvdG8iLCAiRm9ybVNldEd1 aWQiLCAiSW5jb25zaXN0ZW50SWYiLA0KDQorICAgICAgICAgICAgIldhcm5pbmdJZiIsICJOb1N1 Ym1pdElmIiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsICJNYW51ZmFjdHVyaW5nRmxh ZyIsDQoNCisgICAgICAgICAgICAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIsICJDaGVja0JveERlZmF1 bHRNZmdGbGFnIiwgIkludGVyYWN0aXZlRmxhZyIsDQoNCisgICAgICAgICAgICAiTlZBY2Nlc3NG bGFnIiwgIlJlc2V0UmVxdWlyZWRGbGFnIiwgIlJlY29ubmVjdFJlcXVpcmVkRmxhZyIsDQoNCisg ICAgICAgICAgICAiTGF0ZUNoZWNrRmxhZyIsICJSZWFkT25seUZsYWciLCAiT3B0aW9uT25seUZs YWciLCAiUmVzdFN0eWxlRmxhZyIsDQoNCisgICAgICAgICAgICAiQ2xhc3MiLCAiU3ViY2xhc3Mi LCAiQ2xhc3NHdWlkIiwgIlR5cGVEZWYiLCAiUmVzdG9yZSIsICJTYXZlIiwNCg0KKyAgICAgICAg ICAgICJEZWZhdWx0cyIsICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVmdCIsICJSaWdodCIsICJDZW50 ZXIiLCAiTGluZSIsDQoNCisgICAgICAgICAgICAiTmFtZSIsICJWYXJJZCIsICJRdWVzdGlvbiIs ICJRdWVzdGlvbklkIiwgIkltYWdlIiwgIkxvY2tlZCIsDQoNCisgICAgICAgICAgICAiUnVsZSIs ICJFbmRSdWxlIiwgIlZhbHVlIiwgIlJlYWQiLCAiV3JpdGUiLCAiUmVzZXRCdXR0b24iLA0KDQor ICAgICAgICAgICAgIkVuZFJlc2V0QnV0dG9uIiwgIkRlZmF1bHRTdG9yZSIsICJBdHRyaWJ1dGUi LCAiVmFyc3RvcmUiLCAiRWZpdmFyc3RvcmUiLA0KDQorICAgICAgICAgICAgIlZhclNpemUiLCAi TmFtZVZhbHVlVmFyU3RvcmUiLCAiQWN0aW9uIiwgIkNvbmZpZyIsICJFbmRBY3Rpb24iLA0KDQor ICAgICAgICAgICAgIlJlZnJlc2giLCAiSW50ZXJ2YWwiLCAiVmFyc3RvcmVEZXZpY2UiLCAiR3Vp ZE9wIiwgIkVuZEd1aWRPcCIsDQoNCisgICAgICAgICAgICAiRGF0YVR5cGUiLCAiRGF0YSIsICJN b2RhbCIsICJDbGFzc05vbkRldmljZSIsICJDbGFzc0Rpc2tEZXZpY2UiLA0KDQorICAgICAgICAg ICAgIkNsYXNzVmlkZW9EZXZpY2UiLCAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwgIkNsYXNzSW5wdXRE ZXZpY2UiLA0KDQorICAgICAgICAgICAgIkNsYXNzT25Cb2FyZERldmljZSIsICJDbGFzc090aGVy RGV2aWNlIiwgIlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiIsDQoNCisgICAgICAgICAgICAiU3Vi Y2xhc3NHZW5lcmFsQXBwbGljYXRpb24iLCAiU3ViY2xhc3NGcm9udFBhZ2UiLCAiU3ViY2xhc3NT aW5nbGVVc2UiLA0KDQorICAgICAgICAgICAgIlllYXJTdXBwcHJlc3NGbGFnIiwgIk1vbnRoU3Vw cHJlc3NGbGFnIiwgIkRheVN1cHByZXNzRmxhZyIsDQoNCisgICAgICAgICAgICAiSG91clN1cHBw cmVzc0ZsYWciLCAiTWludXRlU3VwcHJlc3NGbGFnIiwgIlNlY29uZFN1cHByZXNzRmxhZyIsDQoN CisgICAgICAgICAgICAiU3RvcmFnZU5vcm1hbEZsYWciLCAiU3RvcmFnZVRpbWVGbGFnIiwgIlN0 b3JhZ2VXYWtlVXBGbGFnIiwNCg0KKyAgICAgICAgICAgICJVbmlRdWVGbGFnIiwgIk5vRW1wdHlG bGFnIiwgIkNvbmQiLCAiRmluZCIsICJNaWQiLCAiVG9rIiwgIlNwYW4iLA0KDQorICAgICAgICAg ICAgIkR1cCIsICJWYXJFcVZhbCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZh bExpc3QiLA0KDQorICAgICAgICAgICAgIlF1ZXN0aW9uUmVmIiwgIlJ1bGVSZWYiLCAiU3RyaW5n UmVmIiwgIlB1c2hUaGlzIiwgIlNlY3VyaXR5IiwNCg0KKyAgICAgICAgICAgICJHZXQiLCAiVHJ1 ZVN5bWJvbCIsICJGYWxzZVN5bWJvbCIsICJPbmUiLCAiT25lcyIsICJaZXJvIiwgIlVuZGVmaW5l ZCIsDQoNCisgICAgICAgICAgICAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9SIiwgIk5P VCIsICJTZXQiLCAiQml0V2lzZU5vdCIsDQoNCisgICAgICAgICAgICAiQm9vbFZhbCIsICJTdHJp bmdWYWwiLCAiVW5JbnRWYWwiLCAiVG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwNCg0KKyAg ICAgICAgICAgICJNYXRjaDIiLCAiQ2F0ZW5hdGUiLCAiUXVlc3Rpb25SZWZWYWwiLCAiU3RyaW5n UmVmVmFsIiwgIk1hcCIsDQoNCisgICAgICAgICAgICAiUmVmcmVzaEd1aWQiLCAiU3RyaW5nVG9r ZW4iLCAiT3B0aW9uRGVmYXVsdCIsICJPcHRpb25EZWZhdWx0TWZnIiwNCg0KKyAgICAgICAgICAg ICJOdW1lcmljU2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIsICJOdW1lcmljU2l6ZUZvdXIiLCAi TnVtZXJpY1NpemVFaWdodCIsDQoNCisgICAgICAgICAgICAiRGlzUGxheUludERlYyIsICJEaXNQ bGF5VUludERlYyIsICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsDQoNCisgICAgICAg ICAgICAiU2Vuc2l0aXZlIiwgIkxhc3ROb25NYXRjaCIsICJGaXJzdE5vbk1hdGNoIiwgIk51bWJl ciIsICJTdHJpbmdJZGVudGlmaWVyIiwNCg0KKyAgICAgICAgICAgICJDb21wbGV4RGVmaW5lIiwg IkxpbmVEZWZpbml0aW9uIiwgIkluY2x1ZGVEZWZpbml0aW9uIiwgIldoaXRlc3BhY2UiLA0KDQor ICAgICAgICAgICAgIk5ld2xpbmUiLCAiTGluZUNvbW1lbnQiLCAiRXh0ZXJuIiBdDQoNCisNCg0K KyAgICBydWxlTmFtZXMgPSBbICJUX18wIiwgIlRfXzEiLCAiVF9fMiIsICJUX18zIiwgIlRfXzQi LCAiVF9fNSIsICJUX182IiwNCg0KKyAgICAgICAgICAgICAgICAgICJUX183IiwgIlRfXzgiLCAi VF9fOSIsICJUX18xMCIsICJUX18xMSIsICJUX18xMiIsICJUX18xMyIsDQoNCisgICAgICAgICAg ICAgICAgICAiVF9fMTQiLCAiVF9fMTUiLCAiRGVmaW5lIiwgIkluY2x1ZGUiLCAiRm9ybVBrZ1R5 cGUiLA0KDQorICAgICAgICAgICAgICAgICAgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwgIk9w ZW5QYXJlbiIsICJDbG9zZVBhcmVuIiwNCg0KKyAgICAgICAgICAgICAgICAgICJPcGVuQnJhY2tl dCIsICJDbG9zZUJyYWNrZXQiLCAiRG90IiwgIk5lZ2F0aXZlIiwgIkNvbG9uIiwNCg0KKyAgICAg ICAgICAgICAgICAgICJTbGFzaCIsICJTZW1pY29sb24iLCAiQ29tbWEiLCAiRXF1YWwiLCAiTm90 RXF1YWwiLCAiTGVzc0VxdWFsIiwNCg0KKyAgICAgICAgICAgICAgICAgICJMZXNzIiwgIkdyZWF0 ZXJFcXVhbCIsICJHcmVhdGVyIiwgIkJpdFdpc2VPciIsICJCaXRXaXNlQW5kIiwNCg0KKyAgICAg ICAgICAgICAgICAgICJEZXZpY2VQYXRoIiwgIkZvcm1TZXQiLCAiRm9ybVNldElkIiwgIkVuZEZv cm1TZXQiLCAiVGl0bGUiLA0KDQorICAgICAgICAgICAgICAgICAgIkZvcm1JZCIsICJPbmVPZiIs ICJFbmRPbmVPZiIsICJQcm9tcHQiLCAiT3JkZXJlZExpc3QiLA0KDQorICAgICAgICAgICAgICAg ICAgIk1heENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwgIkZvcm0iLCAiRm9ybU1h cCIsDQoNCisgICAgICAgICAgICAgICAgICAiTWFwVGl0bGUiLCAiTWFwR3VpZCIsICJTdWJ0aXRs ZSIsICJFbmRTdWJ0aXRsZSIsICJIZWxwIiwNCg0KKyAgICAgICAgICAgICAgICAgICJUZXh0Iiwg Ik9wdGlvbiIsICJGTEFHUyIsICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIsDQoNCisgICAgICAg ICAgICAgICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJIb3VyIiwgIk1p bnV0ZSIsICJTZWNvbmQiLA0KDQorICAgICAgICAgICAgICAgICAgIkdyYXlPdXRJZiIsICJMYWJl bCIsICJUaW1lb3V0IiwgIkludmVudG9yeSIsICJOb25OdkRhdGFNYXAiLA0KDQorICAgICAgICAg ICAgICAgICAgIlN0cnVjdCIsICJVbmlvbiIsICJCb29sZWFuIiwgIlVpbnQ2NCIsICJVaW50MzIi LCAiVWludDE2IiwNCg0KKyAgICAgICAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lE IiwgIkVGSV9ISUlfREFURSIsICJFRklfSElJX1RJTUUiLA0KDQorICAgICAgICAgICAgICAgICAg IkVGSV9ISUlfUkVGIiwgIlV1aWQiLCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAiTnVtZXJp YyIsDQoNCisgICAgICAgICAgICAgICAgICAiRW5kTnVtZXJpYyIsICJNaW5pbXVtIiwgIk1heGlt dW0iLCAiU3RlcCIsICJEZWZhdWx0IiwNCg0KKyAgICAgICAgICAgICAgICAgICJQYXNzd29yZCIs ICJFbmRQYXNzd29yZCIsICJTdHJpbmciLCAiRW5kU3RyaW5nIiwgIk1pblNpemUiLA0KDQorICAg ICAgICAgICAgICAgICAgIk1heFNpemUiLCAiRW5jb2RpbmciLCAiU3VwcHJlc3NJZiIsICJEaXNh YmxlSWYiLCAiSGlkZGVuIiwNCg0KKyAgICAgICAgICAgICAgICAgICJHb3RvIiwgIkZvcm1TZXRH dWlkIiwgIkluY29uc2lzdGVudElmIiwgIldhcm5pbmdJZiIsDQoNCisgICAgICAgICAgICAgICAg ICAiTm9TdWJtaXRJZiIsICJFbmRJZiIsICJLZXkiLCAiRGVmYXVsdEZsYWciLCAiTWFudWZhY3R1 cmluZ0ZsYWciLA0KDQorICAgICAgICAgICAgICAgICAgIkNoZWNrQm94RGVmYXVsdEZsYWciLCAi Q2hlY2tCb3hEZWZhdWx0TWZnRmxhZyIsICJJbnRlcmFjdGl2ZUZsYWciLA0KDQorICAgICAgICAg ICAgICAgICAgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJlcXVpcmVkRmxhZyIsICJSZWNvbm5lY3RS ZXF1aXJlZEZsYWciLA0KDQorICAgICAgICAgICAgICAgICAgIkxhdGVDaGVja0ZsYWciLCAiUmVh ZE9ubHlGbGFnIiwgIk9wdGlvbk9ubHlGbGFnIiwgIlJlc3RTdHlsZUZsYWciLA0KDQorICAgICAg ICAgICAgICAgICAgIkNsYXNzIiwgIlN1YmNsYXNzIiwgIkNsYXNzR3VpZCIsICJUeXBlRGVmIiwg IlJlc3RvcmUiLA0KDQorICAgICAgICAgICAgICAgICAgIlNhdmUiLCAiRGVmYXVsdHMiLCAiQmFu bmVyIiwgIkFsaWduIiwgIkxlZnQiLCAiUmlnaHQiLA0KDQorICAgICAgICAgICAgICAgICAgIkNl bnRlciIsICJMaW5lIiwgIk5hbWUiLCAiVmFySWQiLCAiUXVlc3Rpb24iLCAiUXVlc3Rpb25JZCIs DQoNCisgICAgICAgICAgICAgICAgICAiSW1hZ2UiLCAiTG9ja2VkIiwgIlJ1bGUiLCAiRW5kUnVs ZSIsICJWYWx1ZSIsICJSZWFkIiwNCg0KKyAgICAgICAgICAgICAgICAgICJXcml0ZSIsICJSZXNl dEJ1dHRvbiIsICJFbmRSZXNldEJ1dHRvbiIsICJEZWZhdWx0U3RvcmUiLA0KDQorICAgICAgICAg ICAgICAgICAgIkF0dHJpYnV0ZSIsICJWYXJzdG9yZSIsICJFZml2YXJzdG9yZSIsICJWYXJTaXpl IiwgIk5hbWVWYWx1ZVZhclN0b3JlIiwNCg0KKyAgICAgICAgICAgICAgICAgICJBY3Rpb24iLCAi Q29uZmlnIiwgIkVuZEFjdGlvbiIsICJSZWZyZXNoIiwgIkludGVydmFsIiwNCg0KKyAgICAgICAg ICAgICAgICAgICJWYXJzdG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3VpZE9wIiwgIkRhdGFU eXBlIiwgIkRhdGEiLA0KDQorICAgICAgICAgICAgICAgICAgIk1vZGFsIiwgIkNsYXNzTm9uRGV2 aWNlIiwgIkNsYXNzRGlza0RldmljZSIsICJDbGFzc1ZpZGVvRGV2aWNlIiwNCg0KKyAgICAgICAg ICAgICAgICAgICJDbGFzc05ldHdvcmtEZXZpY2UiLCAiQ2xhc3NJbnB1dERldmljZSIsICJDbGFz c09uQm9hcmREZXZpY2UiLA0KDQorICAgICAgICAgICAgICAgICAgIkNsYXNzT3RoZXJEZXZpY2Ui LCAiU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uIiwgIlN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9u IiwNCg0KKyAgICAgICAgICAgICAgICAgICJTdWJjbGFzc0Zyb250UGFnZSIsICJTdWJjbGFzc1Np bmdsZVVzZSIsICJZZWFyU3VwcHByZXNzRmxhZyIsDQoNCisgICAgICAgICAgICAgICAgICAiTW9u dGhTdXBwcmVzc0ZsYWciLCAiRGF5U3VwcHJlc3NGbGFnIiwgIkhvdXJTdXBwcHJlc3NGbGFnIiwN Cg0KKyAgICAgICAgICAgICAgICAgICJNaW51dGVTdXBwcmVzc0ZsYWciLCAiU2Vjb25kU3VwcHJl c3NGbGFnIiwgIlN0b3JhZ2VOb3JtYWxGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICJTdG9y YWdlVGltZUZsYWciLCAiU3RvcmFnZVdha2VVcEZsYWciLCAiVW5pUXVlRmxhZyIsDQoNCisgICAg ICAgICAgICAgICAgICAiTm9FbXB0eUZsYWciLCAiQ29uZCIsICJGaW5kIiwgIk1pZCIsICJUb2si LCAiU3BhbiIsICJEdXAiLA0KDQorICAgICAgICAgICAgICAgICAgIlZhckVxVmFsIiwgIlZhciIs ICJJZEVxVmFsIiwgIklkRXFJZCIsICJJZEVxVmFsTGlzdCIsDQoNCisgICAgICAgICAgICAgICAg ICAiUXVlc3Rpb25SZWYiLCAiUnVsZVJlZiIsICJTdHJpbmdSZWYiLCAiUHVzaFRoaXMiLCAiU2Vj dXJpdHkiLA0KDQorICAgICAgICAgICAgICAgICAgIkdldCIsICJUcnVlU3ltYm9sIiwgIkZhbHNl U3ltYm9sIiwgIk9uZSIsICJPbmVzIiwgIlplcm8iLA0KDQorICAgICAgICAgICAgICAgICAgIlVu ZGVmaW5lZCIsICJWZXJzaW9uIiwgIkxlbmd0aCIsICJBTkQiLCAiT1IiLCAiTk9UIiwNCg0KKyAg ICAgICAgICAgICAgICAgICJTZXQiLCAiQml0V2lzZU5vdCIsICJCb29sVmFsIiwgIlN0cmluZ1Zh bCIsICJVbkludFZhbCIsDQoNCisgICAgICAgICAgICAgICAgICAiVG9VcHBlciIsICJUb0xvd2Vy IiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsICJRdWVzdGlvblJlZlZhbCIsDQoNCisg ICAgICAgICAgICAgICAgICAiU3RyaW5nUmVmVmFsIiwgIk1hcCIsICJSZWZyZXNoR3VpZCIsICJT dHJpbmdUb2tlbiIsICJPcHRpb25EZWZhdWx0IiwNCg0KKyAgICAgICAgICAgICAgICAgICJPcHRp b25EZWZhdWx0TWZnIiwgIk51bWVyaWNTaXplT25lIiwgIk51bWVyaWNTaXplVHdvIiwNCg0KKyAg ICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZUZvdXIiLCAiTnVtZXJpY1NpemVFaWdodCIsICJE aXNQbGF5SW50RGVjIiwNCg0KKyAgICAgICAgICAgICAgICAgICJEaXNQbGF5VUludERlYyIsICJE aXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsICJTZW5zaXRpdmUiLA0KDQorICAgICAgICAg ICAgICAgICAgIkxhc3ROb25NYXRjaCIsICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJp bmdJZGVudGlmaWVyIiwNCg0KKyAgICAgICAgICAgICAgICAgICJDb21wbGV4RGVmaW5lIiwgIkxp bmVEZWZpbml0aW9uIiwgIkluY2x1ZGVEZWZpbml0aW9uIiwNCg0KKyAgICAgICAgICAgICAgICAg ICJXaGl0ZXNwYWNlIiwgIk5ld2xpbmUiLCAiTGluZUNvbW1lbnQiLCAiRXh0ZXJuIiBdDQoNCisN Cg0KKyAgICBncmFtbWFyRmlsZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYsIGlucHV0PU5vbmUsIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToN Cg0KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbnB1dCwgb3V0cHV0KQ0KDQorICAgICAgICBz ZWxmLmNoZWNrVmVyc2lvbigiNC43LjIiKQ0KDQorICAgICAgICBzZWxmLl9pbnRlcnAgPSBMZXhl ckFUTlNpbXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNUb0RGQSwgUHJlZGlj dGlvbkNvbnRleHRDYWNoZSgpKQ0KDQorICAgICAgICBzZWxmLl9hY3Rpb25zID0gTm9uZQ0KDQor ICAgICAgICBzZWxmLl9wcmVkaWNhdGVzID0gTm9uZQ0KDQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4UGFyc2VyLnB5IGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4UGFyc2VyLnB5DQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uYjZhZjIxYjc5NQ0KLS0tIC9kZXYvbnVsbA0K KysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4UGFyc2Vy LnB5DQpAQCAtMCwwICsxLDIwNDYwIEBADQorIyBHZW5lcmF0ZWQgZnJvbSBWZnJTeW50YXguZzQg YnkgQU5UTFIgNC43LjINCg0KKyMgZW5jb2Rpbmc6IHV0Zi04DQoNCitmcm9tIGFudGxyNCBpbXBv cnQgKg0KDQorZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8NCg0KK2Zyb20gdHlwaW5nIGltcG9ydCBU ZXh0SU8NCg0KK2ltcG9ydCBzeXMNCg0KKw0KDQorDQoNCisNCg0KK2Zyb20gVmZyQ29tcGlsZXIu Q29tbW9uQ3R5cGVzIGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cgaW1w b3J0ICoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyVXRpbGl0eSBpbXBvcnQgKg0KDQorZnJvbSBW ZnJDb21waWxlci5WZnJUcmVlIGltcG9ydCAqDQoNCisNCg0KKw0KDQorZGVmIHNlcmlhbGl6ZWRB VE4oKToNCg0KKyAgICB3aXRoIFN0cmluZ0lPKCkgYXMgYnVmOg0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHU2MDhiXHVhNzJhXHU4MTMzXHViOWVkXHU0MTdjXHUzYmU3XHU3Nzg2XHU1OTY0XDNc dTAxMDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGJhM1w0XDJcdFwyXDRcM1x0XDNcNFw0 XHRcNFw0XDVcdFw1XDRcNlx0XDZcNFw3XHRcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRc Ylx0XGJcNFx0XHRcdFw0XG5cdFxuXDRcMTNcdFwxM1w0XGZcdFxmXDRcclx0XHJcNFwxNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHRcMTZcNFwxN1x0XDE3XDRcMjBcdFwyMFw0XDIxXHRcMjFc NFwyMlx0XDIyXDRcMjNcdFwyMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMjRcdFwyNFw0 XDI1XHRcMjVcNFwyNlx0XDI2XDRcMjdcdFwyN1w0XDMwXHRcMzBcNFwzMSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHRcMzFcNFwzMlx0XDMyXDRcMzNcdFwzM1w0XDM0XHRcMzRcNFwzNVx0XDM1 XDRcMzZcdFwzNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzdcdFwzN1w0IFx0IFw0IVx0 IVw0XCJcdFwiXDQjXHQjXDQkXHQkXDQlXHQlXDQmXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUo IiZcNFwnXHRcJ1w0KFx0KFw0KVx0KVw0Klx0Klw0K1x0K1w0LFx0LFw0LVx0LVw0Llx0Llw0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCIvXHQvXDRcNjBcdFw2MFw0XDYxXHRcNjFcNFw2Mlx0XDYy XDRcNjNcdFw2M1w0XDY0XHRcNjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XDY1XHRcNjVc NFw2Nlx0XDY2XDRcNjdcdFw2N1w0OFx0OFw0OVx0OVw0Olx0Olw0O1x0IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCI7XDQ8XHQ8XDQ9XHQ9XDQ+XHQ+XDQ/XHQ/XDRAXHRAXDRBXHRBXDRCXHRCXDRD XHRDXDREXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkRcNEVcdEVcNEZcdEZcNEdcdEdcNEhc dEhcNElcdElcNEpcdEpcNEtcdEtcNExcdExcNE1cdCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi TVw0Tlx0Tlw0T1x0T1w0UFx0UFw0UVx0UVw0Ulx0Ulw0U1x0U1w0VFx0VFw0VVx0VVw0Vlx0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJWXDRXXHRXXDRYXHRYXDRZXHRZXDRaXHRaXDRbXHRbXDRc XFx0XFxcNF1cdF1cNF5cdF5cNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiX1x0X1w0YFx0YFw0 YVx0YVw0Ylx0Ylw0Y1x0Y1w0ZFx0ZFw0ZVx0ZVw0Zlx0Zlw0Z1x0Z1w0IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJoXHRoXDRpXHRpXDRqXHRqXDRrXHRrXDRsXHRsXDRtXHRtXDRuXHRuXDRvXHRv XDRwXHRwXDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoInFcdHFcNHJcdHJcNHNcdHNcNHRcdHRc NHVcdHVcNHZcdHZcNHdcdHdcNHhcdHhcNHlcdHlcNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi elx0elw0e1x0e1w0fFx0fFw0fVx0fVw0flx0flw0XDE3N1x0XDE3N1w0XHUwMDgwXHRcdTAwODAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMDgxXHRcdTAwODFcNFx1MDA4Mlx0XHUwMDgy XDRcdTAwODNcdFx1MDA4M1w0XHUwMDg0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDA4 NFw0XHUwMDg1XHRcdTAwODVcNFx1MDA4Nlx0XHUwMDg2XDRcdTAwODdcdFx1MDA4NyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwODhcdFx1MDA4OFw0XHUwMDg5XHRcdTAwODlcNFx1MDA4 YVx0XHUwMDhhXDRcdTAwOGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMDhiXDRcdTAw OGNcdFx1MDA4Y1w0XHUwMDhkXHRcdTAwOGRcNFx1MDA4ZVx0XHUwMDhlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcNFx1MDA4Zlx0XHUwMDhmXDRcdTAwOTBcdFx1MDA5MFw0XHUwMDkxXHRcdTAw OTFcNFx1MDA5MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwOTJcNFx1MDA5M1x0XHUw MDkzXDRcdTAwOTRcdFx1MDA5NFw0XHUwMDk1XHRcdTAwOTUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw0XHUwMDk2XHRcdTAwOTZcNFx1MDA5N1x0XHUwMDk3XDRcdTAwOThcdFx1MDA5OFw0XHUw MDk5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDA5OVw0XHUwMDlhXHRcdTAwOWFcNFx1 MDA5Ylx0XHUwMDliXDRcdTAwOWNcdFx1MDA5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRc dTAwOWRcdFx1MDA5ZFw0XHUwMDllXHRcdTAwOWVcNFx1MDA5Zlx0XHUwMDlmXDRcdTAwYTAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGEwXDRcdTAwYTFcdFx1MDBhMVw0XHUwMGEyXHRc dTAwYTJcNFx1MDBhM1x0XHUwMGEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBhNFx0 XHUwMGE0XDRcdTAwYTVcdFx1MDBhNVw0XHUwMGE2XHRcdTAwYTZcNFx1MDBhNyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHRcdTAwYTdcNFx1MDBhOFx0XHUwMGE4XDRcdTAwYTlcdFx1MDBhOVw0 XHUwMGFhXHRcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGFiXHRcdTAwYWJc NFx1MDBhY1x0XHUwMGFjXDRcdTAwYWRcdFx1MDBhZFw0XHUwMGFlIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdFx1MDBhZVw0XHUwMGFmXHRcdTAwYWZcNFx1MDBiMFx0XHUwMGIwXDRcdTAwYjFc dFx1MDBiMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwYjJcdFx1MDBiMlw0XHUwMGIz XHRcdTAwYjNcNFx1MDBiNFx0XHUwMGI0XDRcdTAwYjUiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx0XHUwMGI1XDRcdTAwYjZcdFx1MDBiNlw0XHUwMGI3XHRcdTAwYjdcNFx1MDBiOFx0XHUwMGI4 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBiOVx0XHUwMGI5XDRcdTAwYmFcdFx1MDBi YVw0XHUwMGJiXHRcdTAwYmJcNFx1MDBiYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAw YmNcNFx1MDBiZFx0XHUwMGJkXDRcdTAwYmVcdFx1MDBiZVw0XHUwMGJmXHRcdTAwYmYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw0XHUwMGMwXHRcdTAwYzBcNFx1MDBjMVx0XHUwMGMxXDRcdTAw YzJcdFx1MDBjMlw0XHUwMGMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBjM1w0XHUw MGM0XHRcdTAwYzRcNFx1MDBjNVx0XHUwMGM1XDRcdTAwYzZcdFx1MDBjNiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDRcdTAwYzdcdFx1MDBjN1w0XHUwMGM4XHRcdTAwYzhcNFx1MDBjOVx0XHUw MGM5XDRcdTAwY2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGNhXDRcdTAwY2JcdFx1 MDBjYlwzXDJcM1wyXDNcMlw3XDJcdTAxOWFcblwyXGZcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDE2XDJcdTAxOWRcMTNcMlwzXDJcM1wyXDNcM1wzXDNcM1w0XDNcNFwzXDRcNVw0XHUwMWE2 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcblw0XDNcNFwzXDRcNVw0XHUwMWFhXG5cNFwzXDVc NVw1XHUwMWFkXG5cNVwzXDZcM1w2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2XDNcNlwz XDZcM1w2XDVcNlx1MDFiNVxuXDZcM1w2XDNcNlwzXDdcNVw3XHUwMWJhXG5cNyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcN1wzXDdcNVw3XHUwMWJlXG5cN1wzXDdcNVw3XHUwMWMxXG5cN1wz XDdcM1w3XDNcN1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1w1XDdcdTAxYzdcblw3XDNc N1wzXDdcM1xiXDVcYlx1MDFjY1xuXGJcM1xiXDNcYlw1XGIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDFkMFxuXGJcM1xiXDVcYlx1MDFkM1xuXGJcM1xiXDNcYlwzXGJcM1xiXDVcYlx1MDFk OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cYlwzXGJcM1xiXDNcdFwzXHRcM1x0XDNcdFwz XHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFwzXHRc M1x0XDNcdFw3XHRcdTAxZWJcblx0XGZcdFwxNlx0XHUwMWVlXDEzXHRcM1xuXDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlxuXDNcblwzXG5cM1xuXDVcblx1MDFmNVxuXG5cM1xuXDNcblwzXDEz XDNcMTNcM1wxM1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTNcM1wxM1w1XDEzXHUwMWZl XG5cMTNcM1wxM1wzXDEzXDNcZlwzXGZcM1xmXDNcZlwzXGYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw1XGZcdTAyMDdcblxmXDNcZlwzXGZcM1xyXDNcclwzXHJcM1xyXDNcclw1XHJcdTAyMTBc biIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHJcM1xyXDNcclwzXDE2XDNcMTZcM1wxNlwzXDE2 XDNcMTZcNVwxNlx1MDIxOVxuXDE2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxNlwzXDE2 XDNcMTdcM1wxN1wzXDE3XDNcMTdcM1wxN1w1XDE3XHUwMjIyXG5cMTdcM1wxNyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMTdcM1wyMFwzXDIwXDNcMjBcM1wyMFwzXDIwXDVcMjBcdTAyMmJc blwyMFwzXDIwXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyMFwzXDIxXDNcMjFcM1wyMVwz XDIxXDNcMjFcNVwyMVx1MDIzNFxuXDIxXDNcMjFcM1wyMSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMjJcM1wyMlwzXDIyXDNcMjJcM1wyMlw1XDIyXHUwMjNkXG5cMjJcM1wyMlwzXDIyXDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDVcMjNcdTAy NDZcblwyM1wzXDIzXDNcMjNcM1wyNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjRcNVwy NFx1MDI0Y1xuXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNVwzXDI1XDUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyNVx1MDI1NFxuXDI1XDNcMjVcM1wyNVwzXDI1XDNcMjVcM1wyNlwzXDI2 XDVcMjZcdTAyNWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxuXDI2XDNcMjZcM1wyNlwzXDI2 XDNcMjZcM1wyN1wzXDI3XDVcMjdcdTAyNjRcblwyN1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMjdcM1wyN1wzXDI3XDNcMjdcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNc MzBcM1wzMFwzXDMwXDNcMzBcM1wzMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcM1wz MFwzXDMwXDNcMzBcM1wzMFwzXDMwXDVcMzBcdTAyODJcblwzMFwzXDMwXDMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzMFwzXDMwXDNcMzBcM1wzMFw1XDMwXHUwMjg5XG5cMzBcM1wzMFwzXDMw XDNcMzBcM1wzMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcNVwzMFx1MDI5MFxuXDMw XDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMVwzXDMxXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzMVw1XDMxXHUwMjk5XG5cMzFcM1wzMVwzXDMxXDVcMzFcdTAyOWRcblwzMVwzXDMxXDNcMzEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XDMxXHUwMmExXG5cMzFcM1wzMlwzXDMyXDNcMzJc N1wzMlx1MDJhNlxuXDMyXGZcMzJcMTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMlx1MDJh OVwxM1wzMlwzXDMzXDNcMzNcM1wzNFwzXDM0XDNcMzVcN1wzNVx1MDJiMFxuIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMzVcZlwzNVwxNlwzNVx1MDJiM1wxM1wzNVwzXDM2XDNcMzZcM1wzNlwz XDM2XDNcMzZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDM2XDNcMzZcM1wzNlwzXDM2XDNc MzZcNVwzNlx1MDJiZlxuXDM2XDNcMzdcM1wzN1wzXDM3IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1w1XDM3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyY2VcblwzN1wzXDM3XDNcMzdcMyBcMyBcMyBc MyBcMyBcMyBcMyBcMyBcMyBcMyBcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIFwzIFwzIFwz IFwzIFwzIFwzIFw1IFx1MDJlM1xuIFwzIFwzIFwzIFwzIFw1IFx1MDJlOVxuIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCIgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMhXDMhXDMhXDMhXDMh XDMhXDMhXDMhXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIiFcMyFcMyFcMyFcMyFcMyFcMyFc MyFcMyFcNSFcdTAzMDVcbiFcMyFcMyFcMyFcMyFcNSFcdTAzMGIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlxuIVwzIVwzIVwzIVwzIVwzIVw3IVx1MDMxMlxuIVxmIVwxNiFcdTAzMTVcMTMhXDMh XDMhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFc MyFcMyFcMyFcMyFcMyFcNSFcdTAzMjdcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIVwzIVwz IVwzIVwzIVwzIVwzXCJcM1wiXDMjXDMjXDMjXDMjXDMjXDMjXDMjXDUjXHUwMzM3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcbiNcMyNcMyNcMyNcMyNcMyNcMyNcMyNcNiNcdTAzNDBcbiNcciNc MTYjXHUwMzQxXDMjXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIiNcMyNcMyNcMyNcMyRcMyRc MyRcMyRcMyRcMyRcMyRcMyVcMyVcMyVcMyVcMyVcMyVcMyVcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzXCdc M1wnIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wn XDNcJ1wzXCdcM1wnXDVcJ1x1MDM3M1xuXCciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXCdc M1wnXDMoXDMoXDMoXDMoXDMoXDMpXDMpXDMpXDMqXDMqXDMqXDMqXDUqXHUwMzgzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcbipcMypcMypcMypcMypcMypcNSpcdTAzOGFcbipcMypcMypcMypc MypcNSpcdTAzOTBcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiKlwzK1wzK1wzK1wzK1wzK1wz K1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzLFwzLFwzLFwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCIsXDMsXDMsXDMsXDMsXDUsXHUwM2E4XG4sXDMtXDMtXDMtXDMtXDMtXDMtXDMtXDctXHUw M2IxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbi1cZi1cMTYtXHUwM2I0XDEzLVw1LVx1MDNi NlxuLVwzLlw1Llx1MDNiOVxuLlwzLlwzLiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDMuXDMu XDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIi5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5c My5cMy5cNy5cdTAzZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxuLlxmLlwxNi5cdTAzZTFc MTMuXDMuXDUuXHUwM2U0XG4uXDMvXDMvXDMvXDMvXDMvXDMvIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMy9cM1w2MFwzXDYwXDNcNjFcM1w2MVw1XDYxXHUwM2YxXG5cNjFcM1w2MlwzXDYyXDNc NjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDYyXHUwM2Y2XG5cNjJcZlw2MlwxNlw2Mlx1 MDNmOVwxM1w2MlwzXDYzXDNcNjNcM1w2MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcNjNc M1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcN1w2MyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDA4XG5cNjNcZlw2M1wxNlw2M1x1MDQwYlwxM1w2M1wzXDYz XDNcNjNcM1w2M1wzXDY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NFwzXDY0XDNcNjRc M1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1w2NFwzXDY0XDNcNjRcNVw2NFx1MDQxZlxuXDY0XDNcNjVcM1w2NVwzXDY1XDNc NjVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2 NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDY1 XDNcNjVcN1w2NVx1MDQzMlxuXDY1XGZcNjVcMTZcNjVcdTA0MzVcMTNcNjVcM1w2NSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdcNjVcdTA0Mzhcblw2NVxmXDY1XDE2XDY1XHUwNDNiXDEzXDY1 XDNcNjVcM1w2NVwzXDY1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NlwzXDY2XDNcNjZc M1w2N1wzXDY3XDNcNjdcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiOVwzOVwzOVw1OVx1MDQ1MFxuOVwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwz Olw1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCI6XHUwNDVkXG46XDM6XDM6XDU6XHUwNDYxXG46 XDM6XDM6XDM6XDU6XHUwNDY2XG46XDM6XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIjpcNzpc dTA0NmFcbjpcZjpcMTY6XHUwNDZkXDEzOlw1Olx1MDQ2ZlxuOlwzOlwzOlw1Olx1MDQ3MyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXG46XDM7XDM7XDU7XHUwNDc3XG47XDM8XDM8XDM8XDc8XHUw NDdjXG48XGY8XDE2PFx1MDQ3ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDEzPFwzPVwzPVwz PlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCI+XDM+XDM+XDM+XDM+XDM+XDM+XDU+XHUwNDk4XG4+XDM+XDM+XDM+XDM+XDM+ XDM+XDc+XHUwNGEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbj5cZj5cMTY+XHUwNGEzXDEz PlwzPlwzPlwzPlwzPlwzPlw1Plx1MDRhYVxuPlwzPlwzPiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDU+XHUwNGFlXG4+XDM+XDM+XDM/XDM/XDU/XHUwNGI0XG4/XDNAXDNAXDVAXHUwNGI4XG4i KQ0KDQorICAgICAgICBidWYud3JpdGUoIkBcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0Fc M0FcM0FcM0FcM0FcM0FcM0FcM0FcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiQVwzQVwzQVwz QVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDVBXHUwNGU2XG5BXDNBXDNB XDVBXHUwNGVhXG4iKQ0KDQorICAgICAgICBidWYud3JpdGUoIkFcM0FcM0FcM0FcM0FcM0FcNUFc dTA0ZjFcbkFcM0FcM0FcM0FcM0FcNUFcdTA0ZjdcbkFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiQVwzQVw1QVx1MDRmYlxuQVwzQVwzQVwzQlwzQlwzQlw3Qlx1MDUwMlxuQlxmQlwxNkJcdTA1 MDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxM0JcM0NcM0NcNUNcdTA1MDlcbkNcM0RcM0Rc M0RcM0RcM0RcM0RcM0RcM0RcM0RcM0RcNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiRFx1MDUx NVxuRFwzRFwzRFwzRFwzRVwzRVwzRVwzRVwzRVwzRVw1RVx1MDUyMFxuRVwzRlwzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDVGXHUwNTJkXG5G XDNHXDNHXDNHXDNHXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkdcM0dcM0dcM0dcM0dcM0dc M0dcM0dcM0dcN0dcdTA1M2NcbkdcZkdcMTZHXHUwNTNmXDEzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJHXDNHXDNHXDVHXHUwNTQzXG5HXDNHXDNHXDNHXDVHXHUwNTQ4XG5HXDNIXDNIXDNIXDNI XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkhcM0hcM0hcM0hcM0hcM0hcM0hcM0hcM0hcN0hc dTA1NTdcbkhcZkhcMTZIXHUwNTVhXDEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJIXDNIXDNI XDVIXHUwNTVlXG5IXDNIXDNIXDNIXDVIXHUwNTYzXG5IXDNJXDNJXDNJXDNJXDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIklcM0lcNUlcdTA1NmJcbklcM0pcM0pcM0pcM0pcM0pcM0tcM0tcM0tc M0tcM0tcM0tcM0tcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiS1wzTFwzTFwzTFwzTFwzTFwz TVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVw1IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJNXHUwNThiXG5NXDNNXDNNXDNNXDVNXHUwNTkwXG5NXDNOXDdOXHUwNTkzXG5OXGZOXDE2 TiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTk2XDEzTlwzT1wzT1wzT1wzT1wzT1wzT1wz T1w1T1x1MDU5ZlxuT1wzUFwzUFwzUFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJQXDNQXDNQ XDNQXDNQXDVQXHUwNWE5XG5QXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDdRXHUwNWIzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcblFcZlFcMTZRXHUwNWI2XDEzUVwzUVwzUVw1UVx1MDViYVxu UVwzUVwzUVwzUVw1UVx1MDViZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5RXDNSXDNSXDNS XDNSXDNSXDNSXDNSXDNSXDdSXHUwNWM5XG5SXGZSXDE2Ulx1MDVjY1wxMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiUlwzUlwzUlw1Ulx1MDVkMFxuUlwzUlwzUlwzUlw1Ulx1MDVkNVxuUlwzU1wz U1wzU1wzU1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJTXDNTXDNTXDNTXDVTXHUwNWRmXG5T XDNTXDNTXDNTXDNTXDVTXHUwNWU1XG5TXDNUXDNUXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlRcM1RcM1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiVlwzVlwzVlwzVlwzVlw1Vlx1MDYwMFxuVlwzVlwzVlw3 Vlx1MDYwNFxuVlxmVlwxNlZcdTA2MDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxM1ZcM1Zc M1ZcM1dcM1dcM1dcN1dcdTA2MGVcbldcZldcMTZXXHUwNjExXDEzV1wzWFwzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDVYXHUwNjFlXG5YXDNZ XDNZXDNZXDNZXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlpcM1pcM1pcM1pcM1tcN1tcdTA2 MjlcbltcZltcMTZbXHUwNjJjXDEzW1wzXFxcM1xcXDVcXCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNjMwXG5cXFwzXVwzXVw1XVx1MDYzNFxuXVwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzXlwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJeXDVeXHUwNjNmXG5eXDNeXDNeXDNeXDNeXDVeXHUw NjQ1XG5eXDNeXDNeXDNeXDNeXDNfXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIl9cM19cN19c dTA2NGVcbl9cZl9cMTZfXHUwNjUxXDEzX1wzYFwzYFwzYFwzYFwzYFwzYFw1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJgXHUwNjU5XG5gXDNhXDNhXDNhXDNhXDNhXDNhXDNhXDNhXDVhXHUwNjYz XG5hXDNhXDNhXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoImFcM2FcM2FcM2FcM2FcM2FcM2Fc M2FcM2FcM2JcM2JcM2JcN2JcdTA2NzNcbmJcZmJcMTZiIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA2NzZcMTNiXDNjXDNjXDVjXHUwNjdhXG5jXDNkXDNkXDVkXHUwNjdlXG5kXDNlXDNlXDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2VcM2VcNWVcdTA2ODlcbmVc M2VcM2VcM2VcM2VcNWVcdTA2OGZcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiZVwzZVwzZVwz ZVwzZVwzZVwzZlwzZlwzZlw1Zlx1MDY5OVxuZlwzZlwzZlwzZlwzZlwzZlw1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJmXHUwNmEwXG5mXDNmXDNmXDNmXDNmXDNmXDNmXDVmXHUwNmE4XG5mXDNn XDNnXDNnXDdnXHUwNmFkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbmdcZmdcMTZnXHUwNmIw XDEzZ1wzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFw1aFx1MDZiYiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXG5oXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDVpXHUwNmM2XG5pXDNpXDVp XHUwNmM5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbmlcM2lcM2lcM2lcM2lcM2pcM2pcM2pc N2pcdTA2ZDJcbmpcZmpcMTZqXHUwNmQ1XDEzaiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNr XDNrXDVrXHUwNmQ5XG5rXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDVsXHUwNmUzXG4iKQ0KDQor ICAgICAgICBidWYud3JpdGUoImxcM2xcM2xcM2xcM2xcNWxcdTA2ZTlcbmxcM2xcM2xcM2xcM2xc M2xcM2xcM2xcM2xcM2xcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgibFwzbFwzbFwzbVwzbVwz bVw3bVx1MDZmYVxubVxmbVwxNm1cdTA2ZmRcMTNtXDNuXDNuXDMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIm5cNW5cdTA3MDJcbm5cM29cM29cM29cM29cM29cM29cM29cM29cNW9cdTA3MGNcbm9c M29cMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgib1wzb1wzb1w1b1x1MDcxMlxub1wzb1wzb1wz b1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJvXDVv XHUwNzIwXG5vXDNvXDNvXDNvXDNvXDNwXDNwXDNwXDdwXHUwNzI5XG5wXGZwXDE2cCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNzJjXDEzcFwzcVwzcVw1cVx1MDczMFxucVwzclwzclwzclwz clwzclwzclwzclw1clx1MDczOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5yXDNyXDNyXDNy XDNyXDNyXDVyXHUwNzQwXG5yXDNyXDNyXDNyXDNyXDNzXDNzXDNzXDciKQ0KDQorICAgICAgICBi dWYud3JpdGUoInNcdTA3NDlcbnNcZnNcMTZzXHUwNzRjXDEzc1wzdFwzdFwzdFwzdFw1dFx1MDc1 MlxudFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDV1 XHUwNzVjXG51XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInVc M3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgidVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwz dVwzdVwzdVwzdVwzdVwzdVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1 XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcNXVcdTA3YTdc bnVcM3VcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidVx1MDdhYVxudVxmdVwxNnVcdTA3YWRc MTN1XDV1XHUwN2FmXG51XDN1XDN1XDN1XDN2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInZc M3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcNXZcdTA3YzBcbnZcM3ZcM3ZcM3ZcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgidlw1dlx1MDdjNlxudlwzd1wzd1wzd1w3d1x1MDdjYlxud1xm d1wxNndcdTA3Y2VcMTN3XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInhcM3hcM3lcM3lcM3lc M3lcM3lcM3lcM3lcM3lcNXlcdTA3ZGFcbnlcM3lcM3lcM3lcM3lcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgieVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwz eVwzeVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInlc M3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgieVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwz eVwzeVwzeVw1eVx1MDgyNVxuIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDd5XHUwODI4 XG55XGZ5XDE2eVx1MDgyYlwxM3lcNXlcdTA4MmRcbnlcM3lcM3lcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgieVwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelw1elx1MDgzZVxu elwzelwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ6XDN6XDN6XDV6XHUwODQ0XG56XDN7XDN7 XDN7XDd7XHUwODQ5XG57XGZ7XDE2e1x1MDg0YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDEz e1wzfFwzfFwzfVwzfVwzfVwzfVw1fVx1MDg1NFxufVwzflwzflwzflwzflwzflwzXDE3NyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMTc3XDNcdTAwODBcM1x1MDA4MFwzXHUwMDgxXDNcdTAw ODFcM1x1MDA4MVwzXHUwMDgxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4MVwzXHUw MDgxXDVcdTAwODFcdTA4NjVcblx1MDA4MVwzXHUwMDgyXDNcdTAwODIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMDgyXDNcdTAwODJcNVx1MDA4Mlx1MDg2YlxuXHUwMDgyXDNcdTAwODNc M1x1MDA4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODNcM1x1MDA4M1w3XHUwMDgz XHUwODcxXG5cdTAwODNcZlx1MDA4M1wxNlx1MDA4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwODc0XDEzXHUwMDgzXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODRcM1x1MDA4NCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRc N1x1MDA4NFx1MDg3ZlxuXHUwMDg0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcZlx1MDA4NFwx Nlx1MDA4NFx1MDg4MlwxM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcNVx1MDA4NCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwODg2XG5cdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcM1x1 MDA4NVwzXHUwMDg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4NVwzXHUwMDg1XDNc dTAwODVcM1x1MDA4NVw3XHUwMDg1XHUwODkxXG5cdTAwODUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlxmXHUwMDg1XDE2XHUwMDg1XHUwODk0XDEzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVw1XHUw MDg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OThcblx1MDA4NVwzXHUwMDg1XDNcdTAw ODVcM1x1MDA4NVwzXHUwMDg2XDNcdTAwODYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MDg2XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDdcdTAwODZcdTA4YTNcblx1MDA4NiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXGZcdTAwODZcMTZcdTAwODZcdTA4YTZcMTNcdTAwODZcM1x1MDA4 NlwzXHUwMDg2XDVcdTAwODYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhhYVxuXHUwMDg2 XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDdcdTAwODZcdTA4YWZcbiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMDg2XGZcdTAwODZcMTZcdTAwODZcdTA4YjJcMTNcdTAwODZcM1x1MDA4Nlwz XHUwMDg2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4NlwzXHUwMDg3XDNcdTAwODdc M1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdcdTAwODdcdTA4YmRcblx1MDA4N1xmXHUwMDg3XDE2XHUwMDg3XHUwOGMwXDEzXHUwMDg3IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4N1wzXHUwMDg3XDVcdTAwODdcdTA4YzRcblx1 MDA4N1wzXHUwMDg3XDNcdTAwODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg3XDdc dTAwODdcdTA4Yzlcblx1MDA4N1xmXHUwMDg3XDE2XHUwMDg3XHUwOGNjIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMTNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4OFwzXHUw MDg4XDNcdTAwODgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1 MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcN1x1MDA4OFx1MDhkZVxuXHUwMDg4XGZcdTAw ODgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxNlx1MDA4OFx1MDhlMVwxM1x1MDA4OFwzXHUw MDg4XDNcdTAwODhcNVx1MDA4OFx1MDhlNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAw ODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg5XDNcdTAwODkiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg5XDVcdTAwODlcdTA4ZWVcblx1MDA4OVwzXHUwMDhh XDNcdTAwOGFcM1x1MDA4YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGFcM1x1MDA4 YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGEiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4 YlwzXHUwMDhiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAw OGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAw OGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDhiXHUwOTBmXG5cdTAwOGJcM1x1MDA4 YlwzXHUwMDhiXDNcdTAwOGNcM1x1MDA4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw OGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAw OGNcM1x1MDA4Y1wzXHUwMDhjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4Y1wzXHUw MDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4YyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDdcdTAwOGNcdTA5MmRcblx1MDA4 Y1xmXHUwMDhjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTZcdTAwOGNcdTA5MzBcMTNcdTAw OGNcNVx1MDA4Y1x1MDkzMlxuXHUwMDhjXDNcdTAwOGMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1w1XHUwMDhjXHUwOTM4XG5cdTAwOGNcM1x1MDA4YyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGRc M1x1MDA4ZFwzXHUwMDhlXDNcdTAwOGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDhl XHUwOTQyXG5cdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwz XHUwMDhlXDNcdTAwOGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVc M1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVw1XHUwMDhlIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA5NTVcblx1MDA4ZVwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNc dTAwOGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlwz XHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA5NjJcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAwOGYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDk2OFxuXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUw MDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTZlXG5cdTAw OGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA5NzRcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhm XDVcdTAwOGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk3YVxuXHUwMDhmXDNcdTAwOGZc M1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOTgwXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ODZcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1 MDA4ZlwzXHUwMDhmXDVcdTAwOGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk4Y1xuXHUw MDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwOTkyXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4 Zlw1XHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5OThcblx1MDA4Zlw1XHUwMDhm XHUwOTlhXG5cdTAwOGZcM1x1MDA4Zlw3XHUwMDhmXHUwOTlkIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcblx1MDA4ZlxmXHUwMDhmXDE2XHUwMDhmXHUwOWEwXDEzXHUwMDhmXDVcdTAwOGZcdTA5 YTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxuXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw3XHUw MDhmXHUwOWE2XG5cdTAwOGZcZlx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE2XHUw MDhmXHUwOWE5XDEzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDlhY1xuXHUwMDhmIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkw XDNcdTAwOTBcM1x1MDA5MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwOTBcdTA5YjVc blx1MDA5MFwzXHUwMDkwXDNcdTAwOTBcN1x1MDA5MFx1MDliOVxuIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAwOTBcZlx1MDA5MFwxNlx1MDA5MFx1MDliY1wxM1x1MDA5MFwzXHUwMDkwXDNc dTAwOTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTFcM1x1MDA5MVwz XHUwMDkxXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDA5M1wzXHUwMDkzXDdcdTAwOTNcdTA5Yzlcblx1MDA5M1xmXHUwMDkzXDE2XHUwMDkzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5Y2NcMTNcdTAwOTNcM1x1MDA5NFwzXHUwMDk0XDNc dTAwOTRcN1x1MDA5NFx1MDlkMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAwOTRcZlx1 MDA5NFwxNlx1MDA5NFx1MDlkNFwxM1x1MDA5NFwzXHUwMDk1XDNcdTAwOTUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMDk1XDdcdTAwOTVcdTA5ZDlcblx1MDA5NVxmXHUwMDk1XDE2XHUw MDk1XHUwOWRjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTNcdTAwOTVcM1x1MDA5NlwzXHUw MDk2XDNcdTAwOTZcN1x1MDA5Nlx1MDllMVxuXHUwMDk2IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcZlx1MDA5NlwxNlx1MDA5Nlx1MDllNFwxM1x1MDA5NlwzXHUwMDk3XDNcdTAwOTdcM1x1MDA5 NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwOTdcdTA5ZTlcblx1MDA5N1xmXHUwMDk3 XDE2XHUwMDk3XHUwOWVjXDEzXHUwMDk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5 OFwzXHUwMDk4XDdcdTAwOThcdTA5ZjBcblx1MDA5OFxmXHUwMDk4XDE2XHUwMDk4IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5ZjNcMTNcdTAwOThcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlc M1x1MDA5OVw1XHUwMDk5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5Zjlcblx1MDA5OVwz XHUwMDlhXDNcdTAwOWFcN1x1MDA5YVx1MDlmZFxuXHUwMDlhXGYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDA5YVwxNlx1MDA5YVx1MGEwMFwxM1x1MDA5YVwzXHUwMDliXDNcdTAwOWJcM1x1 MDA5YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNc dTAwOWJcM1x1MDA5Ylw1XHUwMDliXHUwYTBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcblx1 MDA5YlwzXHUwMDljXDNcdTAwOWNcN1x1MDA5Y1x1MGEwZVxuXHUwMDljXGZcdTAwOWMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwxNlx1MDA5Y1x1MGExMVwxM1x1MDA5Y1wzXHUwMDlkXDNcdTAw OWRcM1x1MDA5ZFwzXHUwMDlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDA5ZFx1MGEx N1xuXHUwMDlkXDNcdTAwOWVcM1x1MDA5ZVw3XHUwMDllXHUwYTFiXG4iKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDA5ZVxmXHUwMDllXDE2XHUwMDllXHUwYTFlXDEzXHUwMDllXDNcdTAwOWZc M1x1MDA5ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5Zlw1XHUwMDlm XHUwYTI0XG5cdTAwOWZcM1x1MDBhMFwzXHUwMGEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N1x1MDBhMFx1MGEyOFxuXHUwMGEwXGZcdTAwYTBcMTZcdTAwYTBcdTBhMmJcMTNcdTAwYTAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExXDNc dTAwYTFcM1x1MDBhMVw1XHUwMGExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMzNcblx1 MDBhMVwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlw3XHUwMGEyXHUwYTM4XG4iKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDBhMlxmXHUwMGEyXDE2XHUwMGEyXHUwYTNiXDEzXHUwMGEyXDNcdTAw YTJcM1x1MDBhMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTNcM1x1MDBhM1wzXHUw MGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcNVx1MDBhM1x1MGE0 YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAwYTNcM1x1MDBhNFwzXHUwMGE0XDNcdTAw YTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MGE0XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhNVwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNlwzXHUw MGE2XDNcdTAwYTZcM1x1MDBhNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTZcM1x1 MDBhNlwzXHUwMGE2XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1 MDBhOFwzXHUwMGE4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhOFwzXHUwMGE4XDNc dTAwYThcM1x1MDBhOFw1XHUwMGE4XHUwYTczXG5cdTAwYTgiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwzXHUw MGFhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1 MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwYWFcM1x1MDBhYVwzXHUwMGFhXDVcdTAwYWFcdTBhODZcblx1MDBhYVwzXHUwMGFiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUw MGFiXDNcdTAwYWJcM1x1MDBhYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1 MDBhYlwzXHUwMGFiXDNcdTAwYWJcNVx1MDBhYlx1MGE5NFxuXHUwMGFiIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAw YWNcM1x1MDBhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWNcM1x1MDBhY1wzXHUw MGFjXDNcdTAwYWNcM1x1MDBhY1w1XHUwMGFjXHUwYWEyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcblx1MDBhY1wzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDZcdTAwYWRcdTBhYTgi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlxuXHUwMGFkXHJcdTAwYWRcMTZcdTAwYWRcdTBhYTlc M1x1MDBhZVwzXHUwMGFlXDNcdTAwYWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGFl XDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDdcdTAwYWVcdTBhYjNcblx1MDBhZSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXGZcdTAwYWVcMTZcdTAwYWVcdTBhYjZcMTNcdTAwYWVcNVx1MDBhZVx1 MGFiOFxuXHUwMGFlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhZlwzXHUwMGFmXDNc dTAwYWZcM1x1MDBhZlw1XHUwMGFmXHUwYWJlXG5cdTAwYWYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMVwzXHUw MGIxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1 MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwYjJcM1x1MDBiMlwzXHUwMGIyXDVcdTAwYjJcdTBhZDFcblx1MDBiMlwzXHUwMGIyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiNFwzXHUw MGI0XDNcdTAwYjRcM1x1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjRcM1x1 MDBiNVwzXHUwMGI1XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlw1XHUwMGI2XHUwYWU1XG5cdTAw YjZcM1x1MDBiNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjZcM1x1MDBiN1wzXHUw MGI3XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjgiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFw1XHUw MGI4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZjVcblx1MDBiOFwzXHUwMGI5XDNcdTAw YjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYlwzXHUwMGJiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUw MGJiXDNcdTAwYmJcM1x1MDBiYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwYmJcdTBi MGFcblx1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBiYlw1XHUwMGJiXHUwYjExXG5cdTAwYmJcM1x1MDBiYlwzXHUwMGJi XDNcdTAwYmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGJjXDNcdTAwYmNcM1x1MDBi Y1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiZFwzXHUwMGJkIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBi ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYmVcNVx1MDBiZVx1MGIyNVxuXHUwMGJl XDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBi ZVwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBjMCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBj MVwzXHUwMGMxXDNcdTAwYzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMxXDNcdTAw YzFcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMlwzXHUwMGMyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBjMlwzXHUwMGMyXDVcdTAwYzJcdTBiNDFcblx1MDBjMlwzXHUwMGMy XDNcdTAwYzIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBj M1wzXHUwMGMzXDNcdTAwYzNcM1x1MDBjM1wzXHUwMGMzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcNVx1MDBjM1x1MGI0Y1xuXHUwMGMzXDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0 XDNcdTAwYzRcM1x1MDBjNVwzXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBj NVwzXHUwMGM1XDNcdTAwYzVcN1x1MDBjNVx1MGI1Y1xuXHUwMGM1XGZcdTAwYzUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwxNlx1MDBjNVx1MGI1ZlwxM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVc M1x1MDBjNVwzXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjNVwzXHUwMGM1 XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM2XDNcdTAwYzZcM1x1MDBjNyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3 XDNcdTAwYzciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGM3XDNcdTAwYzhcM1x1MDBj OFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBj OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDdcdTAw YzlcdTBiODRcblx1MDBjOVxmXHUwMGM5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTZcdTAw YzlcdTBiODdcMTNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBj YVwzXHUwMGNhXDNcdTAwY2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGNiXDNcdTAw Y2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBjYlw3XHUwMGNiXHUwYjljXG5cdTAwY2JcZlx1MDBjYlwxNlx1MDBj Ylx1MGI5ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDEzXHUwMGNiXDNcdTAwY2JcM1x1MDBj YlwzXHUwMGNiXDJcMlx1MDBjY1wyXDRcNlxiXG4iKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxm XDE2XDIwXDIyXDI0XDI2XDMwXDMyXDM0XDM2IFwiJCYoKiwuXDYwXDYyXDY0XDY2ODo8IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCI+QEJERkhKTE5QUlRWWFpcXF5gYmRmaGpsbnBydHZ4enx+XHUw MDgwXHUwMDgyXHUwMDg0XHUwMDg2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODhcdTAw OGFcdTAwOGNcdTAwOGVcdTAwOTBcdTAwOTJcdTAwOTRcdTAwOTZcdTAwOTgiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDA5YVx1MDA5Y1x1MDA5ZVx1MDBhMFx1MDBhMlx1MDBhNFx1MDBhNlx1 MDBhOFx1MDBhYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGFjXHUwMGFlXHUwMGIwXHUw MGIyXHUwMGI0XHUwMGI2XHUwMGI4XHUwMGJhXHUwMGJjIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAwYmVcdTAwYzBcdTAwYzJcdTAwYzRcdTAwYzZcdTAwYzhcdTAwY2FcdTAwY2NcdTAwY2Ui KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBkMFx1MDBkMlx1MDBkNFx1MDBkNlx1MDBkOFx1 MDBkYVx1MDBkY1x1MDBkZVx1MDBlMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGUyXHUw MGU0XHUwMGU2XHUwMGU4XHUwMGVhXHUwMGVjXHUwMGVlXHUwMGYwXHUwMGYyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAwZjRcdTAwZjZcdTAwZjhcdTAwZmFcdTAwZmNcdTAwZmVcdTAxMDBc dTAxMDJcdTAxMDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEwNlx1MDEwOFx1MDEwYVx1 MDEwY1x1MDEwZVx1MDExMFx1MDExMlx1MDExNFx1MDExNiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMTE4XHUwMTFhXHUwMTFjXHUwMTFlXHUwMTIwXHUwMTIyXHUwMTI0XHUwMTI2XHUwMTI4 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMmFcdTAxMmNcdTAxMmVcdTAxMzBcdTAxMzJc dTAxMzRcdTAxMzZcdTAxMzhcdTAxM2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzY1x1 MDEzZVx1MDE0MFx1MDE0Mlx1MDE0NFx1MDE0Nlx1MDE0OFx1MDE0YVx1MDE0YyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMTRlXHUwMTUwXHUwMTUyXHUwMTU0XHUwMTU2XHUwMTU4XHUwMTVh XHUwMTVjXHUwMTVlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNjBcdTAxNjJcdTAxNjRc dTAxNjZcdTAxNjhcdTAxNmFcdTAxNmNcdTAxNmVcdTAxNzAiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDE3Mlx1MDE3NFx1MDE3Nlx1MDE3OFx1MDE3YVx1MDE3Y1x1MDE3ZVx1MDE4MFx1MDE4 MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTg0XHUwMTg2XHUwMTg4XHUwMThhXHUwMThj XHUwMThlXHUwMTkwXHUwMTkyXHUwMTk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyMFwz XDJcNFw1XDRcMlx1MDBhY1x1MDBiMlx1MDBmYVx1MDBmYVw0XDJcdTAwYjNcdTAwYjYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDBmYVx1MDBmYVw0XDJcblxuXHUwMGZhXHUwMGZhXDVcMlx1 MDBiN1x1MDBiOVx1MDBiZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGJmXHUwMGZhXHUw MGZhXDRcMlx1MDBiYVx1MDBiZlx1MDBmYVx1MDBmYVwzXDJcdTAwODUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDA4NlwzXDJcdTAwOGFcdTAwOGNcM1wyUlZcM1wyXHUwMGZhXHUwMGZiXDNc Mlx1MDBlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGYyXDRcMlx1MDBkM1x1MDBkOVx1 MDBmYVx1MDBmYVwzXDJcdTAwZjZcdTAwZjdcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAwZjhcdTAwZmFcMlx1MGM2ZVwyXHUwMTliXDNcMlwyXDJcNFx1MDFhMFwzXDJcMlwyXDYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDFhMlwzXDJcMlwyXGJcdTAxYWNcM1wyXDJcMlxuXHUw MWFlXDNcMlwyXDJcZlx1MDFiOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMTZc dTAxY2JcM1wyXDJcMlwyMFx1MDFlY1wzXDJcMlwyXDIyXHUwMWVmXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXDJcMlwyNFx1MDFmOFwzXDJcMlwyXDI2XHUwMjAxXDNcMlwyXDJcMzBcdTAy MGFcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDMyXHUwMjEzXDNcMlwyXDJcMzRc dTAyMWNcM1wyXDJcMlwzNlx1MDIyNVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDIg XHUwMjJlXDNcMlwyXDJcIlx1MDIzN1wzXDJcMlwyJFx1MDI0MFwzXDJcMlwyJlx1MDI0OSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDIoXHUwMjUxXDNcMlwyXDIqXHUwMjU5XDNcMlwy XDIsXHUwMjYxXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIi5cdTAyNjlcM1wyXDJc Mlw2MFx1MDI5NVwzXDJcMlwyXDYyXHUwMmEyXDNcMlwyXDJcNjRcdTAyYWEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXDY2XHUwMmFjXDNcMlwyXDI4XHUwMmIxXDNcMlwyXDI6XHUw MmJlXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMjxcdTAyYzBcM1wyXDJcMj5cdTAy ZDFcM1wyXDJcMkBcdTAyZjNcM1wyXDJcMkJcdTAzMmQiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyRFx1MDMyZlwzXDJcMlwyRlx1MDM0OFwzXDJcMlwySFx1MDM0ZlwzXDJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJKXHUwMzU2XDNcMlwyXDJMXHUwMzY2XDNcMlwyXDJOXHUw Mzc2XDNcMlwyXDJQXHUwMzdiXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlJcdTAz ODJcM1wyXDJcMlRcdTAzOTFcM1wyXDJcMlZcdTAzYTdcM1wyXDJcMlhcdTAzYjUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyWlx1MDNlM1wzXDJcMlwyXFxcdTAzZTVcM1wyXDJcMl5c dTAzZWNcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiYFx1MDNmMFwzXDJcMlwyYlx1 MDNmMlwzXDJcMlwyZFx1MDNmYVwzXDJcMlwyZlx1MDQxZVwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXDJoXHUwNDIwXDNcMlwyXDJqXHUwNDNmXDNcMlwyXDJsXHUwNDQyXDNcMlwyXDJu XHUwNDQ1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMnBcdTA0NGZcM1wyXDJcMnJc dTA0NTFcM1wyXDJcMnRcdTA0NzZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidlx1 MDQ3OFwzXDJcMlwyeFx1MDQ4MFwzXDJcMlwyelx1MDQ4MlwzXDJcMlwyfFx1MDRiM1wzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJ+XHUwNGI3XDNcMlwyXDJcdTAwODBcdTA0YjlcM1wy XDJcMlx1MDA4Mlx1MDRmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwODRc dTA1MDhcM1wyXDJcMlx1MDA4Nlx1MDUwYVwzXDJcMlwyXHUwMDg4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1MWZcM1wyXDJcMlx1MDA4YVx1MDUyY1wzXDJcMlwyXHUwMDhjXHUwNTJlXDNc MlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA4ZVx1MDU0OVwzXDJcMlwyXHUwMDkw XHUwNTY0XDNcMlwyXDJcdTAwOTJcdTA1NmNcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc MlwyXHUwMDk0XHUwNTcxXDNcMlwyXDJcdTAwOTZcdTA1NzlcM1wyXDJcMlx1MDA5OFx1MDU3ZSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwOWFcdTA1OTRcM1wyXDJcMlx1MDA5 Y1x1MDU5ZVwzXDJcMlwyXHUwMDllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YThcM1wy XDJcMlx1MDBhMFx1MDVhYVwzXDJcMlwyXHUwMGEyXHUwNWMwXDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDBhNFx1MDVkNlwzXDJcMlwyXHUwMGE2XHUwNWU2XDNcMlwyXDJcdTAw YThcdTA1ZWFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGFhXHUwNWVjXDNc MlwyXDJcdTAwYWNcdTA2MGFcM1wyXDJcMlx1MDBhZVx1MDYxZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTAwYjBcdTA2MWZcM1wyXDJcMlx1MDBiMlx1MDYyM1wzXDJcMlwyXHUw MGI0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MmFcM1wyXDJcMlx1MDBiNlx1MDYyZlwz XDJcMlwyXHUwMGI4XHUwNjMzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBi YVx1MDYzNVwzXDJcMlwyXHUwMGJjXHUwNjRhXDNcMlwyXDJcdTAwYmVcdTA2NThcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGMwXHUwNjVhXDNcMlwyXDJcdTAwYzJcdTA2NmZc M1wyXDJcMlx1MDBjNFx1MDY3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAw YzZcdTA2N2RcM1wyXDJcMlx1MDBjOFx1MDY3ZlwzXDJcMlwyXHUwMGNhIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA2OTVcM1wyXDJcMlx1MDBjY1x1MDZhOVwzXDJcMlwyXHUwMGNlXHUwNmJh XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBkMFx1MDZiY1wzXDJcMlwyXHUw MGQyXHUwNmNlXDNcMlwyXDJcdTAwZDRcdTA2ZDhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlwyXHUwMGQ2XHUwNmRhXDNcMlwyXDJcdTAwZDhcdTA2ZjZcM1wyXDJcMlx1MDBkYVx1MDcw MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZGNcdTA3MDNcM1wyXDJcMlx1 MDBkZVx1MDcyNVwzXDJcMlwyXHUwMGUwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MmZc M1wyXDJcMlx1MDBlMlx1MDczMVwzXDJcMlwyXHUwMGU0XHUwNzQ1XDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDBlNlx1MDc1MVwzXDJcMlwyXHUwMGU4XHUwNzUzXDNcMlwyXDJc dTAwZWFcdTA3YjNcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGVjXHUwN2M3 XDNcMlwyXDJcdTAwZWVcdTA3Y2ZcM1wyXDJcMlx1MDBmMFx1MDdkMSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAwZjJcdTA4MzFcM1wyXDJcMlx1MDBmNFx1MDg0NVwzXDJcMlwy XHUwMGY2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NGRcM1wyXDJcMlx1MDBmOFx1MDg1 M1wzXDJcMlwyXHUwMGZhXHUwODU1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDBmY1x1MDg1YVwzXDJcMlwyXHUwMGZlXHUwODVjXDNcMlwyXDJcdTAxMDBcdTA4NjRcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTAyXHUwODZhXDNcMlwyXDJcdTAxMDRcdTA4 NmNcM1wyXDJcMlx1MDEwNlx1MDg3OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAxMDhcdTA4OGFcM1wyXDJcMlx1MDEwYVx1MDg5Y1wzXDJcMlwyXHUwMTBjIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA4YjZcM1wyXDJcMlx1MDEwZVx1MDhkMFwzXDJcMlwyXHUwMTEwXHUw OGVkXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDExMlx1MDhlZlwzXDJcMlwy XHUwMTE0XHUwOGY5XDNcMlwyXDJcdTAxMTZcdTA5MTJcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlwyXHUwMTE4XHUwOTNiXDNcMlwyXDJcdTAxMWFcdTA5M2ZcM1wyXDJcMlx1MDExY1x1 MDk1NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMWVcdTA5YWZcM1wyXDJc Mlx1MDEyMFx1MDljMFwzXDJcMlwyXHUwMTIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5 YzNcM1wyXDJcMlx1MDEyNFx1MDljNVwzXDJcMlwyXHUwMTI2XHUwOWNkXDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDEyOFx1MDlkNVwzXDJcMlwyXHUwMTJhXHUwOWRkXDNcMlwy XDJcdTAxMmNcdTA5ZTVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTJlXHUw OWVkXDNcMlwyXDJcdTAxMzBcdTA5ZjhcM1wyXDJcMlx1MDEzMlx1MDlmYSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMzRcdTBhMDlcM1wyXDJcMlx1MDEzNlx1MGEwYlwzXDJc MlwyXHUwMTM4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTZcM1wyXDJcMlx1MDEzYVx1 MGExOFwzXDJcMlwyXHUwMTNjXHUwYTIzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDEzZVx1MGEyNVwzXDJcMlwyXHUwMTQwXHUwYTMyXDNcMlwyXDJcdTAxNDJcdTBhMzlcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTQ0XHUwYTRhXDNcMlwyXDJcdTAxNDZc dTBhNGNcM1wyXDJcMlx1MDE0OFx1MGE1MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAxNGFcdTBhNWFcM1wyXDJcMlx1MDE0Y1x1MGE2M1wzXDJcMlwyXHUwMTRlIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTBhNzJcM1wyXDJcMlx1MDE1MFx1MGE3NFwzXDJcMlwyXHUwMTUy XHUwYTc2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE1NFx1MGE4N1wzXDJc MlwyXHUwMTU2XHUwYTk1XDNcMlwyXDJcdTAxNThcdTBhYTNcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMTVhXHUwYWI3XDNcMlwyXDJcdTAxNWNcdTBhYjlcM1wyXDJcMlx1MDE1 ZVx1MGFiZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNjBcdTBhYzRcM1wy XDJcMlx1MDE2Mlx1MGFjOVwzXDJcMlwyXHUwMTY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBhZDRcM1wyXDJcMlx1MDE2Nlx1MGFkNlwzXDJcMlwyXHUwMTY4XHUwYWRiXDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDE2YVx1MGFkZFwzXDJcMlwyXHUwMTZjXHUwYWU4XDNc MlwyXDJcdTAxNmVcdTBhZjRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTcw XHUwYWY2XDNcMlwyXDJcdTAxNzJcdTBhZmJcM1wyXDJcMlx1MDE3NFx1MGIwMCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNzZcdTBiMTVcM1wyXDJcMlx1MDE3OFx1MGIxYVwz XDJcMlwyXHUwMTdhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiMWZcM1wyXDJcMlx1MDE3 Y1x1MGIyYVwzXDJcMlwyXHUwMTdlXHUwYjJmXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDE4MFx1MGIzNFwzXDJcMlwyXHUwMTgyXHUwYjM5XDNcMlwyXDJcdTAxODRcdTBiNGJc MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTg2XHUwYjRkXDNcMlwyXDJcdTAx ODhcdTBiNTZcM1wyXDJcMlx1MDE4YVx1MGI2OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxOGNcdTBiNmFcM1wyXDJcMlx1MDE4ZVx1MGI3M1wzXDJcMlwyXHUwMTkwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTBiN2NcM1wyXDJcMlx1MDE5Mlx1MGI5MFwzXDJcMlwyXHUw MTk0XHUwYjkyXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE5Nlx1MDE5YVw1 XG5cNlwyXHUwMTk3XHUwMTlhXDVcZlw3XDJcdTAxOThcdTAxOWFcNSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDE2XGJcMlx1MDE5OVx1MDE5NlwzXDJcMlwyXHUwMTk5XHUwMTk3XDNcMlwyXDJc dTAxOTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE5OFwzXDJcMlwyXHUwMTlhXHUwMTlk XDNcMlwyXDJcdTAxOWJcdTAxOTlcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MTliXHUwMTljXDNcMlwyXDJcdTAxOWNcdTAxOWVcM1wyXDJcMlx1MDE5ZFx1MDE5YlwzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTAxOWVcdTAxOWZcNS5cMzBcMlx1MDE5ZlwzXDNc MlwyXDJcdTAxYTBcdTAxYTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDNcMlwyXHUwMWEx XDVcM1wyXDJcMlx1MDFhMlx1MDFhNVx0XDJcMlwyXHUwMWEzXHUwMWE0IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcNyFcMlwyXHUwMWE0XHUwMWE2XDdcdTAwZmJcMlwyXHUwMWE1XHUwMWEzXDNc MlwyXDJcdTAxYTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFhNlwzXDJcMlwyXHUwMWE2 XHUwMWE5XDNcMlwyXDJcdTAxYTdcdTAxYThcNyFcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAxYThcdTAxYWFcN1x1MDBmYVwyXDJcdTAxYTlcdTAxYTdcM1wyXDJcMlx1MDFhOVx1MDFh YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYWFcN1wzXDJcMlwyXHUwMWFi XHUwMWFkXDdcdTAwZmFcMlwyXHUwMWFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYWJc M1wyXDJcMlx1MDFhY1x1MDFhZFwzXDJcMlwyXHUwMWFkXHRcM1wyXDJcMlx1MDFhZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMWFmXDdcNlwyXDJcdTAxYWZcdTAxYjBcN1w3XDJcMlx1MDFi MFx1MDFiNFw3XDMwXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwMWIxXHUwMWI1XDVc NFwzXDJcdTAxYjJcdTAxYjVcNVw2XDRcMlx1MDFiM1x1MDFiNSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDVcYlw1XDJcdTAxYjRcdTAxYjFcM1wyXDJcMlx1MDFiNFx1MDFiMlwzXDJcMlwyXHUw MWI0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYjNcM1wyXDJcMlx1MDFiNFx1MDFiNVwz XDJcMlwyXHUwMWI1XHUwMWI2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFi Nlx1MDFiN1w3XDMxXDJcMlx1MDFiN1wxM1wzXDJcMlwyXHUwMWI4XHUwMWJhXDdcdTAwODQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxYjlcdTAxYjhcM1wyXDJcMlx1MDFiOVx1MDFi YVwzXDJcMlwyXHUwMWJhXHUwMWJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDFiYlx1MDFiZFw3UFwyXDJcdTAxYmNcdTAxYmVcN09cMlwyXHUwMWJkXHUwMWJjIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFiZFx1MDFiZVwzXDJcMlwyXHUwMWJlXHUwMWMw XDNcMlwyXDJcdTAxYmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjMVw3XHUwMGZiXDJc Mlx1MDFjMFx1MDFiZlwzXDJcMlwyXHUwMWMwXHUwMWMxXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlx1MDFjMVx1MDFjMlwzXDJcMlwyXHUwMWMyXHUwMWMzXDdcMjZcMlwyXHUwMWMz XHUwMWM0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVwyMFx0XDJcdTAxYzRcdTAxYzZcN1wy N1wyXDJcdTAxYzVcdTAxYzdcN1x1MDBmYlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDFjNlx1MDFjNVwzXDJcMlwyXHUwMWM2XHUwMWM3XDNcMlwyXDJcdTAxYzdcdTAxYzhcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWM4XHUwMWM5XDcgXDJcMlx1MDFjOVxyXDNc MlwyXDJcdTAxY2FcdTAxY2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMDg0XDJcMlx1 MDFjYlx1MDFjYVwzXDJcMlwyXHUwMWNiXHUwMWNjXDNcMlwyXDJcdTAxY2MiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDFjZFwzXDJcMlwyXHUwMWNkXHUwMWNmXDdRXDJcMlx1MDFjZVx1MDFk MFw3T1wyXDJcdTAxY2YiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjZVwzXDJcMlwyXHUw MWNmXHUwMWQwXDNcMlwyXDJcdTAxZDBcdTAxZDJcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMWQxXHUwMWQzXDdcdTAwZmJcMlwyXHUwMWQyXHUwMWQxXDNcMlwyXDJcdTAxZDJc dTAxZDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWQzXHUwMWQ0XDNcMlwy XDJcdTAxZDRcdTAxZDVcN1wyNlwyXDJcdTAxZDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDFkNlw1XDIwXHRcMlx1MDFkNlx1MDFkOFw3XDI3XDJcMlx1MDFkN1x1MDFkOVw3XHUwMGZiIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMWQ4XHUwMWQ3XDNcMlwyXDJcdTAxZDhcdTAx ZDlcM1wyXDJcMlx1MDFkOVx1MDFkYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAxZGFcdTAxZGJcNyBcMlwyXHUwMWRiXDE3XDNcMlwyXDJcdTAxZGNcdTAxZWIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw1XDIyXG5cMlx1MDFkZFx1MDFlYlw1XDI0XDEzXDJcdTAxZGVcdTAx ZWJcNVwyNlxmXDJcdTAxZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFlYlw1XDMwXHJc Mlx1MDFlMFx1MDFlYlw1XDMyXDE2XDJcdTAxZTFcdTAxZWJcNVwzNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDE3XDJcdTAxZTJcdTAxZWJcNVwzNlwyMFwyXHUwMWUzXHUwMWViXDUgXDIxXDJc dTAxZTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFlYlw1XCJcMjJcMlx1MDFlNVx1MDFl Ylw1JFwyM1wyXHUwMWU2XHUwMWViXDUmXDI0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1 MDFlN1x1MDFlYlw1KFwyNVwyXHUwMWU4XHUwMWViXDUqXDI2XDJcdTAxZTlcdTAxZWIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw1LFwyN1wyXHUwMWVhXHUwMWRjXDNcMlwyXDJcdTAxZWFcdTAx ZGRcM1wyXDJcMlx1MDFlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWRlXDNcMlwyXDJc dTAxZWFcdTAxZGZcM1wyXDJcMlx1MDFlYVx1MDFlMFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAxZWFcdTAxZTFcM1wyXDJcMlx1MDFlYVx1MDFlMlwzXDJcMlwyXHUwMWVhXHUw MWUzXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDFlYVx1MDFlNFwzXDJcMlwy XHUwMWVhXHUwMWU1XDNcMlwyXDJcdTAxZWFcdTAxZTYiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwMWVhXHUwMWU3XDNcMlwyXDJcdTAxZWFcdTAxZThcM1wyXDJcMlx1MDFlYSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWU5XDNcMlwyXDJcdTAxZWJcdTAxZWVcM1wyXDJc Mlx1MDFlY1x1MDFlYVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZWNcdTAx ZWRcM1wyXDJcMlx1MDFlZFwyMVwzXDJcMlwyXHUwMWVlXHUwMWVjXDNcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlx1MDFlZlx1MDFmMFw3U1wyXDJcdTAxZjBcdTAxZjRcN1x1MDBmYlwy XDJcdTAxZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFmMlw3XDMyXDJcMlx1MDFmMlx1 MDFmM1w3XHUwMGZhXDJcMlx1MDFmM1x1MDFmNVw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MzNcMlwyXHUwMWY0XHUwMWYxXDNcMlwyXDJcdTAxZjRcdTAxZjVcM1wyXDJcMlx1MDFmNSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWY2XDNcMlwyXDJcdTAxZjZcdTAxZjdcNyBcMlwyXHUw MWY3XDIzXDNcMlwyXDJcdTAxZjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFmOVw3VFwy XDJcdTAxZjlcdTAxZmRcN1x1MDBmYlwyXDJcdTAxZmFcdTAxZmJcN1wzMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlx1MDFmYlx1MDFmY1w3XHUwMGZhXDJcMlx1MDFmY1x1MDFmZVw3XDMz XDJcMlx1MDFmZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWZhXDNcMlwyXDJcdTAxZmRc dTAxZmVcM1wyXDJcMlx1MDFmZVx1MDFmZlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAxZmZcdTAyMDBcNyBcMlwyXHUwMjAwXDI1XDNcMlwyXDJcdTAyMDFcdTAyMDJcN1VcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyMDJcdTAyMDZcN1x1MDBmYlwyXDJcdTAyMDNc dTAyMDRcN1wzMlwyXDJcdTAyMDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIwNVw3XHUw MGZhXDJcMlx1MDIwNVx1MDIwN1w3XDMzXDJcMlx1MDIwNlx1MDIwM1wzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXDJcdTAyMDZcdTAyMDdcM1wyXDJcMlx1MDIwN1x1MDIwOFwzXDJcMlwy XHUwMjA4XHUwMjA5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyBcMlwyXHUwMjA5XDI3XDNc MlwyXDJcdTAyMGFcdTAyMGJcN1ZcMlwyXHUwMjBiXHUwMjBmIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN1x1MDBmYlwyXDJcdTAyMGNcdTAyMGRcN1wzMlwyXDJcdTAyMGRcdTAyMGVcN1x1MDBm YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDIwZVx1MDIxMFw3XDMzXDJcMlx1MDIw Zlx1MDIwY1wzXDJcMlwyXHUwMjBmXHUwMjEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlx1MDIxMFx1MDIxMVwzXDJcMlwyXHUwMjExXHUwMjEyXDcgXDJcMlx1MDIxMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDMxXDNcMlwyXDJcdTAyMTNcdTAyMTRcN1JcMlwyXHUwMjE0XHUw MjE4XDdcdTAwZmJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyMTVcdTAyMTZcN1wz MlwyXDJcdTAyMTZcdTAyMTdcN1x1MDBmYVwyXDJcdTAyMTdcdTAyMTkiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3XDMzXDJcMlx1MDIxOFx1MDIxNVwzXDJcMlwyXHUwMjE4XHUwMjE5XDNcMlwy XDJcdTAyMTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIxYVwzXDJcMlwyXHUwMjFhXHUw MjFiXDcgXDJcMlx1MDIxYlwzM1wzXDJcMlwyXHUwMjFjIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAyMWRcN1dcMlwyXHUwMjFkXHUwMjIxXDdcdTAwZmJcMlwyXHUwMjFlXHUwMjFmXDdcMzIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyMWZcdTAyMjBcN1x1MDBmYVwyXDJcdTAy MjBcdTAyMjJcN1wzM1wyXDJcdTAyMjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIxZVwz XDJcMlwyXHUwMjIxXHUwMjIyXDNcMlwyXDJcdTAyMjJcdTAyMjNcM1wyXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMjIzXHUwMjI0XDcgXDJcMlx1MDIyNFwzNVwzXDJcMlwyXHUwMjI1 XHUwMjI2XDdYXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwMjI2XHUwMjJhXDdcdTAw ZmJcMlwyXHUwMjI3XHUwMjI4XDdcMzJcMlwyXHUwMjI4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAyMjlcN1x1MDBmYVwyXDJcdTAyMjlcdTAyMmJcN1wzM1wyXDJcdTAyMmFcdTAyMjdcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjJhXHUwMjJiXDNcMlwyXDJcdTAyMmJc dTAyMmNcM1wyXDJcMlx1MDIyY1x1MDIyZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJc Mlx1MDIyZFwzN1wzXDJcMlwyXHUwMjJlXHUwMjJmXDdZXDJcMlx1MDIyZlx1MDIzMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwMjMwXHUwMjMxXDdcMzJcMlwyXHUwMjMx XHUwMjMyXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyMzJcdTAyMzRc N1wzM1wyXDJcdTAyMzNcdTAyMzBcM1wyXDJcMlx1MDIzM1x1MDIzNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAyMzRcdTAyMzVcM1wyXDJcMlx1MDIzNVx1MDIzNlw3IFwyXDJc dTAyMzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIiFcM1wyXDJcMlx1MDIzN1x1MDIzOFw3Wlwy XDJcdTAyMzhcdTAyM2NcN1x1MDBmYlwyXDJcdTAyMzkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDIzYVw3XDMyXDJcMlx1MDIzYVx1MDIzYlw3XHUwMGZhXDJcMlx1MDIzYlx1MDIzZFw3IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMzNcMlwyXHUwMjNjXHUwMjM5XDNcMlwyXDJcdTAyM2Nc dTAyM2RcM1wyXDJcMlx1MDIzZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjNlXDNcMlwy XDJcdTAyM2VcdTAyM2ZcNyBcMlwyXHUwMjNmI1wzXDJcMlwyXHUwMjQwIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAyNDFcN1x1MDBmYlwyXDJcdTAyNDFcdTAyNDVcN1x1MDBmYlwyXDJcdTAy NDJcdTAyNDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDI0M1x1MDI0NFw3 XHUwMGZhXDJcMlx1MDI0NFx1MDI0Nlw3XDMzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMjQ1XHUwMjQyXDNcMlwyXDJcdTAyNDVcdTAyNDZcM1wyXDJcMlx1MDI0Nlx1MDI0N1wzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTAyNDdcdTAyNDhcNyBcMlwyXHUwMjQ4JVwz XDJcMlwyXHUwMjQ5XHUwMjRiXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlNcMlwyXHUwMjRh XHUwMjRjXDdcdTAwZmJcMlwyXHUwMjRiXHUwMjRhXDNcMlwyXDJcdTAyNGIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDI0Y1wzXDJcMlwyXHUwMjRjXHUwMjRkXDNcMlwyXDJcdTAyNGRcdTAy NGVcN1wzNlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDI0ZVx1MDI0Zlw3XHUwMGZh XDJcMlx1MDI0Zlx1MDI1MFw3IFwyXDJcdTAyNTBcJyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAyNTFcdTAyNTNcN1RcMlwyXHUwMjUyXHUwMjU0XDdcdTAwZmJcMlwyXHUwMjUz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyNTJcM1wyXDJcMlx1MDI1M1x1MDI1NFwzXDJc MlwyXHUwMjU0XHUwMjU1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDI1NVx1 MDI1Nlw3XDM2XDJcMlx1MDI1Nlx1MDI1N1w3XHUwMGZhXDJcMlx1MDI1N1x1MDI1OCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDI1OClcM1wyXDJcMlx1MDI1OVx1MDI1Ylw3VVwy XDJcdTAyNWFcdTAyNWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZiXDJcMlx1MDI1 Ylx1MDI1YVwzXDJcMlwyXHUwMjViXHUwMjVjXDNcMlwyXDJcdTAyNWMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDI1ZFwzXDJcMlwyXHUwMjVkXHUwMjVlXDdcMzZcMlwyXHUwMjVlXHUwMjVm XDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyNWZcdTAyNjBcNyBcMlwy XHUwMjYwK1wzXDJcMlwyXHUwMjYxXHUwMjYzXDdWIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXHUwMjYyXHUwMjY0XDdcdTAwZmJcMlwyXHUwMjYzXHUwMjYyXDNcMlwyXDJcdTAyNjMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDI2NFwzXDJcMlwyXHUwMjY0XHUwMjY1XDNcMlwyXDJc dTAyNjVcdTAyNjZcN1wzNlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDI2Nlx1MDI2 N1w3XHUwMGZhXDJcMlx1MDI2N1x1MDI2OFw3IFwyXDJcdTAyNjgtXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXDJcMlx1MDI2OVx1MDI2YVw3K1wyXDJcdTAyNmFcdTAyNmJcN1tcMlwyXHUw MjZiXHUwMjZjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDI2Y1x1MDI2ZFw1 TFwnXDJcdTAyNmRcdTAyNmVcNyFcMlwyXHUwMjZlXHUwMjZmIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNy5cMlwyXHUwMjZmXHUwMjcwXDdcYlwyXDJcdTAyNzBcdTAyNzFcN1x1MDBlY1wyXDJc dTAyNzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDI3Mlw3XDMwXDJcMlx1MDI3Mlx1MDI3 M1w3XHUwMGZhXDJcMlx1MDI3M1x1MDI3NFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMzFc MlwyXHUwMjc0XHUwMjc1XDchXDJcMlx1MDI3NVx1MDI3Nlw3PVwyXDJcdTAyNzZcdTAyNzciKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwMjc3XHUwMjc4XDdcdTAwZWNcMlwyXHUw Mjc4XHUwMjc5XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyNzlcdTAyN2Fc N1x1MDBmYVwyXDJcdTAyN2FcdTAyN2JcN1wzMVwyXDJcdTAyN2JcdTAyODEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3IVwyXDJcdTAyN2NcdTAyN2RcN1x1MDA4M1wyXDJcdTAyN2RcdTAyN2Vc N1xiXDJcMlx1MDI3ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjdmXDVcNjBcMzFcMlx1 MDI3Zlx1MDI4MFw3IVwyXDJcdTAyODBcdTAyODJcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXHUwMjgxXHUwMjdjXDNcMlwyXDJcdTAyODFcdTAyODJcM1wyXDJcMlx1MDI4Mlx1MDI4 OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyODNcdTAyODRcN1x1MDA4MVwy XDJcdTAyODRcdTAyODVcN1xiXDJcMlx1MDI4NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw Mjg2XDVcNjJcMzJcMlx1MDI4Nlx1MDI4N1w3IVwyXDJcdTAyODdcdTAyODlcM1wyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXHUwMjg4XHUwMjgzXDNcMlwyXDJcdTAyODhcdTAyODlcM1wy XDJcMlx1MDI4OVx1MDI4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyOGFc dTAyOGJcN1x1MDA4MlwyXDJcdTAyOGJcdTAyOGNcN1xiXDJcMlx1MDI4YyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMjhkXDVcNjZcMzRcMlx1MDI4ZFx1MDI4ZVw3IVwyXDJcdTAyOGVcdTAy OTBcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwMjhmXHUwMjhhXDNcMlwyXDJc dTAyOGZcdTAyOTBcM1wyXDJcMlx1MDI5MFx1MDI5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAyOTFcdTAyOTJcNThcMzVcMlx1MDI5Mlx1MDI5M1w3LVwyXDJcdTAyOTMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDI5NFw3IFwyXDJcdTAyOTQvXDNcMlwyXDJcdTAyOTVc dTAyOThcNUxcJ1wyXHUwMjk2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOTdcNyhcMlwy XHUwMjk3XHUwMjk5XDVMXCdcMlx1MDI5OFx1MDI5NlwzXDJcMlwyXHUwMjk4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyOTlcM1wyXDJcMlx1MDI5OVx1MDI5Y1wzXDJcMlwyXHUwMjlhXHUw MjliXDcoXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjliXHUwMjlkXDVMXCdcMlx1 MDI5Y1x1MDI5YVwzXDJcMlwyXHUwMjljXHUwMjlkXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcMlx1MDI5ZFx1MDJhMFwzXDJcMlwyXHUwMjllXHUwMjlmXDcoXDJcMlx1MDI5Zlx1MDJh MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVMXCdcMlx1MDJhMFx1MDI5ZVwzXDJcMlwyXHUw MmEwXHUwMmExXDNcMlwyXDJcdTAyYTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2MVwzXDJc MlwyXHUwMmEyXHUwMmE3XDVcNjRcMzNcMlx1MDJhM1x1MDJhNFw3KFwyXDJcdTAyYTQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDJhNlw1XDY0XDMzXDJcdTAyYTVcdTAyYTNcM1wyXDJcMlx1 MDJhNlx1MDJhOVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyYTdcdTAyYTVc M1wyXDJcMlx1MDJhN1x1MDJhOFwzXDJcMlwyXHUwMmE4XDYzXDMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcMlx1MDJhOVx1MDJhN1wzXDJcMlwyXHUwMmFhXHUwMmFiXHRcM1wyXDJcdTAy YWJcNjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmFjXHUwMmFkXHRcNFwy XDJcdTAyYWRcNjdcM1wyXDJcMlx1MDJhZVx1MDJiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDU6XDM2XDJcdTAyYWZcdTAyYWVcM1wyXDJcMlx1MDJiMFx1MDJiM1wzXDJcMlwyXHUwMmIxIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYWZcM1wyXDJcMlx1MDJiMVx1MDJiMlwzXDJcMlwy XHUwMmIyOVwzXDJcMlwyXHUwMmIzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYjFcM1wy XDJcMlx1MDJiNFx1MDJiZlw1ZFw2M1wyXHUwMmI1XHUwMmJmXDVoXDY1XDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDJiNlx1MDJiZlw1alw2NlwyXHUwMmI3XHUwMmJmXDU+IFwyXHUwMmI4 XHUwMmJmXDVAIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIhXDJcdTAyYjlcdTAyYmZcNUQjXDJc dTAyYmFcdTAyYmZcNTxcMzdcMlx1MDJiYlx1MDJiZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDVGJFwyXHUwMmJjXHUwMmJmXDVIJVwyXHUwMmJkXHUwMmJmXDVcdTAxMWNcdTAwOGZcMlx1MDJi ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmI0XDNcMlwyXDJcdTAyYmVcdTAyYjVcM1wy XDJcMlx1MDJiZVx1MDJiNlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYmVc dTAyYjdcM1wyXDJcMlx1MDJiZVx1MDJiOFwzXDJcMlwyXHUwMmJlXHUwMmI5XDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDJiZVx1MDJiYVwzXDJcMlwyXHUwMmJlXHUwMmJiXDNc MlwyXDJcdTAyYmVcdTAyYmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmJl XHUwMmJkXDNcMlwyXDJcdTAyYmY7XDNcMlwyXDJcdTAyYzBcdTAyYzEiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3XHUwMDliXDJcMlx1MDJjMVx1MDJjMlw3XHUwMGZiXDJcMlx1MDJjMlx1MDJj M1w3IVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDJjM1x1MDJjNFw3XDYyXDJcMlx1 MDJjNFx1MDJjNVw3XGJcMlwyXHUwMmM1XHUwMmM2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N1x1MDBlY1wyXDJcdTAyYzZcdTAyYzdcN1wzMFwyXDJcdTAyYzdcdTAyYzhcN1x1MDBmYSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDJjOFx1MDJjZFw3XDMxXDJcMlx1MDJjOVx1MDJj YVw3IVwyXDJcdTAyY2FcdTAyY2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMDljXDJc Mlx1MDJjYlx1MDJjY1w3XGJcMlwyXHUwMmNjXHUwMmNlXDdcdTAwZmFcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcdTAyY2RcdTAyYzlcM1wyXDJcMlx1MDJjZFx1MDJjZVwzXDJcMlwyXHUw MmNlXHUwMmNmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDJjZlx1MDJkMFw3 IFwyXDJcdTAyZDA9XDNcMlwyXDJcdTAyZDFcdTAyZTIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3XHUwMDlkXDJcMlx1MDJkMlx1MDJkM1w3XHUwMGZiXDJcMlx1MDJkM1x1MDJlM1w3IVwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDJkNFx1MDJkNVw3VlwyXDJcdTAyZDVcdTAyZTNc NyFcMlwyXHUwMmQ2XHUwMmQ3XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlVcMlwyXHUwMmQ3 XHUwMmUzXDchXDJcMlx1MDJkOFx1MDJkOVw3VFwyXDJcdTAyZDlcdTAyZTMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3IVwyXDJcdTAyZGFcdTAyZGJcN1NcMlwyXHUwMmRiXHUwMmUzXDchXDJc Mlx1MDJkY1x1MDJkZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdYXDJcMlx1MDJkZFx1MDJl M1w3IVwyXDJcdTAyZGVcdTAyZGZcN1lcMlwyXHUwMmRmXHUwMmUzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcNyFcMlwyXHUwMmUwXHUwMmUxXDdaXDJcMlx1MDJlMVx1MDJlM1w3IVwyXDJcdTAy ZTJcdTAyZDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmUyXHUwMmQ0XDNc MlwyXDJcdTAyZTJcdTAyZDZcM1wyXDJcMlx1MDJlMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMmQ4XDNcMlwyXDJcdTAyZTJcdTAyZGFcM1wyXDJcMlx1MDJlMlx1MDJkY1wzXDJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZTJcdTAyZGVcM1wyXDJcMlx1MDJlMlx1MDJlMFwz XDJcMlwyXHUwMmUzXHUwMmU4XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDJl NFx1MDJlNVw3XHUwMDhmXDJcMlx1MDJlNVx1MDJlNlw3XGJcMlwyXHUwMmU2IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyZTdcN1x1MDBmYVwyXDJcdTAyZTdcdTAyZTlcNyFcMlwyXHUwMmU4 XHUwMmU0XDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDJlOFx1MDJlOVwzXDJc MlwyXHUwMmU5XHUwMmVhXDNcMlwyXDJcdTAyZWFcdTAyZWIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3XHUwMDhlXDJcMlx1MDJlYlx1MDJlY1w3XGJcMlwyXHUwMmVjXHUwMmVkXDdcdTAwZmJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyZWRcdTAyZWVcNyFcMlwyXHUwMmVlXHUw MmVmXDdbXDJcMlx1MDJlZlx1MDJmMFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcYlwyXDJc dTAyZjBcdTAyZjFcNUxcJ1wyXHUwMmYxXHUwMmYyXDcgXDJcMlx1MDJmMj9cMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMmYzXHUwMzA0XDdcdTAwOWVcMlwyXHUwMmY0XHUwMmY1 XDdcdTAwZmJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZjVcdTAzMDVcNyFcMlwy XHUwMmY2XHUwMmY3XDdWXDJcMlx1MDJmN1x1MDMwNVw3ISIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlx1MDJmOFx1MDJmOVw3VVwyXDJcdTAyZjlcdTAzMDVcNyFcMlwyXHUwMmZhXHUwMmZi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1RcMlwyXHUwMmZiXHUwMzA1XDchXDJcMlx1MDJm Y1x1MDJmZFw3U1wyXDJcdTAyZmRcdTAzMDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwy XDJcdTAyZmVcdTAyZmZcN1hcMlwyXHUwMmZmXHUwMzA1XDchXDJcMlx1MDMwMFx1MDMwMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdZXDJcMlx1MDMwMVx1MDMwNVw3IVwyXDJcdTAzMDJcdTAz MDNcN1pcMlwyXHUwMzAzXHUwMzA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUw MzA0XHUwMmY0XDNcMlwyXDJcdTAzMDRcdTAyZjZcM1wyXDJcMlx1MDMwNCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMmY4XDNcMlwyXDJcdTAzMDRcdTAyZmFcM1wyXDJcMlx1MDMwNFx1MDJm Y1wzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDRcdTAyZmVcM1wyXDJcMlx1 MDMwNFx1MDMwMFwzXDJcMlwyXHUwMzA0XHUwMzAyXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcMlx1MDMwNVx1MDMwYVwzXDJcMlwyXHUwMzA2XHUwMzA3XDdcdTAwOGZcMlwyXHUwMzA3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDhcN1xiXDJcMlx1MDMwOFx1MDMwOVw3XHUw MGZhXDJcMlx1MDMwOVx1MDMwYlw3ISIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDMw YVx1MDMwNlwzXDJcMlwyXHUwMzBhXHUwMzBiXDNcMlwyXDJcdTAzMGJcdTAzMGMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzBjXHUwMzBkXDdcdTAwOWNcMlwyXHUwMzBkXHUw MzBlXDdcYlwyXDJcdTAzMGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxM1w1QlwiXDJc dTAzMGZcdTAzMTBcNyhcMlwyXHUwMzEwXHUwMzEyXDVCXCJcMlx1MDMxMSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMzBmXDNcMlwyXDJcdTAzMTJcdTAzMTVcM1wyXDJcMlx1MDMxM1x1MDMx MVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMTNcdTAzMTRcM1wyXDJcMlx1 MDMxNFx1MDMxNlwzXDJcMlwyXHUwMzE1XHUwMzEzXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcMlx1MDMxNlx1MDMyNlw3IVwyXDJcdTAzMTdcdTAzMThcN1x1MDA4ZVwyXDJcdTAzMTgi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxOVw3XGJcMlwyXHUwMzE5XHUwMzFhXDdcdTAw ZmJcMlwyXHUwMzFhXHUwMzI3XDchIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzFi XHUwMzFjXDdcdTAwOGVcMlwyXHUwMzFjXHUwMzFkXDdcYlwyXDJcdTAzMWQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDMxZVw3XHUwMGVjXDJcMlx1MDMxZVx1MDMxZlw3XDMwXDJcMlx1MDMx Zlx1MDMyMFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwMzIwXHUwMzIx XDdcMzFcMlwyXHUwMzIxXHUwMzIyXDchXDJcMlx1MDMyMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzIzXDdcdTAwOWZcMlwyXHUwMzIzXHUwMzI0XDdcYlwyXDJcdTAzMjRcdTAzMjVcN1x1 MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDMyNVx1MDMyN1w3IVwyXDJcdTAz MjZcdTAzMTdcM1wyXDJcMlx1MDMyNlx1MDMxYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAzMjdcdTAzMjhcM1wyXDJcMlx1MDMyOFx1MDMyOVw3W1wyXDJcdTAzMjkiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDMyYVw3XGJcMlwyXHUwMzJhXHUwMzJiXDVMXCdcMlx1MDMy Ylx1MDMyY1w3IFwyXDJcdTAzMmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkFcM1wyXDJcMlx1 MDMyZFx1MDMyZVw3XHUwMGZhXDJcMlx1MDMyZUNcM1wyXDJcMlx1MDMyZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMzMwXDdcdTAwYTBcMlwyXHUwMzMwXHUwMzMxXDdcdTAwZmJcMlwyXHUw MzMxXHUwMzM2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwMzMyXHUwMzMzXDdc dTAwOGZcMlwyXHUwMzMzXHUwMzM0XDdcYlwyXDJcdTAzMzQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDMzNVw3XHUwMGZhXDJcMlx1MDMzNVx1MDMzN1w3IVwyXDJcdTAzMzZcdTAzMzJcM1wy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzM2XHUwMzM3XDNcMlwyXDJcdTAzMzdc dTAzM2ZcM1wyXDJcMlx1MDMzOFx1MDMzOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAw OGVcMlwyXHUwMzM5XHUwMzNhXDdcYlwyXDJcdTAzM2FcdTAzM2JcN1x1MDBlY1wyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlx1MDMzYlx1MDMzY1w3XDMwXDJcMlx1MDMzY1x1MDMzZFw3XHUw MGZhXDJcMlx1MDMzZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzNlXDdcMzFcMlwyXHUw MzNlXHUwMzQwXDchXDJcMlx1MDMzZlx1MDMzOFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAzNDBcdTAzNDFcM1wyXDJcMlx1MDM0MVx1MDMzZlwzXDJcMlwyXHUwMzQxXHUwMzQy XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDM0Mlx1MDM0M1wzXDJcMlwyXHUw MzQzXHUwMzQ0XDdbXDJcMlx1MDM0NFx1MDM0NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdc YlwyXDJcdTAzNDVcdTAzNDZcNUxcJ1wyXHUwMzQ2XHUwMzQ3XDcgXDJcMlx1MDM0N0UiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzQ4XHUwMzQ5XDdsXDJcMlx1MDM0OVx1MDM0 YVw1XHUwMTI0XHUwMDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDM0YVx1MDM0Ylw3 IFwyXDJcdTAzNGJcdTAzNGNcNThcMzVcMlx1MDM0Y1x1MDM0ZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdzXDJcMlx1MDM0ZFx1MDM0ZVw3IFwyXDJcdTAzNGVHXDNcMlwyXDJcdTAzNGZcdTAz NTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3a1wyXDJcdTAzNTBcdTAzNTFcNVx1MDEyNFx1 MDA5M1wyXHUwMzUxXHUwMzUyXDcgXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzUy XHUwMzUzXDU4XDM1XDJcdTAzNTNcdTAzNTRcN3NcMlwyXHUwMzU0XHUwMzU1XDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIiBcMlwyXHUwMzU1SVwzXDJcMlwyXHUwMzU2XHUwMzU3XDdcdTAwZmFc MlwyXHUwMzU3XHUwMzU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwMzU4XHUw MzU5XDdcdTAwZmFcMlwyXHUwMzU5XHUwMzVhXDchXDJcMlx1MDM1YSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMzViXDdcdTAwZmFcMlwyXHUwMzViXHUwMzVjXDchXDJcMlx1MDM1Y1x1MDM1 ZFw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzVkXHUwMzVlXDchXDJc Mlx1MDM1ZVx1MDM1Zlw3XHUwMGZhXDJcMlx1MDM1ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMzYwXDchXDJcMlx1MDM2MFx1MDM2MVw3XHUwMGZhXDJcMlx1MDM2MVx1MDM2Mlw3IVwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDM2Mlx1MDM2M1w3XHUwMGZhXDJcMlx1MDM2M1x1 MDM2NFw3IVwyXDJcdTAzNjRcdTAzNjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZh XDJcMlx1MDM2NUtcM1wyXDJcMlx1MDM2Nlx1MDM2N1w3XDI2XDJcMlx1MDM2NyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMzY4XDdcdTAwZmFcMlwyXHUwMzY4XHUwMzY5XDchXDJcMlx1MDM2 OVx1MDM2YVw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzZhXHUwMzZi XDchXDJcMlx1MDM2Ylx1MDM2Y1w3XHUwMGZhXDJcMlx1MDM2YyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMzcyXDchXDJcMlx1MDM2ZFx1MDM2ZVw3XDI2XDJcMlx1MDM2ZVx1MDM2Zlw1SiZc Mlx1MDM2ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzcwXDdcMjdcMlwyXHUwMzcwXHUw MzczXDNcMlwyXDJcdTAzNzFcdTAzNzNcNUomXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDM3Mlx1MDM2ZFwzXDJcMlwyXHUwMzcyXHUwMzcxXDNcMlwyXDJcdTAzNzNcdTAzNzRcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzc0XHUwMzc1XDdcMjdcMlwyXHUwMzc1TVwz XDJcMlwyXHUwMzc2XHUwMzc3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJc dTAzNzdcdTAzNzhcN1wzMFwyXDJcdTAzNzhcdTAzNzlcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlx1MDM3OVx1MDM3YVw3XDMxXDJcMlx1MDM3YU9cM1wyXDJcMlx1MDM3Ylx1 MDM3Y1w1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJSKlwyXHUwMzdjXHUwMzdkXDVUK1wyXHUw MzdkUVwzXDJcMlwyXHUwMzdlXHUwMzdmXDdcdTAwOGUiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTAzN2ZcdTAzODBcN1xiXDJcMlx1MDM4MFx1MDM4MVw3XHUwMGZiXDJcMlx1MDM4MSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzgzXDchXDJcMlx1MDM4Mlx1MDM3ZVwzXDJcMlwy XHUwMzgyXHUwMzgzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM4M1x1MDM4 OVwzXDJcMlwyXHUwMzg0XHUwMzg1XDdcdTAwOGZcMlwyXHUwMzg1XHUwMzg2IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDM4Nlx1MDM4N1w1WC1cMlx1MDM4N1x1MDM4OFw3IVwy XDJcdTAzODhcdTAzOGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzg5XHUw Mzg0XDNcMlwyXDJcdTAzODlcdTAzOGFcM1wyXDJcMlx1MDM4YSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMzhmXDNcMlwyXDJcdTAzOGJcdTAzOGNcN1x1MDA5MVwyXDJcdTAzOGNcdTAzOGRc N1xiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzhkXHUwMzhlXDdcdTAwZmFcMlwy XHUwMzhlXHUwMzkwXDchXDJcMlx1MDM4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzhi XDNcMlwyXDJcdTAzOGZcdTAzOTBcM1wyXDJcMlx1MDM5MFNcM1wyXDJcMlx1MDM5MSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMzkyXDdcNjJcMlwyXHUwMzkyXHUwMzkzXDdcYlwyXDJcdTAz OTNcdTAzOTRcN1x1MDBlYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDM5NFx1MDM5 NVw3XDMwXDJcMlx1MDM5NVx1MDM5Nlw3XHUwMGZhXDJcMlx1MDM5NiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMzk3XDdcMzFcMlwyXHUwMzk3XHUwMzk4XDchXDJcMlx1MDM5OFx1MDM5OVw3 PVwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM5OVx1MDM5YVw3XGJcMlwyXHUwMzlh XHUwMzliXDdcdTAwZWNcMlwyXHUwMzliXHUwMzljIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N1wzMFwyXDJcdTAzOWNcdTAzOWRcN1x1MDBmYVwyXDJcdTAzOWRcdTAzOWVcN1wzMVwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDM5ZVVcM1wyXDJcMlx1MDM5Zlx1MDNhOFw3flwyXDJc dTAzYTBcdTAzYThcN3lcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTFcdTAzYThc N3tcMlwyXHUwM2EyXHUwM2E4XDdcdTAwODBcMlwyXHUwM2EzXHUwM2E4IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN3xcMlwyXHUwM2E0XHUwM2E4XDdcMTc3XDJcMlx1MDNhNVx1MDNhOFw3elwy XDJcdTAzYTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNhOFw3fVwyXDJcdTAzYTdcdTAz OWZcM1wyXDJcMlx1MDNhN1x1MDNhMFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAzYTdcdTAzYTFcM1wyXDJcMlx1MDNhN1x1MDNhMlwzXDJcMlwyXHUwM2E3XHUwM2EzXDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDNhN1x1MDNhNFwzXDJcMlwyXHUwM2E3XHUw M2E1XDNcMlwyXDJcdTAzYTdcdTAzYTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwM2E4V1wzXDJcMlwyXHUwM2E5XHUwM2FhXDdcdTAwZmJcMlwyXHUwM2FhIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzYWJcN1wzMlwyXDJcdTAzYWJcdTAzYWNcN1x1MDBmYVwyXDJcdTAz YWNcdTAzYjZcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDMzXDJcMlx1MDNhZFx1MDNiMlw3 XHUwMGZiXDJcMlx1MDNhZVx1MDNhZlw3XDM0XDJcMlx1MDNhZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwM2IxXDVcdTAxNWNcdTAwYWZcMlx1MDNiMFx1MDNhZVwzXDJcMlwyXHUwM2IxXHUw M2I0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNiMlx1MDNiMFwzXDJcMlwy XHUwM2IyXHUwM2IzXDNcMlwyXDJcdTAzYjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNi NlwzXDJcMlwyXHUwM2I0XHUwM2IyXDNcMlwyXDJcdTAzYjVcdTAzYTlcM1wyXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwM2I1XHUwM2FkXDNcMlwyXDJcdTAzYjZZXDNcMlwyXDJcdTAz YjdcdTAzYjlcN1wzNVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDNiOFx1MDNiN1wz XDJcMlwyXHUwM2I4XHUwM2I5XDNcMlwyXDJcdTAzYjlcdTAzYmEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwM2JhXHUwM2U0XDdcdTAwZmFcMlwyXHUwM2JiXHUwM2U0XDdcdTAw ZDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAzYmNcdTAzZTRcN1x1MDBkNFwyXDJc dTAzYmRcdTAzZTRcN1x1MDBkNVwyXDJcdTAzYmUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDNlNFw3XHUwMGQ2XDJcMlx1MDNiZlx1MDNlNFw3XHUwMGQ3XDJcMlx1MDNjMFx1MDNjMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwM2MxXHUwM2MyXDdcMzZcMlwyXHUw M2MyXHUwM2MzXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAzYzNcdTAz YzRcN1wzNlwyXDJcdTAzYzRcdTAzZTRcN1x1MDBmYVwyXDJcdTAzYzUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDNjNlw3XHUwMGZhXDJcMlx1MDNjNlx1MDNjN1w3XDM3XDJcMlx1MDNjN1x1 MDNjOFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwM2M4XHUwM2M5XDdc MzdcMlwyXHUwM2M5XHUwM2U0XDdcdTAwZmFcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc dTAzY2FcdTAzY2JcN1x1MDBmYVwyXDJcdTAzY2JcdTAzY2NcNyBcMlwyXHUwM2NjXHUwM2NkIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTAzY2RcdTAzY2VcNyBcMlwyXHUw M2NlXHUwM2NmXDVMXCdcMlx1MDNjZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2QwXDcg XDJcMlx1MDNkMFx1MDNkMVw3XHUwMGVjXDJcMlx1MDNkMVx1MDNkMlw3XDMwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwM2QyXHUwM2QzXDdcdTAwZmFcMlwyXHUwM2QzXHUwM2Q0XDdc MzFcMlwyXHUwM2Q0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZTRcM1wyXDJcMlx1MDNk NVx1MDNkNlw3XHUwMGVjXDJcMlx1MDNkNlx1MDNkN1w3XDMwIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXHUwM2Q3XHUwM2Q4XDdcdTAwZmFcMlwyXHUwM2Q4XHUwM2U0XDdcMzFcMlwyXHUw M2Q5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZGFcN1wyNlwyXDJcdTAzZGFcdTAzZGZc N1x1MDBmYVwyXDJcdTAzZGJcdTAzZGNcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIVwyXDJc dTAzZGNcdTAzZGVcN1x1MDBmYVwyXDJcdTAzZGRcdTAzZGJcM1wyXDJcMlx1MDNkZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwM2UxXDNcMlwyXDJcdTAzZGZcdTAzZGRcM1wyXDJcMlx1MDNk Zlx1MDNlMFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZTBcdTAzZTJcM1wy XDJcMlx1MDNlMVx1MDNkZlwzXDJcMlwyXHUwM2UyXHUwM2U0XDciKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyN1wyXDJcdTAzZTNcdTAzYjhcM1wyXDJcMlx1MDNlM1x1MDNiYlwzXDJcMlwyXHUw M2UzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYmNcM1wyXDJcMlx1MDNlM1x1MDNiZFwz XDJcMlwyXHUwM2UzXHUwM2JlXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNl M1x1MDNiZlwzXDJcMlwyXHUwM2UzXHUwM2MwXDNcMlwyXDJcdTAzZTNcdTAzYzVcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwM2UzXHUwM2NhXDNcMlwyXDJcdTAzZTNcdTAzZDVc M1wyXDJcMlx1MDNlM1x1MDNkOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAz ZTRbXDNcMlwyXDJcdTAzZTVcdTAzZTZcN1x1MDA5MlwyXDJcdTAzZTYiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDNlN1w3XGJcMlwyXHUwM2U3XHUwM2U4XDdcdFwyXDJcdTAzZThcdTAzZTlc N1wzMFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDNlOVx1MDNlYVw3XHUwMGZhXDJc Mlx1MDNlYVx1MDNlYlw3XDMxXDJcMlx1MDNlYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXVwz XDJcMlwyXHUwM2VjXHUwM2VkXDdcdTAwOTNcMlwyXHUwM2VkX1wzXDJcMlwyXHUwM2VlIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAzZjFcNVxcL1wyXHUwM2VmXHUwM2YxXDVeXDYwXDJcdTAz ZjBcdTAzZWVcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2YwXHUwM2VmXDNc MlwyXDJcdTAzZjFhXDNcMlwyXDJcdTAzZjJcdTAzZjdcNWBcNjEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXHUwM2YzXHUwM2Y0XDchXDJcMlx1MDNmNFx1MDNmNlw1YFw2MVwyXHUwM2Y1XHUw M2YzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNmNlx1MDNmOVwzXDJcMlwy XHUwM2Y3XHUwM2Y1XDNcMlwyXDJcdTAzZjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNm OFwzXDJcMlwyXHUwM2Y4Y1wzXDJcMlwyXHUwM2Y5XHUwM2Y3XDNcMlwyXDJcdTAzZmEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDNmYlw3XDY3XDJcMlx1MDNmYlx1MDNmY1w3L1wyXDJcdTAz ZmNcdTAzZmRcN1xiXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2ZkXHUwM2ZlXDdc dTAwZmFcMlwyXHUwM2ZlXHUwM2ZmXDchXDJcMlx1MDNmZlx1MDQwMCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDcuXDJcMlx1MDQwMFx1MDQwMVw3XGJcMlwyXHUwNDAxXHUwNDAyXDdcdTAwZWNc MlwyXHUwNDAyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MDNcN1wzMFwyXDJcdTA0MDNc dTA0MDRcN1x1MDBmYVwyXDJcdTA0MDRcdTA0MDVcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDMxXDJcMlx1MDQwNVx1MDQwOVw3IFwyXDJcdTA0MDZcdTA0MDhcNWZcNjRcMlx1MDQwN1x1MDQw NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0MDhcdTA0MGJcM1wyXDJcMlx1 MDQwOVx1MDQwN1wzXDJcMlwyXHUwNDA5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MGFc M1wyXDJcMlx1MDQwYVx1MDQwY1wzXDJcMlwyXHUwNDBiXHUwNDA5XDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDQwY1x1MDQwZFw3XDY2XDJcMlx1MDQwZFx1MDQwZVw3IFwyXDJc dTA0MGVlXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDQwZlx1MDQxZlw1alw2 NlwyXHUwNDEwXHUwNDFmXDVsXDY3XDJcdTA0MTFcdTA0MWYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw1bjhcMlx1MDQxMlx1MDQxZlw1XHUwMGE0U1wyXHUwNDEzXHUwNDFmXDVwOVwyXHUwNDE0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MWZcNVx1MDA4OEVcMlx1MDQxNVx1MDQxZlw1 XHUwMGY4fVwyXHUwNDE2XHUwNDFmXDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDExOFx1 MDA4ZFwyXHUwNDE3XHUwNDFmXDVcdTAxMWFcdTAwOGVcMlx1MDQxOFx1MDQxZiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDVcdTAxMTBcdTAwODlcMlx1MDQxOVx1MDQxZlw1XHUwMTFjXHUwMDhm XDJcdTA0MWFcdTA0MWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMTIwXHUwMDkxXDJc dTA0MWJcdTA0MWNcNVx1MDA5NkxcMlx1MDQxY1x1MDQxZFw3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCIgXDJcMlx1MDQxZFx1MDQxZlwzXDJcMlwyXHUwNDFlXHUwNDBmXDNcMlwyXDJcdTA0MWVc dTA0MTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDFlXHUwNDExXDNcMlwy XDJcdTA0MWVcdTA0MTJcM1wyXDJcMlx1MDQxZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NDEzXDNcMlwyXDJcdTA0MWVcdTA0MTRcM1wyXDJcMlx1MDQxZVx1MDQxNVwzXDJcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA0MWVcdTA0MTZcM1wyXDJcMlx1MDQxZVx1MDQxN1wzXDJc MlwyXHUwNDFlXHUwNDE4XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDQxZVx1 MDQxOVwzXDJcMlwyXHUwNDFlXHUwNDFhXDNcMlwyXDJcdTA0MWVcdTA0MWIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDFmZ1wzXDJcMlwyXHUwNDIwXHUwNDIxXDc4XDJcMlx1 MDQyMVx1MDQyMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDQyMlx1MDQyM1w3 XGJcMlwyXHUwNDIzXHUwNDI0XDdcdTAwZmFcMlwyXHUwNDI0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA0MzNcNyFcMlwyXHUwNDI1XHUwNDI2XDc5XDJcMlx1MDQyNlx1MDQyN1w3XGJcMlwy XHUwNDI3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MjhcN1x1MDBlY1wyXDJcdTA0Mjhc dTA0MjlcN1wzMFwyXDJcdTA0MjlcdTA0MmFcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MGZhXDJcMlx1MDQyYVx1MDQyYlw3XDMxXDJcMlx1MDQyYlx1MDQyY1w3IFwyXDJcdTA0MmMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDQyZFw3OlwyXDJcdTA0MmRcdTA0MmVcN1xiXDJcMlx1 MDQyZVx1MDQyZlw1TFwnXDJcdTA0MmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQzMFw3 IFwyXDJcdTA0MzBcdTA0MzJcM1wyXDJcMlx1MDQzMVx1MDQyNVwzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA0MzJcdTA0MzVcM1wyXDJcMlx1MDQzM1x1MDQzMVwzXDJcMlwyXHUw NDMzXHUwNDM0XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDQzNFx1MDQzOVwz XDJcMlwyXHUwNDM1XHUwNDMzXDNcMlwyXDJcdTA0MzZcdTA0MzgiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw1Zlw2NFwyXHUwNDM3XHUwNDM2XDNcMlwyXDJcdTA0MzhcdTA0M2JcM1wyXDJcMlx1 MDQzOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDM3XDNcMlwyXDJcdTA0MzlcdTA0M2Fc M1wyXDJcMlx1MDQzYVx1MDQzY1wzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0 M2JcdTA0MzlcM1wyXDJcMlx1MDQzY1x1MDQzZFw3XDY2XDJcMlx1MDQzZFx1MDQzZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDQzZWlcM1wyXDJcMlx1MDQzZlx1MDQ0MFw1XFwv XDJcdTA0NDBcdTA0NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IFwyXDJcdTA0NDFrXDNc MlwyXDJcdTA0NDJcdTA0NDNcNV5cNjBcMlx1MDQ0M1x1MDQ0NCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDcgXDJcMlx1MDQ0NG1cM1wyXDJcMlx1MDQ0NVx1MDQ0Nlw3XHUwMDk0XDJcMlx1MDQ0 Nlx1MDQ0NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwNDQ3XHUwNDQ4 XDchXDJcMlx1MDQ0OFx1MDQ0OVw1XHUwMTI0XHUwMDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlx1MDQ0OVx1MDQ0YVw3XHUwMDk1XDJcMlx1MDQ0YVx1MDQ0Ylw3IFwyXDJcdTA0NGJvXDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDQ0Y1x1MDQ1MFw1cjpcMlx1MDQ0ZFx1 MDQ1MFw1ej5cMlx1MDQ0ZVx1MDQ1MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDV+QFwyXHUw NDRmXHUwNDRjXDNcMlwyXDJcdTA0NGZcdTA0NGRcM1wyXDJcMlx1MDQ0Zlx1MDQ0ZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0NTBxXDNcMlwyXDJcdTA0NTFcdTA0NTJcNztc MlwyXHUwNDUyXHUwNDUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNz5cMlwyXHUwNDUzXHUw NDU0XDdcYlwyXDJcdTA0NTRcdTA0NTVcN1x1MDBlY1wyXDJcdTA0NTUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDQ1Nlw3XDMwXDJcMlx1MDQ1Nlx1MDQ1N1w3XHUwMGZhXDJcMlx1MDQ1N1x1 MDQ1Y1w3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMzFcMlwyXHUwNDU4XHUwNDU5XDchXDJc Mlx1MDQ1OVx1MDQ1YVw3QFwyXDJcdTA0NWFcdTA0NWIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3XGJcMlwyXHUwNDViXHUwNDVkXDV2PFwyXHUwNDVjXHUwNDU4XDNcMlwyXDJcdTA0NWNcdTA0 NWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDVkXHUwNDcyXDNcMlwyXDJc dTA0NWVcdTA0NWZcNyFcMlwyXHUwNDVmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NjFc NWJcNjJcMlx1MDQ2MFx1MDQ1ZVwzXDJcMlwyXHUwNDYwXHUwNDYxXDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDQ2MVx1MDQ2MlwzXDJcMlwyXHUwNDYyXHUwNDczXDcgXDJcMlx1 MDQ2M1x1MDQ2NFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIhXDJcMlx1MDQ2NFx1MDQ2Nlw1 Ylw2MlwyXHUwNDY1XHUwNDYzXDNcMlwyXDJcdTA0NjVcdTA0NjYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNDY2XHUwNDZlXDNcMlwyXDJcdTA0NjdcdTA0NmJcNyFcMlwyXHUw NDY4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NmFcNXQ7XDJcdTA0NjlcdTA0NjhcM1wy XDJcMlx1MDQ2YVx1MDQ2ZFwzXDJcMlwyXHUwNDZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA0NjlcM1wyXDJcMlx1MDQ2Ylx1MDQ2Y1wzXDJcMlwyXHUwNDZjXHUwNDZmXDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDQ2ZFx1MDQ2YlwzXDJcMlwyXHUwNDZlXHUwNDY3XDNc MlwyXDJcdTA0NmVcdTA0NmZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwNDZm XHUwNDcwXDNcMlwyXDJcdTA0NzBcdTA0NzFcNzxcMlwyXHUwNDcxXHUwNDczIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcNyBcMlwyXHUwNDcyXHUwNDYwXDNcMlwyXDJcdTA0NzJcdTA0NjVcM1wy XDJcMlx1MDQ3MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgic1wzXDJcMlwyXHUwNDc0XHUwNDc3 XDVwOVwyXHUwNDc1XHUwNDc3XDVcdTAwODhFXDJcdTA0NzYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDQ3NFwzXDJcMlwyXHUwNDc2XHUwNDc1XDNcMlwyXDJcdTA0Nzd1XDNcMlwyXDJcdTA0 NzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ3ZFw1eD1cMlx1MDQ3OVx1MDQ3YVw3KFwy XDJcdTA0N2FcdTA0N2NcNXg9XDJcdTA0N2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ3 OVwzXDJcMlwyXHUwNDdjXHUwNDdmXDNcMlwyXDJcdTA0N2RcdTA0N2JcM1wyXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDdkXHUwNDdlXDNcMlwyXDJcdTA0N2V3XDNcMlwyXDJcdTA0 N2ZcdTA0N2RcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNDgwXHUwNDgxXHRc NVwyXDJcdTA0ODF5XDNcMlwyXDJcdTA0ODJcdTA0ODNcNz5cMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcdTA0ODNcdTA0ODRcNz1cMlwyXHUwNDg0XHUwNDg1XDdcYlwyXDJcdTA0ODVcdTA0 ODYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDQ4Nlx1MDQ4N1w3XDMw XDJcMlx1MDQ4N1x1MDQ4OFw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUw NDg4XHUwNDg5XDdcMzFcMlwyXHUwNDg5XHUwNDhhXDchXDJcMlx1MDQ4YVx1MDQ4YiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDQ4Ylx1MDQ4Y1w3XGJcMlwyXHUwNDhjXHUwNDhk XDdcdTAwZWNcMlwyXHUwNDhkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0OGVcN1wzMFwy XDJcdTA0OGVcdTA0OGZcN1x1MDBmYVwyXDJcdTA0OGZcdTA0OTdcNyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDMxXDJcMlx1MDQ5MFx1MDQ5MVw3IVwyXDJcdTA0OTFcdTA0OTJcNz5cMlwyXHUw NDkyXHUwNDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDQ5M1x1MDQ5NFw3 XHUwMGVjXDJcMlx1MDQ5NFx1MDQ5NVw3XDMwXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNDk1XHUwNDk2XDdcdTAwZmFcMlwyXHUwNDk2XHUwNDk4XDdcMzFcMlwyXHUwNDk3XHUwNDkw IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQ5N1x1MDQ5OFwzXDJcMlwyXHUw NDk4XHUwNGE5XDNcMlwyXDJcdTA0OTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ5YVw3 IVwyXDJcdTA0OWFcdTA0OWJcN0BcMlwyXHUwNDliXHUwNDljXDdcYlwyXDJcdTA0OWMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDRhMVw1fD9cMlx1MDQ5ZFx1MDQ5ZVw3KFwyXDJcdTA0OWVc dTA0YTBcNXw/XDJcdTA0OWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ5ZFwzXDJcMlwy XHUwNGEwXHUwNGEzXDNcMlwyXDJcdTA0YTFcdTA0OWZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNGExXHUwNGEyXDNcMlwyXDJcdTA0YTJcdTA0YTRcM1wyXDJcMlx1MDRhM1x1 MDRhMVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA0YTRcdTA0YTVcNyFcMlwy XHUwNGE1XHUwNGE2XDd0XDJcMlx1MDRhNlx1MDRhNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdcYlwyXDJcdTA0YTdcdTA0YThcN1x1MDBmYVwyXDJcdTA0YThcdTA0YWFcM1wyXDJcMlx1MDRh OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDk5XDNcMlwyXDJcdTA0YTlcdTA0YWFcM1wy XDJcMlx1MDRhYVx1MDRhZFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YWJc dTA0YWNcNyFcMlwyXHUwNGFjXHUwNGFlXDViXDYyXDJcdTA0YWRcdTA0YWJcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwNGFkXHUwNGFlXDNcMlwyXDJcdTA0YWVcdTA0YWZcM1wy XDJcMlx1MDRhZlx1MDRiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDRiMHtc M1wyXDJcMlx1MDRiMVx1MDRiNFw3XHUwMGZhXDJcMlx1MDRiMlx1MDRiNCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDVWLFwyXHUwNGIzXHUwNGIxXDNcMlwyXDJcdTA0YjNcdTA0YjJcM1wyXDJc Mlx1MDRiNH0iKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNGI1XHUwNGI4XDVc dTAwODBBXDJcdTA0YjZcdTA0YjhcNVx1MDA4NkRcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNGI3XHUwNGI1XDNcMlwyXDJcdTA0YjdcdTA0YjZcM1wyXDJcMlx1MDRiOFwxNzdcM1wyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNGI5XHUwNGU5XDduXDJcMlx1MDRiYVx1MDRi Ylw3KlwyXDJcdTA0YmJcdTA0YmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUw NGJjXHUwNGJkXDdcdTAwZWNcMlwyXHUwNGJkXHUwNGJlXDdcMzBcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA0YmVcdTA0YmZcN1x1MDBmYVwyXDJcdTA0YmZcdTA0YzBcN1wzMVwyXDJc dTA0YzBcdTA0YzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA0YzFcdTA0YzJc N29cMlwyXHUwNGMyXHUwNGMzXDdcYlwyXDJcdTA0YzNcdTA0YzQiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw1TFwnXDJcdTA0YzRcdTA0YzVcNyFcMlwyXHUwNGM1XHUwNGM2XDcvXDJcMlx1MDRj Nlx1MDRjNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0YzdcdTA0YzhcN1x1 MDBmYVwyXDJcdTA0YzhcdTA0YzlcNyFcMlwyXHUwNGM5IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA0Y2FcN1x1MDA5MFwyXDJcdTA0Y2FcdTA0Y2JcN1xiXDJcMlx1MDRjYlx1MDRjY1w3XHUw MGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNGNjXHUwNGNkXDchXDJcMlx1MDRj ZFx1MDRlYVwzXDJcMlwyXHUwNGNlXHUwNGNmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN29c MlwyXHUwNGNmXHUwNGQwXDdcYlwyXDJcdTA0ZDBcdTA0ZDFcNUxcJ1wyXHUwNGQxXHUwNGQyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNGQyXHUwNGQzXDcvXDJcMlx1MDRkM1x1 MDRkNFw3XGJcMlwyXHUwNGQ0XHUwNGQ1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBm YVwyXDJcdTA0ZDVcdTA0ZDZcNyFcMlwyXHUwNGQ2XHUwNGQ3XDdcdTAwOTBcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcdTA0ZDdcdTA0ZDhcN1xiXDJcMlx1MDRkOFx1MDRkOVw3XHUwMGZh XDJcMlx1MDRkOVx1MDRkYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDRkYVx1 MDRlYVwzXDJcMlwyXHUwNGRiXHUwNGRjXDcvXDJcMlx1MDRkY1x1MDRkZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0ZGRcdTA0ZGVcN1x1MDBmYVwyXDJcdTA0ZGVcdTA0ZGZc NyFcMlwyXHUwNGRmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZTBcN1x1MDA5MFwyXDJc dTA0ZTBcdTA0ZTVcN1xiXDJcMlx1MDRlMVx1MDRlMlw3XHUwMGZiIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXHUwNGUyXHUwNGU2XDchXDJcMlx1MDRlM1x1MDRlNFw3XHUwMGZhXDJcMlx1 MDRlNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGU2XDchXDJcMlx1MDRlNVx1MDRlMVwz XDJcMlwyXHUwNGU1XHUwNGUzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRl Nlx1MDRlYVwzXDJcMlwyXHUwNGU3XHUwNGU4XDdcdTAwZmFcMlwyXHUwNGU4XHUwNGVhIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNGU5XHUwNGJhXDNcMlwyXDJcdTA0ZTlcdTA0 Y2VcM1wyXDJcMlx1MDRlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGRiXDNcMlwyXDJc dTA0ZTlcdTA0ZTdcM1wyXDJcMlx1MDRlOVx1MDRlYVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA0ZWFcdTA0ZWJcM1wyXDJcMlx1MDRlYlx1MDRmMFw1UClcMlx1MDRlY1x1MDRl ZFw3ISIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDRlZFx1MDRlZVw3QFwyXDJcdTA0 ZWVcdTA0ZWZcN1xiXDJcMlx1MDRlZlx1MDRmMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVc dTAwODJCXDJcdTA0ZjBcdTA0ZWNcM1wyXDJcMlx1MDRmMFx1MDRmMVwzXDJcMlwyXHUwNGYxIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZjZcM1wyXDJcMlx1MDRmMlx1MDRmM1w3IVwyXDJc dTA0ZjNcdTA0ZjRcN3RcMlwyXHUwNGY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZjVc N1xiXDJcMlx1MDRmNVx1MDRmN1w3XHUwMGZhXDJcMlx1MDRmNlx1MDRmMlwzXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcdTA0ZjZcdTA0ZjdcM1wyXDJcMlx1MDRmN1x1MDRmYVwzXDJc MlwyXHUwNGY4XHUwNGY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNGY5XHUw NGZiXDVcdTAwYjRbXDJcdTA0ZmFcdTA0ZjhcM1wyXDJcMlx1MDRmYSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNGZiXDNcMlwyXDJcdTA0ZmJcdTA0ZmNcM1wyXDJcMlx1MDRmY1x1MDRmZFw3 IFwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRmZFx1MDA4MVwzXDJcMlwyXHUwNGZl XHUwNTAzXDVcdTAwODRDXDJcdTA0ZmZcdTA1MDAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 KFwyXDJcdTA1MDBcdTA1MDJcNVx1MDA4NENcMlx1MDUwMVx1MDRmZlwzXDJcMlwyXHUwNTAyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MDVcM1wyXDJcMlx1MDUwM1x1MDUwMVwzXDJcMlwy XHUwNTAzXHUwNTA0XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUwNFx1MDA4 M1wzXDJcMlwyXHUwNTA1XHUwNTAzXDNcMlwyXDJcdTA1MDZcdTA1MDlcNyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDUwN1x1MDUwOVw1VixcMlx1MDUwOFx1MDUwNlwzXDJc MlwyXHUwNTA4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MDdcM1wyXDJcMlx1MDUwOVx1 MDA4NVwzXDJcMlwyXHUwNTBhXHUwNTBiXDdcdTAwOTkiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTA1MGJcdTA1MGNcN1x1MDA5YlwyXDJcdTA1MGNcdTA1MGRcN1xiXDJcMlx1MDUwZCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTBlXDdcdTAwZmJcMlwyXHUwNTBlXHUwNTBmXDch XDJcMlx1MDUwZlx1MDUxMFw1VCsiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNTEwXHUw NTE0XDchXDJcMlx1MDUxMVx1MDUxMlw1Ylw2MlwyXHUwNTEyXHUwNTEzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcNyFcMlwyXHUwNTEzXHUwNTE1XDNcMlwyXDJcdTA1MTRcdTA1MTFcM1wyXDJc Mlx1MDUxNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTE1XDNcMlwyXDJcdTA1MTVcdTA1 MTZcM1wyXDJcMlx1MDUxNlx1MDUxN1w3XHUwMDlhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXHUwNTE3XHUwNTE4XDcgXDJcMlx1MDUxOFx1MDA4N1wzXDJcMlwyXHUwNTE5XHUwNTIwIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDBiOF1cMlx1MDUxYVx1MDUyMFw1XHUwMGU4dVwy XHUwNTFiXHUwNTIwXDVcdTAwYzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoImRcMlx1MDUxY1x1 MDUyMFw1XHUwMGQ0a1wyXHUwNTFkXHUwNTIwXDVcdTAwZTJyXDJcdTA1MWUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDUyMFw1XHUwMGYweVwyXHUwNTFmXHUwNTE5XDNcMlwyXDJcdTA1MWZc dTA1MWFcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNTFmXHUwNTFiXDNcMlwy XDJcdTA1MWZcdTA1MWNcM1wyXDJcMlx1MDUxZlx1MDUxZCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA1MWZcdTA1MWVcM1wyXDJcMlx1MDUyMFx1MDA4OVwzXDJcMlwyXHUwNTIx IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MjJcNWBcNjFcMlx1MDUyMlx1MDUyM1w3IVwy XDJcdTA1MjNcdTA1MmRcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTI0XHUw NTJkXDVcdTAwOGNHXDJcdTA1MjVcdTA1MmRcNVx1MDA4ZUhcMlx1MDUyNlx1MDUyZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwOTBJXDJcdTA1MjdcdTA1MmRcNVx1MDA5MkpcMlx1MDUy OFx1MDUyZFw1XHUwMDk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJLXDJcdTA1MjlcdTA1MmRc NVx1MDExY1x1MDA4ZlwyXHUwNTJhXHUwNTJkXDVcdTAwOTZMXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDUyYlx1MDUyZFw1XHUwMDk4TVwyXHUwNTJjXHUwNTIxXDNcMlwyXDJcdTA1MmNc dTA1MjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTJjXHUwNTI1XDNcMlwy XDJcdTA1MmNcdTA1MjZcM1wyXDJcMlx1MDUyYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NTI3XDNcMlwyXDJcdTA1MmNcdTA1MjhcM1wyXDJcMlx1MDUyY1x1MDUyOVwzXDJcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA1MmNcdTA1MmFcM1wyXDJcMlx1MDUyY1x1MDUyYlwzXDJc MlwyXHUwNTJkXHUwMDhiXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDUyZVx1 MDUyZlw3cFwyXDJcdTA1MmZcdTA1MzBcN1w2MlwyXDJcdTA1MzBcdTA1MzEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3XGJcMlwyXHUwNTMxXHUwNTMyXDdcdTAwZWNcMlwyXHUwNTMyXHUwNTMz XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MzNcdTA1MzRcN1x1MDBmYVwy XDJcdTA1MzRcdTA1MzVcN1wzMVwyXDJcdTA1MzVcdTA1NDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3IVwyXDJcdTA1MzZcdTA1MzdcN0BcMlwyXHUwNTM3XHUwNTM4XDdcYlwyXDJcdTA1Mzhc dTA1M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUwNTM5XHUwNTNhXDco XDJcMlx1MDUzYVx1MDUzY1w1XHUwMDllUFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1 M2JcdTA1MzlcM1wyXDJcMlx1MDUzY1x1MDUzZlwzXDJcMlwyXHUwNTNkXHUwNTNiXDMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDUzZFx1MDUzZVwzXDJcMlwyXHUwNTNlXHUwNTQw XDNcMlwyXDJcdTA1M2ZcdTA1M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUw NTQwXHUwNTQxXDchXDJcMlx1MDU0MVx1MDU0M1wzXDJcMlwyXHUwNTQyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA1MzZcM1wyXDJcMlx1MDU0Mlx1MDU0M1wzXDJcMlwyXHUwNTQzXHUwNTQ0 XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU0NFx1MDU0NVw1XHUwMTI0XHUw MDkzXDJcdTA1NDVcdTA1NDdcN3NcMlwyXHUwNTQ2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA1NDhcNyBcMlwyXHUwNTQ3XHUwNTQ2XDNcMlwyXDJcdTA1NDdcdTA1NDhcM1wyXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTQ4XHUwMDhkXDNcMlwyXDJcdTA1NDlcdTA1NGFcN3Jc MlwyXHUwNTRhXHUwNTRiXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2MlwyXDJcdTA1NGJc dTA1NGNcN1xiXDJcMlx1MDU0Y1x1MDU0ZFw3XHUwMGVjXDJcMlx1MDU0ZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNTRlXDdcMzBcMlwyXHUwNTRlXHUwNTRmXDdcdTAwZmFcMlwyXHUwNTRm XHUwNTUwXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA1NTBcdTA1NWRcNyFc MlwyXHUwNTUxXHUwNTUyXDdAXDJcMlx1MDU1Mlx1MDU1MyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDdcYlwyXDJcdTA1NTNcdTA1NThcNVx1MDA5ZVBcMlx1MDU1NFx1MDU1NVw3KFwyXDJcdTA1 NTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1N1w1XHUwMDllUFwyXHUwNTU2XHUwNTU0 XDNcMlwyXDJcdTA1NTdcdTA1NWFcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUw NTU4XHUwNTU2XDNcMlwyXDJcdTA1NThcdTA1NTlcM1wyXDJcMlx1MDU1OVx1MDU1YiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1NWFcdTA1NThcM1wyXDJcMlx1MDU1Ylx1MDU1 Y1w3IVwyXDJcdTA1NWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1ZVwzXDJcMlwyXHUw NTVkXHUwNTUxXDNcMlwyXDJcdTA1NWRcdTA1NWVcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNTVlXHUwNTVmXDNcMlwyXDJcdTA1NWZcdTA1NjBcNVx1MDEyNFx1MDA5M1wyXHUw NTYwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjJcN3NcMlwyXHUwNTYxXHUwNTYzXDcg XDJcMlx1MDU2Mlx1MDU2MVwzXDJcMlwyXHUwNTYyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA1NjNcM1wyXDJcMlx1MDU2M1x1MDA4ZlwzXDJcMlwyXHUwNTY0XHUwNTY1XDdsXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTY1XHUwNTY2XDVcdTAxMjRcdTAwOTNcMlx1MDU2Nlx1 MDU2N1w3IFwyXDJcdTA1NjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU2OFw1XHUwMGI0 W1wyXHUwNTY4XHUwNTZhXDdzXDJcMlx1MDU2OVx1MDU2Ylw3IFwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlx1MDU2YVx1MDU2OVwzXDJcMlwyXHUwNTZhXHUwNTZiXDNcMlwyXDJcdTA1NmJc dTAwOTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTZjXHUwNTZkXDdcdTAw YTRcMlwyXHUwNTZkXHUwNTZlXDdcdTAwYTVcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc dTA1NmVcdTA1NmZcN1xiXDJcMlx1MDU2Zlx1MDU3MFw3XHUwMGZhXDJcMlx1MDU3MFx1MDA5MyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1NzFcdTA1NzJcN1x1MDBhNlwyXDJc dTA1NzJcdTA1NzNcN1xiXDJcMlx1MDU3MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTc0 XDdcdTAwZWNcMlwyXHUwNTc0XHUwNTc1XDdcMzBcMlwyXHUwNTc1XHUwNTc2XDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA1NzZcdTA1NzdcN1wzMVwyXDJcdTA1NzdcdTA1 NzhcNyFcMlwyXHUwNTc4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOTVcM1wyXDJcMlx1 MDU3OVx1MDU3YVw3XHUwMGViXDJcMlx1MDU3YVx1MDU3Ylw3XGIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTA1N2JcdTA1N2NcNUxcJ1wyXHUwNTdjXHUwNTdkXDchXDJcMlx1MDU3ZFx1 MDA5NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1N2VcdTA1N2ZcN3FcMlwy XHUwNTdmXHUwNTgwXDdcNjJcMlwyXHUwNTgwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1 ODFcN1xiXDJcMlx1MDU4MVx1MDU4Mlw3XHUwMGVjXDJcMlx1MDU4Mlx1MDU4M1w3XDMwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNTgzXHUwNTg0XDdcdTAwZmFcMlwyXHUwNTg0XHUw NTg1XDdcMzFcMlwyXHUwNTg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1OGFcNyFcMlwy XHUwNTg2XHUwNTg3XDdNXDJcMlx1MDU4N1x1MDU4OFw3XGJcMlwyXHUwNTg4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA1ODlcN1x1MDBmYVwyXDJcdTA1ODlcdTA1OGJcNyFcMlwyXHUwNThh XHUwNTg2XDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDU4YVx1MDU4YlwzXDJc MlwyXHUwNThiXHUwNThjXDNcMlwyXDJcdTA1OGNcdTA1OGQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw1XHUwMTI0XHUwMDkzXDJcdTA1OGRcdTA1OGZcN3NcMlwyXHUwNThlXHUwNTkwXDcgXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNThmXHUwNThlXDNcMlwyXDJcdTA1OGZcdTA1 OTBcM1wyXDJcMlx1MDU5MFx1MDA5OVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJc dTA1OTFcdTA1OTNcNVx1MDA4YUZcMlx1MDU5Mlx1MDU5MVwzXDJcMlwyXHUwNTkzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1OTZcM1wyXDJcMlx1MDU5NFx1MDU5MlwzXDJcMlwyXHUwNTk0 XHUwNTk1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU5NVx1MDA5YlwzXDJc MlwyXHUwNTk2XHUwNTk0XDNcMlwyXDJcdTA1OTdcdTA1OWZcNSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMGEwUVwyXHUwNTk4XHUwNTlmXDVcdTAwYTJSXDJcdTA1OTlcdTA1OWZcNVx1MDBh NlQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNTlhXHUwNTlmXDVcdTAwYTRTXDJcdTA1 OWJcdTA1OWZcNVx1MDBhOFVcMlx1MDU5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTlm XDVcdTAwYjBZXDJcdTA1OWRcdTA1OWZcNVx1MDBiMlpcMlx1MDU5ZVx1MDU5N1wzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA1OWVcdTA1OThcM1wyXDJcMlx1MDU5ZVx1MDU5OVwz XDJcMlwyXHUwNTllXHUwNTlhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDU5 ZVx1MDU5YlwzXDJcMlwyXHUwNTllXHUwNTljXDNcMlwyXDJcdTA1OWUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDU5ZFwzXDJcMlwyXHUwNTlmXHUwMDlkXDNcMlwyXDJcdTA1YTBcdTA1YTlc N1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDVhMVx1MDVhOVw3eVwyXDJc dTA1YTJcdTA1YTlcN3ZcMlwyXHUwNWEzXHUwNWE5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N3VcMlwyXHUwNWE0XHUwNWE5XDd7XDJcMlx1MDVhNVx1MDVhOVw3fFwyXDJcdTA1YTZcdTA1YTki KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3elwyXDJcdTA1YTdcdTA1YTlcN31cMlwyXHUwNWE4 XHUwNWEwXDNcMlwyXDJcdTA1YThcdTA1YTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXHUwNWE4XHUwNWEyXDNcMlwyXDJcdTA1YThcdTA1YTNcM1wyXDJcMlx1MDVhOCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNWE0XDNcMlwyXDJcdTA1YThcdTA1YTVcM1wyXDJcMlx1MDVh OFx1MDVhNlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YThcdTA1YTdcM1wy XDJcMlx1MDVhOVx1MDA5ZlwzXDJcMlwyXHUwNWFhXHUwNWFiXDciKQ0KDQorICAgICAgICBidWYu d3JpdGUoImtcMlwyXHUwNWFiXHUwNWFjXDVcdTAxMjRcdTAwOTNcMlx1MDVhY1x1MDViOVw3IFwy XDJcdTA1YWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVhZVw3QFwyXDJcdTA1YWVcdTA1 YWZcN1xiXDJcMlx1MDVhZlx1MDViNFw1XHUwMDllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJQ XDJcdTA1YjBcdTA1YjFcNyhcMlwyXHUwNWIxXHUwNWIzXDVcdTAwOWVQXDJcdTA1YjJcdTA1YjAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNWIzXHUwNWI2XDNcMlwyXDJcdTA1 YjRcdTA1YjJcM1wyXDJcMlx1MDViNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWI1XDNc MlwyXDJcdTA1YjVcdTA1YjdcM1wyXDJcMlx1MDViNlx1MDViNFwzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA1YjdcdTA1YjhcNyFcMlwyXHUwNWI4XHUwNWJhXDNcMlwyXDJcdTA1 YjlcdTA1YWRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwNWI5XHUwNWJhXDNc MlwyXDJcdTA1YmFcdTA1YmJcM1wyXDJcMlx1MDViYlx1MDViYyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDVcdTAwYjRbXDJcdTA1YmNcdTA1YmVcN3NcMlwyXHUwNWJkXHUwNWJmXDcgXDJcMlx1 MDViZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWJkXDNcMlwyXDJcdTA1YmVcdTA1YmZc M1wyXDJcMlx1MDViZlx1MDBhMVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1 YzBcdTA1YzFcN0tcMlwyXHUwNWMxXHUwNWMyXDVcdTAxMjRcdTAwOTNcMlx1MDVjMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNWNmXDcgXDJcMlx1MDVjM1x1MDVjNFw3QFwyXDJcdTA1YzRc dTA1YzVcN1xiXDJcMlx1MDVjNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWNhXDVcdTAw OWVQXDJcdTA1YzZcdTA1YzdcNyhcMlwyXHUwNWM3XHUwNWM5XDVcdTAwOWUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlBcMlx1MDVjOFx1MDVjNlwzXDJcMlwyXHUwNWM5XHUwNWNjXDNcMlwyXDJc dTA1Y2FcdTA1YzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNWNhXHUwNWNi XDNcMlwyXDJcdTA1Y2JcdTA1Y2RcM1wyXDJcMlx1MDVjYyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNWNhXDNcMlwyXDJcdTA1Y2RcdTA1Y2VcNyFcMlwyXHUwNWNlXHUwNWQwXDNcMlwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVjZlx1MDVjM1wzXDJcMlwyXHUwNWNmXHUwNWQw XDNcMlwyXDJcdTA1ZDBcdTA1ZDFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUw NWQxXHUwNWQyXDVcdTAwYjRbXDJcdTA1ZDJcdTA1ZDRcN3NcMlwyXHUwNWQzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA1ZDVcNyBcMlwyXHUwNWQ0XHUwNWQzXDNcMlwyXDJcdTA1ZDRcdTA1 ZDVcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWQ1XHUwMGEzXDNcMlwyXDJc dTA1ZDZcdTA1ZGVcN2NcMlwyXHUwNWQ3XHUwNWQ4XDUiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBhNlRcMlx1MDVkOFx1MDVkOVw3IVwyXDJcdTA1ZDlcdTA1ZGZcM1wyXDJcMlx1MDVkYSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWRiXDdcYlwyXDJcdTA1ZGJcdTA1ZGNcNVouXDJc dTA1ZGNcdTA1ZGRcNyFcMlwyXHUwNWRkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZGZc M1wyXDJcMlx1MDVkZVx1MDVkN1wzXDJcMlwyXHUwNWRlXHUwNWRhXDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDVkZlx1MDVlNFwzXDJcMlwyXHUwNWUwXHUwNWUxXDdcdTAwOWJc MlwyXHUwNWUxXHUwNWUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDVlMlx1 MDVlM1w3XHUwMGZiXDJcMlx1MDVlM1x1MDVlNVw3IVwyXDJcdTA1ZTQiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDVlMFwzXDJcMlwyXHUwNWU0XHUwNWU1XDNcMlwyXDJcdTA1ZTVcdTAwYTVc M1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWU2XHUwNWU3XDdcdTAwOTZcMlwy XHUwNWU3XHUwNWU4XDdcYlwyXDJcdTA1ZThcdTA1ZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw1XHUwMTI0XHUwMDkzXDJcdTA1ZTlcdTAwYTdcM1wyXDJcMlx1MDVlYVx1MDVlYlw1XHUwMGFh IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJWXDJcdTA1ZWJcdTAwYTlcM1wyXDJcMlx1MDVlY1x1 MDVlZFw3P1wyXDJcdTA1ZWRcdTA1ZWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PlwyXDJc dTA1ZWVcdTA1ZWZcN1xiXDJcMlx1MDVlZlx1MDVmMFw3XHUwMGVjXDJcMlx1MDVmMCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNWYxXDdcMzBcMlwyXHUwNWYxXHUwNWYyXDdcdTAwZmFcMlwy XHUwNWYyXHUwNWYzXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA1ZjNcdTA1 ZjRcNyFcMlwyXHUwNWY0XHUwNWY1XDdcdTAwOTZcMlwyXHUwNWY1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1ZjZcN1xiXDJcMlx1MDVmNlx1MDVmN1w1Wi5cMlx1MDVmN1x1MDVmOFw3IVwy XDJcdTA1ZjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVmOVw3QFwyXDJcdTA1ZjlcdTA1 ZmFcN1xiXDJcMlx1MDVmYVx1MDVmZlw1XHUwMGFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJX XDJcdTA1ZmJcdTA1ZmNcNyFcMlwyXHUwNWZjXHUwNWZkXDd0XDJcMlx1MDVmZFx1MDVmZSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1ZmVcdTA2MDBcN1x1MDBmYVwyXDJcdTA1 ZmZcdTA1ZmJcM1wyXDJcMlx1MDVmZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjAwXDNc MlwyXDJcdTA2MDBcdTA2MDVcM1wyXDJcMlx1MDYwMVx1MDYwMlw3IVwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDYwMlx1MDYwNFw1XFwvXDJcdTA2MDNcdTA2MDFcM1wyXDJcMlx1MDYw NFx1MDYwN1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA2MDVcdTA2MDNcM1wy XDJcMlx1MDYwNVx1MDYwNlwzXDJcMlwyXHUwNjA2XHUwNjA4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1wyXDJcMlx1MDYwN1x1MDYwNVwzXDJcMlwyXHUwNjA4XHUwNjA5XDcgXDJcMlx1MDYw OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGFiXDNcMlwyXDJcdTA2MGFcdTA2MGZcNVx1 MDBhZVhcMlx1MDYwYlx1MDYwY1w3KFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDYw Y1x1MDYwZVw1XHUwMGFlWFwyXHUwNjBkXHUwNjBiXDNcMlwyXDJcdTA2MGVcdTA2MTEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjBmXHUwNjBkXDNcMlwyXDJcdTA2MGZcdTA2 MTBcM1wyXDJcMlx1MDYxMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGFkXDNcMlwyXDJc dTA2MTFcdTA2MGZcM1wyXDJcMlx1MDYxMlx1MDYxZVw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXHUwNjEzXHUwNjFlXDdcdTAwZWRcMlwyXHUwNjE0XHUwNjFlXDdcdTAwZWVc MlwyXHUwNjE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MWVcN3lcMlwyXHUwNjE2XHUw NjFlXDd7XDJcMlx1MDYxN1x1MDYxZVw3XHUwMDgwXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXHUwNjE4XHUwNjFlXDd8XDJcMlx1MDYxOVx1MDYxZVw3dlwyXDJcdTA2MWFcdTA2MWVcNyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgidVwyXDJcdTA2MWJcdTA2MWVcN3pcMlwyXHUwNjFjXHUw NjFlXDd9XDJcMlx1MDYxZFx1MDYxMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA2MWRcdTA2MTNcM1wyXDJcMlx1MDYxZFx1MDYxNFwzXDJcMlwyXHUwNjFkIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA2MTVcM1wyXDJcMlx1MDYxZFx1MDYxNlwzXDJcMlwyXHUwNjFkXHUw NjE3XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDYxZFx1MDYxOFwzXDJcMlwy XHUwNjFkXHUwNjE5XDNcMlwyXDJcdTA2MWRcdTA2MWFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlwyXHUwNjFkXHUwNjFiXDNcMlwyXDJcdTA2MWRcdTA2MWNcM1wyXDJcMlx1MDYxZVx1 MDBhZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MWZcdTA2MjBcN1x1MDA5 N1wyXDJcdTA2MjBcdTA2MjFcNVx1MDEyNFx1MDA5MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcdTA2MjFcdTA2MjJcNyBcMlwyXHUwNjIyXHUwMGIxXDNcMlwyXDJcdTA2MjNcdTA2MjQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMDk4XDJcMlx1MDYyNFx1MDYyNVw1XHUwMTI0XHUw MDkzXDJcdTA2MjVcdTA2MjZcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIFwyXDJcdTA2MjZc dTAwYjNcM1wyXDJcMlx1MDYyN1x1MDYyOVw1XHUwMGI2XFxcMlx1MDYyOCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNjI3XDNcMlwyXDJcdTA2MjlcdTA2MmNcM1wyXDJcMlx1MDYyYVx1MDYy OFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MmFcdTA2MmJcM1wyXDJcMlx1 MDYyYlx1MDBiNVwzXDJcMlwyXHUwNjJjXHUwNjJhXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcMlx1MDYyZFx1MDYzMFw1XHUwMDhhRlwyXHUwNjJlXHUwNjMwXDVcdTAwOWNPXDJcdTA2 MmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDYyZFwzXDJcMlwyXHUwNjJmXHUwNjJlXDNc MlwyXDJcdTA2MzBcdTAwYjdcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjMx XHUwNjM0XDVcdTAwYmFeXDJcdTA2MzJcdTA2MzRcNVx1MDBjMGFcMlx1MDYzM1x1MDYzMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MzNcdTA2MzJcM1wyXDJcMlx1MDYzNFx1 MDBiOVwzXDJcMlwyXHUwNjM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MzZcN1xcXDJc Mlx1MDYzNlx1MDYzN1w1UipcMlx1MDYzN1x1MDYzOFw1VCtcMlx1MDYzOCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNjNlXDchXDJcMlx1MDYzOVx1MDYzYVw3QFwyXDJcdTA2M2FcdTA2M2Jc N1xiXDJcMlx1MDYzYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjNjXDVcdTAwYmNfXDJc dTA2M2NcdTA2M2RcNyFcMlwyXHUwNjNkXHUwNjNmXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlx1MDYzZVx1MDYzOVwzXDJcMlwyXHUwNjNlXHUwNjNmXDNcMlwyXDJcdTA2M2ZcdTA2 NDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjQwXHUwNjQxXDd0XDJcMlx1 MDY0MVx1MDY0Mlw3XGJcMlwyXHUwNjQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NDNc N1x1MDBmYVwyXDJcdTA2NDNcdTA2NDVcNyFcMlwyXHUwNjQ0XHUwNjQwXDNcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDY0NFx1MDY0NVwzXDJcMlwyXHUwNjQ1XHUwNjQ2XDNcMlwy XDJcdTA2NDZcdTA2NDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMGI0W1wyXHUwNjQ3 XHUwNjQ4XDddXDJcMlx1MDY0OFx1MDY0OVw3IFwyXDJcdTA2NDkiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBiYlwzXDJcMlwyXHUwNjRhXHUwNjRmXDVcdTAwYmVgXDJcdTA2NGJcdTA2NGNc NyhcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2NGNcdTA2NGVcNVx1MDBiZWBcMlx1 MDY0ZFx1MDY0YlwzXDJcMlwyXHUwNjRlXHUwNjUxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlx1MDY0Zlx1MDY0ZFwzXDJcMlwyXHUwNjRmXHUwNjUwXDNcMlwyXDJcdTA2NTAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDBiZFwzXDJcMlwyXHUwNjUxXHUwNjRmXDNcMlwyXDJc dTA2NTJcdTA2NTlcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDY1M1x1 MDY1OVw3dVwyXDJcdTA2NTRcdTA2NTlcN3ZcMlwyXHUwNjU1XHUwNjU5IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN3dcMlwyXHUwNjU2XHUwNjU5XDd4XDJcMlx1MDY1N1x1MDY1OVw1VixcMlx1 MDY1OFx1MDY1MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2NThcdTA2NTNc M1wyXDJcMlx1MDY1OFx1MDY1NFwzXDJcMlwyXHUwNjU4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA2NTVcM1wyXDJcMlx1MDY1OFx1MDY1NlwzXDJcMlwyXHUwNjU4XHUwNjU3XDNcMlwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY1OVx1MDBiZlwzXDJcMlwyXHUwNjVhXHUwNjVi XDdcdTAwYTFcMlwyXHUwNjViXHUwNjVjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVApXDJc dTA2NWNcdTA2NjJcNyFcMlwyXHUwNjVkXHUwNjVlXDdAXDJcMlx1MDY1ZVx1MDY1ZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2NWZcdTA2NjBcNVx1MDBjMmJcMlx1MDY2MFx1 MDY2MVw3IVwyXDJcdTA2NjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY2M1wzXDJcMlwy XHUwNjYyXHUwNjVkXDNcMlwyXDJcdTA2NjJcdTA2NjNcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNjYzXHUwNjY0XDNcMlwyXDJcdTA2NjRcdTA2NjVcN1x1MDBhMlwyXDJcdTA2 NjVcdTA2NjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwNjY2XHUwNjY3XDdc dTAwZWNcMlwyXHUwNjY3XHUwNjY4XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA2NjhcdTA2NjlcN1x1MDBmYVwyXDJcdTA2NjlcdTA2NmFcN1wzMVwyXDJcdTA2NmFcdTA2NmIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA2NmJcdTA2NmNcNVx1MDA5YU5cMlx1 MDY2Y1x1MDY2ZFw3XHUwMGEzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjZkXHUw NjZlXDcgXDJcMlx1MDY2ZVx1MDBjMVwzXDJcMlwyXHUwNjZmXHUwNjc0XDUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDBjNGNcMlx1MDY3MFx1MDY3MVw3KFwyXDJcdTA2NzFcdTA2NzNcNVx1 MDBjNGNcMlx1MDY3MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjcwXDNcMlwyXDJcdTA2 NzNcdTA2NzZcM1wyXDJcMlx1MDY3NFx1MDY3MlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA2NzRcdTA2NzVcM1wyXDJcMlx1MDY3NVx1MDBjM1wzXDJcMlwyXHUwNjc2XHUwNjc0 XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDY3N1x1MDY3YVw3XHUwMGZhXDJc Mlx1MDY3OFx1MDY3YVw1VixcMlx1MDY3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjc3 XDNcMlwyXDJcdTA2NzlcdTA2NzhcM1wyXDJcMlx1MDY3YVx1MDBjNVwzXDJcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA2N2JcdTA2N2VcNVx1MDBjOGVcMlx1MDY3Y1x1MDY3ZVw1XHUw MGQwaVwyXHUwNjdkXHUwNjdiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY3 ZFx1MDY3Y1wzXDJcMlwyXHUwNjdlXHUwMGM3XDNcMlwyXDJcdTA2N2YiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDY4MFw3XlwyXDJcdTA2ODBcdTA2ODFcNVIqXDJcdTA2ODFcdTA2ODJcNVQr XDJcdTA2ODIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY4OFw3IVwyXDJcdTA2ODNcdTA2 ODRcN0BcMlwyXHUwNjg0XHUwNjg1XDdcYlwyXDJcdTA2ODUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDY4Nlw1XHUwMGNjZ1wyXHUwNjg2XHUwNjg3XDchXDJcMlx1MDY4N1x1MDY4OVwzXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2ODhcdTA2ODNcM1wyXDJcMlx1MDY4OFx1 MDY4OVwzXDJcMlwyXHUwNjg5XHUwNjhlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDY4YVx1MDY4Ylw3dFwyXDJcdTA2OGJcdTA2OGNcN1xiXDJcMlx1MDY4YyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNjhkXDdcdTAwZmFcMlwyXHUwNjhkXHUwNjhmXDchXDJcMlx1MDY4 ZVx1MDY4YVwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA2OGVcdTA2OGZcM1wy XDJcMlx1MDY4Zlx1MDY5MFwzXDJcMlwyXHUwNjkwXHUwNjkxIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNVx1MDBjYWZcMlx1MDY5MVx1MDY5Mlw1XHUwMGI0W1wyXHUwNjkyXHUwNjkzXDdfXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjkzXHUwNjk0XDcgXDJcMlx1MDY5NFx1MDBj OVwzXDJcMlwyXHUwNjk1XHUwNjk2XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoImBcMlwyXHUw Njk2XHUwNjk4XDdcYlwyXDJcdTA2OTdcdTA2OTlcN1wzNVwyXDJcdTA2OThcdTA2OTciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjk4XHUwNjk5XDNcMlwyXDJcdTA2OTlcdTA2 OWFcM1wyXDJcMlx1MDY5YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjliXDdcdTAwZmFc MlwyXHUwNjliXHUwNjljXDchXDJcMlx1MDY5Y1x1MDY5ZFw3YVwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlx1MDY5ZFx1MDY5Zlw3XGJcMlwyXHUwNjllXHUwNmEwXDdcMzVcMlwyXHUwNjlm XHUwNjllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY5Zlx1MDZhMFwzXDJc MlwyXHUwNmEwXHUwNmExXDNcMlwyXDJcdTA2YTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDZhMlw3XHUwMGZhXDJcMlx1MDZhMlx1MDZhN1w3IVwyXDJcdTA2YTNcdTA2YTRcN2JcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2YTRcdTA2YTVcN1xiXDJcMlx1MDZhNVx1MDZhNlw3 XHUwMGZhXDJcMlx1MDZhNlx1MDZhOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1 MDZhN1x1MDZhM1wzXDJcMlwyXHUwNmE3XHUwNmE4XDNcMlwyXDJcdTA2YTgiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDBjYlwzXDJcMlwyXHUwNmE5XHUwNmFlXDVcdTAwY2VoXDJcdTA2YWFc dTA2YWJcNyhcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2YWJcdTA2YWRcNVx1MDBj ZWhcMlx1MDZhY1x1MDZhYVwzXDJcMlwyXHUwNmFkXHUwNmIwIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1wyXDJcMlx1MDZhZVx1MDZhY1wzXDJcMlwyXHUwNmFlXHUwNmFmXDNcMlwyXDJcdTA2 YWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBjZFwzXDJcMlwyXHUwNmIwXHUwNmFlXDNc MlwyXDJcdTA2YjFcdTA2YmJcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1 MDZiMlx1MDZiYlw3XHUwMGVmXDJcMlx1MDZiM1x1MDZiYlw3XHUwMGYwXDJcMlx1MDZiNCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmJiXDdcdTAwZjFcMlwyXHUwNmI1XHUwNmJiXDdcdTAw ZjJcMlwyXHUwNmI2XHUwNmJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmM1wyXDJc dTA2YjdcdTA2YmJcN1x1MDBmNFwyXDJcdTA2YjhcdTA2YmJcN1x1MDBmNSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlx1MDZiOVx1MDZiYlw1VixcMlx1MDZiYVx1MDZiMVwzXDJcMlwyXHUw NmJhXHUwNmIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDZiYVx1MDZiM1wz XDJcMlwyXHUwNmJhXHUwNmI0XDNcMlwyXDJcdTA2YmEiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDZiNVwzXDJcMlwyXHUwNmJhXHUwNmI2XDNcMlwyXDJcdTA2YmFcdTA2YjdcM1wyXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmJhXHUwNmI4XDNcMlwyXDJcdTA2YmFcdTA2Yjlc M1wyXDJcMlx1MDZiYlx1MDBjZlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA2 YmNcdTA2YmRcN1w2MFwyXDJcdTA2YmRcdTA2YmVcNVIqXDJcdTA2YmVcdTA2YmYiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw1VCtcMlx1MDZiZlx1MDZjNVw3IVwyXDJcdTA2YzBcdTA2YzFcN0Bc MlwyXHUwNmMxXHUwNmMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDZjMlx1 MDZjM1w1XHUwMGQyalwyXHUwNmMzXHUwNmM0XDchXDJcMlx1MDZjNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNmM2XDNcMlwyXDJcdTA2YzVcdTA2YzBcM1wyXDJcMlx1MDZjNVx1MDZjNlwz XDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2YzZcdTA2YzhcM1wyXDJcMlx1MDZj N1x1MDZjOVw1XHUwMGNhZlwyXHUwNmM4XHUwNmM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlx1MDZjOFx1MDZjOVwzXDJcMlwyXHUwNmM5XHUwNmNhXDNcMlwyXDJcdTA2Y2EiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDZjYlw1XHUwMGI0W1wyXHUwNmNiXHUwNmNjXDdcNjFc MlwyXHUwNmNjXHUwNmNkXDcgIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNmNkXHUw MGQxXDNcMlwyXDJcdTA2Y2VcdTA2ZDNcNVx1MDBjZWhcMlx1MDZjZiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNmQwXDcoXDJcMlx1MDZkMFx1MDZkMlw1XHUwMGNlaFwyXHUwNmQxXHUwNmNm XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDZkMlx1MDZkNVwzXDJcMlwyXHUw NmQzXHUwNmQxXDNcMlwyXDJcdTA2ZDNcdTA2ZDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXHUwNmQ0XHUwMGQzXDNcMlwyXDJcdTA2ZDVcdTA2ZDNcM1wyXDJcMlx1MDZkNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmQ5XDVcdTAwZDZsXDJcdTA2ZDdcdTA2ZDlcNVx1MDBk Y29cMlx1MDZkOFx1MDZkNlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA2ZDhc dTA2ZDdcM1wyXDJcMlx1MDZkOVx1MDBkNVwzXDJcMlwyXHUwNmRhXHUwNmRiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN2ZcMlwyXHUwNmRiXHUwNmRjXDVQKVwyXHUwNmRjXHUwNmUyXDchXDJc Mlx1MDZkZFx1MDZkZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDZkZVx1MDZk Zlw3XGJcMlwyXHUwNmRmXHUwNmUwXDVcdTAwZDhtXDJcdTA2ZTAiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDZlMVw3IVwyXDJcdTA2ZTFcdTA2ZTNcM1wyXDJcMlx1MDZlMlx1MDZkZFwzXDJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZTJcdTA2ZTNcM1wyXDJcMlx1MDZlM1x1 MDZlOFwzXDJcMlwyXHUwNmU0XHUwNmU1XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoInRcMlwy XHUwNmU1XHUwNmU2XDdcYlwyXDJcdTA2ZTZcdTA2ZTdcN1x1MDBmYVwyXDJcdTA2ZTciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDZlOVw3IVwyXDJcdTA2ZThcdTA2ZTRcM1wyXDJcMlx1MDZl OFx1MDZlOVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZTlcdTA2ZWFcM1wy XDJcMlx1MDZlYVx1MDZlYlw3aFwyXDJcdTA2ZWJcdTA2ZWNcNyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXGJcMlwyXHUwNmVjXHUwNmVkXDdcdTAwZmFcMlwyXHUwNmVkXHUwNmVlXDchXDJcMlx1 MDZlZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmVmXDdpXDJcMlx1MDZlZlx1MDZmMFw3 XGJcMlwyXHUwNmYwXHUwNmYxXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTA2ZjFcdTA2ZjJcNyFcMlwyXHUwNmYyXHUwNmYzXDVcdTAwYjRbXDJcdTA2ZjNcdTA2ZjQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3Z1wyXDJcdTA2ZjRcdTA2ZjVcNyBcMlwyXHUwNmY1XHUw MGQ3XDNcMlwyXDJcdTA2ZjZcdTA2ZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMGRh blwyXHUwNmY3XHUwNmY4XDcoXDJcMlx1MDZmOFx1MDZmYVw1XHUwMGRhblwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA2ZjlcdTA2ZjdcM1wyXDJcMlx1MDZmYVx1MDZmZFwzXDJcMlwyXHUw NmZiXHUwNmY5XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDZmYlx1MDZmY1wz XDJcMlwyXHUwNmZjXHUwMGQ5XDNcMlwyXDJcdTA2ZmRcdTA2ZmIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNmZlXHUwNzAyXDdcdTAwZmFcMlwyXHUwNmZmXHUwNzAyXDdcMTNc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MDBcdTA3MDJcNVYsXDJcdTA3MDFcdTA2 ZmVcM1wyXDJcMlx1MDcwMVx1MDZmZlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTA3MDFcdTA3MDBcM1wyXDJcMlx1MDcwMlx1MDBkYlwzXDJcMlwyXHUwNzAzXHUwNzA0IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN2RcMlwyXHUwNzA0XHUwNzA1XDVQKVwyXHUwNzA1XHUwNzBi XDchXDJcMlx1MDcwNlx1MDcwNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDcw N1x1MDcwOFw3XGJcMlwyXHUwNzA4XHUwNzA5XDVcdTAwZGVwXDJcdTA3MDkiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDcwYVw3IVwyXDJcdTA3MGFcdTA3MGNcM1wyXDJcMlx1MDcwYlx1MDcw NlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MGJcdTA3MGNcM1wyXDJcMlx1 MDcwY1x1MDcxMVwzXDJcMlwyXHUwNzBkXHUwNzBlXDciKQ0KDQorICAgICAgICBidWYud3JpdGUo InRcMlwyXHUwNzBlXHUwNzBmXDdcYlwyXDJcdTA3MGZcdTA3MTBcN1x1MDBmYVwyXDJcdTA3MTAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDcxMlw3IVwyXDJcdTA3MTFcdTA3MGRcM1wyXDJc Mlx1MDcxMVx1MDcxMlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MTJcdTA3 MTNcM1wyXDJcMlx1MDcxM1x1MDcxNFw3aFwyXDJcdTA3MTRcdTA3MTVcNyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXGJcMlwyXHUwNzE1XHUwNzE2XDdcdTAwZmFcMlwyXHUwNzE2XHUwNzE3XDch XDJcMlx1MDcxNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzE4XDdpXDJcMlx1MDcxOFx1 MDcxOVw3XGJcMlwyXHUwNzE5XHUwNzFhXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTA3MWFcdTA3MWZcNyFcMlwyXHUwNzFiXHUwNzFjXDdqXDJcMlx1MDcxY1x1MDcxZCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3MWRcdTA3MWVcN1x1MDBmYVwyXDJc dTA3MWVcdTA3MjBcNyFcMlwyXHUwNzFmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MWJc M1wyXDJcMlx1MDcxZlx1MDcyMFwzXDJcMlwyXHUwNzIwXHUwNzIxXDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDcyMVx1MDcyMlw1XHUwMGI0W1wyXHUwNzIyXHUwNzIzXDdlXDJc Mlx1MDcyM1x1MDcyNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDcyNFx1MDBk ZFwzXDJcMlwyXHUwNzI1XHUwNzJhXDVcdTAwZTBxXDJcdTA3MjYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDcyN1w3KFwyXDJcdTA3MjdcdTA3MjlcNVx1MDBlMHFcMlx1MDcyOFx1MDcyNlwz XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3MjlcdTA3MmNcM1wyXDJcMlx1MDcy YVx1MDcyOFwzXDJcMlwyXHUwNzJhXHUwNzJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlx1MDcyYlx1MDBkZlwzXDJcMlwyXHUwNzJjXHUwNzJhXDNcMlwyXDJcdTA3MmQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDczMFw3XHUwMGZhXDJcMlx1MDcyZVx1MDczMFw1VixcMlx1 MDcyZlx1MDcyZFwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3MmZcdTA3MmVc M1wyXDJcMlx1MDczMFx1MDBlMVwzXDJcMlwyXHUwNzMxXHUwNzMyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN1w2M1wyXDJcdTA3MzJcdTA3MzNcNVApXDJcdTA3MzNcdTA3MzhcNyFcMlwyXHUw NzM0XHUwNzM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1w2NFwyXDJcdTA3MzVcdTA3MzZc N1xiXDJcMlx1MDczNlx1MDczN1w3XHUwMGZhXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNzM3XHUwNzM5XDchXDJcMlx1MDczOFx1MDczNFwzXDJcMlwyXHUwNzM4XHUwNzM5XDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDczOVx1MDczZlwzXDJcMlwyXHUwNzNhXHUw NzNiXDdAXDJcMlx1MDczYlx1MDczYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJc dTA3M2NcdTA3M2RcNVx1MDBlNHNcMlx1MDczZFx1MDczZVw3IVwyXDJcdTA3M2UiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDc0MFwzXDJcMlwyXHUwNzNmXHUwNzNhXDNcMlwyXDJcdTA3M2Zc dTA3NDBcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzQwXHUwNzQxXDNcMlwy XDJcdTA3NDFcdTA3NDJcNVx1MDBiNFtcMlx1MDc0Mlx1MDc0MyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdcNjVcMlwyXHUwNzQzXHUwNzQ0XDcgXDJcMlx1MDc0NFx1MDBlM1wzXDJcMlwyXHUw NzQ1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NGFcNVx1MDBlNnRcMlx1MDc0Nlx1MDc0 N1w3KFwyXDJcdTA3NDdcdTA3NDlcNVx1MDBlNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidFwy XHUwNzQ4XHUwNzQ2XDNcMlwyXDJcdTA3NDlcdTA3NGNcM1wyXDJcMlx1MDc0YVx1MDc0OCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3NGFcdTA3NGJcM1wyXDJcMlx1MDc0Ylx1 MDBlNVwzXDJcMlwyXHUwNzRjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NGFcM1wyXDJc Mlx1MDc0ZFx1MDc1Mlw3XHUwMGZhXDJcMlx1MDc0ZVx1MDc1Mlw3XHUwMGMwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwNzRmXHUwNzUyXDdcdTAwYzFcMlwyXHUwNzUwXHUwNzUyXDVW LFwyXHUwNzUxXHUwNzRkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDc1MVx1 MDc0ZVwzXDJcMlwyXHUwNzUxXHUwNzRmXDNcMlwyXDJcdTA3NTEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDc1MFwzXDJcMlwyXHUwNzUyXHUwMGU3XDNcMlwyXDJcdTA3NTNcdTA3YWVcN0Fc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NTRcdTA3NTVcNVApXDJcdTA3NTVcdTA3 NWJcNyFcMlwyXHUwNzU2XHUwNzU3XDdAXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUw NzU3XHUwNzU4XDdcYlwyXDJcdTA3NThcdTA3NTlcNVx1MDBlY3dcMlx1MDc1OVx1MDc1YSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDc1YVx1MDc1Y1wzXDJcMlwyXHUwNzViXHUw NzU2XDNcMlwyXDJcdTA3NWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc1Y1wzXDJcMlwy XHUwNzVjXHUwNzVkXDNcMlwyXDJcdTA3NWRcdTA3NWVcNVx1MDBiNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiW1wyXHUwNzVlXHUwN2FmXDNcMlwyXDJcdTA3NWZcdTA3NjBcN0NcMlwyXHUwNzYw XHUwNzYxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDA4ZlwyXDJcdTA3NjFcdTA3NjJc N1xiXDJcMlx1MDc2Mlx1MDc2M1w3XHUwMGZiXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XHUwNzYzXHUwNzY0XDdcMzRcMlwyXHUwNzY0XHUwNzY1XDdcdTAwZmJcMlwyXHUwNzY1IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA3NjZcNyFcMlwyXHUwNzY2XHUwNzY3XDdcNjJcMlwyXHUw NzY3XHUwNzY4XDdcYlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc2OFx1MDc2OVw3 XHUwMGVjXDJcMlx1MDc2OVx1MDc2YVw3XDMwXDJcMlx1MDc2YVx1MDc2YiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwNzZiXHUwNzZjXDdcMzFcMlwyXHUwNzZjXHUwNzZk XDchXDJcMlx1MDc2ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzZlXDc9XDJcMlx1MDc2 ZVx1MDc2Zlw3XGJcMlwyXHUwNzZmXHUwNzcwXDdcdTAwZWMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcdTA3NzBcdTA3NzFcN1wzMFwyXDJcdTA3NzFcdTA3NzJcN1x1MDBmYVwyXDJcdTA3 NzIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc3M1w3XDMxXDJcMlx1MDc3M1x1MDc3NFw3 IVwyXDJcdTA3NzRcdTA3NzVcNVx1MDBlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidlwyXHUw Nzc1XHUwNzc2XDdEXDJcMlx1MDc3Nlx1MDc3N1w3XHUwMDhmXDJcMlx1MDc3N1x1MDc3OCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3NzhcdTA3NzlcN1x1MDBmYlwyXDJcdTA3 NzlcdTA3N2FcN1wzNFwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc3YVx1MDc3Ylw3 XHUwMGZiXDJcMlx1MDc3Ylx1MDc3Y1w3IVwyXDJcdTA3N2NcdTA3N2QiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3XDYyXDJcMlx1MDc3ZFx1MDc3ZVw3XGJcMlwyXHUwNzdlXHUwNzdmXDdcdTAw ZWNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3N2ZcdTA3ODBcN1wzMFwyXDJcdTA3 ODBcdTA3ODFcN1x1MDBmYVwyXDJcdTA3ODFcdTA3ODIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3XDMxXDJcMlx1MDc4Mlx1MDc4M1w3IVwyXDJcdTA3ODNcdTA3ODRcNz1cMlwyXHUwNzg0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ODVcN1xiXDJcMlx1MDc4NVx1MDc4Nlw3XHUwMGVj XDJcMlx1MDc4Nlx1MDc4N1w3XDMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNzg3 XHUwNzg4XDdcdTAwZmFcMlwyXHUwNzg4XHUwNzg5XDdcMzFcMlwyXHUwNzg5IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA3OGFcNyFcMlwyXHUwNzhhXHUwNzhiXDVcdTAwZWF2XDJcdTA3OGJc dTA3OGNcN0VcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3OGNcdTA3OGRcN1x1MDA4 ZlwyXDJcdTA3OGRcdTA3OGVcN1xiXDJcMlx1MDc4ZVx1MDc4ZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdcdTAwZmJcMlwyXHUwNzhmXHUwNzkwXDdcMzRcMlwyXHUwNzkwXHUwNzkxXDdcdTAw ZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA3OTFcdTA3OTJcNyFcMlwyXHUwNzky XHUwNzkzXDdcNjJcMlwyXHUwNzkzXHUwNzk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xi XDJcMlx1MDc5NFx1MDc5NVw3XHUwMGVjXDJcMlx1MDc5NVx1MDc5Nlw3XDMwXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNzk2XHUwNzk3XDdcdTAwZmFcMlwyXHUwNzk3XHUwNzk4XDdc MzFcMlwyXHUwNzk4XHUwNzk5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNzk5 XHUwNzlhXDc9XDJcMlx1MDc5YVx1MDc5Ylw3XGJcMlwyXHUwNzliXHUwNzljIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJcdTA3OWNcdTA3OWRcN1wzMFwyXDJcdTA3OWRcdTA3 OWVcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDc5ZVx1MDc5Zlw3XDMx XDJcMlx1MDc5Zlx1MDdhMFw3IVwyXDJcdTA3YTBcdTA3YTYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw1XHUwMGVhdlwyXHUwN2ExXHUwN2EyXDdAXDJcMlx1MDdhMlx1MDdhM1w3XGJcMlwyXHUw N2EzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YTRcNVx1MDBlY3dcMlx1MDdhNFx1MDdh NVw3IVwyXDJcdTA3YTVcdTA3YTdcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUw N2E2XHUwN2ExXDNcMlwyXDJcdTA3YTZcdTA3YTdcM1wyXDJcMlx1MDdhN1x1MDdhYiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3YThcdTA3YWFcNVx1MDA4Y0dcMlx1MDdhOVx1 MDdhOFwzXDJcMlwyXHUwN2FhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YWRcM1wyXDJc Mlx1MDdhYlx1MDdhOVwzXDJcMlwyXHUwN2FiXHUwN2FjXDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDdhY1x1MDdhZlwzXDJcMlwyXHUwN2FkXHUwN2FiXDNcMlwyXDJcdTA3YWVc dTA3NTRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwN2FlXHUwNzVmXDNcMlwy XDJcdTA3YWZcdTA3YjBcM1wyXDJcMlx1MDdiMFx1MDdiMSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDdCXDJcMlx1MDdiMVx1MDdiMlw3IFwyXDJcdTA3YjJcdTAwZTlcM1wyXDJcMlx1MDdiM1x1 MDdiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdgXDJcMlx1MDdiNFx1MDdiNVw3XGJcMlwy XHUwN2I1XHUwN2I2XDdcdTAwZmFcMlwyXHUwN2I2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA3YjdcNyFcMlwyXHUwN2I3XHUwN2I4XDdhXDJcMlx1MDdiOFx1MDdiOVw3XGJcMlwyXHUwN2I5 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YmFcN1x1MDBmYVwyXDJcdTA3YmFcdTA3YmZc NyFcMlwyXHUwN2JiXHUwN2JjXDdiXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwN2Jj XHUwN2JkXDdcYlwyXDJcdTA3YmRcdTA3YmVcN1x1MDBmYVwyXDJcdTA3YmVcdTA3YzAiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA3YmZcdTA3YmJcM1wyXDJcMlx1MDdiZlx1MDdj MFwzXDJcMlwyXHUwN2MwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YzVcM1wyXDJcMlx1 MDdjMVx1MDdjMlw3Y1wyXDJcdTA3YzJcdTA3YzNcN1xiXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwN2MzXHUwN2M0XDdcdTAwZmFcMlwyXHUwN2M0XHUwN2M2XDchXDJcMlx1MDdjNVx1 MDdjMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3YzVcdTA3YzZcM1wyXDJc Mlx1MDdjNlx1MDBlYlwzXDJcMlwyXHUwN2M3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3 Y2NcNVx1MDBlZXhcMlx1MDdjOFx1MDdjOVw3KFwyXDJcdTA3YzlcdTA3Y2JcNVx1MDBlZSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgieFwyXHUwN2NhXHUwN2M4XDNcMlwyXDJcdTA3Y2JcdTA3Y2Vc M1wyXDJcMlx1MDdjY1x1MDdjYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3 Y2NcdTA3Y2RcM1wyXDJcMlx1MDdjZFx1MDBlZFwzXDJcMlwyXHUwN2NlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA3Y2NcM1wyXDJcMlx1MDdjZlx1MDdkMFx0XDZcMlwyXHUwN2QwXHUwMGVm XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdkMVx1MDgyY1w3RlwyXDJcdTA3 ZDJcdTA3ZDNcNVApXDJcdTA3ZDNcdTA3ZDlcNyFcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcdTA3ZDRcdTA3ZDVcN0BcMlwyXHUwN2Q1XHUwN2Q2XDdcYlwyXDJcdTA3ZDZcdTA3ZDciKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMGY0e1wyXHUwN2Q3XHUwN2Q4XDchXDJcMlx1MDdk OFx1MDdkYVwzXDJcMlwyXHUwN2Q5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZDRcM1wy XDJcMlx1MDdkOVx1MDdkYVwzXDJcMlwyXHUwN2RhXHUwN2RiXDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDdkYlx1MDdkY1w1XHUwMGI0W1wyXHUwN2RjXHUwODJkXDNcMlwyXDJc dTA3ZGRcdTA3ZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3SFwyXDJcdTA3ZGVcdTA3ZGZc N1x1MDA4ZlwyXDJcdTA3ZGZcdTA3ZTBcN1xiXDJcMlx1MDdlMCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwN2UxXDdcdTAwZmJcMlwyXHUwN2UxXHUwN2UyXDdcMzRcMlwyXHUwN2UyXHUwN2Uz XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTA3ZTNcdTA3ZTRcNyFcMlwy XHUwN2U0XHUwN2U1XDdcNjJcMlwyXHUwN2U1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3 ZTZcN1xiXDJcMlx1MDdlNlx1MDdlN1w3XHUwMGVjXDJcMlx1MDdlN1x1MDdlOFw3XDMwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwN2U4XHUwN2U5XDdcdTAwZmFcMlwyXHUwN2U5XHUw N2VhXDdcMzFcMlwyXHUwN2VhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZWJcNyFcMlwy XHUwN2ViXHUwN2VjXDc9XDJcMlx1MDdlY1x1MDdlZFw3XGJcMlwyXHUwN2VkIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA3ZWVcN1x1MDBlY1wyXDJcdTA3ZWVcdTA3ZWZcN1wzMFwyXDJcdTA3 ZWZcdTA3ZjBcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDdmMFx1MDdm MVw3XDMxXDJcMlx1MDdmMVx1MDdmMlw3IVwyXDJcdTA3ZjIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDdmM1w1XHUwMGYyelwyXHUwN2YzXHUwN2Y0XDdJXDJcMlx1MDdmNFx1MDdmNVw3XHUw MDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwN2Y1XHUwN2Y2XDdcYlwyXDJcdTA3 ZjZcdTA3ZjdcN1x1MDBmYlwyXDJcdTA3ZjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdm OFw3XDM0XDJcMlx1MDdmOFx1MDdmOVw3XHUwMGZiXDJcMlx1MDdmOVx1MDdmYVw3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCIhXDJcMlx1MDdmYVx1MDdmYlw3XDYyXDJcMlx1MDdmYlx1MDdmY1w3 XGJcMlwyXHUwN2ZjXHUwN2ZkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJc dTA3ZmRcdTA3ZmVcN1wzMFwyXDJcdTA3ZmVcdTA3ZmZcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlx1MDdmZlx1MDgwMFw3XDMxXDJcMlx1MDgwMFx1MDgwMVw3IVwyXDJcdTA4 MDFcdTA4MDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PVwyXDJcdTA4MDJcdTA4MDNcN1xi XDJcMlx1MDgwM1x1MDgwNFw3XHUwMGVjXDJcMlx1MDgwNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwODA1XDdcMzBcMlwyXHUwODA1XHUwODA2XDdcdTAwZmFcMlwyXHUwODA2XHUwODA3XDci KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA4MDdcdTA4MDhcNyFcMlwyXHUwODA4 XHUwODA5XDVcdTAwZjJ6XDJcdTA4MDkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgwYVw3 SlwyXDJcdTA4MGFcdTA4MGJcN1x1MDA4ZlwyXDJcdTA4MGJcdTA4MGNcN1xiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwODBjXHUwODBkXDdcdTAwZmJcMlwyXHUwODBkXHUwODBlXDdc MzRcMlwyXHUwODBlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MGZcN1x1MDBmYlwyXDJc dTA4MGZcdTA4MTBcNyFcMlwyXHUwODEwXHUwODExXDdcNjIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcdTA4MTFcdTA4MTJcN1xiXDJcMlx1MDgxMlx1MDgxM1w3XHUwMGVjXDJcMlx1MDgx MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODE0XDdcMzBcMlwyXHUwODE0XHUwODE1XDdc dTAwZmFcMlwyXHUwODE1XHUwODE2XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJc dTA4MTZcdTA4MTdcNyFcMlwyXHUwODE3XHUwODE4XDc9XDJcMlx1MDgxOFx1MDgxOSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA4MTlcdTA4MWFcN1x1MDBlY1wyXDJcdTA4MWFc dTA4MWJcN1wzMFwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgxYlx1MDgxY1w3XHUw MGZhXDJcMlx1MDgxY1x1MDgxZFw3XDMxXDJcMlx1MDgxZFx1MDgxZSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDchXDJcMlx1MDgxZVx1MDgyNFw1XHUwMGYyelwyXHUwODFmXHUwODIwXDdAXDJc Mlx1MDgyMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODIxXDdcYlwyXDJcdTA4MjFcdTA4 MjJcNVx1MDBmNHtcMlx1MDgyMlx1MDgyM1w3IVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc Mlx1MDgyM1x1MDgyNVwzXDJcMlwyXHUwODI0XHUwODFmXDNcMlwyXDJcdTA4MjRcdTA4MjUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwODI1XHUwODI5XDNcMlwyXDJcdTA4MjZc dTA4MjhcNVx1MDA4Y0dcMlx1MDgyNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODI2XDNc MlwyXDJcdTA4MjhcdTA4MmJcM1wyXDJcMlx1MDgyOVx1MDgyN1wzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA4MjlcdTA4MmFcM1wyXDJcMlx1MDgyYVx1MDgyZFwzXDJcMlwyXHUw ODJiXHUwODI5XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDgyY1x1MDdkMlwz XDJcMlwyXHUwODJjXHUwN2RkXDNcMlwyXDJcdTA4MmRcdTA4MmUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwODJlXHUwODJmXDdHXDJcMlx1MDgyZlx1MDgzMFw3IFwyXDJcdTA4 MzBcdTAwZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwODMxXHUwODMyXDdg XDJcMlx1MDgzMlx1MDgzM1w3XGJcMlwyXHUwODMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA4MzRcN1x1MDBmYVwyXDJcdTA4MzRcdTA4MzVcNyFcMlwyXHUwODM1XHUwODM2XDdhXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXHUwODM2XHUwODM3XDdcYlwyXDJcdTA4MzdcdTA4Mzhc N1x1MDBmYVwyXDJcdTA4MzhcdTA4M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJc dTA4MzlcdTA4M2FcN2JcMlwyXHUwODNhXHUwODNiXDdcYlwyXDJcdTA4M2JcdTA4M2MiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDgzY1x1MDgzZVw3IVwyXDJcdTA4M2Rc dTA4MzlcM1wyXDJcMlx1MDgzZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODNlXDNcMlwy XDJcdTA4M2VcdTA4NDNcM1wyXDJcMlx1MDgzZlx1MDg0MFw3Y1wyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDg0MFx1MDg0MVw3XGJcMlwyXHUwODQxXHUwODQyXDdcdTAwZmFcMlwyXHUw ODQyXHUwODQ0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwODQzXHUwODNmXDNc MlwyXDJcdTA4NDNcdTA4NDRcM1wyXDJcMlx1MDg0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMGYzXDNcMlwyXDJcdTA4NDVcdTA4NGFcNVx1MDBmNnxcMlx1MDg0Nlx1MDg0N1w3KFwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDg0N1x1MDg0OVw1XHUwMGY2fFwyXHUwODQ4XHUw ODQ2XDNcMlwyXDJcdTA4NDlcdTA4NGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwODRhXHUwODQ4XDNcMlwyXDJcdTA4NGFcdTA4NGJcM1wyXDJcMlx1MDg0YiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMGY1XDNcMlwyXDJcdTA4NGNcdTA4NGFcM1wyXDJcMlx1MDg0ZFx1 MDg0ZVx0XDdcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NGVcdTAwZjdcM1wyXDJc Mlx1MDg0Zlx1MDg1NFw1XHUwMTA0XHUwMDgzXDJcdTA4NTAiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDg1NFw1XHUwMGZjXDE3N1wyXHUwODUxXHUwODU0XDVcdTAwZmVcdTAwODBcMlx1MDg1 MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODU0XDVcdTAxMGVcdTAwODhcMlx1MDg1M1x1 MDg0ZlwzXDJcMlwyXHUwODUzXHUwODUwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDg1M1x1MDg1MVwzXDJcMlwyXHUwODUzXHUwODUyXDNcMlwyXDJcdTA4NTQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDBmOVwzXDJcMlwyXHUwODU1XHUwODU2XDVcdTAxMDRcdTAwODNc Mlx1MDg1Nlx1MDg1NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAxMGFcdTAwODZcMlx1 MDg1N1x1MDg1OFw1XHUwMTBjXHUwMDg3XDJcdTA4NThcdTA4NTkiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw1XHUwMTBlXHUwMDg4XDJcdTA4NTlcdTAwZmJcM1wyXDJcMlx1MDg1YVx1MDg1Ylw1 XHUwMTBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODZcMlx1MDg1Ylx1MDBmZFwzXDJc MlwyXHUwODVjXHUwODVkXDVcdTAxMGNcdTAwODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XHUwODVkXHUwMGZmXDNcMlwyXDJcdTA4NWVcdTA4NjVcNXA5XDJcdTA4NWZcdTA4NjVcNSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDg4RVwyXHUwODYwXHUwODY1XDVcdTAwZjh9XDJcdTA4 NjFcdTA4NjVcNVx1MDExOFx1MDA4ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA4NjJc dTA4NjVcNVx1MDExY1x1MDA4ZlwyXHUwODYzXHUwODY1XDVcdTAxMTBcdTAwODkiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXHUwODY0XHUwODVlXDNcMlwyXDJcdTA4NjRcdTA4NWZcM1wyXDJc Mlx1MDg2NFx1MDg2MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4NjRcdTA4 NjFcM1wyXDJcMlx1MDg2NFx1MDg2MlwzXDJcMlwyXHUwODY0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA4NjNcM1wyXDJcMlx1MDg2NVx1MDEwMVwzXDJcMlwyXHUwODY2XHUwODZiXDVwOVwy XHUwODY3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NmJcNVx1MDA4OEVcMlx1MDg2OFx1 MDg2Ylw1XHUwMTE4XHUwMDhkXDJcdTA4NjlcdTA4NmIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw1XHUwMTEwXHUwMDg5XDJcdTA4NmFcdTA4NjZcM1wyXDJcMlx1MDg2YVx1MDg2N1wzXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA4NmFcdTA4NjhcM1wyXDJcMlx1MDg2YVx1MDg2 OVwzXDJcMlwyXHUwODZiXHUwMTAzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDg2Y1x1MDg2ZFw3bFwyXDJcdTA4NmRcdTA4NmVcNVx1MDEyNFx1MDA5MyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcdTA4NmVcdTA4NzJcNyBcMlwyXHUwODZmXHUwODcxXDVcdTAxMDBcdTAw ODFcMlx1MDg3MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODZmXDNcMlwyXDJcdTA4NzFc dTA4NzRcM1wyXDJcMlx1MDg3Mlx1MDg3MFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA4NzJcdTA4NzNcM1wyXDJcMlx1MDg3M1x1MDg3NVwzXDJcMlwyXHUwODc0XHUwODcyXDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDg3NVx1MDg3Nlw3c1wyXDJcdTA4NzZc dTA4NzdcNyBcMlwyXHUwODc3XHUwMTA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDg3OFx1MDg4NVw3a1wyXDJcdTA4NzlcdTA4N2FcN0BcMlwyXHUwODdhXHUwODdiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDg3Ylx1MDg4MFw1XHUwMDllUFwyXHUwODdj XHUwODdkXDcoXDJcMlx1MDg3ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODdmXDVcdTAw OWVQXDJcdTA4N2VcdTA4N2NcM1wyXDJcMlx1MDg3Zlx1MDg4MlwzXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXDJcdTA4ODBcdTA4N2VcM1wyXDJcMlx1MDg4MFx1MDg4MVwzXDJcMlwyXHUw ODgxXHUwODgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg4Mlx1MDg4MFwz XDJcMlwyXHUwODgzXHUwODg0XDchXDJcMlx1MDg4NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwODg2XDNcMlwyXDJcdTA4ODVcdTA4NzlcM1wyXDJcMlx1MDg4NVx1MDg4NlwzXDJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ODZcdTA4ODdcM1wyXDJcMlx1MDg4N1x1MDg4OFw1 XHUwMTI0XHUwMDkzXDJcdTA4ODgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg4OVw3IFwy XDJcdTA4ODlcdTAxMDdcM1wyXDJcMlx1MDg4YVx1MDg5N1w3S1wyXDJcdTA4OGIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDg4Y1w3QFwyXDJcdTA4OGNcdTA4OGRcN1xiXDJcMlx1MDg4ZFx1 MDg5Mlw1XHUwMDllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJQXDJcdTA4OGVcdTA4OGZcNyhc MlwyXHUwODhmXHUwODkxXDVcdTAwOWVQXDJcdTA4OTBcdTA4OGUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwODkxXHUwODk0XDNcMlwyXDJcdTA4OTJcdTA4OTBcM1wyXDJcMlx1 MDg5MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODkzXDNcMlwyXDJcdTA4OTNcdTA4OTVc M1wyXDJcMlx1MDg5NFx1MDg5MlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4 OTVcdTA4OTZcNyFcMlwyXHUwODk2XHUwODk4XDNcMlwyXDJcdTA4OTdcdTA4OGJcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwODk3XHUwODk4XDNcMlwyXDJcdTA4OThcdTA4OTlc M1wyXDJcMlx1MDg5OVx1MDg5YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAxMjRcdTAw OTNcMlx1MDg5YVx1MDg5Ylw3IFwyXDJcdTA4OWJcdTAxMDlcM1wyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXHUwODljXHUwOGE5XDdrXDJcMlx1MDg5ZFx1MDg5ZVw3QFwyXDJcdTA4OWVc dTA4OWZcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXGJcMlwyXHUwODlmXHUwOGE0XDVcdTAw OWVQXDJcdTA4YTBcdTA4YTFcNyhcMlwyXHUwOGExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA4YTNcNVx1MDA5ZVBcMlx1MDhhMlx1MDhhMFwzXDJcMlwyXHUwOGEzXHUwOGE2XDNcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDhhNFx1MDhhMlwzXDJcMlwyXHUwOGE0XHUwOGE1 XDNcMlwyXDJcdTA4YTVcdTA4YTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUw OGE2XHUwOGE0XDNcMlwyXDJcdTA4YTdcdTA4YThcNyFcMlwyXHUwOGE4IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA4YWFcM1wyXDJcMlx1MDhhOVx1MDg5ZFwzXDJcMlwyXHUwOGE5XHUwOGFh XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhhYVx1MDhhYlwzXDJcMlwyXHUw OGFiXHUwOGFjXDVcdTAxMjRcdTAwOTNcMlx1MDhhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOGIwXDcgXDJcMlx1MDhhZFx1MDhhZlw1XHUwMTAwXHUwMDgxXDJcdTA4YWVcdTA4YWQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGFmXHUwOGIyXDNcMlwyXDJcdTA4YjBc dTA4YWVcM1wyXDJcMlx1MDhiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGIxXDNcMlwy XDJcdTA4YjFcdTA4YjNcM1wyXDJcMlx1MDhiMlx1MDhiMFwzXDJcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA4YjNcdTA4YjRcN3NcMlwyXHUwOGI0XHUwOGI1XDcgXDJcMlx1MDhiNVx1 MDEwYlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA4YjZcdTA4YzNcN0tcMlwy XHUwOGI3XHUwOGI4XDdAXDJcMlx1MDhiOFx1MDhiOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdcYlwyXDJcdTA4YjlcdTA4YmVcNVx1MDA5ZVBcMlx1MDhiYVx1MDhiYlw3KFwyXDJcdTA4YmIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhiZFw1XHUwMDllUFwyXHUwOGJjXHUwOGJhXDNc MlwyXDJcdTA4YmRcdTA4YzBcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOGJl XHUwOGJjXDNcMlwyXDJcdTA4YmVcdTA4YmZcM1wyXDJcMlx1MDhiZlx1MDhjMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YzBcdTA4YmVcM1wyXDJcMlx1MDhjMVx1MDhjMlw3 IVwyXDJcdTA4YzIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjNFwzXDJcMlwyXHUwOGMz XHUwOGI3XDNcMlwyXDJcdTA4YzNcdTA4YzRcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwOGM0XHUwOGM1XDNcMlwyXDJcdTA4YzVcdTA4YzZcNVx1MDEyNFx1MDA5M1wyXHUwOGM2 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4Y2FcNyBcMlwyXHUwOGM3XHUwOGM5XDVcdTAx MDBcdTAwODFcMlx1MDhjOFx1MDhjNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA4YzlcdTA4Y2NcM1wyXDJcMlx1MDhjYVx1MDhjOFwzXDJcMlwyXHUwOGNhIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA4Y2JcM1wyXDJcMlx1MDhjYlx1MDhjZFwzXDJcMlwyXHUwOGNjXHUw OGNhXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjZFx1MDhjZVw3c1wyXDJc dTA4Y2VcdTA4Y2ZcNyBcMlwyXHUwOGNmXHUwMTBkXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlx1MDhkMFx1MDhkMVw3cFwyXDJcdTA4ZDFcdTA4ZDJcN1w2MlwyXDJcdTA4ZDJcdTA4 ZDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwOGQzXHUwOGQ0XDdcdTAwZWNc MlwyXHUwOGQ0XHUwOGQ1XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZDVc dTA4ZDZcN1x1MDBmYVwyXDJcdTA4ZDZcdTA4ZDdcN1wzMVwyXDJcdTA4ZDdcdTA4ZTQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA4ZDhcdTA4ZDlcN0BcMlwyXHUwOGQ5XHUwOGRh XDdcYlwyXDJcdTA4ZGFcdTA4ZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDllUFwy XHUwOGRiXHUwOGRjXDcoXDJcMlx1MDhkY1x1MDhkZVw1XHUwMDllUFwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA4ZGRcdTA4ZGJcM1wyXDJcMlx1MDhkZVx1MDhlMVwzXDJcMlwyXHUwOGRm XHUwOGRkXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDhkZlx1MDhlMFwzXDJc MlwyXHUwOGUwXHUwOGUyXDNcMlwyXDJcdTA4ZTFcdTA4ZGYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXHUwOGUyXHUwOGUzXDchXDJcMlx1MDhlM1x1MDhlNVwzXDJcMlwyXHUwOGU0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZDhcM1wyXDJcMlx1MDhlNFx1MDhlNVwzXDJc MlwyXHUwOGU1XHUwOGU2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhlNlx1 MDhlN1w1XHUwMTI0XHUwMDkzXDJcdTA4ZTdcdTA4ZThcN3NcMlwyXHUwOGU4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA4ZTlcNyBcMlwyXHUwOGU5XHUwMTBmXDNcMlwyXDJcdTA4ZWFcdTA4 ZWVcNVx1MDExMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDhhXDJcdTA4ZWJcdTA4ZWVc NVx1MDExNFx1MDA4YlwyXHUwOGVjXHUwOGVlXDVcdTAxMTYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDA4Y1wyXHUwOGVkXHUwOGVhXDNcMlwyXDJcdTA4ZWRcdTA4ZWJcM1wyXDJcMlx1MDhl ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGVjXDNcMlwyXDJcdTA4ZWVcdTAxMTFcM1wy XDJcMlx1MDhlZlx1MDhmMFw3bVwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhmMFx1 MDhmMVw3XHUwMDk2XDJcMlx1MDhmMVx1MDhmMlw3XGJcMlwyXHUwOGYyXHUwOGYzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTA4ZjNcdTA4ZjRcNyFcMlwyXHUwOGY0XHUw OGY1XDd0XDJcMlx1MDhmNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGY2XDdcYlwyXDJc dTA4ZjZcdTA4ZjdcN1x1MDBmYVwyXDJcdTA4ZjdcdTA4ZjhcNyAiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTA4ZjhcdTAxMTNcM1wyXDJcMlx1MDhmOVx1MDhmYVw3TlwyXDJcdTA4ZmFc dTA4ZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PVwyXDJcdTA4ZmJcdTA4ZmNcN1xiXDJc Mlx1MDhmY1x1MDhmZFw3XHUwMGVjXDJcMlx1MDhmZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOGZlXDdcMzBcMlwyXHUwOGZlXHUwOGZmXDdcdTAwZmFcMlwyXHUwOGZmXHUwOTAwXDciKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA5MDBcdTA5MDFcNyFcMlwyXHUwOTAxXHUw OTAyXDc+XDJcMlx1MDkwMlx1MDkwMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJc dTA5MDNcdTA5MDRcN1x1MDBlY1wyXDJcdTA5MDRcdTA5MDVcN1wzMFwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDkwNVx1MDkwNlw3XHUwMGZhXDJcMlx1MDkwNlx1MDkwN1w3XDMxXDJc Mlx1MDkwN1x1MDkwZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDkwOFx1MDkw OVw3PlwyXDJcdTA5MDlcdTA5MGFcN1xiXDJcMlx1MDkwYVx1MDkwYiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDdcdTAwZWNcMlwyXHUwOTBiXHUwOTBjXDdcMzBcMlwyXHUwOTBjXHUwOTBkXDdc dTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA5MGRcdTA5MGZcN1wzMVwyXDJc dTA5MGVcdTA5MDhcM1wyXDJcMlx1MDkwZVx1MDkwZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA5MGZcdTA5MTBcM1wyXDJcMlx1MDkxMFx1MDkxMVw3IFwyXDJcdTA5MTEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDExNVwzXDJcMlwyXHUwOTEyXHUwOTEzXHRcYlwyXDJc dTA5MTNcdTA5MTRcN1x1MDA4NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDkxNFx1 MDkxNVw3IVwyXDJcdTA5MTVcdTA5MTZcNy9cMlwyXHUwOTE2XHUwOTE3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN1xiXDJcMlx1MDkxN1x1MDkxOFw3XHUwMGZhXDJcMlx1MDkxOFx1MDkxOVw3 IVwyXDJcdTA5MTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkxYVw3XDYyXDJcMlx1MDkx YVx1MDkxYlw3XGJcMlwyXHUwOTFiXHUwOTFjXDdcdTAwZWMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcdTA5MWNcdTA5MWRcN1wzMFwyXDJcdTA5MWRcdTA5MWVcN1x1MDBmYVwyXDJcdTA5 MWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkxZlw3XDMxXDJcMlx1MDkxZlx1MDkyMFw3 IVwyXDJcdTA5MjBcdTA5MjFcNz1cMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjFc dTA5MjJcN1xiXDJcMlx1MDkyMlx1MDkyM1w3XHUwMGVjXDJcMlx1MDkyM1x1MDkyNCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdcMzBcMlwyXHUwOTI0XHUwOTI1XDdcdTAwZmFcMlwyXHUwOTI1 XHUwOTMxXDdcMzFcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjZcdTA5MjdcNyFc MlwyXHUwOTI3XHUwOTI4XDdAXDJcMlx1MDkyOFx1MDkyOVw3XGIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTA5MjlcdTA5MmVcNVx1MDA5ZVBcMlx1MDkyYVx1MDkyYlw3KFwyXDJcdTA5 MmJcdTA5MmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUwOTJjXHUwOTJh XDNcMlwyXDJcdTA5MmRcdTA5MzBcM1wyXDJcMlx1MDkyZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwOTJjXDNcMlwyXDJcdTA5MmVcdTA5MmZcM1wyXDJcMlx1MDkyZlx1MDkzMlwzXDJcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MzBcdTA5MmVcM1wyXDJcMlx1MDkzMVx1MDky NlwzXDJcMlwyXHUwOTMxXHUwOTMyXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1 MDkzMlx1MDkzN1wzXDJcMlwyXHUwOTMzXHUwOTM0XDchXDJcMlx1MDkzNFx1MDkzNSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDkzNVx1MDkzNlw3XGJcMlwyXHUwOTM2XHUwOTM4 XDdcdTAwZmFcMlwyXHUwOTM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MzNcM1wyXDJc Mlx1MDkzN1x1MDkzOFwzXDJcMlwyXHUwOTM4XHUwOTM5XDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDkzOVx1MDkzYVw3IFwyXDJcdTA5M2FcdTAxMTdcM1wyXDJcMlx1MDkzYlx1 MDkzY1w3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJMXDJcMlx1MDkzY1x1MDkzZFw3XHUwMGZh XDJcMlx1MDkzZFx1MDkzZVw3IFwyXDJcdTA5M2UiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDExOVwzXDJcMlwyXHUwOTNmXHUwOTQxXDdcdTAwODhcMlwyXHUwOTQwXHUwOTQyXDchIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOTQxXHUwOTQwXDNcMlwyXDJcdTA5NDFcdTA5NDJc M1wyXDJcMlx1MDk0Mlx1MDk0MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5 NDNcdTA5NDRcNy5cMlwyXHUwOTQ0XHUwOTQ1XDdcYlwyXDJcdTA5NDUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDk0Nlw3XHUwMGVjXDJcMlx1MDk0Nlx1MDk0N1w3XDMwXDJcMlx1MDk0N1x1 MDk0OFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwOTQ4XHUwOTQ5XDdc MzFcMlwyXHUwOTQ5XHUwOTU0XDchXDJcMlx1MDk0YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOTRiXDdcdTAwOGRcMlwyXHUwOTRiXHUwOTRjXDdcdTAwZmFcMlwyXHUwOTRjXHUwOTRkIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwOTRkXHUwOTRlXDdcdTAwODlcMlwyXHUw OTRlXHUwOTRmXHRcdFwyXDJcdTA5NGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk1NVw3 IFwyXDJcdTA5NTBcdTA5NTFcN01cMlwyXHUwOTUxXHUwOTUyXDdcYlwyXDJcdTA5NTIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDk1M1w3XHUwMGZhXDJcMlx1MDk1M1x1MDk1NVw3IFwyXDJc dTA5NTRcdTA5NGFcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOTU0XHUwOTUw XDNcMlwyXDJcdTA5NTVcdTAxMWJcM1wyXDJcMlx1MDk1Nlx1MDk1NyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDdcdTAwYTdcMlwyXHUwOTU3XHUwOTU4XDdbXDJcMlx1MDk1OFx1MDk1OVw3XGJc MlwyXHUwOTU5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YTFcNUxcJ1wyXHUwOTVhXHUw OTViXDchXDJcMlx1MDk1Ylx1MDk1Y1w3XHUwMGE5XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXHUwOTVjXHUwOTk5XDdcYlwyXDJcdTA5NWRcdTA5NjFcN1NcMlwyXHUwOTVlXHUwOTVmIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5NWZcdTA5NjBcN1x1MDBmYVwyXDJc dTA5NjBcdTA5NjJcN1wzM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk2MVx1MDk1 ZVwzXDJcMlwyXHUwOTYxXHUwOTYyXDNcMlwyXDJcdTA5NjJcdTA5OWFcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTYzXHUwOTY3XDdUXDJcMlx1MDk2NFx1MDk2NVw3XDMyXDJc Mlx1MDk2NVx1MDk2NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwOTY2 XHUwOTY4XDdcMzNcMlwyXHUwOTY3XHUwOTY0XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDk2N1x1MDk2OFwzXDJcMlwyXHUwOTY4XHUwOTlhXDNcMlwyXDJcdTA5NjlcdTA5NmRc NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiVVwyXDJcdTA5NmFcdTA5NmJcN1wzMlwyXDJcdTA5 NmJcdTA5NmNcN1x1MDBmYVwyXDJcdTA5NmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk2 ZVw3XDMzXDJcMlx1MDk2ZFx1MDk2YVwzXDJcMlwyXHUwOTZkXHUwOTZlXDNcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlx1MDk2ZVx1MDk5YVwzXDJcMlwyXHUwOTZmXHUwOTczXDdWXDJc Mlx1MDk3MFx1MDk3MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcMzJcMlwyXHUwOTcxXHUw OTcyXDdcdTAwZmFcMlwyXHUwOTcyXHUwOTc0XDdcMzNcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA5NzNcdTA5NzBcM1wyXDJcMlx1MDk3M1x1MDk3NFwzXDJcMlwyXHUwOTc0XHUwOTlh XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDk3NVx1MDk3OVw3UlwyXDJcdTA5 NzZcdTA5NzdcN1wzMlwyXDJcdTA5NzdcdTA5NzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 XHUwMGZhXDJcMlx1MDk3OFx1MDk3YVw3XDMzXDJcMlx1MDk3OVx1MDk3NlwzXDJcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5NzlcdTA5N2FcM1wyXDJcMlx1MDk3YVx1MDk5YVwzXDJc MlwyXHUwOTdiXHUwOTdmXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIldcMlwyXHUwOTdjXHUw OTdkXDdcMzJcMlwyXHUwOTdkXHUwOTdlXDdcdTAwZmFcMlwyXHUwOTdlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA5ODBcN1wzM1wyXDJcdTA5N2ZcdTA5N2NcM1wyXDJcMlx1MDk3Zlx1MDk4 MFwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA5ODBcdTA5OWFcM1wyXDJcMlx1 MDk4MVx1MDk4NVw3WFwyXDJcdTA5ODJcdTA5ODMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 XDMyXDJcMlx1MDk4M1x1MDk4NFw3XHUwMGZhXDJcMlx1MDk4NFx1MDk4Nlw3XDMzXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTg1XHUwOTgyXDNcMlwyXDJcdTA5ODVcdTA5ODZcM1wy XDJcMlx1MDk4Nlx1MDk5YVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5ODdc dTA5OGJcN1lcMlwyXHUwOTg4XHUwOTg5XDdcMzJcMlwyXHUwOTg5XHUwOThhIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTA5OGFcdTA5OGNcN1wzM1wyXDJcdTA5OGJcdTA5 ODhcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOThiXHUwOThjXDNcMlwyXDJc dTA5OGNcdTA5OWFcM1wyXDJcMlx1MDk4ZFx1MDk5MVw3IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJaXDJcMlx1MDk4ZVx1MDk4Zlw3XDMyXDJcMlx1MDk4Zlx1MDk5MFw3XHUwMGZhXDJcMlx1MDk5 MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTkyXDdcMzNcMlwyXHUwOTkxXHUwOThlXDNc MlwyXDJcdTA5OTFcdTA5OTJcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwOTky XHUwOTlhXDNcMlwyXDJcdTA5OTNcdTA5OTdcN1x1MDBmYlwyXDJcdTA5OTRcdTA5OTUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk5NVx1MDk5Nlw3XHUwMGZhXDJcMlx1MDk5 Nlx1MDk5OFw3XDMzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTk3XHUwOTk0XDNc MlwyXDJcdTA5OTdcdTA5OThcM1wyXDJcMlx1MDk5OFx1MDk5YVwzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXDJcdTA5OTlcdTA5NWRcM1wyXDJcMlx1MDk5OVx1MDk2M1wzXDJcMlwyXHUw OTk5XHUwOTY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDk5OVx1MDk2Zlwz XDJcMlwyXHUwOTk5XHUwOTc1XDNcMlwyXDJcdTA5OTkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDk3YlwzXDJcMlwyXHUwOTk5XHUwOTgxXDNcMlwyXDJcdTA5OTlcdTA5ODdcM1wyXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTk5XHUwOThkXDNcMlwyXDJcdTA5OTlcdTA5OTNc M1wyXDJcMlx1MDk5YVx1MDk5ZVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5 OWJcdTA5OWRcNVx1MDExZVx1MDA5MFwyXHUwOTljXHUwOTliXDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDk5ZFx1MDlhMFwzXDJcMlwyXHUwOTllXHUwOTljXDNcMlwyXDJcdTA5 OWVcdTA5OWZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTlmXHUwOWEyXDNc MlwyXDJcdTA5YTBcdTA5OWVcM1wyXDJcMlx1MDlhMVx1MDk1YSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTA5YTFcdTA5YTJcM1wyXDJcMlx1MDlhMlx1MDlhYlwzXDJcMlwyXHUw OWEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YTdcNyFcMlwyXHUwOWE0XHUwOWE2XDVc dTAxMWNcdTAwOGZcMlx1MDlhNVx1MDlhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTA5YTZcdTA5YTlcM1wyXDJcMlx1MDlhN1x1MDlhNVwzXDJcMlwyXHUwOWE3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5YThcM1wyXDJcMlx1MDlhOFx1MDlhYVwzXDJcMlwyXHUwOWE5 XHUwOWE3XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlhYVx1MDlhY1w3XHUw MGE4XDJcMlx1MDlhYlx1MDlhM1wzXDJcMlwyXHUwOWFiXHUwOWFjIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MDlhY1x1MDlhZFwzXDJcMlwyXHUwOWFkXHUwOWFlXDcgXDJcMlx1 MDlhZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTFkXDNcMlwyXDJcdTA5YWZcdTA5YjBc NyFcMlwyXHUwOWIwXHUwOWI0XDdcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTA5YjFcdTA5YjJcN1wzMlwyXDJcdTA5YjJcdTA5YjNcN1x1MDBmYVwyXDJcdTA5YjMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDliNVw3XDMzXDJcMlx1MDliNFx1MDliMVwzXDJcMlwyXHUw OWI0XHUwOWI1XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDliNVx1MDliYVwz XDJcMlwyXHUwOWI2XHUwOWI3XDdcMzRcMlwyXHUwOWI3XHUwOWI5IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcNVx1MDE1Y1x1MDBhZlwyXHUwOWI4XHUwOWI2XDNcMlwyXDJcdTA5YjlcdTA5YmNc M1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwOWJhXHUwOWI4XDNcMlwyXDJcdTA5 YmFcdTA5YmJcM1wyXDJcMlx1MDliYlx1MDliZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTA5YmNcdTA5YmFcM1wyXDJcMlx1MDliZFx1MDliZVw3XGJcMlwyXHUwOWJlIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5YmZcN1x1MDBmYVwyXDJcdTA5YmZcdTAxMWZcM1wyXDJc Mlx1MDljMFx1MDljMVw1XHUwMTIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOTJcMlx1 MDljMVx1MDljMlw3IFwyXDJcdTA5YzJcdTAxMjFcM1wyXDJcMlx1MDljMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwOWM0XDdcdTAwYWJcMlwyXHUwOWM0XHUwMTIzXDNcMlwyXDJcdTA5YzVc dTA5Y2FcNVx1MDEyOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDk1XDJcdTA5YzZcdTA5 YzdcN1x1MDBkY1wyXDJcdTA5YzdcdTA5YzlcNVx1MDEyOFx1MDA5NSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcdTA5YzhcdTA5YzZcM1wyXDJcMlx1MDljOVx1MDljY1wzXDJcMlwyXHUwOWNh XHUwOWM4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDljYVx1MDljYlwzXDJc MlwyXHUwOWNiXHUwMTI1XDNcMlwyXDJcdTA5Y2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDljYVwzXDJcMlwyXHUwOWNkXHUwOWQyXDVcdTAxMjhcdTAwOTVcMlx1MDljZVx1MDljZiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZGNcMlwyXHUwOWNmXHUwOWQxXDVcdTAxMjhcdTAw OTVcMlx1MDlkMFx1MDljZVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5ZDFc dTA5ZDRcM1wyXDJcMlx1MDlkMlx1MDlkMFwzXDJcMlwyXHUwOWQyXHUwOWQzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlkM1x1MDEyN1wzXDJcMlwyXHUwOWQ0XHUwOWQyXDNc MlwyXDJcdTA5ZDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlkYVw1XHUwMTJhXHUwMDk2 XDJcdTA5ZDZcdTA5ZDdcN1x1MDBkYlwyXDJcdTA5ZDdcdTA5ZDkiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw1XHUwMTJhXHUwMDk2XDJcdTA5ZDhcdTA5ZDZcM1wyXDJcMlx1MDlkOVx1MDlkY1wz XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA5ZGFcdTA5ZDhcM1wyXDJcMlx1MDlk YVx1MDlkYlwzXDJcMlwyXHUwOWRiXHUwMTI5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlx1MDlkY1x1MDlkYVwzXDJcMlwyXHUwOWRkXHUwOWUyXDVcdTAxMmNcdTAwOTciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXHUwOWRlXHUwOWRmXDcoXDJcMlx1MDlkZlx1MDllMVw1XHUw MTJjXHUwMDk3XDJcdTA5ZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlkZVwzXDJcMlwy XHUwOWUxXHUwOWU0XDNcMlwyXDJcdTA5ZTJcdTA5ZTBcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwOWUyXHUwOWUzXDNcMlwyXDJcdTA5ZTNcdTAxMmJcM1wyXDJcMlx1MDllNFx1 MDllMlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5ZTVcdTA5ZWFcNVx1MDEy ZVx1MDA5OFwyXHUwOWU2XHUwOWU3XDcpXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw OWU3XHUwOWU5XDVcdTAxMmVcdTAwOThcMlx1MDllOFx1MDllNlwzXDJcMlwyXHUwOWU5IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZWNcM1wyXDJcMlx1MDllYVx1MDllOFwzXDJcMlwyXHUw OWVhXHUwOWViXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDllYlx1MDEyZFwz XDJcMlwyXHUwOWVjXHUwOWVhXDNcMlwyXDJcdTA5ZWRcdTA5ZjFcNSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMTMyXHUwMDlhXDJcdTA5ZWVcdTA5ZjBcNVx1MDEzMFx1MDA5OVwyXHUwOWVm XHUwOWVlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlmMFx1MDlmM1wzXDJc MlwyXHUwOWYxXHUwOWVmXDNcMlwyXDJcdTA5ZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDlmMlwzXDJcMlwyXHUwOWYyXHUwMTJmXDNcMlwyXDJcdTA5ZjNcdTA5ZjFcM1wyXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWY0XHUwOWY1XDdcIlwyXDJcdTA5ZjVcdTA5ZjlcNVx1 MDEzMlx1MDA5YVwyXHUwOWY2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZjdcNyNcMlwy XHUwOWY3XHUwOWY5XDVcdTAxMzJcdTAwOWFcMlx1MDlmOFx1MDlmNCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTA5ZjhcdTA5ZjZcM1wyXDJcMlx1MDlmOVx1MDEzMVwzXDJcMlwy XHUwOWZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZmVcNVx1MDEzNlx1MDA5Y1wyXHUw OWZiXHUwOWZkXDVcdTAxMzRcdTAwOWJcMlx1MDlmYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOWZiXDNcMlwyXDJcdTA5ZmRcdTBhMDBcM1wyXDJcMlx1MDlmZVx1MDlmY1wzXDJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZmVcdTA5ZmZcM1wyXDJcMlx1MDlmZlx1MDEzM1wz XDJcMlwyXHUwYTAwXHUwOWZlXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGEw MVx1MGEwMlw3JVwyXDJcdTBhMDJcdTBhMGFcNVx1MDEzNlx1MDA5Y1wyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTBhMDNcdTBhMDRcNyRcMlwyXHUwYTA0XHUwYTBhXDVcdTAxMzZcdTAwOWNc Mlx1MGEwNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTA2XDdcJ1wyXDJcdTBhMDZcdTBh MGFcNVx1MDEzNlx1MDA5Y1wyXHUwYTA3XHUwYTA4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc NyZcMlwyXHUwYTA4XHUwYTBhXDVcdTAxMzZcdTAwOWNcMlx1MGEwOVx1MGEwMVwzXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhMDlcdTBhMDNcM1wyXDJcMlx1MGEwOVx1MGEwNVwz XDJcMlwyXHUwYTA5XHUwYTA3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGEw YVx1MDEzNVwzXDJcMlwyXHUwYTBiXHUwYTBmXDVcdTAxM2FcdTAwOWUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXHUwYTBjXHUwYTBlXDVcdTAxMzhcdTAwOWRcMlx1MGEwZFx1MGEwY1wzXDJc MlwyXHUwYTBlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTFcM1wyXDJcMlx1MGEwZlx1 MGEwZFwzXDJcMlwyXHUwYTBmXHUwYTEwXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MGExMFx1MDEzN1wzXDJcMlwyXHUwYTExXHUwYTBmXDNcMlwyXDJcdTBhMTJcdTBhMTNcNyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXGZcMlwyXHUwYTEzXHUwYTE3XDVcdTAxM2FcdTAwOWVc Mlx1MGExNFx1MGExNVw3XHJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTVcdTBh MTdcNVx1MDEzYVx1MDA5ZVwyXHUwYTE2XHUwYTEyXDNcMlwyXDJcdTBhMTYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MGExNFwzXDJcMlwyXHUwYTE3XHUwMTM5XDNcMlwyXDJcdTBhMThcdTBh MWNcNVx1MDEzZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGEwXDJcdTBhMTlcdTBhMWJc NVx1MDEzY1x1MDA5ZlwyXHUwYTFhXHUwYTE5XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlx1MGExYlx1MGExZVwzXDJcMlwyXHUwYTFjXHUwYTFhXDNcMlwyXDJcdTBhMWNcdTBhMWQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTFkXHUwMTNiXDNcMlwyXDJcdTBh MWVcdTBhMWNcM1wyXDJcMlx1MGExZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTIwXDdc MTZcMlwyXHUwYTIwXHUwYTI0XDVcdTAxM2VcdTAwYTBcMlx1MGEyMVx1MGEyMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdcMzVcMlwyXHUwYTIyXHUwYTI0XDVcdTAxM2VcdTAwYTBcMlx1MGEy M1x1MGExZlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhMjNcdTBhMjFcM1wy XDJcMlx1MGEyNFx1MDEzZFwzXDJcMlwyXHUwYTI1XHUwYTI5IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNVx1MDE0Mlx1MDBhMlwyXHUwYTI2XHUwYTI4XDVcdTAxNDBcdTAwYTFcMlx1MGEyN1x1 MGEyNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhMjhcdTBhMmJcM1wyXDJc Mlx1MGEyOVx1MGEyN1wzXDJcMlwyXHUwYTI5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBh MmFcM1wyXDJcMlx1MGEyYVx1MDEzZlwzXDJcMlwyXHUwYTJiXHUwYTI5XDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MGEyY1x1MGEyZFw3XDE3XDJcMlx1MGEyZFx1MGEzM1w1XHUw MTQyXHUwMGEyXDJcdTBhMmUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEyZlw3XDM3XDJc Mlx1MGEyZlx1MGEzM1w1XHUwMTQyXHUwMGEyXDJcdTBhMzBcdTBhMzEiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw3XDIwXDJcMlx1MGEzMVx1MGEzM1w1XHUwMTQyXHUwMGEyXDJcdTBhMzJcdTBh MmNcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYTMyXHUwYTJlXDNcMlwyXDJc dTBhMzJcdTBhMzBcM1wyXDJcMlx1MGEzM1x1MDE0MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTBhMzRcdTBhMzVcN1wzMFwyXDJcdTBhMzVcdTBhMzZcdFxuXDJcMlx1MGEzNiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTM4XDdcMzFcMlwyXHUwYTM3XHUwYTM0XDNcMlwy XDJcdTBhMzhcdTBhM2JcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYTM5XHUw YTM3XDNcMlwyXDJcdTBhMzlcdTBhM2FcM1wyXDJcMlx1MGEzYVx1MGEzYyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhM2JcdTBhMzlcM1wyXDJcMlx1MGEzY1x1MGEzZFw1XHUw MTQ0XHUwMGEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGEzZFx1MDE0M1wzXDJcMlwy XHUwYTNlXHUwYTRiXDVcdTAxNDZcdTAwYTRcMlx1MGEzZiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYTRiXDVcdTAxNDhcdTAwYTVcMlx1MGE0MFx1MGE0Ylw1XHUwMTRhXHUwMGE2XDJcdTBh NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0Ylw1XHUwMTRjXHUwMGE3XDJcdTBhNDJc dTBhNGJcNVx1MDE0ZVx1MDBhOFwyXHUwYTQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBh NGJcNVx1MDE2Y1x1MDBiN1wyXHUwYTQ0XHUwYTRiXDVcdTAxNmVcdTAwYjhcMlx1MGE0NSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTRiXDVcdTAxODRcdTAwYzNcMlx1MGE0Nlx1MGE0Ylw1 XHUwMTk0XHUwMGNiXDJcdTBhNDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0OFw3XHUw MGRkXDJcMlx1MGE0OFx1MGE0Ylw1XHUwMTQ0XHUwMGEzXDJcdTBhNDlcdTBhNGIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw1XHUwMTRhXHUwMGE2XDJcdTBhNGFcdTBhM2VcM1wyXDJcMlx1MGE0 YVx1MGEzZlwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhNGFcdTBhNDBcM1wy XDJcMlx1MGE0YVx1MGE0MVwzXDJcMlwyXHUwYTRhXHUwYTQyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1wyXDJcMlx1MGE0YVx1MGE0M1wzXDJcMlwyXHUwYTRhXHUwYTQ0XDNcMlwyXDJcdTBh NGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0NVwzXDJcMlwyXHUwYTRhXHUwYTQ2XDNc MlwyXDJcdTBhNGFcdTBhNDdcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTRh XHUwYTQ5XDNcMlwyXDJcdTBhNGJcdTAxNDVcM1wyXDJcMlx1MGE0Y1x1MGE0ZFw3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAwZTdcMlwyXHUwYTRkXHUwYTRlXDdcMzBcMlwyXHUwYTRlXHUw YTRmXDVcdTAxMjZcdTAwOTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYTRmXHUwYTUw XDchXDJcMlx1MGE1MFx1MGE1MVw1XHUwMTI2XHUwMDk0XDJcdTBhNTEiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MGE1Mlw3XDMxXDJcMlx1MGE1Mlx1MDE0N1wzXDJcMlwyXHUwYTUzXHUwYTU0 XDdcdTAwZTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhNTRcdTBhNTVcN1wzMFwy XDJcdTBhNTVcdTBhNTZcNVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBhNTZcdTBhNTdcNyFcMlwyXHUwYTU3XHUwYTU4XDVcdTAxMjZcdTAwOTRcMlx1MGE1OCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTU5XDdcMzFcMlwyXHUwYTU5XHUwMTQ5XDNcMlwyXDJc dTBhNWFcdTBhNWJcN1x1MDBlNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MGE1Ylx1 MGE1Y1w3XDMwXDJcMlx1MGE1Y1x1MGE1ZFw1XHUwMTI2XHUwMDk0XDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MGE1ZFx1MGE1ZVw3IVwyXDJcdTBhNWVcdTBhNWZcNVx1MDEyNlx1MDA5NFwy XHUwYTVmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNjBcNyFcMlwyXHUwYTYwXHUwYTYx XDVMXCdcMlx1MGE2MVx1MGE2Mlw3XDMxXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YTYyXHUwMTRiXDNcMlwyXDJcdTBhNjNcdTBhNjRcN1wzMFwyXDJcdTBhNjRcdTBhNjUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw1XHUwMTI2XHUwMDk0XDJcdTBhNjVcdTBhNjZcN1wzMVwyXDJc dTBhNjZcdTAxNGRcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYTY3XHUwYTcz XDVcdTAxNTBcdTAwYTlcMlx1MGE2OFx1MGE3M1w1XHUwMTUyXHUwMGFhIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlx1MGE2OVx1MGE3M1w1XHUwMTU0XHUwMGFiXDJcdTBhNmFcdTBhNzNcNVx1 MDE1Nlx1MDBhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhNmJcdTBhNzNcNVx1MDE1 OFx1MDBhZFwyXHUwYTZjXHUwYTczXDVcdTAxNWVcdTAwYjAiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXHUwYTZkXHUwYTczXDVcdTAxNjBcdTAwYjFcMlx1MGE2ZVx1MGE3M1w1XHUwMTYyXHUw MGIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGE2Zlx1MGE3M1w1XHUwMTY0XHUwMGIz XDJcdTBhNzBcdTBhNzNcNVx1MDE2Nlx1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc dTBhNzFcdTBhNzNcNVx1MDE2YVx1MDBiNlwyXHUwYTcyXHUwYTY3XDNcMlwyXDJcdTBhNzIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGE2OFwzXDJcMlwyXHUwYTcyXHUwYTY5XDNcMlwyXDJc dTBhNzJcdTBhNmFcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTcyXHUwYTZi XDNcMlwyXDJcdTBhNzJcdTBhNmNcM1wyXDJcMlx1MGE3Mlx1MGE2ZFwzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXDJcdTBhNzJcdTBhNmVcM1wyXDJcMlx1MGE3Mlx1MGE2ZlwzXDJcMlwy XHUwYTcyXHUwYTcwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE3Mlx1MGE3 MVwzXDJcMlwyXHUwYTczXHUwMTRmXDNcMlwyXDJcdTBhNzQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MGE3NVw3XHUwMGM3XDJcMlx1MGE3NVx1MDE1MVwzXDJcMlwyXHUwYTc2XHUwYTc3XDdc dTAwYzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhNzdcdTBhNzhcN1x1MDBjOVwy XDJcdTBhNzhcdTBhNzlcN1wzMFwyXDJcdTBhNzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MGE3YVw3XHUwMGZhXDJcMlx1MGE3YVx1MGE4NVw3XDMxXDJcMlx1MGE3Ylx1MGE3Y1w3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcIlwyXDJcdTBhN2NcdTBhODZcN1x1MDBmYVwyXDJcdTBhN2Rc dTBhN2VcNyRcMlwyXHUwYTdlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODZcN1x1MDBm YVwyXDJcdTBhN2ZcdTBhODBcNyVcMlwyXHUwYTgwXHUwYTg2XDdcdTAwZmEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcdTBhODFcdTBhODJcNyZcMlwyXHUwYTgyXHUwYTg2XDdcdTAwZmFc MlwyXHUwYTgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODRcN1wnXDJcMlx1MGE4NFx1 MGE4Nlw3XHUwMGZhXDJcMlx1MGE4NVx1MGE3YlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTBhODVcdTBhN2RcM1wyXDJcMlx1MGE4NVx1MGE3ZlwzXDJcMlwyXHUwYTg1XHUwYTgx IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE4NVx1MGE4M1wzXDJcMlwyXHUw YTg2XHUwMTUzXDNcMlwyXDJcdTBhODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE4OFw3 XHUwMGNhXDJcMlx1MGE4OFx1MGE5M1w1XHUwMTVhXHUwMGFlXDJcdTBhODlcdTBhOGEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3XCJcMlwyXHUwYThhXHUwYTk0XDdcdTAwZmFcMlwyXHUwYThi XHUwYThjXDckXDJcMlx1MGE4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTk0XDdcdTAw ZmFcMlwyXHUwYThkXHUwYThlXDclXDJcMlx1MGE4ZVx1MGE5NFw3XHUwMGZhIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwYThmXHUwYTkwXDcmXDJcMlx1MGE5MFx1MGE5NFw3XHUwMGZh XDJcMlx1MGE5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTkyXDdcJ1wyXDJcdTBhOTJc dTBhOTRcN1x1MDBmYVwyXDJcdTBhOTNcdTBhODlcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlwyXHUwYTkzXHUwYThiXDNcMlwyXDJcdTBhOTNcdTBhOGRcM1wyXDJcMlx1MGE5M1x1MGE4 ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhOTNcdTBhOTFcM1wyXDJcMlx1 MGE5NFx1MDE1NVwzXDJcMlwyXHUwYTk1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhOTZc N1x1MDBjYlwyXDJcdTBhOTZcdTBhYTFcNVx1MDE1YVx1MDBhZVwyXHUwYTk3XHUwYTk4IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN1wiXDJcMlx1MGE5OFx1MGFhMlw1XHUwMTVhXHUwMGFlXDJc dTBhOTlcdTBhOWFcNyRcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhOWFcdTBhYTJc NVx1MDE1YVx1MDBhZVwyXHUwYTliXHUwYTljXDclXDJcMlx1MGE5YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwYWEyXDVcdTAxNWFcdTAwYWVcMlx1MGE5ZFx1MGE5ZVw3JlwyXDJcdTBhOWVc dTBhYTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMTVhXHUwMGFlXDJcdTBhOWZcdTBh YTBcN1wnXDJcMlx1MGFhMFx1MGFhMlw1XHUwMTVhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAwYWVcMlx1MGFhMVx1MGE5N1wzXDJcMlwyXHUwYWExXHUwYTk5XDNcMlwyXDJcdTBhYTEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGE5YlwzXDJcMlwyXHUwYWExXHUwYTlkXDNcMlwyXDJc dTBhYTFcdTBhOWZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWEyXHUwMTU3 XDNcMlwyXDJcdTBhYTNcdTBhYTRcN1x1MDBjY1wyXDJcdTBhYTRcdTBhYTUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw1XHUwMTVhXHUwMGFlXDJcdTBhYTVcdTBhYTdcN1wiXDJcMlx1MGFhNlx1 MGFhOFw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYWE3XHUwYWE2XDNc MlwyXDJcdTBhYThcdTBhYTlcM1wyXDJcMlx1MGFhOVx1MGFhNyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTBhYTlcdTBhYWFcM1wyXDJcMlx1MGFhYVx1MDE1OVwzXDJcMlwyXHUw YWFiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhYWNcN1x1MDBmYlwyXDJcdTBhYWNcdTBh YWRcN1wzMlwyXDJcdTBhYWRcdTBhYWVcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZh XDJcMlx1MGFhZVx1MGFiOFw3XDMzXDJcMlx1MGFhZlx1MGFiNFw3XHUwMGZiXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXHUwYWIwXHUwYWIxXDdcMzRcMlwyXHUwYWIxXHUwYWIzXDVcdTAx NWNcdTAwYWZcMlx1MGFiMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWIwXDNcMlwyXDJc dTBhYjNcdTBhYjZcM1wyXDJcMlx1MGFiNFx1MGFiMlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTBhYjRcdTBhYjVcM1wyXDJcMlx1MGFiNVx1MGFiOFwzXDJcMlwyXHUwYWI2XHUw YWI0XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGFiN1x1MGFhYlwzXDJcMlwy XHUwYWI3XHUwYWFmXDNcMlwyXDJcdTBhYjhcdTAxNWIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwYWI5XHUwYWJkXDdcdTAwZmJcMlwyXHUwYWJhXHUwYWJiXDdcMzJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhYmJcdTBhYmNcN1x1MDBmYVwyXDJcdTBhYmNcdTBh YmVcN1wzM1wyXDJcdTBhYmRcdTBhYmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwYWJkXHUwYWJlXDNcMlwyXDJcdTBhYmVcdTAxNWRcM1wyXDJcMlx1MGFiZiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYWMwXDdcdTAwY2RcMlwyXHUwYWMwXHUwYWMxXDdcMzBcMlwyXHUw YWMxXHUwYWMyXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxM1wyXDJcdTBhYzJcdTBhYzNc N1wzMVwyXDJcdTBhYzNcdTAxNWZcM1wyXDJcMlx1MGFjNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYWM1XDdcdTAwY2VcMlwyXHUwYWM1XHUwYWM2XDdcMzBcMlwyXHUwYWM2XHUwYWM3XDci KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTBhYzdcdTBhYzhcN1wzMVwyXDJc dTBhYzhcdTAxNjFcM1wyXDJcMlx1MGFjOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWNh XDdcdTAwY2ZcMlwyXHUwYWNhXHUwYWQwXDdcMzBcMlwyXHUwYWNiXHUwYWNjXDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDBlY1wyXDJcdTBhY2NcdTBhY2RcN1wzMFwyXDJcdTBhY2RcdTBh Y2VcN1x1MDBmYVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGFjZVx1MGFkMVw3XDMx XDJcMlx1MGFjZlx1MGFkMVw3XHUwMGZhXDJcMlx1MGFkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYWNiXDNcMlwyXDJcdTBhZDBcdTBhY2ZcM1wyXDJcMlx1MGFkMVx1MGFkMlwzXDJcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZDJcdTBhZDNcN1wzMVwyXDJcdTBhZDNcdTAx NjNcM1wyXDJcMlx1MGFkNFx1MGFkNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZDBc MlwyXHUwYWQ1XHUwMTY1XDNcMlwyXDJcdTBhZDZcdTBhZDdcN1x1MDBkMVwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlx1MGFkN1x1MGFkOFw3XDMwXDJcMlx1MGFkOFx1MGFkOVw1TFwnXDJc dTBhZDlcdTBhZGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGFkYVx1MDE2 N1wzXDJcMlwyXHUwYWRiXHUwYWRjXHRcZlwyXDJcdTBhZGMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDE2OVwzXDJcMlwyXHUwYWRkXHUwYWRlXDdcdTAwZDJcMlwyXHUwYWRlXHUwYWRmXDdc MzAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhZGZcdTBhZTRcNVgtXDJcdTBhZTBc dTBhZTFcNyhcMlwyXHUwYWUxXHUwYWUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0BcMlwy XHUwYWUyXHUwYWUzXDdcYlwyXDJcdTBhZTNcdTBhZTVcNVx1MDE2OFx1MDBiNSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcdTBhZTRcdTBhZTBcM1wyXDJcMlx1MGFlNFx1MGFlNVwzXDJcMlwy XHUwYWU1XHUwYWU2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFlNlx1MGFl N1w3XDMxXDJcMlx1MGFlN1x1MDE2YlwzXDJcMlwyXHUwYWU4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBhZTlcdFxyXDJcMlx1MGFlOVx1MDE2ZFwzXDJcMlwyXHUwYWVhXHUwYWY1XDVcdTAx NzAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBiOVwyXHUwYWViXHUwYWY1XDVcdTAxNzJc dTAwYmFcMlx1MGFlY1x1MGFmNVw1XHUwMTc0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAw YmJcMlx1MGFlZFx1MGFmNVw1XHUwMTc2XHUwMGJjXDJcdTBhZWVcdTBhZjVcNVx1MDE3OCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGJkXDJcdTBhZWZcdTBhZjVcNVx1MDE3YVx1MDBiZVwy XHUwYWYwXHUwYWY1XDVcdTAxN2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBiZlwyXHUw YWYxXHUwYWY1XDVcdTAxN2VcdTAwYzBcMlx1MGFmMlx1MGFmNVw1XHUwMTgwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAwYzFcMlx1MGFmM1x1MGFmNVw1XHUwMTgyXHUwMGMyXDJcdTBhZjRc dTBhZWFcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYWY0XHUwYWViXDNcMlwy XDJcdTBhZjRcdTBhZWNcM1wyXDJcMlx1MGFmNFx1MGFlZCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTBhZjRcdTBhZWVcM1wyXDJcMlx1MGFmNFx1MGFlZlwzXDJcMlwyXHUwYWY0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZjBcM1wyXDJcMlx1MGFmNFx1MGFmMVwzXDJc MlwyXHUwYWY0XHUwYWYyXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFmNFx1 MGFmM1wzXDJcMlwyXHUwYWY1XHUwMTZmXDNcMlwyXDJcdTBhZjZcdTBhZjdcNyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMGRhXDJcMlx1MGFmN1x1MGFmOFw3XDMwXDJcMlx1MGFmOFx1MGFm OVw1XHUwMTI2XHUwMDk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGFmOVx1MGFmYVw3 XDMxXDJcMlx1MGFmYVx1MDE3MVwzXDJcMlwyXHUwYWZiXHUwYWZjIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN1x1MDBkZlwyXDJcdTBhZmNcdTBhZmRcN1wzMFwyXDJcdTBhZmRcdTBhZmVcNVx1 MDEyNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBhZmVcdTBhZmZcN1wzMVwy XDJcdTBhZmZcdTAxNzNcM1wyXDJcMlx1MGIwMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YjAxXDdcdTAwZThcMlwyXHUwYjAxXHUwYjA5XDdcMzBcMlwyXHUwYjAyXHUwYjAzXDciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIipcMlwyXHUwYjAzXHUwYjA0XDdcYlwyXDJcdTBiMDRcdTBiMDVc N1x1MDBlY1wyXDJcdTBiMDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIwNlw3XDMwXDJc Mlx1MGIwNlx1MGIwN1w3XHUwMGZhXDJcMlx1MGIwN1x1MGIwOFw3IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMzFcMlwyXHUwYjA4XHUwYjBhXDchXDJcMlx1MGIwOVx1MGIwMlwzXDJcMlwyXHUw YjA5XHUwYjBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGIwYVx1MGIxMFwz XDJcMlwyXHUwYjBiXHUwYjBjXDdbXDJcMlx1MGIwYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwYjBkXDdcYlwyXDJcdTBiMGRcdTBiMGVcNUxcJ1wyXHUwYjBlXHUwYjBmXDchXDJcMlx1MGIw ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjExXDNcMlwyXDJcdTBiMTBcdTBiMGJcM1wy XDJcMlx1MGIxMFx1MGIxMVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiMTFc dTBiMTJcM1wyXDJcMlx1MGIxMlx1MGIxM1w1XHUwMTI2XHUwMDk0XDJcdTBiMTMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MGIxNFw3XDMxXDJcMlx1MGIxNFx1MDE3NVwzXDJcMlwyXHUwYjE1 XHUwYjE2XDdcdTAwZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiMTZcdTBiMTdc N1wzMFwyXDJcdTBiMTdcdTBiMThcNVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBiMThcdTBiMTlcN1wzMVwyXDJcdTBiMTlcdTAxNzdcM1wyXDJcMlx1MGIxYVx1MGIx YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZTBcMlwyXHUwYjFiXHUwYjFjXDdcMzBc MlwyXHUwYjFjXHUwYjFkXDVcdTAxMjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA5NFwy XHUwYjFkXHUwYjFlXDdcMzFcMlwyXHUwYjFlXHUwMTc5XDNcMlwyXDJcdTBiMWYiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MGIyNFw3XHUwMGUxXDJcMlx1MGIyMFx1MGIyMVw3XDIxXDJcMlx1 MGIyMVx1MGIyMlw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcYlwyXDJcdTBiMjJcdTBiMjNc N1x1MDBmYVwyXDJcdTBiMjNcdTBiMjVcNyFcMlwyXHUwYjI0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBiMjBcM1wyXDJcMlx1MGIyNFx1MGIyNVwzXDJcMlwyXHUwYjI1XHUwYjI2XDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIyNlx1MGIyN1w3XDMwXDJcMlx1MGIyN1x1 MGIyOFw1XHUwMTI2XHUwMDk0XDJcdTBiMjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIy OVw3XDMxXDJcMlx1MGIyOVx1MDE3YlwzXDJcMlwyXHUwYjJhXHUwYjJiXDdcdTAwZTIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiMmJcdTBiMmNcN1wzMFwyXDJcdTBiMmNcdTBiMmRc NVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiMmRcdTBiMmVcN1wz MVwyXDJcdTBiMmVcdTAxN2RcM1wyXDJcMlx1MGIyZlx1MGIzMCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdcdTAwZTNcMlwyXHUwYjMwXHUwYjMxXDdcMzBcMlwyXHUwYjMxXHUwYjMyXDVcdTAx MjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA5NFwyXHUwYjMyXHUwYjMzXDdcMzFcMlwy XHUwYjMzXHUwMTdmXDNcMlwyXDJcdTBiMzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIz NVw3XHUwMGU0XDJcMlx1MGIzNVx1MGIzNlw3XDMwXDJcMlx1MGIzNlx1MGIzN1w1IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAxMjZcdTAwOTRcMlx1MGIzN1x1MGIzOFw3XDMxXDJcMlx1MGIz OFx1MDE4MVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBiMzlcdTBiM2FcN1x1 MDBkZVwyXDJcdTBiM2FcdTBiM2JcN1wzMFwyXDJcdTBiM2IiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MGI0MFw1WC1cMlx1MGIzY1x1MGIzZFw3KFwyXDJcdTBiM2RcdTBiM2VcN0BcMlwyXHUw YjNlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiM2ZcN1xiXDJcMlx1MGIzZlx1MGI0MVw1 XHUwMTY4XHUwMGI1XDJcdTBiNDBcdTBiM2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXHUwYjQwXHUwYjQxXDNcMlwyXDJcdTBiNDFcdTBiNDJcM1wyXDJcMlx1MGI0MiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwYjQzXDchXDJcMlx1MGI0M1x1MGI0NFw1XHUwMTI2XHUwMDk0 XDJcdTBiNDRcdTBiNDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGI0NVx1 MDE4M1wzXDJcMlwyXHUwYjQ2XHUwYjRjXDVcdTAxODZcdTAwYzQiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXHUwYjQ3XHUwYjRjXDVcdTAxODhcdTAwYzVcMlx1MGI0OFx1MGI0Y1w1XHUwMThj XHUwMGM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGI0OVx1MGI0Y1w1XHUwMThlXHUw MGM4XDJcdTBiNGFcdTBiNGNcNVx1MDE5MFx1MDBjOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcdTBiNGJcdTBiNDZcM1wyXDJcMlx1MGI0Ylx1MGI0N1wzXDJcMlwyXHUwYjRiXHUwYjQ4IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI0Ylx1MGI0OVwzXDJcMlwyXHUwYjRi XHUwYjRhXDNcMlwyXDJcdTBiNGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE4NVwzXDJc MlwyXHUwYjRkXHUwYjRlXDdcdTAwYzJcMlwyXHUwYjRlXHUwYjRmXDdcMzAiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcdTBiNGZcdTBiNTBcNVx1MDEyNlx1MDA5NFwyXHUwYjUwXHUwYjUx XDdcMjJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiNTFcdTBiNTJcNVx1MDEyNlx1 MDA5NFwyXHUwYjUyXHUwYjUzXDdcMzZcMlwyXHUwYjUzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTBiNTRcNVx1MDEyNlx1MDA5NFwyXHUwYjU0XHUwYjU1XDdcMzFcMlwyXHUwYjU1XHUwMTg3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI1Nlx1MGI1N1w3XHUwMGMzXDJc Mlx1MGI1N1x1MGI1OFw3XDMwXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjU4XHUw YjVkXDVcdTAxOGFcdTAwYzZcMlx1MGI1OVx1MGI1YVw3KFwyXDJcdTBiNWEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MGI1Y1w1XHUwMThhXHUwMGM2XDJcdTBiNWJcdTBiNTlcM1wyXDJcMlx1 MGI1Y1x1MGI1ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNWRcdTBiNWJc M1wyXDJcMlx1MGI1ZFx1MGI1ZVwzXDJcMlwyXHUwYjVlIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTBiNjBcM1wyXDJcMlx1MGI1Zlx1MGI1ZFwzXDJcMlwyXHUwYjYwXHUwYjYxXDchXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjYxXHUwYjYyXDVcdTAxMjZcdTAwOTRcMlx1MGI2 Mlx1MGI2M1w3IVwyXDJcdTBiNjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGI2NFw1XHUw MTI2XHUwMDk0XDJcdTBiNjRcdTBiNjVcNyFcMlwyXHUwYjY1XHUwYjY2IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcNVx1MDEyNlx1MDA5NFwyXHUwYjY2XHUwYjY3XDdcMzFcMlwyXHUwYjY3XHUw MTg5XDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MGI2OFx1MGI2OVx0XDE2XDJc Mlx1MGI2OVx1MDE4YlwzXDJcMlwyXHUwYjZhXHUwYjZiIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN1x1MDBjNFwyXDJcdTBiNmJcdTBiNmNcN1wzMFwyXDJcdTBiNmNcdTBiNmRcNVx1MDEyNiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiNmRcdTBiNmVcNyFcMlwyXHUwYjZl XHUwYjZmXDVcdTAxMjZcdTAwOTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYjZmXHUw YjcwXDchXDJcMlx1MGI3MFx1MGI3MVw1XHUwMTI2XHUwMDk0XDJcdTBiNzEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MGI3Mlw3XDMxXDJcMlx1MGI3Mlx1MDE4ZFwzXDJcMlwyXHUwYjczXHUw Yjc0XDdcdTAwYzUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiNzRcdTBiNzVcN1wz MFwyXDJcdTBiNzVcdTBiNzZcNVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTBiNzZcdTBiNzdcNyFcMlwyXHUwYjc3XHUwYjc4XDVcdTAxMjZcdTAwOTRcMlx1MGI3OCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjc5XDchXDJcMlx1MGI3OVx1MGI3YVw1XHUwMTI2 XHUwMDk0XDJcdTBiN2FcdTBiN2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1 MGI3Ylx1MDE4ZlwzXDJcMlwyXHUwYjdjXHUwYjdkXDdcdTAwYzZcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTBiN2RcdTBiN2VcN1wzMFwyXDJcdTBiN2VcdTBiN2ZcN0BcMlwyXHUwYjdm XHUwYjgwXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxiXDJcMlx1MGI4MFx1MGI4NVw1XHUw MTkyXHUwMGNhXDJcdTBiODFcdTBiODJcNyhcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBiODJcdTBiODRcNVx1MDE5Mlx1MDBjYVwyXHUwYjgzXHUwYjgxXDNcMlwyXDJcdTBiODQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGI4N1wzXDJcMlwyXHUwYjg1XHUwYjgzXDNcMlwyXDJc dTBiODVcdTBiODZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjg2XHUwYjg4 XDNcMlwyXDJcdTBiODdcdTBiODVcM1wyXDJcMlx1MGI4OFx1MGI4OVw3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCIhXDJcMlx1MGI4OVx1MGI4YVw1XHUwMTI2XHUwMDk0XDJcdTBiOGFcdTBiOGJc NyFcMlwyXHUwYjhiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiOGNcNVx1MDEyNlx1MDA5 NFwyXHUwYjhjXHUwYjhkXDchXDJcMlx1MGI4ZFx1MGI4ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDVcdTAxMjZcdTAwOTRcMlx1MGI4ZVx1MGI4Zlw3XDMxXDJcMlx1MGI4Zlx1MDE5MVwzXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiOTBcdTBiOTFcdFwxN1wyXDJcdTBiOTFc dTAxOTNcM1wyXDJcMlx1MGI5Mlx1MGI5MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAw ZWFcMlwyXHUwYjkzXHUwYjk0XDdcMzBcMlwyXHUwYjk0XHUwYjk1XDVcdTAxMjYiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDA5NFwyXHUwYjk1XHUwYjlkXDdcMzZcMlwyXHUwYjk2XHUwYjk3 XDVcdTAxMjRcdTAwOTMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYjk3XHUwYjk4XDch XDJcMlx1MGI5OFx1MGI5OVw1XHUwMTI0XHUwMDkzXDJcdTBiOTkiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGI5YVw3IFwyXDJcdTBiOWFcdTBiOWNcM1wyXDJcMlx1MGI5Ylx1MGI5NlwzXDJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiOWNcdTBiOWZcM1wyXDJcMlx1MGI5ZFx1 MGI5YlwzXDJcMlwyXHUwYjlkXHUwYjllXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc Mlx1MGI5ZVx1MGJhMFwzXDJcMlwyXHUwYjlmXHUwYjlkXDNcMlwyXDJcdTBiYTBcdTBiYTEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGJhMVx1MDE5NVwzXDJcMlwyXHUwMGYw XHUwMTk5XHUwMTliXHUwMWE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYTlcdTAxYWNc dTAxYjRcdTAxYjlcdTAxYmRcdTAxYzBcdTAxYzZcdTAxY2JcdTAxY2YiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDFkMlx1MDFkOFx1MDFlYVx1MDFlY1x1MDFmNFx1MDFmZFx1MDIwNlx1MDIw Zlx1MDIxOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjIxXHUwMjJhXHUwMjMzXHUwMjNj XHUwMjQ1XHUwMjRiXHUwMjUzXHUwMjViXHUwMjYzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAyODFcdTAyODhcdTAyOGZcdTAyOThcdTAyOWNcdTAyYTBcdTAyYTdcdTAyYjFcdTAyYmUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDJjZFx1MDJlMlx1MDJlOFx1MDMwNFx1MDMwYVx1MDMx M1x1MDMyNlx1MDMzNlx1MDM0MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzcyXHUwMzgy XHUwMzg5XHUwMzhmXHUwM2E3XHUwM2IyXHUwM2I1XHUwM2I4XHUwM2RmIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzZTNcdTAzZjBcdTAzZjdcdTA0MDlcdTA0MWVcdTA0MzNcdTA0MzlcdTA0 NGZcdTA0NWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ2MFx1MDQ2NVx1MDQ2Ylx1MDQ2 ZVx1MDQ3Mlx1MDQ3Nlx1MDQ3ZFx1MDQ5N1x1MDRhMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNGE5XHUwNGFkXHUwNGIzXHUwNGI3XHUwNGU1XHUwNGU5XHUwNGYwXHUwNGY2XHUwNGZhIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MDNcdTA1MDhcdTA1MTRcdTA1MWZcdTA1MmNcdTA1 M2RcdTA1NDJcdTA1NDdcdTA1NTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1ZFx1MDU2 Mlx1MDU2YVx1MDU4YVx1MDU4Zlx1MDU5NFx1MDU5ZVx1MDVhOFx1MDViNCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNWI5XHUwNWJlXHUwNWNhXHUwNWNmXHUwNWQ0XHUwNWRlXHUwNWU0XHUw NWZmXHUwNjA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MGZcdTA2MWRcdTA2MmFcdTA2 MmZcdTA2MzNcdTA2M2VcdTA2NDRcdTA2NGZcdTA2NTgiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDY2Mlx1MDY3NFx1MDY3OVx1MDY3ZFx1MDY4OFx1MDY4ZVx1MDY5OFx1MDY5Zlx1MDZhNyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmFlXHUwNmJhXHUwNmM1XHUwNmM4XHUwNmQzXHUw NmQ4XHUwNmUyXHUwNmU4XHUwNmZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MDFcdTA3 MGJcdTA3MTFcdTA3MWZcdTA3MmFcdTA3MmZcdTA3MzhcdTA3M2ZcdTA3NGEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDc1MVx1MDc1Ylx1MDdhNlx1MDdhYlx1MDdhZVx1MDdiZlx1MDdjNVx1 MDdjY1x1MDdkOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODI0XHUwODI5XHUwODJjXHUw ODNkXHUwODQzXHUwODRhXHUwODUzXHUwODY0XHUwODZhIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA4NzJcdTA4ODBcdTA4ODVcdTA4OTJcdTA4OTdcdTA4YTRcdTA4YTlcdTA4YjBcdTA4YmUi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjM1x1MDhjYVx1MDhkZlx1MDhlNFx1MDhlZFx1 MDkwZVx1MDkyZVx1MDkzMVx1MDkzNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTQxXHUw OTU0XHUwOTYxXHUwOTY3XHUwOTZkXHUwOTczXHUwOTc5XHUwOTdmXHUwOTg1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5OGJcdTA5OTFcdTA5OTdcdTA5OTlcdTA5OWVcdTA5YTFcdTA5YTdc dTA5YWJcdTA5YjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDliYVx1MDljYVx1MDlkMlx1 MDlkYVx1MDllMlx1MDllYVx1MDlmMVx1MDlmOFx1MDlmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYTA5XHUwYTBmXHUwYTE2XHUwYTFjXHUwYTIzXHUwYTI5XHUwYTMyXHUwYTM5XHUwYTRh IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNzJcdTBhODVcdTBhOTNcdTBhYTFcdTBhYTlc dTBhYjRcdTBhYjdcdTBhYmRcdTBhZDAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFlNFx1 MGFmNFx1MGIwOVx1MGIxMFx1MGIyNFx1MGI0MFx1MGI0Ylx1MGI1ZFx1MGI4NSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYjlkIikNCg0KKyAgICAgICAgcmV0dXJuIGJ1Zi5nZXR2YWx1ZSgp DQoNCisNCg0KKw0KDQorY2xhc3MgVmZyU3ludGF4UGFyc2VyICggUGFyc2VyICk6DQoNCisNCg0K KyAgICBncmFtbWFyRmlsZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KDQorDQoNCisgICAgYXRuID0g QVRORGVzZXJpYWxpemVyKCkuZGVzZXJpYWxpemUoc2VyaWFsaXplZEFUTigpKQ0KDQorDQoNCisg ICAgZGVjaXNpb25zVG9ERkEgPSBbIERGQShkcywgaSkgZm9yIGksIGRzIGluIGVudW1lcmF0ZShh dG4uZGVjaXNpb25Ub1N0YXRlKSBdDQoNCisNCg0KKyAgICBzaGFyZWRDb250ZXh0Q2FjaGUgPSBQ cmVkaWN0aW9uQ29udGV4dENhY2hlKCkNCg0KKw0KDQorICAgIGxpdGVyYWxOYW1lcyA9IFsgIjxJ TlZBTElEPiIsICInc2hvdyciLCAiJ3B1c2gnIiwgIidwb3AnIiwgIicjcHJhZ21hJyIsDQoNCisg ICAgICAgICAgICAgICAgICAgICAiJ3BhY2snIiwgIic9JyIsICInSU1BR0VfVE9LRU4nIiwgIidI T1JJWk9OVEFMJyIsICInTVVMVElfTElORSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIic8 PCciLCAiJz4+JyIsICInKyciLCAiJyonIiwgIiclJyIsICInZm9ybWF0JyIsICInPyciLA0KDQor ICAgICAgICAgICAgICAgICAgICAgIicjZGVmaW5lJyIsICInI2luY2x1ZGUnIiwgIidmb3JtcGtn dHlwZSciLCAiJ3snIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInfSciLCAiJygnIiwgIicp JyIsICInWyciLCAiJ10nIiwgIicuJyIsICInLSciLCAiJzonIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICInLyciLCAiJzsnIiwgIicsJyIsICInPT0nIiwgIichPSciLCAiJzw9JyIsICInPCci LA0KDQorICAgICAgICAgICAgICAgICAgICAgIic+PSciLCAiJz4nIiwgIid8JyIsICInJiciLCAi J2RldmljZXBhdGgnIiwgIidmb3Jtc2V0JyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2Zv cm1zZXRpZCciLCAiJ2VuZGZvcm1zZXQnIiwgIid0aXRsZSciLCAiJ2Zvcm1pZCciLA0KDQorICAg ICAgICAgICAgICAgICAgICAgIidvbmVvZiciLCAiJ2VuZG9uZW9mJyIsICIncHJvbXB0JyIsICIn b3JkZXJlZGxpc3QnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInbWF4Y29udGFpbmVycyci LCAiJ2VuZGxpc3QnIiwgIidlbmRmb3JtJyIsICInZm9ybSciLA0KDQorICAgICAgICAgICAgICAg ICAgICAgIidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIsICInc3VidGl0bGUn IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInZW5kc3VidGl0bGUnIiwgIidoZWxwJyIsICIn dGV4dCciLCAiJ29wdGlvbiciLCAiJ2ZsYWdzJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAi J2RhdGUnIiwgIidlbmRkYXRlJyIsICIneWVhciciLCAiJ21vbnRoJyIsICInZGF5JyIsDQoNCisg ICAgICAgICAgICAgICAgICAgICAiJ3RpbWUnIiwgIidlbmR0aW1lJyIsICInaG91ciciLCAiJ21p bnV0ZSciLCAiJ3NlY29uZCciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidncmF5b3V0aWYn IiwgIidsYWJlbCciLCAiJ3RpbWVvdXQnIiwgIidpbnZlbnRvcnknIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICInX05PTl9OVl9EQVRBX01BUCciLCAiJ3N0cnVjdCciLCAiJ3VuaW9uJyIsICIn Qk9PTEVBTiciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidVSU5UNjQnIiwgIidVSU5UMzIn IiwgIidVSU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdfSUQnIiwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICInRUZJX0hJSV9EQVRFJyIsICInRUZJX0hJSV9USU1FJyIsICInRUZJX0hJ SV9SRUYnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInZ3VpZCciLCAiJ2NoZWNrYm94JyIs ICInZW5kY2hlY2tib3gnIiwgIidudW1lcmljJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAi J2VuZG51bWVyaWMnIiwgIidtaW5pbXVtJyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICInZGVmYXVsdCciLCAiJ3Bhc3N3b3JkJyIsICInZW5kcGFzc3dv cmQnIiwgIidzdHJpbmcnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInZW5kc3RyaW5nJyIs ICInbWluc2l6ZSciLCAiJ21heHNpemUnIiwgIidlbmNvZGluZyciLA0KDQorICAgICAgICAgICAg ICAgICAgICAgIidzdXBwcmVzc2lmJyIsICInZGlzYWJsZWlmJyIsICInaGlkZGVuJyIsICInZ290 byciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidmb3Jtc2V0Z3VpZCciLCAiJ2luY29uc2lz dGVudGlmJyIsICInd2FybmluZ2lmJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ25vc3Vi bWl0aWYnIiwgIidlbmRpZiciLCAiJ2tleSciLCAiJ0RFRkFVTFQnIiwgIidNQU5VRkFDVFVSSU5H JyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ0NIRUNLQk9YX0RFRkFVTFQnIiwgIidDSEVD S0JPWF9ERUZBVUxUX01GRyciLCAiJ0lOVEVSQUNUSVZFJyIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAiJ05WX0FDQ0VTUyciLCAiJ1JFU0VUX1JFUVVJUkVEJyIsICInUkVDT05ORUNUX1JFUVVJ UkVEJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ0xBVEVfQ0hFQ0snIiwgIidSRUFEX09O TFknIiwgIidPUFRJT05TX09OTFknIiwgIidSRVNUX1NUWUxFJyIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAiJ2NsYXNzJyIsICInc3ViY2xhc3MnIiwgIidjbGFzc2d1aWQnIiwgIid0eXBlZGVm JyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ3Jlc3RvcmUnIiwgIidzYXZlJyIsICInZGVm YXVsdHMnIiwgIidiYW5uZXInIiwgIidhbGlnbiciLA0KDQorICAgICAgICAgICAgICAgICAgICAg IidsZWZ0JyIsICIncmlnaHQnIiwgIidjZW50ZXInIiwgIidsaW5lJyIsICInbmFtZSciLA0KDQor ICAgICAgICAgICAgICAgICAgICAgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25p ZCciLCAiJ2ltYWdlJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2xvY2tlZCciLCAiJ3J1 bGUnIiwgIidlbmRydWxlJyIsICIndmFsdWUnIiwgIidyZWFkJyIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAiJ3dyaXRlJyIsICIncmVzZXRidXR0b24nIiwgIidlbmRyZXNldGJ1dHRvbiciLCAi J2RlZmF1bHRzdG9yZSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidhdHRyaWJ1dGUnIiwg Iid2YXJzdG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIndmFyc2l6ZSciLA0KDQorICAgICAgICAg ICAgICAgICAgICAgIiduYW1ldmFsdWV2YXJzdG9yZSciLCAiJ2FjdGlvbiciLCAiJ2NvbmZpZyci LCAiJ2VuZGFjdGlvbiciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidyZWZyZXNoJyIsICIn aW50ZXJ2YWwnIiwgIid2YXJzdG9yZWRldmljZSciLCAiJ2d1aWRvcCciLA0KDQorICAgICAgICAg ICAgICAgICAgICAgIidlbmRndWlkb3AnIiwgIidkYXRhdHlwZSciLCAiJ2RhdGEnIiwgIidtb2Rh bCciLCAiJ05PTl9ERVZJQ0UnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInRElTS19ERVZJ Q0UnIiwgIidWSURFT19ERVZJQ0UnIiwgIidORVRXT1JLX0RFVklDRSciLA0KDQorICAgICAgICAg ICAgICAgICAgICAgIidJTlBVVF9ERVZJQ0UnIiwgIidPTkJPQVJEX0RFVklDRSciLCAiJ09USEVS X0RFVklDRSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidTRVRVUF9BUFBMSUNBVElPTici LCAiJ0dFTkVSQUxfQVBQTElDQVRJT04nIiwgIidGUk9OVF9QQUdFJyIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAiJ1NJTkdMRV9VU0UnIiwgIidZRUFSX1NVUFBSRVNTJyIsICInTU9OVEhfU1VQ UFJFU1MnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInREFZX1NVUFBSRVNTJyIsICInSE9V Ul9TVVBQUkVTUyciLCAiJ01JTlVURV9TVVBQUkVTUyciLA0KDQorICAgICAgICAgICAgICAgICAg ICAgIidTRUNPTkRfU1VQUFJFU1MnIiwgIidTVE9SQUdFX05PUk1BTCciLCAiJ1NUT1JBR0VfVElN RSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidTVE9SQUdFX1dBS0VVUCciLCAiJ1VOSVFV RSciLCAiJ05PRU1QVFknIiwgIidjb25kJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2Zp bmQnIiwgIidtaWQnIiwgIid0b2tlbiciLCAiJ3NwYW4nIiwgIidkdXAnIiwgIid2YXJlcXZhbCci LA0KDQorICAgICAgICAgICAgICAgICAgICAgIid2YXInIiwgIidpZGVxdmFsJyIsICInaWRlcWlk JyIsICInaWRlcXZhbGxpc3QnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICIncXVlc3Rpb25y ZWYnIiwgIidydWxlcmVmJyIsICInc3RyaW5ncmVmJyIsICIncHVzaHRoaXMnIiwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICInc2VjdXJpdHknIiwgIidnZXQnIiwgIidUUlVFJyIsICInRkFMU0Un IiwgIidPTkUnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInT05FUyciLCAiJ1pFUk8nIiwg IidVTkRFRklORUQnIiwgIidWRVJTSU9OJyIsICInbGVuZ3RoJyIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAiJ0FORCciLCAiJ09SJyIsICInTk9UJyIsICInc2V0JyIsICInficiLCAiJ2Jvb2x2 YWwnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInc3RyaW5ndmFsJyIsICIndW5pbnR2YWwn IiwgIid0b3VwcGVyJyIsICIndG9sb3dlciciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidt YXRjaCciLCAiJ21hdGNoMiciLCAiJ2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCg0K KyAgICAgICAgICAgICAgICAgICAgICInc3RyaW5ncmVmdmFsJyIsICInbWFwJyIsICIncmVmcmVz aGd1aWQnIiwgIidTVFJJTkdfVE9LRU4nIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInT1BU SU9OX0RFRkFVTFQnIiwgIidPUFRJT05fREVGQVVMVF9NRkcnIiwgIidOVU1FUklDX1NJWkVfMSci LA0KDQorICAgICAgICAgICAgICAgICAgICAgIidOVU1FUklDX1NJWkVfMiciLCAiJ05VTUVSSUNf U0laRV80JyIsICInTlVNRVJJQ19TSVpFXzgnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICIn RElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9VSU5UX0RFQyciLCAiJ0RJU1BMQVlfVUlOVF9I RVgnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInSU5TRU5TSVRJVkUnIiwgIidTRU5TSVRJ VkUnIiwgIidMQVNUX05PTl9NQVRDSCciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidGSVJT VF9OT05fTUFUQ0gnIiBdDQoNCisNCg0KKyAgICBzeW1ib2xpY05hbWVzID0gWyAiPElOVkFMSUQ+ IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFM SUQ+IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIs ICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiPElO VkFMSUQ+IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+IiwgIkRlZmluZSIsICJJbmNsdWRlIiwgIkZvcm1Q a2dUeXBlIiwgIk9wZW5CcmFjZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlQnJh Y2UiLCAiT3BlblBhcmVuIiwgIkNsb3NlUGFyZW4iLCAiT3BlbkJyYWNrZXQiLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICJDbG9zZUJyYWNrZXQiLCAiRG90IiwgIk5lZ2F0aXZlIiwgIkNvbG9u IiwgIlNsYXNoIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiU2VtaWNvbG9uIiwgIkNvbW1h IiwgIkVxdWFsIiwgIk5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAgIkxlc3MiLCAiR3JlYXRlckVxdWFsIiwgIkdyZWF0ZXIiLCAiQml0V2lzZU9yIiwgIkJp dFdpc2VBbmQiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJEZXZpY2VQYXRoIiwgIkZvcm1T ZXQiLCAiRm9ybVNldElkIiwgIkVuZEZvcm1TZXQiLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICJUaXRsZSIsICJGb3JtSWQiLCAiT25lT2YiLCAiRW5kT25lT2YiLCAiUHJvbXB0IiwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZExpc3QiLCAiTWF4Q29udGFpbmVycyIsICJFbmRM aXN0IiwgIkVuZEZvcm0iLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJGb3JtIiwgIkZvcm1N YXAiLCAiTWFwVGl0bGUiLCAiTWFwR3VpZCIsICJTdWJ0aXRsZSIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAgIkVuZFN1YnRpdGxlIiwgIkhlbHAiLCAiVGV4dCIsICJPcHRpb24iLCAiRkxBR1Mi LA0KDQorICAgICAgICAgICAgICAgICAgICAgICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIsICJN b250aCIsICJEYXkiLCAiVGltZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIkVuZFRpbWUi LCAiSG91ciIsICJNaW51dGUiLCAiU2Vjb25kIiwgIkdyYXlPdXRJZiIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgIkxhYmVsIiwgIlRpbWVvdXQiLCAiSW52ZW50b3J5IiwgIk5vbk52RGF0YU1h cCIsICJTdHJ1Y3QiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJVbmlvbiIsICJCb29sZWFu IiwgIlVpbnQ2NCIsICJVaW50MzIiLCAiVWludDE2IiwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAiVWludDgiLCAiRUZJX1NUUklOR19JRCIsICJFRklfSElJX0RBVEUiLCAiRUZJX0hJSV9USU1F IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiRUZJX0hJSV9SRUYiLCAiVXVpZCIsICJDaGVj a0JveCIsICJFbmRDaGVja0JveCIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk51bWVyaWMi LCAiRW5kTnVtZXJpYyIsICJNaW5pbXVtIiwgIk1heGltdW0iLCAiU3RlcCIsDQoNCisgICAgICAg ICAgICAgICAgICAgICAgIkRlZmF1bHQiLCAiUGFzc3dvcmQiLCAiRW5kUGFzc3dvcmQiLCAiU3Ry aW5nIiwgIkVuZFN0cmluZyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk1pblNpemUiLCAi TWF4U2l6ZSIsICJFbmNvZGluZyIsICJTdXBwcmVzc0lmIiwgIkRpc2FibGVJZiIsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgIkhpZGRlbiIsICJHb3RvIiwgIkZvcm1TZXRHdWlkIiwgIkluY29u c2lzdGVudElmIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiV2FybmluZ0lmIiwgIk5vU3Vi bWl0SWYiLCAiRW5kSWYiLCAiS2V5IiwgIkRlZmF1bHRGbGFnIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAiTWFudWZhY3R1cmluZ0ZsYWciLCAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIsICJDaGVj a0JveERlZmF1bHRNZmdGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJhY3Rp dmVGbGFnIiwgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJlcXVpcmVkRmxhZyIsDQoNCisgICAgICAg ICAgICAgICAgICAgICAgIlJlY29ubmVjdFJlcXVpcmVkRmxhZyIsICJMYXRlQ2hlY2tGbGFnIiwg IlJlYWRPbmx5RmxhZyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbk9ubHlGbGFn IiwgIlJlc3RTdHlsZUZsYWciLCAiQ2xhc3MiLCAiU3ViY2xhc3MiLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICJDbGFzc0d1aWQiLCAiVHlwZURlZiIsICJSZXN0b3JlIiwgIlNhdmUiLCAiRGVm YXVsdHMiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVm dCIsICJSaWdodCIsICJDZW50ZXIiLCAiTGluZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAg Ik5hbWUiLCAiVmFySWQiLCAiUXVlc3Rpb24iLCAiUXVlc3Rpb25JZCIsICJJbWFnZSIsDQoNCisg ICAgICAgICAgICAgICAgICAgICAgIkxvY2tlZCIsICJSdWxlIiwgIkVuZFJ1bGUiLCAiVmFsdWUi LCAiUmVhZCIsICJXcml0ZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlJlc2V0QnV0dG9u IiwgIkVuZFJlc2V0QnV0dG9uIiwgIkRlZmF1bHRTdG9yZSIsICJBdHRyaWJ1dGUiLA0KDQorICAg ICAgICAgICAgICAgICAgICAgICJWYXJzdG9yZSIsICJFZml2YXJzdG9yZSIsICJWYXJTaXplIiwg Ik5hbWVWYWx1ZVZhclN0b3JlIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiQWN0aW9uIiwg IkNvbmZpZyIsICJFbmRBY3Rpb24iLCAiUmVmcmVzaCIsICJJbnRlcnZhbCIsDQoNCisgICAgICAg ICAgICAgICAgICAgICAgIlZhcnN0b3JlRGV2aWNlIiwgIkd1aWRPcCIsICJFbmRHdWlkT3AiLCAi RGF0YVR5cGUiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJEYXRhIiwgIk1vZGFsIiwgIkNs YXNzTm9uRGV2aWNlIiwgIkNsYXNzRGlza0RldmljZSIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAgIkNsYXNzVmlkZW9EZXZpY2UiLCAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwgIkNsYXNzSW5wdXRE ZXZpY2UiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJDbGFzc09uQm9hcmREZXZpY2UiLCAi Q2xhc3NPdGhlckRldmljZSIsICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICJTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiIsICJTdWJjbGFzc0Zy b250UGFnZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlN1YmNsYXNzU2luZ2xlVXNlIiwg IlllYXJTdXBwcHJlc3NGbGFnIiwgIk1vbnRoU3VwcHJlc3NGbGFnIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAiRGF5U3VwcHJlc3NGbGFnIiwgIkhvdXJTdXBwcHJlc3NGbGFnIiwgIk1pbnV0 ZVN1cHByZXNzRmxhZyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlNlY29uZFN1cHByZXNz RmxhZyIsICJTdG9yYWdlTm9ybWFsRmxhZyIsICJTdG9yYWdlVGltZUZsYWciLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICJTdG9yYWdlV2FrZVVwRmxhZyIsICJVbmlRdWVGbGFnIiwgIk5vRW1w dHlGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiQ29uZCIsICJGaW5kIiwgIk1pZCIs ICJUb2siLCAiU3BhbiIsICJEdXAiLCAiVmFyRXFWYWwiLA0KDQorICAgICAgICAgICAgICAgICAg ICAgICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExpc3QiLCAiUXVlc3Rpb25S ZWYiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJSdWxlUmVmIiwgIlN0cmluZ1JlZiIsICJQ dXNoVGhpcyIsICJTZWN1cml0eSIsICJHZXQiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJU cnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwgIk9uZSIsICJPbmVzIiwgIlplcm8iLA0KDQorICAg ICAgICAgICAgICAgICAgICAgICJVbmRlZmluZWQiLCAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5E IiwgIk9SIiwgIk5PVCIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlNldCIsICJCaXRXaXNl Tm90IiwgIkJvb2xWYWwiLCAiU3RyaW5nVmFsIiwgIlVuSW50VmFsIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAiVG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRl bmF0ZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlF1ZXN0aW9uUmVmVmFsIiwgIlN0cmlu Z1JlZlZhbCIsICJNYXAiLCAiUmVmcmVzaEd1aWQiLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICJTdHJpbmdUb2tlbiIsICJPcHRpb25EZWZhdWx0IiwgIk9wdGlvbkRlZmF1bHRNZmciLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIs ICJOdW1lcmljU2l6ZUZvdXIiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljU2l6 ZUVpZ2h0IiwgIkRpc1BsYXlJbnREZWMiLCAiRGlzUGxheVVJbnREZWMiLA0KDQorICAgICAgICAg ICAgICAgICAgICAgICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsICJTZW5zaXRpdmUi LCAiTGFzdE5vbk1hdGNoIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiRmlyc3ROb25NYXRj aCIsICJOdW1iZXIiLCAiU3RyaW5nSWRlbnRpZmllciIsICJDb21wbGV4RGVmaW5lIiwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAiTGluZURlZmluaXRpb24iLCAiSW5jbHVkZURlZmluaXRpb24i LCAiV2hpdGVzcGFjZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk5ld2xpbmUiLCAiTGlu ZUNvbW1lbnQiLCAiRXh0ZXJuIiBdDQoNCisNCg0KKyAgICBSVUxFX3ZmclByb2dyYW0gPSAwDQoN CisgICAgUlVMRV9wcmFnbWFQYWNrU2hvd0RlZiA9IDENCg0KKyAgICBSVUxFX3ByYWdtYVBhY2tT dGFja0RlZiA9IDINCg0KKyAgICBSVUxFX3ByYWdtYVBhY2tOdW1iZXIgPSAzDQoNCisgICAgUlVM RV92ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiA9IDQNCg0KKyAgICBSVUxFX3ZmckRhdGFTdHJ1Y3RE ZWZpbml0aW9uID0gNQ0KDQorICAgIFJVTEVfdmZyRGF0YVVuaW9uRGVmaW5pdGlvbiA9IDYNCg0K KyAgICBSVUxFX3ZmckRhdGFTdHJ1Y3RGaWVsZHMgPSA3DQoNCisgICAgUlVMRV9kYXRhU3RydWN0 RmllbGQ2NCA9IDgNCg0KKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDMyID0gOQ0KDQorICAgIFJV TEVfZGF0YVN0cnVjdEZpZWxkMTYgPSAxMA0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkOCA9 IDExDQoNCisgICAgUlVMRV9kYXRhU3RydWN0RmllbGRCb29sID0gMTINCg0KKyAgICBSVUxFX2Rh dGFTdHJ1Y3RGaWVsZFN0cmluZyA9IDEzDQoNCisgICAgUlVMRV9kYXRhU3RydWN0RmllbGREYXRl ID0gMTQNCg0KKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFRpbWUgPSAxNQ0KDQorICAgIFJVTEVf ZGF0YVN0cnVjdEZpZWxkUmVmID0gMTYNCg0KKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFVzZXIg PSAxNw0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQgPSAxOA0KDQorICAgIFJVTEVf ZGF0YVN0cnVjdEJpdEZpZWxkMzIgPSAxOQ0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxk MTYgPSAyMA0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkOCA9IDIxDQoNCisgICAgUlVM RV92ZnJGb3JtU2V0RGVmaW5pdGlvbiA9IDIyDQoNCisgICAgUlVMRV9jbGFzc2d1aWREZWZpbml0 aW9uID0gMjMNCg0KKyAgICBSVUxFX2NsYXNzRGVmaW5pdGlvbiA9IDI0DQoNCisgICAgUlVMRV92 YWxpZENsYXNzTmFtZXMgPSAyNQ0KDQorICAgIFJVTEVfc3ViY2xhc3NEZWZpbml0aW9uID0gMjYN Cg0KKyAgICBSVUxFX3ZmckZvcm1TZXRMaXN0ID0gMjcNCg0KKyAgICBSVUxFX3ZmckZvcm1TZXQg PSAyOA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlID0gMjkNCg0KKyAgICBS VUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyID0gMzANCg0KKyAgICBSVUxFX3ZmclN0YXRl bWVudFZhclN0b3JlRWZpID0gMzENCg0KKyAgICBSVUxFX3ZmclZhclN0b3JlRWZpQXR0ciA9IDMy DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSA9IDMzDQoNCisgICAg UlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0ID0gMzQNCg0KKyAgICBSVUxFX3ZmclN0 YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0ID0gMzUNCg0KKyAgICBSVUxFX2d1aWRTdWJEZWZpbml0 aW9uID0gMzYNCg0KKyAgICBSVUxFX2d1aWREZWZpbml0aW9uID0gMzcNCg0KKyAgICBSVUxFX2dl dFN0cmluZ0lkID0gMzgNCg0KKyAgICBSVUxFX3ZmclF1ZXN0aW9uSGVhZGVyID0gMzkNCg0KKyAg ICBSVUxFX3ZmclF1ZXN0aW9uQmFzZUluZm8gPSA0MA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50 SGVhZGVyID0gNDENCg0KKyAgICBSVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCA9IDQyDQoN CisgICAgUlVMRV92ZnJTdG9yYWdlVmFySWQgPSA0Mw0KDQorICAgIFJVTEVfdmZyQ29uc3RhbnRW YWx1ZUZpZWxkID0gNDQNCg0KKyAgICBSVUxFX3ZmckltYWdlVGFnID0gNDUNCg0KKyAgICBSVUxF X3ZmckxvY2tlZFRhZyA9IDQ2DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0VGFnID0gNDcN Cg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0ID0gNDgNCg0KKyAgICBSVUxFX3Zm ckZvcm1EZWZpbml0aW9uID0gNDkNCg0KKyAgICBSVUxFX3ZmckZvcm0gPSA1MA0KDQorICAgIFJV TEVfdmZyRm9ybU1hcERlZmluaXRpb24gPSA1MQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50SW1h Z2UgPSA1Mg0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50TG9ja2VkID0gNTMNCg0KKyAgICBSVUxF X3ZmclN0YXRlbWVudFJ1bGVzID0gNTQNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXQgPSA1 NQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGUgPSA1Ng0KDQorICAgIFJVTEVfdmZy U3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQgPSA1Nw0KDQorICAgIFJVTEVfdmZyU3VidGl0bGVG bGFncyA9IDU4DQoNCisgICAgUlVMRV9zdWJ0aXRsZUZsYWdzRmllbGQgPSA1OQ0KDQorICAgIFJV TEVfdmZyU3RhdGVtZW50U3RhdGljVGV4dCA9IDYwDQoNCisgICAgUlVMRV9zdGF0aWNUZXh0Rmxh Z3NGaWVsZCA9IDYxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSA9IDYy DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRHb3RvID0gNjMNCg0KKyAgICBSVUxFX3ZmckdvdG9G bGFncyA9IDY0DQoNCisgICAgUlVMRV9nb3RvRmxhZ3NGaWVsZCA9IDY1DQoNCisgICAgUlVMRV92 ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbiA9IDY2DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVz dGlvbnMgPSA2Nw0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcgPSA2OA0KDQor ICAgIFJVTEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYgPSA2OQ0KDQorICAgIFJVTEVfdmZy U3RhdGVtZW50Tm9TdWJtaXRJZiA9IDcwDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxl SWZRdWVzdCA9IDcxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoID0gNzINCg0KKyAg ICBSVUxFX3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlID0gNzMNCg0KKyAgICBSVUxFX3ZmclN0 YXRlbWVudFJlZnJlc2hFdmVudCA9IDc0DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5n SWYgPSA3NQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0ID0gNzYNCg0K KyAgICBSVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnID0gNzcNCg0KKyAgICBSVUxF X2ZsYWdzRmllbGQgPSA3OA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0 ID0gNzkNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0ID0gODANCg0KKyAg ICBSVUxFX3ZmclN0YXRlbWVudERlZmF1bHQgPSA4MQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50 VmFsdWUgPSA4Mg0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50T3B0aW9ucyA9IDgzDQoNCisgICAg UlVMRV92ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiA9IDg0DQoNCisgICAgUlVMRV92ZnJPbmVPZk9w dGlvbkZsYWdzID0gODUNCg0KKyAgICBSVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVsZCA9IDg2DQoN CisgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWFkID0gODcNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVu dFdyaXRlID0gODgNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCA9 IDg5DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiA9IDkwDQoNCisgICAg UlVMRV92ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSA9IDkxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1l bnRDaGVja0JveCA9IDkyDQoNCisgICAgUlVMRV92ZnJDaGVja0JveEZsYWdzID0gOTMNCg0KKyAg ICBSVUxFX2NoZWNrYm94RmxhZ3NGaWVsZCA9IDk0DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRB Y3Rpb24gPSA5NQ0KDQorICAgIFJVTEVfdmZyQWN0aW9uRmxhZ3MgPSA5Ng0KDQorICAgIFJVTEVf YWN0aW9uRmxhZ3NGaWVsZCA9IDk3DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljVHlw ZSA9IDk4DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljID0gOTkNCg0KKyAgICBSVUxF X3ZmclNldE1pbk1heFN0ZXAgPSAxMDANCg0KKyAgICBSVUxFX3Zmck51bWVyaWNGbGFncyA9IDEw MQ0KDQorICAgIFJVTEVfbnVtZXJpY0ZsYWdzRmllbGQgPSAxMDINCg0KKyAgICBSVUxFX3ZmclN0 YXRlbWVudE9uZU9mID0gMTAzDQoNCisgICAgUlVMRV92ZnJPbmVvZkZsYWdzRmllbGQgPSAxMDQN Cg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUgPSAxMDUNCg0KKyAgICBSVUxFX3Zm clN0YXRlbWVudFN0cmluZyA9IDEwNg0KDQorICAgIFJVTEVfdmZyU3RyaW5nRmxhZ3NGaWVsZCA9 IDEwNw0KDQorICAgIFJVTEVfc3RyaW5nRmxhZ3NGaWVsZCA9IDEwOA0KDQorICAgIFJVTEVfdmZy U3RhdGVtZW50UGFzc3dvcmQgPSAxMDkNCg0KKyAgICBSVUxFX3ZmclBhc3N3b3JkRmxhZ3NGaWVs ZCA9IDExMA0KDQorICAgIFJVTEVfcGFzc3dvcmRGbGFnc0ZpZWxkID0gMTExDQoNCisgICAgUlVM RV92ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCA9IDExMg0KDQorICAgIFJVTEVfdmZyT3JkZXJlZExp c3RGbGFncyA9IDExMw0KDQorICAgIFJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkID0gMTE0DQoN CisgICAgUlVMRV92ZnJTdGF0ZW1lbnREYXRlID0gMTE1DQoNCisgICAgUlVMRV9taW5NYXhEYXRl U3RlcERlZmF1bHQgPSAxMTYNCg0KKyAgICBSVUxFX3ZmckRhdGVGbGFncyA9IDExNw0KDQorICAg IFJVTEVfZGF0ZUZsYWdzRmllbGQgPSAxMTgNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFRpbWUg PSAxMTkNCg0KKyAgICBSVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCA9IDEyMA0KDQorICAgIFJV TEVfdmZyVGltZUZsYWdzID0gMTIxDQoNCisgICAgUlVMRV90aW1lRmxhZ3NGaWVsZCA9IDEyMg0K DQorICAgIFJVTEVfdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwgPSAxMjMNCg0KKyAgICBSVUxFX3Zm clN0YXRlbWVudENvbmRpdGlvbmFsTmV3ID0gMTI0DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdCA9IDEyNQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3Rh dCA9IDEyNg0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50U3RhdExpc3QgPSAxMjcNCg0KKyAgICBS VUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0T2xkID0gMTI4DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1l bnREaXNhYmxlSWZTdGF0ID0gMTI5DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRncmF5b3V0SWZT dXBwcmVzc0lmID0gMTMwDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91 dElmID0gMTMxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyA9IDEz Mg0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyA9IDEzMw0KDQorICAg IFJVTEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0ID0gMTM0DQoNCisgICAgUlVMRV92 ZnJTdGF0ZW1lbnRJbnZhbGlkID0gMTM1DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlk SGlkZGVuID0gMTM2DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5ID0g MTM3DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cyA9 IDEzOA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50TGFiZWwgPSAxMzkNCg0KKyAgICBSVUxFX3Zm clN0YXRlbWVudEJhbm5lciA9IDE0MA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9u ID0gMTQxDQoNCisgICAgUlVMRV92ZnJFeHRlbnNpb25EYXRhID0gMTQyDQoNCisgICAgUlVMRV92 ZnJTdGF0ZW1lbnRNb2RhbCA9IDE0Mw0KDQorICAgIFJVTEVfdmZyTW9kYWxUYWcgPSAxNDQNCg0K KyAgICBSVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb24gPSAxNDUNCg0KKyAgICBSVUxFX3ZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIgPSAxNDYNCg0KKyAgICBSVUxFX2FuZFRlcm0gPSAxNDcNCg0K KyAgICBSVUxFX2JpdHdpc2VvclRlcm0gPSAxNDgNCg0KKyAgICBSVUxFX2JpdHdpc2VhbmRUZXJt ID0gMTQ5DQoNCisgICAgUlVMRV9lcXVhbFRlcm0gPSAxNTANCg0KKyAgICBSVUxFX2VxdWFsVGVy bVN1cHBsZW1lbnRhcnkgPSAxNTENCg0KKyAgICBSVUxFX2NvbXBhcmVUZXJtID0gMTUyDQoNCisg ICAgUlVMRV9jb21wYXJlVGVybVN1cHBsZW1lbnRhcnkgPSAxNTMNCg0KKyAgICBSVUxFX3NoaWZ0 VGVybSA9IDE1NA0KDQorICAgIFJVTEVfc2hpZnRUZXJtU3VwcGxlbWVudGFyeSA9IDE1NQ0KDQor ICAgIFJVTEVfYWRkTWludXNUZXJtID0gMTU2DQoNCisgICAgUlVMRV9hZGRNaW51c1Rlcm1TdXBw bGVtZW50YXJ5ID0gMTU3DQoNCisgICAgUlVMRV9tdWx0ZGl2bW9kVGVybSA9IDE1OA0KDQorICAg IFJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5ID0gMTU5DQoNCisgICAgUlVMRV9jYXN0 VGVybSA9IDE2MA0KDQorICAgIFJVTEVfYXRvbVRlcm0gPSAxNjENCg0KKyAgICBSVUxFX3ZmckV4 cHJlc3Npb25DYXRlbmF0ZSA9IDE2Mg0KDQorICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoID0g MTYzDQoNCisgICAgUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gyID0gMTY0DQoNCisgICAgUlVMRV92 ZnJFeHByZXNzaW9uUGFyZW4gPSAxNjUNCg0KKyAgICBSVUxFX3ZmckV4cHJlc3Npb25CdWlsZElu RnVuY3Rpb24gPSAxNjYNCg0KKyAgICBSVUxFX2R1cEV4cCA9IDE2Nw0KDQorICAgIFJVTEVfdmFy ZXF2YWxFeHAgPSAxNjgNCg0KKyAgICBSVUxFX2lkZXF2YWxFeHAgPSAxNjkNCg0KKyAgICBSVUxF X2lkZXFpZEV4cCA9IDE3MA0KDQorICAgIFJVTEVfaWRlcXZhbGxpc3RFeHAgPSAxNzENCg0KKyAg ICBSVUxFX3ZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSA9IDE3Mg0KDQorICAgIFJVTEVfYXJyYXlO YW1lID0gMTczDQoNCisgICAgUlVMRV9xdWVzdGlvbnJlZjFFeHAgPSAxNzQNCg0KKyAgICBSVUxF X3J1bGVyZWZFeHAgPSAxNzUNCg0KKyAgICBSVUxFX3N0cmluZ3JlZjFFeHAgPSAxNzYNCg0KKyAg ICBSVUxFX3B1c2h0aGlzRXhwID0gMTc3DQoNCisgICAgUlVMRV9zZWN1cml0eUV4cCA9IDE3OA0K DQorICAgIFJVTEVfbnVtZXJpY1ZhclN0b3JlVHlwZSA9IDE3OQ0KDQorICAgIFJVTEVfZ2V0RXhw ID0gMTgwDQoNCisgICAgUlVMRV92ZnJFeHByZXNzaW9uQ29uc3RhbnQgPSAxODENCg0KKyAgICBS VUxFX3ZmckV4cHJlc3Npb25VbmFyeU9wID0gMTgyDQoNCisgICAgUlVMRV9sZW5ndGhFeHAgPSAx ODMNCg0KKyAgICBSVUxFX2JpdHdpc2Vub3RFeHAgPSAxODQNCg0KKyAgICBSVUxFX3F1ZXN0aW9u MjNyZWZFeHAgPSAxODUNCg0KKyAgICBSVUxFX3N0cmluZ3JlZjJFeHAgPSAxODYNCg0KKyAgICBS VUxFX3RvYm9vbEV4cCA9IDE4Nw0KDQorICAgIFJVTEVfdG9zdHJpbmdFeHAgPSAxODgNCg0KKyAg ICBSVUxFX3VuaW50RXhwID0gMTg5DQoNCisgICAgUlVMRV90b3VwcGVyRXhwID0gMTkwDQoNCisg ICAgUlVMRV90b2x3ZXJFeHAgPSAxOTENCg0KKyAgICBSVUxFX3NldEV4cCA9IDE5Mg0KDQorICAg IFJVTEVfdmZyRXhwcmVzc2lvblRlcm5hcnlPcCA9IDE5Mw0KDQorICAgIFJVTEVfY29uZGl0aW9u YWxFeHAgPSAxOTQNCg0KKyAgICBSVUxFX2ZpbmRFeHAgPSAxOTUNCg0KKyAgICBSVUxFX2ZpbmRG b3JtYXQgPSAxOTYNCg0KKyAgICBSVUxFX21pZEV4cCA9IDE5Nw0KDQorICAgIFJVTEVfdG9rZW5F eHAgPSAxOTgNCg0KKyAgICBSVUxFX3NwYW5FeHAgPSAxOTkNCg0KKyAgICBSVUxFX3NwYW5GbGFn cyA9IDIwMA0KDQorICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hcCA9IDIwMQ0KDQorDQoNCisgICAg cnVsZU5hbWVzID0gIFsgInZmclByb2dyYW0iLCAicHJhZ21hUGFja1Nob3dEZWYiLCAicHJhZ21h UGFja1N0YWNrRGVmIiwNCg0KKyAgICAgICAgICAgICAgICAgICAicHJhZ21hUGFja051bWJlciIs ICJ2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIsICJ2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbiIsDQoN CisgICAgICAgICAgICAgICAgICAgInZmckRhdGFVbmlvbkRlZmluaXRpb24iLCAidmZyRGF0YVN0 cnVjdEZpZWxkcyIsICJkYXRhU3RydWN0RmllbGQ2NCIsDQoNCisgICAgICAgICAgICAgICAgICAg ImRhdGFTdHJ1Y3RGaWVsZDMyIiwgImRhdGFTdHJ1Y3RGaWVsZDE2IiwgImRhdGFTdHJ1Y3RGaWVs ZDgiLA0KDQorICAgICAgICAgICAgICAgICAgICJkYXRhU3RydWN0RmllbGRCb29sIiwgImRhdGFT dHJ1Y3RGaWVsZFN0cmluZyIsICJkYXRhU3RydWN0RmllbGREYXRlIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAiZGF0YVN0cnVjdEZpZWxkVGltZSIsICJkYXRhU3RydWN0RmllbGRSZWYiLCAiZGF0 YVN0cnVjdEZpZWxkVXNlciIsDQoNCisgICAgICAgICAgICAgICAgICAgImRhdGFTdHJ1Y3RCaXRG aWVsZDY0IiwgImRhdGFTdHJ1Y3RCaXRGaWVsZDMyIiwgImRhdGFTdHJ1Y3RCaXRGaWVsZDE2IiwN Cg0KKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZpZWxkOCIsICJ2ZnJGb3JtU2V0 RGVmaW5pdGlvbiIsICJjbGFzc2d1aWREZWZpbml0aW9uIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAiY2xhc3NEZWZpbml0aW9uIiwgInZhbGlkQ2xhc3NOYW1lcyIsICJzdWJjbGFzc0RlZmluaXRp b24iLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJGb3JtU2V0TGlzdCIsICJ2ZnJGb3JtU2V0 IiwgInZmclN0YXRlbWVudERlZmF1bHRTdG9yZSIsDQoNCisgICAgICAgICAgICAgICAgICAgInZm clN0YXRlbWVudFZhclN0b3JlTGluZWFyIiwgInZmclN0YXRlbWVudFZhclN0b3JlRWZpIiwNCg0K KyAgICAgICAgICAgICAgICAgICAidmZyVmFyU3RvcmVFZmlBdHRyIiwgInZmclN0YXRlbWVudFZh clN0b3JlTmFtZVZhbHVlIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50RGlz YWJsZUlmRm9ybVNldCIsICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCIsDQoNCisgICAg ICAgICAgICAgICAgICAgImd1aWRTdWJEZWZpbml0aW9uIiwgImd1aWREZWZpbml0aW9uIiwgImdl dFN0cmluZ0lkIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyUXVlc3Rpb25IZWFkZXIiLCAi dmZyUXVlc3Rpb25CYXNlSW5mbyIsICJ2ZnJTdGF0ZW1lbnRIZWFkZXIiLA0KDQorICAgICAgICAg ICAgICAgICAgICJxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQiLCAidmZyU3RvcmFnZVZhcklkIiwg InZmckNvbnN0YW50VmFsdWVGaWVsZCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmckltYWdl VGFnIiwgInZmckxvY2tlZFRhZyIsICJ2ZnJTdGF0ZW1lbnRTdGF0VGFnIiwNCg0KKyAgICAgICAg ICAgICAgICAgICAidmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QiLCAidmZyRm9ybURlZmluaXRpb24i LCAidmZyRm9ybSIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmckZvcm1NYXBEZWZpbml0aW9u IiwgInZmclN0YXRlbWVudEltYWdlIiwgInZmclN0YXRlbWVudExvY2tlZCIsDQoNCisgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudFJ1bGVzIiwgInZmclN0YXRlbWVudFN0YXQiLCAidmZy U3RhdGVtZW50U3ViVGl0bGUiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRT dWJUaXRsZUNvbXBvbmVudCIsICJ2ZnJTdWJ0aXRsZUZsYWdzIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAic3VidGl0bGVGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFN0YXRpY1RleHQiLCAic3Rh dGljVGV4dEZsYWdzRmllbGQiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRD cm9zc1JlZmVyZW5jZSIsICJ2ZnJTdGF0ZW1lbnRHb3RvIiwgInZmckdvdG9GbGFncyIsDQoNCisg ICAgICAgICAgICAgICAgICAgImdvdG9GbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFJlc2V0QnV0 dG9uIiwgInZmclN0YXRlbWVudFF1ZXN0aW9ucyIsDQoNCisgICAgICAgICAgICAgICAgICAgInZm clN0YXRlbWVudFF1ZXN0aW9uVGFnIiwgInZmclN0YXRlbWVudEluY29uc2lzdGVudElmIiwNCg0K KyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50Tm9TdWJtaXRJZiIsICJ2ZnJTdGF0ZW1l bnREaXNhYmxlSWZRdWVzdCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJl ZnJlc2giLCAidmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UiLA0KDQorICAgICAgICAgICAgICAg ICAgICJ2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQiLCAidmZyU3RhdGVtZW50V2FybmluZ0lmIiwN Cg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0IiwgInZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiZmxh Z3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QiLCAidmZyU3RhdGVtZW50R3Jh eU91dElmUXVlc3QiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnREZWZhdWx0 IiwgInZmclN0YXRlbWVudFZhbHVlIiwgInZmclN0YXRlbWVudE9wdGlvbnMiLA0KDQorICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiIsICJ2ZnJPbmVPZk9wdGlvbkZs YWdzIiwgIm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZm clN0YXRlbWVudFJlYWQiLCAidmZyU3RhdGVtZW50V3JpdGUiLCAidmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0IiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb24iLCAidmZyU3RhdGVtZW50Qm9vbGVhblR5cGUiLA0KDQorICAgICAgICAgICAgICAg ICAgICJ2ZnJTdGF0ZW1lbnRDaGVja0JveCIsICJ2ZnJDaGVja0JveEZsYWdzIiwgImNoZWNrYm94 RmxhZ3NGaWVsZCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudEFjdGlvbiIs ICJ2ZnJBY3Rpb25GbGFncyIsICJhY3Rpb25GbGFnc0ZpZWxkIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAidmZyU3RhdGVtZW50TnVtZXJpY1R5cGUiLCAidmZyU3RhdGVtZW50TnVtZXJpYyIsICJ2 ZnJTZXRNaW5NYXhTdGVwIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyTnVtZXJpY0ZsYWdz IiwgIm51bWVyaWNGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudE9uZU9mIiwNCg0KKyAgICAgICAg ICAgICAgICAgICAidmZyT25lb2ZGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFN0cmluZ1R5cGUi LCAidmZyU3RhdGVtZW50U3RyaW5nIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RyaW5n RmxhZ3NGaWVsZCIsICJzdHJpbmdGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFBhc3N3b3JkIiwN Cg0KKyAgICAgICAgICAgICAgICAgICAidmZyUGFzc3dvcmRGbGFnc0ZpZWxkIiwgInBhc3N3b3Jk RmxhZ3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIsDQoNCisgICAgICAgICAgICAg ICAgICAgInZmck9yZGVyZWRMaXN0RmxhZ3MiLCAib3JkZXJlZGxpc3RGbGFnc0ZpZWxkIiwgInZm clN0YXRlbWVudERhdGUiLA0KDQorICAgICAgICAgICAgICAgICAgICJtaW5NYXhEYXRlU3RlcERl ZmF1bHQiLCAidmZyRGF0ZUZsYWdzIiwgImRhdGVGbGFnc0ZpZWxkIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAidmZyU3RhdGVtZW50VGltZSIsICJtaW5NYXhUaW1lU3RlcERlZmF1bHQiLCAidmZy VGltZUZsYWdzIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidGltZUZsYWdzRmllbGQiLCAidmZy U3RhdGVtZW50Q29uZGl0aW9uYWwiLCAidmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXciLA0KDQor ICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCIsICJ2ZnJTdGF0 ZW1lbnRHcmF5T3V0SWZTdGF0IiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50 U3RhdExpc3QiLCAidmZyU3RhdGVtZW50U3RhdExpc3RPbGQiLCAidmZyU3RhdGVtZW50RGlzYWJs ZUlmU3RhdCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudGdyYXlvdXRJZlN1 cHByZXNzSWYiLCAidmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZiIsDQoNCisgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3IiwgInZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXROZXciLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZlN0YXQiLCAidmZyU3RhdGVtZW50SW52YWxpZCIsDQoNCisgICAgICAgICAg ICAgICAgICAgInZmclN0YXRlbWVudEludmFsaWRIaWRkZW4iLCAidmZyU3RhdGVtZW50SW52YWxp ZEludmVudG9yeSIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudEludmFsaWRT YXZlUmVzdG9yZURlZmF1bHRzIiwgInZmclN0YXRlbWVudExhYmVsIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAidmZyU3RhdGVtZW50QmFubmVyIiwgInZmclN0YXRlbWVudEV4dGVuc2lvbiIsICJ2 ZnJFeHRlbnNpb25EYXRhIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50TW9k YWwiLCAidmZyTW9kYWxUYWciLCAidmZyU3RhdGVtZW50RXhwcmVzc2lvbiIsDQoNCisgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIiLCAiYW5kVGVybSIsICJiaXR3 aXNlb3JUZXJtIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiYml0d2lzZWFuZFRlcm0iLCAiZXF1 YWxUZXJtIiwgImVxdWFsVGVybVN1cHBsZW1lbnRhcnkiLA0KDQorICAgICAgICAgICAgICAgICAg ICJjb21wYXJlVGVybSIsICJjb21wYXJlVGVybVN1cHBsZW1lbnRhcnkiLCAic2hpZnRUZXJtIiwN Cg0KKyAgICAgICAgICAgICAgICAgICAic2hpZnRUZXJtU3VwcGxlbWVudGFyeSIsICJhZGRNaW51 c1Rlcm0iLCAiYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeSIsDQoNCisgICAgICAgICAgICAgICAg ICAgIm11bHRkaXZtb2RUZXJtIiwgIm11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeSIsICJjYXN0 VGVybSIsDQoNCisgICAgICAgICAgICAgICAgICAgImF0b21UZXJtIiwgInZmckV4cHJlc3Npb25D YXRlbmF0ZSIsICJ2ZnJFeHByZXNzaW9uTWF0Y2giLA0KDQorICAgICAgICAgICAgICAgICAgICJ2 ZnJFeHByZXNzaW9uTWF0Y2gyIiwgInZmckV4cHJlc3Npb25QYXJlbiIsICJ2ZnJFeHByZXNzaW9u QnVpbGRJbkZ1bmN0aW9uIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiZHVwRXhwIiwgInZhcmVx dmFsRXhwIiwgImlkZXF2YWxFeHAiLCAiaWRlcWlkRXhwIiwgImlkZXF2YWxsaXN0RXhwIiwNCg0K KyAgICAgICAgICAgICAgICAgICAidmZyUXVlc3Rpb25EYXRhRmllbGROYW1lIiwgImFycmF5TmFt ZSIsICJxdWVzdGlvbnJlZjFFeHAiLA0KDQorICAgICAgICAgICAgICAgICAgICJydWxlcmVmRXhw IiwgInN0cmluZ3JlZjFFeHAiLCAicHVzaHRoaXNFeHAiLCAic2VjdXJpdHlFeHAiLA0KDQorICAg ICAgICAgICAgICAgICAgICJudW1lcmljVmFyU3RvcmVUeXBlIiwgImdldEV4cCIsICJ2ZnJFeHBy ZXNzaW9uQ29uc3RhbnQiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJFeHByZXNzaW9uVW5h cnlPcCIsICJsZW5ndGhFeHAiLCAiYml0d2lzZW5vdEV4cCIsDQoNCisgICAgICAgICAgICAgICAg ICAgInF1ZXN0aW9uMjNyZWZFeHAiLCAic3RyaW5ncmVmMkV4cCIsICJ0b2Jvb2xFeHAiLCAidG9z dHJpbmdFeHAiLA0KDQorICAgICAgICAgICAgICAgICAgICJ1bmludEV4cCIsICJ0b3VwcGVyRXhw IiwgInRvbHdlckV4cCIsICJzZXRFeHAiLCAidmZyRXhwcmVzc2lvblRlcm5hcnlPcCIsDQoNCisg ICAgICAgICAgICAgICAgICAgImNvbmRpdGlvbmFsRXhwIiwgImZpbmRFeHAiLCAiZmluZEZvcm1h dCIsICJtaWRFeHAiLA0KDQorICAgICAgICAgICAgICAgICAgICJ0b2tlbkV4cCIsICJzcGFuRXhw IiwgInNwYW5GbGFncyIsICJ2ZnJFeHByZXNzaW9uTWFwIiBdDQoNCisNCg0KKyAgICBFT0YgPSBU b2tlbi5FT0YNCg0KKyAgICBUX18wPTENCg0KKyAgICBUX18xPTINCg0KKyAgICBUX18yPTMNCg0K KyAgICBUX18zPTQNCg0KKyAgICBUX180PTUNCg0KKyAgICBUX181PTYNCg0KKyAgICBUX182PTcN Cg0KKyAgICBUX183PTgNCg0KKyAgICBUX184PTkNCg0KKyAgICBUX185PTEwDQoNCisgICAgVF9f MTA9MTENCg0KKyAgICBUX18xMT0xMg0KDQorICAgIFRfXzEyPTEzDQoNCisgICAgVF9fMTM9MTQN Cg0KKyAgICBUX18xND0xNQ0KDQorICAgIFRfXzE1PTE2DQoNCisgICAgRGVmaW5lPTE3DQoNCisg ICAgSW5jbHVkZT0xOA0KDQorICAgIEZvcm1Qa2dUeXBlPTE5DQoNCisgICAgT3BlbkJyYWNlPTIw DQoNCisgICAgQ2xvc2VCcmFjZT0yMQ0KDQorICAgIE9wZW5QYXJlbj0yMg0KDQorICAgIENsb3Nl UGFyZW49MjMNCg0KKyAgICBPcGVuQnJhY2tldD0yNA0KDQorICAgIENsb3NlQnJhY2tldD0yNQ0K DQorICAgIERvdD0yNg0KDQorICAgIE5lZ2F0aXZlPTI3DQoNCisgICAgQ29sb249MjgNCg0KKyAg ICBTbGFzaD0yOQ0KDQorICAgIFNlbWljb2xvbj0zMA0KDQorICAgIENvbW1hPTMxDQoNCisgICAg RXF1YWw9MzINCg0KKyAgICBOb3RFcXVhbD0zMw0KDQorICAgIExlc3NFcXVhbD0zNA0KDQorICAg IExlc3M9MzUNCg0KKyAgICBHcmVhdGVyRXF1YWw9MzYNCg0KKyAgICBHcmVhdGVyPTM3DQoNCisg ICAgQml0V2lzZU9yPTM4DQoNCisgICAgQml0V2lzZUFuZD0zOQ0KDQorICAgIERldmljZVBhdGg9 NDANCg0KKyAgICBGb3JtU2V0PTQxDQoNCisgICAgRm9ybVNldElkPTQyDQoNCisgICAgRW5kRm9y bVNldD00Mw0KDQorICAgIFRpdGxlPTQ0DQoNCisgICAgRm9ybUlkPTQ1DQoNCisgICAgT25lT2Y9 NDYNCg0KKyAgICBFbmRPbmVPZj00Nw0KDQorICAgIFByb21wdD00OA0KDQorICAgIE9yZGVyZWRM aXN0PTQ5DQoNCisgICAgTWF4Q29udGFpbmVycz01MA0KDQorICAgIEVuZExpc3Q9NTENCg0KKyAg ICBFbmRGb3JtPTUyDQoNCisgICAgRm9ybT01Mw0KDQorICAgIEZvcm1NYXA9NTQNCg0KKyAgICBN YXBUaXRsZT01NQ0KDQorICAgIE1hcEd1aWQ9NTYNCg0KKyAgICBTdWJ0aXRsZT01Nw0KDQorICAg IEVuZFN1YnRpdGxlPTU4DQoNCisgICAgSGVscD01OQ0KDQorICAgIFRleHQ9NjANCg0KKyAgICBP cHRpb249NjENCg0KKyAgICBGTEFHUz02Mg0KDQorICAgIERhdGU9NjMNCg0KKyAgICBFbmREYXRl PTY0DQoNCisgICAgWWVhcj02NQ0KDQorICAgIE1vbnRoPTY2DQoNCisgICAgRGF5PTY3DQoNCisg ICAgVGltZT02OA0KDQorICAgIEVuZFRpbWU9NjkNCg0KKyAgICBIb3VyPTcwDQoNCisgICAgTWlu dXRlPTcxDQoNCisgICAgU2Vjb25kPTcyDQoNCisgICAgR3JheU91dElmPTczDQoNCisgICAgTGFi ZWw9NzQNCg0KKyAgICBUaW1lb3V0PTc1DQoNCisgICAgSW52ZW50b3J5PTc2DQoNCisgICAgTm9u TnZEYXRhTWFwPTc3DQoNCisgICAgU3RydWN0PTc4DQoNCisgICAgVW5pb249NzkNCg0KKyAgICBC b29sZWFuPTgwDQoNCisgICAgVWludDY0PTgxDQoNCisgICAgVWludDMyPTgyDQoNCisgICAgVWlu dDE2PTgzDQoNCisgICAgVWludDg9ODQNCg0KKyAgICBFRklfU1RSSU5HX0lEPTg1DQoNCisgICAg RUZJX0hJSV9EQVRFPTg2DQoNCisgICAgRUZJX0hJSV9USU1FPTg3DQoNCisgICAgRUZJX0hJSV9S RUY9ODgNCg0KKyAgICBVdWlkPTg5DQoNCisgICAgQ2hlY2tCb3g9OTANCg0KKyAgICBFbmRDaGVj a0JveD05MQ0KDQorICAgIE51bWVyaWM9OTINCg0KKyAgICBFbmROdW1lcmljPTkzDQoNCisgICAg TWluaW11bT05NA0KDQorICAgIE1heGltdW09OTUNCg0KKyAgICBTdGVwPTk2DQoNCisgICAgRGVm YXVsdD05Nw0KDQorICAgIFBhc3N3b3JkPTk4DQoNCisgICAgRW5kUGFzc3dvcmQ9OTkNCg0KKyAg ICBTdHJpbmc9MTAwDQoNCisgICAgRW5kU3RyaW5nPTEwMQ0KDQorICAgIE1pblNpemU9MTAyDQoN CisgICAgTWF4U2l6ZT0xMDMNCg0KKyAgICBFbmNvZGluZz0xMDQNCg0KKyAgICBTdXBwcmVzc0lm PTEwNQ0KDQorICAgIERpc2FibGVJZj0xMDYNCg0KKyAgICBIaWRkZW49MTA3DQoNCisgICAgR290 bz0xMDgNCg0KKyAgICBGb3JtU2V0R3VpZD0xMDkNCg0KKyAgICBJbmNvbnNpc3RlbnRJZj0xMTAN Cg0KKyAgICBXYXJuaW5nSWY9MTExDQoNCisgICAgTm9TdWJtaXRJZj0xMTINCg0KKyAgICBFbmRJ Zj0xMTMNCg0KKyAgICBLZXk9MTE0DQoNCisgICAgRGVmYXVsdEZsYWc9MTE1DQoNCisgICAgTWFu dWZhY3R1cmluZ0ZsYWc9MTE2DQoNCisgICAgQ2hlY2tCb3hEZWZhdWx0RmxhZz0xMTcNCg0KKyAg ICBDaGVja0JveERlZmF1bHRNZmdGbGFnPTExOA0KDQorICAgIEludGVyYWN0aXZlRmxhZz0xMTkN Cg0KKyAgICBOVkFjY2Vzc0ZsYWc9MTIwDQoNCisgICAgUmVzZXRSZXF1aXJlZEZsYWc9MTIxDQoN CisgICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnPTEyMg0KDQorICAgIExhdGVDaGVja0ZsYWc9MTIz DQoNCisgICAgUmVhZE9ubHlGbGFnPTEyNA0KDQorICAgIE9wdGlvbk9ubHlGbGFnPTEyNQ0KDQor ICAgIFJlc3RTdHlsZUZsYWc9MTI2DQoNCisgICAgQ2xhc3M9MTI3DQoNCisgICAgU3ViY2xhc3M9 MTI4DQoNCisgICAgQ2xhc3NHdWlkPTEyOQ0KDQorICAgIFR5cGVEZWY9MTMwDQoNCisgICAgUmVz dG9yZT0xMzENCg0KKyAgICBTYXZlPTEzMg0KDQorICAgIERlZmF1bHRzPTEzMw0KDQorICAgIEJh bm5lcj0xMzQNCg0KKyAgICBBbGlnbj0xMzUNCg0KKyAgICBMZWZ0PTEzNg0KDQorICAgIFJpZ2h0 PTEzNw0KDQorICAgIENlbnRlcj0xMzgNCg0KKyAgICBMaW5lPTEzOQ0KDQorICAgIE5hbWU9MTQw DQoNCisgICAgVmFySWQ9MTQxDQoNCisgICAgUXVlc3Rpb249MTQyDQoNCisgICAgUXVlc3Rpb25J ZD0xNDMNCg0KKyAgICBJbWFnZT0xNDQNCg0KKyAgICBMb2NrZWQ9MTQ1DQoNCisgICAgUnVsZT0x NDYNCg0KKyAgICBFbmRSdWxlPTE0Nw0KDQorICAgIFZhbHVlPTE0OA0KDQorICAgIFJlYWQ9MTQ5 DQoNCisgICAgV3JpdGU9MTUwDQoNCisgICAgUmVzZXRCdXR0b249MTUxDQoNCisgICAgRW5kUmVz ZXRCdXR0b249MTUyDQoNCisgICAgRGVmYXVsdFN0b3JlPTE1Mw0KDQorICAgIEF0dHJpYnV0ZT0x NTQNCg0KKyAgICBWYXJzdG9yZT0xNTUNCg0KKyAgICBFZml2YXJzdG9yZT0xNTYNCg0KKyAgICBW YXJTaXplPTE1Nw0KDQorICAgIE5hbWVWYWx1ZVZhclN0b3JlPTE1OA0KDQorICAgIEFjdGlvbj0x NTkNCg0KKyAgICBDb25maWc9MTYwDQoNCisgICAgRW5kQWN0aW9uPTE2MQ0KDQorICAgIFJlZnJl c2g9MTYyDQoNCisgICAgSW50ZXJ2YWw9MTYzDQoNCisgICAgVmFyc3RvcmVEZXZpY2U9MTY0DQoN CisgICAgR3VpZE9wPTE2NQ0KDQorICAgIEVuZEd1aWRPcD0xNjYNCg0KKyAgICBEYXRhVHlwZT0x NjcNCg0KKyAgICBEYXRhPTE2OA0KDQorICAgIE1vZGFsPTE2OQ0KDQorICAgIENsYXNzTm9uRGV2 aWNlPTE3MA0KDQorICAgIENsYXNzRGlza0RldmljZT0xNzENCg0KKyAgICBDbGFzc1ZpZGVvRGV2 aWNlPTE3Mg0KDQorICAgIENsYXNzTmV0d29ya0RldmljZT0xNzMNCg0KKyAgICBDbGFzc0lucHV0 RGV2aWNlPTE3NA0KDQorICAgIENsYXNzT25Cb2FyZERldmljZT0xNzUNCg0KKyAgICBDbGFzc090 aGVyRGV2aWNlPTE3Ng0KDQorICAgIFN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbj0xNzcNCg0KKyAg ICBTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbj0xNzgNCg0KKyAgICBTdWJjbGFzc0Zyb250UGFn ZT0xNzkNCg0KKyAgICBTdWJjbGFzc1NpbmdsZVVzZT0xODANCg0KKyAgICBZZWFyU3VwcHByZXNz RmxhZz0xODENCg0KKyAgICBNb250aFN1cHByZXNzRmxhZz0xODINCg0KKyAgICBEYXlTdXBwcmVz c0ZsYWc9MTgzDQoNCisgICAgSG91clN1cHBwcmVzc0ZsYWc9MTg0DQoNCisgICAgTWludXRlU3Vw cHJlc3NGbGFnPTE4NQ0KDQorICAgIFNlY29uZFN1cHByZXNzRmxhZz0xODYNCg0KKyAgICBTdG9y YWdlTm9ybWFsRmxhZz0xODcNCg0KKyAgICBTdG9yYWdlVGltZUZsYWc9MTg4DQoNCisgICAgU3Rv cmFnZVdha2VVcEZsYWc9MTg5DQoNCisgICAgVW5pUXVlRmxhZz0xOTANCg0KKyAgICBOb0VtcHR5 RmxhZz0xOTENCg0KKyAgICBDb25kPTE5Mg0KDQorICAgIEZpbmQ9MTkzDQoNCisgICAgTWlkPTE5 NA0KDQorICAgIFRvaz0xOTUNCg0KKyAgICBTcGFuPTE5Ng0KDQorICAgIER1cD0xOTcNCg0KKyAg ICBWYXJFcVZhbD0xOTgNCg0KKyAgICBWYXI9MTk5DQoNCisgICAgSWRFcVZhbD0yMDANCg0KKyAg ICBJZEVxSWQ9MjAxDQoNCisgICAgSWRFcVZhbExpc3Q9MjAyDQoNCisgICAgUXVlc3Rpb25SZWY9 MjAzDQoNCisgICAgUnVsZVJlZj0yMDQNCg0KKyAgICBTdHJpbmdSZWY9MjA1DQoNCisgICAgUHVz aFRoaXM9MjA2DQoNCisgICAgU2VjdXJpdHk9MjA3DQoNCisgICAgR2V0PTIwOA0KDQorICAgIFRy dWVTeW1ib2w9MjA5DQoNCisgICAgRmFsc2VTeW1ib2w9MjEwDQoNCisgICAgT25lPTIxMQ0KDQor ICAgIE9uZXM9MjEyDQoNCisgICAgWmVybz0yMTMNCg0KKyAgICBVbmRlZmluZWQ9MjE0DQoNCisg ICAgVmVyc2lvbj0yMTUNCg0KKyAgICBMZW5ndGg9MjE2DQoNCisgICAgQU5EPTIxNw0KDQorICAg IE9SPTIxOA0KDQorICAgIE5PVD0yMTkNCg0KKyAgICBTZXQ9MjIwDQoNCisgICAgQml0V2lzZU5v dD0yMjENCg0KKyAgICBCb29sVmFsPTIyMg0KDQorICAgIFN0cmluZ1ZhbD0yMjMNCg0KKyAgICBV bkludFZhbD0yMjQNCg0KKyAgICBUb1VwcGVyPTIyNQ0KDQorICAgIFRvTG93ZXI9MjI2DQoNCisg ICAgTWF0Y2g9MjI3DQoNCisgICAgTWF0Y2gyPTIyOA0KDQorICAgIENhdGVuYXRlPTIyOQ0KDQor ICAgIFF1ZXN0aW9uUmVmVmFsPTIzMA0KDQorICAgIFN0cmluZ1JlZlZhbD0yMzENCg0KKyAgICBN YXA9MjMyDQoNCisgICAgUmVmcmVzaEd1aWQ9MjMzDQoNCisgICAgU3RyaW5nVG9rZW49MjM0DQoN CisgICAgT3B0aW9uRGVmYXVsdD0yMzUNCg0KKyAgICBPcHRpb25EZWZhdWx0TWZnPTIzNg0KDQor ICAgIE51bWVyaWNTaXplT25lPTIzNw0KDQorICAgIE51bWVyaWNTaXplVHdvPTIzOA0KDQorICAg IE51bWVyaWNTaXplRm91cj0yMzkNCg0KKyAgICBOdW1lcmljU2l6ZUVpZ2h0PTI0MA0KDQorICAg IERpc1BsYXlJbnREZWM9MjQxDQoNCisgICAgRGlzUGxheVVJbnREZWM9MjQyDQoNCisgICAgRGlz UGxheVVJbnRIZXg9MjQzDQoNCisgICAgSW5zZW5zaXRpdmU9MjQ0DQoNCisgICAgU2Vuc2l0aXZl PTI0NQ0KDQorICAgIExhc3ROb25NYXRjaD0yNDYNCg0KKyAgICBGaXJzdE5vbk1hdGNoPTI0Nw0K DQorICAgIE51bWJlcj0yNDgNCg0KKyAgICBTdHJpbmdJZGVudGlmaWVyPTI0OQ0KDQorICAgIENv bXBsZXhEZWZpbmU9MjUwDQoNCisgICAgTGluZURlZmluaXRpb249MjUxDQoNCisgICAgSW5jbHVk ZURlZmluaXRpb249MjUyDQoNCisgICAgV2hpdGVzcGFjZT0yNTMNCg0KKyAgICBOZXdsaW5lPTI1 NA0KDQorICAgIExpbmVDb21tZW50PTI1NQ0KDQorICAgIEV4dGVybj0yNTYNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBpbnB1dDpUb2tlblN0cmVhbSwgb3V0cHV0OlRleHRJTyA9IHN5 cy5zdGRvdXQpOg0KDQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGlucHV0LCBvdXRwdXQpDQoN CisgICAgICAgIHNlbGYuY2hlY2tWZXJzaW9uKCI0LjcuMiIpDQoNCisgICAgICAgIHNlbGYuX2lu dGVycCA9IFBhcnNlckFUTlNpbXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNU b0RGQSwgc2VsZi5zaGFyZWRDb250ZXh0Q2FjaGUpDQoNCisgICAgICAgIHNlbGYuX3ByZWRpY2F0 ZXMgPSBOb25lDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJQcm9ncmFtQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6 aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKw0KDQorICAg ICAgICBkZWYgdmZyRm9ybVNldERlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVm aW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJQcmFnbWFQYWNr RGVmaW5pdGlvbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuVmZyUHJhZ21hUGFja0RlZmluaXRpb25Db250ZXh0KQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQsaSkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbihzZWxmLCBp OmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZy RGF0YVN0cnVjdERlZmluaXRpb25Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiB2ZnJEYXRhVW5pb25EZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9u Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVVuaW9uRGVm aW5pdGlvbkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUHJv Z3JhbQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclBy b2dyYW0iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJQcm9n cmFtKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAg IGRlZiB2ZnJQcm9ncmFtKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclByb2dyYW1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkN Cg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDAsIHNlbGYuUlVMRV92ZnJQcm9n cmFtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzMgb3IgKCgoKF9sYSAt IDc4KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA3OCkpICYgKCgxIDw8IChWZnJT eW50YXhQYXJzZXIuU3RydWN0IC0gNzgpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVW5pb24g LSA3OCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UeXBlRGVmIC0gNzgpKSkpICE9IDApOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDcNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBsYV8gPSBzZWxm Ll9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDAsc2VsZi5fY3R4KQ0KDQorICAg ICAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNDA0DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyUHJhZ21hUGFja0RlZmlu aXRpb24oKQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAg ICAgICBlbGlmIGxhXyA9PSAyOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDA1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVjdERlZmluaXRpb24o KQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBl bGlmIGxhXyA9PSAzOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDA2DQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVVuaW9uRGVmaW5pdGlvbigpDQoNCisg ICAgICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQxMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTINCg0KKyAgICAgICAgICAgIHNlbGYudmZyRm9y bVNldERlZmluaXRpb24oKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgUHJhZ21hUGFja1Nob3dEZWZDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9wcmFnbWFQYWNrU2hvd0RlZg0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTaG93RGVmIiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHJhZ21hUGFja1Nob3dEZWYoc2VsZikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHByYWdtYVBhY2tT aG93RGVmKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlByYWdtYVBhY2tTaG93RGVmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyLCBzZWxmLlJVTEVfcHJhZ21hUGFj a1Nob3dEZWYpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTQNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzApDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBQ cmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0K KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ByYWdtYVBhY2tTdGFja0RlZg0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTdGFja0RlZiIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBhY2tTdGFj a0RlZihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgcHJhZ21hUGFja1N0YWNrRGVmKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTdGFja0RlZkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNCwg c2VsZi5SVUxFX3ByYWdtYVBhY2tTdGFja0RlZikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDE2DQoNCisg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90 KF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzEgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMik6 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRh cHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIsc2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYg bGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxNw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0MTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0MjMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0MjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDIyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0K DQorICAgIGNsYXNzIFByYWdtYVBhY2tOdW1iZXJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcHJhZ21hUGFja051bWJlcg0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tOdW1iZXIi ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcmFnbWFQYWNrTnVt YmVyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAg IGRlZiBwcmFnbWFQYWNrTnVtYmVyKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDYsIHNlbGYu UlVMRV9wcmFnbWFQYWNrTnVtYmVyKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MjYNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk51 bWJlcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDI1DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFZmclByYWdtYVBhY2tEZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBwcmFnbWFQYWNrU2hvd0RlZihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlByYWdtYVBhY2tTaG93RGVmQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHBy YWdtYVBhY2tTdGFja0RlZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTdGFja0RlZkNvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBwcmFnbWFQYWNrTnVtYmVyKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuUHJhZ21hUGFja051bWJlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyUHJhZ21hUGFja0RlZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2 ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg OCwgc2VsZi5SVUxFX3ZmclByYWdtYVBhY2tEZWZpbml0aW9uKQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDI4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX18zKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyOQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNCkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0MzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzQNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw1LHNlbGYuX2N0eCkNCg0KKyAg ICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0 MzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tTaG93RGVmKCkNCg0KKw0KDQor ICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNDMyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5wcmFnbWFQYWNrU3RhY2tEZWYoKQ0KDQor DQoNCisgICAgICAgICAgICBlbGlmIGxhXyA9PSAzOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0MzMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tOdW1iZXIoKQ0K DQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzYNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJE YXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk4xID0gTm9uZSAjIFRva2VuDQoNCisgICAg ICAgICAgICBzZWxmLk4yID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cnVj dChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdHJ1Y3QsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJh Y2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIENsb3NlQnJhY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2Vt aWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVHlwZURlZihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5U eXBlRGVmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOb25OdkRhdGFNYXAoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRh TWFwLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJEYXRhU3RydWN0RGVmaW5pdGlvbg0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRGF0YVN0cnVjdERlZmlu aXRpb24oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIHZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAxMCwgc2VsZi5SVUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKQ0KDQorICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0MzkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLlR5cGVEZWY6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQzOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlR5cGVEZWYpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0MQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RydWN0KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQ0Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQ0Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNDQ1DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguTjEg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0NDkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVjdEZpZWxkcyhGYWxzZSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDUyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0NTENCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMiA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisNCg0KKw0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDQ1NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRGF0YVVuaW9uRGVmaW5pdGlvbkNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLk4xID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk4yID0gTm9uZSAj IFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIFVuaW9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuaW9uLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBPcGVuQnJhY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJEYXRhU3RydWN0RmllbGRzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0Nv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNlKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJh Y2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIFR5cGVEZWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVHlwZURlZiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgTm9uTnZEYXRhTWFwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcCwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRGF0YVVuaW9u RGVmaW5pdGlvbg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmckRhdGFVbmlvbkRlZmluaXRpb24iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJEYXRhVW5pb25EZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJEYXRhVW5pb25EZWZpbml0aW9u KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckRh dGFVbmlvbkRlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEyLCBzZWxmLlJVTEVfdmZyRGF0YVVu aW9uRGVmaW5pdGlvbikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDU3DQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5UeXBlRGVmOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTYNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UeXBlRGVmKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NTkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlVuaW9uKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2MQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu Tm9uTnZEYXRhTWFwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjANCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQoN CisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2NA0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDYzDQoNCisgICAg ICAgICAgICAgICAgbG9jYWxjdHguTjEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjYN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyRGF0 YVN0cnVjdEZpZWxkcyhUcnVlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2OA0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NzANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2OQ0KDQorICAgICAgICAgICAgICAgIGxv Y2FsY3R4Lk4yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikN Cg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDcyDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJE YXRhU3RydWN0RmllbGRzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5Vbmlv biA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9u DQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGQ2NENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RG aWVsZDY0Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVs ZDMyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGQzMkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDE2KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQxNkNvbnRleHQpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCxp KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RGaWVsZDhDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3Ry dWN0RmllbGQ4Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RG aWVsZEJvb2woc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZEJvb2xDb250ZXh0KQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRCb29sQ29udGV4dCxpKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk U3RyaW5nQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkU3RyaW5nQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1 Y3RGaWVsZERhdGUoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGREYXRlQ29udGV4dCxpKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVs ZFRpbWVDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0 RmllbGRUaW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RG aWVsZFJlZihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCxpKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFVzZXJD b250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRV c2VyQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVs ZDY0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dCxpKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDMyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQz MkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRG aWVsZDMyQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRG aWVsZDE2KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dCxpKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVs ZDhDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0 RmllbGQ4Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRh U3RydWN0RmllbGRzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyRGF0YVN0cnVjdEZpZWxkcyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K DQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZiwg RmllbGRJblVuaW9uKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs IEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0LCBz ZWxmLlJVTEVfdmZyRGF0YVN0cnVjdEZpZWxkcykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDkwDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gODAp KSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDgwKSkgJiAoKDEgPDwgKFZmclN5bnRh eFBhcnNlci5Cb29sZWFuIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDY0IC0g ODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDMyIC0gODApKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuVWludDE2IC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDgg LSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEIC0gODApKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFIC0gODApKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuRUZJX0hJSV9USU1FIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRUZJ X0hJSV9SRUYgLSA4MCkpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg4DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAg bGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxNCxzZWxmLl9j dHgpDQoNCisgICAgICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NzQNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3Ry dWN0RmllbGQ2NChGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0K Kw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NzUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3Ry dWN0RmllbGQzMihGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0K Kw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDM6DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NzYNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3Ry dWN0RmllbGQxNihGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0K Kw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDQ6DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NzcNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3Ry dWN0RmllbGQ4KEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQor DQoNCisgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNToNCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDQ3OA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1 Y3RGaWVsZEJvb2woRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoN CisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA2Og0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDc5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0 cnVjdEZpZWxkU3RyaW5nKEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFz cw0KDQorDQoNCisgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNzoNCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4MA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmRh dGFTdHJ1Y3RGaWVsZERhdGUoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAgICBw YXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA4Og0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNDgxDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGF0YVN0cnVjdEZpZWxkVGltZShGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAg IHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDk6DQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODINCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5kYXRhU3RydWN0RmllbGRSZWYoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAg ICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMDoNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Mw0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLmRhdGFTdHJ1Y3RGaWVsZFVzZXIoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAg ICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMToNCg0KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4NA0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLmRhdGFTdHJ1Y3RCaXRGaWVsZDY0KEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgICAg ICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTI6DQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODUNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5kYXRhU3RydWN0Qml0RmllbGQzMihGaWVsZEluVW5pb24pDQoNCisgICAgICAg ICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDEz Og0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg2DQoNCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEJpdEZpZWxkMTYoRmllbGRJblVuaW9uKQ0KDQorICAg ICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9 PSAxNDoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Nw0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RCaXRGaWVsZDgoRmllbGRJblVuaW9uKQ0KDQor ICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQ2NENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUp Og0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2Vs Zi5GaWVsZEluVW5pb24gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9r ZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQoNCisN Cg0KKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50NjQsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3Bl bkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQ2NA0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RG aWVsZDY0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0 cnVjdEZpZWxkNjQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQor DQoNCisgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisN Cg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkNjRD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KDQorICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYsIHNlbGYuUlVMRV9kYXRhU3RydWN0Rmll bGQ2NCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNDkzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5VaW50NjQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk0DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTgNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk2DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUw MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkMzJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25l KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRv a2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KDQor DQoNCisgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJ ZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9w ZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VC cmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkMzIN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0 RmllbGQzMiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFT dHJ1Y3RGaWVsZDMyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGQzMihzZWxmLCBGaWVsZEluVW5pb24pOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDMy Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZp ZWxkMzIpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMw0K DQorICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA3DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2tldDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA0DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwNQ0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNTA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 MDkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0K DQorICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9u ZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBz ZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBU b2tlbg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0K Kw0KDQorICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5n SWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBP cGVuQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2 DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVj dEZpZWxkMTYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRh U3RydWN0RmllbGQxNihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoN CisNCg0KKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwgRmllbGRJblVuaW9uKToNCg0K Kw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQx NkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RG aWVsZDE2KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlVpbnQxNikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTIN Cg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxNg0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNrZXQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxMw0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTQNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDUxNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTE4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQ4Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9u ZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBz ZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBU b2tlbg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0K Kw0KDQorICAgICAgICBkZWYgVWludDgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3Bl bkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQ4DQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZp ZWxkOCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1 Y3RGaWVsZDgoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgRmllbGRJblVuaW9uKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ4Q29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkOCkN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTIwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5VaW50OCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjENCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyNQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJy YWNrZXQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyMg0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDUyNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTI3DQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBEYXRhU3RydWN0RmllbGRCb29sQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZp ZWxkSW5VbmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0K DQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0KKw0KDQor ICAgICAgICBkZWYgQm9vbGVhbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Cb29sZWFuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5C cmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFj a2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkQm9vbA0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RG aWVsZEJvb2wiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRh U3RydWN0RmllbGRCb29sKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisN Cg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGRCb29sKHNlbGYsIEZpZWxkSW5Vbmlvbik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZp ZWxkQm9vbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24p DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNCwgc2VsZi5SVUxFX2RhdGFT dHJ1Y3RGaWVsZEJvb2wpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyOQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQm9vbGVhbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA1MzANCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUz NA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDUzMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzINCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDUzMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gNTM2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQor ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0K DQorDQoNCisNCg0KKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGRTdHJpbmdDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZp ZWxkSW5Vbmlvbj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2Vs Zi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZp ZWxkSW5Vbmlvbg0KDQorDQoNCisgICAgICAgIGRlZiBFRklfU1RSSU5HX0lEKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9TVFJJ TkdfSUQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll ciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGRTdHJpbmcNCg0KKw0KDQorICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGRTdHJpbmciICk6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGRTdHJpbmcoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGRh dGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFN0cmluZ0NvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNiwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFN0cmlu ZykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6 DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTM4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FRklfU1RSSU5HX0lEKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUz OQ0KDQorICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQzDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQwDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0MQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTQyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1NDUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlv bj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAg ICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9u ZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlv bg0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9z ZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf ZGF0YVN0cnVjdEZpZWxkRGF0ZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZERhdGUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGREYXRlKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGREYXRl KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkRGF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAyOCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZERhdGUpDQoNCisgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0 Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRF KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0OA0KDQorICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQ5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDU1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUxDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTQNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1 Y3RGaWVsZFRpbWVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAg ICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KDQorDQoNCisgICAgICAgIGRlZiBF RklfSElJX1RJTUUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlm aWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFj a2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt YmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0 LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkVGltZQ0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVs ZFRpbWUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3Ry dWN0RmllbGRUaW1lKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGRUaW1lKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk VGltZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMCwgc2VsZi5SVUxFX2RhdGFTdHJ1 Y3RGaWVsZFRpbWUpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1Ng0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDU1Nw0KDQorICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTYxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTU4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1OQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTYwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA1NjMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoN CisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRmll bGRJblVuaW9uPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQor ICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxm Lk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmll bGRJblVuaW9uDQoNCisNCg0KKyAgICAgICAgZGVmIEVGSV9ISUlfUkVGKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVG LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfZGF0YVN0cnVjdEZpZWxkUmVmDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkUmVmIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkUmVmKHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGRS ZWYoc2VsZiwgRmllbGRJblVuaW9uKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRSZWZDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMzIsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGRSZWYpDQoNCisgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2 NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTY2DQoNCisgICAgICAgICAgICBsb2NhbGN0 eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNTY4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQoNCisN Cg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3Mg0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQor ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgRGF0YVN0cnVj dEZpZWxkVXNlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBO b25lDQoNCisgICAgICAgICAgICBzZWxmLlQgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAg IHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24g PSBGaWVsZEluVW5pb24NCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KDQorDQoNCisgICAgICAg IGRlZiBPcGVuQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RG aWVsZFVzZXINCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRE YXRhU3RydWN0RmllbGRVc2VyIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0RGF0YVN0cnVjdEZpZWxkVXNlcihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkVXNlcihzZWxmLCBGaWVs ZEluVW5pb24pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRh dGFTdHJ1Y3RGaWVsZFVzZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRmll bGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQsIHNlbGYu UlVMRV9kYXRhU3RydWN0RmllbGRVc2VyKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzQNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LlQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3NQ0KDQorICAgICAgICAgICAg bG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc5DQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc2DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDU3Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc4DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0 KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODENCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERh dGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5V bmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KDQorICAg ICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxk SW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KDQorDQoNCisgICAgICAgIGRlZiBDb2xvbihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xv biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgVWludDY0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlVpbnQ2NCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRp ZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf ZGF0YVN0cnVjdEJpdEZpZWxkNjQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXREYXRhU3RydWN0Qml0RmllbGQ2NCIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0Qml0Rmll bGQ2NChzZWxmLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM2LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQpDQoNCisgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDU4Mw0KDQorICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlVpbnQ2NCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4NA0K DQorICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1ODcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4 OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgRGF0YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1O b25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAj IFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAg ICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQoNCisNCg0KKyAgICAgICAgZGVm IENvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQzMg0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDMyIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGRh dGFTdHJ1Y3RCaXRGaWVsZDMyKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzgsIHNlbGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQzMikN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTkxDQoNCisgICAgICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDU5Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNTkyDQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisNCg0KKw0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDU5NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29sb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTk2DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTk3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBEYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwg RmllbGRJblVuaW9uPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K DQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQoNCisgICAgICAgICAgICBz ZWxmLkQgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tl bg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0KKw0K DQorICAgICAgICBkZWYgQ29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51 bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQxNihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MTYsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDE2DQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxk MTYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0 Qml0RmllbGQxNihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisN Cg0KKyAgICBkZWYgZGF0YVN0cnVjdEJpdEZpZWxkMTYoc2VsZiwgRmllbGRJblVuaW9uKToNCg0K Kw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0Rmll bGQxNkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MCwgc2VsZi5SVUxFX2RhdGFTdHJ1 Y3RCaXRGaWVsZDE2KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1OTkNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjAxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MDANCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5O ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKw0KDQor DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjAzDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 MDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MDUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAg ICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVs ZDhDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdT dGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQor ICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk4g PSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJ blVuaW9uDQoNCisNCg0KKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50OChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50 OCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxk OA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1 Y3RCaXRGaWVsZDgiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRE YXRhU3RydWN0Qml0RmllbGQ4KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoN CisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQ4KHNlbGYsIEZpZWxkSW5Vbmlv bik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEJpdEZpZWxkOENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5p b24pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0Miwgc2VsZi5SVUxFX2Rh dGFTdHJ1Y3RCaXRGaWVsZDgpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYwNw0KDQorICAgICAgICAgICAg bG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYwOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjA4DQoNCisgICAgICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisN Cg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxMQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjEyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjEzDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJGb3JtU2V0RGVm aW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fU0VUX09Q KQ0KDQorDQoNCisgICAgICAgIGRlZiBGb3JtU2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1TZXQsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFV1aWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmlu aXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIFRpdGxlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpdGxlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBT dHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQoN CisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEhl bHAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuSGVscCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybVNldExpc3Qoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiBFbmRGb3JtU2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVuZEZvcm1TZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsYXNzR3VpZChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bGFzc0d1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGNsYXNzZ3VpZERlZmluaXRpb24oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5DbGFzc2d1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIENsYXNzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBjbGFzc0Rl ZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5DbGFzc0RlZmluaXRpb25Db250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgU3ViY2xhc3Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3MsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIHN1YmNsYXNzRGVmaW5pdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzRGVmaW5pdGlv bkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldERl ZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJGb3JtU2V0RGVmaW5pdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmckZvcm1TZXREZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJGb3JtU2V0RGVmaW5pdGlvbihzZWxmKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVm aW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNDQsIHNlbGYuUlVMRV92ZnJGb3JtU2V0RGVmaW5pdGlv bikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6 DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjE1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Gb3JtU2V0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxNg0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVXVpZCkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2MTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE4DQoNCisgICAgICAg ICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 MTkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVGl0bGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjIxDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYyMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjIzDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI1DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI3DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYyOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjkNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYzMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzMQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYzMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzMNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYzOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ2xhc3NHdWlkOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2MzQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbGFzc0d1aWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDYzNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzNg0KDQorICAgICAgICAgICAgICAg IHNlbGYuY2xhc3NndWlkRGVmaW5pdGlvbihsb2NhbGN0eC5Ob2RlKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2MzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g NjQ2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5DbGFzczoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQx DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xhc3MpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0Mg0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY0Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NEZWZpbml0aW9uKCkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQ0DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY1Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3ViY2xhc3M6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY0OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN1YmNsYXNzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN1 YmNsYXNzRGVmaW5pdGlvbigpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1MQ0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NTUNCg0KKyAgICAgICAgICAgIHNl bGYudmZyRm9ybVNldExpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA2NTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEZv cm1TZXQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjU3DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDbGFzc2d1 aWREZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorICAgICAg ICAgICAgc2VsZi5HdWlkTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2Rl DQoNCisNCg0KKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0K DQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNv bnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29u dGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2Ns YXNzZ3VpZERlZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRDbGFzc2d1aWREZWZpbml0aW9uIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2xhc3NndWlkRGVmaW5pdGlvbihzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgY2xhc3NndWlkRGVmaW5pdGlvbihz ZWxmLCBOb2RlKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5D bGFzc2d1aWREZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE5v ZGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0Niwgc2VsZi5SVUxFX2Ns YXNzZ3VpZERlZmluaXRpb24pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1OQ0KDQorICAgICAgICAgICAg c2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjYyDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMzMsc2VsZi5f Y3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY2MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjYxDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisNCg0KKw0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDY2Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVk aWN0KHNlbGYuX2lucHV0LDM0LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAx Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjQNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY2NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRp b24oKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzANCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY4DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmd1 aWREZWZpbml0aW9uKCkNCg0KKw0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDbGFzc0RlZmluaXRpb25Db250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAg ICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KDQorDQoNCisgICAg ICAgIGRlZiB2YWxpZENsYXNzTmFtZXMoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQsaSkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jbGFzc0RlZmluaXRp b24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDbGFzc0Rl ZmluaXRpb24iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDbGFz c0RlZmluaXRpb24oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQor DQoNCisgICAgZGVmIGNsYXNzRGVmaW5pdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5DbGFzc0RlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQ4 LCBzZWxmLlJVTEVfY2xhc3NEZWZpbml0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzINCg0KKyAg ICAgICAgICAgIHNlbGYudmFsaWRDbGFzc05hbWVzKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA2NzcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNjczDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzQNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnZhbGlkQ2xhc3NOYW1lcygpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY3OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisN Cg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0K DQorICAgIGNsYXNzIFZhbGlkQ2xhc3NOYW1lc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkNsYXNzTmFtZSA9IDANCg0K Kw0KDQorICAgICAgICBkZWYgQ2xhc3NOb25EZXZpY2Uoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NOb25EZXZpY2UsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIENsYXNzRGlza0RldmljZShzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc0Rpc2tEZXZpY2UsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIENsYXNzVmlkZW9EZXZpY2Uoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NWaWRlb0Rldmlj ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xhc3NOZXR3b3JrRGV2aWNlKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzTmV0 d29ya0RldmljZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xhc3NJbnB1dERldmljZShzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bGFzc0lucHV0RGV2aWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbGFzc09uQm9hcmREZXZp Y2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xhc3NPbkJvYXJkRGV2aWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbGFzc090 aGVyRGV2aWNlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsYXNzT3RoZXJEZXZpY2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51 bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92YWxpZENsYXNz TmFtZXMNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWYWxp ZENsYXNzTmFtZXMiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW YWxpZENsYXNzTmFtZXMoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIHZhbGlkQ2xhc3NOYW1lcyhzZWxmKToNCg0KKw0KDQorICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WYWxpZENsYXNzTmFtZXNDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDUwLCBzZWxmLlJVTEVfdmFsaWRDbGFzc05hbWVzKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2ODANCg0K KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBu b3QoKCgoKF9sYSAtIDE3MCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTcwKSkg JiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5DbGFzc05vbkRldmljZSAtIDE3MCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5DbGFzc0Rpc2tEZXZpY2UgLSAxNzApKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuQ2xhc3NWaWRlb0RldmljZSAtIDE3MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5DbGFzc05ldHdvcmtEZXZpY2UgLSAxNzApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2xh c3NJbnB1dERldmljZSAtIDE3MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DbGFzc09uQm9h cmREZXZpY2UgLSAxNzApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NPdGhlckRldmlj ZSAtIDE3MCkpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRNYXRjaChzZWxmKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBTdWJjbGFzc0RlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJ X0lGUl9HVUlEX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdWJjbGFzc1NldHVwQXBwbGljYXRp b24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBT dWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgU3ViY2xhc3NGcm9udFBhZ2Uoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NGcm9u dFBhZ2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN1YmNsYXNzU2luZ2xlVXNlKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1YmNs YXNzU2luZ2xlVXNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3ViY2xhc3NEZWZpbml0aW9uDQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3ViY2xhc3NEZWZpbml0aW9u IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3ViY2xhc3NEZWZp bml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiBzdWJjbGFzc0RlZmluaXRpb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NEZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1 Miwgc2VsZi5SVUxFX3N1YmNsYXNzRGVmaW5pdGlvbikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjgyDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg bm90KCgoKChfbGEgLSAxNzcpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE3Nykp ICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uIC0gMTc3 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uIC0g MTc3KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzRnJvbnRQYWdlIC0gMTc3KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2luZ2xlVXNlIC0gMTc3KSkpKSAhPSAw KSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5OdW1iZXIpOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmckZvcm1TZXRM aXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5n U3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gTm9kZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJGb3JtU2V0KHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJGb3Jt U2V0Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENv bnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldExpc3QN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJGb3JtU2V0 TGlzdCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckZvcm1T ZXRMaXN0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiB2ZnJGb3JtU2V0TGlzdChzZWxmLCBOb2RlKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlLCBOb2RlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgNTQsIHNlbGYuUlVMRV92ZnJGb3JtU2V0TGlzdCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg3DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5 bnRheFBhcnNlci5Gb3JtIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLkZvcm1NYXAgb3IgKCgoKF9s YSAtIDEwNSkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTA1KSkgJiAoKDEgPDwg KFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gMTA1KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLkRpc2FibGVJZiAtIDEwNSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDEw NSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUgLSAxMDUpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuRWZpdmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTmFtZVZhbHVl VmFyU3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTA1KSkp KSAhPSAwKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi52ZnJGb3JtU2V0KCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjg5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgVmZyRm9ybVNldENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVm IHZmckZvcm1EZWZpbml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0 LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybU1hcERlZmluaXRpb24oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbWFnZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEltYWdl Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3Jl TGluZWFyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZShzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudERlZmF1bHRTdG9yZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dERlZmF1bHRTdG9yZUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlm Rm9ybVNldENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmRm9ybVNldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZGb3Jt U2V0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4dGVu c2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldA0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckZvcm1TZXQiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtU2V0KHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJGb3JtU2V0KHNlbGYpOg0K DQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDU2LCBzZWxmLlJVTEVfdmZyRm9ybVNldCkNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDcwMA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkZvcm1dOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmckZv cm1EZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybU1hcF06DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY5MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyRm9ybU1hcERl ZmluaXRpb24oKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY5Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW1hZ2Uo KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5WYXJzdG9yZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDY5Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVMaW5l YXIoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5FZml2YXJzdG9yZV06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY5NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3Rv cmVFZmkoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OYW1lVmFsdWVWYXJTdG9yZV06DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDY5NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50VmFyU3RvcmVOYW1lVmFsdWUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmVdOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudERlZmF1bHRTdG9yZSgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZl06DQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5Nw0KDQorICAgICAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTgNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KCkNCg0KKyAgICAgICAgICAg ICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu R3VpZE9wXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjk5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50RGVm YXVsdFN0b3JlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGlu dm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfREVGQVVMVFNU T1JFX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAg ICAgICBzZWxmLlMgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuQSA9IE5vbmUg IyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBEZWZhdWx0U3RvcmUoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3Jl LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29t bWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xv bihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBBdHRyaWJ1 dGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQXR0cmlidXRlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVt ZW50RGVmYXVsdFN0b3JlDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlIiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRE ZWZhdWx0U3RvcmUoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1OCwgc2VsZi5S VUxFX3ZmclN0YXRlbWVudERlZmF1bHRTdG9yZSkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzAyDQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNzAzDQoNCisgICAgICAgICAgICBsb2NhbGN0eC5OID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3MDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwNQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDcNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcwOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwOQ0KDQorICAgICAg ICAgICAgbG9jYWxjdHguUyA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzE1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5Db21tYToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzEx DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxMg0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0ZSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE0DQoNCisgICAg ICAgICAgICAgICAgbG9jYWxjdHguQSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE3DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShF RklfSUZSX1ZBUlNUT1JFX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5UTiA9IE5vbmUgIyBUb2tl bg0KDQorICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAg c2VsZi5TTiA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBWYXJzdG9yZShzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5W YXJzdG9yZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTmFtZShzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIFV1aWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3Vp ZERlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVp bnQ4LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDE2LCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBV aW50NjQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuVWludDY0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RUZJX0hJSV9EQVRFLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1RJTUUoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJ X0hJSV9USU1FLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJ X1JFRiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFySWQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyIiApOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVM aW5lYXIoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYpOg0KDQorDQoNCisgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCA2MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKQ0K DQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0K KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3MTkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlZhcnN0b3JlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczNg0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MjANCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5UTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDcyMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50OF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDcyMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlVpbnQ4KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjMNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg ICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu VWludDE2XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDE2KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3MjUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDMyXToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuVWludDY0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzI4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDY0 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJ SV9EQVRFXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMwDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FXToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMyDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3MzMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUZdOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzM1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJZDoNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNzM4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDczOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0MA0KDQorICAgICAgICAgICAgICAg IGxvY2FsY3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzQ0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O YW1lKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0NQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA3NDYNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDcN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVXVpZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDkNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzUwDQoNCisgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisg ICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFZh clN0b3JlRWZpQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGlu dm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVf RUZJX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5UTiA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAg ICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5TTiA9IE5v bmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5WTiA9IE5vbmUgIyBUb2tlbg0KDQorICAg ICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIEVmaXZh cnN0b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVmaXZhcnN0b3JlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBBdHRyaWJ1dGUo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQXR0cmlidXRlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJWYXJTdG9yZUVmaUF0dHIo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLlZmclZhclN0b3JlRWZpQXR0ckNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0ckNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIFV1aWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmluaXRp b24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBVaW50OChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5VaW50OCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQx NiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgVWludDY0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJ X0hJSV9EQVRFKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX0hJ SV9USU1FKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVGSV9ISUlfVElNRSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX0hJSV9S RUYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuRUZJX0hJSV9SRUYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE5hbWUoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmFtZSwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgVmFyU2l6ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5WYXJTaXplLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIs IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFZhcklkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcklkLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlRWZp DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50VmFyU3RvcmVFZmkiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2VsZik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 VmFyU3RvcmVFZmlDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDYyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50VmFy U3RvcmVFZmkpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRWZpdmFyc3RvcmUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzcwDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcl06DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDc1NA0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlROID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzU1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ4XToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzU2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVWludDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1 Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5VaW50MTZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 NTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1OQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjANCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc2MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3NjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5VaW50NjQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Mw0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5FRklfSElJX0RBVEVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 NjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJ X0RBVEUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2NQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5F RklfSElJX1RJTUVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjYNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Nw0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1JF Rl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2OA0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3NjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9u KHNlbGYpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzYNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlZh cklkOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzINCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzczDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc0DQoNCisg ICAgICAgICAgICAgICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3NQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkF0dHJpYnV0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzkN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzgwDQoNCisgICAgICAgICAgICBzZWxmLnZmclZhclN0b3Jl RWZpQXR0cigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzg1DQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5C aXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4MQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNzgyDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJW YXJTdG9yZUVmaUF0dHIoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3ODcNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzg4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDQNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50 ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw0NSxzZWxmLl9jdHgpDQoNCisgICAgICAg ICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzg5DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmFtZSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzkwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzkxDQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYg bGFfID09IDI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5Mw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5hbWUpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDc5NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5NQ0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTYNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDc5Nw0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlZOID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3OTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVmFyU2l6ZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODAxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODAyDQoNCisgICAgICAgICAgICAg ICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODAzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDYNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODA3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwOA0KDQorICAgICAgICAgICAgc2VsZi5ndWlk RGVmaW5pdGlvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA5DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJWYXJTdG9yZUVmaUF0dHJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5BdHRyID0gMA0KDQorDQoNCisgICAgICAgIGRl ZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyVmFy U3RvcmVFZmlBdHRyDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyVmFyU3RvcmVFZmlBdHRyIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyVmFyU3RvcmVFZmlBdHRyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJWYXJTdG9yZUVmaUF0dHIoc2VsZik6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyVmFyU3RvcmVFZmlB dHRyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCA2NCwgc2VsZi5SVUxFX3ZmclZhclN0b3JlRWZpQXR0cikNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxMQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50 VmFyU3RvcmVOYW1lVmFsdWVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9W QVJTVE9SRV9OQU1FX1ZBTFVFX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBU b2tlbg0KDQorICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAg ICAgIGRlZiBOYW1lVmFsdWVWYXJTdG9yZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lVmFsdWVWYXJTdG9yZSwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGd1 aWREZWZpbml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBWYXJJZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg TmFtZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk5h bWUpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBT dHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQoN CisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZQ0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlIiAp Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFy U3RvcmVOYW1lVmFsdWUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKHNlbGYpOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0 b3JlTmFtZVZhbHVlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZh clN0b3JlTmFtZVZhbHVlKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoN CisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTMNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5hbWVWYWx1ZVZhclN0b3JlKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDgxNA0KDQorICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDgxNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODIwDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJZDoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODE2DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDgxNw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxOA0KDQorICAgICAg ICAgICAgICAgIGxvY2FsY3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODI5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAg ICAgICAgICB3aGlsZSBUcnVlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjIN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjMNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA4MjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODI1DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgyNw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyOA0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4MzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KDQorICAgICAgICAgICAgICAgIGlmIG5vdCAoX2xhPT1WZnJTeW50YXhQYXJzZXIuTmFtZSk6 DQoNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4MzMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1 aWQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODM0DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDgzNQ0KDQorICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODM2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5 Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3Rh dGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCg0K Kw0KDQorICAgICAgICBkZWYgRGlzYWJsZUlmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJGb3JtU2V0TGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldA0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJ ZkZvcm1TZXQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJT dGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0K DQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNl bGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudERpc2FibGVJZkZvcm1TZXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkN Cg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDY4LCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50RGlzYWJsZUlmRm9ybVNldCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgzOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzYWJs ZUlmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzOQ0KDQorICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 NDANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDENCg0KKyAgICAgICAgICAgIHNlbGYudmZy Rm9ybVNldExpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 NDINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJl c3NJZkZvcm1TZXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVT U19JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgU3VwcHJlc3NJZihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQoN CisNCg0KKyAgICAgICAgZGVmIHZmckZvcm1TZXRMaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNl dExpc3RDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9y bVNldA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoc2VsZikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudFN1 cHByZXNzSWZGb3JtU2V0KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Q29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA3 MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODQ1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdXBwcmVzc0lmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0 Ng0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4NDcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDgNCg0K KyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNldExpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4NDkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVuZElmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1MA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgR3VpZFN1YkRlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEd1aWQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkd1aWQgPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLkd1aWQgPSBHdWlkDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJl cihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg Q29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfZ3VpZFN1YkRlZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRHdWlkU3ViRGVmaW5pdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdEd1aWRTdWJEZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBndWlkU3ViRGVmaW5pdGlv bihzZWxmLCBHdWlkKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5HdWlkU3ViRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBH dWlkKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzIsIHNlbGYuUlVMRV9n dWlkU3ViRGVmaW5pdGlvbikNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1 Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU0DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODU1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTYNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4NTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1OA0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg1OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODYwDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gODYxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjINCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA4NjMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2NA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg2NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODY2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBHdWlkRGVmaW5pdGlvbkNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZSgpDQoNCisgICAgICAgICAgICBzZWxmLkd1aWQgPSBF RklfR1VJRCgpDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFjZSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3Nl QnJhY2Uoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5D bG9zZUJyYWNlKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSwgaSkNCg0KKw0KDQor ICAgICAgICBkZWYgZ3VpZFN1YkRlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5p dGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZ3VpZERlZmlu aXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRHdWlk RGVmaW5pdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEd1 aWREZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzQs IHNlbGYuUlVMRV9ndWlkRGVmaW5pdGlvbikNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg2OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2OQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg3MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODcxDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODcyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 NzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZV06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3NQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODc2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5ndWlkU3ViRGVmaW5p dGlvbihsb2NhbGN0eC5HdWlkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzcN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNl KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4NzkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmd1aWRTdWJEZWZpbml0aW9uKGxvY2FsY3R4 Lkd1aWQpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODgyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgR2V0U3RyaW5nSWRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAg ICAgc2VsZi5TdHJpbmdJZCA9ICcnDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1Rva2VuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9nZXRTdHJpbmdJZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdEdldFN0cmluZ0lkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0R2V0U3RyaW5nSWQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQor DQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGdldFN0cmluZ0lkKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkdldFN0cmluZ0lkQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCA3Niwgc2VsZi5SVUxFX2dldFN0cmluZ0lkKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODg0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODUNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4ODYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODcNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFz cyBWZnJRdWVzdGlvbkhlYWRlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgT3BPYmo9Tm9uZSwgUVR5cGU9Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk9w T2JqID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5RVHlwZSA9IE5vbmUNCg0KKyAgICAgICAg ICAgIHNlbGYuT3BPYmogPSBPcE9iag0KDQorICAgICAgICAgICAgc2VsZi5RVHlwZSA9IFFUeXBl DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUXVlc3Rpb25IZWFkZXINCg0K Kw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkhl YWRlciIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0 aW9uSGVhZGVyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0K DQorICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmLCBPcE9iaiwgUVR5cGUpOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE9wT2JqLCBRVHlwZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDc4LCBzZWxmLlJVTEVfdmZyUXVlc3Rpb25IZWFk ZXIpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODkNCg0KKyAgICAgICAg ICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhPcE9iaiwgUVR5cGUpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODkwDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEhlYWRl cihPcE9iaikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE9wT2Jq PU5vbmUsIFFUeXBlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K DQorICAgICAgICAgICAgc2VsZi5PcE9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5 cGUgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0gRUZJX1ZBUlNUT1JFX0lO Rk8oKQ0KDQorICAgICAgICAgICAgc2VsZi5RSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0K DQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBUcnVlDQoNCisgICAgICAgICAgICBzZWxm LlFOID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLklEID0gTm9uZSAjIFRva2Vu DQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0gT3BPYmoNCg0KKyAgICAgICAgICAgIHNlbGYu UVR5cGUgPSBRVHlwZQ0KDQorDQoNCisgICAgICAgIGRlZiBOYW1lKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5hbWUsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0K Kw0KDQorICAgICAgICBkZWYgVmFySWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0b3JhZ2VWYXJJZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBRdWVzdGlvbklkKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWQsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmclF1ZXN0aW9uQmFzZUluZm8NCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkJhc2VJbmZvIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy UXVlc3Rpb25CYXNlSW5mbyhzZWxmLCBPcE9iaiwgUVR5cGUpOg0KDQorDQoNCisgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgT3BPYmosIFFUeXBlKQ0KDQorICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgODAsIHNlbGYuUlVMRV92ZnJRdWVzdGlvbkJhc2VJbmZvKQ0KDQor ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4OTYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5hbWU6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDg5Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk5hbWUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg5Mw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDg5NA0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlFOID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDkwMw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuVmFySWQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg5OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklk KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4OTkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA5MDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChs b2NhbGN0eC5CYXNlSW5mbywgbG9jYWxjdHguQ2hlY2tGbGFnKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5MDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTA5 DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5 bnRheFBhcnNlci5RdWVzdGlvbklkOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 MDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlv bklkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDYNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5MDcNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5JRCA9IHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTA4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x LCBPcE9iaj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAg ICAgICAgICAgIHNlbGYuT3BPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0g T3BPYmoNCg0KKw0KDQorICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9u ZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQ YXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgSGVscChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5IZWxwLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SGVhZGVy DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50SGVhZGVyIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50SGVhZGVyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisN Cg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZiwgT3BPYmopOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBPcE9iaikNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDgyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SGVhZGVyKQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTExDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTEyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxMw0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTE0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE1DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTE2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNw0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTE4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxw KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxOQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 MjANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDkyMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMw0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLlFIRmxhZyA9IDANCg0KKyAgICAgICAgICAgIHNlbGYu TyA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoN CisgICAgICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYg UmVhZE9ubHlGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgSW50 ZXJhY3RpdmVGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYg UmVzZXRSZXF1aXJlZEZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIFJlc3RTdHlsZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZywgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgT3B0aW9uT25seUZsYWcoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE5WQWNjZXNzRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIExhdGVDaGVja0ZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0K DQorDQoNCisNCg0KKyAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODQsIHNlbGYuUlVMRV9xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzMN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTI1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVh ZE9ubHlGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWddOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxh Z106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjcNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCA0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjgNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWddOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gOTI5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZ106 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzANCg0KKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5PID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcpDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLk5WQWNjZXNzRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA3KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzEN Cg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTlZBY2Nlc3NGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnXToNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDkzMg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2Ug Tm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RvcmFnZVZh cklkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5n U3RhdGU6aW50PS0xLCBCYXNlSW5mbz1Ob25lLCBDaGVja0ZsYWc9Tm9uZSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBOb25lDQoNCisgICAgICAgICAg ICBzZWxmLlZhcklkU3RyID0gJycNCg0KKyAgICAgICAgICAgIHNlbGYuQmFzZUluZm8gPSBCYXNl SW5mbw0KDQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBDaGVja0ZsYWcNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RvcmFnZVZhcklkDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAgICAgICAgc2VsZi5CYXNlSW5m byA9IGN0eC5CYXNlSW5mbw0KDQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBjdHguQ2hl Y2tGbGFnDQoNCisgICAgICAgICAgICBzZWxmLlZhcklkU3RyID0gY3R4LlZhcklkU3RyDQoNCisN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklkUnVsZTFDb250ZXh0KFZmclN0 b3JhZ2VWYXJJZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJzZXIpDQoNCisgICAgICAgICAgICBzZWxmLlNOMSA9IE5vbmUgIyBUb2tlbg0KDQorICAg ICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLmNvcHlG cm9tKGN0eCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQs IDApDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQor ICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQor ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMSIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUxKHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RvcmFnZVZh cklkUnVsZTJDb250ZXh0KFZmclN0b3JhZ2VWYXJJZENvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0 dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dA0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQoNCisgICAgICAgICAgICBzZWxmLlNOMiA9 IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0K KyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0K KyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCg0KKyAgICAgICAg ZGVmIGFycmF5TmFtZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 cyhWZnJTeW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RvcmFnZVZhcklkUnVsZTIiICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMihz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0 b3JhZ2VWYXJJZChzZWxmLCBCYXNlSW5mbywgQ2hlY2tGbGFnKToNCg0KKw0KDQorICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSwgQmFzZUluZm8sIENoZWNrRmxhZykNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDg2LCBzZWxmLlJVTEVfdmZyU3RvcmFnZVZhcklkKQ0KDQor ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZl UHJlZGljdChzZWxmLl9pbnB1dCw1NCxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8g PT0gMToNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJT dG9yYWdlVmFySWRSdWxlMUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA5MzUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjEgPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5MzYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM3 DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM4DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoN Cg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdl VmFySWRSdWxlMkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5MzkNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjIgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5NDQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoNCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0MA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5NDENCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcnJheU5hbWUoKQ0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTQ2DQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoN CisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmckNvbnN0YW50VmFsdWVGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLlZhbHVlID0g RUZJX0lGUl9UWVBFX1ZBTFVFKCkNCg0KKyAgICAgICAgICAgIHNlbGYuVmFsdWVMaXN0ID0gW10N Cg0KKyAgICAgICAgICAgIHNlbGYuTGlzdFR5cGUgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgIGRl ZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIE5lZ2F0aXZlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBUcnVl U3ltYm9sKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlRydWVTeW1ib2wsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZhbHNlU3ltYm9s KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkZhbHNlU3ltYm9sLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPbmUoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBPbmVzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IFplcm8oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuWmVybywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ29sb24oc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNvbG9uLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTbGFzaChzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNsYXNoKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2xhc2gsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg Z3VpZERlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBPcGVuQnJhY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJy YWNlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlQnJhY2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckNv bnN0YW50VmFsdWVGaWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyQ29uc3RhbnRWYWx1ZUZp ZWxkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm ckNvbnN0YW50VmFsdWVGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODgsIHNlbGYuUlVMRV92ZnJDb25z dGFudFZhbHVlRmllbGQpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5Mw0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBz ZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDU3LHNlbGYuX2N0eCkNCg0K KyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTUw DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDk0OQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OZWdhdGl2ZSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDk1Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVs aWYgbGFfID09IDI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NTMNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UcnVlU3ltYm9sKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk1NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K Kw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gNDoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk1NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9u ZSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFf ID09IDU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NTYNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PbmVzKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk1Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlplcm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICBl bGlmIGxhXyA9PSA3Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU4DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5NTkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTYw DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gOTYyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAg ZWxpZiBsYV8gPT0gODoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2Mw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTY0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2xhc2gpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2 NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTY2DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2xhc2gpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAg IGVsaWYgbGFfID09IDk6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA5KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjgNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTcwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzENCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDk3Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmlu aXRpb24oKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzMNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5NzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3Ng0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTc3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisN Cg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDEwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk3OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODANCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTgyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVs aWYgbGFfID09IDExOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMTEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4Mw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTg0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5ODkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTg1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTg2DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5MQ0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA5OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQor DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBWZnJJbWFnZVRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShF RklfSUZSX0lNQUdFX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBJbWFnZShzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbWFnZSwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xv c2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy SW1hZ2VUYWcNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJJbWFnZVRhZyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckltYWdlVGFnKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0K DQorICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJJbWFnZVRhZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTAsIHNlbGYuUlVM RV92ZnJJbWFnZVRhZykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5NQ0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW1hZ2UpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTk2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5Nw0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNikNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5OTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTkNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDAwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyTG9ja2VkVGFnQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfTE9DS0VEX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBM b2NrZWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTG9ja2VkLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTG9ja2Vk VGFnDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyTG9j a2VkVGFnIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyTG9j a2VkVGFnKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiB2ZnJMb2NrZWRUYWcoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA5Miwgc2VsZi5SVUxF X3ZmckxvY2tlZFRhZykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDIN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxvY2tlZCkNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoN CisgICAgICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFnQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckxvY2tlZFRhZyhzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmckxvY2tlZFRhZ0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3RhdGVtZW50U3RhdFRhZw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXRUYWciICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFn KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN0YXRUYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDk0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50 U3RhdFRhZykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw MDYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQoNCisgICAgICAgICAg ICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkxvY2tlZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA1DQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJMb2NrZWRUYWcoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIE5vZGU9Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUg PSBOb2RlDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWcoc2VsZiwgaTpp bnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN0YXRUYWdDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdGF0VGFnQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENv bW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QiICk6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg dmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qoc2VsZiwgTm9kZSk6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgTm9kZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDk2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QpDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA4DQoNCisgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudFN0YXRUYWcoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTMN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgX2FsdCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNTksc2Vs Zi5fY3R4KQ0KDQorICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQgX2FsdCE9QVROLklOVkFM SURfQUxUX05VTUJFUjoNCg0KKyAgICAgICAgICAgICAgICBpZiBfYWx0PT0xOg0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAwOQ0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwMTANCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRTdGF0VGFnKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAxNQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg ICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDU5LHNl bGYuX2N0eCkNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToN Cg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxj dHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRm9ybURlZmluaXRpb25Db250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K DQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoN CisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5O b2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBG b3JtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkZvcm0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFRpdGxlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlRpdGxlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdU b2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZEZvcm0oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5k Rm9ybSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybShzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1Db250ZXh0LGkpDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1EZWZpbml0aW9uDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybURlZmluaXRpb24iICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtRGVmaW5pdGlv bihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyRm9ybURlZmluaXRpb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDk4LCBzZWxm LlJVTEVfdmZyRm9ybURlZmluaXRpb24pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTYNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm0pDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTAxNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRm9ybUlkKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTgNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTAxOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjANCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwMjENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRp dGxlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjINCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAyMw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAyNA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwMjUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDI2DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwMjcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDMxDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAm IH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwgKFZmclN5bnRheFBh cnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0g NDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5HcmF5T3V0SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MYWJl bCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFu ZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0 ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtIDExMCkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLkJhbm5lciAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDExMCkp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Mb2NrZWQgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuUnVsZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRv biAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTApKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy Lk1vZGFsIC0gMTEwKSkpKSAhPSAwKSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5SZWZyZXNoR3Vp ZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAyOA0KDQorICAgICAgICAgICAg ICAgIHNlbGYudmZyRm9ybSgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzMN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTAzNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kRm9ybSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDM1DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJGb3JtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9r aW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3Rh dGVtZW50SW1hZ2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRMb2NrZWQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRMb2NrZWRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZy U3RhdGVtZW50UnVsZXMoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RGVmYXVsdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRTdGF0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRDb25kaXRpb25hbENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRMYWJlbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExhYmVsQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEJhbm5lcihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEJhbm5lckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRJbnZhbGlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50TW9kYWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2Rh bENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWZyZXNo RXZlbnQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm0NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJGb3JtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyRm9ybShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0K Kw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRm9ybShzZWxmKToNCg0KKw0KDQorICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMDAsIHNl bGYuUlVMRV92ZnJGb3JtKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1 Mg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkltYWdlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAzNw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW1hZ2UoKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5Mb2NrZWRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDM4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRMb2NrZWQoKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5SdWxlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAzOQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UnVsZXMoKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZh dWx0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0MA0KDQorICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGVmYXVsdCgpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxl LCBWZnJTeW50YXhQYXJzZXIuVGV4dCwgVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBh cnNlci5SZXNldEJ1dHRvbl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDEN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0LCBWZnJTeW50YXhQYXJzZXIuRGF0 ZSwgVmZyU3ludGF4UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwgVmZyU3lu dGF4UGFyc2VyLk51bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFy c2VyLlN0cmluZywgVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwNDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1 ZXN0aW9ucygpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgVmZyU3ludGF4UGFyc2VyLlN1cHBy ZXNzSWYsIFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsIFZmclN5bnRheFBhcnNlci5JbmNvbnNp c3RlbnRJZl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDMNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkNCg0KKyAgICAgICAgICAg ICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu TGFiZWxdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRMYWJlbCgpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJhbm5lcl06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDUNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEJhbm5lcigpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgVmZy U3ludGF4UGFyc2VyLkhpZGRlbiwgVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBh cnNlci5TYXZlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0Ng0KDQorICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkd1 aWRPcF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDcNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1vZGFs XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0OA0KDQorICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50TW9kYWwoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZF06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwNTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxm KQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBWZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUg PSBWZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fTUFQX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5T MSA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBGb3JtTWFwKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1NYXAs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIENvbW1hKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFbmRGb3Jt KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVuZEZvcm0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBN YXBUaXRsZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy Lk1hcFRpdGxlKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwVGl0bGUsIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIE1hcEd1aWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5NYXBHdWlkKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwR3VpZCwgaSkNCg0KKw0KDQor ICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCkNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LGkpDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1Db250ZXh0LGkpDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uDQoNCisNCg0KKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybU1hcERlZmluaXRpb24iICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtTWFwRGVmaW5p dGlvbihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgdmZyRm9ybU1hcERlZmluaXRpb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDEwMiwgc2VsZi5SVUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uKQ0KDQorICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDU0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtTWFwKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1JZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTcNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LlMx ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNzMNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk1h cFRpdGxlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWFwVGl0bGUpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDYxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjINCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEwNjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY1DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTWFwR3VpZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTA2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjgNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTA2OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3NQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDc5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSAo KCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEg PDwgKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy Lk9yZGVyZWRMaXN0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5MYWJlbCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkludmVudG9y eSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHQgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLlN1cHByZXNzSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxl SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAm IH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQ YXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVz dG9yZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkJhbm5lciAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5JbWFnZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Mb2NrZWQgLSAxMTApKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUnVsZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24g LSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTEwKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLk1vZGFsIC0gMTEwKSkpKSAhPSAwKSBvciBfbGE9PVZmclN5bnRheFBh cnNlci5SZWZyZXNoR3VpZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3Ng0K DQorICAgICAgICAgICAgICAgIHNlbGYudmZyRm9ybSgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwODENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRW5kRm9ybSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDgzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoN CisNCg0KKyAgICAgICAgZGVmIHZmckltYWdlVGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdD b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEltYWdlDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50SW1h Z2UiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1l bnRJbWFnZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0K KyAgICBkZWYgdmZyU3RhdGVtZW50SW1hZ2Uoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEw NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEltYWdlKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTA4NQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4Ng0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50TG9ja2Vk Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3Rh dGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyTG9ja2VkVGFn KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRMb2NrZWQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRMb2NrZWQiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRMb2NrZWQoc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudExvY2tl ZChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRMb2NrZWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dExvY2tlZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwODgNCg0KKyAg ICAgICAgICAgIHNlbGYudmZyTG9ja2VkVGFnKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDg5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoN CisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJU cmVlTm9kZShFRklfSUZSX1JVTEVfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIFJ1bGUoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUnVs ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5k UnVsZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FbmRSdWxlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UnVsZXMN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRSdWxlcyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudFJ1bGVzKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRSdWxlcyhzZWxmKToNCg0KKw0KDQorICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTA4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UnVsZXMpDQoNCisgICAgICAgIHRyeToNCg0K KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDkxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5SdWxlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTINCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5NA0K DQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDk1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5FbmRSdWxlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTYNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNs YXNzIFZmclN0YXRlbWVudFN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1 YlRpdGxlQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0 YXRpY1RleHQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0aWNUZXh0Q29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXQNCg0KKw0KDQorICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0IiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3Rh dGVtZW50U3RhdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMTAsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRTdGF0KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTEwMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisg ICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlXToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwOTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1YlRpdGxl KCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuVGV4dF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDk5 DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KCkNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuR290bywgVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExMDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dENyb3NzUmVmZXJlbmNlKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNl bGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfU1VCVElUTEVfT1ApDQoNCisgICAgICAgICAgICBzZWxm Lk9wT2JqID0gQ0lmclN1YnRpdGxlKCkNCg0KKw0KDQorICAgICAgICBkZWYgU3VidGl0bGUoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3VidGl0bGUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFRleHQoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRW5kU3VidGl0bGUoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kU3VidGl0bGUsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg aSkNCg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN1YnRpdGxlRmxhZ3Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdWJ0aXRsZUZsYWdzQ29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoc2VsZiwgaTpp bnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnRDb250ZXh0LGkpDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGUi ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRT dWJUaXRsZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0K KyAgICBkZWYgdmZyU3RhdGVtZW50U3ViVGl0bGUoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDExMiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlKQ0KDQorICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTAzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdWJ0aXRs ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA0DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExMDUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTEwNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDgNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTA5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTQNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5f aW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw2NSxzZWxmLl9jdHgpDQoNCisgICAg ICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEx MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTExDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExMTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTEzDQoNCisgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdWJ0aXRsZUZsYWdzKCkNCg0KKw0KDQorDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTEzNg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVk aWN0KHNlbGYuX2lucHV0LDcwLHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAx Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE4DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5Db21tYToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTYNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE3DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCg0KKw0K DQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjANCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAg ICAgICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTIzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJw LmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw2NyxzZWxmLl9jdHgpDQoNCisgICAgICAgICAg ICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MTIxDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEyMg0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWdMaXN0KGxvY2FsY3R4Lk5vZGUp DQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTMyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5Db21tYToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExMjUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI5DQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgICAg ICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2 KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3Vi dGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRp bWUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8gLSA0NikpKSkgIT0gMCkgb3IgX2xhPT1WZnJT eW50YXhQYXJzZXIuUmVzZXRCdXR0b24gb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuQWN0aW9uOg0K DQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjYNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoKQ0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzENCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorDQoNCisNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZFN1YnRpdGxlKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTM1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBO b25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0 bGVDb21wb25lbnQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0 ZW1lbnRTdWJUaXRsZUNvbXBvbmVudChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMTE0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQpDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTQwDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuU3VidGl0bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LCBWZnJTeW50YXhQYXJzZXIuR290 bywgVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMzgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0LCBWZnJTeW50YXhQ YXJzZXIuRGF0ZSwgVmZyU3ludGF4UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0Jv eCwgVmZyU3ludGF4UGFyc2VyLk51bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZy U3ludGF4UGFyc2VyLlN0cmluZywgVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRRdWVzdGlvbnMoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyU3VidGl0bGVGbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLlN1YkZsYWdzID0g MA0KDQorDQoNCisgICAgICAgIGRlZiBzdWJ0aXRsZUZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9u ZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxh Z3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxl RmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Io c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdWJ0aXRsZUZsYWdzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3VidGl0bGVGbGFncyIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN1YnRpdGxlRmxhZ3Moc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN1YnRpdGxlRmxhZ3Mo c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Vi dGl0bGVGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTE2LCBzZWxmLlJVTEVfdmZyU3VidGl0bGVGbGFn cykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6 DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTE0Mg0KDQorICAgICAgICAgICAgc2VsZi5zdWJ0aXRsZUZs YWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDcNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0Mw0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0NA0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3VidGl0bGVGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0 OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFN1 YnRpdGxlRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQoNCisNCg0KKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdWJ0aXRs ZUZsYWdzRmllbGQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRTdWJ0aXRsZUZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRTdWJ0aXRsZUZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQor DQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmKToNCg0K Kw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmll bGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDExOCwgc2VsZi5SVUxFX3N1YnRpdGxlRmxhZ3NGaWVsZCkNCg0K KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTE1MA0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCg0KKyAgICAgICAgICAgIGlmIG5vdChfbGE9PVZmclN5bnRheFBhcnNlci5UX183IG9yIF9s YT09VmZyU3ludGF4UGFyc2VyLk51bWJlcik6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdGlj VGV4dENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisg ICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1RFWFRfT1ApDQoNCisg ICAgICAgICAgICBzZWxmLlMxID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLlMy ID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLlMzID0gTm9uZSAjIFRva2VuDQoN CisgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYu UzQgPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgVGV4dChzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlRleHQpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5UZXh0LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9z ZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0K KyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBzdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3RhdGljVGV4dEZsYWdzRmllbGRD b250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TdGF0aWNUZXh0RmxhZ3NG aWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2Vs ZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdGljVGV4dCIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0YXRpY1RleHQoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZm clN0YXRlbWVudFN0YXRpY1RleHQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdGljVGV4dENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTIw LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdGljVGV4dCkNCg0KKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1 Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTUzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTQNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTE1NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1Ng0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTcNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LlMx ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1OQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTE2MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVGV4dCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTYxDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDExNjINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjMNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTY0DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5TMiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MTY1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzMNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJw LmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw3MyxzZWxmLl9jdHgpDQoNCisgICAgICAgICAg ICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE2Ng0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTE2OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTE3MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTE3MQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlMzID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTcy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5MQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBz ZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDc1LHNlbGYuX2N0eCkNCg0K KyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTc1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzYNCg0KKyAgICAgICAgICAg ICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzcNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTc4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0aWNUZXh0RmxhZ3NGaWVsZCgp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExODMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx NzkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4MA0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRpY1RleHRGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExODUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4 Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg3DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTg4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4OQ0KDQorICAgICAg ICAgICAgICAgIGxvY2FsY3R4LlM0ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk1DQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5D b21tYToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5Mw0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRTdGF0VGFnTGlzdChsb2NhbGN0eC5Ob2RlKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTk3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxm LkZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQor ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgcXVl c3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdGF0aWNUZXh0 RmxhZ3NGaWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFN0YXRpY1RleHRGbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K DQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHN0YXRpY1RleHRGbGFnc0ZpZWxkKHNlbGYp Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN0YXRpY1RleHRG bGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMjIsIHNlbGYuUlVMRV9zdGF0aWNUZXh0RmxhZ3NG aWVsZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDEN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5 OQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgVmZyU3ludGF4UGFy c2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCBWZnJT eW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNo ZWNrRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9w dGlvbk9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhl YWRlckZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2Vs ZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0K Kw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRHb3RvKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50R290b0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJl c2V0QnV0dG9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJT dGF0ZW1lbnRDcm9zc1JlZmVyZW5jZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2Uoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZm clN0YXRlbWVudENyb3NzUmVmZXJlbmNlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxMjQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSkNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDUNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5Hb3RvXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDMNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEdvdG8oKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA0DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbigpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4 Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRHb3RvQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfUkVGX09QKQ0KDQorICAgICAgICAgICAgc2Vs Zi5PcE9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuT0hPYmogPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAg ICAgICAgICAgIHNlbGYuUU4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgR290 byhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Hb3RvLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENv bW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg RkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckdvdG9GbGFncyhzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmckdvdG9GbGFnc0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiBLZXkoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBEZXZpY2VQYXRoKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRl dmljZVBhdGgsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIEZvcm1TZXRHdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1TZXRHdWlkLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIFF1ZXN0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRHb3RvDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R290byIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEdvdG8oc2VsZikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVu dEdvdG8oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50R290b0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQor ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTI2LCBzZWxmLlJVTEVfdmZyU3RhdGVt ZW50R290bykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAg ICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuR290bykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU1 DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEyMDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5EZXZpY2VQYXRoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA5DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMjExDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTIxNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE1DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybVNldEd1aWQpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTYNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjE3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTgNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTIxOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkZvcm1JZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyMA0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyMjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy MjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyMw0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMjI0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyNQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyNg0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZF06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjgNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIyOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzAN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIzMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjMy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjMzDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTIzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzNQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyMzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM4DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkZvcm1JZF06DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyNDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Gb3JtSWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy NDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQzDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjQ0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvbikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyNTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyXToN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDcNCg0KKyAgICAgICAgICAg ICAgICAgICAgbG9jYWxjdHguUU4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0OA0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0K KyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTI0OQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjUw DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cg0KKw0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjUzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAg ICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LlByb21wdCwgVmZyU3ludGF4UGFyc2VyLk5hbWUsIFZmclN5bnRheFBhcnNlci5WYXJJZCwgVmZy U3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRdOg0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyNTcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIo bG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyNjINCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1 dCw4MSxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTI1OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjU5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1Mp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjANCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjYxDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJHb3RvRmxhZ3MobG9j YWxjdHguT3BPYmopDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjgN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw4MixzZWxm Ll9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI2NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY1DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTI2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3Mg0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu Q29tbWE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNzANCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTI3MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisNCg0KKw0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyNzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZp bmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmckdvdG9GbGFnc0NvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwg T2JqPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5PYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkdvdG9GbGFncyA9IDAN Cg0KKyAgICAgICAgICAgIHNlbGYuT2JqID0gT2JqDQoNCisNCg0KKyAgICAgICAgZGVmIGdvdG9G bGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkdvdG9GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckdvdG9GbGFncw0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckdvdG9GbGFncyIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckdvdG9GbGFncyhzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyR290b0ZsYWdz KHNlbGYsIE9iaik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyR290b0ZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE9iaikNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEyOCwgc2VsZi5SVUxFX3ZmckdvdG9G bGFncykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3Ng0KDQorICAgICAgICAgICAgc2VsZi5nb3RvRmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4MQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc3DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5n b3RvRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODMNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBHb3RvRmxh Z3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25l ICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVl c3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9nb3RvRmxhZ3NGaWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdEdvdG9GbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0R290b0ZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K DQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGdvdG9GbGFnc0ZpZWxkKHNlbGYpOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkdvdG9GbGFnc0ZpZWxkQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAxMzAsIHNlbGYuUlVMRV9nb3RvRmxhZ3NGaWVsZCkNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODYNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5O dW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4NA0KDQorICAgICAgICAgICAg ICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywg VmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVjb25u ZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgVmZyU3ludGF4 UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLCBWZnJT eW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx Mjg1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgVmZyU3RhdGVtZW50UmVzZXRCdXR0b25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUo RUZJX0lGUl9SRVNFVF9CVVRUT05fT1ApDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0gQ0lm clJlc2V0QnV0dG9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KDQor DQoNCisgICAgICAgIGRlZiBSZXNldEJ1dHRvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgRGVmYXVsdFN0b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRI ZWFkZXJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kUmVzZXRCdXR0b24o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRW5kUmVzZXRCdXR0b24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRh Z0xpc3Qoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVzZXRCdXR0b24NCg0K Kw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRS ZXNldEJ1dHRvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudFJlc2V0QnV0dG9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQor DQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmKToNCg0K Kw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZXNl dEJ1dHRvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTMyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVzZXRC dXR0b24pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyODkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRT dG9yZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjkwDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyOTENCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy OTINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50SGVhZGVyKGxvY2FsY3R4Lk9wT2JqKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyOTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTgNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkltYWdlIG9yIF9sYT09 VmZyU3ludGF4UGFyc2VyLkxvY2tlZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTI5NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QobG9j YWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5Ng0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzAwDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5FbmRSZXNldEJ1dHRvbikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzAxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQor ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0K DQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K DQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoN CisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudERhdGUoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnREYXRlQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE51 bWVyaWNUeXBlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RyaW5nVHlwZShzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50T3JkZXJlZExpc3Qoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRPcmRlcmVkTGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRUaW1lKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25zDQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rp b25zIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50UXVlc3Rpb25zKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQoNCisNCg0KKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25zQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAxMzQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbnMpDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA5DQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuQ2hlY2tCb3gsIFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTMwMw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50Qm9vbGVh blR5cGUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EYXRlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzMDQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERhdGUoKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk51bWVyaWNdOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTMwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TnVt ZXJpY1R5cGUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmlu Z106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA2DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3Rd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNw0KDQorICAgICAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50T3JkZXJlZExpc3QoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UaW1lXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFRpbWUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2Rl ID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SW5jb25zaXN0ZW50SWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1pdElm KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2goc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZy ZXNoQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhcnN0 b3JlRGV2aWNlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250ZXh0 LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFJlZnJlc2hFdmVudENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRXYXJuaW5nSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0 aW9uVGFnDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy U3RhdGVtZW50UXVlc3Rpb25UYWciICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWco c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UXVlc3Rpb25UYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzNiwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudFF1ZXN0aW9uVGFnKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTMyMg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkltYWdlLCBWZnJTeW50YXhQYXJzZXIuTG9ja2Vk XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMTENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFN0YXRUYWcoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzEyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzMTQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lz dGVudElmKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZl06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzE1DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnROb1N1Ym1p dElmKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzMTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERpc2FibGVJZlF1 ZXN0KCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuUmVmcmVzaF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzE3DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2VdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMxOA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2Uo KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMx OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuUmVmcmVzaEd1aWRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgOCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyMA0K DQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KCkNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuV2FybmluZ0lmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjENCg0K KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFdhcm5pbmdJZigpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy YWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZS X0lOQ09OU0lTVEVOVF9JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgSW5jb25zaXN0ZW50SWYo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuSW5jb25zaXN0ZW50SWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFByb21wdChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9t cHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3Rh dGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBm bGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Io c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZg0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEluY29uc2lzdGVudElmIiAp Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWYoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQor DQoNCisgICAgZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVu dElmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAxMzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3Rl bnRJZikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTMyNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0 KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjYNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMyNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyOA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzMjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzMwDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzMzENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNDQNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdT Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzMyDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzMzMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM0DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTMzOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAg ICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzNQ0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzM2DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQxDQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEzNDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTM0Ng0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FbmRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ5 DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTEsc2Vs Zi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50Tm9T dWJtaXRJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX05PX1NVQk1JVF9J Rl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgTm9TdWJtaXRJZihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBQcm9tcHQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg T3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29t bWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBGTEFHUyhz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVs ZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250 ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 Tm9TdWJtaXRJZg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudE5vU3VibWl0SWYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1pdElm KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudE5vU3VibWl0SWZDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0MCwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudE5vU3VibWl0SWYpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTENCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTM1Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UHJvbXB0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTMNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTM1NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1NQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU3DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzENCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LkZMQUdTOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEzNjANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYx DQoNCisgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM2Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2Mg0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYzDQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzY4 DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTM3Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u KCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc0DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzc2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQs OTQsc2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEzNzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQor ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVt ZW50RGlzYWJsZUlmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9E SVNBQkxFX0lGX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBEaXNhYmxlSWYoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlm LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0DQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREaXNh YmxlSWZRdWVzdChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisN Cg0KKyAgICBkZWYgdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3Qoc2VsZik6DQoNCisNCg0KKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmUXVl c3RDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDE0Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1 ZXN0KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3OA0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzNzkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4MA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzODENCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTM4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4NA0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRh cHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDk1LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlm IGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzgzDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFJlZnJlc2hDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZy VHJlZU5vZGUoRUZJX0lGUl9SRUZSRVNIX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZWZyZXNo KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlJlZnJlc2gsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEludGVydmFsKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVydmFs LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaA0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlZnJlc2giICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2 ZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlZnJlc2hDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0NCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFJlZnJlc2gpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzg2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5S ZWZyZXNoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODcNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkludGVydmFsKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzODgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4OQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQor ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVt ZW50VmFyc3RvcmVEZXZpY2VDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9W QVJTVE9SRV9ERVZJQ0VfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIFZhcnN0b3JlRGV2aWNlKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlZhcnN0b3JlRGV2aWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0 YXRlbWVudFZhcnN0b3JlRGV2aWNlDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy U3RhdGVtZW50VmFyc3RvcmVEZXZpY2Uoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDE0Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKQ0KDQorICAgICAg ICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTM5Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzkzDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzk0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5NQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzOTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5Nw0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lG Ul9SRUZSRVNIX0lEX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZWZyZXNoR3VpZChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWZy ZXNoR3VpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBD b21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dFJlZnJlc2hFdmVudA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFJlZnJlc2hFdmVudCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50UmVm cmVzaEV2ZW50KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFJlZnJlc2hFdmVudENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTQ4LCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTM5OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UmVmcmVzaEd1aWQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwMA0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDAxDQoNCisgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDAyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAg IGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFdhcm5pbmdJ ZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1dBUk5JTkdfSUZfT1ApDQoN CisNCg0KKyAgICAgICAgZGVmIFdhcm5pbmdJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5XYXJuaW5nSWYsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFByb21wdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmlu Z1Rva2VuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgVGltZW91dChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5UaW1lb3V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 V2FybmluZ0lmDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyU3RhdGVtZW50V2FybmluZ0lmIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50V2FybmluZ0lmKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYoc2Vs Zik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50V2FybmluZ0lmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRX YXJuaW5nSWYpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLldhcm5pbmdJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNDA1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwNg0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDA3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl bikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA4DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTQwOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTANCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQxMQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxNg0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVGltZW91 dDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxMg0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpbWVvdXQpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0MTMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE0DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE1DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0MTgNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxOQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTQyMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lu cHV0LDk3LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDIwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0 YXRlbWVudFF1ZXN0aW9uVGFnTGlzdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCg0KKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUN Cg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCg0KKw0KDQorICAgICAgICBkZWYgdmZy U3RhdGVtZW50UXVlc3Rpb25UYWcoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uVGFnQ29udGV4dCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdD b250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1 ZXN0aW9uVGFnTGlzdA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdCIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdChzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVt ZW50UXVlc3Rpb25UYWdMaXN0KHNlbGYsIE5vZGUpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBOb2RlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTUyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0KQ0K DQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0K KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDI2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAg ICAgICAgICB3aGlsZSAoKCgoX2xhIC0gMTA2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChf bGEgLSAxMDYpKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDEwNikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiAtIDEwNikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5XYXJuaW5nSWYgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu Tm9TdWJtaXRJZiAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDEwNikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Mb2NrZWQgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuUmVmcmVzaCAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9y ZURldmljZSAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMDYpKSkp ICE9IDApIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDIzDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvblRhZygpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjgN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFN1cHByZXNzSWZRdWVzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEdyYXlPdXRJZlF1ZXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFZhbHVlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGVmYXVsdChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudERlZmF1bHRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg dmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9wdGlvbnNDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UmVhZChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFJlYWRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50V3JpdGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25UYWcNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZ0NvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMTU0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcpDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDM2DQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuU3VwcHJlc3NJZl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDI5DQoNCisg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5HcmF5T3V0SWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzMA0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QoKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5WYWx1ZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMxDQoNCisgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRWYWx1ZSgpDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRlZmF1 bHRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzMg0KDQorICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RGVmYXVsdCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wdGlvbl06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMzDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRPcHRpb25zKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVhZF06DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDM0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWFk KCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuV3JpdGVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQz NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50V3JpdGUoKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K DQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgRmxhZ3NG aWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisg ICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTCA9 IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBJbnRlcmFjdGl2ZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5n RmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRGVmYXVsdEZsYWcoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWcs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIFJlc2V0UmVxdWlyZWRGbGFnKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWly ZWRGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZWNvbm5lY3RSZXF1aXJlZEZsYWcoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu UmVjb25uZWN0UmVxdWlyZWRGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOVkFjY2Vzc0Zs YWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTlZBY2Nlc3NGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFn KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkxhdGVDaGVja0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9mbGFnc0Zp ZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RmxhZ3NG aWVsZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZsYWdzRmll bGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIGZsYWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTU2LCBzZWxmLlJVTEVfZmxhZ3NG aWVsZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDYN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQz OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE0MzkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5J bnRlcmFjdGl2ZUZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZykNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVs dEZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0MQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5SZXNldFJlcXVpcmVkRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDQyDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJl ZEZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZ106DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDQzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OVkFjY2Vz c0ZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0NA0KDQorICAgICAgICAgICAg ICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ0NQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3Rh dGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApDQoN CisNCg0KKyAgICAgICAgZGVmIFN1cHByZXNzSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KDQorDQoNCisgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgRW5kSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZM QUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29u dGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQs aSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1 ZXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3Rh dGVtZW50U3VwcHJlc3NJZlF1ZXN0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmUXVlc3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTgsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QpDQoNCisgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDgN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0OQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDUwDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ2Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K DQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTQ1Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDU4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICB3 aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDU0DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0NTUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjANCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTQ2MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDY1DQoNCisg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5O b2RlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjYNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE0NjgNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1 dCwxMDMsc2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K DQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3Rh dGVtZW50R3JheU91dElmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lG Ul9TVVBQUkVTU19JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgR3JheU91dElmKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyYXlP dXRJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDb250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxk KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu RmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D b21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50R3JheU91dElmUXVlc3QNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJT dGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTYwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QpDQoNCisgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0NzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdy YXlPdXRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDcxDQoNCisgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE0NzINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDg1DQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3Mw0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDc0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3NQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0ODANCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NzYNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQ3Nw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdz RmllbGQoKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4Mg0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDgzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0ODcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0 KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4OA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ5MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0 KHNlbGYuX2lucHV0LDEwNixzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4OQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKw0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVG SV9JRlJfREVGQVVMVF9PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0K DQorICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRl ZiBEZWZhdWx0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkRlZmF1bHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dFZhbHVlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg RGVmYXVsdFN0b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3Ry aW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERlZmF1bHQiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1l bnREZWZhdWx0KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudERlZmF1bHRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2Miwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudERlZmF1bHQpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTINCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0KQ0KDQorDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwMA0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhbHVlXToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Mw0KDQorICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50VmFsdWUoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNDk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlRfXzVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNDk2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Nw0KDQorICAgICAgICAgICAg ICAgIHNlbGYudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQ5OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0K Kw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDYNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9y ZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwMg0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTUwMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1 MDQNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1MDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCg0KKw0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYWx1ZUNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5v ZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1ZBTFVFX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBW YWx1ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5WYWx1ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVz c2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFZhbHVlDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFsdWUiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYWx1 ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyU3RhdGVtZW50VmFsdWUoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2NCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFZhbHVlKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTUwOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFs dWUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwOQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTEwDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgVmZyU3RhdGVtZW50T3B0aW9uc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE9uZU9mT3B0aW9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50T25lT2ZPcHRpb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudE9wdGlvbnMNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRPcHRpb25zIiApOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50 T3B0aW9ucyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRPcHRpb25zQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjYsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRPcHRpb25zKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUx Mg0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbigpDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9k ZShFRklfSUZSX09ORV9PRl9PUFRJT05fT1ApDQoNCisgICAgICAgICAgICBzZWxmLkYgPSBOb25l ICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuS04gPSBOb25lICMgVG9rZW4NCg0KKw0KDQor ICAgICAgICBkZWYgT3B0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wdGlvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVGV4 dChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5UZXh0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFsdWUsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIHZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckNvbnN0YW50VmFsdWVG aWVsZENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJPbmVPZk9wdGlvbkZs YWdzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgS2V5KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktl eSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZySW1hZ2VUYWcoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFnQ29u dGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0 LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudE9uZU9mT3B0 aW9uDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3Rh dGVtZW50T25lT2ZPcHRpb24iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2Vs Zik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50T25lT2ZPcHRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dE9uZU9mT3B0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE0DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcHRpb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTUxNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE2DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1 MTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MTgNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNTE5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTIxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTIyDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYWx1ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNTIzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjQNCg0KKyAgICAgICAgICAgIHNlbGYu dmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI1 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI2DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5GID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTUyNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI4DQoNCisgICAgICAgICAgICBzZWxm LnZmck9uZU9mT3B0aW9uRmxhZ3MoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzMN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxMDksc2Vs Zi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1MjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzMA0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLktleSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1MzINCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5LTiA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTUzOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xh PT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1MzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzNg0KDQorICAgICAgICAgICAg ICAgIHNlbGYudmZySW1hZ2VUYWcoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTQxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisg ICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NDINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFs bHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAg c2VsZi5IRmxhZ3MgPSAwDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCg0KKw0KDQor ICAgICAgICBkZWYgb25lb2ZvcHRpb25GbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdzRmll bGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZs YWdzRmllbGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyT25lT2ZPcHRpb25GbGFncw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9uZU9mT3B0aW9uRmxhZ3MiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJPbmVPZk9wdGlvbkZsYWdzKHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJPbmVPZk9w dGlvbkZsYWdzKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3MCwgc2VsZi5SVUxFX3Zm ck9uZU9mT3B0aW9uRmxhZ3MpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDQNCg0KKyAgICAgICAgICAg IHNlbGYub25lb2ZvcHRpb25GbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTQ5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBf bGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1NDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDYNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1NTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBPbmVvZm9wdGlvbkZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5IRmxh ZyA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuTEZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxm LkEgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0K DQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBPcHRpb25EZWZhdWx0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHQsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIE9wdGlvbkRlZmF1bHRNZmcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZywgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgSW50ZXJhY3RpdmVGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgUmVzZXRSZXF1aXJlZEZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIFJlc3RTdHlsZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZywgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVp cmVkRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTWFudWZhY3R1cmluZ0ZsYWcoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFu dWZhY3R1cmluZ0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHRGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTlZBY2Nl c3NGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVj a0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9vbmVvZm9wdGlvbkZsYWdzRmll bGQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRPbmVvZm9w dGlvbkZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRPbmVvZm9wdGlvbkZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmKToNCg0K Kw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdz RmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3Miwgc2VsZi5SVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVs ZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjMNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg dG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU1Mg0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTUzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9u RGVmYXVsdCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZ106DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTU0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFn XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTUNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcpDQoNCisgICAgICAgICAg ICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LlJlc2V0UmVxdWlyZWRGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTYNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVk RmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTU3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuUmVzdFN0eWxlRmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnXToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTgNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVy aW5nRmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWddOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTU2MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkRlZmF1bHRGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWddOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1NjENCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5BID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5M YXRlQ2hlY2tGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDExKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYyDQoNCisgICAg ICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxhdGVD aGVja0ZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQor DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZWFkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVO b2RlKEVGSV9JRlJfUkVBRF9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgUmVhZChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWFkLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50UmVhZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlYWQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSZWFkKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWFkKHNlbGYpOg0K DQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJl YWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDE3NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFJlYWQpDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY1DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWFkKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1NjYNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU2Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50V3JpdGVD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9XUklURV9PUCkNCg0KKw0KDQor ICAgICAgICBkZWYgV3JpdGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuV3JpdGUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRXcml0ZQ0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFdyaXRl IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 V3JpdGUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIHZmclN0YXRlbWVudFdyaXRlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFdyaXRlQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNzYs IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRXcml0ZSkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1NjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LldyaXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzANCg0KKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTU3MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x LCBOb2RlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9k ZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbihzZWxmLCBp OmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleHQsaSkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3Qoc2VsZiwgTm9kZSk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUsIE5vZGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxNzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QpDQoNCisg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1NzYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgIHdoaWxlICgoKChfbGEgLSA2MSkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0g NjEpKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9wdGlvbiAtIDYxKSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLkdyYXlPdXRJZiAtIDYxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHQgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNjEpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0gNjEpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5X YXJuaW5nSWYgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmIC0gNjEp KSkpICE9IDApIG9yICgoKChfbGEgLSAxNDQpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9s YSAtIDE0NCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxNDQpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuTG9ja2VkIC0gMTQ0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlZhbHVlIC0gMTQ0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlYWQgLSAxNDQpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuV3JpdGUgLSAxNDQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuUmVmcmVzaCAtIDE0NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmlj ZSAtIDE0NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxNDQpKSkpICE9IDAp IG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTczDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbigpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzgNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UXVlc3Rpb25UYWdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25UYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvblRhZ0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTgwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24pDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTgxDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu RGlzYWJsZUlmLCBWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYsIFZmclN5bnRheFBhcnNl ci5XYXJuaW5nSWYsIFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmLCBWZnJTeW50YXhQYXJzZXIu SW1hZ2UsIFZmclN5bnRheFBhcnNlci5Mb2NrZWQsIFZmclN5bnRheFBhcnNlci5SZWZyZXNoLCBW ZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UsIFZmclN5bnRheFBhcnNlci5HdWlkT3AsIFZm clN5bnRheFBhcnNlci5SZWZyZXNoR3VpZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTc5DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZygpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk9wdGlvbiwgVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgVmZyU3ludGF4 UGFyc2VyLkRlZmF1bHQsIFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCBWZnJTeW50YXhQYXJz ZXIuVmFsdWUsIFZmclN5bnRheFBhcnNlci5SZWFkLCBWZnJTeW50YXhQYXJzZXIuV3JpdGVdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4MA0KDQorICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVB bHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAg ZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50Qm9vbGVhblR5 cGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRDaGVja0JveChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEFjdGlvbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEFjdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyU3RhdGVtZW50Qm9vbGVhblR5cGUNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEJvb2xlYW5UeXBlKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2 ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZShzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCb29sZWFuVHlwZUNvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTgyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50Qm9vbGVhblR5cGUpDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTg1DQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ2hlY2tC b3hdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4Mw0KDQorICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50Q2hlY2tCb3goKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50QWN0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNl bGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tCT1hfT1ApDQoNCisgICAgICAgICAgICBzZWxm Lk9wT2JqID0gQ0lmckNoZWNrQm94KCkNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQorICAgICAgICAgICAgc2VsZi5MID0gTm9u ZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCg0KKw0KDQor ICAgICAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9u QmFzZUluZm9Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIEVuZENoZWNrQm94KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZENoZWNrQm94LCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBDaGVja0JveChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DaGVja0JveCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyQ2hl Y2tCb3hGbGFncyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckNoZWNrQm94RmxhZ3NDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgS2V5KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1Ms IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDaGVja0JveA0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENo ZWNrQm94IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50Q2hlY2tCb3goc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudENoZWNrQm94KHNlbGYpOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAxODQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDaGVja0JveCkNCg0KKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTU4Nw0KDQorICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNoZWNrQm94KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODgN Cg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5PcE9iaiwg bG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4OQ0KDQorICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguT3BPYmopDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTU5MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5Ng0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTENCg0KKyAg ICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxB R1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTINCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTkzDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJDaGVja0JveEZs YWdzKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5NA0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjAyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5LZXk6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1OTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjAwDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNjAxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDQNCg0K KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4 Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwNQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kQ2hlY2tCb3gpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTYwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToN Cg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxj dHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkxG bGFncyA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorDQoNCisgICAgICAg IGRlZiBjaGVja2JveEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQs aSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJDaGVj a0JveEZsYWdzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyQ2hlY2tCb3hGbGFncyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckNoZWNrQm94RmxhZ3Moc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIHZmckNoZWNrQm94RmxhZ3Moc2VsZik6DQoNCisNCg0KKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMTg2LCBzZWxmLlJVTEVfdmZyQ2hlY2tCb3hGbGFncykNCg0KKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYwOA0KDQorICAgICAgICAgICAgc2VsZi5jaGVja2JveEZsYWdzRmllbGQoKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTYxMA0KDQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tib3hGbGFnc0ZpZWxk KCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxNQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAg IGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIENoZWNrYm94RmxhZ3NGaWVsZENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAg ICAgICBzZWxmLkxGbGFnID0gMA0KDQorICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCg0KKyAg ICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5NID0g Tm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZywgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgQ2hlY2tCb3hEZWZhdWx0RmxhZyhzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DaGVja0JveERlZmF1 bHRGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDaGVja0JveERlZmF1bHRNZmdGbGFnKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHF1ZXN0aW9u aGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY2hlY2tib3hGbGFnc0Zp ZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q2hlY2ti b3hGbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hlY2tib3hGbGFnc0ZpZWxkKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoN CisNCg0KKw0KDQorICAgIGRlZiBjaGVja2JveEZsYWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxkQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAxODgsIHNlbGYuUlVMRV9jaGVja2JveEZsYWdzRmllbGQpDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjIyDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu TnVtYmVyXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTYNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHRGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTcNCg0KKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZs YWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2MTgNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5NID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWcpDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNoZWNr Qm94RGVmYXVsdEZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxOQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdEZs YWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWddOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTYyMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0 aXZlRmxhZywgVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJl c2V0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBW ZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5Rmxh ZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzdFN0 eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjIxDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50QWN0 aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5n U3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfQUNUSU9OX09QKQ0KDQor ICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJBY3Rpb24oKQ0KDQorICAgICAgICAgICAgc2Vs Zi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQoNCisNCg0KKyAgICAg ICAgZGVmIEFjdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5BY3Rpb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0 aW9uSGVhZGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBp KQ0KDQorDQoNCisgICAgICAgIGRlZiBDb25maWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29uZmlnLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3Qo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgRW5kQWN0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZEFjdGlvbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckFjdGlvbkZsYWdz KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEFjdGlvbg0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEFjdGlvbiIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEFjdGlvbihzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3Rh dGVtZW50QWN0aW9uKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEFjdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTkwLCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50QWN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjI0DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5BY3Rpb24pDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTYyNQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2Nh bGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTYyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzMg0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYyOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnZmckFjdGlvbkZsYWdzKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYzMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM0DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db25maWcpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTYzNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM2DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjM3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzOA0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE2MzkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0MA0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY0MQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRRdWVzdGlvblRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjQyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRB Y3Rpb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Mw0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K DQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyQWN0 aW9uRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K DQorICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjdGlv bkZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLkFjdGlvbkZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5BY3Rpb25GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP ciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckFjdGlvbkZsYWdzDQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyQWN0aW9uRmxhZ3MiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJBY3Rpb25GbGFncyhz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg dmZyQWN0aW9uRmxhZ3Moc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5Miwgc2VsZi5SVUxFX3Zm ckFjdGlvbkZsYWdzKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQ1DQoNCisgICAgICAgICAgICBzZWxm LmFjdGlvbkZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTANCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0 Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Nw0KDQorICAgICAgICAgICAg ICAgIHNlbGYuYWN0aW9uRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2NTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBBY3Rpb25GbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQoNCisgICAgICAgICAg ICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV9hY3Rpb25GbGFnc0ZpZWxkDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWN0aW9uRmxhZ3NGaWVsZCIgKToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFjdGlvbkZsYWdzRmllbGQoc2VsZikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGFjdGlv bkZsYWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTk0LCBzZWxmLlJVTEVfYWN0 aW9uRmxhZ3NGaWVsZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2NTUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTY1Mw0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgVmZy U3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRG bGFnLCBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJz ZXIuTGF0ZUNoZWNrRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4 UGFyc2VyLk9wdGlvbk9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoN CisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjU0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5x dWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROdW1l cmljKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY0NvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudE9uZU9mQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJT dGF0ZW1lbnROdW1lcmljVHlwZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVu dE51bWVyaWNUeXBlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNUeXBlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTYsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE2NTkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudE51bWVyaWMoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZl06DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNjU4DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRPbmVP ZigpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnROdW1lcmljQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2Rl KEVGSV9JRlJfTlVNRVJJQ19PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyTnVt ZXJpYygpDQoNCisgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVT VElPTl9OT1JNQUwNCg0KKyAgICAgICAgICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0KDQorDQoN CisgICAgICAgIGRlZiBOdW1lcmljKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWMsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEhlYWRlcihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIHZmclNldE1pbk1heFN0ZXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVw Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFbmROdW1lcmljKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZE51bWVy aWMsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIHZmck51bWVyaWNGbGFncyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmck51bWVy aWNGbGFnc0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudE51bWVyaWMNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJTdGF0ZW1lbnROdW1lcmljIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpYyhz ZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnROdW1lcmljQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRO dW1lcmljKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjYxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1lcmljKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 NjINCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5PcE9i aiwgbG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2Mw0KDQor ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguT3BPYmopDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3MA0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjUNCg0K KyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjYNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjY3DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJOdW1lcmlj RmxhZ3MoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY4DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzYNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLktleToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY3Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLktleSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3 Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzQNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2NzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3OA0K DQorICAgICAgICAgICAgc2VsZi52ZnJTZXRNaW5NYXhTdGVwKGxvY2FsY3R4Lk9wT2JqKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTY4MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kTnVtZXJpYykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjgxDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFz cyBWZnJTZXRNaW5NYXhTdGVwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9iaj1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLk4xID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxm LkkgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTjIgPSBOb25lICMgVG9rZW4N Cg0KKyAgICAgICAgICAgIHNlbGYuQSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2Vs Zi5TID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0gT3BPYmoNCg0K Kw0KDQorICAgICAgICBkZWYgTWluaW11bShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5pbXVtLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIE1heGltdW0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTWF4aW11bSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBT dGVwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0ZXAsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE5lZ2F0aXZlKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OZWdhdGl2ZSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clNldE1pbk1heFN0ZXANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTZXRNaW5NYXhTdGVwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU2V0TWluTWF4U3RlcChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU2V0TWluTWF4U3RlcChzZWxmLCBPcE9iaik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4 U3RlcENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBPcE9iaikNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwMCwgc2VsZi5SVUxFX3ZmclNldE1pbk1heFN0 ZXApDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk1pbmltdW0pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4NA0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjg2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY4NQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4x ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQoNCisNCg0KKw0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODgNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTY4OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5MA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjkxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTMNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjkyDQoNCisgICAgICAgICAgICAgICAg bG9jYWxjdHguTjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCg0KKw0K DQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5NQ0KDQorICAgICAgICAgICAgbG9j YWxjdHguQSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjk2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAxDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5TdGVwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk3DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RlcCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTY5OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTkN Cg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAwDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyTnVtZXJpY0ZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorICAg ICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQoNCisgICAgICAgICAgICBzZWxmLklzRGlzcGxheVNw ZWNpZmllZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxkKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNl ci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLk51bWVyaWNGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3Zmck51bWVyaWNGbGFncw0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck51bWVyaWNGbGFncyIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck51bWVyaWNGbGFncyhzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyTnVtZXJp Y0ZsYWdzKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmck51bWVyaWNGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQor ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjAyLCBzZWxmLlJVTEVfdmZyTnVtZXJp Y0ZsYWdzKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAzDQoNCisgICAgICAgICAgICBzZWxmLm51bWVy aWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzA4DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBh cnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDQNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDUNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm51bWVyaWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTcxMA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IE51bWVyaWNGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQoNCisgICAgICAgICAgICBz ZWxmLklzU2V0VHlwZSA9IEZhbHNlDQoNCisgICAgICAgICAgICBzZWxmLklzRGlzcGxheVNwZWNp ZmllZCA9IEZhbHNlDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKw0K DQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg TnVtZXJpY1NpemVPbmUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmUsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IE51bWVyaWNTaXplVHdvKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBOdW1lcmljU2l6ZUZvdXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBOdW1lcmljU2l6ZUVpZ2h0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWlnaHQsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIERpc1BsYXlJbnREZWMoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGlzUGxheUludERlYywgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgRGlzUGxheVVJbnREZWMoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnREZWMsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIERpc1BsYXlVSW50SGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50SGV4LCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlv bmhlYWRlckZsYWdzRmllbGRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX251bWVyaWNGbGFnc0ZpZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0TnVtZXJpY0ZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXROdW1lcmljRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgbnVtZXJpY0ZsYWdzRmllbGQoc2Vs Zik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY0Zs YWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwNCwgc2VsZi5SVUxFX251bWVyaWNGbGFnc0ZpZWxk KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyMA0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0 b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk51bWJlcl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzExDQoN CisgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmVdOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTcxMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWVyaWNTaXplT25lKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3b106DQoN CisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVUd28pDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWVy aWNTaXplRm91cl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCA0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3MTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1l cmljU2l6ZUVpZ2h0KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNQbGF5SW50RGVjXToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE3MTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5EaXNQbGF5SW50RGVjKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludERlY106 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE3DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnREZWMpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRp c1BsYXlVSW50SGV4XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTgNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludEhleCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLCBWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFn LCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5SZWNv bm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLCBWZnJTeW50 YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsIFZm clN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3MTkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklf SUZSX09ORV9PRl9PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyT25lT2YoKQ0K DQorICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9S TUFMDQoNCisgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAg ICBkZWYgT25lT2Yoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT25lT2YsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9u QmFzZUluZm8oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEhlYWRlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21t YShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFbmRP bmVPZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FbmRPbmVPZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyT25lb2ZGbGFnc0ZpZWxkKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyT25lb2ZGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclNldE1pbk1heFN0ZXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50T25lT2YNCg0KKw0KDQorICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRPbmVPZiIgKToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9mKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2 ZnJTdGF0ZW1lbnRPbmVPZihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjA2LCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50T25lT2YpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjINCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9uZU9mKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE3MjMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhs b2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTcyNA0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHgu T3BPYmopDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyNQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTczMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3MjYNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjcN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI4DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi52ZnJPbmVvZkZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NzI5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzQNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk1p bmltdW06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzMNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnZmclNldE1pbk1heFN0ZXAobG9jYWxjdHguT3BPYmopDQoNCisNCg0KKw0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzYNCg0KKyAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTczNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRW5kT25lT2YpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczOA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgVmZyT25lb2ZGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorICAgICAgICAg ICAgc2VsZi5MRmxhZ3MgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxk KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLk51bWVyaWNGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0K Kw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zmck9uZW9mRmxhZ3NGaWVsZA0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9uZW9mRmxhZ3NGaWVsZCIgKToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck9uZW9mRmxhZ3NGaWVs ZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyT25lb2ZGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjA4LCBz ZWxmLlJVTEVfdmZyT25lb2ZGbGFnc0ZpZWxkKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzQwDQoNCisg ICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzQ1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3 aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3NDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDIN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTc0Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K DQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoN CisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRQYXNz d29yZENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVt ZW50U3RyaW5nVHlwZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFN0cmluZ1R5cGUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmdU eXBlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkN Cg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxMCwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudFN0cmluZ1R5cGUpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzUwDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE3NDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0cmlu ZygpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3NDkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFBhc3N3b3JkKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IFZmclN0YXRlbWVudFN0cmluZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZS X1NUUklOR19PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyU3RyaW5nKCkNCg0K KyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1B TA0KDQorICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBz ZWxmLk1pbiA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5NYXggPSBOb25lICMg VG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZywgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkhl YWRlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBp OmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZFN0cmluZyhz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FbmRTdHJpbmcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE1pblNpemUoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWluU2l6ZSwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgTWF4U2l6ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXhTaXplLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJTdHJpbmdGbGFnc0ZpZWxkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RyaW5nRmxhZ3NGaWVsZENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudFN0cmluZw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0cmluZyIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0cmluZyhzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50U3RyaW5n KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN0cmluZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjEyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50 U3RyaW5nKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzUyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmcpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1 Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwg bG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1NA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTc2MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3NTUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3NTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzU3DQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdHJpbmdGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc1OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY2DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5LZXk6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjINCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NzY0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE3NjgNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk1pbiA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1pblNpemUpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTc2OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzcwDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTc3MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3Mg0KDQorICAgICAgICAgICAgbG9jYWxj dHguTWF4ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4U2l6ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzczDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzQNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzc1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzc2DQoNCisgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkVuZFN0cmluZykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNzc4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoN CisNCg0KKyAgICBjbGFzcyBWZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0g MA0KDQorICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIHN0 cmluZ0ZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0cmluZ0ZsYWdzRmllbGQN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdHJpbmdG bGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RyaW5nRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQor DQoNCisNCg0KKyAgICBkZWYgdmZyU3RyaW5nRmxhZ3NGaWVsZChzZWxmKToNCg0KKw0KDQorICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAyMTQsIHNlbGYuUlVMRV92ZnJTdHJpbmdGbGFnc0ZpZWxkKQ0KDQorICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzgwDQoNCisgICAgICAgICAgICBzZWxmLnN0cmluZ0ZsYWdzRmllbGQoKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4MQ0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc4Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5nRmxhZ3NGaWVs ZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODcNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTdHJpbmdGbGFnc0ZpZWxkQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6 aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAg ICAgIHNlbGYuSEZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0KDQorICAg ICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJl cihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3RyaW5nRmxhZ3NGaWVsZA0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmluZ0ZsYWdzRmllbGQiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdHJpbmdGbGFnc0ZpZWxk KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRl ZiBzdHJpbmdGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxNiwgc2VsZi5S VUxFX3N0cmluZ0ZsYWdzRmllbGQpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzkxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3ODgNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX184XToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX184KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsIFZm clN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVk RmxhZywgVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFy c2VyLkxhdGVDaGVja0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRh eFBhcnNlci5PcHRpb25Pbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5MA0KDQorICAgICAgICAgICAgICAgIHNlbGYu cXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFs bHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFBhc3N3b3JkQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfUEFTU1dPUkRfT1ApDQoNCisgICAgICAg ICAgICBzZWxmLk9wT2JqID0gQ0lmclBhc3N3b3JkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5 cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQorICAgICAgICAgICAgc2Vs Zi5GID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk1pbiA9IE5vbmUgIyBUb2tl bg0KDQorICAgICAgICAgICAgc2VsZi5NYXggPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAg ICBkZWYgUGFzc3dvcmQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1 ZXN0aW9uSGVhZGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1h LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFbmRQYXNzd29yZChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRQYXNzd29yZCwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgTWluU2l6ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5TaXplLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBNYXhTaXplKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk1heFNpemUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclBhc3N3b3Jk RmxhZ3NGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBFbmNvZGluZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FbmNvZGluZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRQYXNz d29yZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudFBhc3N3b3JkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudFBhc3N3b3JkKHNlbGYpOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFBhc3N3 b3JkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyMTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRQYXNzd29yZCkN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTc5Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUGFzc3dvcmQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5NA0KDQor ICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxj dHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5NQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTgwMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3OTYNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk4DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJQYXNzd29yZEZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzk5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDcNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLktleToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgwMw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLktleSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTgwNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDYNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTgwOQ0KDQorICAgICAgICAgICAgbG9jYWxjdHguTWluID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTWluU2l6ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODEwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODEyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODEzDQoNCisgICAgICAgICAgICBsb2NhbGN0eC5N YXggPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhTaXplKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4MTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxNQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4MTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MjENCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkVuY29k aW5nOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE3DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5jb2RpbmcpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4MTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE5 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODIwDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE4MjMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTgyNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kUGFz c3dvcmQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K DQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyUGFz c3dvcmRGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorDQoNCisgICAgICAgIGRl ZiBwYXNzd29yZEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsaSkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJQYXNzd29y ZEZsYWdzRmllbGQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJQYXNzd29yZEZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJQYXNzd29yZEZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclBhc3N3b3JkRmxhZ3NGaWVsZChz ZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJQYXNz d29yZEZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyMCwgc2VsZi5SVUxFX3ZmclBhc3N3b3Jk RmxhZ3NGaWVsZCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNw0KDQorICAgICAgICAgICAgc2VsZi5w YXNzd29yZEZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MzINCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgy OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyOQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYucGFzc3dvcmRGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTgzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KDQorDQoNCisg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBxdWVz dGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmll bGRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Bhc3N3b3JkRmxh Z3NGaWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFBh c3N3b3JkRmxhZ3NGaWVsZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0K Kw0KDQorDQoNCisNCg0KKyAgICBkZWYgcGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMjIyLCBzZWxmLlJVTEVfcGFzc3dvcmRGbGFnc0ZpZWxkKQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzNw0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk51bWJlcl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODM1DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5JbnRlcmFjdGl2ZUZsYWcsIFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRh eFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVp cmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcsIFZmclN5bnRheFBhcnNlci5S ZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywgVmZyU3ludGF4UGFy c2VyLlJlc3RTdHlsZUZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzNg0KDQor ICAgICAgICAgICAgICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0 YXRlbWVudE9yZGVyZWRMaXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJf T1JERVJFRF9MSVNUX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJPcmRlcmVk TGlzdCgpDQoNCisgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVT VElPTl9OT1JNQUwNCg0KKyAgICAgICAgICAgIHNlbGYuTSA9IE5vbmUgIyBUb2tlbg0KDQorICAg ICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIE9yZGVy ZWRMaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9yZGVyZWRMaXN0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlv bkhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIEVuZExpc3Qoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kTGlzdCwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVt YmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyT3JkZXJlZExpc3RGbGFn cyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgTWF4Q29udGFpbmVycyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXhDb250YWluZXJzLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50T3JkZXJlZExpc3QiICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy U3RhdGVtZW50T3JkZXJlZExpc3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIy NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0KQ0KDQorICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODM5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlz dCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQwDQoNCisgICAgICAgICAgICBzZWxm LnZmclF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ2DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5NYXhDb250YWluZXJzOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODQyDQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguTSA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk1heENvbnRhaW5lcnMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4 NDMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ0DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODQ1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTMN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLkZMQUdTOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ4DQoN CisgICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTg1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyT3JkZXJl ZExpc3RGbGFncygpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTENCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQor DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1NQ0KDQorICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5FbmRMaXN0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTcNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNs YXNzIFZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQoNCisgICAgICAg ICAgICBzZWxmLkxGbGFncyA9IDANCg0KKw0KDQorICAgICAgICBkZWYgb3JkZXJlZGxpc3RGbGFn c0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5 bnRheFBhcnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0LGkpDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyT3JkZXJlZExpc3RGbGFn cw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9yZGVy ZWRMaXN0RmxhZ3MiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJPcmRlcmVkTGlzdEZsYWdzKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoN CisNCg0KKw0KDQorICAgIGRlZiB2ZnJPcmRlcmVkTGlzdEZsYWdzKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck9yZGVyZWRMaXN0RmxhZ3NDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDIyNiwgc2VsZi5SVUxFX3Zmck9yZGVyZWRMaXN0RmxhZ3MpDQoNCisgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4NTkNCg0KKyAgICAgICAgICAgIHNlbGYub3JkZXJlZGxpc3RGbGFnc0ZpZWxk KCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODY0DQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNl T3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjANCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4NjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm9yZGVyZWRs aXN0RmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjYNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBPcmRlcmVk bGlzdEZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KDQorICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCg0KKyAgICAgICAgICAgIHNlbGYu TEZsYWcgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIFVuaVF1ZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxhZywgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgTm9FbXB0eUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm9FbXB0eUZsYWcsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVy RmxhZ3NGaWVsZENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfb3Jk ZXJlZGxpc3RGbGFnc0ZpZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBvcmRlcmVkbGlzdEZsYWdz RmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu T3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMjgsIHNlbGYuUlVMRV9vcmRl cmVkbGlzdEZsYWdzRmllbGQpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODcxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4NjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVuaVF1ZUZsYWddOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTg2OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlVuaVF1ZUZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5vRW1wdHlGbGFnXToNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4NjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Ob0VtcHR5RmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFn LCBWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1 aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRh eFBhcnNlci5MYXRlQ2hlY2tGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJT eW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFn XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzANCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBm aW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVy biBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREYXRlQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfREFURV9PUCkNCg0KKyAgICAgICAgICAg IHNlbGYuT3BPYmogPSBDSWZyRGF0ZSgpDQoNCisgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJ X1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQoNCisgICAgICAgICAgICBzZWxmLlZhbCA9IEVG SV9JRlJfVFlQRV9WQUxVRSgpDQoNCisgICAgICAgICAgICBzZWxmLkYxID0gTm9uZSAjIFRva2Vu DQoNCisgICAgICAgICAgICBzZWxmLkYyID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAg ZGVmIERhdGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRGF0ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRW5kRGF0ZShzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRE YXRlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1 ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIFllYXIoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu WWVhciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFySWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlZhcklkLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCg0KKw0KDQorICAgICAg ICBkZWYgUHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5NaW5NYXhEYXRlU3RlcERlZmF1bHRD b250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NaW5NYXhEYXRlU3RlcERl ZmF1bHRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgTW9udGgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTW9udGgs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIERheShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EYXksIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIHZmckRhdGVGbGFncyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGVGbGFnc0NvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZihzZWxmLCBp OmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWZDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQsaSkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudERhdGUNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnREYXRlIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGF0ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50RGF0ZShzZWxmKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRE YXRlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyMzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREYXRlKQ0KDQor ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxODczDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5EYXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjQNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5Qcm9tcHQsIFZmclN5bnRheFBhcnNlci5OYW1lLCBWZnJTeW50YXhQYXJzZXIuVmFySWQs IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbklkXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTg3NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9j YWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODc1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODENCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLkZMQUdTOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3 Ng0KDQorICAgICAgICAgICAgICAgICAgICBsb2NhbGN0eC5GMSA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3 Nw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3OA0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnZmckRhdGVGbGFncygpDQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODc5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg4Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlllYXJdOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODg1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuWWVhcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4 Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODg3DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTg4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4 ODkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTANCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODkxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4 OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTYNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwMQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTAyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTAzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA0DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5taW5NYXhEYXRlU3RlcERlZmF1bHQo bG9jYWxjdHguVmFsLmRhdGUsIDApDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 MDcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Nb250aCkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwOA0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTA5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxMA0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTENCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTQNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE2DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTcNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTIwDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTIyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTkyMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTI0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI1DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTkyNw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI4DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5taW5NYXhEYXRlU3RlcERlZmF1bHQobG9jYWxjdHguVmFsLmRhdGUsIDEp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXkpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5WYXJJZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzMQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTMzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRG90KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTM0DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzNQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTM2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTM3DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQwDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTk0Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQzDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGVscCkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTk0NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 NDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0Ng0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTk0Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk0OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTk1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWluTWF4RGF0 ZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC5kYXRlLCAyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTU2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTENCg0KKyAgICAgICAgICAgICAgICAgICAgbG9j YWxjdHguRjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTINCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5NTMNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJEYXRlRmxhZ3Mo KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1NA0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkluY29uc2lzdGVudElmOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk1OA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVu dElmKCkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjMNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAg ICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5v VmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTY2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmREYXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjcNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIE1pbk1heERhdGVT dGVwRGVmYXVsdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRGF0ZT1Ob25lLCBLZXlWYWx1ZT1Ob25lKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRGF0ZSA9IE5v bmUNCg0KKyAgICAgICAgICAgIHNlbGYuS2V5VmFsdWUgPSBOb25lDQoNCisgICAgICAgICAgICBz ZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRGF0ZSA9IERhdGUNCg0K KyAgICAgICAgICAgIHNlbGYuS2V5VmFsdWUgPSBLZXlWYWx1ZQ0KDQorDQoNCisgICAgICAgIGRl ZiBNaW5pbXVtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk1pbmltdW0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBNYXhp bXVtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk1heGltdW0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RlcCwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgRGVmYXVsdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0LCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfbWluTWF4RGF0ZVN0ZXBEZWZhdWx0DQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0IiApOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0 KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRl ZiBtaW5NYXhEYXRlU3RlcERlZmF1bHQoc2VsZiwgRGF0ZSwgS2V5VmFsdWUpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBEYXRlLCBLZXlWYWx1ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzMiwgc2VsZi5SVUxFX21pbk1heERhdGVT dGVwRGVmYXVsdCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2OQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTWluaW11bSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTcwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzENCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTcyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTczDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5NYXhpbXVtKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 NzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzYN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5ODENCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0ZXA6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5NzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdGVwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTc4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3OQ0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTk4MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTg3DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5EZWZhdWx0Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTgzDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4NA0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5ODUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTg2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRGF0ZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0g MA0KDQorDQoNCisgICAgICAgIGRlZiBkYXRlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRD b250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRlRmxhZ3NGaWVsZENv bnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJEYXRlRmxhZ3MNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJEYXRlRmxhZ3MiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJEYXRlRmxhZ3Moc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIHZmckRhdGVGbGFncyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJEYXRlRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzNCwg c2VsZi5SVUxFX3ZmckRhdGVGbGFncykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4OQ0KDQorICAgICAg ICAgICAgc2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk5NA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xh PT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTkwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTkxDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBEYXRlRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0KDQorDQoNCisg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBZZWFy U3VwcHByZXNzRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5ZZWFyU3VwcHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgTW9udGhTdXBwcmVzc0ZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTW9udGhTdXBwcmVzc0ZsYWcsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIERheVN1cHByZXNzRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EYXlTdXBwcmVzc0ZsYWcsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFN0b3JhZ2VOb3JtYWxGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBTdG9yYWdlVGltZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVRpbWVGbGFnLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBTdG9yYWdlV2FrZVVwRmxhZyhzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVw RmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGVGbGFnc0ZpZWxkDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0ZUZsYWdzRmllbGQi ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRlRmxhZ3NGaWVs ZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgZGF0ZUZsYWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzNiwgc2VsZi5SVUxF X2RhdGVGbGFnc0ZpZWxkKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoN CisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTk3DQoNCisgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAx ODEpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE4MSkpICYgKCgxIDw8IChWZnJT eW50YXhQYXJzZXIuWWVhclN1cHBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuTW9udGhTdXBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu RGF5U3VwcHJlc3NGbGFnIC0gMTgxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VO b3JtYWxGbGFnIC0gMTgxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxh ZyAtIDE4MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4 MSkpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRj aChzZWxmKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnRUaW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVElN RV9PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyVGltZSgpDQoNCisgICAgICAg ICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQoNCisgICAg ICAgICAgICBzZWxmLlZhbCA9IEVGSV9JRlJfVFlQRV9WQUxVRSgpDQoNCisgICAgICAgICAgICBz ZWxmLkYxID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkYyID0gTm9uZSAjIFRv a2VuDQoNCisNCg0KKyAgICAgICAgZGVmIFRpbWUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGltZSwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgRW5kVGltZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FbmRUaW1lLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRl cihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIEhvdXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuSG91ciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFySWQo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5WYXJJZCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcklkLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJp bmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50 aWZpZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCg0K KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRv dCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgUHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu UHJvbXB0LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoN CisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu SGVscCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgbWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5N aW5NYXhUaW1lU3RlcERlZmF1bHRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5NaW5NYXhUaW1lU3RlcERlZmF1bHRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgTWludXRlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk1pbnV0ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2Vjb25kKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlY29uZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyVGltZUZsYWdzKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyVGltZUZsYWdzQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRl eHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lz dGVudElmQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdT LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50VGltZQ0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFRpbWUi ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRU aW1lKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAg IGRlZiB2ZnJTdGF0ZW1lbnRUaW1lKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFRpbWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzOCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFRpbWUpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTkNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpbWUpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjA5MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFyc2Vy Lk5hbWUsIFZmclN5bnRheFBhcnNlci5WYXJJZCwgVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDAwDQoNCisgICAgICAgICAgICAg ICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDENCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjAwNw0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDAyDQoNCisgICAgICAgICAgICAgICAgICAgIGxv Y2FsY3R4LkYxID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDAzDQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDA0DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyVGltZUZsYWdz KCkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDUNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDA5DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuSG91cl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTENCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ib3VyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDEyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwMTMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE0DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjAxNg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTcNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxOA0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjAxOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjANCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjAyMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyMw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjAyNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhl bHApDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjYNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDI3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw MjgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwMzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MDMxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzINCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1pbk1heFRpbWVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwudGltZSwgMCkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzMw0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk1pbnV0ZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjAzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlZhcklkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM1DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjAzNg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwMzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Eb3QpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzgNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM5DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwNDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Qcm9tcHQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDENCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDQyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwNDMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDQNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMDQ2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDcNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDQ4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0OQ0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUwDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDUxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1Mw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDU0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5taW5NYXhUaW1lU3Rl cERlZmF1bHQobG9jYWxjdHguVmFsLnRpbWUsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwNTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZWNvbmQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTYNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjA1Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw NTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDU5DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDYwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjA2MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDYyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDYzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjA2NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY1DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDY3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2OA0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDY5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuSGVscCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3 MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjA3Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3 Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3NA0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwNzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Ng0K DQorICAgICAgICAgICAgICAgIHNlbGYubWluTWF4VGltZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZh bC50aW1lLCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDgyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNzcNCg0KKyAgICAgICAgICAgICAgICAgICAgbG9jYWxjdHguRjIgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNzgNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzkNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi52ZnJUaW1lRmxhZ3MoKQ0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjA4MA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwODcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmOg0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4NA0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwODkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDkyDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRUaW1lKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwOTMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIE1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgVGlt ZT1Ob25lLCBLZXlWYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCg0KKyAgICAgICAgICAgIHNlbGYuVGltZSA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYu S2V5VmFsdWUgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0K KyAgICAgICAgICAgIHNlbGYuVGltZSA9IFRpbWUNCg0KKyAgICAgICAgICAgIHNlbGYuS2V5VmFs dWUgPSBLZXlWYWx1ZQ0KDQorDQoNCisgICAgICAgIGRlZiBNaW5pbXVtKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbmltdW0sIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNv bW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBNYXhpbXVtKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1heGltdW0sIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RlcCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRGVm YXVsdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5EZWZhdWx0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbWluTWF4VGlt ZVN0ZXBEZWZhdWx0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0TWluTWF4VGltZVN0ZXBEZWZhdWx0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0TWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBtaW5NYXhUaW1lU3RlcERlZmF1bHQo c2VsZiwgVGltZSwgS2V5VmFsdWUpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLk1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLCBUaW1lLCBLZXlWYWx1ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDI0MCwgc2VsZi5SVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCkNCg0KKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjA5NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWlu aW11bSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk2DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwOTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk4DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDk5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhpbXVt KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDANCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjEwMQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDINCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MDcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlN0ZXA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDMN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdGVwKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTA0DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjEwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwNg0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTEzDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5EZWZhdWx0Og0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTA5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjExMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTENCg0KKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTEyDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3Mg VmZyVGltZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCg0KKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KDQorDQoNCisgICAgICAgIGRlZiB0 aW1lRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 cyhWZnJTeW50YXhQYXJzZXIuVGltZUZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Is IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJUaW1lRmxhZ3MNCg0KKw0KDQorICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJUaW1lRmxhZ3MiICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJUaW1lRmxhZ3Moc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclRpbWVG bGFncyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJUaW1lRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0Miwgc2VsZi5SVUxFX3ZmclRpbWVGbGFncykN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjExNQ0KDQorICAgICAgICAgICAgc2VsZi50aW1lRmxhZ3NGaWVs ZCgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyMA0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTE2DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTE3DQoNCisgICAgICAgICAgICAgICAgc2VsZi50aW1lRmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjINCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBUaW1lRmxhZ3NGaWVs ZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLkxGbGFnID0gMA0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt YmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBIb3VyU3VwcHByZXNzRmxhZyhzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ib3VyU3Vw cHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTWludXRlU3VwcHJlc3NGbGFnKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk1pbnV0ZVN1cHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2Vjb25kU3VwcHJl c3NGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlY29uZFN1cHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3Rv cmFnZU5vcm1hbEZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZU5vcm1hbEZsYWcsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIFN0b3JhZ2VUaW1lRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdlVGltZUZsYWcsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIFN0b3JhZ2VXYWtlVXBGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VXYWtlVXBGbGFnLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdGltZUZsYWdzRmllbGQNCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRUaW1lRmxhZ3NGaWVsZCIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRpbWVGbGFnc0ZpZWxkKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB0aW1lRmxhZ3NGaWVs ZChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5UaW1l RmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjQ0LCBzZWxmLlJVTEVfdGltZUZsYWdzRmllbGQp DQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxMjMNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDE4NCkpICYgfjB4M2YpID09 IDAgYW5kICgoMSA8PCAoX2xhIC0gMTg0KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5Ib3Vy U3VwcHByZXNzRmxhZyAtIDE4NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NaW51dGVTdXBw cmVzc0ZsYWcgLSAxODQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2Vjb25kU3VwcHJlc3NG bGFnIC0gMTg0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnIC0g MTg0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZyAtIDE4NCkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4NCkpKSkgIT0gMCkg b3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRD b25kaXRpb25hbENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZm clN0YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxl SWZTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3Rh dChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXRDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRp dGlvbmFsIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50Q29uZGl0aW9uYWwoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0K Kw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENvbmRpdGlv bmFsQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyNDYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25h bCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg dG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5EaXNhYmxlSWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEy NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLlN1cHByZXNzSWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEy Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5HcmF5T3V0SWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEy Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmU3RhdCgpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxMjgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElm U3RhdCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBO b25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEdyYXlPdXRJZlN0YXROZXdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldw0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3IiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50Q29uZGl0 aW9uYWxOZXcoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3KHNlbGYpOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3 Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAyNDgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5l dykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzENCg0KKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjEzMg0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lm U3RhdE5ldygpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEzMw0KDQorICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KCkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMTM0DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lz dGVudElmU3RhdCgpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0TmV3KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdD b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdChzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1MCwg c2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjEzNg0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdE5ldygpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3Rh dGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50 R3JheU91dElmU3RhdE5ldyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXRO ZXdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0IiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdChzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50 R3JheU91dElmU3RhdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTIsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjEzOA0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRHcmF5 T3V0SWZTdGF0TmV3KCkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6 DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVl c3Rpb25zQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudENv bmRpdGlvbmFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50TGFiZWwoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25D b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0DQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3QiICk6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlz dChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1 NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0KQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlLCBW ZnJTeW50YXhQYXJzZXIuVGV4dCwgVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBhcnNl ci5SZXNldEJ1dHRvbl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTQwDQoNCisgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0KCkNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT25lT2Ys IFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCwgVmZyU3ludGF4UGFyc2VyLkRhdGUsIFZmclN5 bnRheFBhcnNlci5UaW1lLCBWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3gsIFZmclN5bnRheFBhcnNl ci5OdW1lcmljLCBWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIFZmclN5bnRheFBhcnNlci5TdHJp bmcsIFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjE0MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuR3JheU91dElmLCBWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwgVmZyU3lu dGF4UGFyc2VyLkRpc2FibGVJZiwgVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudENvbmRpdGlvbmFsKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGFiZWxdOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE0Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50TGFiZWwoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE0NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9u KCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLCBWZnJT eW50YXhQYXJzZXIuUmVzdG9yZSwgVmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjE0NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 SW52YWxpZCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQor DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFN0YXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExhYmVsQ29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWQoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZA0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0T2xkIiApOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3RP bGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0T2xkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAyNTYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZCkNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTINCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5T dWJ0aXRsZSwgVmZyU3ludGF4UGFyc2VyLlRleHQsIFZmclN5bnRheFBhcnNlci5Hb3RvLCBWZnJT eW50YXhQYXJzZXIuUmVzZXRCdXR0b25dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0 OA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdCgpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk9uZU9mLCBWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QsIFZmclN5bnRheFBhcnNlci5E YXRlLCBWZnJTeW50YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LCBWZnJT eW50YXhQYXJzZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLCBWZnJTeW50YXhQ YXJzZXIuU3RyaW5nLCBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxNDkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0 aW9ucygpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkxhYmVsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxNTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudExhYmVsKCkNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLCBWZnJTeW50YXhQYXJz ZXIuUmVzdG9yZSwgVmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE1MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVO b2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgRGlzYWJsZUlm KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkRpc2FibGVJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVz c2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0 YXRMaXN0Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50U3RhdExpc3RDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudERpc2FibGVJZlN0YXQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0IiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdChzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy U3RhdGVtZW50RGlzYWJsZUlmU3RhdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dChzZWxmLCBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAyNTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KQ0KDQorICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTU0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNh YmxlSWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE1NQ0KDQorICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2MA0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0g MCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuT25lT2Yg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu R3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1 cHByZXNzSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9 PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5j b25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtIDEx MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFj dGlvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSkpICE9 IDApOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTU3DQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxNjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2 NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZkNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAgICAgICAgZGVmIFN1 cHByZXNzSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3VwcHJlc3NJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0 LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIENvbW1hKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2Vs ZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJl c3NJZiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudGdyYXlvdXRJZlN1cHByZXNzSWYoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWYo c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50Z3JheW91dElmU3VwcHJlc3NJZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjYwLCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Ng0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZikNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTc5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTY4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2OQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx NzQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAg IHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxNzANCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE3MQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3Ng0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMTc3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODENCg0K KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjE4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlP dXRJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisN Cg0KKyAgICAgICAgZGVmIEdyYXlPdXRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZg0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dHN1cHByZXNzSWZHcmF5T3V0SWYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmKHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRzdXBw cmVzc0lmR3JheU91dElmKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWZDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI2Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYpDQoNCisgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxODQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkdyYXlPdXRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTk3DQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5G TEFHUzoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4NQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTg2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4Nw0K DQorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxOTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODgNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4OQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm LmZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE5NA0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxOTkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwMA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9T VVBQUkVTU19JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgU3VwcHJlc3NJZihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVz c0lmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmxhZ3NGaWVs ZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkZsYWdzRmllbGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0K Kw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXROZXciICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlN0YXROZXcoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2NCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KQ0KDQorICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjAyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lm KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMTUNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAzDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyMDQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjA1DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjIxMA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAg ICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwNg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjA3DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVs ZCgpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjEyDQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIyMTMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIx Nw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjE4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyMg0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAt IDQ2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8IChWZnJT eW50YXhQYXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVk TGlzdCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkRhdGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29y ZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEg LSAxMTApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChW ZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuUmVzdG9yZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEw KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLkFjdGlvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5H dWlkT3AgLSAxMTApKSkpICE9IDApOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjE5DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjQNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyNQ0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjIyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5l d0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0dSQVlfT1VUX0lGX09QKQ0K DQorDQoNCisgICAgICAgIGRlZiBHcmF5T3V0SWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBGTEFHUyhzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5G TEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENv bnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0 LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlz dENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0 YXRMaXN0Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3IiAp Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdE5ldyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoN CisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCg0KKw0K DQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0 SWZTdGF0TmV3Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5 T3V0SWZTdGF0TmV3KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjI4DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjI0MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyMjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G TEFHUykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzMA0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQo KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjM2DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjMyDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMzMNCg0KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMzgNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzOQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjQzDQoNCisgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudEV4cHJlc3Npb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDQN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjQ4DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAo KDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0 IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HcmF5T3V0 SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MYWJlbCAtIDQ2KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkNoZWNrQm94IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJ ZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkdvdG8gLSA0NikpKSkgIT0gMCkgb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAgYW5k ICgoMSA8PCAoX2xhIC0gMTEwKSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3Rl bnRJZiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXN0b3JlIC0gMTEwKSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuUmVzZXRCdXR0b24gLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQWN0aW9uIC0g MTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkd1aWRPcCAtIDExMCkpKSkgIT0gMCk6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDUNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFN0YXRMaXN0KCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjI1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjUxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FbmRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjUyDQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZy VHJlZU5vZGUoRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ApDQoNCisNCg0KKyAgICAgICAgZGVm IEluY29uc2lzdGVudElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBQcm9tcHQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZElmKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0 DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNv bnNpc3RlbnRJZlN0YXQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy NjgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQpDQoNCisgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyNTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklu Y29uc2lzdGVudElmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTUNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTcNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjU5DQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI2MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYxDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjc0DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI2Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYz DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2NA0KDQorICAgICAgICAgICAgICAgIHNl bGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIyNjUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjI2Ng0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI3MQ0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMjcyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNzYNCg0KKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjI3Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RW5kSWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI3OA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K DQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3Rh dGVtZW50SW52YWxpZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHNDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWQNCg0KKw0KDQor ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlk IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 SW52YWxpZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0K KyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAyNzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkKQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkhpZGRlbl06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjgwDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5XToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODENCg0KKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXN0b3JlLCBW ZnJTeW50YXhQYXJzZXIuU2F2ZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjgyDQoN CisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZh dWx0cygpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKw0KDQorICAgICAgICBkZWYgSGlkZGVuKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkhpZGRlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFsdWUsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIEtleShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5LZXksIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlk SGlkZGVuDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy U3RhdGVtZW50SW52YWxpZEhpZGRlbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRI aWRkZW4oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjcyLCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbikNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyODUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhp ZGRlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg2DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYWx1ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMjg3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODgNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMjg5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkwDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5 MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5Mw0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgVmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeUNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAgICAgICAgZGVmIEludmVudG9y eShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5JbnZlbnRvcnksIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE51 bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIFRleHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkNCg0KKw0KDQor ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlk SW52ZW50b3J5IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50SW52YWxpZEludmVudG9yeShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeShz ZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzQsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk1DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI5Ng0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuSGVscCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk3DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIyOTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTkNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzAwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwMQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAzDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzMDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwNQ0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjMwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDcN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzA4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz MDkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTYNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlRleHQ6DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzExDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxMg0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMzEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzE0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKw0KDQorDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50SW52YWxp ZFNhdmVSZXN0b3JlRGVmYXVsdHNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KDQorDQoNCisgICAgICAgIGRlZiBEZWZhdWx0cyhzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0cywgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBp KQ0KDQorDQoNCisgICAgICAgIGRlZiBGb3JtSWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybUlkLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0K KyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0 cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgaSkNCg0K Kw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu SGVscCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgU2F2ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TYXZlLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBSZXN0b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlJlc3RvcmUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZM QUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29u dGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQs aSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3Rv cmVEZWZhdWx0cw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzIiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3Jl RGVmYXVsdHMoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpOg0K DQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudElu dmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzYsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cykNCg0KKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjMyMA0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgIGlmIG5vdChfbGE9PVZmclN5bnRheFBhcnNlci5SZXN0b3JlIG9yIF9sYT09VmZyU3ludGF4 UGFyc2VyLlNhdmUpOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cklubGluZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5jb25zdW1lKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIxDQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0cykNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzIyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIzDQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjMyNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI1DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjMyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyNw0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzMjgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyOQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjMzMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzENCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzMyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzMNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzMzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkhlbHApDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzNQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzM2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM3DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjMzOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzkNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM1MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVk aWN0KHNlbGYuX2lucHV0LDE4MSxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0g MToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0MA0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzQxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDINCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5m bGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0OA0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgX2xh PT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjM0NA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzQ1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzUwDQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzNTcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzUzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTQNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzNTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU2DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorDQoN CisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU5DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K DQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRMYWJlbENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQoN CisNCg0KKyAgICAgICAgZGVmIExhYmVsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhYmVsLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50TGFi ZWwNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0 ZW1lbnRMYWJlbCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudExhYmVsKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisN Cg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToNCg0KKw0KDQorICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMjc4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50TGFiZWwpDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzYxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5MYWJlbCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzYyDQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM2Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50QmFubmVyQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCg0KKw0KDQorICAgICAg ICBkZWYgQmFubmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkJhbm5lciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVGl0bGUoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu VGl0bGUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBMaW5lKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxpbmUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEFs aWduKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkFsaWduLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBUaW1lb3V0KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpbWVvdXQsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIExlZnQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVmdCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2Vu dGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNlbnRlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgUmlnaHQoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmlnaHQsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXINCg0KKw0KDQor ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRCYW5uZXIi ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRC YW5uZXIoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIHZmclN0YXRlbWVudEJhbm5lcihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCYW5uZXJDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4 MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEJhbm5lcikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2NQ0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQmFubmVyKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNjcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzNjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpdGxl KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzANCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjM3MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Mg0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzNzMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc0DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIzNzUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODYNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5MaW5lXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Ng0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxpbmUpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzNzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz NzgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3OQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkFsaWduKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzgwDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCg0KKyAgICAgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDEzNikpICYgfjB4M2YpID09 IDAgYW5kICgoMSA8PCAoX2xhIC0gMTM2KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5MZWZ0 IC0gMTM2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJpZ2h0IC0gMTM2KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLkNlbnRlciAtIDEzNikpKSkgIT0gMCkpOg0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydE1hdGNoKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRpbWVv dXRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzgyDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZW91dCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM4Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODQN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODUNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAg ICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAg IHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRFeHRl bnNpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQor ICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KDQor ICAgICAgICAgICAgc2VsZi5EYXRhQnVmZiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuU2l6 ZSA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuVHlwZU5hbWUgPSAnJw0KDQorICAgICAgICAgICAg c2VsZi5UeXBlU2l6ZSA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuSXNTdHJ1Y3QgPSBGYWxzZQ0K DQorICAgICAgICAgICAgc2VsZi5BcnJheU51bSA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuRCA9 IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBHdWlkT3Aoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3VpZE9wLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IGd1aWREZWZpbml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBFbmRHdWlkT3Aoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kR3VpZE9wLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBEYXRhVHlwZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5EYXRhVHlwZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWlu dDY0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlVpbnQ2NCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgVWludDgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVWludDgsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEJvb2xlYW4o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQm9vbGVhbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX1NUUklOR19JRChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklf U1RSSU5HX0lELCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJ SV9EQVRFLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1RJTUUoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9U SU1FLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJFeHRlbnNpb25EYXRhKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJFeHRl bnNpb25EYXRhQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXh0 ZW5zaW9uRGF0YUNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRFeHRlbnNpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQsaSkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEV4dGVuc2lvbiIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3Rh dGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjgyLCBzZWxm LlJVTEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzg4DQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HdWlkT3ApDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM4OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVXVpZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzkwDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzOTENCg0KKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjMNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFk YXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxOTcsc2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAg aWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTINCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5Mw0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4 LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXRhVHlwZSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM5NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM5NQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VaW50NjQpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzk5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk2DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk3DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5OA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjQwMQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VaW50MzIpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDA1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDAyDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDAzDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQwNA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MTZdOg0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjQwNw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VaW50MTYpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDExDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA4DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA5DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxMA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50OF06DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDEzDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQxNw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxNA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoN CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxNQ0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTYNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCg0KKw0K DQorDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQm9vbGVhbl06DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDE5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkJvb2xlYW4pDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDIzDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIwDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIxDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyMg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEXToNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX1NUUklOR19JRCkNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0MjkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 MjYNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 MjcNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDI4DQoN CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURV06 DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDMxDQoNCisgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCg0KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzUNCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI0MzINCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI0MzMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDM0DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVG SV9ISUlfVElNRV06DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM3DQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlf VElNRSkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDENCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgICAg IGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzgNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDQwDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkVGSV9ISUlfUkVGXToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0NDMNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRUZJX0hJSV9SRUYpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ3 DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ0DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ1DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0Ng0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0K KyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyXToNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0NDkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI0NTMNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTAN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTEN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUyDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRF eGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDYw DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICAgICAgX2FsdCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5w dXQsMTk2LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgICAgICB3aGlsZSBfYWx0IT0yIGFuZCBf YWx0IT1BVE4uSU5WQUxJRF9BTFRfTlVNQkVSOg0KDQorICAgICAgICAgICAgICAgICAgICBpZiBf YWx0PT0xOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTcNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRXh0ZW5zaW9uRGF0YShsb2NhbGN0eC5E YXRhQnVmZikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjINCg0KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lu cHV0LDE5NixzZWxmLl9jdHgpDQoNCisNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQ3Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0NjUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2OQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuR3VpZE9wOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjQ2Ng0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigp DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDcxDQoNCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI0NzINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FbmRHdWlkT3ApDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 NzUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0K DQorICAgIGNsYXNzIFZmckV4dGVuc2lvbkRhdGFDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIERhdGFCdWZmPU5vbmUpOg0K DQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoN CisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5E YXRhQnVmZiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuSXNTdHJ1Y3QgPSBOb25lDQoNCisg ICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRGF0 YUJ1ZmYgPSBEYXRhQnVmZg0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgRGF0YShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EYXRhLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBE b3Qoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Eb3Qp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGFycmF5 TmFtZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJFeHRlbnNpb25EYXRhDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyRXh0ZW5zaW9uRGF0YSIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmckV4dGVuc2lvbkRhdGEoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQor DQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4dGVuc2lvbkRhdGEoc2VsZiwgRGF0YUJ1 ZmYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4dGVu c2lvbkRhdGFDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRGF0YUJ1ZmYpDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyODQsIHNlbGYuUlVMRV92ZnJFeHRl bnNpb25EYXRhKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc3DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDc4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXRhKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODINCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc5DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0ODANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODENCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQp DQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODgNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy LkRvdDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ4NA0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjQ4NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuYXJyYXlOYW1lKCkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5MA0KDQorICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDkxDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0OTINCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRN b2RhbENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisg ICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmck1vZGFs VGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudE1vZGFsDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50TW9kYWwiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRNb2RhbChzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50TW9kYWwo c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50TW9kYWxDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE1v ZGFsKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5NA0KDQorICAgICAg ICAgICAgc2VsZi52ZnJNb2RhbFRhZygpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5 NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyTW9kYWxUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJ X0lGUl9NT0RBTF9UQUdfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIE1vZGFsKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1vZGFsLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTW9kYWxUYWcNCg0KKw0KDQorICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJNb2RhbFRhZyIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck1vZGFsVGFnKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJNb2RhbFRhZyhz ZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJNb2Rh bFRhZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMjg4LCBzZWxmLlJVTEVfdmZyTW9kYWxUYWcpDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDk3DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Nb2RhbCkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAg ICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudEV4cHJl c3Npb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQor ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwcmVzc2lvbkluZm8oKQ0KDQorDQoNCisgICAg ICAgIGRlZiBhbmRUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQW5kVGVybUNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBP UihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9SKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuT1IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvbiIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjkwLCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50RXhwcmVzc2lvbikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5OQ0KDQorICAg ICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjUwNA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT1I6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI1MDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PUikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUwMQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuYW5kVGVybShsb2NhbGN0eC5FeHBJbmZvKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHByZXNzaW9uSW5mbygpDQoNCisNCg0KKyAgICAgICAgZGVmIGFuZFRlcm0oc2Vs ZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LkFuZFRlcm1Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BbmRUZXJt Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIE9SKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT1IpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5PUiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Np b25TdWINCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTIsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA3DQoNCisgICAg ICAgICAgICBzZWxmLmFuZFRlcm0obG9jYWxjdHguRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTEyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAg ICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5PUjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjUwOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9SKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1MTQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K DQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoN CisNCg0KKyAgICBjbGFzcyBBbmRUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyQW5kTGlzdCA9IFtdDQoNCisgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGJpdHdpc2Vv clRlcm0oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLkJpdHdpc2VvclRlcm1Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5CaXR3aXNlb3JUZXJtQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IEFORChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkFO RCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkFORCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2FuZFRlcm0NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRBbmRUZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QW5k VGVybShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgYW5kVGVybShzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTQsIHNl bGYuUlVMRV9hbmRUZXJtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoN CisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTE1DQoNCisgICAgICAgICAgICBz ZWxmLmJpdHdpc2VvclRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NTIwDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5BTkQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 MTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5BTkQpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTcNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLmJpdHdpc2VvclRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjUyMg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNs YXNzIEJpdHdpc2VvclRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25l DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJCaXRXaXNlT3JMaXN0ID0gW10NCg0KKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgYml0d2lzZWFu ZFRlcm0oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLkJpdHdpc2VhbmRUZXJtQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYml0d2lzZW9yVGVybQ0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEJpdHdpc2VvclRlcm0iICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRCaXR3aXNlb3JUZXJtKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBiaXR3aXNlb3JUZXJt KHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLkJpdHdpc2VvclRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhw SW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI5Niwgc2VsZi5SVUxF X2JpdHdpc2VvclRlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjMNCg0KKyAgICAgICAgICAgIHNl bGYuYml0d2lzZWFuZFRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NTI4DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI1MjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjUNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmJpdHdpc2VhbmRUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1MzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K DQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoN CisNCg0KKyAgICBjbGFzcyBCaXR3aXNlYW5kVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K DQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckJpdFdpc2VBbmRMaXN0ID0g W10NCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAg ICBkZWYgZXF1YWxUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgQml0V2lzZUFuZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VBbmQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYml0d2lzZWFuZFRlcm0NCg0KKw0KDQorICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlYW5kVGVybSIgKToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpdHdpc2VhbmRUZXJtKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBiaXR3aXNl YW5kVGVybShzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5CaXR3aXNlYW5kVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjk4LCBz ZWxmLlJVTEVfYml0d2lzZWFuZFRlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzENCg0KKyAgICAg ICAgICAgIHNlbGYuZXF1YWxUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjUzNg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUg X2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZUFuZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjUzMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VBbmQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzMNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmVxdWFsVGVybShFeHBJbmZvKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTM4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgRXF1YWxUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gW10NCg0KKyAg ICAgICAgICAgIHNlbGYuQ0lmck5vdEVxdWFsTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQ29tcGFyZVRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg ZXF1YWxUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybVN1cHBsZW1lbnRhcnlD b250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2VxdWFsVGVybQ0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybSIgKToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybShzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgZXF1YWxU ZXJtKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkVxdWFsVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJ bmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzAwLCBzZWxmLlJVTEVf ZXF1YWxUZXJtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTM5DQoNCisgICAgICAgICAgICBzZWxmLmNv bXBhcmVUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU0Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xh PT1WZnJTeW50YXhQYXJzZXIuRXF1YWwgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm90RXF1YWw6 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NDANCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVxdWFsVGVybVN1cHBsZW1lbnRhcnkobG9jYWxjdHguQ0lmckVxdWFsTGlzdCwgbG9j YWxjdHguQ0lmck5vdEVxdWFsTGlzdCwgRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU0NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0K KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQor ICAgIGNsYXNzIEVxdWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJFcXVhbExpc3Q9 Tm9uZSwgQ0lmck5vdEVxdWFsTGlzdD1Ob25lLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0 ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyTm90RXF1YWxMaXN0ID0gTm9uZQ0KDQor ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZy RXF1YWxMaXN0ID0gQ0lmckVxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyTm90RXF1 YWxMaXN0ID0gQ0lmck5vdEVxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g RXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9lcXVhbFRlcm1TdXBwbGVt ZW50YXJ5DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNl clJ1bGVDb250ZXh0KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQor ICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gY3R4LkNJZnJFcXVhbExpc3QNCg0KKyAg ICAgICAgICAgIHNlbGYuQ0lmck5vdEVxdWFsTGlzdCA9IGN0eC5DSWZyTm90RXF1YWxMaXN0DQoN CisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKw0K DQorICAgIGNsYXNzIEVxdWFsVGVybUVxdWFsUnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVu dGFyeUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuRXF1 YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAg ICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KDQorICAgICAgICBkZWYgY29tcGFyZVRlcm0o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5Db21wYXJlVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybUVxdWFsUnVsZSIgKToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybUVxdWFsUnVsZShz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEVxdWFsVGVy bU5vdEVxdWFsUnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29u dGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFy eUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAg ICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIE5vdEVxdWFs KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk5vdEVxdWFsLCAwKQ0KDQorICAgICAgICBkZWYgY29tcGFyZVRlcm0oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5Db21wYXJlVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZSIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZShzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGVxdWFsVGVybVN1 cHBsZW1lbnRhcnkoc2VsZiwgQ0lmckVxdWFsTGlzdCwgQ0lmck5vdEVxdWFsTGlzdCwgRXhwSW5m byk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJt U3VwcGxlbWVudGFyeUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBDSWZyRXF1 YWxMaXN0LCBDSWZyTm90RXF1YWxMaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzAyLCBzZWxmLlJVTEVfZXF1YWxUZXJtU3VwcGxlbWVudGFyeSkNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NTANCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5FcXVhbF06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuRXF1YWxUZXJtRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1NDYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5FcXVhbCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0 Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm0oRXhwSW5mbykNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuTm90RXF1YWxdOg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkVxdWFsVGVybU5vdEVxdWFsUnVsZUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTQ4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTm90RXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI1NDkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVUZXJtKEV4cEluZm8pDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFz cyBDb21wYXJlVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0K KyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBz ZWxmLkNJZnJMZXNzRXF1YWxMaXN0ID0gW10NCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckdyZWF0 ZXJUaGFuTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJHcmVhdGVyRXF1YWxMaXN0 ID0gW10NCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAg ICAgICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQ29tcGFy ZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9jb21wYXJlVGVybQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdENvbXBhcmVUZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q29tcGFyZVRlcm0oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQor DQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYsIEV4cEluZm8pOg0K DQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDQsIHNlbGYuUlVMRV9jb21wYXJlVGVybSkNCg0KKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU1Mg0KDQorICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTU2DQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICB3aGlsZSAoKChfbGEpICYgfjB4M2YpID09IDAgYW5kICgoMSA8 PCBfbGEpICYgKCgxIDw8IFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwpIHwgKDEgPDwgVmZyU3lu dGF4UGFyc2VyLkxlc3MpIHwgKDEgPDwgVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkgfCAo MSA8PCBWZnJTeW50YXhQYXJzZXIuR3JlYXRlcikpKSAhPSAwKToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjU1Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm1T dXBwbGVtZW50YXJ5KGxvY2FsY3R4LkNJZnJMZXNzVGhhbkxpc3QsIGxvY2FsY3R4LkNJZnJMZXNz RXF1YWxMaXN0LCBsb2NhbGN0eC5DSWZyR3JlYXRlclRoYW5MaXN0LCBsb2NhbGN0eC5DSWZyR3Jl YXRlckVxdWFsTGlzdCwgRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU1OA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IENvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lmckxlc3NUaGFuTGlzdD1Ob25l LCBDSWZyTGVzc0VxdWFsTGlzdD1Ob25lLCBDSWZyR3JlYXRlclRoYW5MaXN0PU5vbmUsIENJZnJH cmVhdGVyRXF1YWxMaXN0PU5vbmUsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJMZXNzVGhhbkxpc3QgPSBO b25lDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJMZXNzRXF1YWxMaXN0ID0gTm9uZQ0KDQorICAg ICAgICAgICAgc2VsZi5DSWZyR3JlYXRlclRoYW5MaXN0ID0gTm9uZQ0KDQorICAgICAgICAgICAg c2VsZi5DSWZyR3JlYXRlckVxdWFsTGlzdCA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IENJZnJM ZXNzVGhhbkxpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NFcXVhbExpc3QgPSBDSWZy TGVzc0VxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlclRoYW5MaXN0ID0g Q0lmckdyZWF0ZXJUaGFuTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlckVxdWFs TGlzdCA9IENJZnJHcmVhdGVyRXF1YWxMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NvbXBhcmVUZXJtU3Vw cGxlbWVudGFyeQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkN Cg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IGN0eC5DSWZyTGVzc1RoYW5M aXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJMZXNzRXF1YWxMaXN0ID0gY3R4LkNJZnJMZXNz RXF1YWxMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJHcmVhdGVyVGhhbkxpc3QgPSBjdHgu Q0lmckdyZWF0ZXJUaGFuTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlckVxdWFs TGlzdCA9IGN0eC5DSWZyR3JlYXRlckVxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gY3R4LkV4cEluZm8NCg0KKw0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDb21wYXJlVGVy bUxlc3NSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRl eHQpOiAjIGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFy eUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAg ICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIExlc3Moc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TGVzcywgMCkNCg0KKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVy bUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdENvbXBhcmVUZXJtTGVzc1J1bGUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUxlc3NSdWxlKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgQ29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29u dGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVh bGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXJFcXVhbChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVh dGVyRXF1YWwsIDApDQoNCisgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlm dFRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRDb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDb21wYXJlVGVy bUdyZWF0ZXJSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNv bnRleHQpOiAjIGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVu dGFyeUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQor ICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0 ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuR3JlYXRlciwgMCkNCg0KKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlNoaWZ0VGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgQ29tcGFyZVRlcm1MZXNz RXF1YWxSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRl eHQpOiAjIGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFy eUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAg ICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIExlc3NFcXVh bChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5MZXNzRXF1YWwsIDApDQoNCisgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5TaGlmdFRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRDb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUiICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBjb21wYXJl VGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgQ0lmckxlc3NUaGFuTGlzdCwgQ0lmckxlc3NFcXVhbExp c3QsIENJZnJHcmVhdGVyVGhhbkxpc3QsIENJZnJHcmVhdGVyRXF1YWxMaXN0LCBFeHBJbmZvKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybVN1 cHBsZW1lbnRhcnlDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmckxlc3NU aGFuTGlzdCwgQ0lmckxlc3NFcXVhbExpc3QsIENJZnJHcmVhdGVyVGhhbkxpc3QsIENJZnJHcmVh dGVyRXF1YWxMaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMzA2LCBzZWxmLlJVTEVfY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2Nw0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxl c3NdOg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBh cmVUZXJtTGVzc1J1bGVDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU1OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkxlc3MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjANCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnNoaWZ0VGVybShFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZXNzRXF1 YWxdOg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBh cmVUZXJtTGVzc0VxdWFsUnVsZUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTYxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTGVzc0VxdWFsKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuR3JlYXRlcl06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuQ29tcGFyZVRlcm1HcmVhdGVyUnVsZUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTYzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuR3JlYXRlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU2NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8pDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkdyZWF0ZXJFcXVhbF06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuQ29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2Nh bGN0eCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjUNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1NjYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnNoaWZ0VGVy bShFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0K Kw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQor DQoNCisgICAgY2xhc3MgU2hpZnRUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyU2hpZnRMZWZ0TGlzdCA9IFtdDQoNCisg ICAgICAgICAgICBzZWxmLkNJZnJTaGlmdFJpZ2h0TGlzdCA9IFtdDQoNCisgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGFkZE1pbnVzVGVybShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBzaGlmdFRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVu dGFyeUNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2hpZnRUZXJt DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U2hpZnRUZXJt IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U2hpZnRUZXJtKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBz aGlmdFRlcm0oc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuU2hpZnRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs IEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDgsIHNlbGYu UlVMRV9zaGlmdFRlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjkNCg0KKyAgICAgICAgICAgIHNl bGYuYWRkTWludXNUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3 Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1W ZnJTeW50YXhQYXJzZXIuVF9fOSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5UX18xMDoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3MA0KDQorICAgICAgICAgICAgICAgIHNlbGYu c2hpZnRUZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyU2hpZnRMZWZ0TGlzdCwgbG9jYWxj dHguQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTc1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lmclNoaWZ0TGVmdExp c3Q9Tm9uZSwgQ0lmclNoaWZ0UmlnaHRMaXN0PU5vbmUsIEV4cEluZm89Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJTaGlm dExlZnRMaXN0ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyU2hpZnRSaWdodExpc3Qg PSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAg ICBzZWxmLkNJZnJTaGlmdExlZnRMaXN0ID0gQ0lmclNoaWZ0TGVmdExpc3QNCg0KKyAgICAgICAg ICAgIHNlbGYuQ0lmclNoaWZ0UmlnaHRMaXN0ID0gQ0lmclNoaWZ0UmlnaHRMaXN0DQoNCisgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3NoaWZ0VGVybVN1cHBsZW1lbnRhcnkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBj b3B5RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorICAgICAgICAgICAgc3Vw ZXIoKS5jb3B5RnJvbShjdHgpDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdExlZnRMaXN0 ID0gY3R4LkNJZnJTaGlmdExlZnRMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdFJp Z2h0TGlzdCA9IGN0eC5DSWZyU2hpZnRSaWdodExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgU2hpZnRUZXJt UmlnaHRDb250ZXh0KFNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAj IGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCg0KKyAgICAgICAgICAg IHNlbGYuY29weUZyb20oY3R4KQ0KDQorDQoNCisgICAgICAgIGRlZiBhZGRNaW51c1Rlcm0oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5BZGRNaW51c1Rlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTaGlmdFRlcm1SaWdodCIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNoaWZ0VGVybVJpZ2h0KHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgU2hpZnRUZXJtTGVmdENvbnRl eHQoU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkg YSBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5 RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIGFkZE1pbnVzVGVybShzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkFkZE1pbnVzVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFNoaWZ0VGVybUxlZnQiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRTaGlmdFRlcm1MZWZ0KHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgc2hpZnRUZXJtU3VwcGxlbWVudGFyeShzZWxm LCBDSWZyU2hpZnRMZWZ0TGlzdCwgQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvKToNCg0KKw0K DQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1TdXBwbGVtZW50 YXJ5Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIENJZnJTaGlmdExlZnRMaXN0 LCBDSWZyU2hpZnRSaWdodExpc3QsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAzMTAsIHNlbGYuUlVMRV9zaGlmdFRlcm1TdXBwbGVtZW50YXJ5KQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4MA0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlRfXzldOg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlNoaWZ0VGVybUxlZnRDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU3Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NzcNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmFkZE1pbnVzVGVybShFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18x MF06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2hpZnRU ZXJtUmlnaHRDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU3OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzEwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc5DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNz DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAg IGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEFkZE1pbnVzVGVybUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lm ckFkZExpc3QgPSBbXQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyU3VidHJhY3RMaXN0ID0gW10N Cg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBk ZWYgbXVsdGRpdm1vZFRlcm0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5B ZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQsaSkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfYWRkTWludXNUZXJtDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtIiApOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QWRkTWludXNUZXJtKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZiwg RXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWRk TWludXNUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTIsIHNlbGYuUlVMRV9hZGRNaW51 c1Rlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODINCg0KKyAgICAgICAgICAgIHNlbGYubXVsdGRp dm1vZFRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTg2DQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRh eFBhcnNlci5UX18xMSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuYWRk TWludXNUZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyQWRkTGlzdCwgbG9jYWxjdHguQ0lm clN1YnRyYWN0TGlzdCwgRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IEFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJBZGRMaXN0PU5vbmUsIENJ ZnJTdWJ0cmFjdExpc3Q9Tm9uZSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckFkZExpc3QgPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLkNJZnJTdWJ0cmFjdExpc3QgPSBOb25lDQoNCisgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJBZGRMaXN0ID0g Q0lmckFkZExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmclN1YnRyYWN0TGlzdCA9IENJZnJT dWJ0cmFjdExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4 dCk6DQoNCisgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCg0KKyAgICAgICAgICAg IHNlbGYuQ0lmckFkZExpc3QgPSBjdHguQ0lmckFkZExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYu Q0lmclN1YnRyYWN0TGlzdCA9IGN0eC5DSWZyU3VidHJhY3RMaXN0DQoNCisgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEFk ZE1pbnVzVGVybXBBZGRDb250ZXh0KEFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVs ZUNvbnRleHQpOiAjIGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1cHBs ZW1lbnRhcnlDb250ZXh0DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikN Cg0KKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KDQorDQoNCisgICAgICAgIGRlZiBt dWx0ZGl2bW9kVGVybShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNU ZXJtcEFkZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFkZE1p bnVzVGVybXBBZGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBBZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQoQWRkTWludXNUZXJtU3VwcGxlbWVudGFy eUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0 eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuQWRkTWlu dXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAg ICAgICAgZGVmIE5lZ2F0aXZlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlLCAwKQ0KDQorICAgICAgICBkZWYgbXVsdGRp dm1vZFRlcm0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFkZE1pbnVzVGVybVN1 YnRyYWN0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QWRkTWlu dXNUZXJtU3VidHJhY3Qoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIENJZnJBZGRMaXN0LCBD SWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUsIENJZnJBZGRMaXN0LCBDSWZyU3VidHJhY3RMaXN0LCBFeHBJbmZv KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzE0LCBzZWxmLlJVTEVfYWRk TWludXNUZXJtU3VwcGxlbWVudGFyeSkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1OTMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18xMV06DQoNCisgICAgICAgICAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENvbnRleHQo c2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTg5DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTEpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm11bHRk aXZtb2RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlXToNCg0KKyAgICAgICAg ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdWJ0cmFjdENv bnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTkxDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTINCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm11bHRkaXZtb2RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4 Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBNdWx0ZGl2bW9kVGVybUNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwg RXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmck11 bHRpcGx5TGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJEaXZpZGVMaXN0ID0gW10N Cg0KKyAgICAgICAgICAgIHNlbGYuQ0lmck1vZHVsb0xpc3QgPSBbXQ0KDQorICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBjYXN0VGVybShzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkNhc3RUZXJtQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIG11 bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5 Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1T dXBwbGVtZW50YXJ5Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9t dWx0ZGl2bW9kVGVybQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdE11bHRkaXZtb2RUZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0TXVsdGRpdm1vZFRlcm0oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIG11bHRkaXZtb2RUZXJtKHNlbGYsIEV4cEluZm8pOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTYsIHNlbGYuUlVMRV9tdWx0ZGl2bW9kVGVybSkNCg0K KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjU5NQ0KDQorICAgICAgICAgICAgc2VsZi5jYXN0VGVybShFeHBJbmZv KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlICgoKF9sYSkgJiB+MHgzZikgPT0gMCBhbmQgKCgx IDw8IF9sYSkgJiAoKDEgPDwgVmZyU3ludGF4UGFyc2VyLlRfXzEyKSB8ICgxIDw8IFZmclN5bnRh eFBhcnNlci5UX18xMykgfCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuU2xhc2gpKSkgIT0gMCk6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTYNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyTXVsdGlwbHlMaXN0 LCBsb2NhbGN0eC5DSWZyRGl2aWRlTGlzdCwgbG9jYWxjdHguQ0lmck1vZHVsb0xpc3QsIEV4cElu Zm8pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDENCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBNdWx0ZGl2bW9kVGVybVN1cHBs ZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJNdWx0aXBseUxpc3Q9Tm9uZSwgQ0lmckRpdmlkZUxpc3Q9 Tm9uZSwgQ0lmck1vZHVsb0xpc3Q9Tm9uZSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlz dCA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckRpdmlkZUxpc3QgPSBOb25lDQoNCisg ICAgICAgICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyTXVsdGlwbHlMaXN0ID0g Q0lmck11bHRpcGx5TGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRGl2aWRlTGlzdCA9IENJ ZnJEaXZpZGVMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gQ0lmck1v ZHVsb0xpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5DQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0 KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAgICAgICAg c2VsZi5DSWZyTXVsdGlwbHlMaXN0ID0gY3R4LkNJZnJNdWx0aXBseUxpc3QNCg0KKyAgICAgICAg ICAgIHNlbGYuQ0lmckRpdmlkZUxpc3QgPSBjdHguQ0lmckRpdmlkZUxpc3QNCg0KKyAgICAgICAg ICAgIHNlbGYuQ0lmck1vZHVsb0xpc3QgPSBjdHguQ0lmck1vZHVsb0xpc3QNCg0KKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgTXVsdGRpdm1vZFRlcm1EaXZDb250ZXh0KE11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQ YXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1v ZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJzZXIpDQoNCisgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQorICAg ICAgICBkZWYgU2xhc2goc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU2xhc2gsIDApDQoNCisgICAgICAgIGRlZiBjYXN0VGVybShzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkNhc3RUZXJtQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0TXVsdGRpdm1vZFRlcm1EaXYiICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybURpdihzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorICAgIGNsYXNzIE11bHRkaXZtb2RUZXJtTXVs Q29udGV4dChNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAj IGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNv bnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAg ICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIGNhc3RUZXJtKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVybU11bCIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE11bHRkaXZtb2RUZXJtTXVsKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgTXVsdGRpdm1vZFRlcm1N b2R1bG9Db250ZXh0KE11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4 dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50 YXJ5Q29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQoNCisg ICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQorICAgICAgICBkZWYgY2FzdFRl cm0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE11bHRkaXZtb2RUZXJtTW9kdWxvIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TXVsdGRpdm1vZFRlcm1Nb2R1 bG8oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBt dWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgQ0lmck11bHRpcGx5TGlzdCwgQ0lmckRp dmlkZUxpc3QsIENJZnJNb2R1bG9MaXN0LCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmck11bHRpcGx5TGlzdCwgQ0lmckRpdmlk ZUxpc3QsIENJZnJNb2R1bG9MaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzE4LCBzZWxmLlJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5KQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwOA0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlRfXzEyXToNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5NdWx0ZGl2bW9kVGVybU11bENvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjAyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fMTIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 MDMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlNsYXNoXToNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5NdWx0ZGl2bW9kVGVybURpdkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2xhc2gpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDUNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRf XzEzXToNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5NdWx0 ZGl2bW9kVGVybU1vZHVsb0NvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNjA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fMTMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDcNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAg ICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAg IHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDYXN0VGVybUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVEJP YmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLlRVT2JqID0gTm9uZQ0KDQorICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBhdG9tVGVybShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkF0b21UZXJtQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBCb29sZWFuKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQm9vbGVhbikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJvb2xlYW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlVpbnQ2NCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDMyKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVWludDMyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50MTYo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5VaW50MTYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MTYsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFVp bnQ4KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVWlu dDgpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50OCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX2Nhc3RUZXJtDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0Q2FzdFRlcm0iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDYXN0VGVybShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisN Cg0KKyAgICBkZWYgY2FzdFRlcm0oc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDMyMCwgc2VsZi5SVUxFX2Nhc3RUZXJtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjE1DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9hbHQg PSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIxNyxzZWxmLl9jdHgp DQoNCisgICAgICAgICAgICB3aGlsZSBfYWx0IT0yIGFuZCBfYWx0IT1BVE4uSU5WQUxJRF9BTFRf TlVNQkVSOg0KDQorICAgICAgICAgICAgICAgIGlmIF9hbHQ9PTE6DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjEwDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI2MTENCg0KKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSA4MCkpICYgfjB4 M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gODApKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkJvb2xlYW4gLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50NjQgLSA4MCkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50MzIgLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5VaW50MTYgLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50OCAtIDgwKSkp KSAhPSAwKSk6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjEyDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2MTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgICAgICBfYWx0ID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCwyMTcsc2VsZi5fY3R4KQ0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYxOA0KDQorICAgICAgICAgICAgc2VsZi5hdG9tVGVybShFeHBJbmZvKQ0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgQXRvbVRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVm IHZmckV4cHJlc3Npb25DYXRlbmF0ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25DYXRlbmF0 ZUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2go c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2hDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Np b25NYXRjaDJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRXhwcmVzc2lv blBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25Db25zdGFudChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJl c3Npb25Db25zdGFudENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJFeHBy ZXNzaW9uVW5hcnlPcChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJFeHByZXNzaW9uVGVybmFyeU9wQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIHZmckV4cHJlc3Npb25NYXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFw Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIE5PVChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OT1QsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIGF0b21UZXJtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2F0b21UZXJtDQoNCisNCg0KKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QXRvbVRlcm0iICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBdG9tVGVybShzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgYXRvbVRlcm0oc2VsZiwgRXhw SW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQXRvbVRl cm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMiwgc2VsZi5SVUxFX2F0b21UZXJtKQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzMg0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBz ZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIxOCxzZWxmLl9jdHgpDQoN CisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 MjANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25DYXRlbmF0ZShFeHBJbmZv KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8g PT0gMjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjENCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmckV4cHJlc3Npb25NYXRjaChFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI2MjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25NYXRj aDIoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAg IGVsaWYgbGFfID09IDQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjIzDQoNCisgICAg ICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9uUGFyZW4oRXhwSW5mbykNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDU6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjI0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHBy ZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorDQoNCisgICAgICAgICAgICBlbGlmIGxhXyA9PSA2Og0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYyNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbkNvbnN0YW50 KEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICBl bGlmIGxhXyA9PSA3Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyNg0KDQorICAgICAg ICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvblVuYXJ5T3AoRXhwSW5mbykNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDg6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjI3DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHBy ZXNzaW9uVGVybmFyeU9wKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoN CisgICAgICAgICAgICBlbGlmIGxhXyA9PSA5Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjYyOA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbk1hcChFeHBJbmZvKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0g MTA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyOQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5PVCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjYzMA0KDQorICAgICAgICAgICAgICAgIHNlbGYuYXRvbVRlcm0oRXhwSW5mbykN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09 IDExOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzENCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmckV4cHJlc3Npb25NYXRjaDIoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToN Cg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxj dHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x LCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQor ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DT2Jq ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisg ICAgICAgIGRlZiBDYXRlbmF0ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DYXRlbmF0ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg T3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJD b250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZQ0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25DYXRlbmF0ZSIgKToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25DYXRl bmF0ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgdmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzI0LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkNhdGVuYXRl KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzNA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjYzNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzYNCg0KKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjYzNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzOA0KDQorICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjM5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRXhwcmVzc2lvbk1hdGNoQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJ bmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5NT2JqID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAg IGRlZiBNYXRjaChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5NYXRjaCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LGkpDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25NYXRjaCIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25NYXRjaChzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvbk1h dGNoKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzI2LCBz ZWxmLlJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjY0MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TWF0Y2gpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0Mg0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI2NDMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0NA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY0NQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi KCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ2DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQor ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRXhwcmVz c2lvbk1hdGNoMkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAg ICAgICAgICAgIHNlbGYuTTJPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIE1hdGNoMihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXRjaDIsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1h KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ3Vp ZERlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gyDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoMiIgKToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25NYXRjaDIo c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHZmckV4cHJlc3Npb25NYXRjaDIoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbk1hdGNoMkNvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzI4LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoMikNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk1hdGNoMikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjQ5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1MA0KDQorICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjUxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUyDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTMN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTQNCg0KKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmlu aXRpb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTUNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJF eHByZXNzaW9uUGFyZW5Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVm IE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25QYXJlbg0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Np b25QYXJlbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4 cHJlc3Npb25QYXJlbihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoN CisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvblBhcmVuKHNlbGYsIEV4cEluZm8pOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25QYXJlbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzMwLCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvblBhcmVu KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1Nw0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2NTgNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1OQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZm ckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0K KyAgICAgICAgZGVmIGR1cEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiB2YXJlcXZhbEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZhcmVxdmFsRXhw Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGlkZXF2YWxFeHAoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5JZGVxdmFsRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGlkZXFp ZEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLklkZXFpZEV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBpZGVxdmFsbGlzdEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLklkZXF2YWxsaXN0RXhwQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHF1ZXN0aW9ucmVmMUV4cChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlF1ZXN0aW9ucmVmMUV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBy dWxlcmVmRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBzdHJpbmdyZWYxRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMUV4cENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBwdXNodGhpc0V4cChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlB1c2h0aGlzRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHNlY3Vy aXR5RXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0RXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR2V0RXhwQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lv bkJ1aWxkSW5GdW5jdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4cHJlc3Npb25CdWlsZEluRnVu Y3Rpb24oc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMzMyLCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbikNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzINCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5EdXBdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2MQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZHVwRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhckVxVmFsXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZh cmVxdmFsRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLklkRXFWYWxdOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjY2Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuaWRlcXZhbEV4cChF eHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JZEVxSWRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjY2NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuaWRlcWlkRXhwKEV4cEluZm8pDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLklkRXFWYWxMaXN0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmlkZXF2YWxsaXN0RXhwKEV4cEluZm8pDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlF1ZXN0aW9uUmVmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjYNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9ucmVmMUV4cChFeHBJbmZvKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5SdWxlUmVmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDcpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjcNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnJ1bGVyZWZFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5n UmVmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjgNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0cmluZ3JlZjFFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXNdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu cHVzaHRoaXNFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHldOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2NzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnNlY3VyaXR5 RXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdldF06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY3MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ2V0RXhwKEV4cEluZm8pDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBE dXBFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAg ICAgICBzZWxmLkRPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJ bmZvDQoNCisNCg0KKyAgICAgICAgZGVmIER1cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EdXAsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV9kdXBFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXREdXBFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXREdXBFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIGR1cEV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzNCwg c2VsZi5SVUxFX2R1cEV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 NzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkR1cCkNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFZhcmVxdmFsRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAg IGRlZiBWYXJFcVZhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5WYXJFcVZhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFyKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlZhciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBMZXNzRXF1YWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMZXNzKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lkxlc3MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXJFcXVhbChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1 YWwsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXIoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlciwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZhcmVxdmFsRXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmFyZXF2YWxFeHAiICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWYXJlcXZhbEV4cChzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmFyZXF2YWxFeHAoc2VsZiwgRXhw SW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmFyZXF2 YWxFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzNiwgc2VsZi5SVUxFX3ZhcmVxdmFsRXhw KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3Ng0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFyRXFWYWwpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjY3Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVmFyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzgNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNjc5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4MA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjkxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjgxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 ODINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2ODMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5M ZXNzRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODQNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkxlc3NdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg1DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVzcykNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjY4Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4Nw0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjY4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlcl06DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2ODkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5HcmVhdGVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjkwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgSWRlcXZhbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cg0KKyAgICAgICAgICAgIHNlbGYuSSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkRhdGFG aWVsZE5hbWUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgSWRFcVZhbChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JZEVxVmFsLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBFcXVhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVt YmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3NF cXVhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTGVzcyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBHcmVhdGVyRXF1YWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBHcmVhdGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9pZGVxdmFsRXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0SWRlcXZhbEV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dElkZXF2YWxFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQor DQoNCisgICAgZGVmIGlkZXF2YWxFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuSWRlcXZhbEV4cENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMzM4LCBzZWxmLlJVTEVfaWRlcXZhbEV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2OTMNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5JZEVxVmFsKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 OTQNCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk1DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5MZXNzRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTgN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkxlc3NdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk5 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVzcykNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMA0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNz DQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVx dWFsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlcl06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDMNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0K Kw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQor DQoNCisgICAgY2xhc3MgSWRlcWlkRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAg ICAgICBzZWxmLkUgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTEUgPSBOb25l ICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAg ICAgICAgc2VsZi5CRSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5CID0gTm9u ZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZShzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRh RmllbGROYW1lQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVl c3Rpb25EYXRhRmllbGROYW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIElk RXFJZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5JZEVxSWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBMZXNzRXF1YWwoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBMZXNzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0 ZXJFcXVhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5HcmVhdGVyRXF1YWwsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXIo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuR3JlYXRlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2lkZXFpZEV4cA0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdElkZXFpZEV4cCIgKToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXFpZEV4cChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgaWRlcWlk RXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLklkZXFpZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJ bmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQwLCBzZWxmLlJVTEVf aWRlcWlkRXhwKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwNw0KDQor ICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklkRXFJ ZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA4DQoNCisgICAgICAgICAgICBzZWxm LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjcxOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkVxdWFsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjcwOQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkUgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5FcXVhbCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcx MA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjcxMQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkxFID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTGVzc0VxdWFsKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzEy DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5MZXNzXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxMw0K DQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5MZXNzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5H cmVhdGVyRXF1YWxdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE1DQoNCisg ICAgICAgICAgICAgICAgbG9jYWxjdHguQkUgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5H cmVhdGVyRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTYNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkdyZWF0ZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE3DQoNCisg ICAgICAgICAgICAgICAgbG9jYWxjdHguQiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdy ZWF0ZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTgNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBO b1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBJZGVxdmFsbGlzdEV4 cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgSWRFcVZhbExpc3Qo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuSWRFcVZhbExpc3QsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFcXVhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfaWRlcXZhbGxpc3RFeHANCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRJZGVxdmFsbGlzdEV4cCIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXF2YWxsaXN0RXhwKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBpZGVxdmFsbGlzdEV4 cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5JZGVxdmFsbGlzdEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQyLCBzZWxmLlJV TEVfaWRlcXZhbGxpc3RFeHApDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjENCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3MjINCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmll bGROYW1lKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzIzDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FcXVhbCkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzI1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3 aGlsZSBUcnVlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzI0DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzI3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBub3QgKF9sYT09VmZyU3ludGF4UGFyc2VyLk51 bWJlcik6DQoNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrDQoNCisNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZm clF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLlFJZCA9IEVGSV9RVUVTVElPTl9JRF9J TlZBTElEDQoNCisgICAgICAgICAgICBzZWxmLk1hc2sgPSAwDQoNCisgICAgICAgICAgICBzZWxm LlZhcklkU3RyID0gJycNCg0KKyAgICAgICAgICAgIHNlbGYuTGluZSA9IE5vbmUNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAgICAgICAgc2Vs Zi5RSWQgPSBjdHguUUlkDQoNCisgICAgICAgICAgICBzZWxmLk1hc2sgPSBjdHguTWFzaw0KDQor ICAgICAgICAgICAgc2VsZi5WYXJJZFN0ciA9IGN0eC5WYXJJZFN0cg0KDQorICAgICAgICAgICAg c2VsZi5MaW5lID0gY3R4LkxpbmUNCg0KKw0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBh cnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhIFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlv bkRhdGFGaWVsZE5hbWVDb250ZXh0DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cnNlcikNCg0KKyAgICAgICAgICAgIHNlbGYuU04yID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAg ICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRp ZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorICAgICAgICBkZWYgRG90KHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRG90LCBpKQ0KDQorICAgICAgICBkZWYgYXJyYXlOYW1lKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5BcnJheU5h bWVDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BcnJheU5hbWVDb250 ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMiIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyUXVlc3Rpb25EYXRh RmllbGROYW1lUnVsZTFDb250ZXh0KFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxl Q29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmll bGROYW1lQ29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQoN CisgICAgICAgICAgICBzZWxmLlNOMSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2Vs Zi5JID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0K Kw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisgICAg ICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMSIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUx KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy UXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzQ0LCBzZWxmLlJVTEVfdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKQ0KDQorICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzQxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2Vs Zi5faW5wdXQsMjI1LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQor ICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0 YUZpZWxkTmFtZVJ1bGUxQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI3MjkNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjEgPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzMwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 MzENCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5JID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzMyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0g MjoNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzMzDQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguU04yID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjczOA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuRG90Og0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczNA0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNzM1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXJy YXlOYW1lKCkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDANCg0KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAg ICAgICBwYXNzDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgQXJyYXlOYW1lQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuU3Vi U3RyID0gJycNCg0KKyAgICAgICAgICAgIHNlbGYuU3ViU3RyWiA9ICcnDQoNCisgICAgICAgICAg ICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRp ZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuQnJh Y2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VCcmFja2V0 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2FycmF5TmFtZQ0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFycmF5TmFtZSIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFycmF5TmFtZShzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgYXJyYXlOYW1lKHNlbGYp Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzQ2LCBzZWxmLlJVTEVfYXJyYXlOYW1lKQ0KDQorICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzQzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDcNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzQ0DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDUNCg0KKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNzQ2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFF1ZXN0 aW9ucmVmMUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgUXVl c3Rpb25SZWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuUXVlc3Rpb25SZWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJl bihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcXVlc3Rpb25yZWYxRXhwDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UXVlc3Rpb25yZWYxRXhwIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb25yZWYxRXhwKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBx dWVzdGlvbnJlZjFFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25yZWYxRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAzNDgsIHNlbGYuUlVMRV9xdWVzdGlvbnJlZjFFeHApDQoNCisgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDkN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzUxDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlciBvciBfbGE9PVZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1 Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0K DQorICAgIGNsYXNzIFJ1bGVyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAg ICAgICAgZGVmIFJ1bGVSZWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuUnVsZVJlZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3Bl blBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRp ZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9ydWxlcmVm RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UnVsZXJl ZkV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFJ1bGVyZWZF eHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIHJ1bGVyZWZFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzUw LCBzZWxmLlJVTEVfcnVsZXJlZkV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3NTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJ1bGVS ZWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1NQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3NTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1Nw0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNs YXNzIFN0cmluZ3JlZjFFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25l DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAg ZGVmIFN0cmluZ1JlZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3N0cmluZ3JlZjFFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRTdHJpbmdyZWYxRXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0U3RyaW5ncmVmMUV4cChzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgc3RyaW5ncmVmMUV4cChzZWxmLCBFeHBJ bmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdHJpbmdy ZWYxRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNTIsIHNlbGYuUlVMRV9zdHJpbmdyZWYx RXhwKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1OQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3NjANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY2DQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW5dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzYxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjINCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3NjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzY1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjgNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBQdXNodGhp c0V4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgUHVzaFRoaXMo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuUHVzaFRoaXMsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9wdXNodGhpc0V4cA0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFB1c2h0aGlzRXhw IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHVzaHRoaXNFeHAo c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHB1c2h0aGlzRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlB1c2h0aGlzRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNTQs IHNlbGYuUlVMRV9wdXNodGhpc0V4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3NzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlB1c2hU aGlzKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgU2VjdXJpdHlFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisN Cg0KKyAgICAgICAgZGVmIFNlY3VyaXR5KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5LCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBndWlk RGVmaW5pdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3NlY3VyaXR5RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0U2VjdXJpdHlFeHAiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRTZWN1cml0eUV4cChzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgc2VjdXJpdHlFeHAoc2VsZiwgRXhwSW5m byk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlF eHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1Niwgc2VsZi5SVUxFX3NlY3VyaXR5RXhwKQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3Mg0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHkpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjc3Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NzQNCg0KKyAgICAgICAg ICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NzUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBOdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuVmFyVHlwZSA9IE5v bmUNCg0KKw0KDQorICAgICAgICBkZWYgTnVtZXJpY1NpemVPbmUoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmUs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWVyaWNTaXplVHdvKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdv LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1lcmljU2l6ZUZvdXIoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVG b3VyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1lcmljU2l6ZUVpZ2h0KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNT aXplRWlnaHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9udW1lcmljVmFyU3RvcmVU eXBlDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TnVtZXJp Y1ZhclN0b3JlVHlwZSIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dE51bWVyaWNWYXJTdG9yZVR5cGUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIG51bWVyaWNWYXJTdG9yZVR5cGUoc2VsZik6DQoNCisNCg0K KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1ZhclN0b3JlVHlwZUNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzU4LCBzZWxmLlJVTEVfbnVtZXJpY1ZhclN0b3JlVHlwZSkNCg0KKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjc3Nw0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMjM3KSkgJiB+MHgzZikgPT0gMCBhbmQg KCgxIDw8IChfbGEgLSAyMzcpKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXpl T25lIC0gMjM3KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvIC0gMjM3 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRm91ciAtIDIzNykpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0IC0gMjM3KSkpKSAhPSAwKSk6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgR2V0RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0K DQorICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IEVGSV9WQVJTVE9SRV9JTkZPKCkNCg0KKyAg ICAgICAgICAgIHNlbGYuR09iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgR2V0KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdldCwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg dmZyU3RvcmFnZVZhcklkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIG51bWVyaWNW YXJTdG9yZVR5cGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9nZXRFeHANCg0KKw0KDQorICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRHZXRFeHAiICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRHZXRFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K DQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGdldEV4cChzZWxmLCBFeHBJbmZvKToNCg0K Kw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDM2MCwgc2VsZi5SVUxFX2dldEV4cCkNCg0KKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjc3OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR2V0KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NzgxDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChsb2NhbGN0eC5CYXNlSW5m bywgRmFsc2UpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc4Ng0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgyDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3ODQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzg1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5udW1lcmljVmFyU3RvcmVUeXBlKCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjc4OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6 DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgVHJ1ZVN5bWJvbChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UcnVlU3lt Ym9sLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBGYWxzZVN5bWJvbChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GYWxzZVN5bWJvbCwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgT25lKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZSwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgT25lcyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PbmVzLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBaZXJvKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlplcm8sIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIFVuZGVmaW5lZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VbmRlZmluZWQsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFZlcnNpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmVyc2lvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJl c3Npb25Db25zdGFudA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmckV4cHJlc3Npb25Db25zdGFudCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25Db25zdGFudChzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvbkNvbnN0YW50 KHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzYyLCBz ZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzkwDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg bm90KCgoKChfbGEgLSAyMDkpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDIwOSkp ICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuVHJ1ZVN5bWJvbCAtIDIwOSkpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5GYWxzZVN5bWJvbCAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5PbmUgLSAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT25lcyAtIDIwOSkpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5aZXJvIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlVuZGVmaW5lZCAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WZXJzaW9uIC0gMjA5 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWJlciAtIDIwOSkpKSkgIT0gMCkpOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydE1hdGNoKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoN CisgICAgICAgIGRlZiBsZW5ndGhFeHAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYml0d2lzZW5vdEV4cChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkJp dHdpc2Vub3RFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgcXVlc3Rpb24y M3JlZkV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgc3RyaW5ncmVmMkV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjJF eHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdG9ib29sRXhwKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVG9ib29sRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHRvc3Ry aW5nRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVG9zdHJpbmdFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgdW5pbnRFeHAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5VbmludEV4cENvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiB0b3VwcGVyRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG91cHBlckV4 cENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB0b2x3ZXJFeHAoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5Ub2x3ZXJFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgc2V0RXhw KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25VbmFyeU9wIiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvblVuYXJ5T3Aoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4cHJl c3Npb25VbmFyeU9wKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAzNjQsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcCkNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDINCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZW5n dGhdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5Mg0KDQorICAgICAgICAgICAgICAg IHNlbGYubGVuZ3RoRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VOb3RdOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuYml0 d2lzZW5vdEV4cChFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZhbF06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5xdWVz dGlvbjIzcmVmRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZlZhbF06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdHJp bmdyZWYyRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJvb2xWYWxdOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjc5Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYudG9ib29sRXhwKEV4 cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbF06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzk3DQoNCisgICAgICAgICAgICAgICAgc2VsZi50b3N0cmluZ0V4cChFeHBJbmZvKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5VbkludFZhbF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA3KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi51bmludEV4cChFeHBJbmZvKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5Ub1VwcGVyXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnRvdXBwZXJFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNz DQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVG9Mb3dlcl06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODAwDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi50b2x3ZXJFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2V0XToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEwKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODAxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zZXRFeHAoRXhwSW5m bykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIExlbmd0aEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cg0KKyAgICAgICAgICAgIHNlbGYuTE9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgTGVuZ3RoKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlbmd0aCwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg Q2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf bGVuZ3RoRXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 TGVuZ3RoRXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TGVu Z3RoRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiBsZW5ndGhFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NjYsIHNlbGYuUlVMRV9sZW5ndGhFeHApDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODA0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZW5n dGgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4MDYNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNw0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEJpdHdpc2Vu b3RFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAg ICAgICBzZWxmLkJXTk9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU5vdChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90LCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9i aXR3aXNlbm90RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0Qml0d2lzZW5vdEV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdEJpdHdpc2Vub3RFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0K Kw0KDQorDQoNCisgICAgZGVmIGJpdHdpc2Vub3RFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0K KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lzZW5vdEV4cENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzY4LCBzZWxmLlJVTEVfYml0d2lzZW5vdEV4cCkNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VOb3QpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgxMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTENCg0KKyAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgxMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQor ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisN Cg0KKw0KDQorICAgIGNsYXNzIFF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9u ZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZv DQoNCisNCg0KKyAgICAgICAgZGVmIFF1ZXN0aW9uUmVmVmFsKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgRGV2aWNlUGF0aChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5E ZXZpY2VQYXRoLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGd1 aWREZWZpbml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9uMjNyZWZFeHANCg0KKw0KDQorICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRRdWVzdGlvbjIzcmVmRXhwIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb24yM3JlZkV4cChz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg cXVlc3Rpb24yM3JlZkV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAzNzAsIHNlbGYuUlVMRV9xdWVzdGlvbjIzcmVmRXhwKQ0KDQorICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODE0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJl ZlZhbCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE1DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjgyMw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aDoNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjgxNg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkRldmljZVBhdGgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTcN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE4DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4MTkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjAN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODIyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 MzANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlV1aWQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VdWlkKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI2DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjgyNw0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI4DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4MzINCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgzMw0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFN0 cmluZ3JlZjJFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisg ICAgICAgICAgICBzZWxmLlNSMk9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nUmVmVmFsKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Jl ZlZhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfc3RyaW5ncmVmMkV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFN0cmluZ3JlZjJFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRTdHJpbmdyZWYyRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBzdHJpbmdyZWYyRXhwKHNlbGYsIEV4cEluZm8p Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjJF eHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3Miwgc2VsZi5SVUxFX3N0cmluZ3JlZjJFeHAp DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM1DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZWYWwpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgzNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzcNCg0KKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgzOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFs bHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFRvYm9vbEV4cENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVEJPYmogPSBOb25l DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAg ZGVmIEJvb2xWYWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQm9vbFZhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVu KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG9ib29sRXhwDQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG9ib29sRXhwIiApOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9ib29sRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB0b2Jvb2xFeHAoc2VsZiwgRXhwSW5m byk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG9ib29sRXhw Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzQsIHNlbGYuUlVMRV90b2Jvb2xFeHApDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQwDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Cb29sVmFsKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4NDENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQyDQoNCisgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4NDMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBUb3N0cmluZ0V4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K DQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVFNPYmogPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmlu Z1ZhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdWYWwsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Q29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b3N0cmluZ0V4 cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvc3RyaW5n RXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9zdHJpbmdF eHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIHRvc3RyaW5nRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NzYsIHNlbGYuUlVMRV90b3N0cmluZ0V4cCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0NQ0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVmFsKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4NTANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzE0Og0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODQ2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fMTQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDcN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQ4DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODQ5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTINCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODUzDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTQNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBVbmludEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cg0KKyAgICAgICAgICAgIHNlbGYuVFVPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFVuSW50VmFsKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuSW50VmFs LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV91bmludEV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFVuaW50RXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VW5pbnRFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHVuaW50RXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlVuaW50RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NzgsIHNlbGYuUlVMRV91bmludEV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4NTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVuSW50 VmFsKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTcNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODU4DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTkNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBUb3VwcGVy RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5n U3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAg ICAgc2VsZi5UVU9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCg0KKw0KDQorICAgICAgICBkZWYgVG9VcHBlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ub1VwcGVyLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVu KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b3VwcGVyRXhw DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG91cHBlckV4 cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRvdXBwZXJFeHAo c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHRvdXBwZXJFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVG91cHBlckV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgwLCBz ZWxmLlJVTEVfdG91cHBlckV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI4NjENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2Mg0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4NjMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yigp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2NA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFRvbHdlckV4cENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNl bGYuVExPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoN CisNCg0KKyAgICAgICAgZGVmIFRvTG93ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVG9Mb3dlciwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG9sd2VyRXhwDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG9sd2VyRXhwIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9sd2VyRXhwKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB0b2x3ZXJF eHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVG9sd2VyRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cElu Zm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODIsIHNlbGYuUlVMRV90 b2x3ZXJFeHApDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY2DQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ub0xvd2VyKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4NjcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY4DQoN CisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4NjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBm aW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVy biBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTZXRFeHBDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cElu Zm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0g RUZJX1ZBUlNUT1JFX0lORk8oKQ0KDQorICAgICAgICAgICAgc2VsZi5UU09iaiA9IE5vbmUNCg0K KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYg U2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlNldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RvcmFnZVZhcklkKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RvcmFnZVZhcklkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1h KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNvbW1hLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBudW1lcmljVmFy U3RvcmVUeXBlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1ZhclN0b3JlVHlwZUNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2V0RXhwDQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U2V0RXhwIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0U2V0RXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBzZXRFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisN Cg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAzODQsIHNlbGYuUlVMRV9zZXRFeHApDQoNCisgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NzENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNldCkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODcyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3 Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFzZUluZm8s IEZhbHNlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzgNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3NA0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjg3NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODc2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3Nw0KDQorICAgICAgICAgICAgICAg IHNlbGYubnVtZXJpY1ZhclN0b3JlVHlwZSgpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI4ODANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODENCg0KKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjg4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmckV4cHJlc3Npb25UZXJuYXJ5T3BDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4 cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGNvbmRpdGlvbmFsRXhwKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZmlu ZEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkZpbmRFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgbWlkRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIHRva2VuRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG9rZW5FeHBDb250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgc3BhbkV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25UZXJu YXJ5T3ANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJF eHByZXNzaW9uVGVybmFyeU9wIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyRXhwcmVzc2lvblRlcm5hcnlPcChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvblRlcm5hcnlPcChzZWxm LCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJFeHByZXNzaW9uVGVybmFyeU9wQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs IEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODYsIHNlbGYu UlVMRV92ZnJFeHByZXNzaW9uVGVybmFyeU9wKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjg4OQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNvbmRdOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjg4NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29uZGl0aW9u YWxFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRmluZF06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODg1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5maW5kRXhwKEV4cEluZm8pDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk1pZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg2DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5taWRFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVG9rXToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODcNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnRva2VuRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlNwYW5dOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3BhbkV4cChFeHBJbmZv KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgQ29uZGl0aW9uYWxFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBO b25lDQoNCisgICAgICAgICAgICBzZWxmLkNPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIENvbmQoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29uZCwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg Q29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NvbmRpdGlvbmFsRXhwDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q29uZGl0aW9uYWxF eHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb25kaXRpb25h bEV4cChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgY29uZGl0aW9uYWxFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM4OCwgc2VsZi5SVUxFX2NvbmRpdGlvbmFsRXhwKQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjg5MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29uZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODkyDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjg5Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk0DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX18xNSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODk1DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTYNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI4OTcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg5OA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEZpbmRF eHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdT dGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAg ICBzZWxmLkZPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZv DQoNCisNCg0KKyAgICAgICAgZGVmIEZpbmQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRmluZCwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmluZEZv cm1hdChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkZpbmRGb3JtYXRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4 dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2Zp bmRFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5k RXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmluZEV4cChz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg ZmluZEV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5GaW5kRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4 cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTAsIHNlbGYuUlVM RV9maW5kRXhwKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTAwDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5GaW5kKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 MDENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTAyDQoNCisgICAgICAgICAgICBzZWxmLmZp bmRGb3JtYXQoRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTA3DQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDMN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDQNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmZpbmRGb3JtYXQoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkwOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyOTEwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTExDQoNCisg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5MTINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MTMNCg0KKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjkxNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkxNQ0KDQorICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTE2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgRmluZEZvcm1hdENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25l KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRm9ybWF0ID0gMA0KDQorICAg ICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBTZW5z aXRpdmUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2Vuc2l0aXZlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBJbnNlbnNpdGl2ZShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5JbnNlbnNpdGl2ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2ZpbmRGb3JtYXQN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRm9ybWF0 IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmluZEZvcm1hdChz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg ZmluZEZvcm1hdChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5GaW5kRm9ybWF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTIsIHNl bGYuUlVMRV9maW5kRm9ybWF0KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE4DQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KF9sYT09VmZy U3ludGF4UGFyc2VyLkluc2Vuc2l0aXZlIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlNlbnNpdGl2 ZSk6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUo KQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQor DQoNCisgICAgY2xhc3MgTWlkRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5NT2JqID0gTm9uZQ0KDQorICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBNaWQoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWlkLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0K DQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBD b21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X21pZEV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE1p ZEV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE1pZEV4cChz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg bWlkRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLk1pZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJ bmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzk0LCBzZWxmLlJVTEVf bWlkRXhwKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyMA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWlkKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5MjENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIyDQoNCisgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5MjMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MjQNCg0KKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjkyNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyNg0KDQorICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTI3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0K Kw0KDQorDQoNCisgICAgY2xhc3MgVG9rZW5FeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLlRPYmogPSBOb25lDQoNCisgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFRvayhzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5U b2ssIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEV4cHJlc3Npb25TdWJDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdG9rZW5FeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRUb2tlbkV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFRva2VuRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiB0b2tlbkV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Ub2tlbkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMzk2LCBzZWxmLlJVTEVfdG9rZW5FeHApDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTI5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U b2spDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzMA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5MzENCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzMg0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkzMw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM0DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy OTM1DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAg ICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAg IHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTcGFuRXhwQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x LCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQor ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5TT2Jq ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisg ICAgICAgIGRlZiBTcGFuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlNwYW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJl bihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBzcGFuRmxhZ3Moc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlNwYW5GbGFnc0NvbnRleHQpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNwYW5GbGFnc0NvbnRleHQsaSkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3BhbkV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFNwYW5FeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRTcGFuRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0K DQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBzcGFuRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDM5OCwgc2VsZi5SVUxFX3NwYW5FeHApDQoNCisgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 MzgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNwYW4pDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 NDANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0Mg0K DQorICAgICAgICAgICAgc2VsZi5zcGFuRmxhZ3MoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5NDcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjk0Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0NA0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3BhbkZsYWdzKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjk0OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUx DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTMNCg0K KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjk1NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk1NQ0KDQorICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgU3BhbkZsYWdzQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmxhZyA9 IDANCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgTGFzdE5vbk1hdGNoKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhc3ROb25NYXRjaCwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgRmlyc3ROb25NYXRjaChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5GaXJzdE5vbk1hdGNoLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfc3BhbkZsYWdzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0U3BhbkZsYWdzIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0U3BhbkZsYWdzKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoN CisNCg0KKw0KDQorICAgIGRlZiBzcGFuRmxhZ3Moc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU3BhbkZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDAsIHNl bGYuUlVMRV9zcGFuRmxhZ3MpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTgNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAt IDI0NikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMjQ2KSkgJiAoKDEgPDwgKFZm clN5bnRheFBhcnNlci5MYXN0Tm9uTWF0Y2ggLSAyNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuRmlyc3ROb25NYXRjaCAtIDI0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIg LSAyNDYpKSkpICE9IDApKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5 Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJFeHByZXNzaW9uTWFwQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBF eHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAg ICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5NT2JqID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAg ICAgIGRlZiBNYXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTWFwLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNv bnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmckV4cHJlc3Npb25NYXANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJFeHByZXNzaW9uTWFwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvbk1hcChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvbk1hcChzZWxmLCBFeHBJ bmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHBy ZXNzaW9uTWFwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDIsIHNlbGYuUlVMRV92ZnJFeHBy ZXNzaW9uTWFwKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTYwDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5NYXApDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2 MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjINCg0KKyAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2 Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk3MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K DQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuIG9yICgo KChfbGEgLSAxOTIpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE5MikpICYgKCgx IDw8IChWZnJTeW50YXhQYXJzZXIuQ29uZCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5GaW5kIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1pZCAtIDE5MikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5Ub2sgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu U3BhbiAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EdXAgLSAxOTIpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuVmFyRXFWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuSWRFcVZhbCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JZEVxSWQgLSAxOTIp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSWRFcVZhbExpc3QgLSAxOTIpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25SZWYgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuUnVsZVJlZiAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWYgLSAx OTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXMgLSAxOTIpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuU2VjdXJpdHkgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu R2V0IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wgLSAxOTIpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRmFsc2VTeW1ib2wgLSAxOTIpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuT25lIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMgLSAx OTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuWmVybyAtIDE5MikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5VbmRlZmluZWQgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmVy c2lvbiAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MZW5ndGggLSAxOTIpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuTk9UIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlNldCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90IC0gMTkyKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkJvb2xWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVmFsIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVuSW50 VmFsIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIgLSAxOTIpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuVG9Mb3dlciAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5NYXRjaCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NYXRjaDIgLSAxOTIp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUgLSAxOTIpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuUXVlc3Rpb25SZWZWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nUmVmVmFsIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1hcCAtIDE5 MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLSAxOTIpKSkpICE9IDApOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY0DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjk2NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY2DQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjk2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk3Mw0K DQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyOTc0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToN Cg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxj dHgNCg0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1Zm clN5bnRheFZpc2l0b3IucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9W ZnJTeW50YXhWaXNpdG9yLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAw MC4uNDMwNzhmOTE0YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vVmZyQ29tcGlsZXIvVmZyU3ludGF4VmlzaXRvci5weQ0KQEAgLTAsMCArMSw1MTA2IEBADQor ZnJvbSBjZ2kgaW1wb3J0IHByaW50X2Vudmlyb25fdXNhZ2UNCg0KK2Zyb20gZW1haWwuZXJyb3Jz IGltcG9ydCBOb25BU0NJSUxvY2FsUGFydERlZmVjdCwgTm9uUHJpbnRhYmxlRGVmZWN0DQoNCitm cm9tIGVudW0gaW1wb3J0IEZsYWcNCg0KK2Zyb20gZmlsZWlucHV0IGltcG9ydCBsaW5lbm8NCg0K K2Zyb20gaHR0cC5jbGllbnQgaW1wb3J0IFJlc3BvbnNlTm90UmVhZHkNCg0KK2Zyb20gaXRlcnRv b2xzIGltcG9ydCBjb3VudA0KDQorZnJvbSBtb2R1bGVmaW5kZXIgaW1wb3J0IFNUT1JFX05BTUUN Cg0KK2Zyb20gbXNpbGliLnNjaGVtYSBpbXBvcnQgQ3JlYXRlRm9sZGVyDQoNCitmcm9tIHJlIGlt cG9ydCBUDQoNCitmcm9tIHNyZV9wYXJzZSBpbXBvcnQgRkxBR1MNCg0KK2Zyb20gdG9rZW5pemUg aW1wb3J0IE51bWJlcg0KDQorZnJvbSBhbnRscjQgaW1wb3J0ICoNCg0KK2Zyb20gVmZyQ29tcGls ZXIuQ29tbW9uQ3R5cGVzIGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cg aW1wb3J0ICoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyVXRpbGl0eSBpbXBvcnQgKg0KDQorZnJv bSBWZnJDb21waWxlci5WZnJUcmVlIGltcG9ydCAqDQoNCitpbXBvcnQgY3R5cGVzDQoNCitpbXBv cnQgc3RydWN0DQoNCisNCg0KK2lmIF9fbmFtZV9fIGlzIG5vdCBOb25lIGFuZCAiLiIgaW4gX19u YW1lX186DQoNCisgICAgZnJvbSAuVmZyU3ludGF4UGFyc2VyIGltcG9ydCBWZnJTeW50YXhQYXJz ZXINCg0KK2Vsc2U6DQoNCisgICAgZnJvbSBWZnJTeW50YXhQYXJzZXIgaW1wb3J0IFZmclN5bnRh eFBhcnNlcg0KDQorDQoNCitnQ1ZmclZhckRhdGFUeXBlREIgPSBDVmZyVmFyRGF0YVR5cGVEQigp DQoNCitnQ1ZmckRlZmF1bHRTdG9yZSA9ICBDVmZyRGVmYXVsdFN0b3JlKCkNCg0KK2dDVmZyRGF0 YVN0b3JhZ2UgPSBDVmZyRGF0YVN0b3JhZ2UoKQ0KDQorDQoNCisjIFRoaXMgY2xhc3MgZGVmaW5l cyBhIGNvbXBsZXRlIGdlbmVyaWMgdmlzaXRvciBmb3IgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlci4NCg0KK2NsYXNzIFZmclN5bnRheFZpc2l0b3IoUGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgZ1plcm9FZmlJZnJUeXBlVmFsdWUgPSBFRklfSUZSX1RZUEVfVkFMVUUo KQ0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fT3Zl cnJpZGVDbGFzc0d1aWQgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX19QYXJzZXJTdGF0dXMgPSAw DQoNCisgICAgICAgIHNlbGYuX19DSWZyT3BIZHJJbmRleCA9IC0xDQoNCisgICAgICAgIHNlbGYu X19Db25zdGFudE9ubHlJbkV4cHJlc3Npb24gPSBGYWxzZQ0KDQorICAgICAgICBzZWxmLl9fVXNl ZERlZmF1bHRBcnJheSA9IFtdDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX0NWZnJSdWxlc0RCID0g Q1ZmclJ1bGVzREIoKQ0KDQorICAgICAgICBzZWxmLl9fQ0lmck9wSGRyID0gW10gICMNCg0KKyAg ICAgICAgc2VsZi5fX0NJZnJPcEhkckxpbmVObyA9IFtdDQoNCisgICAgICAgIHNlbGYuX19DdXJy UWVzdFZhckluZm8gPSBFRklfVkFSU1RPUkVfSU5GTygpDQoNCisNCg0KKyAgICAgICAgc2VsZi5f X0NWZnJRdWVzdGlvbkRCID0gQ1ZmclF1ZXN0aW9uREIoKQ0KDQorICAgICAgICBzZWxmLl9fQ3Vy cmVudFF1ZXN0aW9uID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEg PSBOb25lICMNCg0KKw0KDQorICAgICAgICBzZWxmLl9fSXNTdHJpbmdPcCA9IEZhbHNlDQoNCisg ICAgICAgIHNlbGYuX19Jc09yZGVyZWRMaXN0ID0gRmFsc2UNCg0KKyAgICAgICAgc2VsZi5fX0lz Q2hlY2tCb3hPcCA9IEZhbHNlDQoNCisgICAgICAgIHNlbGYuX19Sb290ID0gVmZyVHJlZU5vZGUo KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyUHJvZ3JhbS4NCg0KKyAgICBkZWYgdmlzaXRWZnJQcm9ncmFtKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUHJvZ3JhbUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg ICNzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUHJpbnRBbGxRdWVzdGlvbigndGVzdFxcUXVlc3Rpb25z LnR4dCcpDQoNCisgICAgICAgICNnQ1ZmclZhckRhdGFUeXBlREIuRHVtcCgidGVzdFxcRGF0YVR5 cGVJbmZvLnR4dCIpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjcHJhZ21hUGFja1Nob3dEZWYuDQoNCisgICAgZGVmIHZpc2l0UHJhZ21hUGFja1No b3dEZWYoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU2hvd0RlZkNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBnQ1Zm clZhckRhdGFUeXBlREIuUGFjayhMaW5lLCBWRlJfUEFDS19TSE9XKQ0KDQorICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBhY2tTdGFja0RlZi4N Cg0KKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrU3RhY2tEZWYoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5QcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBJZGVudGlm aWVyID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCg0KKw0KDQorICAg ICAgICBpZiBzdHIoY3R4LmdldENoaWxkKDApKSA9PSAncHVzaCc6DQoNCisgICAgICAgICAgICBB Y3Rpb24gPSBWRlJfUEFDS19QVVNIDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBB Y3Rpb24gPSBWRlJfUEFDS19QT1ANCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIEFjdGlvbiB8PSBWRlJfUEFDS19BU1NJR04NCg0KKw0KDQor ICAgICAgICBQYWNrTnVtYmVyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSwgREVGQVVM VF9QQUNLX0FMSUdOKQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAg ICAgZ0NWZnJWYXJEYXRhVHlwZURCLlBhY2soTGluZSwgQWN0aW9uLCBJZGVudGlmaWVyLCBQYWNr TnVtYmVyKQ0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ByYWdtYVBhY2tOdW1iZXIuDQoNCisgICAgZGVmIHZpc2l0UHJhZ21hUGFja051bWJlcihz ZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgUGFja051bWJlciA9 IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCksIERFRkFVTFRfUEFDS19BTElHTikNCg0KKw0K DQorICAgICAgICBnQ1ZmclZhckRhdGFUeXBlREIuUGFjayhMaW5lLCBWRlJfUEFDS19BU1NJR04s IE5vbmUsIFBhY2tOdW1iZXIpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyUHJhZ21hUGFja0RlZmluaXRpb24uDQoNCisgICAgZGVmIHZpc2l0 VmZyUHJhZ21hUGFja0RlZmluaXRpb24oDQoNCisgICAgICAgICAgICBzZWxmLCBjdHg6IFZmclN5 bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQpOg0KDQorICAgICAgICBy ZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckRhdGFTdHJ1Y3REZWZp bml0aW9uLg0KDQorICAgIGRlZiB2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKHNlbGYsIGN0 eDogVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRhVHlwZUJlZ2luKCkNCg0K Kw0KDQorICAgICAgICBpZiBjdHguTjEgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFJldHVybkNv ZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuU2V0TmV3VHlwZU5hbWUoY3R4Lk4xLnRleHQpDQoNCisg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OMS5saW5lLCBj dHguTjEudGV4dCkNCg0KKw0KDQorICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuU2V0TmV3VHlwZU5hbWUoY3R4 Lk4yLnRleHQpDQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IGN0eC5OMi5saW5lLCBjdHguTjIudGV4dCkNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5EZWNsYXJlRGF0 YVR5cGVFbmQoKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBOb25lDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRh VW5pb25EZWZpbml0aW9uLg0KDQorICAgIGRlZiB2aXNpdFZmckRhdGFVbmlvbkRlZmluaXRpb24o c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dCk6 DQoNCisgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5EZWNsYXJlRGF0YVR5cGVCZWdpbigpDQoN CisgICAgICAgIGlmIGN0eC5OMSAhPSBOb25lOg0KDQorICAgICAgICAgICAgUmV0dXJuQ29kZSA9 IGdDVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjEudGV4dCkNCg0KKyAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4xLmxpbmUsIGN0eC5O MS50ZXh0KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5OMiAhPSBOb25lOg0KDQorICAgICAgICAg ICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjIu dGV4dCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4 Lk4yLmxpbmUsIGN0eC5OMi50ZXh0KQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisNCg0KKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRhVHlw ZUVuZCgpDQoNCisgICAgICAgIHJldHVybiBOb25lDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3RydWN0Rmll bGRzLg0KDQorICAgIGRlZiB2aXNpdFZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg cmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQ2 NC4NCg0KKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGQ2NChzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDY0Q29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IGdD VmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsICdVSU5UNjQnLCBB cnJheU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxl cihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorICAgICAgICByZXR1cm4g c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZDMyLg0KDQor ICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkMzJDb250ZXh0KToNCg0KKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9f VHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KDQorICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJE YXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwgJ1VJTlQzMicsIEFycmF5TnVt LCBjdHguRmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVy bkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkMTYuDQoNCisgICAgZGVm IHZpc2l0RGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3Ry dWN0RmllbGQxNkNvbnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBl REIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnVUlOVDE2JywgQXJyYXlOdW0sIGN0eC5G aWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwg Y3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQ4Lg0KDQorICAgIGRlZiB2aXNpdERh dGFTdHJ1Y3RGaWVsZDgoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ4 Q29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1i ZXIoKSkNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlw ZUFkZEZpZWxkKGN0eC5OLnRleHQsICdVSU5UOCcsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9u KQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUs IGN0eC5OLnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkQm9vbC4NCg0KKyAgICBkZWYgdmlzaXREYXRhU3RydWN0 RmllbGRCb29sKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkQm9vbENv bnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVB ZGRGaWVsZChjdHguTi50ZXh0LCAnQk9PTEVBTicsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9u KQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUs IGN0eC5OLnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkU3RyaW5nLg0KDQorICAgIGRlZiB2aXNpdERhdGFTdHJ1 Y3RGaWVsZFN0cmluZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFN0 cmluZ0NvbnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0 YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnRUZJX1NUUklOR19JRCcsIEFycmF5TnVtLCBjdHgu RmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkRGF0ZS4NCg0KKyAgICBkZWYgdmlz aXREYXRhU3RydWN0RmllbGREYXRlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkRGF0ZUNvbnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBl REIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnRUZJX0hJSV9EQVRFJywgQXJyYXlOdW0s IGN0eC5GaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJu Q29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRUaW1lLg0KDQorICAgIGRl ZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRh U3RydWN0RmllbGRUaW1lQ29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0 YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsICdFRklfSElJX1RJTUUnLCBBcnJh eU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihS ZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFJlZi4NCg0KKyAg ICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRSZWYoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5E YXRhU3RydWN0RmllbGRSZWZDb250ZXh0KToNCg0KKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9f VHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KDQorICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJE YXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwgJ0VGSV9ISUlfUkVGJywgQXJy YXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo UmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRVc2VyLg0KDQor ICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNl ci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgaWYgY3R4LlQudGV4dCAhPSAn Q0hBUjE2JzoNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIu RGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCBjdHguVC50ZXh0LCBBcnJheU51bSwgY3R4LkZp ZWxkSW5VbmlvbikNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUg PSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnVUlOVDE2 JywgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEJpdEZpZWxkNjQuDQoN CisgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkNjQoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQpOg0KDQorICAgICAgICBXaWR0aCA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVEQi5E YXRhVHlwZUFkZEJpdEZpZWxkKGN0eC5OLnRleHQsICdVSU5UNjQnLCBXaWR0aCwgY3R4LkZpZWxk SW5VbmlvbiksIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoNCisgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlw ZUFkZEJpdEZpZWxkKE5vbmUsICdVSU5UNjQnLCBXaWR0aCwgY3R4LkZpZWxkSW5VbmlvbiksIGN0 eC5ELmxpbmUsIGN0eC5ELnRleHQpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0RmllbGQzMi4NCg0KKyAgICBkZWYg dmlzaXREYXRhU3RydWN0Qml0RmllbGQzMihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFT dHJ1Y3RCaXRGaWVsZDMyQ29udGV4dCk6DQoNCisgICAgICAgIFdpZHRoID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRk Qml0RmllbGQoY3R4Lk4udGV4dCwgJ1VJTlQzMicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwg Y3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0Rmll bGQoTm9uZSwgJ1VJTlQzMicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwg Y3R4LkQudGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciNkYXRhU3RydWN0Qml0RmllbGQxNi4NCg0KKyAgICBkZWYgdmlzaXREYXRhU3RydWN0 Qml0RmllbGQxNihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2 Q29udGV4dCk6DQoNCisgICAgICAgIFdpZHRoID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo KSkNCg0KKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoY3R4Lk4u dGV4dCwgJ1VJTlQxNicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4Lk4ubGluZSwgY3R4 Lk4udGV4dCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoTm9uZSwgJ1VJTlQx NicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCg0K KyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3Ry dWN0Qml0RmllbGQ4Lg0KDQorICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4Q29udGV4dCk6DQoNCisgICAg ICAgIFdpZHRoID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgaWYg Y3R4Lk4gIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJW YXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoY3R4Lk4udGV4dCwgJ1VJTlQ4JywgV2lk dGgsIGN0eC5GaWVsZEluVW5pb24pLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRhdGFU eXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChOb25lLCAnVUlOVDgnLCBXaWR0aCwgY3R4LkZpZWxk SW5VbmlvbiksIGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgZGVmIF9fRGVjbGFyZVN0YW5kYXJkRGVm YXVsdFN0b3JhZ2Uoc2VsZiwgTGluZU5vKToNCg0KKw0KDQorICAgICAgICBEU09iaiA9IENJZnJE ZWZhdWx0U3RvcmUoKQ0KDQorICAgICAgICBnQ1ZmckRlZmF1bHRTdG9yZS5SZWdpc3RlckRlZmF1 bHRTdG9yZShEU09iai5HZXREZWZhdWx0U3RvcmUoKSwgIlN0YW5kYXJkIERlZmF1bHRzIiwgRUZJ X1NUUklOR19JRF9JTlZBTElELCBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQpDQoNCisg ICAgICAgIERTT2JqLlNldExpbmVObyAoTGluZU5vKQ0KDQorICAgICAgICBEU09iai5TZXREZWZh dWx0TmFtZSAoRUZJX1NUUklOR19JRF9JTlZBTElEKQ0KDQorICAgICAgICBEU09iai5TZXREZWZh dWx0SWQgKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCkNCg0KKw0KDQorICAgICAgICBE U09iak1GID0gQ0lmckRlZmF1bHRTdG9yZSgpDQoNCisgICAgICAgIGdDVmZyRGVmYXVsdFN0b3Jl LlJlZ2lzdGVyRGVmYXVsdFN0b3JlKERTT2JqTUYuR2V0RGVmYXVsdFN0b3JlKCksICJTdGFuZGFy ZCBNYW51RmFjdHVyaW5nIiwgRUZJX1NUUklOR19JRF9JTlZBTElELCBFRklfSElJX0RFRkFVTFRf Q0xBU1NfTUFOVUZBQ1RVUklORykNCg0KKyAgICAgICAgRFNPYmpNRi5TZXRMaW5lTm8gKExpbmVO bykNCg0KKyAgICAgICAgRFNPYmpNRi5TZXREZWZhdWx0TmFtZSAoRUZJX1NUUklOR19JRF9JTlZB TElEKQ0KDQorICAgICAgICBEU09iak1GLlNldERlZmF1bHRJZCAoRUZJX0hJSV9ERUZBVUxUX0NM QVNTX01BTlVGQUNUVVJJTkcpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtU2V0RGVmaW5pdGlvbi4NCg0KKyAg ICBkZWYgdmlzaXRWZnJGb3JtU2V0RGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmckZvcm1TZXREZWZpbml0aW9uQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYuX19JbnNlcnRD aGlsZChzZWxmLl9fUm9vdCwgY3R4KQ0KDQorICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4 Lk5vZGUsIGN0eC5jbGFzc0RlZmluaXRpb24oKSkNCg0KKyAgICAgICAgc2VsZi5fX0luc2VydENo aWxkKGN0eC5Ob2RlLCBjdHguc3ViY2xhc3NEZWZpbml0aW9uKCkpDQoNCisgICAgICAgIExpbmUg PSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBzZWxmLl9fRGVjbGFyZVN0YW5kYXJkRGVmYXVs dFN0b3JhZ2UoTGluZSkNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorICAgICAgICBDbGFzc0d1aWROdW0gPSAwDQoNCisgICAgICAgIEd1aWRMaXN0ID0gW10NCg0K KyAgICAgICAgaWYgY3R4LmNsYXNzZ3VpZERlZmluaXRpb24oKSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgR3VpZExpc3QgPSBjdHguY2xhc3NndWlkRGVmaW5pdGlvbigpLkd1aWRMaXN0DQoNCisg ICAgICAgICAgICBDbGFzc0d1aWROdW0gPSBsZW4oR3VpZExpc3QpDQoNCisNCg0KKyAgICAgICAg RGVmYXVsdENsYXNzR3VpZCA9IEVGSV9ISUlfUExBVEZPUk1fU0VUVVBfRk9STVNFVF9HVUlEDQoN CisNCg0KKyAgICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lIGFuZCBD bGFzc0d1aWROdW0gPj00KToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCBOb25lLCAnQWxy ZWFkeSBoYXMgNCBjbGFzcyBndWlkcywgY2FuIG5vdCBhZGQgZXh0cmEgY2xhc3MgZ3VpZCEnKQ0K DQorDQoNCisgICAgICAgIGlmIENsYXNzR3VpZE51bSA9PSAwOg0KDQorICAgICAgICAgICAgaWYg c2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgQ2xh c3NHdWlkTnVtICA9IDINCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg Q2xhc3NHdWlkTnVtICA9IDENCg0KKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6 ZW9mKEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICogc2l6ZW9mKEVGSV9HVUlEKSkN Cg0KKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChEZWZhdWx0Q2xhc3NHdWlkKQ0KDQor ICAgICAgICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lKToNCg0KKyAg ICAgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlk KQ0KDQorDQoNCisgICAgICAgIGVsaWYgQ2xhc3NHdWlkTnVtID09IDE6DQoNCisgICAgICAgICAg ICBpZiBzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAg ICBDbGFzc0d1aWROdW0gICs9IDENCg0KKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQo c2l6ZW9mKEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICogc2l6ZW9mKEVGSV9HVUlE KSkNCg0KKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCg0KKyAg ICAgICAgICAgIGlmIChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQoNCisgICAg ICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCkN Cg0KKw0KDQorICAgICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAyOg0KDQorICAgICAgICAgICAg aWYgc2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAg Q2xhc3NHdWlkTnVtICs9IDENCg0KKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6 ZW9mKEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICogc2l6ZW9mKEVGSV9HVUlEKSkN Cg0KKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCg0KKyAgICAg ICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsxXSkNCg0KKyAgICAgICAgICAgIGlm IChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQoNCisgICAgICAgICAgICAgICAg RlNPYmouU2V0Q2xhc3NHdWlkKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCkNCg0KKw0KDQorICAg ICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAzOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX092 ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgQ2xhc3NHdWlkTnVt ICArPSAxDQoNCisgICAgICAgICAgICBGU09iaiA9IENJZnJGb3JtU2V0KHNpemVvZihFRklfSUZS X0ZPUk1fU0VUKSArIENsYXNzR3VpZE51bSAqIHNpemVvZihFRklfR1VJRCkpDQoNCisgICAgICAg ICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQoNCisgICAgICAgICAgICBGU09i ai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMV0pDQoNCisgICAgICAgICAgICBGU09iai5TZXRDbGFz c0d1aWQoR3VpZExpc3RbMl0pDQoNCisgICAgICAgICAgICBpZiAoc2VsZi5fX092ZXJyaWRlQ2xh c3NHdWlkICE9IE5vbmUpOg0KDQorICAgICAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChz ZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQpDQoNCisNCg0KKyAgICAgICAgZWxpZiBDbGFzc0d1aWRO dW0gPT0gNDoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBO b25lOg0KDQorICAgICAgICAgICAgICAgIENsYXNzR3VpZE51bSAgKz0gMQ0KDQorICAgICAgICAg ICAgRlNPYmogPSBDSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1 aWROdW0gKiBzaXplb2YoRUZJX0dVSUQpKQ0KDQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NH dWlkKEd1aWRMaXN0WzBdKQ0KDQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRM aXN0WzFdKQ0KDQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzJdKQ0K DQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzNdKQ0KDQorDQoNCisg ICAgICAgIEZTT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICBGU09iai5TZXRHdWlkKGN0 eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQoNCisgICAgICAgIEZTT2JqLlNldEZvcm1TZXRUaXRs ZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQoNCisgICAgICAgIEZTT2JqLlNldEhl bHAoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpKQ0KDQorDQoNCisgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBGU09iag0KDQorICAgICAgICAjIERlY2xhcmUgdW5kZWZpbmVkIFF1ZXN0aW9u IHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9uLg0KDQorDQoNCisgICAgICAg IHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NsYXNzZ3VpZERlZmluaXRpb24uDQoNCisgICAgZGVmIHZp c2l0Q2xhc3NndWlkRGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNsYXNzZ3Vp ZERlZmluaXRpb25Db250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisgICAgICAgIGZvciBHdWlkQ3R4IGluIGN0eC5ndWlkRGVmaW5pdGlvbigp Og0KDQorICAgICAgICAgICAgY3R4Lkd1aWRMaXN0LmFwcGVuZChHdWlkQ3R4Lkd1aWQpDQoNCisN Cg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjbGFzc0RlZmluaXRpb24uDQoN CisgICAgZGVmIHZpc2l0Q2xhc3NEZWZpbml0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu Q2xhc3NEZWZpbml0aW9uQ29udGV4dCk6DQoNCisgICAgICAgIENPYmogPSBDSWZyQ2xhc3MoKQ0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBDbGFzcyA9IDAN Cg0KKyAgICAgICAgZm9yIENsYXNzTmFtZUN0eCBpbiBjdHgudmFsaWRDbGFzc05hbWVzKCk6DQoN CisgICAgICAgICAgICBDbGFzcyB8PSBDbGFzc05hbWVDdHguQ2xhc3NOYW1lDQoNCisgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBDT2JqLlNldExpbmVObyhMaW5lKQ0K DQorICAgICAgICBDT2JqLlNldENsYXNzKENsYXNzKQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRh ID0gQ09iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmFsaWRD bGFzc05hbWVzLg0KDQorICAgIGRlZiB2aXNpdFZhbGlkQ2xhc3NOYW1lcyhzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkNsYXNzTm9uRGV2 aWNlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfTk9OX0RF VklDRV9DTEFTUw0KDQorICAgICAgICBlbGlmIGN0eC5DbGFzc0Rpc2tEZXZpY2UoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9ESVNLX0RFVklDRV9DTEFTUw0K DQorICAgICAgICBlbGlmIGN0eC5DbGFzc1ZpZGVvRGV2aWNlKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfVklERU9fREVWSUNFX0NMQVNTDQoNCisgICAgICAg IGVsaWYgY3R4LkNsYXNzTmV0d29ya0RldmljZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBj dHguQ2xhc3NOYW1lID0gRUZJX05FVFdPUktfREVWSUNFX0NMQVNTDQoNCisgICAgICAgIGVsaWYg Y3R4LkNsYXNzSW5wdXREZXZpY2UoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkNsYXNz TmFtZSA9IEVGSV9JTlBVVF9ERVZJQ0VfQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguQ2xhc3NP bkJvYXJkRGV2aWNlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBF RklfT05fQk9BUkRfREVWSUNFX0NMQVNTDQoNCisgICAgICAgIGVsaWYgY3R4LkNsYXNzT3RoZXJE ZXZpY2UoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9PVEhF Ul9ERVZJQ0VfQ0xBU1MNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGN0eC5DbGFz c05hbWUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KDQorDQoNCisgICAgICAgIHJl dHVybiBjdHguQ2xhc3NOYW1lDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzdWJjbGFzc0RlZmluaXRpb24uDQoNCisgICAg ZGVmIHZpc2l0U3ViY2xhc3NEZWZpbml0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3Vi Y2xhc3NEZWZpbml0aW9uQ29udGV4dCk6DQoNCisgICAgICAgIFN1Yk9iaiA9IENJZnJTdWJDbGFz cygpDQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgU3ViT2JqLlNldExpbmVObyhM aW5lKQ0KDQorICAgICAgICBTdWJDbGFzcyA9IDANCg0KKyAgICAgICAgaWYgY3R4LlN1YmNsYXNz U2V0dXBBcHBsaWNhdGlvbigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBTdWJDbGFzcyB8PSBF RklfU0VUVVBfQVBQTElDQVRJT05fU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguU3ViY2xh c3NHZW5lcmFsQXBwbGljYXRpb24oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3ViQ2xhc3Mg fD0gRUZJX0dFTkVSQUxfQVBQTElDQVRJT05fU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHgu U3ViY2xhc3NGcm9udFBhZ2UoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3ViQ2xhc3MgfD0g RUZJX0ZST05UX1BBR0VfU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguU3ViY2xhc3NTaW5n bGVVc2UoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3ViQ2xhc3MgfD0gRUZJX1NJTkdMRV9V U0VfU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFN1YkNsYXNzID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKw0KDQorICAgICAgICBTdWJPYmouU2V0 U3ViQ2xhc3MoU3ViQ2xhc3MpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTdWJPYmoNCg0K Kw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckZvcm1TZXRMaXN0Lg0K DQorICAgIGRlZiB2aXNpdFZmckZvcm1TZXRMaXN0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu VmZyRm9ybVNldExpc3RDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyRm9ybVNldCgpOg0KDQorICAgICAgICAg ICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisNCg0KKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyRm9ybVNldC4NCg0KKyAgICBkZWYgdmlzaXRWZnJGb3JtU2V0 KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENvbnRleHQpOg0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC52ZnJGb3Jt RGVmaW5pdGlvbigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJG b3JtRGVmaW5pdGlvbigpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmckZvcm1NYXBEZWZpbml0 aW9uKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmckZvcm1NYXBE ZWZpbml0aW9uKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW1hZ2UoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW1hZ2Uo KS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcigpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9y ZUxpbmVhcigpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhclN0b3JlRWZp KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFZh clN0b3JlRWZpKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50VmFyU3RvcmVO YW1lVmFsdWUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnREZWZhdWx0U3RvcmUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KCkuTm9kZQ0KDQorICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoKS5O b2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkuTm9k ZQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERlZmF1 bHRTdG9yZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmVDb250ZXh0KToNCg0K KyAgICAgICAgRFNPYmogPSBDSWZyRGVmYXVsdFN0b3JlKCkNCg0KKyAgICAgICAgTGluZSA9IGN0 eC5zdGFydC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K KyAgICAgICAgUmVmTmFtZSA9IGN0eC5OLnRleHQNCg0KKyAgICAgICAgRGVmYXVsdFN0b3JlTmFt ZUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5TLnRleHQpDQoNCisNCg0KKyAgICAgICAgRGVmYXVs dElkID0gRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJEIGlmIGN0eC5BdHRyaWJ1dGUoKT09 IE5vbmUgZWxzZSBzZWxmLl9fVHJhbnNOdW0oY3R4LkEudGV4dCkNCg0KKw0KDQorICAgICAgICBp ZiBnQ1ZmckRlZmF1bHRTdG9yZS5EZWZhdWx0SWRSZWdpc3RlcmVkKERlZmF1bHRJZCkgPT0gRmFs c2U6DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3Jl LlJlZ2lzdGVyRGVmYXVsdFN0b3JlKERTT2JqLkdldERlZmF1bHRTdG9yZSgpLCBSZWZOYW1lLCBE ZWZhdWx0U3RvcmVOYW1lSWQsIERlZmF1bHRJZCkgLCBMaW5lKQ0KDQorICAgICAgICAgICAgRFNP YmouU2V0RGVmYXVsdE5hbWUoRGVmYXVsdFN0b3JlTmFtZUlkKQ0KDQorICAgICAgICAgICAgRFNP YmouU2V0RGVmYXVsdElkIChEZWZhdWx0SWQpDQoNCisgICAgICAgICAgICBEU09iai5TZXRMaW5l Tm8oTGluZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHBOb2RlLCBSZXR1cm5D b2RlID0gZ0NWZnJEZWZhdWx0U3RvcmUuUmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQoRGVmYXVs dElkLCBSZWZOYW1lLCBEZWZhdWx0U3RvcmVOYW1lSWQpDQoNCisgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQoNCisgICAgICAgICAgICBEU09iai5TZXRE ZWZhdWx0U3RvcmUgPSBwTm9kZS5PYmpBZGRyDQoNCisgICAgICAgICAgICBEU09iai5TZXRMaW5l Tm8oTGluZSkNCg0KKw0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gRFNPYmoNCg0KKw0KDQor ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhclN0b3JlTGlu ZWFyLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0KToNCg0K KyAgICAgICAgVlNPYmogPSBDSWZyVmFyU3RvcmUoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAg VlNPYmouU2V0TGluZU5vKExpbmUpDQoNCisNCg0KKyAgICAgICAgVHlwZU5hbWUgPSBzdHIoY3R4 LmdldENoaWxkKDEpKQ0KDQorICAgICAgICBpZiBUeXBlTmFtZSA9PSAnQ0hBUjE2JzoNCg0KKyAg ICAgICAgICAgIFR5cGVOYW1lID0gJ1VJTlQxNicNCg0KKw0KDQorICAgICAgICBJc0JpdFZhclN0 b3JlID0gRmFsc2UNCg0KKyAgICAgICAgaWYgY3R4LlROICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBJc0JpdFZhclN0b3JlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlSGFzQml0RmllbGQo Y3R4LlROLnRleHQpDQoNCisNCg0KKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9WQVJTVE9SRV9J RF9JTlZBTElEDQoNCisgICAgICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQoNCisgICAgICAg ICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JRC50ZXh0KQ0KDQorICAgICAg ICAgICAgc2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoVmFyU3RvcmVJZCE9MCwgVHJ1ZSwgY3R4 LklELmxpbmUsIGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxsb3dlZC4nKQ0KDQorICAg ICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4dA0KDQorICAgICAgICBHdWlkID0gY3R4Lmd1aWRE ZWZpbml0aW9uKCkuR3VpZA0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGF0 YVN0b3JhZ2UuRGVjbGFyZUJ1ZmZlclZhclN0b3JlKFN0b3JlTmFtZSwgR3VpZCwgZ0NWZnJWYXJE YXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwgSXNCaXRWYXJTdG9yZSksIExpbmUpDQoN CisgICAgICAgIFZTT2JqLlNldEd1aWQoR3VpZCkNCg0KKyAgICAgICAgVmFyU3RvcmVJZCwgUmV0 dXJuQ29kZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsIEd1aWQp DQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUs IGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICBWU09iai5TZXRWYXJTdG9yZUlkKFZhclN0b3JlSWQp DQoNCisgICAgICAgIFNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0 YVR5cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KDQorICAgICAgICBWU09iai5TZXRTaXplKFNpemUpDQoN CisgICAgICAgIFZTT2JqLlNldE5hbWUoU3RvcmVOYW1lKQ0KDQorDQoNCisgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBWU09iag0KDQorDQoNCisgICAgICAgIHJldHVybiBWU09iag0KDQorDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50VmFyU3RvcmVFZmkuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50VmFy U3RvcmVFZmkoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVm aUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIFZTRU9iaiA9IENJZnJWYXJTdG9yZUVmaSgpDQoN CisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KDQorICAgICAgICBWU0VPYmouU2V0TGluZU5vKExpbmUpDQoNCisNCg0KKyAg ICAgICAgR3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCg0KKw0KDQorICAgICAgICBD dXN0b21pemVkTmFtZSA9IEZhbHNlDQoNCisgICAgICAgIElzQml0VmFyU3RvcmUgPSBGYWxzZQ0K DQorICAgICAgICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKyAgICAg ICAgSXNVRUZJMjNFZmlWYXJzdG9yZSA9IFRydWUNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IE5v bmUNCg0KKw0KDQorICAgICAgICBUeXBlTmFtZSA9IHN0cihjdHguZ2V0Q2hpbGQoMSkpDQoNCisN Cg0KKyAgICAgICAgaWYgVHlwZU5hbWUgPT0gJ0NIQVIxNic6DQoNCisgICAgICAgICAgICBUeXBl TmFtZSA9ICdVSU5UMTYnDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguVE4gIT0gTm9uZToNCg0K KyAgICAgICAgICAgIEN1c3RvbWl6ZWROYW1lID0gVHJ1ZQ0KDQorICAgICAgICAgICAgSXNCaXRW YXJTdG9yZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUhhc0JpdEZpZWxkKFR5cGVOYW1l KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBWYXJTdG9yZUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JRC50ZXh0KQ0KDQorICAgICAgICAg ICAgc2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoVmFyU3RvcmVJZCE9MCwgVHJ1ZSwgY3R4LklE LmxpbmUsIGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxsb3dlZC4nKQ0KDQorDQoNCisg ICAgICAgIEF0dHJpYnV0ZXMgPSAwDQoNCisgICAgICAgIGZvciBBdHJDdHggaW4gY3R4LnZmclZh clN0b3JlRWZpQXR0cigpOg0KDQorICAgICAgICAgICAgQXR0cmlidXRlcyB8PSBBdHJDdHguQXR0 cg0KDQorICAgICAgICBWU0VPYmouU2V0QXR0cmlidXRlcyhBdHRyaWJ1dGVzKQ0KDQorDQoNCisg ICAgICAgIGlmIGN0eC5TTiAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3RvcmVOYW1lID0gY3R4 LlNOLnRleHQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIElzVUVGSTIzRWZpVmFy c3RvcmUgPSBGYWxzZQ0KDQorICAgICAgICAgICAgTmFtZVN0cmluZ0lkID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5WTi50ZXh0KQ0KDQorICAgICAgICAgICAgU3RvcmVOYW1lID0gZ0NWZnJTdHJpbmdE Qi5HZXRWYXJTdG9yZU5hbWVGcm9tU3RyaW5nSWQoTmFtZVN0cmluZ0lkKSAjDQoNCisgICAgICAg ICAgICBpZiBTdG9yZU5hbWUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9y SGFuZGxlLkhhbmRsZVdhcm5pbmcoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVE LCBjdHguVk4ubGluZSwgJ0NhblwndCBnZXQgdmFyc3RvcmUgbmFtZSBmb3IgdGhpcyBTdHJpbmdJ ZCEnKQ0KDQorICAgICAgICAgICAgaWYgbm90KEN1c3RvbWl6ZWROYW1lKToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNV UFBPUlRFRCwgTGluZSwgJ09sZCBzdHlsZSBlZml2YXJzdG9yZSBtdXN0IGhhdmUgU3RyaW5nIElk ZW50aWZpZXIhJykNCg0KKyAgICAgICAgICAgIFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk4u dGV4dCkNCg0KKyAgICAgICAgICAgIGlmIFNpemUgPT0gMTogVHlwZU5hbWUgPSAnVUlOVDgnDQoN CisgICAgICAgICAgICBlbGlmIFNpemUgPT0gMjogVHlwZU5hbWUgPSAnVUlOVDE2Jw0KDQorICAg ICAgICAgICAgZWxpZiBTaXplID09IDQ6IFR5cGVOYW1lID0gJ1VJTlQzMicNCg0KKyAgICAgICAg ICAgIGVsaWYgU2l6ZSA9PSA4OiBUeXBlTmFtZSA9ICdVSU5UNjQnDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorDQoN CisgICAgICAgIGlmIElzVUVGSTIzRWZpVmFyc3RvcmU6DQoNCisgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKGdDVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZUJ1ZmZlclZhclN0b3JlKFN0b3Jl TmFtZSwgR3VpZCwgZ0NWZnJWYXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwgSXNC aXRWYXJTdG9yZSwgQXR0cmlidXRlcyksIExpbmUpDQoNCisgICAgICAgICAgICBWYXJTdG9yZUlk LCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUlkKFN0b3JlTmFtZSwg R3VpZCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4 LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9 IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeVR5cGVOYW1lKFR5cGVOYW1lKQ0K DQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KDQor ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRh dGFTdG9yYWdlLkRlY2xhcmVCdWZmZXJWYXJTdG9yZShzZWxmLl9fR2V0VGV4dChjdHguVE4pLCBH dWlkLCBnQ1ZmclZhckRhdGFUeXBlREIsIFR5cGVOYW1lLCBWYXJTdG9yZUlkLCBJc0JpdFZhclN0 b3JlLCBBdHRyaWJ1dGVzKSwgTGluZSkgIw0KDQorICAgICAgICAgICAgVmFyU3RvcmVJZCwgUmV0 dXJuQ29kZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChzZWxmLl9fR2V0VGV4dChj dHguVE4pLCBHdWlkKQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBjdHguVk4ubGluZSwgY3R4LlZOLnRleHQpDQoNCisgICAgICAgICAgICBTaXplLCBSZXR1 cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5VHlwZU5hbWUoVHlw ZU5hbWUpDQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0 eC5OLmxpbmUpDQoNCisNCg0KKyAgICAgICAgVlNFT2JqLlNldEd1aWQoR3VpZCkNCg0KKyAgICAg ICAgVlNFT2JqLlNldFZhclN0b3JlSWQgKFZhclN0b3JlSWQpDQoNCisgICAgICAgIFZTRU9iai5T ZXRTaXplKFNpemUpDQoNCisgICAgICAgIFZTRU9iai5TZXROYW1lKFN0b3JlTmFtZSkNCg0KKw0K DQorICAgICAgICBjdHguTm9kZS5EYXRhID0gVlNFT2JqDQoNCisNCg0KKyAgICAgICAgcmV0dXJu IGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyVmFyU3RvcmVFZmlBdHRyLg0KDQorICAgIGRlZiB2aXNpdFZmclZh clN0b3JlRWZpQXR0cihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0 ckNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisg ICAgICAgIGN0eC5BdHRyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5BdHRyDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUuDQoN CisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIFZTTlZPYmogPSBDSWZyVmFyU3RvcmVOYW1lVmFsdWUoKQ0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIEd1aWQgPSBjdHguZ3Vp ZERlZmluaXRpb24oKS5HdWlkDQoNCisgICAgICAgIEhhc1ZhclN0b3JlSWQgPSBGYWxzZQ0KDQor ICAgICAgICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAg ICAgICBpZiBjdHguVmFySWQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgSGFzVmFyU3RvcmVJ ZCA9IFRydWUNCg0KKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 LklELnRleHQpDQoNCisgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihWYXJT dG9yZUlkICE9MCwgVHJ1ZSwgY3R4LklELmxpbmUsIGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBu b3QgYWxsb3dlZCcpDQoNCisNCg0KKyAgICAgICAgU3RvcmVOYW1lID0gY3R4LlNOLnRleHQNCg0K KyAgICAgICAgQ3JlYXRlZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgc0luZGV4ID0gMCBpZiAg SGFzVmFyU3RvcmVJZCA9PSBGYWxzZSBlbHNlIDENCg0KKyAgICAgICAgZUluZGV4ID0gbGVuKGN0 eC5OYW1lKCkpDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKHNJbmRleCwgZUluZGV4KToNCg0K KyAgICAgICAgICAgIGlmIENyZWF0ZWQgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVOYW1lVmFyU3RvcmVCZWdp bihTdG9yZU5hbWUsIFZhclN0b3JlSWQpLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQpDQoNCisg ICAgICAgICAgICAgICAgQ3JlYXRlZCA9IFRydWUNCg0KKyAgICAgICAgICAgIEl0ZW0gPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgIGdDVmZyRGF0YVN0b3Jh Z2UuTmFtZVRhYmxlQWRkSXRlbShJdGVtKQ0KDQorDQoNCisgICAgICAgIGdDVmZyRGF0YVN0b3Jh Z2UuRGVjbGFyZU5hbWVWYXJTdG9yZUVuZChHdWlkKQ0KDQorDQoNCisgICAgICAgIFZTTlZPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBWU05WT2JqLlNldEd1aWQoR3Vp ZCkNCg0KKyAgICAgICAgVmFyc3RvcmVJZCwgUmV0dXJuQ29kZSA9IGdDVmZyRGF0YVN0b3JhZ2Uu R2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsIEd1aWQpDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICBW U05WT2JqLlNldFZhclN0b3JlSWQoVmFyc3RvcmVJZCkNCg0KKw0KDQorICAgICAgICBjdHguTm9k ZS5EYXRhID0gVlNOVk9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 RGlzYWJsZUlmRm9ybVNldChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERp c2FibGVJZkZvcm1TZXRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBESU9iaiA9IENJZnJEaXNh YmxlSWYoKQ0KDQorICAgICAgICBESU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisg ICAgICAgIHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb24gPSBUcnVlDQoNCisgICAgICAg IGN0eC5Ob2RlLkRhdGEgPSBESU9iag0KDQorICAgICAgICBDb25kaXRpb24gPSAnZGlzYWJsZWlm JyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKCkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9IENvbmRpdGlvbg0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBj dHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Lg0KDQorICAgIGRlZiB2 aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXRDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBTSU9iaiA9IENJZnJTdXBwcmVzc0lmKCkNCg0KKyAgICAgICAgU0lPYmouU2V0TGluZU5vKGN0 eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gU0lPYmoNCg0KKyAgICAg ICAgQ29uZGl0aW9uID0gJ3N1cHByZXNzaWYnICsgJyAnICsgIHNlbGYuX19FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIGN0eC5Ob2Rl LkNvbmRpdGlvbiA9IENvbmRpdGlvbg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2d1aWRTdWJEZWZpbml0aW9u Lg0KDQorICAgIGRlZiB2aXNpdEd1aWRTdWJEZWZpbml0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQ YXJzZXIuR3VpZFN1YkRlZmluaXRpb25Db250ZXh0KToNCg0KKw0KDQorICAgICAgICBjdHguR3Vp ZC5EYXRhNFswXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICBj dHguR3VpZC5EYXRhNFsxXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAg ICAgICBjdHguR3VpZC5EYXRhNFsyXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0K DQorICAgICAgICBjdHguR3VpZC5EYXRhNFszXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KDMpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs0XSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDQpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs1XSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDUpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs2XSA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDYpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs3XSA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDcpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ3VpZERlZmluaXRpb24uDQoNCisgICAgZGVm IHZpc2l0R3VpZERlZmluaXRpb24oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5p dGlvbkNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisNCg0KKyAgICAgICAgY3R4Lkd1aWQuRGF0YTEgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigwKSkNCg0KKyAgICAgICAgY3R4Lkd1aWQuRGF0YTIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigxKSkNCg0KKyAgICAgICAgY3R4Lkd1aWQuRGF0YTMgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigyKSkNCg0KKw0KDQorICAgICAgICByZXR1cm4gTm9uZQ0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ2V0U3Ry aW5nSWQuDQoNCisgICAgZGVmIHZpc2l0R2V0U3RyaW5nSWQoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5HZXRTdHJpbmdJZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGN0eC5TdHJpbmdJZCA9 IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRIZWFkZXIuDQoNCisg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SGVhZGVyKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgY3R4Lk9wT2JqID0g Y3R4LnBhcmVudEN0eC5PcE9iag0KDQorICAgICAgICBpZiBjdHguT3BPYmogIT0gTm9uZToNCg0K KyAgICAgICAgICAgIFByb21wdCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQor ICAgICAgICAgICAgY3R4Lk9wT2JqLlNldFByb21wdChQcm9tcHQpDQoNCisgICAgICAgICAgICBI ZWxwID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBjdHgu T3BPYmouU2V0SGVscChIZWxwKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25IZWFkZXIuDQoNCisgICAgZGVmIHZpc2l0 VmZyUXVlc3Rpb25IZWFkZXIoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkhl YWRlckNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGN0eC5PcE9iaiA9IGN0eC5wYXJlbnRDdHgu T3BPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyUXVlc3Rpb25CYXNlSW5mby4NCg0KKyAgICBkZWYgdmlzaXRWZnJRdWVzdGlvbkJhc2VJ bmZvKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGN0eC5PcE9iaiA9IGN0eC5wYXJlbnRDdHguT3BPYmoNCg0KKw0K DQorICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9PVEhFUg0KDQor ICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0gMA0KDQorICAgICAgICBjdHguQmFz ZUluZm8uSW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCg0KKyAgICAgICAg Y3R4LkJhc2VJbmZvLlZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KDQorICAg ICAgICBjdHguQmFzZUluZm8uSXNCaXRWYXIgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgIFFOYW1l ID0gTm9uZQ0KDQorICAgICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAg ICAgICBSZXR1cm5Db2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisgICAgICAgIGlmIGN0eC5OYW1lKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IFFOYW1lID0gY3R4LlFOLnRleHQNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBzZWxmLl9f Q1ZmclF1ZXN0aW9uREIuRmluZFF1ZXN0aW9uQnlOYW1lKFFOYW1lKQ0KDQorICAgICAgICAgICAg c2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOREVGSU5FRCwgY3R4LlFOLmxpbmUsIGN0eC5RTi50ZXh0LCAnaGFzIGFscmVhZHkg YmVlbiB1c2VkIHBsZWFzZSB1c2VkIGFudGhlciBuYW1lJykNCg0KKw0KDQorICAgICAgICBWYXJJ ZFN0ciA9ICcnIGlmIGN0eC5WYXJJZCgpID09IE5vbmUgZWxzZSAgY3R4LnZmclN0b3JhZ2VWYXJJ ZCgpLlZhcklkU3RyDQoNCisgICAgICAgIGlmIGN0eC5RdWVzdGlvbklkKCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIFFJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4dCkNCg0KKyAgICAg ICAgICAgIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuRmluZFF1ZXN0aW9uQnlJ ZChRSWQpDQoNCisgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELCBjdHguSUQubGluZSwgY3R4 LklELnRleHQsICdoYXMgYWxyZWFkeSBiZWVuIHVzZWQgcGxlYXNlIHVzZWQgYW50aGVyIG51bWJl cicpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fTk9STUFMOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0lzQ2hlY2tCb3hPcDoNCg0K KyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9CT09M RUFODQoNCisgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0aW9u REIuUmVnaXN0ZXJRdWVzdGlvbihRTmFtZSwgVmFySWRTdHIsIFFJZCkNCg0KKyAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LnN0YXJ0LmxpbmUpDQoNCisNCg0K KyAgICAgICAgZWxpZiBjdHguUVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRF Og0KDQorICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfREFU RQ0KDQorICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRC LlJlZ2lzdGVyTmV3RGF0ZVF1ZXN0aW9uKFFOYW1lLCBWYXJJZFN0ciwgUUlkKQ0KDQorICAgICAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCg0K Kw0KDQorICAgICAgICBlbGlmIGN0eC5RVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9O X1RJTUU6DQoNCisgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQ RV9USU1FDQoNCisgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0 aW9uREIuUmVnaXN0ZXJOZXdUaW1lUXVlc3Rpb24oUU5hbWUsIFZhcklkU3RyLCBRSWQpDQoNCisg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5l KQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fUkVGOg0KDQorICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZS X1RZUEVfUkVGDQoNCisgICAgICAgICAgICBpZiBWYXJJZFN0ciAhPSAnJzogI3N0YW5kIGZvciBx dWVzdGlvbiB3aXRoIHN0b3JhZ2UuDQoNCisgICAgICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2Rl ID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUmVmUXVlc3Rpb24oUU5hbWUsIFZhcklk U3RyLCBRSWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUXVl c3Rpb24oUU5hbWUsIE5vbmUsIFFJZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f RkFUQUxfRVJST1IsIGN0eC5zdGFydC5saW5lKQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19DdXJy UWVzdFZhckluZm8gPSBjdHguQmFzZUluZm8NCg0KKw0KDQorICAgICAgICBpZiBjdHguT3BPYmog IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5PcE9iai5TZXRRdWVzdGlvbklkKFFJZCkNCg0K KyAgICAgICAgICAgIGlmIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9J RF9JTlZBTElEOg0KDQorICAgICAgICAgICAgICAgIGN0eC5PcE9iai5TZXRWYXJTdG9yZUluZm8o Y3R4LkJhc2VJbmZvKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguT3BPYmoNCg0KKw0KDQor DQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRRdWVzdGlvbmhlYWRl ckZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdz RmllbGRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorICAgICAgICBpZiBjdHguUmVhZE9ubHlGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5RSEZsYWcgPSAweDAxDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguSW50ZXJhY3RpdmVG bGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDA0DQoNCisNCg0K KyAgICAgICAgZWxpZiBjdHguUmVzZXRSZXF1aXJlZEZsYWcoKSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgY3R4LlFIRmxhZyA9IDB4MTANCg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5SZXN0U3R5 bGVGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDIwDQoNCisN Cg0KKyAgICAgICAgZWxpZiBjdHguUmVjb25uZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDQwDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHgu T3B0aW9uT25seUZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRs ZS5IYW5kbGVXYXJuaW5nKEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRF RF9GUkFNRVdPUktfT1BDT0RFLCBjdHguTy5saW5lLCBjdHguTy50ZXh0KQ0KDQorDQoNCisgICAg ICAgIGVsaWYgY3R4Lk5WQWNjZXNzRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBnQ1Zm ckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5J TkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoN CisNCg0KKyAgICAgICAgZWxpZiBjdHguTGF0ZUNoZWNrRmxhZygpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NP REUuVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5MLmxpbmUsIGN0 eC5MLnRleHQpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5RSEZsYWcNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdG9y YWdlVmFySWRSdWxlMS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMShzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZFJ1bGUxQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBTTmFt ZSA9IGN0eC5TTjEudGV4dA0KDQorICAgICAgICBjdHguVmFySWRTdHIgKz0gU05hbWUNCg0KKw0K DQorICAgICAgICBJZHggPSBzZWxmLl9fVHJhbnNOdW0oY3R4LkkudGV4dCkNCg0KKyAgICAgICAg Y3R4LlZhcklkU3RyICs9ICdbJw0KDQorICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LkkudGV4 dA0KDQorICAgICAgICBjdHguVmFySWRTdHIgKz0gJ10nDQoNCisNCg0KKyAgICAgICAgY3R4LkJh c2VJbmZvLlZhclN0b3JlSWQsIFJldHVybkNvZGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0 b3JlSWQoU05hbWUpDQoNCisgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9 PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMS5saW5lLCBjdHguU04xLnRleHQpDQoN CisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGF0YVN0b3JhZ2UuR2V0TmFt ZVZhclN0b3JlSW5mbyhjdHguQmFzZUluZm8sIElkeCksIGN0eC5TTjEubGluZSwgY3R4LlNOMS50 ZXh0KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguVmFySWRTdHINCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0 b3JhZ2VWYXJJZFJ1bGUyLg0KDQorICAgIGRlZiB2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUyKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkUnVsZTJDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIFZh clN0ciA9ICcnICMgdHlwZS5maWVsZA0KDQorICAgICAgICBTTmFtZSA9IGN0eC5TTjIudGV4dA0K DQorICAgICAgICBjdHguVmFySWRTdHIgKz0gU05hbWUNCg0KKyAgICAgICAgY3R4LkJhc2VJbmZv LlZhclN0b3JlSWQsIFJldHVybkNvZGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQo U05hbWUpDQoNCisgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9PSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMi5saW5lLCBjdHguU04yLnRleHQpDQoNCisgICAg ICAgICAgICBWYXJTdG9yZVR5cGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShj dHguQmFzZUluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgICAgIGlmIFZhclN0b3JlVHlwZSA9 PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFyU3Rv cmVUeXBlID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9C SVRTOg0KDQorICAgICAgICAgICAgICAgIFROYW1lLCBSZXR1cm5Db2RlMiA9IGdDVmZyRGF0YVN0 b3JhZ2UuR2V0QnVmZmVyVmFyU3RvcmVEYXRhVHlwZU5hbWUoY3R4LkJhc2VJbmZvLlZhclN0b3Jl SWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlMiwg Y3R4LlNOMi5saW5lLCBjdHguU04yLnRleHQpDQoNCisgICAgICAgICAgICAgICAgVmFyU3RyICs9 IFROYW1lDQoNCisNCg0KKyAgICAgICAgQ291bnQgPSBsZW4oY3R4LkRvdCgpKQ0KDQorICAgICAg ICBmb3IgaSBpbiByYW5nZSgwLCBDb3VudCk6DQoNCisgICAgICAgICAgICBpZiBjdHguQ2hlY2tG bGFnIG9yIFJldHVybkNvZGUgPT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoN CisgICAgICAgICAgICAgICAgY29uZCA9IChWYXJTdG9yZVR5cGUgIT0gRUZJX1ZGUl9WQVJTVE9S RV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSKSBhbmQgKFZhclN0b3JlVHlwZSAhPSBFRklf VkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUykNCg0KKyAgICAg ICAgICAgICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNU T1JFX1VTRV9FUlJPUiBpZiBjb25kIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0 eC5TTjIubGluZSwgY3R4LlNOMi50ZXh0KQ0KDQorDQoNCisgICAgICAgICAgICBjdHguVmFySWRT dHIgKz0gJy4nDQoNCisgICAgICAgICAgICBWYXJTdHIgKz0gJy4nDQoNCisgICAgICAgICAgICBj dHguVmFySWRTdHIgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHINCg0KKyAgICAgICAgICAgIFZh clN0ciArPSBjdHguYXJyYXlOYW1lKGkpLlN1YlN0cloNCg0KKw0KDQorICAgICAgICBpZiBWYXJT dG9yZVR5cGUgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0K DQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkdldEVm aVZhclN0b3JlSW5mbyhjdHguQmFzZUluZm8pLCBjdHguU04yLmxpbmUsIGN0eC5TTjIudGV4dCkN Cg0KKw0KDQorICAgICAgICBlbGlmIFZhclN0b3JlVHlwZSA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZ UEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFyU3RvcmVUeXBlID09IEVGSV9WRlJfVkFS U1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRTOg0KDQorICAgICAgICAgICAg Y3R4LkJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0LCBjdHguQmFzZUluZm8uVmFyVHlwZSwgY3R4LkJh c2VJbmZvLlZhclRvdGFsU2l6ZSwgY3R4LkJhc2VJbmZvLklzQml0VmFyLCBSZXR1cm5Db2RlID0g Z0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVmFyU3RyKQ0KDQorICAgICAgICAg ICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04yLmxpbmUsIFZhclN0cikN Cg0KKyAgICAgICAgICAgIFZhckd1aWQgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlR3Vp ZChjdHguQmFzZUluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoZ0NWZnJCdWZmZXJDb25maWcuUmVnaXN0ZXIoU05hbWUsIFZhckd1aWQpLCBjdHguU04y LmxpbmUpDQoNCisgICAgICAgICAgICBEdW1teSA9IHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUN Cg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBWZnJSZXR1cm5Db2RlKGdDVmZyQnVmZmVyQ29u ZmlnLldyaXRlKA0KDQorICAgICAgICAgICAgICAgICdhJywNCg0KKyAgICAgICAgICAgICAgICBT TmFtZSwNCg0KKyAgICAgICAgICAgICAgICBWYXJHdWlkLA0KDQorICAgICAgICAgICAgICAgIE5v bmUsDQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUsDQoNCisgICAgICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0LA0KDQorICAgICAgICAgICAgICAg IGN0eC5CYXNlSW5mby5WYXJUb3RhbFNpemUsDQoNCisgICAgICAgICAgICAgICAgRHVtbXkpKSAj 44CAdGhlIGRlZmluaXRpb24gb2YgZHVtbXkgaXMgbmVlZGVkIHRvIGNoZWNrDQoNCisgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTjIubGluZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5BZGRCdWZmZXJW YXJTdG9yZUZpZWxkSW5mbyhjdHguQmFzZUluZm8pLCBjdHguU04yLmxpbmUpDQoNCisNCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5WYXJJZFN0cg0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckNvbnN0YW50VmFsdWVGaWVsZC4NCg0K KyAgICBkZWYgdmlzaXRWZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBJbnREZWNTdHlsZSA9IEZhbHNlDQoNCisg ICAgICAgIGlmIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YSAhPSBOb25lIGFuZCBzZWxmLl9fQ3Vy cmVudE1pbk1heERhdGEuSXNOdW1lcmljT3Bjb2RlKCk6DQoNCisgICAgICAgICAgICBOdW1lcmlj UXN0ID0gQ0lmck51bWVyaWMoc2VsZi5fX0N1cnJlbnRRdWVzdGlvbikgIw0KDQorICAgICAgICAg ICAgSW50RGVjU3R5bGUgPSBUcnVlIGlmIChOdW1lcmljUXN0LkdldE51bWVyaWNGbGFncygpICYg RUZJX0lGUl9ESVNQTEFZKSA9PSAwIGVsc2UgRmFsc2UgIw0KDQorDQoNCisgICAgICAgIGlmIGN0 eC5UcnVlU3ltYm9sKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS5iID0gMQ0K DQorDQoNCisgICAgICAgIGVsaWYgY3R4LkZhbHNlU3ltYm9sKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5WYWx1ZS5iID0gMA0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4Lk9uZSgpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguVmFsdWUudTggPSBpbnQoY3R4LmdldFRleHQoKSkN Cg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5PbmVzKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5WYWx1ZS51NjQgPSBpbnQoY3R4LmdldFRleHQoKSkNCg0KKw0KDQorICAgICAgICBlbGlm IGN0eC5aZXJvKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS51OCA9IGludChj dHguZ2V0VGV4dCgpKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LkNvbG9uKCkgIT0gW106DQoN CisgICAgICAgICAgICBjdHguVmFsdWUudGltZS5Ib3VyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoMCkpDQoNCisgICAgICAgICAgICBjdHguVmFsdWUudGltZS5NaW51dGUgPSBzZWxmLl9f VHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS50aW1lLlNl Y29uZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KDQorDQoNCisgICAgICAgIGVs aWYgY3R4LlNsYXNoKCkgIT0gW106DQoNCisgICAgICAgICAgICBjdHguVmFsdWUuZGF0ZS5ZZWFy ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICBjdHguVmFs dWUuZGF0ZS5Nb250aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAg ICAgICAgY3R4LlZhbHVlLmRhdGUuRGF5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMikp DQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguU2VtaWNvbG9uKCkgIT0gW106DQoNCisgICAgICAg ICAgICBjdHguVmFsdWUucmVmLlF1ZXN0aW9uSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigwKSkNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS5yZWYuRm9ybUlkID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBjdHguVmFsdWUucmVmLkRldmljZVBh dGggPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCg0KKyAgICAgICAgICAgIGN0eC5W YWx1ZS5yZWYuRm9ybVNldEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQoNCisNCg0K KyAgICAgICAgZWxpZiBjdHguU3RyaW5nVG9rZW4oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg Y3R4LlZhbHVlLnN0cmluZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorDQoN CisgICAgICAgIGVsaWYgY3R4Lk9wZW5CcmFjZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBj dHguTGlzdFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4 Lk51bWJlcigpKSk6DQoNCisgICAgICAgICAgICAgICAgVGVtcFZhbHVlID0gRUZJX0lGUl9UWVBF X1ZBTFVFKCkNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1f U0laRV84Og0KDQorICAgICAgICAgICAgICAgICAgICBUZW1wVmFsdWUudTggPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlz dC5hcHBlbmQoVGVtcFZhbHVlKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAgICAgICAgICAgICAgIFRlbXBWYWx1 ZS51MTYgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgICAg ICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVGVtcFZhbHVlKQ0KDQorDQoNCisgICAgICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAg ICAgICAgICAgIFRlbXBWYWx1ZS51MzIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkN Cg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVGVtcFZhbHVlKQ0K DQorDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf NjQ6DQoNCisgICAgICAgICAgICAgICAgICAgIFRlbXBWYWx1ZS51NjQgPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5h cHBlbmQoVGVtcFZhbHVlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgTmVnYXRp dmUgPSBUcnVlIGlmIGN0eC5OZWdhdGl2ZSgpICE9IE5vbmUgZWxzZSBGYWxzZQ0KDQorICAgICAg ICAgICAgIyBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdCBmaWVsZHMgaXMgYWx3YXlzIHNldCB0byBV SU5UMzIgdHlwZS4NCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNC aXRWYXI6DQoNCisgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnUzMiA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICAg ICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCg0KKyAgICAgICAgICAgICAg ICAgICAgY3R4LlZhbHVlLnU4ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisg ICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgaWYgTmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIGN0 eC5WYWx1ZS51OCA+IDB4ODA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLCBjdHguc3RhcnQubGluZSwgIklOVDggdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGLCBzbWFs bCB0aGFuIC0weDgwIikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnU4ID4gMHg3RjoNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5zdGFydC5saW5lLCAiSU5UOCB0 eXBlIGNhbid0IGJpZyB0aGFuIDB4N0YsIHNtYWxsIHRoYW4gLTB4ODAiKQ0KDQorICAgICAgICAg ICAgICAgICAgICBpZiBOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5W YWx1ZS51OCA9IH5jdHguVmFsdWUudTggKyAxDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAgICAg Y3R4LlZhbHVlLnUxNiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIE5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICBjdHguVmFs dWUudTE2ID4gMHg4MDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgY3R4LnN0YXJ0LmxpbmUsICJJTlQxNiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZGRiwgc21h bGwgdGhhbiAtMHg4MDAwIikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnUxNiA+IDB4N0ZGRjoNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5zdGFydC5saW5lLCAi SU5UMTYgdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkYsIHNtYWxsIHRoYW4gLTB4ODAwMCIpDQoN CisgICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgY3R4LlZhbHVlLnUxNiA9IH5jdHguVmFsdWUudTE2ICsgMQ0KDQorDQoNCisgICAgICAg ICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAg ICAgICAgICAgICAgIGN0eC5WYWx1ZS51MzIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigw KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBpZiBOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAgY3R4LlZhbHVlLnUzMiA+IDB4ODAwMDAwMDA6DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLCBjdHguc3RhcnQubGluZSwgIklOVDMyIHR5cGUgY2FuJ3QgYmln IHRoYW4gMHg3RkZGRkZGRiwgc21hbGwgdGhhbiAtMHg4MDAwMDAwMCIpDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN0 eC5WYWx1ZS51MzIgPiAwWDdGRkZGRkZGOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiwgY3R4LnN0YXJ0LmxpbmUsICJJTlQzMiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4 N0ZGRkZGRkYsIHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAiKQ0KDQorICAgICAgICAgICAgICAgICAg ICBpZiBOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS51MzIg PSB+Y3R4LlZhbHVlLnUzMiArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgICAgICBjdHguVmFs dWUudTY0ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICAg ICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgTmVn YXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIGN0eC5WYWx1ZS51NjQg PiAweDgwMDAwMDAwMDAwMDAwMDA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLCBjdHguc3RhcnQubGluZSwgIklOVDY0IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZG RkZGRkZGRkZGRkZGLCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwMDAwMDAwMDAiKQ0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBjdHguVmFsdWUudTY0ID4gMHg3RkZGRkZGRkZGRkZGRkZGOg0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4LnN0YXJ0LmxpbmUsICJJTlQ2NCB0eXBlIGNhbid0 IGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRiwgc21hbGwgdGhhbiAtMHg4MDAwMDAwMDAwMDAw MDAwIikNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBjdHguVmFsdWUudTY0ID0gfmN0eC5WYWx1ZS51NjQgKyAxDQoNCisNCg0K KyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KDQorICAg ICAgICAgICAgICAgICAgICBjdHguVmFsdWUuYiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KDApKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9P TEVBTjoNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnN0cmluZyA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguVmFsdWUs IGN0eC5WYWx1ZUxpc3QNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckltYWdlVGFnLg0KDQorICAgIGRlZiB2aXNpdFZm ckltYWdlVGFnKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBJT2JqID0gQ0lmckltYWdlKCkNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUp DQoNCisgICAgICAgIElPYmouU2V0SW1hZ2VJZChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigp KSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IElPYmoNCg0KKw0KDQorICAgICAgICByZXR1 cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckxvY2tlZFRhZy4NCg0KKyAgICBkZWYgdmlzaXRWZnJM b2NrZWRUYWcoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJMb2NrZWRUYWdDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBMT2JqPUNJZnJMb2NrZWQoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkN Cg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IExPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRUYWcuDQoNCisgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50U3RhdFRhZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN0YXRUYWdDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorICAgICAgICBpZiBjdHgudmZySW1hZ2VUYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZySW1hZ2VUYWcoKS5Ob2RlDQoNCisgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJMb2NrZWRUYWcoKS5Ob2RlDQoNCisNCg0K KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlz dC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgZm9yIEN0eCBpbiBjdHgu dmZyU3RhdGVtZW50U3RhdFRhZygpOg0KDQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxk KGN0eC5Ob2RlLCBDdHgpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJGb3JtRGVmaW5pdGlvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJGb3JtRGVmaW5pdGlvbihz ZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckZvcm1EZWZpbml0aW9uQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgRk9iaiA9IENJZnJGb3JtKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBGT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkN Cg0KKyAgICAgICAgRm9ybUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisg ICAgICAgIEZPYmouU2V0Rm9ybUlkKEZvcm1JZCkNCg0KKyAgICAgICAgRm9ybVRpdGxlICA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAgICBGT2JqLlNldEZvcm1UaXRs ZShGb3JtVGl0bGUpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZPYmoNCg0KKyAg ICAgICAgZm9yIEN0eCBpbiBjdHgudmZyRm9ybSgpOg0KDQorICAgICAgICAgICAgc2VsZi5fX0lu c2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjdmZyRm9ybS4NCg0KKyAgICBkZWYgdmlzaXRWZnJGb3JtKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpLk5vZGUN Cg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExvY2tlZCgpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRMb2NrZWQoKS5Ob2RlDQoNCisgICAg ICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudERlZmF1bHQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudFN0YXQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZy U3RhdGVtZW50U3RhdCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0 aW9ucygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnRRdWVzdGlvbnMoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRp b25hbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnRDb25kaXRpb25hbCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExhYmVs KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExh YmVsKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50QmFubmVyKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEJhbm5lcigpLk5v ZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEludmFsaWQoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpLk5vZGUNCg0K KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKS5Ob2RlDQoNCisg ICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgpLk5vZGUNCg0KKyAgICAgICAgaWYg Y3R4LnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKS5Ob2RlDQoNCisNCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtTWFwRGVmaW5pdGlvbi4NCg0K KyAgICBkZWYgdmlzaXRWZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgRk1hcE9i aiA9IENJZnJGb3JtTWFwKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K KyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIEZNYXBPYmouU2V0TGlu ZU5vKExpbmUpDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoRk1hcE9iai5TZXRGb3Jt SWQoc2VsZi5fX1RyYW5zTnVtKGN0eC5TMS50ZXh0KSksIGN0eC5TMS5saW5lLCBjdHguUzEubGlu ZSkNCg0KKyAgICAgICAgRm9ybU1hcE1ldGhvZE51bWJlciA9IGxlbihjdHguTWFwVGl0bGUoKSkN Cg0KKyAgICAgICAgaWYgRm9ybU1hcE1ldGhvZE51bWJlciA9PSAwOg0KDQorICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsIExpbmUsICdObyBNYXBNZXRob2QgaXMgc2V0IGZvciBGb3JtTWFwIScpDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBGb3JtTWFwTWV0aG9k TnVtYmVyKToNCg0KKyAgICAgICAgICAgICAgICBGTWFwT2JqLlNldEZvcm1NYXBNZXRob2Qoc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoaSsxKSksIGN0eC5ndWlkRGVmaW5pdGlvbihpKS5HdWlk KQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gRk1hcE9iag0KDQorICAgICAgICBmb3IgQ3R4 IGluIGN0eC52ZnJGb3JtKCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4 Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudEltYWdlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEltYWdlKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJJbWFnZVRhZygpLk5vZGUNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRMb2NrZWQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50TG9ja2Vk KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZyTG9ja2VkVGFnKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN2ZnJTdGF0ZW1lbnRSdWxlcy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSdWxl cyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJ1bGVzQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgUk9iaiA9IENJZnJSdWxlKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBST2JqLlNldExpbmVObyhjdHguc3RhcnQubGlu ZSkNCg0KKyAgICAgICAgUnVsZU5hbWUgPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRp ZmllcigpKQ0KDQorICAgICAgICBzZWxmLl9fQ1ZmclJ1bGVzREIuUmVnaXN0ZXJSdWxlKFJ1bGVO YW1lKQ0KDQorICAgICAgICBST2JqLlNldFJ1bGVJZChzZWxmLl9fQ1ZmclJ1bGVzREIuR2V0UnVs ZUlkKFJ1bGVOYW1lKSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJPYmoNCg0KKyAgICAg ICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgIyBleHByZXNzaW9uDQoN CisgICAgICAgICMgZW5kIHJ1bGUNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50U3RhdC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0KHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1l bnRTdWJUaXRsZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRTdWJUaXRsZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0 YXRpY1RleHQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50U3RhdGljVGV4dCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENy b3NzUmVmZXJlbmNlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudENyb3NzUmVmZXJlbmNlKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCg0KKw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3ViVGl0bGUuDQoNCisgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50U3ViVGl0bGUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRTdWJUaXRsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIFNPYmogPSBjdHguT3BPYmoNCg0K Kw0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgU09iai5TZXRM aW5lTm8oTGluZSkNCg0KKw0KDQorICAgICAgICBQcm9tcHQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigpKQ0KDQorICAgICAgICBTT2JqLlNldFByb21wdChQcm9tcHQpDQoNCisNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHgudmZy U3VidGl0bGVGbGFncygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBTT2JqLlNldEZsYWdzKGN0 eC52ZnJTdWJ0aXRsZUZsYWdzKCkuU3ViRmxhZ3MpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUu RGF0YSA9IFNPYmoNCg0KKyAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBjdHgu dmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QoKSkNCg0KKyAgICAgICAgIyBzZXF1ZW5jZSBxdWVzdGlv bg0KDQorICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVu dCgpOg0KDQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoN CisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3ViVGl0bGVD b21wb25lbnQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENv bnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAg ICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkuTm9kZQ0KDQorICAgICAg ICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN0YXQoKS5Ob2RlDQoNCisgICAgICAgIHJldHVybiBj dHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3VidGl0bGVGbGFncy4NCg0KKyAgICBkZWYgdmlzaXRWZnJT dWJ0aXRsZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVGbGFnc0Nv bnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K KyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN1YnRpdGxlRmxhZ3NGaWVsZCgpOg0K DQorICAgICAgICAgICAgY3R4LlN1YkZsYWdzIHw9IEZsYWdzRmllbGRDdHguRmxhZw0KDQorDQoN CisgICAgICAgIHJldHVybiBOb25lDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzdWJ0aXRsZUZsYWdzRmllbGQuDQoNCisg ICAgZGVmIHZpc2l0U3VidGl0bGVGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu U3VidGl0bGVGbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJl cigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKCkpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9 IDB4MDENCg0KKw0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K Kw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRpY1RleHQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50U3RhdGljVGV4dChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRp Y1RleHRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQoNCisgICAgICAg IEhlbHAgPSBzZWxmLl9fVHJhbnNOdW0oY3R4LlMxLnRleHQpDQoNCisgICAgICAgIFByb21wdCA9 IHNlbGYuX19UcmFuc051bShjdHguUzIudGV4dCkNCg0KKyAgICAgICAgVHh0VHdvID0gRUZJX1NU UklOR19JRF9JTlZBTElEDQoNCisgICAgICAgIGlmIGN0eC5TMyAhPSBOb25lOg0KDQorICAgICAg ICAgICAgVHh0VHdvID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5TMy50ZXh0KQ0KDQorDQoNCisgICAg ICAgIFRleHRGbGFncyA9IDANCg0KKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN0 YXRpY1RleHRGbGFnc0ZpZWxkKCk6DQoNCisgICAgICAgICAgICBUZXh0RmxhZ3MgfD0gRmxhZ3NG aWVsZEN0eC5GbGFnDQoNCisNCg0KKyAgICAgICAgaWYgVGV4dEZsYWdzICYgRUZJX0lGUl9GTEFH X0NBTExCQUNLOg0KDQorICAgICAgICAgICAgaWYgVHh0VHdvICE9IEVGSV9TVFJJTkdfSURfSU5W QUxJRDoNCg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmco RUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhfVEVYVF9UV08sIGN0 eC5TMy5saW5lLCBjdHguUzMudGV4dCkNCg0KKw0KDQorICAgICAgICAgICAgQU9iaiA9IENJZnJB Y3Rpb24oKQ0KDQorICAgICAgICAgICAgUUlkLCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJl Z2lzdGVyUXVlc3Rpb24oTm9uZSwgTm9uZSwgUUlkKQ0KDQorICAgICAgICAgICAgQU9iai5TZXRM aW5lTm8oY3R4LkYubGluZSkNCg0KKyAgICAgICAgICAgIEFPYmouU2V0UXVlc3Rpb25JZChRSWQp DQoNCisgICAgICAgICAgICBBT2JqLlNldEhlbHAoSGVscCkNCg0KKyAgICAgICAgICAgIEFPYmou U2V0UHJvbXB0KFByb21wdCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoQU9i ai5TZXRGbGFncyhUZXh0RmxhZ3MpLCBjdHguRi5saW5lKQ0KDQorICAgICAgICAgICAgaWYgY3R4 LktleSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgS2V5ID0gc2VsZi5fX1RyYW5zTnVt KGN0eC5TNC50ZXh0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktl eShBT2JqLCBLZXkpDQoNCisgICAgICAgICAgICBjdHguTm9kZS5EYXRhID0gQU9iag0KDQorICAg ICAgICAgICAgY3R4Lk5vZGUuT3BDb2RlID0gRUZJX0lGUl9BQ1RJT05fT1AgIw0KDQorDQoNCisg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBUT2JqID0gQ0lmclRleHQoKQ0KDQorICAgICAg ICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgICAgICBUT2JqLlNldExpbmVO byhMaW5lKQ0KDQorICAgICAgICAgICAgVE9iai5TZXRIZWxwKEhlbHApDQoNCisgICAgICAgICAg ICBUT2JqLlNldFByb21wdChQcm9tcHQpDQoNCisgICAgICAgICAgICBUT2JqLlNldFRleHRUd28o VHh0VHdvKQ0KDQorICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFRPYmoNCg0KKw0KDQorICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3RhdGljVGV4dEZsYWdzRmllbGQu DQoNCisgICAgZGVmIHZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRh eFBhcnNlci5TdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTi50 ZXh0KQ0KDQorICAgICAgICAgICAgaWYgY3R4LkZsYWcgIT0gMDoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRF RCwgY3R4Lk4ubGluZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKw0KDQorICAgICAgICAgICAgY3R4 LkZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQoNCisNCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5GbGFnDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5j ZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZShzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZm clN0YXRlbWVudEdvdG8oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50R290bygpLk5vZGUNCg0KKyAgICAgICAgZWxpZiBjdHgudmZyU3RhdGVtZW50 UmVzZXRCdXR0b24oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZy U3RhdGVtZW50UmVzZXRCdXR0b24oKS5Ob2RlDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0K DQorDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRHb3RvLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudEdvdG8oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHb3RvQ29udGV4 dCk6DQoNCisNCg0KKyAgICAgICAgUmVmVHlwZSA9IDUNCg0KKyAgICAgICAgRGV2UGF0aCA9IEVG SV9TVFJJTkdfSURfSU5WQUxJRA0KDQorICAgICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5W QUxJRA0KDQorICAgICAgICBCaXRNYXNrID0gMA0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCg0KKyAgICAgICAgUjVPYmogPSBDSWZyUmVmNSgpDQoNCisgICAgICAgIFI1T2JqLlNl dExpbmVObyhMaW5lKQ0KDQorICAgICAgICBjdHguT3BPYmogPSBSNU9iag0KDQorICAgICAgICAj Y3R4Lk9IT2JqID0gUjVPYmoNCg0KKw0KDQorICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBSZWZUeXBlID0gNA0KDQorICAgICAgICAgICAgRGV2UGF0 aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgRklkID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBRSWQgPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCg0KKyAgICAgICAgICAgIFI0T2JqID0gQ0lmclJl ZjQoKQ0KDQorICAgICAgICAgICAgUjRPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgICAg ICBSNE9iai5TZXREZXZpY2VQYXRoKERldlBhdGgpDQoNCisgICAgICAgICAgICBSNE9iai5TZXRG b3JtSWQoRklkKQ0KDQorICAgICAgICAgICAgUjRPYmouU2V0UXVlc3Rpb25JZChRSWQpDQoNCisg ICAgICAgICAgICBjdHguT3BPYmogPSBSNE9iag0KDQorICAgICAgICAgICAgI2N0eC5PSE9iaiA9 IFI0T2JqDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguRm9ybVNldEd1aWQoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgUmVmVHlwZSA9IDMNCg0KKyAgICAgICAgICAgIEZJZCA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBSM09iaiA9IENJZnJSZWYzKCkNCg0K KyAgICAgICAgICAgIFIzT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgUjNPYmou U2V0Rm9ybUlkKEZJZCkNCg0KKyAgICAgICAgICAgIFIzT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0K DQorICAgICAgICAgICAgY3R4Lk9wT2JqID0gUjNPYmoNCg0KKyAgICAgICAgICAgICNjdHguT0hP YmogPSBSM09iag0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LkZvcm1JZCgpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBGSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCg0KKyAg ICAgICAgICAgIFJlZlR5cGUgPSAyDQoNCisgICAgICAgICAgICBpZiBjdHguUU4gIT0gTm9uZToN Cg0KKyAgICAgICAgICAgICAgICBOYW1lID0gY3R4LlFOLnRleHQNCg0KKyAgICAgICAgICAgICAg ICBRSWQsIEJpdE1hc2ssIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChO YW1lKQ0KDQorICAgICAgICAgICAgICAgIGlmIFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJ RDoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELCBjdHguUU4ubGluZSkNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MSkpDQoNCisgICAgICAgICAgICBSMk9iaiA9IENJZnJSZWYyKCkNCg0KKyAgICAgICAgICAgIFIy T2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgUjJPYmouU2V0Rm9ybUlkKEZJZCkN Cg0KKyAgICAgICAgICAgIFIyT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KDQorICAgICAgICAgICAg Y3R4Lk9wT2JqID0gUjJPYmoNCg0KKyAgICAgICAgIyBjdHguT0hPYmogPSBSMk9iag0KDQorDQoN CisNCg0KKyAgICAgICAgZWxpZiBzdHIoY3R4LmdldENoaWxkKDEpKSA9PSBzdHIoY3R4Lk51bWJl cigwKSk6DQoNCisgICAgICAgICAgICBSZWZUeXBlID0gMQ0KDQorICAgICAgICAgICAgRklkID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICBST2JqID0gQ0lm clJlZigpDQoNCisgICAgICAgICAgICBST2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAg ICAgUk9iai5TZXRGb3JtSWQoRklkKQ0KDQorICAgICAgICAgICAgY3R4Lk9wT2JqID0gUk9iag0K DQorICAgICAgICAjIGN0eC5PSE9iaiA9IFJPYmoNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQoNCisgICAgICAgICAgICBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX1JFRg0KDQorDQoNCisgICAgICAg IGlmIFJlZlR5cGUgPT0gNCBvciBSZWZUeXBlID09IDM6DQoNCisgICAgICAgICAgICBjdHguT3BP YmouU2V0Rm9ybVNldElkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQoNCisgICAgICAgICMg Y3R4Lk9IT2JqLlNldEZvcm1TZXRJZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KDQorDQoN CisgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguT3BP YmouU2V0RmxhZ3MoY3R4LnZmckdvdG9GbGFncygpLkdvdG9GbGFncykNCg0KKyAgICAgICAgIyBj dHguT0hPYmouU2V0RmxhZ3MoY3R4LnZmckdvdG9GbGFncygpLkdvdG9GbGFncykNCg0KKw0KDQor ICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGluZGV4ID0gaW50 KGxlbihjdHguTnVtYmVyKCkpKSAtIDENCg0KKyAgICAgICAgICAgIEtleSA9IHNlbGYuX19UcmFu c051bShjdHguTnVtYmVyKGluZGV4KSkNCg0KKyAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVz dGlvbktleShjdHguT3BPYmosIEtleSkNCg0KKw0KDQorICAgICAgICAjIGN0eC5PSE9iai5TZXRT Y29wZSgxKQ0KDQorICAgICAgICBjdHguT3BPYmouU2V0U2NvcGUoMSkNCg0KKyAgICAgICAgY3R4 Lk5vZGUuRGF0YSA9IGN0eC5PcE9iag0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmckdvdG9GbGFncy4NCg0KKyAgICBkZWYgdmlzaXRWZnJHb3RvRmxhZ3Moc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5WZnJHb3RvRmxhZ3NDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBj dHguZ290b0ZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5Hb3RvRmxhZ3MgfD0gRmxh Z3NGaWVsZEN0eC5GbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Hb3RvRmxhZ3MNCg0K Kw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjZ290b0ZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0R290b0ZsYWdzRmll bGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpOg0KDQor DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYg Y3R4Lk4gIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051bShjdHguTi50 ZXh0KSAhPSAwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBjdHguTi5saW5lKQ0KDQorICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgY3R4LkZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkKCkuUUhGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQoNCisNCg0KKw0K DQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZXNl dEJ1dHRvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlc2V0QnV0dG9u Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0K DQorICAgICAgICBSQk9iaiA9IGN0eC5PcE9iag0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCg0KKyAgICAgICAgUkJPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgIGRlZmF1 bHRzdG9yZSA9IGN0eC5OLnRleHQNCg0KKyAgICAgICAgRGVmYXVsdElkLCBSZXR1cm5Db2RlID0g Z0NWZnJEZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkKGRlZmF1bHRzdG9yZSkNCg0KKyAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lKQ0KDQorICAgICAgICBS Qk9iai5TZXREZWZhdWx0SWQoRGVmYXVsdElkKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRh dGEgPSBSQk9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50UXVlc3Rpb25zLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9u cyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQp Og0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlm IGN0eC52ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgpLk5vZGUNCg0KKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudERhdGUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZyU3RhdGVtZW50RGF0ZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudE51bWVyaWNUeXBlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0g Y3R4LnZmclN0YXRlbWVudE51bWVyaWNUeXBlKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50U3RyaW5nVHlwZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50T3JkZXJlZExpc3QoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50T3JkZXJlZExpc3QoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRUaW1lKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4 LnZmclN0YXRlbWVudFRpbWUoKS5Ob2RlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZy4NCg0KKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnRRdWVzdGlvblRhZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFF1ZXN0aW9uVGFnQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXRUYWcoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdFRhZygpLk5vZGUN Cg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElm KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Tm9TdWJtaXRJZigpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnROb1N1Ym1pdElm KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGlzYWJs ZUlmUXVlc3QoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFJlZnJl c2goKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJz dG9yZURldmljZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEV4dGVuc2lv bigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRF eHRlbnNpb24oKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZl bnQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 UmVmcmVzaEV2ZW50KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50V2Fybmlu Z0lmKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dFdhcm5pbmdJZigpLk5vZGUNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudEluY29uc2lzdGVudElmKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 SW5jb25zaXN0ZW50SWZDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBJSU9iaiA9IENJZnJJbmNv bnNpc3RlbnRJZigpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K KyAgICAgICAgSUlPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBJSU9i ai5TZXRFcnJvcihzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0KKw0KDQorICAgICAg ICBjdHguTm9kZS5EYXRhID0gSUlPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9 IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkp DQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50Tm9TdWJt aXRJZi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQpOg0KDQorICAgICAg ICBOU0lPYmogPSBDSWZyTm9TdWJtaXRJZigpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisNCg0KKyAgICAgICAgTlNJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkN Cg0KKyAgICAgICAgTlNJT2JqLlNldEVycm9yKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkp KQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gTlNJT2JqDQoNCisgICAgICAgIGN0eC5Ob2Rl LkV4cHJlc3Npb24gPSBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50 RXhwcmVzc2lvbigpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 RGlzYWJsZUlmUXVlc3Qoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNh YmxlSWZRdWVzdENvbnRleHQpOg0KDQorICAgICAgICBESU9iaiA9IENJZnJEaXNhYmxlSWYoKQ0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIERJT2Jq LlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERJ T2JqDQoNCisgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPSBzZWxmLl9fRXh0cmFjdE9yaWdp bmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KDQorDQoNCisgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UmVmcmVzaC4NCg0KKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UmVmcmVzaENvbnRleHQpOg0KDQorICAgICAgICBST2JqID0gQ0lmclJlZnJlc2goKQ0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIFJPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBST2JqLlNldFJlZnJlc2hJbnRl cnZhbChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0KKyAgICAgICAgY3R4Lk5vZGUu RGF0YSA9IFJPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRWYXJzdG9yZURldmljZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9y ZURldmljZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3JlRGV2 aWNlQ29udGV4dCk6DQoNCisgICAgICAgIFZET2JqID0gQ0lmclZhclN0b3JlRGV2aWNlKCkNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBWRE9iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIFZET2JqLlNldERldmljZVBhdGgo c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEg PSBWRE9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVu dFJlZnJlc2hFdmVudC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0 KToNCg0KKyAgICAgICAgUmlPYmogPSBDSWZyUmVmcmVzaElkKCkNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBSaU9iai5TZXRMaW5lTm8oY3R4LnN0 YXJ0LmxpbmUpDQoNCisgICAgICAgIFJpT2JqLlNldFJlZnJlc2hFdmVudEdyb3V0SWQoY3R4Lmd1 aWREZWZpbml0aW9uKCkuR3VpZCkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJpT2JqDQoN CisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50V2FybmluZ0lm Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFdhcm5pbmdJZihzZWxmLCBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRleHQpOg0KDQorICAgICAgICBXSU9i aiA9IENJZnJXYXJuaW5nSWYoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisgICAgICAgIFdJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAg ICAgV0lPYmouU2V0V2FybmluZyhzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQoNCisg ICAgICAgIFdJT2JqLlNldFRpbWVPdXQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpKQ0K DQorICAgICAgICBjdHguTm9kZS5EYXRhID0gV0lPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuRXhw cmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVl c3Rpb25UYWdMaXN0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rp b25UYWdMaXN0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoKToN Cg0KKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KDQorICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZy4N Cg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyhzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoKS5Ob2RlDQoNCisNCg0K KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCku Tm9kZQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgpLk5vZGUN Cg0KKw0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkuTm9kZQ0K DQorDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRPcHRpb25zKCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9wdGlvbnMoKS5Ob2RlDQoN CisNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFJlYWQoKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UmVhZCgpLk5vZGUNCg0KKw0KDQor ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50V3JpdGUoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50V3JpdGUoKS5Ob2RlDQoNCisNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3Qu DQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Q29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgU0lPYmogPSBDSWZyU3VwcHJlc3NJZigpDQoNCisgICAgICAgIFNJT2JqLlNl dExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNJT2Jq DQoNCisgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICdzdXBwcmVzc2lmJyArICcgJyArIHNl bGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoN CisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QuDQoNCisgICAgZGVmIHZp c2l0VmZyU3RhdGVtZW50R3JheU91dElmUXVlc3Qoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdENvbnRleHQpOg0KDQorICAgICAgICBHT0lPYmogPSBD SWZyR3JheU91dElmKCkNCg0KKyAgICAgICAgR09JT2JqLlNldExpbmVObyhjdHguc3RhcnQubGlu ZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEdPSU9iag0KDQorICAgICAgICBjdHguTm9k ZS5Db25kaXRpb24gPSAnZ3JheW91dGlmJyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxU ZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2ZsYWdzRmllbGQu DQoNCisgICAgZGVmIHZpc2l0RmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkZs YWdzRmllbGRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0KDQor ICAgICAgICAgICAgQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5H X0NPREUuVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5OLmxpbmUs IGN0eC5OLnRleHQpDQoNCisgICAgICAgIGlmIGN0eC5MICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJf V0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwgY3R4LkwubGluZSwgY3R4LkwudGV4 dCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0K DQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnREZWZhdWx0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERlZmF1bHQo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgSXNFeHAg PSBGYWxzZQ0KDQorICAgICAgICBEZWZhdWx0SWQgPSBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RB TkRBUkQNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisNCg0KKyAgICAgICAg aWYgY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBW YWx1ZSA9IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5WYWx1ZQ0KDQorICAgICAgICAgICAg VmFsdWVMaXN0ID0gY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KDQorICAg ICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KDQorICAgICAg ICAgICAgU2l6ZSA9IDANCg0KKw0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJlbnRNaW5N YXhEYXRhICE9IE5vbmUgYW5kIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5Jc051bWVyaWNPcGNv ZGUoKToNCg0KKyAgICAgICAgICAgICAgICAjIGNoZWNrIGRlZmF1bHQgdmFsdWUgaXMgdmFsaWQg Zm9yIE51bWVyaWMgT3Bjb2RlDQoNCisgICAgICAgICAgICAgICAgaWYgVmFsdWVMaXN0ID09IFtd Og0KDQorICAgICAgICAgICAgICAgICAgICBWYWx1ZUxpc3QuYXBwZW5kKFZhbHVlKQ0KDQorICAg ICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCg0KKyAgICAg ICAgICAgICAgICAgICAgVmFsdWUgPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAgICAgICAgICAg ICAgTnVtZXJpY1FzdCA9IENJZnJOdW1lcmljIChzZWxmLl9fQ3VycmVudFF1ZXN0aW9uKSAjDQoN CisgICAgICAgICAgICAgICAgICAgIGlmIChOdW1lcmljUXN0LkdldE51bWVyaWNGbGFncygpICYg RUZJX0lGUl9ESVNQTEFZKSA9PSAwIGFuZCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFy ID09IEZhbHNlOiAjDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZh bHVlLnU4IDwgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwgRmFsc2Up IG9yIFZhbHVlLnU4ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwg RmFsc2UpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTGluZSwg Ik51bWVyaWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluVmFsdWUgYW5kIE1heFZh bHVlLiIpDQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZh bHVlLnUxNiA8IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNaW5EYXRhKFR5cGUsIEZhbHNl KSBvciBWYWx1ZS51MTYgPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWF4RGF0YShUeXBl LCBGYWxzZSk6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5l LCAiTnVtZXJpYyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW5WYWx1ZSBhbmQgTWF4 VmFsdWUuIikNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg VmFsdWUudTMyIDwgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwgRmFs c2UpIG9yIFZhbHVlLnUzMiA+IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhEYXRhKFR5 cGUsIEZhbHNlKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIExp bmUsICJOdW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBN YXhWYWx1ZS4iKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBWYWx1ZS51NjQgPCBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWluRGF0YShUeXBlLCBG YWxzZSkgb3IgVmFsdWUudTY0ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEo VHlwZSwgRmFsc2UpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwg TGluZSwgIk51bWVyaWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluVmFsdWUgYW5k IE1heFZhbHVlLiIpDQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICMgVmFsdWUgZm9yIHF1ZXN0aW9uIHN0b3JlZCBpbiBiaXQgZmll bGRzIGlzIGFsd2F5cyBzZXQgdG8gVUlOVDMyIHR5cGUuDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIFZhbHVlLnUzMiA8IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5H ZXRNaW5EYXRhKFR5cGUsIFRydWUpIG9yICBWYWx1ZS51MzIgPiBzZWxmLl9fQ3VycmVudE1pbk1h eERhdGEuR2V0TWF4RGF0YShUeXBlLCBUcnVlKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsIExpbmUsICJOdW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3 ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZS51NjQgPCBzZWxm Ll9fQ3VycmVudE1pbk1heERhdGEuR2V0TWluRGF0YShUeXBlLCBGYWxzZSkgb3IgIFZhbHVlLnU2 NCA+IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhEYXRhKFR5cGUsIEZhbHNlKToNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIExpbmUsICJOdW1lcmljIGRl ZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KDQor DQoNCisgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9G QVRBTF9FUlJPUiwgTGluZSwgIkRlZmF1bHQgZGF0YSB0eXBlIGVycm9yLiIpDQoNCisgICAgICAg ICAgICAgICAgU2l6ZSA9IHNpemVvZihFRklfSUZSX1RZUEVfVkFMVUUpDQoNCisNCg0KKyAgICAg ICAgICAgIGVsaWYgY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLkxpc3RUeXBlOg0KDQorICAg ICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAg ICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY191Ynl0ZSkgKiBsZW4oVmFsdWVMaXN0KQ0K DQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0K DQorICAgICAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfdXNob3J0KSAqIGxlbihWYWx1 ZUxpc3QpDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMzI6DQoNCisgICAgICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY191bG9uZykgKiBs ZW4oVmFsdWVMaXN0KQ0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfdWxv bmdsb25nKSAqIGxlbihWYWx1ZUxpc3QpDQoNCisNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAg ICAgICAgICAgICAgICAgICAgU2l6ZSA9IHNpemVvZihjX3Vsb25nKQ0KDQorICAgICAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPSBnQ1Zm clZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShUeXBlKQ0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQoNCisN Cg0KKyAgICAgICAgICAgIFNpemUgKz0gRUZJX0lGUl9ERUZBVUxULlZhbHVlLm9mZnNldA0KDQor ICAgICAgICAgICAgaWYgbm90IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToN Cg0KKyAgICAgICAgICAgICAgICBET2JqID0gQ0lmckRlZmF1bHQoU2l6ZSkNCg0KKyAgICAgICAg ICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgICAgIERPYmouU2V0 VmFsdWUoVmFsdWUpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fSXNTdHJpbmdP cDoNCg0KKyAgICAgICAgICAgICAgICAgICAgRE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9TVFJJ TkcpDQoNCisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIERPYmouU2V0VHlwZShFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUo c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICBET2JqID0gQ0lmckRlZmF1bHQzKFNpemUsIGxlbihWYWx1ZUxpc3Qp LCBUeXBlKQ0KDQorICAgICAgICAgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAg ICAgICAgICAgICAgRE9iai5TZXRWYWx1ZShWYWx1ZUxpc3QpDQoNCisgICAgICAgICAgICAgICAg RE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9CVUZGRVIpDQoNCisNCg0KKyAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgIElzRXhwID0gVHJ1ZQ0KDQorICAgICAgICAgICAgRE9iaiA9IENJZnJE ZWZhdWx0MigpDQoNCisgICAgICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAg ICAgICAgRE9iai5TZXRTY29wZSgxKQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5EZWZhdWx0U3Rv cmUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgRGVmYXVsdElkLCBSZXR1cm5Db2RlID0gZ0NW ZnJEZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkKGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQp DQoNCisgICAgICAgICAgICBET2JqLlNldERlZmF1bHRJZChEZWZhdWx0SWQpDQoNCisNCg0KKyAg ICAgICAgc2VsZi5fX0NoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVlKERlZmF1bHRJZCwgY3R4LkQu bGluZSwgY3R4LkQudGV4dCkNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5W YXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgVmFy U3RvcmVOYW1lLCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUo c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KDQorICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KDQorICAgICAgICAgICAgVmFyR3VpZCA9 IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlkKHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyU3RvcmVJZCkNCg0KKyAgICAgICAgICAgIFZhclN0b3JlVHlwZSA9IGdDVmZyRGF0YVN0b3Jh Z2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCg0K KyAgICAgICAgICAgIGlmIChJc0V4cCA9PSBGYWxzZSkgYW5kIChWYXJTdG9yZVR5cGUgPT0gRUZJ X1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSKToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0 b3JlQWx0Q29uZmlnQWRkKERlZmF1bHRJZCwgc2VsZi5fX0N1cnJRZXN0VmFySW5mbywgVmFyU3Rv cmVOYW1lLCBWYXJHdWlkLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUsIFZhbHVlKSwg TGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERPYmoNCg0KKyAgICAgICAgc2VsZi5f X0luc2VydENoaWxkKGN0eC5Ob2RlLCBjdHgudmZyU3RhdGVtZW50VmFsdWUoKSkNCg0KKw0KDQor ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhbHVlLg0KDQor ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhbHVlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBWT2JqID0gQ0lmclZh bHVlKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAg ICBWT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IFZPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0 T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50T3B0aW9ucy4NCg0KKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRPcHRpb25zKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50T3B0aW9uc0NvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9uZU9mT3B0aW9u KCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVu dE9uZU9mT3B0aW9uLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0aW9uKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T25lT2ZPcHRpb25Db250ZXh0KToN Cg0KKw0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgaWYgc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZB VEFMX0VSUk9SLCBMaW5lLCAiR2V0IGRhdGEgdHlwZSBlcnJvci4iKQ0KDQorDQoNCisgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgVmFsdWUgPSBjdHgudmZy Q29uc3RhbnRWYWx1ZUZpZWxkKCkuVmFsdWUNCg0KKyAgICAgICAgVmFsdWVMaXN0ID0gY3R4LnZm ckNvbnN0YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KDQorICAgICAgICBUeXBlID0gc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgIFNpemUgPSAwDQoNCisgICAgICAg IGlmIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YSAhPSBOb25lOg0KDQorICAgICAgICAgICAgI3Nl dCBtaW4vbWF4IHZhbHVlIGZvciBvbmVvZiBvcGNvZGUNCg0KKyAgICAgICAgICAgIFN0ZXAgPSBz ZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0U3RlcERhdGEoc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJUeXBlLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyKQ0KDQorICAgICAgICAg ICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuU2V0TWluTWF4U3RlcERhdGEoVmFsdWUudTMyLCBW YWx1ZS51MzIsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfNjQ6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5T ZXRNaW5NYXhTdGVwRGF0YShWYWx1ZS51NjQsIFZhbHVlLnU2NCwgU3RlcCwgRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0KQ0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fQ3VycmVudE1pbk1h eERhdGEuU2V0TWluTWF4U3RlcERhdGEoVmFsdWUudTMyLCBWYWx1ZS51MzIsIFN0ZXAsIEVGSV9J RlJfVFlQRV9OVU1fU0laRV8zMikNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJl bnRNaW5NYXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZhbHVlLnUxNiwgVmFsdWUudTE2LCBTdGVw LCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYpDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f X0N1cnJlbnRNaW5NYXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZhbHVlLnU4LCBWYWx1ZS51OCwg U3RlcCwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzgpDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAg ICAgICAgIFNpemUgPSBzaXplb2YoRUZJX0lGUl9UWVBFX1ZBTFVFKQ0KDQorICAgICAgICBlbGlm IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCg0KKyAgICAgICAgICAgIGlm IFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgU2l6 ZSA9IHNpemVvZihjX3VieXRlKSAqIGxlbihWYWx1ZUxpc3QpDQoNCisgICAgICAgICAgICBpZiBU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICBTaXpl ID0gc2l6ZW9mKGNfdXNob3J0KSAqIGxlbihWYWx1ZUxpc3QpDQoNCisgICAgICAgICAgICBpZiBU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICBTaXpl ID0gc2l6ZW9mKGNfdWxvbmcpICogbGVuKFZhbHVlTGlzdCkNCg0KKyAgICAgICAgICAgIGlmIFR5 cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIFNpemUg PSBzaXplb2YoY191bG9uZ2xvbmcpICogbGVuKFZhbHVlTGlzdCkNCg0KKyAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICMgRm9yIHRoZSBvbmVvZiBzdG9yZWQgaW4gYml0IGZpZWxkcywgc2V0 IHRoZSBvcHRpb24gdHlwZSBhcyBVSU5UMzIuDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2Yo Y19sb25nKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBTaXplLCBS ZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUo VHlwZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IExpbmUpDQoNCisNCg0KKyAgICAgICAgU2l6ZSArPSBFRklfSUZSX09ORV9PRl9PUFRJT04uVmFs dWUub2Zmc2V0DQoNCisgICAgICAgIE9PT09iaiA9IE5vbmUNCg0KKyAgICAgICAgaWYgbm90IGN0 eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCg0KKyAgICAgICAgICAgIE9PT09i aiA9IENJZnJPbmVPZk9wdGlvbihTaXplKQ0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICBPT09PYmouU2V0VHlwZShF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIE9PT09iai5TZXRUeXBlKFR5cGUpDQoNCisgICAgICAgICAgICBPT09PYmouU2V0 VmFsdWUoVmFsdWUpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBPT09PYmogPSBD SWZyT25lT2ZPcHRpb24yKFNpemUsIGxlbihWYWx1ZUxpc3QpLCBUeXBlKQ0KDQorICAgICAgICAg ICAgT09PT2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX0JVRkZFUikNCg0KKyAgICAgICAgICAgIE9P T09iai5TZXRWYWx1ZShWYWx1ZUxpc3QpDQoNCisNCg0KKw0KDQorICAgICAgICBPT09PYmouU2V0 TGluZU5vKExpbmUpDQoNCisgICAgICAgIE9PT09iai5TZXRPcHRpb24oc2VsZi5fX1RyYW5zTnVt KGN0eC5OdW1iZXIoMCkpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxl cihPT09PYmouU2V0RmxhZ3MoY3R4LnZmck9uZU9mT3B0aW9uRmxhZ3MoKS5MRmxhZ3MpLCBjdHgu Ri5saW5lKQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKHNlbGYuX19DdXJyZW50UXVl c3Rpb24uU2V0UUhlYWRlckZsYWdzKGN0eC52ZnJPbmVPZk9wdGlvbkZsYWdzKCkuSEZsYWdzKSwg Y3R4LkYubGluZSkNCg0KKw0KDQorICAgICAgICAjIEFycmF5IHR5cGUgb25seSBmb3IgZGVmYXVs dCB0eXBlIE9uZU9mT3B0aW9uLg0KDQorICAgICAgICBpZiAoT09PT2JqLkdldEZsYWdzKCkgJiAo RUZJX0lGUl9PUFRJT05fREVGQVVMVCB8IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHKSkgPT0g MCBhbmQgKGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZSk6DQoNCisgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9F UlJPUiwgTGluZSwgIkRlZmF1bHQga2V5d29yZCBzaG91bGQgd2l0aCBhcnJheSB2YWx1ZSB0eXBl ISIpDQoNCisNCg0KKyAgICAgICAgIyBDbGVhciB0aGUgZGVmYXVsdCBmbGFnIGlmIHRoZSBvcHRp b24gbm90IHVzZSBhcnJheSB2YWx1ZSBidXQgaGFzIGRlZmF1bHQgZmxhZy4NCg0KKyAgICAgICAg aWYgKE9PT09iai5HZXRGbGFncygpICYgKEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQgfCBFRklfSUZS X09QVElPTl9ERUZBVUxUX01GRykpICE9IDAgYW5kIChjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxk KCkuTGlzdFR5cGUgPT0gRmFsc2UpIGFuZCAoc2VsZi5fX0lzT3JkZXJlZExpc3QpOg0KDQorICAg ICAgICAgICAgT09PT2JqLlNldEZsYWdzKE9PT09iai5HZXRGbGFncygpICYgfihFRklfSUZSX09Q VElPTl9ERUZBVUxUIHwgRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpKQ0KDQorDQoNCisgICAg ICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFSU1RPUkVf SURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIFZhclN0b3JlTmFtZSwgUmV0dXJuQ29kZSA9IGdD VmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVOYW1lKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFy U3RvcmVJZCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwg TGluZSkNCg0KKyAgICAgICAgICAgIFZhclN0b3JlR3VpZCA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0 VmFyU3RvcmVHdWlkKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAg ICAgICAgIGlmIE9PT09iai5HZXRGbGFncygpICYgRUZJX0lGUl9PUFRJT05fREVGQVVMVDoNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9fQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoRUZJX0hJ SV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELCBjdHguRi5saW5lLCBjdHguRi50ZXh0KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEZWZhdWx0U3RvcmUuQnVmZmVy VmFyU3RvcmVBbHRDb25maWdBZGQoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELCBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwgc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJUeXBlLCBWYWx1ZSksIExpbmUpDQoNCisgICAgICAgICAgICBpZiBP T09PYmouR2V0RmxhZ3MoKSAmIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShFRklfSElJX0RFRkFV TFRfQ0xBU1NfTUFOVUZBQ1RVUklORywgY3R4LkYubGluZSwgY3R4LkYudGV4dCkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZh clN0b3JlQWx0Q29uZmlnQWRkKEVGSV9ISUlfREVGQVVMVF9DTEFTU19NQU5VRkFDVFVSSU5HLCBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJUeXBlLCBWYWx1ZSksIExpbmUpDQoNCisNCg0KKyAgICAgICAg aWYgY3R4LktleSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4LktOLmxpbmUsIGN0eC5L Ti50ZXh0KQ0KDQorICAgICAgICAgICAgI+OAgEd1aWQgT3B0aW9uIEtleQ0KDQorICAgICAgICAg ICAgSWZyT3B0aW9uS2V5ID0gQ0lmck9wdGlvbktleShzZWxmLl9fQ3VycmVudFF1ZXN0aW9uLkdl dFF1ZXN0aW9uSWQoKSwgVmFsdWUsIHNlbGYuX19UcmFuc051bShjdHguS04udGV4dCkpDQoNCisg ICAgICAgICAgICBJZnJPcHRpb25LZXkuU2V0TGluZU5vKCkNCg0KKyAgICAgICAgaWYgY3R4LnZm ckltYWdlVGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIE9PT09iai5TZXRTY29wZSgxKSAj DQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPT09PYmoNCg0KKyAgICAgICAgZm9yIEN0eCBp biBjdHgudmZySW1hZ2VUYWcoKToNCg0KKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChj dHguTm9kZSwgQ3R4KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyT25lT2ZPcHRpb25GbGFncy4NCg0KKyAgICBkZWYgdmlzaXRWZnJPbmVPZk9wdGlvbkZsYWdz KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRleHQpOg0K DQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAg Y3R4LkxGbGFncyA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KDQorICAgICAgICBm b3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgub25lb2ZvcHRpb25GbGFnc0ZpZWxkKCk6DQoNCisgICAg ICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCg0KKyAgICAgICAgICAg IGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVy biBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNvbmVvZm9wdGlvbkZsYWdzRmllbGQu DQoNCisgICAgZGVmIHZpc2l0T25lb2ZvcHRpb25GbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuT25lb2ZvcHRpb25GbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKCkpDQoNCisgICAgICAgIGlmIGN0eC5PcHRpb25EZWZhdWx0KCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MTANCg0KKyAgICAgICAgaWYgY3R4Lk9wdGlvbkRl ZmF1bHRNZmcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KDQor ICAgICAgICBpZiBjdHguSW50ZXJhY3RpdmVGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5IRmxhZyA9IDB4MDQNCg0KKyAgICAgICAgaWYgY3R4LlJlc2V0UmVxdWlyZWRGbGFnKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IDB4MTANCg0KKyAgICAgICAgaWYg Y3R4LlJlc3RTdHlsZUZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkhGbGFnID0g MHgyMA0KDQorICAgICAgICBpZiBjdHguUmVjb25uZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IDB4NDANCg0KKyAgICAgICAgaWYgY3R4Lk1hbnVm YWN0dXJpbmdGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MjAN Cg0KKyAgICAgICAgaWYgY3R4LkRlZmF1bHRGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5MRmxhZyA9IDB4MTANCg0KKyAgICAgICAgaWYgY3R4Lk5WQWNjZXNzRmxhZygpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcgKEVGSV9W RlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDT0RFLCBj dHguQS5saW5lLCBjdHguQS50ZXh0KQ0KDQorICAgICAgICBpZiBjdHguTGF0ZUNoZWNrRmxhZygp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcg KEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BD T0RFLCBjdHguTC5saW5lLCBjdHguTC50ZXh0KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHgu SEZsYWcsIGN0eC5MRmxhZw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UmVhZC4NCg0KKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRSZWFkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50UmVhZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIFJPYmogPSBDSWZyUmVhZCgpDQoNCisg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgUk9iai5TZXRM aW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBST2JqDQoN CisgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPSBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4 dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBj dHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFdyaXRlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudFdyaXRlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V3JpdGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBXT2JqID0gQ0lmcldyaXRlKCkNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBXT2JqLlNldExpbmVObyhjdHgu c3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFdPYmoNCg0KKyAgICAgICAg Y3R4Lk5vZGUuRXhwcmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uKCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4 Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkuTm9kZQ0K DQorDQoNCisgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uVGFnKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQor DQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3ZmclN0YXRlbWVudEJvb2xlYW5UeXBlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEJv b2xlYW5UeXBlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Qm9vbGVhblR5 cGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Q2hlY2tCb3goKSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Q2hlY2tCb3goKS5Ob2RlDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRBY3Rp b24oKS5Ob2RlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRDaGVja0JveC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDaGVja0JveChz ZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgQ0JPYmogPSBjdHguT3BPYmoNCg0KKyAgICAgICAgTGluZSA9ICBjdHgu c3RhcnQubGluZQ0KDQorICAgICAgICBDQk9iai5TZXRMaW5lTm8oTGluZSkNCg0KKyAgICAgICAg c2VsZi5fX0N1cnJlbnRRdWVzdGlvbiA9IENCT2JqLkdldFF1ZXN0aW9uKCkNCg0KKyAgICAgICAg c2VsZi5fX0lzQ2hlY2tCb3hPcCA9IFRydWUNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgICMgQ3JlYXRlIGEgR1VJRCBvcGNvZGUgdG8gd3Jh cCB0aGUgY2hlY2tib3ggb3Bjb2RlLCBpZiBpdCByZWZlciB0byBiaXQgdmFyc3RvcmUuDQoNCisg ICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAg ICBHdWlkT2JqID0gQ0lmckd1aWQoMCkNCg0KKyAgICAgICAgICAgIEd1aWRPYmouU2V0R3VpZChF REtJSV9JRlJfQklUX1ZBUlNUT1JFX0dVSUQpDQoNCisgICAgICAgICAgICBHdWlkT2JqLlNldExp bmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgR3VpZE9iai5TZXRTY29wZSgxKSAjDQoNCisNCg0K KyAgICAgICAgIyBjaGVjayBkYXRhVHlwZQ0KDQorICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KDQorICAgICAgICAgICAgc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0JPT0xFQU4NCg0KKw0K DQorICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZB UlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIHF1 ZXN0aW9uIHJlZmVycyB0byBhIGJpdCBmaWVsZCwgaWYgeWVzLiBjcmVhdGUgYSBHdWlkIHRvIGlu ZGljYXRlIHRoZSBxdWVzdGlvbiByZWZlcnMgdG8gYSBiaXQgZmllbGQuDQoNCisgICAgICAgICAg ICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgICAg IF8sIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRh VHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQgaXMg bm90IHRoZSB2YWxpZCBkYXRhIHR5cGUiKQ0KDQorICAgICAgICAgICAgICAgIGlmIGdDVmZyRGF0 YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJ ZCkgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMg YW5kIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplICE9IDE6DQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQgb25seSBvY2N1cHkgMSBi aXQgaW4gQml0IFZhcnN0b3JlIikNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERh dGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUs ICJDaGVja0JveCB2YXJpZCBpcyBub3QgdGhlIHZhbGlkIGRhdGEgdHlwZSIpDQoNCisgICAgICAg ICAgICAgICAgICAgIGlmIFNpemUgIT0gMCBhbmQgU2l6ZSAhPSBzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLlZhclRvdGFsU2l6ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5l LCAiQ2hlY2tCb3ggdmFyaWQgZG9lc24ndCBzdXBwb3J0IGFycmF5IikNCg0KKyAgICAgICAgICAg ICAgICAgICAgZWxpZiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLlZhclN0b3JlSWQpID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZS X1ZBUlNUT1JFX0JVRkZFUiBhbmQgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUg IT0gc2l6ZW9mKGN0eXBlcy5jX2Jvb2wpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsIExpbmUsICJDaGVja0JveCB2YXJpZCBvbmx5IHN1cHBvcnQgQk9PTEVBTiBkYXRhIHR5cGUi KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBDQk9iai5TZXRGbGFncyhjdHgudmZyQ2hlY2tCb3hGbGFncygpLkhGbGFncywgY3R4LnZmckNo ZWNrQm94RmxhZ3MoKS5MRmxhZ3MpDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAg ICAgICAgICAgVmFyU3RvcmVOYW1lLCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRW YXJTdG9yZU5hbWUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX19Db21wYXJlRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTLCBMaW5lLCBjdHguTC50ZXh0LCAiRmFpbGVkIHRvIHJl dHJpZXZlIHZhcnN0b3JlIG5hbWUiKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgVmFyU3RvcmVH dWlkID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUd1aWQoc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5WYXJTdG9yZUlkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ1plcm9FZmlJZnJUeXBl VmFsdWUuYiA9IFRydWUNCg0KKyAgICAgICAgICAgICAgICBpZiBDQk9iai5HZXRGbGFncygpICYg MHgwMToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0NoZWNrRHVwbGljYXRlRGVmYXVs dFZhbHVlKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwgY3R4LkYubGluZSwgY3R4LkYu dGV4dCkNCg0KKyAgICAgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyRGVmYXVsdFN0 b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFO REFSRCxzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlLCBzZWxmLmdaZXJvRWZpSWZyVHlwZVZhbHVl KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihSZXR1 cm5Db2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUywgTGluZSwgY3R4LkwudGV4 dCwgIk5vIHN0YW5kYXJkIGRlZmF1bHQgc3RvcmFnZSBmb3VuZCIpDQoNCisgICAgICAgICAgICAg ICAgaWYgQ0JPYmouR2V0RmxhZ3MoKSAmIDB4MDI6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFO VUZBQ1RVUklORywgY3R4LkYubGluZSwgY3R4LkYudGV4dCkNCg0KKyAgICAgICAgICAgICAgICAg ICAgUmV0dXJuQ29kZSA9ICBnQ1ZmckRlZmF1bHRTdG9yZS5CdWZmZXJWYXJTdG9yZUFsdENvbmZp Z0FkZChFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORywgc2VsZi5fX0N1cnJRZXN0 VmFySW5mbywgVmFyU3RvcmVOYW1lLCBWYXJTdG9yZUd1aWQsIHNlbGYuX19DdXJyUWVzdFZhcklu Zm8uVmFyVHlwZSwgc2VsZi5nWmVyb0VmaUlmclR5cGVWYWx1ZSkNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MsIExpbmUsIGN0eC5MLnRleHQsICJObyBtYW51ZmFjdHVyaW5n IGRlZmF1bHQgc3RvcmFnZSBmb3VuZCIpDQoNCisgICAgICAgIGlmIGN0eC5LZXkoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgS2V5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0K KyAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShDQk9iaiwgS2V5KQ0KDQorDQoN CisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBDQk9iag0KDQorICAgICAgICBzZWxmLl9fSXNDaGVj a0JveE9wID0gRmFsc2UNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQor DQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3ZmckNoZWNrQm94RmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyQ2hlY2tCb3hGbGFncyhzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckNoZWNrQm94RmxhZ3NDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVs ZEN0eCBpbiBjdHguY2hlY2tib3hGbGFnc0ZpZWxkKCk6DQoNCisgICAgICAgICAgICBjdHguTEZs YWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0g RmxhZ3NGaWVsZEN0eC5IRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBj dHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNjaGVja2JveEZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0 Q2hlY2tib3hGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQ2hlY2tib3hGbGFn c0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGlmIHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpICE9IDA6DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JU RUQsIGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBlbGlmIGN0eC5EZWZhdWx0RmxhZygpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCg0KKyAgICAg ICAgZWxpZiBjdHguTWFudWZhY3R1cmluZ0ZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQs IGN0eC5NLmxpbmUsIGN0eC5NLnRleHQpDQoNCisgICAgICAgIGVsaWYgY3R4LkNoZWNrQm94RGVm YXVsdEZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KDQor ICAgICAgICBlbGlmIGN0eC5DaGVja0JveERlZmF1bHRNZmdGbGFnKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDINCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCg0K Kw0KDQorICAgICAgICByZXR1cm4gY3R4LkhGbGFnLCBjdHguTEZsYWcNCg0KKw0KDQorICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1l bnRBY3Rpb24uDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50QWN0aW9uKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgQU9iaiA9IGN0eC5PcE9iag0K DQorICAgICAgICBBT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgQU9i ai5TZXRRdWVzdGlvbkNvbmZpZyhzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0KKyAg ICAgICAgY3R4Lk5vZGUuRGF0YSA9IEFPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmckFjdGlvbkZsYWdzLg0KDQorICAgIGRlZiB2aXNpdFZmckFjdGlvbkZs YWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgRmxh Z3NGaWVsZEN0eCBpbiBjdHguYWN0aW9uRmxhZ3NGaWVsZCgpOg0KDQorICAgICAgICAgICAgY3R4 LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0 eC5IRmxhZ3MNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI2FjdGlvbkZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0QWN0 aW9uRmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkFjdGlvbkZsYWdzRmllbGRD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoN CisgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4 Lk4ubGluZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0 eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCg0KKyAgICAgICAgcmV0dXJuIGN0 eC5IRmxhZw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUuDQoNCisgICAgZGVmIHZp c2l0VmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnROdW1lcmljVHlwZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnROdW1lcmljKCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE51bWVyaWMo KS5Ob2RlDQoNCisgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudE9uZU9mKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9uZU9mKCkuTm9kZQ0K DQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQLWFyc2VyI3ZmclN0YXRlbWVudE51 bWVyaWMuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBOT2JqID0gY3R4Lk9wT2JqDQoN CisgICAgICAgIE5PYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBzZWxm Ll9fQ3VycmVudFF1ZXN0aW9uID0gTk9iai5HZXRRdWVzdGlvbigpDQoNCisgICAgICAgIExpbmUg PSBjdHguc3RhcnQubGluZQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhcklu Zm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAgICBHdWlkT2JqID0gQ0lmckd1aWQoMCkNCg0KKyAg ICAgICAgICAgIEd1aWRPYmouU2V0R3VpZChFREtJSV9JRlJfQklUX1ZBUlNUT1JFX0dVSUQpDQoN CisgICAgICAgICAgICBHdWlkT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgR3Vp ZE9iai5TZXRTY29wZSgxKSAjIHBvcw0KDQorDQoNCisgICAgICAgICMgY2hlY2sgZGF0YSB0eXBl DQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklf VkFSU1RPUkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZh ckluZm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05V TUVSSUNfU0laRV9CSVQgJiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoTk9iai5TZXRGbGFnc0ZvckJpdEZp ZWxkKE5PYmouR2V0RmxhZ3MoKSxMRmxhZ3MpLCBMaW5lKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICBEYXRhVHlwZVNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRh dGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBMaW5lLCAnTnVtZXJpYyB2YXJpZCBpcyBub3QgdGhlIHZhbGlkIGRhdGEgdHlwZScpDQoN CisgICAgICAgICAgICAgICAgaWYgRGF0YVR5cGVTaXplICE9IDAgYW5kIERhdGFUeXBlU2l6ZSAh PSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZToNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsIExpbmUsICdOdW1lcmljIHZhcmlkIGRvZXNuXCd0IHN1cHBvcnQgYXJyYXkn KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoTk9iai5TZXRGbGFncyhO T2JqLkdldEZsYWdzKCksIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSksIExpbmUpDQoN CisNCg0KKw0KDQorICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKE5PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZChjdHgudmZyTnVt ZXJpY0ZsYWdzKCkuSEZsYWdzLGN0eC52ZnJOdW1lcmljRmxhZ3MoKS5MRmxhZ3MsIGN0eC52ZnJO dW1lcmljRmxhZ3MoKS5Jc0Rpc3BsYXlTcGVjaWZpZWQpLCBjdHguRi5saW5lKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKE5PYmou U2V0RmxhZ3MoY3R4LnZmck51bWVyaWNGbGFncygpLkhGbGFncyxjdHgudmZyTnVtZXJpY0ZsYWdz KCkuTEZsYWdzLCBjdHgudmZyTnVtZXJpY0ZsYWdzKCkuSXNEaXNwbGF5U3BlY2lmaWVkKSwgY3R4 LkYubGluZSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgICAg ICBzZWxmLl9fQXNzaWduUXVlc3Rpb25LZXkoTk9iaixLZXkpDQoNCisNCg0KKyAgICAgICAgU2hy aW5rU2l6ZSA9IDANCg0KKyAgICAgICAgSXNTdXBwb3J0ZWQgPSBUcnVlDQoNCisgICAgICAgIGlm IHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAg ICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICAj IEJhc2Ugb24gdGhlIHR5cGUgdG8ga25vdyB0aGUgYWN0dWFsIHVzZWQgc2l6ZSwgc2hyaW5rIHRo ZSBidWZmZXIgc2l6ZSBhbGxvY2F0ZSBiZWZvcmUuDQoNCisgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUg PSAyMQ0KDQorICAgICAgICAgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8x NjoNCg0KKyAgICAgICAgICAgICAgICBTaHJpbmtTaXplID0gMTgNCg0KKyAgICAgICAgICAgIGVs aWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAg U2hyaW5rU2l6ZSA9IDEyDQoNCisgICAgICAgICAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAwDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIElzU3VwcG9ydGVkID0gRmFsc2UNCg0K KyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICPjgIBRdWVzdGlvbiBzdG9yZWQgaW4gYml0 IGZpZWxkcyBzYXZlZCBhcyBVSU5UMzIgdHlwZSwgc28gdGhlIFNocmlua1NpemUgc2FtZSBhcyBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzIuDQoNCisgICAgICAgICAgICBTaHJpbmtTaXplID0gMTIN Cg0KKw0KDQorICAgICAgICAjIyMjIyMj44CATk9iai0+U2hyaW5rQmluU2l6ZSAoU2hyaW5rU2l6 ZSk7DQoNCisgICAgICAgIGlmIElzU3VwcG9ydGVkID09IEZhbHNlOg0KDQorICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsIExpbmUsICdOdW1lcmljIHF1ZXN0aW9uIG9ubHkgc3VwcG9ydCBVSU5UOCwgVUlOVDE2 LCBVSU5UMzIgYW5kIFVJTlQ2NCBkYXRhIHR5cGUuJykNCg0KKw0KDQorICAgICAgICBjdHguTm9k ZS5EYXRhID0gTk9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU2V0TWluTWF4U3RlcC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTZXRNaW5NYXhTdGVwKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQpOg0KDQorICAgICAg ICBJbnREZWNTdHlsZSA9IEZhbHNlDQoNCisgICAgICAgIGlmICgoc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5Jc0JpdFZhcikgYW5kIChjdHguT3BPYmouR2V0T3BDb2RlKCkgPT0gRUZJX0lGUl9OVU1F UklDX09QKSBhbmQgKChjdHguT3BPYmouR2V0TnVtZXJpY0ZsYWdzKCkgJiBFREtJSV9JRlJfRElT UExBWV9CSVQpID09IDApKSBvciBcDQoNCisgICAgICAgICAgICAoKHNlbGYuX19DdXJyUWVzdFZh ckluZm8uSXNCaXRWYXIgPT0gRmFsc2UpIGFuZCAoY3R4Lk9wT2JqLkdldE9wQ29kZSgpID09IEVG SV9JRlJfTlVNRVJJQ19PUCkgYW5kICgoY3R4Lk9wT2JqLkdldE51bWVyaWNGbGFncygpICYgRUZJ X0lGUl9ESVNQTEFZKSA9PSAwKSk6DQoNCisgICAgICAgICAgICBJbnREZWNTdHlsZSA9IFRydWUN Cg0KKyAgICAgICAgTWluTmVnYXRpdmUgPSBGYWxzZQ0KDQorICAgICAgICBNYXhOZWdhdGl2ZSA9 IEZhbHNlDQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQor ICAgICAgICBNaW4gPSBzZWxmLl9fVHJhbnNOdW0oY3R4LkkudGV4dCkNCg0KKyAgICAgICAgTWF4 ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5BLnRleHQpDQoNCisgICAgICAgIFN0ZXAgPSBzZWxmLl9f VHJhbnNOdW0oY3R4LlMudGV4dCkgaWYgY3R4LlN0ZXAoKSAhPSBOb25lIGVsc2UgMA0KDQorDQoN CisgICAgICAgIGlmIGN0eC5OMSAhPU5vbmU6DQoNCisgICAgICAgICAgICBNaW5OZWdhdGl2ZSA9 IFRydWUNCg0KKw0KDQorICAgICAgICBpZiBJbnREZWNTdHlsZSA9PSBGYWxzZSBhbmQgTWluTmVn YXRpdmUgPT0gVHJ1ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnXCctXCcg Y2FuXCd0IGJlIHVzZWQgd2hlbiBub3QgaW4gaW50IGRlY2ltYWwgdHlwZS4nKQ0KDQorICAgICAg ICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgaWYg KEludERlY1N0eWxlID09IEZhbHNlKSBhbmQgKE1pbiA+ICgxIDw8IHNlbGYuX19DdXJyUWVzdFZh ckluZm8uVmFyVG90YWxTaXplKSAtIDEpOiAjDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0 eC5JLmxpbmUsICdCSVQgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIDAsIGJpZ2dlciB0 aGFuIDJeQml0V2lkdGggLTEnKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoNCisgICAgICAgICAg ICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg TWluTmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg4 MDAwMDAwMDAwMDAwMDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgY3R4LkkubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4 MDAwMDAwMDAwMDAwMDAwLCBiaWcgdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNaW4gPiAweDdGRkZGRkZGRkZGRkZGRkY6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnSU5UNjQgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFs bCB0aGFuIC0weDgwMDAwMDAwMDAwMDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRicp DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgTWluID0gfk1pbiArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5 cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgICAgICBp ZiBJbnREZWNTdHlsZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZl Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4ODAwMDAwMDA6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnSU5U MzIgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwLCBiaWcgdGhhbiAw eDdGRkZGRkZGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RkZGRkZGRjoNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5JLmxpbmUsICdJTlQzMiB0eXBlIG1pbmlt dW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkYnKQ0K DQorICAgICAgICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIE1pbiA9IH5NaW4gKyAxDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYg SW50RGVjU3R5bGU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDgwMDA6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnSU5UMTYgdHlw ZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAsIGJpZyB0aGFuIDB4N0ZGRicpDQoN CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIE1pbiA+IDB4N0ZGRjoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsIGN0eC5JLmxpbmUsICdJTlQxNiB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRo YW4gLTB4ODAwMCwgYmlnIHRoYW4gMHg3RkZGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYg TWluTmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBNaW4gPSB+TWluICsgMQ0K DQorDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf ODoNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBNaW4gPiAweDgwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwgY3R4LkkubGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0w eDgwLCBiaWcgdGhhbiAweDdGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RjoNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5JLmxpbmUsICdJTlQ4IHR5cGUgbWlu aW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4gMHg3RicpDQoNCisgICAgICAg ICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg TWluID0gfk1pbiArIDENCg0KKw0KDQorICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIE1heE5lZ2F0aXZlID0gVHJ1ZQ0KDQorICAgICAgICBpZiBJbnREZWNTdHlsZSA9 PSBGYWxzZSBhbmQgTWF4TmVnYXRpdmUgPT0gVHJ1ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBj dHguQS5saW5lLCAnIFwnLVwnIGNhblwndCBiZSB1c2VkIHdoZW4gbm90IGluIGludCBkZWNpbWFs IHR5cGUuJykNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoN Cg0KKyAgICAgICAgICAgIGlmIChJbnREZWNTdHlsZSA9PSBGYWxzZSkgYW5kIChNYXggPiAoMSA8 PCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSkgLSAxKToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwgY3R4LkEubGluZSwgJ0JJVCB0eXBlIG1heGltdW0gY2FuXCd0IGJlIGJp Z2dlciB0aGFuIDJeQml0V2lkdGggLTEnKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAg ICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoNCisgICAg ICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgaWYgTWF4TmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4 ID4gMHg4MDAwMDAwMDAwMDAwMDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwgY3R4LkEubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhh biAtMHg4MDAwMDAwMDAwMDAwMDAwLCBiaWcgdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBNYXggPiAweDdGRkZGRkZGRkZGRkZGRkY6DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLCBjdHguQS5saW5lLCAnSU5UNjQgdHlwZSBtaW5pbXVtIGNhblwn dCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwMDAwMDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZG RkZGRicpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgTWF4ID0gfk1heCArIDENCg0KKw0KDQorICAgICAgICAgICAgICAg ICAgICBpZiBNYXggPCBNaW46ICMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBj dHguQS5saW5lLCAnTWF4aW11bSBjYW5cJ3QgYmUgbGVzcyB0aGFuIE1pbmltdW0nKQ0KDQorDQoN CisNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8z MjoNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBNYXggPiAweDgwMDAwMDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiwgY3R4LkEubGluZSwgJ0lOVDMyIHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwg dGhhbiAtMHg4MDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRicpDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+ IDB4N0ZGRkZGRkY6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBj dHguQS5saW5lLCAnSU5UMzIgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAw MDAwLCBiaWcgdGhhbiAweDdGRkZGRkZGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4 TmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSB+TWF4ICsgMQ0KDQor DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIE1heCA8IE1pbjogIw0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIsIGN0eC5BLmxpbmUsICdNYXhpbXVtIGNhblwndCBiZSBsZXNzIHRo YW4gTWluaW11bScpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbnREZWNT dHlsZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4ODAwMDoNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5BLmxpbmUsICdJTlQxNiB0eXBlIG1pbmlt dW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmlnIHRoYW4gMHg3RkZGJykNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgTWF4ID4gMHg3RkZGOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgY3R4LkEubGluZSwgJ0lOVDE2IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4 MDAwLCBiaWcgdGhhbiAweDdGRkYnKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdh dGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5NYXggKyAxDQoNCisNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgTWF4IDwgTWluOiAjDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwgY3R4LkEubGluZSwgJ01heGltdW0gY2FuXCd0IGJlIGxlc3MgdGhhbiBN aW5pbXVtJykNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg4MDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwgY3R4LkEubGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFs bCB0aGFuIC0weDgwLCBiaWcgdGhhbiAweDdGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg3RjoNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5BLmxpbmUsICdJTlQ4 IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4gMHg3RicpDQoN CisgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgTWF4ID0gfk1heCArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBN YXggPCBNaW46ICMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguQS5saW5l LCAnTWF4aW11bSBjYW5cJ3QgYmUgbGVzcyB0aGFuIE1pbmltdW0nKQ0KDQorDQoNCisgICAgICAg IGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAgICBjdHgu T3BPYmouU2V0TWluTWF4U3RlcERhdGEoTWluLCBNYXgsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1f U0laRV8zMikNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCg0KKyAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIGN0eC5PcE9iai5TZXRNaW5N YXhTdGVwRGF0YShNaW4sIE1heCwgU3RlcCwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0KQ0KDQor ICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAg ICAgICAgICAgICAgY3R4Lk9wT2JqLlNldE1pbk1heFN0ZXBEYXRhKE1pbiwgTWF4LCBTdGVwLCBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICBjdHguT3BPYmouU2V0TWlu TWF4U3RlcERhdGEoTWluLCBNYXgsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNikNCg0K KyAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAg ICAgICAgICAgICAgY3R4Lk9wT2JqLlNldE1pbk1heFN0ZXBEYXRhKE1pbiwgTWF4LCBTdGVwLCBF RklfSUZSX1RZUEVfTlVNX1NJWkVfOCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk9wT2Jq DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJOdW1lcmljRmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyTnVtZXJpY0Zs YWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyTnVtZXJpY0ZsYWdzQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgY3R4LkxGbGFncyA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFDQoNCisgICAgICAgIFZhclN0b3JlVHlwZSA9IGdDVmZy RGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCkNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIElzU2V0 VHlwZSA9IEZhbHNlDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K KyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4Lm51bWVyaWNGbGFnc0ZpZWxkKCk6DQoN CisgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCg0KKyAgICAg ICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBGbGFnc0ZpZWxkQ3R4LklzRGlzcGxheVNw ZWNpZmllZA0KDQorICAgICAgICAgICAgSXNTZXRUeXBlIHw9ICBGbGFnc0ZpZWxkQ3R4LklzU2V0 VHlwZQ0KDQorICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZU9uZSgpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0Jp dFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4 LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfCBFRklfSUZSX05VTUVSSUNfU0laRV8x DQoNCisNCg0KKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVUd28oKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNC aXRWYXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0 eC5MRmxhZ3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVf Mg0KDQorDQoNCisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRm91cigp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5J c0JpdFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAo Y3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfCBFRklfSUZSX05VTUVSSUNfU0la RV80DQoNCisNCg0KKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVFaWdo dCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5Jc0JpdFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9 ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfCBFRklfSUZSX05VTUVSSUNf U0laRV84DQoNCisNCg0KKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlzUGxheUludERl YygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5Jc0JpdFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9 ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwgRUZJX0lGUl9ESVNQTEFZX0lOVF9E RUMNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICBjdHgu TEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVCkgfCBFREtJSV9J RlJfRElTUExBWV9JTlRfREVDX0JJVA0KDQorDQoNCisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxk Q3R4LkRpc1BsYXlVSW50SGV4KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBpZiBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAg ICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfRElTUExBWSkgfCBFRklf SUZSX0RJU1BMQVlfVUlOVF9ERUMNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQ TEFZX0JJVCkgfCBFREtJSV9JRlJfRElTUExBWV9VSU5UX0RFQ19CSVQNCg0KKw0KDQorICAgICAg ICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUludEhleCgpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklf SUZSX0RJU1BMQVkpIHwgRUZJX0lGUl9ESVNQTEFZX1VJTlRfSEVYDQoNCisgICAgICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFn cyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9IRVhf QklUDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9 PSBGYWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgICAgICBpZiBW YXJTdG9yZVR5cGUgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVG RkVSIG9yIFZhclN0b3JlVHlwZSA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJT VE9SRV9FRkk6DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhcklu Zm8uVmFyVHlwZSAhPSAoY3R4LkxGbGFncyAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFKToNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAnTnVtZXJpYyBGbGFnIGlzIG5vdCBz YW1lIHRvIE51bWVyaWMgVmFyRGF0YSB0eXBlJykNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBkYXRhIHR5cGUgZm9yIG5hbWUvdmFsdWUg c3RvcmUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJU eXBlID0gY3R4LkxGbGFncyAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFDQoNCisgICAgICAgICAgICAg ICAgICAgIFNpemUsIF8gPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRh VHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUpDQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplID0gU2l6ZQ0KDQorICAgICAg ICAgICAgZWxpZiBJc1NldFR5cGU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlID0gY3R4LkxGbGFncyAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFDQoNCisN Cg0KKyAgICAgICAgZWxpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJ X1ZBUlNUT1JFX0lEX0lOVkFMSUQgYW5kIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6 DQoNCisgICAgICAgICAgICBjdHguTEZsYWdzICY9IEVES0lJX0lGUl9ESVNQTEFZX0JJVA0KDQor ICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBFREtJSV9JRlJfTlVNRVJJQ19TSVpFX0JJVCAmIHNl bGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplDQoNCisNCg0KKyAgICAgICAgcmV0dXJu IGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI251bWVyaWNGbGFnc0ZpZWxkLg0KDQor ICAgIGRlZiB2aXNpdE51bWVyaWNGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu TnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAg ICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19U cmFuc051bShjdHguTi50ZXh0KSAhPSAwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBMaW5lKQ0KDQor DQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZU9uZSgpICE9IE5vbmU6DQoNCisgICAgICAg ICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KDQorICAg ICAgICAgICAgICAgIGN0eC5Jc1NldFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXpl IG9mIHRoZSBudW1lcmljIHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KDQorDQoNCisgICAgICAgIGlm IGN0eC5OdW1lcmljU2l6ZVR3bygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIGN0 eC5Jc1NldFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURf UEFSQU1FVEVSLCBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmlj IHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6 ZUZvdXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5Jc0JpdFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICBjdHguSXNTZXRUeXBlID0g VHJ1ZQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTGlu ZSwgJ0NhbiBub3Qgc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IgQklU IGZpZWxkJykNCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVFaWdodCgpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09 IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIGN0eC5Jc1NldFR5cGUgPSBUcnVlDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAnQ2FuIG5vdCBz cGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmljIHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KDQor DQoNCisgICAgICAgIGlmIGN0eC5EaXNQbGF5SW50RGVjKCkgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQoNCisNCg0KKyAgICAgICAgaWYgY3R4 LkRpc1BsYXlVSW50SGV4KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlT cGVjaWZpZWQgPSBUcnVlDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkRpc1BsYXlVSW50SGV4KCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQoN CisNCg0KKyAgICAgICAgaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxk KCkuUUhGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZw0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50T25lT2YuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50T25lT2Yoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIE9PYmogPSBjdHguT3BPYmoNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQoNCisgICAgICAgIE9PYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgIHNlbGYuX19DdXJy ZW50UXVlc3Rpb24gPSBPT2JqLkdldFF1ZXN0aW9uKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZh cjoNCg0KKyAgICAgICAgICAgIEd1aWRPYmogPSBDSWZyR3VpZCgwKQ0KDQorICAgICAgICAgICAg R3VpZE9iai5TZXRHdWlkKEVES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCkNCg0KKyAgICAgICAg ICAgIEd1aWRPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICAgICAgR3Vp ZE9iai5TZXRTY29wZSgxKSAjIHBvcw0KDQorDQoNCisgICAgICAgICMgY2hlY2sgZGF0YSB0eXBl DQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklf VkFSU1RPUkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZh ckluZm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05V TUVSSUNfU0laRV9CSVQgJiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoT09iai5TZXRGbGFnc0ZvckJpdEZp ZWxkKE9PYmouR2V0RmxhZ3MoKSxMRmxhZ3MpLCBMaW5lKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICBEYXRhVHlwZVNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRh dGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBMaW5lLCAnT25lT2YgdmFyaWQgaXMgbm90IHRoZSB2YWxpZCBkYXRhIHR5cGUnKQ0KDQor ICAgICAgICAgICAgICAgIGlmIERhdGFUeXBlU2l6ZSAhPSAwIGFuZCBEYXRhVHlwZVNpemUgIT0g c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemU6DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURf UEFSQU1FVEVSLCBMaW5lLCAnT25lT2YgdmFyaWQgZG9lc25cJ3Qgc3VwcG9ydCBhcnJheScpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihPT2JqLlNldEZsYWdzKE9PYmou R2V0RmxhZ3MoKSwgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKSwgTGluZSkNCg0KKw0K DQorICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKE9PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZChjdHgudmZyT25lb2ZGbGFnc0Zp ZWxkKCkuSEZsYWdzLGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5MRmxhZ3MpLCBjdHguRi5saW5l KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKE9PYmouU2V0RmxhZ3MoY3R4LnZmck9uZW9mRmxhZ3NGaWVsZCgpLkhGbGFncywgY3R4 LnZmck9uZW9mRmxhZ3NGaWVsZCgpLkxGbGFncyksIGN0eC5GLmxpbmUpDQoNCisNCg0KKyAgICAg ICAgU2hyaW5rU2l6ZSA9IDANCg0KKyAgICAgICAgSXNTdXBwb3J0ZWQgPSBUcnVlDQoNCisgICAg ICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisgICAg ICAgICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAg ICAgICAjIEJhc2Ugb24gdGhlIHR5cGUgdG8ga25vdyB0aGUgYWN0dWFsIHVzZWQgc2l6ZSwgc2hy aW5rIHRoZSBidWZmZXIgc2l6ZSBhbGxvY2F0ZSBiZWZvcmUuDQoNCisgICAgICAgICAgICBpZiBU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgIFNocmlu a1NpemUgPSAyMQ0KDQorICAgICAgICAgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1f U0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICBTaHJpbmtTaXplID0gMTgNCg0KKyAgICAgICAg ICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAg ICAgICAgU2hyaW5rU2l6ZSA9IDEyDQoNCisgICAgICAgICAgICBlbGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAwICMN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgSXNTdXBwb3J0ZWQgPSBG YWxzZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgI+OAgFF1ZXN0aW9uIHN0b3Jl ZCBpbiBiaXQgZmllbGRzIHNhdmVkIGFzIFVJTlQzMiB0eXBlLCBzbyB0aGUgU2hyaW5rU2l6ZSBz YW1lIGFzIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMi4NCg0KKyAgICAgICAgICAgIFNocmlua1Np emUgPSAxMg0KDQorDQoNCisgICAgICAgICMgT09iai5TaHJpbmtCaW5TaXplKFNocmlua1NpemUp DQoNCisgICAgICAgIGlmIElzU3VwcG9ydGVkID09IEZhbHNlOg0KDQorICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsIExpbmUsICdPbmVPZiBxdWVzdGlvbiBvbmx5IHN1cHBvcnQgVUlOVDgsIFVJTlQxNiwgVUlO VDMyIGFuZCBVSU5UNjQgZGF0YSB0eXBlLicpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IE9PYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zmck9u ZW9mRmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRWZnJPbmVvZkZsYWdzRmllbGQoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJPbmVvZkZsYWdzRmllbGRDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBjdHguTEZsYWdzID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlICYgRUZJ X0lGUl9OVU1FUklDX1NJWkUNCg0KKyAgICAgICAgVmFyU3RvcmVUeXBlID0gZ0NWZnJEYXRhU3Rv cmFnZS5HZXRWYXJTdG9yZVR5cGUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0K DQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgSXNTZXRUeXBlID0g RmFsc2UNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAg ICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgubnVtZXJpY0ZsYWdzRmllbGQoKToNCg0KKyAgICAg ICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KDQorICAgICAgICAgICAg Y3R4LklzRGlzcGxheVNwZWNpZmllZCA9IEZsYWdzRmllbGRDdHguSXNEaXNwbGF5U3BlY2lmaWVk DQoNCisgICAgICAgICAgICBJc1NldFR5cGUgfD0gRmxhZ3NGaWVsZEN0eC5Jc1NldFR5cGUNCg0K KyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0g RmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3Mg JiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KDQorDQoN CisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09 IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdz ICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCg0KKw0K DQorICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIg PT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxh Z3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfNA0KDQor DQoNCisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBO b25lOg0KDQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRW YXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5M RmxhZ3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfOA0K DQorDQoNCisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4LkRpc1BsYXlJbnREZWMoKSAhPSBO b25lOg0KDQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRW YXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5M RmxhZ3MgJiB+RUZJX0lGUl9ESVNQTEFZKSB8IEVGSV9JRlJfRElTUExBWV9JTlRfREVDDQoNCisg ICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9 ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwgRURLSUlfSUZSX0RJU1BM QVlfSU5UX0RFQ19CSVQNCg0KKw0KDQorICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQ bGF5VUludEhleCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4 LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwgRUZJX0lGUl9ESVNQ TEFZX1VJTlRfREVDDQoNCisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQp IHwgRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNfQklUDQoNCisNCg0KKyAgICAgICAgICAgIGlm IEZsYWdzRmllbGRDdHguRGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg ICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisgICAg ICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQ TEFZKSB8IEVGSV9JRlJfRElTUExBWV9VSU5UX0hFWA0KDQorICAgICAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RURL SUlfSUZSX0RJU1BMQVlfQklUKSB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfSEVYX0JJVA0KDQor DQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6 DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0g RUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICAgICAgaWYgVmFyU3RvcmVU eXBlID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUiBvciBW YXJTdG9yZVR5cGUgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJ Og0KDQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5 cGUgIT0gKGN0eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRSk6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwgTGluZSwgJ051bWVyaWMgRmxhZyBpcyBub3Qgc2FtZSB0byBO dW1lcmljIFZhckRhdGEgdHlwZScpDQoNCisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICAgICAgIyB1cGRhdGUgZGF0YSB0eXBlIGZvciBuYW1lL3ZhbHVlIHN0b3JlDQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9IGN0 eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KDQorICAgICAgICAgICAgICAgICAgICBT aXplLCBfID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCg0KKyAgICAgICAgICAgIGVs aWYgSXNTZXRUeXBlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSA9IGN0eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KDQorDQoNCisgICAg ICAgIGVsaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9S RV9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFncyAmPSBFREtJSV9JRlJfRElT UExBWV9CSVQNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRURLSUlfSUZSX05VTUVSSUNf U0laRV9CSVQgJiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KDQorDQoNCisg ICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1l bnRTdHJpbmdUeXBlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN0cmluZ1R5cGUoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdUeXBlQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudFBhc3N3b3JkKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2Rl ID0gY3R4LnZmclN0YXRlbWVudFBhc3N3b3JkKCkuTm9kZQ0KDQorICAgICAgICBlbGlmIGN0eC52 ZnJTdGF0ZW1lbnRTdHJpbmcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50U3RyaW5nKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cg0KKw0KDQorICAgIGRlZiBfR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoc2VsZik6DQoNCisNCg0K KyAgICAgICAgU2l6ZSA9IDENCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5W YXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgU2l6ZSA9 IDENCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgIFNpemUgPSAyDQoNCisgICAgICAg IGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMzI6DQoNCisgICAgICAgICAgICBTaXplID0gNA0KDQorICAgICAgICBpZiBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAg ICAgICAgICAgU2l6ZSA9IDgNCg0KKw0KDQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX19DdXJy UWVzdFZhckluZm8uVmFyVG90YWxTaXplIC8gU2l6ZSkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0 cmluZy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBz ZWxmLl9fSXNTdHJpbmdPcCA9IFRydWUNCg0KKyAgICAgICAgU09iaiA9IGN0eC5PcE9iag0KDQor ICAgICAgICBTT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgc2VsZi5f X0N1cnJlbnRRdWVzdGlvbiA9IFNPYmouR2V0UXVlc3Rpb24oKQ0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIEhGbGFncyA9IGN0eC52ZnJTdHJpbmdGbGFnc0ZpZWxkKCku SEZsYWdzDQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBjdHgudmZyU3RyaW5nRmxhZ3NGaWVsZCgp LkxGbGFncw0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihTT2JqLlNldEZsYWdz KEhGbGFncywgTEZsYWdzKSwgY3R4LkYubGluZSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguS2V5 KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKDApKQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Fzc2lnblF1ZXN0aW9uS2V5KFNPYmosIEtl eSkNCg0KKyAgICAgICAgICAgIFN0cmluZ01pblNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigxKSkNCg0KKyAgICAgICAgICAgIFN0cmluZ01heFNpemUgPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcigyKSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFN0cmluZ01p blNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCg0KKyAgICAgICAgICAgIFN0 cmluZ01heFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCg0KKw0KDQorICAg ICAgICBWYXJBcnJheVNpemUgPSBzZWxmLl9HRVRfQ1VSUlFFU1RfQVJSQVlfU0laRSgpDQoNCisg ICAgICAgIGlmIFN0cmluZ01pblNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0 eC5NaW4ubGluZSwgIlN0cmluZyBNaW5TaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNh bid0IGJlIGxhcmdlciB0aGFuIDB4RkYuIikNCg0KKyAgICAgICAgaWYgVmFyQXJyYXlTaXplICE9 IDAgYW5kIFN0cmluZ01pblNpemUgPiBWYXJBcnJheVNpemU6DQoNCisgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgY3R4Lk1pbi5saW5lLCAiU3RyaW5nIE1pblNpemUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhl IG1heCBudW1iZXIgb2YgZWxlbWVudHMgaW4gc3RyaW5nIGFycmF5LiIpDQoNCisgICAgICAgIFNP YmouU2V0TWluU2l6ZShTdHJpbmdNaW5TaXplKQ0KDQorDQoNCisgICAgICAgIGlmIFN0cmluZ01h eFNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5NYXgubGluZSwgIlN0cmlu ZyBNYXhTaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxhcmdlciB0aGFu IDB4RkYuIikNCg0KKyAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgU3RyaW5nTWF4 U2l6ZSA+IFZhckFycmF5U2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTWF4LmxpbmUs ICJTdHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4IG51bWJlciBvZiBl bGVtZW50cyBpbiBzdHJpbmcgYXJyYXkuIikNCg0KKyAgICAgICAgZWxpZiBTdHJpbmdNYXhTaXpl IDwgU3RyaW5nTWluU2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTWF4LmxpbmUsICJT dHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsZXNzIHRoYW4gU3RyaW5nIE1pblNpemUuIikNCg0KKyAg ICAgICAgU09iai5TZXRNYXhTaXplKFN0cmluZ01heFNpemUpDQoNCisNCg0KKyAgICAgICAgY3R4 Lk5vZGUuRGF0YSA9IFNPYmoNCg0KKw0KDQorICAgICAgICBzZWxmLl9fSXNTdHJpbmdPcCA9IEZh bHNlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdHJpbmdG bGFnc0ZpZWxkLg0KDQorICAgIGRlZiB2aXNpdFZmclN0cmluZ0ZsYWdzRmllbGQoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgZm9yIEZsYWdzRmllbGRD dHggaW4gY3R4LnN0cmluZ0ZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3Mg fD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KDQorICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFn c0ZpZWxkQ3R4LkxGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5M RmxhZ3MNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3N0cmluZ0ZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0U3RyaW5n RmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdzRmllbGRDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisg ICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4LnN0 YXJ0LmxpbmUpDQoNCisgICAgICAgIGVsaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgp ICE9IE5vbmU6DQoNCisNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhl YWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg IGN0eC5MRmxhZyA9IDB4MDENCg0KKw0KDQorICAgICAgICByZXR1cm4gIGN0eC5IRmxhZywgY3R4 LkxGbGFnDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRQYXNzd29yZC4NCg0KKyAgICBkZWYgdmlzaXRW ZnJTdGF0ZW1lbnRQYXNzd29yZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFBhc3N3b3JkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgUE9iaiA9IGN0eC5PcE9iag0KDQor ICAgICAgICBQT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgc2VsZi5f X0N1cnJlbnRRdWVzdGlvbiA9IFBPYmouR2V0UXVlc3Rpb24oKQ0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBLZXkgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShQT2JqLCBLZXkpDQoNCisg ICAgICAgICAgICBQYXNzV29yZE1pblNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigx KSkNCg0KKyAgICAgICAgICAgIFBhc3N3b3JkTWF4U2l6ZSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDIpKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgUGFzc1dvcmRNaW5T aXplID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICBQYXNz d29yZE1heFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCg0KKw0KDQorICAg ICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgSEZsYWdzID0gY3R4 LnZmclBhc3N3b3JkRmxhZ3NGaWVsZCgpLkhGbGFncw0KDQorICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihQT2JqLlNldEZsYWdzKEhGbGFncyksIGN0eC5GLmxpbmUpDQoNCisNCg0KKyAg ICAgICAgVmFyQXJyYXlTaXplID0gc2VsZi5fR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKQ0KDQor ICAgICAgICBpZiBQYXNzV29yZE1pblNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs IGN0eC5NaW4ubGluZSwgIlN0cmluZyBNaW5TaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNo IGNhbid0IGJlIGxhcmdlciB0aGFuIDB4RkYuIikNCg0KKyAgICAgICAgaWYgVmFyQXJyYXlTaXpl ICE9IDAgYW5kIFBhc3NXb3JkTWluU2l6ZSA+IFZhckFycmF5U2l6ZToNCg0KKyAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLCBjdHguTWluLmxpbmUsICJTdHJpbmcgTWluU2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhh biB0aGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiBzdHJpbmcgYXJyYXkuIikNCg0KKyAgICAg ICAgUE9iai5TZXRNaW5TaXplKFBhc3NXb3JkTWluU2l6ZSkNCg0KKw0KDQorICAgICAgICBpZiBQ YXNzd29yZE1heFNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxl cihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5NYXgubGlu ZSwgIlN0cmluZyBNYXhTaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxh cmdlciB0aGFuIDB4RkYuIikNCg0KKyAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQg UGFzc3dvcmRNYXhTaXplID4gVmFyQXJyYXlTaXplOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0 eC5NYXgubGluZSwgIlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxhcmdlciB0aGFuIHRoZSBtYXgg bnVtYmVyIG9mIGVsZW1lbnRzIGluIHN0cmluZyBhcnJheS4iKQ0KDQorICAgICAgICBlbGlmIFBh c3N3b3JkTWF4U2l6ZSA8IFBhc3NXb3JkTWluU2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBj dHguTWF4LmxpbmUsICJTdHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsZXNzIHRoYW4gU3RyaW5nIE1p blNpemUuIikNCg0KKyAgICAgICAgUE9iai5TZXRNYXhTaXplKFBhc3N3b3JkTWF4U2l6ZSkNCg0K Kw0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gUE9iag0KDQorDQoNCisgICAgICAgIHJldHVy biBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyUGFzc3dvcmRGbGFnc0ZpZWxkLg0KDQorICAgIGRlZiB2 aXNpdFZmclBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclBh c3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5wYXNzd29yZEZs YWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5I RmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWdzDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwYXNzd29y ZEZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0UGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVt YmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKCkpICE9IDA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIGN0eC5zdGFydC5saW5lKQ0KDQorICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgY3R4LkhGbGFnID0gY3R4LnF1ZXN0aW9uaGVhZGVy RmxhZ3NGaWVsZCgpLlFIRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWcNCg0K Kw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudE9yZGVyZWRMaXN0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T3Jk ZXJlZExpc3RDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBPTE9iaiA9IGN0eC5PcE9iag0KDQor ICAgICAgICBPTE9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIHNlbGYu X19DdXJyZW50UXVlc3Rpb24gPSBPTE9iai5HZXRRdWVzdGlvbigpDQoNCisgICAgICAgIHNlbGYu X19Jc09yZGVyZWRMaXN0ID0gVHJ1ZQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisNCg0KKyAgICAgICAgVmFyQXJyYXlTaXplID0gc2VsZi5fR0VUX0NVUlJRRVNU X0FSUkFZX1NJWkUoKQ0KDQorICAgICAgICBpZiBWYXJBcnJheVNpemUgPiAweEZGOg0KDQorICAg ICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycygweEZGKQ0KDQorICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhWYXJBcnJheVNpemUpDQoNCisN Cg0KKyAgICAgICAgaWYgY3R4Lk1heENvbnRhaW5lcnMoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgTWF4Q29udGFpbmVycyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAg ICAgICAgICBpZiBNYXhDb250YWluZXJzID4gMHhGRjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgY3R4Lk0ubGluZSwgIk9yZGVyZWRMaXN0IE1heENvbnRhaW5lcnMgdGFrZXMgb25seSBvbmUg Ynl0ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gMHhGRi4iKQ0KDQorICAgICAgICAgICAg ZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgTWF4Q29udGFpbmVycyA+IFZhckFycmF5U2l6ZToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4Lk0ubGluZSwiT3JkZXJlZExpc3QgTWF4Q29u dGFpbmVycyBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBp biBhcnJheS4iKQ0KDQorICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhNYXhDb250 YWluZXJzKQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBIRmxhZ3MgPSBjdHgudmZyT3JkZXJlZExpc3RGbGFncygpLkhGbGFncw0KDQorICAg ICAgICAgICAgTEZsYWdzID0gY3R4LnZmck9yZGVyZWRMaXN0RmxhZ3MoKS5MRmxhZ3MNCg0KKyAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoT0xPYmouU2V0RmxhZ3MoSEZsYWdzLCBMRmxh Z3MpLCBjdHguRi5saW5lKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPTE9iag0K DQorDQoNCisgICAgICAgIHNlbGYuX19Jc09yZGVyZWRMaXN0ID0gRmFsc2UNCg0KKw0KDQorICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zmck9yZGVyZWRMaXN0RmxhZ3MuDQoNCisg ICAgZGVmIHZpc2l0VmZyT3JkZXJlZExpc3RGbGFncyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5v cmRlcmVkbGlzdEZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxh Z3NGaWVsZEN0eC5IRmxhZw0KDQorICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxk Q3R4LkxGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MN Cg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI29yZGVyZWRsaXN0RmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRPcmRlcmVk bGlzdEZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5PcmRlcmVkbGlzdEZsYWdz RmllbGRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg aWYgc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRF RCwgY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGVsaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQoNCisgICAgICAgIGVsaWYgY3R4LlVuaVF1ZUZs YWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KDQorICAgICAg ICBlbGlmIGN0eC5Ob0VtcHR5RmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZs YWcgPSAweDAyDQoNCisNCg0KKyAgICAgICAgcmV0dXJuICBjdHguSEZsYWcsIGN0eC5MRmxhZw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmclN0YXRlbWVudERhdGUuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGF0ZShz ZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERhdGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBET2JqID0gY3R4Lk9wT2JqDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KDQorICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LnZmclF1ZXN0aW9u SGVhZGVyKCkgIT0gTm9uZToNCg0KKw0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEUNCg0K Kw0KDQorICAgICAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKERPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElPTl9G TEFHX0RFRkFVTFQsIGN0eC52ZnJEYXRlRmxhZ3MoKS5MRmxhZ3MpLCBjdHguRjEubGluZSkNCg0K Kw0KDQorICAgICAgICBlbHNlOg0KDQorDQoNCisgICAgICAgICAgICBZZWFyID0gc2VsZi5fX1Ry YW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMCkpDQoNCisgICAgICAgICAgICBZZWFyICs9ICcu Jw0KDQorICAgICAgICAgICAgWWVhciArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRp ZmllcigxKSkNCg0KKw0KDQorICAgICAgICAgICAgTW9udGggPSBzZWxmLl9fVHJhbnNJZChjdHgu U3RyaW5nSWRlbnRpZmllcigyKSkNCg0KKyAgICAgICAgICAgIE1vbnRoICs9ICcuJw0KDQorICAg ICAgICAgICAgTW9udGggKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykp DQoNCisNCg0KKyAgICAgICAgICAgIERheSA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVu dGlmaWVyKDQpKQ0KDQorICAgICAgICAgICAgRGF5ICs9ICcuJw0KDQorICAgICAgICAgICAgRGF5 ICs9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDUpKQ0KDQorDQoNCisgICAg ICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoRE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVM VCwgY3R4LnZmckRhdGVGbGFncygpLkxGbGFncyksIGN0eC5GMi5saW5lKQ0KDQorDQoNCisgICAg ICAgICAgICBRSWQsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVnaXN0ZXJPbGREYXRlUXVl c3Rpb24oWWVhciwgTW9udGgsIERheSwgRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpDQoNCisgICAg ICAgICAgICBET2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KDQorICAgICAgICAgICAgRE9iai5TZXRG bGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwgUUZfREFURV9TVE9SQUdFX1RJTUUp DQoNCisgICAgICAgICAgICBET2JqLlNldFByb21wdChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigwKSkpDQoNCisgICAgICAgICAgICBET2JqLlNldEhlbHAoc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoMSkpKQ0KDQorDQoNCisgICAgICAgICAgICBTaXplID0gRUZJX0lGUl9ERUZBVUxULlZh bHVlLm9mZnNldCArIHNpemVvZiAoRUZJX0hJSV9EQVRFKQ0KDQorICAgICAgICAgICAgRGVmYXVs dE9iaiA9IENJZnJEZWZhdWx0KFNpemUsIEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwg RUZJX0lGUl9UWVBFX0RBVEUsIGN0eC5WYWwpDQoNCisgICAgICAgICAgICBEZWZhdWx0T2JqLlNl dExpbmVObyhMaW5lKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBET2JqDQoNCisg ICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCk6DQoNCisg ICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNtaW5NYXhEYXRlU3RlcERlZmF1bHQuDQoNCisgICAg ZGVmIHZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu TWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkRl ZmF1bHQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgTWluaW11bSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgTWF4aW11bSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAgICAgICAgaWYgY3R4LktleVZhbHVlID09IDA6DQoN CisgICAgICAgICAgICAgICAgY3R4LkRhdGUuWWVhciA9IHNlbGYuX19UcmFuc051bShjdHguTi50 ZXh0KQ0KDQorICAgICAgICAgICAgICAgIGlmIGN0eC5EYXRlLlllYXIgPCBNaW5pbXVtIG9yIGN0 eC5EYXRlLlllYXIgPiBNYXhpbXVtOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4 Lk4ubGluZSwgIlllYXIgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluIHllYXIgYW5k IE1heCB5ZWFyLiIpDQoNCisgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMToNCg0KKyAg ICAgICAgICAgICAgICBjdHguRGF0ZS5Nb250aCA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0 KQ0KDQorICAgICAgICAgICAgICAgIGlmIGN0eC5EYXRlLk1vbnRoIDwgMSBvciBjdHguRGF0ZS5N b250aCA+IDEyOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4LkQubGluZSwgIk1v bnRoIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pbiAxIGFuZCBNYXggMTIuIikNCg0K KyAgICAgICAgICAgIGlmIGN0eC5LZXlWYWx1ZSA9PSAyOg0KDQorICAgICAgICAgICAgICAgIGN0 eC5EYXRlLkRheSA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KDQorICAgICAgICAgICAg ICAgIGlmIGN0eC5EYXRlLkRheSA8IDEgb3IgY3R4LkRhdGUuRGF5ID4gMzE6DQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLCBjdHguRC5saW5lLCAiRGF5IGRlZmF1bHQgdmFsdWUgbXVzdCBi ZSBiZXR3ZWVuIE1pbiAxIGFuZCBNYXggMzEuIikNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRlRmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0 VmZyRGF0ZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4 dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAg ICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHguZGF0ZUZsYWdzRmllbGQoKToNCg0KKyAgICAg ICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KDQorDQoNCisgICAgICAg IHJldHVybiBjdHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRlRmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYg dmlzaXREYXRlRmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGVGbGFnc0Zp ZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K Kw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0 eC5MRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgIGlmIGN0 eC5ZZWFyU3VwcHByZXNzRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcg PSAweDAxDQoNCisgICAgICAgIGlmIGN0eC5Nb250aFN1cHByZXNzRmxhZygpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAyDQoNCisgICAgICAgIGlmIGN0eC5EYXlTdXBw cmVzc0ZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwNA0KDQor ICAgICAgICBpZiBjdHguU3RvcmFnZU5vcm1hbEZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4LkxGbGFnID0gMHgwMA0KDQorICAgICAgICBpZiBjdHguU3RvcmFnZVRpbWVGbGFnKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDEwDQoNCisgICAgICAgIGlm IGN0eC5TdG9yYWdlV2FrZVVwRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZs YWcgPSAweDIwDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50VGltZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRUaW1lKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIFRPYmogPSBjdHguT3BPYmoNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoN CisgICAgICAgIFRPYmouU2V0TGluZU5vKExpbmUpDQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHgudmZyUXVlc3Rpb25IZWFkZXIo KSAhPSBOb25lOg0KDQorDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu X19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRQ0KDQorDQoNCisg ICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVG QVVMVCwgY3R4LnZmclRpbWVGbGFncygpLkxGbGFncyksIGN0eC5GMS5saW5lKQ0KDQorICAgICAg ICBlbHNlOg0KDQorDQoNCisgICAgICAgICAgICBIb3VyID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0 cmluZ0lkZW50aWZpZXIoMCkpDQoNCisgICAgICAgICAgICBIb3VyICs9ICcuJw0KDQorICAgICAg ICAgICAgSG91ciArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigxKSkNCg0K Kw0KDQorICAgICAgICAgICAgTWludXRlID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50 aWZpZXIoMikpDQoNCisgICAgICAgICAgICBNaW51dGUgKz0gJy4nDQoNCisgICAgICAgICAgICBN aW51dGUgKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykpDQoNCisNCg0K KyAgICAgICAgICAgIFNlY29uZCA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVy KDQpKQ0KDQorICAgICAgICAgICAgU2Vjb25kICs9ICcuJw0KDQorICAgICAgICAgICAgU2Vjb25k ICs9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDUpKQ0KDQorDQoNCisgICAg ICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVM VCwgY3R4LnZmclRpbWVGbGFncygpLkxGbGFncyksIGN0eC5GMi5saW5lKQ0KDQorDQoNCisgICAg ICAgICAgICBRSWQsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVnaXN0ZXJPbGRUaW1lUXVl c3Rpb24oSG91ciwgTWludXRlLCBTZWNvbmQsIEVGSV9RVUVTVElPTl9JRF9JTlZBTElEKQ0KDQor ICAgICAgICAgICAgVE9iai5TZXRRdWVzdGlvbklkKFFJZCkNCg0KKyAgICAgICAgICAgIFRPYmou U2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RFRkFVTFQsIFFGX1RJTUVfU1RPUkFHRV9U SU1FKQ0KDQorICAgICAgICAgICAgVE9iai5TZXRQcm9tcHQoc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoMCkpKQ0KDQorICAgICAgICAgICAgVE9iai5TZXRIZWxwKHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKDEpKSkNCg0KKw0KDQorICAgICAgICAgICAgU2l6ZSA9IEVGSV9JRlJfREVGQVVM VC5WYWx1ZS5vZmZzZXQgKyBzaXplb2YgKEVGSV9ISUlfVElNRSkNCg0KKyAgICAgICAgICAgIERl ZmF1bHRPYmogPSBDSWZyRGVmYXVsdChTaXplLCBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRB UkQsIEVGSV9JRlJfVFlQRV9USU1FLCBjdHguVmFsKQ0KDQorICAgICAgICAgICAgRGVmYXVsdE9i ai5TZXRMaW5lTm8oTGluZSkNCg0KKw0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gVE9iag0K DQorICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZigpOg0K DQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbWluTWF4VGltZVN0ZXBEZWZhdWx0Lg0KDQor ICAgIGRlZiB2aXNpdE1pbk1heFRpbWVTdGVwRGVmYXVsdChzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLk1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGlmIGN0 eC5EZWZhdWx0KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIE1pbmltdW0gPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigwKSkNCg0KKyAgICAgICAgICAgIE1heGltdW0gPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigxKSkNCg0KKyAgICAgICAgICAgIGlmIGN0eC5LZXlWYWx1ZSA9PSAw Og0KDQorICAgICAgICAgICAgICAgIGN0eC5UaW1lLkhvdXIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKS0xKSkNCg0KKyAgICAgICAgICAgICAgICBpZiBjdHgu VGltZS5Ib3VyID4gMjM6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTi5saW5l LCAiSG91ciBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMy4iKQ0KDQorICAg ICAgICAgICAgaWYgY3R4LktleVZhbHVlID09IDE6DQoNCisgICAgICAgICAgICAgICAgY3R4LlRp bWUuTWludXRlID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIobGVuKGN0eC5OdW1iZXIoKSkt MSkpDQoNCisgICAgICAgICAgICAgICAgaWYgY3R4LlRpbWUuTWludXRlID4gNTk6DQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTi5saW5lLCAiTWludXRlIGRlZmF1bHQgdmFsdWUg bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDU5LiIpDQoNCisgICAgICAgICAgICBpZiBjdHguS2V5VmFs dWUgPT0gMjoNCg0KKyAgICAgICAgICAgICAgICBjdHguVGltZS5TZWNvbmQgPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKS0xKSkNCg0KKyAgICAgICAgICAgICAg ICBpZiBjdHguVGltZS5TZWNvbmQgPiA1OToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs IGN0eC5OLmxpbmUsICJTZWNvbmQgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQg NTkuIikNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJUaW1lRmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyVGltZUZsYWdzKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyVGltZUZsYWdzQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBp biBjdHgudGltZUZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxh Z3NGaWVsZEN0eC5MRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTEZsYWdzDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dGltZUZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0VGltZUZsYWdzRmllbGQoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJlcigp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigpKQ0KDQorICAgICAgICBpZiBjdHguSG91clN1cHBwcmVzc0ZsYWcoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KDQorICAgICAgICBpZiBjdHguTWlu dXRlU3VwcHJlc3NGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4 MDINCg0KKyAgICAgICAgaWYgY3R4LlNlY29uZFN1cHByZXNzRmxhZygpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguTEZsYWcgPSAweDA0DQoNCisgICAgICAgIGlmIGN0eC5TdG9yYWdlTm9y bWFsRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAwDQoNCisg ICAgICAgIGlmIGN0eC5TdG9yYWdlVGltZUZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg Y3R4LkxGbGFnID0gMHgxMA0KDQorICAgICAgICBpZiBjdHguU3RvcmFnZVdha2VVcEZsYWcoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KDQorDQoNCisgICAgICAg IHJldHVybiBjdHguTEZsYWcNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbC4NCg0KKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudENvbmRpdGlvbmFsQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudERpc2FibGVJ ZlN0YXQoKSE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnREaXNhYmxlSWZTdGF0KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3Vw cHJlc3NJZlN0YXQoKSE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudEdyYXlPdXRJZlN0YXQoKSE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KCkhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KCkuTm9kZQ0KDQorDQoN CisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50Q29uZGl0aW9u YWxOZXcuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQpOg0K DQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0 YXRlbWVudFN1cHByZXNzSWZTdGF0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlN0YXRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldygp Lk5vZGUNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRH cmF5T3V0SWZTdGF0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4 dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAg Y3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldygpLk5vZGUNCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0TGlzdC4NCg0K KyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXQoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdCgp Lk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKS5O b2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgp Lk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExhYmVsKCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExhYmVsKCkuTm9kZQ0KDQor ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUNCg0KKyAg ICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEludmFsaWQoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpLk5vZGUNCg0KKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZC4NCg0KKyAg ICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZChzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dCk6DQoNCisgICAgICAgIHJldHVybiBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERpc2FibGVJZlN0YXQuDQoN CisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdChzZWxmLCBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlN0YXRDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBESU9iaiA9IENJZnJEaXNhYmxlSWYoKQ0KDQorICAgICAgICBESU9iai5TZXRMaW5lTm8o Y3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBESU9iag0KDQorICAg ICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAnZGlzYWJsZWlmJyArICcgJyArIHNlbGYuX19FeHRy YWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0 YXRlbWVudFN0YXRMaXN0KCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4 Lk5vZGUsIEN0eCkNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdE5ldyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0TmV3Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgU0lPYmogPSBDSWZyU3VwcHJl c3NJZigpDQoNCisgICAgICAgIFNJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAg ICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNJT2JqDQoNCisgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlv biA9ICdzdXBwcmVzc2lmJyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudFN0YXRMaXN0KCk6DQoN CisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCg0KKw0KDQor ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0 YXROZXcuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdDb250ZXh0 KToNCg0KKw0KDQorICAgICAgICBHT0lPYmogPSBDSWZyR3JheU91dElmKCkNCg0KKyAgICAgICAg R09JT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IEdPSU9iag0KDQorICAgICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAnZ3JheW91dGlmJyAr ICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNz aW9uKCkpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZv ciBDdHggaW4gY3R4LnZmclN0YXRlbWVudFN0YXRMaXN0KCk6DQoNCisgICAgICAgICAgICBzZWxm Ll9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCg0KKw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Lg0KDQor ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdChzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdENvbnRleHQpOg0KDQor DQoNCisgICAgICAgIElJT2JqID0gQ0lmckluY29uc2lzdGVudElmKCkNCg0KKyAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIGN0 eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBJSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUp DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIElJT2JqLlNl dEVycm9yKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KDQorICAgICAgICBjdHguTm9k ZS5EYXRhID0gSUlPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gJ2luY29uc2lz dGVudGlmJyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRJbnZhbGlkLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEludmFs aWQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCk6 DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50SW52YWxpZEhpZGRlbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZh bGlkSGlkZGVuKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZEhp ZGRlbkNvbnRleHQpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkuDQoNCisgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEludmFsaWRJbnZlbnRvcnlDb250ZXh0KToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJl c3RvcmVEZWZhdWx0cy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJl c3RvcmVEZWZhdWx0cyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFs aWRTYXZlUmVzdG9yZURlZmF1bHRzQ29udGV4dCk6DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50TGFiZWwuDQoNCisgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50TGFiZWwoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRMYWJlbENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIExPYmogPSBDSWZyTGFiZWwoKQ0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMT2JqLlNldExp bmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgTE9iai5TZXROdW1iZXIoc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBMT2JqDQoN CisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZXguQk9iam50QmFu bmVyLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEJhbm5lcihzZWxmLCBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEJhbm5lckNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkxpbmUoKSAhPSBO b25lOg0KDQorICAgICAgICAgICAgQk9iaiA9IENJZnJCYW5uZXIoKQ0KDQorICAgICAgICAgICAg Qk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgICAgICBCT2JqLlNldFRp dGxlKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKSkNCg0KKyAgICAgICAgICAgIEJPYmou U2V0TGluZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQoNCisgICAgICAgICAgICBp ZiBjdHguTGVmdCgpICE9IE5vbmU6IEJPYmouU2V0QWxpZ24oMCkNCg0KKyAgICAgICAgICAgIGlm IGN0eC5DZW50ZXIoKSAhPSBOb25lOiBCT2JqLlNldEFsaWduKDEpDQoNCisgICAgICAgICAgICBp ZiBjdHguUmlnaHQoKSAhPSBOb25lOiBCT2JqLlNldEFsaWduKDIpDQoNCisgICAgICAgICAgICBj dHguTm9kZS5EYXRhID0gQk9iag0KDQorICAgICAgICBlbGlmIGN0eC5UaW1lb3V0KCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIFRPYmogPSBDSWZyVGltZW91dCgpDQoNCisgICAgICAgICAgICBU T2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgICAgIFRPYmouU2V0VGlt ZW91dChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkpDQoNCisgICAgICAgICAgICBjdHgu Tm9kZS5EYXRhID0gVE9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyU3RhdGVtZW50RXh0ZW5zaW9uLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEV4 dGVuc2lvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGN0eC5Jc1N0cnVjdCA9IEZhbHNlDQoNCisgICAgICAg IGlmIGN0eC5EYXRhVHlwZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBjdHguVWludDY0 KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDY0Jw0K DQorICAgICAgICAgICAgZWxpZiBjdHguVWludDMyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg ICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDMyJw0KDQorICAgICAgICAgICAgZWxpZiBjdHguVWlu dDE2KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDE2 Jw0KDQorICAgICAgICAgICAgZWxpZiBjdHguVWludDgoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgICAgIGN0eC5UeXBlTmFtZSA9ICdVSU5UOCcNCg0KKyAgICAgICAgICAgIGVsaWYgY3R4LkJv b2xlYW4oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICdCT09M RUFOJw0KDQorICAgICAgICAgICAgZWxpZiBjdHguRUZJX1NUUklOR19JRCgpICE9IE5vbmU6DQoN CisgICAgICAgICAgICAgICAgY3R4LlR5cGVOYW1lID0gJ0VGSV9TVFJJTkdfSUQnDQoNCisgICAg ICAgICAgICBlbGlmIGN0eC5FRklfSElJX0RBVEUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg ICAgIGN0eC5UeXBlTmFtZSA9ICdFRklfSElJX0RBVEUnDQoNCisgICAgICAgICAgICAgICAgY3R4 LklzU3RydWN0ID0gVHJ1ZQ0KDQorICAgICAgICAgICAgZWxpZiBjdHguRUZJX0hJSV9USU1FKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnRUZJX0hJSV9USU1F Jw0KDQorICAgICAgICAgICAgICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUNCg0KKyAgICAgICAgICAg IGVsaWYgY3R4LkVGSV9ISUlfUkVGKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHgu VHlwZU5hbWUgPSAnRUZJX0hJSV9SRUYnDQoNCisgICAgICAgICAgICAgICAgY3R4LklzU3RydWN0 ID0gVHJ1ZQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlw ZU5hbWUgPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigpKQ0KDQorICAgICAg ICAgICAgICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUNCg0KKyAgICAgICAgICAgIGN0eC5BcnJheU51 bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgICAgICBjdHguVHlw ZVNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlU eXBlTmFtZShjdHguVHlwZU5hbWUpDQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVy KFJldHVybkNvZGUsIGN0eC5ELmxpbmUpDQoNCisgICAgICAgICAgICBjdHguU2l6ZSA9IGN0eC5U eXBlU2l6ZSAqIGN0eC5BcnJheU51bSBpZiBjdHguQXJyYXlOdW0gPiAwIGVsc2UgY3R4LlR5cGVT aXplDQoNCisgICAgICAgICAgICBBcnJheVR5cGUgPSBjdHlwZXMuY191Ynl0ZSAqIGN0eC5TaXpl DQoNCisgICAgICAgICAgICBjdHguRGF0YUJ1ZmYgPSBBcnJheVR5cGUoKQ0KDQorICAgICAgICAg ICAgZm9yIGkgaW4gcmFuZ2UoMCwgY3R4LlNpemUpOg0KDQorICAgICAgICAgICAgICAgIGN0eC5E YXRhQnVmZltpXSA9IDANCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0K DQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgR3VpZE9iaiA9IENJ ZnJHdWlkKGN0eC5TaXplKQ0KDQorICAgICAgICBHdWlkT2JqLlNldExpbmVObyhMaW5lKQ0KDQor ICAgICAgICBHdWlkT2JqLlNldEd1aWQoY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCg0KKyAg ICAgICAgaWYgY3R4LlR5cGVOYW1lICE9IE5vbmU6DQoNCisgICAgICAgICAgICBHdWlkT2JqLlNl dERhdGEoY3R4LkRhdGFCdWZmKQ0KDQorICAgICAgICAjIHZmclN0YXRlbWVudEV4dGVuc2lvbg0K DQorICAgICAgICBHdWlkT2JqLlNldFNjb3BlKDEpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEg PSBHdWlkT2JqDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lv bigpOg0KDQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoN CisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4dGVuc2lvbkRhdGEuDQoNCisgICAg ZGVmIHZpc2l0VmZyRXh0ZW5zaW9uRGF0YShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckV4 dGVuc2lvbkRhdGFDb250ZXh0KToNCg0KKyAgICAgICAgJycnDQoNCisgICAgICAgIFRGTmFtZSA9 ICcnDQoNCisgICAgICAgIElzQXJyYXkgPSBGYWxzZSBpZiBjdHguT3BlbkJyYWNrZXQoKSA9PSBO b25lIGVsc2UgVHJ1ZQ0KDQorICAgICAgICBBcnJheUlkeCA9IDANCg0KKyAgICAgICAgY3R4Lklz U3RydWN0ID0gY3R4LnBhcmVudEN0eC5Jc1N0cnVjdA0KDQorICAgICAgICBjdHguRGF0YUJ1ZmYg PSBjdHgucGFyZW50Q3R4LkRhdGFCdWZmDQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBEYXRhID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OLnRl eHQpDQoNCisgICAgICAgIGlmIElzQXJyYXkgPT0gVHJ1ZToNCg0KKyAgICAgICAgICAgIEFycmF5 SWR4ID0gc2VsZi5fX1RyYW5zTnVtKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKSkNCg0K KyAgICAgICAgQnl0ZU9mZnNldCAgPSBBcnJheUlkeCAqIGN0eC5wYXJlbnRDdHguVHlwZVNpemUN Cg0KKyAgICAgICAgaWYgY3R4LklzU3RydWN0ID09IFRydWU6DQoNCisgICAgICAgICAgICBURk5h bWUgKz0gY3R4LnBhcmVudEN0eC5UeXBlTmFtZQ0KDQorICAgICAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgbGVuKGN0eC5hcnJheU5hbWUoKSkpOg0KDQorICAgICAgICAgICAgICAgIFRGTmFtZSAr PSAnLicNCg0KKyAgICAgICAgICAgICAgICBURk5hbWUgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJT dHJaDQoNCisgICAgICAgICAgICBGaWVsZE9mZnNldCwgRmllbGRUeXBlLCBGaWVsZFNpemUsIEJp dEZpZWxkLCBfID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVEZOYW1lKQ0K DQorICAgICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAgICAgICAgICAgTWFzayA9ICgx IDw8IEZpZWxkU2l6ZSkgLSAxDQoNCisgICAgICAgICAgICAgICAgT2Zmc2V0ID0gaW50KEZpZWxk T2Zmc2V0IC8gOCkNCg0KKyAgICAgICAgICAgICAgICBQcmVCaXRzID0gRmllbGRPZmZzZXQgJSA4 DQoNCisgICAgICAgICAgICAgICAgTWFzayA8PD0gUHJlQml0cw0KDQorICAgICAgICAgICAgICAg IEJlZ2luID0gMA0KDQorICAgICAgICAgICAgICAgIEVuZCA9IDANCg0KKyAgICAgICAgICAgICAg ICBpZiBGaWVsZFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAg ICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191Ynl0ZShEYXRhKQ0KDQorICAgICAgICAgICAgICAg ICAgICBpZiBCaXRGaWVsZDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHRoZSB2 YWx1ZSB0byB0aGUgYml0IGZpbGVkcy4NCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGEg IDw8PSBQcmVCaXRzDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IChWYWx1ZSAm ICh+TWFzaykpIHwgRGF0YQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgQmVnaW4gPSBCeXRl T2Zmc2V0ICsgT2Zmc2V0DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zm c2V0ICsgT2Zmc2V0ICsgc2l6ZW9mIChjdHlwZXMuY191Ynl0ZSkNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IFZhbHVlDQoNCisgICAgICAgICAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBCZWdpbiA9IEJ5dGVP ZmZzZXQgKyBGaWVsZE9mZnNldA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgRW5kID0gQnl0 ZU9mZnNldCArIEZpZWxkT2Zmc2V0ICsgRmllbGRTaXplDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBjdHguRGF0YUJ1ZmZbQmVnaW46IEVuZF0gPSBEYXRhDQoNCisNCg0KKw0KDQorICAgICAg ICAgICAgICAgIGlmIEZpZWxkVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisg ICAgICAgICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191c2hvcnQoRGF0YSkNCg0KKyAgICAg ICAgICAgICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAj IFNldCB0aGUgdmFsdWUgdG8gdGhlIGJpdCBmaWxlZHMuDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBEYXRhICA8PD0gUHJlQml0cw0KDQorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUg PSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGENCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJl Z2luID0gQnl0ZU9mZnNldCArIE9mZnNldA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgRW5k ID0gQnl0ZU9mZnNldCArIE9mZnNldCArIHNpemVvZiAoY3R5cGVzLmNfdXNob3J0KQ0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0gVmFsdWUNCg0K KyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJl Z2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBGaWVsZFNpemUNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IERhdGENCg0KKw0KDQor DQoNCisgICAgICAgICAgICAgICAgaWYgRmllbGRUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0la RV8zMjoNCg0KKyAgICAgICAgICAgICAgICAgICAgRGF0YSA9IGN0eXBlcy5jX3Vsb25nKERhdGEp DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEJpdEZpZWxkOg0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgIyBTZXQgdGhlIHZhbHVlIHRvIHRoZSBiaXQgZmlsZWRzLg0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgRGF0YSAgPDw9IFByZUJpdHMNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIFZhbHVlID0gKFZhbHVlICYgKH5NYXNrKSkgfCBEYXRhDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBCZWdpbiA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgIEVuZCA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQgKyBzaXplb2YgKGN0eXBlcy5jX3Vsb25n KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0g VmFsdWUNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBGaWVsZFNpemUNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IERhdGEN Cg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIEZpZWxkVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfNjQ6DQoNCisgICAgICAgICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191bG9uZ2xv bmcoRGF0YSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAjIFNldCB0aGUgdmFsdWUgdG8gdGhlIGJpdCBmaWxlZHMuDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBEYXRhICA8PD0gUHJlQml0cw0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgVmFsdWUgPSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGENCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIE9mZnNldA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIE9mZnNldCArIHNpemVvZiAoY3R5cGVz LmNfdWxvbmdsb25nKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0Jl Z2luOiBFbmRdID0gVmFsdWUNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBG aWVsZFNpemUNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjog RW5kXSA9IERhdGENCg0KKw0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgY3R4LkRh dGFCdWZmW0J5dGVPZmZzZXQsIEJ5dGVPZmZzZXQgKyBjdHgucGFyZW50Q3R4LlR5cGVTaXplXSA9 IERhdGENCg0KKyAgICAgICAgJycnDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE1vZGFsLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudE1vZGFsKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TW9kYWxDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJNb2RhbFRhZygpLk5vZGUNCg0KKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyTW9kYWxUYWcuDQoNCisgICAgZGVmIHZpc2l0VmZyTW9kYWxUYWcoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJNb2RhbFRhZ0NvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIE1PYmogPSBDSWZyTW9kYWwoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorICAgICAgICBNT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IE1PYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0K Kw0KDQorICAgIGRlZiBfX1NhdmVPcEhkckNvbmQoc2VsZiwgT3BIZHIsIENvbmQsIExpbmVObz0w KToNCg0KKyAgICAgICAgaWYgQ29uZCA9PSBUcnVlOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5f X0NJZnJPcEhkcltzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuDQoNCisgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZy T3BIZHJJbmRleF0gPSBDSWZyT3BIZWFkZXIoT3BIZHIpICMNCg0KKyAgICAgICAgICAgIHNlbGYu X19DSWZyT3BIZHJMaW5lTm9bc2VsZi5fX0NJZnJPcEhkckluZGV4XSA9IExpbmVObw0KDQorDQoN CisNCg0KKyAgICBkZWYgX19Jbml0T3BIZHJDb25kKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9f Q0lmck9wSGRyLmFwcGVuZChOb25lKQ0KDQorICAgICAgICBzZWxmLl9fQ0lmck9wSGRyTGluZU5v LmFwcGVuZCgwKQ0KDQorDQoNCisgICAgZGVmIF9fU2V0U2F2ZWRPcEhkclNjb3BlKHNlbGYpOg0K DQorICAgICAgICBpZiAgc2VsZi5fX0NJZnJPcEhkcltzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJ bmRleF0uU2V0U2NvcGUoMSkNCg0KKyAgICAgICAgICAgIHJldHVybiBUcnVlDQoNCisgICAgICAg IHJldHVybiBGYWxzZQ0KDQorDQoNCisgICAgZGVmIF9fQ2xlYXJTYXZlZE9QSGRyKHNlbGYpOg0K DQorICAgICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJbmRleF0gPSBOb25l DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjdmZyU3RhdGVtZW50RXhwcmVzc2lvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnRFeHByZXNzaW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVz c2lvbkNvbnRleHQpOg0KDQorDQoNCisgICAgICAgICMgUm9vdCBleHByZXNzaW9uIGV4dGVuc2lv biBmdW5jdGlvbiBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb24uICMjDQoNCisgICAgICAgIGlmIGN0 eC5FeHBJbmZvLlJvb3RMZXZlbCA9PSAwOg0KDQorICAgICAgICAgICAgc2VsZi5fX0NJZnJPcEhk ckluZGV4ICs9IDENCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DSWZyT3BIZHJJbmRleCA+PSBN QVhfSUZSX0VYUFJFU1NJT05fREVQVEg6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5z dGFydC5saW5lLCAnVGhlIGRlcHRoIG9mIGV4cHJlc3Npb24gZXhjZWVkcyB0aGUgbWF4IHN1cHBv cnRlZCBsZXZlbCA4IScpDQoNCisgICAgICAgICAgICBzZWxmLl9fSW5pdE9wSGRyQ29uZCgpDQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgTGluZSA9 IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguT1Io KSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAg ICAgICAgICBPT2JqID0gQ0lmck9yKExpbmUpDQoNCisNCg0KKyAgICAgICAgIyBFeHRlbmQgT3BD b2RlIFNjb3BlIG9ubHkgZm9yIHRoZSByb290IGV4cHJlc3Npb24uDQoNCisgICAgICAgIGlmIGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQgPiAxIGFuZCBjdHguRXhwSW5mby5Sb290TGV2ZWwgPT0gMDoN Cg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19TZXRTYXZlZE9wSGRyU2NvcGUoKToNCg0KKyAgICAg ICAgICAgICAgICBFT2JqID0gQ0lmckVuZCgpDQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5f X0NJZnJPcEhkckxpbmVOb1tzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IDA6DQoNCisgICAgICAg ICAgICAgICAgICAgIEVPYmouU2V0TGluZU5vKHNlbGYuX19DSWZyT3BIZHJMaW5lTm9bc2VsZi5f X0NJZnJPcEhkckluZGV4XSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguRXhwSW5mby5Sb290TGV2 ZWwgPT0gMDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19DbGVhclNhdmVkT1BIZHIoKQ0KDQorICAg ICAgICAgICAgc2VsZi5fX0NJZnJPcEhkckluZGV4ID0gc2VsZi5fX0NJZnJPcEhkckluZGV4IC0g MQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb24gPSBGYWxz ZQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1Yi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCA9IGN0eC5wYXJl bnRDdHguRXhwSW5mby5Sb290TGV2ZWwgKyAxDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9w Q291bnQgPSBjdHgucGFyZW50Q3R4LkV4cEluZm8uRXhwT3BDb3VudA0KDQorDQoNCisgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgY3R4LnBhcmVudEN0eC5F eHBJbmZvLkV4cE9wQ291bnQgPSBjdHguRXhwSW5mby5FeHBPcENvdW50DQoNCisNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5FeHBJbmZvDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYW5kVGVybS4NCg0KKyAgICBkZWYgdmlzaXRBbmRU ZXJtKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQW5kVGVybUNvbnRleHQpOg0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0Lmxp bmUNCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5BTkQoKSkpOg0KDQorICAg ICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgICAgICBBT2Jq ID0gQ0lmckFuZChMaW5lKQ0KDQorICAgICAgICAgICAgY3R4LkNJZnJBbmRMaXN0LmFwcGVuZChB T2JqKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJBbmRMaXN0 DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNiaXR3aXNlb3JUZXJtLg0KDQorICAgIGRlZiB2aXNpdEJpdHdpc2VvclRlcm0o c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5CaXR3aXNlb3JUZXJtQ29udGV4dCk6DQoNCisgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LkJpdFdpc2VPcigpKSk6 DQoNCisgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKyAgICAgICAg ICAgIEJXT09iaiA9IENJZnJCaXRXaXNlT3IoTGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5DSWZy Qml0V2lzZU9yTGlzdC5hcHBlbmQoQldPT2JqKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHgu RXhwSW5mbywgY3R4LkNJZnJCaXRXaXNlT3JMaXN0DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNiaXR3aXNlYW5kVGVybS4N Cg0KKyAgICBkZWYgdmlzaXRCaXR3aXNlYW5kVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LkJpdHdpc2VhbmRUZXJtQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBmb3IgaSBp biByYW5nZSgwLCBsZW4oY3R4LkJpdFdpc2VBbmQoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgICAgICBCV0FPYmogPSBDSWZyQml0V2lz ZUFuZChMaW5lKQ0KDQorICAgICAgICAgICAgY3R4LkNJZnJCaXRXaXNlQW5kTGlzdC5hcHBlbmQo QldBT2JqKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJCaXRX aXNlQW5kTGlzdA0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjZXF1YWxUZXJtLg0KDQorICAgIGRlZiB2aXNpdEVxdWFsVGVy bShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybUNvbnRleHQpOg0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBs ZW4oY3R4LmVxdWFsVGVybVN1cHBsZW1lbnRhcnkoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZv LCBjdHguQ0lmckVxdWFsTGlzdCwgY3R4LkNJZnJOb3RFcXVhbExpc3QNCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFs VGVybUVxdWFsUnVsZS4NCg0KKyAgICBkZWYgdmlzaXRFcXVhbFRlcm1FcXVhbFJ1bGUoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1FcXVhbFJ1bGVDb250ZXh0KToNCg0KKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgRU9iaiA9IENJZnJFcXVhbChj dHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4LkNJZnJFcXVhbExpc3QuYXBwZW5kKEVPYmop DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIEVPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybU5vdEVxdWFs UnVsZS4NCg0KKyAgICBkZWYgdmlzaXRFcXVhbFRlcm1Ob3RFcXVhbFJ1bGUoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5FcXVhbFRlcm1Ob3RFcXVhbFJ1bGVDb250ZXh0KToNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgTkVPYmogPSBDSWZyTm90RXF1YWwo Y3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5DSWZyTm90RXF1YWxMaXN0LmFwcGVuZChO RU9iaikNCg0KKyAgICAgICAgcmV0dXJuIE5FT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybS4NCg0K KyAgICBkZWYgdmlzaXRDb21wYXJlVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBh cmVUZXJtQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisg ICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5 KCkpKToNCg0KKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAg ICAgICByZXR1cm4gY3R4LkV4cEluZm8sIGN0eC5DSWZyTGVzc1RoYW5MaXN0LCBjdHguQ0lmckxl c3NFcXVhbExpc3QsIGN0eC5DSWZyR3JlYXRlclRoYW5MaXN0LCBjdHguQ0lmckdyZWF0ZXJFcXVh bExpc3QNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtTGVzc1J1bGUuDQoNCisgICAgZGVmIHZpc2l0Q29t cGFyZVRlcm1MZXNzUnVsZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtTGVz c1J1bGVDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAg ICAgICAgTFRPYmogPSBDSWZyTGVzc1RoYW4oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0 eC5DSWZyTGVzc1RoYW5MaXN0LmFwcGVuZChMVE9iaikNCg0KKyAgICAgICAgcmV0dXJuIExUT2Jq DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNjb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUuDQoNCisgICAgZGVmIHZpc2l0Q29t cGFyZVRlcm1MZXNzRXF1YWxSdWxlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRl cm1MZXNzRXF1YWxSdWxlQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisgICAgICAgIExFT2JqID0gQ0lmckxlc3NFcXVhbChjdHguc3RhcnQubGluZSkNCg0K KyAgICAgICAgY3R4LkNJZnJMZXNzRXF1YWxMaXN0LmFwcGVuZChMRU9iaikNCg0KKyAgICAgICAg cmV0dXJuIExFT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybUdyZWF0ZXJSdWxlLg0KDQorICAgIGRl ZiB2aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5D b21wYXJlVGVybUdyZWF0ZXJSdWxlQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQoNCisgICAgICAgIEdUT2JqID0gQ0lmckdyZWF0ZXJUaGFuKGN0eC5zdGFydC5s aW5lKQ0KDQorICAgICAgICBjdHguQ0lmckdyZWF0ZXJUaGFuTGlzdC5hcHBlbmQoR1RPYmopDQoN CisgICAgICAgIHJldHVybiBHVE9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjY29tcGFyZVRlcm1HcmVhdGVyRXF1YWxS dWxlLg0KDQorICAgIGRlZiB2aXNpdENvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZShzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZUNvbnRleHQpOg0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBHRU9iaiA9IENJ ZnJHcmVhdGVyRXF1YWwoY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5DSWZyR3JlYXRl ckVxdWFsTGlzdC5hcHBlbmQoR0VPYmopDQoNCisgICAgICAgIHJldHVybiBHRU9iag0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3No aWZ0VGVybS4NCg0KKyAgICBkZWYgdmlzaXRTaGlmdFRlcm0oc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5TaGlmdFRlcm1Db250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5zaGlmdFRlcm1TdXBwbGVt ZW50YXJ5KCkpKToNCg0KKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0K DQorICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8sIGN0eC5DSWZyU2hpZnRMZWZ0TGlzdCwgY3R4 LkNJZnJTaGlmdFJpZ2h0TGlzdA0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVybUxlZnQuDQoNCisgICAgZGVmIHZpc2l0 U2hpZnRUZXJtTGVmdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybUxlZnRDb250 ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgU0xP YmogPSBDSWZyU2hpZnRMZWZ0KGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguQ0lmclNo aWZ0TGVmdExpc3QuYXBwZW5kKFNMT2JqKQ0KDQorICAgICAgICByZXR1cm4gU0xPYmoNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3NoaWZ0VGVybVJpZ2h0Lg0KDQorICAgIGRlZiB2aXNpdFNoaWZ0VGVybVJpZ2h0KHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtUmlnaHRDb250ZXh0KToNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgU1JPYmogPSBDSWZyU2hpZnRSaWdo dChjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4LkNJZnJTaGlmdFJpZ2h0TGlzdC5hcHBl bmQoU1JPYmopDQoNCisgICAgICAgIHJldHVybiBTUk9iag0KDQorDQoNCisNCg0KKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJt Lg0KDQorICAgIGRlZiB2aXNpdEFkZE1pbnVzVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LkFkZE1pbnVzVGVybUNvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFkZE1pbnVzVGVybVN1cHBs ZW1lbnRhcnkoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJBZGRMaXN0LCBjdHguQ0lm clN1YnRyYWN0TGlzdA0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJtcEFkZC4NCg0KKyAgICBkZWYgdmlz aXRBZGRNaW51c1Rlcm1wQWRkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJt cEFkZENvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAg ICAgICBBT2JqID0gQ0lmckFkZChjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4LkNJZnJB ZGRMaXN0LmFwcGVuZChBT2JqKQ0KDQorICAgICAgICByZXR1cm4gQU9iag0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRk TWludXNUZXJtU3VidHJhY3QuDQoNCisgICAgZGVmIHZpc2l0QWRkTWludXNUZXJtU3VidHJhY3Qo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQpOg0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBTT2JqID0gQ0lm clN1YnRyYWN0KGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguQ0lmclN1YnRyYWN0TGlz dC5hcHBlbmQoU09iaikNCg0KKyAgICAgICAgcmV0dXJuIFNPYmoNCg0KKw0KDQorDQoNCisgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZt b2RUZXJtLg0KDQorICAgIGRlZiB2aXNpdE11bHRkaXZtb2RUZXJtKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1Db250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5tdWx0ZGl2 bW9kVGVybVN1cHBsZW1lbnRhcnkoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJNdWx0 aXBseUxpc3QsIGN0eC5DSWZyRGl2aWRlTGlzdCwgIGN0eC5DSWZyTW9kdWxvTGlzdA0KDQorDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjbXVsdGRpdm1vZFRlcm1NdWwuDQoNCisgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1NdWwo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybU11bENvbnRleHQpOg0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBNT2JqID0gQ0lmck11 bHRpcGx5KGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguQ0lmck11bHRpcGx5TGlzdC5h cHBlbmQoTU9iaikNCg0KKyAgICAgICAgcmV0dXJuIE1PYmoNCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RU ZXJtRGl2Lg0KDQorICAgIGRlZiB2aXNpdE11bHRkaXZtb2RUZXJtRGl2KHNlbGYsIGN0eDpWZnJT eW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1EaXZDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgRE9iaiA9IENJZnJEaXZpZGUoY3R4LnN0YXJ0 LmxpbmUpDQoNCisgICAgICAgIGN0eC5DSWZyRGl2aWRlTGlzdC5hcHBlbmQoRE9iaikNCg0KKyAg ICAgICAgcmV0dXJuIERPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtUm91bmQuDQoNCisgICAg ZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1Nb2R1bG8oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5N dWx0ZGl2bW9kVGVybU1vZHVsb0NvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorICAgICAgICBjdHguTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAg IE1PYmogPSBDSWZyTW9kdWxvKGN0eC5MaW5lKQ0KDQorICAgICAgICBjdHguQ0lmck1vZHVsb0xp c3QuYXBwZW5kKE1PYmopDQoNCisgICAgICAgIHJldHVybiBNT2JqDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjYXN0VGVy bS4NCg0KKyAgICBkZWYgdmlzaXRDYXN0VGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNh c3RUZXJtQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpICMjDQoN CisgICAgICAgIENhc3RUeXBlID0gMHhGRg0KDQorICAgICAgICBpZiBjdHguQm9vbGVhbigpICE9 IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAwDQoNCisgICAgICAgIGVsaWYgY3R4LlVp bnQ2NCgpICE9IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQoNCisgICAgICAgIGVs aWYgY3R4LlVpbnQzMigpICE9IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQoNCisg ICAgICAgIGVsaWYgY3R4LlVpbnQxNigpICE9IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUg PSAxDQoNCisgICAgICAgIGVsaWYgY3R4LlVpbnQ4KCkgIT0gW106DQoNCisgICAgICAgICAgICBD YXN0VHlwZSA9IDENCg0KKw0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAg ICAgICAgaWYgQ2FzdFR5cGUgPT0gMDoNCg0KKyAgICAgICAgICAgIGN0eC5UQk9iaiA9IENJZnJU b0Jvb2xlYW4oTGluZSkNCg0KKyAgICAgICAgZWxpZiBDYXN0VHlwZSA9PSAxOg0KDQorICAgICAg ICAgICAgY3R4LlRVT2JqID0gQ0lmclRvVWludChMaW5lKQ0KDQorDQoNCisgICAgICAgIGN0eC5F eHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4LlRCT2JqLCBjdHgu VFVPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2F0b21UZXJtLg0KDQorICAgIGRlZiB2aXNpdEF0b21UZXJtKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4Lk5PVCgpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgICAgIE5PYmogPSBD SWZyTm90KExpbmUpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUuDQoNCisgICAgZGVm IHZpc2l0VmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZy RXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dCk6DQoNCisgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RM ZXZlbCArPSAxDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAg ICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIGN0eC5DT2JqID0gQ0lmckNh dGVuYXRlKExpbmUpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQor DQoNCisgICAgICAgIHJldHVybiBjdHguQ09iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbk1hdGNo Lg0KDQorICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25NYXRjaChzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaENvbnRleHQpOg0KDQorICAgICAgICBjdHguRXhwSW5m by5Sb290TGV2ZWwgKz0gMQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBjdHguTU9iaiA9 IENJZnJNYXRjaChMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDEN Cg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25N YXRjaDIuDQoNCisgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaDJDb250ZXh0KToNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0Lmxp bmUNCg0KKyAgICAgICAgR3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCg0KKyAgICAg ICAgY3R4Lk0yT2JqID0gQ0lmck1hdGNoMihMaW5lLCBHdWlkKQ0KDQorICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk0yT2JqDQoN CisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJFeHByZXNzaW9uUGFyZW4uDQoNCisgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lv blBhcmVuKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4 dCk6DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJFeHByZXNz aW9uQnVpbGRJbkZ1bmN0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lv bkJ1aWxkSW5GdW5jdGlvbkNvbnRleHQpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI2R1cEV4cC4NCg0KKyAgICBkZWYgdmlzaXREdXBFeHAoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUN Cg0KKyAgICAgICAgRE9iaiA9IENJZnJEdXAoTGluZSkNCg0KKyAgICAgICAgc2VsZi5fX1NhdmVP cEhkckNvbmQoRE9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCks IExpbmUpICMNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0K KyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2YXJlcXZhbEV4cC4NCg0KKyAg ICBkZWYgdmlzaXRWYXJlcXZhbEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZhcmVxdmFs RXhwQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgUmV0dXJuQ29k ZSA9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRA0KDQorICAgICAgICBWYXJJ ZFN0ciA9ICd2YXInDQoNCisgICAgICAgIFZhcklkU3RyICs9IHN0cihjdHguTnVtYmVyKDApKQ0K DQorICAgICAgICBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRW YXJTdG9yZUlkKFZhcklkU3RyKQ0KDQorICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQ6DQoNCisgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgIFFJZCwgTWFzaywgXyA9 IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIFZhcklkU3RyKQ0KDQor ICAgICAgICBDb25zdFZhbCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAg ICAgICBpZiBjdHguRXF1YWwoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgTWFzayA9PSAw Og0KDQorICAgICAgICAgICAgICAgIEVJVk9iaiA9IENJZnJFcUlkVmFsKExpbmUpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoRUlWT2JqLkdldEhlYWRlcigpLCAoY3R4 LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAgICAgICBFSVZP YmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lKQ0KDQorICAgICAgICAgICAgICAg IEVJVk9iai5TZXRWYWx1ZShDb25zdFZhbCkNCg0KKyAgICAgICAgICAgICAgICBjdHguRXhwSW5m by5FeHBPcENvdW50ICs9IDENCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3Ry LCBNYXNrLCBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5FUVVBTCkNCg0KKyAgICAgICAgZWxp ZiBjdHguTGVzc0VxdWFsKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERv U3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWws IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTCkNCg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5M ZXNzKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChjdHgu RXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsIEVGSV9DT01QQVJF X1RZUEUuTEVTU19USEFOKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXJFcXVhbCgp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cElu Zm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBF LkdSRUFURVJfRVFVQUwpDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguR3JlYXRlcigpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExp bmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFU RVJfVEhBTikNCg0KKw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoN CisNCg0KKyAgICBkZWYgQ29udmVydElkRXhwcihzZWxmLCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwg VmFySWRTdHIsIEJpdE1hc2spOg0KDQorDQoNCisgICAgICAgIFFSMU9iaiA9IENJZnJRdWVzdGlv blJlZjEoTGluZU5vKQ0KDQorICAgICAgICBRUjFPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklk U3RyLCBMaW5lTm8pDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFFSMU9iai5HZXRI ZWFkZXIoKSwgKEV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSkNCg0KKyAgICAgICAgaWYgQml0TWFz ayAhPSAwOg0KDQorICAgICAgICAgICAgVTMyT2JqID0gQ0lmclVpbnQzMihMaW5lTm8pDQoNCisg ICAgICAgICAgICBVMzJPYmouU2V0VmFsdWUoQml0TWFzaykNCg0KKw0KDQorICAgICAgICAgICAg QldBT2JqID0gQ0lmckJpdFdpc2VBbmQoTGluZU5vKQ0KDQorDQoNCisgICAgICAgICAgICBVOE9i aiA9IENJZnJVaW50OChMaW5lTm8pDQoNCisgICAgICAgICAgICBpZiBCaXRNYXNrID09IERBVEVf WUVBUl9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlICgwKQ0KDQor ICAgICAgICAgICAgZWxpZiBCaXRNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6DQoNCisgICAg ICAgICAgICAgICAgVThPYmouU2V0VmFsdWUgKDB4MTApDQoNCisgICAgICAgICAgICBlbGlmIEJp dE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoNCg0KKyAgICAgICAgICAgICAgICBVOE9iai5TZXRW YWx1ZSAoMHgxOCkNCg0KKyAgICAgICAgICAgIGVsaWYgQml0TWFzayA9PSBUSU1FX0hPVVJfQklU TUFTSzoNCg0KKyAgICAgICAgICAgICAgICBVOE9iai5TZXRWYWx1ZSAoMCkNCg0KKyAgICAgICAg ICAgIGVsaWYgQml0TWFzayA9PSBUSU1FX01JTlVURV9CSVRNQVNLOg0KDQorICAgICAgICAgICAg ICAgIFU4T2JqLlNldFZhbHVlICgweDgpDQoNCisNCg0KKyAgICAgICAgICAgIFNST2JqID0gQ0lm clNoaWZ0UmlnaHQoTGluZU5vKQ0KDQorDQoNCisgICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCAr PSA0DQoNCisNCg0KKw0KDQorICAgIGRlZiBJZEVxVmFsRG9TcGVjaWFsKHNlbGYsIEV4cEluZm8s IExpbmVObywgUUlkLCBWYXJJZFN0ciwgQml0TWFzaywgQ29uc3RWYWwsIENvbXBhcmVUeXBlKToN Cg0KKw0KDQorICAgICAgICBzZWxmLkNvbnZlcnRJZEV4cHIoRXhwSW5mbywgTGluZU5vLCBRSWQs IFZhcklkU3RyLCBCaXRNYXNrKQ0KDQorICAgICAgICBpZiBDb25zdFZhbCA+IDB4RkY6DQoNCisg ICAgICAgICAgICBVMTZPYmogPSBDSWZyVWludDE2KExpbmVObykNCg0KKyAgICAgICAgICAgIFUx Nk9iai5TZXRWYWx1ZShDb25zdFZhbCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg IFU4T2JqID0gQ0lmclVpbnQ4KExpbmVObykNCg0KKyAgICAgICAgICAgIFU4T2JqLlNldFZhbHVl KENvbnN0VmFsKQ0KDQorDQoNCisNCg0KKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NP TVBBUkVfVFlQRS5FUVVBTDoNCg0KKyAgICAgICAgICAgIEVPYmogPSBDSWZyRXF1YWwoTGluZU5v KQ0KDQorDQoNCisgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuTEVT U19FUVVBTDoNCg0KKyAgICAgICAgICAgIExFT2JqID0gQ0lmckxlc3NFcXVhbChMaW5lTm8pDQoN CisNCg0KKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX1RI QU46DQoNCisgICAgICAgICAgICBMVE9iaiA9IENJZnJMZXNzVGhhbihMaW5lTm8pDQoNCisNCg0K KyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFM Og0KDQorICAgICAgICAgICAgR0VPYmogPSBDSWZyR3JlYXRlckVxdWFsKExpbmVObykNCg0KKw0K DQorICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhB TjoNCg0KKyAgICAgICAgICAgIEdUT2JqID0gQ0lmckdyZWF0ZXJUaGFuKExpbmVObykNCg0KKw0K DQorICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMg0KDQorDQoNCisNCg0KKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcXZhbEV4cC4N Cg0KKyAgICBkZWYgdmlzaXRJZGVxdmFsRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuSWRl cXZhbEV4cENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgTWFzayA9IGN0eC52ZnJR dWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNrDQoNCisgICAgICAgIFFJZCA9IGN0eC52ZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWUoKS5RSWQNCg0KKyAgICAgICAgVmFySWRTdHIgPSBjdHgudmZyUXVl c3Rpb25EYXRhRmllbGROYW1lKCkuVmFySWRTdHINCg0KKyAgICAgICAgTGluZU5vID0gY3R4LnZm clF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLkxpbmUNCg0KKyAgICAgICAgQ29uc3RWYWwgPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KDQorICAgICAgICBpZiBjdHguRXF1YWwoKSAhPSBO b25lOg0KDQorICAgICAgICAgICAgaWYgTWFzayA9PSAwOg0KDQorICAgICAgICAgICAgICAgIEVJ Vk9iaiA9IENJZnJFcUlkVmFsKExpbmUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX1NhdmVP cEhkckNvbmQoRUlWT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAw KSwgTGluZSkNCg0KKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZh cklkU3RyLCBMaW5lTm8pDQoNCisgICAgICAgICAgICAgICAgRUlWT2JqLlNldFZhbHVlKENvbnN0 VmFsKQ0KDQorICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNp YWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklf Q09NUEFSRV9UWVBFLkVRVUFMKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4Lkxlc3NFcXVhbCgp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cElu Zm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBF LkxFU1NfRVFVQUwpDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguTGVzcygpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJ ZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTikN Cg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5HcmVhdGVyRXF1YWwoKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZh cklkU3RyLCBNYXNrLCBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFMKQ0K DQorDQoNCisgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3Ry LCBNYXNrLCBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX1RIQU4pDQoNCisNCg0K KyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorICAgIGRlZiBJZEVxSWRE b1NwZWNpYWwoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBR SWQyLCBWYXJJZFN0cjIsIE1hc2syLCBDb21wYXJlVHlwZSk6DQoNCisNCg0KKyAgICAgICAgc2Vs Zi5Db252ZXJ0SWRFeHByKEV4cEluZm8sIExpbmVObywgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSkN Cg0KKyAgICAgICAgc2VsZi5Db252ZXJ0SWRFeHByKEV4cEluZm8sIExpbmVObywgUUlkMiwgVmFy SWRTdHIyLCBNYXNrMikNCg0KKw0KDQorICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09N UEFSRV9UWVBFLkVRVUFMOg0KDQorICAgICAgICAgICAgRU9iaiA9IENJZnJFcXVhbChMaW5lTm8p DQoNCisNCg0KKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNT X0VRVUFMOg0KDQorICAgICAgICAgICAgTEVPYmogPSBDSWZyTGVzc0VxdWFsKExpbmVObykNCg0K Kw0KDQorICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhB TjoNCg0KKyAgICAgICAgICAgIExUT2JqID0gQ0lmckxlc3NUaGFuKExpbmVObykNCg0KKw0KDQor ICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUw6 DQoNCisgICAgICAgICAgICBHRU9iaiA9IENJZnJHcmVhdGVyRXF1YWwoTGluZU5vKQ0KDQorDQoN CisgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFO Og0KDQorICAgICAgICAgICAgR1RPYmogPSBDSWZyR3JlYXRlclRoYW4oTGluZU5vKQ0KDQorDQoN CisgICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNpZGVxaWRFeHAuDQoN CisgICAgZGVmIHZpc2l0SWRlcWlkRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuSWRlcWlk RXhwQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBNYXNrMSA9IGN0eC52ZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWUoMCkuTWFzaw0KDQorICAgICAgICBRSWQxID0gY3R4LnZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZSgwKS5RSWQNCg0KKyAgICAgICAgVmFySWRTdHIxID0gY3R4LnZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5WYXJJZFN0cg0KDQorICAgICAgICBMaW5lTm8xID0gY3R4 LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5MaW5lDQoNCisNCg0KKyAgICAgICAgTWFzazIg PSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDEpLk1hc2sNCg0KKyAgICAgICAgUUlkMiA9 IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuUUlkDQoNCisgICAgICAgIFZhcklkU3Ry MiA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuVmFySWRTdHINCg0KKyAgICAgICAg TGluZU5vMiA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuTGluZQ0KDQorDQoNCisg ICAgICAgIGlmIGN0eC5FcXVhbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBNYXNrMSAm IE1hc2syOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuSWRFcUlkRG9TcGVjaWFsKGN0eC5FeHBJ bmZvLCBMaW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLCBWYXJJZFN0cjIsIE1hc2sy LCBFRklfQ09NUEFSRV9UWVBFLkVRVUFMKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICBFSUlPYmogPSBDSWZyRXFJZElkKExpbmUpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5fX1NhdmVPcEhkckNvbmQoRUlJT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhw T3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAgICAgICBFSUlPYmouU2V0UXVlc3Rp b25JZDEoUUlkMSwgVmFySWRTdHIxLCBMaW5lTm8xKQ0KDQorICAgICAgICAgICAgICAgIEVJSU9i ai5TZXRRdWVzdGlvbklkMShRSWQyLCBWYXJJZFN0cjIsIExpbmVObzIpDQoNCisgICAgICAgICAg ICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKyAgICAgICAgZWxpZiBj dHguTGVzc0VxdWFsKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRFcUlkRG9TcGVj aWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLCBWYXJJ ZFN0cjIsIE1hc2syLCBFRklfQ09NUEFSRV9UWVBFLkxFU1NfRVFVQUwpDQoNCisNCg0KKyAgICAg ICAgZWxpZiBjdHguTGVzcygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFJZERv U3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwgUUlkMiwg VmFySWRTdHIyLCBNYXNrMiwgRUZJX0NPTVBBUkVfVFlQRS5MRVNTX1RIQU4pDQoNCisNCg0KKyAg ICAgICAgZWxpZiBjdHguR3JlYXRlckVxdWFsKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNl bGYuSWRFcUlkRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1h c2sxLCBRSWQyLCBWYXJJZFN0cjIsIE1hc2syLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFV QUwpDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguR3JlYXRlcigpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBzZWxmLklkRXFJZERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkMSwgVmFy SWRTdHIxLCBNYXNrMSwgUUlkMiwgVmFySWRTdHIyLCBNYXNrMiwgRUZJX0NPTVBBUkVfVFlQRS5H UkVBVEVSX1RIQU4pDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0K KyAgICBkZWYgSWRFcUxpc3REb1NwZWNpYWwoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQsIFZh cklkU3RyLCBNYXNrLCBMaXN0TGVuLCBWYWx1ZUxpc3QpOg0KDQorICAgICAgICBpZiBMaXN0TGVu ID09IDA6DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBzZWxmLklkRXFW YWxEb1NwZWNpYWwoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBWYWx1ZUxp c3RbMF0sIEVGSV9DT01QQVJFX1RZUEUuRVFVQUwpDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdl KDEsIExpc3RMZW4pOg0KDQorICAgICAgICAgICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKEV4cElu Zm8sIExpbmVObywgUUlkLCBWYXJJZFN0ciwgTWFzaywgVmFsdWVMaXN0W2ldLCBFRklfQ09NUEFS RV9UWVBFLkVRVUFMKQ0KDQorICAgICAgICAgICAgT09iaiA9IENJZnJPcihMaW5lTm8pDQoNCisg ICAgICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisNCg0KKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcXZhbGxpc3RF eHAuDQoNCisgICAgZGVmIHZpc2l0SWRlcXZhbGxpc3RFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5JZGVxdmFsbGlzdEV4cENvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgTWFz ayA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNrDQoNCisgICAgICAgIFFJZCA9 IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5RSWQNCg0KKyAgICAgICAgVmFySWRTdHIg PSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuVmFySWRTdHINCg0KKyAgICAgICAgTGlu ZU5vID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLkxpbmUNCg0KKyAgICAgICAgVmFs dWVMaXN0ID0gW10NCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5OdW1iZXIo KSkpOg0KDQorICAgICAgICAgICAgVmFsdWVMaXN0LmFwcGVuZChzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcihpKSkpDQoNCisNCg0KKyAgICAgICAgTGlzdExlbiA9IGxlbihWYWx1ZUxpc3QpDQoN CisNCg0KKyAgICAgICAgaWYgTWFzayAhPSAwOg0KDQorICAgICAgICAgICAgc2VsZi5JZEVxTGlz dERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBMaXN0 TGVuLCBWYWx1ZUxpc3QpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBFSUxPYmog PSBDSWZyRXFJZExpc3QoTGluZSwgTGlzdExlbikNCg0KKyAgICAgICAgICAgIGlmIFFJZCAhPSBF RklfUVVFU1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgICAgICBFSUxPYmouU2V0UXVl c3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lTm8pDQoNCisgICAgICAgICAgICBFSUxPYmouU2V0 TGlzdExlbmd0aChMaXN0TGVuKQ0KDQorICAgICAgICAgICAgRUlMT2JqLlNldFZhbHVlTGlzdChW YWx1ZUxpc3QpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChFSUxPYmouR2V0 SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAg ICAgICAgaWYgUUlkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAg ICAgIEVJTE9iai5TZXRRdWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCg0KKyAgICAg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4 LkV4cEluZm8NCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMS4NCg0KKyAgICBkZWYg dmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMShzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxQ29udGV4dCk6DQoNCisgICAgICAgIGN0 eC5MaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjEudGV4dA0KDQorICAgICAgICBj dHguVmFySWRTdHIgKz0gJ1snDQoNCisgICAgICAgIGN0eC5WYXJJZFN0ciArPSBjdHguSS50ZXh0 DQoNCisgICAgICAgIGN0eC5WYXJJZFN0ciArPSAnXScNCg0KKyAgICAgICAgY3R4LlFJZCwgY3R4 Lk1hc2ssIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChOb25lLCBjdHgu VmFySWRTdHIpDQoNCisgICAgICAgIGlmIHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb246 DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9DT05TVEFOVF9PTkxZLCBjdHguU04xLmxpbmUpDQoNCisgICAgICAgIHJldHVybiBjdHgu UUlkLCBjdHguTWFzaywgY3R4LlZhcklkU3RyDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVs ZE5hbWVSdWxlMi4NCg0KKyAgICBkZWYgdmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxl MihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUy Q29udGV4dCk6DQoNCisgICAgICAgIGN0eC5MaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0 eC5TTjIudGV4dA0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFycmF5TmFt ZSgpKSk6DQoNCisgICAgICAgICAgICBjdHguVmFySWRTdHIgKz0gJy4nDQoNCisgICAgICAgICAg ICBpZiBzZWxmLl9fQ29uc3RhbnRPbmx5SW5FeHByZXNzaW9uOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPTlNUQU5UX09O TFksIGN0eC5TTjIubGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5WYXJJZFN0ciArPSBjdHguYXJy YXlOYW1lKGkpLlN1YlN0cloNCg0KKw0KDQorICAgICAgICBjdHguUUlkLCBjdHguTWFzaywgXyA9 IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIGN0eC5WYXJJZFN0cikN Cg0KKyAgICAgICAgcmV0dXJuIGN0eC5RSWQsIGN0eC5NYXNrLCBjdHguVmFySWRTdHINCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI2FycmF5TmFtZS4NCg0KKyAgICBkZWYgdmlzaXRBcnJheU5hbWUoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5BcnJheU5hbWVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguU3ViU3RyICs9IHNlbGYuX19UcmFuc0lkKGN0 eC5TdHJpbmdJZGVudGlmaWVyKCkpDQoNCisgICAgICAgIGN0eC5TdWJTdHJaICs9IHNlbGYuX19U cmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQoNCisgICAgICAgIGlmIGN0eC5OICE9IE5v bmU6DQoNCisgICAgICAgICAgICBJZHggPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk4udGV4dCkNCg0K KyAgICAgICAgICAgIGlmIElkeCA+IDA6DQoNCisgICAgICAgICAgICAgICAgY3R4LlN1YlN0ciAr PSAnWycNCg0KKyAgICAgICAgICAgICAgICBjdHguU3ViU3RyICs9IHN0cihJZHgpDQoNCisgICAg ICAgICAgICAgICAgY3R4LlN1YlN0ciArPSAnXScNCg0KKw0KDQorICAgICAgICAgICAgY3R4LlN1 YlN0clogKz0gJ1snDQoNCisgICAgICAgICAgICBjdHguU3ViU3RyWiArPSBzdHIoSWR4KQ0KDQor ICAgICAgICAgICAgY3R4LlN1YlN0clogKz0gJ10nDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0 eC5TdWJTdHIsIGN0eC5TdWJTdHJaDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNxdWVzdGlvbnJlZjFFeHAuDQoNCisgICAg ZGVmIHZpc2l0UXVlc3Rpb25yZWYxRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuUXVlc3Rp b25yZWYxRXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZSAjDQoN CisgICAgICAgIFFOYW1lID0gTm9uZSAjDQoNCisgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAg IGlmIGN0eC5TdHJpbmdJZGVudGlmaWVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFFOYW1l ID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCg0KKyAgICAgICAgICAg IFFJZCwgXyAsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChRTmFtZSkN Cg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKw0KDQorICAgICAgICBR UjFPYmogPSBDSWZyUXVlc3Rpb25SZWYxKExpbmUpDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BI ZHJDb25kKFFSMU9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCks IExpbmUpDQoNCisgICAgICAgIFFSMU9iai5TZXRRdWVzdGlvbklkKFFJZCwgUU5hbWUsIExpbmUp DQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAg IHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcnVsZXJlZkV4cC4NCg0KKyAgICBkZWYgdmlz aXRSdWxlcmVmRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQp Og0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgUlJPYmogPSBDSWZyUnVsZVJlZihMaW5lKQ0KDQor ICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChSUk9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJ bmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAgICAgIFJ1bGVJZCA9IHNlbGYuX19D VmZyUnVsZXNEQi5HZXRSdWxlSWQoc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIo KSkpDQoNCisgICAgICAgIFJST2JqLlNldFJ1bGVJZChSdWxlSWQpDQoNCisgICAgICAgIGN0eC5F eHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5m bw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjc3RyaW5ncmVmMUV4cC4NCg0KKyAgICBkZWYgdmlzaXRTdHJpbmdyZWYxRXhw KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMUV4cENvbnRleHQpOg0KDQorICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKyAgICAgICAgUmVmU3RyaW5nSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigpKQ0KDQorICAgICAgICBTUjFPYmogPSBDSWZyU3RyaW5nUmVmMShMaW5lKQ0KDQorICAgICAg ICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChTUjFPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5F eHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICBTUjFPYmouU2V0U3RyaW5nSWQoUmVm U3RyaW5nSWQpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoN CisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcHVzaHRoaXNFeHAuDQoNCisg ICAgZGVmIHZpc2l0UHVzaHRoaXNFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5QdXNodGhp c0V4cENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgVE9iaiA9IENJZnJUaGlzKExp bmUpDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFRPYmouR2V0SGVhZGVyKCksIChj dHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5m by5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8NCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNzZWN1cml0eUV4cC4NCg0KKyAgICBkZWYgdmlzaXRTZWN1cml0eUV4cChzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLlNlY3VyaXR5RXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAg ICBTT2JqID0gQ0lmclNlY3VyaXR5KExpbmUpDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJD b25kKFNPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5l KQ0KDQorICAgICAgICBTT2JqLlNldFBlcm1pc3Npb25zKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1 aWQpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAg ICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI251bWVyaWNWYXJTdG9yZVR5cGUuDQoNCisgICAg ZGVmIHZpc2l0TnVtZXJpY1ZhclN0b3JlVHlwZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLk51 bWVyaWNWYXJTdG9yZVR5cGVDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKyAgICAgICAgaWYgY3R4Lk51bWVyaWNTaXplT25lKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KDQorICAgICAg ICBpZiBjdHguTnVtZXJpY1NpemVUd28oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LlZh clR5cGUgPSBFRklfSUZSX05VTUVSSUNfU0laRV8yDQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmlj U2l6ZUZvdXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LlZhclR5cGUgPSBFRklfSUZS X05VTUVSSUNfU0laRV80DQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUVpZ2h0KCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVf OA0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguVmFyVHlwZQ0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ2V0RXhwLg0K DQorICAgIGRlZiB2aXNpdEdldEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkdldEV4cENv bnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3Jl SWQgPT0gMDoNCg0KKyAgICAgICAgICAgICMgc3VwcG9ydCBEYXRlL1RpbWUgcXVlc3Rpb24NCg0K KyAgICAgICAgICAgIFZhcklkU3RyID0gY3R4LnZmclN0b3JhZ2VWYXJJZCgpLlZhcklkU3RyDQoN CisgICAgICAgICAgICBRSWQsIE1hc2ssIFFUeXBlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLkdl dFF1ZXN0aW9uSWQoTm9uZSwgVmFySWRTdHIsIEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9S TUFMKQ0KDQorICAgICAgICAgICAgaWYgKFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRCkg b3IgKE1hc2sgPT0gMCkgb3IgKFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9S TUFMKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdl dCB0aGUgZW5vdWdoIHZhcnN0b3JlIGluZm9ybWF0aW9uIikNCg0KKyAgICAgICAgICAgIGlmIFFU eXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURToNCg0KKyAgICAgICAgICAgICAg ICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9EQVRFDQoNCisgICAgICAgICAg ICBlbGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToNCg0KKyAgICAg ICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1FDQoNCisN Cg0KKyAgICAgICAgICAgIGlmIE1hc2sgPT0gREFURV9ZRUFSX0JJVE1BU0s6DQoNCisgICAgICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCg0KKyAgICAgICAgICAgIGVsaWYg TWFzayA9PSBEQVRFX0RBWV9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5m by5WYXJPZmZzZXQgPSAzDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sgPT0gVElNRV9IT1VSX0JJ VE1BU0s6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCg0K KyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX01JTlVURV9CSVRNQVNLOg0KDQorICAgICAg ICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAxDQoNCisgICAgICAgICAgICBlbGlm IE1hc2sgPT0gVElNRV9TRUNPTkRfQklUTUFTSzoNCg0KKyAgICAgICAgICAgICAgICBjdHguQmFz ZUluZm8uVmFyT2Zmc2V0ID0gMg0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBP UlRFRCwgTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdoIHZhcnN0b3Jl IGluZm9ybWF0aW9uIikNCg0KKw0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgVmFy VHlwZSA9IEVGSV9JRlJfVFlQRV9VTkRFRklORUQNCg0KKyAgICAgICAgICAgIGlmIGN0eC5GTEFH UygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgVmFyVHlwZSA9IGN0eC5udW1lcmljVmFy U3RvcmVUeXBlKCkuVmFyVHlwZQ0KDQorDQoNCisgICAgICAgICAgICBpZiAoZ0NWZnJEYXRhU3Rv cmFnZS5HZXRWYXJTdG9yZVR5cGUoY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQpID09IEVGSV9WRlJf VkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX05BTUUpIGFuZCAoVmFyVHlwZSA9PSBFRklf SUZSX1RZUEVfVU5ERUZJTkVEKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgTGluZSwgIkdldC9TZXQg b3Bjb2RlIGRvbid0IHN1cHBvcnQgbmFtZSBzdHJpbmciKQ0KDQorDQoNCisgICAgICAgICAgICBp ZiBWYXJUeXBlICE9IEVGSV9JRlJfVFlQRV9VTkRFRklORUQ6DQoNCisgICAgICAgICAgICAgICAg Y3R4LkJhc2VJbmZvLlZhclR5cGUgPSBWYXJUeXBlDQoNCisgICAgICAgICAgICAgICAgU2l6ZSwg UmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBl KGN0eC5CYXNlSW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB2YXIgdHlw ZSBzaXplIikNCg0KKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0g U2l6ZQ0KDQorDQoNCisgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRh VHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoY3R4LkJhc2VJbmZvLlZhclR5cGUpDQoN CisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJHZXQv U2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyIHR5cGUgc2l6ZSIpDQoNCisNCg0KKyAgICAgICAgICAg IGlmIFNpemUgIT0gY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRF RCwgTGluZSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1cHBvcnQgZGF0YSBhcnJheSIpDQoNCisN Cg0KKyAgICAgICAgY3R4LkdPYmogPSBDSWZyR2V0KExpbmUpDQoNCisgICAgICAgIHNlbGYuX19T YXZlT3BIZHJDb25kKGN0eC5HT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgY3R4LkdPYmouU2V0VmFySW5mbyhjdHguQmFzZUlu Zm8pDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAg ICAgIHJldHVybiBjdHguR09iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbkNvbnN0YW50Lg0KDQor ICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25Db25zdGFudChzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4 LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAg ICAgaWYgY3R4LlRydWVTeW1ib2woKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgVE9iaiA9IENJ ZnJUcnVlKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChUT2JqLkdl dEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIGlmIGN0 eC5GYWxzZVN5bWJvbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBGT2JqID0gQ0lmckZhbHNl KExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChGT2JqLkdldEhlYWRl cigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAg IGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5PbmUo KSAhPSBOb25lOg0KDQorICAgICAgICAgICAgT09iaiA9IENJZnJPbmUoTGluZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKE9PYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5m by5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk9uZXMoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgT09iaiA9IENJZnJPbmVzKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9f U2F2ZU9wSGRyQ29uZChPT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9 PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0K DQorDQoNCisgICAgICAgIGlmIGN0eC5aZXJvKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFpP YmogPSBDSWZyWmVybyhMaW5lKQ0KDQorICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQo Wk9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoN CisgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAg ICBpZiBjdHguVW5kZWZpbmVkKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFVPYmogPSBDSWZy VW5kZWZpbmVkKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChVT2Jq LkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAg ICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIGlm IGN0eC5WZXJzaW9uKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFZPYmogPSBDSWZyVmVyc2lv bihMaW5lKQ0KDQorICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoVk9iai5HZXRIZWFk ZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAgICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVt YmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFU2NE9iaiA9IENJZnJVaW50NjQoTGluZSkN Cg0KKyAgICAgICAgICAgIFU2NE9iai5TZXRWYWx1ZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigpKSkNCg0KKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFU2NE9iai5HZXRIZWFk ZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAgICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4 LkV4cEluZm8NCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25VbmFyeU9wLg0KDQorICAgIGRlZiB2aXNp dFZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVz c2lvblVuYXJ5T3BDb250ZXh0KToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNsZW5ndGhFeHAuDQoNCisgICAgZGVmIHZpc2l0TGVuZ3RoRXhwKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dCk6DQoNCisgICAgICAgIExp bmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorICAgICAgICBjdHguTE9iaiA9IENJZnJMZW5ndGgoTGluZSkNCg0KKyAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHguTE9iag0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2Jp dHdpc2Vub3RFeHAuDQoNCisgICAgZGVmIHZpc2l0Qml0d2lzZW5vdEV4cChzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLkJpdHdpc2Vub3RFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0 eC5zdGFydC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAg ICAgIGN0eC5CV05PYmogPSBDSWZyQml0V2lzZU5vdChMaW5lKQ0KDQorICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCg0KKyAgICAgICAgcmV0dXJuIGN0eC5CV05PYmoNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3F1ZXN0aW9uMjNyZWZFeHAuDQoNCisgICAgZGVmIHZpc2l0UXVlc3Rpb24yM3JlZkV4cChz ZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KToNCg0KKyAg ICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIFR5cGUgPSAweDENCg0KKyAg ICAgICAgRGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBUeXBlID0gMHgyDQoNCisgICAgICAgICAgICBEZXZpY2VQYXRo ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKw0KDQorICAgICAgICBpZiBjdHgu VXVpZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBUeXBlID0gMHgzDQoNCisNCg0KKyAgICAg ICAgaWYgVHlwZSA9PSAweDE6DQoNCisgICAgICAgICAgICBRUjJPYmogPSBDSWZyUXVlc3Rpb25S ZWYyKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChRUjJPYmouR2V0 SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorDQoNCisg ICAgICAgIGlmIFR5cGUgPT0gMHgyOg0KDQorICAgICAgICAgICAgUVIzXzJPYmogPSBDSWZyUXVl c3Rpb25SZWYzXzIoTGluZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFFS M18yT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkN Cg0KKyAgICAgICAgICAgIFFSM18yT2JqLlNldERldmljZVBhdGgoRGV2aWNlUGF0aCkNCg0KKw0K DQorICAgICAgICBpZiBUeXBlID09IDB4MzoNCg0KKyAgICAgICAgICAgIFFSM18zT2JqID0gQ0lm clF1ZXN0aW9uUmVmM18zKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29u ZChRUjNfM09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExp bmUpDQoNCisgICAgICAgICAgICBRUjNfM09iai5TZXREZXZpY2VQYXRoKERldmljZVBhdGgpDQoN CisgICAgICAgICAgICBRUjNfM09iai5TZXRHdWlkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQp DQoNCisNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKw0K DQorICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8NCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3N0cmluZ3JlZjJFeHAuDQoN CisgICAgZGVmIHZpc2l0U3RyaW5ncmVmMkV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlN0 cmluZ3JlZjJFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoN CisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0eC5TUjJPYmog PSBDSWZyU3RyaW5nUmVmMihMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50 ICs9IDENCg0KKyAgICAgICAgcmV0dXJuIGN0eC5TUjJPYmoNCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RvYm9vbEV4cC4N Cg0KKyAgICBkZWYgdmlzaXRUb2Jvb2xFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub2Jv b2xFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0eC5UQk9iaiA9IENJZnJU b0Jvb2xlYW4oTGluZSkNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoN CisgICAgICAgIHJldHVybiBjdHguVEJPYmoNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b3N0cmluZ0V4cC4NCg0KKyAgICBkZWYg dmlzaXRUb3N0cmluZ0V4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29u dGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguVFNPYmogPSBDSWZyVG9TdHJpbmco TGluZSkNCg0KKyAgICAgICAgRm10ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0K KyAgICAgICAgY3R4LlRTT2JqLlNldEZvcm1hdChGbXQpDQoNCisgICAgICAgIGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4LlRTT2JqDQoNCisNCg0KKw0K DQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN1 bmludEV4cC4NCg0KKyAgICBkZWYgdmlzaXRVbmludEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlVuaW50RXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0K DQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguVFVPYmog PSBDSWZyVG9VaW50KExpbmUpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0g MQ0KDQorICAgICAgICByZXR1cm4gY3R4LlRVT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b3VwcGVyRXhwLg0KDQor ICAgIGRlZiB2aXNpdFRvdXBwZXJFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub3VwcGVy RXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguVFVPYmogPSBDSWZyVG9V cHBlcihMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5UVU9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG9sd2VyRXhwLg0KDQorICAgIGRlZiB2 aXNpdFRvbHdlckV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvbHdlckV4cENvbnRleHQp Og0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LlRMT2JqID0gQ0lmclRvTG93ZXIoTGluZSkN Cg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVy biBjdHguVExPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NldEV4cC4NCg0KKyAgICBkZWYgdmlzaXRTZXRFeHAoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5TZXRFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9 IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisg ICAgICAgIGlmIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID09IDA6DQoNCisgICAgICAgICAgICAj IHN1cHBvcnQgRGF0ZS9UaW1lIHF1ZXN0aW9uDQoNCisgICAgICAgICAgICBWYXJJZFN0ciA9IGN0 eC52ZnJTdG9yYWdlVmFySWQoKS5WYXJJZFN0cg0KDQorICAgICAgICAgICAgUUlkLCBNYXNrLCBR VHlwZSA9IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIFZhcklkU3Ry LCBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTCkNCg0KKyAgICAgICAgICAgIGlmIChR SWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpIG9yIChNYXNrID09IDApIG9yIChRVHlwZSA9 PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTCk6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQs IExpbmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZv cm1hdGlvbiIpDQoNCisgICAgICAgICAgICBpZiBRVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFV RVNUSU9OX0RBVEU6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBF RklfSUZSX1RZUEVfREFURQ0KDQorICAgICAgICAgICAgZWxpZiBRVHlwZSA9PSBFRklfUVVFU0lP Tl9UWVBFLlFVRVNUSU9OX1RJTUU6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZh clR5cGUgPSBFRklfSUZSX1RZUEVfVElNRQ0KDQorDQoNCisgICAgICAgICAgICBpZiBNYXNrID09 IERBVEVfWUVBUl9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJP ZmZzZXQgPSAwDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoN Cg0KKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMw0KDQorICAgICAg ICAgICAgZWxpZiBNYXNrID09IFRJTUVfSE9VUl9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAg IGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAwDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sgPT0g VElNRV9NSU5VVEVfQklUTUFTSzoNCg0KKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFy T2Zmc2V0ID0gMQ0KDQorICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfU0VDT05EX0JJVE1B U0s6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDINCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIExpbmUsICJHZXQvU2V0IG9wY29k ZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIpDQoNCisNCg0KKyAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFZhclR5cGUgPSBFRklfSUZSX1RZUEVfVU5ERUZJ TkVEDQoNCisgICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgICAgIFZhclR5cGUgPSBjdHgubnVtZXJpY1ZhclN0b3JlVHlwZSgpLlZhclR5cGUNCg0KKw0K DQorICAgICAgICAgICAgaWYgKGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKGN0eC5C YXNlSW5mby5WYXJTdG9yZUlkKSA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJT VE9SRV9OQU1FKSBhbmQgKFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX1VOREVGSU5FRCk6DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fVU5TVVBQT1JURUQsIExpbmUsICJHZXQvU2V0IG9wY29kZSBkb24ndCBzdXBwb3J0IG5hbWUg c3RyaW5nIikNCg0KKw0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSAhPSBFRklfSUZSX1RZUEVf VU5ERUZJTkVEOg0KDQorICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0gVmFy VHlwZQ0KDQorICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFU eXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8uVmFyVHlwZSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJH ZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyIHR5cGUgc2l6ZSIpDQoNCisgICAgICAgICAgICAg ICAgY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCg0KKw0KDQorICAgICAgICAgICAg U2l6ZSwgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURh dGFUeXBlKGN0eC5CYXNlSW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0IHZhciB0 eXBlIHNpemUiKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBTaXplICE9IGN0eC5CYXNlSW5mby5W YXJUb3RhbFNpemU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIExpbmUsICJHZXQvU2V0IG9wY29kZSBk b24ndCBzdXBwb3J0IGRhdGEgYXJyYXkiKQ0KDQorDQoNCisgICAgICAgIGN0eC5UU09iaiA9IENJ ZnJTZXQoTGluZSkNCg0KKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoY3R4LlRTT2JqLkdl dEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAg ICAgY3R4LlRTT2JqLlNldFZhckluZm8oY3R4LkJhc2VJbmZvKQ0KDQorICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4LlRTT2JqDQoN CisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJFeHByZXNzaW9uVGVybmFyeU9wLg0KDQorICAgIGRlZiB2aXNpdFZmckV4cHJl c3Npb25UZXJuYXJ5T3Aoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uVGVy bmFyeU9wQ29udGV4dCk6DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjY29uZGl0aW9uYWxFeHAuDQoNCisgICAgZGVmIHZpc2l0Q29uZGl0aW9uYWxF eHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Db25kaXRpb25hbEV4cENvbnRleHQpOg0KDQor ICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LkNPYmogPSBDSWZyQ29uZGl0aW9uYWwoTGluZSkNCg0K KyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBj dHguQ09iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjZmluZEV4cC4NCg0KKyAgICBkZWYgdmlzaXRGaW5kRXhwKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuRmluZEV4cENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0g Y3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAg ICAgICAgRk9iaiA9IENJZnJGaW5kKExpbmUpDQoNCisgICAgICAgIEZvcm1hdCA9IDANCg0KKyAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5maW5kRm9ybWF0KCkpKToNCg0KKyAgICAg ICAgICAgIEZvcm1hdCA9IGN0eC5maW5kRm9ybWF0KGkpLkZvcm1hdA0KDQorDQoNCisgICAgICAg IEZPYmouU2V0Rm9ybWF0KEZvcm1hdCkNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQoNCisgICAgICAgIHJldHVybiBGT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNmaW5kRm9ybWF0Lg0KDQor ICAgIGRlZiB2aXNpdEZpbmRGb3JtYXQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5GaW5kRm9y bWF0Q29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAg ICAgIGlmIGN0eC5TZW5zaXRpdmUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkZvcm1h dCA9IDB4MDANCg0KKyAgICAgICAgZWxpZiBjdHguSW5zZW5zaXRpdmUoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgY3R4LkZvcm1hdCA9IDB4MDENCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Gb3Jt YXQNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI21pZEV4cC4NCg0KKyAgICBkZWYgdmlzaXRNaWRFeHAoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5NaWRFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0 eC5NT2JqID0gQ0lmck1pZChMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50 ICs9IDENCg0KKyAgICAgICAgcmV0dXJuIGN0eC5NT2JqDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG9rZW5FeHAuDQoNCisgICAg ZGVmIHZpc2l0VG9rZW5FeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub2tlbkV4cENvbnRl eHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LlRPYmogPSBDSWZyVG9rZW4oTGluZSkN Cg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVy biBjdHguVE9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjc3BhbkV4cC4NCg0KKyAgICBkZWYgdmlzaXRTcGFuRXhwKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3BhbkV4cENvbnRleHQpOg0KDQorICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgRmxhZ3MgPSAwDQoNCisgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBGbGFnc0N0eCBpbiBjdHguc3BhbkZs YWdzKCk6DQoNCisgICAgICAgICAgICBGbGFncyB8PSBGbGFnc0N0eC5GbGFnDQoNCisgICAgICAg IGN0eC5TT2JqID0gQ0lmclNwYW4oTGluZSkNCg0KKyAgICAgICAgY3R4LlNPYmouU2V0RmxhZ3Mo RmxhZ3MpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAg ICByZXR1cm4gY3R4LlNPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NwYW5GbGFncy4NCg0KKyAgICBkZWYgdmlzaXRT cGFuRmxhZ3Moc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0KToNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJl cigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKCkpDQoNCisgICAgICAgIGVsaWYgY3R4Lkxhc3ROb25NYXRjaCgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IDB4MDANCg0KKyAgICAgICAgZWxpZiBjdHguRmly c3ROb25NYXRjaCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IDB4MDENCg0K KyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uTWFwLg0KDQor ICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25NYXAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5W ZnJFeHByZXNzaW9uTWFwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGlu ZQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguTU9i aiA9IENJZnJNYXAoTGluZSkNCg0KKyAgICAgICAgRU9iaiA9IENJZnJFbmQoKQ0KDQorICAgICAg ICBMaW5lID0gKE5vbmUgaWYgY3R4LnN0b3AgaXMgTm9uZSBlbHNlIGN0eC5zdG9wKS5saW5lDQoN CisgICAgICAgIEVPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCg0KKw0KDQorICAgIGRl ZiBfX0dldFRleHQoc2VsZiwgY3R4KToNCg0KKyAgICAgICAgaWYgY3R4ID09IE5vbmU6DQoNCisg ICAgICAgICAgICByZXR1cm4gTm9uZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg cmV0dXJuIGN0eC50ZXh0DQoNCisNCg0KKyAgICBkZWYgX19UcmFuc0lkKHNlbGYsIFN0cmluZ0lk ZW50aWZpZXJUb2tlbiwgRGVmYXVsdFZhbHVlPU5vbmUpOg0KDQorICAgICAgICBpZiBTdHJpbmdJ ZGVudGlmaWVyVG9rZW4gPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFs dWUNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBzdHIoU3RyaW5nSWRl bnRpZmllclRva2VuKQ0KDQorDQoNCisgICAgZGVmIF9fVHJhbnNOdW0oc2VsZiwgTnVtYmVyVG9r ZW4sIERlZmF1bHRWYWx1ZT0wKToNCg0KKyAgICAgICAgaWYgTnVtYmVyVG9rZW4gPT0gTm9uZToN Cg0KKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCg0KKyAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgIFN0clRva2VuID0gc3RyKE51bWJlclRva2VuKQ0KDQorICAgICAgICAgICAg aWYgJzB4JyBpbiBTdHJUb2tlbjoNCg0KKyAgICAgICAgICAgICAgICBOdW1iZXJUb2tlbiA9IGlu dChTdHJUb2tlbiwgMCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg TnVtYmVyVG9rZW4gPSBpbnQoU3RyVG9rZW4pDQoNCisgICAgICAgICMgZXJyb3IgaGFuZGxlICwg dmFsdWUgaXMgdG9vIGxhcmdlIHRvIHN0b3JlDQoNCisgICAgICAgIHJldHVybiBOdW1iZXJUb2tl bg0KDQorDQoNCisgICAgZGVmIF9fQXNzaWduUXVlc3Rpb25LZXkoc2VsZiwgT3BPYmosIEtleSk6 DQoNCisNCg0KKyAgICAgICAgaWYgS2V5ID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4N Cg0KKyAgICAgICAgaWYgT3BPYmouR2V0RmxhZ3MoKSAmIEVGSV9JRlJfRkxBR19DQUxMQkFDSzoN Cg0KKyAgICAgICAgICAgICMgaWYgdGhlIHF1ZXN0aW9uIGlzIG5vdCBDQUxMQkFDSyBpZ25vcmUg dGhlIGtleS4NCg0KKyAgICAgICAgICAgIHNlbGYuX19DVmZyUXVlc3Rpb25EQi5VcGRhdGVRdWVz dGlvbklkKE9wT2JqLkdldFF1ZXN0aW9uSWQoKSwgS2V5KQ0KDQorICAgICAgICAgICAgT3BPYmou U2V0UXVlc3Rpb25JZChLZXkpDQoNCisgICAgICAgIHJldHVybg0KDQorDQoNCisgICAgZGVmIF9f RXh0cmFjdE9yaWdpbmFsVGV4dChzZWxmLCBjdHgpOg0KDQorICAgICAgICBTb3VyY2UgPSBjdHgu c3RhcnQuZ2V0VG9rZW5Tb3VyY2UoKQ0KDQorICAgICAgICBJbnB1dFN0cmVhbSA9IFNvdXJjZS5p bnB1dFN0cmVhbQ0KDQorICAgICAgICBzdGFydCwgc3RvcCAgPSBjdHguc3RhcnQuc3RhcnQsIGN0 eC5zdG9wLnN0b3ANCg0KKyAgICAgICAgVGV4dCA9IElucHV0U3RyZWFtLmdldFRleHQoc3RhcnQs IHN0b3ApDQoNCisgICAgICAgIHJldHVybiBUZXh0LnJlcGxhY2UoJ1xuJywgJycpDQoNCisNCg0K KyAgICBkZWYgX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShzZWxmLCBEZWZhdWx0SWQsIExp bmUsIFRva2VuVmFsdWUpOg0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oc2VsZi5f X1VzZWREZWZhdWx0QXJyYXkpKToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19Vc2VkRGVmYXVs dEFycmF5W2ldID09IERlZmF1bHRJZDoNCg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9ySGFu ZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfREVGQVVM VF9WQUxVRV9SRURFRklORUQsIExpbmUsIFRva2VuVmFsdWUpDQoNCisNCg0KKyAgICAgICAgaWYg bGVuKHNlbGYuX19Vc2VkRGVmYXVsdEFycmF5KSA+PSBFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUg LSAxOg0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVFcnJvcihWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsIExpbmUsIFRva2VuVmFsdWUpDQoNCisNCg0K KyAgICAgICAgc2VsZi5fX1VzZWREZWZhdWx0QXJyYXkuYXBwZW5kKERlZmF1bHRJZCkNCg0KKw0K DQorICAgIGRlZiBfX0Vycm9ySGFuZGxlcihzZWxmLCBSZXR1cm5Db2RlLCBMaW5lTnVtLCBUb2tl blZhbHVlPU5vbmUpOg0KDQorICAgICAgICBzZWxmLl9fUGFyc2VyU3RhdHVzICs9IGdDVmZyRXJy b3JIYW5kbGUuSGFuZGxlRXJyb3IoUmV0dXJuQ29kZSwgTGluZU51bSwgVG9rZW5WYWx1ZSkNCg0K Kw0KDQorICAgIGRlZiBfX0NvbXBhcmVFcnJvckhhbmRsZXIoc2VsZiwgUmV0dXJuQ29kZSwgRXhw ZWN0ZWRDb2RlLCBMaW5lTnVtLCBUb2tlblZhbHVlPU5vbmUsIEVycm9yTXNnPU5vbmUpOg0KDQor ICAgICAgICBpZiBSZXR1cm5Db2RlICE9IEV4cGVjdGVkQ29kZToNCg0KKyAgICAgICAgICAgIHNl bGYuX19QYXJzZXJTdGF0dXMgKz0gMQ0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5Q cmludE1zZyhMaW5lTnVtLCAnRXJyb3InLCBFcnJvck1zZywgVG9rZW5WYWx1ZSkNCg0KKw0KDQor ICAgIGRlZiBfX0luc2VydENoaWxkKHNlbGYsIFBhcmVudE5vZGU6IFZmclRyZWVOb2RlLCBDaGls ZEN0eCk6DQoNCisgICAgICAgIGlmIENoaWxkQ3R4ICE9IE5vbmUgYW5kIENoaWxkQ3R4Lk5vZGUg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIFBhcmVudE5vZGUuaW5zZXJ0Q2hpbGQoQ2hpbGRDdHgu Tm9kZSkNCg0KKw0KDQorICAgIGRlZiBHZXRSb290KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4g c2VsZi5fX1Jvb3QNCg0KKw0KDQorICAgIGRlZiBHZXRRdWVzdGlvbkRCKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX0NWZnJRdWVzdGlvbkRCDQoNCisNCg0KKyAgICBkZWYgRHVtcEpz b24oc2VsZiwgRmlsZU5hbWUpOg0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICB3aXRo IG9wZW4oRmlsZU5hbWUsICd3JykgYXMgZjoNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCd7 XG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXCJEYXRhU3RydWN0XCIgOiB7XG4n KQ0KDQorICAgICAgICAgICAgICAgIHBOb2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFU eXBlTGlzdCgpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIFwie31cIiA6IFtcbicuZm9ybWF0KHN0cihw Tm9kZS5UeXBlTmFtZSkpKQ0KDQorICAgICAgICAgICAgICAgICAgICBGTm9kZSA9IHBOb2RlLk1l bWJlcnMNCg0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgRk5vZGUgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHtcbicpDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiTmFtZVwiOiBcInt9XCIsXG4nLmZvcm1h dChzdHIoRk5vZGUuRmllbGROYW1lKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBG Tm9kZS5BcnJheU51bSA+IDA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICBcIlR5cGVcIjogXCJ7fVt7fV1cIixcbicuZm9ybWF0KHN0cihGTm9kZS5GaWVs ZFR5cGUuVHlwZU5hbWUpLHN0cihGTm9kZS5BcnJheU51bSkpKQ0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgIFwiVHlwZVwiOiBcInt9XCIsXG4nLmZvcm1hdChzdHIoRk5vZGUuRmllbGRUeXBlLlR5 cGVOYW1lKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwi T2Zmc2V0XCI6IHt9XG4nLmZvcm1hdChzdHIoRk5vZGUuT2Zmc2V0KSkpDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBpZiBGTm9kZS5OZXh0ID09IE5vbmU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg fSwgXG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQoN CisgICAgICAgICAgICAgICAgICAgIGlmIHBOb2RlLk5leHQgPT0gTm9uZToNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBdXG4nKQ0KDQorICAgICAgICAgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIF0sXG4nKQ0K DQorICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgIH0sXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXCJE YXRhU3RydWN0QXR0cmlidXRlXCI6IHtcbicpDQoNCisgICAgICAgICAgICAgICAgcE5vZGUgPSBn Q1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVMaXN0KCkNCg0KKyAgICAgICAgICAgICAgICB3 aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg XCJ7fVwiJy5mb3JtYXQoc3RyKHBOb2RlLlR5cGVOYW1lKSkgKyAnOiB7XG4nKQ0KDQorICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiQWxpZ25tZW50XCI6IHt9LFxuJy5mb3Jt YXQoc3RyKHBOb2RlLkFsaWduKSkpDQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgXCJUb3RhbFNpemVcIjoge31cbicuZm9ybWF0KHN0cihwTm9kZS5Ub3RhbFNpemUpKSkN Cg0KKyAgICAgICAgICAgICAgICAgICAgaWYgcE5vZGUuTmV4dCA9PSBOb25lOg0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCg0KKyAgICAgICAgICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIH0s XG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgIH0sXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgXCJWYXJEZWZpbmVcIiA6IHtcbicpDQoNCisgICAgICAgICAgICAgICAgcFZzTm9kZSA9IGdD VmZyRGF0YVN0b3JhZ2UuR2V0QnVmZmVyVmFyU3RvcmVMaXN0KCkNCg0KKyAgICAgICAgICAgICAg ICB3aGlsZSBwVnNOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICBcInt9XCInLmZvcm1hdChzdHIocFZzTm9kZS5WYXJTdG9yZU5hbWUpKSArICc6IHtcbicp DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJUeXBlXCI6IFwie31c IixcbicuZm9ybWF0KHN0cihwVnNOb2RlLkRhdGFUeXBlLlR5cGVOYW1lKSkpDQoNCisgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJBdHRyaWJ1dGVzXCI6IHt9LFxuJy5mb3Jt YXQoc3RyKHBWc05vZGUuQXR0cmlidXRlcykpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgIFwiVmFyU3RvcmVJZFwiOiB7fSxcbicuZm9ybWF0KHN0cihwVnNOb2RlLlZh clN0b3JlSWQpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZl bmRvckd1aWRcIjogJyArICdcInt9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShwVnNOb2RlLkd1 aWQuRGF0YTEpLCcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGEyKSwgJzB4JXgnJShwVnNOb2RlLkd1 aWQuRGF0YTMpKSBcDQoNCisgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwg e30sIHt9LCB7fSwge30sIHt9LCB7fScuZm9ybWF0KCcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0 WzBdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMV0pLCAnMHgleCclKHBWc05vZGUuR3Vp ZC5EYXRhNFsyXSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzNdKSwgXA0KDQorICAgICAg ICAgICAgICAgICAgICAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFs0XSksICcweCV4JyUocFZz Tm9kZS5HdWlkLkRhdGE0WzVdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNl0pLCAnMHgl eCclKHBWc05vZGUuR3VpZC5EYXRhNFs3XSkpICsgJyB9fVwiXG4nKQ0KDQorICAgICAgICAgICAg ICAgICAgICBpZiBwVnNOb2RlLk5leHQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgIH1cbicpDQoNCisgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICB9LFxuJykNCg0KKw0KDQor ICAgICAgICAgICAgICAgICAgICBwVnNOb2RlID0gcFZzTm9kZS5OZXh0DQoNCisgICAgICAgICAg ICAgICAgZi53cml0ZSgnICB9LFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFwi RGF0YVwiIDogW1xuJykNCg0KKyAgICAgICAgICAgICAgICBwVnNOb2RlID0gZ0NWZnJCdWZmZXJD b25maWcuR2V0VmFySXRlbUxpc3QoKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIHBWc05vZGUg IT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgcFZzTm9kZS5JZCA9PSBOb25lOg0K DQorICAgICAgICAgICAgICAgICAgICAgICAgcFZzTm9kZSA9IHBWc05vZGUuTmV4dA0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWUNCg0KKyAgICAgICAgICAgICAgICAgICAgcElu Zm9Ob2RlID0gcFZzTm9kZS5JbmZvU3RyTGlzdA0KDQorICAgICAgICAgICAgICAgICAgICB3aGls ZSBwSW5mb05vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIHtcbicpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg IFwiVmVuZG9yR3VpZFwiOiAnICsgJ1wie30sIHt9LCB7fSwnLmZvcm1hdCgnMHgleCclKHBWc05v ZGUuR3VpZC5EYXRhMSksJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTIpLCAnMHgleCclKHBWc05v ZGUuR3VpZC5EYXRhMykpIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAg J3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fScuZm9ybWF0KCcweCV4JyUocFZzTm9kZS5H dWlkLkRhdGE0WzBdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMV0pLCAnMHgleCclKHBW c05vZGUuR3VpZC5EYXRhNFsyXSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzNdKSwgXA0K DQorICAgICAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNF0p LCAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFs1XSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRh dGE0WzZdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbN10pKSArICcgfX1cIixcbicpDQoN CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFyTmFtZVwiOiBc Int9XCIsXG4nLmZvcm1hdChzdHIocFZzTm9kZS5OYW1lKSkpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiRGVmYXVsdFN0b3JlXCI6IFwie31cIixcbicuZm9y bWF0KHN0cihwVnNOb2RlLklkKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgIFwiU2l6ZVwiOiBcInt9XCIsXG4nLmZvcm1hdChzdHIocEluZm9Ob2RlLldpZHRo KSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiT2Zmc2V0 XCI6IHt9LFxuJy5mb3JtYXQoc3RyKHBJbmZvTm9kZS5PZmZzZXQpKSkNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICNmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fVwiXG4nLmZvcm1h dChzdHIocEluZm9Ob2RlLlZhbHVlKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBw SW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfREFURToNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fS97fS97fVwiXG4nLmZv cm1hdChwSW5mb05vZGUuVmFsdWUuZGF0ZS5ZZWFyLCBwSW5mb05vZGUuVmFsdWUuZGF0ZS5Nb250 aCwgcEluZm9Ob2RlLlZhbHVlLmRhdGUuRGF5KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9USU1FOg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOiBcInt9Ont9Ont9XCJc bicuZm9ybWF0KHBJbmZvTm9kZS5WYWx1ZS50aW1lLkhvdXIsIHBJbmZvTm9kZS5WYWx1ZS50aW1l Lk1pbnV0ZSwgcEluZm9Ob2RlLlZhbHVlLnRpbWUuU2Vjb25kKSkNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9SRUY6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie307 e307Jy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnJlZi5RdWVzdGlvbklkLCBwSW5mb05vZGUuVmFs dWUucmVmLkZvcm1JZCkgKyAgJ3snICsgJ3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShwSW5m b05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGExKSwnMHgleCclKHBJbmZvTm9kZS5WYWx1 ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTIpLCAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9y bVNldEd1aWQuRGF0YTMpKSBcDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIHsg JyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShwSW5m b05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzBdKSwgJzB4JXgnJShwSW5mb05vZGUu VmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzFdKSwgJzB4JXgnJShwSW5mb05vZGUuVmFsdWUu cmVmLkZvcm1TZXRHdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZv cm1TZXRHdWlkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcw eCV4JyUocEluZm9Ob2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs0XSksICcweCV4JyUo cEluZm9Ob2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs1XSksICcweCV4JyUocEluZm9O b2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs2XSksICcweCV4JyUocEluZm9Ob2RlLlZh bHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs3XSkpICsgJyB9fScgKyAnO3t9XG4nLmZvcm1hdChw SW5mb05vZGUuVmFsdWUucmVmLkRldmljZVBhdGgpKQ0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgaWYgcEluZm9Ob2RlLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fVwiXG4n LmZvcm1hdChwSW5mb05vZGUuVmFsdWUuc3RyaW5nKSkNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOiBcInt9 XCJcbicuZm9ybWF0KHBJbmZvTm9kZS5WYWx1ZS51OCkpDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwi e31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnUxNikpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6 IFwie31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnUzMikpDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6 DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVl XCI6IFwie31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnU2NCkpDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVc IjogXCJ7fVwiXG4nLmZvcm1hdChwSW5mb05vZGUuVmFsdWUuYikpDQoNCisNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIH0sXG4nKQ0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgcEluZm9Ob2RlID0gcEluZm9Ob2RlLk5leHQNCg0KKyAgICAgICAgICAgICAgICAg ICAgcFZzTm9kZSA9IHBWc05vZGUuTmV4dA0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgIHtcbicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZlbmRvckd1 aWRcIjogXCJOQVwiLFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwi VmFyTmFtZVwiOiBcIk5BXCIsXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgXCJEZWZhdWx0U3RvcmVcIjogXCJOQVwiLFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgIFwiU2l6ZVwiOiAwLFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgIFwiT2Zmc2V0XCI6IDAsXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgXCJWYWx1ZVwiOiBcIjB4MDBcIlxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICB9XG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXVxuJykNCg0K KyAgICAgICAgICAgICAgICBmLndyaXRlKCd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICBmLmNs b3NlKCkNCg0KKyAgICAgICAgZXhjZXB0Og0KDQorICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9y KCJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCAiRmlsZSBvcGVuIGZhaWxlZCBmb3Ig JXMiICUgRmlsZU5hbWUsIE5vbmUpDQoNCisNCg0KKyAgICBkZWYgRHVtcFlhbWwoc2VsZiwgUm9v dCwgRmlsZU5hbWUpOg0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICB3aXRoIG9wZW4o RmlsZU5hbWUsICd3JykgYXMgZjoNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcjIyBETyBO T1QgUkVNT1ZFIC0tIFZGUiBNb2RlXG4nKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuRHVtcFlh bWxEZnMoUm9vdCwgZikNCg0KKyAgICAgICAgICAgIGYuY2xvc2UoKQ0KDQorICAgICAgICBleGNl cHQ6DQoNCisgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoIlZmckNvbXBpbGVyIiwgRklMRV9P UEVOX0ZBSUxVUkUsICJGaWxlIG9wZW4gZmFpbGVkIGZvciAlcyIgJSBGaWxlTmFtZSwgTm9uZSkN Cg0KKw0KDQorICAgIGRlZiBEdW1wWWFtbERmcyhzZWxmLCBSb290LCBmKToNCg0KKw0KDQorICAg ICAgICBpZiBSb290Lk9wQ29kZSAhPSBOb25lOg0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290 Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fU0VUX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8g PSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnRm9ybXNl dDpcbicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICBHdWlkOiAgeycgKyAne30sIHt9 LCB7fSwnLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLkd1aWQu RGF0YTIpLCAnMHgleCclKEluZm8uR3VpZC5EYXRhMykpIFwNCg0KKyAgICAgICAgICAgICAgICAg ICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4 JXgnJShJbmZvLkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksICcw eCV4JyUoSW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBc DQoNCisgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwgJzB4 JXgnJShJbmZvLkd1aWQuRGF0YTRbNV0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcw eCV4JyUoSW5mby5HdWlkLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQorICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgVGl0bGU6ICB7fSAgIyBUaXRsZSBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8u Rm9ybVNldFRpdGxlKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIEhlbHA6ICB7fSAg IyBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5IZWxwKSkNCg0KKyAgICAgICAgICAgICAg ICBmb3IgR3VpZCBpbiBSb290LkRhdGEuR2V0Q2xhc3NHdWlkKCk6DQoNCisgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgQ2xhc3NHdWlkOiAgeycgKyAne30sIHt9LCB7fSwnLmZvcm1hdCgn MHgleCclKEd1aWQuRGF0YTEpLCcweCV4JyUoR3VpZC5EYXRhMiksICcweCV4JyUoR3VpZC5EYXRh MykpIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30s IHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShHdWlkLkRhdGE0WzBdKSwgJzB4JXgnJShH dWlkLkRhdGE0WzFdKSwgJzB4JXgnJShHdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShHdWlkLkRhdGE0 WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgleCclKEd1aWQuRGF0YTRbNF0pLCAn MHgleCclKEd1aWQuRGF0YTRbNV0pLCAnMHgleCclKEd1aWQuRGF0YTRbNl0pLCAnMHgleCclKEd1 aWQuRGF0YTRbN10pKSArICcgfX1cbicpDQoNCisNCg0KKyAgICAgICAgICAgIGlmIFJvb3QuT3BD b2RlID09IEVGSV9JRlJfVkFSU1RPUkVfT1A6DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJv b3QuRGF0YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIC0gdmFyc3Rv cmU6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHZhcmlkOiAge31cbicu Zm9ybWF0KEluZm8uVmFyU3RvcmVJZCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgbmFtZTogIHt9XG4nLmZvcm1hdChJbmZvLk5hbWUpKQ0KDQorICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgIHNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5TaXplKSkNCg0KKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICBndWlkOiAgeycgKyAne30sIHt9LCB7fSwnLmZvcm1hdCgn MHgleCclKEluZm8uR3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLkd1aWQuRGF0YTIpLCAnMHgleCcl KEluZm8uR3VpZC5EYXRhMykpIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAn e30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQu RGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksICcweCV4JyUoSW5mby5HdWlk LkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQoNCisgICAgICAgICAg ICAgICAgICAgICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkd1aWQu RGF0YTRbNV0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlk LkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29k ZSA9PSBFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0g Um9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgLSBlZml2 YXJzdG9yZTpcbicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgdmFyaWQ6ICB7 fVxuJy5mb3JtYXQoSW5mby5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICBuYW1lOiAge31cbicuZm9ybWF0KEluZm8uTmFtZSkpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgc2l6ZTogIHt9XG4nLmZvcm1hdChJbmZvLlNpemUpKQ0KDQorICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIGd1aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9y bWF0KCcweCV4JyUoSW5mby5HdWlkLkRhdGExKSwnMHgleCclKEluZm8uR3VpZC5EYXRhMiksICcw eCV4JyUoSW5mby5HdWlkLkRhdGEzKSkgXA0KDQorICAgICAgICAgICAgICAgICAgICArICcgeyAn ICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEluZm8u R3VpZC5EYXRhNFswXSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzFdKSwgJzB4JXgnJShJbmZv Lkd1aWQuRGF0YTRbMl0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFszXSksIFwNCg0KKyAgICAg ICAgICAgICAgICAgICAgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8u R3VpZC5EYXRhNFs1XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzZdKSwgJzB4JXgnJShJbmZv Lkd1aWQuRGF0YTRbN10pKSArICcgfX1cbicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgYXR0cmlidXRlOiAge31cbicuZm9ybWF0KEluZm8uQXR0cmlidXRlcykpDQoNCisNCg0K KyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxV RV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgLSBuYW1ldmFsdWV2YXJzdG9yZTpcbicpDQoNCisg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgdmFyaWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5W YXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAgICAjIGYud3JpdGUoJyAgICAgIG5hbWU6ICB7 fVxuJy5mb3JtYXQoSW5mby5OYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICBndWlkOiAgeycgKyAne30sIHt9LCB7fSwnLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRh MSksJzB4JXgnJShJbmZvLkd1aWQuRGF0YTIpLCAnMHgleCclKEluZm8uR3VpZC5EYXRhMykpIFwN Cg0KKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7 fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKElu Zm8uR3VpZC5EYXRhNFsxXSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbM10pLCBcDQoNCisgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5m by5HdWlkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNV0pLCAnMHgleCclKElu Zm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzddKSkgKyAnIH19XG4n KQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fT1A6 DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCg0KKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgIC0gZm9ybTpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYg Um9vdC5Db25kaXRpb24gIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICBGb3JtSWQ6ICB7fSAgIyBGb3JtSWQgU1RSSU5HX0lE XG4nLmZvcm1hdChJbmZvLkZvcm1JZCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgRm9ybVRpdGxlOiAge30gICMgRm9ybVRpdGxlIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5G b3JtVGl0bGUpKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZS X0ZPUk1fTUFQX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8sIE1ldGhvZE1hcExpc3QgPSBS b290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAtIGZvcm1t YXA6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoN CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZv cm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg Rm9ybUlkOiAge30gICMgRm9ybUlkIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0K DQorICAgICAgICAgICAgICAgIGZvciBNZXRob2RNYXAgaW4gIE1ldGhvZE1hcExpc3Q6DQoNCisg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIG1hcHRpdGxlOiAge31cbicuZm9ybWF0 KE1ldGhvZE1hcC5NZXRob2RUaXRsZSkpDQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIG1hcGd1aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9ybWF0KCcweCV4JyUoTWV0aG9k TWFwLk1ldGhvZElkZW50aWZpZXIuRGF0YTEpLCcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50 aWZpZXIuRGF0YTIpLCAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGEzKSkg XA0KDQorICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30s IHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRh dGE0WzBdKSwgJzB4JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFsxXSksICcw eCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0YTRbMl0pLCAnMHgleCclKE1ldGhv ZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAg ICAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0WzRdKSwgJzB4JXgnJShN ZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFs1XSksICcweCV4JyUoTWV0aG9kTWFwLk1l dGhvZElkZW50aWZpZXIuRGF0YTRbNl0pLCAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlm aWVyLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9w Q29kZSA9PSBFRklfSUZSX0lNQUdFX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290 LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBpbWFn ZTpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToNCg0K KyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4n LmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICAgIElkOiAge30gIyBJbWFnZUlkXG4nLmZvcm1hdChJbmZvLklkKSkNCg0KKw0KDQorICAg ICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SVUxFX09QOg0KDQorICAgICAgICAg ICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgLSBydWxlOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRp dGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg Y29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgUnVsZUlkOiAge30gIyBSdWxlSWRcbicuZm9ybWF0KElu Zm8uUnVsZUlkKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lG Ul9TVUJUSVRMRV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldElu Zm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gc3VidGl0bGU6XG4nKQ0K DQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQo Um9vdC5Db25kaXRpb24pKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBw cm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5T dGF0ZW1lbnQuUHJvbXB0KSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0g RUZJX0lGUl9URVhUX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0 SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSB0ZXh0OlxuJykNCg0K KyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJv b3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJv bXB0OiAge30gICMgU3RhdGVtZW50IFByb21wdCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uU3Rh dGVtZW50LlByb21wdCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGhl bHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uU3RhdGVt ZW50LkhlbHApKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB0ZXh0OiAg e30gICMgU3RhdGVtZW50IEhlbHAgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlRleHRUd28pKQ0K DQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0FDVElPTl9PUDoN Cg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gYWN0aW9uOlxuJykNCg0KKyAgICAgICAgICAgICAg ICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge30gICMgU3Rh dGVtZW50IFByb21wdCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlBy b21wdCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fSAg IyBTdGF0ZW1lbnQgSGVscCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVy LkhlbHApKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlk OiAge30gICMgUXVlc3Rpb24gUXVlc3Rpb25JZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVz dGlvbklkKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVp ZDogIHt9ICAjIFF1ZXN0aW9uIFZhclN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFy U3RvcmVJZCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZsYWdzOiAg e30gICMgUXVlc3Rpb24gRmxhZ3NcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uRmxhZ3MpKQ0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmNvbmZpZzogIHt9ICAj IFF1ZXN0aW9uQ29uZmlnXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uQ29uZmlnKSkNCg0KKw0KDQor ICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PTkVfT0ZfT1A6DQoNCisgICAg ICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAtIG9uZW9mOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290 LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1l bnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0 KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0 YXRlbWVudCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVs cCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7 fSAgIyBRdWVzdGlvbiBRdWVzdGlvbklkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9u SWQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAg e30gICMgUXVlc3Rpb24gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9y ZUlkKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9 ICAjIFF1ZXN0aW9uIFZhck5hbWUgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZh clN0b3JlSW5mby5WYXJOYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgdmFyb2Zmc2V0OiAge30gICMgUXVlc3Rpb24gVmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1 ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uIEZsYWdzXG4nLmZvcm1hdChJbmZv LlF1ZXN0aW9uLkZsYWdzKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0g RUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290 LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0g b3B0aW9uOiAge31cbicuZm9ybWF0KEluZm8uT3B0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBp ZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikp DQoNCisNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiBm bGFnOiAge31cbicuZm9ybWF0KEluZm8uRmxhZ3MpKQ0KDQorICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICAgICAgb3B0aW9uIHR5cGU6ICB7fVxuJy5mb3JtYXQoSW5mby5UeXBlKSkN Cg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyT25lT2ZP cHRpb246DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZ UEVfREFURToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAg ICAgb3B0aW9uIHZhbHVlOiAge30ve30ve31cbicuZm9ybWF0KEluZm8uVmFsdWUuZGF0ZS5ZZWFy LCBJbmZvLlZhbHVlLmRhdGUuTW9udGgsIEluZm8uVmFsdWUuZGF0ZS5EYXkpKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1RJTUU6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZTog IHt9Ont9Ont9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnRpbWUuSG91ciwgSW5mby5WYWx1ZS50aW1l Lk1pbnV0ZSwgSW5mby5WYWx1ZS50aW1lLlNlY29uZCkpDQoNCisgICAgICAgICAgICAgICAgICAg IGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfUkVGOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBvcHRpb24gdmFsdWU6ICB7fTt7fTsnLmZvcm1h dChJbmZvLlZhbHVlLnJlZi5RdWVzdGlvbklkLCBJbmZvLlZhbHVlLnJlZi5Gb3JtSWQpICsgICd7 JyArICd7fSwge30sIHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1 aWQuRGF0YTEpLCcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTIpLCAnMHgl eCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGEzKSkgXA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5m b3JtYXQoJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFswXSksICcweCV4 JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMV0pLCAnMHgleCclKEluZm8uVmFs dWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3Jt U2V0R3VpZC5EYXRhNFszXSksIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICcweCV4JyUo SW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uVmFsdWUu cmVmLkZvcm1TZXRHdWlkLkRhdGE0WzVdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0 R3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRb N10pKSArICcgfX0nICsgJzt7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5yZWYuRGV2aWNlUGF0aCkp DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfU1RS SU5HOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBv cHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5zdHJpbmcpKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2 YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnU4KSkNCg0KKyAgICAgICAgICAgICAgICAg ICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31c bicuZm9ybWF0KEluZm8uVmFsdWUudTE2KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5m by5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0 KEluZm8uVmFsdWUudTMyKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFs dWUudTY0KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJf VFlQRV9CT09MRUFOOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgICAgICBvcHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5iKSkNCg0KKw0K DQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyT25lT2ZPcHRpb24y Og0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAg eycpDQoNCisgICAgICAgICAgICAgICAgICAgIFZhbHVlVHlwZSA9IFJvb3QuRGF0YS5HZXRWYWx1 ZVR5cGUoKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9U WVBFX1NUUklORzoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAs IGxlbihJbmZvLlZhbHVlKS0xKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnN0cmluZykpDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUp LTFdLnN0cmluZykgKyAnfVxuJykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1 ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS51OCkp DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFs dWVbbGVuKEluZm8uVmFsdWUpLTFdLnU4KSArICd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICAg ICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6 DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5m by5WYWx1ZVtpXS51MTYpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30n LmZvcm1hdChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS51MTYpICsgJ31cbicpDQoNCisN Cg0KKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1f U0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxl bihJbmZvLlZhbHVlKS0xKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnUzMikpDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnUz MikgKyAnfVxuJykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZm9y IGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTY0KSkNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4o SW5mby5WYWx1ZSktMV0udTY0KSArICd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAg IGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVlKS0xKToNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ld LmIpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZv LlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS5iKSArICd9XG4nKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfREVGQVVMVF9PUDoNCg0KKyAgICAgICAg ICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICAtIGRlZmF1bHQ6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJv b3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0K KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHR5cGU6ICB7fVxuJy5mb3Jt YXQoSW5mby5UeXBlKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAg IGRlZmF1bHRJZDogIHt9XG4nLmZvcm1hdChJbmZvLkRlZmF1bHRJZCkpDQoNCisgICAgICAgICAg ICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJEZWZhdWx0Og0KDQorICAgICAgICAgICAg ICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge30ve30ve31cbicu Zm9ybWF0KEluZm8uVmFsdWUuZGF0ZS5ZZWFyLCBJbmZvLlZhbHVlLmRhdGUuTW9udGgsIEluZm8u VmFsdWUuZGF0ZS5EYXkpKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0g RUZJX0lGUl9UWVBFX1RJTUU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgICAgIHZhbHVlOiAge306e306e31cbicuZm9ybWF0KEluZm8uVmFsdWUudGltZS5I b3VyLCBJbmZvLlZhbHVlLnRpbWUuTWludXRlLCBJbmZvLlZhbHVlLnRpbWUuU2Vjb25kKSkNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9SRUY6DQoN CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2 YWx1ZTogIHt9O3t9OycuZm9ybWF0KEluZm8uVmFsdWUucmVmLlF1ZXN0aW9uSWQsIEluZm8uVmFs dWUucmVmLkZvcm1JZCkgKyAgJ3snICsgJ3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShJbmZv LlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3Jt U2V0R3VpZC5EYXRhMiksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTMp KSBcDQoNCisgICAgICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7 fSwge30sIHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRH dWlkLkRhdGE0WzBdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFsx XSksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMl0pLCAnMHgleCcl KEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs0XSks ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNV0pLCAnMHgleCclKElu Zm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzZdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJl Zi5Gb3JtU2V0R3VpZC5EYXRhNFs3XSkpICsgJyB9fScgKyAnO3t9XG4nLmZvcm1hdChJbmZvLlZh bHVlLnJlZi5EZXZpY2VQYXRoKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBl ID09IEVGSV9JRlJfVFlQRV9TVFJJTkc6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUuc3RyaW5n KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9O VU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg ICAgICB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnU4KSkNCg0KKyAgICAgICAgICAg ICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7fVxu Jy5mb3JtYXQoSW5mby5WYWx1ZS51MTYpKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbmZv LlR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZh bHVlLnUzMikpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZS X1RZUEVfTlVNX1NJWkVfNjQ6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTY0KSkNCg0KKyAg ICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0K DQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTog IHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLmIpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYg dHlwZShSb290LkRhdGEpID09IENJZnJEZWZhdWx0MzoNCg0KKyAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHsnKQ0KDQorICAgICAgICAgICAgICAgICAg ICBWYWx1ZVR5cGUgPSBSb290LkRhdGEuR2V0VmFsdWVUeXBlKCkNCg0KKyAgICAgICAgICAgICAg ICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9TVFJJTkc6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1 ZVtpXS5zdHJpbmcpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZv cm1hdChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS5zdHJpbmcpICsgJ31cbicpDQoNCisN Cg0KKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1f U0laRV84Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVu KEluZm8uVmFsdWUpLTEpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo J3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTgpKQ0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS51OCkg KyAnfVxuJykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkg aW4gcmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTE2KSkNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5m by5WYWx1ZSktMV0udTE2KSArICd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAgIGlm IFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtp XS51MzIpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJ bmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS51MzIpICsgJ31cbicpDQoNCisNCg0KKyAgICAg ICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZh bHVlKS0xKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZv cm1hdChJbmZvLlZhbHVlW2ldLnU2NCkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnU2NCkgKyAnfVxu JykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9U WVBFX0JPT0xFQU46DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgw LCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS5iKSkNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0u YikgKyAnfVxuJykNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lG Ul9PUkRFUkVEX0xJU1RfT1A6DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5H ZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIG9yZGVyZWRsaXN0 OlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQor ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicu Zm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5m b3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwIFNUUklOR19JRFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbiBRdWVzdGlvbklk XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24gVmFyU3RvcmVJ ZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgbWF4Q29udGFpbmVyczogIHt9XG4nLmZvcm1hdChJbmZvLk1h eENvbnRhaW5lcnMpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFn czogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkZsYWdzKSkNCg0KKw0KDQorICAgICAgICAg ICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9OVU1FUklDX09QOg0KDQorICAgICAgICAgICAg ICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgLSBudW1lcmljOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRp dGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg Y29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge30gICMgU3RhdGVtZW50IFByb21wdCBT VFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlByb21wdCkpDQoNCisgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVs cCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KDQorICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge30gICMgUXVlc3Rp b24gUXVlc3Rpb25JZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCg0KKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9ICAjIFF1ZXN0 aW9uIFZhclN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJZCkpDQoNCisg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6ICB7fSAgIyBRdWVzdGlv biBWYXJOYW1lIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUluZm8u VmFyTmFtZSkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm9mZnNl dDogIHt9ICAjIFF1ZXN0aW9uIFZhck9mZnNldFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJT dG9yZUluZm8uVmFyT2Zmc2V0KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgZmxhZ3M6ICB7fSAgIyBRdWVzdGlvbiBGbGFnc1xuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5G bGFncykpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuR2V0VmFyVHlwZSgp ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQuTWF4 VmFsdWUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWludmFs dWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnU2NC5NaW5WYWx1ZSkpDQoNCisgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0KEluZm8uRGF0 YS51NjQuU3RlcCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuR2V0VmFy VHlwZSgpID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51 MzIuTWF4VmFsdWUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg bWludmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnUzMi5NaW5WYWx1ZSkpDQoNCisgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0KElu Zm8uRGF0YS51MzIuU3RlcCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEu R2V0VmFyVHlwZSgpID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8u RGF0YS51MTYuTWF4VmFsdWUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgbWludmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnUxNi5NaW5WYWx1ZSkpDQoN CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9y bWF0KEluZm8uRGF0YS51MTYuU3RlcCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290 LkRhdGEuR2V0VmFyVHlwZSgpID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWF4dmFsdWU6ICB7fVxuJy5mb3JtYXQo SW5mby5EYXRhLnU4Lk1heFZhbHVlKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIG1pbnZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51OC5NaW5WYWx1ZSkp DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicu Zm9ybWF0KEluZm8uRGF0YS51OC5TdGVwKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5P cENvZGUgPT0gRUZJX0lGUl9DSEVDS0JPWF9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0g Um9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0g Y2hlY2tib3g6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5v bmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25kaXRpb246 ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KDQorICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwIFNUUklOR19J RFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbiBRdWVzdGlv bklkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24gVmFyU3Rv cmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAjIFF1ZXN0aW9uIFZhck5hbWUg U1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJOYW1lKSkN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0OiAge30gICMg UXVlc3Rpb24gVmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5W YXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczog IHt9ICAjIEZsYWdzXG4nLmZvcm1hdChJbmZvLkZsYWdzKSkNCg0KKw0KDQorICAgICAgICAgICAg aWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9USU1FX09QOg0KDQorICAgICAgICAgICAgICAgIElu Zm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgLSB0aW1lOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBO b25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9u OiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQgU1RSSU5H X0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24gVmFyU3Rv cmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLlZhclN0b3JlSW5mby5WYXJOYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgdmFyb2Zmc2V0OiAge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJ bmZvLlZhck9mZnNldCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHBy b21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1 ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICBoZWxwOiAge30gICMgU3RhdGVtZW50IEhlbHAgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZv LlF1ZXN0aW9uLkhlYWRlci5IZWxwKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgZmxhZ3M6ICB7fVxuJy5mb3JtYXQoSW5mby5GbGFncykpDQoNCisNCg0KKyAgICAgICAg ICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfREFURV9PUDoNCg0KKyAgICAgICAgICAgICAg ICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIC0gZGF0ZTpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24g IT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRp dGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNU UklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCg0KKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9ICAjIFF1ZXN0aW9uIFZh clN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJZCkpDQoNCisgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6ICB7fVxuJy5mb3JtYXQoSW5mby5R dWVzdGlvbi5WYXJTdG9yZUluZm8uVmFyTmFtZSkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHZhcm9mZnNldDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0 b3JlSW5mby5WYXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5m by5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIGZsYWdzOiAge31cbicuZm9ybWF0KEluZm8uRmxhZ3MpKQ0KDQorDQoNCisNCg0K KyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfU1RSSU5HX09QOg0KDQorICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgLSBzdHJpbmc6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJv b3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KDQorICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQg UHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRl bWVudCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkp DQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAg IyBRdWVzdGlvbiBRdWVzdGlvbklkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQp KQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30g ICMgUXVlc3Rpb24gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlk KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAj IFF1ZXN0aW9uIFZhck5hbWUgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0 b3JlSW5mby5WYXJOYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg dmFyb2Zmc2V0OiAge30gICMgUXVlc3Rpb24gVmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLlZhclN0b3JlSW5mby5WYXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uIEZsYWdzXG4nLmZvcm1hdChJbmZvLlF1 ZXN0aW9uLkZsYWdzKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgc3Ry aW5nZmxhZ3M6ICB7fVxuJy5mb3JtYXQoSW5mby5GbGFncykpDQoNCisgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIHN0cmluZ21pbnNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5NaW5T aXplKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgc3RyaW5nbWF4c2l6 ZTogIHt9XG4nLmZvcm1hdChJbmZvLk1heFNpemUpKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBS b290Lk9wQ29kZSA9PSBFRklfSUZSX1BBU1NXT1JEX09QOg0KDQorICAgICAgICAgICAgICAgIElu Zm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgLSBwYXNzd29yZDpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24g IT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRp dGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQgU1RSSU5H X0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KDQorICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAge30gICMgU3RhdGVtZW50IEhlbHAgU1RS SU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxwKSkNCg0KKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9uIFF1 ZXN0aW9uSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQoNCisgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbiBW YXJTdG9yZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KDQorICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJuYW1lOiAge30gICMgUXVlc3Rpb24gVmFy TmFtZSBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5h bWUpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJvZmZzZXQ6ICB7 fSAgIyBRdWVzdGlvbiBWYXJPZmZzZXRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJ bmZvLlZhck9mZnNldCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZs YWdzOiAge30gICMgUXVlc3Rpb24gRmxhZ3NcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uRmxhZ3Mp KQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBtaW5zaXplOiAge31cbicu Zm9ybWF0KEluZm8uTWluU2l6ZSkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIG1heHNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5NYXhTaXplKSkNCg0KKw0KDQorDQoNCisg ICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUDoNCg0K KyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgIC0gcmVzZXRidXR0b246XG4nKQ0KDQorICAgICAgICAgICAg ICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24p KQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBT dGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1lbnQuUHJvbXB0 KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0 YXRlbWVudCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1lbnQuSGVscCkpDQoN CisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGRlZmF1bHRpZDogIHt9XG4nLmZv cm1hdChJbmZvLkRlZmF1bHRJZCkpDQoNCisNCg0KKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2Rl ID09IEVGSV9JRlJfUkVGX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEu R2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBnb3RvOlxuJykN Cg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0 KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5E YXRhKSA9PSBDSWZyUmVmNDoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGZvcm1pZDogIHt9XG4nLmZvcm1hdChJbmZvLkZvcm1JZCkpDQoNCisgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmb3Jtc2V0aWQ6ICB7JyArICd7fSwge30sIHt9LCcu Zm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTEpLCcweCV4JyUoSW5mby5Gb3JtU2V0 SWQuRGF0YTIpLCAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGEzKSkgXA0KDQorICAgICAgICAg ICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwge30nLmZv cm1hdCgnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0WzBdKSwgJzB4JXgnJShJbmZvLkZvcm1T ZXRJZC5EYXRhNFsxXSksICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMl0pLCAnMHgleCcl KEluZm8uRm9ybVNldElkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgl eCclKEluZm8uRm9ybVNldElkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRh NFs1XSksICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbNl0pLCAnMHgleCclKEluZm8uRm9y bVNldElkLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uSWQp KQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZGV2aWNlcGF0aDog IHt9XG4nLmZvcm1hdChJbmZvLkRldmljZVBhdGgpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAg aWYgdHlwZShSb290LkRhdGEpID09IENJZnJSZWYzOg0KDQorICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgZm9ybWlkOiAge31cbicuZm9ybWF0KEluZm8uRm9ybUlkKSkNCg0K KyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZvcm1zZXRpZDogIHsnICsg J3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhMSksJzB4JXgn JShJbmZvLkZvcm1TZXRJZC5EYXRhMiksICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTMpKSBc DQoNCisgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwg e30sIHt9LCB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMF0pLCAnMHgl eCclKEluZm8uRm9ybVNldElkLkRhdGE0WzFdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRh NFsyXSksICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbM10pLCBcDQoNCisgICAgICAgICAg ICAgICAgICAgICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8u Rm9ybVNldElkLkRhdGE0WzVdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFs2XSksICcw eCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbN10pKSArICcgfX1cbicpDQoNCisgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge31cbicuZm9ybWF0KElu Zm8uUXVlc3Rpb25JZCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0 YSkgPT0gQ0lmclJlZjI6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICBmb3JtaWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0KDQorICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1 ZXN0aW9uSWQpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09 IENJZnJSZWY6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmb3Jt aWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0KDQorICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u LlF1ZXN0aW9uSWQpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg IHByb21wdDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAge31cbicuZm9ybWF0KElu Zm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9w Q29kZSA9PSBFRklfSUZSX1JFRlJFU0hfT1A6DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJv b3QuRGF0YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg LSByZWZyZXNoOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBO b25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGNvbmRp dGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgICAgICBpbnRlcnZhbDogIHt9ICAjIFJlZnJlc2hJbnRlcnZhbFxu Jy5mb3JtYXQoSW5mby5SZWZyZXNoSW50ZXJ2YWwpKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBS b290Lk9wQ29kZSA9PSBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUDoNCg0KKyAgICAgICAgICAg ICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICAtIHZhcnN0b3JlZGV2aWNlOlxuJykNCg0KKyAgICAgICAgICAgICAgICBp ZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikp DQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBkZXZpY2VwYXRoOiAg e30gICMgRGV2aWNlUGF0aFxuJy5mb3JtYXQoSW5mby5EZXZpY2VQYXRoKSkNCg0KKw0KDQorICAg ICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SRUZSRVNIX0lEX09QOg0KDQorICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIC0gcmVmcmVzaGd1aWQ6XG4nKQ0KDQorICAgICAgICAgICAg ICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0 aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGV2ZW50Z3Jv dXBpZDogIHsnICsgJ3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVu dEdyb3VwSWQuRGF0YTEpLCcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGEyKSwg JzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTMpKSBcDQoNCisgICAgICAgICAg ICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fScuZm9y bWF0KCcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzBdKSwgJzB4JXgnJShJ bmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbMV0pLCAnMHgleCclKEluZm8uUmVmcmVzaEV2 ZW50R3JvdXBJZC5EYXRhNFsyXSksICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRh dGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgleCclKEluZm8uUmVmcmVzaEV2 ZW50R3JvdXBJZC5EYXRhNFs0XSksICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRh dGE0WzVdKSwgJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbNl0pLCAnMHgl eCclKEluZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCg0KKw0K DQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9XQVJOSU5HX0lGX09QOg0K DQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0gd2FybmluZ2lmOlxuJykNCg0KKyAgICAgICAg ICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNv bmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB3YXJu aW5nOiAge31cbicuZm9ybWF0KEluZm8uV2FybmluZykpDQoNCisgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgICAgICB0aW1lT3V0OiAge31cbicuZm9ybWF0KEluZm8uVGltZU91dCkp DQoNCisNCg0KKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfR1VJRF9PUDoN Cg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAg ICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyTGFiZWw6ICMgdHlwZShJbmZvKSA9 PSBFRklfSUZSX0dVSURfTEFCRUwNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgLSBsYWJlbDpcbicpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9u ICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg Y29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbGFiZWxudW1iZXI6ICB7fSAgIyBMYWJl bE51bWJlclxuJy5mb3JtYXQoSW5mby5OdW1iZXIpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAg aWYgdHlwZShSb290LkRhdGEpID09IENJZnJCYW5uZXI6DQoNCisgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgIC0gYmFubmVyOlxuJykNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYg Um9vdC5Db25kaXRpb24gIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0K DQorDQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB0aXRsZTogIHt9 XG4nLmZvcm1hdChJbmZvLlRpdGxlKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIGxpbmVudW1iZXI6ICB7fVxuJy5mb3JtYXQoSW5mby5MaW5lTnVtYmVyKSkNCg0K KyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGFsaWduOiAge31cbicuZm9y bWF0KEluZm8uQWxpZ25tZW50KSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9v dC5EYXRhKSA9PSBDSWZyVGltZW91dDoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgLSBiYW5uZXI6XG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRp dGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisNCg0KKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHRpbWVvdXQ6ICB7fVxuJy5mb3Jt YXQoSW5mby5UaW1lT3V0KSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5E YXRhKSA9PSBDSWZyQ2xhc3M6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgQ2xh c3M6ICB7fVxuJy5mb3JtYXQoSW5mby5DbGFzcykpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBp ZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmclN1YkNsYXNzOg0KDQorICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgIFN1YkNsYXNzOiAge31cbicuZm9ybWF0KEluZm8uU3ViQ2xhc3MpKQ0KDQor DQoNCisgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJHdWlkOg0KDQor ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIGd1aWRvcDpcbicpDQoNCisgICAg ICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0 KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGd1aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5HdWlkLkRh dGExKSwnMHgleCclKEluZm8uR3VpZC5EYXRhMiksICcweCV4JyUoSW5mby5HdWlkLkRhdGEzKSkg XA0KDQorICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30s IHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhNFswXSksICcweCV4JyUo SW5mby5HdWlkLkRhdGE0WzFdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbMl0pLCAnMHgleCcl KEluZm8uR3VpZC5EYXRhNFszXSksIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs1XSksICcweCV4JyUo SW5mby5HdWlkLkRhdGE0WzZdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbN10pKSArICcgfX1c bicpDQoNCisNCg0KKw0KDQorICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdOg0KDQorICAgICAg ICAgICAgZm9yIENoaWxkTm9kZSBpbiBSb290LkNoaWxkOg0KDQorICAgICAgICAgICAgICAgIGlm IFJvb3QuT3BDb2RlIGluIENvbmRpdGlvbk9wczoNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYg Q2hpbGROb2RlLk9wQ29kZSBpbiBDb25kaXRpb25PcHM6DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBDaGlsZE5vZGUuQ29uZGl0aW9uID0gUm9vdC5Db25kaXRpb24gKyAnIHwgJyArIENoaWxk Tm9kZS5Db25kaXRpb24NCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIENoaWxkTm9kZS5Db25kaXRpb24gPSBSb290LkNvbmRpdGlvbg0KDQor DQoNCisgICAgICAgICAgICAgICAgc2VsZi5EdW1wWWFtbERmcyhDaGlsZE5vZGUsIGYpDQoNCisN Cg0KKyAgICAgICAgcmV0dXJuDQoNCisNCg0KK2RlbCBWZnJTeW50YXhQYXJzZXINClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1ZmckNvbXBpbGVyL1ZmclRyZWUucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21w aWxlci9WZnJUcmVlLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4u MzRmOWNlNGUzMw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyVHJlZS5weQ0KQEAgLTAsMCArMSw4OCBAQA0KK2Zyb20gVmZyQ29tcGls ZXIuQ29tbW9uQ3R5cGVzIGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cg aW1wb3J0ICoNCg0KKw0KDQorIyBJZnIgcmVsYXRlZCBJbmZvIC0+IGN0eXBlcyBvYmoNCg0KKyPj gIBjb25kaXRpb25hbCBJbmZvDQoNCisjIFN0cnVjdHVyZSBJbmZvDQoNCisNCg0KKw0KDQorY2xh c3MgVmZyVHJlZU5vZGUoKToNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgT3Bjb2RlOiBpbnQ9 Tm9uZSkgLT4gTm9uZToNCg0KKw0KDQorICAgICAgICBzZWxmLk9wQ29kZSA9IE9wY29kZQ0KDQor ICAgICAgICBzZWxmLkRhdGEgPSBOb25lICMgc2F2ZSBjbGFzcyBvciBieXRlcw0KDQorICAgICAg ICBzZWxmLkNvbmRpdGlvbiA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5FeHByZXNzaW9uID0gTm9u ZQ0KDQorICAgICAgICBzZWxmLlBhcmVudCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5DaGlsZCA9 IFtdDQoNCisNCg0KKw0KDQorICAgIGRlZiBoYXNDb25kaXRpb24oc2VsZikgLT5ib29sOg0KDQor ICAgICAgICBpZiBzZWxmLkNvbmRpdGlvbiA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJu IEZhbHNlDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KDQor DQoNCisgICAgIyBHZXQgZGF0YSBmcm9tIGN0eXBlcyB0byBieXRlcy4NCg0KKyAgICBkZWYgc3Ry dWN0MnN0cmVhbShzZWxmLCBzKSAtPiBieXRlczoNCg0KKyAgICAgICAgbGVuZ3RoID0gc2l6ZW9m KHMpDQoNCisgICAgICAgIHAgPSBjYXN0KHBvaW50ZXIocyksIFBPSU5URVIoY19jaGFyICogbGVu Z3RoKSkNCg0KKyAgICAgICAgcmV0dXJuIHAuY29udGVudHMucmF3DQoNCisNCg0KKyAgICBkZWYg aGFzQ2hpbGQoc2VsZikgLT4gYm9vbDoNCg0KKyAgICAgICAgaWYgc2VsZi5DaGlsZCA9PSBbXToN Cg0KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFRydWUNCg0KKw0KDQorICAgIGRlZiBpc0ZpbmFsQ2hpbGQoc2VsZikgLT4g Ym9vbDoNCg0KKyAgICAgICAgUGFyVHJlZSA9IHNlbGYuUGFyZW50DQoNCisgICAgICAgIGlmIFBh clRyZWU6DQoNCisgICAgICAgICAgICBpZiBQYXJUcmVlLkNoaWxkWy0xXSA9PSBzZWxmOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlDQoNCisgICAgICAgIHJldHVybiBGYWxzZQ0KDQor DQoNCisNCg0KKyAgICBkZWYgaW5zZXJ0Q2hpbGQoc2VsZiwgTmV3Tm9kZSwgcG9zOiBpbnQ9Tm9u ZSkgLT4gTm9uZToNCg0KKyAgICAgICAgaWYgbGVuKHNlbGYuQ2hpbGQpID09IDA6DQoNCisgICAg ICAgICAgICBzZWxmLkNoaWxkLmFwcGVuZChOZXdOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgaWYgbm90IHBvczoNCg0KKyAgICAgICAgICAgICAgICBMYXN0VHJlZSA9IHNl bGYuQ2hpbGRbLTFdDQoNCisgICAgICAgICAgICAgICAgc2VsZi5DaGlsZC5hcHBlbmQoTmV3Tm9k ZSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5DaGlsZC5p bnNlcnQocG9zLCBOZXdOb2RlKQ0KDQorDQoNCisgICAgICAgIE5ld05vZGUuUGFyZW50ID0gc2Vs Zg0KDQorDQoNCisNCg0KKyAgICAjIGxhc3ROb2RlLmluc2VydFJlbChuZXdOb2RlKQ0KDQorICAg IGRlZiBpbnNlcnRSZWwoc2VsZiwgbmV3Tm9kZSkgLT4gTm9uZToNCg0KKyAgICAgICAgaWYgc2Vs Zi5QYXJlbnQ6DQoNCisgICAgICAgICAgICBwYXJlbnRUcmVlID0gc2VsZi5QYXJlbnQNCg0KKyAg ICAgICAgICAgIG5ld19pbmRleCA9IHBhcmVudFRyZWUuQ2hpbGQuaW5kZXgoc2VsZikgKyAxDQoN CisgICAgICAgICAgICBwYXJlbnRUcmVlLkNoaWxkLmluc2VydChuZXdfaW5kZXgsIG5ld05vZGUp DQoNCisgICAgICAgIHNlbGYuTmV4dFJlbCA9IG5ld05vZGUNCg0KKyAgICAgICAgbmV3Tm9kZS5M YXN0UmVsID0gc2VsZg0KDQorDQoNCisNCg0KKyAgICBkZWYgZGVsZXRlTm9kZShzZWxmLCBkZWxl dGVrZXk6IHN0cikgLT4gTm9uZToNCg0KKyAgICAgICAgRmluZFN0YXR1cywgRGVsZXRlVHJlZSA9 IHNlbGYuRmluZE5vZGUoZGVsZXRla2V5KQ0KDQorICAgICAgICBpZiBGaW5kU3RhdHVzOg0KDQor ICAgICAgICAgICAgcGFyZW50VHJlZSA9IERlbGV0ZVRyZWUuUGFyZW50DQoNCisgICAgICAgICAg ICBsYXN0VHJlZSA9IERlbGV0ZVRyZWUuTGFzdFJlbA0KDQorICAgICAgICAgICAgbmV4dFRyZWUg PSBEZWxldGVUcmVlLk5leHRSZWwNCg0KKyAgICAgICAgICAgIGlmIHBhcmVudFRyZWU6DQoNCisg ICAgICAgICAgICAgICAgaW5kZXggPSBwYXJlbnRUcmVlLkNoaWxkLmluZGV4KERlbGV0ZVRyZWUp DQoNCisgICAgICAgICAgICAgICAgZGVsIHBhcmVudFRyZWUuQ2hpbGRbaW5kZXhdDQoNCisgICAg ICAgICAgICBpZiBsYXN0VHJlZSBhbmQgbmV4dFRyZWU6DQoNCisgICAgICAgICAgICAgICAgbGFz dFRyZWUuTmV4dFJlbCA9IG5leHRUcmVlDQoNCisgICAgICAgICAgICAgICAgbmV4dFRyZWUuTGFz dFJlbCA9IGxhc3RUcmVlDQoNCisgICAgICAgICAgICBlbGlmIGxhc3RUcmVlOg0KDQorICAgICAg ICAgICAgICAgIGxhc3RUcmVlLk5leHRSZWwgPSBOb25lDQoNCisgICAgICAgICAgICBlbGlmIG5l eHRUcmVlOg0KDQorICAgICAgICAgICAgICAgIG5leHRUcmVlLkxhc3RSZWwgPSBOb25lDQoNCisg ICAgICAgICAgICByZXR1cm4gRGVsZXRlVHJlZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBmaW5kIHRoZSB0YXJnZXQgdHJlZScpDQoNCisgICAgICAg ICAgICByZXR1cm4gTm9uZQ0KDQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyVXRpbGl0eS5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNv bXBpbGVyL1ZmclV0aWxpdHkucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwLi4xYTJiZjk5NWRjDQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9WZnJDb21waWxlci9WZnJVdGlsaXR5LnB5DQpAQCAtMCwwICsxLDE5OTEgQEANCitmcm9t IGFzdCBpbXBvcnQgUGFzcywgUmV0dXJuDQoNCitmcm9tIGFzeW5jaW8ud2luZG93c19ldmVudHMg aW1wb3J0IE5VTEwNCg0KK2Zyb20gY3R5cGVzLndpbnR5cGVzIGltcG9ydCBTSVpFTA0KDQorZnJv bSBtc2lsaWIuc2NoZW1hIGltcG9ydCBFcnJvcg0KDQorZnJvbSB0a2ludGVyIGltcG9ydCBODQoN Citmcm9tIHR1cnRsZSBpbXBvcnQgZ290bw0KDQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QNCg0K K2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTm9uQ2FsbGFibGVNYWdpY01vY2sNCg0KK2Zyb20g eG1scnBjLmNsaWVudCBpbXBvcnQgYm9vbGVhbg0KDQorZnJvbSBWZnJDb21waWxlci5WZnJFcnJv ciBpbXBvcnQgKg0KDQorZnJvbSBWZnJDb21waWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCg0K K2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZA0KDQoraW1wb3J0IGN0eXBl cw0KDQorDQoNCitpbXBvcnQgc3lzDQoNCisNCg0KK1ZGUl9QQUNLX1NIT1cgPSAweDAyDQoNCitW RlJfUEFDS19BU1NJR04gPSAweDAxDQoNCitWRlJfUEFDS19QVVNIID0gMHgwNA0KDQorVkZSX1BB Q0tfUE9QID0gMHgwOA0KDQorREVGQVVMVF9QQUNLX0FMSUdOID0gMHg4DQoNCitERUZBVUxUX0FM SUdOID0gMQ0KDQorTUFYX05BTUVfTEVOID0gNjQNCg0KK01BWF9CSVRfV0lEVEggPSAzMg0KDQor RUZJX1ZBUlNUT1JFX0lEX01BWCA9IDB4RkZGRg0KDQorRUZJX0JJVFNfU0hJRlRfUEVSX1VJTlQz MiA9IDB4NQ0KDQorRUZJX0JJVFNfUEVSX1VJTlQzMiA9ICgxIDw8IEVGSV9CSVRTX1NISUZUX1BF Ul9VSU5UMzIpDQoNCitFRklfRlJFRV9WQVJTVE9SRV9JRF9CSVRNQVBfU0laRSA9IGludCgNCg0K KyAgICAoRUZJX1ZBUlNUT1JFX0lEX01BWCArIDEpIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCg0K Kw0KDQorDQoNCitjbGFzcyBTVmZyUGFja1N0YWNrTm9kZShvYmplY3QpOg0KDQorDQoNCisgICAg ZGVmIF9faW5pdF9fKHNlbGYsIElkZW50aWZpZXIsIE51bWJlcik6DQoNCisgICAgICAgIHNlbGYu SWRlbnRpZmllciA9IElkZW50aWZpZXINCg0KKyAgICAgICAgc2VsZi5OdW1iZXIgPSBOdW1iZXIN Cg0KKyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KDQorDQoNCisgICAgZGVmIE1hdGNoKHNlbGYs IElkZW50aWZpZXIpOg0KDQorICAgICAgICBpZiBJZGVudGlmaWVyID09IE5vbmU6DQoNCisgICAg ICAgICAgICByZXR1cm4gVHJ1ZQ0KDQorICAgICAgICBlbGlmIHNlbGYuSWRlbnRpZmllciA9PSBO b25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQoNCisgICAgICAgIGVsaWYgc2VsZi5J ZGVudGlmaWVyID09IElkZW50aWZpZXI6DQoNCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KDQor ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQoNCisNCg0KKw0KDQor Y2xhc3MgU1ZmckRhdGFUeXBlKG9iamVjdCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgVHlwZU5hbWU9JycpOg0KDQorICAgICAgICBzZWxmLlR5cGVOYW1lID0gVHlwZU5hbWUNCg0K KyAgICAgICAgc2VsZi5UeXBlID0gMA0KDQorICAgICAgICBzZWxmLkFsaWduID0gMQ0KDQorICAg ICAgICBzZWxmLlRvdGFsU2l6ZSA9IDANCg0KKyAgICAgICAgc2VsZi5IYXNCaXRGaWVsZCA9IEZh bHNlDQoNCisgICAgICAgIHNlbGYuTWVtYmVycyA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5OZXh0 ID0gTm9uZQ0KDQorDQoNCisNCg0KK2NsYXNzIFNWZnJEYXRhRmllbGQob2JqZWN0KToNCg0KKw0K DQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBGaWVsZE5hbWU9Tm9uZSk6DQoNCisgICAgICAgIHNl bGYuRmllbGROYW1lID0gRmllbGROYW1lDQoNCisgICAgICAgIHNlbGYuRmllbGRUeXBlID0gTm9u ZQ0KDQorICAgICAgICBzZWxmLk9mZnNldCA9IDANCg0KKyAgICAgICAgc2VsZi5BcnJheU51bSA9 IDANCg0KKyAgICAgICAgc2VsZi5Jc0JpdEZpZWxkID0gRmFsc2UNCg0KKyAgICAgICAgc2VsZi5C aXRXaWR0aCA9IDANCg0KKyAgICAgICAgc2VsZi5CaXRPZmZzZXQgPSAwDQoNCisgICAgICAgIHNl bGYuTmV4dCA9IE5vbmUNCg0KKw0KDQorY2xhc3MgSW50ZXJuYWxUeXBlcygpOg0KDQorICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBUeXBlTmFtZSwgVHlwZSwgU2l6ZSwgQWxpZ24pOg0KDQorICAgICAg ICBzZWxmLlR5cGVOYW1lID0gVHlwZU5hbWUNCg0KKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZQ0K DQorICAgICAgICBzZWxmLlNpemUgPSBTaXplDQoNCisgICAgICAgIHNlbGYuQWxpZ24gPSBBbGln bg0KDQorDQoNCitnSW50ZXJuYWxUeXBlc1RhYmxlID0gWw0KDQorICAgIEludGVybmFsVHlwZXMo IlVJTlQ2NCIsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NCwNCg0KKyAgICAgICAgICAgICAgICAg IHNpemVvZihjdHlwZXMuY191bG9uZ2xvbmcpLCBzaXplb2YoY3R5cGVzLmNfdWxvbmdsb25nKSks DQoNCisgICAgSW50ZXJuYWxUeXBlcygiVUlOVDMyIiwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMy LCBzaXplb2YoY3R5cGVzLmNfdWxvbmcpLA0KDQorICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0 eXBlcy5jX3Vsb25nKSksDQoNCisgICAgSW50ZXJuYWxUeXBlcygiVUlOVDE2IiwgRUZJX0lGUl9U WVBFX05VTV9TSVpFXzE2LCBzaXplb2YoY3R5cGVzLmNfdXNob3J0KSwNCg0KKyAgICAgICAgICAg ICAgICAgIHNpemVvZihjdHlwZXMuY191c2hvcnQpKSwNCg0KKyAgICBJbnRlcm5hbFR5cGVzKCJV SU5UOCIsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV84LCBzaXplb2YoY3R5cGVzLmNfdWJ5dGUpLA0K DQorICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSksDQoNCisgICAgSW50 ZXJuYWxUeXBlcygiQk9PTEVBTiIsIEVGSV9JRlJfVFlQRV9CT09MRUFOLCBzaXplb2YoY3R5cGVz LmNfdWJ5dGUpLA0KDQorICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSks DQoNCisgICAgSW50ZXJuYWxUeXBlcygiRUZJX0dVSUQiLCBFRklfSUZSX1RZUEVfT1RIRVIsIHNp emVvZihFRklfR1VJRCksDQoNCisgICAgICAgICAgICAgICAgICBzaXplb2YoY191Ynl0ZSAqIDgp KSwNCg0KKyAgICBJbnRlcm5hbFR5cGVzKCJFRklfSElJX0RBVEUiLCBFRklfSUZSX1RZUEVfREFU RSwgc2l6ZW9mKEVGSV9ISUlfREFURSksDQoNCisgICAgICAgICAgICAgICAgICBzaXplb2YoY3R5 cGVzLmNfdXNob3J0KSksDQoNCisgICAgSW50ZXJuYWxUeXBlcygiRUZJX1NUUklOR19JRCIsIEVG SV9JRlJfVFlQRV9TVFJJTkcsDQoNCisgICAgICAgICAgICAgICAgICBzaXplb2YoY3R5cGVzLmNf dXNob3J0KSwgc2l6ZW9mKGN0eXBlcy5jX3VzaG9ydCkpLA0KDQorICAgIEludGVybmFsVHlwZXMo IkVGSV9ISUlfVElNRSIsIEVGSV9JRlJfVFlQRV9USU1FLCBzaXplb2YoRUZJX0hJSV9USU1FKSwN Cg0KKyAgICAgICAgICAgICAgICAgIHNpemVvZihjdHlwZXMuY191Ynl0ZSkpLA0KDQorICAgIElu dGVybmFsVHlwZXMoIkVGSV9ISUlfUkVGIiwgRUZJX0lGUl9UWVBFX1JFRiwgc2l6ZW9mKEVGSV9I SUlfUkVGKSwNCg0KKyAgICAgICAgICAgICAgICAgIHNpemVvZihFRklfR1VJRCkpLA0KDQorXQ0K DQorDQoNCitjbGFzcyBDVmZyVmFyRGF0YVR5cGVEQihvYmplY3QpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fUGFja0FsaWduID0gREVGQVVMVF9Q QUNLX0FMSUdODQoNCisgICAgICAgIHNlbGYuX19QYWNrU3RhY2sgPSBOb25lDQoNCisgICAgICAg IHNlbGYuX19EYXRhVHlwZUxpc3QgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX19OZXdEYXRhVHlw ZSA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5fX0N1cnJEYXRhVHlwZSA9IE5vbmUNCg0KKyAgICAg ICAgc2VsZi5fX0N1cnJEYXRhRmllbGQgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX19GaXJzdE5l d0RhdGFUeXBlTmFtZSA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5JbnRlcm5hbFR5cGVzTGlzdElu aXQoKQ0KDQorDQoNCisNCg0KKyAgICBkZWYgSW50ZXJuYWxUeXBlc0xpc3RJbml0KHNlbGYpOg0K DQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZ0ludGVybmFsVHlwZXNUYWJsZSkpOg0K DQorICAgICAgICAgICAgcE5ld1R5cGUgPSBTVmZyRGF0YVR5cGUoKQ0KDQorICAgICAgICAgICAg cE5ld1R5cGUuVHlwZU5hbWUgPSBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVOYW1lDQoNCisg ICAgICAgICAgICBwTmV3VHlwZS5UeXBlID0gZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlDQoN CisgICAgICAgICAgICBwTmV3VHlwZS5BbGlnbiA9IGdJbnRlcm5hbFR5cGVzVGFibGVbaV0uQWxp Z24NCg0KKyAgICAgICAgICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IGdJbnRlcm5hbFR5cGVzVGFi bGVbaV0uU2l6ZQ0KDQorDQoNCisgICAgICAgICAgICBpZiBnSW50ZXJuYWxUeXBlc1RhYmxlW2ld LlR5cGVOYW1lID09ICdFRklfSElJX0RBVEUnOg0KDQorICAgICAgICAgICAgICAgIHBZZWFyRmll bGQgID0gU1ZmckRhdGFGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQgID0g U1ZmckRhdGFGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcERheUZpZWxkICA9IFNWZnJEYXRh RmllbGQoKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5GaWVsZE5hbWUgPSAn WWVhcicNCg0KKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYu R2V0RGF0YVR5cGUoJ1VJTlQxNicpDQoNCisgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5PZmZz ZXQgPSAwDQoNCisgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5OZXh0ID0gcE1vbnRoRmllbGQN Cg0KKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAg ICAgICAgIHBZZWFyRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgICAg ICAgICBwTW9udGhGaWVsZC5GaWVsZE5hbWUgPSAnTW9udGgnDQoNCisgICAgICAgICAgICAgICAg cE1vbnRoRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KDQor ICAgICAgICAgICAgICAgIHBNb250aEZpZWxkLk9mZnNldCA9IDINCg0KKyAgICAgICAgICAgICAg ICBwTW9udGhGaWVsZC5OZXh0ID0gcERheUZpZWxkDQoNCisgICAgICAgICAgICAgICAgcE1vbnRo RmllbGQuQXJyYXlOdW0gPSAwDQoNCisgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuSXNCaXRG aWVsZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuRmllbGROYW1l ID0gJ0RheScNCg0KKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuRmllbGRUeXBlLCBfID0gc2Vs Zi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KDQorICAgICAgICAgICAgICAgIHBEYXlGaWVsZC5PZmZz ZXQgPSAzDQoNCisgICAgICAgICAgICAgICAgcERheUZpZWxkLk5leHQgPSBOb25lDQoNCisgICAg ICAgICAgICAgICAgcERheUZpZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAgIHBE YXlGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICAgICAgICAgIHBOZXdU eXBlLk1lbWJlcnMgPSBwWWVhckZpZWxkDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgZ0ludGVy bmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAnRUZJX0hJSV9USU1FJzoNCg0KKyAgICAgICAg ICAgICAgICBwSG91cnNGaWVsZCAgPSBTVmZyRGF0YUZpZWxkKCkNCg0KKyAgICAgICAgICAgICAg ICBwTWludXRlc0ZpZWxkICA9IFNWZnJEYXRhRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBT ZWNvbmRzRmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBw SG91cnNGaWVsZC5GaWVsZE5hbWUgPSAnSG91cnMnDQoNCisgICAgICAgICAgICAgICAgcEhvdXJz RmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KDQorICAgICAg ICAgICAgICAgIHBIb3Vyc0ZpZWxkLk9mZnNldCA9IDANCg0KKyAgICAgICAgICAgICAgICBwSG91 cnNGaWVsZC5OZXh0ID0gcE1pbnV0ZXNGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBIb3Vyc0Zp ZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLklzQml0Rmll bGQgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5GaWVsZE5h bWUgPSAnTWludXRlcycNCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkZpZWxkVHlw ZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUoJ1VJTlQ4JykNCg0KKyAgICAgICAgICAgICAgICBwTWlu dXRlc0ZpZWxkLk9mZnNldCA9IDENCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLk5l eHQgPSBwU2Vjb25kc0ZpZWxkDQoNCisgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5BcnJh eU51bSA9IDANCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLklzQml0RmllbGQgPSBG YWxzZQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5GaWVsZE5hbWUgPSAn U2Vjb25kcycNCg0KKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLkZpZWxkVHlwZSwgXyA9 IHNlbGYuR2V0RGF0YVR5cGUoJ1VJTlQ4JykNCg0KKyAgICAgICAgICAgICAgICBwU2Vjb25kc0Zp ZWxkLk9mZnNldCA9IDINCg0KKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLk5leHQgPSBO b25lDQoNCisgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5BcnJheU51bSA9IDANCg0KKyAg ICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KDQorDQoNCisg ICAgICAgICAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBIb3Vyc0ZpZWxkDQoNCisNCg0KKyAg ICAgICAgICAgIGVsaWYgZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAnRUZJX0hJ SV9SRUYnOg0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQgID0gU1ZmckRhdGFG aWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkICA9IFNWZnJEYXRhRmllbGQo KQ0KDQorICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkICA9IFNWZnJEYXRhRmllbGQo KQ0KDQorICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRoRmllbGQgPSBTVmZyRGF0YUZpZWxkKCkN Cg0KKw0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuRmllbGROYW1lID0gJ1F1 ZXN0aW9uSWQnDQoNCisgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5GaWVsZFR5cGUs IF8gPSBzZWxmLkdldERhdGFUeXBlKCdVSU5UMTYnKQ0KDQorICAgICAgICAgICAgICAgIHBRdWVz dGlvbklkRmllbGQuT2Zmc2V0ID0gMA0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmll bGQuTmV4dCA9IHBGb3JtSWRGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmll bGQuQXJyYXlOdW0gPSAwDQoNCisgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5Jc0Jp dEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5GaWVs ZE5hbWUgPSAnRm9ybUlkJw0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5GaWVsZFR5 cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCdVSU5UMTYnKQ0KDQorICAgICAgICAgICAgICAgIHBG b3JtSWRGaWVsZC5PZmZzZXQgPSAyDQoNCisgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkLk5l eHQgPSBwRm9ybVNldEd1aWRGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5B cnJheU51bSA9IDANCg0KKyAgICAgICAgICAgICAgICBwRm9ybUlkRmllbGQuSXNCaXRGaWVsZCA9 IEZhbHNlDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5GaWVsZE5h bWUgPSAnRm9ybVNldEd1aWQnDQoNCisgICAgICAgICAgICAgICAgcEZvcm1TZXRHdWlkRmllbGQu RmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnRUZJX0dVSUQnKQ0KDQorICAgICAgICAg ICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLk9mZnNldCA9IDQNCg0KKyAgICAgICAgICAgICAgICBw Rm9ybVNldEd1aWRGaWVsZC5OZXh0ID0gcERldmljZVBhdGhGaWVsZA0KDQorICAgICAgICAgICAg ICAgIHBGb3JtU2V0R3VpZEZpZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAgIHBG b3JtU2V0R3VpZEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgICAgICAg ICAgcERldmljZVBhdGhGaWVsZC5GaWVsZE5hbWUgPSAnRGV2aWNlUGF0aCcNCg0KKyAgICAgICAg ICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUo J0VGSV9TVFJJTkdfSUQnKQ0KDQorICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRoRmllbGQuT2Zm c2V0ID0gMjANCg0KKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLk5leHQgPSBOb25l DQoNCisgICAgICAgICAgICAgICAgcERldmljZVBhdGhGaWVsZC5BcnJheU51bSA9IDANCg0KKyAg ICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KDQorDQoN CisgICAgICAgICAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBRdWVzdGlvbklkRmllbGQNCg0K Kw0KDQorICAgICAgICAgICAgcE5ld1R5cGUuTmV4dCA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNl bGYuX19SZWdpc3Rlck5ld1R5cGUocE5ld1R5cGUpDQoNCisgICAgICAgICAgICBwTmV3VHlwZSA9 IE5vbmUNCg0KKw0KDQorICAgIGRlZiBHZXREYXRhVHlwZUxpc3Qoc2VsZik6DQoNCisgICAgICAg IHJldHVybiBzZWxmLl9fRGF0YVR5cGVMaXN0DQoNCisNCg0KKyAgICBkZWYgUGFjayhzZWxmLA0K DQorICAgICAgICAgICAgIExpbmVOdW0sDQoNCisgICAgICAgICAgICAgQWN0aW9uLA0KDQorICAg ICAgICAgICAgIElkZW50aWZpZXI9Tm9uZSwNCg0KKyAgICAgICAgICAgICBOdW1iZXI9REVGQVVM VF9QQUNLX0FMSUdOKToNCg0KKw0KDQorICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19TSE9X Og0KDQorICAgICAgICAgICAgTXNnID0gc3RyLmZvcm1hdCgndmFsdWUgb2YgcHJhZ21hIHBhY2so c2hvdykgPT0gJWQnICUNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX19Q YWNrQWxpZ24pKQ0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5l TnVtLCAnV2FybmluZycsIE1zZykNCg0KKw0KDQorICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFD S19QVVNIOg0KDQorICAgICAgICAgICAgcE5ldyA9IFNWZnJQYWNrU3RhY2tOb2RlKElkZW50aWZp ZXIsIHNlbGYuX19QYWNrQWxpZ24pDQoNCisgICAgICAgICAgICBpZiBwTmV3ID09IE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9F UlJPUg0KDQorICAgICAgICAgICAgcE5ldy5OZXh0ID0gc2VsZi5fX1BhY2tTdGFjaw0KDQorICAg ICAgICAgICAgc2VsZi5fX1BhY2tTdGFjayA9IHBOZXcNCg0KKw0KDQorICAgICAgICBpZiBBY3Rp b24gJiBWRlJfUEFDS19QT1A6DQoNCisgICAgICAgICAgICBwTm9kZSA9IE5vbmUNCg0KKyAgICAg ICAgICAgIGlmIHNlbGYuX19QYWNrU3RhY2sgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBn Q1ZmckVycm9ySGFuZGxlLlByaW50TXNnKExpbmVOdW0sICdFcnJvcicsICcjcHJhZ21hIHBhY2so cG9wLi4uKSA6IG1vcmUgcG9wcyB0aGFuIHB1c2hlcycpDQoNCisNCg0KKyAgICAgICAgICAgIHBO b2RlID0gc2VsZi5fX1BhY2tTdGFjaw0KDQorICAgICAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgICAgICBpZiBwTm9kZS5NYXRjaChJZGVudGlmaWVyKSA9PSBUcnVl Og0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fUGFja0FsaWduID0gcE5vZGUuTnVtYmVy DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19QYWNrU3RhY2sgPSBwTm9kZS5OZXh0DQoN CisgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgaWYg QWN0aW9uICYgVkZSX1BBQ0tfQVNTSUdOOg0KDQorICAgICAgICAgICAgUGFja0FsaWduID0gKE51 bWJlciArIE51bWJlciAlIDIpIGlmIChOdW1iZXIgPiAxKSBlbHNlIE51bWJlcg0KDQorICAgICAg ICAgICAgaWYgUGFja0FsaWduID09IDAgb3IgUGFja0FsaWduID4gMTY6DQoNCisgICAgICAgICAg ICAgICAgZ0NWZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5lTnVtLCAnRXJyb3InLCAiZXhwZWN0 ZWQgcHJhZ21hIHBhcmFtZXRlciB0byBiZSAnMScsICcyJywgJzQnLCAnOCcsIG9yICcxNiciKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fUGFja0FsaWdu ID0gUGFja0FsaWduDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgRGVjbGFyZURhdGFUeXBlQmVnaW4oc2VsZik6 DQoNCisgICAgICAgIHBOZXdUeXBlID0gU1ZmckRhdGFUeXBlKCkNCg0KKw0KDQorICAgICAgICBw TmV3VHlwZS5UeXBlTmFtZSA9ICcnDQoNCisgICAgICAgIHBOZXdUeXBlLlR5cGUgPSBFRklfSUZS X1RZUEVfT1RIRVINCg0KKyAgICAgICAgcE5ld1R5cGUuQWxpZ24gPSBERUZBVUxUX0FMSUdODQoN CisgICAgICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IDANCg0KKyAgICAgICAgcE5ld1R5cGUuSGFz Qml0RmllbGQgPSBGYWxzZQ0KDQorICAgICAgICBwTmV3VHlwZS5NZW1iZXJzID0gTm9uZQ0KDQor ICAgICAgICBwTmV3VHlwZS5OZXh0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fTmV3RGF0YVR5 cGUgPSBwTmV3VHlwZQ0KDQorDQoNCisgICAgZGVmIFNldE5ld1R5cGVUeXBlKHNlbGYsIFR5cGUp Og0KDQorICAgICAgICBpZiBzZWxmLl9fTmV3RGF0YVR5cGUgPT0gTm9uZToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQoNCisNCg0K KyAgICAgICAgaWYgVHlwZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoNCisgICAgICAgIHNlbGYuX19OZXdE YXRhVHlwZS5UeXBlID0gVHlwZSAgIyBuZWVkIHRvIGxpbWl0IHRoZSB2YWx1ZSBvZiB0aGUgdHlw ZQ0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KDQorDQoNCisgICAgZGVmIFNldE5ld1R5cGVUb3RhbFNpemUoc2VsZiwgU2l6ZSk6DQoNCisg ICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBTaXplDQoNCisNCg0KKyAgICBk ZWYgU2V0TmV3VHlwZUFsaWduKHNlbGYsIEFsaWduKToNCg0KKyAgICAgICAgc2VsZi5fX05ld0Rh dGFUeXBlLkFsaWduID0gQWxpZ24NCg0KKw0KDQorICAgIGRlZiBTZXROZXdUeXBlTmFtZShzZWxm LCBUeXBlTmFtZSk6DQoNCisgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZSA9PSBOb25lOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9TS0lQ RUQNCg0KKw0KDQorICAgICAgICBpZiBUeXBlTmFtZSA9PSBOb25lOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoNCisgICAg ICAgIGlmIGxlbihUeXBlTmFtZSkgPj0gTUFYX05BTUVfTEVOOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KDQorDQoNCisg ICAgICAgIHBUeXBlID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KDQorICAgICAgICB3aGlsZSBwVHlw ZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcFR5cGUuVHlwZU5hbWUgPT0gVHlwZU5hbWU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURF RklORUQNCg0KKyAgICAgICAgICAgIHBUeXBlID0gcFR5cGUuTmV4dA0KDQorDQoNCisgICAgICAg IHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlTmFtZSA9IFR5cGVOYW1lDQoNCisgICAgICAgIHJldHVy biBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIF9fQWxp Z25TdHVmZihzZWxmLCBTaXplLCBBbGlnbik6DQoNCisgICAgICAgIHJldHVybiBBbGlnbiAtIChT aXplKSAlIChBbGlnbikNCg0KKw0KDQorICAgIGRlZiBEZWNsYXJlRGF0YVR5cGVFbmQoc2VsZik6 DQoNCisgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlTmFtZSA9PSAnJzoNCg0KKyAg ICAgICAgICAgIHJldHVybg0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5U b3RhbFNpemUgJSBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gIT0gMDoNCg0KKyAgICAgICAgICAg IHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgKz0gc2VsZi5fX0FsaWduU3R1ZmYoDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSwgc2VsZi5fX05ld0Rh dGFUeXBlLkFsaWduKQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19SZWdpc3Rlck5ld1R5cGUoc2Vs Zi5fX05ld0RhdGFUeXBlKQ0KDQorICAgICAgICBpZiBzZWxmLl9fRmlyc3ROZXdEYXRhVHlwZU5h bWUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19GaXJzdE5ld0RhdGFUeXBlTmFtZSA9 IHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlTmFtZQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19OZXdE YXRhVHlwZSA9IE5vbmUNCg0KKw0KDQorICAgICMgdHdvIGRlZmluaXRpb25zDQoNCisgICAgZGVm IEdldERhdGFUeXBlU2l6ZUJ5VHlwZU5hbWUoc2VsZiwgVHlwZU5hbWUpOg0KDQorICAgICAgICBT aXplID0gMA0KDQorICAgICAgICBwRGF0YVR5cGUgPSBzZWxmLl9fRGF0YVR5cGVMaXN0DQoNCisg ICAgICAgIHdoaWxlIHBEYXRhVHlwZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcERhdGFU eXBlLlR5cGVOYW1lID09IFR5cGVOYW1lOg0KDQorICAgICAgICAgICAgICAgIFNpemUgPSBwRGF0 YVR5cGUuVG90YWxTaXplDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisgICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0 YVR5cGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJldHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBkZWYgR2V0RGF0YVR5cGVTaXplQnlEYXRh VHlwZShzZWxmLCBEYXRhVHlwZSk6DQoNCisgICAgICAgIFNpemUgPSAwDQoNCisgICAgICAgIERh dGFUeXBlID0gRGF0YVR5cGUgJiAweDBGDQoNCisgICAgICAgICMgRm9yIHVzZXIgZGVmaW5lZCBk YXRhIHR5cGUsIHRoZSBzaXplIGNhbid0IGJlIGdvdCBieSB0aGlzIGZ1bmN0aW9uLg0KDQorICAg ICAgICBpZiBEYXRhVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQoNCisgICAgICAgICAgICBy ZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAg cERhdGFUeXBlID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KDQorICAgICAgICB3aGlsZSBwRGF0YVR5 cGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIERhdGFUeXBlID09IHBEYXRhVHlwZS5UeXBl Og0KDQorICAgICAgICAgICAgICAgIFNpemUgPSBwRGF0YVR5cGUuVG90YWxTaXplDQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQoNCisgICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0YVR5cGUuTmV4dA0KDQorDQoNCisgICAg ICAgIHJldHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisN Cg0KKyAgICBkZWYgX19FeHRyYWN0U3RydWN0VHlwZU5hbWUoc2VsZiwgVmFyU3RyKToNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgaW5kZXggPSBWYXJTdHIuaW5kZXgoJy4nKQ0KDQor ICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJTdHIs IGxlbihWYXJTdHIpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gVmFy U3RyWzA6aW5kZXhdLCBpbmRleCArIDENCg0KKw0KDQorICAgIGRlZiBfX0V4dHJhY3RGaWVsZE5h bWVBbmRBcnJhcnkoc2VsZiwgVmFyU3RyLCBzKToNCg0KKw0KDQorICAgICAgICBBcnJheUlkeCA9 IElOVkFMSURfQVJSQVlfSU5ERVgNCg0KKyAgICAgICAgc19jb3B5ID0gcw0KDQorICAgICAgICB3 aGlsZSAocyA8IGxlbihWYXJTdHIpIGFuZCBWYXJTdHJbc10gIT0gJy4nIGFuZCBWYXJTdHJbc10g IT0gJ1snDQoNCisgICAgICAgICAgICAgICBhbmQgVmFyU3RyW3NdICE9ICddJyk6DQoNCisgICAg ICAgICAgICBzICs9IDENCg0KKw0KDQorICAgICAgICBGTmFtZSA9IFZhclN0cltzX2NvcHk6c10N Cg0KKw0KDQorICAgICAgICBpZiBzID09IGxlbihWYXJTdHIpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIEFycmF5SWR4LCBzLCBGTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MN Cg0KKw0KDQorICAgICAgICBlbGlmIFZhclN0cltzXSA9PSAnLic6DQoNCisgICAgICAgICAgICBz ICs9IDENCg0KKyAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywgRk5hbWUsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICAgICAgZWxpZiBWYXJTdHJbc10g PT0gJ1snOg0KDQorICAgICAgICAgICAgcyArPSAxDQoNCisgICAgICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICAgICAgZSA9IHMgKyBWYXJTdHJbczpdLmluZGV4KCddJykNCg0KKw0KDQorICAg ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5v bmUsIE5vbmUsIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9EQVRBX1NUUklOR19FUlJP Ug0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBBcnJheVN0ciA9IFZh clN0cltzOmVdDQoNCisgICAgICAgICAgICAgICAgQXJyYXlJZHggPSBpbnQoQXJyYXlTdHIpDQoN CisgICAgICAgICAgICAgICAgaWYgVmFyU3RyW2VdID09ICddJzoNCg0KKyAgICAgICAgICAgICAg ICAgICAgZSArPSAxDQoNCisgICAgICAgICAgICAgICAgaWYgZSA8IGxlbihWYXJTdHIpIGFuZCAo VmFyU3RyW2VdID09ICcuJyk6DQoNCisgICAgICAgICAgICAgICAgICAgIGUgKz0gMQ0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwgZSwgRk5hbWUsIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICAgICAgZWxpZiBWYXJTdHJbc10gPT0gJ10nOg0K DQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUsIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9EQVRBX1NUUklOR19FUlJPUg0KDQorDQoNCisgICAgICAgIHJldHVybiBBcnJheUlk eCwgcywgRk5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAg ICBkZWYgR2V0VHlwZUZpZWxkKHNlbGYsIEZOYW1lLCBUeXBlKToNCg0KKyAgICAgICAgaWYgRk5h bWUgPT0gTm9uZSBvciBUeXBlID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gTm9uZSwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgcEZp ZWxkID0gVHlwZS5NZW1iZXJzDQoNCisgICAgICAgIHdoaWxlIChwRmllbGQgIT0gTm9uZSk6DQoN CisNCg0KKyAgICAgICAgICAgIGlmIFR5cGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRToNCg0K KyAgICAgICAgICAgICAgICBpZiBGTmFtZSA9PSAnSG91cic6DQoNCisgICAgICAgICAgICAgICAg ICAgIEZOYW1lID0gJ0hvdXJzJw0KDQorICAgICAgICAgICAgICAgIGVsaWYgRk5hbWUgPT0gJ01p bnV0ZSc6DQoNCisgICAgICAgICAgICAgICAgICAgIEZOYW1lID09ICdNaW51dGVzJw0KDQorICAg ICAgICAgICAgICAgIGVsaWYgRk5hbWUgPT0gJ1NlY29uZCc6DQoNCisgICAgICAgICAgICAgICAg ICAgIEZOYW1lID0gJ1NlY29uZHMnDQoNCisgICAgICAgICAgICBpZiBwRmllbGQuRmllbGROYW1l ID09IEZOYW1lOg0KDQorICAgICAgICAgICAgICAgIEZpZWxkID0gcEZpZWxkDQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIEZpZWxkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0K DQorDQoNCisgICAgICAgICAgICBwRmllbGQgPSBwRmllbGQuTmV4dA0KDQorDQoNCisgICAgICAg IHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0K KyAgICBkZWYgSXNUaGlzQml0RmllbGQoc2VsZiwgVmFyU3RyTmFtZSk6DQoNCisNCg0KKyAgICAg ICAgVE5hbWUsIGkgPSBzZWxmLl9fRXh0cmFjdFN0cnVjdFR5cGVOYW1lKFZhclN0ck5hbWUpDQoN CisgICAgICAgIHBUeXBlLCBSZXR1cm5Db2RlID0gc2VsZi5HZXREYXRhVHlwZShUTmFtZSkNCg0K KyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT UzoNCg0KKyAgICAgICAgICAgIHJldHVybiBOb25lLCBSZXR1cm5Db2RlDQoNCisgICAgICAgIHBG aWVsZCA9IE5vbmUNCg0KKyAgICAgICAgd2hpbGUgKGkgPCBsZW4oVmFyU3RyTmFtZSkpOg0KDQor ICAgICAgICAgICAgIyBpIHN0YXJ0IGZyb20gZmllbGQNCg0KKyAgICAgICAgICAgIF8sIGksIEZO YW1lLCBSZXR1cm5Db2RlID0gc2VsZi5fX0V4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoDQoNCisg ICAgICAgICAgICAgICAgVmFyU3RyTmFtZSwgaSkNCg0KKyAgICAgICAgICAgIGlmIFJldHVybkNv ZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIE5vbmUsIFJldHVybkNvZGUNCg0KKyAgICAgICAgICAgIHBGaWVsZCwgUmV0dXJu Q29kZSA9IHNlbGYuR2V0VHlwZUZpZWxkKEZOYW1lLCBwVHlwZSkNCg0KKyAgICAgICAgICAgIGlm IFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFJldHVybkNvZGUNCg0KKyAgICAgICAgICAgIHBUeXBl ID0gcEZpZWxkLkZpZWxkVHlwZQ0KDQorDQoNCisgICAgICAgIGlmIHBGaWVsZCAhPSBOb25lIGFu ZCBwRmllbGQuSXNCaXRGaWVsZDoNCg0KKyAgICAgICAgICAgIHJldHVybiBUcnVlLCBSZXR1cm5D b2RlDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIFJldHVy bkNvZGUNCg0KKw0KDQorICAgIGRlZiBHZXRGaWVsZE9mZnNldChzZWxmLCBGaWVsZCwgQXJyYXlJ ZHgsIElzQml0RmllbGQpOg0KDQorDQoNCisgICAgICAgIGlmIEZpZWxkID09IE5vbmU6DQoNCisg ICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SDQoNCisNCg0KKyAgICAgICAgaWYgKEFycmF5SWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgp IGFuZCAoRmllbGQuQXJyYXlOdW0gPT0gMCBvcg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZC5BcnJheU51bSA8PSBBcnJheUlkeCk6DQoN CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9S X0FSUkFSWV9OVU0NCg0KKw0KDQorICAgICAgICBJZHggPSAwIGlmIEFycmF5SWR4ID09IElOVkFM SURfQVJSQVlfSU5ERVggZWxzZSBBcnJheUlkeA0KDQorICAgICAgICBpZiBJc0JpdEZpZWxkOg0K DQorICAgICAgICAgICAgT2Zmc2V0ID0gRmllbGQuQml0T2Zmc2V0ICsgRmllbGQuRmllbGRUeXBl LlRvdGFsU2l6ZSAqIElkeCAqIDgNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIE9m ZnNldCA9IEZpZWxkLk9mZnNldCArIEZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUgKiBJZHgNCg0K Kw0KDQorICAgICAgICByZXR1cm4gT2Zmc2V0LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KDQorDQoNCisgICAgZGVmIF9fR2V0RmllbGRXaWR0aChzZWxmLCBGaWVsZCk6DQoNCisg ICAgICAgIGlmIEZpZWxkID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gMA0KDQorICAg ICAgICByZXR1cm4gRmllbGQuRmllbGRUeXBlLlR5cGUNCg0KKw0KDQorICAgIGRlZiBfX0dldEZp ZWxkU2l6ZShzZWxmLCBGaWVsZCwgQXJyYXlJZHgsIEJpdEZpZWxkKToNCg0KKyAgICAgICAgaWYg RmllbGQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fRkFUQUxfRVJST1INCg0KKw0KDQorICAgICAgICBpZiAoQXJyYXlJZHggPT0gSU5WQUxJ RF9BUlJBWV9JTkRFWCkgYW5kIChGaWVsZC5BcnJheU51bSAhPSAwKToNCg0KKyAgICAgICAgICAg IHJldHVybiBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplICogRmllbGQuQXJyYXlOdW0NCg0KKyAg ICAgICAgZWxzZToNCg0KKw0KDQorICAgICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIEZpZWxkLkJpdFdpZHRoDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplDQoNCisNCg0K KyAgICBkZWYgR2V0RGF0YUZpZWxkSW5mbyhzZWxmLCBWYXJTdHIpOg0KDQorDQoNCisgICAgICAg ICMgVmFyU3RyIC0+IFR5cGUuRmllbGQNCg0KKyAgICAgICAgT2Zmc2V0ID0gMA0KDQorICAgICAg ICBUeXBlID0gRUZJX0lGUl9UWVBFX09USEVSDQoNCisgICAgICAgIFNpemUgPSAwDQoNCisgICAg ICAgIEJpdEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICBUTmFtZSwgaSA9IHNlbGYuX19F eHRyYWN0U3RydWN0VHlwZU5hbWUoVmFyU3RyKQ0KDQorDQoNCisgICAgICAgIHBUeXBlLCBSZXR1 cm5Db2RlID0gc2VsZi5HZXREYXRhVHlwZShUTmFtZSkNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29k ZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJl dHVybiBPZmZzZXQsIFR5cGUsIFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQoNCisNCg0KKyAg ICAgICAgQml0RmllbGQsIFJldHVybkNvZGUgPSBzZWxmLklzVGhpc0JpdEZpZWxkKFZhclN0cikN Cg0KKw0KDQorICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KDQorICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0 RmllbGQsIFJldHVybkNvZGUNCg0KKw0KDQorICAgICAgICAj44CAaWYgaXQgaXMgbm90IHN0cnVj dCBkYXRhIHR5cGUNCg0KKyAgICAgICAgVHlwZSA9IHBUeXBlLlR5cGUNCg0KKyAgICAgICAgU2l6 ZSA9IHBUeXBlLlRvdGFsU2l6ZQ0KDQorDQoNCisgICAgICAgIHdoaWxlIChpIDwgbGVuKFZhclN0 cikpOg0KDQorICAgICAgICAgICAgQXJyYXlJZHgsIGksIEZOYW1lLCBSZXR1cm5Db2RlID0gc2Vs Zi5fX0V4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoDQoNCisgICAgICAgICAgICAgICAgVmFyU3Ry LCBpKQ0KDQorICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBT aXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KDQorICAgICAgICAgICAgcEZpZWxkLCBSZXR1cm5D b2RlID0gc2VsZi5HZXRUeXBlRmllbGQoRk5hbWUsIHBUeXBlKQ0KDQorICAgICAgICAgICAgaWYg UmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29k ZQ0KDQorICAgICAgICAgICAgcFR5cGUgPSBwRmllbGQuRmllbGRUeXBlDQoNCisgICAgICAgICAg ICBUbXAsIFJldHVybkNvZGUgPSBzZWxmLkdldEZpZWxkT2Zmc2V0KHBGaWVsZCwgQXJyYXlJZHgs DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBG aWVsZC5Jc0JpdEZpZWxkKQ0KDQorICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zm c2V0LCBUeXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgICAg ICBpZiBCaXRGaWVsZCBhbmQgcEZpZWxkLklzQml0RmllbGQgPT0gRmFsc2U6DQoNCisgICAgICAg ICAgICAgICAgT2Zmc2V0ID0gaW50KE9mZnNldCArIFRtcCAqIDgpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIE9mZnNldCA9IGludChPZmZzZXQgKyBUbXApDQoNCisN Cg0KKyAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9fR2V0RmllbGRXaWR0aChwRmllbGQpDQoNCisg ICAgICAgICAgICBTaXplID0gc2VsZi5fX0dldEZpZWxkU2l6ZShwRmllbGQsIEFycmF5SWR4LCBC aXRGaWVsZCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBTaXplLCBCaXRG aWVsZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBf X1JlZ2lzdGVyTmV3VHlwZShzZWxmLCBOZXcpOg0KDQorICAgICAgICBOZXcuTmV4dCA9IHNlbGYu X19EYXRhVHlwZUxpc3QNCg0KKyAgICAgICAgc2VsZi5fX0RhdGFUeXBlTGlzdCA9IE5ldw0KDQor ICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgIGRlZiBEYXRhVHlwZUFkZEZpZWxkKHNlbGYsIEZp ZWxkTmFtZSwgVHlwZU5hbWUsIEFycmF5TnVtLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisgICAg ICAgIHBGaWVsZFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFR5cGVOYW1lKQ0K DQorDQoNCisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAg ICAgIE1heERhdGFUeXBlU2l6ZSA9IHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUNCg0KKw0K DQorDQoNCisgICAgICAgIGlmIGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTjoNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVINCg0KKw0KDQorICAgICAgICBwVG1wID0gc2VsZi5fX05ld0RhdGFUeXBlLk1lbWJlcnMNCg0K KyAgICAgICAgd2hpbGUgcFRtcCAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcFRtcC5GaWVs ZE5hbWUgPT0gRmllbGROYW1lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoNCisgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0 DQoNCisNCg0KKyAgICAgICAgQWxpZ24gPSBtaW4oc2VsZi5fX1BhY2tBbGlnbiwgcEZpZWxkVHlw ZS5BbGlnbikNCg0KKyAgICAgICAgcE5ld0ZpZWxkID0gU1ZmckRhdGFGaWVsZCgpDQoNCisgICAg ICAgIGlmIHBOZXdGaWVsZCA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQorICAgICAgICBwTmV3RmllbGQu RmllbGROYW1lID0gRmllbGROYW1lDQoNCisgICAgICAgIHBOZXdGaWVsZC5GaWVsZFR5cGUgPSBw RmllbGRUeXBlDQoNCisgICAgICAgIHBOZXdGaWVsZC5BcnJheU51bSA9IEFycmF5TnVtDQoNCisg ICAgICAgIHBOZXdGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICBpZiBz ZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCg0KKyAgICAgICAgICAg IHBOZXdGaWVsZC5PZmZzZXQgPSBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0Rh dGFUeXBlLlRvdGFsU2l6ZSArIHNlbGYuX19BbGlnblN0dWZmKA0KDQorICAgICAgICAgICAgICAg IHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUsIEFsaWduKQ0KDQorDQoNCisgICAgICAgIGlm IHNlbGYuX19OZXdEYXRhVHlwZS5NZW1iZXJzID09IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxm Ll9fTmV3RGF0YVR5cGUuTWVtYmVycyA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0Zp ZWxkLk5leHQgPSBOb25lDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBwVG1wID0g c2VsZi5fX05ld0RhdGFUeXBlLk1lbWJlcnMNCg0KKyAgICAgICAgICAgIHdoaWxlIHBUbXAuTmV4 dCAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCg0KKyAgICAg ICAgICAgIHBUbXAuTmV4dCA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5l eHQgPSBOb25lDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLkFsaWduID0gbWlu KA0KDQorICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiwgbWF4KHBGaWVsZFR5cGUuQWxpZ24s IHNlbGYuX19OZXdEYXRhVHlwZS5BbGlnbikpDQoNCisNCg0KKyAgICAgICAgaWYgRmllbGRJblVu aW9uOg0KDQorICAgICAgICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwgcE5ld0ZpZWxkLkZpZWxk VHlwZS5Ub3RhbFNpemU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRv dGFsU2l6ZSA9IHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplDQoNCisgICAgICAgICAgICBw TmV3RmllbGQuT2Zmc2V0ID0gMA0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgTnVt ID0gQXJyYXlOdW0gaWYgQXJyYXlOdW0gIT0gMCBlbHNlIDENCg0KKyAgICAgICAgICAgIHNlbGYu X19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3RmllbGQuT2Zmc2V0ICsgKA0KDQorICAgICAg ICAgICAgICAgIHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplKSAqIE51bQ0KDQorDQoNCisg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisg ICAgZGVmIERhdGFUeXBlQWRkQml0RmllbGQoc2VsZiwgRmllbGROYW1lLCBUeXBlTmFtZSwgV2lk dGgsIEZpZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAgICAgICAgcEZpZWxkVHlwZSwgUmV0dXJuQ29k ZSA9IHNlbGYuR2V0RGF0YVR5cGUoVHlwZU5hbWUpDQoNCisgICAgICAgIGlmIFJldHVybkNvZGUg IT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAgICAgICAgICByZXR1 cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgIGlmIFdpZHRoID4gTUFYX0JJVF9XSURUSDoN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQklUX1dJRFRI X0VSUk9SDQoNCisNCg0KKyAgICAgICAgaWYgV2lkdGggPiAocEZpZWxkVHlwZS5Ub3RhbFNpemUp ICogODoNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQklU X1dJRFRIX0VSUk9SDQoNCisNCg0KKyAgICAgICAgaWYgKEZpZWxkTmFtZSAhPSBOb25lKSBhbmQg KGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQoNCisNCg0KKyAgICAg ICAgaWYgV2lkdGggPT0gMCBhbmQgRmllbGROYW1lICE9IE5vbmU6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQoNCisNCg0K KyAgICAgICAgcFRtcCA9IHNlbGYuX19OZXdEYXRhVHlwZS5NZW1iZXJzDQoNCisgICAgICAgIHdo aWxlIHBUbXAgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIEZpZWxkTmFtZSAhPSBOb25lIGFu ZCBwVG1wLkZpZWxkTmFtZSA9PSBGaWVsZE5hbWU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAgICAgIHBUbXAg PSBwVG1wLk5leHQNCg0KKw0KDQorICAgICAgICBBbGlnbiA9IG1pbihzZWxmLl9fUGFja0FsaWdu LCBwRmllbGRUeXBlLkFsaWduKQ0KDQorICAgICAgICBVcGRhdGVUb3RhbFNpemUgPSBGYWxzZQ0K DQorDQoNCisgICAgICAgIHBOZXdGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0KDQorICAgICAgICBp ZiBwTmV3RmllbGQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBNYXhEYXRhVHlw ZVNpemUgPSBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplDQoNCisNCg0KKyAgICAgICAgcE5l d0ZpZWxkLkZpZWxkTmFtZSA9IEZpZWxkTmFtZQ0KDQorICAgICAgICBwTmV3RmllbGQuRmllbGRU eXBlID0gcEZpZWxkVHlwZQ0KDQorICAgICAgICBwTmV3RmllbGQuSXNCaXRGaWVsZCA9IFRydWUN Cg0KKyAgICAgICAgcE5ld0ZpZWxkLkJpdFdpZHRoID0gV2lkdGgNCg0KKyAgICAgICAgcE5ld0Zp ZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICBwTmV3RmllbGQuQml0T2Zmc2V0ID0gMA0KDQor ICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gMA0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19O ZXdEYXRhVHlwZS5NZW1iZXJzID09IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fTmV3RGF0 YVR5cGUuTWVtYmVycyA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQg PSBOb25lDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBwVG1wID0gc2VsZi5fX05l d0RhdGFUeXBlLk1lbWJlcnMNCg0KKyAgICAgICAgICAgIHdoaWxlIHBUbXAuTmV4dCAhPSBOb25l Og0KDQorICAgICAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCg0KKyAgICAgICAgICAgIHBU bXAuTmV4dCA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBOb25l DQoNCisNCg0KKyAgICAgICAgaWYgRmllbGRJblVuaW9uOg0KDQorICAgICAgICAgICAgcE5ld0Zp ZWxkLk9mZnNldCA9IDANCg0KKyAgICAgICAgICAgIGlmIE1heERhdGFUeXBlU2l6ZSA8IHBOZXdG aWVsZC5GaWVsZFR5cGUuVG90YWxTaXplOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19OZXdE YXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZQ0KDQorICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSBiaXQgZmllbGRz IGNhbiBiZSBjb250YWluZWQgd2l0aGluIG9uZSBGaWVsZFR5cGUuDQoNCisgICAgICAgICAgICBj b25kMSA9IChwVG1wICE9IE5vbmUpIGFuZCAocFRtcC5Jc0JpdEZpZWxkKSBhbmQgKA0KDQorICAg ICAgICAgICAgICAgIHBUbXAuRmllbGRUeXBlLlR5cGVOYW1lID09IHBOZXdGaWVsZC5GaWVsZFR5 cGUuVHlwZU5hbWUpDQoNCisgICAgICAgICAgICBjb25kMiA9IChwVG1wICE9IE5vbmUpIGFuZCAo cFRtcC5CaXRPZmZzZXQgLSBwVG1wLk9mZnNldCAqIDggKw0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBUbXAuQml0V2lkdGggKyBwTmV3RmllbGQuQml0V2lkdGgg PD0NCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTmV3RmllbGQu RmllbGRUeXBlLlRvdGFsU2l6ZSAqIDgpDQoNCisgICAgICAgICAgICBpZiBjb25kMSBhbmQgY29u ZDI6DQoNCisgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IHBUbXAuQml0T2Zm c2V0ICsgcFRtcC5CaXRXaWR0aA0KDQorICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQg PSBwVG1wLk9mZnNldA0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgcE5ld0ZpZWxkLkJpdFdp ZHRoID09IDA6DQoNCisgICAgICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5CaXRXaWR0aCA9IHBO ZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplICogOCAtICgNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgIHBOZXdGaWVsZC5CaXRPZmZzZXQgLSBwVG1wLk9mZnNldCAqIDgpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5CaXRPZmZzZXQgPSBzZWxm Ll9fTmV3RGF0YVR5cGUuVG90YWxTaXplICogOA0KDQorICAgICAgICAgICAgICAgIFVwZGF0ZVRv dGFsU2l6ZSA9IFRydWUNCg0KKw0KDQorICAgICAgICBpZiBVcGRhdGVUb3RhbFNpemU6DQoNCisg ICAgICAgICAgICBpZiBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoN Cg0KKyAgICAgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBl LlRvdGFsU2l6ZQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBwTmV3 RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSArIHNlbGYuX19BbGln blN0dWZmKA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxT aXplLCBBbGlnbikNCg0KKyAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUg PSBwTmV3RmllbGQuT2Zmc2V0ICsgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUNCg0KKw0K DQorICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gPSBtaW4oDQoNCisgICAgICAgICAg ICBzZWxmLl9fUGFja0FsaWduLCBtYXgocEZpZWxkVHlwZS5BbGlnbiwgc2VsZi5fX05ld0RhdGFU eXBlLkFsaWduKSkNCg0KKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLkhhc0JpdEZpZWxkID0g VHJ1ZQ0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MN Cg0KKw0KDQorICAgIGRlZiBHZXREYXRhVHlwZShzZWxmLCBUeXBlTmFtZSk6DQoNCisgICAgICAg IGlmIFR5cGVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KDQorDQoNCisgICAgICAgIERhdGFUeXBl ID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KDQorICAgICAgICB3aGlsZSBEYXRhVHlwZSAhPSBOb25l Og0KDQorICAgICAgICAgICAgaWYgRGF0YVR5cGUuVHlwZU5hbWUgPT0gVHlwZU5hbWU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KDQorICAgICAgICAgICAgRGF0YVR5cGUgPSBEYXRhVHlwZS5OZXh0DQoNCisgICAg ICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisN Cg0KKyAgICBkZWYgRGF0YVR5cGVIYXNCaXRGaWVsZChzZWxmLCBUeXBlTmFtZSk6DQoNCisgICAg ICAgIGlmIFR5cGVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gRmFsc2UNCg0K Kw0KDQorICAgICAgICBwVHlwZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCg0KKyAgICAgICAgd2hp bGUgcFR5cGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBUeXBlLlR5cGVOYW1lID09IFR5 cGVOYW1lOg0KDQorICAgICAgICAgICAgICAgIGJyZWFrDQoNCisgICAgICAgICAgICBwVHlwZSA9 IHBUeXBlLk5leHQNCg0KKw0KDQorICAgICAgICBpZiBwVHlwZSA9PSBOb25lOg0KDQorICAgICAg ICAgICAgcmV0dXJuIEZhbHNlDQoNCisNCg0KKyAgICAgICAgcFRtcCA9IHBUeXBlLk1lbWJlcnMN Cg0KKyAgICAgICAgd2hpbGUgcFRtcCAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcFRtcC5J c0JpdEZpZWxkOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlDQoNCisgICAgICAgICAg ICBwVG1wID0gcFRtcC5OZXh0DQoNCisgICAgICAgIHJldHVybiBGYWxzZQ0KDQorDQoNCisgICAg ZGVmIER1bXAoc2VsZiwgRmlsZU5hbWUpOg0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICB3aXRoIG9wZW4oRmlsZU5hbWUsICd3JykgYXMgZjoNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCJQYWNrQWxpZ24gPSAiICsgc3RyKHNlbGYuX19QYWNrQWxpZ24pICsgJ1xuJykNCg0KKyAg ICAgICAgICAgICAgICBwTm9kZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCg0KKyAgICAgICAgICAg ICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCdzdHJ1Y3Qge30gOiBBbGlnbiA6IHt9ICBUb3RhbFNpemUgOiAnLmZvcm1hdChzdHIocE5vZGUu VHlwZU5hbWUpLCBzdHIocE5vZGUuQWxpZ24pKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgnJSN4XG4nJShwTm9kZS5Ub3RhbFNpemUpKQ0KDQorICAgICAgICAgICAgICAgICAgICAj IGYud3JpdGUoIiBzdHJ1Y3QgIiArIHN0cihwTm9kZS5UeXBlTmFtZSkgKyAiIDogIiArICIgQWxp Z24gIiArIHN0cihwTm9kZS5BbGlnbikpICsgIiBUb3RhbFNpemUgIiArIHN0cignJSN4JyVwTm9k ZS5Ub3RhbFNpemUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdzdHJ1Y3Qge30g XG4nLmZvcm1hdChzdHIocE5vZGUuVHlwZU5hbWUpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAg Rk5vZGUgPSBwTm9kZS5NZW1iZXJzDQoNCisgICAgICAgICAgICAgICAgICAgIHdoaWxlKEZOb2Rl ICE9IE5vbmUpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgRk5vZGUuQXJyYXlOdW0g PiAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ0ZpZWxkTmFtZSA6 IHt9ICwgT2Zmc2V0IDoge30sIEFycmF5TnVtIDoge30gLCBGaWVsZFR5cGVOYW1lIDoge30gLCBJ c0JpdEZpZWxkIDoge30gXG4gJy5mb3JtYXQoc3RyKEZOb2RlLkZpZWxkTmFtZSksIHN0cihGTm9k ZS5PZmZzZXQpLCBzdHIoRk5vZGUuQXJyYXlOdW0pLCBzdHIoRk5vZGUuRmllbGRUeXBlLlR5cGVO YW1lKSwgc3RyKEZOb2RlLklzQml0RmllbGQpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnRmllbGROYW1l IDoge30gLCBPZmZzZXQgOiB7fSwgRmllbGRUeXBlTmFtZSA6IHt9ICwgIElzQml0RmllbGQgOiB7 fSBcbiAnLmZvcm1hdChzdHIoRk5vZGUuRmllbGROYW1lKSwgc3RyKEZOb2RlLk9mZnNldCksIHN0 cihGTm9kZS5GaWVsZFR5cGUuVHlwZU5hbWUpLCBzdHIoRk5vZGUuSXNCaXRGaWVsZCkpKQ0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQoNCisgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJ1xuJykNCg0KKyAgICAgICAgICAgICAgICAgICAgcE5vZGUgPSBw Tm9kZS5OZXh0DQoNCisgICAgICAgICAgICBmLmNsb3NlKCkNCg0KKyAgICAgICAgZXhjZXB0IElP RXJyb3IgYXMgZToNCg0KKyAgICAgICAgICAgIHByaW50KCJlcnJvciIpDQoNCisgICAgICAgICAg ICBwYXNzDQoNCisNCg0KK2NsYXNzIFNWZnJEZWZhdWx0U3RvcmVOb2RlKG9iamVjdCk6DQoNCisN Cg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwNCg0KKyAgICAgICAgICAgICAgICAgT2JqQWRkcj1O b25lLA0KDQorICAgICAgICAgICAgICAgICBSZWZOYW1lPScnLA0KDQorICAgICAgICAgICAgICAg ICBEZWZhdWx0U3RvcmVOYW1lSWQ9MCwNCg0KKyAgICAgICAgICAgICAgICAgRGVmYXVsdElkPTAp Og0KDQorICAgICAgICBzZWxmLk9iakFkZHIgPSBPYmpBZGRyDQoNCisgICAgICAgIHNlbGYuUmVm TmFtZSA9IFJlZk5hbWUNCg0KKyAgICAgICAgc2VsZi5EZWZhdWx0U3RvcmVOYW1lSWQgPSBEZWZh dWx0U3RvcmVOYW1lSWQNCg0KKyAgICAgICAgc2VsZi5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCg0K KyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KDQorDQoNCisNCg0KK2NsYXNzIENWZnJEZWZhdWx0 U3RvcmUob2JqZWN0KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAg ICAgc2VsZi5fX0RlZmF1bHRTdG9yZUxpc3QgPSBOb25lDQoNCisNCg0KKyAgICBkZWYgUmVnaXN0 ZXJEZWZhdWx0U3RvcmUoc2VsZiwgT2JqQWRkcjogRUZJX0lGUl9ERUZBVUxUU1RPUkUsIFJlZk5h bWUsIERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElkKToNCg0KKyAgICAgICAgaWYgUmVmTmFt ZSA9PSAnJyBvciBSZWZOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBz ZWxmLl9fRGVmYXVsdFN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0K DQorICAgICAgICAgICAgaWYgcE5vZGUuUmVmTmFtZSA9PSBSZWZOYW1lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoNCisgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJE ZWZhdWx0U3RvcmVOb2RlKE9iakFkZHIsIFJlZk5hbWUsIERlZmF1bHRTdG9yZU5hbWVJZCwgRGVm YXVsdElkKQ0KDQorDQoNCisgICAgICAgIGlmIHBOb2RlID09IE5vbmU6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQoNCisN Cg0KKyAgICAgICAgcE5vZGUuTmV4dCA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQoNCisgICAg ICAgIHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0ID0gcE5vZGUNCg0KKw0KDQorICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBEZWZh dWx0SWRSZWdpc3RlcmVkKHNlbGYsIERlZmF1bHRJZCk6DQoNCisgICAgICAgIHBOb2RlID0gc2Vs Zi5fX0RlZmF1bHRTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGlmIHBOb2RlLkRlZmF1bHRJZCA9PSBEZWZhdWx0SWQ6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIFRydWUNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0K DQorDQoNCisgICAgICAgIHJldHVybiBGYWxzZQ0KDQorDQoNCisgICAgZGVmIFJlUmVnaXN0ZXJE ZWZhdWx0U3RvcmVCeUlkKHNlbGYsIERlZmF1bHRJZCwgUmVmTmFtZSwgRGVmYXVsdFN0b3JlTmFt ZUlkKToNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQoN CisgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5E ZWZhdWx0SWQgPT0gRGVmYXVsdElkOg0KDQorICAgICAgICAgICAgICAgIGJyZWFrDQoNCisgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBpZiBwTm9kZSA9PSBO b25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9VTkRFRklORUQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLkRl ZmF1bHRTdG9yZU5hbWVJZCA9PSBFRklfU1RSSU5HX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAg ICAgICAgcE5vZGUuRGVmYXVsdFN0b3JlTmFtZUlkID09IERlZmF1bHRTdG9yZU5hbWVJZA0KDQor ICAgICAgICAgICAgICAgIHBOb2RlLlJlZk5hbWUgPSBSZWZOYW1lDQoNCisgICAgICAgICAgICAg ICAgaWYgcE5vZGUuT2JqQWRkciAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBwTm9k ZS5PYmpBZGRyLkRlZmF1bHROYW1lID0gRGVmYXVsdFN0b3JlTmFtZUlkDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fUkVERUZJTkVEDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHBOb2RlLCBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIEdldERlZmF1bHRJZChz ZWxmLCBSZWZOYW1lKToNCg0KKyAgICAgICAgcFRtcCA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0 DQoNCisgICAgICAgIHdoaWxlKHBUbXAgIT0gTm9uZSk6DQoNCisgICAgICAgICAgICBpZiBwVG1w LlJlZk5hbWUgPT0gUmVmTmFtZToNCg0KKyAgICAgICAgICAgICAgICBEZWZhdWx0SWQgPSBwVG1w LkRlZmF1bHRJZA0KDQorICAgICAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SWQsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0 DQoNCisgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJ TkVEDQoNCisNCg0KKyAgICBkZWYgQnVmZmVyVmFyU3RvcmVBbHRDb25maWdBZGQoc2VsZiwgRGVm YXVsdElkLCBCYXNlSW5mbywgVmFyU3RvcmVOYW1lLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsIFR5cGUsIFZhbHVlKToNCg0KKyAgICAgICAgaWYg VmFyU3RvcmVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0RlZmF1 bHRTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIGlmIHBOb2RlLkRlZmF1bHRJZCA9PSBEZWZhdWx0SWQ6DQoNCisgICAgICAgICAgICAgICAg YnJlYWsNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorICAgICAgICBpZiBw Tm9kZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTkRFRklORUQNCg0KKyAgICAgICAgIyBwTm9kZS5EZWZhdWx0SWQgc3ByaW50ZiAoTmV3 QWx0Q2ZnLCAiJTA0eCIsIHBOb2RlLT5tRGVmYXVsdElkKQ0KDQorICAgICAgICBnQ1ZmckJ1ZmZl ckNvbmZpZy5PcGVuKCkNCg0KKyAgICAgICAgaWYgZ0NWZnJCdWZmZXJDb25maWcuU2VsZWN0KFZh clN0b3JlTmFtZSwgVmFyU3RvcmVHdWlkKSA9PSAwOg0KDQorICAgICAgICAgICAgUmV0dXJudmFs dWUgPSBnQ1ZmckJ1ZmZlckNvbmZpZy5Xcml0ZSgnYScsIFZhclN0b3JlTmFtZSwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVHdWlk LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Tm9kZS5EZWZhdWx0SWQsIFR5cGUsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0LA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlSW5mby5WYXJUb3Rh bFNpemUsIFZhbHVlKQ0KDQorICAgICAgICAgICAgaWYgUmV0dXJudmFsdWUgIT0gMDoNCg0KKyAg ICAgICAgICAgICAgICBnQ1ZmckJ1ZmZlckNvbmZpZy5DbG9zZSgpDQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUoUmV0dXJudmFsdWUpDQoNCisgICAgICAgIGdDVmZyQnVm ZmVyQ29uZmlnLkNsb3NlKCkNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTDQoNCisNCg0KKw0KDQorDQoNCitjbGFzcyBFRklfVkZSX1ZBUlNUT1JFX1RZ UEUoRW51bSk6DQoNCisgICAgRUZJX1ZGUl9WQVJTVE9SRV9JTlZBTElEID0gMA0KDQorICAgIEVG SV9WRlJfVkFSU1RPUkVfQlVGRkVSID0gMQ0KDQorICAgIEVGSV9WRlJfVkFSU1RPUkVfRUZJID0g Mg0KDQorICAgIEVGSV9WRlJfVkFSU1RPUkVfTkFNRSA9IDMNCg0KKyAgICBFRklfVkZSX1ZBUlNU T1JFX0JVRkZFUl9CSVRTID0gNA0KDQorDQoNCisNCg0KK2NsYXNzIEVmaVZhcigpOg0KDQorDQoN CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFZhck5hbWU9MCwgVmFyU2l6ZT0wKToNCg0KKyAgICAg ICAgc2VsZi5FZmlWYXJOYW1lID0gVmFyTmFtZQ0KDQorICAgICAgICBzZWxmLkVmaVZhclNpemUg PSBWYXJTaXplDQoNCisNCg0KKw0KDQorREVGQVVMVF9OQU1FX1RBQkxFX0lURU1TID0gMTAyNA0K DQorDQoNCisNCg0KK2NsYXNzIFNWZnJWYXJTdG9yYWdlTm9kZSgpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIFZhclN0b3JlTmFtZT0nJywNCg0K KyAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZD0wLA0KDQorICAgICAgICAgICAgICAgICBHdWlk PU5vbmUsDQoNCisgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXM9MCwNCg0KKyAgICAgICAgICAg ICAgICAgRmxhZz1UcnVlLA0KDQorICAgICAgICAgICAgICAgICBFZmlWYWx1ZT1Ob25lLA0KDQor ICAgICAgICAgICAgICAgICBEYXRhVHlwZT1Ob25lLA0KDQorICAgICAgICAgICAgICAgICBCaXRz VmFyc3RvcmU9RmFsc2UpOg0KDQorDQoNCisgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQNCg0KKyAg ICAgICAgc2VsZi5WYXJTdG9yZU5hbWUgPSBWYXJTdG9yZU5hbWUNCg0KKyAgICAgICAgc2VsZi5W YXJTdG9yZUlkID0gVmFyU3RvcmVJZA0KDQorICAgICAgICBzZWxmLkFzc2lnbmVkRmxhZyA9IEZs YWcNCg0KKyAgICAgICAgc2VsZi5BdHRyaWJ1dGVzID0gQXR0cmlidXRlcw0KDQorICAgICAgICBz ZWxmLk5leHQgPSBOb25lDQoNCisgICAgICAgIHNlbGYuRWZpVmFyID0gRWZpVmFsdWUNCg0KKyAg ICAgICAgc2VsZi5EYXRhVHlwZSA9IERhdGFUeXBlDQoNCisgICAgICAgIHNlbGYuTmFtZVNwYWNl ID0gW10NCg0KKw0KDQorICAgICAgICBpZiBFZmlWYWx1ZSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgc2VsZi5WYXJzdG9yZVR5cGUgPSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJT VE9SRV9FRkkNCg0KKyAgICAgICAgZWxpZiBEYXRhVHlwZSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgaWYgQml0c1ZhcnN0b3JlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBl ID0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5WYXJzdG9yZVR5cGUg PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVINCg0KKyAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBlID0gRUZJX1ZGUl9WQVJT VE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfTkFNRQ0KDQorDQoNCitjbGFzcyBTQ29uZmlnSXRl bSgpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAg IE5hbWU9Tm9uZSwNCg0KKyAgICAgICAgICAgICAgICAgR3VpZD1Ob25lLA0KDQorICAgICAgICAg ICAgICAgICBJZD1Ob25lLA0KDQorICAgICAgICAgICAgICAgICBUeXBlPU5vbmUsDQoNCisgICAg ICAgICAgICAgICAgIE9mZnNldD1Ob25lLA0KDQorICAgICAgICAgICAgICAgICBXaWR0aD1Ob25l LA0KDQorICAgICAgICAgICAgICAgICBWYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgc2VsZi5OYW1l ID0gTmFtZSAgIyB2YXJzdG9yZSBuYW1lDQoNCisgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQgICMg dmFyc3RvcmUgZ3VpZCwgdmFyc3RvcmUgbmFtZSArIGd1aWQgZGVzaWRlIG9uZSB2YXJzdG9yZQ0K DQorICAgICAgICBzZWxmLklkID0gSWQgICMgZGVmYXVsdCBJRA0KDQorICAgICAgICBpZiBUeXBl ICE9IE5vbmU6DQoNCisgICAgICAgICAgICAjIGxpc3Qgb2YgT2Zmc2V0L1ZhbHVlIGluIHRoZSB2 YXJzdG9yZQ0KDQorICAgICAgICAgICAgc2VsZi5JbmZvU3RyTGlzdCA9IFNDb25maWdJbmZvKFR5 cGUsIE9mZnNldCwgV2lkdGgsIFZhbHVlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgc2VsZi5JbmZvU3RyTGlzdCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0K DQorDQoNCisNCg0KK2NsYXNzIFNDb25maWdJbmZvKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0 X18oc2VsZiwgVHlwZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWU6IEVGSV9JRlJfVFlQRV9WQUxVRSk6 DQoNCisgICAgICAgIHNlbGYuVHlwZSA9IFR5cGUNCg0KKyAgICAgICAgc2VsZi5PZmZzZXQgPSBP ZmZzZXQNCg0KKyAgICAgICAgc2VsZi5XaWR0aCA9IFdpZHRoDQoNCisgICAgICAgIHNlbGYuTmV4 dCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KK2NsYXNzIENW ZnJCdWZmZXJDb25maWcob2JqZWN0KToNCg0KKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQ0K DQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fSXRlbUxp c3RIZWFkID0gTm9uZSAgIyBTQ29uZmlnSXRlbQ0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RU YWlsID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBOb25lDQoNCisNCg0K KyAgICBkZWYgR2V0VmFySXRlbUxpc3Qoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f SXRlbUxpc3RIZWFkDQoNCisNCg0KKyAgICBAYWJzdHJhY3RtZXRob2QNCg0KKyAgICBkZWYgT3Bl bihzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0gc2VsZi5fX0l0ZW1MaXN0 SGVhZA0KDQorDQoNCisgICAgQGFic3RyYWN0bWV0aG9kDQoNCisgICAgZGVmIENsb3NlKHNlbGYp Og0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBOb25lDQoNCisNCg0KKyAgICBAYWJz dHJhY3RtZXRob2QNCg0KKyAgICBkZWYgU2VsZWN0KHNlbGYsIE5hbWUsIEd1aWQsIElkPU5vbmUp Og0KDQorICAgICAgICBpZiBOYW1lID09IE5vbmUgb3IgR3VpZCA9PSBOb25lOg0KDQorICAgICAg ICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0gc2VsZi5fX0l0ZW1MaXN0SGVhZA0KDQorICAgICAg ICAgICAgcmV0dXJuIDANCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHAgPSBzZWxm Ll9fSXRlbUxpc3RIZWFkDQoNCisgICAgICAgICAgICB3aGlsZSBwICE9IE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgaWYgcC5OYW1lICE9IE5hbWUgb3IgcC5HdWlkLl9fY21wX18oR3VpZCkgPT0g RmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCg0KKyAgICAgICAgICAg ICAgICAgICAgY29udGludWUNCg0KKyAgICAgICAgICAgICAgICBpZiBJZCAhPSBOb25lOg0KDQor ICAgICAgICAgICAgICAgICAgICBpZiBwLklkID09IE5vbmUgb3IgcC5JZCAhPSBJZDoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQoNCisgICAgICAgICAgICAgICAgZWxpZiBwLklkICE9IE5vbmU6DQoNCisg ICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCg0KKyAgICAgICAgICAgICAgICAgICAgY29u dGludWUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwDQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIDANCg0KKyAgICAgICAgcmV0dXJuIDENCg0KKw0KDQorICAgIEBh YnN0cmFjdG1ldGhvZA0KDQorICAgIGRlZiBSZWdpc3RlcihzZWxmLCBOYW1lLCBHdWlkLCBJZD1O b25lKToNCg0KKyAgICAgICAgaWYgc2VsZi5TZWxlY3QoTmFtZSwgR3VpZCkgPT0gMDoNCg0KKyAg ICAgICAgICAgIHJldHVybiAxDQoNCisgICAgICAgIHBOZXcgPSBTQ29uZmlnSXRlbShOYW1lLCBH dWlkLCBJZCkNCg0KKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0 dXJuIDINCg0KKyAgICAgICAgaWYgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9PSBOb25lOg0KDQorICAg ICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9IHBOZXcNCg0KKyAgICAgICAgICAgIHNlbGYu X19JdGVtTGlzdFRhaWwgPSBwTmV3DQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBz ZWxmLl9fSXRlbUxpc3RUYWlsLk5leHQgPSBwTmV3DQoNCisgICAgICAgICAgICBzZWxmLl9fSXRl bUxpc3RUYWlsID0gcE5ldw0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwTmV3DQoN CisgICAgICAgIHJldHVybiAwDQoNCisNCg0KKyAgICBAYWJzdHJhY3RtZXRob2QNCg0KKyAgICBk ZWYgV3JpdGUoc2VsZiwgTW9kZSwgTmFtZSwgR3VpZCwgSWQsIFR5cGUsIE9mZnNldCwgV2lkdGgs DQoNCisgICAgICAgICAgICAgIFZhbHVlOiBFRklfSUZSX1RZUEVfVkFMVUUpOg0KDQorICAgICAg ICBSZXQgPSBzZWxmLlNlbGVjdChOYW1lLCBHdWlkKQ0KDQorICAgICAgICBpZiBSZXQgIT0gMDoN Cg0KKyAgICAgICAgICAgIHJldHVybiBSZXQNCg0KKw0KDQorICAgICAgICBpZiBNb2RlID09ICdh JzogICMgYWRkDQoNCisgICAgICAgICAgICBpZiBzZWxmLlNlbGVjdChOYW1lLCBHdWlkLCBJZCkg IT0gMDoNCg0KKyAgICAgICAgICAgICAgICBwSXRlbSA9IFNDb25maWdJdGVtKE5hbWUsIEd1aWQs IElkLCBUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSkNCg0KKyAgICAgICAgICAgICAgICBpZiBw SXRlbSA9PSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMg0KDQorDQoNCisg ICAgICAgICAgICAgICAgaWYgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9PSBOb25lOg0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RIZWFkID0gcEl0ZW0NCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0VGFpbCA9IHBJdGVtDQoNCisgICAgICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0VGFpbC5OZXh0ID0g cEl0ZW0NCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0VGFpbCA9IHBJdGVt DQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwSXRlbQ0KDQor DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICMgdHJhbnZlcnNlIHRo ZSBsaXN0IHRvIGZpbmQgb3V0IGlmIHRoZXJlJ3MgYWxyZWFkeSB0aGUgdmFsdWUgZm9yIHRoZSBz YW1lIG9mZnNldA0KDQorICAgICAgICAgICAgICAgIHBJbmZvID0gc2VsZi5fX0l0ZW1MaXN0UG9z LkluZm9TdHJMaXN0DQoNCisgICAgICAgICAgICAgICAgd2hpbGUgcEluZm8gIT0gTm9uZToNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgcEluZm8uT2Zmc2V0ID09IE9mZnNldDoNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAwDQoNCisgICAgICAgICAgICAgICAgICAgIHBJbmZv ID0gcEluZm8uTmV4dA0KDQorDQoNCisgICAgICAgICAgICAgICAgcEluZm8gPSBTQ29uZmlnSW5m byhUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSkNCg0KKyAgICAgICAgICAgICAgICBpZiBwSW5m byA9PSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMg0KDQorDQoNCisgICAg ICAgICAgICAgICAgcEluZm8uTmV4dCA9IHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdA0K DQorICAgICAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdCA9IHBJbmZv DQoNCisNCg0KKyAgICAgICAgZWxpZiBNb2RlID09ICdkJzogICMgZGVsZXRlDQoNCisgICAgICAg ICAgICBpZiBzZWxmLl9fSXRlbUxpc3RIZWFkID09IHNlbGYuX19JdGVtTGlzdFBvczoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RIZWFkID0gc2VsZi5fX0l0ZW1MaXN0UG9zLk5l eHQNCg0KKw0KDQorICAgICAgICAgICAgcEl0ZW0gPSBzZWxmLl9fSXRlbUxpc3RIZWFkDQoNCisg ICAgICAgICAgICB3aGlsZSBwSXRlbS5OZXh0ICE9IHNlbGYuX19JdGVtTGlzdFBvczoNCg0KKyAg ICAgICAgICAgICAgICBwSXRlbSA9IHBJdGVtLk5leHQNCg0KKyAgICAgICAgICAgIHBJdGVtLk5l eHQgPSBzZWxmLl9fSXRlbUxpc3RQb3MuTmV4dA0KDQorDQoNCisgICAgICAgICAgICBpZiBzZWxm Ll9fSXRlbUxpc3RUYWlsID09IHNlbGYuX19JdGVtTGlzdFBvczoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fSXRlbUxpc3RUYWlsID0gcEl0ZW0NCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5f X0l0ZW1MaXN0UG9zID0gcEl0ZW0uTmV4dA0KDQorDQoNCisgICAgICAgIGVsaWYgTW9kZSA9PSAn aSc6ICAjIHNldCBpbmZvDQoNCisgICAgICAgICAgICBpZiBJZCAhPSBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JZCA9IElkDQoNCisgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICByZXR1cm4gMQ0KDQorICAgICAgICByZXR1cm4gMA0KDQorDQoNCitnQ1Zm ckJ1ZmZlckNvbmZpZyA9IENWZnJCdWZmZXJDb25maWcoKQ0KDQorDQoNCitjbGFzcyBFRklfVkFS U1RPUkVfSU5GTyhTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRz XyA9IFsNCg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAo J0luZm8nLCBWYXJTdG9yZUluZm9Ob2RlKSwNCg0KKyAgICAgICAgKCdWYXJUeXBlJywgY191aW50 OCksDQoNCisgICAgICAgICgnVmFyVG90YWxTaXplJywgY191aW50MzIpLA0KDQorICAgICAgICAo J0lzQml0VmFyJywgY19ib29sKSwNCg0KKyAgICBdDQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZiwNCg0KKyAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZD1FRklfVkFSU1RPUkVfSURfSU5W QUxJRCwNCg0KKyAgICAgICAgICAgICAgICAgVmFyTmFtZT1FRklfU1RSSU5HX0lEX0lOVkFMSUQs DQoNCisgICAgICAgICAgICAgICAgIFZhck9mZnNldD1FRklfVkFST0ZGU0VUX0lOVkFMSUQsDQoN CisgICAgICAgICAgICAgICAgIFZhclR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KDQorICAgICAg ICAgICAgICAgICBWYXJUb3RhbFNpemU9MCwNCg0KKyAgICAgICAgICAgICAgICAgSXNCaXRWYXI9 RmFsc2UpOg0KDQorDQoNCisgICAgICAgIHNlbGYuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCg0K KyAgICAgICAgc2VsZi5JbmZvLlZhck5hbWUgPSBWYXJOYW1lDQoNCisgICAgICAgIHNlbGYuSW5m by5WYXJPZmZzZXQgPSBWYXJPZmZzZXQNCg0KKyAgICAgICAgc2VsZi5WYXJUb3RhbFNpemUgPSBW YXJUb3RhbFNpemUNCg0KKyAgICAgICAgc2VsZi5Jc0JpdFZhciA9IElzQml0VmFyDQoNCisgICAg ICAgIHNlbGYuVmFyVHlwZSA9IFZhclR5cGUNCg0KKw0KDQorDQoNCitjbGFzcyBCdWZmZXJWYXJT dG9yZUZpZWxkSW5mb05vZGUoKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBCYXNl SW5mbzogRUZJX1ZBUlNUT1JFX0lORk8pOg0KDQorDQoNCisgICAgICAgIHNlbGYuVmFyU3RvcmVJ bmZvID0gRUZJX1ZBUlNUT1JFX0lORk8oKQ0KDQorICAgICAgICBzZWxmLlZhclN0b3JlSW5mby5W YXJUeXBlID0gQmFzZUluZm8uVmFyVHlwZQ0KDQorICAgICAgICBzZWxmLlZhclN0b3JlSW5mby5W YXJUb3RhbFNpemUgPSBCYXNlSW5mby5WYXJUb3RhbFNpemUNCg0KKyAgICAgICAgc2VsZi5WYXJT dG9yZUluZm8uSW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KDQorICAg ICAgICBzZWxmLlZhclN0b3JlSW5mby5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJZA0K DQorICAgICAgICBzZWxmLk5leHQgPSBOb25lDQoNCisNCg0KKw0KDQorY2xhc3MgQ1ZmckRhdGFT dG9yYWdlKG9iamVjdCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAg ICAgIHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QgPSBOb25lICAjIFNWZnJWYXJTdG9yYWdlTm9k ZQ0KDQorICAgICAgICBzZWxmLl9fRWZpVmFyU3RvcmVMaXN0ID0gTm9uZQ0KDQorICAgICAgICBz ZWxmLl9fTmFtZVZhclN0b3JlTGlzdCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5fX0N1cnJWYXJT dG9yYWdlTm9kZSA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5fX05ld1ZhclN0b3JhZ2VOb2RlID0g Tm9uZQ0KDQorICAgICAgICBzZWxmLl9fQnVmZmVyRmllbGRJbmZvTGlzdEhlYWQgPSBOb25lDQoN CisgICAgICAgIHNlbGYuX19tQnVmZmVyRmllbGRJbmZvTGlzdFRhaWwgPSBOb25lDQoNCisgICAg ICAgIHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcCA9IFtdDQoNCisgICAgICAgIGZvciBpIGlu IHJhbmdlKDAsIEVGSV9GUkVFX1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFKToNCg0KKyAgICAgICAg ICAgIHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcC5hcHBlbmQoMCkNCg0KKyAgICAgICAgI1F1 ZXN0aW9uIElEMCBpcyByZXNlcnZlZA0KDQorICAgICAgICBzZWxmLl9fRnJlZVZhclN0b3JlSWRC aXRNYXBbMF0gPSAweDgwMDAwMDAwDQoNCisNCg0KKyAgICBkZWYgR2V0QnVmZmVyVmFyU3RvcmVM aXN0KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdA0K DQorDQoNCisgICAgZGVmIF9fQ2hlY2tHdWlkRmllbGQoc2VsZiwgcE5vZGUsIFN0b3JlR3VpZCwg SGFzRm91bmRPbmUsIFJldHVybkNvZGUpOg0KDQorICAgICAgICBpZiBTdG9yZUd1aWQgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgICPjgIBJZiBoYXMgZ3VpZCBpbmZvLCBjb21wYXJlIHRoZSBndWlk IGZpbGVkLg0KDQorICAgICAgICAgICAgaWYgcE5vZGUuR3VpZC5fX2NtcF9fKFN0b3JlR3VpZCk6 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQoN CisgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIFJldHVybkNvZGUsIEhhc0Zv dW5kT25lDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAj44CAbm90IGhhcyBHdWlk IGZpZWxkLCBjaGVjayB3aGV0aGVyIHRoaXMgbmFtZSBpcyB0aGUgb25seSBvbmUuDQoNCisgICAg ICAgICAgICBpZiBIYXNGb3VuZE9uZToNCg0KKyAgICAgICAgICAgICAgICAjICBUaGUgbmFtZSBo YXMgY29uZmxpY3QsIHJldHVybiBuYW1lIHJlZGVmaW5lZC4NCg0KKyAgICAgICAgICAgICAgICBS ZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX05BTUVfUkVERUZJ TkVEX0VSUk9SDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIFJldHVybkNvZGUsIEhh c0ZvdW5kT25lDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUg PSBwTm9kZQ0KDQorICAgICAgICAgICAgSGFzRm91bmRPbmUgPSBUcnVlDQoNCisgICAgICAgIHJl dHVybiBGYWxzZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCg0KKw0KDQorICAgIGRlZiBfX0dl dFZhclN0b3JlQnlEYXRhVHlwZShzZWxmLCBEYXRhVHlwZU5hbWUsIFZhckd1aWQpOg0KDQorICAg ICAgICBNYXRjaE5vZGUgPSBOb25lDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0J1ZmZlclZh clN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgaWYgcE5vZGUuRGF0YVR5cGUuVHlwZU5hbWUgIT0gRGF0YVR5cGVOYW1lOg0KDQorICAgICAg ICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorICAgICAgICAgICAgICAgIGNvbnRpbnVl DQoNCisgICAgICAgICAgICBpZiBWYXJHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAg aWYgcE5vZGUuR3VpZC5fX2NtcF9fKFZhckd1aWQpOg0KDQorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcE5vZGUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIGlmIE1hdGNoTm9kZSA9PSBOb25lOg0KDQor ICAgICAgICAgICAgICAgICAgICBNYXRjaE5vZGUgPSBwTm9kZQ0KDQorICAgICAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICMgTW9yZSB0aGFuIG9uZSB2YXJzdG9yZXMg cmVmZXJyZWQgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmVzDQoNCisgICAgICAgICAgICAgICAgICAg IHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVfREFUQVRZUEVf UkVERUZJTkVEX0VSUk9SDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0K DQorICAgICAgICBpZiBNYXRjaE5vZGUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBN YXRjaE5vZGUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCg0KKw0KDQorICAg ICAgICByZXR1cm4gTWF0Y2hOb2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0K DQorDQoNCisgICAgIiIiDQoNCisgICAgICAgQmFzZSBvbiB0aGUgaW5wdXQgc3RvcmUgbmFtZSBh bmQgZ3VpZCB0byBmaW5kIHRoZSB2YXJzdG9yZSBpZC4NCg0KKyAgICAgICBJZiBib3RoIG5hbWUg YW5kIGd1aWQgYXJlIGlucHV0ZWQsIGJhc2Ugb24gdGhlIG5hbWUgYW5kIGd1aWQgdG8NCg0KKyAg ICAgICBmb3VuZCB0aGUgdmFyc3RvcmUuIElmIG9ubHkgbmFtZSBpbnB1dGVkLCBiYXNlIG9uIHRo ZSBuYW1lIHRvDQoNCisgICAgICAgZm91bmQgdGhlIHZhcnN0b3JlIGFuZCBnbyBvbiB0byBjaGVj ayB3aGV0aGVyIG1vcmUgdGhhbiBvbmUgdmFyc3RvcmUNCg0KKyAgICAgICBoYXMgdGhlIHNhbWUg bmFtZS4gSWYgb25seSBoYXMgZm91bmQgb25lIHZhcnN0b3JlLCByZXR1cm4gdGhpcw0KDQorICAg ICAgIHZhcnN0b3JlOyBpZiBtb3JlIHRoYW4gb25lIHZhcnN0b3JlIGhhcyBzYW1lIG5hbWUsIHJl dHVybiB2YXJzdG9yZQ0KDQorICAgICAgIG5hbWUgcmVkZWZpbmVkIGVycm9yLiBJZiBubyB2YXJz dG9yZSBmb3VuZCBieSB2YXJzdG9yZSBuYW1lLCBjYWxsDQoNCisgICAgICAgZnVuY3Rpb24gR2V0 VmFyU3RvcmVCeURhdGFUeXBlIGFuZCB1c2UgaW5wdXRlZCB2YXJzdG9yZSBuYW1lIGFzDQoNCisg ICAgICAgZGF0YSB0eXBlIG5hbWUgdG8gc2VhcmNoLg0KDQorICAgICAgICIiIg0KDQorDQoNCisg ICAgZGVmIEdldFZhclN0b3JlSWQoc2VsZiwgU3RvcmVOYW1lLCBTdG9yZUd1aWQ9Tm9uZSk6DQoN CisNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IE5vbmUNCg0KKyAgICAgICAgSGFzRm91bmRPbmUg PSBGYWxzZQ0KDQorICAgICAgICBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlID0gTm9uZQ0KDQor DQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KDQorICAgICAg ICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVO YW1lID09IFN0b3JlTmFtZToNCg0KKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNvZGUs IEhhc0ZvdW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KDQorICAgICAgICAgICAgICAg ICAgICBwTm9kZSwgU3RvcmVHdWlkLCBIYXNGb3VuZE9uZSwgUmV0dXJuQ29kZSkNCg0KKyAgICAg ICAgICAgICAgICBpZiBSZXN1bHQ6DQoNCisgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlSWQg PSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCg0KKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUNCg0KKyAgICAgICAgICAgIHBOb2Rl ID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0VmaVZhclN0b3Jl TGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYg cE5vZGUuVmFyU3RvcmVOYW1lID09IFN0b3JlTmFtZToNCg0KKyAgICAgICAgICAgICAgICBSZXN1 bHQsIFJldHVybkNvZGUsIEhhc0ZvdW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KDQor ICAgICAgICAgICAgICAgICAgICBwTm9kZSwgU3RvcmVHdWlkLCBIYXNGb3VuZE9uZSwgUmV0dXJu Q29kZSkNCg0KKyAgICAgICAgICAgICAgICBpZiBSZXN1bHQ6DQoNCisgICAgICAgICAgICAgICAg ICAgIFZhclN0b3JlSWQgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCg0K KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUNCg0KKyAg ICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2Vs Zi5fX05hbWVWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlTmFtZSA9PSBTdG9yZU5hbWU6DQoNCisgICAg ICAgICAgICAgICAgUmVzdWx0LCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZSA9IHNlbGYuX19DaGVj a0d1aWRGaWVsZCgNCg0KKyAgICAgICAgICAgICAgICAgICAgcE5vZGUsIFN0b3JlR3VpZCwgSGFz Rm91bmRPbmUsIFJldHVybkNvZGUpDQoNCisgICAgICAgICAgICAgICAgaWYgUmVzdWx0Og0KDQor ICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9k ZS5WYXJTdG9yZUlkDQoNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBS ZXR1cm5Db2RlDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAg ICAgICBpZiBIYXNGb3VuZE9uZToNCg0KKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLl9f Q3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJT dG9yZUlkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgICAg IFZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KDQorICAgICAgICBwTm9kZSwg UmV0dXJuQ29kZSA9IHNlbGYuX19HZXRWYXJTdG9yZUJ5RGF0YVR5cGUoU3RvcmVOYW1lLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3RvcmVHdWlkKSAgIw0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQoNCisgICAgICAgICAgICBWYXJT dG9yZUlkID0gcE5vZGUuVmFyU3RvcmVJZA0KDQorDQoNCisgICAgICAgIHJldHVybiBWYXJTdG9y ZUlkLCBSZXR1cm5Db2RlDQoNCisNCg0KKyAgICBkZWYgX19HZXRGcmVlVmFyU3RvcmVJZChzZWxm LCBWYXJUeXBlKToNCg0KKw0KDQorICAgICAgICBJbmRleCA9IDANCg0KKyAgICAgICAgZm9yIGkg aW4gcmFuZ2UoMCwgRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkUpOg0KDQorICAgICAg ICAgICAgaWYgc2VsZi5fX0ZyZWVWYXJTdG9yZUlkQml0TWFwW2ldICE9IDB4RkZGRkZGRkY6DQoN CisgICAgICAgICAgICAgICAgSW5kZXggPSBpDQoNCisgICAgICAgICAgICAgICAgYnJlYWsNCg0K KyAgICAgICAgaWYgSW5kZXggPT0gRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkU6DQoN CisgICAgICAgICAgICByZXR1cm4gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAg ICAgICBPZmZzZXQgPSAwDQoNCisgICAgICAgIE1hc2sgPSAweDgwMDAwMDAwDQoNCisgICAgICAg IHdoaWxlIE1hc2sgIT0gMDoNCg0KKyAgICAgICAgICAgIGlmIChzZWxmLl9fRnJlZVZhclN0b3Jl SWRCaXRNYXBbSW5kZXhdICYgTWFzaykgPT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9f RnJlZVZhclN0b3JlSWRCaXRNYXBbSW5kZXhdIHw9IE1hc2sNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gKEluZGV4IDw8IEVGSV9CSVRTX1NISUZUX1BFUl9VSU5UMzIpICsgT2Zmc2V0DQoNCisg ICAgICAgICAgICBNYXNrID4+PSAxDQoNCisgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KDQorICAg ICAgICByZXR1cm4gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBfX0No ZWNrVmFyU3RvcmVJZEZyZWUoc2VsZiwgVmFyU3RvcmVJZCk6DQoNCisNCg0KKyAgICAgICAgSW5k ZXggPSBpbnQoVmFyU3RvcmVJZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQoNCisgICAgICAgIE9m ZnNldCA9IFZhclN0b3JlSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQoNCisgICAgICAgIHJldHVy biAoc2VsZi5fX0ZyZWVWYXJTdG9yZUlkQml0TWFwW0luZGV4XSAmDQoNCisgICAgICAgICAgICAg ICAgKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KSkgPT0gMA0KDQorDQoNCisgICAgZGVmIF9fTWFya1Zh clN0b3JlSWRVc2VkKHNlbGYsIFZhclN0b3JlSWQpOg0KDQorDQoNCisgICAgICAgIEluZGV4ID0g aW50KFZhclN0b3JlSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0KDQorICAgICAgICBPZmZzZXQg PSBWYXJTdG9yZUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KDQorICAgICAgICBzZWxmLl9fRnJl ZVZhclN0b3JlSWRCaXRNYXBbSW5kZXhdIHw9ICgweDgwMDAwMDAwID4+IE9mZnNldCkNCg0KKw0K DQorICAgIGRlZiBEZWNsYXJlQnVmZmVyVmFyU3RvcmUoc2VsZiwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0b3JlTmFtZSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEd1aWQsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlwZURCLA0K DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZU5hbWUsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUlkLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSXNCaXRWYXJTdG9yZSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEF0dHI9MCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWc9VHJ1ZSk6DQoN CisNCg0KKyAgICAgICAgaWYgU3RvcmVOYW1lID09IE5vbmUgb3IgR3VpZCA9PSBOb25lIG9yIERh dGFUeXBlREIgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fRkFUQUxfRVJST1INCg0KKyAgICAgICAgXywgUmV0dXJuQ29kZSA9IHNlbGYuR2V0 VmFyU3RvcmVJZChTdG9yZU5hbWUsIEd1aWQpDQoNCisNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29k ZSA9PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoNCisNCg0KKyAgICAgICAg RGF0YVR5cGUsIFJldHVybkNvZGUgPSBEYXRhVHlwZURCLkdldERhdGFUeXBlKFR5cGVOYW1lKQ0K DQorDQoNCisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAg ICAgIGlmIFZhclN0b3JlSWQgPT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAg ICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX0dldEZyZWVWYXJTdG9yZUlkKA0KDQorICAgICAgICAg ICAgICAgIEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUikNCg0K KyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVja1ZhclN0b3JlSWRG cmVlKFZhclN0b3JlSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVJRF9SRURFRklORUQNCg0KKyAgICAgICAgICAg IHNlbGYuX19NYXJrVmFyU3RvcmVJZFVzZWQoVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgcE5ldyA9 IFNWZnJWYXJTdG9yYWdlTm9kZShTdG9yZU5hbWUsIFZhclN0b3JlSWQsIEd1aWQsIEF0dHIsIEZs YWcsIE5vbmUsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVR5cGUs IElzQml0VmFyU3RvcmUpDQoNCisNCg0KKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNF Uw0KDQorDQoNCisgICAgICAgIHBOZXcuTmV4dCA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QN Cg0KKyAgICAgICAgc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdCA9IHBOZXcNCg0KKw0KDQorICAg ICAgICBpZiBnQ1ZmckJ1ZmZlckNvbmZpZy5SZWdpc3RlcihTdG9yZU5hbWUsIEd1aWQpICE9IDA6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQoNCisNCg0KKyAgICBkZWYgRGVjbGFyZU5hbWVWYXJTdG9yZUJlZ2luKHNlbGYsIFN0b3Jl TmFtZSwgVmFyU3RvcmVJZCk6DQoNCisgICAgICAgIGlmIFN0b3JlTmFtZSA9PSBOb25lOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0K DQorDQoNCisgICAgICAgIF8sIFJldHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3JlSWQoU3RvcmVO YW1lKQ0KDQorICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9SRURFRklORUQNCg0KKw0KDQorICAgICAgICBpZiBWYXJTdG9yZUlkID09IEVGSV9WQVJTVE9S RV9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuX19HZXRGcmVl VmFyU3RvcmVJZCgNCg0KKyAgICAgICAgICAgICAgICBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJ X1ZGUl9WQVJTVE9SRV9OQU1FKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgaWYg c2VsZi5fX0NoZWNrVmFyU3RvcmVJZEZyZWUoVmFyU3RvcmVJZCkgPT0gRmFsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRUlEX1JF REVGSU5FRA0KDQorICAgICAgICAgICAgc2VsZi5fX01hcmtWYXJTdG9yZUlkVXNlZChWYXJTdG9y ZUlkKQ0KDQorDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclZhclN0b3JhZ2VOb2RlKFN0b3JlTmFt ZSwgVmFyU3RvcmVJZCkNCg0KKw0KDQorICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNF Uw0KDQorDQoNCisgICAgICAgIHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQoNCisg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisg ICAgZGVmIERlY2xhcmVOYW1lVmFyU3RvcmVFbmQoc2VsZiwgR3VpZCk6DQoNCisgICAgICAgIHNl bGYuX19OZXdWYXJTdG9yYWdlTm9kZS5HdWlkID0gR3VpZA0KDQorICAgICAgICBzZWxmLl9fTmV3 VmFyU3RvcmFnZU5vZGUuTmV4dCA9IHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0DQoNCisgICAgICAg IHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0ID0gc2VsZi5fX05ld1ZhclN0b3JhZ2VOb2RlDQoNCisg ICAgICAgIHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgIGRlZiBO YW1lVGFibGVBZGRJdGVtKHNlbGYsIEl0ZW0pOg0KDQorICAgICAgICBzZWxmLl9fTmV3VmFyU3Rv cmFnZU5vZGUuTmFtZVNwYWNlLmFwcGVuZChJdGVtKQ0KDQorICAgICAgICByZXR1cm4gVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBHZXROYW1lVmFyU3Rv cmVJbmZvKHNlbGYsIEJhc2VJbmZvLCBJbmRleCk6DQoNCisgICAgICAgIGlmIEJhc2VJbmZvID09 IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZB VEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9 PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9H RVRfTlZWQVJTVE9SRV9FUlJPUg0KDQorDQoNCisgICAgICAgIEJhc2VJbmZvLkluZm8uVmFyTmFt ZSA9IHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUuTmFtZVNwYWNlW0luZGV4XQ0KDQorDQoNCisg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisg ICAgZGVmIEdldFZhclN0b3JlVHlwZShzZWxmLCBWYXJTdG9yZUlkKToNCg0KKw0KDQorICAgICAg ICBWYXJTdG9yZVR5cGUgPSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9J TlZBTElEDQoNCisNCg0KKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURf SU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZVR5cGUNCg0KKw0KDQorICAg ICAgICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUg cE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFy U3RvcmVJZDoNCg0KKyAgICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPSBwTm9kZS5WYXJzdG9y ZVR5cGUNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVUeXBlDQoNCisgICAgICAg ICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19F ZmlWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCg0KKyAgICAgICAgICAg ICAgICBWYXJTdG9yZVR5cGUgPSBwTm9kZS5WYXJzdG9yZVR5cGUNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gVmFyU3RvcmVUeXBlDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQN Cg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0DQoNCisgICAg ICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9y ZUlkID09IFZhclN0b3JlSWQ6DQoNCisgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0gcE5v ZGUuVmFyc3RvcmVUeXBlDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3JlVHlwZQ0K DQorICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcmV0dXJu IFZhclN0b3JlVHlwZQ0KDQorDQoNCisgICAgZGVmIEdldFZhclN0b3JlTmFtZShzZWxmLCBWYXJT dG9yZUlkKToNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxp c3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBO b2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g cE5vZGUuVmFyU3RvcmVOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQor ICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBz ZWxmLl9fRWZpVmFyU3RvcmVMaXN0DQoNCisgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoN CisgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlZhclN0b3JlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoN CisgICAgICAgIHBOb2RlID0gc2VsZi5fX05hbWVWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hp bGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0g VmFyU3RvcmVJZDoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gcE5vZGUuVmFyU3RvcmVOYW1l LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorICAgICAgICAgICAgcE5vZGUg PSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9VTkRFRklORUQNCg0KKw0KDQorDQoNCisgICAgZGVmIEdldEJ1ZmZlclZhclN0 b3JlRGF0YVR5cGVOYW1lKHNlbGYsIFZhclN0b3JlSWQpOg0KDQorDQoNCisgICAgICAgIERhdGFU eXBlTmFtZSA9IE5vbmUNCg0KKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVf SURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZU5hbWUsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2Vs Zi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0K DQorICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KDQorICAg ICAgICAgICAgICAgIERhdGFUeXBlTmFtZSA9IHBOb2RlLkRhdGFUeXBlLlR5cGVOYW1lDQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisg ICAgICAgIHJldHVybiBEYXRhVHlwZU5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRF RklORUQNCg0KKw0KDQorICAgIGRlZiBHZXRFZmlWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm86 IEVGSV9WQVJTVE9SRV9JTkZPKToNCg0KKw0KDQorICAgICAgICBpZiBCYXNlSW5mbyA9PSBOb25l Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9F UlJPUg0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPT0gTm9u ZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fR0VUX0VG SVZBUlNUT1JFX0VSUk9SDQoNCisNCg0KKyAgICAgICAgQmFzZUluZm8uSW5mby5WYXJOYW1lID0g c2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZS5FZmlWYXIuRWZpVmFyTmFtZQ0KDQorICAgICAgICBC YXNlSW5mby5WYXJUb3RhbFNpemUgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLkVmaVZhci5F ZmlWYXJTaXplDQoNCisNCg0KKyAgICAgICAgaWYgQmFzZUluZm8uVmFyVG90YWxTaXplID09IDE6 DQoNCisgICAgICAgICAgICBCYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzgNCg0KKyAgICAgICAgZWxpZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gMjoNCg0KKyAgICAg ICAgICAgIEJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYNCg0KKyAg ICAgICAgZWxpZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gNDoNCg0KKyAgICAgICAgICAgIEJh c2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzINCg0KKyAgICAgICAgZWxp ZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gODoNCg0KKyAgICAgICAgICAgIEJhc2VJbmZvLlZh clR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCg0K Kw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0K Kw0KDQorICAgIGRlZiBHZXRWYXJTdG9yZUd1aWQoc2VsZiwgVmFyU3RvcmVJZCk6DQoNCisNCg0K KyAgICAgICAgVmFyR3VpZCA9IE5vbmUNCg0KKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklf VkFSU1RPUkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQoNCisN Cg0KKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fQnVmZmVyVmFyU3RvcmVMaXN0DQoNCisgICAgICAg IHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlk ID09IFZhclN0b3JlSWQ6DQoNCisgICAgICAgICAgICAgICAgVmFyR3VpZCA9IHBOb2RlLkd1aWQN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gVmFyR3VpZA0KDQorICAgICAgICAgICAgcE5vZGUg PSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fRWZpVmFyU3RvcmVM aXN0DQoNCisgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBw Tm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQoNCisgICAgICAgICAgICAgICAgVmFyR3Vp ZCA9IHBOb2RlLkd1aWQNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gVmFyR3VpZA0KDQorICAg ICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBzZWxm Ll9fTmFtZVZhclN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KDQorICAgICAg ICAgICAgICAgIFZhckd1aWQgPSBwTm9kZS5HdWlkDQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IFZhckd1aWQNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAg ICAgIHJldHVybiBWYXJHdWlkDQoNCisNCg0KKyAgICBkZWYgQWRkQnVmZmVyVmFyU3RvcmVGaWVs ZEluZm8oc2VsZiwgQmFzZUluZm86IEVGSV9WQVJTVE9SRV9JTkZPKToNCg0KKw0KDQorICAgICAg ICBwTmV3ID0gQnVmZmVyVmFyU3RvcmVGaWVsZEluZm9Ob2RlKEJhc2VJbmZvKQ0KDQorICAgICAg ICBpZiBwTmV3ID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0J1ZmZlckZp ZWxkSW5mb0xpc3RIZWFkID09IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fQnVmZmVyRmll bGRJbmZvTGlzdEhlYWQgPSBwTmV3DQoNCisgICAgICAgICAgICBzZWxmLl9fbUJ1ZmZlckZpZWxk SW5mb0xpc3RUYWlsID0gcE5ldw0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgc2Vs Zi5fX21CdWZmZXJGaWVsZEluZm9MaXN0VGFpbC5OZXh0ID0gcE5ldw0KDQorICAgICAgICAgICAg c2VsZi5fX21CdWZmZXJGaWVsZEluZm9MaXN0VGFpbCA9IHBOZXcNCg0KKw0KDQorICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorDQoNCitjbGFz cyBDVmZyU3RyaW5nREIob2JqZWN0KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToN Cg0KKyAgICAgICAgc2VsZi5fX1N0cmluZ0ZpbGVOYW1lID0gJycNCg0KKw0KDQorICAgIGRlZiBH ZXRWYXJTdG9yZU5hbWVGcm9tU3RyaW5nSWQoc2VsZiwgU3RyaW5nSWQpOg0KDQorICAgICAgICBp ZiBzZWxmLl9fU3RyaW5nRmlsZU5hbWUgPT0gJyc6DQoNCisgICAgICAgICAgICByZXR1cm4gTm9u ZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBmID0gb3BlbihzZWxmLl9fU3RyaW5n RmlsZU5hbWUpDQoNCisgICAgICAgICAgICBTdHJpbmdQdHIgPSBmLnJlYWQoKQ0KDQorICAgICAg ICAgICAgZi5jbG9zZSgpDQoNCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOg0KDQorICAgICAgICAg ICAgcHJpbnQoJ0Vycm9yJykNCg0KKw0KDQorZ0NWZnJTdHJpbmdEQiA9IENWZnJTdHJpbmdEQigp DQoNCisNCg0KK0VGSV9SVUxFX0lEX1NUQVJUID0gMHgwMQ0KDQorRUZJX1JVTEVfSURfSU5WQUxJ RCA9IDB4MDANCg0KKw0KDQorDQoNCitjbGFzcyBTVmZyUnVsZU5vZGUoKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBSdWxlTmFtZT1Ob25lLCBSdWxlSWQ9MCk6DQoNCisgICAgICAg IHNlbGYuUnVsZUlkID0gUnVsZUlkDQoNCisgICAgICAgIHNlbGYuUnVsZU5hbWUgPSBSdWxlTmFt ZQ0KDQorICAgICAgICBzZWxmLk5leHQgPSBOb25lDQoNCisNCg0KKw0KDQorY2xhc3MgQ1ZmclJ1 bGVzREIob2JqZWN0KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAg ICAgc2VsZi5fX1J1bGVMaXN0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fRnJlZVJ1bGVJZCA9 IEVGSV9WQVJTVE9SRV9JRF9TVEFSVA0KDQorDQoNCisgICAgZGVmIFJlZ2lzdGVyUnVsZShzZWxm LCBSdWxlTmFtZSk6DQoNCisgICAgICAgIGlmIFJ1bGVOYW1lID09IE5vbmU6DQoNCisgICAgICAg ICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBwTmV3ID0gU1ZmclJ1bGVOb2RlKFJ1bGVOYW1l LCBzZWxmLl9fRnJlZVJ1bGVJZCkNCg0KKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOiByZXR1cm4N Cg0KKyAgICAgICAgc2VsZi5fX0ZyZWVSdWxlSWQgKz0gMQ0KDQorICAgICAgICBwTmV3Lk5leHQg PSBzZWxmLl9fUnVsZUxpc3QNCg0KKyAgICAgICAgc2VsZi5fX1J1bGVMaXN0ID0gcE5ldw0KDQor DQoNCisgICAgZGVmIEdldFJ1bGVJZChzZWxmLCBSdWxlTmFtZSk6DQoNCisgICAgICAgIGlmIFJ1 bGVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBw Tm9kZSA9IHNlbGYuX19SdWxlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0K DQorICAgICAgICAgICAgaWYgcE5vZGUuUnVsZU5hbWUgPT0gUnVsZU5hbWU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHBOb2RlLlJ1bGVJZA0KDQorICAgICAgICAgICAgcE5vZGUgPSBwTm9k ZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIEVGSV9SVUxFX0lEX0lOVkFMSUQNCg0KKw0K DQorDQoNCitFRklfUVVFU1RJT05fSURfTUFYID0gMHhGRkZGDQoNCitFRklfRlJFRV9RVUVTVElP Tl9JRF9CSVRNQVBfU0laRSA9IGludCgNCg0KKyAgICAoRUZJX1FVRVNUSU9OX0lEX01BWCArIDEp IC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCg0KK0VGSV9RVUVTVElPTl9JRF9JTlZBTElEID0gMHgw DQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX1FVRVNJT05fVFlQRShFbnVtKToNCg0KKyAgICBRVUVT VElPTl9OT1JNQUwgPSAwDQoNCisgICAgUVVFU1RJT05fREFURSA9IDENCg0KKyAgICBRVUVTVElP Tl9USU1FID0gMg0KDQorICAgIFFVRVNUSU9OX1JFRiA9IDMNCg0KKw0KDQorDQoNCitjbGFzcyBT VmZyUXVlc3Rpb25Ob2RlKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTmFtZT1O b25lLCBWYXJJZFN0cj1Ob25lLCBCaXRNYXNrPTApOiAgIw0KDQorICAgICAgICBzZWxmLk5hbWUg PSBOYW1lDQoNCisgICAgICAgIHNlbGYuVmFySWRTdHIgPSBWYXJJZFN0cg0KDQorICAgICAgICBz ZWxmLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxm LkJpdE1hc2sgPSBCaXRNYXNrDQoNCisgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCg0KKyAgICAg ICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQoNCisNCg0K Kw0KDQorREFURV9ZRUFSX0JJVE1BU0sgPSAweDAwMDBGRkZGDQoNCitEQVRFX01PTlRIX0JJVE1B U0sgPSAweDAwRkYwMDAwDQoNCitEQVRFX0RBWV9CSVRNQVNLID0gMHhGRjAwMDAwMA0KDQorVElN RV9IT1VSX0JJVE1BU0sgPSAweDAwMDAwMEZGDQoNCitUSU1FX01JTlVURV9CSVRNQVNLID0gMHgw MDAwRkYwMA0KDQorVElNRV9TRUNPTkRfQklUTUFTSyA9IDB4MDBGRjAwMDANCg0KKw0KDQorDQoN CitjbGFzcyBDVmZyUXVlc3Rpb25EQihvYmplY3QpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9f KHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcCA9IFtdDQoNCisgICAgICAg IGZvciBpIGluIHJhbmdlKDAsIEVGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFKToNCg0K KyAgICAgICAgICAgIHNlbGYuX19GcmVlUUlkQml0TWFwLmFwcGVuZCgwKQ0KDQorDQoNCisgICAg ICAgICMgUXVlc3Rpb24gSUQgMCBpcyByZXNlcnZlZC4NCg0KKyAgICAgICAgc2VsZi5fX0ZyZWVR SWRCaXRNYXBbMF0gPSAweDgwMDAwMDAwDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9u TGlzdCA9IE5vbmUNCg0KKw0KDQorICAgIGRlZiBGaW5kUXVlc3Rpb25CeU5hbWUoc2VsZiwgTmFt ZSk6DQoNCisgICAgICAgIGlmIE5hbWUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCg0KKw0KDQorICAgICAgICBwTm9k ZSA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIGlmIHBOb2RlLk5hbWUgPT0gTmFtZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgICAg IHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBkZWYgRmluZFF1ZXN0aW9uQnlJZChz ZWxmLCBRdWVzdGlvbklkKToNCg0KKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVFU1RJ T05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19R dWVzdGlvbkxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIGlmIHBOb2RlLlF1ZXN0aW9uSWQgPT0gUXVlc3Rpb25JZDoNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgICAg IHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBkZWYgX19HZXRGcmVlUXVlc3Rpb25J ZChzZWxmKToNCg0KKw0KDQorICAgICAgICBJbmRleCA9IDANCg0KKyAgICAgICAgZm9yIGkgaW4g cmFuZ2UoMCwgRUZJX0ZSRUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUpOg0KDQorICAgICAgICAg ICAgaWYgc2VsZi5fX0ZyZWVRSWRCaXRNYXBbaV0gIT0gMHhGRkZGRkZGRjoNCg0KKyAgICAgICAg ICAgICAgICBJbmRleCA9IGkNCg0KKyAgICAgICAgICAgICAgICBicmVhaw0KDQorICAgICAgICBp ZiBJbmRleCA9PSBFRklfRlJFRV9RVUVTVElPTl9JRF9CSVRNQVBfU0laRToNCg0KKyAgICAgICAg ICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorDQoNCisgICAgICAgIE9mZnNl dCA9IDANCg0KKyAgICAgICAgTWFzayA9IDB4ODAwMDAwMDANCg0KKyAgICAgICAgd2hpbGUgTWFz ayAhPSAwOg0KDQorICAgICAgICAgICAgaWYgKHNlbGYuX19GcmVlUUlkQml0TWFwW0luZGV4XSAm IE1hc2spID09IDA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5k ZXhdIHw9IE1hc2sNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gKEluZGV4IDw8IEVGSV9CSVRT X1NISUZUX1BFUl9VSU5UMzIpICsgT2Zmc2V0DQoNCisgICAgICAgICAgICBNYXNrID4+PSAxDQoN CisgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJldHVybiBFRklfUVVF U1RJT05fSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIF9fQ2hlY2tRdWVzdGlvbklkRnJlZShz ZWxmLCBRSWQpOg0KDQorICAgICAgICBJbmRleCA9IGludChRSWQgLyBFRklfQklUU19QRVJfVUlO VDMyKQ0KDQorICAgICAgICBPZmZzZXQgPSBRSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQoNCisg ICAgICAgIHJldHVybiAoc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5kZXhdICYgKDB4ODAwMDAwMDAg Pj4gT2Zmc2V0KSkgPT0gMA0KDQorDQoNCisgICAgZGVmIF9fTWFya1F1ZXN0aW9uSWRVc2VkKHNl bGYsIFFJZCk6DQoNCisNCg0KKyAgICAgICAgSW5kZXggPSBpbnQoUUlkIC8gRUZJX0JJVFNfUEVS X1VJTlQzMikNCg0KKyAgICAgICAgT2Zmc2V0ID0gUUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0K DQorICAgICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4g T2Zmc2V0KQ0KDQorDQoNCisgICAgZGVmIF9fTWFya1F1ZXN0aW9uSWRVbnVzZWQoc2VsZiwgUUlk KToNCg0KKyAgICAgICAgSW5kZXggPSBpbnQoUUlkIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCg0K KyAgICAgICAgT2Zmc2V0ID0gUUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KDQorICAgICAgICBz ZWxmLl9fRnJlZVFJZEJpdE1hcFtJbmRleF0gJj0gfigweDgwMDAwMDAwID4+IE9mZnNldCkNCg0K Kw0KDQorICAgIGRlZiBSZWdpc3RlclF1ZXN0aW9uKHNlbGYsIE5hbWUsIFZhcklkU3RyLCBRdWVz dGlvbklkKToNCg0KKw0KDQorICAgICAgICBpZiAoTmFtZSAhPSBOb25lKSBhbmQgKHNlbGYuRmlu ZFF1ZXN0aW9uQnlOYW1lKE5hbWUpID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT KToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fUkVERUZJTkVEDQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2Rl KE5hbWUsIFZhcklkU3RyKQ0KDQorICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9S X1JFU09VUkNFUw0KDQorDQoNCisgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9O X0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVR dWVzdGlvbklkKCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19D aGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUVVFU1RJT05J RF9SRURFRklORUQNCg0KKyAgICAgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVzZWQoUXVl c3Rpb25JZCkNCg0KKw0KDQorICAgICAgICBwTm9kZS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0K DQorICAgICAgICBwTm9kZS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICBz ZWxmLl9fUXVlc3Rpb25MaXN0ID0gcE5vZGUNCg0KKw0KDQorICAgICAgICAjIGdDRm9ybVBrZy5E b1BlbmRpbmdBc3NpZ24NCg0KKw0KDQorICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBVcGRhdGVRdWVzdGlv bklkKHNlbGYsIFFJZCwgTmV3UUlkKToNCg0KKw0KDQorICAgICAgICBpZiBRSWQgPT0gTmV3UUlk Og0KDQorICAgICAgICAgICAgIyBkb24ndCB1cGRhdGUNCg0KKyAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgICAgIGlmIHNlbGYu X19DaGVja1F1ZXN0aW9uSWRGcmVlKE5ld1FJZCkgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KDQorDQoNCisgICAgICAg IHBOb2RlID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICBUZW1wTGlzdCA9IFtdDQoN CisgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5R dWVzdGlvbklkID09IFFJZDoNCg0KKyAgICAgICAgICAgICAgICBUZW1wTGlzdC5hcHBlbmQocE5v ZGUpDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBp ZiBsZW4oVGVtcExpc3QpID09IDA6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KDQorDQoNCisgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rp b25JZFVudXNlZChRSWQpDQoNCisNCg0KKyAgICAgICAgZm9yIHBOb2RlIGluIFRlbXBMaXN0Og0K DQorICAgICAgICAgICAgcE5vZGUuUXVlc3Rpb25JZCA9IE5ld1FJZA0KDQorDQoNCisgICAgICAg IHNlbGYuX19NYXJrUXVlc3Rpb25JZFVzZWQoTmV3UUlkKQ0KDQorDQoNCisgICAgICAgICMgZ0NG b3JtUGtnLkRvUGVuZGluZ0Fzc2lnbg0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBHZXRRdWVzdGlvbklkKHNlbGYsIE5h bWUsIFZhcklkU3RyPU5vbmUsIFFUeXBlPU5vbmUpOg0KDQorDQoNCisgICAgICAgIFF1ZXN0aW9u SWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBCaXRNYXNrID0gMHgwMDAw MDAwMA0KDQorICAgICAgICBpZiBRVHlwZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgUVR5cGUg PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQorDQoNCisgICAgICAgIGlmIE5h bWUgPT0gTm9uZSBhbmQgVmFySWRTdHIgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBR dWVzdGlvbklkLCBCaXRNYXNrLCBRVHlwZQ0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5f X1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorDQoNCisg ICAgICAgICAgICBpZiBOYW1lICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgcE5vZGUu TmFtZSAhPSBOYW1lOg0KDQorICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQN Cg0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUNCg0KKw0KDQorICAgICAgICAgICAgaWYg VmFySWRTdHIgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBpZiBwTm9kZS5WYXJJZFN0ciAh PSBWYXJJZFN0cjoNCg0KKyAgICAgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoN CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQoNCisNCg0KKyAgICAgICAgICAgIFF1ZXN0 aW9uSWQgPSBwTm9kZS5RdWVzdGlvbklkDQoNCisgICAgICAgICAgICBCaXRNYXNrID0gcE5vZGUu Qml0TWFzaw0KDQorICAgICAgICAgICAgaWYgUVR5cGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAg ICAgICBRVHlwZSA9IHBOb2RlLlFUeXBlDQoNCisgICAgICAgICAgICBicmVhaw0KDQorDQoNCisg ICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBCaXRNYXNrLCBRVHlwZQ0KDQorDQoNCisgICAgZGVm IFJlZ2lzdGVyTmV3RGF0ZVF1ZXN0aW9uKHNlbGYsIE5hbWUsIEJhc2VWYXJJZCwgUXVlc3Rpb25J ZCk6DQoNCisNCg0KKyAgICAgICAgaWYgQmFzZVZhcklkID09ICcnIGFuZCBOYW1lID09IE5vbmU6 DQoNCisgICAgICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElE Og0KDQorICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9u SWQoKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9f Q2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURF RklORUQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0 aW9uSWQpDQoNCisgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgICAgICBWYXJJZFN0ckxpc3QgPSBbXQ0KDQor ICAgICAgICBpZiBCYXNlVmFySWQgIT0gJyc6DQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3Qu YXBwZW5kKEJhc2VWYXJJZCArICcuWWVhcicpDQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3Qu YXBwZW5kKEJhc2VWYXJJZCArICcuTW9udGgnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0 LmFwcGVuZChCYXNlVmFySWQgKyAnLkRheScpDQoNCisNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICcuWWVhcicpDQoNCisgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLk1vbnRoJykNCg0KKyAgICAgICAgICAg IFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICcuRGF5JykNCg0KKw0KDQorICAgICAgICBwTm9k ZUxpc3QgPSBbXQ0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFy SWRTdHJMaXN0WzBdLCBEQVRFX1lFQVJfQklUTUFTSykNCg0KKyAgICAgICAgaWYgcE5vZGUgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQoNCisgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBTVmZy UXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFsxXSwgREFURV9NT05USF9CSVRNQVNLKQ0K DQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgcE5vZGVMaXN0LmFw cGVuZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVz dGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0K DQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzJd LCBEQVRFX0RBWV9CSVRNQVNLKQ0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VU X0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVT VElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuX19HZXRG cmVlUXVlc3Rpb25JZCgpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBpZiBzZWxm Ll9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVG SU5FRA0KDQorICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklk KQ0KDQorDQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0K DQorICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAg ICAgcE5vZGVMaXN0WzJdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2Rl TGlzdFswXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KDQorICAgICAg ICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCg0K KyAgICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9E QVRFDQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5OZXh0ID0gcE5vZGVMaXN0WzFdDQoNCisgICAg ICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJdDQoNCisgICAgICAgIHBOb2RlTGlz dFsyXS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rp b25MaXN0ID0gcE5vZGVMaXN0WzBdDQoNCisNCg0KKyAgICAgICAgIyBEb1BlbmRpbmdBc3NpZ24N Cg0KKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQoNCisNCg0KKyAgICBkZWYgUmVnaXN0ZXJOZXdUaW1lUXVlc3Rpb24oc2VsZiwgTmFt ZSwgQmFzZVZhcklkLCBRdWVzdGlvbklkKToNCg0KKyAgICAgICAgaWYgQmFzZVZhcklkID09ICcn IGFuZCBOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9R VUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxm Ll9fR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxz ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWFya1F1 ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQoNCisgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25J ZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgICAgICBWYXJJ ZFN0ckxpc3QgPSBbXQ0KDQorICAgICAgICBpZiBCYXNlVmFySWQgIT0gJyc6DQoNCisgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuSG91cicpDQoNCisgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuTWludXRlJykNCg0KKyAgICAg ICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5TZWNvbmQnKQ0KDQorDQoN CisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUg KyAnLkhvdXInKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChOYW1lICsgJy5N aW51dGUnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChOYW1lICsgJy5TZWNv bmQnKQ0KDQorDQoNCisgICAgICAgIHBOb2RlTGlzdCA9IFtdDQoNCisgICAgICAgIHBOb2RlID0g U1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMF0sIFRJTUVfSE9VUl9CSVRNQVNL KQ0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgcE5vZGVMaXN0 LmFwcGVuZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBR dWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0K Kw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0 WzFdLCBUSU1FX01JTlVURV9CSVRNQVNLKQ0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0K DQorICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlv bk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzJdLCBUSU1FX1NFQ09ORF9CSVRNQVNLKQ0KDQorICAg ICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChw Tm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklk LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAg ICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAg ICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQoNCisgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVz dGlvbklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KDQorICAgICAgICAgICAgc2VsZi5f X01hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0KDQorDQoNCisgICAgICAgIHBOb2RlTGlz dFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9kZUxpc3RbMV0uUXVl c3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVMaXN0WzJdLlF1ZXN0aW9uSWQg PSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5RVHlwZSA9IEVGSV9RVUVTSU9O X1RZUEUuUVVFU1RJT05fVElNRQ0KDQorICAgICAgICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUNCg0KKyAgICAgICAgcE5vZGVMaXN0WzJdLlFUeXBl ID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQoNCisgICAgICAgIHBOb2RlTGlzdFsw XS5OZXh0ID0gcE5vZGVMaXN0WzFdDQoNCisgICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5v ZGVMaXN0WzJdDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9u TGlzdA0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25MaXN0ID0gcE5vZGVMaXN0WzBdDQoNCisN Cg0KKyAgICAgICAgIyBEb1BlbmRpbmdBc3NpZ24NCg0KKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9u SWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgUmVn aXN0ZXJSZWZRdWVzdGlvbihzZWxmLCBOYW1lLCBCYXNlVmFySWQsIFF1ZXN0aW9uSWQpOg0KDQor DQoNCisgICAgICAgIGlmIEJhc2VWYXJJZCA9PSAnJyBhbmQgTmFtZSA9PSBOb25lOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRB TF9FUlJPUg0KDQorDQoNCisgICAgICAgIFZhcklkU3RyTGlzdCA9IFtdDQoNCisgICAgICAgIGlm IEJhc2VWYXJJZCAhPSAnJzoNCg0KKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFz ZVZhcklkICsgJy5RdWVzdGlvbklkJykNCg0KKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBl bmQoQmFzZVZhcklkICsgJy5Gb3JtSWQnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChCYXNlVmFySWQgKyAnLkZvcm1TZXRHdWlkJykNCg0KKyAgICAgICAgICAgIFZhcklkU3Ry TGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5EZXZpY2VQYXRoJykNCg0KKw0KDQorICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLlF1 ZXN0aW9uSWQnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQg KyAnLkZvcm1JZCcpDQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJ ZCArICcuRm9ybVNldEd1aWQnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChC YXNlVmFySWQgKyAnLkRldmljZVBhdGgnKQ0KDQorDQoNCisgICAgICAgIHBOb2RlTGlzdCA9IFtd DQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3Rb MF0pDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxp c3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJu IFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0K DQorDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxp c3RbMV0pDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9k ZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNF Uw0KDQorDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0 ckxpc3RbMl0pDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBw Tm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg cmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09V UkNFUw0KDQorDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJ ZFN0ckxpc3RbM10pDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JF U09VUkNFUw0KDQorDQoNCisgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lE X0lOVkFMSUQ6DQoNCisgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVRdWVz dGlvbklkKCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVj a1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoN CisgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQoNCisN Cg0KKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAg ICAgIHBOb2RlTGlzdFsxXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9k ZUxpc3RbMl0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVMaXN0WzNd LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisNCg0KKyAgICAgICAgcE5vZGVMaXN0WzBdLlFU eXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAgICAgcE5vZGVMaXN0 WzFdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAgICAgcE5v ZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAg ICAgcE5vZGVMaXN0WzNdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0K Kw0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KDQorICAgICAg ICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KDQorICAgICAgICBwTm9kZUxpc3Rb Ml0uTmV4dCA9IHBOb2RlTGlzdFszXQ0KDQorICAgICAgICBwTm9kZUxpc3RbM10uTmV4dCA9IHNl bGYuX19RdWVzdGlvbkxpc3QNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2Rl TGlzdFswXQ0KDQorICAgICAgICB4ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorDQoNCisgICAg ICAgICMgRG9QZW5kaW5nQXNzaWduDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQs IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgUmVnaXN0 ZXJPbGREYXRlUXVlc3Rpb24oc2VsZiwgWWVhclZhcklkLCBNb250aFZhcklkLCBEYXlWYXJJZCwg UXVlc3Rpb25JZCk6DQoNCisgICAgICAgIHBOb2RlTGlzdCA9IFtdDQoNCisgICAgICAgIGlmIFll YXJWYXJJZCA9PSAnJyBvciBNb250aFZhcklkID09ICcnIG9yIERheVZhcklkID09ICcnIG9yIFll YXJWYXJJZCA9PSBOb25lIG9yIE1vbnRoVmFySWQgPT0gTm9uZSBvciBEYXlWYXJJZCA9PSBOb25l Og0KDQorICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9FUlJPUl9TS0lQRUQNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5v ZGUoTm9uZSwgWWVhclZhcklkLCBEQVRFX1lFQVJfQklUTUFTSykNCg0KKyAgICAgICAgaWYgcE5v ZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQoNCisg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFM SUQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQorDQoNCisg ICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBNb250aFZhcklkLCBEQVRFX01P TlRIX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlv bk5vZGUoTm9uZSwgRGF5VmFySWQsIERBVEVfREFZX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBO b2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQor ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZB TElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQor ICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAg ICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShR dWVzdGlvbklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAg ICAgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCg0KKw0KDQor ICAgICAgICBwTm9kZUxpc3RbMF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAg cE5vZGVMaXN0WzFdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlz dFsyXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uUVR5 cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCg0KKyAgICAgICAgcE5vZGVMaXN0 WzFdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQoNCisgICAgICAgIHBO b2RlTGlzdFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KDQorICAg ICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KDQorICAgICAgICBwTm9kZUxp c3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9 IHNlbGYuX19RdWVzdGlvbkxpc3QNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBO b2RlTGlzdFswXQ0KDQorDQoNCisgICAgICAgICMgRG9QZW5kaW5nQXNzaWduDQoNCisgICAgICAg IHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQor DQoNCisgICAgZGVmIFJlZ2lzdGVyT2xkVGltZVF1ZXN0aW9uKHNlbGYsIEhvdXJWYXJJZCwgTWlu dXRlVmFySWQsIFNlY29uZFZhcklkLCBRdWVzdGlvbklkKToNCg0KKyAgICAgICAgcE5vZGVMaXN0 ID0gW10NCg0KKyAgICAgICAgaWYgSG91clZhcklkID09ICcnIG9yIE1pbnV0ZVZhcklkID09ICcn IG9yIFNlY29uZFZhcklkID09ICcnIG9yIEhvdXJWYXJJZCA9PSBOb25lIG9yIE1pbnV0ZVZhcklk ID09IE5vbmUgb3IgU2Vjb25kVmFySWQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBR dWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQoNCisNCg0K KyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5vbmUsIEhvdXJWYXJJZCwgVElNRV9I T1VSX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlv bk5vZGUoTm9uZSwgTWludXRlVmFySWQsIFRJTUVfTUlOVVRFX0JJVE1BU0spDQoNCisgICAgICAg IGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2Rl KQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9J RF9JTlZBTElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0K Kw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgU2Vjb25kVmFySWQs IFRJTUVfU0VDT05EX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBpZiBRdWVzdGlv bklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgUXVlc3Rpb25J ZCA9IHNlbGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAgICAgIHNlbGYuX19N YXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCg0KKw0KDQorICAgICAgICBwTm9kZUxpc3Rb MF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVMaXN0WzFdLlF1ZXN0 aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0g UXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBFRklfUVVFU0lPTl9U WVBFLlFVRVNUSU9OX1RJTUUNCg0KKyAgICAgICAgcE5vZGVMaXN0WzFdLlFUeXBlID0gRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5RVHlwZSA9 IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KDQorICAgICAgICBwTm9kZUxpc3RbMF0u TmV4dCA9IHBOb2RlTGlzdFsxXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBOb2Rl TGlzdFsyXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYuX19RdWVzdGlvbkxp c3QNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0KDQorDQoN CisgICAgICAgICMgRG9QZW5kaW5nQXNzaWduDQoNCisgICAgICAgIHJldHVybiBRdWVzdGlvbklk LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIFByaW50 QWxsUXVlc3Rpb24oc2VsZiwgRmlsZU5hbWUpOg0KDQorDQoNCisgICAgICAgIHdpdGggb3BlbihG aWxlTmFtZSwgJ3cnKSBhcyBmOg0KDQorICAgICAgICAgICAgcE5vZGUgPSBzZWxmLl9fUXVlc3Rp b25MaXN0DQoNCisgICAgICAgICAgICB3aGlsZShwTm9kZSAhPSBOb25lKToNCg0KKw0KDQorICAg ICAgICAgICAgICAgIGYud3JpdGUoJ1F1ZXN0aW9uIFZhcklkIGlzIHt9IGFuZCBRdWVzdGlvbklk IGlzICcuZm9ybWF0KHBOb2RlLlZhcklkU3RyKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRl KCclZFxuJyUocE5vZGUuUXVlc3Rpb25JZCkpDQoNCisgICAgICAgICAgICAgICAgIyBmLndyaXRl KCclI3hcbiclKHBOb2RlLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAgICAgIHBOb2RlID0g cE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIGYuY2xvc2UoKQ0KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGls ZXIvbWFpbi5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL21haW4ucHkN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi42MjRjZmUzYWE4DQotLS0g L2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9tYWlu LnB5DQpAQCAtMCwwICsxLDI3IEBADQorZnJvbSBkaXN0dXRpbHMuZmlsZWxpc3QgaW1wb3J0IEZp bGVMaXN0DQoNCitmcm9tIHBpY2tsZXRvb2xzIGltcG9ydCB1aW50OA0KDQoraW1wb3J0IHN5cw0K DQorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgVHJlZXZpZXcNCg0KK2Zyb20gYW50bHI0IGltcG9y dCoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyU3ludGF4TGV4ZXIgaW1wb3J0IFZmclN5bnRheExl eGVyDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmclN5bnRheFBhcnNlciBpbXBvcnQgVmZyU3ludGF4 UGFyc2VyDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmclN5bnRheFZpc2l0b3IgaW1wb3J0IFZmclN5 bnRheFZpc2l0b3INCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyRXJyb3IgaW1wb3J0ICoNCg0KKw0K DQorZGVmIFZmclBhcnNlKEluZmlsZSwgWWFtbE91dEZpbGUsIEpzb25PdXRGaWxlKToNCg0KKyAg ICBnQ1ZmckVycm9ySGFuZGxlLlNldElucHV0RmlsZSAoSW5maWxlKQ0KDQorICAgIElucHV0U3Ry ZWFtID0gRmlsZVN0cmVhbShJbmZpbGUpDQoNCisgICAgTGV4ZXIgPSBWZnJTeW50YXhMZXhlcihJ bnB1dFN0cmVhbSkNCg0KKyAgICBTdHJlYW0gPSBDb21tb25Ub2tlblN0cmVhbShMZXhlcikNCg0K KyAgICBQYXJzZXIgPSBWZnJTeW50YXhQYXJzZXIoU3RyZWFtKQ0KDQorICAgIFRyZWUgPSBQYXJz ZXIudmZyUHJvZ3JhbSgpDQoNCisgICAgVmlzaXRvciA9IFZmclN5bnRheFZpc2l0b3IoKQ0KDQor ICAgIFZpc2l0b3IudmlzaXQoVHJlZSkNCg0KKyAgICBWaXNpdG9yLkR1bXBZYW1sKFZpc2l0b3Iu R2V0Um9vdCgpLCBZYW1sT3V0RmlsZSkNCg0KKyAgICBWaXNpdG9yLkR1bXBKc29uKEpzb25PdXRG aWxlKQ0KDQorDQoNCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0KDQorICAgIEluZmlsZSA9 ICdWZnJDb21waWxlci90ZXN0LmknDQoNCisgICAgWWFtbE91dEZpbGUgPSAnVmZyQ29tcGlsZXIv dGVzdC55YW1sJw0KDQorICAgIEpzb25PdXRGaWxlID0gJ1ZmckNvbXBpbGVyL3Rlc3QuanNvbicN Cg0KKyAgICBWZnJQYXJzZShJbmZpbGUsIFlhbWxPdXRGaWxlLCBKc29uT3V0RmlsZSkNCg0KLS0g DQoyLjI3LjAud2luZG93cy4xDQoNCg==