From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id AXJ6J5NYjWrHqj4AWB0awg (envelope-from ) for ; Tue, 25 Aug 2026 04:55:47 -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=kX7WTMay; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 9ABDD1E0A3; Tue, 25 Aug 2026 04:55:47 -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=unavailable autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.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 A54AB1E033 for ; Tue, 25 Aug 2026 04:55:46 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 251D84BA798F for ; Tue, 25 Aug 2026 08:55:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 251D84BA798F 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=kX7WTMay Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by sourceware.org (Postfix) with ESMTPS id D7C9A4BA2E20 for ; Tue, 25 Aug 2026 08:55:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D7C9A4BA2E20 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 D7C9A4BA2E20 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=198.175.65.18 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1787648117; cv=fail; b=O+rM94Yp1mYenjuff3tIwjxy5vfZYNCYbJkYX4X+JDgwublHRT5tPMwoxpaPTfuzWrX+RgFJ3gg3BTbkk4it8oALERsHn1xjCAFQRD5kuOzeSxFbdpa9N9cRslb7x9Ne64C8Agi/Zs+gxCq0cXXHngtxr8VMgxpSqHHXI/jFwvo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1787648117; c=relaxed/simple; bh=oRdcqa48+j16C4GizUEM7Tmyhk1XywQI0OHEA9plRWQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=xm97Bb9ckqLZU8rWgYTgKJeCzYmTUV61hKdynUp7WR9inIBupYEYEhYOrND5Iy+//gVgdxv8fEkLzI+AzTBP+bTCgXu9BgLYLnuhDTuvfNy1hC+PWkpMlRSdiJrNjzsMKncGjm82Ue4tpkf+hbTyF5+Ue9wDtsaeYI1Zmt0Tu9w= 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=kX7WTMay DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D7C9A4BA2E20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1787648117; x=1819184117; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=oRdcqa48+j16C4GizUEM7Tmyhk1XywQI0OHEA9plRWQ=; b=kX7WTMaymzE8RAUnm7+1rQxxgjWE7yND9NOB9HLJgT2n0RLxUlIzmaJM +Z4ZOdmkhOhaQPh2wpNNdIGNQbkOfHZNVQ1rk0lci+JIoWxcEW16whED2 AbVmQGpjw7CixWsyGIlxA+f0xmm8UYsx1j2HrECJdcyNIIH2Q45cxanpu OeGvFW/hHpp3XwT1GI6DthUMX1e9RK36qQRksB7mozm5IkuVIPbDNLBw0 JGf1g9y3KCxJZwuMI8GIetHuObfKwwaQuEYyDuB9X+x2UpFLwOMFJpzjp FTKoK30xidQsOuZLy0QqQD5kzJP3IJtc+km0SRBsOJ9jHe+nvIBUqs+eD Q==; X-CSE-ConnectionGUID: mT+lLnyOQ+mIRVBOUhI82g== X-CSE-MsgGUID: UM00Eh4sSlet6xgo6783gw== X-IronPort-AV: E=McAfee;i="6800,10657,11885"; a="88164323" X-IronPort-AV: E=Sophos;i="6.25,242,1779174000"; d="scan'208";a="88164323" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Aug 2026 01:55:15 -0700 X-CSE-ConnectionGUID: KnfNF1BmR2+4eWcXwlIjVQ== X-CSE-MsgGUID: Wkgf5qqITVa83WQ9N3KfYw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,242,1779174000"; d="scan'208";a="297133427" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Aug 2026 01:55:15 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 25 Aug 2026 01:55:14 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45 via Frontend Transport; Tue, 25 Aug 2026 01:55:14 -0700 Received: from BN8PR05CU002.outbound.protection.outlook.com (52.101.57.70) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 25 Aug 2026 01:55:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oWSmNKmHr0MHNEUL3D6OjWvTZQUoUy8tuMu/4vbP6/9u3Qw3XbtLVL/L/Q+ANVC3FxnBXs/p1yWoKmsfJdzJsEZAmtoJ3XU10G+S7lEXkn5RunxqeM+W63TEOC6ApZM3n2J3hdPByhfVEYSkEtEPdttSY9khOPFRL/C6yf6bC7Z3MVe+v/QbuFyqfVWJ3xqcHKnYWuS1TeThURzK1adfNidkvdJCYNbjTD9lkXdMBv1M38Kqm7kaTHrMFBetTUu4nI2//a20dqAieS/5U9eREjxTWKsSRq17xpVojg+jW/w5qVhRRUjYs8HCdcBzKNG7ZxROXGA1IB200JfHqJ1nRQ== 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=94YJ3G4XBti8HBby2Q1gQIJgM8d6mZJETCureSSoRnQ=; b=BgTyF4yb0Nxi2zk/XAOIKgOSCk+8PB2PWBTZ5f1EGBNLEBxxxuNu6G/CiHEB4GV7+Wz9/UmfOUYQYK3fAgjj0Ioq0iho8tqR7DHe+7hrYskQILEdQLbRMEfp892dJefKYCcvbGDNrhl2CaQ63QUoJv2iKGFzR1x4dHtyiT5I+LNBCayU00GMgSrJwfitnF7jlWZ0NaIGZQKJDuOasxk3Gw/c35EeklOhmCImxOAqTooFADMkwWTNNSxf4MbtsnePwvhwfql46pFifnXIsg86VR8C5OEEjbB/Ttjpuo9qb+O4AQ4AkOcWYUfZJz3AIY1W1OdCefrID8F5braFITijqg== 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 SJ0PR11MB5005.namprd11.prod.outlook.com (2603:10b6:a03:2d3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Tue, 25 Aug 2026 08:55:09 +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.0339.012; Tue, 25 Aug 2026 08:55:09 +0000 From: "Joos, Christina" To: Matthieu Longo , "gdb-patches@sourceware.org" CC: Luis Machado , Luis Machado , Thiago Jung Bauermann , Simon Marchi , "Kevin Buettner" Subject: RE: [PATCH v1 3/6] gdb: introduce helper class file_reader_t Thread-Topic: [PATCH v1 3/6] gdb: introduce helper class file_reader_t Thread-Index: AQHdHqR4NBy8r+zeU0Krs9+4IWcfvbaXO4xAgAaJfYCAEMS90A== Date: Tue, 25 Aug 2026 08:55:09 +0000 Message-ID: References: <20260728151700.253720-1-matthieu.longo@arm.com> <20260728151700.253720-4-matthieu.longo@arm.com> <2c974a80-9ad6-4b46-a6a9-33a8e710d372@arm.com> In-Reply-To: <2c974a80-9ad6-4b46-a6a9-33a8e710d372@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_|SJ0PR11MB5005:EE_ x-ms-office365-filtering-correlation-id: 7e86089c-664b-49a9-a3e5-08df0286916b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|10070799003|1800799024|376014|23010399003|366016|38070700021|10067099003|4143699003|56012099006|11063799006|18002099003|22082099003; x-microsoft-antispam-message-info: BNIB1mh1UzC8llRbzODaDH4E0DYoAWTVn7CxUea3/jTcbo1same9wts9V4GeWgIcGKHGJpzt3xBU36QiE2p0BfdjSJE20ZwND27Cks7juVoMb2jnVV8HRgKVxwV7OewoTQckNH9VmIsLCZVGHooPQWncBYS4BnC7TJh9OSAOvhrd2cCPSKQL/dxNvQ+KH3DT5/0imnQ6aMjt0GINBYsFTK8LuMXtvjQlFE52Qh1QPN7ELrk0jLMaclqZByoSufdQuCHugHnOPV619dr3ED4ARFFh1ocJxUpV2OF4J1vf1K6rDrG1fv2rn/BKRR2cE9F+qsyLVSJL2lnq8VVYXxoiTxdLnfF5PbMbjYdzfisK4Jq8U5HbAa552vIBEg6DX4SJ2cJcGpR7ruc7iMBy1maK1sSIoTEEfnV2dodVZrVm6gO6Dx8S6mZYOTQA9HuknixET8bivzAkW2LWtxGGhCQp2h05BA5B/h7iBdSM2k878OdKMG7vE4XkWKZ2RrS8pcl6e9G+7JOyEmeUuNd29Te3NwyB0t3aL58m6srViKJb7c+6lBROskGEToEq9YUWQK/iyQ8jmpfsnBovEjpkY/do5Bx7OpPkBtVRqMZnUgRB29eH6wlbQviER7KpI3vR9mAX2YFH/fg/58pHqK7N5RRkDDapfod02MvYsKKJOecLstTBIEEnsVCVtsPVVktcYSq3PvcWoXMCyTDDvEJ/XeA4nY/FttSF+9USUWpFPwkmlIM= 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)(10070799003)(1800799024)(376014)(23010399003)(366016)(38070700021)(10067099003)(4143699003)(56012099006)(11063799006)(18002099003)(22082099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Yy9oVEE1WW9jUkxTWVJvY2N0MWpnVTJtbXlhWDJEcmhKZDFkQ1l4aWJBQ0hp?= =?utf-8?B?ZXZoRmZEOE80dW4zNDR1SllVaW1wTkJ2NFdYcDVnd1ZHUE5pZnZPci9lNEU5?= =?utf-8?B?aUptRXhHdW9yTGl6Tmdsb3J6RzMrNVZFU2NIY00vVmVRK0xJWWIvOGJCeGhm?= =?utf-8?B?aVlWUFdhaC9XMDhBUUxpcE1tM0MwWS9pNmlSTGtyQkhTUGNYQzNXUlV1ZDhE?= =?utf-8?B?aTRlcFNwbnJ5WHV2cVlUcjl3TjRLVTZ1dWJpa244VzMzdXhnQUt6MTRqbjVt?= =?utf-8?B?M2NmZkNNUFBXdGpUTlowWjRNbU5JcnZvaTBLWHlJUGhPSTVmZDdCRTBSSldr?= =?utf-8?B?Nnp3OFBxZlhWQ2doRkFSQnZWQm5jQnpJbXVpRW93OVdDMWk2UGZibUVNMVJn?= =?utf-8?B?YiswZ0tDY2w3bGpnNlZwSy9CRWUvVSswYmhlTHBCVnFiMHlJaTQ5SWdObzAv?= =?utf-8?B?MjMyUm1nMzNzaTlOOUZXdHd1dmhvbkNDc0ZycEdUbnk5SG05dEM5NERPUCtz?= =?utf-8?B?dk03K3U0OEpHMlhmMVQ5QWtYMHByV01nZEU0THNEd2hrYkExanAwN3kxRmll?= =?utf-8?B?V3dPZzRFckZCVGkwenNBeEtmTXhKbjlRdFRjMnNtV1k4dTBPYmpzekZEdUox?= =?utf-8?B?MGlXbU11VktmS3ZYRytLNFY4UStlUUtnMjV1N2ZwK2thbFJWN1Juc291TTB4?= =?utf-8?B?a0I2T0xBNHdsRG56UlRORDVtbVBXYnJuN2NwQnp0ZlIvVFV5QUNUSFdtdmY4?= =?utf-8?B?TXhmR1NtS0FGWXdTakhkL0FRMHB5elo2b0ZRR3RCTUpwOHAzOGhEUjR3ck5X?= =?utf-8?B?M2tEenQ0WFRzUEVnSGEzNkJaSVFRcE9DODNHREZnaHA4VUVKc1E0SzQ0eGNq?= =?utf-8?B?TTZHWUJFUGZIcnpGdFhnbk4vc0lhYUsrbFU2YUlsZFVSWnZvdTBDSDV2QkVT?= =?utf-8?B?dm5ndWlzZlM0d3RLcjRWcjVJeDhQYUc5MUF4K0RDek5qK2wxQXdiMmNzY3lI?= =?utf-8?B?R3dBUUpaQ2E0NTlidmh3ek5QODlOYUZBdjhZb3NJT0pjc0pQMlBDTk9vblZV?= =?utf-8?B?eW5VQm81OUdHSmRkRzVPVXRvV2c2UTFBN0x0RGRiaXNxdmU0TEYxUjFhQkI5?= =?utf-8?B?Zy80L1JVbVZpMTJXSWJtZ1FzU0Rlamd5QmVuN3BQcWJFWnZuckxOOVE1Rjhv?= =?utf-8?B?ZTVxUHhDTEZQOThpWnpVZCtMVWs2YjZkLzRValhSYXNRWWFwTXFlbmRTWlA2?= =?utf-8?B?cWJFMit0UmlGWG96U0JWVVF3dGN6RzFaajZJaVJxSE43dldZMTVNTWdKby8r?= =?utf-8?B?SmtrYlVSVDlZdktHRmdHQlBZVWR6bUdRcFl2UVVmbG81bjNNV3VEalZLSGZN?= =?utf-8?B?bUJyaHJWWE5zS0dXNXhlRUtNRGVucFFaQnN4b2hXL2dwb2IrVjJ3ZlV3TkVo?= =?utf-8?B?OGZDVG5keWtJWVppK1FwZFoxalpaY2lXT3RXYkFLRzJ6SnFTZXhuN1JKeU1U?= =?utf-8?B?WE4zdWw2MGRKd0lCMTNTU2xVeUhrZHlFN1c5K3FmY0Y5cXFsM1ZWak5xK2tu?= =?utf-8?B?eUlxQWt0WmlNYkNvVFFFVERBRzltWlpaaWFYemtTeHlkd2xIQjdiWmg0eEFF?= =?utf-8?B?TSt0UTBIQkh6d1RuSXNRamFRczNZS3JZZTdwMHo2ZVplamhvN2NoOWxOamVV?= =?utf-8?B?cytFZzFPdG5FU0NnRUhteklLVVZHV3YxRTBoYWcxdFpCeUpuMWhyRk5Xcm50?= =?utf-8?B?L2JrMDBqdXFRc0lEZWk0M3pNOHJLN2dDdll1c2Q5VVI1eGMyM1BSRklqRmd6?= =?utf-8?B?WnFESkxKbVUxMDQ1YTZMSWxCNHJaSGkxaVhFbUQ1dUZKVFBuWG9ickFYVnpo?= =?utf-8?B?Rm13b1N1djIxSjFXdzQ5Zk51TWpUa2NZcmU4WXVFRy9sd1BScXFoa1RjVkdo?= =?utf-8?B?T0E5RzVaV0JvZDkyNitlK0V5Kzk4S3lLK1VoMisvSk5QTFJMVEdYMTUrUE1y?= =?utf-8?B?bkJFR1FZckJ1ZEFnMWNDTkk2UE9HelV6cU9qVXpnL3hVbWZhZzZPbEg3MVgv?= =?utf-8?B?Ykt1MU03VDJvRHVZekNLWnArZVlSamFDM2dib3piMS9EbDBDRUVzS0UyOHNh?= =?utf-8?B?VW9qQWdHWUUxS1JSVXpKZC83emFvekVnRDlsNmt5eG5lTmJwTHpwbERzbm5w?= =?utf-8?B?MkpaRDdzbng5Z1Mxa3JnQXZ6OHl3aTNFYVNxWkNpZzdiRlpFK1l4TVk3djRn?= =?utf-8?B?eXRVTmxuVStVZzJHcjdGWkMvaURKV1planNPR1RrWUdpUWRFNHQ4Y3pJQjlt?= =?utf-8?B?N1Q4L0pRWlhsdk52RjIwNnRrd09EMk9XaCtaMFgrTmF4Z3gzbldBbldFQWU4?= =?utf-8?Q?CsWyQl/eAv4n04IcsNmNvZiR9y6u2B67FMWPf5yRaHpx/?= x-ms-exchange-antispam-messagedata-1: BHIIJCiGwY6+rg== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: AQ24C/p/3N5rYu41uJaapiSnBxgAqmw4He2VxnTzOKG5Ua5sXEGX5eKYvk8OxQKnoCH4Wir/PgAXRBQiNxxLBaZjRDU4IT390LhT/rbWEf96YC1WYC9Na31c2vpPEr9sxCJR2mIB22CjwRcCfY5Np7qScEXc486g72KjdJKF8KzxW+gg8tUx0Hk4s/cBSBTK5V3OIWvGGojRZOXZHmLtG5r1YitqPMQM2oU3mFXRBFFs8AFwbKC9Ofma4olXjE5dhux3MW2SGulh4nILLF6hbHKEJyCvN28X87MjMmtDODbWGPlp76VAOJJbqoierwrDTENJ6SuH04IRJP83cK1MMQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e86089c-664b-49a9-a3e5-08df0286916b X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2026 08:55:09.8332 (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: lNC/USqeaqQ37ePvSFbjB1MY4AiJ/f+gRx6cCQuiNcvNuZrqOY5xC5vhw6ue9rrVhDhattiTjqVyvichnccNToYh9Q+l2eA9GYBGYJDWAjo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5005 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 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXR0aGlldSBMb25nbyA8bWF0 dGhpZXUubG9uZ29AYXJtLmNvbT4NCj4gU2VudDogRnJlaXRhZywgMTQuIEF1Z3VzdCAyMDI2IDE3 OjI2DQo+IFRvOiBKb29zLCBDaHJpc3RpbmEgPGNocmlzdGluYS5qb29zQGludGVsLmNvbT47IGdk Yi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+IENjOiBMdWlzIE1hY2hhZG8gPGx1aXMubWFjaGFk b0BhbWQuY29tPjsgTHVpcyBNYWNoYWRvDQo+IDxsdWlzLm1hY2hhZG8uZm9zc0BnbWFpbC5jb20+ OyBUaGlhZ28gSnVuZyBCYXVlcm1hbm4NCj4gPHRoaWFnby5iYXVlcm1hbm5AbGluYXJvLm9yZz47 IFNpbW9uIE1hcmNoaSA8c2ltYXJrQHNpbWFyay5jYT47IEtldmluDQo+IEJ1ZXR0bmVyIDxrZXZp bmJAcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MSAzLzZdIGdkYjogaW50cm9k dWNlIGhlbHBlciBjbGFzcyBmaWxlX3JlYWRlcl90DQo+IA0KPiBPbiAxMC8wOC8yMDI2IDE0OjA3 LCBKb29zLCBDaHJpc3RpbmEgd3JvdGU6DQo+ID4gSGkgTWF0dGhpZXUsDQo+ID4NCj4gPiBQbGVh c2UgZmluZCBteSBmZWVkYmFjayBiZWxvdy4NCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+PiBGcm9tOiBNYXR0aGlldSBMb25nbyA8bWF0dGhpZXUubG9uZ29AYXJtLmNv bT4NCj4gPj4gU2VudDogRGllbnN0YWcsIDI4LiBKdWxpIDIwMjYgMTc6MTcNCj4gPj4gVG86IGdk Yi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+ID4+IENjOiBMdWlzIE1hY2hhZG8gPGx1aXMubWFj aGFkb0BhbWQuY29tPjsgTHVpcyBNYWNoYWRvDQo+ID4+IDxsdWlzLm1hY2hhZG8uZm9zc0BnbWFp bC5jb20+OyBUaGlhZ28gSnVuZyBCYXVlcm1hbm4NCj4gPj4gPHRoaWFnby5iYXVlcm1hbm5AbGlu YXJvLm9yZz47IFNpbW9uIE1hcmNoaSA8c2ltYXJrQHNpbWFyay5jYT47IEtldmluDQo+ID4+IEJ1 ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT47IEpvb3MsIENocmlzdGluYQ0KPiA+PiA8Y2hyaXN0 aW5hLmpvb3NAaW50ZWwuY29tPjsgSm9vcywgQ2hyaXN0aW5hDQo+ID4+IDxjaHJpc3RpbmEuam9v c0BpbnRlbC5jb20+OyBNYXR0aGlldSBMb25nbyA8bWF0dGhpZXUubG9uZ29AYXJtLmNvbT4NCj4g Pj4gU3ViamVjdDogW1BBVENIIHYxIDMvNl0gZ2RiOiBpbnRyb2R1Y2UgaGVscGVyIGNsYXNzIGZp bGVfcmVhZGVyX3QNCj4gPj4NCj4gPj4gV3JhcCBhbGwgdGhlIGJvaWxlcnBsYXRlIGNvZGUgcmVx dWlyZWQgdG8gcmVhZCBhIGZpbGUgaW4gYSBuZXcgaGVscGVyDQo+ID4+IGNsYXNzOiBmaWxlX3Jl YWRlcl90LiBUaGUgY2xhc3Mgb3ducyB0aGUgZmlsZSBjb250ZW50cyB0b2dldGhlciB3aXRoDQo+ ID4+IHRoZSBmaWxlIHBhdGgsIGFuZCBwcm92aWRlcyBjb252ZW5pZW50IGFjY2Vzc29ycyBmb3Ig dGhlIGRhdGEsIHNpemUNCj4gPj4gYW5kIHR5cGVkIHZpZXdzLiBJdCBzdXBwb3J0cyBib3RoIG51 bGwtdGVybWluYXRlZCB0ZXh0IGZpbGVzIGFuZCBiaW5hcnkgZmlsZXMuDQo+ID4+DQo+ID4+IFRo aXMgaGVscGVyIGVsaW1pbmF0ZXMgcmVwZWF0ZWQgY2FsbHMgdG8gdGFyZ2V0X2ZpbGVpb19yZWFk X3N0cmFsbG9jDQo+ID4+IGFuZCB0YXJnZXRfZmlsZWlvX3JlYWRfYWxsb2MsIHJlbW92ZSBleHBs aWNpdCBtZW1vcnkgbWFuYWdlbWVudCB3aXRoDQo+ID4+IGdkYjo6dW5pcXVlX3htYWxsb2NfcHRy LCBhbmQgc2ltcGxpZmllcyB0aGUgY2FzdGluZyBsb2dpYyB3aGVuDQo+ID4+IHdvcmtpbmcgd2l0 aCBiaW5hcnkgZGF0YS4NCj4gPj4NCj4gPj4gVGhlIHBhdGNoIGNvbnZlcnRzIHNvbWUgb2YgdGhl IGV4aXN0aW5nIExpbnV4LCBBTUQ2NCwgYW5kIFNQQVJDIGNvZGUNCj4gPj4gdGhhdCByZWFkcyBm aWxlcyBmcm9tIC9wcm9jIHRvIHVzZSBmaWxlX3JlYWRlcl90Lg0KPiA+PiAtLS0NCj4gPj4gIGdk Yi9hbWQ2NC1saW51eC10ZGVwLmMgfCAgMTIgKystLS0NCj4gPj4gIGdkYi9saW51eC10ZGVwLmMg ICAgICAgfCAxMDkgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g Pj4gIGdkYi9zcGFyYzY0LXRkZXAuYyAgICAgfCAgMTMgKysrLS0NCj4gPj4gIGdkYi90YXJnZXQu aCAgICAgICAgICAgfCAgNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4gIDQg ZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQ0KPiA+Pg0K PiA+PiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVwLmMgaW5k ZXgNCj4gPj4gOWJkY2M1NWEwZTEuLjExZjBhNjk1MmVhIDEwMDY0NA0KPiA+PiAtLS0gYS9nZGIv bGludXgtdGRlcC5jDQo+ID4+ICsrKyBiL2dkYi9saW51eC10ZGVwLmMNCj4gPj4gQEAgLTE2OTgs NiArMTY5OCwxMiBAQCBwYXJzZV9zbWFwc19kYXRhIChjb25zdCBjaGFyICpkYXRhLA0KPiA+PiAg ICByZXR1cm4gc21hcHM7DQo+ID4+ICB9DQo+ID4+DQo+ID4+ICtzdGF0aWMgc3RkOjp2ZWN0b3I8 c3RydWN0IHNtYXBzX2RhdGE+DQo+ID4NCj4gPiBOaXQ6IHdlIHNob3VsZCBvbWl0IHRoZSBzdHJ1 Y3Qga2V5d29yZCBoZXJlLg0KPiA+DQo+IA0KPiBGaXhlZC4gQW5kIGluIG90aGVycyBwbGFjZXMg d2hlcmUgaXQgaXMgcmVsZXZhbnQuDQo+IA0KPiA+PiArcGFyc2Vfc21hcHNfZGF0YSAoY29uc3Qg ZmlsZV9yZWFkZXJfdDxjaGFyPiAmZnJlYWRlcikgew0KPiA+PiArICByZXR1cm4gcGFyc2Vfc21h cHNfZGF0YSAoZnJlYWRlci5kYXRhICgpLCBmcmVhZGVyLmZpbGVwYXRoICgpKTsgfQ0KPiA+PiAr DQo+ID4+ICAvKiBIZWxwZXIgdGhhdCBjaGVja3MgaWYgYW4gYWRkcmVzcyBpcyBpbiBhIG1lbW9y eSB0YWcgcGFnZSBmb3IgYSBsaXZlDQo+ID4+ICAgICBwcm9jZXNzLiAgKi8NCj4gPj4NCj4gPj4g QEAgLTE3MDksMTcgKzE3MTUsMTMgQEAgbGludXhfcHJvY2Vzc19hZGRyZXNzX2luX21lbXRhZ19w YWdlDQo+ID4+IChDT1JFX0FERFIgYWRkcmVzcykNCj4gPj4NCj4gPj4gICAgcHRpZF90IHB0aWQg PSBnZXRfcHJvY2Vzc19yZWZlcmVuY2VfcHRpZCAoKTsNCj4gPj4NCj4gPj4gLSAgc3RkOjpzdHJp bmcgc21hcHNfZmlsZSA9IHN0cmluZ19wcmludGYgKCIvcHJvYy8lbGQvc21hcHMiLA0KPiA+PiBw dGlkLmx3cCAoKSk7DQo+ID4+IC0NCj4gPj4gLSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hh cj4gZGF0YQ0KPiA+PiAtICAgID0gdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChOVUxMLCBz bWFwc19maWxlLmNfc3RyICgpKTsNCj4gPj4gLQ0KPiA+PiAtICBpZiAoZGF0YSA9PSBudWxscHRy KQ0KPiA+PiArICBmaWxlX3JlYWRlcl90PGNoYXI+IHNtYXBzX2ZyZWFkZXINCj4gPj4gKyAgICAo c3RyaW5nX3ByaW50ZiAoIi9wcm9jLyVsZC9zbWFwcyIsIHB0aWQubHdwICgpKSk7ICBpZg0KPiA+ PiArICghc21hcHNfZnJlYWRlcikNCj4gPj4gICAgICByZXR1cm4gZmFsc2U7DQo+ID4+DQo+ID4+ ICAgIC8qIFBhcnNlIHRoZSBjb250ZW50cyBvZiBzbWFwcyBpbnRvIGEgdmVjdG9yLiAgKi8NCj4g Pj4gLSAgc3RkOjp2ZWN0b3I8c3RydWN0IHNtYXBzX2RhdGE+IHNtYXBzDQo+ID4+IC0gICAgPSBw YXJzZV9zbWFwc19kYXRhIChkYXRhLmdldCAoKSwgc21hcHNfZmlsZSk7DQo+ID4+ICsgIHN0ZDo6 dmVjdG9yPHN0cnVjdCBzbWFwc19kYXRhPiBzbWFwcyA9IHBhcnNlX3NtYXBzX2RhdGENCj4gPj4g KyAoc21hcHNfZnJlYWRlcik7DQo+ID4NCj4gPiBMaWtlIGFtZDY0X2xpbnV4X2xhbV91bnRhZ19t YXNrIHdlIGhhdmUgYSBtaW5vciBiZWhhdmlvdXJhbCBjaGFuZ2UNCj4gaGVyZS4NCj4gPiBCdXQg SSBhZ2FpbiBzZWUgaXQgYXMgYW4gaW1wcm92ZW1lbnQsIGFzIHRoZSByZXN1bHQgc2hvdWxkIGJl IHRoZQ0KPiA+IHNhbWUsIHdlIGp1c3QgcmV0dXJuIGVhcmxpZXIuIFRoZXJlIG1pZ2h0IGJlIHNv bWUgbW9yZSBjYXNlcyBpbg0KPiA+IGxpbnV4LXRkZXAuYywgYnV0IEkgZGlkIG5vdCBjaGVjayBh bGwgb2YgdGhlbS4NCj4gPg0KPiA+IEkgdGhpbmsgaXQncyB3b3J0aCBwb2ludGluZyBvdXQgaW4g dGhlIGNvbW1pdCBtZXNzYWdlLg0KPiA+DQo+IA0KPiBBbWVuZGVkIHRoaXMgcGFyYWdyYXBoIGlu IHRoZSBjb21taXQgbWVzc2FnZToNCj4gDQo+IFRoZSBwYXRjaCBjb252ZXJ0cyBzb21lIG9mIHRo ZSBleGlzdGluZyBMaW51eCwgQU1ENjQsIGFuZCBTUEFSQyBjb2RlIHRoYXQNCj4gcmVhZHMgZmls ZXMgZnJvbSAvcHJvYyB0byB1c2UgZmlsZV9yZWFkZXJfdC4gQXMgYSBzaWRlIGVmZmVjdCwNCj4g YW1kNjRfbGludXhfbGFtX3VudGFnX21hc2sgYW5kIGxpbnV4X3Byb2Nlc3NfYWRkcmVzc19pbl9t ZW10YWdfcGFnZQ0KPiBtYXkgbm93IHJldHVybiBlYXJsaWVyIGluIGNhc2UgdGhlIGZpbGUgaXMg ZW1wdHkuDQo+IA0KPiA+PiBkaWZmIC0tZ2l0IGEvZ2RiL3NwYXJjNjQtdGRlcC5jIGIvZ2RiL3Nw YXJjNjQtdGRlcC5jIGluZGV4DQo+ID4+IDkzZGIzNDE3YTJhLi45NTU2MzFiODdkZiAxMDA2NDQN Cj4gPj4gLS0tIGEvZ2RiL3NwYXJjNjQtdGRlcC5jDQo+ID4+ICsrKyBiL2dkYi9zcGFyYzY0LXRk ZXAuYw0KPiA+PiBAQCAtMzAxLDE4ICszMDEsMTYgQEAgYWRpX3RhZ19mZCAoKQ0KPiA+PiAgc3Rh dGljIGJvb2wNCj4gPj4gIGFkaV9pc19hZGRyX21hcHBlZCAoQ09SRV9BRERSIHZhZGRyLCBzaXpl X3QgY250KSAgew0KPiA+PiAtICBjaGFyIGZpbGVuYW1lW01BWF9QUk9DX05BTUVfU0laRV07DQo+ ID4+ICAgIHNpemVfdCBpID0gMDsNCj4gPj4NCj4gPj4gICAgcGlkX3QgcGlkID0gaW5mZXJpb3Jf cHRpZC5waWQgKCk7DQo+ID4+IC0gIHNucHJpbnRmIChmaWxlbmFtZSwgc2l6ZW9mIGZpbGVuYW1l LCAiL3Byb2MvJWxkL2FkaS9tYXBzIiwgKGxvbmcpDQo+ID4+IHBpZCk7DQo+ID4+IC0gIGdkYjo6 dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGRhdGENCj4gPj4gLSAgICA9IHRhcmdldF9maWxlaW9f cmVhZF9zdHJhbGxvYyAoTlVMTCwgZmlsZW5hbWUpOw0KPiA+PiAtICBpZiAoZGF0YSkNCj4gPj4g KyAgZmlsZV9yZWFkZXJfdDxjaGFyPiBhZGlfbWFwc19mcmVhZGVyDQo+ID4+ICsgICAgKHN0cmlu Z19wcmludGYgKCIvcHJvYy8lZC9hZGkvbWFwcyIsIHBpZCkpOyAgaWYNCj4gPj4gKyAoYWRpX21h cHNfZnJlYWRlci5lcnJvciAoKSkNCj4gPg0KPiA+IERpZG4ndCB5b3UgbWVhbg0KPiA+ICAgaWYg KCFhZGlfbWFwc19mcmVhZGVyLmVycm9yICgpKQ0KPiA+DQo+ID4gPw0KPiA+DQo+IA0KPiBZZXMs IHlvdSdyZSByaWdodC4NCj4gDQo+IEhvd2V2ZXIsIEkgYW0gd29uZGVyaW5nIHdoeSB0aGUgZGlh Z25vc3RpYyBtZXNzYWdlIGlzIG5vdCBhbiBlcnJvciBpbnN0ZWFkIG9mDQo+IHdhcm5pbmcuDQo+ IEFueSBpZGVhID8NCj4gDQo+IEkgd291bGQgYWxzbyBsaWtlIHRvIGNoYW5nZSB0aGUgcHJvZ3Jh bSBmbG93IHRvIHNvbWV0aGluZyBsaWtlOg0KPiANCj4gICBmaWxlX3JlYWRlcl90PGNoYXI+IGFk aV9tYXBzX2ZyZWFkZXINCj4gICAgIChzdHJpbmdfcHJpbnRmICgiL3Byb2MvJWQvYWRpL21hcHMi LCBwaWQpKTsNCj4gICBpZiAoYWRpX21hcHNfZnJlYWRlcikNCj4gICAgIHsNCj4gICAgICAgLy8g VGhpcyBpcyBza2lwcGVkIHdoZW4gdGhlIGZpbGUgaXMgZW1wdHkNCj4gICAgICAgLi4uDQo+ICAg ICB9DQo+ICAgZWxzZSBpZiAoYWRpX21hcHNfZnJlYWRlci5lcnJvciAoKSkNCj4gICAgIGVycm9y IChfKCJ1bmFibGUgdG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwNCj4gCSAgICAgYWRpX21hcHNf ZnJlYWRlci5jX2ZpbGVwYXRoICgpKTsNCj4gICByZXR1cm4gZmFsc2U7DQoNCkp1c3QgYSBtb3Jl IGdlbmVyYWwgY29tbWVudCBvbiB0aGlzOg0KVGhpcyByYXRoZXIgc291bmRzIGxpa2Ugc29tZXRo aW5nIHdoaWNoIGNhbiBiZSBhIHNlcGFyYXRlIGNvbW1pdCwgc2luY2UgdGhlIHJlYXNvbg0KZm9y IHRoaXMgY2hhbmdlIGlzIG5vdCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBoZWxwZXIgY2xhc3Mg SUlVQy4NCkkga25vdyB0aGlzIHNlZW1zIGxpa2UgYSBzdXBlciB0aW55IG5pdCwgYnV0IGl0IHdv dWxkIG1ha2UgdGhlIHJldmlldyBlYXNpZXIgaW4gbXkgb3Bpbmlvbi4NClRoZW4geW91IGNhbiBw b2ludCBvdXQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIHdoeSB5b3UgdGhpbmsgYSB3YXJuaW5nIGlz IGJldHRlci4NCg0KPiA+PiBkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5o IGluZGV4DQo+ID4+IDgxOTI3OWMwOGZjLi4wOTgzMGRmZTNhOQ0KPiA+PiAxMDA2NDQNCj4gPj4g LS0tIGEvZ2RiL3RhcmdldC5oDQo+ID4+ICsrKyBiL2dkYi90YXJnZXQuaA0KPiA+PiBAQCAtMjM0 MSw2ICsyMzQxLDg1IEBAIGV4dGVybiBMT05HRVNUIHRhcmdldF9maWxlaW9fcmVhZF9hbGxvYw0K PiA+PiAoc3RydWN0IGluZmVyaW9yICppbmYsICBleHRlcm4gZ2RiOjp1bmlxdWVfeG1hbGxvY19w dHI8Y2hhcj4NCj4gdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jDQo+ID4+ICAgICAgKHN0cnVj dCBpbmZlcmlvciAqaW5mLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgTE9OR0VTVCAqbGVuID0NCj4g Pj4gbnVsbHB0cik7DQo+ID4+DQo+ID4+ICsvKiBIZWxwZXIgY2xhc3MgZm9yIHJlYWRpbmcgdGhl IGNvbnRlbnQgb2YgYSBmaWxlIG9uIHRoZSB0YXJnZXQuICAqLw0KPiA+PiArdGVtcGxhdGUgPHR5 cGVuYW1lIFQ+IGNsYXNzIGZpbGVfcmVhZGVyX3Qgew0KPiA+PiArICAvKiBUaGUgZmlsZXBhdGgg b2YgdGhlIGZpbGUgYmVpbmcgcmVhZC4gICovDQo+ID4+ICsgIHN0ZDo6c3RyaW5nIG1fZmlsZXBh dGg7DQo+ID4+ICsgIC8qIFNtYXJ0IHBvaW50ZXIgdG8gdGhlIGRhdGEuICAqLw0KPiA+PiArICBn ZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxUPiBtX2RhdGE7DQo+ID4+ICsgIC8qIE51bWJlciBvZiBi eXRlcyByZWFkLiAgKi8NCj4gPj4gKyAgTE9OR0VTVCBtX3NpemU7DQo+ID4+ICsNCj4gPj4gK3B1 YmxpYzoNCj4gPj4gKyAgZmlsZV9yZWFkZXJfdCAoY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVwYXRo KQ0KPiA+PiArICAgIDogbV9maWxlcGF0aCAoZmlsZXBhdGgpDQo+ID4+ICsgICAgLCBtX3NpemUg KDApDQo+ID4+ICsgIHsNCj4gPj4gKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFQs IGNoYXI+KQ0KPiA+PiArICAgICAgbV9kYXRhID0gdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9j IChudWxscHRyLCBtX2ZpbGVwYXRoLmNfc3RyICgpLA0KPiA+PiArCQkJCQkgICAgJm1fc2l6ZSk7 DQo+ID4+ICsgICAgZWxzZQ0KPiA+PiArICAgICAgew0KPiA+PiArCWdkYl9ieXRlICpidWYgPSBu dWxscHRyOw0KPiA+PiArCW1fc2l6ZSA9IHRhcmdldF9maWxlaW9fcmVhZF9hbGxvYyAobnVsbHB0 ciwgbV9maWxlcGF0aC5jX3N0ciAoKSwgJmJ1Zik7DQo+ID4+ICsJbV9kYXRhID0gZ2RiOjp1bmlx dWVfeG1hbGxvY19wdHI8VD4gKHJlaW50ZXJwcmV0X2Nhc3Q8VCAqPihidWYpKTsNCj4gPj4gKyAg ICAgIH0NCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGZpbGVfcmVhZGVyX3QgKGZpbGVfcmVh ZGVyX3QgJiZvdGhlcikNCj4gPj4gKyAgICA6IG1fZmlsZXBhdGggKHN0ZDo6bW92ZSAob3RoZXIu bV9maWxlcGF0aCkpDQo+ID4+ICsgICAgLCBtX2RhdGEgKHN0ZDo6bW92ZSAob3RoZXIubV9kYXRh KSkNCj4gPj4gKyAgICAsIG1fc2l6ZSAob3RoZXIubV9zaXplKQ0KPiA+PiArICB7fQ0KPiA+DQo+ ID4gSSBob3BlIEkgZ2V0IHRoZSBDKysgcnVsZXMgcmlnaHQgaGVyZToNCj4gPiBBRkFJSywgc2lu Y2Ugd2UgaGF2ZSB0aGUgbW92ZSBjb25zdHJ1Y3Rvciwgd2UgaW1wbGljaXRseSBkZWxldGUgdGhl DQo+ID4gY29weSBjb25zdHJ1Y3RvciBhbmQgdGhlIGNvcHkgYXNzaWdubWVudCBvcGVyYXRvci4N Cj4gPg0KPiA+IFdvdWxkbid0IGl0IGJlIGNsZWFyZXIgaWYgd2UnZCB3cml0ZSB0aGlzIGV4cGxp Y2l0bHkgdXNpbmcNCj4gRElTQUJMRV9DT1BZX0FORF9BU1NJR04gPw0KPiA+DQo+IA0KPiBJIGFn cmVlLiBBZGRlZC4NCj4gDQo+ID4gSSBhbHNvIHdvbmRlcmVkIGlmIHRoZSBkZWZhdWx0IG1vdmUg Y29uc3RydWN0b3IgaXMgZG9pbmcgdGhlIHNhbWUgdGhpbmcsIHNvDQo+IHdlIGNvdWxkIHdyaXRl IHN0aC4gbGlrZToNCj4gPiBmaWxlX3JlYWRlcl90IChmaWxlX3JlYWRlcl90ICYmb3RoZXIpID0g ZGVmYXVsdDsNCj4gPg0KPiA+IGluc3RlYWQuDQo+ID4NCj4gDQo+IEZpeGVkIGFzIGZvbGxvd3M6 DQo+IA0KPiAgIGZpbGVfcmVhZGVyX3QgKGZpbGVfcmVhZGVyX3QgJiYpID0gZGVmYXVsdDsNCj4g ICBmaWxlX3JlYWRlcl90ICZvcGVyYXRvcj0gKGZpbGVfcmVhZGVyX3QgJiYpID0gZGVmYXVsdDsN Cj4gDQo+ICAgRElTQUJMRV9DT1BZX0FORF9BU1NJR04gKGZpbGVfcmVhZGVyX3QpOw0KPiANCj4g Pj4gKyAgLyogUmV0dXJuIHRydWUgaWYgdGhlIGZpbGUgd2FzIHJlYWQgc3VjY2Vzc2Z1bGx5IGJ1 dCBjb250YWluZWQgbm8NCj4gPj4gKyBkYXRhLiAgKi8gIGJvb2wgZW1wdHkgKCkgY29uc3Qgbm9l eGNlcHQgIHsgcmV0dXJuIG1fZGF0YSAhPSBudWxscHRyDQo+ID4+ICsgJiYgbV9zaXplID09IDA7 IH0NCj4gPj4gKw0KPiA+PiArICAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZSBjb3VsZCBub3Qg YmUgcmVhZC4gICovICBib29sIGVycm9yICgpDQo+ID4+ICsgY29uc3Qgbm9leGNlcHQgIHsgcmV0 dXJuIG1fZGF0YSA9PSBudWxscHRyIHx8IG1fc2l6ZSA8IDA7IH0NCj4gPj4gKyAgLyogUmV0dXJu IHRydWUgaWYgdGhlIGZpbGUgd2FzIHJlYWQgc3VjY2Vzc2Z1bGx5IGFuZCBpcyBub24tZW1wdHku DQo+ID4+ICsgKi8gIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3Qgbm9leGNlcHQgIHsg cmV0dXJuICEoZXJyb3IgKCkNCj4gPj4gKyB8fCBlbXB0eSAoKSk7IH0NCj4gPg0KPiA+IFRvIG1l IGl0IHdvdWxkIGZlZWwgbW9yZSBuYXR1cmFsIGlmIHdlIHJldHVybiB0cnVlIGFsc28gaW4gY2Fz ZSB0aGUgZmlsZSBpcw0KPiBlbXB0eS4NCj4gPiBUaGVuIHdlIGNvdWxkIGFsc28gb21pdCB0aGUg ZXJyb3IgZnVuY3Rpb24uDQo+ID4NCj4gPiBCdXQgSSBkb24ndCBoYXZlIGEgdmVyeSBzdHJvbmcg b3BpbmlvbiBhYm91dCB0aGlzLg0KPiA+DQo+ID4NCj4gPiBDaHJpc3RpbmENCj4gDQo+IFRoZSBj YXNlcyB3aGVyZSB3ZSB1c2UgLmVycm9yICgpLCB0aGUgYWx0ZXJuYXRpdmUgc2hvdWxkIGNoZWNr IHdoZXRoZXIgdGhlIGZpbGUNCj4gaXMgbm90IGVtcHR5LiBGcm9tIHRoaXMgcGVyc3BlY3RpdmUs IGluY2x1ZGluZyAhLmVtcHR5ICgpIGluIHRoZSBib29sZWFuDQo+IG9wZXJhdG9yIG1ha2VzIHNl bnNlLg0KPiANCj4gU2VlIGZvciBpbnN0YW5jZSBsaW51eF92c3lzY2FsbF9yYW5nZV9yYXcgb3Ig YWRpX2lzX2FkZHJfbWFwcGVkLCB0aGUgbG9vcA0KPiB3aXRoIHN0cnRva19yKCkgd2lsbCBiZSBz a2lwcGVkIGlmIHRoZSBjb250ZW50IGlzIGVtcHR5Lg0KDQpBcyBJIHNhaWQsIEkgZG9uJ3QgaGF2 ZSBhIHN0cm9uZyBvcGluaW9uIG9uIHRoaXMuIPCfmIoNCg0KRm9yIHRoZSB4ODYgcmVsYXRlZCBw YXJ0cyB0aGlzIHBhdGNoIGxndG0sIHNvIGZvciB0aG9zZSBwYXJ0czoNCg0KUmV2aWV3ZWQtYnk6 IENocmlzdGluYSBKb29zIDxjaHJpc3RpbmEuam9vc0BpbnRlbC5jb20+DQoNCkNocmlzdGluYQ0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KSW50ZWwgRGV1dHNjaGxh bmQgR21iSCANCg0KUmVnaXN0ZXJlZCBBZGRyZXNzOiBEb3JuYWNoZXIgU3RyYXNzZSAxLCA4NTYy MiBGZWxka2lyY2hlbiwgR2VybWFueSANCg0KVGVsOiArNDkgKDg5KSA5OTE0My0wIA0KDQp3d3cu aW50ZWwuZGUgDQoNCk1hbmFnaW5nIERpcmVjdG9yczogQ2FuZGljZSBNb29yZSwgSmVmZnJleSBT Y2huZWlkZXJtYW4sIFJhbWFjaGFuZHJhbiBTaXRhcmFtYW4NCg0KQ2hhaXJwZXJzb24gb2YgdGhl IFN1cGVydmlzb3J5IEJvYXJkOiBTb25qYSBQaWVyZXINCg0KUmVnaXN0ZXJlZCBTZWF0OiBNdW5p Y2ggQ29tbWVyY2lhbCBSZWdpc3RlciBCOiBBbXRzZ2VyaWNodCBNdW5pY2ggSFJCIDE4NjkyOA0K DQpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIG1heSBjb250YWluIGNvbmZpZGVudGlh bCBtYXRlcmlhbCBmb3INCnRoZSBzb2xlIHVzZSBvZiB0aGUgaW50ZW5kZWQgcmVjaXBpZW50KHMp LiBBbnkgcmV2aWV3IG9yIGRpc3RyaWJ1dGlvbg0KYnkgb3RoZXJzIGlzIHN0cmljdGx5IHByb2hp Yml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZA0KcmVjaXBpZW50LCBwbGVhc2UgY29u dGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGllcy4K