Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uCeRJ-000Mym-6c for pgsql-hackers@arkaria.postgresql.org; Wed, 07 May 2025 13:03:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uCeRH-00E2Q5-Ld for pgsql-hackers@arkaria.postgresql.org; Wed, 07 May 2025 13:03:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uCcA7-00DPKa-KI for pgsql-hackers@lists.postgresql.org; Wed, 07 May 2025 10:38:04 +0000 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uCcA3-000ZkG-0J for pgsql-hackers@lists.postgresql.org; Wed, 07 May 2025 10:38:02 +0000 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 547A3vng011562 for ; Wed, 7 May 2025 10:37:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:message-id:mime-version:reply-to:subject :to; s=pp1; bh=ONcHyCt0FbmAGVXWNKGOey+goXdJWAi4fonvxIakHa8=; b=A BP7GE6dfkoYabxvgy+jpPwDI+yGeyBwnZAay2aXPNvt7gYt6jG89CeOMK62vt0c+ sOVmSWwmEFKNffq1YZPUqSlVQ2LKSkyFxrNXYt/9y7NFea3ThoYT52s5KxCTZ8aX KxfoFrF+/vFAR8Xel3m/J+nb7CmuPdbSK9eZboB4UUiJrry4YMC4HygevBHexmDK Vzi8Ui48yYU5mCKLlpbRDvqZI12+XY5uGtKImgSbmoRWBNZj/vd+D9r9/f+wc1nY m/3/rLEuBLmjA6Sd4Mta4ySrbuvQuF+EgYg7X7Alia4UrhganlHg9F2U/EgGVHuX vxa6rri4swJh+PPscVWww== Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2042.outbound.protection.outlook.com [104.47.66.42]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 46g5ejr4bx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 07 May 2025 10:37:58 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tCkxZzG22jsiDW78dYJNL7Pf4WIZTAqdCCFjYck8mXxW0bOw2wQSdPcEy/xsiRw0KHNVI8oOQOMfvJ6EZFYKdhQOi7uNEiqna671vlMFWCIZXD1cMufFsYDahbssw6SV/w0noxBbjXJepXEJwpZBba6CTrU7PB7stjHhVmmZ7NUfGtMM0lniynJYGfiKeu10ntaceuTefOU5PmJkwjE1Mc124NiTZGEYLCyyg8iSu23bUzgFWdSDDmuctuX7DlV2kSr6vigXDWkXeHkkbgUN/+8yEaXlK168+h/Zt9B093cBrOm1P8DKtBMabOH49FcIWICypTQLiIu4R1Y3yY9N5Q== 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=ONcHyCt0FbmAGVXWNKGOey+goXdJWAi4fonvxIakHa8=; b=jQ4z90czHPL2fHFzHS767oPesac2oSRlC38zUsnXvecPFbz1XeVLLvLyVmERZbYTIDoO8gpd46wg5SDRE323XLdr2vkn6VDLniwtOHivV1E2ehIWHEqpiFdBKa/tBueEcp5B6S0JUzTuYdzFQz4FBJ2iNi8cas9l1T3JqfiyZqNGBwipwQyErBDpZUCpZzv1FBhX3onII6ZVp4KraHD/iG2yUmEeMdMLdQQaT7wZ+dDP4MZwkYDTiZP+qGmZnv1BEz6w+4BjP9AWvsGAJvxEVa3KIjpHRvq13KvHfkWvVd/FQYL+MbXYuc1qea6wUlVnwXX5gcTvzfTs4oCGOds3yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from MN2PR15MB2783.namprd15.prod.outlook.com (2603:10b6:208:127::23) by MW4PR15MB4362.namprd15.prod.outlook.com (2603:10b6:303:bb::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.21; Wed, 7 May 2025 10:37:51 +0000 Received: from MN2PR15MB2783.namprd15.prod.outlook.com ([fe80::50fe:e6ea:49d6:e10c]) by MN2PR15MB2783.namprd15.prod.outlook.com ([fe80::50fe:e6ea:49d6:e10c%5]) with mapi id 15.20.8678.028; Wed, 7 May 2025 10:37:50 +0000 From: Eduard Stefes To: "pgsql-hackers@lists.postgresql.org" CC: "iii@linux.ibm.com" , Eduard Stefes , "rueckner@linux.ibm.com" Subject: Review/Pull Request: Adding new CRC32C implementation for IBM S390X Thread-Topic: Review/Pull Request: Adding new CRC32C implementation for IBM S390X Thread-Index: AQHbvzwUGhWEhFfju0O3pu/thmpjcQ== Date: Wed, 7 May 2025 10:37:50 +0000 Message-ID: <918d9941377f6e83fbfebe96ba496ccaefa3803f.camel@ibm.com> Reply-To: Eduard Stefes Accept-Language: en-US, de-CH Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR15MB2783:EE_|MW4PR15MB4362:EE_ x-ms-office365-filtering-correlation-id: 10ad5591-8e4a-422d-04c2-08dd8d53375d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|10070799003|366016|4053099003|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?NDFMUW5ZS3UxTzgzeXFkVWdvYWZydUxueXhZZWNVRE5LWndsL0VnNGduY1lx?= =?utf-8?B?R0h1UUI4ZytsY3o0Z3VmakErRk91TnlQSkUzcDB6SjQyaUZTM0tYVkZMTXFq?= =?utf-8?B?VnJLVWsyZUdCaHl0Zm5TSmsrUks2OXRhb0JncWJTeUZvQ3ZlankrclpkRGFO?= =?utf-8?B?b3Bsay9mSGM0TW5VS3p1aFJuakNnMmpzSFBVNVlUQmFiYkpkWGtrUUdYZEp0?= =?utf-8?B?bjhxUmtaQTVmY2xhZHZLS2F3eGxCZTdNbDB4K1FvWFlyWVZFdWM5bzUwcWQ1?= =?utf-8?B?dGp1dmlpTGFlNStHOStkQjZUUUU1ZnpQLyszZTRFQTBPUDlQbG8zaHZiUVRE?= =?utf-8?B?QzdCUDliQXViSHB4aWlmcHdGWVhFWGg1NUtiZmtCL2lCeDVMaGZiVEE0enVK?= =?utf-8?B?bDg4dWZhR05KOEQ1N1pwbUd2eXh5M1dxZE0xNnJBc1lPS1RwWUtyYTRTaWJ5?= =?utf-8?B?TFJ6U0s3WnRhelJ0T2NHeHlTTGJrR0JXWktGdC9Qc1BUQ0Z6OWthYjNSZkpu?= =?utf-8?B?cjhNVmZvVjYrZmh4eDhaMkExbXJxTmdLL21qaDBrYkl2M2tJUjJza1FsbGxx?= =?utf-8?B?Mk43VWNhYW5yZmhYNzM2bGpiUUZYeTVwVTRBZHJRRXd0ZHFXVGlRNmZRTGd6?= =?utf-8?B?Y1h6VjBFaWg2RmlicTNSUnRKeE5kbzcyQnc0TkREeDg2dTZLOUhETlFIdkxp?= =?utf-8?B?QjhxSE90NDJzbUdaN2txbXZJckxyVVlEcjlUS3YySnEwSEVWT1hFTXYxd0th?= =?utf-8?B?UXBFeGx5d2N1bDFXRFRqU1VNZFNFWExoT3hMTC9zWVlMdVlqdkpXWE9vdWhu?= =?utf-8?B?MGpiUmxnSnBQVjI5ZUxSc0hmcDlPT014Vi9Ha1E5RU43SE1saUcrVlpqMTVK?= =?utf-8?B?MThTZy8xSTBNM3d5ZnNqNms5bURwcFZ6c2FFMFNPcHdHTzdFZGtwc0xqeEJm?= =?utf-8?B?Ni9Ick9meU92emUrdHFDeFRJZkM5bzh5SnB5WE1GK2Y2bDhKbUc0dWdFVG9N?= =?utf-8?B?STE0MGxFSFFNcFpJSXBYS2tsazE5bXBjQktpdGVVZ3lNSlM3WGtMYVpjQlVx?= =?utf-8?B?MU9HcVZOcDRUQzlDR0pGVVE2a0pVOWRsRUplMDZkTzh3emxjMTdvR0lJTGhW?= =?utf-8?B?amdoMVRxMHZoMEdnMjVxdTlVODFVTDdxdTRBZ2lwNFNlM09nVkJKUitsOFAv?= =?utf-8?B?ektMYlR4aFJDbVB3NTQ4ZkhyeUdudlNMaU9zemcxdHRMNnRJOFN5ZzA0RjJu?= =?utf-8?B?WE45NGpJTEVIN3QwZnV2Tm5SamI5SDNERFVOSkxSY0NhQlBGMDNDOERZRUYy?= =?utf-8?B?RDBGYUkvMGRJdUh6SXdleHdnZnRyRDd0dzBrVnd6MldOOWpXL3EzR3Jva2JN?= =?utf-8?B?TTZaa2JYd2FWQ2hoT3ovck0vSVRxV2pkaDNVdU0wY2hRM2JIRnFwd0RyOWU1?= =?utf-8?B?d2ZMekQzeWFYeUN2dEVmSi9BSUhDdEd6dVFFRDVFbnpRT0VYZVJmZk5qRHJq?= =?utf-8?B?WXo5eGRYeGNBYVpETHdlUXhEdmhKL1F0VGlZeE9BTlgxVTdFVStDaXhGeWhI?= =?utf-8?B?MXZtRGZad2plTUNEblE0N1paN3l2OE5TUEd4aWNCdjBiblJ6SWJYWEl4VHpO?= =?utf-8?B?ZDV4LzNYdUNQc0NhcjI0SGQ4MTVLUmU4alVwM1R0TE93NFJVdnV2V1IvUW9o?= =?utf-8?B?U1krTUFib2VzZU5sZmFXYS8xNjB0eEp5cWp0NVlENk1rOTAzdnFocjhBUUFs?= =?utf-8?B?dkVCdFBYNVpLZnp2V2Y1M090ME8rZzFWaXJjZEk5a25FTVZoZlQ3bXVJakFQ?= =?utf-8?B?bGp2V21vMTdySXRkQ0YxeHUrVU9nUUhlejBCOGZoR2hBYytOT25IMmw1Skdv?= =?utf-8?B?L0o1a1A4LzVRMWtFaS8vd09ZcUc1SkxqdmFCbUt2R1hEM0g5andoNU9raDds?= =?utf-8?B?Y084QjhUdnViR2RIZDRKMHlBSnVab3NYUnlVYlk0a0gzU0ZTQmVCdm00OExQ?= =?utf-8?Q?IsQT+njrEdlUC5lSCDgT5TRfSAkYA0=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR15MB2783.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(10070799003)(366016)(4053099003)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OEhQNnJvaGpHZ2RMOVJyN2lvMEhmR3lxQzMzU0JMNG9uM2dhSEk3Y2NFMjIr?= =?utf-8?B?dWtzdUhFcXpocjNkSzFCbXM3akJOa2ZqSCtjZ1ZwcnFNZ0hUK0k0eXJFR3BL?= =?utf-8?B?UUIvbnYxMnlKV2lPc21hWllXVUJnazU0eXIwazJuc1o1Sy9sSmJBbDhWYThl?= =?utf-8?B?UllUMVpOU2NNN0t2N0VhMHR1QWpXKzFCOElZZWd6WUJlYllzQWx3bnZRVFhG?= =?utf-8?B?Qkk2c3R2UEd2VlV6UXh3OGVMazgvWEU3ZStmc2RCdVhQNGZuOGU4Zkxtak5O?= =?utf-8?B?MTBFb3hCcFVCdmNENGE5cGYrZTRDMlVoODN2VWNySXFIRVpmS1B4V0lnekts?= =?utf-8?B?eHlIbXNWYmlQZ0ZFY3NVOWlIL1NkOEMzelZKZXNkUDZXVUNQWWdQQXB4TFRL?= =?utf-8?B?UVFwVFFXMU9tQzIxV1IzaEt4cTMyRHNwVUpWMGtka0ZrSjgrOFdIdlBCRGs2?= =?utf-8?B?OEY4VFVHRWNDZ0pNZ1hPZjcyc3RZeFZ5WUJpYm05emFHSnJmaGk1U1YyTW84?= =?utf-8?B?RiszaEJ2QmNWdCtTZGVYYlJ6Nng0bENzR2g4WVo2MnAvTlRVSmg2SjF0aHZ6?= =?utf-8?B?VXVSbXJnRHVtWGNvMU03ZEtRY0tSK2Q5UzhEVVFLNjBMeVRWa0gvcllTZm1i?= =?utf-8?B?L1FQbHNWVEdjVU80Zzh5OHBmV2NRSUlYaHJ2cFZSU3ZWMDNFMi9ES29nRjVQ?= =?utf-8?B?dm5LQ0c5VExyN0VEc2lYamt4RENDZDF5ZUtTNG0rUFpuajRyOTBUZ2RiMTM5?= =?utf-8?B?WUN2MVd3QUZSOEZsZEFBVnRRaHhZVEhyc28xbktmUHQvNUlzK1JzbjhFQlg3?= =?utf-8?B?RHNSR3FsUGp0TWtwVUpvZ3V3cmFVS0crcEdYN005VHNRZUZUNWVVdjhsTEZQ?= =?utf-8?B?QVM0NW53VHUrazF1NGlMS1NXY1VYVU9UMlYxK1BFOXZaVnhlSUhDelRCUmNl?= =?utf-8?B?Q0V3SmF4QlZuWnVMSmdTQVRSejRZRnM1Z2hmcFE3dnpOWi9MbGZBWmFsUU9N?= =?utf-8?B?OTF2NEpKaTd6N2lnZmZheWR1a2ZyenZ2NDh5YXBoVXVwUStxV01rYkZYWlEx?= =?utf-8?B?U1E0VG1sOHdEV0FzdGV1Qm5oRm9tb041dXlleDE5cUJ0UmVXdlN4cEljOHUx?= =?utf-8?B?K0k3dXptc1RiT0VZUmxPTFA3dUswVnZYSHJrRHExcWwzNC9kRlUvbGJBaGNP?= =?utf-8?B?ajZQaWN5bVJ6VFZUNGw5cGxGR0lxdmtpdEMxWGJkK05jc3B0WmZjNDBmMXRD?= =?utf-8?B?aUhqN0hBNE1Ca0R4YlJpemdkTkVISDFmcGR4RWN0MXRBQ0tWVENpRjl5NEsv?= =?utf-8?B?eDVrNUZBLzRDWE9VNHlNeHFJQTFFeDNUaFh0NnBxNHRZRVFoc21wWEFVRHZx?= =?utf-8?B?LzVjYjRla25xWTVsUTg4L2NFNkk0Ykd2R2s0d1VQQTY4RXY3Y1YxeUJHYzFI?= =?utf-8?B?Ylp6R3FQMnBKcGhJM0x1cVluYndZbmI1VVkwOEdMQ2RTTVZXR280TWJ0V0ND?= =?utf-8?B?NzMzUjBqZC95cGxBaGU3ZzJkMlpKM3lldlVZTVpQVW5NNWlIWGxMeFdWbXYy?= =?utf-8?B?UGdpM05iQldiRDNrSERyQjhnZWcrZ3NLZHRMNkFEcVFJazhxaWpUc1piQkho?= =?utf-8?B?eTVqM2F3Vng3ajRzMWtBcjE3QlFkZ0REcitjaDdFZGZIT1RNMVpjeTEveSs5?= =?utf-8?B?OXdGMFE0TE42YlhIOG1EeGxOVCtRS3dWdjgrTWtiam5Ca0lJaVJHa2RIeHU0?= =?utf-8?B?RWpNcG9yQU1Cc3QzNkVUbmh0Q3pHcHBZdm0wREZFM0Jtc3ZCU2RRZlJFcVJJ?= =?utf-8?B?WmJ2anhqRWd6Y2VkZmdLbjZwVklFbGxoSHVhYi9CVTBqQ1RhaU1OMXFPMFpQ?= =?utf-8?B?YUcxY3NVWGsxU0NXaEhCYWN3YTI4QzNsRk1FWUdmYTlEQkRNY3c2NzE1dy9F?= =?utf-8?B?MGdRQ2dwcnhlM1NtbThhNTBDQmVsd3g1akY5MjlPRnphWW5EMEJUbmhVdU13?= =?utf-8?B?NVc5dWxJSmdpZUJLUFFoZmtDa0F2K3VSVFhsUFRSdEo2bDhlUUlEY1lTWnND?= =?utf-8?B?cXUvQkxBWUQrQTB6enIvK1JMS3M1T1lndXpidHVOREN0TjQvQ0NWMkk4aHVT?= =?utf-8?B?QmFueGVQOTdVWXkxeVN0ZkZmUUtDRFBtcStwa1cvM3c2U3NWZmFERDJsZTNL?= =?utf-8?B?L1JaczUrT0hIa1ZldTBmMUxwQUl5UStSVlZ5T0RaeDI4Mm9kSnJPcXJnVkp0?= =?utf-8?B?ZWg5V1pMU1VhNEJCMWtVMXhMTkVRPT0=?= Content-Type: multipart/mixed; boundary="_002_918d9941377f6e83fbfebe96ba496ccaefa3803fcamelibmcom_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR15MB2783.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10ad5591-8e4a-422d-04c2-08dd8d53375d X-MS-Exchange-CrossTenant-originalarrivaltime: 07 May 2025 10:37:50.6929 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tN1z06KcxO7ABMebPl3HcB1c2KH2aQKjGxJYUmfy5fidoMDSUi7YmvifGy5x08911GtRFNat/JHnwStzkZYtaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR15MB4362 X-Authority-Analysis: v=2.4 cv=SvuQ6OO0 c=1 sm=1 tr=0 ts=681b3806 cx=c_pps a=ZuQraZtzrhlqXEa35WAx3g==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=VnNF1IyMAAAA:8 a=tLHZkyFjAQ8Ya_8Q87UA:9 a=QEXdDO2ut3YA:10 a=WWXa3wM0slwDlJqc3VMA:9 a=B2y7HmGcmWMA:10 X-Proofpoint-GUID: 1uWZwMqsNZqNs516atr7b_03vjn0XxTw X-Proofpoint-ORIG-GUID: 1uWZwMqsNZqNs516atr7b_03vjn0XxTw X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA3MDA5OSBTYWx0ZWRfX+AtYRlIOWEVZ E5eFcpTtbP8c2ZMOuTLac1dgrOUagP+NoidBGh46aF6T5TOzwZ1oUBB1GyO55z6Cddx0N/u1Qwq B5ph/qjMF0oX+zHFrmUkHFec5O2bqHxJphui19Zp1S/A4cXuAyUg0O3Yf0leFUqLZf7TGkrntCi IHr5wshtmknZ0zaW1ii7D4QnfrtWEK/2iwU9f092vR0pklwtJrIcd8Mic7dZQ1othkFqGCE9Nne xj5SQGNdh0WObRQ60omA39WZq1z7+/CYVNBsY2P1qqxw5ZAE8jtcJIfRZQXgbKCIaMsNzDJ5ueK g0KjknyTEW4jklfrTCgvd6CjVzwQYn6xaL/S8xzDlWg/NkJ7jHRFk2jdcCHz70iCfllxZTDg6qq rDoFLc3SUcLocsbrnCuSnxmUkX9q4OviimXV4fE7WVtFlddUQ7fArI8qoRyuFp5CTL8hes6E X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-07_03,2025-05-06_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 bulkscore=0 mlxlogscore=999 phishscore=0 adultscore=0 priorityscore=1501 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1011 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505070099 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_918d9941377f6e83fbfebe96ba496ccaefa3803fcamelibmcom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 SGksDQoNCkhlcmUgSSBzZW5kIGEgcGF0Y2ggdGhhdCBhZGRzIGEgdmVjdG9yaXplZCB2ZXJzaW9u IG9mIENSQzMyQyBmb3IgdGhlDQpJQk0gUzM5MFggaGFyZHdhcmUuIEkga2luZGx5IGFzayBmb3Ig YSByZXZpZXcgb2YgdGhlIGNvZGUgYW5kIHRvIHBpY2sNCml0wqB1cCBpbiB1cHN0cmVhbSBwb3N0 Z3Jlc3FsLg0KDQoNCiMgV2h5IHRoaXMgcGF0Y2g6DQoNCldlIG5vdGljZWQgdGhhdCBwb3N0Z3Jl cyBydW5uaW5nIG9uIGFuIFMzOTBYIHdpbGwgc3BlbmQgbXVjaCBsb25nZXIgaW4NCkNSQzMyQyBh cyBjb21wYXJlZCB0byBvdGhlciBwbGF0Zm9ybSB3aXRoIG9wdGltaXplZCBjcmMzMmMuIEtpbmRs DQpIZW5kcmlrIEJydWVja25lciB3b3VsZCBhbGxvdyB1cyB0byByZS1saWNlbnNlIGhpcyBpbXBs ZW1lbnRhdGlvbiBvZiBhbg0Kb3B0aW1pemVkIGNyYzMyYyB1bmRlciBwb3N0Z3Jlcy1saWNlbnNl LiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGFscmVhZHkNCnVzZWQgaW4gZ3ppcCwgemxpYi1uZyBh bmQgdGhlIGxpbnV4IGtlcm5lbC4gDQoNCg0KIyBUaGUgb3B0aW1pemVkIENSQzMyQzoNCg0KVGhl IElCTSBTMzkwWCBwbGF0Zm9ybSBoYXMgbm8gZGVkaWNhdGVkIENSQyBpbmZyYXN0cnVjdHVyZS4g VGhlDQphbGdvcml0aG0gd29ya3MgYnkgdXNpbmcgPj5yZWR1Y3Rpb24gY29uc3RhbnRzIHRvIGZv bGQgYW5kIHByb2Nlc3MNCnBhcnRpY3VsYXIgY2h1bmtzIG9mIHRoZSBpbnB1dCBkYXRhIHN0cmVh bSBpbiBwYXJhbGxlbC48PCBUaGlzIG1ha2VzDQpncmF0ZSB1c2Ugb2YgdGhlIFMzOTBYIHZlY3Rv ciB1bml0cy4gRGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBpbnB1dA0Kc3RyZWFtIGEgc3Bl ZWR1cCBpbiB0aGUgb3JkZXIgb2YgbWFnbml0dWRlIGNhbiBiZSBhY2hpZXZlZChjb21wYXJlZCB0 bw0Kc2I4KS4NCg0KDQojIFJ1bnRpbWUgY2hlY2tzOg0KDQpUaGUgcnVudGltZSBkZXRlY3Rpb24g c3RyYXRlZ3kgZm9sbG93cyB0aGUgc2FtZSBhcHByb2FjaCBhcyB0aGUgQVJNDQpjb2RlLiBJZiB0 aGUgY29kZSBpcyBjb21waWxlZCB3aXRoIGFsbCBuZWVkZWQgZmxhZ3MgZW5hYmxlZCB0aGUgcnVu dGltZQ0KZGV0ZWN0aW9uIHdpbGwgbm90IGJlIGNvbXBpbGVkIGluLiBJZiB0aGUgYnVpbGQgc3lz dGVtIGNhbiBlbmFibGUgYWxsDQpuZWVkZWQgZmxhZ3MgaXRzZWxmLCBpdCB3aWxsIGFsc28gZW5h YmxlIHJ1bnRpbWUgZGV0ZWN0aW9uLg0KDQoNCiMgU2xpY2luZyBieSA4Og0KDQpUaGUgc3RhbmRh cmQgc2I4IGNvZGUgaXMgc3RpbGwgYWx3YXlzIGNvbXBpbGVkIGFuZCB3aWxsIGJlIHVzZWQgZm9y DQp0aGlzIGNhc2VzOg0KLSB0aGUgdmVjdG9yIHVuaXRzIG5lZWQgdG8gb3BlcmF0ZSBvbiBkb3Vi bGUgd29yZCBib3VuZGFyaWVzLiBJZiB0aGUNCiAgaW5wdXQgc3RyZWFtIGlzIG5vdCBhbGlnbmVk IHdlIHVzZSBzYjggdXAgdG8gdGhlIG5leHQgYm91bmRhcnkNCi0gdXNpbmcgdGhlIHZlY3RvciB1 bml0cyBmb3IgZGF0YSBzbWFsbGVyIHRoZW4gNjQgYnl0ZSB3aWxsIG5lZ2xlY3QgdGhlDQogIHNw ZWVkIGltcHJvdmVtZW50IG9mIHRoZSBhbGdvcml0aG0sIGFzIHJlZ2lzdGVyIHNldHVwIGFuZCBw b3N0DQogIHByb2Nlc3Npbmcgd2lsbCBlYXQgdXAgYWxsIGJlbmVmaXRzLg0KLSB0aGUgcmVkdWN0 aW9uIGFuZCBmb2xkaW5nIGNvbnN0YW50cyBhcmUgcHJlY2FsY3VsYXRlZCBmb3IgNjQgYnl0ZQ0K ICBjaHVua3MuIEFkZGluZyBjb2RlIGZvciBzbWFsbGVyIGNodW5rcyB3b3VsZCBkcmFzdGljYWxs eSBpbmNyZWFzZSB0aGUNCiAgY29tcGxleGl0eS4NCg0KDQojIFRoZSBnbHVlIGNvZGU6DQoNCkkg dHJpZWQgdG8gZm9sbG93IHRoZSBwb3N0Z3JlcyBjb2RpbmcgY29udmVudGlvbnMuIEkgcmFuDQpg Li9wZ19ic2RfaW5kZW50IC1pNCAtbDc5IC1kaTEyIC1uZmMxIC1ubHAgLXNhYyAuLi5gIGFzIG1l bnRpb25lZCBpbg0Kc3JjL3Rvb2xzL3BnX2JzZF9pbmRlbnQvUkVBRE1FLiBCdXQgZm9yIG1lIHRo aXMgd2lsbCBhYnNvbHV0ZWx5IG5vdA0KZm9ybWF0IGNvZGUgYWNjb3JkaW5nIHRvIHRoZSBwb3N0 Z3JlcyBjb2RpbmcgY29udmVudGlvbi4gVGhlcmVmb3IgSQ0KZm9ybWF0dGVkIGV2ZXJ5dGhpbmcg YnkgaGFuZC4NCg0KSSBmZWFyZWQgdGhhdCBzaW1wbHkgd3JpdGluZyBhIGZ1bmN0aW9uIHBvaW50 ZXIgaW4gYSBzb2Z0d2FyZSBzcGF3bmluZw0KbWFueSB0aHJlYWRzIGFuZCBmb3JrcyBtaWdodCBj YXVzZSBpc3N1ZXMuIFNvIGkgZGVjaWRlZCB0byB1c2UNCmBfX2F0b21pY19zdG9yZV9uYCB0byBz ZXQgdGhlIENSQyBmdW5jdGlvbiBwb2ludGVyLiBJbmRlZWQgSSBub3RpY2VkDQp0aGF0IHRoZSBv dGhlciBfY2hvb3NlLmMgZmlsZXMgZGlkIG5vdCBkbyB0aGlzLiBIb3dldmVyIEkgYW0gdmVyeQ0K Y29uZmlkZW50IHRoYXQgYF9fYXRvbWljX3N0b3JlX25gIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJs ZSBvbiBhIFMzOTBYLg0KDQpBcyB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIEkgYW0gd3JpdGluZyBt NC9hdXRvdG9vbHMsIEknZCBraW5kbHkgYXNrIHRoZQ0KcmV2aWV3ZXIgZm9yIHNwZWNpYWwgY2Fy ZSB0aGVyZSA6KSAuIFRoZXJlIG1heSBiZSBkcmFnb25zLiBCdXQgSSBoYXZlDQpoaWdoIGhvcGVz IGFsbCBpcyBPSy4NCg0KDQpDaGVlcnMgYW5kIHRoYW5rcyB0byBhbGwgZm9yIHRoZWlyIHdvcmss IA0KDQotLSANCkVkdWFyZCBTdGVmZXMgPGVkdWFyZC5zdGVmZXNAaWJtLmNvbT4NCg== --_002_918d9941377f6e83fbfebe96ba496ccaefa3803fcamelibmcom_ Content-Type: text/x-patch; name="v1-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch" Content-Description: v1-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch Content-Disposition: attachment; filename="v1-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch"; size=38094; creation-date="Wed, 07 May 2025 10:37:50 GMT"; modification-date="Wed, 07 May 2025 10:37:50 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBkNTIyZDhhZmE0MWY0NzBhN2VkZDcyODQ1N2U2OTdmMTBhNzgxODU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiRWRkeSAoRWR1YXJkKSBTdGVmZXMiIDxlZHVhcmQuc3RlZmVz QGlibS5jb20+CkRhdGU6IFR1ZSwgMTUgQXByIDIwMjUgMTA6MjI6MDUgKzAyMDAKU3ViamVjdDog W1BBVENIIHYxXSBBZGRlZCBjcmMzMmMgZXh0ZW5zaW9uIGZvciBpYm0gczM5MHggYmFzZWQgb24g VlgKIGludHJpbnNpY3MKClRoZSBvcmlnaW5hbCBjcmMzMmMtdnggY29kZSBpcyBwcm92aWRlZCBi eSBIZW5kcmlrIEJydWVja25lcgo8cnVlY2tuZXJAbGludXguaWJtLmNvbT4uIEhlIGtpbmRseSBn YXZlIHBlcm1pc3Npb24gdG8gcmVsaWNlbnNlIGl0IHVuZGVyCnBvc3RncmVzcWwtbGljZW5zZS4g SSBhZGFwdGVkIGl0IGZvciB0aGUgdXNlIGluIHBvc3RncmVzLgoKVGhlIElCTSBTMzkwWCBwbGF0 Zm9ybSBoYXMgbm8gZGVkaWNhdGVkIENSQyBpbmZyYXN0cnVjdHVyZS4gVGhlIGFsZ29yaXRobQp3 b3JrcyBieSB1c2luZyBgcmVkdWN0aW9uIGNvbnN0YW50cyB0byBmb2xkIGFuZCBwcm9jZXNzIHBh cnRpY3VsYXIgY2h1bmtzCm9mIHRoZSBpbnB1dCBkYXRhIHN0cmVhbSBpbiBwYXJhbGxlbC5gIFRo aXMgbWFrZXMgZ3JhdGUgdXNlIG9mIHRoZSBTMzkwWAp2ZWN0b3IgdW5pdHMuIERlcGVuZGluZyBv biB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgc3RyZWFtIGEgc3BlZWR1cCBpbiB0aGUKb3JkZXIgb2Yg bWFnbml0dWRlIGNhbiBiZSBhY2hpZXZlZChjb21wYXJlZCB0byBzYjgpLgoKVGhlIHJ1bnRpbWUg ZGV0ZWN0aW9uIHN0cmF0ZWd5IGZvbGxvd3MgdGhlIHNhbWUgYXBwcm9hY2ggYXMgdGhlIEFSTSBj b2RlLgpJZiB0aGUgY29kZSBpcyBjb21waWxlZCB3aXRoIGFsbCBuZWVkZWQgZmxhZ3MgZW5hYmxl ZCB0aGUgcnVudGltZQpkZXRlY3Rpb24gd2lsbCBub3QgYmUgY29tcGlsZWQgaW4uIElmIHRoZSBi dWlsZCBzeXN0ZW0gY2FuIGVuYWJsZSBhbGwKbmVlZGVkIGZsYWdzIGl0c2VsZiBpdCB3aWxsIGFs c28gZW5hYmxlIHJ1bnRpbWUgZGV0ZWN0aW9uLgoKVGhlIHN0YW5kYXJkIHNiOCBjb2RlIGlzIHN0 aWxsIGFsd2F5cyBjb21waWxlZCBhbmQgd2lsbCBiZSB1c2VkIGZvciB0aGlzCmNhc2VzOgotIHRo ZSB2ZWN0b3IgdW5pdHMgbmVlZCB0byBvcGVyYXRlIG9uIGRvdWJsZSB3b3JkIGJvdW5kYXJpZXMu IElmIHRoZSBpbnB1dAogIHN0cmVhbSBpcyBub3QgYWxpZ25lZCB3ZSB1c2Ugc2I4IHVwIHRvIHRo ZSBuZXh0IGJvdW5kYXJ5Ci0gdXNpbmcgdGhlIHZlY3RvciB1bml0cyBmb3IgZGF0YSBzbWFsbGVy IHRoZW4gNjQgYnl0ZSB3aWxsIG5lZ2xlY3QgdGhlCiAgc3BlZWQgaW1wcm92ZW1lbnQgb2YgdGhl IGFsZ29yaXRobSwgYXMgcmVnaXN0ZXIgc2V0dXAgYW5kIHBvc3QKICBwcm9jZXNzaW5nIHdpbGwg ZWF0IHVwIGFsbCBiZW5lZml0cy4KLSB0aGUgcmVkdWN0aW9uIGFuZCBmb2xkaW5nIGNvbnN0YW50 cyBhcmUgcHJlY2FsY3VsYXRlZCBmb3IgNjQgYnl0ZQogIGNodW5rcy4gQWRkaW5nIGNvZGUgZm9y IHNtYWxsZXIgY2h1bmtzIHdvdWxkIGRyYXN0aWNhbGx5IGluY3JlYXNlIHRoZQogIGNvbXBsZXhp dHkuCgpDby1hdXRob3JlZC1ieTogSGVuZHJpayBCcnVlY2tuZXIgPHJ1ZWNrbmVyQGxpbnV4Lmli bS5jb20+Ci0tLQogY29uZmlnL2MtY29tcGlsZXIubTQgICAgICAgICAgICAgIHwgIDcxICsrKysr KysrCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNzcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAg NjQgKysrKysrLQogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgIDQzICsrKysr CiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiAgICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUv cG9ydC9wZ19jcmMzMmMuaCAgICAgIHwgIDE4ICsrCiBzcmMvcG9ydC9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgfCAgIDMgKy0KIHNyYy9wb3J0L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAg NyArCiBzcmMvcG9ydC9wZ19jcmMzMmNfczM5MHguYyAgICAgICAgfCAyNTIgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvcG9ydC9wZ19jcmMzMmNfczM5MHhfY2hvb3NlLmMgfCAgNDYg KysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDc3MyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcG9ydC9wZ19jcmMzMmNfczM5MHguYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9wb3J0L3BnX2NyYzMyY19zMzkweF9jaG9vc2UuYwoKZGlmZiAtLWdp dCBhL2NvbmZpZy9jLWNvbXBpbGVyLm00IGIvY29uZmlnL2MtY29tcGlsZXIubTQKaW5kZXggNWYz ZTFkMWZhZjkuLmM5MmJhNGRjMmZjIDEwMDY0NAotLS0gYS9jb25maWcvYy1jb21waWxlci5tNAor KysgYi9jb25maWcvYy1jb21waWxlci5tNApAQCAtNTQ1LDYgKzU0NSwyMSBAQCBpZiB0ZXN0IHgi JHBnYWNfY3ZfZ2NjX2F0b21pY19pbnQ2NF9jYXMiID0geCJ5ZXMiOyB0aGVuCiAgIEFDX0RFRklO RShIQVZFX0dDQ19fQVRPTUlDX0lOVDY0X0NBUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZl IF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbihpbnQ2NCAqLCBpbnQ2NCAqLCBpbnQ2NCkuXSkK IGZpXSkjIFBHQUNfSEFWRV9HQ0NfX0FUT01JQ19JTlQ2NF9DQVMKIAorIyBQR0FDX0hBVkVfR0ND X19BVE9NSUNfU1RPUkVfTgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVj ayBpZiB0aGUgY29tcGlsZXIgdW5kZXJzdGFuZHMgX19hdG9taWNfc3RvcmVfbiBmb3IgNjRiaXQK KyMgdHlwZXMsIGFuZCBkZWZpbmUgSEFWRV9HQ0NfX0FUT01JQ19TVE9SRV9OIGlmIHNvLgorQUNf REVGVU4oW1BHQUNfSEFWRV9HQ0NfX0FUT01JQ19TVE9SRV9OXSwKK1tBQ19DQUNIRV9DSEVDSyhm b3IgYnVpbHRpbiBfX2F0b21pYyBpbnQ2NCBhdG9taWMgc3RvcmUgb3BlcmF0aW9ucywgcGdhY19j dl9nY2NfYXRvbWljX3N0b3JlX24sCitbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShb I2luY2x1ZGUgPHN0ZGludC5oPl0sCisgIFtpbnQ2NF90IHZhbCA9IDA7CisgICBfX2F0b21pY19z dG9yZV9uKCZ2YWwsMSxfX0FUT01JQ19TRVFfQ1NUKTtdKV0sCisgIFtwZ2FjX2N2X2djY19hdG9t aWNfc3RvcmVfbj0ieWVzIl0sCisgIFtwZ2FjX2N2X2djY19hdG9taWNfc3RvcmVfbj0ibm8iXSld KQoraWYgdGVzdCB4IiRwZ2FjX2N2X2djY19hdG9taWNfc3RvcmVfbiIgPSB4InllcyI7IHRoZW4K KyAgQUNfREVGSU5FKEhBVkVfR0NDX19BVE9NSUNfU1RPUkVfTiwgMSwgW0RlZmluZSB0byAxIGlm IHlvdSBoYXZlIF9fYXRvbWljX3N0b3JlX24oaW50NjQgKiwgaW50NjQgLCBpbnQpLl0pCitmaV0p IyBQR0FDX0hBVkVfR0NDX19BVE9NSUNfU1RPUkVfTgorCiAjIFBHQUNfU1NFNDJfQ1JDMzJfSU5U UklOU0lDUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2sgaWYgdGhlIGNv bXBpbGVyIHN1cHBvcnRzIHRoZSB4ODYgQ1JDIGluc3RydWN0aW9ucyBhZGRlZCBpbiBTU0UgNC4y LApAQCAtNjg0LDYgKzY5OSw2MiBAQCBmaQogdW5kZWZpbmUoW0FjX2NhY2hldmFyXSlkbmwKIF0p IyBQR0FDX0xPT05HQVJDSF9DUkMzMkNfSU5UUklOU0lDUwogCisjIFBHQUNfUzM5MFhfVkVDVE9S X1ZYX0lOVFJJTlNJQ1MKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hl Y2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBTMzkwWCB2ZWN0b3IgaW50cmluc2ljcywg dXNpbmcKKyMgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNj dW1fMTI4CisjIAorIyBUaGVzZSBpbnN0cnVjdGlvbnMgd2hlcmUgaW50cm9kdWNlZCB3aXRoIC1t YXJjaD16MTMuCisjIHRoZSB0ZXN0IGFyZzEgaXMgbWFuZGF0b3J5IGFuZCBzaG91bGQgYmUgZWl0 aGVyOgorIyAnLWZ6dmVjdG9yJyBmb3IgY2xhbmcKKyMgJy1temFyY2gnIGZvciBnY2MKKyMKKyMg SWYgdGhlIGludHJpbnNpY3MgYXJlIHN1cHBvcnRlZCwgc2V0cworIyBwZ2FjX3MzOTB4X3ZlY3Rv cl9pbnRyaW5zaWNzLCBhbmQgQ0ZMQUdTX0NSQy4KK0FDX0RFRlVOKFtQR0FDX1MzOTBYX1ZFQ1RP Ul9WWF9JTlRSSU5TSUNTXSwKK1tkZWZpbmUoW0FjX2NhY2hldmFyXSwgW0FTX1RSX1NIKFtwZ2Fj X2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzXyQxXyQyXSldKWRubAorQUNfQ0FDSEVfQ0hFQ0so W2ZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSwgdmVjX2dmbXN1bV9hY2N1bV8x Mjggd2l0aCBDRkxBR1M9JDEgJDJdLCBbQWNfY2FjaGV2YXJdLAorW3BnYWNfc2F2ZV9DRkxBR1M9 JENGTEFHUworQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyAkMSAkMiIKK0FDX0xJTktfSUZFTFNF KFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDx2ZWNpbnRyaW4uaD5dLAorICBbdW5zaWduZWQg bG9uZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAg IHVuc2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpID0g eyAwIH07CisgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYp KSkgPSB7IDAgfTsKKyAgIGMgPSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChhLCBiLCBjKTsKKyAgIHJl dHVybiAwO10pXSwKKyAgW0FjX2NhY2hldmFyPXllc10sCisgIFtBY19jYWNoZXZhcj1ub10pCitD RkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIl0pCitpZiB0ZXN0IHgiJEFjX2NhY2hldmFyIiA9IHgi eWVzIjsgdGhlbgorICBDRkxBR1NfQ1JDPSIkMSAkMiIKKyAgQVNfVFJfU0goW3BnYWNfczM5MHhf dmVjdG9yX2ludHJpbnNpY3NfJDFfJDJdKT15ZXMKK2ZpCit1bmRlZmluZShbQWNfY2FjaGV2YXJd KWRubAorXSkjIFBHQUNfUzM5MFhfVkVDVE9SX1ZYX0lOVFJJTlNJQ1MKKworIyBQR0FDX1MzOTBY X0JBRF9WRUNUT1JfSU5UUklOU0lDUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMK KyMKKyMgSWYgdGhlIGludHJpbnNpY3MgYXJlIGJhZCwgc2V0cyBwZ2FjX3MzOTB4X2JhZF92ZWN0 b3JfaW50cmluc2ljcy4KK0FDX0RFRlVOKFtQR0FDX1MzOTBYX0JBRF9WRUNUT1JfSU5UUklOU0lD U10sCitbZGVmaW5lKFtBY19jYWNoZXZhcl0sIFtBU19UUl9TSChbcGdhY19jdl9zMzkweF9iYWRf dmVjdG9yX2ludHJpbnNpY3NdKV0pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9yIENvbXBpbGVyIFZl cnNpb24gd2l0aCBrbm93biBiYWQgUzM5MFggVmVjdG9yIEludHJpbnNpY3NdLFtBY19jYWNoZXZh cl0sCitbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSwKKyAgWyNpZmRlZiBfX2Ns YW5nX18KKyAgICMgIGlmICgoX19jbGFuZ19tYWpvcl9fID09IDE4KSB8fCAoX19jbGFuZ19tYWpv cl9fID09IDE5ICYmIChfX2NsYW5nX21pbm9yX18gPCAxIHx8IChfX2NsYW5nX21pbm9yX18gPT0g MSAmJiBfX2NsYW5nX3BhdGNobGV2ZWxfXyA8IDIpKSkpCisgICAjIGVycm9yIENSQzMyLVZYIG9w dGltaXphdGlvbnMgYXJlIGJyb2tlbiBkdWUgdG8gY29tcGlsZXIgYnVnIGluIENsYW5nIHZlcnNp b25zOiAxOC4wLjAgPD0gY2xhbmdfdmVyc2lvbiA8IDE5LjEuMi4gRWl0aGVyIGRpc2FibGUgdGhl IENSQzMyLVZYIG9wdGltaXphdGlvbiwgb3Igc3dpdGNoIHRvIGFub3RoZXIgY29tcGlsZXIvY29t cGlsZXIgdmVyc2lvbi4KKyAgICMgIGVuZGlmCisgICAjZW5kaWYKKyAgIHJldHVybiAwO10pXSwK KyAgW0FjX2NhY2hldmFyPXllc10sCisgIFtBY19jYWNoZXZhcj1ub10pXSkKK2lmIHRlc3QgeCIk QWNfY2FjaGV2YXIiID0geCJ5ZXMiOyB0aGVuCisgIHBnYWNfczM5MHhfYmFkX3ZlY3Rvcl9pbnRy aW5zaWNzPW5vCitmaQordW5kZWZpbmUoW0FjX2NhY2hldmFyXSlkbmwKK10pIyBQR0FDX1MzOTBY X0JBRF9WRUNUT1JfSU5UUklOU0lDUworCiAjIFBHQUNfWFNBVkVfSU5UUklOU0lDUwogIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBY U0FWRSBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlIF94Z2V0YnYKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZSBiL2NvbmZpZ3VyZQppbmRleCAyNzVjNjdlZTY3Yy4uNTU4NDJmMTVhMjQgMTAwNzU1Ci0tLSBh L2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE3NTI3LDcgKzE3NTI3LDM4IEBAIGlmIHRl c3QgeCIkcGdhY19jdl9nY2NfYXRvbWljX2ludDY0X2NhcyIgPSB4InllcyI7IHRoZW4KICRhc19l Y2hvICIjZGVmaW5lIEhBVkVfR0NDX19BVE9NSUNfSU5UNjRfQ0FTIDEiID4+Y29uZmRlZnMuaAog CiBmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3IgYnVpbHRpbiBfX2F0b21pYyBpbnQ2NCBhdG9taWMgc3RvcmUgb3BlcmF0aW9ucyIgPiY1Cisk YXNfZWNob19uICJjaGVja2luZyBmb3IgYnVpbHRpbiBfX2F0b21pYyBpbnQ2NCBhdG9taWMgc3Rv cmUgb3BlcmF0aW9ucy4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X2djY19hdG9taWNfc3RvcmVf bis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpbnQuaD4KK2ludAorbWFpbiAoKQoreworaW50NjRf dCB2YWwgPSAwOworICAgX19hdG9taWNfc3RvcmVfbigmdmFsLDEsX19BVE9NSUNfU0VRX0NTVCk7 CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5F Tk8iOyB0aGVuIDoKKyAgcGdhY19jdl9nY2NfYXRvbWljX3N0b3JlX249InllcyIKK2Vsc2UKKyAg cGdhY19jdl9nY2NfYXRvbWljX3N0b3JlX249Im5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVz dC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRwZ2FjX2N2X2djY19hdG9taWNfc3RvcmVfbiIgPiY1CiskYXNfZWNobyAiJHBnYWNf Y3ZfZ2NjX2F0b21pY19zdG9yZV9uIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9nY2NfYXRv bWljX3N0b3JlX24iID0geCJ5ZXMiOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0ND X19BVE9NSUNfU1RPUkVfTiAxIiA+PmNvbmZkZWZzLmgKIAorZmkKIAogIyBDaGVjayBmb3IgeDg2 IGNwdWlkIGluc3RydWN0aW9uCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciBfX2dldF9jcHVpZCIgPiY1CkBAIC0xODA3NSw2ICsxODEwNiwyMTIg QEAgaWYgdGVzdCB4IiRwZ2FjX2N2X2xvb25nYXJjaF9jcmMzMmNfaW50cmluc2ljcyIgPSB4Inll cyI7IHRoZW4KIGZpCiAKIAorIyBDaGVjayBmb3IgUzM5MFggVmVjdG9yIGludHJpbnNpY3MgdG8g ZG8gQ1JDIGNhbGN1bGF0aW9ucy4KKyMKKyMgRmlyc3QgY2hlY2sgZm9yIHRoZSBob3N0IGNwdQor aWYgdGVzdCB4IiRob3N0X2NwdSIgPSB4InMzOTB4IjsgdGhlbgorICAjIFNlY29uZCBjaGVjayBp ZiB3ZSBoYXZlIGF0b21pYyBzdG9yZQorICBpZiB0ZXN0IHgiJHBnYWNfY3ZfZ2NjX2F0b21pY19z dG9yZV9uIiA9IHgieWVzIjsgdGhlbgorICAgICMgVGhpcmQgY2hlY2sgaWYgd2UgaGF2ZSBhIGNv bXBpbGVyIHdpdGggYmFkIGludHJpbnNpY3MKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDb21waWxlciBWZXJzaW9uIHdpdGgga25vd24g YmFkIFMzOTBYIFZlY3RvciBJbnRyaW5zaWNzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv ciBDb21waWxlciBWZXJzaW9uIHdpdGgga25vd24gYmFkIFMzOTBYIFZlY3RvciBJbnRyaW5zaWNz Li4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfczM5MHhfYmFkX3ZlY3Rvcl9pbnRyaW5zaWNzKzp9 IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz LmguICAqLworCitpbnQKK21haW4gKCkKK3sKKyNpZmRlZiBfX2NsYW5nX18KKyAgICMgIGlmICgo X19jbGFuZ19tYWpvcl9fID09IDE4KSB8fCAoX19jbGFuZ19tYWpvcl9fID09IDE5ICYmIChfX2Ns YW5nX21pbm9yX18gPCAxIHx8IChfX2NsYW5nX21pbm9yX18gPT0gMSAmJiBfX2NsYW5nX3BhdGNo bGV2ZWxfXyA8IDIpKSkpCisgICAjIGVycm9yIENSQzMyLVZYIG9wdGltaXphdGlvbnMgYXJlIGJy b2tlbiBkdWUgdG8gY29tcGlsZXIgYnVnIGluIENsYW5nIHZlcnNpb25zOiAxOC4wLjAgPD0gY2xh bmdfdmVyc2lvbiA8IDE5LjEuMi4gRWl0aGVyIGRpc2FibGUgdGhlIENSQzMyLVZYIG9wdGltaXph dGlvbiwgb3Igc3dpdGNoIHRvIGFub3RoZXIgY29tcGlsZXIvY29tcGlsZXIgdmVyc2lvbi4KKyAg ICMgIGVuZGlmCisgICAjZW5kaWYKKyAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQor X0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3Zf czM5MHhfYmFkX3ZlY3Rvcl9pbnRyaW5zaWNzPXllcworZWxzZQorICBwZ2FjX2N2X3MzOTB4X2Jh ZF92ZWN0b3JfaW50cmluc2ljcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0 CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRw Z2FjX2N2X3MzOTB4X2JhZF92ZWN0b3JfaW50cmluc2ljcyIgPiY1CiskYXNfZWNobyAiJHBnYWNf Y3ZfczM5MHhfYmFkX3ZlY3Rvcl9pbnRyaW5zaWNzIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19j dl9zMzkweF9iYWRfdmVjdG9yX2ludHJpbnNpY3MiID0geCJ5ZXMiOyB0aGVuCisgIHBnYWNfczM5 MHhfYmFkX3ZlY3Rvcl9pbnRyaW5zaWNzPW5vCitmaQorCisgICAgaWYgdGVzdCB4IiRwZ2FjX3Mz OTB4X2JhZF92ZWN0b3JfaW50cmluc2ljcyIgIT0geCJ5ZXMiOyB0aGVuCisgICAgICAjIEZpbmFs bHkgY2hlY2sgZm9yIGFsbCBwb3NzaWJsZSBjZmxhZyBjb21iaW5hdGlvbnMKKyAgICAgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fYXR0cmli dXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpLCB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCB3aXRoIENGTEFH Uz0tZnp2ZWN0b3IgIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9f KCh2ZWN0b3Jfc2l6ZSgxNikpKSwgdmVjX2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LWZ6 dmVjdG9yIC4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNz X19menZlY3Rvcl8rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iJHBnYWNfc2F2ZV9D RkxBR1MgLWZ6dmVjdG9yICIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDx2ZWNpbnRyaW4uaD4KK2lu dAorbWFpbiAoKQorewordW5zaWduZWQgbG9uZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgIHVuc2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRl X18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRy aWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgIGMgPSB2ZWNfZ2Ztc3VtX2Fj Y3VtXzEyOChhLCBiLCBjKTsKKyAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FD RU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXz15ZXMKK2Vsc2UKKyAgcGdhY19jdl9zMzkw eF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0 ZXN0LiRhY19leHQKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X3MzOTB4X3ZlY3Rv cl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4X3Zl Y3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID4mNjsgfQoraWYgdGVzdCB4IiRwZ2FjX2N2X3Mz OTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID0geCJ5ZXMiOyB0aGVuCisgIENGTEFH U19DUkM9Ii1menZlY3RvciAiCisgIHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVj dG9yXz15ZXMKK2ZpCisKKyAgICAgIGlmIHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmlu c2ljc19fZnp2ZWN0b3JfIiAhPSB4InllcyI7IHRoZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4IHdpdGggQ0ZMQUdTPS1menZlY3Rv ciAtbWFyY2g9ejEzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9f KCh2ZWN0b3Jfc2l6ZSgxNikpKSwgdmVjX2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LWZ6 dmVjdG9yIC1tYXJjaD16MTMuLi4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9zMzkweF92ZWN0b3Jf aW50cmluc2ljc19fZnp2ZWN0b3JfX21hcmNoX3oxMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHBnYWNfc2F2ZV9DRkxBR1M9JENGTEFHUwor Q0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyAtZnp2ZWN0b3IgLW1hcmNoPXoxMyIKK2NhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKyNpbmNsdWRlIDx2ZWNpbnRyaW4uaD4KK2ludAorbWFpbiAoKQorewordW5zaWduZWQgbG9u ZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgIHVu c2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAw IH07CisgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkg PSB7IDAgfTsKKyAgIGMgPSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChhLCBiLCBjKTsKKyAgIHJldHVy biAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIk TElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVj dG9yX19tYXJjaF96MTM9eWVzCitlbHNlCisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNp Y3NfX2Z6dmVjdG9yX19tYXJjaF96MTM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFj X2V4dAorQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJp bnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTMiID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4 X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl9fbWFyY2hfejEzIiA+JjY7IH0KK2lmIHRlc3Qg eCIkcGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfX21hcmNoX3oxMyIg PSB4InllcyI7IHRoZW4KKyAgQ0ZMQUdTX0NSQz0iLWZ6dmVjdG9yIC1tYXJjaD16MTMiCisgIHBn YWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTM9eWVzCitmaQor CisgICAgICAgIGlmIHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0 b3JfX21hcmNoX3oxMyIgIT0geCJ5ZXMiOyB0aGVuCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4IHdpdGggQ0ZMQUdTPS1temFyY2gg IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6 ZSgxNikpKSwgdmVjX2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LW16YXJjaCAuLi4gIiA+ JjY7IH0KK2lmICR7cGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoXys6fSBm YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHBnYWNf c2F2ZV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyAtbXphcmNoICIK K2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDx2ZWNpbnRyaW4uaD4KK2ludAorbWFpbiAoKQorewordW5z aWduZWQgbG9uZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAg fTsKKyAgIHVuc2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2 KSkpID0geyAwIH07CisgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoMTYpKSkgPSB7IDAgfTsKKyAgIGMgPSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChhLCBiLCBjKTsK KyAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3Ry eV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNp Y3NfX216YXJjaF89eWVzCitlbHNlCisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3Nf X216YXJjaF89bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq ZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorQ0ZMQUdTPSIk cGdhY19zYXZlX0NGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8i ID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hf IiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXph cmNoXyIgPSB4InllcyI7IHRoZW4KKyAgQ0ZMQUdTX0NSQz0iLW16YXJjaCAiCisgIHBnYWNfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF89eWVzCitmaQorCisgICAgICAgICAgICBpZiB0 ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8iICE9IHgieWVzIjsg dGhlbgorICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSwgdmVjX2dm bXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LW16YXJjaCAtbWFyY2g9ejEzIiA+JjUKKyRhc19l Y2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSwgdmVj X2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LW16YXJjaCAtbWFyY2g9ejEzLi4uICIgPiY2 OyB9CitpZiAke3BnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hf ejEzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK KyAgcGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIC1t emFyY2ggLW1hcmNoPXoxMyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDx2ZWNpbnRyaW4uaD4KK2lu dAorbWFpbiAoKQorewordW5zaWduZWQgbG9uZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgIHVuc2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRl X18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRy aWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgIGMgPSB2ZWNfZ2Ztc3VtX2Fj Y3VtXzEyOChhLCBiLCBjKTsKKyAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FD RU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hfejEzPXllcworZWxzZQorICBwZ2Fj X2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMz1ubworZmkKK3Jt IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0 JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIgor ZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdh Y19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoX19tYXJjaF96MTMiID4mNQorJGFz X2VjaG8gIiRwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3ox MyIgPiY2OyB9CitpZiB0ZXN0IHgiJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216 YXJjaF9fbWFyY2hfejEzIiA9IHgieWVzIjsgdGhlbgorICBDRkxBR1NfQ1JDPSItbXphcmNoIC1t YXJjaD16MTMiCisgIHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hf ejEzPXllcworZmkKKworICAgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAg ZmkKKyAgZmkKK2ZpCisKIAogCiAjIFNlbGVjdCBDUkMtMzJDIGltcGxlbWVudGF0aW9uLgpAQCAt MTgxMjcsOSArMTgzNjQsMjEgQEAgaWYgdGVzdCB4IiRVU0VfU0xJQ0lOR19CWV84X0NSQzMyQyIg PSB4IiIgJiYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDIiA9IHgiIiAmJgogICAgICAgICAgIGlm IHRlc3QgeCIkcGdhY19sb29uZ2FyY2hfY3JjMzJjX2ludHJpbnNpY3MiID0geCJ5ZXMiOyB0aGVu CiAgICAgICAgICAgICBVU0VfTE9PTkdBUkNIX0NSQzMyQz0xCiAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1ieS04IGFsZ29yaXRobSwgd2hpY2ggZG9l c24ndCByZXF1aXJlIGFueQotICAgICAgICAgICAgIyBzcGVjaWFsIENQVSBzdXBwb3J0LgotICAg ICAgICAgICAgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkM9MQorICAgICAgICAgICAgIyBVc2UgUzM5 MFggdmVjdG9yIGV4dGVuc2lvbi4KKyAgICAgICAgICAgIGlmICh0ZXN0IHgiJHBnYWNfczM5MHhf dmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXyIgPSB4InllcyIgfHwKKyAgICAgICAgICAgICAg IHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoXyIgPSB4InllcyIp OyB0aGVuCisgICAgICAgICAgICAgIFVTRV9TMzkwWF9DUkMzMkM9MQorICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAjIFVzZSBTMzkwWCB2ZWN0b3IgZXh0ZW5zaW9uIHdpdGggcnVudGlt ZSBjaGVjay4KKyAgICAgICAgICAgICAgaWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRy aW5zaWNzX19menZlY3Rvcl9fbWFyY2hfejEzIiA9IHgieWVzIiB8fAorICAgICAgICAgICAgICAg dGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMyIg PSB4InllcyI7IHRoZW4KKyAgICAgICAgICAgICAgVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJ TUVfQ0hFQ0s9MQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIyBmYWxsIGJh Y2sgdG8gc2xpY2luZy1ieS04IGFsZ29yaXRobSwgd2hpY2ggZG9lc24ndCByZXF1aXJlIGFueQor ICAgICAgICAgICAgICAgICMgc3BlY2lhbCBDUFUgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICBV U0VfU0xJQ0lOR19CWV84X0NSQzMyQz0xCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBm aQogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICBmaQpAQCAtMTgxODAsMTIgKzE4NDI5 LDMwIEBAICRhc19lY2hvICIjZGVmaW5lIFVTRV9MT09OR0FSQ0hfQ1JDMzJDIDEiID4+Y29uZmRl ZnMuaAogICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBMb29uZ0FyY2ggQ1JDQyBpbnN0cnVjdGlvbnMiID4mNQogJGFzX2VjaG8gIkxvb25n QXJjaCBDUkNDIGluc3RydWN0aW9ucyIgPiY2OyB9CiAgICAgICAgIGVsc2UKKyAgICAgICAgICBp ZiB0ZXN0IHgiJFVTRV9TMzkwWF9DUkMzMkMiID0geCIxIjsgdGhlbgorCiskYXNfZWNobyAiI2Rl ZmluZSBVU0VfUzM5MFhfQ1JDMzJDIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICBQR19D UkMzMkNfT0JKUz0icGdfY3JjMzJjX3MzOTB4Lm8gcGdfY3JjMzJjX3NiOC5vIgorICAgICAgICAg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IFMzOTBY IFZlY3RvciBpbnN0cnVjdGlvbnMgZm9yIENSQyIgPiY1CiskYXNfZWNobyAiUzM5MFggVmVjdG9y IGluc3RydWN0aW9ucyBmb3IgQ1JDIiA+JjY7IH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAg ICBpZiB0ZXN0IHgiJFVTRV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLIiA9IHgiMSI7 IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVf Q0hFQ0sgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICAgICAgUEdfQ1JDMzJDX09CSlM9InBn X2NyYzMyY19zMzkweC5vIHBnX2NyYzMyY19zMzkweF9jaG9vc2UubyBwZ19jcmMzMmNfc2I4Lm8i CisgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZvciBDUkMgd2l0aCBydW50aW1lIGNo ZWNrIiA+JjUKKyRhc19lY2hvICJTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZvciBDUkMgd2l0 aCBydW50aW1lIGNoZWNrIiA+JjY7IH0KKyAgICAgICAgICAgIGVsc2UKIAogJGFzX2VjaG8gIiNk ZWZpbmUgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMgMSIgPj5jb25mZGVmcy5oCiAKLSAgICAgICAg ICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgotICAgICAgICAgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBzbGljaW5nLWJ5LTgiID4mNQor ICAgICAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgorICAgICAgICAg ICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogc2xp Y2luZy1ieS04IiA+JjUKICRhc19lY2hvICJzbGljaW5nLWJ5LTgiID4mNjsgfQorICAgICAgICAg ICAgZmkKKyAgICAgICAgICBmaQogICAgICAgICBmaQogICAgICAgZmkKICAgICBmaQpkaWZmIC0t Z2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDdlYTkxZDU2YWRiLi4wMzcx MTQ4NzFkZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAt MjAzNCw3ICsyMDM0LDcgQEAgUEdBQ19IQVZFX0dDQ19fU1lOQ19JTlQzMl9DQVMKIFBHQUNfSEFW RV9HQ0NfX1NZTkNfSU5UNjRfQ0FTCiBQR0FDX0hBVkVfR0NDX19BVE9NSUNfSU5UMzJfQ0FTCiBQ R0FDX0hBVkVfR0NDX19BVE9NSUNfSU5UNjRfQ0FTCi0KK1BHQUNfSEFWRV9HQ0NfX0FUT01JQ19T VE9SRV9OCiAKICMgQ2hlY2sgZm9yIHg4NiBjcHVpZCBpbnN0cnVjdGlvbgogQUNfQ0FDSEVfQ0hF Q0soW2ZvciBfX2dldF9jcHVpZF0sIFtwZ2FjX2N2X19nZXRfY3B1aWRdLApAQCAtMjEzOCw2ICsy MTM4LDMwIEBAIGZpCiAjIHdpdGggdGhlIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuCiBQR0FDX0xP T05HQVJDSF9DUkMzMkNfSU5UUklOU0lDUygpCiAKKyMgQ2hlY2sgZm9yIFMzOTBYIFZlY3RvciBp bnRyaW5zaWNzIHRvIGRvIENSQyBjYWxjdWxhdGlvbnMuCisjIAorIyBGaXJzdCBjaGVjayBmb3Ig dGhlIGhvc3QgY3B1CitpZiB0ZXN0IHgiJGhvc3RfY3B1IiA9IHgiczM5MHgiOyB0aGVuCisgICMg U2Vjb25kIGNoZWNrIGlmIHdlIGhhdmUgYXRvbWljIHN0b3JlCisgIGlmIHRlc3QgeCIkcGdhY19j dl9nY2NfYXRvbWljX3N0b3JlX24iID0geCJ5ZXMiOyB0aGVuCisgICAgIyBUaGlyZCBjaGVjayBp ZiB3ZSBoYXZlIGEgY29tcGlsZXIgd2l0aCBiYWQgaW50cmluc2ljcworICAgIFBHQUNfUzM5MFhf QkFEX1ZFQ1RPUl9JTlRSSU5TSUNTKCkKKyAgICBpZiB0ZXN0IHgiJHBnYWNfczM5MHhfYmFkX3Zl Y3Rvcl9pbnRyaW5zaWNzIiAhPSB4InllcyI7IHRoZW4KKyAgICAgICMgRmluYWxseSBjaGVjayBm b3IgYWxsIHBvc3NpYmxlIGNmbGFnIGNvbWJpbmF0aW9ucworICAgICAgUEdBQ19TMzkwWF9WRUNU T1JfVlhfSU5UUklOU0lDUyhbLWZ6dmVjdG9yXSwgW10pCisgICAgICBpZiB0ZXN0IHgiJHBnYWNf czM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXyIgIT0geCJ5ZXMiOyB0aGVuCisgICAg ICAgIFBHQUNfUzM5MFhfVkVDVE9SX1ZYX0lOVFJJTlNJQ1MoWy1menZlY3Rvcl0sIFstbWFyY2g9 ejEzXSkKKyAgICAgICAgaWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19m enZlY3Rvcl9fbWFyY2hfejEzIiAhPSB4InllcyI7IHRoZW4KKyAgICAgICAgICBQR0FDX1MzOTBY X1ZFQ1RPUl9WWF9JTlRSSU5TSUNTKFstbXphcmNoXSwgW10pCisgICAgICAgICAgICBpZiB0ZXN0 IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8iICE9IHgieWVzIjsgdGhl bgorICAgICAgICAgICAgICBQR0FDX1MzOTBYX1ZFQ1RPUl9WWF9JTlRSSU5TSUNTKFstbXphcmNo XSwgWy1tYXJjaD16MTNdKQorICAgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisg ICAgZmkKKyAgZmkKK2ZpCisKIEFDX1NVQlNUKENGTEFHU19DUkMpCiAKICMgU2VsZWN0IENSQy0z MkMgaW1wbGVtZW50YXRpb24uCkBAIC0yMTg5LDEwICsyMjEzLDIyIEBAIGlmIHRlc3QgeCIkVVNF X1NMSUNJTkdfQllfOF9DUkMzMkMiID0geCIiICYmIHRlc3QgeCIkVVNFX1NTRTQyX0NSQzMyQyIg PSB4IiIgJiYKICAgICAgICAgICAjIExvb25nQXJjaCBDUkNDIGluc3RydWN0aW9ucy4KICAgICAg ICAgICBpZiB0ZXN0IHgiJHBnYWNfbG9vbmdhcmNoX2NyYzMyY19pbnRyaW5zaWNzIiA9IHgieWVz IjsgdGhlbgogICAgICAgICAgICAgVVNFX0xPT05HQVJDSF9DUkMzMkM9MQotICAgICAgICAgIGVs c2UKLSAgICAgICAgICAgICMgZmFsbCBiYWNrIHRvIHNsaWNpbmctYnktOCBhbGdvcml0aG0sIHdo aWNoIGRvZXNuJ3QgcmVxdWlyZSBhbnkKLSAgICAgICAgICAgICMgc3BlY2lhbCBDUFUgc3VwcG9y dC4KLSAgICAgICAgICAgIFVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDPTEKKyAgICAgICAgICBlbHNl ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICMgVXNlIFMzOTBYIHZlY3RvciBleHRlbnNpb24u CisgICAgICAgICAgICBpZiAodGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19m enZlY3Rvcl8iID0geCJ5ZXMiIHx8CisgICAgICAgICAgICAgICB0ZXN0IHgiJHBnYWNfczM5MHhf dmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8iID0geCJ5ZXMiKTsgdGhlbgorICAgICAgICAgICAg ICBVU0VfUzM5MFhfQ1JDMzJDPTEKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgIyBV c2UgUzM5MFggdmVjdG9yIGV4dGVuc2lvbiB3aXRoIHJ1bnRpbWUgY2hlY2suCisgICAgICAgICAg ICAgIGlmIHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfX21h cmNoX3oxMyIgPSB4InllcyIgfHwgCisgICAgICAgICAgICAgICB0ZXN0IHgiJHBnYWNfczM5MHhf dmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hfejEzIiA9IHgieWVzIjsgdGhlbgorICAg ICAgICAgICAgICBVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSz0xCisgICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAjIGZhbGwgYmFjayB0byBzbGljaW5nLWJ5LTgg YWxnb3JpdGhtLCB3aGljaCBkb2Vzbid0IHJlcXVpcmUgYW55CisgICAgICAgICAgICAgICAgIyBz cGVjaWFsIENQVSBzdXBwb3J0LgorICAgICAgICAgICAgICAgIFVTRV9TTElDSU5HX0JZXzhfQ1JD MzJDPTEKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCiAgICAgICAgICAgZmkKICAg ICAgICAgZmkKICAgICAgIGZpCkBAIC0yMjI3LDkgKzIyNjMsMjEgQEAgZWxzZQogICAgICAgICAg IFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfbG9vbmdhcmNoLm8iCiAgICAgICAgICAgQUNfTVNH X1JFU1VMVChMb29uZ0FyY2ggQ1JDQyBpbnN0cnVjdGlvbnMpCiAgICAgICAgIGVsc2UKLSAgICAg ICAgICBBQ19ERUZJTkUoVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMsIDEsIFtEZWZpbmUgdG8gMSB0 byB1c2Ugc29mdHdhcmUgQ1JDLTMyQyBpbXBsZW1lbnRhdGlvbiAoc2xpY2luZy1ieS04KS5dKQot ICAgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfc2I4Lm8iCi0gICAgICAgICAgQUNf TVNHX1JFU1VMVChzbGljaW5nLWJ5LTgpCisgICAgICAgICAgaWYgdGVzdCB4IiRVU0VfUzM5MFhf Q1JDMzJDIiA9IHgiMSI7IHRoZW4gCisgICAgICAgICAgICBBQ19ERUZJTkUoVVNFX1MzOTBYX0NS QzMyQywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZv ciBDUkMuXSkKKyAgICAgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfczM5MHgubyBw Z19jcmMzMmNfc2I4Lm8iCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFMzOTBYIFZlY3RvciBp bnN0cnVjdGlvbnMgZm9yIENSQykKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiB0ZXN0 IHgiJFVTRV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLIiA9IHgiMSI7IHRoZW4gCisg ICAgICAgICAgICAgIEFDX0RFRklORShVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVD SywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIHdpdGgg cnVudGltZSBjaGVjayBmb3IgQ1JDLl0pCisgICAgICAgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJw Z19jcmMzMmNfczM5MHgubyBwZ19jcmMzMmNfczM5MHhfY2hvb3NlLm8gcGdfY3JjMzJjX3NiOC5v IgorICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFMzOTBYIFZlY3RvciBpbnN0cnVjdGlvbnMg Zm9yIENSQyB3aXRoIHJ1bnRpbWUgY2hlY2spCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgIEFDX0RFRklORShVU0VfU0xJQ0lOR19CWV84X0NSQzMyQywgMSwgW0RlZmluZSB0byAxIHRv IHVzZSBzb2Z0d2FyZSBDUkMtMzJDIGltcGxlbWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLl0pCisg ICAgICAgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfc2I4Lm8iCisgICAgICAgICAg ICAgIEFDX01TR19SRVNVTFQoc2xpY2luZy1ieS04KQorICAgICAgICAgICAgZmkKKyAgICAgICAg ICBmaQogICAgICAgICBmaQogICAgICAgZmkKICAgICBmaQpkaWZmIC0tZ2l0IGEvbWVzb24uYnVp bGQgYi9tZXNvbi5idWlsZAppbmRleCAxMmRlNWU4MGMzMS4uNjgwNGY2NWNiYzAgMTAwNjQ0Ci0t LSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0yMjU5LDYgKzIyNTksMTIgQEAg X19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCZ2YWwsICZleHBlY3QsIDM3LCAwLCBfX0FUT01J Q19TRVFfQ1NULCBfX0FUT01JQ19SRUwKIGludDY0X3QgdmFsID0gMDsKIGludDY0X3QgZXhwZWN0 ID0gMDsKIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigmdmFsLCAmZXhwZWN0LCAzNywgMCwg X19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfUkVMQVhFRCk7JycnfSwKKworICB7J25hbWUnOiAn SEFWRV9HQ0NfX0FUT01JQ19TVE9SRV9OJywKKyAgICdkZXNjJzogJ19fYXRvbWljX3N0b3JlX24o aW50NjQpJywKKyAgICd0ZXN0JzogJycnCitpbnQ2NF90IHZhbCA9IDA7CitfX2F0b21pY19zdG9y ZV9uKCZ2YWwsMSxfX0FUT01JQ19TRVFfQ1NUKTsnJyd9LAogXQogCiBmb3JlYWNoIGNoZWNrIDog YXRvbWljX2NoZWNrcwpAQCAtMjU0Nyw2ICsyNTUzLDQzIEBAIGludCBtYWluKHZvaWQpCiAgICAg aGF2ZV9vcHRpbWl6ZWRfY3JjID0gdHJ1ZQogICBlbmRpZgogCitlbGlmIGhvc3RfY3B1ID09ICdz MzkweCcgYW5kIGNkYXRhLmdldCgnSEFWRV9HQ0NfX0FUT01JQ19TVE9SRV9OJykgPT0gMAorICBt ZXNzYWdlKCdzMzkweCBjcmMzMmMtdnggZXh0ZW50aW9uIGRpc2FibGVkIGR1ZSB0byBtaXNzaW5n IGBfX3N0b3JlX2F0b21pY19uKClgJykKKworZWxpZiBob3N0X2NwdSA9PSAnczM5MHgnIGFuZCBj Yy5nZXRfaWQoKSA9PSAnY2xhbmcnIGFuZCBjYy52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc+ PTE4LjAuMCcpIGFuZCBjYy52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc8MTkuMS4yJykgCisg IG1lc3NhZ2UoJ1MzOTBYIENSQzMyQy1WWCBvcHRpbWl6YXRpb25zIGFyZSBicm9rZW4gZHVlIHRv IGNvbXBpbGVyIGJ1ZyBpbiBDbGFuZyB2ZXJzaW9uczogMTguMC4wIDw9IGNsYW5nX3ZlcnNpb24g PCAxOS4xLjInKQorICBtZXNzYWdlKCdVbmxlc3MgYW5vdGhlciBjb21waWxlciBvciBjb21waWxl ciB2ZXJzaW9uIGlzIHVzZWQgdGhlIFMzOTBYIENSQzMyQy1WWCBvcHRpbWlzYXRpb24gaXMgZGlz YWJsZWQuJykKKworZWxpZiBob3N0X2NwdSA9PSAnczM5MHgnCisgIGlmIGNjLmdldF9pZCgpID09 ICdjbGFuZycKKyAgICBWR0ZNQUZMQUc9Jy1menZlY3RvcicKKyAgZWxzZQorICAgIFZHRk1BRkxB Rz0nLW16YXJjaCcKKyAgZW5kaWYKKworICBwcm9nID0gJycnCisjaW5jbHVkZSA8dmVjaW50cmlu Lmg+CitpbnQgbWFpbih2b2lkKSB7CisgICAgLy8gdGVzdCBmb3IgdmVjdG9yIGV4dGVuc2lvbgor ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkp ID0geyAwIH07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGIgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVfXygo dmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICBjID0gdmVjX2dmbXN1bV9hY2N1bV8xMjgo YSwgYiwgYyk7CisgICAgcmV0dXJuIGNbMF07Cit9JycnCisgIGlmIGNjLmxpbmtzKHByb2csIG5h bWU6ICdzMzkweF92ZWN0b3JfdngnLCBhcmdzOiB0ZXN0X2NfYXJncyArIFtWR0ZNQUZMQUddKQor ICAgICMgVXNlIFMzOTBYIENSQyBFeHRlbnNpb24gdW5jb25kaXRpb25hbGx5CisgICAgY2RhdGEu c2V0KCdVU0VfUzM5MFhfQ1JDMzJDJywxKQorICAgIGNmbGFnc19jcmMgKz0gVkdGTUFGTEFHCisg ICAgaGF2ZV9vcHRpbWl6ZWRfY3JjID0gdHJ1ZQorICBlbGlmIGNjLmxpbmtzKHByb2csIG5hbWU6 ICdzMzkweF92ZWN0b3JfdngrbWFyY2g9ejEzJywgYXJnczogdGVzdF9jX2FyZ3MgKyBbVkdGTUFG TEFHLCAnLW1hcmNoPXoxMyddKQorICAgICMgVXNlIFMzOTBYIENSQyBFeHRlbnNpb24sIHdpdGgg cnVudGltZSBjaGVjaworICAgIGNkYXRhLnNldCgnVVNFX1MzOTBYX0NSQzMyQycsZmFsc2UpCisg ICAgY2RhdGEuc2V0KCdVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSycsMSkKKyAg ICBjZmxhZ3NfY3JjICs9IFZHRk1BRkxBRworICAgIGNmbGFnc19jcmMgKz0gJy1tYXJjaD16MTMn CisgICAgaGF2ZV9vcHRpbWl6ZWRfY3JjID0gdHJ1ZQorICBlbmRpZgogZW5kaWYKIAogaWYgbm90 IGhhdmVfb3B0aW1pemVkX2NyYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmgu aW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCBjM2NjOWZhODU2ZC4uNmRlZWQx NGViZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9p bmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC02NjUsNiArNjY1LDEyIEBACiAvKiBEZWZpbmUgdG8g MSB0byB1c2UgQVJNdjggQ1JDIEV4dGVuc2lvbiB3aXRoIGEgcnVudGltZSBjaGVjay4gKi8KICN1 bmRlZiBVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSwogCisvKiBEZWZpbmUgdG8g MSB0byB1c2UgUzM5MFggQ1JDIEV4dGVuc2lvbi4gKi8KKyN1bmRlZiBVU0VfUzM5MFhfQ1JDMzJD CisKKy8qIERlZmluZSB0byAxIHRvIHVzZSBBUk12OCBDUkMgRXh0ZW5zaW9uIHdpdGggYSBydW50 aW1lIGNoZWNrLiAqLworI3VuZGVmIFVTRV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNL CisKIC8qIERlZmluZSB0byAxIHRvIGJ1aWxkIHdpdGggYXNzZXJ0aW9uIGNoZWNrcy4gKC0tZW5h YmxlLWNhc3NlcnQpICovCiAjdW5kZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wb3J0L3BnX2NyYzMyYy5oIGIvc3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMz MmMuaAppbmRleCA4MjMxM2JiN2ZjZi4uYjk1MjRhNWMyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BvcnQvcGdfY3JjMzJjLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMzMmMuaApA QCAtMTQyLDYgKzE0MiwyNCBAQCBleHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3NiOChw Z19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQogZXh0ZXJuIHBnX2Ny YzMyYyAoKnBnX2NvbXBfY3JjMzJjKSAocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwg c2l6ZV90IGxlbik7CiBleHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX2FybXY4KHBnX2Ny YzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwogCisjZWxpZiBkZWZpbmVk KFVTRV9TMzkwWF9DUkMzMkMpCisKKyNkZWZpbmUgQ09NUF9DUkMzMkMoY3JjLCBkYXRhLCBsZW4p CQkJCQkJCVwKKwkoKGNyYykgPSBwZ19jb21wX2NyYzMyY19zMzkweCgoY3JjKSwgKGRhdGEpLCAo bGVuKSkpCisjZGVmaW5lIEZJTl9DUkMzMkMoY3JjKSAoKGNyYykgPSBwZ19ic3dhcDMyKGNyYykg XiAweEZGRkZGRkZGKQorCitleHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3NiOChwZ19j cmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKK2V4dGVybiBwZ19jcmMz MmMgcGdfY29tcF9jcmMzMmNfczM5MHgocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwg c2l6ZV90IGxlbik7CisKKyNlbGlmIGRlZmluZWQoVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJ TUVfQ0hFQ0spCisjZGVmaW5lIENPTVBfQ1JDMzJDKGNyYywgZGF0YSwgbGVuKQkJCQkJCQlcCisJ KChjcmMpID0gcGdfY29tcF9jcmMzMmMoKGNyYyksIChkYXRhKSwgKGxlbikpKQorI2RlZmluZSBG SU5fQ1JDMzJDKGNyYykgKChjcmMpID0gcGdfYnN3YXAzMihjcmMpIF4gMHhGRkZGRkZGRikKKwor ZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19zYjgocGdfY3JjMzJjIGNyYywgY29uc3Qg dm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CitleHRlcm4gcGdfY3JjMzJjICgqcGdfY29tcF9jcmMz MmMpIChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKK2V4dGVy biBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfczM5MHgocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9p ZCAqZGF0YSwgc2l6ZV90IGxlbik7CisKICNlbHNlCiAvKgogICogVXNlIHNsaWNpbmctYnktOCBh bGdvcml0aG0uCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9NYWtlZmlsZSBiL3NyYy9wb3J0L01ha2Vm aWxlCmluZGV4IDQyNzQ5NDlkZmE0Li43OWJjNTU1MTQyMiAxMDA2NDQKLS0tIGEvc3JjL3BvcnQv TWFrZWZpbGUKKysrIGIvc3JjL3BvcnQvTWFrZWZpbGUKQEAgLTg1LDEwICs4NSwxMSBAQCBsaWJw Z3BvcnQuYTogJChPQkpTKQogCXJtIC1mICRACiAJJChBUikgJChBUk9QVCkgJEAgJF4KIAotIyBh bGwgdmVyc2lvbnMgb2YgcGdfY3JjMzJjX2FybXY4Lm8gbmVlZCBDRkxBR1NfQ1JDCisjIGFsbCB2 ZXJzaW9ucyBvZiBwZ19jcmMzMmNfYXJtdjgubyBhbmQgcGdfY3JjMzJjX3MzOTB4Lm8gbmVlZCBD RkxBR1NfQ1JDCiBwZ19jcmMzMmNfYXJtdjgubzogQ0ZMQUdTKz0kKENGTEFHU19DUkMpCiBwZ19j cmMzMmNfYXJtdjhfc2hsaWIubzogQ0ZMQUdTKz0kKENGTEFHU19DUkMpCiBwZ19jcmMzMmNfYXJt djhfc3J2Lm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQorcGdfY3JjMzJjX3MzOTB4Lm86IENGTEFH Uys9JChDRkxBR1NfQ1JDKQogCiAjCiAjIFNoYXJlZCBsaWJyYXJ5IHZlcnNpb25zIG9mIG9iamVj dCBmaWxlcwpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvbWVzb24uYnVpbGQgYi9zcmMvcG9ydC9tZXNv bi5idWlsZAppbmRleCBmYzdiMDU5ZmVlNS4uZDgyODRhMzFmNDcgMTAwNjQ0Ci0tLSBhL3NyYy9w b3J0L21lc29uLmJ1aWxkCisrKyBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCkBAIC0xMDAsNiArMTAw LDEzIEBAIHJlcGxhY2VfZnVuY3NfcG9zID0gWwogICAjIGxvb25nYXJjaAogICBbJ3BnX2NyYzMy Y19sb29uZ2FyY2gnLCAnVVNFX0xPT05HQVJDSF9DUkMzMkMnXSwKIAorICAjIHMzOTB4CisgIFsn cGdfY3JjMzJjX3MzOTB4JywgJ1VTRV9TMzkwWF9DUkMzMkMnLCdjcmMnXSwKKyAgWydwZ19jcmMz MmNfczM5MHgnLCAnVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0snLCAnY3JjJ10s CisgIFsncGdfY3JjMzJjX3MzOTB4X2Nob29zZScsICdVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVO VElNRV9DSEVDSyddLAorICBbJ3BnX2NyYzMyY19zYjgnLCAnVVNFX1MzOTBYX0NSQzMyQyddLAor ICBbJ3BnX2NyYzMyY19zYjgnLCAnVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sn XSwKKwogICAjIGdlbmVyaWMgZmFsbGJhY2sKICAgWydwZ19jcmMzMmNfc2I4JywgJ1VTRV9TTElD SU5HX0JZXzhfQ1JDMzJDJ10sCiBdCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19jcmMzMmNfczM5 MHguYyBiL3NyYy9wb3J0L3BnX2NyYzMyY19zMzkweC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4xNjI3ZWY5Mjk3YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9wb3J0 L3BnX2NyYzMyY19zMzkweC5jCkBAIC0wLDAgKzEsMjUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBwZ19jcmMzMmNfczM5MHguYworICoJICBIYXJkd2FyZS1hY2NlbGVyYXRlZCBDUkMt MzJDIHZhcmlhbnRzIGZvciBMaW51eCBvbiBJQk0gWiAmIExpbnV4T05FCisgKgorICogVGhpcyBj b2RlIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgSGVuZHJpayBCcnVlY2tuZXIKKyAqIDxydWVj a25lckBsaW51eC5pYm0uY29tPiBmb3IgdXNlIGluIHRoZSBMaW51eCBrZXJuZWwgYW5kIGhhcyBi ZWVuCisgKiByZWxpY2Vuc2VkIHVuZGVyIHRoZSBwb3N0Z3Jlc3FsLWxpY2Vuc2UuCisgKgorICog VXNlIHRoZSB6L0FyY2hpdGVjdHVyZSBWZWN0b3IgRXh0ZW5zaW9uIEZhY2lsaXR5IHRvIGFjY2Vs ZXJhdGUgdGhlCisgKiBjb21wdXRpbmcgb2YgYml0cmVmbGVjdGVkIENSQy0zMkMgY2hlY2tzdW1z LgorICoKKyAqIFRoaXMgQ1JDLTMyQyBpbXBsZW1lbnRhdGlvbiBhbGdvcml0aG0gaXMgYml0cmVm bGVjdGVkIGFuZCBwcm9jZXNzZXMKKyAqIHRoZSBsZWFzdC1zaWduaWZpY2FudCBiaXQgZmlyc3Qg KExpdHRsZS1FbmRpYW4pLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNSwgSW50ZXJuYXRpb25h bCBCdXNpbmVzcyBNYWNoaW5lcyAoSUJNKQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNy Yy9wb3J0L3BnX2NyYzMyY19zMzkweC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp bmNsdWRlICJjLmgiCisjaW5jbHVkZSA8dmVjaW50cmluLmg+CisKKyNpbmNsdWRlICJwb3J0L3Bn X2NyYzMyYy5oIgorCisjZGVmaW5lIFZYX01JTl9MRU4gNjQKKyNkZWZpbmUgVlhfQUxJR05NRU5U IDE2TAorI2RlZmluZSBWWF9BTElHTl9NQVNLIChWWF9BTElHTk1FTlQgLSAxKQorCit0eXBlZGVm IHVuc2lnbmVkIGNoYXIgdXYxNnFpIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpOwor dHlwZWRlZiB1bnNpZ25lZCBpbnQgdXY0c2kgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYp KSk7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1djJkaSBfX2F0dHJpYnV0ZV9fKCh2ZWN0 b3Jfc2l6ZSgxNikpKTsKKworc3RhdGljIHVpbnQzMl90CitjcmMzMl9sZV92Z2ZtXzE2KHVpbnQz Ml90IGNyYywgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgbGVuKQoreworCS8qCisJ ICogVGhlIENSQy0zMkMgY29uc3RhbnQgYmxvY2sgY29udGFpbnMgcmVkdWN0aW9uIGNvbnN0YW50 cyB0byBmb2xkIGFuZAorCSAqIHByb2Nlc3MgcGFydGljdWxhciBjaHVua3Mgb2YgdGhlIGlucHV0 IGRhdGEgc3RyZWFtIGluIHBhcmFsbGVsLgorCSAqCisJICogRm9yIHRoZSBDUkMtMzJDIHZhcmlh bnRzLCB0aGUgY29uc3RhbnRzIGFyZSBwcmVjb21wdXRlZCBhY2NvcmRpbmcgdG8KKwkgKiB0aGVz ZSBkZWZpbml0aW9uczoKKwkgKgorCSAqICAgICAgUjEgPSBbKHg0KjEyOCszMiBtb2QgUCcoeCkg PDwgMzIpXScgPDwgMQorCSAqICAgICAgUjIgPSBbKHg0KjEyOC0zMiBtb2QgUCcoeCkgPDwgMzIp XScgPDwgMQorCSAqICAgICAgUjMgPSBbKHgxMjgrMzIgbW9kIFAnKHgpIDw8IDMyKV0nICAgPDwg MQorCSAqICAgICAgUjQgPSBbKHgxMjgtMzIgbW9kIFAnKHgpIDw8IDMyKV0nICAgPDwgMQorCSAq ICAgICAgUjUgPSBbKHg2NCBtb2QgUCcoeCkgPDwgMzIpXScgICAgICAgPDwgMQorCSAqICAgICAg UjYgPSBbKHgzMiBtb2QgUCcoeCkgPDwgMzIpXScgICAgICAgPDwgMQorCSAqCisJICogICAgICBU aGUgYml0cmVmbGVjdGVkIEJhcnJldCByZWR1Y3Rpb24gY29uc3RhbnQsIHUnLCBpcyBkZWZpbmVk IGFzCisJICogICAgICB0aGUgYml0IHJldmVyc2FsIG9mIGZsb29yKHgqKjY0IC8gUCh4KSkuCisJ ICoKKwkgKiAgICAgIHdoZXJlIFAoeCkgaXMgdGhlIHBvbHlub21pYWwgaW4gdGhlIG5vcm1hbCBk b21haW4gYW5kIHRoZSBQJyh4KSBpcyB0aGUKKwkgKiAgICAgIHBvbHlub21pYWwgaW4gdGhlIHJl dmVyc2VkIChiaXRyZWZsZWN0ZWQpIGRvbWFpbi4KKwkgKgorCSAqIENSQy0zMkMgKENhc3RhZ25v bGkpIHBvbHlub21pYWxzOgorCSAqCisJICogICAgICBQKHgpICA9IDB4MUVEQzZGNDEKKwkgKiAg ICAgIFAnKHgpID0gMHg4MkY2M0I3OAorCSAqLworCWNvbnN0IHV2MTZxaSBwZXJtX2xlMmJlID0g ezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDB9OyAv KiBCRS0+TEUgbWFzayAqLworCWNvbnN0IHV2MmRpIHIycjEgPSB7MHgwOWU0YWRkZjgsIDB4NzQw ZWVmMDJ9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSMiwgUjEgKi8K Kwljb25zdCB1djJkaSByNHIzID0gezB4MTRjZDAwYmQ2LCAweGYyMGMwZGZlfTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUjQsIFIzICovCisJY29uc3QgdXYyZGkgcjUg PSB7MCwgMHgwZGQ0NWFhYjh9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIFI1ICovCisJY29uc3QgdXYyZGkgcnVfcG9seSA9IHswLCAweDBkZWE3MTNm MX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHUnICovCisJ Y29uc3QgdXYyZGkgY3JjX3BvbHkgPSB7MCwgMHgxMDVlYzc2ZjB9OyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFAnKHgpIDw8IDEgKi8KKwl1djJkaSB2MCA9IHsw LCAwfTsKKwl1djJkaSB2MSA9IHswLCAwfTsKKwl1djJkaSB2MiA9IHswLCAwfTsKKwl1djJkaSB2 MyA9IHswLCAwfTsKKwl1djJkaSB2NCA9IHswLCAwfTsKKwl1djE2cWkgdjkgPSB7MCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH07CisKKwkvKgorCSAqIExvYWQg dGhlIGluaXRpYWwgQ1JDIHZhbHVlLgorCSAqCisJICogVGhlIENSQyB2YWx1ZSBpcyBsb2FkZWQg aW50byB0aGUgcmlnaHRtb3N0IHdvcmQgb2YgdGhlCisJICogdmVjdG9yIHJlZ2lzdGVyIGFuZCBp cyBsYXRlciBYT1JlZCB3aXRoIHRoZSBMU0IgcG9ydGlvbgorCSAqIG9mIHRoZSBsb2FkZWQgaW5w dXQgZGF0YS4KKwkgKi8KKwl2MCA9ICh1djJkaSl2ZWNfaW5zZXJ0KGNyYywgKHV2NHNpKXYwLCAz KTsKKworCS8qIExvYWQgYSA2NC1ieXRlIGRhdGEgY2h1bmsgYW5kIFhPUiB3aXRoIENSQyAqLwor CXYxID0gdmVjX3Blcm0oKCh1djJkaSAqKWJ1ZilbMF0sICgodXYyZGkgKilidWYpWzBdLCBwZXJt X2xlMmJlKTsKKwl2MiA9IHZlY19wZXJtKCgodXYyZGkgKilidWYpWzFdLCAoKHV2MmRpICopYnVm KVsxXSwgcGVybV9sZTJiZSk7CisJdjMgPSB2ZWNfcGVybSgoKHV2MmRpICopYnVmKVsyXSwgKCh1 djJkaSAqKWJ1ZilbMl0sIHBlcm1fbGUyYmUpOworCXY0ID0gdmVjX3Blcm0oKCh1djJkaSAqKWJ1 ZilbM10sICgodXYyZGkgKilidWYpWzNdLCBwZXJtX2xlMmJlKTsKKworCXYxIF49IHYwOworCWJ1 ZiArPSA2NDsKKwlsZW4gLT0gNjQ7CisKKwl3aGlsZSAobGVuID49IDY0KQorCXsKKwkJLyogTG9h ZCB0aGUgbmV4dCA2NC1ieXRlIGRhdGEgY2h1bmsgKi8KKwkJdXYxNnFpIHBhcnQxID0gdmVjX3Bl cm0oKCh1djE2cWkgKilidWYpWzBdLCAoKHV2MTZxaSAqKWJ1ZilbMF0sIHBlcm1fbGUyYmUpOwor CQl1djE2cWkgcGFydDIgPSB2ZWNfcGVybSgoKHV2MTZxaSAqKWJ1ZilbMV0sICgodXYxNnFpICop YnVmKVsxXSwgcGVybV9sZTJiZSk7CisJCXV2MTZxaSBwYXJ0MyA9IHZlY19wZXJtKCgodXYxNnFp ICopYnVmKVsyXSwgKCh1djE2cWkgKilidWYpWzJdLCBwZXJtX2xlMmJlKTsKKwkJdXYxNnFpIHBh cnQ0ID0gdmVjX3Blcm0oKCh1djE2cWkgKilidWYpWzNdLCAoKHV2MTZxaSAqKWJ1ZilbM10sIHBl cm1fbGUyYmUpOworCisJCS8qCisJCSAqIFBlcmZvcm0gYSBHRigyKSBtdWx0aXBsaWNhdGlvbiBv ZiB0aGUgZG91Ymxld29yZHMgaW4gVjEgd2l0aAorCQkgKiB0aGUgUjEgYW5kIFIyIHJlZHVjdGlv biBjb25zdGFudHMgaW4gVjAuICBUaGUgaW50ZXJtZWRpYXRlIHJlc3VsdAorCQkgKiBpcyB0aGVu IGZvbGRlZCAoYWNjdW11bGF0ZWQpIHdpdGggdGhlIG5leHQgZGF0YSBjaHVuayBpbiBQQVJUMSBh bmQKKwkJICogc3RvcmVkIGluIFYxLiBSZXBlYXQgdGhpcyBzdGVwIGZvciB0aGUgcmVnaXN0ZXIg Y29udGVudHMKKwkJICogaW4gVjIsIFYzLCBhbmQgVjQgcmVzcGVjdGl2ZWx5LgorCQkgKi8KKwkJ djEgPSAodXYyZGkpdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjEsIHBhcnQxKTsKKwkJdjIg PSAodXYyZGkpdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjIsIHBhcnQyKTsKKwkJdjMgPSAo dXYyZGkpdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjMsIHBhcnQzKTsKKwkJdjQgPSAodXYy ZGkpdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjQsIHBhcnQ0KTsKKworCQlidWYgKz0gNjQ7 CisJCWxlbiAtPSA2NDsKKwl9CisKKwkvKgorCSAqIEZvbGQgVjEgdG8gVjQgaW50byBhIHNpbmds ZSAxMjgtYml0IHZhbHVlIGluIFYxLiAgTXVsdGlwbHkgVjEgd2l0aCBSMworCSAqIGFuZCBSNCBh bmQgYWNjdW11bGF0aW5nIHRoZSBuZXh0IDEyOC1iaXQgY2h1bmsgdW50aWwgYSBzaW5nbGUgMTI4 LWJpdAorCSAqIHZhbHVlIHJlbWFpbnMuCisJICovCisJdjEgPSAodXYyZGkpdmVjX2dmbXN1bV9h Y2N1bV8xMjgocjRyMywgdjEsICh1djE2cWkpdjIpOworCXYxID0gKHV2MmRpKXZlY19nZm1zdW1f YWNjdW1fMTI4KHI0cjMsIHYxLCAodXYxNnFpKXYzKTsKKwl2MSA9ICh1djJkaSl2ZWNfZ2Ztc3Vt X2FjY3VtXzEyOChyNHIzLCB2MSwgKHV2MTZxaSl2NCk7CisKKwl3aGlsZSAobGVuID49IDE2KQor CXsKKwkJLyogTG9hZCBuZXh0IGRhdGEgY2h1bmsgKi8KKwkJdjIgPSB2ZWNfcGVybSgqKHV2MmRp ICopYnVmLCAqKHV2MmRpICopYnVmLCBwZXJtX2xlMmJlKTsKKworCQkvKiBGb2xkIG5leHQgZGF0 YSBjaHVuayAqLworCQl2MSA9ICh1djJkaSl2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChyNHIzLCB2MSwg KHV2MTZxaSl2Mik7CisKKwkJYnVmICs9IDE2OworCQlsZW4gLT0gMTY7CisJfQorCisJLyoKKwkg KiBTZXQgdXAgYSB2ZWN0b3IgcmVnaXN0ZXIgZm9yIGJ5dGUgc2hpZnRzLiAgVGhlIHNoaWZ0IHZh bHVlIG11c3QKKwkgKiBiZSBsb2FkZWQgaW4gYml0cyAxLTQgaW4gYnl0ZSBlbGVtZW50IDcgb2Yg YSB2ZWN0b3IgcmVnaXN0ZXIuCisJICogU2hpZnQgYnkgOCBieXRlczogMHg0MAorCSAqIFNoaWZ0 IGJ5IDQgYnl0ZXM6IDB4MjAKKwkgKi8KKworCXY5ID0gdmVjX2luc2VydCgodW5zaWduZWQgY2hh cikweDQwLCB2OSwgNyk7CisKKwkvKgorCSAqIFByZXBhcmUgVjAgZm9yIHRoZSBuZXh0IEdGKDIp IG11bHRpcGxpY2F0aW9uOiBzaGlmdCBWMCBieSA4IGJ5dGVzCisJICogdG8gbW92ZSBSNCBpbnRv IHRoZSByaWdodG1vc3QgZG91Ymxld29yZCBhbmQgc2V0IHRoZSBsZWZ0bW9zdAorCSAqIGRvdWJs ZXdvcmQgdG8gMHgxLgorCSAqLworCXYwID0gdmVjX3NyYihyNHIzLCAodXYyZGkpdjkpOworCXYw WzBdID0gMTsKKworCS8qCisJICogQ29tcHV0ZSBHRigyKSBwcm9kdWN0IG9mIFYxIGFuZCBWMC4g IFRoZSByaWdodG1vc3QgZG91Ymxld29yZAorCSAqIG9mIFYxIGlzIG11bHRpcGxpZWQgd2l0aCBS NC4gIFRoZSBsZWZ0bW9zdCBkb3VibGV3b3JkIG9mIFYxIGlzCisJICogbXVsdGlwbGllZCBieSAw eDEgYW5kIGlzIHRoZW4gWE9SZWQgd2l0aCByaWdodG1vc3QgcHJvZHVjdC4KKwkgKiBJbXBsaWNp dGx5LCB0aGUgaW50ZXJtZWRpYXRlIGxlZnRtb3N0IHByb2R1Y3QgYmVjb21lcyBwYWRkZWQKKwkg Ki8KKwl2MSA9ICh1djJkaSl2ZWNfZ2Ztc3VtXzEyOCh2MCwgdjEpOworCisJLyoKKwkgKiBOb3cg ZG8gdGhlIGZpbmFsIDMyLWJpdCBmb2xkIGJ5IG11bHRpcGx5aW5nIHRoZSByaWdodG1vc3Qgd29y ZAorCSAqIGluIFYxIHdpdGggUjUgYW5kIFhPUiB0aGUgcmVzdWx0IHdpdGggdGhlIHJlbWFpbmlu ZyBiaXRzIGluIFYxLgorCSAqCisJICogVG8gYWNoaWV2ZSB0aGlzIGJ5IGEgc2luZ2xlIFZHRk1B RywgcmlnaHQgc2hpZnQgVjEgYnkgYSB3b3JkCisJICogYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4g VjIgd2hpY2ggaXMgdGhlbiBhY2N1bXVsYXRlZC4gIFVzZSB0aGUKKwkgKiB2ZWN0b3IgdW5wYWNr IGluc3RydWN0aW9uIHRvIGxvYWQgdGhlIHJpZ2h0bW9zdCBoYWxmIG9mIHRoZQorCSAqIGRvdWJs ZXdvcmQgaW50byB0aGUgcmlnaHRtb3N0IGRvdWJsZXdvcmQgZWxlbWVudCBvZiBWMTsgdGhlIG90 aGVyCisJICogaGFsZiBpcyBsb2FkZWQgaW4gdGhlIGxlZnRtb3N0IGRvdWJsZXdvcmQuCisJICog VGhlIHZlY3RvciByZWdpc3RlciB3aXRoIENPTlNUX1I1IGNvbnRhaW5zIHRoZSBSNSBjb25zdGFu dCBpbiB0aGUKKwkgKiByaWdodG1vc3QgZG91Ymxld29yZCBhbmQgdGhlIGxlZnRtb3N0IGRvdWJs ZXdvcmQgaXMgemVybyB0byBpZ25vcmUKKwkgKiB0aGUgbGVmdG1vc3QgcHJvZHVjdCBvZiBWMS4K KwkgKi8KKwl2OSA9IHZlY19pbnNlcnQoKHVuc2lnbmVkIGNoYXIpMHgyMCwgdjksIDcpOworCXYy ID0gdmVjX3NyYih2MSwgKHV2MmRpKXY5KTsKKwl2MSA9IHZlY191bnBhY2tsKCh1djRzaSl2MSk7 IC8qIFNwbGl0IHJpZ2h0bW9zdCBkb3VibGV3b3JkICovCisJdjEgPSAodXYyZGkpdmVjX2dmbXN1 bV9hY2N1bV8xMjgocjUsIHYxLCAodXYxNnFpKXYyKTsKKworCS8qCisJICogQXBwbHkgYSBCYXJy ZXQgcmVkdWN0aW9uIHRvIGNvbXB1dGUgdGhlIGZpbmFsIDMyLWJpdCBDUkMgdmFsdWUuCisJICoK KwkgKiBUaGUgaW5wdXQgdmFsdWVzIHRvIHRoZSBCYXJyZXQgcmVkdWN0aW9uIGFyZSB0aGUgZGVn cmVlLTYzIHBvbHlub21pYWwKKwkgKiBpbiBWMSAoUih4KSksIGRlZ3JlZS0zMiBnZW5lcmF0b3Ig cG9seW5vbWlhbCwgYW5kIHRoZSByZWR1Y3Rpb24KKwkgKiBjb25zdGFudCB1LiAgVGhlIEJhcnJl dCByZWR1Y3Rpb24gcmVzdWx0IGlzIHRoZSBDUkMgdmFsdWUgb2YgUih4KSBtb2QKKwkgKiBQKHgp LgorCSAqCisJICogVGhlIEJhcnJldCByZWR1Y3Rpb24gYWxnb3JpdGhtIGlzIGRlZmluZWQgYXM6 CisJICoKKwkgKiAgICAxLiBUMSh4KSA9IGZsb29yKCBSKHgpIC8geF4zMiApIEdGMk1VTCB1CisJ ICogICAgMi4gVDIoeCkgPSBmbG9vciggVDEoeCkgLyB4XjMyICkgR0YyTVVMIFAoeCkKKwkgKiAg ICAzLiBDKHgpICA9IFIoeCkgWE9SIFQyKHgpIG1vZCB4XjMyCisJICoKKwkgKiAgTm90ZTogVGhl IGxlZnRtb3N0IGRvdWJsZXdvcmQgb2YgdmVjdG9yIHJlZ2lzdGVyIGNvbnRhaW5pbmcKKwkgKiAg Q09OU1RfUlVfUE9MWSBpcyB6ZXJvIGFuZCwgdGh1cywgdGhlIGludGVybWVkaWF0ZSBHRigyKSBw cm9kdWN0CisJICogIGlzIHplcm8gYW5kIGRvZXMgbm90IGNvbnRyaWJ1dGUgdG8gdGhlIGZpbmFs IHJlc3VsdC4KKwkgKi8KKworCS8qIFQxKHgpID0gZmxvb3IoIFIoeCkgLyB4XjMyICkgR0YyTVVM IHUgKi8KKwl2MiA9IHZlY191bnBhY2tsKCh1djRzaSl2MSk7CisJdjIgPSAodXYyZGkpdmVjX2dm bXN1bV8xMjgocnVfcG9seSwgdjIpOworCisJLyoKKwkgKiBDb21wdXRlIHRoZSBHRigyKSBwcm9k dWN0IG9mIHRoZSBDUkMgcG9seW5vbWlhbCB3aXRoIFQxKHgpIGluCisJICogVjIgYW5kIFhPUiB0 aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCwgVDIoeCksIHdpdGggdGhlIHZhbHVlIGluIFYxLgorCSAq IFRoZSBmaW5hbCByZXN1bHQgaXMgc3RvcmVkIGluIHdvcmQgZWxlbWVudCAyIG9mIFYyLgorCSAq LworCXYyID0gdmVjX3VucGFja2woKHV2NHNpKXYyKTsKKwl2MiA9ICh1djJkaSl2ZWNfZ2Ztc3Vt X2FjY3VtXzEyOChjcmNfcG9seSwgdjIsICh1djE2cWkpdjEpOworCisJcmV0dXJuICgodXY0c2kp djIpWzJdOworfQorCitwZ19jcmMzMmMKK3BnX2NvbXBfY3JjMzJjX3MzOTB4KHBnX2NyYzMyYyBj cmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pCit7CisJdWludHB0cl90IHByZWFsaWdu LCBhbGlnbmVkLCByZW1haW5pbmc7CisJY29uc3QgdW5zaWduZWQgY2hhciAqYnVmID0gZGF0YTsK KworCWlmIChidWYgPT0gTlVMTCkKKwl7CisJCXJldHVybiAwVUw7CisJfQorCisJaWYgKGxlbiA8 IFZYX01JTl9MRU4gKyBWWF9BTElHTl9NQVNLKQorCXsKKwkJcmV0dXJuIHBnX2NvbXBfY3JjMzJj X3NiOChjcmMsIGJ1ZiwgbGVuKTsKKwl9CisKKwlpZiAoKHVpbnRwdHJfdClidWYgJiBWWF9BTElH Tl9NQVNLKQorCXsKKwkJcHJlYWxpZ24gPSBWWF9BTElHTk1FTlQgLSAoKHVpbnRwdHJfdClidWYg JiBWWF9BTElHTl9NQVNLKTsKKwkJbGVuIC09IHByZWFsaWduOworCQljcmMgPSBwZ19jb21wX2Ny YzMyY19zYjgoY3JjLCBidWYsIHByZWFsaWduKTsKKwkJYnVmICs9IHByZWFsaWduOworCX0KKwlh bGlnbmVkID0gbGVuICYgflZYX0FMSUdOX01BU0s7CisJcmVtYWluaW5nID0gbGVuICYgVlhfQUxJ R05fTUFTSzsKKworCWNyYyA9IHBnX2Jzd2FwMzIoY3JjMzJfbGVfdmdmbV8xNihwZ19ic3dhcDMy KGNyYyksIGJ1ZiwgKHNpemVfdClhbGlnbmVkKSk7CisKKwlpZiAocmVtYWluaW5nKQorCXsKKwkJ Y3JjID0gcGdfY29tcF9jcmMzMmNfc2I4KGNyYywgYnVmICsgYWxpZ25lZCwgcmVtYWluaW5nKTsK Kwl9CisKKwlyZXR1cm4gY3JjOworfQpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfY3JjMzJjX3Mz OTB4X2Nob29zZS5jIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4X2Nob29zZS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MDQ5ZTBkMTUzZAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9wb3J0L3BnX2NyYzMyY19zMzkweF9jaG9vc2UuYwpAQCAtMCwwICsxLDQ2IEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jcmMzMmNfczM5MHhfY2hvb3NlLmMKKyAq CSAgQ2hvb3NlIGJldHdlZW4gUzM5MFggdmVjdG9yaXplZCBDUkMtMzJDIGFuZCBzb2Z0d2FyZSBD UkMtMzJDIAorICoJICBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBPbiBmaXJzdCBjYWxsLCBjaGVj a3MgaWYgdGhlIENQVSB3ZSdyZSBydW5uaW5nIG9uIHN1cHBvcnRzIHRoZSAKKyAqIFMzOTBYX1ZY IEV4dGVuc2lvbi4gSWYgaXQgZG9lcywgdXNlIHRoZSBzcGVjaWFsIGluc3RydWN0aW9ucyBmb3Ig CisgKiBDUkMtMzJDIGNvbXB1dGF0aW9uLiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byB0aGUgcHVy ZSBzb2Z0d2FyZSAKKyAqIGltcGxlbWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyAoSUJNKQor ICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9wb3J0L3BnX2NyYzMyY19zMzkweF9jaG9v c2UuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJjLmgiCisjaW5j bHVkZSAicG9ydC9wZ19jcmMzMmMuaCIKKworI2lmIGRlZmluZWQoSEFWRV9HRVRBVVhWQUwpCisj aW5jbHVkZSA8c3lzL2F1eHYuaD4KKyNlbmRpZgorCisvKgorICogVGhpcyBnZXRzIGNhbGxlZCBv biB0aGUgZmlyc3QgY2FsbC4gSXQgcmVwbGFjZXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIKKyAqIHNv IHRoYXQgc3Vic2VxdWVudCBjYWxscyBhcmUgcm91dGVkIGRpcmVjdGx5IHRvIHRoZSBjaG9zZW4g aW1wbGVtZW50YXRpb24uCisgKi8KK3N0YXRpYyBwZ19jcmMzMmMKK3BnX2NvbXBfY3JjMzJjX2No b29zZShwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQoreworCS8q IGRlZmF1bHQgY2FsbCBzYjggKi8KKwlfX2F0b21pY19zdG9yZV9uKCZwZ19jb21wX2NyYzMyYyxw Z19jb21wX2NyYzMyY19zYjgsX19BVE9NSUNfU0VRX0NTVCk7CisKKyNpZiBkZWZpbmVkKEhBVkVf R0VUQVVYVkFMKQorCWlmIChnZXRhdXh2YWwoQVRfSFdDQVApICYgSFdDQVBfUzM5MF9WWCkKKwl7 CisJCV9fYXRvbWljX3N0b3JlX24oJnBnX2NvbXBfY3JjMzJjLHBnX2NvbXBfY3JjMzJjX3MzOTB4 LF9fQVRPTUlDX1NFUV9DU1QpOworCX0KKyNlbmRpZgorCXJldHVybiBwZ19jb21wX2NyYzMyYyhj cmMsIGRhdGEsIGxlbik7Cit9CisKK3BnX2NyYzMyYyAoKnBnX2NvbXBfY3JjMzJjKShwZ19jcmMz MmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKSA9IHBnX2NvbXBfY3JjMzJjX2No b29zZTsKLS0gCjIuNDkuMAoK --_002_918d9941377f6e83fbfebe96ba496ccaefa3803fcamelibmcom_--