From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2131.outbound.protection.outlook.com [40.107.255.131]) by sourceware.org (Postfix) with ESMTPS id 1D66E3857736 for ; Mon, 15 May 2023 13:51:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1D66E3857736 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c/D7gb5o+E4IkHmSPJw2hN9fBEFTg0xqVQec5uXyt2E3tTx5K48/08N7YdwLmSy1Bu8O/V70A72BOnNnelHLJNOYVYKUbUjS/7um6pCAFJmV/CevSZXthPnwEkz4IK9jcLmavxLtH9STFykulI6E0b/7ZSiNusxA+Ki19cKHeO7GfniK0NKShN7pLhMoycMqrWw49MIKO36s1NZcqfna0CuDMAK3+BlYUc9C7bCRJkqCgtHNyc1SNAiniRdWCXF3qrarevCqtLOVLavx4WegBq0wa73iEWBuEd9+6N3zukpU+W0FRcxPPMauoMbdlcqWTE4gtcHlhwSYsVKX4dkzgQ== 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=Kzic1GvRofGqP6cdQ+GcCOGgLruE0yyoGyRrUy7KdWE=; b=ODK3UEIhBNC19yLvwLKSPCiqg/RPilrVbiuudmSYG1Gpiu/Ef/Fgr6SdbpK8u7XERVt0KQPuzsz6Sru0EqCkbvBcT+5zCO2LqRjDcdS0gRgQq07onT8fzQ4A3QlU2pn/7og4gC8kauSCbQFlRgoLsXevz/pFoVAY9ld44WS8d9q0v1bgmy/A0lFhbv4EkLyKYUTHchU370r2YA/tr0wSikgbAxnS8GKc5u8B3B5pON7bX0TEkoKgV1NzaP9D2AXX+BE6l9aI2TzojhBOCEZTQ0pNCq4vytnfzBkQs1Sh8py7ioNk262KpQzGuOj0RlY8ih0o4Pq8avPd/TlDD7YbUA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Kzic1GvRofGqP6cdQ+GcCOGgLruE0yyoGyRrUy7KdWE=; b=hnHuS/0wOb0ZrD0OC/lHi3351LVPYpn+y3wrNiOsKrg4plw2g+e33sBMQrawlB7EqM44XKu+nb2nfclmItEVJZZ82fHHpy2RtoPQ5kYCk+f2L3bhiIdV/NsETlX5LfN0EmyoI0ocb+nW7F5EDBd2XlRjuZ47LSJnAK63TnTFoeY= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by TYZPR04MB6150.apcprd04.prod.outlook.com (2603:1096:400:25c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.30; Mon, 15 May 2023 13:50:59 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5%7]) with mapi id 15.20.6387.026; Mon, 15 May 2023 13:50:59 +0000 From: Alexey Lapshin To: "jcmvbkbc@gmail.com" CC: Alexey Gerenkov , "newlib@sourceware.org" , Ivan Grokhotkov Subject: [PATCH, RFC v2 4/8] libc: add xtensa port Thread-Topic: [PATCH, RFC v2 4/8] libc: add xtensa port Thread-Index: AQHZhzRH6X1gVPWNx0a5MhB8hTVEXw== Date: Mon, 15 May 2023 13:50:59 +0000 Message-ID: <98f6055603d59cb6cd194d668e2b914e559a94bd.camel@espressif.com> References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> In-Reply-To: <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|TYZPR04MB6150:EE_ x-ms-office365-filtering-correlation-id: 105ba6f1-da0f-4c4d-f223-08db554b6a0a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1gAc4t88uljGsvGYZ8/C8aODGfpS7x1kly0NEdMfqYrsswjjJ5HgVsDUn/DQxgedO3bHJqQnCkv6vKlXGMbZwq6edV2FlOp7451JA9CboBU9lOLAlMkx8OKEtNExri/rcyHE8LV87UN7delqyvM3dqkMKXE0lOs1h8cN6ziDTmfDiAV2b6OpA13T/dNvwXykygOMKIAaCBYziX7lteU/HRjQtwS7tD6cj3tAjG1jU5KpjI+XI/I2+rp2XANXbBFvSprkL5y/8VdG9AhhQox7leajCXGcDbG0tv8DoV4DdSKfjZ8Kt6RpajobbaVEyOJto5WVSao5He2R2x3ZfIdQQdsITYEdlT9DDR0AeV5sHd74XM+9eVt6S/epm9DKbP9E7O80iXDeMKSXeAECG190ac0X4V6ug8XTjnfEyW4Ua64M102zc8g+eNcc5yQ57ZThKw7KpEhRu+aGX4GxJxM1D9gjiT6gYh5eOeeLK0Mz69SzFuzccUgyjS9blYRQ+TT0mONtT8fI6ygTVn2kYnE6eJ8G5B2k/2g9Q3LTb6aEG1emiXdu+okvcJj+VHu2KxqWxPYqiv/v0hc7PSdLb+5ADTJ0omezEQxBzNDmNrATfm1bEZxEp6dY83SFmF3QL1Wj7MCc7xeUGaF2NKV/HwYAjs36adBKL7cgBLkHq2YOefnDno7YXe3udB769UWMO7ow x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB5736.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(376002)(396003)(366004)(39840400004)(451199021)(83380400001)(66476007)(66556008)(64756008)(66446008)(66946007)(91956017)(76116006)(2616005)(6486002)(26005)(6506007)(55236004)(6512007)(107886003)(478600001)(54906003)(71200400001)(186003)(30864003)(44832011)(86362001)(8676002)(8936002)(5660300002)(2906002)(36756003)(41300700001)(38070700005)(4326008)(6916009)(316002)(38100700002)(122000001)(84970400001)(66899021)(2004002)(547064002)(559001)(579004)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UTIvc2JGemZqMEs3V1RRaytCM1VEM09rd2R6L0t5RWsrb2M3bm9WNVRJeG1u?= =?utf-8?B?STU5S3pTMkRvbU15S0YwYkdBOUgyenRwUGVNZUZXWVcwT1krbmp1dlZIYk04?= =?utf-8?B?dVlvb2hBWmRSUDJ6Tm4rU25idEdXTlc5NlQrUEZGSWhhbktFc1FPQ2VXampv?= =?utf-8?B?U0RpQTVNVjQ0c0liR3hUeXp0TWtiUkhxOXNXblRBZCtKRVZ2aHJWU2MrVVVi?= =?utf-8?B?WnM0Z3pIV28zempIZWNTWEhGZ0ZOVTVtb0lKU1Q4cWtlOUowSHZNbSt6S24z?= =?utf-8?B?aGtFUTdWVkM4eXZEMnlhd3dzWGpGYndxYTFJNy9ndEwrVVhtMUlxRlV1UW1E?= =?utf-8?B?VWxZcFlvTlNOZ0NiVjMyeEg0NHZmRVdxL1U3UzY2ZHRWQ0hQd1VYTC83ekRE?= =?utf-8?B?SUFETDU3bC94YmFZNWRRWVVpL3U5ckxqTE9YL3RPNHYyMFpYcHRuakdMbFRT?= =?utf-8?B?M2pWZi9jSDl4VW5xcElFTmt3ZkREZFlORnpNTVR5aHJKN2xWdkk3UmJ2Q2Na?= =?utf-8?B?M2dJeXV2MVByTGJrbXEybGZlRll3RllHZWowaHN4VE9RdHhJNDlBZmRrcUlm?= =?utf-8?B?OFZhVDV1ZWN6SmFKMkl6d1haZTVjbGd0NGJzSjY4OG13Y3ozcS9ncTJnQSs0?= =?utf-8?B?ZmFPV2IrU2RXK1c3OVliTTBGVmhtOXZFYlZIZ3NrM0RIa1E3ZnhNL3ovN0ZF?= =?utf-8?B?S3pvT09TTUNvemgxbFZYSld1MzB6NHhBQlZoY2tYZ1FrYlFDR085MVVtTGFj?= =?utf-8?B?T0VzRlVsRWJ5Mjl2OUpkZTBtbGIvS2lMTHFBeXorLzFENTVQeSt6QUtHR0pk?= =?utf-8?B?elpEaHVpbUV5enhmRkRwT3JMemwvWWVNeG54Skw3SDFZUUtSUWJiSnZVeGdN?= =?utf-8?B?WnV4cXovZm1hdWVrdGtldGJaYlNndXgvUzZNZGVLSGc0WFZla1J3M0dGdExu?= =?utf-8?B?MjBjWHpSRW4xTlB4SkQ1bGZmdVVRaVlzblE0Q0VEc3oxTGJsSnlIMENUODQw?= =?utf-8?B?Z05lTE5zVmltbzFTbWxQQ21XQk1JeGVpZVk2WDZBUlZ0eE1paExtcFhFcnZM?= =?utf-8?B?aGIxWHhMd1h0cDRBWE1JQ29xV2MveU9xME05d1VWeDRWaEZnb3dXRmVZSzlw?= =?utf-8?B?eGcyMzVSVDlUTEdndUVCUXAzbVRoU01IaEZhLytMWi9FTUVhb05HaG9JalVv?= =?utf-8?B?TnkzcWJVTGZoNzVEajBJQzJjVXBhY1N6RjJKc1YzNktYNHdQQVBvVnBPZDE1?= =?utf-8?B?ZDZ5VnY5L3NyWlJqL1VLTWFZeXJVeVhhSmFZYXRYRk9oRUo0bEt4ZjRCNExa?= =?utf-8?B?dGJUbTdkajVyRSt2a0hLVmliRUxJdnQ0ZGdYRUlla0JEZzJiYjRrRkZROEJK?= =?utf-8?B?dUpFTDE3ODhWMm8wUVVvY3lSVGV4d2xUNmFNRE1ENnN1eGJDSjRqUStvOXRF?= =?utf-8?B?YTlVdmYxSlc3UkYxOHYzeGovNlQvQUxCOFdzeXR5YzhDR1RpcWZlQUhvSDJF?= =?utf-8?B?QitPZnZKbElkQUdXU04xRUQvMEJ0V0FEUjBBUUNlRUM2RFZLRVFGcWFtZTIz?= =?utf-8?B?cnlHUTN5aWFtZUxGem1BN0hYN0UxZ1BzVHFlb1FnZEM5S3FxdEJUMDZDQWJJ?= =?utf-8?B?QkJRNHlkT3pSK2J0cm9DM2w2NnNRWnR6Mm9NREFUWU9FNGlYNEVVbXMyclVM?= =?utf-8?B?Q1RvT01sT0ZjdzFpS3l1ZDVBMzBIak9NUVRUczNLamQzMUlna2xkUFVpRXlu?= =?utf-8?B?K0ovQjZUN1dMbFM4RjN4MGpKZUc1VFB1dkxPQXgwaTMyRHpPV0Y4a3BDcEFK?= =?utf-8?B?Q2E2N1hjTm45NGlEY3A5ZWdTSk5HdHQ1b2x0WWY3S253b1ZTSkViUnhwaklt?= =?utf-8?B?M2ovZnAzWEM0SDI2VEM5akFFTXdPZ09nM0MwZncyMVhlOTE1MjY2UVdmMmY2?= =?utf-8?B?NjV2dnJUK1VXVitMMjFWbW9oQzg2MjN2bnVCNVpPSytjYUxYMk81bzk4TENh?= =?utf-8?B?TVBIRlJ1bUxvU3FFVkdNS3l1K0o2QnVBUWl4SnFzM1kxb2FFRXJMUnlnemVR?= =?utf-8?B?SzhyVjBQNGRlYmR0Wk5RbHVIN3E5VGxvN3NEdytYUHB2K291Qk94NHp4K3Rj?= =?utf-8?B?OW56dlRTQlJEYVY3RVRkWkU1TFk4OG9Fb3VWblpteW5kYVZreXdvSXlRTXA5?= =?utf-8?Q?CH5SnL98ZufzMxaBoDSMuAk=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 105ba6f1-da0f-4c4d-f223-08db554b6a0a X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2023 13:50:59.2467 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dpjjvs8ffOdsXVnCAf+oOD+FxWx8bQJSoZn8lNjmyjXWWqNLnVMDhzwt1XAAg5L5fJRYRz17F8zudyqtQ3cBtGzg6DRZDc2gUq2h4dEmC1Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR04MB6150 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_LINEPADDING,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: bmV3bGliOg0KICAgICAgICAqIGNvbmZpZ3VyZS5ob3N0OiBhZGQgeHRlbnNhIHBvcnQNCiAgICAg ICAgKiBsaWJjL2luY2x1ZGUvbWFjaGluZS9pZWVlZnAuaDogTGlrZXdpc2UuDQogICAgICAgICog bGliYy9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmg6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMv bWFjaGluZS9jb25maWd1cmU6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvbWFjaGluZS94dGVu c2EvTWFrZWZpbGUuYW06IGluaXRpYWwgY29tbWl0DQogICAgICAgICogbGliYy9tYWNoaW5lL3h0 ZW5zYS9NYWtlZmlsZS5pbjogTGlrZXdpc2UuDQogICAgICAgICogbGliYy9tYWNoaW5lL3h0ZW5z YS9hY2xvY2FsLm00OiBMaWtld2lzZS4NCiAgICAgICAgKiBsaWJjL21hY2hpbmUveHRlbnNhL2Nv bmZpZ3VyZTogTGlrZXdpc2UuDQogICAgICAgICogbGliYy9tYWNoaW5lL3h0ZW5zYS9jb25maWd1 cmUuaW46IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvbWFjaGluZS94dGVuc2EvbWVtY3B5LlM6 IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvbWFjaGluZS94dGVuc2EvbWVtc2V0LlM6IExpa2V3 aXNlLg0KICAgICAgICAqIGxpYmMvbWFjaGluZS94dGVuc2Evc2V0am1wLlM6IExpa2V3aXNlLg0K ICAgICAgICAqIGxpYmMvbWFjaGluZS94dGVuc2Evc3RyY21wLlM6IExpa2V3aXNlLg0KICAgICAg ICAqIGxpYmMvbWFjaGluZS94dGVuc2Evc3RyY3B5LlM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp YmMvbWFjaGluZS94dGVuc2Evc3RybGVuLlM6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvbWFj aGluZS94dGVuc2Evc3RybmNweS5TOiBMaWtld2lzZS4NCiAgICAgICAgKiBsaWJjL21hY2hpbmUv eHRlbnNhL3h0ZW5zYS1hc20uaDogTGlrZXdpc2UuDQogICAgICAgICogbGliYy9tYWNoaW5lL3h0 ZW5zYS94dGVuc2EudGV4OiBMaWtld2lzZS4NCi0tLQ0KIG5ld2xpYi9jb25maWd1cmUuaG9zdCAg ICAgICAgICAgICAgICAgICB8ICAgMTEgKw0KIG5ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9p ZWVlZnAuaCAgICB8ICAgIDQgKw0KIG5ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAu aCAgICB8ICAgMjkgKw0KIG5ld2xpYi9saWJjL21hY2hpbmUvY29uZmlndXJlICAgICAgICAgICB8 ICAgIDMgKw0KIG5ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmFtICB8ICAgMjAg Kw0KIG5ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmluICB8ICA0NTUgKysrDQog bmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvYWNsb2NhbC5tNCAgIHwgIDk5MiArKysrKw0KIG5l d2xpYi9saWJjL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZSAgICB8IDQ3NjMgKysrKysrKysrKysr KysrKysrKysrKysNCiBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUuaW4gfCAg IDE0ICsNCiBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9tZW1jcHkuUyAgICAgfCAgMjg5ICsr DQogbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvbWVtc2V0LlMgICAgIHwgIDE3MCArDQogbmV3 bGliL2xpYmMvbWFjaGluZS94dGVuc2Evc2V0am1wLlMgICAgIHwgIDI2MCArKw0KIG5ld2xpYi9s aWJjL21hY2hpbmUveHRlbnNhL3N0cmNtcC5TICAgICB8ICA3NzggKysrKw0KIG5ld2xpYi9saWJj L21hY2hpbmUveHRlbnNhL3N0cmNweS5TICAgICB8ICAyMzUgKysNCiBuZXdsaWIvbGliYy9tYWNo aW5lL3h0ZW5zYS9zdHJsZW4uUyAgICAgfCAgMTE1ICsNCiBuZXdsaWIvbGliYy9tYWNoaW5lL3h0 ZW5zYS9zdHJuY3B5LlMgICAgfCAgMjU4ICsrDQogbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2Ev eHRlbnNhLWFzbS5oIHwgICA3MiArDQogbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EveHRlbnNh LnRleCAgIHwgICA3MiArDQogMTggZmlsZXMgY2hhbmdlZCwgODU0MCBpbnNlcnRpb25zKCspDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmFt DQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL01ha2VmaWxl LmluDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL2FjbG9j YWwubTQNCiBjcmVhdGUgbW9kZSAxMDA3NTUgbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvY29u ZmlndXJlDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL2Nv bmZpZ3VyZS5pbg0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9tZW1jcHkuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9tZW1zZXQuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9zZXRqbXAuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9zdHJjbXAuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9zdHJjcHkuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9zdHJsZW4uUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9zdHJuY3B5LlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYmMvbWFjaGluZS94dGVu c2EveHRlbnNhLWFzbS5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL21hY2hpbmUv eHRlbnNhL3h0ZW5zYS50ZXgNCg0KZGlmZiAtLWdpdCBhL25ld2xpYi9jb25maWd1cmUuaG9zdCBi L25ld2xpYi9jb25maWd1cmUuaG9zdA0KaW5kZXggMWRkYmI2Yzc2Li5mNTE0YTE5MWQgMTAwNjQ0 DQotLS0gYS9uZXdsaWIvY29uZmlndXJlLmhvc3QNCisrKyBiL25ld2xpYi9jb25maWd1cmUuaG9z dA0KQEAgLTM2Nyw2ICszNjcsMTEgQEAgY2FzZSAiJHtob3N0X2NwdX0iIGluDQogCW5ld2xpYl9j ZmxhZ3M9IiR7bmV3bGliX2NmbGFnc30gLURNQUxMT0NfUFJPVklERUQiDQogCW5ld2xpYl9jZmxh Z3M9IiR7bmV3bGliX2NmbGFnc30gLURQUkVGRVJfU0laRV9PVkVSX1NQRUVEIg0KICAgICAgICAg OzsNCisgIHh0ZW5zYSkNCisJbGlibV9tYWNoaW5lX2Rpcj14dGVuc2ENCisJbWFjaGluZV9kaXI9 eHRlbnNhDQorCW5ld2xpYl9jZmxhZ3M9IiR7bmV3bGliX2NmbGFnc30gLW1sb25nY2FsbHMiDQor CTs7DQogICB6OGspDQogCW1hY2hpbmVfZGlyPXo4aw0KIAk7Ow0KQEAgLTYzMCw2ICs2MzUsOSBA QCBjYXNlICIke2hvc3R9IiBpbg0KICAgdzY1LSotKikNCiAJc3lzX2Rpcj13NjUNCiAJOzsNCisg IHh0ZW5zYSotKi0qIHwgeHRlbnNhKi0qKQ0KKwlzeXNfZGlyPXh0ZW5zYQ0KKwk7Ow0KICAgejhr LSotY29mZikNCiAJc3lzX2Rpcj16OGtzaW0NCiAJOzsNCkBAIC05MjYsNiArOTM0LDkgQEAgbmV3 bGliX2NmbGFncz0iJHtuZXdsaWJfY2ZsYWdzfSAtRENMT0NLX1BST1ZJREVEIC1ETUFMTE9DX1BS T1ZJREVEIC1ERVhJVF9QUk9WSUQNCiAgIHhzdG9ybXkxNi0qLSopDQogCXN5c2NhbGxfZGlyPXN5 c2NhbGxzDQogCTs7DQorICB4dGVuc2EqLSotKiB8IHh0ZW5zYSotKikNCisJc3lzY2FsbF9kaXI9 c3lzY2FsbHMNCisJOzsNCiAgIHo4ay0qLSopDQogCXN5c2NhbGxfZGlyPXN5c2NhbGxzDQogCTs7 DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL2llZWVmcC5oIGIvbmV3 bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL2llZWVmcC5oDQppbmRleCA0ZGMxMzgyOGMuLjBiYTdh ZTFkNCAxMDA2NDQNCi0tLSBhL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9pZWVlZnAuaA0K KysrIGIvbmV3bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL2llZWVmcC5oDQpAQCAtNDgzLDYgKzQ4 MywxMCBAQA0KICNkZWZpbmUgX19JRUVFX0xJVFRMRV9FTkRJQU4NCiAjZW5kaWYNCiANCisjaWZk ZWYgX19YVEVOU0FfRUJfXw0KKyNkZWZpbmUgX19JRUVFX0JJR19FTkRJQU4NCisjZW5kaWYNCisN CiAjaWZkZWYgX19DWUdXSU5fXw0KICNkZWZpbmUgX19PQlNPTEVURV9NQVRIX0RFRkFVTFQgMA0K ICNlbmRpZg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAu aCBiL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaA0KaW5kZXggMGJiNTMyMzhi Li4yOWE1MzJkZWMgMTAwNjQ0DQotLS0gYS9uZXdsaWIvbGliYy9pbmNsdWRlL21hY2hpbmUvc2V0 am1wLmgNCisrKyBiL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaA0KQEAgLTI5 Miw2ICsyOTIsMzUgQEAgX0JFR0lOX1NURF9DDQogI2RlZmluZSBfSkJMRU4gOA0KICNlbmRpZg0K IA0KKyNpZmRlZiBfX1hURU5TQV9fDQorI2lmIF9fWFRFTlNBX1dJTkRPV0VEX0FCSV9fDQorDQor LyogVGhlIGptcF9idWYgc3RydWN0dXJlIGZvciBYdGVuc2Egd2luZG93ZWQgQUJJIGhvbGRzIHRo ZSBmb2xsb3dpbmcNCisgICAod2hlcmUgInByb2MiIGlzIHRoZSBwcm9jZWR1cmUgdGhhdCBjYWxs cyBzZXRqbXApOiA0LTEyIHJlZ2lzdGVycw0KKyAgIGZyb20gdGhlIHdpbmRvdyBvZiBwcm9jLCB0 aGUgNCB3b3JkcyBmcm9tIHRoZSBzYXZlIGFyZWEgYXQgcHJvYydzICRzcA0KKyAgIChpbiBjYXNl IGEgc3Vic2VxdWVudCBhbGxvY2EgaW4gcHJvYyBtb3ZlcyAkc3ApLCBhbmQgdGhlIHJldHVybg0K KyAgIGFkZHJlc3Mgd2l0aGluIHByb2MuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBzYXZlZCBvbiB0aGUg c3RhY2sgaW4gdGhlDQorICAgbm9ybWFsIHNhdmUgYXJlYXMuIFRoZSBqbXBfYnVmIHN0cnVjdHVy ZSBpczoNCisNCisgICBzdHJ1Y3Qgam1wX2J1ZiB7DQorICAgICAgaW50IHJlZ3NbMTJdOw0KKyAg ICAgIGludCBzYXZlWzRdOw0KKyAgICAgIHZvaWQgKnJldHVybl9hZGRyZXNzOw0KKyAgIH0NCisN CisgICBTZWUgdGhlIHNldGptcCBjb2RlIGZvciBkZXRhaWxzLiAgKi8NCisNCisvKiBzaXplb2Yo c3RydWN0IGptcF9idWYpICovDQorI2RlZmluZSBfSkJMRU4gMTcNCisNCisjZWxzZSAvKiBfX1hU RU5TQV9DQUxMMF9BQklfXyAqLw0KKw0KKy8qIGEwLCBhMSwgYTEyLCBhMTMsIGExNCwgYTE1ICov DQorI2RlZmluZSBfSkJMRU4gNg0KKw0KKyNlbmRpZiAvKiBfX1hURU5TQV9DQUxMMF9BQklfXyAq Lw0KKyNlbmRpZiAvKiBfX1hURU5TQV9fICovDQorDQogI2lmZGVmIF9fbWVwX18NCiAvKiAxNiBH UFJzLCBwYywgaGksIGxvICovDQogI2RlZmluZSBfSkJMRU4gMTkNCmRpZmYgLS1naXQgYS9uZXds aWIvbGliYy9tYWNoaW5lL2NvbmZpZ3VyZSBiL25ld2xpYi9saWJjL21hY2hpbmUvY29uZmlndXJl DQppbmRleCA1OGQ4NzI2OTguLjBmN2YyNzJhNCAxMDA3NTUNCi0tLSBhL25ld2xpYi9saWJjL21h Y2hpbmUvY29uZmlndXJlDQorKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL2NvbmZpZ3VyZQ0KQEAg LTg0Myw2ICs4NDMsNyBAQCB3NjUNCiB4ODZfNjQNCiB4YzE2eA0KIHhzdG9ybXkxNg0KK3h0ZW5z YQ0KIHo4aycNCiANCiAjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMu DQpAQCAtMTE5NjksNiArMTE5NzAsOCBAQCBzdWJkaXJzPSIkc3ViZGlycyBhMjlrIg0KIAl4YzE2 eCkgc3ViZGlycz0iJHN1YmRpcnMgeGMxNngiDQogIDs7DQogCXhzdG9ybXkxNikgc3ViZGlycz0i JHN1YmRpcnMgeHN0b3JteTE2Ig0KKyA7Ow0KKwl4dGVuc2EpIHN1YmRpcnM9IiRzdWJkaXJzIHh0 ZW5zYSINCiAgOzsNCiAJejhrKSBzdWJkaXJzPSIkc3ViZGlycyB6OGsiDQogIDs7DQpkaWZmIC0t Z2l0IGEvbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvTWFrZWZpbGUuYW0gYi9uZXdsaWIvbGli Yy9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5hbQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMC4uOTMwN2NkODcxDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9t YWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5hbQ0KQEAgLTAsMCArMSwyMCBAQA0KKyMjIFByb2Nlc3Mg dGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gZ2VuZXJhdGUgTWFrZWZpbGUuaW4NCisNCitBVVRP TUFLRV9PUFRJT05TID0gY3lnbnVzDQorDQorSU5DTFVERVMgPSAkKE5FV0xJQl9DRkxBR1MpICQo Q1JPU1NfQ0ZMQUdTKSAkKFRBUkdFVF9DRkxBR1MpDQorDQorQU1fQ0NBU0ZMQUdTID0gJChJTkNM VURFUykNCisNCitub2luc3RfTElCUkFSSUVTID0gbGliLmENCisNCitsaWJfYV9TT1VSQ0VTID0g c2V0am1wLlMgbWVtY3B5LlMgbWVtc2V0LlMgc3RyY21wLlMgc3RyY3B5LlMgc3RybmNweS5TIHN0 cmxlbi5TDQorbGliX2FfQ0NBU0ZMQUdTPSQoQU1fQ0NBU0ZMQUdTKQ0KK2xpYl9hX0NGTEFHUz0k KEFNX0NGTEFHUykNCitUQVJHRVRET0MgPSAuLi8uLi90bXAudGV4aQ0KKw0KK2RvYzoNCisJY2F0 ICQoc3JjZGlyKS94dGVuc2EudGV4ID4+ICQoVEFSR0VURE9DKQ0KKw0KK0FDTE9DQUxfQU1GTEFH UyA9IC1JIC4uLy4uLy4uIC1JIC4uLy4uLy4uLy4uDQorQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJ RVMgPSAkKG5ld2xpYl9iYXNlZGlyKS9jb25maWd1cmUuaG9zdA0KZGlmZiAtLWdpdCBhL25ld2xp Yi9saWJjL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmluIGIvbmV3bGliL2xpYmMvbWFjaGluZS94 dGVuc2EvTWFrZWZpbGUuaW4NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAu LmVmNTQ2NDQxYg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYmMvbWFjaGluZS94dGVu c2EvTWFrZWZpbGUuaW4NCkBAIC0wLDAgKzEsNDU1IEBADQorIyBNYWtlZmlsZS5pbiBnZW5lcmF0 ZWQgYnkgYXV0b21ha2UgMS4xMS4xIGZyb20gTWFrZWZpbGUuYW0uDQorIyBAY29uZmlndXJlX2lu cHV0QA0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAx OTk5LCAyMDAwLCAyMDAxLCAyMDAyLA0KKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg MjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLA0KKyMgSW5jLg0KKyMgVGhpcyBN YWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u DQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRl IGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBu b3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dA0KKyMgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0K KyMgUEFSVElDVUxBUiBQVVJQT1NFLg0KKw0KK0BTRVRfTUFLRUANCisNCitWUEFUSCA9IEBzcmNk aXJADQorcGtnZGF0YWRpciA9ICQoZGF0YWRpcikvQFBBQ0tBR0VADQorcGtnaW5jbHVkZWRpciA9 ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VADQorcGtnbGliZGlyID0gJChsaWJkaXIpL0BQQUNLQUdF QA0KK3BrZ2xpYmV4ZWNkaXIgPSAkKGxpYmV4ZWNkaXIpL0BQQUNLQUdFQA0KK2FtX19jZCA9IENE UEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QNCitpbnN0YWxs X3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NA0KK2luc3RhbGxfc2hfUFJPR1JBTSA9 ICQoaW5zdGFsbF9zaCkgLWMNCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMN CitJTlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQ0KK3RyYW5zZm9ybSA9ICQocHJvZ3Jh bV90cmFuc2Zvcm1fbmFtZSkNCitOT1JNQUxfSU5TVEFMTCA9IDoNCitQUkVfSU5TVEFMTCA9IDoN CitQT1NUX0lOU1RBTEwgPSA6DQorTk9STUFMX1VOSU5TVEFMTCA9IDoNCitQUkVfVU5JTlNUQUxM ID0gOg0KK1BPU1RfVU5JTlNUQUxMID0gOg0KK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRADQoraG9z dF90cmlwbGV0ID0gQGhvc3RADQorc3ViZGlyID0gLg0KK0RJU1RfQ09NTU9OID0gJChzcmNkaXIp L01ha2VmaWxlLmluICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcDQorCSQodG9wX3NyY2RpcikvY29u ZmlndXJlICQoYW1fX2NvbmZpZ3VyZV9kZXBzKSBcDQorCSQoc3JjZGlyKS8uLi8uLi8uLi8uLi9t a2luc3RhbGxkaXJzDQorQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNA0KK2Ft X19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpLy4uLy4uLy4uL2FjaW5jbHVkZS5tNCBc DQorCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmluDQorYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChh bV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwNCisJJChBQ0xP Q0FMX000KQ0KK2FtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTID0gY29uZmlnLnN0YXR1cyBjb25m aWcuY2FjaGUgY29uZmlnLmxvZyBcDQorIGNvbmZpZ3VyZS5saW5lbm8gY29uZmlnLnN0YXR1cy5s aW5lbm8NCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS8uLi8uLi8uLi8u Li9ta2luc3RhbGxkaXJzDQorQ09ORklHX0NMRUFOX0ZJTEVTID0NCitDT05GSUdfQ0xFQU5fVlBB VEhfRklMRVMgPQ0KK0xJQlJBUklFUyA9ICQobm9pbnN0X0xJQlJBUklFUykNCitBUkZMQUdTID0g Y3J1DQorbGliX2FfQVIgPSAkKEFSKSAkKEFSRkxBR1MpDQorbGliX2FfTElCQUREID0NCithbV9s aWJfYV9PQkpFQ1RTID0gbGliX2Etc2V0am1wLiQoT0JKRVhUKSBsaWJfYS1tZW1jcHkuJChPQkpF WFQpIFwNCisJbGliX2EtbWVtc2V0LiQoT0JKRVhUKSBsaWJfYS1zdHJjbXAuJChPQkpFWFQpIFwN CisJbGliX2Etc3RyY3B5LiQoT0JKRVhUKSBsaWJfYS1zdHJuY3B5LiQoT0JKRVhUKSBcDQorCWxp Yl9hLXN0cmxlbi4kKE9CSkVYVCkNCitsaWJfYV9PQkpFQ1RTID0gJChhbV9saWJfYV9PQkpFQ1RT KQ0KK0RFRkFVTFRfSU5DTFVERVMgPSAtSS5AYW1fX2lzcmNADQorZGVwY29tcCA9DQorYW1fX2Rl cGZpbGVzX21heWJlID0NCitDUFBBU0NPTVBJTEUgPSAkKENDQVMpICQoREVGUykgJChERUZBVUxU X0lOQ0xVREVTKSAkKElOQ0xVREVTKSBcDQorCSQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQo QU1fQ0NBU0ZMQUdTKSAkKENDQVNGTEFHUykNCitDT01QSUxFID0gJChDQykgJChERUZTKSAkKERF RkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwNCisJJChDUFBGTEFH UykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQ0KK0NDTEQgPSAkKENDKQ0KK0xJTksgPSAkKENDTEQp ICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRADQor U09VUkNFUyA9ICQobGliX2FfU09VUkNFUykNCitFVEFHUyA9IGV0YWdzDQorQ1RBR1MgPSBjdGFn cw0KK0FDTE9DQUwgPSBAQUNMT0NBTEANCitBTVRBUiA9IEBBTVRBUkANCitBUiA9IEBBUkANCitB UyA9IEBBU0ANCitBVVRPQ09ORiA9IEBBVVRPQ09ORkANCitBVVRPSEVBREVSID0gQEFVVE9IRUFE RVJADQorQVVUT01BS0UgPSBAQVVUT01BS0VADQorQVdLID0gQEFXS0ANCitDQyA9IEBDQ0ANCitD Q0FTID0gQENDQVNADQorQ0NBU0ZMQUdTID0gQENDQVNGTEFHU0ANCitDQ0RFUE1PREUgPSBAQ0NE RVBNT0RFQA0KK0NZR1BBVEhfVyA9IEBDWUdQQVRIX1dADQorREVGUyA9IEBERUZTQA0KK0RFUERJ UiA9IEBERVBESVJADQorRUNIT19DID0gQEVDSE9fQ0ANCitFQ0hPX04gPSBARUNIT19OQA0KK0VD SE9fVCA9IEBFQ0hPX1RADQorSU5TVEFMTCA9IEBJTlNUQUxMQA0KK0lOU1RBTExfREFUQSA9IEBJ TlNUQUxMX0RBVEFADQorSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUANCitJTlNU QUxMX1NDUklQVCA9IEBJTlNUQUxMX1NDUklQVEANCitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBA SU5TVEFMTF9TVFJJUF9QUk9HUkFNQA0KK0xERkxBR1MgPSBATERGTEFHU0ANCitMSUJPQkpTID0g QExJQk9CSlNADQorTElCUyA9IEBMSUJTQA0KK0xUTElCT0JKUyA9IEBMVExJQk9CSlNADQorTUFJ TlQgPSBATUFJTlRADQorTUFLRUlORk8gPSBATUFLRUlORk9ADQorTUtESVJfUCA9IEBNS0RJUl9Q QA0KK05FV0xJQl9DRkxBR1MgPSBATkVXTElCX0NGTEFHU0ANCitOT19JTkNMVURFX0xJU1QgPSBA Tk9fSU5DTFVERV9MSVNUQA0KK09CSkVYVCA9IEBPQkpFWFRADQorUEFDS0FHRSA9IEBQQUNLQUdF QA0KK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQA0KK1BBQ0tBR0VfTkFN RSA9IEBQQUNLQUdFX05BTUVADQorUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdADQor UEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUANCitQQUNLQUdFX1ZFUlNJT04gPSBA UEFDS0FHRV9WRVJTSU9OQA0KK1BBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQA0KK1JB TkxJQiA9IEBSQU5MSUJADQorUkVBREVMRiA9IEBSRUFERUxGQA0KK1NFVF9NQUtFID0gQFNFVF9N QUtFQA0KK1NIRUxMID0gQFNIRUxMQA0KK1NUUklQID0gQFNUUklQQA0KK1ZFUlNJT04gPSBAVkVS U0lPTkANCithYnNfYnVpbGRkaXIgPSBAYWJzX2J1aWxkZGlyQA0KK2Fic19zcmNkaXIgPSBAYWJz X3NyY2RpckANCithYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJADQorYWJzX3Rv cF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJADQorYWV4dCA9IEBhZXh0QA0KK2FtX19pbmNsdWRl ID0gQGFtX19pbmNsdWRlQA0KK2FtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RADQor YW1fX3F1b3RlID0gQGFtX19xdW90ZUANCithbV9fdGFyID0gQGFtX190YXJADQorYW1fX3VudGFy ID0gQGFtX191bnRhckANCitiaW5kaXIgPSBAYmluZGlyQA0KK2J1aWxkID0gQGJ1aWxkQA0KK2J1 aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQA0KK2J1aWxkX2NwdSA9IEBidWlsZF9jcHVADQorYnVp bGRfb3MgPSBAYnVpbGRfb3NADQorYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckANCitidWls ZGRpciA9IEBidWlsZGRpckANCitkYXRhZGlyID0gQGRhdGFkaXJADQorZGF0YXJvb3RkaXIgPSBA ZGF0YXJvb3RkaXJADQorZG9jZGlyID0gQGRvY2RpckANCitkdmlkaXIgPSBAZHZpZGlyQA0KK2V4 ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QA0KK2hvc3QgPSBAaG9zdEANCitob3N0X2FsaWFzID0g QGhvc3RfYWxpYXNADQoraG9zdF9jcHUgPSBAaG9zdF9jcHVADQoraG9zdF9vcyA9IEBob3N0X29z QA0KK2hvc3RfdmVuZG9yID0gQGhvc3RfdmVuZG9yQA0KK2h0bWxkaXIgPSBAaHRtbGRpckANCitp bmNsdWRlZGlyID0gQGluY2x1ZGVkaXJADQoraW5mb2RpciA9IEBpbmZvZGlyQA0KK2luc3RhbGxf c2ggPSBAaW5zdGFsbF9zaEANCitsaWJkaXIgPSBAbGliZGlyQA0KK2xpYmV4ZWNkaXIgPSBAbGli ZXhlY2RpckANCitsaWJtX21hY2hpbmVfZGlyID0gQGxpYm1fbWFjaGluZV9kaXJADQorbG9jYWxl ZGlyID0gQGxvY2FsZWRpckANCitsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJADQorbHBm eCA9IEBscGZ4QA0KK21hY2hpbmVfZGlyID0gQG1hY2hpbmVfZGlyQA0KK21hbmRpciA9IEBtYW5k aXJADQorbWtkaXJfcCA9IEBta2Rpcl9wQA0KK25ld2xpYl9iYXNlZGlyID0gQG5ld2xpYl9iYXNl ZGlyQA0KK29leHQgPSBAb2V4dEANCitvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJADQor cGRmZGlyID0gQHBkZmRpckANCitwcmVmaXggPSBAcHJlZml4QA0KK3Byb2dyYW1fdHJhbnNmb3Jt X25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUANCitwc2RpciA9IEBwc2RpckANCitzYmlu ZGlyID0gQHNiaW5kaXJADQorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJADQorc3Jj ZGlyID0gQHNyY2RpckANCitzeXNfZGlyID0gQHN5c19kaXJADQorc3lzY29uZmRpciA9IEBzeXNj b25mZGlyQA0KK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNADQordG9wX2J1aWxkX3ByZWZp eCA9IEB0b3BfYnVpbGRfcHJlZml4QA0KK3RvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJADQor dG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQA0KK0FVVE9NQUtFX09QVElPTlMgPSBjeWdudXMNCitJ TkNMVURFUyA9ICQoTkVXTElCX0NGTEFHUykgJChDUk9TU19DRkxBR1MpICQoVEFSR0VUX0NGTEFH UykNCitBTV9DQ0FTRkxBR1MgPSAkKElOQ0xVREVTKQ0KK25vaW5zdF9MSUJSQVJJRVMgPSBsaWIu YQ0KK2xpYl9hX1NPVVJDRVMgPSBzZXRqbXAuUyBtZW1jcHkuUyBtZW1zZXQuUyBzdHJjbXAuUyBz dHJjcHkuUyBzdHJuY3B5LlMgc3RybGVuLlMNCitsaWJfYV9DQ0FTRkxBR1MgPSAkKEFNX0NDQVNG TEFHUykNCitsaWJfYV9DRkxBR1MgPSAkKEFNX0NGTEFHUykNCitUQVJHRVRET0MgPSAuLi8uLi90 bXAudGV4aQ0KK0FDTE9DQUxfQU1GTEFHUyA9IC1JIC4uLy4uLy4uIC1JIC4uLy4uLy4uLy4uDQor Q09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMgPSAkKG5ld2xpYl9iYXNlZGlyKS9jb25maWd1cmUu aG9zdA0KK2FsbDogYWxsLWFtDQorDQorLlNVRkZJWEVTOg0KKy5TVUZGSVhFUzogLlMgLm8gLm9i ag0KK2FtLS1yZWZyZXNoOg0KKwlAOg0KKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlO RVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBz KQ0KKwlAZm9yIGRlcCBpbiAkPzsgZG8gXA0KKwkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBz KScgaW4gXA0KKwkgICAgKiQkZGVwKikgXA0KKwkgICAgICBlY2hvICcgY2QgJChzcmNkaXIpICYm ICQoQVVUT01BS0UpIC0tY3lnbnVzJzsgXA0KKwkgICAgICAkKGFtX19jZCkgJChzcmNkaXIpICYm ICQoQVVUT01BS0UpIC0tY3lnbnVzIFwNCisJCSYmIGV4aXQgMDsgXA0KKwkgICAgICBleGl0IDE7 OyBcDQorCSAgZXNhYzsgXA0KKwlkb25lOyBcDQorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYm ICQoQVVUT01BS0UpIC0tY3lnbnVzIE1ha2VmaWxlJzsgXA0KKwkkKGFtX19jZCkgJCh0b3Bfc3Jj ZGlyKSAmJiBcDQorCSAgJChBVVRPTUFLRSkgLS1jeWdudXMgTWFrZWZpbGUNCisuUFJFQ0lPVVM6 IE1ha2VmaWxlDQorTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRp cikvY29uZmlnLnN0YXR1cw0KKwlAY2FzZSAnJD8nIGluIFwNCisJICAqY29uZmlnLnN0YXR1cyop IFwNCisJICAgIGVjaG8gJyAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMnOyBcDQorCSAgICAkKFNI RUxMKSAuL2NvbmZpZy5zdGF0dXM7OyBcDQorCSAgKikgXA0KKwkgICAgZWNobyAnIGNkICQodG9w X2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAgJChhbV9fZGVwZmlsZXNf bWF5YmUpJzsgXA0KKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmln LnN0YXR1cyAkQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcDQorCWVzYWM7DQorDQorJCh0b3Bf YnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09ORklH X1NUQVRVU19ERVBFTkRFTkNJRVMpDQorCSQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAtLXJlY2hl Y2sNCisNCiskKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZTogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAk KGFtX19jb25maWd1cmVfZGVwcykNCisJJChhbV9fY2QpICQoc3JjZGlyKSAmJiAkKEFVVE9DT05G KQ0KKyQoQUNMT0NBTF9NNCk6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fYWNsb2NhbF9t NF9kZXBzKQ0KKwkkKGFtX19jZCkgJChzcmNkaXIpICYmICQoQUNMT0NBTCkgJChBQ0xPQ0FMX0FN RkxBR1MpDQorJChhbV9fYWNsb2NhbF9tNF9kZXBzKToNCisNCitjbGVhbi1ub2luc3RMSUJSQVJJ RVM6DQorCS10ZXN0IC16ICIkKG5vaW5zdF9MSUJSQVJJRVMpIiB8fCBybSAtZiAkKG5vaW5zdF9M SUJSQVJJRVMpDQorbGliLmE6ICQobGliX2FfT0JKRUNUUykgJChsaWJfYV9ERVBFTkRFTkNJRVMp IA0KKwktcm0gLWYgbGliLmENCisJJChsaWJfYV9BUikgbGliLmEgJChsaWJfYV9PQkpFQ1RTKSAk KGxpYl9hX0xJQkFERCkNCisJJChSQU5MSUIpIGxpYi5hDQorDQorbW9zdGx5Y2xlYW4tY29tcGls ZToNCisJLXJtIC1mICouJChPQkpFWFQpDQorDQorZGlzdGNsZWFuLWNvbXBpbGU6DQorCS1ybSAt ZiAqLnRhYi5jDQorDQorLlMubzoNCisJJChDUFBBU0NPTVBJTEUpIC1jIC1vICRAICQ8DQorDQor LlMub2JqOg0KKwkkKENQUEFTQ09NUElMRSkgLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYA0K Kw0KK2xpYl9hLXNldGptcC5vOiBzZXRqbXAuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZBVUxU X0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9h X0NDQVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9hLXNldGptcC5vIGB0ZXN0IC1mICdz ZXRqbXAuUycgfHwgZWNobyAnJChzcmNkaXIpLydgc2V0am1wLlMNCisNCitsaWJfYS1zZXRqbXAu b2JqOiBzZXRqbXAuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElO Q0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0NDQVNGTEFHUykgJChD Q0FTRkxBR1MpIC1jIC1vIGxpYl9hLXNldGptcC5vYmogYGlmIHRlc3QgLWYgJ3NldGptcC5TJzsg dGhlbiAkKENZR1BBVEhfVykgJ3NldGptcC5TJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGly KS9zZXRqbXAuUyc7IGZpYA0KKw0KK2xpYl9hLW1lbWNweS5vOiBtZW1jcHkuUw0KKwkkKENDQVMp ICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAk KENQUEZMQUdTKSAkKGxpYl9hX0NDQVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9hLW1l bWNweS5vIGB0ZXN0IC1mICdtZW1jcHkuUycgfHwgZWNobyAnJChzcmNkaXIpLydgbWVtY3B5LlMN CisNCitsaWJfYS1tZW1jcHkub2JqOiBtZW1jcHkuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZB VUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxp Yl9hX0NDQVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9hLW1lbWNweS5vYmogYGlmIHRl c3QgLWYgJ21lbWNweS5TJzsgdGhlbiAkKENZR1BBVEhfVykgJ21lbWNweS5TJzsgZWxzZSAkKENZ R1BBVEhfVykgJyQoc3JjZGlyKS9tZW1jcHkuUyc7IGZpYA0KKw0KK2xpYl9hLW1lbXNldC5vOiBt ZW1zZXQuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVT KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0NDQVNGTEFHUykgJChDQ0FTRkxB R1MpIC1jIC1vIGxpYl9hLW1lbXNldC5vIGB0ZXN0IC1mICdtZW1zZXQuUycgfHwgZWNobyAnJChz cmNkaXIpLydgbWVtc2V0LlMNCisNCitsaWJfYS1tZW1zZXQub2JqOiBtZW1zZXQuUw0KKwkkKEND QVMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdT KSAkKENQUEZMQUdTKSAkKGxpYl9hX0NDQVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9h LW1lbXNldC5vYmogYGlmIHRlc3QgLWYgJ21lbXNldC5TJzsgdGhlbiAkKENZR1BBVEhfVykgJ21l bXNldC5TJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9tZW1zZXQuUyc7IGZpYA0KKw0K K2xpYl9hLXN0cmNtcC5vOiBzdHJjbXAuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZBVUxUX0lO Q0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0ND QVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9hLXN0cmNtcC5vIGB0ZXN0IC1mICdzdHJj bXAuUycgfHwgZWNobyAnJChzcmNkaXIpLydgc3RyY21wLlMNCisNCitsaWJfYS1zdHJjbXAub2Jq OiBzdHJjbXAuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xV REVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0NDQVNGTEFHUykgJChDQ0FT RkxBR1MpIC1jIC1vIGxpYl9hLXN0cmNtcC5vYmogYGlmIHRlc3QgLWYgJ3N0cmNtcC5TJzsgdGhl biAkKENZR1BBVEhfVykgJ3N0cmNtcC5TJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9z dHJjbXAuUyc7IGZpYA0KKw0KK2xpYl9hLXN0cmNweS5vOiBzdHJjcHkuUw0KKwkkKENDQVMpICQo REVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQ UEZMQUdTKSAkKGxpYl9hX0NDQVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9hLXN0cmNw eS5vIGB0ZXN0IC1mICdzdHJjcHkuUycgfHwgZWNobyAnJChzcmNkaXIpLydgc3RyY3B5LlMNCisN CitsaWJfYS1zdHJjcHkub2JqOiBzdHJjcHkuUw0KKwkkKENDQVMpICQoREVGUykgJChERUZBVUxU X0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9h X0NDQVNGTEFHUykgJChDQ0FTRkxBR1MpIC1jIC1vIGxpYl9hLXN0cmNweS5vYmogYGlmIHRlc3Qg LWYgJ3N0cmNweS5TJzsgdGhlbiAkKENZR1BBVEhfVykgJ3N0cmNweS5TJzsgZWxzZSAkKENZR1BB VEhfVykgJyQoc3JjZGlyKS9zdHJjcHkuUyc7IGZpYA0KKw0KK2xpYl9hLXN0cm5jcHkubzogc3Ry bmNweS5TDQorCSQoQ0NBUykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMp ICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0NBU0ZMQUdTKSAkKENDQVNGTEFH UykgLWMgLW8gbGliX2Etc3RybmNweS5vIGB0ZXN0IC1mICdzdHJuY3B5LlMnIHx8IGVjaG8gJyQo c3JjZGlyKS8nYHN0cm5jcHkuUw0KKw0KK2xpYl9hLXN0cm5jcHkub2JqOiBzdHJuY3B5LlMNCisJ JChDQ0FTKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBG TEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DQ0FTRkxBR1MpICQoQ0NBU0ZMQUdTKSAtYyAtbyBs aWJfYS1zdHJuY3B5Lm9iaiBgaWYgdGVzdCAtZiAnc3RybmNweS5TJzsgdGhlbiAkKENZR1BBVEhf VykgJ3N0cm5jcHkuUyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2Rpcikvc3RybmNweS5TJzsg ZmlgDQorDQorbGliX2Etc3RybGVuLm86IHN0cmxlbi5TDQorCSQoQ0NBUykgJChERUZTKSAkKERF RkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQo bGliX2FfQ0NBU0ZMQUdTKSAkKENDQVNGTEFHUykgLWMgLW8gbGliX2Etc3RybGVuLm8gYHRlc3Qg LWYgJ3N0cmxlbi5TJyB8fCBlY2hvICckKHNyY2RpcikvJ2BzdHJsZW4uUw0KKw0KK2xpYl9hLXN0 cmxlbi5vYmo6IHN0cmxlbi5TDQorCSQoQ0NBUykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMp ICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0NBU0ZMQUdT KSAkKENDQVNGTEFHUykgLWMgLW8gbGliX2Etc3RybGVuLm9iaiBgaWYgdGVzdCAtZiAnc3RybGVu LlMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnc3RybGVuLlMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChz cmNkaXIpL3N0cmxlbi5TJzsgZmlgDQorDQorSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKExJ U1ApICQoVEFHU19GSUxFUykNCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoTElTUCkg JChUQUdTX0ZJTEVTKSc7IFwNCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwNCisJICAg IGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRp OyBmaTsgXA0KKwkgIGRvbmUgfCBcDQorCSAgJChBV0spICd7IGZpbGVzWyQkMF0gPSAxOyBub25l bXB0eSA9IDE7IH0gXA0KKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZp bGVzKSBwcmludCBpOyB9OyB9J2A7IFwNCisJbWtpZCAtZklEICQkdW5pcXVlDQordGFnczogVEFH Uw0KKw0KK1RBR1M6ICAkKEhFQURFUlMpICQoU09VUkNFUykgICQoVEFHU19ERVBFTkRFTkNJRVMp IFwNCisJCSQoVEFHU19GSUxFUykgJChMSVNQKQ0KKwlzZXQgeDsgXA0KKwloZXJlPWBwd2RgOyBc DQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsg XA0KKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXA0KKwkgICAgaWYgdGVzdCAtZiAiJCRp IjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcDQorCSAgZG9u ZSB8IFwNCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcDQor CSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07 IH0nYDsgXA0KKwlzaGlmdDsgXA0KKwlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCQqJCR1bmlx dWUiOyB0aGVuIDo7IGVsc2UgXA0KKwkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRl bXB0eV9maXg7IFwNCisJICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcDQorCSAgICAkKEVUQUdT KSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcDQorCSAgICAg ICIkJEAiICQkdW5pcXVlOyBcDQorCSAgZWxzZSBcDQorCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxB R1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcDQorCSAgICAgICQkdW5pcXVlOyBc DQorCSAgZmk7IFwNCisJZmkNCitjdGFnczogQ1RBR1MNCitDVEFHUzogICQoSEVBREVSUykgJChT T1VSQ0VTKSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXA0KKwkJJChUQUdTX0ZJTEVTKSAkKExJU1Ap DQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsg XA0KKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXA0KKwkgICAgaWYgdGVzdCAtZiAiJCRp IjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcDQorCSAgZG9u ZSB8IFwNCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcDQor CSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07 IH0nYDsgXA0KKwl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwNCisJICB8fCAkKENU QUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcDQorCSAg ICAgJCR1bmlxdWUNCisNCitHVEFHUzoNCisJaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGly KSAmJiBwd2RgIFwNCisJICAmJiAkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSBcDQorCSAgJiYgZ3Rh Z3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIg0KKw0KK2Rpc3RjbGVhbi10YWdzOg0KKwktcm0g LWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncw0KK2NoZWNrLWFtOg0KK2No ZWNrOiBjaGVjay1hbQ0KK2FsbC1hbTogTWFrZWZpbGUgJChMSUJSQVJJRVMpDQoraW5zdGFsbGRp cnM6DQoraW5zdGFsbDogaW5zdGFsbC1hbQ0KK2luc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLWFt DQoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0NCit1bmluc3RhbGw6IHVuaW5zdGFsbC1h bQ0KKw0KK2luc3RhbGwtYW06IGFsbC1hbQ0KKwlAJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5z dGFsbC1leGVjLWFtIGluc3RhbGwtZGF0YS1hbQ0KKw0KK2luc3RhbGxjaGVjazogaW5zdGFsbGNo ZWNrLWFtDQoraW5zdGFsbC1zdHJpcDoNCisJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFM TF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwNCisJICBpbnN0YWxsX3NoX1BS T0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwN CisJICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwNCisJICAgIGVjaG8gIklOU1RBTExfUFJPR1JB TV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsDQorbW9zdGx5Y2xlYW4tZ2VuZXJp YzoNCisNCitjbGVhbi1nZW5lcmljOg0KKw0KK2Rpc3RjbGVhbi1nZW5lcmljOg0KKwktdGVzdCAt eiAiJChDT05GSUdfQ0xFQU5fRklMRVMpIiB8fCBybSAtZiAkKENPTkZJR19DTEVBTl9GSUxFUykN CisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRI X0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpDQorDQorbWFpbnRh aW5lci1jbGVhbi1nZW5lcmljOg0KKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZv ciBtYWludGFpbmVycyB0byB1c2UiDQorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5 IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiINCitjbGVhbjogY2xlYW4tYW0NCisN CitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1ub2luc3RMSUJSQVJJRVMgbW9zdGx5Y2xl YW4tYW0NCisNCitkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQ0KKwktcm0gLWYgJChhbV9fQ09ORklH X0RJU1RDTEVBTl9GSUxFUykNCisJLXJtIC1mIE1ha2VmaWxlDQorZGlzdGNsZWFuLWFtOiBjbGVh bi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcDQorCWRpc3RjbGVhbi10 YWdzDQorDQorZHZpOiBkdmktYW0NCisNCitkdmktYW06DQorDQoraHRtbDogaHRtbC1hbQ0KKw0K K2h0bWwtYW06DQorDQoraW5mbzogaW5mby1hbQ0KKw0KK2luZm8tYW06DQorDQoraW5zdGFsbC1k YXRhLWFtOg0KKw0KK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQ0KKw0KK2luc3RhbGwtZHZp LWFtOg0KKw0KK2luc3RhbGwtZXhlYy1hbToNCisNCitpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRt bC1hbQ0KKw0KK2luc3RhbGwtaHRtbC1hbToNCisNCitpbnN0YWxsLWluZm86IGluc3RhbGwtaW5m by1hbQ0KKw0KK2luc3RhbGwtaW5mby1hbToNCisNCitpbnN0YWxsLW1hbjoNCisNCitpbnN0YWxs LXBkZjogaW5zdGFsbC1wZGYtYW0NCisNCitpbnN0YWxsLXBkZi1hbToNCisNCitpbnN0YWxsLXBz OiBpbnN0YWxsLXBzLWFtDQorDQoraW5zdGFsbC1wcy1hbToNCisNCitpbnN0YWxsY2hlY2stYW06 DQorDQorbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1hbQ0KKwktcm0gLWYgJChh bV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykNCisJLXJtIC1yZiAkKHRvcF9zcmNkaXIpL2F1dG9t NHRlLmNhY2hlDQorCS1ybSAtZiBNYWtlZmlsZQ0KK21haW50YWluZXItY2xlYW4tYW06IGRpc3Rj bGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMNCisNCittb3N0bHljbGVhbjogbW9zdGx5 Y2xlYW4tYW0NCisNCittb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHlj bGVhbi1nZW5lcmljDQorDQorcGRmOiBwZGYtYW0NCisNCitwZGYtYW06DQorDQorcHM6IHBzLWFt DQorDQorcHMtYW06DQorDQordW5pbnN0YWxsLWFtOg0KKw0KKy5NQUtFOiBpbnN0YWxsLWFtIGlu c3RhbGwtc3RyaXANCisNCisuUEhPTlk6IENUQUdTIEdUQUdTIGFsbCBhbGwtYW0gYW0tLXJlZnJl c2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gXA0KKwljbGVhbi1nZW5lcmljIGNsZWFuLW5vaW5zdExJ QlJBUklFUyBjdGFncyBkaXN0Y2xlYW4gXA0KKwlkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4t Z2VuZXJpYyBkaXN0Y2xlYW4tdGFncyBkdmkgZHZpLWFtIFwNCisJaHRtbCBodG1sLWFtIGluZm8g aW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwNCisJaW5zdGFsbC1kYXRh LWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBcDQorCWluc3RhbGwt ZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcDQorCWlu c3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBcDQor CWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcDQor CWluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBtYWludGFpbmVyLWNsZWFuIFwNCisJbWFpbnRh aW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgXA0KKwlt b3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB1bmluc3RhbGwgXA0K Kwl1bmluc3RhbGwtYW0NCisNCisNCitkb2M6DQorCWNhdCAkKHNyY2RpcikveHRlbnNhLnRleCA+ PiAkKFRBUkdFVERPQykNCisNCisjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1h a2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLg0KKyMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxp bWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLg0KKy5OT0VYUE9SVDoNCmRp ZmYgLS1naXQgYS9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9hY2xvY2FsLm00IGIvbmV3bGli L2xpYmMvbWFjaGluZS94dGVuc2EvYWNsb2NhbC5tNA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMC4uMDU2NGI3YzRlDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGli Yy9tYWNoaW5lL3h0ZW5zYS9hY2xvY2FsLm00DQpAQCAtMCwwICsxLDk5MiBAQA0KKyMgZ2VuZXJh dGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjExLjEgLSotIEF1dG9jb25mIC0qLQ0KKw0K KyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAy LCAyMDAzLCAyMDA0LA0KKyMgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24g dG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj YXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LA0KKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBi eSBsYXc7IHdpdGhvdXQNCisjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4NCisNCittNF9p Zm5kZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLA0KKyAgW200X2NvcHkoW200X1BBQ0tBR0VfVkVS U0lPTl0sIFtBQ19BVVRPQ09ORl9WRVJTSU9OXSldKWRubA0KK200X2lmKG00X2RlZm4oW0FDX0FV VE9DT05GX1ZFUlNJT05dKSwgWzIuNjNdLCwNCitbbTRfd2FybmluZyhbdGhpcyBmaWxlIHdhcyBn ZW5lcmF0ZWQgZm9yIGF1dG9jb25mIDIuNjMuDQorWW91IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9m IGF1dG9jb25mLiAgSXQgbWF5IHdvcmssIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0by4NCitJZiB5 b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5 c3RlbSBlbnRpcmVseS4NCitUbyBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBi eSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25mJy5dKV0pDQorDQorIyBDb3B5cmln aHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0 byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNh dGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fQVVU T01BS0VfVkVSU0lPTihWRVJTSU9OKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K KyMgQXV0b21ha2UgWC5ZIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00IGhh cyBiZWVuDQorIyBnZW5lcmF0ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1dG9t YWtlIFguWS4NCisjIChUaGlzIHByaXZhdGUgbWFjcm8gc2hvdWxkIG5vdCBiZSBjYWxsZWQgb3V0 c2lkZSB0aGlzIGZpbGUuKQ0KK0FDX0RFRlVOKFtBTV9BVVRPTUFLRV9WRVJTSU9OXSwNCitbYW1f X2FwaV92ZXJzaW9uPScxLjExJw0KK2RubCBTb21lIHVzZXJzIGZpbmQgQU1fQVVUT01BS0VfVkVS U0lPTiBhbmQgbWlzdGFrZSBpdCBmb3IgYSB3YXkgdG8NCitkbmwgcmVxdWlyZSBzb21lIG1pbmlt dW0gdmVyc2lvbi4gIFBvaW50IHRoZW0gdG8gdGhlIHJpZ2h0IG1hY3JvLg0KK200X2lmKFskMV0s IFsxLjExLjFdLCBbXSwNCisgICAgICBbQUNfRkFUQUwoW0RvIG5vdCBjYWxsICQwLCB1c2UgQU1f SU5JVF9BVVRPTUFLRShbJDFdKS5dKV0pZG5sDQorXSkNCisNCisjIF9BTV9BVVRPQ09ORl9WRVJT SU9OKFZFUlNJT04pDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgYWNsb2Nh bCB0cmFjZXMgdGhpcyBtYWNybyB0byBmaW5kIHRoZSBBdXRvY29uZiB2ZXJzaW9uLg0KKyMgVGhp cyBpcyBhIHByaXZhdGUgbWFjcm8gdG9vLiAgVXNpbmcgbTRfZGVmaW5lIHNpbXBsaWZpZXMNCisj IHRoZSBsb2dpYyBpbiBhY2xvY2FsLCB3aGljaCBjYW4gc2ltcGx5IGlnbm9yZSB0aGlzIGRlZmlu aXRpb24uDQorbTRfZGVmaW5lKFtfQU1fQVVUT0NPTkZfVkVSU0lPTl0sIFtdKQ0KKw0KKyMgQU1f U0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTg0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKyMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBBTV9BVVRPTUFLRV9WRVJT SU9OIHNvIHRoZXkgY2FuIGJlIHRyYWNlZC4NCisjIFRoaXMgZnVuY3Rpb24gaXMgQUNfUkVRVUlS RWQgYnkgQU1fSU5JVF9BVVRPTUFLRS4NCitBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01B S0VfVkVSU0lPTl0sDQorW0FNX0FVVE9NQUtFX1ZFUlNJT04oWzEuMTEuMV0pZG5sDQorbTRfaWZu ZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwNCisgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJ T05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwNCitfQU1fQVVUT0NPTkZfVkVSU0lPTiht NF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSkpXSkNCisNCisjIEFNX0FVWF9ESVJfRVhQQU5E ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSot DQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBj b3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv bnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgRm9yIHByb2pl Y3RzIHVzaW5nIEFDX0NPTkZJR19BVVhfRElSKFtmb29dKSwgQXV0b2NvbmYgc2V0cw0KKyMgJGFj X2F1eF9kaXIgdG8gYCRzcmNkaXIvZm9vJy4gIEluIG90aGVyIHByb2plY3RzLCBpdCBpcyBzZXQg dG8NCisjIGAkc3JjZGlyJywgYCRzcmNkaXIvLi4nLCBvciBgJHNyY2Rpci8uLi8uLicuDQorIw0K KyMgT2YgY291cnNlLCBBdXRvbWFrZSBtdXN0IGhvbm9yIHRoaXMgdmFyaWFibGUgd2hlbmV2ZXIg aXQgY2FsbHMgYQ0KKyMgdG9vbCBmcm9tIHRoZSBhdXhpbGlhcnkgZGlyZWN0b3J5LiAgVGhlIHBy b2JsZW0gaXMgdGhhdCAkc3JjZGlyIChhbmQNCisjIHRoZXJlZm9yZSAkYWNfYXV4X2RpciBhcyB3 ZWxsKSBjYW4gYmUgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlLA0KKyMgZGVwZW5kaW5nIG9u IGhvdyBjb25maWd1cmUgaXMgcnVuLiAgVGhpcyBpcyBwcmV0dHkgYW5ub3lpbmcsIHNpbmNlDQor IyBpdCBtYWtlcyAkYWNfYXV4X2RpciBxdWl0ZSB1bnVzYWJsZSBpbiBzdWJkaXJlY3Rvcmllczog aW4gdGhlIHRvcA0KKyMgc291cmNlIGRpcmVjdG9yeSwgYW55IGZvcm0gd2lsbCB3b3JrIGZpbmUs IGJ1dCBpbiBzdWJkaXJlY3RvcmllcyBhDQorIyByZWxhdGl2ZSBwYXRoIG5lZWRzIHRvIGJlIGFk anVzdGVkIGZpcnN0Lg0KKyMNCisjICRhY19hdXhfZGlyL21pc3NpbmcNCisjICAgIGZhaWxzIHdo ZW4gY2FsbGVkIGZyb20gYSBzdWJkaXJlY3RvcnkgaWYgJGFjX2F1eF9kaXIgaXMgcmVsYXRpdmUN CisjICR0b3Bfc3JjZGlyLyRhY19hdXhfZGlyL21pc3NpbmcNCisjICAgIGZhaWxzIGlmICRhY19h dXhfZGlyIGlzIGFic29sdXRlLA0KKyMgICAgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRp cmVjdG9yeSBpbiBhIFZQQVRIIGJ1aWxkIHdpdGgNCisjICAgICAgICAgIGEgcmVsYXRpdmUgJGFj X2F1eF9kaXINCisjDQorIyBUaGUgcmVhc29uIG9mIHRoZSBsYXR0ZXIgZmFpbHVyZSBpcyB0aGF0 ICR0b3Bfc3JjZGlyIGFuZCAkYWNfYXV4X2Rpcg0KKyMgYXJlIGJvdGggcHJlZml4ZWQgYnkgJHNy Y2Rpci4gIEluIGFuIGluLXNvdXJjZSBidWlsZCB0aGlzIGlzIHVzdWFsbHkNCisjIGhhcm1sZXNz IGJlY2F1c2UgJHNyY2RpciBpcyBgLicsIGJ1dCB0aGluZ3Mgd2lsbCBicm9rZSB3aGVuIHlvdQ0K KyMgc3RhcnQgYSBWUEFUSCBidWlsZCBvciB1c2UgYW4gYWJzb2x1dGUgJHNyY2Rpci4NCisjDQor IyBTbyB3ZSBjb3VsZCB1c2Ugc29tZXRoaW5nIHNpbWlsYXIgdG8gJHRvcF9zcmNkaXIvJGFjX2F1 eF9kaXIvbWlzc2luZywNCisjIGlmZiB3ZSBzdHJpcCB0aGUgbGVhZGluZyAkc3JjZGlyIGZyb20g JGFjX2F1eF9kaXIuICBUaGF0IHdvdWxkIGJlOg0KKyMgICBhbV9hdXhfZGlyPSdcJCh0b3Bfc3Jj ZGlyKS8nYGV4cHIgIiRhY19hdXhfZGlyIiA6ICIkc3JjZGlyLy8qXCguKlwpImANCisjIGFuZCB0 aGVuIHdlIHdvdWxkIGRlZmluZSAkTUlTU0lORyBhcw0KKyMgICBNSVNTSU5HPSJcJHtTSEVMTH0g JGFtX2F1eF9kaXIvbWlzc2luZyINCisjIFRoaXMgd2lsbCB3b3JrIGFzIGxvbmcgYXMgTUlTU0lO RyBpcyBub3QgY2FsbGVkIGZyb20gY29uZmlndXJlLCBiZWNhdXNlDQorIyB1bmZvcnR1bmF0ZWx5 ICQodG9wX3NyY2RpcikgaGFzIG5vIG1lYW5pbmcgaW4gY29uZmlndXJlLg0KKyMgSG93ZXZlciB0 aGVyZSBhcmUgb3RoZXIgdmFyaWFibGVzLCBsaWtlIENDLCB3aGljaCBhcmUgb2Z0ZW4gdXNlZCBp bg0KKyMgY29uZmlndXJlLCBhbmQgY291bGQgdGhlcmVmb3JlIG5vdCB1c2UgdGhpcyAiZml4ZWQi ICRhY19hdXhfZGlyLg0KKyMNCisjIEFub3RoZXIgc29sdXRpb24sIHVzZWQgaGVyZSwgaXMgdG8g YWx3YXlzIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbg0KKyMgYWJzb2x1dGUgUEFUSC4gIFRoZSBk cmF3YmFjayBpcyB0aGF0IHVzaW5nIGFic29sdXRlIHBhdGhzIHByZXZlbnQgYQ0KKyMgY29uZmln dXJlZCB0cmVlIHRvIGJlIG1vdmVkIHdpdGhvdXQgcmVjb25maWd1cmF0aW9uLg0KKw0KK0FDX0RF RlVOKFtBTV9BVVhfRElSX0VYUEFORF0sDQorW2RubCBSZWx5IG9uIGF1dG9jb25mIHRvIHNldCB1 cCBDRFBBVEggcHJvcGVybHkuDQorQUNfUFJFUkVRKFsyLjUwXSlkbmwNCisjIGV4cGFuZCAkYWNf YXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoDQorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIg JiYgcHdkYA0KK10pDQorDQorIyBBTV9DT05ESVRJT05BTCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChD KSAxOTk3LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4DQorIyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0 d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBl cm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91 dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisN CisjIHNlcmlhbCA5DQorDQorIyBBTV9DT05ESVRJT05BTChOQU1FLCBTSEVMTC1DT05ESVRJT04p DQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEZWZpbmUgYSBj b25kaXRpb25hbC4NCitBQ19ERUZVTihbQU1fQ09ORElUSU9OQUxdLA0KK1tBQ19QUkVSRVEoMi41 MilkbmwNCisgaWZlbHNlKFskMV0sIFtUUlVFXSwgIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29u ZGl0aW9uOiAkMV0pXSwNCisJWyQxXSwgW0ZBTFNFXSwgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBj b25kaXRpb246ICQxXSldKWRubA0KK0FDX1NVQlNUKFskMV9UUlVFXSlkbmwNCitBQ19TVUJTVChb JDFfRkFMU0VdKWRubA0KK19BTV9TVUJTVF9OT1RNQUtFKFskMV9UUlVFXSlkbmwNCitfQU1fU1VC U1RfTk9UTUFLRShbJDFfRkFMU0VdKWRubA0KK200X2RlZmluZShbX0FNX0NPTkRfVkFMVUVfJDFd LCBbJDJdKWRubA0KK2lmICQyOyB0aGVuDQorICAkMV9UUlVFPQ0KKyAgJDFfRkFMU0U9JyMnDQor ZWxzZQ0KKyAgJDFfVFJVRT0nIycNCisgICQxX0ZBTFNFPQ0KK2ZpDQorQUNfQ09ORklHX0NPTU1B TkRTX1BSRSgNCitbaWYgdGVzdCAteiAiJHskMV9UUlVFfSIgJiYgdGVzdCAteiAiJHskMV9GQUxT RX0iOyB0aGVuDQorICBBQ19NU0dfRVJST1IoW1tjb25kaXRpb25hbCAiJDEiIHdhcyBuZXZlciBk ZWZpbmVkLg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBj b25kaXRpb25hbGx5Ll1dKQ0KK2ZpXSldKQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAw LCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5DQorIyBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Np b24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2Rp ZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNl cmlhbCAxMA0KKw0KKyMgVGhlcmUgYXJlIGEgZmV3IGRpcnR5IGhhY2tzIGJlbG93IHRvIGF2b2lk IGxldHRpbmcgYEFDX1BST0dfQ0MnIGJlDQorIyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBj YXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcgYWNsb2NhbC5tNCwNCisjIHdpbGwgdGhpbmsgaXQg c2VlcyBhICp1c2UqLCBhbmQgdGhlcmVmb3JlIHdpbGwgdHJpZ2dlciBhbGwgaXQncw0KKyMgQyBz dXBwb3J0IG1hY2hpbmVyeS4gIEFsc28gbm90ZSB0aGF0IGl0IG1lYW5zIHRoYXQgYXV0b3NjYW4s IHNlZWluZw0KKyMgQ0MgZXRjLiBpbiB0aGUgTWFrZWZpbGUsIHdpbGwgYXNrIGZvciBhbiBBQ19Q Uk9HX0NDIHVzZS4uLg0KKw0KKw0KKyMgX0FNX0RFUEVOREVOQ0lFUyhOQU1FKQ0KKyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2VlIGhvdyB0aGUgY29tcGlsZXIgaW1wbGVtZW50cyBkZXBl bmRlbmN5IGNoZWNraW5nLg0KKyMgTkFNRSBpcyAiQ0MiLCAiQ1hYIiwgIkdDSiIsIG9yICJPQkpD Ii4NCisjIFdlIHRyeSBhIGZldyB0ZWNobmlxdWVzIGFuZCB1c2UgdGhhdCB0byBzZXQgYSBzaW5n bGUgY2FjaGUgdmFyaWFibGUuDQorIw0KKyMgV2UgZG9uJ3QgQUNfUkVRVUlSRSB0aGUgY29ycmVz cG9uZGluZyBBQ19QUk9HX0NDIHNpbmNlIHRoZSBsYXR0ZXIgd2FzDQorIyBtb2RpZmllZCB0byBp bnZva2UgX0FNX0RFUEVOREVOQ0lFUyhDQyk7IHdlIHdvdWxkIGhhdmUgYSBjaXJjdWxhcg0KKyMg ZGVwZW5kZW5jeSwgYW5kIGdpdmVuIHRoYXQgdGhlIHVzZXIgaXMgbm90IGV4cGVjdGVkIHRvIHJ1 biB0aGlzIG1hY3JvLA0KKyMganVzdCByZWx5IG9uIEFDX1BST0dfQ0MuDQorQUNfREVGVU4oW19B TV9ERVBFTkRFTkNJRVNdLA0KK1tBQ19SRVFVSVJFKFtBTV9TRVRfREVQRElSXSlkbmwNCitBQ19S RVFVSVJFKFtBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10pZG5sDQorQUNfUkVRVUlSRShb QU1fTUFLRV9JTkNMVURFXSlkbmwNCitBQ19SRVFVSVJFKFtBTV9ERVBfVFJBQ0tdKWRubA0KKw0K K2lmZWxzZShbJDFdLCBDQywgICBbZGVwY2M9IiRDQyIgICBhbV9jb21waWxlcl9saXN0PV0sDQor ICAgICAgIFskMV0sIENYWCwgIFtkZXBjYz0iJENYWCIgIGFtX2NvbXBpbGVyX2xpc3Q9XSwNCisg ICAgICAgWyQxXSwgT0JKQywgW2RlcGNjPSIkT0JKQyIgYW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBn Y2MnXSwNCisgICAgICAgWyQxXSwgVVBDLCAgW2RlcGNjPSIkVVBDIiAgYW1fY29tcGlsZXJfbGlz dD1dLA0KKyAgICAgICBbJDFdLCBHQ0osICBbZGVwY2M9IiRHQ0oiICBhbV9jb21waWxlcl9saXN0 PSdnY2MzIGdjYyddLA0KKyAgICAgICAgICAgICAgICAgICBbZGVwY2M9IiQkMSIgICBhbV9jb21w aWxlcl9saXN0PV0pDQorDQorQUNfQ0FDSEVfQ0hFQ0soW2RlcGVuZGVuY3kgc3R5bGUgb2YgJGRl cGNjXSwNCisgICAgICAgICAgICAgICBbYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5 cGVdLA0KK1tpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAi OyB0aGVuDQorICAjIFdlIG1ha2UgYSBzdWJkaXIgYW5kIGRvIHRoZSB0ZXN0cyB0aGVyZS4gIE90 aGVyd2lzZSB3ZSBjYW4gZW5kIHVwDQorICAjIG1ha2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRv bid0IGtub3cgYWJvdXQgYW5kIG5ldmVyIHJlbW92ZS4gIEZvcg0KKyAgIyBpbnN0YW5jZSBpdCB3 YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXANCisgICMg bWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0 IHRoZSBvdXRwdXQNCisgICMgaW4gRCcuDQorICBta2RpciBjb25mdGVzdC5kaXINCisgICMgQ29w eSBkZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlm IHdlJ3JlDQorICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5Lg0KKyAgY3AgIiRhbV9kZXBj b21wIiBjb25mdGVzdC5kaXINCisgIGNkIGNvbmZ0ZXN0LmRpcg0KKyAgIyBXZSB3aWxsIGJ1aWxk IG9iamVjdHMgYW5kIGRlcGVuZGVuY2llcyBpbiBhIHN1YmRpcmVjdG9yeSBiZWNhdXNlDQorICAj IGl0IGhlbHBzIHRvIGRldGVjdCBpbmFwcGxpY2FibGUgZGVwZW5kZW5jeSBtb2Rlcy4gIEZvciBp bnN0YW5jZQ0KKyAgIyBib3RoIFRydTY0J3MgY2MgYW5kIElDQyBzdXBwb3J0IC1NRCB0byBvdXRw dXQgZGVwZW5kZW5jaWVzIGFzIGENCisgICMgc2lkZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1 dCBJQ0Mgd2lsbCBwdXQgdGhlIGRlcGVuZGVuY2llcyBpbg0KKyAgIyB0aGUgY3VycmVudCBkaXJl Y3Rvcnkgd2hpbGUgVHJ1NjQgd2lsbCBwdXQgdGhlbSBpbiB0aGUgb2JqZWN0DQorICAjIGRpcmVj dG9yeS4NCisgIG1rZGlyIHN1Yg0KKw0KKyAgYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVy X3R5cGU9bm9uZQ0KKyAgaWYgdGVzdCAiJGFtX2NvbXBpbGVyX2xpc3QiID0gIiI7IHRoZW4NCisg ICAgIGFtX2NvbXBpbGVyX2xpc3Q9YHNlZCAtbiBbJ3MvXiMqXChbYS16QS1aMC05XSpcKSkkL1wx L3AnXSA8IC4vZGVwY29tcGANCisgIGZpDQorICBhbV9fdW5pdmVyc2FsPWZhbHNlDQorICBtNF9j YXNlKFskMV0sIFtDQ10sDQorICAgIFtjYXNlICIgJGRlcGNjICIgaW4gIygNCisgICAgICpcIC1h cmNoXCAqXCAtYXJjaFwgKikgYW1fX3VuaXZlcnNhbD10cnVlIDs7DQorICAgICBlc2FjXSwNCisg ICAgW0NYWF0sDQorICAgIFtjYXNlICIgJGRlcGNjICIgaW4gIygNCisgICAgICpcIC1hcmNoXCAq XCAtYXJjaFwgKikgYW1fX3VuaXZlcnNhbD10cnVlIDs7DQorICAgICBlc2FjXSkNCisNCisgIGZv ciBkZXBtb2RlIGluICRhbV9jb21waWxlcl9saXN0OyBkbw0KKyAgICAjIFNldHVwIGEgc291cmNl IHdpdGggbWFueSBkZXBlbmRlbmNpZXMsIGJlY2F1c2Ugc29tZSBjb21waWxlcnMNCisgICAgIyBs aWtlIHRvIHdyYXAgbGFyZ2UgZGVwZW5kZW5jeSBsaXN0cyBvbiBjb2x1bW4gODAgKHdpdGggXCks IGFuZA0KKyAgICAjIHdlIHNob3VsZCBub3QgY2hvb3NlIGEgZGVwY29tcCBtb2RlIHdoaWNoIGlz IGNvbmZ1c2VkIGJ5IHRoaXMuDQorICAgICMNCisgICAgIyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRo ZXNlIGZpbGVzIGZvciBlYWNoIHRlc3QsIGFzIHRoZSBjb21waWxlciBtYXkNCisgICAgIyBvdmVy d3JpdGUgc29tZSBvZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRoIG9ic2N1cmUgY29tbWFuZCBsaW5l cy4NCisgICAgIyBUaGlzIGhhcHBlbnMgYXQgbGVhc3Qgd2l0aCB0aGUgQUlYIEMgY29tcGlsZXIu DQorICAgIDogPiBzdWIvY29uZnRlc3QuYw0KKyAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNjsgZG8N CisgICAgICBlY2hvICcjaW5jbHVkZSAiY29uZnRzdCckaScuaCInID4+IHN1Yi9jb25mdGVzdC5j DQorICAgICAgIyBVc2luZyBgOiA+IHN1Yi9jb25mdHN0JGkuaCcgY3JlYXRlcyBvbmx5IHN1Yi9j b25mdHN0MS5oIHdpdGgNCisgICAgICAjIFNvbGFyaXMgOCdzIHsvdXNyLH0vYmluL3NoLg0KKyAg ICAgIHRvdWNoIHN1Yi9jb25mdHN0JGkuaA0KKyAgICBkb25lDQorICAgIGVjaG8gIiR7YW1fX2lu Y2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1b3RlfSIgPiBjb25mbWYN CisNCisgICAgIyBXZSBjaGVjayB3aXRoIGAtYycgYW5kIGAtbycgZm9yIHRoZSBzYWtlIG9mIHRo ZSAiZGFzaG1zdGRvdXQiDQorICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBTdW5Q cm8gQysrIGNvbXBpbGVyIGRvZXMgbm90IHByb3Blcmx5DQorICAgICMgaGFuZGxlIGAtTSAtbycs IGFuZCB3ZSBuZWVkIHRvIGRldGVjdCB0aGlzLiAgQWxzbywgc29tZSBJbnRlbA0KKyAgICAjIHZl cnNpb25zIGhhZCB0cm91YmxlIHdpdGggb3V0cHV0IGluIHN1YmRpcnMNCisgICAgYW1fX29iaj1z dWIvY29uZnRlc3QuJHtPQkpFWFQtb30NCisgICAgYW1fX21pbnVzX29iaj0iLW8gJGFtX19vYmoi DQorICAgIGNhc2UgJGRlcG1vZGUgaW4NCisgICAgZ2NjKQ0KKyAgICAgICMgVGhpcyBkZXBtb2Rl IGNhdXNlcyBhIGNvbXBpbGVyIHJhY2UgaW4gdW5pdmVyc2FsIG1vZGUuDQorICAgICAgdGVzdCAi JGFtX191bml2ZXJzYWwiID0gZmFsc2UgfHwgY29udGludWUNCisgICAgICA7Ow0KKyAgICBub3Np ZGVlZmZlY3QpDQorICAgICAgIyBhZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5 IHNpZGUtZWZmZWN0LCBzbyB0aGV5J2xsDQorICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBs aWNpdGx5IHJlcXVlc3RlZA0KKyAgICAgIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJh Y2tpbmciID0geHllczsgdGhlbg0KKwljb250aW51ZQ0KKyAgICAgIGVsc2UNCisJYnJlYWsNCisg ICAgICBmaQ0KKyAgICAgIDs7DQorICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpDQorICAgICAg IyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28g dGVzdCBoYXMNCisgICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUg ZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQNCisgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5j dGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLg0KKyAgICAgIGFtX19vYmo9Y29uZnRlc3Qu JHtPQkpFWFQtb30NCisgICAgICBhbV9fbWludXNfb2JqPQ0KKyAgICAgIDs7DQorICAgIG5vbmUp IGJyZWFrIDs7DQorICAgIGVzYWMNCisgICAgaWYgZGVwbW9kZT0kZGVwbW9kZSBcDQorICAgICAg IHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9JGFtX19vYmogXA0KKyAgICAgICBkZXBmaWxl PXN1Yi9jb25mdGVzdC5QbyB0bXBkZXBmaWxlPXN1Yi9jb25mdGVzdC5UUG8gXA0KKyAgICAgICAk U0hFTEwgLi9kZXBjb21wICRkZXBjYyAtYyAkYW1fX21pbnVzX29iaiBzdWIvY29uZnRlc3QuYyBc DQorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJg0KKyAgICAgICBncmVwIHN1 Yi9jb25mdHN0MS5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQorICAgICAg IGdyZXAgc3ViL2NvbmZ0c3Q2Lmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYN CisgICAgICAgZ3JlcCAkYW1fX29iaiBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAm Jg0KKyAgICAgICAke01BS0UtbWFrZX0gLXMgLWYgY29uZm1mID4gL2Rldi9udWxsIDI+JjE7IHRo ZW4NCisgICAgICAjIGljYyBkb2Vzbid0IGNob2tlIG9uIHVua25vd24gb3B0aW9ucywgaXQgd2ls bCBqdXN0IGlzc3VlIHdhcm5pbmdzDQorICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdl cnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UNCisgICAgICAjIHRoYXQg c2F5cyBhbiBvcHRpb24gd2FzIGlnbm9yZWQgb3Igbm90IHN1cHBvcnRlZC4NCisgICAgICAjIFdo ZW4gZ2l2ZW4gLU1QLCBpY2MgNy4wIGFuZCA3LjEgY29tcGxhaW4gdGh1c2x5Og0KKyAgICAgICMg ICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJn dW1lbnQgcmVxdWlyZWQNCisgICAgICAjIFRoZSBkaWFnbm9zaXMgY2hhbmdlZCBpbiBpY2MgOC4w Og0KKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSByZW1hcms6IG9wdGlvbiAnLU1QJyBub3Qg c3VwcG9ydGVkDQorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJy IHx8DQorICAgICAgICAgIGdyZXAgJ25vdCBzdXBwb3J0ZWQnIGNvbmZ0ZXN0LmVycikgPi9kZXYv bnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UNCisgICAgICAgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19j b21waWxlcl90eXBlPSRkZXBtb2RlDQorICAgICAgICBicmVhaw0KKyAgICAgIGZpDQorICAgIGZp DQorICBkb25lDQorDQorICBjZCAuLg0KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KK2Vsc2UNCisg IGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUNCitmaQ0KK10pDQorQUNf U1VCU1QoWyQxREVQTU9ERV0sIFtkZXBtb2RlPSRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGls ZXJfdHlwZV0pDQorQU1fQ09ORElUSU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBbDQorICB0ZXN0ICJ4 JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm8gXA0KKyAgJiYgdGVzdCAiJGFtX2N2 XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA9IGdjYzNdKQ0KK10pDQorDQorDQorIyBB TV9TRVRfREVQRElSDQorIyAtLS0tLS0tLS0tLS0tDQorIyBDaG9vc2UgYSBkaXJlY3RvcnkgbmFt ZSBmb3IgZGVwZW5kZW5jeSBmaWxlcy4NCisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4g X0FNX0RFUEVOREVOQ0lFUw0KK0FDX0RFRlVOKFtBTV9TRVRfREVQRElSXSwNCitbQUNfUkVRVUlS RShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwNCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19s ZWFkaW5nX2RvdH1kZXBzIl0pZG5sDQorXSkNCisNCisNCisjIEFNX0RFUF9UUkFDSw0KKyMgLS0t LS0tLS0tLS0tDQorQUNfREVGVU4oW0FNX0RFUF9UUkFDS10sDQorW0FDX0FSR19FTkFCTEUoZGVw ZW5kZW5jeS10cmFja2luZywNCitbICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3Bl ZWRzIHVwIG9uZS10aW1lIGJ1aWxkDQorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAg ZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9yc10pDQoraWYgdGVzdCAieCRl bmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBhbV9kZXBjb21wPSIk YWNfYXV4X2Rpci9kZXBjb21wIg0KKyAgQU1ERVBCQUNLU0xBU0g9J1wnDQorZmkNCitBTV9DT05E SVRJT05BTChbQU1ERVBdLCBbdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0g eG5vXSkNCitBQ19TVUJTVChbQU1ERVBCQUNLU0xBU0hdKWRubA0KK19BTV9TVUJTVF9OT1RNQUtF KFtBTURFUEJBQ0tTTEFTSF0pZG5sDQorXSkNCisNCisjIEdlbmVyYXRlIGNvZGUgdG8gc2V0IHVw IGRlcGVuZGVuY3kgdHJhY2tpbmcuICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotDQorDQor IyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUs IDIwMDgNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmls ZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZl cyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMg d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMg cHJlc2VydmVkLg0KKw0KKyNzZXJpYWwgNQ0KKw0KKyMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NP TU1BTkRTDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitBQ19ERUZVTihbX0FN X09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwNCitbew0KKyAgIyBBdXRvY29uZiAyLjYyIHF1 b3RlcyAtLWZpbGUgYXJndW1lbnRzIGZvciBldmFsLCBidXQgbm90IHdoZW4gZmlsZXMNCisgICMg YXJlIGxpc3RlZCB3aXRob3V0IC0tZmlsZS4gIExldCdzIHBsYXkgc2FmZSBhbmQgb25seSBlbmFi bGUgdGhlIGV2YWwNCisgICMgaWYgd2UgZGV0ZWN0IHRoZSBxdW90aW5nLg0KKyAgY2FzZSAkQ09O RklHX0ZJTEVTIGluDQorICAqXCcqKSBldmFsIHNldCB4ICIkQ09ORklHX0ZJTEVTIiA7Ow0KKyAg KikgICBzZXQgeCAkQ09ORklHX0ZJTEVTIDs7DQorICBlc2FjDQorICBzaGlmdA0KKyAgZm9yIG1m DQorICBkbw0KKyAgICAjIFN0cmlwIE1GIHNvIHdlIGVuZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRo ZSBmaWxlLg0KKyAgICBtZj1gZWNobyAiJG1mIiB8IHNlZCAtZSAncy86LiokLy8nYA0KKyAgICAj IENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhbiBBdXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgb3Ig bm90Lg0KKyAgICAjIFdlIHVzZWQgdG8gbWF0Y2ggb25seSB0aGUgZmlsZXMgbmFtZWQgYE1ha2Vm aWxlLmluJywgYnV0DQorICAgICMgc29tZSBwZW9wbGUgcmVuYW1lIHRoZW07IHNvIGluc3RlYWQg d2UgbG9vayBhdCB0aGUgZmlsZSBjb250ZW50Lg0KKyAgICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBs aW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxlIHBvc3QtcHJvY2Vzcw0KKyAgICAjIGVhY2gg TWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9uIHRvcCBvZiBlYWNoIGZpbGUgdG8gc2F5 IHNvLg0KKyAgICAjIEdyZXAnaW5nIHRoZSB3aG9sZSBmaWxlIGlzIG5vdCBnb29kIGVpdGhlcjog QUlYIGdyZXAgaGFzIGEgbGluZQ0KKyAgICAjIGxpbWl0IG9mIDIwNDgsIGJ1dCBhbGwgc2VkJ3Mg d2Uga25vdyBoYXZlIHVuZGVyc3RhbmQgYXQgbGVhc3QgNDAwMC4NCisgICAgaWYgc2VkIC1uICdz LF4jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UuKixYLHAnICIkbWYiIHwgZ3JlcCBYID4vZGV2L251 bGwgMj4mMTsgdGhlbg0KKyAgICAgIGRpcnBhcnQ9YEFTX0RJUk5BTUUoIiRtZiIpYA0KKyAgICBl bHNlDQorICAgICAgY29udGludWUNCisgICAgZmkNCisgICAgIyBFeHRyYWN0IHRoZSBkZWZpbml0 aW9uIG9mIERFUERJUiwgYW1fX2luY2x1ZGUsIGFuZCBhbV9fcXVvdGUNCisgICAgIyBmcm9tIHRo ZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2UnLg0KKyAgICBERVBESVI9YHNlZCAtbiAn cy9eREVQRElSID0gLy9wJyA8ICIkbWYiYA0KKyAgICB0ZXN0IC16ICIkREVQRElSIiAmJiBjb250 aW51ZQ0KKyAgICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAi JG1mImANCisgICAgdGVzdCAteiAiYW1fX2luY2x1ZGUiICYmIGNvbnRpbnVlDQorICAgIGFtX19x dW90ZT1gc2VkIC1uICdzL15hbV9fcXVvdGUgPSAvL3AnIDwgIiRtZiJgDQorICAgICMgV2hlbiB1 c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0 DQorICAgIFU9YHNlZCAtbiAncy9eVSA9IC8vcCcgPCAiJG1mImANCisgICAgIyBGaW5kIGFsbCBk ZXBlbmRlbmN5IG91dHB1dCBmaWxlcywgdGhleSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aA0KKyAg ICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVz ZSBpdCBpcyB0aGUNCisgICAgIyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJ UikgdG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUNCisgICAgIyBleHBhbnNpb24uDQorICAgIGZv ciBmaWxlIGluIGBzZWQgLW4gIg0KKyAgICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCgu KihERVBESVIpLipcKSRhbV9fcXVvdGUiJyQvXDEvcCcgPCIkbWYiIHwgXA0KKwkgc2VkIC1lICdz L1wkKERFUERJUikvJyIkREVQRElSIicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvDQorICAg ICAgIyBNYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBleGlzdHMuDQorICAgICAgdGVzdCAtZiAiJGRp cnBhcnQvJGZpbGUiICYmIGNvbnRpbnVlDQorICAgICAgZmRpcj1gQVNfRElSTkFNRShbIiRmaWxl Il0pYA0KKyAgICAgIEFTX01LRElSX1AoWyRkaXJwYXJ0LyRmZGlyXSkNCisgICAgICAjIGVjaG8g ImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIg0KKyAgICAgIGVjaG8gJyMgZHVtbXknID4gIiRkaXJw YXJ0LyRmaWxlIg0KKyAgICBkb25lDQorICBkb25lDQorfQ0KK10pIyBfQU1fT1VUUFVUX0RFUEVO REVOQ1lfQ09NTUFORFMNCisNCisNCisjIEFNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTDQor IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgVGhpcyBtYWNybyBzaG91bGQgb25s eSBiZSBpbnZva2VkIG9uY2UgLS0gdXNlIHZpYSBBQ19SRVFVSVJFLg0KKyMNCisjIFRoaXMgY29k ZSBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcNCisj IGlzIGVuYWJsZWQuICBGSVhNRS4gIFRoaXMgY3JlYXRlcyBlYWNoIGAuUCcgZmlsZSB0aGF0IHdl IHdpbGwNCisjIG5lZWQgaW4gb3JkZXIgdG8gYm9vdHN0cmFwIHRoZSBkZXBlbmRlbmN5IGhhbmRs aW5nIGNvZGUuDQorQUNfREVGVU4oW0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwNCitb QUNfQ09ORklHX0NPTU1BTkRTKFtkZXBmaWxlc10sDQorICAgICBbdGVzdCB4IiRBTURFUF9UUlVF IiAhPSB4IiIgfHwgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwNCisgICAgIFtBTURF UF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiXSkNCitdKQ0KKw0K KyMgRG8gYWxsIHRoZSB3b3JrIGZvciBBdXRvbWFrZS4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0qLSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5 OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwNCisjIDIwMDUsIDIwMDYsIDIw MDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVz IHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgMTYNCisNCisjIFRoaXMgbWFjcm8gYWN0dWFsbHkgZG9l cyB0b28gbXVjaC4gIFNvbWUgY2hlY2tzIGFyZSBvbmx5IG5lZWRlZCBpZg0KKyMgeW91ciBwYWNr YWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVh bC4NCisNCisjIEFNX0lOSVRfQVVUT01BS0UoUEFDS0FHRSwgVkVSU0lPTiwgW05PLURFRklORV0p DQorIyBBTV9JTklUX0FVVE9NQUtFKFtPUFRJT05TXSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBUaGUgY2FsbCB3aXRoIFBBQ0tBR0UgYW5k IFZFUlNJT04gYXJndW1lbnRzIGlzIHRoZSBvbGQgc3R5bGUNCisjIGNhbGwgKHByZSBhdXRvY29u Zi0yLjUwKSwgd2hpY2ggaXMgYmVpbmcgcGhhc2VkIG91dC4gIFBBQ0tBR0UNCisjIGFuZCBWRVJT SU9OIHNob3VsZCBub3cgYmUgcGFzc2VkIHRvIEFDX0lOSVQgYW5kIHJlbW92ZWQgZnJvbQ0KKyMg dGhlIGNhbGwgdG8gQU1fSU5JVF9BVVRPTUFLRS4NCisjIFdlIHN1cHBvcnQgYm90aCBjYWxsIHN0 eWxlcyBmb3IgdGhlIHRyYW5zaXRpb24uICBBZnRlcg0KKyMgdGhlIG5leHQgQXV0b21ha2UgcmVs ZWFzZSwgQXV0b2NvbmYgY2FuIG1ha2UgdGhlIEFDX0lOSVQNCisjIGFyZ3VtZW50cyBtYW5kYXRv cnksIGFuZCB0aGVuIHdlIGNhbiBkZXBlbmQgb24gYSBuZXcgQXV0b2NvbmYNCisjIHJlbGVhc2Ug YW5kIGRyb3AgdGhlIG9sZCBjYWxsIHN1cHBvcnQuDQorQUNfREVGVU4oW0FNX0lOSVRfQVVUT01B S0VdLA0KK1tBQ19QUkVSRVEoWzIuNjJdKWRubA0KK2RubCBBdXRvY29uZiB3YW50cyB0byBkaXNh bGxvdyBBTV8gbmFtZXMuICBXZSBleHBsaWNpdGx5IGFsbG93DQorZG5sIHRoZSBvbmVzIHdlIGNh cmUgYWJvdXQuDQorbTRfcGF0dGVybl9hbGxvdyhbXkFNX1tBLVpdK0ZMQUdTJF0pZG5sDQorQUNf UkVRVUlSRShbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0pZG5sDQorQUNfUkVRVUlS RShbQUNfUFJPR19JTlNUQUxMXSlkbmwNCitpZiB0ZXN0ICJgY2QgJHNyY2RpciAmJiBwd2RgIiAh PSAiYHB3ZGAiOyB0aGVuDQorICAjIFVzZSAtSSQoc3JjZGlyKSBvbmx5IHdoZW4gJChzcmNkaXIp ICE9IC4sIHNvIHRoYXQgbWFrZSdzIG91dHB1dA0KKyAgIyBpcyBub3QgcG9sbHV0ZWQgd2l0aCBy ZXBlYXRlZCAiLUkuIg0KKyAgQUNfU1VCU1QoW2FtX19pc3JjXSwgWycgLUkkKHNyY2RpciknXSlf QU1fU1VCU1RfTk9UTUFLRShbYW1fX2lzcmNdKWRubA0KKyAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNk aXIgYWxyZWFkeSBjb25maWd1cmVkDQorICBpZiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1 czsgdGhlbg0KKyAgICBBQ19NU0dfRVJST1IoW3NvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25m aWd1cmVkOyBydW4gIm1ha2UgZGlzdGNsZWFuIiB0aGVyZSBmaXJzdF0pDQorICBmaQ0KK2ZpDQor DQorIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoDQoraWYgdGVzdCAteiAiJENZR1BBVEhf VyI7IHRoZW4NCisgIGlmIChjeWdwYXRoIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnDQorICBlbHNlDQorICAgIENZR1BB VEhfVz1lY2hvDQorICBmaQ0KK2ZpDQorQUNfU1VCU1QoW0NZR1BBVEhfV10pDQorDQorIyBEZWZp bmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLg0KK2RubCBEaXN0aW5ndWlzaCBiZXR3ZWVu IG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNhbGxzLg0KK200X2lmdmFsKFskMl0sDQorW200X2lm dmFsKFskM10sIFtfQU1fU0VUX09QVElPTihbbm8tZGVmaW5lXSldKWRubA0KKyBBQ19TVUJTVChb UEFDS0FHRV0sIFskMV0pZG5sDQorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWyQyXSldLA0KK1tfQU1f U0VUX09QVElPTlMoWyQxXSlkbmwNCitkbmwgRGlhZ25vc2Ugb2xkLXN0eWxlIEFDX0lOSVQgd2l0 aCBuZXctc3R5bGUgQU1fQVVUT01BS0VfSU5JVC4NCittNF9pZihtNF9pZmRlZihbQUNfUEFDS0FH RV9OQU1FXSwgMSltNF9pZmRlZihbQUNfUEFDS0FHRV9WRVJTSU9OXSwgMSksIDExLCwNCisgIFtt NF9mYXRhbChbQUNfSU5JVCBzaG91bGQgYmUgY2FsbGVkIHdpdGggcGFja2FnZSBhbmQgdmVyc2lv biBhcmd1bWVudHNdKV0pZG5sDQorIEFDX1NVQlNUKFtQQUNLQUdFXSwgWydBQ19QQUNLQUdFX1RB Uk5BTUUnXSlkbmwNCisgQUNfU1VCU1QoW1ZFUlNJT05dLCBbJ0FDX1BBQ0tBR0VfVkVSU0lPTidd KV0pZG5sDQorDQorX0FNX0lGX09QVElPTihbbm8tZGVmaW5lXSwsDQorW0FDX0RFRklORV9VTlFV T1RFRChQQUNLQUdFLCAiJFBBQ0tBR0UiLCBbTmFtZSBvZiBwYWNrYWdlXSkNCisgQUNfREVGSU5F X1VOUVVPVEVEKFZFUlNJT04sICIkVkVSU0lPTiIsIFtWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdl XSldKWRubA0KKw0KKyMgU29tZSB0b29scyBBdXRvbWFrZSBuZWVkcy4NCitBQ19SRVFVSVJFKFtB TV9TQU5JVFlfQ0hFQ0tdKWRubA0KK0FDX1JFUVVJUkUoW0FDX0FSR19QUk9HUkFNXSlkbmwNCitB TV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0pDQorQU1f TUlTU0lOR19QUk9HKEFVVE9DT05GLCBhdXRvY29uZikNCitBTV9NSVNTSU5HX1BST0coQVVUT01B S0UsIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSkNCitBTV9NSVNTSU5HX1BST0coQVVUT0hF QURFUiwgYXV0b2hlYWRlcikNCitBTV9NSVNTSU5HX1BST0coTUFLRUlORk8sIG1ha2VpbmZvKQ0K K0FDX1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sDQorQUNfUkVRVUlSRShbQU1fUFJP R19JTlNUQUxMX1NUUklQXSlkbmwNCitBQ19SRVFVSVJFKFtBTV9QUk9HX01LRElSX1BdKWRubA0K KyMgV2UgbmVlZCBhd2sgZm9yIHRoZSAiY2hlY2siIHRhcmdldC4gIFRoZSBzeXN0ZW0gImF3ayIg aXMgYmFkIG9uDQorIyBzb21lIHBsYXRmb3Jtcy4NCitBQ19SRVFVSVJFKFtBQ19QUk9HX0FXS10p ZG5sDQorQUNfUkVRVUlSRShbQUNfUFJPR19NQUtFX1NFVF0pZG5sDQorQUNfUkVRVUlSRShbQU1f U0VUX0xFQURJTkdfRE9UXSlkbmwNCitfQU1fSUZfT1BUSU9OKFt0YXItdXN0YXJdLCBbX0FNX1BS T0dfVEFSKFt1c3Rhcl0pXSwNCisJICAgICAgW19BTV9JRl9PUFRJT04oW3Rhci1wYXhdLCBbX0FN X1BST0dfVEFSKFtwYXhdKV0sDQorCQkJICAgICBbX0FNX1BST0dfVEFSKFt2N10pXSldKQ0KK19B TV9JRl9PUFRJT04oW25vLWRlcGVuZGVuY2llc10sLA0KK1tBQ19QUk9WSURFX0lGRUxTRShbQUNf UFJPR19DQ10sDQorCQkgIFtfQU1fREVQRU5ERU5DSUVTKENDKV0sDQorCQkgIFtkZWZpbmUoW0FD X1BST0dfQ0NdLA0KKwkJCSAgZGVmbihbQUNfUFJPR19DQ10pW19BTV9ERVBFTkRFTkNJRVMoQ0Mp XSldKWRubA0KK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sDQorCQkgIFtfQU1fREVQ RU5ERU5DSUVTKENYWCldLA0KKwkJICBbZGVmaW5lKFtBQ19QUk9HX0NYWF0sDQorCQkJICBkZWZu KFtBQ19QUk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwNCitBQ19QUk9WSURF X0lGRUxTRShbQUNfUFJPR19PQkpDXSwNCisJCSAgW19BTV9ERVBFTkRFTkNJRVMoT0JKQyldLA0K KwkJICBbZGVmaW5lKFtBQ19QUk9HX09CSkNdLA0KKwkJCSAgZGVmbihbQUNfUFJPR19PQkpDXSlb X0FNX0RFUEVOREVOQ0lFUyhPQkpDKV0pXSlkbmwNCitdKQ0KK19BTV9JRl9PUFRJT04oW3NpbGVu dC1ydWxlc10sIFtBQ19SRVFVSVJFKFtBTV9TSUxFTlRfUlVMRVNdKV0pZG5sDQorZG5sIFRoZSBg cGFyYWxsZWwtdGVzdHMnIGRyaXZlciBtYXkgbmVlZCB0byBrbm93IGFib3V0IEVYRUVYVCwgc28g YWRkIHRoZQ0KK2RubCBgYW1fX0VYRUVYVCcgY29uZGl0aW9uYWwgaWYgX0FNX0NPTVBJTEVSX0VY RUVYVCB3YXMgc2Vlbi4gIFRoaXMgbWFjcm8NCitkbmwgaXMgaG9va2VkIG9udG8gX0FDX0NPTVBJ TEVSX0VYRUVYVCBlYXJseSwgc2VlIGJlbG93Lg0KK0FDX0NPTkZJR19DT01NQU5EU19QUkUoZG5s DQorW200X3Byb3ZpZGVfaWYoW19BTV9DT01QSUxFUl9FWEVFWFRdLA0KKyAgW0FNX0NPTkRJVElP TkFMKFthbV9fRVhFRVhUXSwgW3Rlc3QgLW4gIiRFWEVFWFQiXSldKV0pZG5sDQorXSkNCisNCitk bmwgSG9vayBpbnRvIGBfQUNfQ09NUElMRVJfRVhFRVhUJyBlYXJseSB0byBsZWFybiBpdHMgZXhw YW5zaW9uLiAgRG8gbm90DQorZG5sIGFkZCB0aGUgY29uZGl0aW9uYWwgcmlnaHQgaGVyZSwgYXMg X0FDX0NPTVBJTEVSX0VYRUVYVCBtYXkgYmUgZnVydGhlcg0KK2RubCBtYW5nbGVkIGJ5IEF1dG9j b25mIGFuZCBydW4gaW4gYSBzaGVsbCBjb25kaXRpb25hbCBzdGF0ZW1lbnQuDQorbTRfZGVmaW5l KFtfQUNfQ09NUElMRVJfRVhFRVhUXSwNCittNF9kZWZuKFtfQUNfQ09NUElMRVJfRVhFRVhUXSlb bTRfcHJvdmlkZShbX0FNX0NPTVBJTEVSX0VYRUVYVF0pXSkNCisNCisNCisjIFdoZW4gY29uZmln LnN0YXR1cyBnZW5lcmF0ZXMgYSBoZWFkZXIsIHdlIG11c3QgdXBkYXRlIHRoZSBzdGFtcC1oIGZp bGUuDQorIyBUaGlzIGZpbGUgcmVzaWRlcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGNv bmZpZyBoZWFkZXINCisjIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFyZSBu dW1iZXJlZCB0byBoYXZlIGRpZmZlcmVudCBuYW1lcy4NCisNCisjIEF1dG9jb25mIGNhbGxzIF9B Q19BTV9DT05GSUdfSEVBREVSX0hPT0sgKHdoZW4gZGVmaW5lZCkgaW4gdGhlDQorIyBsb29wIHdo ZXJlIGNvbmZpZy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28gd2UgY2FuIGdlbmVyYXRl DQorIyBvdXIgc3RhbXAgZmlsZXMgdGhlcmUuDQorQUNfREVGVU4oW19BQ19BTV9DT05GSUdfSEVB REVSX0hPT0tdLA0KK1sjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuDQor X2FtX2FyZz0kMQ0KK19hbV9zdGFtcF9jb3VudD0xDQorZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZp Z19oZWFkZXJzIDo7IGRvDQorICBjYXNlICRfYW1faGVhZGVyIGluDQorICAgICRfYW1fYXJnIHwg JF9hbV9hcmc6KiApDQorICAgICAgYnJlYWsgOzsNCisgICAgKiApDQorICAgICAgX2FtX3N0YW1w X2NvdW50PWBleHByICRfYW1fc3RhbXBfY291bnQgKyAxYCA7Ow0KKyAgZXNhYw0KK2RvbmUNCitl Y2hvICJ0aW1lc3RhbXAgZm9yICRfYW1fYXJnIiA+YEFTX0RJUk5BTUUoWyIkX2FtX2FyZyJdKWAv c3RhbXAtaFtdJF9hbV9zdGFtcF9jb3VudF0pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIw MDMsIDIwMDUsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRo aXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQor IyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0 LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3Rp Y2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fUFJPR19JTlNUQUxMX1NIDQorIyAtLS0tLS0tLS0t LS0tLS0tLS0NCisjIERlZmluZSAkaW5zdGFsbF9zaC4NCitBQ19ERUZVTihbQU1fUFJPR19JTlNU QUxMX1NIXSwNCitbQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKWRubA0KK2lmIHRlc3Qg eCIke2luc3RhbGxfc2h9IiAhPSB4c2V0OyB0aGVuDQorICBjYXNlICRhbV9hdXhfZGlyIGluDQor ICAqXCAqIHwgKlwJKikNCisgICAgaW5zdGFsbF9zaD0iXCR7U0hFTEx9ICckYW1fYXV4X2Rpci9p bnN0YWxsLXNoJyIgOzsNCisgICopDQorICAgIGluc3RhbGxfc2g9Ilwke1NIRUxMfSAkYW1fYXV4 X2Rpci9pbnN0YWxsLXNoIg0KKyAgZXNhYw0KK2ZpDQorQUNfU1VCU1QoaW5zdGFsbF9zaCldKQ0K Kw0KKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQv b3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBs b25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCAyDQorDQorIyBD aGVjayB3aGV0aGVyIHRoZSB1bmRlcmx5aW5nIGZpbGUtc3lzdGVtIHN1cHBvcnRzIGZpbGVuYW1l cw0KKyMgd2l0aCBhIGxlYWRpbmcgZG90LiAgRm9yIGluc3RhbmNlIE1TLURPUyBkb2Vzbid0Lg0K K0FDX0RFRlVOKFtBTV9TRVRfTEVBRElOR19ET1RdLA0KK1tybSAtcmYgLnRzdCAyPi9kZXYvbnVs bA0KK21rZGlyIC50c3QgMj4vZGV2L251bGwNCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4NCisgIGFt X19sZWFkaW5nX2RvdD0uDQorZWxzZQ0KKyAgYW1fX2xlYWRpbmdfZG90PV8NCitmaQ0KK3JtZGly IC50c3QgMj4vZGV2L251bGwNCitBQ19TVUJTVChbYW1fX2xlYWRpbmdfZG90XSldKQ0KKw0KKyMg QWRkIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvcHRpb24gdG8gY29uZmlndXJlLiAgICAgICAg IC0qLSBBdXRvY29uZiAtKi0NCisjIEZyb20gSmltIE1leWVyaW5nDQorDQorIyBDb3B5cmlnaHQg KEMpIDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgN CisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBm cmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBv ciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2Vy dmVkLg0KKw0KKyMgc2VyaWFsIDUNCisNCisjIEFNX01BSU5UQUlORVJfTU9ERShbREVGQVVMVC1N T0RFXSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvbnRyb2wg bWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMuDQorIyBEZWZhdWx0IGlz IHRvIGRpc2FibGUgdGhlbSwgdW5sZXNzIGBlbmFibGUnIGlzIHBhc3NlZCBsaXRlcmFsbHkuDQor IyBGb3Igc3ltbWV0cnksIGBkaXNhYmxlJyBtYXkgYmUgcGFzc2VkIGFzIHdlbGwuICBBbnl3YXks IHRoZSB1c2VyDQorIyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgd2l0aCB0aGUgLS1lbmFibGUv LS1kaXNhYmxlIHN3aXRjaC4NCitBQ19ERUZVTihbQU1fTUFJTlRBSU5FUl9NT0RFXSwNCitbbTRf Y2FzZShtNF9kZWZhdWx0KFskMV0sIFtkaXNhYmxlXSksDQorICAgICAgIFtlbmFibGVdLCBbbTRf ZGVmaW5lKFthbV9tYWludGFpbmVyX290aGVyXSwgW2Rpc2FibGVdKV0sDQorICAgICAgIFtkaXNh YmxlXSwgW200X2RlZmluZShbYW1fbWFpbnRhaW5lcl9vdGhlcl0sIFtlbmFibGVdKV0sDQorICAg ICAgIFttNF9kZWZpbmUoW2FtX21haW50YWluZXJfb3RoZXJdLCBbZW5hYmxlXSkNCisgICAgICAg IG00X3dhcm4oW3N5bnRheF0sIFt1bmV4cGVjdGVkIGFyZ3VtZW50IHRvIEFNQCZ0QF9NQUlOVEFJ TkVSX01PREU6ICQxXSldKQ0KK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBhbV9tYWludGFp bmVyX290aGVyIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkNCisg IGRubCBtYWludGFpbmVyLW1vZGUncyBkZWZhdWx0IGlzICdkaXNhYmxlJyB1bmxlc3MgJ2VuYWJs ZScgaXMgcGFzc2VkDQorICBBQ19BUkdfRU5BQkxFKFttYWludGFpbmVyLW1vZGVdLA0KK1sgIC0t XVthbV9tYWludGFpbmVyX290aGVyXVstbWFpbnRhaW5lci1tb2RlICBhbV9tYWludGFpbmVyX290 aGVyIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNlZnVsDQorCQkJICAoYW5kIHNv bWV0aW1lcyBjb25mdXNpbmcpIHRvIHRoZSBjYXN1YWwgaW5zdGFsbGVyXSwNCisgICAgICBbVVNF X01BSU5UQUlORVJfTU9ERT0kZW5hYmxldmFsXSwNCisgICAgICBbVVNFX01BSU5UQUlORVJfTU9E RT1dbTRfaWYoYW1fbWFpbnRhaW5lcl9vdGhlciwgW2VuYWJsZV0sIFtub10sIFt5ZXNdKSkNCisg IEFDX01TR19SRVNVTFQoWyRVU0VfTUFJTlRBSU5FUl9NT0RFXSkNCisgIEFNX0NPTkRJVElPTkFM KFtNQUlOVEFJTkVSX01PREVdLCBbdGVzdCAkVVNFX01BSU5UQUlORVJfTU9ERSA9IHllc10pDQor ICBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUNCisgIEFDX1NVQlNUKFtNQUlOVF0pZG5sDQor XQ0KKykNCisNCitBVV9ERUZVTihbam1fTUFJTlRBSU5FUl9NT0RFXSwgW0FNX01BSU5UQUlORVJf TU9ERV0pDQorDQorIyBDaGVjayB0byBzZWUgaG93ICdtYWtlJyB0cmVhdHMgaW5jbHVkZXMuCSAg ICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAw MiwgMjAwMywgMjAwNSwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0K KyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1 dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlz IG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgNA0KKw0KKyMgQU1fTUFLRV9JTkNM VURFKCkNCisjIC0tLS0tLS0tLS0tLS0tLS0tDQorIyBDaGVjayB0byBzZWUgaG93IG1ha2UgdHJl YXRzIGluY2x1ZGVzLg0KK0FDX0RFRlVOKFtBTV9NQUtFX0lOQ0xVREVdLA0KK1thbV9tYWtlPSR7 TUFLRS1tYWtlfQ0KK2NhdCA+IGNvbmZpbmMgPDwgJ0VORCcNCithbV9fZG9pdDoNCisJQGVjaG8g dGhpcyBpcyB0aGUgYW1fX2RvaXQgdGFyZ2V0DQorLlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMg SWYgd2UgZG9uJ3QgZmluZCBhbiBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0 aGUgY29kZS4NCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkg JGFtX21ha2VdKQ0KK2FtX19pbmNsdWRlPSIjIg0KK2FtX19xdW90ZT0NCitfYW1fcmVzdWx0PW5v bmUNCisjIEZpcnN0IHRyeSBHTlUgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2VjaG8gImluY2x1ZGUg Y29uZmluYyIgPiBjb25mbWYNCisjIElnbm9yZSBhbGwga2luZHMgb2YgYWRkaXRpb25hbCBvdXRw dXQgZnJvbSBgbWFrZScuDQorY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVs bGAgaW4gIygNCisqdGhlXCBhbV9fZG9pdFwgdGFyZ2V0KikNCisgIGFtX19pbmNsdWRlPWluY2x1 ZGUNCisgIGFtX19xdW90ZT0NCisgIF9hbV9yZXN1bHQ9R05VDQorICA7Ow0KK2VzYWMNCisjIE5v dyB0cnkgQlNEIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitpZiB0ZXN0ICIkYW1fX2luY2x1ZGUiID0g IiMiOyB0aGVuDQorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZtZg0KKyAgIGNh c2UgYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGxgIGluICMoDQorICAgKnRoZVwg YW1fX2RvaXRcIHRhcmdldCopDQorICAgICBhbV9faW5jbHVkZT0uaW5jbHVkZQ0KKyAgICAgYW1f X3F1b3RlPSJcIiINCisgICAgIF9hbV9yZXN1bHQ9QlNEDQorICAgICA7Ow0KKyAgIGVzYWMNCitm aQ0KK0FDX1NVQlNUKFthbV9faW5jbHVkZV0pDQorQUNfU1VCU1QoW2FtX19xdW90ZV0pDQorQUNf TVNHX1JFU1VMVChbJF9hbV9yZXN1bHRdKQ0KK3JtIC1mIGNvbmZpbmMgY29uZm1mDQorXSkNCisN CisjIEZha2UgdGhlIGV4aXN0ZW5jZSBvZiBwcm9ncmFtcyB0aGF0IEdOVSBtYWludGFpbmVycyB1 c2UuICAtKi0gQXV0b2NvbmYgLSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTksIDIw MDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgNCisjIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5 IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMs IGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDYNCisN CisjIEFNX01JU1NJTkdfUFJPRyhOQU1FLCBQUk9HUkFNKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW0FNX01JU1NJTkdfUFJPR10sDQorW0FDX1JFUVVJUkUo W0FNX01JU1NJTkdfSEFTX1JVTl0pDQorJDE9JHskMS0iJHthbV9taXNzaW5nX3J1bn0kMiJ9DQor QUNfU1VCU1QoJDEpXSkNCisNCisNCisjIEFNX01JU1NJTkdfSEFTX1JVTg0KKyMgLS0tLS0tLS0t LS0tLS0tLS0tDQorIyBEZWZpbmUgTUlTU0lORyBpZiBub3QgZGVmaW5lZCBzbyBmYXIgYW5kIHRl c3QgaWYgaXQgc3VwcG9ydHMgLS1ydW4uDQorIyBJZiBpdCBkb2VzLCBzZXQgYW1fbWlzc2luZ19y dW4gdG8gdXNlIGl0LCBvdGhlcndpc2UsIHRvIG5vdGhpbmcuDQorQUNfREVGVU4oW0FNX01JU1NJ TkdfSEFTX1JVTl0sDQorW0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwNCitBQ19S RVFVSVJFX0FVWF9GSUxFKFttaXNzaW5nXSlkbmwNCitpZiB0ZXN0IHgiJHtNSVNTSU5HK3NldH0i ICE9IHhzZXQ7IHRoZW4NCisgIGNhc2UgJGFtX2F1eF9kaXIgaW4NCisgICpcICogfCAqXAkqKQ0K KyAgICBNSVNTSU5HPSJcJHtTSEVMTH0gXCIkYW1fYXV4X2Rpci9taXNzaW5nXCIiIDs7DQorICAq KQ0KKyAgICBNSVNTSU5HPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvbWlzc2luZyIgOzsNCisgIGVz YWMNCitmaQ0KKyMgVXNlIGV2YWwgdG8gZXhwYW5kICRTSEVMTA0KK2lmIGV2YWwgIiRNSVNTSU5H IC0tcnVuIHRydWUiOyB0aGVuDQorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgLS1ydW4gIg0K K2Vsc2UNCisgIGFtX21pc3NpbmdfcnVuPQ0KKyAgQUNfTVNHX1dBUk4oW2BtaXNzaW5nJyBzY3Jp cHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nXSkNCitmaQ0KK10pDQorDQorIyBDb3B5cmlnaHQgKEMp IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0K KyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0 cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMg dGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fUFJPR19NS0RJUl9QDQorIyAtLS0t LS0tLS0tLS0tLS0NCisjIENoZWNrIGZvciBgbWtkaXIgLXAnLg0KK0FDX0RFRlVOKFtBTV9QUk9H X01LRElSX1BdLA0KK1tBQ19QUkVSRVEoWzIuNjBdKWRubA0KK0FDX1JFUVVJUkUoW0FDX1BST0df TUtESVJfUF0pZG5sDQorZG5sIEF1dG9tYWtlIDEuOCB0byAxLjkuNiB1c2VkIHRvIGRlZmluZSBt a2Rpcl9wLiAgV2Ugbm93IHVzZSBNS0RJUl9QLA0KK2RubCB3aGlsZSBrZWVwaW5nIGEgZGVmaW5p dGlvbiBvZiBta2Rpcl9wIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KK2RubCBATUtESVJf UEAgaXMgbWFnaWM6IEFDX09VVFBVVCBhZGp1c3RzIGl0cyB2YWx1ZSBmb3IgZWFjaCBNYWtlZmls ZS4NCitkbmwgSG93ZXZlciB3ZSBjYW5ub3QgZGVmaW5lIG1rZGlyX3AgYXMgJChNS0RJUl9QKSBm b3IgdGhlIHNha2Ugb2YNCitkbmwgTWFrZWZpbGUuaW5zIHRoYXQgZG8gbm90IGRlZmluZSBNS0RJ Ul9QLCBzbyB3ZSBkbyBvdXIgb3duDQorZG5sIGFkanVzdG1lbnQgdXNpbmcgdG9wX2J1aWxkZGly ICh3aGljaCBpcyBkZWZpbmVkIG1vcmUgb2Z0ZW4gdGhhbg0KK2RubCBNS0RJUl9QKS4NCitBQ19T VUJTVChbbWtkaXJfcF0sIFsiJE1LRElSX1AiXSlkbmwNCitjYXNlICRta2Rpcl9wIGluDQorICBb W1xcLyRdXSogfCA/OltbXFwvXV0qKSA7Ow0KKyAgKi8qKSBta2Rpcl9wPSJcJCh0b3BfYnVpbGRk aXIpLyRta2Rpcl9wIiA7Ow0KK2VzYWMNCitdKQ0KKw0KKyMgSGVscGVyIGZ1bmN0aW9ucyBmb3Ig b3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0NCisN CisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNSwgMjAwOCAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNz aW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9k aWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBz ZXJpYWwgNA0KKw0KKyMgX0FNX01BTkdMRV9PUFRJT04oTkFNRSkNCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorQUNfREVGVU4oW19BTV9NQU5HTEVfT1BUSU9OXSwNCitbW19BTV9PUFRJT05f XW00X2JwYXRzdWJzdCgkMSwgW1teYS16QS1aMC05X11dLCBbX10pXSkNCisNCisjIF9BTV9TRVRf T1BUSU9OKE5BTUUpDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFNldCBv cHRpb24gTkFNRS4gIFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZv ciB0aGlzIG9wdGlvbi4NCitBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05dLA0KK1ttNF9kZWZpbmUo X0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkNCisNCisjIF9BTV9TRVRfT1BUSU9OUyhPUFRJ T05TKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgT1BUSU9OUyBp cyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMuDQorQUNfREVGVU4o W19BTV9TRVRfT1BUSU9OU10sDQorW200X2ZvcmVhY2hfdyhbX0FNX09wdGlvbl0sIFskMV0sIFtf QU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkNCisNCisjIF9BTV9JRl9PUFRJT04oT1BUSU9O LCBJRi1TRVQsIFtJRi1OT1QtU0VUXSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIEV4ZWN1dGUgSUYtU0VUIGlmIE9QVElPTiBpcyBzZXQsIElGLU5P VC1TRVQgb3RoZXJ3aXNlLg0KK0FDX0RFRlVOKFtfQU1fSUZfT1BUSU9OXSwNCitbbTRfaWZzZXQo X0FNX01BTkdMRV9PUFRJT04oWyQxXSksIFskMl0sIFskM10pXSkNCisNCisjIENoZWNrIHRvIG1h a2Ugc3VyZSB0aGF0IHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLiAgICAtKi0gQXV0b2Nv bmYgLSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMs IDIwMDUsIDIwMDgNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRo aXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQor IyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0 LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3Rp Y2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDUNCisNCisjIEFNX1NBTklUWV9DSEVDSw0K KyMgLS0tLS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW0FNX1NBTklUWV9DSEVDS10sDQorW0FDX01T R19DSEVDS0lORyhbd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lXSkNCisjIEp1c3Qg aW4gY2FzZQ0KK3NsZWVwIDENCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUNCisjIFJl amVjdCB1bnNhZmUgY2hhcmFjdGVycyBpbiAkc3JjZGlyIG9yIHRoZSBhYnNvbHV0ZSB3b3JraW5n IGRpcmVjdG9yeQ0KKyMgbmFtZS4gIEFjY2VwdCBzcGFjZSBhbmQgdGFiIG9ubHkgaW4gdGhlIGxh dHRlci4NCithbV9sZj0nDQorJw0KK2Nhc2UgYHB3ZGAgaW4NCisgICpbW1xcXCJcI1wkXCZcJ1xg JGFtX2xmXV0qKQ0KKyAgICBBQ19NU0dfRVJST1IoW3Vuc2FmZSBhYnNvbHV0ZSB3b3JraW5nIGRp cmVjdG9yeSBuYW1lXSk7Ow0KK2VzYWMNCitjYXNlICRzcmNkaXIgaW4NCisgICpbW1xcXCJcI1wk XCZcJ1xgJGFtX2xmXCBcCV1dKikNCisgICAgQUNfTVNHX0VSUk9SKFt1bnNhZmUgc3JjZGlyIHZh bHVlOiBgJHNyY2RpciddKTs7DQorZXNhYw0KKw0KKyMgRG8gYHNldCcgaW4gYSBzdWJzaGVsbCBz byB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MNCisjIGFyZ3VtZW50cy4gIE11 c3QgdHJ5IC1MIGZpcnN0IGluIGNhc2UgY29uZmlndXJlIGlzIGFjdHVhbGx5IGENCisjIHN5bWxp bms7IHNvbWUgc3lzdGVtcyBwbGF5IHdlaXJkIGdhbWVzIHdpdGggdGhlIG1vZCB0aW1lIG9mIHN5 bWxpbmtzDQorIyAoZWcgRnJlZUJTRCByZXR1cm5zIHRoZSBtb2QgdGltZSBvZiB0aGUgc3ltbGlu aydzIGNvbnRhaW5pbmcNCisjIGRpcmVjdG9yeSkuDQoraWYgKA0KKyAgIHNldCBYIGBscyAtTHQg IiRzcmNkaXIvY29uZmlndXJlIiBjb25mdGVzdC5maWxlIDI+IC9kZXYvbnVsbGANCisgICBpZiB0 ZXN0ICIkWypdIiA9ICJYIjsgdGhlbg0KKyAgICAgICMgLUwgZGlkbid0IHdvcmsuDQorICAgICAg c2V0IFggYGxzIC10ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29uZnRlc3QuZmlsZWANCisgICBmaQ0K KyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUNCisgICBpZiB0ZXN0ICIkWypdIiAhPSAiWCAkc3JjZGly L2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcDQorICAgICAgJiYgdGVzdCAiJFsqXSIgIT0gIlgg Y29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4NCisNCisgICAgICAjIElmIG5l aXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFwcGVu DQorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQg aW5oZXJpdHMgYQ0KKyAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhlIGVudmlyb25tZW50 LiAgVGhpcyBoYXMgYWN0dWFsbHkNCisgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBj b3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuDQorICAgICAgQUNfTVNHX0VSUk9SKFtscyAt dCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuDQorYWxp YXMgaW4geW91ciBlbnZpcm9ubWVudF0pDQorICAgZmkNCisNCisgICB0ZXN0ICIkWzJdIiA9IGNv bmZ0ZXN0LmZpbGUNCisgICApDQordGhlbg0KKyAgICMgT2suDQorICAgOg0KK2Vsc2UNCisgICBB Q19NU0dfRVJST1IoW25ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFuIGRpc3RyaWJ1dGVk IGZpbGVzIQ0KK0NoZWNrIHlvdXIgc3lzdGVtIGNsb2NrXSkNCitmaQ0KK0FDX01TR19SRVNVTFQo eWVzKV0pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lv biB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlm aWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1f UFJPR19JTlNUQUxMX1NUUklQDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE9uZSBpc3N1 ZSB3aXRoIHZlbmRvciBgaW5zdGFsbCcgKGV2ZW4gR05VKSBpcyB0aGF0IHlvdSBjYW4ndA0KKyMg c3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAgVGhpcyBpcyBlc3Bl Y2lhbGx5DQorIyBhbm5veWluZyBpbiBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnRzLCB3aGVy ZSB0aGUgYnVpbGQncyBzdHJpcA0KKyMgaXMgdW5saWtlbHkgdG8gaGFuZGxlIHRoZSBob3N0J3Mg YmluYXJpZXMuDQorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9ub3IgYSBTVFJJUFBS T0cgdmFyaWFibGUsIHNvIHdlDQorIyBhbHdheXMgdXNlIGluc3RhbGwtc2ggaW4gYG1ha2UgaW5z dGFsbC1zdHJpcCcsIGFuZCBpbml0aWFsaXplDQorIyBTVFJJUFBST0cgd2l0aCB0aGUgdmFsdWUg b2YgdGhlIFNUUklQIHZhcmlhYmxlIChzZXQgYnkgdGhlIHVzZXIpLg0KK0FDX0RFRlVOKFtBTV9Q Uk9HX0lOU1RBTExfU1RSSVBdLA0KK1tBQ19SRVFVSVJFKFtBTV9QUk9HX0lOU1RBTExfU0hdKWRu bA0KKyMgSW5zdGFsbGVkIGJpbmFyaWVzIGFyZSB1c3VhbGx5IHN0cmlwcGVkIHVzaW5nIGBzdHJp cCcgd2hlbiB0aGUgdXNlcg0KKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBg c3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQNCisjIHRvb2wgdG8gdXNlIGluIGNyb3NzLWNv bXBpbGF0aW9uIGVudmlyb25tZW50cywgdGhlcmVmb3JlIEF1dG9tYWtlDQorIyB3aWxsIGhvbm9y IHRoZSBgU1RSSVAnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJydWxlIHRoaXMgcHJvZ3Jh bS4NCitkbmwgRG9uJ3QgdGVzdCBmb3IgJGNyb3NzX2NvbXBpbGluZyA9IHllcywgYmVjYXVzZSBp dCBtaWdodCBiZSBgbWF5YmUnLg0KK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IG5vOyB0 aGVuDQorICBBQ19DSEVDS19UT09MKFtTVFJJUF0sIFtzdHJpcF0sIDopDQorZmkNCitJTlNUQUxM X1NUUklQX1BST0dSQU09IlwkKGluc3RhbGxfc2gpIC1jIC1zIg0KK0FDX1NVQlNUKFtJTlNUQUxM X1NUUklQX1BST0dSQU1dKV0pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3 YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVy bWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0 IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0K KyMgc2VyaWFsIDINCisNCisjIF9BTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQ0KKyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBQcmV2ZW50IEF1dG9tYWtlIGZyb20gb3V0cHV0dGlu ZyBWQVJJQUJMRSA9IEBWQVJJQUJMRUAgaW4gTWFrZWZpbGUuaW4uDQorIyBUaGlzIG1hY3JvIGlz IHRyYWNlZCBieSBBdXRvbWFrZS4NCitBQ19ERUZVTihbX0FNX1NVQlNUX05PVE1BS0VdKQ0KKw0K KyMgQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KKyMgUHVibGljIHNpc3RlciBvZiBfQU1fU1VCU1RfTk9UTUFLRS4NCitBQ19ERUZVTihb QU1fU1VCU1RfTk9UTUFLRV0sIFtfQU1fU1VCU1RfTk9UTUFLRSgkQCldKQ0KKw0KKyMgQ2hlY2sg aG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBB dXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp Y2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJp YWwgMg0KKw0KKyMgX0FNX1BST0dfVEFSKEZPUk1BVCkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t DQorIyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFyYmFsbCBpbiBmb3JtYXQgRk9STUFULg0KKyMg Rk9STUFUIHNob3VsZCBiZSBvbmUgb2YgYHY3JywgYHVzdGFyJywgb3IgYHBheCcuDQorIw0KKyMg U3Vic3RpdHV0ZSBhIHZhcmlhYmxlICQoYW1fX3RhcikgdGhhdCBpcyBhIGNvbW1hbmQNCisjIHdy aXRpbmcgdG8gc3Rkb3V0IGEgRk9STUFULXRhcmJhbGwgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5 DQorIyAkdGFyZGlyLg0KKyMgICAgIHRhcmRpcj1kaXJlY3RvcnkgJiYgJChhbV9fdGFyKSA+IHJl c3VsdC50YXINCisjDQorIyBTdWJzdGl0dXRlIGEgdmFyaWFibGUgJChhbV9fdW50YXIpIHRoYXQg ZXh0cmFjdCBzdWNoDQorIyBhIHRhcmJhbGwgcmVhZCBmcm9tIHN0ZGluLg0KKyMgICAgICQoYW1f X3VudGFyKSA8IHJlc3VsdC50YXINCitBQ19ERUZVTihbX0FNX1BST0dfVEFSXSwNCitbIyBBbHdh eXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KK0FNX01JU1NJTkdf UFJPRyhbQU1UQVJdLCBbdGFyXSkNCittNF9pZihbJDFdLCBbdjddLA0KKyAgICAgW2FtX190YXI9 JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJ10s DQorICAgICBbbTRfY2FzZShbJDFdLCBbdXN0YXJdLCwgW3BheF0sLA0KKyAgICAgICAgICAgICAg W200X2ZhdGFsKFtVbmtub3duIHRhciBmb3JtYXRdKV0pDQorQUNfTVNHX0NIRUNLSU5HKFtob3cg dG8gY3JlYXRlIGEgJDEgdGFyIGFyY2hpdmVdKQ0KKyMgTG9vcCBvdmVyIGFsbCBrbm93biBtZXRo b2RzIHRvIGNyZWF0ZSBhIHRhciBhcmNoaXZlIHVudGlsIG9uZSB3b3Jrcy4NCitfYW1fdG9vbHM9 J2dudXRhciBtNF9pZihbJDFdLCBbdXN0YXJdLCBbcGxhaW50YXJdKSBwYXggY3BpbyBub25lJw0K K19hbV90b29scz0ke2FtX2N2X3Byb2dfdGFyXyQxLSRfYW1fdG9vbHN9DQorIyBEbyBub3QgZm9s ZCB0aGUgYWJvdmUgdHdvIGxpbmUgaW50byBvbmUsIGJlY2F1c2UgVHJ1NjQgc2ggYW5kDQorIyBT b2xhcmlzIHNoIHdpbGwgbm90IGdyb2sgc3BhY2VzIGluIHRoZSByaHMgb2YgYC0nLg0KK2ZvciBf YW1fdG9vbCBpbiAkX2FtX3Rvb2xzDQorZG8NCisgIGNhc2UgJF9hbV90b29sIGluDQorICBnbnV0 YXIpDQorICAgIGZvciBfYW1fdGFyIGluIHRhciBnbnV0YXIgZ3RhcjsNCisgICAgZG8NCisgICAg ICBBTV9SVU5fTE9HKFskX2FtX3RhciAtLXZlcnNpb25dKSAmJiBicmVhaw0KKyAgICBkb25lDQor ICAgIGFtX190YXI9IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhd LCBbJDFdKSAtY2hmIC0gIiciJCR0YXJkaXIiJw0KKyAgICBhbV9fdGFyXz0iJF9hbV90YXIgLS1m b3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkdGFyZGly IicNCisgICAgYW1fX3VudGFyPSIkX2FtX3RhciAteGYgLSINCisgICAgOzsNCisgIHBsYWludGFy KQ0KKyAgICAjIE11c3Qgc2tpcCBHTlUgdGFyOiBpZiBpdCBkb2VzIG5vdCBzdXBwb3J0IC0tZm9y bWF0PSBpdCBkb2Vzbid0IGNyZWF0ZQ0KKyAgICAjIHVzdGFyIHRhcmJhbGwgZWl0aGVyLg0KKyAg ICAodGFyIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxICYmIGNvbnRpbnVlDQorICAgIGFtX190 YXI9J3RhciBjaGYgLSAiJCR0YXJkaXIiJw0KKyAgICBhbV9fdGFyXz0ndGFyIGNoZiAtICIkdGFy ZGlyIicNCisgICAgYW1fX3VudGFyPSd0YXIgeGYgLScNCisgICAgOzsNCisgIHBheCkNCisgICAg YW1fX3Rhcj0ncGF4IC1MIC14ICQxIC13ICIkJHRhcmRpciInDQorICAgIGFtX190YXJfPSdwYXgg LUwgLXggJDEgLXcgIiR0YXJkaXIiJw0KKyAgICBhbV9fdW50YXI9J3BheCAtcicNCisgICAgOzsN CisgIGNwaW8pDQorICAgIGFtX190YXI9J2ZpbmQgIiQkdGFyZGlyIiAtcHJpbnQgfCBjcGlvIC1v IC1IICQxIC1MJw0KKyAgICBhbV9fdGFyXz0nZmluZCAiJHRhcmRpciIgLXByaW50IHwgY3BpbyAt byAtSCAkMSAtTCcNCisgICAgYW1fX3VudGFyPSdjcGlvIC1pIC1IICQxIC1kJw0KKyAgICA7Ow0K KyAgbm9uZSkNCisgICAgYW1fX3Rhcj1mYWxzZQ0KKyAgICBhbV9fdGFyXz1mYWxzZQ0KKyAgICBh bV9fdW50YXI9ZmFsc2UNCisgICAgOzsNCisgIGVzYWMNCisNCisgICMgSWYgdGhlIHZhbHVlIHdh cyBjYWNoZWQsIHN0b3Agbm93LiAgV2UganVzdCB3YW50ZWQgdG8gaGF2ZSBhbV9fdGFyDQorICAj IGFuZCBhbV9fdW50YXIgc2V0Lg0KKyAgdGVzdCAtbiAiJHthbV9jdl9wcm9nX3Rhcl8kMX0iICYm IGJyZWFrDQorDQorICAjIHRhci91bnRhciBhIGR1bW15IGRpcmVjdG9yeSwgYW5kIHN0b3AgaWYg dGhlIGNvbW1hbmQgd29ya3MNCisgIHJtIC1yZiBjb25mdGVzdC5kaXINCisgIG1rZGlyIGNvbmZ0 ZXN0LmRpcg0KKyAgZWNobyBHcmVwTWUgPiBjb25mdGVzdC5kaXIvZmlsZQ0KKyAgQU1fUlVOX0xP RyhbdGFyZGlyPWNvbmZ0ZXN0LmRpciAmJiBldmFsICRhbV9fdGFyXyA+Y29uZnRlc3QudGFyXSkN CisgIHJtIC1yZiBjb25mdGVzdC5kaXINCisgIGlmIHRlc3QgLXMgY29uZnRlc3QudGFyOyB0aGVu DQorICAgIEFNX1JVTl9MT0coWyRhbV9fdW50YXIgPGNvbmZ0ZXN0LnRhcl0pDQorICAgIGdyZXAg R3JlcE1lIGNvbmZ0ZXN0LmRpci9maWxlID4vZGV2L251bGwgMj4mMSAmJiBicmVhaw0KKyAgZmkN Citkb25lDQorcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KKw0KK0FDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJv Z190YXJfJDFdLCBbYW1fY3ZfcHJvZ190YXJfJDE9JF9hbV90b29sXSkNCitBQ19NU0dfUkVTVUxU KFskYW1fY3ZfcHJvZ190YXJfJDFdKV0pDQorQUNfU1VCU1QoW2FtX190YXJdKQ0KK0FDX1NVQlNU KFthbV9fdW50YXJdKQ0KK10pICMgX0FNX1BST0dfVEFSDQorDQorbTRfaW5jbHVkZShbLi4vLi4v Li4vYWNpbmNsdWRlLm00XSkNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5z YS9jb25maWd1cmUgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUNCm5ldyBm aWxlIG1vZGUgMTAwNzU1DQppbmRleCAwMDAwMDAwMDAuLmNlMDdiNTk5Yw0KLS0tIC9kZXYvbnVs bA0KKysrIGIvbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvY29uZmlndXJlDQpAQCAtMCwwICsx LDQ3NjMgQEANCisjISAvYmluL3NoDQorIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRl bnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLg0KKyMgR2VuZXJhdGVkIGJ5IEdOVSBB dXRvY29uZiAyLjY4IGZvciBuZXdsaWIgNC4xLjAuDQorIw0KKyMNCisjIENvcHlyaWdodCAoQykg MTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwNCisj IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJl ZSBTb2Z0d2FyZQ0KKyMgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjDQorIyBUaGlzIGNvbmZpZ3Vy ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K KyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9k aWZ5IGl0Lg0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgTTRzaCBJbml0aWFsaXph dGlvbi4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKw0KKyMgQmUgbW9yZSBCb3Vy bmUgY29tcGF0aWJsZQ0KK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gN CitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9u dWxsIDI+JjE7IHRoZW4gOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00 LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gN CisgICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQor ICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicNCisgIHNldG9wdCBOT19HTE9CX1NVQlNUDQor ZWxzZQ0KKyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoDQorICAqcG9zaXgqKSA6 DQorICAgIHNldCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkN CisNCisNCithc19ubD0nDQorJw0KK2V4cG9ydCBhc19ubA0KKyMgUHJpbnRpbmcgYSBsb25nIHN0 cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuDQorYXNfZWNobz0nXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcNCithc19lY2hvPSRhc19l Y2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8NCithc19lY2hvPSRhc19lY2hvJGFz X2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KKyMgUHJlZmVyIGEga3NoIHNo ZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLA0K KyMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guDQoraWYgdGVzdCAt eiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXA0KKyAgICAmJiAodGVzdCAiWGBwcmludCAt ciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuDQorICBhc19l Y2hvPSdwcmludCAtciAtLScNCisgIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJw0KK2VsaWYgKHRl c3QgIlhgcHJpbnRmICVzICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRo ZW4NCisgIGFzX2VjaG89J3ByaW50ZiAlc1xuJw0KKyAgYXNfZWNob19uPSdwcmludGYgJXMnDQor ZWxzZQ0KKyAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2 L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuDQorICAgIGFzX2VjaG9fYm9keT0nZXZhbCAv dXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInDQorICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNo byAtbicNCisgIGVsc2UNCisgICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxc KC4qXFwpIicNCisgICAgYXNfZWNob19uX2JvZHk9J2V2YWwNCisgICAgICBhcmc9JDE7DQorICAg ICAgY2FzZSAkYXJnIGluICMoDQorICAgICAgKiIkYXNfbmwiKikNCisJZXhwciAiWCRhcmciIDog IlhcXCguKlxcKSRhc19ubCI7DQorCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipc XCkiYDs7DQorICAgICAgZXNhYzsNCisgICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpIiB8 IHRyIC1kICIkYXNfbmwiDQorICAgICcNCisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5DQorICAg IGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nDQorICBmaQ0KKyAgZXhw b3J0IGFzX2VjaG9fYm9keQ0KKyAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hv Jw0KK2ZpDQorDQorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuDQoraWYgdGVzdCAiJHtQQVRI X1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4NCisgIFBBVEhfU0VQQVJBVE9SPToNCisgIChQ QVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYm IHsNCisgICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9u dWxsIDI+JjEgfHwNCisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycNCisgIH0NCitmaQ0KKw0KKw0K KyMgSUZTDQorIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkg dGhhdCBvcmRlci4gIFF1b3RpbmcgaXMNCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9t IGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4NCisjIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUg Y2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQNCisjIHNwbGl0dGlu ZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pDQorSUZTPSIgIiIJJGFzX25sIg0KKw0K KyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRp cmVjdG9yeSBzZXBhcmF0b3IuDQorYXNfbXlzZWxmPQ0KK2Nhc2UgJDAgaW4gIygoDQorICAqW1xc L10qICkgYXNfbXlzZWxmPSQwIDs7DQorICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZT DQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICB0ZXN0IC1yICIkYXNfZGly LyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaw0KKyAgZG9uZQ0KK0lGUz0kYXNf c2F2ZV9JRlMNCisNCisgICAgIDs7DQorZXNhYw0KKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZl cywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcNCisjIGluIHdoaWNo IGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4NCitpZiB0ZXN0ICJ4JGFz X215c2VsZiIgPSB4OyB0aGVuDQorICBhc19teXNlbGY9JDANCitmaQ0KK2lmIHRlc3QgISAtZiAi JGFzX215c2VsZiI7IHRoZW4NCisgICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90 IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyDQorICBl eGl0IDENCitmaQ0KKw0KKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5k IHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4NCisjIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRv IG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiDQorIyBzdXBwcmVz c2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZA0K KyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuDQorZm9yIGFzX3ZhciBpbiBCQVNIX0VO ViBFTlYgTUFJTCBNQUlMUEFUSA0KK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNl dCBcDQorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAm JiB1bnNldCAkYXNfdmFyIHx8IDoNCitkb25lDQorUFMxPSckICcNCitQUzI9Jz4gJw0KK1BTND0n KyAnDQorDQorIyBOTFMgbnVpc2FuY2VzLg0KK0xDX0FMTD1DDQorZXhwb3J0IExDX0FMTA0KK0xB TkdVQUdFPUMNCitleHBvcnQgTEFOR1VBR0UNCisNCisjIENEUEFUSC4NCisodW5zZXQgQ0RQQVRI KSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRIDQorDQoraWYgdGVzdCAieCRDT05GSUdf U0hFTEwiID0geDsgdGhlbg0KKyAgYXNfYm91cm5lX2NvbXBhdGlibGU9ImlmIHRlc3QgLW4gXCJc JHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhl biA6DQorICBlbXVsYXRlIHNoDQorICBOVUxMQ01EPToNCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBv ZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gXCR7MStcIlwkQFwifSwgd2hpY2gNCisgICMgaXMg Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQorICBhbGlhcyAt ZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInDQorICBzZXRvcHQgTk9fR0xPQl9TVUJTVA0KK2Vs c2UNCisgIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICMoDQorICAqcG9zaXgqKSA6 DQorICAgIHNldCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkN CisiDQorICBhc19yZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQ0KK2Fz X2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQ0KK2FzX2ZuX2ZhaWx1cmUgKCkgeyBh c19mbl9yZXR1cm4gMTsgfQ0KK2FzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0NCith c19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9DQorDQorZXhpdGNvZGU9MA0KK2FzX2Zu X3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFpbGVkLjsgfQ0K K2FzX2ZuX2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX2ZhaWx1cmUgc3VjY2Vl ZGVkLjsgfQ0KK2FzX2ZuX3JldF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9y ZXRfc3VjY2VzcyBmYWlsZWQuOyB9DQorYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0x OyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0NCitpZiAoIHNldCB4OyBhc19m bl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9IFwiXCQxXCIgKTsgdGhlbiA6DQorDQorZWxzZQ0K KyAgZXhpdGNvZGU9MTsgZWNobyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2VyZSBub3Qgc2F2ZWQu DQorZmkNCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxIg0KKyAgYXNfc3VnZ2VzdGVk PSIgIGFzX2xpbmVub18xPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1 Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMWE9XCRMSU5FTk8NCisgIGFzX2xpbmVu b18yPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNf c3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8NCisgIGV2YWwgJ3Rlc3QgXCJ4XCRhc19s aW5lbm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmDQor ICB0ZXN0IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wkYXNfcnVuJyArIDFcYFwiID0gXCJ4XCRh c19saW5lbm9fMidcJGFzX3J1bidcIicgfHwgZXhpdCAxIg0KKyAgaWYgKGV2YWwgIiRhc19yZXF1 aXJlZCIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGFzX2hhdmVfcmVxdWlyZWQ9eWVzDQorZWxz ZQ0KKyAgYXNfaGF2ZV9yZXF1aXJlZD1ubw0KK2ZpDQorICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1 aXJlZCA9IHh5ZXMgJiYgKGV2YWwgIiRhc19zdWdnZXN0ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6 DQorDQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2Fz X2ZvdW5kPWZhbHNlDQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4k UEFUSF9TRVBBUkFUT1IkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgYXNfZm91bmQ9Og0KKyAgY2FzZSAkYXNfZGlyIGlu ICMoDQorCSAvKikNCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2ggc2g1OyBkbw0KKwkg ICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhpc3QsIHRvIHNhdmUgc2V2ZXJhbCBmb3Jrcy4N CisJICAgICBhc19zaGVsbD0kYXNfZGlyLyRhc19iYXNlDQorCSAgICAgaWYgeyB0ZXN0IC1mICIk YXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmDQorCQkgICAgeyAkYXNf ZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRh c19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgQ09ORklHX1NIRUxMPSRhc19zaGVs bCBhc19oYXZlX3JlcXVpcmVkPXllcw0KKwkJICAgaWYgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9j b21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rl di9udWxsOyB0aGVuIDoNCisgIGJyZWFrIDINCitmaQ0KK2ZpDQorCSAgIGRvbmU7Ow0KKyAgICAg ICBlc2FjDQorICBhc19mb3VuZD1mYWxzZQ0KK2RvbmUNCiskYXNfZm91bmQgfHwgeyBpZiB7IHRl c3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4ZSI7IH0gJiYNCisJICAgICAgeyAk YXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEg IiRTSEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgQ09ORklHX1NIRUxMPSRTSEVMTCBh c19oYXZlX3JlcXVpcmVkPXllcw0KK2ZpOyB9DQorSUZTPSRhc19zYXZlX0lGUw0KKw0KKw0KKyAg ICAgIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoNCisgICMgV2UgY2Fubm90 IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhDQorCSMg bmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBh bHNvDQorCSMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVu dCB2YXJpYWJsZXMuDQorCSMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBz aGVsbC4NCisJQkFTSF9FTlY9L2Rldi9udWxsDQorCUVOVj0vZGV2L251bGwNCisJKHVuc2V0IEJB U0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WDQorCWV4cG9ydCBD T05GSUdfU0hFTEwNCisJY2FzZSAkLSBpbiAjICgoKCgNCisJICAqdip4KiB8ICp4KnYqICkgYXNf b3B0cz0tdnggOzsNCisJICAqdiogKSBhc19vcHRzPS12IDs7DQorCSAgKngqICkgYXNfb3B0cz0t eCA7Ow0KKwkgICogKSBhc19vcHRzPSA7Ow0KKwllc2FjDQorCWV4ZWMgIiRDT05GSUdfU0hFTEwi ICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0NCitmaQ0KKw0KKyAgICBpZiB0ZXN0IHgk YXNfaGF2ZV9yZXF1aXJlZCA9IHhubzsgdGhlbiA6DQorICAkYXNfZWNobyAiJDA6IFRoaXMgc2Ny aXB0IHJlcXVpcmVzIGEgc2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiDQorICAkYXNfZWNobyAi JDA6IHRoZSBzaGVsbHMgdGhhdCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiINCisgIGlmIHRlc3Qg eCR7WlNIX1ZFUlNJT04rc2V0fSA9IHhzZXQgOyB0aGVuDQorICAgICRhc19lY2hvICIkMDogSW4g cGFydGljdWxhciwgenNoICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIg0KKyAgICAk YXNfZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iDQorICBlbHNl DQorICAgICRhc19lY2hvICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYWJv dXQgeW91ciBzeXN0ZW0sDQorJDA6IGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0 IGJlZm9yZSB0aGlzDQorJDA6IG1lc3NhZ2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwg b3IgbWFudWFsbHkgcnVuDQorJDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlmIHlv dSBkbyBoYXZlIG9uZS4iDQorICBmaQ0KKyAgZXhpdCAxDQorZmkNCitmaQ0KK2ZpDQorU0hFTEw9 JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0NCitleHBvcnQgU0hFTEwNCisjIFVuc2V0IG1vcmUgdmFy aWFibGVzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbiB0b29scy4N CitDTElDT0xPUl9GT1JDRT0gR1JFUF9PUFRJT05TPQ0KK3Vuc2V0IENMSUNPTE9SX0ZPUkNFIEdS RVBfT1BUSU9OUw0KKw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIE00c2ggU2hl bGwgRnVuY3Rpb25zLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMgYXNfZm5f dW5zZXQgVkFSDQorIyAtLS0tLS0tLS0tLS0tLS0NCisjIFBvcnRhYmx5IHVuc2V0IFZBUi4NCith c19mbl91bnNldCAoKQ0KK3sNCisgIHsgZXZhbCAkMT07IHVuc2V0ICQxO30NCit9DQorYXNfdW5z ZXQ9YXNfZm5fdW5zZXQNCisNCisjIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTDQorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLg0K K2FzX2ZuX3NldF9zdGF0dXMgKCkNCit7DQorICByZXR1cm4gJDENCit9ICMgYXNfZm5fc2V0X3N0 YXR1cw0KKw0KKyMgYXNfZm5fZXhpdCBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tDQorIyBF eGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUi IGNvbnRleHQuDQorYXNfZm5fZXhpdCAoKQ0KK3sNCisgIHNldCArZQ0KKyAgYXNfZm5fc2V0X3N0 YXR1cyAkMQ0KKyAgZXhpdCAkMQ0KK30gIyBhc19mbl9leGl0DQorDQorIyBhc19mbl9ta2Rpcl9w DQorIyAtLS0tLS0tLS0tLS0tDQorIyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBp bmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuDQorYXNfZm5fbWtkaXJfcCAoKQ0KK3sNCisN CisgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7Ow0KKyAgZXNh Yw0KKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7DQorICAgIGFz X2RpcnM9DQorICAgIHdoaWxlIDo7IGRvDQorICAgICAgY2FzZSAkYXNfZGlyIGluICMoDQorICAg ICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxc JycvZyJgOzsgIycoDQorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsNCisgICAgICBlc2FjDQor ICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyINCisgICAgICBhc19kaXI9YCRhc19k aXJuYW1lIC0tICIkYXNfZGlyIiB8fA0KKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9d XCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8 IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwo L1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYXNfZGlyIiB8DQorICAgIHNl ZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAg IHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBx DQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMv LiovLi87IHEnYA0KKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrDQorICAgIGRvbmUN CisgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIg0KKyAgfSB8 fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJl Y3RvcnkgJGFzX2RpciINCisNCisNCit9ICMgYXNfZm5fbWtkaXJfcA0KKyMgYXNfZm5fYXBwZW5k IFZBUiBWQUxVRQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQXBwZW5kIHRoZSB0ZXh0 IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4g VGFrZQ0KKyMgYWR2YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cg YW1vcnRpemVkIGxpbmVhciBncm93dGggb3Zlcg0KKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVh ZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUNCisjIGlt cGxlbWVudGF0aW9ucy4NCitpZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRh c192YXIgPSB4MTIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBldmFsICdhc19mbl9hcHBlbmQg KCkNCisgIHsNCisgICAgZXZhbCAkMSs9XCQyDQorICB9Jw0KK2Vsc2UNCisgIGFzX2ZuX2FwcGVu ZCAoKQ0KKyAgew0KKyAgICBldmFsICQxPVwkJDFcJDINCisgIH0NCitmaSAjIGFzX2ZuX2FwcGVu ZA0KKw0KKyMgYXNfZm5fYXJpdGggQVJHLi4uDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0NCisjIFBl cmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJl c3VsdCBpbiB0aGUNCisjIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMg dGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1bWVudHMNCisjIG11c3QgYmUgcG9ydGFibGUg YWNyb3NzICQoKCkpIGFuZCBleHByLg0KK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAy IikgMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgZXZhbCAnYXNfZm5fYXJpdGggKCkNCisgIHsNCisg ICAgYXNfdmFsPSQoKCAkKiApKQ0KKyAgfScNCitlbHNlDQorICBhc19mbl9hcml0aCAoKQ0KKyAg ew0KKyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYA0KKyAgfQ0KK2ZpICMg YXNfZm5fYXJpdGgNCisNCisNCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExP R19GRF0NCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE91 dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBh bmQgTE9HX0ZEIGFyZQ0KKyMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0df RkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggU1RB VFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuDQorYXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19z dGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVz dCAiJDQiOyB0aGVuDQorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9f c3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sNCisgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0DQorICBmaQ0KKyAgJGFz X2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjINCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cw0K K30gIyBhc19mbl9lcnJvcg0KKw0KK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYx ICYmDQorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4N CisgIGFzX2V4cHI9ZXhwcg0KK2Vsc2UNCisgIGFzX2V4cHI9ZmFsc2UNCitmaQ0KKw0KK2lmIChi YXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+ JjFgIiA9ICJYLyI7IHRoZW4NCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0KKyAgYXNf YmFzZW5hbWU9ZmFsc2UNCitmaQ0KKw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVz dCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfZGlybmFtZT1k aXJuYW1lDQorZWxzZQ0KKyAgYXNfZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9YCRhc19i YXNlbmFtZSAtLSAiJDAiIHx8DQorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkv KiQnIFx8IFwNCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvXCkn IFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQgJy9eLipc L1woW14vXVteL10qXClcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAv XlhcL1woXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9c KFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdg DQorDQorIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2FzX2NyX2xl dHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9J0FCQ0RF RkdISUpLTE1OT1BRUlNUVVZXWFlaJw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNf Y3JfTEVUVEVSUw0KK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51bT0kYXNf Y3JfTGV0dGVycyRhc19jcl9kaWdpdHMNCisNCisNCisgIGFzX2xpbmVub18xPSRMSU5FTk8gYXNf bGluZW5vXzFhPSRMSU5FTk8NCisgIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRM SU5FTk8NCisgIGV2YWwgJ3Rlc3QgIngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xp bmVub18yJyRhc19ydW4nIiAmJg0KKyAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVu JyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgew0KKyAgIyBCbGFtZSBMZWUg RS4gTWNNYWhvbiAoMTkzMS0xOTg5KSBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pDQorICBzZWQgLW4g Jw0KKyAgICBwDQorICAgIC9bJF1MSU5FTk8vPQ0KKyAgJyA8JGFzX215c2VsZiB8DQorICAgIHNl ZCAnDQorICAgICAgcy9bJF1MSU5FTk8uKi8mLS8NCisgICAgICB0IGxpbmVubw0KKyAgICAgIGIN CisgICAgICA6bGluZW5vDQorICAgICAgTg0KKyAgICAgIDpsb29wDQorICAgICAgcy9bJF1MSU5F Tk9cKFteJyRhc19jcl9hbG51bSdfXS4qXG5cKVwoLipcKS9cMlwxXDIvDQorICAgICAgdCBsb29w DQorICAgICAgcy8tXG4uKi8vDQorICAgICcgPiRhc19tZS5saW5lbm8gJiYNCisgIGNobW9kICt4 ICIkYXNfbWUubGluZW5vIiB8fA0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5u b3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBh c19mbl9leGl0IDE7IH0NCisNCisgICMgRG9uJ3QgdHJ5IHRvIGV4ZWMgYXMgaXQgY2hhbmdlcyAk WzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zDQorICAjICh0aGUgZGlybmFtZSBvZiAk WzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUNCisgICMgb3JpZ2lu YWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUgdG8gdGhpcyku DQorICAuICIuLyRhc19tZS5saW5lbm8iDQorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhl IGxhc3QgY29tbWFuZC4NCisgIGV4aXQNCit9DQorDQorRUNIT19DPSBFQ0hPX049IEVDSE9fVD0N CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKA0KKy1uKikNCisgIGNhc2UgYGVjaG8gJ3h5XGMn YCBpbg0KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0 ZXIuDQorICB4eSkgIEVDSE9fQz0nXGMnOzsNCisgICopICAgZWNobyBgZWNobyBrc2g4OCBidWcg b24gQUlYIDYuMWAgPiAvZGV2L251bGwNCisgICAgICAgRUNIT19UPScJJzs7DQorICBlc2FjOzsN CisqKQ0KKyAgRUNIT19OPSctbic7Ow0KK2VzYWMNCisNCitybSAtZiBjb25mJCQgY29uZiQkLmV4 ZSBjb25mJCQuZmlsZQ0KK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbg0KKyAgcm0gLWYgY29u ZiQkLmRpci9jb25mJCQuZmlsZQ0KK2Vsc2UNCisgIHJtIC1mIGNvbmYkJC5kaXINCisgIG1rZGly IGNvbmYkJC5kaXIgMj4vZGV2L251bGwNCitmaQ0KK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4v ZGV2L251bGw7IHRoZW4NCisgIGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgICBhc19sbl9zPSdsbiAtcycNCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0 d28gZ290Y2hhczoNCisgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5k IGBsbiBmaWxlIGRpcicgZmFpbC4NCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxp bmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuDQorICAgICMgSW4gYm90 aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuDQorICAgIGxuIC1zIGNvbmYk JC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwN CisgICAgICBhc19sbl9zPSdjcCAtcCcNCisgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+ L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xuX3M9bG4NCisgIGVsc2UNCisgICAgYXNfbG5fcz0n Y3AgLXAnDQorICBmaQ0KK2Vsc2UNCisgIGFzX2xuX3M9J2NwIC1wJw0KK2ZpDQorcm0gLWYgY29u ZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQ0KK3JtZGly IGNvbmYkJC5kaXIgMj4vZGV2L251bGwNCisNCitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0 aGVuDQorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInDQorZWxzZQ0KKyAgdGVzdCAt ZCAuLy1wICYmIHJtZGlyIC4vLXANCisgIGFzX21rZGlyX3A9ZmFsc2UNCitmaQ0KKw0KK2lmIHRl c3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgIGFzX3Rlc3RfeD0ndGVzdCAteCcNCitl bHNlDQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgYXNfbHNfTF9v cHRpb249TA0KKyAgZWxzZQ0KKyAgICBhc19sc19MX29wdGlvbj0NCisgIGZpDQorICBhc190ZXN0 X3g9Jw0KKyAgICBldmFsIHNoIC1jICdcJycNCisgICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4N CisJdGVzdCAtZCAiJDEvLiI7DQorICAgICAgZWxzZQ0KKwljYXNlICQxIGluICMoDQorCS0qKXNl dCAiLi8kMSI7Ow0KKwllc2FjOw0KKwljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEi IDI+L2Rldi9udWxsYCBpbiAjKCgNCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQ0KKyAg ICAnXCcnIHNoDQorICAnDQorZmkNCithc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeA0KKw0KKyMg U2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4NCith c190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3Ml W15fJGFzX2NyX2FsbnVtXSVfJWcnIg0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3Ry aW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUq KyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorDQordGVzdCAtbiAiJERKRElSIiB8 fCBleGVjIDc8JjAgPC9kZXYvbnVsbA0KK2V4ZWMgNj4mMQ0KKw0KKyMgTmFtZSBvZiB0aGUgaG9z dC4NCisjIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBvbGQgR05VL0xpbnV4KSBy ZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsDQorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uDQor YWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFg DQorDQorIw0KKyMgSW5pdGlhbGl6YXRpb25zLg0KKyMNCithY19kZWZhdWx0X3ByZWZpeD0vdXNy L2xvY2FsDQorYWNfY2xlYW5fZmlsZXM9DQorYWNfY29uZmlnX2xpYm9ial9kaXI9Lg0KK0xJQk9C SlM9DQorY3Jvc3NfY29tcGlsaW5nPW5vDQorc3ViZGlycz0NCitNRkxBR1M9DQorTUFLRUZMQUdT PQ0KKw0KKyMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLg0KK1BBQ0tBR0VfTkFNRT0nbmV3bGli Jw0KK1BBQ0tBR0VfVEFSTkFNRT0nbmV3bGliJw0KK1BBQ0tBR0VfVkVSU0lPTj0nNC4xLjAnDQor UEFDS0FHRV9TVFJJTkc9J25ld2xpYiA0LjEuMCcNCitQQUNLQUdFX0JVR1JFUE9SVD0nJw0KK1BB Q0tBR0VfVVJMPScnDQorDQorYWNfdW5pcXVlX2ZpbGU9Ik1ha2VmaWxlLmFtIg0KK2FjX3N1YnN0 X3ZhcnM9J0xUTElCT0JKUw0KK0xJQk9CSlMNCitzeXNfZGlyDQorbWFjaGluZV9kaXINCitsaWJt X21hY2hpbmVfZGlyDQorbHBmeA0KK2FleHQNCitvZXh0DQorT0JKRVhUDQorVVNFX0xJQlRPT0xf RkFMU0UNCitVU0VfTElCVE9PTF9UUlVFDQorRUxJWF9MRVZFTF80X0ZBTFNFDQorRUxJWF9MRVZF TF80X1RSVUUNCitFTElYX0xFVkVMXzNfRkFMU0UNCitFTElYX0xFVkVMXzNfVFJVRQ0KK0VMSVhf TEVWRUxfMl9GQUxTRQ0KK0VMSVhfTEVWRUxfMl9UUlVFDQorRUxJWF9MRVZFTF8xX0ZBTFNFDQor RUxJWF9MRVZFTF8xX1RSVUUNCitFTElYX0xFVkVMXzBfRkFMU0UNCitFTElYX0xFVkVMXzBfVFJV RQ0KK0xERkxBR1MNCitOT19JTkNMVURFX0xJU1QNCitORVdMSUJfQ0ZMQUdTDQorQ0NBU0ZMQUdT DQorQ0NBUw0KK01BSU5UDQorTUFJTlRBSU5FUl9NT0RFX0ZBTFNFDQorTUFJTlRBSU5FUl9NT0RF X1RSVUUNCitSRUFERUxGDQorUkFOTElCDQorQVINCitBUw0KK2FtX19mYXN0ZGVwQ0NfRkFMU0UN CithbV9fZmFzdGRlcENDX1RSVUUNCitDQ0RFUE1PREUNCitBTURFUEJBQ0tTTEFTSA0KK0FNREVQ X0ZBTFNFDQorQU1ERVBfVFJVRQ0KK2FtX19xdW90ZQ0KK2FtX19pbmNsdWRlDQorREVQRElSDQor Q0MNCithbV9fdW50YXINCithbV9fdGFyDQorQU1UQVINCithbV9fbGVhZGluZ19kb3QNCitTRVRf TUFLRQ0KK0FXSw0KK21rZGlyX3ANCitNS0RJUl9QDQorSU5TVEFMTF9TVFJJUF9QUk9HUkFNDQor U1RSSVANCitpbnN0YWxsX3NoDQorTUFLRUlORk8NCitBVVRPSEVBREVSDQorQVVUT01BS0UNCitB VVRPQ09ORg0KK0FDTE9DQUwNCitWRVJTSU9ODQorUEFDS0FHRQ0KK0NZR1BBVEhfVw0KK2FtX19p c3JjDQorSU5TVEFMTF9EQVRBDQorSU5TVEFMTF9TQ1JJUFQNCitJTlNUQUxMX1BST0dSQU0NCito b3N0X29zDQoraG9zdF92ZW5kb3INCitob3N0X2NwdQ0KK2hvc3QNCitidWlsZF9vcw0KK2J1aWxk X3ZlbmRvcg0KK2J1aWxkX2NwdQ0KK2J1aWxkDQorbmV3bGliX2Jhc2VkaXINCitNQVlfU1VQUExZ X1NZU0NBTExTX0ZBTFNFDQorTUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFDQordGFyZ2V0X2FsaWFz DQoraG9zdF9hbGlhcw0KK2J1aWxkX2FsaWFzDQorTElCUw0KK0VDSE9fVA0KK0VDSE9fTg0KK0VD SE9fQw0KK0RFRlMNCittYW5kaXINCitsb2NhbGVkaXINCitsaWJkaXINCitwc2Rpcg0KK3BkZmRp cg0KK2R2aWRpcg0KK2h0bWxkaXINCitpbmZvZGlyDQorZG9jZGlyDQorb2xkaW5jbHVkZWRpcg0K K2luY2x1ZGVkaXINCitsb2NhbHN0YXRlZGlyDQorc2hhcmVkc3RhdGVkaXINCitzeXNjb25mZGly DQorZGF0YWRpcg0KK2RhdGFyb290ZGlyDQorbGliZXhlY2Rpcg0KK3NiaW5kaXINCitiaW5kaXIN Citwcm9ncmFtX3RyYW5zZm9ybV9uYW1lDQorcHJlZml4DQorZXhlY19wcmVmaXgNCitQQUNLQUdF X1VSTA0KK1BBQ0tBR0VfQlVHUkVQT1JUDQorUEFDS0FHRV9TVFJJTkcNCitQQUNLQUdFX1ZFUlNJ T04NCitQQUNLQUdFX1RBUk5BTUUNCitQQUNLQUdFX05BTUUNCitQQVRIX1NFUEFSQVRPUg0KK1NI RUxMJw0KK2FjX3N1YnN0X2ZpbGVzPScnDQorYWNfdXNlcl9vcHRzPScNCitlbmFibGVfb3B0aW9u X2NoZWNraW5nDQorZW5hYmxlX211bHRpbGliDQorZW5hYmxlX3RhcmdldF9vcHRzcGFjZQ0KK2Vu YWJsZV9tYWxsb2NfZGVidWdnaW5nDQorZW5hYmxlX25ld2xpYl9tdWx0aXRocmVhZA0KK2VuYWJs ZV9uZXdsaWJfaWNvbnYNCitlbmFibGVfbmV3bGliX2VsaXhfbGV2ZWwNCitlbmFibGVfbmV3bGli X2lvX2Zsb2F0DQorZW5hYmxlX25ld2xpYl9zdXBwbGllZF9zeXNjYWxscw0KK2VuYWJsZV9uZXds aWJfZm5vX2J1aWx0aW4NCitlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZw0KK2VuYWJsZV9tYWlu dGFpbmVyX21vZGUNCisnDQorICAgICAgYWNfcHJlY2lvdXNfdmFycz0nYnVpbGRfYWxpYXMNCito b3N0X2FsaWFzDQordGFyZ2V0X2FsaWFzDQorQ0NBUw0KK0NDQVNGTEFHUycNCisNCisNCisjIElu aXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuDQorYWNfaW5pdF9oZWxwPQ0K K2FjX2luaXRfdmVyc2lvbj1mYWxzZQ0KK2FjX3VucmVjb2duaXplZF9vcHRzPQ0KK2FjX3VucmVj b2duaXplZF9zZXA9DQorIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhl IG9wdGlvbnMsIHdpdGgNCisjIGRhc2hlcyBjaGFuZ2VkIHRvIHVuZGVybGluZXMuDQorY2FjaGVf ZmlsZT0vZGV2L251bGwNCitleGVjX3ByZWZpeD1OT05FDQorbm9fY3JlYXRlPQ0KK25vX3JlY3Vy c2lvbj0NCitwcmVmaXg9Tk9ORQ0KK3Byb2dyYW1fcHJlZml4PU5PTkUNCitwcm9ncmFtX3N1ZmZp eD1OT05FDQorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1zLHgseCwNCitzaWxlbnQ9DQorc2l0ZT0N CitzcmNkaXI9DQordmVyYm9zZT0NCit4X2luY2x1ZGVzPU5PTkUNCit4X2xpYnJhcmllcz1OT05F DQorDQorIyBJbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9wdGlvbnMuDQorIyBUaGVzZSBhcmUgbGVm dCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28i DQorIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFzZWQg b24gZXhlY19wcmVmaXgNCisjIGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuDQorIyBV c2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBh Y2NlcHQgdGhlbS4NCisjIChUaGUgbGlzdCBmb2xsb3dzIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBH TlUgQ29kaW5nIFN0YW5kYXJkcy4pDQorYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nDQorc2Jp bmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicNCitsaWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9s aWJleGVjJw0KK2RhdGFyb290ZGlyPScke3ByZWZpeH0vc2hhcmUnDQorZGF0YWRpcj0nJHtkYXRh cm9vdGRpcn0nDQorc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycNCitzaGFyZWRzdGF0ZWRpcj0n JHtwcmVmaXh9L2NvbScNCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJw0KK2luY2x1ZGVk aXI9JyR7cHJlZml4fS9pbmNsdWRlJw0KK29sZGluY2x1ZGVkaXI9Jy91c3IvaW5jbHVkZScNCitk b2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nDQoraW5mb2Rpcj0n JHtkYXRhcm9vdGRpcn0vaW5mbycNCitodG1sZGlyPScke2RvY2Rpcn0nDQorZHZpZGlyPScke2Rv Y2Rpcn0nDQorcGRmZGlyPScke2RvY2Rpcn0nDQorcHNkaXI9JyR7ZG9jZGlyfScNCitsaWJkaXI9 JyR7ZXhlY19wcmVmaXh9L2xpYicNCitsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScN CittYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicNCisNCithY19wcmV2PQ0KK2FjX2Rhc2hkYXNo PQ0KK2ZvciBhY19vcHRpb24NCitkbw0KKyAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRz IGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQuDQorICBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4N CisgICAgZXZhbCAkYWNfcHJldj1cJGFjX29wdGlvbg0KKyAgICBhY19wcmV2PQ0KKyAgICBjb250 aW51ZQ0KKyAgZmkNCisNCisgIGNhc2UgJGFjX29wdGlvbiBpbg0KKyAgKj0/KikgYWNfb3B0YXJn PWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsNCisgICo9KSAgIGFjX29w dGFyZz0gOzsNCisgICopICAgIGFjX29wdGFyZz15ZXMgOzsNCisgIGVzYWMNCisNCisgICMgQWNj ZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlh Z25vc2UgdHlwb3MuDQorDQorICBjYXNlICRhY19kYXNoZGFzaCRhY19vcHRpb24gaW4NCisgIC0t KQ0KKyAgICBhY19kYXNoZGFzaD15ZXMgOzsNCisNCisgIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0t YmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpDQorICAgIGFjX3ByZXY9YmluZGlyIDs7DQor ICAtYmluZGlyPSogfCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJpbj0q IHwgLS1iaT0qKQ0KKyAgICBiaW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWJ1aWxkIHwgLS1i dWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkNCisgICAgYWNfcHJldj1idWlsZF9hbGlhcyA7 Ow0KKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAtLWJ1PSop DQorICAgIGJ1aWxkX2FsaWFzPSRhY19vcHRhcmcgOzsNCisNCisgIC1jYWNoZS1maWxlIHwgLS1j YWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwNCisgIHwgLS1jYWNoZS1mIHwg LS1jYWNoZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQ0KKyAgICBh Y19wcmV2PWNhY2hlX2ZpbGUgOzsNCisgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8 IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXA0KKyAgfCAtLWNhY2hlLWY9KiB8IC0tY2Fj aGUtPSogfCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikN CisgICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7DQorDQorICAtLWNvbmZpZy1jYWNoZSB8IC1D KQ0KKyAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7Ow0KKw0KKyAgLWRhdGFkaXIgfCAtLWRh dGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpDQorICAgIGFjX3ByZXY9ZGF0YWRpciA7Ow0KKyAg LWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikNCisgICAg ZGF0YWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGly IHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwNCisgIHwgLS1kYXRh cm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQ0KKyAgICBhY19wcmV2PWRhdGFyb290ZGlyIDs7DQor ICAtZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1k YXRhcm9vdGQ9KiBcDQorICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1kYXRhcm89 KiB8IC0tZGF0YXI9KikNCisgICAgZGF0YXJvb3RkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWRp c2FibGUtKiB8IC0tZGlzYWJsZS0qKQ0KKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlv biIgOiAneC0qZGlzYWJsZS1cKC4qXCknYA0KKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBu b3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQorICAgIGV4cHIgIngkYWNfdXNlcm9wdCIg OiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQorICAgICAgYXNfZm5fZXJy b3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCINCisgICAgYWNfdXNlcm9w dF9vcmlnPSRhY191c2Vyb3B0DQorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9w dCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2ANCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluDQorICAg ICAgKiINCisiZW5hYmxlXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAgICopIGFjX3VucmVj b2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0t ZGlzYWJsZS0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsN CisgICAgZXNhYw0KKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1ubyA7Ow0KKw0KKyAgLWRv Y2RpciB8IC0tZG9jZGlyIHwgLS1kb2NkaSB8IC0tZG9jIHwgLS1kbykNCisgICAgYWNfcHJldj1k b2NkaXIgOzsNCisgIC1kb2NkaXI9KiB8IC0tZG9jZGlyPSogfCAtLWRvY2RpPSogfCAtLWRvYz0q IHwgLS1kbz0qKQ0KKyAgICBkb2NkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWR2aWRpciB8IC0t ZHZpZGlyIHwgLS1kdmlkaSB8IC0tZHZpZCB8IC0tZHZpIHwgLS1kdikNCisgICAgYWNfcHJldj1k dmlkaXIgOzsNCisgIC1kdmlkaXI9KiB8IC0tZHZpZGlyPSogfCAtLWR2aWRpPSogfCAtLWR2aWQ9 KiB8IC0tZHZpPSogfCAtLWR2PSopDQorICAgIGR2aWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAt ZW5hYmxlLSogfCAtLWVuYWJsZS0qKQ0KKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlv biIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgDQorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJl IG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAieCRhY191c2Vyb3B0 IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisgICAgICBhc19mbl9l cnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0Ig0KKyAgICBhY191c2Vy b3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vy b3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4NCisg ICAgICAqIg0KKyJlbmFibGVfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikgYWNfdW5y ZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2Vw LS1lbmFibGUtJGFjX3VzZXJvcHRfb3JpZyINCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7 DQorICAgIGVzYWMNCisgICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsN CisNCisgIC1leGVjLXByZWZpeCB8IC0tZXhlY19wcmVmaXggfCAtLWV4ZWMtcHJlZml4IHwgLS1l eGVjLXByZWZpIFwNCisgIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwg LS1leGVjLXAgfCAtLWV4ZWMtIFwNCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQ0KKyAgICBh Y19wcmV2PWV4ZWNfcHJlZml4IDs7DQorICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9 KiB8IC0tZXhlYy1wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwNCisgIHwgLS1leGVjLXByZWY9 KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBc DQorICB8IC0tZXhlYz0qIHwgLS1leGU9KiB8IC0tZXg9KikNCisgICAgZXhlY19wcmVmaXg9JGFj X29wdGFyZyA7Ow0KKw0KKyAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykNCisgICAgIyBPYnNv bGV0ZTsgdXNlIC0td2l0aC1nYXMuDQorICAgIHdpdGhfZ2FzPXllcyA7Ow0KKw0KKyAgLWhlbHAg fCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkNCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsN CisgIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhlPXIqIHwgLWhyKikNCisg ICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7Ow0KKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAt LWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQ0KKyAgICBhY19pbml0X2hlbHA9c2hvcnQgOzsNCisN CisgIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQ0KKyAgICBhY19wcmV2PWhvc3RfYWxp YXMgOzsNCisgIC1ob3N0PSogfCAtLWhvc3Q9KiB8IC0taG9zPSogfCAtLWhvPSopDQorICAgIGhv c3RfYWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWh0bWxkaXIgfCAtLWh0bWxkaXIgfCAtLWh0 bWxkaSB8IC0taHRtbGQgfCAtLWh0bWwgfCAtLWh0bSB8IC0taHQpDQorICAgIGFjX3ByZXY9aHRt bGRpciA7Ow0KKyAgLWh0bWxkaXI9KiB8IC0taHRtbGRpcj0qIHwgLS1odG1sZGk9KiB8IC0taHRt bGQ9KiB8IC0taHRtbD0qIHwgLS1odG09KiBcDQorICB8IC0taHQ9KikNCisgICAgaHRtbGRpcj0k YWNfb3B0YXJnIDs7DQorDQorICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVk ZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcDQorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8 IC0taW5jbCB8IC0taW5jKQ0KKyAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsNCisgIC1pbmNsdWRl ZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAt LWluY2x1ZGU9KiBcDQorICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0t aW5jPSopDQorICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWluZm9kaXIgfCAt LWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikNCisgICAgYWNf cHJldj1pbmZvZGlyIDs7DQorICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWluZm9kaT0q IHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQ0KKyAgICBpbmZvZGlyPSRhY19vcHRh cmcgOzsNCisNCisgIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpDQorICAg IGFjX3ByZXY9bGliZGlyIDs7DQorICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0q IHwgLS1saWJkPSopDQorICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtbGliZXhlY2Rp ciB8IC0tbGliZXhlY2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8IC0tbGliZXhlYyBc DQorICB8IC0tbGliZXhlIHwgLS1saWJleCB8IC0tbGliZSkNCisgICAgYWNfcHJldj1saWJleGVj ZGlyIDs7DQorICAtbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaT0q IHwgLS1saWJleGVjZD0qIHwgLS1saWJleGVjPSogXA0KKyAgfCAtLWxpYmV4ZT0qIHwgLS1saWJl eD0qIHwgLS1saWJlPSopDQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxv Y2FsZWRpciB8IC0tbG9jYWxlZGlyIHwgLS1sb2NhbGVkaSB8IC0tbG9jYWxlZCB8IC0tbG9jYWxl KQ0KKyAgICBhY19wcmV2PWxvY2FsZWRpciA7Ow0KKyAgLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVk aXI9KiB8IC0tbG9jYWxlZGk9KiB8IC0tbG9jYWxlZD0qIHwgLS1sb2NhbGU9KikNCisgICAgbG9j YWxlZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRl ZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwNCisgIHwgLS1sb2NhbHN0YXRl IHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IHwgLS1sb2NhbHMpDQorICAg IGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7Ow0KKyAgLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxz dGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9KiBcDQorICB8IC0t bG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0q IHwgLS1sb2NhbHM9KikNCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAt bWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1t KQ0KKyAgICBhY19wcmV2PW1hbmRpciA7Ow0KKyAgLW1hbmRpcj0qIHwgLS1tYW5kaXI9KiB8IC0t bWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0tbT0qKQ0KKyAgICBtYW5k aXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLW5mcCB8IC0tbmZwIHwgLS1uZikNCisgICAgIyBPYnNv bGV0ZTsgdXNlIC0td2l0aG91dC1mcC4NCisgICAgd2l0aF9mcD1ubyA7Ow0KKw0KKyAgLW5vLWNy ZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwN CisgIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQ0KKyAgICBub19jcmVhdGU9eWVzIDs7DQorDQor ICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1y ZWN1cnNpIFwNCisgIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1u by1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKQ0KKyAgICBub19yZWN1cnNpb249eWVzIDs7DQorDQor ICAtb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpIHwgLS1v bGRpbmNsdWRlZCBcDQorICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1vbGRpbmNs dSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwNCisgIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xk IHwgLS1vbCB8IC0tbykNCisgICAgYWNfcHJldj1vbGRpbmNsdWRlZGlyIDs7DQorICAtb2xkaW5j bHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRp bmNsdWRlZD0qIFwNCisgIHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRp bmNsdT0qIHwgLS1vbGRpbmNsPSogfCAtLW9sZGluYz0qIFwNCisgIHwgLS1vbGRpbj0qIHwgLS1v bGRpPSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1vPSopDQorICAgIG9sZGluY2x1ZGVkaXI9JGFj X29wdGFyZyA7Ow0KKw0KKyAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8 IC0tcHJlIHwgLS1wciB8IC0tcCkNCisgICAgYWNfcHJldj1wcmVmaXggOzsNCisgIC1wcmVmaXg9 KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSogfCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSog fCAtLXA9KikNCisgICAgcHJlZml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXByZWZp eCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBc DQorICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkNCisgICAg YWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7Ow0KKyAgLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dy YW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBcDQorICB8IC0tcHJvZ3JhbS1wcmVmPSog fCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopDQorICAg IHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXN1ZmZpeCB8IC0t cHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tc3VmZiBcDQorICB8 IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykNCisgICAgYWNfcHJl dj1wcm9ncmFtX3N1ZmZpeCA7Ow0KKyAgLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3Vm Zml4PSogfCAtLXByb2dyYW0tc3VmZmk9KiBcDQorICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXBy b2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopDQorICAgIHByb2dy YW1fc3VmZml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwg LS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW0g fCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uIHwg LS1wcm9ncmFtLXRyYW5zZm9ybS0gXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9n cmFtLXRyYW5zZm9yIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAtLXByb2dyYW0tdHJhbnNm IFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4gXA0KKyAgfCAtLXByb2dy LXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0tcHJvZ3JhbS10KQ0KKyAgICBhY19wcmV2PXByb2dyYW1f dHJhbnNmb3JtX25hbWUgOzsNCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogfCAtLXByb2dy YW0tdHJhbnNmb3JtLW5hbWU9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAt LXByb2dyYW0tdHJhbnNmb3JtLW5hPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49KiB8 IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtPSogfCAt LXByb2dyYW0tdHJhbnNmb3I9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dy YW0tdHJhbnNmPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSog XA0KKyAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0qKQ0K KyAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSRhY19vcHRhcmcgOzsNCisNCisgIC1wZGZkaXIg fCAtLXBkZmRpciB8IC0tcGRmZGkgfCAtLXBkZmQgfCAtLXBkZiB8IC0tcGQpDQorICAgIGFjX3By ZXY9cGRmZGlyIDs7DQorICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1w ZGZkPSogfCAtLXBkZj0qIHwgLS1wZD0qKQ0KKyAgICBwZGZkaXI9JGFjX29wdGFyZyA7Ow0KKw0K KyAgLXBzZGlyIHwgLS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1wcykNCisgICAgYWNfcHJl dj1wc2RpciA7Ow0KKyAgLXBzZGlyPSogfCAtLXBzZGlyPSogfCAtLXBzZGk9KiB8IC0tcHNkPSog fCAtLXBzPSopDQorICAgIHBzZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1xIHwgLXF1aWV0IHwg LS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcDQorICB8IC1zaWxlbnQgfCAt LXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkNCisgICAgc2lsZW50PXllcyA7Ow0K Kw0KKyAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4g fCAtLXNiaSB8IC0tc2IpDQorICAgIGFjX3ByZXY9c2JpbmRpciA7Ow0KKyAgLXNiaW5kaXI9KiB8 IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwNCisgIHwg LS1zYmk9KiB8IC0tc2I9KikNCisgICAgc2JpbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtc2hh cmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwNCisgIHwg LS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwgLS1zaGFyZWRz dGEgXA0KKyAgfCAtLXNoYXJlZHN0IHwgLS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwg LS1zaGFyIFwNCisgIHwgLS1zaGEgfCAtLXNoKQ0KKyAgICBhY19wcmV2PXNoYXJlZHN0YXRlZGly IDs7DQorICAtc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVk c3RhdGVkaT0qIFwNCisgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0t c2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcDQorICB8IC0tc2hhcmVkc3Q9KiB8IC0tc2hh cmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwNCisgIHwgLS1zaGE9 KiB8IC0tc2g9KikNCisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNp dGUgfCAtLXNpdGUgfCAtLXNpdCkNCisgICAgYWNfcHJldj1zaXRlIDs7DQorICAtc2l0ZT0qIHwg LS1zaXRlPSogfCAtLXNpdD0qKQ0KKyAgICBzaXRlPSRhY19vcHRhcmcgOzsNCisNCisgIC1zcmNk aXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpDQorICAgIGFj X3ByZXY9c3JjZGlyIDs7DQorICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwg LS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQ0KKyAgICBzcmNkaXI9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29u ZmQgfCAtLXN5c2NvbmYgXA0KKyAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5 cyB8IC0tc3kpDQorICAgIGFjX3ByZXY9c3lzY29uZmRpciA7Ow0KKyAgLXN5c2NvbmZkaXI9KiB8 IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29u Zj0qIFwNCisgIHwgLS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lzYz0qIHwgLS1zeXM9KiB8 IC0tc3k9KikNCisgICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtdGFyZ2V0IHwg LS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQ0KKyAgICBh Y19wcmV2PXRhcmdldF9hbGlhcyA7Ow0KKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFy Z2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQ0KKyAgICB0YXJnZXRf YWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0t dmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikNCisgICAgdmVyYm9zZT15ZXMgOzsNCisNCisgIC12 ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpDQor ICAgIGFjX2luaXRfdmVyc2lvbj06IDs7DQorDQorICAtd2l0aC0qIHwgLS13aXRoLSopDQorICAg IGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgDQor ICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1l cy4NCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4v ZGV2L251bGwgJiYNCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6 ICRhY191c2Vyb3B0Ig0KKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNf dXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAg ICBjYXNlICRhY191c2VyX29wdHMgaW4NCisgICAgICAqIg0KKyJ3aXRoXyRhY191c2Vyb3B0Ig0K KyIqKSA7Ow0KKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVk X29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNf dW5yZWNvZ25pemVkX3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIHdpdGhfJGFjX3Vz ZXJvcHQ9XCRhY19vcHRhcmcgOzsNCisNCisgIC13aXRob3V0LSogfCAtLXdpdGhvdXQtKikNCisg ICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AN CisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5h bWVzLg0KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIg Pi9kZXYvbnVsbCAmJg0KKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFt ZTogJGFjX3VzZXJvcHQiDQorICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdA0KKyAgICBh Y191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgDQor ICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbg0KKyAgICAgICoiDQorIndpdGhfJGFjX3VzZXJvcHQi DQorIiopIDs7DQorICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6 ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRob3V0LSRhY191c2Vyb3B0X29yaWciDQor CSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgd2l0aF8k YWNfdXNlcm9wdD1ubyA7Ow0KKw0KKyAgLS14KQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRo LXguDQorICAgIHdpdGhfeD15ZXMgOzsNCisNCisgIC14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVz IHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwNCisgIHwgLS14LWluY2wg fCAtLXgtaW5jIHwgLS14LWluIHwgLS14LWkpDQorICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7Ow0K KyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1p bmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwNCisgIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0t eC1pbj0qIHwgLS14LWk9KikNCisgICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7DQorDQorICAt eC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkg XA0KKyAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14 LWxpIHwgLS14LWwpDQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsNCisgIC14LWxpYnJhcmll cz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwN CisgIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0q IHwgLS14LWxpPSogfCAtLXgtbD0qKQ0KKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7DQor DQorICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246IFxgJGFjX29wdGlv bicNCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIg0KKyAgICA7Ow0KKw0K KyAgKj0qKQ0KKyAgICBhY19lbnZ2YXI9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4XChbXj1dKlwp PSdgDQorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJs ZSBuYW1lcy4NCisgICAgY2FzZSAkYWNfZW52dmFyIGluICMoDQorICAgICAgJycgfCBbMC05XSog fCAqWyFfJGFzX2NyX2FsbnVtXSogKQ0KKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZh cmlhYmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7DQorICAgIGVzYWMNCisgICAgZXZhbCAkYWNf ZW52dmFyPVwkYWNfb3B0YXJnDQorICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7DQorDQorICAqKQ0K KyAgICAjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuDQorICAgICRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwg LS10YXJnZXQiID4mMg0KKyAgICBleHByICJ4JGFjX29wdGlvbiIgOiAiLipbXi0uXyRhc19jcl9h bG51bV0iID4vZGV2L251bGwgJiYNCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBp bnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyDQorICAgIDogIiR7YnVpbGRfYWxpYXM9 JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19v cHRpb259Ig0KKyAgICA7Ow0KKw0KKyAgZXNhYw0KK2RvbmUNCisNCitpZiB0ZXN0IC1uICIkYWNf cHJldiI7IHRoZW4NCisgIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9n J2ANCisgIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iDQor ZmkNCisNCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiOyB0aGVuDQorICBjYXNl ICRlbmFibGVfb3B0aW9uX2NoZWNraW5nIGluDQorICAgIG5vKSA7Ow0KKyAgICBmYXRhbCkgYXNf Zm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMi IDs7DQorICAgICopICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6ZWQg b3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjIgOzsNCisgIGVzYWMNCitmaQ0KKw0K KyMgQ2hlY2sgYWxsIGRpcmVjdG9yeSBhcmd1bWVudHMgZm9yIGNvbnNpc3RlbmN5Lg0KK2ZvciBh Y192YXIgaW4JZXhlY19wcmVmaXggcHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0 YXJvb3RkaXIgXA0KKwkJZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3Rh dGVkaXIgaW5jbHVkZWRpciBcDQorCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBpbmZvZGlyIGh0bWxk aXIgZHZpZGlyIHBkZmRpciBwc2RpciBcDQorCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpcg0KK2Rv DQorICBldmFsIGFjX3ZhbD1cJCRhY192YXINCisgICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMu DQorICBjYXNlICRhY192YWwgaW4NCisgICAgKi8gKQ0KKyAgICAgIGFjX3ZhbD1gZXhwciAiWCRh Y192YWwiIDogJ1hcKC4qW14vXVwpJyBcfCAiWCRhY192YWwiIDogJ1hcKC4qXCknYA0KKyAgICAg IGV2YWwgJGFjX3Zhcj1cJGFjX3ZhbDs7DQorICBlc2FjDQorICAjIEJlIHN1cmUgdG8gaGF2ZSBh YnNvbHV0ZSBkaXJlY3RvcnkgbmFtZXMuDQorICBjYXNlICRhY192YWwgaW4NCisgICAgW1xcLyRd KiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsNCisgICAgTk9ORSB8ICcnICkgY2FzZSAkYWNfdmFy IGluICpwcmVmaXggKSBjb250aW51ZTs7IGVzYWM7Ow0KKyAgZXNhYw0KKyAgYXNfZm5fZXJyb3Ig JD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRh Y192YWwiDQorZG9uZQ0KKw0KKyMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24g dGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcNCisjIHVzZWQgdG8gaG9sZCB0aGUgYXJn dW1lbnQgb2YgLS1ob3N0IGV0Yy4NCisjIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuDQorYnVp bGQ9JGJ1aWxkX2FsaWFzDQoraG9zdD0kaG9zdF9hbGlhcw0KK3RhcmdldD0kdGFyZ2V0X2FsaWFz DQorDQorIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5Lg0KK2lmIHRlc3QgIngkaG9zdF9hbGlh cyIgIT0geDsgdGhlbg0KKyAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuDQorICAg IGNyb3NzX2NvbXBpbGluZz1tYXliZQ0KKyAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBp ZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0Lg0K KyAgICBJZiBhIGNyb3NzIGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBt b2RlIHdpbGwgYmUgdXNlZCIgPiYyDQorICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4 JGhvc3RfYWxpYXMiOyB0aGVuDQorICAgIGNyb3NzX2NvbXBpbGluZz15ZXMNCisgIGZpDQorZmkN CisNCithY190b29sX3ByZWZpeD0NCit0ZXN0IC1uICIkaG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9w cmVmaXg9JGhvc3RfYWxpYXMtDQorDQordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9k ZXYvbnVsbA0KKw0KKw0KK2FjX3B3ZD1gcHdkYCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJg0KK2Fj X2xzX2RpPWBscyAtZGkgLmAgJiYNCithY19wd2RfbHNfZGk9YGNkICIkYWNfcHdkIiAmJiBscyAt ZGkgLmAgfHwNCisgIGFzX2ZuX2Vycm9yICQ/ICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUg ZGV0ZXJtaW5lZCINCit0ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwNCisg IGFzX2ZuX2Vycm9yICQ/ICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJl Y3RvcnkiDQorDQorDQorIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0aW9uIHdhcyBu b3Qgc3BlY2lmaWVkLg0KK2lmIHRlc3QgLXogIiRzcmNkaXIiOyB0aGVuDQorICBhY19zcmNkaXJf ZGVmYXVsdGVkPXllcw0KKyAgIyBUcnkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgc2Ny aXB0LCB0aGVuIHRoZSBwYXJlbnQgZGlyZWN0b3J5Lg0KKyAgYWNfY29uZmRpcj1gJGFzX2Rpcm5h bWUgLS0gIiRhc19teXNlbGYiIHx8DQorJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlte L11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpW14v XScgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYXNfbXlz ZWxmIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRhc19teXNl bGYiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAg IHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBz Ly9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0K KwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHEN CisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICBzcmNkaXI9JGFjX2NvbmZkaXINCisgIGlmIHRl c3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuDQorICAgIHNyY2Rpcj0uLg0K KyAgZmkNCitlbHNlDQorICBhY19zcmNkaXJfZGVmYXVsdGVkPW5vDQorZmkNCitpZiB0ZXN0ICEg LXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbg0KKyAgdGVzdCAiJGFjX3NyY2Rpcl9k ZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iDQorICBhc19mbl9l cnJvciAkPyAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGly Ig0KK2ZpDQorYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGly JyBkb2VzIG5vdCB3b3JrIg0KK2FjX2Fic19jb25mZGlyPWAoDQorCWNkICIkc3JjZGlyIiAmJiB0 ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciDQor CXB3ZClgDQorIyBXaGVuIGJ1aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGlyPS4NCitpZiB0ZXN0 ICIkYWNfYWJzX2NvbmZkaXIiID0gIiRhY19wd2QiOyB0aGVuDQorICBzcmNkaXI9Lg0KK2ZpDQor IyBSZW1vdmUgdW5uZWNlc3NhcnkgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4NCisjIERv dWJsZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVidWdnaW5nIGluZm8N CisjIG1lc3MgdXAgTS14IGdkYiBpbiBFbWFjcy4NCitjYXNlICRzcmNkaXIgaW4NCisqLykgc3Jj ZGlyPWBleHByICJYJHNyY2RpciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNyY2RpciIgOiAnWFwo LipcKSdgOzsNCitlc2FjDQorZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8NCisg IGV2YWwgYWNfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0NCisgIGV2YWwgYWNf ZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQ0KKyAgZXZhbCBhY19jdl9lbnZfJHthY192 YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0fQ0KKyAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3Zh bHVlPVwkJHthY192YXJ9DQorZG9uZQ0KKw0KKyMNCisjIFJlcG9ydCB0aGUgLS1oZWxwIG1lc3Nh Z2UuDQorIw0KK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuDQorICAjIE9t aXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVz cyBpbXBvc2luZy4NCisgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5n IGluIHRoZSBBL1VYIDMuMSBzaC4NCisgIGNhdCA8PF9BQ0VPRg0KK1xgY29uZmlndXJlJyBjb25m aWd1cmVzIG5ld2xpYiA0LjEuMCB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuDQor DQorVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uDQorDQorVG8gYXNzaWduIGVu dmlyb25tZW50IHZhcmlhYmxlcyAoZS5nLiwgQ0MsIENGTEFHUy4uLiksIHNwZWNpZnkgdGhlbSBh cw0KK1ZBUj1WQUxVRS4gIFNlZSBiZWxvdyBmb3IgZGVzY3JpcHRpb25zIG9mIHNvbWUgb2YgdGhl IHVzZWZ1bCB2YXJpYWJsZXMuDQorDQorRGVmYXVsdHMgZm9yIHRoZSBvcHRpb25zIGFyZSBzcGVj aWZpZWQgaW4gYnJhY2tldHMuDQorDQorQ29uZmlndXJhdGlvbjoNCisgIC1oLCAtLWhlbHAgICAg ICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0DQorICAgICAgLS1oZWxwPXNob3J0 ICAgICAgICBkaXNwbGF5IG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBwYWNrYWdlDQorICAgICAg LS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5j bHVkZWQgcGFja2FnZXMNCisgIC1WLCAtLXZlcnNpb24gICAgICAgICAgIGRpc3BsYXkgdmVyc2lv biBpbmZvcm1hdGlvbiBhbmQgZXhpdA0KKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50ICAgZG8gbm90 IHByaW50IFxgY2hlY2tpbmcgLi4uJyBtZXNzYWdlcw0KKyAgICAgIC0tY2FjaGUtZmlsZT1GSUxF ICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQ0KKyAgLUMsIC0tY29uZmln LWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScNCisgIC1u LCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzDQorICAgICAg LS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRp ciBvciBcYC4uJ10NCisNCitJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6DQorICAtLXByZWZpeD1Q UkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQ UkVGSVgNCisgICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdDQor ICAtLWV4ZWMtcHJlZml4PUVQUkVGSVggICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQg ZmlsZXMgaW4gRVBSRUZJWA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0NCisN CitCeSBkZWZhdWx0LCBcYG1ha2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIGFsbCB0aGUgZmlsZXMg aW4NCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWIn IGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQ0KK2FuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhh biBcYCRhY19kZWZhdWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsDQorZm9yIGluc3RhbmNl IFxgLS1wcmVmaXg9XCRIT01FJy4NCisNCitGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0 aW9ucyBiZWxvdy4NCisNCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9y aWVzOg0KKyAgLS1iaW5kaXI9RElSICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJ WC9iaW5dDQorICAtLXNiaW5kaXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJs ZXMgW0VQUkVGSVgvc2Jpbl0NCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhl Y3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10NCisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJl YWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQ0KKyAgLS1zaGFyZWRzdGF0 ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJF RklYL2NvbV0NCisgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1h Y2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0NCisgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVj dCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdDQorICAtLWluY2x1ZGVkaXI9RElSICAgICAg ICBDIGhlYWRlciBmaWxlcyBbUFJFRklYL2luY2x1ZGVdDQorICAtLW9sZGluY2x1ZGVkaXI9RElS ICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQ0KKyAgLS1kYXRh cm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2guLWluZGVwZW5kZW50IGRhdGEgcm9vdCBb UFJFRklYL3NoYXJlXQ0KKyAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFyY2hp dGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUl0NCisgIC0taW5mb2Rpcj1ESVIg ICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10NCisgIC0tbG9j YWxlZGlyPURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVIvbG9j YWxlXQ0KKyAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFS T09URElSL21hbl0NCisgIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9v dCBbREFUQVJPT1RESVIvZG9jL25ld2xpYl0NCisgIC0taHRtbGRpcj1ESVIgICAgICAgICAgIGh0 bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQ0KKyAgLS1kdmlkaXI9RElSICAgICAgICAgICAgZHZp IGRvY3VtZW50YXRpb24gW0RPQ0RJUl0NCisgIC0tcGRmZGlyPURJUiAgICAgICAgICAgIHBkZiBk b2N1bWVudGF0aW9uIFtET0NESVJdDQorICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1 bWVudGF0aW9uIFtET0NESVJdDQorX0FDRU9GDQorDQorICBjYXQgPDxcX0FDRU9GDQorDQorUHJv Z3JhbSBuYW1lczoNCisgIC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYICAgICAgICAgICAgcHJlcGVu ZCBQUkVGSVggdG8gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMNCisgIC0tcHJvZ3JhbS1zdWZmaXg9 U1VGRklYICAgICAgICAgICAgYXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1l cw0KKyAgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPVBST0dSQU0gICBydW4gc2VkIFBST0dSQU0g b24gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMNCisNCitTeXN0ZW0gdHlwZXM6DQorICAtLWJ1aWxk PUJVSUxEICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQ0KKyAg LS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4g b24gSE9TVCBbQlVJTERdDQorX0FDRU9GDQorZmkNCisNCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9o ZWxwIjsgdGhlbg0KKyAgY2FzZSAkYWNfaW5pdF9oZWxwIGluDQorICAgICBzaG9ydCB8IHJlY3Vy c2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbmV3bGliIDQuMS4wOiI7Ow0KKyAgIGVzYWMN CisgIGNhdCA8PFxfQUNFT0YNCisNCitPcHRpb25hbCBGZWF0dXJlczoNCisgIC0tZGlzYWJsZS1v cHRpb24tY2hlY2tpbmcgIGlnbm9yZSB1bnJlY29nbml6ZWQgLS1lbmFibGUvLS13aXRoIG9wdGlv bnMNCisgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNh bWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykNCisgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGlu Y2x1ZGUgRkVBVFVSRSBbQVJHPXllc10NCisgIC0tZW5hYmxlLW11bHRpbGliICAgICAgICAgYnVp bGQgbWFueSBsaWJyYXJ5IHZlcnNpb25zIChkZWZhdWx0KQ0KKyAgLS1lbmFibGUtdGFyZ2V0LW9w dHNwYWNlICBvcHRpbWl6ZSBmb3Igc3BhY2UNCisgIC0tZW5hYmxlLW1hbGxvYy1kZWJ1Z2dpbmcg aW5kaWNhdGUgbWFsbG9jIGRlYnVnZ2luZyByZXF1ZXN0ZWQNCisgIC0tZW5hYmxlLW5ld2xpYi1t dWx0aXRocmVhZCAgICAgICAgZW5hYmxlIHN1cHBvcnQgZm9yIG11bHRpcGxlIHRocmVhZHMNCisg IC0tZW5hYmxlLW5ld2xpYi1pY29udiAgICAgZW5hYmxlIGljb252IGxpYnJhcnkgc3VwcG9ydA0K KyAgLS1lbmFibGUtbmV3bGliLWVsaXgtbGV2ZWwgICAgICAgICBzdXBwbHkgZGVzaXJlZCBlbGl4 IGxpYnJhcnkgbGV2ZWwgKDEtNCkNCisgIC0tZGlzYWJsZS1uZXdsaWItaW8tZmxvYXQgZGlzYWJs ZSBwcmludGYvc2NhbmYgZmFtaWx5IGZsb2F0IHN1cHBvcnQNCisgIC0tZGlzYWJsZS1uZXdsaWIt c3VwcGxpZWQtc3lzY2FsbHMgZGlzYWJsZSBuZXdsaWIgZnJvbSBzdXBwbHlpbmcgc3lzY2FsbHMN CisgIC0tZGlzYWJsZS1uZXdsaWItZm5vLWJ1aWx0aW4gZGlzYWJsZSAtZm5vLWJ1aWx0aW4gZmxh ZyB0byBhbGxvdyBjb21waWxlciB0byB1c2UgYnVpbHRpbiBsaWJyYXJ5IGZ1bmN0aW9ucw0KKyAg LS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZA0K KyAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyAgIGRvIG5vdCByZWplY3Qgc2xvdyBkZXBl bmRlbmN5IGV4dHJhY3RvcnMNCisgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSAgZW5hYmxlIG1h a2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNlZnVsDQorCQkJICAoYW5kIHNvbWV0aW1l cyBjb25mdXNpbmcpIHRvIHRoZSBjYXN1YWwgaW5zdGFsbGVyDQorDQorU29tZSBpbmZsdWVudGlh bCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6DQorICBDQ0FTICAgICAgICBhc3NlbWJsZXIgY29tcGls ZXIgY29tbWFuZCAoZGVmYXVsdHMgdG8gQ0MpDQorICBDQ0FTRkxBR1MgICBhc3NlbWJsZXIgY29t cGlsZXIgZmxhZ3MgKGRlZmF1bHRzIHRvIENGTEFHUykNCisNCitVc2UgdGhlc2UgdmFyaWFibGVz IHRvIG92ZXJyaWRlIHRoZSBjaG9pY2VzIG1hZGUgYnkgYGNvbmZpZ3VyZScgb3IgdG8gaGVscA0K K2l0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVz L2xvY2F0aW9ucy4NCisNCitSZXBvcnQgYnVncyB0byB0aGUgcGFja2FnZSBwcm92aWRlci4NCitf QUNFT0YNCithY19zdGF0dXM9JD8NCitmaQ0KKw0KK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0g InJlY3Vyc2l2ZSI7IHRoZW4NCisgICMgSWYgdGhlcmUgYXJlIHN1YmRpcnMsIHJlcG9ydCB0aGVp ciBzcGVjaWZpYyAtLWhlbHAuDQorICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRpcnNfYWxsOyBk byB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250aW51ZQ0KKyAgICB0ZXN0IC1kICIkYWNfZGly IiB8fA0KKyAgICAgIHsgY2QgIiRzcmNkaXIiICYmIGFjX3B3ZD1gcHdkYCAmJiBzcmNkaXI9LiAm JiB0ZXN0IC1kICIkYWNfZGlyIjsgfSB8fA0KKyAgICAgIGNvbnRpbnVlDQorICAgIGFjX2J1aWxk ZGlyPS4NCisNCitjYXNlICIkYWNfZGlyIiBpbg0KKy4pIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9i dWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyopDQorICBhY19kaXJfc3Vm Zml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYA0KKyAgIyBBICIu LiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4Lg0KKyAgYWNfdG9wX2J1aWxk ZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58 ZztzfC98fCdgDQorICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluDQorICAiIikgYWNfdG9w X2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQorICAqKSAgYWNfdG9wX2J1 aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsNCisgIGVzYWMgOzsNCitlc2FjDQor YWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkDQorYWNfYWJzX2J1aWxkZGlyPSRhY19wd2QkYWNf ZGlyX3N1ZmZpeA0KKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6DQorYWNfdG9wX2J1aWxk ZGlyPSRhY190b3BfYnVpbGRfcHJlZml4DQorDQorY2FzZSAkc3JjZGlyIGluDQorICAuKSAgIyBX ZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuDQorICAgIGFjX3NyY2Rpcj0uDQorICAgIGFjX3RvcF9z cmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3 ZCA7Ow0KKyAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLg0KKyAgICBhY19z cmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4Ow0KKyAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIN CisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7Ow0KKyAgKikgIyBSZWxhdGl2ZSBuYW1l Lg0KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZm aXgNCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXINCisgICAg YWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7DQorZXNhYw0KK2FjX2Fic19zcmNk aXI9JGFjX2Fic190b3Bfc3JjZGlyJGFjX2Rpcl9zdWZmaXgNCisNCisgICAgY2QgIiRhY19kaXIi IHx8IHsgYWNfc3RhdHVzPSQ/OyBjb250aW51ZTsgfQ0KKyAgICAjIENoZWNrIGZvciBndWVzdGVk IGNvbmZpZ3VyZS4NCisgICAgaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251Ijsg dGhlbg0KKyAgICAgIGVjaG8gJiYNCisgICAgICAkU0hFTEwgIiRhY19zcmNkaXIvY29uZmlndXJl LmdudSIgLS1oZWxwPXJlY3Vyc2l2ZQ0KKyAgICBlbGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29u ZmlndXJlIjsgdGhlbg0KKyAgICAgIGVjaG8gJiYNCisgICAgICAkU0hFTEwgIiRhY19zcmNkaXIv Y29uZmlndXJlIiAtLWhlbHA9cmVjdXJzaXZlDQorICAgIGVsc2UNCisgICAgICAkYXNfZWNobyAi JGFzX21lOiBXQVJOSU5HOiBubyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19k aXIiID4mMg0KKyAgICBmaSB8fCBhY19zdGF0dXM9JD8NCisgICAgY2QgIiRhY19wd2QiIHx8IHsg YWNfc3RhdHVzPSQ/OyBicmVhazsgfQ0KKyAgZG9uZQ0KK2ZpDQorDQordGVzdCAtbiAiJGFjX2lu aXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzDQoraWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbg0K KyAgY2F0IDw8XF9BQ0VPRg0KK25ld2xpYiBjb25maWd1cmUgNC4xLjANCitnZW5lcmF0ZWQgYnkg R05VIEF1dG9jb25mIDIuNjgNCisNCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuDQorVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lv biB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuDQorX0FDRU9GDQorICBleGl0DQor ZmkNCisNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBBdXRvY29uZiBpbml0 aWFsaXphdGlvbi4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisNCisjIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgTElORU5PDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K KyMgVHJ5IHRvIGNvbXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRo aXMgc3VjY2VlZGVkLg0KK2FjX2ZuX2NfdHJ5X2NvbXBpbGUgKCkNCit7DQorICBhc19saW5lbm89 JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGlu ZW5vX3N0YWNrDQorICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0DQorICBpZiB7IHsgYWNfdHJ5 PSIkYWNfY29tcGlsZSINCitjYXNlICIoKCRhY190cnkiIGluDQorICAqXCIqIHwgKlxgKiB8ICpc XCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsNCisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7Ow0K K2VzYWMNCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 ICRhY190cnlfZWNob1wiIg0KKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQ0KKyAgKGV2 YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcnINCisgIGFjX3N0YXR1cz0kPw0KKyAgaWYg dGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4NCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qu ZXJyID5jb25mdGVzdC5lcjENCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUNCisgICAgbXYgLWYg Y29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycg0KKyAgZmkNCisgICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQ0KKyAgdGVzdCAkYWNfc3Rh dHVzID0gMDsgfSAmJiB7DQorCSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwNCisJIHRl c3QgISAtcyBjb25mdGVzdC5lcnINCisgICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19v YmpleHQ7IHRoZW4gOg0KKyAgYWNfcmV0dmFsPTANCitlbHNlDQorICAkYXNfZWNobyAiJGFzX21l OiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19l eHQgPiY1DQorDQorCWFjX3JldHZhbD0xDQorZmkNCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsg JHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubw0KKyAgYXNfZm5fc2V0X3N0YXR1 cyAkYWNfcmV0dmFsDQorDQorfSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUNCitjYXQgPmNvbmZpZy5s b2cgPDxfQUNFT0YNCitUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5 IGNvbXBpbGVycyB3aGlsZQ0KK3J1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlm IGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuDQorDQorSXQgd2FzIGNyZWF0ZWQgYnkgbmV3bGli ICRhc19tZSA0LjEuMCwgd2hpY2ggd2FzDQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4 LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzDQorDQorICAkICQwICRADQorDQorX0FDRU9G DQorZXhlYyA1Pj5jb25maWcubG9nDQorew0KK2NhdCA8PF9BU1VOQU1FDQorIyMgLS0tLS0tLS0t ICMjDQorIyMgUGxhdGZvcm0uICMjDQorIyMgLS0tLS0tLS0tICMjDQorDQoraG9zdG5hbWUgPSBg KGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWANCit1bmFtZSAtbSA9 IGAodW5hbWUgLW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCit1bmFtZSAtciA9IGAo dW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCit1bmFtZSAtcyA9IGAodW5h bWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCit1bmFtZSAtdiA9IGAodW5hbWUg LXYpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCisNCisvdXNyL2Jpbi91bmFtZSAtcCA9 IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCisvYmlu L3VuYW1lIC1YICAgICA9IGAoL2Jpbi91bmFtZSAtWCkgMj4vZGV2L251bGwgICAgIHx8IGVjaG8g dW5rbm93bmANCisNCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rl di9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gDQorL3Vzci9iaW4vYXJjaCAtayAg ICAgICA9IGAoL3Vzci9iaW4vYXJjaCAtaykgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtu b3duYA0KKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8p IDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCisvdXNyL2Jpbi9ob3N0aW5mbyAgICAgID0g YCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8fCBlY2hvIHVua25vd25gDQor L2Jpbi9tYWNoaW5lICAgICAgICAgICA9IGAoL2Jpbi9tYWNoaW5lKSAyPi9kZXYvbnVsbCAgICAg ICAgICAgfHwgZWNobyB1bmtub3duYA0KKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3Iv YmluL29zbGV2ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmANCisvYmluL3Vu aXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAgICAgICAgICB8 fCBlY2hvIHVua25vd25gDQorDQorX0FTVU5BTUUNCisNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICAkYXNfZWNobyAi UEFUSDogJGFzX2RpciINCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorfSA+JjUNCisN CitjYXQgPiY1IDw8X0FDRU9GDQorDQorDQorIyMgLS0tLS0tLS0tLS0gIyMNCisjIyBDb3JlIHRl c3RzLiAjIw0KKyMjIC0tLS0tLS0tLS0tICMjDQorDQorX0FDRU9GDQorDQorDQorIyBLZWVwIGEg dHJhY2Ugb2YgdGhlIGNvbW1hbmQgbGluZS4NCisjIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQg LS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4NCisjIFN0cmlwIG91dCAtLXNp bGVudCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVjb3JkIGl0IGZvciBmdXR1cmUgcnVucy4N CisjIEFsc28gcXVvdGUgYW55IGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhLWNoYXJhY3RlcnMu DQorIyBNYWtlIHR3byBwYXNzZXMgdG8gYWxsb3cgZm9yIHByb3BlciBkdXBsaWNhdGUtYXJndW1l bnQgc3VwcHJlc3Npb24uDQorYWNfY29uZmlndXJlX2FyZ3M9DQorYWNfY29uZmlndXJlX2FyZ3Mw PQ0KK2FjX2NvbmZpZ3VyZV9hcmdzMT0NCithY19tdXN0X2tlZXBfbmV4dD1mYWxzZQ0KK2ZvciBh Y19wYXNzIGluIDEgMg0KK2RvDQorICBmb3IgYWNfYXJnDQorICBkbw0KKyAgICBjYXNlICRhY19h cmcgaW4NCisgICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAt LW5vLXIqKSBjb250aW51ZSA7Ow0KKyAgICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUg fCAtLXF1aSB8IC0tcXUgfCAtLXEgXA0KKyAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2ls ZW4gfCAtLXNpbGUgfCAtLXNpbCkNCisgICAgICBjb250aW51ZSA7Ow0KKyAgICAqXCcqKQ0KKyAg ICAgIGFjX2FyZz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJg IDs7DQorICAgIGVzYWMNCisgICAgY2FzZSAkYWNfcGFzcyBpbg0KKyAgICAxKSBhc19mbl9hcHBl bmQgYWNfY29uZmlndXJlX2FyZ3MwICIgJyRhY19hcmcnIiA7Ow0KKyAgICAyKQ0KKyAgICAgIGFz X2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJnczEgIiAnJGFjX2FyZyciDQorICAgICAgaWYgdGVz dCAkYWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuDQorCWFjX211c3Rfa2VlcF9uZXh0PWZh bHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4NCisgICAgICBlbHNlDQorCWNhc2UgJGFj X2FyZyBpbg0KKwkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1k aXNhYmxlLSogXA0KKwkgIHwgLWVuYWJsZS0qIHwgLS1lbmFibGUtKiB8IC1nYXMgfCAtLWcqIHwg LW5mcCB8IC0tbmYqIFwNCisJICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNp bCogfCAtdiB8IC12ZXJiKiBcDQorCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0q IHwgLS13aXRob3V0LSogfCAtLXgpDQorCSAgICBjYXNlICIkYWNfY29uZmlndXJlX2FyZ3MwICIg aW4NCisJICAgICAgIiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGlu dWUgOzsNCisJICAgIGVzYWMNCisJICAgIDs7DQorCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10 cnVlIDs7DQorCWVzYWMNCisgICAgICBmaQ0KKyAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1 cmVfYXJncyAiICckYWNfYXJnJyINCisgICAgICA7Ow0KKyAgICBlc2FjDQorICBkb25lDQorZG9u ZQ0KK3sgYWNfY29uZmlndXJlX2FyZ3MwPTsgdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MwO30NCit7 IGFjX2NvbmZpZ3VyZV9hcmdzMT07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9DQorDQorIyBX aGVuIGludGVycnVwdGVkIG9yIGV4aXQnZCwgY2xlYW51cCB0ZW1wb3JhcnkgZmlsZXMsIGFuZCBj b21wbGV0ZQ0KKyMgY29uZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdh eSB0aGUgcXVvdGVzIGluIHRoZXJlDQorIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVn bHkuDQorIyBXQVJOSU5HOiBVc2UgJ1wnJyB0byByZXByZXNlbnQgYW4gYXBvc3Ryb3BoZSB3aXRo aW4gdGhlIHRyYXAuDQorIyBXQVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRo IGEgbmV3bGluZSwgZHVlIHRvIGEgRnJlZUJTRCA0LjAgYnVnLg0KK3RyYXAgJ2V4aXRfc3RhdHVz PSQ/DQorICAjIFNhdmUgaW50byBjb25maWcubG9nIHNvbWUgaW5mb3JtYXRpb24gdGhhdCBtaWdo dCBoZWxwIGluIGRlYnVnZ2luZy4NCisgIHsNCisgICAgZWNobw0KKw0KKyAgICAkYXNfZWNobyAi IyMgLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIENhY2hlIHZhcmlhYmxlcy4gIyMNCisjIyAtLS0t LS0tLS0tLS0tLS0tICMjIg0KKyAgICBlY2hvDQorICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Yg d3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsDQorKA0KKyAg Zm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16 QS1aMC05X10qXCk9LiovXDEvcCdcJydgOyBkbw0KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIN CisgICAgY2FzZSAkYWNfdmFsIGluICMoDQorICAgICoke2FzX25sfSopDQorICAgICAgY2FzZSAk YWNfdmFyIGluICMoDQorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBu ZXdsaW5lIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAk YWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsNCisgICAgICBlc2FjDQorICAgICAg Y2FzZSAkYWNfdmFyIGluICMoDQorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKA0KKyAgICAg IEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoDQorICAgICAgKikg eyBldmFsICRhY192YXI9OyB1bnNldCAkYWNfdmFyO30gOzsNCisgICAgICBlc2FjIDs7DQorICAg IGVzYWMNCisgIGRvbmUNCisgIChzZXQpIDI+JjEgfA0KKyAgICBjYXNlICRhc19ubGAoYWNfc3Bh Y2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFgIGluICMoDQorICAgICoke2FzX25sfWFjX3NwYWNlPVwg KikNCisgICAgICBzZWQgLW4gXA0KKwkicy8nXCcnLydcJydcXFxcJ1wnJydcJycvZzsNCisJICBz L15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwx PSdcJydcXDInXCcnL3AiDQorICAgICAgOzsgIygNCisgICAgKikNCisgICAgICBzZWQgLW4gIi9e W18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qPS9wIg0KKyAgICAgIDs7DQorICAg IGVzYWMgfA0KKyAgICBzb3J0DQorKQ0KKyAgICBlY2hvDQorDQorICAgICRhc19lY2hvICIjIyAt LS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIE91dHB1dCB2YXJpYWJsZXMuICMjDQorIyMgLS0tLS0t LS0tLS0tLS0tLS0gIyMiDQorICAgIGVjaG8NCisgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3Rf dmFycw0KKyAgICBkbw0KKyAgICAgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAgICAgIGNhc2Ug JGFjX3ZhbCBpbg0KKyAgICAgICpcJ1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwg c2VkICJzLydcJycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsNCisgICAgICBlc2FjDQorICAg ICAgJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIg0KKyAgICBkb25lIHwgc29ydA0K KyAgICBlY2hvDQorDQorICAgIGlmIHRlc3QgLW4gIiRhY19zdWJzdF9maWxlcyI7IHRoZW4NCisg ICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIEZpbGUgc3Vic3Rp dHV0aW9ucy4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjIg0KKyAgICAgIGVjaG8NCisg ICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcw0KKyAgICAgIGRvDQorCWV2YWwgYWNf dmFsPVwkJGFjX3Zhcg0KKwljYXNlICRhY192YWwgaW4NCisJKlwnXCcnKikgYWNfdmFsPWAkYXNf ZWNobyAiJGFjX3ZhbCIgfCBzZWQgInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7Ow0K Kwllc2FjDQorCSRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyINCisgICAgICBkb25l IHwgc29ydA0KKyAgICAgIGVjaG8NCisgICAgZmkNCisNCisgICAgaWYgdGVzdCAtcyBjb25mZGVm cy5oOyB0aGVuDQorICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjDQorIyMgY29uZmRl ZnMuaC4gIyMNCisjIyAtLS0tLS0tLS0tLSAjIyINCisgICAgICBlY2hvDQorICAgICAgY2F0IGNv bmZkZWZzLmgNCisgICAgICBlY2hvDQorICAgIGZpDQorICAgIHRlc3QgIiRhY19zaWduYWwiICE9 IDAgJiYNCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWduYWwi DQorICAgICRhc19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIg0KKyAgfSA+JjUNCisg IHJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJg0KKyAgICBybSAtZiAtciBjb25m dGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVzICYmDQorICAgIGV4aXQgJGV4 aXRfc3RhdHVzDQorJyAwDQorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvDQorICB0cmFw ICdhY19zaWduYWw9JyRhY19zaWduYWwnOyBhc19mbl9leGl0IDEnICRhY19zaWduYWwNCitkb25l DQorYWNfc2lnbmFsPTANCisNCisjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBs ZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLg0KK3JtIC1mIC1yIGNvbmZ0ZXN0KiBj b25mZGVmcy5oDQorDQorJGFzX2VjaG8gIi8qIGNvbmZkZWZzLmggKi8iID4gY29uZmRlZnMuaA0K Kw0KKyMgUHJlZGVmaW5lZCBwcmVwcm9jZXNzb3IgdmFyaWFibGVzLg0KKw0KK2NhdCA+PmNvbmZk ZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiJFBBQ0tBR0VfTkFNRSINCitf QUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX1RB Uk5BTUUgIiRQQUNLQUdFX1RBUk5BTUUiDQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8 PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIg0KK19B Q0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfU1RS SU5HICIkUEFDS0FHRV9TVFJJTkciDQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgIiRQQUNLQUdFX0JVR1JFUE9SVCINCitf QUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX1VS TCAiJFBBQ0tBR0VfVVJMIg0KK19BQ0VPRg0KKw0KKw0KKyMgTGV0IHRoZSBzaXRlIGZpbGUgc2Vs ZWN0IGFuIGFsdGVybmF0ZSBjYWNoZSBmaWxlIGlmIGl0IHdhbnRzIHRvLg0KKyMgUHJlZmVyIGFu IGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMu DQorYWNfc2l0ZV9maWxlMT1OT05FDQorYWNfc2l0ZV9maWxlMj1OT05FDQoraWYgdGVzdCAtbiAi JENPTkZJR19TSVRFIjsgdGhlbg0KKyAgIyBXZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZv ciBjb25maWcuc2l0ZS4NCisgIGNhc2UgJENPTkZJR19TSVRFIGluICMoKA0KKyAgICAtKikgIGFj X3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7Ow0KKyAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENP TkZJR19TSVRFOzsNCisgICAgKikgICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsNCisg IGVzYWMNCitlbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbg0KKyAgYWNfc2l0ZV9m aWxlMT0kcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlDQorICBhY19zaXRlX2ZpbGUyPSRwcmVmaXgv ZXRjL2NvbmZpZy5zaXRlDQorZWxzZQ0KKyAgYWNfc2l0ZV9maWxlMT0kYWNfZGVmYXVsdF9wcmVm aXgvc2hhcmUvY29uZmlnLnNpdGUNCisgIGFjX3NpdGVfZmlsZTI9JGFjX2RlZmF1bHRfcHJlZml4 L2V0Yy9jb25maWcuc2l0ZQ0KK2ZpDQorZm9yIGFjX3NpdGVfZmlsZSBpbiAiJGFjX3NpdGVfZmls ZTEiICIkYWNfc2l0ZV9maWxlMiINCitkbw0KKyAgdGVzdCAieCRhY19zaXRlX2ZpbGUiID0geE5P TkUgJiYgY29udGludWUNCisgIGlmIHRlc3QgL2Rldi9udWxsICE9ICIkYWNfc2l0ZV9maWxlIiAm JiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbg0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIg PiY1DQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxl IiA+JjY7fQ0KKyAgICBzZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+JjUNCisgICAgLiAi JGFjX3NpdGVfZmlsZSIgXA0KKyAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQ0KKyRhc19lY2hvICIkYXNf bWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30NCithc19mbl9lcnJvciAkPyAiZmFpbGVk IHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQ0KK1NlZSBcYGNvbmZpZy5sb2cnIGZv ciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9DQorICBmaQ0KK2RvbmUNCisNCitpZiB0ZXN0 IC1yICIkY2FjaGVfZmlsZSI7IHRoZW4NCisgICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwg ZmFpbCB0byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFsIGZpbGVzDQorICAjIGFjdHVhbGx5KSwg c28gd2UgYXZvaWQgZG9pbmcgdGhhdC4gIERKR1BQIGVtdWxhdGVzIGl0IGFzIGEgcmVndWxhciBm aWxlLg0KKyAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRjYWNoZV9maWxlIiAmJiB0ZXN0IC1mICIk Y2FjaGVfZmlsZSI7IHRoZW4NCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21l OiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAgICBjYXNlICRjYWNoZV9maWxl IGluDQorICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICIkY2FjaGVfZmlsZSI7Ow0KKyAgICAg ICopICAgICAgICAgICAgICAgICAgICAgIC4gIi4vJGNhY2hlX2ZpbGUiOzsNCisgICAgZXNhYw0K KyAgZmkNCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBjcmVh dGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30NCisgID4kY2FjaGVfZmlsZQ0KK2ZpDQorDQor IyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhh dmUga2VwdCB0aGUgc2FtZQ0KKyMgdmFsdWUuDQorYWNfY2FjaGVfY29ycnVwdGVkPWZhbHNlDQor Zm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8NCisgIGV2YWwgYWNfb2xkX3NldD1c JGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0DQorICBldmFsIGFjX25ld19zZXQ9XCRhY19lbnZfJHth Y192YXJ9X3NldA0KKyAgZXZhbCBhY19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1 ZQ0KKyAgZXZhbCBhY19uZXdfdmFsPVwkYWNfZW52XyR7YWNfdmFyfV92YWx1ZQ0KKyAgY2FzZSAk YWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbg0KKyAgICBzZXQsKQ0KKyAgICAgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0 byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUNCiskYXNfZWNobyAiJGFz X21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBw cmV2aW91cyBydW4iID4mMjt9DQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsNCisgICAg LHNldCkNCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVy cm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mNQ0KKyRh c19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2 aW91cyBydW4iID4mMjt9DQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsNCisgICAgLCk7 Ow0KKyAgICAqKQ0KKyAgICAgIGlmIHRlc3QgIngkYWNfb2xkX3ZhbCIgIT0gIngkYWNfbmV3X3Zh bCI7IHRoZW4NCisJIyBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGRvIG5vdCBsZWFkIHRvIGZh aWx1cmUuDQorCWFjX29sZF92YWxfdz1gZWNobyB4ICRhY19vbGRfdmFsYA0KKwlhY19uZXdfdmFs X3c9YGVjaG8geCAkYWNfbmV3X3ZhbGANCisJaWYgdGVzdCAiJGFjX29sZF92YWxfdyIgIT0gIiRh Y19uZXdfdmFsX3ciOyB0aGVuDQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMg cnVuOiIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5n ZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mMjt9DQorCSAgYWNfY2FjaGVfY29ycnVwdGVk PToNCisJZWxzZQ0KKwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog d2FybmluZzogaWdub3Jpbmcgd2hpdGVzcGFjZSBjaGFuZ2VzIGluIFxgJGFjX3Zhcicgc2luY2Ug dGhlIHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IHdhcm5pbmc6IGlnbm9y aW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBy dW46IiA+JjI7fQ0KKwkgIGV2YWwgJGFjX3Zhcj1cJGFjX29sZF92YWwNCisJZmkNCisJeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGZvcm1lciB2YWx1ZTogIFxgJGFj X29sZF92YWwnIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogIFxgJGFj X29sZF92YWwnIiA+JjI7fQ0KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306ICAgY3VycmVudCB2YWx1ZTogXGAkYWNfbmV3X3ZhbCciID4mNQ0KKyRhc19lY2hvICIkYXNf bWU6ICAgY3VycmVudCB2YWx1ZTogXGAkYWNfbmV3X3ZhbCciID4mMjt9DQorICAgICAgZmk7Ow0K KyAgZXNhYw0KKyAgIyBQYXNzIHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLg0K KyAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuDQorICAgIGNhc2UgJGFjX25ld192 YWwgaW4NCisgICAgKlwnKikgYWNfYXJnPSRhY192YXI9YCRhc19lY2hvICIkYWNfbmV3X3ZhbCIg fCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsNCisgICAgKikgYWNfYXJnPSRhY192YXI9JGFj X25ld192YWwgOzsNCisgICAgZXNhYw0KKyAgICBjYXNlICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIg aW4NCisgICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90 ZXMgZW5zdXJlcyBhY2N1cmFjeS4NCisgICAgICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJl X2FyZ3MgIiAnJGFjX2FyZyciIDs7DQorICAgIGVzYWMNCisgIGZpDQorZG9uZQ0KK2lmICRhY19j YWNoZV9jb3JydXB0ZWQ7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBl cnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9DQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29t cHJvbWlzZSB0aGUgYnVpbGQiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2Vz IGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9DQorICBh c19mbl9lcnJvciAkPyAicnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9m aWxlJyBhbmQgc3RhcnQgb3ZlciIgIiRMSU5FTk8iIDUNCitmaQ0KKyMjIC0tLS0tLS0tLS0tLS0t LS0tLS0tICMjDQorIyMgTWFpbiBib2R5IG9mIHNjcmlwdC4gIyMNCisjIyAtLS0tLS0tLS0tLS0t LS0tLS0tLSAjIw0KKw0KK2FjX2V4dD1jDQorYWNfY3BwPSckQ1BQICRDUFBGTEFHUycNCithY19j b21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnDQor YWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERG TEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScNCithY19jb21waWxlcl9nbnU9JGFjX2N2 X2NfY29tcGlsZXJfZ251DQorDQorDQorDQorDQorYWNfYXV4X2Rpcj0NCitmb3IgYWNfZGlyIGlu IC4uLy4uLy4uLy4uICIkc3JjZGlyIi8uLi8uLi8uLi8uLjsgZG8NCisgIGlmIHRlc3QgLWYgIiRh Y19kaXIvaW5zdGFsbC1zaCI7IHRoZW4NCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyDQorICAgIGFj X2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiDQorICAgIGJyZWFrDQorICBl bGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4NCisgICAgYWNfYXV4X2Rpcj0k YWNfZGlyDQorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiDQor ICAgIGJyZWFrDQorICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbg0KKyAgICBh Y19hdXhfZGlyPSRhY19kaXINCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29s IGluc3RhbGwgLWMiDQorICAgIGJyZWFrDQorICBmaQ0KK2RvbmUNCitpZiB0ZXN0IC16ICIkYWNf YXV4X2RpciI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBpbnN0YWxsLXNo LCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gLi4vLi4vLi4vLi4gXCIkc3JjZGlyXCIvLi4vLi4v Li4vLi4iICIkTElORU5PIiA1DQorZmkNCisNCisjIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUg dW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwNCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUg d2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuDQorIyBUaGV5IGNhbiBjYXVz ZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGly ZWN0b3J5DQorIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzLg0K K2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxl YXNlIGRvbid0IHVzZSB0aGlzIHZhci4NCithY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9k aXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4NCithY19jb25maWd1 cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhp cyB2YXIuDQorDQorDQorDQorDQorIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLg0K KyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwN CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcu c3ViIiAiJExJTkVOTyIgNQ0KKw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQ0KKyRhc19lY2hvX24gImNoZWNr aW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9idWlsZCs6fSBm YWxzZTsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGFj X2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcw0KK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAm Jg0KKyAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzImAN Cit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYNCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5u b3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1DQor YWNfY3ZfYnVpbGQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxkX2Fs aWFzYCB8fA0KKyAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3Vi ICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1DQorDQorZmkNCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUN CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0NCitjYXNlICRhY19jdl9idWlsZCBpbg0K KyotKi0qKSA7Ow0KKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNh bCBidWlsZCIgIiRMSU5FTk8iIDU7Ow0KK2VzYWMNCitidWlsZD0kYWNfY3ZfYnVpbGQNCithY19z YXZlX0lGUz0kSUZTOyBJRlM9Jy0nDQorc2V0IHggJGFjX2N2X2J1aWxkDQorc2hpZnQNCitidWls ZF9jcHU9JDENCitidWlsZF92ZW5kb3I9JDINCitzaGlmdDsgc2hpZnQNCisjIFJlbWVtYmVyLCB0 aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwNCisjIGV4Y2Vw dCB3aXRoIG9sZCBzaGVsbHM6DQorYnVpbGRfb3M9JCoNCitJRlM9JGFjX3NhdmVfSUZTDQorY2Fz ZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIgfCBzZWQgJ3Mv IC8tL2cnYDs7IGVzYWMNCisNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQ0KKyRhc19lY2hvX24gImNoZWNr aW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0NCitpZiAke2FjX2N2X2hvc3QrOn0gZmFs c2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0 ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbg0KKyAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQN CitlbHNlDQorICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRo b3N0X2FsaWFzYCB8fA0KKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2Nv bmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQ0KK2ZpDQorDQorZmkNCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hv c3QiID4mNQ0KKyRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9DQorY2FzZSAkYWNfY3ZfaG9z dCBpbg0KKyotKi0qKSA7Ow0KKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNh bm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7DQorZXNhYw0KK2hvc3Q9JGFjX2N2X2hvc3QNCith Y19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nDQorc2V0IHggJGFjX2N2X2hvc3QNCitzaGlmdA0KK2hv c3RfY3B1PSQxDQoraG9zdF92ZW5kb3I9JDINCitzaGlmdDsgc2hpZnQNCisjIFJlbWVtYmVyLCB0 aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwNCisjIGV4Y2Vw dCB3aXRoIG9sZCBzaGVsbHM6DQoraG9zdF9vcz0kKg0KK0lGUz0kYWNfc2F2ZV9JRlMNCitjYXNl ICRob3N0X29zIGluICpcICopIGhvc3Rfb3M9YGVjaG8gIiRob3N0X29zIiB8IHNlZCAncy8gLy0v ZydgOzsgZXNhYw0KKw0KKw0KK2FtX19hcGlfdmVyc2lvbj0nMS4xMScNCisNCisjIEZpbmQgYSBn b29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwNCisj IHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9r ZW4gb3INCisjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoNCisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAv dXNyL3NiaW4vaW5zdGFsbA0KKyMgU3VuT1MgL3Vzci9ldGMvaW5zdGFsbA0KKyMgSVJJWCAvc2Jp bi9pbnN0YWxsDQorIyBBSVggL2Jpbi9pbnN0YWxsDQorIyBBbWlnYU9TIC9DL2luc3RhbGwsIHdo aWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2NzDQorIyBBSVggNCAvdXNyL2Jp bi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcNCisjIEFG UyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFy Z3MNCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRoZSBub25l eGlzdGVudCBncm91cCAic3RhZmYiDQorIyBPUy8yJ3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhh cyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFudGljDQorIyAuL2luc3RhbGwsIHdoaWNoIGNh biBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guDQorIyBS ZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxlIGZpbGVz Lg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgLXogIiRJTlNU QUxMIjsgdGhlbg0KK2lmICR7YWNfY3ZfcGF0aF9pbnN0YWxsKzp9IGZhbHNlOyB0aGVuIDoNCisg ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsg SUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRh c19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgIyBBY2Nv dW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMu DQorY2FzZSAkYXNfZGlyLyBpbiAjKCgNCisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8IFwNCisgIC9l dGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jp bi8qIHwgXA0KKyAgPzpbXFwvXW9zMltcXC9daW5zdGFsbFtcXC9dKiB8ID86W1xcL11PUzJbXFwv XUlOU1RBTExbXFwvXSogfCBcDQorICAvdXNyL3VjYi8qICkgOzsNCisgICopDQorICAgICMgT1NG MSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuDQorICAg ICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYg YXMgcm9vdA0KKyAgICAjIGJ5IGRlZmF1bHQuDQorICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxs IHNjb2luc3QgaW5zdGFsbDsgZG8NCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4 ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisJaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9n JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0 IjsgfTsgdGhlbg0KKwkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmDQorCSAgICBncmVw IGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0 aGVuDQorCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5n IGNvbnZlbnRpb24uDQorCSAgICA6DQorCSAgZWxpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAm Jg0KKwkgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2 L251bGwgMj4mMTsgdGhlbg0KKwkgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3RhbGwgc2NyaXB0 IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuDQorCSAgICA6DQorCSAgZWxzZQ0KKwkgICAg cm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGlyDQorCSAgICBlY2hv IG9uZSA+IGNvbmZ0ZXN0Lm9uZQ0KKwkgICAgZWNobyB0d28gPiBjb25mdGVzdC50d28NCisJICAg IG1rZGlyIGNvbmZ0ZXN0LmRpcg0KKwkgICAgaWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19l eHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gImBwd2RgL2NvbmZ0ZXN0LmRpciIgJiYN CisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5vbmUgJiYgdGVzdCAtcyBjb25mdGVzdC50d28gJiYN CisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3Qub25lICYmDQorCSAgICAgIHRl c3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0LnR3bw0KKwkgICAgdGhlbg0KKwkgICAgICBhY19j dl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMiDQorCSAgICAg IGJyZWFrIDMNCisJICAgIGZpDQorCSAgZmkNCisJZmkNCisgICAgICBkb25lDQorICAgIGRvbmUN CisgICAgOzsNCitlc2FjDQorDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK3JtIC1y ZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcg0KKw0KK2ZpDQorICBpZiB0 ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbg0KKyAgICBJTlNUQUxM PSRhY19jdl9wYXRoX2luc3RhbGwNCisgIGVsc2UNCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1 c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQ0KKyAgICAjIHZhbHVlIGZv ciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsDQor ICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0 b3J5IGlzDQorICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFt ZS4NCisgICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaA0KKyAgZmkNCitmaQ0KK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1DQorJGFz X2VjaG8gIiRJTlNUQUxMIiA+JjY7IH0NCisNCisjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0 IHNoIG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uDQorIyBJdCB0aGlua3MgdGhlIGZp cnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4NCit0ZXN0IC16 ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nDQorDQor dGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScN CisNCit0ZXN0IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0g LW0gNjQ0Jw0KKw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lIiA+JjUNCiskYXNfZWNob19u ICJjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuLi4gIiA+JjY7IH0N CisjIEp1c3QgaW4gY2FzZQ0KK3NsZWVwIDENCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZp bGUNCisjIFJlamVjdCB1bnNhZmUgY2hhcmFjdGVycyBpbiAkc3JjZGlyIG9yIHRoZSBhYnNvbHV0 ZSB3b3JraW5nIGRpcmVjdG9yeQ0KKyMgbmFtZS4gIEFjY2VwdCBzcGFjZSBhbmQgdGFiIG9ubHkg aW4gdGhlIGxhdHRlci4NCithbV9sZj0nDQorJw0KK2Nhc2UgYHB3ZGAgaW4NCisgICpbXFxcIlwj XCRcJlwnXGAkYW1fbGZdKikNCisgICAgYXNfZm5fZXJyb3IgJD8gInVuc2FmZSBhYnNvbHV0ZSB3 b3JraW5nIGRpcmVjdG9yeSBuYW1lIiAiJExJTkVOTyIgNTs7DQorZXNhYw0KK2Nhc2UgJHNyY2Rp ciBpbg0KKyAgKltcXFwiXCNcJFwmXCdcYCRhbV9sZlwgXAldKikNCisgICAgYXNfZm5fZXJyb3Ig JD8gInVuc2FmZSBzcmNkaXIgdmFsdWU6IFxgJHNyY2RpciciICIkTElORU5PIiA1OzsNCitlc2Fj DQorDQorIyBEbyBgc2V0JyBpbiBhIHN1YnNoZWxsIHNvIHdlIGRvbid0IGNsb2JiZXIgdGhlIGN1 cnJlbnQgc2hlbGwncw0KKyMgYXJndW1lbnRzLiAgTXVzdCB0cnkgLUwgZmlyc3QgaW4gY2FzZSBj b25maWd1cmUgaXMgYWN0dWFsbHkgYQ0KKyMgc3ltbGluazsgc29tZSBzeXN0ZW1zIHBsYXkgd2Vp cmQgZ2FtZXMgd2l0aCB0aGUgbW9kIHRpbWUgb2Ygc3ltbGlua3MNCisjIChlZyBGcmVlQlNEIHJl dHVybnMgdGhlIG1vZCB0aW1lIG9mIHRoZSBzeW1saW5rJ3MgY29udGFpbmluZw0KKyMgZGlyZWN0 b3J5KS4NCitpZiAoDQorICAgc2V0IFggYGxzIC1MdCAiJHNyY2Rpci9jb25maWd1cmUiIGNvbmZ0 ZXN0LmZpbGUgMj4gL2Rldi9udWxsYA0KKyAgIGlmIHRlc3QgIiQqIiA9ICJYIjsgdGhlbg0KKyAg ICAgICMgLUwgZGlkbid0IHdvcmsuDQorICAgICAgc2V0IFggYGxzIC10ICIkc3JjZGlyL2NvbmZp Z3VyZSIgY29uZnRlc3QuZmlsZWANCisgICBmaQ0KKyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUNCisg ICBpZiB0ZXN0ICIkKiIgIT0gIlggJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSIgXA0K KyAgICAgICYmIHRlc3QgIiQqIiAhPSAiWCBjb25mdGVzdC5maWxlICRzcmNkaXIvY29uZmlndXJl IjsgdGhlbg0KKw0KKyAgICAgICMgSWYgbmVpdGhlciBtYXRjaGVkLCB0aGVuIHdlIGhhdmUgYSBi cm9rZW4gbHMuICBUaGlzIGNhbiBoYXBwZW4NCisgICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENP TkZJR19TSEVMTCBpcyBiYXNoIGFuZCBpdCBpbmhlcml0cyBhDQorICAgICAgIyBicm9rZW4gbHMg YWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQ0KKyAgICAgICMg aGFwcGVuZWQuICBTdWNoIGEgc3lzdGVtIGNvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJzYW5lIi4N CisgICAgICBhc19mbl9lcnJvciAkPyAibHMgLXQgYXBwZWFycyB0byBmYWlsLiAgTWFrZSBzdXJl IHRoZXJlIGlzIG5vdCBhIGJyb2tlbg0KK2FsaWFzIGluIHlvdXIgZW52aXJvbm1lbnQiICIkTElO RU5PIiA1DQorICAgZmkNCisNCisgICB0ZXN0ICIkMiIgPSBjb25mdGVzdC5maWxlDQorICAgKQ0K K3RoZW4NCisgICAjIE9rLg0KKyAgIDoNCitlbHNlDQorICAgYXNfZm5fZXJyb3IgJD8gIm5ld2x5 IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFuIGRpc3RyaWJ1dGVkIGZpbGVzIQ0KK0NoZWNrIHlv dXIgc3lzdGVtIGNsb2NrIiAiJExJTkVOTyIgNQ0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1DQorJGFzX2VjaG8gInllcyIgPiY2 OyB9DQordGVzdCAiJHByb2dyYW1fcHJlZml4IiAhPSBOT05FICYmDQorICBwcm9ncmFtX3RyYW5z Zm9ybV9uYW1lPSJzJl4mJHByb2dyYW1fcHJlZml4JjskcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIN CisjIFVzZSBhIGRvdWJsZSAkIHNvIG1ha2UgaWdub3JlcyBpdC4NCit0ZXN0ICIkcHJvZ3JhbV9z dWZmaXgiICE9IE5PTkUgJiYNCisgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9InMmXCQmJHByb2dy YW1fc3VmZml4JjskcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSINCisjIERvdWJsZSBhbnkgXCBvciAk Lg0KKyMgQnkgZGVmYXVsdCB3YXMgYHMseCx4JywgcmVtb3ZlIGl0IGlmIHVzZWxlc3MuDQorYWNf c2NyaXB0PSdzL1tcXCRdLyYmL2c7cy87cyx4LHgsJC8vJw0KK3Byb2dyYW1fdHJhbnNmb3JtX25h bWU9YCRhc19lY2hvICIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgfCBzZWQgIiRhY19zY3JpcHQi YA0KKw0KKyMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgNCithbV9hdXhf ZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgDQorDQoraWYgdGVzdCB4IiR7TUlTU0lORytzZXR9 IiAhPSB4c2V0OyB0aGVuDQorICBjYXNlICRhbV9hdXhfZGlyIGluDQorICAqXCAqIHwgKlwJKikN CisgICAgTUlTU0lORz0iXCR7U0hFTEx9IFwiJGFtX2F1eF9kaXIvbWlzc2luZ1wiIiA7Ow0KKyAg KikNCisgICAgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciIDs7DQorICBl c2FjDQorZmkNCisjIFVzZSBldmFsIHRvIGV4cGFuZCAkU0hFTEwNCitpZiBldmFsICIkTUlTU0lO RyAtLXJ1biB0cnVlIjsgdGhlbg0KKyAgYW1fbWlzc2luZ19ydW49IiRNSVNTSU5HIC0tcnVuICIN CitlbHNlDQorICBhbV9taXNzaW5nX3J1bj0NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogV0FSTklORzogXGBtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBt aXNzaW5nIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBcYG1pc3NpbmcnIHNjcmlw dCBpcyB0b28gb2xkIG9yIG1pc3NpbmciID4mMjt9DQorZmkNCisNCitpZiB0ZXN0IHgiJHtpbnN0 YWxsX3NofSIgIT0geHNldDsgdGhlbg0KKyAgY2FzZSAkYW1fYXV4X2RpciBpbg0KKyAgKlwgKiB8 ICpcCSopDQorICAgIGluc3RhbGxfc2g9Ilwke1NIRUxMfSAnJGFtX2F1eF9kaXIvaW5zdGFsbC1z aCciIDs7DQorICAqKQ0KKyAgICBpbnN0YWxsX3NoPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvaW5z dGFsbC1zaCINCisgIGVzYWMNCitmaQ0KKw0KKyMgSW5zdGFsbGVkIGJpbmFyaWVzIGFyZSB1c3Vh bGx5IHN0cmlwcGVkIHVzaW5nIGBzdHJpcCcgd2hlbiB0aGUgdXNlcg0KKyMgcnVuIGBtYWtlIGlu c3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQNCisj IHRvb2wgdG8gdXNlIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50cywgdGhlcmVmb3Jl IEF1dG9tYWtlDQorIyB3aWxsIGhvbm9yIHRoZSBgU1RSSVAnIGVudmlyb25tZW50IHZhcmlhYmxl IHRvIG92ZXJydWxlIHRoaXMgcHJvZ3JhbS4NCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAh PSBubzsgdGhlbg0KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBF eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQg Y2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJHthY190b29sX3By ZWZpeH1zdHJpcDsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2lu ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiAke2FjX2N2X3Byb2dfU1RSSVArOn0gZmFs c2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0 ZXN0IC1uICIkU1RSSVAiOyB0aGVuDQorICBhY19jdl9wcm9nX1NUUklQPSIkU1RSSVAiICMgTGV0 IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJ RlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFz X3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNf ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVz dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19TVFJJUD0i JHthY190b29sX3ByZWZpeH1zdHJpcCINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAg IGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitm aQ0KK2ZpDQorU1RSSVA9JGFjX2N2X3Byb2dfU1RSSVANCitpZiB0ZXN0IC1uICIkU1RSSVAiOyB0 aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JFNUUklQIiA+JjUNCiskYXNfZWNobyAiJFNUUklQIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19l Y2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitmaQ0KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9n X1NUUklQIjsgdGhlbg0KKyAgYWNfY3RfU1RSSVA9JFNUUklQDQorICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgInN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn cy4NCitzZXQgZHVtbXkgc3RyaXA7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX2Fj X2N0X1NUUklQKzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbg0KKyAgYWNfY3ZfcHJv Z19hY19jdF9TVFJJUD0iJGFjX2N0X1NUUklQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2Zv ciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAi JGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVj dXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfYWNfY3RfU1RSSVA9InN0cmlwIg0KKyAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQor SUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9TVFJJUD0kYWNfY3ZfcHJvZ19h Y19jdF9TVFJJUA0KK2lmIHRlc3QgLW4gIiRhY19jdF9TVFJJUCI7IHRoZW4NCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfU1RSSVAiID4m NQ0KKyRhc19lY2hvICIkYWNfY3RfU1RSSVAiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8g Im5vIiA+JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9TVFJJUCIgPSB4OyB0aGVu DQorICAgIFNUUklQPSI6Ig0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFj X3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv c3QgdHJpcGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3Mg dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2Fy bmVkPXllcyA7Ow0KK2VzYWMNCisgICAgU1RSSVA9JGFjX2N0X1NUUklQDQorICBmaQ0KK2Vsc2UN CisgIFNUUklQPSIkYWNfY3ZfcHJvZ19TVFJJUCINCitmaQ0KKw0KK2ZpDQorSU5TVEFMTF9TVFJJ UF9QUk9HUkFNPSJcJChpbnN0YWxsX3NoKSAtYyAtcyINCisNCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1w IiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSB0aHJlYWQtc2FmZSBta2RpciAtcC4u LiAiID4mNjsgfQ0KK2lmIHRlc3QgLXogIiRNS0RJUl9QIjsgdGhlbg0KKyAgaWYgJHthY19jdl9w YXRoX21rZGlyKzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 DQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBh c19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1Ivb3B0L3Nmdy9iaW4NCitkbw0KKyAgSUZTPSRh c19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFj X3Byb2cgaW4gbWtkaXIgZ21rZGlyOyBkbw0KKwkgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorCSAgIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfcHJv ZyRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4 dCI7IH0gfHwgY29udGludWUNCisJICAgY2FzZSBgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19l eHQiIC0tdmVyc2lvbiAyPiYxYCBpbiAjKA0KKwkgICAgICdta2RpciAoR05VIGNvcmV1dGlscykg JyogfCBcDQorCSAgICAgJ21rZGlyIChjb3JldXRpbHMpICcqIHwgXA0KKwkgICAgICdta2RpciAo ZmlsZXV0aWxzKSAnNC4xKikNCisJICAgICAgIGFjX2N2X3BhdGhfbWtkaXI9JGFzX2Rpci8kYWNf cHJvZyRhY19leGVjX2V4dA0KKwkgICAgICAgYnJlYWsgMzs7DQorCSAgIGVzYWMNCisJIGRvbmUN CisgICAgICAgZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KKw0KKyAg dGVzdCAtZCAuLy0tdmVyc2lvbiAmJiBybWRpciAuLy0tdmVyc2lvbg0KKyAgaWYgdGVzdCAiJHth Y19jdl9wYXRoX21rZGlyK3NldH0iID0gc2V0OyB0aGVuDQorICAgIE1LRElSX1A9IiRhY19jdl9w YXRoX21rZGlyIC1wIg0KKyAgZWxzZQ0KKyAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHVzZSB0aGUg c2xvdyBzaGVsbCBzY3JpcHQuICBEb24ndCBjYWNoZSBhDQorICAgICMgdmFsdWUgZm9yIE1LRElS X1Agd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwNCisgICAgIyBi cmVhayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBkaXJlY3RvcnkgaXMN CisgICAgIyByZW1vdmVkLCBvciBpZiB0aGUgdmFsdWUgaXMgYSByZWxhdGl2ZSBuYW1lLg0KKyAg ICBNS0RJUl9QPSIkYWNfaW5zdGFsbF9zaCAtZCINCisgIGZpDQorZmkNCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1LRElSX1AiID4mNQ0KKyRhc19l Y2hvICIkTUtESVJfUCIgPiY2OyB9DQorDQorbWtkaXJfcD0iJE1LRElSX1AiDQorY2FzZSAkbWtk aXJfcCBpbg0KKyAgW1xcLyRdKiB8ID86W1xcL10qKSA7Ow0KKyAgKi8qKSBta2Rpcl9wPSJcJCh0 b3BfYnVpbGRkaXIpLyRta2Rpcl9wIiA7Ow0KK2VzYWMNCisNCitmb3IgYWNfcHJvZyBpbiBnYXdr IG1hd2sgbmF3ayBhd2sNCitkbw0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNf cHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15 ICRhY19wcm9nOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5n IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmICR7YWNfY3ZfcHJvZ19BV0srOn0gZmFsc2U7 IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0 IC1uICIkQVdLIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BV0s9IiRBV0siICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZT DQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQg aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19BV0s9IiRhY19wcm9nIg0K KyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQor ICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitBV0s9JGFjX2N2X3Byb2df QVdLDQoraWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQVdLIiA+JjUNCiskYXNfZWNobyAiJEFXSyIgPiY2 OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorICB0ZXN0 IC1uICIkQVdLIiAmJiBicmVhaw0KK2RvbmUNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFL RSkiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMg XCQoTUFLRSkuLi4gIiA+JjY7IH0NCitzZXQgeCAke01BS0UtbWFrZX0NCithY19tYWtlPWAkYXNf ZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2ANCitpZiBldmFs IFwke2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCs6fSBmYWxzZTsgdGhlbiA6DQorICAk YXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGNhdCA+Y29uZnRlc3QubWFrZSA8 PFxfQUNFT0YNCitTSEVMTCA9IC9iaW4vc2gNCithbGw6DQorCUBlY2hvICdAQEAlJSU9JChNQUtF KT1AQEAlJSUnDQorX0FDRU9GDQorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFd OiBFbnRlcmluZyAuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLg0KK2Nhc2UgYCR7TUFLRS1t YWtlfSAtZiBjb25mdGVzdC5tYWtlIDI+L2Rldi9udWxsYCBpbg0KKyAgKkBAQCUlJT0/Kj1AQEAl JSUqKQ0KKyAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXM7Ow0KKyAg KikNCisgICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9bm87Ow0KK2VzYWMN CitybSAtZiBjb25mdGVzdC5tYWtlDQorZmkNCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX21h a2VfJHthY19tYWtlfV9zZXQgPSB5ZXM7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQ0KKyRhc19lY2hvICJ5ZXMiID4mNjsg fQ0KKyAgU0VUX01BS0U9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KKyAgU0VU X01BS0U9Ik1BS0U9JHtNQUtFLW1ha2V9Ig0KK2ZpDQorDQorcm0gLXJmIC50c3QgMj4vZGV2L251 bGwNCitta2RpciAudHN0IDI+L2Rldi9udWxsDQoraWYgdGVzdCAtZCAudHN0OyB0aGVuDQorICBh bV9fbGVhZGluZ19kb3Q9Lg0KK2Vsc2UNCisgIGFtX19sZWFkaW5nX2RvdD1fDQorZmkNCitybWRp ciAudHN0IDI+L2Rldi9udWxsDQorDQorREVQRElSPSIke2FtX19sZWFkaW5nX2RvdH1kZXBzIg0K Kw0KK2FjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBkZXBmaWxlcyINCisN CisNCithbV9tYWtlPSR7TUFLRS1tYWtlfQ0KK2NhdCA+IGNvbmZpbmMgPDwgJ0VORCcNCithbV9f ZG9pdDoNCisJQGVjaG8gdGhpcyBpcyB0aGUgYW1fX2RvaXQgdGFyZ2V0DQorLlBIT05ZOiBhbV9f ZG9pdA0KK0VORA0KKyMgSWYgd2UgZG9uJ3QgZmluZCBhbiBpbmNsdWRlIGRpcmVjdGl2ZSwganVz dCBjb21tZW50IG91dCB0aGUgY29kZS4NCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2Ui ID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkg JGFtX21ha2UuLi4gIiA+JjY7IH0NCithbV9faW5jbHVkZT0iIyINCithbV9fcXVvdGU9DQorX2Ft X3Jlc3VsdD1ub25lDQorIyBGaXJzdCB0cnkgR05VIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitlY2hv ICJpbmNsdWRlIGNvbmZpbmMiID4gY29uZm1mDQorIyBJZ25vcmUgYWxsIGtpbmRzIG9mIGFkZGl0 aW9uYWwgb3V0cHV0IGZyb20gYG1ha2UnLg0KK2Nhc2UgYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAy PiAvZGV2L251bGxgIGluICMoDQorKnRoZVwgYW1fX2RvaXRcIHRhcmdldCopDQorICBhbV9faW5j bHVkZT1pbmNsdWRlDQorICBhbV9fcXVvdGU9DQorICBfYW1fcmVzdWx0PUdOVQ0KKyAgOzsNCitl c2FjDQorIyBOb3cgdHJ5IEJTRCBtYWtlIHN0eWxlIGluY2x1ZGUuDQoraWYgdGVzdCAiJGFtX19p bmNsdWRlIiA9ICIjIjsgdGhlbg0KKyAgIGVjaG8gJy5pbmNsdWRlICJjb25maW5jIicgPiBjb25m bWYNCisgICBjYXNlIGAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCBpbiAjKA0K KyAgICp0aGVcIGFtX19kb2l0XCB0YXJnZXQqKQ0KKyAgICAgYW1fX2luY2x1ZGU9LmluY2x1ZGUN CisgICAgIGFtX19xdW90ZT0iXCIiDQorICAgICBfYW1fcmVzdWx0PUJTRA0KKyAgICAgOzsNCisg ICBlc2FjDQorZmkNCisNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJF9hbV9yZXN1bHQiID4mNQ0KKyRhc19lY2hvICIkX2FtX3Jlc3VsdCIgPiY2 OyB9DQorcm0gLWYgY29uZmluYyBjb25mbWYNCisNCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUt ZGVwZW5kZW5jeS10cmFja2luZyB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfZGVwZW5k ZW5jeV90cmFja2luZytzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9k ZXBlbmRlbmN5X3RyYWNraW5nOw0KK2ZpDQorDQoraWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5j eV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBj b21wIg0KKyAgQU1ERVBCQUNLU0xBU0g9J1wnDQorZmkNCisgaWYgdGVzdCAieCRlbmFibGVfZGVw ZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBBTURFUF9UUlVFPQ0KKyAgQU1ERVBf RkFMU0U9JyMnDQorZWxzZQ0KKyAgQU1ERVBfVFJVRT0nIycNCisgIEFNREVQX0ZBTFNFPQ0KK2Zp DQorDQorDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW11bHRpbGliIHdhcyBnaXZlbi4N CitpZiB0ZXN0ICIke2VuYWJsZV9tdWx0aWxpYitzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFi bGV2YWw9JGVuYWJsZV9tdWx0aWxpYjsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBt dWx0aWxpYj15ZXMgOzsNCisgIG5vKSAgbXVsdGlsaWI9bm8gOzsNCisgICopICAgYXNfZm5fZXJy b3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG11bHRpbGliIG9wdGlvbiIgIiRMSU5F Tk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIG11bHRpbGliPXllcw0KK2ZpDQorDQorIyBDaGVj ayB3aGV0aGVyIC0tZW5hYmxlLXRhcmdldC1vcHRzcGFjZSB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAi JHtlbmFibGVfdGFyZ2V0X29wdHNwYWNlK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZh bD0kZW5hYmxlX3RhcmdldF9vcHRzcGFjZTsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVz KSB0YXJnZXRfb3B0c3BhY2U9eWVzIDs7DQorICBubykgIHRhcmdldF9vcHRzcGFjZT1ubyA7Ow0K KyAgKikgICBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgdGFyZ2V0 LW9wdHNwYWNlIG9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIHRhcmdl dF9vcHRzcGFjZT0NCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWxsb2MtZGVi dWdnaW5nIHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9tYWxsb2NfZGVidWdnaW5nK3Nl dH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX21hbGxvY19kZWJ1Z2dpbmc7 IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgIHllcykgbWFsbG9jX2RlYnVnZ2luZz15ZXMgOzsN CisgIG5vKSAgbWFsbG9jX2RlYnVnZ2luZz1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAkPyAi YmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgbWFsbG9jLWRlYnVnZ2luZyBvcHRpb24iICIkTElO RU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBtYWxsb2NfZGVidWdnaW5nPQ0KK2ZpDQorDQor IyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1tdWx0aXRocmVhZCB3YXMgZ2l2ZW4uDQor aWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX211bHRpdGhyZWFkK3NldH0iID0gc2V0OyB0aGVuIDoN CisgIGVuYWJsZXZhbD0kZW5hYmxlX25ld2xpYl9tdWx0aXRocmVhZDsgY2FzZSAiJHtlbmFibGV2 YWx9IiBpbg0KKyAgeWVzKSBuZXdsaWJfbXVsdGl0aHJlYWQ9eWVzIDs7DQorICBubykgIG5ld2xp Yl9tdWx0aXRocmVhZD1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7 ZW5hYmxldmFsfSBmb3IgbmV3bGliLW11bHRpdGhyZWFkIG9wdGlvbiIgIiRMSU5FTk8iIDUgOzsN CisgZXNhYw0KK2Vsc2UNCisgIG5ld2xpYl9tdWx0aXRocmVhZD15ZXMNCitmaQ0KKw0KKyMgQ2hl Y2sgd2hldGhlciAtLWVuYWJsZS1uZXdsaWItaWNvbnYgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7 ZW5hYmxlX25ld2xpYl9pY29uditzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVu YWJsZV9uZXdsaWJfaWNvbnY7IGlmIHRlc3QgIiR7bmV3bGliX2ljb252K3NldH0iICE9IHNldDsg dGhlbg0KKyAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgICAgIHllcykgbmV3bGliX2ljb252 PXllcyA7Ow0KKyAgICAgbm8pICBuZXdsaWJfaWNvbnY9bm8gOzsNCisgICAgICopICAgYXNfZm5f ZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG5ld2xpYi1pY29udiBvcHRpb24i ICIkTElORU5PIiA1IDs7DQorICAgZXNhYw0KKyBmaQ0KK2Vsc2UNCisgIG5ld2xpYl9pY29udj0k e25ld2xpYl9pY29udn0NCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXdsaWIt ZWxpeC1sZXZlbCB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX2VsaXhfbGV2 ZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX2VsaXhf bGV2ZWw7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgIDApICAgbmV3bGliX2VsaXhfbGV2ZWw9 MCA7Ow0KKyAgMSkgICBuZXdsaWJfZWxpeF9sZXZlbD0xIDs7DQorICAyKSAgIG5ld2xpYl9lbGl4 X2xldmVsPTIgOzsNCisgIDMpICAgbmV3bGliX2VsaXhfbGV2ZWw9MyA7Ow0KKyAgNCkgICBuZXds aWJfZWxpeF9sZXZlbD00IDs7DQorICAqKSAgIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtl bmFibGV2YWx9IGZvciBuZXdsaWItZWxpeC1sZXZlbCBvcHRpb24iICIkTElORU5PIiA1IDs7DQor IGVzYWMNCitlbHNlDQorICBuZXdsaWJfZWxpeF9sZXZlbD0wDQorZmkNCisNCisjIENoZWNrIHdo ZXRoZXIgLS1lbmFibGUtbmV3bGliLWlvLWZsb2F0IHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2Vu YWJsZV9uZXdsaWJfaW9fZmxvYXQrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRl bmFibGVfbmV3bGliX2lvX2Zsb2F0OyBjYXNlICIke2VuYWJsZXZhbH0iIGluDQorICB5ZXMpIG5l d2xpYl9pb19mbG9hdD15ZXMgOzsNCisgIG5vKSAgbmV3bGliX2lvX2Zsb2F0PW5vIDs7DQorICAq KSAgIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBuZXdsaWItaW8t ZmxvYXQgb3B0aW9uIiAiJExJTkVOTyIgNSA7Ow0KKyBlc2FjDQorZWxzZQ0KKyAgbmV3bGliX2lv X2Zsb2F0PXllcw0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1zdXBw bGllZC1zeXNjYWxscyB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX3N1cHBs aWVkX3N5c2NhbGxzK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX25l d2xpYl9zdXBwbGllZF9zeXNjYWxsczsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBu ZXdsaWJfbWF5X3N1cHBseV9zeXNjYWxscz15ZXMgOzsNCisgIG5vKSAgbmV3bGliX21heV9zdXBw bHlfc3lzY2FsbHM9bm8gOzsNCisgICopICAgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2Vu YWJsZXZhbH0gZm9yIG5ld2xpYi1zdXBwbGllZC1zeXNjYWxscyBvcHRpb24iICIkTElORU5PIiA1 IDs7DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfbWF5X3N1cHBseV9zeXNjYWxscz15ZXMNCitm aQ0KKw0KKyBpZiB0ZXN0IHgke25ld2xpYl9tYXlfc3VwcGx5X3N5c2NhbGxzfSA9IHh5ZXM7IHRo ZW4NCisgIE1BWV9TVVBQTFlfU1lTQ0FMTFNfVFJVRT0NCisgIE1BWV9TVVBQTFlfU1lTQ0FMTFNf RkFMU0U9JyMnDQorZWxzZQ0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFPScjJw0KKyAgTUFZ X1NVUFBMWV9TWVNDQUxMU19GQUxTRT0NCitmaQ0KKw0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1uZXdsaWItZm5vLWJ1aWx0aW4gd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX25l d2xpYl9mbm9fYnVpbHRpbitzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJs ZV9uZXdsaWJfZm5vX2J1aWx0aW47IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgIHllcykgbmV3 bGliX2Zub19idWlsdGluPXllcyA7Ow0KKyAgbm8pICBuZXdsaWJfZm5vX2J1aWx0aW49bm8gOzsN CisgICopICAgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG5ld2xp Yi1mbm8tYnVpbHRpbiBvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBu ZXdsaWJfZm5vX2J1aWx0aW49DQorZmkNCisNCisNCisNCit0ZXN0IC16ICIke3dpdGhfdGFyZ2V0 X3N1YmRpcn0iICYmIHdpdGhfdGFyZ2V0X3N1YmRpcj0uDQorDQoraWYgdGVzdCAiJHtzcmNkaXJ9 IiA9ICIuIjsgdGhlbg0KKyAgaWYgdGVzdCAiJHt3aXRoX3RhcmdldF9zdWJkaXJ9IiAhPSAiLiI7 IHRoZW4NCisgICAgbmV3bGliX2Jhc2VkaXI9IiR7c3JjZGlyfS8ke3dpdGhfbXVsdGlzcmN0b3B9 Li4vLi4vLi4vLi4iDQorICBlbHNlDQorICAgIG5ld2xpYl9iYXNlZGlyPSIke3NyY2Rpcn0vJHt3 aXRoX211bHRpc3JjdG9wfS4uLy4uLy4uIg0KKyAgZmkNCitlbHNlDQorICBuZXdsaWJfYmFzZWRp cj0iJHtzcmNkaXJ9Ly4uLy4uLy4uIg0KK2ZpDQorDQorDQorDQorDQoraWYgdGVzdCAiYGNkICRz cmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIjsgdGhlbg0KKyAgIyBVc2UgLUkkKHNyY2Rpcikgb25s eSB3aGVuICQoc3JjZGlyKSAhPSAuLCBzbyB0aGF0IG1ha2UncyBvdXRwdXQNCisgICMgaXMgbm90 IHBvbGx1dGVkIHdpdGggcmVwZWF0ZWQgIi1JLiINCisgIGFtX19pc3JjPScgLUkkKHNyY2Rpcikn DQorICAjIHRlc3QgdG8gc2VlIGlmIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQNCisgIGlmIHRl c3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuDQorICAgIGFzX2ZuX2Vycm9yICQ/ICJz b3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuIFwibWFrZSBkaXN0Y2xlYW5c IiB0aGVyZSBmaXJzdCIgIiRMSU5FTk8iIDUNCisgIGZpDQorZmkNCisNCisjIHRlc3Qgd2hldGhl ciB3ZSBoYXZlIGN5Z3BhdGgNCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbg0KKyAgaWYg KGN5Z3BhdGggLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIENZ R1BBVEhfVz0nY3lncGF0aCAtdycNCisgIGVsc2UNCisgICAgQ1lHUEFUSF9XPWVjaG8NCisgIGZp DQorZmkNCisNCisNCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuDQorIFBB Q0tBR0U9J25ld2xpYicNCisgVkVSU0lPTj0nNC4xLjAnDQorDQorDQorIyBTb21lIHRvb2xzIEF1 dG9tYWtlIG5lZWRzLg0KKw0KK0FDTE9DQUw9JHtBQ0xPQ0FMLSIke2FtX21pc3NpbmdfcnVufWFj bG9jYWwtJHthbV9fYXBpX3ZlcnNpb259In0NCisNCisNCitBVVRPQ09ORj0ke0FVVE9DT05GLSIk e2FtX21pc3NpbmdfcnVufWF1dG9jb25mIn0NCisNCisNCitBVVRPTUFLRT0ke0FVVE9NQUtFLSIk e2FtX21pc3NpbmdfcnVufWF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSJ9DQorDQorDQorQVVU T0hFQURFUj0ke0FVVE9IRUFERVItIiR7YW1fbWlzc2luZ19ydW59YXV0b2hlYWRlciJ9DQorDQor DQorTUFLRUlORk89JHtNQUtFSU5GTy0iJHthbV9taXNzaW5nX3J1bn1tYWtlaW5mbyJ9DQorDQor IyBXZSBuZWVkIGF3ayBmb3IgdGhlICJjaGVjayIgdGFyZ2V0LiAgVGhlIHN5c3RlbSAiYXdrIiBp cyBiYWQgb24NCisjIHNvbWUgcGxhdGZvcm1zLg0KKyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3Ig YmFja3dhcmQgY29tcGF0aWJpbGl0eS4NCisNCitBTVRBUj0ke0FNVEFSLSIke2FtX21pc3Npbmdf cnVufXRhciJ9DQorDQorYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtICIkJHRhcmRpciInOyBhbV9f dW50YXI9JyR7QU1UQVJ9IHhmIC0nDQorDQorDQorDQorDQorDQorDQorIyBGSVhNRTogV2UgdGVt cG9yYXJpbHkgZGVmaW5lIG91ciBvd24gdmVyc2lvbiBvZiBBQ19QUk9HX0NDLiAgVGhpcyBpcw0K KyMgY29waWVkIGZyb20gYXV0b2NvbmYgMi4xMiwgYnV0IGRvZXMgbm90IGNhbGwgQUNfUFJPR19D Q19XT1JLUy4gIFdlDQorIyBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBjb21waWxlciwgd2hp Y2ggd2lsbCBub3QgYmUgYWJsZSB0byBmdWxseQ0KKyMgbGluayBhbiBleGVjdXRhYmxlLiAgVGhp cyBzaG91bGQgcmVhbGx5IGJlIGZpeGVkIGluIGF1dG9jb25mDQorIyBpdHNlbGYuDQorDQorDQor DQorDQorDQorDQorDQorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBj YW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSBnY2M7IGFjX3dvcmQ9 JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg PiY2OyB9DQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KKyAg YWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitl bHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIg aW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIg JiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4 dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVu DQorICAgIGFjX2N2X3Byb2dfQ0M9ImdjYyINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQor ICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisN CitmaQ0KK2ZpDQorQ0M9JGFjX2N2X3Byb2dfQ0MNCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQor ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+ JjUNCiskYXNfZWNobyAiJENDIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2 OyB9DQorZmkNCisNCisNCisNCitkZXBjYz0iJENDIiAgIGFtX2NvbXBpbGVyX2xpc3Q9DQorDQor eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkZXBlbmRl bmN5IHN0eWxlIG9mICRkZXBjYyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5j eSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0NCitpZiAke2FtX2N2X0NDX2RlcGVuZGVuY2ll c19jb21waWxlcl90eXBlKzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRh bV9kZXBjb21wIjsgdGhlbg0KKyAgIyBXZSBtYWtlIGEgc3ViZGlyIGFuZCBkbyB0aGUgdGVzdHMg dGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1cA0KKyAgIyBtYWtpbmcgYm9ndXMgZmlsZXMg dGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBuZXZlciByZW1vdmUuICBGb3INCisgICMgaW5z dGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5k IHVwDQorICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcg bWVhbnMgYHB1dCB0aGUgb3V0cHV0DQorICAjIGluIEQnLg0KKyAgbWtkaXIgY29uZnRlc3QuZGly DQorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3Qg ZmluZCBpdCBpZiB3ZSdyZQ0KKyAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4NCisgIGNw ICIkYW1fZGVwY29tcCIgY29uZnRlc3QuZGlyDQorICBjZCBjb25mdGVzdC5kaXINCisgICMgV2Ug d2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVj YXVzZQ0KKyAgIyBpdCBoZWxwcyB0byBkZXRlY3QgaW5hcHBsaWNhYmxlIGRlcGVuZGVuY3kgbW9k ZXMuICBGb3IgaW5zdGFuY2UNCisgICMgYm90aCBUcnU2NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAt TUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhDQorICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBp bGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBlbmRlbmNpZXMgaW4NCisgICMgdGhlIGN1 cnJlbnQgZGlyZWN0b3J5IHdoaWxlIFRydTY0IHdpbGwgcHV0IHRoZW0gaW4gdGhlIG9iamVjdA0K KyAgIyBkaXJlY3RvcnkuDQorICBta2RpciBzdWINCisNCisgIGFtX2N2X0NDX2RlcGVuZGVuY2ll c19jb21waWxlcl90eXBlPW5vbmUNCisgIGlmIHRlc3QgIiRhbV9jb21waWxlcl9saXN0IiA9ICIi OyB0aGVuDQorICAgICBhbV9jb21waWxlcl9saXN0PWBzZWQgLW4gJ3MvXiMqXChbYS16QS1aMC05 XSpcKSkkL1wxL3AnIDwgLi9kZXBjb21wYA0KKyAgZmkNCisgIGFtX191bml2ZXJzYWw9ZmFsc2UN CisgIGNhc2UgIiAkZGVwY2MgIiBpbiAjKA0KKyAgICAgKlwgLWFyY2hcICpcIC1hcmNoXCAqKSBh bV9fdW5pdmVyc2FsPXRydWUgOzsNCisgICAgIGVzYWMNCisNCisgIGZvciBkZXBtb2RlIGluICRh bV9jb21waWxlcl9saXN0OyBkbw0KKyAgICAjIFNldHVwIGEgc291cmNlIHdpdGggbWFueSBkZXBl bmRlbmNpZXMsIGJlY2F1c2Ugc29tZSBjb21waWxlcnMNCisgICAgIyBsaWtlIHRvIHdyYXAgbGFy Z2UgZGVwZW5kZW5jeSBsaXN0cyBvbiBjb2x1bW4gODAgKHdpdGggXCksIGFuZA0KKyAgICAjIHdl IHNob3VsZCBub3QgY2hvb3NlIGEgZGVwY29tcCBtb2RlIHdoaWNoIGlzIGNvbmZ1c2VkIGJ5IHRo aXMuDQorICAgICMNCisgICAgIyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRoZXNlIGZpbGVzIGZvciBl YWNoIHRlc3QsIGFzIHRoZSBjb21waWxlciBtYXkNCisgICAgIyBvdmVyd3JpdGUgc29tZSBvZiB0 aGVtIHdoZW4gdGVzdGluZyB3aXRoIG9ic2N1cmUgY29tbWFuZCBsaW5lcy4NCisgICAgIyBUaGlz IGhhcHBlbnMgYXQgbGVhc3Qgd2l0aCB0aGUgQUlYIEMgY29tcGlsZXIuDQorICAgIDogPiBzdWIv Y29uZnRlc3QuYw0KKyAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNjsgZG8NCisgICAgICBlY2hvICcj aW5jbHVkZSAiY29uZnRzdCckaScuaCInID4+IHN1Yi9jb25mdGVzdC5jDQorICAgICAgIyBVc2lu ZyBgOiA+IHN1Yi9jb25mdHN0JGkuaCcgY3JlYXRlcyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdpdGgN CisgICAgICAjIFNvbGFyaXMgOCdzIHsvdXNyLH0vYmluL3NoLg0KKyAgICAgIHRvdWNoIHN1Yi9j b25mdHN0JGkuaA0KKyAgICBkb25lDQorICAgIGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1 b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1b3RlfSIgPiBjb25mbWYNCisNCisgICAgIyBXZSBj aGVjayB3aXRoIGAtYycgYW5kIGAtbycgZm9yIHRoZSBzYWtlIG9mIHRoZSAiZGFzaG1zdGRvdXQi DQorICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBTdW5Qcm8gQysrIGNvbXBpbGVy IGRvZXMgbm90IHByb3Blcmx5DQorICAgICMgaGFuZGxlIGAtTSAtbycsIGFuZCB3ZSBuZWVkIHRv IGRldGVjdCB0aGlzLiAgQWxzbywgc29tZSBJbnRlbA0KKyAgICAjIHZlcnNpb25zIGhhZCB0cm91 YmxlIHdpdGggb3V0cHV0IGluIHN1YmRpcnMNCisgICAgYW1fX29iaj1zdWIvY29uZnRlc3QuJHtP QkpFWFQtb30NCisgICAgYW1fX21pbnVzX29iaj0iLW8gJGFtX19vYmoiDQorICAgIGNhc2UgJGRl cG1vZGUgaW4NCisgICAgZ2NjKQ0KKyAgICAgICMgVGhpcyBkZXBtb2RlIGNhdXNlcyBhIGNvbXBp bGVyIHJhY2UgaW4gdW5pdmVyc2FsIG1vZGUuDQorICAgICAgdGVzdCAiJGFtX191bml2ZXJzYWwi ID0gZmFsc2UgfHwgY29udGludWUNCisgICAgICA7Ow0KKyAgICBub3NpZGVlZmZlY3QpDQorICAg ICAgIyBhZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5IHNpZGUtZWZmZWN0LCBz byB0aGV5J2xsDQorICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3Rl ZA0KKyAgICAgIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciID0geHllczsg dGhlbg0KKwljb250aW51ZQ0KKyAgICAgIGVsc2UNCisJYnJlYWsNCisgICAgICBmaQ0KKyAgICAg IDs7DQorICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpDQorICAgICAgIyBUaGlzIGNvbXBpbGVy IHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMNCisgICAg ICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBn YW1lLCBhbmQNCisgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQg bm90IGJlIGltcGFjdGVkLg0KKyAgICAgIGFtX19vYmo9Y29uZnRlc3QuJHtPQkpFWFQtb30NCisg ICAgICBhbV9fbWludXNfb2JqPQ0KKyAgICAgIDs7DQorICAgIG5vbmUpIGJyZWFrIDs7DQorICAg IGVzYWMNCisgICAgaWYgZGVwbW9kZT0kZGVwbW9kZSBcDQorICAgICAgIHNvdXJjZT1zdWIvY29u ZnRlc3QuYyBvYmplY3Q9JGFtX19vYmogXA0KKyAgICAgICBkZXBmaWxlPXN1Yi9jb25mdGVzdC5Q byB0bXBkZXBmaWxlPXN1Yi9jb25mdGVzdC5UUG8gXA0KKyAgICAgICAkU0hFTEwgLi9kZXBjb21w ICRkZXBjYyAtYyAkYW1fX21pbnVzX29iaiBzdWIvY29uZnRlc3QuYyBcDQorICAgICAgICAgPi9k ZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJg0KKyAgICAgICBncmVwIHN1Yi9jb25mdHN0MS5oIHN1 Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQorICAgICAgIGdyZXAgc3ViL2NvbmZ0 c3Q2Lmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYNCisgICAgICAgZ3JlcCAk YW1fX29iaiBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJg0KKyAgICAgICAke01B S0UtbWFrZX0gLXMgLWYgY29uZm1mID4gL2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgICAjIGlj YyBkb2Vzbid0IGNob2tlIG9uIHVua25vd24gb3B0aW9ucywgaXQgd2lsbCBqdXN0IGlzc3VlIHdh cm5pbmdzDQorICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBn cmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UNCisgICAgICAjIHRoYXQgc2F5cyBhbiBvcHRpb24g d2FzIGlnbm9yZWQgb3Igbm90IHN1cHBvcnRlZC4NCisgICAgICAjIFdoZW4gZ2l2ZW4gLU1QLCBp Y2MgNy4wIGFuZCA3LjEgY29tcGxhaW4gdGh1c2x5Og0KKyAgICAgICMgICBpY2M6IENvbW1hbmQg bGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQN CisgICAgICAjIFRoZSBkaWFnbm9zaXMgY2hhbmdlZCBpbiBpY2MgOC4wOg0KKyAgICAgICMgICBp Y2M6IENvbW1hbmQgbGluZSByZW1hcms6IG9wdGlvbiAnLU1QJyBub3Qgc3VwcG9ydGVkDQorICAg ICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8DQorICAgICAgICAg IGdyZXAgJ25vdCBzdXBwb3J0ZWQnIGNvbmZ0ZXN0LmVycikgPi9kZXYvbnVsbCAyPiYxOyB0aGVu IDo7IGVsc2UNCisgICAgICAgIGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPSRk ZXBtb2RlDQorICAgICAgICBicmVhaw0KKyAgICAgIGZpDQorICAgIGZpDQorICBkb25lDQorDQor ICBjZCAuLg0KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KK2Vsc2UNCisgIGFtX2N2X0NDX2RlcGVu ZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUNCitmaQ0KKw0KK2ZpDQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhbV9jdl9DQ19kZXBlbmRlbmNpZXNf Y29tcGlsZXJfdHlwZSIgPiY1DQorJGFzX2VjaG8gIiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29t cGlsZXJfdHlwZSIgPiY2OyB9DQorQ0NERVBNT0RFPWRlcG1vZGU9JGFtX2N2X0NDX2RlcGVuZGVu Y2llc19jb21waWxlcl90eXBlDQorDQorIGlmDQorICB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5 X3RyYWNraW5nIiAhPSB4bm8gXA0KKyAgJiYgdGVzdCAiJGFtX2N2X0NDX2RlcGVuZGVuY2llc19j b21waWxlcl90eXBlIiA9IGdjYzM7IHRoZW4NCisgIGFtX19mYXN0ZGVwQ0NfVFJVRT0NCisgIGFt X19mYXN0ZGVwQ0NfRkFMU0U9JyMnDQorZWxzZQ0KKyAgYW1fX2Zhc3RkZXBDQ19UUlVFPScjJw0K KyAgYW1fX2Zhc3RkZXBDQ19GQUxTRT0NCitmaQ0KKw0KKw0KK2lmIHRlc3QgLXogIiRDQyI7IHRo ZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBw cm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSBjYzsgYWNfd29yZD0kMg0KK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk IiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitp ZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICBhY19jdl9wcm9n X0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCisgIGFj X3Byb2dfcmVqZWN0ZWQ9bm8NCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S DQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0 IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IH07IHRoZW4NCisgICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVuDQorICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzDQor ICAgICAgIGNvbnRpbnVlDQorICAgICBmaQ0KKyAgICBhY19jdl9wcm9nX0NDPSJjYyINCisgICAg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9u ZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitpZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVz OyB0aGVuDQorICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBhdGgsIHNvIG1ha2Ugc3VyZSB3 ZSBuZXZlciB1c2UgaXQuDQorICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MNCisgIHNoaWZ0DQor ICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4NCisgICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21w aWxlciBmcm9tIHRoZSBib2d1cyBvbmUuDQorICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBzYW1l IGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4NCisgICAgIyBmaXJzdCBpZiB3 ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVsbCBmaWxlIG5hbWUuDQor ICAgIHNoaWZ0DQorICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dvcmQkezErJyAnfSRA Ig0KKyAgZmkNCitmaQ0KK2ZpDQorZmkNCitDQz0kYWNfY3ZfcHJvZ19DQw0KK2lmIHRlc3QgLW4g IiRDQyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkQ0MiID4mNQ0KKyRhc19lY2hvICIkQ0MiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFz X2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KKyAgdGVzdCAteiAiJENDIiAmJiBhc19mbl9l cnJvciAkPyAibm8gYWNjZXB0YWJsZSBjYyBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1DQor ZmkNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3 aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQy4uLiAiID4mNjsgfQ0KK2lmICR7YWNfY3ZfY19jb21w aWxlcl9nbnUrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYN CitlbHNlDQorICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GDQorI2lmZGVmIF9fR05VQ19fDQorICB5 ZXM7DQorI2VuZGlmDQorRU9GDQoraWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMn DQorICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIk YWNfdHJ5XCIiOyB9ID4mNQ0KKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQ0KKyAgYWNfc3RhdHVzPSQ/ DQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUNCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYv bnVsbCAyPiYxOyB0aGVuDQorICBhY19jdl9jX2NvbXBpbGVyX2dudT15ZXMNCitlbHNlDQorICBh Y19jdl9jX2NvbXBpbGVyX2dudT1ubw0KK2ZpDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUNCisk YXNfZWNobyAiJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjY7IH0NCisNCitpZiB0ZXN0ICRhY19j dl9jX2NvbXBpbGVyX2dudSA9IHllczsgdGhlbg0KKyAgR0NDPXllcw0KKyAgYWNfdGVzdF9DRkxB R1M9IiR7Q0ZMQUdTK3NldH0iDQorICBhY19zYXZlX0NGTEFHUz0iJENGTEFHUyINCisgIGFjX3Rl c3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0NCithY19zYXZlX0NGTEFHUz0kQ0ZMQUdTDQoreyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBh Y2NlcHRzIC1nIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRz IC1nLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOg0K KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBhY19zYXZlX2Nfd2Vycm9y X2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcNCisgICBhY19jX3dlcnJvcl9mbGFnPXllcw0KKyAgIGFj X2N2X3Byb2dfY2NfZz1ubw0KKyAgIENGTEFHUz0iLWciDQorICAgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8NCisNCitp bnQNCittYWluICgpDQorew0KKw0KKyAgOw0KKyAgcmV0dXJuIDA7DQorfQ0KK19BQ0VPRg0KK2lm IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoNCisgIGFjX2N2X3Byb2dfY2Nf Zz15ZXMNCitlbHNlDQorICBDRkxBR1M9IiINCisgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0DQorLyogZW5kIGNvbmZkZWZzLmguICAqLw0KKw0KK2ludA0K K21haW4gKCkNCit7DQorDQorICA7DQorICByZXR1cm4gMDsNCit9DQorX0FDRU9GDQoraWYgYWNf Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOg0KKw0KK2Vsc2UNCisgIGFjX2Nfd2Vy cm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZw0KKwkgQ0ZMQUdTPSItZyINCisJIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQNCisvKiBlbmQgY29uZmRlZnMu aC4gICovDQorDQoraW50DQorbWFpbiAoKQ0KK3sNCisNCisgIDsNCisgIHJldHVybiAwOw0KK30N CitfQUNFT0YNCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6DQorICBh Y19jdl9wcm9nX2NjX2c9eWVzDQorZmkNCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQNCitmaQ0KK3JtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dA0KK2ZpDQorcm0gLWYgY29y ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0DQorICAg YWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnDQorZmkNCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfZyIg PiY1DQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2ciID4mNjsgfQ0KK2lmIHRlc3QgIiRhY190 ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4NCisgIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MNCitlbGlm IHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbg0KKyAgaWYgdGVzdCAiJEdDQyIgPSB5 ZXM7IHRoZW4NCisgICAgQ0ZMQUdTPSItZyAtTzIiDQorICBlbHNlDQorICAgIENGTEFHUz0iLWci DQorICBmaQ0KK2Vsc2UNCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuDQorICAgIENGTEFH Uz0iLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9DQorICBmaQ0KK2ZpDQorICBpZiB0ZXN0ICIk YWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQorICAgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdT Ig0KKyAgZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4NCisgICAgQ0ZMQUdT PSItZyAtTzIiDQorICBlbHNlDQorICAgIENGTEFHUz0iLU8yIg0KKyAgZmkNCitlbHNlDQorICBH Q0M9DQorICB0ZXN0ICIke0NGTEFHUytzZXR9IiA9IHNldCB8fCBDRkxBR1M9Ii1nIg0KK2ZpDQor DQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFzIiwgc28gaXQgY2FuIGJlIGEgcHJv Z3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hczsgYWNf d29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0NCitpZiAke2FjX2N2X3Byb2dfQVMrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkQVMiOyB0aGVu DQorICBhY19jdl9wcm9nX0FTPSIkQVMiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0 Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFz X2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi bGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07 IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19BUz0iJHthY190b29sX3ByZWZpeH1hcyINCisgICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0K K0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorQVM9JGFjX2N2X3Byb2dfQVMNCitpZiB0 ZXN0IC1uICIkQVMiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJEFTIiA+JjUNCiskYXNfZWNobyAiJEFTIiA+JjY7IH0NCitlbHNlDQor ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m NQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitmaQ0KK2lmIHRlc3QgLXogIiRh Y19jdl9wcm9nX0FTIjsgdGhlbg0KKyAgYWNfY3RfQVM9JEFTDQorICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgImFzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4N CitzZXQgZHVtbXkgYXM7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FT Kzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0K KyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FTIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9BUz0i JGFjX2N0X0FTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNf c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgN Citkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh c190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFj X2N2X3Byb2dfYWNfY3RfQVM9ImFzIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAg YnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2Zp DQorZmkNCithY19jdF9BUz0kYWNfY3ZfcHJvZ19hY19jdF9BUw0KK2lmIHRlc3QgLW4gIiRhY19j dF9BUyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3RfQVMiID4mNQ0KKyRhc19lY2hvICIkYWNfY3RfQVMiID4mNjsgfQ0KK2Vs c2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu byIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19j dF9BUyIgPSB4OyB0aGVuDQorICAgIEFTPSIiDQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2Nv bXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZp eGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1 c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9DQor YWNfdG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBBUz0kYWNfY3RfQVMNCisgIGZpDQor ZWxzZQ0KKyAgQVM9IiRhY19jdl9wcm9nX0FTIg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rv b2xfcHJlZml4IjsgdGhlbg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rv b2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitz ZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCisk YXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiAke2FjX2N2 X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYN CitlbHNlDQorICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuDQorICBhY19jdl9wcm9nX0FSPSIkQVIi ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0k SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJ RlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlm IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19B Uj0iJHthY190b29sX3ByZWZpeH1hciINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAg IGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitm aQ0KK2ZpDQorQVI9JGFjX2N2X3Byb2dfQVINCitpZiB0ZXN0IC1uICIkQVIiOyB0aGVuDQorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFSIiA+JjUN CiskYXNfZWNobyAiJEFSIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9 DQorZmkNCisNCisNCitmaQ0KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbg0KKyAg YWNfY3RfQVI9JEFSDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQg Y2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgYXI7IGFjX3dvcmQ9 JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg PiY2OyB9DQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoNCisgICRh c19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FS IjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lG Uw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIg0K KyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQor ICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9BUj0kYWNfY3Zf cHJvZ19hY19jdF9BUg0KK2lmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4NCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQ0K KyRhc19lY2hvICIkYWNfY3RfQVIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+ JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuDQorICAgIEFS PSIiDQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQg aW4NCit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FS TklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+ JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7DQor ZXNhYw0KKyAgICBBUj0kYWNfY3RfQVINCisgIGZpDQorZWxzZQ0KKyAgQVI9IiRhY19jdl9wcm9n X0FSIg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBF eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0 IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9w cmVmaXh9cmFubGliOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmICR7YWNfY3ZfcHJvZ19SQU5MSUIrOn0g ZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBp ZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIi ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0k SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJ RlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlm IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19S QU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+ JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lG Uw0KKw0KK2ZpDQorZmkNCitSQU5MSUI9JGFjX2N2X3Byb2dfUkFOTElCDQoraWYgdGVzdCAtbiAi JFJBTkxJQiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkUkFOTElCIiA+JjUNCiskYXNfZWNobyAiJFJBTkxJQiIgPiY2OyB9DQorZWxz ZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v IiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorZmkNCitpZiB0ZXN0IC16 ICIkYWNfY3ZfcHJvZ19SQU5MSUIiOyB0aGVuDQorICBhY19jdF9SQU5MSUI9JFJBTkxJQg0KKyAg IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9n cmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDINCit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y ZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQor aWYgJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6DQorICAkYXNfZWNo b19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIi OyB0aGVuDQorICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQg dGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNf c2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0 IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X1JB TkxJQj0icmFubGliIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0K KyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCith Y19jdF9SQU5MSUI9JGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCDQoraWYgdGVzdCAtbiAiJGFjX2N0 X1JBTkxJQiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYWNfY3RfUkFOTElCIiA+JjUNCiskYXNfZWNobyAiJGFjX2N0X1JBTkxJQiIg PiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorICBpZiB0 ZXN0ICJ4JGFjX2N0X1JBTkxJQiIgPSB4OyB0aGVuDQorICAgIFJBTkxJQj0iOiINCisgIGVsc2UN CisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbg0KK3llczopDQor eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBj cm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQ0KKyRhc19lY2hv ICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv c3QgdHJpcGxldCIgPiYyO30NCithY190b29sX3dhcm5lZD15ZXMgOzsNCitlc2FjDQorICAgIFJB TkxJQj0kYWNfY3RfUkFOTElCDQorICBmaQ0KK2Vsc2UNCisgIFJBTkxJQj0iJGFjX2N2X3Byb2df UkFOTElCIg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAg IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJlYWRlbGYiLCBz byBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSAke2FjX3Rv b2xfcHJlZml4fXJlYWRlbGY7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX1JFQURF TEYrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNl DQorICBpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfUkVBREVMRj0i JFJFQURFTEYiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19z YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0K K2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg ZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNf Y3ZfcHJvZ19SRUFERUxGPSIke2FjX3Rvb2xfcHJlZml4fXJlYWRlbGYiDQorICAgICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9 JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK1JFQURFTEY9JGFjX2N2X3Byb2dfUkVBREVMRg0K K2lmIHRlc3QgLW4gIiRSRUFERUxGIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFERUxGIiA+JjUNCiskYXNfZWNobyAiJFJFQURF TEYiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0K K2ZpDQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkVBREVMRiI7IHRoZW4NCisgIGFjX2N0X1JF QURFTEY9JFJFQURFTEYNCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmVhZGVsZiIs IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15IHJlYWRl bGY7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRh Y193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JFQURFTEYrOn0gZmFs c2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0 ZXN0IC1uICIkYWNfY3RfUkVBREVMRiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfYWNfY3RfUkVBREVM Rj0iJGFjX2N0X1JFQURFTEYiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vs c2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBp biAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAm JiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4N CisgICAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSJyZWFkZWxmIg0KKyAgICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRh c19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9SRUFERUxGPSRhY19jdl9wcm9nX2FjX2N0 X1JFQURFTEYNCitpZiB0ZXN0IC1uICIkYWNfY3RfUkVBREVMRiI7IHRoZW4NCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkVBREVMRiIg PiY1DQorJGFzX2VjaG8gIiRhY19jdF9SRUFERUxGIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19l Y2hvICJubyIgPiY2OyB9DQorZmkNCisNCisgIGlmIHRlc3QgIngkYWNfY3RfUkVBREVMRiIgPSB4 OyB0aGVuDQorICAgIFJFQURFTEY9IjoiDQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBp bGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk IHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2lu ZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9DQorYWNf dG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBSRUFERUxGPSRhY19jdF9SRUFERUxGDQor ICBmaQ0KK2Vsc2UNCisgIFJFQURFTEY9IiRhY19jdl9wcm9nX1JFQURFTEYiDQorZmkNCisNCisN CisNCisNCisjIEhhY2sgdG8gZW5zdXJlIHRoYXQgSU5TVEFMTCB3b24ndCBiZSBzZXQgdG8gIi4u LyIgd2l0aCBhdXRvY29uZiAyLjEzLiAgKi8NCithY19naXZlbl9JTlNUQUxMPSRJTlNUQUxMDQor DQorDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3 aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxl cyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5l ci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMuLi4gIiA+JjY7IH0NCisgICAgIyBDaGVj ayB3aGV0aGVyIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAi JHtlbmFibGVfbWFpbnRhaW5lcl9tb2RlK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZh bD0kZW5hYmxlX21haW50YWluZXJfbW9kZTsgVVNFX01BSU5UQUlORVJfTU9ERT0kZW5hYmxldmFs DQorZWxzZQ0KKyAgVVNFX01BSU5UQUlORVJfTU9ERT1ubw0KK2ZpDQorDQorICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFVTRV9NQUlOVEFJTkVSX01P REUiID4mNQ0KKyRhc19lY2hvICIkVVNFX01BSU5UQUlORVJfTU9ERSIgPiY2OyB9DQorICAgaWYg dGVzdCAkVVNFX01BSU5UQUlORVJfTU9ERSA9IHllczsgdGhlbg0KKyAgTUFJTlRBSU5FUl9NT0RF X1RSVUU9DQorICBNQUlOVEFJTkVSX01PREVfRkFMU0U9JyMnDQorZWxzZQ0KKyAgTUFJTlRBSU5F Ul9NT0RFX1RSVUU9JyMnDQorICBNQUlOVEFJTkVSX01PREVfRkFMU0U9DQorZmkNCisNCisgIE1B SU5UPSRNQUlOVEFJTkVSX01PREVfVFJVRQ0KKw0KKw0KKyMgQnkgZGVmYXVsdCB3ZSBzaW1wbHkg dXNlIHRoZSBDIGNvbXBpbGVyIHRvIGJ1aWxkIGFzc2VtYmx5IGNvZGUuDQorDQordGVzdCAiJHtD Q0FTK3NldH0iID0gc2V0IHx8IENDQVM9JENDDQordGVzdCAiJHtDQ0FTRkxBR1Mrc2V0fSIgPSBz ZXQgfHwgQ0NBU0ZMQUdTPSRDRkxBR1MNCisNCisNCisNCisNCisjIFdlIG5lZWQgQUNfRVhFRVhU IHRvIGtlZXAgYXV0b21ha2UgaGFwcHkgaW4gY3lnbnVzIG1vZGUuICBIb3dldmVyLA0KKyMgYXQg bGVhc3QgY3VycmVudGx5LCB3ZSBuZXZlciBhY3R1YWxseSBidWlsZCBhIHByb2dyYW0sIHNvIHdl IG5ldmVyDQorIyBuZWVkIHRvIHVzZSAkKEVYRUVYVCkuICBNb3Jlb3ZlciwgdGhlIHRlc3QgZm9y IEVYRUVYVCBub3JtYWxseQ0KKyMgZmFpbHMsIGJlY2F1c2Ugd2UgYXJlIHByb2JhYmx5IGNvbmZp Z3VyaW5nIHdpdGggYSBjcm9zcyBjb21waWxlcg0KKyMgd2hpY2ggY2FuJ3QgY3JlYXRlIGV4ZWN1 dGFibGVzLiAgU28gd2UgaW5jbHVkZSBBQ19FWEVFWFQgdG8ga2VlcA0KKyMgYXV0b21ha2UgaGFw cHksIGJ1dCB3ZSBkb24ndCBleGVjdXRlIGl0LCBzaW5jZSB3ZSBkb24ndCBjYXJlIGFib3V0DQor IyB0aGUgcmVzdWx0Lg0KK2lmIGZhbHNlOyB0aGVuDQorDQorICBkdW1teV92YXI9MQ0KK2ZpDQor DQorLiAke25ld2xpYl9iYXNlZGlyfS9jb25maWd1cmUuaG9zdA0KKw0KK05FV0xJQl9DRkxBR1M9 JHtuZXdsaWJfY2ZsYWdzfQ0KKw0KKw0KK05PX0lOQ0xVREVfTElTVD0ke25vaW5jbHVkZX0NCisN CisNCitMREZMQUdTPSR7bGRmbGFnc30NCisNCisNCisgaWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9s ZXZlbH0gPSB4MDsgdGhlbg0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9DQorICBFTElYX0xFVkVMXzBf RkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9JyMnDQorICBFTElYX0xFVkVM XzBfRkFMU0U9DQorZmkNCisNCisgaWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MTsg dGhlbg0KKyAgRUxJWF9MRVZFTF8xX1RSVUU9DQorICBFTElYX0xFVkVMXzFfRkFMU0U9JyMnDQor ZWxzZQ0KKyAgRUxJWF9MRVZFTF8xX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzFfRkFMU0U9DQor ZmkNCisNCisgaWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MjsgdGhlbg0KKyAgRUxJ WF9MRVZFTF8yX1RSVUU9DQorICBFTElYX0xFVkVMXzJfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJ WF9MRVZFTF8yX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzJfRkFMU0U9DQorZmkNCisNCisgaWYg dGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MzsgdGhlbg0KKyAgRUxJWF9MRVZFTF8zX1RS VUU9DQorICBFTElYX0xFVkVMXzNfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8zX1RS VUU9JyMnDQorICBFTElYX0xFVkVMXzNfRkFMU0U9DQorZmkNCisNCisgaWYgdGVzdCB4JHtuZXds aWJfZWxpeF9sZXZlbH0gPSB4NDsgdGhlbg0KKyAgRUxJWF9MRVZFTF80X1RSVUU9DQorICBFTElY X0xFVkVMXzRfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF80X1RSVUU9JyMnDQorICBF TElYX0xFVkVMXzRfRkFMU0U9DQorZmkNCisNCisNCisgaWYgdGVzdCB4JHt1c2VfbGlidG9vbH0g PSB4eWVzOyB0aGVuDQorICBVU0VfTElCVE9PTF9UUlVFPQ0KKyAgVVNFX0xJQlRPT0xfRkFMU0U9 JyMnDQorZWxzZQ0KKyAgVVNFX0xJQlRPT0xfVFJVRT0nIycNCisgIFVTRV9MSUJUT09MX0ZBTFNF PQ0KK2ZpDQorDQorDQorIyBFbWl0IGFueSB0YXJnZXQtc3BlY2lmaWMgd2FybmluZ3MuDQoraWYg dGVzdCAieCR7bmV3bGliX21zZ193YXJufSIgIT0gIngiOyB0aGVuDQorICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAke25ld2xpYl9tc2dfd2Fybn0i ID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICR7bmV3bGliX21zZ193YXJufSIgPiYy O30NCitmaQ0KKw0KKyMgSGFyZC1jb2RlIE9CSkVYVC4gIE5vcm1hbGx5IGl0IGlzIHNldCBieSBB Q19PQkpFWFQsIGJ1dCB3ZQ0KKyMgdXNlIG9leHQsIHdoaWNoIGlzIHNldCBpbiBjb25maWd1cmUu aG9zdCBiYXNlZCBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtLg0KK09CSkVYVD0ke29leHR9DQorDQor DQorDQorDQorDQorDQorDQorDQorDQorDQorDQorYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmln X2ZpbGVzIE1ha2VmaWxlIg0KKw0KK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRg0KKyMgVGhpcyBm aWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3Vy ZQ0KKyMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3 ZWVuIGNvbmZpZ3VyZQ0KKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1 cmUncyBvcHRpb24gLS1jb25maWctY2FjaGUuDQorIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVy IHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndA0KKyMgd2FudCB0byBr ZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0Lg0KKyMNCisjIGNvbmZpZy5zdGF0dXMgb25s eSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdA0KKyMgdGhl IC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLg0KKyMNCisjIGBhY19jdl9lbnZf Zm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4NCisj IGxvYWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNz aWduZWQgdGhlDQorIyBmb2xsb3dpbmcgdmFsdWVzLg0KKw0KK19BQ0VPRg0KKw0KKyMgVGhlIGZv bGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2 YWx1ZXMsDQorIyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBw b3J0YWJsZSwgYW5kIGVmZmljaWVudC4NCisjIFNvLCB3ZSBraWxsIHZhcmlhYmxlcyBjb250YWlu aW5nIG5ld2xpbmVzLg0KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4n dCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LA0KKyMgYW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRo ZSBjYWNoZSBmaWxlIHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuDQorKA0KKyAgZm9yIGFj X3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16QS1aMC05X10q XCk9LiovXDEvcCdgOyBkbw0KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXINCisgICAgY2FzZSAk YWNfdmFsIGluICMoDQorICAgICoke2FzX25sfSopDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMo DQorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjUN CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRh aW5zIGEgbmV3bGluZSIgPiYyO30gOzsNCisgICAgICBlc2FjDQorICAgICAgY2FzZSAkYWNfdmFy IGluICMoDQorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKA0KKyAgICAgIEJBU0hfQVJHViB8 IEJBU0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoDQorICAgICAgKikgeyBldmFsICRhY192 YXI9OyB1bnNldCAkYWNfdmFyO30gOzsNCisgICAgICBlc2FjIDs7DQorICAgIGVzYWMNCisgIGRv bmUNCisNCisgIChzZXQpIDI+JjEgfA0KKyAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9JyAnOyBz ZXQpIDI+JjFgIGluICMoDQorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikNCisgICAgICAjIGBz ZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlczogZG91YmxlLXF1b3Rl DQorICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5z IFxcIGludG8gXC4NCisgICAgICBzZWQgLW4gXA0KKwkicy8nLydcXFxcJycvZzsNCisJICBzL15c XChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdc XDInL3AiDQorICAgICAgOzsgIygNCisgICAgKikNCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3Jy ZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLg0KKyAgICAg IHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiDQorICAg ICAgOzsNCisgICAgZXNhYyB8DQorICAgIHNvcnQNCispIHwNCisgIHNlZCAnDQorICAgICAvXmFj X2N2X2Vudl8vYiBlbmQNCisgICAgIHQgY2xlYXINCisgICAgIDpjbGVhcg0KKyAgICAgcy9eXChb Xj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8fCAmLw0KKyAgICAg dCBlbmQNCisgICAgIHMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9Lw0KKyAgICAgOmVu ZCcgPj5jb25mY2FjaGUNCitpZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNhY2hlID4vZGV2L251 bGwgMj4mMTsgdGhlbiA6OyBlbHNlDQorICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4N CisgICAgaWYgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCI7IHRoZW4NCisgICAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hl ICRjYWNoZV9maWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2Fj aGVfZmlsZSIgPiY2O30NCisgICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxlIiB8fCB0ZXN0 IC1oICIkY2FjaGVfZmlsZSI7IHRoZW4NCisJY2F0IGNvbmZjYWNoZSA+IiRjYWNoZV9maWxlIg0K KyAgICAgIGVsc2UNCisgICAgICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygNCisgICAgICAgICov KiB8ID86KikNCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiQkICYmDQorCSAgbXYg LWYgIiRjYWNoZV9maWxlIiQkICIkY2FjaGVfZmlsZSIgOzsgIygNCisgICAgICAgICopDQorCSAg bXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIgOzsNCisJZXNhYw0KKyAgICAgIGZpDQorICAg IGZpDQorICBlbHNlDQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQ0KKyRhc19l Y2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+ JjY7fQ0KKyAgZmkNCitmaQ0KK3JtIC1mIGNvbmZjYWNoZQ0KKw0KK3Rlc3QgIngkcHJlZml4IiA9 IHhOT05FICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgNCisjIExldCBtYWtlIGV4cGFuZCBl eGVjX3ByZWZpeC4NCit0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4 PScke3ByZWZpeH0nDQorDQorIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIERFRlMuDQorIyBQ cm90ZWN0IGFnYWluc3Qgc2hlbGwgZXhwYW5zaW9uIHdoaWxlIGV4ZWN1dGluZyBNYWtlZmlsZSBy dWxlcy4NCisjIFByb3RlY3QgYWdhaW5zdCBNYWtlZmlsZSBtYWNybyBleHBhbnNpb24uDQorIw0K KyMgSWYgdGhlIGZpcnN0IHNlZCBzdWJzdGl0dXRpb24gaXMgZXhlY3V0ZWQgKHdoaWNoIGxvb2tz IGZvciBtYWNyb3MgdGhhdA0KKyMgdGFrZSBhcmd1bWVudHMpLCB0aGVuIGJyYW5jaCB0byB0aGUg cXVvdGUgc2VjdGlvbi4gIE90aGVyd2lzZSwNCisjIGxvb2sgZm9yIGEgbWFjcm8gdGhhdCBkb2Vz bid0IHRha2UgYXJndW1lbnRzLg0KK2FjX3NjcmlwdD0nDQorOm1saW5lDQorL1xcJC97DQorIE4N CisgcyxcXFxuLCwNCisgYiBtbGluZQ0KK30NCit0IGNsZWFyDQorOmNsZWFyDQorcy9eWwkgXSoj WwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSAoXVteCSAoXSooW14pXSopXClbCSBdKlwoLipcKS8t RFwxPVwyL2cNCit0IHF1b3RlDQorcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSBd W14JIF0qXClbCSBdKlwoLipcKS8tRFwxPVwyL2cNCit0IHF1b3RlDQorYiBhbnkNCis6cXVvdGUN CitzL1sJIGB+IyReJiooKXt9XFx8OydcJyciPD4/XS9cXCYvZw0KK3MvXFsvXFwmL2cNCitzL1xd L1xcJi9nDQorcy9cJC8kJC9nDQorSA0KKzphbnkNCiskew0KKwlnDQorCXMvXlxuLy8NCisJcy9c bi8gL2cNCisJcA0KK30NCisnDQorREVGUz1gc2VkIC1uICIkYWNfc2NyaXB0IiBjb25mZGVmcy5o YA0KKw0KKw0KK2FjX2xpYm9ianM9DQorYWNfbHRsaWJvYmpzPQ0KK1U9DQorZm9yIGFjX2kgaW4g OiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlDQorICAjIDEuIFJl bW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBpbnN0YWxsZWQuDQorICBhY19z Y3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycNCisgIGFjX2k9YCRhc19lY2hv ICIkYWNfaSIgfCBzZWQgIiRhY19zY3JpcHQiYA0KKyAgIyAyLiBQcmVwZW5kIExJQk9CSkRJUi4g IFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUg0KKyAgIyAgICB3aWxsIGJl IHNldCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuDQor ICBhc19mbl9hcHBlbmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2Jq ZXh0Ig0KKyAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaSIn JFUubG8nDQorZG9uZQ0KK0xJQk9CSlM9JGFjX2xpYm9ianMNCisNCitMVExJQk9CSlM9JGFjX2x0 bGlib2Jqcw0KKw0KKw0KK2lmIHRlc3QgLXogIiR7TUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFfSIg JiYgdGVzdCAteiAiJHtNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2Zu X2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1BWV9TVVBQTFlfU1lTQ0FMTFNcIiB3YXMgbmV2ZXIg ZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQg Y29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1DQorZmkNCisNCitpZiB0ZXN0IC16ICIke0FNREVQ X1RSVUV9IiAmJiB0ZXN0IC16ICIke0FNREVQX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9y ICQ/ICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0 aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJ TkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9IiAmJiB0ZXN0 IC16ICIke2FtX19mYXN0ZGVwQ0NfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgJD8gImNv bmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ1wiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkg dGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRM SU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7TUFJTlRBSU5FUl9NT0RFX1RSVUV9IiAmJiB0 ZXN0IC16ICIke01BSU5UQUlORVJfTU9ERV9GQUxTRX0iOyB0aGVuDQorICBhc19mbl9lcnJvciAk PyAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVSX01PREVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitV c3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxs eS4iICIkTElORU5PIiA1DQorZmkNCitpZiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfMF9UUlVFfSIg JiYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzBfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3Ig JD8gImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8wXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1 YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHku IiAiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzFfVFJVRX0iICYm IHRlc3QgLXogIiR7RUxJWF9MRVZFTF8xX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICQ/ ICJjb25kaXRpb25hbCBcIkVMSVhfTEVWRUxfMVwiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFs bHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIg IiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8yX1RSVUV9IiAmJiB0 ZXN0IC16ICIke0VMSVhfTEVWRUxfMl9GQUxTRX0iOyB0aGVuDQorICBhc19mbl9lcnJvciAkPyAi Y29uZGl0aW9uYWwgXCJFTElYX0xFVkVMXzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5 IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIk TElORU5PIiA1DQorZmkNCitpZiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfM19UUlVFfSIgJiYgdGVz dCAteiAiJHtFTElYX0xFVkVMXzNfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgJD8gImNv bmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8zXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0 aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJ TkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzRfVFJVRX0iICYmIHRlc3Qg LXogIiR7RUxJWF9MRVZFTF80X0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25k aXRpb25hbCBcIkVMSVhfTEVWRUxfNFwiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkgdGhp cyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5F Tk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7VVNFX0xJQlRPT0xfVFJVRX0iICYmIHRlc3QgLXog IiR7VVNFX0xJQlRPT0xfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlv bmFsIFwiVVNFX0xJQlRPT0xcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVh bnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1 DQorZmkNCisNCis6ICIke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfSINCithY193cml0 ZV9mYWlsPTANCithY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcw0KK2FjX2NsZWFu X2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiDQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY1DQor JGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNjt9DQorYXNfd3Jp dGVfZmFpbD0wDQorY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9mYWls PTENCisjISAkU0hFTEwNCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuDQorIyBSdW4gdGhpcyBmaWxl IHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uDQorIyBDb21waWxlciBvdXRw dXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2VmdWwgZm9yIGRlYnVnZ2luZw0KKyMgY29uZmln dXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4NCisNCitkZWJ1Zz1mYWxzZQ0KK2Fj X2NzX3JlY2hlY2s9ZmFsc2UNCithY19jc19zaWxlbnQ9ZmFsc2UNCisNCitTSEVMTD1cJHtDT05G SUdfU0hFTEwtJFNIRUxMfQ0KK2V4cG9ydCBTSEVMTA0KK19BU0VPRg0KK2NhdCA+PiRDT05GSUdf U1RBVFVTIDw8XF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTENCisjIyAtLS0tLS0tLS0tLS0tLS0t LS0tLSAjIw0KKyMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjDQorIyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0gIyMNCisNCisjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUNCitEVUFMQ0FTRT0xOyBl eHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoDQoraWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitz ZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoNCisgIGVtdWxhdGUg c2gNCisgIE5VTExDTUQ9Og0KKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNw bGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoDQorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2Fn ZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLg0KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCIn DQorICBzZXRvcHQgTk9fR0xPQl9TVUJTVA0KK2Vsc2UNCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rl di9udWxsYCBpbiAjKA0KKyAgKnBvc2l4KikgOg0KKyAgICBzZXQgLW8gcG9zaXggOzsgIygNCisg ICopIDoNCisgICAgIDs7DQorZXNhYw0KK2ZpDQorDQorDQorYXNfbmw9Jw0KKycNCitleHBvcnQg YXNfbmwNCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9i aW4vcHJpbnRmLg0KK2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFwnDQorYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRh c19lY2hvDQorYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hv JGFzX2VjaG8NCisjIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwg cHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywNCisjIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3Mg Zm9yIGJhc2ggb3IgenNoLg0KK2lmIHRlc3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04i IFwNCisgICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8i KSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfZWNobz0ncHJpbnQgLXIgLS0nDQorICBhc19lY2hv X249J3ByaW50IC1ybiAtLScNCitlbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0g IlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuDQorICBhc19lY2hvPSdwcmludGYgJXNcbicN CisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJw0KK2Vsc2UNCisgIGlmIHRlc3QgIlhgKC91c3IvdWNi L2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+L2Rldi9udWxsYCIgPSAiWC1uICRhc19lY2hvIjsgdGhl bg0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEkYXNfbmwiJw0K KyAgICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4nDQorICBlbHNlDQorICAgIGFzX2VjaG9f Ym9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInDQorICAgIGFzX2VjaG9fbl9ib2R5 PSdldmFsDQorICAgICAgYXJnPSQxOw0KKyAgICAgIGNhc2UgJGFyZyBpbiAjKA0KKyAgICAgICoi JGFzX25sIiopDQorCWV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkkYXNfbmwiOw0KKwlhcmc9YGV4 cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7Ow0KKyAgICAgIGVzYWM7DQorICAgICAg ZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIgfCB0ciAtZCAiJGFzX25sIg0KKyAgICAnDQorICAg IGV4cG9ydCBhc19lY2hvX25fYm9keQ0KKyAgICBhc19lY2hvX249J3NoIC1jICRhc19lY2hvX25f Ym9keSBhc19lY2hvJw0KKyAgZmkNCisgIGV4cG9ydCBhc19lY2hvX2JvZHkNCisgIGFzX2VjaG89 J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycNCitmaQ0KKw0KKyMgVGhlIHVzZXIgaXMgYWx3 YXlzIHJpZ2h0Lg0KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVu DQorICBQQVRIX1NFUEFSQVRPUj06DQorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7 IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7DQorICAgIChQQVRIPScvYmluOi9iaW4nOyBG UEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8DQorICAgICAgUEFUSF9TRVBB UkFUT1I9JzsnDQorICB9DQorZmkNCisNCisNCisjIElGUw0KKyMgV2UgbmVlZCBzcGFjZSwgdGFi IGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90aW5nIGlzDQorIyB0 aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10YWIu DQorIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291 bGQgZGlzYWJsZSB3b3JkDQorIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFs dWUuKQ0KK0lGUz0iICIiCSRhc19ubCINCisNCisjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4g dGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLg0KK2FzX215c2Vs Zj0NCitjYXNlICQwIGluICMoKA0KKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBB VEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf ZGlyPS4NCisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAg JiYgYnJlYWsNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMN CisjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4g YXMgYHNoIENPTU1BTkQnDQorIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQg aW4gdGhlIHBhdGguDQoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlz ZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNo byAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBh YnNvbHV0ZSBmaWxlIG5hbWUiID4mMg0KKyAgZXhpdCAxDQorZmkNCisNCisjIFVuc2V0IHZhcmlh YmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluDQor IyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7 IHRoZSAifHwgZXhpdCAxIg0KKyMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIg bWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQNCisjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4y LjE0Lg0KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgNCitkbyBldmFs IHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXA0KKyAgJiYgKCAodW5zZXQgJGFzX3Zhcikg fHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6DQorZG9uZQ0K K1BTMT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitM Q19BTEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitMQU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQor DQorIyBDRFBBVEguDQorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENE UEFUSA0KKw0KKw0KKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQ0K KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgT3V0cHV0ICJg YmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0df RkQgYXJlDQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVm ZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlDQorIyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVz aW5nIDEgaWYgdGhhdCB3YXMgMC4NCithc19mbl9lcnJvciAoKQ0KK3sNCisgIGFzX3N0YXR1cz0k MTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xDQorICBpZiB0ZXN0ICIkNCI7 IHRoZW4NCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1h c19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaw0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQNCisgIGZpDQorICAkYXNfZWNobyAi JGFzX21lOiBlcnJvcjogJDIiID4mMg0KKyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzDQorfSAjIGFz X2ZuX2Vycm9yDQorDQorDQorIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUw0KKyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4NCith c19mbl9zZXRfc3RhdHVzICgpDQorew0KKyAgcmV0dXJuICQxDQorfSAjIGFzX2ZuX3NldF9zdGF0 dXMNCisNCisjIGFzX2ZuX2V4aXQgU1RBVFVTDQorIyAtLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRXhp dCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBj b250ZXh0Lg0KK2FzX2ZuX2V4aXQgKCkNCit7DQorICBzZXQgK2UNCisgIGFzX2ZuX3NldF9zdGF0 dXMgJDENCisgIGV4aXQgJDENCit9ICMgYXNfZm5fZXhpdA0KKw0KKyMgYXNfZm5fdW5zZXQgVkFS DQorIyAtLS0tLS0tLS0tLS0tLS0NCisjIFBvcnRhYmx5IHVuc2V0IFZBUi4NCithc19mbl91bnNl dCAoKQ0KK3sNCisgIHsgZXZhbCAkMT07IHVuc2V0ICQxO30NCit9DQorYXNfdW5zZXQ9YXNfZm5f dW5zZXQNCisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCisjIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0 aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UNCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0 aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXINCisjIHJl cGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBw cmVzZW50IGluIG5haXZlDQorIyBpbXBsZW1lbnRhdGlvbnMuDQoraWYgKGV2YWwgImFzX3Zhcj0x OyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOg0K KyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpDQorICB7DQorICAgIGV2YWwgJDErPVwkMg0KKyAgfScN CitlbHNlDQorICBhc19mbl9hcHBlbmQgKCkNCisgIHsNCisgICAgZXZhbCAkMT1cJCQxXCQyDQor ICB9DQorZmkgIyBhc19mbl9hcHBlbmQNCisNCisjIGFzX2ZuX2FyaXRoIEFSRy4uLg0KKyMgLS0t LS0tLS0tLS0tLS0tLS0tDQorIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUg QVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlDQorIyBnbG9iYWwgJGFzX3ZhbC4gVGFr ZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUgYXJndW1lbnRz DQorIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4NCitpZiAoZXZhbCAi dGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2Fz X2ZuX2FyaXRoICgpDQorICB7DQorICAgIGFzX3ZhbD0kKCggJCogKSkNCisgIH0nDQorZWxzZQ0K KyAgYXNfZm5fYXJpdGggKCkNCisgIHsNCisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAk PyAtZXEgMWANCisgIH0NCitmaSAjIGFzX2ZuX2FyaXRoDQorDQorDQoraWYgZXhwciBhIDogJ1wo YVwpJyA+L2Rldi9udWxsIDI+JjEgJiYNCisgICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4u LlwpJ2AiID0gWDAwMTsgdGhlbg0KKyAgYXNfZXhwcj1leHByDQorZWxzZQ0KKyAgYXNfZXhwcj1m YWxzZQ0KK2ZpDQorDQoraWYgKGJhc2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0 ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgvIjsgdGhlbg0KKyAgYXNfYmFzZW5hbWU9YmFz ZW5hbWUNCitlbHNlDQorICBhc19iYXNlbmFtZT1mYWxzZQ0KK2ZpDQorDQoraWYgKGFzX2Rpcj1g ZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0 aGVuDQorICBhc19kaXJuYW1lPWRpcm5hbWUNCitlbHNlDQorICBhc19kaXJuYW1lPWZhbHNlDQor ZmkNCisNCithc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIgfHwNCiskYXNfZXhwciBYLyIkMCIg OiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXA0KKwkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwN CisJIFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgvIiQw IiB8DQorICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQvew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwvXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAg cQ0KKwkgIH0NCisJICAvXlhcL1woXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkg IH0NCisJICBzLy4qLy4vOyBxJ2ANCisNCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3Rl ciBSYW5nZXMuDQorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonDQor YXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonDQorYXNfY3JfTGV0dGVy cz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTDQorYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5 Jw0KK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cw0KKw0KK0VDSE9fQz0g RUNIT19OPSBFQ0hPX1Q9DQorY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgNCistbiopDQorICBj YXNlIGBlY2hvICd4eVxjJ2AgaW4NCisgICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNp bmdsZSB0YWIgY2hhcmFjdGVyLg0KKyAgeHkpICBFQ0hPX0M9J1xjJzs7DQorICAqKSAgIGVjaG8g YGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsDQorICAgICAgIEVDSE9fVD0n CSc7Ow0KKyAgZXNhYzs7DQorKikNCisgIEVDSE9fTj0nLW4nOzsNCitlc2FjDQorDQorcm0gLWYg Y29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUNCitpZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRo ZW4NCisgIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUNCitlbHNlDQorICBybSAtZiBjb25m JCQuZGlyDQorICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsDQorZmkNCitpZiAoZWNobyA+ Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuDQorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBj b25mJCQgMj4vZGV2L251bGw7IHRoZW4NCisgICAgYXNfbG5fcz0nbG4gLXMnDQorICAgICMgLi4u IGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6DQorICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4g LXMgZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuDQorICAgICMgMikgREpHUFAgPCAy LjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxl Lg0KKyAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLg0K KyAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAt ZiBjb25mJCQuZXhlIHx8DQorICAgICAgYXNfbG5fcz0nY3AgLXAnDQorICBlbGlmIGxuIGNvbmYk JC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgICBhc19sbl9zPWxuDQorICBlbHNl DQorICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZmkNCitlbHNlDQorICBhc19sbl9zPSdjcCAtcCcN CitmaQ0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29u ZiQkLmZpbGUNCitybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsDQorDQorDQorIyBhc19mbl9t a2Rpcl9wDQorIyAtLS0tLS0tLS0tLS0tDQorIyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0 b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuDQorYXNfZm5fbWtkaXJfcCAoKQ0K K3sNCisNCisgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7Ow0K KyAgZXNhYw0KKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7DQor ICAgIGFzX2RpcnM9DQorICAgIHdoaWxlIDo7IGRvDQorICAgICAgY2FzZSAkYXNfZGlyIGluICMo DQorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xc XFxcXFxcJycvZyJgOzsgIycoDQorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsNCisgICAgICBl c2FjDQorICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyINCisgICAgICBhc19kaXI9 YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fA0KKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwo LipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVte L10nIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJGFzX2RpciIg OiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYXNfZGlyIiB8DQor ICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8N CisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHEN CisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0K KwkgIHMvLiovLi87IHEnYA0KKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrDQorICAg IGRvbmUNCisgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIg0K KyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0 ZSBkaXJlY3RvcnkgJGFzX2RpciINCisNCisNCit9ICMgYXNfZm5fbWtkaXJfcA0KK2lmIG1rZGly IC1wIC4gMj4vZGV2L251bGw7IHRoZW4NCisgIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGly IicNCitlbHNlDQorICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcA0KKyAgYXNfbWtkaXJfcD1m YWxzZQ0KK2ZpDQorDQoraWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNf dGVzdF94PSd0ZXN0IC14Jw0KK2Vsc2UNCisgIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsg dGhlbg0KKyAgICBhc19sc19MX29wdGlvbj1MDQorICBlbHNlDQorICAgIGFzX2xzX0xfb3B0aW9u PQ0KKyAgZmkNCisgIGFzX3Rlc3RfeD0nDQorICAgIGV2YWwgc2ggLWMgJ1wnJw0KKyAgICAgIGlm IHRlc3QgLWQgIiQxIjsgdGhlbg0KKwl0ZXN0IC1kICIkMS8uIjsNCisgICAgICBlbHNlDQorCWNh c2UgJDEgaW4gIygNCisJLSopc2V0ICIuLyQxIjs7DQorCWVzYWM7DQorCWNhc2UgYGxzIC1sZCck YXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKA0KKwk/Pz9bc3hdKik6Ozsq KWZhbHNlOztlc2FjO2ZpDQorICAgICdcJycgc2gNCisgICcNCitmaQ0KK2FzX2V4ZWN1dGFibGVf cD0kYXNfdGVzdF94DQorDQorIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBh IHZhbGlkIENQUCBuYW1lLg0KK2FzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJz JVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorIyBTZWQgZXhw cmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuDQorYXNf dHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyINCisNCisN CitleGVjIDY+JjENCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0K KyMjIE1haW4gYm9keSBvZiAkQ09ORklHX1NUQVRVUyBzY3JpcHQuICMjDQorIyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCitfQVNFT0YNCit0ZXN0ICRhc193cml0ZV9m YWlsID0gMCAmJiBjaG1vZCAreCAkQ09ORklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTENCisN CitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIyBT YXZlIHRoZSBsb2cgbWVzc2FnZSwgdG8ga2VlcCAkMCBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5k IHRvDQorIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBp bnN0ZWFkIG9mIHRoZWlyDQorIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4NCithY19s b2c9Ig0KK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgbmV3bGliICRhc19tZSA0LjEuMCwgd2hp Y2ggd2FzDQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21t YW5kIGxpbmUgd2FzDQorDQorICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTDQorICBD T05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMNCisgIENPTkZJR19MSU5LUyAgICA9ICRD T05GSUdfTElOS1MNCisgIENPTkZJR19DT01NQU5EUyA9ICRDT05GSUdfQ09NTUFORFMNCisgICQg JDAgJEANCisNCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAx cWANCisiDQorDQorX0FDRU9GDQorDQorY2FzZSAkYWNfY29uZmlnX2ZpbGVzIGluICoiDQorIiop IHNldCB4ICRhY19jb25maWdfZmlsZXM7IHNoaWZ0OyBhY19jb25maWdfZmlsZXM9JCo7Ow0KK2Vz YWMNCisNCisNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTENCisjIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuDQorY29uZmln X2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIg0KK2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19j b21tYW5kcyINCisNCitfQUNFT0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xDQorYWNfY3NfdXNhZ2U9IlwNCitcYCRhc19tZScgaW5zdGFudGlh dGVzIGZpbGVzIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGFjdGlvbnMNCitmcm9tIHRlbXBsYXRl cyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUgZmls ZXMNCithbmQgYWN0aW9ucyBhcmUgc3BlY2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUgaW5zdGFudGlh dGVkIGJ5IGRlZmF1bHQuDQorDQorVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtUQUddLi4uDQorDQor ICAtaCwgLS1oZWxwICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0DQorICAtViwgLS12 ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdz LCB0aGVuIGV4aXQNCisgICAgICAtLWNvbmZpZyAgICAgcHJpbnQgY29uZmlndXJhdGlvbiwgdGhl biBleGl0DQorICAtcSwgLS1xdWlldCwgLS1zaWxlbnQNCisgICAgICAgICAgICAgICAgICAgZG8g bm90IHByaW50IHByb2dyZXNzIG1lc3NhZ2VzDQorICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJl bW92ZSB0ZW1wb3JhcnkgZmlsZXMNCisgICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBi eSByZWNvbmZpZ3VyaW5nIGluIHRoZSBzYW1lIGNvbmRpdGlvbnMNCisgICAgICAtLWZpbGU9RklM RVs6VEVNUExBVEVdDQorICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1 cmF0aW9uIGZpbGUgRklMRQ0KKw0KK0NvbmZpZ3VyYXRpb24gZmlsZXM6DQorJGNvbmZpZ19maWxl cw0KKw0KK0NvbmZpZ3VyYXRpb24gY29tbWFuZHM6DQorJGNvbmZpZ19jb21tYW5kcw0KKw0KK1Jl cG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVyLiINCisNCitfQUNFT0YNCitjYXQgPj4k Q09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCithY19jc19jb25maWc9 ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBc JF0vXFxcXCYvZydgIg0KK2FjX2NzX3ZlcnNpb249IlxcDQorbmV3bGliIGNvbmZpZy5zdGF0dXMg NC4xLjANCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgs DQorICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCINCisNCitDb3B5cmlnaHQgKEMp IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorVGhpcyBjb25maWcuc3RhdHVz IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQor Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5 IGl0LiINCisNCithY19wd2Q9JyRhY19wd2QnDQorc3JjZGlyPSckc3JjZGlyJw0KK0lOU1RBTEw9 JyRJTlNUQUxMJw0KK01LRElSX1A9JyRNS0RJUl9QJw0KK0FXSz0nJEFXSycNCit0ZXN0IC1uICJc JEFXSyIgfHwgQVdLPWF3aw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9B Q0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRo ZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuDQorYWNfbmVlZF9kZWZhdWx0cz06DQor d2hpbGUgdGVzdCAkIyAhPSAwDQorZG8NCisgIGNhc2UgJDEgaW4NCisgIC0tKj0/KikNCisgICAg YWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2ANCisgICAgYWNfb3B0YXJnPWBl eHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYA0KKyAgICBhY19zaGlmdD06DQorICAgIDs7DQor ICAtLSo9KQ0KKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYA0KKyAg ICBhY19vcHRhcmc9DQorICAgIGFjX3NoaWZ0PToNCisgICAgOzsNCisgICopDQorICAgIGFjX29w dGlvbj0kMQ0KKyAgICBhY19vcHRhcmc9JDINCisgICAgYWNfc2hpZnQ9c2hpZnQNCisgICAgOzsN CisgIGVzYWMNCisNCisgIGNhc2UgJGFjX29wdGlvbiBpbg0KKyAgIyBIYW5kbGluZyBvZiB0aGUg b3B0aW9ucy4NCisgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAtLXJlY2hlIHwg LS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQ0KKyAgICBhY19jc19yZWNoZWNrPTogOzsNCisg IC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8 IC0tdiB8IC1WICkNCisgICAgJGFzX2VjaG8gIiRhY19jc192ZXJzaW9uIjsgZXhpdCA7Ow0KKyAg LS1jb25maWcgfCAtLWNvbmZpIHwgLS1jb25mIHwgLS1jb24gfCAtLWNvIHwgLS1jICkNCisgICAg JGFzX2VjaG8gIiRhY19jc19jb25maWciOyBleGl0IDs7DQorICAtLWRlYnVnIHwgLS1kZWJ1IHwg LS1kZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQ0KKyAgICBkZWJ1Zz06IDs7DQorICAtLWZpbGUgfCAt LWZpbCB8IC0tZmkgfCAtLWYgKQ0KKyAgICAkYWNfc2hpZnQNCisgICAgY2FzZSAkYWNfb3B0YXJn IGluDQorICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJz LycvJ1xcXFxcXFxcJycvZyJgIDs7DQorICAgICcnKSBhc19mbl9lcnJvciAkPyAibWlzc2luZyBm aWxlIGFyZ3VtZW50IiA7Ow0KKyAgICBlc2FjDQorICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklM RVMgIiAnJGFjX29wdGFyZyciDQorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Ow0KKyAgLS1o ZSB8IC0taCB8ICAtLWhlbHAgfCAtLWhlbCB8IC1oICkNCisgICAgJGFzX2VjaG8gIiRhY19jc191 c2FnZSI7IGV4aXQgOzsNCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVp IHwgLS1xdSB8IC0tcSBcDQorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNp bGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpDQorICAgIGFjX2NzX3NpbGVudD06IDs7DQorDQorICAj IFRoaXMgaXMgYW4gZXJyb3IuDQorICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBv cHRpb246IFxgJDEnDQorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7 DQorDQorICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSINCisgICAgIGFj X25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsNCisNCisgIGVzYWMNCisgIHNoaWZ0DQorZG9uZQ0KKw0K K2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQ0KKw0KK2lmICRhY19jc19zaWxlbnQ7IHRoZW4NCisg IGV4ZWMgNj4vZGV2L251bGwNCisgIGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29uZmln dXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiDQorZmkNCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklH X1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitpZiBcJGFjX2NzX3JlY2hlY2s7 IHRoZW4NCisgIHNldCBYICckU0hFTEwnICckMCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29u ZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24NCisgIHNoaWZ0DQor ICBcJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNg0KKyAgQ09O RklHX1NIRUxMPSckU0hFTEwnDQorICBleHBvcnQgQ09ORklHX1NIRUxMDQorICBleGVjICJcJEAi DQorZmkNCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNf d3JpdGVfZmFpbD0xDQorZXhlYyA1Pj5jb25maWcubG9nDQorew0KKyAgZWNobw0KKyAgc2VkICdo O3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4kLyAjIy87cDt4O3A7eCcgPDxfQVNCT1gNCisjIyBS dW5uaW5nICRhc19tZS4gIyMNCitfQVNCT1gNCisgICRhc19lY2hvICIkYWNfbG9nIg0KK30gPiY1 DQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVf ZmFpbD0xDQorIw0KKyMgSU5JVC1DT01NQU5EUw0KKyMNCitBTURFUF9UUlVFPSIkQU1ERVBfVFJV RSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiDQorDQorX0FDRU9GDQorDQorY2F0ID4+JENPTkZJ R19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKw0KKyMgSGFuZGxpbmcgb2Yg YXJndW1lbnRzLg0KK2ZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cw0K K2RvDQorICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluDQorICAgICJkZXBmaWxlcyIpIENPTkZJ R19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZXBmaWxlcyIgOzsNCisgICAgIk1ha2VmaWxl IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7Ow0KKw0KKyAgKikgYXNf Zm5fZXJyb3IgJD8gImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJ TkVOTyIgNTs7DQorICBlc2FjDQorZG9uZQ0KKw0KKw0KKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1 c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwNCisj IHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQg YXJlIG5vdC4NCisjIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25t ZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5DQorIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEu My4NCitpZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbg0KKyAgdGVzdCAiJHtDT05GSUdfRklMRVMr c2V0fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRjb25maWdfZmlsZXMNCisgIHRlc3QgIiR7Q09O RklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENPTkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1h bmRzDQorZmkNCisNCisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5j ZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUNCisjIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlz IG5vIHJlYXNvbiBhZ2FpbnN0IGhhdmluZyBpdCBoZXJlLCBhbmQgaW4gYWRkaXRpb24sDQorIyBj cmVhdGluZyBhbmQgbW92aW5nIGZpbGVzIGZyb20gL3RtcCBjYW4gc29tZXRpbWVzIGNhdXNlIHBy b2JsZW1zLg0KKyMgSG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4NCisjIE5v dGUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBpbiB3aGljaCB0aGUgZGlyZWN0b3J5IHdp bGwgbm90IGJlIGNsZWFuZWQ6DQorIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMg bmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRtcCcuDQorJGRlYnVnIHx8DQorew0KKyAgdG1w PSBhY190bXA9DQorICB0cmFwICdleGl0X3N0YXR1cz0kPw0KKyAgOiAiJHthY190bXA6PSR0bXB9 Ig0KKyAgeyB0ZXN0ICEgLWQgIiRhY190bXAiIHx8IHJtIC1mciAiJGFjX3RtcCI7IH0gJiYgZXhp dCAkZXhpdF9zdGF0dXMNCisnIDANCisgIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1DQor fQ0KKyMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLg0KKw0K K3sNCisgIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29uZlhYWFhYWCIpIDI+L2Rl di9udWxsYCAmJg0KKyAgdGVzdCAtZCAiJHRtcCINCit9ICB8fA0KK3sNCisgIHRtcD0uL2NvbmYk JC0kUkFORE9NDQorICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikNCit9IHx8IGFzX2ZuX2Vy cm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJTkVO TyIgNQ0KK2FjX3RtcD0kdG1wDQorDQorIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19G SUxFUyBzZWN0aW9uLg0KKyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBu byBDT05GSUdfRklMRVMuDQorIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29u ZmlnLnN0YXR1cyBjb25maWcuaCcuDQoraWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4N CisNCisNCithY19jcj1gZWNobyBYIHwgdHIgWCAnXDAxNSdgDQorIyBPbiBjeWd3aW4sIGJhc2gg Y2FuIGVhdCBcciBpbnNpZGUgYGAgaWYgdGhlIHVzZXIgcmVxdWVzdGVkIGlnbmNyLg0KKyMgQnV0 IHdlIGtub3cgb2Ygbm8gb3RoZXIgc2hlbGwgd2hlcmUgYWNfY3Igd291bGQgYmUgZW1wdHkgYXQg dGhpcw0KKyMgcG9pbnQsIHNvIHdlIGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suDQor aWYgdGVzdCAieCRhY19jciIgPSB4OyB0aGVuDQorICBldmFsIGFjX2NyPVwkXCdcXHJcJw0KK2Zp DQorYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJhXHJiIiB9JyA8L2Rldi9udWxs IDI+L2Rldi9udWxsYA0KK2lmIHRlc3QgIiRhY19jc19hd2tfY3IiID0gImEke2FjX2NyfWIiOyB0 aGVuDQorICBhY19jc19hd2tfY3I9J1xccicNCitlbHNlDQorICBhY19jc19hd2tfY3I9JGFjX2Ny DQorZmkNCisNCitlY2hvICdCRUdJTiB7JyA+IiRhY190bXAvc3ViczEuYXdrIiAmJg0KK19BQ0VP Rg0KKw0KKw0KK3sNCisgIGVjaG8gImNhdCA+Y29uZiQkc3Vicy5hd2sgPDxfQUNFT0YiICYmDQor ICBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBzZWQgJ3MvLiovJiEkJiRhY19kZWxpbS8nICYmDQor ICBlY2hvICJfQUNFT0YiDQorfSA+Y29uZiQkc3Vicy5zaCB8fA0KKyAgYXNfZm5fZXJyb3IgJD8g ImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQ0KK2FjX2RlbGltX251 bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnXidgDQorYWNfZGVsaW09JyUhXyEj ICcNCitmb3IgYWNfbGFzdF90cnkgaW4gZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgOjsg ZG8NCisgIC4gLi9jb25mJCRzdWJzLnNoIHx8DQorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBu b3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCisNCisgIGFjX2RlbGltX249YHNl ZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgDQor ICBpZiB0ZXN0ICRhY19kZWxpbV9uID0gJGFjX2RlbGltX251bTsgdGhlbg0KKyAgICBicmVhaw0K KyAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4NCisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5v dCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQ0KKyAgZWxzZQ0KKyAgICBhY19kZWxp bT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIg0KKyAgZmkNCitkb25lDQorcm0g LWYgY29uZiQkc3Vicy5zaA0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFj X3dyaXRlX2ZhaWw9MQ0KK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYN CitfQUNFT0YNCitzZWQgLW4gJw0KK2gNCitzL14vU1siLzsgcy8hLiovIl09Lw0KK3ANCitnDQor cy9eW14hXSohLy8NCis6cmVwbA0KK3QgcmVwbA0KK3MvJyIkYWNfZGVsaW0iJyQvLw0KK3QgZGVs aW0NCis6bmwNCitoDQorcy9cKC5cezE0OFx9XCkuLiovXDEvDQordCBtb3JlMQ0KK3MvWyJcXF0v XFwmL2c7IHMvXi8iLzsgcy8kL1xcbiJcXC8NCitwDQorbg0KK2IgcmVwbA0KKzptb3JlMQ0KK3Mv WyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8NCitwDQorZw0KK3MvLlx7MTQ4XH0vLw0KK3Qg bmwNCis6ZGVsaW0NCitoDQorcy9cKC5cezE0OFx9XCkuLiovXDEvDQordCBtb3JlMg0KK3MvWyJc XF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvDQorcA0KK2INCis6bW9yZTINCitzL1siXFxdL1xcJi9n OyBzL14vIi87IHMvJC8iXFwvDQorcA0KK2cNCitzLy5cezE0OFx9Ly8NCit0IGRlbGltDQorJyA8 Y29uZiQkc3Vicy5hd2sgfCBzZWQgJw0KKy9eW14iIl0vew0KKyAgTg0KKyAgcy9cbi8vDQorfQ0K KycgPj4kQ09ORklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTENCitybSAtZiBjb25mJCRzdWJz LmF3aw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0K K19BQ0FXSw0KK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmDQorICBmb3Ig KGtleSBpbiBTKSBTX2lzX3NldFtrZXldID0gMQ0KKyAgRlMgPSAiByINCisNCit9DQorew0KKyAg bGluZSA9ICQgMA0KKyAgbmZpZWxkcyA9IHNwbGl0KGxpbmUsIGZpZWxkLCAiQCIpDQorICBzdWJz dGVkID0gMA0KKyAgbGVuID0gbGVuZ3RoKGZpZWxkWzFdKQ0KKyAgZm9yIChpID0gMjsgaSA8IG5m aWVsZHM7IGkrKykgew0KKyAgICBrZXkgPSBmaWVsZFtpXQ0KKyAgICBrZXlsZW4gPSBsZW5ndGgo a2V5KQ0KKyAgICBpZiAoU19pc19zZXRba2V5XSkgew0KKyAgICAgIHZhbHVlID0gU1trZXldDQor ICAgICAgbGluZSA9IHN1YnN0cihsaW5lLCAxLCBsZW4pICIiIHZhbHVlICIiIHN1YnN0cihsaW5l LCBsZW4gKyBrZXlsZW4gKyAzKQ0KKyAgICAgIGxlbiArPSBsZW5ndGgodmFsdWUpICsgbGVuZ3Ro KGZpZWxkWysraV0pDQorICAgICAgc3Vic3RlZCA9IDENCisgICAgfSBlbHNlDQorICAgICAgbGVu ICs9IDEgKyBrZXlsZW4NCisgIH0NCisNCisgIHByaW50IGxpbmUNCit9DQorDQorX0FDQVdLDQor X0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9 MQ0KK2lmIHNlZCAicy8kYWNfY3IvLyIgPCAvZGV2L251bGwgPiAvZGV2L251bGwgMj4mMTsgdGhl bg0KKyAgc2VkICJzLyRhY19jclwkLy87IHMvJGFjX2NyLyRhY19jc19hd2tfY3IvZyINCitlbHNl DQorICBjYXQNCitmaSA8ICIkYWNfdG1wL3N1YnMxLmF3ayIgPiAiJGFjX3RtcC9zdWJzLmF3ayIg XA0KKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMgbWFj aGluZXJ5IiAiJExJTkVOTyIgNQ0KK19BQ0VPRg0KKw0KKyMgVlBBVEggbWF5IGNhdXNlIHRyb3Vi bGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29sZSAkKHNyY2RpciksDQorIyAke3Ny Y2Rpcn0gYW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBz dHJpcCBsZWFkaW5nIGFuZA0KKyMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUg d2hvbGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5DQorIyAoYWN0dWFsbHkgd2UgbGVhdmUg YW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLg0KK2lmIHRlc3QgIngkc3Jj ZGlyIiA9IHguOyB0aGVuDQorICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9WwkgXSovew0K K2gNCitzLy8vDQorcy9eLzovDQorcy9bCSBdKiQvOi8NCitzLzpcJChzcmNkaXIpOi86L2cNCitz LzpcJHtzcmNkaXJ9Oi86L2cNCitzLzpAc3JjZGlyQDovOi9nDQorcy9eOiovLw0KK3MvOiokLy8N Cit4DQorcy9cKD1bCSBdKlwpLiovXDEvDQorRw0KK3MvXG4vLw0KK3MvXltePV0qPVsJIF0qJC8v DQorfScNCitmaQ0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTENCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiDQorDQorDQorZXZhbCBzZXQg WCAiICA6RiAkQ09ORklHX0ZJTEVTICAgICAgOkMgJENPTkZJR19DT01NQU5EUyINCitzaGlmdA0K K2ZvciBhY190YWcNCitkbw0KKyAgY2FzZSAkYWNfdGFnIGluDQorICA6W0ZITENdKSBhY19tb2Rl PSRhY190YWc7IGNvbnRpbnVlOzsNCisgIGVzYWMNCisgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGlu DQorICA6W0ZITF0qOiopOzsNCisgIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAkPyAiaW52YWxp ZCB0YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7Ow0KKyAgOltGSF0tKSBhY190YWc9LTotOzsN CisgIDpbRkhdKikgYWNfdGFnPSRhY190YWc6JGFjX3RhZy5pbjs7DQorICBlc2FjDQorICBhY19z YXZlX0lGUz0kSUZTDQorICBJRlM9Og0KKyAgc2V0IHggJGFjX3RhZw0KKyAgSUZTPSRhY19zYXZl X0lGUw0KKyAgc2hpZnQNCisgIGFjX2ZpbGU9JDENCisgIHNoaWZ0DQorDQorICBjYXNlICRhY19t b2RlIGluDQorICA6TCkgYWNfc291cmNlPSQxOzsNCisgIDpbRkhdKQ0KKyAgICBhY19maWxlX2lu cHV0cz0NCisgICAgZm9yIGFjX2YNCisgICAgZG8NCisgICAgICBjYXNlICRhY19mIGluDQorICAg ICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7Ow0KKyAgICAgICopICMgTG9vayBmb3IgdGhlIGZp bGUgZmlyc3QgaW4gdGhlIGJ1aWxkIHRyZWUsIHRoZW4gaW4gdGhlIHNvdXJjZSB0cmVlDQorCSAj IChpZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRlIHBhdGggY2Fubm90 IGJlIERPUy1zdHlsZSwNCisJICMgYmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuDQor CSB0ZXN0IC1mICIkYWNfZiIgfHwNCisJICAgY2FzZSAkYWNfZiBpbg0KKwkgICBbXFwvJF0qKSBm YWxzZTs7DQorCSAgICopIHRlc3QgLWYgIiRzcmNkaXIvJGFjX2YiICYmIGFjX2Y9IiRzcmNkaXIv JGFjX2YiOzsNCisJICAgZXNhYyB8fA0KKwkgICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBp bnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7Ow0KKyAgICAgIGVzYWMNCisgICAgICBj YXNlICRhY19mIGluICpcJyopIGFjX2Y9YCRhc19lY2hvICIkYWNfZiIgfCBzZWQgInMvJy8nXFxc XFxcXFwnJy9nImA7OyBlc2FjDQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIg JyRhY19mJyINCisgICAgZG9uZQ0KKw0KKyAgICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMg YGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndA0KKyAgICAjIHVzZSAk YXNfbWUpLCBwZW9wbGUgd291bGQgYmUgc3VycHJpc2VkIHRvIHJlYWQ6DQorICAgICMgICAgLyog Y29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmlnLnN0YXR1cy4gICovDQorICAgIGNvbmZpZ3Vy ZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2ANCisJICAkYXNfZWNobyAiJCoiIHwgc2VkICdzfF5b XjpdKi98fDtzfDpbXjpdKi98LCB8ZycNCisJYCcgYnkgY29uZmlndXJlLicNCisgICAgaWYgdGVz dCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbg0KKyAgICAgIGNvbmZpZ3VyZV9pbnB1dD0iJGFjX2Zp bGUuICAkY29uZmlndXJlX2lucHV0Ig0KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6 IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQ0KKyAgICBmaQ0KKyAgICAjIE5ldXRyYWxpemUgc3Bl Y2lhbCBjaGFyYWN0ZXJzIGludGVycHJldGVkIGJ5IHNlZCBpbiByZXBsYWNlbWVudCBzdHJpbmdz Lg0KKyAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygNCisgICAgKlwmKiB8ICpcfCogfCAq XFwqICkNCisgICAgICAgYWNfc2VkX2NvbmZfaW5wdXQ9YCRhc19lY2hvICIkY29uZmlndXJlX2lu cHV0IiB8DQorICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKA0KKyAgICAqKSBh Y19zZWRfY29uZl9pbnB1dD0kY29uZmlndXJlX2lucHV0OzsNCisgICAgZXNhYw0KKw0KKyAgICBj YXNlICRhY190YWcgaW4NCisgICAgKjotOiogfCAqOi0pIGNhdCA+IiRhY190bXAvc3RkaW4iIFwN CisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRM SU5FTk8iIDUgOzsNCisgICAgZXNhYw0KKyAgICA7Ow0KKyAgZXNhYw0KKw0KKyAgYWNfZGlyPWAk YXNfZGlybmFtZSAtLSAiJGFjX2ZpbGUiIHx8DQorJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwo LipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClb Xi9dJyBcfCBcDQorCSBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYWNfZmls ZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYWNfZmlsZSIg fA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8v XDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wx Lw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAg ICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkg IH0NCisJICBzLy4qLy4vOyBxJ2ANCisgIGFzX2Rpcj0iJGFjX2RpciI7IGFzX2ZuX21rZGlyX3AN CisgIGFjX2J1aWxkZGlyPS4NCisNCitjYXNlICIkYWNfZGlyIiBpbg0KKy4pIGFjX2Rpcl9zdWZm aXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyopDQor ICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwn YA0KKyAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4Lg0KKyAg YWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAnc3wv W15cXC9dKnwvLi58ZztzfC98fCdgDQorICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluDQor ICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQorICAq KSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsNCisgIGVzYWMg OzsNCitlc2FjDQorYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkDQorYWNfYWJzX2J1aWxkZGly PSRhY19wd2QkYWNfZGlyX3N1ZmZpeA0KKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6DQor YWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4DQorDQorY2FzZSAkc3JjZGlyIGlu DQorICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuDQorICAgIGFjX3NyY2Rpcj0uDQor ICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWINCisgICAgYWNfYWJzX3RvcF9z cmNkaXI9JGFjX3B3ZCA7Ow0KKyAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1l Lg0KKyAgICBhY19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4Ow0KKyAgICBhY190b3Bfc3Jj ZGlyPSRzcmNkaXINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7Ow0KKyAgKikgIyBS ZWxhdGl2ZSBuYW1lLg0KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGly JGFjX2Rpcl9zdWZmaXgNCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRz cmNkaXINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7DQorZXNhYw0K K2FjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bfc3JjZGlyJGFjX2Rpcl9zdWZmaXgNCisNCisNCisg IGNhc2UgJGFjX21vZGUgaW4NCisgIDpGKQ0KKyAgIw0KKyAgIyBDT05GSUdfRklMRQ0KKyAgIw0K Kw0KKyAgY2FzZSAkSU5TVEFMTCBpbg0KKyAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfSU5TVEFM TD0kSU5TVEFMTCA7Ow0KKyAgKikgYWNfSU5TVEFMTD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRJTlNU QUxMIDs7DQorICBlc2FjDQorICBhY19NS0RJUl9QPSRNS0RJUl9QDQorICBjYXNlICRNS0RJUl9Q IGluDQorICBbXFwvJF0qIHwgPzpbXFwvXSogKSA7Ow0KKyAgKi8qKSBhY19NS0RJUl9QPSRhY190 b3BfYnVpbGRfcHJlZml4JE1LRElSX1AgOzsNCisgIGVzYWMNCitfQUNFT0YNCisNCitjYXQgPj4k Q09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIyBJZiB0aGUgdGVt cGxhdGUgZG9lcyBub3Qga25vdyBhYm91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0Lg0KKyMgRklY TUU6IFRoaXMgaGFjayBzaG91bGQgYmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBhZnRlciAyLjYwLg0K K2FjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQ0KK2FjX3NlZF9kYXRh cm9vdD0nDQorL2RhdGFyb290ZGlyLyB7DQorICBwDQorICBxDQorfQ0KKy9AZGF0YWRpckAvcA0K Ky9AZG9jZGlyQC9wDQorL0BpbmZvZGlyQC9wDQorL0Bsb2NhbGVkaXJAL3ANCisvQG1hbmRpckAv cCcNCitjYXNlIGBldmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwiICRhY19maWxlX2lu cHV0cyJgIGluDQorKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7Ow0KKypA ZGF0YWRpckAqfCpAZG9jZGlyQCp8KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJAKnwqQG1hbmRpckAq KQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAk YWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmci ID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0 byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30NCitfQUNFT0YNCitjYXQg Pj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisgIGFjX2RhdGFy b290ZGlyX2hhY2s9Jw0KKyAgcyZAZGF0YWRpckAmJGRhdGFkaXImZw0KKyAgcyZAZG9jZGlyQCYk ZG9jZGlyJmcNCisgIHMmQGluZm9kaXJAJiRpbmZvZGlyJmcNCisgIHMmQGxvY2FsZWRpckAmJGxv Y2FsZWRpciZnDQorICBzJkBtYW5kaXJAJiRtYW5kaXImZw0KKyAgcyZcXFwke2RhdGFyb290ZGly fSYkZGF0YXJvb3RkaXImZycgOzsNCitlc2FjDQorX0FDRU9GDQorDQorIyBOZXV0cmFsaXplIFZQ QVRIIHdoZW4gYCRzcmNkaXInID0gYC4nLg0KKyMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMg bWlnaHQgc2V0IGV4dHJhc3ViLg0KKyMgRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50 YWluIHRoaXMgZmVhdHVyZT8NCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193 cml0ZV9mYWlsPTENCithY19zZWRfZXh0cmE9IiRhY192cHN1Yg0KKyRleHRyYXN1Yg0KK19BQ0VP Rg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCis6 dA0KKy9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWINCitzfEBjb25maWd1cmVfaW5wdXRAfCRh Y19zZWRfY29uZl9pbnB1dHw7dCB0DQorcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGly X3N1YiY7dCB0DQorcyZAdG9wX2J1aWxkX3ByZWZpeEAmJGFjX3RvcF9idWlsZF9wcmVmaXgmO3Qg dA0KK3MmQHNyY2RpckAmJGFjX3NyY2RpciY7dCB0DQorcyZAYWJzX3NyY2RpckAmJGFjX2Fic19z cmNkaXImO3QgdA0KK3MmQHRvcF9zcmNkaXJAJiRhY190b3Bfc3JjZGlyJjt0IHQNCitzJkBhYnNf dG9wX3NyY2RpckAmJGFjX2Fic190b3Bfc3JjZGlyJjt0IHQNCitzJkBidWlsZGRpckAmJGFjX2J1 aWxkZGlyJjt0IHQNCitzJkBhYnNfYnVpbGRkaXJAJiRhY19hYnNfYnVpbGRkaXImO3QgdA0KK3Mm QGFic190b3BfYnVpbGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGlyJjt0IHQNCitzJkBJTlNUQUxM QCYkYWNfSU5TVEFMTCY7dCB0DQorcyZATUtESVJfUEAmJGFjX01LRElSX1AmO3QgdA0KKyRhY19k YXRhcm9vdGRpcl9oYWNrDQorIg0KK2V2YWwgc2VkIFwiXCRhY19zZWRfZXh0cmFcIiAiJGFjX2Zp bGVfaW5wdXRzIiB8ICRBV0sgLWYgIiRhY190bXAvc3Vicy5hd2siIFwNCisgID4kYWNfdG1wL291 dCB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8i IDUNCisNCit0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19kYXRhcm9vdGRpcl9zZWVu IiAmJg0KKyAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJGFjX3RtcC9v dXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0gJiYNCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkg XSpkYXRhcm9vdGRpclsJIF0qOio9L3AnIFwNCisgICAgICAiJGFjX3RtcC9vdXQiYDsgdGVzdCAt eiAiJGFjX291dCI7IH0gJiYNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlh YmxlIFxgZGF0YXJvb3RkaXInDQord2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNl IG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H OiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9v dGRpcicNCit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0 IGlzIGRlZmluZWQiID4mMjt9DQorDQorICBybSAtZiAiJGFjX3RtcC9zdGRpbiINCisgIGNhc2Ug JGFjX2ZpbGUgaW4NCisgIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291 dCI7Ow0KKyAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJGFjX3RtcC9vdXQiICIkYWNfZmls ZSI7Ow0KKyAgZXNhYyBcDQorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAk YWNfZmlsZSIgIiRMSU5FTk8iIDUNCisgOzsNCisNCisNCisgIDpDKSAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFuZHMiID4m NQ0KKyRhc19lY2hvICIkYXNfbWU6IGV4ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY2O30N CisgOzsNCisgIGVzYWMNCisNCisNCisgIGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbg0KKyAgICAi ZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IHsNCisgICMgQXV0b2Nv bmYgMi42MiBxdW90ZXMgLS1maWxlIGFyZ3VtZW50cyBmb3IgZXZhbCwgYnV0IG5vdCB3aGVuIGZp bGVzDQorICAjIGFyZSBsaXN0ZWQgd2l0aG91dCAtLWZpbGUuICBMZXQncyBwbGF5IHNhZmUgYW5k IG9ubHkgZW5hYmxlIHRoZSBldmFsDQorICAjIGlmIHdlIGRldGVjdCB0aGUgcXVvdGluZy4NCisg IGNhc2UgJENPTkZJR19GSUxFUyBpbg0KKyAgKlwnKikgZXZhbCBzZXQgeCAiJENPTkZJR19GSUxF UyIgOzsNCisgICopICAgc2V0IHggJENPTkZJR19GSUxFUyA7Ow0KKyAgZXNhYw0KKyAgc2hpZnQN CisgIGZvciBtZg0KKyAgZG8NCisgICAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUg bmFtZSBvZiB0aGUgZmlsZS4NCisgICAgbWY9YGVjaG8gIiRtZiIgfCBzZWQgLWUgJ3MvOi4qJC8v J2ANCisgICAgIyBDaGVjayB3aGV0aGVyIHRoaXMgaXMgYW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1h a2VmaWxlIG9yIG5vdC4NCisgICAgIyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5h bWVkIGBNYWtlZmlsZS5pbicsIGJ1dA0KKyAgICAjIHNvbWUgcGVvcGxlIHJlbmFtZSB0aGVtOyBz byBpbnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4NCisgICAgIyBHcmVwJ2luZyB0 aGUgZmlyc3QgbGluZSBpcyBub3QgZW5vdWdoOiBzb21lIHBlb3BsZSBwb3N0LXByb2Nlc3MNCisg ICAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBm aWxlIHRvIHNheSBzby4NCisgICAgIyBHcmVwJ2luZyB0aGUgd2hvbGUgZmlsZSBpcyBub3QgZ29v ZCBlaXRoZXI6IEFJWCBncmVwIGhhcyBhIGxpbmUNCisgICAgIyBsaW1pdCBvZiAyMDQ4LCBidXQg YWxsIHNlZCdzIHdlIGtub3cgaGF2ZSB1bmRlcnN0YW5kIGF0IGxlYXN0IDQwMDAuDQorICAgIGlm IHNlZCAtbiAncyxeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlLiosWCxwJyAiJG1mIiB8IGdyZXAg WCA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgICBkaXJwYXJ0PWAkYXNfZGlybmFtZSAtLSAi JG1mIiB8fA0KKyRhc19leHByIFgiJG1mIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcg XHwgXA0KKwkgWCIkbWYiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRtZiIgOiAnWFwoLy9c KSQnIFx8IFwNCisJIFgiJG1mIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNf ZWNobyBYIiRtZiIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQv ew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sN CisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAg cy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0K KwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgICAgZWxzZQ0KKyAgICAgIGNvbnRp bnVlDQorICAgIGZpDQorICAgICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBESVIsIGFt X19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlDQorICAgICMgZnJvbSB0aGUgTWFrZWZpbGUgd2l0aG91 dCBydW5uaW5nIGBtYWtlJy4NCisgICAgREVQRElSPWBzZWQgLW4gJ3MvXkRFUERJUiA9IC8vcCcg PCAiJG1mImANCisgICAgdGVzdCAteiAiJERFUERJUiIgJiYgY29udGludWUNCisgICAgYW1fX2lu Y2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUgPSAvL3AnIDwgIiRtZiJgDQorICAgIHRlc3Qg LXogImFtX19pbmNsdWRlIiAmJiBjb250aW51ZQ0KKyAgICBhbV9fcXVvdGU9YHNlZCAtbiAncy9e YW1fX3F1b3RlID0gLy9wJyA8ICIkbWYiYA0KKyAgICAjIFdoZW4gdXNpbmcgYW5zaTJrbnIsIFUg bWF5IGJlIGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4cGFuZCBpdA0KKyAgICBVPWBzZWQgLW4g J3MvXlUgPSAvL3AnIDwgIiRtZiJgDQorICAgICMgRmluZCBhbGwgZGVwZW5kZW5jeSBvdXRwdXQg ZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZpbGVzIHdpdGgNCisgICAgIyAkKERFUERJUikgaW4g dGhlaXIgbmFtZXMuICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2UgaXQgaXMgdGhlDQorICAg ICMgc2ltcGxlc3QgYXBwcm9hY2ggdG8gY2hhbmdpbmcgJChERVBESVIpIHRvIGl0cyBhY3R1YWwg dmFsdWUgaW4gdGhlDQorICAgICMgZXhwYW5zaW9uLg0KKyAgICBmb3IgZmlsZSBpbiBgc2VkIC1u ICINCisgICAgICBzL14kYW1fX2luY2x1ZGUgJGFtX19xdW90ZVwoLiooREVQRElSKS4qXCkkYW1f X3F1b3RlIickL1wxL3AnIDwiJG1mIiB8IFwNCisJIHNlZCAtZSAncy9cJChERVBESVIpLyciJERF UERJUiInL2cnIC1lICdzL1wkVS8nIiRVIicvZydgOyBkbw0KKyAgICAgICMgTWFrZSBzdXJlIHRo ZSBkaXJlY3RvcnkgZXhpc3RzLg0KKyAgICAgIHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAmJiBj b250aW51ZQ0KKyAgICAgIGZkaXI9YCRhc19kaXJuYW1lIC0tICIkZmlsZSIgfHwNCiskYXNfZXhw ciBYIiRmaWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkZmls ZSIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcDQor CSBYIiRmaWxlIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRm aWxlIiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAg cy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8N CisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBx DQorCSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgICAgIGFzX2Rpcj0kZGlycGFydC8kZmRpcjsg YXNfZm5fbWtkaXJfcA0KKyAgICAgICMgZWNobyAiY3JlYXRpbmcgJGRpcnBhcnQvJGZpbGUiDQor ICAgICAgZWNobyAnIyBkdW1teScgPiAiJGRpcnBhcnQvJGZpbGUiDQorICAgIGRvbmUNCisgIGRv bmUNCit9DQorIDs7DQorDQorICBlc2FjDQorZG9uZSAjIGZvciBhY190YWcNCisNCisNCithc19m bl9leGl0IDANCitfQUNFT0YNCithY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQ0K Kw0KK3Rlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8DQorICBhc19mbl9lcnJvciAkPyAid3JpdGUg ZmFpbHVyZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCisNCisNCisjIGNv bmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5z dGF0dXMuDQorIyBjb25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5k aW5nIHRvIGNvbmZpZy5sb2cuDQorIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywg YXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4NCisjIGJ5IGNvbmZpZ3VyZSwgc28gY29u ZmlnLnN0YXR1cyB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMNCisjIG91dHB1dCBp cyBzaW1wbHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLA0KKyMg ZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJl KW9wZW5lZCBhbmQNCisjIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWlu ZyBiYWNrIHRvIGNvbmZpZ3VyZSwgd2UNCisjIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxl IGFnYWluLg0KK2lmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbg0KKyAgYWNfY3Nfc3Vj Y2Vzcz06DQorICBhY19jb25maWdfc3RhdHVzX2FyZ3M9DQorICB0ZXN0ICIkc2lsZW50IiA9IHll cyAmJg0KKyAgICBhY19jb25maWdfc3RhdHVzX2FyZ3M9IiRhY19jb25maWdfc3RhdHVzX2FyZ3Mg LS1xdWlldCINCisgIGV4ZWMgNT4vZGV2L251bGwNCisgICRTSEVMTCAkQ09ORklHX1NUQVRVUyAk YWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UNCisgIGV4ZWMgNT4+ Y29uZmlnLmxvZw0KKyAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRo ZSBpZiB3aXRoICQ/ID0gMSwgd2hpY2gNCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBp ZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLg0KKyAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNf Zm5fZXhpdCAxDQorZmkNCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRl c3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbg0KKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9u czogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H OiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjI7fQ0KK2Zp DQorDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvY29uZmlndXJlLmlu IGIvbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvY29uZmlndXJlLmluDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi4wYWQ1ZGY1MWUNCi0tLSAvZGV2L251bGwNCisrKyBi L25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZS5pbg0KQEAgLTAsMCArMSwxNCBA QA0KK2RubCBUaGlzIGlzIHRoZSBuZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYSBjb25maWd1cmUu aW4gZmlsZS4NCitkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNl IGEgY29uZmlndXJlIHNjcmlwdC4NCisNCitBQ19QUkVSRVEoMi41OSkNCitBQ19JTklUKFtuZXds aWJdLFtORVdMSUJfVkVSU0lPTl0pDQorQUNfQ09ORklHX1NSQ0RJUihbTWFrZWZpbGUuYW1dKQ0K Kw0KK2RubCBDYW4ndCBiZSBkb25lIGluIE5FV0xJQl9DT05GSUdVUkUgYmVjYXVzZSB0aGF0IGNv bmZ1c2VzIGF1dG9tYWtlLg0KK0FDX0NPTkZJR19BVVhfRElSKC4uLy4uLy4uLy4uKQ0KKw0KK05F V0xJQl9DT05GSUdVUkUoLi4vLi4vLi4pDQorDQorQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0p DQorQUNfT1VUUFVUDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EvbWVt Y3B5LlMgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9tZW1jcHkuUw0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uN2NjOGVkMGZiDQotLS0gL2Rldi9udWxsDQorKysg Yi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9tZW1jcHkuUw0KQEAgLTAsMCArMSwyODkgQEAN CisvKiBBTlNJIEMgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbiBtZW1jcHkuDQorDQorICAgQ29w eXJpZ2h0IChjKSAyMDAyLTIwMDggVGVuc2lsaWNhIEluYy4NCisNCisgICBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcN CisgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUNCisgICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nDQorICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0KKyAgIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 bw0KKyAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0bw0KKyAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisNCisg ICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz aGFsbCBiZSBpbmNsdWRlZA0KKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlIFNvZnR3YXJlLg0KKw0KKyAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KKyAgIEVYUFJFU1MgT1IgSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0KKyAgIE1F UkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4NCisgICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQ0KKyAgIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsDQorICAgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUNCisgICBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4gICovDQorDQorI2luY2x1ZGUgInh0ZW5zYS1hc20uaCINCisNCisvKiBJZiB0aGUgWHRl bnNhIFVuYWxpZ25lZCBMb2FkIEV4Y2VwdGlvbiBvcHRpb24gaXMgbm90IHVzZWQsIHRoaXMNCisg ICBjb2RlIGNhbiBydW4gYSBmZXcgY3ljbGVzIGZhc3RlciBieSByZWx5aW5nIG9uIHRoZSBsb3cg YWRkcmVzcyBiaXRzDQorICAgYmVpbmcgaWdub3JlZC4gIEhvd2V2ZXIsIGlmIHRoZSBjb2RlIGlz IHRoZW4gcnVuIHdpdGggYW4gWHRlbnNhIElTUw0KKyAgIGNsaWVudCB0aGF0IGNoZWNrcyBmb3Ig dW5hbGlnbmVkIGFjY2Vzc2VzLCBpdCB3aWxsIHByb2R1Y2UgYSBsb3Qgb2YNCisgICB3YXJuaW5n IG1lc3NhZ2VzLiAgU2V0IHRoaXMgZmxhZyB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgdW5hbGlnbmVk DQorICAgYWNjZXNzZXMgYW5kIGtlZXAgdGhlIElTUyBoYXBweS4gICovDQorDQorI2lmIFhDSEFM X1VOQUxJR05FRF9MT0FEX0VYQ0VQVElPTiB8fCAxDQorI2RlZmluZSBVTkFMSUdORURfQUREUkVT U0VTX0NIRUNLRUQgMQ0KKyNlbmRpZg0KKw0KKw0KKy8qIHZvaWQgKm1lbWNweSAodm9pZCAqZHN0 LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBsZW4pDQorDQorICAgVGhlIGFsZ29yaXRobSBpcyBh cyBmb2xsb3dzOg0KKw0KKyAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyB1bmFsaWduZWQsIGFsaWdu IGl0IGJ5IGNvbmRpdGlvbmFsbHkNCisgICBjb3B5aW5nIDEtIGFuZC9vciAyLWJ5dGUgcGllY2Vz Lg0KKw0KKyAgIElmIHRoZSBzb3VyY2UgaXMgYWxpZ25lZCwgY29weSAxNiBieXRlcyB3aXRoIGEg bG9vcCwgYW5kIHRoZW4gZmluaXNoIHVwDQorICAgd2l0aCA4LCA0LCAyLCBhbmQgMS1ieXRlIGNv cGllcyBjb25kaXRpb25hbCBvbiB0aGUgbGVuZ3RoLg0KKw0KKyAgIEVsc2UgKGlmIHNvdXJjZSBp cyB1bmFsaWduZWQpLCBkbyB0aGUgc2FtZSwgYnV0IHVzZSBTUkMgdG8gYWxpZ24gdGhlDQorICAg c291cmNlIGRhdGEuDQorDQorICAgVGhpcyBjb2RlIHRyaWVzIHRvIHVzZSBmYWxsLXRocm91Z2gg YnJhbmNoZXMgZm9yIHRoZSBjb21tb24NCisgICBjYXNlIG9mIGFsaWduZWQgc291cmNlIGFuZCBk ZXN0aW5hdGlvbiBhbmQgbXVsdGlwbGUgb2YgNCAob3IgOCkgbGVuZ3RoLiAgKi8NCisNCisNCisv KiBCeXRlIGJ5IGJ5dGUgY29weS4gICovDQorDQorCS50ZXh0DQorCS5iZWdpbiBzY2hlZHVsZQ0K KwkuYWxpZ24JWENIQUxfSU5TVF9GRVRDSF9XSURUSA0KKwkubGl0ZXJhbF9wb3NpdGlvbg0KK19f bWVtY3B5X2F1eDoNCisNCisJLyogU2tpcCBieXRlcyB0byBnZXQgcHJvcGVyIGFsaWdubWVudCBm b3IgdGhyZWUtYnl0ZSBsb29wICovDQorLnNraXAgWENIQUxfSU5TVF9GRVRDSF9XSURUSCAtIDMN CisNCisuTGJ5dGVjb3B5Og0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorCWxvb3BuZXoJYTQsIDJm DQorI2Vsc2UNCisJYmVxeglhNCwgMmYNCisJYWRkCWE3LCBhMywgYTQJLy8gYTcgPSBlbmQgYWRk cmVzcyBmb3Igc291cmNlDQorI2VuZGlmDQorMToJbDh1aQlhNiwgYTMsIDANCisJYWRkaQlhMywg YTMsIDENCisJczhpCWE2LCBhNSwgMA0KKwlhZGRpCWE1LCBhNSwgMQ0KKyNpZiAhWENIQUxfSEFW RV9MT09QUw0KKwlibHR1CWEzLCBhNywgMWINCisjZW5kaWYNCisyOglsZWFmX3JldHVybg0KKw0K Kw0KKy8qIERlc3RpbmF0aW9uIGlzIHVuYWxpZ25lZC4gICovDQorDQorCS5hbGlnbgk0DQorLkxk c3QxbW9kMjogLy8gZHN0IGlzIG9ubHkgYnl0ZSBhbGlnbmVkDQorDQorCS8qIERvIHNob3J0IGNv cGllcyBieXRlLWJ5LWJ5dGUuICAqLw0KKwlibHR1aQlhNCwgNywgLkxieXRlY29weQ0KKw0KKwkv KiBDb3B5IDEgYnl0ZS4gICovDQorCWw4dWkJYTYsIGEzLCAwDQorCWFkZGkJYTMsIGEzLCAxDQor CWFkZGkJYTQsIGE0LCAtMQ0KKwlzOGkJYTYsIGE1LCAwDQorCWFkZGkJYTUsIGE1LCAxDQorDQor CS8qIFJldHVybiB0byBtYWluIGFsZ29yaXRobSBpZiBkc3QgaXMgbm93IGFsaWduZWQuICAqLw0K KwliYmNpLmwJYTUsIDEsIC5MZHN0YWxpZ25lZA0KKw0KKy5MZHN0Mm1vZDQ6IC8vIGRzdCBoYXMg MTYtYml0IGFsaWdubWVudA0KKw0KKwkvKiBEbyBzaG9ydCBjb3BpZXMgYnl0ZS1ieS1ieXRlLiAg Ki8NCisJYmx0dWkJYTQsIDYsIC5MYnl0ZWNvcHkNCisNCisJLyogQ29weSAyIGJ5dGVzLiAgKi8N CisJbDh1aQlhNiwgYTMsIDANCisJbDh1aQlhNywgYTMsIDENCisJYWRkaQlhMywgYTMsIDINCisJ YWRkaQlhNCwgYTQsIC0yDQorCXM4aQlhNiwgYTUsIDANCisJczhpCWE3LCBhNSwgMQ0KKwlhZGRp CWE1LCBhNSwgMg0KKw0KKwkvKiBkc3QgaXMgbm93IGFsaWduZWQ7IHJldHVybiB0byBtYWluIGFs Z29yaXRobS4gICovDQorCWoJLkxkc3RhbGlnbmVkDQorDQorDQorCS5hbGlnbgk0DQorCS5nbG9i YWwJbWVtY3B5DQorCS50eXBlCW1lbWNweSwgQGZ1bmN0aW9uDQorbWVtY3B5Og0KKwlsZWFmX2Vu dHJ5IHNwLCAxNg0KKwkvKiBhMiA9IGRzdCwgYTMgPSBzcmMsIGE0ID0gbGVuICovDQorDQorCW1v dglhNSwgYTIJCS8vIGNvcHkgZHN0IHNvIHRoYXQgYTIgaXMgcmV0dXJuIHZhbHVlDQorCWJic2ku bAlhMiwgMCwgLkxkc3QxbW9kMg0KKwliYnNpLmwJYTIsIDEsIC5MZHN0Mm1vZDQNCisuTGRzdGFs aWduZWQ6DQorDQorCS8qIEdldCBudW1iZXIgb2YgbG9vcCBpdGVyYXRpb25zIHdpdGggMTZCIHBl ciBpdGVyYXRpb24uICAqLw0KKwlzcmxpCWE3LCBhNCwgNA0KKw0KKwkvKiBDaGVjayBpZiBzb3Vy Y2UgaXMgYWxpZ25lZC4gICovDQorCXNsbGkgCWE4LCBhMywgMzANCisJYm5leglhOCwgLkxzcmN1 bmFsaWduZWQNCisNCisJLyogRGVzdGluYXRpb24gYW5kIHNvdXJjZSBhcmUgd29yZC1hbGlnbmVk LCB1c2Ugd29yZCBjb3B5LiAgKi8NCisjaWYgWENIQUxfSEFWRV9MT09QUw0KKwlsb29wbmV6CWE3 LCAyZg0KKyNlbHNlDQorCWJlcXoJYTcsIDJmDQorCXNsbGkJYTgsIGE3LCA0DQorCWFkZAlhOCwg YTgsIGEzCS8vIGE4ID0gZW5kIG9mIGxhc3QgMTZCIHNvdXJjZSBjaHVuaw0KKyNlbmRpZg0KKzE6 CWwzMmkJYTYsIGEzLCAwDQorCWwzMmkJYTcsIGEzLCA0DQorCXMzMmkJYTYsIGE1LCAwDQorCWwz MmkJYTYsIGEzLCA4DQorCXMzMmkJYTcsIGE1LCA0DQorCWwzMmkJYTcsIGEzLCAxMg0KKwlzMzJp CWE2LCBhNSwgOA0KKwlhZGRpCWEzLCBhMywgMTYNCisJczMyaQlhNywgYTUsIDEyDQorCWFkZGkJ YTUsIGE1LCAxNg0KKyNpZiAhWENIQUxfSEFWRV9MT09QUw0KKwlibHR1CWEzLCBhOCwgMWINCisj ZW5kaWYNCisNCisJLyogQ29weSBhbnkgbGVmdG92ZXIgcGllY2VzIHNtYWxsZXIgdGhhbiAxNkIu ICAqLw0KKzI6CWJiY2kubAlhNCwgMywgM2YNCisNCisJLyogQ29weSA4IGJ5dGVzLiAgKi8NCisJ bDMyaQlhNiwgYTMsIDANCisJbDMyaQlhNywgYTMsIDQNCisJYWRkaQlhMywgYTMsIDgNCisJczMy aQlhNiwgYTUsIDANCisJczMyaQlhNywgYTUsIDQNCisJYWRkaQlhNSwgYTUsIDgNCisNCiszOgli YnNpLmwJYTQsIDIsIDRmDQorCWJic2kubAlhNCwgMSwgNWYNCisJYmJzaS5sCWE0LCAwLCA2Zg0K KwlsZWFmX3JldHVybg0KKw0KKwkuYWxpZ24gNA0KKwkvKiBDb3B5IDQgYnl0ZXMuICAqLw0KKzQ6 CWwzMmkJYTYsIGEzLCAwDQorCWFkZGkJYTMsIGEzLCA0DQorCXMzMmkJYTYsIGE1LCAwDQorCWFk ZGkJYTUsIGE1LCA0DQorCWJic2kubAlhNCwgMSwgNWYNCisJYmJzaS5sCWE0LCAwLCA2Zg0KKwls ZWFmX3JldHVybg0KKw0KKwkvKiBDb3B5IDIgYnl0ZXMuICAqLw0KKzU6CWwxNnVpCWE2LCBhMywg MA0KKwlhZGRpCWEzLCBhMywgMg0KKwlzMTZpCWE2LCBhNSwgMA0KKwlhZGRpCWE1LCBhNSwgMg0K KwliYnNpLmwJYTQsIDAsIDZmDQorCWxlYWZfcmV0dXJuDQorDQorCS8qIENvcHkgMSBieXRlLiAg Ki8NCis2OglsOHVpCWE2LCBhMywgMA0KKwlzOGkJYTYsIGE1LCAwDQorDQorLkxkb25lOg0KKwls ZWFmX3JldHVybg0KKw0KKw0KKy8qIERlc3RpbmF0aW9uIGlzIGFsaWduZWQ7IHNvdXJjZSBpcyB1 bmFsaWduZWQuICAqLw0KKw0KKwkuYWxpZ24JNA0KKy5Mc3JjdW5hbGlnbmVkOg0KKwkvKiBBdm9p ZCBsb2FkaW5nIGFueXRoaW5nIGZvciB6ZXJvLWxlbmd0aCBjb3BpZXMuICAqLw0KKwliZXF6CWE0 LCAuTGRvbmUNCisNCisJLyogQ29weSAxNiBieXRlcyBwZXIgaXRlcmF0aW9uIGZvciB3b3JkLWFs aWduZWQgZHN0IGFuZA0KKwkgICB1bmFsaWduZWQgc3JjLiAgKi8NCisJc3NhOAlhMwkJLy8gc2V0 IHNoaWZ0IGFtb3VudCBmcm9tIGJ5dGUgb2Zmc2V0DQorI2lmIFVOQUxJR05FRF9BRERSRVNTRVNf Q0hFQ0tFRA0KKwlzcmxpICAgIGExMSwgYTgsIDMwICAgICAvLyBzYXZlIHVuYWxpZ25tZW50IG9m ZnNldCBmb3IgYmVsb3cNCisJc3ViCWEzLCBhMywgYTExCS8vIGFsaWduIGEzDQorI2VuZGlmDQor CWwzMmkJYTYsIGEzLCAwCS8vIGxvYWQgZmlyc3Qgd29yZA0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BT DQorCWxvb3BuZXoJYTcsIDJmDQorI2Vsc2UNCisJYmVxeglhNywgMmYNCisJc2xsaQlhMTAsIGE3 LCA0DQorCWFkZAlhMTAsIGExMCwgYTMJLy8gYTEwID0gZW5kIG9mIGxhc3QgMTZCIHNvdXJjZSBj aHVuaw0KKyNlbmRpZg0KKzE6CWwzMmkJYTcsIGEzLCA0DQorCWwzMmkJYTgsIGEzLCA4DQorCXNy Y19iCWE2LCBhNiwgYTcNCisJczMyaQlhNiwgYTUsIDANCisJbDMyaQlhOSwgYTMsIDEyDQorCXNy Y19iCWE3LCBhNywgYTgNCisJczMyaQlhNywgYTUsIDQNCisJbDMyaQlhNiwgYTMsIDE2DQorCXNy Y19iCWE4LCBhOCwgYTkNCisJczMyaQlhOCwgYTUsIDgNCisJYWRkaQlhMywgYTMsIDE2DQorCXNy Y19iCWE5LCBhOSwgYTYNCisJczMyaQlhOSwgYTUsIDEyDQorCWFkZGkJYTUsIGE1LCAxNg0KKyNp ZiAhWENIQUxfSEFWRV9MT09QUw0KKwlibHR1CWEzLCBhMTAsIDFiDQorI2VuZGlmDQorDQorMjoJ YmJjaS5sCWE0LCAzLCAzZg0KKw0KKwkvKiBDb3B5IDggYnl0ZXMuICAqLw0KKwlsMzJpCWE3LCBh MywgNA0KKwlsMzJpCWE4LCBhMywgOA0KKwlzcmNfYglhNiwgYTYsIGE3DQorCXMzMmkJYTYsIGE1 LCAwDQorCWFkZGkJYTMsIGEzLCA4DQorCXNyY19iCWE3LCBhNywgYTgNCisJczMyaQlhNywgYTUs IDQNCisJYWRkaQlhNSwgYTUsIDgNCisJbW92CWE2LCBhOA0KKw0KKzM6CWJiY2kubAlhNCwgMiwg NGYNCisNCisJLyogQ29weSA0IGJ5dGVzLiAgKi8NCisJbDMyaQlhNywgYTMsIDQNCisJYWRkaQlh MywgYTMsIDQNCisJc3JjX2IJYTYsIGE2LCBhNw0KKwlzMzJpCWE2LCBhNSwgMA0KKwlhZGRpCWE1 LCBhNSwgNA0KKwltb3YJYTYsIGE3DQorNDoNCisjaWYgVU5BTElHTkVEX0FERFJFU1NFU19DSEVD S0VEDQorCWFkZAlhMywgYTMsIGExMQkvLyByZWFkanVzdCBhMyB3aXRoIGNvcnJlY3QgbWlzYWxp Z25tZW50DQorI2VuZGlmDQorCWJic2kubAlhNCwgMSwgNWYNCisJYmJzaS5sCWE0LCAwLCA2Zg0K KwlsZWFmX3JldHVybg0KKw0KKwkvKiBDb3B5IDIgYnl0ZXMuICAqLw0KKzU6CWw4dWkJYTYsIGEz LCAwDQorCWw4dWkJYTcsIGEzLCAxDQorCWFkZGkJYTMsIGEzLCAyDQorCXM4aQlhNiwgYTUsIDAN CisJczhpCWE3LCBhNSwgMQ0KKwlhZGRpCWE1LCBhNSwgMg0KKwliYnNpLmwJYTQsIDAsIDZmDQor CWxlYWZfcmV0dXJuDQorDQorCS8qIENvcHkgMSBieXRlLiAgKi8NCis2OglsOHVpCWE2LCBhMywg MA0KKwlzOGkJYTYsIGE1LCAwDQorCWxlYWZfcmV0dXJuDQorDQorCS5lbmQgc2NoZWR1bGUNCisN CisJLnNpemUJbWVtY3B5LCAuIC0gbWVtY3B5DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvbWFj aGluZS94dGVuc2EvbWVtc2V0LlMgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9tZW1zZXQu Uw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uZGJmYmUxYTBjDQotLS0g L2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9tZW1zZXQuUw0KQEAg LTAsMCArMSwxNzAgQEANCisvKiBBTlNJIEMgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbiBtZW1z ZXQuDQorDQorICAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDggVGVuc2lsaWNhIEluYy4NCisNCisg ICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcNCisgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUNCisgICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nDQorICAgd2l0aG91dCBs aW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LA0KKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0bw0KKyAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bw0KKyAgIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoNCisNCisgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZA0KKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KKw0KKyAgIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KKyAgIEVY UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRg0KKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4NCisgICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQ0KKyAgIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsDQorICAgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUNCisgICBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4gICovDQorDQorI2luY2x1ZGUgInh0ZW5zYS1hc20uaCINCisN CisvKiB2b2lkICptZW1zZXQgKHZvaWQgKmRzdCwgaW50IGMsIHNpemVfdCBsZW5ndGgpDQorDQor ICAgVGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOg0KKw0KKyAgIENyZWF0ZSBhIHdvcmQgd2l0 aCBjIGluIGFsbCBieXRlIHBvc2l0aW9ucy4NCisNCisgICBJZiB0aGUgZGVzdGluYXRpb24gaXMg YWxpZ25lZCwgc2V0IDE2QiBjaHVua3Mgd2l0aCBhIGxvb3AsIGFuZCB0aGVuDQorICAgZmluaXNo IHVwIHdpdGggOEIsIDRCLCAyQiwgYW5kIDFCIHN0b3JlcyBjb25kaXRpb25hbCBvbiB0aGUgbGVu Z3RoLg0KKw0KKyAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyB1bmFsaWduZWQsIGFsaWduIGl0IGJ5 IGNvbmRpdGlvbmFsbHkNCisgICBzZXR0aW5nIDFCIGFuZC9vciAyQiBhbmQgdGhlbiBnbyB0byBh bGlnbmVkIGNhc2UuDQorDQorICAgVGhpcyBjb2RlIHRyaWVzIHRvIHVzZSBmYWxsLXRocm91Z2gg YnJhbmNoZXMgZm9yIHRoZSBjb21tb24NCisgICBjYXNlIG9mIGFuIGFsaWduZWQgZGVzdGluYXRp b24gKGV4Y2VwdCBmb3IgdGhlIGJyYW5jaGVzIHRvDQorICAgdGhlIGFsaWdubWVudCBsYWJlbHMp LiAgKi8NCisNCisNCisvKiBCeXRlLWJ5LWJ5dGUgc2V0LiAgKi8NCisNCisJLnRleHQNCisJLmJl Z2luIHNjaGVkdWxlDQorCS5hbGlnbglYQ0hBTF9JTlNUX0ZFVENIX1dJRFRIDQorCS5saXRlcmFs X3Bvc2l0aW9uDQorX19tZW1zZXRfYXV4Og0KKw0KKwkvKiBTa2lwIGJ5dGVzIHRvIGdldCBwcm9w ZXIgYWxpZ25tZW50IGZvciB0aHJlZS1ieXRlIGxvb3AgKi8NCisuc2tpcCBYQ0hBTF9JTlNUX0ZF VENIX1dJRFRIIC0gMw0KKw0KKy5MYnl0ZXNldDoNCisjaWYgWENIQUxfSEFWRV9MT09QUw0KKwls b29wbmV6CWE0LCAyZg0KKyNlbHNlDQorCWJlcXoJYTQsIDJmDQorCWFkZAlhNiwgYTUsIGE0CS8v IGE2ID0gZW5kaW5nIGFkZHJlc3MNCisjZW5kaWYNCisxOglzOGkJYTMsIGE1LCAwDQorCWFkZGkJ YTUsIGE1LCAxDQorI2lmICFYQ0hBTF9IQVZFX0xPT1BTDQorCWJsdHUJYTUsIGE2LCAxYg0KKyNl bmRpZg0KKzI6CWxlYWZfcmV0dXJuDQorDQorDQorLyogRGVzdGluYXRpb24gaXMgdW5hbGlnbmVk LiAgKi8NCisNCisJLmFsaWduCTQNCisNCisuTGRzdDFtb2QyOiAvLyBkc3QgaXMgb25seSBieXRl IGFsaWduZWQNCisNCisJLyogRG8gc2hvcnQgc2l6ZXMgYnl0ZS1ieS1ieXRlLiAgKi8NCisJYmx0 dWkJYTQsIDgsIC5MYnl0ZXNldA0KKw0KKwkvKiBTZXQgMSBieXRlLiAgKi8NCisJczhpCWEzLCBh NSwgMA0KKwlhZGRpCWE1LCBhNSwgMQ0KKwlhZGRpCWE0LCBhNCwgLTENCisNCisJLyogTm93IHJl dGVzdCBpZiBkc3QgaXMgYWxpZ25lZC4gICovDQorCV9iYmNpLmwJYTUsIDEsIC5MZHN0YWxpZ25l ZA0KKw0KKy5MZHN0Mm1vZDQ6IC8vIGRzdCBoYXMgMTYtYml0IGFsaWdubWVudA0KKw0KKwkvKiBE byBzaG9ydCBzaXplcyBieXRlLWJ5LWJ5dGUuICAqLw0KKwlibHR1aQlhNCwgOCwgLkxieXRlc2V0 DQorDQorCS8qIFNldCAyIGJ5dGVzLiAgKi8NCisJczE2aQlhMywgYTUsIDANCisJYWRkaQlhNSwg YTUsIDINCisJYWRkaQlhNCwgYTQsIC0yDQorDQorCS8qIGRzdCBpcyBub3cgYWxpZ25lZDsgcmV0 dXJuIHRvIG1haW4gYWxnb3JpdGhtICovDQorCWoJLkxkc3RhbGlnbmVkDQorDQorDQorCS5hbGln bgk0DQorCS5nbG9iYWwJbWVtc2V0DQorCS50eXBlCW1lbXNldCwgQGZ1bmN0aW9uDQorbWVtc2V0 Og0KKwlsZWFmX2VudHJ5IHNwLCAxNg0KKwkvKiBhMiA9IGRzdCwgYTMgPSBjLCBhNCA9IGxlbmd0 aCAqLw0KKw0KKwkvKiBEdXBsaWNhdGUgY2hhcmFjdGVyIGludG8gYWxsIGJ5dGVzIG9mIHdvcmQu ICAqLw0KKwlleHR1aQlhMywgYTMsIDAsIDgNCisJc2xsaQlhNywgYTMsIDgNCisJb3IJYTMsIGEz LCBhNw0KKwlzbGxpCWE3LCBhMywgMTYNCisJb3IJYTMsIGEzLCBhNw0KKw0KKwltb3YJYTUsIGEy CQkvLyBjb3B5IGRzdCBzbyB0aGF0IGEyIGlzIHJldHVybiB2YWx1ZQ0KKw0KKwkvKiBDaGVjayBp ZiBkc3QgaXMgdW5hbGlnbmVkLiAgKi8NCisJX2Jic2kubAlhMiwgMCwgLkxkc3QxbW9kMg0KKwlf YmJzaS5sCWEyLCAxLCAuTGRzdDJtb2Q0DQorLkxkc3RhbGlnbmVkOg0KKw0KKwkvKiBHZXQgbnVt YmVyIG9mIGxvb3AgaXRlcmF0aW9ucyB3aXRoIDE2QiBwZXIgaXRlcmF0aW9uLiAgKi8NCisJc3Js aQlhNywgYTQsIDQNCisNCisJLyogRGVzdGluYXRpb24gaXMgd29yZC1hbGlnbmVkLiAgKi8NCisj aWYgWENIQUxfSEFWRV9MT09QUw0KKwlsb29wbmV6CWE3LCAyZg0KKyNlbHNlDQorCWJlcXoJYTcs IDJmDQorCXNsbGkJYTYsIGE3LCA0DQorCWFkZAlhNiwgYTYsIGE1CS8vIGE2ID0gZW5kIG9mIGxh c3QgMTZCIGNodW5rDQorI2VuZGlmDQorCS8qIFNldCAxNiBieXRlcyBwZXIgaXRlcmF0aW9uLiAg Ki8NCisxOglzMzJpCWEzLCBhNSwgMA0KKwlzMzJpCWEzLCBhNSwgNA0KKwlzMzJpCWEzLCBhNSwg OA0KKwlzMzJpCWEzLCBhNSwgMTINCisJYWRkaQlhNSwgYTUsIDE2DQorI2lmICFYQ0hBTF9IQVZF X0xPT1BTDQorCWJsdHUJYTUsIGE2LCAxYg0KKyNlbmRpZg0KKw0KKwkvKiBTZXQgYW55IGxlZnRv dmVyIHBpZWNlcyBzbWFsbGVyIHRoYW4gMTZCLiAgKi8NCisyOgliYmNpLmwJYTQsIDMsIDNmDQor DQorCS8qIFNldCA4IGJ5dGVzLiAgKi8NCisJczMyaQlhMywgYTUsIDANCisJczMyaQlhMywgYTUs IDQNCisJYWRkaQlhNSwgYTUsIDgNCisNCiszOgliYmNpLmwJYTQsIDIsIDRmDQorDQorCS8qIFNl dCA0IGJ5dGVzLiAgKi8NCisJczMyaQlhMywgYTUsIDANCisJYWRkaQlhNSwgYTUsIDQNCisNCis0 OgliYmNpLmwJYTQsIDEsIDVmDQorDQorCS8qIFNldCAyIGJ5dGVzLiAgKi8NCisJczE2aQlhMywg YTUsIDANCisJYWRkaQlhNSwgYTUsIDINCisNCis1OgliYmNpLmwJYTQsIDAsIDZmDQorDQorCS8q IFNldCAxIGJ5dGUuICAqLw0KKwlzOGkJYTMsIGE1LCAwDQorNjoJbGVhZl9yZXR1cm4NCisNCisJ LmVuZCBzY2hlZHVsZQ0KKw0KKwkuc2l6ZQltZW1zZXQsIC4gLSBtZW1zZXQNCmRpZmYgLS1naXQg YS9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9zZXRqbXAuUyBiL25ld2xpYi9saWJjL21hY2hp bmUveHRlbnNhL3NldGptcC5TDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAw Li5hYzUwMTJkYzYNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJjL21hY2hpbmUveHRl bnNhL3NldGptcC5TDQpAQCAtMCwwICsxLDI2MCBAQA0KKy8qIHNldGptcC9sb25nam1wIGZ1bmN0 aW9ucyBmb3IgWHRlbnNhLg0KKw0KKyAgIENvcHlyaWdodCAoYykgMjAwMS0yMDA2IGJ5IFRlbnNp bGljYSBJbmMuDQorDQorICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQorICAgYSBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQorICAgIlNvZnR3YXJl IiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu Zw0KKyAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwNCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8NCisgICBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8NCisgICB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorDQorICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQNCisgICBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisNCisg ICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwNCisgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuDQorICAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkNCisgICBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULA0KKyAgIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFDQorICAgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLw0KKw0KKy8qIFdpbmRvd2Vk IEFCSToNCisNCisgICBUaGlzIGltcGxlbWVudGF0aW9uIHJlbGllcyBoZWF2aWx5IG9uIHRoZSBY dGVuc2EgcmVnaXN0ZXIgd2luZG93DQorICAgbWVjaGFuaXNtLiAgU2V0am1wIGZsdXNoZXMgYWxs IHRoZSB3aW5kb3dzIGV4Y2VwdCBpdHMgb3duIHRvIHRoZQ0KKyAgIHN0YWNrIGFuZCB0aGVuIGNv cGllcyByZWdpc3RlcnMgZnJvbSB0aGUgc2F2ZSBhcmVhcyBvbiB0aGUgc3RhY2sNCisgICBpbnRv IHRoZSBqbXBfYnVmIHN0cnVjdHVyZSwgYWxvbmcgd2l0aCB0aGUgcmV0dXJuIGFkZHJlc3Mgb2Yg dGhlIGNhbGwNCisgICB0byBzZXRqbXAuICBMb25nam1wIGludmFsaWRhdGVzIGFsbCB0aGUgd2lu ZG93cyBleGNlcHQgaXRzIG93biwgYW5kDQorICAgdGhlbiBzZXRzIHRoaW5ncyB1cCBzbyB0aGF0 IGl0IHdpbGwgcmV0dXJuIHRvIHRoZSByaWdodCBwbGFjZSwNCisgICB1c2luZyBhIHdpbmRvdyB1 bmRlcmZsb3cgdG8gYXV0b21hdGljYWxseSByZXN0b3JlIHRoZSByZWdpc3RlcnMuDQorDQorICAg Tm90ZSB0aGF0IGl0IHdvdWxkIHByb2JhYmx5IGJlIHN1ZmZpY2llbnQgdG8gb25seSBjb3B5IHRo ZQ0KKyAgIHJlZ2lzdGVycyBmcm9tIHNldGptcCdzIGNhbGxlciBpbnRvIGptcF9idWYuICBIb3dl dmVyLCB3ZSBhbHNvIGNvcHkNCisgICB0aGUgc2F2ZSBhcmVhIGxvY2F0ZWQgYXQgdGhlIHN0YWNr IHBvaW50ZXIgb2Ygc2V0am1wJ3MgY2FsbGVyLg0KKyAgIFRoaXMgc2F2ZSBhcmVhIHdpbGwgdHlw aWNhbGx5IHJlbWFpbiBpbnRhY3QgdW50aWwgdGhlIGxvbmdqbXAgY2FsbC4NCisgICBUaGUgb25l IGV4Y2VwdGlvbiBpcyB3aGVuIHRoZXJlIGlzIGFuIGludGVydmVuaW5nIGFsbG9jYSBpbg0KKyAg IHNldGptcCdzIGNhbGxlci4gIFRoaXMgaXMgY2VydGFpbmx5IGFuIHVudXN1YWwgc2l0dWF0aW9u IGFuZCBpcw0KKyAgIGxpa2VseSB0byBjYXVzZSBwcm9ibGVtcyBpbiBhbnkgY2FzZSAodGhlIHN0 b3JhZ2UgYWxsb2NhdGVkIG9uIHRoZQ0KKyAgIHN0YWNrIGNhbm5vdCBiZSBzYWZlbHkgYWNjZXNz ZWQgZm9sbG93aW5nIHRoZSBsb25nam1wKS4gIEFzIGJhZCBhcw0KKyAgIGl0IGlzLCBvbiBtb3N0 IHN5c3RlbXMgdGhpcyBzaXR1YXRpb24gd291bGQgbm90IG5lY2Vzc2FyaWx5IGxlYWQgdG8NCisg ICBhIGNhdGFzdHJvcGhpYyBmYWlsdXJlLiAgSWYgd2UgZGlkIG5vdCBwcmVzZXJ2ZSB0aGUgZXh0 cmEgc2F2ZSBhcmVhDQorICAgb24gWHRlbnNhLCBob3dldmVyLCBpdCB3b3VsZC4gIFdoZW4gc2V0 am1wJ3MgY2FsbGVyIHJldHVybnMgYWZ0ZXIgYQ0KKyAgIGxvbmdqbXAsIHRoZXJlIHdpbGwgYmUg YSB3aW5kb3cgdW5kZXJmbG93OyBhbiBpbnZhbGlkIHJldHVybg0KKyAgIGFkZHJlc3Mgb3Igc3Rh Y2sgcG9pbnRlciBpbiB0aGUgc2F2ZSBhcmVhIHdpbGwgYWxtb3N0IGNlcnRhaW5seQ0KKyAgIGxl YWQgdG8gYSBjcmFzaC4gIEtlZXBpbmcgYSBjb3B5IG9mIHRoZSBleHRyYSBzYXZlIGFyZWEgaW4g dGhlDQorICAgam1wX2J1ZiBhdm9pZHMgdGhpcyB3aXRoIG9ubHkgYSBzbWFsbCBhZGRpdGlvbmFs IGNvc3QuICBJZiBzZXRqbXANCisgICBhbmQgbG9uZ2ptcCBhcmUgZXZlciB0aW1lLWNyaXRpY2Fs LCB0aGlzIGNvdWxkIGJlIHJlbW92ZWQuDQorDQorDQorICAgQ2FsbDAgQUJJOg0KKw0KKyAgIE11 Y2ggbGlrZSBvdGhlciBBQklzLCB0aGlzIHZlcnNpb24ganVzdCBzYXZlcyB0aGUgbmVjZXNzYXJ5 IHJlZ2lzdGVycw0KKyAgIHRvIHRoZSBzdGFjayBhbmQgcmVzdG9yZXMgdGhlbSBsYXRlci4gIE11 Y2ggbGVzcyBuZWVkcyB0byBiZSBkb25lLiAgKi8NCisNCisjaW5jbHVkZSAieHRlbnNhLWFzbS5o Ig0KKw0KKyNkZWZpbmUgU1lTX25vcAkwDQorDQorDQorI2lmIFhDSEFMX0hBVkVfV0lORE9XRUQg JiYgIV9fWFRFTlNBX0NBTEwwX0FCSV9fDQorDQorLyogaW50IHNldGptcCAoam1wX2J1ZiBlbnYp ICovDQorDQorCS50ZXh0DQorCS5hbGlnbgk0DQorCS5saXRlcmFsX3Bvc2l0aW9uDQorCS5nbG9i YWwJc2V0am1wDQorCS50eXBlCXNldGptcCwgQGZ1bmN0aW9uDQorc2V0am1wOg0KKwllbnRyeQlz cCwgMTYNCisNCisJLyogRmx1c2ggcmVnaXN0ZXJzLiAgKi8NCisJbW92CWE0LCBhMgkJCS8vIHNh dmUgYTIgKGptcF9idWYpDQorCW1vdmkJYTIsIFNZU19ub3ANCisJc3lzY2FsbA0KKwltb3YJYTIs IGE0CQkJLy8gcmVzdG9yZSBhMg0KKw0KKwkvKiBDb3B5IHRoZSByZWdpc3RlciBzYXZlIGFyZWEg YXQgKHNwIC0gMTYpLiAgKi8NCisJYWRkaQlhNSwgYTEsIC0xNg0KKwlsMzJpCWEzLCBhNSwgMA0K KwlsMzJpCWE0LCBhNSwgNA0KKwlzMzJpCWEzLCBhMiwgMA0KKwlzMzJpCWE0LCBhMiwgNA0KKwls MzJpCWEzLCBhNSwgOA0KKwlsMzJpCWE0LCBhNSwgMTINCisJczMyaQlhMywgYTIsIDgNCisJczMy aQlhNCwgYTIsIDEyDQorDQorCS8qIENvcHkgMC04IHdvcmRzIGZyb20gdGhlIHJlZ2lzdGVyIG92 ZXJmbG93IGFyZWEuICAqLw0KKwlleHR1aQlhMywgYTAsIDMwLCAyDQorCWJsdGkJYTMsIDIsIC5M ZW5kc2oNCisJbDMyaQlhNywgYTEsIDQNCisJc2xsaQlhNCwgYTMsIDQNCisJc3ViCWE1LCBhNywg YTQNCisJYWRkaQlhNiwgYTIsIDE2DQorCWFkZGkJYTcsIGE3LCAtMTYJCS8vIGE3ID0gZW5kIG9m IHJlZ2lzdGVyIG92ZXJmbG93IGFyZWENCisuTHNqbG9vcDoNCisJbDMyaQlhMywgYTUsIDANCisJ bDMyaQlhNCwgYTUsIDQNCisJczMyaQlhMywgYTYsIDANCisJczMyaQlhNCwgYTYsIDQNCisJbDMy aQlhMywgYTUsIDgNCisJbDMyaQlhNCwgYTUsIDEyDQorCXMzMmkJYTMsIGE2LCA4DQorCXMzMmkJ YTQsIGE2LCAxMg0KKwlhZGRpCWE1LCBhNSwgMTYNCisJYWRkaQlhNiwgYTYsIDE2DQorCWJsdAlh NSwgYTcsIC5Mc2psb29wDQorLkxlbmRzajoNCisNCisJLyogQ29weSB0aGUgcmVnaXN0ZXIgc2F2 ZSBhcmVhIGF0IHNwLiAgKi8NCisJbDMyaQlhMywgYTEsIDANCisJbDMyaQlhNCwgYTEsIDQNCisJ czMyaQlhMywgYTIsIDQ4DQorCXMzMmkJYTQsIGEyLCA1Mg0KKwlsMzJpCWEzLCBhMSwgOA0KKwls MzJpCWE0LCBhMSwgMTINCisJczMyaQlhMywgYTIsIDU2DQorCXMzMmkJYTQsIGEyLCA2MA0KKw0K KwkvKiBTYXZlIHRoZSByZXR1cm4gYWRkcmVzcywgaW5jbHVkaW5nIHRoZSB3aW5kb3cgc2l6ZSBi aXRzLiAgKi8NCisJczMyaQlhMCwgYTIsIDY0DQorDQorCW1vdmkJYTIsIDANCisJcmV0dw0KKwku c2l6ZQlzZXRqbXAsIC4gLSBzZXRqbXANCisNCisNCisvKiB2b2lkIGxvbmdqbXAgKGptcF9idWYg ZW52LCBpbnQgdmFsKSAqLw0KKw0KKwkuYWxpZ24JNA0KKwkubGl0ZXJhbF9wb3NpdGlvbg0KKwku Z2xvYmFsCWxvbmdqbXANCisJLnR5cGUJbG9uZ2ptcCwgQGZ1bmN0aW9uDQorbG9uZ2ptcDoNCisJ ZW50cnkJc3AsIDE2DQorCS8qICBhMiA9PSAmZW52LCBhMyA9PSB2YWwgICovDQorDQorI2lmIFhD SEFMX01BWUhBVkVfRVJSQVRVTV9YRUExS1dJTg0KKyAgLyogVXNpbmcgdGhpcyByZWdpc3RlciB0 cmlnZ2VycyBlYXJseSBhbnkgb3ZlcmZsb3cgdGhhdCBhIGtlcm5lbC1tb2RlDQorICAgICBsZXZl bC1vbmUgaW50ZXJydXB0IG1pZ2h0IG90aGVyd2lzZSBjYXVzZS4gICovDQorIyBkZWZpbmUgQVJf V0IJYTE1DQorI2Vsc2UNCisgIC8qIFVzaW5nIHRoaXMgcmVnaXN0ZXIgaXMgbW9yZSBlZmZpY2ll bnQ7IGl0IHRyaWdnZXJzIGxlc3Mgb3ZlcmZsb3dzLiAgKi8NCisjIGRlZmluZSBBUl9XQglhNQ0K KyNlbmRpZg0KKwkvKiBJbnZhbGlkYXRlIGFsbCBidXQgdGhlIGN1cnJlbnQgd2luZG93Ow0KKwkg ICBzZXQgV2luZG93U3RhcnQgdG8gKDEgPDwgV2luZG93QmFzZSkuICAqLw0KKwlyc3IJQVJfV0Is IFdJTkRPV0JBU0UNCisJbW92aQlhNCwgMQ0KKwlzc2wJQVJfV0INCisJc2xsCWE0LCBhNA0KKwl3 c3IJYTQsIFdJTkRPV1NUQVJUDQorCXJzeW5jDQorDQorCS8qIFJldHVybiB0byB0aGUgcmV0dXJu IGFkZHJlc3Mgb2YgdGhlIHNldGptcCwgdXNpbmcgdGhlDQorCSAgIHdpbmRvdyBzaXplIGJpdHMg ZnJvbSB0aGUgc2V0am1wIGNhbGwgc28gdGhhdCB0aGUgY2FsbGVyDQorCSAgIHdpbGwgYmUgYWJs ZSB0byBmaW5kIHRoZSByZXR1cm4gdmFsdWUgdGhhdCB3ZSBwdXQgaW4gYTIuICAqLw0KKw0KKwls MzJpCWEwLCBhMiwgNjQNCisNCisJLyogQ29weSB0aGUgZmlyc3QgNCBzYXZlZCByZWdpc3RlcnMg ZnJvbSBqbXBfYnVmIGludG8gdGhlIHNhdmUgYXJlYQ0KKwkgICBhdCB0aGUgY3VycmVudCBzcCBz byB0aGF0IHRoZSB2YWx1ZXMgd2lsbCBiZSByZXN0b3JlZCB0byByZWdpc3RlcnMNCisJICAgd2hl biBsb25nam1wIHJldHVybnMuICAqLw0KKw0KKwlhZGRpCWE3LCBhMSwgLTE2DQorCWwzMmkJYTQs IGEyLCAwDQorCWwzMmkJYTUsIGEyLCA0DQorCXMzMmkJYTQsIGE3LCAwDQorCXMzMmkJYTUsIGE3 LCA0DQorCWwzMmkJYTQsIGEyLCA4DQorCWwzMmkJYTUsIGEyLCAxMg0KKwlzMzJpCWE0LCBhNywg OA0KKwlzMzJpCWE1LCBhNywgMTINCisNCisJLyogQ29weSB0aGUgcmVtYWluaW5nIDAtOCBzYXZl ZCByZWdpc3RlcnMuICAqLw0KKwlleHR1aQlhNywgYTAsIDMwLCAyDQorCWJsdGkJYTcsIDIsIC5M ZW5kbGoNCisJbDMyaQlhOCwgYTIsIDUyDQorCXNsbGkJYTQsIGE3LCA0DQorCXN1YglhNiwgYTgs IGE0DQorCWFkZGkJYTUsIGEyLCAxNg0KKwlhZGRpCWE4LCBhOCwgLTE2CQkvLyBhOCA9IGVuZCBv ZiByZWdpc3RlciBvdmVyZmxvdyBhcmVhDQorLkxsamxvb3A6DQorCWwzMmkJYTcsIGE1LCAwDQor CWwzMmkJYTQsIGE1LCA0DQorCXMzMmkJYTcsIGE2LCAwDQorCXMzMmkJYTQsIGE2LCA0DQorCWwz MmkJYTcsIGE1LCA4DQorCWwzMmkJYTQsIGE1LCAxMg0KKwlzMzJpCWE3LCBhNiwgOA0KKwlzMzJp CWE0LCBhNiwgMTINCisJYWRkaQlhNSwgYTUsIDE2DQorCWFkZGkJYTYsIGE2LCAxNg0KKwlibHQJ YTYsIGE4LCAuTGxqbG9vcA0KKy5MZW5kbGo6DQorDQorCS8qIFRoZSA0IHdvcmRzIHNhdmVkIGZy b20gdGhlIHJlZ2lzdGVyIHNhdmUgYXJlYSBhdCB0aGUgdGFyZ2V0J3MNCisJICAgc3AgYXJlIGNv cGllZCBiYWNrIHRvIHRoZSB0YXJnZXQgcHJvY2VkdXJlJ3Mgc2F2ZSBhcmVhLiAgVGhlDQorCSAg IG9ubHkgcG9pbnQgb2YgdGhpcyBpcyB0byBwcmV2ZW50IGEgY2F0YXN0cm9waGljIGZhaWx1cmUg aW4NCisJICAgY2FzZSB0aGUgY29udGVudHMgd2VyZSBtb3ZlZCBieSBhbiBhbGxvY2EgYWZ0ZXIg Y2FsbGluZw0KKwkgICBzZXRqbXAuICBUaGlzIGlzIGEgYml0IHBhcmFub2lkIGJ1dCBpdCBkb2Vz bid0IGNvc3QgbXVjaC4gICovDQorDQorCWwzMmkJYTcsIGEyLCA0CQkvLyBsb2FkIHRoZSB0YXJn ZXQgc3RhY2sgcG9pbnRlcg0KKwlhZGRpCWE3LCBhNywgLTE2CQkvLyBmaW5kIHRoZSBkZXN0aW5h dGlvbiBzYXZlIGFyZWENCisJbDMyaQlhNCwgYTIsIDQ4DQorCWwzMmkJYTUsIGEyLCA1Mg0KKwlz MzJpCWE0LCBhNywgMA0KKwlzMzJpCWE1LCBhNywgNA0KKwlsMzJpCWE0LCBhMiwgNTYNCisJbDMy aQlhNSwgYTIsIDYwDQorCXMzMmkJYTQsIGE3LCA4DQorCXMzMmkJYTUsIGE3LCAxMg0KKw0KKwkv KiBSZXR1cm4gdmFsID8gdmFsIDogMS4gICovDQorCW1vdmkJYTIsIDENCisJbW92bmV6CWEyLCBh MywgYTMNCisNCisJcmV0dw0KKwkuc2l6ZQlsb25nam1wLCAuIC0gbG9uZ2ptcA0KKw0KKyNlbHNl IC8qIENBTEwwIEFCSSAqLw0KKw0KKwkudGV4dA0KKwkuYWxpZ24JNA0KKwkubGl0ZXJhbF9wb3Np dGlvbg0KKwkuZ2xvYmFsCXNldGptcA0KKwkudHlwZQlzZXRqbXAsIEBmdW5jdGlvbg0KK3NldGpt cDoNCisJczMyaQlhMCwgYTIsIDANCisJczMyaQlhMSwgYTIsIDQNCisJczMyaQlhMTIsIGEyLCA4 DQorCXMzMmkJYTEzLCBhMiwgMTINCisJczMyaQlhMTQsIGEyLCAxNg0KKwlzMzJpCWExNSwgYTIs IDIwDQorCW1vdmkJYTIsIDANCisJcmV0DQorCS5zaXplCXNldGptcCwgLiAtIHNldGptcA0KKw0K KwkuYWxpZ24JNA0KKwkubGl0ZXJhbF9wb3NpdGlvbg0KKwkuZ2xvYmFsCWxvbmdqbXANCisJLnR5 cGUJbG9uZ2ptcCwgQGZ1bmN0aW9uDQorbG9uZ2ptcDoNCisJbDMyaQlhMCwgYTIsIDANCisJbDMy aQlhMTIsIGEyLCA4DQorCWwzMmkJYTEzLCBhMiwgMTINCisJbDMyaQlhMTQsIGEyLCAxNg0KKwls MzJpCWExNSwgYTIsIDIwDQorCWwzMmkJYTEsIGEyLCA0DQorCS8qIFJldHVybiB2YWwgPyB2YWwg OiAxLiAgKi8NCisJbW92aQlhMiwgMQ0KKwltb3ZuZXoJYTIsIGEzLCBhMw0KKw0KKwlyZXQNCisJ LnNpemUJbG9uZ2ptcCwgLi1sb25nam1wDQorDQorI2VuZGlmIC8qIENBTEwwIEFCSSAqLw0KZGlm ZiAtLWdpdCBhL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3N0cmNtcC5TIGIvbmV3bGliL2xp YmMvbWFjaGluZS94dGVuc2Evc3RyY21wLlMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwMDAuLmQwY2U5ZDFmZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYmMvbWFj aGluZS94dGVuc2Evc3RyY21wLlMNCkBAIC0wLDAgKzEsNzc4IEBADQorLyogQU5TSSBDIHN0YW5k YXJkIGxpYnJhcnkgZnVuY3Rpb24gc3RyY21wLg0KKw0KKyAgIENvcHlyaWdodCAoYykgMjAwMS0y MDAxMiBUZW5zaWxpY2EgSW5jLg0KKw0KKyAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZw0KKyAgIGEgY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KKyAg ICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcNCisgICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsDQorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvDQorICAgcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvDQorICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKw0KKyAgIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk DQorICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuDQorDQorICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsDQorICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQorICAgTUVSQ0hBTlRBQklMSVRZLCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULg0KKyAg IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZDQorICAgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwNCisgICBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0KKyAgIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8NCisNCisj aW5jbHVkZSAieHRlbnNhLWFzbS5oIg0KKw0KKyNkZWZpbmUgTUFTSzQgMHg0MDQwNDA0MA0KKw0K Kw0KKyNpZiBYQ0hBTF9IQVZFX0wzMlINCisJLmxpdGVyYWwgLkxtYXNrMCwgTUFTSzANCisJLmxp dGVyYWwgLkxtYXNrMSwgTUFTSzENCisJLmxpdGVyYWwgLkxtYXNrMiwgTUFTSzINCisJLmxpdGVy YWwgLkxtYXNrMywgTUFTSzMNCisJLmxpdGVyYWwgLkxtYXNrNCwgTUFTSzQNCisjZW5kaWYgLyog WENIQUxfSEFWRV9MMzJSICovDQorDQorCS50ZXh0DQorCS5hbGlnbgk0DQorCS5saXRlcmFsX3Bv c2l0aW9uDQorCS5nbG9iYWwJc3RyY21wDQorCS50eXBlCXN0cmNtcCwgQGZ1bmN0aW9uDQorc3Ry Y21wOg0KKw0KKyNpZiBYQ0hBTF9IQVZFX0wzMlIgJiYgWENIQUxfSEFWRV9MT09QUyAmJiBYQ0hB TF9IQVZFX0RFTlNJVFkgJiYgX19YVEVOU0FfRUxfXyAmJiBYQ0hBTF9IQVZFX0ZMSVgzDQorLyog IEZhc3QgdmVyc2lvbiBmb3IgRkxJWDMgTGl0dGxlIEVuZGlhbiAqLw0KKw0KKw0KKwlsZWFmX2Vu dHJ5IHNwLCAxNg0KKwkvKiBhMiA9IHMxLCBhMyA9IHMyICovDQorDQorCWw4dWkJYTgsIGEyLCAw CS8vIGJ5dGUgMCBmcm9tIHMxDQorCWw4dWkJYTksIGEzLCAwCS8vIGJ5dGUgMCBmcm9tIHMyDQor CW1vdmkJYTEwLCAzCQkvLyBtYXNrDQorCW1vdmkJYTUsIDB4ZmZmZmZmZmMNCisJb3IJYTExLCBh MiwgYTMNCisJbDMycglhNCwgLkxtYXNrMAkvLyBtYXNrIGZvciBieXRlIDANCisJbDMycglhNywg LkxtYXNrNA0KKwlhZGRpICAgIGEzLCBhMywgLTgNCisJYWRkaSAgICBhMiwgYTIsIC04DQorCWFu ZAlhNSwgYTUsIGEyDQorCWJuZS53MTgJYTgsIGE5LCAuTHJldGRpZmYNCisJbDMyaQlhOCwgYTUs IDgJLy8gZ2V0IHdvcmQgZnJvbSBhbGlnbmVkIHZhcmlhbnQgb2YgczENCisNCisJYmFueS53MTgJ YTExLCBhMTAsIC5Mbm90X2FsaWduZWQNCisNCisvKiBzMSBpcyB3b3JkLWFsaWduZWQ7IHMyIGlz IHdvcmQtYWxpZ25lZC4NCisNCisgICBJZiB0aGUgemVyby1vdmVyaGVhZCBsb29wIG9wdGlvbiBp cyBhdmFpbGFibGUsIHVzZSBhbiAoYWxtb3N0KQ0KKyAgIGluZmluaXRlIHplcm8tb3ZlcmhlYWQg bG9vcCB3aXRoIGNvbmRpdGlvbmFsIGV4aXRzIHNvIHdlIG9ubHkgcGF5DQorICAgZm9yIHRha2Vu IGJyYW5jaGVzIHdoZW4gZXhpdGluZyB0aGUgbG9vcC4gICovDQorDQorLyogTmV3IGFsZ29yaXRo bSwgcmVseWluZyBvbiB0aGUgZmFjdCB0aGF0IGFsbCBub3JtYWwgQVNDSUkgaXMgYmV0d2Vlbg0K KyAgIDMyIGFuZCAxMjcuDQorDQorICAgUmF0aGVyIHRoYW4gY2hlY2sgYWxsIGJ5dGVzIGZvciB6 ZXJvOg0KKyAgIFRha2Ugb25lIHdvcmQgKDQgYnl0ZXMpLiAgQ2FsbCBpdCB3MS4NCisgICBTaGlm dCB3MSBsZWZ0IGJ5IG9uZSBpbnRvIHcxJy4NCisgICBPciB3MSBhbmQgdzEnLiAgRm9yIGFsbCBu b3JtYWwgQVNDSUkgYml0IDYgd2lsbCBiZSAxOyBmb3IgemVybyBpdCB3b24ndC4NCisgICBDaGVj ayB0aGF0IGFsbCA0IGJpdCA2J3MgKG9uZSBmb3IgZWFjaCBieXRlKSBhcmUgb25lOg0KKyAgIElm IHRoZXkgYXJlLCB3ZSBhcmUgZGVmaW5pdGVseSBub3QgZG9uZS4NCisgICBJZiB0aGV5IGFyZSBu b3QsIHdlIGFyZSBwcm9iYWJseSBkb25lLCBidXQgbmVlZCB0byBjaGVjayBmb3IgemVyby4gICov DQorDQorLkxhbGlnbmVkOg0KKwkvKiBMb29wIGZvcmV2ZXIgKi8NCisxOg0KKwlsb29wCWEwLCAu TGFsaWduZWRfZG9uZQ0KKw0KKwkvKiBGaXJzdCB1bnJvbGxlZCBsb29wIGJvZHkuICAqLw0KKwls MzJpCWE5LCBhMywgOAkvLyBnZXQgd29yZCBmcm9tIHMyDQorCWFkZGkJYTMsIGEzLCA4CS8vIGFk dmFuY2UgczIgcG9pbnRlcg0KKwlzbGxpCWE1LCBhOCwgMQ0KKwlvcglhMTAsIGE4LCBhNQ0KKwl7 bDMyaQlhMTEsIGEyLCAxMgkvLyBnZXQgd29yZCBmcm9tIHMxKzQNCisJYm5lLncxOAlhOCwgYTks IC5Md25lMn0NCisJbDMyaQlhOSwgYTMsIDQJLy8gZ2V0IHdvcmQgZnJvbSBzMis0DQorCWJuYWxs LncxOAlhMTAsIGE3LCAuTHByb2JlcQ0KKw0KKwkvKiBTZWNvbmQgdW5yb2xsZWQgbG9vcCBib2R5 LiAgKi8NCisJc2xsaQlhNSwgYTExLCAxDQorCW9yCWExMCwgYTExLCBhNQ0KKwlhZGRpCWEyLCBh MiwgOAkvLyBhZHZhbmNlIHMxIHBvaW50ZXINCisgICAgICAgIG1vdglhOCwgYTExDQorCWJuZS53 MTgJYTExLCBhOSwgLkx3bmUyDQorCWwzMmkJYTgsIGEyLCA4CS8vIGdldCB3b3JkIGZyb20gczEN CisJYm5hbGwudzE4CWExMCwgYTcsIC5McHJvYmVxMg0KKw0KKy5MYWxpZ25lZF9kb25lOg0KKwls MzJpCWE4LCBhMiwgOAkvLyBnZXQgd29yZCBmcm9tIHMxDQorCWogICAgIAkxYg0KKw0KKy5Mbm90 X2FsaWduZWQ6DQorCXhvcglhMTEsIGEyLCBhMwkvLyBjb21wYXJlIGxvdyB0d28gYml0cyBvZiBz MSBhbmQgczINCisJYmFueQlhMTEsIGExMCwgLkx1bmFsaWduZWQJLy8gaWYgdGhleSBoYXZlIGRp ZmZlcmVudCBhbGlnbm1lbnQNCisNCisJLyogczEvczIgYXJlIG5vdCB3b3JkLWFsaWduZWQuICAq Lw0KKwltb3ZpCWE1LCAweGZmZmZmZmZjDQorCWFkZGkJYTIsIGEyLCAxCS8vIGFkdmFuY2UgczEN CisJYmVxeglhOSwgLkxlcQkvLyBieXRlcyBlcXVhbCwgaWYgemVybywgc3RyaW5ncyBhcmUgZXF1 YWwNCisJYWRkaQlhMywgYTMsIDEJLy8gYWR2YW5jZSBzMg0KKwlhbmQgICAgIGE2LCBhMiwgYTUN CisJbDMyaQlhOCwgYTYsIDgJLy8gZ2V0IHdvcmQgZnJvbSBzMQ0KKwlibm9uZQlhMiwgYTEwLCAu TGFsaWduZWQgLy8gaWYgczEvczIgbm93IGFsaWduZWQNCisJbDh1aQlhOCwgYTIsIDgJLy8gYnl0 ZSAxIGZyb20gczENCisJbDh1aQlhOSwgYTMsIDgJLy8gYnl0ZSAxIGZyb20gczINCisJYWRkaQlh MiwgYTIsIDEJLy8gYWR2YW5jZSBzMQ0KKwlibmUJYTgsIGE5LCAuTHJldGRpZmYgLy8gaWYgZGlm ZmVyZW50LCByZXR1cm4gZGlmZmVyZW5jZQ0KKwliZXF6CWE4LCAuTGVxCS8vIGJ5dGVzIGVxdWFs LCBpZiB6ZXJvLCBzdHJpbmdzIGFyZSBlcXVhbA0KKwlhZGRpCWEzLCBhMywgMQkvLyBhZHZhbmNl IHMyDQorCWFuZCAgICAgYTYsIGEyLCBhNQ0KKwlsMzJpCWE4LCBhNiwgOAkvLyBnZXQgd29yZCBm cm9tIHMxDQorCWJub25lCWEyLCBhMTAsIC5MYWxpZ25lZCAvLyBpZiBzMS9zMiBub3cgYWxpZ25l ZA0KKwlsOHVpCWE4LCBhMiwgOAkvLyBieXRlIDIgZnJvbSBzMQ0KKwlsOHVpCWE5LCBhMywgOAkv LyBieXRlIDIgZnJvbSBzMg0KKwlhZGRpCWEyLCBhMiwgMQkvLyBhZHZhbmNlIHMxDQorCWJuZQlh OCwgYTksIC5McmV0ZGlmZiAvLyBpZiBkaWZmZXJlbnQsIHJldHVybiBkaWZmZXJlbmNlDQorCWJl cXoJYTgsIC5MZXEJLy8gYnl0ZXMgZXF1YWwsIGlmIHplcm8sIHN0cmluZ3MgYXJlIGVxdWFsDQor CWFkZGkJYTMsIGEzLCAxCS8vIGFkdmFuY2UgczINCisJbDMyaQlhOCwgYTIsIDgJLy8gZ2V0IHdv cmQgZnJvbSBzMQ0KKwlqCS5MYWxpZ25lZA0KKw0KKy8qIHMxIGFuZCBzMiBoYXZlIGRpZmZlcmVu dCBhbGlnbm1lbnQuDQorDQorICAgSWYgdGhlIHplcm8tb3ZlcmhlYWQgbG9vcCBvcHRpb24gaXMg YXZhaWxhYmxlLCB1c2UgYW4gKGFsbW9zdCkNCisgICBpbmZpbml0ZSB6ZXJvLW92ZXJoZWFkIGxv b3Agd2l0aCBjb25kaXRpb25hbCBleGl0cyBzbyB3ZSBvbmx5IHBheQ0KKyAgIGZvciB0YWtlbiBi cmFuY2hlcyB3aGVuIGV4aXRpbmcgdGhlIGxvb3AuDQorDQorICAgTm90ZTogSXQgaXMgaW1wb3J0 YW50IGZvciB0aGlzIHVuYWxpZ25lZCBjYXNlIHRvIGNvbWUgYmVmb3JlIHRoZQ0KKyAgIGNvZGUg Zm9yIGFsaWduZWQgc3RyaW5ncywgYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBvZiB0aGUgYnJhbmNo ZXMNCisgICBhYm92ZSBjYW5ub3QgcmVhY2ggYW5kIGhhdmUgdG8gYmUgdHJhbnNmb3JtZWQgdG8g YnJhbmNoZXMgYXJvdW5kDQorICAganVtcHMuICBUaGUgdW5hbGlnbmVkIGNvZGUgaXMgc21hbGxl ciBhbmQgdGhlIGJyYW5jaGVzIGNhbiByZWFjaA0KKyAgIG92ZXIgaXQuICAqLw0KKw0KKy5MdW5h bGlnbmVkOg0KKwltb3ZpLm4JYTgsIDAJCS8vIHNldCB1cCBmb3IgdGhlIG1heGltdW0gbG9vcCBj b3VudA0KKwlsb29wCWE4LCAuTHJldGRpZmYJLy8gbG9vcCBmb3JldmVyIChhbG1vc3QgYW55d2F5 KQ0KKwlsOHVpCWE4LCBhMiwgOA0KKwlsOHVpCWE5LCBhMywgOA0KKwlhZGRpCWEyLCBhMiwgMQ0K KwlibmUJYTgsIGE5LCAuTHJldGRpZmYNCisJYWRkaQlhMywgYTMsIDENCisJYmVxeglhOCwgLkxy ZXRkaWZmDQorLkxyZXRkaWZmOg0KKwlzdWIJYTIsIGE4LCBhOQ0KKwlsZWFmX3JldHVybg0KKw0K Kw0KKy5McHJvYmVxMjoNCisJLyogQWRqdXN0IHBvaW50ZXJzIHRvIGFjY291bnQgZm9yIHRoZSBs b29wIHVucm9sbGluZy4gICovDQorICAgICAgICBtb3YJYTgsIGExMQ0KKwlhZGRpCWEyLCBhMiwg LTQNCisJYWRkaQlhMywgYTMsIDQNCisNCisJLyogYWxpZ24gKDAgbW9kIDQpICovDQorLkxwcm9i ZXE6DQorCS8qIFdvcmRzIGFyZSBwcm9iYWJseSBlcXVhbCwgYnV0IGNoZWNrIGZvciBzdXJlLg0K KwkgICBJZiBub3QsIGxvb3Agb3ZlciB0aGUgcmVzdCBvZiBzdHJpbmcgdXNpbmcgbm9ybWFsIGFs Z29yaXRobS4gICovDQorDQorCWJub25lCWE4LCBhNCwgLkxlcQkvLyBpZiBieXRlIDAgaXMgemVy bw0KKwlsMzJyCWE1LCAuTG1hc2sxCS8vIG1hc2sgZm9yIGJ5dGUgMQ0KKwlsMzJyCWE2LCAuTG1h c2syCS8vIG1hc2sgZm9yIGJ5dGUgMg0KKwlibm9uZQlhOCwgYTUsIC5MZXEJLy8gaWYgYnl0ZSAx IGlzIHplcm8NCisJbDMycglhNywgLkxtYXNrMwkvLyBtYXNrIGZvciBieXRlIDMNCisJYm5vbmUJ YTgsIGE2LCAuTGVxCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCWJub25lCWE4LCBhNywgLkxlcQkv LyBpZiBieXRlIDMgaXMgemVybw0KKwkvKiBhbGlnbiAoMSBtb2QgNCkgKi8NCisJYWRkaS5uCWEy LCBhMiwgMTIJLy8gYWR2YW5jZSBzMSBwb2ludGVyDQorCWFkZGkubglhMywgYTMsIDQJLy8gYWR2 YW5jZSBzMiBwb2ludGVyDQorCS8qIGFsaWduICgxIG1vZCA0KSBvciAoMiBtb2QgNCkgKi8NCisx Og0KKwlsb29wCWEwLCAuTGVuZAkvLyBsb29wIGZvcmV2ZXIgKGE0IGlzIGJpZ2dlciB0aGFuIG1h eCBpdGVycykNCisNCisJbDMyaQlhMTEsIGEyLCAwCS8vIGdldCB3b3JkIGZyb20gczENCisJbDMy aQlhOSwgYTMsIDAJLy8gZ2V0IHdvcmQgZnJvbSBzMg0KKwlhZGRpCWEyLCBhMiwgNAkvLyBhZHZh bmNlIHMxIHBvaW50ZXINCisJYm5lCWExMSwgYTksIC5Md25lDQorCWJub25lCWExMSwgYTQsIC5M ZXEJLy8gaWYgYnl0ZSAwIGlzIHplcm8NCisJYm5vbmUJYTExLCBhNSwgLkxlcQkvLyBpZiBieXRl IDEgaXMgemVybw0KKwlibm9uZQlhMTEsIGE2LCAuTGVxCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQor CWJub25lCWExMSwgYTcsIC5MZXEJLy8gaWYgYnl0ZSAzIGlzIHplcm8NCisJYWRkaQlhMywgYTMs IDQJLy8gYWR2YW5jZSBzMiBwb2ludGVyDQorLkxlbmQ6DQorCWoJMWINCisNCisJLyogV29yZHMg YXJlIGVxdWFsOyBzb21lIGJ5dGUgaXMgemVyby4gICovDQorLkxlcToJbW92aQlhMiwgMAkJLy8g cmV0dXJuIGVxdWFsDQorCWxlYWZfcmV0dXJuDQorDQorLkx3bmUyOgkvKiBXb3JkcyBhcmUgbm90 IGVxdWFsLiAgT24gYmlnLWVuZGlhbiBwcm9jZXNzb3JzLCBpZiBub25lIG9mIHRoZQ0KKwkgICBi eXRlcyBhcmUgemVybywgdGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBhIHNp bXBsZQ0KKwkgICBjb21wYXJpc29uLiAgKi8NCisuTHduZToJLyogV29yZHMgYXJlIG5vdCBlcXVh bC4gICovDQorCXhvcglhMiwgYTgsIGE5CS8vIGdldCB3b3JkIHdpdGggbm9uemVybyBpbiBieXRl IHRoYXQgZGlmZmVycw0KKwlleHR1aQlhMTAsIGE4LCAwLCA4DQorCWV4dHVpCWExMSwgYTksIDAs IDgNCisJbW92aQlhNSwgTUFTSzEJLy8gbWFzayBmb3IgYnl0ZSAxDQorCWJhbnkudzE4CWEyLCBh NCwgLkxkaWZmMAkvLyBpZiBieXRlIDAgZGlmZmVycw0KKw0KKwlibm9uZS53MTgJYTgsIGE0LCAu TGVxCS8vIGlmIGJ5dGUgMCBpcyB6ZXJvDQorCW1vdmkJYTYsIE1BU0syCS8vIG1hc2sgZm9yIGJ5 dGUgMg0KKwliYW55LncxOAlhMiwgYTUsIC5MZGlmZjEJLy8gaWYgYnl0ZSAxIGRpZmZlcnMNCisJ ZXh0dWkJYTEwLCBhOCwgMjQsIDgNCisJYm5vbmUudzE4CWE4LCBhNSwgLkxlcQkvLyBpZiBieXRl IDEgaXMgemVybw0KKwlleHR1aQlhMTEsIGE5LCAyNCwgOA0KKwliYW55LncxOAlhMiwgYTYsIC5M ZGlmZjIJLy8gaWYgYnl0ZSAyIGRpZmZlcnMNCisJc3ViCWEyLCBhMTAsIGExMQ0KKwlibm9uZS53 MTgJYTgsIGE2LCAuTGVxCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCS8qIExpdHRsZS1lbmRpYW4g aXMgYSBsaXR0bGUgbW9yZSBkaWZmaWN1bHQgYmVjYXVzZSBjYW4ndCBzdWJ0cmFjdA0KKwkgICB3 aG9sZSB3b3Jkcy4gICovDQorLkxkaWZmMzoNCisJLyogQnl0ZXMgMC0yIGFyZSBlcXVhbDsgYnl0 ZSAzIGlzIGRpZmZlcmVudC4NCisJICAgRm9yIGxpdHRsZS1lbmRpYW4gbmVlZCB0byBoYXZlIGEg c2lnbiBiaXQgZm9yIHRoZSBkaWZmZXJlbmNlLiAgKi8NCisJbGVhZl9yZXR1cm4NCisuTGRpZmYw Og0KKwkvKiBCeXRlIDAgaXMgZGlmZmVyZW50LiAgKi8NCisJc3ViCWEyLCBhMTAsIGExMQ0KKwls ZWFmX3JldHVybg0KKw0KKy5MZGlmZjE6DQorCS8qIEJ5dGUgMCBpcyBlcXVhbDsgYnl0ZSAxIGlz IGRpZmZlcmVudC4gICovDQorCWV4dHVpCWExMCwgYTgsIDgsIDgNCisJZXh0dWkJYTExLCBhOSwg OCwgOA0KKwlzdWIJYTIsIGExMCwgYTExDQorCWxlYWZfcmV0dXJuDQorDQorLkxkaWZmMjoNCisJ LyogQnl0ZXMgMC0xIGFyZSBlcXVhbDsgYnl0ZSAyIGlzIGRpZmZlcmVudC4gICovDQorCWV4dHVp CWExMCwgYTgsIDE2LCA4DQorCWV4dHVpCWExMSwgYTksIDE2LCA4DQorCXN1YglhMiwgYTEwLCBh MTENCisJbGVhZl9yZXR1cm4NCisNCisjZWxzZQ0KKyNpZiBYQ0hBTF9IQVZFX0wzMlIgJiYgWENI QUxfSEFWRV9MT09QUyAmJiBYQ0hBTF9IQVZFX0RFTlNJVFkgJiYgX19YVEVOU0FfRUxfXyAmJiBY Q0hBTF9IQVZFX1BEWDQNCisvKiAgRmFzdCB2ZXJzaW9uIGZvciBGTElYMyBMaXR0bGUgRW5kaWFu ICovDQorDQorDQorCWxlYWZfZW50cnkgc3AsIDE2DQorCS8qIGEyID0gczEsIGEzID0gczIgKi8N CisNCisJbDh1aQlhOCwgYTIsIDAJLy8gYnl0ZSAwIGZyb20gczENCisJbDh1aQlhOSwgYTMsIDAJ Ly8gYnl0ZSAwIGZyb20gczINCisJbW92aQlhMTAsIDMJCS8vIG1hc2sNCisJbW92aQlhNSwgMHhm ZmZmZmZmYw0KKwlvcglhMTEsIGEyLCBhMw0KKwlsMzJyCWE0LCAuTG1hc2swCS8vIG1hc2sgZm9y IGJ5dGUgMA0KKwlsMzJyCWE3LCAuTG1hc2s0DQorCWFkZGkgICAgYTMsIGEzLCAtOA0KKwlhZGRp ICAgIGEyLCBhMiwgLTgNCisJYW5kCWE1LCBhNSwgYTINCisJYm5lLncxNQlhOCwgYTksIC5McmV0 ZGlmZg0KKwlsMzJpCWE4LCBhNSwgOAkvLyBnZXQgd29yZCBmcm9tIGFsaWduZWQgdmFyaWFudCBv ZiBzMQ0KKw0KKwliYW55LncxNQlhMTEsIGExMCwgLkxub3RfYWxpZ25lZA0KKw0KKy8qIHMxIGlz IHdvcmQtYWxpZ25lZDsgczIgaXMgd29yZC1hbGlnbmVkLg0KKw0KKyAgIElmIHRoZSB6ZXJvLW92 ZXJoZWFkIGxvb3Agb3B0aW9uIGlzIGF2YWlsYWJsZSwgdXNlIGFuIChhbG1vc3QpDQorICAgaW5m aW5pdGUgemVyby1vdmVyaGVhZCBsb29wIHdpdGggY29uZGl0aW9uYWwgZXhpdHMgc28gd2Ugb25s eSBwYXkNCisgICBmb3IgdGFrZW4gYnJhbmNoZXMgd2hlbiBleGl0aW5nIHRoZSBsb29wLiAgKi8N CisNCisvKiBOZXcgYWxnb3JpdGhtLCByZWx5aW5nIG9uIHRoZSBmYWN0IHRoYXQgYWxsIG5vcm1h bCBBU0NJSSBpcyBiZXR3ZWVuDQorICAgMzIgYW5kIDEyNy4NCisNCisgICBSYXRoZXIgdGhhbiBj aGVjayBhbGwgYnl0ZXMgZm9yIHplcm86DQorICAgVGFrZSBvbmUgd29yZCAoNCBieXRlcykuICBD YWxsIGl0IHcxLg0KKyAgIFNoaWZ0IHcxIGxlZnQgYnkgb25lIGludG8gdzEnLg0KKyAgIE9yIHcx IGFuZCB3MScuICBGb3IgYWxsIG5vcm1hbCBBU0NJSSBiaXQgNiB3aWxsIGJlIDE7IGZvciB6ZXJv IGl0IHdvbid0Lg0KKyAgIENoZWNrIHRoYXQgYWxsIDQgYml0IDYncyAob25lIGZvciBlYWNoIGJ5 dGUpIGFyZSBvbmU6DQorICAgSWYgdGhleSBhcmUsIHdlIGFyZSBkZWZpbml0ZWx5IG5vdCBkb25l Lg0KKyAgIElmIHRoZXkgYXJlIG5vdCwgd2UgYXJlIHByb2JhYmx5IGRvbmUsIGJ1dCBuZWVkIHRv IGNoZWNrIGZvciB6ZXJvLiAgKi8NCisNCisuTGFsaWduZWQ6DQorCS8qIExvb3AgZm9yZXZlciAq Lw0KKzE6DQorCWxvb3AJYTAsIC5MYWxpZ25lZF9kb25lDQorDQorCS8qIEZpcnN0IHVucm9sbGVk IGxvb3AgYm9keS4gICovDQorCWwzMmkJYTksIGEzLCA4CS8vIGdldCB3b3JkIGZyb20gczINCisJ YWRkaQlhMywgYTMsIDgJLy8gYWR2YW5jZSBzMiBwb2ludGVyDQorCXNsbGkJYTUsIGE4LCAxDQor CW9yCWExMCwgYTgsIGE1DQorCXsNCisJYm5lLncxNQlhOCwgYTksIC5Md25lMg0KKwlsMzJpCWEx MSwgYTIsIDEyCS8vIGdldCB3b3JkIGZyb20gczErNA0KKwlub3ANCisJbm9wDQorCX0NCisJbDMy aQlhOSwgYTMsIDQJLy8gZ2V0IHdvcmQgZnJvbSBzMis0DQorCWJuYWxsLncxNQlhMTAsIGE3LCAu THByb2JlcQ0KKw0KKwkvKiBTZWNvbmQgdW5yb2xsZWQgbG9vcCBib2R5LiAgKi8NCisJc2xsaQlh NSwgYTExLCAxDQorCW9yCWExMCwgYTExLCBhNQ0KKwlhZGRpCWEyLCBhMiwgOAkvLyBhZHZhbmNl IHMxIHBvaW50ZXINCisgICAgICAgIG1vdglhOCwgYTExDQorCWJuZS53MTUJYTExLCBhOSwgLkx3 bmUyDQorCWwzMmkJYTgsIGEyLCA4CS8vIGdldCB3b3JkIGZyb20gczENCisJYm5hbGwudzE1CWEx MCwgYTcsIC5McHJvYmVxMg0KKw0KKy5MYWxpZ25lZF9kb25lOg0KKwlsMzJpCWE4LCBhMiwgOAkv LyBnZXQgd29yZCBmcm9tIHMxDQorCWogICAgIAkxYg0KKw0KKy5Mbm90X2FsaWduZWQ6DQorCXhv cglhMTEsIGEyLCBhMwkvLyBjb21wYXJlIGxvdyB0d28gYml0cyBvZiBzMSBhbmQgczINCisJYmFu eQlhMTEsIGExMCwgLkx1bmFsaWduZWQJLy8gaWYgdGhleSBoYXZlIGRpZmZlcmVudCBhbGlnbm1l bnQNCisNCisJLyogczEvczIgYXJlIG5vdCB3b3JkLWFsaWduZWQuICAqLw0KKwltb3ZpCWE1LCAw eGZmZmZmZmZjDQorCWFkZGkJYTIsIGEyLCAxCS8vIGFkdmFuY2UgczENCisJYmVxeglhOSwgLkxl cQkvLyBieXRlcyBlcXVhbCwgaWYgemVybywgc3RyaW5ncyBhcmUgZXF1YWwNCisJYWRkaQlhMywg YTMsIDEJLy8gYWR2YW5jZSBzMg0KKwlhbmQgICAgIGE2LCBhMiwgYTUNCisJbDMyaQlhOCwgYTYs IDgJLy8gZ2V0IHdvcmQgZnJvbSBzMQ0KKwlibm9uZQlhMiwgYTEwLCAuTGFsaWduZWQgLy8gaWYg czEvczIgbm93IGFsaWduZWQNCisJbDh1aQlhOCwgYTIsIDgJLy8gYnl0ZSAxIGZyb20gczENCisJ bDh1aQlhOSwgYTMsIDgJLy8gYnl0ZSAxIGZyb20gczINCisJYWRkaQlhMiwgYTIsIDEJLy8gYWR2 YW5jZSBzMQ0KKwlibmUJYTgsIGE5LCAuTHJldGRpZmYgLy8gaWYgZGlmZmVyZW50LCByZXR1cm4g ZGlmZmVyZW5jZQ0KKwliZXF6CWE4LCAuTGVxCS8vIGJ5dGVzIGVxdWFsLCBpZiB6ZXJvLCBzdHJp bmdzIGFyZSBlcXVhbA0KKwlhZGRpCWEzLCBhMywgMQkvLyBhZHZhbmNlIHMyDQorCWFuZCAgICAg YTYsIGEyLCBhNQ0KKwlsMzJpCWE4LCBhNiwgOAkvLyBnZXQgd29yZCBmcm9tIHMxDQorCWJub25l CWEyLCBhMTAsIC5MYWxpZ25lZCAvLyBpZiBzMS9zMiBub3cgYWxpZ25lZA0KKwlsOHVpCWE4LCBh MiwgOAkvLyBieXRlIDIgZnJvbSBzMQ0KKwlsOHVpCWE5LCBhMywgOAkvLyBieXRlIDIgZnJvbSBz Mg0KKwlhZGRpCWEyLCBhMiwgMQkvLyBhZHZhbmNlIHMxDQorCWJuZQlhOCwgYTksIC5McmV0ZGlm ZiAvLyBpZiBkaWZmZXJlbnQsIHJldHVybiBkaWZmZXJlbmNlDQorCWJlcXoJYTgsIC5MZXEJLy8g Ynl0ZXMgZXF1YWwsIGlmIHplcm8sIHN0cmluZ3MgYXJlIGVxdWFsDQorCWFkZGkJYTMsIGEzLCAx CS8vIGFkdmFuY2UgczINCisJbDMyaQlhOCwgYTIsIDgJLy8gZ2V0IHdvcmQgZnJvbSBzMQ0KKwlq CS5MYWxpZ25lZA0KKw0KKy8qIHMxIGFuZCBzMiBoYXZlIGRpZmZlcmVudCBhbGlnbm1lbnQuDQor DQorICAgSWYgdGhlIHplcm8tb3ZlcmhlYWQgbG9vcCBvcHRpb24gaXMgYXZhaWxhYmxlLCB1c2Ug YW4gKGFsbW9zdCkNCisgICBpbmZpbml0ZSB6ZXJvLW92ZXJoZWFkIGxvb3Agd2l0aCBjb25kaXRp b25hbCBleGl0cyBzbyB3ZSBvbmx5IHBheQ0KKyAgIGZvciB0YWtlbiBicmFuY2hlcyB3aGVuIGV4 aXRpbmcgdGhlIGxvb3AuDQorDQorICAgTm90ZTogSXQgaXMgaW1wb3J0YW50IGZvciB0aGlzIHVu YWxpZ25lZCBjYXNlIHRvIGNvbWUgYmVmb3JlIHRoZQ0KKyAgIGNvZGUgZm9yIGFsaWduZWQgc3Ry aW5ncywgYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBvZiB0aGUgYnJhbmNoZXMNCisgICBhYm92ZSBj YW5ub3QgcmVhY2ggYW5kIGhhdmUgdG8gYmUgdHJhbnNmb3JtZWQgdG8gYnJhbmNoZXMgYXJvdW5k DQorICAganVtcHMuICBUaGUgdW5hbGlnbmVkIGNvZGUgaXMgc21hbGxlciBhbmQgdGhlIGJyYW5j aGVzIGNhbiByZWFjaA0KKyAgIG92ZXIgaXQuICAqLw0KKw0KKy5MdW5hbGlnbmVkOg0KKwltb3Zp Lm4JYTgsIDAJCS8vIHNldCB1cCBmb3IgdGhlIG1heGltdW0gbG9vcCBjb3VudA0KKwlsb29wCWE4 LCAuTHJldGRpZmYJLy8gbG9vcCBmb3JldmVyIChhbG1vc3QgYW55d2F5KQ0KKwlsOHVpCWE4LCBh MiwgOA0KKwlsOHVpCWE5LCBhMywgOA0KKwlhZGRpCWEyLCBhMiwgMQ0KKwlibmUJYTgsIGE5LCAu THJldGRpZmYNCisJYWRkaQlhMywgYTMsIDENCisJYmVxeglhOCwgLkxyZXRkaWZmDQorLkxyZXRk aWZmOg0KKwlzdWIJYTIsIGE4LCBhOQ0KKwlsZWFmX3JldHVybg0KKw0KKw0KKy5McHJvYmVxMjoN CisJLyogQWRqdXN0IHBvaW50ZXJzIHRvIGFjY291bnQgZm9yIHRoZSBsb29wIHVucm9sbGluZy4g ICovDQorICAgICAgICBtb3YJYTgsIGExMQ0KKwlhZGRpCWEyLCBhMiwgLTQNCisJYWRkaQlhMywg YTMsIDQNCisNCisJLyogYWxpZ24gKDAgbW9kIDQpICovDQorLkxwcm9iZXE6DQorCS8qIFdvcmRz IGFyZSBwcm9iYWJseSBlcXVhbCwgYnV0IGNoZWNrIGZvciBzdXJlLg0KKwkgICBJZiBub3QsIGxv b3Agb3ZlciB0aGUgcmVzdCBvZiBzdHJpbmcgdXNpbmcgbm9ybWFsIGFsZ29yaXRobS4gICovDQor DQorCWJub25lCWE4LCBhNCwgLkxlcQkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlsMzJyCWE1LCAu TG1hc2sxCS8vIG1hc2sgZm9yIGJ5dGUgMQ0KKwlsMzJyCWE2LCAuTG1hc2syCS8vIG1hc2sgZm9y IGJ5dGUgMg0KKwlibm9uZQlhOCwgYTUsIC5MZXEJLy8gaWYgYnl0ZSAxIGlzIHplcm8NCisJbDMy cglhNywgLkxtYXNrMwkvLyBtYXNrIGZvciBieXRlIDMNCisJYm5vbmUJYTgsIGE2LCAuTGVxCS8v IGlmIGJ5dGUgMiBpcyB6ZXJvDQorCWJub25lCWE4LCBhNywgLkxlcQkvLyBpZiBieXRlIDMgaXMg emVybw0KKwkvKiBhbGlnbiAoMSBtb2QgNCkgKi8NCisJYWRkaS5uCWEyLCBhMiwgMTIJLy8gYWR2 YW5jZSBzMSBwb2ludGVyDQorCWFkZGkubglhMywgYTMsIDQJLy8gYWR2YW5jZSBzMiBwb2ludGVy DQorCS8qIGFsaWduICgxIG1vZCA0KSBvciAoMiBtb2QgNCkgKi8NCisxOg0KKwlsb29wCWEwLCAu TGVuZAkvLyBsb29wIGZvcmV2ZXIgKGE0IGlzIGJpZ2dlciB0aGFuIG1heCBpdGVycykNCisNCisJ bDMyaQlhMTEsIGEyLCAwCS8vIGdldCB3b3JkIGZyb20gczENCisJbDMyaQlhOSwgYTMsIDAJLy8g Z2V0IHdvcmQgZnJvbSBzMg0KKwlhZGRpCWEyLCBhMiwgNAkvLyBhZHZhbmNlIHMxIHBvaW50ZXIN CisJYm5lCWExMSwgYTksIC5Md25lDQorCWJub25lCWExMSwgYTQsIC5MZXEJLy8gaWYgYnl0ZSAw IGlzIHplcm8NCisJYm5vbmUJYTExLCBhNSwgLkxlcQkvLyBpZiBieXRlIDEgaXMgemVybw0KKwli bm9uZQlhMTEsIGE2LCAuTGVxCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCWJub25lCWExMSwgYTcs IC5MZXEJLy8gaWYgYnl0ZSAzIGlzIHplcm8NCisJYWRkaQlhMywgYTMsIDQJLy8gYWR2YW5jZSBz MiBwb2ludGVyDQorLkxlbmQ6DQorCWoJMWINCisNCisJLyogV29yZHMgYXJlIGVxdWFsOyBzb21l IGJ5dGUgaXMgemVyby4gICovDQorLkxlcToJbW92aQlhMiwgMAkJLy8gcmV0dXJuIGVxdWFsDQor CWxlYWZfcmV0dXJuDQorDQorLkx3bmUyOgkvKiBXb3JkcyBhcmUgbm90IGVxdWFsLiAgT24gYmln LWVuZGlhbiBwcm9jZXNzb3JzLCBpZiBub25lIG9mIHRoZQ0KKwkgICBieXRlcyBhcmUgemVybywg dGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBhIHNpbXBsZQ0KKwkgICBjb21w YXJpc29uLiAgKi8NCisuTHduZToJLyogV29yZHMgYXJlIG5vdCBlcXVhbC4gICovDQorCXhvcglh MiwgYTgsIGE5CS8vIGdldCB3b3JkIHdpdGggbm9uemVybyBpbiBieXRlIHRoYXQgZGlmZmVycw0K KwlleHR1aQlhMTAsIGE4LCAwLCA4DQorCWV4dHVpCWExMSwgYTksIDAsIDgNCisJbW92aQlhNSwg TUFTSzEJLy8gbWFzayBmb3IgYnl0ZSAxDQorCWJhbnkudzE1CWEyLCBhNCwgLkxkaWZmMAkvLyBp ZiBieXRlIDAgZGlmZmVycw0KKw0KKwlibm9uZS53MTUJYTgsIGE0LCAuTGVxCS8vIGlmIGJ5dGUg MCBpcyB6ZXJvDQorCW1vdmkJYTYsIE1BU0syCS8vIG1hc2sgZm9yIGJ5dGUgMg0KKwliYW55Lncx NQlhMiwgYTUsIC5MZGlmZjEJLy8gaWYgYnl0ZSAxIGRpZmZlcnMNCisJZXh0dWkJYTEwLCBhOCwg MjQsIDgNCisJYm5vbmUudzE1CWE4LCBhNSwgLkxlcQkvLyBpZiBieXRlIDEgaXMgemVybw0KKwll eHR1aQlhMTEsIGE5LCAyNCwgOA0KKwliYW55LncxNQlhMiwgYTYsIC5MZGlmZjIJLy8gaWYgYnl0 ZSAyIGRpZmZlcnMNCisJc3ViCWEyLCBhMTAsIGExMQ0KKwlibm9uZS53MTUJYTgsIGE2LCAuTGVx CS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCS8qIExpdHRsZS1lbmRpYW4gaXMgYSBsaXR0bGUgbW9y ZSBkaWZmaWN1bHQgYmVjYXVzZSBjYW4ndCBzdWJ0cmFjdA0KKwkgICB3aG9sZSB3b3Jkcy4gICov DQorLkxkaWZmMzoNCisJLyogQnl0ZXMgMC0yIGFyZSBlcXVhbDsgYnl0ZSAzIGlzIGRpZmZlcmVu dC4NCisJICAgRm9yIGxpdHRsZS1lbmRpYW4gbmVlZCB0byBoYXZlIGEgc2lnbiBiaXQgZm9yIHRo ZSBkaWZmZXJlbmNlLiAgKi8NCisJbGVhZl9yZXR1cm4NCisuTGRpZmYwOg0KKwkvKiBCeXRlIDAg aXMgZGlmZmVyZW50LiAgKi8NCisJc3ViCWEyLCBhMTAsIGExMQ0KKwlsZWFmX3JldHVybg0KKw0K Ky5MZGlmZjE6DQorCS8qIEJ5dGUgMCBpcyBlcXVhbDsgYnl0ZSAxIGlzIGRpZmZlcmVudC4gICov DQorCWV4dHVpCWExMCwgYTgsIDgsIDgNCisJZXh0dWkJYTExLCBhOSwgOCwgOA0KKwlzdWIJYTIs IGExMCwgYTExDQorCWxlYWZfcmV0dXJuDQorDQorLkxkaWZmMjoNCisJLyogQnl0ZXMgMC0xIGFy ZSBlcXVhbDsgYnl0ZSAyIGlzIGRpZmZlcmVudC4gICovDQorCWV4dHVpCWExMCwgYTgsIDE2LCA4 DQorCWV4dHVpCWExMSwgYTksIDE2LCA4DQorCXN1YglhMiwgYTEwLCBhMTENCisJbGVhZl9yZXR1 cm4NCisNCisNCisjZWxzZSAvKiBOb3QgRkxJWDMgKi8NCisJbGVhZl9lbnRyeSBzcCwgMTYNCisJ LyogYTIgPSBzMSwgYTMgPSBzMiAqLw0KKw0KKwlsOHVpCWE4LCBhMiwgMAkvLyBieXRlIDAgZnJv bSBzMQ0KKwlsOHVpCWE5LCBhMywgMAkvLyBieXRlIDAgZnJvbSBzMg0KKwltb3ZpCWExMCwgMwkJ Ly8gbWFzaw0KKwlibmUJYTgsIGE5LCAuTHJldGRpZmYNCisNCisJb3IJYTExLCBhMiwgYTMNCisJ Ym5vbmUJYTExLCBhMTAsIC5MYWxpZ25lZA0KKw0KKwl4b3IJYTExLCBhMiwgYTMJLy8gY29tcGFy ZSBsb3cgdHdvIGJpdHMgb2YgczEgYW5kIHMyDQorCWJhbnkJYTExLCBhMTAsIC5MdW5hbGlnbmVk CS8vIGlmIHRoZXkgaGF2ZSBkaWZmZXJlbnQgYWxpZ25tZW50DQorDQorCS8qIHMxL3MyIGFyZSBu b3Qgd29yZC1hbGlnbmVkLiAgKi8NCisJYWRkaQlhMiwgYTIsIDEJLy8gYWR2YW5jZSBzMQ0KKwli ZXF6CWE4LCAuTGVxCS8vIGJ5dGVzIGVxdWFsLCBpZiB6ZXJvLCBzdHJpbmdzIGFyZSBlcXVhbA0K KwlhZGRpCWEzLCBhMywgMQkvLyBhZHZhbmNlIHMyDQorCWJub25lCWEyLCBhMTAsIC5MYWxpZ25l ZCAvLyBpZiBzMS9zMiBub3cgYWxpZ25lZA0KKwlsOHVpCWE4LCBhMiwgMAkvLyBieXRlIDEgZnJv bSBzMQ0KKwlsOHVpCWE5LCBhMywgMAkvLyBieXRlIDEgZnJvbSBzMg0KKwlhZGRpCWEyLCBhMiwg MQkvLyBhZHZhbmNlIHMxDQorCWJuZQlhOCwgYTksIC5McmV0ZGlmZiAvLyBpZiBkaWZmZXJlbnQs IHJldHVybiBkaWZmZXJlbmNlDQorCWJlcXoJYTgsIC5MZXEJLy8gYnl0ZXMgZXF1YWwsIGlmIHpl cm8sIHN0cmluZ3MgYXJlIGVxdWFsDQorCWFkZGkJYTMsIGEzLCAxCS8vIGFkdmFuY2UgczINCisJ Ym5vbmUJYTIsIGExMCwgLkxhbGlnbmVkIC8vIGlmIHMxL3MyIG5vdyBhbGlnbmVkDQorCWw4dWkJ YTgsIGEyLCAwCS8vIGJ5dGUgMiBmcm9tIHMxDQorCWw4dWkJYTksIGEzLCAwCS8vIGJ5dGUgMiBm cm9tIHMyDQorCWFkZGkJYTIsIGEyLCAxCS8vIGFkdmFuY2UgczENCisJYm5lCWE4LCBhOSwgLkxy ZXRkaWZmIC8vIGlmIGRpZmZlcmVudCwgcmV0dXJuIGRpZmZlcmVuY2UNCisJYmVxeglhOCwgLkxl cQkvLyBieXRlcyBlcXVhbCwgaWYgemVybywgc3RyaW5ncyBhcmUgZXF1YWwNCisJYWRkaQlhMywg YTMsIDEJLy8gYWR2YW5jZSBzMg0KKwlqCS5MYWxpZ25lZA0KKw0KKy8qIHMxIGFuZCBzMiBoYXZl IGRpZmZlcmVudCBhbGlnbm1lbnQuDQorDQorICAgSWYgdGhlIHplcm8tb3ZlcmhlYWQgbG9vcCBv cHRpb24gaXMgYXZhaWxhYmxlLCB1c2UgYW4gKGFsbW9zdCkNCisgICBpbmZpbml0ZSB6ZXJvLW92 ZXJoZWFkIGxvb3Agd2l0aCBjb25kaXRpb25hbCBleGl0cyBzbyB3ZSBvbmx5IHBheQ0KKyAgIGZv ciB0YWtlbiBicmFuY2hlcyB3aGVuIGV4aXRpbmcgdGhlIGxvb3AuDQorDQorICAgTm90ZTogSXQg aXMgaW1wb3J0YW50IGZvciB0aGlzIHVuYWxpZ25lZCBjYXNlIHRvIGNvbWUgYmVmb3JlIHRoZQ0K KyAgIGNvZGUgZm9yIGFsaWduZWQgc3RyaW5ncywgYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBvZiB0 aGUgYnJhbmNoZXMNCisgICBhYm92ZSBjYW5ub3QgcmVhY2ggYW5kIGhhdmUgdG8gYmUgdHJhbnNm b3JtZWQgdG8gYnJhbmNoZXMgYXJvdW5kDQorICAganVtcHMuICBUaGUgdW5hbGlnbmVkIGNvZGUg aXMgc21hbGxlciBhbmQgdGhlIGJyYW5jaGVzIGNhbiByZWFjaA0KKyAgIG92ZXIgaXQuICAqLw0K Kw0KKwkuYWxpZ24JNA0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorI2lmIFhDSEFMX0hBVkVfREVO U0lUWQ0KKwkvKiAoMiBtb2QgNCkgYWxpZ25tZW50IGZvciBsb29wIGluc3RydWN0aW9uICovDQor I2Vsc2UNCisJLyogKDEgbW9kIDQpIGFsaWdubWVudCBmb3IgbG9vcCBpbnN0cnVjdGlvbiAqLw0K KwkuYnl0ZQkwDQorCS5ieXRlCTANCisjZW5kaWYNCisjZW5kaWYNCisuTHVuYWxpZ25lZDoNCisj aWYgWENIQUxfSEFWRV9MT09QUw0KKyNpZiBYQ0hBTF9IQVZFX0RFTlNJVFkNCisJX21vdmkubglh OCwgMAkJLy8gc2V0IHVwIGZvciB0aGUgbWF4aW11bSBsb29wIGNvdW50DQorI2Vsc2UNCisJX21v dmkJYTgsIDAJCS8vIHNldCB1cCBmb3IgdGhlIG1heGltdW0gbG9vcCBjb3VudA0KKyNlbmRpZg0K Kwlsb29wCWE4LCAuTHJldGRpZmYJLy8gbG9vcCBmb3JldmVyIChhbG1vc3QgYW55d2F5KQ0KKyNl bmRpZg0KKy5MbmV4dGJ5dGU6DQorCWw4dWkJYTgsIGEyLCAwDQorCWw4dWkJYTksIGEzLCAwDQor CWFkZGkJYTIsIGEyLCAxDQorCWJuZQlhOCwgYTksIC5McmV0ZGlmZg0KKwlhZGRpCWEzLCBhMywg MQ0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorCWJlcXoJYTgsIC5McmV0ZGlmZg0KKyNlbHNlDQor CWJuZXoJYTgsIC5MbmV4dGJ5dGUNCisjZW5kaWYNCisuTHJldGRpZmY6DQorCXN1YglhMiwgYTgs IGE5DQorCWxlYWZfcmV0dXJuDQorDQorLyogczEgaXMgd29yZC1hbGlnbmVkOyBzMiBpcyB3b3Jk LWFsaWduZWQuDQorDQorICAgSWYgdGhlIHplcm8tb3ZlcmhlYWQgbG9vcCBvcHRpb24gaXMgYXZh aWxhYmxlLCB1c2UgYW4gKGFsbW9zdCkNCisgICBpbmZpbml0ZSB6ZXJvLW92ZXJoZWFkIGxvb3Ag d2l0aCBjb25kaXRpb25hbCBleGl0cyBzbyB3ZSBvbmx5IHBheQ0KKyAgIGZvciB0YWtlbiBicmFu Y2hlcyB3aGVuIGV4aXRpbmcgdGhlIGxvb3AuICAqLw0KKw0KKy8qIE5ldyBhbGdvcml0aG0sIHJl bHlpbmcgb24gdGhlIGZhY3QgdGhhdCBhbGwgbm9ybWFsIEFTQ0lJIGlzIGJldHdlZW4NCisgICAz MiBhbmQgMTI3Lg0KKw0KKyAgIFJhdGhlciB0aGFuIGNoZWNrIGFsbCBieXRlcyBmb3IgemVybzoN CisgICBUYWtlIG9uZSB3b3JkICg0IGJ5dGVzKS4gIENhbGwgaXQgdzEuDQorICAgU2hpZnQgdzEg bGVmdCBieSBvbmUgaW50byB3MScuDQorICAgT3IgdzEgYW5kIHcxJy4gIEZvciBhbGwgbm9ybWFs IEFTQ0lJIGJpdCA2IHdpbGwgYmUgMTsgZm9yIHplcm8gaXQgd29uJ3QuDQorICAgQ2hlY2sgdGhh dCBhbGwgNCBiaXQgNidzIChvbmUgZm9yIGVhY2ggYnl0ZSkgYXJlIG9uZToNCisgICBJZiB0aGV5 IGFyZSwgd2UgYXJlIGRlZmluaXRlbHkgbm90IGRvbmUuDQorICAgSWYgdGhleSBhcmUgbm90LCB3 ZSBhcmUgcHJvYmFibHkgZG9uZSwgYnV0IG5lZWQgdG8gY2hlY2sgZm9yIHplcm8uICAqLw0KKw0K KwkuYWxpZ24JNA0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorI2lmICFYQ0hBTF9IQVZFX0wzMlIN CisJLyogKDIgbW9kIDQpIGFsaWdubWVudCBmb3IgbG9vcCBpbnN0cnVjdGlvbiAqLw0KKwkuYnl0 ZQkwDQorCS5ieXRlCTANCisjZW5kaWYNCisuTGFsaWduZWQ6DQorI2lmIFhDSEFMX0hBVkVfTDMy Ug0KKwlsMzJyCWE0LCAuTG1hc2swCS8vIG1hc2sgZm9yIGJ5dGUgMA0KKwlsMzJyCWE3LCAuTG1h c2s0DQorI2Vsc2UNCisJY29uc3QxNglhNCwgTUFTSzBAaA0KKwljb25zdDE2CWE0LCBNQVNLMEBs DQorCWNvbnN0MTYJYTcsIE1BU0s0QGgNCisJY29uc3QxNglhNywgTUFTSzRAbA0KKyNlbmRpZg0K KwkvKiBMb29wIGZvcmV2ZXIgKi8NCisxOg0KKwlsb29wCWEwLCAuTGFsaWduZWRfZG9uZQ0KKw0K KwkvKiBGaXJzdCB1bnJvbGxlZCBsb29wIGJvZHkuICAqLw0KKwlsMzJpCWE4LCBhMiwgMAkvLyBn ZXQgd29yZCBmcm9tIHMxDQorCWwzMmkJYTksIGEzLCAwCS8vIGdldCB3b3JkIGZyb20gczINCisJ c2xsaQlhNSwgYTgsIDENCisJYm5lCWE4LCBhOSwgLkx3bmUyDQorCW9yCWE5LCBhOCwgYTUNCisJ Ym5hbGwJYTksIGE3LCAuTHByb2JlcQ0KKw0KKwkvKiBTZWNvbmQgdW5yb2xsZWQgbG9vcCBib2R5 LiAgKi8NCisJbDMyaQlhOCwgYTIsIDQJLy8gZ2V0IHdvcmQgZnJvbSBzMSs0DQorCWwzMmkJYTks IGEzLCA0CS8vIGdldCB3b3JkIGZyb20gczIrNA0KKwlzbGxpCWE1LCBhOCwgMQ0KKwlibmUJYTgs IGE5LCAuTHduZTINCisJb3IJYTksIGE4LCBhNQ0KKwlibmFsbAlhOSwgYTcsIC5McHJvYmVxMg0K Kw0KKwlhZGRpCWEyLCBhMiwgOAkvLyBhZHZhbmNlIHMxIHBvaW50ZXINCisJYWRkaQlhMywgYTMs IDgJLy8gYWR2YW5jZSBzMiBwb2ludGVyDQorLkxhbGlnbmVkX2RvbmU6DQorCWogICAgIAkxYg0K Kw0KKy5McHJvYmVxMjoNCisJLyogQWRqdXN0IHBvaW50ZXJzIHRvIGFjY291bnQgZm9yIHRoZSBs b29wIHVucm9sbGluZy4gICovDQorCWFkZGkJYTIsIGEyLCA0DQorCWFkZGkJYTMsIGEzLCA0DQor DQorI2Vsc2UgLyogIVhDSEFMX0hBVkVfTE9PUFMgKi8NCisNCisuTGFsaWduZWQ6DQorCW1vdmkJ YTQsIE1BU0swCS8vIG1hc2sgZm9yIGJ5dGUgMA0KKwltb3ZpCWE3LCBNQVNLNA0KKwlqCS5MZmly c3R3b3JkDQorLkxuZXh0d29yZDoNCisJYWRkaQlhMiwgYTIsIDQJLy8gYWR2YW5jZSBzMSBwb2lu dGVyDQorCWFkZGkJYTMsIGEzLCA0CS8vIGFkdmFuY2UgczIgcG9pbnRlcg0KKy5MZmlyc3R3b3Jk Og0KKwlsMzJpCWE4LCBhMiwgMAkvLyBnZXQgd29yZCBmcm9tIHMxDQorCWwzMmkJYTksIGEzLCAw CS8vIGdldCB3b3JkIGZyb20gczINCisJc2xsaQlhNSwgYTgsIDENCisJYm5lCWE4LCBhOSwgLkx3 bmUyDQorCW9yCWE5LCBhOCwgYTUNCisJYmFsbAlhOSwgYTcsIC5MbmV4dHdvcmQNCisjZW5kaWYg LyogIVhDSEFMX0hBVkVfTE9PUFMgKi8NCisNCisJLyogYWxpZ24gKDAgbW9kIDQpICovDQorLkxw cm9iZXE6DQorCS8qIFdvcmRzIGFyZSBwcm9iYWJseSBlcXVhbCwgYnV0IGNoZWNrIGZvciBzdXJl Lg0KKwkgICBJZiBub3QsIGxvb3Agb3ZlciB0aGUgcmVzdCBvZiBzdHJpbmcgdXNpbmcgbm9ybWFs IGFsZ29yaXRobS4gICovDQorDQorCWJub25lCWE4LCBhNCwgLkxlcQkvLyBpZiBieXRlIDAgaXMg emVybw0KKyNpZiBYQ0hBTF9IQVZFX0wzMlINCisJbDMycglhNSwgLkxtYXNrMQkvLyBtYXNrIGZv ciBieXRlIDENCisJbDMycglhNiwgLkxtYXNrMgkvLyBtYXNrIGZvciBieXRlIDINCisJYm5vbmUJ YTgsIGE1LCAuTGVxCS8vIGlmIGJ5dGUgMSBpcyB6ZXJvDQorCWwzMnIJYTcsIC5MbWFzazMJLy8g bWFzayBmb3IgYnl0ZSAzDQorCWJub25lCWE4LCBhNiwgLkxlcQkvLyBpZiBieXRlIDIgaXMgemVy bw0KKwlibm9uZQlhOCwgYTcsIC5MZXEJLy8gaWYgYnl0ZSAzIGlzIHplcm8NCisJLyogYWxpZ24g KDEgbW9kIDQpICovDQorI2Vsc2UNCisJY29uc3QxNglhNSwgTUFTSzFAaAkvLyBtYXNrIGZvciBi eXRlIDENCisJY29uc3QxNglhNSwgTUFTSzFAbA0KKwlibm9uZQlhOCwgYTUsIC5MZXEJLy8gaWYg Ynl0ZSAxIGlzIHplcm8NCisJY29uc3QxNglhNiwgTUFTSzJAaAkvLyBtYXNrIGZvciBieXRlIDIN CisJY29uc3QxNglhNiwgTUFTSzJAbA0KKwlibm9uZQlhOCwgYTYsIC5MZXEJLy8gaWYgYnl0ZSAy IGlzIHplcm8NCisJY29uc3QxNglhNywgTUFTSzNAaAkvLyBtYXNrIGZvciBieXRlIDMNCisJY29u c3QxNglhNywgTUFTSzNAbA0KKwlibm9uZQlhOCwgYTcsIC5MZXEJLy8gaWYgYnl0ZSAzIGlzIHpl cm8NCisJLyogYWxpZ24gKDIgbW9kIDQpICovDQorI2VuZGlmIC8qIFhDSEFMX0hBVkVfTDMyUiAq Lw0KKyNpZiBYQ0hBTF9IQVZFX0RFTlNJVFkNCisJYWRkaS5uCWEyLCBhMiwgNAkvLyBhZHZhbmNl IHMxIHBvaW50ZXINCisJYWRkaS5uCWEzLCBhMywgNAkvLyBhZHZhbmNlIHMyIHBvaW50ZXINCisJ LyogYWxpZ24gKDEgbW9kIDQpIG9yICgyIG1vZCA0KSAqLw0KKyNlbHNlDQorCWFkZGkJYTIsIGEy LCA0CS8vIGFkdmFuY2UgczEgcG9pbnRlcg0KKwlhZGRpCWEzLCBhMywgNAkvLyBhZHZhbmNlIHMy IHBvaW50ZXINCisJb3IJYTEsIGExLCBhMQkvLyBub3ANCisjaWYgIVhDSEFMX0hBVkVfTDMyUg0K KwlvcglhMSwgYTEsIGExCS8vIG5vcA0KKyNlbmRpZg0KKwkvKiBhbGlnbiAoMiBtb2QgNCkgKi8N CisjZW5kaWYgLyogWENIQUxfSEFWRV9ERU5TSVRZICovDQorI2lmIFhDSEFMX0hBVkVfTE9PUFMN CisxOg0KKwlsb29wCWEwLCAuTGVxCS8vIGxvb3AgZm9yZXZlciAoYTQgaXMgYmlnZ2VyIHRoYW4g bWF4IGl0ZXJzKQ0KKwlsMzJpCWE4LCBhMiwgMAkvLyBnZXQgd29yZCBmcm9tIHMxDQorCWwzMmkJ YTksIGEzLCAwCS8vIGdldCB3b3JkIGZyb20gczINCisJYWRkaQlhMiwgYTIsIDQJLy8gYWR2YW5j ZSBzMSBwb2ludGVyDQorCWJuZQlhOCwgYTksIC5Md25lDQorCWJub25lCWE4LCBhNCwgLkxlcQkv LyBpZiBieXRlIDAgaXMgemVybw0KKwlibm9uZQlhOCwgYTUsIC5MZXEJLy8gaWYgYnl0ZSAxIGlz IHplcm8NCisJYm5vbmUJYTgsIGE2LCAuTGVxCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCWJub25l CWE4LCBhNywgLkxlcQkvLyBpZiBieXRlIDMgaXMgemVybw0KKwlhZGRpCWEzLCBhMywgNAkvLyBh ZHZhbmNlIHMyIHBvaW50ZXINCisJagkxYg0KKyNlbHNlIC8qICFYQ0hBTF9IQVZFX0xPT1BTICov DQorDQorCWoJLkxmaXJzdHdvcmQyDQorLkxuZXh0d29yZDI6DQorCWFkZGkJYTMsIGEzLCA0CS8v IGFkdmFuY2UgczIgcG9pbnRlcg0KKy5MZmlyc3R3b3JkMjoNCisJbDMyaQlhOCwgYTIsIDAJLy8g Z2V0IHdvcmQgZnJvbSBzMQ0KKwlsMzJpCWE5LCBhMywgMAkvLyBnZXQgd29yZCBmcm9tIHMyDQor CWFkZGkJYTIsIGEyLCA0CS8vIGFkdmFuY2UgczEgcG9pbnRlcg0KKwlibmUJYTgsIGE5LCAuTHdu ZQ0KKwlibm9uZQlhOCwgYTQsIC5MZXEJLy8gaWYgYnl0ZSAwIGlzIHplcm8NCisJYm5vbmUJYTgs IGE1LCAuTGVxCS8vIGlmIGJ5dGUgMSBpcyB6ZXJvDQorCWJub25lCWE4LCBhNiwgLkxlcQkvLyBp ZiBieXRlIDIgaXMgemVybw0KKwliYW55CWE4LCBhNywgLkxuZXh0d29yZDIJLy8gaWYgYnl0ZSAz IGlzIHplcm8NCisjZW5kaWYgLyogIVhDSEFMX0hBVkVfTE9PUFMgKi8NCisNCisJLyogV29yZHMg YXJlIGVxdWFsOyBzb21lIGJ5dGUgaXMgemVyby4gICovDQorLkxlcToJbW92aQlhMiwgMAkJLy8g cmV0dXJuIGVxdWFsDQorCWxlYWZfcmV0dXJuDQorDQorLkx3bmUyOgkvKiBXb3JkcyBhcmUgbm90 IGVxdWFsLiAgT24gYmlnLWVuZGlhbiBwcm9jZXNzb3JzLCBpZiBub25lIG9mIHRoZQ0KKwkgICBi eXRlcyBhcmUgemVybywgdGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBhIHNp bXBsZQ0KKwkgICBjb21wYXJpc29uLiAgKi8NCisjaWZkZWYgX19YVEVOU0FfRUJfXw0KKwlvcglh MTAsIGE4LCBhNQ0KKwlibmFsbAlhMTAsIGE3LCAuTHNvbWV6ZXJvDQorCWJnZXUJYTgsIGE5LCAu THBvc3JldHVybg0KKwltb3ZpCWEyLCAtMQ0KKwlsZWFmX3JldHVybg0KKy5McG9zcmV0dXJuOg0K Kwltb3ZpCWEyLCAxDQorCWxlYWZfcmV0dXJuDQorLkxzb21lemVybzoJLy8gVGhlcmUgaXMgcHJv YmFibHkgc29tZSB6ZXJvIGJ5dGUuDQorI2VuZGlmIC8qIF9fWFRFTlNBX0VCX18gKi8NCisuTHdu ZToJLyogV29yZHMgYXJlIG5vdCBlcXVhbC4gICovDQorCXhvcglhMiwgYTgsIGE5CS8vIGdldCB3 b3JkIHdpdGggbm9uemVybyBpbiBieXRlIHRoYXQgZGlmZmVycw0KKwliYW55CWEyLCBhNCwgLkxk aWZmMAkvLyBpZiBieXRlIDAgZGlmZmVycw0KKwltb3ZpCWE1LCBNQVNLMQkvLyBtYXNrIGZvciBi eXRlIDENCisJYm5vbmUJYTgsIGE0LCAuTGVxCS8vIGlmIGJ5dGUgMCBpcyB6ZXJvDQorCWJhbnkJ YTIsIGE1LCAuTGRpZmYxCS8vIGlmIGJ5dGUgMSBkaWZmZXJzDQorCW1vdmkJYTYsIE1BU0syCS8v IG1hc2sgZm9yIGJ5dGUgMg0KKwlibm9uZQlhOCwgYTUsIC5MZXEJLy8gaWYgYnl0ZSAxIGlzIHpl cm8NCisJYmFueQlhMiwgYTYsIC5MZGlmZjIJLy8gaWYgYnl0ZSAyIGRpZmZlcnMNCisJYm5vbmUJ YTgsIGE2LCAuTGVxCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorI2lmZGVmIF9fWFRFTlNBX0VCX18N CisuTGRpZmYzOg0KKy5MZGlmZjI6DQorLkxkaWZmMToNCisJLyogQnl0ZSAwIGlzIGVxdWFsIChh dCBsZWFzdCkgYW5kIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBiZWZvcmUgYSB6ZXJvDQorCSAgIGJ5 dGUuICBKdXN0IHN1YnRyYWN0IHdvcmRzIHRvIGdldCB0aGUgcmV0dXJuIHZhbHVlLg0KKwkgICBU aGUgaGlnaCBvcmRlciBlcXVhbCBieXRlcyBjYW5jZWwsIGxlYXZpbmcgcm9vbSBmb3IgdGhlIHNp Z24uICAqLw0KKwlzdWIJYTIsIGE4LCBhOQ0KKwlsZWFmX3JldHVybg0KKw0KKy5MZGlmZjA6DQor CS8qIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgc2lnbiwgc28gY2FuJ3Qgc3VidHJhY3Qgd2hv bGUgd29yZHMuICAqLw0KKwlleHR1aQlhMTAsIGE4LCAyNCwgOA0KKwlleHR1aQlhMTEsIGE5LCAy NCwgOA0KKwlzdWIJYTIsIGExMCwgYTExDQorCWxlYWZfcmV0dXJuDQorDQorI2Vsc2UgLyogIV9f WFRFTlNBX0VCX18gKi8NCisJLyogTGl0dGxlLWVuZGlhbiBpcyBhIGxpdHRsZSBtb3JlIGRpZmZp Y3VsdCBiZWNhdXNlIGNhbid0IHN1YnRyYWN0DQorCSAgIHdob2xlIHdvcmRzLiAgKi8NCisuTGRp ZmYzOg0KKwkvKiBCeXRlcyAwLTIgYXJlIGVxdWFsOyBieXRlIDMgaXMgZGlmZmVyZW50Lg0KKwkg ICBGb3IgbGl0dGxlLWVuZGlhbiBuZWVkIHRvIGhhdmUgYSBzaWduIGJpdCBmb3IgdGhlIGRpZmZl cmVuY2UuICAqLw0KKwlleHR1aQlhMTAsIGE4LCAyNCwgOA0KKwlleHR1aQlhMTEsIGE5LCAyNCwg OA0KKwlzdWIJYTIsIGExMCwgYTExDQorCWxlYWZfcmV0dXJuDQorDQorLkxkaWZmMDoNCisJLyog Qnl0ZSAwIGlzIGRpZmZlcmVudC4gICovDQorCWV4dHVpCWExMCwgYTgsIDAsIDgNCisJZXh0dWkJ YTExLCBhOSwgMCwgOA0KKwlzdWIJYTIsIGExMCwgYTExDQorCWxlYWZfcmV0dXJuDQorDQorLkxk aWZmMToNCisJLyogQnl0ZSAwIGlzIGVxdWFsOyBieXRlIDEgaXMgZGlmZmVyZW50LiAgKi8NCisJ ZXh0dWkJYTEwLCBhOCwgOCwgOA0KKwlleHR1aQlhMTEsIGE5LCA4LCA4DQorCXN1YglhMiwgYTEw LCBhMTENCisJbGVhZl9yZXR1cm4NCisNCisuTGRpZmYyOg0KKwkvKiBCeXRlcyAwLTEgYXJlIGVx dWFsOyBieXRlIDIgaXMgZGlmZmVyZW50LiAgKi8NCisJZXh0dWkJYTEwLCBhOCwgMTYsIDgNCisJ ZXh0dWkJYTExLCBhOSwgMTYsIDgNCisJc3ViCWEyLCBhMTAsIGExMQ0KKwlsZWFmX3JldHVybg0K Kw0KKyNlbmRpZiAvKiAhX19YVEVOU0FfRUIgKi8NCisjZW5kaWYgLyogRkxJWDMqLw0KKyNlbmRp ZiAvKiBGTElYMyovDQorDQorCS5zaXplCXN0cmNtcCwgLiAtIHN0cmNtcA0KZGlmZiAtLWdpdCBh L25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3N0cmNweS5TIGIvbmV3bGliL2xpYmMvbWFjaGlu ZS94dGVuc2Evc3RyY3B5LlMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAu LjE2N2FhOWUwOA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYmMvbWFjaGluZS94dGVu c2Evc3RyY3B5LlMNCkBAIC0wLDAgKzEsMjM1IEBADQorLyogQU5TSSBDIHN0YW5kYXJkIGxpYnJh cnkgZnVuY3Rpb24gc3RyY3B5Lg0KKw0KKyAgIENvcHlyaWdodCAoYykgMjAwMS0yMDA4IFRlbnNp bGljYSBJbmMuDQorDQorICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQorICAgYSBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQorICAgIlNvZnR3YXJl IiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu Zw0KKyAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwNCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8NCisgICBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8NCisgICB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorDQorICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQNCisgICBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisNCisg ICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwNCisgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuDQorICAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkNCisgICBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULA0KKyAgIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFDQorICAgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLw0KKw0KKyNpbmNsdWRlICJ4 dGVuc2EtYXNtLmgiDQorDQorCS50ZXh0DQorCS5iZWdpbiBzY2hlZHVsZQ0KKwkuYWxpZ24JNA0K KwkubGl0ZXJhbF9wb3NpdGlvbg0KKwkuZ2xvYmFsCXN0cmNweQ0KKwkudHlwZQlzdHJjcHksIEBm dW5jdGlvbg0KK3N0cmNweToNCisJbGVhZl9lbnRyeSBzcCwgMTYNCisJLyogYTIgPSBkc3QsIGEz ID0gc3JjICovDQorDQorCW1vdglhMTAsIGEyCQkvLyBsZWF2ZSBkc3QgaW4gcmV0dXJuIHZhbHVl IHJlZ2lzdGVyDQorCW1vdmkJYTQsIE1BU0swDQorCW1vdmkJYTUsIE1BU0sxDQorCW1vdmkJYTYs IE1BU0syDQorCW1vdmkJYTcsIE1BU0szDQorCWJic2kubAlhMywgMCwgLkxzcmMxbW9kMg0KKwli YnNpLmwJYTMsIDEsIC5Mc3JjMm1vZDQNCisuTHNyY2FsaWduZWQ6DQorDQorCS8qIENoZWNrIGlm IHRoZSBkZXN0aW5hdGlvbiBpcyBhbGlnbmVkLiAgKi8NCisJbW92aQlhOCwgMw0KKwlibm9uZQlh MTAsIGE4LCAuTGFsaWduZWQNCisNCisJagkuTGRzdHVuYWxpZ25lZA0KKw0KKy5Mc3JjMW1vZDI6 IC8vIHNyYyBhZGRyZXNzIGlzIG9kZA0KKwlsOHVpCWE4LCBhMywgMAkvLyBnZXQgYnl0ZSAwDQor CWFkZGkJYTMsIGEzLCAxCS8vIGFkdmFuY2Ugc3JjIHBvaW50ZXINCisJczhpCWE4LCBhMTAsIDAJ Ly8gc3RvcmUgYnl0ZSAwDQorCWJlcXoJYTgsIDFmCQkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlh ZGRpCWExMCwgYTEwLCAxCS8vIGFkdmFuY2UgZHN0IHBvaW50ZXINCisJYmJjaS5sCWEzLCAxLCAu THNyY2FsaWduZWQgLy8gaWYgc3JjIGlzIG5vdyB3b3JkLWFsaWduZWQNCisNCisuTHNyYzJtb2Q0 OiAvLyBzcmMgYWRkcmVzcyBpcyAyIG1vZCA0DQorCWw4dWkJYTgsIGEzLCAwCS8vIGdldCBieXRl IDANCisJLyogMS1jeWNsZSBpbnRlcmxvY2sgKi8NCisJczhpCWE4LCBhMTAsIDAJLy8gc3RvcmUg Ynl0ZSAwDQorCWJlcXoJYTgsIDFmCQkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlsOHVpCWE4LCBh MywgMQkvLyBnZXQgYnl0ZSAwDQorCWFkZGkJYTMsIGEzLCAyCS8vIGFkdmFuY2Ugc3JjIHBvaW50 ZXINCisJczhpCWE4LCBhMTAsIDEJLy8gc3RvcmUgYnl0ZSAwDQorCWFkZGkJYTEwLCBhMTAsIDIJ Ly8gYWR2YW5jZSBkc3QgcG9pbnRlcg0KKwlibmV6CWE4LCAuTHNyY2FsaWduZWQNCisxOglsZWFm X3JldHVybg0KKw0KKw0KKy8qIGRzdCBpcyB3b3JkLWFsaWduZWQ7IHNyYyBpcyB3b3JkLWFsaWdu ZWQuICAqLw0KKw0KKwkuYWxpZ24JNA0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorI2lmIFhDSEFM X0hBVkVfREVOU0lUWQ0KKwkvKiAoMiBtb2QgNCkgYWxpZ25tZW50IGZvciBsb29wIGluc3RydWN0 aW9uICovDQorI2Vsc2UNCisJLyogKDEgbW9kIDQpIGFsaWdubWVudCBmb3IgbG9vcCBpbnN0cnVj dGlvbiAqLw0KKwkuYnl0ZQkwDQorCS5ieXRlCTANCisjZW5kaWYNCisuTGFsaWduZWQ6DQorI2lm IFhDSEFMX0hBVkVfREVOU0lUWQ0KKwlfbW92aS5uCWE4LCAwCQkvLyBzZXQgdXAgZm9yIHRoZSBt YXhpbXVtIGxvb3AgY291bnQNCisjZWxzZQ0KKwlfbW92aQlhOCwgMAkJLy8gc2V0IHVwIGZvciB0 aGUgbWF4aW11bSBsb29wIGNvdW50DQorI2VuZGlmDQorCWxvb3AJYTgsIC5MejMJLy8gbG9vcCBm b3JldmVyIChhbG1vc3QgYW55d2F5KQ0KKwlsMzJpCWE4LCBhMywgMAkvLyBnZXQgd29yZCBmcm9t IHNyYw0KKwlhZGRpCWEzLCBhMywgNAkvLyBhZHZhbmNlIHNyYyBwb2ludGVyDQorCWJub25lCWE4 LCBhNCwgLkx6MAkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlibm9uZQlhOCwgYTUsIC5MejEJLy8g aWYgYnl0ZSAxIGlzIHplcm8NCisJYm5vbmUJYTgsIGE2LCAuTHoyCS8vIGlmIGJ5dGUgMiBpcyB6 ZXJvDQorCXMzMmkJYTgsIGExMCwgMAkvLyBzdG9yZSB3b3JkIHRvIGRzdA0KKwlibm9uZQlhOCwg YTcsIC5MejMJLy8gaWYgYnl0ZSAzIGlzIHplcm8NCisJYWRkaQlhMTAsIGExMCwgNAkvLyBhZHZh bmNlIGRzdCBwb2ludGVyDQorDQorI2Vsc2UgLyogIVhDSEFMX0hBVkVfTE9PUFMgKi8NCisNCisx OglhZGRpCWExMCwgYTEwLCA0CS8vIGFkdmFuY2UgZHN0IHBvaW50ZXINCisuTGFsaWduZWQ6DQor CWwzMmkJYTgsIGEzLCAwCS8vIGdldCB3b3JkIGZyb20gc3JjDQorCWFkZGkJYTMsIGEzLCA0CS8v IGFkdmFuY2Ugc3JjIHBvaW50ZXINCisJYm5vbmUJYTgsIGE0LCAuTHowCS8vIGlmIGJ5dGUgMCBp cyB6ZXJvDQorCWJub25lCWE4LCBhNSwgLkx6MQkvLyBpZiBieXRlIDEgaXMgemVybw0KKwlibm9u ZQlhOCwgYTYsIC5MejIJLy8gaWYgYnl0ZSAyIGlzIHplcm8NCisJczMyaQlhOCwgYTEwLCAwCS8v IHN0b3JlIHdvcmQgdG8gZHN0DQorCWJhbnkJYTgsIGE3LCAxYgkvLyBpZiBieXRlIDMgaXMgemVy bw0KKyNlbmRpZiAvKiAhWENIQUxfSEFWRV9MT09QUyAqLw0KKw0KKy5MejM6CS8qIEJ5dGUgMyBp cyB6ZXJvLiAgKi8NCisJbGVhZl9yZXR1cm4NCisNCisuTHowOgkvKiBCeXRlIDAgaXMgemVyby4g ICovDQorI2lmZGVmIF9fWFRFTlNBX0VCX18NCisJbW92aQlhOCwgMA0KKyNlbmRpZg0KKwlzOGkJ YTgsIGExMCwgMA0KKwlsZWFmX3JldHVybg0KKw0KKy5MejE6CS8qIEJ5dGUgMSBpcyB6ZXJvLiAg Ki8NCisjaWZkZWYgX19YVEVOU0FfRUJfXw0KKyAgICAgICAgZXh0dWkgICBhOCwgYTgsIDE2LCAx Ng0KKyNlbmRpZg0KKwlzMTZpCWE4LCBhMTAsIDANCisJbGVhZl9yZXR1cm4NCisNCisuTHoyOgkv KiBCeXRlIDIgaXMgemVyby4gICovDQorI2lmZGVmIF9fWFRFTlNBX0VCX18NCisgICAgICAgIGV4 dHVpICAgYTgsIGE4LCAxNiwgMTYNCisjZW5kaWYNCisJczE2aQlhOCwgYTEwLCAwDQorCW1vdmkJ YTgsIDANCisJczhpCWE4LCBhMTAsIDINCisJbGVhZl9yZXR1cm4NCisNCisjaWYgMQ0KKy8qIEZv ciBub3cganVzdCB1c2UgYnl0ZSBjb3B5IGxvb3AgZm9yIHRoZSB1bmFsaWduZWQgZGVzdGluYXRp b24gY2FzZS4gICovDQorDQorCS5hbGlnbgk0DQorI2lmIFhDSEFMX0hBVkVfTE9PUFMNCisjaWYg WENIQUxfSEFWRV9ERU5TSVRZDQorCS8qICgyIG1vZCA0KSBhbGlnbm1lbnQgZm9yIGxvb3AgaW5z dHJ1Y3Rpb24gKi8NCisjZWxzZQ0KKwkvKiAoMSBtb2QgNCkgYWxpZ25tZW50IGZvciBsb29wIGlu c3RydWN0aW9uICovDQorCS5ieXRlCTANCisJLmJ5dGUJMA0KKyNlbmRpZg0KKyNlbmRpZg0KKy5M ZHN0dW5hbGlnbmVkOg0KKw0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorI2lmIFhDSEFMX0hBVkVf REVOU0lUWQ0KKwlfbW92aS5uCWE4LCAwCQkvLyBzZXQgdXAgZm9yIHRoZSBtYXhpbXVtIGxvb3Ag Y291bnQNCisjZWxzZQ0KKwlfbW92aQlhOCwgMAkJLy8gc2V0IHVwIGZvciB0aGUgbWF4aW11bSBs b29wIGNvdW50DQorI2VuZGlmDQorCWxvb3AJYTgsIDJmCQkvLyBsb29wIGZvcmV2ZXIgKGFsbW9z dCBhbnl3YXkpDQorI2VuZGlmDQorMToJbDh1aQlhOCwgYTMsIDANCisJYWRkaQlhMywgYTMsIDEN CisJczhpCWE4LCBhMTAsIDANCisJYWRkaQlhMTAsIGExMCwgMQ0KKyNpZiBYQ0hBTF9IQVZFX0xP T1BTDQorCWJlcXoJYTgsIDJmDQorI2Vsc2UNCisJYm5leglhOCwgMWINCisjZW5kaWYNCisyOgls ZWFmX3JldHVybg0KKw0KKyNlbHNlIC8qIDAgKi8NCisNCisvKiBUaGlzIGNvZGUgaXMgbm90IGZ1 bmN0aW9uYWwgeWV0LiAgKi8NCisNCisuTGRzdHVuYWxpZ25lZDoNCisJbDMyaQlhOSwgYTIsIDAJ Ly8gbG9hZCB3b3JkIGZyb20gZHN0DQorI2lmZGVmIF9fWFRFTlNBX0VCX18NCisJc3NhOGIJYTkJ CS8vIHJvdGF0ZSBieSBkc3QgYWxpZ25tZW50IHNvIHRoYXQNCisJc3JjCWE5LCBhOSwgYTkJLy8g c2hpZnQgaW4gbG9vcCB3aWxsIHB1dCBiYWNrIGluIHBsYWNlDQorCXNzYThsCWE5CQkvLyBzaGlm dCBsZWZ0IGJ5IGJ5dGUqOA0KKyNlbHNlDQorCXNzYThsCWE5CQkvLyByb3RhdGUgYnkgZHN0IGFs aWdubWVudCBzbyB0aGF0DQorCXNyYwlhOSwgYTksIGE5CS8vIHNoaWZ0IGluIGxvb3Agd2lsbCBw dXQgYmFjayBpbiBwbGFjZQ0KKwlzc2E4YglhOQkJLy8gc2hpZnQgbGVmdCBieSAzMi1ieXRlKjgN CisjZW5kaWYNCisNCisvKiBkc3QgaXMgd29yZC1hbGlnbmVkOyBzcmMgaXMgdW5hbGlnbmVkLiAg Ki8NCisNCisuTGRzdHVuYWxpZ25lZGxvb3A6DQorCWwzMmkJYTgsIGEzLCAwCS8vIGdldCB3b3Jk IGZyb20gc3JjDQorCS8qIDEtY3ljbGUgaW50ZXJsb2NrICovDQorCWJub25lCWE4LCBhNCwgLkx1 MAkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlibm9uZQlhOCwgYTUsIC5MdTEJLy8gaWYgYnl0ZSAx IGlzIHplcm8NCisJYm5vbmUJYTgsIGE2LCAuTHUyCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCXNy YwlhOSwgYTgsIGE5CS8vIGNvbWJpbmUgbGFzdCB3b3JkIGFuZCB0aGlzIHdvcmQNCisJczMyaQlh OSwgYTEwLCAwCS8vIHN0b3JlIHdvcmQgdG8gZHN0DQorCWJub25lCWE4LCBhNywgLkx1MwkvLyBp ZiBieXRlIDMgaXMgbm9uemVybywgaXRlcmF0ZQ0KKwlsMzJpCWE5LCBhMywgNAkvLyBnZXQgd29y ZCBmcm9tIHNyYw0KKwlhZGRpCWEzLCBhMywgOAkvLyBhZHZhbmNlIHNyYyBwb2ludGVyDQorCWJu b25lCWE5LCBhNCwgLkx1NAkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlibm9uZQlhOSwgYTUsIC5M dTUJLy8gaWYgYnl0ZSAxIGlzIHplcm8NCisJYm5vbmUJYTksIGE2LCAuTHU2CS8vIGlmIGJ5dGUg MiBpcyB6ZXJvDQorCXNyYwlhOCwgYTksIGE4CS8vIGNvbWJpbmUgbGFzdCB3b3JkIGFuZCB0aGlz IHdvcmQNCisJczMyaQlhOCwgYTEwLCA0CS8vIHN0b3JlIHdvcmQgdG8gZHN0DQorCWFkZGkJYTEw LCBhMTAsIDgJLy8gYWR2YW5jZSBkc3QgcG9pbnRlcg0KKwliYW55CWE4LCBhNywgLkxkc3R1bmFs aWduZWRsb29wIC8vIGlmIGJ5dGUgMyBpcyBub256ZXJvLCBpdGVyYXRlDQorDQorCS8qIEJ5dGUg NyBpcyB6ZXJvLiAgKi8NCisuTHU3OglsZWFmX3JldHVybg0KKw0KKy5MdTA6CS8qIEJ5dGUgMCBp cyB6ZXJvLiAgKi8NCisjaWZkZWYgX19YVEVOU0FfRUJfXw0KKwltb3ZpCWE4LCAwDQorI2VuZGlm DQorCXM4aQlhOCwgYTEwLCAwDQorCWxlYWZfcmV0dXJuDQorDQorLkx1MToJLyogQnl0ZSAxIGlz IHplcm8uICAqLw0KKyNpZmRlZiBfX1hURU5TQV9FQl9fDQorICAgICAgICBleHR1aSAgIGE4LCBh OCwgMTYsIDE2DQorI2VuZGlmDQorCXMxNmkJYTgsIGExMCwgMA0KKwlsZWFmX3JldHVybg0KKw0K Ky5MdTI6CS8qIEJ5dGUgMiBpcyB6ZXJvLiAgKi8NCisJczE2aQlhOCwgYTEwLCAwDQorCW1vdmkJ YTgsIDANCisJczhpCWE4LCBhMTAsIDINCisJbGVhZl9yZXR1cm4NCisNCisjZW5kaWYgLyogMCAq Lw0KKwkuZW5kIHNjaGVkdWxlDQorDQorCS5zaXplCXN0cmNweSwgLiAtIHN0cmNweQ0KZGlmZiAt LWdpdCBhL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3N0cmxlbi5TIGIvbmV3bGliL2xpYmMv bWFjaGluZS94dGVuc2Evc3RybGVuLlMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAuLjY1NjBhMzE4NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYmMvbWFjaGlu ZS94dGVuc2Evc3RybGVuLlMNCkBAIC0wLDAgKzEsMTE1IEBADQorLyogQU5TSSBDIHN0YW5kYXJk IGxpYnJhcnkgZnVuY3Rpb24gc3RybGVuLg0KKw0KKyAgIENvcHlyaWdodCAoYykgMjAwMS0yMDA4 IFRlbnNpbGljYSBJbmMuDQorDQorICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQorICAgYSBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQorICAgIlNv ZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZw0KKyAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwNCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8NCisgICBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8N CisgICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorDQorICAgVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQNCisg ICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4N CisNCisgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwNCisgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuDQorICAgSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkNCisgICBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULA0KKyAgIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFDQorICAgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLw0KKw0KKyNpbmNs dWRlICJ4dGVuc2EtYXNtLmgiDQorDQorCS50ZXh0DQorCS5iZWdpbiBzY2hlZHVsZQ0KKwkuYWxp Z24JNA0KKwkubGl0ZXJhbF9wb3NpdGlvbg0KKwkuZ2xvYmFsCXN0cmxlbg0KKwkudHlwZQlzdHJs ZW4sIEBmdW5jdGlvbg0KK3N0cmxlbjoNCisJbGVhZl9lbnRyeSBzcCwgMTYNCisJLyogYTIgPSBz ICovDQorDQorCWFkZGkJYTMsIGEyLCAtNAkvLyBiZWNhdXNlIHdlIG92ZXJpbmNyZW1lbnQgYXQg dGhlIGVuZA0KKwltb3ZpCWE0LCBNQVNLMA0KKwltb3ZpCWE1LCBNQVNLMQ0KKwltb3ZpCWE2LCBN QVNLMg0KKwltb3ZpCWE3LCBNQVNLMw0KKwliYnNpLmwJYTIsIDAsIC5MMW1vZDINCisJYmJzaS5s CWEyLCAxLCAuTDJtb2Q0DQorCWoJLkxhbGlnbmVkDQorDQorLkwxbW9kMjogLy8gYWRkcmVzcyBp cyBvZGQNCisJbDh1aQlhOCwgYTMsIDQJLy8gZ2V0IGJ5dGUgMA0KKwlhZGRpCWEzLCBhMywgMQkv LyBhZHZhbmNlIHN0cmluZyBwb2ludGVyDQorCWJlcXoJYTgsIC5MejMJLy8gaWYgYnl0ZSAwIGlz IHplcm8NCisJYmJjaS5sCWEzLCAxLCAuTGFsaWduZWQgLy8gaWYgc3RyaW5nIHBvaW50ZXIgaXMg bm93IHdvcmQtYWxpZ25lZA0KKw0KKy5MMm1vZDQ6IC8vIGFkZHJlc3MgaXMgMiBtb2QgNA0KKwlh ZGRpCWEzLCBhMywgMgkvLyBhZHZhbmNlIHB0ciBmb3IgYWxpZ25lZCBhY2Nlc3MNCisJbDMyaQlh OCwgYTMsIDAJLy8gZ2V0IHdvcmQgd2l0aCBmaXJzdCB0d28gYnl0ZXMgb2Ygc3RyaW5nDQorCWJu b25lCWE4LCBhNiwgLkx6MgkvLyBpZiBieXRlIDIgKG9mIHdvcmQsIG5vdCBzdHJpbmcpIGlzIHpl cm8NCisJYmFueQlhOCwgYTcsIC5MYWxpZ25lZCAvLyBpZiBieXRlIDMgKG9mIHdvcmQsIG5vdCBz dHJpbmcpIGlzIG5vbnplcm8NCisNCisJLyogQnl0ZSAzIGlzIHplcm8uICAqLw0KKwlhZGRpCWEz LCBhMywgMwkvLyBwb2ludCB0byB6ZXJvIGJ5dGUNCisJc3ViCWEyLCBhMywgYTIJLy8gc3VidHJh Y3QgdG8gZ2V0IGxlbmd0aA0KKwlsZWFmX3JldHVybg0KKw0KKw0KKy8qIFN0cmluZyBpcyB3b3Jk LWFsaWduZWQuICAqLw0KKw0KKwkuYWxpZ24JNA0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorI2lm IFhDSEFMX0hBVkVfREVOU0lUWQ0KKwkvKiAoMiBtb2QgNCkgYWxpZ25tZW50IGZvciBsb29wIGlu c3RydWN0aW9uICovDQorI2Vsc2UNCisJLyogKDEgbW9kIDQpIGFsaWdubWVudCBmb3IgbG9vcCBp bnN0cnVjdGlvbiAqLw0KKwkuYnl0ZQkwDQorCS5ieXRlCTANCisjZW5kaWYNCisjZW5kaWYNCisu TGFsaWduZWQ6DQorI2lmIFhDSEFMX0hBVkVfTE9PUFMNCisjaWYgWENIQUxfSEFWRV9ERU5TSVRZ DQorCV9tb3ZpLm4JYTgsIDAJCS8vIHNldCB1cCBmb3IgdGhlIG1heGltdW0gbG9vcCBjb3VudA0K KyNlbHNlDQorCV9tb3ZpCWE4LCAwCQkvLyBzZXQgdXAgZm9yIHRoZSBtYXhpbXVtIGxvb3AgY291 bnQNCisjZW5kaWYNCisJbG9vcAlhOCwgLkx6MwkvLyBsb29wIGZvcmV2ZXIgKGFsbW9zdCBhbnl3 YXkpDQorI2VuZGlmDQorMToJbDMyaQlhOCwgYTMsIDQJLy8gZ2V0IG5leHQgd29yZCBvZiBzdHJp bmcNCisJYWRkaQlhMywgYTMsIDQJLy8gYWR2YW5jZSBzdHJpbmcgcG9pbnRlcg0KKwlibm9uZQlh OCwgYTQsIC5MejAJLy8gaWYgYnl0ZSAwIGlzIHplcm8NCisJYm5vbmUJYTgsIGE1LCAuTHoxCS8v IGlmIGJ5dGUgMSBpcyB6ZXJvDQorCWJub25lCWE4LCBhNiwgLkx6MgkvLyBpZiBieXRlIDIgaXMg emVybw0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorCWJub25lCWE4LCBhNywgLkx6MwkvLyBpZiBi eXRlIDMgaXMgemVybw0KKyNlbHNlDQorCWJhbnkJYTgsIGE3LCAxYgkvLyByZXBlYXQgaWYgYnl0 ZSAzIGlzIG5vbi16ZXJvDQorI2VuZGlmDQorDQorLkx6MzoJLyogQnl0ZSAzIGlzIHplcm8uICAq Lw0KKwlhZGRpCWEzLCBhMywgMwkvLyBwb2ludCB0byB6ZXJvIGJ5dGUNCisJLyogRmFsbCB0aHJv dWdoLi4uLiAgKi8NCisNCisuTHowOgkvKiBCeXRlIDAgaXMgemVyby4gICovDQorCXN1YglhMiwg YTMsIGEyCS8vIHN1YnRyYWN0IHRvIGdldCBsZW5ndGgNCisJbGVhZl9yZXR1cm4NCisNCisuTHox OgkvKiBCeXRlIDEgaXMgemVyby4gICovDQorCWFkZGkJYTMsIGEzLCAxCS8vIHBvaW50IHRvIHpl cm8gYnl0ZQ0KKwlzdWIJYTIsIGEzLCBhMgkvLyBzdWJ0cmFjdCB0byBnZXQgbGVuZ3RoDQorCWxl YWZfcmV0dXJuDQorDQorLkx6MjoJLyogQnl0ZSAyIGlzIHplcm8uICAqLw0KKwlhZGRpCWEzLCBh MywgMgkvLyBwb2ludCB0byB6ZXJvIGJ5dGUNCisJc3ViCWEyLCBhMywgYTIJLy8gc3VidHJhY3Qg dG8gZ2V0IGxlbmd0aA0KKwlsZWFmX3JldHVybg0KKw0KKwkuZW5kIHNjaGVkdWxlDQorDQorCS5z aXplCXN0cmxlbiwgLiAtIHN0cmxlbg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL21hY2hpbmUv eHRlbnNhL3N0cm5jcHkuUyBiL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3N0cm5jcHkuUw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uZGM5MzYzYzJhDQotLS0gL2Rl di9udWxsDQorKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS9zdHJuY3B5LlMNCkBAIC0w LDAgKzEsMjU4IEBADQorLyogQU5TSSBDIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb24gc3RybmNw eS4NCisNCisgICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwOCBUZW5zaWxpY2EgSW5jLg0KKw0KKyAg IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZw0KKyAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KKyAgICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcNCisgICB3aXRob3V0IGxp bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs DQorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvDQorICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvDQorICAgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOg0KKw0KKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkDQorICAgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorDQorICAgVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQorICAgRVhQ UkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GDQorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULg0KKyAgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZDQorICAgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwNCisgICBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRQ0KKyAgIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8NCisNCisjaW5jbHVkZSAieHRlbnNhLWFzbS5oIg0KKw0K KwkudGV4dA0KKy5iZWdpbiBzY2hlZHVsZQ0KKwkuYWxpZ24JNA0KKwkubGl0ZXJhbF9wb3NpdGlv bg0KK19fc3RybmNweV9hdXg6DQorDQorLkxzcmMxbW9kMjogLy8gc3JjIGFkZHJlc3MgaXMgb2Rk DQorCWw4dWkJYTgsIGEzLCAwCS8vIGdldCBieXRlIDANCisJYWRkaQlhMywgYTMsIDEJLy8gYWR2 YW5jZSBzcmMgcG9pbnRlcg0KKwlzOGkJYTgsIGExMCwgMAkvLyBzdG9yZSBieXRlIDANCisJYWRk aQlhNCwgYTQsIC0xCS8vIGRlY3JlbWVudCBuDQorCWJlcXogICAgYTQsIC5McmV0ICAgICAgIC8v IGlmIG4gaXMgemVybw0KKwlhZGRpCWExMCwgYTEwLCAxCS8vIGFkdmFuY2UgZHN0IHBvaW50ZXIN CisJYmVxeglhOCwgLkxmaWxsCS8vIGlmIGJ5dGUgMCBpcyB6ZXJvDQorCWJiY2kubAlhMywgMSwg LkxzcmNhbGlnbmVkIC8vIGlmIHNyYyBpcyBub3cgd29yZC1hbGlnbmVkDQorDQorLkxzcmMybW9k NDogLy8gc3JjIGFkZHJlc3MgaXMgMiBtb2QgNA0KKwlsOHVpCWE4LCBhMywgMAkvLyBnZXQgYnl0 ZSAwDQorCWFkZGkJYTQsIGE0LCAtMQkvLyBkZWNyZW1lbnQgbg0KKwlzOGkJYTgsIGExMCwgMAkv LyBzdG9yZSBieXRlIDANCisJYmVxeiAgICBhNCwgLkxyZXQgICAgICAgLy8gaWYgbiBpcyB6ZXJv DQorCWFkZGkJYTEwLCBhMTAsIDEJLy8gYWR2YW5jZSBkc3QgcG9pbnRlcg0KKwliZXF6CWE4LCAu TGZpbGwJLy8gaWYgYnl0ZSAwIGlzIHplcm8NCisJbDh1aQlhOCwgYTMsIDEJLy8gZ2V0IGJ5dGUg MA0KKwlhZGRpCWEzLCBhMywgMgkvLyBhZHZhbmNlIHNyYyBwb2ludGVyDQorCXM4aQlhOCwgYTEw LCAwCS8vIHN0b3JlIGJ5dGUgMA0KKwlhZGRpCWE0LCBhNCwgLTEJLy8gZGVjcmVtZW50IG4NCisJ YmVxeiAgICBhNCwgLkxyZXQgICAgICAgLy8gaWYgbiBpcyB6ZXJvDQorCWFkZGkJYTEwLCBhMTAs IDEJLy8gYWR2YW5jZSBkc3QgcG9pbnRlcg0KKwlibmV6CWE4LCAuTHNyY2FsaWduZWQNCisJagku TGZpbGwNCisNCisuTHJldDoNCisJbGVhZl9yZXR1cm4NCisNCisNCisJLmFsaWduCTQNCisJLmds b2JhbAlzdHJuY3B5DQorCS50eXBlCXN0cm5jcHksIEBmdW5jdGlvbg0KK3N0cm5jcHk6DQorCWxl YWZfZW50cnkgc3AsIDE2DQorCS8qIGEyID0gZHN0LCBhMyA9IHNyYyAqLw0KKw0KKwltb3YJYTEw LCBhMgkJLy8gbGVhdmUgZHN0IGluIHJldHVybiB2YWx1ZSByZWdpc3Rlcg0KKwliZXF6ICAgIGE0 LCAuTHJldCAgICAgICAvLyBpZiBuIGlzIHplcm8NCisNCisJbW92aQlhMTEsIE1BU0swDQorCW1v dmkJYTUsIE1BU0sxDQorCW1vdmkJYTYsIE1BU0syDQorCW1vdmkJYTcsIE1BU0szDQorCWJic2ku bAlhMywgMCwgLkxzcmMxbW9kMg0KKwliYnNpLmwJYTMsIDEsIC5Mc3JjMm1vZDQNCisuTHNyY2Fs aWduZWQ6DQorDQorCS8qIENoZWNrIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyBhbGlnbmVkLiAgKi8N CisJbW92aQlhOCwgMw0KKwlibm9uZQlhMTAsIGE4LCAuTGFsaWduZWQNCisNCisJagkuTGRzdHVu YWxpZ25lZA0KKw0KKw0KKy8qIEZpbGwgdGhlIGRzdCB3aXRoIHplcm9zIC0tIG4gaXMgYXQgbGVh c3QgMS4gICovDQorDQorLkxmaWxsOg0KKwltb3ZpCWE5LCAwDQorCWJic2kubAlhMTAsIDAsIC5M ZmlsbDFtb2QyDQorCWJic2kubAlhMTAsIDEsIC5MZmlsbDJtb2Q0DQorLkxmaWxsYWxpZ25lZDoN CisJYmx0aQlhNCwgNCwgLkxmaWxsY2xlYW51cA0KKw0KKwkvKiBMb29wIGZpbGxpbmcgY29tcGxl dGUgd29yZHMgd2l0aCB6ZXJvLiAgKi8NCisjaWYgWENIQUxfSEFWRV9MT09QUw0KKw0KKwlzcmFp CWE4LCBhNCwgMg0KKwlsb29wCWE4LCAxZg0KKwlzMzJpCWE5LCBhMTAsIDANCisJYWRkaQlhMTAs IGExMCwgNA0KKw0KKzE6CXNsbGkJYTgsIGE4LCAyDQorCXN1YglhNCwgYTQsIGE4DQorDQorI2Vs c2UgLyogIVhDSEFMX0hBVkVfTE9PUFMgKi8NCisNCisxOglzMzJpCWE5LCBhMTAsIDANCisJYWRk aQlhMTAsIGExMCwgNA0KKwlhZGRpCWE0LCBhNCwgLTQNCisJYmdlaSAgICBhNCwgNCwgMWINCisN CisjZW5kaWYgLyogIVhDSEFMX0hBVkVfTE9PUFMgKi8NCisNCisJYmVxeglhNCwgMmYNCisNCisu TGZpbGxjbGVhbnVwOg0KKwkvKiBGaWxsIGxlZnRvdmVyICgxIHRvIDMpIGJ5dGVzIHdpdGggemVy by4gICovDQorCXM4aQlhOSwgYTEwLCAwCS8vIHN0b3JlIGJ5dGUgMA0KKwlhZGRpCWE0LCBhNCwg LTEJLy8gZGVjcmVtZW50IG4NCisJYWRkaQlhMTAsIGExMCwgMQ0KKwlibmV6ICAgIGE0LCAuTGZp bGxjbGVhbnVwDQorDQorMjoJbGVhZl9yZXR1cm4NCisNCisuTGZpbGwxbW9kMjogLy8gZHN0IGFk ZHJlc3MgaXMgb2RkDQorCXM4aQlhOSwgYTEwLCAwCS8vIHN0b3JlIGJ5dGUgMA0KKwlhZGRpCWE0 LCBhNCwgLTEJLy8gZGVjcmVtZW50IG4NCisJYmVxeiAgICBhNCwgMmIJCS8vIGlmIG4gaXMgemVy bw0KKwlhZGRpICAgIGExMCwgYTEwLCAxCS8vIGFkdmFuY2UgZHN0IHBvaW50ZXINCisJYmJjaS5s CWExMCwgMSwgLkxmaWxsYWxpZ25lZCAvLyBpZiBkc3QgaXMgbm93IHdvcmQtYWxpZ25lZA0KKw0K Ky5MZmlsbDJtb2Q0OiAvLyBkc3QgYWRkcmVzcyBpcyAyIG1vZCA0DQorCXM4aQlhOSwgYTEwLCAw CS8vIHN0b3JlIGJ5dGUgMA0KKwlhZGRpCWE0LCBhNCwgLTEJLy8gZGVjcmVtZW50IG4NCisJYmVx eiAgICBhNCwgMmIJCS8vIGlmIG4gaXMgemVybw0KKwlzOGkJYTksIGExMCwgMQkvLyBzdG9yZSBi eXRlIDENCisJYWRkaQlhNCwgYTQsIC0xCS8vIGRlY3JlbWVudCBuDQorCWJlcXogICAgYTQsIDJi CQkvLyBpZiBuIGlzIHplcm8NCisJYWRkaSAgICBhMTAsIGExMCwgMgkvLyBhZHZhbmNlIGRzdCBw b2ludGVyDQorCWoJLkxmaWxsYWxpZ25lZA0KKw0KKw0KKy8qIGRzdCBpcyB3b3JkLWFsaWduZWQ7 IHNyYyBpcyB3b3JkLWFsaWduZWQ7IG4gaXMgYXQgbGVhc3QgMS4gICovDQorDQorCS5hbGlnbgk0 DQorI2lmIFhDSEFMX0hBVkVfTE9PUFMNCisjaWYgWENIQUxfSEFWRV9ERU5TSVRZDQorCS8qICgy IG1vZCA0KSBhbGlnbm1lbnQgZm9yIGxvb3AgaW5zdHJ1Y3Rpb24gKi8NCisjZWxzZQ0KKwkvKiAo MSBtb2QgNCkgYWxpZ25tZW50IGZvciBsb29wIGluc3RydWN0aW9uICovDQorCS5ieXRlCTANCisJ LmJ5dGUJMA0KKyNlbmRpZg0KKyNlbmRpZg0KKy5MYWxpZ25lZDoNCisjaWYgWENIQUxfSEFWRV9M T09QUw0KKyNpZiBYQ0hBTF9IQVZFX0RFTlNJVFkNCisJX21vdmkubglhOCwgMAkJLy8gc2V0IHVw IGZvciB0aGUgbWF4aW11bSBsb29wIGNvdW50DQorI2Vsc2UNCisJX21vdmkJYTgsIDAJCS8vIHNl dCB1cCBmb3IgdGhlIG1heGltdW0gbG9vcCBjb3VudA0KKyNlbmRpZg0KKwlsb29wCWE4LCAxZgkJ Ly8gbG9vcCBmb3JldmVyIChhbG1vc3QgYW55d2F5KQ0KKwlibHRpCWE0LCA1LCAuTGRzdHVuYWxp Z25lZCAvLyBuIGlzIG5lYXIgbGltaXQ7IGRvIG9uZSBhdCBhIHRpbWUNCisJbDMyaQlhOCwgYTMs IDAJLy8gZ2V0IHdvcmQgZnJvbSBzcmMNCisJYWRkaQlhMywgYTMsIDQJLy8gYWR2YW5jZSBzcmMg cG9pbnRlcg0KKwlibm9uZQlhOCwgYTExLCAuTHowCS8vIGlmIGJ5dGUgMCBpcyB6ZXJvDQorCWJu b25lCWE4LCBhNSwgLkx6MQkvLyBpZiBieXRlIDEgaXMgemVybw0KKwlibm9uZQlhOCwgYTYsIC5M ejIJLy8gaWYgYnl0ZSAyIGlzIHplcm8NCisJczMyaQlhOCwgYTEwLCAwCS8vIHN0b3JlIHdvcmQg dG8gZHN0DQorCWFkZGkJYTQsIGE0LCAtNAkvLyBkZWNyZW1lbnQgbg0KKwlhZGRpCWExMCwgYTEw LCA0CS8vIGFkdmFuY2UgZHN0IHBvaW50ZXINCisJYm5vbmUJYTgsIGE3LCAuTGZpbGwJLy8gaWYg Ynl0ZSAzIGlzIHplcm8NCisxOg0KKw0KKyNlbHNlIC8qICFYQ0hBTF9IQVZFX0xPT1BTICovDQor DQorMToJYmx0aQlhNCwgNSwgLkxkc3R1bmFsaWduZWQgLy8gbiBpcyBuZWFyIGxpbWl0OyBkbyBv bmUgYXQgYSB0aW1lDQorCWwzMmkJYTgsIGEzLCAwCS8vIGdldCB3b3JkIGZyb20gc3JjDQorCWFk ZGkJYTMsIGEzLCA0CS8vIGFkdmFuY2Ugc3JjIHBvaW50ZXINCisJYm5vbmUJYTgsIGExMSwgLkx6 MAkvLyBpZiBieXRlIDAgaXMgemVybw0KKwlibm9uZQlhOCwgYTUsIC5MejEJLy8gaWYgYnl0ZSAx IGlzIHplcm8NCisJYm5vbmUJYTgsIGE2LCAuTHoyCS8vIGlmIGJ5dGUgMiBpcyB6ZXJvDQorCXMz MmkJYTgsIGExMCwgMAkvLyBzdG9yZSB3b3JkIHRvIGRzdA0KKwlhZGRpCWE0LCBhNCwgLTQJLy8g ZGVjcmVtZW50IG4NCisJYWRkaQlhMTAsIGExMCwgNAkvLyBhZHZhbmNlIGRzdCBwb2ludGVyDQor CWJhbnkJYTgsIGE3LCAxYgkvLyBubyB6ZXJvZXMNCisjZW5kaWYgLyogIVhDSEFMX0hBVkVfTE9P UFMgKi8NCisNCisJagkuTGZpbGwNCisNCisuTHowOgkvKiBCeXRlIDAgaXMgemVyby4gICovDQor I2lmZGVmIF9fWFRFTlNBX0VCX18NCisJbW92aQlhOCwgMA0KKyNlbmRpZg0KKwlzOGkJYTgsIGEx MCwgMA0KKwlhZGRpCWE0LCBhNCwgLTEJLy8gZGVjcmVtZW50IG4NCisJYWRkaQlhMTAsIGExMCwg MQkvLyBhZHZhbmNlIGRzdCBwb2ludGVyDQorCWoJLkxmaWxsDQorDQorLkx6MToJLyogQnl0ZSAx IGlzIHplcm8uICAqLw0KKyNpZmRlZiBfX1hURU5TQV9FQl9fDQorICAgICAgICBleHR1aSAgIGE4 LCBhOCwgMTYsIDE2DQorI2VuZGlmDQorCXMxNmkJYTgsIGExMCwgMA0KKwlhZGRpCWE0LCBhNCwg LTIJLy8gZGVjcmVtZW50IG4NCisJYWRkaQlhMTAsIGExMCwgMgkvLyBhZHZhbmNlIGRzdCBwb2lu dGVyDQorCWoJLkxmaWxsDQorDQorLkx6MjoJLyogQnl0ZSAyIGlzIHplcm8uICAqLw0KKyNpZmRl ZiBfX1hURU5TQV9FQl9fDQorICAgICAgICBleHR1aSAgIGE4LCBhOCwgMTYsIDE2DQorI2VuZGlm DQorCXMxNmkJYTgsIGExMCwgMA0KKwltb3ZpCWE4LCAwDQorCXM4aQlhOCwgYTEwLCAyDQorCWFk ZGkJYTQsIGE0LCAtMwkvLyBkZWNyZW1lbnQgbg0KKwlhZGRpCWExMCwgYTEwLCAzCS8vIGFkdmFu Y2UgZHN0IHBvaW50ZXINCisJagkuTGZpbGwNCisNCisJLmFsaWduCTQNCisjaWYgWENIQUxfSEFW RV9MT09QUw0KKyNpZiBYQ0hBTF9IQVZFX0RFTlNJVFkNCisJLyogKDIgbW9kIDQpIGFsaWdubWVu dCBmb3IgbG9vcCBpbnN0cnVjdGlvbiAqLw0KKyNlbHNlDQorCS8qICgxIG1vZCA0KSBhbGlnbm1l bnQgZm9yIGxvb3AgaW5zdHJ1Y3Rpb24gKi8NCisJLmJ5dGUJMA0KKwkuYnl0ZQkwDQorI2VuZGlm DQorI2VuZGlmDQorLkxkc3R1bmFsaWduZWQ6DQorDQorI2lmIFhDSEFMX0hBVkVfTE9PUFMNCisj aWYgWENIQUxfSEFWRV9ERU5TSVRZDQorCV9tb3ZpLm4JYTgsIDAJCS8vIHNldCB1cCBmb3IgdGhl IG1heGltdW0gbG9vcCBjb3VudA0KKyNlbHNlDQorCV9tb3ZpCWE4LCAwCQkvLyBzZXQgdXAgZm9y IHRoZSBtYXhpbXVtIGxvb3AgY291bnQNCisjZW5kaWYNCisJbG9vcAlhOCwgMmYJCS8vIGxvb3Ag Zm9yZXZlciAoYWxtb3N0IGFueXdheSkNCisjZW5kaWYNCisxOglsOHVpCWE4LCBhMywgMA0KKwlh ZGRpCWEzLCBhMywgMQ0KKwlzOGkJYTgsIGExMCwgMA0KKwlhZGRpCWE0LCBhNCwgLTENCisJYmVx eglhNCwgM2YNCisJYWRkaQlhMTAsIGExMCwgMQ0KKyNpZiBYQ0hBTF9IQVZFX0xPT1BTDQorCWJl cXoJYTgsIDJmDQorI2Vsc2UNCisJYm5leglhOCwgMWINCisjZW5kaWYNCisyOglqCS5MZmlsbA0K Kw0KKzM6CWxlYWZfcmV0dXJuDQorLmVuZCBzY2hlZHVsZQ0KKw0KKwkuc2l6ZQlzdHJuY3B5LCAu IC0gc3RybmNweQ0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3h0ZW5z YS1hc20uaCBiL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3h0ZW5zYS1hc20uaA0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uYWNlNGMwMjg5DQotLS0gL2Rldi9udWxs DQorKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS94dGVuc2EtYXNtLmgNCkBAIC0wLDAg KzEsNzIgQEANCisvKiBDb3B5cmlnaHQgKGMpIDIwMDYgVGVuc2lsaWNhIEluYy4NCisNCisgICBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcNCisgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUNCisgICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nDQorICAgd2l0aG91dCBsaW1p dGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0K KyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0bw0KKyAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bw0KKyAgIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoNCisNCisgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZA0KKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KKw0KKyAgIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KKyAgIEVYUFJF U1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRg0KKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4NCisgICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQ0KKyAgIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs DQorICAgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUNCisgICBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4gICovDQorDQorI2luY2x1ZGUgPHh0ZW5zYS9jb25maWcvY29yZS1p c2EuaD4NCisNCisjIERlZmluZSBtYWNyb3MgZm9yIGxlYWYgZnVuY3Rpb24gZW50cnkgYW5kIHJl dHVybiwgc3VwcG9ydGluZyBlaXRoZXIgdGhlDQorIyBzdGFuZGFyZCByZWdpc3RlciB3aW5kb3dl ZCBBQkkgb3IgdGhlIG5vbi13aW5kb3dlZCBjYWxsMCBBQkkuICBUaGVzZQ0KKyMgbWFjcm9zIGRv IG5vdCBhbGxvY2F0ZSBhbnkgZXh0cmEgc3RhY2sgc3BhY2UsIHNvIHRoZXkgb25seSB3b3JrIGZv cg0KKyMgbGVhZiBmdW5jdGlvbnMgdGhhdCBkbyBub3QgbmVlZCB0byBzcGlsbCBhbnl0aGluZyB0 byB0aGUgc3RhY2suDQorDQorCS5tYWNybyBsZWFmX2VudHJ5IHJlZywgc2l6ZQ0KKyNpZiBYQ0hB TF9IQVZFX1dJTkRPV0VEICYmICFfX1hURU5TQV9DQUxMMF9BQklfXw0KKwllbnRyeSBccmVnLCBc c2l6ZQ0KKyNlbHNlDQorCS8qIGRvIG5vdGhpbmcgKi8NCisjZW5kaWYNCisJLmVuZG0NCisNCisJ Lm1hY3JvIGxlYWZfcmV0dXJuDQorI2lmIFhDSEFMX0hBVkVfV0lORE9XRUQgJiYgIV9fWFRFTlNB X0NBTEwwX0FCSV9fDQorCXJldHcNCisjZWxzZQ0KKwlyZXQNCisjZW5kaWYNCisJLmVuZG0NCisN CisJLm1hY3JvCXNyY19iCXIsIHcwLCB3MQ0KKyNpZmRlZiBfX1hURU5TQV9FQl9fDQorCXNyYwlc ciwgXHcwLCBcdzENCisjZWxzZQ0KKwlzcmMJXHIsIFx3MSwgXHcwDQorI2VuZGlmDQorCS5lbmRt DQorDQorCS5tYWNybwlzc2E4CXINCisjaWZkZWYgX19YVEVOU0FfRUJfXw0KKwlzc2E4Yglccg0K KyNlbHNlDQorCXNzYThsCVxyDQorI2VuZGlmDQorCS5lbmRtDQorDQorI2lmIFhDSEFMX0hBVkVf QkUNCisjZGVmaW5lCU1BU0swIDB4ZmYwMDAwMDANCisjZGVmaW5lCU1BU0sxIDB4MDBmZjAwMDAN CisjZGVmaW5lCU1BU0syIDB4MDAwMGZmMDANCisjZGVmaW5lCU1BU0szIDB4MDAwMDAwZmYNCisj ZWxzZQ0KKyNkZWZpbmUJTUFTSzAgMHgwMDAwMDBmZg0KKyNkZWZpbmUJTUFTSzEgMHgwMDAwZmYw MA0KKyNkZWZpbmUJTUFTSzIgMHgwMGZmMDAwMA0KKyNkZWZpbmUJTUFTSzMgMHhmZjAwMDAwMA0K KyNlbmRpZg0KKw0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3h0ZW5z YS50ZXggYi9uZXdsaWIvbGliYy9tYWNoaW5lL3h0ZW5zYS94dGVuc2EudGV4DQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi4xYTViZjY1ZTcNCi0tLSAvZGV2L251bGwNCisr KyBiL25ld2xpYi9saWJjL21hY2hpbmUveHRlbnNhL3h0ZW5zYS50ZXgNCkBAIC0wLDAgKzEsNzIg QEANCitAbm9kZSBYdGVuc2ENCitAY2hhcHRlciBGdW5jdGlvbnMgZm9yIFh0ZW5zYSBQcm9jZXNz b3JzDQorDQorVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBtYWNoaW5lLWRlcGVuZGVudCBmdW5jdGlv bnMgdGhhdCBhcmUgaW5jbHVkZWQNCitpbiB0aGUgQyBsaWJyYXJ5IHdoZW4gaXQgaXMgYnVpbHQg Zm9yIFh0ZW5zYSBwcm9jZXNzb3JzLg0KKw0KK0BtZW51DQorKiBzZXRqbXA6OiAgICAgIFNhdmUg c3RhY2sgZW52aXJvbm1lbnQNCisqIGxvbmdqbXA6OiAgICAgTm9uLWxvY2FsIGdvdG8NCitAZW5k IG1lbnUNCisNCitAcGFnZQ0KK0Bub2RlIHNldGptcA0KK0BzZWN0aW9uIEBjb2Rle3NldGptcH0t LS1zYXZlIHN0YWNrIGVudmlyb25tZW50DQorQGZpbmRleCBzZXRqbXANCitAc3Ryb25ne1N5bm9w c2lzfQ0KK0BleGFtcGxlDQorI2luY2x1ZGUgPHNldGptcC5oPg0KK2ludCBzZXRqbXAoam1wX2J1 ZiBlbnYpOw0KKw0KK0BlbmQgZXhhbXBsZQ0KK0BzdHJvbmd7RGVzY3JpcHRpb259QCoNCitAY29k ZXtzZXRqbXB9IGFuZCBAY29kZXtsb25nam1wfSBhcmUgdXNlZnVsIGZvciBkZWFsaW5nIHdpdGgg ZXJyb3JzDQorYW5kIGludGVycnVwdHMgZW5jb3VudGVyZWQgaW4gYSBsb3ctbGV2ZWwgc3Vicm91 dGluZSBvZiBhIHByb2dyYW0uDQorQGNvZGV7c2V0am1wfSBzYXZlcyB0aGUgc3RhY2sgY29udGV4 dC9lbnZpcm9ubWVudCBpbiBAY29kZXtlbnZ9IGZvcg0KK2xhdGVyIHVzZSBieSBAY29kZXtsb25n am1wfS4gIFRoZSBzdGFjayBjb250ZXh0IHdpbGwgYmUgaW52YWxpZGF0ZWQgaWYNCit0aGUgZnVu Y3Rpb24gd2hpY2ggY2FsbGVkIEBjb2Rle3NldGptcH0gcmV0dXJucy4NCisNCitAKg0KK0BzdHJv bmd7UmV0dXJuc31AKg0KK0Bjb2Rle3NldGptcH0gcmV0dXJucyAwIGlmIHJldHVybmluZyBkaXJl Y3RseSwgYW5kIG5vbi16ZXJvIHdoZW4NCityZXR1cm5pbmcgZnJvbSBAY29kZXtsb25nam1wfSB1 c2luZyB0aGUgc2F2ZWQgY29udGV4dC4NCisNCitAKg0KK0BzdHJvbmd7UG9ydGFiaWxpdHl9QCoN CitAY29kZXtzZXRqbXB9IGlzIEFOU0kgQyBhbmQgUE9TSVguMS4NCisNCitzZXRqbXAgcmVxdWly ZXMgbm8gc3VwcG9ydGluZyBPUyBzdWJyb3V0aW5lcy4NCisNCitAKg0KK0BwYWdlDQorQG5vZGUg bG9uZ2ptcA0KK0BzZWN0aW9uIEBjb2Rle2xvbmdqbXB9LS0tbm9uLWxvY2FsIGdvdG8NCitAZmlu ZGV4IGxvbmdqbXANCitAc3Ryb25ne1N5bm9wc2lzfQ0KK0BleGFtcGxlDQorI2luY2x1ZGUgPHNl dGptcC5oPg0KK3ZvaWQgbG9uZ2ptcChqbXBfYnVmIGVudiwgaW50IHZhbCk7DQorDQorQGVuZCBl eGFtcGxlDQorQHN0cm9uZ3tEZXNjcmlwdGlvbn1AKg0KK0Bjb2Rle2xvbmdqbXB9IGFuZCBAY29k ZXtzZXRqbXB9IGFyZSB1c2VmdWwgZm9yIGRlYWxpbmcgd2l0aCBlcnJvcnMNCithbmQgaW50ZXJy dXB0cyBlbmNvdW50ZXJlZCBpbiBhIGxvdy1sZXZlbCBzdWJyb3V0aW5lIG9mIGEgcHJvZ3JhbS4N CitAY29kZXtsb25nam1wfSByZXN0b3JlcyB0aGUgZW52aXJvbm1lbnQgc2F2ZWQgYnkgdGhlIGxh c3QgY2FsbCBvZg0KK0Bjb2Rle3NldGptcH0gd2l0aCB0aGUgY29ycmVzcG9uZGluZyBAY29kZXtl bnZ9IGFyZ3VtZW50LiAgQWZ0ZXINCitAY29kZXtsb25nam1wfSBpcyBjb21wbGV0ZWQsIHByb2dy YW0gZXhlY3V0aW9uIGNvbnRpbnVlcyBhcyBpZiB0aGUNCitjb3JyZXNwb25kaW5nIGNhbGwgb2Yg QGNvZGV7c2V0am1wfSBoYWQganVzdCByZXR1cm5lZCB0aGUgdmFsdWUNCitAY29kZXt2YWx9LiAg QGNvZGV7bG9uZ2ptcH0gY2Fubm90IGNhdXNlIDAgdG8gYmUgcmV0dXJuZWQuICBJZg0KK0Bjb2Rl e2xvbmdqbXB9IGlzIGludm9rZWQgd2l0aCBhIHNlY29uZCBhcmd1bWVudCBvZiAwLCAxIHdpbGwg YmUNCityZXR1cm5lZCBpbnN0ZWFkLg0KKw0KK0AqDQorQHN0cm9uZ3tSZXR1cm5zfUAqDQorVGhp cyBmdW5jdGlvbiBuZXZlciByZXR1cm5zLg0KKw0KK0AqDQorQHN0cm9uZ3tQb3J0YWJpbGl0eX1A Kg0KK0Bjb2Rle2xvbmdqbXB9IGlzIEFOU0kgQyBhbmQgUE9TSVguMS4NCisNCitsb25nam1wIHJl cXVpcmVzIG5vIHN1cHBvcnRpbmcgT1Mgc3Vicm91dGluZXMuDQorDQorQCoNCi0tIA0KMi4zNC4x DQoNCg==