From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.490.1594314056622746646 for ; Thu, 09 Jul 2020 10:00:56 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=jvJgzTWL; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: zS0pHz+lJWKbgNfTFDajTgzvgmdGTiCvyPCzEBYwKkKcY6Jz8D4C0WWtraGBlTkU7yHH2hl+Ud gHqOFNwT5Tng== X-IronPort-AV: E=McAfee;i="6000,8403,9677"; a="147120593" X-IronPort-AV: E=Sophos;i="5.75,332,1589266800"; d="scan'208";a="147120593" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jul 2020 10:00:54 -0700 IronPort-SDR: sUXSw5KWegIC3RJZqRD1t3BreBxFY1jHtuqk2qVrAoYP3FA5MO8SH+Btddd1T6aULsVO/rA7UI Lqh+HDC8UHpw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,332,1589266800"; d="scan'208";a="483871479" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga006.fm.intel.com with ESMTP; 09 Jul 2020 10:00:53 -0700 Received: from orsmsx122.amr.corp.intel.com (10.22.225.227) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jul 2020 10:00:52 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX122.amr.corp.intel.com (10.22.225.227) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jul 2020 10:00:52 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.174) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jul 2020 10:00:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gPJZdr8/khgMQ2IiDNGPdmzuQnyr8y3N8HuxbBSF1ihy/sB47xOLtomPQxFVQc3TZI0yQtsDkfVFIOlxepQ37qqSaZOjj6pE0KGZ+fjlvGC2gFwlAn6EJOletzyCg5dU9kO6XLHgaN74jPubRY3u6rqrUV8mp/gBL75JFJAFG+ptjWZHpmqzhslkpeyipWQ+jVBKMorLrv8svu4B1j/edxfyiYAg6EzRRKnzoBWpp6z97rfQueMrFrPMSVRH8JEwla2s3r2w+EM/r9tFuPty4OcWC0wCa0rouALlbS58yrVYRj8MKKow/BzI+TSqNVLCezeikPS0kfgbaIa8aOPh9Q== 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-SenderADCheck; bh=udVUmqWaE9OeeCipKT/QOee17xBkVOXJVcTYL3mu7PU=; b=Abvw/6YfTwEEgPHODEKb5eD5HUhrsbxR9KY4K8OQ+0KZwL6pBN5FwukSO35mGvuW4/sBIscg7QeLZl8SJ4bHv8jS0bzt/lYD5PnO0sUM1WvujrO0B+EtKFY+8C8Pdd56T0FjjiXvjtf6dLVLE+G7dM7KA8ywPacxcLSC9vTni60Jwh3fpSGHcXbI8X8PnKJ4iogFq62EhWH8XcGF4toOIqNPchkYeZnXFBZM3p2sHG/6bGpZYKNCaH01eXcU1WVeRSymLq/iNFWn715BfxoqxCNvX6KOCqaAY/vC7l5ZutbYue22x6YBGTGckwaDXpuMetf1iNWEO+1pFPJwCJtVMQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=udVUmqWaE9OeeCipKT/QOee17xBkVOXJVcTYL3mu7PU=; b=jvJgzTWL9QD8dCj/WSHohAX+Pu38ONRtOV40jcx0JGo1sKl2gW397VNCaGzrOD4a7GMiGPAkSOmu8ghMBWDKrjCg/pVaioo6TAUeJAY8CCMYBMUo/hLSZ88NUVCVTYqDTaDnc+30OmDz66plkM/6VY+CiauZvB7FiZjLMsTTdXM= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by MN2PR11MB4599.namprd11.prod.outlook.com (2603:10b6:208:26d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.27; Thu, 9 Jul 2020 17:00:49 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1%3]) with mapi id 15.20.3174.021; Thu, 9 Jul 2020 17:00:49 +0000 From: "Michael D Kinney" To: "Gao, Liming" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Sean Brogan , Bret Barkelew , "Yao, Jiewen" Subject: Re: [Patch 04/15] MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions Thread-Topic: [Patch 04/15] MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions Thread-Index: AQHWVfpBNl15Vdg6BUGxXYk4b5hLu6j/djWQ Date: Thu, 9 Jul 2020 17:00:49 +0000 Message-ID: References: <20200615001918.22164-1-michael.d.kinney@intel.com> <20200615001918.22164-5-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.136.204] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e9bbb0ca-42b8-4210-712a-08d82429a1aa x-ms-traffictypediagnostic: MN2PR11MB4599: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 04599F3534 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 90Hb1Q1C04BfEAGluPkmg2/UthMI1DiKGtIYmMmAdzzvX3g7yAi1FWrSWcjqBxcANYNdG7JolEyYzZKrtYog6kjP8BJsrI2g+n/MAXTHk1exalZrsE67j2mFtRikeYeDlqGIbhNujwVyP20gkWeqFDU84J/gJqqZFBc+LwKKweRPYZeIlWMoUdEerH69BA9UDhNc0O5Rwxqi90QS/TDLIPtqGVbDZPJS/7SH65TM448XG0Yu7z2Dzxf7Xz7y5hkWSRVZ9SJKI1ZHmG6zluKQpuYkHxIsKi2aJkknbOFWK4DwK/pdxEE7TLFZqGxgi8ATcmZNJEnGu+OzFnhAbF//Hxfk9//QIuJoluH/fAFUjMGYUCm/JJDQ7MVjOoVnNb+NHKWDeCiChmt+yP+SzawH0g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(346002)(396003)(136003)(376002)(39860400002)(366004)(186003)(76116006)(66446008)(26005)(110136005)(66946007)(86362001)(66476007)(64756008)(6506007)(66556008)(316002)(52536014)(54906003)(4326008)(55016002)(478600001)(30864003)(19627235002)(53546011)(9686003)(33656002)(83380400001)(2906002)(71200400001)(8676002)(7696005)(966005)(45080400002)(5660300002)(107886003)(8936002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: jTvlRvIJGSPX4Ns8P/+0SH/ISFxAFnqZRg1wqlIjKFiI5CDwfwZKqop5vLLyoUbAfdSb+lecZw6v4b4KIJZNmhX4cIVX0/dDVm/ykBdCGdTxwPg4nEDlQsptf4oDVPGEwt2XbW+v5bezzwwG357XfpIUekCyMrnhu0yC0YYjpY8ESY65y/7D73/JWoTckEJeNANg3AAlz74dR4HADsLowRlx1HiGi0Kp9GaHZPd0gyFexnhJhHWtW54alBjgABwOESsJXKO5mFZHDE9npet4TpxZdW2JAUxo9H97bahOiOEcMH2BQGZAJY6izjtLeo6hbtmWX5wjchViY/AD71J7/iqnynDDY/vI0kCBW0szlm8nDd0hdoPWPWXQ7TjTzGOHbjBi1hHZaoItj5tIioglhS/JOg8pGh3AMftJNiQlRgdxeiT947mwDK0NDjPrk/193DgkIBifo4pIsIwOSs2ea36qG/vR+Uoers/r/ooHUmmgg9TmGDVaPBkU8pYXgd+L MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9bbb0ca-42b8-4210-712a-08d82429a1aa X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jul 2020 17:00:49.5667 (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: B8HOOVxGyvdKmQ0kiRb+n8ZMgR2yQKSa7/dNW1Jnhqgt1PXCV/M6lYK4Py+kHAQi5kMzxfWEnkiudWA8slBXkVyGFk1DQxNG/YninnUur1A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4599 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGltaW5nLA0KDQpJbiBvcmRlciB0byBzdXBwb3J0IGhvc3QgYmFzZWQgdW5pdCB0ZXN0cywgYWxs IHRoZSBjb2RlDQpoYXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGEgdXNlciBtb2RlIHByb2Nlc3Mu ICBUaGlzIG1lYW5zDQphbnkgZnVuY3Rpb25zIHRoYXQgZXhlY3V0ZSBpbnN0cnVjdGlvbnMgdGhh dCBhcmUgbm90IGFsbG93ZWQNCmluIGEgdXNlciBtb2RlIHByb2Nlc3MgbmVlZCB0byBiZSBzZXBh cmF0ZWQgb3V0Lg0KDQpGb3IgdGhlIElBMzIvWDY0IHNwZWNpZmljIEdjY0lubGluZS5jIGZpbGVz LCB0aGUgYW5hbHlzaXMNCndhcyBkb25lIGZvciBBUElzIHRoYXQgdXNlIGluc3RydWN0aW9ucyB0 aGF0IHdvdWxkIA0KZ2VuZXJhdGUgYW4gZXhjZXB0aW9uIGluIGEgdXNlciBtb2RlIHByb2Nlc3Mu DQoNCkluIGFkZGl0aW9uLCB0aGUgQmFzZUxpYiBmdW5jdGlvbnMgdGhhdCByZXR1cm4gc3lzdGVt DQpzdGF0ZSAoZS5nLiBDUy9EUy9FUy9TUy9GUy9HUykgYXJlIGFsc28gc3BsaXQgb3V0LiAgSXQN CmRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcmV0dXJuIHN5c3RlbSBzdGF0ZSBpbmZvcm1hdGlvbg0K ZnJvbSB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB1c2VyIG1vZGUgcHJvY2Vzcy4gIEluc3RlYWQs DQp0aGUgRlcgY29kZSB1bmRlciB0ZXN0IHdvdWxkIGV4cGVjdCBzeXN0ZW0gc3RhdGUgdGhhdA0K bWF0Y2hlcyBhIEZXIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIEVhY2ggdW5pdCB0ZXN0DQppbXBs ZW1lbnRhdGlvbiBoYXMgdGhlIG9wdGlvbiBvZiBwcm92aWRpbmcgZW11bGF0aW9uDQpvZiB0aGlz IHN5c3RlbSBzdGF0ZSBpZiB0aGF0IGlzIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZQ0KY29kZSB1 bmRlciB0ZXN0Lg0KDQpObyBjaGFuZ2VzIHRvIHRoZSBNU0ZUIHNwZWNpZmljIEJhc2VMaWIgaW1w bGVtZW50YXRpb24NCndlcmUgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSB0aG9zZSBhcmUgYWxyZWFk eSBzcGxpdCBvdXQNCnRvIG9uZSBmdW5jdGlvbiBwZXIgZmlsZS4NCg0KQmVzdCByZWdhcmRzLA0K DQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR2FvLCBMaW1p bmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVseSA5LCAyMDIw IDc6MDcgQU0NCj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5i cm9nYW5AbWljcm9zb2Z0LmNvbT47IEJyZXQNCj4gQmFya2VsZXcgPEJyZXQuQmFya2VsZXdAbWlj cm9zb2Z0LmNvbT47IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gU3Vi amVjdDogUkU6IFtQYXRjaCAwNC8xNV0gTWRlUGtnL0Jhc2VMaWI6IEJyZWFrIG91dA0KPiBJQTMy L1g2NCBHQ0MgaW5saW5lIHByaXZpbGVnZWQgZnVuY3Rpb25zDQo+IA0KPiBNaWtlOg0KPiAgIElz IHRoZXJlIHRoZSBydWxlIHRvIGtub3cgd2hpY2ggZnVuY3Rpb24gY2FuJ3QgYmUgaW4NCj4gdW5p dCB0ZXN0PyBBbmQsIHRob3NlIGZ1bmN0aW9ucyB3aWxsIGJlIGluIEdjY0lubGluZS5jDQo+IG9y IEdjY0lubGluZVByaXYuYz8gVGhlcmUgaXMgbm8gY2hhbmdlIGluIE1TRlQgQyBzb3VyY2UNCj4g ZmlsZSwgYmVjYXVzZSBNU0ZUIEMgc291cmNlIGZpbGUgaGFzIGJlZW4gc2VwYXJhdGVkIGFzDQo+ IHRoZSBmdW5jdGlvbiBsZXZlbC4gUmlnaHQ/DQo+IA0KPiBUaGFua3MNCj4gTGltaW5nDQo+ID4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gU2VudDogTW9uZGF5LCBKdW5lIDE1LCAy MDIwIDg6MTkgQU0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogR2FvLCBM aW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgU2VhbiBCcm9nYW4NCj4gPHNlYW4uYnJvZ2Fu QG1pY3Jvc29mdC5jb20+OyBCcmV0IEJhcmtlbGV3DQo+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29m dC5jb20+Ow0KPiA+IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBTdWJq ZWN0OiBbUGF0Y2ggMDQvMTVdIE1kZVBrZy9CYXNlTGliOiBCcmVhayBvdXQNCj4gSUEzMi9YNjQg R0NDIGlubGluZSBwcml2aWxlZ2VkIGZ1bmN0aW9ucw0KPiA+DQo+ID4gaHR0cHM6Ly9idWd6aWxs YS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAwDQo+ID4NCj4gPiBCcmVhayBvdXQg dGhlIElBMzIvWDY0IEdDQyBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgY2FuDQo+IG5vdCBiZSB1c2Vk DQo+ID4gaW4gYSB1bml0IHRlc3QgaG9zdCBhcHBsaWNhdGlvbiBpbnRvIHRoZWlyIG93biBzb3Vy Y2UNCj4gZmlsZS4gIFRoaXMNCj4gPiBkb2VzIG5vdCBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoZSBC YXNlTGliIGxpYnJhcnkNCj4gaW5zdGFuY2UuICBUaGlzDQo+ID4gaXMgaW4gcHJlcGFyYXRpb24g Zm9yIGEgbmV3IEJhc2VMaWIgaW5zdGFuY2VzIHRoYXQgaXMNCj4gc2FmZSB0byB1c2UNCj4gPiB3 aXRoIGhvc3QtYmFzZWQgdW5pdCB0ZXN0IGFwcGxpY2F0aW9ucy4NCj4gPg0KPiA+IENjOiBMaW1p bmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4u YnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IEJyZXQgQmFya2VsZXcgPEJyZXQuQmFya2Vs ZXdAbWljcm9zb2Z0LmNvbT4NCj4gPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5j b20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTWljaGFlbCBEIEtpbm5leQ0KPiA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFz ZUxpYi5pbmYgICAgICAgICAgICB8ICAgIDQNCj4gKy0NCj4gPiAgTWRlUGtnL0xpYnJhcnkvQmFz ZUxpYi9JYTMyL0djY0lubGluZS5jICAgICAgIHwgMTE4MQ0KPiArLS0tLS0tLS0tLS0tLS0tDQo+ ID4gIC4uLi9JYTMyL3tHY2NJbmxpbmUuYyA9PiBHY2NJbmxpbmVQcml2LmN9ICAgICB8ICA2MDEN Cj4gKy0tLS0tLS0NCj4gPiAgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2NjSW5saW5lLmMg ICAgICAgIHwgMTI0MA0KPiArLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAuLi4vWDY0L3tHY2NJbmxp bmUuYyA9PiBHY2NJbmxpbmVQcml2LmN9ICAgICAgfCAgNTcyDQo+ICstLS0tLS0tDQo+ID4gIDUg ZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMzU4NyBkZWxldGlvbnMoLSkNCj4gPiAg Y29weSBNZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIve0djY0lubGluZS5jID0+DQo+IEdjY0lu bGluZVByaXYuY30gKDYyJSkNCj4gPiAgY29weSBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC97 R2NjSW5saW5lLmMgPT4NCj4gR2NjSW5saW5lUHJpdi5jfSAoNjUlKQ0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYi5pbmYNCj4gYi9NZGVQa2cvTGli cmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mDQo+ID4gaW5kZXggYTU3YWUyZGEzMS4uYzc0MGE4MTlj YSAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mDQo+ ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9CYXNlTGliLmluZg0KPiA+IEBAIC0xLDcg KzEsNyBAQA0KPiA+ICAjIyBAZmlsZQ0KPiA+ICAjICBCYXNlIExpYnJhcnkgaW1wbGVtZW50YXRp b24uDQo+ID4gICMNCj4gPiAtIyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxOSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjICBDb3B5cmlnaHQg KGMpIDIwMDcgLSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gICMgIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxl IEluYy4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gICMgIFBvcnRpb25zIGNvcHly aWdodCAoYykgMjAxMSAtIDIwMTMsIEFSTSBMdGQuIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ICAjICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNl DQo+IERldmVsb3BtZW50IExQLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiBAQCAtMTU2 LDYgKzE1Niw3IEBAIFtTb3VyY2VzLklhMzJdDQo+ID4NCj4gPg0KPiA+ICAgIElhMzIvR2NjSW5s aW5lLmMgfCBHQ0MNCj4gPiArICBJYTMyL0djY0lubGluZVByaXYuYyB8IEdDQw0KPiA+ICAgIElh MzIvVGh1bmsxNi5uYXNtDQo+ID4gICAgSWEzMi9FbmFibGVEaXNhYmxlSW50ZXJydXB0cy5uYXNt fCBHQ0MNCj4gPiAgICBJYTMyL0VuYWJsZVBhZ2luZzY0Lm5hc20NCj4gPiBAQCAtMzEwLDYgKzMx MSw3IEBAIFtTb3VyY2VzLlg2NF0NCj4gPiAgICBYODZQYXRjaEluc3RydWN0aW9uLmMNCj4gPiAg ICBYODZTcGVjdWxhdGlvbkJhcnJpZXIuYw0KPiA+ICAgIFg2NC9HY2NJbmxpbmUuYyB8IEdDQw0K PiA+ICsgIFg2NC9HY2NJbmxpbmVQcml2LmMgfCBHQ0MNCj4gPiAgICBYNjQvRW5hYmxlRGlzYWJs ZUludGVycnVwdHMubmFzbQ0KPiA+ICAgIFg2NC9EaXNhYmxlUGFnaW5nNjQubmFzbQ0KPiA+ICAg IFg2NC9SZFJhbmQubmFzbQ0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGli L0lhMzIvR2NjSW5saW5lLmMNCj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5s aW5lLmMNCj4gPiBpbmRleCA1Mjg3MjAwZjg3Li42ZWQ5MzgxODdhIDEwMDY0NA0KPiA+IC0tLSBh L01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJbmxpbmUuYw0KPiA+ICsrKyBiL01kZVBr Zy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJbmxpbmUuYw0KPiA+IEBAIC0xLDcgKzEsNyBAQA0K PiA+ICAvKiogQGZpbGUNCj4gPiAgICBHQ0MgaW5saW5lIGltcGxlbWVudGF0aW9uIG9mIEJhc2VM aWIgcHJvY2Vzc29yDQo+IHNwZWNpZmljIGZ1bmN0aW9ucy4NCj4gPg0KPiA+IC0gIENvcHlyaWdo dCAoYykgMjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDIwLCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gICAgUG9ydGlvbnMgY29weXJp Z2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+DQo+ID4gQEAgLTEwLDggKzEwLDYgQEANCj4gPg0KPiA+ICAjaW5jbHVkZSAiQmFzZUxpYklu dGVybmFscy5oIg0KPiA+DQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgVXNlZCB0byBz ZXJpYWxpemUgbG9hZCBhbmQgc3RvcmUgb3BlcmF0aW9ucy4NCj4gPg0KPiA+IEBAIC0zMSw0MSAr MjksNiBAQCBNZW1vcnlGZW5jZSAoDQo+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIiOjo6 Im1lbW9yeSIpOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIEVuYWJsZXMg Q1BVIGludGVycnVwdHMuDQo+ID4gLQ0KPiA+IC0gIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtRW5hYmxlSW50ZXJy dXB0cyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192 b2xhdGlsZV9fICgic3RpIjo6OiAibWVtb3J5Iik7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBEaXNhYmxlcyBDUFUgaW50ZXJydXB0cy4NCj4gPiAtDQo+ID4gLSAgRGlz YWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1F RklBUEkNCj4gPiAtRGlzYWJsZUludGVycnVwdHMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImNsaSI6OjogIm1lbW9yeSIpOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBSZXF1 ZXN0cyBDUFUgdG8gcGF1c2UgZm9yIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuDQo+ID4NCj4gPiBA QCAtODIsNyArNDUsNiBAQCBDcHVQYXVzZSAoDQo+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxlX18g KCJwYXVzZSIpOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIEdlbmVyYXRl cyBhIGJyZWFrcG9pbnQgb24gdGhlIENQVS4NCj4gPg0KPiA+IEBAIC05OSw3NSArNjEsNiBAQCBD cHVCcmVha3BvaW50ICgNCj4gPiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImludCAkMyIpOw0K PiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZXR1cm5zIGEgNjQt Yml0IE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXIoTVNSKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMg YW5kIHJldHVybnMgdGhlIDY0LWJpdCBNU1Igc3BlY2lmaWVkIGJ5DQo+IEluZGV4LiBObyBwYXJh bWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiAtICBwZXJmb3JtZWQgb24gSW5kZXgsIGFuZCBzb21lIElu ZGV4IHZhbHVlcyBtYXkgY2F1c2UNCj4gQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+IC0gIGNhbGxl ciBtdXN0IGVpdGhlciBndWFyYW50ZWUgdGhhdCBJbmRleCBpcyB2YWxpZCwNCj4gb3IgdGhlIGNh bGxlciBtdXN0IHNldCB1cA0KPiA+IC0gIGV4Y2VwdGlvbiBoYW5kbGVycyB0byBjYXRjaCB0aGUg ZXhjZXB0aW9ucy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9u IElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBN U1IgaW5kZXggdG8gcmVhZC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhl IE1TUiBpZGVudGlmaWVkIGJ5IEluZGV4Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0K PiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1zcjY0ICgNCj4gPiAtICBJTiAgICAgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgSW5kZXgNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQg RGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInJk bXNyIg0KPiA+IC0gICAgOiAiPUEiIChEYXRhKSAgIC8vICUwDQo+ID4gLSAgICA6ICJjIiAgKElu ZGV4KSAgLy8gJTENCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSA2NC1iaXQgdmFsdWUgdG8gYSBN YWNoaW5lIFNwZWNpZmljDQo+IFJlZ2lzdGVyKE1TUiksIGFuZCByZXR1cm5zIHRoZQ0KPiA+IC0g IHZhbHVlLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgdGhlIDY0LWJpdCB2YWx1ZSBzcGVjaWZpZWQg YnkgVmFsdWUgdG8gdGhlDQo+IE1TUiBzcGVjaWZpZWQgYnkgSW5kZXguIFRoZQ0KPiA+IC0gIDY0 LWJpdCB2YWx1ZSB3cml0dGVuIHRvIHRoZSBNU1IgaXMgcmV0dXJuZWQuIE5vDQo+IHBhcmFtZXRl ciBjaGVja2luZyBpcw0KPiA+IC0gIHBlcmZvcm1lZCBvbiBJbmRleCBvciBWYWx1ZSwgYW5kIHNv bWUgb2YgdGhlc2UgbWF5DQo+IGNhdXNlIENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiAtICBjYWxs ZXIgbXVzdCBlaXRoZXIgZ3VhcmFudGVlIHRoYXQgSW5kZXggYW5kIFZhbHVlDQo+IGFyZSB2YWxp ZCwgb3IgdGhlIGNhbGxlcg0KPiA+IC0gIG11c3QgZXN0YWJsaXNoIHByb3BlciBleGNlcHRpb24g aGFuZGxlcnMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJ QS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgTVNS IGluZGV4IHRvIHdyaXRlLg0KPiA+IC0gIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0 byB3cml0ZSB0byB0aGUgTVNSLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFZhbHVlDQo+ID4gLQ0K PiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZU1zcjY0ICgN Cj4gPiAtICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gLSAg SU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIndybXNyIg0KPiA+IC0g ICAgOg0KPiA+IC0gICAgOiAiYyIgKEluZGV4KSwNCj4gPiAtICAgICAgIkEiIChWYWx1ZSkNCj4g PiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBWYWx1ZTsNCj4gPiAtfQ0KPiA+IC0NCj4g PiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0 aGUgRUZMQUdTIHJlZ2lzdGVyLg0KPiA+DQo+ID4gQEAgLTE5NSw5NjUgKzg4LDYgQEAgQXNtUmVh ZEVmbGFncyAoDQo+ID4gICAgcmV0dXJuIEVmbGFnczsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+ IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRy b2wgUmVnaXN0ZXIgMA0KPiAoQ1IwKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVl IG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4N Cj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZENy MCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROICAgRGF0YTsN Cj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJSVj cjAsJTAiDQo+ID4gLSAgICA6ICI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAt ICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDINCj4gKENSMiku DQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENS Mi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFu ZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1i aXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVl IG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDIgKENSMikuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAt VUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRDcjIgKA0KPiA+IC0gIFZPSUQNCj4gPiAt ICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlJWNyMiwgJTAiDQo+ID4gLSAgICA6ICI9ciIg KERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0K PiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENv bnRyb2wgUmVnaXN0ZXIgMw0KPiAoQ1IzKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVy bnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZh bHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMyAoQ1Iz KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVh ZENyMyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7 DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUl Y3IzLCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+ IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAg UmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNA0KPiAoQ1I0 KS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg Q1I0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIg YW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFs dWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+ IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZENyNCAoDQo+ID4gLSAgVk9JRA0KPiA+ IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUlY3I0LCAlMCINCj4gPiAtICAgIDogIj1h IiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJv bCBSZWdpc3RlciAwIChDUjApLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBu ZXcgdmFsdWUgdG8gQ1IwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzIN Cj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBDcjAg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFs dWUgd3JpdHRlbiB0byBDUjAuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJ QVBJDQo+ID4gLUFzbVdyaXRlQ3IwICgNCj4gPiAtICBVSU5UTiAgQ3IwDQo+ID4gLSAgKQ0KPiA+ IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJTAsICUl Y3IwIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKENyMCkNCj4gPiAtICAgICk7DQo+ID4g LSAgcmV0dXJuIENyMDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdy aXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMiAoQ1IyKS4NCj4gPiAtDQo+ID4gLSAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMi4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgQ3IyIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjIuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IyLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUNyMiAoDQo+ID4gLSAgVUlO VE4gIENyMg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3ZsICUwLCAlJWNyMiINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChD cjIpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBDcjI7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDMg KENSMykuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBD UjMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBh bmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1i aXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIENyMyBUaGUgdmFsdWUgdG8g d3JpdGUgdG8gQ1IzLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRv IENSMy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNt V3JpdGVDcjMgKA0KPiA+IC0gIFVJTlROICBDcjMNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlMCwgJSVjcjMiDQo+ID4gLSAg ICA6DQo+ID4gLSAgICA6ICJyIiAoQ3IzKQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gQ3Iz Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUg dG8gQ29udHJvbCBSZWdpc3RlciA0IChDUjQpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJl dHVybnMgYSBuZXcgdmFsdWUgdG8gQ1I0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUg b24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBDcjQgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSNC4NCj4gPiAtDQo+ID4gLSAgQHJldHVy biBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4N Cj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlQ3I0ICgNCj4gPiAtICBVSU5UTiAgQ3I0DQo+ID4g LSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1v dmwgJTAsICUlY3I0Ig0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKENyNCkNCj4gPiAtICAg ICk7DQo+ID4gLSAgcmV0dXJuIENyNDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0K PiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDAgKERSMCku DQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERS MC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFu ZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1i aXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVl IG9mIERlYnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4N Cj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcjAgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoDQo+ID4gLSAgICAibW92bCAlJWRyMCwgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEp DQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0N Cj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVn IFJlZ2lzdGVyIDEgKERSMSkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSMS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0K PiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0g IEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDEgKERSMSkuDQo+ID4gLQ0KPiA+ IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcjEgKA0KPiA+IC0g IFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAt ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlJWRyMSwgJTAiDQo+ID4g LSAgICA6ICI9ciIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0 YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJy ZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gLQ0KPiA+IC0gIFJlYWRz IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSMi4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBh IDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBY NjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDIg KERSMikuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFz bVJlYWREcjIgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBE YXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92 bCAlJWRyMiwgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0N Cj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSMy4g VGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBY NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQg dmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9m IERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4g PiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcjMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAibW92bCAlJWRyMywgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJl Z2lzdGVyIDQgKERSNCkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIERSNC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJ QS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcjQgKA0KPiA+IC0gIFZP SUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlJWRyNCwgJTAiDQo+ID4gLSAg ICA6ICI9ciIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsN Cj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDUgKERSNSkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFu ZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMy LWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBYNjQu DQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDUgKERS NSkuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJl YWREcjUgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRh Ow0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAl JWRyNSwgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4g PiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0g IFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4g LQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNi4gVGhp cw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQu IFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFs dWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIERl YnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAt RUZJQVBJDQo+ID4gLUFzbVJlYWREcjYgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsN Cj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo DQo+ID4gLSAgICAibW92bCAlJWRyNiwgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ID4g LSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAt DQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lz dGVyIDcgKERSNykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IHZhbHVlIG9mIERSNy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0g IG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0z MiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1 cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gLQ0KPiA+IC0qKi8N Cj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcjcgKA0KPiA+IC0gIFZPSUQN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlJWRyNywgJTAiDQo+ID4gLSAgICA6 ICI9ciIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4g PiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERl YnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBh IG5ldyB2YWx1ZSB0byBEUjAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24N Cj4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0z Mg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIERy MCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIwLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2 YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDANCj4gKERSMCkuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlRHIwICgNCj4gPiAtICBV SU5UTiAgRHIwDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+IC0gICAgIm1vdmwgJTAsICUlZHIwIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIg KERyMCkNCj4gPiAtICAgICk7DQo+ID4gLSAgcmV0dXJuIERyMDsNCj4gPiAtfQ0KPiA+IC0NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDEg KERSMSkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBE UjEuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBh bmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1i aXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIERyMSBUaGUgdmFsdWUgdG8g d3JpdGUgdG8gRHIxLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRv IERlYnVnIFJlZ2lzdGVyIDENCj4gKERSMSkuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4N Cj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlRHIxICgNCj4gPiAtICBVSU5UTiAgRHIxDQo+ID4g LSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1v dmwgJTAsICUlZHIxIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKERyMSkNCj4gPiAtICAg ICk7DQo+ID4gLSAgcmV0dXJuIERyMTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0K PiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gLQ0K PiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjIuIFRoaXMNCj4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdy aXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0 Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIERyMiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIyLg0K PiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVy IDINCj4gKERSMikuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ ID4gLUFzbVdyaXRlRHIyICgNCj4gPiAtICBVSU5UTiAgRHIyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJTAsICUlZHIyIg0K PiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKERyMikNCj4gPiAtICAgICk7DQo+ID4gLSAgcmV0 dXJuIERyMjsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBh IHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBh bmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2 YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAt ICBAcGFyYW0gIERyMyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIzLg0KPiA+IC0NCj4gPiAtICBA cmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDMNCj4gKERSMykuDQo+ ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlRHIz ICgNCj4gPiAtICBVSU5UTiAgRHIzDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBf X3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJTAsICUlZHIzIg0KPiA+IC0gICAgOg0KPiA+ IC0gICAgOiAiciIgKERyMykNCj4gPiAtICAgICk7DQo+ID4gLSAgcmV0dXJuIERyMzsNCj4gPiAt fQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVn IFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5l dyB2YWx1ZSB0byBEUjQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4g PiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0K PiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIERyNCBU aGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1 ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDQNCj4gKERSNCkuDQo+ID4gLQ0KPiA+IC0qKi8N Cj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlRHI0ICgNCj4gPiAtICBVSU5U TiAgRHI0DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K PiA+IC0gICAgIm1vdmwgJTAsICUlZHI0Ig0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKERy NCkNCj4gPiAtICAgICk7DQo+ID4gLSAgcmV0dXJuIERyNDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAt DQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDUgKERS NSkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjUu IFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQg WDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQg dmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIERyNSBUaGUgdmFsdWUgdG8gd3Jp dGUgdG8gRHI1Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERl YnVnIFJlZ2lzdGVyIDUNCj4gKERSNSkuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4g PiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlRHI1ICgNCj4gPiAtICBVSU5UTiAgRHI1DQo+ID4gLSAg KQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwg JTAsICUlZHI1Ig0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKERyNSkNCj4gPiAtICAgICk7 DQo+ID4gLSAgcmV0dXJuIERyNTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4gLQ0KPiA+ IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjYuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRl cyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0K PiA+IC0NCj4gPiAtICBAcGFyYW0gIERyNiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI2Lg0KPiA+ IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDYN Cj4gKERSNikuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4g LUFzbVdyaXRlRHI2ICgNCj4gPiAtICBVSU5UTiAgRHI2DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJTAsICUlZHI2Ig0KPiA+ IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKERyNikNCj4gPiAtICAgICk7DQo+ID4gLSAgcmV0dXJu IERyNjsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBhIHZh bHVlIHRvIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQg cmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjcuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1 ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBA cGFyYW0gIERyNyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI3Lg0KPiA+IC0NCj4gPiAtICBAcmV0 dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDcNCj4gKERSNykuDQo+ID4g LQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlRHI3ICgN Cj4gPiAtICBVSU5UTiAgRHI3DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJTAsICUlZHI3Ig0KPiA+IC0gICAgOg0KPiA+IC0g ICAgOiAiciIgKERyNykNCj4gPiAtICAgICk7DQo+ID4gLSAgcmV0dXJuIERyNzsNCj4gPiAtfQ0K PiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9m IENvZGUgU2VnbWVudCBSZWdpc3Rlcg0KPiAoQ1MpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQg cmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1 cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1MuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDE2 DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkQ3MgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJtb3YgICAlJWNzLCAlMCINCj4gPiAtICAgIDoiPWEiIChEYXRh KQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEYXRh IFNlZ21lbnQgUmVnaXN0ZXINCj4gKERTKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVy bnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRo ZSBjdXJyZW50IHZhbHVlIG9mIERTLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+ IC1FRklBUEkNCj4gPiAtQXNtUmVhZERzICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAibW92ICAlJWRzLCAlMCINCj4gPiAtICAgIDoiPWEiIChEYXRhKQ0KPiA+ IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBFeHRyYSBTZWdt ZW50IFJlZ2lzdGVyDQo+IChFUykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRo ZSBjdXJyZW50IHZhbHVlIG9mIEVTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl IG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3Vy cmVudCB2YWx1ZSBvZiBFUy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJ QVBJDQo+ID4gLUFzbVJlYWRFcyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K PiA+IC0gICAgIm1vdiAgJSVlcywgJTAiDQo+ID4gLSAgICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAg ICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4g PiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMgRGF0YSBTZWdtZW50 IFJlZ2lzdGVyDQo+IChGUykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIEZTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVu dCB2YWx1ZSBvZiBGUy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJ DQo+ID4gLUFzbVJlYWRGcyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IFVJTlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ IC0gICAgIm1vdiAgJSVmcywgJTAiDQo+ID4gLSAgICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAgICk7 DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAt LyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MgRGF0YSBTZWdtZW50IFJl Z2lzdGVyDQo+IChHUykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIEdTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiBHUy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ ID4gLUFzbVJlYWRHcyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJ TlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0g ICAgIm1vdiAgJSVncywgJTAiDQo+ID4gLSAgICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgU3RhY2sgU2VnbWVudCBSZWdpc3Rl cg0KPiAoU1MpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBTUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0g IElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUg b2YgU1MuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1B c21SZWFkU3MgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMTYg IERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJt b3YgICUlZHMsICUwIg0KPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0N Cj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIFRhc2sgUmVnaXN0ZXIgKFRSKS4NCj4gPiAt DQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgVFIuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0Lg0K PiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIFRSLg0KPiA+IC0NCj4g PiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZFRyICgNCj4gPiAt ICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAic3RyICAlMCINCj4gPiAtICAg IDogIj1hIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg R2xvYmFsIERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4g PiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgR0RUUiBkZXNjcmlwdG9y IGFuZA0KPiByZXR1cm5zIGl0IGluIEdkdHIuIFRoaXMNCj4gPiAtICBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEdkdHIg IFRoZSBwb2ludGVyIHRvIGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUludGVybmFsWDg2UmVhZEdkdHIgKA0KPiA+IC0gIE9V VCAgICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqR2R0cg0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJzZ2R0ICUwIg0KPiA+IC0g ICAgOiAiPW0iICgqR2R0cikNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgR2xvYmFsIERlc2NyaXB0b3IgVGFibGUg UmVnaXN0ZXINCj4gKEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQg dGhlIGN1cnJlbnQgR0RUUiBkZXNjcmlwdG9yIHNwZWNpZmllZCBieQ0KPiBHZHRyLiBUaGlzIGZ1 bmN0aW9uIGlzDQo+ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4N Cj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRlcm5hbFg4 NldyaXRlR2R0ciAoDQo+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpH ZHRyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ IC0gICAgImxnZHQgJTAiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoKkdkdHIpDQo+ID4g LSAgICApOw0KPiA+IC0NCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJl YWRzIHRoZSBjdXJyZW50IEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyKEdE VFIpIGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IElEVFIgZGVzY3JpcHRvciBhbmQNCj4gcmV0dXJucyBpdCBpbiBJZHRyLiBUaGlzDQo+ID4g LSAgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ ID4gLSAgQHBhcmFtICBJZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4g PiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRlcm5hbFg4NlJl YWRJZHRyICgNCj4gPiAtICBPVVQgICAgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgKklkdHIN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAg ICAic2lkdCAgJTAiDQo+ID4gLSAgICA6ICI9bSIgKCpJZHRyKQ0KPiA+IC0gICAgKTsNCj4gPiAt fQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCBJbnRl cnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdpc3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+ IC0NCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgSURUUiBkZXNjcmlwdG9yIGFuZCByZXR1cm5z IGl0DQo+IGluIElkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5IGF2YWlsYWJsZSBv biBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIElkdHIgIFRoZSBwb2ludGVy IHRvIGEgSURUUiBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAt RUZJQVBJDQo+ID4gLUludGVybmFsWDg2V3JpdGVJZHRyICgNCj4gPiAtICBJTiAgICAgIENPTlNU IElBMzJfREVTQ1JJUFRPUiAgICAgKklkdHINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibGlkdCAlMCINCj4gPiAtICAgIDoNCj4gPiAt ICAgIDogIm0iICgqSWR0cikNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+ IFJlZ2lzdGVyKExEVFIpIHNlbGVjdG9yLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJu cyB0aGUgY3VycmVudCAxNi1iaXQgTERUUg0KPiBkZXNjcmlwdG9yIHZhbHVlLiBUaGlzIGZ1bmN0 aW9uIGlzDQo+ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCBzZWxlY3RvciBvZiBMRFQuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVUlOVDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkTGR0ciAoDQo+ID4gLSAg Vk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInNsZHQgICUwIg0KPiA+IC0gICAg OiAiPWciIChEYXRhKSAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4g RGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyB0aGUg Y3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlIFJlZ2lzdGVyDQo+IChHRFRSKSBzZWxlY3Rv ci4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCB0aGUgY3VycmVudCBMRFRSIGRlc2NyaXB0b3Ig c3BlY2lmaWVkIGJ5DQo+IExkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5IGF2YWls YWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIExkdHIgIDE2LWJp dCBMRFRSIHNlbGVjdG9yIHZhbHVlLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAt RUZJQVBJDQo+ID4gLUFzbVdyaXRlTGR0ciAoDQo+ID4gLSAgSU4gICAgICBVSU5UMTYgICAgICAg ICAgICAgICAgICAgIExkdHINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoDQo+ID4gLSAgICAibGxkdHcgICUwIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAi ZyIgKExkdHIpICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ ICAvKioNCj4gPiAgICBTYXZlIHRoZSBjdXJyZW50IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIGNv bnRleHQgdG8NCj4gYSBidWZmZXIuDQo+ID4NCj4gPiBAQCAtMTY1MCwxMTYgKzU4NCwzIEBAIEFz bVJlYWRUc2MgKA0KPiA+DQo+ID4gICAgcmV0dXJuIERhdGE7DQo+ID4gIH0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIFBlcmZvcm1h bmNlIENvdW50ZXINCj4gKFBNQykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRo ZSBjdXJyZW50IHZhbHVlIG9mIHBlcmZvcm1hbmNlDQo+IGNvdW50ZXIgc3BlY2lmaWVkIGJ5DQo+ ID4gLSAgSW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5k DQo+IFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IFBlcmZvcm1h bmNlIENvdW50ZXIgaW5kZXgNCj4gdG8gcmVhZC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUg dmFsdWUgb2YgdGhlIFBNQyBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gLQ0KPiA+IC0qKi8NCj4g PiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkUG1jICgNCj4gPiAtICBJTiAgICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAt ICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJyZHBtYyINCj4gPiAtICAgIDogIj1BIiAoRGF0YSkNCj4gPiAtICAgIDogImMiICAo SW5kZXgpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0K PiA+IC0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgRXhlY3V0ZXMgYSBX QklOVkQgaW5zdHJ1Y3Rpb24uDQo+ID4gLQ0KPiA+IC0gIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3Ry dWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZA0K PiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+ IC1Bc21XYmludmQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoIndiaW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gLX0NCj4gPiAtDQo+ ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBFeGVjdXRlcyBhIElOVkQgaW5zdHJ1Y3Rpb24uDQo+ID4g LQ0KPiA+IC0gIEV4ZWN1dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBv bmx5DQo+IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtSW52ZCAoDQo+ID4gLSAgVk9JRA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgiaW52ZCI6Ojoi bWVtb3J5Iik7DQo+ID4gLQ0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAg Rmx1c2hlcyBhIGNhY2hlIGxpbmUgZnJvbSBhbGwgdGhlIGluc3RydWN0aW9uIGFuZA0KPiBkYXRh IGNhY2hlcyB3aXRoaW4gdGhlDQo+ID4gLSAgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUgQ1BVLg0K PiA+IC0NCj4gPiAtICBGbHVzaGVkIHRoZSBjYWNoZSBsaW5lIHNwZWNpZmllZCBieSBMaW5lYXJB ZGRyZXNzLA0KPiBhbmQgcmV0dXJucyBMaW5lYXJBZGRyZXNzLg0KPiA+IC0gIFRoaXMgZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBMaW5lYXJBZGRyZXNzIFRoZSBhZGRyZXNzIG9mIHRoZSBjYWNoZSBsaW5lDQo+IHRvIGZs dXNoLiBJZiB0aGUgQ1BVIGlzDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgcGh5 c2ljYWwgYWRkcmVzc2luZw0KPiBtb2RlLCB0aGVuIExpbmVhckFkZHJlc3MgaXMgYQ0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGUgQ1BVDQo+IGlz IGluIGEgdmlydHVhbA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzaW5nIG1v ZGUsIHRoZW4NCj4gTGluZWFyQWRkcmVzcyBpcyBhIHZpcnR1YWwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgYWRkcmVzcy4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBMaW5lYXJBZGRyZXNz DQo+ID4gLSoqLw0KPiA+IC1WT0lEICoNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbUZsdXNoQ2FjaGVM aW5lICgNCj4gPiAtICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkxpbmVhckFk ZHJlc3MNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMzIgIFJlZ0VkeDsNCj4gPiAtDQo+ ID4gLSAgLy8NCj4gPiAtICAvLyBJZiB0aGUgQ1BVIGRvZXMgbm90IHN1cHBvcnQgQ0xGTFVTSCBp bnN0cnVjdGlvbiwNCj4gPiAtICAvLyB0aGVuIHByb21vdGUgZmx1c2ggcmFuZ2UgdG8gZmx1c2gg ZW50aXJlIGNhY2hlLg0KPiA+IC0gIC8vDQo+ID4gLSAgQXNtQ3B1aWQgKDB4MDEsIE5VTEwsIE5V TEwsIE5VTEwsICZSZWdFZHgpOw0KPiA+IC0gIGlmICgoUmVnRWR4ICYgQklUMTkpID09IDApIHsN Cj4gPiAtICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgid2JpbnZkIjo6OiJtZW1vcnkiKTsNCj4g PiAtICAgIHJldHVybiBMaW5lYXJBZGRyZXNzOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJjbGZsdXNoICglMCkiDQo+ID4g LSAgICA6ICIrYSIgKExpbmVhckFkZHJlc3MpDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtZW1v cnkiDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gTGluZWFyQWRkcmVzczsNCj4g PiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VM aWIvSWEzMi9HY2NJbmxpbmUuYw0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJ bmxpbmVQcml2LmMNCj4gPiBzaW1pbGFyaXR5IGluZGV4IDYyJQ0KPiA+IGNvcHkgZnJvbSBNZGVQ a2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lLmMNCj4gPiBjb3B5IHRvIE1kZVBrZy9M aWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJbmxpbmVQcml2LmMNCj4gPiBpbmRleCA1Mjg3MjAwZjg3 Li4zMGFhNjMyNDNiIDEwMDY0NA0KPiA+IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEz Mi9HY2NJbmxpbmUuYw0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJ bmxpbmVQcml2LmMNCj4gPiBAQCAtMSw3ICsxLDggQEANCj4gPiAgLyoqIEBmaWxlDQo+ID4gLSAg R0NDIGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlTGliIHByb2Nlc3Nvcg0KPiBzcGVjaWZp YyBmdW5jdGlvbnMuDQo+ID4gKyAgR0NDIGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlTGli IHByb2Nlc3Nvcg0KPiBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCB1c2UNCj4gPiArICBwcml2bGlk Z2VkIGluc3RydWN0aW9ucy4NCj4gPg0KPiA+IC0gIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTgs IEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBD b3B5cmlnaHQgKGMpIDIwMDYgLSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gICAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAw OSwgQXBwbGUgSW5jLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAgICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+DQo+ID4gQEAgLTEwLDI4 ICsxMSw2IEBADQo+ID4NCj4gPiAgI2luY2x1ZGUgIkJhc2VMaWJJbnRlcm5hbHMuaCINCj4gPg0K PiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFVzZWQgdG8gc2VyaWFsaXplIGxvYWQgYW5k IHN0b3JlIG9wZXJhdGlvbnMuDQo+ID4gLQ0KPiA+IC0gIEFsbCBsb2FkcyBhbmQgc3RvcmVzIHRo YXQgcHJvY2VlZCBjYWxscyB0byB0aGlzDQo+IGZ1bmN0aW9uIGFyZSBndWFyYW50ZWVkIHRvIGJl DQo+ID4gLSAgZ2xvYmFsbHkgdmlzaWJsZSB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4NCj4g PiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1NZW1vcnlGZW5jZSAo DQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIC8vIFRoaXMgaXMgYSBsaXR0 bGUgYml0IG9mIG92ZXJraWxsIGFuZCBpdCBpcyBtb3JlDQo+IGFib3V0IHRoZSBjb21waWxlciB0 aGF0IGl0IGlzDQo+ID4gLSAgLy8gYWN0dWFsbHkgcHJvY2Vzc29yIHN5bmNocm9uaXphdGlvbi4g VGhpcyBpcyBsaWtlDQo+IHRoZSBfUmVhZFdyaXRlQmFycmllcg0KPiA+IC0gIC8vIE1pY3Jvc29m dCBzcGVjaWZpYyBpbnRyaW5zaWMNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiI6Ojoi bWVtb3J5Iik7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBFbmFibGVz IENQVSBpbnRlcnJ1cHRzLg0KPiA+DQo+ID4gQEAgLTYzLDQ0ICs0Miw2IEBAIERpc2FibGVJbnRl cnJ1cHRzICgNCj4gPiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImNsaSI6OjogIm1lbW9yeSIp Ow0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVx dWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLg0KPiA+IC0NCj4g PiAtICBSZXF1ZXN0cyBDUFUgdG8gcGF1c2UgZm9yIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuDQo+ IFR5cGljYWxseSB1c2VkIGluIE1QDQo+ID4gLSAgc3lzdGVtcyB0byBwcmV2ZW50IG1lbW9yeSBz dGFydmF0aW9uIHdoaWxlIHdhaXRpbmcNCj4gZm9yIGEgc3BpbiBsb2NrLg0KPiA+IC0NCj4gPiAt KiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUNwdVBhdXNlICgNCj4gPiAtICBWT0lE DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJwYXVzZSIp Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgR2VuZXJhdGVzIGEgYnJl YWtwb2ludCBvbiB0aGUgQ1BVLg0KPiA+IC0NCj4gPiAtICBHZW5lcmF0ZXMgYSBicmVha3BvaW50 IG9uIHRoZSBDUFUuIFRoZSBicmVha3BvaW50DQo+IG11c3QgYmUgaW1wbGVtZW50ZWQgc3VjaA0K PiA+IC0gIHRoYXQgY29kZSBjYW4gcmVzdW1lIG5vcm1hbCBleGVjdXRpb24gYWZ0ZXIgdGhlDQo+ IGJyZWFrcG9pbnQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4g PiAtQ3B1QnJlYWtwb2ludCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW50ICQzIik7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgUmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNwZWNpZmlj IFJlZ2lzdGVyKE1TUikuDQo+ID4NCj4gPiBAQCAtMTY2LDM3ICsxMDcsNiBAQCBBc21Xcml0ZU1z cjY0ICgNCj4gPiAgICByZXR1cm4gVmFsdWU7DQo+ID4gIH0NCj4gPg0KPiA+IC0NCj4gPiAtDQo+ ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBFRkxBR1MgcmVn aXN0ZXIuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVl IG9mIHRoZSBFRkxBR1MNCj4gcmVnaXN0ZXIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5 IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi0NCj4gYml0IHZh bHVlIG9uIElBLTMyIGFuZCBhDQo+ID4gLSAgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ ID4gLSAgQHJldHVybiBFRkxBR1Mgb24gSUEtMzIgb3IgUkZMQUdTIG9uIFg2NC4NCj4gPiAtDQo+ ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZEVmbGFncyAoDQo+ ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIEVmbGFnczsNCj4gPiAt DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInB1c2hmbCAgICAgXG5c dCINCj4gPiAtICAgICJwb3BsICUwICAgICAgICAiDQo+ID4gLSAgICA6ICI9ciIgKEVmbGFncykN Cj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBFZmxhZ3M7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMA0KPiAoQ1IwKS4NCj4gPg0KPiA+IEBAIC0xMTUzLDUw NSArMTA2Myw2IEBAIEFzbVdyaXRlTGR0ciAoDQo+ID4gICAgICApOw0KPiA+ICB9DQo+ID4NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIFNhdmUgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NF L1NTRTIgY29udGV4dCB0bw0KPiBhIGJ1ZmZlci4NCj4gPiAtDQo+ID4gLSAgU2F2ZXMgdGhlIGN1 cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgc3RhdGUgdG8NCj4gdGhlIGJ1ZmZlciBzcGVj aWZpZWQgYnkNCj4gPiAtICBCdWZmZXIuIEJ1ZmZlciBtdXN0IGJlIGFsaWduZWQgb24gYSAxNi1i eXRlDQo+IGJvdW5kYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkNCj4gPiAtICBhdmFpbGFibGUg b24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBCdWZmZXIgIFRoZSBwb2lu dGVyIHRvIGEgYnVmZmVyIHRvIHNhdmUgdGhlDQo+IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIGNv bnRleHQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtSW50 ZXJuYWxYODZGeFNhdmUgKA0KPiA+IC0gIE9VVCAgICAgSUEzMl9GWF9CVUZGRVIgICAgICAgICAg ICAqQnVmZmVyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+IC0gICAgImZ4c2F2ZSAlMCINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0iICgqQnVm ZmVyKSAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioN Cj4gPiAtICBSZXN0b3JlcyB0aGUgY3VycmVudCBmbG9hdGluZyBwb2ludC9TU0UvU1NFMg0KPiBj b250ZXh0IGZyb20gYSBidWZmZXIuDQo+ID4gLQ0KPiA+IC0gIFJlc3RvcmVzIHRoZSBjdXJyZW50 IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIHN0YXRlDQo+IGZyb20gdGhlIGJ1ZmZlciBzcGVjaWZp ZWQNCj4gPiAtICBieSBCdWZmZXIuIEJ1ZmZlciBtdXN0IGJlIGFsaWduZWQgb24gYSAxNi1ieXRl DQo+IGJvdW5kYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gLSAgb25seSBhdmFpbGFibGUgb24g SUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBCdWZmZXIgIFRoZSBwb2ludGVy IHRvIGEgYnVmZmVyIHRvIHNhdmUgdGhlDQo+IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIGNvbnRl eHQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtSW50ZXJu YWxYODZGeFJlc3RvcmUgKA0KPiA+IC0gIElOICAgICAgQ09OU1QgSUEzMl9GWF9CVUZGRVIgICAg ICAqQnVmZmVyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+IC0gICAgImZ4cnN0b3IgJTAiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoKkJ1 ZmZlcikgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAj MA0KPiAoTU0wKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgTU0wLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAg b24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1 ZSBvZiBNTTAuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+ IC1Bc21SZWFkTW0wICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlO VDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAg ICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAg ICAgXG5cdCINCj4gPiAtICAgICJtb3ZxICUlbW0wLCAgKCUlZXNwKVxuXHQiDQo+ID4gLSAgICAi cG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgInBvcCAgJSVlZHggICAgICAgICAg XG5cdCINCj4gPiAtICAgIDogIj1BIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0K PiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8q Kg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIg IzENCj4gKE1NMSkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IHZhbHVlIG9mIE1NMS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0g IG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFs dWUgb2YgTU0xLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4g PiAtQXNtUmVhZE1tMSAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJ TlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0g ICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJwdXNoICUlZWF4ICAgICAg ICAgIFxuXHQiDQo+ID4gLSAgICAibW92cSAlJW1tMSwgICglJWVzcClcblx0Ig0KPiA+IC0gICAg InBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJwb3AgICUlZWR4ICAgICAgICAg IFxuXHQiDQo+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsN Cj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVy ICMyDQo+IChNTTIpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBNTTIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAt ICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZh bHVlIG9mIE1NMi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ ID4gLUFzbVJlYWRNbTIgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBV SU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAt ICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAicHVzaCAlJWVheCAgICAg ICAgICBcblx0Ig0KPiA+IC0gICAgIm1vdnEgJSVtbTIsICAoJSVlc3ApXG5cdCINCj4gPiAtICAg ICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAicG9wICAlJWVkeCAgICAgICAg ICBcblx0Ig0KPiA+IC0gICAgOiAiPUEiICAoRGF0YSkgICAgICAgLy8gJTANCj4gPiAtICAgICk7 DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAt LyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3Rl ciAjMw0KPiAoTU0zKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgTU0zLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4g LSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiBNTTMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0K PiA+IC1Bc21SZWFkTW0zICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAg VUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4g LSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgInB1c2ggJSVlYXggICAg ICAgICAgXG5cdCINCj4gPiAtICAgICJtb3ZxICUlbW0zLCAgKCUlZXNwKVxuXHQiDQo+ID4gLSAg ICAicG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgInBvcCAgJSVlZHggICAgICAg ICAgXG5cdCINCj4gPiAtICAgIDogIj1BIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICAp Ow0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4g LS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0 ZXIgIzQNCj4gKE1NNCkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIE1NNC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQg dmFsdWUgb2YgTU00Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkN Cj4gPiAtQXNtUmVhZE1tNCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJwdXNoICUlZWF4ICAg ICAgICAgIFxuXHQiDQo+ID4gLSAgICAibW92cSAlJW1tNCwgICglJWVzcClcblx0Ig0KPiA+IC0g ICAgInBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJwb3AgICUlZWR4ICAgICAg ICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0gICAg KTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lz dGVyICM1DQo+IChNTTUpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBNTTUuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4g PiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50 IHZhbHVlIG9mIE1NNS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJ DQo+ID4gLUFzbVJlYWRNbTUgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAt ICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAicHVzaCAlJWVheCAg ICAgICAgICBcblx0Ig0KPiA+IC0gICAgIm1vdnEgJSVtbTUsICAoJSVlc3ApXG5cdCINCj4gPiAt ICAgICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAicG9wICAlJWVkeCAgICAg ICAgICBcblx0Ig0KPiA+IC0gICAgOiAiPUEiICAoRGF0YSkgICAgICAgLy8gJTANCj4gPiAtICAg ICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4g PiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdp c3RlciAjNg0KPiAoTU02KS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgTU02LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVu dCB2YWx1ZSBvZiBNTTYuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQ SQ0KPiA+IC1Bc21SZWFkTW02ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgVUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgInB1c2ggJSVlYXgg ICAgICAgICAgXG5cdCINCj4gPiAtICAgICJtb3ZxICUlbW02LCAgKCUlZXNwKVxuXHQiDQo+ID4g LSAgICAicG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgInBvcCAgJSVlZHggICAg ICAgICAgXG5cdCINCj4gPiAtICAgIDogIj1BIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAg ICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVn aXN0ZXIgIzcNCj4gKE1NNykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIE1NNy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJl bnQgdmFsdWUgb2YgTU03Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklB UEkNCj4gPiAtQXNtUmVhZE1tNyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K PiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJwdXNoICUlZWF4 ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAibW92cSAlJW1tNywgICglJWVzcClcblx0Ig0KPiA+ IC0gICAgInBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJwb3AgICUlZWR4ICAg ICAgICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjMA0KPiAoTU0wKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NMC4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NMC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tMCAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW0wIiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjMQ0KPiAoTU0xKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NMS4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NMS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tMSAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW0xIiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjMg0KPiAoTU0yKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NMi4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NMi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tMiAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW0yIiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjMw0KPiAoTU0zKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NMy4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NMy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tMyAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW0zIiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjNA0KPiAoTU00KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NNC4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NNC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tNCAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW00IiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjNQ0KPiAoTU01KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NNS4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NNS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tNSAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW01IiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjNg0KPiAoTU02KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NNi4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NNi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tNiAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW02IiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3RlciAjNw0KPiAoTU03KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NNy4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFu ZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIE1NNy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZU1tNyAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdnEgJTAsICUlbW03IiAgLy8gJTANCj4gPiAtICAgIDoNCj4g PiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUaW1lIFN0YW1wIENv dW50ZXINCj4gKFRTQykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIFRTQy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQg dmFsdWUgb2YgVFNDDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0K PiA+IC1Bc21SZWFkVHNjICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAg VUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4g LSAgICAicmR0c2MiDQo+ID4gLSAgICA6ICI9QSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0N Cj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ ICAgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiAo UE1DKS4NCj4gPg0KPiA+IEBAIC0xNjgwLDkgKzEwOTEsNiBAQCBBc21SZWFkUG1jICgNCj4gPiAg ICByZXR1cm4gRGF0YTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4gIC8q Kg0KPiA+ICAgIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+DQo+ID4gQEAgLTE2 OTksNyArMTEwNyw2IEBAIEFzbVdiaW52ZCAoDQo+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxlX18g KCJ3YmludmQiOjo6Im1lbW9yeSIpOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ ICAgIEV4ZWN1dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4NCj4gPg0KPiA+IEBAIC0xNzYxLDUgKzEx NjgsMyBAQCBBc21GbHVzaENhY2hlTGluZSAoDQo+ID4NCj4gPiAgICByZXR1cm4gTGluZWFyQWRk cmVzczsNCj4gPiAgfQ0KPiA+IC0NCj4gPiAtDQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJy YXJ5L0Jhc2VMaWIvWDY0L0djY0lubGluZS5jDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Y NjQvR2NjSW5saW5lLmMNCj4gPiBpbmRleCAxNTRjZTFmNTdlLi40MGEyMDhmMTk4IDEwMDY0NA0K PiA+IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lubGluZS5jDQo+ID4gKysr IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2NjSW5saW5lLmMNCj4gPiBAQCAtMSw3ICsx LDcgQEANCj4gPiAgLyoqIEBmaWxlDQo+ID4gICAgR0NDIGlubGluZSBpbXBsZW1lbnRhdGlvbiBv ZiBCYXNlTGliIHByb2Nlc3Nvcg0KPiBzcGVjaWZpYyBmdW5jdGlvbnMuDQo+ID4NCj4gPiAtICBD b3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAyMCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIFBvcnRpb25z IGNvcHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4gQWxsDQo+IHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPg0KPiA+IEBAIC0zMyw0MCArMzMsNiBAQCBNZW1vcnlGZW5jZSAoDQo+ID4gIH0N Cj4gPg0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4g LQ0KPiA+IC0gIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAt Vk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtRW5hYmxlSW50ZXJydXB0cyAoDQo+ID4gLSAgVk9JRA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgic3RpIjo6OiAi bWVtb3J5Iik7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBEaXNhYmxl cyBDUFUgaW50ZXJydXB0cy4NCj4gPiAtDQo+ID4gLSAgRGlzYWJsZXMgQ1BVIGludGVycnVwdHMu DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtRGlzYWJsZUlu dGVycnVwdHMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoImNsaSI6OjogIm1lbW9yeSIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0N Cj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBSZXF1ZXN0cyBDUFUgdG8gcGF1c2UgZm9y IGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuDQo+ID4NCj4gPiBAQCAtMTAxLDgzICs2Nyw2IEBAIENw dUJyZWFrcG9pbnQgKA0KPiA+ICB9DQo+ID4NCj4gPg0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAg UmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVyKE1TUikuDQo+ID4gLQ0K PiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSA2NC1iaXQgTVNSIHNwZWNpZmllZCBieQ0KPiBJ bmRleC4gTm8gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ID4gLSAgcGVyZm9ybWVkIG9uIEluZGV4 LCBhbmQgc29tZSBJbmRleCB2YWx1ZXMgbWF5IGNhdXNlDQo+IENQVSBleGNlcHRpb25zLiBUaGUN Cj4gPiAtICBjYWxsZXIgbXVzdCBlaXRoZXIgZ3VhcmFudGVlIHRoYXQgSW5kZXggaXMgdmFsaWQs DQo+IG9yIHRoZSBjYWxsZXIgbXVzdCBzZXQgdXANCj4gPiAtICBleGNlcHRpb24gaGFuZGxlcnMg dG8gY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEluZGV4 IFRoZSAzMi1iaXQgTVNSIGluZGV4IHRvIHJlYWQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhl IHZhbHVlIG9mIHRoZSBNU1IgaWRlbnRpZmllZCBieSBJbmRleC4NCj4gPiAtDQo+ID4gLSoqLw0K PiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNc3I2NCAoDQo+ID4gLSAgSU4g ICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ID4gLSAgKQ0KPiA+IC17DQo+ ID4gLSAgVUlOVDMyIExvd0RhdGE7DQo+ID4gLSAgVUlOVDMyIEhpZ2hEYXRhOw0KPiA+IC0NCj4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAicmRtc3IiDQo+ID4gLSAgICA6 ICI9YSIgKExvd0RhdGEpLCAgIC8vICUwDQo+ID4gLSAgICAgICI9ZCIgKEhpZ2hEYXRhKSAgIC8v ICUxDQo+ID4gLSAgICA6ICJjIiAgKEluZGV4KSAgICAgIC8vICUyDQo+ID4gLSAgICApOw0KPiA+ IC0NCj4gPiAtICByZXR1cm4gKCgoVUlOVDY0KUhpZ2hEYXRhKSA8PCAzMikgfCBMb3dEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSA2NC1iaXQgdmFsdWUgdG8g YSBNYWNoaW5lIFNwZWNpZmljDQo+IFJlZ2lzdGVyKE1TUiksIGFuZCByZXR1cm5zIHRoZQ0KPiA+ IC0gIHZhbHVlLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgdGhlIDY0LWJpdCB2YWx1ZSBzcGVjaWZp ZWQgYnkgVmFsdWUgdG8gdGhlDQo+IE1TUiBzcGVjaWZpZWQgYnkgSW5kZXguIFRoZQ0KPiA+IC0g IDY0LWJpdCB2YWx1ZSB3cml0dGVuIHRvIHRoZSBNU1IgaXMgcmV0dXJuZWQuIE5vDQo+IHBhcmFt ZXRlciBjaGVja2luZyBpcw0KPiA+IC0gIHBlcmZvcm1lZCBvbiBJbmRleCBvciBWYWx1ZSwgYW5k IHNvbWUgb2YgdGhlc2UgbWF5DQo+IGNhdXNlIENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiAtICBj YWxsZXIgbXVzdCBlaXRoZXIgZ3VhcmFudGVlIHRoYXQgSW5kZXggYW5kIFZhbHVlDQo+IGFyZSB2 YWxpZCwgb3IgdGhlIGNhbGxlcg0KPiA+IC0gIG11c3QgZXN0YWJsaXNoIHByb3BlciBleGNlcHRp b24gaGFuZGxlcnMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAt ICBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQg TVNSIGluZGV4IHRvIHdyaXRlLg0KPiA+IC0gIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1 ZSB0byB3cml0ZSB0byB0aGUgTVNSLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFZhbHVlDQo+ID4g LQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZU1zcjY0 ICgNCj4gPiAtICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4g LSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+ IC17DQo+ID4gLSAgVUlOVDMyIExvd0RhdGE7DQo+ID4gLSAgVUlOVDMyIEhpZ2hEYXRhOw0KPiA+ IC0NCj4gPiAtICBMb3dEYXRhICA9IChVSU5UMzIpKFZhbHVlKTsNCj4gPiAtICBIaWdoRGF0YSA9 IChVSU5UMzIpKFZhbHVlID4+IDMyKTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxl X18gKA0KPiA+IC0gICAgIndybXNyIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiYyIgKEluZGV4 KSwNCj4gPiAtICAgICAgImEiIChMb3dEYXRhKSwNCj4gPiAtICAgICAgImQiIChIaWdoRGF0YSkN Cj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBWYWx1ZTsNCj4gPiAtfQ0KPiA+IC0N Cj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0KPiA+DQo+ID4gQEAgLTIwNSw5NjUgKzk0LDYgQEAgQXNt UmVhZEVmbGFncyAoDQo+ID4gICAgcmV0dXJuIEVmbGFnczsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0K PiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENv bnRyb2wgUmVnaXN0ZXIgMA0KPiAoQ1IwKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVy bnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZh bHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1Iw KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVh ZENyMCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROICAgRGF0 YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAg JSVjcjAsJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpICAgICAgICAgICAvLyAlMA0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBS ZWdpc3RlciAyDQo+IChDUjIpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBDUjIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUN Cj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24N Cj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAt ICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAyIChDUjIpLg0KPiA+ IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkQ3IyICgN Cj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAt DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVjcjIsICAl MCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkgICAgICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0K PiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4g LSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMw0KPiAo Q1IzKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgQ1IzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEt MzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBh IDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUg dmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMyAoQ1IzKS4NCj4gPiAtDQo+ID4gLSoqLw0K PiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZENyMyAoDQo+ID4gLSAgVk9JRA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlY3IzLCAgJTAiDQo+ID4gLSAgICA6 ICI9ciIgKERhdGEpICAgICAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAg cmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFk cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0DQo+IChDUjQpLg0K PiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjQu IFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQg WDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0 IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBv ZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0IChDUjQpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJ TlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkQ3I0ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAg KQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVjcjQsICAlMCINCj4gPiAtICAgIDogIj1yIiAo RGF0YSkgICAgICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4g RGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyBhIHZh bHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFu ZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZh bHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0g IEBwYXJhbSAgQ3IwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjAuDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IwLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJ TlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUNyMCAoDQo+ID4gLSAgVUlOVE4gIENyMA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAg ICJtb3YgICUwLCAlJWNyMCINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChDcjApDQo+ID4g LSAgICApOw0KPiA+IC0gIHJldHVybiBDcjA7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDIgKENSMikuDQo+ ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjIuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0LiBU aGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUg b24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIENyMiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8g Q1IyLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENSMi4NCj4g PiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVDcjIg KA0KPiA+IC0gIFVJTlROICBDcjINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVjcjIiDQo+ID4gLSAgICA6DQo+ID4g LSAgICA6ICJyIiAoQ3IyKQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gQ3IyOw0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJv bCBSZWdpc3RlciAzIChDUjMpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBu ZXcgdmFsdWUgdG8gQ1IzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzIN Cj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBDcjMg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFs dWUgd3JpdHRlbiB0byBDUjMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJ QVBJDQo+ID4gLUFzbVdyaXRlQ3IzICgNCj4gPiAtICBVSU5UTiAgQ3IzDQo+ID4gLSAgKQ0KPiA+ IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJTAsICUl Y3IzIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKENyMykNCj4gPiAtICAgICk7DQo+ID4g LSAgcmV0dXJuIENyMzsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdy aXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiAtDQo+ID4gLSAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSNC4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgQ3I0IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjQuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1I0Lg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUNyNCAoDQo+ID4gLSAgVUlO VE4gIENyNA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3YgICUwLCAlJWNyNCINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChD cjQpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBDcjQ7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdp c3RlciAwIChEUjApLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBEUjAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAt ICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEt MzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0 dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHIwICgNCj4gPiAtICBWT0lE DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19h c21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcjAsICUwIg0KPiA+IC0gICAg OiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQg cmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjEuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1i aXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0K PiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAxIChEUjEp Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFk RHIxICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsN Cj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVk cjEsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4g LSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyIChEUjIpLg0KPiA+IC0N Cj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjIuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBU aGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVl IG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciAyIChEUjIpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21SZWFkRHIyICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K PiA+IC0gICAgIm1vdiAgJSVkcjIsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3Rl ciAzIChEUjMpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBEUjMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBv biBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIg YW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJu IFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHIzICgNCj4gPiAtICBWT0lEDQo+ ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcjMsICUwIg0KPiA+IC0gICAgOiAi PXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4g LX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQg dmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+ IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0K PiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHI0 ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4g PiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcjQs ICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAg cmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFk cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0KPiA+IC0NCj4g PiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjUuIFRoaXMNCj4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlz IHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9u DQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBS ZWdpc3RlciA1IChEUjUpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQ SQ0KPiA+IC1Bc21SZWFkRHI1ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ IC0gICAgIm1vdiAgJSVkcjUsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAg KTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2 IChEUjYpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBEUjYuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJ QS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5k IGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRo ZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2IChEUjYpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHI2ICgNCj4gPiAtICBWT0lEDQo+ID4g LSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBf X3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcjYsICUwIg0KPiA+IC0gICAgOiAiPXIi IChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJu cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjcuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFs dWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0N Cj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+ IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHI3ICgN Cj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAt DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcjcsICUw Ig0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0 dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMg YSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMg YW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQg dmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4g LSAgQHBhcmFtICBEcjAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyMC4NCj4gPiAtDQo+ID4gLSAg QHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAwDQo+IChEUjApLg0K PiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURy MCAoDQo+ID4gLSAgVUlOVE4gIERyMA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUwLCAlJWRyMCINCj4gPiAtICAgIDoNCj4g PiAtICAgIDogInIiIChEcjApDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjA7DQo+ID4g LX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1 ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBu ZXcgdmFsdWUgdG8gRFIxLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzIN Cj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjEg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyMS4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFs dWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAxDQo+IChEUjEpLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyMSAoDQo+ID4gLSAgVUlO VE4gIERyMQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3YgICUwLCAlJWRyMSINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChE cjEpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjE7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAyIChE UjIpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIy LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5k IFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0 IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjIgVGhlIHZhbHVlIHRvIHdy aXRlIHRvIERyMi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBE ZWJ1ZyBSZWdpc3RlciAyDQo+IChEUjIpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyMiAoDQo+ID4gLSAgVUlOVE4gIERyMg0KPiA+IC0g ICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3Yg ICUwLCAlJWRyMiINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjIpDQo+ID4gLSAgICAp Ow0KPiA+IC0gIHJldHVybiBEcjI7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4g PiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+IC0NCj4g PiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIzLiBUaGlzDQo+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0 ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4N Cj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyMy4NCj4g PiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAz DQo+IChEUjMpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+ IC1Bc21Xcml0ZURyMyAoDQo+ID4gLSAgVUlOVE4gIERyMw0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUwLCAlJWRyMyINCj4g PiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjMpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVy biBEcjM7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2 YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5k IHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFs dWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAg QHBhcmFtICBEcjQgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNC4NCj4gPiAtDQo+ID4gLSAgQHJl dHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA0DQo+IChEUjQpLg0KPiA+ IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyNCAo DQo+ID4gLSAgVUlOVE4gIERyNA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192 b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUwLCAlJWRyNCINCj4gPiAtICAgIDoNCj4gPiAt ICAgIDogInIiIChEcjQpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjQ7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBS ZWdpc3RlciA1IChEUjUpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcg dmFsdWUgdG8gRFI1LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4g LSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4g YW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjUgVGhl IHZhbHVlIHRvIHdyaXRlIHRvIERyNS4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUg d3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA1DQo+IChEUjUpLg0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyNSAoDQo+ID4gLSAgVUlOVE4g IERyNQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJtb3YgICUwLCAlJWRyNSINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjUp DQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjU7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA2IChEUjYp Lg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI2LiBU aGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2 NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZh bHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjYgVGhlIHZhbHVlIHRvIHdyaXRl IHRvIERyNi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1 ZyBSZWdpc3RlciA2DQo+IChEUjYpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4g LUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyNiAoDQo+ID4gLSAgVUlOVE4gIERyNg0KPiA+IC0gICkN Cj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUw LCAlJWRyNiINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjYpDQo+ID4gLSAgICApOw0K PiA+IC0gIHJldHVybiBEcjY7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAt ICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+IC0NCj4gPiAt ICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI3LiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMg YSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4g PiAtDQo+ID4gLSAgQHBhcmFtICBEcjcgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNy4NCj4gPiAt DQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA3DQo+ IChEUjcpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1B c21Xcml0ZURyNyAoDQo+ID4gLSAgVUlOVE4gIERyNw0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUwLCAlJWRyNyINCj4gPiAt ICAgIDoNCj4gPiAtICAgIDogInIiIChEcjcpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBE cjc7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBDb2RlIFNlZ21lbnQgUmVnaXN0ZXINCj4gKENTKS4NCj4gPiAtDQo+ID4g LSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1MuIFRoaXMNCj4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0N Cj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIENTLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZENzICgNCj4gPiAtICBWT0lE DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAgJSVjcywgJTAiDQo+ID4gLSAg ICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRGF0YSBTZWdtZW50IFJlZ2lzdGVyDQo+IChEUykuDQo+ID4gLQ0KPiA+IC0gIFJl YWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERTLiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4g LSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBEUy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+ IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcyAoDQo+ID4gLSAgVk9JRA0KPiA+ IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcywgJTAiDQo+ID4gLSAgICA6Ij1h IiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgRXh0cmEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRVMpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBFUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlO VDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRXMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICAp DQo+ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192 b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZXMsICUwIg0KPiA+IC0gICAgOiI9YSIgKERh dGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+ IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEZT IERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRlMpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQg cmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1 cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDE2 DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRnMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZnMsICUwIg0KPiA+IC0gICAgOiI9YSIgKERhdGEp DQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0N Cj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEdTIERh dGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoR1MpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBHUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4g VGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDE2DQo+ ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkR3MgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiAtICAgICJtb3YgICUlZ3MsICUwIg0KPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIFN0YWNrIFNl Z21lbnQgUmVnaXN0ZXINCj4gKFNTKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgU1MuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBj dXJyZW50IHZhbHVlIG9mIFNTLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1F RklBUEkNCj4gPiAtQXNtUmVhZFNzICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo DQo+ID4gLSAgICAibW92ICAlJWRzLCAlMCINCj4gPiAtICAgIDoiPWEiIChEYXRhKQ0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUYXNrIFJlZ2lzdGVy IChUUikuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVl IG9mIFRSLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEt MzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBU Ui4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJl YWRUciAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQxNiAgRGF0 YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInN0ciAg JTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICBy ZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRz IHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyKEdEVFIpIGRl c2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IEdE VFIgZGVzY3JpcHRvciBhbmQNCj4gcmV0dXJucyBpdCBpbiBHZHRyLiBUaGlzDQo+ID4gLSAgZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAg QHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4NCj4gPiAtDQo+ ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRlcm5hbFg4NlJlYWRHZHRy ICgNCj4gPiAtICBPVVQgICAgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgKkdkdHINCj4gPiAt ICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAic2dk dCAlMCINCj4gPiAtICAgIDogIj1tIiAoKkdkdHIpDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4g LQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNj cmlwdG9yIFRhYmxlIFJlZ2lzdGVyDQo+IChHRFRSKSBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAt ICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBzcGVjaWZpZWQgYnkNCj4g R2R0ci4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFu ZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgR2R0ciAgVGhlIHBvaW50ZXIgdG8gYSBHRFRS IGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4g PiAtSW50ZXJuYWxYODZXcml0ZUdkdHIgKA0KPiA+IC0gIElOICAgICAgQ09OU1QgSUEzMl9ERVND UklQVE9SICAgICAqR2R0cg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJsZ2R0ICUwIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIg KCpHZHRyKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCBJbnRlcnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0K PiBSZWdpc3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCBJRFRSIGRlc2NyaXB0b3IgYW5kDQo+IHJldHVybnMgaXQgaW4gSWR0 ci4gVGhpcw0KPiA+IC0gIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBY NjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRSIGRl c2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAt SW50ZXJuYWxYODZSZWFkSWR0ciAoDQo+ID4gLSAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAg ICAgICAgICpJZHRyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxl X18gKA0KPiA+IC0gICAgInNpZHQgICUwIg0KPiA+IC0gICAgOiAiPW0iICgqSWR0cikNCj4gPiAt ICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhl IGN1cnJlbnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoR0RUUikgZGVz Y3JpcHRvci4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IElEVFIgZGVzY3JpcHRv ciBhbmQgcmV0dXJucyBpdA0KPiBpbiBJZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gLSAgb25s eSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBJZHRy ICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+ IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRlcm5hbFg4NldyaXRlSWR0ciAoDQo+ID4gLSAg SU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpJZHRyDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImxpZHQgJTAiDQo+ID4g LSAgICA6DQo+ID4gLSAgICA6ICJtIiAoKklkdHIpDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4g LQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgTG9jYWwgRGVzY3Jp cHRvciBUYWJsZQ0KPiBSZWdpc3RlcihMRFRSKSBzZWxlY3Rvci4NCj4gPiAtDQo+ID4gLSAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgMTYtYml0IExEVFINCj4gZGVzY3JpcHRvciB2YWx1 ZS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBY NjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgc2VsZWN0b3Igb2YgTERULg0K PiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZExk dHIgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7 DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJzbGR0ICAl MCINCj4gPiAtICAgIDogIj1nIiAoRGF0YSkgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAt ICBXcml0ZXMgdGhlIGN1cnJlbnQgTG9jYWwgRGVzY3JpcHRvciBUYWJsZSBSZWdpc3Rlcg0KPiAo R0RUUikgc2VsZWN0b3IuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgdGhlIGN1cnJlbnQgTERU UiBkZXNjcmlwdG9yIHNwZWNpZmllZCBieQ0KPiBMZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4g LSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFt ICBMZHRyICAxNi1iaXQgTERUUiBzZWxlY3RvciB2YWx1ZS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+ IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUxkdHIgKA0KPiA+IC0gIElOICAgICAg VUlOVDE2ICAgICAgICAgICAgICAgICAgICBMZHRyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAg X19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImxsZHR3ICAlMCINCj4gPiAtICAgIDoN Cj4gPiAtICAgIDogImciIChMZHRyKSAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4g LQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgU2F2ZSB0aGUgY3VycmVudCBmbG9hdGluZyBwb2lu dC9TU0UvU1NFMiBjb250ZXh0IHRvDQo+IGEgYnVmZmVyLg0KPiA+DQo+ID4gQEAgLTE2MzAsMTcx ICs1NjAsMyBAQCBBc21SZWFkVHNjICgNCj4gPg0KPiA+ICAgIHJldHVybiAoKChVSU5UNjQpSGlE YXRhKSA8PCAzMikgfCBMb3dEYXRhOw0KPiA+ICB9DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBQZXJmb3JtYW5jZSBDb3VudGVyDQo+ IChQTUMpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBwZXJmb3JtYW5jZQ0KPiBjb3VudGVyIHNwZWNpZmllZCBieQ0KPiA+IC0gIEluZGV4LiBU aGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZA0KPiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBQZXJmb3JtYW5jZSBDb3VudGVyIGlu ZGV4DQo+IHRvIHJlYWQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBQ TUMgc3BlY2lmaWVkIGJ5IEluZGV4Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+ IC1FRklBUEkNCj4gPiAtQXNtUmVhZFBtYyAoDQo+ID4gLSAgSU4gICAgICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgIEluZGV4DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDMyICBMb3dE YXRhOw0KPiA+IC0gIFVJTlQzMiAgSGlEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoDQo+ID4gLSAgICAicmRwbWMiDQo+ID4gLSAgICA6ICI9YSIgKExvd0RhdGEpLA0K PiA+IC0gICAgICAiPWQiIChIaURhdGEpDQo+ID4gLSAgICA6ICJjIiAgKEluZGV4KQ0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuICgoKFVJTlQ2NClIaURhdGEpIDw8IDMyKSB8IExv d0RhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBTZXRzIHVwIGEg bW9uaXRvciBidWZmZXIgdGhhdCBpcyB1c2VkIGJ5DQo+IEFzbU13YWl0KCkuDQo+ID4gLQ0KPiA+ IC0gIEV4ZWN1dGVzIGEgTU9OSVRPUiBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0KPiBz dGF0ZSBzcGVjaWZpZWQgYnkgRWF4LCBFY3gNCj4gPiAtICBhbmQgRWR4LiBSZXR1cm5zIEVheC4g VGhpcyBmdW5jdGlvbiBpcyBvbmx5DQo+IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ IC0NCj4gPiAtICBAcGFyYW0gIEVheCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVBWCBvciBSQVgN Cj4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+IC0gICAgICAgICAgICAgIGluc3Ry dWN0aW9uLg0KPiA+IC0gIEBwYXJhbSAgRWN4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUNYIG9y IFJDWA0KPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gLSAgICAgICAgICAgICAg aW5zdHJ1Y3Rpb24uDQo+ID4gLSAgQHBhcmFtICBFZHggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBF RFggb3IgUkRYDQo+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiAtICAgICAgICAg ICAgICBpbnN0cnVjdGlvbi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBFYXgNCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtTW9uaXRvciAoDQo+ID4gLSAg SU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVheCwNCj4gPiAtICBJTiAgICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgRWN4LA0KPiA+IC0gIElOICAgICAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBFZHgNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoDQo+ID4gLSAgICAibW9uaXRvciINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogImEi IChFYXgpLA0KPiA+IC0gICAgICAiYyIgKEVjeCksDQo+ID4gLSAgICAgICJkIiAoRWR4KQ0KPiA+ IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIEVheDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAt DQo+ID4gLS8qKg0KPiA+IC0gIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0aW9uLg0KPiA+IC0N Cj4gPiAtICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0K PiBzdGF0ZSBzcGVjaWZpZWQgYnkgRWF4IGFuZA0KPiA+IC0gIEVjeC4gUmV0dXJucyBFYXguIFRo aXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3IgUkFYDQo+ IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiAtICAgICAgICAgICAgICBpbnN0cnVj dGlvbi4NCj4gPiAtICBAcGFyYW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWCBvciBS Q1gNCj4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+IC0gICAgICAgICAgICAgIGlu c3RydWN0aW9uLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIEVheA0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Nd2FpdCAoDQo+ID4gLSAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEVheCwNCj4gPiAtICBJTiAgICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgRWN4DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+IC0gICAgIm13YWl0Ig0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiYSIg IChFYXgpLA0KPiA+IC0gICAgICAiYyIgIChFY3gpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAt ICByZXR1cm4gRWF4Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgRXhl Y3V0ZXMgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uDQo+ID4gLQ0KPiA+IC0gIEV4ZWN1dGVzIGEgV0JJ TlZEIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZhaWxhYmxlIG9uIElB LTMyIGFuZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21XYmludmQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIndiaW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBFeGVjdXRlcyBhIElOVkQgaW5zdHJ1Y3Rp b24uDQo+ID4gLQ0KPiA+IC0gIEV4ZWN1dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5j dGlvbiBpcyBvbmx5DQo+IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4g LQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtSW52ZCAoDQo+ID4g LSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgi aW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gLQ0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAgRmx1c2hlcyBhIGNhY2hlIGxpbmUgZnJvbSBhbGwgdGhlIGluc3RydWN0aW9uIGFu ZA0KPiBkYXRhIGNhY2hlcyB3aXRoaW4gdGhlDQo+ID4gLSAgY29oZXJlbmN5IGRvbWFpbiBvZiB0 aGUgQ1BVLg0KPiA+IC0NCj4gPiAtICBGbHVzaGVkIHRoZSBjYWNoZSBsaW5lIHNwZWNpZmllZCBi eSBMaW5lYXJBZGRyZXNzLA0KPiBhbmQgcmV0dXJucyBMaW5lYXJBZGRyZXNzLg0KPiA+IC0gIFRo aXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ ID4gLSAgQHBhcmFtICBMaW5lYXJBZGRyZXNzIFRoZSBhZGRyZXNzIG9mIHRoZSBjYWNoZSBsaW5l DQo+IHRvIGZsdXNoLiBJZiB0aGUgQ1BVIGlzDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg IGluIGEgcGh5c2ljYWwgYWRkcmVzc2luZw0KPiBtb2RlLCB0aGVuIExpbmVhckFkZHJlc3MgaXMg YQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGUg Q1BVDQo+IGlzIGluIGEgdmlydHVhbA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICBhZGRy ZXNzaW5nIG1vZGUsIHRoZW4NCj4gTGluZWFyQWRkcmVzcyBpcyBhIHZpcnR1YWwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBMaW5l YXJBZGRyZXNzDQo+ID4gLSoqLw0KPiA+IC1WT0lEICoNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbUZs dXNoQ2FjaGVMaW5lICgNCj4gPiAtICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAg KkxpbmVhckFkZHJlc3MNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoDQo+ID4gLSAgICAiY2xmbHVzaCAoJTApIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAi ciIgKExpbmVhckFkZHJlc3MpDQo+ID4gLSAgICA6ICJtZW1vcnkiDQo+ID4gLSAgICApOw0KPiA+ IC0NCj4gPiAtICAgIHJldHVybiBMaW5lYXJBZGRyZXNzOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0N Cj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2NjSW5saW5lLmMN Cj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxpbmVQcml2LmMNCj4gPiBzaW1p bGFyaXR5IGluZGV4IDY1JQ0KPiA+IGNvcHkgZnJvbSBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2 NC9HY2NJbmxpbmUuYw0KPiA+IGNvcHkgdG8gTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2Nj SW5saW5lUHJpdi5jDQo+ID4gaW5kZXggMTU0Y2UxZjU3ZS4uOThiZTE5YjNjNyAxMDA2NDQNCj4g PiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxpbmUuYw0KPiA+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lubGluZVByaXYuYw0KPiA+IEBAIC0xLDcg KzEsOCBAQA0KPiA+ICAvKiogQGZpbGUNCj4gPiAtICBHQ0MgaW5saW5lIGltcGxlbWVudGF0aW9u IG9mIEJhc2VMaWIgcHJvY2Vzc29yDQo+IHNwZWNpZmljIGZ1bmN0aW9ucy4NCj4gPiArICBHQ0Mg aW5saW5lIGltcGxlbWVudGF0aW9uIG9mIEJhc2VMaWIgcHJvY2Vzc29yDQo+IHNwZWNpZmljIGZ1 bmN0aW9ucyB0aGF0IHVzZQ0KPiA+ICsgIHByaXZsaWRnZWQgaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ ID4gLSAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0K PiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMjAs IEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAgICBQ b3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuIEFsbA0KPiByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4NCj4gPiBAQCAtMTAsMjkgKzExLDYgQEANCj4gPg0KPiA+ICAjaW5j bHVkZSAiQmFzZUxpYkludGVybmFscy5oIg0KPiA+DQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4g LS8qKg0KPiA+IC0gIFVzZWQgdG8gc2VyaWFsaXplIGxvYWQgYW5kIHN0b3JlIG9wZXJhdGlvbnMu DQo+ID4gLQ0KPiA+IC0gIEFsbCBsb2FkcyBhbmQgc3RvcmVzIHRoYXQgcHJvY2VlZCBjYWxscyB0 byB0aGlzDQo+IGZ1bmN0aW9uIGFyZSBndWFyYW50ZWVkIHRvIGJlDQo+ID4gLSAgZ2xvYmFsbHkg dmlzaWJsZSB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+ IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1NZW1vcnlGZW5jZSAoDQo+ID4gLSAgVk9JRA0KPiA+ IC0gICkNCj4gPiAtew0KPiA+IC0gIC8vIFRoaXMgaXMgYSBsaXR0bGUgYml0IG9mIG92ZXJraWxs IGFuZCBpdCBpcyBtb3JlDQo+IGFib3V0IHRoZSBjb21waWxlciB0aGF0IGl0IGlzDQo+ID4gLSAg Ly8gYWN0dWFsbHkgcHJvY2Vzc29yIHN5bmNocm9uaXphdGlvbi4gVGhpcyBpcyBsaWtlDQo+IHRo ZSBfUmVhZFdyaXRlQmFycmllcg0KPiA+IC0gIC8vIE1pY3Jvc29mdCBzcGVjaWZpYyBpbnRyaW5z aWMNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiI6OjoibWVtb3J5Iik7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzLg0K PiA+DQo+ID4gQEAgLTY0LDQ0ICs0Miw2IEBAIERpc2FibGVJbnRlcnJ1cHRzICgNCj4gPiAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoImNsaSI6OjogIm1lbW9yeSIpOw0KPiA+ICB9DQo+ID4NCj4g PiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNl IGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLg0KPiA+IC0NCj4gPiAtICBSZXF1ZXN0cyBDUFUg dG8gcGF1c2UgZm9yIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuDQo+IFR5cGljYWxseSB1c2VkIGlu IE1QDQo+ID4gLSAgc3lzdGVtcyB0byBwcmV2ZW50IG1lbW9yeSBzdGFydmF0aW9uIHdoaWxlIHdh aXRpbmcNCj4gZm9yIGEgc3BpbiBsb2NrLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4g PiAtRUZJQVBJDQo+ID4gLUNwdVBhdXNlICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJwYXVzZSIpOw0KPiA+IC19DQo+ID4gLQ0K PiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgR2VuZXJhdGVzIGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BV Lg0KPiA+IC0NCj4gPiAtICBHZW5lcmF0ZXMgYSBicmVha3BvaW50IG9uIHRoZSBDUFUuIFRoZSBi cmVha3BvaW50DQo+IG11c3QgYmUgaW1wbGVtZW50ZWQgc3VjaA0KPiA+IC0gIHRoYXQgY29kZSBj YW4gcmVzdW1lIG5vcm1hbCBleGVjdXRpb24gYWZ0ZXIgdGhlDQo+IGJyZWFrcG9pbnQuDQo+ID4g LQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQ3B1QnJlYWtwb2ludCAo DQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgiaW50ICQzIik7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ ID4gICAgUmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVyKE1TUikuDQo+ ID4NCj4gPiBAQCAtMTc2LDM3ICsxMTYsNiBAQCBBc21Xcml0ZU1zcjY0ICgNCj4gPiAgICByZXR1 cm4gVmFsdWU7DQo+ID4gIH0NCj4gPg0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBFRkxBR1MgcmVnaXN0ZXIuDQo+ID4gLQ0KPiA+ IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBFRkxBR1MNCj4g cmVnaXN0ZXIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0z MiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi0NCj4gYml0IHZhbHVlIG9uIElBLTMyIGFuZCBh DQo+ID4gLSAgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBFRkxB R1Mgb24gSUEtMzIgb3IgUkZMQUdTIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5U Tg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZEVmbGFncyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0g ICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIEVmbGFnczsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBf X3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInB1c2hmcSAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAi cG9wICAgICAlMCAgICAgICAgICINCj4gPiAtICAgIDogIj1yIiAoRWZsYWdzKSAgICAgICAvLyAl MA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIEVmbGFnczsNCj4gPiAtfQ0KPiA+ IC0NCj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAwDQo+IChDUjApLg0KPiA+DQo+ID4gQEAgLTExNjMs NDc1ICsxMDcyLDYgQEAgQXNtV3JpdGVMZHRyICgNCj4gPiAgICAgICk7DQo+ID4gIH0NCj4gPg0K PiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgU2F2ZSB0aGUgY3VycmVudCBmbG9hdGluZyBwb2ludC9T U0UvU1NFMiBjb250ZXh0IHRvDQo+IGEgYnVmZmVyLg0KPiA+IC0NCj4gPiAtICBTYXZlcyB0aGUg Y3VycmVudCBmbG9hdGluZyBwb2ludC9TU0UvU1NFMiBzdGF0ZSB0bw0KPiB0aGUgYnVmZmVyIHNw ZWNpZmllZCBieQ0KPiA+IC0gIEJ1ZmZlci4gQnVmZmVyIG11c3QgYmUgYWxpZ25lZCBvbiBhIDE2 LWJ5dGUNCj4gYm91bmRhcnkuIFRoaXMgZnVuY3Rpb24gaXMgb25seQ0KPiA+IC0gIGF2YWlsYWJs ZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEJ1ZmZlciAgVGhlIHBv aW50ZXIgdG8gYSBidWZmZXIgdG8gc2F2ZSB0aGUNCj4gZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIg Y29udGV4dC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1J bnRlcm5hbFg4NkZ4U2F2ZSAoDQo+ID4gLSAgT1VUICAgICBJQTMyX0ZYX0JVRkZFUiAgICAgICAg ICAgICpCdWZmZXINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAiZnhzYXZlICUwIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIgKCpC dWZmZXIpICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8q Kg0KPiA+IC0gIFJlc3RvcmVzIHRoZSBjdXJyZW50IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyDQo+ IGNvbnRleHQgZnJvbSBhIGJ1ZmZlci4NCj4gPiAtDQo+ID4gLSAgUmVzdG9yZXMgdGhlIGN1cnJl bnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgc3RhdGUNCj4gZnJvbSB0aGUgYnVmZmVyIHNwZWNp ZmllZA0KPiA+IC0gIGJ5IEJ1ZmZlci4gQnVmZmVyIG11c3QgYmUgYWxpZ25lZCBvbiBhIDE2LWJ5 dGUNCj4gYm91bmRhcnkuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5IGF2YWlsYWJsZSBv biBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEJ1ZmZlciAgVGhlIHBvaW50 ZXIgdG8gYSBidWZmZXIgdG8gc2F2ZSB0aGUNCj4gZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgY29u dGV4dC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRl cm5hbFg4NkZ4UmVzdG9yZSAoDQo+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0ZYX0JVRkZFUiAg ICAgICpCdWZmZXINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAiZnhyc3RvciAlMCINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0iICgq QnVmZmVyKSAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVy ICMwDQo+IChNTTApLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBNTTAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAt ICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZh bHVlIG9mIE1NMC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ ID4gLUFzbVJlYWRNbTAgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBV SU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAt ICAgICJtb3ZkICAgJSVtbTAsICAlMCAgICBcblx0Ig0KPiA+IC0gICAgOiAiPXIiICAoRGF0YSkg ICAgICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjMQ0KPiAoTU0xKS4NCj4gPiAtDQo+ID4gLSAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0xLiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4g LSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTEuDQo+ID4gLQ0KPiA+IC0qKi8NCj4g PiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkTW0xICgNCj4gPiAtICBWT0lEDQo+ ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ZCAgICUlbW0xLCAgJTAgICAgXG5cdCIN Cj4gPiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0N Cj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzINCj4g KE1NMikuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVl IG9mIE1NMi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElB LTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2Yg TU0yLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNt UmVhZE1tMiAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAg RGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1v dmQgICUlbW0yLCAgJTAgICAgXG5cdCINCj4gPiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8v ICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+ IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0 LWJpdCBNTVggUmVnaXN0ZXIgIzMNCj4gKE1NMykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCBy ZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1 cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0zLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2 NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1tMyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkN Cj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQgICUlbW0zLCAgJTAgICAgXG5cdCINCj4gPiAtICAg IDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICBy ZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRz IHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzQNCj4gKE1NNCkuDQo+ ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNC4g VGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBY NjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU00Lg0KPiA+ IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1tNCAo DQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4g PiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQgICUlbW00 LCAgJTAgICAgXG5cdCINCj4gPiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4g LSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAt DQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVgg UmVnaXN0ZXIgIzUNCj4gKE1NNSkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRo ZSBjdXJyZW50IHZhbHVlIG9mIE1NNS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJs ZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1 cnJlbnQgdmFsdWUgb2YgTU01Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1F RklBUEkNCj4gPiAtQXNtUmVhZE1tNSAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+IC0gICAgIm1vdmQgICUlbW01LCAgJTAgICAgXG5cdCINCj4gPiAtICAgIDogIj1yIiAg KERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0 YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJy ZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzYNCj4gKE1NNikuDQo+ID4gLQ0KPiA+ IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNi4gVGhpcw0KPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4g LQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU02Lg0KPiA+IC0NCj4gPiAt KiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1tNiAoDQo+ID4gLSAg Vk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQgICUlbW02LCAgJTAgICAg XG5cdCINCj4gPiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0K PiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8q Kg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIg IzcNCj4gKE1NNykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IHZhbHVlIG9mIE1NNy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0g IG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFs dWUgb2YgTU03Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4g PiAtQXNtUmVhZE1tNyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJ TlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0g ICAgIm1vdmQgICUlbW03LCAgJTAgICAgXG5cdCINCj4gPiAtICAgIDogIj1yIiAgKERhdGEpICAg ICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAt fQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMwDQo+IChNTTApLg0KPiA+IC0NCj4gPiAtICBXcml0 ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0wLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZh aWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIFZh bHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0wLg0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlTW0wICgNCj4gPiAtICBJTiAgICAg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAt ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ZCAgJTAsICUlbW0wIiAgLy8g JTANCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4g LX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjMQ0KPiAoTU0xKS4NCj4gPiAtDQo+ID4gLSAgV3Jp dGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMS4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2 YWlsYWJsZSBvbiBJQTMyIGFuZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBW YWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIE1NMS4NCj4gPiAtDQo+ID4gLSoqLw0K PiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZU1tMSAoDQo+ID4gLSAgSU4gICAg ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQgICUwLCAlJW1tMSIgIC8v ICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzINCj4gKE1NMikuDQo+ID4gLQ0KPiA+IC0gIFdy aXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25seSBh dmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAg VmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTIuDQo+ID4gLQ0KPiA+IC0qKi8N Cj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTIgKA0KPiA+IC0gIElOICAg ICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZkICAlMCwgJSVtbTIiICAv LyAlMA0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIgKFZhbHVlKQ0KPiA+IC0gICAgKTsNCj4g PiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMzDQo+IChNTTMpLg0KPiA+IC0NCj4gPiAtICBX cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0zLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkg YXZhaWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0g IFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0zLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlTW0zICgNCj4gPiAtICBJTiAg ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiAtICApDQo+ID4gLXsNCj4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ZCAgJTAsICUlbW0zIiAg Ly8gJTANCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNA0KPiAoTU00KS4NCj4gPiAtDQo+ID4gLSAg V3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNC4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5 IGF2YWlsYWJsZSBvbiBJQTMyIGFuZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFt ICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIE1NNC4NCj4gPiAtDQo+ID4gLSoq Lw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZU1tNCAoDQo+ID4gLSAgSU4g ICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQgICUwLCAlJW1tNCIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzUNCj4gKE1NNSkuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTUuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTUuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTUgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZkICAlMCwgJSVtbTUi ICAvLyAlMA0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIgKFZhbHVlKQ0KPiA+IC0gICAgKTsN Cj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVu dCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM2DQo+IChNTTYpLg0KPiA+IC0NCj4gPiAt ICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU02LiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9u bHkgYXZhaWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFy YW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU02Lg0KPiA+IC0NCj4gPiAt KiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlTW02ICgNCj4gPiAtICBJ TiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiAtICApDQo+ID4gLXsN Cj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ZCAgJTAsICUlbW02 IiAgLy8gJTANCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiAtICAgICk7 DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNw0KPiAoTU03KS4NCj4gPiAtDQo+ID4g LSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNy4gVGhpcyBmdW5jdGlvbiBpcw0KPiBv bmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFuZA0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIE1NNy4NCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZU1tNyAoDQo+ID4gLSAg SU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQgICUwLCAlJW1t NyIgIC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICAp Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgVGltZSBTdGFtcCBDb3VudGVyDQo+IChUU0MpLg0KPiA+IC0NCj4gPiAtICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUU0MuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4g PiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIFRTQw0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZFRzYyAoDQo+ID4gLSAgVk9JRA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQzMiAgTG93RGF0YTsNCj4gPiAtICBVSU5UMzIg IEhpRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAg InJkdHNjIg0KPiA+IC0gICAgOiAiPWEiIChMb3dEYXRhKSwNCj4gPiAtICAgICAgIj1kIiAoSGlE YXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuICgoKFVJTlQ2NClIaURhdGEp IDw8IDMyKSB8IExvd0RhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAg ICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIFBlcmZvcm1hbmNlIENvdW50ZXINCj4gKFBN QykuDQo+ID4NCj4gPiBAQCAtMTY2Miw3ICsxMTAyLDYgQEAgQXNtUmVhZFBtYyAoDQo+ID4gICAg cmV0dXJuICgoKFVJTlQ2NClIaURhdGEpIDw8IDMyKSB8IExvd0RhdGE7DQo+ID4gIH0NCj4gPg0K PiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgU2V0cyB1cCBhIG1vbml0b3IgYnVmZmVyIHRoYXQgaXMg dXNlZCBieQ0KPiBBc21Nd2FpdCgpLg0KPiA+DQo+ID4gQEAgLTE2OTgsNyArMTEzNyw2IEBAIEFz bU1vbml0b3IgKA0KPiA+ICAgIHJldHVybiBFYXg7DQo+ID4gIH0NCj4gPg0KPiA+IC0NCj4gPiAg LyoqDQo+ID4gICAgRXhlY3V0ZXMgYW4gTVdBSVQgaW5zdHJ1Y3Rpb24uDQo+ID4NCj4gPiBAQCAt MTczMCw3ICsxMTY4LDYgQEAgQXNtTXdhaXQgKA0KPiA+ICAgIHJldHVybiBFYXg7DQo+ID4gIH0N Cj4gPg0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgRXhlY3V0ZXMgYSBXQklOVkQgaW5zdHJ1Y3Rp b24uDQo+ID4NCj4gPiBAQCAtMTc0Nyw3ICsxMTg0LDYgQEAgQXNtV2JpbnZkICgNCj4gPiAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoIndiaW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gIH0NCj4gPg0K PiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLg0KPiA+ DQo+ID4gQEAgLTE3OTYsNSArMTIzMiwzIEBAIEFzbUZsdXNoQ2FjaGVMaW5lICgNCj4gPg0KPiA+ ICAgICAgcmV0dXJuIExpbmVhckFkZHJlc3M7DQo+ID4gIH0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0t DQo+ID4gMi4yMS4wLndpbmRvd3MuMQ0KDQo=