From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by sourceware.org (Postfix) with ESMTPS id 88800385840B for ; Mon, 29 Apr 2024 14:34:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 88800385840B 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 88800385840B Authentication-Results: server2.sourceware.org; arc=fail smtp.remote-ip=198.175.65.18 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1714401299; cv=fail; b=Lf8nteneYlG8oeuclvdhT4lHhOMJQZBjfJJgLgcc9QNBzk88KR92eYx5Sh0Wi+38XuQWFqBcoD6HQBwqC/1kWc5ti76WQ2k4rPVVOLbHOdS3Csy3EYqoy510TdrWedKMX8XB0MSy2aDBVLNe9QBflQHLwis84jLWbK4o/NhE5pY= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1714401299; c=relaxed/simple; bh=DC6HlJB8YkDNYtc/0GTf+OoUSsYKlPbpCmduziDQ8Tw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Z2J61JRXMp0+xGcH2RGsKNfiB3oyUuYRLvKlhfGp8b8qVOSPzTgnA0UF8GXZucsmZMmgBtZAeKDHh1cOniqgzRs5fyiRemI3HyIaE8EVzVnUFg+mDaeNopANpI8wqzfAilerReL17RHSuE/5LTCUwCiNT/eDwrQL54IUWDIUfm0= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1714401292; x=1745937292; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=DC6HlJB8YkDNYtc/0GTf+OoUSsYKlPbpCmduziDQ8Tw=; b=U2NhUnZF14ChEEdpLEm4PEXPCAP0fa0Jw1vtpIBTJpak9nFCmK2I1uUI xIqIT6fr7ACyvS64+KrEAzslKLt/bYZQ9dZRfp+PlTM0aS16e5g59QNoQ RKzrsDwMZwMlTdlgcjh7BzLOW5/PP2DttkuF20TTfDICVfG7Zdm+Lv90z /VJyNOyAnaT3l2M9meSHA5zklwy6JFYVlCvuhW06ao0halFUApJPlnexO ETY0xJrqdzTnJOM7schZVmtekXLahCJygkCc2OehX0FiFiMtW/totiRO7 SYA8v88Owwgyj6QuzMvCXIy/3+Vr7H3aTdLD/aQ6HmyRarkOeo4CoOJ9H Q==; X-CSE-ConnectionGUID: WePBpKYeQQGfJT8DnoZvBw== X-CSE-MsgGUID: DpEZ6LcNT9+Ooai0+F9Daw== X-IronPort-AV: E=McAfee;i="6600,9927,11059"; a="10229031" X-IronPort-AV: E=Sophos;i="6.07,239,1708416000"; d="scan'208";a="10229031" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Apr 2024 07:34:46 -0700 X-CSE-ConnectionGUID: x0kt/YXuS8OBTR6a0sFDEw== X-CSE-MsgGUID: tw7POrAaSHyAZc+JUf9vJA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,239,1708416000"; d="scan'208";a="57008423" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 29 Apr 2024 07:34:46 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 29 Apr 2024 07:34:45 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 29 Apr 2024 07:34:45 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 29 Apr 2024 07:34:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oE0SYZ8XhWcht3XbA2e1/KA/M5hvPNnW+d56VTAsbZnDqSfoYOvlFLXWTqxxC96zIMz7JDR1hY8Vjgwg0zPBzcUF/i0iuAiD2GxcELMvV83tkyKwWIq8TJGC7yx/CdxK3976Cv4VBMfX5EocofgI3KjIZfurRxbXlUsuCQP83qzNsZBE6E1DHrLaSwe0l2xKOm88kKymRbTVRVQ+N9lpx89qbn0qjPqqeHbwyVxQPMJ8N279/nK+3/B3X3FYIW3FGzpcIlp3j2Y3E9kfT+KDuupmwmJOZDSBd0w6IQ4irtyBRzG0I3o3jivbKfBUYRi77zXtXwYXgSzhHHXPXvAppg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nPPvCgI7BCPMLJiCoqZ6VwJm25cp8gEOb2KRx89Evmw=; b=gtiayHncSKh5ac7ItPaQ68fxB753tSnah/ntjjidpwRUoj/hGsLO1vSdZNjwvwVM4WAGZtk6Tu2au58GGTU09vLnaOtt8SFYXFJ6RlF8uJpiJXMlsESvNj5cpz90OVrySRHgBfKV0nrkRGKWS/JRYXETql9jO42eHpI9R5bVjgZXvtFIKkX0RQw0hTLjxAY5rhrrkqQrhEcl0yavxeEXD7UYIwwFXKylT9qkXrhWNBRWW/hzobVttLMM7srefz5bNfZ034REc7q8T+JZoHL5Ar0tBZGd2unHWMVRsniLvdsq7+9QF0DpHkdttFTaj2F9410faAAKC2BC1WO/vUbssw== 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 MN2PR11MB4566.namprd11.prod.outlook.com (2603:10b6:208:24e::16) by SJ0PR11MB4912.namprd11.prod.outlook.com (2603:10b6:a03:2ae::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34; Mon, 29 Apr 2024 14:34:42 +0000 Received: from MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::39be:a2b8:752e:a089]) by MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::39be:a2b8:752e:a089%6]) with mapi id 15.20.7519.031; Mon, 29 Apr 2024 14:34:42 +0000 From: "Willgerodt, Felix" To: Andrew Burgess , "gdb-patches@sourceware.org" CC: John Baldwin Subject: RE: [PATCHv5 07/11] gdb/gdbserver: share some code relating to target description creation Thread-Topic: [PATCHv5 07/11] gdb/gdbserver: share some code relating to target description creation Thread-Index: AQHal+ruTiLCOWCzCUWtYjTYDX2lqLF+4RgA Date: Mon, 29 Apr 2024 14:34:42 +0000 Message-ID: References: <885b8258b5651b4a4d70cd4cdcdb0c004ecd9fef.1714143669.git.aburgess@redhat.com> In-Reply-To: <885b8258b5651b4a4d70cd4cdcdb0c004ecd9fef.1714143669.git.aburgess@redhat.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: MN2PR11MB4566:EE_|SJ0PR11MB4912:EE_ x-ms-office365-filtering-correlation-id: ef3361a0-ca7a-4ab0-bf05-08dc6859822c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?B?RW5PRnRHWlJHNjZJbzV6Y1hiYkpXUHRhU21QeDhOOStHV2o1cGNCN2xDdXJq?= =?utf-8?B?NzRNckZaaVkvUGZFM21YQ1lMemRjMGFkR25MYmpZelptV2J4cWpDbXdLYzZJ?= =?utf-8?B?Ky9KZ3g3US9YUGRPa083YW9OdHg0MXd0bGFVNG45OEhqcmV6UVVsdFRkQUlX?= =?utf-8?B?STJFWDF6NTdtaUdHZkhpN3RnNDgrMGttWVYvczlHb25kTU1uV3BHS3d6a0h5?= =?utf-8?B?bnd0R29XUXhUeHh3U3NzemFlRExMc2lXM1BiQ0FncERWcEs3MVNTa01uRFkr?= =?utf-8?B?T2YwTWg5MXZTRFJjbk5yUVJGRkNxa2ZaVjRyTDc5eFRBSEpuWnA4bitrQlBt?= =?utf-8?B?bHQwK3JRZVlUYlB5MmJFRDdRMGhodHpZSUhJcVNROUttZm1GMFR6TjZ6aXUw?= =?utf-8?B?eUExSWpTcFpYQVorVWlHZlhRUXVqQWxhc2UvakdjWS9uSE03S2xVbzl4cElT?= =?utf-8?B?ejdwNnVWbkVDb0tNNWk2ZVlGOGFYQzB3eU5vQm9aUlNxZjJnRWVicDNGbi9Q?= =?utf-8?B?b0JTQ3VHVzNveFYrRG1DTEd1VU5rYWJjc0VXaENNbi91K3VvM0JocUh5VGxS?= =?utf-8?B?MnhNSWljY2NQSEszZUJuQkxRV2xPSU9meXNqTnk4SUk3dVE3WThnSno3SDJP?= =?utf-8?B?ZHNZcENhMFBiWGJKOHRxdktiK2xzcEhldElsTXRZTjFGQmxZaTdiaUxCTUk2?= =?utf-8?B?K3Vka2hqR3dhcjhxMm1MaGk2Yk1zdlNZbnJTazhxSTUvSTh5cmMrZXIxOFV2?= =?utf-8?B?MkErWStPK0xGWS9iZFNydWlJL0RsU2JoaDdOaitKQm9mSlJ6S0ZtYkRBcDdv?= =?utf-8?B?WGg1dk9lYkJocUNHK1ZjdWhZejh1eU5naWxLSU0wOUxWSk1FbEUzWDZqSktx?= =?utf-8?B?Qys3VnJoOUdlYVZkMVNIdDZTUkdZNURLdGcwZzAvcU5JMnUyaFduNG92OXRU?= =?utf-8?B?ZkM0eElHMWd6UXNuanNvVFl5YUp0UzFQc3lWU0hZSHNmZC9TbkZjL0ViTVZi?= =?utf-8?B?NXV2ajNMOVZaNENiVmdqU2Q5YTJpTkVrQkpBTnVnYmt1UUR1NTFNRUdVRFEy?= =?utf-8?B?dFlTbnU3M3V2dDRYK2c1ME9hd2d5US8yNlhLVENxRVRKamZheTEzdmZXMVl3?= =?utf-8?B?dG83YVZkYjdhb3BhWnRuVU5JTVZPSFMrTHdSZjgvbW9HanlHenJ5WDR1TWxm?= =?utf-8?B?NzAvN2Iyam1aclNJVEZpOER1Y0w4Z1N3QXNjT0R3MDZWSFRLOWY5UWYzVmlR?= =?utf-8?B?QWkwTEdDMVlPeFNGZXl2eFRiWnlySmY3NldLSWVHWDZFRTIvUGkrNlNGc2Za?= =?utf-8?B?YXN3aDRrRkIzQ21DSWI0TFQwRkNJM1pjWFpLNFgyajZVRmJFaHR0MVBYZnlE?= =?utf-8?B?Slh5RVc2Y0RuaVBQSVVhUVIvRkdYZjBteE5UZHZYNTF5eVJCczdBd3JuUnY2?= =?utf-8?B?ck85bE1rajRGNjBvTEd3ejNaWW5Zd3FteFI4aDVMYXpkY1VZVmFVYndiR21j?= =?utf-8?B?UDMxa0YxVm5FQm94RE1FQ1FKRHBURVhHVGFmTjQvbHZJRXVsZGpjOGlHeUhu?= =?utf-8?B?UTQxTEVXRlRkYUJBZGtWWkN1dGtGamFoR2JLaTZXb05rb05pUnNGMU45TTgv?= =?utf-8?B?RWtha0FVRW14Z0l6UkllNTBENmtYaUU5YVQrK0s2TGZnaWt3R0tDRTZDaUJC?= =?utf-8?B?U0VHeVpXZ2pBMkM4SWh4WGR3ZjNkTlZONW9UMDdvanpNQW9wVkJDVXpRPT0=?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4566.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366007)(376005)(1800799015)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Rmp0bTRjaGlpSmhvdUp1QXl6R01tVDI2eTIrYmVsTDJkQmN2ejNodTlRb0RT?= =?utf-8?B?S1o1NkFVWC9zTmFCWWVCMDZHS0F3VUU0SEVxZ05tYkhNTnVjOW4zY1Q3bEJx?= =?utf-8?B?THZQY3NkbXUwRm9TUUdGdUhoRXRFMHFmZGpMM3psL1Rndm5FRHlxSC92ZnNI?= =?utf-8?B?UEFuaU5wVUE3SXZjNHZ2R3NlMjZPRnF6YTVFdkc0N1hXUkRTWEd3YzdCcFl6?= =?utf-8?B?Y05raVBBaFVuWGR2bTBBaFhGNDZuL3pncUlRc0xkS3Q4L05Bdkh6VzZhREs1?= =?utf-8?B?aVUzUFlOb2FTbnVheHYyWmNYNmlNemMyNWdqSGZ0TWx5MDRvVExNZHhRTmxx?= =?utf-8?B?R2NLMEFjcjNoZC8yZTZIM1dkcVpUeGhTaE5JY1gvY2FEVGtVQUh2TFBOSzFK?= =?utf-8?B?WnRDbXp4N2RRODJSRFhsM0h1ckJYNjdFTWpHVXJpL1pWUk5mMFNIV3RHQ0d1?= =?utf-8?B?RkRXTmg3WmFlZnJkdWhucXZQdXpGV3JxQ0NLMFBvcjVhZ0dRdWJWUjVvR21G?= =?utf-8?B?cGQxeVpPRnJBbEhFTXBNaUI3Zm5PNEtRRmxGNGxpRVdtNWU1aFkySGF2dVkv?= =?utf-8?B?bWtsQW9FbWNLWlRkUkVpSWdBTWlMYXFmYVA5VTNMSGt5eW5COWE1Y1laZnlU?= =?utf-8?B?SFgycE93cmVqanJkTW96SXQrdDJQWTExT3NoV3BxRUV2aDRqWHF3c0pUV1lM?= =?utf-8?B?K0VSOTJkeEdTY0ozQWw2QzVudVNrZXFZRGQvaHlrcFlTTGJ3dmlIWTFqWmhG?= =?utf-8?B?bW9XQ2l0N0F6bWhyYkNYaENzVmE5Z3ZUNFltbytROGZiTGs1ZEFqRFBZMHhZ?= =?utf-8?B?Ky9zZmVITFBlOWNwMXR3OUZ4Z3dGd2xJMVF6c2pQMis1QkRYUmRKTEQxODdh?= =?utf-8?B?VVcyVURMUUxCNjQzWlh0OUw4SUNiZ056clpVZjloNC9uK2gyOHFuNjVJM2hh?= =?utf-8?B?OG1Rdmd2VWl0NlVycVJxVk12OWVsTnF3N2lOKzMzMjErb3I3WU13TlRTZGlT?= =?utf-8?B?YVhBejJRUlNieGM5MnByR3FtYWRUVkN6Vm1PR3gwZXMvSGFqUzR0MUFwTlUw?= =?utf-8?B?Q0JrRDl5U1hPUkk0bVNnbHVnQW05ZFZpRk81TXRTWVo4M1lvYVhhS1J3ajB1?= =?utf-8?B?bGdxaVBFaDRkQUZWUTdSbXNhK0wrV0hHS0xERytMc2tudEQwWFhLeEF2QXZW?= =?utf-8?B?TVpzQ2hyRVU1UWR3anZBTzl0ZEp5bDIxS3k0N1doZFBiR2YxaEIxTjg4YnpI?= =?utf-8?B?NUgrTjZSVWV1bmxHN0Zvd0dZcUkxVWlmUkVJZlBJR0V2NG52WHRjNzBzdllu?= =?utf-8?B?OFlFU1lQY0tuTU44R3dPbi8wWFB6OEE4UjVwQnlRd0xTY2pQTWV2NUFPQ0h5?= =?utf-8?B?WkE0L3VXUGxhdS9JSGtxNFYweW9XTHp0Ky9IY0NKL29TSDU5RlVrajFITFdW?= =?utf-8?B?TnVIQTZVNVBJREtWL0NzTVhTYkoyazBaeHRzOVBia2QwVXRVQTVVVE50YmZ6?= =?utf-8?B?K3lPY0RSRHA2NllZY2E3WkVBa1VGcVhNdFRGRFBQMDNBdEwxU0NwMlNTOXZq?= =?utf-8?B?Y25BWjZHSGxMS25iZmFLaGthaXVXWWl1MlZtSGI3M0pvNnczRWdER21YTDB5?= =?utf-8?B?cFFIVHhnSmM1N242YXlJZWw5UXRnbnZ1ZTBHbWFrQkRSRURya2FYNW1QV2wx?= =?utf-8?B?RGlkYW52YTVFOTRVL3Q3SkpXMWsrOUVTUGpSMG1hYnFHQUwzSnFTMDk5NEZD?= =?utf-8?B?azRhb3V2TlNWL2JqaHhnNldhUFh2aGRTMFJkTlVXaWJWSU9sOFhSRXd5K1Vi?= =?utf-8?B?eklmc0RyU1FIdUxPY0JyN1JmSDNtZHE0RE4vL3pzQjEvUk5HRWVsVUNtYStN?= =?utf-8?B?M1ZtMEdpVzRtZWFidUI1bjEwcktFYzNPRVdXUkpXMnh5OVRwTlB5aGptV3p3?= =?utf-8?B?aVVTVFlsTTlEOCtiWE9vQWtqUHkzcW53V3BKNWZ2MHdDVFUxY000d3VwUks0?= =?utf-8?B?NzRMSkVRNkF1ZkRQaG10bnJiZ0ZvQzUwZlJqRWlFaUllalliQ0R3QzdWY1Nq?= =?utf-8?B?biszeDFCNnVzQm9xaGxrZ2EzMS91S1p5MzlsZmR4c1dST0xqa04rZEpURmdm?= =?utf-8?Q?vMRE96EufVYSWHCzAc7gqKEUh?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4566.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef3361a0-ca7a-4ab0-bf05-08dc6859822c X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2024 14:34:42.4916 (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: Kq3BPpywdMEYJJ/j8fjreoaLNnLRpRBnOHwexuI4WxlOyRxRYx5m9pHmb1isIPDBV8PvqRwjHujOoNYfIN6KTaLRTY5ekoSRdpZ5i9HF6b8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4912 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1 cmdlc3NAcmVkaGF0LmNvbT4NCj4gU2VudDogRnJlaXRhZywgMjYuIEFwcmlsIDIwMjQgMTc6MDIN Cj4gVG86IGdkYi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+IENjOiBBbmRyZXcgQnVyZ2VzcyA8 YWJ1cmdlc3NAcmVkaGF0LmNvbT47IFdpbGxnZXJvZHQsIEZlbGl4DQo+IDxmZWxpeC53aWxsZ2Vy b2R0QGludGVsLmNvbT47IEpvaG4gQmFsZHdpbiA8amhiQEZyZWVCU0Qub3JnPg0KPiBTdWJqZWN0 OiBbUEFUQ0h2NSAwNy8xMV0gZ2RiL2dkYnNlcnZlcjogc2hhcmUgc29tZSBjb2RlIHJlbGF0aW5n IHRvIHRhcmdldA0KPiBkZXNjcmlwdGlvbiBjcmVhdGlvbg0KPiANCj4gVGhpcyBjb21taXQgaXMg cGFydCBvZiBhIHNlcmllcyB0byBzaGFyZSBtb3JlIG9mIHRoZSB4ODYgdGFyZ2V0DQo+IGRlc2Ny aXB0aW9uIGNyZWF0aW9uIGNvZGUgYmV0d2VlbiBHREIgYW5kIGdkYnNlcnZlci4NCj4gDQo+IFVu bGlrZSBwcmV2aW91cyBjb21taXRzIHdoaWNoIHdlcmUgbW9zdGx5IHJlZmFjdG9yaW5nLCB0aGlz IGNvbW1pdCBpcw0KPiB0aGUgZmlyc3QgdGhhdCBtYWtlcyBhIHJlYWwgY2hhbmdlLCB0aG91Z2gg dGhhdCBjaGFuZ2Ugc2hvdWxkIG1vc3RseQ0KPiBiZSBmb3IgZ2Ric2VydmVyOyBJJ3ZlIGxhcmdl bHkgYWRvcHRlZCB0aGUgIkdEQiIgd2F5IG9mIGRvaW5nIHRoaW5ncw0KPiBmb3IgZ2Ric2VydmVy LCBhbmQgdGhpcyBmaXhlcyBhIHJlYWwgZ2Ric2VydmVyIGJ1Zy4NCj4gDQo+IE9uIGEgeDg2LTY0 IExpbnV4IHRhcmdldCwgcnVubmluZyB0aGUgdGVzdDoNCj4gDQo+ICAgZ2RiLnNlcnZlci9jb25u ZWN0LXdpdGgtbm8tc3ltYm9sLWZpbGUuZXhwDQo+IA0KPiByZXN1bHRzIGluIHR3byBjb3JlIGZp bGVzIGJlaW5nIGNyZWF0ZWQuICBCb3RoIG9mIHRoZXNlIGNvcmUgZmlsZXMgYXJlDQo+IGZyb20g dGhlIGluZmVyaW9yIHByb2Nlc3MsIGNyZWF0ZWQgYWZ0ZXIgZ2Ric2VydmVyIGhhcyBkZXRhY2hl ZC4NCj4gDQo+IEluIHRoaXMgdGVzdCBhIGdkYnNlcnZlciBwcm9jZXNzIGlzIHN0YXJ0ZWQgYW5k IHRoZW4sIGFmdGVyIGdkYnNlcnZlcg0KPiBoYXMgc3RhcnRlZCwgYnV0IGJlZm9yZSBHREIgYXR0 YWNoZXMsIHdlIGVpdGhlciBkZWxldGUgdGhlIGluZmVyaW9yDQo+IGV4ZWN1dGFibGUsIG9yIGNo YW5nZSBpdHMgcGVybWlzc2lvbnMgc28gaXQgY2FuJ3QgYmUgcmVhZC4gIE9ubHkgYWZ0ZXINCj4g ZG9pbmcgdGhpcyBkbyB3ZSBhdHRlbXB0IHRvIGNvbm5lY3Qgd2l0aCBHREIuDQo+IA0KPiBBcyBH REIgY29ubmVjdHMgdG8gZ2Ric2VydmVyLCBnZGJzZXJ2ZXIgYXR0ZW1wdHMgdG8gZmlndXJlIG91 dCB0aGUNCj4gdGFyZ2V0IGRlc2NyaXB0aW9uIHNvIHRoYXQgaXQgY2FuIHNlbmQgdGhlIGRlc2Ny aXB0aW9uIHRvIEdEQiwgdGhpcw0KPiBpbnZvbHZlcyBhIGNhbGwgdG8geDg2X2xpbnV4X3JlYWRf ZGVzY3JpcHRpb24uDQo+IA0KPiBJbiB4ODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbiBvbmUgb2Yg dGhlIGZpcnN0IHRoaW5ncyB3ZSBkbyBpcyB0cnkgdG8NCj4gZmlndXJlIG91dCBpZiB0aGUgcHJv Y2VzcyBpcyAzMi1iaXQgb3IgNjQtYml0LiAgVG8gZG8gdGhpcyB3ZSBsb29rIHVwDQo+IHRoZSBl eGVjdXRhYmxlIHZpYSB0aGUgdGhyZWFkLWlkLCBhbmQgdGhlbiBhdHRlbXB0IHRvIHJlYWQgdGhl DQo+IGFyY2hpdGVjdHVyZSBzaXplIGZyb20gdGhlIGV4ZWN1dGFibGUuICBUaGlzIGlzbid0IGdv aW5nIHRvIHdvcmsgaWYNCj4gdGhlIGV4ZWN1dGFibGUgaGFzIGJlZW4gZGVsZXRlZCwgb3IgaXMg bm8gbG9uZ2VyIHJlYWRhYmxlLg0KPiANCj4gQW5kIHNvLCBhcyB3ZSBjYW4ndCByZWFkIHRoZSBl eGVjdXRhYmxlLCB3ZSBkZWZhdWx0IHRvIGFuIGkzODYgdGFyZ2V0DQo+IGFuZCB1c2UgYW4gaTM4 NiB0YXJnZXQgZGVzY3JpcHRpb24uDQo+IA0KPiBBIGNvbnNlcXVlbmNlIG9mIHVzaW5nIGFuIGkz ODYgdGFyZ2V0IGRlc2NyaXB0aW9uIGlzIHRoYXQgYWRkcmVzc2VzDQo+IGFyZSBhc3N1bWVkIHRv IGJlIDMyLWJpdHMuICBIZXJlJ3MgYW4gZXhhbXBsZSBzZXNzaW9uIHRoYXQgc2hvd3MgdGhlDQo+ IHByb2JsZW1zIHRoaXMgY2F1c2VzLiAgVGhpcyBpcyBydW4gb24gYW4geDg2LTY0IG1hY2hpbmUs IGFuZCB0aGUgdGVzdA0KPiBiaW5hcnkgKHh4LngpIGlzIGEgc3RhbmRhcmQgNjQtYml0IHg4Ni02 NCBiaW5hcnk6DQo+IA0KPiAgIHNoZWxsXzEkIGdkYnNlcnZlciAtLW9uY2UgbG9jYWxob3N0IDo1 NDMyMSAvdG1wL3h4LngNCj4gDQo+ICAgc2hlbGxfMiQgZ2RiIC1xDQo+ICAgKGdkYikgc2V0IHN5 c3Jvb3QNCj4gICAoZ2RiKSBzaGVsbCBjaG1vZCAwMDAgL3RtcC94eC54DQo+ICAgKGdkYikgdGFy Z2V0IHJlbW90ZSA6NTQzMjENCj4gICBSZW1vdGUgZGVidWdnaW5nIHVzaW5nIDo1NDMyMQ0KPiAg IHdhcm5pbmc6IC90bXAveHgueDogUGVybWlzc2lvbiBkZW5pZWQuDQo+ICAgMHhmN2ZkMzExMCBp biA/PyAoKQ0KPiAgIChnZGIpIHNob3cgYXJjaGl0ZWN0dXJlDQo+ICAgVGhlIHRhcmdldCBhcmNo aXRlY3R1cmUgaXMgc2V0IHRvICJhdXRvIiAoY3VycmVudGx5ICJpMzg2IikuDQo+ICAgKGdkYikg cC94ICRwYw0KPiAgICQxID0gMHhmN2ZkMzExMA0KPiAgIChnZGIpIGluZm8gcHJvYyBtYXBwaW5n cw0KPiAgIHByb2Nlc3MgMjQxMjYzOQ0KPiAgIE1hcHBlZCBhZGRyZXNzIHNwYWNlczoNCj4gDQo+ ICAgCVN0YXJ0IEFkZHIgICBFbmQgQWRkciAgICAgICBTaXplICAgICBPZmZzZXQgIFBlcm1zICAg b2JqZmlsZQ0KPiAgIAkgIDB4NDAwMDAwICAgMHg0MDEwMDAgICAgIDB4MTAwMCAgICAgICAgMHgw ICByLS1wICAgL3RtcC94eC54DQo+ICAgCSAgMHg0MDEwMDAgICAweDQwMjAwMCAgICAgMHgxMDAw ICAgICAweDEwMDAgIHIteHAgICAvdG1wL3h4LngNCj4gICAJICAweDQwMjAwMCAgIDB4NDAzMDAw ICAgICAweDEwMDAgICAgIDB4MjAwMCAgci0tcCAgIC90bXAveHgueA0KPiAgIAkgIDB4NDAzMDAw ICAgMHg0MDUwMDAgICAgIDB4MjAwMCAgICAgMHgyMDAwICBydy1wICAgL3RtcC94eC54DQo+ICAg CTB4ZjdmY2IwMDAgMHhmN2ZjZjAwMCAgICAgMHg0MDAwICAgICAgICAweDAgIHItLXAgICBbdnZh cl0NCj4gICAJMHhmN2ZjZjAwMCAweGY3ZmQxMDAwICAgICAweDIwMDAgICAgICAgIDB4MCAgci14 cCAgIFt2ZHNvXQ0KPiAgIAkweGY3ZmQxMDAwIDB4ZjdmZDMwMDAgICAgIDB4MjAwMCAgICAgICAg MHgwICByLS1wICAgL3Vzci9saWI2NC9sZC0yLjMwLnNvDQo+ICAgCTB4ZjdmZDMwMDAgMHhmN2Zm MzAwMCAgICAweDIwMDAwICAgICAweDIwMDAgIHIteHAgICAvdXNyL2xpYjY0L2xkLTIuMzAuc28N Cj4gICAJMHhmN2ZmMzAwMCAweGY3ZmZiMDAwICAgICAweDgwMDAgICAgMHgyMjAwMCAgci0tcCAg IC91c3IvbGliNjQvbGQtMi4zMC5zbw0KPiAgIAkweGY3ZmZjMDAwIDB4ZjdmZmUwMDAgICAgIDB4 MjAwMCAgICAweDJhMDAwICBydy1wICAgL3Vzci9saWI2NC9sZC0yLjMwLnNvDQo+ICAgCTB4Zjdm ZmUwMDAgMHhmN2ZmZjAwMCAgICAgMHgxMDAwICAgICAgICAweDAgIHJ3LXANCj4gICAJMHhmZmZk YTAwMCAweGZmZmZmMDAwICAgIDB4MjUwMDAgICAgICAgIDB4MCAgcnctcCAgIFtzdGFja10NCj4g ICAJMHhmZjYwMDAwMCAweGZmNjAxMDAwICAgICAweDEwMDAgICAgICAgIDB4MCAgci14cCAgIFt2 c3lzY2FsbF0NCj4gICAoZ2RiKSBpbmZvIGluZmVyaW9ycw0KPiAgICAgTnVtICBEZXNjcmlwdGlv biAgICAgICBDb25uZWN0aW9uICAgICAgICAgICBFeGVjdXRhYmxlDQo+ICAgKiAxICAgIHByb2Nl c3MgMjQxMjYzOSAgIDEgKHJlbW90ZSA6NTQzMjEpDQo+ICAgKGdkYikgc2hlbGwgY2F0IC9wcm9j LzI0MTI2MzkvbWFwcw0KPiAgIDAwNDAwMDAwLTAwNDAxMDAwIHItLXAgMDAwMDAwMDAgZmQ6MDMg NDU5MDcxMzMgICAgICAgICAgIC90bXAveHgueA0KPiAgIDAwNDAxMDAwLTAwNDAyMDAwIHIteHAg MDAwMDEwMDAgZmQ6MDMgNDU5MDcxMzMgICAgICAgICAgIC90bXAveHgueA0KPiAgIDAwNDAyMDAw LTAwNDAzMDAwIHItLXAgMDAwMDIwMDAgZmQ6MDMgNDU5MDcxMzMgICAgICAgICAgIC90bXAveHgu eA0KPiAgIDAwNDAzMDAwLTAwNDA1MDAwIHJ3LXAgMDAwMDIwMDAgZmQ6MDMgNDU5MDcxMzMgICAg ICAgICAgIC90bXAveHgueA0KPiAgIDdmZmZmN2ZjYjAwMC03ZmZmZjdmY2YwMDAgci0tcCAwMDAw MDAwMCAwMDowMCAwICAgICAgICAgIFt2dmFyXQ0KPiAgIDdmZmZmN2ZjZjAwMC03ZmZmZjdmZDEw MDAgci14cCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgIFt2ZHNvXQ0KPiAgIDdmZmZmN2ZkMTAw MC03ZmZmZjdmZDMwMDAgci0tcCAwMDAwMDAwMCBmZDowMCAxNDM5MDQgICAgIC91c3IvbGliNjQv bGQtMi4zMC5zbw0KPiAgIDdmZmZmN2ZkMzAwMC03ZmZmZjdmZjMwMDAgci14cCAwMDAwMjAwMCBm ZDowMCAxNDM5MDQgICAgIC91c3IvbGliNjQvbGQtMi4zMC5zbw0KPiAgIDdmZmZmN2ZmMzAwMC03 ZmZmZjdmZmIwMDAgci0tcCAwMDAyMjAwMCBmZDowMCAxNDM5MDQgICAgIC91c3IvbGliNjQvbGQt Mi4zMC5zbw0KPiAgIDdmZmZmN2ZmYzAwMC03ZmZmZjdmZmUwMDAgcnctcCAwMDAyYTAwMCBmZDow MCAxNDM5MDQgICAgIC91c3IvbGliNjQvbGQtMi4zMC5zbw0KPiAgIDdmZmZmN2ZmZTAwMC03ZmZm ZjdmZmYwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwDQo+ICAgN2ZmZmZmZmRhMDAwLTdmZmZmZmZm ZjAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAgICAgICAgICAgW3N0YWNrXQ0KPiAgIGZmZmZmZmZm ZmY2MDAwMDAtZmZmZmZmZmZmZjYwMTAwMCByLXhwIDAwMDAwMDAwIDAwOjAwIDAgIFt2c3lzY2Fs bF0NCj4gICAoZ2RiKQ0KPiANCj4gTm90aWNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1h cHBpbmdzIHJlcG9ydGVkIHZpYSBHREIgYW5kIHRob3NlDQo+IHJlcG9ydGVkIGRpcmVjdGx5IGZy b20gdGhlIGtlcm5lbCB2aWEgL3Byb2MvUElEL21hcHMsIHRoZSBhZGRyZXNzZXMgb2YNCj4gZXZl cnkgbWFwcGluZyBpcyBjbGFtcGVkIHRvIDMyLWJpdHMgZm9yIEdEQiwgd2hpbGUgdGhlIGtlcm5l bCByZXBvcnRzDQo+IHJlYWwgNjQtYml0IGFkZHJlc3Nlcy4NCj4gDQo+IE5vdGljZSBhbHNvIHRo YXQgdGhlICRwYyB2YWx1ZSBpcyBhIDMyLWJpdCB2YWx1ZS4gIEl0IGFwcGVhcnMgdG8gYmUNCj4g d2l0aGluIG9uZSBvZiB0aGUgbWFwcGluZ3MgcmVwb3J0ZWQgYnkgR0RCLCBidXQgaXMgb3V0c2lk ZSBhbnkgb2YgdGhlDQo+IG1hcHBpbmdzIHJlcG9ydGVkIGZyb20gdGhlIGtlcm5lbC4NCj4gDQo+ IEFuZCB0aGlzIGlzIHdoZXJlIHRoZSBwcm9ibGVtIGFyaXNlcy4gIFdoZW4gZ2Ric2VydmVyIGRl dGFjaGVzIGZyb20NCj4gdGhlIGluZmVyaW9yIHdlIHBhc3MgdGhlIGluZmVyaW9yIHRoZSBhZGRy ZXNzIGZyb20gd2hpY2ggaXQgc2hvdWxkDQo+IHJlc3VtZS4gIER1ZSB0byB0aGUgMzIvNjQgYml0 IGNvbmZ1c2lvbiB3ZSB0ZWxsIHRoZSBpbmZlcmlvciB0byByZXN1bWUNCj4gZnJvbSB0aGUgMzIt Yml0ICRwYyB2YWx1ZSwgd2hpY2ggaXMgbm90IHdpdGhpbiBhbnkgdmFsaWQgbWFwcGluZywgYW5k DQo+IHNvLCBhcyBzb29uIGFzIHRoZSBpbmZlcmlvciByZXN1bWVzLCBpdCBzZWdmYXVsdHMuDQo+ IA0KPiBJZiB3ZSBsb29rIGF0IGhvdyBHREIgKG5vdCBnZGJzZXJ2ZXIpIGZpZ3VyZXMgb3V0IGl0 cyB0YXJnZXQNCj4gZGVzY3JpcHRpb24gdGhlbiB3ZSBzZWUgYW4gaW50ZXJlc3RpbmcgZGlmZmVy ZW5jZS4gIEdEQiBkb2Vzbid0IHRyeSB0bw0KPiByZWFkIHRoZSBleGVjdXRhYmxlLiAgSW5zdGVh ZCBHREIgdXNlcyBwdHJhY2UgdG8gcXVlcnkgdGhlIHRocmVhZCdzDQo+IHN0YXRlLCBhbmQgdXNl cyB0aGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGlmIHRoZSB0aHJlYWQgaXMgMzIgb3IgNjQgYml0Lg0K PiANCj4gSWYgd2UgdXBkYXRlIGdkYnNlcnZlciB0byBkbyBpdCB0aGUgIkdEQiIgd2F5IHRoZW4g dGhlIGFib3ZlIHByb2JsZW0NCj4gaXMgcmVzb2x2ZWQsIGdkYnNlcnZlciBub3cgc2VlcyB0aGUg cHJvY2VzcyBhcyA2NC1iaXQsIGFuZCB3aGVuIHdlDQo+IGRldGFjaCBmcm9tIHRoZSBpbmZlcmlv ciB3ZSBnaXZlIGl0IHRoZSBjb3JyZWN0IDY0LWJpdCBhZGRyZXNzLCBhbmQNCj4gdGhlIGluZmVy aW9yIG5vIGxvbmdlciBzZWdmYXVsdHMuDQo+IA0KPiBOb3csIEkgY291bGQganVzdCB1cGRhdGUg dGhlIGdkYnNlcnZlciBjb2RlLCBidXQgYmV0dGVyLCBJIHRoaW5rLCB0bw0KPiBzaGFyZSBvbmUg Y29weSBvZiB0aGUgY29kZSBiZXR3ZWVuIEdEQiBhbmQgZ2Ric2VydmVyIGluIGdkYi9uYXQvLg0K PiBUaGF0IGlzIHdoYXQgdGhpcyBjb21taXQgZG9lcy4NCj4gDQo+IFRoZSBjb3JlcyBvZiB4ODZf bGludXhfcmVhZF9kZXNjcmlwdGlvbiBmcm9tIGdkYnNlcnZlciBhbmQNCj4geDg2X2xpbnV4X25h dF90YXJnZXQ6OnJlYWRfZGVzY3JpcHRpb24gZnJvbSBHREIgYXJlIG1vdmVkIGludG8gYSBuZXcN Cj4gZmlsZSBnZGIvbmF0L3g4Ni1saW51eC10ZGVzYy5jIGFuZCBjb21iaW5lZCBpbnRvIGEgc2lu Z2xlIGZ1bmN0aW9uDQo+IHg4Nl9saW51eF90ZGVzY19mb3JfdGlkIHdoaWNoIGlzIGNhbGxlZCBm cm9tIGVhY2ggbG9jYXRpb24uDQo+IA0KPiBUaGlzIG5ldyBmdW5jdGlvbiBkb2VzIHRoaW5ncyB0 aGUgR0RCIHdheSwgdGhlIG9ubHkgY2hhbmdlcyBhcmUgdG8NCj4gYWxsb3cgZm9yIHRoZSBzaGFy aW5nOyB3ZSBub3cgaGF2ZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgdGhlDQo+IGZpcnN0 IHRpbWUgdGhhdCB0aGUgeGNyMCBzdGF0ZSBpcyByZWFkLCB0aGlzIGFsbG93cyBmb3IgR0RCIGFu ZA0KPiBnZGJzZXJ2ZXIgdG8gcGVyZm9ybSB0aGVpciBvd24gaW5pdGlhbGlzYXRpb24gYXMgbmVl ZGVkLCBhbmQNCj4gYWRkaXRpb25hbGx5LCB0aGUgbmV3IGZ1bmN0aW9uIHRha2VzIGEgcG9pbnRl ciBmb3Igd2hlcmUgdG8gY2FjaGUgdGhlDQo+IHhjcjAgdmFsdWUsIHRoaXMgaXNuJ3QgbmVlZGVk IGZvciB0aGlzIGNvbW1pdCwgYnV0IHdpbGwgYmUgdXNlZnVsIGluIGENCj4gbGF0ZXIgY29tbWl0 IHdoZXJlIGdkYnNlcnZlciB3aWxsIHdhbnQgdG8gcmVhZCB0aGlzIGNhY2hlZCB4Y3IwDQo+IHZh bHVlLg0KPiANCj4gQW5vdGhlciB0aGluZyB0byBub3RlIGFib3V0IHRoaXMgY29tbWl0IGlzIGhv dyB0aGUgZnVuY3Rpb25zDQo+IGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbiBhbmQgYW1kNjRf bGludXhfcmVhZF9kZXNjcmlwdGlvbiBhcmUNCj4gaGFuZGxlZC4gIEZvciBub3cgSSd2ZSBsZWZ0 IHRoZXNlIGZ1bmN0aW9uIGFzIGltcGxlbWVudGVkIHNlcGFyYXRlbHkNCj4gaW4gR0RCIGFuZCBn ZGJzZXJ2ZXIuICBJJ3ZlIG1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25z DQo+IGludG8gZ2RiL2FyY2gve2kzODYsYW1kNjR9LWxpbnV4LXRkZXNjLmgsIGJ1dCB0aGUgaW1w bGVtZW50YXRpb25zIGFyZQ0KPiBsZWZ0IHdoZXJlIHRoZXkgYXJlLg0KPiANCj4gQSBsYXRlciBj b21taXQgaW4gdGhpcyBzZXJpZXMgd2lsbCBtYWtlIHRoZXNlIGZ1bmN0aW9ucyBzaGFyZWQgdG9v LA0KPiBidXQgZG9pbmcgdGhpcyBpcyBub3QgdHJpdmlhbCwgc28gSSd2ZSBsZWZ0IHRoYXQgZm9y IGEgc2VwYXJhdGUNCj4gY29tbWl0LiAgTWVyZ2luZyB0aGUgZGVjbGFyYXRpb25zIGFzIEkndmUg ZG9uZSBoZXJlIGVuc3VyZXMgdGhhdA0KPiBldmVyeW9uZSBpbXBsZW1lbnRzIHRoZSBmdW5jdGlv biB0byB0aGUgc2FtZSBBUEksIGFuZCBvbmNlIHRoZXNlDQo+IGZ1bmN0aW9ucyBhcmUgc2hhcmVk IChpbiBhIGxhdGVyIGNvbW1pdCkgd2UnbGwgd2FudCBhIHNoYXJlZA0KPiBkZWNsYXJhdGlvbiBh bnl3YXkuDQo+IC0tLQ0KPiAgZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgICB8ICAgMyArDQo+ ICBnZGIvYW1kNjQtbGludXgtdGRlcC5jICAgICAgIHwgICAxICsNCj4gIGdkYi9hbWQ2NC1saW51 eC10ZGVwLmggICAgICAgfCAgIDYgLS0NCj4gIGdkYi9hcmNoL2FtZDY0LWxpbnV4LXRkZXNjLmgg fCAgMzAgKysrKysrKw0KPiAgZ2RiL2FyY2gvaTM4Ni1saW51eC10ZGVzYy5oICB8ICAyOSArKysr KysrDQo+ICBnZGIvY29uZmlndXJlLm5hdCAgICAgICAgICAgIHwgICA0ICstDQo+ICBnZGIvaTM4 Ni1saW51eC10ZGVwLmMgICAgICAgIHwgICAxICsNCj4gIGdkYi9pMzg2LWxpbnV4LXRkZXAuaCAg ICAgICAgfCAgIDMgLQ0KPiAgZ2RiL25hdC94ODYtbGludXgtdGRlc2MuYyAgICB8IDEyNCArKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBnZGIvbmF0L3g4Ni1saW51eC10ZGVzYy5oICAg IHwgIDYwICsrKysrKysrKysrKysrDQo+ICBnZGIveDg2LWxpbnV4LW5hdC5jICAgICAgICAgIHwg IDkxICsrKystLS0tLS0tLS0tLS0tLS0tLQ0KPiAgZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgICAg ICB8ICAgMiArDQo+ICBnZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmNjIHwgICAxICsNCj4gIGdk YnNlcnZlci9saW51eC1pMzg2LWlwYS5jYyAgfCAgIDEgKw0KPiAgZ2Ric2VydmVyL2xpbnV4LXg4 Ni1sb3cuY2MgICB8IDE1MSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAg Z2Ric2VydmVyL2xpbnV4LXg4Ni10ZGVzYy5jYyB8ICAgMiArDQo+ICBnZGJzZXJ2ZXIvbGludXgt eDg2LXRkZXNjLmggIHwgICA3IC0tDQo+ICAxNyBmaWxlcyBjaGFuZ2VkLCAzMTcgaW5zZXJ0aW9u cygrKSwgMTk5IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi9hcmNoL2Ft ZDY0LWxpbnV4LXRkZXNjLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvYXJjaC9pMzg2LWxp bnV4LXRkZXNjLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvbmF0L3g4Ni1saW51eC10ZGVz Yy5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL25hdC94ODYtbGludXgtdGRlc2MuaA0KPiAN Cj4gZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbg0KPiBpbmRl eCAzNTNlNDViM2NlYy4uYTI0YjIyMzJkYWEgMTAwNjQ0DQo+IC0tLSBhL2dkYi9NYWtlZmlsZS5p bg0KPiArKysgYi9nZGIvTWFrZWZpbGUuaW4NCj4gQEAgLTE1NDksOCArMTU0OSwxMCBAQCBIRklM RVNfTk9fU1JDRElSID0gXA0KPiAgCWFyY2gvYWFyY2g2NC1pbnNuLmggXA0KPiAgCWFyY2gvYWFy Y2g2NC1tdGUtbGludXguaCBcDQo+ICAJYXJjaC9hYXJjaDY0LXNjYWxhYmxlLWxpbnV4LmggXA0K PiArCWFyY2gvYW1kNjQtbGludXgtdGRlc2MuaCBcDQo+ICAJYXJjaC9hcmMuaCBcDQo+ICAJYXJj aC9hcm0uaCBcDQo+ICsJYXJjaC9pMzg2LWxpbnV4LXRkZXNjLmggXA0KPiAgCWFyY2gvaTM4Ni5o IFwNCj4gIAlhcmNoL2xvb25nYXJjaC5oIFwNCj4gIAlhcmNoL3BwYy1saW51eC1jb21tb24uaCBc DQo+IEBAIC0xNjA2LDYgKzE2MDgsNyBAQCBIRklMRVNfTk9fU1JDRElSID0gXA0KPiAgCW5hdC94 ODYtZ2NjLWNwdWlkLmggXA0KPiAgCW5hdC94ODYtbGludXguaCBcDQo+ICAJbmF0L3g4Ni1saW51 eC1kcmVncy5oIFwNCj4gKwluYXQveDg2LWxpbnV4LXRkZXNjLmggXA0KPiAgCXB5dGhvbi9weS1l dmVudC5oIFwNCj4gIAlweXRob24vcHktZXZlbnRzLmggXA0KPiAgCXB5dGhvbi9weS1zdG9wZXZl bnQuaCBcDQo+IGRpZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgtdGRlcC5jIGIvZ2RiL2FtZDY0 LWxpbnV4LXRkZXAuYw0KPiBpbmRleCA5ZDU2MGFjNGZiZi4uYmNiOTg2OGU3OWUgMTAwNjQ0DQo+ IC0tLSBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMNCj4gKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRk ZXAuYw0KPiBAQCAtNDEsNiArNDEsNyBAQA0KPiAgI2luY2x1ZGUgImFyY2gvYW1kNjQuaCINCj4g ICNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiDQo+ICAjaW5jbHVkZSAiZXhwb3AuaCIN Cj4gKyNpbmNsdWRlICJhcmNoL2FtZDY0LWxpbnV4LXRkZXNjLmgiDQo+IA0KPiAgLyogVGhlIHN5 c2NhbGwncyBYTUwgZmlsZW5hbWUgZm9yIGkzODYuICAqLw0KPiAgI2RlZmluZSBYTUxfU1lTQ0FM TF9GSUxFTkFNRV9BTUQ2NCAic3lzY2FsbHMvYW1kNjQtbGludXgueG1sIg0KPiBkaWZmIC0tZ2l0 IGEvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuaCBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmgNCj4gaW5k ZXggMjAwM2RjZGE3OGYuLjBlYzQ5ZTdmZTAzIDEwMDY0NA0KPiAtLS0gYS9nZGIvYW1kNjQtbGlu dXgtdGRlcC5oDQo+ICsrKyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmgNCj4gQEAgLTQzLDEyICs0 Myw2IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX3gzMl9saW51eDsNCj4gIGV4 dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX3gzMl9hdnhfbGludXg7DQo+ICBleHRlcm4g c3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY194MzJfYXZ4X2F2eDUxMl9saW51eDsNCj4gDQo+IC0v KiBSZXR1cm4gdGhlIHJpZ2h0IGFtZDY0LWxpbnV4IHRhcmdldCBkZXNjcmlwdGlvbnMgYWNjb3Jk aW5nIHRvDQo+IC0gICBYQ1IwX0ZFQVRVUkVTX0JJVCBhbmQgSVNfWDMyLiAgKi8NCj4gLQ0KPiAt Y29uc3QgdGFyZ2V0X2Rlc2MgKmFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24gKHVpbnQ2NF90 IHhjcjBfZmVhdHVyZXNfYml0LA0KPiAtCQkJCQkJIGJvb2wgaXNfeDMyKTsNCj4gLQ0KPiAgLyog RW51bSB0aGF0IGRlZmluZXMgdGhlIHN5c2NhbGwgaWRlbnRpZmllcnMgZm9yIGFtZDY0IGxpbnV4 Lg0KPiAgICAgVXNlZCBmb3IgcHJvY2VzcyByZWNvcmQvcmVwbGF5LCB0aGVzZSB3aWxsIGJlIHRy YW5zbGF0ZWQgaW50bw0KPiAgICAgYSBnZGItY2Fub25pY2FsIHNldCBvZiBzeXNjYWxsIGlkcyBp biBsaW51eC1yZWNvcmQuYy4gICovDQo+IGRpZmYgLS1naXQgYS9nZGIvYXJjaC9hbWQ2NC1saW51 eC10ZGVzYy5oIGIvZ2RiL2FyY2gvYW1kNjQtbGludXgtdGRlc2MuaA0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uZGI0MjViNjBkZjYNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9nZGIvYXJjaC9hbWQ2NC1saW51eC10ZGVzYy5oDQo+IEBAIC0wLDAgKzEsMzAg QEANCj4gKy8qICBUYXJnZXQgZGVzY3JpcHRpb24gcmVsYXRlZCBjb2RlIGZvciBHTlUvTGludXgg eDg2LTY0Lg0KPiArDQo+ICsgICBDb3B5cmlnaHQgKEMpIDIwMjQgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuDQo+ICsNCj4gKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4NCj4gKw0K PiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkNCj4gKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQo+ICsgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KPiAr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKw0KPiArICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws DQo+ICsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZg0KPiArICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KPiArICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gKw0KPiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8NCj4gKw0KPiArI2lmbmRlZiBBUkNIX0FNRDY0X0xJTlVYX1RERVNDX0gNCj4gKyNk ZWZpbmUgQVJDSF9BTUQ2NF9MSU5VWF9UREVTQ19IDQo+ICsNCj4gK3N0cnVjdCB0YXJnZXRfZGVz YzsNCj4gKw0KPiArLyogUmV0dXJuIHRoZSBBTUQ2NCB0YXJnZXQgZGVzY3JpcHRpb25zIGNvcnJl c3BvbmRpbmcgdG8gWENSMCBhbmQgSVNfWDMyLiAgKi8NCj4gKw0KPiArZXh0ZXJuIGNvbnN0IHRh cmdldF9kZXNjICphbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uICh1aW50NjRfdCB4Y3IwLA0K PiArCQkJCQkJCWJvb2wgaXNfeDMyKTsNCj4gKw0KPiArI2VuZGlmIC8qIEFSQ0hfQU1ENjRfTElO VVhfVERFU0NfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2FyY2gvaTM4Ni1saW51eC10ZGVzYy5o IGIvZ2RiL2FyY2gvaTM4Ni1saW51eC10ZGVzYy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwLi4wYjczNjMzN2E3NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2dkYi9hcmNoL2kzODYtbGludXgtdGRlc2MuaA0KPiBAQCAtMCwwICsxLDI5IEBADQo+ICsvKiBU YXJnZXQgZGVzY3JpcHRpb24gcmVsYXRlZCBjb2RlIGZvciBHTlUvTGludXggaTM4Ni4NCj4gKw0K PiArICAgQ29weXJpZ2h0IChDKSAyMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0K PiArDQo+ICsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQo+ICsNCj4gKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5DQo+ICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPiArICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCj4gKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ICsNCj4gKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiArICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN Cj4gKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUNCj4gKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuDQo+ICsNCj4gKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+ICsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovDQo+ICsN Cj4gKyNpZm5kZWYgQVJDSF9JMzg2X0xJTlVYX1RERVNDX0gNCj4gKyNkZWZpbmUgQVJDSF9JMzg2 X0xJTlVYX1RERVNDX0gNCj4gKw0KPiArc3RydWN0IHRhcmdldF9kZXNjOw0KPiArDQo+ICsvKiBS ZXR1cm4gdGhlIGkzODYgdGFyZ2V0IGRlc2NyaXB0aW9uIGNvcnJlc3BvbmRpbmcgdG8gWENSMC4g ICovDQo+ICsNCj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKmkzODZfbGludXhf cmVhZF9kZXNjcmlwdGlvbiAodWludDY0X3QgeGNyMCk7DQo+ICsNCj4gKyNlbmRpZiAvKiBBUkNI X0kzODZfTElOVVhfVERFU0NfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5uYXQg Yi9nZGIvY29uZmlndXJlLm5hdA0KPiBpbmRleCA4Yjk4NTExY2VmNy4uNGJjYzA2OTYwMjcgMTAw NjQ0DQo+IC0tLSBhL2dkYi9jb25maWd1cmUubmF0DQo+ICsrKyBiL2dkYi9jb25maWd1cmUubmF0 DQo+IEBAIC0yNTYsNyArMjU2LDcgQEAgY2FzZSAke2dkYl9ob3N0fSBpbg0KPiAgCQlOQVRERVBG SUxFUz0iJHtOQVRERVBGSUxFU30geDg2LW5hdC5vIG5hdC94ODYtZHJlZ3MubyBcDQo+ICAJCW5h dC94ODYteHN0YXRlLm8gXA0KPiAgCQlpMzg2LWxpbnV4LW5hdC5vIHg4Ni1saW51eC1uYXQubyBu YXQvbGludXgtYnRyYWNlLm8gXA0KPiAtCQluYXQveDg2LWxpbnV4Lm8gbmF0L3g4Ni1saW51eC1k cmVncy5vIg0KPiArCQluYXQveDg2LWxpbnV4Lm8gbmF0L3g4Ni1saW51eC1kcmVncy5vIG5hdC94 ODYtbGludXgtdGRlc2MubyINCj4gIAkJOzsNCj4gIAkgICAgaWE2NCkNCj4gIAkJIyBIb3N0OiBJ bnRlbCBJQS02NCBydW5uaW5nIEdOVS9MaW51eA0KPiBAQCAtMzIyLDcgKzMyMiw3IEBAIGNhc2Ug JHtnZGJfaG9zdH0gaW4NCj4gIAkJTkFUREVQRklMRVM9IiR7TkFUREVQRklMRVN9IHg4Ni1uYXQu byBuYXQveDg2LWRyZWdzLm8gXA0KPiAgCQluYXQveDg2LXhzdGF0ZS5vIGFtZDY0LW5hdC5vIGFt ZDY0LWxpbnV4LW5hdC5vIHg4Ni1saW51eC1uYXQubw0KPiBcDQo+ICAJCW5hdC9saW51eC1idHJh Y2UubyBcDQo+IC0JCW5hdC94ODYtbGludXgubyBuYXQveDg2LWxpbnV4LWRyZWdzLm8gXA0KPiAr CQluYXQveDg2LWxpbnV4Lm8gbmF0L3g4Ni1saW51eC1kcmVncy5vIG5hdC94ODYtbGludXgtdGRl c2MubyBcDQo+ICAJCW5hdC9hbWQ2NC1saW51eC1zaWdpbmZvLm8iDQo+ICAJCTs7DQo+ICAJICAg IHNwYXJjKQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5jIGIvZ2RiL2kzODYt bGludXgtdGRlcC5jDQo+IGluZGV4IDQ0NzMwZjIwNGRiLi43OGViYzk5ZDNkZiAxMDA2NDQNCj4g LS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5jDQo+ICsrKyBiL2dkYi9pMzg2LWxpbnV4LXRkZXAu Yw0KPiBAQCAtMzksNiArMzksNyBAQA0KPiANCj4gICNpbmNsdWRlICJpMzg3LXRkZXAuaCINCj4g ICNpbmNsdWRlICJnZGJzdXBwb3J0L3g4Ni14c3RhdGUuaCINCj4gKyNpbmNsdWRlICJhcmNoL2kz ODYtbGludXgtdGRlc2MuaCINCj4gDQo+ICAvKiBUaGUgc3lzY2FsbCdzIFhNTCBmaWxlbmFtZSBm b3IgaTM4Ni4gICovDQo+ICAjZGVmaW5lIFhNTF9TWVNDQUxMX0ZJTEVOQU1FX0kzODYgInN5c2Nh bGxzL2kzODYtbGludXgueG1sIg0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5o IGIvZ2RiL2kzODYtbGludXgtdGRlcC5oDQo+IGluZGV4IDA3NTkzYzZhOGVjLi5lODY5MWNkNzc4 ZSAxMDA2NDQNCj4gLS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5oDQo+ICsrKyBiL2dkYi9pMzg2 LWxpbnV4LXRkZXAuaA0KPiBAQCAtNTUsOSArNTUsNiBAQCBleHRlcm4gdm9pZCBpMzg2X2xpbnV4 X3JlcG9ydF9zaWduYWxfaW5mbyAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsDQo+ICAJCQkJ CSAgIHN0cnVjdCB1aV9vdXQgKnVpb3V0LA0KPiAgCQkJCQkgICBlbnVtIGdkYl9zaWduYWwgc2ln Z25hbCk7DQo+IA0KPiAtLyogUmV0dXJuIHRoZSB0YXJnZXQgZGVzY3JpcHRpb24gYWNjb3JkaW5n IHRvIFhDUjAuICAqLw0KPiAtZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqaTM4Nl9s aW51eF9yZWFkX2Rlc2NyaXB0aW9uICh1aW50NjRfdCB4Y3IwKTsNCj4gLQ0KPiAgZXh0ZXJuIGlu dCBpMzg2X2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldFtdOw0KPiANCj4gIC8qIFJldHVybiB4ODYg c2lnaW5mbyB0eXBlLiAgKi8NCj4gZGlmZiAtLWdpdCBhL2dkYi9uYXQveDg2LWxpbnV4LXRkZXNj LmMgYi9nZGIvbmF0L3g4Ni1saW51eC10ZGVzYy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwLi5jMjMwMWU2YTg3Mw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2dkYi9uYXQveDg2LWxpbnV4LXRkZXNjLmMNCj4gQEAgLTAsMCArMSwxMjQgQEANCj4gKy8qIFRh cmdldCBkZXNjcmlwdGlvbiByZWxhdGVkIGNvZGUgZm9yIEdOVS9MaW51eCB4ODYgKGkzODYgYW5k IHg4Ni02NCkuDQo+ICsNCj4gKyAgIENvcHlyaWdodCAoQykgMjAyNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4NCj4gKw0KPiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLg0KPiAr DQo+ICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQo+ ICsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiArDQo+ICsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwNCj4gKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mDQo+ICsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQo+ICsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPiArDQo+ICsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KPiArICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLw0KPiArDQo+ICsjaW5jbHVkZSAibmF0L3g4Ni1saW51eC10ZGVzYy5oIg0KPiAr I2lmZGVmIF9feDg2XzY0X18NCj4gKyNpbmNsdWRlICJhcmNoL2FtZDY0LmgiDQo+ICsjaW5jbHVk ZSAiYXJjaC9hbWQ2NC1saW51eC10ZGVzYy5oIg0KPiArI2VuZGlmDQo+ICsjaW5jbHVkZSAiYXJj aC9pMzg2LmgiDQo+ICsjaW5jbHVkZSAiYXJjaC9pMzg2LWxpbnV4LXRkZXNjLmgiDQo+ICsNCj4g KyNpbmNsdWRlICJuYXQveDg2LWxpbnV4LmgiDQo+ICsjaW5jbHVkZSAibmF0L2dkYl9wdHJhY2Uu aCINCj4gKyNpbmNsdWRlICJuYXQveDg2LXhzdGF0ZS5oIg0KPiArDQo+ICsjaWZuZGVmIF9feDg2 XzY0X18NCj4gKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+DQo+ICsjZW5kaWYNCj4gKw0KPiArI2lu Y2x1ZGUgPHN5cy91aW8uaD4NCj4gKyNpbmNsdWRlIDxlbGYuaD4NCj4gKw0KPiArI2lmbmRlZiBJ Tl9QUk9DRVNTX0FHRU5UDQo+ICsNCj4gKy8qIFNlZSBuYXQveDg2LWxpbnV4LXRkZXNjLmguICAq Lw0KPiArDQo+ICtjb25zdCB0YXJnZXRfZGVzYyAqDQo+ICt4ODZfbGludXhfdGRlc2NfZm9yX3Rp ZCAoaW50IHRpZCwgZW51bSB0cmlib29sICpoYXZlX3B0cmFjZV9nZXRyZWdzZXQsDQo+ICsJCQkg Z2RiOjpmdW5jdGlvbl92aWV3PHZvaWQgKHVpbnQ2NF90KT4geGNyMF9pbml0X2NiLA0KPiArCQkJ IGNvbnN0IGNoYXIgKmVycm9yX21zZywgdWludDY0X3QgKnhjcjBfc3RvcmFnZSkNCj4gK3sNCj4g KyNpZmRlZiBfX3g4Nl82NF9fDQo+ICsNCj4gKyAgeDg2X2xpbnV4X2FyY2hfc2l6ZSBhcmNoX3Np emUgPSB4ODZfbGludXhfcHRyYWNlX2dldF9hcmNoX3NpemUgKHRpZCk7DQo+ICsgIGJvb2wgaXNf NjRiaXQgPSBhcmNoX3NpemUuaXNfNjRiaXQgKCk7DQo+ICsgIGJvb2wgaXNfeDMyID0gYXJjaF9z aXplLmlzX3gzMiAoKTsNCj4gKw0KPiArICBpZiAoc2l6ZW9mICh2b2lkICopID09IDQgJiYgaXNf NjRiaXQgJiYgIWlzX3gzMikNCj4gKyAgICBlcnJvciAoIiVzIiwgZXJyb3JfbXNnKTsNCj4gKw0K PiArI2VsaWYgSEFWRV9QVFJBQ0VfR0VURlBYUkVHUw0KPiArICBpZiAoaGF2ZV9wdHJhY2VfZ2V0 ZnB4cmVncyA9PSAtMSkNCj4gKyAgICB7DQo+ICsgICAgICBlbGZfZnB4cmVnc2V0X3QgZnB4cmVn czsNCj4gKw0KPiArICAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVEZQWFJFR1MsIHRpZCwgMCwg KGludCkgJmZweHJlZ3MpIDwgMCkNCj4gKwl7DQo+ICsJICBoYXZlX3B0cmFjZV9nZXRmcHhyZWdz ID0gMDsNCj4gKwkgICpoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPSBUUklCT09MX0ZBTFNFOw0KDQpX ZSB0cmllZCBQVFJBQ0VfR0VURlBYUkVHUywgZG9lcyB0aGF0IHJlYWxseSBpbmRpY2F0ZQ0KUFRS QUNFX0dFVFJFR1NFVCBpcyBub3Qgc3VwcG9ydGVkPyBJIHJlYWxpemUgeW91IGp1c3QgbW92ZWQg dGhpcyBjb2RlLA0KYnV0IGl0IGZlZWxzIHdlaXJkIHRvIG1lLiBUaGVuIGFnYWluIHRoaXMgaXMg TGludXggc3BlY2lmaWMgYW5kIGl0IG1pZ2h0IGFjdHVhbGx5DQpiZSB0aGUgY2FzZS4NCg0KDQo+ ICsJICByZXR1cm4gaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uIChYODZfWFNUQVRFX1g4N19N QVNLKTsNCj4gKwl9DQo+ICsgICAgfQ0KPiArI2VuZGlmDQo+ICsNCj4gKyAgaWYgKCpoYXZlX3B0 cmFjZV9nZXRyZWdzZXQgPT0gVFJJQk9PTF9VTktOT1dOKQ0KPiArICAgIHsNCj4gKyAgICAgIHVp bnQ2NF90IHhzdGF0ZXJlZ3NbKFg4Nl9YU1RBVEVfU1NFX1NJWkUgLyBzaXplb2YgKHVpbnQ2NF90 KSldOw0KPiArICAgICAgc3RydWN0IGlvdmVjIGlvdjsNCj4gKw0KPiArICAgICAgaW92Lmlvdl9i YXNlID0geHN0YXRlcmVnczsNCj4gKyAgICAgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mICh4c3RhdGVy ZWdzKTsNCj4gKw0KPiArICAgICAgLyogQ2hlY2sgaWYgUFRSQUNFX0dFVFJFR1NFVCB3b3Jrcy4g ICovDQo+ICsgICAgICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQsDQo+ICsJCSAg KHVuc2lnbmVkIGludCkgTlRfWDg2X1hTVEFURSwgJmlvdikgPCAwKQ0KPiArCXsNCj4gKwkgICpo YXZlX3B0cmFjZV9nZXRyZWdzZXQgPSBUUklCT09MX0ZBTFNFOw0KPiArCSAgKnhjcjBfc3RvcmFn ZSA9IDA7DQo+ICsJfQ0KPiArICAgICAgZWxzZQ0KPiArCXsNCj4gKwkgICpoYXZlX3B0cmFjZV9n ZXRyZWdzZXQgPSBUUklCT09MX1RSVUU7DQo+ICsNCj4gKwkgIC8qIEdldCBYQ1IwIGZyb20gWFNB VkUgZXh0ZW5kZWQgc3RhdGUuICAqLw0KPiArCSAgKnhjcjBfc3RvcmFnZSA9IHhzdGF0ZXJlZ3Nb KEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQNCj4gKwkJCQkgICAgICAvIHNpemVvZiAodWlu dDY0X3QpKV07DQo+ICsNCj4gKyNpZmRlZiBfX3g4Nl82NF9fDQo+ICsJICAvKiBObyBNUFggb24g eDMyLiAgKi8NCj4gKwkgIGlmIChpc182NGJpdCAmJiBpc194MzIpDQo+ICsJICAgICp4Y3IwX3N0 b3JhZ2UgJj0gflg4Nl9YU1RBVEVfTVBYOw0KPiArI2VuZGlmIC8qIF9feDg2XzY0X18gKi8NCj4g Kw0KPiArCSAgeGNyMF9pbml0X2NiICgqeGNyMF9zdG9yYWdlKTsNCg0KDQpOZWVkaW5nIGEgY2Fs bGJhY2sgbWFkZSBtZSBzY3JhdGNoIG15IGhlYWQuIFdoYXQgY291bGQgYmUgdGhlIHJlYXNvbg0K dGhhdCBHREIgYW5kIGdkYnNlcnZlciByZWFsbHkgd2FudCB0byBkbyBkaWZmZXJlbnQgdGhpbmdz IGhlcmU/DQoNCkRpZ2dpbmcgaW50byB0aGUgY29kZSBtYWRlIG1lIHNlZSB0aGF0IEdEQiBzYXZl cyBqdXN0IHRoZSB4c2F2ZV9sYXlvdXQuDQpHZGJzZXJ2ZXIgaW4gYWRkaXRpb24gc2F2ZXMgeGNy MCwgdGhvdWdoIEkgZ3Vlc3MgdGhhdCBtaWdodCBub3QgZXZlbg0KYmUgbmVlZGVkIGlmIHlvdSBo YXZlIGEgdGRlc2MgYWxyZWFkeSAob3IgdGhlIHhzYXZlX2xheW91dD8pLg0KQW5kIHRoZXkgYXJl IHNhdmluZyB0aGluZ3MgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyAoZ2xvYmFsIGluIGdkYnNlcnZl ciwNCm1lbWJlciBpbiBHREIpLCBidXQgdGhhdCBjb3VsZCBiZSBkb25lIHdpdGhvdXQgYSBjYWxs YmFjayBJIHRoaW5rLg0KDQpJIHJlYWxpemUgdGhhdCBjaGFuZ2luZyB0aGVzZSB0aGluZ3MgaXMg YSBiaWdnZXIgdGFza3MsIHRoYXQgeW91IG1pZ2h0DQpub3Qgd2FudCB0byBkbyBhdCBhbGwgb3Ig bWl4IHdpdGggdGhpcyBzZXJpZXMuIEJ1dCBjYW4gd2UgYXZvaWQNCmEgY2FsbGJhY2s/IEUuZy4g YnkgYWRkaW5nIGFub3RoZXIgcmV0dXJuIHZhbHVlLCB0aGF0IG9ubHkgZ2Ric2VydmVyDQp1c2Vz IGZvciBub3c/IFdpdGggYSBUT0RPIGNvbW1lbnQgZXhwbGFpbmluZyB0aGlzPw0KDQoNCg0KPiAr CX0NCj4gKyAgICB9DQo+ICsNCj4gKyAgLyogQ2hlY2sgdGhlIG5hdGl2ZSBYQ1IwIG9ubHkgaWYg UFRSQUNFX0dFVFJFR1NFVCBpcyBhdmFpbGFibGUuICBJZg0KPiArICAgICBQVFJBQ0VfR0VUUkVH U0VUIGlzIG5vdCBhdmFpbGFibGUgdGhlbiBzZXQgeGNyMF9mZWF0dXJlc19iaXRzIHRvDQo+ICsg ICAgIHplcm8gc28gdGhhdCB0aGUgIm5vLWZlYXR1cmVzIiBkZXNjcmlwdGlvbnMgYXJlIHJldHVy bmVkIGJ5IHRoZQ0KPiArICAgICBzd2l0Y2hlcyBiZWxvdy4gICovDQo+ICsgIHVpbnQ2NF90IHhj cjBfZmVhdHVyZXNfYml0czsNCj4gKyAgaWYgKCpoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPT0gVFJJ Qk9PTF9UUlVFKQ0KPiArICAgIHhjcjBfZmVhdHVyZXNfYml0cyA9ICp4Y3IwX3N0b3JhZ2UgJiBY ODZfWFNUQVRFX0FMTF9NQVNLOw0KPiArICBlbHNlDQo+ICsgICAgeGNyMF9mZWF0dXJlc19iaXRz ID0gMDsNCj4gKw0KPiArI2lmZGVmIF9feDg2XzY0X18NCj4gKyAgaWYgKGlzXzY0Yml0KQ0KPiAr ICAgIHsNCj4gKyAgICAgIHJldHVybiBhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uICh4Y3Iw X2ZlYXR1cmVzX2JpdHMsIGlzX3gzMik7DQo+ICsgICAgfQ0KDQpOaXQ6IEkgdGhpbmsgd2UgY291 bGQganVzdCBkcm9wIHRoZSBicmFja2V0cyBoZXJlLg0KDQo+ICsgIGVsc2UNCj4gKyNlbmRpZg0K PiArICAgIHJldHVybiBpMzg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24gKHhjcjBfZmVhdHVyZXNf Yml0cyk7DQo+ICt9DQo+ICsNCj4gKyNlbmRpZiAvKiAhSU5fUFJPQ0VTU19BR0VOVCAqLw0KPiBk aWZmIC0tZ2l0IGEvZ2RiL25hdC94ODYtbGludXgtdGRlc2MuaCBiL2dkYi9uYXQveDg2LWxpbnV4 LXRkZXNjLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjhj NDgxNjA5ODc2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2RiL25hdC94ODYtbGludXgtdGRl c2MuaA0KPiBAQCAtMCwwICsxLDYwIEBADQo+ICsvKiBUYXJnZXQgZGVzY3JpcHRpb24gcmVsYXRl ZCBjb2RlIGZvciBHTlUvTGludXggeDg2IChpMzg2IGFuZCB4ODYtNjQpLg0KPiArDQo+ICsgICBD b3B5cmlnaHQgKEMpIDIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ICsNCj4g KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4NCj4gKw0KPiArICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCj4g KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5DQo+ICsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KPiArICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4NCj4gKw0KPiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiArICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQ0KPiArICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N Cj4gKw0KPiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4gKw0KPiArI2lm bmRlZiBOQVRfWDg2X0xJTlVYX1RERVNDX0gNCj4gKyNkZWZpbmUgTkFUX1g4Nl9MSU5VWF9UREVT Q19IDQo+ICsNCj4gKyNpbmNsdWRlICJnZGJzdXBwb3J0L2Z1bmN0aW9uLXZpZXcuaCINCj4gKw0K PiArc3RydWN0IHRhcmdldF9kZXNjOw0KPiArDQo+ICsvKiBSZXR1cm4gdGhlIHRhcmdldCBkZXNj cmlwdGlvbiBmb3IgTGludXggdGhyZWFkIFRJRC4NCj4gKw0KPiArICAgV2hlbiAqSEFWRV9QVFJB Q0VfR0VUUkVHU0VUIGlzIFRSSUJPT0xfVU5LTk9XTiB0aGVuIHRoZSBjdXJyZW50DQo+IHZhbHVl IG9mDQo+ICsgICB4Y3IwIGlzIHJlYWQgdXNpbmcgcHRyYWNlIGNhbGxzIGFuZCBzdG9yZWQgaW50 byAqWENSMF9TVE9SQUdFLiAgVGhlbg0KPiArICAgWENSMF9JTklUX0NCIGlzIGNhbGxlZCB3aXRo IHRoZSB2YWx1ZSBvZiAqWENSMF9TVE9SQUdFIGFuZA0KPiArICAgKkhBVkVfUFRSQUNFX0dFVFJF R1NFVCBpcyBzZXQgdG8gVFJJQk9PTF9UUlVFLg0KPiArDQo+ICsgICBJZiB0aGUgYXR0ZW1wdCB0 byByZWFkIHhjcjAgdXNpbmcgcHRyYWNlIGZhaWxzIHRoZW4gKlhDUjBfU1RPUkFHRSBpcyBzZXQN Cj4gKyAgIHRvIHplcm8gYW5kICpIQVZFX1BUUkFDRV9HRVRSRUdTRVQgaXMgc2V0IHRvIFRSSUJP T0xfRkFMU0UuDQo+ICsNCj4gKyAgIFRoZSBzdG9yYWdlIHBvaW50ZWQgdG8gYnkgWENSMF9TVE9S QUdFIG11c3QgZXhpc3QgdW50aWwgdGhlIHByb2dyYW0NCj4gKyAgIHRlcm1pbmF0ZXMsIHRoaXMg c3RvcmFnZSBpcyB1c2VkIHRvIGNhY2hlIHRoZSB4Y3IwIHZhbHVlLiAgQXMgc3VjaA0KPiArICAg WENSMF9JTklUX0NCIHdpbGwgb25seSBiZSBjYWxsZWQgb25jZSBpZiB4Y3IwIGlzIHN1Y2Nlc3Nm dWxseSByZWFkIHVzaW5nDQo+ICsgICBwdHJhY2UsIG9yIG5vdCBhdCBhbGwgaWYgdGhlIHB0cmFj ZSBjYWxsIGZhaWxzLg0KPiArDQo+ICsgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB0YXJnZXQg ZGVzY3JpcHRpb24gYmFzZWQgb24gdGhlIGV4dHJhY3RlZCB4Y3IwDQo+ICsgICB2YWx1ZSBhbG9u ZyB3aXRoIG90aGVyIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgdGhyZWFkIGlkZW50aWZpZWQgYnkg VElELg0KPiArDQo+ICsgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gbnVsbHB0ciBpZiB3ZSBl bmNvdW50ZXIgYSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24NCj4gKyAgIGZvciB3aGljaCBhIHRhcmdl dF9kZXNjIGNhbm5vdCBiZSBjcmVhdGVkLiAgSWRlYWxseSB0aGlzIHdvdWxkIG5vdCBiZQ0KPiAr ICAgdGhlIGNhc2UsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhIHRhcmdldCBkZXNjcmlw dGlvbiBmb3IgZXZlcnkNCj4gKyAgIHBvc3NpYmxlIG1hY2hpbmUgY29uZmlndXJhdGlvbi4gIFNl ZSBhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uIGFuZA0KPiArICAgaTM4Nl9saW51eF9yZWFk X2Rlc2NyaXB0aW9uIGZvciBjYXNlcyB3aGVuIG51bGxwdHIgbWlnaHQgYmUNCj4gKyAgIHJldHVy bmVkLg0KPiArDQo+ICsgICBFUlJPUl9NU0cgaXMgdXNpbmcgaW4gYW4gZXJyb3IoKSBjYWxsIGlm IHdlIHRyeSB0byBjcmVhdGUgYSB0YXJnZXQNCj4gKyAgIGRlc2NyaXB0aW9uIGZvciBhIDY0LWJp dCBwcm9jZXNzIGJ1dCB0aGlzIGlzIGEgMzItYml0IGJ1aWxkIG9mIEdEQi4gICovDQo+ICsNCj4g K2V4dGVybiBjb25zdCB0YXJnZXRfZGVzYyAqDQo+ICt4ODZfbGludXhfdGRlc2NfZm9yX3RpZCAo aW50IHRpZCwgZW51bSB0cmlib29sICpoYXZlX3B0cmFjZV9nZXRyZWdzZXQsDQo+ICsJCQkgZ2Ri OjpmdW5jdGlvbl92aWV3PHZvaWQgKHVpbnQ2NF90KT4geGNyMF9pbml0X2NiLA0KPiArCQkJIGNv bnN0IGNoYXIgKmVycm9yX21zZywgdWludDY0X3QgKnhjcjBfc3RvcmFnZSk7DQo+ICsNCj4gKyNl bmRpZiAvKiBOQVRfWDg2X0xJTlVYX1RERVNDX0ggKi8NCj4gZGlmZiAtLWdpdCBhL2dkYi94ODYt bGludXgtbmF0LmMgYi9nZGIveDg2LWxpbnV4LW5hdC5jDQo+IGluZGV4IDEyOTY1YzdhMjFiLi45 ZmJjY2IyOGQyMSAxMDA2NDQNCj4gLS0tIGEvZ2RiL3g4Ni1saW51eC1uYXQuYw0KPiArKysgYi9n ZGIveDg2LWxpbnV4LW5hdC5jDQo+IEBAIC0zOCw2ICszOCw3IEBADQo+ICAjaW5jbHVkZSAibmF0 L3g4Ni1saW51eC5oIg0KPiAgI2luY2x1ZGUgIm5hdC94ODYtbGludXgtZHJlZ3MuaCINCj4gICNp bmNsdWRlICJuYXQvbGludXgtcHRyYWNlLmgiDQo+ICsjaW5jbHVkZSAibmF0L3g4Ni1saW51eC10 ZGVzYy5oIg0KPiANCj4gIC8qIGxpbnV4X25hdF90YXJnZXQ6Omxvd19uZXdfZm9yayBpbXBsZW1l bnRhdGlvbi4gICovDQo+IA0KPiBAQCAtOTIsOTAgKzkzLDI2IEBAIHg4Nl9saW51eF9uYXRfdGFy Z2V0Ojpwb3N0X3N0YXJ0dXBfaW5mZXJpb3IgKHB0aWRfdCBwdGlkKQ0KPiAgY29uc3Qgc3RydWN0 IHRhcmdldF9kZXNjICoNCj4gIHg4Nl9saW51eF9uYXRfdGFyZ2V0OjpyZWFkX2Rlc2NyaXB0aW9u ICgpDQo+ICB7DQo+IC0gIGludCB0aWQ7DQo+IC0gIGludCBpc182NGJpdCA9IDA7DQo+IC0jaWZk ZWYgX194ODZfNjRfXw0KPiAtICBpbnQgaXNfeDMyOw0KPiAtI2VuZGlmDQo+IC0gIHN0YXRpYyB1 aW50NjRfdCB4Y3IwOw0KPiAtICB1aW50NjRfdCB4Y3IwX2ZlYXR1cmVzX2JpdHM7DQo+ICsgIHN0 YXRpYyB1aW50NjRfdCB4Y3IwX3N0b3JhZ2U7DQo+IA0KPiAgICBpZiAoaW5mZXJpb3JfcHRpZCA9 PSBudWxsX3B0aWQpDQo+ICAgICAgcmV0dXJuIHRoaXMtPmJlbmVhdGggKCktPnJlYWRfZGVzY3Jp cHRpb24gKCk7DQo+IA0KPiAtICB0aWQgPSBpbmZlcmlvcl9wdGlkLnBpZCAoKTsNCj4gLQ0KPiAt I2lmZGVmIF9feDg2XzY0X18NCj4gLQ0KPiAtICB4ODZfbGludXhfYXJjaF9zaXplIGFyY2hfc2l6 ZSA9IHg4Nl9saW51eF9wdHJhY2VfZ2V0X2FyY2hfc2l6ZSAodGlkKTsNCj4gLSAgaXNfNjRiaXQg PSBhcmNoX3NpemUuaXNfNjRiaXQgKCk7DQo+IC0gIGlzX3gzMiA9IGFyY2hfc2l6ZS5pc194MzIg KCk7DQo+IC0NCj4gLSNlbGlmIEhBVkVfUFRSQUNFX0dFVEZQWFJFR1MNCj4gLSAgaWYgKGhhdmVf cHRyYWNlX2dldGZweHJlZ3MgPT0gLTEpDQo+IC0gICAgew0KPiAtICAgICAgZWxmX2ZweHJlZ3Nl dF90IGZweHJlZ3M7DQo+IC0NCj4gLSAgICAgIGlmIChwdHJhY2UgKFBUUkFDRV9HRVRGUFhSRUdT LCB0aWQsIDAsIChpbnQpICZmcHhyZWdzKSA8IDApDQo+IC0Jew0KPiAtCSAgaGF2ZV9wdHJhY2Vf Z2V0ZnB4cmVncyA9IDA7DQo+IC0JICBoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPSBUUklCT09MX0ZB TFNFOw0KPiAtCSAgcmV0dXJuIGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAoWDg2X1hTVEFU RV9YODdfTUFTSyk7DQo+IC0JfQ0KPiAtICAgIH0NCj4gLSNlbmRpZg0KPiAtDQo+IC0gIGlmICho YXZlX3B0cmFjZV9nZXRyZWdzZXQgPT0gVFJJQk9PTF9VTktOT1dOKQ0KPiAtICAgIHsNCj4gLSAg ICAgIHVpbnQ2NF90IHhzdGF0ZXJlZ3NbKFg4Nl9YU1RBVEVfU1NFX1NJWkUgLyBzaXplb2YgKHVp bnQ2NF90KSldOw0KPiAtICAgICAgc3RydWN0IGlvdmVjIGlvdjsNCj4gLQ0KPiAtICAgICAgaW92 Lmlvdl9iYXNlID0geHN0YXRlcmVnczsNCj4gLSAgICAgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mICh4 c3RhdGVyZWdzKTsNCj4gLQ0KPiAtICAgICAgLyogQ2hlY2sgaWYgUFRSQUNFX0dFVFJFR1NFVCB3 b3Jrcy4gICovDQo+IC0gICAgICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQsDQo+ IC0JCSAgKHVuc2lnbmVkIGludCkgTlRfWDg2X1hTVEFURSwgJmlvdikgPCAwKQ0KPiAtCWhhdmVf cHRyYWNlX2dldHJlZ3NldCA9IFRSSUJPT0xfRkFMU0U7DQo+IC0gICAgICBlbHNlDQo+IC0Jew0K PiAtCSAgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0ID0gVFJJQk9PTF9UUlVFOw0KPiAtDQo+IC0JICAv KiBHZXQgWENSMCBmcm9tIFhTQVZFIGV4dGVuZGVkIHN0YXRlLiAgKi8NCj4gLQkgIHhjcjAgPSB4 c3RhdGVyZWdzWyhJMzg2X0xJTlVYX1hTQVZFX1hDUjBfT0ZGU0VUDQo+IC0JCQkgICAgIC8gc2l6 ZW9mICh1aW50NjRfdCkpXTsNCj4gLQ0KPiAtCSAgbV94c2F2ZV9sYXlvdXQgPSB4ODZfZmV0Y2hf eHNhdmVfbGF5b3V0ICh4Y3IwLCB4ODZfeHNhdmVfbGVuZ3RoICgpKTsNCj4gLQl9DQo+IC0gICAg fQ0KPiAtDQo+IC0gIC8qIENoZWNrIHRoZSBuYXRpdmUgWENSMCBvbmx5IGlmIFBUUkFDRV9HRVRS RUdTRVQgaXMgYXZhaWxhYmxlLiAgSWYNCj4gLSAgICAgUFRSQUNFX0dFVFJFR1NFVCBpcyBub3Qg YXZhaWxhYmxlIHRoZW4gc2V0IHhjcjBfZmVhdHVyZXNfYml0cyB0bw0KPiAtICAgICB6ZXJvIHNv IHRoYXQgdGhlICJuby1mZWF0dXJlcyIgZGVzY3JpcHRpb25zIGFyZSByZXR1cm5lZCBieSB0aGUN Cj4gLSAgICAgc3dpdGNoZXMgYmVsb3cuICAqLw0KDQpTaG91bGQgd2Ugcy9zd2l0Y2hlcy9jb2Rl Pw0KDQo+IC0gIGlmIChoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPT0gVFJJQk9PTF9UUlVFKQ0KPiAt ICAgIHhjcjBfZmVhdHVyZXNfYml0cyA9IHhjcjAgJiBYODZfWFNUQVRFX0FMTF9NQVNLOw0KPiAt ICBlbHNlDQo+IC0gICAgeGNyMF9mZWF0dXJlc19iaXRzID0gMDsNCj4gLQ0KPiAtICBpZiAoaXNf NjRiaXQpDQo+IC0gICAgew0KPiAtI2lmZGVmIF9feDg2XzY0X18NCj4gLSAgICAgIHJldHVybiBh bWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uICh4Y3IwX2ZlYXR1cmVzX2JpdHMsIGlzX3gzMik7 DQo+IC0jZW5kaWYNCj4gLSAgICB9DQo+IC0gIGVsc2UNCj4gLSAgICB7DQo+IC0gICAgICBjb25z dCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKiB0ZGVzYw0KPiAtCT0gaTM4Nl9saW51eF9yZWFkX2Rlc2Ny aXB0aW9uICh4Y3IwX2ZlYXR1cmVzX2JpdHMpOw0KPiArICBpbnQgdGlkID0gaW5mZXJpb3JfcHRp ZC5waWQgKCk7DQo+IA0KPiAtICAgICAgaWYgKHRkZXNjID09IE5VTEwpDQo+IC0JdGRlc2MgPSBp Mzg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24gKFg4Nl9YU1RBVEVfU1NFX01BU0spOw0KPiArICBj b25zdCBjaGFyICplcnJvcl9tc2cNCj4gKyAgICA9IF8oIkNhbid0IGRlYnVnIDY0LWJpdCBwcm9j ZXNzIHdpdGggMzItYml0IEdEQiIpOw0KPiANCj4gLSAgICAgIHJldHVybiB0ZGVzYzsNCj4gLSAg ICB9DQo+ICsgIC8qIENhbGxiYWNrIHRoYXQgaXMgdHJpZ2dlcmVkIHRoZSBmaXJzdCB0aW1lIHg4 Nl9saW51eF90ZGVzY19mb3JfdGlkDQo+ICsgICAgIHJlYWRzIHRoZSB4Y3IwIHJlZ2lzdGVyLiAg U2V0dXAgb3RoZXIgYml0cyBvZiBzdGF0ZS4gICovDQo+ICsgIGF1dG8gY2IgPSBbJl0gKHVpbnQ2 NF90IHhjcjApDQo+ICsgIHsNCj4gKyAgICB0aGlzLT5tX3hzYXZlX2xheW91dA0KPiArICAgICAg PSB4ODZfZmV0Y2hfeHNhdmVfbGF5b3V0ICh4Y3IwLCB4ODZfeHNhdmVfbGVuZ3RoICgpKTsNCj4g KyAgfTsNCj4gDQo+IC0gIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJmYWlsZWQgdG8gcmV0dXJu IHRkZXNjIik7DQo+ICsgIHJldHVybiB4ODZfbGludXhfdGRlc2NfZm9yX3RpZCAodGlkLCAmaGF2 ZV9wdHJhY2VfZ2V0cmVnc2V0LCBjYiwNCj4gKwkJCQkgIGVycm9yX21zZywgJnhjcjBfc3RvcmFn ZSk7DQo+ICB9DQo+IA0KPiANCj4gDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2Ric2VydmVyL2NvbmZp Z3VyZS5zcnYgYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydg0KPiBpbmRleCA5ZTg2MWE3NTA4OC4u N2EyNzAyZDc4YmYgMTAwNjQ0DQo+IC0tLSBhL2dkYnNlcnZlci9jb25maWd1cmUuc3J2DQo+ICsr KyBiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2DQo+IEBAIC0xMDksNiArMTA5LDcgQEAgY2FzZSAi JHtnZGJzZXJ2ZXJfaG9zdH0iIGluDQo+ICAJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9IG5h dC9saW51eC1idHJhY2UubyINCj4gIAkJCXNydl90Z3RvYmo9IiR7c3J2X3RndG9ian0gbmF0L3g4 Ni1saW51eC5vIg0KPiAgCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBuYXQveDg2LWxpbnV4 LWRyZWdzLm8iDQo+ICsJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9IG5hdC94ODYtbGludXgt dGRlc2MubyINCj4gIAkJCXNydl9saW51eF91c3JyZWdzPXllcw0KPiAgCQkJc3J2X2xpbnV4X3Jl Z3NldHM9eWVzDQo+ICAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXllcw0KPiBAQCAtMzcxLDYgKzM3 Miw3IEBAIGNhc2UgIiR7Z2Ric2VydmVyX2hvc3R9IiBpbg0KPiAgCQkJc3J2X3RndG9iaj0iJHtz cnZfdGd0b2JqfSBuYXQvbGludXgtYnRyYWNlLm8iDQo+ICAJCQlzcnZfdGd0b2JqPSIke3Nydl90 Z3RvYmp9IG5hdC94ODYtbGludXgubyINCj4gIAkJCXNydl90Z3RvYmo9IiR7c3J2X3RndG9ian0g bmF0L3g4Ni1saW51eC1kcmVncy5vIg0KPiArCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBu YXQveDg2LWxpbnV4LXRkZXNjLm8iDQo+ICAJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9IG5h dC9hbWQ2NC1saW51eC1zaWdpbmZvLm8iDQo+ICAJCQlzcnZfbGludXhfdXNycmVncz15ZXMgIyBU aGlzIGlzIGZvciBpMzg2IHByb2dzLg0KPiAgCQkJc3J2X2xpbnV4X3JlZ3NldHM9eWVzDQo+IGRp ZmYgLS1naXQgYS9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmNjIGIvZ2Ric2VydmVyL2xpbnV4 LWFtZDY0LWlwYS5jYw0KPiBpbmRleCBhNjM0Njc1MGY0OS4uZGY1ZTZhY2EwODEgMTAwNjQ0DQo+ IC0tLSBhL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuY2MNCj4gKysrIGIvZ2Ric2VydmVyL2xp bnV4LWFtZDY0LWlwYS5jYw0KPiBAQCAtMjIsNiArMjIsNyBAQA0KPiAgI2luY2x1ZGUgInRyYWNl cG9pbnQuaCINCj4gICNpbmNsdWRlICJsaW51eC14ODYtdGRlc2MuaCINCj4gICNpbmNsdWRlICJn ZGJzdXBwb3J0L3g4Ni14c3RhdGUuaCINCj4gKyNpbmNsdWRlICJhcmNoL2FtZDY0LWxpbnV4LXRk ZXNjLmgiDQo+IA0KPiAgLyogZmFzdCB0cmFjZXBvaW50cyBjb2xsZWN0IHJlZ2lzdGVycy4gICov DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2Ric2VydmVyL2xpbnV4LWkzODYtaXBhLmNjIGIvZ2Ric2Vy dmVyL2xpbnV4LWkzODYtaXBhLmNjDQo+IGluZGV4IDhmMTRlMDkzN2Q0Li5hYTM0NmZjOWJjMyAx MDA2NDQNCj4gLS0tIGEvZ2Ric2VydmVyL2xpbnV4LWkzODYtaXBhLmNjDQo+ICsrKyBiL2dkYnNl cnZlci9saW51eC1pMzg2LWlwYS5jYw0KPiBAQCAtMjIsNiArMjIsNyBAQA0KPiAgI2luY2x1ZGUg InRyYWNlcG9pbnQuaCINCj4gICNpbmNsdWRlICJsaW51eC14ODYtdGRlc2MuaCINCj4gICNpbmNs dWRlICJnZGJzdXBwb3J0L3g4Ni14c3RhdGUuaCINCj4gKyNpbmNsdWRlICJhcmNoL2kzODYtbGlu dXgtdGRlc2MuaCINCj4gDQo+ICAvKiBHREIgcmVnaXN0ZXIgbnVtYmVycy4gICovDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuY2MgYi9nZGJzZXJ2ZXIvbGludXgt eDg2LWxvdy5jYw0KPiBpbmRleCA2MjYxMjc3M2E4Ny4uNjhkMmYxMzUzN2MgMTAwNjQ0DQo+IC0t LSBhL2dkYnNlcnZlci9saW51eC14ODYtbG93LmNjDQo+ICsrKyBiL2dkYnNlcnZlci9saW51eC14 ODYtbG93LmNjDQo+IEBAIC0yOSw4ICsyOSwxMSBAQA0KPiANCj4gICNpZmRlZiBfX3g4Nl82NF9f DQo+ICAjaW5jbHVkZSAibmF0L2FtZDY0LWxpbnV4LXNpZ2luZm8uaCINCj4gKyNpbmNsdWRlICJh cmNoL2FtZDY0LWxpbnV4LXRkZXNjLmgiDQo+ICAjZW5kaWYNCj4gDQo+ICsjaW5jbHVkZSAiYXJj aC9pMzg2LWxpbnV4LXRkZXNjLmgiDQo+ICsNCj4gICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNl LmgiDQo+ICAvKiBEb24ndCBpbmNsdWRlIGVsZi9jb21tb24uaCBpZiBsaW51eC9lbGYuaCBnb3Qg aW5jbHVkZWQgYnkNCj4gICAgIGdkYl9wcm9jX3NlcnZpY2UuaC4gICovDQo+IEBAIC00Niw2ICs0 OSw3IEBADQo+ICAjaW5jbHVkZSAibmF0L3g4Ni1saW51eC5oIg0KPiAgI2luY2x1ZGUgIm5hdC94 ODYtbGludXgtZHJlZ3MuaCINCj4gICNpbmNsdWRlICJsaW51eC14ODYtdGRlc2MuaCINCj4gKyNp bmNsdWRlICJuYXQveDg2LWxpbnV4LXRkZXNjLmgiDQo+IA0KPiAgI2lmZGVmIF9feDg2XzY0X18N Cj4gIHN0YXRpYyB0YXJnZXRfZGVzY191cCB0ZGVzY19hbWQ2NF9saW51eF9ub194bWw7DQo+IEBA IC04MzEsMzIgKzgzNSwyMCBAQCB4ODZfdGFyZ2V0Ojpsb3dfc2lnaW5mb19maXh1cCAoc2lnaW5m b190ICpwdHJhY2UsDQo+IGdkYl9ieXRlICppbmYsIGludCBkaXJlY3Rpb24pDQo+IA0KPiANCj4g DQo+ICBzdGF0aWMgaW50IHVzZV94bWw7DQo+IA0KPiArLyogQ2FjaGVkIHhjcjAgdmFsdWUuICBU aGlzIGlzIGluaXRpYWxpc2VkIHRoZSBmaXJzdCB0aW1lDQo+ICsgICB4ODZfbGludXhfcmVhZF9k ZXNjcmlwdGlvbiBpcyBjYWxsZWQuICAqLw0KPiArDQo+ICtzdGF0aWMgdWludDY0X3QgeGNyMF9z dG9yYWdlOw0KDQpXZSBhbHJlYWR5IGNhY2hlIGl0IGluIGZwLWkzODcuY2MuIEl0IGdldCdzIHNl dCBieSB0aGUgY2FsbGJhY2sNCnlvdSBhZGRlZC4gSSB0aGluayB3ZSBzaG91bGQgYXZvaWQgaGF2 aW5nIGl0IHR3aWNlLg0KIA0KDQo+ICAvKiBHZXQgTGludXgveDg2IHRhcmdldCBkZXNjcmlwdGlv biBmcm9tIHJ1bm5pbmcgdGFyZ2V0LiAgKi8NCj4gDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHRh cmdldF9kZXNjICoNCj4gIHg4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uICh2b2lkKQ0KDQpOb3Qg c3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgd2UgY291bGQgcmVtb3ZlIHRoZSB2b2lkIHdoaWxlIHdl IGFyZSB0b3VjaGluZyB0aGlzLg0KVGhpcyBpcyBhIC5jYyBmaWxlLg0KDQpUaGFua3MsDQpGZWxp eA0KSW50ZWwgRGV1dHNjaGxhbmQgR21iSApSZWdpc3RlcmVkIEFkZHJlc3M6IEFtIENhbXBlb24g MTAsIDg1NTc5IE5ldWJpYmVyZywgR2VybWFueQpUZWw6ICs0OSA4OSA5OSA4ODUzLTAsIHd3dy5p bnRlbC5kZSA8aHR0cDovL3d3dy5pbnRlbC5kZT4KTWFuYWdpbmcgRGlyZWN0b3JzOiBDaHJpc3Rp biBFaXNlbnNjaG1pZCwgU2hhcm9uIEhlY2ssIFRpZmZhbnkgRG9vbiBTaWx2YSAgCkNoYWlycGVy c29uIG9mIHRoZSBTdXBlcnZpc29yeSBCb2FyZDogTmljb2xlIExhdQpSZWdpc3RlcmVkIE9mZmlj ZTogTXVuaWNoCkNvbW1lcmNpYWwgUmVnaXN0ZXI6IEFtdHNnZXJpY2h0IE11ZW5jaGVuIEhSQiAx ODY5MjgK