From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2125.outbound.protection.outlook.com [40.107.255.125]) by sourceware.org (Postfix) with ESMTPS id 6B5253857736 for ; Mon, 15 May 2023 13:50:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6B5253857736 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=h4x8h2A/A/tr5QUYqQssn9ZU+agk6UUt+fajGCzYeu8lMFsTlj+BA0lulUUJGephHgvqRDcsU8TfEhUaXXfEVtTtvfejifi55O8Lt+Md3ce7i7Q/kagjYluCmEThHiIImi7IxVKwcLNrBWkxIw99KBO9FsHzqBIoVlMCoDjVIAUdCbsvhwUBYoWgm51zdBcS3jCyhfotmLJoN9upvDye8JZoqUVYYVdS3D4WzQuO41xfjQV1fExkpjnjORkzYuPeeVszI5+0IsqokcS/11fyuXuFqXumIDbZwCPmjE2gf7oLkJZ2ExRgj13HwPHa2B+0NzzD6GndVOK4hc86Is/SSQ== 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=EXjZO7ZWEHktjKobUvstUVQeKxi1574XBeGDGsvwf48=; b=J1dl6oIIjI5wRMTzNnaUtYSQNm/75Nq++xh11dj8KpKevlsdKL/tLGWVps5BtGoiTcxTxob3vQKEMtD7sy/FcdL8g7FbonNN2ZDeBHpBKy8UdldPxefCebnBw4iDxQo1hCKAgKWvzB9m5zTUSR6dzBC9vZ274HgiyRSAYplXuC6bqslM1Eg0lzyqGU1SnNiM6Mjzz85+7ycX8JnSah4mLVE9v4xkgvhEiVsjR3VkQYd2cCsJhHaWSQRvHoghWOdFNn94/5xwNC2sgTkS4dXSYQH7kxBtc+eXEiotXnmwIc2ltZZWQno8pzQziCooiojqgHw9nCvBH67OyCek4JpIPw== 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=EXjZO7ZWEHktjKobUvstUVQeKxi1574XBeGDGsvwf48=; b=VMMy+65qNgpVF3P41UwpgHphiy0UxKNI3jGMlZf+ktsgrBJal5F9xc6t0OdCuCv4tplpMQbv6YqJ08V7H2lRhoewBvqfywnari2ibYCJWuo7VwvrTRK3H/4QMLjMKjJzAGpQp3JusQ8sf2JRC9mVS383YNRUHEd7pFDNchUoUTg= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by TYZPR04MB6150.apcprd04.prod.outlook.com (2603:1096:400:25c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.30; Mon, 15 May 2023 13:49:53 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5%7]) with mapi id 15.20.6387.026; Mon, 15 May 2023 13:49:53 +0000 From: Alexey Lapshin To: "jcmvbkbc@gmail.com" CC: Alexey Gerenkov , "newlib@sourceware.org" , Ivan Grokhotkov Subject: [PATCH, RFC v2 3/8] libm: add xtensa port Thread-Topic: [PATCH, RFC v2 3/8] libm: add xtensa port Thread-Index: AQHZhzQg6M8cxCUmF0ySQXHxLR5hgA== Date: Mon, 15 May 2023 13:49:53 +0000 Message-ID: <25fe84381f23d4693a04e393a130ce963243630a.camel@espressif.com> References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> In-Reply-To: <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|TYZPR04MB6150:EE_ x-ms-office365-filtering-correlation-id: ab59235b-237c-4b7e-1a01-08db554b42aa x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: enegb650PN0LwPTRGU9upgQP7qdOzrLm/rpt/205wYabNlnm4k/WQWBCBWA6KCFCc04K2vRA/FN8S/w4q03mU/Qbt8+Sa3q3WeNNlEFRmYbjkmyyoyLrpvEy1lLVUV8fcD+URJlYJuo01xuIGhVsilvBG2KSnebVw8yMzvfL9nOAyHuDITM8Npv+yhgXN+3ke7jWxHNCq4wNPKMKj0qyQUyjNV1Yw8lVjVH2WhhilnVPvozRhM17YCd6sWev5VDxqled4aQnhfoXlqnDfhJKcZfo2uoAyknIbvChW8bmh3w2P0wqJ7N0LgKLVGNydUUWqzcQsXzaweSzv3fkqxreoEWbEVIuCJ9Z93h/yUVt7nnDgt0dggbyXiVwz3YOeJrR9N9L1stEMzAs6P+bhVaEb5qu1z5FWe/KkxkuqfXFKpzgr5pRIB8wtIjZKT9fm+29CezgAtVjloUcrAvps3Av25aS02uEFl5+gldQc8H2GcI1mpYIinigBVC+Mbjne4Dq7BBBDgV6IY0jelEp4dRyI2yTw3ZfkajouRZSOo51RR0gXWmbLQkP4gOgkonPwJUG6lgMPaZUyHjqjkoHaqSq3yUY6eUcnYIaC0S/8SJ0nomGRA4KYS8e6eOq4E9NcPakje9H+9I0IJwYgBIf0x0Hav2SE+poUgJ57wsV/X+10DpBzf0bjPpDXccKtAxndDIk x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB5736.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(376002)(396003)(366004)(39840400004)(451199021)(83380400001)(66476007)(66556008)(64756008)(66446008)(66946007)(91956017)(76116006)(2616005)(6486002)(26005)(6506007)(55236004)(6512007)(107886003)(478600001)(54906003)(71200400001)(186003)(30864003)(44832011)(86362001)(8676002)(8936002)(5660300002)(2906002)(36756003)(41300700001)(38070700005)(4326008)(6916009)(316002)(38100700002)(122000001)(84970400001)(66899021)(2004002)(547064002)(559001)(579004)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cGxpZzYvZ2pGOUJOY01CMGlZN3hqVFpFQnA2WDNlNDB2VmlBOEN2M0k3UW1H?= =?utf-8?B?TldVdEU3K29KU01Ca1V3UXB3UHc2WEZEdE5ETHF2M3huaEtFVlh4VVB0UGtN?= =?utf-8?B?V0tpT3lUWFVWVHhHR2ZVV0dWbk1vaXZtVVdSdnNsM1lraWpYWFJ5SzkydXZR?= =?utf-8?B?Ukk1aDNuODdjZlZXYVZ1ZnZkZTZyMEsxNTI0SGhncDNSakp1TUUrRGJRR1VV?= =?utf-8?B?dzVjUFBWRTRCWXdhcW5NYVpuK0xtaHNGc1F5TVg1b1dmMjZ0OWJIRDlJZkpn?= =?utf-8?B?TDllcUJOcUhPMlJSK2pleUJFZW91WlZzdm8rQlA3cUp5WjUyZ0R3STl1RVBR?= =?utf-8?B?TmR3OXlwWUJ1VXF1M3VQOGJVNmtFQ2FOU0cwbTlOSVlYWjZEUTY4K09jS2dB?= =?utf-8?B?eVAzMUlWQlpWVUVocVRLdHJVbmRaMlJQYk8rOWJ6b2FFUnlTdkRJZDAzTmFI?= =?utf-8?B?UGcrcDFWMS80eTM4UEZFV3ZqSXk2U2M4L0pFdWRTSjlUcCtPRU4wb0pFWmJG?= =?utf-8?B?MURQR0daM0RsazNUbEZwNXNyUW9pYmhtZEJvckszK1NWKzF2SDV3bVlINlNq?= =?utf-8?B?ZWVuSUlqTlBKMXhxYTVVOElZRDRURDBKeTJ5eHdxMFd3dlNiV25ZZm1LS2tq?= =?utf-8?B?Yyt3d0RKUWRNMVZjaHVPUCtrdGtHaE1KQ2hwWnV2WVhIODRTdlhUSzlKU2tL?= =?utf-8?B?NzREZitFTmcwakxNcWRRcCsyNEpVSUgyenJzRmdsRmNFYk9yaGwvV0RsZzgy?= =?utf-8?B?ZnhpK3BYL0FjRlRzRlFHdm9ubEFyRTBFZHZESWREbW1EVlF6TnhWNllzYlE5?= =?utf-8?B?T3BtNXd1aTN6S2ROY3FlbE01Uy8vZlZsSUxxcVFic1R3SktDU0o3K2FOYlVs?= =?utf-8?B?RmJRbFc4NzlPSzBCZ2pOSEtRd3RDK1NzeC8wd0xhOGdmL0YyL1VocUdHeFlX?= =?utf-8?B?Z0pnSkFXdTh3UFIxa2pGeWxuT3JzRmFGcFV5bHVGdEgrYTc2a0M4SXZsK2g0?= =?utf-8?B?Z2xRMGNHYmhqMGRXSjIzazhPOWF6RC91MG11eGRiZWtLL3E0d1dmaExKaGQz?= =?utf-8?B?cmo0UTBObjBXSnRqTEozV1VuWDhMSmxvRStXL3pjdElPNUk3TXVsZ2ZlcTJj?= =?utf-8?B?OHBlaW9OemlIVGltcHVEMGVoQTg3Y2M0NTk2WkZzNmdsQ3NKUEZNbEpmSDJV?= =?utf-8?B?VThHZE9OT29qS2pzTjVCUEJmZnNFSEFObTZrN2V2QzkzdWVUVWE4elRtcTAx?= =?utf-8?B?eCtscmY1Z3E0bE80aU54KzBsb1BvSWVRTktScTRlUWFaS3FkeXFVWVdkekhU?= =?utf-8?B?UjlGaE43VHZCTWIwRUhPQ2Zubk5qdDRhWEw2c0E2NW1hdlZFcXBVQ3VOOFhH?= =?utf-8?B?SnlhYTFHL2NTV0YxVW5ySW5CZWt1WDZLL05xUVE1eU4zanZDbEVNWTA2N1Br?= =?utf-8?B?QWJrNGl0SldSMUhxRXl0VWpiS2JSTXJ1RnBoU01lT2xzZkVpSi9QMXVxVlph?= =?utf-8?B?dDFDdjQ2M2ZYRlJFM1RaYzA4Ri85eHJTR2RNMFVkL1F6R0czOUlYWFdremhp?= =?utf-8?B?TVRSaUszU3FLVytEOEYvekRWY1d3Mkd2bzJmVStzdzYvSnVRSHNqTm93UlBs?= =?utf-8?B?MDBFZVp3M2JYRnlldlcraURMVnJHcVFidHNxejI5M21qdm9MakpSZ3BacnhK?= =?utf-8?B?UitzQ0dydzg1dG8rOHVlUERTOU8wemNiMVN1dnZmTzF5eFAwTmllNEVpakxi?= =?utf-8?B?bFZ6WXJ5QW5HclNRb1N5cmloVDRoMjVQRkZITnVTQm1XbVplSEc1bWxvV1JE?= =?utf-8?B?M084K0NGMHAzYWFOUFZMZjEwaDZxck1HeTRFaGJYZDR2NlA4bHhwNjV3RS9D?= =?utf-8?B?anBpMWdmanpNbHpncWJBRjdrdGs2TmxXS3lzcE55T1BPRnNwV3c3Z1c4Vjl2?= =?utf-8?B?MVBVRUJNYklMTCtrZ05NMWRIZDFCUWdXaWtUNTh6Qmo0cXZHT3NBVlJzL0I5?= =?utf-8?B?ZFVSY1NyS2xZd2s3M241eG1wN0swNGNyckl1U3NTTlNvVGM0WGFXMGtnakpT?= =?utf-8?B?OVVCeFl1RkVmMktSR0x0N0xuRWordjZ3WU5IcWJsMFRtTWRJeEZDdnMxR29m?= =?utf-8?B?MHBoeW1yRTRzYm04bjFJUXpKNUdZajFCWGV3dXc5RURLNldSaU9hQkJ6bnJC?= =?utf-8?Q?1WCsPjnXLcPOu+O1/9h6WNQ=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <831DEB31AE1C7E468289197CE7419DDD@apcprd04.prod.outlook.com> 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: ab59235b-237c-4b7e-1a01-08db554b42aa X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2023 13:49:53.1839 (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: xSgZ/64eEZKFQwKObvUvAXeuyrWsO/V44iuaR/teoaCcy0UXGlp3fp/fdvX1UsM4q0VImUHjQxZ5YhV0exaS6IcICN9vZnpkcrJLHVsdjeA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR04MB6150 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_LINEPADDING,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: bmV3bGliOg0KICAgICAgICAqIGxpYm0vbWFjaGluZS9jb25maWd1cmU6IGFkZCB4dGVuc2EgcG9y dA0KICAgICAgICAqIGxpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZpbGUuYW06IGluaXRpYWwgY29t bWl0DQogICAgICAgICogbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5pbjogTGlrZXdpc2Uu DQogICAgICAgICogbGlibS9tYWNoaW5lL3h0ZW5zYS9hY2xvY2FsLm00OiBMaWtld2lzZS4NCiAg ICAgICAgKiBsaWJtL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZTogTGlrZXdpc2UuDQogICAgICAg ICogbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUuaW46IExpa2V3aXNlLg0KICAgICAgICAq IGxpYm0vbWFjaGluZS94dGVuc2EvZmVjbGVhcmV4Y2VwdC5jOiBMaWtld2lzZS4NCiAgICAgICAg KiBsaWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZW52LmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp Ym0vbWFjaGluZS94dGVuc2EvZmVnZXRleGNlcHQuYzogTGlrZXdpc2UuDQogICAgICAgICogbGli bS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcuYzogTGlrZXdpc2UuDQogICAgICAgICog bGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldHJvdW5kLmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp Ym0vbWFjaGluZS94dGVuc2EvZmVob2xkZXhjZXB0LmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxp Ym0vbWFjaGluZS94dGVuc2EvZmVyYWlzZWV4Y2VwdC5jOiBMaWtld2lzZS4NCiAgICAgICAgKiBs aWJtL21hY2hpbmUveHRlbnNhL2ZldGVzdGV4Y2VwdC5jOiBMaWtld2lzZS4NCiAgICAgICAgKiBs aWJtL21hY2hpbmUveHRlbnNhL2ZldXBkYXRlZW52LmM6IExpa2V3aXNlLg0KLS0tDQogbmV3bGli L2xpYm0vbWFjaGluZS9jb25maWd1cmUgICAgICAgICAgICAgICAgfCAgICAzICsNCiBuZXdsaWIv bGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5hbSAgICAgICB8ICAgMjEgKw0KIG5ld2xpYi9s aWJtL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmluICAgICAgIHwgIDQ2NyArKw0KIG5ld2xpYi9s aWJtL21hY2hpbmUveHRlbnNhL2FjbG9jYWwubTQgICAgICAgIHwgIDg4MCArKysrDQogbmV3bGli L2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlICAgICAgICAgfCA0NjIzICsrKysrKysrKysr KysrKysrKw0KIG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZS5pbiAgICAgIHwg ICAxNCArDQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVjbGVhcmV4Y2VwdC5jICAgfCAg IDQ5ICsNCiBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGVudi5jICAgICAgICB8ICAg NTYgKw0KIG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZXhjZXB0LmMgICAgIHwgICA2 NyArDQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRleGNlcHRmbGFnLmMgfCAgIDY0 ICsNCiBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldHJvdW5kLmMgICAgICB8ICAgNTAg Kw0KIG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlaG9sZGV4Y2VwdC5jICAgIHwgICA1NSAr DQogbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVyYWlzZWV4Y2VwdC5jICAgfCAgIDUwICsN CiBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXRlc3RleGNlcHQuYyAgICB8ICAgNDEgKw0K IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZldXBkYXRlZW52LmMgICAgIHwgICA0NSArDQog MTUgZmlsZXMgY2hhbmdlZCwgNjQ4NSBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmFtDQogY3JlYXRlIG1vZGUgMTAw NjQ0IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL01ha2VmaWxlLmluDQogY3JlYXRlIG1vZGUg MTAwNjQ0IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2FjbG9jYWwubTQNCiBjcmVhdGUgbW9k ZSAxMDA3NTUgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlDQogY3JlYXRlIG1v ZGUgMTAwNjQ0IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2NvbmZpZ3VyZS5pbg0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWNsZWFyZXhjZXB0LmMN CiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRlbnYu Yw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4 Y2VwdC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2Zl Z2V0ZXhjZXB0ZmxhZy5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJtL21hY2hpbmUv eHRlbnNhL2ZlZ2V0cm91bmQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGlibS9tYWNo aW5lL3h0ZW5zYS9mZWhvbGRleGNlcHQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGli bS9tYWNoaW5lL3h0ZW5zYS9mZXJhaXNlZXhjZXB0LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3 bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmV0ZXN0ZXhjZXB0LmMNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmV1cGRhdGVlbnYuYw0KDQpkaWZmIC0tZ2l0 IGEvbmV3bGliL2xpYm0vbWFjaGluZS9jb25maWd1cmUgYi9uZXdsaWIvbGlibS9tYWNoaW5lL2Nv bmZpZ3VyZQ0KaW5kZXggOTM4MDk0NzEzLi42MjA5NjM5OWMgMTAwNzU1DQotLS0gYS9uZXdsaWIv bGlibS9tYWNoaW5lL2NvbmZpZ3VyZQ0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS9jb25maWd1 cmUNCkBAIC03OTQsNiArNzk0LDcgQEAgcHJ1DQogc3B1DQogcmlzY3YNCiB4ODZfNjQNCit4dGVu c2ENCiBwb3dlcnBjDQogc3BhcmMNCiBtaXBzJw0KQEAgLTExODI0LDYgKzExODI1LDggQEAgc3Vi ZGlycz0iJHN1YmRpcnMgYWFyY2g2NCINCiAJcmlzY3YpIHN1YmRpcnM9IiRzdWJkaXJzIHJpc2N2 Ig0KICA7Ow0KIAl4ODZfNjQpIHN1YmRpcnM9IiRzdWJkaXJzIHg4Nl82NCINCisgOzsNCisJeHRl bnNhKSBzdWJkaXJzPSIkc3ViZGlycyB4dGVuc2EiDQogIDs7DQogCXBvd2VycGMpIHN1YmRpcnM9 IiRzdWJkaXJzIHBvd2VycGMiDQogIDs7DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGlu ZS94dGVuc2EvTWFrZWZpbGUuYW0gYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmls ZS5hbQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNTc2ZmU3NzUyDQot LS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5h bQ0KQEAgLTAsMCArMSwyMSBAQA0KKyMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2Ug dG8gZ2VuZXJhdGUgTWFrZWZpbGUuaW4NCisNCitBVVRPTUFLRV9PUFRJT05TID0gY3lnbnVzDQor DQorSU5DTFVERVMgPSAtSSAkKG5ld2xpYl9iYXNlZGlyKS8uLi9uZXdsaWIvbGlibS9jb21tb24g JChORVdMSUJfQ0ZMQUdTKSBcDQorCSQoQ1JPU1NfQ0ZMQUdTKSAkKFRBUkdFVF9DRkxBR1MpDQor DQorTElCX1NPVVJDRVMgPSBmZWNsZWFyZXhjZXB0LmMgZmVyYWlzZWV4Y2VwdC5jIGZldXBkYXRl ZW52LmMJXA0KKwlmZWdldHJvdW5kLmMgZmVnZXRlbnYuYyBmZWhvbGRleGNlcHQuYyBmZXRlc3Rl eGNlcHQuYwlcDQorCWZlZ2V0ZXhjZXB0ZmxhZy5jIGZlZ2V0ZXhjZXB0LmMNCisNCitub2luc3Rf TElCUkFSSUVTID0gbGliLmENCitsaWJfYV9TT1VSQ0VTID0gJChMSUJfU09VUkNFUykNCitsaWJf YV9DRkxBR1MgPSAkKEFNX0NGTEFHUykNCitsaWJfYV9DQ0FTRkxBR1MgPSAkKEFNX0NDQVNGTEFH UykNCitub2luc3RfREFUQSA9DQorDQoraW5jbHVkZSAkKHNyY2RpcikvLi4vLi4vLi4vTWFrZWZp bGUuc2hhcmVkDQorDQorQUNMT0NBTF9BTUZMQUdTID0gLUkgLi4vLi4vLi4gLUkgLi4vLi4vLi4v Li4NCitDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUyA9ICQobmV3bGliX2Jhc2VkaXIpL2NvbmZp Z3VyZS5ob3N0DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvTWFrZWZp bGUuaW4gYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5pbg0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uY2M3YmFiM2ZjDQotLS0gL2Rldi9udWxsDQor KysgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9NYWtlZmlsZS5pbg0KQEAgLTAsMCArMSw0 NjcgQEANCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjkuNSBmcm9tIE1h a2VmaWxlLmFtLg0KKyMgQGNvbmZpZ3VyZV9pbnB1dEANCisNCisjIENvcHlyaWdodCAoQykgMTk5 NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwNCisjIDIw MDMsIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMgVGhpcyBN YWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u DQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRl IGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBu b3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dA0KKyMgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0K KyMgUEFSVElDVUxBUiBQVVJQT1NFLg0KKw0KK0BTRVRfTUFLRUANCisNCisNCitTT1VSQ0VTID0g JChsaWJfYV9TT1VSQ0VTKQ0KKw0KK3NyY2RpciA9IEBzcmNkaXJADQordG9wX3NyY2RpciA9IEB0 b3Bfc3JjZGlyQA0KK1ZQQVRIID0gQHNyY2RpckANCitwa2dkYXRhZGlyID0gJChkYXRhZGlyKS9A UEFDS0FHRUANCitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VADQorcGtnaW5jbHVkZWRp ciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VADQordG9wX2J1aWxkZGlyID0gLg0KK2FtX19jZCA9 IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QNCitJTlNU QUxMID0gQElOU1RBTExADQoraW5zdGFsbF9zaF9EQVRBID0gJChpbnN0YWxsX3NoKSAtYyAtbSA2 NDQNCitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jDQoraW5zdGFsbF9zaF9T Q1JJUFQgPSAkKGluc3RhbGxfc2gpIC1jDQorSU5TVEFMTF9IRUFERVIgPSAkKElOU1RBTExfREFU QSkNCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpDQorTk9STUFMX0lOU1RB TEwgPSA6DQorUFJFX0lOU1RBTEwgPSA6DQorUE9TVF9JTlNUQUxMID0gOg0KK05PUk1BTF9VTklO U1RBTEwgPSA6DQorUFJFX1VOSU5TVEFMTCA9IDoNCitQT1NUX1VOSU5TVEFMTCA9IDoNCitidWls ZF90cmlwbGV0ID0gQGJ1aWxkQA0KK2hvc3RfdHJpcGxldCA9IEBob3N0QA0KK0RJU1RfQ09NTU9O ID0gJChzcmNkaXIpLy4uLy4uLy4uL01ha2VmaWxlLnNoYXJlZCBcDQorCSQoc3JjZGlyKS8uLi8u Li8uLi8uLi9jb25maWcuZ3Vlc3MgXA0KKwkkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29uZmlnLnN1 YiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXA0KKwkkKHNyY2RpcikvTWFrZWZpbGUuYW0gJCh0b3Bf c3JjZGlyKS9jb25maWd1cmUgXA0KKwkkKGFtX19jb25maWd1cmVfZGVwcykgJChzcmNkaXIpLy4u Ly4uLy4uLy4uL21raW5zdGFsbGRpcnMgXA0KKwkkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29tcGls ZSAkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29tcGlsZSBcDQorCSQoc3JjZGlyKS8uLi8uLi8uLi8u Li9jb21waWxlICQoc3JjZGlyKS8uLi8uLi8uLi8uLi9jb21waWxlIFwNCisJJChzcmNkaXIpLy4u Ly4uLy4uLy4uL2NvbXBpbGUgJChzcmNkaXIpLy4uLy4uLy4uLy4uL2NvbXBpbGUgXA0KKwkkKHNy Y2RpcikvLi4vLi4vLi4vLi4vY29tcGlsZSAkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29tcGlsZSBc DQorCSQoc3JjZGlyKS8uLi8uLi8uLi8uLi9jb21waWxlDQorc3ViZGlyID0gLg0KK0FDTE9DQUxf TTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQNCithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0 b3Bfc3JjZGlyKS8uLi8uLi8uLi9hY2luY2x1ZGUubTQgXA0KKwkkKHRvcF9zcmNkaXIpL2NvbmZp Z3VyZS5pbg0KK2FtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChD T05GSUdVUkVfREVQRU5ERU5DSUVTKSBcDQorCSQoQUNMT0NBTF9NNCkNCithbV9fQ09ORklHX0RJ U1RDTEVBTl9GSUxFUyA9IGNvbmZpZy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXA0K KyBjb25maWd1cmUubGluZW5vIGNvbmZpZ3VyZS5zdGF0dXMubGluZW5vDQorbWtpbnN0YWxsZGly cyA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvLi4vLi4vLi4vLi4vbWtpbnN0YWxsZGlycw0KK0NP TkZJR19DTEVBTl9GSUxFUyA9DQorTElCUkFSSUVTID0gJChub2luc3RfTElCUkFSSUVTKQ0KK0FS RkxBR1MgPSBjcnUNCitsaWJfYV9BUiA9ICQoQVIpICQoQVJGTEFHUykNCitsaWJfYV9MSUJBREQg PQ0KK2FtX19vYmplY3RzXzEgPSBsaWJfYS1mZWNsZWFyZXhjZXB0LiQoT0JKRVhUKSBcDQorCWxp Yl9hLWZlcmFpc2VleGNlcHQuJChPQkpFWFQpIGxpYl9hLWZldXBkYXRlZW52LiQoT0JKRVhUKSBc DQorCWxpYl9hLWZlZ2V0cm91bmQuJChPQkpFWFQpIGxpYl9hLWZlZ2V0ZW52LiQoT0JKRVhUKSBc DQorCWxpYl9hLWZlaG9sZGV4Y2VwdC4kKE9CSkVYVCkgbGliX2EtZmV0ZXN0ZXhjZXB0LiQoT0JK RVhUKSBcDQorCWxpYl9hLWZlZ2V0ZXhjZXB0ZmxhZy4kKE9CSkVYVCkgbGliX2EtZmVnZXRleGNl cHQuJChPQkpFWFQpDQorYW1fbGliX2FfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMSkNCitsaWJf YV9PQkpFQ1RTID0gJChhbV9saWJfYV9PQkpFQ1RTKQ0KK0RFRkFVTFRfSU5DTFVERVMgPSAtSS4g LUkkKHNyY2RpcikNCitkZXBjb21wID0NCithbV9fZGVwZmlsZXNfbWF5YmUgPQ0KK0NPTVBJTEUg PSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBG TEFHUykgXA0KKwkkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpDQorQ0NMRCA9ICQo Q0MpDQorTElOSyA9ICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1Mp ICQoTERGTEFHUykgLW8gJEANCitTT1VSQ0VTID0gJChsaWJfYV9TT1VSQ0VTKQ0KK0RBVEEgPSAk KG5vaW5zdF9EQVRBKQ0KK0VUQUdTID0gZXRhZ3MNCitDVEFHUyA9IGN0YWdzDQorQUNMT0NBTCA9 IEBBQ0xPQ0FMQA0KK0FNREVQX0ZBTFNFID0gQEFNREVQX0ZBTFNFQA0KK0FNREVQX1RSVUUgPSBA QU1ERVBfVFJVRUANCitBTVRBUiA9IEBBTVRBUkANCitBUiA9IEBBUkANCitBUyA9IEBBU0ANCitB VVRPQ09ORiA9IEBBVVRPQ09ORkANCitBVVRPSEVBREVSID0gQEFVVE9IRUFERVJADQorQVVUT01B S0UgPSBAQVVUT01BS0VADQorQVdLID0gQEFXS0ANCitDQyA9IEBDQ0ANCitDQ0FTID0gQENDQVNA DQorQ0NBU0ZMQUdTID0gQENDQVNGTEFHU0ANCitDQ0RFUE1PREUgPSBAQ0NERVBNT0RFQA0KK0NZ R1BBVEhfVyA9IEBDWUdQQVRIX1dADQorREVGUyA9IEBERUZTQA0KK0RFUERJUiA9IEBERVBESVJA DQorRUNIT19DID0gQEVDSE9fQ0ANCitFQ0hPX04gPSBARUNIT19OQA0KK0VDSE9fVCA9IEBFQ0hP X1RADQorRUxJWF9MRVZFTF8wX0ZBTFNFID0gQEVMSVhfTEVWRUxfMF9GQUxTRUANCitFTElYX0xF VkVMXzBfVFJVRSA9IEBFTElYX0xFVkVMXzBfVFJVRUANCitFTElYX0xFVkVMXzFfRkFMU0UgPSBA RUxJWF9MRVZFTF8xX0ZBTFNFQA0KK0VMSVhfTEVWRUxfMV9UUlVFID0gQEVMSVhfTEVWRUxfMV9U UlVFQA0KK0VMSVhfTEVWRUxfMl9GQUxTRSA9IEBFTElYX0xFVkVMXzJfRkFMU0VADQorRUxJWF9M RVZFTF8yX1RSVUUgPSBARUxJWF9MRVZFTF8yX1RSVUVADQorRUxJWF9MRVZFTF8zX0ZBTFNFID0g QEVMSVhfTEVWRUxfM19GQUxTRUANCitFTElYX0xFVkVMXzNfVFJVRSA9IEBFTElYX0xFVkVMXzNf VFJVRUANCitFTElYX0xFVkVMXzRfRkFMU0UgPSBARUxJWF9MRVZFTF80X0ZBTFNFQA0KK0VMSVhf TEVWRUxfNF9UUlVFID0gQEVMSVhfTEVWRUxfNF9UUlVFQA0KK0lOU1RBTExfREFUQSA9IEBJTlNU QUxMX0RBVEFADQorSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUANCitJTlNUQUxM X1NDUklQVCA9IEBJTlNUQUxMX1NDUklQVEANCitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5T VEFMTF9TVFJJUF9QUk9HUkFNQA0KK0xERkxBR1MgPSBATERGTEFHU0ANCitMSUJPQkpTID0gQExJ Qk9CSlNADQorTElCUyA9IEBMSUJTQA0KK0xUTElCT0JKUyA9IEBMVExJQk9CSlNADQorTUFJTlQg PSBATUFJTlRADQorTUFJTlRBSU5FUl9NT0RFX0ZBTFNFID0gQE1BSU5UQUlORVJfTU9ERV9GQUxT RUANCitNQUlOVEFJTkVSX01PREVfVFJVRSA9IEBNQUlOVEFJTkVSX01PREVfVFJVRUANCitNQUtF SU5GTyA9IEBNQUtFSU5GT0ANCitNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFID0gQE1BWV9TVVBQ TFlfU1lTQ0FMTFNfRkFMU0VADQorTUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFID0gQE1BWV9TVVBQ TFlfU1lTQ0FMTFNfVFJVRUANCitORVdMSUJfQ0ZMQUdTID0gQE5FV0xJQl9DRkxBR1NADQorTk9f SU5DTFVERV9MSVNUID0gQE5PX0lOQ0xVREVfTElTVEANCitPQkpFWFQgPSBAT0JKRVhUQA0KK1BB Q0tBR0UgPSBAUEFDS0FHRUANCitQQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9S VEANCitQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQA0KK1BBQ0tBR0VfU1RSSU5HID0gQFBB Q0tBR0VfU1RSSU5HQA0KK1BBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVADQorUEFD S0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxADQorUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVS U0lPTkANCitQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkANCitSQU5MSUIgPSBAUkFO TElCQA0KK1JFQURFTEYgPSBAUkVBREVMRkANCitTRVRfTUFLRSA9IEBTRVRfTUFLRUANCitTSEVM TCA9IEBTSEVMTEANCitTVFJJUCA9IEBTVFJJUEANCitVU0VfTElCVE9PTF9GQUxTRSA9IEBVU0Vf TElCVE9PTF9GQUxTRUANCitVU0VfTElCVE9PTF9UUlVFID0gQFVTRV9MSUJUT09MX1RSVUVADQor VkVSU0lPTiA9IEBWRVJTSU9OQA0KK2FleHQgPSBAYWV4dEANCithbV9fZmFzdGRlcENDX0ZBTFNF ID0gQGFtX19mYXN0ZGVwQ0NfRkFMU0VADQorYW1fX2Zhc3RkZXBDQ19UUlVFID0gQGFtX19mYXN0 ZGVwQ0NfVFJVRUANCithbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUANCithbV9fbGVhZGluZ19k b3QgPSBAYW1fX2xlYWRpbmdfZG90QA0KK2FtX19xdW90ZSA9IEBhbV9fcXVvdGVADQorYW1fX3Rh ciA9IEBhbV9fdGFyQA0KK2FtX191bnRhciA9IEBhbV9fdW50YXJADQorYmluZGlyID0gQGJpbmRp ckANCitidWlsZCA9IEBidWlsZEANCitidWlsZF9hbGlhcyA9IEBidWlsZF9hbGlhc0ANCitidWls ZF9jcHUgPSBAYnVpbGRfY3B1QA0KK2J1aWxkX29zID0gQGJ1aWxkX29zQA0KK2J1aWxkX3ZlbmRv ciA9IEBidWlsZF92ZW5kb3JADQorZGF0YWRpciA9IEBkYXRhZGlyQA0KK2RhdGFyb290ZGlyID0g QGRhdGFyb290ZGlyQA0KK2RvY2RpciA9IEBkb2NkaXJADQorZHZpZGlyID0gQGR2aWRpckANCitl eGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEANCitob3N0ID0gQGhvc3RADQoraG9zdF9hbGlhcyA9 IEBob3N0X2FsaWFzQA0KK2hvc3RfY3B1ID0gQGhvc3RfY3B1QA0KK2hvc3Rfb3MgPSBAaG9zdF9v c0ANCitob3N0X3ZlbmRvciA9IEBob3N0X3ZlbmRvckANCitodG1sZGlyID0gQGh0bWxkaXJADQor aW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQA0KK2luZm9kaXIgPSBAaW5mb2RpckANCitpbnN0YWxs X3NoID0gQGluc3RhbGxfc2hADQorbGliZGlyID0gQGxpYmRpckANCitsaWJleGVjZGlyID0gQGxp YmV4ZWNkaXJADQorbGlibV9tYWNoaW5lX2RpciA9IEBsaWJtX21hY2hpbmVfZGlyQA0KK2xvY2Fs ZWRpciA9IEBsb2NhbGVkaXJADQorbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQA0KK2xw ZnggPSBAbHBmeEANCittYWNoaW5lX2RpciA9IEBtYWNoaW5lX2RpckANCittYW5kaXIgPSBAbWFu ZGlyQA0KK21rZGlyX3AgPSBAbWtkaXJfcEANCituZXdsaWJfYmFzZWRpciA9IEBuZXdsaWJfYmFz ZWRpckANCitvZXh0ID0gQG9leHRADQorb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQA0K K3BkZmRpciA9IEBwZGZkaXJADQorcHJlZml4ID0gQHByZWZpeEANCitwcm9ncmFtX3RyYW5zZm9y bV9uYW1lID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVADQorcHNkaXIgPSBAcHNkaXJADQorc2Jp bmRpciA9IEBzYmluZGlyQA0KK3NoYXJlZHN0YXRlZGlyID0gQHNoYXJlZHN0YXRlZGlyQA0KK3N5 c19kaXIgPSBAc3lzX2RpckANCitzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJADQordGFyZ2V0X2Fs aWFzID0gQHRhcmdldF9hbGlhc0ANCitBVVRPTUFLRV9PUFRJT05TID0gY3lnbnVzDQorSU5DTFVE RVMgPSAtSSAkKG5ld2xpYl9iYXNlZGlyKS8uLi9uZXdsaWIvbGlibS9jb21tb24gJChORVdMSUJf Q0ZMQUdTKSBcDQorCSQoQ1JPU1NfQ0ZMQUdTKSAkKFRBUkdFVF9DRkxBR1MpDQorDQorTElCX1NP VVJDRVMgPSBmZWNsZWFyZXhjZXB0LmMgZmVyYWlzZWV4Y2VwdC5jIGZldXBkYXRlZW52LmMJXA0K KwlmZWdldHJvdW5kLmMgZmVnZXRlbnYuYyBmZWhvbGRleGNlcHQuYyBmZXRlc3RleGNlcHQuYwlc DQorCWZlZ2V0ZXhjZXB0ZmxhZy5jIGZlZ2V0ZXhjZXB0LmMNCisNCitub2luc3RfTElCUkFSSUVT ID0gbGliLmENCitsaWJfYV9TT1VSQ0VTID0gJChMSUJfU09VUkNFUykNCitsaWJfYV9DRkxBR1Mg PSAkKEFNX0NGTEFHUykNCitsaWJfYV9DQ0FTRkxBR1MgPSAkKEFNX0NDQVNGTEFHUykNCitub2lu c3RfREFUQSA9IA0KK0FDTE9DQUxfQU1GTEFHUyA9IC1JIC4uLy4uLy4uIC1JIC4uLy4uLy4uLy4u DQorQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMgPSAkKG5ld2xpYl9iYXNlZGlyKS9jb25maWd1 cmUuaG9zdA0KK2FsbDogYWxsLWFtDQorDQorLlNVRkZJWEVTOg0KKy5TVUZGSVhFUzogLmMgLm8g Lm9iag0KK2FtLS1yZWZyZXNoOg0KKwlAOg0KKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5U QUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChzcmNkaXIpLy4uLy4uLy4u L01ha2VmaWxlLnNoYXJlZCAkKGFtX19jb25maWd1cmVfZGVwcykNCisJQGZvciBkZXAgaW4gJD87 IGRvIFwNCisJICBjYXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwNCisJICAgICokJGRl cCopIFwNCisJICAgICAgZWNobyAnIGNkICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWN5Z251 cyAnOyBcDQorCSAgICAgIGNkICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWN5Z251cyAgXA0K KwkJJiYgZXhpdCAwOyBcDQorCSAgICAgIGV4aXQgMTs7IFwNCisJICBlc2FjOyBcDQorCWRvbmU7 IFwNCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1jeWdudXMgIE1h a2VmaWxlJzsgXA0KKwljZCAkKHRvcF9zcmNkaXIpICYmIFwNCisJICAkKEFVVE9NQUtFKSAtLWN5 Z251cyAgTWFrZWZpbGUNCisuUFJFQ0lPVVM6IE1ha2VmaWxlDQorTWFrZWZpbGU6ICQoc3JjZGly KS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cw0KKwlAY2FzZSAnJD8n IGluIFwNCisJICAqY29uZmlnLnN0YXR1cyopIFwNCisJICAgIGVjaG8gJyAkKFNIRUxMKSAuL2Nv bmZpZy5zdGF0dXMnOyBcDQorCSAgICAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXM7OyBcDQorCSAg KikgXA0KKwkgICAgZWNobyAnIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZp Zy5zdGF0dXMgJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXA0KKwkgICAgY2QgJCh0b3BfYnVp bGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQCAkKGFtX19kZXBmaWxlc19tYXli ZSk7OyBcDQorCWVzYWM7DQorDQorJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9w X3NyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpDQorCSQoU0hF TEwpIC4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sNCisNCiskKHRvcF9zcmNkaXIpL2NvbmZpZ3Vy ZTogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKGFtX19jb25maWd1cmVfZGVwcykNCisJY2QgJChz cmNkaXIpICYmICQoQVVUT0NPTkYpDQorJChBQ0xPQ0FMX000KTogQE1BSU5UQUlORVJfTU9ERV9U UlVFQCAkKGFtX19hY2xvY2FsX200X2RlcHMpDQorCWNkICQoc3JjZGlyKSAmJiAkKEFDTE9DQUwp ICQoQUNMT0NBTF9BTUZMQUdTKQ0KKw0KK2NsZWFuLW5vaW5zdExJQlJBUklFUzoNCisJLXRlc3Qg LXogIiQobm9pbnN0X0xJQlJBUklFUykiIHx8IHJtIC1mICQobm9pbnN0X0xJQlJBUklFUykNCits aWIuYTogJChsaWJfYV9PQkpFQ1RTKSAkKGxpYl9hX0RFUEVOREVOQ0lFUykgDQorCS1ybSAtZiBs aWIuYQ0KKwkkKGxpYl9hX0FSKSBsaWIuYSAkKGxpYl9hX09CSkVDVFMpICQobGliX2FfTElCQURE KQ0KKwkkKFJBTkxJQikgbGliLmENCisNCittb3N0bHljbGVhbi1jb21waWxlOg0KKwktcm0gLWYg Ki4kKE9CSkVYVCkNCisNCitkaXN0Y2xlYW4tY29tcGlsZToNCisJLXJtIC1mICoudGFiLmMNCisN CisuYy5vOg0KKwkkKENPTVBJTEUpIC1jICQ8DQorDQorLmMub2JqOg0KKwkkKENPTVBJTEUpIC1j IGAkKENZR1BBVEhfVykgJyQ8J2ANCisNCitsaWJfYS1mZWNsZWFyZXhjZXB0Lm86IGZlY2xlYXJl eGNlcHQuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykg JChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAt byBsaWJfYS1mZWNsZWFyZXhjZXB0Lm8gYHRlc3QgLWYgJ2ZlY2xlYXJleGNlcHQuYycgfHwgZWNo byAnJChzcmNkaXIpLydgZmVjbGVhcmV4Y2VwdC5jDQorDQorbGliX2EtZmVjbGVhcmV4Y2VwdC5v Ymo6IGZlY2xlYXJleGNlcHQuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykg JChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQo Q0ZMQUdTKSAtYyAtbyBsaWJfYS1mZWNsZWFyZXhjZXB0Lm9iaiBgaWYgdGVzdCAtZiAnZmVjbGVh cmV4Y2VwdC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2ZlY2xlYXJleGNlcHQuYyc7IGVsc2UgJChD WUdQQVRIX1cpICckKHNyY2RpcikvZmVjbGVhcmV4Y2VwdC5jJzsgZmlgDQorDQorbGliX2EtZmVy YWlzZWV4Y2VwdC5vOiBmZXJhaXNlZXhjZXB0LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRf SU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2Ff Q0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmVyYWlzZWV4Y2VwdC5vIGB0ZXN0IC1mICdm ZXJhaXNlZXhjZXB0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGZlcmFpc2VleGNlcHQuYw0KKw0K K2xpYl9hLWZlcmFpc2VleGNlcHQub2JqOiBmZXJhaXNlZXhjZXB0LmMNCisJJChDQykgJChERUZT KSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxB R1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmVyYWlzZWV4Y2VwdC5v YmogYGlmIHRlc3QgLWYgJ2ZlcmFpc2VleGNlcHQuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdmZXJh aXNlZXhjZXB0LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2ZlcmFpc2VleGNlcHQu Yyc7IGZpYA0KKw0KK2xpYl9hLWZldXBkYXRlZW52Lm86IGZldXBkYXRlZW52LmMNCisJJChDQykg JChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQo Q1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmV1cGRhdGVl bnYubyBgdGVzdCAtZiAnZmV1cGRhdGVlbnYuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZmV1cGRh dGVlbnYuYw0KKw0KK2xpYl9hLWZldXBkYXRlZW52Lm9iajogZmV1cGRhdGVlbnYuYw0KKwkkKEND KSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykg JChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1mZXVwZGF0 ZWVudi5vYmogYGlmIHRlc3QgLWYgJ2ZldXBkYXRlZW52LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAn ZmV1cGRhdGVlbnYuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZmV1cGRhdGVlbnYu Yyc7IGZpYA0KKw0KK2xpYl9hLWZlZ2V0cm91bmQubzogZmVnZXRyb3VuZC5jDQorCSQoQ0MpICQo REVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQ UEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlZ2V0cm91bmQu byBgdGVzdCAtZiAnZmVnZXRyb3VuZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BmZWdldHJvdW5k LmMNCisNCitsaWJfYS1mZWdldHJvdW5kLm9iajogZmVnZXRyb3VuZC5jDQorCSQoQ0MpICQoREVG UykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZM QUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlZ2V0cm91bmQub2Jq IGBpZiB0ZXN0IC1mICdmZWdldHJvdW5kLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZmVnZXRyb3Vu ZC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9mZWdldHJvdW5kLmMnOyBmaWANCisN CitsaWJfYS1mZWdldGVudi5vOiBmZWdldGVudi5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxU X0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9h X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlZ2V0ZW52Lm8gYHRlc3QgLWYgJ2ZlZ2V0 ZW52LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGZlZ2V0ZW52LmMNCisNCitsaWJfYS1mZWdldGVu di5vYmo6IGZlZ2V0ZW52LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQo SU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENG TEFHUykgLWMgLW8gbGliX2EtZmVnZXRlbnYub2JqIGBpZiB0ZXN0IC1mICdmZWdldGVudi5jJzsg dGhlbiAkKENZR1BBVEhfVykgJ2ZlZ2V0ZW52LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNk aXIpL2ZlZ2V0ZW52LmMnOyBmaWANCisNCitsaWJfYS1mZWhvbGRleGNlcHQubzogZmVob2xkZXhj ZXB0LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQo QU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8g bGliX2EtZmVob2xkZXhjZXB0Lm8gYHRlc3QgLWYgJ2ZlaG9sZGV4Y2VwdC5jJyB8fCBlY2hvICck KHNyY2RpcikvJ2BmZWhvbGRleGNlcHQuYw0KKw0KK2xpYl9hLWZlaG9sZGV4Y2VwdC5vYmo6IGZl aG9sZGV4Y2VwdC5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xV REVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1Mp IC1jIC1vIGxpYl9hLWZlaG9sZGV4Y2VwdC5vYmogYGlmIHRlc3QgLWYgJ2ZlaG9sZGV4Y2VwdC5j JzsgdGhlbiAkKENZR1BBVEhfVykgJ2ZlaG9sZGV4Y2VwdC5jJzsgZWxzZSAkKENZR1BBVEhfVykg JyQoc3JjZGlyKS9mZWhvbGRleGNlcHQuYyc7IGZpYA0KKw0KK2xpYl9hLWZldGVzdGV4Y2VwdC5v OiBmZXRlc3RleGNlcHQuYw0KKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJ TkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZM QUdTKSAtYyAtbyBsaWJfYS1mZXRlc3RleGNlcHQubyBgdGVzdCAtZiAnZmV0ZXN0ZXhjZXB0LmMn IHx8IGVjaG8gJyQoc3JjZGlyKS8nYGZldGVzdGV4Y2VwdC5jDQorDQorbGliX2EtZmV0ZXN0ZXhj ZXB0Lm9iajogZmV0ZXN0ZXhjZXB0LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVE RVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdT KSAkKENGTEFHUykgLWMgLW8gbGliX2EtZmV0ZXN0ZXhjZXB0Lm9iaiBgaWYgdGVzdCAtZiAnZmV0 ZXN0ZXhjZXB0LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZmV0ZXN0ZXhjZXB0LmMnOyBlbHNlICQo Q1lHUEFUSF9XKSAnJChzcmNkaXIpL2ZldGVzdGV4Y2VwdC5jJzsgZmlgDQorDQorbGliX2EtZmVn ZXRleGNlcHRmbGFnLm86IGZlZ2V0ZXhjZXB0ZmxhZy5jDQorCSQoQ0MpICQoREVGUykgJChERUZB VUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxp Yl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZlZ2V0ZXhjZXB0ZmxhZy5vIGB0ZXN0 IC1mICdmZWdldGV4Y2VwdGZsYWcuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZmVnZXRleGNlcHRm bGFnLmMNCisNCitsaWJfYS1mZWdldGV4Y2VwdGZsYWcub2JqOiBmZWdldGV4Y2VwdGZsYWcuYw0K KwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBG TEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1m ZWdldGV4Y2VwdGZsYWcub2JqIGBpZiB0ZXN0IC1mICdmZWdldGV4Y2VwdGZsYWcuYyc7IHRoZW4g JChDWUdQQVRIX1cpICdmZWdldGV4Y2VwdGZsYWcuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNy Y2RpcikvZmVnZXRleGNlcHRmbGFnLmMnOyBmaWANCisNCitsaWJfYS1mZWdldGV4Y2VwdC5vOiBm ZWdldGV4Y2VwdC5jDQorCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xV REVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1Mp IC1jIC1vIGxpYl9hLWZlZ2V0ZXhjZXB0Lm8gYHRlc3QgLWYgJ2ZlZ2V0ZXhjZXB0LmMnIHx8IGVj aG8gJyQoc3JjZGlyKS8nYGZlZ2V0ZXhjZXB0LmMNCisNCitsaWJfYS1mZWdldGV4Y2VwdC5vYmo6 IGZlZ2V0ZXhjZXB0LmMNCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5D TFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFH UykgLWMgLW8gbGliX2EtZmVnZXRleGNlcHQub2JqIGBpZiB0ZXN0IC1mICdmZWdldGV4Y2VwdC5j JzsgdGhlbiAkKENZR1BBVEhfVykgJ2ZlZ2V0ZXhjZXB0LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAn JChzcmNkaXIpL2ZlZ2V0ZXhjZXB0LmMnOyBmaWANCit1bmluc3RhbGwtaW5mby1hbToNCisNCitJ RDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQ0KKwlsaXN0PSck KFNPVVJDRVMpICQoSEVBREVSUykgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXA0KKwl1bmlxdWU9 YGZvciBpIGluICQkbGlzdDsgZG8gXA0KKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hv ICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcDQorCSAgZG9uZSB8IFwNCisJICAk KEFXSykgJyAgICB7IGZpbGVzWyQkMF0gPSAxOyB9IFwNCisJICAgICAgIEVORCB7IGZvciAoaSBp biBmaWxlcykgcHJpbnQgaTsgfSdgOyBcDQorCW1raWQgLWZJRCAkJHVuaXF1ZQ0KK3RhZ3M6IFRB R1MNCisNCitUQUdTOiAgJChIRUFERVJTKSAkKFNPVVJDRVMpICAkKFRBR1NfREVQRU5ERU5DSUVT KSBcDQorCQkkKFRBR1NfRklMRVMpICQoTElTUCkNCisJdGFncz07IFwNCisJaGVyZT1gcHdkYDsg XA0KKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7 IFwNCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwNCisJICAgIGlmIHRlc3QgLWYgIiQk aSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXA0KKwkgIGRv bmUgfCBcDQorCSAgJChBV0spICcgICAgeyBmaWxlc1skJDBdID0gMTsgfSBcDQorCSAgICAgICBF TkQgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH0nYDsgXA0KKwlpZiB0ZXN0IC16ICIkKEVU QUdTX0FSR1MpJCR0YWdzJCR1bmlxdWUiOyB0aGVuIDo7IGVsc2UgXA0KKwkgIHRlc3QgLW4gIiQk dW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwNCisJICAkKEVUQUdTKSAkKEVUQUdTRkxB R1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcDQorCSAgICAkJHRhZ3MgJCR1bmlx dWU7IFwNCisJZmkNCitjdGFnczogQ1RBR1MNCitDVEFHUzogICQoSEVBREVSUykgJChTT1VSQ0VT KSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXA0KKwkJJChUQUdTX0ZJTEVTKSAkKExJU1ApDQorCXRh Z3M9OyBcDQorCWhlcmU9YHB3ZGA7IFwNCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICAk KExJU1ApICQoVEFHU19GSUxFUyknOyBcDQorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBc DQorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNk aXIpLyQkaTsgZmk7IFwNCisJICBkb25lIHwgXA0KKwkgICQoQVdLKSAnICAgIHsgZmlsZXNbJCQw XSA9IDE7IH0gXA0KKwkgICAgICAgRU5EIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9J2A7 IFwNCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdGFncyQkdW5pcXVlIiBcDQorCSAgfHwgJChD VEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxBR1MpICQoQ1RBR1NfQVJHUykgXA0KKwkg ICAgICQkdGFncyAkJHVuaXF1ZQ0KKw0KK0dUQUdTOg0KKwloZXJlPWAkKGFtX19jZCkgJCh0b3Bf YnVpbGRkaXIpICYmIHB3ZGAgXA0KKwkgICYmIGNkICQodG9wX3NyY2RpcikgXA0KKwkgICYmIGd0 YWdzIC1pICQoR1RBR1NfQVJHUykgJCRoZXJlDQorDQorZGlzdGNsZWFuLXRhZ3M6DQorCS1ybSAt ZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzDQorY2hlY2stYW06DQorY2hl Y2s6IGNoZWNrLWFtDQorYWxsLWFtOiBNYWtlZmlsZSAkKExJQlJBUklFUykgJChEQVRBKQ0KK2lu c3RhbGxkaXJzOg0KK2luc3RhbGw6IGluc3RhbGwtYW0NCitpbnN0YWxsLWV4ZWM6IGluc3RhbGwt ZXhlYy1hbQ0KK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtDQordW5pbnN0YWxsOiB1bmlu c3RhbGwtYW0NCisNCitpbnN0YWxsLWFtOiBhbGwtYW0NCisJQCQoTUFLRSkgJChBTV9NQUtFRkxB R1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0NCisNCitpbnN0YWxsY2hlY2s6IGlu c3RhbGxjaGVjay1hbQ0KK2luc3RhbGwtc3RyaXA6DQorCSQoTUFLRSkgJChBTV9NQUtFRkxBR1Mp IElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcDQorCSAgaW5zdGFs bF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxB Rz0tcyBcDQorCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcDQorCSAgICBlY2hvICJJTlNUQUxM X1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbA0KK21vc3RseWNsZWFu LWdlbmVyaWM6DQorDQorY2xlYW4tZ2VuZXJpYzoNCisNCitkaXN0Y2xlYW4tZ2VuZXJpYzoNCisJ LXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5f RklMRVMpDQorDQorbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljOg0KKwlAZWNobyAiVGhpcyBjb21t YW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiDQorCUBlY2hvICJpdCBkZWxl dGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiINCitj bGVhbjogY2xlYW4tYW0NCisNCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1ub2luc3RM SUJSQVJJRVMgbW9zdGx5Y2xlYW4tYW0NCisNCitkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQ0KKwkt cm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykNCisJLXJtIC1mIE1ha2VmaWxlDQor ZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJp YyBcDQorCWRpc3RjbGVhbi10YWdzDQorDQorZHZpOiBkdmktYW0NCisNCitkdmktYW06DQorDQor aHRtbDogaHRtbC1hbQ0KKw0KK2luZm86IGluZm8tYW0NCisNCitpbmZvLWFtOg0KKw0KK2luc3Rh bGwtZGF0YS1hbToNCisNCitpbnN0YWxsLWV4ZWMtYW06DQorDQoraW5zdGFsbC1pbmZvOiBpbnN0 YWxsLWluZm8tYW0NCisNCitpbnN0YWxsLW1hbjoNCisNCitpbnN0YWxsY2hlY2stYW06DQorDQor bWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1hbQ0KKwktcm0gLWYgJChhbV9fQ09O RklHX0RJU1RDTEVBTl9GSUxFUykNCisJLXJtIC1yZiAkKHRvcF9zcmNkaXIpL2F1dG9tNHRlLmNh Y2hlDQorCS1ybSAtZiBNYWtlZmlsZQ0KK21haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1h bSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMNCisNCittb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4t YW0NCisNCittb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1n ZW5lcmljDQorDQorcGRmOiBwZGYtYW0NCisNCitwZGYtYW06DQorDQorcHM6IHBzLWFtDQorDQor cHMtYW06DQorDQordW5pbnN0YWxsLWFtOg0KKw0KKy5QSE9OWTogQ1RBR1MgR1RBR1MgYWxsIGFs bC1hbSBhbS0tcmVmcmVzaCBjaGVjayBjaGVjay1hbSBjbGVhbiBcDQorCWNsZWFuLWdlbmVyaWMg Y2xlYW4tbm9pbnN0TElCUkFSSUVTIGN0YWdzIGRpc3RjbGVhbiBcDQorCWRpc3RjbGVhbi1jb21w aWxlIGRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi10YWdzIGR2aSBkdmktYW0gXA0KKwlodG1s IGh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXA0K KwlpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWlu Zm8gXA0KKwlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1zdHJpcCBpbnN0YWxs Y2hlY2sgXA0KKwlpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgbWFpbnRhaW5lci1jbGVhbiBc DQorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21w aWxlIFwNCisJbW9zdGx5Y2xlYW4tZ2VuZXJpYyBwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdW5p bnN0YWxsIFwNCisJdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1pbmZvLWFtDQorDQorb2JqZWN0bGlz dC5hd2suaW46ICQobm9pbnN0X0xUTElCUkFSSUVTKQ0KKwktcm0gLWYgb2JqZWN0bGlzdC5hd2su aW4NCisJZm9yIGkgaW4gYGxzICoubG9gIDsgXA0KKwlkbyBcDQorCSAgZWNobyAkJGkgYHB3ZGAv JCRpID4+IG9iamVjdGxpc3QuYXdrLmluIDsgXA0KKwlkb25lDQorIyBUZWxsIHZlcnNpb25zIFsz LjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4NCisjIE90 aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRl ZC4NCisuTk9FWFBPUlQ6DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2Ev YWNsb2NhbC5tNCBiL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2FjbG9jYWwubTQNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjg3YzBlNzhiYw0KLS0tIC9kZXYvbnVs bA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvYWNsb2NhbC5tNA0KQEAgLTAsMCAr MSw4ODAgQEANCisjIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS45LjUgLSot IEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5 LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LA0KKyMgMjAwNSAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29w eSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25z LCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7 IHdpdGhvdXQNCisjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEENCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4NCisNCisjIENvcHlyaWdo dCAoQykgMjAwMiwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQor Iw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3Ry aWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0 aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBBTV9BVVRPTUFLRV9WRVJTSU9OKFZFUlNJ T04pDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBBdXRvbWFrZSBYLlkgdHJh Y2VzIHRoaXMgbWFjcm8gdG8gZW5zdXJlIGFjbG9jYWwubTQgaGFzIGJlZW4NCisjIGdlbmVyYXRl ZCBmcm9tIHRoZSBtNCBmaWxlcyBhY2NvbXBhbnlpbmcgQXV0b21ha2UgWC5ZLg0KK0FDX0RFRlVO KFtBTV9BVVRPTUFLRV9WRVJTSU9OXSwgW2FtX19hcGlfdmVyc2lvbj0iMS45Il0pDQorDQorIyBB TV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9ODQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gaXQgY2FuIGJlIHRyYWNl ZC4NCisjIFRoaXMgZnVuY3Rpb24gaXMgQUNfUkVRVUlSRWQgYnkgQUNfSU5JVF9BVVRPTUFLRS4N CitBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sDQorCSBbQU1fQVVU T01BS0VfVkVSU0lPTihbMS45LjVdKV0pDQorDQorIyBBTV9BVVhfRElSX0VYUEFORCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMg Q29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQv b3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBs b25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIEZvciBwcm9qZWN0cyB1c2lu ZyBBQ19DT05GSUdfQVVYX0RJUihbZm9vXSksIEF1dG9jb25mIHNldHMNCisjICRhY19hdXhfZGly IHRvIGAkc3JjZGlyL2ZvbycuICBJbiBvdGhlciBwcm9qZWN0cywgaXQgaXMgc2V0IHRvDQorIyBg JHNyY2RpcicsIGAkc3JjZGlyLy4uJywgb3IgYCRzcmNkaXIvLi4vLi4nLg0KKyMNCisjIE9mIGNv dXJzZSwgQXV0b21ha2UgbXVzdCBob25vciB0aGlzIHZhcmlhYmxlIHdoZW5ldmVyIGl0IGNhbGxz IGENCisjIHRvb2wgZnJvbSB0aGUgYXV4aWxpYXJ5IGRpcmVjdG9yeS4gIFRoZSBwcm9ibGVtIGlz IHRoYXQgJHNyY2RpciAoYW5kDQorIyB0aGVyZWZvcmUgJGFjX2F1eF9kaXIgYXMgd2VsbCkgY2Fu IGJlIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSwNCisjIGRlcGVuZGluZyBvbiBob3cgY29u ZmlndXJlIGlzIHJ1bi4gIFRoaXMgaXMgcHJldHR5IGFubm95aW5nLCBzaW5jZQ0KKyMgaXQgbWFr ZXMgJGFjX2F1eF9kaXIgcXVpdGUgdW51c2FibGUgaW4gc3ViZGlyZWN0b3JpZXM6IGluIHRoZSB0 b3ANCisjIHNvdXJjZSBkaXJlY3RvcnksIGFueSBmb3JtIHdpbGwgd29yayBmaW5lLCBidXQgaW4g c3ViZGlyZWN0b3JpZXMgYQ0KKyMgcmVsYXRpdmUgcGF0aCBuZWVkcyB0byBiZSBhZGp1c3RlZCBm aXJzdC4NCisjDQorIyAkYWNfYXV4X2Rpci9taXNzaW5nDQorIyAgICBmYWlscyB3aGVuIGNhbGxl ZCBmcm9tIGEgc3ViZGlyZWN0b3J5IGlmICRhY19hdXhfZGlyIGlzIHJlbGF0aXZlDQorIyAkdG9w X3NyY2Rpci8kYWNfYXV4X2Rpci9taXNzaW5nDQorIyAgICBmYWlscyBpZiAkYWNfYXV4X2RpciBp cyBhYnNvbHV0ZSwNCisjICAgIGZhaWxzIHdoZW4gY2FsbGVkIGZyb20gYSBzdWJkaXJlY3Rvcnkg aW4gYSBWUEFUSCBidWlsZCB3aXRoDQorIyAgICAgICAgICBhIHJlbGF0aXZlICRhY19hdXhfZGly DQorIw0KKyMgVGhlIHJlYXNvbiBvZiB0aGUgbGF0dGVyIGZhaWx1cmUgaXMgdGhhdCAkdG9wX3Ny Y2RpciBhbmQgJGFjX2F1eF9kaXINCisjIGFyZSBib3RoIHByZWZpeGVkIGJ5ICRzcmNkaXIuICBJ biBhbiBpbi1zb3VyY2UgYnVpbGQgdGhpcyBpcyB1c3VhbGx5DQorIyBoYXJtbGVzcyBiZWNhdXNl ICRzcmNkaXIgaXMgYC4nLCBidXQgdGhpbmdzIHdpbGwgYnJva2Ugd2hlbiB5b3UNCisjIHN0YXJ0 IGEgVlBBVEggYnVpbGQgb3IgdXNlIGFuIGFic29sdXRlICRzcmNkaXIuDQorIw0KKyMgU28gd2Ug Y291bGQgdXNlIHNvbWV0aGluZyBzaW1pbGFyIHRvICR0b3Bfc3JjZGlyLyRhY19hdXhfZGlyL21p c3NpbmcsDQorIyBpZmYgd2Ugc3RyaXAgdGhlIGxlYWRpbmcgJHNyY2RpciBmcm9tICRhY19hdXhf ZGlyLiAgVGhhdCB3b3VsZCBiZToNCisjICAgYW1fYXV4X2Rpcj0nXCQodG9wX3NyY2RpcikvJ2Bl eHByICIkYWNfYXV4X2RpciIgOiAiJHNyY2Rpci8vKlwoLipcKSJgDQorIyBhbmQgdGhlbiB3ZSB3 b3VsZCBkZWZpbmUgJE1JU1NJTkcgYXMNCisjICAgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhf ZGlyL21pc3NpbmciDQorIyBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFzIE1JU1NJTkcgaXMgbm90 IGNhbGxlZCBmcm9tIGNvbmZpZ3VyZSwgYmVjYXVzZQ0KKyMgdW5mb3J0dW5hdGVseSAkKHRvcF9z cmNkaXIpIGhhcyBubyBtZWFuaW5nIGluIGNvbmZpZ3VyZS4NCisjIEhvd2V2ZXIgdGhlcmUgYXJl IG90aGVyIHZhcmlhYmxlcywgbGlrZSBDQywgd2hpY2ggYXJlIG9mdGVuIHVzZWQgaW4NCisjIGNv bmZpZ3VyZSwgYW5kIGNvdWxkIHRoZXJlZm9yZSBub3QgdXNlIHRoaXMgImZpeGVkIiAkYWNfYXV4 X2Rpci4NCisjDQorIyBBbm90aGVyIHNvbHV0aW9uLCB1c2VkIGhlcmUsIGlzIHRvIGFsd2F5cyBl eHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4NCisjIGFic29sdXRlIFBBVEguICBUaGUgZHJhd2JhY2sg aXMgdGhhdCB1c2luZyBhYnNvbHV0ZSBwYXRocyBwcmV2ZW50IGENCisjIGNvbmZpZ3VyZWQgdHJl ZSB0byBiZSBtb3ZlZCB3aXRob3V0IHJlY29uZmlndXJhdGlvbi4NCisNCitBQ19ERUZVTihbQU1f QVVYX0RJUl9FWFBBTkRdLA0KK1tkbmwgUmVseSBvbiBhdXRvY29uZiB0byBzZXQgdXAgQ0RQQVRI IHByb3Blcmx5Lg0KK0FDX1BSRVJFUShbMi41MF0pZG5sDQorIyBleHBhbmQgJGFjX2F1eF9kaXIg dG8gYW4gYWJzb2x1dGUgcGF0aA0KK2FtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAN CitdKQ0KKw0KKyMgQU1fQ09ORElUSU9OQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMTk5Nywg MjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5k L29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMg bG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgNw0KKw0KKyMg QU1fQ09ORElUSU9OQUwoTkFNRSwgU0hFTEwtQ09ORElUSU9OKQ0KKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGVmaW5lIGEgY29uZGl0aW9uYWwuDQorQUNfREVG VU4oW0FNX0NPTkRJVElPTkFMXSwNCitbQUNfUFJFUkVRKDIuNTIpZG5sDQorIGlmZWxzZShbJDFd LCBbVFJVRV0sICBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0sDQorCVsk MV0sIFtGQUxTRV0sIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0pXSlkbmwN CitBQ19TVUJTVChbJDFfVFJVRV0pDQorQUNfU1VCU1QoWyQxX0ZBTFNFXSkNCitpZiAkMjsgdGhl bg0KKyAgJDFfVFJVRT0NCisgICQxX0ZBTFNFPScjJw0KK2Vsc2UNCisgICQxX1RSVUU9JyMnDQor ICAkMV9GQUxTRT0NCitmaQ0KK0FDX0NPTkZJR19DT01NQU5EU19QUkUoDQorW2lmIHRlc3QgLXog IiR7JDFfVFJVRX0iICYmIHRlc3QgLXogIiR7JDFfRkFMU0V9IjsgdGhlbg0KKyAgQUNfTVNHX0VS Uk9SKFtbY29uZGl0aW9uYWwgIiQxIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMg bWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dXSkNCitmaV0p XSkNCisNCisNCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywg MjAwNCwgMjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisj IGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQs DQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGlj ZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgOA0KKw0KKyMgVGhlcmUgYXJlIGEgZmV3IGRp cnR5IGhhY2tzIGJlbG93IHRvIGF2b2lkIGxldHRpbmcgYEFDX1BST0dfQ0MnIGJlDQorIyB3cml0 dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcgYWNsb2Nh bC5tNCwNCisjIHdpbGwgdGhpbmsgaXQgc2VlcyBhICp1c2UqLCBhbmQgdGhlcmVmb3JlIHdpbGwg dHJpZ2dlciBhbGwgaXQncw0KKyMgQyBzdXBwb3J0IG1hY2hpbmVyeS4gIEFsc28gbm90ZSB0aGF0 IGl0IG1lYW5zIHRoYXQgYXV0b3NjYW4sIHNlZWluZw0KKyMgQ0MgZXRjLiBpbiB0aGUgTWFrZWZp bGUsIHdpbGwgYXNrIGZvciBhbiBBQ19QUk9HX0NDIHVzZS4uLg0KKw0KKw0KKyMgX0FNX0RFUEVO REVOQ0lFUyhOQU1FKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2VlIGhvdyB0aGUg Y29tcGlsZXIgaW1wbGVtZW50cyBkZXBlbmRlbmN5IGNoZWNraW5nLg0KKyMgTkFNRSBpcyAiQ0Mi LCAiQ1hYIiwgIkdDSiIsIG9yICJPQkpDIi4NCisjIFdlIHRyeSBhIGZldyB0ZWNobmlxdWVzIGFu ZCB1c2UgdGhhdCB0byBzZXQgYSBzaW5nbGUgY2FjaGUgdmFyaWFibGUuDQorIw0KKyMgV2UgZG9u J3QgQUNfUkVRVUlSRSB0aGUgY29ycmVzcG9uZGluZyBBQ19QUk9HX0NDIHNpbmNlIHRoZSBsYXR0 ZXIgd2FzDQorIyBtb2RpZmllZCB0byBpbnZva2UgX0FNX0RFUEVOREVOQ0lFUyhDQyk7IHdlIHdv dWxkIGhhdmUgYSBjaXJjdWxhcg0KKyMgZGVwZW5kZW5jeSwgYW5kIGdpdmVuIHRoYXQgdGhlIHVz ZXIgaXMgbm90IGV4cGVjdGVkIHRvIHJ1biB0aGlzIG1hY3JvLA0KKyMganVzdCByZWx5IG9uIEFD X1BST0dfQ0MuDQorQUNfREVGVU4oW19BTV9ERVBFTkRFTkNJRVNdLA0KK1tBQ19SRVFVSVJFKFtB TV9TRVRfREVQRElSXSlkbmwNCitBQ19SRVFVSVJFKFtBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01N QU5EU10pZG5sDQorQUNfUkVRVUlSRShbQU1fTUFLRV9JTkNMVURFXSlkbmwNCitBQ19SRVFVSVJF KFtBTV9ERVBfVFJBQ0tdKWRubA0KKw0KK2lmZWxzZShbJDFdLCBDQywgICBbZGVwY2M9IiRDQyIg ICBhbV9jb21waWxlcl9saXN0PV0sDQorICAgICAgIFskMV0sIENYWCwgIFtkZXBjYz0iJENYWCIg IGFtX2NvbXBpbGVyX2xpc3Q9XSwNCisgICAgICAgWyQxXSwgT0JKQywgW2RlcGNjPSIkT0JKQyIg YW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBnY2MnXSwNCisgICAgICAgWyQxXSwgR0NKLCAgW2RlcGNj PSIkR0NKIiAgYW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBnY2MnXSwNCisgICAgICAgICAgICAgICAg ICAgW2RlcGNjPSIkJDEiICAgYW1fY29tcGlsZXJfbGlzdD1dKQ0KKw0KK0FDX0NBQ0hFX0NIRUNL KFtkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjY10sDQorICAgICAgICAgICAgICAgW2FtX2N2XyQx X2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlXSwNCitbaWYgdGVzdCAteiAiJEFNREVQX1RSVUUi ICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbg0KKyAgIyBXZSBtYWtlIGEgc3ViZGlyIGFu ZCBkbyB0aGUgdGVzdHMgdGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1cA0KKyAgIyBtYWtp bmcgYm9ndXMgZmlsZXMgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBuZXZlciByZW1vdmUu ICBGb3INCisgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdj YyB0ZXN0IHdpbGwgZW5kIHVwDQorICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0t IGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0DQorICAjIGluIEQnLg0KKyAgbWtk aXIgY29uZnRlc3QuZGlyDQorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhl cndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQ0KKyAgIyB1c2luZyBhIHJlbGF0aXZlIGRp cmVjdG9yeS4NCisgIGNwICIkYW1fZGVwY29tcCIgY29uZnRlc3QuZGlyDQorICBjZCBjb25mdGVz dC5kaXINCisgICMgV2Ugd2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW4gYSBz dWJkaXJlY3RvcnkgYmVjYXVzZQ0KKyAgIyBpdCBoZWxwcyB0byBkZXRlY3QgaW5hcHBsaWNhYmxl IGRlcGVuZGVuY3kgbW9kZXMuICBGb3IgaW5zdGFuY2UNCisgICMgYm90aCBUcnU2NCdzIGNjIGFu ZCBJQ0Mgc3VwcG9ydCAtTUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhDQorICAjIHNpZGUg ZWZmZWN0IG9mIGNvbXBpbGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBlbmRlbmNpZXMg aW4NCisgICMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdoaWxlIFRydTY0IHdpbGwgcHV0IHRoZW0g aW4gdGhlIG9iamVjdA0KKyAgIyBkaXJlY3RvcnkuDQorICBta2RpciBzdWINCisNCisgIGFtX2N2 XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUNCisgIGlmIHRlc3QgIiRhbV9jb21w aWxlcl9saXN0IiA9ICIiOyB0aGVuDQorICAgICBhbV9jb21waWxlcl9saXN0PWBzZWQgLW4gWydz L14jKlwoW2EtekEtWjAtOV0qXCkpJC9cMS9wJ10gPCAuL2RlcGNvbXBgDQorICBmaQ0KKyAgZm9y IGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7IGRvDQorICAgICMgU2V0dXAgYSBzb3VyY2Ug d2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVzZSBzb21lIGNvbXBpbGVycw0KKyAgICAjIGxp a2UgdG8gd3JhcCBsYXJnZSBkZXBlbmRlbmN5IGxpc3RzIG9uIGNvbHVtbiA4MCAod2l0aCBcKSwg YW5kDQorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMg Y29uZnVzZWQgYnkgdGhpcy4NCisgICAgIw0KKyAgICAjIFdlIG5lZWQgdG8gcmVjcmVhdGUgdGhl c2UgZmlsZXMgZm9yIGVhY2ggdGVzdCwgYXMgdGhlIGNvbXBpbGVyIG1heQ0KKyAgICAjIG92ZXJ3 cml0ZSBzb21lIG9mIHRoZW0gd2hlbiB0ZXN0aW5nIHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVz Lg0KKyAgICAjIFRoaXMgaGFwcGVucyBhdCBsZWFzdCB3aXRoIHRoZSBBSVggQyBjb21waWxlci4N CisgICAgOiA+IHN1Yi9jb25mdGVzdC5jDQorICAgIGZvciBpIGluIDEgMiAzIDQgNSA2OyBkbw0K KyAgICAgIGVjaG8gJyNpbmNsdWRlICJjb25mdHN0JyRpJy5oIicgPj4gc3ViL2NvbmZ0ZXN0LmMN CisgICAgICAjIFVzaW5nIGA6ID4gc3ViL2NvbmZ0c3QkaS5oJyBjcmVhdGVzIG9ubHkgc3ViL2Nv bmZ0c3QxLmggd2l0aA0KKyAgICAgICMgU29sYXJpcyA4J3Mgey91c3IsfS9iaW4vc2guDQorICAg ICAgdG91Y2ggc3ViL2NvbmZ0c3QkaS5oDQorICAgIGRvbmUNCisgICAgZWNobyAiJHthbV9faW5j bHVkZX0gJHthbV9fcXVvdGV9c3ViL2NvbmZ0ZXN0LlBvJHthbV9fcXVvdGV9IiA+IGNvbmZtZg0K Kw0KKyAgICBjYXNlICRkZXBtb2RlIGluDQorICAgIG5vc2lkZWVmZmVjdCkNCisgICAgICAjIGFm dGVyIHRoaXMgdGFnLCBtZWNoYW5pc21zIGFyZSBub3QgYnkgc2lkZS1lZmZlY3QsIHNvIHRoZXkn bGwNCisgICAgICAjIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkDQorICAg ICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgPSB4eWVzOyB0aGVuDQor CWNvbnRpbnVlDQorICAgICAgZWxzZQ0KKwlicmVhaw0KKyAgICAgIGZpDQorICAgICAgOzsNCisg ICAgbm9uZSkgYnJlYWsgOzsNCisgICAgZXNhYw0KKyAgICAjIFdlIGNoZWNrIHdpdGggYC1jJyBh bmQgYC1vJyBmb3IgdGhlIHNha2Ugb2YgdGhlICJkYXNobXN0ZG91dCINCisgICAgIyBtb2RlLiAg SXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBDKysgY29tcGlsZXIgZG9lcyBub3QgcHJvcGVy bHkNCisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5kIHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMuDQor ICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXA0KKyAgICAgICBzb3VyY2U9c3ViL2NvbmZ0ZXN0LmMg b2JqZWN0PXN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBcDQorICAgICAgIGRlcGZpbGU9c3ViL2Nv bmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcDQorICAgICAgICRTSEVMTCAu L2RlcGNvbXAgJGRlcGNjIC1jIC1vIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRl c3QuYyBcDQorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJg0KKyAgICAgICBn cmVwIHN1Yi9jb25mdHN0Ni5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQor ICAgICAgIGdyZXAgc3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99IHN1Yi9jb25mdGVzdC5QbyA+IC9k ZXYvbnVsbCAyPiYxICYmDQorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2 L251bGwgMj4mMTsgdGhlbg0KKyAgICAgICMgaWNjIGRvZXNuJ3QgY2hva2Ugb24gdW5rbm93biBv cHRpb25zLCBpdCB3aWxsIGp1c3QgaXNzdWUgd2FybmluZ3MNCisgICAgICAjIG9yIHJlbWFya3Mg KGV2ZW4gd2l0aCAtV2Vycm9yKS4gIFNvIHdlIGdyZXAgc3RkZXJyIGZvciBhbnkgbWVzc2FnZQ0K KyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVk Lg0KKyAgICAgICMgV2hlbiBnaXZlbiAtTVAsIGljYyA3LjAgYW5kIDcuMSBjb21wbGFpbiB0aHVz bHk6DQorICAgICAgIyAgIGljYzogQ29tbWFuZCBsaW5lIHdhcm5pbmc6IGlnbm9yaW5nIG9wdGlv biAnLU0nOyBubyBhcmd1bWVudCByZXF1aXJlZA0KKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFu Z2VkIGluIGljYyA4LjA6DQorICAgICAgIyAgIGljYzogQ29tbWFuZCBsaW5lIHJlbWFyazogb3B0 aW9uICctTVAnIG5vdCBzdXBwb3J0ZWQNCisgICAgICBpZiAoZ3JlcCAnaWdub3Jpbmcgb3B0aW9u JyBjb25mdGVzdC5lcnIgfHwNCisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRl c3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQ0KKyAgICAgICAgYW1fY3ZfJDFf ZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9JGRlcG1vZGUNCisgICAgICAgIGJyZWFrDQorICAg ICAgZmkNCisgICAgZmkNCisgIGRvbmUNCisNCisgIGNkIC4uDQorICBybSAtcmYgY29uZnRlc3Qu ZGlyDQorZWxzZQ0KKyAgYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0K K2ZpDQorXSkNCitBQ19TVUJTVChbJDFERVBNT0RFXSwgW2RlcG1vZGU9JGFtX2N2XyQxX2RlcGVu ZGVuY2llc19jb21waWxlcl90eXBlXSkNCitBTV9DT05ESVRJT05BTChbYW1fX2Zhc3RkZXAkMV0s IFsNCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcDQorICAm JiB0ZXN0ICIkYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUiID0gZ2NjM10pDQor XSkNCisNCisNCisjIEFNX1NFVF9ERVBESVINCisjIC0tLS0tLS0tLS0tLS0NCisjIENob29zZSBh IGRpcmVjdG9yeSBuYW1lIGZvciBkZXBlbmRlbmN5IGZpbGVzLg0KKyMgVGhpcyBtYWNybyBpcyBB Q19SRVFVSVJFZCBpbiBfQU1fREVQRU5ERU5DSUVTDQorQUNfREVGVU4oW0FNX1NFVF9ERVBESVJd LA0KK1tBQ19SRVFVSVJFKFtBTV9TRVRfTEVBRElOR19ET1RdKWRubA0KK0FDX1NVQlNUKFtERVBE SVJdLCBbIiR7YW1fX2xlYWRpbmdfZG90fWRlcHMiXSlkbmwNCitdKQ0KKw0KKw0KKyMgQU1fREVQ X1RSQUNLDQorIyAtLS0tLS0tLS0tLS0NCitBQ19ERUZVTihbQU1fREVQX1RSQUNLXSwNCitbQUNf QVJHX0VOQUJMRShkZXBlbmRlbmN5LXRyYWNraW5nLA0KK1sgIC0tZGlzYWJsZS1kZXBlbmRlbmN5 LXRyYWNraW5nICBzcGVlZHMgdXAgb25lLXRpbWUgYnVpbGQNCisgIC0tZW5hYmxlLWRlcGVuZGVu Y3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5kZW5jeSBleHRyYWN0b3JzXSkN CitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4NCisg IGFtX2RlcGNvbXA9IiRhY19hdXhfZGlyL2RlcGNvbXAiDQorICBBTURFUEJBQ0tTTEFTSD0nXCcN CitmaQ0KK0FNX0NPTkRJVElPTkFMKFtBTURFUF0sIFt0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5 X3RyYWNraW5nIiAhPSB4bm9dKQ0KK0FDX1NVQlNUKFtBTURFUEJBQ0tTTEFTSF0pDQorXSkNCisN CisjIEdlbmVyYXRlIGNvZGUgdG8gc2V0IHVwIGRlcGVuZGVuY3kgdHJhY2tpbmcuICAgICAgICAg ICAgICAtKi0gQXV0b2NvbmYgLSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIw MDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9v ciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxv bmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyNzZXJpYWwgMw0KKw0KKyMgX0FN X09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCitBQ19ERUZVTihbX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwNCitbZm9y IG1mIGluICRDT05GSUdfRklMRVM7IGRvDQorICAjIFN0cmlwIE1GIHNvIHdlIGVuZCB1cCB3aXRo IHRoZSBuYW1lIG9mIHRoZSBmaWxlLg0KKyAgbWY9YGVjaG8gIiRtZiIgfCBzZWQgLWUgJ3MvOi4q JC8vJ2ANCisgICMgQ2hlY2sgd2hldGhlciB0aGlzIGlzIGFuIEF1dG9tYWtlIGdlbmVyYXRlZCBN YWtlZmlsZSBvciBub3QuDQorICAjIFdlIHVzZWQgdG8gbWF0Y2ggb25seSB0aGUgZmlsZXMgbmFt ZWQgYE1ha2VmaWxlLmluJywgYnV0DQorICAjIHNvbWUgcGVvcGxlIHJlbmFtZSB0aGVtOyBzbyBp bnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4NCisgICMgR3JlcCdpbmcgdGhlIGZp cnN0IGxpbmUgaXMgbm90IGVub3VnaDogc29tZSBwZW9wbGUgcG9zdC1wcm9jZXNzDQorICAjIGVh Y2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9uIHRvcCBvZiBlYWNoIGZpbGUgdG8g c2F5IHNvLg0KKyAgIyBTbyBsZXQncyBncmVwIHdob2xlIGZpbGUuDQorICBpZiBncmVwICdeIy4q Z2VuZXJhdGVkIGJ5IGF1dG9tYWtlJyAkbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgICBk aXJwYXJ0PWBBU19ESVJOQU1FKCIkbWYiKWANCisgIGVsc2UNCisgICAgY29udGludWUNCisgIGZp DQorICAjIEV4dHJhY3QgdGhlIGRlZmluaXRpb24gb2YgREVQRElSLCBhbV9faW5jbHVkZSwgYW5k IGFtX19xdW90ZQ0KKyAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2Un Lg0KKyAgREVQRElSPWBzZWQgLW4gJ3MvXkRFUERJUiA9IC8vcCcgPCAiJG1mImANCisgIHRlc3Qg LXogIiRERVBESVIiICYmIGNvbnRpbnVlDQorICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9f aW5jbHVkZSA9IC8vcCcgPCAiJG1mImANCisgIHRlc3QgLXogImFtX19pbmNsdWRlIiAmJiBjb250 aW51ZQ0KKyAgYW1fX3F1b3RlPWBzZWQgLW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImAN CisgICMgV2hlbiB1c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29y ZTsgZXhwYW5kIGl0DQorICBVPWBzZWQgLW4gJ3MvXlUgPSAvL3AnIDwgIiRtZiJgDQorICAjIEZp bmQgYWxsIGRlcGVuZGVuY3kgb3V0cHV0IGZpbGVzLCB0aGV5IGFyZSBpbmNsdWRlZCBmaWxlcyB3 aXRoDQorICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2Ug YmVjYXVzZSBpdCBpcyB0aGUNCisgICMgc2ltcGxlc3QgYXBwcm9hY2ggdG8gY2hhbmdpbmcgJChE RVBESVIpIHRvIGl0cyBhY3R1YWwgdmFsdWUgaW4gdGhlDQorICAjIGV4cGFuc2lvbi4NCisgIGZv ciBmaWxlIGluIGBzZWQgLW4gIg0KKyAgICBzL14kYW1fX2luY2x1ZGUgJGFtX19xdW90ZVwoLioo REVQRElSKS4qXCkkYW1fX3F1b3RlIickL1wxL3AnIDwiJG1mIiB8IFwNCisgICAgICAgc2VkIC1l ICdzL1wkKERFUERJUikvJyIkREVQRElSIicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvDQor ICAgICMgTWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLg0KKyAgICB0ZXN0IC1mICIkZGly cGFydC8kZmlsZSIgJiYgY29udGludWUNCisgICAgZmRpcj1gQVNfRElSTkFNRShbIiRmaWxlIl0p YA0KKyAgICBBU19NS0RJUl9QKFskZGlycGFydC8kZmRpcl0pDQorICAgICMgZWNobyAiY3JlYXRp bmcgJGRpcnBhcnQvJGZpbGUiDQorICAgIGVjaG8gJyMgZHVtbXknID4gIiRkaXJwYXJ0LyRmaWxl Ig0KKyAgZG9uZQ0KK2RvbmUNCitdKSMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTDQor DQorDQorIyBBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EUw0KKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIFRoaXMgbWFjcm8gc2hvdWxkIG9ubHkgYmUgaW52b2tlZCBvbmNl IC0tIHVzZSB2aWEgQUNfUkVRVUlSRS4NCisjDQorIyBUaGlzIGNvZGUgaXMgb25seSByZXF1aXJl ZCB3aGVuIGF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nDQorIyBpcyBlbmFibGVkLiAgRklY TUUuICBUaGlzIGNyZWF0ZXMgZWFjaCBgLlAnIGZpbGUgdGhhdCB3ZSB3aWxsDQorIyBuZWVkIGlu IG9yZGVyIHRvIGJvb3RzdHJhcCB0aGUgZGVwZW5kZW5jeSBoYW5kbGluZyBjb2RlLg0KK0FDX0RF RlVOKFtBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sDQorW0FDX0NPTkZJR19DT01NQU5E UyhbZGVwZmlsZXNdLA0KKyAgICAgW3Rlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IF9BTV9P VVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sDQorICAgICBbQU1ERVBfVFJVRT0iJEFNREVQX1RS VUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIl0pDQorXSkNCisNCisjIERvIGFsbCB0aGUgd29y ayBmb3IgQXV0b21ha2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYg LSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIw MDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9v ciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxv bmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDEyDQorDQorIyBU aGlzIG1hY3JvIGFjdHVhbGx5IGRvZXMgdG9vIG11Y2guICBTb21lIGNoZWNrcyBhcmUgb25seSBu ZWVkZWQgaWYNCisjIHlvdXIgcGFja2FnZSBkb2VzIGNlcnRhaW4gdGhpbmdzLiAgQnV0IHRoaXMg aXNuJ3QgcmVhbGx5IGEgYmlnIGRlYWwuDQorDQorIyBBTV9JTklUX0FVVE9NQUtFKFBBQ0tBR0Us IFZFUlNJT04sIFtOTy1ERUZJTkVdKQ0KKyMgQU1fSU5JVF9BVVRPTUFLRShbT1BUSU9OU10pDQor IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgVGhl IGNhbGwgd2l0aCBQQUNLQUdFIGFuZCBWRVJTSU9OIGFyZ3VtZW50cyBpcyB0aGUgb2xkIHN0eWxl DQorIyBjYWxsIChwcmUgYXV0b2NvbmYtMi41MCksIHdoaWNoIGlzIGJlaW5nIHBoYXNlZCBvdXQu ICBQQUNLQUdFDQorIyBhbmQgVkVSU0lPTiBzaG91bGQgbm93IGJlIHBhc3NlZCB0byBBQ19JTklU IGFuZCByZW1vdmVkIGZyb20NCisjIHRoZSBjYWxsIHRvIEFNX0lOSVRfQVVUT01BS0UuDQorIyBX ZSBzdXBwb3J0IGJvdGggY2FsbCBzdHlsZXMgZm9yIHRoZSB0cmFuc2l0aW9uLiAgQWZ0ZXINCisj IHRoZSBuZXh0IEF1dG9tYWtlIHJlbGVhc2UsIEF1dG9jb25mIGNhbiBtYWtlIHRoZSBBQ19JTklU DQorIyBhcmd1bWVudHMgbWFuZGF0b3J5LCBhbmQgdGhlbiB3ZSBjYW4gZGVwZW5kIG9uIGEgbmV3 IEF1dG9jb25mDQorIyByZWxlYXNlIGFuZCBkcm9wIHRoZSBvbGQgY2FsbCBzdXBwb3J0Lg0KK0FD X0RFRlVOKFtBTV9JTklUX0FVVE9NQUtFXSwNCitbQUNfUFJFUkVRKFsyLjU4XSlkbmwNCitkbmwg QXV0b2NvbmYgd2FudHMgdG8gZGlzYWxsb3cgQU1fIG5hbWVzLiAgV2UgZXhwbGljaXRseSBhbGxv dw0KK2RubCB0aGUgb25lcyB3ZSBjYXJlIGFib3V0Lg0KK200X3BhdHRlcm5fYWxsb3coW15BTV9b QS1aXStGTEFHUyRdKWRubA0KK0FDX1JFUVVJUkUoW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZF UlNJT05dKWRubA0KK0FDX1JFUVVJUkUoW0FDX1BST0dfSU5TVEFMTF0pZG5sDQorIyB0ZXN0IHRv IHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkDQoraWYgdGVzdCAiYGNkICRzcmNkaXIg JiYgcHdkYCIgIT0gImBwd2RgIiAmJg0KKyAgIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVz OyB0aGVuDQorICBBQ19NU0dfRVJST1IoW3NvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1 cmVkOyBydW4gIm1ha2UgZGlzdGNsZWFuIiB0aGVyZSBmaXJzdF0pDQorZmkNCisNCisjIHRlc3Qg d2hldGhlciB3ZSBoYXZlIGN5Z3BhdGgNCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbg0K KyAgaWYgKGN5Z3BhdGggLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuDQor ICAgIENZR1BBVEhfVz0nY3lncGF0aCAtdycNCisgIGVsc2UNCisgICAgQ1lHUEFUSF9XPWVjaG8N CisgIGZpDQorZmkNCitBQ19TVUJTVChbQ1lHUEFUSF9XXSkNCisNCisjIERlZmluZSB0aGUgaWRl bnRpdHkgb2YgdGhlIHBhY2thZ2UuDQorZG5sIERpc3Rpbmd1aXNoIGJldHdlZW4gb2xkLXN0eWxl IGFuZCBuZXctc3R5bGUgY2FsbHMuDQorbTRfaWZ2YWwoWyQyXSwNCitbbTRfaWZ2YWwoWyQzXSwg W19BTV9TRVRfT1BUSU9OKFtuby1kZWZpbmVdKV0pZG5sDQorIEFDX1NVQlNUKFtQQUNLQUdFXSwg WyQxXSlkbmwNCisgQUNfU1VCU1QoW1ZFUlNJT05dLCBbJDJdKV0sDQorW19BTV9TRVRfT1BUSU9O UyhbJDFdKWRubA0KKyBBQ19TVUJTVChbUEFDS0FHRV0sIFsnQUNfUEFDS0FHRV9UQVJOQU1FJ10p ZG5sDQorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWydBQ19QQUNLQUdFX1ZFUlNJT04nXSldKWRubA0K Kw0KK19BTV9JRl9PUFRJT04oW25vLWRlZmluZV0sLA0KK1tBQ19ERUZJTkVfVU5RVU9URUQoUEFD S0FHRSwgIiRQQUNLQUdFIiwgW05hbWUgb2YgcGFja2FnZV0pDQorIEFDX0RFRklORV9VTlFVT1RF RChWRVJTSU9OLCAiJFZFUlNJT04iLCBbVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZV0pXSlkbmwN CisNCisjIFNvbWUgdG9vbHMgQXV0b21ha2UgbmVlZHMuDQorQUNfUkVRVUlSRShbQU1fU0FOSVRZ X0NIRUNLXSlkbmwNCitBQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pZG5sDQorQU1fTUlTU0lO R19QUk9HKEFDTE9DQUwsIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259KQ0KK0FNX01JU1NJTkdf UFJPRyhBVVRPQ09ORiwgYXV0b2NvbmYpDQorQU1fTUlTU0lOR19QUk9HKEFVVE9NQUtFLCBhdXRv bWFrZS0ke2FtX19hcGlfdmVyc2lvbn0pDQorQU1fTUlTU0lOR19QUk9HKEFVVE9IRUFERVIsIGF1 dG9oZWFkZXIpDQorQU1fTUlTU0lOR19QUk9HKE1BS0VJTkZPLCBtYWtlaW5mbykNCitBTV9QUk9H X0lOU1RBTExfU0gNCitBTV9QUk9HX0lOU1RBTExfU1RSSVANCitBQ19SRVFVSVJFKFtBTV9QUk9H X01LRElSX1BdKWRubA0KKyMgV2UgbmVlZCBhd2sgZm9yIHRoZSAiY2hlY2siIHRhcmdldC4gIFRo ZSBzeXN0ZW0gImF3ayIgaXMgYmFkIG9uDQorIyBzb21lIHBsYXRmb3Jtcy4NCitBQ19SRVFVSVJF KFtBQ19QUk9HX0FXS10pZG5sDQorQUNfUkVRVUlSRShbQUNfUFJPR19NQUtFX1NFVF0pZG5sDQor QUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwNCitfQU1fSUZfT1BUSU9OKFt0YXIt dXN0YXJdLCBbX0FNX1BST0dfVEFSKFt1c3Rhcl0pXSwNCisgICAgICAgICAgICAgIFtfQU1fSUZf T1BUSU9OKFt0YXItcGF4XSwgW19BTV9QUk9HX1RBUihbcGF4XSldLA0KKwkgICAgICAJCSAgICAg W19BTV9QUk9HX1RBUihbdjddKV0pXSkNCitfQU1fSUZfT1BUSU9OKFtuby1kZXBlbmRlbmNpZXNd LCwNCitbQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ0NdLA0KKyAgICAgICAgICAgICAgICAg IFtfQU1fREVQRU5ERU5DSUVTKENDKV0sDQorICAgICAgICAgICAgICAgICAgW2RlZmluZShbQUNf UFJPR19DQ10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZuKFtBQ19QUk9HX0NDXSlb X0FNX0RFUEVOREVOQ0lFUyhDQyldKV0pZG5sDQorQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0df Q1hYXSwNCisgICAgICAgICAgICAgICAgICBbX0FNX0RFUEVOREVOQ0lFUyhDWFgpXSwNCisgICAg ICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9HX0NYWF0sDQorICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWZuKFtBQ19QUk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwN CitdKQ0KK10pDQorDQorDQorIyBXaGVuIGNvbmZpZy5zdGF0dXMgZ2VuZXJhdGVzIGEgaGVhZGVy LCB3ZSBtdXN0IHVwZGF0ZSB0aGUgc3RhbXAtaCBmaWxlLg0KKyMgVGhpcyBmaWxlIHJlc2lkZXMg aW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBjb25maWcgaGVhZGVyDQorIyB0aGF0IGlzIGdl bmVyYXRlZC4gIFRoZSBzdGFtcCBmaWxlcyBhcmUgbnVtYmVyZWQgdG8gaGF2ZSBkaWZmZXJlbnQg bmFtZXMuDQorDQorIyBBdXRvY29uZiBjYWxscyBfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LICh3 aGVuIGRlZmluZWQpIGluIHRoZQ0KKyMgbG9vcCB3aGVyZSBjb25maWcuc3RhdHVzIGNyZWF0ZXMg dGhlIGhlYWRlcnMsIHNvIHdlIGNhbiBnZW5lcmF0ZQ0KKyMgb3VyIHN0YW1wIGZpbGVzIHRoZXJl Lg0KK0FDX0RFRlVOKFtfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LXSwNCitbIyBDb21wdXRlICQx J3MgaW5kZXggaW4gJGNvbmZpZ19oZWFkZXJzLg0KK19hbV9zdGFtcF9jb3VudD0xDQorZm9yIF9h bV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJzIDo7IGRvDQorICBjYXNlICRfYW1faGVhZGVyIGlu DQorICAgICQxIHwgJDE6KiApDQorICAgICAgYnJlYWsgOzsNCisgICAgKiApDQorICAgICAgX2Ft X3N0YW1wX2NvdW50PWBleHByICRfYW1fc3RhbXBfY291bnQgKyAxYCA7Ow0KKyAgZXNhYw0KK2Rv bmUNCitlY2hvICJ0aW1lc3RhbXAgZm9yICQxIiA+YEFTX0RJUk5BTUUoWyQxXSlgL3N0YW1wLWhb XSRfYW1fc3RhbXBfY291bnRdKQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1 ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJl ZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1p dGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Ig d2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZl ZC4NCisNCisjIEFNX1BST0dfSU5TVEFMTF9TSA0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBE ZWZpbmUgJGluc3RhbGxfc2guDQorQUNfREVGVU4oW0FNX1BST0dfSU5TVEFMTF9TSF0sDQorW0FD X1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwNCitpbnN0YWxsX3NoPSR7aW5zdGFsbF9z aC0iJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCJ9DQorQUNfU1VCU1QoaW5zdGFsbF9zaCldKQ0KKw0K KyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3Ig ZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25n IGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCAyDQorDQorIyBDaGVj ayB3aGV0aGVyIHRoZSB1bmRlcmx5aW5nIGZpbGUtc3lzdGVtIHN1cHBvcnRzIGZpbGVuYW1lcw0K KyMgd2l0aCBhIGxlYWRpbmcgZG90LiAgRm9yIGluc3RhbmNlIE1TLURPUyBkb2Vzbid0Lg0KK0FD X0RFRlVOKFtBTV9TRVRfTEVBRElOR19ET1RdLA0KK1tybSAtcmYgLnRzdCAyPi9kZXYvbnVsbA0K K21rZGlyIC50c3QgMj4vZGV2L251bGwNCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4NCisgIGFtX19s ZWFkaW5nX2RvdD0uDQorZWxzZQ0KKyAgYW1fX2xlYWRpbmdfZG90PV8NCitmaQ0KK3JtZGlyIC50 c3QgMj4vZGV2L251bGwNCitBQ19TVUJTVChbYW1fX2xlYWRpbmdfZG90XSldKQ0KKw0KKyMgQWRk IC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvcHRpb24gdG8gY29uZmlndXJlLiAgICAgICAgIC0q LSBBdXRvY29uZiAtKi0NCisjIEZyb20gSmltIE1leWVyaW5nDQorDQorIyBDb3B5cmlnaHQgKEMp IDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3 YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVy bWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0 IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0K KyMgc2VyaWFsIDQNCisNCitBQ19ERUZVTihbQU1fTUFJTlRBSU5FUl9NT0RFXSwNCitbQUNfTVNH X0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25z IG9mIE1ha2VmaWxlc10pDQorICBkbmwgbWFpbnRhaW5lci1tb2RlIGlzIGRpc2FibGVkIGJ5IGRl ZmF1bHQNCisgIEFDX0FSR19FTkFCTEUobWFpbnRhaW5lci1tb2RlLA0KK1sgIC0tZW5hYmxlLW1h aW50YWluZXItbW9kZSAgZW5hYmxlIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNl ZnVsDQorCQkJICAoYW5kIHNvbWV0aW1lcyBjb25mdXNpbmcpIHRvIHRoZSBjYXN1YWwgaW5zdGFs bGVyXSwNCisgICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPSRlbmFibGV2YWwsDQorICAgICAgVVNF X01BSU5UQUlORVJfTU9ERT1ubykNCisgIEFDX01TR19SRVNVTFQoWyRVU0VfTUFJTlRBSU5FUl9N T0RFXSkNCisgIEFNX0NPTkRJVElPTkFMKE1BSU5UQUlORVJfTU9ERSwgW3Rlc3QgJFVTRV9NQUlO VEFJTkVSX01PREUgPSB5ZXNdKQ0KKyAgTUFJTlQ9JE1BSU5UQUlORVJfTU9ERV9UUlVFDQorICBB Q19TVUJTVChNQUlOVClkbmwNCitdDQorKQ0KKw0KK0FVX0RFRlVOKFtqbV9NQUlOVEFJTkVSX01P REVdLCBbQU1fTUFJTlRBSU5FUl9NT0RFXSkNCisNCisjIENoZWNrIHRvIHNlZSBob3cgJ21ha2Un IHRyZWF0cyBpbmNsdWRlcy4JICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29w eXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBh bmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBh cyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCAzDQorDQor IyBBTV9NQUtFX0lOQ0xVREUoKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0NCisjIENoZWNrIHRvIHNl ZSBob3cgbWFrZSB0cmVhdHMgaW5jbHVkZXMuDQorQUNfREVGVU4oW0FNX01BS0VfSU5DTFVERV0s DQorW2FtX21ha2U9JHtNQUtFLW1ha2V9DQorY2F0ID4gY29uZmluYyA8PCAnRU5EJw0KK2FtX19k b2l0Og0KKwlAZWNobyBkb25lDQorLlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMgSWYgd2UgZG9u J3QgZmluZCBhbiBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUgY29kZS4N CitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2Vd KQ0KK2FtX19pbmNsdWRlPSIjIg0KK2FtX19xdW90ZT0NCitfYW1fcmVzdWx0PW5vbmUNCisjIEZp cnN0IHRyeSBHTlUgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2VjaG8gImluY2x1ZGUgY29uZmluYyIg PiBjb25mbWYNCisjIFdlIGdyZXAgb3V0IGBFbnRlcmluZyBkaXJlY3RvcnknIGFuZCBgTGVhdmlu ZyBkaXJlY3RvcnknDQorIyBtZXNzYWdlcyB3aGljaCBjYW4gb2NjdXIgaWYgYHcnIGVuZHMgdXAg aW4gTUFLRUZMQUdTLg0KKyMgSW4gcGFydGljdWxhciB3ZSBkb24ndCBsb29rIGF0IGBebWFrZTon IGJlY2F1c2UgR05VIG1ha2UgbWlnaHQNCisjIGJlIGludm9rZWQgdW5kZXIgc29tZSBvdGhlciBu YW1lICh1c3VhbGx5ICJnbWFrZSIpLCBpbiB3aGljaA0KKyMgY2FzZSBpdCBwcmludHMgaXRzIG5l dyBuYW1lIGluc3RlYWQgb2YgYG1ha2UnLg0KK2lmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25m bWYgMj4gL2Rldi9udWxsIHwgZ3JlcCAtdiAnaW5nIGRpcmVjdG9yeSdgIiA9ICJkb25lIjsgdGhl bg0KKyAgIGFtX19pbmNsdWRlPWluY2x1ZGUNCisgICBhbV9fcXVvdGU9DQorICAgX2FtX3Jlc3Vs dD1HTlUNCitmaQ0KKyMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2lmIHRlc3Qg IiRhbV9faW5jbHVkZSIgPSAiIyI7IHRoZW4NCisgICBlY2hvICcuaW5jbHVkZSAiY29uZmluYyIn ID4gY29uZm1mDQorICAgaWYgdGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251 bGxgIiA9ICJkb25lIjsgdGhlbg0KKyAgICAgIGFtX19pbmNsdWRlPS5pbmNsdWRlDQorICAgICAg YW1fX3F1b3RlPSJcIiINCisgICAgICBfYW1fcmVzdWx0PUJTRA0KKyAgIGZpDQorZmkNCitBQ19T VUJTVChbYW1fX2luY2x1ZGVdKQ0KK0FDX1NVQlNUKFthbV9fcXVvdGVdKQ0KK0FDX01TR19SRVNV TFQoWyRfYW1fcmVzdWx0XSkNCitybSAtZiBjb25maW5jIGNvbmZtZg0KK10pDQorDQorIyBGYWtl IHRoZSBleGlzdGVuY2Ugb2YgcHJvZ3JhbXMgdGhhdCBHTlUgbWFpbnRhaW5lcnMgdXNlLiAgLSot IEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk5LCAyMDAwLCAyMDAx LCAyMDAzLCAyMDA1DQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBU aGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K KyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBp dCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90 aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCA0DQorDQorIyBBTV9NSVNTSU5HX1BST0co TkFNRSwgUFJPR1JBTSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0FDX0RF RlVOKFtBTV9NSVNTSU5HX1BST0ddLA0KK1tBQ19SRVFVSVJFKFtBTV9NSVNTSU5HX0hBU19SVU5d KQ0KKyQxPSR7JDEtIiR7YW1fbWlzc2luZ19ydW59JDIifQ0KK0FDX1NVQlNUKCQxKV0pDQorDQor DQorIyBBTV9NSVNTSU5HX0hBU19SVU4NCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGVmaW5l IE1JU1NJTkcgaWYgbm90IGRlZmluZWQgc28gZmFyIGFuZCB0ZXN0IGlmIGl0IHN1cHBvcnRzIC0t cnVuLg0KKyMgSWYgaXQgZG9lcywgc2V0IGFtX21pc3NpbmdfcnVuIHRvIHVzZSBpdCwgb3RoZXJ3 aXNlLCB0byBub3RoaW5nLg0KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX0hBU19SVU5dLA0KK1tBQ19S RVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sDQordGVzdCB4IiR7TUlTU0lORytzZXR9IiA9 IHhzZXQgfHwgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciDQorIyBVc2Ug ZXZhbCB0byBleHBhbmQgJFNIRUxMDQoraWYgZXZhbCAiJE1JU1NJTkcgLS1ydW4gdHJ1ZSI7IHRo ZW4NCisgIGFtX21pc3NpbmdfcnVuPSIkTUlTU0lORyAtLXJ1biAiDQorZWxzZQ0KKyAgYW1fbWlz c2luZ19ydW49DQorICBBQ19NU0dfV0FSTihbYG1pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9y IG1pc3NpbmddKQ0KK2ZpDQorXSkNCisNCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw NSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZy ZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGlt aXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9y IHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2 ZWQuDQorDQorIyBBTV9QUk9HX01LRElSX1ANCisjIC0tLS0tLS0tLS0tLS0tLQ0KKyMgQ2hlY2sg d2hldGhlciBgbWtkaXIgLXAnIGlzIHN1cHBvcnRlZCwgZmFsbGJhY2sgdG8gbWtpbnN0YWxsZGly cyBvdGhlcndpc2UuDQorIw0KKyMgQXV0b21ha2UgMS44IHVzZWQgYG1rZGlyIC1tIDA3NTUgLXAg LS0nIHRvIGVuc3VyZSB0aGF0IGRpcmVjdG9yaWVzDQorIyBjcmVhdGVkIGJ5IGBtYWtlIGluc3Rh bGwnIGFyZSBhbHdheXMgd29ybGQgcmVhZGFibGUsIGV2ZW4gaWYgdGhlDQorIyBpbnN0YWxsZXIg aGFwcGVucyB0byBoYXZlIGFuIG92ZXJseSByZXN0cmljdGl2ZSB1bWFzayAoZS5nLiAwNzcpLg0K KyMgVGhpcyB3YXMgYSBtaXN0YWtlLiAgVGhlcmUgYXJlIGF0IGxlYXN0IHR3byByZWFzb25zIHdo eSB3ZSBtdXN0IG5vdA0KKyMgdXNlIGAtbSAwNzU1JzoNCisjICAgLSBpdCBjYXVzZXMgc3BlY2lh bCBiaXRzIGxpa2UgU0dJRCB0byBiZSBpZ25vcmVkLA0KKyMgICAtIGl0IG1heSBiZSB0b28gcmVz dHJpY3RpdmUgKHNvbWUgc2V0dXBzIGV4cGVjdCA3NzUgZGlyZWN0b3JpZXMpLg0KKyMNCisjIERv IG5vdCB1c2UgLW0gMDc1NSBhbmQgbGV0IHBlb3BsZSBjaG9vc2Ugd2hhdGV2ZXIgdGhleSBleHBl Y3QgYnkNCisjIHNldHRpbmcgdW1hc2suDQorIw0KKyMgV2UgY2Fubm90IGFjY2VwdCBhbnkgaW1w bGVtZW50YXRpb24gb2YgYG1rZGlyJyB0aGF0IHJlY29nbml6ZXMgYC1wJy4NCisjIFNvbWUgaW1w bGVtZW50YXRpb25zIChzdWNoIGFzIFNvbGFyaXMgOCdzKSBhcmUgbm90IHRocmVhZC1zYWZlOiBp ZiBhDQorIyBwYXJhbGxlbCBtYWtlIHRyaWVzIHRvIHJ1biBgbWtkaXIgLXAgYS9iJyBhbmQgYG1r ZGlyIC1wIGEvYycNCisjIGNvbmN1cnJlbnRseSwgYm90aCB2ZXJzaW9uIGNhbiBkZXRlY3QgdGhh dCBhLyBpcyBtaXNzaW5nLCBidXQgb25seQ0KKyMgb25lIGNhbiBjcmVhdGUgaXQgYW5kIHRoZSBv dGhlciB3aWxsIGVycm9yIG91dC4gIENvbnNlcXVlbnRseSB3ZQ0KKyMgcmVzdHJpY3Qgb3Vyc2Vs dmVzIHRvIEdOVSBtYWtlICh1c2luZyB0aGUgLS12ZXJzaW9uIG9wdGlvbiBlbnN1cmVzDQorIyB0 aGlzLikNCitBQ19ERUZVTihbQU1fUFJPR19NS0RJUl9QXSwNCitbaWYgbWtkaXIgLXAgLS12ZXJz aW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhlbg0KKyAg IyBXZSB1c2VkIHRvIGtlZXBpbmcgdGhlIGAuJyBhcyBmaXJzdCBhcmd1bWVudCwgaW4gb3JkZXIg dG8NCisgICMgYWxsb3cgJChta2Rpcl9wKSB0byBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnQuICBB cyBpbg0KKyAgIyAgICQobWtkaXJfcCkgJChzb21lZGlyKQ0KKyAgIyB3aGVyZSAkKHNvbWVkaXIp IGlzIGNvbmRpdGlvbmFsbHkgZGVmaW5lZC4gIEhvd2V2ZXIgdGhpcyBpcyB3cm9uZw0KKyAgIyBm b3IgdHdvIHJlYXNvbnM6DQorICAjICAxLiBpZiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgYnkg YSB1c2VyIHdobyBjYW5ub3Qgd3JpdGUgYC4nDQorICAjICAgICBtYWtlIGluc3RhbGwgd2lsbCBm YWlsLA0KKyAgIyAgMi4gdGhlIGFib3ZlIGNvbW1lbnQgc2hvdWxkIG1vc3QgY2VydGFpbmx5IHJl YWQNCisgICMgICAgICQobWtkaXJfcCkgJChERVNURElSKSQoc29tZWRpcikNCisgICMgICAgIHNv IGl0IGRvZXMgbm90IHdvcmsgd2hlbiAkKHNvbWVkaXIpIGlzIHVuZGVmaW5lZCBhbmQNCisgICMg ICAgICQoREVTVERJUikgaXMgbm90Lg0KKyAgIyAgVG8gc3VwcG9ydCB0aGUgbGF0dGVyIGNhc2Us IHdlIGhhdmUgdG8gd3JpdGUNCisgICMgICAgIHRlc3QgLXogIiQoc29tZWRpcikiIHx8ICQobWtk aXJfcCkgJChERVNURElSKSQoc29tZWRpciksDQorICAjICBzbyB0aGUgYC4nIHRyaWNrIGlzIHBv aW50bGVzcy4NCisgIG1rZGlyX3A9J21rZGlyIC1wIC0tJw0KK2Vsc2UNCisgICMgT24gTmV4dFN0 ZXAgYW5kIE9wZW5TdGVwLCB0aGUgYG1rZGlyJyBjb21tYW5kIGRvZXMgbm90DQorICAjIHJlY29n bml6ZSBhbnkgb3B0aW9uLiAgSXQgd2lsbCBpbnRlcnByZXQgYWxsIG9wdGlvbnMgYXMNCisgICMg ZGlyZWN0b3JpZXMgdG8gY3JlYXRlLCBhbmQgdGhlbiBhYm9ydCBiZWNhdXNlIGAuJyBhbHJlYWR5 DQorICAjIGV4aXN0cy4NCisgIGZvciBkIGluIC4vLXAgLi8tLXZlcnNpb247DQorICBkbw0KKyAg ICB0ZXN0IC1kICRkICYmIHJtZGlyICRkDQorICBkb25lDQorICAjICQobWtpbnN0YWxsZGlycykg aXMgZGVmaW5lZCBieSBBdXRvbWFrZSBpZiBta2luc3RhbGxkaXJzIGV4aXN0cy4NCisgIGlmIHRl c3QgLWYgIiRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiOyB0aGVuDQorICAgIG1rZGlyX3A9JyQo bWtpbnN0YWxsZGlycyknDQorICBlbHNlDQorICAgIG1rZGlyX3A9JyQoaW5zdGFsbF9zaCkgLWQn DQorICBmaQ0KK2ZpDQorQUNfU1VCU1QoW21rZGlyX3BdKV0pDQorDQorIyBIZWxwZXIgZnVuY3Rp b25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25m IC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1ICBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2Fy ZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBt b2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisj IHNlcmlhbCAzDQorDQorIyBfQU1fTUFOR0xFX09QVElPTihOQU1FKQ0KKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCitBQ19ERUZVTihbX0FNX01BTkdMRV9PUFRJT05dLA0KK1tbX0FNX09QVElP Tl9dbTRfYnBhdHN1YnN0KCQxLCBbW15hLXpBLVowLTlfXV0sIFtfXSldKQ0KKw0KKyMgX0FNX1NF VF9PUFRJT04oTkFNRSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2V0 IG9wdGlvbiBOQU1FLiAgUHJlc2VudGx5IHRoYXQgb25seSBtZWFucyBkZWZpbmluZyBhIGZsYWcg Zm9yIHRoaXMgb3B0aW9uLg0KK0FDX0RFRlVOKFtfQU1fU0VUX09QVElPTl0sDQorW200X2RlZmlu ZShfQU1fTUFOR0xFX09QVElPTihbJDFdKSwgMSldKQ0KKw0KKyMgX0FNX1NFVF9PUFRJT05TKE9Q VElPTlMpDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBPUFRJT05T IGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgQXV0b21ha2Ugb3B0aW9ucy4NCitBQ19ERUZV TihbX0FNX1NFVF9PUFRJT05TXSwNCitbQUNfRk9SRUFDSChbX0FNX09wdGlvbl0sIFskMV0sIFtf QU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkNCisNCisjIF9BTV9JRl9PUFRJT04oT1BUSU9O LCBJRi1TRVQsIFtJRi1OT1QtU0VUXSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIEV4ZWN1dGUgSUYtU0VUIGlmIE9QVElPTiBpcyBzZXQsIElGLU5P VC1TRVQgb3RoZXJ3aXNlLg0KK0FDX0RFRlVOKFtfQU1fSUZfT1BUSU9OXSwNCitbbTRfaWZzZXQo X0FNX01BTkdMRV9PUFRJT04oWyQxXSksIFskMl0sIFskM10pXSkNCisNCisjIENoZWNrIHRvIG1h a2Ugc3VyZSB0aGF0IHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLiAgICAtKi0gQXV0b2Nv bmYgLSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMs IDIwMDUNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmls ZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZl cyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMg d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMg cHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDQNCisNCisjIEFNX1NBTklUWV9DSEVDSw0KKyMgLS0t LS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW0FNX1NBTklUWV9DSEVDS10sDQorW0FDX01TR19DSEVD S0lORyhbd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lXSkNCisjIEp1c3QgaW4gY2Fz ZQ0KK3NsZWVwIDENCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUNCisjIERvIGBzZXQn IGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzDQor IyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1 YWxseSBhDQorIyBzeW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRo ZSBtb2QgdGltZSBvZiBzeW1saW5rcw0KKyMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRp bWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nDQorIyBkaXJlY3RvcnkpLg0KK2lmICgNCisg ICBzZXQgWCBgbHMgLUx0ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUgMj4gL2Rldi9u dWxsYA0KKyAgIGlmIHRlc3QgIiRbKl0iID0gIlgiOyB0aGVuDQorICAgICAgIyAtTCBkaWRuJ3Qg d29yay4NCisgICAgICBzZXQgWCBgbHMgLXQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmls ZWANCisgICBmaQ0KKyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUNCisgICBpZiB0ZXN0ICIkWypdIiAh PSAiWCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcDQorICAgICAgJiYgdGVzdCAi JFsqXSIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4NCisNCisg ICAgICAjIElmIG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhp cyBjYW4gaGFwcGVuDQorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMg YmFzaCBhbmQgaXQgaW5oZXJpdHMgYQ0KKyAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhl IGVudmlyb25tZW50LiAgVGhpcyBoYXMgYWN0dWFsbHkNCisgICAgICAjIGhhcHBlbmVkLiAgU3Vj aCBhIHN5c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuDQorICAgICAgQUNfTVNH X0VSUk9SKFtscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEg YnJva2VuDQorYWxpYXMgaW4geW91ciBlbnZpcm9ubWVudF0pDQorICAgZmkNCisNCisgICB0ZXN0 ICIkWzJdIiA9IGNvbmZ0ZXN0LmZpbGUNCisgICApDQordGhlbg0KKyAgICMgT2suDQorICAgOg0K K2Vsc2UNCisgICBBQ19NU0dfRVJST1IoW25ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFu IGRpc3RyaWJ1dGVkIGZpbGVzIQ0KK0NoZWNrIHlvdXIgc3lzdGVtIGNsb2NrXSkNCitmaQ0KK0FD X01TR19SRVNVTFQoeWVzKV0pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVl IHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0 ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3 aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVk Lg0KKw0KKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0N CisjIE9uZSBpc3N1ZSB3aXRoIHZlbmRvciBgaW5zdGFsbCcgKGV2ZW4gR05VKSBpcyB0aGF0IHlv dSBjYW4ndA0KKyMgc3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAg VGhpcyBpcyBlc3BlY2lhbGx5DQorIyBhbm5veWluZyBpbiBjcm9zcy1jb21waWxpbmcgZW52aXJv bm1lbnRzLCB3aGVyZSB0aGUgYnVpbGQncyBzdHJpcA0KKyMgaXMgdW5saWtlbHkgdG8gaGFuZGxl IHRoZSBob3N0J3MgYmluYXJpZXMuDQorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9u b3IgYSBTVFJJUFBST0cgdmFyaWFibGUsIHNvIHdlDQorIyBhbHdheXMgdXNlIGluc3RhbGwtc2gg aW4gYG1ha2UgaW5zdGFsbC1zdHJpcCcsIGFuZCBpbml0aWFsaXplDQorIyBTVFJJUFBST0cgd2l0 aCB0aGUgdmFsdWUgb2YgdGhlIFNUUklQIHZhcmlhYmxlIChzZXQgYnkgdGhlIHVzZXIpLg0KK0FD X0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU1RSSVBdLA0KK1tBQ19SRVFVSVJFKFtBTV9QUk9HX0lO U1RBTExfU0hdKWRubA0KKyMgSW5zdGFsbGVkIGJpbmFyaWVzIGFyZSB1c3VhbGx5IHN0cmlwcGVk IHVzaW5nIGBzdHJpcCcgd2hlbiB0aGUgdXNlcg0KKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAn LiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQNCisjIHRvb2wgdG8gdXNl IGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50cywgdGhlcmVmb3JlIEF1dG9tYWtlDQor IyB3aWxsIGhvbm9yIHRoZSBgU1RSSVAnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJydWxl IHRoaXMgcHJvZ3JhbS4NCitkbmwgRG9uJ3QgdGVzdCBmb3IgJGNyb3NzX2NvbXBpbGluZyA9IHll cywgYmVjYXVzZSBpdCBtaWdodCBiZSBgbWF5YmUnLg0KK2lmIHRlc3QgIiRjcm9zc19jb21waWxp bmciICE9IG5vOyB0aGVuDQorICBBQ19DSEVDS19UT09MKFtTVFJJUF0sIFtzdHJpcF0sIDopDQor ZmkNCitJTlNUQUxMX1NUUklQX1BST0dSQU09Ilwke1NIRUxMfSBcJChpbnN0YWxsX3NoKSAtYyAt cyINCitBQ19TVUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQ0KKw0KKyMgQ2hlY2sgaG93 IHRvIGNyZWF0ZSBhIHRhcmJhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRv Y29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRv IGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0 aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwg Mg0KKw0KKyMgX0FNX1BST0dfVEFSKEZPUk1BVCkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tDQor IyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFyYmFsbCBpbiBmb3JtYXQgRk9STUFULg0KKyMgRk9S TUFUIHNob3VsZCBiZSBvbmUgb2YgYHY3JywgYHVzdGFyJywgb3IgYHBheCcuDQorIw0KKyMgU3Vi c3RpdHV0ZSBhIHZhcmlhYmxlICQoYW1fX3RhcikgdGhhdCBpcyBhIGNvbW1hbmQNCisjIHdyaXRp bmcgdG8gc3Rkb3V0IGEgRk9STUFULXRhcmJhbGwgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5DQor IyAkdGFyZGlyLg0KKyMgICAgIHRhcmRpcj1kaXJlY3RvcnkgJiYgJChhbV9fdGFyKSA+IHJlc3Vs dC50YXINCisjDQorIyBTdWJzdGl0dXRlIGEgdmFyaWFibGUgJChhbV9fdW50YXIpIHRoYXQgZXh0 cmFjdCBzdWNoDQorIyBhIHRhcmJhbGwgcmVhZCBmcm9tIHN0ZGluLg0KKyMgICAgICQoYW1fX3Vu dGFyKSA8IHJlc3VsdC50YXINCitBQ19ERUZVTihbX0FNX1BST0dfVEFSXSwNCitbIyBBbHdheXMg ZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KK0FNX01JU1NJTkdfUFJP RyhbQU1UQVJdLCBbdGFyXSkNCittNF9pZihbJDFdLCBbdjddLA0KKyAgICAgW2FtX190YXI9JyR7 QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJ10sDQor ICAgICBbbTRfY2FzZShbJDFdLCBbdXN0YXJdLCwgW3BheF0sLA0KKyAgICAgICAgICAgICAgW200 X2ZhdGFsKFtVbmtub3duIHRhciBmb3JtYXRdKV0pDQorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8g Y3JlYXRlIGEgJDEgdGFyIGFyY2hpdmVdKQ0KKyMgTG9vcCBvdmVyIGFsbCBrbm93biBtZXRob2Rz IHRvIGNyZWF0ZSBhIHRhciBhcmNoaXZlIHVudGlsIG9uZSB3b3Jrcy4NCitfYW1fdG9vbHM9J2du dXRhciBtNF9pZihbJDFdLCBbdXN0YXJdLCBbcGxhaW50YXJdKSBwYXggY3BpbyBub25lJw0KK19h bV90b29scz0ke2FtX2N2X3Byb2dfdGFyXyQxLSRfYW1fdG9vbHN9DQorIyBEbyBub3QgZm9sZCB0 aGUgYWJvdmUgdHdvIGxpbmUgaW50byBvbmUsIGJlY2F1c2UgVHJ1NjQgc2ggYW5kDQorIyBTb2xh cmlzIHNoIHdpbGwgbm90IGdyb2sgc3BhY2VzIGluIHRoZSByaHMgb2YgYC0nLg0KK2ZvciBfYW1f dG9vbCBpbiAkX2FtX3Rvb2xzDQorZG8NCisgIGNhc2UgJF9hbV90b29sIGluDQorICBnbnV0YXIp DQorICAgIGZvciBfYW1fdGFyIGluIHRhciBnbnV0YXIgZ3RhcjsNCisgICAgZG8NCisgICAgICBB TV9SVU5fTE9HKFskX2FtX3RhciAtLXZlcnNpb25dKSAmJiBicmVhaw0KKyAgICBkb25lDQorICAg IGFtX190YXI9IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBb JDFdKSAtY2hmIC0gIiciJCR0YXJkaXIiJw0KKyAgICBhbV9fdGFyXz0iJF9hbV90YXIgLS1mb3Jt YXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkdGFyZGlyIicN CisgICAgYW1fX3VudGFyPSIkX2FtX3RhciAteGYgLSINCisgICAgOzsNCisgIHBsYWludGFyKQ0K KyAgICAjIE11c3Qgc2tpcCBHTlUgdGFyOiBpZiBpdCBkb2VzIG5vdCBzdXBwb3J0IC0tZm9ybWF0 PSBpdCBkb2Vzbid0IGNyZWF0ZQ0KKyAgICAjIHVzdGFyIHRhcmJhbGwgZWl0aGVyLg0KKyAgICAo dGFyIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxICYmIGNvbnRpbnVlDQorICAgIGFtX190YXI9 J3RhciBjaGYgLSAiJCR0YXJkaXIiJw0KKyAgICBhbV9fdGFyXz0ndGFyIGNoZiAtICIkdGFyZGly IicNCisgICAgYW1fX3VudGFyPSd0YXIgeGYgLScNCisgICAgOzsNCisgIHBheCkNCisgICAgYW1f X3Rhcj0ncGF4IC1MIC14ICQxIC13ICIkJHRhcmRpciInDQorICAgIGFtX190YXJfPSdwYXggLUwg LXggJDEgLXcgIiR0YXJkaXIiJw0KKyAgICBhbV9fdW50YXI9J3BheCAtcicNCisgICAgOzsNCisg IGNwaW8pDQorICAgIGFtX190YXI9J2ZpbmQgIiQkdGFyZGlyIiAtcHJpbnQgfCBjcGlvIC1vIC1I ICQxIC1MJw0KKyAgICBhbV9fdGFyXz0nZmluZCAiJHRhcmRpciIgLXByaW50IHwgY3BpbyAtbyAt SCAkMSAtTCcNCisgICAgYW1fX3VudGFyPSdjcGlvIC1pIC1IICQxIC1kJw0KKyAgICA7Ow0KKyAg bm9uZSkNCisgICAgYW1fX3Rhcj1mYWxzZQ0KKyAgICBhbV9fdGFyXz1mYWxzZQ0KKyAgICBhbV9f dW50YXI9ZmFsc2UNCisgICAgOzsNCisgIGVzYWMNCisNCisgICMgSWYgdGhlIHZhbHVlIHdhcyBj YWNoZWQsIHN0b3Agbm93LiAgV2UganVzdCB3YW50ZWQgdG8gaGF2ZSBhbV9fdGFyDQorICAjIGFu ZCBhbV9fdW50YXIgc2V0Lg0KKyAgdGVzdCAtbiAiJHthbV9jdl9wcm9nX3Rhcl8kMX0iICYmIGJy ZWFrDQorDQorICAjIHRhci91bnRhciBhIGR1bW15IGRpcmVjdG9yeSwgYW5kIHN0b3AgaWYgdGhl IGNvbW1hbmQgd29ya3MNCisgIHJtIC1yZiBjb25mdGVzdC5kaXINCisgIG1rZGlyIGNvbmZ0ZXN0 LmRpcg0KKyAgZWNobyBHcmVwTWUgPiBjb25mdGVzdC5kaXIvZmlsZQ0KKyAgQU1fUlVOX0xPRyhb dGFyZGlyPWNvbmZ0ZXN0LmRpciAmJiBldmFsICRhbV9fdGFyXyA+Y29uZnRlc3QudGFyXSkNCisg IHJtIC1yZiBjb25mdGVzdC5kaXINCisgIGlmIHRlc3QgLXMgY29uZnRlc3QudGFyOyB0aGVuDQor ICAgIEFNX1JVTl9MT0coWyRhbV9fdW50YXIgPGNvbmZ0ZXN0LnRhcl0pDQorICAgIGdyZXAgR3Jl cE1lIGNvbmZ0ZXN0LmRpci9maWxlID4vZGV2L251bGwgMj4mMSAmJiBicmVhaw0KKyAgZmkNCitk b25lDQorcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KKw0KK0FDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJvZ190 YXJfJDFdLCBbYW1fY3ZfcHJvZ190YXJfJDE9JF9hbV90b29sXSkNCitBQ19NU0dfUkVTVUxUKFsk YW1fY3ZfcHJvZ190YXJfJDFdKV0pDQorQUNfU1VCU1QoW2FtX190YXJdKQ0KK0FDX1NVQlNUKFth bV9fdW50YXJdKQ0KK10pICMgX0FNX1BST0dfVEFSDQorDQorbTRfaW5jbHVkZShbLi4vLi4vLi4v YWNpbmNsdWRlLm00XSkNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9j b25maWd1cmUgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25maWd1cmUNCm5ldyBmaWxl IG1vZGUgMTAwNzU1DQppbmRleCAwMDAwMDAwMDAuLjMzOTM5MGRiNw0KLS0tIC9kZXYvbnVsbA0K KysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmlndXJlDQpAQCAtMCwwICsxLDQ2 MjMgQEANCisjISAvYmluL3NoDQorIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQg dmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLg0KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRv Y29uZiAyLjY0IGZvciBuZXdsaWIgMS4xOS4wLg0KKyMNCisjIENvcHlyaWdodCAoQykgMTk5Miwg MTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwNCisjIDIwMDIs IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZQ0K KyMgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVl IHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0 ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuDQorIyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIw0KKyMjIC0t LS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlDQor RFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaA0KK2lmIHRlc3QgLW4gIiR7 WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6 DQorICBlbXVsYXRlIHNoDQorICBOVUxMQ01EPToNCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBa c2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaA0KKyAgIyBpcyBjb250cmFy eSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4NCisgIGFsaWFzIC1nICckezEr IiRAIn0nPSciJEAiJw0KKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCitlbHNlDQorICBjYXNlIGAo c2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygNCisgICpwb3NpeCopIDoNCisgICAgc2V0IC1vIHBv c2l4IDs7ICMoDQorICAqKSA6DQorICAgICA7Ow0KK2VzYWMNCitmaQ0KKw0KKw0KK2FzX25sPScN CisnDQorZXhwb3J0IGFzX25sDQorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29s YXJpcyA3IC91c3IvYmluL3ByaW50Zi4NCithc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19l Y2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFz X2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVy IGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uIFNvbGFyaXMsDQorIyBidXQgd2l0aG91dCB3 YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4NCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9O JFpTSF9WRVJTSU9OIiBcDQorICAgICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIg PSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4NCisgIGFzX2VjaG89J3ByaW50IC1yIC0t Jw0KKyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nDQorZWxpZiAodGVzdCAiWGBwcmludGYgJXMg JGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfZWNobz0n cHJpbnRmICVzXG4nDQorICBhc19lY2hvX249J3ByaW50ZiAlcycNCitlbHNlDQorICBpZiB0ZXN0 ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAk YXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4g IiQxJGFzX25sIicNCisgICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1uJw0KKyAgZWxzZQ0K KyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCkiJw0KKyAgICBh c19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFyZz0kMTsNCisgICAgICBjYXNlICRhcmcgaW4g IygNCisgICAgICAqIiRhc19ubCIqKQ0KKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25s IjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsNCisgICAgICBl c2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIN CisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkNCisgICAgYXNfZWNob19uPSdzaCAt YyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycNCisgIGZpDQorICBleHBvcnQgYXNfZWNob19ib2R5 DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nDQorZmkNCisNCisjIFRo ZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0i ICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFUT1I9Og0KKyAgKFBBVEg9Jy9iaW47L2Jpbic7 IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgew0KKyAgICAoUEFUSD0n L2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fA0KKyAg ICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0KK2ZpDQorDQorDQorIyBJRlMNCisjIFdlIG5l ZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVv dGluZyBpcw0KKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJv dXQgc3BhY2UtdGFiLg0KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMg dW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZA0KKyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZT IHRvIGVtcHR5IHZhbHVlLikNCitJRlM9IiAiIgkkYXNfbmwiDQorDQorIyBGaW5kIHdobyB3ZSBh cmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRv ci4NCitjYXNlICQwIGluICMoKA0KKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBB VEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf ZGlyPS4NCisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAg JiYgYnJlYWsNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMN CisjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4g YXMgYHNoIENPTU1BTkQnDQorIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQg aW4gdGhlIHBhdGguDQoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlz ZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNo byAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBh YnNvbHV0ZSBmaWxlIG5hbWUiID4mMg0KKyAgZXhpdCAxDQorZmkNCisNCisjIFVuc2V0IHZhcmlh YmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluDQor IyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7 IHRoZSAifHwgZXhpdCAxIg0KKyMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIg bWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQNCisjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4y LjE0Lg0KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgNCitkbyBldmFs IHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXA0KKyAgJiYgKCAodW5zZXQgJGFzX3Zhcikg fHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6DQorZG9uZQ0K K1BTMT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitM Q19BTEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitMQU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQor DQorIyBDRFBBVEguDQorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENE UEFUSA0KKw0KK2lmIHRlc3QgIngkQ09ORklHX1NIRUxMIiA9IHg7IHRoZW4NCisgIGFzX2JvdXJu ZV9jb21wYXRpYmxlPSJpZiB0ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVs YXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENN RD06DQorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwk ezErXCJcJEBcIn0sIHdoaWNoDQorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2Fi bGUgdGhpcyBmZWF0dXJlLg0KKyAgYWxpYXMgLWcgJ1wkezErXCJcJEBcIn0nPSdcIlwkQFwiJw0K KyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCitlbHNlDQorICBjYXNlIFxgKHNldCAtbykgMj4vZGV2 L251bGxcYCBpbiAjKA0KKyAgKnBvc2l4KikgOg0KKyAgICBzZXQgLW8gcG9zaXggOzsgIygNCisg ICopIDoNCisgICAgIDs7DQorZXNhYw0KK2ZpDQorIg0KKyAgYXNfcmVxdWlyZWQ9ImFzX2ZuX3Jl dHVybiAoKSB7IChleGl0IFwkMSk7IH0NCithc19mbl9zdWNjZXNzICgpIHsgYXNfZm5fcmV0dXJu IDA7IH0NCithc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0dXJuIDE7IH0NCithc19mbl9yZXRf c3VjY2VzcyAoKSB7IHJldHVybiAwOyB9DQorYXNfZm5fcmV0X2ZhaWx1cmUgKCkgeyByZXR1cm4g MTsgfQ0KKw0KK2V4aXRjb2RlPTANCithc19mbl9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNo byBhc19mbl9zdWNjZXNzIGZhaWxlZC47IH0NCithc19mbl9mYWlsdXJlICYmIHsgZXhpdGNvZGU9 MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0NCithc19mbl9yZXRfc3VjY2VzcyB8 fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X3N1Y2Nlc3MgZmFpbGVkLjsgfQ0KK2FzX2Zu X3JldF9mYWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfZmFpbHVyZSBzdWNj ZWVkZWQuOyB9DQoraWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0IHggPSBc IlwkMVwiICk7IHRoZW4gOg0KKw0KK2Vsc2UNCisgIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRpb25h bCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLg0KK2ZpDQordGVzdCB4XCRleGl0Y29kZSA9IHgw IHx8IGV4aXQgMSINCisgIGFzX3N1Z2dlc3RlZD0iICBhc19saW5lbm9fMT0iO2FzX3N1Z2dlc3Rl ZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGlu ZW5vXzFhPVwkTElORU5PDQorICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2Vz dGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElO RU5PDQorICBldmFsICd0ZXN0IFwieFwkYXNfbGluZW5vXzEnXCRhc19ydW4nXCIgIT0gXCJ4XCRh c19saW5lbm9fMidcJGFzX3J1bidcIiAmJg0KKyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9f MSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4 aXQgMSINCisgIGlmIChldmFsICIkYXNfcmVxdWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQor ICBhc19oYXZlX3JlcXVpcmVkPXllcw0KK2Vsc2UNCisgIGFzX2hhdmVfcmVxdWlyZWQ9bm8NCitm aQ0KKyAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4eWVzICYmIChldmFsICIkYXNfc3Vn Z2VzdGVkIikgMj4vZGV2L251bGw7IHRoZW4gOg0KKw0KK2Vsc2UNCisgIGFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCithc19mb3VuZD1mYWxzZQ0KK2ZvciBhc19kaXIgaW4g L2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgNCitkbw0KKyAg SUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgIGFz X2ZvdW5kPToNCisgIGNhc2UgJGFzX2RpciBpbiAjKA0KKwkgLyopDQorCSAgIGZvciBhc19iYXNl IGluIHNoIGJhc2gga3NoIHNoNTsgZG8NCisJICAgICAjIFRyeSBvbmx5IHNoZWxscyB0aGF0IGV4 aXN0LCB0byBzYXZlIHNldmVyYWwgZm9ya3MuDQorCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNf YmFzZQ0KKwkgICAgIGlmIHsgdGVzdCAtZiAiJGFzX3NoZWxsIiB8fCB0ZXN0IC1mICIkYXNfc2hl bGwuZXhlIjsgfSAmJg0KKwkJICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIi JGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVu IDoNCisgIENPTkZJR19TSEVMTD0kYXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCisJCSAg IGlmIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3N1Z2dlc3RlZCIgfCBh c19ydW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBicmVhayAyDQor ZmkNCitmaQ0KKwkgICBkb25lOzsNCisgICAgICAgZXNhYw0KKyAgYXNfZm91bmQ9ZmFsc2UNCitk b25lDQorJGFzX2ZvdW5kIHx8IHsgaWYgeyB0ZXN0IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRT SEVMTC5leGUiOyB9ICYmDQorCSAgICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJs ZSIiJGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1hICIkU0hFTEwiOyB9IDI+L2Rldi9udWxsOyB0aGVu IDoNCisgIENPTkZJR19TSEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCitmaTsgfQ0K K0lGUz0kYXNfc2F2ZV9JRlMNCisNCisNCisgICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIg IT0geDsgdGhlbiA6DQorICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBz byB3ZSBoYXZlIHRvIHByb3ZpZGUgYQ0KKwkjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVs bHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbw0KKwkjIHdvcmtzIGFyb3VuZCBzaGVsbHMg dGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLg0KKwlCQVNIX0VOVj0vZGV2 L251bGwNCisJRU5WPS9kZXYvbnVsbA0KKwkodW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwgMj4m MSAmJiB1bnNldCBCQVNIX0VOViBFTlYNCisJZXhwb3J0IENPTkZJR19TSEVMTA0KKwlleGVjICIk Q09ORklHX1NIRUxMIiAiJGFzX215c2VsZiIgJHsxKyIkQCJ9DQorZmkNCisNCisgICAgaWYgdGVz dCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4bm87IHRoZW4gOg0KKyAgJGFzX2VjaG8gIiQwOiBUaGlz IHNjcmlwdCByZXF1aXJlcyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRoYW4gYWxsIg0KKyAgJGFzX2Vj aG8gIiQwOiB0aGUgc2hlbGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iDQorICBpZiB0 ZXN0IHgke1pTSF9WRVJTSU9OK3NldH0gPSB4c2V0IDsgdGhlbg0KKyAgICAkYXNfZWNobyAiJDA6 IEluIHBhcnRpY3VsYXIsIHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCINCisg ICAgJGFzX2VjaG8gIiQwOiBiZSB1cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIg0KKyAg ZWxzZQ0KKyAgICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3Jn IGFib3V0IHlvdXIgc3lzdGVtLA0KKyQwOiBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91 dHB1dCBiZWZvcmUgdGhpcw0KKyQwOiBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hl bGwsIG9yIG1hbnVhbGx5IHJ1bg0KKyQwOiB0aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBp ZiB5b3UgZG8gaGF2ZSBvbmUuIg0KKyAgZmkNCisgIGV4aXQgMQ0KK2ZpDQorZmkNCitmaQ0KK1NI RUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9DQorZXhwb3J0IFNIRUxMDQorIyBVbnNldCBtb3Jl IHZhcmlhYmxlcyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9v bHMuDQorQ0xJQ09MT1JfRk9SQ0U9IEdSRVBfT1BUSU9OUz0NCit1bnNldCBDTElDT0xPUl9GT1JD RSBHUkVQX09QVElPTlMNCisNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNo IFNoZWxsIEZ1bmN0aW9ucy4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIGFz X2ZuX3Vuc2V0IFZBUg0KKyMgLS0tLS0tLS0tLS0tLS0tDQorIyBQb3J0YWJseSB1bnNldCBWQVIu DQorYXNfZm5fdW5zZXQgKCkNCit7DQorICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9DQorfQ0KK2Fz X3Vuc2V0PWFzX2ZuX3Vuc2V0DQorDQorIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUw0KKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2lu Zy4NCithc19mbl9zZXRfc3RhdHVzICgpDQorew0KKyAgcmV0dXJuICQxDQorfSAjIGFzX2ZuX3Nl dF9zdGF0dXMNCisNCisjIGFzX2ZuX2V4aXQgU1RBVFVTDQorIyAtLS0tLS0tLS0tLS0tLS0tLQ0K KyMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0 IC1lIiBjb250ZXh0Lg0KK2FzX2ZuX2V4aXQgKCkNCit7DQorICBzZXQgK2UNCisgIGFzX2ZuX3Nl dF9zdGF0dXMgJDENCisgIGV4aXQgJDENCit9ICMgYXNfZm5fZXhpdA0KKw0KKyMgYXNfZm5fbWtk aXJfcA0KKyMgLS0tLS0tLS0tLS0tLQ0KKyMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9y eSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5Lg0KK2FzX2ZuX21rZGlyX3AgKCkNCit7 DQorDQorICBjYXNlICRhc19kaXIgaW4gIygNCisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsNCisg IGVzYWMNCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgew0KKyAg ICBhc19kaXJzPQ0KKyAgICB3aGlsZSA6OyBkbw0KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKA0K KyAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxc XFxcXCcnL2ciYDs7ICMnKA0KKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7DQorICAgICAgZXNh Yw0KKyAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiDQorICAgICAgYXNfZGlyPWAk YXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwNCiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4q W14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9d JyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRhc19kaXIiIDog J1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgiJGFzX2RpciIgfA0KKyAg ICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkg ICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQor CSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJ ICBzLy4qLy4vOyBxJ2ANCisgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhaw0KKyAgICBk b25lDQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyINCisg IH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgZGly ZWN0b3J5ICRhc19kaXIiDQorDQorDQorfSAjIGFzX2ZuX21rZGlyX3ANCisjIGFzX2ZuX2FwcGVu ZCBWQVIgVkFMVUUNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEFwcGVuZCB0aGUgdGV4 dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIu IFRha2UNCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93 IGFtb3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXINCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3Rl YWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlDQorIyBp bXBsZW1lbnRhdGlvbnMuDQoraWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwk YXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgZXZhbCAnYXNfZm5fYXBwZW5k ICgpDQorICB7DQorICAgIGV2YWwgJDErPVwkMg0KKyAgfScNCitlbHNlDQorICBhc19mbl9hcHBl bmQgKCkNCisgIHsNCisgICAgZXZhbCAkMT1cJCQxXCQyDQorICB9DQorZmkgIyBhc19mbl9hcHBl bmQNCisNCisjIGFzX2ZuX2FyaXRoIEFSRy4uLg0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBQ ZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSBy ZXN1bHQgaW4gdGhlDQorIyBnbG9iYWwgJGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxz IHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUgYXJndW1lbnRzDQorIyBtdXN0IGJlIHBvcnRhYmxl IGFjcm9zcyAkKCgpKSBhbmQgZXhwci4NCitpZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0g MiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpDQorICB7DQor ICAgIGFzX3ZhbD0kKCggJCogKSkNCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXJpdGggKCkNCisg IHsNCisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWANCisgIH0NCitmaSAj IGFzX2ZuX2FyaXRoDQorDQorDQorIyBhc19mbl9lcnJvciBFUlJPUiBbTElORU5PIExPR19GRF0N CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgT3V0cHV0ICJgYmFzZW5h bWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJl DQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNp bmcgTElORU5PLiBUaGVuIGV4aXQgdGhlDQorIyBzY3JpcHQgd2l0aCBzdGF0dXMgJD8sIHVzaW5n IDEgaWYgdGhhdCB3YXMgMC4NCithc19mbl9lcnJvciAoKQ0KK3sNCisgIGFzX3N0YXR1cz0kPzsg dGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xDQorICBpZiB0ZXN0ICIkMyI7IHRo ZW4NCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMiJ9IGFzX2xpbmVub19zdGFjaz1hc19s aW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaw0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDEiID4mJDMNCisgIGZpDQorICAkYXNfZWNobyAiJGFz X21lOiBlcnJvcjogJDEiID4mMg0KKyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzDQorfSAjIGFzX2Zu X2Vycm9yDQorDQoraWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjEgJiYNCisgICB0 ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhlbg0KKyAgYXNfZXhw cj1leHByDQorZWxzZQ0KKyAgYXNfZXhwcj1mYWxzZQ0KK2ZpDQorDQoraWYgKGJhc2VuYW1lIC0t IC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgv IjsgdGhlbg0KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUNCitlbHNlDQorICBhc19iYXNlbmFtZT1m YWxzZQ0KK2ZpDQorDQoraWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2Rp ciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBhc19kaXJuYW1lPWRpcm5hbWUNCitl bHNlDQorICBhc19kaXJuYW1lPWZhbHNlDQorZmkNCisNCithc19tZT1gJGFzX2Jhc2VuYW1lIC0t ICIkMCIgfHwNCiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXA0K KwkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9k ZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgvIiQwIiB8DQorICAgIHNlZCAnL14uKlwvXChbXi9dW14v XSpcKVwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwvXChcL1wv XCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcL1woXC9cKS4qL3sN CisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisNCisjIEF2 b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuDQorYXNfY3JfbGV0dGVycz0nYWJj ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonDQorYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5P UFFSU1RVVldYWVonDQorYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJT DQorYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5Jw0KK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJz JGFzX2NyX2RpZ2l0cw0KKw0KKw0KKyAgYXNfbGluZW5vXzE9JExJTkVOTyBhc19saW5lbm9fMWE9 JExJTkVOTw0KKyAgYXNfbGluZW5vXzI9JExJTkVOTyBhc19saW5lbm9fMmE9JExJTkVOTw0KKyAg ZXZhbCAndGVzdCAieCRhc19saW5lbm9fMSckYXNfcnVuJyIgIT0gIngkYXNfbGluZW5vXzInJGFz X3J1biciICYmDQorICB0ZXN0ICJ4YGV4cHIgJGFzX2xpbmVub18xJyRhc19ydW4nICsgMWAiID0g IngkYXNfbGluZW5vXzInJGFzX3J1biciJyB8fCB7DQorICAjIEJsYW1lIExlZSBFLiBNY01haG9u ICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkNCisgIHNlZCAtbiAnDQorICAgIHAN CisgICAgL1skXUxJTkVOTy89DQorICAnIDwkYXNfbXlzZWxmIHwNCisgICAgc2VkICcNCisgICAg ICBzL1skXUxJTkVOTy4qLyYtLw0KKyAgICAgIHQgbGluZW5vDQorICAgICAgYg0KKyAgICAgIDps aW5lbm8NCisgICAgICBODQorICAgICAgOmxvb3ANCisgICAgICBzL1skXUxJTkVOT1woW14nJGFz X2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8NCisgICAgICB0IGxvb3ANCisgICAgICBz Ly1cbi4qLy8NCisgICAgJyA+JGFzX21lLmxpbmVubyAmJg0KKyAgY2htb2QgK3ggIiRhc19tZS5s aW5lbm8iIHx8DQorICAgIHsgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUg JGFzX21lLmxpbmVubzsgcmVydW4gd2l0aCBhIFBPU0lYIHNoZWxsIiA+JjI7IGFzX2ZuX2V4aXQg MTsgfQ0KKw0KKyAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBjaGFuZ2VzICRbMF0sIGNhdXNp bmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMNCisgICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90 IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBmaW5kIHRoZQ0KKyAgIyBvcmlnaW5hbCBhbmQgc28g b24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4NCisgIC4gIi4v JGFzX21lLmxpbmVubyINCisgICMgRXhpdCBzdGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21t YW5kLg0KKyAgZXhpdA0KK30NCisNCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2UgYGVj aG8gLW4geGAgaW4gIygoKCgoDQorLW4qKQ0KKyAgY2FzZSBgZWNobyAneHlcYydgIGluDQorICAq YyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4NCisgIHh5 KSAgRUNIT19DPSdcYyc7Ow0KKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4x YCA+IC9kZXYvbnVsbA0KKyAgICAgICBFQ0hPX1Q9JwknOzsNCisgIGVzYWM7Ow0KKyopDQorICBF Q0hPX049Jy1uJzs7DQorZXNhYw0KKw0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5m aWxlDQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuDQorICBybSAtZiBjb25mJCQuZGlyL2Nv bmYkJC5maWxlDQorZWxzZQ0KKyAgcm0gLWYgY29uZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQkLmRp ciAyPi9kZXYvbnVsbA0KK2ZpDQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsg dGhlbg0KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQor ICAgIGFzX2xuX3M9J2xuIC1zJw0KKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFz Og0KKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUg ZGlyJyBmYWlsLg0KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAt cycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4NCisgICAgIyBJbiBib3RoIGNhc2VzLCB3 ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4NCisgICAgbG4gLXMgY29uZiQkLmZpbGUgY29u ZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fA0KKyAgICAgIGFz X2xuX3M9J2NwIC1wJw0KKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7 IHRoZW4NCisgICAgYXNfbG5fcz1sbg0KKyAgZWxzZQ0KKyAgICBhc19sbl9zPSdjcCAtcCcNCisg IGZpDQorZWxzZQ0KKyAgYXNfbG5fcz0nY3AgLXAnDQorZmkNCitybSAtZiBjb25mJCQgY29uZiQk LmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlDQorcm1kaXIgY29uZiQkLmRp ciAyPi9kZXYvbnVsbA0KKw0KK2lmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4NCisgIGFz X21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicNCitlbHNlDQorICB0ZXN0IC1kIC4vLXAgJiYg cm1kaXIgLi8tcA0KKyAgYXNfbWtkaXJfcD1mYWxzZQ0KK2ZpDQorDQoraWYgdGVzdCAteCAvID4v ZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfdGVzdF94PSd0ZXN0IC14Jw0KK2Vsc2UNCisgIGlm IGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgICBhc19sc19MX29wdGlvbj1MDQor ICBlbHNlDQorICAgIGFzX2xzX0xfb3B0aW9uPQ0KKyAgZmkNCisgIGFzX3Rlc3RfeD0nDQorICAg IGV2YWwgc2ggLWMgJ1wnJw0KKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbg0KKwl0ZXN0IC1k ICIkMS8uIjsNCisgICAgICBlbHNlDQorCWNhc2UgJDEgaW4gIygNCisJLSopc2V0ICIuLyQxIjs7 DQorCWVzYWM7DQorCWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251 bGxgIGluICMoKA0KKwk/Pz9bc3hdKik6OzsqKWZhbHNlOztlc2FjO2ZpDQorICAgICdcJycgc2gN CisgICcNCitmaQ0KK2FzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94DQorDQorIyBTZWQgZXhwcmVz c2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLg0KK2FzX3RyX2NwcD0i ZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3Jf YWxudW1dJV8lZyciDQorDQorIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBh IHZhbGlkIHZhcmlhYmxlIG5hbWUuDQorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVte XyRhc19jcl9hbG51bV0lXyVnJyINCisNCisNCitleGVjIDc8JjAgPC9kZXYvbnVsbCA2PiYxDQor DQorIyBOYW1lIG9mIHRoZSBob3N0Lg0KKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIz LjIsIExpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsDQorIyBzbyB1bmFtZSBnZXRz IHJ1biB0b28uDQorYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251 bGwgfCBzZWQgMXFgDQorDQorIw0KKyMgSW5pdGlhbGl6YXRpb25zLg0KKyMNCithY19kZWZhdWx0 X3ByZWZpeD0vdXNyL2xvY2FsDQorYWNfY2xlYW5fZmlsZXM9DQorYWNfY29uZmlnX2xpYm9ial9k aXI9Lg0KK0xJQk9CSlM9DQorY3Jvc3NfY29tcGlsaW5nPW5vDQorc3ViZGlycz0NCitNRkxBR1M9 DQorTUFLRUZMQUdTPQ0KKw0KKyMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLg0KK1BBQ0tBR0Vf TkFNRT0nbmV3bGliJw0KK1BBQ0tBR0VfVEFSTkFNRT0nbmV3bGliJw0KK1BBQ0tBR0VfVkVSU0lP Tj0nMS4xOS4wJw0KK1BBQ0tBR0VfU1RSSU5HPSduZXdsaWIgMS4xOS4wJw0KK1BBQ0tBR0VfQlVH UkVQT1JUPScnDQorUEFDS0FHRV9VUkw9JycNCisNCithY191bmlxdWVfZmlsZT0iTWFrZWZpbGUu YW0iDQorYWNfc3Vic3RfdmFycz0nTFRMSUJPQkpTDQorTElCT0JKUw0KK3N5c19kaXINCittYWNo aW5lX2Rpcg0KK2xpYm1fbWFjaGluZV9kaXINCitscGZ4DQorYWV4dA0KK29leHQNCitPQkpFWFQN CitVU0VfTElCVE9PTF9GQUxTRQ0KK1VTRV9MSUJUT09MX1RSVUUNCitFTElYX0xFVkVMXzRfRkFM U0UNCitFTElYX0xFVkVMXzRfVFJVRQ0KK0VMSVhfTEVWRUxfM19GQUxTRQ0KK0VMSVhfTEVWRUxf M19UUlVFDQorRUxJWF9MRVZFTF8yX0ZBTFNFDQorRUxJWF9MRVZFTF8yX1RSVUUNCitFTElYX0xF VkVMXzFfRkFMU0UNCitFTElYX0xFVkVMXzFfVFJVRQ0KK0VMSVhfTEVWRUxfMF9GQUxTRQ0KK0VM SVhfTEVWRUxfMF9UUlVFDQorTERGTEFHUw0KK05PX0lOQ0xVREVfTElTVA0KK05FV0xJQl9DRkxB R1MNCitDQ0FTRkxBR1MNCitDQ0FTDQorTUFJTlQNCitNQUlOVEFJTkVSX01PREVfRkFMU0UNCitN QUlOVEFJTkVSX01PREVfVFJVRQ0KK1JFQURFTEYNCitSQU5MSUINCitBUg0KK0FTDQorYW1fX2Zh c3RkZXBDQ19GQUxTRQ0KK2FtX19mYXN0ZGVwQ0NfVFJVRQ0KK0NDREVQTU9ERQ0KK0FNREVQQkFD S1NMQVNIDQorQU1ERVBfRkFMU0UNCitBTURFUF9UUlVFDQorYW1fX3F1b3RlDQorYW1fX2luY2x1 ZGUNCitERVBESVINCitDQw0KK2FtX191bnRhcg0KK2FtX190YXINCitBTVRBUg0KK2FtX19sZWFk aW5nX2RvdA0KK1NFVF9NQUtFDQorQVdLDQorbWtkaXJfcA0KK0lOU1RBTExfU1RSSVBfUFJPR1JB TQ0KK1NUUklQDQoraW5zdGFsbF9zaA0KK01BS0VJTkZPDQorQVVUT0hFQURFUg0KK0FVVE9NQUtF DQorQVVUT0NPTkYNCitBQ0xPQ0FMDQorVkVSU0lPTg0KK1BBQ0tBR0UNCitDWUdQQVRIX1cNCitJ TlNUQUxMX0RBVEENCitJTlNUQUxMX1NDUklQVA0KK0lOU1RBTExfUFJPR1JBTQ0KK2hvc3Rfb3MN Citob3N0X3ZlbmRvcg0KK2hvc3RfY3B1DQoraG9zdA0KK2J1aWxkX29zDQorYnVpbGRfdmVuZG9y DQorYnVpbGRfY3B1DQorYnVpbGQNCituZXdsaWJfYmFzZWRpcg0KK01BWV9TVVBQTFlfU1lTQ0FM TFNfRkFMU0UNCitNQVlfU1VQUExZX1NZU0NBTExTX1RSVUUNCit0YXJnZXRfYWxpYXMNCitob3N0 X2FsaWFzDQorYnVpbGRfYWxpYXMNCitMSUJTDQorRUNIT19UDQorRUNIT19ODQorRUNIT19DDQor REVGUw0KK21hbmRpcg0KK2xvY2FsZWRpcg0KK2xpYmRpcg0KK3BzZGlyDQorcGRmZGlyDQorZHZp ZGlyDQoraHRtbGRpcg0KK2luZm9kaXINCitkb2NkaXINCitvbGRpbmNsdWRlZGlyDQoraW5jbHVk ZWRpcg0KK2xvY2Fsc3RhdGVkaXINCitzaGFyZWRzdGF0ZWRpcg0KK3N5c2NvbmZkaXINCitkYXRh ZGlyDQorZGF0YXJvb3RkaXINCitsaWJleGVjZGlyDQorc2JpbmRpcg0KK2JpbmRpcg0KK3Byb2dy YW1fdHJhbnNmb3JtX25hbWUNCitwcmVmaXgNCitleGVjX3ByZWZpeA0KK1BBQ0tBR0VfVVJMDQor UEFDS0FHRV9CVUdSRVBPUlQNCitQQUNLQUdFX1NUUklORw0KK1BBQ0tBR0VfVkVSU0lPTg0KK1BB Q0tBR0VfVEFSTkFNRQ0KK1BBQ0tBR0VfTkFNRQ0KK1BBVEhfU0VQQVJBVE9SDQorU0hFTEwnDQor YWNfc3Vic3RfZmlsZXM9JycNCithY191c2VyX29wdHM9Jw0KK2VuYWJsZV9vcHRpb25fY2hlY2tp bmcNCitlbmFibGVfbXVsdGlsaWINCitlbmFibGVfdGFyZ2V0X29wdHNwYWNlDQorZW5hYmxlX21h bGxvY19kZWJ1Z2dpbmcNCitlbmFibGVfbmV3bGliX211bHRpdGhyZWFkDQorZW5hYmxlX25ld2xp Yl9pY29udg0KK2VuYWJsZV9uZXdsaWJfZWxpeF9sZXZlbA0KK2VuYWJsZV9uZXdsaWJfaW9fZmxv YXQNCitlbmFibGVfbmV3bGliX3N1cHBsaWVkX3N5c2NhbGxzDQorZW5hYmxlX2RlcGVuZGVuY3lf dHJhY2tpbmcNCitlbmFibGVfbWFpbnRhaW5lcl9tb2RlDQorJw0KKyAgICAgIGFjX3ByZWNpb3Vz X3ZhcnM9J2J1aWxkX2FsaWFzDQoraG9zdF9hbGlhcw0KK3RhcmdldF9hbGlhcw0KK0NDQVMNCitD Q0FTRkxBR1MnDQorDQorDQorIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRp b25zLg0KK2FjX2luaXRfaGVscD0NCithY19pbml0X3ZlcnNpb249ZmFsc2UNCithY191bnJlY29n bml6ZWRfb3B0cz0NCithY191bnJlY29nbml6ZWRfc2VwPQ0KKyMgVGhlIHZhcmlhYmxlcyBoYXZl IHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3aXRoDQorIyBkYXNoZXMgY2hhbmdlZCB0 byB1bmRlcmxpbmVzLg0KK2NhY2hlX2ZpbGU9L2Rldi9udWxsDQorZXhlY19wcmVmaXg9Tk9ORQ0K K25vX2NyZWF0ZT0NCitub19yZWN1cnNpb249DQorcHJlZml4PU5PTkUNCitwcm9ncmFtX3ByZWZp eD1OT05FDQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQ0KK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4 LHgsDQorc2lsZW50PQ0KK3NpdGU9DQorc3JjZGlyPQ0KK3ZlcmJvc2U9DQoreF9pbmNsdWRlcz1O T05FDQoreF9saWJyYXJpZXM9Tk9ORQ0KKw0KKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRp b25zLg0KKyMgVGhlc2UgYXJlIGxlZnQgdW5leHBhbmRlZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5z dGFsbCBleGVjX3ByZWZpeD0vZm9vIg0KKyMgYW5kIGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgYXJl IHN1cHBvc2VkIHRvIGJlIGJhc2VkIG9uIGV4ZWNfcHJlZml4DQorIyBieSBkZWZhdWx0IHdpbGwg YWN0dWFsbHkgY2hhbmdlLg0KKyMgVXNlIGJyYWNlcyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNhdXNl IHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0IHRoZW0uDQorIyAoVGhlIGxpc3QgZm9sbG93cyB0 aGUgc2FtZSBvcmRlciBhcyB0aGUgR05VIENvZGluZyBTdGFuZGFyZHMuKQ0KK2JpbmRpcj0nJHtl eGVjX3ByZWZpeH0vYmluJw0KK3NiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nDQorbGliZXhl Y2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycNCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3No YXJlJw0KK2RhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9Jw0KK3N5c2NvbmZkaXI9JyR7cHJlZml4fS9l dGMnDQorc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nDQorbG9jYWxzdGF0ZWRpcj0nJHtw cmVmaXh9L3ZhcicNCitpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScNCitvbGRpbmNsdWRl ZGlyPScvdXNyL2luY2x1ZGUnDQorZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdF X1RBUk5BTUV9Jw0KK2luZm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nDQoraHRtbGRpcj0nJHtk b2NkaXJ9Jw0KK2R2aWRpcj0nJHtkb2NkaXJ9Jw0KK3BkZmRpcj0nJHtkb2NkaXJ9Jw0KK3BzZGly PScke2RvY2Rpcn0nDQorbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInDQorbG9jYWxlZGlyPSck e2RhdGFyb290ZGlyfS9sb2NhbGUnDQorbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nDQorDQor YWNfcHJldj0NCithY19kYXNoZGFzaD0NCitmb3IgYWNfb3B0aW9uDQorZG8NCisgICMgSWYgdGhl IHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0Lg0KKyAgaWYgdGVz dCAtbiAiJGFjX3ByZXYiOyB0aGVuDQorICAgIGV2YWwgJGFjX3ByZXY9XCRhY19vcHRpb24NCisg ICAgYWNfcHJldj0NCisgICAgY29udGludWUNCisgIGZpDQorDQorICBjYXNlICRhY19vcHRpb24g aW4NCisgICo9KikJYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwp J2AgOzsNCisgICopCWFjX29wdGFyZz15ZXMgOzsNCisgIGVzYWMNCisNCisgICMgQWNjZXB0IHRo ZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2Ug dHlwb3MuDQorDQorICBjYXNlICRhY19kYXNoZGFzaCRhY19vcHRpb24gaW4NCisgIC0tKQ0KKyAg ICBhY19kYXNoZGFzaD15ZXMgOzsNCisNCisgIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkg fCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpDQorICAgIGFjX3ByZXY9YmluZGlyIDs7DQorICAtYmlu ZGlyPSogfCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJpbj0qIHwgLS1i aT0qKQ0KKyAgICBiaW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWJ1aWxkIHwgLS1idWlsZCB8 IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkNCisgICAgYWNfcHJldj1idWlsZF9hbGlhcyA7Ow0KKyAg LWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAtLWJ1PSopDQorICAg IGJ1aWxkX2FsaWFzPSRhY19vcHRhcmcgOzsNCisNCisgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1m aWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwNCisgIHwgLS1jYWNoZS1mIHwgLS1jYWNo ZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQ0KKyAgICBhY19wcmV2 PWNhY2hlX2ZpbGUgOzsNCisgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2Fj aGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXA0KKyAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSog fCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikNCisgICAg Y2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7DQorDQorICAtLWNvbmZpZy1jYWNoZSB8IC1DKQ0KKyAg ICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7Ow0KKw0KKyAgLWRhdGFkaXIgfCAtLWRhdGFkaXIg fCAtLWRhdGFkaSB8IC0tZGF0YWQpDQorICAgIGFjX3ByZXY9ZGF0YWRpciA7Ow0KKyAgLWRhdGFk aXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikNCisgICAgZGF0YWRp cj0kYWNfb3B0YXJnIDs7DQorDQorICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGlyIHwgLS1k YXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwNCisgIHwgLS1kYXRhcm9vIHwg LS1kYXRhcm8gfCAtLWRhdGFyKQ0KKyAgICBhY19wcmV2PWRhdGFyb290ZGlyIDs7DQorICAtZGF0 YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1kYXRhcm9v dGQ9KiBcDQorICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1kYXRhcm89KiB8IC0t ZGF0YXI9KikNCisgICAgZGF0YXJvb3RkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWRpc2FibGUt KiB8IC0tZGlzYWJsZS0qKQ0KKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAn eC0qZGlzYWJsZS1cKC4qXCknYA0KKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFs aWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQorICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipb Xi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQorICAgICAgYXNfZm5fZXJyb3IgImlu dmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCINCisgICAgYWNfdXNlcm9wdF9vcmlnPSRh Y191c2Vyb3B0DQorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQg J3MvWy0rLl0vXy9nJ2ANCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluDQorICAgICAgKiINCisi ZW5hYmxlXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAgICopIGFjX3VucmVjb2duaXplZF9v cHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZGlzYWJsZS0k YWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsNCisgICAgZXNh Yw0KKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1ubyA7Ow0KKw0KKyAgLWRvY2RpciB8IC0t ZG9jZGlyIHwgLS1kb2NkaSB8IC0tZG9jIHwgLS1kbykNCisgICAgYWNfcHJldj1kb2NkaXIgOzsN CisgIC1kb2NkaXI9KiB8IC0tZG9jZGlyPSogfCAtLWRvY2RpPSogfCAtLWRvYz0qIHwgLS1kbz0q KQ0KKyAgICBkb2NkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWR2aWRpciB8IC0tZHZpZGlyIHwg LS1kdmlkaSB8IC0tZHZpZCB8IC0tZHZpIHwgLS1kdikNCisgICAgYWNfcHJldj1kdmlkaXIgOzsN CisgIC1kdmlkaXI9KiB8IC0tZHZpZGlyPSogfCAtLWR2aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZp PSogfCAtLWR2PSopDQorICAgIGR2aWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZW5hYmxlLSog fCAtLWVuYWJsZS0qKQ0KKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0q ZW5hYmxlLVwoW149XSpcKSdgDQorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxp ZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlte LSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisgICAgICBhc19mbl9lcnJvciAiaW52 YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0Ig0KKyAgICBhY191c2Vyb3B0X29yaWc9JGFj X3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAn cy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4NCisgICAgICAqIg0KKyJl bmFibGVfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29w dHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS1lbmFibGUtJGFj X3VzZXJvcHRfb3JpZyINCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7DQorICAgIGVzYWMN CisgICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsNCisNCisgIC1leGVj LXByZWZpeCB8IC0tZXhlY19wcmVmaXggfCAtLWV4ZWMtcHJlZml4IHwgLS1leGVjLXByZWZpIFwN CisgIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAt LWV4ZWMtIFwNCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQ0KKyAgICBhY19wcmV2PWV4ZWNf cHJlZml4IDs7DQorICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhlYy1w cmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwNCisgIHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1w cmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBcDQorICB8IC0tZXhl Yz0qIHwgLS1leGU9KiB8IC0tZXg9KikNCisgICAgZXhlY19wcmVmaXg9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0t d2l0aC1nYXMuDQorICAgIHdpdGhfZ2FzPXllcyA7Ow0KKw0KKyAgLWhlbHAgfCAtLWhlbHAgfCAt LWhlbCB8IC0taGUgfCAtaCkNCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsNCisgIC1oZWxwPXIq IHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhlPXIqIHwgLWhyKikNCisgICAgYWNfaW5pdF9o ZWxwPXJlY3Vyc2l2ZSA7Ow0KKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0t aGU9cyogfCAtaHMqKQ0KKyAgICBhY19pbml0X2hlbHA9c2hvcnQgOzsNCisNCisgIC1ob3N0IHwg LS1ob3N0IHwgLS1ob3MgfCAtLWhvKQ0KKyAgICBhY19wcmV2PWhvc3RfYWxpYXMgOzsNCisgIC1o b3N0PSogfCAtLWhvc3Q9KiB8IC0taG9zPSogfCAtLWhvPSopDQorICAgIGhvc3RfYWxpYXM9JGFj X29wdGFyZyA7Ow0KKw0KKyAgLWh0bWxkaXIgfCAtLWh0bWxkaXIgfCAtLWh0bWxkaSB8IC0taHRt bGQgfCAtLWh0bWwgfCAtLWh0bSB8IC0taHQpDQorICAgIGFjX3ByZXY9aHRtbGRpciA7Ow0KKyAg LWh0bWxkaXI9KiB8IC0taHRtbGRpcj0qIHwgLS1odG1sZGk9KiB8IC0taHRtbGQ9KiB8IC0taHRt bD0qIHwgLS1odG09KiBcDQorICB8IC0taHQ9KikNCisgICAgaHRtbGRpcj0kYWNfb3B0YXJnIDs7 DQorDQorICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNs dWRlZCB8IC0taW5jbHVkZSBcDQorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0t aW5jKQ0KKyAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsNCisgIC1pbmNsdWRlZGlyPSogfCAtLWlu Y2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBc DQorICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopDQorICAg IGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAt LWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikNCisgICAgYWNfcHJldj1pbmZvZGly IDs7DQorICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWluZm9kaT0qIHwgLS1pbmZvZD0q IHwgLS1pbmZvPSogfCAtLWluZj0qKQ0KKyAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsNCisNCisg IC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpDQorICAgIGFjX3ByZXY9bGli ZGlyIDs7DQorICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSop DQorICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtbGliZXhlY2RpciB8IC0tbGliZXhl Y2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8IC0tbGliZXhlYyBcDQorICB8IC0tbGli ZXhlIHwgLS1saWJleCB8IC0tbGliZSkNCisgICAgYWNfcHJldj1saWJleGVjZGlyIDs7DQorICAt bGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaT0qIHwgLS1saWJleGVj ZD0qIHwgLS1saWJleGVjPSogXA0KKyAgfCAtLWxpYmV4ZT0qIHwgLS1saWJleD0qIHwgLS1saWJl PSopDQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxvY2FsZWRpciB8IC0t bG9jYWxlZGlyIHwgLS1sb2NhbGVkaSB8IC0tbG9jYWxlZCB8IC0tbG9jYWxlKQ0KKyAgICBhY19w cmV2PWxvY2FsZWRpciA7Ow0KKyAgLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaXI9KiB8IC0tbG9j YWxlZGk9KiB8IC0tbG9jYWxlZD0qIHwgLS1sb2NhbGU9KikNCisgICAgbG9jYWxlZGlyPSRhY19v cHRhcmcgOzsNCisNCisgIC1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2Nh bHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwNCisgIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0 YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IHwgLS1sb2NhbHMpDQorICAgIGFjX3ByZXY9bG9j YWxzdGF0ZWRpciA7Ow0KKyAgLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwg LS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9KiBcDQorICB8IC0tbG9jYWxzdGF0ZT0q IHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0qIHwgLS1sb2NhbHM9 KikNCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtbWFuZGlyIHwgLS1t YW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1tKQ0KKyAgICBhY19w cmV2PW1hbmRpciA7Ow0KKyAgLW1hbmRpcj0qIHwgLS1tYW5kaXI9KiB8IC0tbWFuZGk9KiB8IC0t bWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0tbT0qKQ0KKyAgICBtYW5kaXI9JGFjX29wdGFy ZyA7Ow0KKw0KKyAgLW5mcCB8IC0tbmZwIHwgLS1uZikNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0t d2l0aG91dC1mcC4NCisgICAgd2l0aF9mcD1ubyA7Ow0KKw0KKyAgLW5vLWNyZWF0ZSB8IC0tbm8t Y3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwNCisgIHwgLS1uby1j ciB8IC0tbm8tYyB8IC1uKQ0KKyAgICBub19jcmVhdGU9eWVzIDs7DQorDQorICAtbm8tcmVjdXJz aW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwNCisg IHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5v LXJlIHwgLS1uby1yKQ0KKyAgICBub19yZWN1cnNpb249eWVzIDs7DQorDQorICAtb2xkaW5jbHVk ZWRpciB8IC0tb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpIHwgLS1vbGRpbmNsdWRlZCBc DQorICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5j bCB8IC0tb2xkaW5jIFwNCisgIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0t bykNCisgICAgYWNfcHJldj1vbGRpbmNsdWRlZGlyIDs7DQorICAtb2xkaW5jbHVkZWRpcj0qIHwg LS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwN CisgIHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1v bGRpbmNsPSogfCAtLW9sZGluYz0qIFwNCisgIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9s ZD0qIHwgLS1vbD0qIHwgLS1vPSopDQorICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1w ciB8IC0tcCkNCisgICAgYWNfcHJldj1wcmVmaXggOzsNCisgIC1wcmVmaXg9KiB8IC0tcHJlZml4 PSogfCAtLXByZWZpPSogfCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtLXA9KikNCisg ICAgcHJlZml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3Jh bS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcDQorICB8IC0tcHJv Z3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkNCisgICAgYWNfcHJldj1wcm9n cmFtX3ByZWZpeCA7Ow0KKyAgLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSog fCAtLXByb2dyYW0tcHJlZmk9KiBcDQorICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0t cHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopDQorICAgIHByb2dyYW1fcHJl Zml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZm aXggfCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tc3VmZiBcDQorICB8IC0tcHJvZ3JhbS1z dWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykNCisgICAgYWNfcHJldj1wcm9ncmFtX3N1 ZmZpeCA7Ow0KKyAgLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXBy b2dyYW0tc3VmZmk9KiBcDQorICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSog fCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopDQorICAgIHByb2dyYW1fc3VmZml4PSRh Y19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRy YW5zZm9ybS1uYW1lIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW0gfCAtLXByb2dyYW0t dHJhbnNmb3JtLW5hIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRy YW5zZm9ybS0gXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9y IFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAtLXByb2dyYW0tdHJhbnNmIFwNCisgIHwgLS1w cm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4gXA0KKyAgfCAtLXByb2dyLXRyYSB8IC0tcHJv Z3JhbS10ciB8IC0tcHJvZ3JhbS10KQ0KKyAgICBhY19wcmV2PXByb2dyYW1fdHJhbnNmb3JtX25h bWUgOzsNCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogfCAtLXByb2dyYW0tdHJhbnNmb3Jt LW5hbWU9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJh bnNmb3JtLW5hPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49KiB8IC0tcHJvZ3JhbS10 cmFuc2Zvcm0tPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtPSogfCAtLXByb2dyYW0tdHJh bnNmb3I9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSog XA0KKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSogXA0KKyAgfCAtLXBy b2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0qKQ0KKyAgICBwcm9ncmFt X3RyYW5zZm9ybV9uYW1lPSRhY19vcHRhcmcgOzsNCisNCisgIC1wZGZkaXIgfCAtLXBkZmRpciB8 IC0tcGRmZGkgfCAtLXBkZmQgfCAtLXBkZiB8IC0tcGQpDQorICAgIGFjX3ByZXY9cGRmZGlyIDs7 DQorICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1wZGZkPSogfCAtLXBk Zj0qIHwgLS1wZD0qKQ0KKyAgICBwZGZkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXBzZGlyIHwg LS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1wcykNCisgICAgYWNfcHJldj1wc2RpciA7Ow0K KyAgLXBzZGlyPSogfCAtLXBzZGlyPSogfCAtLXBzZGk9KiB8IC0tcHNkPSogfCAtLXBzPSopDQor ICAgIHBzZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0t cXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcDQorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0t c2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkNCisgICAgc2lsZW50PXllcyA7Ow0KKw0KKyAgLXNiaW5k aXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0t c2IpDQorICAgIGFjX3ByZXY9c2JpbmRpciA7Ow0KKyAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0q IHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwNCisgIHwgLS1zYmk9KiB8IC0t c2I9KikNCisgICAgc2JpbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtc2hhcmVkc3RhdGVkaXIg fCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwNCisgIHwgLS1zaGFyZWRzdGF0 ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwgLS1zaGFyZWRzdGEgXA0KKyAgfCAt LXNoYXJlZHN0IHwgLS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwNCisg IHwgLS1zaGEgfCAtLXNoKQ0KKyAgICBhY19wcmV2PXNoYXJlZHN0YXRlZGlyIDs7DQorICAtc2hh cmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwN CisgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0q IHwgLS1zaGFyZWRzdGE9KiBcDQorICB8IC0tc2hhcmVkc3Q9KiB8IC0tc2hhcmVkcz0qIHwgLS1z aGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwNCisgIHwgLS1zaGE9KiB8IC0tc2g9KikN CisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNpdGUgfCAtLXNpdGUg fCAtLXNpdCkNCisgICAgYWNfcHJldj1zaXRlIDs7DQorICAtc2l0ZT0qIHwgLS1zaXRlPSogfCAt LXNpdD0qKQ0KKyAgICBzaXRlPSRhY19vcHRhcmcgOzsNCisNCisgIC1zcmNkaXIgfCAtLXNyY2Rp ciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpDQorICAgIGFjX3ByZXY9c3JjZGly IDs7DQorICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAt LXNyYz0qIHwgLS1zcj0qKQ0KKyAgICBzcmNkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXN5c2Nv bmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2Nv bmYgXA0KKyAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8IC0tc3kpDQor ICAgIGFjX3ByZXY9c3lzY29uZmRpciA7Ow0KKyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRp cj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29uZj0qIFwNCisgIHwg LS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lzYz0qIHwgLS1zeXM9KiB8IC0tc3k9KikNCisg ICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtdGFyZ2V0IHwgLS10YXJnZXQgfCAt LXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQ0KKyAgICBhY19wcmV2PXRhcmdl dF9hbGlhcyA7Ow0KKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFy Zz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQ0KKyAgICB0YXJnZXRfYWxpYXM9JGFjX29w dGFyZyA7Ow0KKw0KKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12 ZXJibyB8IC0tdmVyYikNCisgICAgdmVyYm9zZT15ZXMgOzsNCisNCisgIC12ZXJzaW9uIHwgLS12 ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpDQorICAgIGFjX2luaXRf dmVyc2lvbj06IDs7DQorDQorICAtd2l0aC0qIHwgLS13aXRoLSopDQorICAgIGFjX3VzZXJvcHQ9 YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgDQorICAgICMgUmVqZWN0 IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhw ciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYN CisgICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0Ig0K KyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2Vj aG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2Vy X29wdHMgaW4NCisgICAgICAqIg0KKyJ3aXRoXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAg ICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNv Z25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25pemVkX3Nl cD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9XCRhY19vcHRh cmcgOzsNCisNCisgIC13aXRob3V0LSogfCAtLXdpdGhvdXQtKikNCisgICAgYWNfdXNlcm9wdD1g ZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2ANCisgICAgIyBSZWplY3Qg bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHBy ICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0K KyAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiDQor ICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNo byAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJf b3B0cyBpbg0KKyAgICAgICoiDQorIndpdGhfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAg KikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29n bml6ZWRfc2VwLS13aXRob3V0LSRhY191c2Vyb3B0X29yaWciDQorCSBhY191bnJlY29nbml6ZWRf c2VwPScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7Ow0K Kw0KKyAgLS14KQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLXguDQorICAgIHdpdGhfeD15 ZXMgOzsNCisNCisgIC14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAt LXgtaW5jbHVkIHwgLS14LWluY2x1IFwNCisgIHwgLS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWlu IHwgLS14LWkpDQorICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7Ow0KKyAgLXgtaW5jbHVkZXM9KiB8 IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNs dT0qIFwNCisgIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1pbj0qIHwgLS14LWk9KikN CisgICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7DQorDQorICAteC1saWJyYXJpZXMgfCAtLXgt bGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXA0KKyAgfCAtLXgtbGlicmFy IHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14LWxpIHwgLS14LWwpDQorICAg IGFjX3ByZXY9eF9saWJyYXJpZXMgOzsNCisgIC14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmll cz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwNCisgIHwgLS14LWxpYnJhcj0q IHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgt bD0qKQ0KKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7DQorDQorICAtKikgYXNfZm5fZXJy b3IgInVucmVjb2duaXplZCBvcHRpb246IFxgJGFjX29wdGlvbicNCitUcnkgXGAkMCAtLWhlbHAn IGZvciBtb3JlIGluZm9ybWF0aW9uLiINCisgICAgOzsNCisNCisgICo9KikNCisgICAgYWNfZW52 dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpcKT0nYA0KKyAgICAjIFJlamVjdCBu YW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQorICAgIGNhc2Ug JGFjX2VudnZhciBpbiAjKA0KKyAgICAgICcnIHwgWzAtOV0qIHwgKlshXyRhc19jcl9hbG51bV0q ICkNCisgICAgICBhc19mbl9lcnJvciAiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2 YXInIiA7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgJGFjX2VudnZhcj1cJGFjX29wdGFyZw0KKyAg ICBleHBvcnQgJGFjX2VudnZhciA7Ow0KKw0KKyAgKikNCisgICAgIyBGSVhNRTogc2hvdWxkIGJl IHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H OiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+JjINCisgICAgZXhw ciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQor ICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19v cHRpb24iID4mMg0KKyAgICA6ICR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFz PSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259DQorICAgIDs7DQorDQorICBl c2FjDQorZG9uZQ0KKw0KK2lmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbg0KKyAgYWNfb3B0aW9u PS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYA0KKyAgYXNfZm5fZXJyb3IgIm1pc3Np bmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY191bnJl Y29nbml6ZWRfb3B0cyI7IHRoZW4NCisgIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4N CisgICAgbm8pIDs7DQorICAgIGZhdGFsKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlv bnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsNCisgICAgKikgICAgICRhc19lY2hvICIkYXNf bWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMi ID4mMiA7Ow0KKyAgZXNhYw0KK2ZpDQorDQorIyBDaGVjayBhbGwgZGlyZWN0b3J5IGFyZ3VtZW50 cyBmb3IgY29uc2lzdGVuY3kuDQorZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmlu ZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcDQorCQlkYXRhZGlyIHN5c2NvbmZk aXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwNCisJCW9sZGluY2x1 ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwNCisJCWxp YmRpciBsb2NhbGVkaXIgbWFuZGlyDQorZG8NCisgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAg IyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4NCisgIGNhc2UgJGFjX3ZhbCBpbg0KKyAgICAqLyAp DQorICAgICAgYWNfdmFsPWBleHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFj X3ZhbCIgOiAnWFwoLipcKSdgDQorICAgICAgZXZhbCAkYWNfdmFyPVwkYWNfdmFsOzsNCisgIGVz YWMNCisgICMgQmUgc3VyZSB0byBoYXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4NCisgIGNh c2UgJGFjX3ZhbCBpbg0KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7Ow0KKyAg ICBOT05FIHwgJycgKSBjYXNlICRhY192YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7 DQorICBlc2FjDQorICBhc19mbl9lcnJvciAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5 IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCINCitkb25lDQorDQorIyBUaGVyZSBtaWdodCBi ZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0Jw0K KyMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVudCBvZiAtLWhvc3QgZXRjLg0KKyMgRklYTUU6IFRv IHJlbW92ZSBzb21lIGRheS4NCitidWlsZD0kYnVpbGRfYWxpYXMNCitob3N0PSRob3N0X2FsaWFz DQordGFyZ2V0PSR0YXJnZXRfYWxpYXMNCisNCisjIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXku DQoraWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuDQorICBpZiB0ZXN0ICJ4JGJ1aWxk X2FsaWFzIiA9IHg7IHRoZW4NCisgICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlDQorICAgICRhc19l Y2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5 cGUsIGRvbid0IHVzZSAtLWhvc3QuDQorICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0 ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkLiIgPiYyDQorICBlbGlmIHRl c3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuDQorICAgIGNyb3NzX2Nv bXBpbGluZz15ZXMNCisgIGZpDQorZmkNCisNCithY190b29sX3ByZWZpeD0NCit0ZXN0IC1uICIk aG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9wcmVmaXg9JGhvc3RfYWxpYXMtDQorDQordGVzdCAiJHNp bGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbA0KKw0KKw0KK2FjX3B3ZD1gcHdkYCAmJiB0 ZXN0IC1uICIkYWNfcHdkIiAmJg0KK2FjX2xzX2RpPWBscyAtZGkgLmAgJiYNCithY19wd2RfbHNf ZGk9YGNkICIkYWNfcHdkIiAmJiBscyAtZGkgLmAgfHwNCisgIGFzX2ZuX2Vycm9yICJ3b3JraW5n IGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCINCit0ZXN0ICJYJGFjX2xzX2RpIiA9ICJY JGFjX3B3ZF9sc19kaSIgfHwNCisgIGFzX2ZuX2Vycm9yICJwd2QgZG9lcyBub3QgcmVwb3J0IG5h bWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiDQorDQorDQorIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMs IGlmIGxvY2F0aW9uIHdhcyBub3Qgc3BlY2lmaWVkLg0KK2lmIHRlc3QgLXogIiRzcmNkaXIiOyB0 aGVuDQorICBhY19zcmNkaXJfZGVmYXVsdGVkPXllcw0KKyAgIyBUcnkgdGhlIGRpcmVjdG9yeSBj b250YWluaW5nIHRoaXMgc2NyaXB0LCB0aGVuIHRoZSBwYXJlbnQgZGlyZWN0b3J5Lg0KKyAgYWNf Y29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYiIHx8DQorJGFzX2V4cHIgWCIkYXNf bXlzZWxmIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkYXNfbXlz ZWxmIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcg XHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCisk YXNfZWNobyBYIiRhc19teXNlbGYiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9d W14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9c KVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkk L3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICBzcmNkaXI9JGFj X2NvbmZkaXINCisgIGlmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVu DQorICAgIHNyY2Rpcj0uLg0KKyAgZmkNCitlbHNlDQorICBhY19zcmNkaXJfZGVmYXVsdGVkPW5v DQorZmkNCitpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbg0KKyAg dGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIg b3IgLi4iDQorICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9m aWxlKSBpbiAkc3JjZGlyIg0KK2ZpDQorYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBi dXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIg0KK2FjX2Fic19jb25mZGlyPWAoDQorCWNk ICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3Ig IiRhY19tc2ciDQorCXB3ZClgDQorIyBXaGVuIGJ1aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGly PS4NCitpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIiID0gIiRhY19wd2QiOyB0aGVuDQorICBzcmNk aXI9Lg0KK2ZpDQorIyBSZW1vdmUgdW5uZWNlc3NhcnkgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIHNy Y2Rpci4NCisjIERvdWJsZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVi dWdnaW5nIGluZm8NCisjIG1lc3MgdXAgTS14IGdkYiBpbiBFbWFjcy4NCitjYXNlICRzcmNkaXIg aW4NCisqLykgc3JjZGlyPWBleHByICJYJHNyY2RpciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNy Y2RpciIgOiAnWFwoLipcKSdgOzsNCitlc2FjDQorZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNf dmFyczsgZG8NCisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0N CisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQ0KKyAgZXZhbCBhY19j dl9lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0fQ0KKyAgZXZhbCBhY19jdl9lbnZf JHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9DQorZG9uZQ0KKw0KKyMNCisjIFJlcG9ydCB0aGUg LS1oZWxwIG1lc3NhZ2UuDQorIw0KK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0 aGVuDQorICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2Ug dGhlIGxpc3QgbGVzcyBpbXBvc2luZy4NCisgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRv IGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4NCisgIGNhdCA8PF9BQ0VPRg0KK1xgY29u ZmlndXJlJyBjb25maWd1cmVzIG5ld2xpYiAxLjE5LjAgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBv ZiBzeXN0ZW1zLg0KKw0KK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLg0KKw0K K1RvIGFzc2lnbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGUuZy4sIENDLCBDRkxBR1MuLi4pLCBz cGVjaWZ5IHRoZW0gYXMNCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBv ZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLg0KKw0KK0RlZmF1bHRzIGZvciB0aGUgb3B0 aW9ucyBhcmUgc3BlY2lmaWVkIGluIGJyYWNrZXRzLg0KKw0KK0NvbmZpZ3VyYXRpb246DQorICAt aCwgLS1oZWxwICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdA0KKyAgICAg IC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFj a2FnZQ0KKyAgICAgIC0taGVscD1yZWN1cnNpdmUgICAgZGlzcGxheSB0aGUgc2hvcnQgaGVscCBv ZiBhbGwgdGhlIGluY2x1ZGVkIHBhY2thZ2VzDQorICAtViwgLS12ZXJzaW9uICAgICAgICAgICBk aXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQNCisgIC1xLCAtLXF1aWV0LCAtLXNp bGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcw0KKyAgICAgIC0tY2Fj aGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQ0KKyAg LUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5j YWNoZScNCisgIC1uLCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZp bGVzDQorICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBb Y29uZmlndXJlIGRpciBvciBcYC4uJ10NCisNCitJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6DQor ICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVu dCBmaWxlcyBpbiBQUkVGSVgNCisgICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVs dF9wcmVmaXhdDQorICAtLWV4ZWMtcHJlZml4PUVQUkVGSVggICBpbnN0YWxsIGFyY2hpdGVjdHVy ZS1kZXBlbmRlbnQgZmlsZXMgaW4gRVBSRUZJWA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg W1BSRUZJWF0NCisNCitCeSBkZWZhdWx0LCBcYG1ha2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIGFs bCB0aGUgZmlsZXMgaW4NCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0 X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQ0KK2FuIGluc3RhbGxhdGlvbiBwcmVm aXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsDQor Zm9yIGluc3RhbmNlIFxgLS1wcmVmaXg9XCRIT01FJy4NCisNCitGb3IgYmV0dGVyIGNvbnRyb2ws IHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4NCisNCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0 aW9uIGRpcmVjdG9yaWVzOg0KKyAgLS1iaW5kaXI9RElSICAgICAgICAgICAgdXNlciBleGVjdXRh YmxlcyBbRVBSRUZJWC9iaW5dDQorICAtLXNiaW5kaXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRt aW4gZXhlY3V0YWJsZXMgW0VQUkVGSVgvc2Jpbl0NCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAg IHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10NCisgIC0tc3lzY29uZmRpcj1E SVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQ0KKyAg LS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRl bnQgZGF0YSBbUFJFRklYL2NvbV0NCisgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFi bGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0NCisgIC0tbGliZGlyPURJUiAgICAg ICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdDQorICAtLWluY2x1ZGVk aXI9RElSICAgICAgICBDIGhlYWRlciBmaWxlcyBbUFJFRklYL2luY2x1ZGVdDQorICAtLW9sZGlu Y2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRl XQ0KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2guLWluZGVwZW5kZW50 IGRhdGEgcm9vdCBbUFJFRklYL3NoYXJlXQ0KKyAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVh ZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUl0NCisgIC0t aW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5m b10NCisgIC0tbG9jYWxlZGlyPURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFU QVJPT1RESVIvbG9jYWxlXQ0KKyAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50 YXRpb24gW0RBVEFST09URElSL21hbl0NCisgIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3Vt ZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL25ld2xpYl0NCisgIC0taHRtbGRpcj1ESVIg ICAgICAgICAgIGh0bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQ0KKyAgLS1kdmlkaXI9RElSICAg ICAgICAgICAgZHZpIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0NCisgIC0tcGRmZGlyPURJUiAgICAg ICAgICAgIHBkZiBkb2N1bWVudGF0aW9uIFtET0NESVJdDQorICAtLXBzZGlyPURJUiAgICAgICAg ICAgICBwcyBkb2N1bWVudGF0aW9uIFtET0NESVJdDQorX0FDRU9GDQorDQorICBjYXQgPDxcX0FD RU9GDQorDQorUHJvZ3JhbSBuYW1lczoNCisgIC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYICAgICAg ICAgICAgcHJlcGVuZCBQUkVGSVggdG8gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMNCisgIC0tcHJv Z3JhbS1zdWZmaXg9U1VGRklYICAgICAgICAgICAgYXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQg cHJvZ3JhbSBuYW1lcw0KKyAgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPVBST0dSQU0gICBydW4g c2VkIFBST0dSQU0gb24gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMNCisNCitTeXN0ZW0gdHlwZXM6 DQorICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtn dWVzc2VkXQ0KKyAgLS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9n cmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdDQorX0FDRU9GDQorZmkNCisNCitpZiB0ZXN0IC1u ICIkYWNfaW5pdF9oZWxwIjsgdGhlbg0KKyAgY2FzZSAkYWNfaW5pdF9oZWxwIGluDQorICAgICBz aG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbmV3bGliIDEuMTkuMDoi OzsNCisgICBlc2FjDQorICBjYXQgPDxcX0FDRU9GDQorDQorT3B0aW9uYWwgRmVhdHVyZXM6DQor ICAtLWRpc2FibGUtb3B0aW9uLWNoZWNraW5nICBpZ25vcmUgdW5yZWNvZ25pemVkIC0tZW5hYmxl Ly0td2l0aCBvcHRpb25zDQorICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVk ZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pDQorICAtLWVuYWJsZS1GRUFU VVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdDQorICAtLWVuYWJsZS1tdWx0aWxp YiAgICAgICAgIGJ1aWxkIG1hbnkgbGlicmFyeSB2ZXJzaW9ucyAoZGVmYXVsdCkNCisgIC0tZW5h YmxlLXRhcmdldC1vcHRzcGFjZSAgb3B0aW1pemUgZm9yIHNwYWNlDQorICAtLWVuYWJsZS1tYWxs b2MtZGVidWdnaW5nIGluZGljYXRlIG1hbGxvYyBkZWJ1Z2dpbmcgcmVxdWVzdGVkDQorICAtLWVu YWJsZS1uZXdsaWItbXVsdGl0aHJlYWQgICAgICAgIGVuYWJsZSBzdXBwb3J0IGZvciBtdWx0aXBs ZSB0aHJlYWRzDQorICAtLWVuYWJsZS1uZXdsaWItaWNvbnYgICAgIGVuYWJsZSBpY29udiBsaWJy YXJ5IHN1cHBvcnQNCisgIC0tZW5hYmxlLW5ld2xpYi1lbGl4LWxldmVsICAgICAgICAgc3VwcGx5 IGRlc2lyZWQgZWxpeCBsaWJyYXJ5IGxldmVsICgxLTQpDQorICAtLWRpc2FibGUtbmV3bGliLWlv LWZsb2F0IGRpc2FibGUgcHJpbnRmL3NjYW5mIGZhbWlseSBmbG9hdCBzdXBwb3J0DQorICAtLWRp c2FibGUtbmV3bGliLXN1cHBsaWVkLXN5c2NhbGxzIGRpc2FibGUgbmV3bGliIGZyb20gc3VwcGx5 aW5nIHN5c2NhbGxzDQorICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVw IG9uZS10aW1lIGJ1aWxkDQorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90 IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9ycw0KKyAgLS1lbmFibGUtbWFpbnRhaW5l ci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwNCisJ CQkgIChhbmQgc29tZXRpbWVzIGNvbmZ1c2luZykgdG8gdGhlIGNhc3VhbCBpbnN0YWxsZXINCisN CitTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoNCisgIENDQVMgICAgICAg IGFzc2VtYmxlciBjb21waWxlciBjb21tYW5kIChkZWZhdWx0cyB0byBDQykNCisgIENDQVNGTEFH UyAgIGFzc2VtYmxlciBjb21waWxlciBmbGFncyAoZGVmYXVsdHMgdG8gQ0ZMQUdTKQ0KKw0KK1Vz ZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmln dXJlJyBvciB0byBoZWxwDQoraXQgdG8gZmluZCBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGgg bm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLg0KKw0KK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNr YWdlIHByb3ZpZGVyLg0KK19BQ0VPRg0KK2FjX3N0YXR1cz0kPw0KK2ZpDQorDQoraWYgdGVzdCAi JGFjX2luaXRfaGVscCIgPSAicmVjdXJzaXZlIjsgdGhlbg0KKyAgIyBJZiB0aGVyZSBhcmUgc3Vi ZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4NCisgIGZvciBhY19kaXIgaW4gOiAk YWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNfZGlyIiA9IHg6ICYmIGNvbnRpbnVlDQorICAg IHRlc3QgLWQgIiRhY19kaXIiIHx8DQorICAgICAgeyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBw d2RgICYmIHNyY2Rpcj0uICYmIHRlc3QgLWQgIiRhY19kaXIiOyB9IHx8DQorICAgICAgY29udGlu dWUNCisgICAgYWNfYnVpbGRkaXI9Lg0KKw0KK2Nhc2UgIiRhY19kaXIiIGluDQorLikgYWNfZGly X3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQor KikNCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xc L118fCdgDQorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXgu DQorICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2Vk ICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2ANCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIg aW4NCisgICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsN CisgICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7Ow0KKyAg ZXNhYyA7Ow0KK2VzYWMNCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QNCithY19hYnNfYnVp bGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4DQorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0 eToNCithY190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgNCisNCitjYXNlICRzcmNk aXIgaW4NCisgIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4NCisgICAgYWNfc3JjZGly PS4NCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1Yg0KKyAgICBhY19hYnNf dG9wX3NyY2Rpcj0kYWNfcHdkIDs7DQorICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRl IG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7DQorICAgIGFjX3Rv cF9zcmNkaXI9JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7DQorICAq KSAjIFJlbGF0aXZlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRz cmNkaXIkYWNfZGlyX3N1ZmZpeA0KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJl Zml4JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsNCitl c2FjDQorYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKw0K KyAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0dXM9JD87IGNvbnRpbnVlOyB9DQorICAgICMg Q2hlY2sgZm9yIGd1ZXN0ZWQgY29uZmlndXJlLg0KKyAgICBpZiB0ZXN0IC1mICIkYWNfc3JjZGly L2NvbmZpZ3VyZS5nbnUiOyB0aGVuDQorICAgICAgZWNobyAmJg0KKyAgICAgICRTSEVMTCAiJGFj X3NyY2Rpci9jb25maWd1cmUuZ251IiAtLWhlbHA9cmVjdXJzaXZlDQorICAgIGVsaWYgdGVzdCAt ZiAiJGFjX3NyY2Rpci9jb25maWd1cmUiOyB0aGVuDQorICAgICAgZWNobyAmJg0KKyAgICAgICRT SEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0taGVscD1yZWN1cnNpdmUNCisgICAgZWxzZQ0K KyAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3Jt YXRpb24gaXMgaW4gJGFjX2RpciIgPiYyDQorICAgIGZpIHx8IGFjX3N0YXR1cz0kPw0KKyAgICBj ZCAiJGFjX3B3ZCIgfHwgeyBhY19zdGF0dXM9JD87IGJyZWFrOyB9DQorICBkb25lDQorZmkNCisN Cit0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMNCitpZiAkYWNfaW5p dF92ZXJzaW9uOyB0aGVuDQorICBjYXQgPDxcX0FDRU9GDQorbmV3bGliIGNvbmZpZ3VyZSAxLjE5 LjANCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQNCisNCitDb3B5cmlnaHQgKEMpIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorVGhpcyBjb25maWd1cmUgc2NyaXB0 IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCitnaXZlcyB1 bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuDQor X0FDRU9GDQorICBleGl0DQorZmkNCisNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMN CisjIyBBdXRvY29uZiBpbml0aWFsaXphdGlvbi4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gIyMNCisNCisjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgTElORU5PDQorIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgVHJ5IHRvIGNvbXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5k IHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLg0KK2FjX2ZuX2NfdHJ5X2NvbXBpbGUgKCkN Cit7DQorICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xp bmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrDQorICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0 DQorICBpZiB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZSINCitjYXNlICIoKCRhY190cnkiIGluDQor ICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsNCisgICopIGFjX3Ry eV9lY2hvPSRhY190cnk7Ow0KK2VzYWMNCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIg0KKyRhc19lY2hvICIkYWNfdHJ5X2Vj aG8iOyB9ID4mNQ0KKyAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcnINCisgIGFj X3N0YXR1cz0kPw0KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4NCisgICAgZ3JlcCAt diAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjENCisgICAgY2F0IGNvbmZ0ZXN0LmVy MSA+JjUNCisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycg0KKyAgZmkNCisgICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4m NQ0KKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7DQorCSB0ZXN0IC16ICIkYWNfY193ZXJy b3JfZmxhZyIgfHwNCisJIHRlc3QgISAtcyBjb25mdGVzdC5lcnINCisgICAgICAgfSAmJiB0ZXN0 IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRoZW4gOg0KKyAgYWNfcmV0dmFsPTANCitlbHNlDQor ICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCitzZWQgJ3MvXi98 IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1DQorDQorCWFjX3JldHZhbD0xDQorZmkNCisgIGV2YWwg JGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp bmVubz07IHVuc2V0IGFzX2xpbmVubzt9DQorICByZXR1cm4gJGFjX3JldHZhbA0KKw0KK30gIyBh Y19mbl9jX3RyeV9jb21waWxlDQorY2F0ID5jb25maWcubG9nIDw8X0FDRU9GDQorVGhpcyBmaWxl IGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUNCitydW5u aW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0 YWtlLg0KKw0KK0l0IHdhcyBjcmVhdGVkIGJ5IG5ld2xpYiAkYXNfbWUgMS4xOS4wLCB3aGljaCB3 YXMNCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQuICBJbnZvY2F0aW9uIGNvbW1hbmQg bGluZSB3YXMNCisNCisgICQgJDAgJEANCisNCitfQUNFT0YNCitleGVjIDU+PmNvbmZpZy5sb2cN Cit7DQorY2F0IDw8X0FTVU5BTUUNCisjIyAtLS0tLS0tLS0gIyMNCisjIyBQbGF0Zm9ybS4gIyMN CisjIyAtLS0tLS0tLS0gIyMNCisNCitob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4p IDI+L2Rldi9udWxsIHwgc2VkIDFxYA0KK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251 bGwgfHwgZWNobyB1bmtub3duYA0KK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwg fHwgZWNobyB1bmtub3duYA0KK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwg ZWNobyB1bmtub3duYA0KK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNo byB1bmtub3duYA0KKw0KKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkg Mj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0KKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmlu L3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYA0KKw0KKy9iaW4vYXJj aCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8 IGVjaG8gdW5rbm93bmANCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNo IC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gDQorL3Vzci9jb252ZXgvZ2V0 c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1 bmtub3duYA0KKy91c3IvYmluL2hvc3RpbmZvICAgICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAy Pi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93bmANCisvYmluL21hY2hpbmUgICAgICAgICAg ID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25g DQorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251 bGwgICAgICAgfHwgZWNobyB1bmtub3duYA0KKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9i aW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmANCisNCitf QVNVTkFNRQ0KKw0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3Ig YXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRh c19kaXIiICYmIGFzX2Rpcj0uDQorICAgICRhc19lY2hvICJQQVRIOiAkYXNfZGlyIg0KKyAgZG9u ZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCit9ID4mNQ0KKw0KK2NhdCA+JjUgPDxfQUNFT0YNCisN CisNCisjIyAtLS0tLS0tLS0tLSAjIw0KKyMjIENvcmUgdGVzdHMuICMjDQorIyMgLS0tLS0tLS0t LS0gIyMNCisNCitfQUNFT0YNCisNCisNCisjIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBs aW5lLg0KKyMgU3RyaXAgb3V0IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJlY3Vyc2lvbiBzbyB0aGV5 IGRvIG5vdCBwaWxlIHVwLg0KKyMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qg d2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLg0KKyMgQWxzbyBxdW90ZSBhbnkgYXJn cyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4NCisjIE1ha2UgdHdvIHBhc3NlcyB0 byBhbGxvdyBmb3IgcHJvcGVyIGR1cGxpY2F0ZS1hcmd1bWVudCBzdXBwcmVzc2lvbi4NCithY19j b25maWd1cmVfYXJncz0NCithY19jb25maWd1cmVfYXJnczA9DQorYWNfY29uZmlndXJlX2FyZ3Mx PQ0KK2FjX211c3Rfa2VlcF9uZXh0PWZhbHNlDQorZm9yIGFjX3Bhc3MgaW4gMSAyDQorZG8NCisg IGZvciBhY19hcmcNCisgIGRvDQorICAgIGNhc2UgJGFjX2FyZyBpbg0KKyAgICAtbm8tY3JlYXRl IHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciopIGNvbnRpbnVlIDs7DQor ICAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBc DQorICAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQ0K KyAgICAgIGNvbnRpbnVlIDs7DQorICAgICpcJyopDQorICAgICAgYWNfYXJnPWAkYXNfZWNobyAi JGFjX2FyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsNCisgICAgZXNhYw0KKyAgICBj YXNlICRhY19wYXNzIGluDQorICAgIDEpIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJnczAg IiAnJGFjX2FyZyciIDs7DQorICAgIDIpDQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3Vy ZV9hcmdzMSAiICckYWNfYXJnJyINCisgICAgICBpZiB0ZXN0ICRhY19tdXN0X2tlZXBfbmV4dCA9 IHRydWU7IHRoZW4NCisJYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sg dG8gbm9ybWFsLg0KKyAgICAgIGVsc2UNCisJY2FzZSAkYWNfYXJnIGluDQorCSAgKj0qIHwgLS1j b25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcDQorCSAgfCAtZW5h YmxlLSogfCAtLWVuYWJsZS0qIHwgLWdhcyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXA0KKwkgIHwg LXEgfCAtcXVpZXQgfCAtLXEqIHwgLXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwNCisJ ICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkN CisJICAgIGNhc2UgIiRhY19jb25maWd1cmVfYXJnczAgIiBpbg0KKwkgICAgICAiJGFjX2NvbmZp Z3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBjb250aW51ZSA7Ow0KKwkgICAgZXNhYw0KKwkg ICAgOzsNCisJICAtKiApIGFjX211c3Rfa2VlcF9uZXh0PXRydWUgOzsNCisJZXNhYw0KKyAgICAg IGZpDQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIg0K KyAgICAgIDs7DQorICAgIGVzYWMNCisgIGRvbmUNCitkb25lDQoreyBhY19jb25maWd1cmVfYXJn czA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7fQ0KK3sgYWNfY29uZmlndXJlX2FyZ3MxPTsg dW5zZXQgYWNfY29uZmlndXJlX2FyZ3MxO30NCisNCisjIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhp dCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlDQorIyBjb25maWcubG9n LiAgV2UgcmVtb3ZlIGNvbW1lbnRzIGJlY2F1c2UgYW55d2F5IHRoZSBxdW90ZXMgaW4gdGhlcmUN CisjIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4NCisjIFdBUk5JTkc6IFVzZSAn XCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhlIHdpdGhpbiB0aGUgdHJhcC4NCisjIFdBUk5J Tkc6IERvIG5vdCBzdGFydCB0aGUgdHJhcCBjb2RlIHdpdGggYSBuZXdsaW5lLCBkdWUgdG8gYSBG cmVlQlNEIDQuMCBidWcuDQordHJhcCAnZXhpdF9zdGF0dXM9JD8NCisgICMgU2F2ZSBpbnRvIGNv bmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLg0K KyAgew0KKyAgICBlY2hvDQorDQorICAgIGNhdCA8PFxfQVNCT1gNCisjIyAtLS0tLS0tLS0tLS0t LS0tICMjDQorIyMgQ2FjaGUgdmFyaWFibGVzLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMN CitfQVNCT1gNCisgICAgZWNobw0KKyAgICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcg dGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLA0KKygNCisgIGZvciBhY192 YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9d KlwpPS4qL1wxL3AnXCcnYDsgZG8NCisgICAgZXZhbCBhY192YWw9XCQkYWNfdmFyDQorICAgIGNh c2UgJGFjX3ZhbCBpbiAjKA0KKyAgICAqJHthc19ubH0qKQ0KKyAgICAgIGNhc2UgJGFjX3ZhciBp biAjKA0KKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIg PiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBj b250YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7DQorICAgICAgZXNhYw0KKyAgICAgIGNhc2UgJGFj X3ZhciBpbiAjKA0KKyAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygNCisgICAgICBCQVNIX0FS R1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFyPSA7OyAjKA0KKyAgICAgICopIHsgZXZhbCAk YWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7DQorICAgICAgZXNhYyA7Ow0KKyAgICBlc2FjDQor ICBkb25lDQorICAoc2V0KSAyPiYxIHwNCisgICAgY2FzZSAkYXNfbmxgKGFjX3NwYWNlPSdcJycg J1wnJzsgc2V0KSAyPiYxYCBpbiAjKA0KKyAgICAqJHthc19ubH1hY19zcGFjZT1cICopDQorICAg ICAgc2VkIC1uIFwNCisJInMvJ1wnJy8nXCcnXFxcXCdcJycnXCcnL2c7DQorCSAgcy9eXFwoW18k YXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXCcnXFwy J1wnJy9wIg0KKyAgICAgIDs7ICMoDQorICAgICopDQorICAgICAgc2VkIC1uICIvXltfJGFzX2Ny X2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCINCisgICAgICA7Ow0KKyAgICBlc2FjIHwN CisgICAgc29ydA0KKykNCisgICAgZWNobw0KKw0KKyAgICBjYXQgPDxcX0FTQk9YDQorIyMgLS0t LS0tLS0tLS0tLS0tLS0gIyMNCisjIyBPdXRwdXQgdmFyaWFibGVzLiAjIw0KKyMjIC0tLS0tLS0t LS0tLS0tLS0tICMjDQorX0FTQk9YDQorICAgIGVjaG8NCisgICAgZm9yIGFjX3ZhciBpbiAkYWNf c3Vic3RfdmFycw0KKyAgICBkbw0KKyAgICAgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAgICAg IGNhc2UgJGFjX3ZhbCBpbg0KKyAgICAgICpcJ1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192 YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsNCisgICAgICBlc2Fj DQorICAgICAgJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIg0KKyAgICBkb25lIHwg c29ydA0KKyAgICBlY2hvDQorDQorICAgIGlmIHRlc3QgLW4gIiRhY19zdWJzdF9maWxlcyI7IHRo ZW4NCisgICAgICBjYXQgPDxcX0FTQk9YDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMj IEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorX0FT Qk9YDQorICAgICAgZWNobw0KKyAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzDQor ICAgICAgZG8NCisJZXZhbCBhY192YWw9XCQkYWNfdmFyDQorCWNhc2UgJGFjX3ZhbCBpbg0KKwkq XCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxc XFxcXCdcJycnXCcnL2ciYDs7DQorCWVzYWMNCisJJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192 YWwnXCcnIg0KKyAgICAgIGRvbmUgfCBzb3J0DQorICAgICAgZWNobw0KKyAgICBmaQ0KKw0KKyAg ICBpZiB0ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4NCisgICAgICBjYXQgPDxcX0FTQk9YDQorIyMg LS0tLS0tLS0tLS0gIyMNCisjIyBjb25mZGVmcy5oLiAjIw0KKyMjIC0tLS0tLS0tLS0tICMjDQor X0FTQk9YDQorICAgICAgZWNobw0KKyAgICAgIGNhdCBjb25mZGVmcy5oDQorICAgICAgZWNobw0K KyAgICBmaQ0KKyAgICB0ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYmDQorICAgICAgJGFzX2VjaG8g IiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIg0KKyAgICAkYXNfZWNobyAiJGFzX21l OiBleGl0ICRleGl0X3N0YXR1cyINCisgIH0gPiY1DQorICBybSAtZiBjb3JlICouY29yZSBjb3Jl LmNvbmZ0ZXN0LiogJiYNCisgICAgcm0gLWYgLXIgY29uZnRlc3QqIGNvbmZkZWZzKiBjb25mJCQq ICRhY19jbGVhbl9maWxlcyAmJg0KKyAgICBleGl0ICRleGl0X3N0YXR1cw0KKycgMA0KK2ZvciBh Y19zaWduYWwgaW4gMSAyIDEzIDE1OyBkbw0KKyAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFs JzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFsDQorZG9uZQ0KK2FjX3NpZ25hbD0wDQorDQorIyBj b25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMg Y2FuIGV4Y2VlZC4NCitybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMuaA0KKw0KKyRhc19lY2hv ICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZzLmgNCisNCisjIFByZWRlZmluZWQgcHJlcHJv Y2Vzc29yIHZhcmlhYmxlcy4NCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmlu ZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiDQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRl ZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1F Ig0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tB R0VfVkVSU0lPTiAiJFBBQ0tBR0VfVkVSU0lPTiINCitfQUNFT0YNCisNCitjYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIg0K K19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0Vf QlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiDQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRl ZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9VUkwgIiRQQUNLQUdFX1VSTCINCitfQUNF T0YNCisNCisNCisjIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUg ZmlsZSBpZiBpdCB3YW50cyB0by4NCisjIFByZWZlciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZp bGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLg0KK2FjX3NpdGVfZmlsZTE9Tk9ORQ0K K2FjX3NpdGVfZmlsZTI9Tk9ORQ0KK2lmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4NCisg IGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFDQorZWxpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5P TkU7IHRoZW4NCisgIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQ0KKyAg YWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQ0KK2Vsc2UNCisgIGFjX3NpdGVf ZmlsZTE9JGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlDQorICBhY19zaXRlX2Zp bGUyPSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUNCitmaQ0KK2ZvciBhY19zaXRl X2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiDQorZG8NCisgIHRlc3Qg IngkYWNfc2l0ZV9maWxlIiA9IHhOT05FICYmIGNvbnRpbnVlDQorICBpZiB0ZXN0IC1yICIkYWNf c2l0ZV9maWxlIjsgdGhlbg0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1DQorJGFzX2VjaG8g IiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQ0KKyAgICBz ZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+JjUNCisgICAgLiAiJGFjX3NpdGVfZmlsZSIN CisgIGZpDQorZG9uZQ0KKw0KK2lmIHRlc3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbg0KKyAgIyBT b21lIHZlcnNpb25zIG9mIGJhc2ggd2lsbCBmYWlsIHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNp YWwNCisgICMgZmlsZXMgYWN0dWFsbHkpLCBzbyB3ZSBhdm9pZCBkb2luZyB0aGF0Lg0KKyAgaWYg dGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuDQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1DQorJGFzX2Vj aG8gIiRhc19tZTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30NCisgICAgY2FzZSAk Y2FjaGVfZmlsZSBpbg0KKyAgICAgIFtcXC9dKiB8ID86W1xcL10qICkgLiAiJGNhY2hlX2ZpbGUi OzsNCisgICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAuICIuLyRjYWNoZV9maWxlIjs7DQor ICAgIGVzYWMNCisgIGZpDQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRh c19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9DQorICA+JGNhY2hlX2ZpbGUN CitmaQ0KKw0KKyMgQ2hlY2sgdGhhdCB0aGUgcHJlY2lvdXMgdmFyaWFibGVzIHNhdmVkIGluIHRo ZSBjYWNoZSBoYXZlIGtlcHQgdGhlIHNhbWUNCisjIHZhbHVlLg0KK2FjX2NhY2hlX2NvcnJ1cHRl ZD1mYWxzZQ0KK2ZvciBhY192YXIgaW4gJGFjX3ByZWNpb3VzX3ZhcnM7IGRvDQorICBldmFsIGFj X29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldA0KKyAgZXZhbCBhY19uZXdfc2V0PVwk YWNfZW52XyR7YWNfdmFyfV9zZXQNCisgIGV2YWwgYWNfb2xkX3ZhbD1cJGFjX2N2X2Vudl8ke2Fj X3Zhcn1fdmFsdWUNCisgIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWUN CisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQgaW4NCisgICAgc2V0LCkNCisgICAgICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXIn IHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1DQorJGFz X2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFs JyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06 IDs7DQorICAgICxzZXQpDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVu IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBp biB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7 DQorICAgICwpOzsNCisgICAgKikNCisgICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4 JGFjX25ld192YWwiOyB0aGVuDQorCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3Qg bGVhZCB0byBmYWlsdXJlLg0KKwlhY19vbGRfdmFsX3c9YGVjaG8geCAkYWNfb2xkX3ZhbGANCisJ YWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192YWxgDQorCWlmIHRlc3QgIiRhY19vbGRfdmFs X3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbg0KKwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhl IHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXIn IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQ0KKwkgIGFjX2NhY2hl X2NvcnJ1cHRlZD06DQorCWVsc2UNCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192 YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiB3YXJu aW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUg cHJldmlvdXMgcnVuOiIgPiYyO30NCisJICBldmFsICRhY192YXI9XCRhY19vbGRfdmFsDQorCWZp DQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIgdmFs dWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogICBmb3JtZXIgdmFs dWU6ICBcYCRhY19vbGRfdmFsJyIgPiYyO30NCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUNCiskYXNf ZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQ0KKyAg ICAgIGZpOzsNCisgIGVzYWMNCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmln LnN0YXR1cy4NCisgIGlmIHRlc3QgIiRhY19uZXdfc2V0IiA9IHNldDsgdGhlbg0KKyAgICBjYXNl ICRhY19uZXdfdmFsIGluDQorICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFj X25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7DQorICAgICopIGFjX2FyZz0k YWNfdmFyPSRhY19uZXdfdmFsIDs7DQorICAgIGVzYWMNCisgICAgY2FzZSAiICRhY19jb25maWd1 cmVfYXJncyAiIGluDQorICAgICAgKiIgJyRhY19hcmcnICIqKSA7OyAjIEF2b2lkIGR1cHMuICBV c2Ugb2YgcXVvdGVzIGVuc3VyZXMgYWNjdXJhY3kuDQorICAgICAgKikgYXNfZm5fYXBwZW5kIGFj X2NvbmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIiA7Ow0KKyAgICBlc2FjDQorICBmaQ0KK2RvbmUN CitpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1DQorJGFzX2VjaG8g IiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQ0KKyAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1l bnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJv cjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+ JjI7fQ0KKyAgYXNfZm5fZXJyb3IgInJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAk Y2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1DQorZmkNCisjIyAtLS0tLS0t LS0tLS0tLS0tLS0tLSAjIw0KKyMjIE1haW4gYm9keSBvZiBzY3JpcHQuICMjDQorIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0gIyMNCisNCithY19leHQ9Yw0KK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1Mn DQorYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQg PiY1Jw0KK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxB R1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnDQorYWNfY29tcGlsZXJfZ251 PSRhY19jdl9jX2NvbXBpbGVyX2dudQ0KKw0KKw0KKw0KKw0KK2FjX2F1eF9kaXI9DQorZm9yIGFj X2RpciBpbiAuLi8uLi8uLi8uLiAiJHNyY2RpciIvLi4vLi4vLi4vLi47IGRvDQorICBmb3IgYWNf dCBpbiBpbnN0YWxsLXNoIGluc3RhbGwuc2ggc2h0b29sOyBkbw0KKyAgICBpZiB0ZXN0IC1mICIk YWNfZGlyLyRhY190IjsgdGhlbg0KKyAgICAgIGFjX2F1eF9kaXI9JGFjX2Rpcg0KKyAgICAgIGFj X2luc3RhbGxfc2g9IiRhY19hdXhfZGlyLyRhY190IC1jIg0KKyAgICAgIGJyZWFrIDINCisgICAg ZmkNCisgIGRvbmUNCitkb25lDQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuDQorICBh c19mbl9lcnJvciAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29s IGluIC4uLy4uLy4uLy4uIFwiJHNyY2RpclwiLy4uLy4uLy4uLy4uIiAiJExJTkVOTyIgNQ0KK2Zp DQorDQorIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBw b3J0ZWQsDQorIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBB dXRvY29uZiByZWxlYXNlLg0KKyMgVGhleSBjYW4gY2F1c2Ugc2VyaW91cyBwcm9ibGVtcyBpZiBh IGJ1aWxkZXIncyBzb3VyY2UgdHJlZSBpcyBpbiBhIGRpcmVjdG9yeQ0KKyMgd2hvc2UgZnVsbCBu YW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4NCithY19jb25maWdfZ3Vlc3M9IiRTSEVM TCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIu DQorYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICAjIFBsZWFz ZSBkb24ndCB1c2UgdGhpcyB2YXIuDQorYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIv Y29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLg0KKw0KKw0KKw0KKw0KKyMg TWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4NCiskU0hFTEwgIiRhY19hdXhfZGlyL2Nv bmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8DQorICBhc19mbl9lcnJvciAiY2Fubm90 IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUNCisNCit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3Rl bSB0eXBlIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAi ID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAg JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBhY19idWlsZF9hbGlhcz0kYnVp bGRfYWxpYXMNCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYNCisgIGFjX2J1aWxkX2Fs aWFzPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgDQordGVzdCAieCRhY19idWls ZF9hbGlhcyIgPSB4ICYmDQorICBhc19mbl9lcnJvciAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7 IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIgNQ0KK2FjX2N2X2J1aWxkPWAkU0hFTEwg IiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwNCisgIGFzX2ZuX2Vy cm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVk IiAiJExJTkVOTyIgNQ0KKw0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1DQorJGFzX2VjaG8gIiRhY19jdl9idWls ZCIgPiY2OyB9DQorY2FzZSAkYWNfY3ZfYnVpbGQgaW4NCisqLSotKikgOzsNCisqKSBhc19mbl9l cnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsNCitl c2FjDQorYnVpbGQ9JGFjX2N2X2J1aWxkDQorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJw0KK3Nl dCB4ICRhY19jdl9idWlsZA0KK3NoaWZ0DQorYnVpbGRfY3B1PSQxDQorYnVpbGRfdmVuZG9yPSQy DQorc2hpZnQ7IHNoaWZ0DQorIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMg aXMgdXNlZCB0byBjcmVhdGUgJCosDQorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOg0KK2J1aWxk X29zPSQqDQorSUZTPSRhY19zYXZlX0lGUw0KK2Nhc2UgJGJ1aWxkX29zIGluICpcICopIGJ1aWxk X29zPWBlY2hvICIkYnVpbGRfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjDQorDQorDQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3N0IHN5c3Rl bSB0eXBlIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIg PiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRh c19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAieCRob3N0X2FsaWFz IiA9IHg7IHRoZW4NCisgIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkDQorZWxzZQ0KKyAgYWNfY3Zf aG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwNCisg ICAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFz IGZhaWxlZCIgIiRMSU5FTk8iIDUNCitmaQ0KKw0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUNCiskYXNfZWNobyAi JGFjX2N2X2hvc3QiID4mNjsgfQ0KK2Nhc2UgJGFjX2N2X2hvc3QgaW4NCisqLSotKikgOzsNCisq KSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8i IDU7Ow0KK2VzYWMNCitob3N0PSRhY19jdl9ob3N0DQorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSct Jw0KK3NldCB4ICRhY19jdl9ob3N0DQorc2hpZnQNCitob3N0X2NwdT0kMQ0KK2hvc3RfdmVuZG9y PSQyDQorc2hpZnQ7IHNoaWZ0DQorIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJ RlMgaXMgdXNlZCB0byBjcmVhdGUgJCosDQorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOg0KK2hv c3Rfb3M9JCoNCitJRlM9JGFjX3NhdmVfSUZTDQorY2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0 X29zPWBlY2hvICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMNCisNCisNCithbV9f YXBpX3ZlcnNpb249IjEuOSINCisjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHBy ZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwNCisjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBh cyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3INCisjIGluY29tcGF0aWJsZSB2ZXJz aW9uczoNCisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAvdXNyL3NiaW4vaW5zdGFsbA0KKyMgU3VuT1Mg L3Vzci9ldGMvaW5zdGFsbA0KKyMgSVJJWCAvc2Jpbi9pbnN0YWxsDQorIyBBSVggL2Jpbi9pbnN0 YWxsDQorIyBBbWlnYU9TIC9DL2luc3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24g ZmxvcHB5IGRpc2NzDQorIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0 IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcNCisjIEFGUyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3 aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFyZ3MNCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFs bCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRoZSBub25leGlzdGVudCBncm91cCAic3RhZmYiDQorIyBP Uy8yJ3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNl bWFudGljDQorIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5 IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guDQorIyBSZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0 IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxlIGZpbGVzLg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIg PiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4u LiAiID4mNjsgfQ0KK2lmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbg0KK2lmIHRlc3QgIiR7YWNf Y3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2DQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP Ug0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hv IHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuDQorY2FzZSAkYXNfZGlyLyBp biAjKCgNCisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8IFwNCisgIC9ldGMvKiB8IC91c3Ivc2Jpbi8q IHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXA0KKyAgPzpbXFwv XW9zMltcXC9daW5zdGFsbFtcXC9dKiB8ID86W1xcL11PUzJbXFwvXUlOU1RBTExbXFwvXSogfCBc DQorICAvdXNyL3VjYi8qICkgOzsNCisgICopDQorICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAg aGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuDQorICAgICMgRG9uJ3QgdXNlIGluc3Rh bGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdA0KKyAgICAjIGJ5 IGRlZmF1bHQuDQorICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsg ZG8NCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u czsgZG8NCisJaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAmJiAk YXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKwkgIGlm IHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmDQorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8k YWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorCSAgICAjIEFJWCBp bnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uDQorCSAg ICA6DQorCSAgZWxpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJg0KKwkgICAgZ3JlcCBwd3Bs dXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbg0K KwkgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVz LS1kb24ndCB1c2UuDQorCSAgICA6DQorCSAgZWxzZQ0KKwkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9u ZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGlyDQorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9u ZQ0KKwkgICAgZWNobyB0d28gPiBjb25mdGVzdC50d28NCisJICAgIG1rZGlyIGNvbmZ0ZXN0LmRp cg0KKwkgICAgaWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9u ZSBjb25mdGVzdC50d28gImBwd2RgL2NvbmZ0ZXN0LmRpciIgJiYNCisJICAgICAgdGVzdCAtcyBj b25mdGVzdC5vbmUgJiYgdGVzdCAtcyBjb25mdGVzdC50d28gJiYNCisJICAgICAgdGVzdCAtcyBj b25mdGVzdC5kaXIvY29uZnRlc3Qub25lICYmDQorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGly L2NvbmZ0ZXN0LnR3bw0KKwkgICAgdGhlbg0KKwkgICAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRh c19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMiDQorCSAgICAgIGJyZWFrIDMNCisJICAgIGZp DQorCSAgZmkNCisJZmkNCisgICAgICBkb25lDQorICAgIGRvbmUNCisgICAgOzsNCitlc2FjDQor DQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK3JtIC1yZiBjb25mdGVzdC5vbmUgY29u ZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcg0KKw0KK2ZpDQorICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhf aW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbg0KKyAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3Rh bGwNCisgIGVsc2UNCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwg c2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQ0KKyAgICAjIHZhbHVlIGZvciBJTlNUQUxMIHdpdGhpbiBh IHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsDQorICAgICMgYnJlYWsgb3RoZXIg cGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzDQorICAgICMgcmVt b3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4NCisgICAgSU5TVEFMTD0k YWNfaW5zdGFsbF9zaA0KKyAgZmkNCitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1DQorJGFzX2VjaG8gIiRJTlNUQUxMIiA+ JjY7IH0NCisNCisjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJh Y2VzIGluICR7dmFyLXZhbH0uDQorIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVu ZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4NCit0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFN IiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nDQorDQordGVzdCAteiAiJElOU1RBTExf U0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScNCisNCit0ZXN0IC16ICIkSU5T VEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0Jw0KKw0KK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBidWls ZCBlbnZpcm9ubWVudCBpcyBzYW5lIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy IGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuLi4gIiA+JjY7IH0NCisjIEp1c3QgaW4gY2FzZQ0K K3NsZWVwIDENCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUNCisjIERvIGBzZXQnIGlu IGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzDQorIyBh cmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1YWxs eSBhDQorIyBzeW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRoZSBt b2QgdGltZSBvZiBzeW1saW5rcw0KKyMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRpbWUg b2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nDQorIyBkaXJlY3RvcnkpLg0KK2lmICgNCisgICBz ZXQgWCBgbHMgLUx0ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUgMj4gL2Rldi9udWxs YA0KKyAgIGlmIHRlc3QgIiQqIiA9ICJYIjsgdGhlbg0KKyAgICAgICMgLUwgZGlkbid0IHdvcmsu DQorICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGVgDQor ICAgZmkNCisgICBybSAtZiBjb25mdGVzdC5maWxlDQorICAgaWYgdGVzdCAiJCoiICE9ICJYICRz cmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUiIFwNCisgICAgICAmJiB0ZXN0ICIkKiIgIT0g IlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4NCisNCisgICAgICAjIElm IG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFw cGVuDQorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQg aXQgaW5oZXJpdHMgYQ0KKyAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhlIGVudmlyb25t ZW50LiAgVGhpcyBoYXMgYWN0dWFsbHkNCisgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3Rl bSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuDQorICAgICAgYXNfZm5fZXJyb3IgImxz IC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4NCith bGlhcyBpbiB5b3VyIGVudmlyb25tZW50IiAiJExJTkVOTyIgNQ0KKyAgIGZpDQorDQorICAgdGVz dCAiJDIiID0gY29uZnRlc3QuZmlsZQ0KKyAgICkNCit0aGVuDQorICAgIyBPay4NCisgICA6DQor ZWxzZQ0KKyAgIGFzX2ZuX2Vycm9yICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBk aXN0cmlidXRlZCBmaWxlcyENCitDaGVjayB5b3VyIHN5c3RlbSBjbG9jayIgIiRMSU5FTk8iIDUN CitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5 ZXMiID4mNQ0KKyRhc19lY2hvICJ5ZXMiID4mNjsgfQ0KK3Rlc3QgIiRwcm9ncmFtX3ByZWZpeCIg IT0gTk9ORSAmJg0KKyAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyZeJiRwcm9ncmFtX3ByZWZp eCY7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiDQorIyBVc2UgYSBkb3VibGUgJCBzbyBtYWtlIGln bm9yZXMgaXQuDQordGVzdCAiJHByb2dyYW1fc3VmZml4IiAhPSBOT05FICYmDQorICBwcm9ncmFt X3RyYW5zZm9ybV9uYW1lPSJzJlwkJiRwcm9ncmFtX3N1ZmZpeCY7JHByb2dyYW1fdHJhbnNmb3Jt X25hbWUiDQorIyBEb3VibGUgYW55IFwgb3IgJC4NCisjIEJ5IGRlZmF1bHQgd2FzIGBzLHgseCcs IHJlbW92ZSBpdCBpZiB1c2VsZXNzLg0KK2FjX3NjcmlwdD0ncy9bXFwkXS8mJi9nO3MvO3MseCx4 LCQvLycNCitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPWAkYXNfZWNobyAiJHByb2dyYW1fdHJhbnNm b3JtX25hbWUiIHwgc2VkICIkYWNfc2NyaXB0ImANCisNCisjIGV4cGFuZCAkYWNfYXV4X2RpciB0 byBhbiBhYnNvbHV0ZSBwYXRoDQorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYA0K Kw0KK3Rlc3QgeCIke01JU1NJTkcrc2V0fSIgPSB4c2V0IHx8IE1JU1NJTkc9Ilwke1NIRUxMfSAk YW1fYXV4X2Rpci9taXNzaW5nIg0KKyMgVXNlIGV2YWwgdG8gZXhwYW5kICRTSEVMTA0KK2lmIGV2 YWwgIiRNSVNTSU5HIC0tcnVuIHRydWUiOyB0aGVuDQorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJ TkcgLS1ydW4gIg0KK2Vsc2UNCisgIGFtX21pc3NpbmdfcnVuPQ0KKyAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBcYG1pc3NpbmcnIHNjcmlwdCBpcyB0 b28gb2xkIG9yIG1pc3NpbmciID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFxgbWlz c2luZycgc2NyaXB0IGlzIHRvbyBvbGQgb3IgbWlzc2luZyIgPiYyO30NCitmaQ0KKw0KK2lmIG1r ZGlyIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICEgLWQgLi8tLXZlcnNp b247IHRoZW4NCisgICMgV2UgdXNlZCB0byBrZWVwaW5nIHRoZSBgLicgYXMgZmlyc3QgYXJndW1l bnQsIGluIG9yZGVyIHRvDQorICAjIGFsbG93ICQobWtkaXJfcCkgdG8gYmUgdXNlZCB3aXRob3V0 IGFyZ3VtZW50LiAgQXMgaW4NCisgICMgICAkKG1rZGlyX3ApICQoc29tZWRpcikNCisgICMgd2hl cmUgJChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5IGRlZmluZWQuICBIb3dldmVyIHRoaXMgaXMg d3JvbmcNCisgICMgZm9yIHR3byByZWFzb25zOg0KKyAgIyAgMS4gaWYgdGhlIHBhY2thZ2UgaXMg aW5zdGFsbGVkIGJ5IGEgdXNlciB3aG8gY2Fubm90IHdyaXRlIGAuJw0KKyAgIyAgICAgbWFrZSBp bnN0YWxsIHdpbGwgZmFpbCwNCisgICMgIDIuIHRoZSBhYm92ZSBjb21tZW50IHNob3VsZCBtb3N0 IGNlcnRhaW5seSByZWFkDQorICAjICAgICAkKG1rZGlyX3ApICQoREVTVERJUikkKHNvbWVkaXIp DQorICAjICAgICBzbyBpdCBkb2VzIG5vdCB3b3JrIHdoZW4gJChzb21lZGlyKSBpcyB1bmRlZmlu ZWQgYW5kDQorICAjICAgICAkKERFU1RESVIpIGlzIG5vdC4NCisgICMgIFRvIHN1cHBvcnQgdGhl IGxhdHRlciBjYXNlLCB3ZSBoYXZlIHRvIHdyaXRlDQorICAjICAgICB0ZXN0IC16ICIkKHNvbWVk aXIpIiB8fCAkKG1rZGlyX3ApICQoREVTVERJUikkKHNvbWVkaXIpLA0KKyAgIyAgc28gdGhlIGAu JyB0cmljayBpcyBwb2ludGxlc3MuDQorICBta2Rpcl9wPSdta2RpciAtcCAtLScNCitlbHNlDQor ICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwgdGhlIGBta2RpcicgY29tbWFuZCBkb2VzIG5v dA0KKyAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4gIEl0IHdpbGwgaW50ZXJwcmV0IGFsbCBvcHRp b25zIGFzDQorICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJvcnQgYmVjYXVz ZSBgLicgYWxyZWFkeQ0KKyAgIyBleGlzdHMuDQorICBmb3IgZCBpbiAuLy1wIC4vLS12ZXJzaW9u Ow0KKyAgZG8NCisgICAgdGVzdCAtZCAkZCAmJiBybWRpciAkZA0KKyAgZG9uZQ0KKyAgIyAkKG1r aW5zdGFsbGRpcnMpIGlzIGRlZmluZWQgYnkgQXV0b21ha2UgaWYgbWtpbnN0YWxsZGlycyBleGlz dHMuDQorICBpZiB0ZXN0IC1mICIkYWNfYXV4X2Rpci9ta2luc3RhbGxkaXJzIjsgdGhlbg0KKyAg ICBta2Rpcl9wPSckKG1raW5zdGFsbGRpcnMpJw0KKyAgZWxzZQ0KKyAgICBta2Rpcl9wPSckKGlu c3RhbGxfc2gpIC1kJw0KKyAgZmkNCitmaQ0KKw0KK2ZvciBhY19wcm9nIGluIGdhd2sgbWF3ayBu YXdrIGF3aw0KK2RvDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwg c28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJGFjX3By b2c7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRh Y193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FXSytzZXR9IiA9IHNl dDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRl c3QgLW4gIiRBV0siOyB0aGVuDQorICBhY19jdl9wcm9nX0FXSz0iJEFXSyIgIyBMZXQgdGhlIHVz ZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFU SF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9J RlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4 dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX0FXSz0iJGFjX3Byb2ci DQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUN CisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK0FXSz0kYWNfY3ZfcHJv Z19BV0sNCitpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBV0siID4mNQ0KKyRhc19lY2hvICIkQVdLIiA+ JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCisgIHRl c3QgLW4gIiRBV0siICYmIGJyZWFrDQorZG9uZQ0KKw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChN QUtFKSIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0 cyBcJChNQUtFKS4uLiAiID4mNjsgfQ0KK3NldCB4ICR7TUFLRS1tYWtlfQ0KK2FjX21ha2U9YCRh c19lY2hvICIkMiIgfCBzZWQgJ3MvKy9wL2c7IHMvW15hLXpBLVowLTlfXS9fL2cnYA0KK2lmIHsg YXNfdmFyPWFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldDsgZXZhbCAidGVzdCBcIlwkeyRh c192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNg0KK2Vsc2UNCisgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNFT0YNCitTSEVMTCA9IC9i aW4vc2gNCithbGw6DQorCUBlY2hvICdAQEAlJSU9JChNQUtFKT1AQEAlJSUnDQorX0FDRU9GDQor IyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZy4uLiIsIHdoaWNo IHdvdWxkIGNvbmZ1c2UgdXMuDQorY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2Ug Mj4vZGV2L251bGxgIGluDQorICAqQEBAJSUlPT8qPUBAQCUlJSopDQorICAgIGV2YWwgYWNfY3Zf cHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllczs7DQorICAqKQ0KKyAgICBldmFsIGFjX2N2X3By b2dfbWFrZV8ke2FjX21ha2V9X3NldD1ubzs7DQorZXNhYw0KK3JtIC1mIGNvbmZ0ZXN0Lm1ha2UN CitmaQ0KK2lmIGV2YWwgdGVzdCBcJGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCA9IHll czsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IHllcyIgPiY1DQorJGFzX2VjaG8gInllcyIgPiY2OyB9DQorICBTRVRfTUFLRT0NCitlbHNl DQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFr ZX0iDQorZmkNCisNCitybSAtcmYgLnRzdCAyPi9kZXYvbnVsbA0KK21rZGlyIC50c3QgMj4vZGV2 L251bGwNCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4NCisgIGFtX19sZWFkaW5nX2RvdD0uDQorZWxz ZQ0KKyAgYW1fX2xlYWRpbmdfZG90PV8NCitmaQ0KK3JtZGlyIC50c3QgMj4vZGV2L251bGwNCisN CitERVBESVI9IiR7YW1fX2xlYWRpbmdfZG90fWRlcHMiDQorDQorYWNfY29uZmlnX2NvbW1hbmRz PSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlcGZpbGVzIg0KKw0KKw0KK2FtX21ha2U9JHtNQUtFLW1h a2V9DQorY2F0ID4gY29uZmluYyA8PCAnRU5EJw0KK2FtX19kb2l0Og0KKwlAZWNobyBkb25lDQor LlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMgSWYgd2UgZG9uJ3QgZmluZCBhbiBpbmNsdWRlIGRp cmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUgY29kZS4NCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQg YnkgJGFtX21ha2UiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNs dWRlIHVzZWQgYnkgJGFtX21ha2UuLi4gIiA+JjY7IH0NCithbV9faW5jbHVkZT0iIyINCithbV9f cXVvdGU9DQorX2FtX3Jlc3VsdD1ub25lDQorIyBGaXJzdCB0cnkgR05VIG1ha2Ugc3R5bGUgaW5j bHVkZS4NCitlY2hvICJpbmNsdWRlIGNvbmZpbmMiID4gY29uZm1mDQorIyBXZSBncmVwIG91dCBg RW50ZXJpbmcgZGlyZWN0b3J5JyBhbmQgYExlYXZpbmcgZGlyZWN0b3J5Jw0KKyMgbWVzc2FnZXMg d2hpY2ggY2FuIG9jY3VyIGlmIGB3JyBlbmRzIHVwIGluIE1BS0VGTEFHUy4NCisjIEluIHBhcnRp Y3VsYXIgd2UgZG9uJ3QgbG9vayBhdCBgXm1ha2U6JyBiZWNhdXNlIEdOVSBtYWtlIG1pZ2h0DQor IyBiZSBpbnZva2VkIHVuZGVyIHNvbWUgb3RoZXIgbmFtZSAodXN1YWxseSAiZ21ha2UiKSwgaW4g d2hpY2gNCisjIGNhc2UgaXQgcHJpbnRzIGl0cyBuZXcgbmFtZSBpbnN0ZWFkIG9mIGBtYWtlJy4N CitpZiB0ZXN0ICJgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbCB8IGdyZXAgLXYg J2luZyBkaXJlY3RvcnknYCIgPSAiZG9uZSI7IHRoZW4NCisgICBhbV9faW5jbHVkZT1pbmNsdWRl DQorICAgYW1fX3F1b3RlPQ0KKyAgIF9hbV9yZXN1bHQ9R05VDQorZmkNCisjIE5vdyB0cnkgQlNE IG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitpZiB0ZXN0ICIkYW1fX2luY2x1ZGUiID0gIiMiOyB0aGVu DQorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZtZg0KKyAgIGlmIHRlc3QgImAk YW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCIgPSAiZG9uZSI7IHRoZW4NCisgICAg ICBhbV9faW5jbHVkZT0uaW5jbHVkZQ0KKyAgICAgIGFtX19xdW90ZT0iXCIiDQorICAgICAgX2Ft X3Jlc3VsdD1CU0QNCisgICBmaQ0KK2ZpDQorDQorDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRfYW1fcmVzdWx0IiA+JjUNCiskYXNfZWNobyAiJF9h bV9yZXN1bHQiID4mNjsgfQ0KK3JtIC1mIGNvbmZpbmMgY29uZm1mDQorDQorIyBDaGVjayB3aGV0 aGVyIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7 ZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxl dmFsPSRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZzsNCitmaQ0KKw0KK2lmIHRlc3QgIngkZW5h YmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbg0KKyAgYW1fZGVwY29tcD0iJGFj X2F1eF9kaXIvZGVwY29tcCINCisgIEFNREVQQkFDS1NMQVNIPSdcJw0KK2ZpDQorDQorDQoraWYg dGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBBTURF UF9UUlVFPQ0KKyAgQU1ERVBfRkFMU0U9JyMnDQorZWxzZQ0KKyAgQU1ERVBfVFJVRT0nIycNCisg IEFNREVQX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl LW11bHRpbGliIHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9tdWx0aWxpYitzZXR9IiA9 IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9tdWx0aWxpYjsgY2FzZSAiJHtlbmFi bGV2YWx9IiBpbg0KKyAgeWVzKSBtdWx0aWxpYj15ZXMgOzsNCisgIG5vKSAgbXVsdGlsaWI9bm8g OzsNCisgICopICAgYXNfZm5fZXJyb3IgImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG11bHRp bGliIG9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIG11bHRpbGliPXll cw0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRhcmdldC1vcHRzcGFjZSB3YXMg Z2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfdGFyZ2V0X29wdHNwYWNlK3NldH0iID0gc2V0OyB0 aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX3RhcmdldF9vcHRzcGFjZTsgY2FzZSAiJHtlbmFi bGV2YWx9IiBpbg0KKyAgeWVzKSB0YXJnZXRfb3B0c3BhY2U9eWVzIDs7DQorICBubykgIHRhcmdl dF9vcHRzcGFjZT1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxl dmFsfSBmb3IgdGFyZ2V0LW9wdHNwYWNlIG9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0K K2Vsc2UNCisgIHRhcmdldF9vcHRzcGFjZT0NCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1tYWxsb2MtZGVidWdnaW5nIHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9tYWxs b2NfZGVidWdnaW5nK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX21h bGxvY19kZWJ1Z2dpbmc7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgIHllcykgbWFsbG9jX2Rl YnVnZ2luZz15ZXMgOzsNCisgIG5vKSAgbWFsbG9jX2RlYnVnZ2luZz1ubyA7Ow0KKyAgKikgICBh c19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgbWFsbG9jLWRlYnVnZ2luZyBv cHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBtYWxsb2NfZGVidWdnaW5n PQ0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1tdWx0aXRocmVhZCB3 YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX211bHRpdGhyZWFkK3NldH0iID0g c2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX25ld2xpYl9tdWx0aXRocmVhZDsgY2Fz ZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBuZXdsaWJfbXVsdGl0aHJlYWQ9eWVzIDs7DQor ICBubykgIG5ld2xpYl9tdWx0aXRocmVhZD1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFk IHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgbmV3bGliLW11bHRpdGhyZWFkIG9wdGlvbiIgIiRMSU5F Tk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIG5ld2xpYl9tdWx0aXRocmVhZD15ZXMNCitmaQ0K Kw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXdsaWItaWNvbnYgd2FzIGdpdmVuLg0KK2lm IHRlc3QgIiR7ZW5hYmxlX25ld2xpYl9pY29uditzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFi bGV2YWw9JGVuYWJsZV9uZXdsaWJfaWNvbnY7IGlmIHRlc3QgIiR7bmV3bGliX2ljb252K3NldH0i ICE9IHNldDsgdGhlbg0KKyAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgICAgIHllcykgbmV3 bGliX2ljb252PXllcyA7Ow0KKyAgICAgbm8pICBuZXdsaWJfaWNvbnY9bm8gOzsNCisgICAgICop ICAgYXNfZm5fZXJyb3IgImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG5ld2xpYi1pY29udiBv cHRpb24iICIkTElORU5PIiA1IDs7DQorICAgZXNhYw0KKyBmaQ0KK2Vsc2UNCisgIG5ld2xpYl9p Y29udj0ke25ld2xpYl9pY29udn0NCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1u ZXdsaWItZWxpeC1sZXZlbCB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX2Vs aXhfbGV2ZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGli X2VsaXhfbGV2ZWw7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgIDApICAgbmV3bGliX2VsaXhf bGV2ZWw9MCA7Ow0KKyAgMSkgICBuZXdsaWJfZWxpeF9sZXZlbD0xIDs7DQorICAyKSAgIG5ld2xp Yl9lbGl4X2xldmVsPTIgOzsNCisgIDMpICAgbmV3bGliX2VsaXhfbGV2ZWw9MyA7Ow0KKyAgNCkg ICBuZXdsaWJfZWxpeF9sZXZlbD00IDs7DQorICAqKSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUg JHtlbmFibGV2YWx9IGZvciBuZXdsaWItZWxpeC1sZXZlbCBvcHRpb24iICIkTElORU5PIiA1IDs7 DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfZWxpeF9sZXZlbD0wDQorZmkNCisNCisjIENoZWNr IHdoZXRoZXIgLS1lbmFibGUtbmV3bGliLWlvLWZsb2F0IHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIk e2VuYWJsZV9uZXdsaWJfaW9fZmxvYXQrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFs PSRlbmFibGVfbmV3bGliX2lvX2Zsb2F0OyBjYXNlICIke2VuYWJsZXZhbH0iIGluDQorICB5ZXMp IG5ld2xpYl9pb19mbG9hdD15ZXMgOzsNCisgIG5vKSAgbmV3bGliX2lvX2Zsb2F0PW5vIDs7DQor ICAqKSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBuZXdsaWItaW8t ZmxvYXQgb3B0aW9uIiAiJExJTkVOTyIgNSA7Ow0KKyBlc2FjDQorZWxzZQ0KKyAgbmV3bGliX2lv X2Zsb2F0PXllcw0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1zdXBw bGllZC1zeXNjYWxscyB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX3N1cHBs aWVkX3N5c2NhbGxzK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX25l d2xpYl9zdXBwbGllZF9zeXNjYWxsczsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBu ZXdsaWJfbWF5X3N1cHBseV9zeXNjYWxscz15ZXMgOzsNCisgIG5vKSAgbmV3bGliX21heV9zdXBw bHlfc3lzY2FsbHM9bm8gOzsNCisgICopICAgYXNfZm5fZXJyb3IgImJhZCB2YWx1ZSAke2VuYWJs ZXZhbH0gZm9yIG5ld2xpYi1zdXBwbGllZC1zeXNjYWxscyBvcHRpb24iICIkTElORU5PIiA1IDs7 DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfbWF5X3N1cHBseV9zeXNjYWxscz15ZXMNCitmaQ0K Kw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX21heV9zdXBwbHlfc3lzY2FsbHN9ID0geHllczsg dGhlbg0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFPQ0KKyAgTUFZX1NVUFBMWV9TWVNDQUxM U19GQUxTRT0nIycNCitlbHNlDQorICBNQVlfU1VQUExZX1NZU0NBTExTX1RSVUU9JyMnDQorICBN QVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQordGVzdCAteiAiJHt3aXRo X3RhcmdldF9zdWJkaXJ9IiAmJiB3aXRoX3RhcmdldF9zdWJkaXI9Lg0KKw0KK2lmIHRlc3QgIiR7 c3JjZGlyfSIgPSAiLiI7IHRoZW4NCisgIGlmIHRlc3QgIiR7d2l0aF90YXJnZXRfc3ViZGlyfSIg IT0gIi4iOyB0aGVuDQorICAgIG5ld2xpYl9iYXNlZGlyPSIke3NyY2Rpcn0vJHt3aXRoX211bHRp c3JjdG9wfS4uLy4uLy4uLy4uIg0KKyAgZWxzZQ0KKyAgICBuZXdsaWJfYmFzZWRpcj0iJHtzcmNk aXJ9LyR7d2l0aF9tdWx0aXNyY3RvcH0uLi8uLi8uLiINCisgIGZpDQorZWxzZQ0KKyAgbmV3bGli X2Jhc2VkaXI9IiR7c3JjZGlyfS8uLi8uLi8uLiINCitmaQ0KKw0KKw0KKw0KKw0KKyMgdGVzdCB0 byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZA0KK2lmIHRlc3QgImBjZCAkc3JjZGly ICYmIHB3ZGAiICE9ICJgcHdkYCIgJiYNCisgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1 czsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgInNvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1 cmVkOyBydW4gXCJtYWtlIGRpc3RjbGVhblwiIHRoZXJlIGZpcnN0IiAiJExJTkVOTyIgNQ0KK2Zp DQorDQorIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoDQoraWYgdGVzdCAteiAiJENZR1BB VEhfVyI7IHRoZW4NCisgIGlmIChjeWdwYXRoIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPi9kZXYv bnVsbDsgdGhlbg0KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnDQorICBlbHNlDQorICAgIENZ R1BBVEhfVz1lY2hvDQorICBmaQ0KK2ZpDQorDQorDQorIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9m IHRoZSBwYWNrYWdlLg0KKyBQQUNLQUdFPSduZXdsaWInDQorIFZFUlNJT049JzEuMTkuMCcNCisN CisNCisjIFNvbWUgdG9vbHMgQXV0b21ha2UgbmVlZHMuDQorDQorQUNMT0NBTD0ke0FDTE9DQUwt IiR7YW1fbWlzc2luZ19ydW59YWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0ifQ0KKw0KKw0KK0FV VE9DT05GPSR7QVVUT0NPTkYtIiR7YW1fbWlzc2luZ19ydW59YXV0b2NvbmYifQ0KKw0KKw0KK0FV VE9NQUtFPSR7QVVUT01BS0UtIiR7YW1fbWlzc2luZ19ydW59YXV0b21ha2UtJHthbV9fYXBpX3Zl cnNpb259In0NCisNCisNCitBVVRPSEVBREVSPSR7QVVUT0hFQURFUi0iJHthbV9taXNzaW5nX3J1 bn1hdXRvaGVhZGVyIn0NCisNCisNCitNQUtFSU5GTz0ke01BS0VJTkZPLSIke2FtX21pc3Npbmdf cnVufW1ha2VpbmZvIn0NCisNCitpbnN0YWxsX3NoPSR7aW5zdGFsbF9zaC0iJGFtX2F1eF9kaXIv aW5zdGFsbC1zaCJ9DQorDQorIyBJbnN0YWxsZWQgYmluYXJpZXMgYXJlIHVzdWFsbHkgc3RyaXBw ZWQgdXNpbmcgYHN0cmlwJyB3aGVuIHRoZSB1c2VyDQorIyBydW4gYG1ha2UgaW5zdGFsbC1zdHJp cCcuICBIb3dldmVyIGBzdHJpcCcgbWlnaHQgbm90IGJlIHRoZSByaWdodA0KKyMgdG9vbCB0byB1 c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UN CisjIHdpbGwgaG9ub3IgdGhlIGBTVFJJUCcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3ZlcnJ1 bGUgdGhpcyBwcm9ncmFtLg0KK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IG5vOyB0aGVu DQorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuDQorICAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBw cm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlw OyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNf d29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNl dDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRl c3QgLW4gIiRTVFJJUCI7IHRoZW4NCisgIGFjX2N2X3Byb2dfU1RSSVA9IiRTVFJJUCIgIyBMZXQg dGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNf c2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0 IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX1NUUklQPSIk e2FjX3Rvb2xfcHJlZml4fXN0cmlwIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAg YnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2Zp DQorZmkNCitTVFJJUD0kYWNfY3ZfcHJvZ19TVFJJUA0KK2lmIHRlc3QgLW4gIiRTVFJJUCI7IHRo ZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk U1RSSVAiID4mNQ0KKyRhc19lY2hvICIkU1RSSVAiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2Vj aG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KK2ZpDQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2df U1RSSVAiOyB0aGVuDQorICBhY19jdF9TVFJJUD0kU1RSSVANCisgICMgRXh0cmFjdCB0aGUgZmly c3Qgd29yZCBvZiAic3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz Lg0KK3NldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19u ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3By b2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuDQorICBh Y19jdl9wcm9nX2FjX2N0X1NUUklQPSIkYWNfY3RfU1RSSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0 ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0ic3RyaXAiDQor ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisg IGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK2FjX2N0X1NUUklQPSRhY19j dl9wcm9nX2FjX2N0X1NUUklQDQoraWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbg0KKyAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9T VFJJUCIgPiY1DQorJGFzX2VjaG8gIiRhY19jdF9TVFJJUCIgPiY2OyB9DQorZWxzZQ0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCisk YXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFjX2N0X1NUUklQIiA9 IHg7IHRoZW4NCisgICAgU1RSSVA9IjoiDQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBp bGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk IHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2lu ZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9DQorYWNf dG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBTVFJJUD0kYWNfY3RfU1RSSVANCisgIGZp DQorZWxzZQ0KKyAgU1RSSVA9IiRhY19jdl9wcm9nX1NUUklQIg0KK2ZpDQorDQorZmkNCitJTlNU QUxMX1NUUklQX1BST0dSQU09Ilwke1NIRUxMfSBcJChpbnN0YWxsX3NoKSAtYyAtcyINCisNCisj IFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlz IGJhZCBvbg0KKyMgc29tZSBwbGF0Zm9ybXMuDQorIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBi YWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KKw0KK0FNVEFSPSR7QU1UQVItIiR7YW1fbWlzc2luZ19y dW59dGFyIn0NCisNCithbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191 bnRhcj0nJHtBTVRBUn0geGYgLScNCisNCisNCisNCisNCisNCisNCisjIEZJWE1FOiBXZSB0ZW1w b3JhcmlseSBkZWZpbmUgb3VyIG93biB2ZXJzaW9uIG9mIEFDX1BST0dfQ0MuICBUaGlzIGlzDQor IyBjb3BpZWQgZnJvbSBhdXRvY29uZiAyLjEyLCBidXQgZG9lcyBub3QgY2FsbCBBQ19QUk9HX0ND X1dPUktTLiAgV2UNCisjIGFyZSBwcm9iYWJseSB1c2luZyBhIGNyb3NzIGNvbXBpbGVyLCB3aGlj aCB3aWxsIG5vdCBiZSBhYmxlIHRvIGZ1bGx5DQorIyBsaW5rIGFuIGV4ZWN1dGFibGUuICBUaGlz IHNob3VsZCByZWFsbHkgYmUgZml4ZWQgaW4gYXV0b2NvbmYNCisjIGl0c2VsZi4NCisNCisNCisN CisNCisNCisNCisNCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNh biBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0k Mg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAg JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0 aGVuDQorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0 ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9y IGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIk YXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1 dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7 IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19DQz0iZ2NjIg0KKyAgICAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZl X0lGUw0KKw0KK2ZpDQorZmkNCitDQz0kYWNfY3ZfcHJvZ19DQw0KK2lmIHRlc3QgLW4gIiRDQyI7 IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkQ0MiID4mNQ0KKyRhc19lY2hvICIkQ0MiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8g Im5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KKw0KK2RlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlz dD0NCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGRlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBk ZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YW1fY3Zf Q0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJV RSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuDQorICAjIFdlIG1ha2UgYSBzdWJkaXIg YW5kIGRvIHRoZSB0ZXN0cyB0aGVyZS4gIE90aGVyd2lzZSB3ZSBjYW4gZW5kIHVwDQorICAjIG1h a2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQgYW5kIG5ldmVyIHJlbW92 ZS4gIEZvcg0KKyAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUg Z2NjIHRlc3Qgd2lsbCBlbmQgdXANCisgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcg LS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQNCisgICMgaW4gRCcuDQorICBt a2RpciBjb25mdGVzdC5kaXINCisgICMgQ29weSBkZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90 aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlDQorICAjIHVzaW5nIGEgcmVsYXRpdmUg ZGlyZWN0b3J5Lg0KKyAgY3AgIiRhbV9kZXBjb21wIiBjb25mdGVzdC5kaXINCisgIGNkIGNvbmZ0 ZXN0LmRpcg0KKyAgIyBXZSB3aWxsIGJ1aWxkIG9iamVjdHMgYW5kIGRlcGVuZGVuY2llcyBpbiBh IHN1YmRpcmVjdG9yeSBiZWNhdXNlDQorICAjIGl0IGhlbHBzIHRvIGRldGVjdCBpbmFwcGxpY2Fi bGUgZGVwZW5kZW5jeSBtb2Rlcy4gIEZvciBpbnN0YW5jZQ0KKyAgIyBib3RoIFRydTY0J3MgY2Mg YW5kIElDQyBzdXBwb3J0IC1NRCB0byBvdXRwdXQgZGVwZW5kZW5jaWVzIGFzIGENCisgICMgc2lk ZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1dCBJQ0Mgd2lsbCBwdXQgdGhlIGRlcGVuZGVuY2ll cyBpbg0KKyAgIyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2hpbGUgVHJ1NjQgd2lsbCBwdXQgdGhl bSBpbiB0aGUgb2JqZWN0DQorICAjIGRpcmVjdG9yeS4NCisgIG1rZGlyIHN1Yg0KKw0KKyAgYW1f Y3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0KKyAgaWYgdGVzdCAiJGFtX2Nv bXBpbGVyX2xpc3QiID0gIiI7IHRoZW4NCisgICAgIGFtX2NvbXBpbGVyX2xpc3Q9YHNlZCAtbiAn cy9eIypcKFthLXpBLVowLTldKlwpKSQvXDEvcCcgPCAuL2RlcGNvbXBgDQorICBmaQ0KKyAgZm9y IGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7IGRvDQorICAgICMgU2V0dXAgYSBzb3VyY2Ug d2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVzZSBzb21lIGNvbXBpbGVycw0KKyAgICAjIGxp a2UgdG8gd3JhcCBsYXJnZSBkZXBlbmRlbmN5IGxpc3RzIG9uIGNvbHVtbiA4MCAod2l0aCBcKSwg YW5kDQorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMg Y29uZnVzZWQgYnkgdGhpcy4NCisgICAgIw0KKyAgICAjIFdlIG5lZWQgdG8gcmVjcmVhdGUgdGhl c2UgZmlsZXMgZm9yIGVhY2ggdGVzdCwgYXMgdGhlIGNvbXBpbGVyIG1heQ0KKyAgICAjIG92ZXJ3 cml0ZSBzb21lIG9mIHRoZW0gd2hlbiB0ZXN0aW5nIHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVz Lg0KKyAgICAjIFRoaXMgaGFwcGVucyBhdCBsZWFzdCB3aXRoIHRoZSBBSVggQyBjb21waWxlci4N CisgICAgOiA+IHN1Yi9jb25mdGVzdC5jDQorICAgIGZvciBpIGluIDEgMiAzIDQgNSA2OyBkbw0K KyAgICAgIGVjaG8gJyNpbmNsdWRlICJjb25mdHN0JyRpJy5oIicgPj4gc3ViL2NvbmZ0ZXN0LmMN CisgICAgICAjIFVzaW5nIGA6ID4gc3ViL2NvbmZ0c3QkaS5oJyBjcmVhdGVzIG9ubHkgc3ViL2Nv bmZ0c3QxLmggd2l0aA0KKyAgICAgICMgU29sYXJpcyA4J3Mgey91c3IsfS9iaW4vc2guDQorICAg ICAgdG91Y2ggc3ViL2NvbmZ0c3QkaS5oDQorICAgIGRvbmUNCisgICAgZWNobyAiJHthbV9faW5j bHVkZX0gJHthbV9fcXVvdGV9c3ViL2NvbmZ0ZXN0LlBvJHthbV9fcXVvdGV9IiA+IGNvbmZtZg0K Kw0KKyAgICBjYXNlICRkZXBtb2RlIGluDQorICAgIG5vc2lkZWVmZmVjdCkNCisgICAgICAjIGFm dGVyIHRoaXMgdGFnLCBtZWNoYW5pc21zIGFyZSBub3QgYnkgc2lkZS1lZmZlY3QsIHNvIHRoZXkn bGwNCisgICAgICAjIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkDQorICAg ICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgPSB4eWVzOyB0aGVuDQor CWNvbnRpbnVlDQorICAgICAgZWxzZQ0KKwlicmVhaw0KKyAgICAgIGZpDQorICAgICAgOzsNCisg ICAgbm9uZSkgYnJlYWsgOzsNCisgICAgZXNhYw0KKyAgICAjIFdlIGNoZWNrIHdpdGggYC1jJyBh bmQgYC1vJyBmb3IgdGhlIHNha2Ugb2YgdGhlICJkYXNobXN0ZG91dCINCisgICAgIyBtb2RlLiAg SXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBDKysgY29tcGlsZXIgZG9lcyBub3QgcHJvcGVy bHkNCisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5kIHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMuDQor ICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXA0KKyAgICAgICBzb3VyY2U9c3ViL2NvbmZ0ZXN0LmMg b2JqZWN0PXN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBcDQorICAgICAgIGRlcGZpbGU9c3ViL2Nv bmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcDQorICAgICAgICRTSEVMTCAu L2RlcGNvbXAgJGRlcGNjIC1jIC1vIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRl c3QuYyBcDQorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJg0KKyAgICAgICBn cmVwIHN1Yi9jb25mdHN0Ni5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQor ICAgICAgIGdyZXAgc3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99IHN1Yi9jb25mdGVzdC5QbyA+IC9k ZXYvbnVsbCAyPiYxICYmDQorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2 L251bGwgMj4mMTsgdGhlbg0KKyAgICAgICMgaWNjIGRvZXNuJ3QgY2hva2Ugb24gdW5rbm93biBv cHRpb25zLCBpdCB3aWxsIGp1c3QgaXNzdWUgd2FybmluZ3MNCisgICAgICAjIG9yIHJlbWFya3Mg KGV2ZW4gd2l0aCAtV2Vycm9yKS4gIFNvIHdlIGdyZXAgc3RkZXJyIGZvciBhbnkgbWVzc2FnZQ0K KyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVk Lg0KKyAgICAgICMgV2hlbiBnaXZlbiAtTVAsIGljYyA3LjAgYW5kIDcuMSBjb21wbGFpbiB0aHVz bHk6DQorICAgICAgIyAgIGljYzogQ29tbWFuZCBsaW5lIHdhcm5pbmc6IGlnbm9yaW5nIG9wdGlv biAnLU0nOyBubyBhcmd1bWVudCByZXF1aXJlZA0KKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFu Z2VkIGluIGljYyA4LjA6DQorICAgICAgIyAgIGljYzogQ29tbWFuZCBsaW5lIHJlbWFyazogb3B0 aW9uICctTVAnIG5vdCBzdXBwb3J0ZWQNCisgICAgICBpZiAoZ3JlcCAnaWdub3Jpbmcgb3B0aW9u JyBjb25mdGVzdC5lcnIgfHwNCisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRl c3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQ0KKyAgICAgICAgYW1fY3ZfQ0Nf ZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9JGRlcG1vZGUNCisgICAgICAgIGJyZWFrDQorICAg ICAgZmkNCisgICAgZmkNCisgIGRvbmUNCisNCisgIGNkIC4uDQorICBybSAtcmYgY29uZnRlc3Qu ZGlyDQorZWxzZQ0KKyAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0K K2ZpDQorDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA+JjUNCiskYXNfZWNo byAiJGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA+JjY7IH0NCitDQ0RFUE1P REU9ZGVwbW9kZT0kYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUNCisNCisNCisN CitpZg0KKyAgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vIFwNCisg ICYmIHRlc3QgIiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzOyB0 aGVuDQorICBhbV9fZmFzdGRlcENDX1RSVUU9DQorICBhbV9fZmFzdGRlcENDX0ZBTFNFPScjJw0K K2Vsc2UNCisgIGFtX19mYXN0ZGVwQ0NfVFJVRT0nIycNCisgIGFtX19mYXN0ZGVwQ0NfRkFMU0U9 DQorZmkNCisNCisNCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuDQorICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4N CitzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0ND K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxz ZQ0KKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExl dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorICBhY19wcm9nX3JlamVjdGVk PW5vDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIg aW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIg JiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4 dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVu DQorICAgIGlmIHRlc3QgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNi L2NjIjsgdGhlbg0KKyAgICAgICBhY19wcm9nX3JlamVjdGVkPXllcw0KKyAgICAgICBjb250aW51 ZQ0KKyAgICAgZmkNCisgICAgYWNfY3ZfcHJvZ19DQz0iY2MiDQorICAgICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3Nh dmVfSUZTDQorDQoraWYgdGVzdCAkYWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbg0KKyAgIyBX ZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0 Lg0KKyAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDDQorICBzaGlmdA0KKyAgaWYgdGVzdCAkIyAh PSAwOyB0aGVuDQorICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUg Ym9ndXMgb25lLg0KKyAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28g dGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuDQorICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1 c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLg0KKyAgICBzaGlmdA0KKyAg ICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193b3JkJHsxKycgJ30kQCINCisgIGZpDQorZmkN CitmaQ0KK2ZpDQorQ0M9JGFjX2N2X3Byb2dfQ0MNCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQor ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+ JjUNCiskYXNfZWNobyAiJENDIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2 OyB9DQorZmkNCisNCisNCisgIHRlc3QgLXogIiRDQyIgJiYgYXNfZm5fZXJyb3IgIm5vIGFjY2Vw dGFibGUgY2MgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQ0KK2ZpDQorDQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1 c2luZyBHTlUgQyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNp bmcgR05VIEMuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X2NfY29tcGlsZXJfZ251K3Nl dH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0K KyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRg0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgeWVzOw0KKyNl bmRpZg0KK0VPRg0KK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVzdC5jJw0KKyAgeyB7 IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX3RyeVwi IjsgfSA+JjUNCisgIChldmFsICRhY190cnkpIDI+JjUNCisgIGFjX3N0YXR1cz0kPw0KKyAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1 DQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4m MTsgdGhlbg0KKyAgYWNfY3ZfY19jb21waWxlcl9nbnU9eWVzDQorZWxzZQ0KKyAgYWNfY3ZfY19j b21waWxlcl9nbnU9bm8NCitmaQ0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1DQorJGFzX2VjaG8g IiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9DQorDQoraWYgdGVzdCAkYWNfY3ZfY19jb21w aWxlcl9nbnUgPSB5ZXM7IHRoZW4NCisgIEdDQz15ZXMNCisgIGFjX3Rlc3RfQ0ZMQUdTPSIke0NG TEFHUytzZXR9Ig0KKyAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiDQorICBhY190ZXN0X0NGTEFH Uz0ke0NGTEFHUytzZXR9DQorYWNfc2F2ZV9DRkxBR1M9JENGTEFHUw0KK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAt ZyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAi ID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19nK3NldH0iID0gc2V0OyB0aGVuIDoN CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgYWNfc2F2ZV9jX3dlcnJv cl9mbGFnPSRhY19jX3dlcnJvcl9mbGFnDQorICAgYWNfY193ZXJyb3JfZmxhZz15ZXMNCisgICBh Y19jdl9wcm9nX2NjX2c9bm8NCisgICBDRkxBR1M9Ii1nIg0KKyAgIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQNCisvKiBlbmQgY29uZmRlZnMuaC4gICovDQorDQor aW50DQorbWFpbiAoKQ0KK3sNCisNCisgIDsNCisgIHJldHVybiAwOw0KK30NCitfQUNFT0YNCitp ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6DQorICBhY19jdl9wcm9nX2Nj X2c9eWVzDQorZWxzZQ0KKyAgQ0ZMQUdTPSIiDQorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9B Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8NCisNCitpbnQN CittYWluICgpDQorew0KKw0KKyAgOw0KKyAgcmV0dXJuIDA7DQorfQ0KK19BQ0VPRg0KK2lmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoNCisNCitlbHNlDQorICBhY19jX3dl cnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcNCisJIENGTEFHUz0iLWciDQorCSBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0DQorLyogZW5kIGNvbmZkZWZz LmguICAqLw0KKw0KK2ludA0KK21haW4gKCkNCit7DQorDQorICA7DQorICByZXR1cm4gMDsNCit9 DQorX0FDRU9GDQoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOg0KKyAg YWNfY3ZfcHJvZ19jY19nPXllcw0KK2ZpDQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0DQorZmkNCitybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQNCitmaQ0KK3JtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dA0KKyAg IGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZw0KK2ZpDQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ci ID4mNQ0KKyRhc19lY2hvICIkYWNfY3ZfcHJvZ19jY19nIiA+JjY7IH0NCitpZiB0ZXN0ICIkYWNf dGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQorICBDRkxBR1M9JGFjX3NhdmVfQ0ZMQUdTDQorZWxp ZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4NCisgIGlmIHRlc3QgIiRHQ0MiID0g eWVzOyB0aGVuDQorICAgIENGTEFHUz0iLWcgLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9Ii1n Ig0KKyAgZmkNCitlbHNlDQorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbg0KKyAgICBDRkxB R1M9Ii1PMiINCisgIGVsc2UNCisgICAgQ0ZMQUdTPQ0KKyAgZmkNCitmaQ0KKyAgaWYgdGVzdCAi JGFjX3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbg0KKyAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFH UyINCisgIGVsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuDQorICAgIENGTEFH Uz0iLWcgLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9Ii1PMiINCisgIGZpDQorZWxzZQ0KKyAg R0NDPQ0KKyAgdGVzdCAiJHtDRkxBR1Mrc2V0fSIgPSBzZXQgfHwgQ0ZMQUdTPSItZyINCitmaQ0K Kw0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMgRXh0cmFjdCB0 aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hcyIsIHNvIGl0IGNhbiBiZSBhIHBy b2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXM7IGFj X3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk Li4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FTK3NldH0iID0gc2V0OyB0aGVu IDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAi JEFTIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BUz0iJEFTIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP Ug0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfQVM9IiR7YWNfdG9vbF9wcmVmaXh9YXMi DQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUN CisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK0FTPSRhY19jdl9wcm9n X0FTDQoraWYgdGVzdCAtbiAiJEFTIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBUyIgPiY1DQorJGFzX2VjaG8gIiRBUyIgPiY2OyB9 DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorZmkNCitpZiB0 ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUyI7IHRoZW4NCisgIGFjX2N0X0FTPSRBUw0KKyAgIyBFeHRy YWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhcyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3 aXRoIGFyZ3MuDQorc2V0IGR1bW15IGFzOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19l Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNf Y3ZfcHJvZ19hY19jdF9BUytzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUyI7IHRoZW4NCisgIGFj X2N2X3Byb2dfYWNfY3RfQVM9IiRhY19jdF9BUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl IHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitm b3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXog IiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl Y3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X0FTPSJhcyINCisgICAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0k YXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfQVM9JGFjX2N2X3Byb2dfYWNfY3RfQVMN CitpZiB0ZXN0IC1uICIkYWNfY3RfQVMiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FTIiA+JjUNCiskYXNfZWNobyAiJGFj X2N0X0FTIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisN CisgIGlmIHRlc3QgIngkYWNfY3RfQVMiID0geDsgdGhlbg0KKyAgICBBUz0iIg0KKyAgZWxzZQ0K KyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNy b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1DQorJGFzX2VjaG8g IiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9z dCB0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXllcyA7Ow0KK2VzYWMNCisgICAgQVM9 JGFjX2N0X0FTDQorICBmaQ0KK2Vsc2UNCisgIEFTPSIkYWNfY3ZfcHJvZ19BUyINCitmaQ0KKw0K K2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmly c3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9 JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg PiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoNCisg ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJEFSIjsg dGhlbg0KKyAgYWNfY3ZfcHJvZ19BUj0iJEFSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2Zv ciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAi JGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVj dXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiDQorICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRv bmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK0FSPSRhY19jdl9wcm9nX0FSDQor aWYgdGVzdCAtbiAiJEFSIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRBUiIgPiY1DQorJGFzX2VjaG8gIiRBUiIgPiY2OyB9DQorZWxz ZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v IiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorZmkNCitpZiB0ZXN0IC16 ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4NCisgIGFjX2N0X0FSPSRBUg0KKyAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy Z3MuDQorc2V0IGR1bW15IGFyOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24g ImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJv Z19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4NCisgIGFjX2N2X3By b2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qu DQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNf ZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsg dGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciINCisgICAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2 ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfQVI9JGFjX2N2X3Byb2dfYWNfY3RfQVINCitpZiB0 ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUNCiskYXNfZWNobyAiJGFjX2N0X0FS IiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisgIGlm IHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbg0KKyAgICBBUj0iIg0KKyAgZWxzZQ0KKyAgICBj YXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRv b2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19t ZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlw bGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXllcyA7Ow0KK2VzYWMNCisgICAgQVI9JGFjX2N0 X0FSDQorICBmaQ0KK2Vsc2UNCisgIEFSPSIkYWNfY3ZfcHJvZ19BUiINCitmaQ0KKw0KK2lmIHRl c3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29y ZCBvZiAiJHthY190b29sX3ByZWZpeH1yYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5h bWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29y ZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4g IiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkFOTElCK3NldH0iID0gc2V0OyB0aGVu IDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAi JFJBTkxJQiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfUkFOTElCPSIkUkFOTElCIiAjIExldCB0aGUg dXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZl X0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNf ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYg IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfUkFOTElCPSIke2Fj X3Rvb2xfcHJlZml4fXJhbmxpYiINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJy ZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0K K2ZpDQorUkFOTElCPSRhY19jdl9wcm9nX1JBTkxJQg0KK2lmIHRlc3QgLW4gIiRSQU5MSUIiOyB0 aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JFJBTkxJQiIgPiY1DQorJGFzX2VjaG8gIiRSQU5MSUIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFz X2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KK2ZpDQoraWYgdGVzdCAteiAiJGFjX2N2X3By b2dfUkFOTElCIjsgdGhlbg0KKyAgYWNfY3RfUkFOTElCPSRSQU5MSUINCisgICMgRXh0cmFjdCB0 aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp dGggYXJncy4NCitzZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRh c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7 YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsg dGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IiRhY19jdF9SQU5MSUIiICMgTGV0IHRo ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAt ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19hY19jdF9SQU5M SUI9InJhbmxpYiINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisg IGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNf Y3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQg0KK2lmIHRlc3QgLW4gIiRhY19jdF9S QU5MSUIiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGFjX2N0X1JBTkxJQiIgPiY1DQorJGFzX2VjaG8gIiRhY19jdF9SQU5MSUIiID4m NjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVz dCAieCRhY19jdF9SQU5MSUIiID0geDsgdGhlbg0KKyAgICBSQU5MSUI9IjoiDQorICBlbHNlDQor ICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6KQ0KK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jv c3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNfZWNobyAi JGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0 IHRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBSQU5M SUI9JGFjX2N0X1JBTkxJQg0KKyAgZmkNCitlbHNlDQorICBSQU5MSUI9IiRhY19jdl9wcm9nX1JB TkxJQiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1yZWFkZWxmIiwgc28g aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJHthY190b29s X3ByZWZpeH1yZWFkZWxmOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNo ZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19S RUFERUxGK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJFJFQURFTEYiOyB0aGVuDQorICBhY19jdl9wcm9nX1JF QURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNl DQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4g JFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVu c2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQor ICAgIGFjX2N2X3Byb2dfUkVBREVMRj0iJHthY190b29sX3ByZWZpeH1yZWFkZWxmIg0KKyAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25l DQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitSRUFERUxGPSRhY19jdl9wcm9nX1JF QURFTEYNCitpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUkVBREVMRiIgPiY1DQorJGFzX2VjaG8g IiRSRUFERUxGIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkN CisNCisNCitmaQ0KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX1JFQURFTEYiOyB0aGVuDQorICBh Y19jdF9SRUFERUxGPSRSRUFERUxGDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJl YWRlbGYiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1t eSByZWFkZWxmOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5n IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9S RUFERUxGK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuDQorICBhY19jdl9w cm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9SRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP Ug0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRj0icmVhZGVsZiIN CisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0K KyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfUkVBREVMRj0k YWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGDQoraWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0 aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N0X1JFQURFTEYiID4mNQ0KKyRhc19lY2hvICIkYWNfY3RfUkVBREVMRiIgPiY2OyB9DQor ZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFj X2N0X1JFQURFTEYiID0geDsgdGhlbg0KKyAgICBSRUFERUxGPSI6Ig0KKyAgZWxzZQ0KKyAgICBj YXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRv b2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19t ZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlw bGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXllcyA7Ow0KK2VzYWMNCisgICAgUkVBREVMRj0k YWNfY3RfUkVBREVMRg0KKyAgZmkNCitlbHNlDQorICBSRUFERUxGPSIkYWNfY3ZfcHJvZ19SRUFE RUxGIg0KK2ZpDQorDQorDQorDQorDQorIyBIYWNrIHRvIGVuc3VyZSB0aGF0IElOU1RBTEwgd29u J3QgYmUgc2V0IHRvICIuLi8iIHdpdGggYXV0b2NvbmYgMi4xMy4gICovDQorYWNfZ2l2ZW5fSU5T VEFMTD0kSU5TVEFMTA0KKw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9u cyBvZiBNYWtlZmlsZXMiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gZW5h YmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzLi4uICIgPiY2OyB9 DQorICAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgd2FzIGdpdmVu Lg0KK2lmIHRlc3QgIiR7ZW5hYmxlX21haW50YWluZXJfbW9kZStzZXR9IiA9IHNldDsgdGhlbiA6 DQorICBlbmFibGV2YWw9JGVuYWJsZV9tYWludGFpbmVyX21vZGU7IFVTRV9NQUlOVEFJTkVSX01P REU9JGVuYWJsZXZhbA0KK2Vsc2UNCisgIFVTRV9NQUlOVEFJTkVSX01PREU9bm8NCitmaQ0KKw0K KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRVU0Vf TUFJTlRBSU5FUl9NT0RFIiA+JjUNCiskYXNfZWNobyAiJFVTRV9NQUlOVEFJTkVSX01PREUiID4m NjsgfQ0KKw0KKw0KK2lmIHRlc3QgJFVTRV9NQUlOVEFJTkVSX01PREUgPSB5ZXM7IHRoZW4NCisg IE1BSU5UQUlORVJfTU9ERV9UUlVFPQ0KKyAgTUFJTlRBSU5FUl9NT0RFX0ZBTFNFPScjJw0KK2Vs c2UNCisgIE1BSU5UQUlORVJfTU9ERV9UUlVFPScjJw0KKyAgTUFJTlRBSU5FUl9NT0RFX0ZBTFNF PQ0KK2ZpDQorDQorICBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUNCisNCisNCisjIEJ5IGRl ZmF1bHQgd2Ugc2ltcGx5IHVzZSB0aGUgQyBjb21waWxlciB0byBidWlsZCBhc3NlbWJseSBjb2Rl Lg0KKw0KK3Rlc3QgIiR7Q0NBUytzZXR9IiA9IHNldCB8fCBDQ0FTPSRDQw0KK3Rlc3QgIiR7Q0NB U0ZMQUdTK3NldH0iID0gc2V0IHx8IENDQVNGTEFHUz0kQ0ZMQUdTDQorDQorDQorDQorDQorIyBX ZSBuZWVkIEFDX0VYRUVYVCB0byBrZWVwIGF1dG9tYWtlIGhhcHB5IGluIGN5Z251cyBtb2RlLiAg SG93ZXZlciwNCisjIGF0IGxlYXN0IGN1cnJlbnRseSwgd2UgbmV2ZXIgYWN0dWFsbHkgYnVpbGQg YSBwcm9ncmFtLCBzbyB3ZSBuZXZlcg0KKyMgbmVlZCB0byB1c2UgJChFWEVFWFQpLiAgTW9yZW92 ZXIsIHRoZSB0ZXN0IGZvciBFWEVFWFQgbm9ybWFsbHkNCisjIGZhaWxzLCBiZWNhdXNlIHdlIGFy ZSBwcm9iYWJseSBjb25maWd1cmluZyB3aXRoIGEgY3Jvc3MgY29tcGlsZXINCisjIHdoaWNoIGNh bid0IGNyZWF0ZSBleGVjdXRhYmxlcy4gIFNvIHdlIGluY2x1ZGUgQUNfRVhFRVhUIHRvIGtlZXAN CisjIGF1dG9tYWtlIGhhcHB5LCBidXQgd2UgZG9uJ3QgZXhlY3V0ZSBpdCwgc2luY2Ugd2UgZG9u J3QgY2FyZSBhYm91dA0KKyMgdGhlIHJlc3VsdC4NCitpZiBmYWxzZTsgdGhlbg0KKw0KKyAgZHVt bXlfdmFyPTENCitmaQ0KKw0KKy4gJHtuZXdsaWJfYmFzZWRpcn0vY29uZmlndXJlLmhvc3QNCisN CituZXdsaWJfY2ZsYWdzPSIke25ld2xpYl9jZmxhZ3N9IC1mbm8tYnVpbHRpbiINCisNCitORVdM SUJfQ0ZMQUdTPSR7bmV3bGliX2NmbGFnc30NCisNCisNCitOT19JTkNMVURFX0xJU1Q9JHtub2lu Y2x1ZGV9DQorDQorDQorTERGTEFHUz0ke2xkZmxhZ3N9DQorDQorDQorDQorDQoraWYgdGVzdCB4 JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MDsgdGhlbg0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9DQor ICBFTElYX0xFVkVMXzBfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9JyMn DQorICBFTElYX0xFVkVMXzBfRkFMU0U9DQorZmkNCisNCisNCisNCitpZiB0ZXN0IHgke25ld2xp Yl9lbGl4X2xldmVsfSA9IHgxOyB0aGVuDQorICBFTElYX0xFVkVMXzFfVFJVRT0NCisgIEVMSVhf TEVWRUxfMV9GQUxTRT0nIycNCitlbHNlDQorICBFTElYX0xFVkVMXzFfVFJVRT0nIycNCisgIEVM SVhfTEVWRUxfMV9GQUxTRT0NCitmaQ0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX2VsaXhf bGV2ZWx9ID0geDI7IHRoZW4NCisgIEVMSVhfTEVWRUxfMl9UUlVFPQ0KKyAgRUxJWF9MRVZFTF8y X0ZBTFNFPScjJw0KK2Vsc2UNCisgIEVMSVhfTEVWRUxfMl9UUlVFPScjJw0KKyAgRUxJWF9MRVZF TF8yX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQoraWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0g PSB4MzsgdGhlbg0KKyAgRUxJWF9MRVZFTF8zX1RSVUU9DQorICBFTElYX0xFVkVMXzNfRkFMU0U9 JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8zX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzNfRkFM U0U9DQorZmkNCisNCisNCisNCitpZiB0ZXN0IHgke25ld2xpYl9lbGl4X2xldmVsfSA9IHg0OyB0 aGVuDQorICBFTElYX0xFVkVMXzRfVFJVRT0NCisgIEVMSVhfTEVWRUxfNF9GQUxTRT0nIycNCitl bHNlDQorICBFTElYX0xFVkVMXzRfVFJVRT0nIycNCisgIEVMSVhfTEVWRUxfNF9GQUxTRT0NCitm aQ0KKw0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7dXNlX2xpYnRvb2x9ID0geHllczsgdGhlbg0KKyAg VVNFX0xJQlRPT0xfVFJVRT0NCisgIFVTRV9MSUJUT09MX0ZBTFNFPScjJw0KK2Vsc2UNCisgIFVT RV9MSUJUT09MX1RSVUU9JyMnDQorICBVU0VfTElCVE9PTF9GQUxTRT0NCitmaQ0KKw0KKw0KKyMg SGFyZC1jb2RlIE9CSkVYVC4gIE5vcm1hbGx5IGl0IGlzIHNldCBieSBBQ19PQkpFWFQsIGJ1dCB3 ZQ0KKyMgdXNlIG9leHQsIHdoaWNoIGlzIHNldCBpbiBjb25maWd1cmUuaG9zdCBiYXNlZCBvbiB0 aGUgdGFyZ2V0IHBsYXRmb3JtLg0KK09CSkVYVD0ke29leHR9DQorDQorDQorDQorDQorDQorDQor DQorDQorDQorDQorDQorYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxl Ig0KKw0KK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRg0KKyMgVGhpcyBmaWxlIGlzIGEgc2hlbGwg c2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQ0KKyMgdGVzdHMgcnVu IG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyZQ0K KyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBvcHRpb24gLS1j b25maWctY2FjaGUuDQorIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBp dCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndA0KKyMgd2FudCB0byBrZWVwLCB5b3UgbWF5IHJl bW92ZSBvciBlZGl0IGl0Lg0KKyMNCisjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlv biB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdA0KKyMgdGhlIC0tcmVjaGVjayBvcHRp b24gdG8gcmVydW4gY29uZmlndXJlLg0KKyMNCisjIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMg KHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4NCisjIGxvYWRpbmcgdGhpcyBm aWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWduZWQgdGhlDQorIyBm b2xsb3dpbmcgdmFsdWVzLg0KKw0KK19BQ0VPRg0KKw0KKyMgVGhlIGZvbGxvd2luZyB3YXkgb2Yg d3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsDQorIyBidXQg d2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVm ZmljaWVudC4NCisjIFNvLCB3ZSBraWxsIHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xpbmVzLg0K KyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVk IGRpcmVjdGx5LA0KKyMgYW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBmaWxlIHVu bGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuDQorKA0KKyAgZm9yIGFjX3ZhciBpbiBgKHNldCkg Mj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdgOyBk bw0KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXINCisgICAgY2FzZSAkYWNfdmFsIGluICMoDQor ICAgICoke2FzX25sfSopDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoDQorICAgICAgKl9jdl8q KSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hl IHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjUNCiskYXNfZWNobyAiJGFz X21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIg PiYyO30gOzsNCisgICAgICBlc2FjDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoDQorICAgICAg XyB8IElGUyB8IGFzX25sKSA7OyAjKA0KKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBl dmFsICRhY192YXI9IDs7ICMoDQorICAgICAgKikgeyBldmFsICRhY192YXI9OyB1bnNldCAkYWNf dmFyO30gOzsNCisgICAgICBlc2FjIDs7DQorICAgIGVzYWMNCisgIGRvbmUNCisNCisgIChzZXQp IDI+JjEgfA0KKyAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9JyAnOyBzZXQpIDI+JjFgIGluICMo DQorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikNCisgICAgICAjIGBzZXQnIGRvZXMgbm90IHF1 b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlczogZG91YmxlLXF1b3RlDQorICAgICAgIyBzdWJz dGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXC4NCisg ICAgICBzZWQgLW4gXA0KKwkicy8nLydcXFxcJycvZzsNCisJICBzL15cXChbXyRhc19jcl9hbG51 bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiDQorICAgICAg OzsgIygNCisgICAgKikNCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWly ZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLg0KKyAgICAgIHNlZCAtbiAiL15bXyRh c19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiDQorICAgICAgOzsNCisgICAgZXNh YyB8DQorICAgIHNvcnQNCispIHwNCisgIHNlZCAnDQorICAgICAvXmFjX2N2X2Vudl8vYiBlbmQN CisgICAgIHQgY2xlYXINCisgICAgIDpjbGVhcg0KKyAgICAgcy9eXChbXj1dKlwpPVwoLipbe31d LipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8fCAmLw0KKyAgICAgdCBlbmQNCisgICAgIHMv XlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9Lw0KKyAgICAgOmVuZCcgPj5jb25mY2FjaGUN CitpZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNhY2hlID4vZGV2L251bGwgMj4mMTsgdGhlbiA6 OyBlbHNlDQorICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4NCisgICAgdGVzdCAieCRj YWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCIgJiYNCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUNCisk YXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30NCisgICAg Y2F0IGNvbmZjYWNoZSA+JGNhY2hlX2ZpbGUNCisgIGVsc2UNCisgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAk Y2FjaGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFi bGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9DQorICBmaQ0KK2ZpDQorcm0gLWYgY29uZmNhY2hl DQorDQordGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZp eA0KKyMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJlZml4Lg0KK3Rlc3QgIngkZXhlY19wcmVmaXgi ID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScNCisNCisjIFRyYW5zZm9ybSBjb25m ZGVmcy5oIGludG8gREVGUy4NCisjIFByb3RlY3QgYWdhaW5zdCBzaGVsbCBleHBhbnNpb24gd2hp bGUgZXhlY3V0aW5nIE1ha2VmaWxlIHJ1bGVzLg0KKyMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxl IG1hY3JvIGV4cGFuc2lvbi4NCisjDQorIyBJZiB0aGUgZmlyc3Qgc2VkIHN1YnN0aXR1dGlvbiBp cyBleGVjdXRlZCAod2hpY2ggbG9va3MgZm9yIG1hY3JvcyB0aGF0DQorIyB0YWtlIGFyZ3VtZW50 cyksIHRoZW4gYnJhbmNoIHRvIHRoZSBxdW90ZSBzZWN0aW9uLiAgT3RoZXJ3aXNlLA0KKyMgbG9v ayBmb3IgYSBtYWNybyB0aGF0IGRvZXNuJ3QgdGFrZSBhcmd1bWVudHMuDQorYWNfc2NyaXB0PScN Cis6bWxpbmUNCisvXFwkL3sNCisgTg0KKyBzLFxcXG4sLA0KKyBiIG1saW5lDQorfQ0KK3QgY2xl YXINCis6Y2xlYXINCitzL15bCSBdKiNbCSBdKmRlZmluZVsJIF1bCSBdKlwoW14JIChdW14JIChd KihbXildKilcKVsJIF0qXCguKlwpLy1EXDE9XDIvZw0KK3QgcXVvdGUNCitzL15bCSBdKiNbCSBd KmRlZmluZVsJIF1bCSBdKlwoW14JIF1bXgkgXSpcKVsJIF0qXCguKlwpLy1EXDE9XDIvZw0KK3Qg cXVvdGUNCitiIGFueQ0KKzpxdW90ZQ0KK3MvWwkgYH4jJF4mKigpe31cXHw7J1wnJyI8Pj9dL1xc Ji9nDQorcy9cWy9cXCYvZw0KK3MvXF0vXFwmL2cNCitzL1wkLyQkL2cNCitIDQorOmFueQ0KKyR7 DQorCWcNCisJcy9eXG4vLw0KKwlzL1xuLyAvZw0KKwlwDQorfQ0KKycNCitERUZTPWBzZWQgLW4g IiRhY19zY3JpcHQiIGNvbmZkZWZzLmhgDQorDQorDQorYWNfbGlib2Jqcz0NCithY19sdGxpYm9i anM9DQorZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNv bnRpbnVlDQorICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBp bnN0YWxsZWQuDQorICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycN CisgIGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBzZWQgIiRhY19zY3JpcHQiYA0KKyAgIyAyLiBQ cmVwZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJ Ug0KKyAgIyAgICB3aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2Jq ZWN0cyBhcmUgYnVpbHQuDQorICBhc19mbl9hcHBlbmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJ Un0kYWNfaVwkVS4kYWNfb2JqZXh0Ig0KKyAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwk e0xJQk9CSkRJUn0kYWNfaSInJFUubG8nDQorZG9uZQ0KK0xJQk9CSlM9JGFjX2xpYm9ianMNCisN CitMVExJQk9CSlM9JGFjX2x0bGlib2Jqcw0KKw0KKw0KK2lmIHRlc3QgLXogIiR7TUFZX1NVUFBM WV9TWVNDQUxMU19UUlVFfSIgJiYgdGVzdCAteiAiJHtNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNF fSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk1BWV9TVVBQTFlfU1lTQ0FM TFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdh cyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1DQorZmkNCitpZiB0ZXN0 IC16ICIke0FNREVQX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FNREVQX0ZBTFNFfSI7IHRoZW4NCisg IGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuDQor VXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFs bHkuIiAiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9 IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJy b3IgImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ1wiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1Vz dWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5 LiIgIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7TUFJTlRBSU5FUl9NT0RFX1RSVUV9 IiAmJiB0ZXN0IC16ICIke01BSU5UQUlORVJfTU9ERV9GQUxTRX0iOyB0aGVuDQorICBhc19mbl9l cnJvciAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVSX01PREVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4N CitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9u YWxseS4iICIkTElORU5PIiA1DQorZmkNCitpZiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfMF9UUlVF fSIgJiYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzBfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJy b3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8wXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1 YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHku IiAiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzFfVFJVRX0iICYm IHRlc3QgLXogIiR7RUxJWF9MRVZFTF8xX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJj b25kaXRpb25hbCBcIkVMSVhfTEVWRUxfMVwiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkg dGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRM SU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8yX1RSVUV9IiAmJiB0ZXN0 IC16ICIke0VMSVhfTEVWRUxfMl9GQUxTRX0iOyB0aGVuDQorICBhc19mbl9lcnJvciAiY29uZGl0 aW9uYWwgXCJFTElYX0xFVkVMXzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMg bWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5P IiA1DQorZmkNCitpZiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfM19UUlVFfSIgJiYgdGVzdCAteiAi JHtFTElYX0xFVkVMXzNfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFs IFwiRUxJWF9MRVZFTF8zXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5z IHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQ0K K2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzRfVFJVRX0iICYmIHRlc3QgLXogIiR7RUxJ WF9MRVZFTF80X0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkVM SVhfTEVWRUxfNFwiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUg bWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUNCitmaQ0K K2lmIHRlc3QgLXogIiR7VVNFX0xJQlRPT0xfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX0xJQlRP T0xfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiVVNFX0xJQlRP T0xcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdh cyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1DQorZmkNCisNCis6ICR7 Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9DQorYWNfd3JpdGVfZmFpbD0wDQorYWNfY2xl YW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMNCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFu X2ZpbGVzICRDT05GSUdfU1RBVFVTIg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6 IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQ0KK2FzX3dyaXRlX2ZhaWw9MA0KK2NhdCA+ JENPTkZJR19TVEFUVVMgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xDQorIyEgJFNIRUxMDQor IyBHZW5lcmF0ZWQgYnkgJGFzX21lLg0KKyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUg Y3VycmVudCBjb25maWd1cmF0aW9uLg0KKyMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNv bmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcNCisjIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmln LmxvZyBpZiBpdCBleGlzdHMuDQorDQorZGVidWc9ZmFsc2UNCithY19jc19yZWNoZWNrPWZhbHNl DQorYWNfY3Nfc2lsZW50PWZhbHNlDQorDQorU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0N CitleHBvcnQgU0hFTEwNCitfQVNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0Yg fHwgYXNfd3JpdGVfZmFpbD0xDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNo IEluaXRpYWxpemF0aW9uLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBC ZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlDQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMg Zm9yIE1LUyBzaA0KK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUg c2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6DQorICBlbXVsYXRlIHNoDQorICBOVUxMQ01EPToN CisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIk QCJ9LCB3aGljaA0KKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMg ZmVhdHVyZS4NCisgIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJw0KKyAgc2V0b3B0IE5PX0dM T0JfU1VCU1QNCitlbHNlDQorICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygNCisg ICpwb3NpeCopIDoNCisgICAgc2V0IC1vIHBvc2l4IDs7ICMoDQorICAqKSA6DQorICAgICA7Ow0K K2VzYWMNCitmaQ0KKw0KKw0KK2FzX25sPScNCisnDQorZXhwb3J0IGFzX25sDQorIyBQcmludGlu ZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4NCithc19l Y2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2Fz X2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89 JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVm ZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9u IFNvbGFyaXMsDQorIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4N CitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcDQorICAgICYmICh0ZXN0 ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRo ZW4NCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJw0KKyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0n DQorZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9k ZXYvbnVsbDsgdGhlbg0KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nDQorICBhc19lY2hvX249J3By aW50ZiAlcycNCitlbHNlDQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19l Y2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19i b2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicNCisgICAgYXNfZWNob19uPScv dXNyL3VjYi9lY2hvIC1uJw0KKyAgZWxzZQ0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAi WCQxIiA6ICJYXFwoLipcXCkiJw0KKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFy Zz0kMTsNCisgICAgICBjYXNlICRhcmcgaW4gIygNCisgICAgICAqIiRhc19ubCIqKQ0KKwlleHBy ICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAiLiok YXNfbmxcXCguKlxcKSJgOzsNCisgICAgICBlc2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJY XFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCINCisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19u X2JvZHkNCisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycNCisg IGZpDQorICBleHBvcnQgYXNfZWNob19ib2R5DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19i b2R5IGFzX2VjaG8nDQorZmkNCisNCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0 ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFU T1I9Og0KKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9u dWxsIDI+JjEgJiYgew0KKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1j IDopID4vZGV2L251bGwgMj4mMSB8fA0KKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0K K2ZpDQorDQorDQorIyBJRlMNCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGlu IHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcw0KKyMgdGhlcmUgdG8gcHJldmVudCBl ZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLg0KKyMgKElmIF9BU19QQVRI X1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZA0K KyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikNCitJRlM9IiAiIgkk YXNfbmwiDQorDQorIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNv bnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4NCitjYXNlICQwIGluICMoKA0KKyAgKltcXC9d KiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0K KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgdGVzdCAtciAiJGFzX2Rpci8k MCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsNCisgIGRvbmUNCitJRlM9JGFzX3Nh dmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMs IG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnDQorIyBpbiB3aGljaCBj YXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguDQoraWYgdGVzdCAieCRhc19t eXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEgLWYgIiRh c19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBm aW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMg0KKyAgZXhp dCAxDQorZmkNCisNCisjIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3 aGljaCBjYXVzZSBidWdzIChlLmcuIGluDQorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBu b3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdCAxIg0KKyMgc3VwcHJlc3Nl cyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQNCisj IHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0Lg0KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYg RU5WIE1BSUwgTUFJTFBBVEgNCitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQg XA0KKyAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYg dW5zZXQgJGFzX3ZhciB8fCA6DQorZG9uZQ0KK1BTMT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9Jysg Jw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19BTEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitMQU5H VUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQorIyBDRFBBVEguDQorKHVuc2V0IENEUEFUSCkg Pi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSA0KKw0KKw0KKyMgYXNfZm5fZXJyb3IgRVJS T1IgW0xJTkVOTyBMT0dfRkRdDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJ TkVOTyBhbmQgTE9HX0ZEIGFyZQ0KKyMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0 byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQ0KKyMgc2NyaXB0IHdp dGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuDQorYXNfZm5fZXJyb3IgKCkNCit7 DQorICBhc19zdGF0dXM9JD87IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0K KyAgaWYgdGVzdCAiJDMiOyB0aGVuDQorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDIifSBh c19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sNCisgICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQxIiA+JiQzDQorICBm aQ0KKyAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQxIiA+JjINCisgIGFzX2ZuX2V4aXQgJGFz X3N0YXR1cw0KK30gIyBhc19mbl9lcnJvcg0KKw0KKw0KKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFU VVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRo b3V0IGZvcmtpbmcuDQorYXNfZm5fc2V0X3N0YXR1cyAoKQ0KK3sNCisgIHJldHVybiAkMQ0KK30g IyBhc19mbl9zZXRfc3RhdHVzDQorDQorIyBhc19mbl9leGl0IFNUQVRVUw0KKyMgLS0tLS0tLS0t LS0tLS0tLS0NCisjIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAg MCIgb3IgInNldCAtZSIgY29udGV4dC4NCithc19mbl9leGl0ICgpDQorew0KKyAgc2V0ICtlDQor ICBhc19mbl9zZXRfc3RhdHVzICQxDQorICBleGl0ICQxDQorfSAjIGFzX2ZuX2V4aXQNCisNCisj IGFzX2ZuX3Vuc2V0IFZBUg0KKyMgLS0tLS0tLS0tLS0tLS0tDQorIyBQb3J0YWJseSB1bnNldCBW QVIuDQorYXNfZm5fdW5zZXQgKCkNCit7DQorICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9DQorfQ0K K2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0DQorIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFDQorIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorIyBBcHBlbmQgdGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVu ZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBUYWtlDQorIyBhZHZhbnRhZ2Ug b2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdy b3d0aCBvdmVyDQorIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0eXBpY2FsIHF1 YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2ZQ0KKyMgaW1wbGVtZW50YXRpb25zLg0KK2lm IChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rl di9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQ0KKyAgew0KKyAgICBldmFs ICQxKz1cJDINCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXBwZW5kICgpDQorICB7DQorICAgIGV2 YWwgJDE9XCQkMVwkMg0KKyAgfQ0KK2ZpICMgYXNfZm5fYXBwZW5kDQorDQorIyBhc19mbl9hcml0 aCBBUkcuLi4NCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2 YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZQ0KKyMgZ2xv YmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jr cy4gVGhlIGFyZ3VtZW50cw0KKyMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4 cHIuDQoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhl biA6DQorICBldmFsICdhc19mbl9hcml0aCAoKQ0KKyAgew0KKyAgICBhc192YWw9JCgoICQqICkp DQorICB9Jw0KK2Vsc2UNCisgIGFzX2ZuX2FyaXRoICgpDQorICB7DQorICAgIGFzX3ZhbD1gZXhw ciAiJEAiIHx8IHRlc3QgJD8gLWVxIDFgDQorICB9DQorZmkgIyBhc19mbl9hcml0aA0KKw0KKw0K K2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmDQorICAgdGVzdCAiWGBleHBy IDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4NCisgIGFzX2V4cHI9ZXhwcg0KK2Vs c2UNCisgIGFzX2V4cHI9ZmFsc2UNCitmaQ0KKw0KK2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9u dWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4NCisg IGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0KKyAgYXNfYmFzZW5hbWU9ZmFsc2UNCitmaQ0K Kw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4v ZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfZGlybmFtZT1kaXJuYW1lDQorZWxzZQ0KKyAgYXNf ZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8DQor JGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwNCisJIFgiJDAiIDog J1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwN CiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sN CisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcL1woXC9cL1wpJC97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9cKFwvXCkuKi97DQorCSAgICBzLy9c MS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorDQorIyBBdm9pZCBkZXBlbmRp bmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2FzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1u b3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla Jw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUw0KK2FzX2NyX2Rp Z2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdp dHMNCisNCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2UgYGVjaG8gLW4geGAgaW4gIygo KCgoDQorLW4qKQ0KKyAgY2FzZSBgZWNobyAneHlcYydgIGluDQorICAqYyopIEVDSE9fVD0nCSc7 OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4NCisgIHh5KSAgRUNIT19DPSdcYyc7 Ow0KKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbA0K KyAgICAgICBFQ0hPX1Q9JwknOzsNCisgIGVzYWM7Ow0KKyopDQorICBFQ0hPX049Jy1uJzs7DQor ZXNhYw0KKw0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlDQoraWYgdGVzdCAt ZCBjb25mJCQuZGlyOyB0aGVuDQorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlDQorZWxz ZQ0KKyAgcm0gLWYgY29uZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0K K2ZpDQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgaWYgbG4g LXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xuX3M9J2xu IC1zJw0KKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFzOg0KKyAgICAjIDEpIE9u IE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLg0KKyAg ICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdy YXBwZXIgZXhlY3V0YWJsZS4NCisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1 bHQgdG8gYGNwIC1wJy4NCisgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYv bnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fA0KKyAgICAgIGFzX2xuX3M9J2NwIC1wJw0K KyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4NCisgICAgYXNf bG5fcz1sbg0KKyAgZWxzZQ0KKyAgICBhc19sbl9zPSdjcCAtcCcNCisgIGZpDQorZWxzZQ0KKyAg YXNfbG5fcz0nY3AgLXAnDQorZmkNCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGly L2NvbmYkJC5maWxlIGNvbmYkJC5maWxlDQorcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0K Kw0KKw0KKyMgYXNfZm5fbWtkaXJfcA0KKyMgLS0tLS0tLS0tLS0tLQ0KKyMgQ3JlYXRlICIkYXNf ZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5Lg0KK2Fz X2ZuX21rZGlyX3AgKCkNCit7DQorDQorICBjYXNlICRhc19kaXIgaW4gIygNCisgIC0qKSBhc19k aXI9Li8kYXNfZGlyOzsNCisgIGVzYWMNCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFz X21rZGlyX3AgfHwgew0KKyAgICBhc19kaXJzPQ0KKyAgICB3aGlsZSA6OyBkbw0KKyAgICAgIGNh c2UgJGFzX2RpciBpbiAjKA0KKyAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGly IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKA0KKyAgICAgICopIGFzX3FkaXI9JGFz X2Rpcjs7DQorICAgICAgZXNhYw0KKyAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMi DQorICAgICAgYXNfZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwNCiskYXNfZXhwciBY IiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBYIiRhc19k aXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBc DQorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hv IFgiJGFzX2RpciIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQv ew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sN CisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAg cy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0K KwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgICAgICB0ZXN0IC1kICIkYXNfZGly IiAmJiBicmVhaw0KKyAgICBkb25lDQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJt a2RpciAkYXNfZGlycyINCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3Ig ImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiDQorDQorDQorfSAjIGFzX2ZuX21rZGly X3ANCitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuDQorICBhc19ta2Rpcl9wPSdta2Rp ciAtcCAiJGFzX2RpciInDQorZWxzZQ0KKyAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXANCisg IGFzX21rZGlyX3A9ZmFsc2UNCitmaQ0KKw0KK2lmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7 IHRoZW4NCisgIGFzX3Rlc3RfeD0ndGVzdCAteCcNCitlbHNlDQorICBpZiBscyAtZEwgLyA+L2Rl di9udWxsIDI+JjE7IHRoZW4NCisgICAgYXNfbHNfTF9vcHRpb249TA0KKyAgZWxzZQ0KKyAgICBh c19sc19MX29wdGlvbj0NCisgIGZpDQorICBhc190ZXN0X3g9Jw0KKyAgICBldmFsIHNoIC1jICdc JycNCisgICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4NCisJdGVzdCAtZCAiJDEvLiI7DQorICAg ICAgZWxzZQ0KKwljYXNlICQxIGluICMoDQorCS0qKXNldCAiLi8kMSI7Ow0KKwllc2FjOw0KKwlj YXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEiIDI+L2Rldi9udWxsYCBpbiAjKCgNCisJ Pz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQ0KKyAgICAnXCcnIHNoDQorICAnDQorZmkNCith c19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeA0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEg c3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4NCithc190cl9jcHA9ImV2YWwgc2VkICd5JSok YXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIg0K Kw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJs ZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1d JV8lZyciDQorDQorDQorZXhlYyA2PiYxDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gIyMNCisjIyBNYWluIGJvZHkgb2YgJENPTkZJR19TVEFUVVMgc2NyaXB0LiAjIw0K KyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorX0FTRU9GDQordGVz dCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJENPTkZJR19TVEFUVVMgfHwgYWNfd3Jp dGVfZmFpbD0xDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRl X2ZhaWw9MQ0KKyMgU2F2ZSB0aGUgbG9nIG1lc3NhZ2UsIHRvIGtlZXAgJDAgYW5kIHNvIG9uIG1l YW5pbmdmdWwsIGFuZCB0bw0KKyMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklH X0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcg0KKyMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFu ZGxpbmcuDQorYWNfbG9nPSINCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IG5ld2xpYiAkYXNf bWUgMS4xOS4wLCB3aGljaCB3YXMNCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQuICBJ bnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMNCisNCisgIENPTkZJR19GSUxFUyAgICA9ICRDT05G SUdfRklMRVMNCisgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVBREVSUw0KKyAgQ09ORklH X0xJTktTICAgID0gJENPTkZJR19MSU5LUw0KKyAgQ09ORklHX0NPTU1BTkRTID0gJENPTkZJR19D T01NQU5EUw0KKyAgJCAkMCAkQA0KKw0KK29uIGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rl di9udWxsIHwgc2VkIDFxYA0KKyINCisNCitfQUNFT0YNCisNCitjYXNlICRhY19jb25maWdfZmls ZXMgaW4gKiINCisiKikgc2V0IHggJGFjX2NvbmZpZ19maWxlczsgc2hpZnQ7IGFjX2NvbmZpZ19m aWxlcz0kKjs7DQorZXNhYw0KKw0KKw0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9G IHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRl IGZvci4NCitjb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMiDQorY29uZmlnX2NvbW1hbmRz PSIkYWNfY29uZmlnX2NvbW1hbmRzIg0KKw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RB VFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCithY19jc191c2FnZT0iXA0KK1xgJGFz X21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90aGVyIGNvbmZpZ3VyYXRpb24gYWN0aW9ucw0K K2Zyb20gdGVtcGxhdGVzIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiAg VW5sZXNzIHRoZSBmaWxlcw0KK2FuZCBhY3Rpb25zIGFyZSBzcGVjaWZpZWQgYXMgVEFHcywgYWxs IGFyZSBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdC4NCisNCitVc2FnZTogJDAgW09QVElPTl0uLi4g W1RBR10uLi4NCisNCisgIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4 aXQNCisgIC1WLCAtLXZlcnNpb24gICAgcHJpbnQgdmVyc2lvbiBudW1iZXIgYW5kIGNvbmZpZ3Vy YXRpb24gc2V0dGluZ3MsIHRoZW4gZXhpdA0KKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50DQorICAg ICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcw0KKyAgLWQsIC0t ZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzDQorICAgICAgLS1yZWNoZWNr ICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2FtZSBjb25kaXRpb25z DQorICAgICAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQ0KKyAgICAgICAgICAgICAgICAgICBpbnN0 YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIEZJTEUNCisNCitDb25maWd1cmF0aW9uIGZp bGVzOg0KKyRjb25maWdfZmlsZXMNCisNCitDb25maWd1cmF0aW9uIGNvbW1hbmRzOg0KKyRjb25m aWdfY29tbWFuZHMNCisNCitSZXBvcnQgYnVncyB0byB0aGUgcGFja2FnZSBwcm92aWRlci4iDQor DQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFp bD0xDQorYWNfY3NfdmVyc2lvbj0iXFwNCituZXdsaWIgY29uZmlnLnN0YXR1cyAxLjE5LjANCitj b25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQsDQorICB3aXRo IG9wdGlvbnMgXFwiYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87 IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2BcXCINCisNCitDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBm cmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorZ2l2ZXMgdW5saW1p dGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiINCisNCith Y19wd2Q9JyRhY19wd2QnDQorc3JjZGlyPSckc3JjZGlyJw0KK0lOU1RBTEw9JyRJTlNUQUxMJw0K K0FXSz0nJEFXSycNCit0ZXN0IC1uICJcJEFXSyIgfHwgQVdLPWF3aw0KK19BQ0VPRg0KKw0KK2Nh dCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIFRoZSBk ZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUu DQorYWNfbmVlZF9kZWZhdWx0cz06DQord2hpbGUgdGVzdCAkIyAhPSAwDQorZG8NCisgIGNhc2Ug JDEgaW4NCisgIC0tKj0qKQ0KKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpc KT0nYA0KKyAgICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0qPVwoLipcKSdgDQorICAg IGFjX3NoaWZ0PToNCisgICAgOzsNCisgICopDQorICAgIGFjX29wdGlvbj0kMQ0KKyAgICBhY19v cHRhcmc9JDINCisgICAgYWNfc2hpZnQ9c2hpZnQNCisgICAgOzsNCisgIGVzYWMNCisNCisgIGNh c2UgJGFjX29wdGlvbiBpbg0KKyAgIyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4NCisgIC1yZWNo ZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAt LXJlIHwgLS1yKQ0KKyAgICBhY19jc19yZWNoZWNrPTogOzsNCisgIC0tdmVyc2lvbiB8IC0tdmVy c2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdiB8IC1WICkNCisgICAg JGFzX2VjaG8gIiRhY19jc192ZXJzaW9uIjsgZXhpdCA7Ow0KKyAgLS1kZWJ1ZyB8IC0tZGVidSB8 IC0tZGViIHwgLS1kZSB8IC0tZCB8IC1kICkNCisgICAgZGVidWc9OiA7Ow0KKyAgLS1maWxlIHwg LS1maWwgfCAtLWZpIHwgLS1mICkNCisgICAgJGFjX3NoaWZ0DQorICAgIGNhc2UgJGFjX29wdGFy ZyBpbg0KKyAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAi cy8nLydcXFxcXFxcXCcnL2ciYCA7Ow0KKyAgICBlc2FjDQorICAgIGFzX2ZuX2FwcGVuZCBDT05G SUdfRklMRVMgIiAnJGFjX29wdGFyZyciDQorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Ow0K KyAgLS1oZSB8IC0taCB8ICAtLWhlbHAgfCAtLWhlbCB8IC1oICkNCisgICAgJGFzX2VjaG8gIiRh Y19jc191c2FnZSI7IGV4aXQgOzsNCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8 IC0tcXVpIHwgLS1xdSB8IC0tcSBcDQorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4g fCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpDQorICAgIGFjX2NzX3NpbGVudD06IDs7DQor DQorICAjIFRoaXMgaXMgYW4gZXJyb3IuDQorICAtKikgYXNfZm5fZXJyb3IgInVucmVjb2duaXpl ZCBvcHRpb246IFxgJDEnDQorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4i IDs7DQorDQorICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSINCisgICAg IGFjX25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsNCisNCisgIGVzYWMNCisgIHNoaWZ0DQorZG9uZQ0K Kw0KK2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQ0KKw0KK2lmICRhY19jc19zaWxlbnQ7IHRoZW4N CisgIGV4ZWMgNj4vZGV2L251bGwNCisgIGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29u ZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiDQorZmkNCisNCitfQUNFT0YNCitjYXQgPj4kQ09O RklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitpZiBcJGFjX2NzX3JlY2hl Y2s7IHRoZW4NCisgIHNldCBYICckU0hFTEwnICckMCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNf Y29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24NCisgIHNoaWZ0 DQorICBcJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNg0KKyAg Q09ORklHX1NIRUxMPSckU0hFTEwnDQorICBleHBvcnQgQ09ORklHX1NIRUxMDQorICBleGVjICJc JEAiDQorZmkNCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwg YWNfd3JpdGVfZmFpbD0xDQorZXhlYyA1Pj5jb25maWcubG9nDQorew0KKyAgZWNobw0KKyAgc2Vk ICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4kLyAjIy87cDt4O3A7eCcgPDxfQVNCT1gNCisj IyBSdW5uaW5nICRhc19tZS4gIyMNCitfQVNCT1gNCisgICRhc19lY2hvICIkYWNfbG9nIg0KK30g PiY1DQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3Jp dGVfZmFpbD0xDQorIw0KKyMgSU5JVC1DT01NQU5EUw0KKyMNCitBTURFUF9UUlVFPSIkQU1ERVBf VFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiDQorDQorX0FDRU9GDQorDQorY2F0ID4+JENP TkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKw0KKyMgSGFuZGxpbmcg b2YgYXJndW1lbnRzLg0KK2ZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0 cw0KK2RvDQorICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluDQorICAgICJkZXBmaWxlcyIpIENP TkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZXBmaWxlcyIgOzsNCisgICAgIk1ha2Vm aWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7Ow0KKw0KKyAgKikg YXNfZm5fZXJyb3IgImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJ TkVOTyIgNTs7DQorICBlc2FjDQorZG9uZQ0KKw0KKw0KKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1 c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwNCisj IHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQg YXJlIG5vdC4NCisjIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25t ZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5DQorIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEu My4NCitpZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbg0KKyAgdGVzdCAiJHtDT05GSUdfRklMRVMr c2V0fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRjb25maWdfZmlsZXMNCisgIHRlc3QgIiR7Q09O RklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENPTkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1h bmRzDQorZmkNCisNCisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5j ZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUNCisjIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlz IG5vIHJlYXNvbiBhZ2FpbnN0IGhhdmluZyBpdCBoZXJlLCBhbmQgaW4gYWRkaXRpb24sDQorIyBj cmVhdGluZyBhbmQgbW92aW5nIGZpbGVzIGZyb20gL3RtcCBjYW4gc29tZXRpbWVzIGNhdXNlIHBy b2JsZW1zLg0KKyMgSG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4NCisjIE5v dGUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBpbiB3aGljaCB0aGUgZGlyZWN0b3J5IHdp bGwgbm90IGJlIGNsZWFuZWQ6DQorIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMg bmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRtcCcuDQorJGRlYnVnIHx8DQorew0KKyAgdG1w PQ0KKyAgdHJhcCAnZXhpdF9zdGF0dXM9JD8NCisgIHsgdGVzdCAteiAiJHRtcCIgfHwgdGVzdCAh IC1kICIkdG1wIiB8fCBybSAtZnIgIiR0bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzDQorJyAw DQorICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQ0KK30NCisjIENyZWF0ZSBhIChzZWN1 cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4NCisNCit7DQorICB0bXA9YCh1bWFzayAw NzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYNCisgIHRlc3Qg LW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiDQorfSAgfHwNCit7DQorICB0bXA9Li9jb25mJCQt JFJBTkRPTQ0KKyAgKHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpDQorfSB8fCBhc19mbl9lcnJv ciAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUN CisNCisjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0ZJTEVTIHNlY3Rpb24uDQorIyBO byBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4NCisj IFRoaXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5o Jy4NCitpZiB0ZXN0IC1uICIkQ09ORklHX0ZJTEVTIjsgdGhlbg0KKw0KKw0KK2FjX2NyPWBlY2hv IFggfCB0ciBYICdcMDE1J2ANCisjIE9uIGN5Z3dpbiwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBg YCBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgaWduY3IuDQorIyBCdXQgd2Uga25vdyBvZiBubyBvdGhl ciBzaGVsbCB3aGVyZSBhY19jciB3b3VsZCBiZSBlbXB0eSBhdCB0aGlzDQorIyBwb2ludCwgc28g d2UgY2FuIHVzZSBhIGJhc2hpc20gYXMgYSBmYWxsYmFjay4NCitpZiB0ZXN0ICJ4JGFjX2NyIiA9 IHg7IHRoZW4NCisgIGV2YWwgYWNfY3I9XCRcJ1xcclwnDQorZmkNCithY19jc19hd2tfY3I9YCRB V0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251bGxgDQoraWYg dGVzdCAiJGFjX2NzX2F3a19jciIgPSAiYSR7YWNfY3J9YiI7IHRoZW4NCisgIGFjX2NzX2F3a19j cj0nXHInDQorZWxzZQ0KKyAgYWNfY3NfYXdrX2NyPSRhY19jcg0KK2ZpDQorDQorZWNobyAnQkVH SU4geycgPiIkdG1wL3N1YnMxLmF3ayIgJiYNCitfQUNFT0YNCisNCisNCit7DQorICBlY2hvICJj YXQgPmNvbmYkJHN1YnMuYXdrIDw8X0FDRU9GIiAmJg0KKyAgZWNobyAiJGFjX3N1YnN0X3ZhcnMi IHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJg0KKyAgZWNobyAiX0FDRU9GIg0KK30gPmNv bmYkJHN1YnMuc2ggfHwNCisgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NU QVRVUyIgIiRMSU5FTk8iIDUNCithY19kZWxpbV9udW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8 IGdyZXAgLWMgJyQnYA0KK2FjX2RlbGltPSclIV8hIyAnDQorZm9yIGFjX2xhc3RfdHJ5IGluIGZh bHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvDQorICAuIC4vY29uZiQkc3Vicy5zaCB8 fA0KKyAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElO RU5PIiA1DQorDQorICBhY19kZWxpbV9uPWBzZWQgLW4gInMvLiokYWNfZGVsaW1cJC9YL3AiIGNv bmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYA0KKyAgaWYgdGVzdCAkYWNfZGVsaW1fbiA9ICRhY19k ZWxpbV9udW07IHRoZW4NCisgICAgYnJlYWsNCisgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuDQor ICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8i IDUNCisgIGVsc2UNCisgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxp bSEhICINCisgIGZpDQorZG9uZQ0KK3JtIC1mIGNvbmYkJHN1YnMuc2gNCisNCitjYXQgPj4kQ09O RklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitjYXQgPj4iXCR0bXAvc3Vi czEuYXdrIiA8PFxcX0FDQVdLICYmDQorX0FDRU9GDQorc2VkIC1uICcNCitoDQorcy9eL1NbIi87 IHMvIS4qLyJdPS8NCitwDQorZw0KK3MvXlteIV0qIS8vDQorOnJlcGwNCit0IHJlcGwNCitzLyci JGFjX2RlbGltIickLy8NCit0IGRlbGltDQorOm5sDQoraA0KK3MvXCguXHsxNDhcfVwpLiovXDEv DQordCBtb3JlMQ0KK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcbiJcXC8NCitwDQorbg0K K2IgcmVwbA0KKzptb3JlMQ0KK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8NCitwDQor Zw0KK3MvLlx7MTQ4XH0vLw0KK3QgbmwNCis6ZGVsaW0NCitoDQorcy9cKC5cezE0OFx9XCkuKi9c MS8NCit0IG1vcmUyDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIi8NCitwDQorYg0KKzpt b3JlMg0KK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8NCitwDQorZw0KK3MvLlx7MTQ4 XH0vLw0KK3QgZGVsaW0NCisnIDxjb25mJCRzdWJzLmF3ayB8IHNlZCAnDQorL15bXiIiXS97DQor ICBODQorICBzL1xuLy8NCit9DQorJyA+PiRDT05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9 MQ0KK3JtIC1mIGNvbmYkJHN1YnMuYXdrDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xDQorX0FDQVdLDQorY2F0ID4+IlwkdG1wL3N1YnMxLmF3ayIgPDxf QUNBV0sgJiYNCisgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxDQorICBGUyA9ICIH Ig0KKw0KK30NCit7DQorICBsaW5lID0gJCAwDQorICBuZmllbGRzID0gc3BsaXQobGluZSwgZmll bGQsICJAIikNCisgIHN1YnN0ZWQgPSAwDQorICBsZW4gPSBsZW5ndGgoZmllbGRbMV0pDQorICBm b3IgKGkgPSAyOyBpIDwgbmZpZWxkczsgaSsrKSB7DQorICAgIGtleSA9IGZpZWxkW2ldDQorICAg IGtleWxlbiA9IGxlbmd0aChrZXkpDQorICAgIGlmIChTX2lzX3NldFtrZXldKSB7DQorICAgICAg dmFsdWUgPSBTW2tleV0NCisgICAgICBsaW5lID0gc3Vic3RyKGxpbmUsIDEsIGxlbikgIiIgdmFs dWUgIiIgc3Vic3RyKGxpbmUsIGxlbiArIGtleWxlbiArIDMpDQorICAgICAgbGVuICs9IGxlbmd0 aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkNCisgICAgICBzdWJzdGVkID0gMQ0KKyAgICB9 IGVsc2UNCisgICAgICBsZW4gKz0gMSArIGtleWxlbg0KKyAgfQ0KKw0KKyAgcHJpbnQgbGluZQ0K K30NCisNCitfQUNBV0sNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xDQoraWYgc2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9k ZXYvbnVsbCAyPiYxOyB0aGVuDQorICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2Nz X2F3a19jci9nIg0KK2Vsc2UNCisgIGNhdA0KK2ZpIDwgIiR0bXAvc3ViczEuYXdrIiA+ICIkdG1w L3N1YnMuYXdrIiBcDQorICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IHNldHVwIGNvbmZpZyBm aWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1DQorX0FDRU9GDQorDQorIyBWUEFUSCBtYXkgY2F1 c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSAkKHNyY2RpciksDQorIyAk e3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAg bGVhZGluZyBhbmQNCisjIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xl IGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQ0KKyMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVt cHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4NCitpZiB0ZXN0ICJ4JHNyY2RpciIg PSB4LjsgdGhlbg0KKyAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPS97DQorcy86KlwkKHNy Y2Rpcik6Ki86Lw0KK3MvOipcJHtzcmNkaXJ9OiovOi8NCitzLzoqQHNyY2RpckA6Ki86Lw0KK3Mv XlwoW149XSo9WwkgXSpcKToqL1wxLw0KK3MvOiokLy8NCitzL15bXj1dKj1bCSBdKiQvLw0KK30n DQorZmkNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFp bD0xDQorZmkgIyB0ZXN0IC1uICIkQ09ORklHX0ZJTEVTIg0KKw0KKw0KK2V2YWwgc2V0IFggIiAg OkYgJENPTkZJR19GSUxFUyAgICAgIDpDICRDT05GSUdfQ09NTUFORFMiDQorc2hpZnQNCitmb3Ig YWNfdGFnDQorZG8NCisgIGNhc2UgJGFjX3RhZyBpbg0KKyAgOltGSExDXSkgYWNfbW9kZT0kYWNf dGFnOyBjb250aW51ZTs7DQorICBlc2FjDQorICBjYXNlICRhY19tb2RlJGFjX3RhZyBpbg0KKyAg OltGSExdKjoqKTs7DQorICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgImludmFsaWQgdGFnIFxg JGFjX3RhZyciICIkTElORU5PIiA1OzsNCisgIDpbRkhdLSkgYWNfdGFnPS06LTs7DQorICA6W0ZI XSopIGFjX3RhZz0kYWNfdGFnOiRhY190YWcuaW47Ow0KKyAgZXNhYw0KKyAgYWNfc2F2ZV9JRlM9 JElGUw0KKyAgSUZTPToNCisgIHNldCB4ICRhY190YWcNCisgIElGUz0kYWNfc2F2ZV9JRlMNCisg IHNoaWZ0DQorICBhY19maWxlPSQxDQorICBzaGlmdA0KKw0KKyAgY2FzZSAkYWNfbW9kZSBpbg0K KyAgOkwpIGFjX3NvdXJjZT0kMTs7DQorICA6W0ZIXSkNCisgICAgYWNfZmlsZV9pbnB1dHM9DQor ICAgIGZvciBhY19mDQorICAgIGRvDQorICAgICAgY2FzZSAkYWNfZiBpbg0KKyAgICAgIC0pIGFj X2Y9IiR0bXAvc3RkaW4iOzsNCisgICAgICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGlu IHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3VyY2UgdHJlZQ0KKwkgIyAoaWYgdGhlIHBh dGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5 bGUsDQorCSAjIGJlY2F1c2UgJGFjX2YgY2Fubm90IGNvbnRhaW4gYDonLg0KKwkgdGVzdCAtZiAi JGFjX2YiIHx8DQorCSAgIGNhc2UgJGFjX2YgaW4NCisJICAgW1xcLyRdKikgZmFsc2U7Ow0KKwkg ICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIkc3JjZGlyLyRhY19mIjs7DQor CSAgIGVzYWMgfHwNCisJICAgYXNfZm5fZXJyb3IgImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxg JGFjX2YnIiAiJExJTkVOTyIgNTs7DQorICAgICAgZXNhYw0KKyAgICAgIGNhc2UgJGFjX2YgaW4g KlwnKikgYWNfZj1gJGFzX2VjaG8gIiRhY19mIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7 IGVzYWMNCisgICAgICBhc19mbl9hcHBlbmQgYWNfZmlsZV9pbnB1dHMgIiAnJGFjX2YnIg0KKyAg ICBkb25lDQorDQorICAgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3 aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0DQorICAgICMgdXNlICRhc19tZSksIHBlb3Bs ZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoNCisgICAgIyAgICAvKiBjb25maWcuaC4gIEdl bmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8NCisgICAgY29uZmlndXJlX2lucHV0PSdHZW5l cmF0ZWQgZnJvbSAnYA0KKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8XlteOl0qL3x8O3N8Olte Ol0qL3wsIHxnJw0KKwlgJyBieSBjb25maWd1cmUuJw0KKyAgICBpZiB0ZXN0IHgiJGFjX2ZpbGUi ICE9IHgtOyB0aGVuDQorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICRjb25maWd1 cmVfaW5wdXQiDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFj X2ZpbGUiID4mNjt9DQorICAgIGZpDQorICAgICMgTmV1dHJhbGl6ZSBzcGVjaWFsIGNoYXJhY3Rl cnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxhY2VtZW50IHN0cmluZ3MuDQorICAgIGNhc2Ug JGNvbmZpZ3VyZV9pbnB1dCBpbiAjKA0KKyAgICAqXCYqIHwgKlx8KiB8ICpcXCogKQ0KKyAgICAg ICBhY19zZWRfY29uZl9pbnB1dD1gJGFzX2VjaG8gIiRjb25maWd1cmVfaW5wdXQiIHwNCisgICAg ICAgc2VkICdzL1tcXFxcJnxdL1xcXFwmL2cnYDs7ICMoDQorICAgICopIGFjX3NlZF9jb25mX2lu cHV0PSRjb25maWd1cmVfaW5wdXQ7Ow0KKyAgICBlc2FjDQorDQorICAgIGNhc2UgJGFjX3RhZyBp bg0KKyAgICAqOi06KiB8ICo6LSkgY2F0ID4iJHRtcC9zdGRpbiIgXA0KKyAgICAgIHx8IGFzX2Zu X2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7Ow0KKyAgICBl c2FjDQorICAgIDs7DQorICBlc2FjDQorDQorICBhY19kaXI9YCRhc19kaXJuYW1lIC0tICIkYWNf ZmlsZSIgfHwNCiskYXNfZXhwciBYIiRhY19maWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9d Ki8qJCcgXHwgXA0KKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGFj X2ZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRhY19maWxlIiA6ICdYXCgvXCknIFx8IC4g Mj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRhY19maWxlIiB8DQorICAgIHNlZCAnL15YXCgu KlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0K KwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15Y XChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEn YA0KKyAgYXNfZGlyPSIkYWNfZGlyIjsgYXNfZm5fbWtkaXJfcA0KKyAgYWNfYnVpbGRkaXI9Lg0K Kw0KK2Nhc2UgIiRhY19kaXIiIGluDQorLikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGly X3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQorKikNCisgIGFjX2Rpcl9zdWZmaXg9L2Ak YXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgDQorICAjIEEgIi4uIiBmb3Ig ZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguDQorICBhY190b3BfYnVpbGRkaXJfc3Vi PWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8 J2ANCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4NCisgICIiKSBhY190b3BfYnVpbGRk aXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsNCisgICopICBhY190b3BfYnVpbGRfcHJl Zml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7Ow0KKyAgZXNhYyA7Ow0KK2VzYWMNCithY19hYnNf dG9wX2J1aWxkZGlyPSRhY19wd2QNCithY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3Vm Zml4DQorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToNCithY190b3BfYnVpbGRkaXI9JGFj X3RvcF9idWlsZF9wcmVmaXgNCisNCitjYXNlICRzcmNkaXIgaW4NCisgIC4pICAjIFdlIGFyZSBi dWlsZGluZyBpbiBwbGFjZS4NCisgICAgYWNfc3JjZGlyPS4NCisgICAgYWNfdG9wX3NyY2Rpcj0k YWNfdG9wX2J1aWxkZGlyX3N1Yg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7DQor ICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0k c3JjZGlyJGFjX2Rpcl9zdWZmaXg7DQorICAgIGFjX3RvcF9zcmNkaXI9JHNyY2Rpcg0KKyAgICBh Y19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7DQorICAqKSAjIFJlbGF0aXZlIG5hbWUuDQorICAg IGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKyAg ICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2Rpcg0KKyAgICBhY19hYnNf dG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsNCitlc2FjDQorYWNfYWJzX3NyY2Rpcj0kYWNf YWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKw0KKw0KKyAgY2FzZSAkYWNfbW9kZSBpbg0K KyAgOkYpDQorICAjDQorICAjIENPTkZJR19GSUxFDQorICAjDQorDQorICBjYXNlICRJTlNUQUxM IGluDQorICBbXFwvJF0qIHwgPzpbXFwvXSogKSBhY19JTlNUQUxMPSRJTlNUQUxMIDs7DQorICAq KSBhY19JTlNUQUxMPSRhY190b3BfYnVpbGRfcHJlZml4JElOU1RBTEwgOzsNCisgIGVzYWMNCitf QUNFT0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFp bD0xDQorIyBJZiB0aGUgdGVtcGxhdGUgZG9lcyBub3Qga25vdyBhYm91dCBkYXRhcm9vdGRpciwg ZXhwYW5kIGl0Lg0KKyMgRklYTUU6IFRoaXMgaGFjayBzaG91bGQgYmUgcmVtb3ZlZCBhIGZldyB5 ZWFycyBhZnRlciAyLjYwLg0KK2FjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9z ZWVuPQ0KK2FjX3NlZF9kYXRhcm9vdD0nDQorL2RhdGFyb290ZGlyLyB7DQorICBwDQorICBxDQor fQ0KKy9AZGF0YWRpckAvcA0KKy9AZG9jZGlyQC9wDQorL0BpbmZvZGlyQC9wDQorL0Bsb2NhbGVk aXJAL3ANCisvQG1hbmRpckAvcCcNCitjYXNlIGBldmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRh cm9vdFwiICRhY19maWxlX2lucHV0cyJgIGluDQorKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3Rk aXJfc2Vlbj15ZXM7Ow0KKypAZGF0YWRpckAqfCpAZG9jZGlyQCp8KkBpbmZvZGlyQCp8KkBsb2Nh bGVkaXJAKnwqQG1hbmRpckAqKQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRh dGFyb290ZGlyIHNldHRpbmciID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19m aWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYy O30NCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTENCisgIGFjX2RhdGFyb290ZGlyX2hhY2s9Jw0KKyAgcyZAZGF0YWRpckAmJGRhdGFkaXIm Zw0KKyAgcyZAZG9jZGlyQCYkZG9jZGlyJmcNCisgIHMmQGluZm9kaXJAJiRpbmZvZGlyJmcNCisg IHMmQGxvY2FsZWRpckAmJGxvY2FsZWRpciZnDQorICBzJkBtYW5kaXJAJiRtYW5kaXImZw0KKyAg cyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycgOzsNCitlc2FjDQorX0FDRU9GDQor DQorIyBOZXV0cmFsaXplIFZQQVRIIHdoZW4gYCRzcmNkaXInID0gYC4nLg0KKyMgU2hlbGwgY29k ZSBpbiBjb25maWd1cmUuYWMgbWlnaHQgc2V0IGV4dHJhc3ViLg0KKyMgRklYTUU6IGRvIHdlIHJl YWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8NCitjYXQgPj4kQ09ORklHX1NUQVRV UyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCithY19zZWRfZXh0cmE9IiRhY192cHN1Yg0K KyRleHRyYXN1Yg0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh Y193cml0ZV9mYWlsPTENCis6dA0KKy9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWINCitzfEBj b25maWd1cmVfaW5wdXRAfCRhY19zZWRfY29uZl9pbnB1dHw7dCB0DQorcyZAdG9wX2J1aWxkZGly QCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0DQorcyZAdG9wX2J1aWxkX3ByZWZpeEAmJGFjX3Rv cF9idWlsZF9wcmVmaXgmO3QgdA0KK3MmQHNyY2RpckAmJGFjX3NyY2RpciY7dCB0DQorcyZAYWJz X3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdA0KK3MmQHRvcF9zcmNkaXJAJiRhY190b3Bfc3Jj ZGlyJjt0IHQNCitzJkBhYnNfdG9wX3NyY2RpckAmJGFjX2Fic190b3Bfc3JjZGlyJjt0IHQNCitz JkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQNCitzJkBhYnNfYnVpbGRkaXJAJiRhY19hYnNf YnVpbGRkaXImO3QgdA0KK3MmQGFic190b3BfYnVpbGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGly Jjt0IHQNCitzJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0DQorJGFjX2RhdGFyb290ZGlyX2hh Y2sNCisiDQorZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwg JEFXSyAtZiAiJHRtcC9zdWJzLmF3ayIgPiR0bXAvb3V0IFwNCisgIHx8IGFzX2ZuX2Vycm9yICJj b3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQ0KKw0KK3Rlc3QgLXogIiRhY19k YXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmDQorICB7IGFjX291dD1gc2Vk IC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0Ijsg fSAmJg0KKyAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcg IiR0bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVm ZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJw0KK3doaWNoIHNlZW1zIHRvIGJl IHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZC4iID4mNQ0KKyRhc19l Y2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRo ZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJw0KK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4g IFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZC4iID4mMjt9DQorDQorICBybSAtZiAiJHRt cC9zdGRpbiINCisgIGNhc2UgJGFjX2ZpbGUgaW4NCisgIC0pIGNhdCAiJHRtcC9vdXQiICYmIHJt IC1mICIkdG1wL291dCI7Ow0KKyAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJHRtcC9vdXQi ICIkYWNfZmlsZSI7Ow0KKyAgZXNhYyBcDQorICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNy ZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUNCisgOzsNCisNCisNCisgIDpDKSAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFu ZHMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGV4ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIg PiY2O30NCisgOzsNCisgIGVzYWMNCisNCisNCisgIGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbg0K KyAgICAiZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IGZvciBtZiBp biAkQ09ORklHX0ZJTEVTOyBkbw0KKyAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUg bmFtZSBvZiB0aGUgZmlsZS4NCisgIG1mPWBlY2hvICIkbWYiIHwgc2VkIC1lICdzLzouKiQvLydg DQorICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhbiBBdXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZp bGUgb3Igbm90Lg0KKyAgIyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBN YWtlZmlsZS5pbicsIGJ1dA0KKyAgIyBzb21lIHBlb3BsZSByZW5hbWUgdGhlbTsgc28gaW5zdGVh ZCB3ZSBsb29rIGF0IHRoZSBmaWxlIGNvbnRlbnQuDQorICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBs aW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxlIHBvc3QtcHJvY2Vzcw0KKyAgIyBlYWNoIE1h a2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBz by4NCisgICMgU28gbGV0J3MgZ3JlcCB3aG9sZSBmaWxlLg0KKyAgaWYgZ3JlcCAnXiMuKmdlbmVy YXRlZCBieSBhdXRvbWFrZScgJG1mID4gL2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgZGlycGFy dD1gJGFzX2Rpcm5hbWUgLS0gIiRtZiIgfHwNCiskYXNfZXhwciBYIiRtZiIgOiAnWFwoLipbXi9d XCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJG1mIiA6ICdYXCgvL1wpW14vXScgXHwgXA0K KwkgWCIkbWYiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRtZiIgOiAnWFwoL1wpJyBcfCAuIDI+ L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkbWYiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwp XC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAv XlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15Y XChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCku Ki97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICBl bHNlDQorICAgIGNvbnRpbnVlDQorICBmaQ0KKyAgIyBFeHRyYWN0IHRoZSBkZWZpbml0aW9uIG9m IERFUERJUiwgYW1fX2luY2x1ZGUsIGFuZCBhbV9fcXVvdGUNCisgICMgZnJvbSB0aGUgTWFrZWZp bGUgd2l0aG91dCBydW5uaW5nIGBtYWtlJy4NCisgIERFUERJUj1gc2VkIC1uICdzL15ERVBESVIg PSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0IC16ICIkREVQRElSIiAmJiBjb250aW51ZQ0KKyAgYW1f X2luY2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUgPSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0 IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUNCisgIGFtX19xdW90ZT1gc2VkIC1uICdzL15h bV9fcXVvdGUgPSAvL3AnIDwgIiRtZiJgDQorICAjIFdoZW4gdXNpbmcgYW5zaTJrbnIsIFUgbWF5 IGJlIGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4cGFuZCBpdA0KKyAgVT1gc2VkIC1uICdzL15V ID0gLy9wJyA8ICIkbWYiYA0KKyAgIyBGaW5kIGFsbCBkZXBlbmRlbmN5IG91dHB1dCBmaWxlcywg dGhleSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aA0KKyAgIyAkKERFUERJUikgaW4gdGhlaXIgbmFt ZXMuICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2UgaXQgaXMgdGhlDQorICAjIHNpbXBsZXN0 IGFwcHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElSKSB0byBpdHMgYWN0dWFsIHZhbHVlIGluIHRo ZQ0KKyAgIyBleHBhbnNpb24uDQorICBmb3IgZmlsZSBpbiBgc2VkIC1uICINCisgICAgcy9eJGFt X19pbmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJUikuKlwpJGFtX19xdW90ZSInJC9cMS9wJyA8 IiRtZiIgfCBcDQorICAgICAgIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1l ICdzL1wkVS8nIiRVIicvZydgOyBkbw0KKyAgICAjIE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGV4 aXN0cy4NCisgICAgdGVzdCAtZiAiJGRpcnBhcnQvJGZpbGUiICYmIGNvbnRpbnVlDQorICAgIGZk aXI9YCRhc19kaXJuYW1lIC0tICIkZmlsZSIgfHwNCiskYXNfZXhwciBYIiRmaWxlIiA6ICdYXCgu KlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkZmlsZSIgOiAnWFwoLy9cKVteL10n IFx8IFwNCisJIFgiJGZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRmaWxlIiA6ICdYXCgv XCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRmaWxlIiB8DQorICAgIHNlZCAn L15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAgIHEN CisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQor CSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQor CSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiov Li87IHEnYA0KKyAgICBhc19kaXI9JGRpcnBhcnQvJGZkaXI7IGFzX2ZuX21rZGlyX3ANCisgICAg IyBlY2hvICJjcmVhdGluZyAkZGlycGFydC8kZmlsZSINCisgICAgZWNobyAnIyBkdW1teScgPiAi JGRpcnBhcnQvJGZpbGUiDQorICBkb25lDQorZG9uZQ0KKyA7Ow0KKw0KKyAgZXNhYw0KK2RvbmUg IyBmb3IgYWNfdGFnDQorDQorDQorYXNfZm5fZXhpdCAwDQorX0FDRU9GDQorYWNfY2xlYW5fZmls ZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUNCisNCit0ZXN0ICRhY193cml0ZV9mYWlsID0gMCB8fA0K KyAgYXNfZm5fZXJyb3IgIndyaXRlIGZhaWx1cmUgY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiICIk TElORU5PIiA1DQorDQorDQorIyBjb25maWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9nLCBh bmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLg0KKyMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBv d24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLg0KKyMgVW5mb3J0dW5hdGVs eSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdCBvcGVuDQor IyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0 byBpdDsgaXRzDQorIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhl IEZEIHRvIC9kZXYvbnVsbCwNCisjIGVmZmVjdGl2ZWx5IGNsb3NpbmcgY29uZmlnLmxvZywgc28g aXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kDQorIyBhcHBlbmRlZCB0byBieSBjb25m aWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0byBjb25maWd1cmUsIHdlDQorIyBuZWVkIHRv IG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4NCitpZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5 ZXM7IHRoZW4NCisgIGFjX2NzX3N1Y2Nlc3M9Og0KKyAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQ0K KyAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYNCisgICAgYWNfY29uZmlnX3N0YXR1c19hcmdzPSIk YWNfY29uZmlnX3N0YXR1c19hcmdzIC0tcXVpZXQiDQorICBleGVjIDU+L2Rldi9udWxsDQorICAk U0hFTEwgJENPTkZJR19TVEFUVVMgJGFjX2NvbmZpZ19zdGF0dXNfYXJncyB8fCBhY19jc19zdWNj ZXNzPWZhbHNlDQorICBleGVjIDU+PmNvbmZpZy5sb2cNCisgICMgVXNlIHx8LCBub3QgJiYsIHRv IGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoDQorICAjIHdvdWxk IG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4NCisg ICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQgJD8NCitmaQ0KK2lmIHRlc3QgLW4gIiRhY191 bnJlY29nbml6ZWRfb3B0cyIgJiYgdGVzdCAiJGVuYWJsZV9vcHRpb25fY2hlY2tpbmciICE9IG5v OyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J Tkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQ0KKyRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNv Z25pemVkX29wdHMiID4mMjt9DQorZmkNCisNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNo aW5lL3h0ZW5zYS9jb25maWd1cmUuaW4gYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9jb25m aWd1cmUuaW4NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjBhZDVkZjUx ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvY29uZmln dXJlLmluDQpAQCAtMCwwICsxLDE0IEBADQorZG5sIFRoaXMgaXMgdGhlIG5ld2xpYi9saWJjL21h Y2hpbmUveHRlbnNhIGNvbmZpZ3VyZS5pbiBmaWxlLg0KK2RubCBQcm9jZXNzIHRoaXMgZmlsZSB3 aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0Lg0KKw0KK0FDX1BSRVJF USgyLjU5KQ0KK0FDX0lOSVQoW25ld2xpYl0sW05FV0xJQl9WRVJTSU9OXSkNCitBQ19DT05GSUdf U1JDRElSKFtNYWtlZmlsZS5hbV0pDQorDQorZG5sIENhbid0IGJlIGRvbmUgaW4gTkVXTElCX0NP TkZJR1VSRSBiZWNhdXNlIHRoYXQgY29uZnVzZXMgYXV0b21ha2UuDQorQUNfQ09ORklHX0FVWF9E SVIoLi4vLi4vLi4vLi4pDQorDQorTkVXTElCX0NPTkZJR1VSRSguLi8uLi8uLikNCisNCitBQ19D T05GSUdfRklMRVMoW01ha2VmaWxlXSkNCitBQ19PVVRQVVQNCmRpZmYgLS1naXQgYS9uZXdsaWIv bGlibS9tYWNoaW5lL3h0ZW5zYS9mZWNsZWFyZXhjZXB0LmMgYi9uZXdsaWIvbGlibS9tYWNoaW5l L3h0ZW5zYS9mZWNsZWFyZXhjZXB0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAuLmUzZjg5MTMxZg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGlu ZS94dGVuc2EvZmVjbGVhcmV4Y2VwdC5jDQpAQCAtMCwwICsxLDQ5IEBADQorLyogQ29weXJpZ2h0 IChjKSAyMDExIFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0aGUg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAgd2l0 aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFORCBB TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAg IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTDQorICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg SU4gTk8gRVZFTlQgU0hBTEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJWSUNF UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikNCisgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKw0KKyNpbmNsdWRlIDx4dGVuc2Ev Y29uZmlnL2NvcmUtaXNhLmg+DQorDQorI2lmIFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFWRV9E RlANCisNCisjaW5jbHVkZSA8ZmVudi5oPg0KKw0KKw0KK2ludCBmZWNsZWFyZXhjZXB0KGludCBl eGNlcHQpDQorew0KKyAgdW5zaWduZWQgaW50IGZzcjsNCisNCisgIGlmIChleGNlcHQgJiB+RkVf QUxMX0VYQ0VQVCkNCisgICAgcmV0dXJuIC0xOw0KKyAgZXhjZXB0IDw8PSBfRkVfRVhDRVBUSU9O X0ZMQUdTX09GRlNFVDsNCisgIGFzbSAoInJ1ci5mc3IgJTAiIDogIj1hIihmc3IpKTsNCisgIGZz ciA9IGZzciAmIH5leGNlcHQ7DQorICBhc20gKCJ3dXIuZnNyICUwIiA6IDogImEiKGZzcikpOw0K KyAgcmV0dXJuIDA7DQorfQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21h Y2hpbmUveHRlbnNhL2ZlZ2V0ZW52LmMgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdl dGVudi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi5hNGFmYmUwYzAN Ci0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZW52 LmMNCkBAIC0wLDAgKzEsNTYgQEANCisvKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGVuc2lsaWNhIElu Yy4gIEFMTCBSSUdIVFMgUkVTRVJWRUQuDQorDQorICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICAgbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z DQorICAgYXJlIG1ldDoNCisNCisgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisNCisgICAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQor ICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcNCisgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQNCisgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQor DQorICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg QU5EIENPTlRSSUJVVE9SUw0KKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICAgTElNSVRFRCBUTywgVEhFIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCisgICBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTA0KKyAg IFRFTlNJTElDQSBJTkNPUlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwNCisgICBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg REFNQUdFUw0KKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUyBPUg0KKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KKyAgIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwNCisg ICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpDQorICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KKyAgIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB TUFHRS4gICovDQorDQorDQorI2luY2x1ZGUgPHh0ZW5zYS9jb25maWcvY29yZS1pc2EuaD4NCisN CisjaWYgWENIQUxfSEFWRV9GUCB8fCBYQ0hBTF9IQVZFX0RGUA0KKw0KKyNpbmNsdWRlIDxmZW52 Lmg+DQorDQoraW50IGZlZ2V0ZW52KGZlbnZfdCAqIGVudl9wdHIpDQorew0KKyAgdW5zaWduZWQg aW50IGZzcjsNCisgIHVuc2lnbmVkIGludCBmY3I7DQorICBhc20gKCJydXIuZnNyICUwIiA6ICI9 YSIoZnNyKSk7DQorICBhc20gKCJydXIuZmNyICUwIiA6ICI9YSIoZmNyKSk7DQorICAqZW52X3B0 ciA9IGZzciB8IGZjcjsNCisgIHJldHVybiAwOw0KK30NCisNCisNCitpbnQgZmVzZXRlbnYoY29u c3QgZmVudl90ICogZW52X3B0cikNCit7DQorICBmZW52X3QgZW52ID0gKmVudl9wdHI7DQorICBp ZiAoZW52ICYgfihfRkVfRkxPQVRJTkdfRU5WX01BU0spKQ0KKyAgICByZXR1cm4gLTE7DQorICBh c20gKCJ3dXIuZnNyICUwIiA6IDogImEiKCplbnZfcHRyKSk7DQorICBhc20gKCJ3dXIuZmNyICUw IiA6IDogImEiKCplbnZfcHRyKSk7DQorICByZXR1cm4gMDsNCit9DQorDQorI2VuZGlmDQpkaWZm IC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRleGNlcHQuYyBiL25ld2xp Yi9saWJtL21hY2hpbmUveHRlbnNhL2ZlZ2V0ZXhjZXB0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwMDAuLjI1MDkxN2MzZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGli L2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRleGNlcHQuYw0KQEAgLTAsMCArMSw2NyBAQA0KKy8q 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 X0hBVkVfREZQDQorDQorLyogVGhlc2UgZnVuY3Rpb25zIGFyZSBnbGliYyBleHRlbnNpb25zLiAg Ki8NCisNCisjaW5jbHVkZSA8ZmVudi5oPg0KKw0KK2ludCBmZWdldGV4Y2VwdCh2b2lkKQ0KK3sN CisgIGZleGNlcHRfdCBjdXJyZW50Ow0KKyAgYXNtICgicnVyLmZzciAlMCIgOiAiPWEiKGN1cnJl bnQpKTsNCisgIHJldHVybiAoY3VycmVudCA+PiBfRkVfRVhDRVBUSU9OX0VOQUJMRV9PRkZTRVQp ICYgRkVfQUxMX0VYQ0VQVDsNCit9DQorDQorDQoraW50IGZlZW5hYmxlZXhjZXB0KGludCBleGNl cHRzKQ0KK3sNCisgIGZleGNlcHRfdCBjdXJyZW50Ow0KKyAgaWYgKGV4Y2VwdHMgJiB+RkVfQUxM X0VYQ0VQVCkNCisgICAgcmV0dXJuIC0xOw0KKyAgYXNtICgicnVyLmZjciAlMCIgOiAiPWEiKGN1 cnJlbnQpKTsNCisgIGN1cnJlbnQgfD0gZXhjZXB0cyA8PCBfRkVfRVhDRVBUSU9OX0VOQUJMRV9P RkZTRVQ7DQorICBhc20gKCJ3dXIuZmNyICUwIiA6ICI9YSIoY3VycmVudCkpOw0KKyAgcmV0dXJu IDA7DQorfQ0KKw0KKw0KK2ludCBmZWRpc2FibGVleGNlcHQoaW50IGV4Y2VwdHMpDQorew0KKyAg ZmV4Y2VwdF90IGN1cnJlbnQ7DQorICBpZiAoZXhjZXB0cyAmIH5GRV9BTExfRVhDRVBUKQ0KKyAg ICByZXR1cm4gLTE7DQorICBhc20gKCJydXIuZmNyICUwIiA6ICI9YSIoY3VycmVudCkpOw0KKyAg Y3VycmVudCAmPSB+KGV4Y2VwdHMgPDwgX0ZFX0VYQ0VQVElPTl9FTkFCTEVfT0ZGU0VUKTsNCisg IGFzbSAoInd1ci5mY3IgJTAiIDogIj1hIihjdXJyZW50KSk7DQorICByZXR1cm4gMDsNCit9DQor DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRl eGNlcHRmbGFnLmMgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZsYWcu Yw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uZmEzYzdlMzljDQotLS0g L2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldGV4Y2VwdGZs YWcuYw0KQEAgLTAsMCArMSw2NCBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAxMSBUZW5zaWxpY2Eg SW5jLiAgQUxMIFJJR0hUUyBSRVNFUlZFRC4NCisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMNCisgICBhcmUgbWV0Og0KKw0KKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKw0KKyAgIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUN CisgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZw0KKyAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZA0KKyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N CisNCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS UyBBTkQgQ09OVFJJQlVUT1JTDQorICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisgICBMSU1JVEVEIFRPLCBUSEUgSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KKyAgIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMDQor ICAgVEVOU0lMSUNBIElOQ09SUE9SQVRFRCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULA0KKyAgIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTDQorICAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQorICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICAgSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULA0K KyAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkNCisgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEDQorICAgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg REFNQUdFLiAgKi8NCisNCisNCisjaW5jbHVkZSA8eHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oPg0K Kw0KKyNpZiBYQ0hBTF9IQVZFX0ZQIHx8IFhDSEFMX0hBVkVfREZQDQorDQorI2luY2x1ZGUgPGZl bnYuaD4NCisNCitpbnQgZmVnZXRleGNlcHRmbGFnKGZleGNlcHRfdCAqZmxhZ3AsIGludCBleGNl cHRzKQ0KK3sNCisgIHVuc2lnbmVkIGludCBmc3I7DQorICBpZiAoZXhjZXB0cyAmIH5GRV9BTExf RVhDRVBUKQ0KKyAgICByZXR1cm4gLTE7DQorICBhc20gKCJydXIuZnNyICUwIiA6ICI9YSIoZnNy KSk7DQorICBmc3IgPj49IF9GRV9FWENFUFRJT05fRkxBR1NfT0ZGU0VUOw0KKyAgZXhjZXB0cyAm PSBmc3I7DQorICAqZmxhZ3AgPSBleGNlcHRzOw0KKw0KKyAgcmV0dXJuIDA7DQorfQ0KKw0KKw0K K2ludCBmZXNldGV4Y2VwdGZsYWcoY29uc3QgZmV4Y2VwdF90ICpmbGFncCwgaW50IGV4Y2VwdHMp DQorew0KKyAgaWYgKGV4Y2VwdHMgJiB+RkVfQUxMX0VYQ0VQVCkNCisgICAgcmV0dXJuIC0xOw0K Kw0KKyAgdW5zaWduZWQgaW50IGZzcjsNCisNCisgIGFzbSAoInJ1ci5mc3IgJTAiIDogIj1hIihm c3IpKTsNCisNCisgIGZzciAmPSB+KGV4Y2VwdHMgPDwgX0ZFX0VYQ0VQVElPTl9GTEFHU19PRkZT RVQpOw0KKyAgZnNyIHw9ICgoKmZsYWdwICYgZXhjZXB0cykgPDwgX0ZFX0VYQ0VQVElPTl9GTEFH U19PRkZTRVQpOw0KKyAgYXNtICgid3VyLmZzciAlMCIgOiA6ICJhIihmc3IpKTsNCisgIHJldHVy biAwOw0KK30NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5lL3h0 ZW5zYS9mZWdldHJvdW5kLmMgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWdldHJvdW5k LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmYxN2JlNmRjMQ0KLS0t IC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVnZXRyb3VuZC5j DQpAQCAtMCwwICsxLDUwIEBADQorLyogQ29weXJpZ2h0IChjKSAyMDExIFRlbnNpbGljYSBJbmMu ICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlv biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0K KyAgIGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11 c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAg ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0K KyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO RCBDT05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQorICAgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgICBU RU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs DQorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgICBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQorICAg U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuICAqLw0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+DQorDQorI2lm IFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFWRV9ERlANCisNCisjaW5jbHVkZSA8ZmVudi5oPg0K Kw0KK2ludCBmZWdldHJvdW5kKHZvaWQpDQorew0KKyAgZmV4Y2VwdF90IGN1cnJlbnQ7DQorICBh c20gKCJydXIuZmNyICUwIiA6ICI9YSIoY3VycmVudCkpOw0KKyAgcmV0dXJuIChjdXJyZW50ICYg X0ZFX1JPVU5EX01PREVfTUFTSykgPj4gX0ZFX1JPVU5EX01PREVfT0ZGU0VUOw0KK30NCisNCisN CitpbnQgZmVzZXRyb3VuZChpbnQgcm91bmQpDQorew0KKyAgaWYgKHJvdW5kICYgfl9GRV9ST1VO RF9NT0RFX01BU0spDQorICAgIHJldHVybiAtMTsNCisgIGFzbSAoInd1ci5mY3IgJTAiIDogOiAi YSIocm91bmQpKTsNCisgIHJldHVybiAwOw0KK30NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9u ZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZWhvbGRleGNlcHQuYyBiL25ld2xpYi9saWJtL21h Y2hpbmUveHRlbnNhL2ZlaG9sZGV4Y2VwdC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwLi41NDU3ZDYwMTANCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJtL21h Y2hpbmUveHRlbnNhL2ZlaG9sZGV4Y2VwdC5jDQpAQCAtMCwwICsxLDU1IEBADQorLyogQ29weXJp Z2h0IChjKSAyMDExIFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAg IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN CisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0 aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFO RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0K KyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTDQorICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE LiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJW SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikNCisgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBU SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKw0KKyNpbmNsdWRlIDx4dGVu c2EvY29uZmlnL2NvcmUtaXNhLmg+DQorDQorI2lmIFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFW RV9ERlANCisNCisjaW5jbHVkZSA8ZmVudi5oPg0KKw0KK2ludCBmZWhvbGRleGNlcHQoZmVudl90 ICogZW52cCkNCit7DQorICBmZXhjZXB0X3QgZnNyOw0KKyAgZmVudl90IGZjcjsNCisgIC8qIEdl dCB0aGUgZW52aXJvbm1lbnQuICAqLw0KKyAgYXNtICgicnVyLmZjciAlMCIgOiAiPWEiKGZjcikp Ow0KKyAgYXNtICgicnVyLmZzciAlMCIgOiAiPWEiKGZzcikpOw0KKyAgKmVudnAgPSBmc3IgfCBm Y3I7DQorDQorICAvKiBDbGVhciB0aGUgZXhjZXB0aW9uIGVuYWJsZSBmbGFncy4gICovDQorICBm Y3IgJj0gX0ZFX1JPVU5EX01PREVfTUFTSzsNCisgIGFzbSAoInd1ci5mY3IgJTAiIDogOiJhIihm Y3IpKTsNCisNCisgIC8qIENsZWFyIHRoZSBleGNlcHRpb24gaGFwcGVuZWQgZmxhZ3MuICAqLw0K KyAgZnNyID0gMDsNCisgIGFzbSAoInd1ci5mc3IgJTAiIDogOiJhIihmc3IpKTsNCisNCisgIHJl dHVybiAwOw0KK30NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9tYWNoaW5l L3h0ZW5zYS9mZXJhaXNlZXhjZXB0LmMgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9mZXJh aXNlZXhjZXB0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjNjMGUz OWQxMQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS94dGVuc2EvZmVy YWlzZWV4Y2VwdC5jDQpAQCAtMCwwICsxLDUwIEBADQorLyogQ29weXJpZ2h0IChjKSAyMDExIFRl bnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAg IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQor DQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAgd2l0aCB0aGUgZGlzdHJp YnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAgIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQor ICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg U0hBTEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJWSUNFUzsgTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgICBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmlnL2NvcmUt aXNhLmg+DQorDQorI2lmIFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFWRV9ERlANCisNCisvKiBY dGVuc2EgZG9lc24ndCB0cmFwLCBzbyBzZXR0aW5nIHRoZSBmbGFncyBpcyB0aGUgYmVzdCB3ZSBj YW4NCisgICBkby4gICovDQorDQorI2luY2x1ZGUgPGZlbnYuaD4NCisNCitpbnQgZmVyYWlzZWV4 Y2VwdChpbnQgZXhjZXB0cykNCit7DQorICBmZXhjZXB0X3QgY3VycmVudDsNCisNCisgIGlmIChl eGNlcHRzICYgfkZFX0FMTF9FWENFUFQpDQorICAgIHJldHVybiAtMTsNCisgIGFzbSAoInJ1ci5m c3IgJTAiIDogIj1hIihjdXJyZW50KSk7DQorICBjdXJyZW50IHw9IGV4Y2VwdHMgPDwgX0ZFX0VY Q0VQVElPTl9GTEFHU19PRkZTRVQ7DQorICBhc20gKCJ3dXIuZnNyICUwIiA6IDogImEiKGN1cnJl bnQpKTsNCisgIHJldHVybiAwOw0KK30NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9uZXdsaWIv bGlibS9tYWNoaW5lL3h0ZW5zYS9mZXRlc3RleGNlcHQuYyBiL25ld2xpYi9saWJtL21hY2hpbmUv eHRlbnNhL2ZldGVzdGV4Y2VwdC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwLi4yOTUwODU5NDkNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJtL21hY2hpbmUv eHRlbnNhL2ZldGVzdGV4Y2VwdC5jDQpAQCAtMCwwICsxLDQxIEBADQorLyogQ29weXJpZ2h0IChj KSAyMDExIFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAgMS4gUmVkaXN0cmlidXRp b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkDQorICAgICAgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAiQVMgSVMiIEFORCBBTlkg RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAgIExJ TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTDQorICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g Tk8gRVZFTlQgU0hBTEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVEIEJFIExJQUJMRSBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCisgICBTRVJWSUNFUzsg TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikN CisgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQNCisgICBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmln L2NvcmUtaXNhLmg+DQorDQorI2lmIFhDSEFMX0hBVkVfRlAgfHwgWENIQUxfSEFWRV9ERlANCisN CisjaW5jbHVkZSA8ZmVudi5oPg0KKw0KK2ludCBmZXRlc3RleGNlcHQoaW50IGV4Y2VwdHMpDQor ew0KKyAgZmV4Y2VwdF90IGN1cnJlbnQ7DQorICBhc20gKCJydXIuZnNyICUwIiA6ICI9YSIoY3Vy cmVudCkpOw0KKyAgcmV0dXJuIChjdXJyZW50ID4+IF9GRV9FWENFUFRJT05fRkxBR1NfT0ZGU0VU KSAmIGV4Y2VwdHM7DQorfQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL21h Y2hpbmUveHRlbnNhL2ZldXBkYXRlZW52LmMgYi9uZXdsaWIvbGlibS9tYWNoaW5lL3h0ZW5zYS9m ZXVwZGF0ZWVudi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi42OGQ2 NzFjNzINCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJtL21hY2hpbmUveHRlbnNhL2Zl dXBkYXRlZW52LmMNCkBAIC0wLDAgKzEsNDUgQEANCisvKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGVu c2lsaWNhIEluYy4gIEFMTCBSSUdIVFMgUkVTRVJWRUQuDQorDQorICAgUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICAg bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zDQorICAgYXJlIG1ldDoNCisNCisgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAgICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisN CisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlDQorICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcNCisgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQNCisgICAgICB3aXRoIHRoZSBkaXN0cmli dXRpb24uDQorDQorICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICAgTElNSVRFRCBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCisg ICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT SEFMTA0KKyAgIFRFTlNJTElDQSBJTkNPUlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwNCisgICBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUw0KKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KKyAgIEhPV0VW RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwNCisgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpDQorICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KKyAgIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4gICovDQorDQorI2luY2x1ZGUgPHh0ZW5zYS9jb25maWcvY29yZS1pc2Eu aD4NCisNCisjaWYgWENIQUxfSEFWRV9GUCB8fCBYQ0hBTF9IQVZFX0RGUA0KKyNpbmNsdWRlIDxm ZW52Lmg+DQorDQoraW50IGZldXBkYXRlZW52KGNvbnN0IGZlbnZfdCAqIGVudnApDQorew0KKyAg ZmVudl90IGN1cnJlbnQ7DQorICBpbnQgZXJyID0gZmVnZXRlbnYgKCZjdXJyZW50KTsNCisgIGlm IChlcnIgIT0gMCkNCisgICAgcmV0dXJuIGVycjsNCisgIGVyciA9IGZlc2V0ZW52IChlbnZwKTsN CisgIGlmIChlcnIgIT0gMCkNCisgICAgcmV0dXJuIGVycjsNCisgIHJldHVybiBmZXJhaXNlZXhj ZXB0IChjdXJyZW50KTsNCit9DQorDQorI2VuZGlmDQotLSANCjIuMzQuMQ0KDQo=