From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE9BBC433F5 for ; Thu, 30 Dec 2021 15:04:00 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.65509.1640876639088907213 for ; Thu, 30 Dec 2021 07:03:59 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=hBUwO/RZ; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: anuj.mittal@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1640876639; x=1672412639; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=NJDLq8788CcIUpCk7DthHeLOXbwahNgoMpISE7+agjo=; b=hBUwO/RZSnGJUUj5jraODSaYQkiLyW3VdTSlY8KwrtcCXsdNB0Pkuzct GDpk7LWGxswyhDzIx4OWJttoaBZZ76bH4rdSlKnAhuKbMaK8sos9Bd/3x QrlqK6bq7OQ9VzIWpwbCyX5Cgd60dBTxyLWO6YtNbOxteXRl2dOkiTICC 8s0dANgGjbtrjw5nSMt3dVX4j1sRhNt3tXh2ZGaVMsQqyn+wVwyJpymSL V0gjdD7iLvksU4oU+wz0+TybHBHreUjLA05tODiPeh8OurHvkU+Ewk3ab 5N8hpQibbWuphCnsqf4npXNO65SwJWQR6Pgn/d9t4gRPlokdimHXKx4oj w==; X-IronPort-AV: E=McAfee;i="6200,9189,10212"; a="241899505" X-IronPort-AV: E=Sophos;i="5.88,248,1635231600"; d="scan'208";a="241899505" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Dec 2021 07:03:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,248,1635231600"; d="scan'208";a="589571761" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga004.fm.intel.com with ESMTP; 30 Dec 2021 07:03:56 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 30 Dec 2021 07:03:55 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 30 Dec 2021 07:03:55 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Thu, 30 Dec 2021 07:03:55 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Thu, 30 Dec 2021 07:03:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WP2IVNdyADaafMV3Wx5wt/7IXfFbuYnlEIg7IL6UE1xn6QeeZiQcgmoHEvp8dJHoD8vsA87II4TiURvrjzCDFnnBoTs/SlHCTGXdRPxp1OyRCXDO8mmci4URsASKliMOpeszvH6b48WBaSWk3OCJqhrHJqkNAad7Gelsz7sXW8bD+UTcHmwtaXcq2HdZvfYMb2RtnwtddZbxUpMYZ5SyXV+xUqhDbyXihYgj1DZ8aVCqX/ekOsOVqCr/LqCT9k31DacNQVJXg5ah2FVGZUgUSsvC/K+50fVAHl2tnePwcafWQcoPsjgGzifW0GjmxM84sZQF8fXTgeeec9QeG/Xxog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NJDLq8788CcIUpCk7DthHeLOXbwahNgoMpISE7+agjo=; b=P/USpKCmfIiTQk3Hxvb+UNyjECT8GWUxaMhxzq6tO5V1hWn9YTTZCAhqzJDJBj7oyY7Md/krureN4XrGWNEndMhzmXf3slLbyejl6swmNPUg9tC1EH4iSUo5XOFkQZbJURlevNprTW6X4QPJ1Ok06Kfm3Hg+WqG7Zi9cFJr+nhoKuzGuu+Rgw+fXZsacEi4z3zhVZ5BVBMqWxSX1xQE1a0H+evjBWRc5x8TaGWvpZdXfjr9UpsGyG+qu2i61/yOgpBjnVp7bKK20F8oqwoPvP0SrnsewlZGw3bWy6nasZu5uQ9w6bTApGnXKOL2aK9KVXNtBl7KZCQJSYHyZAWir/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB4896.namprd11.prod.outlook.com (2603:10b6:a03:2dd::20) by SJ0PR11MB5053.namprd11.prod.outlook.com (2603:10b6:a03:2af::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.19; Thu, 30 Dec 2021 15:03:50 +0000 Received: from SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::a8ab:1ed:c383:c477]) by SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::a8ab:1ed:c383:c477%6]) with mapi id 15.20.4823.024; Thu, 30 Dec 2021 15:03:50 +0000 From: "Mittal, Anuj" To: "Qi.Chen@windriver.com" , "openembedded-core@lists.openembedded.org" Subject: Re: [OE-core][hardknott][PATCH V3] busybox: backport patches to fix CVEs Thread-Topic: [OE-core][hardknott][PATCH V3] busybox: backport patches to fix CVEs Thread-Index: AQHX/FXiEBr7Nw8SEUGjD35PX6eIk6xLJDQA Date: Thu, 30 Dec 2021 15:03:50 +0000 Message-ID: References: <20211229014449.119943-1-Qi.Chen@windriver.com> In-Reply-To: <20211229014449.119943-1-Qi.Chen@windriver.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.42.2 (3.42.2-1.fc35) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 115f8d24-26ad-4cc0-824c-08d9cba59695 x-ms-traffictypediagnostic: SJ0PR11MB5053:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QF6bLZOBPJU+bywIF2Ew4OtcQC3PS94fzFXTBcYBAuPVbTfXVoKLPsjFaqHGDRfEbyrBPglUvGz8gDaP87EKC3EKlONRE1AtLnme5vbFamrXAjxQIwhnZfoUkc+E/mtTF6rsl3JhIuofHj3SG7TAsf6zT8swIbpgpasOdJZHgMwmVIpf8lWhGfJiztgm5EGy/zYIixPQLT7Ta1PZ4S5Zhefodv/BzgEK1uJrYV/MVVtXfXxcNDxToIYM7ObTqhi+skYIy4Q8e0AN7qSwPZa+9PRltir8x24s6yg/b6IOijFlxMk2eBq7rpLTC8h1xnSuLAci0M2dothrwlfRCwW7i+dPqnZC7LKgr5P647DtPZnLT0UgUDTBAFY244wzs6BY6q4MfN89NDlN9Shbcpn9UBRn7At7la51Ck2ufqFcIrirmJQj51SYm0LUcMVerY2G2V9pTw2Uk7bvZ4CAbcN4eiHjhGket7i5vIY4rWHoF1eLlNNdiMX2fnjID9SbfusZjF8A/elGUipFVawPd8W0ngx3zOWsd6/w5YMXyWYN8aAt3In/KaSPwMfqUagoHzUTQsqloebG3lpn4y2zlyr6e/KUGl3CUyp7PD7gPAcwm9qFhRfOWM+qvSpktMHpFnJaxeHEjZBPdo42kZJ5wj4jQWblDy/x4e8E8oj4BgBpQidykJ6MdEolpHgDsdzBR3uSg3Ozp2hjkHGiWKDjtKHxOpA0mtJMlXq81I1p5raQJ/uztC/YgbE+Gl8uWtT0o87nf815ZcRn9bCh3YFU54McUUDspTsZLCFApgvQWrDJqMfv0oRnfp00OzuenE3uaA0grQjwNYkVy6KhqmyjnHMjRw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB4896.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(6512007)(316002)(64756008)(91956017)(36756003)(86362001)(6486002)(66446008)(26005)(38100700002)(66556008)(186003)(966005)(82960400001)(71200400001)(30864003)(5660300002)(508600001)(8676002)(38070700005)(83380400001)(2906002)(110136005)(66476007)(4001150100001)(6506007)(2616005)(122000001)(66946007)(8936002)(76116006)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RG5IRDJwRDd5c3laZWovZnExUDFCNTc3ZUF5MmhqTjZTTHRRNTNTcnU4QXBq?= =?utf-8?B?SGdOZGRLd3Z3OWJocS9DRmtBSC9DajFCWCtueUpXeDY2QnUyVnB2NHBZd3RI?= =?utf-8?B?SVJPQ25pTDRHQ1V4SUhoV2c2Z3V2cHFDdjc3UFVkWktPbUNmZTRKeUZBRnFt?= =?utf-8?B?SGNNa0VSTno5KzhaWmxpd0gyTmNmVlJoS0xUaTc3dkRROHVDa1FHN3llVEEy?= =?utf-8?B?MFdyZ01QMTJDSFJBdjlvczRRWFpQa2VVUWJkN29oMm1sUHVzMy8yQlkwUWlV?= =?utf-8?B?aTZvTVl4d3dicGhaWE5xU0lLOU5wNnQyanY3TDBhNGtEYndTQkJqVWNSMTNS?= =?utf-8?B?aWYxRkNPV09kbHA2SUxFMURMVCs5eXdjUjdUUDQzQmNGbkpoemF2cTRZM1Zu?= =?utf-8?B?WW4ybEs1SXpMVG1BaEVQMkZGTFllaEI4UzA3V3d5YTRIYW1VUnRTZFZoWi9v?= =?utf-8?B?V0N0bVYydnVPN0dTZURPcm8vdDB3MnNaRzBvZ1JEMS9DN2t3dUdxNFEwaGpJ?= =?utf-8?B?UUtQOVBVS0hXbjBjaEdnaGFTZGRZcjRjblVlLzBWUnlIakh4dUV1b0JHMk1x?= =?utf-8?B?R081Z0VkTVZIQ09qQ21hVHV5Y05SN1ZuYm5IdThGYXFmeVJhNE44MUJ5MXhX?= =?utf-8?B?VUx2VW1GOU1ZRksvWmVxRkxEcUZKaHl2bE9wVFZYaEJKd3RGazQ1WTFxMngy?= =?utf-8?B?V081T1pROGhwYm9neUJLcVF6SjB1Ukh0SXpxSElUUVlLdFRUa2RnaWVyNGgx?= =?utf-8?B?NU56YmQrRm1CSUxVbU9WRHIwOGd2L2J0YkE4N1hmZk9JbU5qK3NIcHRWajFk?= =?utf-8?B?N0JLQm02WDhMOFVQd2hyTGZNSUFDVk0yWUlSVzUwcXZWdk9HeWxaUFZzcFht?= =?utf-8?B?SEdrSnhsVWxNZHAxT0ZmSU9jWTBQeUFmek1wNWJqcEVBbis3QVQ5d3RnbVlm?= =?utf-8?B?WFpnQkFhVnhiSUlpQW5QOWlybzdXRDM2T1dxMmw0Q1MrbGhCOG1IM2M3ZSs1?= =?utf-8?B?L2k2VWw5N3UzMUJNbzE5aFR1T01na2d0VE5oSWorbC9nWnF0QWdENDdHRzJa?= =?utf-8?B?RFBxNUpOT09Rd0d4c3QyMjBPQVN5U29ndXlLa2hZTG9FYVN3aHZiZ1NRdysw?= =?utf-8?B?R1liSldpZi9jbGZ0NDNyT1pzWStnZ1kraFh0cTNmVWRFbFJkbG9tT0cveFdj?= =?utf-8?B?ZWNRaU1VM0p0bVBQaWhkZDVMcjNwMjhKTzdieklNUEtYSXZKK3cwcnhiVjVj?= =?utf-8?B?d0dEazJ1WEl2Mjdrb0ovU25RZmxXUTNQZE9UQmNRMGRWK1Mvb0FjT0I5RXlG?= =?utf-8?B?bU9yWm1GTDJIYlpEQTcrUzdvV2lXdXFqTy82eFZSdzk2ZVFnS0IvN2lFbi9E?= =?utf-8?B?c0s0YVA4MjJJTFpyTFNQSjZoR0NkcFpZQ3ZpQXlZRThUUVhCZTJ6djZGREo0?= =?utf-8?B?d0M5NW1FelM3cThqdmxVQ0UvME5sc2JXeW5YWVNCOVkveHp6SEtHM3BBY1JM?= =?utf-8?B?cDV2RDFIdWZjaDVic2JVaFVGbDdDcFJUMllOVGE5ZnFzZmd4WHVDRnp6WXo3?= =?utf-8?B?MXR3VmpMbDZ3b0krRXRWSWh6Z1BnZE83NDhjN09FQzFFQjMwZVJ1dlh2NVAw?= =?utf-8?B?Nml5UjRXNkpxTVpiR0NDR0RRbjhNdjVNVHFSOW9BMTF6K1VkNXlOQlZRVm0v?= =?utf-8?B?TkdEVGwvbTN4UjhMUm93YmJ3Q2sxaVlIYWFjcUtDaEdPWUxHeW9YMnVlcnV0?= =?utf-8?B?Zk80QWZQVEFJbWUybTBTRmxSeFlXSmdoTGJ1VVdsRVFBb1ZoSEkxdHZQVEdI?= =?utf-8?B?M2hiY0NwUVYwZS9XekxRNGYxcEZSL2hiYnQyUS81WXNMUlNxQ1ZncjQ0dEFC?= =?utf-8?B?dmV6M2tUQk5TK3N2bVF4Slp3cFNyR01JaDRuN3BLUGNxS3JWVVc5bUpnZkNk?= =?utf-8?B?V29ETE9nUzh6N0pmOWN0SVM0M3ZDRk9EbkNKTHhrVDgyWExra3pWNzVZdzd0?= =?utf-8?B?S1BpTVJkYlRHc0FjdzBSem1IWGVqemJlY2xhWUxqQ1FIUU9mVzJ2SHlkR3Vu?= =?utf-8?B?VGsweXpUcklJcTZITnVnY2FGUWlSUDVJYm1WVmduVFJxY0xlaTJIRmZOV3BN?= =?utf-8?B?bEU2ZzF6ckQxNE11Qm1OUFBJTXRwYVJQclFuY1ZhUnE3OUk4NU1FSnVUbnJ4?= =?utf-8?Q?rc5R8yreQ4pcAICFfU+eO7Q=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <5D5E75D57673544298FE822E2EEBA278@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4896.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 115f8d24-26ad-4cc0-824c-08d9cba59695 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Dec 2021 15:03:50.4027 (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: ELO2NI9Yq80DbL6yOA5/SGGOJn2W/A9X4UZcXnVLUdu8cGUU/BJLPX2bcFqOnVdbluHpKllwQuMQJ8RwUpJqpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5053 X-OriginatorOrg: intel.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 30 Dec 2021 15:04:00 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/160061 T24gVHVlLCAyMDIxLTEyLTI4IGF0IDE3OjQ0IC0wODAwLCBDaGVuIFFpIHdyb3RlOgo+IEJhY2tw b3J0IHBhdGNoZXMgdG8gZml4IHRoZSBmb2xsb3dpbmcgQ1ZFczoKPiBDVkUtMjAyMS00MjM3Mwo+ IENWRS0yMDIxLTQyMzc4Cj4gQ1ZFLTIwMjEtNDIzNzkKPiBDVkUtMjAyMS00MjM4MAo+IENWRS0y MDIxLTQyMzgxCj4gQ1ZFLTIwMjEtNDIzODIKPiBDVkUtMjAyMS00MjM4Mwo+IENWRS0yMDIxLTQy Mzg0Cj4gQ1ZFLTIwMjEtNDIzODUKPiBDVkUtMjAyMS00MjM4NgoKVGhpcyBpcyBjYXVzaW5nIHRo ZXNlIHB0ZXN0cyB0byBmYWlsOgoKJ2J1c3lib3gnOiBbJ2F3a19icmVhaycsICdhd2tfY29udGlu dWUnXSwKClBsZWFzZSBzZWU6CgpxZW11eDg2LTY0OgpodHRwczovL2F1dG9idWlsZGVyLnlvY3Rv cHJvamVjdC5vcmcvdHlwaG9vbi8jL2J1aWxkZXJzLzgxL2J1aWxkcy8yOTQ3CgpxZW11YXJtNjQ6 Cmh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZy90eXBob29uLyMvYnVpbGRlcnMv ODIvYnVpbGRzLzI2NzQKClRoYW5rcywKCkFudWoKCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hlbiBR aSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgo+IC0tLQo+IMKgLi4uL2J1c3lib3gvYnVzeWJveC8w MDAxLWF3ay1maXgtQ1ZFcy5wYXRjaMKgwqAgfCAzMTQyCj4gKysrKysrKysrKysrKysrKysKPiDC oC4uLi8wMDAyLW1hbi1maXgtc2VnZmF1bHQtaW4tbWFuLTEucGF0Y2jCoMKgwqDCoMKgIHzCoMKg IDMwICsKPiDCoG1ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMzLjIuYmLCoMKg IHzCoMKgwqAgMiArCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDMxNzQgaW5zZXJ0aW9ucygrKQo+IMKg Y3JlYXRlIG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAx LWF3ay1maXgtCj4gQ1ZFcy5wYXRjaAo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBl cy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAyLW1hbi1maXgtCj4gc2VnZmF1bHQtaW4tbWFuLTEu cGF0Y2gKPiAKPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94 LzAwMDEtYXdrLWZpeC0KPiBDVkVzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9i dXN5Ym94LzAwMDEtYXdrLWZpeC0KPiBDVkVzLnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwLi45YjcwNzljYmU5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL21l dGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWF3ay1maXgtQ1ZFcy5wYXRjaAo+ IEBAIC0wLDAgKzEsMzE0MiBAQAo+ICtGcm9tIDBiMzEzOTQzZWU1YzY2MTFkMzJjNTVjM2QxNjA4 NGQwNGE0YzJhNmQgTW9uIFNlcCAxNyAwMDowMDowMAo+IDIwMDEKPiArRnJvbTogQ2hlbiBRaSA8 UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgo+ICtEYXRlOiBNb24sIDI3IERlYyAyMDIxIDIxOjI1OjMz IC0wODAwCj4gK1N1YmplY3Q6IFtQQVRDSF0gYXdrOiBmaXggQ1ZFcwo+ICsKPiArVGhlIGF3ayBD VkVzIGlzIGhhcmQgdG8gYmUgc2VwYXJhdGVkLCB0aHVzIHdlIHVzZSB0aGUgZm9sbG93aW5nCj4g bWV0aG9kCj4gK3RvIGZvcm1hdCB0aGUgY3VycmVudCBwYXRjaC4KPiArZ2l0IGZvcm1hdC1wYXRj aCAtLXN0ZG91dCAxXzMzXzEuLjFfMzRfMSAtLSBlZGl0b3JzL2F3ay5jIHwgZ2l0IGFtIC0KPiAz Cj4gKwo+ICtDVkU6IENWRS0yMDIxLTQyMzc4Cj4gK0NWRTogQ1ZFLTIwMjEtNDIzNzkKPiArQ1ZF OiBDVkUtMjAyMS00MjM4MAo+ICtDVkU6IENWRS0yMDIxLTQyMzgxCj4gK0NWRTogQ1ZFLTIwMjEt NDIzODIKPiArQ1ZFOiBDVkUtMjAyMS00MjM4Mwo+ICtDVkU6IENWRS0yMDIxLTQyMzg0Cj4gK0NW RTogQ1ZFLTIwMjEtNDIzODUKPiArQ1ZFOiBDVkUtMjAyMS00MjM4Ngo+ICsKPiArVXBzdHJlYW0t U3RhdHVzOiBCYWNrcG9ydAo+ICsKPiArU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3 aW5kcml2ZXIuY29tPgo+ICstLS0KPiArIGVkaXRvcnMvYXdrLmMgfCAyMDYwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0KPiArIDEgZmlsZSBjaGFu Z2VkLCAxMjA0IGluc2VydGlvbnMoKyksIDg1NiBkZWxldGlvbnMoLSkKPiArCj4gK2RpZmYgLS1n aXQgYS9lZGl0b3JzL2F3ay5jIGIvZWRpdG9ycy9hd2suYwo+ICtpbmRleCAyYzE1ZjllNGUuLmY2 MzE0YWM3MiAxMDA2NDQKPiArLS0tIGEvZWRpdG9ycy9hd2suYwo+ICsrKysgYi9lZGl0b3JzL2F3 ay5jCj4gK0BAIC02Niw2ICs2Niw4IEBACj4gKyAjZW5kaWYKPiArICNpZm5kZWYgZGVidWdfcHJp bnRmX3BhcnNlCj4gKyAjIGRlZmluZSBkZWJ1Z19wcmludGZfcGFyc2UoLi4uKSAoZnByaW50Zihz dGRlcnIsIF9fVkFfQVJHU19fKSkKPiArKyNlbHNlCj4gKysjIGRlZmluZSBkZWJ1Z19wYXJzZV9w cmludF90YyguLi4pICgodm9pZCkwKQo+ICsgI2VuZGlmCj4gKyAKPiArIAo+ICtAQCAtOTEsNyAr OTMsNiBAQCBlbnVtIHsKPiArIH07Cj4gKyAKPiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoE1BWFZB UkZNVMKgwqDCoMKgwqDCoCAyNDAKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoE1JTk5WQkxPQ0vC oMKgwqDCoMKgIDY0Cj4gKyAKPiArIC8qIHZhcmlhYmxlIGZsYWdzICovCj4gKyAjZGVmaW5lwqDC oMKgwqDCoMKgwqBWRl9OVU1CRVLCoMKgwqDCoMKgwqAgMHgwMDAxwqDCoC8qIDEgPSBwcmltYXJ5 IHR5cGUgaXMgbnVtYmVyCj4gKi8KPiArQEAgLTEwMSw3ICsxMDIsNyBAQCBlbnVtIHsKPiArICNk ZWZpbmXCoMKgwqDCoMKgwqDCoFZGX1VTRVLCoMKgwqDCoMKgwqDCoMKgIDB4MDIwMMKgwqAvKiAx ID0gdXNlciBpbnB1dCAobWF5IGJlCj4gbnVtZXJpYyBzdHJpbmcpICovCj4gKyAjZGVmaW5lwqDC oMKgwqDCoMKgwqBWRl9TUEVDSUFMwqDCoMKgwqDCoCAweDA0MDDCoMKgLyogMSA9IHJlcXVpcmVz IGV4dHJhCj4gaGFuZGxpbmcgd2hlbiBjaGFuZ2VkICovCj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKg wqBWRl9XQUxLwqDCoMKgwqDCoMKgwqDCoCAweDA4MDDCoMKgLyogMSA9IHZhcmlhYmxlIGhhcyBh bGxvYydkCj4geC53YWxrZXIgbGlzdCAqLwo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVkZfRlNU UsKgwqDCoMKgwqDCoMKgwqAgMHgxMDAwwqDCoC8qIDEgPSB2YXI6OnN0cmluZyBwb2ludHMgdG8K PiBmc3RyaW5nIGJ1ZmZlciAqLwo+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVkZfRlNUUsKgwqDC oMKgwqDCoMKgwqAgMHgxMDAwwqDCoC8qIDEgPSBkb24ndCBmcmVlKCkKPiB2YXI6OnN0cmluZyAo bm90IG1hbGxvY2VkLCBvciBpcyBvd25lZCBieSBzb21ldGhpbmcgZWxzZSkgKi8KPiArICNkZWZp bmXCoMKgwqDCoMKgwqDCoFZGX0NISUxEwqDCoMKgwqDCoMKgwqAgMHgyMDAwwqDCoC8qIDEgPSBm dW5jdGlvbiBhcmc7IHgucGFyZW50Cj4gcG9pbnRzIHRvIHNvdXJjZSAqLwo+ICsgI2RlZmluZcKg wqDCoMKgwqDCoMKgVkZfRElSVFnCoMKgwqDCoMKgwqDCoCAweDQwMDDCoMKgLyogMSA9IHZhcmlh YmxlIHdhcyBzZXQKPiBleHBsaWNpdGx5ICovCj4gKyAKPiArQEAgLTExOCw4ICsxMTksOCBAQCB0 eXBlZGVmIHN0cnVjdCB3YWxrZXJfbGlzdCB7Cj4gKyAvKiBWYXJpYWJsZSAqLwo+ICsgdHlwZWRl ZiBzdHJ1Y3QgdmFyX3Mgewo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIHR5cGU7wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKiBmbGFncyAqLwo+ICstwqDCoMKgwqDCoMKgZG91YmxlIG51bWJlcjsK PiArwqDCoMKgwqDCoMKgwqBjaGFyICpzdHJpbmc7Cj4gKyvCoMKgwqDCoMKgwqBkb3VibGUgbnVt YmVyOwo+ICvCoMKgwqDCoMKgwqDCoHVuaW9uIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50IGFpZHg7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBmdW5jIGFyZyBp ZHggKGZvcgo+IGNvbXBpbGF0aW9uIHN0YWdlKSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgeGhhc2hfcyAqYXJyYXk7wqAgLyogYXJyYXkgcHRyICovCj4gK0BAIC0x MzgsNiArMTM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgY2hhaW5fcyB7Cj4gKyAvKiBGdW5jdGlvbiAq Lwo+ICsgdHlwZWRlZiBzdHJ1Y3QgZnVuY19zIHsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBu YXJnczsKPiArK8KgwqDCoMKgwqDCoHNtYWxsaW50IGRlZmluZWQ7Cj4gK8KgwqDCoMKgwqDCoMKg c3RydWN0IGNoYWluX3MgYm9keTsKPiArIH0gZnVuYzsKPiArIAo+ICtAQCAtMTc3LDcgKzE3OSw3 IEBAIHR5cGVkZWYgc3RydWN0IG5vZGVfcyB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBub2RlX3MgKm47Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZh ciAqdjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IGFpZHg7Cj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqbmV3X3Byb2duYW1lOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKm5ld19wcm9nbmFtZTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVnZXhfdCAqcmU7Cj4gK8KgwqDCoMKgwqDCoMKgfSBsOwo+ ICvCoMKgwqDCoMKgwqDCoHVuaW9uIHsKPiArQEAgLTE5MCw5MSArMTkyLDEyMCBAQCB0eXBlZGVm IHN0cnVjdCBub2RlX3Mgewo+ICvCoMKgwqDCoMKgwqDCoH0gYTsKPiArIH0gbm9kZTsKPiArIAo+ ICstLyogQmxvY2sgb2YgdGVtcG9yYXJ5IHZhcmlhYmxlcyAqLwo+ICstdHlwZWRlZiBzdHJ1Y3Qg bnZibG9ja19zIHsKPiArLcKgwqDCoMKgwqDCoGludCBzaXplOwo+ICstwqDCoMKgwqDCoMKgdmFy ICpwb3M7Cj4gKy3CoMKgwqDCoMKgwqBzdHJ1Y3QgbnZibG9ja19zICpwcmV2Owo+ICstwqDCoMKg wqDCoMKgc3RydWN0IG52YmxvY2tfcyAqbmV4dDsKPiArLcKgwqDCoMKgwqDCoHZhciBudltdOwo+ ICstfSBudmJsb2NrOwo+ICstCj4gKyB0eXBlZGVmIHN0cnVjdCB0c3BsaXR0ZXJfcyB7Cj4gK8Kg wqDCoMKgwqDCoMKgbm9kZSBuOwo+ICvCoMKgwqDCoMKgwqDCoHJlZ2V4X3QgcmVbMl07Cj4gKyB9 IHRzcGxpdHRlcjsKPiArIAo+ICsgLyogc2ltcGxlIHRva2VuIGNsYXNzZXMgKi8KPiArLS8qIE9y ZGVyIGFuZCBoZXggdmFsdWVzIGFyZSB2ZXJ5IGltcG9ydGFudCEhIcKgIFNlZSBuZXh0X3Rva2Vu KCkgKi8KPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1NFUVNUQVJUwqDCoMKgwqDCoCgxIDw8 IDApwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAoICovCj4gKy0jZGVmaW5lwqDC oMKgwqDCoMKgwqBUQ19TRVFURVJNwqDCoMKgwqDCoMKgKDEgPDwgMSnCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qICkgKi8KPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1JFR0VY UMKgwqDCoMKgwqDCoMKgKDEgPDwgMinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8q IC8uLi4vICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19PVVRSRFLCoMKgwqDCoMKgwqDC oCgxIDw8IDMpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB8ID4gPj4gKi8KPiAr LSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1VPUFBPU1TCoMKgwqDCoMKgwqAoMSA8PCA0KcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdW5hcnkKPiBwb3N0Zml4IG9wZXJhdG9yICov Cj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19VT1BQUkUxwqDCoMKgwqDCoMKgKDEgPDwgNSnC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHVuYXJ5Cj4gcHJlZml4IG9wZXJhdG9y ICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19CSU5PUFjCoMKgwqDCoMKgwqDCoCgxIDw8 IDYpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB0d28tb3BuZAo+IG9wZXJhdG9y ICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19JTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAo MSA8PCA3KQo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfQ09NTUHCoMKgwqDCoMKgwqDCoMKg KDEgPDwgOCkKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1BJUEXCoMKgwqDCoMKgwqDCoMKg wqAoMSA8PCA5KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaW5wdXQKPiByZWRp cmVjdGlvbiBwaXBlICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19VT1BQUkUywqDCoMKg wqDCoMKgKDEgPDwgMTApwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdW5hcnkKPiBw cmVmaXggb3BlcmF0b3IgKi8KPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0FSUlRFUk3CoMKg wqDCoMKgwqAoMSA8PCAxMSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBdICovCj4g Ky0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19HUlBTVEFSVMKgwqDCoMKgwqAoMSA8PCAxMinCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB7ICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKg wqBUQ19HUlBURVJNwqDCoMKgwqDCoMKgKDEgPDwgMTMpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogfSAqLwo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfU0VNSUNPTMKgwqDCoMKg wqDCoCgxIDw8IDE0KQo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfTkVXTElORcKgwqDCoMKg wqDCoCgxIDw8IDE1KQo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfU1RBVFjCoMKgwqDCoMKg wqDCoMKgKDEgPDwgMTYpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogY3RsCj4gc3Rh dGVtZW50IChmb3IsIG5leHQuLi4pICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19XSElM RcKgwqDCoMKgwqDCoMKgwqAoMSA8PCAxNykKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0VM U0XCoMKgwqDCoMKgwqDCoMKgwqAoMSA8PCAxOCkKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRD X0JVSUxUSU7CoMKgwqDCoMKgwqAoMSA8PCAxOSkKPiArKy8qIG9yZGVyIGFuZCBoZXggdmFsdWVz IGFyZSB2ZXJ5IGltcG9ydGFudCEhIcKgIFNlZSBuZXh0X3Rva2VuKCkgKi8KPiArKyNkZWZpbmUg VENfTFBBUkVOwqDCoMKgwqDCoMKgICgxIDw8IDApwqDCoMKgwqDCoMKgwqAgLyogKCAqLwo+ICsr I2RlZmluZSBUQ19SUEFSRU7CoMKgwqDCoMKgwqAgKDEgPDwgMSnCoMKgwqDCoMKgwqDCoCAvKiAp ICovCj4gKysjZGVmaW5lIFRDX1JFR0VYUMKgwqDCoMKgwqDCoCAoMSA8PCAyKcKgwqDCoMKgwqDC oMKgIC8qIC8uLi4vICovCj4gKysjZGVmaW5lIFRDX09VVFJEUsKgwqDCoMKgwqDCoCAoMSA8PCAz KcKgwqDCoMKgwqDCoMKgIC8qIHwgPiA+PiAqLwo+ICsrI2RlZmluZSBUQ19VT1BQT1NUwqDCoMKg wqDCoCAoMSA8PCA0KcKgwqDCoMKgwqDCoMKgIC8qIHVuYXJ5IHBvc3RmaXggb3BlcmF0b3IKPiAr KyAtLSAqLwo+ICsrI2RlZmluZSBUQ19VT1BQUkUxwqDCoMKgwqDCoCAoMSA8PCA1KcKgwqDCoMKg wqDCoMKgIC8qIHVuYXJ5IHByZWZpeCBvcGVyYXRvciArKwo+IC0tICQgKi8KPiArKyNkZWZpbmUg VENfQklOT1BYwqDCoMKgwqDCoMKgICgxIDw8IDYpwqDCoMKgwqDCoMKgwqAgLyogdHdvLW9wbmQg b3BlcmF0b3IgKi8KPiArKyNkZWZpbmUgVENfSU7CoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA3 KcKgwqDCoMKgwqDCoMKgIC8qICdpbicgKi8KPiArKyNkZWZpbmUgVENfQ09NTUHCoMKgwqDCoMKg wqDCoCAoMSA8PCA4KcKgwqDCoMKgwqDCoMKgIC8qICwgKi8KPiArKyNkZWZpbmUgVENfUElQRcKg wqDCoMKgwqDCoMKgwqAgKDEgPDwgOSnCoMKgwqDCoMKgwqDCoCAvKiBpbnB1dCByZWRpcmVjdGlv biBwaXBlIHwKPiAqLwo+ICsrI2RlZmluZSBUQ19VT1BQUkUywqDCoMKgwqDCoCAoMSA8PCAxMCnC oMKgwqDCoMKgwqAgLyogdW5hcnkgcHJlZml4IG9wZXJhdG9yICsKPiAtICEgKi8KPiArKyNkZWZp bmUgVENfQVJSVEVSTcKgwqDCoMKgwqAgKDEgPDwgMTEpwqDCoMKgwqDCoMKgIC8qIF0gKi8KPiAr KyNkZWZpbmUgVENfTEJSQUNFwqDCoMKgwqDCoMKgICgxIDw8IDEyKcKgwqDCoMKgwqDCoCAvKiB7 ICovCj4gKysjZGVmaW5lIFRDX1JCUkFDRcKgwqDCoMKgwqDCoCAoMSA8PCAxMynCoMKgwqDCoMKg wqAgLyogfSAqLwo+ICsrI2RlZmluZSBUQ19TRU1JQ09MwqDCoMKgwqDCoCAoMSA8PCAxNCnCoMKg wqDCoMKgwqAgLyogOyAqLwo+ICsrI2RlZmluZSBUQ19ORVdMSU5FwqDCoMKgwqDCoCAoMSA8PCAx NSkKPiArKyNkZWZpbmUgVENfU1RBVFjCoMKgwqDCoMKgwqDCoCAoMSA8PCAxNinCoMKgwqDCoMKg wqAgLyogY3RsIHN0YXRlbWVudCAoZm9yLAo+IG5leHQuLi4pICovCj4gKysjZGVmaW5lIFRDX1dI SUxFwqDCoMKgwqDCoMKgwqAgKDEgPDwgMTcpwqDCoMKgwqDCoMKgIC8qICd3aGlsZScgKi8KPiAr KyNkZWZpbmUgVENfRUxTRcKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgMTgpwqDCoMKgwqDCoMKgIC8q ICdlbHNlJyAqLwo+ICsrI2RlZmluZSBUQ19CVUlMVElOwqDCoMKgwqDCoCAoMSA8PCAxOSkKPiAr IC8qIFRoaXMgY29zdHMgfjUwIGJ5dGVzIG9mIGNvZGUuCj4gK8KgICogQSBzZXBhcmF0ZSBjbGFz cyB0byBzdXBwb3J0IGRlcHJlY2F0ZWQgImxlbmd0aCIgZm9ybS4gSWYgd2UKPiBkb24ndCBuZWVk IHRoYXQKPiArwqAgKiAoaS5lLiBpZiB3ZSBkZW1hbmQgdGhhdCBvbmx5ICJsZW5ndGgoKSIgd2l0 aCAoKSBpcyB2YWxpZCksIHRoZW4KPiBUQ19MRU5HVEgKPiArwqAgKiBjYW4gYmUgbWVyZ2VkIHdp dGggVENfQlVJTFRJTjoKPiArwqAgKi8KPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0xFTkdU SMKgwqDCoMKgwqDCoMKgKDEgPDwgMjApCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19HRVRM SU5FwqDCoMKgwqDCoMKgKDEgPDwgMjEpCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19GVU5D REVDTMKgwqDCoMKgwqAoMSA8PCAyMinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAn ZnVuY3Rpb24nCj4gJ2Z1bmMnICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19CRUdJTsKg wqDCoMKgwqDCoMKgwqAoMSA8PCAyMykKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0VORMKg wqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMjQpCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19F T0bCoMKgwqDCoMKgwqDCoMKgwqDCoCgxIDw8IDI1KQo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKg VENfVkFSSUFCTEXCoMKgwqDCoMKgKDEgPDwgMjYpCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBU Q19BUlJBWcKgwqDCoMKgwqDCoMKgwqAoMSA8PCAyNykKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDC oFRDX0ZVTkNUSU9OwqDCoMKgwqDCoCgxIDw8IDI4KQo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKg VENfU1RSSU5HwqDCoMKgwqDCoMKgwqAoMSA8PCAyOSkKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDC oFRDX05VTUJFUsKgwqDCoMKgwqDCoMKgKDEgPDwgMzApCj4gKy0KPiArLSNkZWZpbmXCoMKgwqDC oMKgwqDCoFRDX1VPUFBSRcKgIChUQ19VT1BQUkUxIHwgVENfVU9QUFJFMikKPiArLQo+ICstLyog Y29tYmluZWQgdG9rZW4gY2xhc3NlcyAqLwo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfQklO T1DCoMKgIChUQ19CSU5PUFggfCBUQ19DT01NQSB8IFRDX1BJUEUgfCBUQ19JTikKPiArLS8vI2Rl ZmluZcKgwqDCoMKgwqBUQ19VTkFSWU9QIChUQ19VT1BQUkUgfCBUQ19VT1BQT1NUKQo+ICstI2Rl ZmluZcKgwqDCoMKgwqDCoMKgVENfT1BFUkFORCAoVENfVkFSSUFCTEUgfCBUQ19BUlJBWSB8IFRD X0ZVTkNUSU9OIFwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRD X0JVSUxUSU4gfCBUQ19MRU5HVEggfCBUQ19HRVRMSU5FIFwKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX1NFUVNUQVJUIHwgVENfU1RSSU5HIHwgVENfTlVNQkVS KQo+ICstCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19TVEFURU1OVCAoVENfU1RBVFggfCBU Q19XSElMRSkKPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX09QVEVSTcKgIChUQ19TRU1JQ09M IHwgVENfTkVXTElORSkKPiArKyNkZWZpbmUgVENfTEVOR1RIwqDCoMKgwqDCoMKgICgxIDw8IDIw KcKgwqDCoMKgwqDCoCAvKiAnbGVuZ3RoJyAqLwo+ICsrI2RlZmluZSBUQ19HRVRMSU5FwqDCoMKg wqDCoCAoMSA8PCAyMSnCoMKgwqDCoMKgwqAgLyogJ2dldGxpbmUnICovCj4gKysjZGVmaW5lIFRD X0ZVTkNERUNMwqDCoMKgwqAgKDEgPDwgMjIpwqDCoMKgwqDCoMKgIC8qICdmdW5jdGlvbicgJ2Z1 bmMnICovCj4gKysjZGVmaW5lIFRDX0JFR0lOwqDCoMKgwqDCoMKgwqAgKDEgPDwgMjMpwqDCoMKg wqDCoMKgIC8qICdCRUdJTicgKi8KPiArKyNkZWZpbmUgVENfRU5EwqDCoMKgwqDCoMKgwqDCoMKg ICgxIDw8IDI0KcKgwqDCoMKgwqDCoCAvKiAnRU5EJyAqLwo+ICsrI2RlZmluZSBUQ19FT0bCoMKg wqDCoMKgwqDCoMKgwqAgKDEgPDwgMjUpCj4gKysjZGVmaW5lIFRDX1ZBUklBQkxFwqDCoMKgwqAg KDEgPDwgMjYpwqDCoMKgwqDCoMKgIC8qIG5hbWUgKi8KPiArKyNkZWZpbmUgVENfQVJSQVnCoMKg wqDCoMKgwqDCoCAoMSA8PCAyNynCoMKgwqDCoMKgwqAgLyogbmFtZVsgKi8KPiArKyNkZWZpbmUg VENfRlVOQ1RJT07CoMKgwqDCoCAoMSA8PCAyOCnCoMKgwqDCoMKgwqAgLyogbmFtZSggKi8KPiAr KyNkZWZpbmUgVENfU1RSSU5HwqDCoMKgwqDCoMKgICgxIDw8IDI5KcKgwqDCoMKgwqDCoCAvKiAi Li4uIiAqLwo+ICsrI2RlZmluZSBUQ19OVU1CRVLCoMKgwqDCoMKgwqAgKDEgPDwgMzApCj4gKysK PiArKyNpZm5kZWYgZGVidWdfcGFyc2VfcHJpbnRfdGMKPiArK3N0YXRpYyB2b2lkIGRlYnVnX3Bh cnNlX3ByaW50X3RjKHVpbnQzMl90IG4pCj4gKyt7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRD X0xQQVJFTsKgICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgTFBBUkVOIsKgICk7Cj4gKyvCoMKgwqDC oMKgwqBpZiAobiAmIFRDX1JQQVJFTsKgICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgUlBBUkVOIsKg ICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1JFR0VYUMKgICkgZGVidWdfcHJpbnRmX3Bh cnNlKCIgUkVHRVhQIsKgICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX09VVFJEUsKgICkg ZGVidWdfcHJpbnRmX3BhcnNlKCIgT1VUUkRSIsKgICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAm IFRDX1VPUFBPU1QgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBVT1BQT1NUIiApOwo+ICsrwqDCoMKg wqDCoMKgaWYgKG4gJiBUQ19VT1BQUkUxICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgVU9QUFJFMSIg KTsKPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfQklOT1BYwqAgKSBkZWJ1Z19wcmludGZfcGFy c2UoIiBCSU5PUFgiwqAgKTsKPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfSU7CoMKgwqDCoMKg ICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgSU4iwqDCoMKgwqDCoCApOwo+ICsrwqDCoMKgwqDCoMKg aWYgKG4gJiBUQ19DT01NQcKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBDT01NQSLCoMKgICk7 Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1BJUEXCoMKgwqAgKSBkZWJ1Z19wcmludGZfcGFy c2UoIiBQSVBFIsKgwqDCoCApOwo+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19VT1BQUkUyICkg ZGVidWdfcHJpbnRmX3BhcnNlKCIgVU9QUFJFMiIgKTsKPiArK8KgwqDCoMKgwqDCoGlmIChuICYg VENfQVJSVEVSTSApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEFSUlRFUk0iICk7Cj4gKyvCoMKgwqDC oMKgwqBpZiAobiAmIFRDX0xCUkFDRcKgICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgTEJSQUNFIsKg ICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1JCUkFDRcKgICkgZGVidWdfcHJpbnRmX3Bh cnNlKCIgUkJSQUNFIsKgICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1NFTUlDT0wgKSBk ZWJ1Z19wcmludGZfcGFyc2UoIiBTRU1JQ09MIiApOwo+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBU Q19ORVdMSU5FICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgTkVXTElORSIgKTsKPiArK8KgwqDCoMKg wqDCoGlmIChuICYgVENfU1RBVFjCoMKgICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgU1RBVFgiwqDC oCApOwo+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19XSElMRcKgwqAgKSBkZWJ1Z19wcmludGZf cGFyc2UoIiBXSElMRSLCoMKgICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0VMU0XCoMKg wqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBFTFNFIsKgwqDCoCApOwo+ICsrwqDCoMKgwqDCoMKg aWYgKG4gJiBUQ19CVUlMVElOICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgQlVJTFRJTiIgKTsKPiAr K8KgwqDCoMKgwqDCoGlmIChuICYgVENfTEVOR1RIwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBM RU5HVEgiwqAgKTsKPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfR0VUTElORSApIGRlYnVnX3By aW50Zl9wYXJzZSgiIEdFVExJTkUiICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0ZVTkNE RUNMKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBGVU5DREVDTCIpOwo+ICsrwqDCoMKgwqDCoMKgaWYg KG4gJiBUQ19CRUdJTsKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBCRUdJTiLCoMKgICk7Cj4g KyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0VORMKgwqDCoMKgICkgZGVidWdfcHJpbnRmX3BhcnNl KCIgRU5EIsKgwqDCoMKgICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0VPRsKgwqDCoMKg ICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgRU9GIsKgwqDCoMKgICk7Cj4gKyvCoMKgwqDCoMKgwqBp ZiAobiAmIFRDX1ZBUklBQkxFKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBWQVJJQUJMRSIpOwo+ICsr wqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19BUlJBWcKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBB UlJBWSLCoMKgICk7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0ZVTkNUSU9OKSBkZWJ1Z19w cmludGZfcGFyc2UoIiBGVU5DVElPTiIpOwo+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19TVFJJ TkfCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFNUUklORyLCoCApOwo+ICsrwqDCoMKgwqDCoMKg aWYgKG4gJiBUQ19OVU1CRVLCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIE5VTUJFUiLCoCApOwo+ ICsrfQo+ICsrI2VuZGlmCj4gKysKPiArKy8qIGNvbWJpbmVkIHRva2VuIGNsYXNzZXMgKCJ0b2tl biBbY2xhc3NdIHNldHMiKSAqLwo+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfVU9QUFJFwqDC oCAoVENfVU9QUFJFMSB8IFRDX1VPUFBSRTIpCj4gKysKPiArKyNkZWZpbmXCoMKgwqDCoMKgwqDC oFRTX0JJTk9QwqDCoMKgIChUQ19CSU5PUFggfCBUQ19DT01NQSB8IFRDX1BJUEUgfCBUQ19JTikK PiArKy8vI2RlZmluZSBUU19VTkFSWU9QIChUU19VT1BQUkUgfCBUQ19VT1BQT1NUKQo+ICsrI2Rl ZmluZcKgwqDCoMKgwqDCoMKgVFNfT1BFUkFORMKgIChUQ19WQVJJQUJMRSB8IFRDX0FSUkFZIHwg VENfRlVOQ1RJT04gXAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCBUQ19CVUlMVElOIHwgVENfTEVOR1RIIHwgVENfR0VUTElORSBcCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX0xQQVJFTiB8IFRDX1NUUklORyB8IFRDX05V TUJFUikKPiArKwo+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfTFZBTFVFwqDCoCAoVENfVkFS SUFCTEUgfCBUQ19BUlJBWSkKPiArKyNkZWZpbmXCoMKgwqDCoMKgwqDCoFRTX1NUQVRFTU5UIChU Q19TVEFUWCB8IFRDX1dISUxFKQo+ICsgCj4gKyAvKiB3b3JkIHRva2VucywgY2Fubm90IG1lYW4g c29tZXRoaW5nIGVsc2UgaWYgbm90IGV4cGVjdGVkICovCj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKg wqBUQ19XT1JEwqDCoMKgIChUQ19JTiB8IFRDX1NUQVRFTU5UIHwgVENfRUxTRSBcCj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19CVUlMVElOIHwgVENfTEVOR1RI IHwgVENfR0VUTElORSBcCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCBUQ19GVU5DREVDTCB8IFRDX0JFR0lOIHwgVENfRU5EKQo+ICsrI2RlZmluZcKgwqDCoMKgwqDC oMKgVFNfV09SRMKgwqDCoMKgIChUQ19JTiB8IFRTX1NUQVRFTU5UIHwgVENfRUxTRSBcCj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX0JVSUxUSU4gfCBUQ19M RU5HVEggfCBUQ19HRVRMSU5FIFwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgVENfRlVOQ0RFQ0wgfCBUQ19CRUdJTiB8IFRDX0VORCkKPiArIAo+ICsgLyogZGlz Y2FyZCBuZXdsaW5lcyBhZnRlciB0aGVzZSAqLwo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENf Tk9URVJNwqAgKFRDX0NPTU1BIHwgVENfR1JQU1RBUlQgfCBUQ19HUlBURVJNIFwKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX0JJTk9QIHwgVENfT1BURVJNKQo+ ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfTk9URVJNwqDCoCAoVFNfQklOT1AgfCBUQ19DT01N QSB8IFRDX0xCUkFDRSB8Cj4gVENfUkJSQUNFIFwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgVENfU0VNSUNPTCB8IFRDX05FV0xJTkUpCj4gKyAKPiArIC8qIHdo YXQgY2FuIGV4cHJlc3Npb24gYmVnaW4gd2l0aCAqLwo+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKg VENfT1BTRVHCoMKgIChUQ19PUEVSQU5EIHwgVENfVU9QUFJFIHwgVENfUkVHRVhQKQo+ICsrI2Rl ZmluZcKgwqDCoMKgwqDCoMKgVFNfT1BTRVHCoMKgwqAgKFRTX09QRVJBTkQgfCBUU19VT1BQUkUg fCBUQ19SRUdFWFApCj4gKyAvKiB3aGF0IGNhbiBncm91cCBiZWdpbiB3aXRoICovCj4gKy0jZGVm aW5lwqDCoMKgwqDCoMKgwqBUQ19HUlBTRVHCoCAoVENfT1BTRVEgfCBUQ19PUFRFUk0gfCBUQ19T VEFURU1OVCB8Cj4gVENfR1JQU1RBUlQpCj4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19HUlBT RVHCoMKgIChUU19PUFNFUSB8IFRTX1NUQVRFTU5UIFwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgVENfU0VNSUNPTCB8IFRDX05FV0xJTkUgfCBUQ19MQlJBQ0Up Cj4gKyAKPiArLS8qIGlmIHByZXZpb3VzIHRva2VuIGNsYXNzIGlzIENPTkNBVDEgYW5kIG5leHQg aXMgQ09OQ0FUMiwKPiBjb25jYXRlbmF0aW9uICovCj4gKysvKiBpZiBwcmV2aW91cyB0b2tlbiBj bGFzcyBpcyBDT05DQVRfTCBhbmQgbmV4dCBpcyBDT05DQVRfUiwKPiBjb25jYXRlbmF0aW9uICov Cj4gKyAvKiBvcGVyYXRvciBpcyBpbnNlcnRlZCBiZXR3ZWVuIHRoZW0gKi8KPiArLSNkZWZpbmXC oMKgwqDCoMKgwqDCoFRDX0NPTkNBVDEgKFRDX1ZBUklBQkxFIHwgVENfQVJSVEVSTSB8IFRDX1NF UVRFUk0gXAo+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfQ09OQ0FUX0wgKFRDX1ZBUklBQkxF IHwgVENfQVJSVEVSTSB8IFRDX1JQQVJFTiBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgVENfU1RSSU5HIHwgVENfTlVNQkVSIHwgVENfVU9QUE9TVCBcCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgVENfTEVOR1RIKQo+ICstI2Rl ZmluZcKgwqDCoMKgwqDCoMKgVENfQ09OQ0FUMiAoVENfT1BFUkFORCB8IFRDX1VPUFBSRSkKPiAr KyNkZWZpbmXCoMKgwqDCoMKgwqDCoFRTX0NPTkNBVF9SIChUU19PUEVSQU5EIHwgVFNfVU9QUFJF KQo+ICsgCj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBPRl9SRVMxwqDCoMKgwqAgMHgwMTAwMDAK PiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoE9GX1JFUzLCoMKgwqDCoCAweDAyMDAwMAo+ICtAQCAt Mjg0LDEzICszMTUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgdHNwbGl0dGVyX3Mgewo+ICsgI2RlZmlu ZcKgwqDCoMKgwqDCoMKgT0ZfQ0hFQ0tFRMKgIDB4MjAwMDAwCj4gKyAjZGVmaW5lwqDCoMKgwqDC oMKgwqBPRl9SRVFVSVJFRCAweDQwMDAwMAo+ICsgCj4gKy0KPiArIC8qIGNvbWJpbmVkIG9wZXJh dG9yIGZsYWdzICovCj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqB4eMKgwqDCoMKgwqDCoDAKPiAr ICNkZWZpbmXCoMKgwqDCoMKgwqDCoHhWwqDCoMKgwqDCoMKgT0ZfUkVTMgo+ICsgI2RlZmluZcKg wqDCoMKgwqDCoMKgeFPCoMKgwqDCoMKgwqAoT0ZfUkVTMiB8IE9GX1NUUjIpCj4gKyAjZGVmaW5l wqDCoMKgwqDCoMKgwqBWeMKgwqDCoMKgwqDCoE9GX1JFUzEKPiArLSNkZWZpbmXCoMKgwqDCoMKg wqDCoFJ4wqDCoMKgwqDCoMKgKE9GX1JFUzEgfCBPRl9OVU0xIHwgT0ZfUkVRVUlSRUQpCj4gKysj ZGVmaW5lwqDCoMKgwqDCoMKgwqBSeMKgwqDCoMKgwqDCoE9GX1JFUVVJUkVECj4gKyAjZGVmaW5l wqDCoMKgwqDCoMKgwqBWVsKgwqDCoMKgwqDCoChPRl9SRVMxIHwgT0ZfUkVTMikKPiArICNkZWZp bmXCoMKgwqDCoMKgwqDCoE54wqDCoMKgwqDCoMKgKE9GX1JFUzEgfCBPRl9OVU0xKQo+ICsgI2Rl ZmluZcKgwqDCoMKgwqDCoMKgTlbCoMKgwqDCoMKgwqAoT0ZfUkVTMSB8IE9GX05VTTEgfCBPRl9S RVMyKQo+ICtAQCAtMzAyLDggKzMzMiw3IEBAIHR5cGVkZWYgc3RydWN0IHRzcGxpdHRlcl9zIHsK PiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoE9QTk1BU0vCoMKgIDB4MDA3Rgo+ICsgCj4gKyAvKiBv cGVyYXRvciBwcmlvcml0eSBpcyBhIGhpZ2hlc3QgYnl0ZSAoZXZlbjogci0+bCwgb2RkOiBsLT5y Cj4gZ3JvdXBpbmcpCj4gKy0gKiBGb3IgYnVpbHRpbnMgaXQgaGFzIGRpZmZlcmVudCBtZWFuaW5n OiBuIG4gczMgczIgczEgdjMgdjIgdjEsCj4gKy0gKiBuIC0gbWluLiBudW1iZXIgb2YgYXJncywg dk4gLSByZXNvbHZlIE50aCBhcmcgdG8gdmFyLCBzTiAtCj4gcmVzb2x2ZSB0byBzdHJpbmcKPiAr KyAqIChmb3IgYnVpbHRpbnMgaXQgaGFzIGRpZmZlcmVudCBtZWFuaW5nKQo+ICvCoCAqLwo+ICsg I3VuZGVmIFAKPiArICN1bmRlZiBQUklNQVNLCj4gK0BAIC0zMTMsMTAgKzM0Miw4IEBAIHR5cGVk ZWYgc3RydWN0IHRzcGxpdHRlcl9zIHsKPiArICNkZWZpbmUgUFJJTUFTSzLCoCAweDdFMDAwMDAw Cj4gKyAKPiArIC8qIE9wZXJhdGlvbiBjbGFzc2VzICovCj4gKy0KPiArICNkZWZpbmXCoMKgwqDC oMKgwqDCoFNISUZUX1RJTF9USElTwqDCoDB4MDYwMAo+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKg UkVDVVJfRlJPTV9USElTwqAweDEwMDAKPiArLQo+ICsgZW51bSB7Cj4gK8KgwqDCoMKgwqDCoMKg T0NfREVMRVRFID0gMHgwMTAwLMKgwqDCoMKgIE9DX0VYRUMgPSAweDAyMDAswqDCoMKgwqDCoMKg IE9DX05FV1NPVVJDRQo+ID0gMHgwMzAwLAo+ICvCoMKgwqDCoMKgwqDCoE9DX1BSSU5UID0gMHgw NDAwLMKgwqDCoMKgwqAgT0NfUFJJTlRGID0gMHgwNTAwLMKgwqDCoMKgIE9DX1dBTEtJTklUID0K PiAweDA2MDAsCj4gK0BAIC0zNTgsOCArMzg1LDggQEAgZW51bSB7Cj4gKyAjZGVmaW5lIE5UQ0PC oMKgwqAgJ1wzNzcnCj4gKyAKPiArIHN0YXRpYyBjb25zdCBjaGFyIHRva2VubGlzdFtdIEFMSUdO MSA9Cj4gKy3CoMKgwqDCoMKgwqAiXDEoIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyoKPiBUQ19TRVFTVEFSVCAqLwo+ICstwqDCoMKgwqDCoMKgIlwxKSLCoMKgwqDCoMKgwqDCoMKg IE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qCj4gVENfU0VRVEVSTSAqLwo+ICsrwqDCoMKgwqDCoMKgIlwxKCLC oMKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gVENfTFBBUkVOICovCj4gKyvCoMKg wqDCoMKgwqAiXDEpIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiBUQ19SUEFS RU4gKi8KPiArwqDCoMKgwqDCoMKgwqAiXDEvIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoKPiBUQ19SRUdFWFAgKi8KPiArwqDCoMKgwqDCoMKgwqAiXDI+PiLCoMKgwqDCoMKgwqDC oCAiXDE+IsKgwqDCoMKgwqDCoMKgwqAgIlwxfCLCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKg wqDCoCAvKgo+IFRDX09VVFJEUiAqLwo+ICvCoMKgwqDCoMKgwqDCoCJcMisrIsKgwqDCoMKgwqDC oMKgICJcMi0tIsKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLyoKPiBUQ19VT1BQT1NUICovCj4gK0BAIC0zNzYsOCArNDAzLDggQEAgc3Rh dGljIGNvbnN0IGNoYXIgdG9rZW5saXN0W10gQUxJR04xID0KPiArwqDCoMKgwqDCoMKgwqAiXDF8 IsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiBUQ19QSVBFICovCj4gK8KgwqDC oMKgwqDCoMKgIlwxKyLCoMKgwqDCoMKgwqDCoMKgICJcMS0iwqDCoMKgwqDCoMKgwqDCoCAiXDEh IsKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgIC8qCj4gVENfVU9QUFJFMiAqLwo+ICvC oMKgwqDCoMKgwqDCoCJcMV0iwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+IFRD X0FSUlRFUk0gKi8KPiArLcKgwqDCoMKgwqDCoCJcMXsiwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKgo+IFRDX0dSUFNUQVJUICovCj4gKy3CoMKgwqDCoMKgwqAiXDF9IsKgwqDCoMKg wqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiBUQ19HUlBURVJNICovCj4gKyvCoMKgwqDCoMKg wqAiXDF7IsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiBUQ19MQlJBQ0UgKi8K PiArK8KgwqDCoMKgwqDCoCJcMX0iwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ IFRDX1JCUkFDRSAqLwo+ICvCoMKgwqDCoMKgwqDCoCJcMTsiwqDCoMKgwqDCoMKgwqDCoCBOVEPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvKgo+IFRDX1NFTUlDT0wgKi8KPiArwqDCoMKgwqDCoMKgwqAiXDFcbiLCoMKg wqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+IFRDX05FV0xJTkUgKi8KPiArwqDCoMKgwqDC oMKgwqAiXDJpZiLCoMKgwqDCoMKgwqDCoCAiXDJkbyLCoMKgwqDCoMKgwqDCoCAiXDNmb3IiwqDC oMKgwqAgIlw1YnJlYWsiwqDCoCAvKgo+IFRDX1NUQVRYICovCj4gK0BAIC0zOTEsNyArNDE4LDcg QEAgc3RhdGljIGNvbnN0IGNoYXIgdG9rZW5saXN0W10gQUxJR04xID0KPiArwqDCoMKgwqDCoMKg wqAiXDVjbG9zZSLCoMKgwqDCoCAiXDZzeXN0ZW0iwqDCoMKgICJcNmZmbHVzaCLCoCAiXDVhdGFu MiIKPiArwqDCoMKgwqDCoMKgwqAiXDNjb3MiwqDCoMKgwqDCoMKgICJcM2V4cCLCoMKgwqDCoMKg wqAgIlwzaW50IsKgwqDCoMKgICJcM2xvZyIKPiArwqDCoMKgwqDCoMKgwqAiXDRyYW5kIsKgwqDC oMKgwqAgIlwzc2luIsKgwqDCoMKgwqDCoCAiXDRzcXJ0IsKgwqDCoCAiXDVzcmFuZCIKPiArLcKg wqDCoMKgwqDCoCJcNmdlbnN1YiLCoMKgwqAgIlw0Z3N1YiLCoMKgwqDCoMKgICJcNWluZGV4IsKg wqDCoC8qICJcNmxlbmd0aCIgd2FzCj4gaGVyZSAqLwo+ICsrwqDCoMKgwqDCoMKgIlw2Z2Vuc3Vi IsKgwqDCoCAiXDRnc3ViIsKgwqDCoMKgwqAgIlw1aW5kZXgiwqDCoCAvKiAiXDZsZW5ndGgiIHdh cwo+IGhlcmUgKi8KPiArwqDCoMKgwqDCoMKgwqAiXDVtYXRjaCLCoMKgwqDCoCAiXDVzcGxpdCLC oMKgwqDCoCAiXDdzcHJpbnRmIiAiXDNzdWIiCj4gK8KgwqDCoMKgwqDCoMKgIlw2c3Vic3RyIsKg wqDCoCAiXDdzeXN0aW1lIsKgwqAgIlwxMHN0cmZ0aW1lIiAiXDZta3RpbWUiCj4gK8KgwqDCoMKg wqDCoMKgIlw3dG9sb3dlciLCoMKgICJcN3RvdXBwZXIiwqDCoCBOVEMKPiArQEAgLTQwMywyNSAr NDMwLDMyIEBAIHN0YXRpYyBjb25zdCBjaGFyIHRva2VubGlzdFtdIEFMSUdOMSA9Cj4gK8KgwqDC oMKgwqDCoMKgLyogY29tcGlsZXIgYWRkcyB0cmFpbGluZyAiXDAiICovCj4gK8KgwqDCoMKgwqDC oMKgOwo+ICsgCj4gKy0jZGVmaW5lIE9DX0LCoCBPQ19CVUlMVElOCj4gKy0KPiArIHN0YXRpYyBj b25zdCB1aW50MzJfdCB0b2tlbmluZm9bXSBBTElHTjQgPSB7Cj4gK8KgwqDCoMKgwqDCoMKgMCwK PiArwqDCoMKgwqDCoMKgwqAwLAo+ICstwqDCoMKgwqDCoMKgT0NfUkVHRVhQLAo+ICsrI2RlZmlu ZSBUSV9SRUdFWFAgT0NfUkVHRVhQCj4gKyvCoMKgwqDCoMKgwqBUSV9SRUdFWFAsCj4gK8KgwqDC oMKgwqDCoMKgeFN8J2EnLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeFN8J3cn LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeFN8J3wnLAo+ICvCoMKgwqDCoMKg wqDCoE9DX1VOQVJZfHhWfFAoOSl8J3AnLMKgwqDCoCBPQ19VTkFSWXx4VnxQKDkpfCdtJywKPiAr LcKgwqDCoMKgwqDCoE9DX1VOQVJZfHhWfFAoOSl8J1AnLMKgwqDCoCBPQ19VTkFSWXx4VnxQKDkp fCdNJyzCoMKgwqAKPiBPQ19GSUVMRHx4VnxQKDUpLAo+ICsrI2RlZmluZSBUSV9QUkVJTkMgKE9D X1VOQVJZfHhWfFAoOSl8J1AnKQo+ICsrI2RlZmluZSBUSV9QUkVERUMgKE9DX1VOQVJZfHhWfFAo OSl8J00nKQo+ICsrwqDCoMKgwqDCoMKgVElfUFJFSU5DLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgVElfUFJFREVDLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBPQ19GSUVMRHx4 VnxQKDUpLAo+ICvCoMKgwqDCoMKgwqDCoE9DX0NPTVBBUkV8VlZ8UCgzOSl8NSzCoMKgIE9DX01P VkV8VlZ8UCg3NCkswqDCoMKgwqDCoMKgwqAKPiBPQ19SRVBMQUNFfE5WfFAoNzQpfCcrJywgT0Nf UkVQTEFDRXxOVnxQKDc0KXwnLScsCj4gK8KgwqDCoMKgwqDCoMKgT0NfUkVQTEFDRXxOVnxQKDc0 KXwnKicsIE9DX1JFUExBQ0V8TlZ8UCg3NCl8Jy8nLAo+IE9DX1JFUExBQ0V8TlZ8UCg3NCl8JyUn LCBPQ19SRVBMQUNFfE5WfFAoNzQpfCcmJywKPiArwqDCoMKgwqDCoMKgwqBPQ19CSU5BUll8TlZ8 UCgyOSl8JysnLMKgIE9DX0JJTkFSWXxOVnxQKDI5KXwnLScswqAKPiBPQ19SRVBMQUNFfE5WfFAo NzQpfCcmJywgT0NfQklOQVJZfE5WfFAoMTUpfCcmJywKPiArwqDCoMKgwqDCoMKgwqBPQ19CSU5B Ull8TlZ8UCgyNSl8Jy8nLMKgIE9DX0JJTkFSWXxOVnxQKDI1KXwnJScswqAKPiBPQ19CSU5BUll8 TlZ8UCgxNSl8JyYnLMKgIE9DX0JJTkFSWXxOVnxQKDI1KXwnKicsCj4gK8KgwqDCoMKgwqDCoMKg T0NfQ09NUEFSRXxWVnxQKDM5KXw0LMKgwqAgT0NfQ09NUEFSRXxWVnxQKDM5KXwzLMKgwqAKPiBP Q19DT01QQVJFfFZWfFAoMzkpfDAswqDCoCBPQ19DT01QQVJFfFZWfFAoMzkpfDEsCj4gKy3CoMKg wqDCoMKgwqBPQ19DT01QQVJFfFZWfFAoMzkpfDIswqDCoCBPQ19NQVRDSHxTeHxQKDQ1KXwnIScs wqDCoAo+IE9DX01BVENIfFN4fFAoNDUpfCd+JyzCoMKgIE9DX0xBTkR8Vnh8UCg1NSksCj4gKy3C oMKgwqDCoMKgwqBPQ19MT1J8Vnh8UCg1OSkswqDCoMKgwqDCoMKgwqDCoCBPQ19URVJOQVJZfFZ4 fFAoNjQpfCc/JywKPiBPQ19DT0xPTnx4eHxQKDY3KXwnOicsCj4gKy3CoMKgwqDCoMKgwqBPQ19J TnxTVnxQKDQ5KSwgLyogVENfSU4gKi8KPiArLcKgwqDCoMKgwqDCoE9DX0NPTU1BfFNTfFAoODAp LAo+ICstwqDCoMKgwqDCoMKgT0NfUEdFVExJTkV8U1Z8UCgzNyksCj4gKysjZGVmaW5lIFRJX0xF U1PCoMKgwqDCoCAoT0NfQ09NUEFSRXxWVnxQKDM5KXwyKQo+ICsrwqDCoMKgwqDCoMKgVElfTEVT UyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBPQ19NQVRDSHxTeHxQKDQ1KXwnIScs wqDCoAo+IE9DX01BVENIfFN4fFAoNDUpfCd+JyzCoMKgIE9DX0xBTkR8Vnh8UCg1NSksCj4gKysj ZGVmaW5lIFRJX1RFUk5BUlnCoCAoT0NfVEVSTkFSWXxWeHxQKDY0KXwnPycpCj4gKysjZGVmaW5l IFRJX0NPTE9OwqDCoMKgIChPQ19DT0xPTnx4eHxQKDY3KXwnOicpCj4gKyvCoMKgwqDCoMKgwqBP Q19MT1J8Vnh8UCg1OSkswqDCoMKgwqDCoMKgwqDCoCBUSV9URVJOQVJZLMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFRJX0NPTE9OLAo+ICsrI2RlZmluZSBUSV9JTsKgwqDCoMKgwqDCoCAoT0Nf SU58U1Z8UCg0OSkpCj4gKyvCoMKgwqDCoMKgwqBUSV9JTiwKPiArKyNkZWZpbmUgVElfQ09NTUHC oMKgwqAgKE9DX0NPTU1BfFNTfFAoODApKQo+ICsrwqDCoMKgwqDCoMKgVElfQ09NTUEsCj4gKysj ZGVmaW5lIFRJX1BHRVRMSU5FIChPQ19QR0VUTElORXxTVnxQKDM3KSkKPiArK8KgwqDCoMKgwqDC oFRJX1BHRVRMSU5FLAo+ICvCoMKgwqDCoMKgwqDCoE9DX1VOQVJZfHhWfFAoMTkpfCcrJyzCoMKg IE9DX1VOQVJZfHhWfFAoMTkpfCctJyzCoMKgCj4gT0NfVU5BUll8eFZ8UCgxOSl8JyEnLAo+ICvC oMKgwqDCoMKgwqDCoDAsIC8qIF0gKi8KPiArwqDCoMKgwqDCoMKgwqAwLAo+ICtAQCAtNDM0LDIw ICs0NjgsNDUgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHRva2VuaW5mb1tdIEFMSUdONCA9IHsK PiArwqDCoMKgwqDCoMKgwqBPQ19SRVRVUk58VngsIE9DX0VYSVR8TngsCj4gK8KgwqDCoMKgwqDC oMKgU1RfV0hJTEUsCj4gK8KgwqDCoMKgwqDCoMKgMCwgLyogZWxzZSAqLwo+ICstwqDCoMKgwqDC oMKgT0NfQnxCX2FufFAoMHg4MyksIE9DX0J8Ql9jb3xQKDB4NDEpLCBPQ19CfEJfbHN8UCgweDgz KSwKPiBPQ19CfEJfb3J8UCgweDgzKSwKPiArLcKgwqDCoMKgwqDCoE9DX0J8Ql9yc3xQKDB4ODMp LCBPQ19CfEJfeG98UCgweDgzKSwKPiArLcKgwqDCoMKgwqDCoE9DX0ZCTFRJTnxTeHxGX2NsLCBP Q19GQkxUSU58U3h8Rl9zeSwgT0NfRkJMVElOfFN4fEZfZmYsCj4gT0NfQnxCX2EyfFAoMHg4Myks Cj4gKy3CoMKgwqDCoMKgwqBPQ19GQkxUSU58Tnh8Rl9jbywgT0NfRkJMVElOfE54fEZfZXgsIE9D X0ZCTFRJTnxOeHxGX2luLAo+IE9DX0ZCTFRJTnxOeHxGX2xnLAo+ICstwqDCoMKgwqDCoMKgT0Nf RkJMVElOfEZfcm4swqDCoMKgIE9DX0ZCTFRJTnxOeHxGX3NpLCBPQ19GQkxUSU58Tnh8Rl9zcSwK PiBPQ19GQkxUSU58Tnh8Rl9zciwKPiArLcKgwqDCoMKgwqDCoE9DX0J8Ql9nZXxQKDB4ZDYpLCBP Q19CfEJfZ3N8UCgweGI2KSwgT0NfQnxCX2l4fFAoMHg5YiksIC8qCj4gT0NfRkJMVElOfFN4fEZf bGUsIHdhcyBoZXJlICovCj4gKy3CoMKgwqDCoMKgwqBPQ19CfEJfbWF8UCgweDg5KSwgT0NfQnxC X3NwfFAoMHg4YiksIE9DX1NQUklOVEYswqDCoMKgwqDCoMKgwqAKPiBPQ19CfEJfc3V8UCgweGI2 KSwKPiArLcKgwqDCoMKgwqDCoE9DX0J8Ql9zc3xQKDB4OGYpLCBPQ19GQkxUSU58Rl90aSzCoMKg wqAgT0NfQnxCX3RpfFAoMHgwYiksCj4gT0NfQnxCX210fFAoMHgwYiksCj4gKy3CoMKgwqDCoMKg wqBPQ19CfEJfbG98UCgweDQ5KSwgT0NfQnxCX3VwfFAoMHg0OSksCj4gKy3CoMKgwqDCoMKgwqBP Q19GQkxUSU58U3h8Rl9sZSwgLyogVENfTEVOR1RIICovCj4gKy3CoMKgwqDCoMKgwqBPQ19HRVRM SU5FfFNWfFAoMCksCj4gKy3CoMKgwqDCoMKgwqAwLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDAsCj4gKy3CoMKgwqDCoMKgwqAwLAo+ICstwqDCoMKgwqDCoMKgMCAvKiBUQ19FTkQg Ki8KPiArKy8vIE9DX0IncyBhcmUgYnVpbHRpbnMgd2l0aCBlbmZvcmNlZCBtaW5pbXVtIG51bWJl ciBvZiBhcmd1bWVudHMKPiAodHdvIHVwcGVyIGJpdHMpLgo+ICsrLy/CoCBIaWdoZXN0IGJ5dGUg Yml0IHBhdHRlcm46IG5uIHMzczJzMSB2M3YydjEKPiArKy8vwqAgbm4gLSBtaW4uIG51bWJlciBv ZiBhcmdzLCBzTiAtIHJlc29sdmUgTnRoIGFyZyB0byBzdHJpbmcsIHZOIC0KPiByZXNvbHZlIHRv IHZhcgo+ICsrLy8gT0NfRidzIGFyZSBidWlsdGlucyB3aXRoIHplcm8gb3Igb25lIGFyZ3VtZW50 Lgo+ICsrLy/CoCB8Unh8IGVuZm9yY2VzIHRoYXQgYXJnIGlzIHByZXNlbnQgZm9yOiBzeXN0ZW0s IGNsb3NlLCBjb3MsIHNpbiwKPiBleHAsIGludCwgbG9nLCBzcXJ0Cj4gKysvL8KgIENoZWNrIGZv ciBubyBhcmdzIGlzIHByZXNlbnQgaW4gYnVpbHRpbnMnIGNvZGUgKG5vdCBpbiB0aGlzCj4gdGFi bGUpOiByYW5kLCBzeXN0aW1lCj4gKysvL8KgIEhhdmUgb25lIF9vcHRpb25hbF8gYXJnOiBmZmx1 c2gsIHNyYW5kLCBsZW5ndGgKPiArKyNkZWZpbmUgT0NfQsKgwqAgT0NfQlVJTFRJTgo+ICsrI2Rl ZmluZSBPQ19GwqDCoCBPQ19GQkxUSU4KPiArKyNkZWZpbmUgQTHCoMKgwqDCoCBQKDB4NDApIC8q b25lIGFyZyovCj4gKysjZGVmaW5lIEEywqDCoMKgwqAgUCgweDgwKSAvKnR3byBhcmdzKi8KPiAr KyNkZWZpbmUgQTPCoMKgwqDCoCBQKDB4YzApIC8qdGhyZWUgYXJncyovCj4gKysjZGVmaW5lIF9f dsKgwqDCoCBQKDEpCj4gKysjZGVmaW5lIF92dsKgwqDCoCBQKDMpCj4gKysjZGVmaW5lIF9fc19f diBQKDkpCj4gKysjZGVmaW5lIF9fc192diBQKDB4MGIpCj4gKysjZGVmaW5lIF9fc3Z2diBQKDB4 MGYpCj4gKysjZGVmaW5lIF9zc192diBQKDB4MWIpCj4gKysjZGVmaW5lIF9zX3Z2XyBQKDB4MTYp Cj4gKysjZGVmaW5lIHNzX3Z2XyBQKDB4MzYpCj4gKyvCoMKgwqDCoMKgwqBPQ19CfEJfYW58X3Z2 fEEyLMKgwqAgT0NfQnxCX2NvfF9fdnxBMSzCoMKgIE9DX0J8Ql9sc3xfdnZ8QTIswqDCoAo+IE9D X0J8Ql9vcnxfdnZ8QTIswqDCoCAvLyBhbmTCoMKgwqAgY29tcGzCoMKgIGxzaGlmdMKgwqAgb3IK PiArK8KgwqDCoMKgwqDCoE9DX0J8Ql9yc3xfdnZ8QTIswqDCoAo+IE9DX0J8Ql94b3xfdnZ8QTIs wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIHJzaGlmdAo+IHhvcgo+ICsrwqDCoMKgwqDC oMKgT0NfRnxGX2NsfFN4fFJ4LMKgwqDCoCBPQ19GfEZfc3l8U3h8UngswqDCoMKgIE9DX0Z8Rl9m ZnxTeCzCoMKgwqDCoMKgwqAKPiBPQ19CfEJfYTJ8X3Z2fEEyLMKgwqAgLy8gY2xvc2XCoCBzeXN0 ZW3CoCBmZmx1c2jCoMKgIGF0YW4yCj4gKyvCoMKgwqDCoMKgwqBPQ19GfEZfY298Tnh8UngswqDC oMKgIE9DX0Z8Rl9leHxOeHxSeCzCoMKgwqAgT0NfRnxGX2lufE54fFJ4LMKgwqDCoAo+IE9DX0Z8 Rl9sZ3xOeHxSeCzCoMKgwqAgLy8gY29zwqDCoMKgIGV4cMKgwqDCoMKgIGludMKgwqDCoMKgwqAg bG9nCj4gKyvCoMKgwqDCoMKgwqBPQ19GfEZfcm4swqDCoMKgwqDCoMKgwqDCoMKgIE9DX0Z8Rl9z aXxOeHxSeCzCoMKgwqAgT0NfRnxGX3NxfE54fFJ4LMKgwqDCoAo+IE9DX0Z8Rl9zcnxOeCzCoMKg wqDCoMKgwqAgLy8gcmFuZMKgwqAgc2luwqDCoMKgwqAgc3FydMKgwqDCoMKgIHNyYW5kCj4gKyvC oMKgwqDCoMKgwqBPQ19CfEJfZ2V8X3NfdnZffEEzLE9DX0J8Ql9nc3xzc192dl98QTIsT0NfQnxC X2l4fF9zc192dnxBMizCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv LyBnZW5zdWIgZ3N1YsKgwqDCoCBpbmRleMKgIC8qbGVuZ3RoIHdhcyBoZXJlKi8KPiArK8KgwqDC oMKgwqDCoE9DX0J8Ql9tYXxfX3NfX3Z8QTIsT0NfQnxCX3NwfF9fc192dnxBMixPQ19TUFJJTlRG LMKgwqDCoMKgwqDCoMKgwqAKPiBPQ19CfEJfc3V8c3NfdnZffEEyLC8vIG1hdGNowqAgc3BsaXTC oMKgIHNwcmludGbCoCBzdWIKPiArK8KgwqDCoMKgwqDCoE9DX0J8Ql9zc3xfX3N2dnZ8QTIsT0Nf RnxGX3RpLMKgwqDCoMKgwqDCoMKgwqDCoCBPQ19CfEJfdGl8X19zX3Z2LMKgwqAKPiBPQ19CfEJf bXR8X19zX3Z2LMKgwqAgLy8gc3Vic3RyIHN5c3RpbWUgc3RyZnRpbWUgbWt0aW1lCj4gKyvCoMKg wqDCoMKgwqBPQ19CfEJfbG98X19zX192fEExLE9DX0J8Ql91cHxfX3NfX3Z8QTEswqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8vIHRvbG93ZXIgdG91cHBlcgo+ICsrwqDCoMKgwqDCoMKgT0NfRnxG X2xlfFN4LMKgwqAgLy8gbGVuZ3RoCj4gKyvCoMKgwqDCoMKgwqBPQ19HRVRMSU5FfFNWLMKgIC8v IGdldGxpbmUKPiArK8KgwqDCoMKgwqDCoDAsIDAsIC8vIGZ1bmMgZnVuY3Rpb24KPiArK8KgwqDC oMKgwqDCoDAsIC8vIEJFR0lOCj4gKyvCoMKgwqDCoMKgwqAwwqAgLy8gRU5ECj4gKysjdW5kZWYg QTEKPiArKyN1bmRlZiBBMgo+ICsrI3VuZGVmIEEzCj4gKysjdW5kZWYgT0NfQgo+ICsrI3VuZGVm IE9DX0YKPiArIH07Cj4gKyAKPiArIC8qIGludGVybmFsIHZhcmlhYmxlIG5hbWVzIGFuZCB0aGVp ciBpbml0aWFsIHZhbHVlc8KgwqDCoMKgwqDCoCAqLwo+ICtAQCAtNDg4LDIxICs1NDcsMjkgQEAg c3RydWN0IGdsb2JhbHMgewo+ICvCoMKgwqDCoMKgwqDCoGNoYWluICpzZXE7Cj4gK8KgwqDCoMKg wqDCoMKgbm9kZSAqYnJlYWtfcHRyLCAqY29udGludWVfcHRyOwo+ICvCoMKgwqDCoMKgwqDCoHJz dHJlYW0gKmlGOwo+ICstwqDCoMKgwqDCoMKgeGhhc2ggKnZoYXNoLCAqYWhhc2gsICpmZGhhc2gs ICpmbmhhc2g7Cj4gKyvCoMKgwqDCoMKgwqB4aGFzaCAqYWhhc2g7wqAgLyogYXJndW1lbnQgbmFt ZXMsIHVzZWQgb25seSB3aGlsZSBwYXJzaW5nCj4gZnVuY3Rpb24gYm9kaWVzICovCj4gKyvCoMKg wqDCoMKgwqB4aGFzaCAqZm5oYXNoOyAvKiBmdW5jdGlvbiBuYW1lcywgdXNlZCBvbmx5IGluIHBh cnNpbmcgc3RhZ2UKPiAqLwo+ICsrwqDCoMKgwqDCoMKgeGhhc2ggKnZoYXNoO8KgIC8qIHZhcmlh YmxlcyBhbmQgYXJyYXlzICovCj4gKyvCoMKgwqDCoMKgwqAvL3hoYXNoICpmZGhhc2g7IC8qIGZp bGUgb2JqZWN0cywgdXNlZCBvbmx5IGluIGV4ZWN1dGlvbgo+IHN0YWdlICovCj4gKyvCoMKgwqDC oMKgwqAvL3dlIGFyZSByZXVzaW5nIGFoYXNoIGFzIGZkaGFzaCwgdmlhIGRlZmluZSAoc2VlIGxh dGVyKQo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKmdfcHJvZ25hbWU7Cj4gK8KgwqDCoMKg wqDCoMKgaW50IGdfbGluZW5vOwo+ICvCoMKgwqDCoMKgwqDCoGludCBuZmllbGRzOwo+ICvCoMKg wqDCoMKgwqDCoGludCBtYXhmaWVsZHM7IC8qIHVzZWQgaW4gZnNyZWFsbG9jKCkgb25seSAqLwo+ ICvCoMKgwqDCoMKgwqDCoHZhciAqRmllbGRzOwo+ICstwqDCoMKgwqDCoMKgbnZibG9jayAqZ19j YjsKPiArwqDCoMKgwqDCoMKgwqBjaGFyICpnX3BvczsKPiArLcKgwqDCoMKgwqDCoGNoYXIgKmdf YnVmOwo+ICsrwqDCoMKgwqDCoMKgY2hhciBnX3NhdmVkX2NoOwo+ICvCoMKgwqDCoMKgwqDCoHNt YWxsaW50IGljYXNlOwo+ICvCoMKgwqDCoMKgwqDCoHNtYWxsaW50IGV4aXRpbmc7Cj4gK8KgwqDC oMKgwqDCoMKgc21hbGxpbnQgbmV4dHJlYzsKPiArwqDCoMKgwqDCoMKgwqBzbWFsbGludCBuZXh0 ZmlsZTsKPiArwqDCoMKgwqDCoMKgwqBzbWFsbGludCBpc19mMF9zcGxpdDsKPiArwqDCoMKgwqDC oMKgwqBzbWFsbGludCB0X3JvbGxiYWNrOwo+ICsrCj4gKyvCoMKgwqDCoMKgwqAvKiBmb3JtZXIg c3RhdGljcyBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zICovCj4gKyvCoMKgwqDCoMKgwqBzbWFsbGlu dCBuZXh0X3Rva2VuX19jb25jYXRfaW5zZXJ0ZWQ7Cj4gKyvCoMKgwqDCoMKgwqB1aW50MzJfdCBu ZXh0X3Rva2VuX19zYXZlX3RjbGFzczsKPiArK8KgwqDCoMKgwqDCoHVpbnQzMl90IG5leHRfdG9r ZW5fX3NhdmVfaW5mbzsKPiArIH07Cj4gKyBzdHJ1Y3QgZ2xvYmFsczIgewo+ICvCoMKgwqDCoMKg wqDCoHVpbnQzMl90IHRfaW5mbzsgLyogb2Z0ZW4gdXNlZCAqLwo+ICtAQCAtNTE1LDMyICs1ODIs MzUgQEAgc3RydWN0IGdsb2JhbHMyIHsKPiArwqDCoMKgwqDCoMKgwqAvKiBmb3JtZXIgc3RhdGlj cyBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zICovCj4gK8KgwqDCoMKgwqDCoMKgY2hhciAqc3BsaXRf ZjBfX2ZzdHJpbmdzOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqB1aW50MzJfdCBuZXh0X3Rva2VuX19z YXZlX3RjbGFzczsKPiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IG5leHRfdG9rZW5fX3NhdmVfaW5m bzsKPiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IG5leHRfdG9rZW5fX2x0Y2xhc3M7Cj4gKy3CoMKg wqDCoMKgwqBzbWFsbGludCBuZXh0X3Rva2VuX19jb25jYXRfaW5zZXJ0ZWQ7Cj4gKy0KPiArLcKg wqDCoMKgwqDCoHNtYWxsaW50IG5leHRfaW5wdXRfZmlsZV9fZmlsZXNfaGFwcGVuOwo+ICvCoMKg wqDCoMKgwqDCoHJzdHJlYW0gbmV4dF9pbnB1dF9maWxlX19yc207Cj4gKyvCoMKgwqDCoMKgwqBz bWFsbGludCBuZXh0X2lucHV0X2ZpbGVfX2ZpbGVzX2hhcHBlbjsKPiArKwo+ICsrwqDCoMKgwqDC oMKgc21hbGx1aW50IGV4aXRjb2RlOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqB2YXIgKmV2YWx1YXRl X19mbmFyZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgZXZhbHVhdGVfX3NlZWQ7Cj4gKyvC oMKgwqDCoMKgwqB2YXIgKmV2YWx1YXRlX19mbmFyZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgcmVnZXhf dCBldmFsdWF0ZV9fc3JlZzsKPiArIAo+ICstwqDCoMKgwqDCoMKgdmFyIHB0ZXN0X192Owo+ICsr wqDCoMKgwqDCoMKgdmFyIHB0ZXN0X190bXB2YXI7Cj4gKyvCoMKgwqDCoMKgwqB2YXIgYXdrX3By aW50Zl9fdG1wdmFyOwo+ICsrwqDCoMKgwqDCoMKgdmFyIGFzX3JlZ2V4X190bXB2YXI7Cj4gKyvC oMKgwqDCoMKgwqB2YXIgZXhpdF9fdG1wdmFyOwo+ICsrwqDCoMKgwqDCoMKgdmFyIG1haW5fX3Rt cHZhcjsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoHRzcGxpdHRlciBleGVjX2J1aWx0aW5fX3RzcGw7 Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqAvKiBiaWdnZXN0IGFuZCBsZWFzdCB1c2VkIG1lbWJlcnMg Z28gbGFzdCAqLwo+ICvCoMKgwqDCoMKgwqDCoHRzcGxpdHRlciBmc3BsaXR0ZXIsIHJzcGxpdHRl cjsKPiArKwo+ICsrwqDCoMKgwqDCoMKgY2hhciBnX2J1ZltNQVhWQVJGTVQgKyAxXTsKPiArIH07 Cj4gKyAjZGVmaW5lIEcxIChwdHJfdG9fZ2xvYmFsc1stMV0pCj4gKyAjZGVmaW5lIEcgKCooc3Ry dWN0IGdsb2JhbHMyICopcHRyX3RvX2dsb2JhbHMpCj4gKyAvKiBGb3IgZGVidWcuIG5tIC0tc2l6 ZS1zb3J0IGF3ay5vIHwgZ3JlcCAtdmkgJyBbdHJdICcgKi8KPiArLS8qY2hhciBHMXNpemVbc2l6 ZW9mKEcxKV07IC0gMHg3NCAqLwo+ICstLypjaGFyIEdzaXplW3NpemVvZihHKV07IC0gMHgxYzQg Ki8KPiArKy8vY2hhciBHMXNpemVbc2l6ZW9mKEcxKV07IC8vIDB4NzAKPiArKy8vY2hhciBHc2l6 ZVtzaXplb2YoRyldOyAvLyAweDJmOAo+ICsgLyogVHJ5aW5nIHRvIGtlZXAgbW9zdCBvZiBtZW1i ZXJzIGFjY2Vzc2libGUgd2l0aCBzaG9ydCBvZmZzZXRzOiAqLwo+ICstLypjaGFyIEdvZnNfc2Vl ZFtvZmZzZXRvZihzdHJ1Y3QgZ2xvYmFsczIsIGV2YWx1YXRlX19zZWVkKV07IC0gMHg5MAo+ICov Cj4gKysvL2NoYXIgR29mc19zZWVkW29mZnNldG9mKHN0cnVjdCBnbG9iYWxzMiwgZXZhbHVhdGVf X3NlZWQpXTsgLy8KPiAweDdjCj4gKyAjZGVmaW5lIHRfZG91YmxlwqDCoMKgwqAgKEcxLnRfZG91 YmxlwqDCoMKgICkKPiArICNkZWZpbmUgYmVnaW5zZXHCoMKgwqDCoCAoRzEuYmVnaW5zZXHCoMKg wqAgKQo+ICsgI2RlZmluZSBtYWluc2VxwqDCoMKgwqDCoCAoRzEubWFpbnNlccKgwqDCoMKgICkK PiArQEAgLTU0OSwxOCArNjE5LDIwIEBAIHN0cnVjdCBnbG9iYWxzMiB7Cj4gKyAjZGVmaW5lIGJy ZWFrX3B0csKgwqDCoCAoRzEuYnJlYWtfcHRywqDCoCApCj4gKyAjZGVmaW5lIGNvbnRpbnVlX3B0 ciAoRzEuY29udGludWVfcHRyKQo+ICsgI2RlZmluZSBpRsKgwqDCoMKgwqDCoMKgwqDCoMKgIChH MS5pRsKgwqDCoMKgwqDCoMKgwqDCoCApCj4gKy0jZGVmaW5lIHZoYXNowqDCoMKgwqDCoMKgwqAg KEcxLnZoYXNowqDCoMKgwqDCoMKgICkKPiArICNkZWZpbmUgYWhhc2jCoMKgwqDCoMKgwqDCoCAo RzEuYWhhc2jCoMKgwqDCoMKgwqAgKQo+ICstI2RlZmluZSBmZGhhc2jCoMKgwqDCoMKgwqAgKEcx LmZkaGFzaMKgwqDCoMKgwqAgKQo+ICsgI2RlZmluZSBmbmhhc2jCoMKgwqDCoMKgwqAgKEcxLmZu aGFzaMKgwqDCoMKgwqAgKQo+ICsrI2RlZmluZSB2aGFzaMKgwqDCoMKgwqDCoMKgIChHMS52aGFz aMKgwqDCoMKgwqDCoCApCj4gKysjZGVmaW5lIGZkaGFzaMKgwqDCoMKgwqDCoCBhaGFzaAo+ICsr Ly9eXl5eXl5eXl5eXl5eXl5eXl4gYWhhc2ggaXMgY2xlYXJlZCBhZnRlciBldmVyeSBmdW5jdGlv biBwYXJzaW5nLAo+ICsrLy8gYW5kIGVuZHMgdXAgZW1wdHkgYWZ0ZXIgcGFyc2luZyBwaGFzZS4g VGh1cywgd2UgY2FuIHNpbXBseSByZXVzZQo+IGl0Cj4gKysvLyBmb3IgZmRoYXNoIGluIGV4ZWN1 dGlvbiBzdGFnZS4KPiArICNkZWZpbmUgZ19wcm9nbmFtZcKgwqAgKEcxLmdfcHJvZ25hbWXCoCAp Cj4gKyAjZGVmaW5lIGdfbGluZW5vwqDCoMKgwqAgKEcxLmdfbGluZW5vwqDCoMKgICkKPiArICNk ZWZpbmUgbmZpZWxkc8KgwqDCoMKgwqAgKEcxLm5maWVsZHPCoMKgwqDCoCApCj4gKyAjZGVmaW5l IG1heGZpZWxkc8KgwqDCoCAoRzEubWF4ZmllbGRzwqDCoCApCj4gKyAjZGVmaW5lIEZpZWxkc8Kg wqDCoMKgwqDCoCAoRzEuRmllbGRzwqDCoMKgwqDCoCApCj4gKy0jZGVmaW5lIGdfY2LCoMKgwqDC oMKgwqDCoMKgIChHMS5nX2NiwqDCoMKgwqDCoMKgwqAgKQo+ICsgI2RlZmluZSBnX3Bvc8KgwqDC oMKgwqDCoMKgIChHMS5nX3Bvc8KgwqDCoMKgwqDCoCApCj4gKy0jZGVmaW5lIGdfYnVmwqDCoMKg wqDCoMKgwqAgKEcxLmdfYnVmwqDCoMKgwqDCoMKgICkKPiArKyNkZWZpbmUgZ19zYXZlZF9jaMKg wqAgKEcxLmdfc2F2ZWRfY2jCoCApCj4gKyAjZGVmaW5lIGljYXNlwqDCoMKgwqDCoMKgwqAgKEcx LmljYXNlwqDCoMKgwqDCoMKgICkKPiArICNkZWZpbmUgZXhpdGluZ8KgwqDCoMKgwqAgKEcxLmV4 aXRpbmfCoMKgwqDCoCApCj4gKyAjZGVmaW5lIG5leHRyZWPCoMKgwqDCoMKgIChHMS5uZXh0cmVj wqDCoMKgwqAgKQo+ICtAQCAtNTc0LDI1ICs2NDYsMTMgQEAgc3RydWN0IGdsb2JhbHMyIHsKPiAr ICNkZWZpbmUgaW50dmFywqDCoMKgwqDCoMKgIChHLmludHZhcsKgwqDCoMKgwqAgKQo+ICsgI2Rl ZmluZSBmc3BsaXR0ZXLCoMKgwqAgKEcuZnNwbGl0dGVywqDCoCApCj4gKyAjZGVmaW5lIHJzcGxp dHRlcsKgwqDCoCAoRy5yc3BsaXR0ZXLCoMKgICkKPiArKyNkZWZpbmUgZ19idWbCoMKgwqDCoMKg wqDCoCAoRy5nX2J1ZsKgwqDCoMKgwqDCoCApCj4gKyAjZGVmaW5lIElOSVRfRygpIGRvIHsgXAo+ ICvCoMKgwqDCoMKgwqDCoFNFVF9QVFJfVE9fR0xPQkFMUygoY2hhciopeHphbGxvYyhzaXplb2Yo RzEpK3NpemVvZihHKSkgKwo+IHNpemVvZihHMSkpOyBcCj4gKy3CoMKgwqDCoMKgwqBHLm5leHRf dG9rZW5fX2x0Y2xhc3MgPSBUQ19PUFRFUk07IFwKPiArK8KgwqDCoMKgwqDCoHRfdGNsYXNzID0g VENfTkVXTElORTsgXAo+ICvCoMKgwqDCoMKgwqDCoEcuZXZhbHVhdGVfX3NlZWQgPSAxOyBcCj4g KyB9IHdoaWxlICgwKQo+ICsgCj4gKy0KPiArLS8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KPiAr LXN0YXRpYyB2b2lkIGhhbmRsZV9zcGVjaWFsKHZhciAqKTsKPiArLXN0YXRpYyBub2RlICpwYXJz ZV9leHByKHVpbnQzMl90KTsKPiArLXN0YXRpYyB2b2lkIGNoYWluX2dyb3VwKHZvaWQpOwo+ICst c3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqLCB2YXIgKik7Cj4gKy1zdGF0aWMgcnN0cmVhbSAq bmV4dF9pbnB1dF9maWxlKHZvaWQpOwo+ICstc3RhdGljIGludCBmbXRfbnVtKGNoYXIgKiwgaW50 LCBjb25zdCBjaGFyICosIGRvdWJsZSwgaW50KTsKPiArLXN0YXRpYyBpbnQgYXdrX2V4aXQoaW50 KSBOT1JFVFVSTjsKPiArLQo+ICstLyogLS0tLSBlcnJvciBoYW5kbGluZyAtLS0tICovCj4gKy0K PiArLXN0YXRpYyBjb25zdCBjaGFyIEVNU0dfSU5URVJOQUxfRVJST1JbXSBBTElHTjEgPSAiSW50 ZXJuYWwgZXJyb3IiOwo+ICsgc3RhdGljIGNvbnN0IGNoYXIgRU1TR19VTkVYUF9FT1NbXSBBTElH TjEgPSAiVW5leHBlY3RlZCBlbmQgb2YKPiBzdHJpbmciOwo+ICsgc3RhdGljIGNvbnN0IGNoYXIg RU1TR19VTkVYUF9UT0tFTltdIEFMSUdOMSA9ICJVbmV4cGVjdGVkIHRva2VuIjsKPiArIHN0YXRp YyBjb25zdCBjaGFyIEVNU0dfRElWX0JZX1pFUk9bXSBBTElHTjEgPSAiRGl2aXNpb24gYnkgemVy byI7Cj4gK0BAIC02MDQsMTAgKzY2NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIEVNU0dfVU5ERUZf RlVOQ1tdIEFMSUdOMSA9Cj4gIkNhbGwgdG8gdW5kZWZpbmVkIGZ1bmN0aW9uIjsKPiArIHN0YXRp YyBjb25zdCBjaGFyIEVNU0dfTk9fTUFUSFtdIEFMSUdOMSA9ICJNYXRoIHN1cHBvcnQgaXMgbm90 Cj4gY29tcGlsZWQgaW4iOwo+ICsgc3RhdGljIGNvbnN0IGNoYXIgRU1TR19ORUdBVElWRV9GSUVM RFtdIEFMSUdOMSA9ICJBY2Nlc3MgdG8KPiBuZWdhdGl2ZSBmaWVsZCI7Cj4gKyAKPiArLXN0YXRp YyB2b2lkIHplcm9fb3V0X3Zhcih2YXIgKnZwKQo+ICstewo+ICstwqDCoMKgwqDCoMKgbWVtc2V0 KHZwLCAwLCBzaXplb2YoKnZwKSk7Cj4gKy19Cj4gKytzdGF0aWMgaW50IGF3a19leGl0KHZvaWQp IE5PUkVUVVJOOwo+ICsgCj4gKyBzdGF0aWMgdm9pZCBzeW50YXhfZXJyb3IoY29uc3QgY2hhciAq bWVzc2FnZSkgTk9SRVRVUk47Cj4gKyBzdGF0aWMgdm9pZCBzeW50YXhfZXJyb3IoY29uc3QgY2hh ciAqbWVzc2FnZSkKPiArQEAgLTYzOCwxMiArNjk1LDQwIEBAIHN0YXRpYyB4aGFzaCAqaGFzaF9p bml0KHZvaWQpCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIG5ld2hhc2g7Cj4gKyB9Cj4gKyAKPiAr K3N0YXRpYyB2b2lkIGhhc2hfY2xlYXIoeGhhc2ggKmhhc2gpCj4gKyt7Cj4gKyvCoMKgwqDCoMKg wqB1bnNpZ25lZCBpOwo+ICsrwqDCoMKgwqDCoMKgaGFzaF9pdGVtICpoaSwgKnRoaTsKPiArKwo+ ICsrwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IGhhc2gtPmNzaXplOyBpKyspIHsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9IGhhc2gtPml0ZW1zW2ldOwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlIChoaSkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aGkgPSBoaTsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGkgPSBoaS0+bmV4dDsKPiArKy8vRklYTUU6IHRo aXMgYXNzdW1lcyB0aGF0IGl0J3MgYSBoYXNoIG9mICp2YXJpYWJsZXMqOgo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHRoaS0+ZGF0YS52LnN0cmlu Zyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUo dGhpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaGFzaC0+aXRlbXNbaV0gPSBOVUxMOwo+ICsrwqDCoMKgwqDCoMKgfQo+ ICsrwqDCoMKgwqDCoMKgaGFzaC0+Z2xlbiA9IGhhc2gtPm5lbCA9IDA7Cj4gKyt9Cj4gKysKPiAr KyNpZiAwIC8vVU5VU0VECj4gKytzdGF0aWMgdm9pZCBoYXNoX2ZyZWUoeGhhc2ggKmhhc2gpCj4g Kyt7Cj4gKyvCoMKgwqDCoMKgwqBoYXNoX2NsZWFyKGhhc2gpOwo+ICsrwqDCoMKgwqDCoMKgZnJl ZShoYXNoLT5pdGVtcyk7Cj4gKyvCoMKgwqDCoMKgwqBmcmVlKGhhc2gpOwo+ICsrfQo+ICsrI2Vu ZGlmCj4gKysKPiArIC8qIGZpbmQgaXRlbSBpbiBoYXNoLCByZXR1cm4gcHRyIHRvIGRhdGEsIE5V TEwgaWYgbm90IGZvdW5kICovCj4gKy1zdGF0aWMgdm9pZCAqaGFzaF9zZWFyY2goeGhhc2ggKmhh c2gsIGNvbnN0IGNoYXIgKm5hbWUpCj4gKytzdGF0aWMgTk9JTkxJTkUgdm9pZCAqaGFzaF9zZWFy Y2gzKHhoYXNoICpoYXNoLCBjb25zdCBjaGFyICpuYW1lLAo+IHVuc2lnbmVkIGlkeCkKPiArIHsK PiArwqDCoMKgwqDCoMKgwqBoYXNoX2l0ZW0gKmhpOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqBoaSA9 IGhhc2gtPml0ZW1zW2hhc2hpZHgobmFtZSkgJSBoYXNoLT5jc2l6ZV07Cj4gKyvCoMKgwqDCoMKg wqBoaSA9IGhhc2gtPml0ZW1zW2lkeCAlIGhhc2gtPmNzaXplXTsKPiArwqDCoMKgwqDCoMKgwqB3 aGlsZSAoaGkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHN0cmNtcCho aS0+bmFtZSwgbmFtZSkgPT0gMCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAmaGktPmRhdGE7Cj4gK0BAIC02NTIsNiArNzM3LDExIEBAIHN0 YXRpYyB2b2lkICpoYXNoX3NlYXJjaCh4aGFzaCAqaGFzaCwgY29uc3QKPiBjaGFyICpuYW1lKQo+ ICvCoMKgwqDCoMKgwqDCoHJldHVybiBOVUxMOwo+ICsgfQo+ICsgCj4gKytzdGF0aWMgdm9pZCAq aGFzaF9zZWFyY2goeGhhc2ggKmhhc2gsIGNvbnN0IGNoYXIgKm5hbWUpCj4gKyt7Cj4gKyvCoMKg wqDCoMKgwqByZXR1cm4gaGFzaF9zZWFyY2gzKGhhc2gsIG5hbWUswqBoYXNoaWR4KG5hbWUpKTsK PiArK30KPiArKwo+ICsgLyogZ3JvdyBoYXNoIGlmIGl0IGJlY29tZXMgdG9vIGJpZyAqLwo+ICsg c3RhdGljIHZvaWQgaGFzaF9yZWJ1aWxkKHhoYXNoICpoYXNoKQo+ICsgewo+ICtAQCAtNjg3LDE2 ICs3NzcsMTcgQEAgc3RhdGljIHZvaWQgKmhhc2hfZmluZCh4aGFzaCAqaGFzaCwgY29uc3QgY2hh cgo+ICpuYW1lKQo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGlkeDsKPiArwqDCoMKgwqDCoMKg wqBpbnQgbDsKPiArIAo+ICstwqDCoMKgwqDCoMKgaGkgPSBoYXNoX3NlYXJjaChoYXNoLCBuYW1l KTsKPiArK8KgwqDCoMKgwqDCoGlkeCA9IGhhc2hpZHgobmFtZSk7Cj4gKyvCoMKgwqDCoMKgwqBo aSA9IGhhc2hfc2VhcmNoMyhoYXNoLCBuYW1lLCBpZHgpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICgh aGkpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKytoYXNoLT5uZWwgLyBo YXNoLT5jc2l6ZSA+IDEwKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgrK2hh c2gtPm5lbCA+IGhhc2gtPmNzaXplICogOCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfcmVidWlsZChoYXNoKTsKPiArIAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBsID0gc3RybGVuKG5hbWUpICsgMTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaGkgPSB4emFsbG9jKHNpemVvZigqaGkpICsgbCk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cmNweShoaS0+bmFtZSwgbmFtZSk7Cj4gKyAKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZHggPSBoYXNoaWR4KG5hbWUpICUgaGFzaC0+ Y3NpemU7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWR4ID0gaWR4ICUgaGFzaC0+ Y3NpemU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhpLT5uZXh0ID0gaGFzaC0+ aXRlbXNbaWR4XTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFzaC0+aXRlbXNb aWR4XSA9IGhpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYXNoLT5nbGVuICs9 IGw7Cj4gK0BAIC03MzEsNyArODIyLDcgQEAgc3RhdGljIHZvaWQgaGFzaF9yZW1vdmUoeGhhc2gg Kmhhc2gsIGNvbnN0IGNoYXIKPiAqbmFtZSkKPiArIAo+ICsgc3RhdGljIGNoYXIgKnNraXBfc3Bh Y2VzKGNoYXIgKnApCj4gKyB7Cj4gKy3CoMKgwqDCoMKgwqB3aGlsZSAoMSkgewo+ICsrwqDCoMKg wqDCoMKgZm9yICg7Oykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKnAg PT0gJ1xcJyAmJiBwWzFdID09ICdcbicpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHArKzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRfbGluZW5vKys7Cj4gK0BAIC03NDcsOCArODM4LDEwIEBAIHN0YXRp YyBjaGFyICpza2lwX3NwYWNlcyhjaGFyICpwKQo+ICsgc3RhdGljIGNoYXIgKm5leHR3b3JkKGNo YXIgKipzKQo+ICsgewo+ICvCoMKgwqDCoMKgwqDCoGNoYXIgKnAgPSAqczsKPiArLcKgwqDCoMKg wqDCoHdoaWxlICgqKCpzKSsrICE9ICdcMCcpCj4gKyvCoMKgwqDCoMKgwqBjaGFyICpxID0gcDsK PiArK8KgwqDCoMKgwqDCoHdoaWxlICgqcSsrICE9ICdcMCcpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ICsrwqDCoMKgwqDCoMKgKnMgPSBxOwo+ICvCoMKgwqDC oMKgwqDCoHJldHVybiBwOwo+ICsgfQo+ICsgCj4gK0BAIC04MTEsMTAgKzkwNCwyNyBAQCBzdGF0 aWMgZG91YmxlIG15X3N0cnRvZChjaGFyICoqcHApCj4gKyAKPiArIC8qIC0tLS0tLS0tIHdvcmtp bmcgd2l0aCB2YXJpYWJsZXMgKHNldC9nZXQvY29weS9ldGMpIC0tLS0tLS0tICovCj4gKyAKPiAr LXN0YXRpYyB4aGFzaCAqaWFtYXJyYXkodmFyICp2KQo+ICsrc3RhdGljIHZvaWQgZm10X251bShj b25zdCBjaGFyICpmb3JtYXQsIGRvdWJsZSBuKQo+ICsgewo+ICstwqDCoMKgwqDCoMKgdmFyICph ID0gdjsKPiArK8KgwqDCoMKgwqDCoGlmIChuID09IChsb25nIGxvbmcpbikgewo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNucHJpbnRmKGdfYnVmLCBNQVhWQVJGTVQsICIlbGxkIiwg KGxvbmcgbG9uZyluKTsKPiArK8KgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqcyA9IGZvcm1hdDsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjaGFyIGM7Cj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkbyB7IGMgPSAqczsgfSB3aGlsZSAoYyAmJiAqKytzKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoc3RyY2hyKCJkaW91eFgiLCBjKSkgewo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbnByaW50ZihnX2J1ZiwgTUFYVkFSRk1ULCBm b3JtYXQsIChpbnQpbik7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIGlm IChzdHJjaHIoImVFZkZnR2FBIiwgYykpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc25wcmludGYoZ19idWYsIE1BWFZBUkZNVCwgZm9ybWF0LCBuKTsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoRU1TR19JTlZfRk1U KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqB9Cj4g Kyt9Cj4gKyAKPiArK3N0YXRpYyB4aGFzaCAqaWFtYXJyYXkodmFyICphKQo+ICsrewo+ICvCoMKg wqDCoMKgwqDCoHdoaWxlIChhLT50eXBlICYgVkZfQ0hJTEQpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGEgPSBhLT54LnBhcmVudDsKPiArIAo+ICtAQCAtODI1LDIzICs5MzUsNyBA QCBzdGF0aWMgeGhhc2ggKmlhbWFycmF5KHZhciAqdikKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4g YS0+eC5hcnJheTsKPiArIH0KPiArIAo+ICstc3RhdGljIHZvaWQgY2xlYXJfYXJyYXkoeGhhc2gg KmFycmF5KQo+ICstewo+ICstwqDCoMKgwqDCoMKgdW5zaWduZWQgaTsKPiArLcKgwqDCoMKgwqDC oGhhc2hfaXRlbSAqaGksICp0aGk7Cj4gKy0KPiArLcKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkg PCBhcnJheS0+Y3NpemU7IGkrKykgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhp ID0gYXJyYXktPml0ZW1zW2ldOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxl IChoaSkgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0 aGkgPSBoaTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aGkgPSBoaS0+bmV4dDsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZnJlZSh0aGktPmRhdGEudi5zdHJpbmcpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHRoaSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFycmF5LT5pdGVtc1tp XSA9IE5VTEw7Cj4gKy3CoMKgwqDCoMKgwqB9Cj4gKy3CoMKgwqDCoMKgwqBhcnJheS0+Z2xlbiA9 IGFycmF5LT5uZWwgPSAwOwo+ICstfQo+ICsrI2RlZmluZSBjbGVhcl9hcnJheShhcnJheSkgaGFz aF9jbGVhcihhcnJheSkKPiArIAo+ICsgLyogY2xlYXIgYSB2YXJpYWJsZSAqLwo+ICsgc3RhdGlj IHZhciAqY2xydmFyKHZhciAqdikKPiArQEAgLTg1NSw2ICs5NDksOCBAQCBzdGF0aWMgdmFyICpj bHJ2YXIodmFyICp2KQo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiB2Owo+ICsgfQo+ICsgCj4gKytz dGF0aWMgdm9pZCBoYW5kbGVfc3BlY2lhbCh2YXIgKik7Cj4gKysKPiArIC8qIGFzc2lnbiBzdHJp bmcgdmFsdWUgdG8gdmFyaWFibGUgKi8KPiArIHN0YXRpYyB2YXIgKnNldHZhcl9wKHZhciAqdiwg Y2hhciAqdmFsdWUpCj4gKyB7Cj4gK0BAIC05MDEsNyArOTk3LDcgQEAgc3RhdGljIGNvbnN0IGNo YXIgKmdldHZhcl9zKHZhciAqdikKPiArIHsKPiArwqDCoMKgwqDCoMKgwqAvKiBpZiB2IGlzIG51 bWVyaWMgYW5kIGhhcyBubyBjYWNoZWQgc3RyaW5nLCBjb252ZXJ0IGl0IHRvCj4gc3RyaW5nICov Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKCh2LT50eXBlICYgKFZGX05VTUJFUiB8IFZGX0NBQ0hFRCkp ID09IFZGX05VTUJFUikgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZtdF9udW0o Z19idWYsIE1BWFZBUkZNVCwgZ2V0dmFyX3MoaW50dmFyW0NPTlZGTVRdKSwKPiB2LT5udW1iZXIs IFRSVUUpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZtdF9udW0oZ2V0dmFyX3Mo aW50dmFyW0NPTlZGTVRdKSwgdi0+bnVtYmVyKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdi0+c3RyaW5nID0geHN0cmR1cChnX2J1Zik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZfQ0FDSEVEOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArQEAg LTkyMCw2ICsxMDE2LDcgQEAgc3RhdGljIGRvdWJsZSBnZXR2YXJfaSh2YXIgKnYpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2LT5udW1iZXIgPSBteV9z dHJ0b2QoJnMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX2V2YWwoIiVmIChzOiclcycpXG4iLCB2LT5udW1iZXIsCj4gcyk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodi0+dHlw ZSAmIFZGX1VTRVIpIHsKPiArKy8vVE9ETzogc2tpcF9zcGFjZXMoKSBhbHNvIHNraXBzIGJhY2tz bGFzaCtuZXdsaW5lLCBpcyBpdCBpbnRlbmRlZAo+IGhlcmU/Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcyA9IHNraXBfc3Bh Y2VzKHMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICgqcyAhPSAnXDAnKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 LT50eXBlICY9IH5WRl9VU0VSOwo+ICtAQCAtOTgxLDk0ICsxMDc4LDI4IEBAIHN0YXRpYyBpbnQg aXN0cnVlKHZhciAqdikKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gKHYtPnN0cmluZyAmJiB2LT5z dHJpbmdbMF0pOwo+ICsgfQo+ICsgCj4gKy0vKiB0ZW1wb3JhcnkgdmFyaWFibGVzIGFsbG9jYXRv ci4gTGFzdCBhbGxvY2F0ZWQgc2hvdWxkIGJlIGZpcnN0Cj4gZnJlZWQgKi8KPiArLXN0YXRpYyB2 YXIgKm52YWxsb2MoaW50IG4pCj4gKy17Cj4gKy3CoMKgwqDCoMKgwqBudmJsb2NrICpwYiA9IE5V TEw7Cj4gKy3CoMKgwqDCoMKgwqB2YXIgKnYsICpyOwo+ICstwqDCoMKgwqDCoMKgaW50IHNpemU7 Cj4gKy0KPiArLcKgwqDCoMKgwqDCoHdoaWxlIChnX2NiKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcGIgPSBnX2NiOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm ICgoZ19jYi0+cG9zIC0gZ19jYi0+bnYpICsgbiA8PSBnX2NiLT5zaXplKQo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnX2NiID0gZ19jYi0+bmV4dDsKPiArLcKgwqDCoMKgwqDCoH0KPiAr LQo+ICstwqDCoMKgwqDCoMKgaWYgKCFnX2NiKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc2l6ZSA9IChuIDw9IE1JTk5WQkxPQ0spID8gTUlOTlZCTE9DSyA6IG47Cj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ19jYiA9IHh6YWxsb2Moc2l6ZW9mKG52YmxvY2spICsg c2l6ZSAqIHNpemVvZih2YXIpKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2Ni LT5zaXplID0gc2l6ZTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2NiLT5wb3Mg PSBnX2NiLT5udjsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2NiLT5wcmV2ID0g cGI7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLypnX2NiLT5uZXh0ID0gTlVMTDsg LSB4emFsbG9jIGRpZCBpdCAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChw YikKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGItPm5l eHQgPSBnX2NiOwo+ICstwqDCoMKgwqDCoMKgfQo+ICstCj4gKy3CoMKgwqDCoMKgwqB2ID0gciA9 IGdfY2ItPnBvczsKPiArLcKgwqDCoMKgwqDCoGdfY2ItPnBvcyArPSBuOwo+ICstCj4gKy3CoMKg wqDCoMKgwqB3aGlsZSAodiA8IGdfY2ItPnBvcykgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHYtPnR5cGUgPSAwOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnN0 cmluZyA9IE5VTEw7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdisrOwo+ICstwqDC oMKgwqDCoMKgfQo+ICstCj4gKy3CoMKgwqDCoMKgwqByZXR1cm4gcjsKPiArLX0KPiArLQo+ICst c3RhdGljIHZvaWQgbnZmcmVlKHZhciAqdikKPiArLXsKPiArLcKgwqDCoMKgwqDCoHZhciAqcDsK PiArLQo+ICstwqDCoMKgwqDCoMKgaWYgKHYgPCBnX2NiLT5udiB8fCB2ID49IGdfY2ItPnBvcykK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoRU1TR19JTlRFUk5B TF9FUlJPUik7Cj4gKy0KPiArLcKgwqDCoMKgwqDCoGZvciAocCA9IHY7IHAgPCBnX2NiLT5wb3M7 IHArKykgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgocC0+dHlwZSAmIChW Rl9BUlJBWSB8IFZGX0NISUxEKSkgPT0gVkZfQVJSQVkpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xlYXJfYXJyYXkoaWFtYXJyYXkocCkpOwo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHAtPnguYXJy YXktPml0ZW1zKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZnJlZShwLT54LmFycmF5KTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHAtPnR5cGUgJiBWRl9XQUxLKSB7Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdhbGtlcl9saXN0 ICpuOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YWxr ZXJfbGlzdCAqdyA9IHAtPngud2Fsa2VyOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfd2Fsa2VyKCJudmZyZWU6IGZyZWVpbmcgd2Fs a2VyCj4gQCVwXG4iLCAmcC0+eC53YWxrZXIpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBwLT54LndhbGtlciA9IE5VTEw7Cj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICh3KSB7Cj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gdy0+ cHJldjsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl93YWxrZXIoIiBmcmVlKCVwKVxuIiwKPiB3KTsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGZyZWUodyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB3ID0gbjsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbHJ2YXIocCk7Cj4gKy3CoMKgwqDCoMKgwqB9 Cj4gKy0KPiArLcKgwqDCoMKgwqDCoGdfY2ItPnBvcyA9IHY7Cj4gKy3CoMKgwqDCoMKgwqB3aGls ZSAoZ19jYi0+cHJldiAmJiBnX2NiLT5wb3MgPT0gZ19jYi0+bnYpIHsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnX2NiID0gZ19jYi0+cHJldjsKPiArLcKgwqDCoMKgwqDCoH0KPiAr LX0KPiArLQo+ICsgLyogLS0tLS0tLSBhd2sgcHJvZ3JhbSB0ZXh0IHBhcnNpbmcgLS0tLS0tLSAq Lwo+ICsgCj4gKy0vKiBQYXJzZSBuZXh0IHRva2VuIHBvaW50ZWQgYnkgZ2xvYmFsIHBvcywgcGxh Y2UgcmVzdWx0cyBpbnRvCj4gZ2xvYmFsIHR0dC4KPiArLSAqIElmIHRva2VuIGlzbid0IGV4cGVj dGVkLCBnaXZlIGF3YXkuIFJldHVybiB0b2tlbiBjbGFzcwo+ICsrLyogUGFyc2UgbmV4dCB0b2tl biBwb2ludGVkIGJ5IGdsb2JhbCBwb3MsIHBsYWNlIHJlc3VsdHMgaW50bwo+IGdsb2JhbCB0X1hZ WiB2YXJpYWJsZXMuCj4gKysgKiBJZiB0b2tlbiBpc24ndCBleHBlY3RlZCwgcHJpbnQgZXJyb3Ig bWVzc2FnZSBhbmQgZGllLgo+ICsrICogUmV0dXJuIHRva2VuIGNsYXNzIChhbHNvIHN0b3JlIGl0 IGluIHRfdGNsYXNzKS4KPiArwqAgKi8KPiArIHN0YXRpYyB1aW50MzJfdCBuZXh0X3Rva2VuKHVp bnQzMl90IGV4cGVjdGVkKQo+ICsgewo+ICstI2RlZmluZSBjb25jYXRfaW5zZXJ0ZWQgKEcubmV4 dF90b2tlbl9fY29uY2F0X2luc2VydGVkKQo+ICstI2RlZmluZSBzYXZlX3RjbGFzc8KgwqDCoMKg IChHLm5leHRfdG9rZW5fX3NhdmVfdGNsYXNzKQo+ICstI2RlZmluZSBzYXZlX2luZm/CoMKgwqDC oMKgwqAgKEcubmV4dF90b2tlbl9fc2F2ZV9pbmZvKQo+ICstLyogSW5pdGlhbGl6ZWQgdG8gVENf T1BURVJNOiAqLwo+ICstI2RlZmluZSBsdGNsYXNzwqDCoMKgwqDCoMKgwqDCoCAoRy5uZXh0X3Rv a2VuX19sdGNsYXNzKQo+ICsrI2RlZmluZSBjb25jYXRfaW5zZXJ0ZWQgKEcxLm5leHRfdG9rZW5f X2NvbmNhdF9pbnNlcnRlZCkKPiArKyNkZWZpbmUgc2F2ZV90Y2xhc3PCoMKgwqDCoCAoRzEubmV4 dF90b2tlbl9fc2F2ZV90Y2xhc3MpCj4gKysjZGVmaW5lIHNhdmVfaW5mb8KgwqDCoMKgwqDCoCAo RzEubmV4dF90b2tlbl9fc2F2ZV9pbmZvKQo+ICsgCj4gKy3CoMKgwqDCoMKgwqBjaGFyICpwLCAq czsKPiArK8KgwqDCoMKgwqDCoGNoYXIgKnA7Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAq dGw7Cj4gKy3CoMKgwqDCoMKgwqB1aW50MzJfdCB0YzsKPiArwqDCoMKgwqDCoMKgwqBjb25zdCB1 aW50MzJfdCAqdGk7Cj4gKyvCoMKgwqDCoMKgwqB1aW50MzJfdCB0YywgbGFzdF90b2tlbl9jbGFz czsKPiArKwo+ICsrwqDCoMKgwqDCoMKgbGFzdF90b2tlbl9jbGFzcyA9IHRfdGNsYXNzOyAvKiB0 X3RjbGFzcyBpcyBpbml0aWFsaXplZCB0bwo+IFRDX05FV0xJTkUgKi8KPiArKwo+ICsrwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlcygpIGV4cGVjdGVkKCV4KToiLCBfX2Z1bmNfXywg ZXhwZWN0ZWQpOwo+ICsrwqDCoMKgwqDCoMKgZGVidWdfcGFyc2VfcHJpbnRfdGMoZXhwZWN0ZWQp Owo+ICsrwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCJcbiIpOwo+ICsgCj4gK8KgwqDC oMKgwqDCoMKgaWYgKHRfcm9sbGJhY2spIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogdXNpbmcgcm9sbGVkLWJhY2sgdG9rZW5cbiIsCj4g X19mdW5jX18pOwo+ICtAQCAtMTA4MCw2ICsxMTExLDEwIEBAIHN0YXRpYyB1aW50MzJfdCBuZXh0 X3Rva2VuKHVpbnQzMl90IGV4cGVjdGVkKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0X2luZm8gPSBzYXZlX2luZm87Cj4gK8KgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCA9IGdfcG9zOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChnX3NhdmVkX2NoICE9ICdcMCcpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnAgPSBnX3NhdmVkX2NoOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX3NhdmVkX2NoID0gJ1wwJzsKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgIHJlYWRuZXh0Ogo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwID0gc2tpcF9zcGFjZXMocCk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdfbGluZW5vID0gdF9saW5lbm87Cj4gK0BAIC0xMDg3LDE1ICsx MTIyLDEyIEBAIHN0YXRpYyB1aW50MzJfdCBuZXh0X3Rva2VuKHVpbnQzMl90Cj4gZXhwZWN0ZWQp Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAo KnAgIT0gJ1xuJyAmJiAqcCAhPSAnXDAnKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHArKzsKPiArIAo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcCA9PSAnXG4nKQo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X2xpbmVubysrOwo+ICstCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcCA9PSAnXDAnKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRDX0VPRjsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6 IHRva2VuIGZvdW5kOgo+IFRDX0VPRlxuIiwgX19mdW5jX18pOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKCpwID09ICdcIicpIHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGl0J3MgYSBzdHJpbmcgKi8KPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdF9zdHJpbmcgPSBzID0g KytwOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFy ICpzID0gdF9zdHJpbmcgPSArK3A7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB3aGlsZSAoKnAgIT0gJ1wiJykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKnBwOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICdcbicpCj4gK0BAIC0xMTEwLDcgKzExNDIsNyBA QCBzdGF0aWMgdWludDMyX3QgbmV4dF90b2tlbih1aW50MzJfdCBleHBlY3RlZCkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6IHRva2VuIGZvdW5kOiclcycKPiBUQ19TVFJJTkdcbiIsIF9fZnVuY19fLCB0X3N0cmlu Zyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoKGV4cGVjdGVk ICYgVENfUkVHRVhQKSAmJiAqcCA9PSAnLycpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGl0J3MgcmVnZXhwICovCj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfc3RyaW5nID0gcyA9ICsrcDsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqc8KgPSB0X3N0 cmluZyA9ICsrcDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHdoaWxlICgqcCAhPSAnLycpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAn XG4nKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoRU1TR19VTkVYUF9FT1Mp Owo+ICtAQCAtMTE0MSw2ICsxMTczLDExIEBAIHN0YXRpYyB1aW50MzJfdCBuZXh0X3Rva2VuKHVp bnQzMl90IGV4cGVjdGVkKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdGMgPSBUQ19OVU1CRVI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0b2tlbiBmb3VuZDolZgo+ IFRDX05VTUJFUlxuIiwgX19mdW5jX18sIHRfZG91YmxlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2hhciAqZW5kX29mX25hbWU7Cj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpwID09ICdcbicpCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X2xpbmVu bysrOwo+ICsrCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBzZWFyY2ggZm9yIHNvbWV0aGluZyBrbm93biAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGwgPSB0b2tlbmxpc3Q7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IDB4MDAwMDAwMDE7Cj4gK0BA IC0xMTU1LDkgKzExOTIsOSBAQCBzdGF0aWMgdWludDMyX3QgbmV4dF90b2tlbih1aW50MzJfdCBl eHBlY3RlZCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiB0b2tlbiBtYXRjaGVzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFuZCBpdCdzIG5v dCBhIGxvbmdlciB3b3JkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0YyAmIChleHBlY3RlZCB8 IFRDX1dPUkQgfAo+IFRDX05FV0xJTkUpKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0YyAmIChleHBlY3RlZCB8IFRT X1dPUkQgfAo+IFRDX05FV0xJTkUpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiBzdHJuY21wKHAsIHRsLCBsKSA9PSAw Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgJiYgISgodGMgJiBUQ19XT1JEKSAmJgo+IGlzYWxudW1fKHBbbF0pKQo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICYmICEoKHRjICYgVFNfV09SRCkgJiYKPiBpc2FsbnVtXyhwW2xdKSkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqApIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdGhlbiB0aGlzIGlzIHdoYXQgd2UgYXJlCj4gbG9va2lu ZyBmb3IgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdF9pbmZvID0gKnRpOwo+ICtAQCAtMTE3 NCw2NyArMTIxMSw5NCBAQCBzdGF0aWMgdWludDMyX3QgbmV4dF90b2tlbih1aW50MzJfdAo+IGV4 cGVjdGVkKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKCFpc2FsbnVtXygqcCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfVU5FWFBfVE9LRU4p OyAvKiBubwo+ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiB5ZXMgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdF9zdHJpbmcgPSAtLXA7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHdoaWxlIChpc2FsbnVtXygqKytwKSkgewo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcFstMV0gPSAqcDsK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwWy0xXSA9ICdcMCc7Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRjID0gVENfVkFS SUFCTEU7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8q IGFsc28gY29uc3VtZSB3aGl0ZXNwYWNlIGJldHdlZW4KPiBmdW5jdGlvbm5hbWUgYW5kIGJyYWNr ZXQgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KCEoZXhwZWN0ZWQgJiBUQ19WQVJJQUJMRSkgfHwgKGV4cGVjdGVkICYKPiBUQ19BUlJBWSkpCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfc3RyaW5nID0g cDsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUg KGlzYWxudW1fKCpwKSkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHArKzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZW5kX29mX25hbWUgPSBwOwo+ICsrCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChsYXN0X3Rva2VuX2NsYXNzID09IFRD X0ZVTkNERUNMKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogZWF0IHNwYWNlIGluICJmdW5jdGlvbiBGVU5DICguLi4pCj4g ey4uLn0iIGRlY2xhcmF0aW9uICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCA9IHNraXBfc3BhY2VzKHApOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChleHBlY3Rl ZCAmIFRDX0FSUkFZKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBlYXQgc3BhY2UgYmV0d2VlbiBhcnJheSBuYW1lIGFu ZCBbCj4gKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNoYXIgKnMgPSBza2lwX3NwYWNlcyhwKTsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcyA9 PSAnWycpIC8qIGFycmF5IHJlZiwgbm90IGp1c3QKPiBhIG5hbWU/ICovCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcCA9IHM7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogZWxzZTogZG8gTk9UIGNvbnN1bWUgd2hpdGVzcGFjZSBhZnRlcgo+IHZhcmlhYmxlIG5hbWUh Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGdhd2sg YWxsb3dzIGRlZmluaXRpb24gImZ1bmN0aW9uIEZVTkMgKHApCj4gey4uLn0iIC0gbm90ZSBzcGFj ZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYnV0 IGRpc2FsbG93cyB0aGUgY2FsbCAiRlVOQyAocCkiIGJlY2F1c2UKPiBpdCBpc24ndCBvbmUgLQo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBleHByZXNz aW9uICJ2IChhKSIgc2hvdWxkIE5PVCBiZSBwYXJzZWQgYXMKPiBUQ19GVU5DVElPTjoKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaXQgaXMgYSB2YWxp ZCBjb25jYXRlbmF0aW9uIGlmICJ2IiBpcyBhCj4gdmFyaWFibGUsCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG5vdCBhIGZ1bmN0aW9uIG5hbWUgKGFu ZCB0eXBlIG9mIG5hbWUgaXMKPiBub3Qga25vd24gYXQgcGFyc2UgdGltZSkuCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICsrCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKnAgPT0gJygnKSB7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBwKys7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBUQ19GVU5DVElPTjsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf cGFyc2UoIiVzOiB0b2tlbgo+IGZvdW5kOiclcycgVENfRlVOQ1RJT05cbiIsIF9fZnVuY19fLCB0 X3N0cmluZyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSBpZiAoKnAgPT0gJ1snKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwKys7Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRDX0FSUkFZ Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogdG9rZW4KPiBmb3VuZDonJXMnIFRDX0FS UkFZXG4iLCBfX2Z1bmNfXywgdF9zdHJpbmcpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcCA9PSAnWycpIHsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBwKys7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBUQ19B UlJBWTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0b2tl bgo+IGZvdW5kOiclcycgVENfQVJSQVlcbiIsIF9fZnVuY19fLCB0X3N0cmluZyk7Cj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 IGVsc2UKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0b2tl bgo+IGZvdW5kOiclcycgVENfVkFSSUFCTEVcbiIsIF9fZnVuY19fLCB0X3N0cmluZyk7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0YyA9IFRDX1ZBUklBQkxFOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogdG9rZW4K PiBmb3VuZDonJXMnIFRDX1ZBUklBQkxFXG4iLCBfX2Z1bmNfXywgdF9zdHJpbmcpOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGVuZF9vZl9uYW1lID09IHApIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB0aGVyZSBp cyBubyBzcGFjZSBmb3IKPiB0cmFpbGluZyBOVUwgaW4gdF9zdHJpbmchCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogV2UgbmVlZCB0byBzYXZlIHRoZSBjaGFyCj4gd2UgYXJlIGdvaW5nIHRvIE5V TC4KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAod2UnbGwgdXNlIGl0IGluIGZ1dHVyZQo+IGNh bGwgdG8gbmV4dF90b2tlbigpKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGdfc2F2ZWRfY2ggPSAqZW5kX29mX25hbWU7Cj4gKysvLyBlc3BlY2lhbGx5 IHBhdGhvbG9naWNhbCBleGFtcGxlIGlzIFY9ImFiYyI7IFYuMiAtIGl0J3MgVgo+IGNvbmNhdGVu YXRlZCB0byAuMgo+ICsrLy8gKGl0IGV2YWx1YXRlcyB0byAiYWJjMC4yIikuIEJlY2F1c2Ugb2Yg dGhpcyBjYXNlLCB3ZSBjYW4ndAo+IHNpbXBseSBjYWNoZQo+ICsrLy8gJy4nIGFuZCBhbmFseXpl IGl0IGxhdGVyOiB3ZSBhbHNvIGhhdmUgdG8gKnN0b3JlIGl0IGJhY2sqIGluCj4gbmV4dAo+ICsr Ly8gbmV4dF90b2tlbigpLCBpbiBvcmRlciB0byBnaXZlIG15X3N0cnRvZCgpIHRoZSB1bmRhbWFn ZWQgIi4yIgo+IHN0cmluZy4KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKmVuZF9vZl9uYW1lID0gJ1wwJzsgLyogdGVybWluYXRlIHRfc3RyaW5nICov Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqAgdG9rZW5fZm91bmQ6Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdfcG9zID0gcDsKPiArIAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBza2lwcGluZyBuZXdsaW5lcyBpbiBzb21lIGNhc2Vz ICovCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChsdGNsYXNzICYgVENfTk9U RVJNKSAmJiAodGMgJiBUQ19ORVdMSU5FKSkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoKGxhc3RfdG9rZW5fY2xhc3MgJiBUU19OT1RFUk0pICYmICh0YyAmCj4gVENfTkVXTElO RSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3Rv IHJlYWRuZXh0Owo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGluc2Vy dCBjb25jYXRlbmF0aW9uIG9wZXJhdG9yIHdoZW4gbmVlZGVkICovCj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogJXggJXggJXggY29uY2F0X2lu c2VydGVkP1xuIiwKPiBfX2Z1bmNfXywKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgKGx0Y2xhc3MgJiBUQ19DT05DQVQxKSwgKHRjICYgVENfQ09OQ0FUMiks Cj4gKGV4cGVjdGVkICYgVENfQklOT1ApKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoKGx0Y2xhc3MgJiBUQ19DT05DQVQxKSAmJiAodGMgJiBUQ19DT05DQVQyKSAmJgo+IChl eHBlY3RlZCAmIFRDX0JJTk9QKQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAh KGx0Y2xhc3MgPT0gVENfTEVOR1RIICYmIHRjID09IFRDX1NFUVNUQVJUKSAvKgo+IGJ1dCBub3Qg Zm9yICJsZW5ndGgoLi4uIiAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVn X3ByaW50Zl9wYXJzZSgiJXM6IGNvbmNhdF9pbnNlcnRlZCBpZiBhbGwKPiBub256ZXJvOiAleCAl eCAleCAleFxuIiwgX19mdW5jX18sCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoChsYXN0X3Rva2VuX2NsYXNzICYgVFNfQ09OQ0FUX0wpLCAodGMgJgo+IFRT X0NPTkNBVF9SKSwgKGV4cGVjdGVkICYgVFNfQklOT1ApLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAhKGxhc3RfdG9rZW5fY2xhc3MgPT0gVENfTEVOR1RI ICYmIHRjID09Cj4gVENfTFBBUkVOKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKChsYXN0X3Rva2VuX2NsYXNzICYgVFNfQ09OQ0FUX0wpICYmICh0YyAmCj4gVFNfQ09OQ0FU X1IpICYmIChleHBlY3RlZCAmIFRTX0JJTk9QKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAmJiAhKGxhc3RfdG9rZW5fY2xhc3MgPT0gVENfTEVOR1RIICYmIHRjID09Cj4gVENfTFBB UkVOKSAvKiBidXQgbm90IGZvciAibGVuZ3RoKC4uLiIgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjb25jYXRfaW5zZXJ0ZWQgPSBUUlVFOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2F2ZV90Y2xhc3MgPSB0YzsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNhdmVfaW5mbyA9IHRfaW5mbzsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBUQ19CSU5P UDsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBU Q19CSU5PUFg7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0X2luZm8gPSBPQ19DT05DQVQgfCBTUyB8IFAoMzUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19w cmludGZfcGFyc2UoIiVzOiB0X3RjbGFzcz10Yz0leFxuIiwgX19mdW5jX18sCj4gdF90Y2xhc3Mp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X3RjbGFzcyA9IHRjOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IHRfdGNsYXNz PXRjPSV4XG4iLCBfX2Z1bmNfXywKPiB0Yyk7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKg wqDCoMKgbHRjbGFzcyA9IHRfdGNsYXNzOwo+ICstCj4gK8KgwqDCoMKgwqDCoMKgLyogQXJlIHdl IHJlYWR5IGZvciB0aGlzPyAqLwo+ICstwqDCoMKgwqDCoMKgaWYgKCEobHRjbGFzcyAmIGV4cGVj dGVkKSkgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcigobHRj bGFzcyAmIChUQ19ORVdMSU5FIHwgVENfRU9GKSkgPwo+ICsrwqDCoMKgwqDCoMKgaWYgKCEodF90 Y2xhc3MgJiBleHBlY3RlZCkpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50 YXhfZXJyb3IoKGxhc3RfdG9rZW5fY2xhc3MgJiAoVENfTkVXTElORSB8Cj4gVENfRU9GKSkgPwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoEVNU0dfVU5FWFBfRU9TIDogRU1TR19VTkVYUF9UT0tFTik7Cj4gK8KgwqDCoMKgwqDC oMKgfQo+ICsgCj4gKy3CoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiByZXR1cm5p bmcsIGx0Y2xhc3M6JXggdF9kb3VibGU6JWZcbiIsCj4gX19mdW5jX18sIGx0Y2xhc3MsIHRfZG91 YmxlKTsKPiArLcKgwqDCoMKgwqDCoHJldHVybiBsdGNsYXNzOwo+ICsrwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX3BhcnNlKCIlczogcmV0dXJuaW5nLCB0X2RvdWJsZTolZiB0X3RjbGFzczoiLAo+ IF9fZnVuY19fLCB0X2RvdWJsZSk7Cj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wYXJzZV9wcmludF90 Yyh0X3RjbGFzcyk7Cj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIlxuIik7Cj4g KysKPiArK8KgwqDCoMKgwqDCoHJldHVybiB0X3RjbGFzczsKPiArICN1bmRlZiBjb25jYXRfaW5z ZXJ0ZWQKPiArICN1bmRlZiBzYXZlX3RjbGFzcwo+ICsgI3VuZGVmIHNhdmVfaW5mbwo+ICstI3Vu ZGVmIGx0Y2xhc3MKPiArIH0KPiArIAo+ICstc3RhdGljIHZvaWQgcm9sbGJhY2tfdG9rZW4odm9p ZCkKPiArK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcm9sbGJhY2tfdG9rZW4odm9pZCkKPiAr IHsKPiArwqDCoMKgwqDCoMKgwqB0X3JvbGxiYWNrID0gVFJVRTsKPiArIH0KPiArQEAgLTEyNTEs MTY5ICsxMzE1LDE4OCBAQCBzdGF0aWMgbm9kZSAqbmV3X25vZGUodWludDMyX3QgaW5mbykKPiAr IAo+ICsgc3RhdGljIHZvaWQgbWtfcmVfbm9kZShjb25zdCBjaGFyICpzLCBub2RlICpuLCByZWdl eF90ICpyZSkKPiArIHsKPiArLcKgwqDCoMKgwqDCoG4tPmluZm8gPSBPQ19SRUdFWFA7Cj4gKyvC oMKgwqDCoMKgwqBuLT5pbmZvID0gVElfUkVHRVhQOwo+ICvCoMKgwqDCoMKgwqDCoG4tPmwucmUg PSByZTsKPiArwqDCoMKgwqDCoMKgwqBuLT5yLmlyZSA9IHJlICsgMTsKPiArwqDCoMKgwqDCoMKg wqB4cmVnY29tcChyZSwgcywgUkVHX0VYVEVOREVEKTsKPiArwqDCoMKgwqDCoMKgwqB4cmVnY29t cChyZSArIDEsIHMsIFJFR19FWFRFTkRFRCB8IFJFR19JQ0FTRSk7Cj4gKyB9Cj4gKyAKPiArLXN0 YXRpYyBub2RlICpjb25kaXRpb24odm9pZCkKPiArK3N0YXRpYyBub2RlICpwYXJzZV9leHByKHVp bnQzMl90KTsKPiArKwo+ICsrc3RhdGljIG5vZGUgKnBhcnNlX2xycGFyZW5fbGlzdCh2b2lkKQo+ ICsgewo+ICstwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19TRVFTVEFSVCk7Cj4gKy3CoMKgwqDC oMKgwqByZXR1cm4gcGFyc2VfZXhwcihUQ19TRVFURVJNKTsKPiArK8KgwqDCoMKgwqDCoG5leHRf dG9rZW4oVENfTFBBUkVOKTsKPiArK8KgwqDCoMKgwqDCoHJldHVybiBwYXJzZV9leHByKFRDX1JQ QVJFTik7Cj4gKyB9Cj4gKyAKPiArIC8qIHBhcnNlIGV4cHJlc3Npb24gdGVybWluYXRlZCBieSBn aXZlbiBhcmd1bWVudCwgcmV0dXJuIHB0cgo+ICvCoCAqIHRvIGJ1aWx0IHN1YnRyZWUuIFRlcm1p bmF0b3IgaXMgZWF0ZW4gYnkgcGFyc2VfZXhwciAqLwo+ICstc3RhdGljIG5vZGUgKnBhcnNlX2V4 cHIodWludDMyX3QgaWV4cCkKPiArK3N0YXRpYyBub2RlICpwYXJzZV9leHByKHVpbnQzMl90IHRl cm1fdGMpCj4gKyB7Cj4gK8KgwqDCoMKgwqDCoMKgbm9kZSBzbjsKPiArwqDCoMKgwqDCoMKgwqBu b2RlICpjbiA9ICZzbjsKPiArwqDCoMKgwqDCoMKgwqBub2RlICp2biwgKmdscHRyOwo+ICstwqDC oMKgwqDCoMKgdWludDMyX3QgdGMsIHh0YzsKPiArK8KgwqDCoMKgwqDCoHVpbnQzMl90IHRjLCBl eHBlY3RlZF90YzsKPiArwqDCoMKgwqDCoMKgwqB2YXIgKnY7Cj4gKyAKPiArLcKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9wYXJzZSgiJXMoJXgpXG4iLCBfX2Z1bmNfXywgaWV4cCk7Cj4gKyvCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzKCkgdGVybV90YygleCk6IiwgX19mdW5jX18s IHRlcm1fdGMpOwo+ICsrwqDCoMKgwqDCoMKgZGVidWdfcGFyc2VfcHJpbnRfdGModGVybV90Yyk7 Cj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIlxuIik7Cj4gKyAKPiArwqDCoMKg wqDCoMKgwqBzbi5pbmZvID0gUFJJTUFTSzsKPiArwqDCoMKgwqDCoMKgwqBzbi5yLm4gPSBzbi5h Lm4gPSBnbHB0ciA9IE5VTEw7Cj4gKy3CoMKgwqDCoMKgwqB4dGMgPSBUQ19PUEVSQU5EIHwgVENf VU9QUFJFIHwgVENfUkVHRVhQIHwgaWV4cDsKPiArK8KgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0g VFNfT1BFUkFORCB8IFRTX1VPUFBSRSB8IFRDX1JFR0VYUCB8IHRlcm1fdGM7Cj4gKyAKPiArLcKg wqDCoMKgwqDCoHdoaWxlICghKCh0YyA9IG5leHRfdG9rZW4oeHRjKSkgJiBpZXhwKSkgewo+ICsr wqDCoMKgwqDCoMKgd2hpbGUgKCEoKHRjID0gbmV4dF90b2tlbihleHBlY3RlZF90YykpICYgdGVy bV90YykpIHsKPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChnbHB0ciAm JiAodF9pbmZvID09IChPQ19DT01QQVJFIHwgVlYgfCBQKDM5KSB8Cj4gMikpKSB7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGdscHRyICYmICh0X2luZm8gPT0gVElfTEVTUykp IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGlu cHV0IHJlZGlyZWN0aW9uICg8KSBhdHRhY2hlZCB0byBnbHB0cgo+IG5vZGUgKi8KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6IGlucHV0IHJlZGlyXG4iLAo+IF9fZnVuY19fKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuID0gZ2xwdHItPmwubiA9IG5ld19ub2RlKE9D X0NPTkNBVCB8IFNTIHwKPiBQKDM3KSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjbi0+YS5uID0gZ2xwdHI7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHh0YyA9IFRDX09QRVJBTkQgfCBUQ19VT1BQUkU7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3Rj ID0gVFNfT1BFUkFORCB8IFRTX1VPUFBSRTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdscHRyID0gTlVMTDsKPiArLQo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAodGMgJiAoVENfQklOT1AgfCBUQ19VT1BQT1NUKSkgewo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfcGFyc2UoIiVzOiBUQ19CSU5PUCB8IFRDX1VPUFBPU1QKPiB0YzoleFxuIiwgX19mdW5jX18s IHRjKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29u dGludWU7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIChUU19CSU5PUCB8IFRDX1VPUFBPU1QpKSB7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IFRTX0JJTk9QIHwgVENfVU9QUE9TVAo+IHRjOiV4XG4iLCBfX2Z1bmNfXywgdGMp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZm9y IGJpbmFyeSBhbmQgcG9zdGZpeC11bmFyeSBvcGVyYXRvcnMsCj4ganVtcCBiYWNrIG92ZXIKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHByZXZpb3Vz IG9wZXJhdG9ycyB3aXRoIGhpZ2hlciBwcmlvcml0eSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdm4gPSBjbjsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgoKHRfaW5mbyAmIFBSSU1BU0spID4g KHZuLT5hLm4tPmluZm8gJgo+IFBSSU1BU0syKSkKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHx8ICgodF9pbmZvID09IHZuLT5pbmZvKSAmJiAo KHRfaW5mbyAmCj4gT1BDTFNNQVNLKSA9PSBPQ19DT0xPTikpCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8fCAoKHRfaW5mbyA9PSB2bi0+aW5m bykgJiYgdF9pbmZvID09Cj4gVElfQ09MT04pCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqApIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2biA9IHZuLT5hLm47Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KCF2bi0+YS5uKQo+IHN5bnRheF9lcnJvcihFTVNHX1VORVhQX1RPS0VOKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0X2luZm8gJiBPUENMU01BU0spID09 IE9DX1RFUk5BUlkpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0X2luZm8gPT0gVElfVEVSTkFSWSkKPiArKy8vVE9ETzogd2h5Pwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRf aW5mbyArPSBQKDYpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY24gPSB2bi0+YS5uLT5yLm4gPSBuZXdfbm9kZSh0X2luZm8pOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmEubiA9IHZuLT5hLm47Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIFRD X0JJTk9QKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICh0YyAmIFRTX0JJTk9QKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IHZuOwo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHRjID0g VENfT1BFUkFORCB8IFRDX1VPUFBSRSB8Cj4gVENfUkVHRVhQOwo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0X2luZm8g JiBPUENMU01BU0spID09Cj4gT0NfUEdFVExJTkUpIHsKPiArKy8vRklYTUU6IHRoaXMgaXMgdGhl IHBsYWNlIHRvIGRldGVjdCBhbmQgcmVqZWN0IGFzc2lnbm1lbnRzIHRvIG5vbi0KPiBsdmFsdWVz Lgo+ICsrLy9DdXJyZW50bHkgd2UgYWxsb3cgImFzc2lnbm1lbnRzIiB0byBjb25zdHMgYW5kIHRl bXBvcmFyaWVzLAo+IG5vbnNlbnNlIGxpa2UgdGhpczoKPiArKy8vIGF3ayAnQkVHSU4geyAicXdl IiA9IDEgfScKPiArKy8vIGF3ayAnQkVHSU4geyA3ICo9IDcgfScKPiArKy8vIGF3ayAnQkVHSU4g eyBsZW5ndGgoInF3ZSIpID0gMSB9Jwo+ICsrLy8gYXdrICdCRUdJTiB7ICgxKzEpICs9IDMgfScK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFORCB8IFRTX1VPUFBSRQo+IHwgVENfUkVHRVhQ Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKHRfaW5mbyA9PSBUSV9QR0VUTElORSkgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBpdCdzIGEgcGlwZSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2Vu KFRDX0dFVExJTkUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBnaXZlIG1heGltdW0gcHJp b3JpdHkgdG8KPiB0aGlzIHBpcGUgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8g Jj0gflBSSU1BU0s7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHRjID0gVENfT1BFUkFORCB8IFRD X1VPUFBSRQo+IHwgVENfQklOT1AgfCBpZXhwOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVj dGVkX3RjID0gVFNfT1BFUkFORCB8Cj4gVFNfVU9QUFJFIHwgVFNfQklOT1AgfCB0ZXJtX3RjOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY24tPnIubiA9IHZuOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHRjID0gVENfT1BFUkFORCB8 IFRDX1VPUFBSRSB8Cj4gVENfQklOT1AgfCBpZXhwOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhwZWN0ZWRfdGMgPSBUU19P UEVSQU5EIHwgVFNfVU9QUFJFCj4gfCBUU19CSU5PUCB8IHRlcm1fdGM7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2bi0+YS5uID0gY247Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IG90aGVyXG4iLCBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGZvciBvcGVyYW5kcyBhbmQg cHJlZml4LXVuYXJ5IG9wZXJhdG9ycywKPiBhdHRhY2ggdGhlbQo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB0byBsYXN0IG5vZGUgKi8KPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdm4gPSBjbjsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24gPSB2bi0+ci5uID0gbmV3 X25vZGUodF9pbmZvKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY24tPmEubiA9IHZuOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB4dGMgPSBUQ19PUEVSQU5EIHwgVENfVU9QUFJFIHwgVENfUkVHRVhQOwo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGMgJiAoVENf T1BFUkFORCB8IFRDX1JFR0VYUCkpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRD X09QRVJBTkQgfAo+IFRDX1JFR0VYUFxuIiwgX19mdW5jX18pOwo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHRjID0gVENfVU9Q UFJFIHwgVENfVU9QUE9TVCB8Cj4gVENfQklOT1AgfCBUQ19PUEVSQU5EIHwgaWV4cDsKPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIG9uZSBzaG91bGQgYmUgdmVyeSBjYXJlZnVsIHdpdGgKPiBzd2l0Y2ggb24gdGNsYXNzIC0K PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIG9ubHkgc2ltcGxlIHRjbGFzc2VzIHNob3VsZCBiZQo+IHVzZWQhICovCj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzd2l0Y2ggKHRjKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX1ZBUklBQkxFOgo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19B UlJBWToKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+IFRD X1ZBUklBQkxFIHwgVENfQVJSQVlcbiIsIF9fZnVuY19fKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjbi0+aW5mbyA9IE9DX1ZBUjsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gaGFzaF9zZWFy Y2goYWhhc2gsCj4gdF9zdHJpbmcpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh2ICE9IE5V TEwpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gPSBP Q19GTkFSRzsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwuYWlk eCA9IHYtCj4gPnguYWlkeDsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC52ID0KPiBuZXd2YXIodF9zdHJp bmcpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo dGMgJiBUQ19BUlJBWSkgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj bi0+aW5mbyB8PSB4UzsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24t PnIubiA9Cj4gcGFyc2VfZXhwcihUQ19BUlJURVJNKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogb3RoZXIsIHRfaW5mbzoleFxuIiwKPiBfX2Z1 bmNfXywgdF9pbmZvKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBmb3Igb3Bl cmFuZHMgYW5kIHByZWZpeC11bmFyeSBvcGVyYXRvcnMsIGF0dGFjaAo+IHRoZW0KPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB0byBsYXN0IG5vZGUgKi8KPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB2biA9IGNuOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNuID0gdm4tPnIubiA9IG5ld19ub2RlKHRfaW5mbyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY24tPmEubiA9IHZuOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX05VTUJFUjoKPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNhc2UgVENfU1RSSU5HOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6Cj4gVENfTlVNQkVSIHwgVENfU1RSSU5HXG4iLCBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY24tPmluZm8gPSBPQ19WQVI7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9 IGNuLT5sLnYgPQo+IHh6YWxsb2Moc2l6ZW9mKHZhcikpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICh0YyAmIFRDX05VTUJFUikKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc2V0dmFyX2kodiwKPiB0X2RvdWJsZSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZSB7 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9zKHYsCj4gdF9z dHJpbmcpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMgJj0gflRD X1VPUFBPU1Q7Cj4gLyogInN0ciIrKyBpcyBub3QgYWxsb3dlZCAqLwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBleHBlY3RlZF90YyA9IFRTX09QRVJBTkQgfCBUU19VT1BQUkUgfCBUQ19S RUdFWFA7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfaW5mbyA9PSBUSV9Q UkVJTkMgfHwgdF9pbmZvID09IFRJX1BSRURFQykKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhwZWN0ZWRfdGMgPSBUU19MVkFMVUUgfCBUQ19VT1BQUkUx Owo+ICsgCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIFRDX1JFR0VYUDoKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOgo+IFRDX1JFR0VYUFxuIiwgX19mdW5jX18pOwo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG1rX3JlX25vZGUodF9zdHJpbmcsIGNuLAo+IHh6YWxsb2Moc2l6ZW9mKHJl Z2V4X3QpKjIpKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoISh0YyAmIChUU19PUEVSQU5EIHwgVENfUkVHRVhQKSkpCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ ICsgCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjYXNlIFRDX0ZVTkNUSU9OOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVn X3ByaW50Zl9wYXJzZSgiJXM6Cj4gVENfRlVOQ1RJT05cbiIsIF9fZnVuY19fKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjbi0+aW5mbyA9IE9DX0ZVTkM7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y24tPnIuZiA9IG5ld2Z1bmModF9zdHJpbmcpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5s Lm4gPSBjb25kaXRpb24oKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUU19PUEVSQU5E IHwgVENfUkVHRVhQXG4iLAo+IF9fZnVuY19fKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBleHBlY3RlZF90YyA9IFRTX1VPUFBSRSB8IFRDX1VPUFBPU1QgfCBUU19CSU5PUCB8Cj4g VFNfT1BFUkFORCB8IHRlcm1fdGM7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog b25lIHNob3VsZCBiZSB2ZXJ5IGNhcmVmdWwgd2l0aCBzd2l0Y2ggb24gdGNsYXNzIC0KPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvbmx5IHNpbXBsZSB0Y2xhc3NlcyBzaG91bGQg YmUgdXNlZCAoVENfeHl6LCBub3QKPiBUU194eXopICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc3dpdGNoICh0Yykgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNh c2UgVENfVkFSSUFCTEU6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19B UlJBWToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX3BhcnNlKCIlczogVENfVkFSSUFCTEUgfAo+IFRDX0FSUkFZXG4iLCBfX2Z1bmNf Xyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5p bmZvID0gT0NfVkFSOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2ID0gaGFzaF9zZWFyY2goYWhhc2gsIHRfc3RyaW5nKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHYgIT0gTlVMTCkgewo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24t PmluZm8gPSBPQ19GTkFSRzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5sLmFpZHggPSB2LT54LmFpZHg7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj bi0+bC52ID0gbmV3dmFyKHRfc3RyaW5nKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAodGMgJiBUQ19BUlJBWSkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gfD0geFM7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjbi0+ci5uID0gcGFyc2VfZXhwcihUQ19BUlJURVJNKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19TRVFTVEFS VDoKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+IFRDX1NF UVNUQVJUXG4iLCBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24gPSB2bi0+ci5u ID0KPiBwYXJzZV9leHByKFRDX1NFUVRFUk0pOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgh Y24pCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcigi RW1wdHkKPiBzZXF1ZW5jZSIpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5hLm4gPSB2bjsK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjYXNlIFRDX05VTUJFUjoKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNl IFRDX1NUUklORzoKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfTlVNQkVSIHwKPiBUQ19TVFJJTkdcbiIsIF9f ZnVuY19fKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y24tPmluZm8gPSBPQ19WQVI7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHYgPSBjbi0+bC52ID0geHphbGxvYyhzaXplb2YodmFyKSk7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIFRDX05VTUJFUikK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHNldHZhcl9pKHYsIHRfZG91YmxlKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfcyh2LCB0X3N0cmluZyk7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBleHBlY3RlZF90YyAmPSB+VENfVU9QUE9TVDsgLyoKPiAic3RyIisrIGlzIG5vdCBh bGxvd2VkICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNhc2UgVENfR0VUTElORToKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOgo+IFRDX0dFVExJTkVcbiIsIF9fZnVuY19fKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnbHB0ciA9IGNuOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHh0YyA9IFRD X09QRVJBTkQgfCBUQ19VT1BQUkUKPiB8IFRDX0JJTk9QIHwgaWV4cDsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX1JF R0VYUDoKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX3BhcnNlKCIlczogVENfUkVHRVhQXG4iLAo+IF9fZnVuY19fKTsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWtfcmVfbm9kZSh0X3N0cmlu ZywgY24sCj4geHphbGxvYyhzaXplb2YocmVnZXhfdCkqMikpOwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19C VUlMVElOOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6Cj4g VENfQlVJTFRJTlxuIiwgX19mdW5jX18pOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5sLm4g PSBjb25kaXRpb24oKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX0ZVTkNUSU9OOgo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19G VU5DVElPTlxuIiwKPiBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvID0gT0NfRlVOQzsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPnIuZiA9IG5ld2Z1bmModF9zdHJpbmcpOwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5uID0g cGFyc2VfZXhwcihUQ19SUEFSRU4pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19MRU5HVEg6Cj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczoKPiBUQ19MRU5HVEhcbiIsIF9f ZnVuY19fKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRDX1NFUVNUQVJUIC8q Cj4gbGVuZ3RoKC4uLikgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fCBUQ19PUFRFUk3CoMKgwqAgLyoKPiBsZW5ndGg7IChvciBuZXdsaW5lKSovCj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgVENfR1JQVEVSTcKgwqAgLyoKPiBsZW5ndGgg fSAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX0JJTk9QWMKg wqDCoCAvKgo+IGxlbmd0aCA8b3A+IE5VTSAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8IFRDX0NPTU1BwqDCoMKgwqAgLyoKPiBwcmludCBsZW5ndGgsIDEgKi8KPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqApOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rv a2VuKCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICYgVENfU0VRU1RBUlQp IHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogSXQgd2FzIGEgIigi Cj4gdG9rZW4uIEhhbmRsZSBqdXN0IGxpa2UgVENfQlVJTFRJTiAqLwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5uID0KPiBjb25kaXRpb24oKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19MUEFSRU46Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgi JXM6IFRDX0xQQVJFTlxuIiwKPiBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuID0gdm4tPnIubiA9IHBhcnNlX2V4cHIoVENfUlBBUkVO KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFj bikKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN5bnRheF9lcnJvcigiRW1wdHkgc2VxdWVuY2UiKTsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmEubiA9IHZuOwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArKwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfR0VUTElORToKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczog VENfR0VUTElORVxuIiwKPiBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdscHRyID0gY247Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFORCB8IFRTX1VPUFBS RSB8Cj4gVFNfQklOT1AgfCB0ZXJtX3RjOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArKwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNhc2UgVENfQlVJTFRJTjoKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfQlVJTFRJTlxuIiwKPiBfX2Z1 bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNu LT5sLm4gPSBwYXJzZV9scnBhcmVuX2xpc3QoKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjYXNlIFRDX0xFTkdUSDoKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfTEVOR1RIXG4iLAo+IF9f ZnVuY19fKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dGMgPSBuZXh0X3Rva2VuKFRDX0xQQVJFTiAvKiBsZW5ndGgoLi4uKSAqLwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19T RU1JQ09MwqDCoCAvKiBsZW5ndGg7ICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX05FV0xJTkXCoMKgIC8qIGxlbmd0 aDxuZXdsaW5lPiAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19SQlJBQ0XCoMKgwqAgLyogbGVuZ3RoIH0gKi8KPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHwgVENfQklOT1BYwqDCoMKgIC8qIGxlbmd0aCA8b3A+IE5VTSAqLwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19D T01NQcKgwqDCoMKgIC8qIHByaW50IGxlbmd0aCwgMSAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqApOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGMgIT0gVENfTFBBUkVOKQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tf dG9rZW4oKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZWxzZSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBJdCB3YXMgYSAiKCIgdG9rZW4uIEhhbmRsZSBqdXN0Cj4gbGlrZSBU Q19CVUlMVElOICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5uID0gcGFyc2VfZXhwcihUQ19SUEFSRU4pOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKg fSAvKiB3aGlsZSgpICovCj4gKyAKPiArwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2Uo IiVzKCkgcmV0dXJucyAlcFxuIiwgX19mdW5jX18sIHNuLnIubik7Cj4gK8KgwqDCoMKgwqDCoMKg cmV0dXJuIHNuLnIubjsKPiArQEAgLTE0MzAsNyArMTUxMyw3IEBAIHN0YXRpYyBub2RlICpjaGFp bl9ub2RlKHVpbnQzMl90IGluZm8pCj4gK8KgwqDCoMKgwqDCoMKgaWYgKHNlcS0+cHJvZ3JhbW5h bWUgIT0gZ19wcm9nbmFtZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXEt PnByb2dyYW1uYW1lID0gZ19wcm9nbmFtZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbiA9IGNoYWluX25vZGUoT0NfTkVXU09VUkNFKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBuLT5sLm5ld19wcm9nbmFtZSA9IHhzdHJkdXAoZ19wcm9nbmFtZSk7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uZXdfcHJvZ25hbWUgPSBnX3Byb2duYW1lOwo+ ICvCoMKgwqDCoMKgwqDCoH0KPiArIAo+ICvCoMKgwqDCoMKgwqDCoG4gPSBzZXEtPmxhc3Q7Cj4g K0BAIC0xNDQ2LDE0ICsxNTI5LDE2IEBAIHN0YXRpYyB2b2lkIGNoYWluX2V4cHIodWludDMyX3Qg aW5mbykKPiArIAo+ICvCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKGluZm8pOwo+ICsgCj4g Ky3CoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9leHByKFRDX09QVEVSTSB8IFRDX0dSUFRFUk0p Owo+ICsrwqDCoMKgwqDCoMKgbi0+bC5uID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MIHwgVENfTkVX TElORSB8IFRDX1JCUkFDRSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKChpbmZvICYgT0ZfUkVRVUlS RUQpICYmICFuLT5sLm4pCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9l cnJvcihFTVNHX1RPT19GRVdfQVJHUyk7Cj4gKyAKPiArLcKgwqDCoMKgwqDCoGlmICh0X3RjbGFz cyAmIFRDX0dSUFRFUk0pCj4gKyvCoMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19SQlJBQ0Up Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rva2VuKCk7Cj4gKyB9 Cj4gKyAKPiArK3N0YXRpYyB2b2lkIGNoYWluX2dyb3VwKHZvaWQpOwo+ICsrCj4gKyBzdGF0aWMg bm9kZSAqY2hhaW5fbG9vcChub2RlICpubikKPiArIHsKPiArwqDCoMKgwqDCoMKgwqBub2RlICpu LCAqbjIsICpzYXZlX2JyaywgKnNhdmVfY29udDsKPiArQEAgLTE0NzcsMjA3ICsxNTYyLDI4NCBA QCBzdGF0aWMgbm9kZSAqY2hhaW5fbG9vcChub2RlICpubikKPiArwqDCoMKgwqDCoMKgwqByZXR1 cm4gbjsKPiArIH0KPiArIAo+ICsrc3RhdGljIHZvaWQgY2hhaW5fdW50aWxfcmJyYWNlKHZvaWQp Cj4gKyt7Cj4gKyvCoMKgwqDCoMKgwqB1aW50MzJfdCB0YzsKPiArK8KgwqDCoMKgwqDCoHdoaWxl ICgodGMgPSBuZXh0X3Rva2VuKFRTX0dSUFNFUSB8IFRDX1JCUkFDRSkpICE9IFRDX1JCUkFDRSkK PiB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogIVRDX1JCUkFDRVxuIiwgX19mdW5jX18pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0YyA9PSBUQ19ORVdMSU5FKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByb2xsYmFja190b2tlbigpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWlu X2dyb3VwKCk7Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf cGFyc2UoIiVzOiBUQ19SQlJBQ0VcbiIsIF9fZnVuY19fKTsKPiArK30KPiArKwo+ICsgLyogcGFy c2UgZ3JvdXAgYW5kIGF0dGFjaCBpdCB0byBjaGFpbiAqLwo+ICsgc3RhdGljIHZvaWQgY2hhaW5f Z3JvdXAodm9pZCkKPiArIHsKPiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IGM7Cj4gKyvCoMKgwqDC oMKgwqB1aW50MzJfdCB0YzsKPiArwqDCoMKgwqDCoMKgwqBub2RlICpuLCAqbjIsICpuMzsKPiAr IAo+ICvCoMKgwqDCoMKgwqDCoGRvIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj ID0gbmV4dF90b2tlbihUQ19HUlBTRVEpOwo+ICstwqDCoMKgwqDCoMKgfSB3aGlsZSAoYyAmIFRD X05FV0xJTkUpOwo+ICstCj4gKy3CoMKgwqDCoMKgwqBpZiAoYyAmIFRDX0dSUFNUQVJUKSB7Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENf R1JQU1RBUlRcbiIsIF9fZnVuY19fKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3 aGlsZSAobmV4dF90b2tlbihUQ19HUlBTRVEgfCBUQ19HUlBURVJNKSAhPQo+IFRDX0dSUFRFUk0p IHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdf cHJpbnRmX3BhcnNlKCIlczogIVRDX0dSUFRFUk1cbiIsCj4gX19mdW5jX18pOwo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19O RVdMSU5FKQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rva2VuKCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7Cj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IFRDX0dSUFRFUk1cbiIsIF9fZnVuY19fKTsKPiArLcKgwqDCoMKgwqDC oH0gZWxzZSBpZiAoYyAmIChUQ19PUFNFUSB8IFRDX09QVEVSTSkpIHsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19PUFNFUSB8IFRDX09Q VEVSTVxuIiwKPiBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMg PSBuZXh0X3Rva2VuKFRTX0dSUFNFUSk7Cj4gKyvCoMKgwqDCoMKgwqB9IHdoaWxlICh0YyA9PSBU Q19ORVdMSU5FKTsKPiArKwo+ICsrwqDCoMKgwqDCoMKgaWYgKHRjID09IFRDX0xCUkFDRSkgewo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRD X0xCUkFDRVxuIiwgX19mdW5jX18pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNo YWluX3VudGlsX3JicmFjZSgpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy bjsKPiArK8KgwqDCoMKgwqDCoH0KPiArK8KgwqDCoMKgwqDCoGlmICh0YyAmIChUU19PUFNFUSB8 IFRDX1NFTUlDT0wpKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX3BhcnNlKCIlczogVFNfT1BTRVEgfCBUQ19TRU1JQ09MXG4iLAo+IF9fZnVuY19fKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcihPQ19FWEVDIHwgVngpOwo+ICstwqDC oMKgwqDCoMKgfSBlbHNlIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBUQ19T VEFURU1OVCAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IFRDX1NUQVRFTU5UKD8pXG4iLCBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3dpdGNoICh0X2luZm8gJiBPUENMU01BU0spIHsKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFNUX0lGOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBTVF9JRlxuIiwg X19mdW5jX18pOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBuID0gY2hhaW5fbm9kZShPQ19CUiB8IFZ4KTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gY29uZGl0aW9uKCk7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ICsrwqDCoMKgwqDCoMKgfQo+ICsrCj4gKyvCoMKg wqDCoMKgwqAvKiBUU19TVEFURU1OVCAqLwo+ICsrwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3Bh cnNlKCIlczogVFNfU1RBVEVNTlQoPylcbiIsIF9fZnVuY19fKTsKPiArK8KgwqDCoMKgwqDCoHN3 aXRjaCAodF9pbmZvICYgT1BDTFNNQVNLKSB7Cj4gKyvCoMKgwqDCoMKgwqBjYXNlIFNUX0lGOgo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFNU X0lGXG4iLCBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNo YWluX25vZGUoT0NfQlIgfCBWeCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ bC5uID0gcGFyc2VfbHJwYXJlbl9saXN0KCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2hhaW5fZ3JvdXAoKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMiA9IGNo YWluX25vZGUoT0NfRVhFQyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ci5u ID0gc2VxLT5sYXN0Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChuZXh0X3Rv a2VuKFRTX0dSUFNFUSB8IFRDX1JCUkFDRSB8IFRDX0VMU0UpID09Cj4gVENfRUxTRSkgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAo KTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBj aGFpbl9ub2RlKE9DX0VYRUMpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuLT5yLm4gPSBzZXEtPmxhc3Q7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChuZXh0X3Rva2VuKFRDX0dSUFNFUSB8IFRDX0dSUFRF Uk0gfAo+IFRDX0VMU0UpID09IFRDX0VMU0UpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7Cj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBuMi0+YS5uID0gc2VxLT5sYXN0Owo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjItPmEubiA9IHNlcS0+bGFzdDsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgU1RfV0hJTEU6Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IFNUX1dISUxFXG4iLAo+IF9fZnVuY19fKTsKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBjb25kaXRpb24oKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX2xvb3AoTlVM TCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwu biA9IG4yOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiArK8KgwqDCoMKgwqDCoGNhc2UgU1RfV0hJTEU6Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogU1RfV0hJTEVcbiIsIF9fZnVuY19f KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMiA9IHBhcnNlX2xycGFyZW5fbGlz dCgpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9sb29wKE5VTEwp Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IG4yOwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBTVF9ETzoKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogU1RfRE9cbiIsIF9fZnVuY19fKTsK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBjaGFp bl9ub2RlKE9DX0VYRUMpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBuID0gY2hhaW5fbG9vcChOVUxMKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbjItPmEubiA9IG4tPmEubjsKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19XSElMRSk7Cj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IGNvbmRp dGlvbigpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiArK8KgwqDCoMKgwqDCoGNhc2UgU1RfRE86Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogU1RfRE9cbiIsIF9fZnVuY19fKTsKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMiA9IGNoYWluX25vZGUoT0NfRVhFQyk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX2xvb3AoTlVMTCk7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjItPmEubiA9IG4tPmEubjsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRDX1dISUxFKTsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9scnBhcmVuX2xpc3QoKTsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNhc2UgU1RfRk9SOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBTVF9GT1JcbiIsIF9fZnVuY19f KTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90 b2tlbihUQ19TRVFTVEFSVCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG4yID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MIHwgVENfU0VRVEVSTSk7Cj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAm IFRDX1NFUVRFUk0pIHvCoMKgwqDCoC8qIGZvci1pbiAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFuMiB8fCAobjIt PmluZm8gJiBPUENMU01BU0spICE9Cj4gT0NfSU4pCj4gKy0KPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3ludGF4X2Vycm9yKEVNU0dfVU5FWFBfVE9LRU4pOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX25vZGUoT0Nf V0FMS0lOSVQgfCBWVik7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+bC5uOwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ci5uID0g bjItPnIubjsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9sb29wKE5VTEwpOwo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyA9IE9D X1dBTEtORVhUIHwgVng7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+bC5uOwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Uge8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGZvciAoOzspCj4gKi8KPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4g PSBjaGFpbl9ub2RlKE9DX0VYRUMgfCBWeCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMjsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4y ID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4zID0gcGFyc2VfZXhwcihUQ19TRVFU RVJNKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9sb29wKG4zKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IG4yOwo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKCFuMikKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5pbmZvID0gT0NfRVhFQzsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKg wqDCoGNhc2UgU1RfRk9SOgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IFNUX0ZPUlxuIiwgX19mdW5jX18pOwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG5leHRfdG9rZW4oVENfTFBBUkVOKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuMiA9IHBhcnNlX2V4cHIoVENfU0VNSUNPTCB8IFRDX1JQQVJFTik7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICYgVENfUlBBUkVOKSB7wqDC oMKgwqDCoC8qIGZvciAoSSBpbiBBUlJBWSkKPiAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIW4yIHx8IG4yLT5pbmZvICE9IFRJX0lOKQo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc3ludGF4X2Vycm9yKEVNU0dfVU5FWFBfVE9LRU4pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbm9kZShPQ19XQUxLSU5JVCB8IFZW KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5u ID0gbjItPmwubjsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbi0+ci5uID0gbjItPnIubjsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbiA9IGNoYWluX2xvb3AoTlVMTCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmluZm8gPSBPQ19XQUxLTkVYVCB8IFZ4Owo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+ bC5uOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZm9yICg7OykgKi8KPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX25vZGUo T0NfRVhFQyB8IFZ4KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbi0+bC5uID0gbjI7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG4yID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjMgPSBwYXJzZV9leHByKFRDX1JQQVJFTik7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFp bl9sb29wKG4zKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbi0+bC5uID0gbjI7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICghbjIpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5pbmZvID0gT0NfRVhFQzsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIE9DX1BSSU5UOgo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgT0NfUFJJTlRGOgo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVz OiBPQ19QUklOVFtGXVxuIiwKPiBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKHRfaW5mbyk7Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IHBhcnNlX2V4cHIo VENfT1BURVJNIHwgVENfT1VUUkRSIHwKPiBUQ19HUlBURVJNKTsKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICYgVENfT1VUUkRSKSB7 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBuLT5pbmZvIHw9IHRfaW5mbzsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPnIubiA9IHBhcnNlX2V4cHIoVENf T1BURVJNIHwKPiBUQ19HUlBURVJNKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19HUlBURVJNKQo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4o KTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gKyvCoMKgwqDCoMKgwqBjYXNlIE9DX1BSSU5UOgo+ICsrwqDCoMKgwqDCoMKgY2FzZSBPQ19Q UklOVEY6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNl KCIlczogT0NfUFJJTlRbRl1cbiIsIF9fZnVuY19fKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBuID0gY2hhaW5fbm9kZSh0X2luZm8pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG4tPmwubiA9IHBhcnNlX2V4cHIoVENfU0VNSUNPTCB8IFRDX05FV0xJTkUgfAo+IFRD X09VVFJEUiB8IFRDX1JCUkFDRSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KHRfdGNsYXNzICYgVENfT1VUUkRSKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG4tPmluZm8gfD0gdF9pbmZvOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5yLm4gPSBwYXJzZV9leHByKFRDX1NFTUlDT0wg fCBUQ19ORVdMSU5FIHwKPiBUQ19SQlJBQ0UpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19S QlJBQ0UpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJv bGxiYWNrX3Rva2VuKCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4g KyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIE9DX0JSRUFLOgo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFy c2UoIiVzOiBPQ19CUkVBS1xuIiwKPiBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX0VYRUMpOwo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5hLm4gPSBicmVha19w dHI7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWlu X2V4cHIodF9pbmZvKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7Cj4gKyvCoMKgwqDCoMKgwqBjYXNlIE9DX0JSRUFLOgo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IE9DX0JSRUFLXG4iLCBf X2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX25vZGUo T0NfRVhFQyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFicmVha19wdHIp Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9l cnJvcigiJ2JyZWFrJyBub3QgaW4gYSBsb29wIik7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbi0+YS5uID0gYnJlYWtfcHRyOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNoYWluX2V4cHIodF9pbmZvKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgT0NfQ09OVElOVUU6 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IE9DX0NPTlRJTlVFXG4iLAo+IF9fZnVuY19fKTsKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX25vZGUoT0NfRVhF Qyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmEu biA9IGNvbnRpbnVlX3B0cjsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8pOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDCoGNhc2UgT0NfQ09OVElO VUU6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogT0NfQ09OVElOVUVcbiIsIF9fZnVuY19fKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuID0gY2hhaW5fbm9kZShPQ19FWEVDKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIWNvbnRpbnVlX3B0cikKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKCInY29udGludWUnIG5vdCBpbiBhIGxvb3AiKTsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5hLm4gPSBjb250aW51ZV9wdHI7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8pOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLyogZGVsZXRlLCBuZXh0LCBuZXh0ZmlsZSwgcmV0dXJuLCBleGl0ICovCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdDoKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogZGVm YXVsdFxuIiwKPiBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYWluX2V4cHIodF9pbmZvKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqAvKiBkZWxldGUsIG5leHQsIG5leHRmaWxlLCByZXR1 cm4sIGV4aXQgKi8KPiArK8KgwqDCoMKgwqDCoGRlZmF1bHQ6Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogZGVmYXVsdFxuIiwgX19mdW5jX18p Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2V4cHIodF9pbmZvKTsKPiAr wqDCoMKgwqDCoMKgwqB9Cj4gKyB9Cj4gKyAKPiArIHN0YXRpYyB2b2lkIHBhcnNlX3Byb2dyYW0o Y2hhciAqcCkKPiArIHsKPiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IHRjbGFzczsKPiArLcKgwqDC oMKgwqDCoG5vZGUgKmNuOwo+ICstwqDCoMKgwqDCoMKgZnVuYyAqZjsKPiArLcKgwqDCoMKgwqDC oHZhciAqdjsKPiArK8KgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXMoKVxuIiwgX19m dW5jX18pOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgZ19wb3MgPSBwOwo+ICvCoMKgwqDCoMKgwqDC oHRfbGluZW5vID0gMTsKPiArLcKgwqDCoMKgwqDCoHdoaWxlICgodGNsYXNzID0gbmV4dF90b2tl bihUQ19FT0YgfCBUQ19PUFNFUSB8IFRDX0dSUFNUQVJUIHwKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVENfT1BURVJNIHwgVENfQkVHSU4gfCBUQ19FTkQg fCBUQ19GVU5DREVDTCkpCj4gIT0gVENfRU9GKSB7Cj4gKyvCoMKgwqDCoMKgwqBmb3IgKDs7KSB7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3QgdGNsYXNzOwo+ICsgCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFzcyAmIFRDX09QVEVSTSkgewo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfcGFyc2UoIiVzOiBUQ19PUFRFUk1cbiIsCj4gX19mdW5jX18pOwo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRjbGFzcyA9IG5leHRfdG9rZW4oVFNfT1BTRVEgfCBUQ19MQlJBQ0Ug fCBUQ19CRUdJTiB8Cj4gVENfRU5EIHwgVENfRlVOQ0RFQ0wKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19FT0YgfCBUQ19ORVdMSU5FIC8qIGJ1dCBu b3QgVENfU0VNSUNPTAo+ICovKTsKPiArKyBnb3RfdG9rOgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICh0Y2xhc3MgPT0gVENfRU9GKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0VPRlxu IiwgX19mdW5jX18pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFzcyA9PSBUQ19ORVdMSU5FKSB7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6IFRDX05FV0xJTkVcbiIsCj4gX19mdW5jX18pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0KPiArLQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNlcSA9 ICZtYWluc2VxOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0Y2xhc3MgJiBU Q19CRUdJTikgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0Y2xhc3MgPT0g VENfQkVHSU4pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0JFR0lOXG4iLAo+IF9fZnVuY19fKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNlcSA9ICZiZWdp bnNlcTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hh aW5fZ3JvdXAoKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHRj bGFzcyAmIFRDX0VORCkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBlbnN1cmUgdGhlcmUgaXMgbm8gbmV3bGluZSBiZXR3ZWVuIEJFR0lOCj4gYW5k IHsgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4 dF90b2tlbihUQ19MQlJBQ0UpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjaGFpbl91bnRpbF9yYnJhY2UoKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBuZXh0X3RvazsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFz cyA9PSBUQ19FTkQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0VORFxuIiwgX19mdW5jX18pOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VxID0gJmVuZHNl cTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5f Z3JvdXAoKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHRjbGFz cyAmIFRDX0ZVTkNERUNMKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIGVuc3VyZSB0aGVyZSBpcyBubyBuZXdsaW5lIGJldHdlZW4gRU5EIGFuZAo+ IHsgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4 dF90b2tlbihUQ19MQlJBQ0UpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjaGFpbl91bnRpbF9yYnJhY2UoKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBuZXh0X3RvazsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFz cyA9PSBUQ19GVU5DREVDTCkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBmdW5jICpmOwo+ICsrCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19GVU5DREVDTFxuIiwK PiBfX2Z1bmNfXyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuZXh0X3Rva2VuKFRDX0ZVTkNUSU9OKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZ19wb3MrKzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGYgPSBuZXdmdW5jKHRfc3RyaW5nKTsKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZi0+Ym9keS5maXJzdCA9IE5VTEw7 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGYtPm5hcmdz ID0gMDsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog TWF0Y2ggZnVuYyBhcmcgbGlzdDogYSBjb21tYSBzZXAgbGlzdCBvZgo+ID49IDAgYXJncywgYW5k IGEgY2xvc2UgcGFyZW4gKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgd2hpbGUgKG5leHRfdG9rZW4oVENfVkFSSUFCTEUgfCBUQ19TRVFURVJNIHwKPiBU Q19DT01NQSkpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIEVpdGhlciBhbiBlbXB0eSBhcmcgbGlzdCwgb3IKPiB0cmFp bGluZyBjb21tYSBmcm9tIHByZXYgaXRlcgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogbXVzdCBiZSBmb2xsb3dlZCBieSBh biBhcmcgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChmLT5uYXJncyA9PSAwICYmIHRfdGNsYXNzID09Cj4gVENfU0VR VEVSTSkKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArLQo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVENfU0VR U1RBUlQvVENfQ09NTUEgbXVzdCBiZQo+IGZvbGxvd2VkIGJ5IFRDX1ZBUklBQkxFICovCj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAodF90Y2xhc3MgIT0gVENfVkFSSUFCTEUpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChmLT5kZWZpbmVkKQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9y KCJEdXBsaWNhdGUgZnVuY3Rpb24iKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZi0+ZGVmaW5lZCA9IDE7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8vZi0+Ym9keS5maXJzdCA9IE5VTEw7IC0gYWxyZWFkeSBp cwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvL2YtPm5h cmdzID0gMDsgLSBhbHJlYWR5IGlzCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qIGZ1bmMgYXJnIGxpc3Q6IGNvbW1hIHNlcCBsaXN0IG9mIGFyZ3MsIGFu ZAo+IGEgY2xvc2UgcGFyZW4gKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZm9yICg7Oykgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICp2Owo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG5leHRfdG9r ZW4oVENfVkFSSUFCTEUgfAo+IFRDX1JQQVJFTikgPT0gVENfUlBBUkVOKSB7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGYtPm5hcmdzID09IDApCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGJyZWFrOyAvKiBmdW5jKCkgaXMKPiBvayAqLwo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qIGZ1bmMoYSwpIGlzIG5vdCBvayAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz eW50YXhfZXJyb3IoRU1TR19VTkVYUF9UT0tFTgo+ICk7Cj4gKy0KPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 ID0gZmluZHZhcihhaGFzaCwgdF9zdHJpbmcpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnguYWlkeCA9IGYtPm5hcmdz Kys7Cj4gKy0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiBBcmcgZm9sbG93ZWQgZWl0aGVyIGJ5IGVuZCBvZiBhcmcKPiBs aXN0IG9yIDEgY29tbWEgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChuZXh0X3Rva2VuKFRDX0NPTU1BIHwgVENfU0VR VEVSTSkKPiAmIFRDX1NFUVRFUk0pCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobmV4dF90b2tlbihUQ19DT01NQSB8IFRD X1JQQVJFTikKPiA9PSBUQ19SUEFSRU4pCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHRfdGNsYXNzICE9IFRDX0NPTU1BKQo+ICstCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHN5bnRheF9lcnJvcihFTVNHX1VORVhQX1RPS0VOKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGl0IHdhcyBhIGNvbW1h LCB3ZSBhdGUgaXQgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHNlcSA9ICZmLT5ib2R5Owo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjaGFpbl9ncm91cCgpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShhaGFzaCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfSBlbHNlIGlmICh0Y2xhc3MgJiBUQ19PUFNFUSkgewo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBU Q19PUFNFUVxuIiwKPiBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIGVuc3VyZSB0aGVyZSBpcyB7IGFmdGVyICJmdW5jIEYoLi4uKSIg LQo+IGJ1dCBuZXdsaW5lcyBhcmUgYWxsb3dlZCAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAobmV4dF90b2tlbihUQ19MQlJBQ0UgfCBUQ19O RVdMSU5FKSA9PQo+IFRDX05FV0xJTkUpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fdW50aWxfcmJyYWNlKCk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfY2xlYXIo YWhhc2gpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBn b3RvIG5leHRfdG9rOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXEgPSAmbWFpbnNlcTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAodGNsYXNzICYgVFNfT1BTRVEpIHsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbm9kZSAqY247Cj4gKysKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogVFNfT1BTRVFcbiIsCj4gX19mdW5jX18pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuID0gY2hhaW5fbm9kZShPQ19URVNUKTsK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9 IHBhcnNlX2V4cHIoVENfT1BURVJNIHwgVENfRU9GIHwKPiBUQ19HUlBTVEFSVCk7Cj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAmIFRD X0dSUFNUQVJUKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+IFRDX0dSUFNUQVJU XG4iLCBfX2Z1bmNfXyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3Jv dXAoKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24t PmwubiA9IHBhcnNlX2V4cHIoVENfU0VNSUNPTCB8IFRDX05FV0xJTkUKPiB8IFRDX0VPRiB8IFRD X0xCUkFDRSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICh0X3RjbGFzcyA9PSBUQ19MQlJBQ0UpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgi JXM6IFRDX0xCUkFDRVxuIiwKPiBfX2Z1bmNfXyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl91bnRpbF9yYnJhY2Uo KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxz ZSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+ICFUQ19HUlBTVEFSVFxuIiwgX19m dW5jX18pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogbm8gYWN0aW9uLCBhc3N1bWUgZGVmYXVsdCAieyBwcmludAo+IH0i ICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+ICFUQ19MQlJBQ0VcbiIsIF9fZnVu Y19fKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjaGFpbl9ub2RlKE9DX1BSSU5UKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5yLm4gPSBtYWluc2VxLmxhc3Q7Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIC8qIGlmICh0Y2xhc3MgJiBUQ19HUlBTVEFSVCkg Ki8gewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOiBUQ19HUlBTVEFSVCg/KVxuIiwKPiBfX2Z1bmNfXyk7Cj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rva2Vu KCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWlu X2dyb3VwKCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gbmV4dF90b2s7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArLcKg wqDCoMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0VP RlxuIiwgX19mdW5jX18pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHRjbGFz cyA9PSBUQ19MQlJBQ0UgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19w cmludGZfcGFyc2UoIiVzOiBUQ19MQlJBQ0UoPylcbiIsIF9fZnVuY19fKTsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl91bnRpbF9yYnJhY2UoKTsKPiArKyBuZXh0X3RvazoK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBTYW1lIGFzIG5leHRfdG9rZW4oKSBh dCB0aGUgdG9wIG9mIHRoZSBsb29wLCArCj4gVENfU0VNSUNPTCAqLwo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRjbGFzcyA9IG5leHRfdG9rZW4oVFNfT1BTRVEgfCBUQ19MQlJBQ0Ug fCBUQ19CRUdJTiB8Cj4gVENfRU5EIHwgVENfRlVOQ0RFQ0wKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19FT0YgfCBUQ19ORVdMSU5FIHwgVENfU0VN SUNPTCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZ2F3ayBhbGxvd3MgbWFu eSBuZXdsaW5lcywgYnV0IGRvZXMgbm90IGFsbG93IG1vcmUKPiB0aGFuIG9uZSBzZW1pY29sb246 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoCBCRUdJTiB7Li4ufTxuZXdsaW5l Pjs8bmV3bGluZT47Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogd291bGQgY29t cGxhaW4gImVhY2ggcnVsZSBtdXN0IGhhdmUgYSBwYXR0ZXJuIG9yCj4gYW4gYWN0aW9uIHBhcnQi Lgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFNhbWUgbWVzc2FnZSBmb3IKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgIDsgQkVHSU4gey4uLn0KPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAodGNsYXNzICE9IFRDX1NFTUlDT0wpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZ290X3RvazsgLyogdXNlIHRoaXMgdG9rZW4gKi8KPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBlbHNlOiBsb29wIGJhY2sgLSBhdGUgdGhl IHNlbWljb2xvbiwgZ2V0IGFuZCB1c2UKPiBfbmV4dF8gdG9rZW4gKi8KPiArK8KgwqDCoMKgwqDC oH0gLyogZm9yICg7OykgKi8KPiArIH0KPiArIAo+ICstCj4gKyAvKiAtLS0tLS0tLSBwcm9ncmFt IGV4ZWN1dGlvbiBwYXJ0IC0tLS0tLS0tICovCj4gKyAKPiArKy8qIHRlbXBvcmFyeSB2YXJpYWJs ZXMgYWxsb2NhdG9yICovCj4gKytzdGF0aWMgdmFyICpudmFsbG9jKGludCBzeikKPiArK3sKPiAr K8KgwqDCoMKgwqDCoHJldHVybiB4emFsbG9jKHN6ICogc2l6ZW9mKHZhcikpOwo+ICsrfQo+ICsr Cj4gKytzdGF0aWMgdm9pZCBudmZyZWUodmFyICp2LCBpbnQgc3opCj4gKyt7Cj4gKyvCoMKgwqDC oMKgwqB2YXIgKnAgPSB2Owo+ICsrCj4gKyvCoMKgwqDCoMKgwqB3aGlsZSAoLS1zeiA+PSAwKSB7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChwLT50eXBlICYgKFZGX0FSUkFZ IHwgVkZfQ0hJTEQpKSA9PSBWRl9BUlJBWSkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShpYW1hcnJheShwKSk7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUocC0+eC5hcnJheS0+aXRl bXMpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVl KHAtPnguYXJyYXkpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocC0+dHlwZSAmIFZGX1dBTEspIHsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2Fsa2VyX2xpc3QgKm47Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdhbGtlcl9saXN0 ICp3ID0gcC0+eC53YWxrZXI7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl93YWxrZXIoIm52ZnJlZTogZnJlZWluZyB3YWxrZXIKPiBA JXBcbiIsICZwLT54LndhbGtlcik7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHAtPngud2Fsa2VyID0gTlVMTDsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKHcpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSB3LT5wcmV2Owo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX3dhbGtlcigiIGZyZWUoJXApXG4iLAo+IHcpOwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJl ZSh3KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHcgPSBuOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNscnZhcihwKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBwKys7Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gKysKPiArK8KgwqDCoMKgwqDCoGZyZWUo dik7Cj4gKyt9Cj4gKysKPiArIHN0YXRpYyBub2RlICpta19zcGxpdHRlcihjb25zdCBjaGFyICpz LCB0c3BsaXR0ZXIgKnNwbCkKPiArIHsKPiArwqDCoMKgwqDCoMKgwqByZWdleF90ICpyZSwgKmly ZTsKPiArQEAgLTE2ODYsNyArMTg0OCw3IEBAIHN0YXRpYyBub2RlICpta19zcGxpdHRlcihjb25z dCBjaGFyICpzLAo+IHRzcGxpdHRlciAqc3BsKQo+ICvCoMKgwqDCoMKgwqDCoHJlID0gJnNwbC0+ cmVbMF07Cj4gK8KgwqDCoMKgwqDCoMKgaXJlID0gJnNwbC0+cmVbMV07Cj4gK8KgwqDCoMKgwqDC oMKgbiA9ICZzcGwtPm47Cj4gKy3CoMKgwqDCoMKgwqBpZiAoKG4tPmluZm8gJiBPUENMU01BU0sp ID09IE9DX1JFR0VYUCkgewo+ICsrwqDCoMKgwqDCoMKgaWYgKG4tPmluZm8gPT0gVElfUkVHRVhQ KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ2ZyZWUocmUpOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdmcmVlKGlyZSk7IC8vIFRPRE86IG51a2UgaXJl LCB1c2UgcmUrMT8KPiArwqDCoMKgwqDCoMKgwqB9Cj4gK0BAIC0xNjk5LDIxICsxODYxLDI4IEBA IHN0YXRpYyBub2RlICpta19zcGxpdHRlcihjb25zdCBjaGFyICpzLAo+IHRzcGxpdHRlciAqc3Bs KQo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBuOwo+ICsgfQo+ICsgCj4gKy0vKiB1c2Ugbm9kZSBh cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gU3VwcGxpZWQgd2l0aCBub2RlIHB0ciBhbmQKPiByZWdl eF90Cj4gKytzdGF0aWMgdmFyICpldmFsdWF0ZShub2RlICosIHZhciAqKTsKPiArKwo+ICsrLyog VXNlIG5vZGUgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIFN1cHBsaWVkIHdpdGggbm9kZSBwdHIg YW5kCj4gcmVnZXhfdAo+ICvCoCAqIHN0b3JhZ2Ugc3BhY2UuIFJldHVybiBwdHIgdG8gcmVnZXgg KGlmIHJlc3VsdCBwb2ludHMgdG8gcHJlZywgaXQKPiBzaG91bGQKPiArLSAqIGJlIGxhdGVyIHJl Z2ZyZWUnZCBtYW51YWxseQo+ICsrICogYmUgbGF0ZXIgcmVnZnJlZSdkIG1hbnVhbGx5KS4KPiAr wqAgKi8KPiArIHN0YXRpYyByZWdleF90ICphc19yZWdleChub2RlICpvcCwgcmVnZXhfdCAqcHJl ZykKPiArIHsKPiArwqDCoMKgwqDCoMKgwqBpbnQgY2ZsYWdzOwo+ICstwqDCoMKgwqDCoMKgdmFy ICp2Owo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKnM7Cj4gKyAKPiArLcKgwqDCoMKgwqDC oGlmICgob3AtPmluZm8gJiBPUENMU01BU0spID09IE9DX1JFR0VYUCkgewo+ICsrwqDCoMKgwqDC oMKgaWYgKG9wLT5pbmZvID09IFRJX1JFR0VYUCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gaWNhc2UgPyBvcC0+ci5pcmUgOiBvcC0+bC5yZTsKPiArwqDCoMKgwqDC oMKgwqB9Cj4gKy3CoMKgwqDCoMKgwqB2ID0gbnZhbGxvYygxKTsKPiArLcKgwqDCoMKgwqDCoHMg PSBnZXR2YXJfcyhldmFsdWF0ZShvcCwgdikpOwo+ICsrCj4gKyvCoMKgwqDCoMKgwqAvL3RtcHZh ciA9IG52YWxsb2MoMSk7Cj4gKysjZGVmaW5lIFRNUFZBUiAoJkcuYXNfcmVnZXhfX3RtcHZhcikK PiArK8KgwqDCoMKgwqDCoC8vIFdlIHVzZSBhIHNpbmdsZSAic3RhdGljIiB0bXB2YXIgKGluc3Rl YWQgb2Ygb24tc3RhY2sgb3IKPiBtYWxsb2NlZCBvbmUpCj4gKyvCoMKgwqDCoMKgwqAvLyB0byBk ZWNyZWFzZSBtZW1vcnkgY29uc3VtcHRpb24gaW4gZGVlcGx5LXJlY3Vyc2l2ZSBhd2sKPiBwcm9n cmFtcy4KPiArK8KgwqDCoMKgwqDCoC8vIFRoZSBydWxlIHRvIHdvcmsgc2FmZWx5IGlzIHRvIG5l dmVyIGNhbGwgZXZhbHVhdGUoKSB3aGlsZQo+IG91ciBzdGF0aWMKPiArK8KgwqDCoMKgwqDCoC8v IFRNUFZBUidzIHZhbHVlIGlzIHN0aWxsIG5lZWRlZC4KPiArK8KgwqDCoMKgwqDCoHMgPSBnZXR2 YXJfcyhldmFsdWF0ZShvcCwgVE1QVkFSKSk7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqBjZmxhZ3Mg PSBpY2FzZSA/IFJFR19FWFRFTkRFRCB8IFJFR19JQ0FTRSA6IFJFR19FWFRFTkRFRDsKPiArwqDC oMKgwqDCoMKgwqAvKiBUZXN0Y2FzZSB3aGVyZSBSRUdfRVhURU5ERUQgZmFpbHMgKHVucGFpcmVk ICd7Jyk6Cj4gK0BAIC0xNzI1LDcgKzE4OTQsOCBAQCBzdGF0aWMgcmVnZXhfdCAqYXNfcmVnZXgo bm9kZSAqb3AsIHJlZ2V4X3QKPiAqcHJlZykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2ZsYWdzICY9IH5SRUdfRVhURU5ERUQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHhyZWdjb21wKHByZWcsIHMsIGNmbGFncyk7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICstwqDC oMKgwqDCoMKgbnZmcmVlKHYpOwo+ICsrwqDCoMKgwqDCoMKgLy9udmZyZWUodG1wdmFyLCAxKTsK PiArKyN1bmRlZiBUTVBWQVIKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcHJlZzsKPiArIH0KPiAr IAo+ICtAQCAtMTc0NSwxMiArMTkxNSwyMiBAQCBzdGF0aWMgY2hhciogcXJlYWxsb2MoY2hhciAq YiwgaW50IG4sIGludAo+ICpzaXplKQo+ICsgLyogcmVzaXplIGZpZWxkIHN0b3JhZ2Ugc3BhY2Ug Ki8KPiArIHN0YXRpYyB2b2lkIGZzcmVhbGxvYyhpbnQgc2l6ZSkKPiArIHsKPiArLcKgwqDCoMKg wqDCoGludCBpOwo+ICsrwqDCoMKgwqDCoMKgaW50IGksIG5ld3NpemU7Cj4gKyAKPiArwqDCoMKg wqDCoMKgwqBpZiAoc2l6ZSA+PSBtYXhmaWVsZHMpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBTYW5pdHkgY2FwLCBlYXNpZXIgdGhhbiBjYXRlcmluZyBmb3Igb3ZlcmZsb3dz ICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHNpemUgPiAweGZmZmZmZikK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmJfZGllX21l bW9yeV9leGhhdXN0ZWQoKTsKPiArKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ID0gbWF4ZmllbGRzOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYXhmaWVsZHMg PSBzaXplICsgMTY7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRmllbGRzID0geHJl YWxsb2MoRmllbGRzLCBtYXhmaWVsZHMgKgo+IHNpemVvZihGaWVsZHNbMF0pKTsKPiArKwo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ld3NpemUgPSBtYXhmaWVsZHMgKiBzaXplb2Yo RmllbGRzWzBdKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf ZXZhbCgiZnNyZWFsbG9jOiB4cmVhbGxvYyglcCwgJXUpXG4iLAo+IEZpZWxkcywgbmV3c2l6ZSk7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRmllbGRzID0geHJlYWxsb2MoRmllbGRz LCBuZXdzaXplKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf ZXZhbCgiZnNyZWFsbG9jOiBGaWVsZHM9JXAuLiVwXG4iLAo+IEZpZWxkcywgKGNoYXIqKUZpZWxk cyArIG5ld3NpemUgLSAxKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBeXl4g ZGlkIEZpZWxkc1tdIG1vdmU/IGRlYnVnIGFpZCBmb3IgTC52IGdldHRpbmcKPiAidXBzdGFnZWQi IGJ5IFIudiBpbiBldmFsdWF0ZSgpICovCj4gKysKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZm9yICg7IGkgPCBtYXhmaWVsZHM7IGkrKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRmllbGRzW2ldLnR5cGUgPSBWRl9TUEVDSUFMOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRmllbGRzW2ld LnN0cmluZyA9IE5VTEw7Cj4gK0BAIC0xODAyLDEzICsxOTgyLDEzIEBAIHN0YXRpYyBpbnQgYXdr X3NwbGl0KGNvbnN0IGNoYXIgKnMsIG5vZGUKPiAqc3BsLCBjaGFyICoqc2xpc3QpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNbMl0gPSAnXG4nOwo+ICsgCj4gK8KgwqDCoMKgwqDC oMKgbiA9IDA7Cj4gKy3CoMKgwqDCoMKgwqBpZiAoKHNwbC0+aW5mbyAmIE9QQ0xTTUFTSykgPT0g T0NfUkVHRVhQKSB7wqAgLyogcmVnZXggc3BsaXQKPiAqLwo+ICsrwqDCoMKgwqDCoMKgaWYgKHNw bC0+aW5mbyA9PSBUSV9SRUdFWFApIHvCoCAvKiByZWdleCBzcGxpdCAqLwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoISpzKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIG47IC8qICIiOiB6ZXJvIGZpZWxkcyAqLwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuKys7IC8qIGF0IGxlYXN0IG9uZSBmaWVsZCB3 aWxsIGJlIHRoZXJlICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRvIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCBsOwo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdtYXRjaF90IHBt YXRjaFsyXTsgLy8gVE9ETzogd2h5IFsyXT8gWzFdCj4gaXMgZW5vdWdoLi4uCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ21hdGNoX3QgcG1hdGNoWzFd Owo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBs ID0gc3RyY3NwbihzLCBjKzIpOyAvKiBsZW4gdGlsbCBuZXh0IE5VTCBvcgo+IFxuICovCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmVnZXhlYzFf bm9uZW1wdHkoaWNhc2UgPyBzcGwtPnIuaXJlIDoKPiBzcGwtPmwucmUsIHMsIHBtYXRjaCkgPT0g MAo+ICtAQCAtMTk2OSw3ICsyMTQ5LDcgQEAgc3RhdGljIG5vZGUgKm5leHRhcmcobm9kZSAqKnBu KQo+ICvCoMKgwqDCoMKgwqDCoG5vZGUgKm47Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqBuID0gKnBu Owo+ICstwqDCoMKgwqDCoMKgaWYgKG4gJiYgKG4tPmluZm8gJiBPUENMU01BU0spID09IE9DX0NP TU1BKSB7Cj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmJiBuLT5pbmZvID09IFRJX0NPTU1BKSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpwbiA9IG4tPnIubjsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IG4tPmwubjsKPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ug ewo+ICtAQCAtMjAwMCw4ICsyMTgwLDcgQEAgc3RhdGljIHZvaWQgaGFzaHdhbGtfaW5pdCh2YXIg KnYsIHhoYXNoCj4gKmFycmF5KQo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBhcnJh eS0+Y3NpemU7IGkrKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9IGFy cmF5LT5pdGVtc1tpXTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKGhp KSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cmNw eSh3LT5lbmQsIGhpLT5uYW1lKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbmV4dHdvcmQoJnctPmVuZCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHctPmVuZCA9IHN0cGNweSh3LT5lbmQsIGhpLT5uYW1lKSAr IDE7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9 IGhpLT5uZXh0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKg wqDCoMKgfQo+ICtAQCAtMjAyNywxNSArMjIwNiwxOCBAQCBzdGF0aWMgaW50IGhhc2h3YWxrX25l eHQodmFyICp2KQo+ICsgLyogZXZhbHVhdGUgbm9kZSwgcmV0dXJuIDEgd2hlbiByZXN1bHQgaXMg dHJ1ZSwgMCBvdGhlcndpc2UgKi8KPiArIHN0YXRpYyBpbnQgcHRlc3Qobm9kZSAqcGF0dGVybikK PiArIHsKPiArLcKgwqDCoMKgwqDCoC8qIHB0ZXN0X192IGlzICJzdGF0aWMiOiB0byBzYXZlIHN0 YWNrIHNwYWNlPyAqLwo+ICstwqDCoMKgwqDCoMKgcmV0dXJuIGlzdHJ1ZShldmFsdWF0ZShwYXR0 ZXJuLCAmRy5wdGVzdF9fdikpOwo+ICsrwqDCoMKgwqDCoMKgLy8gV2UgdXNlIGEgc2luZ2xlICJz dGF0aWMiIHRtcHZhciAoaW5zdGVhZCBvZiBvbi1zdGFjayBvcgo+IG1hbGxvY2VkIG9uZSkKPiAr K8KgwqDCoMKgwqDCoC8vIHRvIGRlY3JlYXNlIG1lbW9yeSBjb25zdW1wdGlvbiBpbiBkZWVwbHkt cmVjdXJzaXZlIGF3awo+IHByb2dyYW1zLgo+ICsrwqDCoMKgwqDCoMKgLy8gVGhlIHJ1bGUgdG8g d29yayBzYWZlbHkgaXMgdG8gbmV2ZXIgY2FsbCBldmFsdWF0ZSgpIHdoaWxlCj4gb3VyIHN0YXRp Ywo+ICsrwqDCoMKgwqDCoMKgLy8gVE1QVkFSJ3MgdmFsdWUgaXMgc3RpbGwgbmVlZGVkLgo+ICsr wqDCoMKgwqDCoMKgcmV0dXJuIGlzdHJ1ZShldmFsdWF0ZShwYXR0ZXJuLCAmRy5wdGVzdF9fdG1w dmFyKSk7Cj4gKyB9Cj4gKyAKPiArIC8qIHJlYWQgbmV4dCByZWNvcmQgZnJvbSBzdHJlYW0gcnNt IGludG8gYSB2YXJpYWJsZSB2ICovCj4gKyBzdGF0aWMgaW50IGF3a19nZXRsaW5lKHJzdHJlYW0g KnJzbSwgdmFyICp2KQo+ICsgewo+ICvCoMKgwqDCoMKgwqDCoGNoYXIgKmI7Cj4gKy3CoMKgwqDC oMKgwqByZWdtYXRjaF90IHBtYXRjaFsyXTsgLy8gVE9ETzogd2h5IFsyXT8gWzFdIGlzIGVub3Vn aC4uLgo+ICsrwqDCoMKgwqDCoMKgcmVnbWF0Y2hfdCBwbWF0Y2hbMV07Cj4gK8KgwqDCoMKgwqDC oMKgaW50IHNpemUsIGEsIHAsIHBwID0gMDsKPiArwqDCoMKgwqDCoMKgwqBpbnQgZmQsIHNvLCBl bywgciwgcnA7Cj4gK8KgwqDCoMKgwqDCoMKgY2hhciBjLCAqbSwgKnM7Cj4gK0BAIC0yMDYxLDcg KzIyNDMsNyBAQCBzdGF0aWMgaW50IGF3a19nZXRsaW5lKHJzdHJlYW0gKnJzbSwgdmFyICp2KQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbyA9IGVvID0gcDsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgciA9IDE7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChwID4gMCkgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoKHJzcGxpdHRlci5uLmluZm8gJiBPUENMU01BU0spID09Cj4gT0NfUkVHRVhQ KSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChy c3BsaXR0ZXIubi5pbmZvID09IFRJX1JFR0VYUCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZWdleGVjKGljYXNl ID8gcnNwbGl0dGVyLm4uci5pcmUKPiA6IHJzcGxpdHRlci5uLmwucmUsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYiwgMSwgcG1hdGNoLAo+ IDApID09IDApIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc28gPSBwbWF0Y2hbMF0ucm1fc287 Cj4gK0BAIC0yMTMzLDgyICsyMzE1LDEyNiBAQCBzdGF0aWMgaW50IGF3a19nZXRsaW5lKHJzdHJl YW0gKnJzbSwgdmFyCj4gKnYpCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHI7Cj4gKyB9Cj4gKyAK PiArLXN0YXRpYyBpbnQgZm10X251bShjaGFyICpiLCBpbnQgc2l6ZSwgY29uc3QgY2hhciAqZm9y bWF0LCBkb3VibGUgbiwKPiBpbnQgaW50X2FzX2ludCkKPiArLXsKPiArLcKgwqDCoMKgwqDCoGlu dCByID0gMDsKPiArLcKgwqDCoMKgwqDCoGNoYXIgYzsKPiArLcKgwqDCoMKgwqDCoGNvbnN0IGNo YXIgKnMgPSBmb3JtYXQ7Cj4gKy0KPiArLcKgwqDCoMKgwqDCoGlmIChpbnRfYXNfaW50ICYmIG4g PT0gKGxvbmcgbG9uZyluKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgciA9IHNu cHJpbnRmKGIsIHNpemUsICIlbGxkIiwgKGxvbmcgbG9uZyluKTsKPiArLcKgwqDCoMKgwqDCoH0g ZWxzZSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG8geyBjID0gKnM7IH0gd2hp bGUgKGMgJiYgKisrcyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHN0cmNo cigiZGlvdXhYIiwgYykpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgciA9IHNucHJpbnRmKGIsIHNpemUsIGZvcm1hdCwgKGludCluKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHN0cmNocigiZUVmZ0ciLCBjKSkgewo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByID0gc25wcmlu dGYoYiwgc2l6ZSwgZm9ybWF0LCBuKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 IGVsc2Ugewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz eW50YXhfZXJyb3IoRU1TR19JTlZfRk1UKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Cj4gKy3CoMKgwqDCoMKgwqB9Cj4gKy3CoMKgwqDCoMKgwqByZXR1cm4gcjsKPiArLX0KPiAr LQo+ICsgLyogZm9ybWF0dGVkIG91dHB1dCBpbnRvIGFuIGFsbG9jYXRlZCBidWZmZXIsIHJldHVy biBwdHIgdG8gYnVmZmVyCj4gKi8KPiArLXN0YXRpYyBjaGFyICphd2tfcHJpbnRmKG5vZGUgKm4p Cj4gKysjaWYgIUVOQUJMRV9GRUFUVVJFX0FXS19HTlVfRVhURU5TSU9OUwo+ICsrIyBkZWZpbmUg YXdrX3ByaW50ZihhLCBiKSBhd2tfcHJpbnRmKGEpCj4gKysjZW5kaWYKPiArK3N0YXRpYyBjaGFy ICphd2tfcHJpbnRmKG5vZGUgKm4sIHNpemVfdCAqbGVuKQo+ICsgewo+ICstwqDCoMKgwqDCoMKg Y2hhciAqYiA9IE5VTEw7Cj4gKy3CoMKgwqDCoMKgwqBjaGFyICpmbXQsICpzLCAqZjsKPiArLcKg wqDCoMKgwqDCoGNvbnN0IGNoYXIgKnMxOwo+ICstwqDCoMKgwqDCoMKgaW50IGksIGosIGluY3Is IGJzaXplOwo+ICstwqDCoMKgwqDCoMKgY2hhciBjLCBjMTsKPiArLcKgwqDCoMKgwqDCoHZhciAq diwgKmFyZzsKPiArLQo+ICstwqDCoMKgwqDCoMKgdiA9IG52YWxsb2MoMSk7Cj4gKy3CoMKgwqDC oMKgwqBmbXQgPSBmID0geHN0cmR1cChnZXR2YXJfcyhldmFsdWF0ZShuZXh0YXJnKCZuKSwgdikp KTsKPiArLQo+ICsrwqDCoMKgwqDCoMKgY2hhciAqYjsKPiArK8KgwqDCoMKgwqDCoGNoYXIgKmZt dCwgKmY7Cj4gKyvCoMKgwqDCoMKgwqBzaXplX3QgaTsKPiArKwo+ICsrwqDCoMKgwqDCoMKgLy90 bXB2YXIgPSBudmFsbG9jKDEpOwo+ICsrI2RlZmluZSBUTVBWQVIgKCZHLmF3a19wcmludGZfX3Rt cHZhcikKPiArK8KgwqDCoMKgwqDCoC8vIFdlIHVzZSBhIHNpbmdsZSAic3RhdGljIiB0bXB2YXIg KGluc3RlYWQgb2Ygb24tc3RhY2sgb3IKPiBtYWxsb2NlZCBvbmUpCj4gKyvCoMKgwqDCoMKgwqAv LyB0byBkZWNyZWFzZSBtZW1vcnkgY29uc3VtcHRpb24gaW4gZGVlcGx5LXJlY3Vyc2l2ZSBhd2sK PiBwcm9ncmFtcy4KPiArK8KgwqDCoMKgwqDCoC8vIFRoZSBydWxlIHRvIHdvcmsgc2FmZWx5IGlz IHRvIG5ldmVyIGNhbGwgZXZhbHVhdGUoKSB3aGlsZQo+IG91ciBzdGF0aWMKPiArK8KgwqDCoMKg wqDCoC8vIFRNUFZBUidzIHZhbHVlIGlzIHN0aWxsIG5lZWRlZC4KPiArK8KgwqDCoMKgwqDCoGZt dCA9IGYgPSB4c3RyZHVwKGdldHZhcl9zKGV2YWx1YXRlKG5leHRhcmcoJm4pLCBUTVBWQVIpKSk7 Cj4gKyvCoMKgwqDCoMKgwqAvLyBeXl5eXl5eXl4gaGVyZSB3ZSBpbW1lZGlhdGVseSBzdHJkdXAo KSB0aGUgdmFsdWUsIHNvIHRoZQo+IGxhdGVyIGNhbGwKPiArK8KgwqDCoMKgwqDCoC8vIHRvIGV2 YWx1YXRlKCkgcG90ZW50aWFsbHkgcmVjdXJzaW5nIGludG8gYW5vdGhlcgo+IGF3a19wcmludGYo KSBjYW4ndAo+ICsrwqDCoMKgwqDCoMKgLy8gbWFuZ2xlIHRoZSB2YWx1ZS4KPiArKwo+ICsrwqDC oMKgwqDCoMKgYiA9IE5VTEw7Cj4gK8KgwqDCoMKgwqDCoMKgaSA9IDA7Cj4gKy3CoMKgwqDCoMKg wqB3aGlsZSAoKmYpIHsKPiArK8KgwqDCoMKgwqDCoHdoaWxlICgxKSB7IC8qICJwcmludCBvbmUg Zm9ybWF0IHNwZWMiIGxvb3AgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFy ICpzOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgYzsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyIHN2Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHZhciAqYXJnOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNpemVfdCBzbGVu Owo+ICsrCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogRmluZCBlbmQgb2YgdGhl IG5leHQgZm9ybWF0IHNwZWMsIG9yIGVuZCBvZiBsaW5lCj4gKi8KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcyA9IGY7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hp bGUgKCpmICYmICgqZiAhPSAnJScgfHwgKisrZiA9PSAnJScpKQo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmKys7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgd2hpbGUgKCpmICYmICFpc2FscGhhKCpmKSkgewo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKmYgPT0gJyonKQo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4 X2Vycm9yKCIlKnggZm9ybWF0cyBhcmUgbm90Cj4gc3VwcG9ydGVkIik7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKDEpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYyA9ICpmOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWMpIC8qIG5vIHBlcmNlbnQgY2hhcnMgZm91bmQgYXQg YWxsICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnb3RvIG51bDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGYrKzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGMgPT0gJyUnKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiArLQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlu Y3IgPSAoZiAtIHMpICsgTUFYVkFSRk1UOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGIgPSBxcmVhbGxvYyhiLCBpbmNyICsgaSwgJmJzaXplKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAvKiB3ZSBhcmUgcGFzdCAlIGluICIuLi4uJS4uLiIgKi8KPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYyA9ICpmOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChjICE9ICdcMCcpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFj KSAvKiAiLi4uLiUiICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gbnVsOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjID09 ICclJykgeyAvKiAiLi4uLiUlLi4uLiIgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2xlbiA9IGYgLSBzOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0geHN0cm5kdXAocywgc2xlbik7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmKys7Cj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYzEgPSAqZjsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBhcHBlbmQ7IC8qIHByaW50ICIuLi4uJSIgcGFydCB2ZXJi YXRpbQo+ICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgxKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpc2FscGhhKGMpKQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjID09ICcqJykK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN5bnRheF9lcnJvcigiJSp4IGZvcm1hdHMgYXJlIG5vdAo+IHN1cHBvcnRlZCIpOwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjID0gKisrZjsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjKSB7 IC8qICIuLi4uJS4uLi4iIGFuZCBubyBsZXR0ZXIgZm91bmQKPiBhZnRlciAlICovCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBFeGFtcGxlOiBhd2sgJ0JFR0lOIHsgcHJpbnRmCj4gIl5eXiVeXl5cbiI7IH0nICovCj4gKysg bnVsOgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc2xlbiA9IGYgLSBzOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB0YWlsOyAvKiBwcmludCByZW1h aW5pbmcgc3RyaW5nLAo+IGV4aXQgbG9vcCAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHdlIGFyZSBhdCBBIGluICIuLi4uJS4u LkEuLi4iICovCj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhcmcgPSBldmFs dWF0ZShuZXh0YXJnKCZuKSwgVE1QVkFSKTsKPiArKwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qIFJlc3VsdCBjYW4gYmUgYXJiaXRyYXJpbHkgbG9uZy4gRXhhbXBsZToKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgIHByaW50ZiAiJTk5OTk5cyIsICJCT09NIgo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN2ID0gKisrZjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmYg PSAnXDAnOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFyZyA9IGV2YWx1YXRlKG5l eHRhcmcoJm4pLCB2KTsKPiArLQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGogPSBp Owo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjID09ICdjJyB8fCAhYykgewo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpICs9IHNwcmlu dGYoYitpLCBzLCBpc19udW1lcmljKGFyZykgPwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChjaGFy KWdldHZhcl9pKGFyZykgOgo+ICpnZXR2YXJfcyhhcmcpKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9IGVsc2UgaWYgKGMgPT0gJ3MnKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMxID0gZ2V0dmFyX3MoYXJnKTsKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYiA9IHFyZWFsbG9jKGIsIGluY3Ir aStzdHJsZW4oczEpLCAmYnNpemUpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpICs9IHNwcmludGYoYitpLCBzLCBzMSk7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGMgPT0gJ2MnKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgY2MgPSBpc19udW1lcmljKGFyZykgPyBnZXR2YXJf aShhcmcpIDoKPiAqZ2V0dmFyX3MoYXJnKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqciA9IHhhc3ByaW50ZihzLCBjYyA/IGNjIDogJ14nIC8q IGVsc2UKPiBzdHJsZW4gd2lsbCBiZSB3cm9uZyAqLyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNsZW4gPSBzdHJsZW4ocik7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjYyA9PSAnXDAnKSAvKiBpZiBj YyBpcyBOVUwsIHJlLWZvcm1hdAo+IHRoZSBzdHJpbmcgd2l0aCBpdCAqLwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ByaW50 ZihyLCBzLCBjYyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHMgPSByOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpICs9IGZtdF9udW0o YitpLCBpbmNyLCBzLCBnZXR2YXJfaShhcmcpLAo+IEZBTFNFKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMgPT0gJ3MnKSB7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0g eGFzcHJpbnRmKHMsIGdldHZhcl9zKGFyZykpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG91YmxlIGQgPSBnZXR2YXJfaShh cmcpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKHN0cmNocigiZGlvdXhYIiwgYykpIHsKPiArKy8vVE9ETzogbWFrZSBp dCB3aWRlciBoZXJlICgleCAtPiAlbGx4IGV0Yyk/Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcyA9 IHhhc3ByaW50ZihzLCAoaW50KWQpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIGlmIChzdHJjaHIoImVFZkZnR2FB IiwgYykpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0geGFzcHJpbnRmKHMsIGQpOwo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfSBlbHNlIHsKPiArKy8vVE9ETzogR05VIEF3ayA1LjAuMTogcHJpbnRmICIlVyIgcHJpbnRz ICIlVyIsIGRvZXMgbm90IGVycm9yIG91dAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9l cnJvcihFTVNHX0lOVl9GTVQpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHNsZW4gPSBzdHJsZW4ocyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZiA9IGMxOwo+ICstCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaWYgdGhlcmUgd2FzIGFuIGVycm9yIHdo aWxlIHNwcmludGYsIHJldHVybiB2YWx1ZQo+IGlzIG5lZ2F0aXZlICovCj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKGkgPCBqKQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpID0gajsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAqZiA9IHN2Owo+ICsrIGFwcGVuZDoKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoaSA9PSAwKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGIgPSBzOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpID0gc2xlbjsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29udGludWU7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrIHRhaWw6 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYiA9IHhyZWFsbG9jKGIsIGkgKyBzbGVu ICsgMSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RyY3B5KGIgKyBpLCBzKTsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpICs9IHNsZW47Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjKSAvKiBzIGlzIE5PVCBhbGxvY2F0ZWQgYW5kIHRoaXMg aXMgdGhlIGxhc3QKPiBwYXJ0IG9mIHN0cmluZz8gKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZnJlZShzKTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqBm cmVlKGZtdCk7Cj4gKy3CoMKgwqDCoMKgwqBudmZyZWUodik7Cj4gKy3CoMKgwqDCoMKgwqBiID0g eHJlYWxsb2MoYiwgaSArIDEpOwo+ICstwqDCoMKgwqDCoMKgYltpXSA9ICdcMCc7Cj4gKyvCoMKg wqDCoMKgwqAvL252ZnJlZSh0bXB2YXIsIDEpOwo+ICsrI3VuZGVmIFRNUFZBUgo+ICsrCj4gKysj aWYgRU5BQkxFX0ZFQVRVUkVfQVdLX0dOVV9FWFRFTlNJT05TCj4gKyvCoMKgwqDCoMKgwqBpZiAo bGVuKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpsZW4gPSBpOwo+ICsrI2VuZGlm Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGI7Cj4gKyB9Cj4gKyAKPiArQEAgLTIzMzgsMzMgKzI1 NjQsNTkgQEAgc3RhdGljIE5PSU5MSU5FIGludCBkb19ta3RpbWUoY29uc3QgY2hhcgo+ICpkcykK PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gbWt0aW1lKCZ0aGVuKTsKPiArIH0KPiArIAo+ICsrLyog UmVkdWNlIHN0YWNrIHVzYWdlIGluIGV4ZWNfYnVpbHRpbigpIGJ5IGtlZXBpbmcgbWF0Y2goKSBj b2RlCj4gc2VwYXJhdGUgKi8KPiArK3N0YXRpYyBOT0lOTElORSB2YXIgKmRvX21hdGNoKG5vZGUg KmFuMSwgY29uc3QgY2hhciAqYXMwKQo+ICsrewo+ICsrwqDCoMKgwqDCoMKgcmVnbWF0Y2hfdCBw bWF0Y2hbMV07Cj4gKyvCoMKgwqDCoMKgwqByZWdleF90IHNyZWcsICpyZTsKPiArK8KgwqDCoMKg wqDCoGludCBuLCBzdGFydCwgbGVuOwo+ICsrCj4gKyvCoMKgwqDCoMKgwqByZSA9IGFzX3JlZ2V4 KGFuMSwgJnNyZWcpOwo+ICsrwqDCoMKgwqDCoMKgbiA9IHJlZ2V4ZWMocmUsIGFzMCwgMSwgcG1h dGNoLCAwKTsKPiArK8KgwqDCoMKgwqDCoGlmIChyZSA9PSAmc3JlZykKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZWdmcmVlKHJlKTsKPiArK8KgwqDCoMKgwqDCoHN0YXJ0ID0gMDsK PiArK8KgwqDCoMKgwqDCoGxlbiA9IC0xOwo+ICsrwqDCoMKgwqDCoMKgaWYgKG4gPT0gMCkgewo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0YXJ0ID0gcG1hdGNoWzBdLnJtX3NvICsg MTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsZW4gPSBwbWF0Y2hbMF0ucm1fZW8g LSBwbWF0Y2hbMF0ucm1fc287Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqBzZXR2 YXJfaShuZXd2YXIoIlJMRU5HVEgiKSwgbGVuKTsKPiArK8KgwqDCoMKgwqDCoHJldHVybiBzZXR2 YXJfaShuZXd2YXIoIlJTVEFSVCIpLCBzdGFydCk7Cj4gKyt9Cj4gKysKPiArKy8qIFJlZHVjZSBz dGFjayB1c2FnZSBpbiBldmFsdWF0ZSgpIGJ5IGtlZXBpbmcgYnVpbHRpbnMnIGNvZGUKPiBzZXBh cmF0ZSAqLwo+ICsgc3RhdGljIE5PSU5MSU5FIHZhciAqZXhlY19idWlsdGluKG5vZGUgKm9wLCB2 YXIgKnJlcykKPiArIHsKPiArICNkZWZpbmUgdHNwbCAoRy5leGVjX2J1aWx0aW5fX3RzcGwpCj4g KyAKPiArLcKgwqDCoMKgwqDCoHZhciAqdHY7Cj4gKyvCoMKgwqDCoMKgwqB2YXIgKnRtcHZhcnM7 Cj4gK8KgwqDCoMKgwqDCoMKgbm9kZSAqYW5bNF07Cj4gK8KgwqDCoMKgwqDCoMKgdmFyICphdls0 XTsKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICphc1s0XTsKPiArLcKgwqDCoMKgwqDCoHJl Z21hdGNoX3QgcG1hdGNoWzJdOwo+ICstwqDCoMKgwqDCoMKgcmVnZXhfdCBzcmVnLCAqcmU7Cj4g K8KgwqDCoMKgwqDCoMKgbm9kZSAqc3BsOwo+ICvCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGlzciwg aW5mbzsKPiArwqDCoMKgwqDCoMKgwqBpbnQgbmFyZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgdGltZV90 IHR0Owo+ICvCoMKgwqDCoMKgwqDCoGludCBpLCBsLCBsbCwgbjsKPiArIAo+ICstwqDCoMKgwqDC oMKgdHYgPSBudmFsbG9jKDQpOwo+ICsrwqDCoMKgwqDCoMKgdG1wdmFycyA9IG52YWxsb2MoNCk7 Cj4gKysjZGVmaW5lIFRNUFZBUjAgKHRtcHZhcnMpCj4gKysjZGVmaW5lIFRNUFZBUjEgKHRtcHZh cnMgKyAxKQo+ICsrI2RlZmluZSBUTVBWQVIyICh0bXB2YXJzICsgMikKPiArKyNkZWZpbmUgVE1Q VkFSMyAodG1wdmFycyArIDMpCj4gKysjZGVmaW5lIFRNUFZBUihpKSAodG1wdmFycyArIChpKSkK PiArwqDCoMKgwqDCoMKgwqBpc3IgPSBpbmZvID0gb3AtPmluZm87Cj4gK8KgwqDCoMKgwqDCoMKg b3AgPSBvcC0+bC5uOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgYXZbMl0gPSBhdlszXSA9IE5VTEw7 Cj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IDQgJiYgb3A7IGkrKykgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhbltpXSA9IG5leHRhcmcoJm9wKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNyICYgMHgwOTAwMDAwMCkKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXZbaV0gPSBldmFsdWF0ZShhbltp XSwgJnR2W2ldKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNyICYgMHgw ODAwMDAwMCkKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg YXNbaV0gPSBnZXR2YXJfcyhhdltpXSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGlzciAmIDB4MDkwMDAwMDApIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYXZbaV0gPSBldmFsdWF0ZShhbltpXSwgVE1QVkFSKGkpKTsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGlzciAmIDB4MDgw MDAwMDApCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBhc1tpXSA9IGdldHZhcl9zKGF2W2ldKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlzciA+Pj0g MTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiArQEAgLTIzODYsOCArMjYzOCw4IEBAIHN0YXRp YyBOT0lOTElORSB2YXIgKmV4ZWNfYnVpbHRpbihub2RlICpvcCwKPiB2YXIgKnJlcykKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcywgKnMxOwo+ICsgCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChuYXJncyA+IDIpIHsKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3BsID0gKGFuWzJdLT5pbmZvICYgT1BDTFNN QVNLKSA9PSBPQ19SRUdFWFAKPiA/Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhblsyXSA6Cj4gbWtfc3BsaXR0ZXIoZ2V0dmFy X3MoZXZhbHVhdGUoYW5bMl0sICZ0dlsyXSkpLCAmdHNwbCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwbCA9IChhblsyXS0+aW5mbyA9PSBUSV9SRUdF WFApID8gYW5bMl0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDoKPiBta19zcGxpdHRlcihnZXR2YXJfcyhldmFsdWF0ZShhblsy XSwgVE1QVkFSMikpLCAmdHNwbCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0g ZWxzZSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz cGwgPSAmZnNwbGl0dGVyLm47Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiAr QEAgLTI1MDEsMjAgKzI3NTMsNyBAQCBzdGF0aWMgTk9JTkxJTkUgdmFyICpleGVjX2J1aWx0aW4o bm9kZSAqb3AsCj4gdmFyICpyZXMpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBCX21hOgo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJlID0gYXNfcmVnZXgoYW5bMV0sICZzcmVnKTsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuID0gcmVnZXhlYyhyZSwgYXNbMF0sIDEsIHBtYXRjaCwgMCk7Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG4gPT0gMCkgewo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbWF0Y2hbMF0ucm1fc28rKzsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNoWzBdLnJt X2VvKys7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNoWzBdLnJtX3NvID0g MDsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNo WzBdLnJtX2VvID0gLTE7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKG5ld3ZhcigiUlNUQVJUIiksIHBtYXRj aFswXS5ybV9zbyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kobmV3 dmFyKCJSTEVOR1RIIiksIHBtYXRjaFswXS5ybV9lbyAtCj4gcG1hdGNoWzBdLnJtX3NvKTsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaShyZXMsIHBtYXRjaFswXS5ybV9z byk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJlID09ICZzcmVnKQo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdmcmVlKHJlKTsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXMgPSBkb19tYXRjaChhblsxXSwgYXNb MF0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICvCoMKg wqDCoMKgwqDCoGNhc2UgQl9nZToKPiArQEAgLTI1MzAsMTQgKzI3NjksNzkgQEAgc3RhdGljIE5P SU5MSU5FIHZhciAqZXhlY19idWlsdGluKG5vZGUgKm9wLAo+IHZhciAqcmVzKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiAr LcKgwqDCoMKgwqDCoG52ZnJlZSh0dik7Cj4gKyvCoMKgwqDCoMKgwqBudmZyZWUodG1wdmFycywg NCk7Cj4gKysjdW5kZWYgVE1QVkFSMAo+ICsrI3VuZGVmIFRNUFZBUjEKPiArKyN1bmRlZiBUTVBW QVIyCj4gKysjdW5kZWYgVE1QVkFSMwo+ICsrI3VuZGVmIFRNUFZBUgo+ICsrCj4gK8KgwqDCoMKg wqDCoMKgcmV0dXJuIHJlczsKPiArICN1bmRlZiB0c3BsCj4gKyB9Cj4gKyAKPiArKy8qIGlmIGV4 cHIgbG9va3MgbGlrZSAidmFyPXZhbHVlIiwgcGVyZm9ybSBhc3NpZ25tZW50IGFuZCByZXR1cm4g MSwKPiArKyAqIG90aGVyd2lzZSByZXR1cm4gMCAqLwo+ICsrc3RhdGljIGludCBpc19hc3NpZ25t ZW50KGNvbnN0IGNoYXIgKmV4cHIpCj4gKyt7Cj4gKyvCoMKgwqDCoMKgwqBjaGFyICpleHByYywg KnZhbDsKPiArKwo+ICsrwqDCoMKgwqDCoMKgdmFsID0gKGNoYXIqKWVuZG9mbmFtZShleHByKTsK PiArK8KgwqDCoMKgwqDCoGlmICh2YWwgPT0gKGNoYXIqKWV4cHIgfHwgKnZhbCAhPSAnPScpIHsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRkFMU0U7Cj4gKyvCoMKgwqDC oMKgwqB9Cj4gKysKPiArK8KgwqDCoMKgwqDCoGV4cHJjID0geHN0cmR1cChleHByKTsKPiArK8Kg wqDCoMKgwqDCoHZhbCA9IGV4cHJjICsgKHZhbCAtIGV4cHIpOwo+ICsrwqDCoMKgwqDCoMKgKnZh bCsrID0gJ1wwJzsKPiArKwo+ICsrwqDCoMKgwqDCoMKgdW5lc2NhcGVfc3RyaW5nX2luX3BsYWNl KHZhbCk7Cj4gKyvCoMKgwqDCoMKgwqBzZXR2YXJfdShuZXd2YXIoZXhwcmMpLCB2YWwpOwo+ICsr wqDCoMKgwqDCoMKgZnJlZShleHByYyk7Cj4gKyvCoMKgwqDCoMKgwqByZXR1cm4gVFJVRTsKPiAr K30KPiArKwo+ICsrLyogc3dpdGNoIHRvIG5leHQgaW5wdXQgZmlsZSAqLwo+ICsrc3RhdGljIHJz dHJlYW0gKm5leHRfaW5wdXRfZmlsZSh2b2lkKQo+ICsrewo+ICsrI2RlZmluZSByc23CoMKgwqDC oMKgwqDCoMKgwqAgKEcubmV4dF9pbnB1dF9maWxlX19yc20pCj4gKysjZGVmaW5lIGZpbGVzX2hh cHBlbiAoRy5uZXh0X2lucHV0X2ZpbGVfX2ZpbGVzX2hhcHBlbikKPiArKwo+ICsrwqDCoMKgwqDC oMKgY29uc3QgY2hhciAqZm5hbWUsICppbmQ7Cj4gKysKPiArK8KgwqDCoMKgwqDCoGlmIChyc20u RikKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmY2xvc2UocnNtLkYpOwo+ICsrwqDC oMKgwqDCoMKgcnNtLkYgPSBOVUxMOwo+ICsrwqDCoMKgwqDCoMKgcnNtLnBvcyA9IHJzbS5hZHYg PSAwOwo+ICsrCj4gKyvCoMKgwqDCoMKgwqBmb3IgKDs7KSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGdldHZhcl9pKGludHZhcltBUkdJTkRdKSsxID49Cj4gZ2V0dmFyX2ko aW50dmFyW0FSR0NdKSkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZmlsZXNfaGFwcGVuKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIE5VTEw7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZuYW1lID0gIi0iOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc20uRiA9IHN0ZGluOwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW5kID0gZ2V0dmFyX3MoaW5jdmFyKGludHZhcltBUkdJTkRdKSk7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm5hbWUgPSBnZXR2YXJfcyhmaW5kdmFyKGlhbWFycmF5KGlu dHZhcltBUkdWXSksCj4gaW5kKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KGZuYW1lICYmICpmbmFtZSAmJiAhaXNfYXNzaWdubWVudChmbmFtZSkpIHsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnNtLkYgPSB4Zm9wZW5fc3RkaW4o Zm5hbWUpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqB9 Cj4gKysKPiArK8KgwqDCoMKgwqDCoGZpbGVzX2hhcHBlbiA9IFRSVUU7Cj4gKyvCoMKgwqDCoMKg wqBzZXR2YXJfcyhpbnR2YXJbRklMRU5BTUVdLCBmbmFtZSk7Cj4gKyvCoMKgwqDCoMKgwqByZXR1 cm4gJnJzbTsKPiArKyN1bmRlZiByc20KPiArKyN1bmRlZiBmaWxlc19oYXBwZW4KPiArK30KPiAr Kwo+ICsgLyoKPiArwqAgKiBFdmFsdWF0ZSBub2RlIC0gdGhlIGhlYXJ0IG9mIHRoZSBwcm9ncmFt LiBTdXBwbGllZCB3aXRoIHN1YnRyZWUKPiArLSAqIGFuZCBwbGFjZSB3aGVyZSB0byBzdG9yZSBy ZXN1bHQuIHJldHVybnMgcHRyIHRvIHJlc3VsdC4KPiArKyAqIGFuZCAicmVzIiB2YXJpYWJsZSB0 byBhc3NpZ24gdGhlIHJlc3VsdCB0byBpZiB3ZSBldmFsdWF0ZSBhbgo+IGV4cHJlc3Npb24uCj4g KysgKiBJZiBub2RlIHJlZmVycyB0byBlLmcuIGEgdmFyaWFibGUgb3IgYSBmaWVsZCwgbm8gYXNz aWdubWVudAo+IGhhcHBlbnMuCj4gKysgKiBSZXR1cm4gcHRyIHRvIHRoZSByZXN1bHQgKHdoaWNo IG1heSBvciBtYXkgbm90IGJlIHRoZSAicmVzIgo+IHZhcmlhYmxlISkKPiArwqAgKi8KPiArICNk ZWZpbmUgWEMobikgKChuKSA+PiA4KQo+ICsgCj4gK0BAIC0yNTQ5LDE0ICsyODUzLDE2IEBAIHN0 YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiArICNkZWZpbmUgc2VlZMKg wqAgKEcuZXZhbHVhdGVfX3NlZWQpCj4gKyAjZGVmaW5lIHNyZWfCoMKgIChHLmV2YWx1YXRlX19z cmVnKQo+ICsgCj4gKy3CoMKgwqDCoMKgwqB2YXIgKnYxOwo+ICsrwqDCoMKgwqDCoMKgdmFyICp0 bXB2YXJzOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFvcCkKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHNldHZhcl9zKHJlcywgTlVMTCk7Cj4gKyAKPiArwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiZW50ZXJlZCAlcygpXG4iLCBfX2Z1bmNfXyk7Cj4g KyAKPiArLcKgwqDCoMKgwqDCoHYxID0gbnZhbGxvYygyKTsKPiArK8KgwqDCoMKgwqDCoHRtcHZh cnMgPSBudmFsbG9jKDIpOwo+ICsrI2RlZmluZSBUTVBWQVIwICh0bXB2YXJzKQo+ICsrI2RlZmlu ZSBUTVBWQVIxICh0bXB2YXJzICsgMSkKPiArIAo+ICvCoMKgwqDCoMKgwqDCoHdoaWxlIChvcCkg ewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgewo+ICtAQCAtMjU3OCw0 OCArMjg4NCwzNSBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShub2RlICpvcCwgdmFyICpyZXMpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wMSA9IG9wLT5sLm47Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJvcGluZm86JTA4eCBvcG46 JTA4eFxuIiwgb3BpbmZvLAo+IG9wbik7Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiAiZGVsZXRlIiBpcyBzcGVjaWFsOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqICJkZWxldGUgYXJyYXlbdmFyLS1dIiBtdXN0IGV2YWx1YXRlIGluZGV4IGV4cHIKPiBv bmx5IG9uY2UsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogbXVzdCBub3QgZXZh bHVhdGUgaXQgaW4gImV4ZWN1dGUgaW5ldml0YWJsZQo+IHRoaW5ncyIgcGFydC4KPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoWEMob3BpbmZvICYgT1BDTFNNQVNLKSA9PSBYQyhPQ19ERUxFVEUpKSB7Cj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGluZm8gPSBv cDEtPmluZm8gJiBPUENMU01BU0s7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHZhciAqdjsKPiArLQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiREVMRVRFXG4iKTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGluZm8gPT0gT0NfVkFS KSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2ID0gb3AxLT5sLnY7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoaW5mbyA9PSBPQ19GTkFSRykgewo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9 ICZmbmFyZ3Nbb3AxLT5sLmFpZHhdOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfTk9UX0FSUkFZ KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBleGVjdXRlIGluZXZpdGFibGUg dGhpbmdzICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9waW5mbyAmIE9G X1JFUzEpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKChvcGluZm8gJiBPRl9SRVFVSVJFRCkgJiYgIW9wMSkKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihF TVNHX1RPT19GRVdfQVJHUyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEwudiA9IGV2YWx1YXRlKG9wMSwgVE1QVkFSMCk7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBPRl9TVFIxKSB7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBMLnMgPSBnZXR2YXJfcyhMLnYpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkwuczon JXMnXG4iLCBMLnMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAob3AxLT5yLm4pIHsgLyogYXJyYXkgcmVmPyAqLwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqczsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHMgPSBnZXR2YXJfcyhldmFsdWF0ZShvcDEtPnIubiwgdjEpKTsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfcmVt b3ZlKGlhbWFycmF5KHYpLCBzKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsZWFyX2FycmF5KGlhbWFycmF5KHYpKTsKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9waW5mbyAm IE9GX05VTTEpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoExfZCA9IGdldHZhcl9pKEwudik7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfZXZhbCgiTF9kOiVmXG4iLCBMX2QpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIG5leHQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0K PiArLQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGV4ZWN1dGUgaW5ldml0YWJs ZSB0aGluZ3MgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvICYg T0ZfUkVTMSkKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg TC52ID0gZXZhbHVhdGUob3AxLCB2MSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKG9waW5mbyAmIE9GX1JFUzIpCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoFIudiA9IGV2YWx1YXRlKG9wLT5yLm4sIHYxKzEpOwo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBPRl9TVFIxKSB7Cj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEwucyA9IGdldHZhcl9zKEwudik7Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9ldmFsKCJMLnM6JyVzJ1xuIiwgTC5zKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9waW5mbyAmIE9GX1NUUjIp IHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUi5zID0g Z2V0dmFyX3MoUi52KTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlIuczonJXMnXG4iLCBSLnMpOwo+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo b3BpbmZvICYgT0ZfTlVNMSkgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBMX2QgPSBnZXR2YXJfaShMLnYpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiTF9kOiVmXG4iLCBMX2Qp Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIE5COiBNdXN0IGdldCBzdHJpbmcv bnVtZXJpYyB2YWx1ZXMgb2YgTCAoZG9uZQo+IGFib3ZlKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIF9iZWZvcmVfIGV2YWx1YXRlKCknaW5nIFIudjogaWYgYm90aCBMIGFuZCBS IGFyZQo+ICROTk5zLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFuZCByaWdo dCBvbmUgaXMgbGFyZ2UsIHRoZW4gTC52IHBvaW50cyB0bwo+IEZpZWxkc1tOTk4xXSwKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzZWNvbmQgZXZhbHVhdGUoKSByZWFsbG9jYXRl cyBhbmQgbW92ZXMgKCEpCj4gRmllbGRzW10sCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICogUi52IHBvaW50cyB0byBGaWVsZHNbTk5OMl0gYnV0IEwudiBub3cgcG9pbnRzIHRvCj4g ZnJlZWQgbWVtIQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIChTZWVuIHRyeWlu ZyB0byBldmFsdWF0ZSAiJDQ0NCAkNDQ0NDQiKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBPRl9S RVMyKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFIu diA9IGV2YWx1YXRlKG9wLT5yLm4sIFRNUFZBUjEpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvL1RPRE86IEwudiBtYXkgYmUgaW52YWxpZCBub3csIHNl dCBMLnYgdG8KPiBOVUxMIHRvIGNhdGNoIGJ1Z3M/Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8vTC52ID0gTlVMTDsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9waW5mbyAmIE9GX1NUUjIpIHsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oFIucyA9IGdldHZhcl9zKFIudik7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiUi5zOiclcydc biIsIFIucyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsgCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJzd2l0Y2goMHgleClcbiIsIFhD KG9waW5mbyAmCj4gT1BDTFNNQVNLKSk7Cj4gK0BAIC0yNjI5LDcgKzI5MjIsOCBAQCBzdGF0aWMg dmFyICpldmFsdWF0ZShub2RlICpvcCwgdmFyICpyZXMpCj4gKyAKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogdGVzdCBwYXR0ZXJuICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNhc2UgWEMoIE9DX1RFU1QgKToKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChvcDEtPmluZm8gJiBPUENMU01BU0spID09IE9DX0NP TU1BKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRl YnVnX3ByaW50Zl9ldmFsKCJURVNUXG4iKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wMS0+aW5mbyA9PSBUSV9DT01NQSkgewo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8q IGl0J3MgcmFuZ2UgcGF0dGVybiAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgob3BpbmZvICYgT0ZfQ0hFQ0tFRCkg fHwKPiBwdGVzdChvcDEtPmwubikpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3AtPmluZm8g fD0gT0ZfQ0hFQ0tFRDsKPiArQEAgLTI2NDYsMjUgKzI5NDAsMzIgQEAgc3RhdGljIHZhciAqZXZh bHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qIGp1c3QgZXZhbHVhdGUgYW4gZXhwcmVzc2lvbiwgYWxzbyB1c2VkIGFzCj4gdW5j b25kaXRpb25hbCBqdW1wICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2Ug WEMoIE9DX0VYRUMgKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkVYRUNcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogYnJhbmNoLCB1c2VkIGluIGlmLWVsc2UgYW5kIHZhcmlvdXMgbG9v cHMgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfQlIgKToK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX2V2YWwoIkJSXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG9wID0gaXN0cnVlKEwudikgPyBvcC0+YS5uIDogb3AtPnIubjsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICsgCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGluaXRpYWxpemUgZm9yLWluIGxvb3AgKi8K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfV0FMS0lOSVQgKToK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX2V2YWwoIldBTEtJTklUXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGhhc2h3YWxrX2luaXQoTC52LCBpYW1hcnJheShSLnYpKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICsgCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGdldCBuZXh0IGFycmF5IGl0ZW0gKi8K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfV0FMS05FWFQgKToK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX2V2YWwoIldBTEtORVhUXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG9wID0gaGFzaHdhbGtfbmV4dChMLnYpID8gb3AtPmEubiA6IG9wLT5y Lm47Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19QUklO VCApOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1BSSU5URiAp OiB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVn X3ByaW50Zl9ldmFsKCJQUklOVCAvXG4iKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjYXNlIFhDKCBPQ19QUklOVEYgKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlBSSU5URlxuIik7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgRklMRSAqRiA9IHN0ZG91dDsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wLT5yLm4pIHsKPiArQEAgLTI2ODIs NTUgKzI5ODMsOTQgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoEYgPSByc20tPkY7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gKyAKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogQ2FuJ3QganVzdCBjaGVjayAnb3BpbmZvID09IE9DX1BSSU5UJwo+IGhlcmUs IHBhcnNlciBPUnMKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICogYWRkaXRpb25hbCBiaXRzIHRvIG9waW5mb3Mgb2YgcHJpbnQvcHJpbnRmCj4gd2l0aCBy ZWRpcmVjdHMKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo KG9waW5mbyAmIE9QQ0xTTUFTSykgPT0gT0NfUFJJTlQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIW9wMSkgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcHV0cyhnZXR2YXJfcyhpbnR2YXJbRjBdKSwKPiBGKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9IGVsc2Ugewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlIChvcDEpIHsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICp2ID0KPiBldmFsdWF0ZShu ZXh0YXJnKCZvcDEpLCB2MSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yICg7Oykgewo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YXIgKnYgPQo+IGV2YWx1YXRlKG5l eHRhcmcoJm9wMSksIFRNUFZBUjApOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHYtPnR5cGUgJgo+IFZGX05VTUJFUikgewo+ICstCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm10X251bShnX2J1ZiwKPiBNQVhW QVJGTVQsIGdldHZhcl9zKGludHZhcltPRk1UXSksCj4gKy0KPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAKPiDCoGdldHZhcl9pKHYpLCBUUlVFKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZtdF9udW0oZ2V0dmEKPiByX3MoaW50dmFyW09G TVRdKSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gwqDCoMKgZ2V0dmFyX2kodikpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZwdXRz KGdfYnVmLAo+IEYpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBl bHNlIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmcHV0cyhnZXR2YXJfCj4gcyh2KSwgRik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gKy0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKG9wMSkKPiArLQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZwdXRzKGdldHZhcl9zKAo+IGludHZhcltPRlNdKSwgRik7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghb3AxKQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZwdXRzKGdldHZhcl9zKGludHZhcgo+IFtPRlNd KSwgRik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnB1dHMo Z2V0dmFyX3MoaW50dmFyW09SU10pLCBGKTsKPiArLQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Uge8KgwqDCoMKgwqDCoMKgwqAvKiBPQ19QUklO VEYgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYXIgKnMgPSBhd2tfcHJpbnRmKG9wMSk7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7wqDCoMKgwqDCoMKgwqDCoC8q IFBSSU5URiAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgSUZfRkVBVFVSRV9BV0tfR05VX0VYVEVOU0lPTlMoc2l6ZV90Cj4g bGVuOykKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYXIgKnMgPSBhd2tfcHJpbnRmKG9wMSwgJmxlbik7Cj4gKysjaWYgRU5B QkxFX0ZFQVRVUkVfQVdLX0dOVV9FWFRFTlNJT05TCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmd3JpdGUocywgbGVuLCAxLCBG KTsKPiArKyNlbHNlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZnB1dHMocywgRik7Cj4gKysjZW5kaWYKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVl KHMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmZsdXNoKEYp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArIAo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIGNhc2UgWEMoIE9DX0RFTEVURSApOiAtIG1vdmVkIHRvIGhhcHBl biBiZWZvcmUgYXJnCj4gZXZhbHVhdGlvbiAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNhc2UgWEMoIE9DX0RFTEVURSApOgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiREVMRVRFXG4iKTsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qICJkZWxldGUiIGlzIHNwZWNpYWw6Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqICJkZWxldGUgYXJyYXlbdmFyLS1dIiBt dXN0IGV2YWx1YXRlIGluZGV4Cj4gZXhwciBvbmx5IG9uY2UuCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBpbmZvID0gb3AxLT5pbmZvICYgT1BDTFNN QVNLOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YXIg KnY7Cj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGluZm8gPT0gT0NfVkFSKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gb3AxLT5sLnY7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoaW5mbyA9PSBPQ19G TkFSRykgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdiA9ICZmbmFyZ3Nbb3AxLT5sLmFpZHhdOwo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vy cm9yKEVNU0dfTk9UX0FSUkFZKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAob3AxLT5yLm4pIHsgLyogYXJyYXkgcmVmPyAqLwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAq czsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHMgPSBnZXR2YXJfcyhldmFsdWF0ZShvcDEtPnIubiwKPiBUTVBWQVIwKSk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBoYXNoX3JlbW92ZShpYW1hcnJheSh2KSwgcyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShpYW1h cnJheSh2KSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsgCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX05FV1NPVVJDRSApOgo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiTkVXU09V UkNFXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdfcHJvZ25hbWUgPSBvcC0+bC5uZXdfcHJvZ25hbWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19SRVRVUk4gKToKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlJFVFVSTlxuIik7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb3B5dmFy KHJlcywgTC52KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGJyZWFrOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMo IE9DX05FWFRGSUxFICk6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJORVhURklMRVxuIik7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0ZmlsZSA9IFRSVUU7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX05FWFQgKToKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIk5F WFRcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bmV4dHJlYyA9IFRSVUU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMo IE9DX0RPTkUgKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX2V2YWwoIkRPTkVcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xydmFyKHJlcyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19FWElUICk6Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGF3a19leGl0KExfZCk7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJFWElU XG4iKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KG9wMSkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoEcuZXhpdGNvZGUgPSAoaW50KUxfZDsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXdrX2V4aXQoKTsKPiArIAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAtLSByZWN1cnNpdmUgbm9kZSB0eXBlIC0tICovCj4gKyAK PiArQEAgLTI3NDksMTUgKzMwODksMTggQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3As IHZhciAqcmVzKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYnJlYWs7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQygg T0NfSU4gKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX2V2YWwoIklOXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKHJlcywgaGFzaF9zZWFyY2goaWFtYXJyYXkoUi52 KSwgTC5zKQo+ID8gMSA6IDApOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2FzZSBYQyggT0NfUkVHRVhQICk6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJSRUdFWFBcbiIpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3AxID0gb3A7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMLnMgPSBnZXR2YXJfcyhpbnR2 YXJbRjBdKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gcmVfY29udDsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNl IFhDKCBPQ19NQVRDSCApOgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiTUFUQ0hcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3AxID0gb3AtPnIubjsKPiArwqAgcmVfY29u dDoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsKPiAr QEAgLTI3NzIsNjEgKzMxMTUsODAgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZh ciAqcmVzKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19NT1ZF ICk6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfZXZhbCgiTU9WRVxuIik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiBpZiBzb3VyY2UgaXMgYSB0ZW1wb3Jhcnkgc3RyaW5nLCBqdXNr Cj4gcmVsaW5rIGl0IHRvIGRlc3QgKi8KPiArLS8vRGlzYWJsZWQ6IGlmIFIudiBpcyBudW1lcmlj IGJ1dCBoYXBwZW5zIHRvIGhhdmUgY2FjaGVkIFIudi0KPiA+c3RyaW5nLAo+ICstLy90aGVuIEwu diBlbmRzIHVwIGJlaW5nIGEgc3RyaW5nLCB3aGljaCBpcyB3cm9uZwo+ICstLy/CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFIudiA9PSB2MSsxICYmIFIudi0+c3Ry aW5nKSB7Cj4gKy0vL8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmVzID0gc2V0dmFyX3AoTC52LCBSLnYtPnN0cmluZyk7Cj4gKy0vL8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUi52LT5z dHJpbmcgPSBOVUxMOwo+ICstLy/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfSBlbHNlIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKFIudiA9PSBUTVBWQVIxCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAmJiAhKFIudi0+dHlwZSAmIFZGX05VTUJFUikKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFdoeSBj aGVjayAhTlVNQkVSPyBpZiBSLnYgaXMgYQo+IG51bWJlciBidXQgaGFzIGNhY2hlZCBSLnYtPnN0 cmluZywKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIEwudiBlbmRzIHVwIGEgc3RyaW5nLCB3aGljaCBpcwo+IHdyb25nICov Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiYmIFIu di0+c3RyaW5nIC0gYWx3YXlzIG5vdCBOVUxMIChyaWdodD8pCj4gKi8KPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKSB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXMgPSBzZXR2YXJf cChMLnYsIFIudi0+c3RyaW5nKTsgLyoKPiBhdm9pZHMgc3RyZHVwICovCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBSLnYtPnN0 cmluZyA9IE5VTEw7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0gZWxzZSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzID0gY29weXZhcihMLnYsIFIudik7Cj4gKy0vL8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNhc2UgWEMoIE9DX1RFUk5BUlkgKToKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChvcC0+ci5uLT5pbmZvICYgT1BDTFNNQVNLKSAh PSBPQ19DT0xPTikKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX2V2YWwoIlRFUk5BUllcbiIpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3AtPnIubi0+aW5mbyAhPSBUSV9DT0xPTikK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzeW50YXhfZXJyb3IoRU1TR19QT1NTSUJMRV9FUlJPUik7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXMgPSBldmFsdWF0ZShpc3RydWUo TC52KSA/IG9wLT5yLm4tPmwubiA6Cj4gb3AtPnIubi0+ci5uLCByZXMpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyAKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfRlVOQyApOiB7Cj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhciAqdmJlZywgKnY7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhciAqYXJndmFycywg KnN2X2ZuYXJnczsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNvbnN0IGNoYXIgKnN2X3Byb2duYW1lOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgbmFyZ3MsIGk7Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVGhlIGJvZHkgbWlnaHQgYmUgZW1wdHks IHN0aWxsIGhhcyB0byBldmFsCj4gdGhlIGFyZ3MgKi8KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFvcC0+ci5uLT5pbmZvICYmICFvcC0+ci5mLT5i b2R5LmZpcnN0KQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZWJ1Z19wcmludGZfZXZhbCgiRlVOQ1xuIik7Cj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFvcC0+ci5mLT5kZWZpbmVkKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHN5bnRheF9lcnJvcihFTVNHX1VOREVGX0ZVTkMpOwo+ICsgCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZiZWcgPSB2ID0gbnZhbGxvYyhvcC0+ci5mLT5u YXJncyArIDEpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBUaGUgYm9keSBtaWdodCBiZSBlbXB0eSwgc3RpbGwgaGFzIHRvIGV2YWwKPiB0aGUgYXJn cyAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuYXJn cyA9IG9wLT5yLmYtPm5hcmdzOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBhcmd2YXJzID0gbnZhbGxvYyhuYXJncyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKG9wMSkgewo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICphcmcg PSBldmFsdWF0ZShuZXh0YXJnKCZvcDEpLAo+IHYxKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvcHl2YXIodiwgYXJnKTsK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHYtPnR5cGUgfD0gVkZfQ0hJTEQ7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2LT54LnBhcmVudCA9IGFyZzsKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICgrK3YgLSB2YmVnID49IG9wLT5yLmYtPm5hcmdzKQo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGJyZWFrOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdmFyICphcmcgPSBldmFsdWF0ZShuZXh0YXJnKCZvcDEpLAo+IFRN UFZBUjApOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGkgPT0gbmFyZ3MpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBjYWxsIHdpdGggbW9yZSBhcmd1bWVudHMKPiB0aGFuIGZ1bmN0aW9uIHRha2VzLgo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIChnYXdrIHdhcm5zOiAid2FybmluZzoKPiBmdW5jdGlvbiAnZicg Y2FsbGVkIHdpdGggbW9yZSBhcmd1bWVudHMgdGhhbiBkZWNsYXJlZCIpLgo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIFRoZXkgYXJlIHN0aWxsIGV2YWx1YXRlZCwKPiBidXQgZGlzY2FyZGVkOiAq Lwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNscnZhcihhcmcpOwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNvbnRpbnVlOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29weXZhcigmYXJndmFyc1tpXSwgYXJnKTsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGFyZ3ZhcnNbaV0udHlwZSB8PSBWRl9DSElMRDsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFyZ3ZhcnNbaV0ueC5w YXJlbnQgPSBhcmc7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpKys7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdiA9IGZuYXJnczsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZm5hcmdzID0gdmJlZzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ZfZm5hcmdzID0gZm5hcmdzOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ZfcHJvZ25hbWUgPSBnX3Byb2du YW1lOwo+ICsgCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGZuYXJncyA9IGFyZ3ZhcnM7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXMgPSBldmFsdWF0ZShvcC0+ci5mLT5ib2R5LmZpcnN0LCByZXMpOwo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBudmZyZWUoYXJndmFy cywgbmFyZ3MpOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnX3Byb2duYW1lID0gc3ZfcHJvZ25hbWU7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG52ZnJlZShmbmFyZ3MpOwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbmFyZ3MgPSB2Owo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbmFyZ3MgPSBzdl9mbmFyZ3M7Cj4g KyAKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFr Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfR0VUTElORSApOgo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1BHRVRMSU5FICk6IHsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkdFVExJ TkUgL1xuIik7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfUEdF VExJTkUgKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX2V2YWwoIlBHRVRMSU5FXG4iKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByc3RyZWFtICpyc207Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpbnQgaTsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKG9wMSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJzbSA9IG5ld2ZpbGUoTC5zKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoIXJzbS0+Rikgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIE5COiBjYW4ndCB1c2Ug Im9waW5mbyA9PQo+IFRJX1BHRVRMSU5FIiwgd291bGQgYnJlYWsgImNtZCIgfCBnZXRsaW5lICov Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgob3BpbmZvICYgT1BDTFNNQVNLKSA9PQo+IE9D X1BHRVRMSU5FKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc20t PkYgPSBwb3BlbihMLnMsCj4gInIiKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJzbS0+aXNfcGlwZSA9IFRSVUU7Cj4gK0BAIC0yODYxLDE2ICszMjIzLDM0IEBAIHN0 YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogc2ltcGxlIGJ1aWx0aW5zICovCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX0ZCTFRJTiApOiB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkb3VibGUgUl9kID0gUl9kOyAvKiBmb3IgY29t cGlsZXIgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX2V2YWwoIkZCTFRJTlxuIik7Cj4gKysKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wMSAmJiBvcDEtPmluZm8gPT0gVElfQ09N TUEpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAvKiBTaW1wbGUgYnVpbHRpbnMgdGFrZSBvbmUgYXJnCj4gbWF4aW11bSAqLwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc3ludGF4X2Vycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKTsKPiArIAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoIChvcG4pIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRl9pbjoK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBSX2QgPSAobG9uZyBsb25nKUxfZDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIEZfcm46Cj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBSX2QgPSAoZG91YmxlKXJhbmQoKSAvCj4gKGRvdWJsZSlSQU5EX01BWDsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBGX3JuOiAvKnJhbmQqLwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKG9wMSkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoIlRvbyBt YW55Cj4gYXJndW1lbnRzIik7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHsKPiArKyNpZiBSQU5EX01BWCA+PSAweDdmZmZmZmZmCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJf dCB1ID0gKCh1aW50MzJfdClyYW5kKCkgPDwgMTYpCj4gXiByYW5kKCk7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50NjRf dCB2ID0gKCh1aW50NjRfdClyYW5kKCkgPDwgMzIpCj4gfCB1Owo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdGhlIGFib3Zl IHNoaWZ0K29yIGlzIG9wdGltaXplZAo+IG91dCBvbiAzMi1iaXQgYXJjaGVzICovCj4gKysjIGlm IFJBTkRfTUFYID4gMHg3ZmZmZmZmZgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiAmPSAweDdmZmZmZmZmZmZmZmZmZmZVTEw7 Cj4gKysjIGVuZGlmCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBSX2QgPSAoZG91YmxlKXYgLwo+IDB4ODAwMDAwMDAwMDAwMDAw MFVMTDsKPiArKyNlbHNlCj4gKysjIGVycm9yIE5vdCBpbXBsZW1lbnRlZCBmb3IgdGhpcyB2YWx1 ZSBvZiBSQU5EX01BWAo+ICsrI2VuZGlmCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKy0KPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBGX2NvOgo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChFTkFC TEVfRkVBVFVSRV9BV0tfTElCTSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBSX2QgPSBjb3Mo TF9kKTsKPiArQEAgLTI5MTAsNyArMzI5MCw5IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUg Km9wLCB2YXIgKnJlcykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcmFuZChzZWVkKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArIAo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIEZfdGk6 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRl90 aTogLypzeXN0aW1lKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcDEpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3lu dGF4X2Vycm9yKCJUb28gbWFueQo+IGFyZ3VtZW50cyIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFJfZCA9IHRpbWUoTlVM TCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyAKPiArQEAgLTI5NDksNyArMzMzMSw3IEBAIHN0YXRpYyB2 YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc3RyZWFtICpyc207Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50IGVyciA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnNtID0gKHJzdHJlYW0gKiloYXNoX3NlYXJjaChm ZGhhc2gsCj4gTC5zKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJPQ19GQkxUSU4gRl9jbAo+ IHJzbTolcFxuIiwgcnNtKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJPQ19GQkxUSU4gY2xv c2U6Cj4gb3AxOiVwIHM6JyVzJyByc206JXBcbiIsIG9wMSwgTC5zLCByc20pOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChyc20pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIk9DX0ZC TFRJTgo+IEZfY2wgIgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInJz bS0+aXNfcGlwZTolZCwgLQo+ID5GOiVwXG4iLAo+ICtAQCAtMjk2MCw2ICszMzQyLDExIEBAIHN0 YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyc20tPkYpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSByc20tPmlzX3BpcGUgPwo+IHBjbG9z ZShyc20tPkYpIDogZmNsb3NlKHJzbS0+Rik7Cj4gKysvL1RPRE86IGZpeCB0aGlzIGNhc2U6Cj4g KysvLyAkIGF3ayAnQkVHSU4geyBwcmludCBjbG9zZSgiIik7IHByaW50IEVSUk5PIH0nCj4gKysv LyAtMQo+ICsrLy8gY2xvc2Ugb2YgcmVkaXJlY3Rpb24gdGhhdCB3YXMgbmV2ZXIgb3BlbmVkCj4g KysvLyAod2UgcHJpbnQgMCwgMCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZShyc20tPmJ1 ZmZlcik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfcmVtb3ZlKGZkaGFzaCwgTC5zKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gK0BAIC0yOTc0LDE0ICszMzYxLDE4IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRl KG5vZGUgKm9wLCB2YXIgKnJlcykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX0JVSUxUSU4g KToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdf cHJpbnRmX2V2YWwoIkJVSUxUSU5cbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmVzID0gZXhlY19idWlsdGluKG9wLCByZXMpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyAKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfU1BSSU5URiApOgo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfcChyZXMsIGF3 a19wcmludGYob3AxKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJTUFJJTlRGXG4iKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX3AocmVzLCBhd2tfcHJpbnRmKG9w MSwgTlVMTCkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYnJlYWs7Cj4gKyAKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBP Q19VTkFSWSApOiB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0Nf VU5BUlkgKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX2V2YWwoIlVOQVJZXG4iKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk b3VibGUgTGQsIFJfZDsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgTGQgPSBSX2QgPSBnZXR2YXJfaShSLnYpOwo+ICtAQCAtMzAxMSw3ICszNDAy LDkgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArIAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNhc2UgWEMoIE9DX0ZJRUxEICk6IHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjYXNlIFhDKCBPQ19GSUVMRCApOgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiRklFTERcbiIpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGludCBpID0gKGludClnZXR2YXJfaShSLnYpOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGkgPCAwKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRh eF9lcnJvcihFTVNHX05FR0FUSVZFX0ZJRUxEKTsKPiArQEAgLTMwMjgsMjYgKzM0MjEsMzMgQEAg c3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQo+ICsgCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGNvbmNhdGVuYXRpb24gKCIgIikgYW5kIGluZGV4IGpv aW5pbmcgKCIsIikgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQygg T0NfQ09OQ0FUICk6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJDT05DQVQgL1xuIik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX0NPTU1BICk6IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKnNlcCA9ICIiOwo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAmIE9Q Q0xTTUFTSykgPT0gT0NfQ09NTUEpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJDT01NQVxuIik7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gPT0gVElfQ09NTUEp Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc2VwID0gZ2V0dmFyX3MoaW50dmFyW1NVQlNFUF0pOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX3AocmVzLCB4YXNwcmludGYo IiVzJXMlcyIsIEwucywgc2VwLAo+IFIucykpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19M QU5EICk6Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRl YnVnX3ByaW50Zl9ldmFsKCJMQU5EXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKHJlcywgaXN0cnVlKEwudikgPyBwdGVzdChvcC0+ ci5uKSA6Cj4gMCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBicmVhazsKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhD KCBPQ19MT1IgKToKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX2V2YWwoIkxPUlxuIik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaShyZXMsIGlzdHJ1ZShMLnYpID8gMSA6IHB0 ZXN0KG9wLQo+ID5yLm4pKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOwo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNh c2UgWEMoIE9DX0JJTkFSWSApOgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2Ug WEMoIE9DX1JFUExBQ0UgKTogewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiQklOQVJZIC9cbiIpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1JFUExBQ0UgKToKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlJFUExB Q0VcbiIpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRvdWJsZSBSX2QgPSBnZXR2YXJfaShS LnYpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfZXZhbCgiQklOQVJZL1JFUExBQ0U6IFJfZDolZgo+IG9wbjolY1xuIiwgUl9kLCBv cG4pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfZXZhbCgiUl9kOiVmIG9wbjolY1xuIiwgUl9kLAo+IG9wbik7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKG9wbikgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSAnKyc6Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgTF9kICs9IFJfZDsKPiArQEAgLTMwODMsNiArMzQ4Myw3IEBAIHN0YXRpYyB2YXIgKmV2 YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2FzZSBYQyggT0NfQ09NUEFSRSApOiB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgaSA9IGk7IC8qIGZvciBjb21waWxlciAqLwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG91YmxlIExkOwo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf ZXZhbCgiQ09NUEFSRVxuIik7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChpc19udW1lcmljKEwudikgJiYgaXNfbnVtZXJpYyhSLnYpKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgTGQgPSBnZXR2YXJfaShMLnYpIC0gZ2V0dmFyX2koUi52KTsKPiArQEAgLTMxMDks NyArMzUxMCw3IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdDoKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1BPU1NJQkxF X0VSUk9SKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSAvKiBzd2l0Y2ggKi8K PiArLSBuZXh0Ogo+ICsrCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgob3Bp bmZvICYgT1BDTFNNQVNLKSA8PSBTSElGVF9USUxfVEhJUykKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wID0gb3AtPmEubjsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKChvcGluZm8gJiBPUENMU01BU0spID49IFJFQ1VSX0ZST01f VEhJUykKPiArQEAgLTMxMTgsNyArMzUxOSwxMCBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShub2Rl ICpvcCwgdmFyICpyZXMpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBicmVhazsKPiArwqDCoMKgwqDCoMKgwqB9IC8qIHdoaWxlIChvcCkgKi8KPiArIAo+ ICstwqDCoMKgwqDCoMKgbnZmcmVlKHYxKTsKPiArK8KgwqDCoMKgwqDCoG52ZnJlZSh0bXB2YXJz LCAyKTsKPiArKyN1bmRlZiBUTVBWQVIwCj4gKysjdW5kZWYgVE1QVkFSMQo+ICsrCj4gK8KgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoInJldHVybmluZyBmcm9tICVzKCk6ICVwXG4iLCBf X2Z1bmNfXywKPiByZXMpOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXM7Cj4gKyAjdW5kZWYg Zm5hcmdzCj4gK0BAIC0zMTI2LDI1ICszNTMwLDIxIEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5v ZGUgKm9wLCB2YXIgKnJlcykKPiArICN1bmRlZiBzcmVnCj4gKyB9Cj4gKyAKPiArLQo+ICsgLyog LS0tLS0tLS0gbWFpbiAmIGNvLiAtLS0tLS0tLSAqLwo+ICsgCj4gKy1zdGF0aWMgaW50IGF3a19l eGl0KGludCByKQo+ICsrc3RhdGljIGludCBhd2tfZXhpdCh2b2lkKQo+ICsgewo+ICstwqDCoMKg wqDCoMKgdmFyIHR2Owo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGk7Cj4gKy3CoMKgwqDCoMKg wqBoYXNoX2l0ZW0gKmhpOwo+ICstCj4gKy3CoMKgwqDCoMKgwqB6ZXJvX291dF92YXIoJnR2KTsK PiArIAo+ICvCoMKgwqDCoMKgwqDCoGlmICghZXhpdGluZykgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBleGl0aW5nID0gVFJVRTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbmV4dHJlYyA9IEZBTFNFOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV2 YWx1YXRlKGVuZHNlcS5maXJzdCwgJnR2KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBldmFsdWF0ZShlbmRzZXEuZmlyc3QsICZHLmV4aXRfX3RtcHZhcik7Cj4gK8KgwqDCoMKgwqDC oMKgfQo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgLyogd2FpdGluZyBmb3IgY2hpbGRyZW4gKi8KPiAr wqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgZmRoYXNoLT5jc2l6ZTsgaSsrKSB7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFzaF9pdGVtICpoaTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaGkgPSBmZGhhc2gtPml0ZW1zW2ldOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAoaGkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChoaS0+ZGF0YS5ycy5GICYmIGhpLT5kYXRhLnJzLmlz X3BpcGUpCj4gK0BAIC0zMTUzLDY1ICszNTUzLDcgQEAgc3RhdGljIGludCBhd2tfZXhpdChpbnQg cikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoH0K PiArIAo+ICstwqDCoMKgwqDCoMKgZXhpdChyKTsKPiArLX0KPiArLQo+ICstLyogaWYgZXhwciBs b29rcyBsaWtlICJ2YXI9dmFsdWUiLCBwZXJmb3JtIGFzc2lnbm1lbnQgYW5kIHJldHVybiAxLAo+ ICstICogb3RoZXJ3aXNlIHJldHVybiAwICovCj4gKy1zdGF0aWMgaW50IGlzX2Fzc2lnbm1lbnQo Y29uc3QgY2hhciAqZXhwcikKPiArLXsKPiArLcKgwqDCoMKgwqDCoGNoYXIgKmV4cHJjLCAqdmFs Owo+ICstCj4gKy3CoMKgwqDCoMKgwqBpZiAoIWlzYWxudW1fKCpleHByKSB8fCAodmFsID0gc3Ry Y2hyKGV4cHIsICc9JykpID09IE5VTEwpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gRkFMU0U7Cj4gKy3CoMKgwqDCoMKgwqB9Cj4gKy0KPiArLcKgwqDCoMKgwqDCoGV4 cHJjID0geHN0cmR1cChleHByKTsKPiArLcKgwqDCoMKgwqDCoHZhbCA9IGV4cHJjICsgKHZhbCAt IGV4cHIpOwo+ICstwqDCoMKgwqDCoMKgKnZhbCsrID0gJ1wwJzsKPiArLQo+ICstwqDCoMKgwqDC oMKgdW5lc2NhcGVfc3RyaW5nX2luX3BsYWNlKHZhbCk7Cj4gKy3CoMKgwqDCoMKgwqBzZXR2YXJf dShuZXd2YXIoZXhwcmMpLCB2YWwpOwo+ICstwqDCoMKgwqDCoMKgZnJlZShleHByYyk7Cj4gKy3C oMKgwqDCoMKgwqByZXR1cm4gVFJVRTsKPiArLX0KPiArLQo+ICstLyogc3dpdGNoIHRvIG5leHQg aW5wdXQgZmlsZSAqLwo+ICstc3RhdGljIHJzdHJlYW0gKm5leHRfaW5wdXRfZmlsZSh2b2lkKQo+ ICstewo+ICstI2RlZmluZSByc23CoMKgwqDCoMKgwqDCoMKgwqAgKEcubmV4dF9pbnB1dF9maWxl X19yc20pCj4gKy0jZGVmaW5lIGZpbGVzX2hhcHBlbiAoRy5uZXh0X2lucHV0X2ZpbGVfX2ZpbGVz X2hhcHBlbikKPiArLQo+ICstwqDCoMKgwqDCoMKgRklMRSAqRjsKPiArLcKgwqDCoMKgwqDCoGNv bnN0IGNoYXIgKmZuYW1lLCAqaW5kOwo+ICstCj4gKy3CoMKgwqDCoMKgwqBpZiAocnNtLkYpCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmNsb3NlKHJzbS5GKTsKPiArLcKgwqDCoMKg wqDCoHJzbS5GID0gTlVMTDsKPiArLcKgwqDCoMKgwqDCoHJzbS5wb3MgPSByc20uYWR2ID0gMDsK PiArLQo+ICstwqDCoMKgwqDCoMKgZm9yICg7Oykgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChnZXR2YXJfaShpbnR2YXJbQVJHSU5EXSkrMSA+PQo+IGdldHZhcl9pKGludHZh cltBUkdDXSkpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKGZpbGVzX2hhcHBlbikKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBOVUxMOwo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbmFtZSA9ICItIjsKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRiA9IHN0ZGluOwo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW5k ID0gZ2V0dmFyX3MoaW5jdmFyKGludHZhcltBUkdJTkRdKSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZm5hbWUgPSBnZXR2YXJfcyhmaW5kdmFyKGlhbWFycmF5KGludHZhcltBUkdW XSksCj4gaW5kKSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZuYW1lICYm ICpmbmFtZSAmJiAhaXNfYXNzaWdubWVudChmbmFtZSkpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRiA9IHhmb3Blbl9zdGRpbihmbmFtZSk7Cj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArLcKgwqDCoMKgwqDCoH0KPiArLQo+ICstwqDC oMKgwqDCoMKgZmlsZXNfaGFwcGVuID0gVFJVRTsKPiArLcKgwqDCoMKgwqDCoHNldHZhcl9zKGlu dHZhcltGSUxFTkFNRV0sIGZuYW1lKTsKPiArLcKgwqDCoMKgwqDCoHJzbS5GID0gRjsKPiArLcKg wqDCoMKgwqDCoHJldHVybiAmcnNtOwo+ICstI3VuZGVmIHJzbQo+ICstI3VuZGVmIGZpbGVzX2hh cHBlbgo+ICsrwqDCoMKgwqDCoMKgZXhpdChHLmV4aXRjb2RlKTsKPiArIH0KPiArIAo+ICsgaW50 IGF3a19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgTUFJTl9FWFRFUk5BTExZX1ZJU0lCTEU7 Cj4gK0BAIC0zMjI0LDEyICszNTY2LDcgQEAgaW50IGF3a19tYWluKGludCBhcmdjIFVOVVNFRF9Q QVJBTSwgY2hhcgo+ICoqYXJndikKPiArICNpZiBFTkFCTEVfRkVBVFVSRV9BV0tfR05VX0VYVEVO U0lPTlMKPiArwqDCoMKgwqDCoMKgwqBsbGlzdF90ICpsaXN0X2UgPSBOVUxMOwo+ICsgI2VuZGlm Cj4gKy3CoMKgwqDCoMKgwqBpbnQgaSwgajsKPiArLcKgwqDCoMKgwqDCoHZhciAqdjsKPiArLcKg wqDCoMKgwqDCoHZhciB0djsKPiArLcKgwqDCoMKgwqDCoGNoYXIgKiplbnZwOwo+ICstwqDCoMKg wqDCoMKgY2hhciAqdm5hbWVzID0gKGNoYXIgKil2TmFtZXM7IC8qIGNoZWF0ICovCj4gKy3CoMKg wqDCoMKgwqBjaGFyICp2dmFsdWVzID0gKGNoYXIgKil2VmFsdWVzOwo+ICsrwqDCoMKgwqDCoMKg aW50IGk7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqBJTklUX0coKTsKPiArIAo+ICtAQCAtMzIzOCw0 OCArMzU3NSw0MyBAQCBpbnQgYXdrX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyCj4g Kiphcmd2KQo+ICvCoMKgwqDCoMKgwqDCoGlmIChFTkFCTEVfTE9DQUxFX1NVUFBPUlQpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldGxvY2FsZShMQ19OVU1FUklDLCAiQyIpOwo+ ICsgCj4gKy3CoMKgwqDCoMKgwqB6ZXJvX291dF92YXIoJnR2KTsKPiArLQo+ICstwqDCoMKgwqDC oMKgLyogYWxsb2NhdGUgZ2xvYmFsIGJ1ZmZlciAqLwo+ICstwqDCoMKgwqDCoMKgZ19idWYgPSB4 bWFsbG9jKE1BWFZBUkZNVCArIDEpOwo+ICstCj4gKy3CoMKgwqDCoMKgwqB2aGFzaCA9IGhhc2hf aW5pdCgpOwo+ICstwqDCoMKgwqDCoMKgYWhhc2ggPSBoYXNoX2luaXQoKTsKPiArLcKgwqDCoMKg wqDCoGZkaGFzaCA9IGhhc2hfaW5pdCgpOwo+ICstwqDCoMKgwqDCoMKgZm5oYXNoID0gaGFzaF9p bml0KCk7Cj4gKy0KPiArwqDCoMKgwqDCoMKgwqAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyAqLwo+ ICstwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgKnZuYW1lczsgaSsrKSB7Cj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaW50dmFyW2ldID0gdiA9IG5ld3ZhcihuZXh0d29yZCgmdm5hbWVz KSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCp2dmFsdWVzICE9ICdcMzc3 JykKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFy X3ModiwgbmV4dHdvcmQoJnZ2YWx1ZXMpKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlbHNlCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNl dHZhcl9pKHYsIDApOwo+ICstCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCp2 bmFtZXMgPT0gJyonKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHYtPnR5cGUgfD0gVkZfU1BFQ0lBTDsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdm5hbWVzKys7Cj4gKyvCoMKgwqDCoMKgwqB2aGFzaCA9IGhh c2hfaW5pdCgpOwo+ICsrwqDCoMKgwqDCoMKgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNoYXIgKnZuYW1lcyA9IChjaGFyICopdk5hbWVzOyAvKiBjaGVhdCAqLwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKnZ2YWx1ZXMgPSAoY2hhciAqKXZWYWx1ZXM7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgKnZuYW1lczsgaSsrKSB7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhciAqdjsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50dmFyW2ld ID0gdiA9IG5ld3ZhcihuZXh0d29yZCgmdm5hbWVzKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqdnZhbHVlcyAhPSAnXDM3NycpCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz ZXR2YXJfcyh2LCBuZXh0d29yZCgmdnZhbHVlcykpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaSh2LCAwKTsKPiArKwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKnZuYW1l cyA9PSAnKicpIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZfU1BFQ0lBTDsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZuYW1lcysr Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiAr wqDCoMKgwqDCoMKgwqBoYW5kbGVfc3BlY2lhbChpbnR2YXJbRlNdKTsKPiArwqDCoMKgwqDCoMKg wqBoYW5kbGVfc3BlY2lhbChpbnR2YXJbUlNdKTsKPiArIAo+ICstwqDCoMKgwqDCoMKgbmV3Zmls ZSgiL2Rldi9zdGRpbiIpLT5GID0gc3RkaW47Cj4gKy3CoMKgwqDCoMKgwqBuZXdmaWxlKCIvZGV2 L3N0ZG91dCIpLT5GID0gc3Rkb3V0Owo+ICstwqDCoMKgwqDCoMKgbmV3ZmlsZSgiL2Rldi9zdGRl cnIiKS0+RiA9IHN0ZGVycjsKPiArLQo+ICvCoMKgwqDCoMKgwqDCoC8qIEh1aCwgcGVvcGxlIHJl cG9ydCB0aGF0IHNvbWV0aW1lcyBlbnZpcm9uIGlzIE5VTEwuIE9oCj4gd2VsbC4gKi8KPiArLcKg wqDCoMKgwqDCoGlmIChlbnZpcm9uKSBmb3IgKGVudnAgPSBlbnZpcm9uOyAqZW52cDsgZW52cCsr KSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW52aXJvbiBpcyB3cml0YWJs ZSwgdGh1cyB3ZSBkb24ndCBzdHJkdXAgaXQKPiBuZWVkbGVzc2x5ICovCj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcyA9ICplbnZwOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNoYXIgKnMxID0gc3RyY2hyKHMsICc9Jyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKHMxKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCpzMSA9ICdcMCc7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIEJvdGggZmluZHZhciBhbmQgc2V0dmFyX3UgdGFrZSBjb25zdCBj aGFyKgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBh cyAybmQgYXJnIC0+IGVudmlyb25tZW50IGlzIG5vdCB0cmFzaGVkCj4gKi8KPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX3UoZmluZHZhcihpYW1h cnJheShpbnR2YXJbRU5WSVJPTl0pLAo+IHMpLCBzMSArIDEpOwo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqczEgPSAnPSc7Cj4gKyvCoMKgwqDCoMKgwqBp ZiAoZW52aXJvbikgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKiplbnZw Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoZW52cCA9IGVudmlyb247ICpl bnZwOyBlbnZwKyspIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogZW52aXJvbiBpcyB3cml0YWJsZSwgdGh1cyB3ZSBkb24ndCBzdHJkdXAKPiBpdCBu ZWVkbGVzc2x5ICovCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNoYXIgKnMgPSAqZW52cDsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2hhciAqczEgPSBzdHJjaHIocywgJz0nKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHMxKSB7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqczEgPSAnXDAn Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogQm90aCBmaW5kdmFyIGFuZCBzZXR2YXJfdSB0YWtlCj4gY29uc3QgY2hhcioK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIGFzIDJuZCBhcmcgLT4gZW52aXJvbm1lbnQgaXMgbm90Cj4gdHJhc2hlZCAqLwo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc2V0dmFyX3UoZmluZHZhcihpYW1hcnJheShpbnR2YXJbRU5WSQo+IFJPTl0pLCBzKSwg czEgKyAxKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCpzMSA9ICc9JzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g K8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoG9wdCA9IGdldG9wdDMyKGFyZ3YsIE9Q VFNUUl9BV0ssICZvcHRfRiwgJmxpc3RfdiwgJmxpc3RfZiwKPiBJRl9GRUFUVVJFX0FXS19HTlVf RVhURU5TSU9OUygmbGlzdF9lLCkgTlVMTCk7Cj4gK0BAIC0zMjk1LDIwICszNjI3LDE5IEBAIGlu dCBhd2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIKPiAqKmFyZ3YpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghaXNfYXNzaWdubWVudChsbGlzdF9wb3AoJmxp c3RfdikpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg YmJfc2hvd191c2FnZSgpOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArKwo+ICsrwqDCoMKgwqDCoMKg LyogUGFyc2UgYWxsIHN1cHBsaWVkIHByb2dyYW1zICovCj4gKyvCoMKgwqDCoMKgwqBmbmhhc2gg PSBoYXNoX2luaXQoKTsKPiArK8KgwqDCoMKgwqDCoGFoYXNoID0gaGFzaF9pbml0KCk7Cj4gK8Kg wqDCoMKgwqDCoMKgd2hpbGUgKGxpc3RfZikgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNoYXIgKnMgPSBOVUxMOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEZJTEUg KmZyb21fZmlsZTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgZmQ7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqczsKPiArIAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnX3Byb2duYW1lID0gbGxpc3RfcG9wKCZsaXN0X2YpOwo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyb21fZmlsZSA9IHhmb3Blbl9zdGRpbihnX3Byb2du YW1lKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBvbmUgYnl0ZSBpcyByZXNl cnZlZCBmb3Igc29tZSB0cmljayBpbiBuZXh0X3Rva2VuCj4gKi8KPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmb3IgKGkgPSBqID0gMTsgaiA+IDA7IGkgKz0gaikgewo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0geHJlYWxsb2MocywgaSAr IDQwOTYpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBq ID0gZnJlYWQocyArIGksIDEsIDQwOTQsIGZyb21fZmlsZSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNbaV0gPSAnXDAn Owo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZjbG9zZShmcm9tX2ZpbGUpOwo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhcnNlX3Byb2dyYW0ocyArIDEpOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZkID0geG9wZW5fc3RkaW4oZ19wcm9nbmFtZSk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcyA9IHhtYWxsb2NfcmVhZChmZCwgTlVMTCk7 IC8qIGl0J3MgTlVMLXRlcm1pbmF0ZWQgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjbG9zZShmZCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyc2VfcHJvZ3Jh bShzKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZShzKTsKPiArwqDCoMKg wqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgZ19wcm9nbmFtZSA9ICJjbWQuIGxpbmUiOwo+ICtA QCAtMzMxNywxMSArMzY0OCwyMyBAQCBpbnQgYXdrX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFN LCBjaGFyCj4gKiphcmd2KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYXJzZV9w cm9ncmFtKGxsaXN0X3BvcCgmbGlzdF9lKSk7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsgI2VuZGlm Cj4gKysvL0ZJWE1FOiBwcmVzZXJ2ZSBvcmRlciBvZiAtZSBhbmQgLWYKPiArKy8vVE9ETzogaW1w bGVtZW50IC1pIExJQlJBUlkgYW5kIC1FIEZJTEUgdG9vLCB0aGV5IGFyZSBlYXN5LWlzaAo+ICvC oMKgwqDCoMKgwqDCoGlmICghKG9wdCAmIChPUFRfZiB8IE9QVF9lKSkpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCEqYXJndikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJiX3Nob3dfdXNhZ2UoKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcGFyc2VfcHJvZ3JhbSgqYXJndisrKTsKPiArwqDCoMKgwqDCoMKg wqB9Cj4gKyvCoMKgwqDCoMKgwqAvKiBGcmVlIHVudXNlZCBwYXJzZSBzdHJ1Y3R1cmVzICovCj4g KyvCoMKgwqDCoMKgwqAvL2hhc2hfZnJlZShmbmhhc2gpOyAvLyB+MjUwIGJ5dGVzIHdoZW4gZW1w dHksIHVzZWQgb25seSBmb3IKPiBmdW5jdGlvbiBuYW1lcwo+ICsrwqDCoMKgwqDCoMKgLy9eXl5e Xl5eXl5eXl5eXl5eXiBkb2VzIG5vdCB3b3JrLCBoYXNoX2NsZWFyKCkgaW5zaWRlIFNFR1ZzCj4g KyvCoMKgwqDCoMKgwqAvLyAoSU9XOiBoYXNoX2NsZWFyKCkgYXNzdW1lcyBpdCdzIGEgaGFzaCBv ZiB2YXJpYWJsZXMuCj4gZm5oYXNoIGlzIG5vdCkuCj4gKyvCoMKgwqDCoMKgwqBmcmVlKGZuaGFz aC0+aXRlbXMpOwo+ICsrwqDCoMKgwqDCoMKgZnJlZShmbmhhc2gpOwo+ICsrwqDCoMKgwqDCoMKg Zm5oYXNoID0gTlVMTDsgLy8gZGVidWcKPiArK8KgwqDCoMKgwqDCoC8vaGFzaF9mcmVlKGFoYXNo KTsgLy8gZW1wdHkgYWZ0ZXIgcGFyc2luZywgd2lsbCByZXVzZSBhcwo+IGZkaGFzaCBpbnN0ZWFk IG9mIGZyZWVpbmcKPiArKwo+ICsrwqDCoMKgwqDCoMKgLyogUGFyc2luZyBkb25lLCBvbiB0byBl eGVjdXRpbmcgKi8KPiArIAo+ICvCoMKgwqDCoMKgwqDCoC8qIGZpbGwgaW4gQVJHViBhcnJheSAq Lwo+ICvCoMKgwqDCoMKgwqDCoHNldGFyaV91KGludHZhcltBUkdWXSwgMCwgImF3ayIpOwo+ICtA QCAtMzMzMCw5ICszNjczLDE0IEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0s IGNoYXIKPiAqKmFyZ3YpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldGFyaV91 KGludHZhcltBUkdWXSwgKytpLCAqYXJndisrKTsKPiArwqDCoMKgwqDCoMKgwqBzZXR2YXJfaShp bnR2YXJbQVJHQ10sIGkgKyAxKTsKPiArIAo+ICstwqDCoMKgwqDCoMKgZXZhbHVhdGUoYmVnaW5z ZXEuZmlyc3QsICZ0dik7Cj4gKyvCoMKgwqDCoMKgwqAvL2ZkaGFzaCA9IGFoYXNoOyAvLyBkb25l IHZpYSBkZWZpbmUKPiArK8KgwqDCoMKgwqDCoG5ld2ZpbGUoIi9kZXYvc3RkaW4iKS0+RiA9IHN0 ZGluOwo+ICsrwqDCoMKgwqDCoMKgbmV3ZmlsZSgiL2Rldi9zdGRvdXQiKS0+RiA9IHN0ZG91dDsK PiArK8KgwqDCoMKgwqDCoG5ld2ZpbGUoIi9kZXYvc3RkZXJyIiktPkYgPSBzdGRlcnI7Cj4gKysK PiArK8KgwqDCoMKgwqDCoGV2YWx1YXRlKGJlZ2luc2VxLmZpcnN0LCAmRy5tYWluX190bXB2YXIp Owo+ICvCoMKgwqDCoMKgwqDCoGlmICghbWFpbnNlcS5maXJzdCAmJiAhZW5kc2VxLmZpcnN0KQo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGF3a19leGl0KEVYSVRfU1VDQ0VTUyk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXdrX2V4aXQoKTsKPiArIAo+ICvCoMKgwqDC oMKgwqDCoC8qIGlucHV0IGZpbGUgY291bGQgYWxyZWFkeSBiZSBvcGVuZWQgaW4gQkVHSU4gYmxv Y2sgKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAoIWlGKQo+ICtAQCAtMzM0Nyw3ICszNjk1LDcgQEAg aW50IGF3a19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhcgo+ICoqYXJndikKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRyZWMgPSBGQUxT RTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGluY3Zh cihpbnR2YXJbTlJdKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGluY3ZhcihpbnR2YXJbRk5SXSk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGV2YWx1YXRlKG1haW5zZXEuZmlyc3QsICZ0dik7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV2YWx1YXRlKG1haW5zZXEu Zmlyc3QsICZHLm1haW5fX3RtcHZhcik7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChuZXh0ZmlsZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArQEAg LTMzNTksNiArMzcwNyw2IEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNo YXIKPiAqKmFyZ3YpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlGID0gbmV4dF9p bnB1dF9maWxlKCk7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsgCj4gKy3CoMKgwqDCoMKgwqBhd2tf ZXhpdChFWElUX1NVQ0NFU1MpOwo+ICsrwqDCoMKgwqDCoMKgYXdrX2V4aXQoKTsKPiArwqDCoMKg wqDCoMKgwqAvKnJldHVybiAwOyovCj4gKyB9Cj4gKy0tIAo+ICsyLjMzLjAKPiArCj4gZGlmZiAt LWdpdCBhL21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAyLW1hbi1maXgtc2Vn ZmF1bHQtCj4gaW4tbWFuLTEucGF0Y2ggYi9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3li b3gvMDAwMi1tYW4tZml4LQo+IHNlZ2ZhdWx0LWluLW1hbi0xLnBhdGNoCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi40YTkzMGI3YjZmCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAyLW1hbi1maXgtc2Vn ZmF1bHQtaW4tbWFuLQo+IDEucGF0Y2gKPiBAQCAtMCwwICsxLDMwIEBACj4gK0Zyb20gNDk3NWNh Y2U5YmY5NmJmZGUxNzRmOGJiNWNjNDA2OGQyZWEyOTRkNCBNb24gU2VwIDE3IDAwOjAwOjAwCj4g MjAwMQo+ICtGcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgo+ ICtEYXRlOiBUdWUsIDE1IEp1biAyMDIxIDE0OjQ3OjQ2ICswMjAwCj4gK1N1YmplY3Q6IFtQQVRD SF0gbWFuOiBmaXggc2VnZmF1bHQgaW4gIm1hbiAxIgo+ICsKPiArZnVuY3Rpb27CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9sZMKgwqDCoMKgIG5ld8KgwqAKPiBkZWx0YQo+ICttYW5f bWFpbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOTQywqDCoMKgwqAgOTU0wqDCoMKg wqAKPiArMTIKPiArCj4gK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhA Z29vZ2xlbWFpbC5jb20+Cj4gKwo+ICtVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs0ZDRmYzVj YTVlZTRmXQo+ICtDVkU6IENWRS0yMDIxLTQyMzczCj4gK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkg PFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KPiArLS0tCj4gKyBtaXNjdXRpbHMvbWFuLmMgfCAyICst Cj4gKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKPiArCj4g K2RpZmYgLS1naXQgYS9taXNjdXRpbHMvbWFuLmMgYi9taXNjdXRpbHMvbWFuLmMKPiAraW5kZXgg NzIyZjY2NDFlLi5kMzE5ZThiYmEgMTAwNjQ0Cj4gKy0tLSBhL21pc2N1dGlscy9tYW4uYwo+ICsr KysgYi9taXNjdXRpbHMvbWFuLmMKPiArQEAgLTMyNCw3ICszMjQsNyBAQCBpbnQgbWFuX21haW4o aW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKPiArIAo+ICvCoMKgwqDCoMKgwqDC oC8qIGlzIDFzdCBBUkcgYSBTRUNUSU9OPyAqLwo+ICvCoMKgwqDCoMKgwqDCoHNlY19saXN0ID0g Y29uZl9zZWNfbGlzdDsKPiArLcKgwqDCoMKgwqDCoGlmIChpc19zZWN0aW9uX25hbWUoY29uZl9z ZWNfbGlzdCwgKmFyZ3YpKSB7Cj4gKyvCoMKgwqDCoMKgwqBpZiAoaXNfc2VjdGlvbl9uYW1lKGNv bmZfc2VjX2xpc3QsICphcmd2KSAmJiBhcmd2WzFdKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIHllcyAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZWNf bGlzdCA9ICphcmd2Kys7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+IGRpZmYgLS1naXQgYS9tZXRhL3Jl Y2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMy4yLmJiCj4gYi9tZXRhL3JlY2lwZXMtY29y ZS9idXN5Ym94L2J1c3lib3hfMS4zMy4yLmJiCj4gaW5kZXggNDRjODNhYjgzYy4uNGEwZDNiNDU1 NiAxMDA2NDQKPiAtLS0gYS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMy4y LmJiCj4gKysrIGIvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzMuMi5iYgo+ IEBAIC00OCw2ICs0OCw4IEBAIFNSQ19VUkkgPQo+ICJodHRwczovL2J1c3lib3gubmV0L2Rvd25s b2Fkcy9idXN5Ym94LSR7UFZ9LnRhci5iejI7bmFtZT10YXJiYWxswqBcCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoAo+IGZpbGU6Ly8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNy ZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2gKPiDCoFwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Cj4gZmlsZTovLzAwMDEtZ2VuX2J1aWxkX2ZpbGVzLVVzZS1DLWxvY2FsZS13aGVuLWNhbGxpbmct c2VkLW9uLWdsby5wYXRjaAo+IMKgXAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlsZTovLzAw MDEtbWt0ZW1wLWFkZC10bXBkaXItb3B0aW9uLnBhdGNowqBcCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIGZpbGU6Ly8wMDAxLWF3ay1maXgtQ1ZFcy5wYXRjaMKgXAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBmaWxlOi8vMDAwMi1tYW4tZml4LXNlZ2ZhdWx0LWluLW1hbi0xLnBhdGNowqBcCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAiCj4gwqBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZp bGU6Ly9tdXNsLmNmZ8KgIgo+IMKgCj4gCj4gLT0tPS09LT0tPS09LT0tPS09LT0tPS0KPiBMaW5r czogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4KPiBWaWV3L1Jl cGx5IE9ubGluZSAoIzE2MDA0Nik6Cj4gaHR0cHM6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL2cv b3BlbmVtYmVkZGVkLWNvcmUvbWVzc2FnZS8xNjAwNDYKPiBNdXRlIFRoaXMgVG9waWM6IGh0dHBz Oi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tdC84ODAwNzcwMy8zNjE2NzAyCj4gR3JvdXAgT3du ZXI6IG9wZW5lbWJlZGRlZC1jb3JlK293bmVyQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKPiBVbnN1 YnNjcmliZToKPiBodHRwczovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvZy9vcGVuZW1iZWRkZWQt Y29yZS91bnN1YsKgWwo+IGFudWoubWl0dGFsQGludGVsLmNvbV0KPiAtPS09LT0tPS09LT0tPS09 LT0tPS09LQo+IAoK