From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4D54ECCFA05 for ; Tue, 4 Nov 2025 17:02:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 82E7510E657; Tue, 4 Nov 2025 17:02:40 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="jaY/E8+7"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id C089010E65E; Tue, 4 Nov 2025 17:02:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762275759; x=1793811759; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=/STgQh3sZaF2PymzApeIimv6ATbpxm0mnnVQCbk2HWk=; b=jaY/E8+7Lixyv0EOyZ+lpbUW6/Q+OviwuAz2K80nSHi7yuAHFFZEVXL5 Ynk5vxz8SyOhXS/B7mo1BqCbaBuMokFC+Y1nB9l4LyVPr/EGm33u/teXD xf0hFxt7LdikT7n2obCOthJM/LzxKxWLqrbi6lesqBXYBdjnJ+HTCwqGn RA0CL5QJeAzsSoOFsp+V7jPwgxpH0Sw7aduOtvslRJrPdydOWal6K+5qv aNgByKdErVCy9cUquUaE8fThwmC9SZe9yj50xPmDHyg/ZAJLMx+5h7g9D r1EYQduPt7jQs3JsFyyG71oR2Wt2CsUg5F3XweYSvk5uM28nVX5EMgBWP Q==; X-CSE-ConnectionGUID: ga7wSxMfRc2PpN5GNp8uaw== X-CSE-MsgGUID: 98763MFVQ4qs8bOWP+93/A== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64414975" X-IronPort-AV: E=Sophos;i="6.19,279,1754982000"; d="scan'208";a="64414975" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2025 09:02:39 -0800 X-CSE-ConnectionGUID: gSemejdpTRSW9nivjrD0Ww== X-CSE-MsgGUID: j7m4JNjkQXKSh9SvPMC8QA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,279,1754982000"; d="scan'208";a="191562953" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa004.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2025 09:02:39 -0800 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) 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.27; Tue, 4 Nov 2025 09:02:38 -0800 Received: from fmsedg903.ED.cps.intel.com (10.1.192.145) 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.27 via Frontend Transport; Tue, 4 Nov 2025 09:02:38 -0800 Received: from BL0PR03CU003.outbound.protection.outlook.com (52.101.53.34) by edgegateway.intel.com (192.55.55.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Tue, 4 Nov 2025 09:02:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NuyvcyrJMnYtw5v4ncKbmFVonxr3l5+NKuqwhBlpxUuEQFkeTm2kjOI3Ul5o0W434MR3bV+bDcJzxQZk97/UwUGgc1yblZ8a9J1H1dPefZcrao6Rh1P4MO0U3+U0uXdBXopFUX/EDnTVlpdDPoQx+564/XImHFCWY478MLs5N0G6n9NnYRJh6GsVYywEgl9vr41IkDP+ruGBz0bsiBJMHv/I1SpS5qY3E66UZHISdRRypas0WK9sOby1QJZAvYU0xjOtlndAMeEq9KicHDk9xHk8Tqx3P2coJtELi8BWeJEwC5IQWtu3/na48deUB0XJ+SloZgxeXV+l25G7jXKjLw== 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=/STgQh3sZaF2PymzApeIimv6ATbpxm0mnnVQCbk2HWk=; b=FVcvM4VrexpILSccNY9tTI2LqLWFnrPYubbuPVkSrH+U9NHAggQacqWqloBVT7sqlbHdCwM4vywNBb0kxUUZ7xG4blSIMI6Uo9Lf1OR41saNkltPmjPHr4lk3OFn5xPP3C2NkEBAGpdRDRtR672JbGQsvjjIvMrrlSkEazSIPf6hnOMIxgpulhXLMpmvfLqERJSGkdTDBKlLJ6GVJi0XR1r1pcgbolwdZTGDko/fr/dwCfvkVeJut/jzVUaQQ5tTD1l4r2HAP7wZOryXMYd1NeITwCfPr6+GGUmh5ayV6yrs7xDXRXvxf7TfAAPKWB51FhVY0baeyYP1HxMUIJr8Jw== 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 CY8PR11MB7777.namprd11.prod.outlook.com (2603:10b6:930:71::14) by DS4PPFCE18D981F.namprd11.prod.outlook.com (2603:10b6:f:fc02::50) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Tue, 4 Nov 2025 17:02:35 +0000 Received: from CY8PR11MB7777.namprd11.prod.outlook.com ([fe80::60a1:eab8:65ee:6bb8]) by CY8PR11MB7777.namprd11.prod.outlook.com ([fe80::60a1:eab8:65ee:6bb8%6]) with mapi id 15.20.9275.015; Tue, 4 Nov 2025 17:02:35 +0000 From: "Govindapillai, Vinod" To: "Sousa, Gustavo" , "Roper, Matthew D" CC: "intel-xe@lists.freedesktop.org" , "Coelho, Luciano" , "Atwood, Matthew S" , "Nautiyal, Ankit K" , "Heikkila, Juha-pekka" , "intel-gfx@lists.freedesktop.org" , "Bhadane, Dnyaneshwar" , "Chauhan, Shekhar" , "Hogander, Jouni" , "De Marchi, Lucas" , "Vodapalli, Ravi Kumar" Subject: Re: [PATCH v3 21/29] drm/i915/xe3p_lpd: Enable system caching for FBC Thread-Topic: [PATCH v3 21/29] drm/i915/xe3p_lpd: Enable system caching for FBC Thread-Index: AQHcTOY79dedra/UAkyRADPDREq3rrThpn2AgAEMVYCAAANkgIAACZWA Date: Tue, 4 Nov 2025 17:02:34 +0000 Message-ID: <6638166b854fb9fb46d14fe608e51a1c60cb62b7.camel@intel.com> References: <20251103-xe3p_lpd-basic-enabling-v3-0-00e87b510ae7@intel.com> <20251103-xe3p_lpd-basic-enabling-v3-21-00e87b510ae7@intel.com> <20251104001537.GX1207432@mdroper-desk1.amr.corp.intel.com> <176227296151.3586.4499016022396976833@intel.com> <176227368961.3586.18103273933170980883@intel.com> In-Reply-To: <176227368961.3586.18103273933170980883@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.52.3-0ubuntu1 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: CY8PR11MB7777:EE_|DS4PPFCE18D981F:EE_ x-ms-office365-filtering-correlation-id: 712c2b49-dcc8-407c-8186-08de1bc3f36f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|10070799003|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?Z1BPSzM5SjlQN3Z1Z1JUeGlCNTA3Y014T3dQMzl6a29ZZUloc3NESXZIZ0xF?= =?utf-8?B?STh1cm9HS3pGYmVKc0F3SGlLUUVXbVVmUmJrMXp0NmxHdnpzUnVZK0NEei9o?= =?utf-8?B?WW9GMkpVUmh6aG9QZGF1ZzBrc0dXMkMzaGhsTFdvcDZsdSt4bXpvQkw4WjlO?= =?utf-8?B?MVI4NGpXVExpbERTSUltSUZic0t4Qlh2UzZHQjkycE95T0Qxdnd5OW1PWUJm?= =?utf-8?B?dnFXTHFFMC9xd0REY2p4Zk5xbGRwSCs5cm1RaUFKYmxjVG5aanR5RHR6S1Rt?= =?utf-8?B?SlpPWVVOYkVMNDlUQmRnaEx5aDYzVFU3N2xVN2UxY0h1M2VVNnpRUzNWSzJv?= =?utf-8?B?dDBldGF1cEdrdUFETlVIaGZDa2s0TnZNVHNKS2UyRDZIMVI5ZUlDdlZNVkhm?= =?utf-8?B?MU1TbTRWcEtxZnF5S2ZnQ1ZYbjA0amRuTDZFeE04L013N3dsU3Y5MGZjeVV6?= =?utf-8?B?WityV3k4d1JjL2JrUld0d3lWaVpSNDA4M0pEY0NpNmo2bVJncWp0OTlFRTBY?= =?utf-8?B?d0RjbGY5S0pLWkNWd2Q4bm96S3ZkVUEyUkdxMnJ3Tml5OVdSZVZVQUoyajVz?= =?utf-8?B?Wno4R0xoalRhR293S0JJRHc3RXVwZGZadFFVaHVlMXFEM3RUY1N5MFJCcldH?= =?utf-8?B?VkltcUVDbFVxR1dyc2x6SjNoZzFnaE1CZlQwQjBVK1VlVDlRKzdLZEpJU29T?= =?utf-8?B?VlltYkpUenhxRG1vRTZsUFhOc096ektES2Z4czNQcGNiNUtPR09xRGV6VWNU?= =?utf-8?B?SUZxMThZUHdXaElVU1hSdTVwV2FRZ0YzVDBnRDd4cHpuemtieS9UNmtXdXhE?= =?utf-8?B?S3hlL2xiRjMyRWd1MGkzamh3dzNZVlpzNDZwME5tdDJZbHp5ZmNlTUthbFow?= =?utf-8?B?d3dIOVZGVDdYZmpDbmp4V0hkNlNraWI3VFhrVWlySCtPOXlDc041YjNwd0k2?= =?utf-8?B?eTlSeW43UEhManpwaXpXVEkyTGd3QlBGVTNzNm10SXpzc01SV3F6VXVOZ2s3?= =?utf-8?B?R3RYRVI1M1VUcGoyTHQ1dE1jY3gwOTlhUFFmeTk5bGF6SjBVWnRKSDFtVkVm?= =?utf-8?B?SENjcEpjYTBPVW5Sc09ZTGFCZ3oxZ2xuSVlMM24xOVJHbGZaWGIyVGJZWVBW?= =?utf-8?B?MlZlTFp1UDRnNTQyUEFSbmVoeGdNbURHVFZ1SG5qaExvNFFwUnBDZ3k2R1Rn?= =?utf-8?B?YUM0Z3B5QlpCd2h4VkEvL3d1WFZUOE43bVBpaTd1eXJQeWszaktoYlZsQXUw?= =?utf-8?B?ZjVsazNHOFUrcml0SUdXTzJpalhKZU0xWUxZWVhPZTdYdGt6K3BEVm9MaWJv?= =?utf-8?B?VWhUOFBNNTlZTEVnbEVLeU1wVVJ1dkljbHBrRXpTR29WSFIyUjVaWHZSVTl0?= =?utf-8?B?Umh3ZGZMQmNUQTA0cHpQZ0xTa2tnK0JtMFUwazFNYmxMNE9WZ2l1SS9iVE5a?= =?utf-8?B?ZTcyNE5aN1UxQy9uSWx6YlBQdW9GQnJWdHpUN3lURnd6OUw1SmZRSTdOUk5u?= =?utf-8?B?ZVhQQUkvMDhKZVN6cG9pZUpaUjUyK3ZzOTRHSUdVTUxHVnQ4RlpoRzlrRjBM?= =?utf-8?B?eWpScTZjQlpSZGtybU04dGZ3ZG9GS3A5WHdoNzlsSTFtRDZHVmc3RUJqaHZx?= =?utf-8?B?eFhnS2JtUVJDcEJzL1llTldvZE5yOG1pcmd1ZkhTOWRBVzI3ckMwM1JEbk9y?= =?utf-8?B?VVE5OE9FTVZ2QjJxc09iazd0U0VSdUQyMXBGcVYzbXM0d3JLbW5PSHovU2Fo?= =?utf-8?B?NjJYV3ZJYzhRVm9UdEl5MlBqK2U2NmVQMXQ4L1BUNEpMWUU5VHNSMW5scXV3?= =?utf-8?B?akZRTEM3R1hSV0F6MWRmV21hN29ENUo4SGJtVTNmYmJvdEUvajZxSXRSN0dL?= =?utf-8?B?cXNLa2JkR2ZuN1hBNUlMVHdHemJISy9zRng0ZFAvZEgwZ1JqSFMxR0NlRlRO?= =?utf-8?B?WmxOVVl1TlZwakM4S21UYWdTUTRzWi8yRUdMNmFKY29tK2kzTGJ4c2NSb3U2?= =?utf-8?B?c25GcEgvYi9yb21zYkFKU3U4cEwrTWhXeVBQeWlMeitxZTVoMGVGSm9lTGlW?= =?utf-8?Q?KjEgL6?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY8PR11MB7777.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(10070799003)(366016)(376014)(1800799024)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UENYSEcxUnZtUElsRytkM0lOWUpvaGJNY1VJQUdKV3BJTzFhSjJHaUJvT1pF?= =?utf-8?B?SldFdW9XazNpanFMVllsVi9lUVRqdmxyWEMvNm14aXUyWk5UbjhrQnJUYWY3?= =?utf-8?B?TTlabm5TSUlwcDRwQXZ5N3kvUlZEdnlZQyt2MmRBNDUrTlBUZTM5ZFpMZzB1?= =?utf-8?B?N1ArT0h5OWNJZ3ltY1FzMTFCUkJaWXMvTGhEYmJYWlRwczY5YXNVOHd1Qk12?= =?utf-8?B?Sk5FNm8vR05XWmxkYklsSHhoYWxBeFRiNEpOdzdsSDNxc05wVWh2ejZMR01r?= =?utf-8?B?OUVHV3dOMHRVZ05mLzV0TVlqMTcxKzZtNVAzUHZJUTg5KzdaY0pTcnZDbFFz?= =?utf-8?B?eVYxSzBKV1l0d2NzRzFXNVp4akc5YWhsQXdwTG1KZTlVeHc4bTB0MUo3S04v?= =?utf-8?B?Zkk4SXRISWE5K3NjMWNaTkhQSWVHYm83K1Rtei8wVUw2eXZ3NG1xNVZHanV1?= =?utf-8?B?U2xkaUlvUDVoSVhIVHdiZis4eHZOTUpHVy9vV0cxVE92aDJhSmovQnQ3YlNr?= =?utf-8?B?emhQVnRaTS92dWkzTkxDdGdHZWpteGhYQlM2OFAvOHhpZ0RJczFnc29LbjIv?= =?utf-8?B?ZWhaSUs1Wm1ESnVBaWpHZStPaWlZUCtjMnlJajdaVG9KMHdrdUdtem90bS81?= =?utf-8?B?ajNQdlRwK3ZVNlRuSUJyZHBMRWlFR3cyaTdCeFRUTi93Y1ExdTAwTmpydC9j?= =?utf-8?B?VXp1UldWelVKZC83cCtybWJ2TE9VZVBJS1BWMVUxV2ZvVkt0Z0gzUkY2aTdE?= =?utf-8?B?eVN1NEJuSVVHMDZYeTl1SExSemx5MlRmcU40Z1hhaExxSVlWd3hDaXlyUDFl?= =?utf-8?B?Vlo1aVhWU0w4NFVua1hWT1BBdVlWdU1oRk43ejc5RHFvMWdNdHdndkxsb0VX?= =?utf-8?B?ZFVWV1RPc2dtTXpPQi82TWxPYU1CMWRRVVNvaFVyaVJzQTNuRW1xT0ZIQnps?= =?utf-8?B?OEk5TnRwSHlQem5UYzF6T25TUWxlbnhQdStudUdzbkx2R2VYazRzM2JIQkVz?= =?utf-8?B?UWk1U1F5clhnckt3MDgydm9vVGcrMHFTTzlQK3R4aXBQK1h1SEc4bWRETlNq?= =?utf-8?B?MVlEQ3ptTVcvSGpFMk9WdzMxL2p1YkFOdTczUmQyLzkxaEtIUzZFUXNoUkk1?= =?utf-8?B?SW1aTXVYa05nenVYUDN3NVNYQ3k5OURzeCtoWms1dkJTY1ZLMzBDby9YNEJB?= =?utf-8?B?QXhNRko2aHFrQW9OaHR2dnM5MHQwaXY1cmx1RGIwWExmTnhYV1NpN3dObnJ2?= =?utf-8?B?SFBEVDdPR2JoZUhMMkM0VE1MS2xhU3VJUnRBNGh3aThoZUhGeUlMT29CcFVk?= =?utf-8?B?c1I3K1ZlZWpRME9ISW54T3R2K0tNTmdiaHorWkxpU1lwaWtXK2wvKzN5UzFo?= =?utf-8?B?VXdtOVg5N3BUY2JSQU1pK3ZUbW5sZVY0TGh0OGxremYzT2hkbktFWDVkQ1RK?= =?utf-8?B?REM4SGhXQ0Y1T1BRTDJ0NmNET3pqWWhGQlp3VkF6RU9ueE5WTGkzSCtFVkRC?= =?utf-8?B?QXZTTEtXRjV4bHd3WmhlbEhZL1Nuc1ZFTTliODNWNFZTeXVmK2RHRjVlSFBp?= =?utf-8?B?bjE5YlhFTWFxL3ZpdVF1cG51VDI0QWhQUVF1d1JBSFhudnB5M3R4bkVvMWRr?= =?utf-8?B?MzhtbGx5VHBFem51QXJEdlBSeWV2NXB2aU5wTHc4RWVpYXB0dnQ4V29mMkRx?= =?utf-8?B?Nlp2YVVIMWFrbG5qbVFKbW1qU1FzNnZSRTNrVTREYjhOcnFsNjdtNDV4OXRW?= =?utf-8?B?em94MXFRNkdHVzEwWXFIQkNVcDNVZThLTnppNHZCa1ZreUFDSHE5cjBqUm9T?= =?utf-8?B?ck1zbTAxN0w4RWlkbG9rZ3hjRjZzdVZvd0JkbFJaeU9hN1VTZjkwWVNUdWZP?= =?utf-8?B?bWErcUZYWldtWk1LWDYrekhsd1VWS3hMaVJ1UlJVQTAzckozZWw4ZHRiYVgz?= =?utf-8?B?R1Z2Y0hXYStHa3JocnZ2cXdQMnZ2VkJ0Wmg2dTA3eTd4bXA0czdOU1Y1OE0x?= =?utf-8?B?b0FpakRLQms1MGkvVS8zSS83cXI0akF4eU1DNlhCbTg4cmpqWjl6cGpjZFE3?= =?utf-8?B?Uzg5NEFuL3NYbGY1WXJOZVk3aUhQNTVUWUdvcXlvYVZ4a1lla25KcThKK1RF?= =?utf-8?B?cFRpc3luUlhqb0kzVFdLS3ZiZThTeVliUXYwUDl6bzBteXhya0tFeXMwaEk5?= =?utf-8?B?THVKQkczZDR0QXhubTZ5Q0RIVVA3S3JhdXhDdkx2V3FKd2ZnbU0ycDBRellP?= =?utf-8?Q?JHEfoggDkuDPLlxn5Ls22MUvhXtKIsefsZJv81V7CM=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <83B73151419CAC4F8F8ABFFB4BD62FBE@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY8PR11MB7777.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 712c2b49-dcc8-407c-8186-08de1bc3f36f X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2025 17:02:34.9701 (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: lt/lGvVQtifkLPFIYWRFubzOYBdfdoxtzoOLP36rnhNYN1dSwnluIArzceVUEu7dhmoXo8+x/tLPl/57gCRVVMOpPI506E5ORlLy9pok8OU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPFCE18D981F X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gVHVlLCAyMDI1LTExLTA0IGF0IDEzOjI4IC0wMzAwLCBHdXN0YXZvIFNvdXNhIHdyb3RlOg0K PiBRdW90aW5nIEd1c3Rhdm8gU291c2EgKDIwMjUtMTEtMDQgMTM6MTY6MDEtMDM6MDApDQo+ID4g UXVvdGluZyBNYXR0IFJvcGVyICgyMDI1LTExLTAzIDIxOjE1OjM3LTAzOjAwKQ0KPiA+ID4gT24g TW9uLCBOb3YgMDMsIDIwMjUgYXQgMDI6MTg6MTJQTSAtMDMwMCwgR3VzdGF2byBTb3VzYSB3cm90 ZToNCj4gPiA+ID4gRnJvbTogVmlub2QgR292aW5kYXBpbGxhaSA8dmlub2QuZ292aW5kYXBpbGxh aUBpbnRlbC5jb20+DQo+ID4gPiA+IA0KPiA+ID4gPiBDb25maWd1cmUgb25lIG9mIHRoZSBGQkMg aW5zdGFuY2VzIHRvIHVzZSBzeXN0ZW0gY2FjaGluZy4gRkJDDQo+ID4gPiA+IHJlYWQvd3JpdGUg cmVxdWVzdHMgYXJlIHRhZ2dlZCBhcyBjYWNoZWFibGUgdGlsbCBhIHByb2dyYW1tZWQNCj4gPiA+ ID4gbGltaXQgaXMgcmVhY2hlZCBieSB0aGUgaHcuDQo+ID4gPiANCj4gPiA+IFdoYXQgZXhhY3Rs eSBpcyAic3lzdGVtIGNhY2hpbmc/IsKgIFdlIGhhdmUgbG90cyBvZiBkaWZmZXJlbnQNCj4gPiA+ IGNhY2hlcyBpbg0KPiA+ID4gY3VycmVudCBwbGF0Zm9ybXMsIGFuZCBpdCdzIG5vdCByZWFsbHkg b2J2aW91cyB0byBtZSBmcm9tIHRoZQ0KPiA+ID4gZGVzY3JpcHRpb24gaGVyZSAob3IgdGhlIGJz cGVjIHBhZ2UpIGV4YWN0bHkgd2hpY2ggY2FjaGUocykgYXJlDQo+ID4gPiBpbnZvbHZlZA0KPiA+ ID4gaGVyZS4NCj4gPiANCj4gPiBQZXJoYXBzIFZpbm9kIHdvdWxkIHByb3ZpZGUgbW9yZSBhc3Nl cnRpdmUgYW5zd2VycyBmb3IgdGhpcyBhbmQNCj4gPiBvdGhlcg0KPiA+IHF1ZXN0aW9ucywgYnV0 IEknbGwgYWxzbyB0cnkgdG8gcmVwbHkgYmFzZWQgb24gbXkgcmVzZWFyY2ggb24gdGhpcw0KPiA+ IHRvcGljLg0KPiA+IA0KPiA+IEFsdGhvdWdoIHRoZSBCc3BlYyBkb2VzIG5vdCBtYWtlIGl0IGNs ZWFyLCBieSBkaWdnaW5nIGEgYml0IGRlZXBlcg0KPiA+IGludG8NCj4gPiBvdGhlciBkb2N1bWVu dGF0aW9uLCAic3lzdGVtIGNhY2hlIiBhcHBlYXJzIHRvIGJlIHRoZSBTb0MtbGV2ZWwNCj4gPiBj YWNoZS4NCj4gPiANCj4gPiA+IA0KPiA+ID4gSXMgdHVybmluZyB0aGlzIG9uIGFsd2F5cyBhIHdp biBvciBpcyBpdCBzaXR1YXRpb25hbD/CoCBJLmUuLCBpcw0KPiA+ID4gdGhlcmUNCj4gPiA+IGFu eSBwb3RlbnRpYWwgZm9yIGRpc3BsYXkgbWVtb3J5IHRyYWZmaWMgdG8gZmlsbCBhIGNhY2hlIHdp dGggRkJDDQo+ID4gPiBkYXRhDQo+ID4gPiBieSBldmljdGluZyBkYXRhIHRoYXQgd2FzIHBhcnQg b2YgdGhlIENQVSBvciBHVCdzIHdvcmtpbmcgc2V0P8KgDQo+ID4gPiBJZiBzbywNCj4gPiA+IHRo YXQgc2VlbXMgbGlrZSBpdCBjb3VsZCBwb3RlbnRpYWxseSBoYXJtIHRoZSBwZXJmb3JtYW5jZSBv Zg0KPiA+ID4gb3RoZXINCj4gPiA+IHdvcmtsb2FkcyBydW5uaW5nIG9uIHRoZSBwbGF0Zm9ybS4N Cj4gPiA+IA0KPiA+ID4gT3IgaXMgdGhpcyB3aG9sZSB0aGluZyBhYm91dCBhIGNvbXBsZXRlbHkg bmV3IGNhY2hlICh1bnJlbGF0ZWQgdG8NCj4gPiA+IGFuZCB1bnVzYWJsZSBieSBhbnl0aGluZyBl bHNlKSB3aGljaCBpcyBkZXZvdGVkIHNvbGVseSB0byBGQkM/DQo+ID4gDQo+ID4gRnJvbSB3aGF0 IEkgdW5kZXJzdG9vZCBpbiB0aGUgZG9jcywgdGhlIHZhbHVlDQo+ID4gRkJDX1NZU19DQUNIRV9U QUdfVVNFX1JFU19TUEFDRSAoaS5lLiAwYjExKSBmb3IgZmllbGQgIkNhY2hlIFRhZ3MiDQo+ID4g aW5kaWNhdGVzIHRoYXQgdGhlIGNhY2hpbmcgd2lsbCBoYXBwZW4gaW4gYSByZXNlcnZlZCBzcGFj ZQ0KPiA+IGRlZGljYXRlZCB0bw0KPiA+IHRoZSBkaXNwbGF5IGVuZ2luZS7CoCBTbyBJIGJlbGll dmUgd2Ugd291bGRuJ3QgYmUgaW50ZXJmZXJpbmcgd2l0aA0KPiA+IG90aGVyDQo+ID4gYWdlbnRz Lg0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiBCc3BlYzogNzQ3MjINCj4gPiA+IA0K PiA+ID4gWW91IG1pZ2h0IHdhbnQgdG8gYWRkIDY4ODgxIGhlcmUgc2luY2UgaXQgaGFzIGEgYml0 IG1vcmUNCj4gPiA+IGluZm9ybWF0aW9uDQo+ID4gPiBhYm91dCBob3cgd2UncmUgYWN0dWFsbHkg c3VwcG9zZWQgdG8gc2V0IHRoZSBmaWVsZHMgZG9jdW1lbnRlZCBvbg0KPiA+ID4gNzQ3MjIuDQo+ ID4gDQo+ID4gQWdyZWVkLg0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFZp bm9kIEdvdmluZGFwaWxsYWkNCj4gPiA+ID4gPHZpbm9kLmdvdmluZGFwaWxsYWlAaW50ZWwuY29t Pg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFNvdXNhIDxndXN0YXZvLnNvdXNhQGlu dGVsLmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9mYmMuY8KgwqDCoMKgwqAgfCA0Nw0KPiA+ID4gPiArKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2ZiY19yZWdzLmggfMKgIDkgKysrKysNCj4gPiA+ID4gwqAyIGZpbGVzIGNoYW5nZWQsIDU2IGlu c2VydGlvbnMoKykNCj4gPiA+ID4gDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9mYmMuYw0KPiA+ID4gPiBpbmRleCAyNGI3Mjk1MWVhM2MuLmUyZTU1 YzU4ZGRiYyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9mYmMuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2ZiYy5jDQo+ID4gPiA+IEBAIC0xMjcsNiArMTI3LDkgQEAgc3RydWN0IGludGVsX2Zi YyB7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBpbnRlbF9mYmNfc3RhdGUgc3RhdGU7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqAgY29uc3QgY2hhciAqbm9fZmJjX3JlYXNvbjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKg wqDCoMKgwqAgLyogT25seSBvbmUgb2YgRkJDIGluc3RhbmNlcyBjYW4gdXNlIHRoZSBzeXN0ZW0g Y2FjaGUNCj4gPiA+ID4gKi8NCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGJvb2wgb3duX3N5c19j YWNoZTsNCj4gPiANCj4gPiBJZiB3ZSBnbyBhaGVhZCB3aXRoIHVzaW5nIHRoaXMgbWVtYmVyLCBJ IHdvdWxkIHByZWZlciB0aGF0IHdlIHVzZWQNCj4gPiAib3duc19zeXNfY2FjaGUiIChqdXN0IGxp a2Ugd2UgdXNlICJoYXNfc29tZXRoaW5nIiBpbnN0ZWFkIG9mDQo+ID4gImhhdmVfc29tZXRoaW5n IikuDQo+ID4gDQo+ID4gPiA+IMKgfTsNCj4gPiA+ID4gwqANCj4gPiA+ID4gwqBzdGF0aWMgY2hh ciBmYmNfbmFtZShlbnVtIGludGVsX2ZiY19pZCBmYmNfaWQpDQo+ID4gPiA+IEBAIC01NjksMTIg KzU3Miw1MSBAQCBzdGF0aWMgYm9vbCBpbGtfZmJjX2lzX2NvbXByZXNzaW5nKHN0cnVjdA0KPiA+ ID4gPiBpbnRlbF9mYmMgKmZiYykNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gaW50 ZWxfZGVfcmVhZChmYmMtPmRpc3BsYXksDQo+ID4gPiA+IElMS19EUEZDX1NUQVRVUyhmYmMtPmlk KSkgJiBEUEZDX0NPTVBfU0VHX01BU0s7DQo+ID4gPiA+IMKgfQ0KPiA+ID4gPiDCoA0KPiA+ID4g PiArc3RhdGljIHZvaWQgbnZsX2ZiY19wcm9ncmFtX3N5c3RlbV9jYWNoZShzdHJ1Y3QgaW50ZWxf ZmJjDQo+ID4gPiA+ICpmYmMsIGJvb2wgZW5hYmxlKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDC oMKgwqDCoMKgwqAgc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXkgPSBmYmMtPmRpc3BsYXk7 DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCB1MzIgY2ZiX29mZnNldCwgdXNhZ2U7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmZiYy0+bG9j ayk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIHVzYWdlID0gaW50ZWxfZGVf cmVhZChkaXNwbGF5LA0KPiA+ID4gPiBOVkxfRkJDX1NZU19DQUNIRV9VU0FHRV9DRkcpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAvKiBTeXN0ZW0gY2FjaGUgYWxyZWFkeSBi ZWluZyB1c2VkIGJ5IGFub3RoZXIgcGlwZSAqLw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgaWYg KGVuYWJsZSAmJiAodXNhZ2UgJg0KPiA+ID4gPiBGQkNfU1lTX0NBQ0hFX1RBR19VU0VfUkVTX1NQ QUNFKSkNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+ ID4gPiANCj4gPiA+IFJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGN1cnJlbnQgcmVnaXN0ZXIg Y29udGVudHMsIHNob3VsZCB3ZQ0KPiA+ID4gYmUNCj4gPiA+IHNhbml0aXppbmcgdGhpcyBvbiBk cml2ZXIgcHJvYmUgKGluIGNhc2UgdGhlIHByZS1PUyBmaXJtd2FyZQ0KPiA+ID4gYWxyZWFkeSBz ZXQNCj4gPiA+IHRoaXMgdXApIGFuZCB0aGVuIG1ha2luZyBvdXIgb3duIGRlY2lzaW9ucyAoYXMg cGFydCBvZiBhbiBhdG9taWMNCj4gPiA+IHRyYW5zYWN0aW9uKSBhYm91dCB3aGljaCBwaXBlIHRv IHByaW9yaXRpemUgYWZ0ZXIgdGhhdD8NCj4gPiANCj4gPiBJIGFncmVlLg0KPiA+IA0KPiA+ID4g DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIC8qIE9ubHkgdGhlIGZiYyBpbnN0 YW5jZSB3aGljaCBvd25zIHN5c3RlbSBjYWNoZSBjYW4NCj4gPiA+ID4gZGlzYWJsZSBpdCAqLw0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgaWYgKCFlbmFibGUgJiYgIWZiYy0+b3duX3N5c19jYWNo ZSkNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+ID4g PiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIC8qDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgICogTm90IHByb2dyYW1taW5nIHRoZSBjYWNoZSBsaW1pdCBhbmQgY2FjaGUgcmVhZGluZw0K PiA+ID4gPiBlbmFibGUgYml0cyBleHBsaWNpdGx5DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg ICogaGVyZS4gVGhlIGRlZmF1bHQgdmFsdWVzIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhvc2UNCj4g PiA+ID4gYW5kIHRoYXQgY291bGQgbGVhdmUNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgKiBh ZGp1c3RtZW50cyBvZiB0aG9zZSBiaXRzIHRvIHRoZSBzeXN0ZW0gaHcgcG9saWN5DQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgICoNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgKiBUT0RPOiBj aGVjayBpZiB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgcHJvZ3JhbSB0aGVzZT8NCj4gPiA+IA0KPiA+ ID4gVGhlcmUncyBubyBoYXJkd2FyZSBkZWZhdWx0IGRvY3VtZW50ZWQgZm9yIHRoZSByYW5nZSBm aWVsZCwgc28NCj4gPiA+IHVubGVzcw0KPiA+ID4gdGhlIHByZS1PUyBmaXJtd2FyZSBzZXRzIGl0 IHVwICh3aGljaCB3ZSBwcm9iYWJseSBzaG91bGRuJ3QgcmVseQ0KPiA+ID4gb24pLA0KPiA+ID4g SSdkIGV4cGVjdCB0aGlzIHRvIGJlIDA7IEkgZG9uJ3QgdGhpbmsgdGhhdCdzIHdoYXQgd2Ugd2Fu dC4NCj4gPiANCj4gPiBBZ3JlZWQuDQo+ID4gDQo+ID4gVGhlIEJzcGVjIGNsZWFybHkgc3RhdGVz IHRoYXQgd2Ugc2hvdWxkIHNldCAiQ2FjaGVhYmxlIFJhbmdlIiB0bw0KPiA+IDMyLCB0aGUNCj4g PiBlcXVpdmFsZW50IG9mIDJNQiAoaS5lLiAzMiBjaHVua3Mgb2YgNjRLQikuwqAgU28geWVzLCB3 ZSBzaG91bGRuJ3QNCj4gPiByZWx5DQo+ID4gb24gYW55IGV4aXN0aW5nIHZhbHVlIGFuZCBhbHdh eXMgdXNlIDMyLg0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgICovDQo+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBjZmJfb2Zmc2V0ID0gZW5hYmxlID8gaTkxNV9nZW1fc3Rv bGVuX25vZGVfb2Zmc2V0KGZiYy0NCj4gPiA+ID4gPmNvbXByZXNzZWRfZmIpIDogMDsNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgIHVzYWdlIHw9IEZCQ19TWVNfQ0FDSEVfU1RBUlRfQkFTRShjZmJf b2Zmc2V0KTsNCj4gPiA+IA0KPiA+ID4gQW5kIGlmIHNvbWV0aGluZyAqZGlkKiBzZXQgdGhpcyB1 cCBhbHJlYWR5LCB0aGVuIE9SJ2luZyBhIG5ldw0KPiA+ID4gYWRkcmVzcw0KPiA+ID4gb3ZlciB0 aGUgb2xkIG9uZSBpc24ndCBnb2luZyB0byB3b3JrLsKgIFdlJ2QgbmVlZCAiKG9sZCAmIH5tYXNr KSB8DQo+ID4gPiBuZXciDQo+ID4gPiB0byBlbnN1cmUgd2UgZG9uJ3QgaGF2ZSBsZWZ0b3ZlciBi aXRzIHN0aWxsIHNldCBieSBhY2NpZGVudC7CoCBCdXQNCj4gPiA+IGl0DQo+ID4gDQo+ID4gWWVh aC7CoCBUaGUgY3VycmVudCBjb2RlIGlzIG5vdCBhY2NvdXRpbmcgZm9yIGFueSBwcmUtZXhpc3Rp bmcgdmFsdWUNCj4gPiBoZXJlDQo+ID4gYW5kIGlzIHN1YmplY3QgdG8gY29ycnVwdGlvbiBieSBz aW1wbHkgT1InaW5nLsKgIFRoaXMgbmVlZHMgdG8gYmUNCj4gPiBmaXhlZC4NCj4gPiANCj4gPiBB bm90aGVyIHRoaW5nIHRvIGZpeCBoZXJlIGlzIHRoYXQgdGhlIGZpZWxkICJDYWNoZSBTdGFydCBC YXNlIg0KPiA+IG5lZWRzIHRvDQo+ID4gYmUgaW4gIjRrIGJ5dGUgY2h1bmtzIiBhbmQgd2UgYXJl IGN1cnJlbnRseSB1c2luZyBjZmJfb2Zmc2V0DQo+ID4gZGlyZWN0bHkNCj4gPiBpbnN0ZWFkIG9m IGFwcGx5aW5nIHRoZSBuZWNlc3Nhcnkgc2hpZnQuDQo+ID4gDQo+ID4gPiB3b3VsZCBwcm9iYWJs eSBiZSBiZXR0ZXIgdG8ganVzdCBhdm9pZCBSTVctc3R5bGUgaGFuZGxpbmcgaW4NCj4gPiA+IGdl bmVyYWwgYW5kDQo+ID4gPiBidWlsZCBhIGNvbXBsZXRlIHJlZ2lzdGVyIHZhbHVlIHdpdGggZXhh Y3RseSB3aGF0IHdlIHdhbnQgcmF0aGVyDQo+ID4gPiB0aGFuDQo+ID4gPiB0cnlpbmcgdG8gbW9k aWZ5IHRoZSBwcmUtZXhpc3RpbmcgdmFsdWUuDQo+ID4gDQo+ID4gVGhlIEJzcGVjIHNheXMgdGhh dCB3ZSBzaG91bGQga2VlcCBvdGhlciBmaWVsZHMgd2l0aCB0aGVpciBkZWZhdWx0DQo+ID4gdmFs dWVzLsKgIFNvLCBJIGJlbGlldmUgd2UgZG8gbmVlZCB0byBoYXZlIFJNVyBsb2dpYyBoZXJlLg0K PiA+IA0KPiA+ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCB1c2FnZSB8PSBlbmFibGUgPyBG QkNfU1lTX0NBQ0hFX1RBR19VU0VfUkVTX1NQQUNFIDoNCj4gPiA+ID4gRkJDX1NZU19DQUNIRV9U QUdfRE9OVF9DQUNIRTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgaW50ZWxf ZGVfd3JpdGUoZGlzcGxheSwgTlZMX0ZCQ19TWVNfQ0FDSEVfVVNBR0VfQ0ZHLA0KPiA+ID4gPiB1 c2FnZSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGZiYy0+b3duX3N5c19j YWNoZSA9IGVuYWJsZTsNCj4gPiA+IA0KPiA+ID4gSXQgZmVlbHMgbGlrZSBpbnN0ZWFkIG9mIGhh dmluZyB0aGlzIGFzIGEgYm9vbGVhbiBmbGFnIGluIGZiYywNCj4gPiA+IHRoaXMNCj4gPiA+IHNo b3VsZCBiZSBhIHBvaW50ZXIvSUQgdHJhY2tlZCBhdCB0aGUgaW50ZWxfZGlzcGxheSBsZXZlbC7C oCBFLmcuLA0KPiA+ID4gDQo+ID4gPiDCoMKgwqDCoMKgwqAgZGlzcGxheS0+c3lzX2NhY2hlX2Zi YyA9IGZiYzsNCj4gPiANCj4gPiBZZWFoLsKgIEEgc2luZ2xlIG1lbWJlciBpbnN0ZWFkIG9mIG9u ZSBmb3IgZWFjaCBGQkMgc2VlbXMgdG8gYmUNCj4gPiBlbm91Z2guDQo+ID4gDQo+ID4gPiANCj4g PiA+IG9yIHBvc3NpYmx5IGNvbnZlcnRlZCBvdmVyIHRvIHNvbWV0aGluZyB0cmFja2VkIHdpdGgg YXRvbWljIHN0YXRlDQo+ID4gPiBzbw0KPiA+ID4gdGhhdCB3ZSBjYW4gbWFrZSBiZXR0ZXIgaGln aC1sZXZlbCBkZWNpc2lvbnMgYWJvdXQgd2hpY2ggRkJDIHdlDQo+ID4gPiB3YW50IHRvDQo+ID4g PiBlbmFibGUgdGhpcyBvbiBhcyB2YXJpb3VzIGRpc3BsYXlzIGdldCBlbmFibGVkL2Rpc2FibGVk Lg0KPiA+IA0KPiA+IFRoYXQgd291bGQgYmUgbmljZS7CoCBJIHNlZSBpdCBhcyBzb21ldGhpbmcg dGhhdCBjb3VsZCBiZSBkb25lIGFzIGENCj4gPiBmb2xsb3ctdXAuDQo+ID4gDQo+ID4gPiANCj4g PiA+IA0KPiA+ID4gTWF0dA0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgIGRybV9kYmdfa21zKGRpc3BsYXktPmRybSwgIlN5c3RlbSBjYWNoaW5nIGZvciBGQkNbJWRd DQo+ID4gPiA+ICVzXG4iLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZmJjLT5pZCwgZW5hYmxlID8gImNvbmZpZ3VyZWQiIDoNCj4gPiA+ID4gImNsZWFy ZWQiKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiDCoHN0YXRpYyB2b2lkIGlsa19m YmNfcHJvZ3JhbV9jZmIoc3RydWN0IGludGVsX2ZiYyAqZmJjKQ0KPiA+ID4gPiDCoHsNCj4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSA9IGZiYy0+ ZGlzcGxheTsNCj4gPiA+ID4gwqANCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9kZV93 cml0ZShkaXNwbGF5LCBJTEtfRFBGQ19DQl9CQVNFKGZiYy0+aWQpLA0KPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfZ2VtX3N0b2xlbl9u b2RlX29mZnNldChmYmMtDQo+ID4gPiA+ID5jb21wcmVzc2VkX2ZiKSk7DQo+ID4gPiA+ICsNCj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgIGlmIChESVNQTEFZX1ZFUihkaXNwbGF5KSA+PSAzNSkNCj4g DQo+IEkgZm9yZ290IHRvIG1lbnRpb24gdGhpcyBvbiBteSBwcmV2aW91cyBlbWFpbDogSSB0aGlu ayBCc3BlYyBpcw0KPiBtaXNzaW5nDQo+IHRoaXMgaW5mbywgYnV0IHRoaXMgZmVhdHVyZSBpcyBh cHBsaWNhYmxlIG9ubHkgdG8gaW50ZWdyYXRlZCBkaXNwbGF5LA0KPiBzbw0KPiB3ZSBwcm9iYWJs eSB3YW50IHRvIGxpbWl0IHRoZSBjb25kaXRpb24gYWJvdmUgdG8gcmVmbGVjdCB0aGF0Lg0KPiAN Cj4gUGVyaGFwcyBpdCB3b3VsZCBiZSBnb29kIHRvIGhhdmUgYSBtYWNybyBsaWtlDQo+IA0KPiDC oCAjZGVmaW5lIEhBU19GQkNfU1lTX0NBQ0hFKF9fZGlzcGxheSkgKERJU1BMQVlfVkVSKF9fZGlz cGxheSkgPj0gMzUNCj4gJiYgIShfX2Rpc3BsYXkpLT5wbGF0Zm9ybS5kZ2Z4KQ0KDQpBY2suDQoN CkJSDQpWaW5vZA0KDQo+IA0KPiAtLQ0KPiBHdXN0YXZvIFNvdXNhDQo+IA0KPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG52bF9mYmNfcHJvZ3JhbV9zeXN0ZW1fY2FjaGUo ZmJjLCB0cnVlKTsNCj4gPiANCj4gPiBPbmUgdGhpbmcgdGhhdCBjb25jZXJucyBtZSBoZXJlIGlz IHRoYXQgd2UgYXJlIHByb2dyYW1taW5nDQo+ID4gU1lTX0NBQ0hFX1VTQUdFIG11bHRpcGxlIHRp bWVzIGFuZCB0aGUgQnNwZWMgc2VlbXMgdG8gaW5kaWNhdGUgdGhhdA0KPiA+IHdlDQo+ID4gc2hv dWxkIGRvIGl0IG9ubHkgb25jZToNCj4gPiANCj4gPiDCoMKgICJDb25maWd1cmUgU1lTX0NBQ0hF X1VTQUdFIHRvIHNldHVwIHRoZSBjYWNoaW5nIGJlZm9yZSBlbmFibGluZw0KPiA+IMKgwqAgZmly c3QgRkJDIGFuZCBsZWF2ZSBpdCBhbG9uZSBhZnRlciB0aGF0LiINCj4gPiANCj4gPiBJIGJlbGll dmUgd2Ugc2hvdWxkIGdldCBzb21lIGNsYXJpZmljYXRpb24gd2l0aCB0aGUgSFcgdGVhbSB0bw0K PiA+IHZlcmlmeSBpZg0KPiA+IHdoYXQgd2UgYXJlIGRvaW5nIGhlcmUgaXMgbGVnYWwuwqAgQnkg ZG9pbmcgaXQgbXVsdGlwbGUgdGltZXMsIHdlDQo+ID4gY291bGQNCj4gPiBiZSBpbnRlcmZlcmlu ZyB3aXRoIG90aGVyIGFnZW50cyAoZS5nLiBQQ29kZSkgdGhhdCBjb3VsZCBiZSBkb2luZw0KPiA+ IHNvbWUNCj4gPiBkeW5hbWljIGFkanVzdG1lbnRzLg0KPiA+IA0KPiA+IC0tDQo+ID4gR3VzdGF2 byBTb3VzYQ0KPiA+IA0KPiA+ID4gPiDCoH0NCj4gPiA+ID4gwqANCj4gPiA+ID4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX2ZiY19mdW5jcyBpbGtfZmJjX2Z1bmNzID0gew0KPiA+ID4gPiBA QCAtOTUyLDYgKzk5NCw4IEBAIHN0YXRpYyB2b2lkDQo+ID4gPiA+IGludGVsX2ZiY19wcm9ncmFt X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9mYmMgKmZiYykNCj4gPiA+ID4gwqANCj4gPiA+ID4g wqBzdGF0aWMgdm9pZCBfX2ludGVsX2ZiY19jbGVhbnVwX2NmYihzdHJ1Y3QgaW50ZWxfZmJjICpm YmMpDQo+ID4gPiA+IMKgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGludGVsX2Rp c3BsYXkgKmRpc3BsYXkgPSBmYmMtPmRpc3BsYXk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoCBpZiAoV0FSTl9PTihpbnRlbF9mYmNfaHdfaXNfYWN0aXZlKGZiYykpKQ0KPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+ID4gPiA+IMKg DQo+ID4gPiA+IEBAIC05NTksNiArMTAwMyw5IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfZmJjX2Ns ZWFudXBfY2ZiKHN0cnVjdA0KPiA+ID4gPiBpbnRlbF9mYmMgKmZiYykNCj4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGZi Yy0NCj4gPiA+ID4gPmNvbXByZXNzZWRfbGxiKTsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCBp ZiAoaTkxNV9nZW1fc3RvbGVuX25vZGVfYWxsb2NhdGVkKGZiYy0NCj4gPiA+ID4gPmNvbXByZXNz ZWRfZmIpKQ0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpOTE1X2dl bV9zdG9sZW5fcmVtb3ZlX25vZGUoZmJjLQ0KPiA+ID4gPiA+Y29tcHJlc3NlZF9mYik7DQo+ID4g PiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGlmIChESVNQTEFZX1ZFUihkaXNwbGF5KSA+ PSAzNSkNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBudmxfZmJjX3By b2dyYW1fc3lzdGVtX2NhY2hlKGZiYywgZmFsc2UpOw0KPiA+ID4gPiDCoH0NCj4gPiA+ID4gwqAN Cj4gPiA+ID4gwqB2b2lkIGludGVsX2ZiY19jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpk aXNwbGF5KQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9mYmNfcmVncy5oDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9mYmNfcmVncy5oDQo+ID4gPiA+IGluZGV4IDc3ZDgzMjFjNGZiMy4uNTkyY2QyMzg0 MjU1IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2ZiY19yZWdzLmgNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9mYmNfcmVncy5oDQo+ID4gPiA+IEBAIC0xMjgsNCArMTI4LDEzIEBADQo+ID4gPiA+ IMKgI2RlZmluZcKgwqAgRkJDX1JFTkRfTlVLRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgUkVHX0JJVCgyKQ0KPiA+ID4gPiDCoCNkZWZpbmXCoMKgIEZCQ19S RU5EX0NBQ0hFX0NMRUFOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJFR19CSVQoMSkN Cj4gPiA+ID4gwqANCj4gPiA+ID4gKyNkZWZpbmUgTlZMX0ZCQ19TWVNfQ0FDSEVfVVNBR0VfQ0ZH wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgDQo+ID4gPiA+IF9NTUlPKDB4MTM0NEUwKQ0KPiA+ID4g PiArI2RlZmluZcKgwqAgRkJDX1NZU19DQUNIRV9TVEFSVF9CQVNFX01BU0vCoMKgwqDCoMKgwqDC oMKgDQo+ID4gPiA+IFJFR19HRU5NQVNLKDMxLCAxNikNCj4gPiA+ID4gKyNkZWZpbmXCoMKgIEZC Q19TWVNfQ0FDSEVfU1RBUlRfQkFTRShiYXNlKcKgwqDCoMKgwqDCoMKgDQo+ID4gPiA+IFJFR19G SUVMRF9QUkVQKEZCQ19TWVNfQ0FDSEVfU1RBUlRfQkFTRV9NQVNLLCAoYmFzZSkpDQo+ID4gPiA+ ICsjZGVmaW5lwqDCoCBGQkNfU1lTX0NBQ0hFQUJMRV9SQU5HRV9NQVNLwqDCoMKgwqDCoMKgwqDC oMKgDQo+ID4gPiA+IFJFR19HRU5NQVNLKDE1LCA0KQ0KPiA+ID4gPiArI2RlZmluZcKgwqAgRkJD X1NZU19DQUNIRUFCTEVfUkFOR0UocmFuZ2UpwqDCoMKgwqDCoMKgwqANCj4gPiA+ID4gUkVHX0ZJ RUxEX1BSRVAoRkJDX1NZU19DQUNIRUFCTEVfUkFOR0VfTUFTSywgKHJhbmdlKSkNCj4gPiA+ID4g KyNkZWZpbmXCoMKgIEZCQ19TWVNfQ0FDSEVfVEFHX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgUkVHX0dFTk1BU0soMywNCj4gPiA+ID4gMikNCj4gPiA+ID4gKyNkZWZpbmXCoMKg IEZCQ19TWVNfQ0FDSEVfVEFHX0RPTlRfQ0FDSEXCoMKgwqDCoMKgwqDCoMKgwqANCj4gPiA+ID4g UkVHX0ZJRUxEX1BSRVAoRkJDX1NZU19DQUNIRV9UQUdfTUFTSywgMCkNCj4gPiA+ID4gKyNkZWZp bmXCoMKgIEZCQ19TWVNfQ0FDSEVfVEFHX1VTRV9SRVNfU1BBQ0XCoMKgwqDCoMKgwqANCj4gPiA+ ID4gUkVHX0ZJRUxEX1BSRVAoRkJDX1NZU19DQUNIRV9UQUdfTUFTSywgMykNCj4gPiA+ID4gKw0K PiA+ID4gPiDCoCNlbmRpZiAvKiBfX0lOVEVMX0ZCQ19SRUdTX18gKi8NCj4gPiA+ID4gDQo+ID4g PiA+IC0tIA0KPiA+ID4gPiAyLjUxLjANCj4gPiA+ID4gDQo+ID4gPiANCj4gPiA+IC0tIA0KPiA+ ID4gTWF0dCBSb3Blcg0KPiA+ID4gR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXINCj4gPiA+IExp bnV4IEdQVSBQbGF0Zm9ybSBFbmFibGVtZW50DQo+ID4gPiBJbnRlbCBDb3Jwb3JhdGlvbg0KDQo=