Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rLoAq-000ZLW-8G for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jan 2024 17:40:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rLoAp-002I6N-G0 for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jan 2024 17:39:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rLoAo-002I6E-OR for pgsql-hackers@lists.postgresql.org; Fri, 05 Jan 2024 17:39:59 +0000 Received: from mail-vi1eur05on2109.outbound.protection.outlook.com ([40.107.21.109] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rLoAk-0001hw-IT for pgsql-hackers@lists.postgresql.org; Fri, 05 Jan 2024 17:39:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X1oQsYBnRqE4+heGeucPn7+2Y2j7NhruEMIXBQvfiDuYVDljGHAAt5VCEq+seP8gjZlbu6jQiIZyHNeY/xxRSIyjgylQkmcqFDjjGjcvJ/eBf86/AkpUPKOWpJafC+ed8UFePLnlralAvNiJeU320VogbINvXxgs781fCnAN8WwEPTVreO/+9+SZLMMLSl6DZDZijvo5xjK3JYrm92RAINjM1bBlL6oJkniQ6o9eGspF1nyul2k1Rk6Uxlfs3koeLbbuVp/3O2NgedVUolxFImHdu2Y5HsZWExYo9oXIJR96PKfRyzLgVP1aCc7ichsODxchuwgP2UukCWkcQXDowQ== 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=Wy0QkD9mGPBmPa5q2vuiaGw1H9tUaeosNf+k5WkuVh8=; b=axzmzbKmNXSNIwCGZYPU/vTrpBEV8/n5Th9P1TjnNEsLjZOinWntGZNlTXbLKzRUh9fXQYUwhz4Is1Xb3gOEWogutzd5mS/AKFRnZZ67LvVwQlepPGOgHBnUNALLMdhitutv2LWgrJnoqC8uXJ9NAKgslP32bFnCMqHhtvtBhZFqe3l50sxssEV9d93ro22Uw29nqJIJnuQJeZh3MOVMv24yKIOZQWTrUXohYrmDTPYG1s3KsSV2NV1sVw7M6fT4wfhSmbvVc+s6LiASP8UG+lTOyWU+VgQKImqLE7m3j5uIAOJDSPXRYCAOi1ZrSMgNj602fAcdcedAUnd4lk+nJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ulb.be; dmarc=pass action=none header.from=ulb.be; dkim=pass header.d=ulb.be; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ulb.be; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Wy0QkD9mGPBmPa5q2vuiaGw1H9tUaeosNf+k5WkuVh8=; b=YrCrKHMGfc5v+ULQscky/oAHC8F7/f4q8bgWJXOIdCICAZWrhZqDxqvx0x/+h1Dg5IFcNPmDJzpq0C8uFkUnyy5EqHBJng/NAuA4zdzORjw2U2euHZv7jPEB3RF/h42UB6R17vE+fG7ylih9cIAlzoCOT9Oq1SS5nuGCqNEz+UU= Received: from DB8P190MB0731.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:125::14) by PR3P190MB0953.EURP190.PROD.OUTLOOK.COM (2603:10a6:102:87::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15; Fri, 5 Jan 2024 17:39:51 +0000 Received: from DB8P190MB0731.EURP190.PROD.OUTLOOK.COM ([fe80::ab74:ae27:61fa:abdf]) by DB8P190MB0731.EURP190.PROD.OUTLOOK.COM ([fe80::ab74:ae27:61fa:abdf%3]) with mapi id 15.20.7181.009; Fri, 5 Jan 2024 17:39:51 +0000 From: Schoemans Maxime To: vignesh C CC: Tom Lane , Damir Belyalov , PostgreSQL Hackers , SAKR Mahmoud , Diogo Repas , LUO Zhicheng , Tomas Vondra , Andrey Lepikhov Subject: Re: Implement missing join selectivity estimation for range types Thread-Topic: Implement missing join selectivity estimation for range types Thread-Index: AQHZK2HTFElV4cAAG0qhvSWvkCiFBa6keKmAgAAVOQCAAtFcgIACBB+AgAYni4CAVKFYAICOo58AgABu2wCAG78GAIAAfkQAgMyTtICACXamgIBHqSyAgAB2DQA= Date: Fri, 5 Jan 2024 17:39:50 +0000 Message-ID: <08b2dea8-6dca-06e4-a53d-3e6334e7645b@ulb.be> References: <8afecd87-d1e5-241c-5e3e-75e1c62c279b@enterprisedb.com> <1bc5e1e4-380b-213d-6e6a-d5e8f7f0c7f5@enterprisedb.com> <84ffb566-8038-ab35-c841-7a5e5728a247@enterprisedb.com> <525ea957-88ff-e2c6-2975-474c849aa234@ulb.be> <48a78946-f380-a279-e75f-711846e509f8@ulb.be> <4c443cf6-96af-0953-fd5b-bd2b5c0c6f00@ulb.be> <2516071.1699991181@sss.pgh.pa.us> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ulb.be; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DB8P190MB0731:EE_|PR3P190MB0953:EE_ x-ms-office365-filtering-correlation-id: d0432abf-6b87-40c9-9b15-08dc0e1551d2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oztBY7ROda+NdUwZDIBBW29DVvJTJQTyFtKSJSUfKuZKQLw9PdKdoBt+Y5Qiw/mKSP2iGJCtenw6CtiOGep0Ki+LdCCM5CofTinMfkvoPhWteY1HCFbh50LbBGI/wBx9stOz8RFqKFYb+qm425Fj+Cq+q9S33TUKtOkgTyZJz6VetlouZDOXSng0EcluqpD/PxFzt6FLzIsVc2gevC6OGu9nSdFkl8qvu0USL2xQ5W1tcCR71/FlRy5tI4b7h7BgWY1asf5R8My7w9RJLaDbOxrakMzEITxpFptd8l0KQtGQ+oRiFqeQGX9Uq2w3wo8i3+BRVBjELUbxQhAYsoFLe8o0P+pGFBs8yYhpVMDAmTDehmZgs2JtRLyHaRyvsX/6Fq44ciNycc9FV88n5kpqLi3n8qcr7GmWR8Aub5kCDtpRH2fVRxAfB4hTRPOiaKnhncOPg+vQ7MCb2kCZ24HffUe4HVYyht+BJl/K3067modlEZRoKQkF4CrZ8XOEB8ehktMLca5ycqf32dneH4YnFnwUlOpF3nmdXatL6uEASd5dVAg7IN2FYpL+4syaTVPU9j50Nv5jICvnQ0j98ULQkL5ceMYcDltu6pAKdrpSejvv9DFvgpaSrbvBpQJKXxBC9MtNzx0KIx+d/1VgvQ7EOg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8P190MB0731.EURP190.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(136003)(366004)(376002)(39860400002)(230922051799003)(1800799012)(64100799003)(186009)(451199024)(26005)(2616005)(6512007)(83380400001)(53546011)(66946007)(6916009)(2906002)(122000001)(54906003)(66556008)(76116006)(64756008)(41300700001)(66476007)(478600001)(8676002)(5660300002)(8936002)(6506007)(38100700002)(6486002)(316002)(91956017)(786003)(66446008)(4326008)(71200400001)(86362001)(558084003)(31696002)(36756003)(99936003)(38070700009)(31686004)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dVlQRElOOUxvZmpEOEloUDZRa2tybnJlTU9ZOCtuMmovTklYcWEyMW81bnYw?= =?utf-8?B?eHNseUNLMFpoQ0RqcWNqT1pkbUF1WGp6UVhuL3E3T1FNazNVYmU0cHNxV1RL?= =?utf-8?B?S3dPQXFkbXlXSXM0Q0paVk1saWNabmhLVmVWQUp1SW1Na0N4OGFxVHJPR2ds?= =?utf-8?B?SEhVWUVZUG9ia1FKbWNHTDhMcmlKNEFrTkVHNXV6cFpEYmIvYzd1T2hHcEVD?= =?utf-8?B?OEZzY0FHZEZ2MG5qS00ycFZ0UEZrcmZMaUJ1L2drR2Uxc1VIWDBrOGZoN1Qv?= =?utf-8?B?Y0ZHQjNQeEZBTFJ6SUtEdWk3ZTdwQksrazRqTHQvMXVXVFQ4TUN1S0gxbCtu?= =?utf-8?B?SWIvTDNqRWVaUEl5VU8yZy93cFBxYnJpaGJCbHhweDdTRzNrZTBTdkw2c2gy?= =?utf-8?B?RC9rTE8rczFEbjhHZ0pHSk5FTW45M2FKTVlLSjFVQnRPRkxuM1dmMFd4dWov?= =?utf-8?B?NG9VODdIcWdUQTNsT2w5eHY3ZW1mWkVRTkEzQ1NITDV5UmZiTzJLWHZKeE1n?= =?utf-8?B?bkloS1NtQVJnMHBvaU8vOGlBdXhselFWR2JIWFYxUWQ0d1VwUmoreXhEQzhT?= =?utf-8?B?OU95SHVOaU1qZ0syMlQ0VUt4TWtlb0FHZldKYzA4Y1FxQ3FoSHIyZzlTMm5I?= =?utf-8?B?cVJqeVVqeE5lMVV3cmF0L3lyVWhRYVN3VTF0ajJ2OTM4MGZHVDViUnI2SXBU?= =?utf-8?B?N29vanlXazY3clNvd09qZnJXUFZUU1lEbEpacjM1YXNFQmMyR1VSTkk4aEJD?= =?utf-8?B?MGlhYUN3dEpIdTdVdUVXbVRBQTA1K3BrelljRnRFYWJVMlFXcFNyTWtmclBV?= =?utf-8?B?RjRhQUtjc0dOOHhQS3hzYUl1S2JyMlBWcW5CS3N3K0I1Skw4MU9HaGhhRUtR?= =?utf-8?B?azZZKy9WYXcrMmQ3RHFDNWhkaDhXMy8zUThJUGIrY0hoWFVUWXJmb0ZhcHB2?= =?utf-8?B?R2U0R0s2Y20vZnl0KytqcUx0NkFLVFhDRnpINVl5K25XQTBob3NpMXVJZjcw?= =?utf-8?B?amhaaVZyaXJHWlMvZ0c4Wjg2aFRVMmxoRDNiRTRrL0MxOXBsbXZ2NW9aN0tm?= =?utf-8?B?aCsybXI5LzNlanh2bXhYdDJnS1RyVFVYUFlJT29MeDJJWlQ1ZWQzWnhRUldD?= =?utf-8?B?cUZnaWlMUVI2a3ViK1ZydGJNeHo0ZGpsa1FpbnhkZktYdjZzZkVoYWI4dy9M?= =?utf-8?B?d1RuTWxYRXZGM0lad1hMbkhrdldUVXp2YUs2RE5tTjhqYndHMUlvL1JNb0Iz?= =?utf-8?B?TEg1OGRWZE1NalFLVVZ0cWJRVFFFOER3eUF3TjdOVGhibCswMFpyT0I4N1dr?= =?utf-8?B?VlkxZ0hJVjB4OThsMnI0RmNhdkpnWmhzUjRyaUtiRm1MUkRLR2gyUlgvcWd5?= =?utf-8?B?YlpDYTk3ZUJGKzdVVTluMjJwa1U5ajQ2YXhPUUZ3QzRhcGpPR3N4MCtzRHNN?= =?utf-8?B?WDV3cmlIWDJJclMveU9tOWg1OUhsOUpjV2luOG1ObEVnZ29NQW9RRFVTc3lZ?= =?utf-8?B?eklJM1cvR0hrQVNneE8zMzhvZDNra3pkZDVCR3YzRWl5NDl4WnJGMWcyakR1?= =?utf-8?B?c2w5aEREbTl6V3VBQ1dVNU1Bby83S3Jmbm5nT29lbkxHbEJSNjUwODc5VlVt?= =?utf-8?B?QmdpMDg2NjE2ZEM0ZXlGdml1UHBDRTdZUnF5ZW90emhMak10ajZSSklJRkdX?= =?utf-8?B?d0ZqN2JyKzBsYzdhVGNCU0hteHBNUXZ1bzlNRk1QMDNGRm0wd09tNFlnNW5l?= =?utf-8?B?UFphM1RQektCT3NZeDZua09yT3JvYTBOOGR1UWFhbnJCRXIxZ0IzWHlpdGtp?= =?utf-8?B?Um8vc1p2amE2ajcrU0R1MTl6U2I0ejdvbWtvRlA5NkF6Y0VrWS9LTFpJN3ZH?= =?utf-8?B?RHRIQlA4LzZrM0graE9JWUc0SUttajh1dEg2TDhMMjJ3SnVDZDVqZDlueStu?= =?utf-8?B?d0NsdWNJWjFyQkl0eE8xMVpmcTJ0T2Mwa2dGL0sxb3dLS01SeFh1QnBGeXRJ?= =?utf-8?B?L3JoQXEyTVBjZkpSWmU2Qm1iMTgvWjkzOHlKRlpjNDl3Qko1bS9Cc3JLVjlQ?= =?utf-8?B?b0daU2dKUnVTM1RidFNidm5nVC83dXc1cjJFTWRSdHpleGRObWFnTUlEYSs4?= =?utf-8?Q?XsqKIrPp0Zy3KiLtw21+rZxJq?= Content-Type: multipart/mixed; boundary="_002_08b2dea86dca06e4a53d3e6334e7645bulbbe_" MIME-Version: 1.0 X-OriginatorOrg: ulb.be X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB8P190MB0731.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d0432abf-6b87-40c9-9b15-08dc0e1551d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 17:39:50.9244 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 30a5145e-75bd-4212-bb02-8ff9c0ea4ae9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ccQrwaTTP629Uy280ftEpC+Oh8LZN8wB0CLdQTIdoBSqfwPUzdyKPwLtI65KHblusSKp1FPEElAwmLGbS69H2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P190MB0953 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_08b2dea86dca06e4a53d3e6334e7645bulbbe_ Content-Type: text/plain; charset="utf-8" Content-ID: <4C3FD479642AE842BD382137E7357277@EURP190.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 T24gMDUvMDEvMjAyNCAxMTozNywgdmlnbmVzaCBDIHdyb3RlOg0KID4gT25lIG9mIHRoZSB0ZXN0 cyB3YXMgYWJvcnRlZCBhdCBbMV0sIGtpbmRseSBwb3N0IGFuIHVwZGF0ZWQgcGF0Y2ggZm9yIA0K dGhlIHNhbWU6DQoNClRoYW5rIHlvdSBmb3Igbm90aWZ5aW5nIHVzLg0KSSBiZWxpZXZlIEkgZml4 ZWQgdGhlIGlzc3VlIGJ1dCBpdCBpcyBoYXJkIHRvIGJlIGNlcnRhaW4gYXMgdGhlIGlzc3VlIA0K ZGlkIG5vdCBhcmlzZSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgbG9jYWxseS4N Cg0KUmVnYXJkcywNCk1heGltZQ== --_002_08b2dea86dca06e4a53d3e6334e7645bulbbe_ Content-Type: text/x-patch; name="v4-0001-Join-Selectivity-Estimation-for-Range-types.patch" Content-Description: v4-0001-Join-Selectivity-Estimation-for-Range-types.patch Content-Disposition: attachment; filename="v4-0001-Join-Selectivity-Estimation-for-Range-types.patch"; size=62132; creation-date="Fri, 05 Jan 2024 17:39:50 GMT"; modification-date="Fri, 05 Jan 2024 17:39:50 GMT" Content-ID: <9BE0DC19FB60014988C45334D6C8F229@EURP190.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXNfc2VsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXNfc2VsZnVuY3MuYwpp bmRleCA5ODFjMWZkMjk4Li42YWJjNDNmMTQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbXVsdGlyYW5nZXR5cGVzX3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L211bHRpcmFuZ2V0eXBlc19zZWxmdW5jcy5jCkBAIC0xMzM1LDMgKzEzMzUsNTQyIEBAIGNh bGNfaGlzdF9zZWxlY3Rpdml0eV9jb250YWlucyhUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsCiAK IAlyZXR1cm4gc3VtX2ZyYWM7CiB9CisKKy8qCisgKiBUaGlzIGlzIGEgdXRpbGl0eSBmdW5jdGlv biB1c2VkIHRvIGVzdGltYXRlIHRoZSBqb2luIHNlbGVjdGl2aXR5IG9mCisgKiByYW5nZSBhdHRy aWJ1dGVzIHVzaW5nIHJhbmdlYm91bmQgaGlzdG9ncmFtIHN0YXRpc3RpY3MgYXMgZGVzY3JpYmVk CisgKiBpbiB0aGlzIHBhcGVyOgorICoKKyAqIERpb2dvIFJlcGFzLCBaaGljaGVuZyBMdW8sIE1h eGltZSBTY2hvZW1hbnMgYW5kIE1haG1vdWQgU2FrciwgMjAyMgorICogU2VsZWN0aXZpdHkgRXN0 aW1hdGlvbiBvZiBJbmVxdWFsaXR5IEpvaW5zIEluIERhdGFiYXNlcworICogaHR0cHM6Ly9kb2ku b3JnLzEwLjQ4NTUwL2FyWGl2LjIyMDYuMDczOTYKKyAqCisgKiBUaGUgYXR0cmlidXRlcyBiZWlu ZyBqb2luZWQgd2lsbCBiZSB0cmVhdGVkIGFzIHJhbmRvbSB2YXJpYWJsZXMKKyAqIHRoYXQgZm9s bG93IGEgZGlzdHJpYnV0aW9uIG1vZGVsZWQgYnkgYSBQcm9iYWJpbGl0eSBEZW5zaXR5IEZ1bmN0 aW9uIChQREYpLgorICogTGV0IHRoZSB0d28gYXR0cmlidXRlcyBiZSBkZW5vdGVkIFgsIFkuCisg KiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBwcm9iYWJpbGl0eSBQKFggPCBZKS4KKyAqIE5vdGUg dGhhdCB0aGUgUERGcyBvZiB0aGUgdHdvIHZhcmlhYmxlcyBjYW4gZWFzaWx5IGJlIG9idGFpbmVk CisgKiBmcm9tIHRoZWlyIGJvdW5kcyBoaXN0b2dyYW0sIHJlc3BlY3RpdmVseSBoaXN0MSBhbmQg aGlzdDIgLgorICoKKyAqIExldCB0aGUgUERGIG9mIFgsIFkgYmUgZGVub3RlZCBhcyBmX1gsIGZf WS4KKyAqIFRoZSBwcm9iYWJpbGl0eSBQKFggPCBZKSBjYW4gYmUgZm9ybWFsaXplZCBhcyBmb2xs b3dzOgorICogUChYIDwgWSk9IGludGVncmFsXy1pbmZeaW5mKCBpbnRlZ3JhbF8taW5mXnkgKCBm X1goeCkgKiBmX1koeSkgZHggZHkgKSApCisgKiAgICAgICAgICAgICAgICA9IGludGVncmFsXy1p bmZeaW5mKCBGX1goeSkgKiBmX1koeSkgZHkgKQorICogd2hlcmUgRl9YKHkpIGRlbm90ZSB0aGUg Q3VtdWxhdGl2ZSBEaXN0cmlidXRpb24gRnVuY3Rpb24gb2YgWCBhdCB5LgorICogTm90ZSB0aGF0 IEZfWCBpcyB0aGUgc2VsZWN0aXZpdHkgZXN0aW1hdGlvbiAobm9uLWpvaW4pLAorICogd2hpY2gg aXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIGZ1bmN0aW9uIGNhbGNfaGlzdF9zZWxlY3Rpdml0eV9z Y2FsYXIuCisgKgorICogTm93IGdpdmVuIHRoZSBoaXN0b2dyYW1zIG9mIHRoZSB0d28gYXR0cmli dXRlcyBYLCBZLCB3ZSBub3RlIHRoZSBmb2xsb3dpbmc6CisgKiAtIFRoZSBQREYgb2YgWSBpcyBh IHN0ZXAgZnVuY3Rpb24KKyAqIChjb25zdGFudCBwaWVjZS13aXNlLCB3aGVyZSBlYWNoIHBpZWNl IGlzIGRlZmluZWQgaW4gYSBiaW4gb2YgWSdzIGhpc3RvZ3JhbSkKKyAqIC0gVGhlIENERiBvZiBY IGlzIGxpbmVhciBwaWVjZS13aXNlCisgKiAgIChlYWNoIHBpZWNlIGlzIGRlZmluZWQgaW4gYSBi aW4gb2YgWCdzIGhpc3RvZ3JhbSkKKyAqIFRoaXMgbGVhZHMgdG8gdGhlIGNvbmNsdXNpb24gdGhh dCB0aGVpciBwcm9kdWN0CisgKiAodXNlZCB0byBjYWxjdWxhdGUgdGhlIGVxdWF0aW9uIGFib3Zl KSBpcyBhbHNvIGxpbmVhciBwaWVjZS13aXNlLgorICogQSBuZXcgcGllY2Ugc3RhcnRzIHdoZW5l dmVyIGVpdGhlciB0aGUgYmluIG9mIFggb3IgdGhlIGJpbiBvZiBZIGNoYW5nZXMuCisgKiBCeSBw YXJhbGxlbCBzY2FubmluZyB0aGUgdHdvIHJhbmdlYm91bmQgaGlzdG9ncmFtcyBvZiBYIGFuZCBZ LAorICogd2UgZXZhbHVhdGUgb25lIHBpZWNlIG9mIHRoZSByZXN1bHQgYmV0d2VlbiBldmVyeSB0 d28gY29uc2VjdXRpdmUgcmFuZ2Vib3VuZHMKKyAqIGluIHRoZSB1bmlvbiBvZiB0aGUgdHdvIGhp c3RvZ3JhbXMuCisgKgorICogR2l2ZW4gdGhhdCB0aGUgcHJvZHVjdCBGX1ggKiBmX3kgaXMgbGlu ZWFyIGluIHRoZSBpbnRlcnZhbAorICogYmV0d2VlbiBldmVyeSB0d28gY29uc2VjdXRpdmUgcmFu Z2Vib3VuZHMsIGxldCB0aGVtIGJlIGRlbm90ZWQgcHJldiwgY3VyLAorICogaXQgY2FuIGJlIHNo b3duIHRoYXQgdGhlIGFib3ZlIGZvcm11bGEgY2FuIGJlIGRpc2NyZXRpemVkIGludG8gdGhlIGZv bGxvd2luZzoKKyAqIFAoWCA8IFkpID0KKyAqICAgMC41ICogc3VtXzBee24rbS0xfSAoICggRl9Y KHByZXYpICsgRl9YKGN1cikgKSAqICggRl9ZKGN1cikgLSBGX1kocHJldikgKSApCisgKiB3aGVy ZSBuLCBtIGFyZSB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIGhpc3RvZ3JhbXMuCisgKgorICogQXMg c3VjaCwgaXQgaXMgcG9zc2libGUgdG8gZnVsbHkgY29tcHV0ZSB0aGUgam9pbiBzZWxlY3Rpdml0 eQorICogYXMgYSBzdW1tYXRpb24gb2YgQ0RGcywgaXRlcmF0aW5nIG92ZXIgdGhlIGJvdW5kcyBv ZiB0aGUgdHdvIGhpc3RvZ3JhbXMuCisgKiBUaGlzIG1heGltaXplcyB0aGUgY29kZSByZXVzZSwg c2luY2UgdGhlIENERiBpcyBjb21wdXRlZCB1c2luZworICogdGhlIGNhbGNfaGlzdF9zZWxlY3Rp dml0eV9zY2FsYXIgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBmdW5jdGlvbiB1c2VkCisgKiBmb3Ig c2VsZWN0aXZpdHkgZXN0aW1hdGlvbiAobm9uLWpvaW5zKS4KKyAqCisgKi8KK3N0YXRpYyBkb3Vi bGUKK2NhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwK KwkJCQkJCSAgIGNvbnN0IFJhbmdlQm91bmQgKmhpc3QxLCBpbnQgbmhpc3QxLAorCQkJCQkJICAg Y29uc3QgUmFuZ2VCb3VuZCAqaGlzdDIsIGludCBuaGlzdDIpCit7CisJaW50CQkJaSwKKwkJCQlq OworCWRvdWJsZQkJc2VsZWN0aXZpdHkgPSAwLjAsCS8qIGluaXRpYWxpemF0aW9uICovCisJCQkJ cHJldl9zZWwxID0gLTEuMCwJLyogdG8gc2tpcCB0aGUgZmlyc3QgaXRlcmF0aW9uICovCisJCQkJ cHJldl9zZWwyID0gMC4wOwkvKiBpbml0aWFsaXphdGlvbiAqLworCisJLyoKKwkgKiBIaXN0b2dy YW1zIHdpbGwgbmV2ZXIgYmUgZW1wdHkuIEluIGZhY3QsIGEgaGlzdG9ncmFtIHdpbGwgbmV2ZXIg aGF2ZQorCSAqIGxlc3MgdGhhbiAyIHZhbHVlcyAoMSBiaW4pCisJICovCisJQXNzZXJ0KG5oaXN0 MSA+IDEpOworCUFzc2VydChuaGlzdDIgPiAxKTsKKworCS8qIEZhc3QtZm9yd2FyZHMgaSBhbmQg aiB0byBzdGFydCBvZiBpdGVyYXRpb24gKi8KKwlmb3IgKGkgPSAwOyByYW5nZV9jbXBfYm91bmRf dmFsdWVzKHR5cGNhY2hlLCAmaGlzdDFbaV0sICZoaXN0MlswXSkgPCAwOyBpKyspOworCWZvciAo aiA9IDA7IHJhbmdlX2NtcF9ib3VuZF92YWx1ZXModHlwY2FjaGUsICZoaXN0MltqXSwgJmhpc3Qx WzBdKSA8IDA7IGorKyk7CisKKwkvKiBEbyB0aGUgZXN0aW1hdGlvbiBvbiBvdmVybGFwcGluZyBy ZWdpb25zICovCisJd2hpbGUgKGkgPCBuaGlzdDEgJiYgaiA8IG5oaXN0MikKKwl7CisJCWRvdWJs ZQkJY3VyX3NlbDEsCisJCQkJCWN1cl9zZWwyOworCQlSYW5nZUJvdW5kCWN1cl9zeW5jOworCisJ CWlmIChyYW5nZV9jbXBfYm91bmRfdmFsdWVzKHR5cGNhY2hlLCAmaGlzdDFbaV0sICZoaXN0Mltq XSkgPCAwKQorCQkJY3VyX3N5bmMgPSBoaXN0MVtpKytdOworCQllbHNlIGlmIChyYW5nZV9jbXBf Ym91bmRfdmFsdWVzKHR5cGNhY2hlLCAmaGlzdDFbaV0sICZoaXN0MltqXSkgPiAwKQorCQkJY3Vy X3N5bmMgPSBoaXN0MltqKytdOworCQllbHNlCisJCXsKKwkJCS8qIElmIGVxdWFsLCBza2lwIG9u ZSAqLworCQkJY3VyX3N5bmMgPSBoaXN0MVtpXTsKKwkJCWkrKzsKKwkJCWorKzsKKwkJfQorCQlj dXJfc2VsMSA9IGNhbGNfaGlzdF9zZWxlY3Rpdml0eV9zY2FsYXIodHlwY2FjaGUsICZjdXJfc3lu YywKKwkJCQkJCQkJCQkJCWhpc3QxLCBuaGlzdDEsIGZhbHNlKTsKKwkJY3VyX3NlbDIgPSBjYWxj X2hpc3Rfc2VsZWN0aXZpdHlfc2NhbGFyKHR5cGNhY2hlLCAmY3VyX3N5bmMsCisJCQkJCQkJCQkJ CQloaXN0Miwgbmhpc3QyLCBmYWxzZSk7CisKKwkJLyogU2tpcCB0aGUgZmlyc3QgaXRlcmF0aW9u ICovCisJCWlmIChwcmV2X3NlbDEgPj0gMCkKKwkJCXNlbGVjdGl2aXR5ICs9IChwcmV2X3NlbDEg KyBjdXJfc2VsMSkgKiAoY3VyX3NlbDIgLSBwcmV2X3NlbDIpOworCisJCS8qIFByZXBhcmUgZm9y IHRoZSBuZXh0IGl0ZXJhdGlvbiAqLworCQlwcmV2X3NlbDEgPSBjdXJfc2VsMTsKKwkJcHJldl9z ZWwyID0gY3VyX3NlbDI7CisJfQorCisJLyogUChYIDwgWSkgPSAwLjUgKiBTdW0oLi4uKSAqLwor CXNlbGVjdGl2aXR5IC89IDI7CisKKwkvKiBJbmNsdWRlIHJlbWFpbmRlciBvZiBoaXN0MiBpZiBh bnkgKi8KKwlpZiAoaiA8IG5oaXN0MikKKwkJc2VsZWN0aXZpdHkgKz0gMSAtIHByZXZfc2VsMjsK KworCXJldHVybiBzZWxlY3Rpdml0eTsKK30KKworLyoKKyAqIG11bHRpcmFuZ2Vqb2luc2VsIC0t IGpvaW4gY2FyZGluYWxpdHkgZm9yIG11bHRpcmFuZ2Ugb3BlcmF0b3JzCisgKi8KK0RhdHVtCitt dWx0aXJhbmdlam9pbnNlbChQR19GVU5DVElPTl9BUkdTKQoreworCVBsYW5uZXJJbmZvICpyb290 ID0gKFBsYW5uZXJJbmZvICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCU9pZAkJCW9wZXJhdG9y ID0gUEdfR0VUQVJHX09JRCgxKTsKKwlMaXN0CSAgICphcmdzID0gKExpc3QgKikgUEdfR0VUQVJH X1BPSU5URVIoMik7CisJU3BlY2lhbEpvaW5JbmZvICpzamluZm8gPSAoU3BlY2lhbEpvaW5JbmZv ICopIFBHX0dFVEFSR19QT0lOVEVSKDQpOworCVZhcmlhYmxlU3RhdERhdGEgdmFyZGF0YTEsCisJ CQkJdmFyZGF0YTI7CisJQXR0U3RhdHNTbG90IGhpc3QxLAorCQkJCWhpc3QyLAorCQkJCXNzbG90 OworCWJvb2wJCXJldmVyc2VkOworCVNlbGVjdGl2aXR5IHNlbGVjOworCVR5cGVDYWNoZUVudHJ5 ICp0eXBjYWNoZSA9IE5VTEwsCisJCQkgICAqcm5nX3R5cGNhY2hlID0gTlVMTDsKKwlGb3JtX3Bn X3N0YXRpc3RpYyBzdGF0czEsCisJCQkJc3RhdHMyOworCWRvdWJsZQkJZW1wdHlfZnJhYzEsCisJ CQkJZW1wdHlfZnJhYzIsCisJCQkJbnVsbF9mcmFjMSwKKwkJCQludWxsX2ZyYWMyOworCWludAkJ CW5oaXN0MSwKKwkJCQluaGlzdDI7CisJUmFuZ2VCb3VuZCAqaGlzdDFfbG93ZXIsCisJCQkgICAq aGlzdDFfdXBwZXIsCisJCQkgICAqaGlzdDJfbG93ZXIsCisJCQkgICAqaGlzdDJfdXBwZXI7CisJ Ym9vbAkJZW1wdHk7CisJaW50CQkJaTsKKworCWdldF9qb2luX3ZhcmlhYmxlcyhyb290LCBhcmdz LCBzamluZm8sICZ2YXJkYXRhMSwgJnZhcmRhdGEyLCAmcmV2ZXJzZWQpOworCisJc2VsZWMgPSBk ZWZhdWx0X211bHRpcmFuZ2Vfc2VsZWN0aXZpdHkob3BlcmF0b3IpOworCisJLyogZ2V0IG11bHRp cmFuZ2UgdHlwZSBjYWNoZSAqLworCWlmICh0eXBlX2lzX211bHRpcmFuZ2UodmFyZGF0YTEudmFy dHlwZSkpCisJCXR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCB2YXJk YXRhMS52YXJ0eXBlKTsKKwllbHNlIGlmICh0eXBlX2lzX211bHRpcmFuZ2UodmFyZGF0YTIudmFy dHlwZSkpCisJCXR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCB2YXJk YXRhMi52YXJ0eXBlKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHZhcmRhdGExLnN0YXRzVHVw bGUpICYmCisJCWdldF9hdHRzdGF0c3Nsb3QoJmhpc3QxLCB2YXJkYXRhMS5zdGF0c1R1cGxlLAor CQkJCQkJIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNUT0dSQU0sIEludmFsaWRPaWQsCisJCQkJ CQkgQVRUU1RBVFNTTE9UX1ZBTFVFUykgJiYKKwkJSGVhcFR1cGxlSXNWYWxpZCh2YXJkYXRhMi5z dGF0c1R1cGxlKSAmJgorCQlnZXRfYXR0c3RhdHNzbG90KCZoaXN0MiwgdmFyZGF0YTIuc3RhdHNU dXBsZSwKKwkJCQkJCSBTVEFUSVNUSUNfS0lORF9CT1VORFNfSElTVE9HUkFNLCBJbnZhbGlkT2lk LAorCQkJCQkJIEFUVFNUQVRTU0xPVF9WQUxVRVMpICYmCisJCXR5cGNhY2hlKQorCXsKKworCQkv KiBJbml0aWFsaXplIHVuZGVybHlpbmcgcmFuZ2UgdHlwZSBjYWNoZSAqLworCQlybmdfdHlwY2Fj aGUgPSB0eXBjYWNoZS0+cm5ndHlwZTsKKworCQkvKgorCQkgKiBGaXJzdCBsb29rIHVwIHRoZSBm cmFjdGlvbiBvZiBOVUxMcyBhbmQgZW1wdHkgcmFuZ2VzIGZyb20KKwkJICogcGdfc3RhdGlzdGlj LgorCQkgKi8KKwkJc3RhdHMxID0gKEZvcm1fcGdfc3RhdGlzdGljKSBHRVRTVFJVQ1QodmFyZGF0 YTEuc3RhdHNUdXBsZSk7CisJCXN0YXRzMiA9IChGb3JtX3BnX3N0YXRpc3RpYykgR0VUU1RSVUNU KHZhcmRhdGEyLnN0YXRzVHVwbGUpOworCisJCW51bGxfZnJhYzEgPSBzdGF0czEtPnN0YW51bGxm cmFjOworCQludWxsX2ZyYWMyID0gc3RhdHMyLT5zdGFudWxsZnJhYzsKKworCQkvKiBUcnkgdG8g Z2V0IGZyYWN0aW9uIG9mIGVtcHR5IHJhbmdlcyBmb3IgdGhlIGZpcnN0IHZhcmlhYmxlICovCisJ CWlmIChnZXRfYXR0c3RhdHNzbG90KCZzc2xvdCwgdmFyZGF0YTEuc3RhdHNUdXBsZSwKKwkJCQkJ CQkgU1RBVElTVElDX0tJTkRfUkFOR0VfTEVOR1RIX0hJU1RPR1JBTSwKKwkJCQkJCQkgSW52YWxp ZE9pZCwKKwkJCQkJCQkgQVRUU1RBVFNTTE9UX05VTUJFUlMpKQorCQl7CisJCQlpZiAoc3Nsb3Qu bm51bWJlcnMgIT0gMSkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2coRVJST1IsICJp bnZhbGlkIGVtcHR5IGZyYWN0aW9uIHN0YXRpc3RpYyIpOworCQkJZW1wdHlfZnJhYzEgPSBzc2xv dC5udW1iZXJzWzBdOworCQkJZnJlZV9hdHRzdGF0c3Nsb3QoJnNzbG90KTsKKwkJfQorCQllbHNl CisJCXsKKwkJCS8qIE5vIGVtcHR5IGZyYWN0aW9uIHN0YXRpc3RpYy4gQXNzdW1lIG5vIGVtcHR5 IHJhbmdlcy4gKi8KKwkJCWVtcHR5X2ZyYWMxID0gMC4wOworCQl9CisKKwkJLyogVHJ5IHRvIGdl dCBmcmFjdGlvbiBvZiBlbXB0eSByYW5nZXMgZm9yIHRoZSBzZWNvbmQgdmFyaWFibGUgKi8KKwkJ aWYgKGdldF9hdHRzdGF0c3Nsb3QoJnNzbG90LCB2YXJkYXRhMi5zdGF0c1R1cGxlLAorCQkJCQkJ CSBTVEFUSVNUSUNfS0lORF9SQU5HRV9MRU5HVEhfSElTVE9HUkFNLAorCQkJCQkJCSBJbnZhbGlk T2lkLAorCQkJCQkJCSBBVFRTVEFUU1NMT1RfTlVNQkVSUykpCisJCXsKKwkJCWlmIChzc2xvdC5u bnVtYmVycyAhPSAxKQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgZW1wdHkgZnJhY3Rpb24gc3RhdGlzdGljIik7CisJCQllbXB0eV9mcmFjMiA9IHNzbG90 Lm51bWJlcnNbMF07CisJCQlmcmVlX2F0dHN0YXRzc2xvdCgmc3Nsb3QpOworCQl9CisJCWVsc2UK KwkJeworCQkJLyogTm8gZW1wdHkgZnJhY3Rpb24gc3RhdGlzdGljLiBBc3N1bWUgbm8gZW1wdHkg cmFuZ2VzLiAqLworCQkJZW1wdHlfZnJhYzIgPSAwLjA7CisJCX0KKworCQkvKgorCQkgKiBDb252 ZXJ0IGhpc3RvZ3JhbXMgb2YgcmFuZ2VzIGludG8gaGlzdG9ncmFtcyBvZiB0aGVpciBsb3dlciBh bmQKKwkJICogdXBwZXIgYm91bmRzIGZvciB0aGUgZmlyc3QgdmFyaWFibGUuCisJCSAqLworCQlu aGlzdDEgPSBoaXN0MS5udmFsdWVzOworCQloaXN0MV9sb3dlciA9IChSYW5nZUJvdW5kICopIHBh bGxvYyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBuaGlzdDEpOworCQloaXN0MV91cHBlciA9IChSYW5n ZUJvdW5kICopIHBhbGxvYyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBuaGlzdDEpOworCQlmb3IgKGkg PSAwOyBpIDwgbmhpc3QxOyBpKyspCisJCXsKKwkJCXJhbmdlX2Rlc2VyaWFsaXplKHJuZ190eXBj YWNoZSwgRGF0dW1HZXRSYW5nZVR5cGVQKGhpc3QxLnZhbHVlc1tpXSksCisJCQkJCQkJICAmaGlz dDFfbG93ZXJbaV0sICZoaXN0MV91cHBlcltpXSwgJmVtcHR5KTsKKwkJCS8qIFRoZSBoaXN0b2dy YW0gc2hvdWxkIG5vdCBjb250YWluIGFueSBlbXB0eSByYW5nZXMgKi8KKwkJCWlmIChlbXB0eSkK KwkJCQllbG9nKEVSUk9SLCAiYm91bmRzIGhpc3RvZ3JhbSBjb250YWlucyBhbiBlbXB0eSByYW5n ZSIpOworCQl9CisKKwkJLyoKKwkJICogQ29udmVydCBoaXN0b2dyYW1zIG9mIHJhbmdlcyBpbnRv IGhpc3RvZ3JhbXMgb2YgdGhlaXIgbG93ZXIgYW5kCisJCSAqIHVwcGVyIGJvdW5kcyBmb3IgdGhl IHNlY29uZCB2YXJpYWJsZS4KKwkJICovCisJCW5oaXN0MiA9IGhpc3QyLm52YWx1ZXM7CisJCWhp c3QyX2xvd2VyID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5o aXN0Mik7CisJCWhpc3QyX3VwcGVyID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5n ZUJvdW5kKSAqIG5oaXN0Mik7CisJCWZvciAoaSA9IDA7IGkgPCBuaGlzdDI7IGkrKykKKwkJewor CQkJcmFuZ2VfZGVzZXJpYWxpemUocm5nX3R5cGNhY2hlLCBEYXR1bUdldFJhbmdlVHlwZVAoaGlz dDIudmFsdWVzW2ldKSwKKwkJCQkJCQkgICZoaXN0Ml9sb3dlcltpXSwgJmhpc3QyX3VwcGVyW2ld LCAmZW1wdHkpOworCQkJLyogVGhlIGhpc3RvZ3JhbSBzaG91bGQgbm90IGNvbnRhaW4gYW55IGVt cHR5IHJhbmdlcyAqLworCQkJaWYgKGVtcHR5KQorCQkJCWVsb2coRVJST1IsICJib3VuZHMgaGlz dG9ncmFtIGNvbnRhaW5zIGFuIGVtcHR5IHJhbmdlIik7CisJCX0KKworCQlzd2l0Y2ggKG9wZXJh dG9yKQorCQl7CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX01VTFRJUkFOR0VfT1A6 CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX1JBTkdFX09QOgorCQkJY2FzZSBPSURf UkFOR0VfT1ZFUkxBUFNfTVVMVElSQU5HRV9PUDoKKworCQkJCS8qCisJCQkJICogU2VsZWN0aXZp dHkgb2YgQSAmJiBCID0gU2VsZWN0aXZpdHkgb2YgTk9UKCBBIDw8IEIgfHwgQSA+PgorCQkJCSAq IEIgKSA9IDEgLSBTZWxlY3Rpdml0eSBvZiAoQS51cHBlciA8IEIubG93ZXIpIC0gU2VsZWN0aXZp dHkKKwkJCQkgKiBvZiAoQi51cHBlciA8IEEubG93ZXIpCisJCQkJICovCisJCQkJc2VsZWMgPSAx OworCQkJCXNlbGVjIC09IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNoZSwK KwkJCQkJCQkJCQkJCQloaXN0MV91cHBlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJCWhpc3QyX2xv d2VyLCBuaGlzdDIpOworCQkJCXNlbGVjIC09IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJu Z190eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQloaXN0Ml91cHBlciwgbmhpc3QyLAorCQkJCQkJCQkJ CQkJCWhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxU SVJBTkdFX0xFU1NfRVFVQUxfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPD0gQgorCQkJCSAqCisJ CQkJICogU3RhcnQgYnkgY29tcGFyaW5nIGxvd2VyIGJvdW5kcyBhbmQgaWYgdGhleSBhcmUgZXF1 YWwKKwkJCQkgKiBjb21wYXJlIHVwcGVyIGJvdW5kcworCQkJCSAqCisJCQkJICogTmVnYXRpb24g b2YgT0lEX1JBTkdFX0dSRUFURVJfT1AuCisJCQkJICoKKwkJCQkgKiBPdmVyZXN0aW1hdGUgYnkg Y29tcGFyaW5nIG9ubHkgdGhlIGxvd2VyIGJvdW5kcy4gSGlnaGVyCisJCQkJICogYWNjdXJhY3kg d291bGQgcmVxdWlyZSB1cyB0byBzdWJ0cmFjdCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAq IFAodXBwZXIxID4gdXBwZXIyKQorCQkJCSAqLworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9q b2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dl ciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCWJy ZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX0xFU1NfT1A6CisKKwkJCQkvKgorCQkJCSAq IEEgPCBCCisJCQkJICoKKwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFu ZCBpZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoK KwkJCQkgKiBVbmRlcmVzdGltYXRlIGJ5IGNvbXBhcmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMu IEhpZ2hlcgorCQkJCSAqIGFjY3VyYWN5IHdvdWxkIHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIx ID0gbG93ZXIyKSAqCisJCQkJICogUCh1cHBlcjEgPCB1cHBlcjIpCisJCQkJICovCisJCQkJc2Vs ZWMgPSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJCQkJCQkJ CQkgICBoaXN0MV9sb3dlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJICAgaGlzdDJfbG93ZXIsIG5o aXN0Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfR1JFQVRFUl9FUVVB TF9PUDoKKworCQkJCS8qCisJCQkJICogQSA+PSBCCisJCQkJICoKKwkJCQkgKiBTdGFydCBieSBj b21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBh cmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBOZWdhdGlvbiBvZiBPSURfUkFOR0VfTEVT U19PUC4KKwkJCQkgKgorCQkJCSAqIE92ZXJlc3RpbWF0ZSBieSBjb21wYXJpbmcgb25seSB0aGUg bG93ZXIgYm91bmRzLiBIaWdoZXIKKwkJCQkgKiBhY2N1cmFjeSB3b3VsZCByZXF1aXJlIHVzIHRv IGFkZCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAodXBwZXIxIDwgdXBwZXIyKQorCQkJ CSAqLworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBj YWNoZSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0MV9sb3dlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJ CSAgIGhpc3QyX2xvd2VyLCBuaGlzdDIpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxU SVJBTkdFX0dSRUFURVJfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPiBCID09IEIgPCBBCisJCQkJ ICoKKwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFy ZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBVbmRl cmVzdGltYXRlIGJ5IGNvbXBhcmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMuIEhpZ2hlcgorCQkJ CSAqIGFjY3VyYWN5IHdvdWxkIHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIxID0gbG93ZXIyKSAq CisJCQkJICogUCh1cHBlcjEgPiB1cHBlcjIpCisJCQkJICovCisJCQkJc2VsZWMgPSBjYWxjX2hp c3Rfam9pbl9zZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJCQkJCQkJCQkgICBoaXN0Ml9s b3dlciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJICAgaGlzdDFfbG93ZXIsIG5oaXN0MSk7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTEVGVF9NVUxUSVJBTkdFX09QOgorCQkJ Y2FzZSBPSURfTVVMVElSQU5HRV9MRUZUX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfTEVG VF9NVUxUSVJBTkdFX09QOgorCQkJCS8qIHZhcjEgPDwgdmFyMiB3aGVuIHVwcGVyKHZhcjEpIDwg bG93ZXIodmFyMikgKi8KKwkJCQlzZWxlYyA9IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJu Z190eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX3VwcGVyLCBuaGlzdDEsCisJCQkJCQkJ CQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURf TVVMVElSQU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9S SUdIVF9SQU5HRV9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX1JJR0hUX01VTFRJUkFOR0VfT1A6CisJ CQkJLyogdmFyMSA+PiB2YXIyIHdoZW4gdXBwZXIodmFyMikgPCBsb3dlcih2YXIxKSAqLworCQkJ CXNlbGVjID0gY2FsY19oaXN0X2pvaW5fc2VsZWN0aXZpdHkocm5nX3R5cGNhY2hlLAorCQkJCQkJ CQkJCQkJICAgaGlzdDJfdXBwZXIsIG5oaXN0MiwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2Vy LCBuaGlzdDEpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBT X0xFRlRfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNfTEVG VF9SQU5HRV9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX0xFRlRfTVVMVElSQU5HRV9P UDoKKwkJCQkvKiB2YXIxICY8IHZhcjIgd2hlbiB1cHBlcih2YXIxKSA8IHVwcGVyKHZhcjIpICov CisJCQkJc2VsZWMgPSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJ CQkJCQkJCQkJCQkgICBoaXN0MV91cHBlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJICAgaGlzdDJf dXBwZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfT1ZF UkxBUFNfUklHSFRfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfT1ZFUkxB UFNfUklHSFRfUkFOR0VfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQU19SSUdIVF9NVUxU SVJBTkdFX09QOgorCQkJCS8qIHZhcjEgJj4gdmFyMiB3aGVuIGxvd2VyKHZhcjIpIDwgbG93ZXIo dmFyMSkgKi8KKwkJCQlzZWxlYyA9IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBj YWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QyX2xvd2VyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkg ICBoaXN0MV9sb3dlciwgbmhpc3QxKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfTVVMVElS QU5HRV9NVUxUSVJBTkdFX0NPTlRBSU5FRF9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfUkFO R0VfQ09OVEFJTkVEX09QOgorCQkJY2FzZSBPSURfUkFOR0VfTVVMVElSQU5HRV9DT05UQUlORURf T1A6CisKKwkJCQkvKgorCQkJCSAqIHZhcjEgPEAgdmFyMiBpcyBlcXVpdmFsZW50IHRvIGxvd2Vy KHZhcjIpIDw9IGxvd2VyKHZhcjEpCisJCQkJICogYW5kIHVwcGVyKHZhcjEpIDw9IHVwcGVyKHZh cjIpCisJCQkJICoKKwkJCQkgKiBBZnRlciBuZWdhdGluZyBib3RoIHNpZGVzIHdlIGdldCBub3Qo IGxvd2VyKHZhcjEpIDwKKwkJCQkgKiBsb3dlcih2YXIyKSApIGFuZCBub3QoIHVwcGVyKHZhcjIp IDwgdXBwZXIodmFyMSkgKSwKKwkJCQkgKiByZXNwZWN0aXZlbHkuIEFzc3VtaW5nIGluZGVwZW5k ZW5jZSwgbXVsdGlwbHkgYm90aAorCQkJCSAqIHNlbGVjdGl2aXRpZXMuCisJCQkJICovCisJCQkJ c2VsZWMgPSAxIC0gY2FsY19oaXN0X2pvaW5fc2VsZWN0aXZpdHkocm5nX3R5cGNhY2hlLAorCQkJ CQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEsCisJCQkJCQkJCQkJCQkJICAgaGlzdDJf bG93ZXIsIG5oaXN0Mik7CisJCQkJc2VsZWMgKj0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2 aXR5KHJuZ190eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQkJaGlzdDJfdXBwZXIsIG5oaXN0MiwKKwkJ CQkJCQkJCQkJCQkJaGlzdDFfdXBwZXIsIG5oaXN0MSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug T0lEX01VTFRJUkFOR0VfQ09OVEFJTlNfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJ UkFOR0VfQ09OVEFJTlNfUkFOR0VfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlOU19NVUxU SVJBTkdFX09QOgorCisJCQkJLyoKKwkJCQkgKiB2YXIxIEA+IHZhcjIgaXMgZXF1aXZhbGVudCB0 byBsb3dlcih2YXIxKSA8PSBsb3dlcih2YXIyKQorCQkJCSAqIGFuZCB1cHBlcih2YXIyKSA8PSB1 cHBlcih2YXIxKQorCQkJCSAqCisJCQkJICogQWZ0ZXIgbmVnYXRpbmcgYm90aCBzaWRlcyB3ZSBn ZXQgbm90KCBsb3dlcih2YXIyKSA8CisJCQkJICogbG93ZXIodmFyMSkgKSBhbmQgbm90KCB1cHBl cih2YXIxKSA8IHVwcGVyKHZhcjIpICksCisJCQkJICogcmVzcGVjdGl2ZWx5LiBBc3N1bWluZyBp bmRlcGVuZGVuY2UsIG11bHRpcGx5IGJvdGgKKwkJCQkgKiBzZWxlY3Rpdml0aWVzLgorCQkJCSAq LworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNo ZSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJCSAg IGhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCXNlbGVjICo9IDEgLSBjYWxjX2hpc3Rfam9pbl9z ZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJCQkJCQkJCQkJCWhpc3QxX3VwcGVyLCBuaGlz dDEsCisJCQkJCQkJCQkJCQkJCWhpc3QyX3VwcGVyLCBuaGlzdDIpOworCQkJCWJyZWFrOworCisJ CQljYXNlIE9JRF9NVUxUSVJBTkdFX0FESkFDRU5UX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9J RF9NVUxUSVJBTkdFX0FESkFDRU5UX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfQURKQUNF TlRfTVVMVElSQU5HRV9PUDoKKworCQkJCS8qCisJCQkJICoganVzdCBwdW50IGZvciBub3csIGVz dGltYXRpb24gd291bGQgcmVxdWlyZSBlcXVhbGl0eQorCQkJCSAqIHNlbGVjdGl2aXR5IGZvciBi b3VuZHMKKwkJCQkgKi8KKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfQ09OVEFJTlNfRUxFTV9PUDoK KwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfRUxFTV9DT05UQUlORURfT1A6CisKKwkJCQkvKgorCQkJ CSAqIGp1c3QgcHVudCBmb3Igbm93LCBlc3RpbWF0aW9uIHdvdWxkIHJlcXVpcmUgZXh0cmFjdGlv biBvZgorCQkJCSAqIGhpc3RvZ3JhbXMgZm9yIHRoZSBhbnllbGVtZW50CisJCQkJICovCisJCQlk ZWZhdWx0OgorCQkJCWJyZWFrOworCQl9CisKKworCQkvKiB0aGUgY2FsY3VsYXRlZCBzZWxlY3Rp dml0eSBvbmx5IGFwcGxpZXMgdG8gbm9uLWVtcHR5IChtdWx0aSlyYW5nZXMgKi8KKwkJc2VsZWMg Kj0gKDEgLSBlbXB0eV9mcmFjMSkgKiAoMSAtIGVtcHR5X2ZyYWMyKTsKKworCQkvKgorCQkgKiBE ZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yLCBlbXB0eSAobXVsdGkpcmFuZ2VzIG1pZ2h0IG1hdGNo CisJCSAqIGRpZmZlcmVudCBmcmFjdGlvbnMgb2YgdGhlIHJlc3VsdC4KKwkJICovCisJCXN3aXRj aCAob3BlcmF0b3IpCisJCXsKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTEVTU19PUDoKKworCQkJ CS8qCisJCQkJICogZW1wdHkgKG11bHRpKXJhbmdlIDwgbm9uLWVtcHR5IChtdWx0aSlyYW5nZQor CQkJCSAqLworCQkJCXNlbGVjICs9IGVtcHR5X2ZyYWMxICogKDEgLSBlbXB0eV9mcmFjMik7CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfR1JFQVRFUl9PUDoKKworCQkJCS8q CisJCQkJICogbm9uLWVtcHR5IChtdWx0aSlyYW5nZSA+IGVtcHR5IChtdWx0aSlyYW5nZQorCQkJ CSAqLworCQkJCXNlbGVjICs9ICgxIC0gZW1wdHlfZnJhYzEpICogZW1wdHlfZnJhYzI7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTVVMVElSQU5HRV9DT05UQUlORURfT1A6 CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX1JBTkdFX0NPTlRBSU5FRF9PUDoKKwkJCWNhc2UgT0lE X1JBTkdFX01VTFRJUkFOR0VfQ09OVEFJTkVEX09QOgorCisJCQkJLyoKKwkJCQkgKiBlbXB0eSAo bXVsdGkpcmFuZ2UgPEAgYW55IChtdWx0aSlyYW5nZQorCQkJCSAqLworCQkJY2FzZSBPSURfTVVM VElSQU5HRV9MRVNTX0VRVUFMX09QOgorCisJCQkJLyoKKwkJCQkgKiBlbXB0eSAobXVsdGkpcmFu Z2UgPD0gYW55IChtdWx0aSlyYW5nZQorCQkJCSAqLworCQkJCXNlbGVjICs9IGVtcHR5X2ZyYWMx OworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX0NPTlRBSU5TX01VTFRJUkFO R0VfT1A6CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX0NPTlRBSU5TX1JBTkdFX09QOgorCQkJY2Fz ZSBPSURfUkFOR0VfQ09OVEFJTlNfTVVMVElSQU5HRV9PUDoKKworCQkJCS8qCisJCQkJICogYW55 IChtdWx0aSlyYW5nZSBAPiBlbXB0eSAobXVsdGkpcmFuZ2UKKwkJCQkgKi8KKwkJCWNhc2UgT0lE X01VTFRJUkFOR0VfR1JFQVRFUl9FUVVBTF9PUDoKKworCQkJCS8qCisJCQkJICogYW55IChtdWx0 aSlyYW5nZSA+PSBlbXB0eSAobXVsdGkpcmFuZ2UKKwkJCQkgKi8KKwkJCQlzZWxlYyArPSBlbXB0 eV9mcmFjMjsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfTVVMVElSQU5HRV9DT05UQUlOU19F TEVNX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9FTEVNX0NPTlRBSU5FRF9PUDoKKwkJCWNh c2UgT0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01V TFRJUkFOR0VfT1ZFUkxBUFNfUkFOR0VfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQU19N VUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9PVkVSTEFQU19MRUZUX01VTFRJ UkFOR0VfT1A6CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX0xFRlRfUkFOR0VfT1A6 CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQU19MRUZUX01VTFRJUkFOR0VfT1A6CisJCQljYXNl IE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX1JJR0hUX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9J RF9NVUxUSVJBTkdFX09WRVJMQVBTX1JJR0hUX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0Vf T1ZFUkxBUFNfUklHSFRfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTEVG VF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9MRUZUX1JBTkdFX09QOgor CQkJY2FzZSBPSURfUkFOR0VfTEVGVF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElS QU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9SSUdIVF9S QU5HRV9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX1JJR0hUX01VTFRJUkFOR0VfT1A6CisJCQljYXNl IE9JRF9NVUxUSVJBTkdFX0FESkFDRU5UX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9JRF9NVUxU SVJBTkdFX0FESkFDRU5UX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfQURKQUNFTlRfTVVM VElSQU5HRV9PUDoKKwkJCWRlZmF1bHQ6CisKKwkJCQkvKgorCQkJCSAqIHRoZXNlIG9wZXJhdG9y cyBhbHdheXMgcmV0dXJuIGZhbHNlIHdoZW4gYW4gZW1wdHkKKwkJCQkgKiAobXVsdGkpcmFuZ2Ug aXMgaW52b2x2ZWQKKwkJCQkgKi8KKwkJCQlicmVhazsKKworCQl9CisKKwkJLyogYWxsIHJhbmdl IG9wZXJhdG9ycyBhcmUgc3RyaWN0ICovCisJCXNlbGVjICo9ICgxIC0gbnVsbF9mcmFjMSkgKiAo MSAtIG51bGxfZnJhYzIpOworCisJCWZyZWVfYXR0c3RhdHNzbG90KCZoaXN0MSk7CisJCWZyZWVf YXR0c3RhdHNzbG90KCZoaXN0Mik7CisJfQorCisJUmVsZWFzZVZhcmlhYmxlU3RhdHModmFyZGF0 YTEpOworCVJlbGVhc2VWYXJpYWJsZVN0YXRzKHZhcmRhdGEyKTsKKworCUNMQU1QX1BST0JBQklM SVRZKHNlbGVjKTsKKworCVBHX1JFVFVSTl9GTE9BVDgoKGZsb2F0OCkgc2VsZWMpOworCit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zZWxmdW5jcy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfc2VsZnVuY3MuYwppbmRleCBjMjYwMDEy YmQwLi5iZTM0NzljYjBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0 eXBlc19zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3Nl bGZ1bmNzLmMKQEAgLTEyMjEsMyArMTIyMSw0OTYgQEAgY2FsY19oaXN0X3NlbGVjdGl2aXR5X2Nv bnRhaW5zKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKIAogCXJldHVybiBzdW1fZnJhYzsKIH0K KworLyoKKyAqIFRoaXMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdG8gZXN0aW1hdGUgdGhl IGpvaW4gc2VsZWN0aXZpdHkgb2YKKyAqIHJhbmdlIGF0dHJpYnV0ZXMgdXNpbmcgcmFuZ2Vib3Vu ZCBoaXN0b2dyYW0gc3RhdGlzdGljcyBhcyBkZXNjcmliZWQKKyAqIGluIHRoaXMgcGFwZXI6Cisg KgorICogRGlvZ28gUmVwYXMsIFpoaWNoZW5nIEx1bywgTWF4aW1lIFNjaG9lbWFucyBhbmQgTWFo bW91ZCBTYWtyLCAyMDIyCisgKiBTZWxlY3Rpdml0eSBFc3RpbWF0aW9uIG9mIEluZXF1YWxpdHkg Sm9pbnMgSW4gRGF0YWJhc2VzCisgKiBodHRwczovL2RvaS5vcmcvMTAuNDg1NTAvYXJYaXYuMjIw Ni4wNzM5NgorICoKKyAqIFRoZSBhdHRyaWJ1dGVzIGJlaW5nIGpvaW5lZCB3aWxsIGJlIHRyZWF0 ZWQgYXMgcmFuZG9tIHZhcmlhYmxlcworICogdGhhdCBmb2xsb3cgYSBkaXN0cmlidXRpb24gbW9k ZWxlZCBieSBhIFByb2JhYmlsaXR5IERlbnNpdHkgRnVuY3Rpb24gKFBERikuCisgKiBMZXQgdGhl IHR3byBhdHRyaWJ1dGVzIGJlIGRlbm90ZWQgWCwgWS4KKyAqIFRoaXMgZnVuY3Rpb24gZmluZHMg dGhlIHByb2JhYmlsaXR5IFAoWCA8IFkpLgorICogTm90ZSB0aGF0IHRoZSBQREZzIG9mIHRoZSB0 d28gdmFyaWFibGVzIGNhbiBlYXNpbHkgYmUgb2J0YWluZWQKKyAqIGZyb20gdGhlaXIgYm91bmRz IGhpc3RvZ3JhbSwgcmVzcGVjdGl2ZWx5IGhpc3QxIGFuZCBoaXN0MiAuCisgKgorICogTGV0IHRo ZSBQREYgb2YgWCwgWSBiZSBkZW5vdGVkIGFzIGZfWCwgZl9ZLgorICogVGhlIHByb2JhYmlsaXR5 IFAoWCA8IFkpIGNhbiBiZSBmb3JtYWxpemVkIGFzIGZvbGxvd3M6CisgKiBQKFggPCBZKT0gaW50 ZWdyYWxfLWluZl5pbmYoIGludGVncmFsXy1pbmZeeSAoIGZfWCh4KSAqIGZfWSh5KSBkeCBkeSAp ICkKKyAqICAgICAgICAgICAgICAgID0gaW50ZWdyYWxfLWluZl5pbmYoIEZfWCh5KSAqIGZfWSh5 KSBkeSApCisgKiB3aGVyZSBGX1goeSkgZGVub3RlIHRoZSBDdW11bGF0aXZlIERpc3RyaWJ1dGlv biBGdW5jdGlvbiBvZiBYIGF0IHkuCisgKiBOb3RlIHRoYXQgRl9YIGlzIHRoZSBzZWxlY3Rpdml0 eSBlc3RpbWF0aW9uIChub24tam9pbiksCisgKiB3aGljaCBpcyBpbXBsZW1lbnRlZCB1c2luZyB0 aGUgZnVuY3Rpb24gY2FsY19oaXN0X3NlbGVjdGl2aXR5X3NjYWxhci4KKyAqCisgKiBOb3cgZ2l2 ZW4gdGhlIGhpc3RvZ3JhbXMgb2YgdGhlIHR3byBhdHRyaWJ1dGVzIFgsIFksIHdlIG5vdGUgdGhl IGZvbGxvd2luZzoKKyAqIC0gVGhlIFBERiBvZiBZIGlzIGEgc3RlcCBmdW5jdGlvbgorICogKGNv bnN0YW50IHBpZWNlLXdpc2UsIHdoZXJlIGVhY2ggcGllY2UgaXMgZGVmaW5lZCBpbiBhIGJpbiBv ZiBZJ3MgaGlzdG9ncmFtKQorICogLSBUaGUgQ0RGIG9mIFggaXMgbGluZWFyIHBpZWNlLXdpc2UK KyAqICAgKGVhY2ggcGllY2UgaXMgZGVmaW5lZCBpbiBhIGJpbiBvZiBYJ3MgaGlzdG9ncmFtKQor ICogVGhpcyBsZWFkcyB0byB0aGUgY29uY2x1c2lvbiB0aGF0IHRoZWlyIHByb2R1Y3QKKyAqICh1 c2VkIHRvIGNhbGN1bGF0ZSB0aGUgZXF1YXRpb24gYWJvdmUpIGlzIGFsc28gbGluZWFyIHBpZWNl LXdpc2UuCisgKiBBIG5ldyBwaWVjZSBzdGFydHMgd2hlbmV2ZXIgZWl0aGVyIHRoZSBiaW4gb2Yg WCBvciB0aGUgYmluIG9mIFkgY2hhbmdlcy4KKyAqIEJ5IHBhcmFsbGVsIHNjYW5uaW5nIHRoZSB0 d28gcmFuZ2Vib3VuZCBoaXN0b2dyYW1zIG9mIFggYW5kIFksCisgKiB3ZSBldmFsdWF0ZSBvbmUg cGllY2Ugb2YgdGhlIHJlc3VsdCBiZXR3ZWVuIGV2ZXJ5IHR3byBjb25zZWN1dGl2ZSByYW5nZWJv dW5kcworICogaW4gdGhlIHVuaW9uIG9mIHRoZSB0d28gaGlzdG9ncmFtcy4KKyAqCisgKiBHaXZl biB0aGF0IHRoZSBwcm9kdWN0IEZfWCAqIGZfeSBpcyBsaW5lYXIgaW4gdGhlIGludGVydmFsCisg KiBiZXR3ZWVuIGV2ZXJ5IHR3byBjb25zZWN1dGl2ZSByYW5nZWJvdW5kcywgbGV0IHRoZW0gYmUg ZGVub3RlZCBwcmV2LCBjdXIsCisgKiBpdCBjYW4gYmUgc2hvd24gdGhhdCB0aGUgYWJvdmUgZm9y bXVsYSBjYW4gYmUgZGlzY3JldGl6ZWQgaW50byB0aGUgZm9sbG93aW5nOgorICogUChYIDwgWSkg PQorICogICAwLjUgKiBzdW1fMF57bittLTF9ICggKCBGX1gocHJldikgKyBGX1goY3VyKSApICog KCBGX1koY3VyKSAtIEZfWShwcmV2KSApICkKKyAqIHdoZXJlIG4sIG0gYXJlIHRoZSBsZW5ndGhz IG9mIHRoZSB0d28gaGlzdG9ncmFtcy4KKyAqCisgKiBBcyBzdWNoLCBpdCBpcyBwb3NzaWJsZSB0 byBmdWxseSBjb21wdXRlIHRoZSBqb2luIHNlbGVjdGl2aXR5CisgKiBhcyBhIHN1bW1hdGlvbiBv ZiBDREZzLCBpdGVyYXRpbmcgb3ZlciB0aGUgYm91bmRzIG9mIHRoZSB0d28gaGlzdG9ncmFtcy4K KyAqIFRoaXMgbWF4aW1pemVzIHRoZSBjb2RlIHJldXNlLCBzaW5jZSB0aGUgQ0RGIGlzIGNvbXB1 dGVkIHVzaW5nCisgKiB0aGUgY2FsY19oaXN0X3NlbGVjdGl2aXR5X3NjYWxhciBmdW5jdGlvbiwg d2hpY2ggaXMgdGhlIGZ1bmN0aW9uIHVzZWQKKyAqIGZvciBzZWxlY3Rpdml0eSBlc3RpbWF0aW9u IChub24tam9pbnMpLgorICoKKyAqLworc3RhdGljIGRvdWJsZQorY2FsY19oaXN0X2pvaW5fc2Vs ZWN0aXZpdHkoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLAorCQkJCQkJICAgY29uc3QgUmFuZ2VC b3VuZCAqaGlzdDEsIGludCBuaGlzdDEsCisJCQkJCQkgICBjb25zdCBSYW5nZUJvdW5kICpoaXN0 MiwgaW50IG5oaXN0MikKK3sKKwlpbnQJCQlpLAorCQkJCWo7CisJZG91YmxlCQlzZWxlY3Rpdml0 eSA9IDAuMCwJLyogaW5pdGlhbGl6YXRpb24gKi8KKwkJCQlwcmV2X3NlbDEgPSAtMS4wLAkvKiB0 byBza2lwIHRoZSBmaXJzdCBpdGVyYXRpb24gKi8KKwkJCQlwcmV2X3NlbDIgPSAwLjA7CS8qIGlu aXRpYWxpemF0aW9uICovCisKKwkvKgorCSAqIEhpc3RvZ3JhbXMgd2lsbCBuZXZlciBiZSBlbXB0 eS4gSW4gZmFjdCwgYSBoaXN0b2dyYW0gd2lsbCBuZXZlciBoYXZlCisJICogbGVzcyB0aGFuIDIg dmFsdWVzICgxIGJpbikKKwkgKi8KKwlBc3NlcnQobmhpc3QxID4gMSk7CisJQXNzZXJ0KG5oaXN0 MiA+IDEpOworCisJLyogRmFzdC1mb3J3YXJkcyBpIGFuZCBqIHRvIHN0YXJ0IG9mIGl0ZXJhdGlv biAqLworCWZvciAoaSA9IDA7IHJhbmdlX2NtcF9ib3VuZF92YWx1ZXModHlwY2FjaGUsICZoaXN0 MVtpXSwgJmhpc3QyWzBdKSA8IDA7IGkrKyk7CisJZm9yIChqID0gMDsgcmFuZ2VfY21wX2JvdW5k X3ZhbHVlcyh0eXBjYWNoZSwgJmhpc3QyW2pdLCAmaGlzdDFbMF0pIDwgMDsgaisrKTsKKworCS8q IERvIHRoZSBlc3RpbWF0aW9uIG9uIG92ZXJsYXBwaW5nIHJlZ2lvbnMgKi8KKwl3aGlsZSAoaSA8 IG5oaXN0MSAmJiBqIDwgbmhpc3QyKQorCXsKKwkJZG91YmxlCQljdXJfc2VsMSwKKwkJCQkJY3Vy X3NlbDI7CisJCVJhbmdlQm91bmQJY3VyX3N5bmM7CisKKwkJaWYgKHJhbmdlX2NtcF9ib3VuZF92 YWx1ZXModHlwY2FjaGUsICZoaXN0MVtpXSwgJmhpc3QyW2pdKSA8IDApCisJCQljdXJfc3luYyA9 IGhpc3QxW2krK107CisJCWVsc2UgaWYgKHJhbmdlX2NtcF9ib3VuZF92YWx1ZXModHlwY2FjaGUs ICZoaXN0MVtpXSwgJmhpc3QyW2pdKSA+IDApCisJCQljdXJfc3luYyA9IGhpc3QyW2orK107CisJ CWVsc2UKKwkJeworCQkJLyogSWYgZXF1YWwsIHNraXAgb25lICovCisJCQljdXJfc3luYyA9IGhp c3QxW2ldOworCQkJaSsrOworCQkJaisrOworCQl9CisJCWN1cl9zZWwxID0gY2FsY19oaXN0X3Nl bGVjdGl2aXR5X3NjYWxhcih0eXBjYWNoZSwgJmN1cl9zeW5jLAorCQkJCQkJCQkJCQkJaGlzdDEs IG5oaXN0MSwgZmFsc2UpOworCQljdXJfc2VsMiA9IGNhbGNfaGlzdF9zZWxlY3Rpdml0eV9zY2Fs YXIodHlwY2FjaGUsICZjdXJfc3luYywKKwkJCQkJCQkJCQkJCWhpc3QyLCBuaGlzdDIsIGZhbHNl KTsKKworCQkvKiBTa2lwIHRoZSBmaXJzdCBpdGVyYXRpb24gKi8KKwkJaWYgKHByZXZfc2VsMSA+ PSAwKQorCQkJc2VsZWN0aXZpdHkgKz0gKHByZXZfc2VsMSArIGN1cl9zZWwxKSAqIChjdXJfc2Vs MiAtIHByZXZfc2VsMik7CisKKwkJLyogUHJlcGFyZSBmb3IgdGhlIG5leHQgaXRlcmF0aW9uICov CisJCXByZXZfc2VsMSA9IGN1cl9zZWwxOworCQlwcmV2X3NlbDIgPSBjdXJfc2VsMjsKKwl9CisK KwkvKiBQKFggPCBZKSA9IDAuNSAqIFN1bSguLi4pICovCisJc2VsZWN0aXZpdHkgLz0gMjsKKwor CS8qIEluY2x1ZGUgcmVtYWluZGVyIG9mIGhpc3QyIGlmIGFueSAqLworCWlmIChqIDwgbmhpc3Qy KQorCQlzZWxlY3Rpdml0eSArPSAxIC0gcHJldl9zZWwyOworCisJcmV0dXJuIHNlbGVjdGl2aXR5 OworfQorCisvKgorICogcmFuZ2Vqb2luc2VsIC0tIGpvaW4gY2FyZGluYWxpdHkgZm9yIHJhbmdl IG9wZXJhdG9ycworICovCitEYXR1bQorcmFuZ2Vqb2luc2VsKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJUGxhbm5lckluZm8gKnJvb3QgPSAoUGxhbm5lckluZm8gKikgUEdfR0VUQVJHX1BPSU5URVIo MCk7CisJT2lkCQkJb3BlcmF0b3IgPSBQR19HRVRBUkdfT0lEKDEpOworCUxpc3QJICAgKmFyZ3Mg PSAoTGlzdCAqKSBQR19HRVRBUkdfUE9JTlRFUigyKTsKKwlTcGVjaWFsSm9pbkluZm8gKnNqaW5m byA9IChTcGVjaWFsSm9pbkluZm8gKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CisJVmFyaWFibGVT dGF0RGF0YSB2YXJkYXRhMSwKKwkJCQl2YXJkYXRhMjsKKwlBdHRTdGF0c1Nsb3QgaGlzdDEsCisJ CQkJaGlzdDIsCisJCQkJc3Nsb3Q7CisJYm9vbAkJcmV2ZXJzZWQ7CisJU2VsZWN0aXZpdHkgc2Vs ZWM7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gTlVMTDsKKwlGb3JtX3BnX3N0YXRpc3Rp YyBzdGF0czEsCisJCQkJc3RhdHMyOworCWRvdWJsZQkJZW1wdHlfZnJhYzEsCisJCQkJZW1wdHlf ZnJhYzIsCisJCQkJbnVsbF9mcmFjMSwKKwkJCQludWxsX2ZyYWMyOworCWludAkJCW5oaXN0MSwK KwkJCQluaGlzdDI7CisJUmFuZ2VCb3VuZCAqaGlzdDFfbG93ZXIsCisJCQkgICAqaGlzdDFfdXBw ZXIsCisJCQkgICAqaGlzdDJfbG93ZXIsCisJCQkgICAqaGlzdDJfdXBwZXI7CisJYm9vbAkJZW1w dHk7CisJaW50CQkJaTsKKworCWdldF9qb2luX3ZhcmlhYmxlcyhyb290LCBhcmdzLCBzamluZm8s ICZ2YXJkYXRhMSwgJnZhcmRhdGEyLCAmcmV2ZXJzZWQpOworCisJc2VsZWMgPSBkZWZhdWx0X3Jh bmdlX3NlbGVjdGl2aXR5KG9wZXJhdG9yKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHZhcmRh dGExLnN0YXRzVHVwbGUpICYmCisJCWdldF9hdHRzdGF0c3Nsb3QoJmhpc3QxLCB2YXJkYXRhMS5z dGF0c1R1cGxlLAorCQkJCQkJIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNUT0dSQU0sIEludmFs aWRPaWQsCisJCQkJCQkgQVRUU1RBVFNTTE9UX1ZBTFVFUykgJiYKKwkJSGVhcFR1cGxlSXNWYWxp ZCh2YXJkYXRhMi5zdGF0c1R1cGxlKSAmJgorCQlnZXRfYXR0c3RhdHNzbG90KCZoaXN0MiwgdmFy ZGF0YTIuc3RhdHNUdXBsZSwKKwkJCQkJCSBTVEFUSVNUSUNfS0lORF9CT1VORFNfSElTVE9HUkFN LCBJbnZhbGlkT2lkLAorCQkJCQkJIEFUVFNUQVRTU0xPVF9WQUxVRVMpICYmCisJCXZhcmRhdGEx LnZhcnR5cGUgPT0gdmFyZGF0YTIudmFydHlwZSkKKwl7CisKKwkJLyogSW5pdGlhbGl6ZSB0eXBl IGNhY2hlICovCisJCXR5cGNhY2hlID0gcmFuZ2VfZ2V0X3R5cGNhY2hlKGZjaW5mbywgdmFyZGF0 YTEudmFydHlwZSk7CisKKwkJLyoKKwkJICogRmlyc3QgbG9vayB1cCB0aGUgZnJhY3Rpb24gb2Yg TlVMTHMgYW5kIGVtcHR5IHJhbmdlcyBmcm9tCisJCSAqIHBnX3N0YXRpc3RpYy4KKwkJICovCisJ CXN0YXRzMSA9IChGb3JtX3BnX3N0YXRpc3RpYykgR0VUU1RSVUNUKHZhcmRhdGExLnN0YXRzVHVw bGUpOworCQlzdGF0czIgPSAoRm9ybV9wZ19zdGF0aXN0aWMpIEdFVFNUUlVDVCh2YXJkYXRhMi5z dGF0c1R1cGxlKTsKKworCQludWxsX2ZyYWMxID0gc3RhdHMxLT5zdGFudWxsZnJhYzsKKwkJbnVs bF9mcmFjMiA9IHN0YXRzMi0+c3RhbnVsbGZyYWM7CisKKwkJLyogVHJ5IHRvIGdldCBmcmFjdGlv biBvZiBlbXB0eSByYW5nZXMgZm9yIHRoZSBmaXJzdCB2YXJpYWJsZSAqLworCQlpZiAoZ2V0X2F0 dHN0YXRzc2xvdCgmc3Nsb3QsIHZhcmRhdGExLnN0YXRzVHVwbGUsCisJCQkJCQkJIFNUQVRJU1RJ Q19LSU5EX1JBTkdFX0xFTkdUSF9ISVNUT0dSQU0sCisJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJ CQkJIEFUVFNUQVRTU0xPVF9OVU1CRVJTKSkKKwkJeworCQkJaWYgKHNzbG90Lm5udW1iZXJzICE9 IDEpCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBlbXB0 eSBmcmFjdGlvbiBzdGF0aXN0aWMiKTsKKwkJCWVtcHR5X2ZyYWMxID0gc3Nsb3QubnVtYmVyc1sw XTsKKwkJCWZyZWVfYXR0c3RhdHNzbG90KCZzc2xvdCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KiBObyBlbXB0eSBmcmFjdGlvbiBzdGF0aXN0aWMuIEFzc3VtZSBubyBlbXB0eSByYW5nZXMuICov CisJCQllbXB0eV9mcmFjMSA9IDAuMDsKKwkJfQorCisJCS8qIFRyeSB0byBnZXQgZnJhY3Rpb24g b2YgZW1wdHkgcmFuZ2VzIGZvciB0aGUgc2Vjb25kIHZhcmlhYmxlICovCisJCWlmIChnZXRfYXR0 c3RhdHNzbG90KCZzc2xvdCwgdmFyZGF0YTIuc3RhdHNUdXBsZSwKKwkJCQkJCQkgU1RBVElTVElD X0tJTkRfUkFOR0VfTEVOR1RIX0hJU1RPR1JBTSwKKwkJCQkJCQkgSW52YWxpZE9pZCwKKwkJCQkJ CQkgQVRUU1RBVFNTTE9UX05VTUJFUlMpKQorCQl7CisJCQlpZiAoc3Nsb3Qubm51bWJlcnMgIT0g MSkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGVtcHR5 IGZyYWN0aW9uIHN0YXRpc3RpYyIpOworCQkJZW1wdHlfZnJhYzIgPSBzc2xvdC5udW1iZXJzWzBd OworCQkJZnJlZV9hdHRzdGF0c3Nsb3QoJnNzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q IE5vIGVtcHR5IGZyYWN0aW9uIHN0YXRpc3RpYy4gQXNzdW1lIG5vIGVtcHR5IHJhbmdlcy4gKi8K KwkJCWVtcHR5X2ZyYWMyID0gMC4wOworCQl9CisKKwkJLyoKKwkJICogQ29udmVydCBoaXN0b2dy YW1zIG9mIHJhbmdlcyBpbnRvIGhpc3RvZ3JhbXMgb2YgdGhlaXIgbG93ZXIgYW5kCisJCSAqIHVw cGVyIGJvdW5kcyBmb3IgdGhlIGZpcnN0IHZhcmlhYmxlLgorCQkgKi8KKwkJbmhpc3QxID0gaGlz dDEubnZhbHVlczsKKwkJaGlzdDFfbG93ZXIgPSAoUmFuZ2VCb3VuZCAqKSBwYWxsb2Moc2l6ZW9m KFJhbmdlQm91bmQpICogbmhpc3QxKTsKKwkJaGlzdDFfdXBwZXIgPSAoUmFuZ2VCb3VuZCAqKSBw YWxsb2Moc2l6ZW9mKFJhbmdlQm91bmQpICogbmhpc3QxKTsKKwkJZm9yIChpID0gMDsgaSA8IG5o aXN0MTsgaSsrKQorCQl7CisJCQlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgRGF0dW1HZXRS YW5nZVR5cGVQKGhpc3QxLnZhbHVlc1tpXSksCisJCQkJCQkJICAmaGlzdDFfbG93ZXJbaV0sICZo aXN0MV91cHBlcltpXSwgJmVtcHR5KTsKKwkJCS8qIFRoZSBoaXN0b2dyYW0gc2hvdWxkIG5vdCBj b250YWluIGFueSBlbXB0eSByYW5nZXMgKi8KKwkJCWlmIChlbXB0eSkKKwkJCQllbG9nKEVSUk9S LCAiYm91bmRzIGhpc3RvZ3JhbSBjb250YWlucyBhbiBlbXB0eSByYW5nZSIpOworCQl9CisKKwkJ LyoKKwkJICogQ29udmVydCBoaXN0b2dyYW1zIG9mIHJhbmdlcyBpbnRvIGhpc3RvZ3JhbXMgb2Yg dGhlaXIgbG93ZXIgYW5kCisJCSAqIHVwcGVyIGJvdW5kcyBmb3IgdGhlIHNlY29uZCB2YXJpYWJs ZS4KKwkJICovCisJCW5oaXN0MiA9IGhpc3QyLm52YWx1ZXM7CisJCWhpc3QyX2xvd2VyID0gKFJh bmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0Mik7CisJCWhpc3Qy X3VwcGVyID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0 Mik7CisJCWZvciAoaSA9IDA7IGkgPCBuaGlzdDI7IGkrKykKKwkJeworCQkJcmFuZ2VfZGVzZXJp YWxpemUodHlwY2FjaGUsIERhdHVtR2V0UmFuZ2VUeXBlUChoaXN0Mi52YWx1ZXNbaV0pLAorCQkJ CQkJCSAgJmhpc3QyX2xvd2VyW2ldLCAmaGlzdDJfdXBwZXJbaV0sICZlbXB0eSk7CisJCQkvKiBU aGUgaGlzdG9ncmFtIHNob3VsZCBub3QgY29udGFpbiBhbnkgZW1wdHkgcmFuZ2VzICovCisJCQlp ZiAoZW1wdHkpCisJCQkJZWxvZyhFUlJPUiwgImJvdW5kcyBoaXN0b2dyYW0gY29udGFpbnMgYW4g ZW1wdHkgcmFuZ2UiKTsKKwkJfQorCisJCXN3aXRjaCAob3BlcmF0b3IpCisJCXsKKwkJCWNhc2Ug T0lEX1JBTkdFX09WRVJMQVBfT1A6CisKKwkJCQkvKgorCQkJCSAqIFNlbGVjdGl2aXR5IG9mIEEg JiYgQiA9IFNlbGVjdGl2aXR5IG9mIE5PVCggQSA8PCBCIHx8IEEgPj4KKwkJCQkgKiBCICkgPSAx IC0gU2VsZWN0aXZpdHkgb2YgKEEudXBwZXIgPCBCLmxvd2VyKSAtIFNlbGVjdGl2aXR5CisJCQkJ ICogb2YgKEIudXBwZXIgPCBBLmxvd2VyKQorCQkJCSAqLworCQkJCXNlbGVjID0gMTsKKwkJCQlz ZWxlYyAtPSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJ CQloaXN0MV91cHBlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJCWhpc3QyX2xvd2VyLCBuaGlzdDIp OworCQkJCXNlbGVjIC09IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHR5cGNhY2hlLAorCQkJ CQkJCQkJCQkJCWhpc3QyX3VwcGVyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkJaGlzdDFfbG93ZXIs IG5oaXN0MSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX0xFU1NfRVFVQUxfT1A6 CisKKwkJCQkvKgorCQkJCSAqIEEgPD0gQgorCQkJCSAqCisJCQkJICogU3RhcnQgYnkgY29tcGFy aW5nIGxvd2VyIGJvdW5kcyBhbmQgaWYgdGhleSBhcmUgZXF1YWwKKwkJCQkgKiBjb21wYXJlIHVw cGVyIGJvdW5kcworCQkJCSAqCisJCQkJICogTmVnYXRpb24gb2YgT0lEX1JBTkdFX0dSRUFURVJf T1AuCisJCQkJICoKKwkJCQkgKiBPdmVyZXN0aW1hdGUgYnkgY29tcGFyaW5nIG9ubHkgdGhlIGxv d2VyIGJvdW5kcy4gSGlnaGVyCisJCQkJICogYWNjdXJhY3kgd291bGQgcmVxdWlyZSB1cyB0byBz dWJ0cmFjdCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAodXBwZXIxID4gdXBwZXIyKQor CQkJCSAqLworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHR5cGNh Y2hlLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QyX2xvd2VyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkJ ICAgaGlzdDFfbG93ZXIsIG5oaXN0MSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX1JBTkdF X0xFU1NfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPCBCCisJCQkJICoKKwkJCQkgKiBTdGFydCBi eSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNv bXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBVbmRlcmVzdGltYXRlIGJ5IGNvbXBh cmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMuIEhpZ2hlcgorCQkJCSAqIGFjY3VyYWN5IHdvdWxk IHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIxID0gbG93ZXIyKSAqCisJCQkJICogUCh1cHBlcjEg PCB1cHBlcjIpCisJCQkJICovCisJCQkJc2VsZWMgPSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0 eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEsCisJCQkJCQkJ CQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURf UkFOR0VfR1JFQVRFUl9FUVVBTF9PUDoKKworCQkJCS8qCisJCQkJICogQSA+PSBCCisJCQkJICoK KwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBl cXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBOZWdhdGlv biBvZiBPSURfUkFOR0VfTEVTU19PUC4KKwkJCQkgKgorCQkJCSAqIE92ZXJlc3RpbWF0ZSBieSBj b21wYXJpbmcgb25seSB0aGUgbG93ZXIgYm91bmRzLiBIaWdoZXIKKwkJCQkgKiBhY2N1cmFjeSB3 b3VsZCByZXF1aXJlIHVzIHRvIGFkZCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAodXBw ZXIxIDwgdXBwZXIyKQorCQkJCSAqLworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3Nl bGVjdGl2aXR5KHR5cGNhY2hlLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEs CisJCQkJCQkJCQkJCQkJICAgaGlzdDJfbG93ZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgT0lEX1JBTkdFX0dSRUFURVJfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPiBCID09IEIg PCBBCisJCQkJICoKKwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBp ZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJ CQkgKiBVbmRlcmVzdGltYXRlIGJ5IGNvbXBhcmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMuIEhp Z2hlcgorCQkJCSAqIGFjY3VyYWN5IHdvdWxkIHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIxID0g bG93ZXIyKSAqCisJCQkJICogUCh1cHBlcjEgPiB1cHBlcjIpCisJCQkJICovCisJCQkJc2VsZWMg PSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhp c3QyX2xvd2VyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkgICBoaXN0MV9sb3dlciwgbmhpc3QxKTsK KwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfUkFOR0VfTEVGVF9PUDoKKwkJCQkvKiB2YXIxIDw8 IHZhcjIgd2hlbiB1cHBlcih2YXIxKSA8IGxvd2VyKHZhcjIpICovCisJCQkJc2VsZWMgPSBjYWxj X2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX3Vw cGVyLCBuaGlzdDEsCisJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBPSURfUkFOR0VfUklHSFRfT1A6CisJCQkJLyogdmFyMSA+PiB2YXIy IHdoZW4gdXBwZXIodmFyMikgPCBsb3dlcih2YXIxKSAqLworCQkJCXNlbGVjID0gY2FsY19oaXN0 X2pvaW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkgICBoaXN0Ml91cHBlciwg bmhpc3QyLAorCQkJCQkJCQkJCQkJICAgaGlzdDFfbG93ZXIsIG5oaXN0MSk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX0xFRlRfT1A6CisJCQkJLyogdmFyMSAmPCB2 YXIyIHdoZW4gdXBwZXIodmFyMSkgPCB1cHBlcih2YXIyKSAqLworCQkJCXNlbGVjID0gY2FsY19o aXN0X2pvaW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkgICBoaXN0MV91cHBl ciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJICAgaGlzdDJfdXBwZXIsIG5oaXN0Mik7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX1JJR0hUX09QOgorCQkJCS8qIHZhcjEg Jj4gdmFyMiB3aGVuIGxvd2VyKHZhcjIpIDwgbG93ZXIodmFyMSkgKi8KKwkJCQlzZWxlYyA9IGNh bGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHR5cGNhY2hlLAorCQkJCQkJCQkJCQkJICAgaGlzdDJf bG93ZXIsIG5oaXN0MiwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJ CWJyZWFrOworCisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlORURfT1A6CisKKwkJCQkvKgorCQkJ CSAqIHZhcjEgPEAgdmFyMiBpcyBlcXVpdmFsZW50IHRvIGxvd2VyKHZhcjIpIDw9IGxvd2VyKHZh cjEpCisJCQkJICogYW5kIHVwcGVyKHZhcjEpIDw9IHVwcGVyKHZhcjIpCisJCQkJICoKKwkJCQkg KiBBZnRlciBuZWdhdGluZyBib3RoIHNpZGVzIHdlIGdldCBub3QoIGxvd2VyKHZhcjEpIDwKKwkJ CQkgKiBsb3dlcih2YXIyKSApIGFuZCBub3QoIHVwcGVyKHZhcjIpIDwgdXBwZXIodmFyMSkgKSwK KwkJCQkgKiByZXNwZWN0aXZlbHkuIEFzc3VtaW5nIGluZGVwZW5kZW5jZSwgbXVsdGlwbHkgYm90 aAorCQkJCSAqIHNlbGVjdGl2aXRpZXMuCisJCQkJICovCisJCQkJc2VsZWMgPSAxIC0gY2FsY19o aXN0X2pvaW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkJICAgaGlzdDFfbG93 ZXIsIG5oaXN0MSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlz ZWxlYyAqPSAxIC0gY2FsY19oaXN0X2pvaW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJ CQkJCQkJCWhpc3QyX3VwcGVyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkJCWhpc3QxX3VwcGVyLCBu aGlzdDEpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlOU19PUDoKKwor CQkJCS8qCisJCQkJICogdmFyMSBAPiB2YXIyIGlzIGVxdWl2YWxlbnQgdG8gbG93ZXIodmFyMSkg PD0gbG93ZXIodmFyMikKKwkJCQkgKiBhbmQgdXBwZXIodmFyMikgPD0gdXBwZXIodmFyMSkKKwkJ CQkgKgorCQkJCSAqIEFmdGVyIG5lZ2F0aW5nIGJvdGggc2lkZXMgd2UgZ2V0IG5vdCggbG93ZXIo dmFyMikgPAorCQkJCSAqIGxvd2VyKHZhcjEpICkgYW5kIG5vdCggdXBwZXIodmFyMSkgPCB1cHBl cih2YXIyKSApLAorCQkJCSAqIHJlc3BlY3RpdmVseS4gQXNzdW1pbmcgaW5kZXBlbmRlbmNlLCBt dWx0aXBseSBib3RoCisJCQkJICogc2VsZWN0aXZpdGllcy4KKwkJCQkgKi8KKwkJCQlzZWxlYyA9 IDEgLSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQkg ICBoaXN0Ml9sb3dlciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlz dDEpOworCQkJCXNlbGVjICo9IDEgLSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNo ZSwKKwkJCQkJCQkJCQkJCQkJaGlzdDFfdXBwZXIsIG5oaXN0MSwKKwkJCQkJCQkJCQkJCQkJaGlz dDJfdXBwZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX0NPTlRB SU5TX0VMRU1fT1A6CisJCQljYXNlIE9JRF9SQU5HRV9FTEVNX0NPTlRBSU5FRF9PUDoKKworCQkJ CS8qCisJCQkJICoganVzdCBwdW50IGZvciBub3csIGVzdGltYXRpb24gd291bGQgcmVxdWlyZSBl eHRyYWN0aW9uIG9mCisJCQkJICogaGlzdG9ncmFtcyBmb3IgdGhlIGFueWVsZW1lbnQKKwkJCQkg Ki8KKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKworCisJCS8qIHRoZSBjYWxjdWxhdGVk IHNlbGVjdGl2aXR5IG9ubHkgYXBwbGllcyB0byBub24tZW1wdHkgcmFuZ2VzICovCisJCXNlbGVj ICo9ICgxIC0gZW1wdHlfZnJhYzEpICogKDEgLSBlbXB0eV9mcmFjMik7CisKKwkJLyoKKwkJICog RGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvciwgZW1wdHkgcmFuZ2VzIG1pZ2h0IG1hdGNoIGRpZmZl cmVudAorCQkgKiBmcmFjdGlvbnMgb2YgdGhlIHJlc3VsdC4KKwkJICovCisJCXN3aXRjaCAob3Bl cmF0b3IpCisJCXsKKwkJCWNhc2UgT0lEX1JBTkdFX0xFU1NfT1A6CisKKwkJCQkvKgorCQkJCSAq IGVtcHR5IHJhbmdlIDwgbm9uLWVtcHR5IHJhbmdlCisJCQkJICovCisJCQkJc2VsZWMgKz0gZW1w dHlfZnJhYzEgKiAoMSAtIGVtcHR5X2ZyYWMyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURf UkFOR0VfR1JFQVRFUl9PUDoKKworCQkJCS8qCisJCQkJICogbm9uLWVtcHR5IHJhbmdlID4gZW1w dHkgcmFuZ2UKKwkJCQkgKi8KKwkJCQlzZWxlYyArPSAoMSAtIGVtcHR5X2ZyYWMxKSAqIGVtcHR5 X2ZyYWMyOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlORURfT1A6CisK KwkJCQkvKgorCQkJCSAqIGVtcHR5IHJhbmdlIDxAIGFueSByYW5nZQorCQkJCSAqLworCQkJY2Fz ZSBPSURfUkFOR0VfTEVTU19FUVVBTF9PUDoKKworCQkJCS8qCisJCQkJICogZW1wdHkgcmFuZ2Ug PD0gYW55IHJhbmdlCisJCQkJICovCisJCQkJc2VsZWMgKz0gZW1wdHlfZnJhYzE7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX0NPTlRBSU5TX09QOgorCisJCQkJLyoKKwkJCQkgKiBh bnkgcmFuZ2UgQD4gZW1wdHkgcmFuZ2UKKwkJCQkgKi8KKwkJCWNhc2UgT0lEX1JBTkdFX0dSRUFU RVJfRVFVQUxfT1A6CisKKwkJCQkvKgorCQkJCSAqIGFueSByYW5nZSA+PSBlbXB0eSByYW5nZQor CQkJCSAqLworCQkJCXNlbGVjICs9IGVtcHR5X2ZyYWMyOworCQkJCWJyZWFrOworCisJCQljYXNl IE9JRF9SQU5HRV9DT05UQUlOU19FTEVNX09QOgorCQkJY2FzZSBPSURfUkFOR0VfRUxFTV9DT05U QUlORURfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQX09QOgorCQkJY2FzZSBPSURfUkFO R0VfT1ZFUkxBUFNfTEVGVF9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX1JJR0hUX09Q OgorCQkJY2FzZSBPSURfUkFOR0VfTEVGVF9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX1JJR0hUX09Q OgorCQkJZGVmYXVsdDoKKworCQkJCS8qCisJCQkJICogdGhlc2Ugb3BlcmF0b3JzIGFsd2F5cyBy ZXR1cm4gZmFsc2Ugd2hlbiBhbiBlbXB0eSByYW5nZSBpcworCQkJCSAqIGludm9sdmVkCisJCQkJ ICovCisJCQkJYnJlYWs7CisKKwkJfQorCisJCS8qIGFsbCByYW5nZSBvcGVyYXRvcnMgYXJlIHN0 cmljdCAqLworCQlzZWxlYyAqPSAoMSAtIG51bGxfZnJhYzEpICogKDEgLSBudWxsX2ZyYWMyKTsK KworCQlmcmVlX2F0dHN0YXRzc2xvdCgmaGlzdDEpOworCQlmcmVlX2F0dHN0YXRzc2xvdCgmaGlz dDIpOworCX0KKworCVJlbGVhc2VWYXJpYWJsZVN0YXRzKHZhcmRhdGExKTsKKwlSZWxlYXNlVmFy aWFibGVTdGF0cyh2YXJkYXRhMik7CisKKwlDTEFNUF9QUk9CQUJJTElUWShzZWxlYyk7CisKKwlQ R19SRVRVUk5fRkxPQVQ4KChmbG9hdDgpIHNlbGVjKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29w ZXJhdG9yLmRhdAppbmRleCAwZTc1MTFkZGUxLi5jYmVlM2MyMjkzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX29wZXJhdG9yLmRhdApAQCAtMzA3MSw3OCArMzA3MSw3OCBAQAogICBvcHJuYW1lID0+ICc8 Jywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55cmFuZ2UnLAogICBvcHJy ZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJz4oYW55cmFuZ2UsYW55cmFuZ2UpJywKICAgb3By bmVnYXRlID0+ICc+PShhbnlyYW5nZSxhbnlyYW5nZSknLCBvcHJjb2RlID0+ICdyYW5nZV9sdCcs Ci0gIG9wcnJlc3QgPT4gJ3Jhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9 LAorICBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3Jhbmdlam9pbnNlbCcgfSwK IHsgb2lkID0+ICczODg1Jywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX0xFU1NfRVFVQUxfT1An LAogICBkZXNjciA9PiAnbGVzcyB0aGFuIG9yIGVxdWFsJywKICAgb3BybmFtZSA9PiAnPD0nLCBv cHJsZWZ0ID0+ICdhbnlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3Vs dCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPj0oYW55cmFuZ2UsYW55cmFuZ2UpJywKICAgb3BybmVn YXRlID0+ICc+KGFueXJhbmdlLGFueXJhbmdlKScsIG9wcmNvZGUgPT4gJ3JhbmdlX2xlJywKLSAg b3BycmVzdCA9PiAncmFuZ2VzZWwnLCBvcHJqb2luID0+ICdzY2FsYXJsZWpvaW5zZWwnIH0sCisg IG9wcnJlc3QgPT4gJ3Jhbmdlc2VsJywgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBv aWQgPT4gJzM4ODYnLCBvaWRfc3ltYm9sID0+ICdPSURfUkFOR0VfR1JFQVRFUl9FUVVBTF9PUCcs CiAgIGRlc2NyID0+ICdncmVhdGVyIHRoYW4gb3IgZXF1YWwnLAogICBvcHJuYW1lID0+ICc+PScs IG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVz dWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8PShhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJu ZWdhdGUgPT4gJzwoYW55cmFuZ2UsYW55cmFuZ2UpJywgb3ByY29kZSA9PiAncmFuZ2VfZ2UnLAot ICBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmdlam9pbnNlbCcgfSwK KyAgb3BycmVzdCA9PiAncmFuZ2VzZWwnLCBvcHJqb2luID0+ICdyYW5nZWpvaW5zZWwnIH0sCiB7 IG9pZCA9PiAnMzg4NycsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9HUkVBVEVSX09QJywKICAg ZGVzY3IgPT4gJ2dyZWF0ZXIgdGhhbicsCiAgIG9wcm5hbWUgPT4gJz4nLCBvcHJsZWZ0ID0+ICdh bnlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcs IG9wcmNvbSA9PiAnPChhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJuZWdhdGUgPT4gJzw9KGFu eXJhbmdlLGFueXJhbmdlKScsIG9wcmNvZGUgPT4gJ3JhbmdlX2d0JywKLSAgb3BycmVzdCA9PiAn cmFuZ2VzZWwnLCBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5zZWwnIH0sCisgIG9wcnJlc3QgPT4g J3Jhbmdlc2VsJywgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4ODgn LCBvaWRfc3ltYm9sID0+ICdPSURfUkFOR0VfT1ZFUkxBUF9PUCcsIGRlc2NyID0+ICdvdmVybGFw cycsCiAgIG9wcm5hbWUgPT4gJyYmJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9 PiAnYW55cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJyYmKGFueXJh bmdlLGFueXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ3JhbmdlX292ZXJsYXBzJywgb3BycmVzdCA9 PiAncmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdhcmVham9pbnNlbCcgfSwKKyAgb3Byam9pbiA9 PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4ODknLCBvaWRfc3ltYm9sID0+ICdPSURf UkFOR0VfQ09OVEFJTlNfRUxFTV9PUCcsCiAgIGRlc2NyID0+ICdjb250YWlucycsCiAgIG9wcm5h bWUgPT4gJ0A+Jywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55ZWxlbWVu dCcsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPEAoYW55ZWxlbWVudCxhbnly YW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9jb250YWluc19lbGVtJywgb3BycmVzdCA9PiAn cmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAn cmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4OTAnLCBvaWRfc3ltYm9sID0+ICdPSURfUkFO R0VfQ09OVEFJTlNfT1AnLCBkZXNjciA9PiAnY29udGFpbnMnLAogICBvcHJuYW1lID0+ICdAPics IG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVz dWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8QChhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJj b2RlID0+ICdyYW5nZV9jb250YWlucycsIG9wcnJlc3QgPT4gJ3Jhbmdlc2VsJywKLSAgb3Byam9p biA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ3Jhbmdlam9pbnNlbCcgfSwKIHsg b2lkID0+ICczODkxJywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX0VMRU1fQ09OVEFJTkVEX09Q JywKICAgZGVzY3IgPT4gJ2lzIGNvbnRhaW5lZCBieScsCiAgIG9wcm5hbWUgPT4gJzxAJywgb3By bGVmdCA9PiAnYW55ZWxlbWVudCcsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3Vs dCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnQD4oYW55cmFuZ2UsYW55ZWxlbWVudCknLAogICBvcHJj b2RlID0+ICdlbGVtX2NvbnRhaW5lZF9ieV9yYW5nZScsIG9wcnJlc3QgPT4gJ3Jhbmdlc2VsJywK LSAgb3Byam9pbiA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ3Jhbmdlam9pbnNl bCcgfSwKIHsgb2lkID0+ICczODkyJywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX0NPTlRBSU5F RF9PUCcsCiAgIGRlc2NyID0+ICdpcyBjb250YWluZWQgYnknLAogICBvcHJuYW1lID0+ICc8QCcs IG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVz dWx0ID0+ICdib29sJywgb3ByY29tID0+ICdAPihhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJj b2RlID0+ICdyYW5nZV9jb250YWluZWRfYnknLCBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsCi0gIG9w cmpvaW4gPT4gJ2NvbnRqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdyYW5nZWpvaW5zZWwnIH0s CiB7IG9pZCA9PiAnMzg5MycsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9MRUZUX09QJywgZGVz Y3IgPT4gJ2lzIGxlZnQgb2YnLAogICBvcHJuYW1lID0+ICc8PCcsIG9wcmxlZnQgPT4gJ2FueXJh bmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3By Y29tID0+ICc+PihhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9iZWZv cmUnLCBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3NjYWxhcmx0am9pbnNl bCcgfSwKKyAgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4OTQnLCBv aWRfc3ltYm9sID0+ICdPSURfUkFOR0VfUklHSFRfT1AnLCBkZXNjciA9PiAnaXMgcmlnaHQgb2Yn LAogICBvcHJuYW1lID0+ICc+PicsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4g J2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8PChhbnlyYW5n ZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9hZnRlcicsIG9wcnJlc3QgPT4gJ3Jh bmdlc2VsJywKLSAgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJqb2luID0+ ICdyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMzg5NScsIG9pZF9zeW1ib2wgPT4gJ09JRF9S QU5HRV9PVkVSTEFQU19MRUZUX09QJywKICAgZGVzY3IgPT4gJ292ZXJsYXBzIG9yIGlzIGxlZnQg b2YnLAogICBvcHJuYW1lID0+ICcmPCcsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQg PT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29kZSA9PiAncmFuZ2Vf b3ZlcmxlZnQnLCBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3NjYWxhcmx0 am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4 OTYnLCBvaWRfc3ltYm9sID0+ICdPSURfUkFOR0VfT1ZFUkxBUFNfUklHSFRfT1AnLAogICBkZXNj ciA9PiAnb3ZlcmxhcHMgb3IgaXMgcmlnaHQgb2YnLAogICBvcHJuYW1lID0+ICcmPicsIG9wcmxl ZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ ICdib29sJywgb3ByY29kZSA9PiAncmFuZ2Vfb3ZlcnJpZ2h0Jywgb3BycmVzdCA9PiAncmFuZ2Vz ZWwnLAotICBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ3Jh bmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICczODk3JywgZGVzY3IgPT4gJ2lzIGFkamFjZW50IHRv JywKICAgb3BybmFtZSA9PiAnLXwtJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9 PiAnYW55cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJy18LShhbnly YW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9hZGphY2VudCcsIG9wcnJlc3Qg PT4gJ21hdGNoaW5nc2VsJywKLSAgb3Byam9pbiA9PiAnbWF0Y2hpbmdqb2luc2VsJyB9LAorICBv cHJqb2luID0+ICdyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMzg5OCcsIGRlc2NyID0+ICdy YW5nZSB1bmlvbicsCiAgIG9wcm5hbWUgPT4gJysnLCBvcHJsZWZ0ID0+ICdhbnlyYW5nZScsIG9w cnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYW55cmFuZ2UnLCBvcHJjb20g PT4gJysoYW55cmFuZ2UsYW55cmFuZ2UpJywKQEAgLTMyNzcsMTM5ICszMjc3LDEzOSBAQAogICBv cHJuYW1lID0+ICc8Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdh bnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc+KGFueW11 bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknLAogICBvcHJuZWdhdGUgPT4gJz49KGFueW11bHRpcmFu Z2UsYW55bXVsdGlyYW5nZSknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2x0JywKLSAgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmx0am9pbnNlbCcgfSwKKyAg b3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2Vs JyB9LAogeyBvaWQgPT4gJzI4NjMnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9MRVNT X0VRVUFMX09QJywKICAgZGVzY3IgPT4gJ2xlc3MgdGhhbiBvciBlcXVhbCcsCiAgIG9wcm5hbWUg PT4gJzw9Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0 aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc+PShhbnltdWx0aXJh bmdlLGFueW11bHRpcmFuZ2UpJywKICAgb3BybmVnYXRlID0+ICc+KGFueW11bHRpcmFuZ2UsYW55 bXVsdGlyYW5nZSknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2xlJywKLSAgb3BycmVzdCA9PiAn bXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmxlam9pbnNlbCcgfSwKKyAgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAog eyBvaWQgPT4gJzI4NjQnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9HUkVBVEVSX0VR VUFMX09QJywKICAgZGVzY3IgPT4gJ2dyZWF0ZXIgdGhhbiBvciBlcXVhbCcsCiAgIG9wcm5hbWUg PT4gJz49Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0 aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8PShhbnltdWx0aXJh bmdlLGFueW11bHRpcmFuZ2UpJywKICAgb3BybmVnYXRlID0+ICc8KGFueW11bHRpcmFuZ2UsYW55 bXVsdGlyYW5nZSknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2dlJywKLSAgb3BycmVzdCA9PiAn bXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmdlam9pbnNlbCcgfSwKKyAgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAog eyBvaWQgPT4gJzI4NjUnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9HUkVBVEVSX09Q JywKICAgZGVzY3IgPT4gJ2dyZWF0ZXIgdGhhbicsCiAgIG9wcm5hbWUgPT4gJz4nLCBvcHJsZWZ0 ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBvcHJy ZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJzwoYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdl KScsCiAgIG9wcm5lZ2F0ZSA9PiAnPD0oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsIG9w cmNvZGUgPT4gJ211bHRpcmFuZ2VfZ3QnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywg b3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdl c2VsJywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg2Nics IG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9PVkVSTEFQU19NVUxUSVJBTkdFX09QJywKICAgZGVz Y3IgPT4gJ292ZXJsYXBzJywKICAgb3BybmFtZSA9PiAnJiYnLCBvcHJsZWZ0ID0+ICdhbnlyYW5n ZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywg b3ByY29tID0+ICcmJihhbnltdWx0aXJhbmdlLGFueXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ3Jh bmdlX292ZXJsYXBzX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywKLSAg b3Byam9pbiA9PiAnYXJlYWpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2lu c2VsJyB9LAogeyBvaWQgPT4gJzI4NjcnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9P VkVSTEFQU19SQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdvdmVybGFwcycsCiAgIG9wcm5hbWUgPT4g JyYmJywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScs CiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnJiYoYW55cmFuZ2UsYW55bXVsdGly YW5nZSknLAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX292ZXJsYXBzX3JhbmdlJywgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2FyZWFqb2luc2VsJyB9LAorICBv cHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICcyODY4Jywgb2lkX3N5 bWJvbCA9PiAnT0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNfTVVMVElSQU5HRV9PUCcsCiAgIGRlc2Ny ID0+ICdvdmVybGFwcycsCiAgIG9wcm5hbWUgPT4gJyYmJywgb3BybGVmdCA9PiAnYW55bXVsdGly YW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29s Jywgb3ByY29tID0+ICcmJihhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29k ZSA9PiAnbXVsdGlyYW5nZV9vdmVybGFwc19tdWx0aXJhbmdlJywgb3BycmVzdCA9PiAnbXVsdGly YW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2FyZWFqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdt dWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICcyODY5Jywgb2lkX3N5bWJvbCA9PiAnT0lE X01VTFRJUkFOR0VfQ09OVEFJTlNfRUxFTV9PUCcsCiAgIGRlc2NyID0+ICdjb250YWlucycsCiAg IG9wcm5hbWUgPT4gJ0A+Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ ICdhbnllbGVtZW50JywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8QChhbnll bGVtZW50LGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9jb250YWlu c19lbGVtJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2NvbnRq b2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ ICcyODcwJywgb2lkX3N5bWJvbCA9PiAnT0lEX01VTFRJUkFOR0VfQ09OVEFJTlNfUkFOR0VfT1An LAogICBkZXNjciA9PiAnY29udGFpbnMnLAogICBvcHJuYW1lID0+ICdAPicsIG9wcmxlZnQgPT4g J2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4g J2Jvb2wnLCBvcHJjb20gPT4gJzxAKGFueXJhbmdlLGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29k ZSA9PiAnbXVsdGlyYW5nZV9jb250YWluc19yYW5nZScsIG9wcnJlc3QgPT4gJ211bHRpcmFuZ2Vz ZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGly YW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3MScsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxU SVJBTkdFX0NPTlRBSU5TX01VTFRJUkFOR0VfT1AnLAogICBkZXNjciA9PiAnY29udGFpbnMnLAog ICBvcHJuYW1lID0+ICdAPicsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9 PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPEAo YW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2Vf Y29udGFpbnNfbXVsdGlyYW5nZScsIG9wcnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAotICBvcHJq b2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwn IH0sCiB7IG9pZCA9PiAnMjg3MicsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX0VMRU1f Q09OVEFJTkVEX09QJywKICAgZGVzY3IgPT4gJ2lzIGNvbnRhaW5lZCBieScsCiAgIG9wcm5hbWUg PT4gJzxAJywgb3BybGVmdCA9PiAnYW55ZWxlbWVudCcsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJh bmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICdAPihhbnltdWx0aXJhbmdl LGFueWVsZW1lbnQpJywKICAgb3ByY29kZSA9PiAnZWxlbV9jb250YWluZWRfYnlfbXVsdGlyYW5n ZScsIG9wcnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNl bCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3 MycsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX1JBTkdFX0NPTlRBSU5FRF9PUCcsCiAg IGRlc2NyID0+ICdpcyBjb250YWluZWQgYnknLAogICBvcHJuYW1lID0+ICc8QCcsIG9wcmxlZnQg PT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBvcHJyZXN1bHQg PT4gJ2Jvb2wnLCBvcHJjb20gPT4gJ0A+KGFueW11bHRpcmFuZ2UsYW55cmFuZ2UpJywKICAgb3By Y29kZSA9PiAncmFuZ2VfY29udGFpbmVkX2J5X211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0 aXJhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4g J211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzI4NzQnLCBvaWRfc3ltYm9sID0+ICdP SURfTVVMVElSQU5HRV9NVUxUSVJBTkdFX0NPTlRBSU5FRF9PUCcsCiAgIGRlc2NyID0+ICdpcyBj b250YWluZWQgYnknLAogICBvcHJuYW1lID0+ICc8QCcsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFu Z2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcs IG9wcmNvbSA9PiAnQD4oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUg PT4gJ211bHRpcmFuZ2VfY29udGFpbmVkX2J5X211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0 aXJhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4g J211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzQ1MzknLCBvaWRfc3ltYm9sID0+ICdP SURfUkFOR0VfQ09OVEFJTlNfTVVMVElSQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdjb250YWlucycs CiAgIG9wcm5hbWUgPT4gJ0A+Jywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAn YW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPEAoYW55 bXVsdGlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9jb250YWluc19tdWx0 aXJhbmdlJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2NvbnRq b2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ ICc0NTQwJywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX01VTFRJUkFOR0VfQ09OVEFJTkVEX09Q JywKICAgZGVzY3IgPT4gJ2lzIGNvbnRhaW5lZCBieScsCiAgIG9wcm5hbWUgPT4gJzxAJywgb3By bGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJl c3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnQD4oYW55cmFuZ2UsYW55bXVsdGlyYW5nZSknLAog ICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2NvbnRhaW5lZF9ieV9yYW5nZScsIG9wcnJlc3QgPT4g J211bHRpcmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9p biA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3NScsIG9pZF9zeW1ib2wg PT4gJ09JRF9SQU5HRV9PVkVSTEFQU19MRUZUX01VTFRJUkFOR0VfT1AnLAogICBkZXNjciA9PiAn b3ZlcmxhcHMgb3IgaXMgbGVmdCBvZicsCiAgIG9wcm5hbWUgPT4gJyY8Jywgb3BybGVmdCA9PiAn YW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAn Ym9vbCcsIG9wcmNvZGUgPT4gJ3JhbmdlX292ZXJsZWZ0X211bHRpcmFuZ2UnLAotICBvcHJyZXN0 ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9LAorICBv cHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwn IH0sCiB7IG9pZCA9PiAnMjg3NicsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJM QVBTX0xFRlRfUkFOR0VfT1AnLAogICBkZXNjciA9PiAnb3ZlcmxhcHMgb3IgaXMgbGVmdCBvZics CiAgIG9wcm5hbWUgPT4gJyY8Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0 ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvZGUgPT4gJ211bHRp cmFuZ2Vfb3ZlcmxlZnRfcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3By am9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2Vs Jywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3NycsIG9p ZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJMQVBTX0xFRlRfTVVMVElSQU5HRV9PUCcs CiAgIGRlc2NyID0+ICdvdmVybGFwcyBvciBpcyBsZWZ0IG9mJywKICAgb3BybmFtZSA9PiAnJjwn LCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2Un LAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX292ZXJsZWZ0 X211bHRpcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAn c2NhbGFybHRqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9p biA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMzU4NScsIG9pZF9zeW1ib2wg PT4gJ09JRF9SQU5HRV9PVkVSTEFQU19SSUdIVF9NVUxUSVJBTkdFX09QJywKICAgZGVzY3IgPT4g J292ZXJsYXBzIG9yIGlzIHJpZ2h0IG9mJywKICAgb3BybmFtZSA9PiAnJj4nLCBvcHJsZWZ0ID0+ ICdhbnlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ ICdib29sJywgb3ByY29kZSA9PiAncmFuZ2Vfb3ZlcnJpZ2h0X211bHRpcmFuZ2UnLAotICBvcHJy ZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAor ICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5z ZWwnIH0sCiB7IG9pZCA9PiAnNDAzNScsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09W RVJMQVBTX1JJR0hUX1JBTkdFX09QJywKICAgZGVzY3IgPT4gJ292ZXJsYXBzIG9yIGlzIHJpZ2h0 IG9mJywKICAgb3BybmFtZSA9PiAnJj4nLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3By cmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29kZSA9PiAn bXVsdGlyYW5nZV9vdmVycmlnaHRfcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2Vs Jywgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJh bmdlc2VsJywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnNDE0 MicsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJMQVBTX1JJR0hUX01VTFRJUkFO R0VfT1AnLAogICBkZXNjciA9PiAnb3ZlcmxhcHMgb3IgaXMgcmlnaHQgb2YnLAogICBvcHJuYW1l ID0+ICcmPicsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVs dGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2Vf b3ZlcnJpZ2h0X211bHRpcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3By am9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2Vs Jywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnNDE3OScsIG9p ZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9BREpBQ0VOVF9NVUxUSVJBTkdFX09QJywKICAgZGVzY3Ig PT4gJ2lzIGFkamFjZW50IHRvJywKICAgb3BybmFtZSA9PiAnLXwtJywgb3BybGVmdCA9PiAnYW55 cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9v bCcsIG9wcmNvbSA9PiAnLXwtKGFueW11bHRpcmFuZ2UsYW55cmFuZ2UpJywKICAgb3ByY29kZSA9 PiAncmFuZ2VfYWRqYWNlbnRfbXVsdGlyYW5nZScsIG9wcnJlc3QgPT4gJ21hdGNoaW5nc2VsJywK LSAgb3Byam9pbiA9PiAnbWF0Y2hpbmdqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJh bmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICc0MTgwJywgb2lkX3N5bWJvbCA9PiAnT0lEX01VTFRJ UkFOR0VfQURKQUNFTlRfUkFOR0VfT1AnLAogICBkZXNjciA9PiAnaXMgYWRqYWNlbnQgdG8nLAog ICBvcHJuYW1lID0+ICctfC0nLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQg PT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICctfC0oYW55 cmFuZ2UsYW55bXVsdGlyYW5nZSknLAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2FkamFjZW50 X3JhbmdlJywgb3BycmVzdCA9PiAnbWF0Y2hpbmdzZWwnLAotICBvcHJqb2luID0+ICdtYXRjaGlu Z2pvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQg PT4gJzQxOTgnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9BREpBQ0VOVF9NVUxUSVJB TkdFX09QJywKICAgZGVzY3IgPT4gJ2lzIGFkamFjZW50IHRvJywKICAgb3BybmFtZSA9PiAnLXwt Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdl JywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICctfC0oYW55bXVsdGlyYW5nZSxh bnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfYWRqYWNlbnRfbXVsdGly YW5nZScsIG9wcnJlc3QgPT4gJ21hdGNoaW5nc2VsJywKLSAgb3Byam9pbiA9PiAnbWF0Y2hpbmdq b2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ ICc0MzkyJywgZGVzY3IgPT4gJ211bHRpcmFuZ2UgdW5pb24nLAogICBvcHJuYW1lID0+ICcrJywg b3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywK ICAgb3BycmVzdWx0ID0+ICdhbnltdWx0aXJhbmdlJywgb3ByY29tID0+ICcrKGFueW11bHRpcmFu Z2UsYW55bXVsdGlyYW5nZSknLApAQCAtMzQyNiwzNiArMzQyNiwzNiBAQAogICBvcHJuYW1lID0+ ICc8PCcsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2Un LAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJz4+KGFueW11bHRpcmFuZ2UsYW55 cmFuZ2UpJywKICAgb3ByY29kZSA9PiAncmFuZ2VfYmVmb3JlX211bHRpcmFuZ2UnLCBvcHJyZXN0 ID0+ICdtdWx0aXJhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9LAor ICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICc0Mzk2Jywgb2lk X3N5bWJvbCA9PiAnT0lEX01VTFRJUkFOR0VfTEVGVF9SQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdp cyBsZWZ0IG9mJywKICAgb3BybmFtZSA9PiAnPDwnLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdl Jywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29t ID0+ICc+PihhbnlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFu Z2VfYmVmb3JlX3JhbmdlJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4g PT4gJ3NjYWxhcmx0am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwn IH0sCiB7IG9pZCA9PiAnNDM5NycsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX0xFRlRf TVVMVElSQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdpcyBsZWZ0IG9mJywKICAgb3BybmFtZSA9PiAn PDwnLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFu Z2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJz4+KGFueW11bHRpcmFuZ2Us YW55bXVsdGlyYW5nZSknLAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2JlZm9yZV9tdWx0aXJh bmdlJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3NjYWxhcmx0 am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9 PiAnNDM5OCcsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QJywK ICAgZGVzY3IgPT4gJ2lzIHJpZ2h0IG9mJywKICAgb3BybmFtZSA9PiAnPj4nLCBvcHJsZWZ0ID0+ ICdhbnlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ ICdib29sJywgb3ByY29tID0+ICc8PChhbnltdWx0aXJhbmdlLGFueXJhbmdlKScsCiAgIG9wcmNv ZGUgPT4gJ3JhbmdlX2FmdGVyX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2Vs JywKLSAgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0 aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICc0Mzk5Jywgb2lkX3N5bWJvbCA9PiAnT0lEX01V TFRJUkFOR0VfUklHSFRfUkFOR0VfT1AnLAogICBkZXNjciA9PiAnaXMgcmlnaHQgb2YnLAogICBv cHJuYW1lID0+ICc+PicsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAn YW55cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJzw8KGFueXJhbmdl LGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9hZnRlcl9yYW5nZScs IG9wcnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5z ZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzQ0 MDAnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QJywK ICAgZGVzY3IgPT4gJ2lzIHJpZ2h0IG9mJywKICAgb3BybmFtZSA9PiAnPj4nLCBvcHJsZWZ0ID0+ ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBvcHJyZXN1 bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJzw8KGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSkn LAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2FmdGVyX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ ICdtdWx0aXJhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBv cHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggNzk3OTM5Mjc3Ni4uNGVhYWFkOWZlMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC0xMjEyNCw2ICsxMjEyNCwxNSBAQAogICBwcm9uYW1lID0+ICdhbnlfdmFsdWVfdHJhbnNm bicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAogICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxl bWVudCBhbnllbGVtZW50JywgcHJvc3JjID0+ICdhbnlfdmFsdWVfdHJhbnNmbicgfSwKIAoreyBv aWQgPT4gJzgzNTUnLCBkZXNjciA9PiAnam9pbiBzZWxlY3Rpdml0eSBmb3IgcmFuZ2Ugb3BlcmF0 b3JzJywKKyAgcHJvbmFtZSA9PiAncmFuZ2Vqb2luc2VsJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICdmbG9hdDgnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgb2lkIGlu dGVybmFsIGludDIgaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ3Jhbmdlam9pbnNlbCcgfSwKK3sg b2lkID0+ICc4MzU2JywgZGVzY3IgPT4gJ2pvaW4gc2VsZWN0aXZpdHkgZm9yIG11bHRpcmFuZ2Ug b3BlcmF0b3JzJywKKyAgcHJvbmFtZSA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnLCBwcm92b2xhdGls ZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRl cm5hbCBvaWQgaW50ZXJuYWwgaW50MiBpbnRlcm5hbCcsCisgIHByb3NyYyA9PiAnbXVsdGlyYW5n ZWpvaW5zZWwnIH0sCisKIHsgb2lkID0+ICc4NDM2JywKICAgZGVzY3IgPT4gJ2xpc3Qgb2YgYXZh aWxhYmxlIFdBTCBzdW1tYXJ5IGZpbGVzJywKICAgcHJvbmFtZSA9PiAncGdfYXZhaWxhYmxlX3dh bF9zdW1tYXJpZXMnLCBwcm9yb3dzID0+ICcxMDAnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9tdWx0aXJhbmdldHlwZXMub3V0CmluZGV4IGEwY2I4NzU0OTIuLjIxZDYzZDliZGEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKQEAgLTMz NjEsMyArMzM2MSw2NiBAQCBjcmVhdGUgZnVuY3Rpb24gbXJfdGFibGVfZmFpbChpIGFueWVsZW1l bnQpIHJldHVybnMgdGFibGUoaSBhbnllbGVtZW50LCByIGFueW11bAogICBhcyAkJCBzZWxlY3Qg JDEsICdbMSwxMF0nICQkIGxhbmd1YWdlIHNxbDsKIEVSUk9SOiAgY2Fubm90IGRldGVybWluZSBy ZXN1bHQgZGF0YSB0eXBlCiBERVRBSUw6ICBBIHJlc3VsdCBvZiB0eXBlIGFueW11bHRpcmFuZ2Ug cmVxdWlyZXMgYXQgbGVhc3Qgb25lIGlucHV0IG9mIHR5cGUgYW55cmFuZ2Ugb3IgYW55bXVsdGly YW5nZS4KKy0tCistLSB0ZXN0IHNlbGVjdGl2aXR5IG9mIG11bHRpcmFuZ2Ugam9pbiBvcGVyYXRv cnMKKy0tCitjcmVhdGUgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSAoaW1yMSBpbnQ0bXVs dGlyYW5nZSk7CitjcmVhdGUgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiAoaW1yMiBpbnQ0 bXVsdGlyYW5nZSk7CitjcmVhdGUgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMyAoaW1yMyBp bnQ0bXVsdGlyYW5nZSk7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xIHNlbGVj dCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZywgZysxMCkpIGZyb20gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwMDApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xIHNlbGVjdCBp bnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZywgZysxMDApKSBmcm9tIGdlbmVyYXRlX3Nlcmllcygx LCAxMDAwLCAxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgc2VsZWN0 IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShnLCBnKzEwKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiBzZWxlY3QgaW50 NG11bHRpcmFuZ2UoaW50NHJhbmdlKGcsIGcrMTAwKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwLCAxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5nZV9qb2luXzMgc2VsZWN0IGlu dDRtdWx0aXJhbmdlKGludDRyYW5nZShnLCBnKzEwKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoNTAx LCAxMDAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMyBzZWxlY3QgaW50 NG11bHRpcmFuZ2UoaW50NHJhbmdlKGcsIGcrMTAwKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoNTAx LCAxMDAwLCAxMCkgZzsKK2FuYWx5emUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMTsKK2FuYWx5emUg dGVzdF9tdWx0aXJhbmdlX2pvaW5fMjsKK2FuYWx5emUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMzsK Ky0tcmVvcmRlciBqb2lucyBiYXNlZCBvbiBjb21wdXRlZCBzZWxlY3Rpdml0eQorZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgY291bnQoKikgZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0 ZXN0X211bHRpcmFuZ2Vfam9pbl8yLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8zIHdoZXJlIGltcjEg JiYgaW1yMiBhbmQgaW1yMiAmJiBpbXIzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg TmVzdGVkIExvb3AKKyAgICAgICAgIEpvaW4gRmlsdGVyOiAodGVzdF9tdWx0aXJhbmdlX2pvaW5f MS5pbXIxICYmIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIuaW1yMikKKyAgICAgICAgIC0+ICBOZXN0 ZWQgTG9vcAorICAgICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0ZXN0X211bHRpcmFuZ2Vfam9p bl8yLmltcjIgJiYgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMy5pbXIzKQorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIKKyAgICAgICAgICAgICAgIC0+ ICBNYXRlcmlhbGl6ZQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3Rf bXVsdGlyYW5nZV9qb2luXzMKKyAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEKKygxMCByb3dzKQorCitl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRlc3RfbXVsdGlyYW5nZV9q b2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzMgd2hl cmUgaW1yMSA8PCBpbXIyIGFuZCBpbXIyIDw8IGltcjM7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUK KyAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0ZXN0X211bHRpcmFu Z2Vfam9pbl8yLmltcjIgPDwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMy5pbXIzKQorICAgICAgICAg LT4gIE5lc3RlZCBMb29wCisgICAgICAgICAgICAgICBKb2luIEZpbHRlcjogKHRlc3RfbXVsdGly YW5nZV9qb2luXzEuaW1yMSA8PCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yLmltcjIpCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMQorICAgICAgICAg ICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMgorICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMworKDEwIHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0IGNvdW50KCopIGZyb20gdGVzdF9tdWx0 aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiwgdGVzdF9tdWx0aXJhbmdlX2pv aW5fMyB3aGVyZSBpbXIxID4+IGltcjIgYW5kIGltcjIgPj4gaW1yMzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICBKb2luIEZpbHRlcjogKHRlc3Rf bXVsdGlyYW5nZV9qb2luXzEuaW1yMSA+PiB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yLmltcjIpCisg ICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgIEpvaW4gRmlsdGVyOiAodGVz dF9tdWx0aXJhbmdlX2pvaW5fMi5pbXIyID4+IHRlc3RfbXVsdGlyYW5nZV9qb2luXzMuaW1yMykK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yCisg ICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiB0ZXN0X211bHRpcmFuZ2Vfam9pbl8zCisgICAgICAgICAtPiAgU2VxIFNjYW4g b24gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMQorKDkgcm93cykKKworZHJvcCB0YWJsZSB0ZXN0X211 bHRpcmFuZ2Vfam9pbl8xOworZHJvcCB0YWJsZSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yOworZHJv cCB0YWJsZSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8zOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cmFuZ2V0eXBlcy5vdXQKaW5kZXggZWUwMmZmMDE2My4uMzU3YmIzMTU0YiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0CkBAIC0xODM0LDMgKzE4MzQsNjYgQEAgY3Jl YXRlIGZ1bmN0aW9uIHRhYmxlX2ZhaWwoaSBhbnllbGVtZW50KSByZXR1cm5zIHRhYmxlKGkgYW55 ZWxlbWVudCwgciBhbnlyYW5nZSkKICAgYXMgJCQgc2VsZWN0ICQxLCAnWzEsMTBdJyAkJCBsYW5n dWFnZSBzcWw7CiBFUlJPUjogIGNhbm5vdCBkZXRlcm1pbmUgcmVzdWx0IGRhdGEgdHlwZQogREVU QUlMOiAgQSByZXN1bHQgb2YgdHlwZSBhbnlyYW5nZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgaW5w dXQgb2YgdHlwZSBhbnlyYW5nZSBvciBhbnltdWx0aXJhbmdlLgorLS0KKy0tIHRlc3Qgc2VsZWN0 aXZpdHkgb2YgcmFuZ2Ugam9pbiBvcGVyYXRvcnMKKy0tCitjcmVhdGUgdGFibGUgdGVzdF9yYW5n ZV9qb2luXzEgKGlyMSBpbnQ0cmFuZ2UpOworY3JlYXRlIHRhYmxlIHRlc3RfcmFuZ2Vfam9pbl8y IChpcjIgaW50NHJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X3JhbmdlX2pvaW5fMyAoaXIzIGlu dDRyYW5nZSk7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgaW50NHJhbmdl KGcsIGcrMTApIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGc7CitpbnNlcnQgaW50byB0 ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgaW50NHJhbmdlKGcsIGcrMTAwKSBmcm9tIGdlbmVyYXRl X3NlcmllcygxLCAxMDAwLCAxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8yIHNl bGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBnOwor aW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzIgc2VsZWN0IGludDRyYW5nZShnLCBnKzEwMCkg ZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwLCAxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFu Z2Vfam9pbl8zIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo NTAxLCAxMDAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzMgc2VsZWN0IGludDRy YW5nZShnLCBnKzEwMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwLCAxMCkgZzsKK2Fu YWx5emUgdGVzdF9yYW5nZV9qb2luXzE7CithbmFseXplIHRlc3RfcmFuZ2Vfam9pbl8yOworYW5h bHl6ZSB0ZXN0X3JhbmdlX2pvaW5fMzsKKy0tcmVvcmRlciBqb2lucyBiYXNlZCBvbiBjb21wdXRl ZCBzZWxlY3Rpdml0eQorZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgY291bnQoKikgZnJvbSB0 ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9qb2luXzIsIHRlc3RfcmFuZ2Vfam9pbl8zIHdo ZXJlIGlyMSAmJiBpcjIgYW5kIGlyMiAmJiBpcjM7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQg TG9vcAorICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0ZXN0X3JhbmdlX2pvaW5fMS5pcjEgJiYgdGVz dF9yYW5nZV9qb2luXzIuaXIyKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfcmFuZ2Vf am9pbl8xCisgICAgICAgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAgIC0+ICBOZXN0 ZWQgTG9vcAorICAgICAgICAgICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0ZXN0X3JhbmdlX2pv aW5fMi5pcjIgJiYgdGVzdF9yYW5nZV9qb2luXzMuaXIzKQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHRlc3RfcmFuZ2Vfam9pbl8yCisgICAgICAgICAgICAgICAgICAgICAt PiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biB0ZXN0X3JhbmdlX2pvaW5fMworKDEwIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0IGNvdW50KCopIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9pbl8yLCB0 ZXN0X3JhbmdlX2pvaW5fMyB3aGVyZSBpcjEgPDwgaXIyIGFuZCBpcjIgPDwgaXIzOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg TmVzdGVkIExvb3AKKyAgICAgICAgIEpvaW4gRmlsdGVyOiAodGVzdF9yYW5nZV9qb2luXzIuaXIy IDw8IHRlc3RfcmFuZ2Vfam9pbl8zLmlyMykKKyAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAorICAg ICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0ZXN0X3JhbmdlX2pvaW5fMS5pcjEgPDwgdGVzdF9y YW5nZV9qb2luXzIuaXIyKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfcmFu Z2Vfam9pbl8xCisgICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0X3JhbmdlX2pvaW5fMgorICAgICAgICAgLT4gIE1h dGVyaWFsaXplCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVzdF9yYW5nZV9qb2lu XzMKKygxMCByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBjb3VudCgqKSBmcm9t IHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5fMiwgdGVzdF9yYW5nZV9qb2luXzMg d2hlcmUgaXIxID4+IGlyMiBhbmQgaXIyID4+IGlyMzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wCisgICAg ICAgICBKb2luIEZpbHRlcjogKHRlc3RfcmFuZ2Vfam9pbl8xLmlyMSA+PiB0ZXN0X3JhbmdlX2pv aW5fMi5pcjIpCisgICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgIEpvaW4g RmlsdGVyOiAodGVzdF9yYW5nZV9qb2luXzIuaXIyID4+IHRlc3RfcmFuZ2Vfam9pbl8zLmlyMykK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0X3JhbmdlX2pvaW5fMgorICAgICAg ICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gdGVzdF9yYW5nZV9qb2luXzMKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0X3Jh bmdlX2pvaW5fMQorKDkgcm93cykKKworZHJvcCB0YWJsZSB0ZXN0X3JhbmdlX2pvaW5fMTsKK2Ry b3AgdGFibGUgdGVzdF9yYW5nZV9qb2luXzI7Citkcm9wIHRhYmxlIHRlc3RfcmFuZ2Vfam9pbl8z OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKaW5kZXggZmVmYjRiNGQ0 Mi4uNGM2MmMzMTE2NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5n ZXR5cGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3Fs CkBAIC04NjEsMyArODYxLDMwIEBAIGNyZWF0ZSBmdW5jdGlvbiBtcl9pbm91dHBhcmFtX2ZhaWwo aW5vdXQgaSBhbnllbGVtZW50LCBvdXQgciBhbnltdWx0aXJhbmdlKQogLS1zaG91bGQgZmFpbAog Y3JlYXRlIGZ1bmN0aW9uIG1yX3RhYmxlX2ZhaWwoaSBhbnllbGVtZW50KSByZXR1cm5zIHRhYmxl KGkgYW55ZWxlbWVudCwgciBhbnltdWx0aXJhbmdlKQogICBhcyAkJCBzZWxlY3QgJDEsICdbMSwx MF0nICQkIGxhbmd1YWdlIHNxbDsKKworLS0KKy0tIHRlc3Qgc2VsZWN0aXZpdHkgb2YgbXVsdGly YW5nZSBqb2luIG9wZXJhdG9ycworLS0KK2NyZWF0ZSB0YWJsZSB0ZXN0X211bHRpcmFuZ2Vfam9p bl8xIChpbXIxIGludDRtdWx0aXJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X211bHRpcmFuZ2Vf am9pbl8yIChpbXIyIGludDRtdWx0aXJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X211bHRpcmFu Z2Vfam9pbl8zIChpbXIzIGludDRtdWx0aXJhbmdlKTsKKworaW5zZXJ0IGludG8gdGVzdF9tdWx0 aXJhbmdlX2pvaW5fMSBzZWxlY3QgaW50NG11bHRpcmFuZ2UoaW50NHJhbmdlKGcsIGcrMTApKSBm cm9tIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9tdWx0aXJh bmdlX2pvaW5fMSBzZWxlY3QgaW50NG11bHRpcmFuZ2UoaW50NHJhbmdlKGcsIGcrMTAwKSkgZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCwgMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRp cmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZywgZysxMCkpIGZy b20gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5n ZV9qb2luXzIgc2VsZWN0IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShnLCBnKzEwMCkpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMCwgMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFu Z2Vfam9pbl8zIHNlbGVjdCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZywgZysxMCkpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDUwMSwgMTAwMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5n ZV9qb2luXzMgc2VsZWN0IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShnLCBnKzEwMCkpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDUwMSwgMTAwMCwgMTApIGc7CisKK2FuYWx5emUgdGVzdF9tdWx0aXJh bmdlX2pvaW5fMTsKK2FuYWx5emUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMjsKK2FuYWx5emUgdGVz dF9tdWx0aXJhbmdlX2pvaW5fMzsKKworLS1yZW9yZGVyIGpvaW5zIGJhc2VkIG9uIGNvbXB1dGVk IHNlbGVjdGl2aXR5CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRl c3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIsIHRlc3RfbXVsdGly YW5nZV9qb2luXzMgd2hlcmUgaW1yMSAmJiBpbXIyIGFuZCBpbXIyICYmIGltcjM7CitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEs IHRlc3RfbXVsdGlyYW5nZV9qb2luXzIsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzMgd2hlcmUgaW1y MSA8PCBpbXIyIGFuZCBpbXIyIDw8IGltcjM7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBj b3VudCgqKSBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2lu XzIsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzMgd2hlcmUgaW1yMSA+PiBpbXIyIGFuZCBpbXIyID4+ IGltcjM7CisKK2Ryb3AgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMTsKK2Ryb3AgdGFibGUg dGVzdF9tdWx0aXJhbmdlX2pvaW5fMjsKK2Ryb3AgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5f MzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JhbmdldHlwZXMuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKaW5kZXggYzIzYmU5MjhjMy4uMTAxOGEy MzRhNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKQEAgLTYyOSwzICs2MjksMzAg QEAgY3JlYXRlIGZ1bmN0aW9uIGlub3V0cGFyYW1fZmFpbChpbm91dCBpIGFueWVsZW1lbnQsIG91 dCByIGFueXJhbmdlKQogLS1zaG91bGQgZmFpbAogY3JlYXRlIGZ1bmN0aW9uIHRhYmxlX2ZhaWwo aSBhbnllbGVtZW50KSByZXR1cm5zIHRhYmxlKGkgYW55ZWxlbWVudCwgciBhbnlyYW5nZSkKICAg YXMgJCQgc2VsZWN0ICQxLCAnWzEsMTBdJyAkJCBsYW5ndWFnZSBzcWw7CisKKy0tCistLSB0ZXN0 IHNlbGVjdGl2aXR5IG9mIHJhbmdlIGpvaW4gb3BlcmF0b3JzCistLQorY3JlYXRlIHRhYmxlIHRl c3RfcmFuZ2Vfam9pbl8xIChpcjEgaW50NHJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Jhbmdl X2pvaW5fMiAoaXIyIGludDRyYW5nZSk7CitjcmVhdGUgdGFibGUgdGVzdF9yYW5nZV9qb2luXzMg KGlyMyBpbnQ0cmFuZ2UpOworCitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3Qg aW50NHJhbmdlKGcsIGcrMTApIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGc7CitpbnNl cnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgaW50NHJhbmdlKGcsIGcrMTAwKSBmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwLCAxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vf am9pbl8yIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzIgc2VsZWN0IGludDRyYW5nZShn LCBnKzEwMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwLCAxMCkgZzsKK2luc2VydCBpbnRv IHRlc3RfcmFuZ2Vfam9pbl8zIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0 ZV9zZXJpZXMoNTAxLCAxMDAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzMgc2Vs ZWN0IGludDRyYW5nZShnLCBnKzEwMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwLCAx MCkgZzsKKworYW5hbHl6ZSB0ZXN0X3JhbmdlX2pvaW5fMTsKK2FuYWx5emUgdGVzdF9yYW5nZV9q b2luXzI7CithbmFseXplIHRlc3RfcmFuZ2Vfam9pbl8zOworCistLXJlb3JkZXIgam9pbnMgYmFz ZWQgb24gY29tcHV0ZWQgc2VsZWN0aXZpdHkKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0IGNv dW50KCopIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9pbl8yLCB0ZXN0X3Jh bmdlX2pvaW5fMyB3aGVyZSBpcjEgJiYgaXIyIGFuZCBpcjIgJiYgaXIzOworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgY291bnQoKikgZnJvbSB0ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9yYW5n ZV9qb2luXzIsIHRlc3RfcmFuZ2Vfam9pbl8zIHdoZXJlIGlyMSA8PCBpcjIgYW5kIGlyMiA8PCBp cjM7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRlc3RfcmFuZ2Vf am9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5fMiwgdGVzdF9yYW5nZV9qb2luXzMgd2hlcmUgaXIxID4+ IGlyMiBhbmQgaXIyID4+IGlyMzsKKworZHJvcCB0YWJsZSB0ZXN0X3JhbmdlX2pvaW5fMTsKK2Ry b3AgdGFibGUgdGVzdF9yYW5nZV9qb2luXzI7Citkcm9wIHRhYmxlIHRlc3RfcmFuZ2Vfam9pbl8z Owo= --_002_08b2dea86dca06e4a53d3e6334e7645bulbbe_--