From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on2121.outbound.protection.outlook.com [40.107.215.121]) by sourceware.org (Postfix) with ESMTPS id CE7283858D33 for ; Thu, 11 May 2023 06:18:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CE7283858D33 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=WPgrYQDhFUpZb2Oci8+uO6jNkrS8/1ESC5NTIIaYinKiIOIxMr8aheKyaKgkSjw+7OkDPdHJC4lH2OddnGRrE6sVnmBoVYkeJRFpIhkzEfs+s7q+qlc+MfBtnemIV5j1XwjIxnkYxXL7JHXs9l9RaZtqSJVvBVRQg7jgNCJQOIXa0Bov/ADAYV9dgoXTJW0PyM555+v9hrb+WCfB2JQmCEWAYN1buzWVKaF+wyLh0mV5EMqZb7A5Wswu4KhfCNnRMByjxR9QGZs1jxCMUnWFgckLC707NvAssA4HEW0PbPfrEFWzos0Ibv32f1azw1BfGTeVTjYM3R7tbmeAU/oSlA== 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=0Z7FQAYtYQH/pmySjEMfF+L9OVefA8RGRaWgKOeZxk0=; b=i4T3aaChpBshfTHTy+yxrBhea5mXhJnwJ1CMb4vpcxDi1j4faTwsn4qBJ0oSbxuz8+6EvEA1r47nPtdQDK365BYRfw8LPRF4uikY0cAJe9h8ybaNdRb88J2suHk7x/JAQW1t3DSSSMN/ff3Evr7uwem6/Y0d/Hoth4h2NUmcWRWaFRFFjNSj++azw8vD9gNFRR9ZjpmfBNK4w3n5n18SuX8KUIqXABds4jn5bGxNaN0kbS+8YYv89PUtfKNUVRFRb0nnpxEl5kbEqkqI2fhsAiiDT/YAWakh1iNZg/YeRv9u6dbu/CNmnoz+O4HWyERHJqVHr7QcOyUohGkAf+VbgQ== 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=0Z7FQAYtYQH/pmySjEMfF+L9OVefA8RGRaWgKOeZxk0=; b=UgphAbSDNXlFlpIlySPwARgc4kIBrxkXSjIUvROft5+/WtDAreU7n6pxwi1NqWg83HCUHD/pnGUfXjqrkL7T/sVYndv1vUJBROR7lH8sYzERNnooQ/3TC3VvdNelTa+FRNwKmdXE815V0DznFJfqx0tKZVjcz0HLk+VId7cOUio= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by SEYPR04MB6604.apcprd04.prod.outlook.com (2603:1096:101:c0::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33; Thu, 11 May 2023 06:18:37 +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.020; Thu, 11 May 2023 06:18:37 +0000 From: Alexey Lapshin To: "newlib@sourceware.org" CC: Alexey Gerenkov , "jcmvbkbc@gmail.com" , Ivan Grokhotkov Subject: [PATCH, RFC 3/8] libm: add xtensa port Thread-Topic: [PATCH, RFC 3/8] libm: add xtensa port Thread-Index: AQHZg9Bs68N8brSqp0O1v7jYa9bJ1g== Date: Thu, 11 May 2023 06:18:37 +0000 Message-ID: References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> In-Reply-To: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.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_|SEYPR04MB6604:EE_ x-ms-office365-filtering-correlation-id: 4f70e055-2f85-4428-8456-08db51e78e90 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qHDomQd3bs/MpO0DmD1CYtE93wZngZBqlSx+4IJUac6pIOJvBSNoxSt2cbcdwOGHFlNl1CgrhrU0L5hsxnklvY3a1pZ5o01WM9f0DCqZpJC90vR58t0FhW9IcX0uH6aIhwIeDHZBdBTGF0GD23N0wwJX56MapB52HtU3K345gz1bAU2L005T6NgQraKvnYBBoypcKd/TcvDSSEOliFALEmb4WCCqiSpfM72EWfd1AUolH4wHbpVZgjFIFKGBVdzSOmYkATTzTdAKLI7cqhpmEO3pdx4U5nhmWcn7n8I4rfrNvAzLgSHp4wp+nx1nHXjbH+J9RdInYboyvEmGjrsj6YhnGuFLqPqUbsoCPLwMvgqhb0boTUIf32m+7rDODcnVeJYRduw7MVVexCje3Pm3HxCcw9VId03fg1Bqq5gul4yhawpPkCB7dqKdD0aTuF8G7TH9Bm+ilv59HetHPOZ+XMBmxOH+ZbL8P+8sx+/npSTEfpZHajc39Z0SZlsvO0uv5BTiFmf9RjhmN7s1+LrGCbPbaPqNU23q45XDL9VC2y5s4vT/VgqBwmoARYUUinE4FgQPg1GkBchJ/I4tOTO4JNEh8hgTDNoO8m1XRpeoat5jjrVeUc9mSBa/SF0AALv3Di7IDriyTXptNph1+fB8EhGFO8KQm20WqlHMLAz5QAM3+pTGw37VwHJYTDDLiM1u 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)(39850400004)(396003)(346002)(366004)(376002)(136003)(451199021)(36756003)(86362001)(6916009)(54906003)(316002)(91956017)(478600001)(76116006)(66476007)(66446008)(4326008)(64756008)(6486002)(66946007)(66556008)(30864003)(44832011)(5660300002)(8936002)(2906002)(41300700001)(38070700005)(122000001)(38100700002)(186003)(8676002)(83380400001)(107886003)(6506007)(55236004)(26005)(6512007)(2616005)(71200400001)(66899021)(84970400001)(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?Rm4rTHRYQXhwTmtGdW1ZK0g0TDU2Wlpsb2VpaEpCbVJuTk1IQk1paTJGN2tv?= =?utf-8?B?bk1LUTZDRTZCRnpJdkZjOTUyaTBqSkRING1JMXpUNWovNDQzWGlxdWVCYXJG?= =?utf-8?B?VjNYNnpvTTdZMzN5VWdUMXlTbUZJcW93ZzRrS0diRW9uSjNyRk1DRlh6Yk9P?= =?utf-8?B?LzhnclZ4RmhzaFRYRW9UdlVPT2Vnd2Q4TGNxaWNLVVlUUzdXM1Vad1Zrdk5n?= =?utf-8?B?K3pWSnZNejd6SnZrVm1peGRlSjVpdHlteCt4MUdxa1FuNnpSeFgyempWTk1p?= =?utf-8?B?UkJVQzl2Q3kxeSttWXRSMTJaZ2NSdGhCc3lHZitoS0syc1dEQjhlb2tvdWJE?= =?utf-8?B?Rm9wb3p5aWZxdW5QeUNkNVVobFJaL25NMHhtWnRhT0JVZmN4L2cwRmJpMS9l?= =?utf-8?B?NFhjRUNqVE1OM1p2RWNXSnErTGo0V0FERy84QmFWWnl6RW95TnFoQUFpbUN0?= =?utf-8?B?MVRGSXhUMHNoMkRNM3RnSXc4NmlJUHNMVVRvcVNtUHluQ0RSMjA5REN3L29D?= =?utf-8?B?WWJubEdvMXB6THRCTmVuako5VGsxWVR0RnNxbTc1aGNSdElUN29JOHNnSURi?= =?utf-8?B?cFJVMHFGcGRvZWhiWFVHRjl4ZC8yTXpmcWZjcjNRaFo1VHUxOWpSaDdPazJN?= =?utf-8?B?UUhqTmFPQ1g5cEtwYk9FYWtTWkt5alBVRE9BeXB1anVyRnczR29kTlJKQTU2?= =?utf-8?B?QTl1R3BvUUFmeDhTU09UZmRrVG8yVHQwNGUzU2xYTTNLYjRJYW1FZ212aTFX?= =?utf-8?B?dEZMZzE5ZFhqcTgyNmVzUk9ueWhTTC94ZmZvd25wMXpWZExDU2ZYOStIWTVV?= =?utf-8?B?aU1xclVySll3VUJkQTBwN3hzWFp5c2xIK0RFN0NZM2xXS1Q4LzVlT0tVeEdT?= =?utf-8?B?NDlBSGpDTjdFMUlnSHRNUVlRRklHTGJpNlNaKzk2SWZqa0l5cVRpUG9ERGcw?= =?utf-8?B?eDBmaERKS1k3ZFIrTXFqUFBIOFdHcC9rZlBOc2RrMEdsVzlkZVJMVkg4c0hT?= =?utf-8?B?QkxBdHBUSVFRWFpERWxEaGRSeGZZT2VQLzBLNDROYmRKRWpxYlhRVnQ1UkNM?= =?utf-8?B?eTdyZ2E2S1VUbDdBOEszZHhQSUFvb2xha2p5ZG5SbXBLRUVCOGE2WjEyS25y?= =?utf-8?B?bFhCYlc3Y1I2cmVHWVB4TDZnYStrT0t6QTNQVzhqSkQ2OHkwb0lqWU9HT055?= =?utf-8?B?Y2dTV3FTbDFGRlhPUWVhQVF6RmJpSWV3eWRrZ3MrVXVmMkI0ajRjRlpHcG5t?= =?utf-8?B?M09ZMFF2R3ovQmdPOG5mUGt2S3Nrd1pic2N0d285cCtNTEZpM2YySmZ3cFNq?= =?utf-8?B?UGhKL3dja2o3enFJV0RtREhwMlJmS0UxS2cvMVIzVXFmd3M1Z2tQeHZiTU82?= =?utf-8?B?VC96LysvYXRkWmR3bWpkUm1oQ3VLcnNQSG1hVGdCWFoveFFoelF5b204bXUr?= =?utf-8?B?YXlIRDNQNWZKVkdNT3lCVWhKbkRrUXhDaEpzWFBmalJxY1F3TEk3T1VWd2V5?= =?utf-8?B?WkpZaXpoNkJyOVdrYklXZ3BxUXhLODRjSUV5WnNMT1VkSUFrd3lFWHVlRlRa?= =?utf-8?B?RzBDN3RHZHlLNDJyVmxJd1BDZWtiVGl4VGpPZGFIa1NjUEowK2NuaUZOS2hn?= =?utf-8?B?SldmZHpQNzcwV1FnYXplbHJnZkUzV3RKUXVNNFZxWXMxTHluNGFrbUczWS9W?= =?utf-8?B?SXhzVk5Cdk9lTm5pdnUvbGwwa2hkY1pYU0Jjb0VuS01IQW9SOG9wanFpeCtL?= =?utf-8?B?T05FcXZkNmQzYTFKY053QmlXWDNqZFdlL1JEMlR2aCt1cHZtWWtiYndnM0M0?= =?utf-8?B?L0t6aVQ1NDFNamJPN2xjMk9MSDZXZlltbUw0ZUsrLzdpT0lRUzZxblRpZ2l6?= =?utf-8?B?VXJRc3BRRm9DcExkQ1JUdEZrZlFXUkQzYm1hQ0hEZWRQcmpiMGFpak93b3JX?= =?utf-8?B?YkRlTHQ3Z2MzMnJ2OTFheHNDOVNpUzVXUEZyUFBBSks2U0hXdzhTdmlFbkRO?= =?utf-8?B?VitMeVZUc0JmYTFkMTg2TG9HV2tYRUhNQklvV0tNR09MMWF2OGE0MWgzQlZI?= =?utf-8?B?UEhTZFVWamlTVDAvd1pialA4emJHcDU5NXp5ZHBjUThJenNRRld4TjlDNGRr?= =?utf-8?B?amxuYnJ5bHIyV08vYjZDVkt0REcwMTVoUlYyaS9pcldvYzBTTHZGaXZSdnA4?= =?utf-8?Q?sNjhWYGiIRH8AOz+8yapQyE=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: 4f70e055-2f85-4428-8456-08db51e78e90 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2023 06:18:37.4108 (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: Xx/7LZ/DX9BbkLZ9hosIeYIXHJTSocwMQ+Kp5Ue8Y5aYjpmgNjFtMgrby6tM+gc3mhPZ54WLsqA6eh6lZHqqT0IpdboFLMWEf/tl+ZohSc4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR04MB6604 X-Spam-Status: No, score=-11.2 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: bmV3bGliOg0KICAgICAgICAqIGxpYm0vbWFjaGluZS9jb25maWd1cmU6IGFkZCB4dGVuc2EgcG9y dA0KICAgICAgICAqIGxpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZpbGUuYW06IGluaXRpYWwgY29t bWl0DQogICAgICAgICogbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5pbjogTGlrZXdpc2Uu DQogICAgICAgICogbGlibS9tYWNoaW5lL3h0ZW5zYS9hY2xvY2FsLm00OiBMaWtld2lzZS4NCiAg ICAgICAgKiBsaWJtL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZTogTGlrZXdpc2UuDQogICAgICAg ICogbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUuaW46IExpa2V3aXNlLg0KICAgICAgICAq IGxpYm0vbWFjaGluZS94dGVuc2EvZmVjbGVhcmV4Y2VwdC5jOiBMaWtld2lzZS4NCiAgICAgICAg KiBsaWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZW52LmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp Ym0vbWFjaGluZS94dGVuc2EvZmVnZXRleGNlcHQuYzogTGlrZXdpc2UuDQogICAgICAgICogbGli bS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcuYzogTGlrZXdpc2UuDQogICAgICAgICog bGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldHJvdW5kLmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp Ym0vbWFjaGluZS94dGVuc2EvZmVob2xkZXhjZXB0LmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp Ym0vbWFjaGluZS94dGVuc2EvZmVyYWlzZWV4Y2VwdC5jOiBMaWtld2lzZS4NCiAgICAgICAgKiBs aWJtL21hY2hpbmUveHRlbnNhL2ZldGVzdGV4Y2VwdC5jOiBMaWtld2lzZS4NCiAgICAgICAgKiBs aWJtL21hY2hpbmUveHRlbnNhL2ZldXBkYXRlZW52LmM6IExpa2V3aXNlLg0KDQotLS0NCiBuZXds aWIvbGlibS9tYWNoaW5lL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICB8ICAgIDMgKw0KIG5ld2xp Yi9saWJtL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmFtICAgICAgIHwgICAyMSArDQogbmV3bGli L2xpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZpbGUuaW4gICAgICAgfCAgNDY3ICsrDQogbmV3bGli L2xpYm0vbWFjaGluZS94dGVuc2EvYWNsb2NhbC5tNCAgICAgICAgfCAgODgwICsrKysNCiBuZXds aWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUgICAgICAgICB8IDQ2MjMgKysrKysrKysr KysrKysrKysrDQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlLmluICAgICAg fCAgIDE0ICsNCiBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWNsZWFyZXhjZXB0LmMgICB8 ICAgNDkgKw0KIG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZW52LmMgICAgICAgIHwg ICA1NiArDQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRleGNlcHQuYyAgICAgfCAg IDY3ICsNCiBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcuYyB8ICAg NjQgKw0KIG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0cm91bmQuYyAgICAgIHwgICA1 MCArDQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVob2xkZXhjZXB0LmMgICAgfCAgIDU1 ICsNCiBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXJhaXNlZXhjZXB0LmMgICB8ICAgNTAg Kw0KIG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZldGVzdGV4Y2VwdC5jICAgIHwgICA0MSAr DQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmV1cGRhdGVlbnYuYyAgICAgfCAgIDQ1ICsN CiAxNSBmaWxlcyBjaGFuZ2VkLCA2NDg1IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZpbGUuYW0NCiBjcmVhdGUgbW9kZSAx MDA2NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZpbGUuaW4NCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvYWNsb2NhbC5tNA0KIGNyZWF0ZSBt b2RlIDEwMDc1NSBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUNCiBjcmVhdGUg bW9kZSAxMDA2NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlLmluDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlY2xlYXJleGNlcHQu Yw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGVu di5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0 ZXhjZXB0LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2Ev ZmVnZXRleGNlcHRmbGFnLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYm0vbWFjaGlu ZS94dGVuc2EvZmVnZXRyb3VuZC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJtL21h Y2hpbmUveHRlbnNhL2ZlaG9sZGV4Y2VwdC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9s aWJtL21hY2hpbmUveHRlbnNhL2ZlcmFpc2VleGNlcHQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBu ZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXRlc3RleGNlcHQuYw0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXVwZGF0ZWVudi5jDQoNCmRpZmYgLS1n aXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL2NvbmZpZ3VyZQ0KYi9uZXdsaWIvbGlibS9tYWNoaW5l L2NvbmZpZ3VyZQ0KaW5kZXggOTM4MDk0NzEzLi42MjA5NjM5OWMgMTAwNzU1DQotLS0gYS9uZXds aWIvbGlibS9tYWNoaW5lL2NvbmZpZ3VyZQ0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS9jb25m aWd1cmUNCkBAIC03OTQsNiArNzk0LDcgQEAgcHJ1DQogc3B1DQogcmlzY3YNCiB4ODZfNjQNCit4 dGVuc2ENCiBwb3dlcnBjDQogc3BhcmMNCiBtaXBzJw0KQEAgLTExODI0LDYgKzExODI1LDggQEAg c3ViZGlycz0iJHN1YmRpcnMgYWFyY2g2NCINCiAJcmlzY3YpIHN1YmRpcnM9IiRzdWJkaXJzIHJp c2N2Ig0KICA7Ow0KIAl4ODZfNjQpIHN1YmRpcnM9IiRzdWJkaXJzIHg4Nl82NCINCisgOzsNCisJ eHRlbnNhKSBzdWJkaXJzPSIkc3ViZGlycyB4dGVuc2EiDQogIDs7DQogCXBvd2VycGMpIHN1YmRp cnM9IiRzdWJkaXJzIHBvd2VycGMiDQogIDs7DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFj aGluZS94dGVuc2EvTWFrZWZpbGUuYW0NCmIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvTWFr ZWZpbGUuYW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjU3NmZlNzc1 Mg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZp bGUuYW0NCkBAIC0wLDAgKzEsMjEgQEANCisjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9t YWtlIHRvIGdlbmVyYXRlIE1ha2VmaWxlLmluDQorDQorQVVUT01BS0VfT1BUSU9OUyA9IGN5Z251 cw0KKw0KK0lOQ0xVREVTID0gLUkgJChuZXdsaWJfYmFzZWRpcikvLi4vbmV3bGliL2xpYm0vY29t bW9uICQoTkVXTElCX0NGTEFHUykNClwNCisJJChDUk9TU19DRkxBR1MpICQoVEFSR0VUX0NGTEFH UykNCisNCitMSUJfU09VUkNFUyA9IGZlY2xlYXJleGNlcHQuYyBmZXJhaXNlZXhjZXB0LmMgZmV1 cGRhdGVlbnYuYwlcDQorCWZlZ2V0cm91bmQuYyBmZWdldGVudi5jIGZlaG9sZGV4Y2VwdC5jIGZl dGVzdGV4Y2VwdC5jCVwNCisJZmVnZXRleGNlcHRmbGFnLmMgZmVnZXRleGNlcHQuYw0KKw0KK25v aW5zdF9MSUJSQVJJRVMgPSBsaWIuYQ0KK2xpYl9hX1NPVVJDRVMgPSAkKExJQl9TT1VSQ0VTKQ0K K2xpYl9hX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKQ0KK2xpYl9hX0NDQVNGTEFHUyA9ICQoQU1fQ0NB U0ZMQUdTKQ0KK25vaW5zdF9EQVRBID0NCisNCitpbmNsdWRlICQoc3JjZGlyKS8uLi8uLi8uLi9N YWtlZmlsZS5zaGFyZWQNCisNCitBQ0xPQ0FMX0FNRkxBR1MgPSAtSSAuLi8uLi8uLiAtSSAuLi8u Li8uLi8uLg0KK0NPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTID0gJChuZXdsaWJfYmFzZWRpcikv Y29uZmlndXJlLmhvc3QNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9N YWtlZmlsZS5pbg0KYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5pbg0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uY2M3YmFiM2ZjDQotLS0gL2Rldi9u dWxsDQorKysgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5pbg0KQEAgLTAs MCArMSw0NjcgQEANCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjkuNSBm cm9tIE1ha2VmaWxlLmFtLg0KKyMgQGNvbmZpZ3VyZV9pbnB1dEANCisNCisjIENvcHlyaWdodCAo QykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwN CisjIDIwMDMsIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMg VGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0 cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMg dGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dA0KKyMg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQQ0KKyMgUEFSVElDVUxBUiBQVVJQT1NFLg0KKw0KK0BTRVRfTUFLRUANCisNCisNCitTT1VS Q0VTID0gJChsaWJfYV9TT1VSQ0VTKQ0KKw0KK3NyY2RpciA9IEBzcmNkaXJADQordG9wX3NyY2Rp ciA9IEB0b3Bfc3JjZGlyQA0KK1ZQQVRIID0gQHNyY2RpckANCitwa2dkYXRhZGlyID0gJChkYXRh ZGlyKS9AUEFDS0FHRUANCitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VADQorcGtnaW5j bHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VADQordG9wX2J1aWxkZGlyID0gLg0KK2Ft X19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QN CitJTlNUQUxMID0gQElOU1RBTExADQoraW5zdGFsbF9zaF9EQVRBID0gJChpbnN0YWxsX3NoKSAt YyAtbSA2NDQNCitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jDQoraW5zdGFs bF9zaF9TQ1JJUFQgPSAkKGluc3RhbGxfc2gpIC1jDQorSU5TVEFMTF9IRUFERVIgPSAkKElOU1RB TExfREFUQSkNCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpDQorTk9STUFM X0lOU1RBTEwgPSA6DQorUFJFX0lOU1RBTEwgPSA6DQorUE9TVF9JTlNUQUxMID0gOg0KK05PUk1B TF9VTklOU1RBTEwgPSA6DQorUFJFX1VOSU5TVEFMTCA9IDoNCitQT1NUX1VOSU5TVEFMTCA9IDoN CitidWlsZF90cmlwbGV0ID0gQGJ1aWxkQA0KK2hvc3RfdHJpcGxldCA9IEBob3N0QA0KK0RJU1Rf Q09NTU9OID0gJChzcmNkaXIpLy4uLy4uLy4uL01ha2VmaWxlLnNoYXJlZCBcDQorCSQoc3JjZGly KS8uLi8uLi8uLi8uLi9jb25maWcuZ3Vlc3MgXA0KKwkkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29u ZmlnLnN1YiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXA0KKwkkKHNyY2RpcikvTWFrZWZpbGUuYW0g JCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgXA0KKwkkKGFtX19jb25maWd1cmVfZGVwcykgJChzcmNk aXIpLy4uLy4uLy4uLy4uL21raW5zdGFsbGRpcnMgXA0KKwkkKHNyY2RpcikvLi4vLi4vLi4vLi4v Y29tcGlsZSAkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29tcGlsZSBcDQorCSQoc3JjZGlyKS8uLi8u Li8uLi8uLi9jb21waWxlICQoc3JjZGlyKS8uLi8uLi8uLi8uLi9jb21waWxlIFwNCisJJChzcmNk aXIpLy4uLy4uLy4uLy4uL2NvbXBpbGUgJChzcmNkaXIpLy4uLy4uLy4uLy4uL2NvbXBpbGUgXA0K KwkkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29tcGlsZSAkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29t cGlsZSBcDQorCSQoc3JjZGlyKS8uLi8uLi8uLi8uLi9jb21waWxlDQorc3ViZGlyID0gLg0KK0FD TE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQNCithbV9fYWNsb2NhbF9tNF9kZXBz ID0gJCh0b3Bfc3JjZGlyKS8uLi8uLi8uLi9hY2luY2x1ZGUubTQgXA0KKwkkKHRvcF9zcmNkaXIp L2NvbmZpZ3VyZS5pbg0KK2FtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVw cykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKQ0KXA0KKwkkKEFDTE9DQUxfTTQpDQorYW1fX0NP TkZJR19ESVNUQ0xFQU5fRklMRVMgPSBjb25maWcuc3RhdHVzIGNvbmZpZy5jYWNoZSBjb25maWcu bG9nIFwNCisgY29uZmlndXJlLmxpbmVubyBjb25maWd1cmUuc3RhdHVzLmxpbmVubw0KK21raW5z dGFsbGRpcnMgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpLy4uLy4uLy4uLy4uL21raW5zdGFsbGRp cnMNCitDT05GSUdfQ0xFQU5fRklMRVMgPQ0KK0xJQlJBUklFUyA9ICQobm9pbnN0X0xJQlJBUklF UykNCitBUkZMQUdTID0gY3J1DQorbGliX2FfQVIgPSAkKEFSKSAkKEFSRkxBR1MpDQorbGliX2Ff TElCQUREID0NCithbV9fb2JqZWN0c18xID0gbGliX2EtZmVjbGVhcmV4Y2VwdC4kKE9CSkVYVCkg XA0KKwlsaWJfYS1mZXJhaXNlZXhjZXB0LiQoT0JKRVhUKSBsaWJfYS1mZXVwZGF0ZWVudi4kKE9C SkVYVCkgXA0KKwlsaWJfYS1mZWdldHJvdW5kLiQoT0JKRVhUKSBsaWJfYS1mZWdldGVudi4kKE9C SkVYVCkgXA0KKwlsaWJfYS1mZWhvbGRleGNlcHQuJChPQkpFWFQpIGxpYl9hLWZldGVzdGV4Y2Vw dC4kKE9CSkVYVCkgXA0KKwlsaWJfYS1mZWdldGV4Y2VwdGZsYWcuJChPQkpFWFQpIGxpYl9hLWZl Z2V0ZXhjZXB0LiQoT0JKRVhUKQ0KK2FtX2xpYl9hX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzEp DQorbGliX2FfT0JKRUNUUyA9ICQoYW1fbGliX2FfT0JKRUNUUykNCitERUZBVUxUX0lOQ0xVREVT ID0gLUkuIC1JJChzcmNkaXIpDQorZGVwY29tcCA9DQorYW1fX2RlcGZpbGVzX21heWJlID0NCitD T01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQo QU1fQ1BQRkxBR1MpDQpcDQorCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykNCitD Q0xEID0gJChDQykNCitMSU5LID0gJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1f TERGTEFHUykgJChMREZMQUdTKSAtbyAkQA0KK1NPVVJDRVMgPSAkKGxpYl9hX1NPVVJDRVMpDQor REFUQSA9ICQobm9pbnN0X0RBVEEpDQorRVRBR1MgPSBldGFncw0KK0NUQUdTID0gY3RhZ3MNCitB Q0xPQ0FMID0gQEFDTE9DQUxADQorQU1ERVBfRkFMU0UgPSBAQU1ERVBfRkFMU0VADQorQU1ERVBf VFJVRSA9IEBBTURFUF9UUlVFQA0KK0FNVEFSID0gQEFNVEFSQA0KK0FSID0gQEFSQA0KK0FTID0g QEFTQA0KK0FVVE9DT05GID0gQEFVVE9DT05GQA0KK0FVVE9IRUFERVIgPSBAQVVUT0hFQURFUkAN CitBVVRPTUFLRSA9IEBBVVRPTUFLRUANCitBV0sgPSBAQVdLQA0KK0NDID0gQENDQA0KK0NDQVMg PSBAQ0NBU0ANCitDQ0FTRkxBR1MgPSBAQ0NBU0ZMQUdTQA0KK0NDREVQTU9ERSA9IEBDQ0RFUE1P REVADQorQ1lHUEFUSF9XID0gQENZR1BBVEhfV0ANCitERUZTID0gQERFRlNADQorREVQRElSID0g QERFUERJUkANCitFQ0hPX0MgPSBARUNIT19DQA0KK0VDSE9fTiA9IEBFQ0hPX05ADQorRUNIT19U ID0gQEVDSE9fVEANCitFTElYX0xFVkVMXzBfRkFMU0UgPSBARUxJWF9MRVZFTF8wX0ZBTFNFQA0K K0VMSVhfTEVWRUxfMF9UUlVFID0gQEVMSVhfTEVWRUxfMF9UUlVFQA0KK0VMSVhfTEVWRUxfMV9G QUxTRSA9IEBFTElYX0xFVkVMXzFfRkFMU0VADQorRUxJWF9MRVZFTF8xX1RSVUUgPSBARUxJWF9M RVZFTF8xX1RSVUVADQorRUxJWF9MRVZFTF8yX0ZBTFNFID0gQEVMSVhfTEVWRUxfMl9GQUxTRUAN CitFTElYX0xFVkVMXzJfVFJVRSA9IEBFTElYX0xFVkVMXzJfVFJVRUANCitFTElYX0xFVkVMXzNf RkFMU0UgPSBARUxJWF9MRVZFTF8zX0ZBTFNFQA0KK0VMSVhfTEVWRUxfM19UUlVFID0gQEVMSVhf TEVWRUxfM19UUlVFQA0KK0VMSVhfTEVWRUxfNF9GQUxTRSA9IEBFTElYX0xFVkVMXzRfRkFMU0VA DQorRUxJWF9MRVZFTF80X1RSVUUgPSBARUxJWF9MRVZFTF80X1RSVUVADQorSU5TVEFMTF9EQVRB ID0gQElOU1RBTExfREFUQUANCitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQA0K K0lOU1RBTExfU0NSSVBUID0gQElOU1RBTExfU0NSSVBUQA0KK0lOU1RBTExfU1RSSVBfUFJPR1JB TSA9IEBJTlNUQUxMX1NUUklQX1BST0dSQU1ADQorTERGTEFHUyA9IEBMREZMQUdTQA0KK0xJQk9C SlMgPSBATElCT0JKU0ANCitMSUJTID0gQExJQlNADQorTFRMSUJPQkpTID0gQExUTElCT0JKU0AN CitNQUlOVCA9IEBNQUlOVEANCitNQUlOVEFJTkVSX01PREVfRkFMU0UgPSBATUFJTlRBSU5FUl9N T0RFX0ZBTFNFQA0KK01BSU5UQUlORVJfTU9ERV9UUlVFID0gQE1BSU5UQUlORVJfTU9ERV9UUlVF QA0KK01BS0VJTkZPID0gQE1BS0VJTkZPQA0KK01BWV9TVVBQTFlfU1lTQ0FMTFNfRkFMU0UgPSBA TUFZX1NVUFBMWV9TWVNDQUxMU19GQUxTRUANCitNQVlfU1VQUExZX1NZU0NBTExTX1RSVUUgPSBA TUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFQA0KK05FV0xJQl9DRkxBR1MgPSBATkVXTElCX0NGTEFH U0ANCitOT19JTkNMVURFX0xJU1QgPSBATk9fSU5DTFVERV9MSVNUQA0KK09CSkVYVCA9IEBPQkpF WFRADQorUEFDS0FHRSA9IEBQQUNLQUdFQA0KK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0Vf QlVHUkVQT1JUQA0KK1BBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVADQorUEFDS0FHRV9TVFJJ TkcgPSBAUEFDS0FHRV9TVFJJTkdADQorUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFN RUANCitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEANCitQQUNLQUdFX1ZFUlNJT04gPSBAUEFD S0FHRV9WRVJTSU9OQA0KK1BBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQA0KK1JBTkxJ QiA9IEBSQU5MSUJADQorUkVBREVMRiA9IEBSRUFERUxGQA0KK1NFVF9NQUtFID0gQFNFVF9NQUtF QA0KK1NIRUxMID0gQFNIRUxMQA0KK1NUUklQID0gQFNUUklQQA0KK1VTRV9MSUJUT09MX0ZBTFNF ID0gQFVTRV9MSUJUT09MX0ZBTFNFQA0KK1VTRV9MSUJUT09MX1RSVUUgPSBAVVNFX0xJQlRPT0xf VFJVRUANCitWRVJTSU9OID0gQFZFUlNJT05ADQorYWV4dCA9IEBhZXh0QA0KK2FtX19mYXN0ZGVw Q0NfRkFMU0UgPSBAYW1fX2Zhc3RkZXBDQ19GQUxTRUANCithbV9fZmFzdGRlcENDX1RSVUUgPSBA YW1fX2Zhc3RkZXBDQ19UUlVFQA0KK2FtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQA0KK2FtX19s ZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RADQorYW1fX3F1b3RlID0gQGFtX19xdW90ZUAN CithbV9fdGFyID0gQGFtX190YXJADQorYW1fX3VudGFyID0gQGFtX191bnRhckANCitiaW5kaXIg PSBAYmluZGlyQA0KK2J1aWxkID0gQGJ1aWxkQA0KK2J1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFz QA0KK2J1aWxkX2NwdSA9IEBidWlsZF9jcHVADQorYnVpbGRfb3MgPSBAYnVpbGRfb3NADQorYnVp bGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckANCitkYXRhZGlyID0gQGRhdGFkaXJADQorZGF0YXJv b3RkaXIgPSBAZGF0YXJvb3RkaXJADQorZG9jZGlyID0gQGRvY2RpckANCitkdmlkaXIgPSBAZHZp ZGlyQA0KK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QA0KK2hvc3QgPSBAaG9zdEANCitob3N0 X2FsaWFzID0gQGhvc3RfYWxpYXNADQoraG9zdF9jcHUgPSBAaG9zdF9jcHVADQoraG9zdF9vcyA9 IEBob3N0X29zQA0KK2hvc3RfdmVuZG9yID0gQGhvc3RfdmVuZG9yQA0KK2h0bWxkaXIgPSBAaHRt bGRpckANCitpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJADQoraW5mb2RpciA9IEBpbmZvZGlyQA0K K2luc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEANCitsaWJkaXIgPSBAbGliZGlyQA0KK2xpYmV4ZWNk aXIgPSBAbGliZXhlY2RpckANCitsaWJtX21hY2hpbmVfZGlyID0gQGxpYm1fbWFjaGluZV9kaXJA DQorbG9jYWxlZGlyID0gQGxvY2FsZWRpckANCitsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVk aXJADQorbHBmeCA9IEBscGZ4QA0KK21hY2hpbmVfZGlyID0gQG1hY2hpbmVfZGlyQA0KK21hbmRp ciA9IEBtYW5kaXJADQorbWtkaXJfcCA9IEBta2Rpcl9wQA0KK25ld2xpYl9iYXNlZGlyID0gQG5l d2xpYl9iYXNlZGlyQA0KK29leHQgPSBAb2V4dEANCitvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1 ZGVkaXJADQorcGRmZGlyID0gQHBkZmRpckANCitwcmVmaXggPSBAcHJlZml4QA0KK3Byb2dyYW1f dHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUANCitwc2RpciA9IEBwc2Rp ckANCitzYmluZGlyID0gQHNiaW5kaXJADQorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVk aXJADQorc3lzX2RpciA9IEBzeXNfZGlyQA0KK3N5c2NvbmZkaXIgPSBAc3lzY29uZmRpckANCit0 YXJnZXRfYWxpYXMgPSBAdGFyZ2V0X2FsaWFzQA0KK0FVVE9NQUtFX09QVElPTlMgPSBjeWdudXMN CitJTkNMVURFUyA9IC1JICQobmV3bGliX2Jhc2VkaXIpLy4uL25ld2xpYi9saWJtL2NvbW1vbiAk KE5FV0xJQl9DRkxBR1MpDQpcDQorCSQoQ1JPU1NfQ0ZMQUdTKSAkKFRBUkdFVF9DRkxBR1MpDQor DQorTElCX1NPVVJDRVMgPSBmZWNsZWFyZXhjZXB0LmMgZmVyYWlzZWV4Y2VwdC5jIGZldXBkYXRl ZW52LmMJXA0KKwlmZWdldHJvdW5kLmMgZmVnZXRlbnYuYyBmZWhvbGRleGNlcHQuYyBmZXRlc3Rl eGNlcHQuYwlcDQorCWZlZ2V0ZXhjZXB0ZmxhZy5jIGZlZ2V0ZXhjZXB0LmMNCisNCitub2luc3Rf TElCUkFSSUVTID0gbGliLmENCitsaWJfYV9TT1VSQ0VTID0gJChMSUJfU09VUkNFUykNCitsaWJf YV9DRkxBR1MgPSAkKEFNX0NGTEFHUykNCitsaWJfYV9DQ0FTRkxBR1MgPSAkKEFNX0NDQVNGTEFH UykNCitub2luc3RfREFUQSA9IA0KK0FDTE9DQUxfQU1GTEFHUyA9IC1JIC4uLy4uLy4uIC1JIC4u Ly4uLy4uLy4uDQorQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMgPSAkKG5ld2xpYl9iYXNlZGly KS9jb25maWd1cmUuaG9zdA0KK2FsbDogYWxsLWFtDQorDQorLlNVRkZJWEVTOg0KKy5TVUZGSVhF UzogLmMgLm8gLm9iag0KK2FtLS1yZWZyZXNoOg0KKwlAOg0KKyQoc3JjZGlyKS9NYWtlZmlsZS5p bjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0NCiQoc3JjZGly KS8uLi8uLi8uLi9NYWtlZmlsZS5zaGFyZWQgJChhbV9fY29uZmlndXJlX2RlcHMpDQorCUBmb3Ig ZGVwIGluICQ/OyBkbyBcDQorCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcDQor CSAgICAqJCRkZXAqKSBcDQorCSAgICAgIGVjaG8gJyBjZCAkKHNyY2RpcikgJiYgJChBVVRPTUFL RSkgLS1jeWdudXMgJzsgXA0KKwkgICAgICBjZCAkKHNyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1j eWdudXMgIFwNCisJCSYmIGV4aXQgMDsgXA0KKwkgICAgICBleGl0IDE7OyBcDQorCSAgZXNhYzsg XA0KKwlkb25lOyBcDQorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0t Y3lnbnVzICBNYWtlZmlsZSc7IFwNCisJY2QgJCh0b3Bfc3JjZGlyKSAmJiBcDQorCSAgJChBVVRP TUFLRSkgLS1jeWdudXMgIE1ha2VmaWxlDQorLlBSRUNJT1VTOiBNYWtlZmlsZQ0KK01ha2VmaWxl OiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMNCisJ QGNhc2UgJyQ/JyBpbiBcDQorCSAgKmNvbmZpZy5zdGF0dXMqKSBcDQorCSAgICBlY2hvICcgJChT SEVMTCkgLi9jb25maWcuc3RhdHVzJzsgXA0KKwkgICAgJChTSEVMTCkgLi9jb25maWcuc3RhdHVz OzsgXA0KKwkgICopIFwNCisJICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVM TCkgLi9jb25maWcuc3RhdHVzICRADQokKGFtX19kZXBmaWxlc19tYXliZSknOyBcDQorCSAgICBj ZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRADQokKGFtX19k ZXBmaWxlc19tYXliZSk7OyBcDQorCWVzYWM7DQorDQorJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5z dGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlDQokKENPTkZJR19TVEFUVVNfREVQRU5ERU5D SUVTKQ0KKwkkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrDQorDQorJCh0b3Bfc3Jj ZGlyKS9jb25maWd1cmU6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fY29uZmlndXJlX2Rl cHMpDQorCWNkICQoc3JjZGlyKSAmJiAkKEFVVE9DT05GKQ0KKyQoQUNMT0NBTF9NNCk6IEBNQUlO VEFJTkVSX01PREVfVFJVRUAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQ0KKwljZCAkKHNyY2Rpcikg JiYgJChBQ0xPQ0FMKSAkKEFDTE9DQUxfQU1GTEFHUykNCisNCitjbGVhbi1ub2luc3RMSUJSQVJJ RVM6DQorCS10ZXN0IC16ICIkKG5vaW5zdF9MSUJSQVJJRVMpIiB8fCBybSAtZiAkKG5vaW5zdF9M SUJSQVJJRVMpDQorbGliLmE6ICQobGliX2FfT0JKRUNUUykgJChsaWJfYV9ERVBFTkRFTkNJRVMp IA0KKwktcm0gLWYgbGliLmENCisJJChsaWJfYV9BUikgbGliLmEgJChsaWJfYV9PQkpFQ1RTKSAk KGxpYl9hX0xJQkFERCkNCisJJChSQU5MSUIpIGxpYi5hDQorDQorbW9zdGx5Y2xlYW4tY29tcGls ZToNCisJLXJtIC1mICouJChPQkpFWFQpDQorDQorZGlzdGNsZWFuLWNvbXBpbGU6DQorCS1ybSAt ZiAqLnRhYi5jDQorDQorLmMubzoNCisJJChDT01QSUxFKSAtYyAkPA0KKw0KKy5jLm9iajoNCisJ JChDT01QSUxFKSAtYyBgJChDWUdQQVRIX1cpICckPCdgDQorDQorbGliX2EtZmVjbGVhcmV4Y2Vw dC5vOiBmZWNsZWFyZXhjZXB0LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMp ICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpDQokKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykg JChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlY2xlYXJleGNlcHQubyBgdGVzdA0KLWYgJ2ZlY2xlYXJl eGNlcHQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZmVjbGVhcmV4Y2VwdC5jDQorDQorbGliX2Et ZmVjbGVhcmV4Y2VwdC5vYmo6IGZlY2xlYXJleGNlcHQuYw0KKwkkKENDKSAkKERFRlMpICQoREVG QVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykNCiQoQ1BQRkxBR1MpICQo bGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmVjbGVhcmV4Y2VwdC5vYmogYGlm DQp0ZXN0IC1mICdmZWNsZWFyZXhjZXB0LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZmVjbGVhcmV4 Y2VwdC5jJzsgZWxzZQ0KJChDWUdQQVRIX1cpICckKHNyY2RpcikvZmVjbGVhcmV4Y2VwdC5jJzsg ZmlgDQorDQorbGliX2EtZmVyYWlzZWV4Y2VwdC5vOiBmZXJhaXNlZXhjZXB0LmMNCisJJChDQykg JChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpDQok KENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlcmFpc2Vl eGNlcHQubyBgdGVzdA0KLWYgJ2ZlcmFpc2VleGNlcHQuYycgfHwgZWNobyAnJChzcmNkaXIpLydg ZmVyYWlzZWV4Y2VwdC5jDQorDQorbGliX2EtZmVyYWlzZWV4Y2VwdC5vYmo6IGZlcmFpc2VleGNl cHQuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChB TV9DUFBGTEFHUykNCiQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8g bGliX2EtZmVyYWlzZWV4Y2VwdC5vYmogYGlmDQp0ZXN0IC1mICdmZXJhaXNlZXhjZXB0LmMnOyB0 aGVuICQoQ1lHUEFUSF9XKSAnZmVyYWlzZWV4Y2VwdC5jJzsgZWxzZQ0KJChDWUdQQVRIX1cpICck KHNyY2RpcikvZmVyYWlzZWV4Y2VwdC5jJzsgZmlgDQorDQorbGliX2EtZmV1cGRhdGVlbnYubzog ZmV1cGRhdGVlbnYuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNM VURFUykgJChBTV9DUFBGTEFHUykNCiQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFH UykgLWMgLW8gbGliX2EtZmV1cGRhdGVlbnYubyBgdGVzdCAtDQpmICdmZXVwZGF0ZWVudi5jJyB8 fCBlY2hvICckKHNyY2RpcikvJ2BmZXVwZGF0ZWVudi5jDQorDQorbGliX2EtZmV1cGRhdGVlbnYu b2JqOiBmZXVwZGF0ZWVudi5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAk KElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKQ0KJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQo Q0ZMQUdTKSAtYyAtbyBsaWJfYS1mZXVwZGF0ZWVudi5vYmogYGlmDQp0ZXN0IC1mICdmZXVwZGF0 ZWVudi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2ZldXBkYXRlZW52LmMnOyBlbHNlDQokKENZR1BB VEhfVykgJyQoc3JjZGlyKS9mZXVwZGF0ZWVudi5jJzsgZmlgDQorDQorbGliX2EtZmVnZXRyb3Vu ZC5vOiBmZWdldHJvdW5kLmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQo SU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpDQokKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChD RkxBR1MpIC1jIC1vIGxpYl9hLWZlZ2V0cm91bmQubyBgdGVzdCAtZg0KJ2ZlZ2V0cm91bmQuYycg fHwgZWNobyAnJChzcmNkaXIpLydgZmVnZXRyb3VuZC5jDQorDQorbGliX2EtZmVnZXRyb3VuZC5v Ymo6IGZlZ2V0cm91bmQuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJ TkNMVURFUykgJChBTV9DUFBGTEFHUykNCiQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENG TEFHUykgLWMgLW8gbGliX2EtZmVnZXRyb3VuZC5vYmogYGlmDQp0ZXN0IC1mICdmZWdldHJvdW5k LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZmVnZXRyb3VuZC5jJzsgZWxzZQ0KJChDWUdQQVRIX1cp ICckKHNyY2RpcikvZmVnZXRyb3VuZC5jJzsgZmlgDQorDQorbGliX2EtZmVnZXRlbnYubzogZmVn ZXRlbnYuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykg JChBTV9DUFBGTEFHUykNCiQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMg LW8gbGliX2EtZmVnZXRlbnYubyBgdGVzdCAtZg0KJ2ZlZ2V0ZW52LmMnIHx8IGVjaG8gJyQoc3Jj ZGlyKS8nYGZlZ2V0ZW52LmMNCisNCitsaWJfYS1mZWdldGVudi5vYmo6IGZlZ2V0ZW52LmMNCisJ JChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxB R1MpDQokKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZl Z2V0ZW52Lm9iaiBgaWYgdGVzdA0KLWYgJ2ZlZ2V0ZW52LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAn ZmVnZXRlbnYuYyc7IGVsc2UgJChDWUdQQVRIX1cpDQonJChzcmNkaXIpL2ZlZ2V0ZW52LmMnOyBm aWANCisNCitsaWJfYS1mZWhvbGRleGNlcHQubzogZmVob2xkZXhjZXB0LmMNCisJJChDQykgJChE RUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpDQokKENQ UEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlaG9sZGV4Y2Vw dC5vIGB0ZXN0DQotZiAnZmVob2xkZXhjZXB0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGZlaG9s ZGV4Y2VwdC5jDQorDQorbGliX2EtZmVob2xkZXhjZXB0Lm9iajogZmVob2xkZXhjZXB0LmMNCisJ JChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxB R1MpDQokKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZl aG9sZGV4Y2VwdC5vYmogYGlmDQp0ZXN0IC1mICdmZWhvbGRleGNlcHQuYyc7IHRoZW4gJChDWUdQ QVRIX1cpICdmZWhvbGRleGNlcHQuYyc7IGVsc2UNCiQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2Zl aG9sZGV4Y2VwdC5jJzsgZmlgDQorDQorbGliX2EtZmV0ZXN0ZXhjZXB0Lm86IGZldGVzdGV4Y2Vw dC5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFN X0NQUEZMQUdTKQ0KJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBs aWJfYS1mZXRlc3RleGNlcHQubyBgdGVzdA0KLWYgJ2ZldGVzdGV4Y2VwdC5jJyB8fCBlY2hvICck KHNyY2RpcikvJ2BmZXRlc3RleGNlcHQuYw0KKw0KK2xpYl9hLWZldGVzdGV4Y2VwdC5vYmo6IGZl dGVzdGV4Y2VwdC5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xV REVTKSAkKEFNX0NQUEZMQUdTKQ0KJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdT KSAtYyAtbyBsaWJfYS1mZXRlc3RleGNlcHQub2JqIGBpZg0KdGVzdCAtZiAnZmV0ZXN0ZXhjZXB0 LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZmV0ZXN0ZXhjZXB0LmMnOyBlbHNlDQokKENZR1BBVEhf VykgJyQoc3JjZGlyKS9mZXRlc3RleGNlcHQuYyc7IGZpYA0KKw0KK2xpYl9hLWZlZ2V0ZXhjZXB0 ZmxhZy5vOiBmZWdldGV4Y2VwdGZsYWcuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNM VURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykNCiQoQ1BQRkxBR1MpICQobGliX2FfQ0ZM QUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmVnZXRleGNlcHRmbGFnLm8NCmB0ZXN0IC1mICdm ZWdldGV4Y2VwdGZsYWcuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZmVnZXRleGNlcHRmbGFnLmMN CisNCitsaWJfYS1mZWdldGV4Y2VwdGZsYWcub2JqOiBmZWdldGV4Y2VwdGZsYWcuYw0KKwkkKEND KSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykN CiQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmVnZXRl eGNlcHRmbGFnLm9iag0KYGlmIHRlc3QgLWYgJ2ZlZ2V0ZXhjZXB0ZmxhZy5jJzsgdGhlbiAkKENZ R1BBVEhfVykgJ2ZlZ2V0ZXhjZXB0ZmxhZy5jJzsNCmVsc2UgJChDWUdQQVRIX1cpICckKHNyY2Rp cikvZmVnZXRleGNlcHRmbGFnLmMnOyBmaWANCisNCitsaWJfYS1mZWdldGV4Y2VwdC5vOiBmZWdl dGV4Y2VwdC5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVT KSAkKEFNX0NQUEZMQUdTKQ0KJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAt YyAtbyBsaWJfYS1mZWdldGV4Y2VwdC5vIGB0ZXN0IC0NCmYgJ2ZlZ2V0ZXhjZXB0LmMnIHx8IGVj aG8gJyQoc3JjZGlyKS8nYGZlZ2V0ZXhjZXB0LmMNCisNCitsaWJfYS1mZWdldGV4Y2VwdC5vYmo6 IGZlZ2V0ZXhjZXB0LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5D TFVERVMpICQoQU1fQ1BQRkxBR1MpDQokKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxB R1MpIC1jIC1vIGxpYl9hLWZlZ2V0ZXhjZXB0Lm9iaiBgaWYNCnRlc3QgLWYgJ2ZlZ2V0ZXhjZXB0 LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZmVnZXRleGNlcHQuYyc7IGVsc2UNCiQoQ1lHUEFUSF9X KSAnJChzcmNkaXIpL2ZlZ2V0ZXhjZXB0LmMnOyBmaWANCit1bmluc3RhbGwtaW5mby1hbToNCisN CitJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQ0KKwlsaXN0 PSckKFNPVVJDRVMpICQoSEVBREVSUykgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXA0KKwl1bmlx dWU9YGZvciBpIGluICQkbGlzdDsgZG8gXA0KKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBl Y2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7DQpmaTsgXA0KKwkgIGRvbmUgfCBcDQor CSAgJChBV0spICcgICAgeyBmaWxlc1skJDBdID0gMTsgfSBcDQorCSAgICAgICBFTkQgeyBmb3Ig KGkgaW4gZmlsZXMpIHByaW50IGk7IH0nYDsgXA0KKwlta2lkIC1mSUQgJCR1bmlxdWUNCit0YWdz OiBUQUdTDQorDQorVEFHUzogICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVO Q0lFUykgXA0KKwkJJChUQUdTX0ZJTEVTKSAkKExJU1ApDQorCXRhZ3M9OyBcDQorCWhlcmU9YHB3 ZGA7IFwNCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICAkKExJU1ApICQoVEFHU19GSUxF UyknOyBcDQorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcDQorCSAgICBpZiB0ZXN0IC1m ICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsNCmZpOyBcDQor CSAgZG9uZSB8IFwNCisJICAkKEFXSykgJyAgICB7IGZpbGVzWyQkMF0gPSAxOyB9IFwNCisJICAg ICAgIEVORCB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfSdgOyBcDQorCWlmIHRlc3QgLXog IiQoRVRBR1NfQVJHUykkJHRhZ3MkJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcDQorCSAgdGVzdCAt biAiJCR1bmlxdWUiIHx8IHVuaXF1ZT0kJGVtcHR5X2ZpeDsgXA0KKwkgICQoRVRBR1MpICQoRVRB R1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwNCisJICAgICQkdGFncyAk JHVuaXF1ZTsgXA0KKwlmaQ0KK2N0YWdzOiBDVEFHUw0KK0NUQUdTOiAgJChIRUFERVJTKSAkKFNP VVJDRVMpICAkKFRBR1NfREVQRU5ERU5DSUVTKSBcDQorCQkkKFRBR1NfRklMRVMpICQoTElTUCkN CisJdGFncz07IFwNCisJaGVyZT1gcHdkYDsgXA0KKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVS UykgICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwNCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7 IGRvIFwNCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAk KHNyY2RpcikvJCRpOw0KZmk7IFwNCisJICBkb25lIHwgXA0KKwkgICQoQVdLKSAnICAgIHsgZmls ZXNbJCQwXSA9IDE7IH0gXA0KKwkgICAgICAgRU5EIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBp OyB9J2A7IFwNCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdGFncyQkdW5pcXVlIiBcDQorCSAg fHwgJChDVEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxBR1MpICQoQ1RBR1NfQVJHUykg XA0KKwkgICAgICQkdGFncyAkJHVuaXF1ZQ0KKw0KK0dUQUdTOg0KKwloZXJlPWAkKGFtX19jZCkg JCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXA0KKwkgICYmIGNkICQodG9wX3NyY2RpcikgXA0KKwkg ICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgJCRoZXJlDQorDQorZGlzdGNsZWFuLXRhZ3M6DQor CS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzDQorY2hlY2stYW06 DQorY2hlY2s6IGNoZWNrLWFtDQorYWxsLWFtOiBNYWtlZmlsZSAkKExJQlJBUklFUykgJChEQVRB KQ0KK2luc3RhbGxkaXJzOg0KK2luc3RhbGw6IGluc3RhbGwtYW0NCitpbnN0YWxsLWV4ZWM6IGlu c3RhbGwtZXhlYy1hbQ0KK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtDQordW5pbnN0YWxs OiB1bmluc3RhbGwtYW0NCisNCitpbnN0YWxsLWFtOiBhbGwtYW0NCisJQCQoTUFLRSkgJChBTV9N QUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0NCisNCitpbnN0YWxsY2hl Y2s6IGluc3RhbGxjaGVjay1hbQ0KK2luc3RhbGwtc3RyaXA6DQorCSQoTUFLRSkgJChBTV9NQUtF RkxBR1MpDQpJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXA0KKwkg IGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIg0KSU5TVEFMTF9T VFJJUF9GTEFHPS1zIFwNCisJICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwNCisJICAgIGVjaG8g IklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsDQorbW9z dGx5Y2xlYW4tZ2VuZXJpYzoNCisNCitjbGVhbi1nZW5lcmljOg0KKw0KK2Rpc3RjbGVhbi1nZW5l cmljOg0KKwktdGVzdCAteiAiJChDT05GSUdfQ0xFQU5fRklMRVMpIiB8fCBybSAtZg0KJChDT05G SUdfQ0xFQU5fRklMRVMpDQorDQorbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljOg0KKwlAZWNobyAi VGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiDQorCUBlY2hv ICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0bw0KcmVi dWlsZC4iDQorY2xlYW46IGNsZWFuLWFtDQorDQorY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xl YW4tbm9pbnN0TElCUkFSSUVTIG1vc3RseWNsZWFuLWFtDQorDQorZGlzdGNsZWFuOiBkaXN0Y2xl YW4tYW0NCisJLXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpDQorCS1ybSAtZiBN YWtlZmlsZQ0KK2Rpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNs ZWFuLWdlbmVyaWMgXA0KKwlkaXN0Y2xlYW4tdGFncw0KKw0KK2R2aTogZHZpLWFtDQorDQorZHZp LWFtOg0KKw0KK2h0bWw6IGh0bWwtYW0NCisNCitpbmZvOiBpbmZvLWFtDQorDQoraW5mby1hbToN CisNCitpbnN0YWxsLWRhdGEtYW06DQorDQoraW5zdGFsbC1leGVjLWFtOg0KKw0KK2luc3RhbGwt aW5mbzogaW5zdGFsbC1pbmZvLWFtDQorDQoraW5zdGFsbC1tYW46DQorDQoraW5zdGFsbGNoZWNr LWFtOg0KKw0KK21haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tYW0NCisJLXJtIC1m ICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpDQorCS1ybSAtcmYgJCh0b3Bfc3JjZGlyKS9h dXRvbTR0ZS5jYWNoZQ0KKwktcm0gLWYgTWFrZWZpbGUNCittYWludGFpbmVyLWNsZWFuLWFtOiBk aXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljDQorDQorbW9zdGx5Y2xlYW46IG1v c3RseWNsZWFuLWFtDQorDQorbW9zdGx5Y2xlYW4tYW06IG1vc3RseWNsZWFuLWNvbXBpbGUgbW9z dGx5Y2xlYW4tZ2VuZXJpYw0KKw0KK3BkZjogcGRmLWFtDQorDQorcGRmLWFtOg0KKw0KK3BzOiBw cy1hbQ0KKw0KK3BzLWFtOg0KKw0KK3VuaW5zdGFsbC1hbToNCisNCisuUEhPTlk6IENUQUdTIEdU QUdTIGFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gXA0KKwljbGVh bi1nZW5lcmljIGNsZWFuLW5vaW5zdExJQlJBUklFUyBjdGFncyBkaXN0Y2xlYW4gXA0KKwlkaXN0 Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4tdGFncyBkdmkgZHZpLWFt DQpcDQorCWh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIGluc3Rh bGwtZGF0YSBcDQorCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFt IGluc3RhbGwtaW5mbyBcDQorCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXN0 cmlwIGluc3RhbGxjaGVjayBcDQorCWluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBtYWludGFp bmVyLWNsZWFuIFwNCisJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3Rs eWNsZWFuLWNvbXBpbGUgXA0KKwltb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMt YW0gdGFncyB1bmluc3RhbGwgXA0KKwl1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWluZm8tYW0NCisN CitvYmplY3RsaXN0LmF3ay5pbjogJChub2luc3RfTFRMSUJSQVJJRVMpDQorCS1ybSAtZiBvYmpl Y3RsaXN0LmF3ay5pbg0KKwlmb3IgaSBpbiBgbHMgKi5sb2AgOyBcDQorCWRvIFwNCisJICBlY2hv ICQkaSBgcHdkYC8kJGkgPj4gb2JqZWN0bGlzdC5hd2suaW4gOyBcDQorCWRvbmUNCisjIFRlbGwg dmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFi bGVzLg0KKyMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5 IGJlIGV4Y2VlZGVkLg0KKy5OT0VYUE9SVDoNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNo aW5lL3h0ZW5zYS9hY2xvY2FsLm00DQpiL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2FjbG9j YWwubTQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjg3YzBlNzhiYw0K LS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvYWNsb2NhbC5t NA0KQEAgLTAsMCArMSw4ODAgQEANCisjIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9j YWwgMS45LjUgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3 LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LA0KKyMgMjAwNSAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2Fy ZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBt b2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLA0KKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1p dHRlZCBieSBsYXc7IHdpdGhvdXQNCisjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4NCisN CisjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkg YW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywg YXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBBTV9BVVRPTUFLRV9W RVJTSU9OKFZFUlNJT04pDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBBdXRv bWFrZSBYLlkgdHJhY2VzIHRoaXMgbWFjcm8gdG8gZW5zdXJlIGFjbG9jYWwubTQgaGFzIGJlZW4N CisjIGdlbmVyYXRlZCBmcm9tIHRoZSBtNCBmaWxlcyBhY2NvbXBhbnlpbmcgQXV0b21ha2UgWC5Z Lg0KK0FDX0RFRlVOKFtBTV9BVVRPTUFLRV9WRVJTSU9OXSwgW2FtX19hcGlfdmVyc2lvbj0iMS45 Il0pDQorDQorIyBBTV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9ODQorIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gaXQg Y2FuIGJlIHRyYWNlZC4NCisjIFRoaXMgZnVuY3Rpb24gaXMgQUNfUkVRVUlSRWQgYnkgQUNfSU5J VF9BVVRPTUFLRS4NCitBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0s DQorCSBbQU1fQVVUT01BS0VfVkVSU0lPTihbMS45LjVdKV0pDQorDQorIyBBTV9BVVhfRElSX0VY UEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotDQpBdXRvY29u ZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp Y2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBGb3Ig cHJvamVjdHMgdXNpbmcgQUNfQ09ORklHX0FVWF9ESVIoW2Zvb10pLCBBdXRvY29uZiBzZXRzDQor IyAkYWNfYXV4X2RpciB0byBgJHNyY2Rpci9mb28nLiAgSW4gb3RoZXIgcHJvamVjdHMsIGl0IGlz IHNldCB0bw0KKyMgYCRzcmNkaXInLCBgJHNyY2Rpci8uLicsIG9yIGAkc3JjZGlyLy4uLy4uJy4N CisjDQorIyBPZiBjb3Vyc2UsIEF1dG9tYWtlIG11c3QgaG9ub3IgdGhpcyB2YXJpYWJsZSB3aGVu ZXZlciBpdCBjYWxscyBhDQorIyB0b29sIGZyb20gdGhlIGF1eGlsaWFyeSBkaXJlY3RvcnkuICBU aGUgcHJvYmxlbSBpcyB0aGF0ICRzcmNkaXIgKGFuZA0KKyMgdGhlcmVmb3JlICRhY19hdXhfZGly IGFzIHdlbGwpIGNhbiBiZSBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUsDQorIyBkZXBlbmRp bmcgb24gaG93IGNvbmZpZ3VyZSBpcyBydW4uICBUaGlzIGlzIHByZXR0eSBhbm5veWluZywgc2lu Y2UNCisjIGl0IG1ha2VzICRhY19hdXhfZGlyIHF1aXRlIHVudXNhYmxlIGluIHN1YmRpcmVjdG9y aWVzOiBpbiB0aGUgdG9wDQorIyBzb3VyY2UgZGlyZWN0b3J5LCBhbnkgZm9ybSB3aWxsIHdvcmsg ZmluZSwgYnV0IGluIHN1YmRpcmVjdG9yaWVzIGENCisjIHJlbGF0aXZlIHBhdGggbmVlZHMgdG8g YmUgYWRqdXN0ZWQgZmlyc3QuDQorIw0KKyMgJGFjX2F1eF9kaXIvbWlzc2luZw0KKyMgICAgZmFp bHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRpcmVjdG9yeSBpZiAkYWNfYXV4X2RpciBpcyByZWxh dGl2ZQ0KKyMgJHRvcF9zcmNkaXIvJGFjX2F1eF9kaXIvbWlzc2luZw0KKyMgICAgZmFpbHMgaWYg JGFjX2F1eF9kaXIgaXMgYWJzb2x1dGUsDQorIyAgICBmYWlscyB3aGVuIGNhbGxlZCBmcm9tIGEg c3ViZGlyZWN0b3J5IGluIGEgVlBBVEggYnVpbGQgd2l0aA0KKyMgICAgICAgICAgYSByZWxhdGl2 ZSAkYWNfYXV4X2Rpcg0KKyMNCisjIFRoZSByZWFzb24gb2YgdGhlIGxhdHRlciBmYWlsdXJlIGlz IHRoYXQgJHRvcF9zcmNkaXIgYW5kICRhY19hdXhfZGlyDQorIyBhcmUgYm90aCBwcmVmaXhlZCBi eSAkc3JjZGlyLiAgSW4gYW4gaW4tc291cmNlIGJ1aWxkIHRoaXMgaXMgdXN1YWxseQ0KKyMgaGFy bWxlc3MgYmVjYXVzZSAkc3JjZGlyIGlzIGAuJywgYnV0IHRoaW5ncyB3aWxsIGJyb2tlIHdoZW4g eW91DQorIyBzdGFydCBhIFZQQVRIIGJ1aWxkIG9yIHVzZSBhbiBhYnNvbHV0ZSAkc3JjZGlyLg0K KyMNCisjIFNvIHdlIGNvdWxkIHVzZSBzb21ldGhpbmcgc2ltaWxhciB0bw0KJHRvcF9zcmNkaXIv JGFjX2F1eF9kaXIvbWlzc2luZywNCisjIGlmZiB3ZSBzdHJpcCB0aGUgbGVhZGluZyAkc3JjZGly IGZyb20gJGFjX2F1eF9kaXIuICBUaGF0IHdvdWxkIGJlOg0KKyMgICBhbV9hdXhfZGlyPSdcJCh0 b3Bfc3JjZGlyKS8nYGV4cHIgIiRhY19hdXhfZGlyIiA6DQoiJHNyY2Rpci8vKlwoLipcKSJgDQor IyBhbmQgdGhlbiB3ZSB3b3VsZCBkZWZpbmUgJE1JU1NJTkcgYXMNCisjICAgTUlTU0lORz0iXCR7 U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciDQorIyBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFz IE1JU1NJTkcgaXMgbm90IGNhbGxlZCBmcm9tIGNvbmZpZ3VyZSwNCmJlY2F1c2UNCisjIHVuZm9y dHVuYXRlbHkgJCh0b3Bfc3JjZGlyKSBoYXMgbm8gbWVhbmluZyBpbiBjb25maWd1cmUuDQorIyBI b3dldmVyIHRoZXJlIGFyZSBvdGhlciB2YXJpYWJsZXMsIGxpa2UgQ0MsIHdoaWNoIGFyZSBvZnRl biB1c2VkIGluDQorIyBjb25maWd1cmUsIGFuZCBjb3VsZCB0aGVyZWZvcmUgbm90IHVzZSB0aGlz ICJmaXhlZCIgJGFjX2F1eF9kaXIuDQorIw0KKyMgQW5vdGhlciBzb2x1dGlvbiwgdXNlZCBoZXJl LCBpcyB0byBhbHdheXMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuDQorIyBhYnNvbHV0ZSBQQVRI LiAgVGhlIGRyYXdiYWNrIGlzIHRoYXQgdXNpbmcgYWJzb2x1dGUgcGF0aHMgcHJldmVudCBhDQor IyBjb25maWd1cmVkIHRyZWUgdG8gYmUgbW92ZWQgd2l0aG91dCByZWNvbmZpZ3VyYXRpb24uDQor DQorQUNfREVGVU4oW0FNX0FVWF9ESVJfRVhQQU5EXSwNCitbZG5sIFJlbHkgb24gYXV0b2NvbmYg dG8gc2V0IHVwIENEUEFUSCBwcm9wZXJseS4NCitBQ19QUkVSRVEoWzIuNTBdKWRubA0KKyMgZXhw YW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgNCithbV9hdXhfZGlyPWBjZCAkYWNf YXV4X2RpciAmJiBwd2RgDQorXSkNCisNCisjIEFNX0NPTkRJVElPTkFMICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0NCkF1dG9jb25mIC0qLQ0KKw0KKyMgQ29w eXJpZ2h0IChDKSAxOTk3LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1DQorIyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2Fy ZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBt b2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisj IHNlcmlhbCA3DQorDQorIyBBTV9DT05ESVRJT05BTChOQU1FLCBTSEVMTC1DT05ESVRJT04pDQor IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEZWZpbmUgYSBjb25k aXRpb25hbC4NCitBQ19ERUZVTihbQU1fQ09ORElUSU9OQUxdLA0KK1tBQ19QUkVSRVEoMi41Milk bmwNCisgaWZlbHNlKFskMV0sIFtUUlVFXSwgIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0 aW9uOiAkMV0pXSwNCisJWyQxXSwgW0ZBTFNFXSwgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBjb25k aXRpb246ICQxXSldKWRubA0KK0FDX1NVQlNUKFskMV9UUlVFXSkNCitBQ19TVUJTVChbJDFfRkFM U0VdKQ0KK2lmICQyOyB0aGVuDQorICAkMV9UUlVFPQ0KKyAgJDFfRkFMU0U9JyMnDQorZWxzZQ0K KyAgJDFfVFJVRT0nIycNCisgICQxX0ZBTFNFPQ0KK2ZpDQorQUNfQ09ORklHX0NPTU1BTkRTX1BS RSgNCitbaWYgdGVzdCAteiAiJHskMV9UUlVFfSIgJiYgdGVzdCAteiAiJHskMV9GQUxTRX0iOyB0 aGVuDQorICBBQ19NU0dfRVJST1IoW1tjb25kaXRpb25hbCAiJDEiIHdhcyBuZXZlciBkZWZpbmVk Lg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRp b25hbGx5Ll1dKQ0KK2ZpXSldKQ0KKw0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAy MDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1DQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQv b3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBs b25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCA4DQorDQorIyBU aGVyZSBhcmUgYSBmZXcgZGlydHkgaGFja3MgYmVsb3cgdG8gYXZvaWQgbGV0dGluZyBgQUNfUFJP R19DQycgYmUNCisjIHdyaXR0ZW4gaW4gY2xlYXIsIGluIHdoaWNoIGNhc2UgYXV0b21ha2UsIHdo ZW4gcmVhZGluZyBhY2xvY2FsLm00LA0KKyMgd2lsbCB0aGluayBpdCBzZWVzIGEgKnVzZSosIGFu ZCB0aGVyZWZvcmUgd2lsbCB0cmlnZ2VyIGFsbCBpdCdzDQorIyBDIHN1cHBvcnQgbWFjaGluZXJ5 LiAgQWxzbyBub3RlIHRoYXQgaXQgbWVhbnMgdGhhdCBhdXRvc2Nhbiwgc2VlaW5nDQorIyBDQyBl dGMuIGluIHRoZSBNYWtlZmlsZSwgd2lsbCBhc2sgZm9yIGFuIEFDX1BST0dfQ0MgdXNlLi4uDQor DQorDQorIyBfQU1fREVQRU5ERU5DSUVTKE5BTUUpDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorIyBTZWUgaG93IHRoZSBjb21waWxlciBpbXBsZW1lbnRzIGRlcGVuZGVuY3kgY2hlY2tpbmcu DQorIyBOQU1FIGlzICJDQyIsICJDWFgiLCAiR0NKIiwgb3IgIk9CSkMiLg0KKyMgV2UgdHJ5IGEg ZmV3IHRlY2huaXF1ZXMgYW5kIHVzZSB0aGF0IHRvIHNldCBhIHNpbmdsZSBjYWNoZSB2YXJpYWJs ZS4NCisjDQorIyBXZSBkb24ndCBBQ19SRVFVSVJFIHRoZSBjb3JyZXNwb25kaW5nIEFDX1BST0df Q0Mgc2luY2UgdGhlIGxhdHRlcg0Kd2FzDQorIyBtb2RpZmllZCB0byBpbnZva2UgX0FNX0RFUEVO REVOQ0lFUyhDQyk7IHdlIHdvdWxkIGhhdmUgYSBjaXJjdWxhcg0KKyMgZGVwZW5kZW5jeSwgYW5k IGdpdmVuIHRoYXQgdGhlIHVzZXIgaXMgbm90IGV4cGVjdGVkIHRvIHJ1biB0aGlzDQptYWNybywN CisjIGp1c3QgcmVseSBvbiBBQ19QUk9HX0NDLg0KK0FDX0RFRlVOKFtfQU1fREVQRU5ERU5DSUVT XSwNCitbQUNfUkVRVUlSRShbQU1fU0VUX0RFUERJUl0pZG5sDQorQUNfUkVRVUlSRShbQU1fT1VU UFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdKWRubA0KK0FDX1JFUVVJUkUoW0FNX01BS0VfSU5DTFVE RV0pZG5sDQorQUNfUkVRVUlSRShbQU1fREVQX1RSQUNLXSlkbmwNCisNCitpZmVsc2UoWyQxXSwg Q0MsICAgW2RlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD1dLA0KKyAgICAgICBbJDFdLCBD WFgsICBbZGVwY2M9IiRDWFgiICBhbV9jb21waWxlcl9saXN0PV0sDQorICAgICAgIFskMV0sIE9C SkMsIFtkZXBjYz0iJE9CSkMiIGFtX2NvbXBpbGVyX2xpc3Q9J2djYzMgZ2NjJ10sDQorICAgICAg IFskMV0sIEdDSiwgIFtkZXBjYz0iJEdDSiIgIGFtX2NvbXBpbGVyX2xpc3Q9J2djYzMgZ2NjJ10s DQorICAgICAgICAgICAgICAgICAgIFtkZXBjYz0iJCQxIiAgIGFtX2NvbXBpbGVyX2xpc3Q9XSkN CisNCitBQ19DQUNIRV9DSEVDSyhbZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2NdLA0KKyAgICAg ICAgICAgICAgIFthbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZV0sDQorW2lmIHRl c3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4NCisgICMg V2UgbWFrZSBhIHN1YmRpciBhbmQgZG8gdGhlIHRlc3RzIHRoZXJlLiAgT3RoZXJ3aXNlIHdlIGNh biBlbmQgdXANCisgICMgbWFraW5nIGJvZ3VzIGZpbGVzIHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91 dCBhbmQgbmV2ZXIgcmVtb3ZlLiAgRm9yDQorICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0 aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cA0KKyAgIyBtYWtpbmcgYSBkdW1t eSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlDQpvdXRwdXQN CisgICMgaW4gRCcuDQorICBta2RpciBjb25mdGVzdC5kaXINCisgICMgQ29weSBkZXBjb21wIHRv IHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlDQorICAj IHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5Lg0KKyAgY3AgIiRhbV9kZXBjb21wIiBjb25mdGVz dC5kaXINCisgIGNkIGNvbmZ0ZXN0LmRpcg0KKyAgIyBXZSB3aWxsIGJ1aWxkIG9iamVjdHMgYW5k IGRlcGVuZGVuY2llcyBpbiBhIHN1YmRpcmVjdG9yeSBiZWNhdXNlDQorICAjIGl0IGhlbHBzIHRv IGRldGVjdCBpbmFwcGxpY2FibGUgZGVwZW5kZW5jeSBtb2Rlcy4gIEZvciBpbnN0YW5jZQ0KKyAg IyBib3RoIFRydTY0J3MgY2MgYW5kIElDQyBzdXBwb3J0IC1NRCB0byBvdXRwdXQgZGVwZW5kZW5j aWVzIGFzIGENCisgICMgc2lkZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1dCBJQ0Mgd2lsbCBw dXQgdGhlIGRlcGVuZGVuY2llcyBpbg0KKyAgIyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2hpbGUg VHJ1NjQgd2lsbCBwdXQgdGhlbSBpbiB0aGUgb2JqZWN0DQorICAjIGRpcmVjdG9yeS4NCisgIG1r ZGlyIHN1Yg0KKw0KKyAgYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0K KyAgaWYgdGVzdCAiJGFtX2NvbXBpbGVyX2xpc3QiID0gIiI7IHRoZW4NCisgICAgIGFtX2NvbXBp bGVyX2xpc3Q9YHNlZCAtbiBbJ3MvXiMqXChbYS16QS1aMC05XSpcKSkkL1wxL3AnXSA8DQouL2Rl cGNvbXBgDQorICBmaQ0KKyAgZm9yIGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7IGRvDQor ICAgICMgU2V0dXAgYSBzb3VyY2Ugd2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVzZSBzb21l IGNvbXBpbGVycw0KKyAgICAjIGxpa2UgdG8gd3JhcCBsYXJnZSBkZXBlbmRlbmN5IGxpc3RzIG9u IGNvbHVtbiA4MCAod2l0aCBcKSwgYW5kDQorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBk ZXBjb21wIG1vZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkgdGhpcy4NCisgICAgIw0KKyAgICAjIFdl IG5lZWQgdG8gcmVjcmVhdGUgdGhlc2UgZmlsZXMgZm9yIGVhY2ggdGVzdCwgYXMgdGhlIGNvbXBp bGVyDQptYXkNCisgICAgIyBvdmVyd3JpdGUgc29tZSBvZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRo IG9ic2N1cmUgY29tbWFuZCBsaW5lcy4NCisgICAgIyBUaGlzIGhhcHBlbnMgYXQgbGVhc3Qgd2l0 aCB0aGUgQUlYIEMgY29tcGlsZXIuDQorICAgIDogPiBzdWIvY29uZnRlc3QuYw0KKyAgICBmb3Ig aSBpbiAxIDIgMyA0IDUgNjsgZG8NCisgICAgICBlY2hvICcjaW5jbHVkZSAiY29uZnRzdCckaScu aCInID4+IHN1Yi9jb25mdGVzdC5jDQorICAgICAgIyBVc2luZyBgOiA+IHN1Yi9jb25mdHN0JGku aCcgY3JlYXRlcyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdpdGgNCisgICAgICAjIFNvbGFyaXMgOCdz IHsvdXNyLH0vYmluL3NoLg0KKyAgICAgIHRvdWNoIHN1Yi9jb25mdHN0JGkuaA0KKyAgICBkb25l DQorICAgIGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7 YW1fX3F1b3RlfSIgPg0KY29uZm1mDQorDQorICAgIGNhc2UgJGRlcG1vZGUgaW4NCisgICAgbm9z aWRlZWZmZWN0KQ0KKyAgICAgICMgYWZ0ZXIgdGhpcyB0YWcsIG1lY2hhbmlzbXMgYXJlIG5vdCBi eSBzaWRlLWVmZmVjdCwgc28gdGhleSdsbA0KKyAgICAgICMgb25seSBiZSB1c2VkIHdoZW4gZXhw bGljaXRseSByZXF1ZXN0ZWQNCisgICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3Ry YWNraW5nIiA9IHh5ZXM7IHRoZW4NCisJY29udGludWUNCisgICAgICBlbHNlDQorCWJyZWFrDQor ICAgICAgZmkNCisgICAgICA7Ow0KKyAgICBub25lKSBicmVhayA7Ow0KKyAgICBlc2FjDQorICAg ICMgV2UgY2hlY2sgd2l0aCBgLWMnIGFuZCBgLW8nIGZvciB0aGUgc2FrZSBvZiB0aGUgImRhc2ht c3Rkb3V0Ig0KKyAgICAjIG1vZGUuICBJdCB0dXJucyBvdXQgdGhhdCB0aGUgU3VuUHJvIEMrKyBj b21waWxlciBkb2VzIG5vdA0KcHJvcGVybHkNCisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5kIHdl IG5lZWQgdG8gZGV0ZWN0IHRoaXMuDQorICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXA0KKyAgICAg ICBzb3VyY2U9c3ViL2NvbmZ0ZXN0LmMgb2JqZWN0PXN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBc DQorICAgICAgIGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0 LlRQbyBcDQorICAgICAgICRTSEVMTCAuL2RlcGNvbXAgJGRlcGNjIC1jIC1vIHN1Yi9jb25mdGVz dC4ke09CSkVYVC1vfQ0Kc3ViL2NvbmZ0ZXN0LmMgXA0KKyAgICAgICAgID4vZGV2L251bGwgMj5j b25mdGVzdC5lcnIgJiYNCisgICAgICAgZ3JlcCBzdWIvY29uZnRzdDYuaCBzdWIvY29uZnRlc3Qu UG8gPiAvZGV2L251bGwgMj4mMSAmJg0KKyAgICAgICBncmVwIHN1Yi9jb25mdGVzdC4ke09CSkVY VC1vfSBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMQ0KJiYNCisgICAgICAgJHtNQUtF LW1ha2V9IC1zIC1mIGNvbmZtZiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgICAgIyBpY2Mg ZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZQ0Kd2Fy bmluZ3MNCisgICAgICAjIG9yIHJlbWFya3MgKGV2ZW4gd2l0aCAtV2Vycm9yKS4gIFNvIHdlIGdy ZXAgc3RkZXJyIGZvciBhbnkNCm1lc3NhZ2UNCisgICAgICAjIHRoYXQgc2F5cyBhbiBvcHRpb24g d2FzIGlnbm9yZWQgb3Igbm90IHN1cHBvcnRlZC4NCisgICAgICAjIFdoZW4gZ2l2ZW4gLU1QLCBp Y2MgNy4wIGFuZCA3LjEgY29tcGxhaW4gdGh1c2x5Og0KKyAgICAgICMgICBpY2M6IENvbW1hbmQg bGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQNCnJlcXVpcmVk DQorICAgICAgIyBUaGUgZGlhZ25vc2lzIGNoYW5nZWQgaW4gaWNjIDguMDoNCisgICAgICAjICAg aWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZA0KKyAg ICAgIGlmIChncmVwICdpZ25vcmluZyBvcHRpb24nIGNvbmZ0ZXN0LmVyciB8fA0KKyAgICAgICAg ICBncmVwICdub3Qgc3VwcG9ydGVkJyBjb25mdGVzdC5lcnIpID4vZGV2L251bGwgMj4mMTsgdGhl biA6Ow0KZWxzZQ0KKyAgICAgICAgYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9 JGRlcG1vZGUNCisgICAgICAgIGJyZWFrDQorICAgICAgZmkNCisgICAgZmkNCisgIGRvbmUNCisN CisgIGNkIC4uDQorICBybSAtcmYgY29uZnRlc3QuZGlyDQorZWxzZQ0KKyAgYW1fY3ZfJDFfZGVw ZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0KK2ZpDQorXSkNCitBQ19TVUJTVChbJDFERVBN T0RFXSwgW2RlcG1vZGU9JGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlXSkNCitB TV9DT05ESVRJT05BTChbYW1fX2Zhc3RkZXAkMV0sIFsNCisgIHRlc3QgIngkZW5hYmxlX2RlcGVu ZGVuY3lfdHJhY2tpbmciICE9IHhubyBcDQorICAmJiB0ZXN0ICIkYW1fY3ZfJDFfZGVwZW5kZW5j aWVzX2NvbXBpbGVyX3R5cGUiID0gZ2NjM10pDQorXSkNCisNCisNCisjIEFNX1NFVF9ERVBESVIN CisjIC0tLS0tLS0tLS0tLS0NCisjIENob29zZSBhIGRpcmVjdG9yeSBuYW1lIGZvciBkZXBlbmRl bmN5IGZpbGVzLg0KKyMgVGhpcyBtYWNybyBpcyBBQ19SRVFVSVJFZCBpbiBfQU1fREVQRU5ERU5D SUVTDQorQUNfREVGVU4oW0FNX1NFVF9ERVBESVJdLA0KK1tBQ19SRVFVSVJFKFtBTV9TRVRfTEVB RElOR19ET1RdKWRubA0KK0FDX1NVQlNUKFtERVBESVJdLCBbIiR7YW1fX2xlYWRpbmdfZG90fWRl cHMiXSlkbmwNCitdKQ0KKw0KKw0KKyMgQU1fREVQX1RSQUNLDQorIyAtLS0tLS0tLS0tLS0NCitB Q19ERUZVTihbQU1fREVQX1RSQUNLXSwNCitbQUNfQVJHX0VOQUJMRShkZXBlbmRlbmN5LXRyYWNr aW5nLA0KK1sgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICBzcGVlZHMgdXAgb25lLXRp bWUgYnVpbGQNCisgIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0 IHNsb3cgZGVwZW5kZW5jeQ0KZXh0cmFjdG9yc10pDQoraWYgdGVzdCAieCRlbmFibGVfZGVwZW5k ZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9k ZXBjb21wIg0KKyAgQU1ERVBCQUNLU0xBU0g9J1wnDQorZmkNCitBTV9DT05ESVRJT05BTChbQU1E RVBdLCBbdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vXSkNCitBQ19T VUJTVChbQU1ERVBCQUNLU0xBU0hdKQ0KK10pDQorDQorIyBHZW5lcmF0ZSBjb2RlIHRvIHNldCB1 cCBkZXBlbmRlbmN5IHRyYWNraW5nLiAgICAgICAgICAgICAgLSotDQpBdXRvY29uZiAtKi0NCisN CisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAw NQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlz IGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVu bGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRo IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVz ZXJ2ZWQuDQorDQorI3NlcmlhbCAzDQorDQorIyBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFO RFMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0FDX0RFRlVOKFtfQU1fT1VU UFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdLA0KK1tmb3IgbWYgaW4gJENPTkZJR19GSUxFUzsgZG8N CisgICMgU3RyaXAgTUYgc28gd2UgZW5kIHVwIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpbGUuDQor ICBtZj1gZWNobyAiJG1mIiB8IHNlZCAtZSAncy86LiokLy8nYA0KKyAgIyBDaGVjayB3aGV0aGVy IHRoaXMgaXMgYW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1ha2VmaWxlIG9yIG5vdC4NCisgICMgV2Ug dXNlZCB0byBtYXRjaCBvbmx5IHRoZSBmaWxlcyBuYW1lZCBgTWFrZWZpbGUuaW4nLCBidXQNCisg ICMgc29tZSBwZW9wbGUgcmVuYW1lIHRoZW07IHNvIGluc3RlYWQgd2UgbG9vayBhdCB0aGUgZmls ZSBjb250ZW50Lg0KKyAgIyBHcmVwJ2luZyB0aGUgZmlyc3QgbGluZSBpcyBub3QgZW5vdWdoOiBz b21lIHBlb3BsZSBwb3N0LXByb2Nlc3MNCisgICMgZWFjaCBNYWtlZmlsZS5pbiBhbmQgYWRkIGEg bmV3IGxpbmUgb24gdG9wIG9mIGVhY2ggZmlsZSB0byBzYXkgc28uDQorICAjIFNvIGxldCdzIGdy ZXAgd2hvbGUgZmlsZS4NCisgIGlmIGdyZXAgJ14jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UnICRt ZiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgIGRpcnBhcnQ9YEFTX0RJUk5BTUUoIiRtZiIp YA0KKyAgZWxzZQ0KKyAgICBjb250aW51ZQ0KKyAgZmkNCisgICMgRXh0cmFjdCB0aGUgZGVmaW5p dGlvbiBvZiBERVBESVIsIGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlDQorICAjIGZyb20gdGhl IE1ha2VmaWxlIHdpdGhvdXQgcnVubmluZyBgbWFrZScuDQorICBERVBESVI9YHNlZCAtbiAncy9e REVQRElSID0gLy9wJyA8ICIkbWYiYA0KKyAgdGVzdCAteiAiJERFUERJUiIgJiYgY29udGludWUN CisgIGFtX19pbmNsdWRlPWBzZWQgLW4gJ3MvXmFtX19pbmNsdWRlID0gLy9wJyA8ICIkbWYiYA0K KyAgdGVzdCAteiAiYW1fX2luY2x1ZGUiICYmIGNvbnRpbnVlDQorICBhbV9fcXVvdGU9YHNlZCAt biAncy9eYW1fX3F1b3RlID0gLy9wJyA8ICIkbWYiYA0KKyAgIyBXaGVuIHVzaW5nIGFuc2kya25y LCBVIG1heSBiZSBlbXB0eSBvciBhbiB1bmRlcnNjb3JlOyBleHBhbmQgaXQNCisgIFU9YHNlZCAt biAncy9eVSA9IC8vcCcgPCAiJG1mImANCisgICMgRmluZCBhbGwgZGVwZW5kZW5jeSBvdXRwdXQg ZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZpbGVzIHdpdGgNCisgICMgJChERVBESVIpIGluIHRo ZWlyIG5hbWVzLiAgV2UgaW52b2tlIHNlZCB0d2ljZSBiZWNhdXNlIGl0IGlzIHRoZQ0KKyAgIyBz aW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikgdG8gaXRzIGFjdHVhbCB2YWx1 ZSBpbiB0aGUNCisgICMgZXhwYW5zaW9uLg0KKyAgZm9yIGZpbGUgaW4gYHNlZCAtbiAiDQorICAg IHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBESVIpLipcKSRhbV9fcXVvdGUiJyQv XDEvcCcNCjwiJG1mIiB8IFwNCisgICAgICAgc2VkIC1lICdzL1wkKERFUERJUikvJyIkREVQRElS IicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvDQorICAgICMgTWFrZSBzdXJlIHRoZSBkaXJl Y3RvcnkgZXhpc3RzLg0KKyAgICB0ZXN0IC1mICIkZGlycGFydC8kZmlsZSIgJiYgY29udGludWUN CisgICAgZmRpcj1gQVNfRElSTkFNRShbIiRmaWxlIl0pYA0KKyAgICBBU19NS0RJUl9QKFskZGly cGFydC8kZmRpcl0pDQorICAgICMgZWNobyAiY3JlYXRpbmcgJGRpcnBhcnQvJGZpbGUiDQorICAg IGVjaG8gJyMgZHVtbXknID4gIiRkaXJwYXJ0LyRmaWxlIg0KKyAgZG9uZQ0KK2RvbmUNCitdKSMg X0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTDQorDQorDQorIyBBTV9PVVRQVVRfREVQRU5E RU5DWV9DT01NQU5EUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFRoaXMg bWFjcm8gc2hvdWxkIG9ubHkgYmUgaW52b2tlZCBvbmNlIC0tIHVzZSB2aWEgQUNfUkVRVUlSRS4N CisjDQorIyBUaGlzIGNvZGUgaXMgb25seSByZXF1aXJlZCB3aGVuIGF1dG9tYXRpYyBkZXBlbmRl bmN5IHRyYWNraW5nDQorIyBpcyBlbmFibGVkLiAgRklYTUUuICBUaGlzIGNyZWF0ZXMgZWFjaCBg LlAnIGZpbGUgdGhhdCB3ZSB3aWxsDQorIyBuZWVkIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGUg ZGVwZW5kZW5jeSBoYW5kbGluZyBjb2RlLg0KK0FDX0RFRlVOKFtBTV9PVVRQVVRfREVQRU5ERU5D WV9DT01NQU5EU10sDQorW0FDX0NPTkZJR19DT01NQU5EUyhbZGVwZmlsZXNdLA0KKyAgICAgW3Rl c3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IF9BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5E U10sDQorICAgICBbQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhf ZGlyIl0pDQorXSkNCisNCisjIERvIGFsbCB0aGUgd29yayBmb3IgQXV0b21ha2UuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtKi0NCkF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChD KSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LA0K MjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVz IHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgMTINCisNCisjIFRoaXMgbWFjcm8gYWN0dWFsbHkgZG9l cyB0b28gbXVjaC4gIFNvbWUgY2hlY2tzIGFyZSBvbmx5IG5lZWRlZCBpZg0KKyMgeW91ciBwYWNr YWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVh bC4NCisNCisjIEFNX0lOSVRfQVVUT01BS0UoUEFDS0FHRSwgVkVSU0lPTiwgW05PLURFRklORV0p DQorIyBBTV9JTklUX0FVVE9NQUtFKFtPUFRJT05TXSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBUaGUgY2FsbCB3aXRoIFBBQ0tBR0UgYW5k IFZFUlNJT04gYXJndW1lbnRzIGlzIHRoZSBvbGQgc3R5bGUNCisjIGNhbGwgKHByZSBhdXRvY29u Zi0yLjUwKSwgd2hpY2ggaXMgYmVpbmcgcGhhc2VkIG91dC4gIFBBQ0tBR0UNCisjIGFuZCBWRVJT SU9OIHNob3VsZCBub3cgYmUgcGFzc2VkIHRvIEFDX0lOSVQgYW5kIHJlbW92ZWQgZnJvbQ0KKyMg dGhlIGNhbGwgdG8gQU1fSU5JVF9BVVRPTUFLRS4NCisjIFdlIHN1cHBvcnQgYm90aCBjYWxsIHN0 eWxlcyBmb3IgdGhlIHRyYW5zaXRpb24uICBBZnRlcg0KKyMgdGhlIG5leHQgQXV0b21ha2UgcmVs ZWFzZSwgQXV0b2NvbmYgY2FuIG1ha2UgdGhlIEFDX0lOSVQNCisjIGFyZ3VtZW50cyBtYW5kYXRv cnksIGFuZCB0aGVuIHdlIGNhbiBkZXBlbmQgb24gYSBuZXcgQXV0b2NvbmYNCisjIHJlbGVhc2Ug YW5kIGRyb3AgdGhlIG9sZCBjYWxsIHN1cHBvcnQuDQorQUNfREVGVU4oW0FNX0lOSVRfQVVUT01B S0VdLA0KK1tBQ19QUkVSRVEoWzIuNThdKWRubA0KK2RubCBBdXRvY29uZiB3YW50cyB0byBkaXNh bGxvdyBBTV8gbmFtZXMuICBXZSBleHBsaWNpdGx5IGFsbG93DQorZG5sIHRoZSBvbmVzIHdlIGNh cmUgYWJvdXQuDQorbTRfcGF0dGVybl9hbGxvdyhbXkFNX1tBLVpdK0ZMQUdTJF0pZG5sDQorQUNf UkVRVUlSRShbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0pZG5sDQorQUNfUkVRVUlS RShbQUNfUFJPR19JTlNUQUxMXSlkbmwNCisjIHRlc3QgdG8gc2VlIGlmIHNyY2RpciBhbHJlYWR5 IGNvbmZpZ3VyZWQNCitpZiB0ZXN0ICJgY2QgJHNyY2RpciAmJiBwd2RgIiAhPSAiYHB3ZGAiICYm DQorICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5zdGF0dXM7IHRoZW4NCisgIEFDX01TR19FUlJP Uihbc291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biAibWFrZQ0KZGlzdGNs ZWFuIiB0aGVyZSBmaXJzdF0pDQorZmkNCisNCisjIHRlc3Qgd2hldGhlciB3ZSBoYXZlIGN5Z3Bh dGgNCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbg0KKyAgaWYgKGN5Z3BhdGggLS12ZXJz aW9uKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIENZR1BBVEhfVz0nY3lncGF0 aCAtdycNCisgIGVsc2UNCisgICAgQ1lHUEFUSF9XPWVjaG8NCisgIGZpDQorZmkNCitBQ19TVUJT VChbQ1lHUEFUSF9XXSkNCisNCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2Uu DQorZG5sIERpc3Rpbmd1aXNoIGJldHdlZW4gb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2FsbHMu DQorbTRfaWZ2YWwoWyQyXSwNCitbbTRfaWZ2YWwoWyQzXSwgW19BTV9TRVRfT1BUSU9OKFtuby1k ZWZpbmVdKV0pZG5sDQorIEFDX1NVQlNUKFtQQUNLQUdFXSwgWyQxXSlkbmwNCisgQUNfU1VCU1Qo W1ZFUlNJT05dLCBbJDJdKV0sDQorW19BTV9TRVRfT1BUSU9OUyhbJDFdKWRubA0KKyBBQ19TVUJT VChbUEFDS0FHRV0sIFsnQUNfUEFDS0FHRV9UQVJOQU1FJ10pZG5sDQorIEFDX1NVQlNUKFtWRVJT SU9OXSwgWydBQ19QQUNLQUdFX1ZFUlNJT04nXSldKWRubA0KKw0KK19BTV9JRl9PUFRJT04oW25v LWRlZmluZV0sLA0KK1tBQ19ERUZJTkVfVU5RVU9URUQoUEFDS0FHRSwgIiRQQUNLQUdFIiwgW05h bWUgb2YgcGFja2FnZV0pDQorIEFDX0RFRklORV9VTlFVT1RFRChWRVJTSU9OLCAiJFZFUlNJT04i LCBbVmVyc2lvbiBudW1iZXIgb2YNCnBhY2thZ2VdKV0pZG5sDQorDQorIyBTb21lIHRvb2xzIEF1 dG9tYWtlIG5lZWRzLg0KK0FDX1JFUVVJUkUoW0FNX1NBTklUWV9DSEVDS10pZG5sDQorQUNfUkVR VUlSRShbQUNfQVJHX1BST0dSQU1dKWRubA0KK0FNX01JU1NJTkdfUFJPRyhBQ0xPQ0FMLCBhY2xv Y2FsLSR7YW1fX2FwaV92ZXJzaW9ufSkNCitBTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9j b25mKQ0KK0FNX01JU1NJTkdfUFJPRyhBVVRPTUFLRSwgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNp b259KQ0KK0FNX01JU1NJTkdfUFJPRyhBVVRPSEVBREVSLCBhdXRvaGVhZGVyKQ0KK0FNX01JU1NJ TkdfUFJPRyhNQUtFSU5GTywgbWFrZWluZm8pDQorQU1fUFJPR19JTlNUQUxMX1NIDQorQU1fUFJP R19JTlNUQUxMX1NUUklQDQorQUNfUkVRVUlSRShbQU1fUFJPR19NS0RJUl9QXSlkbmwNCisjIFdl IG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJh ZCBvbg0KKyMgc29tZSBwbGF0Zm9ybXMuDQorQUNfUkVRVUlSRShbQUNfUFJPR19BV0tdKWRubA0K K0FDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubA0KK0FDX1JFUVVJUkUoW0FNX1NFVF9M RUFESU5HX0RPVF0pZG5sDQorX0FNX0lGX09QVElPTihbdGFyLXVzdGFyXSwgW19BTV9QUk9HX1RB UihbdXN0YXJdKV0sDQorICAgICAgICAgICAgICBbX0FNX0lGX09QVElPTihbdGFyLXBheF0sIFtf QU1fUFJPR19UQVIoW3BheF0pXSwNCisJICAgICAgCQkgICAgIFtfQU1fUFJPR19UQVIoW3Y3XSld KV0pDQorX0FNX0lGX09QVElPTihbbm8tZGVwZW5kZW5jaWVzXSwsDQorW0FDX1BST1ZJREVfSUZF TFNFKFtBQ19QUk9HX0NDXSwNCisgICAgICAgICAgICAgICAgICBbX0FNX0RFUEVOREVOQ0lFUyhD QyldLA0KKyAgICAgICAgICAgICAgICAgIFtkZWZpbmUoW0FDX1BST0dfQ0NdLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICANCmRlZm4oW0FDX1BST0dfQ0NdKVtfQU1fREVQRU5ERU5DSUVTKEND KV0pXSlkbmwNCitBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19DWFhdLA0KKyAgICAgICAgICAg ICAgICAgIFtfQU1fREVQRU5ERU5DSUVTKENYWCldLA0KKyAgICAgICAgICAgICAgICAgIFtkZWZp bmUoW0FDX1BST0dfQ1hYXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgDQpkZWZuKFtBQ19Q Uk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwNCitdKQ0KK10pDQorDQorDQor IyBXaGVuIGNvbmZpZy5zdGF0dXMgZ2VuZXJhdGVzIGEgaGVhZGVyLCB3ZSBtdXN0IHVwZGF0ZSB0 aGUgc3RhbXAtaA0KZmlsZS4NCisjIFRoaXMgZmlsZSByZXNpZGVzIGluIHRoZSBzYW1lIGRpcmVj dG9yeSBhcyB0aGUgY29uZmlnIGhlYWRlcg0KKyMgdGhhdCBpcyBnZW5lcmF0ZWQuICBUaGUgc3Rh bXAgZmlsZXMgYXJlIG51bWJlcmVkIHRvIGhhdmUgZGlmZmVyZW50DQpuYW1lcy4NCisNCisjIEF1 dG9jb25mIGNhbGxzIF9BQ19BTV9DT05GSUdfSEVBREVSX0hPT0sgKHdoZW4gZGVmaW5lZCkgaW4g dGhlDQorIyBsb29wIHdoZXJlIGNvbmZpZy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28g d2UgY2FuIGdlbmVyYXRlDQorIyBvdXIgc3RhbXAgZmlsZXMgdGhlcmUuDQorQUNfREVGVU4oW19B Q19BTV9DT05GSUdfSEVBREVSX0hPT0tdLA0KK1sjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29u ZmlnX2hlYWRlcnMuDQorX2FtX3N0YW1wX2NvdW50PTENCitmb3IgX2FtX2hlYWRlciBpbiAkY29u ZmlnX2hlYWRlcnMgOjsgZG8NCisgIGNhc2UgJF9hbV9oZWFkZXIgaW4NCisgICAgJDEgfCAkMToq ICkNCisgICAgICBicmVhayA7Ow0KKyAgICAqICkNCisgICAgICBfYW1fc3RhbXBfY291bnQ9YGV4 cHIgJF9hbV9zdGFtcF9jb3VudCArIDFgIDs7DQorICBlc2FjDQorZG9uZQ0KK2VjaG8gInRpbWVz dGFtcCBmb3IgJDEiID5gQVNfRElSTkFNRShbJDFdKWAvc3RhbXAtDQpoW10kX2FtX3N0YW1wX2Nv dW50XSkNCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp Y2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBBTV9Q Uk9HX0lOU1RBTExfU0gNCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGVmaW5lICRpbnN0YWxs X3NoLg0KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU0hdLA0KK1tBQ19SRVFVSVJFKFtBTV9B VVhfRElSX0VYUEFORF0pZG5sDQoraW5zdGFsbF9zaD0ke2luc3RhbGxfc2gtIiRhbV9hdXhfZGly L2luc3RhbGwtc2gifQ0KK0FDX1NVQlNUKGluc3RhbGxfc2gpXSkNCisNCisjIENvcHlyaWdodCAo QykgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisj IGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQs DQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGlj ZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgMg0KKw0KKyMgQ2hlY2sgd2hldGhlciB0aGUg dW5kZXJseWluZyBmaWxlLXN5c3RlbSBzdXBwb3J0cyBmaWxlbmFtZXMNCisjIHdpdGggYSBsZWFk aW5nIGRvdC4gIEZvciBpbnN0YW5jZSBNUy1ET1MgZG9lc24ndC4NCitBQ19ERUZVTihbQU1fU0VU X0xFQURJTkdfRE9UXSwNCitbcm0gLXJmIC50c3QgMj4vZGV2L251bGwNCitta2RpciAudHN0IDI+ L2Rldi9udWxsDQoraWYgdGVzdCAtZCAudHN0OyB0aGVuDQorICBhbV9fbGVhZGluZ19kb3Q9Lg0K K2Vsc2UNCisgIGFtX19sZWFkaW5nX2RvdD1fDQorZmkNCitybWRpciAudHN0IDI+L2Rldi9udWxs DQorQUNfU1VCU1QoW2FtX19sZWFkaW5nX2RvdF0pXSkNCisNCisjIEFkZCAtLWVuYWJsZS1tYWlu dGFpbmVyLW1vZGUgb3B0aW9uIHRvIGNvbmZpZ3VyZS4gICAgICAgICAtKi0NCkF1dG9jb25mIC0q LQ0KKyMgRnJvbSBKaW0gTWV5ZXJpbmcNCisNCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5OCwg MjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNv cHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u cywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgNA0K Kw0KK0FDX0RFRlVOKFtBTV9NQUlOVEFJTkVSX01PREVdLA0KK1tBQ19NU0dfQ0hFQ0tJTkcoW3do ZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YNCk1ha2VmaWxl c10pDQorICBkbmwgbWFpbnRhaW5lci1tb2RlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQNCisgIEFD X0FSR19FTkFCTEUobWFpbnRhaW5lci1tb2RlLA0KK1sgIC0tZW5hYmxlLW1haW50YWluZXItbW9k ZSAgZW5hYmxlIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QNCnVzZWZ1bA0KKwkJCSAg KGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsDQppbnN0YWxsZXJdLA0KKyAg ICAgIFVTRV9NQUlOVEFJTkVSX01PREU9JGVuYWJsZXZhbCwNCisgICAgICBVU0VfTUFJTlRBSU5F Ul9NT0RFPW5vKQ0KKyAgQUNfTVNHX1JFU1VMVChbJFVTRV9NQUlOVEFJTkVSX01PREVdKQ0KKyAg QU1fQ09ORElUSU9OQUwoTUFJTlRBSU5FUl9NT0RFLCBbdGVzdCAkVVNFX01BSU5UQUlORVJfTU9E RSA9IHllc10pDQorICBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUNCisgIEFDX1NVQlNUKE1B SU5UKWRubA0KK10NCispDQorDQorQVVfREVGVU4oW2ptX01BSU5UQUlORVJfTU9ERV0sIFtBTV9N QUlOVEFJTkVSX01PREVdKQ0KKw0KKyMgQ2hlY2sgdG8gc2VlIGhvdyAnbWFrZScgdHJlYXRzIGlu Y2x1ZGVzLgkgICAgICAgICAgICAtKi0NCkF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChD KSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4N CisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlz dHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFz IHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCAzDQorDQorIyBBTV9NQUtF X0lOQ0xVREUoKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0NCisjIENoZWNrIHRvIHNlZSBob3cgbWFr ZSB0cmVhdHMgaW5jbHVkZXMuDQorQUNfREVGVU4oW0FNX01BS0VfSU5DTFVERV0sDQorW2FtX21h a2U9JHtNQUtFLW1ha2V9DQorY2F0ID4gY29uZmluYyA8PCAnRU5EJw0KK2FtX19kb2l0Og0KKwlA ZWNobyBkb25lDQorLlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMgSWYgd2UgZG9uJ3QgZmluZCBh biBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUgY29kZS4NCitBQ19NU0df Q0hFQ0tJTkcoW2ZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2VdKQ0KK2FtX19p bmNsdWRlPSIjIg0KK2FtX19xdW90ZT0NCitfYW1fcmVzdWx0PW5vbmUNCisjIEZpcnN0IHRyeSBH TlUgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2VjaG8gImluY2x1ZGUgY29uZmluYyIgPiBjb25mbWYN CisjIFdlIGdyZXAgb3V0IGBFbnRlcmluZyBkaXJlY3RvcnknIGFuZCBgTGVhdmluZyBkaXJlY3Rv cnknDQorIyBtZXNzYWdlcyB3aGljaCBjYW4gb2NjdXIgaWYgYHcnIGVuZHMgdXAgaW4gTUFLRUZM QUdTLg0KKyMgSW4gcGFydGljdWxhciB3ZSBkb24ndCBsb29rIGF0IGBebWFrZTonIGJlY2F1c2Ug R05VIG1ha2UgbWlnaHQNCisjIGJlIGludm9rZWQgdW5kZXIgc29tZSBvdGhlciBuYW1lICh1c3Vh bGx5ICJnbWFrZSIpLCBpbiB3aGljaA0KKyMgY2FzZSBpdCBwcmludHMgaXRzIG5ldyBuYW1lIGlu c3RlYWQgb2YgYG1ha2UnLg0KK2lmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rl di9udWxsIHwgZ3JlcCAtdiAnaW5nDQpkaXJlY3RvcnknYCIgPSAiZG9uZSI7IHRoZW4NCisgICBh bV9faW5jbHVkZT1pbmNsdWRlDQorICAgYW1fX3F1b3RlPQ0KKyAgIF9hbV9yZXN1bHQ9R05VDQor ZmkNCisjIE5vdyB0cnkgQlNEIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitpZiB0ZXN0ICIkYW1fX2lu Y2x1ZGUiID0gIiMiOyB0aGVuDQorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZt Zg0KKyAgIGlmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCIgPSAi ZG9uZSI7IHRoZW4NCisgICAgICBhbV9faW5jbHVkZT0uaW5jbHVkZQ0KKyAgICAgIGFtX19xdW90 ZT0iXCIiDQorICAgICAgX2FtX3Jlc3VsdD1CU0QNCisgICBmaQ0KK2ZpDQorQUNfU1VCU1QoW2Ft X19pbmNsdWRlXSkNCitBQ19TVUJTVChbYW1fX3F1b3RlXSkNCitBQ19NU0dfUkVTVUxUKFskX2Ft X3Jlc3VsdF0pDQorcm0gLWYgY29uZmluYyBjb25mbWYNCitdKQ0KKw0KKyMgRmFrZSB0aGUgZXhp c3RlbmNlIG9mIHByb2dyYW1zIHRoYXQgR05VIG1haW50YWluZXJzIHVzZS4gIC0qLQ0KQXV0b2Nv bmYgLSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMs IDIwMDUNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmls ZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZl cyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMg d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMg cHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDQNCisNCisjIEFNX01JU1NJTkdfUFJPRyhOQU1FLCBQ Uk9HUkFNKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW0FN X01JU1NJTkdfUFJPR10sDQorW0FDX1JFUVVJUkUoW0FNX01JU1NJTkdfSEFTX1JVTl0pDQorJDE9 JHskMS0iJHthbV9taXNzaW5nX3J1bn0kMiJ9DQorQUNfU1VCU1QoJDEpXSkNCisNCisNCisjIEFN X01JU1NJTkdfSEFTX1JVTg0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEZWZpbmUgTUlTU0lO RyBpZiBub3QgZGVmaW5lZCBzbyBmYXIgYW5kIHRlc3QgaWYgaXQgc3VwcG9ydHMgLS1ydW4uDQor IyBJZiBpdCBkb2VzLCBzZXQgYW1fbWlzc2luZ19ydW4gdG8gdXNlIGl0LCBvdGhlcndpc2UsIHRv IG5vdGhpbmcuDQorQUNfREVGVU4oW0FNX01JU1NJTkdfSEFTX1JVTl0sDQorW0FDX1JFUVVJUkUo W0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwNCit0ZXN0IHgiJHtNSVNTSU5HK3NldH0iID0geHNldCB8 fCBNSVNTSU5HPSJcJHtTSEVMTH0NCiRhbV9hdXhfZGlyL21pc3NpbmciDQorIyBVc2UgZXZhbCB0 byBleHBhbmQgJFNIRUxMDQoraWYgZXZhbCAiJE1JU1NJTkcgLS1ydW4gdHJ1ZSI7IHRoZW4NCisg IGFtX21pc3NpbmdfcnVuPSIkTUlTU0lORyAtLXJ1biAiDQorZWxzZQ0KKyAgYW1fbWlzc2luZ19y dW49DQorICBBQ19NU0dfV0FSTihbYG1pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9yIG1pc3Np bmddKQ0KK2ZpDQorXSkNCisNCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29m dHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBw ZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhv dXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQor DQorIyBBTV9QUk9HX01LRElSX1ANCisjIC0tLS0tLS0tLS0tLS0tLQ0KKyMgQ2hlY2sgd2hldGhl ciBgbWtkaXIgLXAnIGlzIHN1cHBvcnRlZCwgZmFsbGJhY2sgdG8gbWtpbnN0YWxsZGlycw0Kb3Ro ZXJ3aXNlLg0KKyMNCisjIEF1dG9tYWtlIDEuOCB1c2VkIGBta2RpciAtbSAwNzU1IC1wIC0tJyB0 byBlbnN1cmUgdGhhdCBkaXJlY3Rvcmllcw0KKyMgY3JlYXRlZCBieSBgbWFrZSBpbnN0YWxsJyBh cmUgYWx3YXlzIHdvcmxkIHJlYWRhYmxlLCBldmVuIGlmIHRoZQ0KKyMgaW5zdGFsbGVyIGhhcHBl bnMgdG8gaGF2ZSBhbiBvdmVybHkgcmVzdHJpY3RpdmUgdW1hc2sgKGUuZy4gMDc3KS4NCisjIFRo aXMgd2FzIGEgbWlzdGFrZS4gIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gcmVhc29ucyB3aHkgd2Ug bXVzdCBub3QNCisjIHVzZSBgLW0gMDc1NSc6DQorIyAgIC0gaXQgY2F1c2VzIHNwZWNpYWwgYml0 cyBsaWtlIFNHSUQgdG8gYmUgaWdub3JlZCwNCisjICAgLSBpdCBtYXkgYmUgdG9vIHJlc3RyaWN0 aXZlIChzb21lIHNldHVwcyBleHBlY3QgNzc1IGRpcmVjdG9yaWVzKS4NCisjDQorIyBEbyBub3Qg dXNlIC1tIDA3NTUgYW5kIGxldCBwZW9wbGUgY2hvb3NlIHdoYXRldmVyIHRoZXkgZXhwZWN0IGJ5 DQorIyBzZXR0aW5nIHVtYXNrLg0KKyMNCisjIFdlIGNhbm5vdCBhY2NlcHQgYW55IGltcGxlbWVu dGF0aW9uIG9mIGBta2RpcicgdGhhdCByZWNvZ25pemVzIGAtcCcuDQorIyBTb21lIGltcGxlbWVu dGF0aW9ucyAoc3VjaCBhcyBTb2xhcmlzIDgncykgYXJlIG5vdCB0aHJlYWQtc2FmZTogaWYgYQ0K KyMgcGFyYWxsZWwgbWFrZSB0cmllcyB0byBydW4gYG1rZGlyIC1wIGEvYicgYW5kIGBta2RpciAt cCBhL2MnDQorIyBjb25jdXJyZW50bHksIGJvdGggdmVyc2lvbiBjYW4gZGV0ZWN0IHRoYXQgYS8g aXMgbWlzc2luZywgYnV0IG9ubHkNCisjIG9uZSBjYW4gY3JlYXRlIGl0IGFuZCB0aGUgb3RoZXIg d2lsbCBlcnJvciBvdXQuICBDb25zZXF1ZW50bHkgd2UNCisjIHJlc3RyaWN0IG91cnNlbHZlcyB0 byBHTlUgbWFrZSAodXNpbmcgdGhlIC0tdmVyc2lvbiBvcHRpb24gZW5zdXJlcw0KKyMgdGhpcy4p DQorQUNfREVGVU4oW0FNX1BST0dfTUtESVJfUF0sDQorW2lmIG1rZGlyIC1wIC0tdmVyc2lvbiAu ID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICEgLWQgLi8tLXZlcnNpb247DQp0aGVuDQorICAjIFdl IHVzZWQgdG8ga2VlcGluZyB0aGUgYC4nIGFzIGZpcnN0IGFyZ3VtZW50LCBpbiBvcmRlciB0bw0K KyAgIyBhbGxvdyAkKG1rZGlyX3ApIHRvIGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudC4gIEFzIGlu DQorICAjICAgJChta2Rpcl9wKSAkKHNvbWVkaXIpDQorICAjIHdoZXJlICQoc29tZWRpcikgaXMg Y29uZGl0aW9uYWxseSBkZWZpbmVkLiAgSG93ZXZlciB0aGlzIGlzIHdyb25nDQorICAjIGZvciB0 d28gcmVhc29uczoNCisgICMgIDEuIGlmIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZCBieSBhIHVz ZXIgd2hvIGNhbm5vdCB3cml0ZSBgLicNCisgICMgICAgIG1ha2UgaW5zdGFsbCB3aWxsIGZhaWws DQorICAjICAyLiB0aGUgYWJvdmUgY29tbWVudCBzaG91bGQgbW9zdCBjZXJ0YWlubHkgcmVhZA0K KyAgIyAgICAgJChta2Rpcl9wKSAkKERFU1RESVIpJChzb21lZGlyKQ0KKyAgIyAgICAgc28gaXQg ZG9lcyBub3Qgd29yayB3aGVuICQoc29tZWRpcikgaXMgdW5kZWZpbmVkIGFuZA0KKyAgIyAgICAg JChERVNURElSKSBpcyBub3QuDQorICAjICBUbyBzdXBwb3J0IHRoZSBsYXR0ZXIgY2FzZSwgd2Ug aGF2ZSB0byB3cml0ZQ0KKyAgIyAgICAgdGVzdCAteiAiJChzb21lZGlyKSIgfHwgJChta2Rpcl9w KSAkKERFU1RESVIpJChzb21lZGlyKSwNCisgICMgIHNvIHRoZSBgLicgdHJpY2sgaXMgcG9pbnRs ZXNzLg0KKyAgbWtkaXJfcD0nbWtkaXIgLXAgLS0nDQorZWxzZQ0KKyAgIyBPbiBOZXh0U3RlcCBh bmQgT3BlblN0ZXAsIHRoZSBgbWtkaXInIGNvbW1hbmQgZG9lcyBub3QNCisgICMgcmVjb2duaXpl IGFueSBvcHRpb24uICBJdCB3aWxsIGludGVycHJldCBhbGwgb3B0aW9ucyBhcw0KKyAgIyBkaXJl Y3RvcmllcyB0byBjcmVhdGUsIGFuZCB0aGVuIGFib3J0IGJlY2F1c2UgYC4nIGFscmVhZHkNCisg ICMgZXhpc3RzLg0KKyAgZm9yIGQgaW4gLi8tcCAuLy0tdmVyc2lvbjsNCisgIGRvDQorICAgIHRl c3QgLWQgJGQgJiYgcm1kaXIgJGQNCisgIGRvbmUNCisgICMgJChta2luc3RhbGxkaXJzKSBpcyBk ZWZpbmVkIGJ5IEF1dG9tYWtlIGlmIG1raW5zdGFsbGRpcnMgZXhpc3RzLg0KKyAgaWYgdGVzdCAt ZiAiJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyI7IHRoZW4NCisgICAgbWtkaXJfcD0nJChta2lu c3RhbGxkaXJzKScNCisgIGVsc2UNCisgICAgbWtkaXJfcD0nJChpbnN0YWxsX3NoKSAtZCcNCisg IGZpDQorZmkNCitBQ19TVUJTVChbbWtkaXJfcF0pXSkNCisNCisjIEhlbHBlciBmdW5jdGlvbnMg Zm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgICAtKi0NCkF1dG9jb25mIC0q LQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Np b24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2Rp ZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNl cmlhbCAzDQorDQorIyBfQU1fTUFOR0xFX09QVElPTihOQU1FKQ0KKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCitBQ19ERUZVTihbX0FNX01BTkdMRV9PUFRJT05dLA0KK1tbX0FNX09QVElPTl9d bTRfYnBhdHN1YnN0KCQxLCBbW15hLXpBLVowLTlfXV0sIFtfXSldKQ0KKw0KKyMgX0FNX1NFVF9P UFRJT04oTkFNRSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2V0IG9w dGlvbiBOQU1FLiAgUHJlc2VudGx5IHRoYXQgb25seSBtZWFucyBkZWZpbmluZyBhIGZsYWcgZm9y IHRoaXMNCm9wdGlvbi4NCitBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05dLA0KK1ttNF9kZWZpbmUo X0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkNCisNCisjIF9BTV9TRVRfT1BUSU9OUyhPUFRJ T05TKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgT1BUSU9OUyBp cyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMuDQorQUNfREVGVU4o W19BTV9TRVRfT1BUSU9OU10sDQorW0FDX0ZPUkVBQ0goW19BTV9PcHRpb25dLCBbJDFdLCBbX0FN X1NFVF9PUFRJT04oX0FNX09wdGlvbildKV0pDQorDQorIyBfQU1fSUZfT1BUSU9OKE9QVElPTiwg SUYtU0VULCBbSUYtTk9ULVNFVF0pDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQorIyBFeGVjdXRlIElGLVNFVCBpZiBPUFRJT04gaXMgc2V0LCBJRi1OT1Qt U0VUIG90aGVyd2lzZS4NCitBQ19ERUZVTihbX0FNX0lGX09QVElPTl0sDQorW200X2lmc2V0KF9B TV9NQU5HTEVfT1BUSU9OKFskMV0pLCBbJDJdLCBbJDNdKV0pDQorDQorIyBDaGVjayB0byBtYWtl IHN1cmUgdGhhdCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4gICAgLSotDQpBdXRvY29u ZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSwgMjAwMywg MjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVz IHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgNA0KKw0KKyMgQU1fU0FOSVRZX0NIRUNLDQorIyAtLS0t LS0tLS0tLS0tLS0NCitBQ19ERUZVTihbQU1fU0FOSVRZX0NIRUNLXSwNCitbQUNfTVNHX0NIRUNL SU5HKFt3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmVdKQ0KKyMgSnVzdCBpbiBjYXNl DQorc2xlZXAgMQ0KK2VjaG8gdGltZXN0YW1wID4gY29uZnRlc3QuZmlsZQ0KKyMgRG8gYHNldCcg aW4gYSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MNCisj IGFyZ3VtZW50cy4gIE11c3QgdHJ5IC1MIGZpcnN0IGluIGNhc2UgY29uZmlndXJlIGlzIGFjdHVh bGx5IGENCisjIHN5bWxpbms7IHNvbWUgc3lzdGVtcyBwbGF5IHdlaXJkIGdhbWVzIHdpdGggdGhl IG1vZCB0aW1lIG9mIHN5bWxpbmtzDQorIyAoZWcgRnJlZUJTRCByZXR1cm5zIHRoZSBtb2QgdGlt ZSBvZiB0aGUgc3ltbGluaydzIGNvbnRhaW5pbmcNCisjIGRpcmVjdG9yeSkuDQoraWYgKA0KKyAg IHNldCBYIGBscyAtTHQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSAyPiAvZGV2L251 bGxgDQorICAgaWYgdGVzdCAiJFsqXSIgPSAiWCI7IHRoZW4NCisgICAgICAjIC1MIGRpZG4ndCB3 b3JrLg0KKyAgICAgIHNldCBYIGBscyAtdCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxl YA0KKyAgIGZpDQorICAgcm0gLWYgY29uZnRlc3QuZmlsZQ0KKyAgIGlmIHRlc3QgIiRbKl0iICE9 ICJYICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUiIFwNCisgICAgICAmJiB0ZXN0ICIk WypdIiAhPSAiWCBjb25mdGVzdC5maWxlICRzcmNkaXIvY29uZmlndXJlIjsgdGhlbg0KKw0KKyAg ICAgICMgSWYgbmVpdGhlciBtYXRjaGVkLCB0aGVuIHdlIGhhdmUgYSBicm9rZW4gbHMuICBUaGlz IGNhbiBoYXBwZW4NCisgICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBi YXNoIGFuZCBpdCBpbmhlcml0cyBhDQorICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUg ZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQ0KKyAgICAgICMgaGFwcGVuZWQuICBTdWNo IGEgc3lzdGVtIGNvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJzYW5lIi4NCisgICAgICBBQ19NU0df RVJST1IoW2xzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYQ0K YnJva2VuDQorYWxpYXMgaW4geW91ciBlbnZpcm9ubWVudF0pDQorICAgZmkNCisNCisgICB0ZXN0 ICIkWzJdIiA9IGNvbmZ0ZXN0LmZpbGUNCisgICApDQordGhlbg0KKyAgICMgT2suDQorICAgOg0K K2Vsc2UNCisgICBBQ19NU0dfRVJST1IoW25ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFu IGRpc3RyaWJ1dGVkIGZpbGVzIQ0KK0NoZWNrIHlvdXIgc3lzdGVtIGNsb2NrXSkNCitmaQ0KK0FD X01TR19SRVNVTFQoeWVzKV0pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVl IHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0 ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3 aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVk Lg0KKw0KKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0N CisjIE9uZSBpc3N1ZSB3aXRoIHZlbmRvciBgaW5zdGFsbCcgKGV2ZW4gR05VKSBpcyB0aGF0IHlv dSBjYW4ndA0KKyMgc3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAg VGhpcyBpcyBlc3BlY2lhbGx5DQorIyBhbm5veWluZyBpbiBjcm9zcy1jb21waWxpbmcgZW52aXJv bm1lbnRzLCB3aGVyZSB0aGUgYnVpbGQncyBzdHJpcA0KKyMgaXMgdW5saWtlbHkgdG8gaGFuZGxl IHRoZSBob3N0J3MgYmluYXJpZXMuDQorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9u b3IgYSBTVFJJUFBST0cgdmFyaWFibGUsIHNvIHdlDQorIyBhbHdheXMgdXNlIGluc3RhbGwtc2gg aW4gYG1ha2UgaW5zdGFsbC1zdHJpcCcsIGFuZCBpbml0aWFsaXplDQorIyBTVFJJUFBST0cgd2l0 aCB0aGUgdmFsdWUgb2YgdGhlIFNUUklQIHZhcmlhYmxlIChzZXQgYnkgdGhlIHVzZXIpLg0KK0FD X0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU1RSSVBdLA0KK1tBQ19SRVFVSVJFKFtBTV9QUk9HX0lO U1RBTExfU0hdKWRubA0KKyMgSW5zdGFsbGVkIGJpbmFyaWVzIGFyZSB1c3VhbGx5IHN0cmlwcGVk IHVzaW5nIGBzdHJpcCcgd2hlbiB0aGUgdXNlcg0KKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAn LiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQNCisjIHRvb2wgdG8gdXNl IGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50cywgdGhlcmVmb3JlIEF1dG9tYWtlDQor IyB3aWxsIGhvbm9yIHRoZSBgU1RSSVAnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJydWxl IHRoaXMNCnByb2dyYW0uDQorZG5sIERvbid0IHRlc3QgZm9yICRjcm9zc19jb21waWxpbmcgPSB5 ZXMsIGJlY2F1c2UgaXQgbWlnaHQgYmUNCmBtYXliZScuDQoraWYgdGVzdCAiJGNyb3NzX2NvbXBp bGluZyIgIT0gbm87IHRoZW4NCisgIEFDX0NIRUNLX1RPT0woW1NUUklQXSwgW3N0cmlwXSwgOikN CitmaQ0KK0lOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCR7U0hFTEx9IFwkKGluc3RhbGxfc2gpIC1j IC1zIg0KK0FDX1NVQlNUKFtJTlNUQUxMX1NUUklQX1BST0dSQU1dKV0pDQorDQorIyBDaGVjayBo b3cgdG8gY3JlYXRlIGEgdGFyYmFsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotDQpB dXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp Y2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJp YWwgMg0KKw0KKyMgX0FNX1BST0dfVEFSKEZPUk1BVCkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t DQorIyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFyYmFsbCBpbiBmb3JtYXQgRk9STUFULg0KKyMg Rk9STUFUIHNob3VsZCBiZSBvbmUgb2YgYHY3JywgYHVzdGFyJywgb3IgYHBheCcuDQorIw0KKyMg U3Vic3RpdHV0ZSBhIHZhcmlhYmxlICQoYW1fX3RhcikgdGhhdCBpcyBhIGNvbW1hbmQNCisjIHdy aXRpbmcgdG8gc3Rkb3V0IGEgRk9STUFULXRhcmJhbGwgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5 DQorIyAkdGFyZGlyLg0KKyMgICAgIHRhcmRpcj1kaXJlY3RvcnkgJiYgJChhbV9fdGFyKSA+IHJl c3VsdC50YXINCisjDQorIyBTdWJzdGl0dXRlIGEgdmFyaWFibGUgJChhbV9fdW50YXIpIHRoYXQg ZXh0cmFjdCBzdWNoDQorIyBhIHRhcmJhbGwgcmVhZCBmcm9tIHN0ZGluLg0KKyMgICAgICQoYW1f X3VudGFyKSA8IHJlc3VsdC50YXINCitBQ19ERUZVTihbX0FNX1BST0dfVEFSXSwNCitbIyBBbHdh eXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KK0FNX01JU1NJTkdf UFJPRyhbQU1UQVJdLCBbdGFyXSkNCittNF9pZihbJDFdLCBbdjddLA0KKyAgICAgW2FtX190YXI9 JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtDQon XSwNCisgICAgIFttNF9jYXNlKFskMV0sIFt1c3Rhcl0sLCBbcGF4XSwsDQorICAgICAgICAgICAg ICBbbTRfZmF0YWwoW1Vua25vd24gdGFyIGZvcm1hdF0pXSkNCitBQ19NU0dfQ0hFQ0tJTkcoW2hv dyB0byBjcmVhdGUgYSAkMSB0YXIgYXJjaGl2ZV0pDQorIyBMb29wIG92ZXIgYWxsIGtub3duIG1l dGhvZHMgdG8gY3JlYXRlIGEgdGFyIGFyY2hpdmUgdW50aWwgb25lIHdvcmtzLg0KK19hbV90b29s cz0nZ251dGFyIG00X2lmKFskMV0sIFt1c3Rhcl0sIFtwbGFpbnRhcl0pIHBheCBjcGlvIG5vbmUn DQorX2FtX3Rvb2xzPSR7YW1fY3ZfcHJvZ190YXJfJDEtJF9hbV90b29sc30NCisjIERvIG5vdCBm b2xkIHRoZSBhYm92ZSB0d28gbGluZSBpbnRvIG9uZSwgYmVjYXVzZSBUcnU2NCBzaCBhbmQNCisj IFNvbGFyaXMgc2ggd2lsbCBub3QgZ3JvayBzcGFjZXMgaW4gdGhlIHJocyBvZiBgLScuDQorZm9y IF9hbV90b29sIGluICRfYW1fdG9vbHMNCitkbw0KKyAgY2FzZSAkX2FtX3Rvb2wgaW4NCisgIGdu dXRhcikNCisgICAgZm9yIF9hbV90YXIgaW4gdGFyIGdudXRhciBndGFyOw0KKyAgICBkbw0KKyAg ICAgIEFNX1JVTl9MT0coWyRfYW1fdGFyIC0tdmVyc2lvbl0pICYmIGJyZWFrDQorICAgIGRvbmUN CisgICAgYW1fX3Rhcj0iJF9hbV90YXIgLS1mb3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3Np eF0sIFskMV0pIC1jaGYNCi0gIiciJCR0YXJkaXIiJw0KKyAgICBhbV9fdGFyXz0iJF9hbV90YXIg LS1mb3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYNCi0gIiciJHRh cmRpciInDQorICAgIGFtX191bnRhcj0iJF9hbV90YXIgLXhmIC0iDQorICAgIDs7DQorICBwbGFp bnRhcikNCisgICAgIyBNdXN0IHNraXAgR05VIHRhcjogaWYgaXQgZG9lcyBub3Qgc3VwcG9ydCAt LWZvcm1hdD0gaXQgZG9lc24ndA0KY3JlYXRlDQorICAgICMgdXN0YXIgdGFyYmFsbCBlaXRoZXIu DQorICAgICh0YXIgLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjEgJiYgY29udGludWUNCisgICAg YW1fX3Rhcj0ndGFyIGNoZiAtICIkJHRhcmRpciInDQorICAgIGFtX190YXJfPSd0YXIgY2hmIC0g IiR0YXJkaXIiJw0KKyAgICBhbV9fdW50YXI9J3RhciB4ZiAtJw0KKyAgICA7Ow0KKyAgcGF4KQ0K KyAgICBhbV9fdGFyPSdwYXggLUwgLXggJDEgLXcgIiQkdGFyZGlyIicNCisgICAgYW1fX3Rhcl89 J3BheCAtTCAteCAkMSAtdyAiJHRhcmRpciInDQorICAgIGFtX191bnRhcj0ncGF4IC1yJw0KKyAg ICA7Ow0KKyAgY3BpbykNCisgICAgYW1fX3Rhcj0nZmluZCAiJCR0YXJkaXIiIC1wcmludCB8IGNw aW8gLW8gLUggJDEgLUwnDQorICAgIGFtX190YXJfPSdmaW5kICIkdGFyZGlyIiAtcHJpbnQgfCBj cGlvIC1vIC1IICQxIC1MJw0KKyAgICBhbV9fdW50YXI9J2NwaW8gLWkgLUggJDEgLWQnDQorICAg IDs7DQorICBub25lKQ0KKyAgICBhbV9fdGFyPWZhbHNlDQorICAgIGFtX190YXJfPWZhbHNlDQor ICAgIGFtX191bnRhcj1mYWxzZQ0KKyAgICA7Ow0KKyAgZXNhYw0KKw0KKyAgIyBJZiB0aGUgdmFs dWUgd2FzIGNhY2hlZCwgc3RvcCBub3cuICBXZSBqdXN0IHdhbnRlZCB0byBoYXZlIGFtX190YXIN CisgICMgYW5kIGFtX191bnRhciBzZXQuDQorICB0ZXN0IC1uICIke2FtX2N2X3Byb2dfdGFyXyQx fSIgJiYgYnJlYWsNCisNCisgICMgdGFyL3VudGFyIGEgZHVtbXkgZGlyZWN0b3J5LCBhbmQgc3Rv cCBpZiB0aGUgY29tbWFuZCB3b3Jrcw0KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KKyAgbWtkaXIg Y29uZnRlc3QuZGlyDQorICBlY2hvIEdyZXBNZSA+IGNvbmZ0ZXN0LmRpci9maWxlDQorICBBTV9S VU5fTE9HKFt0YXJkaXI9Y29uZnRlc3QuZGlyICYmIGV2YWwgJGFtX190YXJfID5jb25mdGVzdC50 YXJdKQ0KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC50YXI7 IHRoZW4NCisgICAgQU1fUlVOX0xPRyhbJGFtX191bnRhciA8Y29uZnRlc3QudGFyXSkNCisgICAg Z3JlcCBHcmVwTWUgY29uZnRlc3QuZGlyL2ZpbGUgPi9kZXYvbnVsbCAyPiYxICYmIGJyZWFrDQor ICBmaQ0KK2RvbmUNCitybSAtcmYgY29uZnRlc3QuZGlyDQorDQorQUNfQ0FDSEVfVkFMKFthbV9j dl9wcm9nX3Rhcl8kMV0sIFthbV9jdl9wcm9nX3Rhcl8kMT0kX2FtX3Rvb2xdKQ0KK0FDX01TR19S RVNVTFQoWyRhbV9jdl9wcm9nX3Rhcl8kMV0pXSkNCitBQ19TVUJTVChbYW1fX3Rhcl0pDQorQUNf U1VCU1QoW2FtX191bnRhcl0pDQorXSkgIyBfQU1fUFJPR19UQVINCisNCittNF9pbmNsdWRlKFsu Li8uLi8uLi9hY2luY2x1ZGUubTRdKQ0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21hY2hpbmUv eHRlbnNhL2NvbmZpZ3VyZQ0KYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUN Cm5ldyBmaWxlIG1vZGUgMTAwNzU1DQppbmRleCAwMDAwMDAwMDAuLjMzOTM5MGRiNw0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlDQpAQCAt MCwwICsxLDQ2MjMgQEANCisjISAvYmluL3NoDQorIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1k ZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLg0KKyMgR2VuZXJhdGVkIGJ5 IEdOVSBBdXRvY29uZiAyLjY0IGZvciBuZXdsaWIgMS4xOS4wLg0KKyMNCisjIENvcHlyaWdodCAo QykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwN CisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBT b2Z0d2FyZQ0KKyMgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgY29uZmlndXJlIHNjcmlw dCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZl cyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQu DQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAj Iw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBCZSBtb3JlIEJvdXJuZSBjb21w YXRpYmxlDQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaA0KK2lmIHRl c3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4m MTsgdGhlbg0KOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00LjIgdmVy c2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gNCisgICMg aXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQorICBhbGlh cyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicNCisgIHNldG9wdCBOT19HTE9CX1NVQlNUDQorZWxzZQ0K KyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoDQorICAqcG9zaXgqKSA6DQorICAg IHNldCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkNCisNCisN Cithc19ubD0nDQorJw0KK2V4cG9ydCBhc19ubA0KKyMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBj cmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuDQorYXNfZWNobz0nXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXA0KXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2FzX2VjaG89JGFzX2VjaG8k YXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNo byRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVmZXIgYSBrc2ggc2hlbGwg YnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uDQpTb2xhcmlzLA0KKyMg YnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guDQoraWYgdGVzdCAteiAi JEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXA0KKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAt LSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOw0KdGhlbg0KKyAgYXNfZWNo bz0ncHJpbnQgLXIgLS0nDQorICBhc19lY2hvX249J3ByaW50IC1ybiAtLScNCitlbGlmICh0ZXN0 ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVu DQorICBhc19lY2hvPSdwcmludGYgJXNcbicNCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJw0KK2Vs c2UNCisgIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+L2Rldi9u dWxsYCIgPSAiWC1uDQokYXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19ib2R5PSdldmFsIC91 c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicNCisgICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hv IC1uJw0KKyAgZWxzZQ0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwo LipcXCkiJw0KKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFyZz0kMTsNCisgICAg ICBjYXNlICRhcmcgaW4gIygNCisgICAgICAqIiRhc19ubCIqKQ0KKwlleHByICJYJGFyZyIgOiAi WFxcKC4qXFwpJGFzX25sIjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxc KSJgOzsNCisgICAgICBlc2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwg dHIgLWQgIiRhc19ubCINCisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkNCisgICAg YXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycNCisgIGZpDQorICBleHBv cnQgYXNfZWNob19ib2R5DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8n DQorZmkNCisNCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0ZXN0ICIke1BBVEhf U0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFUT1I9Og0KKyAgKFBB VEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYg ew0KKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251 bGwgMj4mMSB8fA0KKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0KK2ZpDQorDQorDQor IyBJRlMNCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0 aGF0IG9yZGVyLiAgUXVvdGluZw0KaXMNCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9t IGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4NCisjIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUg Y2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQNCisjIHNwbGl0dGlu ZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pDQorSUZTPSIgIiIJJGFzX25sIg0KKw0K KyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRp cmVjdG9yeQ0Kc2VwYXJhdG9yLg0KK2Nhc2UgJDAgaW4gIygoDQorICAqW1xcL10qICkgYXNfbXlz ZWxmPSQwIDs7DQorICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQor Zm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19t eXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaw0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisN CisgICAgIDs7DQorZXNhYw0KKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9i YWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcNCisjIGluIHdoaWNoIGNhc2Ugd2UgYXJl IG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4NCitpZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4 OyB0aGVuDQorICBhc19teXNlbGY9JDANCitmaQ0KK2lmIHRlc3QgISAtZiAiJGFzX215c2VsZiI7 IHRoZW4NCisgICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxm OyByZXJ1biB3aXRoIGFuDQphYnNvbHV0ZSBmaWxlIG5hbWUiID4mMg0KKyAgZXhpdCAxDQorZmkN CisNCisjIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3aGljaCBjYXVz ZSBidWdzIChlLmcuIGluDQorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2Ug YnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdA0KMSINCisjIHN1cHByZXNzZXMgYW55ICJT ZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNvdWxkDQorIyB0cmlnZ2Vy IGEgYnVnIGluIHBka3NoIDUuMi4xNC4NCitmb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBNQUlM IE1BSUxQQVRIDQorZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0gPSB4c2V0IFwNCisgICYm ICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRh c192YXIgfHwNCjoNCitkb25lDQorUFMxPSckICcNCitQUzI9Jz4gJw0KK1BTND0nKyAnDQorDQor IyBOTFMgbnVpc2FuY2VzLg0KK0xDX0FMTD1DDQorZXhwb3J0IExDX0FMTA0KK0xBTkdVQUdFPUMN CitleHBvcnQgTEFOR1VBR0UNCisNCisjIENEUEFUSC4NCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9u dWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRIDQorDQoraWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0g eDsgdGhlbg0KKyAgYXNfYm91cm5lX2NvbXBhdGlibGU9ImlmIHRlc3QgLW4gXCJcJHtaU0hfVkVS U0lPTitzZXR9XCIgJiYgKGVtdWxhdGUNCnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOg0KKyAg ZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRv IHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoDQorICAjIGlzIGNvbnRyYXJ5 IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLg0KKyAgYWxpYXMgLWcgJ1wkezEr XCJcJEBcIn0nPSdcIlwkQFwiJw0KKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCitlbHNlDQorICBj YXNlIFxgKHNldCAtbykgMj4vZGV2L251bGxcYCBpbiAjKA0KKyAgKnBvc2l4KikgOg0KKyAgICBz ZXQgLW8gcG9zaXggOzsgIygNCisgICopIDoNCisgICAgIDs7DQorZXNhYw0KK2ZpDQorIg0KKyAg YXNfcmVxdWlyZWQ9ImFzX2ZuX3JldHVybiAoKSB7IChleGl0IFwkMSk7IH0NCithc19mbl9zdWNj ZXNzICgpIHsgYXNfZm5fcmV0dXJuIDA7IH0NCithc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0 dXJuIDE7IH0NCithc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJldHVybiAwOyB9DQorYXNfZm5fcmV0 X2ZhaWx1cmUgKCkgeyByZXR1cm4gMTsgfQ0KKw0KK2V4aXRjb2RlPTANCithc19mbl9zdWNjZXNz IHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9zdWNjZXNzIGZhaWxlZC47IH0NCithc19mbl9m YWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0N Cithc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X3N1Y2Nl c3MgZmFpbGVkLjsgfQ0KK2FzX2ZuX3JldF9mYWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBh c19mbl9yZXRfZmFpbHVyZSBzdWNjZWVkZWQuOw0KfQ0KK2lmICggc2V0IHg7IGFzX2ZuX3JldF9z dWNjZXNzIHkgJiYgdGVzdCB4ID0gXCJcJDFcIiApOyB0aGVuIDoNCisNCitlbHNlDQorICBleGl0 Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3ZXJlIG5vdCBzYXZlZC4NCitmaQ0K K3Rlc3QgeFwkZXhpdGNvZGUgPSB4MCB8fCBleGl0IDEiDQorICBhc19zdWdnZXN0ZWQ9IiANCmFz X2xpbmVub18xPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3Rl ZD0kYXNfc3VnZ2VzDQp0ZWQiIGFzX2xpbmVub18xYT1cJExJTkVOTw0KKyANCmFzX2xpbmVub18y PSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3Vn Z2VzDQp0ZWQiIGFzX2xpbmVub18yYT1cJExJTkVOTw0KKyAgZXZhbCAndGVzdCBcInhcJGFzX2xp bmVub18xJ1wkYXNfcnVuJ1wiICE9DQpcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmDQor ICB0ZXN0IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wkYXNfcnVuJyArIDFcYFwiID0NClwieFwk YXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4aXQgMSINCisgIGlmIChldmFsICIkYXNfcmVx dWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBhc19oYXZlX3JlcXVpcmVkPXllcw0KK2Vs c2UNCisgIGFzX2hhdmVfcmVxdWlyZWQ9bm8NCitmaQ0KKyAgaWYgdGVzdCB4JGFzX2hhdmVfcmVx dWlyZWQgPSB4eWVzICYmIChldmFsICIkYXNfc3VnZ2VzdGVkIikNCjI+L2Rldi9udWxsOyB0aGVu IDoNCisNCitlbHNlDQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQor YXNfZm91bmQ9ZmFsc2UNCitmb3IgYXNfZGlyIGluIC9iaW4kUEFUSF9TRVBBUkFUT1IvdXNyL2Jp biRQQVRIX1NFUEFSQVRPUiRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3Qg LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICBhc19mb3VuZD06DQorICBjYXNlICRhc19kaXIg aW4gIygNCisJIC8qKQ0KKwkgICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvDQor CSAgICAgIyBUcnkgb25seSBzaGVsbHMgdGhhdCBleGlzdCwgdG8gc2F2ZSBzZXZlcmFsIGZvcmtz Lg0KKwkgICAgIGFzX3NoZWxsPSRhc19kaXIvJGFzX2Jhc2UNCisJICAgICBpZiB7IHRlc3QgLWYg IiRhc19zaGVsbCIgfHwgdGVzdCAtZiAiJGFzX3NoZWxsLmV4ZSI7IH0gJiYNCisJCSAgICB7ICRh c19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1aXJlZCIgfA0KYXNfcnVuPWEg IiRhc19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgQ09ORklHX1NIRUxMPSRhc19z aGVsbCBhc19oYXZlX3JlcXVpcmVkPXllcw0KKwkJICAgaWYgeyAkYXNfZWNobw0KIiRhc19ib3Vy bmVfY29tcGF0aWJsZSIiJGFzX3N1Z2dlc3RlZCIgfCBhc19ydW49YSAiJGFzX3NoZWxsIjsgfQ0K Mj4vZGV2L251bGw7IHRoZW4gOg0KKyAgYnJlYWsgMg0KK2ZpDQorZmkNCisJICAgZG9uZTs7DQor ICAgICAgIGVzYWMNCisgIGFzX2ZvdW5kPWZhbHNlDQorZG9uZQ0KKyRhc19mb3VuZCB8fCB7IGlm IHsgdGVzdCAtZiAiJFNIRUxMIiB8fCB0ZXN0IC1mICIkU0hFTEwuZXhlIjsgfSAmJg0KKwkgICAg ICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1aXJlZCIgfA0KYXNf cnVuPWEgIiRTSEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgQ09ORklHX1NIRUxMPSRT SEVMTCBhc19oYXZlX3JlcXVpcmVkPXllcw0KK2ZpOyB9DQorSUZTPSRhc19zYXZlX0lGUw0KKw0K Kw0KKyAgICAgIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoNCisgICMgV2Ug Y2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBh DQorCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQg dGhpcyBhbHNvDQorCSMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25l eGlzdGVudCB2YXJpYWJsZXMuDQorCUJBU0hfRU5WPS9kZXYvbnVsbA0KKwlFTlY9L2Rldi9udWxs DQorCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVO Vg0KKwlleHBvcnQgQ09ORklHX1NIRUxMDQorCWV4ZWMgIiRDT05GSUdfU0hFTEwiICIkYXNfbXlz ZWxmIiAkezErIiRAIn0NCitmaQ0KKw0KKyAgICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9 IHhubzsgdGhlbiA6DQorICAkYXNfZWNobyAiJDA6IFRoaXMgc2NyaXB0IHJlcXVpcmVzIGEgc2hl bGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiDQorICAkYXNfZWNobyAiJDA6IHRoZSBzaGVsbHMgdGhh dCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiINCisgIGlmIHRlc3QgeCR7WlNIX1ZFUlNJT04rc2V0 fSA9IHhzZXQgOyB0aGVuDQorICAgICRhc19lY2hvICIkMDogSW4gcGFydGljdWxhciwgenNoICRa U0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIg0KKyAgICAkYXNfZWNobyAiJDA6IGJlIHVw Z3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iDQorICBlbHNlDQorICAgICRhc19lY2hvICIk MDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYWJvdXQgeW91ciBzeXN0ZW0sDQor JDA6IGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzDQorJDA6 IG1lc3NhZ2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwgb3IgbWFudWFsbHkgcnVuDQor JDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlmIHlvdSBkbyBoYXZlIG9uZS4iDQor ICBmaQ0KKyAgZXhpdCAxDQorZmkNCitmaQ0KK2ZpDQorU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jp bi9zaH0NCitleHBvcnQgU0hFTEwNCisjIFVuc2V0IG1vcmUgdmFyaWFibGVzIGtub3duIHRvIGlu dGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbg0KdG9vbHMuDQorQ0xJQ09MT1JfRk9SQ0U9 IEdSRVBfT1BUSU9OUz0NCit1bnNldCBDTElDT0xPUl9GT1JDRSBHUkVQX09QVElPTlMNCisNCisj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIFNoZWxsIEZ1bmN0aW9ucy4gIyMN CisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIGFzX2ZuX3Vuc2V0IFZBUg0KKyMgLS0t LS0tLS0tLS0tLS0tDQorIyBQb3J0YWJseSB1bnNldCBWQVIuDQorYXNfZm5fdW5zZXQgKCkNCit7 DQorICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9DQorfQ0KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0DQor DQorIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CisjIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4NCithc19mbl9zZXRfc3RhdHVz ICgpDQorew0KKyAgcmV0dXJuICQxDQorfSAjIGFzX2ZuX3NldF9zdGF0dXMNCisNCisjIGFzX2Zu X2V4aXQgU1RBVFVTDQorIyAtLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRXhpdCB0aGUgc2hlbGwgd2l0 aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0Lg0KK2FzX2Zu X2V4aXQgKCkNCit7DQorICBzZXQgK2UNCisgIGFzX2ZuX3NldF9zdGF0dXMgJDENCisgIGV4aXQg JDENCit9ICMgYXNfZm5fZXhpdA0KKw0KKyMgYXNfZm5fbWtkaXJfcA0KKyMgLS0tLS0tLS0tLS0t LQ0KKyMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMg aWYgbmVjZXNzYXJ5Lg0KK2FzX2ZuX21rZGlyX3AgKCkNCit7DQorDQorICBjYXNlICRhc19kaXIg aW4gIygNCisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsNCisgIGVzYWMNCisgIHRlc3QgLWQgIiRh c19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgew0KKyAgICBhc19kaXJzPQ0KKyAgICB3aGls ZSA6OyBkbw0KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgICAgICpcJyopIGFzX3FkaXI9 YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7DQojJygNCisg ICAgICAqKSBhc19xZGlyPSRhc19kaXI7Ow0KKyAgICAgIGVzYWMNCisgICAgICBhc19kaXJzPSIn JGFzX3FkaXInICRhc19kaXJzIg0KKyAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19k aXIiIHx8DQorJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8q JCcgXHwgXA0KKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkYXNfZGly IiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2 L251bGwgfHwNCiskYXNfZWNobyBYIiRhc19kaXIiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwp XC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAv XlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15Y XChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCku Ki97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICAg ICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsNCisgICAgZG9uZQ0KKyAgICB0ZXN0IC16ICIk YXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiDQorICB9IHx8IHRlc3QgLWQgIiRhc19k aXIiIHx8IGFzX2ZuX2Vycm9yICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeQ0KJGFzX2RpciINCisN CisNCit9ICMgYXNfZm5fbWtkaXJfcA0KKyMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQ0KKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBl bmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluDQpWQVIuIFRha2UNCisjIGFkdmFudGFn ZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXIN Cmdyb3d0aCBvdmVyDQorIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0eXBpY2Fs IHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbg0KbmFpdmUNCisjIGltcGxlbWVudGF0aW9ucy4N CitpZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAy Pi9kZXYvbnVsbDsNCnRoZW4gOg0KKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpDQorICB7DQorICAg IGV2YWwgJDErPVwkMg0KKyAgfScNCitlbHNlDQorICBhc19mbl9hcHBlbmQgKCkNCisgIHsNCisg ICAgZXZhbCAkMT1cJCQxXCQyDQorICB9DQorZmkgIyBhc19mbl9hcHBlbmQNCisNCisjIGFzX2Zu X2FyaXRoIEFSRy4uLg0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBQZXJmb3JtIGFyaXRobWV0 aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4NCnRoZQ0K KyMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9p ZCBmb3Jrcy4gVGhlDQphcmd1bWVudHMNCisjIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkp IGFuZCBleHByLg0KK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251 bGw7IHRoZW4gOg0KKyAgZXZhbCAnYXNfZm5fYXJpdGggKCkNCisgIHsNCisgICAgYXNfdmFsPSQo KCAkKiApKQ0KKyAgfScNCitlbHNlDQorICBhc19mbl9hcml0aCAoKQ0KKyAgew0KKyAgICBhc192 YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYA0KKyAgfQ0KK2ZpICMgYXNfZm5fYXJpdGgN CisNCisNCisjIGFzX2ZuX2Vycm9yIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQ0KKyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9y OiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRA0KYXJlDQorIyBwcm92aWRl ZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBU aGVuDQpleGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQg d2FzIDAuDQorYXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19zdGF0dXM9JD87IHRlc3QgJGFzX3N0 YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVzdCAiJDMiOyB0aGVuDQorICAgIGFz X2xpbmVubz0ke2FzX2xpbmVuby0iJDIifQ0KYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFj az0kYXNfbGluZW5vX3N0YWNrDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGVycm9yOiAkMSIgPiYkMw0KKyAgZmkNCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9y OiAkMSIgPiYyDQorICBhc19mbl9leGl0ICRhc19zdGF0dXMNCit9ICMgYXNfZm5fZXJyb3INCisN CitpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJg0KKyAgIHRlc3QgIlhgZXhw ciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuDQorICBhc19leHByPWV4cHINCitl bHNlDQorICBhc19leHByPWZhbHNlDQorZmkNCisNCitpZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYv bnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPQ0KIlgvIjsgdGhlbg0K KyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUNCitlbHNlDQorICBhc19iYXNlbmFtZT1mYWxzZQ0KK2Zp DQorDQoraWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykg Pi9kZXYvbnVsbCAyPiYxOw0KdGhlbg0KKyAgYXNfZGlybmFtZT1kaXJuYW1lDQorZWxzZQ0KKyAg YXNfZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8 DQorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwNCisJIFgiJDAi IDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwg fHwNCiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyok L3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcL1woXC9cL1wpJC97DQor CSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9cKFwvXCkuKi97DQorCSAgICBz Ly9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorDQorIyBBdm9pZCBkZXBl bmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2FzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZX WFlaJw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUw0KK2FzX2Ny X2RpZ2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9k aWdpdHMNCisNCisNCisgIGFzX2xpbmVub18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8N CisgIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRMSU5FTk8NCisgIGV2YWwgJ3Rl c3QgIngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIiAm Jg0KKyAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xp bmVub18yJyRhc19ydW4nIicNCnx8IHsNCisgICMgQmxhbWUgTGVlIEUuIE1jTWFob24gKDE5MzEt MTk4OSkgZm9yIHNlZCdzIHN5bnRheC4gIDotKQ0KKyAgc2VkIC1uICcNCisgICAgcA0KKyAgICAv WyRdTElORU5PLz0NCisgICcgPCRhc19teXNlbGYgfA0KKyAgICBzZWQgJw0KKyAgICAgIHMvWyRd TElORU5PLiovJi0vDQorICAgICAgdCBsaW5lbm8NCisgICAgICBiDQorICAgICAgOmxpbmVubw0K KyAgICAgIE4NCisgICAgICA6bG9vcA0KKyAgICAgIHMvWyRdTElORU5PXChbXickYXNfY3JfYWxu dW0nX10uKlxuXClcKC4qXCkvXDJcMVwyLw0KKyAgICAgIHQgbG9vcA0KKyAgICAgIHMvLVxuLiov Lw0KKyAgICAnID4kYXNfbWUubGluZW5vICYmDQorICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIg fHwNCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUu bGluZW5vOyByZXJ1biB3aXRoDQphIFBPU0lYIHNoZWxsIiA+JjI7IGFzX2ZuX2V4aXQgMTsgfQ0K Kw0KKyAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBjaGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxs IHNvcnQgb2YgcHJvYmxlbXMNCisgICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBw bGFjZSB3aGVyZSB3ZSBtaWdodCBmaW5kIHRoZQ0KKyAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBB dXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4NCisgIC4gIi4vJGFzX21l LmxpbmVubyINCisgICMgRXhpdCBzdGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLg0K KyAgZXhpdA0KK30NCisNCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2UgYGVjaG8gLW4g eGAgaW4gIygoKCgoDQorLW4qKQ0KKyAgY2FzZSBgZWNobyAneHlcYydgIGluDQorICAqYyopIEVD SE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4NCisgIHh5KSAgRUNI T19DPSdcYyc7Ow0KKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9k ZXYvbnVsbA0KKyAgICAgICBFQ0hPX1Q9JwknOzsNCisgIGVzYWM7Ow0KKyopDQorICBFQ0hPX049 Jy1uJzs7DQorZXNhYw0KKw0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlDQor aWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuDQorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5m aWxlDQorZWxzZQ0KKyAgcm0gLWYgY29uZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQkLmRpciAyPi9k ZXYvbnVsbA0KK2ZpDQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbg0K KyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIGFz X2xuX3M9J2xuIC1zJw0KKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFzOg0KKyAg ICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBm YWlsLg0KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3Jl YXRlcyBhIHdyYXBwZXINCmV4ZWN1dGFibGUuDQorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2 ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuDQorICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5k aXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUNCnx8DQorICAgICAgYXNfbG5f cz0nY3AgLXAnDQorICBlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhl bg0KKyAgICBhc19sbl9zPWxuDQorICBlbHNlDQorICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZmkN CitlbHNlDQorICBhc19sbl9zPSdjcCAtcCcNCitmaQ0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhl IGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUNCitybWRpciBjb25mJCQuZGlyIDI+ L2Rldi9udWxsDQorDQoraWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfbWtk aXJfcD0nbWtkaXIgLXAgIiRhc19kaXIiJw0KK2Vsc2UNCisgIHRlc3QgLWQgLi8tcCAmJiBybWRp ciAuLy1wDQorICBhc19ta2Rpcl9wPWZhbHNlDQorZmkNCisNCitpZiB0ZXN0IC14IC8gPi9kZXYv bnVsbCAyPiYxOyB0aGVuDQorICBhc190ZXN0X3g9J3Rlc3QgLXgnDQorZWxzZQ0KKyAgaWYgbHMg LWRMIC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgIGFzX2xzX0xfb3B0aW9uPUwNCisgIGVs c2UNCisgICAgYXNfbHNfTF9vcHRpb249DQorICBmaQ0KKyAgYXNfdGVzdF94PScNCisgICAgZXZh bCBzaCAtYyAnXCcnDQorICAgICAgaWYgdGVzdCAtZCAiJDEiOyB0aGVuDQorCXRlc3QgLWQgIiQx Ly4iOw0KKyAgICAgIGVsc2UNCisJY2FzZSAkMSBpbiAjKA0KKwktKilzZXQgIi4vJDEiOzsNCisJ ZXNhYzsNCisJY2FzZSBgbHMgLWxkJyRhc19sc19MX29wdGlvbicgIiQxIiAyPi9kZXYvbnVsbGAg aW4gIygoDQorCT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkNCisgICAgJ1wnJyBzaA0KKyAg Jw0KK2ZpDQorYXNfZXhlY3V0YWJsZV9wPSRhc190ZXN0X3gNCisNCisjIFNlZCBleHByZXNzaW9u IHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuDQorYXNfdHJfY3BwPSJldmFs IHNlZA0KJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxu dW1dJV8lZyciDQorDQorIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZh bGlkIHZhcmlhYmxlIG5hbWUuDQorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRh c19jcl9hbG51bV0lXyVnJyINCisNCisNCitleGVjIDc8JjAgPC9kZXYvbnVsbCA2PiYxDQorDQor IyBOYW1lIG9mIHRoZSBob3N0Lg0KKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIs IExpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdA0Kc3RhdHVzLA0KKyMgc28gdW5hbWUgZ2V0cyBy dW4gdG9vLg0KK2FjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxs IHwgc2VkIDFxYA0KKw0KKyMNCisjIEluaXRpYWxpemF0aW9ucy4NCisjDQorYWNfZGVmYXVsdF9w cmVmaXg9L3Vzci9sb2NhbA0KK2FjX2NsZWFuX2ZpbGVzPQ0KK2FjX2NvbmZpZ19saWJvYmpfZGly PS4NCitMSUJPQkpTPQ0KK2Nyb3NzX2NvbXBpbGluZz1ubw0KK3N1YmRpcnM9DQorTUZMQUdTPQ0K K01BS0VGTEFHUz0NCisNCisjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4NCitQQUNLQUdFX05B TUU9J25ld2xpYicNCitQQUNLQUdFX1RBUk5BTUU9J25ld2xpYicNCitQQUNLQUdFX1ZFUlNJT049 JzEuMTkuMCcNCitQQUNLQUdFX1NUUklORz0nbmV3bGliIDEuMTkuMCcNCitQQUNLQUdFX0JVR1JF UE9SVD0nJw0KK1BBQ0tBR0VfVVJMPScnDQorDQorYWNfdW5pcXVlX2ZpbGU9Ik1ha2VmaWxlLmFt Ig0KK2FjX3N1YnN0X3ZhcnM9J0xUTElCT0JKUw0KK0xJQk9CSlMNCitzeXNfZGlyDQorbWFjaGlu ZV9kaXINCitsaWJtX21hY2hpbmVfZGlyDQorbHBmeA0KK2FleHQNCitvZXh0DQorT0JKRVhUDQor VVNFX0xJQlRPT0xfRkFMU0UNCitVU0VfTElCVE9PTF9UUlVFDQorRUxJWF9MRVZFTF80X0ZBTFNF DQorRUxJWF9MRVZFTF80X1RSVUUNCitFTElYX0xFVkVMXzNfRkFMU0UNCitFTElYX0xFVkVMXzNf VFJVRQ0KK0VMSVhfTEVWRUxfMl9GQUxTRQ0KK0VMSVhfTEVWRUxfMl9UUlVFDQorRUxJWF9MRVZF TF8xX0ZBTFNFDQorRUxJWF9MRVZFTF8xX1RSVUUNCitFTElYX0xFVkVMXzBfRkFMU0UNCitFTElY X0xFVkVMXzBfVFJVRQ0KK0xERkxBR1MNCitOT19JTkNMVURFX0xJU1QNCitORVdMSUJfQ0ZMQUdT DQorQ0NBU0ZMQUdTDQorQ0NBUw0KK01BSU5UDQorTUFJTlRBSU5FUl9NT0RFX0ZBTFNFDQorTUFJ TlRBSU5FUl9NT0RFX1RSVUUNCitSRUFERUxGDQorUkFOTElCDQorQVINCitBUw0KK2FtX19mYXN0 ZGVwQ0NfRkFMU0UNCithbV9fZmFzdGRlcENDX1RSVUUNCitDQ0RFUE1PREUNCitBTURFUEJBQ0tT TEFTSA0KK0FNREVQX0ZBTFNFDQorQU1ERVBfVFJVRQ0KK2FtX19xdW90ZQ0KK2FtX19pbmNsdWRl DQorREVQRElSDQorQ0MNCithbV9fdW50YXINCithbV9fdGFyDQorQU1UQVINCithbV9fbGVhZGlu Z19kb3QNCitTRVRfTUFLRQ0KK0FXSw0KK21rZGlyX3ANCitJTlNUQUxMX1NUUklQX1BST0dSQU0N CitTVFJJUA0KK2luc3RhbGxfc2gNCitNQUtFSU5GTw0KK0FVVE9IRUFERVINCitBVVRPTUFLRQ0K K0FVVE9DT05GDQorQUNMT0NBTA0KK1ZFUlNJT04NCitQQUNLQUdFDQorQ1lHUEFUSF9XDQorSU5T VEFMTF9EQVRBDQorSU5TVEFMTF9TQ1JJUFQNCitJTlNUQUxMX1BST0dSQU0NCitob3N0X29zDQor aG9zdF92ZW5kb3INCitob3N0X2NwdQ0KK2hvc3QNCitidWlsZF9vcw0KK2J1aWxkX3ZlbmRvcg0K K2J1aWxkX2NwdQ0KK2J1aWxkDQorbmV3bGliX2Jhc2VkaXINCitNQVlfU1VQUExZX1NZU0NBTExT X0ZBTFNFDQorTUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFDQordGFyZ2V0X2FsaWFzDQoraG9zdF9h bGlhcw0KK2J1aWxkX2FsaWFzDQorTElCUw0KK0VDSE9fVA0KK0VDSE9fTg0KK0VDSE9fQw0KK0RF RlMNCittYW5kaXINCitsb2NhbGVkaXINCitsaWJkaXINCitwc2Rpcg0KK3BkZmRpcg0KK2R2aWRp cg0KK2h0bWxkaXINCitpbmZvZGlyDQorZG9jZGlyDQorb2xkaW5jbHVkZWRpcg0KK2luY2x1ZGVk aXINCitsb2NhbHN0YXRlZGlyDQorc2hhcmVkc3RhdGVkaXINCitzeXNjb25mZGlyDQorZGF0YWRp cg0KK2RhdGFyb290ZGlyDQorbGliZXhlY2Rpcg0KK3NiaW5kaXINCitiaW5kaXINCitwcm9ncmFt X3RyYW5zZm9ybV9uYW1lDQorcHJlZml4DQorZXhlY19wcmVmaXgNCitQQUNLQUdFX1VSTA0KK1BB Q0tBR0VfQlVHUkVQT1JUDQorUEFDS0FHRV9TVFJJTkcNCitQQUNLQUdFX1ZFUlNJT04NCitQQUNL QUdFX1RBUk5BTUUNCitQQUNLQUdFX05BTUUNCitQQVRIX1NFUEFSQVRPUg0KK1NIRUxMJw0KK2Fj X3N1YnN0X2ZpbGVzPScnDQorYWNfdXNlcl9vcHRzPScNCitlbmFibGVfb3B0aW9uX2NoZWNraW5n DQorZW5hYmxlX211bHRpbGliDQorZW5hYmxlX3RhcmdldF9vcHRzcGFjZQ0KK2VuYWJsZV9tYWxs b2NfZGVidWdnaW5nDQorZW5hYmxlX25ld2xpYl9tdWx0aXRocmVhZA0KK2VuYWJsZV9uZXdsaWJf aWNvbnYNCitlbmFibGVfbmV3bGliX2VsaXhfbGV2ZWwNCitlbmFibGVfbmV3bGliX2lvX2Zsb2F0 DQorZW5hYmxlX25ld2xpYl9zdXBwbGllZF9zeXNjYWxscw0KK2VuYWJsZV9kZXBlbmRlbmN5X3Ry YWNraW5nDQorZW5hYmxlX21haW50YWluZXJfbW9kZQ0KKycNCisgICAgICBhY19wcmVjaW91c192 YXJzPSdidWlsZF9hbGlhcw0KK2hvc3RfYWxpYXMNCit0YXJnZXRfYWxpYXMNCitDQ0FTDQorQ0NB U0ZMQUdTJw0KKw0KKw0KKyMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9u cy4NCithY19pbml0X2hlbHA9DQorYWNfaW5pdF92ZXJzaW9uPWZhbHNlDQorYWNfdW5yZWNvZ25p emVkX29wdHM9DQorYWNfdW5yZWNvZ25pemVkX3NlcD0NCisjIFRoZSB2YXJpYWJsZXMgaGF2ZSB0 aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywgd2l0aA0KKyMgZGFzaGVzIGNoYW5nZWQgdG8g dW5kZXJsaW5lcy4NCitjYWNoZV9maWxlPS9kZXYvbnVsbA0KK2V4ZWNfcHJlZml4PU5PTkUNCitu b19jcmVhdGU9DQorbm9fcmVjdXJzaW9uPQ0KK3ByZWZpeD1OT05FDQorcHJvZ3JhbV9wcmVmaXg9 Tk9ORQ0KK3Byb2dyYW1fc3VmZml4PU5PTkUNCitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPXMseCx4 LA0KK3NpbGVudD0NCitzaXRlPQ0KK3NyY2Rpcj0NCit2ZXJib3NlPQ0KK3hfaW5jbHVkZXM9Tk9O RQ0KK3hfbGlicmFyaWVzPU5PTkUNCisNCisjIEluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb3B0aW9u cy4NCisjIFRoZXNlIGFyZSBsZWZ0IHVuZXhwYW5kZWQgc28gdXNlcnMgY2FuICJtYWtlIGluc3Rh bGwNCmV4ZWNfcHJlZml4PS9mb28iDQorIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUg c3VwcG9zZWQgdG8gYmUgYmFzZWQgb24gZXhlY19wcmVmaXgNCisjIGJ5IGRlZmF1bHQgd2lsbCBh Y3R1YWxseSBjaGFuZ2UuDQorIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ug c2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQNCnRoZW0uDQorIyAoVGhlIGxpc3QgZm9sbG93cyB0 aGUgc2FtZSBvcmRlciBhcyB0aGUgR05VIENvZGluZyBTdGFuZGFyZHMuKQ0KK2JpbmRpcj0nJHtl eGVjX3ByZWZpeH0vYmluJw0KK3NiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nDQorbGliZXhl Y2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycNCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3No YXJlJw0KK2RhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9Jw0KK3N5c2NvbmZkaXI9JyR7cHJlZml4fS9l dGMnDQorc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nDQorbG9jYWxzdGF0ZWRpcj0nJHtw cmVmaXh9L3ZhcicNCitpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScNCitvbGRpbmNsdWRl ZGlyPScvdXNyL2luY2x1ZGUnDQorZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdF X1RBUk5BTUV9Jw0KK2luZm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nDQoraHRtbGRpcj0nJHtk b2NkaXJ9Jw0KK2R2aWRpcj0nJHtkb2NkaXJ9Jw0KK3BkZmRpcj0nJHtkb2NkaXJ9Jw0KK3BzZGly PScke2RvY2Rpcn0nDQorbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInDQorbG9jYWxlZGlyPSck e2RhdGFyb290ZGlyfS9sb2NhbGUnDQorbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nDQorDQor YWNfcHJldj0NCithY19kYXNoZGFzaD0NCitmb3IgYWNfb3B0aW9uDQorZG8NCisgICMgSWYgdGhl IHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0Lg0KKyAgaWYgdGVz dCAtbiAiJGFjX3ByZXYiOyB0aGVuDQorICAgIGV2YWwgJGFjX3ByZXY9XCRhY19vcHRpb24NCisg ICAgYWNfcHJldj0NCisgICAgY29udGludWUNCisgIGZpDQorDQorICBjYXNlICRhY19vcHRpb24g aW4NCisgICo9KikJYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwp J2AgOzsNCisgICopCWFjX29wdGFyZz15ZXMgOzsNCisgIGVzYWMNCisNCisgICMgQWNjZXB0IHRo ZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UN CnR5cG9zLg0KKw0KKyAgY2FzZSAkYWNfZGFzaGRhc2gkYWNfb3B0aW9uIGluDQorICAtLSkNCisg ICAgYWNfZGFzaGRhc2g9eWVzIDs7DQorDQorICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRp IHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQ0KKyAgICBhY19wcmV2PWJpbmRpciA7Ow0KKyAgLWJp bmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1iaW49KiB8IC0t Ymk9KikNCisgICAgYmluZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1idWlsZCB8IC0tYnVpbGQg fCAtLWJ1aWwgfCAtLWJ1aSB8IC0tYnUpDQorICAgIGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsNCisg IC1idWlsZD0qIHwgLS1idWlsZD0qIHwgLS1idWlsPSogfCAtLWJ1aT0qIHwgLS1idT0qKQ0KKyAg ICBidWlsZF9hbGlhcz0kYWNfb3B0YXJnIDs7DQorDQorICAtY2FjaGUtZmlsZSB8IC0tY2FjaGUt ZmlsZSB8IC0tY2FjaGUtZmlsIHwgLS1jYWNoZS1maSBcDQorICB8IC0tY2FjaGUtZiB8IC0tY2Fj aGUtIHwgLS1jYWNoZSB8IC0tY2FjaCB8IC0tY2FjIHwgLS1jYSB8IC0tYykNCisgICAgYWNfcHJl dj1jYWNoZV9maWxlIDs7DQorICAtY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWxlPSogfCAtLWNh Y2hlLWZpbD0qIHwgLS1jYWNoZS1maT0qIFwNCisgIHwgLS1jYWNoZS1mPSogfCAtLWNhY2hlLT0q IHwgLS1jYWNoZT0qIHwgLS1jYWNoPSogfCAtLWNhYz0qIHwgLS1jYT0qDQp8IC0tYz0qKQ0KKyAg ICBjYWNoZV9maWxlPSRhY19vcHRhcmcgOzsNCisNCisgIC0tY29uZmlnLWNhY2hlIHwgLUMpDQor ICAgIGNhY2hlX2ZpbGU9Y29uZmlnLmNhY2hlIDs7DQorDQorICAtZGF0YWRpciB8IC0tZGF0YWRp ciB8IC0tZGF0YWRpIHwgLS1kYXRhZCkNCisgICAgYWNfcHJldj1kYXRhZGlyIDs7DQorICAtZGF0 YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1kYXRhZD0qKQ0KKyAgICBkYXRh ZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaXIgfCAt LWRhdGFyb290ZGkgfCAtLWRhdGFyb290ZCB8IC0tDQpkYXRhcm9vdCBcDQorICB8IC0tZGF0YXJv byB8IC0tZGF0YXJvIHwgLS1kYXRhcikNCisgICAgYWNfcHJldj1kYXRhcm9vdGRpciA7Ow0KKyAg LWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGk9KiB8IC0tZGF0 YXJvb3RkPSogXA0KKyAgfCAtLWRhdGFyb290PSogfCAtLWRhdGFyb289KiB8IC0tZGF0YXJvPSog fCAtLWRhdGFyPSopDQorICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1kaXNh YmxlLSogfCAtLWRpc2FibGUtKikNCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24i IDogJ3gtKmRpc2FibGUtXCguKlwpJ2ANCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90 IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDog Ii4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAgICAgIGFzX2ZuX2Vycm9y ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiDQorICAgIGFjX3VzZXJvcHRfb3Jp Zz0kYWNfdXNlcm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwg c2VkICdzL1stKy5dL18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbg0KKyAgICAgICoi DQorImVuYWJsZV8kYWNfdXNlcm9wdCINCisiKikgOzsNCisgICAgICAqKQ0KYWNfdW5yZWNvZ25p emVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS0NCmRp c2FibGUtJGFjX3VzZXJvcHRfb3JpZyINCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7DQor ICAgIGVzYWMNCisgICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9bm8gOzsNCisNCisgIC1kb2Nk aXIgfCAtLWRvY2RpciB8IC0tZG9jZGkgfCAtLWRvYyB8IC0tZG8pDQorICAgIGFjX3ByZXY9ZG9j ZGlyIDs7DQorICAtZG9jZGlyPSogfCAtLWRvY2Rpcj0qIHwgLS1kb2NkaT0qIHwgLS1kb2M9KiB8 IC0tZG89KikNCisgICAgZG9jZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1kdmlkaXIgfCAtLWR2 aWRpciB8IC0tZHZpZGkgfCAtLWR2aWQgfCAtLWR2aSB8IC0tZHYpDQorICAgIGFjX3ByZXY9ZHZp ZGlyIDs7DQorICAtZHZpZGlyPSogfCAtLWR2aWRpcj0qIHwgLS1kdmlkaT0qIHwgLS1kdmlkPSog fCAtLWR2aT0qIHwgLS1kdj0qKQ0KKyAgICBkdmlkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWVu YWJsZS0qIHwgLS1lbmFibGUtKikNCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24i IDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYA0KKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBu b3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQorICAgIGV4cHIgIngkYWNfdXNlcm9wdCIg OiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQorICAgICAgYXNfZm5fZXJy b3IgImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCINCisgICAgYWNfdXNlcm9wdF9v cmlnPSRhY191c2Vyb3B0DQorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIg fCBzZWQgJ3MvWy0rLl0vXy9nJ2ANCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluDQorICAgICAg KiINCisiZW5hYmxlXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAgICopDQphY191bnJlY29n bml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLQ0K ZW5hYmxlLSRhY191c2Vyb3B0X29yaWciDQorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7Ow0K KyAgICBlc2FjDQorICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7DQor DQorICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhl Yy1wcmVmaSBcDQorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0t ZXhlYy1wIHwgLS1leGVjLSBcDQorICB8IC0tZXhlYyB8IC0tZXhlIHwgLS1leCkNCisgICAgYWNf cHJldj1leGVjX3ByZWZpeCA7Ow0KKyAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNfcHJlZml4PSog fCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9Kg0KXA0KKyAgfCAtLWV4ZWMtcHJlZj0q IHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLQ0KPSog XA0KKyAgfCAtLWV4ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopDQorICAgIGV4ZWNfcHJlZml4PSRh Y19vcHRhcmcgOzsNCisNCisgIC1nYXMgfCAtLWdhcyB8IC0tZ2EgfCAtLWcpDQorICAgICMgT2Jz b2xldGU7IHVzZSAtLXdpdGgtZ2FzLg0KKyAgICB3aXRoX2dhcz15ZXMgOzsNCisNCisgIC1oZWxw IHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpDQorICAgIGFjX2luaXRfaGVscD1sb25nIDs7 DQorICAtaGVscD1yKiB8IC0taGVscD1yKiB8IC0taGVsPXIqIHwgLS1oZT1yKiB8IC1ociopDQor ICAgIGFjX2luaXRfaGVscD1yZWN1cnNpdmUgOzsNCisgIC1oZWxwPXMqIHwgLS1oZWxwPXMqIHwg LS1oZWw9cyogfCAtLWhlPXMqIHwgLWhzKikNCisgICAgYWNfaW5pdF9oZWxwPXNob3J0IDs7DQor DQorICAtaG9zdCB8IC0taG9zdCB8IC0taG9zIHwgLS1obykNCisgICAgYWNfcHJldj1ob3N0X2Fs aWFzIDs7DQorICAtaG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQ0KKyAgICBo b3N0X2FsaWFzPSRhY19vcHRhcmcgOzsNCisNCisgIC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1o dG1sZGkgfCAtLWh0bWxkIHwgLS1odG1sIHwgLS1odG0gfCAtLWh0KQ0KKyAgICBhY19wcmV2PWh0 bWxkaXIgOzsNCisgIC1odG1sZGlyPSogfCAtLWh0bWxkaXI9KiB8IC0taHRtbGRpPSogfCAtLWh0 bWxkPSogfCAtLWh0bWw9KiB8IC0tDQpodG09KiBcDQorICB8IC0taHQ9KikNCisgICAgaHRtbGRp cj0kYWNfb3B0YXJnIDs7DQorDQorICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5j bHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcDQorICB8IC0taW5jbHVkIHwgLS1pbmNs dSB8IC0taW5jbCB8IC0taW5jKQ0KKyAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsNCisgIC1pbmNs dWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSog fCAtLQ0KaW5jbHVkZT0qIFwNCisgIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8IC0taW5jbD0q IHwgLS1pbmM9KikNCisgICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtaW5mb2Rp ciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5mKQ0KKyAg ICBhY19wcmV2PWluZm9kaXIgOzsNCisgIC1pbmZvZGlyPSogfCAtLWluZm9kaXI9KiB8IC0taW5m b2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8IC0tDQppbmY9KikNCisgICAgaW5mb2Rpcj0k YWNfb3B0YXJnIDs7DQorDQorICAtbGliZGlyIHwgLS1saWJkaXIgfCAtLWxpYmRpIHwgLS1saWJk KQ0KKyAgICBhY19wcmV2PWxpYmRpciA7Ow0KKyAgLWxpYmRpcj0qIHwgLS1saWJkaXI9KiB8IC0t bGliZGk9KiB8IC0tbGliZD0qKQ0KKyAgICBsaWJkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxp YmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaSB8IC0tbGliZXhlY2QgfCAtLWxp YmV4ZWMgXA0KKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpDQorICAgIGFjX3ByZXY9 bGliZXhlY2RpciA7Ow0KKyAgLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2Rpcj0qIHwgLS1saWJl eGVjZGk9KiB8IC0tbGliZXhlY2Q9KiB8IC0tDQpsaWJleGVjPSogXA0KKyAgfCAtLWxpYmV4ZT0q IHwgLS1saWJleD0qIHwgLS1saWJlPSopDQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLWxvY2FsZWRpciB8IC0tbG9jYWxlZGlyIHwgLS1sb2NhbGVkaSB8IC0tbG9jYWxlZCB8 IC0tbG9jYWxlKQ0KKyAgICBhY19wcmV2PWxvY2FsZWRpciA7Ow0KKyAgLWxvY2FsZWRpcj0qIHwg LS1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGk9KiB8IC0tbG9jYWxlZD0qIHwgLS0NCmxvY2FsZT0q KQ0KKyAgICBsb2NhbGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxvY2Fsc3RhdGVkaXIgfCAt LWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXA0KKyAgfCAt LWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxzdGEgfCAtLWxvY2Fsc3QgfCAtLWxv Y2FscykNCisgICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7DQorICAtbG9jYWxzdGF0ZWRpcj0q IHwgLS1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS0NCmxvY2Fsc3RhdGVk PSogXA0KKyAgfCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSog fCAtLWxvY2Fsc3Q9KiB8IC0tDQpsb2NhbHM9KikNCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0 YXJnIDs7DQorDQorICAtbWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1t YW4gfCAtLW1hIHwgLS1tKQ0KKyAgICBhY19wcmV2PW1hbmRpciA7Ow0KKyAgLW1hbmRpcj0qIHwg LS1tYW5kaXI9KiB8IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0N Ci1tPSopDQorICAgIG1hbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtbmZwIHwgLS1uZnAgfCAt LW5mKQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRob3V0LWZwLg0KKyAgICB3aXRoX2ZwPW5v IDs7DQorDQorICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1j cmVhIHwgLS1uby1jcmUgXA0KKyAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pDQorICAgIG5vX2Ny ZWF0ZT15ZXMgOzsNCisNCisgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8t cmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXA0KKyAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIg fCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLQ0KcikNCisgICAgbm9fcmVj dXJzaW9uPXllcyA7Ow0KKw0KKyAgLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaXIgfCAt LW9sZGluY2x1ZGVkaSB8IC0tb2xkaW5jbHVkZWQgXA0KKyAgfCAtLW9sZGluY2x1ZGUgfCAtLW9s ZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGluY2wgfCAtLW9sZGluYyBcDQorICB8IC0tb2xk aW4gfCAtLW9sZGkgfCAtLW9sZCB8IC0tb2wgfCAtLW8pDQorICAgIGFjX3ByZXY9b2xkaW5jbHVk ZWRpciA7Ow0KKyAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRp bmNsdWRlZGk9KiB8IC0tDQpvbGRpbmNsdWRlZD0qIFwNCisgIHwgLS1vbGRpbmNsdWRlPSogfCAt LW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSogfCAtLQ0Kb2xkaW5jPSog XA0KKyAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9sPSogfCAtLW89KikN CisgICAgb2xkaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtcHJlZml4IHwgLS1wcmVm aXggfCAtLXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQ0KKyAgICBhY19wcmV2 PXByZWZpeCA7Ow0KKyAgLXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJl Zj0qIHwgLS1wcmU9KiB8IC0tcHI9KiB8IC0NCi1wPSopDQorICAgIHByZWZpeD0kYWNfb3B0YXJn IDs7DQorDQorICAtcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFt LXByZWZpIHwgLS1wcm9ncmFtLQ0KcHJlZiBcDQorICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dy YW0tcHIgfCAtLXByb2dyYW0tcCkNCisgICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7Ow0KKyAg LXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9 KiBcDQorICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0t cHI9KiB8IC0tcHJvZ3JhbS0NCnA9KikNCisgICAgcHJvZ3JhbV9wcmVmaXg9JGFjX29wdGFyZyA7 Ow0KKw0KKyAgLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1z dWZmaSB8IC0tcHJvZ3JhbS0NCnN1ZmYgXA0KKyAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFt LXN1IHwgLS1wcm9ncmFtLXMpDQorICAgIGFjX3ByZXY9cHJvZ3JhbV9zdWZmaXggOzsNCisgIC1w cm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSog XA0KKyAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1 PSogfCAtLXByb2dyYW0tDQpzPSopDQorICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsN CisNCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1l IFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW0gfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5h IFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXA0K KyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwNCisgIHwgLS1w cm9ncmFtLXRyYW5zZm8gfCAtLXByb2dyYW0tdHJhbnNmIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5z IHwgLS1wcm9ncmFtLXRyYW4gXA0KKyAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0t cHJvZ3JhbS10KQ0KKyAgICBhY19wcmV2PXByb2dyYW1fdHJhbnNmb3JtX25hbWUgOzsNCisgIC1w cm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcDQor ICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hPSog XA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSog XA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtPSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcDQor ICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXA0KKyAgfCAtLXBy b2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSogXA0KKyAgfCAtLXByb2dyLXRyYT0qIHwg LS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0qKQ0KKyAgICBwcm9ncmFtX3RyYW5zZm9ybV9u YW1lPSRhY19vcHRhcmcgOzsNCisNCisgIC1wZGZkaXIgfCAtLXBkZmRpciB8IC0tcGRmZGkgfCAt LXBkZmQgfCAtLXBkZiB8IC0tcGQpDQorICAgIGFjX3ByZXY9cGRmZGlyIDs7DQorICAtcGRmZGly PSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1wZGZkPSogfCAtLXBkZj0qIHwgLS1wZD0q KQ0KKyAgICBwZGZkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXBzZGlyIHwgLS1wc2RpciB8IC0t cHNkaSB8IC0tcHNkIHwgLS1wcykNCisgICAgYWNfcHJldj1wc2RpciA7Ow0KKyAgLXBzZGlyPSog fCAtLXBzZGlyPSogfCAtLXBzZGk9KiB8IC0tcHNkPSogfCAtLXBzPSopDQorICAgIHBzZGlyPSRh Y19vcHRhcmcgOzsNCisNCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVp IHwgLS1xdSB8IC0tcSBcDQorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNp bGUgfCAtLXNpbCkNCisgICAgc2lsZW50PXllcyA7Ow0KKw0KKyAgLXNiaW5kaXIgfCAtLXNiaW5k aXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpDQorICAgIGFj X3ByZXY9c2JpbmRpciA7Ow0KKyAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9 KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwNCisgIHwgLS1zYmk9KiB8IC0tc2I9KikNCisgICAg c2JpbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0 YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwNCisgIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJl ZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwgLS1zaGFyZWRzdGEgXA0KKyAgfCAtLXNoYXJlZHN0IHwg LS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwNCisgIHwgLS1zaGEgfCAt LXNoKQ0KKyAgICBhY19wcmV2PXNoYXJlZHN0YXRlZGlyIDs7DQorICAtc2hhcmVkc3RhdGVkaXI9 KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwNCisgIHwgLS1zaGFy ZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS0NCnNoYXJl ZHN0YT0qIFwNCisgIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwg LS1zaGFyZT0qIHwgLS1zaGFyPSogXA0KKyAgfCAtLXNoYT0qIHwgLS1zaD0qKQ0KKyAgICBzaGFy ZWRzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtc2l0ZSB8IC0tc2l0ZSB8IC0tc2l0KQ0K KyAgICBhY19wcmV2PXNpdGUgOzsNCisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopDQor ICAgIHNpdGU9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNk aSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikNCisgICAgYWNfcHJldj1zcmNkaXIgOzsNCisgIC1z cmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAt LXNyPSopDQorICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtc3lzY29uZmRpciB8IC0t c3lzY29uZmRpciB8IC0tc3lzY29uZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcDQorICB8 IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0tc3lzYyB8IC0tc3lzIHwgLS1zeSkNCisgICAgYWNfcHJl dj1zeXNjb25mZGlyIDs7DQorICAtc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5 c2NvbmZkaT0qIHwgLS1zeXNjb25mZD0qIHwgLS0NCnN5c2NvbmY9KiBcDQorICB8IC0tc3lzY29u PSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0tc3lzPSogfCAtLXN5PSopDQorICAgIHN5c2Nv bmZkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8 IC0tdGFyZyB8IC0tdGFyIHwgLS10YSB8IC0tdCkNCisgICAgYWNfcHJldj10YXJnZXRfYWxpYXMg OzsNCisgIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAtLXRhcmdlPSogfCAtLXRhcmc9KiB8IC0t dGFyPSogfCAtLXRhPSogfCAtDQotdD0qKQ0KKyAgICB0YXJnZXRfYWxpYXM9JGFjX29wdGFyZyA7 Ow0KKw0KKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8 IC0tdmVyYikNCisgICAgdmVyYm9zZT15ZXMgOzsNCisNCisgIC12ZXJzaW9uIHwgLS12ZXJzaW9u IHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpDQorICAgIGFjX2luaXRfdmVyc2lv bj06IDs7DQorDQorICAtd2l0aC0qIHwgLS13aXRoLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4cHIg IngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgDQorICAgICMgUmVqZWN0IG5hbWVz IHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAieCRh Y191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisgICAg ICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0Ig0KKyAgICBh Y191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRh Y191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2VyX29wdHMg aW4NCisgICAgICAqIg0KKyJ3aXRoXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAgICopDQph Y191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXpl ZF9zZXAtLXdpdGgtDQokYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0n LCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcg OzsNCisNCisgIC13aXRob3V0LSogfCAtLXdpdGhvdXQtKikNCisgICAgYWNfdXNlcm9wdD1gZXhw ciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2ANCisgICAgIyBSZWplY3QgbmFt ZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHByICJ4 JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAg ICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiDQorICAg IGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAi JGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJfb3B0 cyBpbg0KKyAgICAgICoiDQorIndpdGhfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikN CmFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25p emVkX3NlcC0tDQp3aXRob3V0LSRhY191c2Vyb3B0X29yaWciDQorCSBhY191bnJlY29nbml6ZWRf c2VwPScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7Ow0K Kw0KKyAgLS14KQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLXguDQorICAgIHdpdGhfeD15 ZXMgOzsNCisNCisgIC14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAt LXgtaW5jbHVkIHwgLS14LWluY2x1IFwNCisgIHwgLS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWlu IHwgLS14LWkpDQorICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7Ow0KKyAgLXgtaW5jbHVkZXM9KiB8 IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC0NCmlu Y2x1PSogXA0KKyAgfCAtLXgtaW5jbD0qIHwgLS14LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0q KQ0KKyAgICB4X2luY2x1ZGVzPSRhY19vcHRhcmcgOzsNCisNCisgIC14LWxpYnJhcmllcyB8IC0t eC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUgfCAtLXgtbGlicmFyaSBcDQorICB8IC0teC1saWJy YXIgfCAtLXgtbGlicmEgfCAtLXgtbGliciB8IC0teC1saWIgfCAtLXgtbGkgfCAtLXgtbCkNCisg ICAgYWNfcHJldj14X2xpYnJhcmllcyA7Ow0KKyAgLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFy aWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0teC1saWJyYXJpPSogXA0KKyAgfCAtLXgtbGlicmFy PSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgtbGliPSogfCAtLXgtbGk9KiB8IC0N Ci14LWw9KikNCisgICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLSopIGFzX2Zu X2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nDQorVHJ5IFxgJDAgLS1o ZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iDQorICAgIDs7DQorDQorICAqPSopDQorICAgIGFj X2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFtePV0qXCk9J2ANCisgICAgIyBSZWpl Y3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBj YXNlICRhY19lbnZ2YXIgaW4gIygNCisgICAgICAnJyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxu dW1dKiApDQorICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNf ZW52dmFyJyIgOzsNCisgICAgZXNhYw0KKyAgICBldmFsICRhY19lbnZ2YXI9XCRhY19vcHRhcmcN CisgICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsNCisNCisgICopDQorICAgICMgRklYTUU6IHNob3Vs ZCBiZSByZW1vdmVkIGluIGF1dG9jb25mIDMuMC4NCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FS TklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLQ0KdGFyZ2V0IiA+JjINCisg ICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxs ICYmDQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6 ICRhY19vcHRpb24iID4mMg0KKyAgICA6ICR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0 X2FsaWFzPSRhY19vcHRpb259DQoke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufQ0KKyAgICA7Ow0K Kw0KKyAgZXNhYw0KK2RvbmUNCisNCitpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4NCisgIGFj X29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2ANCisgIGFzX2ZuX2Vycm9y ICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iDQorZmkNCisNCitpZiB0ZXN0IC1uICIk YWNfdW5yZWNvZ25pemVkX29wdHMiOyB0aGVuDQorICBjYXNlICRlbmFibGVfb3B0aW9uX2NoZWNr aW5nIGluDQorICAgIG5vKSA7Ow0KKyAgICBmYXRhbCkgYXNfZm5fZXJyb3IgInVucmVjb2duaXpl ZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiDQo7Ow0KKyAgICAqKSAgICAgJGFzX2Vj aG8gIiRhc19tZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6DQokYWNfdW5yZWNvZ25p emVkX29wdHMiID4mMiA7Ow0KKyAgZXNhYw0KK2ZpDQorDQorIyBDaGVjayBhbGwgZGlyZWN0b3J5 IGFyZ3VtZW50cyBmb3IgY29uc2lzdGVuY3kuDQorZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBw cmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2Rpcg0KZGF0YXJvb3RkaXIgXA0KKwkJZGF0YWRp ciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXINCmluY2x1ZGVkaXIgXA0K KwkJb2xkaW5jbHVkZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXINCnBz ZGlyIFwNCisJCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyDQorZG8NCisgIGV2YWwgYWNfdmFsPVwk JGFjX3Zhcg0KKyAgIyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4NCisgIGNhc2UgJGFjX3ZhbCBp bg0KKyAgICAqLyApDQorICAgICAgYWNfdmFsPWBleHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9d XCknIFx8ICJYJGFjX3ZhbCIgOg0KJ1hcKC4qXCknYA0KKyAgICAgIGV2YWwgJGFjX3Zhcj1cJGFj X3ZhbDs7DQorICBlc2FjDQorICAjIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBkaXJlY3Rvcnkg bmFtZXMuDQorICBjYXNlICRhY192YWwgaW4NCisgICAgW1xcLyRdKiB8ID86W1xcL10qICkgIGNv bnRpbnVlOzsNCisgICAgTk9ORSB8ICcnICkgY2FzZSAkYWNfdmFyIGluICpwcmVmaXggKSBjb250 aW51ZTs7IGVzYWM7Ow0KKyAgZXNhYw0KKyAgYXNfZm5fZXJyb3IgImV4cGVjdGVkIGFuIGFic29s dXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6DQokYWNfdmFsIg0KK2RvbmUNCisNCisj IFRoZXJlIG1pZ2h0IGJlIHBlb3BsZSB3aG8gZGVwZW5kIG9uIHRoZSBvbGQgYnJva2VuIGJlaGF2 aW9yOiBgJGhvc3QnDQorIyB1c2VkIHRvIGhvbGQgdGhlIGFyZ3VtZW50IG9mIC0taG9zdCBldGMu DQorIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5Lg0KK2J1aWxkPSRidWlsZF9hbGlhcw0KK2hv c3Q9JGhvc3RfYWxpYXMNCit0YXJnZXQ9JHRhcmdldF9hbGlhcw0KKw0KKyMgRklYTUU6IFRvIHJl bW92ZSBzb21lIGRheS4NCitpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRoZW4NCisgIGlm IHRlc3QgIngkYnVpbGRfYWxpYXMiID0geDsgdGhlbg0KKyAgICBjcm9zc19jb21waWxpbmc9bWF5 YmUNCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogSWYgeW91IHdhbnRlZCB0byBzZXQg dGhlIC0tYnVpbGQgdHlwZSwNCmRvbid0IHVzZSAtLWhvc3QuDQorICAgIElmIGEgY3Jvc3MgY29t cGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZQ0KdXNlZC4i ID4mMg0KKyAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0X2FsaWFzIjsgdGhl bg0KKyAgICBjcm9zc19jb21waWxpbmc9eWVzDQorICBmaQ0KK2ZpDQorDQorYWNfdG9vbF9wcmVm aXg9DQordGVzdCAtbiAiJGhvc3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFz LQ0KKw0KK3Rlc3QgIiRzaWxlbnQiID0geWVzICYmIGV4ZWMgNj4vZGV2L251bGwNCisNCisNCith Y19wd2Q9YHB3ZGAgJiYgdGVzdCAtbiAiJGFjX3B3ZCIgJiYNCithY19sc19kaT1gbHMgLWRpIC5g ICYmDQorYWNfcHdkX2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8DQorICBhc19m bl9lcnJvciAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWluZWQiDQordGVzdCAi WCRhY19sc19kaSIgPSAiWCRhY19wd2RfbHNfZGkiIHx8DQorICBhc19mbl9lcnJvciAicHdkIGRv ZXMgbm90IHJlcG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5Ig0KKw0KKw0KKyMgRmluZCB0 aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4NCitpZiB0ZXN0 IC16ICIkc3JjZGlyIjsgdGhlbg0KKyAgYWNfc3JjZGlyX2RlZmF1bHRlZD15ZXMNCisgICMgVHJ5 IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiB0aGUgcGFyZW50DQpk aXJlY3RvcnkuDQorICBhY19jb25mZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX215c2VsZiIgfHwN CiskYXNfZXhwciBYIiRhc19teXNlbGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBc fCBcDQorCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRhc19teXNl bGYiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwgLiAy Pi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgiJGFzX215c2VsZiIgfA0KKyAgICBzZWQgJy9eWFwo LipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAg fQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0N CisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9e WFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBx J2ANCisgIHNyY2Rpcj0kYWNfY29uZmRpcg0KKyAgaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191 bmlxdWVfZmlsZSI7IHRoZW4NCisgICAgc3JjZGlyPS4uDQorICBmaQ0KK2Vsc2UNCisgIGFjX3Ny Y2Rpcl9kZWZhdWx0ZWQ9bm8NCitmaQ0KK2lmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVl X2ZpbGUiOyB0aGVuDQorICB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5ZXMgJiYgc3Jj ZGlyPSIkYWNfY29uZmRpciBvciAuLiINCisgIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBzb3Vy Y2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRzcmNkaXIiDQorZmkNCithY19tc2c9InNvdXJjZXMg YXJlIGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsiDQorYWNfYWJz X2NvbmZkaXI9YCgNCisJY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxl IiB8fCBhc19mbl9lcnJvcg0KIiRhY19tc2ciDQorCXB3ZClgDQorIyBXaGVuIGJ1aWxkaW5nIGlu IHBsYWNlLCBzZXQgc3JjZGlyPS4NCitpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIiID0gIiRhY19w d2QiOyB0aGVuDQorICBzcmNkaXI9Lg0KK2ZpDQorIyBSZW1vdmUgdW5uZWNlc3NhcnkgdHJhaWxp bmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4NCisjIERvdWJsZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMg aW4gb2JqZWN0IGZpbGUgZGVidWdnaW5nIGluZm8NCisjIG1lc3MgdXAgTS14IGdkYiBpbiBFbWFj cy4NCitjYXNlICRzcmNkaXIgaW4NCisqLykgc3JjZGlyPWBleHByICJYJHNyY2RpciIgOiAnWFwo LipbXi9dXCknIFx8ICJYJHNyY2RpciIgOg0KJ1hcKC4qXCknYDs7DQorZXNhYw0KK2ZvciBhY192 YXIgaW4gJGFjX3ByZWNpb3VzX3ZhcnM7IGRvDQorICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fc2V0 PVwkeyR7YWNfdmFyfStzZXR9DQorICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2Fj X3Zhcn0NCisgIGV2YWwgYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0N CisgIGV2YWwgYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQ0KK2RvbmUNCisN CisjDQorIyBSZXBvcnQgdGhlIC0taGVscCBtZXNzYWdlLg0KKyMNCitpZiB0ZXN0ICIkYWNfaW5p dF9oZWxwIiA9ICJsb25nIjsgdGhlbg0KKyAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xl dGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MNCmltcG9zaW5nLg0KKyAgIyBUaGlzIG1l c3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLg0KKyAg Y2F0IDw8X0FDRU9GDQorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgbmV3bGliIDEuMTkuMCB0byBh ZGFwdCB0byBtYW55IGtpbmRzIG9mDQpzeXN0ZW1zLg0KKw0KK1VzYWdlOiAkMCBbT1BUSU9OXS4u LiBbVkFSPVZBTFVFXS4uLg0KKw0KK1RvIGFzc2lnbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGUu Zy4sIENDLCBDRkxBR1MuLi4pLCBzcGVjaWZ5IHRoZW0gYXMNCitWQVI9VkFMVUUuICBTZWUgYmVs b3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwNCnZhcmlhYmxlcy4NCisN CitEZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4NCisN CitDb25maWd1cmF0aW9uOg0KKyAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlz IGhlbHAgYW5kIGV4aXQNCisgICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9u cyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UNCisgICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRp c3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZA0KcGFja2FnZXMNCisgIC1W LCAtLXZlcnNpb24gICAgICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhp dA0KKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50ICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcuLi4n IG1lc3NhZ2VzDQorICAgICAgLS1jYWNoZS1maWxlPUZJTEUgICBjYWNoZSB0ZXN0IHJlc3VsdHMg aW4gRklMRSBbZGlzYWJsZWRdDQorICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3Ig XGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJw0KKyAgLW4sIC0tbm8tY3JlYXRlICAgICAgICAg ZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMNCisgICAgICAtLXNyY2Rpcj1ESVIgICAgICAgIGZp bmQgdGhlIHNvdXJjZXMgaW4gRElSIFtjb25maWd1cmUgZGlyIG9yDQpcYC4uJ10NCisNCitJbnN0 YWxsYXRpb24gZGlyZWN0b3JpZXM6DQorICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxs IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbg0KUFJFRklYDQorICAgICAgICAgICAg ICAgICAgICAgICAgICBbJGFjX2RlZmF1bHRfcHJlZml4XQ0KKyAgLS1leGVjLXByZWZpeD1FUFJF RklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluDQpFUFJFRklYDQor ICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYXQ0KKw0KK0J5IGRlZmF1bHQsIFxgbWFr ZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwgYWxsIHRoZSBmaWxlcyBpbg0KK1xgJGFjX2RlZmF1bHRf cHJlZml4L2JpbicsIFxgJGFjX2RlZmF1bHRfcHJlZml4L2xpYicgZXRjLiAgWW91IGNhbg0Kc3Bl Y2lmeQ0KK2FuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3By ZWZpeCcgdXNpbmcgXGAtLQ0KcHJlZml4JywNCitmb3IgaW5zdGFuY2UgXGAtLXByZWZpeD1cJEhP TUUnLg0KKw0KK0ZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93Lg0KKw0K K0ZpbmUgdHVuaW5nIG9mIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6DQorICAtLWJpbmRp cj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0NCisgIC0tc2Jp bmRpcj1ESVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBbRVBSRUZJWC9zYmlu XQ0KKyAgLS1saWJleGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBbRVBSRUZJ WC9saWJleGVjXQ0KKyAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1t YWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdDQorICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2Rp ZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhDQpbUFJFRklYL2NvbV0NCisgIC0t bG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJF RklYL3Zhcl0NCisgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmll cyBbRVBSRUZJWC9saWJdDQorICAtLWluY2x1ZGVkaXI9RElSICAgICAgICBDIGhlYWRlciBmaWxl cyBbUFJFRklYL2luY2x1ZGVdDQorICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBm aWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQ0KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAg ICAgcmVhZC1vbmx5IGFyY2guLWluZGVwZW5kZW50IGRhdGEgcm9vdA0KW1BSRUZJWC9zaGFyZV0N CisgIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBl bmRlbnQgZGF0YQ0KW0RBVEFST09URElSXQ0KKyAgLS1pbmZvZGlyPURJUiAgICAgICAgICAgaW5m byBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9pbmZvXQ0KKyAgLS1sb2NhbGVkaXI9RElSICAg ICAgICAgbG9jYWxlLWRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUi9sb2NhbGVdDQorICAtLW1h bmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvbWFuXQ0K KyAgLS1kb2NkaXI9RElSICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiByb290IFtEQVRBUk9PVERJ Ui9kb2MvbmV3bGliXQ0KKyAgLS1odG1sZGlyPURJUiAgICAgICAgICAgaHRtbCBkb2N1bWVudGF0 aW9uIFtET0NESVJdDQorICAtLWR2aWRpcj1ESVIgICAgICAgICAgICBkdmkgZG9jdW1lbnRhdGlv biBbRE9DRElSXQ0KKyAgLS1wZGZkaXI9RElSICAgICAgICAgICAgcGRmIGRvY3VtZW50YXRpb24g W0RPQ0RJUl0NCisgIC0tcHNkaXI9RElSICAgICAgICAgICAgIHBzIGRvY3VtZW50YXRpb24gW0RP Q0RJUl0NCitfQUNFT0YNCisNCisgIGNhdCA8PFxfQUNFT0YNCisNCitQcm9ncmFtIG5hbWVzOg0K KyAgLS1wcm9ncmFtLXByZWZpeD1QUkVGSVggICAgICAgICAgICBwcmVwZW5kIFBSRUZJWCB0byBp bnN0YWxsZWQNCnByb2dyYW0gbmFtZXMNCisgIC0tcHJvZ3JhbS1zdWZmaXg9U1VGRklYICAgICAg ICAgICAgYXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQNCnByb2dyYW0gbmFtZXMNCisgIC0tcHJv Z3JhbS10cmFuc2Zvcm0tbmFtZT1QUk9HUkFNICAgcnVuIHNlZCBQUk9HUkFNIG9uIGluc3RhbGxl ZA0KcHJvZ3JhbSBuYW1lcw0KKw0KK1N5c3RlbSB0eXBlczoNCisgIC0tYnVpbGQ9QlVJTEQgICAg IGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdDQorICAtLWhvc3Q9SE9T VCAgICAgICBjcm9zcy1jb21waWxlIHRvIGJ1aWxkIHByb2dyYW1zIHRvIHJ1biBvbiBIT1NUDQpb QlVJTERdDQorX0FDRU9GDQorZmkNCisNCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhl bg0KKyAgY2FzZSAkYWNfaW5pdF9oZWxwIGluDQorICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVj aG8gIkNvbmZpZ3VyYXRpb24gb2YgbmV3bGliIDEuMTkuMDoiOzsNCisgICBlc2FjDQorICBjYXQg PDxcX0FDRU9GDQorDQorT3B0aW9uYWwgRmVhdHVyZXM6DQorICAtLWRpc2FibGUtb3B0aW9uLWNo ZWNraW5nICBpZ25vcmUgdW5yZWNvZ25pemVkIC0tZW5hYmxlLy0td2l0aA0Kb3B0aW9ucw0KKyAg LS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAt LWVuYWJsZS0NCkZFQVRVUkU9bm8pDQorICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRl IEZFQVRVUkUgW0FSRz15ZXNdDQorICAtLWVuYWJsZS1tdWx0aWxpYiAgICAgICAgIGJ1aWxkIG1h bnkgbGlicmFyeSB2ZXJzaW9ucyAoZGVmYXVsdCkNCisgIC0tZW5hYmxlLXRhcmdldC1vcHRzcGFj ZSAgb3B0aW1pemUgZm9yIHNwYWNlDQorICAtLWVuYWJsZS1tYWxsb2MtZGVidWdnaW5nIGluZGlj YXRlIG1hbGxvYyBkZWJ1Z2dpbmcgcmVxdWVzdGVkDQorICAtLWVuYWJsZS1uZXdsaWItbXVsdGl0 aHJlYWQgICAgICAgIGVuYWJsZSBzdXBwb3J0IGZvciBtdWx0aXBsZQ0KdGhyZWFkcw0KKyAgLS1l bmFibGUtbmV3bGliLWljb252ICAgICBlbmFibGUgaWNvbnYgbGlicmFyeSBzdXBwb3J0DQorICAt LWVuYWJsZS1uZXdsaWItZWxpeC1sZXZlbCAgICAgICAgIHN1cHBseSBkZXNpcmVkIGVsaXggbGli cmFyeSBsZXZlbA0KKDEtNCkNCisgIC0tZGlzYWJsZS1uZXdsaWItaW8tZmxvYXQgZGlzYWJsZSBw cmludGYvc2NhbmYgZmFtaWx5IGZsb2F0IHN1cHBvcnQNCisgIC0tZGlzYWJsZS1uZXdsaWItc3Vw cGxpZWQtc3lzY2FsbHMgZGlzYWJsZSBuZXdsaWIgZnJvbSBzdXBwbHlpbmcNCnN5c2NhbGxzDQor ICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxk DQorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRl cGVuZGVuY3kNCmV4dHJhY3RvcnMNCisgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSAgZW5hYmxl IG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QNCnVzZWZ1bA0KKwkJCSAgKGFuZCBzb21l dGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsDQppbnN0YWxsZXINCisNCitTb21lIGluZmx1 ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoNCisgIENDQVMgICAgICAgIGFzc2VtYmxlciBj b21waWxlciBjb21tYW5kIChkZWZhdWx0cyB0byBDQykNCisgIENDQVNGTEFHUyAgIGFzc2VtYmxl ciBjb21waWxlciBmbGFncyAoZGVmYXVsdHMgdG8gQ0ZMQUdTKQ0KKw0KK1VzZSB0aGVzZSB2YXJp YWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0bw0K aGVscA0KK2l0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJk IG5hbWVzL2xvY2F0aW9ucy4NCisNCitSZXBvcnQgYnVncyB0byB0aGUgcGFja2FnZSBwcm92aWRl ci4NCitfQUNFT0YNCithY19zdGF0dXM9JD8NCitmaQ0KKw0KK2lmIHRlc3QgIiRhY19pbml0X2hl bHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4NCisgICMgSWYgdGhlcmUgYXJlIHN1YmRpcnMsIHJlcG9y dCB0aGVpciBzcGVjaWZpYyAtLWhlbHAuDQorICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRpcnNf YWxsOyBkbyB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250aW51ZQ0KKyAgICB0ZXN0IC1kICIk YWNfZGlyIiB8fA0KKyAgICAgIHsgY2QgIiRzcmNkaXIiICYmIGFjX3B3ZD1gcHdkYCAmJiBzcmNk aXI9LiAmJiB0ZXN0IC1kICIkYWNfZGlyIjsNCn0gfHwNCisgICAgICBjb250aW51ZQ0KKyAgICBh Y19idWlsZGRpcj0uDQorDQorY2FzZSAiJGFjX2RpciIgaW4NCisuKSBhY19kaXJfc3VmZml4PSBh Y190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsNCisqKQ0KKyAgYWNf ZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2ANCisg ICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4NCisgIGFjX3Rv cF9idWlsZGRpcl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQNCidzfC9bXlxc L10qfC8uLnxnO3N8L3x8J2ANCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4NCisgICIi KSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsNCisgICopICBh Y190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7Ow0KKyAgZXNhYyA7Ow0K K2VzYWMNCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QNCithY19hYnNfYnVpbGRkaXI9JGFj X3B3ZCRhY19kaXJfc3VmZml4DQorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToNCithY190 b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgNCisNCitjYXNlICRzcmNkaXIgaW4NCisg IC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4NCisgICAgYWNfc3JjZGlyPS4NCisgICAg YWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1Yg0KKyAgICBhY19hYnNfdG9wX3NyY2Rp cj0kYWNfcHdkIDs7DQorICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuDQor ICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7DQorICAgIGFjX3RvcF9zcmNkaXI9 JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7DQorICAqKSAjIFJlbGF0 aXZlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNf ZGlyX3N1ZmZpeA0KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2Rp cg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsNCitlc2FjDQorYWNf YWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKw0KKyAgICBjZCAi JGFjX2RpciIgfHwgeyBhY19zdGF0dXM9JD87IGNvbnRpbnVlOyB9DQorICAgICMgQ2hlY2sgZm9y IGd1ZXN0ZWQgY29uZmlndXJlLg0KKyAgICBpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3Vy ZS5nbnUiOyB0aGVuDQorICAgICAgZWNobyAmJg0KKyAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9j b25maWd1cmUuZ251IiAtLWhlbHA9cmVjdXJzaXZlDQorICAgIGVsaWYgdGVzdCAtZiAiJGFjX3Ny Y2Rpci9jb25maWd1cmUiOyB0aGVuDQorICAgICAgZWNobyAmJg0KKyAgICAgICRTSEVMTCAiJGFj X3NyY2Rpci9jb25maWd1cmUiIC0taGVscD1yZWN1cnNpdmUNCisgICAgZWxzZQ0KKyAgICAgICRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMg aW4NCiRhY19kaXIiID4mMg0KKyAgICBmaSB8fCBhY19zdGF0dXM9JD8NCisgICAgY2QgIiRhY19w d2QiIHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVhazsgfQ0KKyAgZG9uZQ0KK2ZpDQorDQordGVzdCAt biAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzDQoraWYgJGFjX2luaXRfdmVyc2lv bjsgdGhlbg0KKyAgY2F0IDw8XF9BQ0VPRg0KK25ld2xpYiBjb25maWd1cmUgMS4xOS4wDQorZ2Vu ZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0DQorDQorQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KK1RoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVl IHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorZ2l2ZXMgdW5saW1pdGVk IHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0Lg0KK19BQ0VPRg0K KyAgZXhpdA0KK2ZpDQorDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgQXV0 b2NvbmYgaW5pdGlhbGl6YXRpb24uICMjDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj DQorDQorIyBhY19mbl9jX3RyeV9jb21waWxlIExJTkVOTw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCisjIFRyeSB0byBjb21waWxlIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4g d2hldGhlciB0aGlzIHN1Y2NlZWRlZC4NCithY19mbl9jX3RyeV9jb21waWxlICgpDQorew0KKyAg YXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9DQphc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0 YWNrPSRhc19saW5lbm9fc3RhY2sNCisgIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQNCisgIGlm IHsgeyBhY190cnk9IiRhY19jb21waWxlIg0KK2Nhc2UgIigoJGFjX3RyeSIgaW4NCisgICpcIiog fCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Ow0KKyAgKikgYWNfdHJ5X2VjaG89 JGFjX3RyeTs7DQorZXNhYw0KK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiDQorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0g PiY1DQorICAoZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVycg0KKyAgYWNfc3RhdHVz PSQ/DQorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbg0KKyAgICBncmVwIC12ICdeICor JyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQ0KKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQ0K KyAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyDQorICBmaQ0KKyAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1DQorICB0 ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHsNCisJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFn IiB8fA0KKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycg0KKyAgICAgICB9ICYmIHRlc3QgLXMgY29u ZnRlc3QuJGFjX29iamV4dDsgdGhlbiA6DQorICBhY19yZXR2YWw9MA0KK2Vsc2UNCisgICRhc19l Y2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQ0KK3NlZCAncy9eL3wgLycgY29u ZnRlc3QuJGFjX2V4dCA+JjUNCisNCisJYWNfcmV0dmFsPTENCitmaQ0KKyAgZXZhbCAkYXNfbGlu ZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsN CnVuc2V0IGFzX2xpbmVubzt9DQorICByZXR1cm4gJGFjX3JldHZhbA0KKw0KK30gIyBhY19mbl9j X3RyeV9jb21waWxlDQorY2F0ID5jb25maWcubG9nIDw8X0FDRU9GDQorVGhpcyBmaWxlIGNvbnRh aW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUNCitydW5uaW5nIGNv bmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLg0K Kw0KK0l0IHdhcyBjcmVhdGVkIGJ5IG5ld2xpYiAkYXNfbWUgMS4xOS4wLCB3aGljaCB3YXMNCitn ZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3 YXMNCisNCisgICQgJDAgJEANCisNCitfQUNFT0YNCitleGVjIDU+PmNvbmZpZy5sb2cNCit7DQor Y2F0IDw8X0FTVU5BTUUNCisjIyAtLS0tLS0tLS0gIyMNCisjIyBQbGF0Zm9ybS4gIyMNCisjIyAt LS0tLS0tLS0gIyMNCisNCitob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rl di9udWxsIHwgc2VkIDFxYA0KK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwg ZWNobyB1bmtub3duYA0KK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNo byB1bmtub3duYA0KK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1 bmtub3duYA0KK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtu b3duYA0KKw0KKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2 L251bGwgfHwgZWNobyB1bmtub3duYA0KKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1l IC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYA0KKw0KKy9iaW4vYXJjaCAgICAg ICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8N CnVua25vd25gDQorL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IGAoL3Vzci9iaW4vYXJjaCAtaykg Mj4vZGV2L251bGwgICAgICAgfHwgZWNobw0KdW5rbm93bmANCisvdXNyL2NvbnZleC9nZXRzeXNp bmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvDQp1bmtu b3duYA0KKy91c3IvYmluL2hvc3RpbmZvICAgICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAyPi9k ZXYvbnVsbCAgICAgIHx8IGVjaG8NCnVua25vd25gDQorL2Jpbi9tYWNoaW5lICAgICAgICAgICA9 IGAoL2Jpbi9tYWNoaW5lKSAyPi9kZXYvbnVsbCAgICAgICAgICAgfHwgZWNobw0KdW5rbm93bmAN CisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVs bCAgICAgICB8fCBlY2hvDQp1bmtub3duYA0KKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9i aW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8NCnVua25vd25gDQorDQor X0FTVU5BTUUNCisNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9y IGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIk YXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICAkYXNfZWNobyAiUEFUSDogJGFzX2RpciINCisgIGRv bmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorfSA+JjUNCisNCitjYXQgPiY1IDw8X0FDRU9GDQor DQorDQorIyMgLS0tLS0tLS0tLS0gIyMNCisjIyBDb3JlIHRlc3RzLiAjIw0KKyMjIC0tLS0tLS0t LS0tICMjDQorDQorX0FDRU9GDQorDQorDQorIyBLZWVwIGEgdHJhY2Ugb2YgdGhlIGNvbW1hbmQg bGluZS4NCisjIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhl eSBkbyBub3QgcGlsZSB1cC4NCisjIFN0cmlwIG91dCAtLXNpbGVudCBiZWNhdXNlIHdlIGRvbid0 IHdhbnQgdG8gcmVjb3JkIGl0IGZvciBmdXR1cmUNCnJ1bnMuDQorIyBBbHNvIHF1b3RlIGFueSBh cmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzLg0KKyMgTWFrZSB0d28gcGFzc2Vz IHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLg0KK2Fj X2NvbmZpZ3VyZV9hcmdzPQ0KK2FjX2NvbmZpZ3VyZV9hcmdzMD0NCithY19jb25maWd1cmVfYXJn czE9DQorYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UNCitmb3IgYWNfcGFzcyBpbiAxIDINCitkbw0K KyAgZm9yIGFjX2FyZw0KKyAgZG8NCisgICAgY2FzZSAkYWNfYXJnIGluDQorICAgIC1uby1jcmVh dGUgfCAtLW5vLWMqIHwgLW4gfCAtbm8tcmVjdXJzaW9uIHwgLS1uby1yKikgY29udGludWUgOzsN CisgICAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1x IFwNCisgICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwp DQorICAgICAgY29udGludWUgOzsNCisgICAgKlwnKikNCisgICAgICBhY19hcmc9YCRhc19lY2hv ICIkYWNfYXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7Ow0KKyAgICBlc2FjDQorICAg IGNhc2UgJGFjX3Bhc3MgaW4NCisgICAgMSkgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdz MCAiICckYWNfYXJnJyIgOzsNCisgICAgMikNCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmln dXJlX2FyZ3MxICIgJyRhY19hcmcnIg0KKyAgICAgIGlmIHRlc3QgJGFjX211c3Rfa2VlcF9uZXh0 ID0gdHJ1ZTsgdGhlbg0KKwlhY19tdXN0X2tlZXBfbmV4dD1mYWxzZSAjIEdvdCB2YWx1ZSwgYmFj ayB0byBub3JtYWwuDQorICAgICAgZWxzZQ0KKwljYXNlICRhY19hcmcgaW4NCisJICAqPSogfCAt LWNvbmZpZy1jYWNoZSB8IC1DIHwgLWRpc2FibGUtKiB8IC0tZGlzYWJsZS0qIFwNCisJICB8IC1l bmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcDQorCSAg fCAtcSB8IC1xdWlldCB8IC0tcSogfCAtc2lsZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXA0K KwkgIHwgLXdpdGgtKiB8IC0td2l0aC0qIHwgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qIHwgLS14 KQ0KKwkgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluDQorCSAgICAgICIkYWNfY29u ZmlndXJlX2FyZ3MxIioiICckYWNfYXJnJyAiKiApIGNvbnRpbnVlIDs7DQorCSAgICBlc2FjDQor CSAgICA7Ow0KKwkgIC0qICkgYWNfbXVzdF9rZWVwX25leHQ9dHJ1ZSA7Ow0KKwllc2FjDQorICAg ICAgZmkNCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MgIiAnJGFjX2FyZyci DQorICAgICAgOzsNCisgICAgZXNhYw0KKyAgZG9uZQ0KK2RvbmUNCit7IGFjX2NvbmZpZ3VyZV9h cmdzMD07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMDt9DQoreyBhY19jb25maWd1cmVfYXJnczE9 OyB1bnNldCBhY19jb25maWd1cmVfYXJnczE7fQ0KKw0KKyMgV2hlbiBpbnRlcnJ1cHRlZCBvciBl eGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUNCisjIGNvbmZpZy5s b2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVy ZQ0KKyMgd291bGQgY2F1c2UgcHJvYmxlbXMgb3IgbG9vayB1Z2x5Lg0KKyMgV0FSTklORzogVXNl ICdcJycgdG8gcmVwcmVzZW50IGFuIGFwb3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLg0KKyMgV0FS TklORzogRG8gbm90IHN0YXJ0IHRoZSB0cmFwIGNvZGUgd2l0aCBhIG5ld2xpbmUsIGR1ZSB0byBh IEZyZWVCU0QNCjQuMCBidWcuDQordHJhcCAnZXhpdF9zdGF0dXM9JD8NCisgICMgU2F2ZSBpbnRv IGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4NCmRlYnVnZ2lu Zy4NCisgIHsNCisgICAgZWNobw0KKw0KKyAgICBjYXQgPDxcX0FTQk9YDQorIyMgLS0tLS0tLS0t LS0tLS0tLSAjIw0KKyMjIENhY2hlIHZhcmlhYmxlcy4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0t ICMjDQorX0FTQk9YDQorICAgIGVjaG8NCisgICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0 aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluDQp2YWx1ZXMsDQorKA0KKyAgZm9y IGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16QS1a MC0NCjlfXSpcKT0uKi9cMS9wJ1wnJ2A7IGRvDQorICAgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0K KyAgICBjYXNlICRhY192YWwgaW4gIygNCisgICAgKiR7YXNfbmx9KikNCisgICAgICBjYXNlICRh Y192YXIgaW4gIygNCisgICAgICAqX2N2XyopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogV0FSTklORzogY2FjaGUNCnZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBu ZXdsaW5lIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAk YWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSINCj4mMjt9IDs7DQorICAgICAgZXNhYw0KKyAgICAg IGNhc2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygNCisgICAg ICBCQVNIX0FSR1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFyPSA7OyAjKA0KKyAgICAgICop IHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7DQorICAgICAgZXNhYyA7Ow0KKyAg ICBlc2FjDQorICBkb25lDQorICAoc2V0KSAyPiYxIHwNCisgICAgY2FzZSAkYXNfbmxgKGFjX3Nw YWNlPSdcJycgJ1wnJzsgc2V0KSAyPiYxYCBpbiAjKA0KKyAgICAqJHthc19ubH1hY19zcGFjZT1c ICopDQorICAgICAgc2VkIC1uIFwNCisJInMvJ1wnJy8nXCcnXFxcXCdcJycnXCcnL2c7DQorCSAN CnMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9c XDE9J1wnJ1xcMidcJycvDQpwIg0KKyAgICAgIDs7ICMoDQorICAgICopDQorICAgICAgc2VkIC1u ICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCINCisgICAgICA7Ow0K KyAgICBlc2FjIHwNCisgICAgc29ydA0KKykNCisgICAgZWNobw0KKw0KKyAgICBjYXQgPDxcX0FT Qk9YDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBPdXRwdXQgdmFyaWFibGVzLiAjIw0K KyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjDQorX0FTQk9YDQorICAgIGVjaG8NCisgICAgZm9yIGFj X3ZhciBpbiAkYWNfc3Vic3RfdmFycw0KKyAgICBkbw0KKyAgICAgIGV2YWwgYWNfdmFsPVwkJGFj X3Zhcg0KKyAgICAgIGNhc2UgJGFjX3ZhbCBpbg0KKyAgICAgICpcJ1wnJyopIGFjX3ZhbD1gJGFz X2VjaG8gIiRhY192YWwiIHwgc2VkDQoicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7 DQorICAgICAgZXNhYw0KKyAgICAgICRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyIN CisgICAgZG9uZSB8IHNvcnQNCisgICAgZWNobw0KKw0KKyAgICBpZiB0ZXN0IC1uICIkYWNfc3Vi c3RfZmlsZXMiOyB0aGVuDQorICAgICAgY2F0IDw8XF9BU0JPWA0KKyMjIC0tLS0tLS0tLS0tLS0t LS0tLS0gIyMNCisjIyBGaWxlIHN1YnN0aXR1dGlvbnMuICMjDQorIyMgLS0tLS0tLS0tLS0tLS0t LS0tLSAjIw0KK19BU0JPWA0KKyAgICAgIGVjaG8NCisgICAgICBmb3IgYWNfdmFyIGluICRhY19z dWJzdF9maWxlcw0KKyAgICAgIGRvDQorCWV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKwljYXNlICRh Y192YWwgaW4NCisJKlwnXCcnKikgYWNfdmFsPWAkYXNfZWNobyAiJGFjX3ZhbCIgfCBzZWQNCiJz LydcJycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsNCisJZXNhYw0KKwkkYXNfZWNobyAiJGFj X3Zhcj0nXCcnJGFjX3ZhbCdcJyciDQorICAgICAgZG9uZSB8IHNvcnQNCisgICAgICBlY2hvDQor ICAgIGZpDQorDQorICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbg0KKyAgICAgIGNhdCA8 PFxfQVNCT1gNCisjIyAtLS0tLS0tLS0tLSAjIw0KKyMjIGNvbmZkZWZzLmguICMjDQorIyMgLS0t LS0tLS0tLS0gIyMNCitfQVNCT1gNCisgICAgICBlY2hvDQorICAgICAgY2F0IGNvbmZkZWZzLmgN CisgICAgICBlY2hvDQorICAgIGZpDQorICAgIHRlc3QgIiRhY19zaWduYWwiICE9IDAgJiYNCisg ICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWduYWwiDQorICAgICRh c19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIg0KKyAgfSA+JjUNCisgIHJtIC1mIGNv cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJg0KKyAgICBybSAtZiAtciBjb25mdGVzdCogY29u ZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVzICYmDQorICAgIGV4aXQgJGV4aXRfc3RhdHVz DQorJyAwDQorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvDQorICB0cmFwICdhY19zaWdu YWw9JyRhY19zaWduYWwnOyBhc19mbl9leGl0IDEnICRhY19zaWduYWwNCitkb25lDQorYWNfc2ln bmFsPTANCisNCisjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGlt aXRzIHRoYXQgREVGUyBjYW4NCmV4Y2VlZC4NCitybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMu aA0KKw0KKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZzLmgNCisNCisjIFBy ZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4NCisNCitjYXQgPj5jb25mZGVmcy5oIDw8 X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiDQorX0FDRU9GDQor DQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICIk UEFDS0FHRV9UQVJOQU1FIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YN CisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiJFBBQ0tBR0VfVkVSU0lPTiINCitfQUNFT0YNCisN CitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBB Q0tBR0VfU1RSSU5HIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YNCisj ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiDQorX0FDRU9GDQor DQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9VUkwgIiRQQUNL QUdFX1VSTCINCitfQUNFT0YNCisNCisNCisjIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBh bHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4NCisjIFByZWZlciBhbiBleHBsaWNp dGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLg0KK2FjX3Np dGVfZmlsZTE9Tk9ORQ0KK2FjX3NpdGVfZmlsZTI9Tk9ORQ0KK2lmIHRlc3QgLW4gIiRDT05GSUdf U0lURSI7IHRoZW4NCisgIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFDQorZWxpZiB0ZXN0ICJ4 JHByZWZpeCIgIT0geE5PTkU7IHRoZW4NCisgIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9j b25maWcuc2l0ZQ0KKyAgYWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQ0KK2Vs c2UNCisgIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRl DQorICBhY19zaXRlX2ZpbGUyPSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUNCitm aQ0KK2ZvciBhY19zaXRlX2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIi DQorZG8NCisgIHRlc3QgIngkYWNfc2l0ZV9maWxlIiA9IHhOT05FICYmIGNvbnRpbnVlDQorICBp ZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbg0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQNCiRhY19zaXRlX2ZpbGUi ID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmls ZSIgPiY2O30NCisgICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1DQorICAgIC4g IiRhY19zaXRlX2ZpbGUiDQorICBmaQ0KK2RvbmUNCisNCitpZiB0ZXN0IC1yICIkY2FjaGVfZmls ZSI7IHRoZW4NCisgICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2Ug L2Rldi9udWxsIChzcGVjaWFsDQorICAjIGZpbGVzIGFjdHVhbGx5KSwgc28gd2UgYXZvaWQgZG9p bmcgdGhhdC4NCisgIGlmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbg0KKyAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgY2FjaGUNCiRjYWNoZV9m aWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+ JjY7fQ0KKyAgICBjYXNlICRjYWNoZV9maWxlIGluDQorICAgICAgW1xcL10qIHwgPzpbXFwvXSog KSAuICIkY2FjaGVfZmlsZSI7Ow0KKyAgICAgICopICAgICAgICAgICAgICAgICAgICAgIC4gIi4v JGNhY2hlX2ZpbGUiOzsNCisgICAgZXNhYw0KKyAgZmkNCitlbHNlDQorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIg0K PiY1DQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9 DQorICA+JGNhY2hlX2ZpbGUNCitmaQ0KKw0KKyMgQ2hlY2sgdGhhdCB0aGUgcHJlY2lvdXMgdmFy aWFibGVzIHNhdmVkIGluIHRoZSBjYWNoZSBoYXZlIGtlcHQgdGhlDQpzYW1lDQorIyB2YWx1ZS4N CithY19jYWNoZV9jb3JydXB0ZWQ9ZmFsc2UNCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91c192 YXJzOyBkbw0KKyAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQNCisg IGV2YWwgYWNfbmV3X3NldD1cJGFjX2Vudl8ke2FjX3Zhcn1fc2V0DQorICBldmFsIGFjX29sZF92 YWw9XCRhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlDQorICBldmFsIGFjX25ld192YWw9XCRhY19l bnZfJHthY192YXJ9X3ZhbHVlDQorICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0IGluDQor ICAgIHNldCwpDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMNCnNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJl dmlvdXMgcnVuIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMg c2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZQ0KcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAgICAg IGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7DQorICAgICxzZXQpDQorICAgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMNCm5vdCBz ZXQgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxg JGFjX3Zhcicgd2FzIG5vdCBzZXQgaW4gdGhlIHByZXZpb3VzIHJ1biINCj4mMjt9DQorICAgICAg YWNfY2FjaGVfY29ycnVwdGVkPTogOzsNCisgICAgLCk7Ow0KKyAgICAqKQ0KKyAgICAgIGlmIHRl c3QgIngkYWNfb2xkX3ZhbCIgIT0gIngkYWNfbmV3X3ZhbCI7IHRoZW4NCisJIyBkaWZmZXJlbmNl cyBpbiB3aGl0ZXNwYWNlIGRvIG5vdCBsZWFkIHRvIGZhaWx1cmUuDQorCWFjX29sZF92YWxfdz1g ZWNobyB4ICRhY19vbGRfdmFsYA0KKwlhY19uZXdfdmFsX3c9YGVjaG8geCAkYWNfbmV3X3ZhbGAN CisJaWYgdGVzdCAiJGFjX29sZF92YWxfdyIgIT0gIiRhY19uZXdfdmFsX3ciOyB0aGVuDQorCSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy Jw0KaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hvICIk YXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cw0K cnVuOiIgPiYyO30NCisJICBhY19jYWNoZV9jb3JydXB0ZWQ9Og0KKwllbHNlDQorCSAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZw0Kd2hp dGVzcGFjZSBjaGFuZ2VzIGluIFxgJGFjX3Zhcicgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4m NQ0KKyRhc19lY2hvICIkYXNfbWU6IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdl cyBpbiBcYCRhY192YXInDQpzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30NCisJICBldmFs ICRhY192YXI9XCRhY19vbGRfdmFsDQorCWZpDQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogICBmb3JtZXIgdmFsdWU6IA0KXGAkYWNfb2xkX3ZhbCciID4mNQ0KKyRh c19lY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgXGAkYWNfb2xkX3ZhbCciID4mMjt9DQor CXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBjdXJyZW50IHZhbHVl Og0KXGAkYWNfbmV3X3ZhbCciID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6ICAgY3VycmVudCB2YWx1 ZTogXGAkYWNfbmV3X3ZhbCciID4mMjt9DQorICAgICAgZmk7Ow0KKyAgZXNhYw0KKyAgIyBQYXNz IHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLg0KKyAgaWYgdGVzdCAiJGFjX25l d19zZXQiID0gc2V0OyB0aGVuDQorICAgIGNhc2UgJGFjX25ld192YWwgaW4NCisgICAgKlwnKikg YWNfYXJnPSRhY192YXI9YCRhc19lY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQNCiJzLycvJ1xcXFxc XFxcJycvZyJgIDs7DQorICAgICopIGFjX2FyZz0kYWNfdmFyPSRhY19uZXdfdmFsIDs7DQorICAg IGVzYWMNCisgICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluDQorICAgICAgKiIgJyRh Y19hcmcnICIqKSA7OyAjIEF2b2lkIGR1cHMuICBVc2Ugb2YgcXVvdGVzIGVuc3VyZXMNCmFjY3Vy YWN5Lg0KKyAgICAgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJn JyIgOzsNCisgICAgZXNhYw0KKyAgZmkNCitkb25lDQoraWYgJGFjX2NhY2hlX2NvcnJ1cHRlZDsg dGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjog aW4gXGAkYWNfcHdkJzoiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19w d2QnOiIgPiYyO30NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog ZXJyb3I6IGNoYW5nZXMgaW4gdGhlDQplbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVp bGQiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9u bWVudCBjYW4gY29tcHJvbWlzZSB0aGUNCmJ1aWxkIiA+JjI7fQ0KKyAgYXNfZm5fZXJyb3IgInJ1 biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kDQpzdGFydCBv dmVyIiAiJExJTkVOTyIgNQ0KK2ZpDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBN YWluIGJvZHkgb2Ygc2NyaXB0LiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQor YWNfZXh0PWMNCithY19jcHA9JyRDUFAgJENQUEZMQUdTJw0KK2FjX2NvbXBpbGU9JyRDQyAtYyAk Q0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScNCithY19saW5rPSckQ0MgLW8g Y29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTDQpjb25mdGVzdC4k YWNfZXh0ICRMSUJTID4mNScNCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251 DQorDQorDQorDQorDQorYWNfYXV4X2Rpcj0NCitmb3IgYWNfZGlyIGluIC4uLy4uLy4uLy4uICIk c3JjZGlyIi8uLi8uLi8uLi8uLjsgZG8NCisgIGZvciBhY190IGluIGluc3RhbGwtc2ggaW5zdGFs bC5zaCBzaHRvb2w7IGRvDQorICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJGFjX3QiOyB0aGVuDQor ICAgICAgYWNfYXV4X2Rpcj0kYWNfZGlyDQorICAgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9k aXIvJGFjX3QgLWMiDQorICAgICAgYnJlYWsgMg0KKyAgICBmaQ0KKyAgZG9uZQ0KK2RvbmUNCitp ZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmlu ZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4NCi4uLy4uLy4uLy4uIFwiJHNy Y2RpclwiLy4uLy4uLy4uLy4uIiAiJExJTkVOTyIgNQ0KK2ZpDQorDQorIyBUaGVzZSB0aHJlZSB2 YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsDQorIyBhbmQgYXJlIGlu dGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLg0KKyMg VGhleSBjYW4gY2F1c2Ugc2VyaW91cyBwcm9ibGVtcyBpZiBhIGJ1aWxkZXIncyBzb3VyY2UgdHJl ZSBpcyBpbiBhDQpkaXJlY3RvcnkNCisjIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFs IGNoYXJhY3RlcnMuDQorYWNfY29uZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmln Lmd1ZXNzIiAgIyBQbGVhc2UgZG9uJ3QgdXNlDQp0aGlzIHZhci4NCithY19jb25maWdfc3ViPSIk U0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzDQp2 YXIuDQorYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVh c2UgZG9uJ3QgdXNlIHRoaXMNCnZhci4NCisNCisNCisNCisNCisjIE1ha2Ugc3VyZSB3ZSBjYW4g cnVuIGNvbmZpZy5zdWIuDQorJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiBzdW40ID4v ZGV2L251bGwgMj4mMSB8fA0KKyAgYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gJFNIRUxMICRhY19h dXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1DQorDQoreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSINCj4mNQ0KKyRh c19lY2hvX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9DQoraWYgdGVz dCAiJHthY19jdl9idWlsZCtzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcw0KK3Rlc3Qg IngkYWNfYnVpbGRfYWxpYXMiID0geCAmJg0KKyAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJGFj X2F1eF9kaXIvY29uZmlnLmd1ZXNzImANCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYN CisgIGFzX2ZuX2Vycm9yICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lm eSBvbmUiDQoiJExJTkVOTyIgNQ0KK2FjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2Nv bmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwNCisgIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFj X2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIg0KIiRMSU5FTk8iIDUN CisNCitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3ZfYnVpbGQiID4mNQ0KKyRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQ0KK2Nh c2UgJGFjX2N2X2J1aWxkIGluDQorKi0qLSopIDs7DQorKikgYXNfZm5fZXJyb3IgImludmFsaWQg dmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7DQorZXNhYw0KK2J1aWxkPSRh Y19jdl9idWlsZA0KK2FjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScNCitzZXQgeCAkYWNfY3ZfYnVp bGQNCitzaGlmdA0KK2J1aWxkX2NwdT0kMQ0KK2J1aWxkX3ZlbmRvcj0kMg0KK3NoaWZ0OyBzaGlm dA0KKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3Jl YXRlICQqLA0KKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoNCitidWlsZF9vcz0kKg0KK0lGUz0k YWNfc2F2ZV9JRlMNCitjYXNlICRidWlsZF9vcyBpbiAqXCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1 aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsNCmVzYWMNCisNCisNCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiDQo+JjUN CiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9DQoraWYg dGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4N CisgIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkDQorZWxzZQ0KKyAgYWNfY3ZfaG9zdD1gJFNIRUxM ICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwNCisgICAgYXNfZm5fZXJy b3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFzIGZhaWxlZCINCiIk TElORU5PIiA1DQorZmkNCisNCitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaG9zdCIgPiY1DQorJGFzX2VjaG8gIiRhY19jdl9ob3N0 IiA+JjY7IH0NCitjYXNlICRhY19jdl9ob3N0IGluDQorKi0qLSopIDs7DQorKikgYXNfZm5fZXJy b3IgImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsNCitlc2Fj DQoraG9zdD0kYWNfY3ZfaG9zdA0KK2FjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScNCitzZXQgeCAk YWNfY3ZfaG9zdA0KK3NoaWZ0DQoraG9zdF9jcHU9JDENCitob3N0X3ZlbmRvcj0kMg0KK3NoaWZ0 OyBzaGlmdA0KKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQg dG8gY3JlYXRlICQqLA0KKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoNCitob3N0X29zPSQqDQor SUZTPSRhY19zYXZlX0lGUw0KK2Nhc2UgJGhvc3Rfb3MgaW4gKlwgKikgaG9zdF9vcz1gZWNobyAi JGhvc3Rfb3MiIHwgc2VkICdzLyAvLS9nJ2A7Ow0KZXNhYw0KKw0KKw0KK2FtX19hcGlfdmVyc2lv bj0iMS45Ig0KKyMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBw cm9ncmFtIChmYXN0ZXIpLA0KKyMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIu ICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcg0KKyMgaW5jb21wYXRpYmxlIHZlcnNpb25zOg0KKyMg U3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsDQorIyBTdW5PUyAvdXNyL2V0Yy9p bnN0YWxsDQorIyBJUklYIC9zYmluL2luc3RhbGwNCisjIEFJWCAvYmluL2luc3RhbGwNCisjIEFt aWdhT1MgL0MvaW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlz Y3MNCisjIEFJWCA0IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRo b3V0IGEgLWcgZmxhZw0KKyMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hh bmRsZXMgbm9uZXhpc3RlbnQgYXJncw0KKyMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0 cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwDQoic3RhZmYiDQorIyBPUy8yJ3Mgc3lz dGVtIGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFudGljDQor IyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJv bQ0KLi9pbnN0YWxsLnNoLg0KKyMgUmVqZWN0IGluc3RhbGwgcHJvZ3JhbXMgdGhhdCBjYW5ub3Qg aW5zdGFsbCBtdWx0aXBsZSBmaWxlcy4NCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlDQppbnN0YWxsIiA+JjUNCisk YXNfZWNob19uICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIgPiY2 OyB9DQoraWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuDQoraWYgdGVzdCAiJHthY19jdl9wYXRo X2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+ JjYNCitlbHNlDQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9y IGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIk YXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRy YWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4NCitjYXNlICRhc19kaXIvIGluICMoKA0K KyAgLi8gfCAuLy8gfCAvW2NDXS8qIHwgXA0KKyAgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNy L2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogfCBcDQorICA/OltcXC9db3MyW1xc L11pbnN0YWxsW1xcL10qIHwgPzpbXFwvXU9TMltcXC9dSU5TVEFMTFtcXC9dKiB8IFwNCisgIC91 c3IvdWNiLyogKSA7Ow0KKyAgKikNCisgICAgIyBPU0YxIGFuZCBTQ08gT0RUIDMuMCBoYXZlIHRo ZWlyIG93biBuYW1lcyBmb3IgaW5zdGFsbC4NCisgICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBm cm9tIE9TRiBzaW5jZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290DQorICAgICMgYnkgZGVmYXVs dC4NCisgICAgZm9yIGFjX3Byb2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBpbnN0YWxsOyBkbw0KKyAg ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0K KwlpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiICYmICRhc190ZXN0 X3gNCiIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKwkgIGlmIHRlc3Qg JGFjX3Byb2cgPSBpbnN0YWxsICYmDQorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJv ZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbA0KMj4mMTsgdGhlbg0KKwkgICAgIyBBSVggaW5zdGFs bC4gIEl0IGhhcyBhbiBpbmNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9uLg0KKwkgICAgOg0K KwkgIGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYNCisJICAgIGdyZXAgcHdwbHVzICIk YXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsDQoyPiYxOyB0aGVuDQorCSAg ICAjIHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMtLWRv bid0DQp1c2UuDQorCSAgICA6DQorCSAgZWxzZQ0KKwkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBj b25mdGVzdC50d28gY29uZnRlc3QuZGlyDQorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQ0K KwkgICAgZWNobyB0d28gPiBjb25mdGVzdC50d28NCisJICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0K KwkgICAgaWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZQ0K Y29uZnRlc3QudHdvICJgcHdkYC9jb25mdGVzdC5kaXIiICYmDQorCSAgICAgIHRlc3QgLXMgY29u ZnRlc3Qub25lICYmIHRlc3QgLXMgY29uZnRlc3QudHdvICYmDQorCSAgICAgIHRlc3QgLXMgY29u ZnRlc3QuZGlyL2NvbmZ0ZXN0Lm9uZSAmJg0KKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9j b25mdGVzdC50d28NCisJICAgIHRoZW4NCisJICAgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNf ZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IC1jIg0KKwkgICAgICBicmVhayAzDQorCSAgICBmaQ0K KwkgIGZpDQorCWZpDQorICAgICAgZG9uZQ0KKyAgICBkb25lDQorICAgIDs7DQorZXNhYw0KKw0K KyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitybSAtcmYgY29uZnRlc3Qub25lIGNvbmZ0 ZXN0LnR3byBjb25mdGVzdC5kaXINCisNCitmaQ0KKyAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2lu c3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4NCisgICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9pbnN0YWxs DQorICBlbHNlDQorICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNj cmlwdC4gIERvbid0IGNhY2hlIGENCisgICAgIyB2YWx1ZSBmb3IgSU5TVEFMTCB3aXRoaW4gYSBz b3VyY2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbA0KKyAgICAjIGJyZWFrIG90aGVyIHBh Y2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcw0KKyAgICAjIHJlbW92 ZWQsIG9yIGlmIHRoZSB2YWx1ZSBpcyBhIHJlbGF0aXZlIG5hbWUuDQorICAgIElOU1RBTEw9JGFj X2luc3RhbGxfc2gNCisgIGZpDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJElOU1RBTEwiID4mNQ0KKyRhc19lY2hvICIkSU5TVEFMTCIgPiY2 OyB9DQorDQorIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNl cyBpbiAke3Zhci12YWx9Lg0KKyMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBicmFjZSBlbmRz IHRoZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uDQordGVzdCAteiAiJElOU1RBTExfUFJPR1JBTSIg JiYgSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9Jw0KKw0KK3Rlc3QgLXogIiRJTlNUQUxMX1ND UklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nDQorDQordGVzdCAteiAiJElOU1RB TExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcNCisNCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQN CmVudmlyb25tZW50IGlzIHNhbmUiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIg YnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4uLiAiID4mNjsgfQ0KKyMgSnVzdCBpbiBjYXNlDQor c2xlZXAgMQ0KK2VjaG8gdGltZXN0YW1wID4gY29uZnRlc3QuZmlsZQ0KKyMgRG8gYHNldCcgaW4g YSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MNCisjIGFy Z3VtZW50cy4gIE11c3QgdHJ5IC1MIGZpcnN0IGluIGNhc2UgY29uZmlndXJlIGlzIGFjdHVhbGx5 IGENCisjIHN5bWxpbms7IHNvbWUgc3lzdGVtcyBwbGF5IHdlaXJkIGdhbWVzIHdpdGggdGhlIG1v ZCB0aW1lIG9mIHN5bWxpbmtzDQorIyAoZWcgRnJlZUJTRCByZXR1cm5zIHRoZSBtb2QgdGltZSBv ZiB0aGUgc3ltbGluaydzIGNvbnRhaW5pbmcNCisjIGRpcmVjdG9yeSkuDQoraWYgKA0KKyAgIHNl dCBYIGBscyAtTHQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSAyPiAvZGV2L251bGxg DQorICAgaWYgdGVzdCAiJCoiID0gIlgiOyB0aGVuDQorICAgICAgIyAtTCBkaWRuJ3Qgd29yay4N CisgICAgICBzZXQgWCBgbHMgLXQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZWANCisg ICBmaQ0KKyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUNCisgICBpZiB0ZXN0ICIkKiIgIT0gIlggJHNy Y2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSIgXA0KKyAgICAgICYmIHRlc3QgIiQqIiAhPSAi WCBjb25mdGVzdC5maWxlICRzcmNkaXIvY29uZmlndXJlIjsgdGhlbg0KKw0KKyAgICAgICMgSWYg bmVpdGhlciBtYXRjaGVkLCB0aGVuIHdlIGhhdmUgYSBicm9rZW4gbHMuICBUaGlzIGNhbiBoYXBw ZW4NCisgICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBp dCBpbmhlcml0cyBhDQorICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1l bnQuICBUaGlzIGhhcyBhY3R1YWxseQ0KKyAgICAgICMgaGFwcGVuZWQuICBTdWNoIGEgc3lzdGVt IGNvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJzYW5lIi4NCisgICAgICBhc19mbl9lcnJvciAibHMg LXQgYXBwZWFycyB0byBmYWlsLiAgTWFrZSBzdXJlIHRoZXJlIGlzIG5vdCBhDQpicm9rZW4NCith bGlhcyBpbiB5b3VyIGVudmlyb25tZW50IiAiJExJTkVOTyIgNQ0KKyAgIGZpDQorDQorICAgdGVz dCAiJDIiID0gY29uZnRlc3QuZmlsZQ0KKyAgICkNCit0aGVuDQorICAgIyBPay4NCisgICA6DQor ZWxzZQ0KKyAgIGFzX2ZuX2Vycm9yICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBk aXN0cmlidXRlZCBmaWxlcyENCitDaGVjayB5b3VyIHN5c3RlbSBjbG9jayIgIiRMSU5FTk8iIDUN CitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5 ZXMiID4mNQ0KKyRhc19lY2hvICJ5ZXMiID4mNjsgfQ0KK3Rlc3QgIiRwcm9ncmFtX3ByZWZpeCIg IT0gTk9ORSAmJg0KKyANCnByb2dyYW1fdHJhbnNmb3JtX25hbWU9InMmXiYkcHJvZ3JhbV9wcmVm aXgmOyRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIg0KKyMgVXNlIGEgZG91YmxlICQgc28gbWFrZSBp Z25vcmVzIGl0Lg0KK3Rlc3QgIiRwcm9ncmFtX3N1ZmZpeCIgIT0gTk9ORSAmJg0KKyANCnByb2dy YW1fdHJhbnNmb3JtX25hbWU9InMmXCQmJHByb2dyYW1fc3VmZml4JjskcHJvZ3JhbV90cmFuc2Zv cm1fbmFtZSINCisjIERvdWJsZSBhbnkgXCBvciAkLg0KKyMgQnkgZGVmYXVsdCB3YXMgYHMseCx4 JywgcmVtb3ZlIGl0IGlmIHVzZWxlc3MuDQorYWNfc2NyaXB0PSdzL1tcXCRdLyYmL2c7cy87cyx4 LHgsJC8vJw0KK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9YCRhc19lY2hvICIkcHJvZ3JhbV90cmFu c2Zvcm1fbmFtZSIgfCBzZWQNCiIkYWNfc2NyaXB0ImANCisNCisjIGV4cGFuZCAkYWNfYXV4X2Rp ciB0byBhbiBhYnNvbHV0ZSBwYXRoDQorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdk YA0KKw0KK3Rlc3QgeCIke01JU1NJTkcrc2V0fSIgPSB4c2V0IHx8IE1JU1NJTkc9Ilwke1NIRUxM fQ0KJGFtX2F1eF9kaXIvbWlzc2luZyINCisjIFVzZSBldmFsIHRvIGV4cGFuZCAkU0hFTEwNCitp ZiBldmFsICIkTUlTU0lORyAtLXJ1biB0cnVlIjsgdGhlbg0KKyAgYW1fbWlzc2luZ19ydW49IiRN SVNTSU5HIC0tcnVuICINCitlbHNlDQorICBhbV9taXNzaW5nX3J1bj0NCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogXGBtaXNzaW5nJyBzY3JpcHQN CmlzIHRvbyBvbGQgb3IgbWlzc2luZyIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog XGBtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nIg0KPiYyO30NCitmaQ0KKw0K K2lmIG1rZGlyIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICEgLWQgLi8t LXZlcnNpb247IHRoZW4NCisgICMgV2UgdXNlZCB0byBrZWVwaW5nIHRoZSBgLicgYXMgZmlyc3Qg YXJndW1lbnQsIGluIG9yZGVyIHRvDQorICAjIGFsbG93ICQobWtkaXJfcCkgdG8gYmUgdXNlZCB3 aXRob3V0IGFyZ3VtZW50LiAgQXMgaW4NCisgICMgICAkKG1rZGlyX3ApICQoc29tZWRpcikNCisg ICMgd2hlcmUgJChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5IGRlZmluZWQuICBIb3dldmVyIHRo aXMgaXMgd3JvbmcNCisgICMgZm9yIHR3byByZWFzb25zOg0KKyAgIyAgMS4gaWYgdGhlIHBhY2th Z2UgaXMgaW5zdGFsbGVkIGJ5IGEgdXNlciB3aG8gY2Fubm90IHdyaXRlIGAuJw0KKyAgIyAgICAg bWFrZSBpbnN0YWxsIHdpbGwgZmFpbCwNCisgICMgIDIuIHRoZSBhYm92ZSBjb21tZW50IHNob3Vs ZCBtb3N0IGNlcnRhaW5seSByZWFkDQorICAjICAgICAkKG1rZGlyX3ApICQoREVTVERJUikkKHNv bWVkaXIpDQorICAjICAgICBzbyBpdCBkb2VzIG5vdCB3b3JrIHdoZW4gJChzb21lZGlyKSBpcyB1 bmRlZmluZWQgYW5kDQorICAjICAgICAkKERFU1RESVIpIGlzIG5vdC4NCisgICMgIFRvIHN1cHBv cnQgdGhlIGxhdHRlciBjYXNlLCB3ZSBoYXZlIHRvIHdyaXRlDQorICAjICAgICB0ZXN0IC16ICIk KHNvbWVkaXIpIiB8fCAkKG1rZGlyX3ApICQoREVTVERJUikkKHNvbWVkaXIpLA0KKyAgIyAgc28g dGhlIGAuJyB0cmljayBpcyBwb2ludGxlc3MuDQorICBta2Rpcl9wPSdta2RpciAtcCAtLScNCitl bHNlDQorICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwgdGhlIGBta2RpcicgY29tbWFuZCBk b2VzIG5vdA0KKyAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4gIEl0IHdpbGwgaW50ZXJwcmV0IGFs bCBvcHRpb25zIGFzDQorICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJvcnQg YmVjYXVzZSBgLicgYWxyZWFkeQ0KKyAgIyBleGlzdHMuDQorICBmb3IgZCBpbiAuLy1wIC4vLS12 ZXJzaW9uOw0KKyAgZG8NCisgICAgdGVzdCAtZCAkZCAmJiBybWRpciAkZA0KKyAgZG9uZQ0KKyAg IyAkKG1raW5zdGFsbGRpcnMpIGlzIGRlZmluZWQgYnkgQXV0b21ha2UgaWYgbWtpbnN0YWxsZGly cyBleGlzdHMuDQorICBpZiB0ZXN0IC1mICIkYWNfYXV4X2Rpci9ta2luc3RhbGxkaXJzIjsgdGhl bg0KKyAgICBta2Rpcl9wPSckKG1raW5zdGFsbGRpcnMpJw0KKyAgZWxzZQ0KKyAgICBta2Rpcl9w PSckKGluc3RhbGxfc2gpIC1kJw0KKyAgZmkNCitmaQ0KKw0KK2ZvciBhY19wcm9nIGluIGdhd2sg bWF3ayBuYXdrIGF3aw0KK2RvDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19w cm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lDQp3aXRoIGFyZ3MuDQorc2V0IGR1bW15 ICRhY19wcm9nOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5n IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BV0src2V0 fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQor ICBpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BV0s9IiRBV0siICMgTGV0 IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJ RlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFz X3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNf ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVz dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfQVdLPSIk YWNfcHJvZyINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBm aQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK0FXSz0k YWNfY3ZfcHJvZ19BV0sNCitpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBV0siID4mNQ0KKyRhc19lY2hv ICIkQVdLIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisN CisNCisgIHRlc3QgLW4gIiRBV0siICYmIGJyZWFrDQorZG9uZQ0KKw0KK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0N CnNldHMgXCQoTUFLRSkiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJHtNQUtF LW1ha2V9IHNldHMgXCQoTUFLRSkuLi4gIiA+JjY7IH0NCitzZXQgeCAke01BS0UtbWFrZX0NCith Y19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9n J2ANCitpZiB7IGFzX3Zhcj1hY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ7IGV2YWwgInRl c3QNClwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoNCisgICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9BQ0VPRg0K K1NIRUxMID0gL2Jpbi9zaA0KK2FsbDoNCisJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUlJScN CitfQUNFT0YNCisjIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5n Li4uIiwgd2hpY2ggd291bGQNCmNvbmZ1c2UgdXMuDQorY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNv bmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGxgIGluDQorICAqQEBAJSUlPT8qPUBAQCUlJSopDQorICAg IGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllczs7DQorICAqKQ0KKyAgICBl dmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD1ubzs7DQorZXNhYw0KK3JtIC1mIGNv bmZ0ZXN0Lm1ha2UNCitmaQ0KK2lmIGV2YWwgdGVzdCBcJGFjX2N2X3Byb2dfbWFrZV8ke2FjX21h a2V9X3NldCA9IHllczsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IHllcyIgPiY1DQorJGFzX2VjaG8gInllcyIgPiY2OyB9DQorICBTRVRf TUFLRT0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorICBTRVRfTUFLRT0iTUFL RT0ke01BS0UtbWFrZX0iDQorZmkNCisNCitybSAtcmYgLnRzdCAyPi9kZXYvbnVsbA0KK21rZGly IC50c3QgMj4vZGV2L251bGwNCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4NCisgIGFtX19sZWFkaW5n X2RvdD0uDQorZWxzZQ0KKyAgYW1fX2xlYWRpbmdfZG90PV8NCitmaQ0KK3JtZGlyIC50c3QgMj4v ZGV2L251bGwNCisNCitERVBESVI9IiR7YW1fX2xlYWRpbmdfZG90fWRlcHMiDQorDQorYWNfY29u ZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlcGZpbGVzIg0KKw0KKw0KK2FtX21h a2U9JHtNQUtFLW1ha2V9DQorY2F0ID4gY29uZmluYyA8PCAnRU5EJw0KK2FtX19kb2l0Og0KKwlA ZWNobyBkb25lDQorLlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMgSWYgd2UgZG9uJ3QgZmluZCBh biBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUgY29kZS4NCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdHlsZSBvZiBp bmNsdWRlDQp1c2VkIGJ5ICRhbV9tYWtlIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig c3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlLi4uICIgPiY2OyB9DQorYW1fX2luY2x1 ZGU9IiMiDQorYW1fX3F1b3RlPQ0KK19hbV9yZXN1bHQ9bm9uZQ0KKyMgRmlyc3QgdHJ5IEdOVSBt YWtlIHN0eWxlIGluY2x1ZGUuDQorZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNvbmZtZg0KKyMg V2UgZ3JlcCBvdXQgYEVudGVyaW5nIGRpcmVjdG9yeScgYW5kIGBMZWF2aW5nIGRpcmVjdG9yeScN CisjIG1lc3NhZ2VzIHdoaWNoIGNhbiBvY2N1ciBpZiBgdycgZW5kcyB1cCBpbiBNQUtFRkxBR1Mu DQorIyBJbiBwYXJ0aWN1bGFyIHdlIGRvbid0IGxvb2sgYXQgYF5tYWtlOicgYmVjYXVzZSBHTlUg bWFrZSBtaWdodA0KKyMgYmUgaW52b2tlZCB1bmRlciBzb21lIG90aGVyIG5hbWUgKHVzdWFsbHkg ImdtYWtlIiksIGluIHdoaWNoDQorIyBjYXNlIGl0IHByaW50cyBpdHMgbmV3IG5hbWUgaW5zdGVh ZCBvZiBgbWFrZScuDQoraWYgdGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251 bGwgfCBncmVwIC12ICdpbmcNCmRpcmVjdG9yeSdgIiA9ICJkb25lIjsgdGhlbg0KKyAgIGFtX19p bmNsdWRlPWluY2x1ZGUNCisgICBhbV9fcXVvdGU9DQorICAgX2FtX3Jlc3VsdD1HTlUNCitmaQ0K KyMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2lmIHRlc3QgIiRhbV9faW5jbHVk ZSIgPSAiIyI7IHRoZW4NCisgICBlY2hvICcuaW5jbHVkZSAiY29uZmluYyInID4gY29uZm1mDQor ICAgaWYgdGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGxgIiA9ICJkb25l IjsgdGhlbg0KKyAgICAgIGFtX19pbmNsdWRlPS5pbmNsdWRlDQorICAgICAgYW1fX3F1b3RlPSJc IiINCisgICAgICBfYW1fcmVzdWx0PUJTRA0KKyAgIGZpDQorZmkNCisNCisNCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJF9hbV9yZXN1bHQiID4mNQ0K KyRhc19lY2hvICIkX2FtX3Jlc3VsdCIgPiY2OyB9DQorcm0gLWYgY29uZmluYyBjb25mbWYNCisN CisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyB3YXMgZ2l2ZW4u DQoraWYgdGVzdCAiJHtlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZytzZXR9IiA9IHNldDsgdGhl biA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nOw0KK2ZpDQorDQor aWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBh bV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIg0KKyAgQU1ERVBCQUNLU0xBU0g9J1wnDQor ZmkNCisNCisNCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87 IHRoZW4NCisgIEFNREVQX1RSVUU9DQorICBBTURFUF9GQUxTRT0nIycNCitlbHNlDQorICBBTURF UF9UUlVFPScjJw0KKyAgQU1ERVBfRkFMU0U9DQorZmkNCisNCisNCisNCisNCisjIENoZWNrIHdo ZXRoZXIgLS1lbmFibGUtbXVsdGlsaWIgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX211 bHRpbGliK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX211bHRpbGli OyBjYXNlICIke2VuYWJsZXZhbH0iIGluDQorICB5ZXMpIG11bHRpbGliPXllcyA7Ow0KKyAgbm8p ICBtdWx0aWxpYj1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxl dmFsfSBmb3IgbXVsdGlsaWIgb3B0aW9uIg0KIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UN CisgIG11bHRpbGliPXllcw0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRhcmdl dC1vcHRzcGFjZSB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfdGFyZ2V0X29wdHNwYWNl K3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX3RhcmdldF9vcHRzcGFj ZTsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSB0YXJnZXRfb3B0c3BhY2U9eWVzIDs7 DQorICBubykgIHRhcmdldF9vcHRzcGFjZT1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFk IHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgdGFyZ2V0LW9wdHNwYWNlIG9wdGlvbiINCiIkTElORU5P IiA1IDs7DQorIGVzYWMNCitlbHNlDQorICB0YXJnZXRfb3B0c3BhY2U9DQorZmkNCisNCisjIENo ZWNrIHdoZXRoZXIgLS1lbmFibGUtbWFsbG9jLWRlYnVnZ2luZyB3YXMgZ2l2ZW4uDQoraWYgdGVz dCAiJHtlbmFibGVfbWFsbG9jX2RlYnVnZ2luZytzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFi bGV2YWw9JGVuYWJsZV9tYWxsb2NfZGVidWdnaW5nOyBjYXNlICIke2VuYWJsZXZhbH0iIGluDQor ICB5ZXMpIG1hbGxvY19kZWJ1Z2dpbmc9eWVzIDs7DQorICBubykgIG1hbGxvY19kZWJ1Z2dpbmc9 bm8gOzsNCisgICopICAgYXNfZm5fZXJyb3IgImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG1h bGxvYy1kZWJ1Z2dpbmcNCm9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisg IG1hbGxvY19kZWJ1Z2dpbmc9DQorZmkNCisNCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmV3 bGliLW11bHRpdGhyZWFkIHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9uZXdsaWJfbXVs dGl0aHJlYWQrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGli X211bHRpdGhyZWFkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluDQorICB5ZXMpIG5ld2xpYl9tdWx0 aXRocmVhZD15ZXMgOzsNCisgIG5vKSAgbmV3bGliX211bHRpdGhyZWFkPW5vIDs7DQorICAqKSAg IGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBuZXdsaWItbXVsdGl0aHJl YWQNCm9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIG5ld2xpYl9tdWx0 aXRocmVhZD15ZXMNCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXdsaWItaWNv bnYgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX25ld2xpYl9pY29uditzZXR9IiA9IHNl dDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9uZXdsaWJfaWNvbnY7IGlmIHRlc3QgIiR7 bmV3bGliX2ljb252K3NldH0iICE9DQpzZXQ7IHRoZW4NCisgICBjYXNlICIke2VuYWJsZXZhbH0i IGluDQorICAgICB5ZXMpIG5ld2xpYl9pY29udj15ZXMgOzsNCisgICAgIG5vKSAgbmV3bGliX2lj b252PW5vIDs7DQorICAgICAqKSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9 IGZvciBuZXdsaWItaWNvbnYgb3B0aW9uIg0KIiRMSU5FTk8iIDUgOzsNCisgICBlc2FjDQorIGZp DQorZWxzZQ0KKyAgbmV3bGliX2ljb252PSR7bmV3bGliX2ljb252fQ0KK2ZpDQorDQorIyBDaGVj ayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1lbGl4LWxldmVsIHdhcyBnaXZlbi4NCitpZiB0ZXN0 ICIke2VuYWJsZV9uZXdsaWJfZWxpeF9sZXZlbCtzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFi bGV2YWw9JGVuYWJsZV9uZXdsaWJfZWxpeF9sZXZlbDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0K KyAgMCkgICBuZXdsaWJfZWxpeF9sZXZlbD0wIDs7DQorICAxKSAgIG5ld2xpYl9lbGl4X2xldmVs PTEgOzsNCisgIDIpICAgbmV3bGliX2VsaXhfbGV2ZWw9MiA7Ow0KKyAgMykgICBuZXdsaWJfZWxp eF9sZXZlbD0zIDs7DQorICA0KSAgIG5ld2xpYl9lbGl4X2xldmVsPTQgOzsNCisgICopICAgYXNf Zm5fZXJyb3IgImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG5ld2xpYi1lbGl4LWxldmVsDQpv cHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfZWxpeF9sZXZl bD0wDQorZmkNCisNCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmV3bGliLWlvLWZsb2F0IHdh cyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9uZXdsaWJfaW9fZmxvYXQrc2V0fSIgPSBzZXQ7 IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX2lvX2Zsb2F0OyBjYXNlICIke2Vu YWJsZXZhbH0iIGluDQorICB5ZXMpIG5ld2xpYl9pb19mbG9hdD15ZXMgOzsNCisgIG5vKSAgbmV3 bGliX2lvX2Zsb2F0PW5vIDs7DQorICAqKSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFi bGV2YWx9IGZvciBuZXdsaWItaW8tZmxvYXQgb3B0aW9uIg0KIiRMSU5FTk8iIDUgOzsNCisgZXNh Yw0KK2Vsc2UNCisgIG5ld2xpYl9pb19mbG9hdD15ZXMNCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhl ciAtLWVuYWJsZS1uZXdsaWItc3VwcGxpZWQtc3lzY2FsbHMgd2FzIGdpdmVuLg0KK2lmIHRlc3Qg IiR7ZW5hYmxlX25ld2xpYl9zdXBwbGllZF9zeXNjYWxscytzZXR9IiA9IHNldDsgdGhlbiA6DQor ICBlbmFibGV2YWw9JGVuYWJsZV9uZXdsaWJfc3VwcGxpZWRfc3lzY2FsbHM7IGNhc2UgIiR7ZW5h YmxldmFsfSIgaW4NCisgIHllcykgbmV3bGliX21heV9zdXBwbHlfc3lzY2FsbHM9eWVzIDs7DQor ICBubykgIG5ld2xpYl9tYXlfc3VwcGx5X3N5c2NhbGxzPW5vIDs7DQorICAqKSAgIGFzX2ZuX2Vy cm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBuZXdsaWItc3VwcGxpZWQtDQpzeXNjYWxs cyBvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfbWF5X3N1 cHBseV9zeXNjYWxscz15ZXMNCitmaQ0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX21heV9z dXBwbHlfc3lzY2FsbHN9ID0geHllczsgdGhlbg0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19UUlVF PQ0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19GQUxTRT0nIycNCitlbHNlDQorICBNQVlfU1VQUExZ X1NZU0NBTExTX1RSVUU9JyMnDQorICBNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFPQ0KK2ZpDQor DQorDQorDQordGVzdCAteiAiJHt3aXRoX3RhcmdldF9zdWJkaXJ9IiAmJiB3aXRoX3RhcmdldF9z dWJkaXI9Lg0KKw0KK2lmIHRlc3QgIiR7c3JjZGlyfSIgPSAiLiI7IHRoZW4NCisgIGlmIHRlc3Qg IiR7d2l0aF90YXJnZXRfc3ViZGlyfSIgIT0gIi4iOyB0aGVuDQorICAgIG5ld2xpYl9iYXNlZGly PSIke3NyY2Rpcn0vJHt3aXRoX211bHRpc3JjdG9wfS4uLy4uLy4uLy4uIg0KKyAgZWxzZQ0KKyAg ICBuZXdsaWJfYmFzZWRpcj0iJHtzcmNkaXJ9LyR7d2l0aF9tdWx0aXNyY3RvcH0uLi8uLi8uLiIN CisgIGZpDQorZWxzZQ0KKyAgbmV3bGliX2Jhc2VkaXI9IiR7c3JjZGlyfS8uLi8uLi8uLiINCitm aQ0KKw0KKw0KKw0KKw0KKyMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJl ZA0KK2lmIHRlc3QgImBjZCAkc3JjZGlyICYmIHB3ZGAiICE9ICJgcHdkYCIgJiYNCisgICB0ZXN0 IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgInNvdXJjZSBk aXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gXCJtYWtlDQpkaXN0Y2xlYW5cIiB0aGVy ZSBmaXJzdCIgIiRMSU5FTk8iIDUNCitmaQ0KKw0KKyMgdGVzdCB3aGV0aGVyIHdlIGhhdmUgY3ln cGF0aA0KK2lmIHRlc3QgLXogIiRDWUdQQVRIX1ciOyB0aGVuDQorICBpZiAoY3lncGF0aCAtLXZl cnNpb24pID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4NCisgICAgQ1lHUEFUSF9XPSdjeWdw YXRoIC13Jw0KKyAgZWxzZQ0KKyAgICBDWUdQQVRIX1c9ZWNobw0KKyAgZmkNCitmaQ0KKw0KKw0K KyMgRGVmaW5lIHRoZSBpZGVudGl0eSBvZiB0aGUgcGFja2FnZS4NCisgUEFDS0FHRT0nbmV3bGli Jw0KKyBWRVJTSU9OPScxLjE5LjAnDQorDQorDQorIyBTb21lIHRvb2xzIEF1dG9tYWtlIG5lZWRz Lg0KKw0KK0FDTE9DQUw9JHtBQ0xPQ0FMLSIke2FtX21pc3NpbmdfcnVufWFjbG9jYWwtJHthbV9f YXBpX3ZlcnNpb259In0NCisNCisNCitBVVRPQ09ORj0ke0FVVE9DT05GLSIke2FtX21pc3Npbmdf cnVufWF1dG9jb25mIn0NCisNCisNCitBVVRPTUFLRT0ke0FVVE9NQUtFLSIke2FtX21pc3Npbmdf cnVufWF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSJ9DQorDQorDQorQVVUT0hFQURFUj0ke0FV VE9IRUFERVItIiR7YW1fbWlzc2luZ19ydW59YXV0b2hlYWRlciJ9DQorDQorDQorTUFLRUlORk89 JHtNQUtFSU5GTy0iJHthbV9taXNzaW5nX3J1bn1tYWtlaW5mbyJ9DQorDQoraW5zdGFsbF9zaD0k e2luc3RhbGxfc2gtIiRhbV9hdXhfZGlyL2luc3RhbGwtc2gifQ0KKw0KKyMgSW5zdGFsbGVkIGJp bmFyaWVzIGFyZSB1c3VhbGx5IHN0cmlwcGVkIHVzaW5nIGBzdHJpcCcgd2hlbiB0aGUgdXNlcg0K KyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBi ZSB0aGUgcmlnaHQNCisjIHRvb2wgdG8gdXNlIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25t ZW50cywgdGhlcmVmb3JlIEF1dG9tYWtlDQorIyB3aWxsIGhvbm9yIHRoZSBgU1RSSVAnIGVudmly b25tZW50IHZhcmlhYmxlIHRvIG92ZXJydWxlIHRoaXMNCnByb2dyYW0uDQoraWYgdGVzdCAiJGNy b3NzX2NvbXBpbGluZyIgIT0gbm87IHRoZW4NCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZp eCI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZp eH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhDQpwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBk dW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRh c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7 YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4NCisgIGFjX2N2 X3Byb2dfU1RSSVA9IiRTVFJJUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQor ZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGly IGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIi ICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IiAmJiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo ZW4NCisgICAgYWNfY3ZfcHJvZ19TVFJJUD0iJHthY190b29sX3ByZWZpeH1zdHJpcCINCisgICAg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRv bmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK1NUUklQPSRhY19jdl9wcm9nX1NU UklQDQoraWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRTVFJJUCIgPiY1DQorJGFzX2VjaG8gIiRTVFJJ UCIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQor ZmkNCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19TVFJJUCI7IHRoZW4NCisgIGFjX2N0X1NUUklQ PSRTVFJJUA0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJzdHJpcCIsIHNvIGl0IGNh biBiZSBhIHByb2dyYW0gbmFtZQ0Kd2l0aCBhcmdzLg0KK3NldCBkdW1teSBzdHJpcDsgYWNfd29y ZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4g IiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7 IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0 IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuDQorICBhY19jdl9wcm9nX2FjX2N0X1NUUklQPSIkYWNf Y3RfU1RSSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZQ0KdGVzdC4NCitlbHNlDQorYXNf c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgN Citkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh c190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBh Y19jdl9wcm9nX2FjX2N0X1NUUklQPSJzdHJpcCINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4m NQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZT DQorDQorZmkNCitmaQ0KK2FjX2N0X1NUUklQPSRhY19jdl9wcm9nX2FjX2N0X1NUUklQDQoraWYg dGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9TVFJJUCIgPiY1DQorJGFzX2VjaG8gIiRh Y19jdF9TVFJJUCIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2Zp DQorDQorICBpZiB0ZXN0ICJ4JGFjX2N0X1NUUklQIiA9IHg7IHRoZW4NCisgICAgU1RSSVA9Ijoi DQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4N Cit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO RzogdXNpbmcgY3Jvc3MgdG9vbHMNCm5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1 DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZp eGVkIHdpdGggaG9zdA0KdHJpcGxldCIgPiYyO30NCithY190b29sX3dhcm5lZD15ZXMgOzsNCitl c2FjDQorICAgIFNUUklQPSRhY19jdF9TVFJJUA0KKyAgZmkNCitlbHNlDQorICBTVFJJUD0iJGFj X2N2X3Byb2dfU1RSSVAiDQorZmkNCisNCitmaQ0KK0lOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCR7 U0hFTEx9IFwkKGluc3RhbGxfc2gpIC1jIC1zIg0KKw0KKyMgV2UgbmVlZCBhd2sgZm9yIHRoZSAi Y2hlY2siIHRhcmdldC4gIFRoZSBzeXN0ZW0gImF3ayIgaXMgYmFkIG9uDQorIyBzb21lIHBsYXRm b3Jtcy4NCisjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHku DQorDQorQU1UQVI9JHtBTVRBUi0iJHthbV9taXNzaW5nX3J1bn10YXIifQ0KKw0KK2FtX190YXI9 JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJw0K Kw0KKw0KKw0KKw0KKw0KKw0KKyMgRklYTUU6IFdlIHRlbXBvcmFyaWx5IGRlZmluZSBvdXIgb3du IHZlcnNpb24gb2YgQUNfUFJPR19DQy4gIFRoaXMgaXMNCisjIGNvcGllZCBmcm9tIGF1dG9jb25m IDIuMTIsIGJ1dCBkb2VzIG5vdCBjYWxsIEFDX1BST0dfQ0NfV09SS1MuICBXZQ0KKyMgYXJlIHBy b2JhYmx5IHVzaW5nIGEgY3Jvc3MgY29tcGlsZXIsIHdoaWNoIHdpbGwgbm90IGJlIGFibGUgdG8g ZnVsbHkNCisjIGxpbmsgYW4gZXhlY3V0YWJsZS4gIFRoaXMgc2hvdWxkIHJlYWxseSBiZSBmaXhl ZCBpbiBhdXRvY29uZg0KKyMgaXRzZWxmLg0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKyMgRXh0cmFj dCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp dGgNCmFyZ3MuDQorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNf ZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2Fj X2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg IiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICBhY19jdl9wcm9nX0ND PSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZl X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2Rv DQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0K KyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8N CisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rl c3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2 X3Byb2dfQ0M9ImdjYyINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAy DQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0K K0NDPSRhY19jdl9wcm9nX0NDDQoraWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1DQorJGFzX2Vj aG8gIiRDQyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQor DQorDQorDQorZGVwY2M9IiRDQyIgICBhbV9jb21waWxlcl9saXN0PQ0KKw0KK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBv Zg0KJGRlcGNjIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9m ICRkZXBjYy4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2Nv bXBpbGVyX3R5cGUrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg IiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFt X2RlcGNvbXAiOyB0aGVuDQorICAjIFdlIG1ha2UgYSBzdWJkaXIgYW5kIGRvIHRoZSB0ZXN0cyB0 aGVyZS4gIE90aGVyd2lzZSB3ZSBjYW4gZW5kIHVwDQorICAjIG1ha2luZyBib2d1cyBmaWxlcyB0 aGF0IHdlIGRvbid0IGtub3cgYWJvdXQgYW5kIG5ldmVyIHJlbW92ZS4gIEZvcg0KKyAgIyBpbnN0 YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQg dXANCisgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBt ZWFucyBgcHV0IHRoZQ0Kb3V0cHV0DQorICAjIGluIEQnLg0KKyAgbWtkaXIgY29uZnRlc3QuZGly DQorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3Qg ZmluZCBpdCBpZiB3ZSdyZQ0KKyAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4NCisgIGNw ICIkYW1fZGVwY29tcCIgY29uZnRlc3QuZGlyDQorICBjZCBjb25mdGVzdC5kaXINCisgICMgV2Ug d2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVj YXVzZQ0KKyAgIyBpdCBoZWxwcyB0byBkZXRlY3QgaW5hcHBsaWNhYmxlIGRlcGVuZGVuY3kgbW9k ZXMuICBGb3IgaW5zdGFuY2UNCisgICMgYm90aCBUcnU2NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAt TUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhDQorICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBp bGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBlbmRlbmNpZXMgaW4NCisgICMgdGhlIGN1 cnJlbnQgZGlyZWN0b3J5IHdoaWxlIFRydTY0IHdpbGwgcHV0IHRoZW0gaW4gdGhlIG9iamVjdA0K KyAgIyBkaXJlY3RvcnkuDQorICBta2RpciBzdWINCisNCisgIGFtX2N2X0NDX2RlcGVuZGVuY2ll c19jb21waWxlcl90eXBlPW5vbmUNCisgIGlmIHRlc3QgIiRhbV9jb21waWxlcl9saXN0IiA9ICIi OyB0aGVuDQorICAgICBhbV9jb21waWxlcl9saXN0PWBzZWQgLW4gJ3MvXiMqXChbYS16QS1aMC05 XSpcKSkkL1wxL3AnIDwNCi4vZGVwY29tcGANCisgIGZpDQorICBmb3IgZGVwbW9kZSBpbiAkYW1f Y29tcGlsZXJfbGlzdDsgZG8NCisgICAgIyBTZXR1cCBhIHNvdXJjZSB3aXRoIG1hbnkgZGVwZW5k ZW5jaWVzLCBiZWNhdXNlIHNvbWUgY29tcGlsZXJzDQorICAgICMgbGlrZSB0byB3cmFwIGxhcmdl IGRlcGVuZGVuY3kgbGlzdHMgb24gY29sdW1uIDgwICh3aXRoIFwpLCBhbmQNCisgICAgIyB3ZSBz aG91bGQgbm90IGNob29zZSBhIGRlcGNvbXAgbW9kZSB3aGljaCBpcyBjb25mdXNlZCBieSB0aGlz Lg0KKyAgICAjDQorICAgICMgV2UgbmVlZCB0byByZWNyZWF0ZSB0aGVzZSBmaWxlcyBmb3IgZWFj aCB0ZXN0LCBhcyB0aGUgY29tcGlsZXINCm1heQ0KKyAgICAjIG92ZXJ3cml0ZSBzb21lIG9mIHRo ZW0gd2hlbiB0ZXN0aW5nIHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVzLg0KKyAgICAjIFRoaXMg aGFwcGVucyBhdCBsZWFzdCB3aXRoIHRoZSBBSVggQyBjb21waWxlci4NCisgICAgOiA+IHN1Yi9j b25mdGVzdC5jDQorICAgIGZvciBpIGluIDEgMiAzIDQgNSA2OyBkbw0KKyAgICAgIGVjaG8gJyNp bmNsdWRlICJjb25mdHN0JyRpJy5oIicgPj4gc3ViL2NvbmZ0ZXN0LmMNCisgICAgICAjIFVzaW5n IGA6ID4gc3ViL2NvbmZ0c3QkaS5oJyBjcmVhdGVzIG9ubHkgc3ViL2NvbmZ0c3QxLmggd2l0aA0K KyAgICAgICMgU29sYXJpcyA4J3Mgey91c3IsfS9iaW4vc2guDQorICAgICAgdG91Y2ggc3ViL2Nv bmZ0c3QkaS5oDQorICAgIGRvbmUNCisgICAgZWNobyAiJHthbV9faW5jbHVkZX0gJHthbV9fcXVv dGV9c3ViL2NvbmZ0ZXN0LlBvJHthbV9fcXVvdGV9IiA+DQpjb25mbWYNCisNCisgICAgY2FzZSAk ZGVwbW9kZSBpbg0KKyAgICBub3NpZGVlZmZlY3QpDQorICAgICAgIyBhZnRlciB0aGlzIHRhZywg bWVjaGFuaXNtcyBhcmUgbm90IGJ5IHNpZGUtZWZmZWN0LCBzbyB0aGV5J2xsDQorICAgICAgIyBv bmx5IGJlIHVzZWQgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZA0KKyAgICAgIGlmIHRlc3QgIngk ZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciID0geHllczsgdGhlbg0KKwljb250aW51ZQ0KKyAg ICAgIGVsc2UNCisJYnJlYWsNCisgICAgICBmaQ0KKyAgICAgIDs7DQorICAgIG5vbmUpIGJyZWFr IDs7DQorICAgIGVzYWMNCisgICAgIyBXZSBjaGVjayB3aXRoIGAtYycgYW5kIGAtbycgZm9yIHRo ZSBzYWtlIG9mIHRoZSAiZGFzaG1zdGRvdXQiDQorICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0 aGF0IHRoZSBTdW5Qcm8gQysrIGNvbXBpbGVyIGRvZXMgbm90DQpwcm9wZXJseQ0KKyAgICAjIGhh bmRsZSBgLU0gLW8nLCBhbmQgd2UgbmVlZCB0byBkZXRlY3QgdGhpcy4NCisgICAgaWYgZGVwbW9k ZT0kZGVwbW9kZSBcDQorICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9c3ViL2Nv bmZ0ZXN0LiR7T0JKRVhULW99IFwNCisgICAgICAgZGVwZmlsZT1zdWIvY29uZnRlc3QuUG8gdG1w ZGVwZmlsZT1zdWIvY29uZnRlc3QuVFBvIFwNCisgICAgICAgJFNIRUxMIC4vZGVwY29tcCAkZGVw Y2MgLWMgLW8gc3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99DQpzdWIvY29uZnRlc3QuYyBcDQorICAg ICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJg0KKyAgICAgICBncmVwIHN1Yi9jb25m dHN0Ni5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQorICAgICAgIGdyZXAg c3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99IHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYx DQomJg0KKyAgICAgICAke01BS0UtbWFrZX0gLXMgLWYgY29uZm1mID4gL2Rldi9udWxsIDI+JjE7 IHRoZW4NCisgICAgICAjIGljYyBkb2Vzbid0IGNob2tlIG9uIHVua25vd24gb3B0aW9ucywgaXQg d2lsbCBqdXN0IGlzc3VlDQp3YXJuaW5ncw0KKyAgICAgICMgb3IgcmVtYXJrcyAoZXZlbiB3aXRo IC1XZXJyb3IpLiAgU28gd2UgZ3JlcCBzdGRlcnIgZm9yIGFueQ0KbWVzc2FnZQ0KKyAgICAgICMg dGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLg0KKyAgICAg ICMgV2hlbiBnaXZlbiAtTVAsIGljYyA3LjAgYW5kIDcuMSBjb21wbGFpbiB0aHVzbHk6DQorICAg ICAgIyAgIGljYzogQ29tbWFuZCBsaW5lIHdhcm5pbmc6IGlnbm9yaW5nIG9wdGlvbiAnLU0nOyBu byBhcmd1bWVudA0KcmVxdWlyZWQNCisgICAgICAjIFRoZSBkaWFnbm9zaXMgY2hhbmdlZCBpbiBp Y2MgOC4wOg0KKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSByZW1hcms6IG9wdGlvbiAnLU1Q JyBub3Qgc3VwcG9ydGVkDQorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRl c3QuZXJyIHx8DQorICAgICAgICAgIGdyZXAgJ25vdCBzdXBwb3J0ZWQnIGNvbmZ0ZXN0LmVycikg Pi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7DQplbHNlDQorICAgICAgICBhbV9jdl9DQ19kZXBlbmRl bmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQ0KKyAgICAgICAgYnJlYWsNCisgICAgICBmaQ0K KyAgICBmaQ0KKyAgZG9uZQ0KKw0KKyAgY2QgLi4NCisgIHJtIC1yZiBjb25mdGVzdC5kaXINCitl bHNlDQorICBhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lDQorZmkNCisN CitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0Og0K JGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA+JjUNCiskYXNfZWNobyAiJGFt X2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA+JjY7IH0NCitDQ0RFUE1PREU9ZGVw bW9kZT0kYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUNCisNCisNCisNCitpZg0K KyAgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vIFwNCisgICYmIHRl c3QgIiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzOyB0aGVuDQor ICBhbV9fZmFzdGRlcENDX1RSVUU9DQorICBhbV9fZmFzdGRlcENDX0ZBTFNFPScjJw0KK2Vsc2UN CisgIGFtX19mYXN0ZGVwQ0NfVFJVRT0nIycNCisgIGFtX19mYXN0ZGVwQ0NfRkFMU0U9DQorZmkN CisNCisNCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdv cmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgNCmFyZ3MuDQorc2V0 IGR1bW15IGNjOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5n IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9 IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisg IGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhl IHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KKyAgYWNfcHJvZ19yZWplY3RlZD1ubw0K K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQ QVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNp b25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm JiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisg ICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2Mi OyB0aGVuDQorICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzDQorICAgICAgIGNvbnRpbnVlDQor ICAgICBmaQ0KKyAgICBhY19jdl9wcm9nX0NDPSJjYyINCisgICAgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVf SUZTDQorDQoraWYgdGVzdCAkYWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbg0KKyAgIyBXZSBm b3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0Lg0K KyAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDDQorICBzaGlmdA0KKyAgaWYgdGVzdCAkIyAhPSAw OyB0aGVuDQorICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9n dXMgb25lLg0KKyAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28gdGhl IGJvZ29uIHdpbGwgYmUgY2hvc2VuDQorICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3Qg dGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLg0KKyAgICBzaGlmdA0KKyAgICBh Y19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193b3JkJHsxKycgJ30kQCINCisgIGZpDQorZmkNCitm aQ0KK2ZpDQorQ0M9JGFjX2N2X3Byb2dfQ0MNCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUN CiskYXNfZWNobyAiJENDIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9 DQorZmkNCisNCisNCisgIHRlc3QgLXogIiRDQyIgJiYgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFi bGUgY2MgZm91bmQgaW4gXCRQQVRIIg0KIiRMSU5FTk8iIDUNCitmaQ0KKw0KK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNp bmcNCkdOVSBDIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2lu ZyBHTlUgQy4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0 fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQor ICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GDQorI2lmZGVmIF9fR05VQ19fDQorICB5ZXM7DQorI2Vu ZGlmDQorRU9GDQoraWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMnDQorICB7IHsg ZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfdHJ5XCIi OyB9ID4mNQ0KKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQ0KKyAgYWNfc3RhdHVzPSQ/DQorICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUN CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYx OyB0aGVuDQorICBhY19jdl9jX2NvbXBpbGVyX2dudT15ZXMNCitlbHNlDQorICBhY19jdl9jX2Nv bXBpbGVyX2dudT1ubw0KK2ZpDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDoNCiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1DQorJGFzX2VjaG8g IiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9DQorDQoraWYgdGVzdCAkYWNfY3ZfY19jb21w aWxlcl9nbnUgPSB5ZXM7IHRoZW4NCisgIEdDQz15ZXMNCisgIGFjX3Rlc3RfQ0ZMQUdTPSIke0NG TEFHUytzZXR9Ig0KKyAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiDQorICBhY190ZXN0X0NGTEFH Uz0ke0NGTEFHUytzZXR9DQorYWNfc2F2ZV9DRkxBR1M9JENGTEFHUw0KK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cw0K LWciID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4g IiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytzZXR9IiA9IHNldDsgdGhlbiA6 DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGFjX3NhdmVfY193ZXJy b3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZw0KKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9eWVzDQorICAg YWNfY3ZfcHJvZ19jY19nPW5vDQorICAgQ0ZMQUdTPSItZyINCisgICBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0DQorLyogZW5kIGNvbmZkZWZzLmguICAqLw0KKw0K K2ludA0KK21haW4gKCkNCit7DQorDQorICA7DQorICByZXR1cm4gMDsNCit9DQorX0FDRU9GDQor aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOg0KKyAgYWNfY3ZfcHJvZ19j Y19nPXllcw0KK2Vsc2UNCisgIENGTEFHUz0iIg0KKyAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQNCisvKiBlbmQgY29uZmRlZnMuaC4gICovDQorDQoraW50 DQorbWFpbiAoKQ0KK3sNCisNCisgIDsNCisgIHJldHVybiAwOw0KK30NCitfQUNFT0YNCitpZiBh Y19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6DQorDQorZWxzZQ0KKyAgYWNfY193 ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnDQorCSBDRkxBR1M9Ii1nIg0KKwkgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8NCisNCitpbnQNCittYWluICgpDQorew0KKw0KKyAgOw0KKyAgcmV0dXJuIDA7DQor fQ0KK19BQ0VPRg0KK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoNCisg IGFjX2N2X3Byb2dfY2NfZz15ZXMNCitmaQ0KK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dA0KK2ZpDQorcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0DQorZmkNCitybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQNCisg ICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcNCitmaQ0KK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19n IiA+JjUNCiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfZyIgPiY2OyB9DQoraWYgdGVzdCAiJGFj X3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbg0KKyAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUw0KK2Vs aWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuDQorICBpZiB0ZXN0ICIkR0NDIiA9 IHllczsgdGhlbg0KKyAgICBDRkxBR1M9Ii1nIC1PMiINCisgIGVsc2UNCisgICAgQ0ZMQUdTPSIt ZyINCisgIGZpDQorZWxzZQ0KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4NCisgICAgQ0ZM QUdTPSItTzIiDQorICBlbHNlDQorICAgIENGTEFHUz0NCisgIGZpDQorZmkNCisgIGlmIHRlc3Qg IiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4NCisgICAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxB R1MiDQorICBlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbg0KKyAgICBDRkxB R1M9Ii1nIC1PMiINCisgIGVsc2UNCisgICAgQ0ZMQUdTPSItTzIiDQorICBmaQ0KK2Vsc2UNCisg IEdDQz0NCisgIHRlc3QgIiR7Q0ZMQUdTK3NldH0iID0gc2V0IHx8IENGTEFHUz0iLWciDQorZmkN CisNCisNCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuDQorICAjIEV4dHJhY3Qg dGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXMiLCBzbyBpdCBjYW4gYmUgYQ0K cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hczsg YWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dv cmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVMrc2V0fSIgPSBzZXQ7IHRo ZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1u ICIkQVMiOyB0aGVuDQorICBhY19jdl9wcm9nX0FTPSIkQVMiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0 ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfQVM9IiR7YWNfdG9vbF9wcmVmaXh9 YXMiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQok YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitk b25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitBUz0kYWNfY3Zf cHJvZ19BUw0KK2lmIHRlc3QgLW4gIiRBUyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQVMiID4mNQ0KKyRhc19lY2hvICIkQVMiID4m NjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KK2ZpDQor aWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVMiOyB0aGVuDQorICBhY19jdF9BUz0kQVMNCisgICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXMiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5h bWUgd2l0aA0KYXJncy4NCitzZXQgZHVtbXkgYXM7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAi JHthY19jdl9wcm9nX2FjX2N0X0FTK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FTIjsgdGhlbg0K KyAgYWNfY3ZfcHJvZ19hY19jdF9BUz0iJGFjX2N0X0FTIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP Ug0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X0FTPSJhcyINCisgICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUN CitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK2FjX2N0X0FTPSRhY19jdl9wcm9nX2Fj X2N0X0FTDQoraWYgdGVzdCAtbiAiJGFjX2N0X0FTIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9BUyIgPiY1DQorJGFzX2Vj aG8gIiRhY19jdF9BUyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0K K2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFjX2N0X0FTIiA9IHg7IHRoZW4NCisgICAgQVM9IiINCisg IGVsc2UNCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbg0KK3ll czopDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1 c2luZyBjcm9zcyB0b29scw0Kbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCisk YXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg d2l0aCBob3N0DQp0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXllcyA7Ow0KK2VzYWMN CisgICAgQVM9JGFjX2N0X0FTDQorICBmaQ0KK2Vsc2UNCisgIEFTPSIkYWNfY3ZfcHJvZ19BUyIN CitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMgRXh0cmFj dCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBh DQpwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFy OyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNf d29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsg dGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3Qg LW4gIiRBUiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfQVI9IiRBUiIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisg IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZp eH1hciINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQN CiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0K K2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK0FSPSRhY19j dl9wcm9nX0FSDQoraWYgdGVzdCAtbiAiJEFSIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBUiIgPiY1DQorJGFzX2VjaG8gIiRBUiIg PiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorZmkN CitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4NCisgIGFjX2N0X0FSPSRBUg0KKyAg IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoDQphcmdzLg0KK3NldCBkdW1teSBhcjsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUN CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0 ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVu DQorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0 ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIg0KKyAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZA0KJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9u ZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfQVI9JGFjX2N2X3Byb2df YWNfY3RfQVINCitpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuDQorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUNCiskYXNf ZWNobyAiJGFjX2N0X0FSIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9 DQorZmkNCisNCisgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbg0KKyAgICBBUj0iIg0K KyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluDQor eWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IHVzaW5nIGNyb3NzIHRvb2xzDQpub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQ0K KyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhl ZCB3aXRoIGhvc3QNCnRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7DQorZXNh Yw0KKyAgICBBUj0kYWNfY3RfQVINCisgIGZpDQorZWxzZQ0KKyAgQVI9IiRhY19jdl9wcm9nX0FS Ig0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBFeHRy YWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNh biBiZQ0KYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJl Zml4fXJhbmxpYjsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2lu ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkFOTElC K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxz ZQ0KKyAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfUkFOTElCPSIk UkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2 ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitk bw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4N CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv DQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190 ZXN0X3gNCiIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19j dl9wcm9nX1JBTkxJQj0iJHthY190b29sX3ByZWZpeH1yYW5saWIiDQorICAgICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRh c19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitSQU5MSUI9JGFjX2N2X3Byb2dfUkFOTElCDQoraWYg dGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkUkFOTElCIiA+JjUNCiskYXNfZWNobyAiJFJBTkxJQiIgPiY2 OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorZmkNCitp ZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19SQU5MSUIiOyB0aGVuDQorICBhY19jdF9SQU5MSUI9JFJB TkxJQg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4g YmUgYSBwcm9ncmFtIG5hbWUNCndpdGggYXJncy4NCitzZXQgZHVtbXkgcmFubGliOyBhY193b3Jk PSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAi ID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrc2V0fSIgPSBzZXQ7 IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0 IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IiRh Y19jdF9SQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZQ0KdGVzdC4NCitlbHNlDQor YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBB VEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf ZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYm ICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAg ICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIg0KKyAgICAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZA0KJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2 ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJ Qg0KK2lmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X1JBTkxJQiIgPiY1DQorJGFz X2VjaG8gIiRhY19jdF9SQU5MSUIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+ JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9SQU5MSUIiID0geDsgdGhlbg0KKyAg ICBSQU5MSUI9IjoiDQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9v bF93YXJuZWQgaW4NCit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMNCm5vdCBwcmVmaXhlZCB3aXRoIGhvc3Qg dHJpcGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9v bHMgbm90IHByZWZpeGVkIHdpdGggaG9zdA0KdHJpcGxldCIgPiYyO30NCithY190b29sX3dhcm5l ZD15ZXMgOzsNCitlc2FjDQorICAgIFJBTkxJQj0kYWNfY3RfUkFOTElCDQorICBmaQ0KK2Vsc2UN CisgIFJBTkxJQj0iJGFjX2N2X3Byb2dfUkFOTElCIg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFj X3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2Fj X3Rvb2xfcHJlZml4fXJlYWRlbGYiLCBzbyBpdCBjYW4gYmUNCmEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4NCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yZWFkZWxmOyBhY193b3JkPSQyDQor eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj X3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg fQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19SRUFERUxGK3NldH0iID0gc2V0OyB0aGVuIDoNCisg ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJFJFQURF TEYiOyB0aGVuDQorICBhY19jdl9wcm9nX1JFQURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lG Uw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX1JFQURFTEY9IiR7YWNf dG9vbF9wcmVmaXh9cmVhZGVsZiINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBi cmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkN CitmaQ0KK1JFQURFTEY9JGFjX2N2X3Byb2dfUkVBREVMRg0KK2lmIHRlc3QgLW4gIiRSRUFERUxG IjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRSRUFERUxGIiA+JjUNCiskYXNfZWNobyAiJFJFQURFTEYiID4mNjsgfQ0KK2Vsc2UNCisg IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KK2ZpDQoraWYgdGVzdCAteiAiJGFj X2N2X3Byb2dfUkVBREVMRiI7IHRoZW4NCisgIGFjX2N0X1JFQURFTEY9JFJFQURFTEYNCisgICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmVhZGVsZiIsIHNvIGl0IGNhbiBiZSBhIHByb2dy YW0gbmFtZQ0Kd2l0aCBhcmdzLg0KK3NldCBkdW1teSByZWFkZWxmOyBhY193b3JkPSQyDQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dv cmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0K K2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGK3NldH0iID0gc2V0OyB0aGVuIDoN CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFj X2N0X1JFQURFTEYiOyB0aGVuDQorICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9S RUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZQ0KdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3Nh dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQor ZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0u DQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk bw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNf dGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNf Y3ZfcHJvZ19hY19jdF9SRUFERUxGPSJyZWFkZWxmIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZA0KJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg PiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9J RlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfUkVBREVMRj0kYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxG DQoraWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X1JFQURFTEYiID4mNQ0KKyRh c19lY2hvICIkYWNfY3RfUkVBREVMRiIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8i ID4mNjsgfQ0KK2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFjX2N0X1JFQURFTEYiID0geDsgdGhlbg0K KyAgICBSRUFERUxGPSI6Ig0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFj X3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzDQpub3QgcHJlZml4ZWQgd2l0aCBo b3N0IHRyaXBsZXQiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3Nz IHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QNCnRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93 YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBSRUFERUxGPSRhY19jdF9SRUFERUxGDQorICBmaQ0K K2Vsc2UNCisgIFJFQURFTEY9IiRhY19jdl9wcm9nX1JFQURFTEYiDQorZmkNCisNCisNCisNCisN CisjIEhhY2sgdG8gZW5zdXJlIHRoYXQgSU5TVEFMTCB3b24ndCBiZSBzZXQgdG8gIi4uLyIgd2l0 aCBhdXRvY29uZg0KMi4xMy4gICovDQorYWNfZ2l2ZW5fSU5TVEFMTD0kSU5TVEFMTA0KKw0KK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0 byBlbmFibGUNCm1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzIiA+JjUN CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNp ZmljIHBvcnRpb25zIG9mDQpNYWtlZmlsZXMuLi4gIiA+JjY7IH0NCisgICAgIyBDaGVjayB3aGV0 aGVyIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFi bGVfbWFpbnRhaW5lcl9tb2RlK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5h YmxlX21haW50YWluZXJfbW9kZTsgVVNFX01BSU5UQUlORVJfTU9ERT0kZW5hYmxldmFsDQorZWxz ZQ0KKyAgVVNFX01BSU5UQUlORVJfTU9ERT1ubw0KK2ZpDQorDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDoNCiRVU0VfTUFJTlRBSU5FUl9NT0RFIiA+ JjUNCiskYXNfZWNobyAiJFVTRV9NQUlOVEFJTkVSX01PREUiID4mNjsgfQ0KKw0KKw0KK2lmIHRl c3QgJFVTRV9NQUlOVEFJTkVSX01PREUgPSB5ZXM7IHRoZW4NCisgIE1BSU5UQUlORVJfTU9ERV9U UlVFPQ0KKyAgTUFJTlRBSU5FUl9NT0RFX0ZBTFNFPScjJw0KK2Vsc2UNCisgIE1BSU5UQUlORVJf TU9ERV9UUlVFPScjJw0KKyAgTUFJTlRBSU5FUl9NT0RFX0ZBTFNFPQ0KK2ZpDQorDQorICBNQUlO VD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUNCisNCisNCisjIEJ5IGRlZmF1bHQgd2Ugc2ltcGx5IHVz ZSB0aGUgQyBjb21waWxlciB0byBidWlsZCBhc3NlbWJseSBjb2RlLg0KKw0KK3Rlc3QgIiR7Q0NB UytzZXR9IiA9IHNldCB8fCBDQ0FTPSRDQw0KK3Rlc3QgIiR7Q0NBU0ZMQUdTK3NldH0iID0gc2V0 IHx8IENDQVNGTEFHUz0kQ0ZMQUdTDQorDQorDQorDQorDQorIyBXZSBuZWVkIEFDX0VYRUVYVCB0 byBrZWVwIGF1dG9tYWtlIGhhcHB5IGluIGN5Z251cyBtb2RlLiAgSG93ZXZlciwNCisjIGF0IGxl YXN0IGN1cnJlbnRseSwgd2UgbmV2ZXIgYWN0dWFsbHkgYnVpbGQgYSBwcm9ncmFtLCBzbyB3ZSBu ZXZlcg0KKyMgbmVlZCB0byB1c2UgJChFWEVFWFQpLiAgTW9yZW92ZXIsIHRoZSB0ZXN0IGZvciBF WEVFWFQgbm9ybWFsbHkNCisjIGZhaWxzLCBiZWNhdXNlIHdlIGFyZSBwcm9iYWJseSBjb25maWd1 cmluZyB3aXRoIGEgY3Jvc3MgY29tcGlsZXINCisjIHdoaWNoIGNhbid0IGNyZWF0ZSBleGVjdXRh Ymxlcy4gIFNvIHdlIGluY2x1ZGUgQUNfRVhFRVhUIHRvIGtlZXANCisjIGF1dG9tYWtlIGhhcHB5 LCBidXQgd2UgZG9uJ3QgZXhlY3V0ZSBpdCwgc2luY2Ugd2UgZG9uJ3QgY2FyZSBhYm91dA0KKyMg dGhlIHJlc3VsdC4NCitpZiBmYWxzZTsgdGhlbg0KKw0KKyAgZHVtbXlfdmFyPTENCitmaQ0KKw0K Ky4gJHtuZXdsaWJfYmFzZWRpcn0vY29uZmlndXJlLmhvc3QNCisNCituZXdsaWJfY2ZsYWdzPSIk e25ld2xpYl9jZmxhZ3N9IC1mbm8tYnVpbHRpbiINCisNCitORVdMSUJfQ0ZMQUdTPSR7bmV3bGli X2NmbGFnc30NCisNCisNCitOT19JTkNMVURFX0xJU1Q9JHtub2luY2x1ZGV9DQorDQorDQorTERG TEFHUz0ke2xkZmxhZ3N9DQorDQorDQorDQorDQoraWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZl bH0gPSB4MDsgdGhlbg0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9DQorICBFTElYX0xFVkVMXzBfRkFM U0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzBf RkFMU0U9DQorZmkNCisNCisNCisNCitpZiB0ZXN0IHgke25ld2xpYl9lbGl4X2xldmVsfSA9IHgx OyB0aGVuDQorICBFTElYX0xFVkVMXzFfVFJVRT0NCisgIEVMSVhfTEVWRUxfMV9GQUxTRT0nIycN CitlbHNlDQorICBFTElYX0xFVkVMXzFfVFJVRT0nIycNCisgIEVMSVhfTEVWRUxfMV9GQUxTRT0N CitmaQ0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX2VsaXhfbGV2ZWx9ID0geDI7IHRoZW4N CisgIEVMSVhfTEVWRUxfMl9UUlVFPQ0KKyAgRUxJWF9MRVZFTF8yX0ZBTFNFPScjJw0KK2Vsc2UN CisgIEVMSVhfTEVWRUxfMl9UUlVFPScjJw0KKyAgRUxJWF9MRVZFTF8yX0ZBTFNFPQ0KK2ZpDQor DQorDQorDQoraWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MzsgdGhlbg0KKyAgRUxJ WF9MRVZFTF8zX1RSVUU9DQorICBFTElYX0xFVkVMXzNfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJ WF9MRVZFTF8zX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzNfRkFMU0U9DQorZmkNCisNCisNCisN CitpZiB0ZXN0IHgke25ld2xpYl9lbGl4X2xldmVsfSA9IHg0OyB0aGVuDQorICBFTElYX0xFVkVM XzRfVFJVRT0NCisgIEVMSVhfTEVWRUxfNF9GQUxTRT0nIycNCitlbHNlDQorICBFTElYX0xFVkVM XzRfVFJVRT0nIycNCisgIEVMSVhfTEVWRUxfNF9GQUxTRT0NCitmaQ0KKw0KKw0KKw0KKw0KK2lm IHRlc3QgeCR7dXNlX2xpYnRvb2x9ID0geHllczsgdGhlbg0KKyAgVVNFX0xJQlRPT0xfVFJVRT0N CisgIFVTRV9MSUJUT09MX0ZBTFNFPScjJw0KK2Vsc2UNCisgIFVTRV9MSUJUT09MX1RSVUU9JyMn DQorICBVU0VfTElCVE9PTF9GQUxTRT0NCitmaQ0KKw0KKw0KKyMgSGFyZC1jb2RlIE9CSkVYVC4g IE5vcm1hbGx5IGl0IGlzIHNldCBieSBBQ19PQkpFWFQsIGJ1dCB3ZQ0KKyMgdXNlIG9leHQsIHdo aWNoIGlzIHNldCBpbiBjb25maWd1cmUuaG9zdCBiYXNlZCBvbiB0aGUgdGFyZ2V0DQpwbGF0Zm9y bS4NCitPQkpFWFQ9JHtvZXh0fQ0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KK2Fj X2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSINCisNCitjYXQgPmNvbmZj YWNoZSA8PFxfQUNFT0YNCisjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hl cyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUNCisjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBz byB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUNCisjIHNjcmlwdHMgYW5kIGNv bmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLg0KKyMg SXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0 cyB5b3UgZG9uJ3QNCisjIHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4N CisjDQorIyBjb25maWcuc3RhdHVzIG9ubHkgcGF5cyBhdHRlbnRpb24gdG8gdGhlIGNhY2hlIGZp bGUgaWYgeW91IGdpdmUgaXQNCisjIHRoZSAtLXJlY2hlY2sgb3B0aW9uIHRvIHJlcnVuIGNvbmZp Z3VyZS4NCisjDQorIyBgYWNfY3ZfZW52X2ZvbycgdmFyaWFibGVzIChzZXQgb3IgdW5zZXQpIHdp bGwgYmUgb3ZlcnJpZGRlbiB3aGVuDQorIyBsb2FkaW5nIHRoaXMgZmlsZSwgb3RoZXIgKnVuc2V0 KiBgYWNfY3ZfZm9vJyB3aWxsIGJlIGFzc2lnbmVkIHRoZQ0KKyMgZm9sbG93aW5nIHZhbHVlcy4N CisNCitfQUNFT0YNCisNCisjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hl IG1pc2hhbmRsZXMgbmV3bGluZXMgaW4NCnZhbHVlcywNCisjIGJ1dCB3ZSBrbm93IG9mIG5vIHdv cmthcm91bmQgdGhhdCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQNCmVmZmljaWVudC4NCisjIFNv LCB3ZSBraWxsIHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xpbmVzLg0KKyMgVWx0cml4IHNoIHNl dCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LA0KKyMg YW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBmaWxlIHVubGVzcyB3ZSBhc3NpZ24g dG8gdGhlDQp2YXJzLg0KKygNCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4g J3MvXlwoW2EtekEtWl9dW2EtekEtWjAtDQo5X10qXCk9LiovXDEvcCdgOyBkbw0KKyAgICBldmFs IGFjX3ZhbD1cJCRhY192YXINCisgICAgY2FzZSAkYWNfdmFsIGluICMoDQorICAgICoke2FzX25s fSopDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoDQorICAgICAgKl9jdl8qKSB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlDQp2YXJpYWJsZSAk YWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiDQo+JjI7fSA7Ow0K KyAgICAgIGVzYWMNCisgICAgICBjYXNlICRhY192YXIgaW4gIygNCisgICAgICBfIHwgSUZTIHwg YXNfbmwpIDs7ICMoDQorICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zh cj0gOzsgIygNCisgICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7Ow0K KyAgICAgIGVzYWMgOzsNCisgICAgZXNhYw0KKyAgZG9uZQ0KKw0KKyAgKHNldCkgMj4mMSB8DQor ICAgIGNhc2UgJGFzX25sYChhY19zcGFjZT0nICc7IHNldCkgMj4mMWAgaW4gIygNCisgICAgKiR7 YXNfbmx9YWNfc3BhY2U9XCAqKQ0KKyAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVj dGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUNCisgICAgICAjIHN1YnN0aXR1dGlvbiB0 dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcLg0KKyAgICAgIHNlZCAt biBcDQorCSJzLycvJ1xcXFwnJy9nOw0KKwkgDQpzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tf JGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiDQorICAgICAgOzsgIygNCisg ICAgKikNCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9T SVgsIHNvIGRvIG5vdCBhZGQNCnF1b3Rlcy4NCisgICAgICBzZWQgLW4gIi9eW18kYXNfY3JfYWxu dW1dKl9jdl9bXyRhc19jcl9hbG51bV0qPS9wIg0KKyAgICAgIDs7DQorICAgIGVzYWMgfA0KKyAg ICBzb3J0DQorKSB8DQorICBzZWQgJw0KKyAgICAgL15hY19jdl9lbnZfL2IgZW5kDQorICAgICB0 IGNsZWFyDQorICAgICA6Y2xlYXINCisgICAgIHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rl c3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8NCisgICAgIHQgZW5kDQorICAgICBzL15cKFtePV0q XCk9XCguKlwpJC9cMT0ke1wxPVwyfS8NCisgICAgIDplbmQnID4+Y29uZmNhY2hlDQoraWYgZGlm ZiAiJGNhY2hlX2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQ0K KyAgaWYgdGVzdCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuDQorICAgIHRlc3QgIngkY2FjaGVfZmls ZSIgIT0gIngvZGV2L251bGwiICYmDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiB1cGRhdGluZyBjYWNoZQ0KJGNhY2hlX2ZpbGUiID4mNQ0KKyRhc19lY2hv ICIkYXNfbWU6IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAgICBjYXQgY29u ZmNhY2hlID4kY2FjaGVfZmlsZQ0KKyAgZWxzZQ0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlDQpjYWNoZSAkY2FjaGVf ZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2Fj aGUgJGNhY2hlX2ZpbGUiID4mNjt9DQorICBmaQ0KK2ZpDQorcm0gLWYgY29uZmNhY2hlDQorDQor dGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeA0KKyMg TGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJlZml4Lg0KK3Rlc3QgIngkZXhlY19wcmVmaXgiID0geE5P TkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScNCisNCisjIFRyYW5zZm9ybSBjb25mZGVmcy5o IGludG8gREVGUy4NCisjIFByb3RlY3QgYWdhaW5zdCBzaGVsbCBleHBhbnNpb24gd2hpbGUgZXhl Y3V0aW5nIE1ha2VmaWxlIHJ1bGVzLg0KKyMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3Jv IGV4cGFuc2lvbi4NCisjDQorIyBJZiB0aGUgZmlyc3Qgc2VkIHN1YnN0aXR1dGlvbiBpcyBleGVj dXRlZCAod2hpY2ggbG9va3MgZm9yIG1hY3Jvcw0KdGhhdA0KKyMgdGFrZSBhcmd1bWVudHMpLCB0 aGVuIGJyYW5jaCB0byB0aGUgcXVvdGUgc2VjdGlvbi4gIE90aGVyd2lzZSwNCisjIGxvb2sgZm9y IGEgbWFjcm8gdGhhdCBkb2Vzbid0IHRha2UgYXJndW1lbnRzLg0KK2FjX3NjcmlwdD0nDQorOm1s aW5lDQorL1xcJC97DQorIE4NCisgcyxcXFxuLCwNCisgYiBtbGluZQ0KK30NCit0IGNsZWFyDQor OmNsZWFyDQorcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSAoXVteCQ0KKF0qKFte KV0qKVwpWwkgXSpcKC4qXCkvLURcMT1cMi9nDQordCBxdW90ZQ0KK3MvXlsJIF0qI1sJIF0qZGVm aW5lWwkgXVsJIF0qXChbXgkgXVteCQ0KXSpcKVsJIF0qXCguKlwpLy1EXDE9XDIvZw0KK3QgcXVv dGUNCitiIGFueQ0KKzpxdW90ZQ0KK3MvWwkgYH4jJF4mKigpe31cXHw7J1wnJyI8Pj9dL1xcJi9n DQorcy9cWy9cXCYvZw0KK3MvXF0vXFwmL2cNCitzL1wkLyQkL2cNCitIDQorOmFueQ0KKyR7DQor CWcNCisJcy9eXG4vLw0KKwlzL1xuLyAvZw0KKwlwDQorfQ0KKycNCitERUZTPWBzZWQgLW4gIiRh Y19zY3JpcHQiIGNvbmZkZWZzLmhgDQorDQorDQorYWNfbGlib2Jqcz0NCithY19sdGxpYm9ianM9 DQorZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRp bnVlDQorICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBpbnN0 YWxsZWQuDQorICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycNCisg IGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBzZWQgIiRhY19zY3JpcHQiYA0KKyAgIyAyLiBQcmVw ZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUg0K KyAgIyAgICB3aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0 cyBhcmUgYnVpbHQuDQorICBhc19mbl9hcHBlbmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0k YWNfaVwkVS4kYWNfb2JqZXh0Ig0KKyAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJ Qk9CSkRJUn0kYWNfaSInJFUubG8nDQorZG9uZQ0KK0xJQk9CSlM9JGFjX2xpYm9ianMNCisNCitM VExJQk9CSlM9JGFjX2x0bGlib2Jqcw0KKw0KKw0KK2lmIHRlc3QgLXogIiR7TUFZX1NVUFBMWV9T WVNDQUxMU19UUlVFfSIgJiYgdGVzdCAteg0KIiR7TUFZX1NVUFBMWV9TWVNDQUxMU19GQUxTRX0i OyB0aGVuDQorICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNQVlfU1VQUExZX1NZU0NBTExT XCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMg b25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3Qg LXogIiR7QU1ERVBfVFJVRX0iICYmIHRlc3QgLXogIiR7QU1ERVBfRkFMU0V9IjsgdGhlbg0KKyAg YXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitV c3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxs eS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9 IiAmJiB0ZXN0IC16DQoiJHthbV9fZmFzdGRlcENDX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vy cm9yICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitV c3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxs eS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtNQUlOVEFJTkVSX01PREVfVFJV RX0iICYmIHRlc3QgLXoNCiIke01BSU5UQUlORVJfTU9ERV9GQUxTRX0iOyB0aGVuDQorICBhc19m bl9lcnJvciAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVSX01PREVcIiB3YXMgbmV2ZXIgZGVmaW5l ZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0 aW9uYWxseS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzBf VFJVRX0iICYmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8wX0ZBTFNFfSI7DQp0aGVuDQorICBhc19m bl9lcnJvciAiY29uZGl0aW9uYWwgXCJFTElYX0xFVkVMXzBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4N CitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9u YWxseS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzFfVFJV RX0iICYmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8xX0ZBTFNFfSI7DQp0aGVuDQorICBhc19mbl9l cnJvciAiY29uZGl0aW9uYWwgXCJFTElYX0xFVkVMXzFcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitV c3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxs eS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzJfVFJVRX0i ICYmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8yX0ZBTFNFfSI7DQp0aGVuDQorICBhc19mbl9lcnJv ciAiY29uZGl0aW9uYWwgXCJFTElYX0xFVkVMXzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3Vh bGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4i DQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzNfVFJVRX0iICYm IHRlc3QgLXogIiR7RUxJWF9MRVZFTF8zX0ZBTFNFfSI7DQp0aGVuDQorICBhc19mbl9lcnJvciAi Y29uZGl0aW9uYWwgXCJFTElYX0xFVkVMXzNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5 IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iDQoi JExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzRfVFJVRX0iICYmIHRl c3QgLXogIiR7RUxJWF9MRVZFTF80X0ZBTFNFfSI7DQp0aGVuDQorICBhc19mbl9lcnJvciAiY29u ZGl0aW9uYWwgXCJFTElYX0xFVkVMXzRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRo aXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iDQoiJExJ TkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtVU0VfTElCVE9PTF9UUlVFfSIgJiYgdGVzdCAt eiAiJHtVU0VfTElCVE9PTF9GQUxTRX0iOw0KdGhlbg0KKyAgYXNfZm5fZXJyb3IgImNvbmRpdGlv bmFsIFwiVVNFX0xJQlRPT0xcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVh bnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iDQoiJExJTkVOTyIg NQ0KK2ZpDQorDQorOiAke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQ0KK2FjX3dyaXRl X2ZhaWw9MA0KK2FjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzDQorYWNfY2xlYW5f ZmlsZXM9IiRhY19jbGVhbl9maWxlcyAkQ09ORklHX1NUQVRVUyINCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjUNCisk YXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY2O30NCithc193cml0 ZV9mYWlsPTANCitjYXQgPiRDT05GSUdfU1RBVFVTIDw8X0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9 MQ0KKyMhICRTSEVMTA0KKyMgR2VuZXJhdGVkIGJ5ICRhc19tZS4NCisjIFJ1biB0aGlzIGZpbGUg dG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4NCisjIENvbXBpbGVyIG91dHB1 dCBwcm9kdWNlZCBieSBjb25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nDQorIyBjb25maWd1 cmUsIGlzIGluIGNvbmZpZy5sb2cgaWYgaXQgZXhpc3RzLg0KKw0KK2RlYnVnPWZhbHNlDQorYWNf Y3NfcmVjaGVjaz1mYWxzZQ0KK2FjX2NzX3NpbGVudD1mYWxzZQ0KKw0KK1NIRUxMPVwke0NPTkZJ R19TSEVMTC0kU0hFTEx9DQorZXhwb3J0IFNIRUxMDQorX0FTRU9GDQorY2F0ID4+JENPTkZJR19T VEFUVVMgPDxcX0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQ0KKyMjIC0tLS0tLS0tLS0tLS0tLS0t LS0tICMjDQorIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0t LS0tLSAjIw0KKw0KKyMgQmUgbW9yZSBCb3VybmUgY29tcGF0aWJsZQ0KK0RVQUxDQVNFPTE7IGV4 cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gNCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3Nl dH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCjoNCisgIGVtdWxhdGUg c2gNCisgIE5VTExDTUQ9Og0KKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNw bGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoDQorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2Fn ZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLg0KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCIn DQorICBzZXRvcHQgTk9fR0xPQl9TVUJTVA0KK2Vsc2UNCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rl di9udWxsYCBpbiAjKA0KKyAgKnBvc2l4KikgOg0KKyAgICBzZXQgLW8gcG9zaXggOzsgIygNCisg ICopIDoNCisgICAgIDs7DQorZXNhYw0KK2ZpDQorDQorDQorYXNfbmw9Jw0KKycNCitleHBvcnQg YXNfbmwNCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9i aW4vcHJpbnRmLg0KK2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwNClxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXCcNCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hv JGFzX2VjaG8NCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2Vj aG8kYXNfZWNobw0KKyMgUHJlZmVyIGEga3NoIHNoZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5h bCBwcmludGYgcHJvZ3JhbSBvbg0KU29sYXJpcywNCisjIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9y a3MgZm9yIGJhc2ggb3IgenNoLg0KK2lmIHRlc3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJ T04iIFwNCisgICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2Vj aG8iKSAyPi9kZXYvbnVsbDsNCnRoZW4NCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJw0KKyAgYXNf ZWNob19uPSdwcmludCAtcm4gLS0nDQorZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9g IiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfZWNobz0ncHJpbnRmICVz XG4nDQorICBhc19lY2hvX249J3ByaW50ZiAlcycNCitlbHNlDQorICBpZiB0ZXN0ICJYYCgvdXNy L3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbg0KJGFzX2VjaG8i OyB0aGVuDQorICAgIGFzX2VjaG9fYm9keT0nZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19u bCInDQorICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicNCisgIGVsc2UNCisgICAgYXNf ZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxcKC4qXFwpIicNCisgICAgYXNfZWNob19u X2JvZHk9J2V2YWwNCisgICAgICBhcmc9JDE7DQorICAgICAgY2FzZSAkYXJnIGluICMoDQorICAg ICAgKiIkYXNfbmwiKikNCisJZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7DQorCWFy Zz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCkiYDs7DQorICAgICAgZXNhYzsNCisg ICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiDQorICAgICcN CisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5DQorICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2Vj aG9fbl9ib2R5IGFzX2VjaG8nDQorICBmaQ0KKyAgZXhwb3J0IGFzX2VjaG9fYm9keQ0KKyAgYXNf ZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJw0KK2ZpDQorDQorIyBUaGUgdXNlciBp cyBhbHdheXMgcmlnaHQuDQoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7 IHRoZW4NCisgIFBBVEhfU0VQQVJBVE9SPToNCisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0k UEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsNCisgICAgKFBBVEg9Jy9iaW46L2Jp bic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwNCisgICAgICBQQVRI X1NFUEFSQVRPUj0nOycNCisgIH0NCitmaQ0KKw0KKw0KKyMgSUZTDQorIyBXZSBuZWVkIHNwYWNl LCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcNCmlz DQorIyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFj ZS10YWIuDQorIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwg aXQgd291bGQgZGlzYWJsZSB3b3JkDQorIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8gZW1w dHkgdmFsdWUuKQ0KK0lGUz0iICIiCSRhc19ubCINCisNCisjIEZpbmQgd2hvIHdlIGFyZS4gIExv b2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3RvcnkNCnNlcGFyYXRvci4NCitj YXNlICQwIGluICMoKA0KKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNfc2F2 ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitk bw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4N CisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJl YWsNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisjIFdl IGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNo IENPTU1BTkQnDQorIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhl IHBhdGguDQoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxmPSQw DQorZmkNCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAiJGFz X215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbg0KYWJzb2x1 dGUgZmlsZSBuYW1lIiA+JjINCisgIGV4aXQgMQ0KK2ZpDQorDQorIyBVbnNldCB2YXJpYWJsZXMg dGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbg0KKyMgcHJl LTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUg Inx8IGV4aXQNCjEiDQorIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNz YWdlIHRoZXJlLiAgJygoJyBjb3VsZA0KKyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQu DQorZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBFTlYgTUFJTCBNQUlMUEFUSA0KK2RvIGV2YWwgdGVz dCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcDQorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBl eGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8DQo6DQorZG9uZQ0KK1BT MT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19B TEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitMQU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQor IyBDRFBBVEguDQorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFU SA0KKw0KKw0KKyMgYXNfZm5fZXJyb3IgRVJST1IgW0xJTkVOTyBMT0dfRkRdDQorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJy b3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEDQphcmUNCisjIHByb3Zp ZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVuY2luZyBMSU5FTk8u IFRoZW4NCmV4aXQgdGhlDQorIyBzY3JpcHQgd2l0aCBzdGF0dXMgJD8sIHVzaW5nIDEgaWYgdGhh dCB3YXMgMC4NCithc19mbl9lcnJvciAoKQ0KK3sNCisgIGFzX3N0YXR1cz0kPzsgdGVzdCAkYXNf c3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xDQorICBpZiB0ZXN0ICIkMyI7IHRoZW4NCisgICAg YXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMiJ9DQphc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0 YWNrPSRhc19saW5lbm9fc3RhY2sNCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZXJyb3I6ICQxIiA+JiQzDQorICBmaQ0KKyAgJGFzX2VjaG8gIiRhc19tZTogZXJy b3I6ICQxIiA+JjINCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cw0KK30gIyBhc19mbl9lcnJvcg0K Kw0KKw0KKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuDQorYXNfZm5fc2V0X3N0 YXR1cyAoKQ0KK3sNCisgIHJldHVybiAkMQ0KK30gIyBhc19mbl9zZXRfc3RhdHVzDQorDQorIyBh c19mbl9leGl0IFNUQVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0NCisjIEV4aXQgdGhlIHNoZWxs IHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4NCith c19mbl9leGl0ICgpDQorew0KKyAgc2V0ICtlDQorICBhc19mbl9zZXRfc3RhdHVzICQxDQorICBl eGl0ICQxDQorfSAjIGFzX2ZuX2V4aXQNCisNCisjIGFzX2ZuX3Vuc2V0IFZBUg0KKyMgLS0tLS0t LS0tLS0tLS0tDQorIyBQb3J0YWJseSB1bnNldCBWQVIuDQorYXNfZm5fdW5zZXQgKCkNCit7DQor ICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9DQorfQ0KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0DQorIyBh c19mbl9hcHBlbmQgVkFSIFZBTFVFDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBBcHBl bmQgdGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWlu ZWQgaW4NClZBUi4gVGFrZQ0KKyMgYWR2YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25z IHRoYXQgYWxsb3cgYW1vcnRpemVkIGxpbmVhcg0KZ3Jvd3RoIG92ZXINCisjIHJlcGVhdGVkIGFw cGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGlu DQpuYWl2ZQ0KKyMgaW1wbGVtZW50YXRpb25zLg0KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFy Kz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOw0KdGhlbiA6DQorICBldmFs ICdhc19mbl9hcHBlbmQgKCkNCisgIHsNCisgICAgZXZhbCAkMSs9XCQyDQorICB9Jw0KK2Vsc2UN CisgIGFzX2ZuX2FwcGVuZCAoKQ0KKyAgew0KKyAgICBldmFsICQxPVwkJDFcJDINCisgIH0NCitm aSAjIGFzX2ZuX2FwcGVuZA0KKw0KKyMgYXNfZm5fYXJpdGggQVJHLi4uDQorIyAtLS0tLS0tLS0t LS0tLS0tLS0NCisjIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBh bmQgc3RvcmUgdGhlIHJlc3VsdCBpbg0KdGhlDQorIyBnbG9iYWwgJGFzX3ZhbC4gVGFrZSBhZHZh bnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUNCmFyZ3VtZW50cw0KKyMg bXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuDQoraWYgKGV2YWwgInRlc3Qg XCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBldmFsICdhc19mbl9h cml0aCAoKQ0KKyAgew0KKyAgICBhc192YWw9JCgoICQqICkpDQorICB9Jw0KK2Vsc2UNCisgIGFz X2ZuX2FyaXRoICgpDQorICB7DQorICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVx IDFgDQorICB9DQorZmkgIyBhc19mbl9hcml0aA0KKw0KKw0KK2lmIGV4cHIgYSA6ICdcKGFcKScg Pi9kZXYvbnVsbCAyPiYxICYmDQorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdg IiA9IFgwMDE7IHRoZW4NCisgIGFzX2V4cHI9ZXhwcg0KK2Vsc2UNCisgIGFzX2V4cHI9ZmFsc2UN CitmaQ0KKw0KK2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBi YXNlbmFtZSAtLSAvIDI+JjFgIiA9DQoiWC8iOyB0aGVuDQorICBhc19iYXNlbmFtZT1iYXNlbmFt ZQ0KK2Vsc2UNCisgIGFzX2Jhc2VuYW1lPWZhbHNlDQorZmkNCisNCitpZiAoYXNfZGlyPWBkaXJu YW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7DQp0aGVu DQorICBhc19kaXJuYW1lPWRpcm5hbWUNCitlbHNlDQorICBhc19kaXJuYW1lPWZhbHNlDQorZmkN CisNCithc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIgfHwNCiskYXNfZXhwciBYLyIkMCIgOiAn LiovXChbXi9dW14vXSpcKS8qJCcgXHwgXA0KKwkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwNCisJ IFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgvIiQwIiB8 DQorICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAg ICBxDQorCSAgfQ0KKwkgIC9eWFwvXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0K KwkgIH0NCisJICAvXlhcL1woXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0N CisJICBzLy4qLy4vOyBxJ2ANCisNCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBS YW5nZXMuDQorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonDQorYXNf Y3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonDQorYXNfY3JfTGV0dGVycz0k YXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTDQorYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5Jw0K K2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cw0KKw0KK0VDSE9fQz0gRUNI T19OPSBFQ0hPX1Q9DQorY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgNCistbiopDQorICBjYXNl IGBlY2hvICd4eVxjJ2AgaW4NCisgICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmds ZSB0YWIgY2hhcmFjdGVyLg0KKyAgeHkpICBFQ0hPX0M9J1xjJzs7DQorICAqKSAgIGVjaG8gYGVj aG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsDQorICAgICAgIEVDSE9fVD0nCSc7 Ow0KKyAgZXNhYzs7DQorKikNCisgIEVDSE9fTj0nLW4nOzsNCitlc2FjDQorDQorcm0gLWYgY29u ZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUNCitpZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4N CisgIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUNCitlbHNlDQorICBybSAtZiBjb25mJCQu ZGlyDQorICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsDQorZmkNCitpZiAoZWNobyA+Y29u ZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuDQorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25m JCQgMj4vZGV2L251bGw7IHRoZW4NCisgICAgYXNfbG5fcz0nbG4gLXMnDQorICAgICMgLi4uIGJ1 dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6DQorICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMg ZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuDQorICAgICMgMikgREpHUFAgPCAyLjA0 IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlcg0KZXhlY3V0YWJsZS4N CisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4NCisg ICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYg Y29uZiQkLmV4ZQ0KfHwNCisgICAgICBhc19sbl9zPSdjcCAtcCcNCisgIGVsaWYgbG4gY29uZiQk LmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xuX3M9bG4NCisgIGVsc2UN CisgICAgYXNfbG5fcz0nY3AgLXAnDQorICBmaQ0KK2Vsc2UNCisgIGFzX2xuX3M9J2NwIC1wJw0K K2ZpDQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25m JCQuZmlsZQ0KK3JtZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwNCisNCisNCisjIGFzX2ZuX21r ZGlyX3ANCisjIC0tLS0tLS0tLS0tLS0NCisjIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3Rv cnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4NCithc19mbl9ta2Rpcl9wICgpDQor ew0KKw0KKyAgY2FzZSAkYXNfZGlyIGluICMoDQorICAtKikgYXNfZGlyPS4vJGFzX2Rpcjs7DQor ICBlc2FjDQorICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8IHsNCisg ICAgYXNfZGlycz0NCisgICAgd2hpbGUgOjsgZG8NCisgICAgICBjYXNlICRhc19kaXIgaW4gIygN CisgICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxc XFxcXFwnJy9nImA7Ow0KIycoDQorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsNCisgICAgICBl c2FjDQorICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyINCisgICAgICBhc19kaXI9 YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fA0KKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwo LipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVte L10nIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJGFzX2RpciIg OiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYXNfZGlyIiB8DQor ICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8N CisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHEN CisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0K KwkgIHMvLiovLi87IHEnYA0KKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrDQorICAg IGRvbmUNCisgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIg0K KyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBk aXJlY3RvcnkNCiRhc19kaXIiDQorDQorDQorfSAjIGFzX2ZuX21rZGlyX3ANCitpZiBta2RpciAt cCAuIDI+L2Rldi9udWxsOyB0aGVuDQorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciIn DQorZWxzZQ0KKyAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXANCisgIGFzX21rZGlyX3A9ZmFs c2UNCitmaQ0KKw0KK2lmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgIGFzX3Rl c3RfeD0ndGVzdCAteCcNCitlbHNlDQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRo ZW4NCisgICAgYXNfbHNfTF9vcHRpb249TA0KKyAgZWxzZQ0KKyAgICBhc19sc19MX29wdGlvbj0N CisgIGZpDQorICBhc190ZXN0X3g9Jw0KKyAgICBldmFsIHNoIC1jICdcJycNCisgICAgICBpZiB0 ZXN0IC1kICIkMSI7IHRoZW4NCisJdGVzdCAtZCAiJDEvLiI7DQorICAgICAgZWxzZQ0KKwljYXNl ICQxIGluICMoDQorCS0qKXNldCAiLi8kMSI7Ow0KKwllc2FjOw0KKwljYXNlIGBscyAtbGQnJGFz X2xzX0xfb3B0aW9uJyAiJDEiIDI+L2Rldi9udWxsYCBpbiAjKCgNCisJPz8/W3N4XSopOjs7Kilm YWxzZTs7ZXNhYztmaQ0KKyAgICAnXCcnIHNoDQorICAnDQorZmkNCithc19leGVjdXRhYmxlX3A9 JGFzX3Rlc3RfeA0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2 YWxpZCBDUFAgbmFtZS4NCithc190cl9jcHA9ImV2YWwgc2VkDQoneSUqJGFzX2NyX2xldHRlcnMl UCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyINCisNCisjIFNlZCBleHBy ZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4NCithc190 cl9zaD0iZXZhbCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIg0KKw0KKw0K K2V4ZWMgNj4mMQ0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQor IyMgTWFpbiBib2R5IG9mICRDT05GSUdfU1RBVFVTIHNjcmlwdC4gIyMNCisjIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KK19BU0VPRg0KK3Rlc3QgJGFzX3dyaXRlX2Zh aWwgPSAwICYmIGNobW9kICt4ICRDT05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKw0K K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIFNh dmUgdGhlIGxvZyBtZXNzYWdlLCB0byBrZWVwICQwIGFuZCBzbyBvbiBtZWFuaW5nZnVsLCBhbmQg dG8NCisjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGlu c3RlYWQgb2YgdGhlaXINCisjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLg0KK2FjX2xv Zz0iDQorVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBuZXdsaWIgJGFzX21lIDEuMTkuMCwgd2hp Y2ggd2FzDQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LiAgSW52b2NhdGlvbiBjb21t YW5kIGxpbmUgd2FzDQorDQorICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTDQorICBD T05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMNCisgIENPTkZJR19MSU5LUyAgICA9ICRD T05GSUdfTElOS1MNCisgIENPTkZJR19DT01NQU5EUyA9ICRDT05GSUdfQ09NTUFORFMNCisgICQg JDAgJEANCisNCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAx cWANCisiDQorDQorX0FDRU9GDQorDQorY2FzZSAkYWNfY29uZmlnX2ZpbGVzIGluICoiDQorIiop IHNldCB4ICRhY19jb25maWdfZmlsZXM7IHNoaWZ0OyBhY19jb25maWdfZmlsZXM9JCo7Ow0KK2Vz YWMNCisNCisNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTENCisjIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuDQorY29uZmln X2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIg0KK2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19j b21tYW5kcyINCisNCitfQUNFT0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xDQorYWNfY3NfdXNhZ2U9IlwNCitcYCRhc19tZScgaW5zdGFudGlh dGVzIGZpbGVzIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGFjdGlvbnMNCitmcm9tIHRlbXBsYXRl cyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUNCmZp bGVzDQorYW5kIGFjdGlvbnMgYXJlIHNwZWNpZmllZCBhcyBUQUdzLCBhbGwgYXJlIGluc3RhbnRp YXRlZCBieSBkZWZhdWx0Lg0KKw0KK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4uLg0KKw0K KyAgLWgsIC0taGVscCAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdA0KKyAgLVYsIC0t dmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5n cywNCnRoZW4gZXhpdA0KKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50DQorICAgICAgICAgICAgICAg ICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcw0KKyAgLWQsIC0tZGVidWcgICAgICBk b24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzDQorICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAk YXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2FtZQ0KY29uZGl0aW9ucw0KKyAgICAgIC0t ZmlsZT1GSUxFWzpURU1QTEFURV0NCisgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhl IGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFDQorDQorQ29uZmlndXJhdGlvbiBmaWxlczoNCiskY29u ZmlnX2ZpbGVzDQorDQorQ29uZmlndXJhdGlvbiBjb21tYW5kczoNCiskY29uZmlnX2NvbW1hbmRz DQorDQorUmVwb3J0IGJ1Z3MgdG8gdGhlIHBhY2thZ2UgcHJvdmlkZXIuIg0KKw0KK19BQ0VPRg0K K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2FjX2Nz X3ZlcnNpb249IlxcDQorbmV3bGliIGNvbmZpZy5zdGF0dXMgMS4xOS4wDQorY29uZmlndXJlZCBi eSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LA0KKyAgd2l0aCBvcHRpb25zIFxc ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOw0Kcy9bXFwiIlxg XCRdL1xcXFwmL2cnYFxcIg0KKw0KK0NvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4NCitUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdh cmU7IHRoZSBGcmVlIFNvZnR3YXJlDQpGb3VuZGF0aW9uDQorZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiINCisNCithY19wd2Q9JyRh Y19wd2QnDQorc3JjZGlyPSckc3JjZGlyJw0KK0lOU1RBTEw9JyRJTlNUQUxMJw0KK0FXSz0nJEFX SycNCit0ZXN0IC1uICJcJEFXSyIgfHwgQVdLPWF3aw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05G SUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIFRoZSBkZWZhdWx0IGxp c3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuDQorYWNfbmVl ZF9kZWZhdWx0cz06DQord2hpbGUgdGVzdCAkIyAhPSAwDQorZG8NCisgIGNhc2UgJDEgaW4NCisg IC0tKj0qKQ0KKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYA0KKyAg ICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0qPVwoLipcKSdgDQorICAgIGFjX3NoaWZ0 PToNCisgICAgOzsNCisgICopDQorICAgIGFjX29wdGlvbj0kMQ0KKyAgICBhY19vcHRhcmc9JDIN CisgICAgYWNfc2hpZnQ9c2hpZnQNCisgICAgOzsNCisgIGVzYWMNCisNCisgIGNhc2UgJGFjX29w dGlvbiBpbg0KKyAgIyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4NCisgIC1yZWNoZWNrIHwgLS1y ZWNoZWNrIHwgLS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwNCi0t cikNCisgICAgYWNfY3NfcmVjaGVjaz06IDs7DQorICAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0t dmVyc2kgfCAtLXZlcnMgfCAtLXZlciB8IC0tdmUgfCAtLXYgfCAtViApDQorICAgICRhc19lY2hv ICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgOzsNCisgIC0tZGVidWcgfCAtLWRlYnUgfCAtLWRlYiB8 IC0tZGUgfCAtLWQgfCAtZCApDQorICAgIGRlYnVnPTogOzsNCisgIC0tZmlsZSB8IC0tZmlsIHwg LS1maSB8IC0tZiApDQorICAgICRhY19zaGlmdA0KKyAgICBjYXNlICRhY19vcHRhcmcgaW4NCisg ICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxc XFxcXFwnJy9nImANCjs7DQorICAgIGVzYWMNCisgICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxF UyAiICckYWNfb3B0YXJnJyINCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7DQorICAtLWhl IHwgLS1oIHwgIC0taGVscCB8IC0taGVsIHwgLWggKQ0KKyAgICAkYXNfZWNobyAiJGFjX2NzX3Vz YWdlIjsgZXhpdCA7Ow0KKyAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkg fCAtLXF1IHwgLS1xIFwNCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2ls ZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykNCisgICAgYWNfY3Nfc2lsZW50PTogOzsNCisNCisgICMg VGhpcyBpcyBhbiBlcnJvci4NCisgIC0qKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlv bjogXGAkMScNCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgOzsNCisN CisgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWdfdGFyZ2V0cyAiICQxIg0KKyAgICAgYWNfbmVl ZF9kZWZhdWx0cz1mYWxzZSA7Ow0KKw0KKyAgZXNhYw0KKyAgc2hpZnQNCitkb25lDQorDQorYWNf Y29uZmlndXJlX2V4dHJhX2FyZ3M9DQorDQoraWYgJGFjX2NzX3NpbGVudDsgdGhlbg0KKyAgZXhl YyA2Pi9kZXYvbnVsbA0KKyAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1cmVf ZXh0cmFfYXJncyAtLXNpbGVudCINCitmaQ0KKw0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RB VFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2lmIFwkYWNfY3NfcmVjaGVjazsgdGhl bg0KKyAgc2V0IFggJyRTSEVMTCcgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1 cmVfZXh0cmFfYXJncyAtLQ0Kbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uDQorICBzaGlmdA0KKyAg XCRhc19lY2hvICJydW5uaW5nIENPTkZJR19TSEVMTD0kU0hFTEwgXCQqIiA+JjYNCisgIENPTkZJ R19TSEVMTD0nJFNIRUxMJw0KKyAgZXhwb3J0IENPTkZJR19TSEVMTA0KKyAgZXhlYyAiXCRAIg0K K2ZpDQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy aXRlX2ZhaWw9MQ0KK2V4ZWMgNT4+Y29uZmlnLmxvZw0KK3sNCisgIGVjaG8NCisgIHNlZCAnaDtz Ly4vLS9nO3MvXi4uLi8jIyAvO3MvLi4uJC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YDQorIyMgUnVu bmluZyAkYXNfbWUuICMjDQorX0FTQk9YDQorICAkYXNfZWNobyAiJGFjX2xvZyINCit9ID4mNQ0K Kw0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2Zh aWw9MQ0KKyMNCisjIElOSVQtQ09NTUFORFMNCisjDQorQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUi IGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIg0KKw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdf U1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisNCisjIEhhbmRsaW5nIG9mIGFy Z3VtZW50cy4NCitmb3IgYWNfY29uZmlnX3RhcmdldCBpbiAkYWNfY29uZmlnX3RhcmdldHMNCitk bw0KKyAgY2FzZSAkYWNfY29uZmlnX3RhcmdldCBpbg0KKyAgICAiZGVwZmlsZXMiKSBDT05GSUdf Q09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVwZmlsZXMiIDs7DQorICAgICJNYWtlZmlsZSIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsNCisNCisgICopIGFzX2Zu X2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8i DQo1OzsNCisgIGVzYWMNCitkb25lDQorDQorDQorIyBJZiB0aGUgdXNlciBkaWQgbm90IHVzZSB0 aGUgYXJndW1lbnRzIHRvIHNwZWNpZnkgdGhlIGl0ZW1zIHRvDQppbnN0YW50aWF0ZSwNCisjIHRo ZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJl IG5vdC4NCisjIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25tZW50 IGJlY2F1c2Ugb2YgYW4NCmV4dHJlbWVseQ0KKyMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4xLjMu DQoraWYgJGFjX25lZWRfZGVmYXVsdHM7IHRoZW4NCisgIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3Nl dH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzDQorICB0ZXN0ICIke0NPTkZJ R19DT01NQU5EUytzZXR9IiA9IHNldCB8fA0KQ09ORklHX0NPTU1BTkRTPSRjb25maWdfY29tbWFu ZHMNCitmaQ0KKw0KKyMgSGF2ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGNvbnZlbmllbmNl LiAgTWFrZSBpdCBpbiB0aGUgYnVpbGQNCnRyZWUNCisjIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlz IG5vIHJlYXNvbiBhZ2FpbnN0IGhhdmluZyBpdCBoZXJlLCBhbmQgaW4NCmFkZGl0aW9uLA0KKyMg Y3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0aW1lcyBjYXVzZSBw cm9ibGVtcy4NCisjIEhvb2sgZm9yIGl0cyByZW1vdmFsIHVubGVzcyBkZWJ1Z2dpbmcuDQorIyBO b3RlIHRoYXQgdGhlcmUgaXMgYSBzbWFsbCB3aW5kb3cgaW4gd2hpY2ggdGhlIGRpcmVjdG9yeSB3 aWxsIG5vdCBiZQ0KY2xlYW5lZDoNCisjIGFmdGVyIGl0cyBjcmVhdGlvbiBidXQgYmVmb3JlIGl0 cyBuYW1lIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGAkdG1wJy4NCiskZGVidWcgfHwNCit7DQorICB0 bXA9DQorICB0cmFwICdleGl0X3N0YXR1cz0kPw0KKyAgeyB0ZXN0IC16ICIkdG1wIiB8fCB0ZXN0 ICEgLWQgIiR0bXAiIHx8IHJtIC1mciAiJHRtcCI7IH0gJiYgZXhpdA0KJGV4aXRfc3RhdHVzDQor JyAwDQorICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQ0KK30NCisjIENyZWF0ZSBhIChz ZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4NCisNCit7DQorICB0bXA9YCh1bWFz ayAwNzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYNCisgIHRl c3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiDQorfSAgfHwNCit7DQorICB0bXA9Li9jb25m JCQtJFJBTkRPTQ0KKyAgKHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpDQorfSB8fCBhc19mbl9l cnJvciAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8i DQo1DQorDQorIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19GSUxFUyBzZWN0aW9uLg0K KyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMu DQorIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBjb25m aWcuaCcuDQoraWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4NCisNCisNCithY19jcj1g ZWNobyBYIHwgdHIgWCAnXDAxNSdgDQorIyBPbiBjeWd3aW4sIGJhc2ggY2FuIGVhdCBcciBpbnNp ZGUgYGAgaWYgdGhlIHVzZXIgcmVxdWVzdGVkIGlnbmNyLg0KKyMgQnV0IHdlIGtub3cgb2Ygbm8g b3RoZXIgc2hlbGwgd2hlcmUgYWNfY3Igd291bGQgYmUgZW1wdHkgYXQgdGhpcw0KKyMgcG9pbnQs IHNvIHdlIGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suDQoraWYgdGVzdCAieCRhY19j ciIgPSB4OyB0aGVuDQorICBldmFsIGFjX2NyPVwkXCdcXHJcJw0KK2ZpDQorYWNfY3NfYXdrX2Ny PWAkQVdLICdCRUdJTiB7IHByaW50ICJhXHJiIiB9JyA8L2Rldi9udWxsIDI+L2Rldi9udWxsYA0K K2lmIHRlc3QgIiRhY19jc19hd2tfY3IiID0gImEke2FjX2NyfWIiOyB0aGVuDQorICBhY19jc19h d2tfY3I9J1xyJw0KK2Vsc2UNCisgIGFjX2NzX2F3a19jcj0kYWNfY3INCitmaQ0KKw0KK2VjaG8g J0JFR0lOIHsnID4iJHRtcC9zdWJzMS5hd2siICYmDQorX0FDRU9GDQorDQorDQorew0KKyAgZWNo byAiY2F0ID5jb25mJCRzdWJzLmF3ayA8PF9BQ0VPRiIgJiYNCisgIGVjaG8gIiRhY19zdWJzdF92 YXJzIiB8IHNlZCAncy8uKi8mISQmJGFjX2RlbGltLycgJiYNCisgIGVjaG8gIl9BQ0VPRiINCit9 ID5jb25mJCRzdWJzLnNoIHx8DQorICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJ R19TVEFUVVMiICIkTElORU5PIiA1DQorYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFy cyIgfCBncmVwIC1jICckJ2ANCithY19kZWxpbT0nJSFfISMgJw0KK2ZvciBhY19sYXN0X3RyeSBp biBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSA6OyBkbw0KKyAgLiAuL2NvbmYkJHN1YnMu c2ggfHwNCisgICAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAi JExJTkVOTyIgNQ0KKw0KKyAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9w IiBjb25mJCRzdWJzLmF3ayB8IGdyZXAgLWMgWGANCisgIGlmIHRlc3QgJGFjX2RlbGltX24gPSAk YWNfZGVsaW1fbnVtOyB0aGVuDQorICAgIGJyZWFrDQorICBlbGlmICRhY19sYXN0X3RyeTsgdGhl bg0KKyAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElO RU5PIiA1DQorICBlbHNlDQorICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNf ZGVsaW0hISAiDQorICBmaQ0KK2RvbmUNCitybSAtZiBjb25mJCRzdWJzLnNoDQorDQorY2F0ID4+ JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorY2F0ID4+IlwkdG1w L3N1YnMxLmF3ayIgPDxcXF9BQ0FXSyAmJg0KK19BQ0VPRg0KK3NlZCAtbiAnDQoraA0KK3MvXi9T WyIvOyBzLyEuKi8iXT0vDQorcA0KK2cNCitzL15bXiFdKiEvLw0KKzpyZXBsDQordCByZXBsDQor cy8nIiRhY19kZWxpbSInJC8vDQordCBkZWxpbQ0KKzpubA0KK2gNCitzL1woLlx7MTQ4XH1cKS4q L1wxLw0KK3QgbW9yZTENCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC9cXG4iXFwvDQorcA0K K24NCitiIHJlcGwNCis6bW9yZTENCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwvDQor cA0KK2cNCitzLy5cezE0OFx9Ly8NCit0IG5sDQorOmRlbGltDQoraA0KK3MvXCguXHsxNDhcfVwp LiovXDEvDQordCBtb3JlMg0KK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvDQorcA0KK2IN Cis6bW9yZTINCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwvDQorcA0KK2cNCitzLy5c ezE0OFx9Ly8NCit0IGRlbGltDQorJyA8Y29uZiQkc3Vicy5hd2sgfCBzZWQgJw0KKy9eW14iIl0v ew0KKyAgTg0KKyAgcy9cbi8vDQorfQ0KKycgPj4kQ09ORklHX1NUQVRVUyB8fCBhY193cml0ZV9m YWlsPTENCitybSAtZiBjb25mJCRzdWJzLmF3aw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FD RU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK19BQ0FXSw0KK2NhdCA+PiJcJHRtcC9zdWJzMS5hd2si IDw8X0FDQVdLICYmDQorICBmb3IgKGtleSBpbiBTKSBTX2lzX3NldFtrZXldID0gMQ0KKyAgRlMg PSAiByINCisNCit9DQorew0KKyAgbGluZSA9ICQgMA0KKyAgbmZpZWxkcyA9IHNwbGl0KGxpbmUs IGZpZWxkLCAiQCIpDQorICBzdWJzdGVkID0gMA0KKyAgbGVuID0gbGVuZ3RoKGZpZWxkWzFdKQ0K KyAgZm9yIChpID0gMjsgaSA8IG5maWVsZHM7IGkrKykgew0KKyAgICBrZXkgPSBmaWVsZFtpXQ0K KyAgICBrZXlsZW4gPSBsZW5ndGgoa2V5KQ0KKyAgICBpZiAoU19pc19zZXRba2V5XSkgew0KKyAg ICAgIHZhbHVlID0gU1trZXldDQorICAgICAgbGluZSA9IHN1YnN0cihsaW5lLCAxLCBsZW4pICIi IHZhbHVlICIiIHN1YnN0cihsaW5lLCBsZW4gKw0Ka2V5bGVuICsgMykNCisgICAgICBsZW4gKz0g bGVuZ3RoKHZhbHVlKSArIGxlbmd0aChmaWVsZFsrK2ldKQ0KKyAgICAgIHN1YnN0ZWQgPSAxDQor ICAgIH0gZWxzZQ0KKyAgICAgIGxlbiArPSAxICsga2V5bGVuDQorICB9DQorDQorICBwcmludCBs aW5lDQorfQ0KKw0KK19BQ0FXSw0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9B Q0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitpZiBzZWQgInMvJGFjX2NyLy8iIDwgL2Rldi9udWxs ID4gL2Rldi9udWxsIDI+JjE7IHRoZW4NCisgIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8k YWNfY3NfYXdrX2NyL2ciDQorZWxzZQ0KKyAgY2F0DQorZmkgPCAiJHRtcC9zdWJzMS5hd2siID4g IiR0bXAvc3Vicy5hd2siIFwNCisgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3Qgc2V0dXAgY29u ZmlnIGZpbGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUNCitfQUNFT0YNCisNCisjIFZQQVRIIG1h eSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlICQoc3JjZGlyKSwN CisjICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBz dHJpcCBsZWFkaW5nDQphbmQNCisjIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhl IHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcw0KZW1wdHkNCisjIChhY3R1YWxseSB3ZSBsZWF2 ZSBhbiBlbXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuDQoraWYgdGVzdCAieCRz cmNkaXIiID0geC47IHRoZW4NCisgIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj0vew0KK3Mv OipcJChzcmNkaXIpOiovOi8NCitzLzoqXCR7c3JjZGlyfToqLzovDQorcy86KkBzcmNkaXJAOiov Oi8NCitzL15cKFtePV0qPVsJIF0qXCk6Ki9cMS8NCitzLzoqJC8vDQorcy9eW149XSo9WwkgXSok Ly8NCit9Jw0KK2ZpDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy aXRlX2ZhaWw9MQ0KK2ZpICMgdGVzdCAtbiAiJENPTkZJR19GSUxFUyINCisNCisNCitldmFsIHNl dCBYICIgIDpGICRDT05GSUdfRklMRVMgICAgICA6QyAkQ09ORklHX0NPTU1BTkRTIg0KK3NoaWZ0 DQorZm9yIGFjX3RhZw0KK2RvDQorICBjYXNlICRhY190YWcgaW4NCisgIDpbRkhMQ10pIGFjX21v ZGU9JGFjX3RhZzsgY29udGludWU7Ow0KKyAgZXNhYw0KKyAgY2FzZSAkYWNfbW9kZSRhY190YWcg aW4NCisgIDpbRkhMXSo6Kik7Ow0KKyAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICJpbnZhbGlk IHRhZyBcYCRhY190YWcnIiAiJExJTkVOTyIgNTs7DQorICA6W0ZIXS0pIGFjX3RhZz0tOi07Ow0K KyAgOltGSF0qKSBhY190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsNCisgIGVzYWMNCisgIGFjX3Nh dmVfSUZTPSRJRlMNCisgIElGUz06DQorICBzZXQgeCAkYWNfdGFnDQorICBJRlM9JGFjX3NhdmVf SUZTDQorICBzaGlmdA0KKyAgYWNfZmlsZT0kMQ0KKyAgc2hpZnQNCisNCisgIGNhc2UgJGFjX21v ZGUgaW4NCisgIDpMKSBhY19zb3VyY2U9JDE7Ow0KKyAgOltGSF0pDQorICAgIGFjX2ZpbGVfaW5w dXRzPQ0KKyAgICBmb3IgYWNfZg0KKyAgICBkbw0KKyAgICAgIGNhc2UgJGFjX2YgaW4NCisgICAg ICAtKSBhY19mPSIkdG1wL3N0ZGluIjs7DQorICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBm aXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhlbiBpbiB0aGUNCnNvdXJjZSB0cmVlDQorCSAjIChp ZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRlIHBhdGggY2Fubm90IGJl DQpET1Mtc3R5bGUsDQorCSAjIGJlY2F1c2UgJGFjX2YgY2Fubm90IGNvbnRhaW4gYDonLg0KKwkg dGVzdCAtZiAiJGFjX2YiIHx8DQorCSAgIGNhc2UgJGFjX2YgaW4NCisJICAgW1xcLyRdKikgZmFs c2U7Ow0KKwkgICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIkc3JjZGlyLyRh Y19mIjs7DQorCSAgIGVzYWMgfHwNCisJICAgYXNfZm5fZXJyb3IgImNhbm5vdCBmaW5kIGlucHV0 IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyINCjU7Ow0KKyAgICAgIGVzYWMNCisgICAgICBjYXNl ICRhY19mIGluICpcJyopIGFjX2Y9YCRhc19lY2hvICIkYWNfZiIgfCBzZWQNCiJzLycvJ1xcXFxc XFxcJycvZyJgOzsgZXNhYw0KKyAgICAgIGFzX2ZuX2FwcGVuZCBhY19maWxlX2lucHV0cyAiICck YWNfZiciDQorICAgIGRvbmUNCisNCisgICAgIyBMZXQncyBzdGlsbCBwcmV0ZW5kIGl0IGlzIGBj b25maWd1cmUnIHdoaWNoIGluc3RhbnRpYXRlcyAoaS5lLiwNCmRvbid0DQorICAgICMgdXNlICRh c19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoNCisgICAgIyAgICAvKiBj b25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8NCisgICAgY29uZmlndXJl X2lucHV0PSdHZW5lcmF0ZWQgZnJvbSAnYA0KKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8Xlte Ol0qL3x8O3N8OlteOl0qL3wsIHxnJw0KKwlgJyBieSBjb25maWd1cmUuJw0KKyAgICBpZiB0ZXN0 IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuDQorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmls ZS4gICRjb25maWd1cmVfaW5wdXQiDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTog Y3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9DQorICAgIGZpDQorICAgICMgTmV1dHJhbGl6ZSBzcGVj aWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxhY2VtZW50DQpzdHJpbmdz Lg0KKyAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygNCisgICAgKlwmKiB8ICpcfCogfCAq XFwqICkNCisgICAgICAgYWNfc2VkX2NvbmZfaW5wdXQ9YCRhc19lY2hvICIkY29uZmlndXJlX2lu cHV0IiB8DQorICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKA0KKyAgICAqKSBh Y19zZWRfY29uZl9pbnB1dD0kY29uZmlndXJlX2lucHV0OzsNCisgICAgZXNhYw0KKw0KKyAgICBj YXNlICRhY190YWcgaW4NCisgICAgKjotOiogfCAqOi0pIGNhdCA+IiR0bXAvc3RkaW4iIFwNCisg ICAgICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8i IDUgOzsNCisgICAgZXNhYw0KKyAgICA7Ow0KKyAgZXNhYw0KKw0KKyAgYWNfZGlyPWAkYXNfZGly bmFtZSAtLSAiJGFjX2ZpbGUiIHx8DQorJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9d XCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBc fCBcDQorCSBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYWNfZmlsZSIgOiAn WFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYWNfZmlsZSIgfA0KKyAg ICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkg ICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQor CSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJ ICBzLy4qLy4vOyBxJ2ANCisgIGFzX2Rpcj0iJGFjX2RpciI7IGFzX2ZuX21rZGlyX3ANCisgIGFj X2J1aWxkZGlyPS4NCisNCitjYXNlICIkYWNfZGlyIiBpbg0KKy4pIGFjX2Rpcl9zdWZmaXg9IGFj X3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyopDQorICBhY19k aXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYA0KKyAg IyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4Lg0KKyAgYWNfdG9w X2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZA0KJ3N8L1teXFwv XSp8Ly4ufGc7c3wvfHwnYA0KKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbg0KKyAgIiIp IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyAgKikgIGFj X3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7DQorICBlc2FjIDs7DQor ZXNhYw0KK2FjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZA0KK2FjX2Fic19idWlsZGRpcj0kYWNf cHdkJGFjX2Rpcl9zdWZmaXgNCisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Og0KK2FjX3Rv cF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeA0KKw0KK2Nhc2UgJHNyY2RpciBpbg0KKyAg LikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLg0KKyAgICBhY19zcmNkaXI9Lg0KKyAgICBh Y190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViDQorICAgIGFjX2Fic190b3Bfc3JjZGly PSRhY19wd2QgOzsNCisgIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4NCisg ICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsNCisgICAgYWNfdG9wX3NyY2Rpcj0k c3JjZGlyDQorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsNCisgICopICMgUmVsYXRp dmUgbmFtZS4NCisgICAgYWNfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19k aXJfc3VmZml4DQorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGly DQorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7Ow0KK2VzYWMNCithY19h YnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4DQorDQorDQorICBjYXNl ICRhY19tb2RlIGluDQorICA6RikNCisgICMNCisgICMgQ09ORklHX0ZJTEUNCisgICMNCisNCisg IGNhc2UgJElOU1RBTEwgaW4NCisgIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElO U1RBTEwgOzsNCisgICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWlsZF9wcmVmaXgkSU5TVEFMTCA7 Ow0KKyAgZXNhYw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8 fCBhY193cml0ZV9mYWlsPTENCisjIElmIHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBrbm93IGFib3V0 IGRhdGFyb290ZGlyLCBleHBhbmQgaXQuDQorIyBGSVhNRTogVGhpcyBoYWNrIHNob3VsZCBiZSBy ZW1vdmVkIGEgZmV3IHllYXJzIGFmdGVyIDIuNjAuDQorYWNfZGF0YXJvb3RkaXJfaGFjaz07IGFj X2RhdGFyb290ZGlyX3NlZW49DQorYWNfc2VkX2RhdGFyb290PScNCisvZGF0YXJvb3RkaXIvIHsN CisgIHANCisgIHENCit9DQorL0BkYXRhZGlyQC9wDQorL0Bkb2NkaXJAL3ANCisvQGluZm9kaXJA L3ANCisvQGxvY2FsZWRpckAvcA0KKy9AbWFuZGlyQC9wJw0KK2Nhc2UgYGV2YWwgInNlZCAtbiBc IlwkYWNfc2VkX2RhdGFyb290XCIgJGFjX2ZpbGVfaW5wdXRzImAgaW4NCisqZGF0YXJvb3RkaXIq KSBhY19kYXRhcm9vdGRpcl9zZWVuPXllczs7DQorKkBkYXRhZGlyQCp8KkBkb2NkaXJAKnwqQGlu Zm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopDQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cw0Kc2VlbXMgdG8g aWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmciID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6 IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhlIC0tDQpkYXRhcm9v dGRpciBzZXR0aW5nIiA+JjI7fQ0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FD RU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyAgYWNfZGF0YXJvb3RkaXJfaGFjaz0nDQorICBzJkBk YXRhZGlyQCYkZGF0YWRpciZnDQorICBzJkBkb2NkaXJAJiRkb2NkaXImZw0KKyAgcyZAaW5mb2Rp ckAmJGluZm9kaXImZw0KKyAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcNCisgIHMmQG1hbmRp ckAmJG1hbmRpciZnDQorICBzJlxcXCR7ZGF0YXJvb3RkaXJ9JiRkYXRhcm9vdGRpciZnJyA7Ow0K K2VzYWMNCitfQUNFT0YNCisNCisjIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNyY2RpcicgPSBg LicuDQorIyBTaGVsbCBjb2RlIGluIGNvbmZpZ3VyZS5hYyBtaWdodCBzZXQgZXh0cmFzdWIuDQor IyBGSVhNRTogZG8gd2UgcmVhbGx5IHdhbnQgdG8gbWFpbnRhaW4gdGhpcyBmZWF0dXJlPw0KK2Nh dCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2FjX3NlZF9l eHRyYT0iJGFjX3Zwc3ViDQorJGV4dHJhc3ViDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFU VVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKzp0DQorL0BbYS16QS1aX11bYS16QS1a XzAtOV0qQC8hYg0KK3N8QGNvbmZpZ3VyZV9pbnB1dEB8JGFjX3NlZF9jb25mX2lucHV0fDt0IHQN CitzJkB0b3BfYnVpbGRkaXJAJiRhY190b3BfYnVpbGRkaXJfc3ViJjt0IHQNCitzJkB0b3BfYnVp bGRfcHJlZml4QCYkYWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0DQorcyZAc3JjZGlyQCYkYWNfc3Jj ZGlyJjt0IHQNCitzJkBhYnNfc3JjZGlyQCYkYWNfYWJzX3NyY2RpciY7dCB0DQorcyZAdG9wX3Ny Y2RpckAmJGFjX3RvcF9zcmNkaXImO3QgdA0KK3MmQGFic190b3Bfc3JjZGlyQCYkYWNfYWJzX3Rv cF9zcmNkaXImO3QgdA0KK3MmQGJ1aWxkZGlyQCYkYWNfYnVpbGRkaXImO3QgdA0KK3MmQGFic19i dWlsZGRpckAmJGFjX2Fic19idWlsZGRpciY7dCB0DQorcyZAYWJzX3RvcF9idWlsZGRpckAmJGFj X2Fic190b3BfYnVpbGRkaXImO3QgdA0KK3MmQElOU1RBTExAJiRhY19JTlNUQUxMJjt0IHQNCisk YWNfZGF0YXJvb3RkaXJfaGFjaw0KKyINCitldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRh Y19maWxlX2lucHV0cyIgfCAkQVdLIC1mDQoiJHRtcC9zdWJzLmF3ayIgPiR0bXAvb3V0IFwNCisg IHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQ0K Kw0KK3Rlc3QgLXogIiRhY19kYXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYm DQorICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkdG1wL291dCJgOyB0 ZXN0IC1uDQoiJGFjX291dCI7IH0gJiYNCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRh cm9vdGRpclsJIF0qOio9L3AnDQoiJHRtcC9vdXQiYDsgdGVzdCAteiAiJGFjX291dCI7IH0gJiYN CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFj X2ZpbGUgY29udGFpbnMNCmEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGly Jw0KK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMg ZGVmaW5lZC4iID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRh aW5zIGEgcmVmZXJlbmNlIHRvIHRoZQ0KdmFyaWFibGUgXGBkYXRhcm9vdGRpcicNCit3aGljaCBz ZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuIiA+ JjI7fQ0KKw0KKyAgcm0gLWYgIiR0bXAvc3RkaW4iDQorICBjYXNlICRhY19maWxlIGluDQorICAt KSBjYXQgIiR0bXAvb3V0IiAmJiBybSAtZiAiJHRtcC9vdXQiOzsNCisgICopIHJtIC1mICIkYWNf ZmlsZSIgJiYgbXYgIiR0bXAvb3V0IiAiJGFjX2ZpbGUiOzsNCisgIGVzYWMgXA0KKyAgfHwgYXNf Zm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1DQorIDs7DQor DQorDQorICA6QykgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXhl Y3V0aW5nICRhY19maWxlDQpjb21tYW5kcyIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXhlY3V0 aW5nICRhY19maWxlIGNvbW1hbmRzIiA+JjY7fQ0KKyA7Ow0KKyAgZXNhYw0KKw0KKw0KKyAgY2Fz ZSAkYWNfZmlsZSRhY19tb2RlIGluDQorICAgICJkZXBmaWxlcyI6QykgdGVzdCB4IiRBTURFUF9U UlVFIiAhPSB4IiIgfHwgZm9yIG1mIGluDQokQ09ORklHX0ZJTEVTOyBkbw0KKyAgIyBTdHJpcCBN RiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4NCisgIG1mPWBlY2hvICIk bWYiIHwgc2VkIC1lICdzLzouKiQvLydgDQorICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhbiBB dXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgb3Igbm90Lg0KKyAgIyBXZSB1c2VkIHRvIG1hdGNo IG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBNYWtlZmlsZS5pbicsIGJ1dA0KKyAgIyBzb21lIHBlb3Bs ZSByZW5hbWUgdGhlbTsgc28gaW5zdGVhZCB3ZSBsb29rIGF0IHRoZSBmaWxlIGNvbnRlbnQuDQor ICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBsaW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxlIHBv c3QtcHJvY2Vzcw0KKyAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0 b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4NCisgICMgU28gbGV0J3MgZ3JlcCB3aG9sZSBmaWxl Lg0KKyAgaWYgZ3JlcCAnXiMuKmdlbmVyYXRlZCBieSBhdXRvbWFrZScgJG1mID4gL2Rldi9udWxs IDI+JjE7IHRoZW4NCisgICAgZGlycGFydD1gJGFzX2Rpcm5hbWUgLS0gIiRtZiIgfHwNCiskYXNf ZXhwciBYIiRtZiIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJG1m IiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkbWYiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBY IiRtZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkbWYiIHwN CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wx Lw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8N CisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAg cQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgcy8uKi8uLzsgcSdgDQorICBlbHNlDQorICAgIGNvbnRpbnVlDQorICBmaQ0KKyAgIyBF eHRyYWN0IHRoZSBkZWZpbml0aW9uIG9mIERFUERJUiwgYW1fX2luY2x1ZGUsIGFuZCBhbV9fcXVv dGUNCisgICMgZnJvbSB0aGUgTWFrZWZpbGUgd2l0aG91dCBydW5uaW5nIGBtYWtlJy4NCisgIERF UERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0IC16ICIkREVQ RElSIiAmJiBjb250aW51ZQ0KKyAgYW1fX2luY2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUg PSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUNCisg IGFtX19xdW90ZT1gc2VkIC1uICdzL15hbV9fcXVvdGUgPSAvL3AnIDwgIiRtZiJgDQorICAjIFdo ZW4gdXNpbmcgYW5zaTJrbnIsIFUgbWF5IGJlIGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4cGFu ZCBpdA0KKyAgVT1gc2VkIC1uICdzL15VID0gLy9wJyA8ICIkbWYiYA0KKyAgIyBGaW5kIGFsbCBk ZXBlbmRlbmN5IG91dHB1dCBmaWxlcywgdGhleSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aA0KKyAg IyAkKERFUERJUikgaW4gdGhlaXIgbmFtZXMuICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2Ug aXQgaXMgdGhlDQorICAjIHNpbXBsZXN0IGFwcHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElSKSB0 byBpdHMgYWN0dWFsIHZhbHVlIGluIHRoZQ0KKyAgIyBleHBhbnNpb24uDQorICBmb3IgZmlsZSBp biBgc2VkIC1uICINCisgICAgcy9eJGFtX19pbmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJUiku KlwpJGFtX19xdW90ZSInJC9cMS9wJw0KPCIkbWYiIHwgXA0KKyAgICAgICBzZWQgLWUgJ3MvXCQo REVQRElSKS8nIiRERVBESVIiJy9nJyAtZSAncy9cJFUvJyIkVSInL2cnYDsgZG8NCisgICAgIyBN YWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBleGlzdHMuDQorICAgIHRlc3QgLWYgIiRkaXJwYXJ0LyRm aWxlIiAmJiBjb250aW51ZQ0KKyAgICBmZGlyPWAkYXNfZGlybmFtZSAtLSAiJGZpbGUiIHx8DQor JGFzX2V4cHIgWCIkZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJ IFgiJGZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRmaWxlIiA6ICdYXCgvL1wpJCcg XHwgXA0KKwkgWCIkZmlsZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2Vj aG8gWCIkZmlsZSIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQv ew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sN CisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAg cy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0K KwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgICAgYXNfZGlyPSRkaXJwYXJ0LyRm ZGlyOyBhc19mbl9ta2Rpcl9wDQorICAgICMgZWNobyAiY3JlYXRpbmcgJGRpcnBhcnQvJGZpbGUi DQorICAgIGVjaG8gJyMgZHVtbXknID4gIiRkaXJwYXJ0LyRmaWxlIg0KKyAgZG9uZQ0KK2RvbmUN CisgOzsNCisNCisgIGVzYWMNCitkb25lICMgZm9yIGFjX3RhZw0KKw0KKw0KK2FzX2ZuX2V4aXQg MA0KK19BQ0VPRg0KK2FjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlDQorDQordGVz dCAkYWNfd3JpdGVfZmFpbCA9IDAgfHwNCisgIGFzX2ZuX2Vycm9yICJ3cml0ZSBmYWlsdXJlIGNy ZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQ0KKw0KKw0KKyMgY29uZmlndXJlIGlz IHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4NCisj IGNvbmZpZy5zdGF0dXMgZG9lcyBpdHMgb3duIHJlZGlyZWN0aW9uLCBhcHBlbmRpbmcgdG8gY29u ZmlnLmxvZy4NCisjIFVuZm9ydHVuYXRlbHksIG9uIERPUyB0aGlzIGZhaWxzLCBhcyBjb25maWcu bG9nIGlzIHN0aWxsIGtlcHQgb3Blbg0KKyMgYnkgY29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVz IHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdG8gaXQ7IGl0cw0KKyMgb3V0cHV0IGlzIHNpbXBseSBk aXNjYXJkZWQuICBTbyB3ZSBleGVjIHRoZSBGRCB0byAvZGV2L251bGwsDQorIyBlZmZlY3RpdmVs eSBjbG9zaW5nIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFu ZA0KKyMgYXBwZW5kZWQgdG8gYnkgY29uZmlnLnN0YXR1cy4gIFdoZW4gY29taW5nIGJhY2sgdG8g Y29uZmlndXJlLCB3ZQ0KKyMgbmVlZCB0byBtYWtlIHRoZSBGRCBhdmFpbGFibGUgYWdhaW4uDQor aWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuDQorICBhY19jc19zdWNjZXNzPToNCisg IGFjX2NvbmZpZ19zdGF0dXNfYXJncz0NCisgIHRlc3QgIiRzaWxlbnQiID0geWVzICYmDQorICAg IGFjX2NvbmZpZ19zdGF0dXNfYXJncz0iJGFjX2NvbmZpZ19zdGF0dXNfYXJncyAtLXF1aWV0Ig0K KyAgZXhlYyA1Pi9kZXYvbnVsbA0KKyAgJFNIRUxMICRDT05GSUdfU1RBVFVTICRhY19jb25maWdf c3RhdHVzX2FyZ3MgfHwgYWNfY3Nfc3VjY2Vzcz1mYWxzZQ0KKyAgZXhlYyA1Pj5jb25maWcubG9n DQorICAjIFVzZSB8fCwgbm90ICYmLCB0byBhdm9pZCBleGl0aW5nIGZyb20gdGhlIGlmIHdpdGgg JD8gPSAxLCB3aGljaA0KKyAgIyB3b3VsZCBtYWtlIGNvbmZpZ3VyZSBmYWlsIGlmIHRoaXMgaXMg dGhlIGxhc3QgaW5zdHJ1Y3Rpb24uDQorICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0ICQ/ DQorZmkNCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFi bGVfb3B0aW9uX2NoZWNraW5nIg0KIT0gbm87IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdW5yZWNvZ25pemVkDQpvcHRpb25zOiAkYWNf dW5yZWNvZ25pemVkX29wdHMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVj b2duaXplZCBvcHRpb25zOg0KJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjI7fQ0KK2ZpDQorDQpk aWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlLmluDQpiL25l d2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZS5pbg0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMC4uMGFkNWRmNTFlDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXds aWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUuaW4NCkBAIC0wLDAgKzEsMTQgQEANCitk bmwgVGhpcyBpcyB0aGUgbmV3bGliL2xpYmMvbWFjaGluZS94dGVuc2EgY29uZmlndXJlLmluIGZp bGUuDQorZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNv bmZpZ3VyZSBzY3JpcHQuDQorDQorQUNfUFJFUkVRKDIuNTkpDQorQUNfSU5JVChbbmV3bGliXSxb TkVXTElCX1ZFUlNJT05dKQ0KK0FDX0NPTkZJR19TUkNESVIoW01ha2VmaWxlLmFtXSkNCisNCitk bmwgQ2FuJ3QgYmUgZG9uZSBpbiBORVdMSUJfQ09ORklHVVJFIGJlY2F1c2UgdGhhdCBjb25mdXNl cyBhdXRvbWFrZS4NCitBQ19DT05GSUdfQVVYX0RJUiguLi8uLi8uLi8uLikNCisNCitORVdMSUJf Q09ORklHVVJFKC4uLy4uLy4uKQ0KKw0KK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQ0KK0FD X09VVFBVVA0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlY2xlYXJl eGNlcHQuYw0KYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWNsZWFyZXhjZXB0LmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmUzZjg5MTMxZg0KLS0tIC9kZXYv bnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVjbGVhcmV4Y2VwdC5jDQpA QCAtMCwwICsxLDQ5IEBADQorLyogQ29weXJpZ2h0IChjKSAyMDExIFRlbnNpbGljYSBJbmMuICBB TEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAg IGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAg IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAg IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD T05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQorICAgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgICBURU5T SUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQor ICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgICBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQorICAgU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu ICAqLw0KKw0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+DQorDQorI2lm IFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFWRV9ERlANCisNCisjaW5jbHVkZSA8ZmVudi5oPg0K Kw0KKw0KK2ludCBmZWNsZWFyZXhjZXB0KGludCBleGNlcHQpDQorew0KKyAgdW5zaWduZWQgaW50 IGZzcjsNCisNCisgIGlmIChleGNlcHQgJiB+RkVfQUxMX0VYQ0VQVCkNCisgICAgcmV0dXJuIC0x Ow0KKyAgZXhjZXB0IDw8PSBfRkVfRVhDRVBUSU9OX0ZMQUdTX09GRlNFVDsNCisgIGFzbSAoInJ1 ci5mc3IgJTAiIDogIj1hIihmc3IpKTsNCisgIGZzciA9IGZzciAmIH5leGNlcHQ7DQorICBhc20g KCJ3dXIuZnNyICUwIiA6IDogImEiKGZzcikpOw0KKyAgcmV0dXJuIDA7DQorfQ0KKw0KKyNlbmRp Zg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZW52LmMNCmIv bmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRlbnYuYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMC4uYTRhZmJlMGMwDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXds aWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGVudi5jDQpAQCAtMCwwICsxLDU2IEBADQorLyog Q29weXJpZ2h0IChjKSAyMDExIFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0K Kw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs IHdpdGggb3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAgMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xhaW1l ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQor ICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAiQVMg SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVA0KKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTDQorICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCisg ICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikNCisgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5Z IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQNCisg ICBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKw0KKyNpbmNsdWRl IDx4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+DQorDQorI2lmIFhDSEFMX0hBVkVfRlAgfHwgWENI QUxfSEFWRV9ERlANCisNCisjaW5jbHVkZSA8ZmVudi5oPg0KKw0KK2ludCBmZWdldGVudihmZW52 X3QgKiBlbnZfcHRyKQ0KK3sNCisgIHVuc2lnbmVkIGludCBmc3I7DQorICB1bnNpZ25lZCBpbnQg ZmNyOw0KKyAgYXNtICgicnVyLmZzciAlMCIgOiAiPWEiKGZzcikpOw0KKyAgYXNtICgicnVyLmZj ciAlMCIgOiAiPWEiKGZjcikpOw0KKyAgKmVudl9wdHIgPSBmc3IgfCBmY3I7DQorICByZXR1cm4g MDsNCit9DQorDQorDQoraW50IGZlc2V0ZW52KGNvbnN0IGZlbnZfdCAqIGVudl9wdHIpDQorew0K KyAgZmVudl90IGVudiA9ICplbnZfcHRyOw0KKyAgaWYgKGVudiAmIH4oX0ZFX0ZMT0FUSU5HX0VO Vl9NQVNLKSkNCisgICAgcmV0dXJuIC0xOw0KKyAgYXNtICgid3VyLmZzciAlMCIgOiA6ICJhIigq ZW52X3B0cikpOw0KKyAgYXNtICgid3VyLmZjciAlMCIgOiA6ICJhIigqZW52X3B0cikpOw0KKyAg cmV0dXJuIDA7DQorfQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21hY2hp bmUveHRlbnNhL2ZlZ2V0ZXhjZXB0LmMNCmIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVn ZXRleGNlcHQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMjUwOTE3 YzNlDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdl dGV4Y2VwdC5jDQpAQCAtMCwwICsxLDY3IEBADQorLyogQ29weXJpZ2h0IChjKSAyMDExIFRlbnNp bGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQor ICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI T0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAgIExJTUlURUQgVE8sIFRI RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQorICAg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgICBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuICAqLw0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+ DQorDQorI2lmIFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFWRV9ERlANCisNCisvKiBUaGVzZSBm dW5jdGlvbnMgYXJlIGdsaWJjIGV4dGVuc2lvbnMuICAqLw0KKw0KKyNpbmNsdWRlIDxmZW52Lmg+ DQorDQoraW50IGZlZ2V0ZXhjZXB0KHZvaWQpDQorew0KKyAgZmV4Y2VwdF90IGN1cnJlbnQ7DQor ICBhc20gKCJydXIuZnNyICUwIiA6ICI9YSIoY3VycmVudCkpOw0KKyAgcmV0dXJuIChjdXJyZW50 ID4+IF9GRV9FWENFUFRJT05fRU5BQkxFX09GRlNFVCkgJiBGRV9BTExfRVhDRVBUOw0KK30NCisN CisNCitpbnQgZmVlbmFibGVleGNlcHQoaW50IGV4Y2VwdHMpDQorew0KKyAgZmV4Y2VwdF90IGN1 cnJlbnQ7DQorICBpZiAoZXhjZXB0cyAmIH5GRV9BTExfRVhDRVBUKQ0KKyAgICByZXR1cm4gLTE7 DQorICBhc20gKCJydXIuZmNyICUwIiA6ICI9YSIoY3VycmVudCkpOw0KKyAgY3VycmVudCB8PSBl eGNlcHRzIDw8IF9GRV9FWENFUFRJT05fRU5BQkxFX09GRlNFVDsNCisgIGFzbSAoInd1ci5mY3Ig JTAiIDogIj1hIihjdXJyZW50KSk7DQorICByZXR1cm4gMDsNCit9DQorDQorDQoraW50IGZlZGlz YWJsZWV4Y2VwdChpbnQgZXhjZXB0cykNCit7DQorICBmZXhjZXB0X3QgY3VycmVudDsNCisgIGlm IChleGNlcHRzICYgfkZFX0FMTF9FWENFUFQpDQorICAgIHJldHVybiAtMTsNCisgIGFzbSAoInJ1 ci5mY3IgJTAiIDogIj1hIihjdXJyZW50KSk7DQorICBjdXJyZW50ICY9IH4oZXhjZXB0cyA8PCBf RkVfRVhDRVBUSU9OX0VOQUJMRV9PRkZTRVQpOw0KKyAgYXNtICgid3VyLmZjciAlMCIgOiAiPWEi KGN1cnJlbnQpKTsNCisgIHJldHVybiAwOw0KK30NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9u ZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcuYw0KYi9uZXdsaWIvbGli bS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMC4uZmEzYzdlMzljDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIv bGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcuYw0KQEAgLTAsMCArMSw2NCBAQA0K Ky8qIENvcHlyaWdodCAoYykgMjAxMSBUZW5zaWxpY2EgSW5jLiAgQUxMIFJJR0hUUyBSRVNFUlZF RC4NCisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgICBhcmUgbWV0Og0KKw0KKyAg IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg Y29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKw0KKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgICAgICBjb3B5cmlnaHQgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0KKyAgICAgIGRpc2Ns YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl ZA0KKyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisNCisgICBUSElTIFNPRlRXQVJFIElT IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorICAg IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QNCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUw0KKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICAgVEVOU0lMSUNBIElOQ09SUE9SQVRF RCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KKyAgIElOQ0lERU5UQUwsIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQorICAgKElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S DQorICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pDQorICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULA0KKyAgIFNUUklDVCBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgICBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE DQorICAgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8NCisNCisNCisjaW5j bHVkZSA8eHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oPg0KKw0KKyNpZiBYQ0hBTF9IQVZFX0ZQIHx8 IFhDSEFMX0hBVkVfREZQDQorDQorI2luY2x1ZGUgPGZlbnYuaD4NCisNCitpbnQgZmVnZXRleGNl cHRmbGFnKGZleGNlcHRfdCAqZmxhZ3AsIGludCBleGNlcHRzKQ0KK3sNCisgIHVuc2lnbmVkIGlu dCBmc3I7DQorICBpZiAoZXhjZXB0cyAmIH5GRV9BTExfRVhDRVBUKQ0KKyAgICByZXR1cm4gLTE7 DQorICBhc20gKCJydXIuZnNyICUwIiA6ICI9YSIoZnNyKSk7DQorICBmc3IgPj49IF9GRV9FWENF UFRJT05fRkxBR1NfT0ZGU0VUOw0KKyAgZXhjZXB0cyAmPSBmc3I7DQorICAqZmxhZ3AgPSBleGNl cHRzOw0KKw0KKyAgcmV0dXJuIDA7DQorfQ0KKw0KKw0KK2ludCBmZXNldGV4Y2VwdGZsYWcoY29u c3QgZmV4Y2VwdF90ICpmbGFncCwgaW50IGV4Y2VwdHMpDQorew0KKyAgaWYgKGV4Y2VwdHMgJiB+ RkVfQUxMX0VYQ0VQVCkNCisgICAgcmV0dXJuIC0xOw0KKw0KKyAgdW5zaWduZWQgaW50IGZzcjsN CisNCisgIGFzbSAoInJ1ci5mc3IgJTAiIDogIj1hIihmc3IpKTsNCisNCisgIGZzciAmPSB+KGV4 Y2VwdHMgPDwgX0ZFX0VYQ0VQVElPTl9GTEFHU19PRkZTRVQpOw0KKyAgZnNyIHw9ICgoKmZsYWdw ICYgZXhjZXB0cykgPDwgX0ZFX0VYQ0VQVElPTl9GTEFHU19PRkZTRVQpOw0KKyAgYXNtICgid3Vy LmZzciAlMCIgOiA6ICJhIihmc3IpKTsNCisgIHJldHVybiAwOw0KK30NCisNCisjZW5kaWYNCmRp ZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldHJvdW5kLmMNCmIvbmV3 bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRyb3VuZC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwLi5mMTdiZTZkYzENCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xp Yi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0cm91bmQuYw0KQEAgLTAsMCArMSw1MCBAQA0KKy8q IENvcHlyaWdodCAoYykgMjAxMSBUZW5zaWxpY2EgSW5jLiAgQUxMIFJJR0hUUyBSRVNFUlZFRC4N CisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgICBhcmUgbWV0Og0KKw0KKyAgIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLg0KKw0KKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0KKyAgICAgIGRpc2NsYWlt ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZA0K KyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisNCisgICBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorICAgIkFT IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QNCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUw0KKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICAgVEVOU0lMSUNBIElOQ09SUE9SQVRFRCBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KKyAgIElOQ0lERU5UQUwsIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQorICAgKElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQor ICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pDQorICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULA0KKyAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgICBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEDQor ICAgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8NCisNCisjaW5jbHVkZSA8 eHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oPg0KKw0KKyNpZiBYQ0hBTF9IQVZFX0ZQIHx8IFhDSEFM X0hBVkVfREZQDQorDQorI2luY2x1ZGUgPGZlbnYuaD4NCisNCitpbnQgZmVnZXRyb3VuZCh2b2lk KQ0KK3sNCisgIGZleGNlcHRfdCBjdXJyZW50Ow0KKyAgYXNtICgicnVyLmZjciAlMCIgOiAiPWEi KGN1cnJlbnQpKTsNCisgIHJldHVybiAoY3VycmVudCAmIF9GRV9ST1VORF9NT0RFX01BU0spID4+ IF9GRV9ST1VORF9NT0RFX09GRlNFVDsNCit9DQorDQorDQoraW50IGZlc2V0cm91bmQoaW50IHJv dW5kKQ0KK3sNCisgIGlmIChyb3VuZCAmIH5fRkVfUk9VTkRfTU9ERV9NQVNLKQ0KKyAgICByZXR1 cm4gLTE7DQorICBhc20gKCJ3dXIuZmNyICUwIiA6IDogImEiKHJvdW5kKSk7DQorICByZXR1cm4g MDsNCit9DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGluZS94dGVu c2EvZmVob2xkZXhjZXB0LmMNCmIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVob2xkZXhj ZXB0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjU0NTdkNjAxMA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVob2xkZXhj ZXB0LmMNCkBAIC0wLDAgKzEsNTUgQEANCisvKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGVuc2lsaWNh IEluYy4gIEFMTCBSSUdIVFMgUkVTRVJWRUQuDQorDQorICAgUmVkaXN0cmlidXRpb24gYW5kIHVz ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICAgbW9kaWZp Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zDQorICAgYXJlIG1ldDoNCisNCisgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAgICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisNCisgICAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl DQorICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcNCisgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQNCisgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u DQorDQorICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF UlMgQU5EIENPTlRSSUJVVE9SUw0KKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICAgTElNSVRFRCBUTywgVEhFIElN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCisgICBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTA0K KyAgIFRFTlNJTElDQSBJTkNPUlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwNCisgICBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUw0KKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KKyAgIEhPV0VWRVIgQ0FV U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwN CisgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpDQorICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KKyAgIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI IERBTUFHRS4gICovDQorDQorDQorI2luY2x1ZGUgPHh0ZW5zYS9jb25maWcvY29yZS1pc2EuaD4N CisNCisjaWYgWENIQUxfSEFWRV9GUCB8fCBYQ0hBTF9IQVZFX0RGUA0KKw0KKyNpbmNsdWRlIDxm ZW52Lmg+DQorDQoraW50IGZlaG9sZGV4Y2VwdChmZW52X3QgKiBlbnZwKQ0KK3sNCisgIGZleGNl cHRfdCBmc3I7DQorICBmZW52X3QgZmNyOw0KKyAgLyogR2V0IHRoZSBlbnZpcm9ubWVudC4gICov DQorICBhc20gKCJydXIuZmNyICUwIiA6ICI9YSIoZmNyKSk7DQorICBhc20gKCJydXIuZnNyICUw IiA6ICI9YSIoZnNyKSk7DQorICAqZW52cCA9IGZzciB8IGZjcjsNCisNCisgIC8qIENsZWFyIHRo ZSBleGNlcHRpb24gZW5hYmxlIGZsYWdzLiAgKi8NCisgIGZjciAmPSBfRkVfUk9VTkRfTU9ERV9N QVNLOw0KKyAgYXNtICgid3VyLmZjciAlMCIgOiA6ImEiKGZjcikpOw0KKw0KKyAgLyogQ2xlYXIg dGhlIGV4Y2VwdGlvbiBoYXBwZW5lZCBmbGFncy4gICovDQorICBmc3IgPSAwOw0KKyAgYXNtICgi d3VyLmZzciAlMCIgOiA6ImEiKGZzcikpOw0KKw0KKyAgcmV0dXJuIDA7DQorfQ0KKw0KKyNlbmRp Zg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlcmFpc2VleGNlcHQu Yw0KYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXJhaXNlZXhjZXB0LmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjNjMGUzOWQxMQ0KLS0tIC9kZXYvbnVsbA0K KysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVyYWlzZWV4Y2VwdC5jDQpAQCAtMCww ICsxLDUwIEBADQorLyogQ29weXJpZ2h0IChjKSAyMDExIFRlbnNpbGljYSBJbmMuICBBTEwgUklH SFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAgIGFyZSBt ZXQ6DQorDQorICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAgIGNvcHly aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQor ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkDQorICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC VVRPUlMNCisgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVA0KKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQorICAgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgICBURU5TSUxJQ0Eg SU5DT1JQT1JBVEVEIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorICAgSU5D SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisg ICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1INCisgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQorICAgU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAg IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQNCisgICBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0K Kw0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+DQorDQorI2lmIFhDSEFM X0hBVkVfRlAgfHwgWENIQUxfSEFWRV9ERlANCisNCisvKiBYdGVuc2EgZG9lc24ndCB0cmFwLCBz byBzZXR0aW5nIHRoZSBmbGFncyBpcyB0aGUgYmVzdCB3ZSBjYW4NCisgICBkby4gICovDQorDQor I2luY2x1ZGUgPGZlbnYuaD4NCisNCitpbnQgZmVyYWlzZWV4Y2VwdChpbnQgZXhjZXB0cykNCit7 DQorICBmZXhjZXB0X3QgY3VycmVudDsNCisNCisgIGlmIChleGNlcHRzICYgfkZFX0FMTF9FWENF UFQpDQorICAgIHJldHVybiAtMTsNCisgIGFzbSAoInJ1ci5mc3IgJTAiIDogIj1hIihjdXJyZW50 KSk7DQorICBjdXJyZW50IHw9IGV4Y2VwdHMgPDwgX0ZFX0VYQ0VQVElPTl9GTEFHU19PRkZTRVQ7 DQorICBhc20gKCJ3dXIuZnNyICUwIiA6IDogImEiKGN1cnJlbnQpKTsNCisgIHJldHVybiAwOw0K K30NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9m ZXRlc3RleGNlcHQuYw0KYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXRlc3RleGNlcHQu Yw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMjk1MDg1OTQ5DQotLS0g L2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXRlc3RleGNlcHQu Yw0KQEAgLTAsMCArMSw0MSBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAxMSBUZW5zaWxpY2EgSW5j LiAgQUxMIFJJR0hUUyBSRVNFUlZFRC4NCisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMN CisgICBhcmUgbWV0Og0KKw0KKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKw0KKyAgIDIuIFJl ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisg ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZw0KKyAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZA0KKyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisN CisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB TkQgQ09OVFJJQlVUT1JTDQorICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KKyAgIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICAg VEVOU0lMSUNBIElOQ09SUE9SQVRFRCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LA0KKyAgIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTDQorICAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTIE9SDQorICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICAgSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULA0KKyAg IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkNCisgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VEDQorICAgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLiAgKi8NCisNCisjaW5jbHVkZSA8eHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oPg0KKw0KKyNp ZiBYQ0hBTF9IQVZFX0ZQIHx8IFhDSEFMX0hBVkVfREZQDQorDQorI2luY2x1ZGUgPGZlbnYuaD4N CisNCitpbnQgZmV0ZXN0ZXhjZXB0KGludCBleGNlcHRzKQ0KK3sNCisgIGZleGNlcHRfdCBjdXJy ZW50Ow0KKyAgYXNtICgicnVyLmZzciAlMCIgOiAiPWEiKGN1cnJlbnQpKTsNCisgIHJldHVybiAo Y3VycmVudCA+PiBfRkVfRVhDRVBUSU9OX0ZMQUdTX09GRlNFVCkgJiBleGNlcHRzOw0KK30NCisN CisjZW5kaWYNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXVwZGF0 ZWVudi5jDQpiL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZldXBkYXRlZW52LmMNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjY4ZDY3MWM3Mg0KLS0tIC9kZXYvbnVs bA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmV1cGRhdGVlbnYuYw0KQEAgLTAs MCArMSw0NSBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAxMSBUZW5zaWxpY2EgSW5jLiAgQUxMIFJJ R0hUUyBSRVNFUlZFRC4NCisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgICBhcmUg bWV0Og0KKw0KKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp biB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKw0KKyAgIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgICAgICBjb3B5 cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0K KyAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZA0KKyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisNCisgICBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ QlVUT1JTDQorICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QNCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KKyAgIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICAgVEVOU0lMSUNB IElOQ09SUE9SQVRFRCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KKyAgIElO Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQor ICAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU VVRFIEdPT0RTIE9SDQorICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULA0KKyAgIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisg ICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEDQorICAgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8N CisNCisjaW5jbHVkZSA8eHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oPg0KKw0KKyNpZiBYQ0hBTF9I QVZFX0ZQIHx8IFhDSEFMX0hBVkVfREZQDQorI2luY2x1ZGUgPGZlbnYuaD4NCisNCitpbnQgZmV1 cGRhdGVlbnYoY29uc3QgZmVudl90ICogZW52cCkNCit7DQorICBmZW52X3QgY3VycmVudDsNCisg IGludCBlcnIgPSBmZWdldGVudiAoJmN1cnJlbnQpOw0KKyAgaWYgKGVyciAhPSAwKQ0KKyAgICBy ZXR1cm4gZXJyOw0KKyAgZXJyID0gZmVzZXRlbnYgKGVudnApOw0KKyAgaWYgKGVyciAhPSAwKQ0K KyAgICByZXR1cm4gZXJyOw0KKyAgcmV0dXJuIGZlcmFpc2VleGNlcHQgKGN1cnJlbnQpOw0KK30N CisNCisjZW5kaWYNCi0tIA0KMi4zNC4xDQoNCg==