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 E9E89C02192 for ; Mon, 3 Feb 2025 12:13:15 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A2FD589950; Mon, 3 Feb 2025 12:13:15 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="jEnZk5KB"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26F6C89950 for ; Mon, 3 Feb 2025 12:13:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1738584794; x=1770120794; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=6tcquf3taLlJP+7ONRvZDDSiOMMg6sAQ+oFfyYGjH40=; b=jEnZk5KBSx9xJBNbM67E6bGlmvLVhSCn8fSST0YX8tJc1sI1EqhxKcG5 9b6j3fDQvYM3AqKuMEidzbismIktahA9N7QYoBt8mSxo3v0hAjotOJ6+8 SlMgxoCrOXRUgqZnJYurp2q7hyyTQpGCyEusLfiYm7Z+V5qaflrgG2iEj douAMQsBoKd5hLBLLdp5A0YQ3qUSqDrt3Eg6wjTbZaX5ZLi5Mwhdc8un9 ycdLbxdDuzPRKfy8UedGQJovnslKb+OnKGv1fUqyw80l2bJwW3ZU32ra5 68V8onBOQKtrof0X8NQDjov4rC9T8cG9s3T0AY31xyQ5vPAGAZB7TH3M2 A==; X-CSE-ConnectionGUID: goLaccP8Sj2JaRdkohVRNg== X-CSE-MsgGUID: VKYjRuxoSRStd/LLLOlVZw== X-IronPort-AV: E=McAfee;i="6700,10204,11314"; a="50488533" X-IronPort-AV: E=Sophos;i="6.12,310,1728975600"; d="scan'208";a="50488533" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Feb 2025 04:13:13 -0800 X-CSE-ConnectionGUID: bStNJ39MQkiG3tv7/zKvQw== X-CSE-MsgGUID: Egr47gylTXOZ5tGpzM19JQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,255,1732608000"; d="scan'208";a="110839048" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmviesa010.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 03 Feb 2025 04:13:13 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44; Mon, 3 Feb 2025 04:13:12 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44 via Frontend Transport; Mon, 3 Feb 2025 04:13:12 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.177) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Mon, 3 Feb 2025 04:13:12 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZUUf8jUbyHis8mOYiyzA53e7uO91cpapwQ1rv2Qbdwu9510EWxHOO5ZoVHC5ThWFBcqN8u39VZT0d1yfI+sXgVlhHhbMZaQ70iyR3l4Dpz3QnmpcuYXWvHj0tRZwkiAp1p/Y344W65I+y/q9vvp5f2g6oFV9wDXhsD8Em2Y+t9dpG4YPoVJJl8refLKmxAwfxbswRDGfysFZ6juX9SIB/tcXS9fReFOqD+0Prd2TvwxrWi0S/e92nwWL5Lwm4CCu8ou3x239SPCPOdGVMMjHWXBQ19ToW4Hf5HsKLelkaMuA+3ovVBXAfHUu+WiSF2VMCrf0eovZtWH8/ncikvWF1Q== 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=6tcquf3taLlJP+7ONRvZDDSiOMMg6sAQ+oFfyYGjH40=; b=gJyMiUzjWshEH91mS+WGDLbSc4FiDwDRPqx4GV9pTZEVAQtybvPWQ471QpI6N/xHVha7NofctvOUHHbv0shoXZfULeNyfOkN0J9shO0ShWgBx3VqyBvJymT5F9h8zAyU83PGnPVzCUbYXp/H/0RFJA0Rw+/C9CpC5+YEm0lvVXOByQajfBBy2ynbV7wKX6itdTz2kU9/68z6kU+x+qJc7Z/exq4yOBaqs1CQqjdPUVO58rkPBDCT3LYAnurSTf0b0MUpiAVuVNWyYcDJN6TTa2V3k8oZV/XVQWe8TNg9fOLEt8y7L3iupPlc5QEsm8E1US4aTeZKV/Mk7S8rDMkowg== 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 SA1PR11MB6822.namprd11.prod.outlook.com (2603:10b6:806:29f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 12:12:43 +0000 Received: from CY8PR11MB7777.namprd11.prod.outlook.com ([fe80::60a1:eab8:65ee:6bb8]) by CY8PR11MB7777.namprd11.prod.outlook.com ([fe80::60a1:eab8:65ee:6bb8%4]) with mapi id 15.20.8398.021; Mon, 3 Feb 2025 12:12:43 +0000 From: "Govindapillai, Vinod" To: "igt-dev@lists.freedesktop.org" , "Reddy Guddati, Santhosh" CC: "Joshi, Kunal1" , "Naladala, Ramanaidu" , "Sharma, Swati2" , "B, Jeevan" Subject: Re: [PATCH i-g-t v7 1/1] tests/intel/kms_dirty_fbc: Add kms_dirty_fbc test for DIRTYFB ioctl with fbc Thread-Topic: [PATCH i-g-t v7 1/1] tests/intel/kms_dirty_fbc: Add kms_dirty_fbc test for DIRTYFB ioctl with fbc Thread-Index: AQHbdeY6JfG8O8Gr3UaDLYJZQI+URLM1fgoA Date: Mon, 3 Feb 2025 12:12:43 +0000 Message-ID: References: <20250203024652.441405-1-santhosh.reddy.guddati@intel.com> <20250203024652.441405-2-santhosh.reddy.guddati@intel.com> In-Reply-To: <20250203024652.441405-2-santhosh.reddy.guddati@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_|SA1PR11MB6822:EE_ x-ms-office365-filtering-correlation-id: dac95568-8a40-4db5-4db5-08dd444c0fff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?Q3BCSnZqVVZlbkdxbmlQWUY5N01TamV3WVhlUjgzQ3dQQS9OOU9zdE1MaDZS?= =?utf-8?B?UWZRSmhXQ2xPbjhtVDNMKzNaTGpHV2lCUFZpZVEyRWFCcGJyUTNUaGQrb1M3?= =?utf-8?B?K0FYR0c1YTBuTDMwdkFQU3pxcFpUTE1JcExDcFFybEdWandEZnBiemRmNGFm?= =?utf-8?B?cFlyb09TWlZJdHJxelJMUGEyTE9vemdlRk9SOVM5cWlEMkR3WVBIUWpPQ0FX?= =?utf-8?B?NWVIaHNQOXlDQTN2Rjg1QWF3WS9BbnluUEE4WVA1QWpzMWdCT2Z4R3BBdHd4?= =?utf-8?B?TUpaci9TL2RvTWt4Vi92NmUzbnJsYy9CVVhSRWczNnBqMTRiM1N1T29Ndy9B?= =?utf-8?B?QXJibnc3aXJVTVlQUkh1S1d6Y28xUWUxOEU2T0xFSzlpUzdQYnkyaElsWTJP?= =?utf-8?B?Sm93aDRWRWhsMm4xdzQyRmhvR2dOTWJ0UjJwdHBSb05WeE1aM0h6SFN3eHRp?= =?utf-8?B?Q2JNMEU3bUlBSTJnWU1LejFybGhGU0c2c0kxT2lYSW4zVTJwSUNDUUIrbEdO?= =?utf-8?B?Qm1wWkluZkxNdlcrWHF5UWR5NWRIekFYNUhBa0t6b0puak5BSVZlS2habWRL?= =?utf-8?B?aU5kNDJPNk0xRzdqc0ZpUVRiSFRSQURHQW5KY0hkWWpnOUJ4UHBQWWtIS0Zk?= =?utf-8?B?QlQzODRFbU1meTlaTFpiZ0hNaDlmazRMeU03UUh1U2l3eUVVVmJnOXVUbXh6?= =?utf-8?B?Z1dUUEE1RUg4MWozMDZlNlo3VUdMOHg2cVRUOWlDcXFQbFhLNDNkNFlyTS9Y?= =?utf-8?B?RXRQTGxLd2ZHNkQrZnMrU1diQ2hVU1ZxSWlIa2tneURjUEc3cGhhemxGZ0ti?= =?utf-8?B?dDdWdGFKUnZvYkYwc2pla1JLTHFoeExaY3BzT3VqZlFjWW1vRmdMS0ZPSUgy?= =?utf-8?B?MGg1UXFnZ1lCUDAvdGF1QWs3Rm96NWRqcmdXd2RSQ1FGSWh6SW43bkcyVjdD?= =?utf-8?B?WjdpTzRXQWdYeW5TK3FBUlZuSzV5N2Fqb3NjQ0J2OXo4UHA5THhwUDdEeWZC?= =?utf-8?B?UHFWb1MxNnp4UGZOcGhvS2g3VTN3UXZEM2tQWm0xay9WS3ljQWxZbW40T2Rr?= =?utf-8?B?Z3RtL0xzajM2eTdYTis1ajROeHRvY0twYmwycU1FVGQ0ZHFzcTRSYmUrVGha?= =?utf-8?B?bUlOUnh5NmIwc3F5SGpuMnoyUjcza3gyK28rcFpnSjB1K0M3dUZBa1hSUjhp?= =?utf-8?B?ZlNVbjhMMnU4L3IwSjZhQ0tKYzJQK2NxcGtCbmg3QWJjeHB1cDB0azZQTk5T?= =?utf-8?B?QXhTallqUGpUdW9TclU1QWhmL3hmL0ZaS0NDYm9qNjliQWsvakxLWUhtVU8z?= =?utf-8?B?Q3QrVGtmUkVJNEpWcmpUM3REMEdKUWxrUmpseWFRa0U2dnhTdkxmWkFoWHcr?= =?utf-8?B?ZGRCOW9Scyt3aXpFUWN3WDc5MURyM1lOU1VFRG1jNXlWSlozTmtoMlRaMFI4?= =?utf-8?B?S2lJbzkwZVdDdDVpQUlDOFBnMGM2NEk0a1Y2MXE3ODNpTW1uUWY3UlMxOVVN?= =?utf-8?B?VHNSV0pETWRwSGxxRWlGaXEwdXFlUmJwVXpRNTZRclZ4Nmkxd2NrYlJTNG51?= =?utf-8?B?Wm05S3VDYzRnTUIxSVEwMXVkRU9JQ0wrQjAvMnBVSStqYTIrYzA1UHVwK0w4?= =?utf-8?B?eFcybWhyMytFRjhwWVM0Q0N0S0U0dFVIeG5PamxnU0QvU3VjWVU5NVRVNk9k?= =?utf-8?B?MWtHUnNBZ3JsUTJzVFdRNk83TFZ4ek1kSXRtbU9sM3BuSzJMQlh2NTV2cWxK?= =?utf-8?B?d01VQTlkcWFrb3cySTgwd3VtaFZsNk5xNER6VmN6U0lWTk5IRy80ZnBKc29G?= =?utf-8?B?VnVsVWQyVlpKWENaeFRxWkNJWGFHd2NEdU42Sm1ma3hOeEloOExRcTRRR2d6?= =?utf-8?B?SjdtVEFGTnZiUU9qQ3N2L3gyMmRWVEtiMW81bkFaSHNjK0Q0VnMzTHdLQUxQ?= =?utf-8?Q?PBSwZSw8HjtUOfRL/iDY7/aBmPo21BTM?= 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)(1800799024)(366016)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NDk0cDFsSmJhODFHQktoaVRkYVY0Mm84R1RpWkIzc0xLTFVockJENmlwK3JK?= =?utf-8?B?b0RWMnlHdWw3cjRCVzJadEhjZ0FvV2xERkp5czN6dERPYUFpR1pNVHpLYzBy?= =?utf-8?B?NTJ2RGZpS3hIZmNLd3VkMFNTS0x5NXZmSDJ0bDJkTmlEYVN6ZDlMVjB3NW1P?= =?utf-8?B?TmZyN2tJRnRlZmZIZHN3b0NDb2ZBbW9tWWU4Z1JKK1BueTZERkdraVJINHAv?= =?utf-8?B?RFNxV0M2VGJITitLMmV1Mkltdi84SWxldFFpZjUrWWk1eVNja2xLcGY3T0hh?= =?utf-8?B?NWladWtNM0hzbUhVTFRTNUVJQm9DUnF5UzFEZlVWbm0vaXZrMyt6Z25WK1hh?= =?utf-8?B?dFFoRkdmWm1JMEhPUXlZbUNDN3BWS242eWtZRlpaK2ZtRjhreTRhODNSZmc2?= =?utf-8?B?SG8wQ0FYaXFEUmpqYkZRcGlzSVVmUEFQN21EeGQwY21sM2hGeDVLMEJLUEhj?= =?utf-8?B?eFA3TnNUa1VEVDV6V3lWdjhSK1NjY3AwMTYvWEF6WmFRMktvdW1SQXlvakhs?= =?utf-8?B?OGNjcWhHbVBMUjlTMjQ5L1hrQXZJdW5TRTloNkZwRExHd0dqMVY1VWo0SU1F?= =?utf-8?B?T0QzbFJlK3ZzdzRqcjlMS00vemdFOTBNcnlHY3hDeDdDdlRlTzdUNUVrZTIx?= =?utf-8?B?TGYwWlVzZ3Z6TGw0Z1d2TGE5b1czRzEzc2YrenZnNituN0VwYjdHVW1YSnNq?= =?utf-8?B?aEZNZjlXb3J6WlI4TVhOcW1kL2lrNGFwOFkxemZZSzhxVWszOGZUU0VqTUk3?= =?utf-8?B?VmQ5WDVGbWdwclJpWU13dUJRV2swb3FyTGNIeXRLSjFlYlp4aHJXVUJ1QjIx?= =?utf-8?B?VmlTUmttczU2RWtpdjRsMU9uMUY3dXFkb01WcTZyWTV3eXFWTHl4Yks4WEgx?= =?utf-8?B?cjJlc3FjUFI0dGo5dU42RXpTMll2cTNYekI2K1VxM1VkZW54c3QrbG9tWUdH?= =?utf-8?B?OFJZM1dvZEpJalhHd01HZEd2TlRXK0JBSVZrL1VVd0tsUUYrTHA1WXQzd0tR?= =?utf-8?B?SC9VM3ByakFBNmxOWFIza1JHQ2N0QU1OeTQxK05vSEdNSVlTSmFVWDZhQXhF?= =?utf-8?B?RjhVTzhYRjlZcjVtZy9CSlR6d1VQNml2bWpaclgxVUhwM0lBRTl5cmV0Ymxl?= =?utf-8?B?cGJYYW5ocGFMWjExTERBOUgwa0JiYm14NllZOGxTajJRWTQyRXZtbHVyL21X?= =?utf-8?B?NnJFczNZMlpuNHh3aEMvMWJqcXRCZWU2Q092OS9ZODJabHpQRy9PS2dwVytG?= =?utf-8?B?YXNKU1VYOTJxRkNZZ1dkVDl4c0R1RTk0d1hkc0FaaTh0WlFpWmJqdmNRSnd2?= =?utf-8?B?MFdlQmRYa1hYVlE3bnR5YThhajhzTDFtS25CbGt4aWNpengvUkFFNW1CWTlV?= =?utf-8?B?Y29xWXdKQi9KM3pKNDV6SktQVW8vZnlaY3FNekNINlcydjgwTzQ2UjVvcGgr?= =?utf-8?B?ZEh1WEVYanpKeDExVVZOYW5FWTdGbytWYVRaTTFIWWI1Y3ZseHhWaUpkNkl6?= =?utf-8?B?dEJid2U0VW80S3dJZU8rSU1xUm1YWHd0M3hPODlaYlFnSzRMR2NIUTFQb2M2?= =?utf-8?B?dC9qZUlkZHZXeDYvUDhqL0pJRVNWbFB1V2JKK1JYRXBHMnhxQXhmd0hWL3dy?= =?utf-8?B?ZHU3OWYzVS9rMHQ4NWZmWUpKV1BkM28xdGJUOXpsYmp0VS9tc20vZlhEZTlI?= =?utf-8?B?bGJ3VUdsWndKYU5KbTJjMGo2NGYyeDhQRWJjaXpRdzgxNjQ5WGNEMUFOU2M4?= =?utf-8?B?NlJ6aHoxZFcyK0c1RTlGRDdHZXYwQ0E3TDBkVHRSMEhxcXByN285T0F2dktY?= =?utf-8?B?ODIvWm9TN1AybExlUnVWVlJOSU9aVStkODREbVZOR3h0TEV6cEhsUjBtRURL?= =?utf-8?B?MDFxOFl5YkVCU0RGSk1PakNxSktIVWRLc3lneHdEYlRLV3NsMS9CRUtxMWhq?= =?utf-8?B?cWpGNkVXd09SRHcrcVpnL1FWVlRxMHdhMWg0RzQxMzhxVGM4MFlsNWxoWkJo?= =?utf-8?B?UXY3Tm1peGd4eGZoZlBXNTFYOHAwRkRObEdJWXJId00vT0J2T1pncGpCaThk?= =?utf-8?B?SFBoaWwvbzhxTjN3K2tqZ3Y4enZNOExpZFRzOUxrSXl5QmFISjFEOFdXeS9p?= =?utf-8?B?cWVIdU9wMFVmNlJjVmp5cHByaFN1R0l4eit6Nnp2a2g3RG1QYVZTdjhJV2ZS?= =?utf-8?Q?fXVnLjHW3Fxo1QzwIucGtxA=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <8D27CEA8077C3B489E1A71959AAF2223@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: dac95568-8a40-4db5-4db5-08dd444c0fff X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2025 12:12:43.2864 (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: DRiCIpR3Ans93bjZWJcU1E5S807MunLQ0Mg7rG1+8xKlXwXzSDOqF9kPncPwu0h0tYDN1i2UM5INqITa7RXmOsi65slChauZcvl0vObPizM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6822 X-OriginatorOrg: intel.com X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" SGkgU2FudGhvc2gsDQoNClRoYW5rcyBmb3IgdGhlIHVwZGF0ZSEgQnV0IHNvbWUgcGFydCBvZiB0 aGUgdGVzdHMgYXJlIG5vdCBhY2N1cmF0ZSBub3chDQpQbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhl IGNvbW1lbnRzIGlubGluZS4NCg0KDQpPbiBNb24sIDIwMjUtMDItMDMgYXQgMDg6MTYgKzA1MzAs IFNhbnRob3NoIFJlZGR5IEd1ZGRhdGkgd3JvdGU6DQo+IC0gSW50cm9kdWNlIG5ldyB0ZXN0IGZp bGUga21zX2ZiY19kaXJ0eV9yZWN0LmMgdG8gdmVyaWZ5DQo+IMKgIERJUlRZRkIgaW9jdGwgZnVu Y3Rpb25hbGl0eSB3aXRoIEZCQyBlbmFibGVkLg0KPiAtIEFkZGVkIHN1YnRlc3RzIGZvciBiYXNp YyBGQkMgZGlydHkgcmVjdGFuZ2xlLCBkaWZmZXJlbnQgZm9ybWF0cywNCj4gwqAgYW5kIGRpcnR5 ZmIgaW9jdGwuDQo+IC0gVXBkYXRlIG1lc29uLmJ1aWxkIHRvIGluY2x1ZGUgdGhlIG5ldyB0ZXN0 Lg0KPiANCj4gdjI6IEZpeCB0eXBvICwgYWRkIHZlcnNpb24gY2hlY2sgZm9yIGZlYXR1cmUgc3Vw cG9ydCwNCj4gwqDCoMKgIGV4dGVuZCBzdXBwb3J0IGZvciBhbGwgcGlwZXMgKFJhbWEgTmFpZHUp Lg0KPiANCj4gdjM6IEFkZCBuZXcgc3VidGVzdCB0byBzY2F0dGVyIGRpcnR5IHJlY3RhbmdsZXMg YXQgZGlmZmVybnQgcGxhY2VzIGluIGENCj4gwqDCoMKgIGZyYW1lIGFuZCBjb21taXQgYWxsIHJl Y3RhbmdsZXMgYXQgb25jZSAoUmFtYSBOYWlkdSkuDQo+IMKgwqDCoCBBZGQgYSBuZWdhdGl2ZSBj YXNlIHdpdGggaW52YWxpZCBjb29yZGluYXRlcyAoVmlub2QpDQo+IA0KPiB2NDogQWRkIHN1YnRl c3QgYGZiYy1kaXJ0eS1yZWN0YW5nbGUtYmFzaWNgIHRvIHBlcmZvcm0gc2FuaXR5IGNoZWNrcw0K PiDCoMKgwqAgYnkgc2VuZGluZyBtdWx0aXBsZSBkYW1hZ2VkIGFyZWFzIHdpdGggbm9uLVBTUiBt b2Rlcy4oVmlub2QpDQo+IMKgwqDCoCBVcGRhdGUgYG1lc29uLmJ1aWxkYCB0byBpbmNsdWRlIHRo ZSBuZXcgdGVzdC4NCj4gDQo+IHY1OiBJbmNsdWRlIGNoZWNrcyB0byBlbnN1cmUgRkJDIGlzIGVu YWJsZWQgZHVyaW5nIHRlc3RzLihWaW5vZCkNCj4gwqDCoMKgIEFkZCBkeW5hbWljIHN1YnRlc3Rz IGZvciBmYmMtZGlydHktcmVjdGFuZ2xlLWRpZmZlcmVudC1mb3JtYXRzDQo+IMKgwqDCoCBhbmQg ZmJjLWRpcnR5LXJlY3RhbmdsZS1kaXJ0eWZiLWlvY3RsLiAoVmlub2QpDQo+IA0KPiB2NjogVXBk YXRlIG1lc29uLmJ1aWxkIHRvIGluY2x1ZGUga21zX2ZiY19kaXJ0eV9yZWN0Lg0KPiANCj4gdjc6 IEFkZCBjb21taXQgZGVzY3JpcHRpb24sIHJlbW92ZSBpOTE1IGNoZWNrIGFuZCByZW1vdmUNCj4g wqDCoMKgIHJlZHVuZGFudCBjaGVja3MgKFN3YXRoaSkNCj4gwqDCoMKgIFJlZm9ybWF0IGNvZGUg YnkgcmVtb3ZpbmcgcmVkdW5kYW50IHVzYWdlLg0KPiDCoMKgwqAgQWRkIG5ldyB0ZXN0IHRvIHZl cmlmeSBkaXJ0eSByZWN0IG91dHNpZGUtdmlzaWJsZS1yZWdpb24uDQo+IA0KPiBTaWduZWQtb2Zm LWJ5OiBTYW50aG9zaCBSZWRkeSBHdWRkYXRpIDxzYW50aG9zaC5yZWRkeS5ndWRkYXRpQGludGVs LmNvbT4NCj4gLS0tDQo+IMKgdGVzdHMvaW50ZWwva21zX2ZiY19kaXJ0eV9yZWN0LmMgfCAzMjQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiDCoHRlc3RzL21lc29uLmJ1aWxkwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKw0KPiDCoDIgZmlsZXMgY2hhbmdl ZCwgMzI1IGluc2VydGlvbnMoKykNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvaW50ZWwv a21zX2ZiY19kaXJ0eV9yZWN0LmMNCj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9pbnRlbC9rbXNf ZmJjX2RpcnR5X3JlY3QuYyBiL3Rlc3RzL2ludGVsL2ttc19mYmNfZGlydHlfcmVjdC5jDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uYjcyYzk4ZWQzDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvdGVzdHMvaW50ZWwva21zX2ZiY19kaXJ0eV9yZWN0LmMNCj4gQEAg LTAsMCArMSwzMjQgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8NCj4g Ky8qDQo+ICsgKiBDb3B5cmlnaHQgwqkgMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ ICsNCj4gKy8qKg0KPiArICogVEVTVDoga21zIGRpcnR5IGZiYw0KPiArICogQ2F0ZWdvcnk6IERp c3BsYXkNCj4gKyAqIERlc2NyaXB0aW9uOiBUZXN0IERJUlRZRkIgaW9jdGwgZnVuY3Rpb25hbGl0 eSB3aXRoIEZCQyBlbmFibGVkLg0KPiArICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1LCB4ZQ0K PiArICogRnVuY3Rpb25hbGl0eTogZGlydHlmYiwgZmJjDQo+ICsgKiBNZWdhIGZlYXR1cmU6IEdl bmVyYWwgRGlzcGxheSBGZWF0dXJlcw0KPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0 eSB0ZXN0DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImlndC5oIg0KPiArI2luY2x1ZGUgImk5 MTUvaW50ZWxfZmJjLmgiDQo+ICsNCj4gKy8qKg0KPiArICogU1VCVEVTVDogZmJjLWRpcnR5LXJl Y3RhbmdsZS1iYXNpYw0KPiArICogRGVzY3JpcHRpb246IFNhbml0eSB0ZXN0IHRvIHZlcmlmeSBG QkMgRFIgYnkgc2VuZGluZyBtdWx0aXBsZSBkYW1hZ2VkIGFyZWFzIHdpdGggbm9uIHBzciBtb2Rl cw0KPiArICoNCj4gKyAqIFNVQlRFU1Q6IGZiYy1kaXJ0eS1yZWN0YW5nbGUtZGlmZmVyZW50LWZv cm1hdHMNCj4gKyAqIERlc2NyaXB0aW9uOiBTYW5pdHkgdGVzdCB0byB2ZXJpZnkgRkJDIERSIGJ5 IHNlbmRpbmcgbXVsdGlwbGUNCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGFtYWdl ZCBhcmVhcyB3aXRoIGRpZmZlcmVudCBmb3JtYXRzLg0KPiArICoNCj4gKyAqIFNVQlRFU1Q6IGZi Yy1kaXJ0eS1yZWN0YW5nbGUtb3V0c2lkZS12aXNpYmxlLXJlZ2lvbg0KPiArICogRGVzY3JpcHRp b246IFRlc3QgdGhhdCBGQkMgRFIgd29ya3Mgd2l0aCBkYW1hZ2UgYXJlYSBvdXRzaWRlIHRoZSB2 aXNpYmxlIHJlZ2lvbg0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgU1FVQVJFX1NJWkUgMTAwDQo+ ICsjZGVmaW5lIFNRVUFSRV9PRkZTRVQgMTAwDQo+ICsjZGVmaW5lIFNRVUFSRV9PRkZTRVRfMiA2 MDANCj4gKyNkZWZpbmUgU1FVQVJFX09GRlNFVF9PVVQgMTAwMA0KPiArDQo+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ICsJaW50IGRybV9mZDsNCj4gKwlpbnQgZGVidWdmc19mZDsNCj4gKwlpZ3RfZGlz cGxheV90IGRpc3BsYXk7DQo+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlOw0KPiArCWlndF9vdXRw dXRfdCAqb3V0cHV0Ow0KPiArCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsNCj4gKwllbnVtIHBp cGUgcGlwZTsNCj4gKwl1MzIgZm9ybWF0Ow0KPiArDQo+ICsJaWd0X2NyY190IHJlZl9jcmM7DQo+ ICsNCj4gKwllbnVtIHsNCj4gKwkJRkVBVFVSRV9OT05FwqAgPSAwLA0KPiArCQlGRUFUVVJFX1BT UsKgwqAgPSAxLA0KPiArCQlGRUFUVVJFX0ZCQ8KgwqAgPSAyLA0KPiArCQlGRUFUVVJFX0RSUlPC oCA9IDQsDQo+ICsJCUZFQVRVUkVfQ09VTlQgPSA4LA0KPiArCQlGRUFUVVJFX0RFRkFVTFQgPSA4 LA0KPiArCX0gZmVhdHVyZTsNCj4gK30gZGF0YV90Ow0KPiArDQo+ICsNCj4gK3N0YXRpYyB2b2lk IHNldF9kYW1hZ2VfY2xpcChzdHJ1Y3QgZHJtX21vZGVfcmVjdCAqZGFtYWdlLCBpbnQgeDEsIGlu dCB5MSwgaW50IHgyLCBpbnQgeTIpDQo+ICt7DQo+ICsJZGFtYWdlLT54MSA9IHgxOw0KPiArCWRh bWFnZS0+eTEgPSB5MTsNCj4gKwlkYW1hZ2UtPngyID0geDI7DQo+ICsJZGFtYWdlLT55MiA9IHky Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBzZXRfYW5kX2NoZWNrX2NyYyhkYXRhX3QgKmRh dGEsIGlndF9wbGFuZV90ICpwcmltYXJ5LA0KPiArCQkJwqDCoMKgwqDCoCBpZ3RfcGlwZV9jcmNf dCAqcGlwZV9jcmMsIHN0cnVjdCBpZ3RfZmIgKmZiLA0KPiArCQkJwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX21vZGVfcmVjdCAqcmVjdCwgaW50IHJlY3Rfc2l6ZSwNCj4gKwkJCcKgwqDCoMKgwqAgaWd0 X2NyY190ICpleHBlY3RlZF9jcmMpDQpNYXkgYmUgdGhlIG5hbWUgb2YgdGhpcyBmdW5jdGlvbiBz aG91bGQgYmUgc2V0X2ZiX2FuZF9jb2xsZWN0X2NyYygpPw0KDQo+ICt7DQo+ICsJaWd0X3BsYW5l X3JlcGxhY2VfcHJvcF9ibG9iKHByaW1hcnksIElHVF9QTEFORV9GQl9EQU1BR0VfQ0xJUFMsIHJl Y3QsIHJlY3Rfc2l6ZSk7DQoNCkFsc28gSSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gZ2V0IHRoaXMg ZGFtYWdlIGNsaXAgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbi4gc29tZXRoaW5nIGxpa2UNCnNldF9k YW1hZ2VfYXJlYShwbGFuZSwgcmVjdHMpIGFuZCBjYWxsIGl0IGZyb20gb3V0IG9mIHRoaXMgZnVu Y3Rpb24uDQoNCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIGZiKTsNCj4gKwlpZ3RfZGlz cGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsNCj4gKwlpZ3RfYXNz ZXJ0X2YoaW50ZWxfZmJjX2lzX2VuYWJsZWQoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5waXBlLA0KPiAr CQkJCQnCoCBJR1RfTE9HX1dBUk4pLCAiRkJDIGlzIG5vdCBlbmFibGVkXG4iKTsNCj4gKwlpZ3Rf cGlwZV9jcmNfY29sbGVjdF9jcmMocGlwZV9jcmMsIGV4cGVjdGVkX2NyYyk7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkIGRpcnR5X3JlY3RfY3JlYXRlX2ZiKGRhdGFfdCAqZGF0YSwgc3RydWN0 IGlndF9mYiAqZmIsIGludCBucmVjdHMsDQo+ICsJCQkJIHN0cnVjdCBkcm1fbW9kZV9yZWN0ICpy ZWN0KQ0KPiArew0KPiArCWNhaXJvX3QgKmNyOw0KPiArDQo+ICsJaWd0X2luZm8oIkNyZWF0aW5n IGZyYW1lYnVmZmVyIHdpdGggJWQgZGFtYWdlZCBhcmVhcyBmb3JtYXQgJXNcbiIsDQo+ICsJCSBu cmVjdHMsIGlndF9mb3JtYXRfc3RyKGRhdGEtPmZvcm1hdCkpOw0KPiArCWlndF9jcmVhdGVfY29s b3JfZmIoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5tb2RlLT5oZGlzcGxheSwgZGF0YS0+bW9kZS0+dmRp c3BsYXksDQo+ICsJCQnCoMKgwqAgZGF0YS0+Zm9ybWF0LCBEUk1fRk9STUFUX01PRF9MSU5FQVIs DQo+ICsJCQnCoMKgwqAgMC4wLCAwLjAsIDEuMCwgZmIpOw0KV29uZGVyIGlmIHlvdSBjYW4gcGFz cyBjb2xvciBhcyBhIHBhcmFtZXRlciBhbmQgY3JlYXRlIHRoZSBmYiB3aXRoIGNvbG9yIHBhc3Nl ZCBhbmQgbm90IGFsd2F5cyBibHVlLg0KVGhpcyB3b3VsZCBiZSBoYW5keSBpbiB0aGUgY2FzZSB3 aGVyZSB3ZSBjaGVjayB0aGUgZGFtYWdlIGFyZWEgb3V0c2lkZSB0aGUgdmlzaWJsZSByZWN0IHdv bnQgY2F1c2UNCmFueSBjcmMgbWlzbWF0Y2hlcy4gbW9yZSBkZXRhaWxzIGFzIHBhcnQgb2YgdGhh dCB0ZXN0Lg0KDQpBbHNvIHdlIG5lZWQgdG8gYSBjcmVhdGUgYSBiaWcgRkIuIFNvIG5lZWQgdG8g cGFzcyBGQiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHBhcmFtZXRlci4gDQoNCj4gKw0KPiArCWlmICgh bnJlY3RzIHx8ICFyZWN0KQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwljciA9IGlndF9nZXRfY2Fp cm9fY3R4KGRhdGEtPmRybV9mZCwgZmIpOw0KPiArDQo+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBu cmVjdHM7IGkrKykgew0KPiArCQlpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIHJlY3RbaV0ueDEs IHJlY3RbaV0ueTEsDQo+ICsJCQkJwqDCoMKgwqDCoCByZWN0W2ldLngyIC0gcmVjdFtpXS54MSwN Cj4gKwkJCQnCoMKgwqDCoMKgIHJlY3RbaV0ueTIgLSByZWN0W2ldLnkxLA0KPiArCQkJCcKgwqDC oMKgwqAgMS4wLCAxLjAsIDEuMCwgMS4wKTsNCj4gKwl9DQo+ICsJaWd0X3B1dF9jYWlyb19jdHgo Y3IpOw0KPiArfQ0KPiArDQoNClNvbWUgZXhwbGFuYXRpb24gb2Ygd2hhdCB0aGlzIHRlc3QgZG9l cyBzaG91bGQgYmUgZ29vZC4NCg0KRmlyc3QgYSBzZXJpZXMgb2Ygc2NyZWVucyBhcmUgZHJhd24g YXMgZnVsbCBzY3JlZW4gdXBkYXRlcyBhbmQgY3JjJ3MgYXJlIGNvbGxlY3RlZC4gVGhlc2UgY3Jj J3MgYWN0DQphcyByZWZlcmVuY2UgY3Jjcy4gVGhlbiBzY3JlZW5zIGFyZSB1cGRhdGVkIHVzaW5n IHRoZSBGQkMgZGlydHkgcmVjdCBmZWF0dXJlIGFuZCBjb21wYXJlZCB3aXRoIHRoZXNlDQpyZWZl cmVuY2UgY3Jjcy4gSWYgdGhlIGNyY3MgbWF0Y2gsIHRoZSB0ZXN0IGlzIHN1Y2Nlc3NmdWwuDQoN CjEuIEZ1bGwgYmx1ZSBzY3JlZW4gLSBtYWluX2ZiLCBtYWluX2ZiX2NyYw0KMi4gQSB3aGl0ZSBz cXVhcmUgb24gdXBwZXIgbGVmdCBvbiBibHVlIHNjcmVlbiBhcyBmdWxsIHNjcmVlbiB1cGRhdGUg LSByZWN0MV9mYiwNCnJlY3RfZmJfcmVjdDFfZmJfY3JjDQozLiBBIHNlY29uZCB3aGl0ZSBzcXVh cmUgYXQgYml0IGxvd2VyIG9mIHRoZSBmaXJzdCByZWN0IG9uIGJsdWUgc2NyZWVuIGFzIGEgZnVs bCBzY3JlZW4gdXBkYXRlIC0NCnJlY3QyX2ZiLCByZWN0Ml9mYl9jcmMNCjQuIEJvdGggdGhlIHJl Y3RzIGFyZSBkcmF3biBvbiB0aGUgYmx1ZSBzY3JlZW4gYXMgZnVsbCBzY3JlZW4gdXBkYXRlIC0g cmVjdF9jb21iaW5lZF9mYiwNCnJlY3RfY29tYmluZWRfZmJfY3JjDQoNClRoZXNlIGFib3ZlIGFy ZSBhbGwgZnVsbCBzY3JlZW4gdXBkYXRlcyB0byBjb2xsZWN0IHJlZmVyZW5jZSBjcmNzLiBOb3cg d2UgYXR0ZW1wdCB1cGRhdGluZyB0aGUNCnNjcmVlbiB3aXRoIEZCQyBkaXJ0eSByZWN0Lg0KDQox LiBGdWxsIGJsdWUgc2NyZWVuIA0KMi4gU2V0IHJlY3RfY29tYmluZV9mYiB3aXRoIGRhbWFnZSBh cmVhIHVwZGF0ZSAtIGRhbWFnZSBhcmVhIGFyZSBwcm92aWRlZCBhcyByZWN0cy4gQWZ0ZXIgdGhp cyB0aGUNCmNyYyBzaG91bGQgbWF0Y2ggd2l0aCBjcmMgY29sbGVjdGVkIGJlZm9yZSByZWN0X2Nv bWJpbmVkX2ZiLWNyYy4NCjMuIE5vdyBjbGVhciB0aGUgYXJlYSBvZiB0aGUgZmlyc3QgcmVjdCBh cyBhIGRpcnR5IHJlY3QgdXBkYXRlLiBVc2UgdGhlIG1haW5fZmIgYW5kIGRhbWFnZSBhcmVhIGFz DQp0aGUgcmVjdDEgY29vcmRpbmF0ZXMuIEFmdGVyIHRoaXMgdGhlIGNyYyBzaG91bGQgbWF0Y2gg cmVjdDJfZmJfY3JjDQo0LiBOb3cgY2xlYXIgdGhlIGFyZWEgb2YgdGhlIHNlY29uZCByZWN0IGFz IGEgZGlydHkgcmVjdCB1cGRhdGUuIFVzZSBtYWluX2ZiIGFuZCBkYW1hZ2UgYXJlYSBhcyB0aGUN CnJlY3QyICBjb29yZGluYXRlcy4gQWZ0ZXIgdGhpcyBjcmMgc2hvdWxkIG1hdGNoIG1haW5fZmJf Y3JjDQoNClRoaXMgaXMganVzdCBhIGJhc2ljIGV4cGxhbmF0aW9uIG9mIHdoYXQgdGhpcyBkb2Vz LiBTbyBzb21lIGJldHRlciBleHBsYW5hdGlvbiB3b3VsZCBiZSB1c2VmdWwgLg0KDQo+ICtzdGF0 aWMgdm9pZCBmYmNfZGlydHlfcmVjdGFuZ2xlX2NvbXBsZXRlX3NldChkYXRhX3QgKmRhdGEpDQo+ ICt7DQo+ICsJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjID0gZGF0YS0+cGlwZV9jcmM7DQo+ICsJ aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Ow0KPiArCWlndF9vdXRwdXRf dCAqb3V0cHV0ID0gZGF0YS0+b3V0cHV0Ow0KPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Ow0KPiAr CWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gKwlzdHJ1Y3QgaWd0X2ZiIG1haW5fZmIsIHJlY3Rf MV9mYiwgcmVjdF8yX2ZiLCByZWN0X2NvbWJpbmVkX2ZiOw0KPiArCXN0cnVjdCBkcm1fbW9kZV9y ZWN0IHJlY3QxLCByZWN0MiwgcmVjdF9jb21iaW5lZFsyXSwgZnVsbF9yZWN0Ow0KPiArCWlndF9j cmNfdCBtYWluX2ZiX2NyYywgcmVjdF8xX2ZiX2NyYywgcmVjdF8yX2ZiX2NyYywgcmVjdF9jb21i aW5lZF9mYl9jcmMsIGNyYzsNCj4gKw0KPiArCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91 dHB1dCk7DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIGRhdGEtPnBpcGUpOw0KPiAr CWlmICghcGlwZV9jcmMpIHsNCj4gKwkJcGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEt PmRybV9mZCwgZGF0YS0+cGlwZSwgSUdUX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsNCj4gKwkJaWd0 X2Fzc2VydChwaXBlX2NyYyk7DQo+ICsJfQ0KPiArCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9w bGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7DQo+ICsNCj4gKwlzZXRf ZGFtYWdlX2NsaXAoJmZ1bGxfcmVjdCwgMCwgMCwgbW9kZS0+aGRpc3BsYXkgLSAxLCBtb2RlLT52 ZGlzcGxheSAtIDEpOw0KPiArCXNldF9kYW1hZ2VfY2xpcCgmcmVjdDEsIFNRVUFSRV9PRkZTRVQs IFNRVUFSRV9PRkZTRVQsIFNRVUFSRV9PRkZTRVQgKyBTUVVBUkVfU0laRSwNCj4gU1FVQVJFX09G RlNFVCArIFNRVUFSRV9TSVpFKTsNCj4gKwlzZXRfZGFtYWdlX2NsaXAoJnJlY3QyLCBTUVVBUkVf T0ZGU0VUXzIsIFNRVUFSRV9PRkZTRVRfMiwgU1FVQVJFX09GRlNFVF8yICsgU1FVQVJFX1NJWkUs DQo+IFNRVUFSRV9PRkZTRVRfMiArIFNRVUFSRV9TSVpFKTsNCj4gKwlyZWN0X2NvbWJpbmVkWzBd ID0gcmVjdDE7DQo+ICsJcmVjdF9jb21iaW5lZFsxXSA9IHJlY3QyOw0KPiArDQo+ICsJZGlydHlf cmVjdF9jcmVhdGVfZmIoZGF0YSwgJm1haW5fZmIsIDAsIE5VTEwpOw0KPiArCWRpcnR5X3JlY3Rf Y3JlYXRlX2ZiKGRhdGEsICZyZWN0XzFfZmIsIDEsICZyZWN0MSk7DQo+ICsJZGlydHlfcmVjdF9j cmVhdGVfZmIoZGF0YSwgJnJlY3RfMl9mYiwgMSwgJnJlY3QyKTsNCj4gKwlkaXJ0eV9yZWN0X2Ny ZWF0ZV9mYihkYXRhLCAmcmVjdF9jb21iaW5lZF9mYiwgMiwgcmVjdF9jb21iaW5lZCk7DQo+ICsN Cj4gKwkvKiBtYWluX2ZiIGJsYW5rIGJsdWUgc2NyZWVuIC0gZ2V0IGFuZCBzdG9yZSBjcmMgKi8N Cj4gKwlzZXRfYW5kX2NoZWNrX2NyYyhkYXRhLCBwcmltYXJ5LCBwaXBlX2NyYywgJm1haW5fZmIs ICZmdWxsX3JlY3QsDQo+ICsJCQnCoCBzaXplb2YoZnVsbF9yZWN0KSwgJm1haW5fZmJfY3JjKTsN CnNldF9kYW1hZ2VfYXJlYShwcmltYXJ5LCBmdWxsX3JlY3QpDQpzZXRfZmJfY29sbGVjdF9jcmMo Li4uKQ0KDQo+ICsNCj4gKwkvKiBXaG9sZSBibHVlIHNjcmVlbiB3aXRoIG9uZSB3aGl0ZSByZWN0 IGFuZCBjb2xsZWN0IGNyYyAqLw0KPiArCXNldF9hbmRfY2hlY2tfY3JjKGRhdGEsIHByaW1hcnks IHBpcGVfY3JjLCAmcmVjdF8xX2ZiLCAmZnVsbF9yZWN0LA0KPiArCQkJwqAgc2l6ZW9mKGZ1bGxf cmVjdCksICZyZWN0XzFfZmJfY3JjKTsNCj4gKw0KPiArCS8qIFNlY29uZCB3aGl0ZSByZWN0IGFu ZCBjb2xsZWN0IGNyYyAqLw0KPiArCXNldF9hbmRfY2hlY2tfY3JjKGRhdGEsIHByaW1hcnksIHBp cGVfY3JjLCAmcmVjdF8yX2ZiLCAmZnVsbF9yZWN0LA0KPiArCQkJwqAgc2l6ZW9mKGZ1bGxfcmVj dCksICZyZWN0XzJfZmJfY3JjKTsNCj4gKw0KPiArCS8qIEJvdGggcmVjdHMgYW5kIGNvbGxlY3Qg Y3JjICovDQo+ICsJc2V0X2FuZF9jaGVja19jcmMoZGF0YSwgcHJpbWFyeSwgcGlwZV9jcmMsICZy ZWN0X2NvbWJpbmVkX2ZiLCAmZnVsbF9yZWN0LA0KPiArCQkJwqAgc2l6ZW9mKGZ1bGxfcmVjdCks ICZyZWN0X2NvbWJpbmVkX2ZiX2NyYyk7DQo+ICsNCj4gKwkvKiBQdXQgZnVsbCBibGFuayBzY3Jl ZW4gYmFjayAqLw0KPiArCXNldF9hbmRfY2hlY2tfY3JjKGRhdGEsIHByaW1hcnksIHBpcGVfY3Jj LCAmbWFpbl9mYiwgJmZ1bGxfcmVjdCwNCj4gKwkJCcKgIHNpemVvZihmdWxsX3JlY3QpLCAmY3Jj KTsNCj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjLCAmbWFpbl9mYl9jcmMpOw0KPiArDQo+ ICsJLyogU2V0IGNvbWJpbmVkIHJlY3QgLSBkcmF3IHR3byB3aGl0ZSByZWN0cyB1c2luZyBkYW1h Z2UgYXJlYSAqLw0KPiArCXNldF9hbmRfY2hlY2tfY3JjKGRhdGEsIHByaW1hcnksIHBpcGVfY3Jj LCAmcmVjdF9jb21iaW5lZF9mYiwgcmVjdF9jb21iaW5lZCwNCj4gKwkJCcKgIHNpemVvZihyZWN0 X2NvbWJpbmVkKSwgJmNyYyk7DQo+ICsJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNyYywgJnJlY3Rf Y29tYmluZWRfZmJfY3JjKTsNCnNldF9kYW1hZ2VfYXJlYShwcmltYXJ5LCBjb21iaW5lZF9yZWN0 KQ0Kc2V0X2ZiX2FuZF9jb2xsZWN0X2NyYyguLiByZWN0X2NvbWJpbmVfZmIpDQoNCj4gKw0KPiAr CS8qIENsZWFyIGZpcnN0IHJlY3QuIE9ubHkgdGhlIHNlY29uZCByZWN0IHNob3VsZCBiZSB2aXNp YmxlIGhlcmUhICovDQo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmcmVjdF8yX2ZiKTsN Cj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOw0KVGhpcyBp cyBub3QgY29ycmVjdC4gVGhpcyAgYmFzaWNhbGx5IGJlY29tZXMgYSBmdWxsIHNjcmVlbiB1cGRh dGUgZm9yIHJlY3QyX2ZiIGFuZCBtYWtlIHRoaXMgZGFtYWdlDQphcmVhIGNoZWNrIHVzZWxlc3Mu IA0KDQo+ICsJc2V0X2FuZF9jaGVja19jcmMoZGF0YSwgcHJpbWFyeSwgcGlwZV9jcmMsICZyZWN0 XzJfZmIsICZyZWN0MSwNCj4gKwkJCcKgIHNpemVvZihyZWN0MSksICZjcmMpOw0KPiArCWlndF9h c3NlcnRfY3JjX2VxdWFsKCZjcmMsICZyZWN0XzJfZmJfY3JjKTsNCkJldHRlciB0byBjbGVhciB1 c2luZyB0aGUgbWFpbiBmYi4NCg0KVGhpcyBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgdGhpcy4u Lg0Kc2V0X2RhbWFnZV9hcmVhKHByaW1hcnksIHJlY3QxKQ0Kc2V0X2ZiX2NvbGxlY3RfY3JjKC4u LiBtYWluX2ZiLCBjcmMpDQppZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjLCAmcmVjdF8yX2ZiX2Ny Yyk7DQoNCg0KPiArDQo+ICsJLyogQ2xlYXIgdGhlIHNlY29uZCByZWN0IGFzIHdlbGwuIE9ubHkg dGhlIGZpcnN0IHJlY3Qgc2hvdWxkIGJlIHZpc2libGUgaGVyZSAqLw0KTm90IGNvcnJlY3QuIFRo ZSBmaXJzdCByZWN0IGlzIGFscmVhZHkgZ29uZSBhcyBwYXJ0IG9mIHRoZSBwcmV2aW91cyBjYXNl LiBObyByZWN0cyBhZnRlciB0aGlzLg0KDQo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAm cmVjdF8xX2ZiKTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9N SUMpOw0Kc2FtZSBhcyBiZWZvcmUuLiBub3QgY29ycmVjdC4gVGhpcyAgYmFzaWNhbGx5IGJlY29t ZXMgYSBmdWxsIHNjcmVlbiB1cGRhdGUgZm9yIHJlY3RfMV9mYiBhbmQgbWFrZQ0KdGhpcyBkYW1h Z2UgYXJlYSBjaGVjayB1c2VsZXNzLiANCg0KPiArCXNldF9hbmRfY2hlY2tfY3JjKGRhdGEsIHBy aW1hcnksIHBpcGVfY3JjLCAmcmVjdF8xX2ZiLCAmcmVjdDIsDQo+ICsJCQnCoCBzaXplb2YocmVj dDIpLCAmY3JjKTsNCj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjLCAmcmVjdF8xX2ZiX2Ny Yyk7DQoNCiBib3RoIHJlY3RzIGFyZSBnb25lLiBzYW1lIGNvbW1lbnRzIGFyZSBiZWZvcmUhDQoN CnNldF9kYW1hZ2VfYXJlYShwcmltYXJ5LCByZWN0MikNCnNldF9mYl9jb2xsZWN0X2NyYyguLi4g bWFpbl9mYiwgY3JjKQ0KaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNyYywgJm1haW5fZmJfY3JjKTsN Cg0KDQo+ICsNCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOw0KPiArCWlndF9y ZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmbWFpbl9mYik7DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRh LT5kcm1fZmQsICZyZWN0XzFfZmIpOw0KPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAm cmVjdF8yX2ZiKTsNCj4gKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJnJlY3RfY29tYmlu ZWRfZmIpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHByZXBhcmVfdGVzdChkYXRhX3QgKmRhdGEsIGln dF9vdXRwdXRfdCAqb3V0cHV0KQ0KPiArew0KPiArCWJvb2wgaXNfZmJjX3N1cHBvcnRlZCA9IGZh bHNlOw0KPiArDQo+ICsJaXNfZmJjX3N1cHBvcnRlZCA9IGludGVsX2ZiY19zdXBwb3J0ZWRfb25f Y2hpcHNldChkYXRhLT5kcm1fZmQsIGRhdGEtPnBpcGUpOw0KPiArDQo+ICsJaWd0X3JlcXVpcmVf Zihpc19mYmNfc3VwcG9ydGVkLCAiRkJDIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxu Iik7DQo+ICsNCj4gKwlpZiAoZGF0YS0+ZmVhdHVyZSAmIEZFQVRVUkVfRkJDKQ0KPiArCQlpbnRl bF9mYmNfZW5hYmxlKGRhdGEtPmRybV9mZCk7DQo+ICsNCj4gK30NCj4gKw0KDQpTb21lIGV4cGxh bmF0aW9uIHdvdWxkIGJlIHVzZWZ1bC4gSGVyZSB0aGUgdGVzdCBzaG91bGQgY3JlYXRlIGJpZ2dl ciBGQnMgYW5kIG1ha2VzIGEgZGFtYWdlIGFyZWENCm91dHNpZGUgdGhlIHZpc2libGUgcmVjdC4g VGhlbiBzd2l0Y2ggRkJzIHdpdGggZGFtYWdlIGFyZWEgYW5kIHRoZXJlIHNob3VsZCBub3QgYmUg YW55IGRpZmYuIEJlY2F1c2UNCkZCQyBkaXJ0eSB1cGRhdGUgaGFuZGxlIGxpbmUgd2lzZSwgd2Ug bmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgZGFtYWdlIGFyZSB1cGRhdGUgc2hvdWxkbnQgdHJpZ2dl ciBhbnkNCnNjcmVlbiB1cGRhdGUuIFNvIGl0IGlzIGJldHRlciB0byBoYXZlIHRoZSBzZWNvbmQg RkIgaW4gYSBkaWZmZXJlbnQgY29sb3IuIElmIHRoZSBGQkMgZGlydHkgcmVjdA0KcHJvZ3JhbW1p bmcgbm90IHdvcmtpbmcgcHJvcGVybHkgdGhlbiBpdCB3aWxsIHVwZGF0ZSB0aGUgdmlzaWJsZSBw YXJ0IGFzIHdlbGwhDQoNCmNyZWF0ZV9mYihiaWdnZXJfZmIsIGdyZWVuLCBmYjEpDQpjcmVhdGVf ZmIoYmlnZ2VyX2ZiLCBibHVlLCBmYjIpDQpjcmVhdGUgYSBkYW1hZ2UgYXJlYSByZWN0IGFzICJy ZWN0MSIgb3V0c2lkZSB2aXNpYmxlIGFyZWEgYnV0IHdpdGhpbmcgdGhlIEZCIGRpbWVuc2lvbnMN Cg0Kc2V0X2RhbWFnZV9hcmVhKHByaW1hcnksIGZ1bGxfc2NyZWVuKQ0Kc2V0X2ZiX2NvbGxlY3Rf Y3JjKGZiMSwgZmIxX2NyYykNCg0KR3JlZW4gc2NyZWVuIG5vdyBvbiBzY3JlZW4uDQoNCnNldF9k YW1hZ2VfYXJlYShwcmltYXJ5LCByZWN0MSkNCnNldF9mYl9jb2xsZWN0X2NyYyhmYjEsIGZiMl9j cmMpDQoNCk5vdyBmYjEgYW5kIGZiMiBjcmNzIHdob3VsZCBtYXRjaCBhcyB0aGUgZGFtYWdlIGFy ZWEgd2FzIG91dCBzaWRlIHRoZSB2aXNpYmxlIGFyZWEuDQoNCj4gK3N0YXRpYyB2b2lkIGZiY190 ZXN0X291dHNpZGVfcmVnaW9uKGRhdGFfdCAqZGF0YSkNCj4gK3sNCj4gKwlzdHJ1Y3QgaWd0X2Zi IG1haW5fZmIsIHJlY3Rfb3V0c2lkZV9mYjsNCj4gKwlpZ3RfcGlwZV9jcmNfdCAqY3JjID0gZGF0 YS0+cGlwZV9jcmM7DQo+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7DQo+ICsJaWd0X2NyY190IG1h aW5fZmJfY3JjLCByZWN0X291dHNpZGVfZmJfY3JjOw0KPiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0 IG1haW5fcmVjdCwgcmVjdF9vdXRzaWRlOw0KPiArDQo+ICsJcHJlcGFyZV90ZXN0KGRhdGEsIGRh dGEtPm91dHB1dCk7DQo+ICsNCj4gKwlpZ3Rfb3V0cHV0X2dldF9tb2RlKGRhdGEtPm91dHB1dCk7 DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIGRhdGEtPnBpcGUpOw0KPiAr DQo+ICsJY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIGRhdGEtPnBpcGUsIElH VF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7DQo+ICsJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3Bs YW5lX3R5cGUoZGF0YS0+b3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsNCj4gKw0KPiAr CS8vIFNldCBkYW1hZ2UgYXJlYSBvdXRzaWRlIHRoZSB2aXNpYmxlIHJlZ2lvbg0KPiArCXNldF9k YW1hZ2VfY2xpcCgmbWFpbl9yZWN0LCAwLCAwLCBkYXRhLT5tb2RlLT5oZGlzcGxheSAtIDEsDQo+ ICsJCQlkYXRhLT5tb2RlLT52ZGlzcGxheSAtIDEpOw0KPiArCXNldF9kYW1hZ2VfY2xpcCgmcmVj dF9vdXRzaWRlLCBkYXRhLT5tb2RlLT5oZGlzcGxheSwgZGF0YS0+bW9kZS0+dmRpc3BsYXksDQo+ ICsJCQlkYXRhLT5tb2RlLT5oZGlzcGxheSArIFNRVUFSRV9PRkZTRVRfT1VULA0KPiArCQkJZGF0 YS0+bW9kZS0+dmRpc3BsYXkgKyBTUVVBUkVfT0ZGU0VUX09VVCk7DQo+ICsNCj4gKwlkaXJ0eV9y ZWN0X2NyZWF0ZV9mYihkYXRhLCAmbWFpbl9mYiwgMCwgTlVMTCk7DQo+ICsJZGlydHlfcmVjdF9j cmVhdGVfZmIoZGF0YSwgJnJlY3Rfb3V0c2lkZV9mYiwgMSwgJnJlY3Rfb3V0c2lkZSk7DQo+ICsN Cj4gKwlzZXRfYW5kX2NoZWNrX2NyYyhkYXRhLCBwcmltYXJ5LCBjcmMsICZtYWluX2ZiLCAmbWFp bl9yZWN0LA0KPiArCQkJwqAgc2l6ZW9mKG1haW5fcmVjdCksICZtYWluX2ZiX2NyYyk7DQo+ICsJ c2V0X2FuZF9jaGVja19jcmMoZGF0YSwgcHJpbWFyeSwgY3JjLCAmcmVjdF9vdXRzaWRlX2ZiLCAm cmVjdF9vdXRzaWRlLA0KPiArCQkJwqAgc2l6ZW9mKHJlY3Rfb3V0c2lkZSksICZyZWN0X291dHNp ZGVfZmJfY3JjKTsNCj4gKw0KPiArCS8vIFZlcmlmeSB0aGF0IHRoZSBDUkMgcmVtYWlucyB1bmNo YW5nZWQNCj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmbWFpbl9mYl9jcmMsICZyZWN0X291dHNp ZGVfZmJfY3JjKTsNCj4gKw0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7DQo+ ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZtYWluX2ZiKTsNCj4gKwlpZ3RfcmVtb3Zl X2ZiKGRhdGEtPmRybV9mZCwgJnJlY3Rfb3V0c2lkZV9mYik7DQo+ICsJaWd0X2Rpc3BsYXlfY29t bWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIGZiY19kaXJ0eV9yZWN0YW5nbGVfYmFzaWMoZGF0YV90ICpkYXRhKQ0KPiArew0KPiAr CXByZXBhcmVfdGVzdChkYXRhLCBOVUxMKTsNCj4gKwlyZXR1cm4gZmJjX2RpcnR5X3JlY3Rhbmds ZV9jb21wbGV0ZV9zZXQoZGF0YSk7DQpQcm9iYWxieSBmYmNfZGlydHlfcmVjdGFuZ2xlX2NvbXBs ZXRlX3NldGZiY19kaXJ0eV9yZWN0YW5nbGVfY29tcGxldGVfc2V0Li4gZG9lc2VudCBtYWtlIG11 Y2ggc2Vuc2UuDQpJIGd1ZXNzIHlvdSBjYW4gdXNlIHRoYXQgYXMgYmFzaWMNCg0KQlINCnZpbm9k DQo+ICt9DQo+ICsNCj4gK2lndF9tYWluDQo+ICt7DQo+ICsJZGF0YV90IGRhdGEgPSB7MH07DQo+ ICsJaW50IGRpc3BsYXlfdmVyOw0KPiArDQo+ICsJaWd0X2ZpeHR1cmUgew0KPiArCQlkYXRhLmRy bV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMIHwgRFJJVkVSX1hFKTsN Cj4gKwkJZGF0YS5kZWJ1Z2ZzX2ZkID0gaWd0X2RlYnVnZnNfZGlyKGRhdGEuZHJtX2ZkKTsNCj4g KwkJZGF0YS5mZWF0dXJlID0gRkVBVFVSRV9GQkM7DQo+ICsJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBo aWNzX21vZGUoKTsNCj4gKwkJaWd0X3JlcXVpcmVfcGlwZV9jcmMoZGF0YS5kcm1fZmQpOw0KPiAr CQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsNCj4gKwkJ aWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7DQo+ICsJCWRpc3BsYXlf dmVyID0gaW50ZWxfZGlzcGxheV92ZXIoaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9mZCkp Ow0KPiArCQlpZ3RfcmVxdWlyZV9mKGRpc3BsYXlfdmVyID49IDMwLCAiRkJDIHdpdGggZGlydHkg cmVnaW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOw0KPiArCX0NCj4gKw0KPiArCWlndF9zdWJ0ZXN0 X3dpdGhfZHluYW1pYygiZmJjLWRpcnR5LXJlY3RhbmdsZS1iYXNpYyIpIHsNCj4gKwkJZGF0YS5m b3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Ow0KPiArCQlmb3JfZWFjaF9waXBlKCZkYXRhLmRp c3BsYXksIGRhdGEucGlwZSkgew0KPiArCQkJZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUo JmRhdGEuZGlzcGxheSwgZGF0YS5waXBlLCBkYXRhLm91dHB1dCkgew0KPiArCQkJCWRhdGEubW9k ZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUoZGF0YS5vdXRwdXQpOw0KPiArCQkJCWlndF9kaXNwbGF5 X3Jlc2V0KCZkYXRhLmRpc3BsYXkpOw0KPiArCQkJCWlndF9vdXRwdXRfc2V0X3BpcGUoZGF0YS5v dXRwdXQsIGRhdGEucGlwZSk7DQo+ICsJCQkJaWd0X2R5bmFtaWNfZigiJXMtJXMiLA0KPiArCQkJ CQnCoMKgwqDCoMKgwqAga21zdGVzdF9waXBlX25hbWUoZGF0YS5waXBlKSwNCj4gKwkJCQkJwqDC oMKgwqDCoMKgIGlndF9vdXRwdXRfbmFtZShkYXRhLm91dHB1dCkpIHsNCj4gKwkJCQkJZmJjX2Rp cnR5X3JlY3RhbmdsZV9iYXNpYygmZGF0YSk7DQo+ICsJCQkJfQ0KPiArCQkJfQ0KPiArCQl9DQo+ ICsJfQ0KPiArDQo+ICsJaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljKCJmYmMtZGlydHktcmVjdGFu Z2xlLWRpZmZlcmVudC1mb3JtYXRzIikgew0KPiArCQl1aW50MzJfdCBmb3JtYXRzW10gPSB7RFJN X0ZPUk1BVF9YUkdCODg4OCwNCj4gKwkJCQnCoMKgwqDCoMKgIERSTV9GT1JNQVRfQVJHQjg4ODgs DQo+ICsJCQkJwqDCoMKgwqDCoCBEUk1fRk9STUFUX1JHQjU2NX07DQo+ICsJCWludCBudW1fZm9y bWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0cyk7DQo+ICsNCj4gKwkJZm9yX2VhY2hfcGlwZSgmZGF0 YS5kaXNwbGF5LCBkYXRhLnBpcGUpIHsNCj4gKwkJCWZvcl9lYWNoX3ZhbGlkX291dHB1dF9vbl9w aXBlKCZkYXRhLmRpc3BsYXksIGRhdGEucGlwZSwgZGF0YS5vdXRwdXQpIHsNCj4gKwkJCQlkYXRh Lm1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKGRhdGEub3V0cHV0KTsNCj4gKwkJCQlpZ3RfZGlz cGxheV9yZXNldCgmZGF0YS5kaXNwbGF5KTsNCj4gKwkJCQlpZ3Rfb3V0cHV0X3NldF9waXBlKGRh dGEub3V0cHV0LCBkYXRhLnBpcGUpOw0KPiArDQo+ICsJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fZm9ybWF0czsgaSsrKSB7DQo+ICsJCQkJCWlndF9keW5hbWljX2YoIiVzLSVzLWZvcm1hdC0l cyIsDQo+ICsJCQkJCQnCoMKgwqDCoMKgwqAga21zdGVzdF9waXBlX25hbWUoZGF0YS5waXBlKSwN Cj4gKwkJCQkJCcKgwqDCoMKgwqDCoCBpZ3Rfb3V0cHV0X25hbWUoZGF0YS5vdXRwdXQpLA0KPiAr CQkJCQkJwqDCoMKgwqDCoMKgIGlndF9mb3JtYXRfc3RyKGZvcm1hdHNbaV0pKSB7DQo+ICsJCQkJ CQlkYXRhLmZvcm1hdCA9IGZvcm1hdHNbaV07DQo+ICsJCQkJCQlmYmNfZGlydHlfcmVjdGFuZ2xl X2Jhc2ljKCZkYXRhKTsNCj4gKwkJCQkJfQ0KPiArCQkJCX0NCj4gKwkJCX0NCj4gKwkJfQ0KPiAr CX0NCj4gKw0KPiArCWlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pYygiZmJjLWRpcnR5LXJlY3Rhbmds ZS1vdXRzaWRlLXZpc2libGUtcmVnaW9uIikgew0KPiArCQlkYXRhLmZlYXR1cmUgPSBGRUFUVVJF X0ZCQzsNCj4gKwkJZGF0YS5mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Ow0KPiArCQlpZ3Rf cmVxdWlyZV9mKGRpc3BsYXlfdmVyID49IDMwLCAiRkJDIHdpdGggZGlydHkgcmVnaW9uIGlzIG5v dCBzdXBwb3J0ZWRcbiIpOw0KPiArDQo+ICsJCWZvcl9lYWNoX3BpcGUoJmRhdGEuZGlzcGxheSwg ZGF0YS5waXBlKSB7DQo+ICsJCQlmb3JfZWFjaF92YWxpZF9vdXRwdXRfb25fcGlwZSgmZGF0YS5k aXNwbGF5LCBkYXRhLnBpcGUsIGRhdGEub3V0cHV0KSB7DQo+ICsJCQkJZGF0YS5tb2RlID0gaWd0 X291dHB1dF9nZXRfbW9kZShkYXRhLm91dHB1dCk7DQo+ICsJCQkJaWd0X2Rpc3BsYXlfcmVzZXQo JmRhdGEuZGlzcGxheSk7DQo+ICsJCQkJaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLm91dHB1dCwg ZGF0YS5waXBlKTsNCj4gKw0KPiArCQkJCWlndF9keW5hbWljX2YoIiVzLSVzLW91dHNpZGUtdmlz aWJsZS1yZWdpb24iLA0KPiArCQkJCQnCoMKgwqDCoMKgwqAga21zdGVzdF9waXBlX25hbWUoZGF0 YS5waXBlKSwNCj4gKwkJCQkJwqDCoMKgwqDCoMKgIGlndF9vdXRwdXRfbmFtZShkYXRhLm91dHB1 dCkpIHsNCj4gKwkJCQkJZmJjX3Rlc3Rfb3V0c2lkZV9yZWdpb24oJmRhdGEpOw0KPiArCQkJCX0N Cj4gKwkJCX0NCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJaWd0 X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsNCj4gKwkJY2xvc2UoZGF0YS5kcm1fZmQpOw0K PiArCX0NCj4gK30NCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVz b24uYnVpbGQNCj4gaW5kZXggMzNkZmZhZDMxLi5mZGUxMDc4ZTMgMTAwNjQ0DQo+IC0tLSBhL3Rl c3RzL21lc29uLmJ1aWxkDQo+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkDQo+IEBAIC0yNTEsNiAr MjUxLDcgQEAgaW50ZWxfa21zX3Byb2dzID0gWw0KPiDCoAkna21zX2RzYycsDQo+IMKgCSdrbXNf ZmJfY29oZXJlbmN5JywNCj4gwqAJJ2ttc19mYmNvbl9mYnQnLA0KPiArCSdrbXNfZmJjX2RpcnR5 X3JlY3QnLA0KPiDCoAkna21zX2ZlbmNlX3Bpbl9sZWFrJywNCj4gwqAJJ2ttc19mbGlwX3NjYWxl ZF9jcmMnLA0KPiDCoAkna21zX2ZsaXBfdGlsaW5nJywNCg0K