From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id /YKxKHAJVWp8YAYAWB0awg (envelope-from ) for ; Mon, 13 Jul 2026 11:51:12 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=TmOAxA79; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 950051E09B; Mon, 13 Jul 2026 11:51:12 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A72291E033 for ; Mon, 13 Jul 2026 11:51:10 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AE2544BA23CD for ; Mon, 13 Jul 2026 15:51:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AE2544BA23CD Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=TmOAxA79 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) by sourceware.org (Postfix) with ESMTPS id 421834BA23C8 for ; Mon, 13 Jul 2026 15:50:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 421834BA23C8 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 421834BA23C8 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.18 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1783957840; cv=fail; b=iXysu6h1mD9px1IUAQR6yHAxNjypfPeIhUNlmgwLNyEHHHgTdVbJ0/EIeojcE00tVK6cufa24MBFlx5q6OgMtcOiwPherlSS3vUXJOTj+ASF8G/0fZ2XTU6yGiEU32ExI31KEtbZFGRLY9GwtPAPeuhM95M4KUZHykmvNXXYabk= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1783957840; c=relaxed/simple; bh=PPatwwEHL7d71YVV/exJoO/OZgZWg55x8ROui9WQ+Ws=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=YSIBS3HHLfCFUTUb9crsFa0XHnAg4jK8s4mljYDSuoXxeUs5e27ZwEvoxWNCOlRlNb3fCaKRA9TK9O9bk71Tb47/Wq3fHn8g+WwGXqfG5RqQzCJcq89rM3pfKsE9XRXeJd5yFtSNPsKiraMh1z4r66J1/Z3vAb5j6W+oST3TPIc= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=TmOAxA79 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 421834BA23C8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1783957840; x=1815493840; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=PPatwwEHL7d71YVV/exJoO/OZgZWg55x8ROui9WQ+Ws=; b=TmOAxA79URDOmtH3WRqINlGo08cUqcAytJE/3XYJZWuXRe8DxUQx+q9q Rtw0WqxLzWPBDeowoy64Cu+wB4bXnCxT0o1l7uCYmYr9Ff9NDmmHGbPxB EBbe5GIW316pMpAxR8QHB2a9m0KwcyWF2bl46JnUNRMRjReYH+sET0B4d YPCRNWO14lw79qnc57NZSAy+gKD9s/DFeoKgzVqQnFGUjCT6ORQCYPOUF j/kxCSlG8kWXd6OrbibQfMxz6I9Yja+2eDsvcOqJJtrZWProEj5gE6AUN YP8q/sG3+u/wAwrbDxRCl8rS/sdPCdwX6YCdJ9MTj5UVGZ7jOoJdLdhfb w==; X-CSE-ConnectionGUID: Vo803JcNSEGQtiVXDt1fNA== X-CSE-MsgGUID: ehUNjPuqRICjanAmb4SVQg== X-IronPort-AV: E=McAfee;i="6800,10657,11841"; a="83687249" X-IronPort-AV: E=Sophos;i="6.25,154,1779174000"; d="scan'208";a="83687249" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jul 2026 08:50:36 -0700 X-CSE-ConnectionGUID: ECkRPhGvTG+ZVIDq17vWRQ== X-CSE-MsgGUID: NYxHke8GTsSSApuNCO/Q0Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,154,1779174000"; d="scan'208";a="251152520" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by fmviesa006.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jul 2026 08:50:36 -0700 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.43; Mon, 13 Jul 2026 08:50:35 -0700 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.43 via Frontend Transport; Mon, 13 Jul 2026 08:50:35 -0700 Received: from SJ2PR03CU001.outbound.protection.outlook.com (52.101.43.34) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.43; Mon, 13 Jul 2026 08:50:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F8mJ9ayqmqi5rQAbJDcPEqHllJ7aOac/itV5w6CzyEM/0H0mAQlkVQ9JrH5iLmWL7uT/8LTP/yTgv46PZG4hHcaWzV+IH3vgm8BmM5/EBKPGgbTYbAd4g4BTlDE8dcBKZ3RnlGr1Lzccfq9OM0edFjROamNBZIkanysBANlD7UDMw0+A4qyozo2gj/qx3DxQQKwcuptSP+eSad1AwrlWeYtJj8clWEBzlZlYQn12ungl4di37e5A6JLm8ivNxjfb3iZIdgWCMVTITCGMkB29ivtz2ImVdxoGUZFayrTL8WUFcFgZZfCjaNtnyQ4Png0qq2YbNDHeRPE2ZB9uriolYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UB1K07Cx/NPL37JSykwDW52T43D6Eq7g8dl+E4SA6Q8=; b=bym1b/qzgBCLSo8Z9J6E4yScNTLkG/RRcEDPoJfmJoj2okappd9a226HjXUYPIXt+7l4B+NhgN8os5XF5sBvfxyfriskjO9oxfUMQOBqUko1BQ2agGb/2RSrY/sHY1nyzKn+4CYxNFXWmI7hAuZN+T6/4pVYO59P0amjGJD5v2Z4S7AbqY35UocZLH/Ld1FUch6tUQn/W9NrylWdRdmLPajwHv2yrmDkXFcKFY1FnQMocjsRqFGMnoF2MciADmqVUYTjdRx8+yHa90PYU4tykQKyd6fmTzIAVMjxlZO1XrkE6AV4yURXxw8v07CTZ0K+DC669o6ARc1v9iqaSa700Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by IA0PR11MB7355.namprd11.prod.outlook.com (2603:10b6:208:433::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 15:50:33 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%4]) with mapi id 15.21.0202.018; Mon, 13 Jul 2026 15:50:33 +0000 From: "Schimpe, Christina" To: Matthieu Longo , "gdb-patches@sourceware.org" CC: Luis Machado , Luis Machado , Andrew Burgess , "Yury Khrustalev" , Pedro Alves , "Tom Tromey" Subject: RE: [PATCH v1 05/10] gdb: introduce helper class file_reader_t Thread-Topic: [PATCH v1 05/10] gdb: introduce helper class file_reader_t Thread-Index: AQHdDiiJVRwfP6VP6kivBuZ5eZrOubZnABjA Date: Mon, 13 Jul 2026 15:50:33 +0000 Message-ID: References: <20260707154900.94542-1-matthieu.longo@arm.com> <20260707154900.94542-6-matthieu.longo@arm.com> In-Reply-To: <20260707154900.94542-6-matthieu.longo@arm.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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7638:EE_|IA0PR11MB7355:EE_ x-ms-office365-filtering-correlation-id: 0ea11685-e0b3-44de-bdad-08dee0f67937 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|11063799006|4143699003|38070700021|56012099006|6133799003; x-microsoft-antispam-message-info: nEaXU0ebEh89FNpi6IXZ6diTD66aWrecD3cnwg+6h3h5DHL4+TQD7g1JHQFeQn3MxODyhPr+fZmIi8mnMJUfEFNm6wuHxHu/Hn209X2lD9mM7ZnSDsME2ltSRgjm3kKydyCQxi0zVy5bQQ/my88p5EXd8BPZB33kIBDFkbg+sFcr6wQq4I8rHY4AEN4KPH6tKj97lXEas/pKwK42yqnk7fibjLMWs80Wmoo7KkMcG8FkM8Vyxp7+ElESvvLxlgIdu7GIGOo2Rh+vLQL9xVgBNDxapSxsXECdBwAWtP+PK/N5tQ5iUv13AnJ3VQlDHx/0MH2LU4qnNqRYtLNMTade3II1pHVZATlEn3xw1+GP6YU/wJkQpP/intI9Wqi00uh6bWQa5iekb08HAHlwiHTjcbqN0qkyakudxRajizRDACcFxtVLBI/n+5UJs1DsQf3CrRNTO9YYTwNWtoPC++d+8ej8W5y4LkROVrp+zWmlKRN9m7RDa3pYAgT5rXf/xvM5OI8pYjSZqDJSXg1aYUBfzCamAlA0JXhnQOaq4pP9/LCqlhXJpazEX/JyWcmgmtJ9jJY5rK+7H0Jqct2jV1/ONASC1WQVBMzYNHSqgCFYeWZfu+UrfG4oS35/G/aZKMt/P4BEciT+v4TVWs1Wm5ZINj1PHLDqkZ/sx7q8axI6M7iz8ejDe65m7PGGvfJpjf+1Bg/LCRKcUCD0svPnCjEsgIwbOLePLdxYjwCGxuinFHM= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(11063799006)(4143699003)(38070700021)(56012099006)(6133799003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dXkwNjloaFB1NzhXN2o1SXRMeHhJOFdNbG1VOFdwM0FYaHFmRTZLeEI4ZTJZ?= =?utf-8?B?S2t0SkNmUTdQMTMxSmRPSEN4Z3dSdDk4aEx3UHZpYXVhemRSRmtZaVA4Tnpv?= =?utf-8?B?VnM4SHlzZjNZTzYvYXdNblVlbnFxOXBhaVB4TlVPRnRYV2c0UStvenpSZWhD?= =?utf-8?B?YU52S0JlQVQzcENFTUZLWHNCMEg1c25mUmViNmlSV3BjN1U3OGZHLzJqSXMw?= =?utf-8?B?NjJtTGtxeER0SU93UzF0SjMxcDhCdy9WZHhDbklkUzB5anJ6bUMxdXJUOGQz?= =?utf-8?B?V25HdzhlOUEzTnU5YTBXY1RRSFJFalhVdHJaa3dxRFFQSjdkeU9qVHF1VzBK?= =?utf-8?B?T1V2dlhlNldhUkF0UlhNeGFQU3k2ZStjTWVOUUFyaVlXeFpIdjd2SUxucEVT?= =?utf-8?B?U1ltVVViTUpKMkJidFJJSjFTUC82K3VNSW5YdVFGYjRPZWtFSTlRYWhBZFhu?= =?utf-8?B?N0hHOHVlendHZGljSnBoTFJ0OVhxcGJoY0tTZ05NVDJEdjN1Nnpja3U1eUxo?= =?utf-8?B?QVRNbzFtYjI5eVdXcnpuL0Fqb2VDYXlQZFkvWmgxL3hEMjdnMnJhSjM1dnpP?= =?utf-8?B?aDUzWWpuQXdkMnM2QzVqQlN5U2c4bTFYWkhBOXRWQmllZWVKYkdrVDhtRTUz?= =?utf-8?B?MGJKLytSeC9rTlFOaFpOYlVoVzBWUzlmWnNVSEltSnNIMEI1VFBVUzdoSjlo?= =?utf-8?B?YysvVXhBR1piTCtFRjc4eG5LeTAvZVBZU3FRUm5zT3A0eVp5TXJYWHgwbkdi?= =?utf-8?B?WHEvdWwwOFU2YlRFRHhpaDJUWGMzb3NLUjFxWHZURFRRNXowYUhFaHZxMk0y?= =?utf-8?B?VXhvdnRZaExGbjlwM2p6dWw1UUtuMkxndWpEdnVYcVMvdjZDSzN6UUVWd1RR?= =?utf-8?B?aEdYQXNsbWQ5cW5XNEFXVUh3Q0xkanpqdWc2OWRUaWRrM3RNUi9VMjdkWUtU?= =?utf-8?B?RWZjSXp6N2E5bGc1U0h6YkZSWnp5bTRRdWc3MktSK1NGOXJlMWViWElOVmxT?= =?utf-8?B?c3RrbmpLVHF2MDFBcFVnRGE4RUlDM0RsVWtaRVFraWtHZ1NkcmNiV2NYYUdJ?= =?utf-8?B?Y09KUTlTeEhpeUNJbm9KNmJXZThDK2x6UzNSTEVXQ3JDR1dhamdUU2ZCZjJB?= =?utf-8?B?NEVBc2NWUHNXNWREWXVUb3NzVnNlN0t6NFZmSWlUMTh2ckpKaFZ3YUpjZlI0?= =?utf-8?B?Qm9BQUZHdC81cVp2ZDZnUzJ1Vkg0SVE4ZGwydDVHUm1VdVlBZkJTR3pGQ1B6?= =?utf-8?B?aHEzaTZWUUlKRk5FVHVCeGxwMTVjV3FzekkzQ3BKWU5jK1pHbVJtYlZLRDR6?= =?utf-8?B?ZStEZzNNNXdZdENmQ092Zzd3akYySVhwbjhSaElmRWRIRDJoZEhYcHhTZEZG?= =?utf-8?B?NGVZT2ZoVHR1aTRmWmVWQmdndms2eWp2UUlwUFdhdktHeWtXQkl6SHdKYWQw?= =?utf-8?B?VkVsRms5UlErSXRnRkphRmtUeWR2WXoxTEJQTjhTWjFqSEwwRHhnb1o0dmds?= =?utf-8?B?aHNCK3pxdFoyVXV1aUNicUFGbytPMlZlUXdiVkp3UDJFejdWNHRubGN2VUJk?= =?utf-8?B?dHljWVp6UkltcDhuN0NaR0RkT0dBdmR0Vm5Lc2pTYW0vQ3FiSXZheURXOEZ2?= =?utf-8?B?T1dYc1prcHk2Q29VOEZCaTJNNmRZQ1VYbFBCSUdhcndjZUhKY1dUY3VNU2Ux?= =?utf-8?B?RndIUVhaeWNtVkI3ZVJtNkEzTDBpN2pUUVlSbnA3ZVh4VG9yS1FoQ3c4U0Fh?= =?utf-8?B?T1VvMk9GUlpnUGE4MG5oQnFIQ0VBbDM0UHpOWTN3OHFHQzJITWhHdDZCdGMx?= =?utf-8?B?NEFYZERJT3Z5Qzl0STdNcWROSjBtZVRCdlhaV2MvUkYvNEpCUG5yQlhuSlVY?= =?utf-8?B?RHB0SndrdVFVZFNxdnVOdWx2bnhqUzNBSDM5azJ5SnFFSkNHOVRsMjI3WVlH?= =?utf-8?B?d2prd2NaZ0Q0dlExeXJ1QTQvN0JKTWdUbmZVUHU1YmpCWkJzZThRSU94T3gy?= =?utf-8?B?RlZPTFhxN0dIYlBjejJhQkZRNmx0Kzg1RkJVMjNRdmpkS2daY1JLVlp0OTRs?= =?utf-8?B?YnJ5RVVzb3ZSSWNhY09CQjRHZ1Jha3JGLys5bHk1L0tqSFBNRDA3eFY2bnh3?= =?utf-8?B?R2R4UDM2b2ZDOEwxdDA1bG9YT0ZlakJtYlhWNXpSSkhKR2pGU1ZSQlB3R2Fm?= =?utf-8?B?am5KZHcrTmVoM1BUQktselBPZlh6MEJJQ04xR3dUYXJhRnZqbDVMMGFYQWdy?= =?utf-8?B?dEVxbk13WDZSeUJkWDRYK0svZWQ1UHJnM3M3M3o1V0g4Zk10ZHhrbGwwMUt4?= =?utf-8?B?V0ZUUzJTZXJiQzYyRW5FUE02Rm1zc003SjdaT1BGazl6M1RKZGdHUT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: LZhq+um6daw2iDSszuwgn466Z4pBA2hftEI9fYBXS/7kcj50a6MAxYohlnAhCEVb7ld2AXf/rqGicKHqo9RR0JwFBTGt8h+bSAH8icHFwBoWIRclG+fpJa4VzSvJUiog/lUXx2YpEXYopLwpJDRK1FGN0w2NpUjUxGI+4SKYRpcWuKoIOCL6A8SqvqeUMgFm4aMhUI7n4KgFFH2qbtKT/zmeoQxr1+LqG4RX8hbMVEixv4/yu6uLg5rbylIqaCux+zB/MFvt4y0UnOXA9OxUd0anlwClhqqfScQEtTuXRaALM0p+dOs09gcgYWyuoHSa7hJHCc4aVFITzQvRE5+gsA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ea11685-e0b3-44de-bdad-08dee0f67937 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jul 2026 15:50:33.2885 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zFM4Dr2x4pkUnyBLl5ItjGG/cwvbIbJjVlvs6ntGkRi3ClUVZ1lIRNVSiLeSO3/r92Fr2k6MriVNal9PCoCdJK7ptMMuevqjK17BH0jdhAU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7355 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org SGkgTWF0dGhpZXUsDQoNClBsZWFzZSBmaW5kIG15IGZlZWRiYWNrIGJlbG93Lg0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1hdHRoaWV1IExvbmdvIDxtYXR0aGlldS5s b25nb0Bhcm0uY29tPg0KPiBTZW50OiBEaWVuc3RhZywgNy4gSnVsaSAyMDI2IDE3OjQ5DQo+IFRv OiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiBDYzogTHVpcyBNYWNoYWRvIDxsdWlzLm1h Y2hhZG9AYW1kLmNvbT47IEx1aXMgTWFjaGFkbw0KPiA8bHVpcy5tYWNoYWRvLmZvc3NAZ21haWwu Y29tPjsgQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+Ow0KPiBZdXJ5IEtocnVz dGFsZXYgPHl1cnkua2hydXN0YWxldkBhcm0uY29tPjsgUGVkcm8gQWx2ZXMNCj4gPHBlZHJvQHBh bHZlcy5uZXQ+OyBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT47IE1hdHRoaWV1IExvbmdvDQo+ IDxtYXR0aGlldS5sb25nb0Bhcm0uY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjEgMDUvMTBdIGdk YjogaW50cm9kdWNlIGhlbHBlciBjbGFzcyBmaWxlX3JlYWRlcl90DQo+IA0KPiBXcmFwIGFsbCB0 aGUgYm9pbGVycGxhdGUgY29kZSByZXF1aXJlZCB0byByZWFkIGEgZmlsZSBpbiBhIG5ldyBoZWxw ZXINCj4gY2xhc3M6IGZpbGVfcmVhZGVyX3QuIFRoZSBjbGFzcyBvd25zIHRoZSBmaWxlIGNvbnRl bnRzIHRvZ2V0aGVyIHdpdGggdGhlIGZpbGUNCj4gcGF0aCwgYW5kIHByb3ZpZGVzIGNvbnZlbmll bnQgYWNjZXNzb3JzIGZvciB0aGUgZGF0YSwgc2l6ZSBhbmQgdHlwZWQgdmlld3MuIEl0DQo+IHN1 cHBvcnRzIGJvdGggbnVsbC10ZXJtaW5hdGVkIHRleHQgZmlsZXMgYW5kIGJpbmFyeSBmaWxlcy4N Cj4gDQo+IFRoaXMgaGVscGVyIGVsaW1pbmF0ZXMgcmVwZWF0ZWQgY2FsbHMgdG8gdGFyZ2V0X2Zp bGVpb19yZWFkX3N0cmFsbG9jIGFuZA0KPiB0YXJnZXRfZmlsZWlvX3JlYWRfYWxsb2MsIHJlbW92 ZSBleHBsaWNpdCBtZW1vcnkgbWFuYWdlbWVudCB3aXRoDQo+IGdkYjo6dW5pcXVlX3htYWxsb2Nf cHRyLCBhbmQgc2ltcGxpZmllcyB0aGUgY2FzdGluZyBsb2dpYyB3aGVuIHdvcmtpbmcgd2l0aA0K PiBiaW5hcnkgZGF0YS4NCj4gDQo+IFRoZSBwYXRjaCBjb252ZXJ0cyBzb21lIG9mIHRoZSBleGlz dGluZyBMaW51eCwgQU1ENjQsIGFuZCBTUEFSQyBjb2RlIHRoYXQNCj4gcmVhZHMgZmlsZXMgZnJv bSAvcHJvYyB0byB1c2UgZmlsZV9yZWFkZXJfdC4NCj4gLS0tDQo+ICBnZGIvYW1kNjQtbGludXgt dGRlcC5jIHwgIDEyICsrLS0tDQo+ICBnZGIvbGludXgtdGRlcC5jICAgICAgIHwgMTAyICsrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBnZGIvc3BhcmM2NC10ZGVw LmMgICAgIHwgIDEyICsrLS0tDQo+ICBnZGIvdGFyZ2V0LmggICAgICAgICAgIHwgIDY1ICsrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25z KCspLCA3NCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgt dGRlcC5jIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYyBpbmRleA0KPiBhNWFjMjY2NTRjZi4uZTc4 NDE5MTdlYWYgMTAwNjQ0DQo+IC0tLSBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMNCj4gKysrIGIv Z2RiL2FtZDY0LWxpbnV4LXRkZXAuYw0KPiBAQCAtMTg1MSwxNCArMTg1MSwxMSBAQCBhbWQ2NF9s aW51eF9sYW1fdW50YWdfbWFzayAoKQ0KPiAgICBpZiAoaW5mLT5mYWtlX3BpZF9wKQ0KPiAgICAg IHJldHVybiBERUZBVUxUX1RBR19NQVNLOw0KPiANCj4gLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmls ZW5hbWUgPSBzdHJpbmdfcHJpbnRmICgiL3Byb2MvJWQvc3RhdHVzIiwgaW5mLT5waWQpOw0KPiAt ICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBzdGF0dXNfZmlsZQ0KPiAtICAgID0gdGFy Z2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChudWxscHRyLCBmaWxlbmFtZS5jX3N0ciAoKSk7DQo+ IC0NCj4gLSAgaWYgKHN0YXR1c19maWxlID09IG51bGxwdHIpDQo+ICsgIGZpbGVfcmVhZGVyX3Q8 Y2hhcj4gcHJvY19zdGF0dXMgKHN0cmluZ19wcmludGYgKCIvcHJvYy8lZC9zdGF0dXMiLA0KPiAr IGluZi0+cGlkKSk7ICBpZiAoIXByb2Nfc3RhdHVzKQ0KPiAgICAgIHJldHVybiBERUZBVUxUX1RB R19NQVNLOw0KPiANCj4gLSAgc3RkOjpzdHJpbmdfdmlldyBzdGF0dXNfZmlsZV92aWV3IChzdGF0 dXNfZmlsZS5nZXQgKCkpOw0KPiArICBzdGQ6OnN0cmluZ192aWV3IHN0YXR1c19maWxlX3ZpZXcg KHByb2Nfc3RhdHVzLmRhdGEgKCkpOw0KPiAgICBjb25zdGV4cHIgc3RkOjpzdHJpbmdfdmlldyB1 bnRhZ19tYXNrX3N0ciA9ICJ1bnRhZ19tYXNrOlx0IjsNCj4gICAgY29uc3Qgc2l6ZV90IGZvdW5k ID0gc3RhdHVzX2ZpbGVfdmlldy5maW5kICh1bnRhZ19tYXNrX3N0cik7DQo+ICAgIGlmIChmb3Vu ZCAhPSBzdGQ6OnN0cmluZzo6bnBvcykNCj4gQEAgLTE4NzAsNyArMTg2Nyw4IEBAIGFtZDY0X2xp bnV4X2xhbV91bnRhZ19tYXNrICgpDQo+ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0 ID0gc3RkOjpzdHJ0b3VsIChzdGFydCwgJmVuZHB0ciwgMCk7DQo+ICAgICAgICBpZiAoZXJybm8g IT0gMCB8fCBlbmRwdHIgPT0gc3RhcnQpDQo+ICAJZXJyb3IgKF8oIkZhaWxlZCB0byBwYXJzZSB1 bnRhZ19tYXNrIGZyb20gZmlsZSAlcHMuIiksDQo+IC0JICAgICAgIHN0eWxlZF9zdHJpbmcgKGZp bGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwgZmlsZW5hbWUuY19zdHIgKCkpKTsNCj4gKwkgICAgICAg c3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLA0KPiArCQkJICAgICAgcHJv Y19zdGF0dXMuY19maWxlcGF0aCAoKSkpOw0KPiANCj4gICAgICAgIHJldHVybiByZXN1bHQ7DQo+ ICAgICAgfQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVw LmMgaW5kZXgNCj4gYjg5ZjRlZTA3MTcuLmExMmE2OWYwM2EyIDEwMDY0NA0KPiAtLS0gYS9nZGIv bGludXgtdGRlcC5jDQo+ICsrKyBiL2dkYi9saW51eC10ZGVwLmMNCj4gQEAgLTE2NjEsNiArMTY2 MSwxMiBAQCBwYXJzZV9zbWFwc19kYXRhIChjb25zdCBjaGFyICpkYXRhLA0KPiAgICByZXR1cm4g c21hcHM7DQo+ICB9DQo+IA0KPiArc3RhdGljIHN0ZDo6dmVjdG9yPHN0cnVjdCBzbWFwc19kYXRh Pg0KPiArcGFyc2Vfc21hcHNfZGF0YSAoY29uc3QgZmlsZV9yZWFkZXJfdDxjaGFyPiAmZnJlYWRl cikgew0KPiArICByZXR1cm4gcGFyc2Vfc21hcHNfZGF0YSAoZnJlYWRlci5kYXRhICgpLCBmcmVh ZGVyLmZpbGVwYXRoICgpKTsgfQ0KPiArDQo+ICAvKiBIZWxwZXIgdGhhdCBjaGVja3MgaWYgYW4g YWRkcmVzcyBpcyBpbiBhIG1lbW9yeSB0YWcgcGFnZSBmb3IgYSBsaXZlDQo+ICAgICBwcm9jZXNz LiAgKi8NCj4gDQo+IEBAIC0xNjcyLDE3ICsxNjc4LDEzIEBAIGxpbnV4X3Byb2Nlc3NfYWRkcmVz c19pbl9tZW10YWdfcGFnZQ0KPiAoQ09SRV9BRERSIGFkZHJlc3MpDQo+IA0KPiAgICBwdGlkX3Qg cHRpZCA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPmZpcnN0X2FsaXZlX3RocmVhZCAoKTsNCj4gDQo+ IC0gIHN0ZDo6c3RyaW5nIHNtYXBzX2ZpbGUgPSBzdHJpbmdfcHJpbnRmICgiL3Byb2MvJWxkL3Nt YXBzIiwgcHRpZC5sd3AgKCkpOw0KPiAtDQo+IC0gIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNo YXI+IGRhdGENCj4gLSAgICA9IHRhcmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoTlVMTCwgc21h cHNfZmlsZS5jX3N0ciAoKSk7DQo+IC0NCj4gLSAgaWYgKGRhdGEgPT0gbnVsbHB0cikNCj4gKyAg ZmlsZV9yZWFkZXJfdDxjaGFyPiBzbWFwc19mcmVhZGVyDQo+ICsgICAgKHN0cmluZ19wcmludGYg KCIvcHJvYy8lbGQvc21hcHMiLCBwdGlkLmx3cCAoKSkpOyAgaWYNCj4gKyAoIXNtYXBzX2ZyZWFk ZXIpDQo+ICAgICAgcmV0dXJuIGZhbHNlOw0KPiANCj4gICAgLyogUGFyc2UgdGhlIGNvbnRlbnRz IG9mIHNtYXBzIGludG8gYSB2ZWN0b3IuICAqLw0KPiAtICBzdGQ6OnZlY3RvcjxzdHJ1Y3Qgc21h cHNfZGF0YT4gc21hcHMNCj4gLSAgICA9IHBhcnNlX3NtYXBzX2RhdGEgKGRhdGEuZ2V0ICgpLCBz bWFwc19maWxlKTsNCj4gKyAgc3RkOjp2ZWN0b3I8c3RydWN0IHNtYXBzX2RhdGE+IHNtYXBzID0g cGFyc2Vfc21hcHNfZGF0YQ0KPiArIChzbWFwc19mcmVhZGVyKTsNCj4gDQo+ICAgIGZvciAoY29u c3Qgc21hcHNfZGF0YSAmbWFwIDogc21hcHMpDQo+ICAgICAgew0KPiBAQCAtMTc0NiwxNyArMTc0 OCwxMyBAQCBsaW51eF9maW5kX21lbW9yeV9yZWdpb25zX2Z1bGwgKHN0cnVjdA0KPiBnZGJhcmNo ICpnZGJhcmNoLA0KPiANCj4gICAgaWYgKHVzZV9jb3JlZHVtcF9maWx0ZXIpDQo+ICAgICAgew0K PiAtICAgICAgc3RkOjpzdHJpbmcgY29yZV9kdW1wX2ZpbHRlcl9uYW1lDQo+IC0JPSBzdHJpbmdf cHJpbnRmICgiL3Byb2MvJWxkL2NvcmVkdW1wX2ZpbHRlciIsIHB0aWQubHdwICgpKTsNCj4gLQ0K PiAtICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gY29yZWR1bXBmaWx0ZXJkYXRh DQo+IC0JPSB0YXJnZXRfZmlsZWlvX3JlYWRfc3RyYWxsb2MgKE5VTEwsIGNvcmVfZHVtcF9maWx0 ZXJfbmFtZS5jX3N0ciAoKSk7DQo+IC0NCj4gLSAgICAgIGlmIChjb3JlZHVtcGZpbHRlcmRhdGEg IT0gTlVMTCkNCj4gKyAgICAgIGZpbGVfcmVhZGVyX3Q8Y2hhcj4gY29yZWR1bXBfZmlsdGVyX2Zy ZWFkZXINCj4gKwkoc3RyaW5nX3ByaW50ZiAoIi9wcm9jLyVsZC9jb3JlZHVtcF9maWx0ZXIiLCBw dGlkLmx3cCAoKSkpOw0KPiArICAgICAgaWYgKGNvcmVkdW1wX2ZpbHRlcl9mcmVhZGVyKQ0KPiAg CXsNCj4gIAkgIHVuc2lnbmVkIGludCBmbGFnczsNCj4gDQo+IC0JICBzc2NhbmYgKGNvcmVkdW1w ZmlsdGVyZGF0YS5nZXQgKCksICIleCIsICZmbGFncyk7DQo+ICsJICBzc2NhbmYgKGNvcmVkdW1w X2ZpbHRlcl9mcmVhZGVyLmRhdGEgKCksICIleCIsICZmbGFncyk7DQo+ICAJICBmaWx0ZXJmbGFn cyA9IChlbnVtIGZpbHRlcl9mbGFnKSBmbGFnczsNCj4gIAl9DQo+ICAgICAgfQ0KPiBAQCAtMjI1 OSw5ICsyMjU3LDYgQEAgbGludXhfY29yZWZpbGVfcGFyc2VfZXhlY19jb250ZXh0IChzdHJ1Y3Qg Z2RiYXJjaA0KPiAqZ2RiYXJjaCwgYmZkICpjYmZkKSAgc3RhdGljIGJvb2wgIGxpbnV4X2ZpbGxf cHJwc2luZm8gKHN0cnVjdA0KPiBlbGZfaW50ZXJuYWxfbGludXhfcHJwc2luZm8gKnApICB7DQo+ IC0gIC8qIFRoZSBmaWxlbmFtZSB3aGljaCB3ZSB3aWxsIHVzZSB0byBvYnRhaW4gc29tZSBpbmZv IGFib3V0IHRoZSBwcm9jZXNzLg0KPiAtICAgICBXZSB3aWxsIGJhc2ljYWxseSB1c2UgdGhpcyB0 byBzdG9yZSB0aGUgYC9wcm9jL1BJRC9GSUxFTkFNRScgZmlsZS4gICovDQo+IC0gIGNoYXIgZmls ZW5hbWVbMTAwXTsNCj4gICAgLyogVGhlIGJhc2VuYW1lIG9mIHRoZSBleGVjdXRhYmxlLiAgKi8N Cj4gICAgY29uc3QgY2hhciAqYmFzZW5hbWU7DQo+ICAgIC8qIFRlbXBvcmFyeSBidWZmZXIuICAq Lw0KPiBAQCAtMjI4NSwyMyArMjI4MCwyNCBAQCBsaW51eF9maWxsX3BycHNpbmZvIChzdHJ1Y3QN Cj4gZWxmX2ludGVybmFsX2xpbnV4X3BycHNpbmZvICpwKQ0KPiANCj4gICAgLyogT2J0YWluaW5n IFBJRCBhbmQgZmlsZW5hbWUuICAqLw0KPiAgICBwaWQgPSBpbmZlcmlvcl9wdGlkLnBpZCAoKTsN Cj4gLSAgeHNucHJpbnRmIChmaWxlbmFtZSwgc2l6ZW9mIChmaWxlbmFtZSksICIvcHJvYy8lZC9j bWRsaW5lIiwgKGludCkgcGlkKTsNCj4gLSAgLyogVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcHJvZ3Jh bSB3aGljaCBnZW5lcmF0ZWQgdGhlIGNvcmVmaWxlLiAgKi8NCj4gLSAgZ2RiX2J5dGUgKmJ1ZiA9 IG51bGxwdHI7DQo+IC0gIExPTkdFU1QgYnVmX2xlbiA9IHRhcmdldF9maWxlaW9fcmVhZF9hbGxv YyAobnVsbHB0ciwgZmlsZW5hbWUsICZidWYpOw0KPiAtICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0 cjxjaGFyPiBmbmFtZSAoKGNoYXIgKilidWYpOw0KPiArICBmaWxlX3JlYWRlcl90PGdkYl9ieXRl PiBjbWRsaW5lX2ZyZWFkZXINCj4gKyAgICAoc3RyaW5nX3ByaW50ZiAoIi9wcm9jLyVkL2NtZGxp bmUiLCBwaWQpKTsgIGlmICghY21kbGluZV9mcmVhZGVyKQ0KPiArICAgIHJldHVybiBmYWxzZTsN Cj4gDQo+IC0gIGlmIChidWZfbGVuIDwgMSB8fCBmbmFtZS5nZXQgKCkgPT0gbnVsbHB0ciB8fCBm bmFtZS5nZXQgKClbMF0gPT0gJ1wwJykNCj4gKyAgLyogVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcHJv Z3JhbSB3aGljaCBnZW5lcmF0ZWQgdGhlIGNvcmVmaWxlLiAgKi8NCj4gKyBnZGI6OmFycmF5X3Zp ZXc8Y2hhcj4gY21kbGluZSA9IGNtZGxpbmVfZnJlYWRlci5jYXN0X3ZpZXc8Y2hhcj4gKCk7DQo+ ICsgaWYgKGNtZGxpbmUuc2l6ZSAoKSA8IDEgfHwgY21kbGluZVswXSA9PSAnXDAnKQ0KPiAgICAg IHsNCj4gICAgICAgIC8qIE5vIHByb2dyYW0gbmFtZSB3YXMgcmVhZCwgc28gd2Ugd29uJ3QgYmUg YWJsZSB0byByZXRyaWV2ZSBtb3JlDQo+ICAJIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9jZXNz LiAgKi8NCj4gICAgICAgIHJldHVybiBmYWxzZTsNCj4gICAgICB9DQo+IC0gIGlmIChmbmFtZS5n ZXQgKClbYnVmX2xlbiAtIDFdICE9ICdcMCcpDQo+ICsgIGlmIChjbWRsaW5lW2NtZGxpbmUuc2l6 ZSAoKSAtIDFdICE9ICdcMCcpDQo+ICAgICAgew0KPiAgICAgICAgd2FybmluZyAoXygidGFyZ2V0 IGZpbGUgJXMgIg0KPiAgCQkgImRvZXMgbm90IGNvbnRhaW4gYSB0cmFpbGluZyBudWxsIGNoYXJh Y3RlciIpLA0KPiAtCSAgICAgICBmaWxlbmFtZSk7DQo+ICsJICAgICAgIGNtZGxpbmVfZnJlYWRl ci5jX2ZpbGVwYXRoICgpKTsNCj4gICAgICAgIHJldHVybiBmYWxzZTsNCj4gICAgICB9DQo+IA0K PiBAQCAtMjMxMSwyNyArMjMwNywyMyBAQCBsaW51eF9maWxsX3BycHNpbmZvIChzdHJ1Y3QNCj4g ZWxmX2ludGVybmFsX2xpbnV4X3BycHNpbmZvICpwKQ0KPiAgICBwLT5wcl9waWQgPSBwaWQ7DQo+ IA0KPiAgICAvKiBDb3B5aW5nIHRoZSBwcm9ncmFtIG5hbWUuICBPbmx5IHRoZSBiYXNlbmFtZSBt YXR0ZXJzLiAgKi8NCj4gLSAgYmFzZW5hbWUgPSBsYmFzZW5hbWUgKGZuYW1lLmdldCAoKSk7DQo+ ICsgIGJhc2VuYW1lID0gbGJhc2VuYW1lIChjbWRsaW5lLmRhdGEgKCkpOw0KPiAgICBzdHJuY3B5 IChwLT5wcl9mbmFtZSwgYmFzZW5hbWUsIHNpemVvZiAocC0+cHJfZm5hbWUpIC0gMSk7DQo+ICAg IHAtPnByX2ZuYW1lW3NpemVvZiAocC0+cHJfZm5hbWUpIC0gMV0gPSAnXDAnOw0KPiANCj4gICAg Y29uc3Qgc3RkOjpzdHJpbmcgJmluZmFyZ3MgPSBjdXJyZW50X2luZmVyaW9yICgpLT5hcmdzICgp Ow0KPiANCj4gICAgLyogVGhlIGFyZ3VtZW50cyBvZiB0aGUgcHJvZ3JhbS4gICovDQo+IC0gIHN0 ZDo6c3RyaW5nIHBzYXJncyA9IGZuYW1lLmdldCAoKTsNCj4gKyAgc3RkOjpzdHJpbmcgcHNhcmdz ID0gY21kbGluZS5kYXRhICgpOw0KPiAgICBpZiAoIWluZmFyZ3MuZW1wdHkgKCkpDQo+ICAgICAg cHNhcmdzICs9ICcgJyArIGluZmFyZ3M7DQo+IA0KPiAgICBzdHJuY3B5IChwLT5wcl9wc2FyZ3Ms IHBzYXJncy5jX3N0ciAoKSwgc2l6ZW9mIChwLT5wcl9wc2FyZ3MpIC0gMSk7DQo+ICAgIHAtPnBy X3BzYXJnc1tzaXplb2YgKHAtPnByX3BzYXJncykgLSAxXSA9ICdcMCc7DQo+IA0KPiAtICB4c25w cmludGYgKGZpbGVuYW1lLCBzaXplb2YgKGZpbGVuYW1lKSwgIi9wcm9jLyVkL3N0YXQiLCAoaW50 KSBwaWQpOw0KPiAtICAvKiBUaGUgY29udGVudHMgb2YgYC9wcm9jL1BJRC9zdGF0Jy4gICovDQo+ IC0gIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IHByb2Nfc3RhdF9jb250ZW50cw0KPiAt ICAgID0gdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChOVUxMLCBmaWxlbmFtZSk7DQo+IC0g IGNoYXIgKnByb2Nfc3RhdCA9IHByb2Nfc3RhdF9jb250ZW50cy5nZXQgKCk7DQo+IC0NCj4gLSAg aWYgKHByb2Nfc3RhdCA9PSBOVUxMIHx8ICpwcm9jX3N0YXQgPT0gJ1wwJykNCj4gKyAgZmlsZV9y ZWFkZXJfdDxjaGFyPiBzdGF0X2ZyZWFkZXIgKHN0cmluZ19wcmludGYgKCIvcHJvYy8lZC9zdGF0 IiwNCj4gKyBwaWQpKTsgIGNoYXIgKnByb2Nfc3RhdCA9IHN0YXRfZnJlYWRlci5kYXRhICgpOyAg aWYgKCFzdGF0X2ZyZWFkZXIgfHwNCj4gKyAqcHJvY19zdGF0ID09ICdcMCcpDQo+ICAgICAgew0K PiAgICAgICAgLyogRGVzcGl0ZSBiZWluZyB1bmFibGUgdG8gcmVhZCBtb3JlIGluZm9ybWF0aW9u IGFib3V0IHRoZQ0KPiAgCSBwcm9jZXNzLCB3ZSByZXR1cm4gdHJ1ZSBoZXJlIGJlY2F1c2UgYXQg bGVhc3Qgd2UgaGF2ZSBpdHMgQEAgLQ0KPiAyNDAzLDEzICsyMzk1LDkgQEAgbGludXhfZmlsbF9w cnBzaW5mbyAoc3RydWN0IGVsZl9pbnRlcm5hbF9saW51eF9wcnBzaW5mbw0KPiAqcCkNCj4gDQo+ ICAgIC8qIEZpbmFsbHksIG9idGFpbmluZyB0aGUgVUlEIGFuZCBHSUQuICBGb3IgdGhhdCwgd2Ug cmVhZCBhbmQgcGFyc2UgdGhlDQo+ICAgICAgIGNvbnRlbnRzIG9mIHRoZSBgL3Byb2MvUElEL3N0 YXR1cycgZmlsZS4gICovDQo+IC0gIHhzbnByaW50ZiAoZmlsZW5hbWUsIHNpemVvZiAoZmlsZW5h bWUpLCAiL3Byb2MvJWQvc3RhdHVzIiwgKGludCkgcGlkKTsNCj4gLSAgLyogVGhlIGNvbnRlbnRz IG9mIGAvcHJvYy9QSUQvc3RhdHVzJy4gICovDQo+IC0gIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRy PGNoYXI+IHByb2Nfc3RhdHVzX2NvbnRlbnRzDQo+IC0gICAgPSB0YXJnZXRfZmlsZWlvX3JlYWRf c3RyYWxsb2MgKE5VTEwsIGZpbGVuYW1lKTsNCj4gLSAgY2hhciAqcHJvY19zdGF0dXMgPSBwcm9j X3N0YXR1c19jb250ZW50cy5nZXQgKCk7DQo+IC0NCj4gLSAgaWYgKHByb2Nfc3RhdHVzID09IE5V TEwgfHwgKnByb2Nfc3RhdHVzID09ICdcMCcpDQo+ICsgIGZpbGVfcmVhZGVyX3Q8Y2hhcj4gc3Rh dHVzX2ZyZWFkZXIgKHN0cmluZ19wcmludGYgKCIvcHJvYy8lZC9zdGF0dXMiLA0KPiArIHBpZCkp OyAgY2hhciAqcHJvY19zdGF0dXMgPSBzdGF0dXNfZnJlYWRlci5kYXRhICgpOyAgaWYNCj4gKyAo IXN0YXR1c19mcmVhZGVyIHx8ICpwcm9jX3N0YXR1cyA9PSAnXDAnKQ0KPiAgICAgIHsNCj4gICAg ICAgIC8qIFJldHVybmluZyB0cnVlIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGlu Zm9ybWF0aW9uLiAgKi8NCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiBAQCAtMjgwMiw5ICsyNzkw LDYgQEAgbGludXhfZ2RiX3NpZ25hbF90b190YXJnZXQgKHN0cnVjdCBnZGJhcmNoDQo+ICpnZGJh cmNoLCAgc3RhdGljIGJvb2wgIGxpbnV4X3ZzeXNjYWxsX3JhbmdlX3JhdyAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsDQo+IHN0cnVjdCBtZW1fcmFuZ2UgKnJhbmdlKSAgew0KPiAtICBjaGFyIGZp bGVuYW1lWzEwMF07DQo+IC0gIGxvbmcgcGlkOw0KPiAtDQo+ICAgIGlmICh0YXJnZXRfYXV4dl9z ZWFyY2ggKEFUX1NZU0lORk9fRUhEUiwgJnJhbmdlLT5zdGFydCkgPD0gMCkNCj4gICAgICByZXR1 cm4gZmFsc2U7DQo+IA0KPiBAQCAtMjg0Miw3ICsyODI3LDcgQEAgbGludXhfdnN5c2NhbGxfcmFu Z2VfcmF3IChzdHJ1Y3QgZ2RiYXJjaA0KPiAqZ2RiYXJjaCwgc3RydWN0IG1lbV9yYW5nZSAqcmFu Z2UpDQo+ICAgIGlmIChjdXJyZW50X2luZmVyaW9yICgpLT5mYWtlX3BpZF9wKQ0KPiAgICAgIHJl dHVybiBmYWxzZTsNCj4gDQo+IC0gIHBpZCA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnBpZDsNCj4g KyAgbG9uZyBwaWQgPSBjdXJyZW50X2luZmVyaW9yICgpLT5waWQ7DQo+IA0KPiAgICAvKiBOb3Rl IHRoYXQgcmVhZGluZyAvcHJvYy9QSUQvdGFzay9QSUQvbWFwcyAoMSkgaXMgbXVjaCBmYXN0ZXIg dGhhbg0KPiAgICAgICByZWFkaW5nIC9wcm9jL1BJRC9tYXBzICgyKS4gIFRoZSBsYXRlciBpZGVu dGlmaWVzIHRocmVhZCBzdGFja3MgQEAgLQ0KPiAyODUyLDE1ICsyODM3LDE0IEBAIGxpbnV4X3Zz eXNjYWxsX3JhbmdlX3JhdyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IHN0cnVjdCBtZW1f cmFuZ2UgKnJhbmdlKQ0KPiAgICAgICBhIGZldyB0aG91c2FuZCB0aHJlYWRzLCAoMSkgdGFrZXMg YSBmZXcgbWlsbGlzZWNvbmRzLCB3aGlsZSAoMikNCj4gICAgICAgdGFrZXMgc2V2ZXJhbCBzZWNv bmRzLiAgQWxzbyBub3RlIHRoYXQgInNtYXBzIiwgd2hhdCB3ZSByZWFkIGZvcg0KPiAgICAgICBk ZXRlcm1pbmluZyBjb3JlIGR1bXAgbWFwcGluZ3MsIGlzIGV2ZW4gc2xvd2VyIHRoYW4gIm1hcHMi LiAgKi8NCj4gLSAgeHNucHJpbnRmIChmaWxlbmFtZSwgc2l6ZW9mIGZpbGVuYW1lLCAiL3Byb2Mv JWxkL3Rhc2svJWxkL21hcHMiLCBwaWQsIHBpZCk7DQo+IC0gIGdkYjo6dW5pcXVlX3htYWxsb2Nf cHRyPGNoYXI+IGRhdGENCj4gLSAgICA9IHRhcmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoTlVM TCwgZmlsZW5hbWUpOw0KPiAtICBpZiAoZGF0YSAhPSBOVUxMKQ0KPiArICBmaWxlX3JlYWRlcl90 PGNoYXI+IHRhc2tfbWFwc19mcmVhZGVyDQo+ICsgICAgKHN0cmluZ19wcmludGYgKCIvcHJvYy8l bGQvdGFzay8lbGQvbWFwcyIsIHBpZCwgcGlkKSk7ICBpZg0KPiArICh0YXNrX21hcHNfZnJlYWRl cikNCj4gICAgICB7DQo+ICAgICAgICBjaGFyICpsaW5lOw0KPiAgICAgICAgY2hhciAqc2F2ZXB0 ciA9IE5VTEw7DQo+IA0KPiAtICAgICAgZm9yIChsaW5lID0gc3RydG9rX3IgKGRhdGEuZ2V0ICgp LCAiXG4iLCAmc2F2ZXB0cik7DQo+ICsgICAgICBmb3IgKGxpbmUgPSBzdHJ0b2tfciAodGFza19t YXBzX2ZyZWFkZXIuZGF0YSAoKSwgIlxuIiwgJnNhdmVwdHIpOw0KPiAgCSAgIGxpbmUgIT0gTlVM TDsNCj4gIAkgICBsaW5lID0gc3RydG9rX3IgKE5VTEwsICJcbiIsICZzYXZlcHRyKSkNCj4gIAl7 DQo+IEBAIC0yODc5LDcgKzI4NjMsOCBAQCBsaW51eF92c3lzY2FsbF9yYW5nZV9yYXcgKHN0cnVj dCBnZGJhcmNoDQo+ICpnZGJhcmNoLCBzdHJ1Y3QgbWVtX3JhbmdlICpyYW5nZSkNCj4gIAl9DQo+ ICAgICAgfQ0KPiAgICBlbHNlDQo+IC0gICAgd2FybmluZyAoXygidW5hYmxlIHRvIG9wZW4gL3By b2MgZmlsZSAnJXMnIiksIGZpbGVuYW1lKTsNCj4gKyAgICB3YXJuaW5nIChfKCJ1bmFibGUgdG8g b3BlbiAvcHJvYyBmaWxlICclcyciKSwNCj4gKwkgICAgIHRhc2tfbWFwc19mcmVhZGVyLmNfZmls ZXBhdGggKCkpOw0KDQpJSVVDLCBiZWZvcmUgeW91ciBjaGFuZ2UsIGlmIHRoZSBmaWxlIHdhcyBl bXB0eSwgd2UgZGlkIG5vdCBzaG93IGEgd2FybmluZywgc2luY2UNCnRhcmdldF9maWxlaW9fcmVh ZF9zdHJhbGxvYyBoYW5kbGVzIHRoZSBjYXNlIGxpa2UgdGhpczoNCiJFbXB0eSBvYmplY3RzIGFy ZSByZXR1cm5lZCBhcyBhbGxvY2F0ZWQgYnV0IGVtcHR5IHN0cmluZ3MuIg0KDQpCYXNlZCBvbiB5 b3VyIGZpbGVfcmVhZGVyX3QgaW1wbGVtZW50YXRpb24sIEkgdGhpbmsgd2UgZ2V0IGhlcmUgaW4g Y2FzZSB3ZSBjYW4NCm9wZW4gdGhlIGZpbGUgYnV0IHRoZSBmaWxlIGlzIGVtcHR5LiBOb3Qgc3Vy ZSBpZiBpbiB0aGF0IGNhc2UgdGhlIGZpbGUgY2FuIGJlIGVtcHR5DQphdCBhbGwsIGJ1dCBpdCBp cyBhIGJlaGF2aW91cmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBhdm9pZGVkIGluIG15IG9waW5p b24uDQpUaGVyZSBhcmUgZnVydGhlciBzaW1pbGFyIGNhc2VzIGluIHRoaXMgcGF0Y2guIA0KV291 bGQgaXQgbWFrZSBzZW5zZSB0byBjaGFuZ2UgdGhlIGZpbGVfcmVhZGVyX3QgYm9vbCBvcGVyYXRv ciB0byByZXR1cm4gdHJ1ZSBpbiBjYXNlIHRoZQ0KZmlsZSBpcyBlbXB0eT8gTWF5YmUgd2UgY291 bGQgdGhlbiBhZGRpdGlvbmFsbHkgaW50cm9kdWNlIGEgbmV3IG1ldGhvZCBib29sIGVtcHR5ICgp Lg0KDQo+ICAgIHJldHVybiBmYWxzZTsNCj4gIH0NCj4gQEAgLTMxNjgsMTYgKzMxNTMsMTEgQEAg bGludXhfYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtX3JhbmdlDQo+IA0KPiAgICBjb25zdCBp bnQgcGlkID0gY3VycmVudF9pbmZlcmlvciAoKS0+cGlkOw0KPiANCj4gLSAgc3RkOjpzdHJpbmcg c21hcHNfZmlsZSA9IHN0cmluZ19wcmludGYgKCIvcHJvYy8lZC9zbWFwcyIsIHBpZCk7DQo+IC0N Cj4gLSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZGF0YQ0KPiAtICAgID0gdGFyZ2V0 X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChudWxscHRyLCBzbWFwc19maWxlLmNfc3RyICgpKTsNCj4g LQ0KPiAtICBpZiAoZGF0YSA9PSBudWxscHRyKQ0KPiArICBmaWxlX3JlYWRlcl90PGNoYXI+IHNt YXBzX2ZyZWFkZXIgKHN0cmluZ19wcmludGYgKCIvcHJvYy8lZC9zbWFwcyIsDQo+ICsgcGlkKSk7 ICBpZiAoIXNtYXBzX2ZyZWFkZXIpDQo+ICAgICAgcmV0dXJuIGZhbHNlOw0KPiANCj4gLSAgY29u c3Qgc3RkOjp2ZWN0b3I8c21hcHNfZGF0YT4gc21hcHMNCj4gLSAgICA9IHBhcnNlX3NtYXBzX2Rh dGEgKGRhdGEuZ2V0ICgpLCBzbWFwc19maWxlKTsNCj4gKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c21h cHNfZGF0YT4gc21hcHMgPSBwYXJzZV9zbWFwc19kYXRhDQo+ICsgKHNtYXBzX2ZyZWFkZXIpOw0K PiANCj4gICAgYXV0byBmaW5kX2FkZHJfbWVtX3JhbmdlID0gWyZhZGRyXSAoY29uc3Qgc21hcHNf ZGF0YSAmbWFwKQ0KPiAgICAgIHsNCj4gZGlmZiAtLWdpdCBhL2dkYi9zcGFyYzY0LXRkZXAuYyBi L2dkYi9zcGFyYzY0LXRkZXAuYyBpbmRleA0KPiA5M2RiMzQxN2EyYS4uODExYjc2ZjI3ZDggMTAw NjQ0DQo+IC0tLSBhL2dkYi9zcGFyYzY0LXRkZXAuYw0KPiArKysgYi9nZGIvc3BhcmM2NC10ZGVw LmMNCj4gQEAgLTMwNSwxNCArMzA1LDEzIEBAIGFkaV9pc19hZGRyX21hcHBlZCAoQ09SRV9BRERS IHZhZGRyLCBzaXplX3QNCj4gY250KQ0KPiAgICBzaXplX3QgaSA9IDA7DQo+IA0KPiAgICBwaWRf dCBwaWQgPSBpbmZlcmlvcl9wdGlkLnBpZCAoKTsNCj4gLSAgc25wcmludGYgKGZpbGVuYW1lLCBz aXplb2YgZmlsZW5hbWUsICIvcHJvYy8lbGQvYWRpL21hcHMiLCAobG9uZykgcGlkKTsNCj4gLSAg Z2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZGF0YQ0KPiAtICAgID0gdGFyZ2V0X2ZpbGVp b19yZWFkX3N0cmFsbG9jIChOVUxMLCBmaWxlbmFtZSk7DQo+IC0gIGlmIChkYXRhKQ0KPiArICBm aWxlX3JlYWRlcl90PGNoYXI+IGFkaV9tYXBzX2ZyZWFkZXINCj4gKyAgICAoc3RyaW5nX3ByaW50 ZiAoIi9wcm9jLyVkL2FkaS9tYXBzIiwgcGlkKSk7ICBpZiAoYWRpX21hcHNfZnJlYWRlcikNCj4g ICAgICB7DQo+ICAgICAgICBhZGlfc3RhdF90IGFkaV9zdGF0ID0gZ2V0X2FkaV9pbmZvIChwaWQp Ow0KPiAgICAgICAgY2hhciAqc2F2ZXB0cjsNCj4gLSAgICAgIGZvciAoY2hhciAqbGluZSA9IHN0 cnRva19yIChkYXRhLmdldCAoKSwgIlxuIiwgJnNhdmVwdHIpOw0KPiArICAgICAgZm9yIChjaGFy ICpsaW5lID0gc3RydG9rX3IgKGFkaV9tYXBzX2ZyZWFkZXIuZGF0YSAoKSwgIlxuIiwNCj4gKyAm c2F2ZXB0cik7DQo+ICAJICAgbGluZTsNCj4gIAkgICBsaW5lID0gc3RydG9rX3IgKE5VTEwsICJc biIsICZzYXZlcHRyKSkNCj4gIAl7DQo+IEBAIC0zMjksNyArMzI4LDggQEAgYWRpX2lzX2FkZHJf bWFwcGVkIChDT1JFX0FERFIgdmFkZHIsIHNpemVfdCBjbnQpDQo+ICAJfQ0KPiAgICAgICAgfQ0K PiAgICBlbHNlDQo+IC0gICAgd2FybmluZyAoXygidW5hYmxlIHRvIG9wZW4gL3Byb2MgZmlsZSAn JXMnIiksIGZpbGVuYW1lKTsNCj4gKyAgICB3YXJuaW5nIChfKCJ1bmFibGUgdG8gb3BlbiAvcHJv YyBmaWxlICclcyciKSwNCj4gKwkgICAgIGFkaV9tYXBzX2ZyZWFkZXIuY19maWxlcGF0aCAoKSk7 DQo+IA0KPiAgICByZXR1cm4gZmFsc2U7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0 LmggYi9nZGIvdGFyZ2V0LmggaW5kZXggNDIxNTU1MzAzM2MuLmQ2ZmMxMDFmMjA1DQo+IDEwMDY0 NA0KPiAtLS0gYS9nZGIvdGFyZ2V0LmgNCj4gKysrIGIvZ2RiL3RhcmdldC5oDQo+IEBAIC0yMzM4 LDYgKzIzMzgsNzEgQEAgZXh0ZXJuIExPTkdFU1QgdGFyZ2V0X2ZpbGVpb19yZWFkX2FsbG9jIChz dHJ1Y3QNCj4gaW5mZXJpb3IgKmluZiwgIGV4dGVybiBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxj aGFyPg0KPiB0YXJnZXRfZmlsZWlvX3JlYWRfc3RyYWxsb2MNCj4gICAgICAoc3RydWN0IGluZmVy aW9yICppbmYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzaXplX3QgKmxlbiA9IG51bGxwdHIpOw0K PiANCj4gKy8qIEhlbHBlciBjbGFzcyBmb3IgcmVhZGluZyBhIGZpbGUuICAqLyB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4gY2xhc3MNCj4gK2ZpbGVfcmVhZGVyX3Qgew0KPiArICAvKiBUaGUgZmlsZXBh dGggb2YgdGhlIGZpbGUgYmVpbmcgcmVhZC4gICovDQo+ICsgIHN0ZDo6c3RyaW5nIG1fZmlsZXBh dGg7DQo+ICsgIC8qIFNtYXJ0IHBvaW50ZXIgdG8gdGhlIGRhdGEuICAqLw0KPiArICBnZGI6OnVu aXF1ZV94bWFsbG9jX3B0cjxUPiBtX2RhdGE7DQo+ICsgIC8qIFNpemUgb2YgdGhlIGRhdGEuICAq Lw0KPiArICBzaXplX3QgbV9zaXplOw0KPiArDQo+ICtwdWJsaWM6DQo+ICsgIGZpbGVfcmVhZGVy X3QgKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlcGF0aCkNCj4gKyAgICA6IG1fZmlsZXBhdGggKGZp bGVwYXRoKQ0KPiArICAgICwgbV9zaXplICgwKQ0KPiArICB7DQo+ICsgICAgaWYgY29uc3RleHBy IChzdGQ6OmlzX3NhbWVfdjxULCBjaGFyPikNCj4gKyAgICAgIG1fZGF0YSA9IHRhcmdldF9maWxl aW9fcmVhZF9zdHJhbGxvYyAobnVsbHB0ciwgbV9maWxlcGF0aC5jX3N0ciAoKSwNCj4gKwkJCQkJ ICAgICZtX3NpemUpOw0KPiArICAgIGVsc2UNCj4gKyAgICAgIHsNCj4gKwlnZGJfYnl0ZSAqYnVm ID0gbnVsbHB0cjsNCj4gKwltX3NpemUgPSB0YXJnZXRfZmlsZWlvX3JlYWRfYWxsb2MgKG51bGxw dHIsIG1fZmlsZXBhdGguY19zdHIgKCksICZidWYpOw0KPiArCW1fZGF0YSA9IGdkYjo6dW5pcXVl X3htYWxsb2NfcHRyPFQ+IChyZWludGVycHJldF9jYXN0PFQgKj4oYnVmKSk7DQo+ICsgICAgICB9 DQo+ICsgIH0NCj4gKw0KPiArICAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZSB3YXMgcmVhZCBz dWNjZXNzZnVsbHkuICAqLyAgb3BlcmF0b3IgYm9vbA0KPiArICgpIGNvbnN0IG5vZXhjZXB0ICB7 IHJldHVybiBtX2RhdGEgIT0gbnVsbHB0ciAmJiBtX3NpemUgPiAwOyB9DQoNCkkgdGhpbmsgd2Ug c2hvdWxkIG1ha2UgdGhpcyBleHBsaWNpdC4NCg0KPiArDQo+ICsgIC8qIFJldHVybiBhIHBvaW50 ZXIgdG8gdGhlIGRhdGEuICAqLw0KPiArICBUICpkYXRhICgpIGNvbnN0IG5vZXhjZXB0DQo+ICsg IHsgcmV0dXJuIG1fZGF0YS5nZXQgKCk7IH0NCj4gKw0KPiArICAvKiBSZXR1cm4gdGhlIHNpemUg b2YgdGhlIGRhdGEuICAqLw0KPiArICBzaXplX3Qgc2l6ZSAoKSBjb25zdCBub2V4Y2VwdA0KPiAr ICB7DQo+ICsgICAgLyogRm9yIGNoYXIgYnVmZmVycywgc2l6ZSgpIGNvcnJlc3BvbmRzIHRvIHRo ZSBzaXplIG9mIHRoZSByZWFkIGRhdGEuIFNvbWUNCj4gKyAgICAgICBudWxsLXRlcm1pbmF0b3Ig Y2hhcmFjdGVycyBhcmUgcG9zc2libHkgc2NhdHRlcmVkIHRocm91Z2hvdXQgdGhlIGRhdGEuDQo+ ICsgICAgICAgQ29uc2VxdWVudGx5LCBzdHJsZW4oKSBtaWdodCBub3QgcmVmbGVjdCB0aGUgYWN0 dWFsIHNpemUuICAqLw0KPiArICAgIHJldHVybiBtX3NpemU7DQo+ICsgIH0NCj4gKw0KPiArICAv KiBSZXR1cm4gYSBzcGFuIG9mIHRoZSBkYXRhLiAgKi8NCj4gKyAgZ2RiOjphcnJheV92aWV3PFQ+ IHZpZXcgKCkgY29uc3Qgbm9leGNlcHQgIHsgcmV0dXJuDQo+ICsgZ2RiOjphcnJheV92aWV3PFQ+ IChtX2RhdGEuZ2V0ICgpLCBzaXplICgpKTsgfQ0KPiArDQo+ICsgIC8qIFJldHVybiBhIHNwYW4g b2YgdGhlIGRhdGEsIGNhc3QgdG8gYSBkaWZmZXJlbnQgdHlwZS4gICovDQo+ICsgIHRlbXBsYXRl IDx0eXBlbmFtZSBVPg0KPiArICBnZGI6OmFycmF5X3ZpZXc8VT4gY2FzdF92aWV3ICgpIGNvbnN0 IG5vZXhjZXB0DQo+ICsgIHsNCj4gKyAgICByZXR1cm4gZ2RiOjphcnJheV92aWV3PFU+IChyZWlu dGVycHJldF9jYXN0PFUgKj4gKG1fZGF0YS5nZXQgKCkpLA0KPiArCQkJICAgICAgIHNpemUgKCkg KiBzaXplb2YgKFQpIC8gc2l6ZW9mIChVKSk7DQo+ICsgIH0NCj4gKw0KPiArICAvKiBSZXR1cm4g dGhlIGZpbGVwYXRoIG9mIHRoZSBmaWxlIHRoYXQgd2FzIHJlYWQuICAqLyAgY29uc3QNCj4gKyBz dGQ6OnN0cmluZyAmZmlsZXBhdGggKCkgY29uc3Qgbm9leGNlcHQgIHsgcmV0dXJuIG1fZmlsZXBh dGg7IH0NCj4gKw0KPiArICAvKiBSZXR1cm4gdGhlIGZpbGVwYXRoIG9mIHRoZSBmaWxlIHRoYXQg d2FzIHJlYWQgYXMgYSBDIHN0cmluZy4gICovDQo+ICsgIGNvbnN0IGNoYXIgKmNfZmlsZXBhdGgg KCkgY29uc3Qgbm9leGNlcHQNCj4gKyAgeyByZXR1cm4gbV9maWxlcGF0aC5jX3N0ciAoKTsgfQ0K PiArfTsNCj4gKw0KPiAgLyogSW52YWxpZGF0ZSB0aGUgdGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCBv cGVuIGhhbmRsZXMgdGhhdCB3ZXJlIG9wZW4NCj4gICAgIG9uIHRhcmdldCBUQVJHLCBzaW5jZSB3 ZSdyZSBhYm91dCB0byBjbG9zZSAoYW5kIG1heWJlIGRlc3Ryb3kpIHRoZQ0KPiAgICAgdGFyZ2V0 LiAgVGhlIGhhbmRsZXMgcmVtYWluIG9wZW4gZnJvbSB0aGUgY2xpZW50J3MgcGVyc3BlY3RpdmUs IGJ1dA0KPiAtLQ0KPiAyLjU1LjANCj4gDQoNClJlZ2FyZHMsDQpDaHJpc3RpbmENCg0KSW50ZWwg RGV1dHNjaGxhbmQgR21iSAoKUmVnaXN0ZXJlZCBBZGRyZXNzOiBEb3JuYWNoZXIgU3RyYXNzZSAx LCA4NTYyMiBGZWxka2lyY2hlbiwgR2VybWFueQpUZWw6ICs0OSA4OSA5OTEgNDMwLCB3d3cuaW50 ZWwuZGUKTWFuYWdpbmcgRGlyZWN0b3JzOiBIYXJyeSBEZW1hcywgSmVmZnJleSBTY2huZWlkZXJt YW4sIFlpbiBDaG9uZyBTb3JyZWxsCkNoYWlycGVyc29uIG9mIHRoZSBTdXBlcnZpc29yeSBCb2Fy ZDogTmljb2xlIExhdQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaApDb21tZXJjaWFsIFJlZ2lzdGVy OiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4Cg==