Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qHnZp-0006t2-LR for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Jul 2023 15:40:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qHnZo-0006uP-65 for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Jul 2023 15:40:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qHnZn-0006uF-2I for pgsql-hackers@lists.postgresql.org; Fri, 07 Jul 2023 15:40:55 +0000 Received: from mail-db3eur04on0710.outbound.protection.outlook.com ([2a01:111:f400:fe0c::710] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qHnZg-002YfH-Sv for pgsql-hackers@lists.postgresql.org; Fri, 07 Jul 2023 15:40:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WVVvDgU01+JmBltkO7mxbkPDXEyeizJfkGiEh9tDqkoeapp+0283moYm/VV6VFae2kEYhJDaytLrOrpg5ejpAJbUTntlQiINk7ZFugFIThgnI9NFCFpoiYlCtGc38m1X7ndoHxhwMI/Gsgy/wYhTRBV+pJkva6FquIUzDhdwp61l4dE4UV8H5qHacrEfZOcVQPdhNJeW2ejL7ZzGnbpKF5Ul4xezyKu1P4sfDf7oOz6jiov9CSrH9MZVFYVUCzgterdVkF5TO5tz8VAvx+MCYap+3ltRqcBK/0gCYQczalNA/RXTNE5uyYqKUBb4psS6dMTAPUNecLDyEQYz655xHA== 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=Rmp1frC9QmdroKKKNgXfj7RhbYJIhPXfn4qxeR7rooY=; b=XNfOfd1Caan/P7v7Ap/Rvceg7DngKts+enHB5QiywyHvpd4THKG78syDo9MRb1Ju7lFi1iC9D9xZe22jjh8f6IdMDPdxzuYFhRFK9Mxq0U5LKnjPbN92E8mf4Ef9PtKWuGyA0Bei5cwKo4ChX/gkjVo/V2dDuc8VZCNM+TC3bsd5ZAWgTH44ylpDdRKym7JhWQNNf5VhkQ+DNj/Nnf/dOCsOMJmKI9xwlRdzyQOuHavpBC/8XVinwO3fAwT3loQCpHnmvZnoZ+P0ARUHCQCEm6YYI8grfIodHU5P8X1MwgeJABqo94l2oG5cA2wViVNIlnv/SWBaV0liOhKHfwVjsw== 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=Rmp1frC9QmdroKKKNgXfj7RhbYJIhPXfn4qxeR7rooY=; b=L/ynzA5FJ+aL1MbbJ9WGNdUmnM9U/IHR6lK87Ds6oI2Sl0684B1bornCWTQ3+03ZGIZ61N1SDjaJptMyW+VSmVps+KZ9FEfOnx79I0+rq4dQM5fLXqrXfEayuY5/3JOAO3ZxmsULnHzRAjgnV/hWx9KKZWVSBcp6RBt5MW/nU6s= Received: from DB8P190MB0731.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:125::14) by AS8P190MB1589.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.17; Fri, 7 Jul 2023 15:40:43 +0000 Received: from DB8P190MB0731.EURP190.PROD.OUTLOOK.COM ([fe80::148d:3f2e:b0c5:9a9b]) by DB8P190MB0731.EURP190.PROD.OUTLOOK.COM ([fe80::148d:3f2e:b0c5:9a9b%5]) with mapi id 15.20.6565.016; Fri, 7 Jul 2023 15:40:43 +0000 From: Schoemans Maxime To: Damir Belyalov CC: 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+AgAYni4CAVKFYAICOo58AgABu2wCAG78GAIAAfkQA Date: Fri, 7 Jul 2023 15:40:43 +0000 Message-ID: <4c443cf6-96af-0953-fd5b-bd2b5c0c6f00@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> 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_|AS8P190MB1589:EE_ x-ms-office365-filtering-correlation-id: e6cf33ea-31e3-49cc-433b-08db7f00866b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oYizj5cZ6+i4Y0+7NIpZsldg9rQOeAdSt+Rht5VyaaDgDoqydU8Q3juDlLSGwJebaPT2t+ukmrNJDSRWWNHgbzQUXJqJKkC7Yc+sWA+79+LkZ1ZU0zd51goEPViO+21Rk7BoyFIWYsfT/GMyvXDUCnqDtE1W9QAfx7fcYiBboG/PdbIVtBuJ2wr4ErkTXz4FDzJ9zVhMlG/GuUY/KJ9ECSQjZ6bm/Tp3dkZZPpx4p1w4+Qpu+9Iq5bKIkiA4IbBKO7GUK63OBY9aNh99TggCvWQmJjOjziWmYtFvkSxY9u+xj5isOK46ac3ldx5Gz6qbwaKWWbJftVbjLCdimWcYV95Dv+M/4kGeinRUwLYNW8DkLsr8KGVfy8kIudUOU8K0TpZrDoQXdQeDdk1P+q9bcBa7rKj+ifqlV+7rXqErPNqEZqINqrpspOwdYuri7O2tyVr1OxJhnMegj6c323Hdeew24+XhWyz/IEq+fazx1/izf8xDQMSFL2uzTgAqw2f5tr2P76QdgsY31mlAPIXLJBzCHjsuhUdSmLLVUDvl0yL4A92khwJH/ixZSiOswvbibS4d+bpJY9D4WHd++ldTOe3AsAfTFla2dGjQhQyTN/5w0FlXzpmweycu8pwpRjXoiGhoZjkeAZtvgNXxxAhBAw== 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:(13230028)(4636009)(366004)(396003)(136003)(346002)(39860400002)(376002)(451199021)(6916009)(4326008)(66946007)(91956017)(76116006)(64756008)(66476007)(66446008)(38100700002)(66556008)(2616005)(122000001)(186003)(38070700005)(6486002)(31696002)(71200400001)(54906003)(36756003)(478600001)(86362001)(6506007)(6512007)(4744005)(26005)(8676002)(31686004)(8936002)(316002)(5660300002)(786003)(99936003)(2906002)(83380400001)(41300700001)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S3M1ajB6NnZPU3JlWEh6RUtsVlFXaWRobUFKelBBWG8xZ1JXZUZ1RXJaL3hv?= =?utf-8?B?TkIzQ0M5eEkydnhzSUtqbFJDU0NUbDcxcGhoQmkzR3ZXUm1NQzJaK2NhRFhJ?= =?utf-8?B?dFZ4cWsvU3U0MlZsZ0xLY3NwRkxtUmhHM1A5MEZoeTVVRGNWYzJrYnVyaWdD?= =?utf-8?B?VFpZQTQ3VmJ5Nmd1azc4UThBMDdXcTE3cGxCUDB3VjlsNDhEQkJ5eFZJK3Jj?= =?utf-8?B?Sm5rUWl1TU1RK1dpTnh6OVdOREhPTVAwNWhha2labTZwSXczSHArcDlNMUE5?= =?utf-8?B?WkRSK1MwNGR2MW9MaUVsQU1xNjB0S04rdTVSYnhxNWdwRjUxd2swdENmZFlh?= =?utf-8?B?Z2VnUFBTb0xKaTZzL2g3Tk1YVkwraGxNNnhYTTZLL2xuaTBVT0NPeTdVVGFp?= =?utf-8?B?d3JHTXNxb2ZoYmhTbTNnYkZvczBCN2UyakJJK3NuZVVMeXVMdURXamlEaVQ4?= =?utf-8?B?NHRWOGtaeFQ5K3RRMXYwNGxwdHNrdjFkb1lYQzZPcnozSWRHd2ltUjB3WTVM?= =?utf-8?B?YUZWam1nZTgxVDhpMlZaSHltWWxGc2JZMy8xQUZJOURkRXVtMGc3bXUwdVFT?= =?utf-8?B?Qkt3NVNJNTNlSFV3bHAvemxXSjdBWUxaUys1TW5zekRlS0c5TVNtaTRIUUo5?= =?utf-8?B?VWoyNURVOUZXWGx6SWd3UFJsakxMWGVaaDkzZDE1SndrZW5weFE4VzdIdVVJ?= =?utf-8?B?TW1GOHVoTC8yZFUxclVHYmdzRlMxbDlseldaS1NFVy9FOXlmQ3dXWVlGKytj?= =?utf-8?B?TWIxMGgyT0RZTEYzRGZGaGdEam43TDFJZ2xIb1RmT3V2VUFFQWJLNTF1STRQ?= =?utf-8?B?YXZoK01WTzRXUWNQNDFEbXQ3STd0LzVBcVRKeXJXUTFqZTZSS2d6RTQxU2do?= =?utf-8?B?SXZLSXo0T2cxMnY2RTBud1gxZFNMTmd4WDFkTDExWldzOHcvdmNQSE1tUStD?= =?utf-8?B?SnVEZ0IvaW1FV0NpZ3RUWDZYc0thSjVyOVlWWlFIY3BiK2wzWjByMnJHdEQ1?= =?utf-8?B?UTVObmpRQTcrR3AyYkIxcytSZ3lsVFo4RlAvSnBPekYrVUc2M2JTUjE2bm1K?= =?utf-8?B?UWM5Z2t0RDdWNGs1S3laZVNXeUo3bWd0ajg3QktUdGJQQzZZSTR5eGFHWVVZ?= =?utf-8?B?WmhNbXVVV0crZCtEckVGb2tacjE4UlNHeXErTnlzUS9sd3V2Ny9pU1hXZHhu?= =?utf-8?B?bGpIc0d5aGhhbmt5SmttTG1JNEtXNkxIUzlJaHlkMlMzRWl6MGtnZDlscU5Q?= =?utf-8?B?MUtoSHFoSm9wTVM1WUpNVldTSGRIb3dRMUZYa0xMYWpOMFN5RUlPV2dBcEo5?= =?utf-8?B?NldYSnpsUlFxUHBlaWVNS0tBRmZRRXBVQXE4RkwrSkx0TGM4TUxTQklyVG1j?= =?utf-8?B?QVloL2pYOVZESEl6ajZBREZGRG9tSGd0bE1mZENxNjBBRHp0VTh2cC9EQS9l?= =?utf-8?B?aHRFVjFnajhmczEvb2NwNStPZUhBd0J0Q2VhVEoyMnhXMXJHUTVrRmpTYmda?= =?utf-8?B?MS9kQ0dkRFMxVVhoRW40T1FRY3Z6ZlIzOTFiZlpMazFMcnBtd0NZZDBpalc1?= =?utf-8?B?WmpwZk5BUEh1M2o5VHNJaDhPTlF3RVI4TUN1dWRGWm52K2VLdjk2dXhJRUpI?= =?utf-8?B?eEtWSjhGVE1NNmpyNmNsWVNVSkpHckNyOHBnSnJSTGF0b3hMU085U1Y0RUJI?= =?utf-8?B?REttK2tyaG5LeC9CYWNjczFBYXhjZzYyNlU1U0YxcFF4cW8zZkV2KzdRZEhW?= =?utf-8?B?WUljWjEvN09RaFVDcThFWWZTZzRXMGd6UVVHMGlTU1FJTVNSeUxVQzVVZDdE?= =?utf-8?B?REZocW01Y0VhanI2MEVQR0lrN3FKcFF6NExkNlMvU2dYWGlKamFrUFdkZHBZ?= =?utf-8?B?MDdIVzhWS055SHI2Y3Q4L25yZC9kUUc5aVJMSzB4TjFUMmtFajJtMmVucnZM?= =?utf-8?B?cHNGbEVrVUYzNTIyV2dBTDRCNTU3ZHNsQVN6RllDb1dDem5TQndQSExnQmZk?= =?utf-8?B?WEdjSFZLcUtScEhzY3k1dU15V1hJUDV1T0NMRXRXWE1LRzF2aHYxKzFvRGc0?= =?utf-8?B?UmlzUmpodzMyczNLV3dLTzRNY0NKRnU2bXBkcjVZWTlOOUZKbjVFY1VGSktX?= =?utf-8?Q?oau3Xqj7uL0qLQRv/xlfkH8Qd?= Content-Type: multipart/mixed; boundary="_002_4c443cf696af0953fd5bbd2b5c0c6f00ulbbe_" 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: e6cf33ea-31e3-49cc-433b-08db7f00866b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2023 15:40:43.4568 (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: JA97TqK/5j0z2xWHc7jBE+qvdEqq+bNsktHFSHg2qI0p0e9yjgSLR9fYs6prsZ9EHBCdsGXq8vOxLl/OSBflWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8P190MB1589 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_4c443cf696af0953fd5bbd2b5c0c6f00ulbbe_ Content-Type: text/plain; charset="utf-8" Content-ID: <3E5093ADA7518D43A40C8F2A262F32F7@EURP190.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 SGksDQoNClRoYW5rIHlvdSBmb3IgcGlja2luZyB1cCB0aGlzIHBhdGNoLg0KDQogPiBUaGUgcGF0 Y2ggZG9lc24ndCBhcHBseSB0byB0aGUgY3VycmVudCBwb3N0Z3JlcyB2ZXJzaW9uLiBDb3VsZCB5 b3UgDQpwbGVhc2UgdXBkYXRlIGl0Pw0KSW5kZWVkLCB0aGUgY29kZSB3YXMgaW5pdGlhbGx5IHdy aXR0ZW4gb24gcGcxNS4NCllvdSBjYW4gZmluZCBhdHRhY2hlZCBhIG5ldyB2ZXJzaW9uIG9mIHRo ZSBwYXRjaCB0aGF0IGNhbiBiZSBhcHBsaWVkIG9uIA0KdGhlIGN1cnJlbnQgbWFzdGVyIGJyYW5j aCBvZiBwb3N0Z3Jlcy4NCg0KUGxlYXNlIGxldCB1cyBrbm93IGlmIHRoZXJlIGlzIGFueXRoaW5n IGVsc2Ugd2UgY2FuIGRvLg0KDQpCZXN0IHJlZ2FyZHMsDQpNYXhpbWUgU2Nob2VtYW5z --_002_4c443cf696af0953fd5bbd2b5c0c6f00ulbbe_ Content-Type: text/x-patch; name="v2-0001-Join-Selectivity-Estimation-for-Range-types.patch" Content-Description: v2-0001-Join-Selectivity-Estimation-for-Range-types.patch Content-Disposition: attachment; filename="v2-0001-Join-Selectivity-Estimation-for-Range-types.patch"; size=78405; creation-date="Fri, 07 Jul 2023 15:40:43 GMT"; modification-date="Fri, 07 Jul 2023 15:40:43 GMT" Content-ID: <120C9EDBD83B9E4C96421AC5B7C65B8E@EURP190.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXNfc2VsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXNfc2VsZnVuY3MuYwpp bmRleCBjZWZjNDcxMGZkLi5jNjcwZDIyNWEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbXVsdGlyYW5nZXR5cGVzX3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L211bHRpcmFuZ2V0eXBlc19zZWxmdW5jcy5jCkBAIC0xMzM1LDMgKzEzMzUsNTU4IEBAIGNh 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 OworCWRvdWJsZQkJc2VsZWN0aXZpdHksCisJCQkJY3VyX3NlbDEsCisJCQkJY3VyX3NlbDIsCisJ CQkJcHJldl9zZWwxLAorCQkJCXByZXZfc2VsMjsKKwlSYW5nZUJvdW5kCWN1cl9zeW5jOworCisJ LyoKKwkgKiBIaXN0b2dyYW1zIHdpbGwgbmV2ZXIgYmUgZW1wdHkuIEluIGZhY3QsIGEgaGlzdG9n cmFtIHdpbGwgbmV2ZXIgaGF2ZQorCSAqIGxlc3MgdGhhbiAyIHZhbHVlcyAoMSBiaW4pCisJICov CisJQXNzZXJ0KG5oaXN0MSA+IDEpOworCUFzc2VydChuaGlzdDIgPiAxKTsKKworCS8qIEZhc3Qt Zm9yd2FyZHMgaSBhbmQgaiB0byBzdGFydCBvZiBpdGVyYXRpb24gKi8KKwlmb3IgKGkgPSAwOyBy YW5nZV9jbXBfYm91bmRfdmFsdWVzKHR5cGNhY2hlLCAmaGlzdDFbaV0sICZoaXN0MlswXSkgPCAw OyBpKyspOworCWZvciAoaiA9IDA7IHJhbmdlX2NtcF9ib3VuZF92YWx1ZXModHlwY2FjaGUsICZo aXN0MltqXSwgJmhpc3QxWzBdKSA8IDA7IGorKyk7CisKKwlpZiAocmFuZ2VfY21wX2JvdW5kX3Zh bHVlcyh0eXBjYWNoZSwgJmhpc3QxW2ldLCAmaGlzdDJbal0pIDwgMCkKKwkJY3VyX3N5bmMgPSBo aXN0MVtpKytdOworCWVsc2UgaWYgKHJhbmdlX2NtcF9ib3VuZF92YWx1ZXModHlwY2FjaGUsICZo aXN0MVtpXSwgJmhpc3QyW2pdKSA+IDApCisJCWN1cl9zeW5jID0gaGlzdDJbaisrXTsKKwllbHNl CisJeworCQkvKiBJZiBlcXVhbCwgc2tpcCBvbmUgKi8KKwkJY3VyX3N5bmMgPSBoaXN0MVtpXTsK KwkJaSsrOworCQlqKys7CisJfQorCXByZXZfc2VsMSA9IGNhbGNfaGlzdF9zZWxlY3Rpdml0eV9z Y2FsYXIodHlwY2FjaGUsICZjdXJfc3luYywKKwkJCQkJCQkJCQkJIGhpc3QxLCBuaGlzdDEsIGZh bHNlKTsKKwlwcmV2X3NlbDIgPSBjYWxjX2hpc3Rfc2VsZWN0aXZpdHlfc2NhbGFyKHR5cGNhY2hl LCAmY3VyX3N5bmMsCisJCQkJCQkJCQkJCSBoaXN0Miwgbmhpc3QyLCBmYWxzZSk7CisKKwkvKgor CSAqIERvIHRoZSBlc3RpbWF0aW9uIG9uIG92ZXJsYXBwaW5nIHJlZ2lvbgorCSAqLworCXNlbGVj dGl2aXR5ID0gMC4wOworCXdoaWxlIChpIDwgbmhpc3QxICYmIGogPCBuaGlzdDIpCisJeworCQlp ZiAocmFuZ2VfY21wX2JvdW5kX3ZhbHVlcyh0eXBjYWNoZSwgJmhpc3QxW2ldLCAmaGlzdDJbal0p IDwgMCkKKwkJCWN1cl9zeW5jID0gaGlzdDFbaSsrXTsKKwkJZWxzZSBpZiAocmFuZ2VfY21wX2Jv dW5kX3ZhbHVlcyh0eXBjYWNoZSwgJmhpc3QxW2ldLCAmaGlzdDJbal0pID4gMCkKKwkJCWN1cl9z eW5jID0gaGlzdDJbaisrXTsKKwkJZWxzZQorCQl7CisJCQkvKiBJZiBlcXVhbCwgc2tpcCBvbmUg Ki8KKwkJCWN1cl9zeW5jID0gaGlzdDFbaV07CisJCQlpKys7CisJCQlqKys7CisJCX0KKwkJY3Vy X3NlbDEgPSBjYWxjX2hpc3Rfc2VsZWN0aXZpdHlfc2NhbGFyKHR5cGNhY2hlLCAmY3VyX3N5bmMs CisJCQkJCQkJCQkJCQloaXN0MSwgbmhpc3QxLCBmYWxzZSk7CisJCWN1cl9zZWwyID0gY2FsY19o aXN0X3NlbGVjdGl2aXR5X3NjYWxhcih0eXBjYWNoZSwgJmN1cl9zeW5jLAorCQkJCQkJCQkJCQkJ aGlzdDIsIG5oaXN0MiwgZmFsc2UpOworCisJCXNlbGVjdGl2aXR5ICs9IChwcmV2X3NlbDEgKyBj dXJfc2VsMSkgKiAoY3VyX3NlbDIgLSBwcmV2X3NlbDIpOworCisJCS8qIFByZXBhcmUgZm9yIHRo ZSBuZXh0IGl0ZXJhdGlvbiAqLworCQlwcmV2X3NlbDEgPSBjdXJfc2VsMTsKKwkJcHJldl9zZWwy ID0gY3VyX3NlbDI7CisJfQorCisJLyogUChYIDwgWSkgPSAwLjUgKiBTdW0oLi4uKSAqLworCXNl bGVjdGl2aXR5IC89IDI7CisKKwkvKiBJbmNsdWRlIHJlbWFpbmRlciBvZiBoaXN0MiBpZiBhbnkg Ki8KKwlpZiAoaiA8IG5oaXN0MikKKwkJc2VsZWN0aXZpdHkgKz0gMSAtIHByZXZfc2VsMjsKKwor CXJldHVybiBzZWxlY3Rpdml0eTsKK30KKworLyoKKyAqIG11bHRpcmFuZ2Vqb2luc2VsIC0tIGpv aW4gY2FyZGluYWxpdHkgZm9yIG11bHRpcmFuZ2Ugb3BlcmF0b3JzCisgKi8KK0RhdHVtCittdWx0 aXJhbmdlam9pbnNlbChQR19GVU5DVElPTl9BUkdTKQoreworCVBsYW5uZXJJbmZvICpyb290ID0g KFBsYW5uZXJJbmZvICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCU9pZAkJCW9wZXJhdG9yID0g UEdfR0VUQVJHX09JRCgxKTsKKwlMaXN0CSAgICphcmdzID0gKExpc3QgKikgUEdfR0VUQVJHX1BP SU5URVIoMik7CisJU3BlY2lhbEpvaW5JbmZvICpzamluZm8gPSAoU3BlY2lhbEpvaW5JbmZvICop IFBHX0dFVEFSR19QT0lOVEVSKDQpOworCVZhcmlhYmxlU3RhdERhdGEgdmFyZGF0YTEsCisJCQkJ dmFyZGF0YTI7CisJQXR0U3RhdHNTbG90IGhpc3QxLAorCQkJCWhpc3QyLAorCQkJCXNzbG90Owor CWJvb2wJCXJldmVyc2VkOworCVNlbGVjdGl2aXR5IHNlbGVjOworCVR5cGVDYWNoZUVudHJ5ICp0 eXBjYWNoZSA9IE5VTEwsCisJCQkgICAqcm5nX3R5cGNhY2hlID0gTlVMTDsKKwlGb3JtX3BnX3N0 YXRpc3RpYyBzdGF0czEsCisJCQkJc3RhdHMyOworCWRvdWJsZQkJZW1wdHlfZnJhYzEsCisJCQkJ ZW1wdHlfZnJhYzIsCisJCQkJbnVsbF9mcmFjMSwKKwkJCQludWxsX2ZyYWMyOworCWludAkJCW5o aXN0MSwKKwkJCQluaGlzdDI7CisJUmFuZ2VCb3VuZCAqaGlzdDFfbG93ZXIsCisJCQkgICAqaGlz dDFfdXBwZXIsCisJCQkgICAqaGlzdDJfbG93ZXIsCisJCQkgICAqaGlzdDJfdXBwZXI7CisJYm9v bAkJZW1wdHk7CisJaW50CQkJaTsKKworCWdldF9qb2luX3ZhcmlhYmxlcyhyb290LCBhcmdzLCBz amluZm8sICZ2YXJkYXRhMSwgJnZhcmRhdGEyLCAmcmV2ZXJzZWQpOworCisJc2VsZWMgPSBkZWZh dWx0X211bHRpcmFuZ2Vfc2VsZWN0aXZpdHkob3BlcmF0b3IpOworCisJLyogZ2V0IG11bHRpcmFu Z2UgdHlwZSBjYWNoZSAqLworCWlmICh0eXBlX2lzX211bHRpcmFuZ2UodmFyZGF0YTEudmFydHlw ZSkpCisJCXR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCB2YXJkYXRh MS52YXJ0eXBlKTsKKwllbHNlIGlmICh0eXBlX2lzX211bHRpcmFuZ2UodmFyZGF0YTIudmFydHlw ZSkpCisJCXR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCB2YXJkYXRh Mi52YXJ0eXBlKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHZhcmRhdGExLnN0YXRzVHVwbGUp ICYmCisJCWdldF9hdHRzdGF0c3Nsb3QoJmhpc3QxLCB2YXJkYXRhMS5zdGF0c1R1cGxlLAorCQkJ CQkJIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNUT0dSQU0sIEludmFsaWRPaWQsCisJCQkJCQkg QVRUU1RBVFNTTE9UX1ZBTFVFUykgJiYKKwkJSGVhcFR1cGxlSXNWYWxpZCh2YXJkYXRhMi5zdGF0 c1R1cGxlKSAmJgorCQlnZXRfYXR0c3RhdHNzbG90KCZoaXN0MiwgdmFyZGF0YTIuc3RhdHNUdXBs ZSwKKwkJCQkJCSBTVEFUSVNUSUNfS0lORF9CT1VORFNfSElTVE9HUkFNLCBJbnZhbGlkT2lkLAor CQkJCQkJIEFUVFNUQVRTU0xPVF9WQUxVRVMpICYmCisJCXR5cGNhY2hlKQorCXsKKworCQkvKiBJ bml0aWFsaXplIHVuZGVybHlpbmcgcmFuZ2UgdHlwZSBjYWNoZSAqLworCQlybmdfdHlwY2FjaGUg PSB0eXBjYWNoZS0+cm5ndHlwZTsKKworCQkvKgorCQkgKiBGaXJzdCBsb29rIHVwIHRoZSBmcmFj dGlvbiBvZiBOVUxMcyBhbmQgZW1wdHkgcmFuZ2VzIGZyb20KKwkJICogcGdfc3RhdGlzdGljLgor CQkgKi8KKwkJc3RhdHMxID0gKEZvcm1fcGdfc3RhdGlzdGljKSBHRVRTVFJVQ1QodmFyZGF0YTEu c3RhdHNUdXBsZSk7CisJCXN0YXRzMiA9IChGb3JtX3BnX3N0YXRpc3RpYykgR0VUU1RSVUNUKHZh cmRhdGEyLnN0YXRzVHVwbGUpOworCisJCW51bGxfZnJhYzEgPSBzdGF0czEtPnN0YW51bGxmcmFj OworCQludWxsX2ZyYWMyID0gc3RhdHMyLT5zdGFudWxsZnJhYzsKKworCQkvKiBUcnkgdG8gZ2V0 IGZyYWN0aW9uIG9mIGVtcHR5IHJhbmdlcyBmb3IgdGhlIGZpcnN0IHZhcmlhYmxlICovCisJCWlm IChnZXRfYXR0c3RhdHNzbG90KCZzc2xvdCwgdmFyZGF0YTEuc3RhdHNUdXBsZSwKKwkJCQkJCQkg U1RBVElTVElDX0tJTkRfUkFOR0VfTEVOR1RIX0hJU1RPR1JBTSwKKwkJCQkJCQkgSW52YWxpZE9p ZCwKKwkJCQkJCQkgQVRUU1RBVFNTTE9UX05VTUJFUlMpKQorCQl7CisJCQlpZiAoc3Nsb3Qubm51 bWJlcnMgIT0gMSkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2coRVJST1IsICJpbnZh bGlkIGVtcHR5IGZyYWN0aW9uIHN0YXRpc3RpYyIpOworCQkJZW1wdHlfZnJhYzEgPSBzc2xvdC5u dW1iZXJzWzBdOworCQkJZnJlZV9hdHRzdGF0c3Nsb3QoJnNzbG90KTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qIE5vIGVtcHR5IGZyYWN0aW9uIHN0YXRpc3RpYy4gQXNzdW1lIG5vIGVtcHR5IHJh bmdlcy4gKi8KKwkJCWVtcHR5X2ZyYWMxID0gMC4wOworCQl9CisKKwkJLyogVHJ5IHRvIGdldCBm cmFjdGlvbiBvZiBlbXB0eSByYW5nZXMgZm9yIHRoZSBzZWNvbmQgdmFyaWFibGUgKi8KKwkJaWYg KGdldF9hdHRzdGF0c3Nsb3QoJnNzbG90LCB2YXJkYXRhMi5zdGF0c1R1cGxlLAorCQkJCQkJCSBT VEFUSVNUSUNfS0lORF9SQU5HRV9MRU5HVEhfSElTVE9HUkFNLAorCQkJCQkJCSBJbnZhbGlkT2lk LAorCQkJCQkJCSBBVFRTVEFUU1NMT1RfTlVNQkVSUykpCisJCXsKKwkJCWlmIChzc2xvdC5ubnVt YmVycyAhPSAxKQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCQkJZWxvZyhFUlJPUiwgImludmFs aWQgZW1wdHkgZnJhY3Rpb24gc3RhdGlzdGljIik7CisJCQllbXB0eV9mcmFjMiA9IHNzbG90Lm51 bWJlcnNbMF07CisJCQlmcmVlX2F0dHN0YXRzc2xvdCgmc3Nsb3QpOworCQl9CisJCWVsc2UKKwkJ eworCQkJLyogTm8gZW1wdHkgZnJhY3Rpb24gc3RhdGlzdGljLiBBc3N1bWUgbm8gZW1wdHkgcmFu Z2VzLiAqLworCQkJZW1wdHlfZnJhYzIgPSAwLjA7CisJCX0KKworCQkvKgorCQkgKiBDb252ZXJ0 IGhpc3RvZ3JhbXMgb2YgcmFuZ2VzIGludG8gaGlzdG9ncmFtcyBvZiB0aGVpciBsb3dlciBhbmQK KwkJICogdXBwZXIgYm91bmRzIGZvciB0aGUgZmlyc3QgdmFyaWFibGUuCisJCSAqLworCQluaGlz dDEgPSBoaXN0MS5udmFsdWVzOworCQloaXN0MV9sb3dlciA9IChSYW5nZUJvdW5kICopIHBhbGxv YyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBuaGlzdDEpOworCQloaXN0MV91cHBlciA9IChSYW5nZUJv dW5kICopIHBhbGxvYyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBuaGlzdDEpOworCQlmb3IgKGkgPSAw OyBpIDwgbmhpc3QxOyBpKyspCisJCXsKKwkJCXJhbmdlX2Rlc2VyaWFsaXplKHJuZ190eXBjYWNo ZSwgRGF0dW1HZXRSYW5nZVR5cGVQKGhpc3QxLnZhbHVlc1tpXSksCisJCQkJCQkJICAmaGlzdDFf bG93ZXJbaV0sICZoaXN0MV91cHBlcltpXSwgJmVtcHR5KTsKKwkJCS8qIFRoZSBoaXN0b2dyYW0g c2hvdWxkIG5vdCBjb250YWluIGFueSBlbXB0eSByYW5nZXMgKi8KKwkJCWlmIChlbXB0eSkKKwkJ CQllbG9nKEVSUk9SLCAiYm91bmRzIGhpc3RvZ3JhbSBjb250YWlucyBhbiBlbXB0eSByYW5nZSIp OworCQl9CisKKwkJLyoKKwkJICogQ29udmVydCBoaXN0b2dyYW1zIG9mIHJhbmdlcyBpbnRvIGhp c3RvZ3JhbXMgb2YgdGhlaXIgbG93ZXIgYW5kCisJCSAqIHVwcGVyIGJvdW5kcyBmb3IgdGhlIHNl Y29uZCB2YXJpYWJsZS4KKwkJICovCisJCW5oaXN0MiA9IGhpc3QyLm52YWx1ZXM7CisJCWhpc3Qy X2xvd2VyID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0 Mik7CisJCWhpc3QyX3VwcGVyID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJv dW5kKSAqIG5oaXN0Mik7CisJCWZvciAoaSA9IDA7IGkgPCBuaGlzdDI7IGkrKykKKwkJeworCQkJ cmFuZ2VfZGVzZXJpYWxpemUocm5nX3R5cGNhY2hlLCBEYXR1bUdldFJhbmdlVHlwZVAoaGlzdDIu dmFsdWVzW2ldKSwKKwkJCQkJCQkgICZoaXN0Ml9sb3dlcltpXSwgJmhpc3QyX3VwcGVyW2ldLCAm ZW1wdHkpOworCQkJLyogVGhlIGhpc3RvZ3JhbSBzaG91bGQgbm90IGNvbnRhaW4gYW55IGVtcHR5 IHJhbmdlcyAqLworCQkJaWYgKGVtcHR5KQorCQkJCWVsb2coRVJST1IsICJib3VuZHMgaGlzdG9n cmFtIGNvbnRhaW5zIGFuIGVtcHR5IHJhbmdlIik7CisJCX0KKworCQlzd2l0Y2ggKG9wZXJhdG9y KQorCQl7CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX01VTFRJUkFOR0VfT1A6CisJ CQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFO R0VfT1ZFUkxBUFNfTVVMVElSQU5HRV9PUDoKKworCQkJCS8qCisJCQkJICogU2VsZWN0aXZpdHkg b2YgQSAmJiBCID0gU2VsZWN0aXZpdHkgb2YgTk9UKCBBIDw8IEIgfHwgQSA+PgorCQkJCSAqIEIg KSA9IDEgLSBTZWxlY3Rpdml0eSBvZiAoQS51cHBlciA8IEIubG93ZXIpIC0gU2VsZWN0aXZpdHkK KwkJCQkgKiBvZiAoQi51cHBlciA8IEEubG93ZXIpCisJCQkJICovCisJCQkJc2VsZWMgPSAxOwor CQkJCXNlbGVjIC09IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNoZSwKKwkJ CQkJCQkJCQkJCQloaXN0MV91cHBlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJCWhpc3QyX2xvd2Vy LCBuaGlzdDIpOworCQkJCXNlbGVjIC09IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190 eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQloaXN0Ml91cHBlciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJ CWhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJB TkdFX0xFU1NfRVFVQUxfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPD0gQgorCQkJCSAqCisJCQkJ ICogU3RhcnQgYnkgY29tcGFyaW5nIGxvd2VyIGJvdW5kcyBhbmQgaWYgdGhleSBhcmUgZXF1YWwK KwkJCQkgKiBjb21wYXJlIHVwcGVyIGJvdW5kcworCQkJCSAqCisJCQkJICogTmVnYXRpb24gb2Yg T0lEX1JBTkdFX0dSRUFURVJfT1AuCisJCQkJICoKKwkJCQkgKiBPdmVyZXN0aW1hdGUgYnkgY29t cGFyaW5nIG9ubHkgdGhlIGxvd2VyIGJvdW5kcy4gSGlnaGVyCisJCQkJICogYWNjdXJhY3kgd291 bGQgcmVxdWlyZSB1cyB0byBzdWJ0cmFjdCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAo dXBwZXIxID4gdXBwZXIyKQorCQkJCSAqLworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2lu X3NlbGVjdGl2aXR5KHJuZ190eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwg bmhpc3QyLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCWJyZWFr OworCisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX0xFU1NfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEg PCBCCisJCQkJICoKKwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBp ZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJ CQkgKiBVbmRlcmVzdGltYXRlIGJ5IGNvbXBhcmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMuIEhp Z2hlcgorCQkJCSAqIGFjY3VyYWN5IHdvdWxkIHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIxID0g bG93ZXIyKSAqCisJCQkJICogUCh1cHBlcjEgPCB1cHBlcjIpCisJCQkJICovCisJCQkJc2VsZWMg PSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJCQkJCQkJCQkg ICBoaXN0MV9sb3dlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJICAgaGlzdDJfbG93ZXIsIG5oaXN0 Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfR1JFQVRFUl9FUVVBTF9P UDoKKworCQkJCS8qCisJCQkJICogQSA+PSBCCisJCQkJICoKKwkJCQkgKiBTdGFydCBieSBjb21w YXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUg dXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBOZWdhdGlvbiBvZiBPSURfUkFOR0VfTEVTU19P UC4KKwkJCQkgKgorCQkJCSAqIE92ZXJlc3RpbWF0ZSBieSBjb21wYXJpbmcgb25seSB0aGUgbG93 ZXIgYm91bmRzLiBIaWdoZXIKKwkJCQkgKiBhY2N1cmFjeSB3b3VsZCByZXF1aXJlIHVzIHRvIGFk ZCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAodXBwZXIxIDwgdXBwZXIyKQorCQkJCSAq LworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNo ZSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0MV9sb3dlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJCSAg IGhpc3QyX2xvd2VyLCBuaGlzdDIpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJB TkdFX0dSRUFURVJfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPiBCID09IEIgPCBBCisJCQkJICoK KwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBl cXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBVbmRlcmVz dGltYXRlIGJ5IGNvbXBhcmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMuIEhpZ2hlcgorCQkJCSAq IGFjY3VyYWN5IHdvdWxkIHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIxID0gbG93ZXIyKSAqCisJ CQkJICogUCh1cHBlcjEgPiB1cHBlcjIpCisJCQkJICovCisJCQkJc2VsZWMgPSBjYWxjX2hpc3Rf am9pbl9zZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dl ciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJICAgaGlzdDFfbG93ZXIsIG5oaXN0MSk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTEVGVF9NVUxUSVJBTkdFX09QOgorCQkJY2Fz ZSBPSURfTVVMVElSQU5HRV9MRUZUX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfTEVGVF9N VUxUSVJBTkdFX09QOgorCQkJCS8qIHZhcjEgPDwgdmFyMiB3aGVuIHVwcGVyKHZhcjEpIDwgbG93 ZXIodmFyMikgKi8KKwkJCQlzZWxlYyA9IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190 eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX3VwcGVyLCBuaGlzdDEsCisJCQkJCQkJCQkJ CQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfTVVM VElSQU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9SSUdI VF9SQU5HRV9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX1JJR0hUX01VTFRJUkFOR0VfT1A6CisJCQkJ LyogdmFyMSA+PiB2YXIyIHdoZW4gdXBwZXIodmFyMikgPCBsb3dlcih2YXIxKSAqLworCQkJCXNl bGVjID0gY2FsY19oaXN0X2pvaW5fc2VsZWN0aXZpdHkocm5nX3R5cGNhY2hlLAorCQkJCQkJCQkJ CQkJICAgaGlzdDJfdXBwZXIsIG5oaXN0MiwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBu aGlzdDEpOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX0xF RlRfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNfTEVGVF9S QU5HRV9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX0xFRlRfTVVMVElSQU5HRV9PUDoK KwkJCQkvKiB2YXIxICY8IHZhcjIgd2hlbiB1cHBlcih2YXIxKSA8IHVwcGVyKHZhcjIpICovCisJ CQkJc2VsZWMgPSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJ CQkJCQkJCQkgICBoaXN0MV91cHBlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJICAgaGlzdDJfdXBw ZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfT1ZFUkxB UFNfUklHSFRfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNf UklHSFRfUkFOR0VfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQU19SSUdIVF9NVUxUSVJB TkdFX09QOgorCQkJCS8qIHZhcjEgJj4gdmFyMiB3aGVuIGxvd2VyKHZhcjIpIDwgbG93ZXIodmFy MSkgKi8KKwkJCQlzZWxlYyA9IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNo ZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QyX2xvd2VyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkgICBo aXN0MV9sb3dlciwgbmhpc3QxKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfTVVMVElSQU5H RV9NVUxUSVJBTkdFX0NPTlRBSU5FRF9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfUkFOR0Vf Q09OVEFJTkVEX09QOgorCQkJY2FzZSBPSURfUkFOR0VfTVVMVElSQU5HRV9DT05UQUlORURfT1A6 CisKKwkJCQkvKgorCQkJCSAqIHZhcjEgPEAgdmFyMiBpcyBlcXVpdmFsZW50IHRvIGxvd2VyKHZh cjIpIDw9IGxvd2VyKHZhcjEpCisJCQkJICogYW5kIHVwcGVyKHZhcjEpIDw9IHVwcGVyKHZhcjIp CisJCQkJICoKKwkJCQkgKiBBZnRlciBuZWdhdGluZyBib3RoIHNpZGVzIHdlIGdldCBub3QoIGxv d2VyKHZhcjEpIDwKKwkJCQkgKiBsb3dlcih2YXIyKSApIGFuZCBub3QoIHVwcGVyKHZhcjIpIDwg dXBwZXIodmFyMSkgKSwKKwkJCQkgKiByZXNwZWN0aXZlbHkuIEFzc3VtaW5nIGluZGVwZW5kZW5j ZSwgbXVsdGlwbHkgYm90aAorCQkJCSAqIHNlbGVjdGl2aXRpZXMuCisJCQkJICovCisJCQkJc2Vs ZWMgPSAxIC0gY2FsY19oaXN0X2pvaW5fc2VsZWN0aXZpdHkocm5nX3R5cGNhY2hlLAorCQkJCQkJ CQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEsCisJCQkJCQkJCQkJCQkJICAgaGlzdDJfbG93 ZXIsIG5oaXN0Mik7CisJCQkJc2VsZWMgKj0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5 KHJuZ190eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQkJaGlzdDJfdXBwZXIsIG5oaXN0MiwKKwkJCQkJ CQkJCQkJCQkJaGlzdDFfdXBwZXIsIG5oaXN0MSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lE X01VTFRJUkFOR0VfQ09OVEFJTlNfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFO R0VfQ09OVEFJTlNfUkFOR0VfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlOU19NVUxUSVJB TkdFX09QOgorCisJCQkJLyoKKwkJCQkgKiB2YXIxIEA+IHZhcjIgaXMgZXF1aXZhbGVudCB0byBs b3dlcih2YXIxKSA8PSBsb3dlcih2YXIyKQorCQkJCSAqIGFuZCB1cHBlcih2YXIyKSA8PSB1cHBl cih2YXIxKQorCQkJCSAqCisJCQkJICogQWZ0ZXIgbmVnYXRpbmcgYm90aCBzaWRlcyB3ZSBnZXQg bm90KCBsb3dlcih2YXIyKSA8CisJCQkJICogbG93ZXIodmFyMSkgKSBhbmQgbm90KCB1cHBlcih2 YXIxKSA8IHVwcGVyKHZhcjIpICksCisJCQkJICogcmVzcGVjdGl2ZWx5LiBBc3N1bWluZyBpbmRl cGVuZGVuY2UsIG11bHRpcGx5IGJvdGgKKwkJCQkgKiBzZWxlY3Rpdml0aWVzLgorCQkJCSAqLwor CQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHJuZ190eXBjYWNoZSwK KwkJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJCSAgIGhp c3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCXNlbGVjICo9IDEgLSBjYWxjX2hpc3Rfam9pbl9zZWxl Y3Rpdml0eShybmdfdHlwY2FjaGUsCisJCQkJCQkJCQkJCQkJCWhpc3QxX3VwcGVyLCBuaGlzdDEs CisJCQkJCQkJCQkJCQkJCWhpc3QyX3VwcGVyLCBuaGlzdDIpOworCQkJCWJyZWFrOworCisJCQlj YXNlIE9JRF9NVUxUSVJBTkdFX0FESkFDRU5UX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9JRF9N VUxUSVJBTkdFX0FESkFDRU5UX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfQURKQUNFTlRf TVVMVElSQU5HRV9PUDoKKworCQkJCS8qCisJCQkJICoganVzdCBwdW50IGZvciBub3csIGVzdGlt YXRpb24gd291bGQgcmVxdWlyZSBlcXVhbGl0eQorCQkJCSAqIHNlbGVjdGl2aXR5IGZvciBib3Vu ZHMKKwkJCQkgKi8KKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfQ09OVEFJTlNfRUxFTV9PUDoKKwkJ CWNhc2UgT0lEX01VTFRJUkFOR0VfRUxFTV9DT05UQUlORURfT1A6CisKKwkJCQkvKgorCQkJCSAq IGp1c3QgcHVudCBmb3Igbm93LCBlc3RpbWF0aW9uIHdvdWxkIHJlcXVpcmUgZXh0cmFjdGlvbiBv ZgorCQkJCSAqIGhpc3RvZ3JhbXMgZm9yIHRoZSBhbnllbGVtZW50CisJCQkJICovCisJCQlkZWZh dWx0OgorCQkJCWJyZWFrOworCQl9CisKKworCQkvKiB0aGUgY2FsY3VsYXRlZCBzZWxlY3Rpdml0 eSBvbmx5IGFwcGxpZXMgdG8gbm9uLWVtcHR5IChtdWx0aSlyYW5nZXMgKi8KKwkJc2VsZWMgKj0g KDEgLSBlbXB0eV9mcmFjMSkgKiAoMSAtIGVtcHR5X2ZyYWMyKTsKKworCQkvKgorCQkgKiBEZXBl bmRpbmcgb24gdGhlIG9wZXJhdG9yLCBlbXB0eSAobXVsdGkpcmFuZ2VzIG1pZ2h0IG1hdGNoCisJ CSAqIGRpZmZlcmVudCBmcmFjdGlvbnMgb2YgdGhlIHJlc3VsdC4KKwkJICovCisJCXN3aXRjaCAo b3BlcmF0b3IpCisJCXsKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTEVTU19PUDoKKworCQkJCS8q CisJCQkJICogZW1wdHkgKG11bHRpKXJhbmdlIDwgbm9uLWVtcHR5IChtdWx0aSlyYW5nZQorCQkJ CSAqLworCQkJCXNlbGVjICs9IGVtcHR5X2ZyYWMxICogKDEgLSBlbXB0eV9mcmFjMik7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfR1JFQVRFUl9PUDoKKworCQkJCS8qCisJ CQkJICogbm9uLWVtcHR5IChtdWx0aSlyYW5nZSA+IGVtcHR5IChtdWx0aSlyYW5nZQorCQkJCSAq LworCQkJCXNlbGVjICs9ICgxIC0gZW1wdHlfZnJhYzEpICogZW1wdHlfZnJhYzI7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTVVMVElSQU5HRV9DT05UQUlORURfT1A6CisJ CQljYXNlIE9JRF9NVUxUSVJBTkdFX1JBTkdFX0NPTlRBSU5FRF9PUDoKKwkJCWNhc2UgT0lEX1JB TkdFX01VTFRJUkFOR0VfQ09OVEFJTkVEX09QOgorCisJCQkJLyoKKwkJCQkgKiBlbXB0eSAobXVs dGkpcmFuZ2UgPEAgYW55IChtdWx0aSlyYW5nZQorCQkJCSAqLworCQkJY2FzZSBPSURfTVVMVElS QU5HRV9MRVNTX0VRVUFMX09QOgorCisJCQkJLyoKKwkJCQkgKiBlbXB0eSAobXVsdGkpcmFuZ2Ug PD0gYW55IChtdWx0aSlyYW5nZQorCQkJCSAqLworCQkJCXNlbGVjICs9IGVtcHR5X2ZyYWMxOwor CQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX0NPTlRBSU5TX01VTFRJUkFOR0Vf T1A6CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX0NPTlRBSU5TX1JBTkdFX09QOgorCQkJY2FzZSBP SURfUkFOR0VfQ09OVEFJTlNfTVVMVElSQU5HRV9PUDoKKworCQkJCS8qCisJCQkJICogYW55ICht dWx0aSlyYW5nZSBAPiBlbXB0eSAobXVsdGkpcmFuZ2UKKwkJCQkgKi8KKwkJCWNhc2UgT0lEX01V TFRJUkFOR0VfR1JFQVRFUl9FUVVBTF9PUDoKKworCQkJCS8qCisJCQkJICogYW55IChtdWx0aSly YW5nZSA+PSBlbXB0eSAobXVsdGkpcmFuZ2UKKwkJCQkgKi8KKwkJCQlzZWxlYyArPSBlbXB0eV9m cmFjMjsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfTVVMVElSQU5HRV9DT05UQUlOU19FTEVN X09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9FTEVNX0NPTlRBSU5FRF9PUDoKKwkJCWNhc2Ug T0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJ UkFOR0VfT1ZFUkxBUFNfUkFOR0VfT1A6CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQU19NVUxU SVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9PVkVSTEFQU19MRUZUX01VTFRJUkFO R0VfT1A6CisJCQljYXNlIE9JRF9NVUxUSVJBTkdFX09WRVJMQVBTX0xFRlRfUkFOR0VfT1A6CisJ CQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQU19MRUZUX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9J RF9NVUxUSVJBTkdFX09WRVJMQVBTX1JJR0hUX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9JRF9N VUxUSVJBTkdFX09WRVJMQVBTX1JJR0hUX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfT1ZF UkxBUFNfUklHSFRfTVVMVElSQU5HRV9PUDoKKwkJCWNhc2UgT0lEX01VTFRJUkFOR0VfTEVGVF9N VUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9MRUZUX1JBTkdFX09QOgorCQkJ Y2FzZSBPSURfUkFOR0VfTEVGVF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5H RV9SSUdIVF9NVUxUSVJBTkdFX09QOgorCQkJY2FzZSBPSURfTVVMVElSQU5HRV9SSUdIVF9SQU5H RV9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX1JJR0hUX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9J RF9NVUxUSVJBTkdFX0FESkFDRU5UX01VTFRJUkFOR0VfT1A6CisJCQljYXNlIE9JRF9NVUxUSVJB TkdFX0FESkFDRU5UX1JBTkdFX09QOgorCQkJY2FzZSBPSURfUkFOR0VfQURKQUNFTlRfTVVMVElS QU5HRV9PUDoKKwkJCWRlZmF1bHQ6CisKKwkJCQkvKgorCQkJCSAqIHRoZXNlIG9wZXJhdG9ycyBh bHdheXMgcmV0dXJuIGZhbHNlIHdoZW4gYW4gZW1wdHkKKwkJCQkgKiAobXVsdGkpcmFuZ2UgaXMg aW52b2x2ZWQKKwkJCQkgKi8KKwkJCQlicmVhazsKKworCQl9CisKKwkJLyogYWxsIHJhbmdlIG9w ZXJhdG9ycyBhcmUgc3RyaWN0ICovCisJCXNlbGVjICo9ICgxIC0gbnVsbF9mcmFjMSkgKiAoMSAt IG51bGxfZnJhYzIpOworCisJCWZyZWVfYXR0c3RhdHNzbG90KCZoaXN0MSk7CisJCWZyZWVfYXR0 c3RhdHNzbG90KCZoaXN0Mik7CisJfQorCisJUmVsZWFzZVZhcmlhYmxlU3RhdHModmFyZGF0YTEp OworCVJlbGVhc2VWYXJpYWJsZVN0YXRzKHZhcmRhdGEyKTsKKworCUNMQU1QX1BST0JBQklMSVRZ KHNlbGVjKTsKKworCVBHX1JFVFVSTl9GTE9BVDgoKGZsb2F0OCkgc2VsZWMpOworCit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zZWxmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfc2VsZnVuY3MuYwppbmRleCBmYmFiYjNlMThj Li5lMmMwYTdmMGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBl c19zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3NlbGZ1 bmNzLmMKQEAgLTEyMjEsMyArMTIyMSw1MTIgQEAgY2FsY19oaXN0X3NlbGVjdGl2aXR5X2NvbnRh aW5zKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKIAogCXJldHVybiBzdW1fZnJhYzsKIH0KKwor LyoKKyAqIFRoaXMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdG8gZXN0aW1hdGUgdGhlIGpv aW4gc2VsZWN0aXZpdHkgb2YKKyAqIHJhbmdlIGF0dHJpYnV0ZXMgdXNpbmcgcmFuZ2Vib3VuZCBo aXN0b2dyYW0gc3RhdGlzdGljcyBhcyBkZXNjcmliZWQKKyAqIGluIHRoaXMgcGFwZXI6CisgKgor ICogRGlvZ28gUmVwYXMsIFpoaWNoZW5nIEx1bywgTWF4aW1lIFNjaG9lbWFucyBhbmQgTWFobW91 ZCBTYWtyLCAyMDIyCisgKiBTZWxlY3Rpdml0eSBFc3RpbWF0aW9uIG9mIEluZXF1YWxpdHkgSm9p bnMgSW4gRGF0YWJhc2VzCisgKiBodHRwczovL2RvaS5vcmcvMTAuNDg1NTAvYXJYaXYuMjIwNi4w NzM5NgorICoKKyAqIFRoZSBhdHRyaWJ1dGVzIGJlaW5nIGpvaW5lZCB3aWxsIGJlIHRyZWF0ZWQg YXMgcmFuZG9tIHZhcmlhYmxlcworICogdGhhdCBmb2xsb3cgYSBkaXN0cmlidXRpb24gbW9kZWxl ZCBieSBhIFByb2JhYmlsaXR5IERlbnNpdHkgRnVuY3Rpb24gKFBERikuCisgKiBMZXQgdGhlIHR3 byBhdHRyaWJ1dGVzIGJlIGRlbm90ZWQgWCwgWS4KKyAqIFRoaXMgZnVuY3Rpb24gZmluZHMgdGhl IHByb2JhYmlsaXR5IFAoWCA8IFkpLgorICogTm90ZSB0aGF0IHRoZSBQREZzIG9mIHRoZSB0d28g dmFyaWFibGVzIGNhbiBlYXNpbHkgYmUgb2J0YWluZWQKKyAqIGZyb20gdGhlaXIgYm91bmRzIGhp c3RvZ3JhbSwgcmVzcGVjdGl2ZWx5IGhpc3QxIGFuZCBoaXN0MiAuCisgKgorICogTGV0IHRoZSBQ REYgb2YgWCwgWSBiZSBkZW5vdGVkIGFzIGZfWCwgZl9ZLgorICogVGhlIHByb2JhYmlsaXR5IFAo WCA8IFkpIGNhbiBiZSBmb3JtYWxpemVkIGFzIGZvbGxvd3M6CisgKiBQKFggPCBZKT0gaW50ZWdy YWxfLWluZl5pbmYoIGludGVncmFsXy1pbmZeeSAoIGZfWCh4KSAqIGZfWSh5KSBkeCBkeSApICkK KyAqICAgICAgICAgICAgICAgID0gaW50ZWdyYWxfLWluZl5pbmYoIEZfWCh5KSAqIGZfWSh5KSBk eSApCisgKiB3aGVyZSBGX1goeSkgZGVub3RlIHRoZSBDdW11bGF0aXZlIERpc3RyaWJ1dGlvbiBG dW5jdGlvbiBvZiBYIGF0IHkuCisgKiBOb3RlIHRoYXQgRl9YIGlzIHRoZSBzZWxlY3Rpdml0eSBl c3RpbWF0aW9uIChub24tam9pbiksCisgKiB3aGljaCBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUg ZnVuY3Rpb24gY2FsY19oaXN0X3NlbGVjdGl2aXR5X3NjYWxhci4KKyAqCisgKiBOb3cgZ2l2ZW4g dGhlIGhpc3RvZ3JhbXMgb2YgdGhlIHR3byBhdHRyaWJ1dGVzIFgsIFksIHdlIG5vdGUgdGhlIGZv bGxvd2luZzoKKyAqIC0gVGhlIFBERiBvZiBZIGlzIGEgc3RlcCBmdW5jdGlvbgorICogKGNvbnN0 YW50IHBpZWNlLXdpc2UsIHdoZXJlIGVhY2ggcGllY2UgaXMgZGVmaW5lZCBpbiBhIGJpbiBvZiBZ J3MgaGlzdG9ncmFtKQorICogLSBUaGUgQ0RGIG9mIFggaXMgbGluZWFyIHBpZWNlLXdpc2UKKyAq ICAgKGVhY2ggcGllY2UgaXMgZGVmaW5lZCBpbiBhIGJpbiBvZiBYJ3MgaGlzdG9ncmFtKQorICog VGhpcyBsZWFkcyB0byB0aGUgY29uY2x1c2lvbiB0aGF0IHRoZWlyIHByb2R1Y3QKKyAqICh1c2Vk IHRvIGNhbGN1bGF0ZSB0aGUgZXF1YXRpb24gYWJvdmUpIGlzIGFsc28gbGluZWFyIHBpZWNlLXdp c2UuCisgKiBBIG5ldyBwaWVjZSBzdGFydHMgd2hlbmV2ZXIgZWl0aGVyIHRoZSBiaW4gb2YgWCBv ciB0aGUgYmluIG9mIFkgY2hhbmdlcy4KKyAqIEJ5IHBhcmFsbGVsIHNjYW5uaW5nIHRoZSB0d28g cmFuZ2Vib3VuZCBoaXN0b2dyYW1zIG9mIFggYW5kIFksCisgKiB3ZSBldmFsdWF0ZSBvbmUgcGll Y2Ugb2YgdGhlIHJlc3VsdCBiZXR3ZWVuIGV2ZXJ5IHR3byBjb25zZWN1dGl2ZSByYW5nZWJvdW5k cworICogaW4gdGhlIHVuaW9uIG9mIHRoZSB0d28gaGlzdG9ncmFtcy4KKyAqCisgKiBHaXZlbiB0 aGF0IHRoZSBwcm9kdWN0IEZfWCAqIGZfeSBpcyBsaW5lYXIgaW4gdGhlIGludGVydmFsCisgKiBi ZXR3ZWVuIGV2ZXJ5IHR3byBjb25zZWN1dGl2ZSByYW5nZWJvdW5kcywgbGV0IHRoZW0gYmUgZGVu b3RlZCBwcmV2LCBjdXIsCisgKiBpdCBjYW4gYmUgc2hvd24gdGhhdCB0aGUgYWJvdmUgZm9ybXVs YSBjYW4gYmUgZGlzY3JldGl6ZWQgaW50byB0aGUgZm9sbG93aW5nOgorICogUChYIDwgWSkgPQor ICogICAwLjUgKiBzdW1fMF57bittLTF9ICggKCBGX1gocHJldikgKyBGX1goY3VyKSApICogKCBG X1koY3VyKSAtIEZfWShwcmV2KSApICkKKyAqIHdoZXJlIG4sIG0gYXJlIHRoZSBsZW5ndGhzIG9m IHRoZSB0d28gaGlzdG9ncmFtcy4KKyAqCisgKiBBcyBzdWNoLCBpdCBpcyBwb3NzaWJsZSB0byBm dWxseSBjb21wdXRlIHRoZSBqb2luIHNlbGVjdGl2aXR5CisgKiBhcyBhIHN1bW1hdGlvbiBvZiBD REZzLCBpdGVyYXRpbmcgb3ZlciB0aGUgYm91bmRzIG9mIHRoZSB0d28gaGlzdG9ncmFtcy4KKyAq IFRoaXMgbWF4aW1pemVzIHRoZSBjb2RlIHJldXNlLCBzaW5jZSB0aGUgQ0RGIGlzIGNvbXB1dGVk IHVzaW5nCisgKiB0aGUgY2FsY19oaXN0X3NlbGVjdGl2aXR5X3NjYWxhciBmdW5jdGlvbiwgd2hp Y2ggaXMgdGhlIGZ1bmN0aW9uIHVzZWQKKyAqIGZvciBzZWxlY3Rpdml0eSBlc3RpbWF0aW9uIChu b24tam9pbnMpLgorICoKKyAqLworc3RhdGljIGRvdWJsZQorY2FsY19oaXN0X2pvaW5fc2VsZWN0 aXZpdHkoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLAorCQkJCQkJICAgY29uc3QgUmFuZ2VCb3Vu ZCAqaGlzdDEsIGludCBuaGlzdDEsCisJCQkJCQkgICBjb25zdCBSYW5nZUJvdW5kICpoaXN0Miwg aW50IG5oaXN0MikKK3sKKwlpbnQJCQlpLAorCQkJCWo7CisJZG91YmxlCQlzZWxlY3Rpdml0eSwK KwkJCQljdXJfc2VsMSwKKwkJCQljdXJfc2VsMiwKKwkJCQlwcmV2X3NlbDEsCisJCQkJcHJldl9z ZWwyOworCVJhbmdlQm91bmQJY3VyX3N5bmM7CisKKwkvKgorCSAqIEhpc3RvZ3JhbXMgd2lsbCBu ZXZlciBiZSBlbXB0eS4gSW4gZmFjdCwgYSBoaXN0b2dyYW0gd2lsbCBuZXZlciBoYXZlCisJICog bGVzcyB0aGFuIDIgdmFsdWVzICgxIGJpbikKKwkgKi8KKwlBc3NlcnQobmhpc3QxID4gMSk7CisJ QXNzZXJ0KG5oaXN0MiA+IDEpOworCisJLyogRmFzdC1mb3J3YXJkcyBpIGFuZCBqIHRvIHN0YXJ0 IG9mIGl0ZXJhdGlvbiAqLworCWZvciAoaSA9IDA7IHJhbmdlX2NtcF9ib3VuZF92YWx1ZXModHlw Y2FjaGUsICZoaXN0MVtpXSwgJmhpc3QyWzBdKSA8IDA7IGkrKyk7CisJZm9yIChqID0gMDsgcmFu Z2VfY21wX2JvdW5kX3ZhbHVlcyh0eXBjYWNoZSwgJmhpc3QyW2pdLCAmaGlzdDFbMF0pIDwgMDsg aisrKTsKKworCWlmIChyYW5nZV9jbXBfYm91bmRfdmFsdWVzKHR5cGNhY2hlLCAmaGlzdDFbaV0s ICZoaXN0MltqXSkgPCAwKQorCQljdXJfc3luYyA9IGhpc3QxW2krK107CisJZWxzZSBpZiAocmFu Z2VfY21wX2JvdW5kX3ZhbHVlcyh0eXBjYWNoZSwgJmhpc3QxW2ldLCAmaGlzdDJbal0pID4gMCkK KwkJY3VyX3N5bmMgPSBoaXN0MltqKytdOworCWVsc2UKKwl7CisJCS8qIElmIGVxdWFsLCBza2lw IG9uZSAqLworCQljdXJfc3luYyA9IGhpc3QxW2ldOworCQlpKys7CisJCWorKzsKKwl9CisJcHJl dl9zZWwxID0gY2FsY19oaXN0X3NlbGVjdGl2aXR5X3NjYWxhcih0eXBjYWNoZSwgJmN1cl9zeW5j LAorCQkJCQkJCQkJCQkgaGlzdDEsIG5oaXN0MSwgZmFsc2UpOworCXByZXZfc2VsMiA9IGNhbGNf aGlzdF9zZWxlY3Rpdml0eV9zY2FsYXIodHlwY2FjaGUsICZjdXJfc3luYywKKwkJCQkJCQkJCQkJ IGhpc3QyLCBuaGlzdDIsIGZhbHNlKTsKKworCS8qCisJICogRG8gdGhlIGVzdGltYXRpb24gb24g b3ZlcmxhcHBpbmcgcmVnaW9uCisJICovCisJc2VsZWN0aXZpdHkgPSAwLjA7CisJd2hpbGUgKGkg PCBuaGlzdDEgJiYgaiA8IG5oaXN0MikKKwl7CisJCWlmIChyYW5nZV9jbXBfYm91bmRfdmFsdWVz KHR5cGNhY2hlLCAmaGlzdDFbaV0sICZoaXN0MltqXSkgPCAwKQorCQkJY3VyX3N5bmMgPSBoaXN0 MVtpKytdOworCQllbHNlIGlmIChyYW5nZV9jbXBfYm91bmRfdmFsdWVzKHR5cGNhY2hlLCAmaGlz dDFbaV0sICZoaXN0MltqXSkgPiAwKQorCQkJY3VyX3N5bmMgPSBoaXN0MltqKytdOworCQllbHNl CisJCXsKKwkJCS8qIElmIGVxdWFsLCBza2lwIG9uZSAqLworCQkJY3VyX3N5bmMgPSBoaXN0MVtp XTsKKwkJCWkrKzsKKwkJCWorKzsKKwkJfQorCQljdXJfc2VsMSA9IGNhbGNfaGlzdF9zZWxlY3Rp dml0eV9zY2FsYXIodHlwY2FjaGUsICZjdXJfc3luYywKKwkJCQkJCQkJCQkJCWhpc3QxLCBuaGlz dDEsIGZhbHNlKTsKKwkJY3VyX3NlbDIgPSBjYWxjX2hpc3Rfc2VsZWN0aXZpdHlfc2NhbGFyKHR5 cGNhY2hlLCAmY3VyX3N5bmMsCisJCQkJCQkJCQkJCQloaXN0Miwgbmhpc3QyLCBmYWxzZSk7CisK KwkJc2VsZWN0aXZpdHkgKz0gKHByZXZfc2VsMSArIGN1cl9zZWwxKSAqIChjdXJfc2VsMiAtIHBy ZXZfc2VsMik7CisKKwkJLyogUHJlcGFyZSBmb3IgdGhlIG5leHQgaXRlcmF0aW9uICovCisJCXBy ZXZfc2VsMSA9IGN1cl9zZWwxOworCQlwcmV2X3NlbDIgPSBjdXJfc2VsMjsKKwl9CisKKwkvKiBQ KFggPCBZKSA9IDAuNSAqIFN1bSguLi4pICovCisJc2VsZWN0aXZpdHkgLz0gMjsKKworCS8qIElu Y2x1ZGUgcmVtYWluZGVyIG9mIGhpc3QyIGlmIGFueSAqLworCWlmIChqIDwgbmhpc3QyKQorCQlz ZWxlY3Rpdml0eSArPSAxIC0gcHJldl9zZWwyOworCisJcmV0dXJuIHNlbGVjdGl2aXR5OworfQor CisvKgorICogcmFuZ2Vqb2luc2VsIC0tIGpvaW4gY2FyZGluYWxpdHkgZm9yIHJhbmdlIG9wZXJh dG9ycworICovCitEYXR1bQorcmFuZ2Vqb2luc2VsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJUGxh bm5lckluZm8gKnJvb3QgPSAoUGxhbm5lckluZm8gKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJ T2lkCQkJb3BlcmF0b3IgPSBQR19HRVRBUkdfT0lEKDEpOworCUxpc3QJICAgKmFyZ3MgPSAoTGlz dCAqKSBQR19HRVRBUkdfUE9JTlRFUigyKTsKKwlTcGVjaWFsSm9pbkluZm8gKnNqaW5mbyA9IChT cGVjaWFsSm9pbkluZm8gKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CisJVmFyaWFibGVTdGF0RGF0 YSB2YXJkYXRhMSwKKwkJCQl2YXJkYXRhMjsKKwlBdHRTdGF0c1Nsb3QgaGlzdDEsCisJCQkJaGlz dDIsCisJCQkJc3Nsb3Q7CisJYm9vbAkJcmV2ZXJzZWQ7CisJU2VsZWN0aXZpdHkgc2VsZWM7CisJ VHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gTlVMTDsKKwlGb3JtX3BnX3N0YXRpc3RpYyBzdGF0 czEsCisJCQkJc3RhdHMyOworCWRvdWJsZQkJZW1wdHlfZnJhYzEsCisJCQkJZW1wdHlfZnJhYzIs CisJCQkJbnVsbF9mcmFjMSwKKwkJCQludWxsX2ZyYWMyOworCWludAkJCW5oaXN0MSwKKwkJCQlu aGlzdDI7CisJUmFuZ2VCb3VuZCAqaGlzdDFfbG93ZXIsCisJCQkgICAqaGlzdDFfdXBwZXIsCisJ CQkgICAqaGlzdDJfbG93ZXIsCisJCQkgICAqaGlzdDJfdXBwZXI7CisJYm9vbAkJZW1wdHk7CisJ aW50CQkJaTsKKworCWdldF9qb2luX3ZhcmlhYmxlcyhyb290LCBhcmdzLCBzamluZm8sICZ2YXJk YXRhMSwgJnZhcmRhdGEyLCAmcmV2ZXJzZWQpOworCisJc2VsZWMgPSBkZWZhdWx0X3JhbmdlX3Nl bGVjdGl2aXR5KG9wZXJhdG9yKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHZhcmRhdGExLnN0 YXRzVHVwbGUpICYmCisJCWdldF9hdHRzdGF0c3Nsb3QoJmhpc3QxLCB2YXJkYXRhMS5zdGF0c1R1 cGxlLAorCQkJCQkJIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNUT0dSQU0sIEludmFsaWRPaWQs CisJCQkJCQkgQVRUU1RBVFNTTE9UX1ZBTFVFUykgJiYKKwkJSGVhcFR1cGxlSXNWYWxpZCh2YXJk YXRhMi5zdGF0c1R1cGxlKSAmJgorCQlnZXRfYXR0c3RhdHNzbG90KCZoaXN0MiwgdmFyZGF0YTIu c3RhdHNUdXBsZSwKKwkJCQkJCSBTVEFUSVNUSUNfS0lORF9CT1VORFNfSElTVE9HUkFNLCBJbnZh bGlkT2lkLAorCQkJCQkJIEFUVFNUQVRTU0xPVF9WQUxVRVMpICYmCisJCXZhcmRhdGExLnZhcnR5 cGUgPT0gdmFyZGF0YTIudmFydHlwZSkKKwl7CisKKwkJLyogSW5pdGlhbGl6ZSB0eXBlIGNhY2hl ICovCisJCXR5cGNhY2hlID0gcmFuZ2VfZ2V0X3R5cGNhY2hlKGZjaW5mbywgdmFyZGF0YTEudmFy dHlwZSk7CisKKwkJLyoKKwkJICogRmlyc3QgbG9vayB1cCB0aGUgZnJhY3Rpb24gb2YgTlVMTHMg YW5kIGVtcHR5IHJhbmdlcyBmcm9tCisJCSAqIHBnX3N0YXRpc3RpYy4KKwkJICovCisJCXN0YXRz MSA9IChGb3JtX3BnX3N0YXRpc3RpYykgR0VUU1RSVUNUKHZhcmRhdGExLnN0YXRzVHVwbGUpOwor CQlzdGF0czIgPSAoRm9ybV9wZ19zdGF0aXN0aWMpIEdFVFNUUlVDVCh2YXJkYXRhMi5zdGF0c1R1 cGxlKTsKKworCQludWxsX2ZyYWMxID0gc3RhdHMxLT5zdGFudWxsZnJhYzsKKwkJbnVsbF9mcmFj MiA9IHN0YXRzMi0+c3RhbnVsbGZyYWM7CisKKwkJLyogVHJ5IHRvIGdldCBmcmFjdGlvbiBvZiBl bXB0eSByYW5nZXMgZm9yIHRoZSBmaXJzdCB2YXJpYWJsZSAqLworCQlpZiAoZ2V0X2F0dHN0YXRz c2xvdCgmc3Nsb3QsIHZhcmRhdGExLnN0YXRzVHVwbGUsCisJCQkJCQkJIFNUQVRJU1RJQ19LSU5E X1JBTkdFX0xFTkdUSF9ISVNUT0dSQU0sCisJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJCQkJIEFU VFNUQVRTU0xPVF9OVU1CRVJTKSkKKwkJeworCQkJaWYgKHNzbG90Lm5udW1iZXJzICE9IDEpCS8q IHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBlbXB0eSBmcmFj dGlvbiBzdGF0aXN0aWMiKTsKKwkJCWVtcHR5X2ZyYWMxID0gc3Nsb3QubnVtYmVyc1swXTsKKwkJ CWZyZWVfYXR0c3RhdHNzbG90KCZzc2xvdCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBObyBl bXB0eSBmcmFjdGlvbiBzdGF0aXN0aWMuIEFzc3VtZSBubyBlbXB0eSByYW5nZXMuICovCisJCQll bXB0eV9mcmFjMSA9IDAuMDsKKwkJfQorCisJCS8qIFRyeSB0byBnZXQgZnJhY3Rpb24gb2YgZW1w dHkgcmFuZ2VzIGZvciB0aGUgc2Vjb25kIHZhcmlhYmxlICovCisJCWlmIChnZXRfYXR0c3RhdHNz bG90KCZzc2xvdCwgdmFyZGF0YTIuc3RhdHNUdXBsZSwKKwkJCQkJCQkgU1RBVElTVElDX0tJTkRf UkFOR0VfTEVOR1RIX0hJU1RPR1JBTSwKKwkJCQkJCQkgSW52YWxpZE9pZCwKKwkJCQkJCQkgQVRU U1RBVFNTTE9UX05VTUJFUlMpKQorCQl7CisJCQlpZiAoc3Nsb3Qubm51bWJlcnMgIT0gMSkJLyog c2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGVtcHR5IGZyYWN0 aW9uIHN0YXRpc3RpYyIpOworCQkJZW1wdHlfZnJhYzIgPSBzc2xvdC5udW1iZXJzWzBdOworCQkJ ZnJlZV9hdHRzdGF0c3Nsb3QoJnNzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE5vIGVt cHR5IGZyYWN0aW9uIHN0YXRpc3RpYy4gQXNzdW1lIG5vIGVtcHR5IHJhbmdlcy4gKi8KKwkJCWVt cHR5X2ZyYWMyID0gMC4wOworCQl9CisKKwkJLyoKKwkJICogQ29udmVydCBoaXN0b2dyYW1zIG9m IHJhbmdlcyBpbnRvIGhpc3RvZ3JhbXMgb2YgdGhlaXIgbG93ZXIgYW5kCisJCSAqIHVwcGVyIGJv dW5kcyBmb3IgdGhlIGZpcnN0IHZhcmlhYmxlLgorCQkgKi8KKwkJbmhpc3QxID0gaGlzdDEubnZh bHVlczsKKwkJaGlzdDFfbG93ZXIgPSAoUmFuZ2VCb3VuZCAqKSBwYWxsb2Moc2l6ZW9mKFJhbmdl Qm91bmQpICogbmhpc3QxKTsKKwkJaGlzdDFfdXBwZXIgPSAoUmFuZ2VCb3VuZCAqKSBwYWxsb2Mo c2l6ZW9mKFJhbmdlQm91bmQpICogbmhpc3QxKTsKKwkJZm9yIChpID0gMDsgaSA8IG5oaXN0MTsg aSsrKQorCQl7CisJCQlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgRGF0dW1HZXRSYW5nZVR5 cGVQKGhpc3QxLnZhbHVlc1tpXSksCisJCQkJCQkJICAmaGlzdDFfbG93ZXJbaV0sICZoaXN0MV91 cHBlcltpXSwgJmVtcHR5KTsKKwkJCS8qIFRoZSBoaXN0b2dyYW0gc2hvdWxkIG5vdCBjb250YWlu IGFueSBlbXB0eSByYW5nZXMgKi8KKwkJCWlmIChlbXB0eSkKKwkJCQllbG9nKEVSUk9SLCAiYm91 bmRzIGhpc3RvZ3JhbSBjb250YWlucyBhbiBlbXB0eSByYW5nZSIpOworCQl9CisKKwkJLyoKKwkJ ICogQ29udmVydCBoaXN0b2dyYW1zIG9mIHJhbmdlcyBpbnRvIGhpc3RvZ3JhbXMgb2YgdGhlaXIg bG93ZXIgYW5kCisJCSAqIHVwcGVyIGJvdW5kcyBmb3IgdGhlIHNlY29uZCB2YXJpYWJsZS4KKwkJ ICovCisJCW5oaXN0MiA9IGhpc3QyLm52YWx1ZXM7CisJCWhpc3QyX2xvd2VyID0gKFJhbmdlQm91 bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0Mik7CisJCWhpc3QyX3VwcGVy ID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0Mik7CisJ CWZvciAoaSA9IDA7IGkgPCBuaGlzdDI7IGkrKykKKwkJeworCQkJcmFuZ2VfZGVzZXJpYWxpemUo dHlwY2FjaGUsIERhdHVtR2V0UmFuZ2VUeXBlUChoaXN0Mi52YWx1ZXNbaV0pLAorCQkJCQkJCSAg Jmhpc3QyX2xvd2VyW2ldLCAmaGlzdDJfdXBwZXJbaV0sICZlbXB0eSk7CisJCQkvKiBUaGUgaGlz dG9ncmFtIHNob3VsZCBub3QgY29udGFpbiBhbnkgZW1wdHkgcmFuZ2VzICovCisJCQlpZiAoZW1w dHkpCisJCQkJZWxvZyhFUlJPUiwgImJvdW5kcyBoaXN0b2dyYW0gY29udGFpbnMgYW4gZW1wdHkg cmFuZ2UiKTsKKwkJfQorCisJCXN3aXRjaCAob3BlcmF0b3IpCisJCXsKKwkJCWNhc2UgT0lEX1JB TkdFX09WRVJMQVBfT1A6CisKKwkJCQkvKgorCQkJCSAqIFNlbGVjdGl2aXR5IG9mIEEgJiYgQiA9 IFNlbGVjdGl2aXR5IG9mIE5PVCggQSA8PCBCIHx8IEEgPj4KKwkJCQkgKiBCICkgPSAxIC0gU2Vs ZWN0aXZpdHkgb2YgKEEudXBwZXIgPCBCLmxvd2VyKSAtIFNlbGVjdGl2aXR5CisJCQkJICogb2Yg KEIudXBwZXIgPCBBLmxvd2VyKQorCQkJCSAqLworCQkJCXNlbGVjID0gMTsKKwkJCQlzZWxlYyAt PSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQloaXN0 MV91cHBlciwgbmhpc3QxLAorCQkJCQkJCQkJCQkJCWhpc3QyX2xvd2VyLCBuaGlzdDIpOworCQkJ CXNlbGVjIC09IGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHR5cGNhY2hlLAorCQkJCQkJCQkJ CQkJCWhpc3QyX3VwcGVyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkJaGlzdDFfbG93ZXIsIG5oaXN0 MSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX0xFU1NfRVFVQUxfT1A6CisKKwkJ CQkvKgorCQkJCSAqIEEgPD0gQgorCQkJCSAqCisJCQkJICogU3RhcnQgYnkgY29tcGFyaW5nIGxv d2VyIGJvdW5kcyBhbmQgaWYgdGhleSBhcmUgZXF1YWwKKwkJCQkgKiBjb21wYXJlIHVwcGVyIGJv dW5kcworCQkJCSAqCisJCQkJICogTmVnYXRpb24gb2YgT0lEX1JBTkdFX0dSRUFURVJfT1AuCisJ CQkJICoKKwkJCQkgKiBPdmVyZXN0aW1hdGUgYnkgY29tcGFyaW5nIG9ubHkgdGhlIGxvd2VyIGJv dW5kcy4gSGlnaGVyCisJCQkJICogYWNjdXJhY3kgd291bGQgcmVxdWlyZSB1cyB0byBzdWJ0cmFj dCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAodXBwZXIxID4gdXBwZXIyKQorCQkJCSAq LworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2aXR5KHR5cGNhY2hlLAor CQkJCQkJCQkJCQkJCSAgIGhpc3QyX2xvd2VyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkJICAgaGlz dDFfbG93ZXIsIG5oaXN0MSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX0xFU1Nf T1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPCBCCisJCQkJICoKKwkJCQkgKiBTdGFydCBieSBjb21w YXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUg dXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBVbmRlcmVzdGltYXRlIGJ5IGNvbXBhcmluZyBv bmx5IHRoZSBsb3dlciBib3VuZHMuIEhpZ2hlcgorCQkJCSAqIGFjY3VyYWN5IHdvdWxkIHJlcXVp cmUgdXMgdG8gYWRkIFAobG93ZXIxID0gbG93ZXIyKSAqCisJCQkJICogUCh1cHBlcjEgPCB1cHBl cjIpCisJCQkJICovCisJCQkJc2VsZWMgPSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBj YWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEsCisJCQkJCQkJCQkJCQkg ICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfUkFOR0Vf R1JFQVRFUl9FUVVBTF9PUDoKKworCQkJCS8qCisJCQkJICogQSA+PSBCCisJCQkJICoKKwkJCQkg KiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5IGFyZSBlcXVhbAor CQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBOZWdhdGlvbiBvZiBP SURfUkFOR0VfTEVTU19PUC4KKwkJCQkgKgorCQkJCSAqIE92ZXJlc3RpbWF0ZSBieSBjb21wYXJp bmcgb25seSB0aGUgbG93ZXIgYm91bmRzLiBIaWdoZXIKKwkJCQkgKiBhY2N1cmFjeSB3b3VsZCBy ZXF1aXJlIHVzIHRvIGFkZCBQKGxvd2VyMSA9IGxvd2VyMikgKgorCQkJCSAqIFAodXBwZXIxIDwg dXBwZXIyKQorCQkJCSAqLworCQkJCXNlbGVjID0gMSAtIGNhbGNfaGlzdF9qb2luX3NlbGVjdGl2 aXR5KHR5cGNhY2hlLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEsCisJCQkJ CQkJCQkJCQkJICAgaGlzdDJfbG93ZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug T0lEX1JBTkdFX0dSRUFURVJfT1A6CisKKwkJCQkvKgorCQkJCSAqIEEgPiBCID09IEIgPCBBCisJ CQkJICoKKwkJCQkgKiBTdGFydCBieSBjb21wYXJpbmcgbG93ZXIgYm91bmRzIGFuZCBpZiB0aGV5 IGFyZSBlcXVhbAorCQkJCSAqIGNvbXBhcmUgdXBwZXIgYm91bmRzCisJCQkJICoKKwkJCQkgKiBV bmRlcmVzdGltYXRlIGJ5IGNvbXBhcmluZyBvbmx5IHRoZSBsb3dlciBib3VuZHMuIEhpZ2hlcgor CQkJCSAqIGFjY3VyYWN5IHdvdWxkIHJlcXVpcmUgdXMgdG8gYWRkIFAobG93ZXIxID0gbG93ZXIy KSAqCisJCQkJICogUCh1cHBlcjEgPiB1cHBlcjIpCisJCQkJICovCisJCQkJc2VsZWMgPSBjYWxj X2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QyX2xv d2VyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkgICBoaXN0MV9sb3dlciwgbmhpc3QxKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBPSURfUkFOR0VfTEVGVF9PUDoKKwkJCQkvKiB2YXIxIDw8IHZhcjIg d2hlbiB1cHBlcih2YXIxKSA8IGxvd2VyKHZhcjIpICovCisJCQkJc2VsZWMgPSBjYWxjX2hpc3Rf am9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX3VwcGVyLCBu aGlzdDEsCisJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBPSURfUkFOR0VfUklHSFRfT1A6CisJCQkJLyogdmFyMSA+PiB2YXIyIHdoZW4g dXBwZXIodmFyMikgPCBsb3dlcih2YXIxKSAqLworCQkJCXNlbGVjID0gY2FsY19oaXN0X2pvaW5f c2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkgICBoaXN0Ml91cHBlciwgbmhpc3Qy LAorCQkJCQkJCQkJCQkJICAgaGlzdDFfbG93ZXIsIG5oaXN0MSk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX0xFRlRfT1A6CisJCQkJLyogdmFyMSAmPCB2YXIyIHdo ZW4gdXBwZXIodmFyMSkgPCB1cHBlcih2YXIyKSAqLworCQkJCXNlbGVjID0gY2FsY19oaXN0X2pv aW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkgICBoaXN0MV91cHBlciwgbmhp c3QxLAorCQkJCQkJCQkJCQkJICAgaGlzdDJfdXBwZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX1JJR0hUX09QOgorCQkJCS8qIHZhcjEgJj4gdmFy MiB3aGVuIGxvd2VyKHZhcjIpIDwgbG93ZXIodmFyMSkgKi8KKwkJCQlzZWxlYyA9IGNhbGNfaGlz dF9qb2luX3NlbGVjdGl2aXR5KHR5cGNhY2hlLAorCQkJCQkJCQkJCQkJICAgaGlzdDJfbG93ZXIs IG5oaXN0MiwKKwkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEpOworCQkJCWJyZWFr OworCisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlORURfT1A6CisKKwkJCQkvKgorCQkJCSAqIHZh cjEgPEAgdmFyMiBpcyBlcXVpdmFsZW50IHRvIGxvd2VyKHZhcjIpIDw9IGxvd2VyKHZhcjEpCisJ CQkJICogYW5kIHVwcGVyKHZhcjEpIDw9IHVwcGVyKHZhcjIpCisJCQkJICoKKwkJCQkgKiBBZnRl ciBuZWdhdGluZyBib3RoIHNpZGVzIHdlIGdldCBub3QoIGxvd2VyKHZhcjEpIDwKKwkJCQkgKiBs b3dlcih2YXIyKSApIGFuZCBub3QoIHVwcGVyKHZhcjIpIDwgdXBwZXIodmFyMSkgKSwKKwkJCQkg KiByZXNwZWN0aXZlbHkuIEFzc3VtaW5nIGluZGVwZW5kZW5jZSwgbXVsdGlwbHkgYm90aAorCQkJ CSAqIHNlbGVjdGl2aXRpZXMuCisJCQkJICovCisJCQkJc2VsZWMgPSAxIC0gY2FsY19oaXN0X2pv aW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkJICAgaGlzdDFfbG93ZXIsIG5o aXN0MSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0Ml9sb3dlciwgbmhpc3QyKTsKKwkJCQlzZWxlYyAq PSAxIC0gY2FsY19oaXN0X2pvaW5fc2VsZWN0aXZpdHkodHlwY2FjaGUsCisJCQkJCQkJCQkJCQkJ CWhpc3QyX3VwcGVyLCBuaGlzdDIsCisJCQkJCQkJCQkJCQkJCWhpc3QxX3VwcGVyLCBuaGlzdDEp OworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlOU19PUDoKKworCQkJCS8q CisJCQkJICogdmFyMSBAPiB2YXIyIGlzIGVxdWl2YWxlbnQgdG8gbG93ZXIodmFyMSkgPD0gbG93 ZXIodmFyMikKKwkJCQkgKiBhbmQgdXBwZXIodmFyMikgPD0gdXBwZXIodmFyMSkKKwkJCQkgKgor CQkJCSAqIEFmdGVyIG5lZ2F0aW5nIGJvdGggc2lkZXMgd2UgZ2V0IG5vdCggbG93ZXIodmFyMikg PAorCQkJCSAqIGxvd2VyKHZhcjEpICkgYW5kIG5vdCggdXBwZXIodmFyMSkgPCB1cHBlcih2YXIy KSApLAorCQkJCSAqIHJlc3BlY3RpdmVseS4gQXNzdW1pbmcgaW5kZXBlbmRlbmNlLCBtdWx0aXBs eSBib3RoCisJCQkJICogc2VsZWN0aXZpdGllcy4KKwkJCQkgKi8KKwkJCQlzZWxlYyA9IDEgLSBj YWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJCQkJCQkJCQkJCQkgICBoaXN0 Ml9sb3dlciwgbmhpc3QyLAorCQkJCQkJCQkJCQkJCSAgIGhpc3QxX2xvd2VyLCBuaGlzdDEpOwor CQkJCXNlbGVjICo9IDEgLSBjYWxjX2hpc3Rfam9pbl9zZWxlY3Rpdml0eSh0eXBjYWNoZSwKKwkJ CQkJCQkJCQkJCQkJaGlzdDFfdXBwZXIsIG5oaXN0MSwKKwkJCQkJCQkJCQkJCQkJaGlzdDJfdXBw ZXIsIG5oaXN0Mik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgT0lEX1JBTkdFX0NPTlRBSU5TX0VM RU1fT1A6CisJCQljYXNlIE9JRF9SQU5HRV9FTEVNX0NPTlRBSU5FRF9PUDoKKworCQkJCS8qCisJ CQkJICoganVzdCBwdW50IGZvciBub3csIGVzdGltYXRpb24gd291bGQgcmVxdWlyZSBleHRyYWN0 aW9uIG9mCisJCQkJICogaGlzdG9ncmFtcyBmb3IgdGhlIGFueWVsZW1lbnQKKwkJCQkgKi8KKwkJ CWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKworCisJCS8qIHRoZSBjYWxjdWxhdGVkIHNlbGVj dGl2aXR5IG9ubHkgYXBwbGllcyB0byBub24tZW1wdHkgcmFuZ2VzICovCisJCXNlbGVjICo9ICgx IC0gZW1wdHlfZnJhYzEpICogKDEgLSBlbXB0eV9mcmFjMik7CisKKwkJLyoKKwkJICogRGVwZW5k aW5nIG9uIHRoZSBvcGVyYXRvciwgZW1wdHkgcmFuZ2VzIG1pZ2h0IG1hdGNoIGRpZmZlcmVudAor CQkgKiBmcmFjdGlvbnMgb2YgdGhlIHJlc3VsdC4KKwkJICovCisJCXN3aXRjaCAob3BlcmF0b3Ip CisJCXsKKwkJCWNhc2UgT0lEX1JBTkdFX0xFU1NfT1A6CisKKwkJCQkvKgorCQkJCSAqIGVtcHR5 IHJhbmdlIDwgbm9uLWVtcHR5IHJhbmdlCisJCQkJICovCisJCQkJc2VsZWMgKz0gZW1wdHlfZnJh YzEgKiAoMSAtIGVtcHR5X2ZyYWMyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBPSURfUkFOR0Vf R1JFQVRFUl9PUDoKKworCQkJCS8qCisJCQkJICogbm9uLWVtcHR5IHJhbmdlID4gZW1wdHkgcmFu Z2UKKwkJCQkgKi8KKwkJCQlzZWxlYyArPSAoMSAtIGVtcHR5X2ZyYWMxKSAqIGVtcHR5X2ZyYWMy OworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9SQU5HRV9DT05UQUlORURfT1A6CisKKwkJCQkv KgorCQkJCSAqIGVtcHR5IHJhbmdlIDxAIGFueSByYW5nZQorCQkJCSAqLworCQkJY2FzZSBPSURf UkFOR0VfTEVTU19FUVVBTF9PUDoKKworCQkJCS8qCisJCQkJICogZW1wdHkgcmFuZ2UgPD0gYW55 IHJhbmdlCisJCQkJICovCisJCQkJc2VsZWMgKz0gZW1wdHlfZnJhYzE7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgT0lEX1JBTkdFX0NPTlRBSU5TX09QOgorCisJCQkJLyoKKwkJCQkgKiBhbnkgcmFu Z2UgQD4gZW1wdHkgcmFuZ2UKKwkJCQkgKi8KKwkJCWNhc2UgT0lEX1JBTkdFX0dSRUFURVJfRVFV QUxfT1A6CisKKwkJCQkvKgorCQkJCSAqIGFueSByYW5nZSA+PSBlbXB0eSByYW5nZQorCQkJCSAq LworCQkJCXNlbGVjICs9IGVtcHR5X2ZyYWMyOworCQkJCWJyZWFrOworCisJCQljYXNlIE9JRF9S QU5HRV9DT05UQUlOU19FTEVNX09QOgorCQkJY2FzZSBPSURfUkFOR0VfRUxFTV9DT05UQUlORURf T1A6CisJCQljYXNlIE9JRF9SQU5HRV9PVkVSTEFQX09QOgorCQkJY2FzZSBPSURfUkFOR0VfT1ZF UkxBUFNfTEVGVF9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX09WRVJMQVBTX1JJR0hUX09QOgorCQkJ Y2FzZSBPSURfUkFOR0VfTEVGVF9PUDoKKwkJCWNhc2UgT0lEX1JBTkdFX1JJR0hUX09QOgorCQkJ ZGVmYXVsdDoKKworCQkJCS8qCisJCQkJICogdGhlc2Ugb3BlcmF0b3JzIGFsd2F5cyByZXR1cm4g ZmFsc2Ugd2hlbiBhbiBlbXB0eSByYW5nZSBpcworCQkJCSAqIGludm9sdmVkCisJCQkJICovCisJ CQkJYnJlYWs7CisKKwkJfQorCisJCS8qIGFsbCByYW5nZSBvcGVyYXRvcnMgYXJlIHN0cmljdCAq LworCQlzZWxlYyAqPSAoMSAtIG51bGxfZnJhYzEpICogKDEgLSBudWxsX2ZyYWMyKTsKKworCQlm cmVlX2F0dHN0YXRzc2xvdCgmaGlzdDEpOworCQlmcmVlX2F0dHN0YXRzc2xvdCgmaGlzdDIpOwor CX0KKworCVJlbGVhc2VWYXJpYWJsZVN0YXRzKHZhcmRhdGExKTsKKwlSZWxlYXNlVmFyaWFibGVT dGF0cyh2YXJkYXRhMik7CisKKwlDTEFNUF9QUk9CQUJJTElUWShzZWxlYyk7CisKKwlQR19SRVRV Uk5fRkxPQVQ4KChmbG9hdDgpIHNlbGVjKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9y LmRhdAppbmRleCBiMmNkZWE2NmM0Li5kMDRmYzY5MmI1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29w ZXJhdG9yLmRhdApAQCAtMzA3MSw3OCArMzA3MSw3OCBAQAogICBvcHJuYW1lID0+ICc8Jywgb3By bGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55cmFuZ2UnLAogICBvcHJyZXN1bHQg PT4gJ2Jvb2wnLCBvcHJjb20gPT4gJz4oYW55cmFuZ2UsYW55cmFuZ2UpJywKICAgb3BybmVnYXRl ID0+ICc+PShhbnlyYW5nZSxhbnlyYW5nZSknLCBvcHJjb2RlID0+ICdyYW5nZV9sdCcsCi0gIG9w cnJlc3QgPT4gJ3Jhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9LAorICBv cHJyZXN0ID0+ICdyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3Jhbmdlam9pbnNlbCcgfSwKIHsgb2lk ID0+ICczODg1Jywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX0xFU1NfRVFVQUxfT1AnLAogICBk ZXNjciA9PiAnbGVzcyB0aGFuIG9yIGVxdWFsJywKICAgb3BybmFtZSA9PiAnPD0nLCBvcHJsZWZ0 ID0+ICdhbnlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAn Ym9vbCcsIG9wcmNvbSA9PiAnPj0oYW55cmFuZ2UsYW55cmFuZ2UpJywKICAgb3BybmVnYXRlID0+ ICc+KGFueXJhbmdlLGFueXJhbmdlKScsIG9wcmNvZGUgPT4gJ3JhbmdlX2xlJywKLSAgb3BycmVz dCA9PiAncmFuZ2VzZWwnLCBvcHJqb2luID0+ICdzY2FsYXJsZWpvaW5zZWwnIH0sCisgIG9wcnJl c3QgPT4gJ3Jhbmdlc2VsJywgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4g JzM4ODYnLCBvaWRfc3ltYm9sID0+ICdPSURfUkFOR0VfR1JFQVRFUl9FUVVBTF9PUCcsCiAgIGRl c2NyID0+ICdncmVhdGVyIHRoYW4gb3IgZXF1YWwnLAogICBvcHJuYW1lID0+ICc+PScsIG9wcmxl ZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ ICdib29sJywgb3ByY29tID0+ICc8PShhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJuZWdhdGUg PT4gJzwoYW55cmFuZ2UsYW55cmFuZ2UpJywgb3ByY29kZSA9PiAncmFuZ2VfZ2UnLAotICBvcHJy ZXN0ID0+ICdyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmdlam9pbnNlbCcgfSwKKyAgb3By cmVzdCA9PiAncmFuZ2VzZWwnLCBvcHJqb2luID0+ICdyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9 PiAnMzg4NycsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9HUkVBVEVSX09QJywKICAgZGVzY3Ig PT4gJ2dyZWF0ZXIgdGhhbicsCiAgIG9wcm5hbWUgPT4gJz4nLCBvcHJsZWZ0ID0+ICdhbnlyYW5n ZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNv bSA9PiAnPChhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJuZWdhdGUgPT4gJzw9KGFueXJhbmdl LGFueXJhbmdlKScsIG9wcmNvZGUgPT4gJ3JhbmdlX2d0JywKLSAgb3BycmVzdCA9PiAncmFuZ2Vz ZWwnLCBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5zZWwnIH0sCisgIG9wcnJlc3QgPT4gJ3Jhbmdl c2VsJywgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4ODgnLCBvaWRf c3ltYm9sID0+ICdPSURfUkFOR0VfT1ZFUkxBUF9PUCcsIGRlc2NyID0+ICdvdmVybGFwcycsCiAg IG9wcm5hbWUgPT4gJyYmJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55 cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJyYmKGFueXJhbmdlLGFu eXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ3JhbmdlX292ZXJsYXBzJywgb3BycmVzdCA9PiAncmFu Z2VzZWwnLAotICBvcHJqb2luID0+ICdhcmVham9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAncmFu Z2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4ODknLCBvaWRfc3ltYm9sID0+ICdPSURfUkFOR0Vf Q09OVEFJTlNfRUxFTV9PUCcsCiAgIGRlc2NyID0+ICdjb250YWlucycsCiAgIG9wcm5hbWUgPT4g J0A+Jywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55ZWxlbWVudCcsCiAg IG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPEAoYW55ZWxlbWVudCxhbnlyYW5nZSkn LAogICBvcHJjb2RlID0+ICdyYW5nZV9jb250YWluc19lbGVtJywgb3BycmVzdCA9PiAncmFuZ2Vz ZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAncmFuZ2Vq b2luc2VsJyB9LAogeyBvaWQgPT4gJzM4OTAnLCBvaWRfc3ltYm9sID0+ICdPSURfUkFOR0VfQ09O VEFJTlNfT1AnLCBkZXNjciA9PiAnY29udGFpbnMnLAogICBvcHJuYW1lID0+ICdAPicsIG9wcmxl ZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ ICdib29sJywgb3ByY29tID0+ICc8QChhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ ICdyYW5nZV9jb250YWlucycsIG9wcnJlc3QgPT4gJ3Jhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAn Y29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ3Jhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ ICczODkxJywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX0VMRU1fQ09OVEFJTkVEX09QJywKICAg ZGVzY3IgPT4gJ2lzIGNvbnRhaW5lZCBieScsCiAgIG9wcm5hbWUgPT4gJzxAJywgb3BybGVmdCA9 PiAnYW55ZWxlbWVudCcsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAn Ym9vbCcsIG9wcmNvbSA9PiAnQD4oYW55cmFuZ2UsYW55ZWxlbWVudCknLAogICBvcHJjb2RlID0+ ICdlbGVtX2NvbnRhaW5lZF9ieV9yYW5nZScsIG9wcnJlc3QgPT4gJ3Jhbmdlc2VsJywKLSAgb3By am9pbiA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ3Jhbmdlam9pbnNlbCcgfSwK IHsgb2lkID0+ICczODkyJywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX0NPTlRBSU5FRF9PUCcs CiAgIGRlc2NyID0+ICdpcyBjb250YWluZWQgYnknLAogICBvcHJuYW1lID0+ICc8QCcsIG9wcmxl ZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ ICdib29sJywgb3ByY29tID0+ICdAPihhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ ICdyYW5nZV9jb250YWluZWRfYnknLCBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsCi0gIG9wcmpvaW4g PT4gJ2NvbnRqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdyYW5nZWpvaW5zZWwnIH0sCiB7IG9p ZCA9PiAnMzg5MycsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9MRUZUX09QJywgZGVzY3IgPT4g J2lzIGxlZnQgb2YnLAogICBvcHJuYW1lID0+ICc8PCcsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywg b3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ ICc+PihhbnlyYW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9iZWZvcmUnLCBv cHJyZXN0ID0+ICdyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3NjYWxhcmx0am9pbnNlbCcgfSwK KyAgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4OTQnLCBvaWRfc3lt Ym9sID0+ICdPSURfUkFOR0VfUklHSFRfT1AnLCBkZXNjciA9PiAnaXMgcmlnaHQgb2YnLAogICBv cHJuYW1lID0+ICc+PicsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJh bmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8PChhbnlyYW5nZSxhbnly YW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9hZnRlcicsIG9wcnJlc3QgPT4gJ3Jhbmdlc2Vs JywKLSAgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdyYW5n ZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMzg5NScsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9P VkVSTEFQU19MRUZUX09QJywKICAgZGVzY3IgPT4gJ292ZXJsYXBzIG9yIGlzIGxlZnQgb2YnLAog ICBvcHJuYW1lID0+ICcmPCcsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2Fu eXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29kZSA9PiAncmFuZ2Vfb3Zlcmxl ZnQnLCBvcHJyZXN0ID0+ICdyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3NjYWxhcmx0am9pbnNl bCcgfSwKKyAgb3Byam9pbiA9PiAncmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzM4OTYnLCBv aWRfc3ltYm9sID0+ICdPSURfUkFOR0VfT1ZFUkxBUFNfUklHSFRfT1AnLAogICBkZXNjciA9PiAn b3ZlcmxhcHMgb3IgaXMgcmlnaHQgb2YnLAogICBvcHJuYW1lID0+ICcmPicsIG9wcmxlZnQgPT4g J2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29s Jywgb3ByY29kZSA9PiAncmFuZ2Vfb3ZlcnJpZ2h0Jywgb3BycmVzdCA9PiAncmFuZ2VzZWwnLAot ICBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ3Jhbmdlam9p bnNlbCcgfSwKIHsgb2lkID0+ICczODk3JywgZGVzY3IgPT4gJ2lzIGFkamFjZW50IHRvJywKICAg b3BybmFtZSA9PiAnLXwtJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55 cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJy18LShhbnlyYW5nZSxh bnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9hZGphY2VudCcsIG9wcnJlc3QgPT4gJ21h dGNoaW5nc2VsJywKLSAgb3Byam9pbiA9PiAnbWF0Y2hpbmdqb2luc2VsJyB9LAorICBvcHJqb2lu ID0+ICdyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMzg5OCcsIGRlc2NyID0+ICdyYW5nZSB1 bmlvbicsCiAgIG9wcm5hbWUgPT4gJysnLCBvcHJsZWZ0ID0+ICdhbnlyYW5nZScsIG9wcnJpZ2h0 ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYW55cmFuZ2UnLCBvcHJjb20gPT4gJyso YW55cmFuZ2UsYW55cmFuZ2UpJywKQEAgLTMyNzcsMTM5ICszMjc3LDEzOSBAQAogICBvcHJuYW1l ID0+ICc8Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0 aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc+KGFueW11bHRpcmFu Z2UsYW55bXVsdGlyYW5nZSknLAogICBvcHJuZWdhdGUgPT4gJz49KGFueW11bHRpcmFuZ2UsYW55 bXVsdGlyYW5nZSknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2x0JywKLSAgb3BycmVzdCA9PiAn bXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmx0am9pbnNlbCcgfSwKKyAgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAog eyBvaWQgPT4gJzI4NjMnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9MRVNTX0VRVUFM X09QJywKICAgZGVzY3IgPT4gJ2xlc3MgdGhhbiBvciBlcXVhbCcsCiAgIG9wcm5hbWUgPT4gJzw9 Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdl JywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc+PShhbnltdWx0aXJhbmdlLGFu eW11bHRpcmFuZ2UpJywKICAgb3BybmVnYXRlID0+ICc+KGFueW11bHRpcmFuZ2UsYW55bXVsdGly YW5nZSknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2xlJywKLSAgb3BycmVzdCA9PiAnbXVsdGly YW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmxlam9pbnNlbCcgfSwKKyAgb3BycmVzdCA9PiAn bXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQg PT4gJzI4NjQnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9HUkVBVEVSX0VRVUFMX09Q JywKICAgZGVzY3IgPT4gJ2dyZWF0ZXIgdGhhbiBvciBlcXVhbCcsCiAgIG9wcm5hbWUgPT4gJz49 Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdl JywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8PShhbnltdWx0aXJhbmdlLGFu eW11bHRpcmFuZ2UpJywKICAgb3BybmVnYXRlID0+ICc8KGFueW11bHRpcmFuZ2UsYW55bXVsdGly YW5nZSknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2dlJywKLSAgb3BycmVzdCA9PiAnbXVsdGly YW5nZXNlbCcsIG9wcmpvaW4gPT4gJ3NjYWxhcmdlam9pbnNlbCcgfSwKKyAgb3BycmVzdCA9PiAn bXVsdGlyYW5nZXNlbCcsIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQg PT4gJzI4NjUnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9HUkVBVEVSX09QJywKICAg ZGVzY3IgPT4gJ2dyZWF0ZXIgdGhhbicsCiAgIG9wcm5hbWUgPT4gJz4nLCBvcHJsZWZ0ID0+ICdh bnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBvcHJyZXN1bHQg PT4gJ2Jvb2wnLCBvcHJjb20gPT4gJzwoYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAg IG9wcm5lZ2F0ZSA9PiAnPD0oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsIG9wcmNvZGUg PT4gJ211bHRpcmFuZ2VfZ3QnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9p biA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywg b3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg2NicsIG9pZF9z eW1ib2wgPT4gJ09JRF9SQU5HRV9PVkVSTEFQU19NVUxUSVJBTkdFX09QJywKICAgZGVzY3IgPT4g J292ZXJsYXBzJywKICAgb3BybmFtZSA9PiAnJiYnLCBvcHJsZWZ0ID0+ICdhbnlyYW5nZScsIG9w cnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29t ID0+ICcmJihhbnltdWx0aXJhbmdlLGFueXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ3JhbmdlX292 ZXJsYXBzX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywKLSAgb3Byam9p biA9PiAnYXJlYWpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9 LAogeyBvaWQgPT4gJzI4NjcnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9PVkVSTEFQ U19SQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdvdmVybGFwcycsCiAgIG9wcm5hbWUgPT4gJyYmJywg b3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9w cnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnJiYoYW55cmFuZ2UsYW55bXVsdGlyYW5nZSkn LAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX292ZXJsYXBzX3JhbmdlJywgb3BycmVzdCA9PiAn bXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2FyZWFqb2luc2VsJyB9LAorICBvcHJqb2lu ID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICcyODY4Jywgb2lkX3N5bWJvbCA9 PiAnT0lEX01VTFRJUkFOR0VfT1ZFUkxBUFNfTVVMVElSQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdv dmVybGFwcycsCiAgIG9wcm5hbWUgPT4gJyYmJywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScs IG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3By Y29tID0+ICcmJihhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29kZSA9PiAn bXVsdGlyYW5nZV9vdmVybGFwc19tdWx0aXJhbmdlJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNl bCcsCi0gIG9wcmpvaW4gPT4gJ2FyZWFqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJh bmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICcyODY5Jywgb2lkX3N5bWJvbCA9PiAnT0lEX01VTFRJ UkFOR0VfQ09OVEFJTlNfRUxFTV9PUCcsCiAgIGRlc2NyID0+ICdjb250YWlucycsCiAgIG9wcm5h bWUgPT4gJ0A+Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnll bGVtZW50JywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8QChhbnllbGVtZW50 LGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9jb250YWluc19lbGVt Jywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2NvbnRqb2luc2Vs JyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICcyODcw Jywgb2lkX3N5bWJvbCA9PiAnT0lEX01VTFRJUkFOR0VfQ09OVEFJTlNfUkFOR0VfT1AnLAogICBk ZXNjciA9PiAnY29udGFpbnMnLAogICBvcHJuYW1lID0+ICdAPicsIG9wcmxlZnQgPT4gJ2FueW11 bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wn LCBvcHJjb20gPT4gJzxAKGFueXJhbmdlLGFueW11bHRpcmFuZ2UpJywKICAgb3ByY29kZSA9PiAn bXVsdGlyYW5nZV9jb250YWluc19yYW5nZScsIG9wcnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAot ICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpv aW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3MScsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdF X0NPTlRBSU5TX01VTFRJUkFOR0VfT1AnLAogICBkZXNjciA9PiAnY29udGFpbnMnLAogICBvcHJu YW1lID0+ICdAPicsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55 bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPEAoYW55bXVs dGlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfY29udGFp bnNfbXVsdGlyYW5nZScsIG9wcnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAotICBvcHJqb2luID0+ ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7 IG9pZCA9PiAnMjg3MicsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX0VMRU1fQ09OVEFJ TkVEX09QJywKICAgZGVzY3IgPT4gJ2lzIGNvbnRhaW5lZCBieScsCiAgIG9wcm5hbWUgPT4gJzxA Jywgb3BybGVmdCA9PiAnYW55ZWxlbWVudCcsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywK ICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICdAPihhbnltdWx0aXJhbmdlLGFueWVs ZW1lbnQpJywKICAgb3ByY29kZSA9PiAnZWxlbV9jb250YWluZWRfYnlfbXVsdGlyYW5nZScsIG9w cnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwK KyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3MycsIG9p ZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX1JBTkdFX0NPTlRBSU5FRF9PUCcsCiAgIGRlc2Ny ID0+ICdpcyBjb250YWluZWQgYnknLAogICBvcHJuYW1lID0+ICc8QCcsIG9wcmxlZnQgPT4gJ2Fu eXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jv b2wnLCBvcHJjb20gPT4gJ0A+KGFueW11bHRpcmFuZ2UsYW55cmFuZ2UpJywKICAgb3ByY29kZSA9 PiAncmFuZ2VfY29udGFpbmVkX2J5X211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0aXJhbmdl c2VsJywKLSAgb3Byam9pbiA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRp cmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzI4NzQnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVM VElSQU5HRV9NVUxUSVJBTkdFX0NPTlRBSU5FRF9PUCcsCiAgIGRlc2NyID0+ICdpcyBjb250YWlu ZWQgYnknLAogICBvcHJuYW1lID0+ICc8QCcsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBv cHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNv bSA9PiAnQD4oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211 bHRpcmFuZ2VfY29udGFpbmVkX2J5X211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0aXJhbmdl c2VsJywKLSAgb3Byam9pbiA9PiAnY29udGpvaW5zZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRp cmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzQ1MzknLCBvaWRfc3ltYm9sID0+ICdPSURfUkFO R0VfQ09OVEFJTlNfTVVMVElSQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdjb250YWlucycsCiAgIG9w cm5hbWUgPT4gJ0A+Jywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVs dGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPEAoYW55bXVsdGly YW5nZSxhbnlyYW5nZSknLAogICBvcHJjb2RlID0+ICdyYW5nZV9jb250YWluc19tdWx0aXJhbmdl Jywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ2NvbnRqb2luc2Vs JyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICc0NTQw Jywgb2lkX3N5bWJvbCA9PiAnT0lEX1JBTkdFX01VTFRJUkFOR0VfQ09OVEFJTkVEX09QJywKICAg ZGVzY3IgPT4gJ2lzIGNvbnRhaW5lZCBieScsCiAgIG9wcm5hbWUgPT4gJzxAJywgb3BybGVmdCA9 PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9 PiAnYm9vbCcsIG9wcmNvbSA9PiAnQD4oYW55cmFuZ2UsYW55bXVsdGlyYW5nZSknLAogICBvcHJj b2RlID0+ICdtdWx0aXJhbmdlX2NvbnRhaW5lZF9ieV9yYW5nZScsIG9wcnJlc3QgPT4gJ211bHRp cmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdjb250am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAn bXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3NScsIG9pZF9zeW1ib2wgPT4gJ09J RF9SQU5HRV9PVkVSTEFQU19MRUZUX01VTFRJUkFOR0VfT1AnLAogICBkZXNjciA9PiAnb3Zlcmxh cHMgb3IgaXMgbGVmdCBvZicsCiAgIG9wcm5hbWUgPT4gJyY8Jywgb3BybGVmdCA9PiAnYW55cmFu Z2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcs IG9wcmNvZGUgPT4gJ3JhbmdlX292ZXJsZWZ0X211bHRpcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdt dWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9LAorICBvcHJyZXN0 ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7 IG9pZCA9PiAnMjg3NicsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJMQVBTX0xF RlRfUkFOR0VfT1AnLAogICBkZXNjciA9PiAnb3ZlcmxhcHMgb3IgaXMgbGVmdCBvZicsCiAgIG9w cm5hbWUgPT4gJyY8Jywgb3BybGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdh bnlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2Vf b3ZlcmxlZnRfcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9 PiAnc2NhbGFybHRqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3By am9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMjg3NycsIG9pZF9zeW1i b2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJMQVBTX0xFRlRfTVVMVElSQU5HRV9PUCcsCiAgIGRl c2NyID0+ICdvdmVybGFwcyBvciBpcyBsZWZ0IG9mJywKICAgb3BybmFtZSA9PiAnJjwnLCBvcHJs ZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBv cHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX292ZXJsZWZ0X211bHRp cmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFy bHRqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAn bXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnMzU4NScsIG9pZF9zeW1ib2wgPT4gJ09J RF9SQU5HRV9PVkVSTEFQU19SSUdIVF9NVUxUSVJBTkdFX09QJywKICAgZGVzY3IgPT4gJ292ZXJs YXBzIG9yIGlzIHJpZ2h0IG9mJywKICAgb3BybmFtZSA9PiAnJj4nLCBvcHJsZWZ0ID0+ICdhbnly YW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29s Jywgb3ByY29kZSA9PiAncmFuZ2Vfb3ZlcnJpZ2h0X211bHRpcmFuZ2UnLAotICBvcHJyZXN0ID0+ ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJy ZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0s CiB7IG9pZCA9PiAnNDAzNScsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJMQVBT X1JJR0hUX1JBTkdFX09QJywKICAgZGVzY3IgPT4gJ292ZXJsYXBzIG9yIGlzIHJpZ2h0IG9mJywK ICAgb3BybmFtZSA9PiAnJj4nLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQg PT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29kZSA9PiAnbXVsdGly YW5nZV9vdmVycmlnaHRfcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3By am9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2Vs Jywgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnNDE0MicsIG9p ZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX09WRVJMQVBTX1JJR0hUX01VTFRJUkFOR0VfT1An LAogICBkZXNjciA9PiAnb3ZlcmxhcHMgb3IgaXMgcmlnaHQgb2YnLAogICBvcHJuYW1lID0+ICcm PicsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5n ZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2Vfb3ZlcnJp Z2h0X211bHRpcmFuZ2UnLAotICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3Byam9pbiA9 PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywgb3By am9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnNDE3OScsIG9pZF9zeW1i b2wgPT4gJ09JRF9SQU5HRV9BREpBQ0VOVF9NVUxUSVJBTkdFX09QJywKICAgZGVzY3IgPT4gJ2lz IGFkamFjZW50IHRvJywKICAgb3BybmFtZSA9PiAnLXwtJywgb3BybGVmdCA9PiAnYW55cmFuZ2Un LCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9w cmNvbSA9PiAnLXwtKGFueW11bHRpcmFuZ2UsYW55cmFuZ2UpJywKICAgb3ByY29kZSA9PiAncmFu Z2VfYWRqYWNlbnRfbXVsdGlyYW5nZScsIG9wcnJlc3QgPT4gJ21hdGNoaW5nc2VsJywKLSAgb3By am9pbiA9PiAnbWF0Y2hpbmdqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9p bnNlbCcgfSwKIHsgb2lkID0+ICc0MTgwJywgb2lkX3N5bWJvbCA9PiAnT0lEX01VTFRJUkFOR0Vf QURKQUNFTlRfUkFOR0VfT1AnLAogICBkZXNjciA9PiAnaXMgYWRqYWNlbnQgdG8nLAogICBvcHJu YW1lID0+ICctfC0nLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2Fu eXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICctfC0oYW55cmFuZ2Us YW55bXVsdGlyYW5nZSknLAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2FkamFjZW50X3Jhbmdl Jywgb3BycmVzdCA9PiAnbWF0Y2hpbmdzZWwnLAotICBvcHJqb2luID0+ICdtYXRjaGluZ2pvaW5z ZWwnIH0sCisgIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzQx OTgnLCBvaWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9BREpBQ0VOVF9NVUxUSVJBTkdFX09Q JywKICAgZGVzY3IgPT4gJ2lzIGFkamFjZW50IHRvJywKICAgb3BybmFtZSA9PiAnLXwtJywgb3By bGVmdCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAg b3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICctfC0oYW55bXVsdGlyYW5nZSxhbnltdWx0 aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfYWRqYWNlbnRfbXVsdGlyYW5nZScs IG9wcnJlc3QgPT4gJ21hdGNoaW5nc2VsJywKLSAgb3Byam9pbiA9PiAnbWF0Y2hpbmdqb2luc2Vs JyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICc0Mzky JywgZGVzY3IgPT4gJ211bHRpcmFuZ2UgdW5pb24nLAogICBvcHJuYW1lID0+ICcrJywgb3BybGVm dCA9PiAnYW55bXVsdGlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3By cmVzdWx0ID0+ICdhbnltdWx0aXJhbmdlJywgb3ByY29tID0+ICcrKGFueW11bHRpcmFuZ2UsYW55 bXVsdGlyYW5nZSknLApAQCAtMzQyNiwzNiArMzQyNiwzNiBAQAogICBvcHJuYW1lID0+ICc8PCcs IG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBv cHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJz4+KGFueW11bHRpcmFuZ2UsYW55cmFuZ2Up JywKICAgb3ByY29kZSA9PiAncmFuZ2VfYmVmb3JlX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdt dWx0aXJhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAnc2NhbGFybHRqb2luc2VsJyB9LAorICBvcHJq b2luID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIHsgb2lkID0+ICc0Mzk2Jywgb2lkX3N5bWJv bCA9PiAnT0lEX01VTFRJUkFOR0VfTEVGVF9SQU5HRV9PUCcsCiAgIGRlc2NyID0+ICdpcyBsZWZ0 IG9mJywKICAgb3BybmFtZSA9PiAnPDwnLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3By cmlnaHQgPT4gJ2FueXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc+ PihhbnlyYW5nZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfYmVm b3JlX3JhbmdlJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3Nj YWxhcmx0am9pbnNlbCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7 IG9pZCA9PiAnNDM5NycsIG9pZF9zeW1ib2wgPT4gJ09JRF9NVUxUSVJBTkdFX0xFRlRfTVVMVElS QU5HRV9PUCcsCiAgIGRlc2NyID0+ICdpcyBsZWZ0IG9mJywKICAgb3BybmFtZSA9PiAnPDwnLCBv cHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAog ICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJz4+KGFueW11bHRpcmFuZ2UsYW55bXVs dGlyYW5nZSknLAogICBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX2JlZm9yZV9tdWx0aXJhbmdlJywg b3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCi0gIG9wcmpvaW4gPT4gJ3NjYWxhcmx0am9pbnNl bCcgfSwKKyAgb3Byam9pbiA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnIH0sCiB7IG9pZCA9PiAnNDM5 OCcsIG9pZF9zeW1ib2wgPT4gJ09JRF9SQU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QJywKICAgZGVz Y3IgPT4gJ2lzIHJpZ2h0IG9mJywKICAgb3BybmFtZSA9PiAnPj4nLCBvcHJsZWZ0ID0+ICdhbnly YW5nZScsIG9wcnJpZ2h0ID0+ICdhbnltdWx0aXJhbmdlJywKICAgb3BycmVzdWx0ID0+ICdib29s Jywgb3ByY29tID0+ICc8PChhbnltdWx0aXJhbmdlLGFueXJhbmdlKScsCiAgIG9wcmNvZGUgPT4g J3JhbmdlX2FmdGVyX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0aXJhbmdlc2VsJywKLSAg b3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJqb2luID0+ICdtdWx0aXJhbmdl am9pbnNlbCcgfSwKIHsgb2lkID0+ICc0Mzk5Jywgb2lkX3N5bWJvbCA9PiAnT0lEX01VTFRJUkFO R0VfUklHSFRfUkFOR0VfT1AnLAogICBkZXNjciA9PiAnaXMgcmlnaHQgb2YnLAogICBvcHJuYW1l ID0+ICc+PicsIG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55cmFu Z2UnLAogICBvcHJyZXN1bHQgPT4gJ2Jvb2wnLCBvcHJjb20gPT4gJzw8KGFueXJhbmdlLGFueW11 bHRpcmFuZ2UpJywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9hZnRlcl9yYW5nZScsIG9wcnJl c3QgPT4gJ211bHRpcmFuZ2VzZWwnLAotICBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5zZWwnIH0s CisgIG9wcmpvaW4gPT4gJ211bHRpcmFuZ2Vqb2luc2VsJyB9LAogeyBvaWQgPT4gJzQ0MDAnLCBv aWRfc3ltYm9sID0+ICdPSURfTVVMVElSQU5HRV9SSUdIVF9NVUxUSVJBTkdFX09QJywKICAgZGVz Y3IgPT4gJ2lzIHJpZ2h0IG9mJywKICAgb3BybmFtZSA9PiAnPj4nLCBvcHJsZWZ0ID0+ICdhbnlt dWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBvcHJyZXN1bHQgPT4g J2Jvb2wnLCBvcHJjb20gPT4gJzw8KGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknLAogICBv cHJjb2RlID0+ICdtdWx0aXJhbmdlX2FmdGVyX211bHRpcmFuZ2UnLCBvcHJyZXN0ID0+ICdtdWx0 aXJhbmdlc2VsJywKLSAgb3Byam9pbiA9PiAnc2NhbGFyZ3Rqb2luc2VsJyB9LAorICBvcHJqb2lu ID0+ICdtdWx0aXJhbmdlam9pbnNlbCcgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggNjk5NjA3Mzk4OS4uZjY3MDMxOWIzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0x MjA0Myw0ICsxMjA0MywxMyBAQAogICBwcm9uYW1lID0+ICdhbnlfdmFsdWVfdHJhbnNmbicsIHBy b3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAogICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBh bnllbGVtZW50JywgcHJvc3JjID0+ICdhbnlfdmFsdWVfdHJhbnNmbicgfSwKIAoreyBvaWQgPT4g JzgzNTUnLCBkZXNjciA9PiAnam9pbiBzZWxlY3Rpdml0eSBmb3IgcmFuZ2Ugb3BlcmF0b3JzJywK KyAgcHJvbmFtZSA9PiAncmFuZ2Vqb2luc2VsJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0 eXBlID0+ICdmbG9hdDgnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgb2lkIGludGVybmFs IGludDIgaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ3Jhbmdlam9pbnNlbCcgfSwKK3sgb2lkID0+ ICc4MzU2JywgZGVzY3IgPT4gJ2pvaW4gc2VsZWN0aXZpdHkgZm9yIG11bHRpcmFuZ2Ugb3BlcmF0 b3JzJywKKyAgcHJvbmFtZSA9PiAnbXVsdGlyYW5nZWpvaW5zZWwnLCBwcm92b2xhdGlsZSA9PiAn cycsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBv aWQgaW50ZXJuYWwgaW50MiBpbnRlcm5hbCcsCisgIHByb3NyYyA9PiAnbXVsdGlyYW5nZWpvaW5z ZWwnIH0sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGly YW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVz Lm91dAppbmRleCBhMGNiODc1NDkyLi45ZDNkZjEzN2Y5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0CkBAIC0zMzYxLDMgKzMzNjEsMjc1IEBAIGNy ZWF0ZSBmdW5jdGlvbiBtcl90YWJsZV9mYWlsKGkgYW55ZWxlbWVudCkgcmV0dXJucyB0YWJsZShp IGFueWVsZW1lbnQsIHIgYW55bXVsCiAgIGFzICQkIHNlbGVjdCAkMSwgJ1sxLDEwXScgJCQgbGFu Z3VhZ2Ugc3FsOwogRVJST1I6ICBjYW5ub3QgZGV0ZXJtaW5lIHJlc3VsdCBkYXRhIHR5cGUKIERF VEFJTDogIEEgcmVzdWx0IG9mIHR5cGUgYW55bXVsdGlyYW5nZSByZXF1aXJlcyBhdCBsZWFzdCBv bmUgaW5wdXQgb2YgdHlwZSBhbnlyYW5nZSBvciBhbnltdWx0aXJhbmdlLgorLS0gdGVzdCBtdWx0 aXJhbmdlIGpvaW4gb3BlcmF0b3JzCitjcmVhdGUgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5f MShtcjEgaW50NG11bHRpcmFuZ2UpOworY3JlYXRlIHRhYmxlIHRlc3RfbXVsdGlyYW5nZV9qb2lu XzIobXIyIGludDRtdWx0aXJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X3JhbmdlX2pvaW4oaXIg aW50NHJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X2VsZW1fam9pbihlbGVtIGludDQpOworaW5z ZXJ0IGludG8gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSBzZWxlY3QgaW50NG11bHRpcmFuZ2UoaW50 NHJhbmdlKGcsIGcrMTApLGludDRyYW5nZShnKzIwLCBnKzMwKSxpbnQ0cmFuZ2UoZys0MCwgZys1 MCkpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9tdWx0 aXJhbmdlX2pvaW5fMSBzZWxlY3QgJ3t9Jzo6aW50NG11bHRpcmFuZ2UgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSw1MCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEgc2VsZWN0 IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShnLCBnKzEwMDAwKSkgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMDApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xIHNlbGVjdCBp bnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoTlVMTCwgZyoxMCwgJyhdJyksIGludDRyYW5nZShnKjEw LCBnKjIwLCAnKF0nKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRv IHRlc3RfbXVsdGlyYW5nZV9qb2luXzEgc2VsZWN0IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShn KjEwLCBnKjIwLCAnKF0nKSwgaW50NHJhbmdlKGcqMjAsIE5VTEwsICdbKScpKSBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDEwKSBnOworaW5zZXJ0IGludG8gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiBz ZWxlY3QgaW50NG11bHRpcmFuZ2UoaW50NHJhbmdlKGcsIGcrMTApLGludDRyYW5nZShnKzIwLCBn KzMwKSxpbnQ0cmFuZ2UoZys0MCwgZys1MCkpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7 CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHNlbGVjdCAne30nOjppbnQ0bXVs dGlyYW5nZSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGc7CitpbnNlcnQgaW50byB0ZXN0X211 bHRpcmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZywgZysxMDAw MCkpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRp cmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoTlVMTCwgZyoxMCwg JyhdJyksIGludDRyYW5nZShnKjEwLCBnKjIwLCAnKF0nKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgc2VsZWN0IGludDRt dWx0aXJhbmdlKGludDRyYW5nZShnKjEwLCBnKjIwLCAnKF0nKSwgaW50NHJhbmdlKGcqMjAsIE5V TEwsICdbKScpKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBnOworaW5zZXJ0IGludG8gdGVz dF9yYW5nZV9qb2luIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwyMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbiBzZWxlY3QgaW50NHJhbmdl KGcsIGcrMTAwMDApIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0 ZXN0X3JhbmdlX2pvaW4gc2VsZWN0IGludDRyYW5nZShOVUxMLGcqMTAsJyhdJykgZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbiBzZWxlY3Qg aW50NHJhbmdlKGcqMTAsTlVMTCwnWyknKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBnOwor aW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSwyMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbiBz ZWxlY3QgJ2VtcHR5Jzo6aW50NHJhbmdlIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7Citp bnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW4gc2VsZWN0IE5VTEwgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSw1KSBnOworaW5zZXJ0IGludG8gdGVzdF9lbGVtX2pvaW4gc2VsZWN0IGcgZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwyMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfZWxlbV9qb2luIHNlbGVjdCBn KzEwMDAwIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X2Vs ZW1fam9pbiBzZWxlY3QgZyoxMCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBnOworaW5zZXJ0 IGludG8gdGVzdF9lbGVtX2pvaW4gc2VsZWN0IGcgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyMCkg ZzsKK2luc2VydCBpbnRvIHRlc3RfZWxlbV9qb2luIHNlbGVjdCBOVUxMIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsNSkgZzsKK2FuYWx5emUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMTsKK2FuYWx5emUg dGVzdF9tdWx0aXJhbmdlX2pvaW5fMjsKK2FuYWx5emUgdGVzdF9yYW5nZV9qb2luOworYW5hbHl6 ZSB0ZXN0X2VsZW1fam9pbjsKK2NyZWF0ZSBmdW5jdGlvbiBjaGVja19lc3RpbWF0ZWRfcm93cyh0 ZXh0KSByZXR1cm5zIHRhYmxlIChlc3RpbWF0ZWQgaW50LCBhY3R1YWwgaW50KQorbGFuZ3VhZ2Ug cGxwZ3NxbCBhcworJCQKK2RlY2xhcmUKKyAgICBsbiB0ZXh0OworICAgIHRtcCB0ZXh0W107Cisg ICAgZmlyc3Rfcm93IGJvb2wgOj0gdHJ1ZTsKK2JlZ2luCisgICAgZm9yIGxuIGluCisgICAgICAg IGV4ZWN1dGUgZm9ybWF0KCdleHBsYWluIGFuYWx5emUgJXMnLCAkMSkKKyAgICBsb29wCisgICAg ICAgIGlmIGZpcnN0X3JvdyB0aGVuCisgICAgICAgICAgICBmaXJzdF9yb3cgOj0gZmFsc2U7Cisg ICAgICAgICAgICB0bXAgOj0gcmVnZXhwX21hdGNoKGxuLCAncm93cz0oXGQqKSAuKiByb3dzPShc ZCopJyk7CisgICAgICAgICAgICByZXR1cm4gcXVlcnkgc2VsZWN0IHRtcFsxXTo6aW50LCB0bXBb Ml06OmludDsKKyAgICAgICAgZW5kIGlmOworICAgIGVuZCBsb29wOworZW5kOworJCQ7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0 aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBtcjEgPSBtcjInKTsK KyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgICA1NSB8 ICAgIDMwMAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcK K3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pv aW5fMiB3aGVyZSBtcjEgPCBtcjInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0t LSstLS0tLS0tLQorICAgICAgNDU3OSB8ICAgNDU5OAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pv aW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBtcjEgPD0gbXIyJyk7CisgZXN0aW1h dGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDQ4MjkgfCAgIDQ4OTgK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3Qg KiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hl cmUgbXIxID4gbXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0KKyAgICAgMTU1MjEgfCAgMTU0NTIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19l c3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRl c3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgbXIxID49IG1yMicpOworIGVzdGltYXRlZCB8IGFj dHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgIDE1NzcxIHwgIDE1NzUyCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0 ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIG1yMSAm JiBtcjInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAg ICAxMTA5OCB8ICAxMDkzMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRl ZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9yYW5n ZV9qb2luIHdoZXJlIG1yMSAmJiBpcicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tCisgICAgICA5NjExIHwgICA5NDcxCisoMSByb3cpCisKK1NFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW4s IHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgaXIgJiYgbXIyJyk7CisgZXN0aW1hdGVkIHwg YWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDI5MjQgfCAgIDI4NTEKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9t IHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgbXIx IDxAIG1yMicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisg ICAgICA4NDkxIHwgICA3MzkzCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X3Jh bmdlX2pvaW4gd2hlcmUgbXIxIDxAIGlyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0KKyAgICAgIDk3NTQgfCAgIDg2MjEKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9p biwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBpciA8QCBtcjInKTsKKyBlc3RpbWF0ZWQg fCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgMjY2MCB8ICAgMTk4NworKDEg cm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZy b20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBt cjEgQD4gbXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0K KyAgICAgIDMxMDUgfCAgIDIzNjEKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3Rp bWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3Rf cmFuZ2Vfam9pbiB3aGVyZSBtcjEgQD4gaXInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0t LS0tLS0tLSstLS0tLS0tLQorICAgICAgOTQxOCB8ICAgODM5NworKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9q b2luLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIGlyIEA+IG1yMicpOworIGVzdGltYXRl ZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAxMTc3IHwgICAgODAwCiso MSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICog ZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJl IG1yMSA8PCBtcjInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0t LQorICAgICAgIDE1MiB8ICAgIDE4MQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2Vz dGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVz dF9yYW5nZV9qb2luIHdoZXJlIG1yMSA8PCBpcicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAgMTQ1IHwgICAgMTcwCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3Jhbmdl X2pvaW4sIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgaXIgPDwgbXIyJyk7CisgZXN0aW1h dGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgICA0NzggfCAgICA1MTkK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3Qg KiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hl cmUgbXIxID4+IG1yMicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tCisgICAgICA0NzUwIHwgICA0ODM3CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0 ZXN0X3JhbmdlX2pvaW4gd2hlcmUgbXIxID4+IGlyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgMTI2NDQgfCAgMTI3MzkKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFu Z2Vfam9pbiwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBpciA+PiBtcjInKTsKKyBlc3Rp bWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgICA5OCB8ICAgIDEx MAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVj dCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3 aGVyZSBtcjEgJjwgbXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0KKyAgICAgIDYzMzcgfCAgIDYzMTgKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVj a19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEs IHRlc3RfcmFuZ2Vfam9pbiB3aGVyZSBtcjEgJjwgaXInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwg CistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgNTU4MSB8ICAgNTU1NgorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9y YW5nZV9qb2luLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIGlyICY8IG1yMicpOworIGVz dGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAxOTg2IHwgICAy NjI3CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2Vs ZWN0ICogZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8y IHdoZXJlIG1yMSAmPiBtcjInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSst LS0tLS0tLQorICAgICAxMzkyMSB8ICAxMzk3NgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5f MSwgdGVzdF9yYW5nZV9qb2luIHdoZXJlIG1yMSAmPiBpcicpOworIGVzdGltYXRlZCB8IGFjdHVh bCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgIDE5NzEyIHwgIDE5ODA3CisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0 X3JhbmdlX2pvaW4sIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgaXIgJj4gbXIyJyk7Cisg ZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDE4MTkgfCAg IDE4OTUKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitz ZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2lu XzIgd2hlcmUgbXIxIC18LSBtcjInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0t LSstLS0tLS0tLQorICAgICAgIDE2MCB8ICAgICA3MQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pv aW5fMSwgdGVzdF9yYW5nZV9qb2luIHdoZXJlIG1yMSAtfC0gaXInKTsKKyBlc3RpbWF0ZWQgfCBh Y3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgIDIyNCB8ICAgIDExOAorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20g dGVzdF9yYW5nZV9qb2luLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIGlyIC18LSBtcjIn KTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgICAz NSB8ICAgICAzNworKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dz KCcKK3NlbGVjdCAqIGZyb20gdGVzdF9lbGVtX2pvaW4sIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEg d2hlcmUgZWxlbSA8QCBtcjEnKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSst LS0tLS0tLQorICAgICAgIDEyMCB8ICAgMzExMAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5f MSwgdGVzdF9lbGVtX2pvaW4gd2hlcmUgbXIxIEA+IGVsZW0nKTsKKyBlc3RpbWF0ZWQgfCBhY3R1 YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgIDEyMCB8ICAgMzExMAorKDEgcm93KQor Citkcm9wIGZ1bmN0aW9uIGNoZWNrX2VzdGltYXRlZF9yb3dzOworZHJvcCB0YWJsZSB0ZXN0X211 bHRpcmFuZ2Vfam9pbl8xOworZHJvcCB0YWJsZSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yOworZHJv cCB0YWJsZSB0ZXN0X3JhbmdlX2pvaW47Citkcm9wIHRhYmxlIHRlc3RfZWxlbV9qb2luOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKaW5kZXggZWUwMmZmMDE2My4uOWEz NGZlNWUxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0CkBAIC0x ODM0LDMgKzE4MzQsMTU3IEBAIGNyZWF0ZSBmdW5jdGlvbiB0YWJsZV9mYWlsKGkgYW55ZWxlbWVu dCkgcmV0dXJucyB0YWJsZShpIGFueWVsZW1lbnQsIHIgYW55cmFuZ2UpCiAgIGFzICQkIHNlbGVj dCAkMSwgJ1sxLDEwXScgJCQgbGFuZ3VhZ2Ugc3FsOwogRVJST1I6ICBjYW5ub3QgZGV0ZXJtaW5l IHJlc3VsdCBkYXRhIHR5cGUKIERFVEFJTDogIEEgcmVzdWx0IG9mIHR5cGUgYW55cmFuZ2UgcmVx dWlyZXMgYXQgbGVhc3Qgb25lIGlucHV0IG9mIHR5cGUgYW55cmFuZ2Ugb3IgYW55bXVsdGlyYW5n ZS4KKy0tIHRlc3QgcmFuZ2Ugam9pbiBvcGVyYXRvcnMKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Jhbmdl X2pvaW5fMShpcjEgaW50NHJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X3JhbmdlX2pvaW5fMihp cjIgaW50NHJhbmdlKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X2VsZW1fam9pbihlbGVtIGludDQpOwor aW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzEgc2VsZWN0IGludDRyYW5nZShnLCBnKzEwKSBm cm9tIGdlbmVyYXRlX3NlcmllcygxLDIwMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9p bl8xIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMDAwMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgaW50NHJhbmdlKE5V TEwsZyoxMCwnKF0nKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBnOworaW5zZXJ0IGludG8g dGVzdF9yYW5nZV9qb2luXzEgc2VsZWN0IGludDRyYW5nZShnKjEwLE5VTEwsJ1spJykgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8xIHNl bGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyMDApIGc7Citp bnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgJ2VtcHR5Jzo6aW50NHJhbmdlIGZy b20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5f MSBzZWxlY3QgTlVMTCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUwKSBnOworaW5zZXJ0IGludG8g dGVzdF9yYW5nZV9qb2luXzIgc2VsZWN0IGludDRyYW5nZShnKzEwLCBnKzIwKSBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDIwKSBnOworaW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzIgc2VsZWN0 IGludDRyYW5nZShnKzUwMDAsIGcrMTUwMDApIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7 CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMiBzZWxlY3QgaW50NHJhbmdlKE5VTEwsZyo1 LCcoXScpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X3Jh bmdlX2pvaW5fMiBzZWxlY3QgaW50NHJhbmdlKGcqNSxOVUxMLCdbKScpIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMiBzZWxlY3QgaW50 NHJhbmdlKGcsIGcrMTApIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50 byB0ZXN0X3JhbmdlX2pvaW5fMiBzZWxlY3QgJ2VtcHR5Jzo6aW50NHJhbmdlIGZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsNSkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8yIHNlbGVjdCBO VUxMIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgZzsKK2luc2VydCBpbnRvIHRlc3RfZWxlbV9q b2luIHNlbGVjdCBnIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0 ZXN0X2VsZW1fam9pbiBzZWxlY3QgZysxMDAwMCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBn OworaW5zZXJ0IGludG8gdGVzdF9lbGVtX2pvaW4gc2VsZWN0IGcqMTAgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfZWxlbV9qb2luIHNlbGVjdCBnIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0ZXN0X2VsZW1fam9pbiBzZWxl Y3QgTlVMTCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGc7CithbmFseXplIHRlc3RfcmFuZ2Vf am9pbl8xOworYW5hbHl6ZSB0ZXN0X3JhbmdlX2pvaW5fMjsKK2FuYWx5emUgdGVzdF9lbGVtX2pv aW47CitjcmVhdGUgZnVuY3Rpb24gY2hlY2tfZXN0aW1hdGVkX3Jvd3ModGV4dCkgcmV0dXJucyB0 YWJsZSAoZXN0aW1hdGVkIGludCwgYWN0dWFsIGludCkKK2xhbmd1YWdlIHBscGdzcWwgYXMKKyQk CitkZWNsYXJlCisgICAgbG4gdGV4dDsKKyAgICB0bXAgdGV4dFtdOworICAgIGZpcnN0X3JvdyBi b29sIDo9IHRydWU7CitiZWdpbgorICAgIGZvciBsbiBpbgorICAgICAgICBleGVjdXRlIGZvcm1h dCgnZXhwbGFpbiBhbmFseXplICVzJywgJDEpCisgICAgbG9vcAorICAgICAgICBpZiBmaXJzdF9y b3cgdGhlbgorICAgICAgICAgICAgZmlyc3Rfcm93IDo9IGZhbHNlOworICAgICAgICAgICAgdG1w IDo9IHJlZ2V4cF9tYXRjaChsbiwgJ3Jvd3M9KFxkKikgLiogcm93cz0oXGQqKScpOworICAgICAg ICAgICAgcmV0dXJuIHF1ZXJ5IHNlbGVjdCB0bXBbMV06OmludCwgdG1wWzJdOjppbnQ7CisgICAg ICAgIGVuZCBpZjsKKyAgICBlbmQgbG9vcDsKK2VuZDsKKyQkOworU0VMRUNUICogRlJPTSBjaGVj a19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0 X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgPSBpcjInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCist LS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgICA3NSB8ICAgIDE5MAorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5n ZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9pbl8yIHdoZXJlIGlyMSA8IGlyMicpOworIGVzdGltYXRl ZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICA5ODg2IHwgICA5NzQ1Ciso MSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICog ZnJvbSB0ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9qb2luXzIgd2hlcmUgaXIxIDw9IGly MicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICA5 OTg2IHwgICA5OTM1CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jv d3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9qb2luXzIg d2hlcmUgaXIxID4gaXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0KKyAgICAgMzA1MTQgfCAgMzA1NjUKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVj a19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0 X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgPj0gaXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgMzA2MTQgfCAgMzA3NTUKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFu Z2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgJiYgaXIyJyk7CisgZXN0aW1h dGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDk5NjYgfCAgIDk3MjAK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3Qg KiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgPEAg aXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAg MTA5NzUgfCAgIDYyNjgKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5f MiB3aGVyZSBpcjEgQD4gaXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0r LS0tLS0tLS0KKyAgICAgIDgzNzkgfCAgIDM5NzMKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBj aGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0 ZXN0X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgPDwgaXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFs IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDUwMzQgfCAgIDUwNTAKKygxIHJvdykKKwor U0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3Rf cmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgPj4gaXIyJyk7CisgZXN0 aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgMjE0MDAgfCAgMjE2 MzAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxl Y3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEg JjwgaXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAg ICAgMTIwMzkgfCAgMTIwMjMKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pv aW5fMiB3aGVyZSBpcjEgJj4gaXIyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0t LS0rLS0tLS0tLS0KKyAgICAgMjc5MTQgfCAgMjgxMDUKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8x LCB0ZXN0X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgLXwtIGlyMicpOworIGVzdGltYXRlZCB8IGFj dHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAgMzY0IHwgICAgMjMzCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0 ZXN0X2VsZW1fam9pbiwgdGVzdF9yYW5nZV9qb2luXzEgd2hlcmUgZWxlbSA8QCBpcjEnKTsKKyBl c3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAgICAgIDE5MiB8ICAg MzM0OQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3Nl bGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRlc3RfZWxlbV9qb2luIHdoZXJlIGlyMSBA PiBlbGVtJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAg ICAgICAxOTIgfCAgIDMzNDkKKygxIHJvdykKKworZHJvcCBmdW5jdGlvbiBjaGVja19lc3RpbWF0 ZWRfcm93czsKK2Ryb3AgdGFibGUgdGVzdF9yYW5nZV9qb2luXzE7Citkcm9wIHRhYmxlIHRlc3Rf cmFuZ2Vfam9pbl8yOworZHJvcCB0YWJsZSB0ZXN0X2VsZW1fam9pbjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsCmluZGV4IGZlZmI0YjRkNDIuLmMxYzg1YzYzYjYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbApAQCAtODYxLDMgKzg2MSwx NjAgQEAgY3JlYXRlIGZ1bmN0aW9uIG1yX2lub3V0cGFyYW1fZmFpbChpbm91dCBpIGFueWVsZW1l bnQsIG91dCByIGFueW11bHRpcmFuZ2UpCiAtLXNob3VsZCBmYWlsCiBjcmVhdGUgZnVuY3Rpb24g bXJfdGFibGVfZmFpbChpIGFueWVsZW1lbnQpIHJldHVybnMgdGFibGUoaSBhbnllbGVtZW50LCBy IGFueW11bHRpcmFuZ2UpCiAgIGFzICQkIHNlbGVjdCAkMSwgJ1sxLDEwXScgJCQgbGFuZ3VhZ2Ug c3FsOworCistLSB0ZXN0IG11bHRpcmFuZ2Ugam9pbiBvcGVyYXRvcnMKK2NyZWF0ZSB0YWJsZSB0 ZXN0X211bHRpcmFuZ2Vfam9pbl8xKG1yMSBpbnQ0bXVsdGlyYW5nZSk7CitjcmVhdGUgdGFibGUg dGVzdF9tdWx0aXJhbmdlX2pvaW5fMihtcjIgaW50NG11bHRpcmFuZ2UpOworY3JlYXRlIHRhYmxl IHRlc3RfcmFuZ2Vfam9pbihpciBpbnQ0cmFuZ2UpOworY3JlYXRlIHRhYmxlIHRlc3RfZWxlbV9q b2luKGVsZW0gaW50NCk7CisKK2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEgc2Vs ZWN0IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShnLCBnKzEwKSxpbnQ0cmFuZ2UoZysyMCwgZysz MCksaW50NHJhbmdlKGcrNDAsIGcrNTApKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDIwMCkgZzsK K2luc2VydCBpbnRvIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEgc2VsZWN0ICd7fSc6OmludDRtdWx0 aXJhbmdlIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNTApIGc7CitpbnNlcnQgaW50byB0ZXN0X211 bHRpcmFuZ2Vfam9pbl8xIHNlbGVjdCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZywgZysxMDAw MCkpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnOworaW5zZXJ0IGludG8gdGVzdF9tdWx0 aXJhbmdlX2pvaW5fMSBzZWxlY3QgaW50NG11bHRpcmFuZ2UoaW50NHJhbmdlKE5VTEwsIGcqMTAs ICcoXScpLCBpbnQ0cmFuZ2UoZyoxMCwgZyoyMCwgJyhdJykpIGZyb20gZ2VuZXJhdGVfc2VyaWVz KDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xIHNlbGVjdCBpbnQ0 bXVsdGlyYW5nZShpbnQ0cmFuZ2UoZyoxMCwgZyoyMCwgJyhdJyksIGludDRyYW5nZShnKjIwLCBO VUxMLCAnWyknKSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgZzsKKworaW5zZXJ0IGludG8g dGVzdF9tdWx0aXJhbmdlX2pvaW5fMiBzZWxlY3QgaW50NG11bHRpcmFuZ2UoaW50NHJhbmdlKGcs IGcrMTApLGludDRyYW5nZShnKzIwLCBnKzMwKSxpbnQ0cmFuZ2UoZys0MCwgZys1MCkpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9p bl8yIHNlbGVjdCAne30nOjppbnQ0bXVsdGlyYW5nZSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUp IGc7CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0bXVsdGly YW5nZShpbnQ0cmFuZ2UoZywgZysxMDAwMCkpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7 CitpbnNlcnQgaW50byB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0bXVsdGlyYW5n ZShpbnQ0cmFuZ2UoTlVMTCwgZyoxMCwgJyhdJyksIGludDRyYW5nZShnKjEwLCBnKjIwLCAnKF0n KSkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfbXVsdGly YW5nZV9qb2luXzIgc2VsZWN0IGludDRtdWx0aXJhbmdlKGludDRyYW5nZShnKjEwLCBnKjIwLCAn KF0nKSwgaW50NHJhbmdlKGcqMjAsIE5VTEwsICdbKScpKSBmcm9tIGdlbmVyYXRlX3Nlcmllcygx LDEwKSBnOworCitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW4gc2VsZWN0IGludDRyYW5nZShn LCBnKzEwKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDIwKSBnOworaW5zZXJ0IGludG8gdGVzdF9y YW5nZV9qb2luIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMDAwMCkgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbiBzZWxlY3QgaW50NHJhbmdl KE5VTEwsZyoxMCwnKF0nKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBnOworaW5zZXJ0IGlu dG8gdGVzdF9yYW5nZV9qb2luIHNlbGVjdCBpbnQ0cmFuZ2UoZyoxMCxOVUxMLCdbKScpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW4gc2Vs ZWN0IGludDRyYW5nZShnLCBnKzEwKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDIwKSBnOworaW5z ZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luIHNlbGVjdCAnZW1wdHknOjppbnQ0cmFuZ2UgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwyMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbiBzZWxl Y3QgTlVMTCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGc7CisKK2luc2VydCBpbnRvIHRlc3Rf ZWxlbV9qb2luIHNlbGVjdCBnIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQg aW50byB0ZXN0X2VsZW1fam9pbiBzZWxlY3QgZysxMDAwMCBmcm9tIGdlbmVyYXRlX3Nlcmllcygx LDEwKSBnOworaW5zZXJ0IGludG8gdGVzdF9lbGVtX2pvaW4gc2VsZWN0IGcqMTAgZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfZWxlbV9qb2luIHNlbGVjdCBn IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0ZXN0X2VsZW1fam9p biBzZWxlY3QgTlVMTCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGc7CisKK2FuYWx5emUgdGVz dF9tdWx0aXJhbmdlX2pvaW5fMTsKK2FuYWx5emUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMjsKK2Fu YWx5emUgdGVzdF9yYW5nZV9qb2luOworYW5hbHl6ZSB0ZXN0X2VsZW1fam9pbjsKKworY3JlYXRl IGZ1bmN0aW9uIGNoZWNrX2VzdGltYXRlZF9yb3dzKHRleHQpIHJldHVybnMgdGFibGUgKGVzdGlt YXRlZCBpbnQsIGFjdHVhbCBpbnQpCitsYW5ndWFnZSBwbHBnc3FsIGFzCiskJAorZGVjbGFyZQor ICAgIGxuIHRleHQ7CisgICAgdG1wIHRleHRbXTsKKyAgICBmaXJzdF9yb3cgYm9vbCA6PSB0cnVl OworYmVnaW4KKyAgICBmb3IgbG4gaW4KKyAgICAgICAgZXhlY3V0ZSBmb3JtYXQoJ2V4cGxhaW4g YW5hbHl6ZSAlcycsICQxKQorICAgIGxvb3AKKyAgICAgICAgaWYgZmlyc3Rfcm93IHRoZW4KKyAg ICAgICAgICAgIGZpcnN0X3JvdyA6PSBmYWxzZTsKKyAgICAgICAgICAgIHRtcCA6PSByZWdleHBf bWF0Y2gobG4sICdyb3dzPShcZCopIC4qIHJvd3M9KFxkKiknKTsKKyAgICAgICAgICAgIHJldHVy biBxdWVyeSBzZWxlY3QgdG1wWzFdOjppbnQsIHRtcFsyXTo6aW50OworICAgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CitlbmQ7CiskJDsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVs dGlyYW5nZV9qb2luXzIgd2hlcmUgbXIxID0gbXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0 ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIG1yMSA8IG1yMicpOworCitTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pv aW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBtcjEgPD0gbXIyJyk7CisKK1NFTEVD VCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X211bHRp cmFuZ2Vfam9pbl8xLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIG1yMSA+IG1yMicpOwor CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVz dF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBtcjEgPj0g bXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICog ZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJl IG1yMSAmJiBtcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitz ZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9pbiB3aGVy ZSBtcjEgJiYgaXInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitz ZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbiwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVy ZSBpciAmJiBtcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitz ZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2lu XzIgd2hlcmUgbXIxIDxAIG1yMicpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9y b3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9q b2luIHdoZXJlIG1yMSA8QCBpcicpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9y b3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luLCB0ZXN0X211bHRpcmFuZ2Vfam9p bl8yIHdoZXJlIGlyIDxAIG1yMicpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9y b3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJhbmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJh bmdlX2pvaW5fMiB3aGVyZSBtcjEgQD4gbXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0 aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0 X3JhbmdlX2pvaW4gd2hlcmUgbXIxIEA+IGlyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0 aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW4sIHRlc3RfbXVsdGly YW5nZV9qb2luXzIgd2hlcmUgaXIgQD4gbXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0 aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0 X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIG1yMSA8PCBtcjInKTsKKworU0VMRUNUICogRlJPTSBj aGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2lu XzEsIHRlc3RfcmFuZ2Vfam9pbiB3aGVyZSBtcjEgPDwgaXInKTsKKworU0VMRUNUICogRlJPTSBj aGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbiwgdGVz dF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBpciA8PCBtcjInKTsKKworU0VMRUNUICogRlJPTSBj aGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2lu XzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgbXIxID4+IG1yMicpOworCitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJh bmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9qb2luIHdoZXJlIG1yMSA+PiBpcicpOworCitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9q b2luLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIGlyID4+IG1yMicpOworCitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9tdWx0aXJh bmdlX2pvaW5fMSwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBtcjEgJjwgbXIyJyk7CisK K1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0 X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW4gd2hlcmUgbXIxICY8IGlyJyk7CisK K1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0 X3JhbmdlX2pvaW4sIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUgaXIgJjwgbXIyJyk7CisK K1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0 X211bHRpcmFuZ2Vfam9pbl8xLCB0ZXN0X211bHRpcmFuZ2Vfam9pbl8yIHdoZXJlIG1yMSAmPiBt cjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBm cm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9pbiB3aGVyZSBtcjEgJj4g aXInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBm cm9tIHRlc3RfcmFuZ2Vfam9pbiwgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMiB3aGVyZSBpciAmPiBt cjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBm cm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hlcmUg bXIxIC18LSBtcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnCitz ZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9pbiB3aGVy ZSBtcjEgLXwtIGlyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJwor c2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW4sIHRlc3RfbXVsdGlyYW5nZV9qb2luXzIgd2hl cmUgaXIgLXwtIG1yMicpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcK K3NlbGVjdCAqIGZyb20gdGVzdF9lbGVtX2pvaW4sIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEgd2hl cmUgZWxlbSA8QCBtcjEnKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygn CitzZWxlY3QgKiBmcm9tIHRlc3RfbXVsdGlyYW5nZV9qb2luXzEsIHRlc3RfZWxlbV9qb2luIHdo ZXJlIG1yMSBAPiBlbGVtJyk7CisKK2Ryb3AgZnVuY3Rpb24gY2hlY2tfZXN0aW1hdGVkX3Jvd3M7 CisKK2Ryb3AgdGFibGUgdGVzdF9tdWx0aXJhbmdlX2pvaW5fMTsKK2Ryb3AgdGFibGUgdGVzdF9t dWx0aXJhbmdlX2pvaW5fMjsKK2Ryb3AgdGFibGUgdGVzdF9yYW5nZV9qb2luOworZHJvcCB0YWJs ZSB0ZXN0X2VsZW1fam9pbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jhbmdl dHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKaW5kZXggYzIz YmU5MjhjMy4uYzAyYWU3Yzc5ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFu Z2V0eXBlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKQEAg LTYyOSwzICs2MjksMTA1IEBAIGNyZWF0ZSBmdW5jdGlvbiBpbm91dHBhcmFtX2ZhaWwoaW5vdXQg aSBhbnllbGVtZW50LCBvdXQgciBhbnlyYW5nZSkKIC0tc2hvdWxkIGZhaWwKIGNyZWF0ZSBmdW5j dGlvbiB0YWJsZV9mYWlsKGkgYW55ZWxlbWVudCkgcmV0dXJucyB0YWJsZShpIGFueWVsZW1lbnQs IHIgYW55cmFuZ2UpCiAgIGFzICQkIHNlbGVjdCAkMSwgJ1sxLDEwXScgJCQgbGFuZ3VhZ2Ugc3Fs OworCistLSB0ZXN0IHJhbmdlIGpvaW4gb3BlcmF0b3JzCitjcmVhdGUgdGFibGUgdGVzdF9yYW5n ZV9qb2luXzEoaXIxIGludDRyYW5nZSk7CitjcmVhdGUgdGFibGUgdGVzdF9yYW5nZV9qb2luXzIo aXIyIGludDRyYW5nZSk7CitjcmVhdGUgdGFibGUgdGVzdF9lbGVtX2pvaW4oZWxlbSBpbnQ0KTsK KworaW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzEgc2VsZWN0IGludDRyYW5nZShnLCBnKzEw KSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDIwMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vf am9pbl8xIHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMDAwMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwxMDApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgaW50NHJhbmdl KE5VTEwsZyoxMCwnKF0nKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBnOworaW5zZXJ0IGlu dG8gdGVzdF9yYW5nZV9qb2luXzEgc2VsZWN0IGludDRyYW5nZShnKjEwLE5VTEwsJ1spJykgZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8x IHNlbGVjdCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyMDApIGc7 CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMSBzZWxlY3QgJ2VtcHR5Jzo6aW50NHJhbmdl IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pv aW5fMSBzZWxlY3QgTlVMTCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUwKSBnOworCitpbnNlcnQg aW50byB0ZXN0X3JhbmdlX2pvaW5fMiBzZWxlY3QgaW50NHJhbmdlKGcrMTAsIGcrMjApIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMjApIGc7CitpbnNlcnQgaW50byB0ZXN0X3JhbmdlX2pvaW5fMiBz ZWxlY3QgaW50NHJhbmdlKGcrNTAwMCwgZysxNTAwMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx MCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0cmFuZ2UoTlVM TCxnKjUsJyhdJykgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRl c3RfcmFuZ2Vfam9pbl8yIHNlbGVjdCBpbnQ0cmFuZ2UoZyo1LE5VTEwsJ1spJykgZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8yIHNlbGVj dCBpbnQ0cmFuZ2UoZywgZysxMCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyMCkgZzsKK2luc2Vy dCBpbnRvIHRlc3RfcmFuZ2Vfam9pbl8yIHNlbGVjdCAnZW1wdHknOjppbnQ0cmFuZ2UgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSw1KSBnOworaW5zZXJ0IGludG8gdGVzdF9yYW5nZV9qb2luXzIgc2Vs ZWN0IE5VTEwgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBnOworCitpbnNlcnQgaW50byB0ZXN0 X2VsZW1fam9pbiBzZWxlY3QgZyBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDIwKSBnOworaW5zZXJ0 IGludG8gdGVzdF9lbGVtX2pvaW4gc2VsZWN0IGcrMTAwMDAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwxMCkgZzsKK2luc2VydCBpbnRvIHRlc3RfZWxlbV9qb2luIHNlbGVjdCBnKjEwIGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIGc7CitpbnNlcnQgaW50byB0ZXN0X2VsZW1fam9pbiBzZWxlY3Qg ZyBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDIwKSBnOworaW5zZXJ0IGludG8gdGVzdF9lbGVtX2pv aW4gc2VsZWN0IE5VTEwgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBnOworCithbmFseXplIHRl c3RfcmFuZ2Vfam9pbl8xOworYW5hbHl6ZSB0ZXN0X3JhbmdlX2pvaW5fMjsKK2FuYWx5emUgdGVz dF9lbGVtX2pvaW47CisKK2NyZWF0ZSBmdW5jdGlvbiBjaGVja19lc3RpbWF0ZWRfcm93cyh0ZXh0 KSByZXR1cm5zIHRhYmxlIChlc3RpbWF0ZWQgaW50LCBhY3R1YWwgaW50KQorbGFuZ3VhZ2UgcGxw Z3NxbCBhcworJCQKK2RlY2xhcmUKKyAgICBsbiB0ZXh0OworICAgIHRtcCB0ZXh0W107CisgICAg Zmlyc3Rfcm93IGJvb2wgOj0gdHJ1ZTsKK2JlZ2luCisgICAgZm9yIGxuIGluCisgICAgICAgIGV4 ZWN1dGUgZm9ybWF0KCdleHBsYWluIGFuYWx5emUgJXMnLCAkMSkKKyAgICBsb29wCisgICAgICAg IGlmIGZpcnN0X3JvdyB0aGVuCisgICAgICAgICAgICBmaXJzdF9yb3cgOj0gZmFsc2U7CisgICAg ICAgICAgICB0bXAgOj0gcmVnZXhwX21hdGNoKGxuLCAncm93cz0oXGQqKSAuKiByb3dzPShcZCop Jyk7CisgICAgICAgICAgICByZXR1cm4gcXVlcnkgc2VsZWN0IHRtcFsxXTo6aW50LCB0bXBbMl06 OmludDsKKyAgICAgICAgZW5kIGlmOworICAgIGVuZCBsb29wOworZW5kOworJCQ7CisKK1NFTEVD VCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3Jhbmdl X2pvaW5fMSwgdGVzdF9yYW5nZV9qb2luXzIgd2hlcmUgaXIxID0gaXIyJyk7CisKK1NFTEVDVCAq IEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pv aW5fMSwgdGVzdF9yYW5nZV9qb2luXzIgd2hlcmUgaXIxIDwgaXIyJyk7CisKK1NFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW5f MSwgdGVzdF9yYW5nZV9qb2luXzIgd2hlcmUgaXIxIDw9IGlyMicpOworCitTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luXzEs IHRlc3RfcmFuZ2Vfam9pbl8yIHdoZXJlIGlyMSA+IGlyMicpOworCitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2VzdGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRl c3RfcmFuZ2Vfam9pbl8yIHdoZXJlIGlyMSA+PSBpcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVj a19lc3RpbWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0 X3JhbmdlX2pvaW5fMiB3aGVyZSBpcjEgJiYgaXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9y YW5nZV9qb2luXzIgd2hlcmUgaXIxIDxAIGlyMicpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2Vz dGltYXRlZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRlc3RfcmFu Z2Vfam9pbl8yIHdoZXJlIGlyMSBAPiBpcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3Rp bWF0ZWRfcm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3Jhbmdl X2pvaW5fMiB3aGVyZSBpcjEgPDwgaXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9q b2luXzIgd2hlcmUgaXIxID4+IGlyMicpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRl ZF9yb3dzKCcKK3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRlc3RfcmFuZ2Vfam9p bl8yIHdoZXJlIGlyMSAmPCBpcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfcmFuZ2Vfam9pbl8xLCB0ZXN0X3JhbmdlX2pvaW5f MiB3aGVyZSBpcjEgJj4gaXIyJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jv d3MoJworc2VsZWN0ICogZnJvbSB0ZXN0X3JhbmdlX2pvaW5fMSwgdGVzdF9yYW5nZV9qb2luXzIg d2hlcmUgaXIxIC18LSBpcjInKTsKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnCitzZWxlY3QgKiBmcm9tIHRlc3RfZWxlbV9qb2luLCB0ZXN0X3JhbmdlX2pvaW5fMSB3aGVy ZSBlbGVtIDxAIGlyMScpOworCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCcK K3NlbGVjdCAqIGZyb20gdGVzdF9yYW5nZV9qb2luXzEsIHRlc3RfZWxlbV9qb2luIHdoZXJlIGly MSBAPiBlbGVtJyk7CisKK2Ryb3AgZnVuY3Rpb24gY2hlY2tfZXN0aW1hdGVkX3Jvd3M7CisKK2Ry b3AgdGFibGUgdGVzdF9yYW5nZV9qb2luXzE7Citkcm9wIHRhYmxlIHRlc3RfcmFuZ2Vfam9pbl8y OworZHJvcCB0YWJsZSB0ZXN0X2VsZW1fam9pbjsK --_002_4c443cf696af0953fd5bbd2b5c0c6f00ulbbe_--