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.96) (envelope-from ) id 1vlmWA-003rE1-1d for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jan 2026 11:18:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vlmW8-004UoM-1z for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jan 2026 11:18:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vlmW7-004UoB-33 for pgsql-hackers@lists.postgresql.org; Fri, 30 Jan 2026 11:18:25 +0000 Received: from mail-japanwestazon11010009.outbound.protection.outlook.com ([52.101.228.9] helo=OS0P286CU011.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vlmW5-00000000BYS-0FrT for pgsql-hackers@lists.postgresql.org; Fri, 30 Jan 2026 11:18:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UF5ExAW7FU88R3rSC4O5mQW26bmwgnFZizW7ROipgg7z8d0XxWRjUn7lVV7AbVqYSNZWU2zE8n6whLSarKtTn8dr+T5OEzuVZqAKyFDBs8N2DZIHSMvFwiMXcl/8EgYG2zHb4ea9gbbJjpsAlsg0ReXU0hbl8K9oevF00w17q6czHEmEae1nDZRAM8gQmAucW+5cef3iZ9UQr6tVAf9Nq7brCUXRQ3yhHgSsVTRYFFWZtwu3znH+vGsxi+blf5063ugbPC73vxcCXYVTD9bpMErDGer+UpoV45G3nJyfxHTnnK3e5VwGUaoXFfyGD1kfMtxGQmkMuYv5oTA8CQIpBw== 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=sqQK3ItNmTV3DWE0tzA9MT6MNX8wEqDqlRMzXaAL5qc=; b=C/kLFtK4CO5o+CaoJ2LVtDwPO77giZ8hGQZ8y/sB0R2kwjr1W2Ud7eVkOkHreRdzQpTWpm7+0KIIsp4VJYea9q+kbmjfdNXo33SwEZ41vuv934QRSxY9d3Ula7ujhHQtvljTSiKraQGK32YY2uzaayesJRAd1FEdhqMlpV45x1E3xog4+PHHOc1jv6SY0ARqqriCAb0m5vuDgBXxp+cYr76ZGx5aqqEW9FkTq6CcVlX9xvK+44yCmxc/wrmmacocyPNhIXPEh2JD8C2XMoiDUYSPeRov6c31/o6BF3odNY7NhByUFZP/wd7yUaD4aeduEA5fEPJcIMm4v1cDRb6jtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sqQK3ItNmTV3DWE0tzA9MT6MNX8wEqDqlRMzXaAL5qc=; b=PIjUUuL0acH3QF5RZUrCsDnM6azW4nKCfpZzy+Tm3cmQD0wAxNbVeIkRwQACiVzwv8NazBW4oGneaTVuL9vqj84eh7Lz4Hp3Z6v5INbj6Ng95X6Kuq5NIscVR1pAGgFPBuVZ9iJzg0tFiPdWpssD/bsbN1itsn12f/QmHtQAeWzsCvtyU+ZWtF1XQwG98/WePyQUYWGc+mJPOXGnbO5oFn361jRqwWb3bvGwTWjbCOdh9ool5dIOM6zQ6Pwa4OWdQ8pFzYZHqiDEXkUtEu/S8ReTD9MXbWBuHXxp0SRtlQQUYF4Hni2lQn9/9QlSrTZvo0pVOt/v5+MkSfx4XPmmwA== Received: from TY7PR01MB14554.jpnprd01.prod.outlook.com (2603:1096:405:241::9) by OSCPR01MB16143.jpnprd01.prod.outlook.com (2603:1096:604:3e1::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.7; Fri, 30 Jan 2026 11:18:07 +0000 Received: from TY7PR01MB14554.jpnprd01.prod.outlook.com ([fe80::2ddc:aa3d:f13f:746a]) by TY7PR01MB14554.jpnprd01.prod.outlook.com ([fe80::2ddc:aa3d:f13f:746a%5]) with mapi id 15.20.9564.010; Fri, 30 Jan 2026 11:18:07 +0000 From: "Hayato Kuroda (Fujitsu)" To: PostgreSQL Hackers CC: Tomas Vondra , Amit Kapila , 'Dilip Kumar' , 'Andrei Lepikhov' , "Zhijie Hou (Fujitsu)" , 'wenhui qiu' Subject: RE: Parallel Apply Thread-Topic: Parallel Apply Thread-Index: AQHcCnrbSLPDc76YRkOqFNG4U4/hWrSEoA6AgHQRIrCAAB/fAIAADGJwgAJFIoCAEiDP0IABUmGAgAAKa6CAH6cfoIAFylXAgAAO3oCAD/diQIAnfemA Date: Fri, 30 Jan 2026 11:18:07 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZGIxYmQwMTctYzUxNC00YzA0LWIzZjItYzE2OWZmZTBh?= =?utf-8?B?NTYzO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjUtMTItMDJUMDc6MDk6MTZaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?B?ZC04MWUxLTQ4NTgtYTlkOC03MzZlMjY3ZmQ0Yzc7TVNJUF9MYWJlbF9hNzI5?= =?utf-8?B?NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfVGFnPTEwLCAzLCAw?= =?utf-8?Q?,_1;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TY7PR01MB14554:EE_|OSCPR01MB16143:EE_ x-ms-office365-filtering-correlation-id: 0db704ae-c5a8-412e-77cd-08de5ff13ea4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|4053099003|1580799027|38070700021|7142099003; x-microsoft-antispam-message-info: =?utf-8?B?c3pwM2lrd2VZV2J0czR5NG85Ym5EV2FJMXpJbktUekdyYmZsbk15eDMxT0ZX?= =?utf-8?B?dTBvVEI3VkJjZ1lTYnlEODdSbUVkTTZ5d0x2Rk5vYVNvcGt5VlpIMm44aFMv?= =?utf-8?B?aVEwTHJVYVlwRlhnekYramhsc0l0a0E5bXRmbGhBYjcxQ2lnTDUxaGduTldr?= =?utf-8?B?ZzVuRHJVa3crSUU5Y2JRdUVDNUczOXUwZGlDMW9Ed0ZIMjBlNHJ1WTFIOGVG?= =?utf-8?B?VVYxcHduRDJBRFloR2h5blJUVTduVHhlYWV6WlcvOTNUaUJTbnFTbVZEbEp3?= =?utf-8?B?ek5xR3FMWFVHUVlxU2tCUzloSWRwa3hMbXgzckVBZTJPdS9Ub2JYQld0Tlo5?= =?utf-8?B?OENrVkdEbXJtODkzcFFGeUFVbm1qZlVkM25lZGh2TkVaNWtSQklHRUZxUnlM?= =?utf-8?B?N0RCSGwrNU0vYmJvOFJidGhQQkJSWkZnUDByZjNVcGFza2VORHFzUm9CUkUv?= =?utf-8?B?SmpMSW83eElGNkN5MFFRZHMraUdwMjd5Rjk5Q2JlSEFNbm10Ukt6T0Fub1o5?= =?utf-8?B?U0dwZnF5NnorY2NGUTZsV2tiM1ZwZjFPVWMrT2lmM1BVbUI2Sk5WM3pyQlU3?= =?utf-8?B?cTRxZTkwODJvQnFIaEFRNUdldFAvS1ZxNnc3U1BOMnVhL3J2b1VvVk1rTHJy?= =?utf-8?B?QWhJUkFxaU5WSDFUTklLU2tLWUZMUFppb0p5VVEwbzYzZks5dG9yL2l0S2pJ?= =?utf-8?B?aEVncHhYTXoyUzAxTVZQRDZZOUZVSTZGYjArRlhZYmJrNkh5U3JtUWZPQTU4?= =?utf-8?B?Vm9yVlYrMVZnYXIwbjJPZC9zYTlBUnV0QURSR0orSm1aQTNUd0JDZHY5WUI0?= =?utf-8?B?TXBZa2RJdjVSSVJIcmsyenVOOVExVExQNEs5WENHdStFdjJJRFgySjBjYkVN?= =?utf-8?B?THdhaFFGUTFYaEFPUDZhTGFkaWthNDNKMWp2NXlNbnk2NGtMM3BySnhCS1hz?= =?utf-8?B?UzMwQTBqQit6TU9DQWNoM0pLYW03NWlSWWg0dzU2eEdIRGxRRm16c1lMWkE1?= =?utf-8?B?cGczL3JkWnMzS3NObExRbW9WWGFtWndCL2NNYWdiQ3ZjZWdVM3lMdFJSYk13?= =?utf-8?B?SXROR1JLNmh4UkFSU3hMYk1lZUxWVGRzRVJvWmY0Wmxrb1lITnZ5ajgxd1dM?= =?utf-8?B?VU1DSnorUjJ1b1Q3SytqbmMvTitPZTR3Mm9wd1FKKzY4cmdwbFkwQTVmVDVx?= =?utf-8?B?OFVIY29TdjhqUW9qc1ZLUWwyOW1GQnNWZDcrVGRTU3RheVo5eU5haUZwVXQx?= =?utf-8?B?SFp4M2tEemxjODl1V2F6ZXNaTFY4TzI4VVI3UHE3Rkp0YzhwaFBwK2tNV2R1?= =?utf-8?B?T01TNWxZUDc1TldWNHhWejdpeE1FM09wTWs4K1BaaHdiVXQvNFE3L093aGw2?= =?utf-8?B?UnFQL3VzSUkweDJhRGFUREVFQXVmY2xxQTAyTERDN0wyc0Urb0Q2OGY1b0hm?= =?utf-8?B?VGxLNUxsYTRIci9Gd05yTy9QSVpBeFJhMFE3aHcxT3ZKZnpWdXk4RktDZWlU?= =?utf-8?B?eWg2YWRpd2hCR3hJeVE5T29LbHJzQWRKeWRJdlBWOVFqSlE4YmhnWjNwUTVD?= =?utf-8?B?U2QyUEUvRDVYZU8zKzlvOHJQQjhzdjdQKzBhalYvMVJuekQ0Ylg0b01ZVG9h?= =?utf-8?B?SEt3VnlhVC9tdFlsS1JBOXZYQ1FWaGVDbGlETEhsSGx5enNyYTVVNEJ6WGMx?= =?utf-8?B?aEQ0cDZDT2NGV083ZmFmaXpKQkp1bmVheEx0UCttM3NyN2FWa1FGQlBZbFMv?= =?utf-8?B?Sk55ZllEaklUdjRCSjJOeU92MEN3K3hJNm5JUEkvWUF1MzBIMnlPellFT2pM?= =?utf-8?B?cUN3bW1EL0dqMzJQK3YyK2hHM3E3VXNUQmZ1SkY4NDZydWJlc2FrVlpVR25R?= =?utf-8?B?OUFoZ3E4NTdxdXcvKzhGTExtOVNZRlB3alBSRDVYZmNaNDR1dHo2eU9lajF6?= =?utf-8?B?SGRTZDZGMWhBZUJCOGRlZjE2bWlMN01CY1RIUVIxVmxDZlo4bWQ1WmZhbkx5?= =?utf-8?B?NnE5U0hCZHlaZ0xISUlWZ0V4WUxlZ09RUGdnQ2xRbVpoVmI2MkRvTEd2em5j?= =?utf-8?B?WVltaGdOdWpOcGtjZ3Qrc0ptbDliS3dKN0VVTjJheGJaREFHYlhBa0JER0sx?= =?utf-8?B?eXp0Rllvb2RCQzFxZXkwVUlPeXgrQ1IxTkJCa1VlL2t1QU81UXhadDU0S2Ru?= =?utf-8?B?U3AreTJiRExBSWVEL1VORHUydmt1L3NPZEx3T2FrY05ZdlBYeXpaL1B5cm85?= =?utf-8?B?TE81UWpDSHhLWXBoTzdWcXRIYmdnPT0=?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7PR01MB14554.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(4053099003)(1580799027)(38070700021)(7142099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y3pYVkdJdnE4U2kzSUh2WTRmeDh6VFZvdUpkZTRrc0EzdWdlMW9CV3dtVXAr?= =?utf-8?B?Y2p4YU1uVHQ5U0g3cktJMkJFSjVKallwNi95VHlPanFUM3FXVisyc0JIWnMw?= =?utf-8?B?U3N5NHlDSVM0bHg0S0N1RjVsTXQ1a0xWdlIrWDVRbGFEM2l0SXlKb2czOWRY?= =?utf-8?B?a0x6TDhHekZndjh3YW84VXRyWWs2WkN4aEoxU2FIN3hJYU5GL0JiR2RBZ3lX?= =?utf-8?B?TzQwNUkrUmxGM1lHUGQrN2hZbnNuUGFpdnJqRTFRZ1llc0txNkx6MUNEdzFU?= =?utf-8?B?cE1XYm8yUXVXV29UdjNjb1ptWFlhNnNmajNtOTJwVkVkWnJEVmlHeFh1K1dk?= =?utf-8?B?dmZCVnlIc2hTRk5hRFBEOGhkNjVKYXY2OWRWTGtTSHdxcmNoZGhVazI3T3lY?= =?utf-8?B?bnQyLzJJd1BUbHJFOEZ1a2xEZlpDcFFpQ3NJeE1OYzB6b0k0ODBYUE1SOE4v?= =?utf-8?B?bzVaaUgxeWw5M01DaVdjdGtxbkRlWE5QdlZkYXZzWHp0MzBvMGN6NWJlNHFO?= =?utf-8?B?UEJnRXlZOGxHK25jMmNsL1ExNUhuNStMbWVEN1N0TVZJdGVpRm9SMTNCTVVF?= =?utf-8?B?YXJoVDNVelI3bXo0aDBLTlk0Q1hodVNwZDlGTzVvVnJiVW9PUytTZVh2bmtD?= =?utf-8?B?aVUxNzJVWkQyTWlQWWZxd1JvcGcreSttVmorOTQwbjNmWFFDeVJEZGNJVG4z?= =?utf-8?B?TEdzUUVBRmptN1BjRzZqOFZyUG5kZXo2cHBsV3FwRHIvemczVXBwRXpNTjI0?= =?utf-8?B?ZGx0MURqUzRTbDN0dUIrcUNsOEhoVnFzdGIzOUM3QkhIOE1ZU0YxUmxyczVs?= =?utf-8?B?UGttRnJPWmdDdFl0bHFTNTFRY0JlSndiNEVrWUpHK01YbzcrUGh3YWY2ZDhq?= =?utf-8?B?SGN4ZkI0WU1TbThqZFBHNk1sMXRPY1ROQmtLb243MjcyR2krVkdXZUlDcXpw?= =?utf-8?B?TWFRTnNJZzRTOUJzNWcxUUUxbEpwc3N0aGR0a0V0Sk45L0NEOFlWMVpIYThT?= =?utf-8?B?Rnlzd2FNWElrR3Nwa0dYNUdsTEI4SDhGVVBid3A0NjlMcUxDSUJqcHFtTnBC?= =?utf-8?B?Z01SUk1wK3RlVy9XZUwwWDNRb0hvd29vRVZNaWFqMTlzOXJrZHB4enJXTVla?= =?utf-8?B?bEFZSG43TnlLQ3RRajF1ZE0yYjJ3ZS8vYlBsQzdRaXZpRVNjL1I3VUdlSlMv?= =?utf-8?B?alVLQ2M5d0FvVW1mcURQQ0ozVWpDQ3lnaTdFU3RtM2V2RTN4NnJOZStwZ251?= =?utf-8?B?NFhhcHhuUDVlUStXOEl1aEpiR3hrck8rMmpuVmwvcEhyZldJZXRpeW1PaDZI?= =?utf-8?B?QUZxWU96WWFlSVF2Z2thaVlWYW9LaHZyR0FHc1hxL0FORys2NW9PUEV0SUs0?= =?utf-8?B?ci9weUNFdTZFc3dnVXBQdktKVXk1YzhhM1V6RmJMamVRTjBYUE42VFY5a05K?= =?utf-8?B?WGZnWjFudW5FL0M4TFplNUJ6VGlPd00wUjNnNTZ4VnYzNDZncEZTOEZsd1pt?= =?utf-8?B?eEVicWZ3bWkrK0F1M0JCMTRFSWtBSkFrWEs1NEl6UzVmTG5kTmpuK21QSTZ0?= =?utf-8?B?Z1JreVVSVHBZTDlxRnRZajVoeU1NWTNmaWxiQnc5RTdrZUl0dlJ2Zi9GN2lh?= =?utf-8?B?blRiZ2NaeHlSamR1MGdwYTNBeXREUGJSWjBUWHMrK0MwK1JadVRpbWN4Y2o0?= =?utf-8?B?d3pTSGhFLzJTcWpMaHZNYTZUQzliKzcrMHdIenE4K1ZxR05WeEc0L0djMkJF?= =?utf-8?B?Ky92cFh0ZldsZFZXS3d1MXVjb0NWQ3Fud0NYbDNIRDhQU2dERkp2OEVmbElV?= =?utf-8?B?ZXkrRmRNeDdXbDJ4U0lxWFJGMHhMc2RqNkFyYXZvQkRqU3JZQS9ETzE3ajhH?= =?utf-8?B?K0ZHdUdMclRIN2FIWEZGb1dGQlNLS25PODl4NDVQckpmQlpuWit0RTFpamVu?= =?utf-8?B?Rjk4WU5aSm5Ubkp6eG5ZeXlLNnFGdXV0SmdzYkxrYTVESHJjeEh5Y3hwMFFF?= =?utf-8?B?Q3Z2RDBhMVNWbG9EMXJRN3dRVklKQTlqVERiV25aQ3NaVmpUcktob3ZsZm5Q?= =?utf-8?B?bFBvUEFkRTBBa0FuRTZHL2sraHVBU1UzMHg2NE1zeEt5NnhPWCtXSkNEQ2R4?= =?utf-8?B?SGdVYkJ6UUErWWxqcTJsNE8xblJNdlR4ZlRPQXYwYTBldWFhYnZIVnJLdE43?= =?utf-8?B?MmNiajlyOW9Hdm94MmtKbFJJZzRKQnFKL20vTERHd1E0U0lDRjFlWFZUeXNq?= =?utf-8?B?Y05qZDlNREhzOXpvQVg2REdNeUR2ZnNwL0VzaXQ1MHBIdGNDZ2NHVEl2S2M5?= =?utf-8?B?dWZMZmxKeG9aQmViS2tFeWZPbUVxRTZPSy9laTJEbFZhcm1Zb1lwMmJ1NktR?= =?utf-8?Q?POaglPOk35Lyt6AQ=3D?= Content-Type: multipart/mixed; boundary="_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY7PR01MB14554.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0db704ae-c5a8-412e-77cd-08de5ff13ea4 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2026 11:18:07.5830 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +KIWj7ibMF5rcvpPd39u9F6OjL47eE+HJROraQDv/xrAuJZ9h900FD4efSJhZEHLrX9StlRaOJ+CGvWrcbZaVoHWU5mjSeye7Aeu/3qfh/k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCPR01MB16143 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RGVhciBIYWNrZXJzLA0KDQpIZXJlIGlzIGEgcmViYXNlZCB2ZXJzaW9uLCBwbHVzIDAwMDkgcGF0 Y2guDQoNCjAwMDkgY29udGFpbnMgY2hhbmdlcyB0byBoYW5kbGUgZGVwZW5kZW5jaWVzIGJhc2Vk IG9uIHRoZSBmb3JlaWduIGtleXMuIFdpdGhvdXQNCnRoaXMsIHBhcmFsbGVsIGFwcGx5IGNhbiB2 aW9sYXRlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGlmIHJlZmVyZW5jZWQgdHVwbGVzDQphcmUg Y29tbWl0dGVkIGFmdGVyIHJlZmVyZW5jaW5nIHR1cGxlcywgbGVhZGluZyB0byByZXBsaWNhdGlv biBmYWlsdXJlcy4NCg0KVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBkZXBlbmRlbmN5IGhhc2ggdG8g dHJhY2sgZGVwZW5kZW5jaWVzIHZpYSBGS3MuIFNpbmNlDQpyZWZlcmVuY2VkIGNvbHVtbnMgbXVz dCBiZSB1bmlxdWUsIGluZm9ybWF0aW9uIG11c3QgYmUgYWxyZWFkeSBzdG9yZWQgdG8gdGhlDQpo YXNoIGlmIHRoZXkgaGF2ZSBiZWVuIG1vZGlmaWVkLiBCYXNlZCBvbiB0aGUgcG9pbnQsIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyDQpjaGVja3MgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdmFsdWVzIGlu IHJlZmVyZW5jaW5nIGNvbHVtbnMgaGF2ZSBhbHJlYWR5IGJlZW4NCnJlZ2lzdGVyZWQgb3Igbm90 IGlmIGFwcGx5aW5nIHR1cGxlcyByZWZlciBzb21lIGNvbHVtbnMsIGFuZCByZWdhcmRzIHRoYXQg dGhlcmUNCmlzIGEgZGVwZW5kZW5jeSBpZiBmb3VuZC4NCg0KQmVzdCByZWdhcmRzLA0KSGF5YXRv IEt1cm9kYQ0KRlVKSVRTVSBMSU1JVEVEDQoNCg== --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0001-Introduce-new-type-of-logical-replication-message.patch" Content-Description: v8-0001-Introduce-new-type-of-logical-replication-message.patch Content-Disposition: attachment; filename="v8-0001-Introduce-new-type-of-logical-replication-message.patch"; size=6130; creation-date="Fri, 30 Jan 2026 10:44:03 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMTIxMDc1YzI2YjFhNTdjODIwZDJmZjU3YTg0MGY4ZTNhNGYzODNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTA6Mzc6MjcgKzA5MDAKU3ViamVjdDogW1BBVENI IHY4IDEvOV0gSW50cm9kdWNlIG5ldyB0eXBlIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gbWVzc2Fn ZXMgdG8KIHRyYWNrIGRlcGVuZGVuY2llcwoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHR3byBsb2dp Y2FsIHJlcGxpY2F0aW9uIG1lc3NhZ2VzLApMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfREVQRU5E RU5DWSBhbmQgTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX1JFTEFUSU9OLgpBcGFydCBmcm9tIG90 aGVyIG1lc3NhZ2VzLCB0aGV5IGFyZSBub3Qgc2VudCBieSB3YWxzbmRlcnM7IHRoZSBsZWFkZXIg d29ya2VyCnNlbmRzIHRvIHBhcmFsbGVsIHdvcmtlcnMgYmFzZWQgb24gdGhlIG5lZWRzLgoKTE9H SUNBTF9SRVBfTVNHX0lOVEVSTkFMX0RFUEVOREVOQ1kgZW5zdXJlcyB0aGF0IGRlcGVuZGVudCB0 cmFuc2FjdGlvbnMgYXJlCmNvbW1pdHRlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSXQgaGFzIGEg bGlzdCBvZiB0cmFuc2FjdGlvbiBJRHMgdGhhdCBwYXJhbGxlbAp3b3JrZXJzIG11c3Qgd2FpdCBm b3IuIFRoZSBtZXNzYWdlIHR5cGUgd291bGQgYmUgZ2VuZXJhdGVkIHdoZW4gdGhlIGxlYWRlcgpk ZXRlY3RzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBjdXJyZW50IGFuZCBvdGhlciB0cmFuc2Fj dGlvbnMsIG9yIGp1c3QgYmVmb3JlCnRoZSBDT01NSVQgbWVzc2FnZS4gVGhlIGxhdHRlciBvbmUg aXMgdXNlZCB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyaW5nCmJldHdlZW4gdGhlIHB1Ymxp c2hlciBhbmQgdGhlIHN1YnNjcmliZXIuCgpMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfUkVMQVRJ T04gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB0aGUgcmVsYXRpb24KaW5mb3JtYXRpb24gYmV0d2Vl biB0aGUgbGVhZGVyIGFuZCBwYXJhbGxlbCB3b3JrZXJzLiBJdCBoYXMgYSBsaXN0IG9mIHJlbGF0 aW9ucwp0aGF0IHRoZSBsZWFkZXIgYWxyZWFkeSBrbm93cywgYW5kIHBhcmFsbGVsIHdvcmtlcnMg YWxzbyB1cGRhdGUgdGhlIHJlbG1hcCBpbgpyZXNwb25zZSB0byB0aGUgbWVzc2FnZS4gVGhpcyB0 eXBlIG9mIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIGxlYWRlcgphbGxvY2F0ZXMgYSBu ZXcgcGFyYWxsZWwgd29ya2VyIHRvIHRoZSB0cmFuc2FjdGlvbiwgb3Igd2hlbiB0aGUgcHVibGlz aGVyIHNlbmRzCmFkZGl0aW9uYWwgUkVMQVRJT04gbWVzc2FnZXMuCgpBdXRob3I6IEhvdSBaaGlq aWUgPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+CkF1dGhvcjogSGF5YXRvIEt1cm9kYSA8a3Vyb2Rh LmhheWF0b0BmdWppdHN1LmNvbT4KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMgfCAxNiArKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyAgICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jICAgICAgfCA0OSArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgNCArKwogNSBmaWxlcyBjaGFuZ2VkLCA3NSBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA4YTAxZjE2YTJjYS4uNzQ4ZmQwYzUwYTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0xNjQ1LDMgKzE2NDUsMTkgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAlwYV9mcmVl X3dvcmtlcih3aW5mbyk7CiB9CisKKy8qCisgKiBXYWl0IGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rp b24gdG8gZmluaXNoLgorICovCit2b2lkCitwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlv bihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwllbG9nKERFQlVHMSwgIndhaXQgZm9yIGRlcGVuZGVk IHhpZCAldSIsIHhpZCk7CisKKwlmb3IgKDs7KQorCXsKKwkJLyogWFhYIHdhaXQgdW50aWwgZ2l2 ZW4gdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQgKi8KKwl9CisKKwllbG9nKERFQlVHMSwgImZpbmlz aCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJXUiLCB4aWQpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IDM5NTBkZDBjZjQ2Li42NmY5MzBjOGIwNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTI1Myw2ICsxMjUzLDEw IEBAIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbikKIAkJ CXJldHVybiAiU1RSRUFNIEFCT1JUIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BS RVBBUkU6CiAJCQlyZXR1cm4gIlNUUkVBTSBQUkVQQVJFIjsKKwkJY2FzZSBMT0dJQ0FMX1JFUF9N U0dfSU5URVJOQUxfREVQRU5ERU5DWToKKwkJCXJldHVybiAiSU5URVJOQUwgREVQRU5ERU5DWSI7 CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX1JFTEFUSU9OOgorCQkJcmV0dXJuICJJ TlRFUk5BTCBSRUxBVElPTiI7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IDMyNzI1YzQ4NjIzLi40M2RjZTJiNTYyMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC02MjksNiArNjI5LDQ3IEBAIHN0YXRp YyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rp b25JZCB4aWQsCiAKIHN0YXRpYyB2b2lkIG9uX2V4aXRfY2xlYXJfeGFjdF9zdGF0ZShpbnQgY29k ZSwgRGF0dW0gYXJnKTsKIAorLyoKKyAqIEhhbmRsZSBpbnRlcm5hbCBkZXBlbmRlbmN5IGluZm9y bWF0aW9uLgorICoKKyAqIFdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbnMgbGlzdGVkIGluIHRoZSBt ZXNzYWdlIHRvIGNvbW1pdC4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9pbnRlcm5h bF9kZXBlbmRlbmN5KFN0cmluZ0luZm8gcykKK3sKKwlpbnQJCQlueGlkcyA9IHBxX2dldG1zZ2lu dChzLCA0KTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnhpZHM7IGkrKykKKwl7CisJCVRyYW5z YWN0aW9uSWQgeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCisJCXBhX3dhaXRfZm9yX2RlcGVu ZGVkX3RyYW5zYWN0aW9uKHhpZCk7CisJfQorfQorCisvKgorICogSGFuZGxlIGludGVybmFsIHJl bGF0aW9uIGluZm9ybWF0aW9uLgorICoKKyAqIFVwZGF0ZSBhbGwgcmVsYXRpb24gZGV0YWlscyBp biB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxl X2ludGVybmFsX3JlbGF0aW9uKFN0cmluZ0luZm8gcykKK3sKKwlpbnQJCQludW1fcmVsczsKKwor CW51bV9yZWxzID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fcmVsczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFJlbGF0aW9uICpyZWwgPSBsb2dpY2FscmVw X3JlYWRfcmVsKHMpOworCisJCWxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShyZWwpOworCisJCWVs b2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VyIHdvcmtlciBpbml0IHJlbG1hcCBmb3Ig JXMiLAorCQkJIHJlbC0+cmVsbmFtZSk7CisJfQorfQorCiAvKgogICogRm9ybSB0aGUgb3JpZ2lu IG5hbWUgZm9yIHRoZSBzdWJzY3JpcHRpb24uCiAgKgpAQCAtMzg2OCw2ICszOTA5LDE0IEBAIGFw cGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIAkJCWFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFy ZShzKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX1JFTEFU SU9OOgorCQkJYXBwbHlfaGFuZGxlX2ludGVybmFsX3JlbGF0aW9uKHMpOworCQkJYnJlYWs7CisK KwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfREVQRU5ERU5DWToKKwkJCWFwcGx5X2hh bmRsZV9pbnRlcm5hbF9kZXBlbmRlbmN5KHMpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggMDU4YTk1NWUyMGMu LjkwNDI0NzBmNTAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAt NzUsNiArNzUsOCBAQCB0eXBlZGVmIGVudW0gTG9naWNhbFJlcE1zZ1R5cGUKIAlMT0dJQ0FMX1JF UF9NU0dfU1RSRUFNX0NPTU1JVCA9ICdjJywKIAlMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JU ID0gJ0EnLAogCUxPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRSA9ICdwJywKKwlMT0dJQ0FM X1JFUF9NU0dfSU5URVJOQUxfREVQRU5ERU5DWSA9ICdkJywKKwlMT0dJQ0FMX1JFUF9NU0dfSU5U RVJOQUxfUkVMQVRJT04gPSAnaScsCiB9IExvZ2ljYWxSZXBNc2dUeXBlOwogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBjMTI4NWZkZDFiYy4uZWI5 MzdiZTE1Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBA IC0zNTksNiArMzU5LDggQEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxv Y2sodm9pZCk7CiBleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCitleHRlcm4g dm9pZCBwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCk7 CisKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5pbl91 c2UgJiYgXAogCQkJCQkJCQkJICAgKHdvcmtlciktPnR5cGUgPT0gV09SS0VSVFlQRV9QQVJBTExF TF9BUFBMWSkKICNkZWZpbmUgaXNUYWJsZVN5bmNXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmlu X3VzZSAmJiBcCkBAIC0zNjYsNiArMzY4LDggQEAgZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2go UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAogI2RlZmluZSBpc1NlcXVlbmNlU3luY1dv cmtlcih3b3JrZXIpICgod29ya2VyKS0+aW5fdXNlICYmIFwKIAkJCQkJCQkJCSAgKHdvcmtlcikt PnR5cGUgPT0gV09SS0VSVFlQRV9TRVFVRU5DRVNZTkMpCiAKKyNkZWZpbmUgUEFSQUxMRUxfQVBQ TFlfSU5URVJOQUxfTUVTU0FHRQknaScKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5 bmNfd29ya2VyKHZvaWQpCiB7Ci0tIAoyLjQ3LjMKCg== --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0002-Introduce-a-shared-hash-table-to-store-paralleliz.patch" Content-Description: v8-0002-Introduce-a-shared-hash-table-to-store-paralleliz.patch Content-Disposition: attachment; filename="v8-0002-Introduce-a-shared-hash-table-to-store-paralleliz.patch"; size=9327; creation-date="Fri, 30 Jan 2026 10:44:03 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSAxYzQ2MGFmM2Q5OWQ3NDc3MWRmM2RmMDU2MzIwOTY5MDFiYmMwYzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTY6Mjg6MzggKzA5MDAKU3ViamVjdDogW1BBVENI IHY4IDIvOV0gSW50cm9kdWNlIGEgc2hhcmVkIGhhc2ggdGFibGUgdG8gc3RvcmUgcGFyYWxsZWxp emVkCiB0cmFuc2FjdGlvbnMKClRoaXMgaGFzaCB0YWJsZSBpcyB1c2VkIGZvciBlbnN1cmluZyB0 aGF0IHBhcmFsbGVsIHdvcmtlcnMgd2FpdCB1bnRpbCBkZXBlbmRlbnQKdHJhbnNhY3Rpb25zIGFy ZSBjb21taXR0ZWQuCgpUaGUgc2hhcmVkIGhhc2ggdGFibGUgY29udGFpbnMgdHJhbnNhY3Rpb24g SURzIHRoYXQgdGhlIGxlYWRlciBhbGxvY2F0ZWQgdG8KcGFyYWxsZWwgd29ya2Vycy4gVGhlIGhh c2ggZW50cmllcyBhcmUgaW5zZXJ0ZWQgd2l0aCBhIHJlbW90ZSBYSUQgd2hlbiB0aGUKbGVhZGVy IGJ5cGFzc2VzIHJlbW90ZSB0cmFuc2FjdGlvbnMgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4g RW50cmllcyBhcmUKZGVsZXRlZCB3aGVuIHBhcmFsbGVsIHdvcmtlcnMgYXJlIGNvbW1pdHRlZCB0 byBjb3JyZXNwb25kaW5nIHRyYW5zYWN0aW9ucy4KCldoZW4gdGhlIHBhcmFsbGVsIHdvcmtlciB0 cmllcyB0byB3YWl0IGZvciBvdGhlciB0cmFuc2FjdGlvbnMsIGl0IGNoZWNrcyB0aGUKaGFzaCB0 YWJsZSBmb3IgdGhlIHJlbW90ZSBYSURzLiBUaGUgcHJvY2VzcyBjYW4gZ28gYWhlYWQgb25seSB3 aGVuIGVudHJpZXMgYXJlCnJlbW92ZWQgZnJvbSB0aGUgaGFzaC4KCkF1dGhvcjogSG91IFpoaWpp ZSA8aG91emouZm5zdEBmdWppdHN1LmNvbT4KQXV0aG9yOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEu aGF5YXRvQGZ1aml0c3UuY29tPgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYyB8IDEwMCArKysrKysrKysrKysrKysrKy0KIC4uLi91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50X25hbWVzLnR4dCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9s d2xvY2tsaXN0LmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA3NDhmZDBjNTBhMy4uZGUy ZmRhNzI4MTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0yMTgsMTIgKzIxOCwzNSBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm87CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsKIAorLyogYW4gZW50cnkgaW4gdGhlIHBh cmFsbGVsaXplZF90eG5zIHNoYXJlZCBoYXNoIHRhYmxlICovCit0eXBlZGVmIHN0cnVjdCBQYXJh bGxlbGl6ZWRUeG5FbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5ICov Cit9IFBhcmFsbGVsaXplZFR4bkVudHJ5OworCiAvKgogICogQSBoYXNoIHRhYmxlIHVzZWQgdG8g Y2FjaGUgdGhlIHN0YXRlIG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVpbmcgYXBwbGllZAog ICogYnkgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCiAgKi8KIHN0YXRpYyBIVEFCICpQYXJh bGxlbEFwcGx5VHhuSGFzaCA9IE5VTEw7CiAKKy8qCisgKiBBIGhhc2ggdGFibGUgdXNlZCB0byB0 cmFjayB0aGUgcGFyYWxsZWxpemVkIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGJlCisgKiBkZXBl bmRlZCBvbiBieSBvdGhlciB0cmFuc2FjdGlvbnMuCisgKi8KK3N0YXRpYyBkc2FfYXJlYSAqcGFy YWxsZWxfYXBwbHlfZHNhX2FyZWEgPSBOVUxMOworc3RhdGljIGRzaGFzaF90YWJsZSAqcGFyYWxs ZWxpemVkX3R4bnMgPSBOVUxMOworCisvKiBwYXJhbWV0ZXJzIGZvciB0aGUgcGFyYWxsZWxpemVk X3R4bnMgc2hhcmVkIGhhc2ggdGFibGUgKi8KK3N0YXRpYyBjb25zdCBkc2hhc2hfcGFyYW1ldGVy cyBkc2hfcGFyYW1zID0geworCXNpemVvZihUcmFuc2FjdGlvbklkKSwKKwlzaXplb2YoUGFyYWxs ZWxpemVkVHhuRW50cnkpLAorCWRzaGFzaF9tZW1jbXAsCisJZHNoYXNoX21lbWhhc2gsCisJZHNo YXNoX21lbWNweSwKKwlMV1RSQU5DSEVfUEFSQUxMRUxfQVBQTFlfRFNBCit9OworCiAvKgogKiBB IGxpc3QgKHBvb2wpIG9mIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBUaGUgaW5mb3Jt YXRpb24gZm9yCiAqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyIHN1 Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQpAQCAtMjU3LDYgKzI4MCw4IEBAIHN0YXRpYyBM aXN0ICpzdWJ4YWN0bGlzdCA9IE5JTDsKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8o UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxlbFRyYW5zU3Rh dGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7 CiBzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsK K3N0YXRpYyB2b2lkIHBhX2F0dGFjaF9wYXJhbGxlbGl6ZWRfdHhuX2hhc2goZHNhX2hhbmRsZSAq cGFfZHNhX2hhbmRsZSwKKwkJCQkJCQkJCQkJZHNoYXNoX3RhYmxlX2hhbmRsZSAqcGFfZHNoYXNo X2hhbmRsZSk7CiAKIC8qCiAgKiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNlIG90aGVyd2lzZS4KQEAgLTMzNCw2ICszNTksMTUg QEAgcGFfc2V0dXBfZHNtKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAlzaG1fbXEJ ICAgKm1xOwogCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKIAlTaXplCQllcnJv cl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisJZHNhX2hhbmRsZQlwYXJhbGxl bF9hcHBseV9kc2FfaGFuZGxlOworCWRzaGFzaF90YWJsZV9oYW5kbGUgcGFyYWxsZWxpemVkX3R4 bnNfaGFuZGxlOworCisJcGFfYXR0YWNoX3BhcmFsbGVsaXplZF90eG5faGFzaCgmcGFyYWxsZWxf YXBwbHlfZHNhX2hhbmRsZSwKKwkJCQkJCQkJCSZwYXJhbGxlbGl6ZWRfdHhuc19oYW5kbGUpOwor CisJaWYgKHBhcmFsbGVsX2FwcGx5X2RzYV9oYW5kbGUgPT0gRFNBX0hBTkRMRV9JTlZBTElEIHx8 CisJCXBhcmFsbGVsaXplZF90eG5zX2hhbmRsZSA9PSBEU0hBU0hfSEFORExFX0lOVkFMSUQpCisJ CXJldHVybiBmYWxzZTsKIAogCS8qCiAJICogRXN0aW1hdGUgaG93IG11Y2ggc2hhcmVkIG1lbW9y eSB3ZSBuZWVkLgpAQCAtMzY5LDYgKzQwMyw4IEBAIHBhX3NldHVwX2RzbShQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8pCiAJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5n X3N0cmVhbV9jb3VudCksIDApOwogCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhM b2dSZWNQdHI7CiAJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisJc2hhcmVkLT5w YXJhbGxlbF9hcHBseV9kc2FfaGFuZGxlID0gcGFyYWxsZWxfYXBwbHlfZHNhX2hhbmRsZTsKKwlz aGFyZWQtPnBhcmFsbGVsaXplZF90eG5zX2hhbmRsZSA9IHBhcmFsbGVsaXplZF90eG5zX2hhbmRs ZTsKIAogCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hh cmVkKTsKIApAQCAtODY0LDYgKzkwMCw4IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCXNobV9tcQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCXNobV9t cV9oYW5kbGUgKmVycm9yX21xaDsKKwlkc2FfaGFuZGxlCXBhX2RzYV9oYW5kbGU7CisJZHNoYXNo X3RhYmxlX2hhbmRsZSBwYV9kc2hhc2hfaGFuZGxlOwogCVJlcGxPcmlnaW5JZCBvcmlnaW5pZDsK IAlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCWNoYXIJCW9y aWdpbm5hbWVbTkFNRURBVEFMRU5dOwpAQCAtOTUxLDYgKzk4OSw4IEBAIFBhcmFsbGVsQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJSW5pdGlhbGl6aW5nQXBwbHlXb3JrZXIgPSBm YWxzZTsKIAorCXBhX2F0dGFjaF9wYXJhbGxlbGl6ZWRfdHhuX2hhc2goJnBhX2RzYV9oYW5kbGUs ICZwYV9kc2hhc2hfaGFuZGxlKTsKKwogCS8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFj a2luZy4gKi8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVJlcGxpY2F0aW9uT3JpZ2lu TmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwgSW52YWxpZE9pZCwKQEAgLTE2 NDYsNiArMTY4Niw1MSBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAlwYV9mcmVlX3dvcmtlcih3aW5mbyk7CiB9 CiAKKy8qCisgKiBBdHRhY2ggdG8gdGhlIHNoYXJlZCBoYXNoIHRhYmxlIGZvciBwYXJhbGxlbGl6 ZWQgdHJhbnNhY3Rpb25zLgorICovCitzdGF0aWMgdm9pZAorcGFfYXR0YWNoX3BhcmFsbGVsaXpl ZF90eG5faGFzaChkc2FfaGFuZGxlICpwYV9kc2FfaGFuZGxlLAorCQkJCQkJCQlkc2hhc2hfdGFi bGVfaGFuZGxlICpwYV9kc2hhc2hfaGFuZGxlKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3R4Owor CisJaWYgKHBhcmFsbGVsaXplZF90eG5zKQorCXsKKwkJQXNzZXJ0KHBhcmFsbGVsX2FwcGx5X2Rz YV9hcmVhKTsKKwkJKnBhX2RzYV9oYW5kbGUgPSBkc2FfZ2V0X2hhbmRsZShwYXJhbGxlbF9hcHBs eV9kc2FfYXJlYSk7CisJCSpwYV9kc2hhc2hfaGFuZGxlID0gZHNoYXNoX2dldF9oYXNoX3RhYmxl X2hhbmRsZShwYXJhbGxlbGl6ZWRfdHhucyk7CisJCXJldHVybjsKKwl9CisKKwkvKiBCZSBzdXJl IGFueSBsb2NhbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IERTQSByb3V0aW5lcyBpcyBwZXJzaXN0ZW50 LiAqLworCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJ aWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCS8qIEluaXRpYWxpemUgZHluYW1p YyBzaGFyZWQgaGFzaCB0YWJsZSBmb3IgbGFzdC1zdGFydCB0aW1lcy4gKi8KKwkJcGFyYWxsZWxf YXBwbHlfZHNhX2FyZWEgPSBkc2FfY3JlYXRlKExXVFJBTkNIRV9QQVJBTExFTF9BUFBMWV9EU0Ep OworCQlkc2FfcGluKHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhKTsKKwkJZHNhX3Bpbl9tYXBwaW5n KHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhKTsKKwkJcGFyYWxsZWxpemVkX3R4bnMgPSBkc2hhc2hf Y3JlYXRlKHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhLCAmZHNoX3BhcmFtcywgTlVMTCk7CisKKwkJ LyogU3RvcmUgaGFuZGxlcyBpbiBzaGFyZWQgbWVtb3J5IGZvciBvdGhlciBiYWNrZW5kcyB0byB1 c2UuICovCisJCSpwYV9kc2FfaGFuZGxlID0gZHNhX2dldF9oYW5kbGUocGFyYWxsZWxfYXBwbHlf ZHNhX2FyZWEpOworCQkqcGFfZHNoYXNoX2hhbmRsZSA9IGRzaGFzaF9nZXRfaGFzaF90YWJsZV9o YW5kbGUocGFyYWxsZWxpemVkX3R4bnMpOworCX0KKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBs eV93b3JrZXIoKSkKKwl7CisJCS8qIEF0dGFjaCB0byBleGlzdGluZyBkeW5hbWljIHNoYXJlZCBo YXNoIHRhYmxlLiAqLworCQlwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSA9IGRzYV9hdHRhY2goTXlQ YXJhbGxlbFNoYXJlZC0+cGFyYWxsZWxfYXBwbHlfZHNhX2hhbmRsZSk7CisJCWRzYV9waW5fbWFw cGluZyhwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSk7CisJCXBhcmFsbGVsaXplZF90eG5zID0gZHNo YXNoX2F0dGFjaChwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSwgJmRzaF9wYXJhbXMsCisJCQkJCQkJ CQkJICBNeVBhcmFsbGVsU2hhcmVkLT5wYXJhbGxlbGl6ZWRfdHhuc19oYW5kbGUsCisJCQkJCQkJ CQkJICBOVUxMKTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKK30KKwog LyoKICAqIFdhaXQgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiB0byBmaW5pc2guCiAgKi8KQEAg LTE2NTYsNyArMTc0MSwyMCBAQCBwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihUcmFu c2FjdGlvbklkIHhpZCkKIAogCWZvciAoOzspCiAJewotCQkvKiBYWFggd2FpdCB1bnRpbCBnaXZl biB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCAqLworCQlQYXJhbGxlbGl6ZWRUeG5FbnRyeSAqdHhu X2VudHJ5OworCisJCXR4bl9lbnRyeSA9IGRzaGFzaF9maW5kKHBhcmFsbGVsaXplZF90eG5zLCAm eGlkLCBmYWxzZSk7CisKKwkJLyogVGhlIGVudHJ5IGlzIHJlbW92ZWQgb25seSBpZiB0aGUgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkICovCisJCWlmICh0eG5fZW50cnkgPT0gTlVMTCkKKwkJCWJy ZWFrOworCisJCWRzaGFzaF9yZWxlYXNlX2xvY2socGFyYWxsZWxpemVkX3R4bnMsIHR4bl9lbnRy eSk7CisKKwkJcGFfbG9ja190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBh X3VubG9ja190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAl9CiAKIAllbG9nKERFQlVHMSwgImZpbmlzaCB3YWl0aW5nIGZvciBk ZXBlbmRlZCB4aWQgJXUiLCB4aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50X25hbWVzLnR4dAppbmRleCA1NTM3YTJkMjUzMC4uMzRlZTFhMjZkZjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0Cisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC00 MTAsNiArNDEwLDcgQEAgU3VidHJhbnNTTFJVCSJXYWl0aW5nIHRvIGFjY2VzcyB0aGUgc3ViLXRy YW5zYWN0aW9uIFNMUlUgY2FjaGUuIgogWGFjdFNMUlUJIldhaXRpbmcgdG8gYWNjZXNzIHRoZSB0 cmFuc2FjdGlvbiBzdGF0dXMgU0xSVSBjYWNoZS4iCiBQYXJhbGxlbFZhY3V1bURTQQkiV2FpdGlu ZyBmb3IgcGFyYWxsZWwgdmFjdXVtIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBhbGxvY2F0aW9uLiIK IEFpb1VyaW5nQ29tcGxldGlvbgkiV2FpdGluZyBmb3IgYW5vdGhlciBwcm9jZXNzIHRvIGNvbXBs ZXRlIElPIHZpYSBpb191cmluZy4iCitQYXJhbGxlbEFwcGx5RFNBCSJXYWl0aW5nIGZvciBwYXJh bGxlbCBhcHBseSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbi4iCiAKICMgTm8gIkFC SV9jb21wYXRpYmlsaXR5IiByZWdpb24gaGVyZSBhcyBXYWl0RXZlbnRMV0xvY2sgaGFzIGl0cyBv d24gQyBjb2RlLgogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmlu ZGV4IGViOTM3YmUxNWNlLi40MTFlMmM1MzdjNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z2RlZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUg ImRhdGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgImxpYi9kc2hhc2guaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgpAQCAtMTk3LDYgKzE5OCw5IEBA IHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIAkgKi8KIAlQYXJ0aWFs RmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CiAJRmlsZVNldAkJZmlsZXNldDsKKworCWRzYV9o YW5kbGUJcGFyYWxsZWxfYXBwbHlfZHNhX2hhbmRsZTsKKwlkc2hhc2hfdGFibGVfaGFuZGxlIHBh cmFsbGVsaXplZF90eG5zX2hhbmRsZTsKIH0gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9sd2xvY2tsaXN0LmgKaW5kZXggZTk0ZWJjZTk1YjkuLjFjMTM4YTczYTdi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaApAQCAtMTM3LDMgKzEzNyw0IEBAIFBHX0xXTE9D S1RSQU5DSEUoU1VCVFJBTlNfU0xSVSwgU3VidHJhbnNTTFJVKQogUEdfTFdMT0NLVFJBTkNIRShY QUNUX1NMUlUsIFhhY3RTTFJVKQogUEdfTFdMT0NLVFJBTkNIRShQQVJBTExFTF9WQUNVVU1fRFNB LCBQYXJhbGxlbFZhY3V1bURTQSkKIFBHX0xXTE9DS1RSQU5DSEUoQUlPX1VSSU5HX0NPTVBMRVRJ T04sIEFpb1VyaW5nQ29tcGxldGlvbikKK1BHX0xXTE9DS1RSQU5DSEUoUEFSQUxMRUxfQVBQTFlf RFNBLCBQYXJhbGxlbEFwcGx5RFNBKQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzNDM3 NGRmMGQ2Ny4uZDk5YzE5OTZlZmQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMDk1 LDYgKzIwOTUsNyBAQCBQYXJhbGxlbEhhc2hKb2luQmF0Y2gKIFBhcmFsbGVsSGFzaEpvaW5CYXRj aEFjY2Vzc29yCiBQYXJhbGxlbEhhc2hKb2luU3RhdGUKIFBhcmFsbGVsSW5kZXhTY2FuRGVzYwor UGFyYWxsZWxpemVkVHhuRW50cnkKIFBhcmFsbGVsU2xvdAogUGFyYWxsZWxTbG90QXJyYXkKIFBh cmFsbGVsU2xvdFJlc3VsdEhhbmRsZXIKLS0gCjIuNDcuMwoK --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0003-Introduce-a-local-hash-table-to-store-replica-ide.patch" Content-Description: v8-0003-Introduce-a-local-hash-table-to-store-replica-ide.patch Content-Disposition: attachment; filename="v8-0003-Introduce-a-local-hash-table-to-store-replica-ide.patch"; size=28990; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA4YjFkMDM1MzIzNzkzM2M0OWE4ZjUzZDdmMTk5YWNlMzJhMDdlM2M3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTY6Mzk6MDIgKzA5MDAKU3ViamVjdDogW1BBVENI IHY4IDMvOV0gSW50cm9kdWNlIGEgbG9jYWwgaGFzaCB0YWJsZSB0byBzdG9yZSByZXBsaWNhCiBp ZGVudGl0aWVzCgpUaGlzIGxvY2FsIGhhc2ggdGFibGUgb24gdGhlIGxlYWRlciBpcyB1c2VkIGZv ciBkZXRlY3RpbmcgZGVwZW5kZW5jaWVzIGJldHdlZW4KdHJhbnNhY3Rpb25zLgoKVGhlIGhhc2gg Y29udGFpbnMgdGhlIFJlcGxpY2EgSWRlbnRpdHkgKFJJKSBhcyBhIGtleSBhbmQgdGhlIHJlbW90 ZSBYSUQgdGhhdAptb2RpZmllZCB0aGUgY29ycmVzcG9uZGluZyB0dXBsZS4gVGhlIGhhc2ggZW50 cmllcyBhcmUgaW5zZXJ0ZWQgd2hlbiB0aGUgbGVhZGVyCmZpbmRzIGFuIFJJIGZyb20gYSByZXBs aWNhdGlvbiBtZXNzYWdlLiBFbnRyaWVzIGFyZSBkZWxldGVkIHdoZW4gdHJhbnNhY3Rpb25zCmNv bW1pdHRlZCBieSBwYXJhbGxlbCB3b3JrZXJzIGFyZSBnYXRoZXJlZCwgb3IgdGhlIG51bWJlciBv ZiBlbnRyaWVzIGV4Y2VlZHMgdGhlCmxpbWl0LgoKV2hlbiB0aGUgbGVhZGVyIHNlbmRzIHJlcGxp Y2F0aW9uIGNoYW5nZXMgdG8gcGFyYWxsZWwgd29ya2VycywgaXQgY2hlY2tzIHdoZXRoZXIKb3Ro ZXIgdHJhbnNhY3Rpb25zIGhhdmUgYWxyZWFkeSB1c2VkIHRoZSBSSSBhc3NvY2lhdGVkIHdpdGgg dGhlIGNoYW5nZS4gSWYKc29tZXRoaW5nIGlzIGZvdW5kLCB0aGUgbGVhZGVyIHRyZWF0cyBpdCBh cyBhIGRlcGVuZGVudCB0cmFuc2FjdGlvbiBhbmQgbm90aWZpZXMKcGFyYWxsZWwgd29ya2VycyB0 byB3YWl0IHVudGlsIGl0IGZpbmlzaGVzIHZpYSBMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfREVQ RU5ERU5DWS4KCkF1dGhvcjogSG91IFpoaWppZSA8aG91emouZm5zdEBmdWppdHN1LmNvbT4KQXV0 aG9yOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgotLS0KIC4uLi9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDEyMyArKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAgMjQgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgNjE2ICsrKysrKysrKysr KysrKysrLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwg ICAzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAg OCArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAz ICsKIDYgZmlsZXMgY2hhbmdlZCwgNzc0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwppbmRleCBkZTJmZGE3MjgxOC4uZDQ2MjY3NGI1Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0y MTYsNiArMjE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CiB7 CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CQkJLyogSGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAqLwog CVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlYTG9nUmVjUHRyCWxvY2FsX2VuZDsK IH0gUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5OwogCiAvKiBhbiBlbnRyeSBpbiB0aGUgcGFyYWxs ZWxpemVkX3R4bnMgc2hhcmVkIGhhc2ggdGFibGUgKi8KQEAgLTUwNCw3ICs1MDUsNyBAQCBwYV9s YXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCiAgKiBzdHJlYW1pbmcgY2hhbmdlcy4KICAqLwog dm9pZAotcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQorcGFfYWxsb2NhdGVf d29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIHN0cmVhbV90eG4pCiB7CiAJYm9vbAkJZm91 bmQ7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKQEAgLTU0NSw3ICs1 NDYsOSBAQCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiAKIAl3aW5mby0+ aW5fdXNlID0gdHJ1ZTsKIAl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKKwl3aW5m by0+c3RyZWFtX3R4biA9IHN0cmVhbV90eG47CiAJZW50cnktPndpbmZvID0gd2luZm87CisJZW50 cnktPmxvY2FsX2VuZCA9IEludmFsaWRYTG9nUmVjUHRyOwogfQogCiAvKgpAQCAtNzQyLDYgKzc0 NSw3MyBAQCBwYV9wcm9jZXNzX3Nwb29sZWRfbWVzc2FnZXNfaWZfcmVxdWlyZWQodm9pZCkKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIEdldCB0aGUgbG9jYWwgZW5kIExTTiBmb3IgYSB0cmFu c2FjdGlvbiBhcHBsaWVkIGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFNldCBk ZWxldGVfZW50cnkgdG8gdHJ1ZSBpZiB5b3UgaW50ZW5kIHRvIHJlbW92ZSB0aGUgdHJhbnNhY3Rp b24gZnJvbSB0aGUKKyAqIFBhcmFsbGVsQXBwbHlUeG5IYXNoIGFmdGVyIGNvbGxlY3RpbmcgaXRz IExTTi4KKyAqCisgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGRpZCBub3Qgd3JpdGUg YW55IGNoYW5nZXMgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbgorICogYXBwbGljYXRpb24gZHVlIHRv IHNpdHVhdGlvbnMgbGlrZSB1cGRhdGUvZGVsZXRlX21pc3Npbmcgb3IgYSBiZWZvcmUgdHJpZ2dl ciwKKyAqIHRoZSAqc2tpcHBlZF93cml0ZSB3aWxsIGJlIHNldCB0byB0cnVlLgorICovCitYTG9n UmVjUHRyCitwYV9nZXRfbGFzdF9jb21taXRfZW5kKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGRl bGV0ZV9lbnRyeSwgYm9vbCAqc2tpcHBlZF93cml0ZSkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJh bGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbzsKKworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKKworCWlmIChza2lw cGVkX3dyaXRlKQorCQkqc2tpcHBlZF93cml0ZSA9IGZhbHNlOworCisJLyogRmluZCBhbiBlbnRy eSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNo KFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisKKwlpZiAo IWZvdW5kKQorCQlyZXR1cm4gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkvKgorCSAqIElmIHdvcmtl ciBpbmZvIGlzIE5VTEwsIGl0IGluZGljYXRlcyB0aGF0IHRoZSB3b3JrZXIgaGFzIGJlZW4gcmV1 c2VkCisJICogZm9yIGhhbmRsaW5nIG90aGVyIHRyYW5zYWN0aW9ucy4gQ29uc2VxdWVudGx5LCB0 aGUgbG9jYWwgZW5kIExTTiBoYXMKKwkgKiBhbHJlYWR5IGJlZW4gY29sbGVjdGVkIGFuZCBzYXZl ZCBpbiBlbnRyeS0+bG9jYWxfZW5kLgorCSAqLworCXdpbmZvID0gZW50cnktPndpbmZvOworCWlm ICh3aW5mbyA9PSBOVUxMKQorCXsKKwkJaWYgKGRlbGV0ZV9lbnRyeSAmJgorCQkJIWhhc2hfc2Vh cmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgTlVMTCkpCisJCQll bG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCQlpZiAoc2tpcHBlZF93cml0 ZSkKKwkJCSpza2lwcGVkX3dyaXRlID0gWExvZ1JlY1B0cklzSW52YWxpZChlbnRyeS0+bG9jYWxf ZW5kKTsKKworCQlyZXR1cm4gZW50cnktPmxvY2FsX2VuZDsKKwl9CisKKwkvKiBSZXR1cm4gSW52 YWxpZFhMb2dSZWNQdHIgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGluIHByb2dyZXNzICov CisJaWYgKHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpICE9IFBBUkFMTEVMX1RSQU5T X0ZJTklTSEVEKQorCQlyZXR1cm4gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkvKiBDb2xsZWN0IHRo ZSBsb2NhbCBlbmQgTFNOIGZyb20gdGhlIHdvcmtlcidzIHNoYXJlZCBtZW1vcnkgYXJlYSAqLwor CWVudHJ5LT5sb2NhbF9lbmQgPSB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQ7CisJZW50 cnktPndpbmZvID0gTlVMTDsKKworCWlmIChza2lwcGVkX3dyaXRlKQorCQkqc2tpcHBlZF93cml0 ZSA9IFhMb2dSZWNQdHJJc0ludmFsaWQoZW50cnktPmxvY2FsX2VuZCk7CisKKwllbG9nKERFQlVH MSwgInN0b3JlIGxvY2FsIGNvbW1pdCAlWC8lWCBlbmQgdG8gdHhuIGVudHJ5OiAldSIsCisJCSBM U05fRk9STUFUX0FSR1MoZW50cnktPmxvY2FsX2VuZCksIHhpZCk7CisKKwlpZiAoZGVsZXRlX2Vu dHJ5ICYmCisJCSFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9S RU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwor CXJldHVybiBlbnRyeS0+bG9jYWxfZW5kOworfQorCiAvKgogICogSW50ZXJydXB0IGhhbmRsZXIg Zm9yIG1haW4gbG9vcCBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCiAgKi8KQEAgLTE2ODYsNiAr MTc1NiwyNiBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8s IFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAlwYV9mcmVlX3dvcmtlcih3aW5mbyk7CiB9CiAKK2Jv b2wKK3BhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29s CQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJQXNzZXJ0KFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOworCisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJl cXVlc3RlZCB0cmFuc2FjdGlvbiAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBs eVR4bkhhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKworCWlmICghZm91bmQpCisJCXJl dHVybiB0cnVlOworCisJaWYgKCFlbnRyeS0+d2luZm8pCisJCXJldHVybiB0cnVlOworCisJcmV0 dXJuIHBhX2dldF94YWN0X3N0YXRlKGVudHJ5LT53aW5mby0+c2hhcmVkKSA9PSBQQVJBTExFTF9U UkFOU19GSU5JU0hFRDsKK30KKwogLyoKICAqIEF0dGFjaCB0byB0aGUgc2hhcmVkIGhhc2ggdGFi bGUgZm9yIHBhcmFsbGVsaXplZCB0cmFuc2FjdGlvbnMuCiAgKi8KQEAgLTE3MzEsNiArMTgyMSwz NyBAQCBwYV9hdHRhY2hfcGFyYWxsZWxpemVkX3R4bl9oYXNoKGRzYV9oYW5kbGUgKnBhX2RzYV9o YW5kbGUsCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKKy8qCisgKiBSZWNv cmQgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGZyb20gdGhlIGdpdmVuIGxpc3QgdGhhdCBhcmUg YmVpbmcgZGVwZW5kZWQKKyAqIG9uIGludG8gdGhlIHNoYXJlZCBoYXNoIHRhYmxlLgorICovCit2 b2lkCitwYV9yZWNvcmRfZGVwZW5kZW5jeV9vbl90cmFuc2FjdGlvbnMoTGlzdCAqZGVwZW5kc19v bl94aWRzKQoreworCWZvcmVhY2hfeGlkKHhpZCwgZGVwZW5kc19vbl94aWRzKQorCXsKKwkJYm9v bAkJZm91bmQ7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqd2luZm9fZW50cnk7CisJCVBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwkJUGFyYWxsZWxpemVkVHhuRW50cnkgKnR4 bl9lbnRyeTsKKworCQl3aW5mb19lbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5I YXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJCXdpbmZvID0gd2luZm9fZW50cnktPndp bmZvOworCisJCXR4bl9lbnRyeSA9IGRzaGFzaF9maW5kX29yX2luc2VydChwYXJhbGxlbGl6ZWRf dHhucywgJnhpZCwgJmZvdW5kKTsKKworCQkvKgorCQkgKiBJZiB0aGUgdHJhbnNhY3Rpb24gaGFz IGJlZW4gY29tbWl0dGVkIG5vdywgcmVtb3ZlIHRoZSBlbnRyeSwKKwkJICogb3RoZXJ3aXNlIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCByZW1vdmUgdGhlIGVudHJ5IG9uY2UKKwkJICog Y29tbWl0dGVkIHRoZSB0cmFuc2FjdGlvbi4KKwkJICovCisJCWlmIChwYV9nZXRfeGFjdF9zdGF0 ZSh3aW5mby0+c2hhcmVkKSA9PSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJCWRzaGFzaF9k ZWxldGVfZW50cnkocGFyYWxsZWxpemVkX3R4bnMsIHR4bl9lbnRyeSk7CisJCWVsc2UKKwkJCWRz aGFzaF9yZWxlYXNlX2xvY2socGFyYWxsZWxpemVkX3R4bnMsIHR4bl9lbnRyeSk7CisJfQorfQor CiAvKgogICogV2FpdCBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uIHRvIGZpbmlzaC4KICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDBiMWQ4MGI1 YjBmLi5hYjYzMTNlYjFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVs YXRpb24uYwpAQCAtOTYwLDMgKzk2MCwyNyBAQCBGaW5kTG9naWNhbFJlcExvY2FsSW5kZXgoUmVs YXRpb24gbG9jYWxyZWwsIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsLAogCiAJcmV0dXJu IEludmFsaWRPaWQ7CiB9CisKKy8qCisgKiBHZXQgdGhlIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSBj b3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiByZWxpZCB3aXRob3V0CisgKiBvcGVuaW5nIHRoZSBs b2NhbCByZWxhdGlvbi4KKyAqLworTG9naWNhbFJlcFJlbE1hcEVudHJ5ICoKK2xvZ2ljYWxyZXBf Z2V0X3JlbGVudHJ5KExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCkKK3sKKwlMb2dpY2FsUmVwUmVs TWFwRW50cnkgKmVudHJ5OworCWJvb2wJCWZvdW5kOworCisJaWYgKExvZ2ljYWxSZXBSZWxNYXAg PT0gTlVMTCkKKwkJbG9naWNhbHJlcF9yZWxtYXBfaW5pdCgpOworCisJLyogU2VhcmNoIGZvciBl eGlzdGluZyBlbnRyeS4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBSZWxNYXAs ICh2b2lkICopICZyZW1vdGVpZCwKKwkJCQkJCUhBU0hfRklORCwgJmZvdW5kKTsKKworCWlmICgh Zm91bmQpCisJCWVsb2coREVCVUcxLCAibm8gcmVsYXRpb24gbWFwIGVudHJ5IGZvciByZW1vdGUg cmVsYXRpb24gSUQgJXUiLAorCQkJIHJlbW90ZWlkKTsKKworCXJldHVybiBlbnRyeTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDQzZGNlMmI1NjIyLi5j Mjk2N2NhZjFlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBA IC0zMDMsNiArMzAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRmx1c2hQb3NpdGlvbgogCWRsaXN0X25v ZGUJbm9kZTsKIAlYTG9nUmVjUHRyCWxvY2FsX2VuZDsKIAlYTG9nUmVjUHRyCXJlbW90ZV9lbmQ7 CisJVHJhbnNhY3Rpb25JZCBwYV9yZW1vdGVfeGlkOwogfSBGbHVzaFBvc2l0aW9uOwogCiBzdGF0 aWMgZGxpc3RfaGVhZCBsc25fbWFwcGluZyA9IERMSVNUX1NUQVRJQ19JTklUKGxzbl9tYXBwaW5n KTsKQEAgLTU0NCw2ICs1NDUsNDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlTdWJYYWN0RGF0YQog CiBzdGF0aWMgQXBwbHlTdWJYYWN0RGF0YSBzdWJ4YWN0X2RhdGEgPSB7MCwgMCwgSW52YWxpZFRy YW5zYWN0aW9uSWQsIE5VTEx9OwogCit0eXBlZGVmIHN0cnVjdCBSZXBsaWNhSWRlbnRpdHlLZXkK K3sKKwlPaWQJCQlyZWxpZDsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhICpkYXRhOworfSBSZXBsaWNh SWRlbnRpdHlLZXk7CisKK3R5cGVkZWYgc3RydWN0IFJlcGxpY2FJZGVudGl0eUVudHJ5Cit7CisJ UmVwbGljYUlkZW50aXR5S2V5ICprZXlkYXRhOworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsK KworCS8qIG5lZWRlZCBmb3Igc2ltcGxlaGFzaCAqLworCXVpbnQzMgkJaGFzaDsKKwljaGFyCQlz dGF0dXM7Cit9IFJlcGxpY2FJZGVudGl0eUVudHJ5OworCisjaW5jbHVkZSAiY29tbW9uL2hhc2hm bi5oIgorCitzdGF0aWMgdWludDMyIGhhc2hfcmVwbGljYV9pZGVudGl0eShSZXBsaWNhSWRlbnRp dHlLZXkgKmtleSk7CitzdGF0aWMgYm9vbCBoYXNoX3JlcGxpY2FfaWRlbnRpdHlfY29tcGFyZShS ZXBsaWNhSWRlbnRpdHlLZXkgKmEsCisJCQkJCQkJCQkJICBSZXBsaWNhSWRlbnRpdHlLZXkgKmIp OworCisvKiBEZWZpbmUgcGFyYW1ldGVycyBmb3IgcmVwbGljYSBpZGVudGl0eSBoYXNoIHRhYmxl IGNvZGUgZ2VuZXJhdGlvbi4gKi8KKyNkZWZpbmUgU0hfUFJFRklYCQlyZXBsaWNhX2lkZW50aXR5 CisjZGVmaW5lIFNIX0VMRU1FTlRfVFlQRQlSZXBsaWNhSWRlbnRpdHlFbnRyeQorI2RlZmluZSBT SF9LRVlfVFlQRQkJUmVwbGljYUlkZW50aXR5S2V5ICoKKyNkZWZpbmUJU0hfS0VZCQkJa2V5ZGF0 YQorI2RlZmluZSBTSF9IQVNIX0tFWSh0Yiwga2V5KQloYXNoX3JlcGxpY2FfaWRlbnRpdHkoa2V5 KQorI2RlZmluZSBTSF9FUVVBTCh0YiwgYSwgYikJCWhhc2hfcmVwbGljYV9pZGVudGl0eV9jb21w YXJlKGEsIGIpCisjZGVmaW5lIFNIX1NUT1JFX0hBU0gKKyNkZWZpbmUgU0hfR0VUX0hBU0godGIs IGEpIChhKS0+aGFzaAorI2RlZmluZQlTSF9TQ09QRQkJc3RhdGljIGlubGluZQorI2RlZmluZSBT SF9ERUNMQVJFCisjZGVmaW5lIFNIX0RFRklORQorI2luY2x1ZGUgImxpYi9zaW1wbGVoYXNoLmgi CisKKyNkZWZpbmUgUkVQTElDQV9JREVOVElUWV9JTklUSUFMX1NJWkUgMTI4CisjZGVmaW5lIFJF UExJQ0FfSURFTlRJVFlfQ0xFQU5VUF9USFJFU0hPTEQgMTAyNAorCitzdGF0aWMgcmVwbGljYV9p ZGVudGl0eV9oYXNoICpyZXBsaWNhX2lkZW50aXR5X3RhYmxlID0gTlVMTDsKKworc3RhdGljIHZv aWQgd3JpdGVfaW50ZXJuYWxfZGVwZW5kZW5jaWVzKFN0cmluZ0luZm8gcywgTGlzdCAqZGVwZW5k c19vbl94aWRzKTsKKwogc3RhdGljIGlubGluZSB2b2lkIHN1YnhhY3RfZmlsZW5hbWUoY2hhciAq cGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBzdGF0aWMgaW5saW5lIHZvaWQg Y2hhbmdlc19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlk KTsKIApAQCAtNjI5LDYgKzY3Myw1NDYgQEAgc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwKIAogc3RhdGljIHZvaWQg b25fZXhpdF9jbGVhcl94YWN0X3N0YXRlKGludCBjb2RlLCBEYXR1bSBhcmcpOwogCitzdGF0aWMg Ym9vbCBzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8sCisJCQkJCQkJCQkgICBTdHJpbmdJbmZvIHMpOworCisvKgorICogQ29tcHV0ZSB0aGUg aGFzaCB2YWx1ZSBmb3IgZW50cmllcyBpbiB0aGUgcmVwbGljYV9pZGVudGl0eV90YWJsZS4KKyAq Lworc3RhdGljIHVpbnQzMgoraGFzaF9yZXBsaWNhX2lkZW50aXR5KFJlcGxpY2FJZGVudGl0eUtl eSAqa2V5KQoreworCWludAkJCWk7CisJdWludDMyCQloYXNoa2V5ID0gMDsKKworCWhhc2hrZXkg PSBoYXNoX2NvbWJpbmUoaGFzaGtleSwgaGFzaF91aW50MzIoa2V5LT5yZWxpZCkpOworCisJZm9y IChpID0gMDsgaSA8IGtleS0+ZGF0YS0+bmNvbHM7IGkrKykKKwl7CisJCXVpbnQzMgkJaGtleTsK KworCQlpZiAoa2V5LT5kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9HSUNBTFJFUF9DT0xVTU5fTlVM TCkKKwkJCWNvbnRpbnVlOworCisJCWhrZXkgPSBoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hh ciAqKSBrZXktPmRhdGEtPmNvbHZhbHVlc1tpXS5kYXRhLAorCQkJCQkJa2V5LT5kYXRhLT5jb2x2 YWx1ZXNbaV0ubGVuKTsKKwkJaGFzaGtleSA9IGhhc2hfY29tYmluZShoYXNoa2V5LCBoa2V5KTsK Kwl9CisKKwlyZXR1cm4gaGFzaGtleTsKK30KKworLyoKKyAqIENvbXBhcmUgdHdvIGVudHJpZXMg aW4gdGhlIHJlcGxpY2FfaWRlbnRpdHlfdGFibGUuCisgKi8KK3N0YXRpYyBib29sCitoYXNoX3Jl cGxpY2FfaWRlbnRpdHlfY29tcGFyZShSZXBsaWNhSWRlbnRpdHlLZXkgKmEsIFJlcGxpY2FJZGVu dGl0eUtleSAqYikKK3sKKwlpZiAoYS0+cmVsaWQgIT0gYi0+cmVsaWQgfHwKKwkJYS0+ZGF0YS0+ bmNvbHMgIT0gYi0+ZGF0YS0+bmNvbHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaW50IGkg PSAwOyBpIDwgYS0+ZGF0YS0+bmNvbHM7IGkrKykKKwl7CisJCWlmIChhLT5kYXRhLT5jb2xzdGF0 dXNbaV0gIT0gYi0+ZGF0YS0+Y29sc3RhdHVzW2ldKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlm IChhLT5kYXRhLT5jb2x2YWx1ZXNbaV0ubGVuICE9IGItPmRhdGEtPmNvbHZhbHVlc1tpXS5sZW4p CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJaWYgKHN0cmNtcChhLT5kYXRhLT5jb2x2YWx1ZXNbaV0u ZGF0YSwgYi0+ZGF0YS0+Y29sdmFsdWVzW2ldLmRhdGEpKQorCQkJcmV0dXJuIGZhbHNlOworCisJ CWVsb2coREVCVUcxLCAiY29uZmxpY3Rpbmcga2V5ICVzIiwgYS0+ZGF0YS0+Y29sdmFsdWVzW2ld LmRhdGEpOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogRnJlZSByZXNvdXJjZXMg YXNzb2NpYXRlZCB3aXRoIGEgcmVwbGljYSBpZGVudGl0eSBrZXkuCisgKi8KK3N0YXRpYyB2b2lk CitmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KFJlcGxpY2FJZGVudGl0eUtleSAqa2V5KQorewor CUFzc2VydChrZXkpOworCisJcGZyZWUoa2V5LT5kYXRhLT5jb2x2YWx1ZXMpOworCXBmcmVlKGtl eS0+ZGF0YS0+Y29sc3RhdHVzKTsKKwlwZnJlZShrZXktPmRhdGEpOworCXBmcmVlKGtleSk7Cit9 CisKKy8qCisgKiBDbGVhbiB1cCBoYXNoIHRhYmxlIGVudHJpZXMgYXNzb2NpYXRlZCB3aXRoIHRo ZSBnaXZlbiB0cmFuc2FjdGlvbiBJRHMuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX3JlcGxp Y2FfaWRlbnRpdHlfdGFibGUoTGlzdCAqY29tbWl0dGVkX3hpZCkKK3sKKwlyZXBsaWNhX2lkZW50 aXR5X2l0ZXJhdG9yIGk7CisJUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CisKKwlpZiAo IWNvbW1pdHRlZF94aWQpCisJCXJldHVybjsKKworCXJlcGxpY2FfaWRlbnRpdHlfc3RhcnRfaXRl cmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7CisJd2hpbGUgKChyaWVudHJ5ID0gcmVw bGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsICZpKSkgIT0gTlVM TCkKKwl7CisJCWlmICghbGlzdF9tZW1iZXJfeGlkKGNvbW1pdHRlZF94aWQsIHJpZW50cnktPnJl bW90ZV94aWQpKQorCQkJY29udGludWU7CisKKwkJLyogQ2xlYW4gdXAgdGhlIGhhc2ggZW50cnkg Zm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbiAqLworCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5 KHJpZW50cnktPmtleWRhdGEpOworCQlyZXBsaWNhX2lkZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxp Y2FfaWRlbnRpdHlfdGFibGUsIHJpZW50cnkpOworCX0KK30KKworLyoKKyAqIENoZWNrIGNvbW1p dHRlZCB0cmFuc2FjdGlvbnMgYW5kIGNsZWFuIHVwIGNvcnJlc3BvbmRpbmcgZW50cmllcyBpbiB0 aGUgaGFzaAorICogdGFibGUuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX2NvbW1pdHRlZF9y ZXBsaWNhX2lkZW50aXR5X2VudHJpZXModm9pZCkKK3sKKwlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRl cjsKKwlMaXN0CSAgICpjb21taXR0ZWRfeGlkcyA9IE5JTDsKKworCWRsaXN0X2ZvcmVhY2hfbW9k aWZ5KGl0ZXIsICZsc25fbWFwcGluZykKKwl7CisJCUZsdXNoUG9zaXRpb24gKnBvcyA9CisJCQlk bGlzdF9jb250YWluZXIoRmx1c2hQb3NpdGlvbiwgbm9kZSwgaXRlci5jdXIpOworCQlib29sCQlz a2lwcGVkX3dyaXRlOworCisJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQocG9zLT5wYV9yZW1v dGVfeGlkKSB8fAorCQkJIVhMb2dSZWNQdHJJc0ludmFsaWQocG9zLT5sb2NhbF9lbmQpKQorCQkJ Y29udGludWU7CisKKwkJcG9zLT5sb2NhbF9lbmQgPSBwYV9nZXRfbGFzdF9jb21taXRfZW5kKHBv cy0+cGFfcmVtb3RlX3hpZCwgdHJ1ZSwKKwkJCQkJCQkJCQkJCSZza2lwcGVkX3dyaXRlKTsKKwor CQllbG9nKERFQlVHMSwKKwkJCSAiZ290IGNvbW1pdCBlbmQgZnJvbSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIsICIKKwkJCSAidHhuOiAldSwgcmVtb3RlX2VuZCAlWC8lWCwgbG9jYWxfZW5kICVYLyVY IiwKKwkJCSBwb3MtPnBhX3JlbW90ZV94aWQsIExTTl9GT1JNQVRfQVJHUyhwb3MtPnJlbW90ZV9l bmQpLAorCQkJIExTTl9GT1JNQVRfQVJHUyhwb3MtPmxvY2FsX2VuZCkpOworCisJCWlmICghc2tp cHBlZF93cml0ZSAmJiBYTG9nUmVjUHRySXNJbnZhbGlkKHBvcy0+bG9jYWxfZW5kKSkKKwkJCWNv bnRpbnVlOworCisJCWNvbW1pdHRlZF94aWRzID0gbGFwcGVuZF94aWQoY29tbWl0dGVkX3hpZHMs IHBvcy0+cGFfcmVtb3RlX3hpZCk7CisJfQorCisJLyogY2xlYW51cCB0aGUgZW50cmllcyBmb3Ig Y29tbWl0dGVkIHRyYW5zYWN0aW9ucyAqLworCWNsZWFudXBfcmVwbGljYV9pZGVudGl0eV90YWJs ZShjb21taXR0ZWRfeGlkcyk7Cit9CisKKy8qCisgKiBBcHBlbmQgYSB0cmFuc2FjdGlvbiBkZXBl bmRlbmN5LCBleGNsdWRpbmcgZHVwbGljYXRlcyBhbmQgY29tbWl0dGVkCisgKiB0cmFuc2FjdGlv bnMuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2NoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3ko TGlzdCAqZGVwZW5kc19vbl94aWRzLAorCQkJCQkJCQlUcmFuc2FjdGlvbklkICpkZXBlbmRzX29u X3hpZCwKKwkJCQkJCQkJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCkKK3sKKwlBc3NlcnQoZGVw ZW5kc19vbl94aWQpOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqZGVwZW5kc19vbl94 aWQpKQorCQlyZXR1cm4gZGVwZW5kc19vbl94aWRzOworCisJaWYgKFRyYW5zYWN0aW9uSWRFcXVh bHMoKmRlcGVuZHNfb25feGlkLCBjdXJyZW50X3hpZCkpCisJCXJldHVybiBkZXBlbmRzX29uX3hp ZHM7CisKKwlpZiAobGlzdF9tZW1iZXJfeGlkKGRlcGVuZHNfb25feGlkcywgKmRlcGVuZHNfb25f eGlkKSkKKwkJcmV0dXJuIGRlcGVuZHNfb25feGlkczsKKworCS8qCisJICogUmV0dXJuIGFuZCBy ZXNldCB0aGUgeGlkIGlmIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBjb21taXR0ZWQuCisJICov CisJaWYgKHBhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZCgqZGVwZW5kc19vbl94aWQpKQorCXsKKwkJ KmRlcGVuZHNfb25feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCXJldHVybiBkZXBlbmRz X29uX3hpZHM7CisJfQorCisJcmV0dXJuIGxhcHBlbmRfeGlkKGRlcGVuZHNfb25feGlkcywgKmRl cGVuZHNfb25feGlkKTsKK30KKworLyoKKyAqIENoZWNrIGZvciBkZXBlbmRlbmNpZXMgb24gcHJl Y2VkaW5nIHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlmeSB0aGUgc2FtZSBrZXkuCisgKiBSZXR1cm5z IHRoZSBkZXBlbmRlbnQgdHJhbnNhY3Rpb25zIGluICdkZXBlbmRzX29uX3hpZHMnIGFuZCByZWNv cmRzIHRoZQorICogY3VycmVudCBjaGFuZ2UuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19kZXBl bmRlbmN5X29uX3JlcGxpY2FfaWRlbnRpdHkoT2lkIHJlbGlkLAorCQkJCQkJCQkJIExvZ2ljYWxS ZXBUdXBsZURhdGEgKm9yaWdpbmFsX2RhdGEsCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBuZXdf ZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJIExpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7CisJTG9n aWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhICpyaWRh dGE7CisJUmVwbGljYUlkZW50aXR5S2V5ICpyaWtleTsKKwlSZXBsaWNhSWRlbnRpdHlFbnRyeSAq cmllbnRyeTsKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlpbnQJCQluX3JpOworCWJvb2wJCWZv dW5kID0gZmFsc2U7CisKKwlBc3NlcnQoZGVwZW5kc19vbl94aWRzKTsKKworCS8qIFNlYXJjaCBm b3IgZXhpc3RpbmcgZW50cnkgKi8KKwlyZWxlbnRyeSA9IGxvZ2ljYWxyZXBfZ2V0X3JlbGVudHJ5 KHJlbGlkKTsKKworCUFzc2VydChyZWxlbnRyeSk7CisKKwkvKgorCSAqIEZpcnN0IHNlYXJjaCB3 aGV0aGVyIGFueSBwcmV2aW91cyB0cmFuc2FjdGlvbiBoYXMgYWZmZWN0ZWQgdGhlIHdob2xlCisJ ICogdGFibGUgZS5nLiwgdHJ1bmNhdGUgb3Igc2NoZW1hIGNoYW5nZSBmcm9tIHB1Ymxpc2hlci4K KwkgKi8KKwkqZGVwZW5kc19vbl94aWRzID0gY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5j eSgqZGVwZW5kc19vbl94aWRzLAorCQkJCQkJCQkJCQkJCSAgICZyZWxlbnRyeS0+bGFzdF9kZXBl bmRlZF94aWQsCisJCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hpZCk7CisKKwluX3JpID0g Ym1zX251bV9tZW1iZXJzKHJlbGVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyk7CisKKwkvKgorCSAq IFJldHVybiBpZiB0aGVyZSBhcmUgbm8gcmVwbGljYSBpZGVudGl0eSBjb2x1bW5zLCBpbmRpY2F0 aW5nIHRoYXQgdGhlCisJICogcmVtb3RlIHJlbGF0aW9uIGhhcyBuZWl0aGVyIGEgcmVwbGljYSBp ZGVudGl0eSBrZXkgbm9yIGlzIG1hcmtlZCBhcworCSAqIHJlcGxpY2EgaWRlbnRpdHkgZnVsbC4K KwkgKi8KKwlpZiAoIW5fcmkpCisJCXJldHVybjsKKworCS8qIENoZWNrIGlmIHRoZSBSSSBrZXkg dmFsdWUgb2YgdGhlIHR1cGxlIGlzIGludmFsaWQgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG9y aWdpbmFsX2RhdGEtPm5jb2xzOyBpKyspCisJeworCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgcmVs ZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzKSkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFJl dHVybiBpZiBSSSBrZXkgaXMgTlVMTCBvciBpcyBleHBsaWNpdGx5IG1hcmtlZCB1bmNoYW5nZWQu IFRoZSBrZXkKKwkJICogdmFsdWUgY291bGQgYmUgTlVMTCBpbiB0aGUgbmV3IHR1cGxlIG9mIGEg dXBkYXRlIG9wZXJ0YWlvbiB3aGljaAorCQkgKiBtZWFucyB0aGUgUkkga2V5IGlzIG5vdCB1cGRh dGVkLgorCQkgKi8KKwkJaWYgKG9yaWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FM UkVQX0NPTFVNTl9OVUxMIHx8CisJCQlvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9H SUNBTFJFUF9DT0xVTU5fVU5DSEFOR0VEKQorCQkJcmV0dXJuOworCX0KKworCW9sZGN0eCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJLyogQWxsb2NhdGUgc3BhY2Ug Zm9yIHJlcGxpY2EgaWRlbnRpdHkgdmFsdWVzICovCisJcmlkYXRhID0gcGFsbG9jMF9vYmplY3Qo TG9naWNhbFJlcFR1cGxlRGF0YSk7CisJcmlkYXRhLT5jb2x2YWx1ZXMgPSBwYWxsb2MwX2FycmF5 KFN0cmluZ0luZm9EYXRhLCBuX3JpKTsKKwlyaWRhdGEtPmNvbHN0YXR1cyA9IHBhbGxvYzBfYXJy YXkoY2hhciwgbl9yaSk7CisJcmlkYXRhLT5uY29scyA9IG5fcmk7CisKKwlmb3IgKGludCBpX29y aWdpbmFsID0gMCwgaV9yaSA9IDA7IGlfb3JpZ2luYWwgPCBvcmlnaW5hbF9kYXRhLT5uY29sczsg aV9vcmlnaW5hbCsrKQorCXsKKwkJU3RyaW5nSW5mbwlvcmlnaW5hbF9jb2x2YWx1ZSA9ICZvcmln aW5hbF9kYXRhLT5jb2x2YWx1ZXNbaV9vcmlnaW5hbF07CisKKwkJaWYgKCFibXNfaXNfbWVtYmVy KGlfb3JpZ2luYWwsIHJlbGVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cykpCisJCQljb250aW51ZTsK KworCQlpbml0U3RyaW5nSW5mb0V4dCgmcmlkYXRhLT5jb2x2YWx1ZXNbaV9yaV0sIG9yaWdpbmFs X2NvbHZhbHVlLT5sZW4gKyAxKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcmlkYXRhLT5j b2x2YWx1ZXNbaV9yaV0sIG9yaWdpbmFsX2NvbHZhbHVlLT5kYXRhKTsKKwkJcmlkYXRhLT5jb2xz dGF0dXNbaV9yaV0gPSBvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV9vcmlnaW5hbF07CisJCWlf cmkrKzsKKwl9CisKKwlyaWtleSA9IHBhbGxvYzBfb2JqZWN0KFJlcGxpY2FJZGVudGl0eUtleSk7 CisJcmlrZXktPnJlbGlkID0gcmVsaWQ7CisJcmlrZXktPmRhdGEgPSByaWRhdGE7CisKKwlpZiAo VHJhbnNhY3Rpb25JZElzVmFsaWQobmV3X2RlcGVuZGVkX3hpZCkpCisJeworCQlyaWVudHJ5ID0g cmVwbGljYV9pZGVudGl0eV9pbnNlcnQocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmlrZXksCisJ CQkJCQkJCQkJICAmZm91bmQpOworCisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGtleSBidWlsdCB0 byBzZWFyY2ggdGhlIGVudHJ5LCBpZiB0aGUgZW50cnkgYWxyZWFkeQorCQkgKiBleGlzdHMuIE90 aGVyd2lzZSwgaW5pdGlhbGl6ZSB0aGUgcmVtb3RlX3hpZC4KKwkJICovCisJCWlmIChmb3VuZCkK KwkJeworCQkJZWxvZyhERUJVRzEsICJmb3VuZCBjb25mbGljdGluZyByZXBsaWNhIGlkZW50aXR5 IGNoYW5nZSBmcm9tICV1IiwKKwkJCQkgcmllbnRyeS0+cmVtb3RlX3hpZCk7CisKKwkJCWZyZWVf cmVwbGljYV9pZGVudGl0eV9rZXkocmlrZXkpOworCQl9CisJCWVsc2UKKwkJCXJpZW50cnktPnJl bW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl9CisJZWxzZQorCXsKKwkJcmllbnRy eSA9IHJlcGxpY2FfaWRlbnRpdHlfbG9va3VwKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIHJpa2V5 KTsKKwkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWtleSk7CisJfQorCisJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CisKKwkvKiBSZXR1cm4gaWYgbm8gZW50cnkgZm91bmQgKi8K KwlpZiAoIXJpZW50cnkpCisJCXJldHVybjsKKworCUFzc2VydCghZm91bmQgfHwgVHJhbnNhY3Rp b25JZElzVmFsaWQocmllbnRyeS0+cmVtb3RlX3hpZCkpOworCisJKmRlcGVuZHNfb25feGlkcyA9 IGNoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKKwkJCQkJ CQkJCQkJCQkgICAmcmllbnRyeS0+cmVtb3RlX3hpZCwKKwkJCQkJCQkJCQkJCQkgICBuZXdfZGVw ZW5kZWRfeGlkKTsKKworCS8qCisJICogVXBkYXRlIHRoZSBuZXcgZGVwZW5kZWQgeGlkIGludG8g dGhlIGVudHJ5IGlmIHZhbGlkLCB0aGUgbmV3IHhpZCBjb3VsZAorCSAqIGJlIGludmFsaWQgaWYg dGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCBieSB0aGUgbGVhZGVyIGl0c2VsZgorCSAq IHdoaWNoIG1lYW5zIGFsbCB0aGUgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCBiZWZvcmUgcHJv Y2Vzc2luZyBuZXh0CisJICogdHJhbnNhY3Rpb24sIHNvIG5vIG5lZWQgdG8gYmUgZGVwZW5kZWQg b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQor CQlyaWVudHJ5LT5yZW1vdGVfeGlkID0gbmV3X2RlcGVuZGVkX3hpZDsKKworCS8qCisJICogUmVt b3ZlIHRoZSBlbnRyeSBpZiB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0dGVkIGFuZCBu byBuZXcKKwkgKiBkZXBlbmRlbmN5IG5lZWRzIHRvIGJlIGFkZGVkLgorCSAqLworCWVsc2UgaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChyaWVudHJ5LT5yZW1vdGVfeGlkKSkKKwl7CisJCWZyZWVf cmVwbGljYV9pZGVudGl0eV9rZXkocmllbnRyeS0+a2V5ZGF0YSk7CisJCXJlcGxpY2FfaWRlbnRp dHlfZGVsZXRlX2l0ZW0ocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmllbnRyeSk7CisJfQorfQor CisvKgorICogQ2hlY2sgZm9yIHByZWNlZGluZyB0cmFuc2FjdGlvbnMgdGhhdCBpbnZvbHZlIGlu c2VydCwgZGVsZXRlLCBvciB1cGRhdGUKKyAqIG9wZXJhdGlvbnMgb24gdGhlIHNwZWNpZmllZCB0 YWJsZSwgYW5kIHJldHVybiB0aGVtIGluICdkZXBlbmRzX29uX3hpZHMnLgorICovCitzdGF0aWMg dm9pZAorZmluZF9hbGxfZGVwZW5kZW5jaWVzX29uX3JlbChMb2dpY2FsUmVwUmVsSWQgcmVsaWQs IFRyYW5zYWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkgTGlzdCAqKmRlcGVuZHNf b25feGlkcykKK3sKKwlyZXBsaWNhX2lkZW50aXR5X2l0ZXJhdG9yIGk7CisJUmVwbGljYUlkZW50 aXR5RW50cnkgKnJpZW50cnk7CisKKwlBc3NlcnQoZGVwZW5kc19vbl94aWRzKTsKKworCXJlcGxp Y2FfaWRlbnRpdHlfc3RhcnRfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7CisJ d2hpbGUgKChyaWVudHJ5ID0gcmVwbGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRlbnRp dHlfdGFibGUsICZpKSkgIT0gTlVMTCkKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChyaWVudHJ5LT5yZW1vdGVfeGlkKSk7CisKKwkJaWYgKHJpZW50cnktPmtleWRhdGEtPnJlbGlk ICE9IHJlbGlkKQorCQkJY29udGludWU7CisKKwkJLyogQ2xlYW4gdXAgdGhlIGhhc2ggZW50cnkg Zm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbiB3aGlsZSBvbiBpdCAqLworCQlpZiAocGFfdHJhbnNh Y3Rpb25fY29tbWl0dGVkKHJpZW50cnktPnJlbW90ZV94aWQpKQorCQl7CisJCQlmcmVlX3JlcGxp Y2FfaWRlbnRpdHlfa2V5KHJpZW50cnktPmtleWRhdGEpOworCQkJcmVwbGljYV9pZGVudGl0eV9k ZWxldGVfaXRlbShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCByaWVudHJ5KTsKKworCQkJY29udGlu dWU7CisJCX0KKworCQkqZGVwZW5kc19vbl94aWRzID0gY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVw ZW5kZW5jeSgqZGVwZW5kc19vbl94aWRzLAorCQkJCQkJCQkJCQkJCQkgICAmcmllbnRyeS0+cmVt b3RlX3hpZCwKKwkJCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hpZCk7CisJfQorfQorCisv KgorICogQ2hlY2sgZm9yIGFueSBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRoYXQgYWZmZWN0IHRo ZSBnaXZlbiB0YWJsZSBhbmQgcmV0dXJucworICogdGhlbSBpbiAnZGVwZW5kc19vbl94aWRzJy4K KyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2RlcGVuZGVuY3lfb25fcmVsKExvZ2ljYWxSZXBSZWxJ ZCByZWxpZCwgVHJhbnNhY3Rpb25JZCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJTGlzdCAqKmRl cGVuZHNfb25feGlkcykKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbGVudHJ5OworCisJ QXNzZXJ0KGRlcGVuZHNfb25feGlkcyk7CisKKwlmaW5kX2FsbF9kZXBlbmRlbmNpZXNfb25fcmVs KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworCisJLyogU2VhcmNo IGZvciBleGlzdGluZyBlbnRyeSAqLworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50 cnkocmVsaWQpOworCisJLyoKKwkgKiBUaGUgcmVsZW50cnkgaGFzIG5vdCBiZWVuIGluaXRpYWxp emVkIHlldCwgaW5kaWNhdGluZyBubyBjaGFuZ2UgaGFzCisJICogYmVlbiBhcHBsaWRlIHlldC4K KwkgKi8KKwlpZiAoIXJlbGVudHJ5KQorCQlyZXR1cm47CisKKwkqZGVwZW5kc19vbl94aWRzID0g Y2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeSgqZGVwZW5kc19vbl94aWRzLAorCQkJCQkJ CQkJCQkJCSAgICZyZWxlbnRyeS0+bGFzdF9kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkJICAg bmV3X2RlcGVuZGVkX3hpZCk7CisKKwlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobmV3X2RlcGVu ZGVkX3hpZCkpCisJCXJlbGVudHJ5LT5sYXN0X2RlcGVuZGVkX3hpZCA9IG5ld19kZXBlbmRlZF94 aWQ7Cit9CisKKy8qCisgKiBDaGVjayBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgY3VycmVu dCBjaGFuZ2UgYnkgZGV0ZXJtaW5pbmcgaWYgdGhlCisgKiBtb2RpZmljYXRpb24gaW1wYWN0cyB0 aGUgc2FtZSByb3cgb3IgdGFibGUgYXMgYW5vdGhlciBvbmdvaW5nIHRyYW5zYWN0aW9uLiBJZgor ICogbmVlZGVkLCBpbnN0cnVjdCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHRvIHdhaXQgZm9yIHRo ZXNlIHByZWNlZGluZworICogdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLgorICoKKyAqIFNpbXVs dGFuZW91c2x5LCB0cmFjayB0aGUgZGVwZW5kZW5jeSBmb3IgdGhlIGN1cnJlbnQgY2hhbmdlIHRv IGVuc3VyZSB0aGF0CisgKiBzdWJzZXF1ZW50IHRyYW5zYWN0aW9ucyBhZGRyZXNzIHRoaXMgZGVw ZW5kZW5jeS4KKyAqLworc3RhdGljIHZvaWQKK2hhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShM b2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKKwkJCQkJCQlUcmFuc2FjdGlv bklkIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvKQoreworCUxvZ2ljYWxSZXBSZWxJZCByZWxpZDsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhIG9s ZHR1cDsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhIG5ld3R1cDsKKwlMb2dpY2FsUmVwUmVsYXRpb24g KnJlbDsKKwlMaXN0CSAgICpkZXBlbmRzX29uX3hpZHMgPSBOSUw7CisJTGlzdAkgICAqcmVtb3Rl X3JlbGlkczsKKwlib29sCQloYXNfb2xkdHVwID0gZmFsc2U7CisJYm9vbAkJY2FzY2FkZSA9IGZh bHNlOworCWJvb2wJCXJlc3RhcnRfc2VxcyA9IGZhbHNlOworCVN0cmluZ0luZm9EYXRhIGRlcGVu ZGVuY2llczsKKworCS8qCisJICogUGFyc2UgdGhlIGNvbnN1bWUgZGF0YSB1c2luZyBhIGxvY2Fs IGNvcHkgaW5zdGVhZCBvZiBkaXJlY3RseSBjb25zdW1pbmcKKwkgKiB0aGUgZ2l2ZW4gcmVtb3Rl IGNoYW5nZSBhcyB0aGUgY2FsbGVyIG1heSBhbHNvIHJlYWQgdGhlIGRhdGEgZnJvbSB0aGUKKwkg KiByZW1vdGUgbWVzc2FnZS4KKwkgKi8KKwlTdHJpbmdJbmZvRGF0YSBjaGFuZ2UgPSAqczsKKwor CS8qIENvbXB1dGUgZGVwZW5kZW5jeSBvbmx5IGZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9u ICovCisJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIHx8ICh3aW5mbyAmJiB3aW5mby0+c3Ry ZWFtX3R4bikpCisJCXJldHVybjsKKworCS8qIE9ubHkgdGhlIGxlYWRlciBjaGVja3MgZGVwZW5k ZW5jaWVzIGFuZCBzY2hlZHVsZXMgdGhlIHBhcmFsbGVsIGFwcGx5ICovCisJaWYgKCFhbV9sZWFk ZXJfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghcmVwbGljYV9pZGVudGl0eV90 YWJsZSkKKwkJcmVwbGljYV9pZGVudGl0eV90YWJsZSA9IHJlcGxpY2FfaWRlbnRpdHlfY3JlYXRl KEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJIFJFUExJQ0FfSURFTlRJVFlfSU5JVElBTF9T SVpFLAorCQkJCQkJCQkJCQkJCQkgTlVMTCk7CisKKwlpZiAocmVwbGljYV9pZGVudGl0eV90YWJs ZS0+bWVtYmVycyA+PSBSRVBMSUNBX0lERU5USVRZX0NMRUFOVVBfVEhSRVNIT0xEKQorCQljbGVh bnVwX2NvbW1pdHRlZF9yZXBsaWNhX2lkZW50aXR5X2VudHJpZXMoKTsKKworCXN3aXRjaCAoYWN0 aW9uKQorCXsKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfSU5TRVJUOgorCQkJcmVsaWQgPSBsb2dp Y2FscmVwX3JlYWRfaW5zZXJ0KCZjaGFuZ2UsICZuZXd0dXApOworCQkJY2hlY2tfZGVwZW5kZW5j eV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmbmV3dHVwLAorCQkJCQkJCQkJCQkJIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQlicmVhazsK KworCQljYXNlIExPR0lDQUxfUkVQX01TR19VUERBVEU6CisJCQlyZWxpZCA9IGxvZ2ljYWxyZXBf cmVhZF91cGRhdGUoJmNoYW5nZSwgJmhhc19vbGR0dXAsICZvbGR0dXAsCisJCQkJCQkJCQkJICAg Jm5ld3R1cCk7CisKKwkJCWlmIChoYXNfb2xkdHVwKQorCQkJCWNoZWNrX2RlcGVuZGVuY3lfb25f cmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm9sZHR1cCwKKwkJCQkJCQkJCQkJCQkgbmV3X2RlcGVu ZGVkX3hpZCwKKwkJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisKKwkJCWNoZWNrX2Rl cGVuZGVuY3lfb25fcmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm5ld3R1cCwKKwkJCQkJCQkJCQkJ CSBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJ YnJlYWs7CisKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfREVMRVRFOgorCQkJcmVsaWQgPSBsb2dp Y2FscmVwX3JlYWRfZGVsZXRlKCZjaGFuZ2UsICZvbGR0dXApOworCQkJY2hlY2tfZGVwZW5kZW5j eV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmb2xkdHVwLAorCQkJCQkJCQkJCQkJIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQlicmVhazsK KworCQljYXNlIExPR0lDQUxfUkVQX01TR19UUlVOQ0FURToKKwkJCXJlbW90ZV9yZWxpZHMgPSBs b2dpY2FscmVwX3JlYWRfdHJ1bmNhdGUoJmNoYW5nZSwgJmNhc2NhZGUsCisJCQkJCQkJCQkJCQkJ ICZyZXN0YXJ0X3NlcXMpOworCisJCQkvKgorCQkJICogVHJ1bmNhdGUgYWZmZWN0cyBhbGwgcm93 cyBpbiBhIHRhYmxlLCBzbyB0aGUgY3VycmVudAorCQkJICogdHJhbnNhY3Rpb24gc2hvdWxkIHdh aXQgZm9yIGFsbCBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRoYXQKKwkJCSAqIG1vZGlmaWVkIHRo ZSBzYW1lIHRhYmxlLgorCQkJICovCisJCQlmb3JlYWNoX2ludCh0cnVuY2F0ZWRfcmVsaWQsIHJl bW90ZV9yZWxpZHMpCisJCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9yZWwodHJ1bmNhdGVkX3JlbGlk LCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCSZkZXBlbmRzX29uX3hpZHMpOworCisJCQli cmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19SRUxBVElPTjoKKwkJCXJlbCA9IGxvZ2lj YWxyZXBfcmVhZF9yZWwoJmNoYW5nZSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVwbGljYSBpZGVu dGl0eSBrZXkgY291bGQgYmUgY2hhbmdlZCwgbWFraW5nIGV4aXN0aW5nCisJCQkgKiBlbnRyaWVz IGluIHRoZSByZXBsaWNhIGlkZW50aXR5IGludmFsaWQuIEluIHRoaXMgY2FzZSwgcGFyYWxsZWwK KwkJCSAqIGFwcGx5IGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgc3BlY2lmaWMgdGFibGUgdW50aWwg YWxsIHJ1bm5pbmcKKwkJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlmaWVkIGl0IGhhdmUgZmlu aXNoZWQuCisJCQkgKi8KKwkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVsKHJlbC0+cmVtb3RlaWQs IG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkmZGVwZW5kc19vbl94aWRzKTsKKwkJCWJyZWFr OworCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1RZUEU6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNH X01FU1NBR0U6CisKKwkJCS8qCisJCQkgKiBUeXBlIHVwZGF0ZXMgYWNjb21wYW55IHJlbGF0aW9u IHVwZGF0ZXMsIHNvIGRlcGVuZGVuY2llcyBoYXZlCisJCQkgKiBhbHJlYWR5IGJlZW4gY2hlY2tl ZCBkdXJpbmcgcmVsYXRpb24gdXBkYXRlcy4gTG9naWNhbCBtZXNzYWdlcworCQkJICogZG8gbm90 IGNvbmZsaWN0IHdpdGggYW55IGNoYW5nZXMsIHNvIHRoZXkgY2FuIGJlIGlnbm9yZWQuCisJCQkg Ki8KKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7 CisJfQorCisJaWYgKCFkZXBlbmRzX29uX3hpZHMpCisJCXJldHVybjsKKworCS8qCisJICogTm90 aWZ5IHRoZSB0cmFuc2FjdGlvbnMgdGhhdCB0aGV5IGFyZSBkZXBlbmRlbnQgb24gdGhlIGN1cnJl bnQKKwkgKiB0cmFuc2FjdGlvbi4KKwkgKi8KKwlwYV9yZWNvcmRfZGVwZW5kZW5jeV9vbl90cmFu c2FjdGlvbnMoZGVwZW5kc19vbl94aWRzKTsKKworCS8qCisJICogSWYgdGhlIGxlYWRlciBhcHBs aWVzIHRoZSB0cmFuc2FjdGlvbiBpdHNlbGYsIHN0YXJ0IHdhaXRpbmcgZm9yCisJICogdHJhbnNh Y3Rpb25zIHRoYXQgZGVwZW5kIG9uIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5 LgorCSAqLworCWlmICh3aW5mbyA9PSBOVUxMKQorCXsKKwkJZm9yZWFjaF94aWQoeGlkLCBkZXBl bmRzX29uX3hpZHMpCisJCQlwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbih4aWQpOwor CisJCXJldHVybjsKKwl9CisKKwlpbml0U3RyaW5nSW5mbygmZGVwZW5kZW5jaWVzKTsKKworCS8q IEJ1aWxkIHRoZSBkZXBlbmRlbmN5IG1lc3NhZ2UgdXNlZCB0byBzZW5kIHRvIHBhcmFsbGVsIGFw cGx5IHdvcmtlciAqLworCXdyaXRlX2ludGVybmFsX2RlcGVuZGVuY2llcygmZGVwZW5kZW5jaWVz LCBkZXBlbmRzX29uX3hpZHMpOworCisJKHZvaWQpIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVz KHdpbmZvLCAmZGVwZW5kZW5jaWVzKTsKK30KKworLyoKKyAqIFdyaXRlIGludGVybmFsIGRlcGVu ZGVuY3kgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5Cisg KiB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9pbnRlcm5hbF9kZXBlbmRlbmNpZXMo U3RyaW5nSW5mbyBzLCBMaXN0ICpkZXBlbmRzX29uX3hpZHMpCit7CisJcHFfc2VuZGJ5dGUocywg UEFSQUxMRUxfQVBQTFlfSU5URVJOQUxfTUVTU0FHRSk7CisJcHFfc2VuZGJ5dGUocywgTE9HSUNB TF9SRVBfTVNHX0lOVEVSTkFMX0RFUEVOREVOQ1kpOworCXBxX3NlbmRpbnQzMihzLCBsaXN0X2xl bmd0aChkZXBlbmRzX29uX3hpZHMpKTsKKworCWZvcmVhY2hfeGlkKHhpZCwgZGVwZW5kc19vbl94 aWRzKQorCQlwcV9zZW5kaW50MzIocywgeGlkKTsKK30KKwogLyoKICAqIEhhbmRsZSBpbnRlcm5h bCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uLgogICoKQEAgLTgyNiw3ICsxNDEwLDEwIEBAIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwogCWlmIChhcHBseV9hY3Rpb24g PT0gVFJBTlNfTEVBREVSX0FQUExZKQorCXsKKwkJaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdl KGFjdGlvbiwgcywgSW52YWxpZFRyYW5zYWN0aW9uSWQsIHdpbmZvKTsKIAkJcmV0dXJuIGZhbHNl OworCX0KIAogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKQEAg LTEyNjgsNiArMTg1NSwzMyBAQCBhcHBseV9oYW5kbGVfYmVnaW4oU3RyaW5nSW5mbyBzKQogCXBn c3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CiB9CiAKKy8qCisgKiBT ZW5kIGFuIElOVEVSTkFMX0RFUEVOREVOQ1kgbWVzc2FnZSB0byBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHdlIHN3aXRjaGVkIHRvIHRoZSBzZXJpYWxp emUgbW9kZSB0byBzZW5kIHRoZSBtZXNzYWdlLAorICogdHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0 YXRpYyBib29sCitzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyhQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFN0cmluZ0luZm8gcykKK3sKKwlBc3NlcnQocy0+ZGF0YVswXSA9PSBQQVJB TExFTF9BUFBMWV9JTlRFUk5BTF9NRVNTQUdFKTsKKwlBc3NlcnQocy0+ZGF0YVsxXSA9PSBMT0dJ Q0FMX1JFUF9NU0dfSU5URVJOQUxfREVQRU5ERU5DWSk7CisKKwlpZiAoIXdpbmZvLT5zZXJpYWxp emVfY2hhbmdlcykKKwl7CisJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0 YSkpCisJCQlyZXR1cm4gdHJ1ZTsKKworCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUo d2luZm8sIHRydWUpOworCX0KKworCS8qIFNraXAgd3JpdGluZyB0aGUgZmlyc3QgaW50ZXJuYWwg bWVzc2FnZSBmbGFnICovCisJcy0+Y3Vyc29yKys7CisJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJ Q0FMX1JFUF9NU0dfSU5URVJOQUxfREVQRU5ERU5DWSwgcyk7CisKKwlyZXR1cm4gZmFsc2U7Cit9 CisKIC8qCiAgKiBIYW5kbGUgQ09NTUlUIG1lc3NhZ2UuCiAgKgpAQCAtMTc5NSw3ICsyNDA5LDcg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAkvKiBUcnkgdG8g YWxsb2NhdGUgYSB3b3JrZXIgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCiAJaWYg KGZpcnN0X3NlZ21lbnQpCi0JCXBhX2FsbG9jYXRlX3dvcmtlcihzdHJlYW1feGlkKTsKKwkJcGFf YWxsb2NhdGVfd29ya2VyKHN0cmVhbV94aWQsIHRydWUpOwogCiAJYXBwbHlfYWN0aW9uID0gZ2V0 X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IGVmZTBmOWQ2MDMxLi5mOWFh OWU1OWE2ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0 aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAg LTM3LDYgKzM3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJLyog U3luYyBzdGF0ZS4gKi8KIAljaGFyCQlzdGF0ZTsKIAlYTG9nUmVjUHRyCXN0YXRlbHNuOworCisJ VHJhbnNhY3Rpb25JZCBsYXN0X2RlcGVuZGVkX3hpZDsKIH0gTG9naWNhbFJlcFJlbE1hcEVudHJ5 OwogCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0 aW9uICpyZW1vdGVyZWwpOwpAQCAtNTAsNSArNTIsNiBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVw X3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwKIAkJCQkJCQkJIExPQ0tNT0RF IGxvY2ttb2RlKTsKIGV4dGVybiBib29sIElzSW5kZXhVc2FibGVGb3JSZXBsaWNhSWRlbnRpdHlG dWxsKFJlbGF0aW9uIGlkeHJlbCwgQXR0ck1hcCAqYXR0cm1hcCk7CiBleHRlcm4gT2lkCUdldFJl bGF0aW9uSWRlbnRpdHlPclBLKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gTG9naWNhbFJlcFJlbE1h cEVudHJ5ICpsb2dpY2FscmVwX2dldF9yZWxlbnRyeShMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQp OwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggNDExZTJjNTM3YzcuLjFkYmVjNjI1Yzgx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjM1LDYg KzIzNSw4IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCiAJICovCiAJ Ym9vbAkJaW5fdXNlOwogCisJYm9vbAkJc3RyZWFtX3R4bjsKKwogCVBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQgKnNoYXJlZDsKIH0gUGFyYWxsZWxBcHBseVdvcmtlckluZm87CiAKQEAgLTMzMiw4 ICszMzQsMTAgQEAgZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsK IGV4dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5u YW1lKTsKIAogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMg Ki8KLWV4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7Citl eHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3Ry ZWFtX3R4bik7CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2Vy KFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBYTG9nUmVjUHRyIHBhX2dldF9sYXN0X2NvbW1p dF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZGVsZXRlX2VudHJ5LAorCQkJCQkJCQkJCSBi b29sICpza2lwcGVkX3dyaXRlKTsKIGV4dGVybiB2b2lkIHBhX2RldGFjaF9hbGxfZXJyb3JfbXEo dm9pZCk7CiAKIGV4dGVybiBib29sIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sIFNpemUgbmJ5dGVzLApAQCAtMzYyLDYgKzM2Niw4IEBAIGV4dGVybiB2b2lkIHBh X2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQpOwogCiBleHRlcm4gdm9pZCBwYV94YWN0 X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVj UHRyIHJlbW90ZV9sc24pOworZXh0ZXJuIGJvb2wgcGFfdHJhbnNhY3Rpb25fY29tbWl0dGVkKFRy YW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3JlY29yZF9kZXBlbmRlbmN5X29uX3Ry YW5zYWN0aW9ucyhMaXN0ICpkZXBlbmRzX29uX3hpZHMpOwogCiBleHRlcm4gdm9pZCBwYV93YWl0 X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggZDk5YzE5OTZlZmQuLjA1OTM2ZDYxYTU0IDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMjU4Miw2ICsyNTgyLDggQEAgUmVwbE9yaWdpblhhY3RTdGF0 ZQogUmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdF9jb250ZXh0CiBSZXBsYWNlVmFyc05vTWF0Y2hP cHRpb24KIFJlcGxhY2VXcmFwT3B0aW9uCitSZXBsaWNhSWRlbnRpdHlFbnRyeQorUmVwbGljYUlk ZW50aXR5S2V5CiBSZXBsaWNhSWRlbnRpdHlTdG10CiBSZXBsaWNhdGlvbktpbmQKIFJlcGxpY2F0 aW9uU2xvdApAQCAtMjU5Myw2ICsyNTk1LDcgQEAgUmVwbGljYXRpb25TbG90UGVyc2lzdGVudERh dGEKIFJlcGxpY2F0aW9uU3RhdGUKIFJlcGxpY2F0aW9uU3RhdGVDdGwKIFJlcGxpY2F0aW9uU3Rh dGVPbkRpc2sKK3JlcGxpY2FfaWRlbnRpdHlfaGFzaAogUmVzVGFyZ2V0CiBSZXNlcnZvaXJTdGF0 ZQogUmVzZXJ2b2lyU3RhdGVEYXRhCi0tIAoyLjQ3LjMKCg== --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0004-Parallel-apply-non-streaming-transactions.patch" Content-Description: v8-0004-Parallel-apply-non-streaming-transactions.patch Content-Disposition: attachment; filename="v8-0004-Parallel-apply-non-streaming-transactions.patch"; size=52513; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSBiOTA2MzAzOTIyYTA2NjNhNTM2NzdjYThjMWI0MDgyZjEwYTVjZTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTI6Mjg6MjkgKzA5MDAKU3ViamVjdDogW1BBVENI IHY4IDQvOV0gUGFyYWxsZWwgYXBwbHkgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMKCi0tCkJh c2ljIGRlc2lnbgotLQoKVGhlIGxlYWRlciB3b3JrZXIgYXNzaWducyBlYWNoIG5vbi1zdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIuIEJlZm9yZSBkaXNwYXRj aGluZyBjaGFuZ2VzIHRvIGEgcGFyYWxsZWwgd29ya2VyLCB0aGUgbGVhZGVyIHZlcmlmaWVzIGlm CnRoZSBjdXJyZW50IG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBzYW1lIHJvdyAoaWRlbnRpdGll ZCBieSByZXBsaWNhIGlkZW50aXR5CmtleSkgYXMgYW5vdGhlciBvbmdvaW5nIHRyYW5zYWN0aW9u LiBJZiBzbywgdGhlIGxlYWRlciBzZW5kcyBhIGxpc3Qgb2YgZGVwZW5kZW50CnRyYW5zYWN0aW9u IElEcyB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHBhcmFsbGVs IGFwcGx5CndvcmtlciBtdXN0IHdhaXQgZm9yIHRoZXNlIHRyYW5zYWN0aW9ucyB0byBjb21taXQg YmVmb3JlIHByb2NlZWRpbmcuCgpFYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciByZWNvcmRzIHRo ZSBsb2NhbCBlbmQgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiBpdAphcHBsaWVzIGluIHNoYXJlZCBt ZW1vcnkuIFN1YnNlcXVlbnRseSwgdGhlIGxlYWRlciBnYXRoZXJzIHRoZXNlIGxvY2FsIGVuZCBM U05zCmFuZCBsb2dzIHRoZW0gaW4gdGhlIGxvY2FsICdsc25fbWFwcGluZycgZm9yIHZlcmlmeWlu ZyB3aGV0aGVyIHRoZXkgaGF2ZSBiZWVuCmZsdXNoZWQgdG8gZGlzayAoZm9sbG93aW5nIHRoZSBs b2dpYyBpbiBnZXRfZmx1c2hfcG9zaXRpb24oKSkuCgpJZiBubyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgaXMgYXZhaWxhYmxlLCB0aGUgbGVhZGVyIHdpbGwgYXBwbHkgdGhlIHRyYW5zYWN0aW9uCmlu ZGVwZW5kZW50bHkuCgpGb3IgZnVydGhlciBkZXRhaWxzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGZv bGxvd2luZzoKCi0tCmRlZGVuZGVuY3kgdHJhY2tpbmcKLS0KClRoZSBsZWFkZXIgbWFpbnRhaW5z IGEgbG9jYWwgaGFzaCB0YWJsZSwgdXNpbmcgdGhlIHJlbW90ZSBjaGFuZ2UncyByZXBsaWNhCmlk ZW50aXR5IGNvbHVtbiB2YWx1ZXMgYW5kIHJlbGlkIGFzIGtleXMsIHdpdGggcmVtb3RlIHRyYW5z YWN0aW9uIElEcyBhcyB2YWx1ZXMuCkJlZm9yZSBzZW5kaW5nIGNoYW5nZXMgdG8gdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciwgdGhlIGxlYWRlciBjb21wdXRlcyBhIGhhc2gKdXNpbmcgUkkga2V5 IHZhbHVlcyBhbmQgdGhlIHJlbGlkIG9mIHRoZSBjdXJyZW50IGNoYW5nZSB0byBzZWFyY2ggdGhl IGhhc2gKdGFibGUuIElmIGFuIGV4aXN0aW5nIGVudHJ5IGlzIGZvdW5kLCB0aGUgbGVhZGVyIGZp cnN0IHVwZGF0ZXMgdGhlIGhhc2ggZW50cnkKd2l0aCB0aGUgcmVjZWl2aW5nIHJlbW90ZSB4aWQg dGhlbiB0ZWxscyB0aGUgcGFyYWxsZWwgd29ya2VyIHRvIHdhaXQgZm9yIGl0LgoKSWYgdGhlIHJl bW90ZSByZWxhdGlvbiBsYWNrcyBhIHJlcGxpY2EgaWRlbnRpdHkgKFJJKSwgaXQgaW5kaWNhdGVz IHRoYXQgb25seQpJTlNFUlQgY2FuIGJlIHJlcGxpY2F0ZWQgZm9yIHRoaXMgdGFibGUuIEluIHN1 Y2ggY2FzZXMsIHRoZSBsZWFkZXIgc2tpcHMKZGVwZW5kZW5jeSBjaGVja3MsIGFsbG93aW5nIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gcHJvY2VlZCB3aXRoIGFwcGx5aW5nCmNoYW5nZXMg d2l0aG91dCBkZWxheS4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvbmx5IHBvdGVudGlhbCBjb25mbGlj dCBjb3VsZCBoYXBwZW4KaXMgcmVsYXRlZCB0byB0aGUgbG9jYWwgdW5pcXVlIGtleSBvciBmb3Jl aWduIGtleSwgd2hpY2ggdGhhdCBpcyB5ZXQgdG8gYmUKaW1wbGVtZW50ZWQgKHNlZSBUT0RPIC0g ZGVwZW5kZW5jeSBvbiBsb2NhbCB1bmlxdWUga2V5LCBmb3JlaWduIGtleS4pLgoKSW4gY2FzZXMg b2YgVFJVTkNBVEUgb3IgcmVtb3RlIHNjaGVtYSBjaGFuZ2VzIGFmZmVjdGluZyB0aGUgZW50aXJl IHRhYmxlLCB0aGUKbGVhZGVyIHJldHJpZXZlcyBhbGwgcmVtb3RlIHhpZHMgdG91Y2hpbmcgdGhl IHNhbWUgdGFibGUgKHZpYSBzZXF1ZW50aWFsIHNjYW5zCm9mIHRoZSBoYXNoIHRhYmxlKSBhbmQg dGVsbHMgdGhlIHBhcmFsbGVsIHdvcmtlciB0byB3YWl0IGZvciB0aG9zZSB0cmFuc2FjdGlvbnMK dG8gY29tbWl0LgoKSGFzaCBlbnRyaWVzIGFyZSBjbGVhbmVkIHVwIG9uY2UgdGhlIHRyYW5zYWN0 aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlbW90ZSB4aWQKaW4gdGhlIGVudHJ5IGhhcyBiZWVu IGNvbW1pdHRlZC4gQ2xlYW4tdXAgdHlwaWNhbGx5IG9jY3VycyB3aGVuIGNvbGxlY3RpbmcgdGhl CmZsdXNoIHBvc2l0aW9uIG9mIGVhY2ggdHJhbnNhY3Rpb24sIGJ1dCBpcyBmb3JjZWQgaWYgdGhl IGhhc2ggdGFibGUgZXhjZWVkcyBhCnNldCB0aHJlc2hvbGQuCgotLQpkZWRlbmRlbmN5IHdhaXRp bmcKLS0KCklmIGEgdHJhbnNhY3Rpb24gaXMgcmVsaWVkIHVwb24gYnkgb3RoZXJzLCB0aGUgbGVh ZGVyIGFkZHMgaXRzIHhpZCB0byBhIHNoYXJlZApoYXNoIHRhYmxlLiBUaGUgc2hhcmVkIGhhc2gg dGFibGUgZW50cnkgaXMgY2xlYXJlZCBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCnVwb24g Y29tcGxldGluZyB0aGUgdHJhbnNhY3Rpb24uIFdvcmtlcnMgbmVlZGluZyB0byB3YWl0IGZvciBh IHRyYW5zYWN0aW9uIGNoZWNrCnRoZSBzaGFyZWQgaGFzaCB0YWJsZSBlbnRyeTsgaWYgcHJlc2Vu dCwgdGhleSBsb2NrIHRoZSB0cmFuc2FjdGlvbiBJRCAodXNpbmcKcGFfbG9ja190cmFuc2FjdGlv bikuIElmIGFic2VudCwgaXQgaW5kaWNhdGVzIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbgpjb21t aXR0ZWQsIG5lZ2F0aW5nIHRoZSBuZWVkIHRvIHdhaXQuCgotLQpjb21taXQgb3JkZXIKLS0KClRo ZXJlIGlzIGEgY2FzZSB3aGVyZSBjb2x1bW5zIGhhdmUgbm8gZm9yZWlnbiBvciBwcmltYXJ5IGtl eXMsIGFuZCBpbnRlZ3JpdHkgaXMKbWFpbnRhaW5lZCBhdCB0aGUgYXBwbGljYXRpb24gbGF5ZXIu IEluIHRoaXMgY2FzZSwgdGhlIGFib3ZlIFJJIG1lY2hhbmlzbSBjYW5ub3QKZGV0ZWN0IGFueSBk ZXBlbmRlbmNpZXMuIEZvciBzYWZldHkgcmVhc29ucywgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBw cmVzZXJ2ZSB0aGUKY29tbWl0IG9yZGVyaW5nIGRvbmUgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBU aGlzIGlzIGRvbmUgYnkgdGhlIGxlYWRlciB3b3JrZXIKY2FjaGluZyB0aGUgbGFzdGx5IGRpc3Bh dGNoZWQgdHJhbnNhY3Rpb24gSUQgYW5kIGFkZGluZyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBpdAph bmQgdGhlIGN1cnJlbnRseSBkaXNwYXRjaGluZyBvbmUuCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMzM5ICsrKysrKysrKysrKysrKystLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwgIDM4ICsrCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAgMzEgKysKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDMwNCArKysrKysrKysr KysrKy0tCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAg IDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxMSAr LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAwMV9yZXBfY2hhbmdlcy5wbCAgICB8ICAgMiArCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTBfdHJ1bmNhdGUucGwgICAgICAgfCAgIDIgKy0KIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8ICAgOCArLQogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI2X3N0YXRzLnBsICAgICAgICAgIHwgICAxICsKIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19ub3N1cGVydXNlci5wbCAgICB8ICAgMSArCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwgfCAxMzAgKysrKysrKwogc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDE1IGZp bGVzIGNoYW5nZWQsIDgwMCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCmluZGV4IGQ0NjI2NzRiNWNkLi4zMzk2ZWUxY2RmMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAg LTE0LDYgKzE0LDkgQEAKICAqIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvIHdoaWNoIGlzIHJlcXVp cmVkIHNvIHRoZSBsZWFkZXIgd29ya2VyIGFuZCBwYXJhbGxlbAogICogYXBwbHkgd29ya2VycyBj YW4gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLgogICoKKyAqIFN0cmVhbWluZyB0cmFuc2Fj dGlvbnMKKyAqID09PT09PT09PT09PT09PT09PT09PT0KKyAqCiAgKiBUaGUgcGFyYWxsZWwgYXBw bHkgd29ya2VycyBhcmUgYXNzaWduZWQgKGlmIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB4YWN0J3MK ICAqIGZpcnN0IHN0cmVhbSBpcyByZWNlaXZlZCBmb3Igc3Vic2NyaXB0aW9ucyB0aGF0IGhhdmUg c2V0IHRoZWlyICdzdHJlYW1pbmcnCiAgKiBvcHRpb24gYXMgcGFyYWxsZWwuIFRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3CkBAIC0xNTIsNiArMTU1 LDMzIEBACiAgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGJlY2F1c2UgYm90aCBsb2NrcyBjb3VsZCBi ZSBhY3F1aXJlZCBvdXRzaWRlIHRoZQogICogdHJhbnNhY3Rpb24sIGFuZCB0aGUgc3RyZWFtIGxv Y2sgaW4gdGhlIGxlYWRlciBuZWVkcyB0byBwZXJzaXN0IGFjcm9zcwogICogdHJhbnNhY3Rpb24g Ym91bmRhcmllcyBpLmUuIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv bi4KKyAqCisgKiBOb24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucworICogPT09PT09PT09PT09PT09 PT09PT09PQorICogVGhlIGhhbmRsaW5nIGlzIHNpbWlsYXIgdG8gc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucywgYnV0IGluY2x1ZGluZyBmZXcKKyAqIGRpZmZlcmVuY2VzOgorICoKKyAqIFRyYW5zYWN0 aW9uIGRlcGVuZGVuY3kKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEJlZm9yZSBkaXNw YXRjaGluZyBjaGFuZ2VzIHRvIGEgcGFyYWxsZWwgd29ya2VyLCB0aGUgbGVhZGVyIHZlcmlmaWVz IGlmIHRoZQorICogY3VycmVudCBtb2RpZmljYXRpb24gYWZmZWN0cyB0aGUgc2FtZSByb3cgKGlk ZW50aXRpZWQgYnkgcmVwbGljYSBpZGVudGl0eQorICoga2V5KSBhcyBhbm90aGVyIG9uZ29pbmcg dHJhbnNhY3Rpb24gKHNlZSBoYW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UgZm9yCisgKiBkZXRh aWxzKS4gSWYgc28sIHRoZSBsZWFkZXIgc2VuZHMgYSBsaXN0IG9mIGRlcGVuZGVudCB0cmFuc2Fj dGlvbiBJRHMgdG8gdGhlCisgKiBwYXJhbGxlbCB3b3JrZXIsIGluZGljYXRpbmcgdGhhdCB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIG11c3Qgd2FpdCBmb3IKKyAqIHRoZXNlIHRyYW5zYWN0aW9u cyB0byBjb21taXQgYmVmb3JlIHByb2NlZWRpbmcuCisgKgorICogQ29tbWl0IG9yZGVyCisgKiAt LS0tLS0tLS0tLS0KKyAqIFRoZXJlIGlzIGEgY2FzZSB3aGVyZSBjb2x1bW5zIGhhdmUgbm8gZm9y ZWlnbiBvciBwcmltYXJ5IGtleXMsIGFuZCBpbnRlZ3JpdHkKKyAqIGlzIG1haW50YWluZWQgYXQg dGhlIGFwcGxpY2F0aW9uIGxheWVyLiBJbiB0aGlzIGNhc2UsIHRoZSBhYm92ZSBSSSBtZWNoYW5p c20KKyAqIGNhbm5vdCBkZXRlY3QgYW55IGRlcGVuZGVuY2llcy4gRm9yIHNhZmV0eSByZWFzb25z LCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKiBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyaW5n IGRvbmUgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBUaGlzIGlzIGRvbmUgYnkgdGhlCisgKiBsZWFk ZXIgd29ya2VyIGNhY2hpbmcgdGhlIGxhc3RseSBkaXNwYXRjaGVkIHRyYW5zYWN0aW9uIElEIGFu ZCBhZGRpbmcgYQorICogZGVwZW5kZW5jeSBiZXR3ZWVuIGl0IGFuZCB0aGUgY3VycmVudGx5IGRp c3BhdGNoaW5nIG9uZS4KKyAqIFdlIGNhbiBleHRlbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciB0byBhbGxvdyBvdXQtb2Ytb3JkZXIgY29tbWl0cyBpbiB0aGUKKyAqIGZ1dHVyZTogQXQgbGVh c3Qgd2UgbXVzdCB1c2UgYSBuZXcgbWVjaGFuaXNtIHRvIHRyYWNrIHJlcGxpY2F0aW9uIHByb2dy ZXNzCisgKiBpbiBvdXQtb2Ytb3JkZXIgY29tbWl0cy4gVGhlbiB3ZSBjYW4gc3RvcCBjYWNoaW5n IHRoZSB0cmFuc2FjdGlvbiBJRCBhbmQKKyAqIGFkZGluZyB0aGUgZGVwZW5kZW5jeS4KICAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICovCiAKQEAgLTI4Myw2ICszMTMsNyBAQCBzdGF0aWMgUGFyYWxsZWxU cmFuc1N0YXRlIHBhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndz aGFyZWQpOwogc3RhdGljIFBhcnRpYWxGaWxlU2V0U3RhdGUgcGFfZ2V0X2ZpbGVzZXRfc3RhdGUo dm9pZCk7CiBzdGF0aWMgdm9pZCBwYV9hdHRhY2hfcGFyYWxsZWxpemVkX3R4bl9oYXNoKGRzYV9o YW5kbGUgKnBhX2RzYV9oYW5kbGUsCiAJCQkJCQkJCQkJCWRzaGFzaF90YWJsZV9oYW5kbGUgKnBh X2RzaGFzaF9oYW5kbGUpOworc3RhdGljIHZvaWQgd3JpdGVfaW50ZXJuYWxfcmVsYXRpb24oU3Ry aW5nSW5mbyBzLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCk7CiAKIC8qCiAgKiBSZXR1cm5zIHRy dWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNlIG90 aGVyd2lzZS4KQEAgLTQwMCw2ICs0MzEsNyBAQCBwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKQogCXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2Yo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOwogCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRl eCk7CiAKKwlzaGFyZWQtPnhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCXNoYXJlZC0+eGFj dF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CiAJcGdfYXRvbWljX2luaXRfdTMyKCYo c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCksIDApOwogCXNoYXJlZC0+bGFzdF9jb21taXRf ZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CkBAIC00NDMsNiArNDc1LDggQEAgcGFfbGF1bmNoX3Bh cmFsbGVsX3dvcmtlcih2b2lkKQogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlib29sCQls YXVuY2hlZDsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJZHNhX2hhbmRsZQlw YV9kc2FfaGFuZGxlOworCWRzaGFzaF90YWJsZV9oYW5kbGUgcGFfZHNoYXNoX2hhbmRsZTsKIAlM aXN0Q2VsbCAgICpsYzsKIAogCS8qIFRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBmcm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8KQEAgLTQ1MCwxMCArNDg0LDMzIEBA IHBhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIodm9pZCkKIAl7CiAJCXdpbmZvID0gKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CiAKLQkJaWYgKCF3aW5mby0+aW5fdXNlKQor CQlpZiAoIXdpbmZvLT5zdHJlYW1fdHhuICYmCisJCQlwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+ c2hhcmVkKSA9PSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJeworCQkJLyoKKwkJCSAqIFNh dmUgdGhlIGxvY2FsIGNvbW1pdCBMU04gb2YgdGhlIGxhc3QgdHJhbnNhY3Rpb24gYXBwbGllZCBi eQorCQkJICogdGhpcyB3b3JrZXIgYmVmb3JlIHJldXNpbmcgaXQgZm9yIGFub3RoZXIgdHJhbnNh Y3Rpb24uIFRoaXMgV0FMCisJCQkgKiBwb3NpdGlvbiBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmlu ZyB0aGUgZmx1c2ggcG9zaXRpb24gaW4KKwkJCSAqIHJlc3BvbnNlcyB0byB0aGUgcHVibGlzaGVy IChzZWUgZ2V0X2ZsdXNoX3Bvc2l0aW9uKCkpLgorCQkJICovCisJCQkodm9pZCkgcGFfZ2V0X2xh c3RfY29tbWl0X2VuZCh3aW5mby0+c2hhcmVkLT54aWQsIGZhbHNlLCBOVUxMKTsKKwkJCXJldHVy biB3aW5mbzsKKwkJfQorCisJCWlmICh3aW5mby0+c3RyZWFtX3R4biAmJiAhd2luZm8tPmluX3Vz ZSkKIAkJCXJldHVybiB3aW5mbzsKIAl9CiAKKwlwYV9hdHRhY2hfcGFyYWxsZWxpemVkX3R4bl9o YXNoKCZwYV9kc2FfaGFuZGxlLCAmcGFfZHNoYXNoX2hhbmRsZSk7CisKKwkvKgorCSAqIFJldHVy biBpZiB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzIHJlYWNoZWQgdGhl IG1heGltdW0KKwkgKiBsaW1pdC4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBs eVdvcmtlclBvb2wpID09CisJCW1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24pCisJCXJldHVybiBOVUxMOworCiAJLyoKIAkgKiBTdGFydCBhIG5ldyBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCiAJICoKQEAgLTQ4MSwxOCArNTM4LDMyIEBAIHBhX2xhdW5jaF9wYXJhbGxl bF93b3JrZXIodm9pZCkKIAkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9z ZWcpLAogCQkJCQkJCQkJCWZhbHNlKTsKIAotCWlmIChsYXVuY2hlZCkKLQl7Ci0JCVBhcmFsbGVs QXBwbHlXb3JrZXJQb29sID0gbGFwcGVuZChQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8p OwotCX0KLQllbHNlCisJaWYgKCFsYXVuY2hlZCkKIAl7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKIAkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7Ci0JCXdpbmZvID0g TlVMTDsKKwkJcmV0dXJuIE5VTEw7CiAJfQogCisJUGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBs YXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3aW5mbyk7CisKIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKKwkvKgorCSAqIFNlbmQgYWxsIGV4aXN0aW5nIHJlbW90 ZSByZWxhdGlvbiBpbmZvcm1hdGlvbiB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIu IFRoaXMgYWxsb3dzIHRoZSBwYXJhbGxlbCB3b3JrZXIgdG8gaW5pdGlhbGl6ZSB0aGUKKwkgKiBM b2dpY2FsUmVwUmVsTWFwRW50cnkgbG9jYWxseSBiZWZvcmUgYXBwbHlpbmcgcmVtb3RlIGNoYW5n ZXMuCisJICovCisJaWYgKGxvZ2ljYWxyZXBfZ2V0X251bV9yZWxzKCkpCisJeworCQlTdHJpbmdJ bmZvRGF0YSBvdXQ7CisKKwkJaW5pdFN0cmluZ0luZm8oJm91dCk7CisKKwkJd3JpdGVfaW50ZXJu YWxfcmVsYXRpb24oJm91dCwgTlVMTCk7CisJCXBhX3NlbmRfZGF0YSh3aW5mbywgb3V0Lmxlbiwg b3V0LmRhdGEpOworCX0KKwogCXJldHVybiB3aW5mbzsKIH0KIApAQCAtNTk3LDcgKzY2OCw4IEBA IHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIHsKIAlBc3Nl cnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKIAlBc3NlcnQod2luZm8tPmluX3VzZSk7 Ci0JQXNzZXJ0KHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID09IFBBUkFMTEVMX1RS QU5TX0ZJTklTSEVEKTsKKwlBc3NlcnQoIXdpbmZvLT5zdHJlYW1fdHhuIHx8CisJCSAgIHBhX2dl dF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID09IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsK IAogCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ3aW5mby0+c2hhcmVk LT54aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKIAkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29y cnVwdGVkIik7CkBAIC02MTMsOSArNjg1LDcgQEAgcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvKQogCSAqIGJlZW4gc2VyaWFsaXplZCBhbmQgdGhlbiBsZXR0aW5n IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGVhbCB3aXRoCiAJICogdGhlIHNwdXJpb3VzIG1l c3NhZ2UsIHdlIHN0b3AgdGhlIHdvcmtlci4KIAkgKi8KLQlpZiAod2luZm8tPnNlcmlhbGl6ZV9j aGFuZ2VzIHx8Ci0JCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA+Ci0JCSht YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJaWYgKHdp bmZvLT5zZXJpYWxpemVfY2hhbmdlcykKIAl7CiAJCWxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3Ao d2luZm8pOwogCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKQEAgLTgxMiw2ICs4ODIsMzgg QEAgcGFfZ2V0X2xhc3RfY29tbWl0X2VuZChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBkZWxldGVf ZW50cnksIGJvb2wgKnNraXBwZWRfd3JpdGUKIAlyZXR1cm4gZW50cnktPmxvY2FsX2VuZDsKIH0K IAorLyoKKyAqIFdhaXQgZm9yIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gYXNzb2NpYXRlZCB3aXRo IHRoZSBzcGVjaWZpZWQgcmVtb3RlIHhpZCB0bworICogY29tcGxldGUuCisgKi8KK3N0YXRpYyB2 b2lkCitwYV93YWl0X2Zvcl90cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHdhaXRfZm9yX3hpZCkK K3sKKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZCh3YWl0X2Zvcl94aWQpKQorCQlyZXR1cm47CisKKwllbG9nKERF QlVHMSwgInBsYW4gdG8gd2FpdCBmb3IgcmVtb3RlX3hpZCAldSB0byBmaW5pc2giLAorCQkgd2Fp dF9mb3JfeGlkKTsKKworCWZvciAoOzspCisJeworCQlpZiAocGFfdHJhbnNhY3Rpb25fY29tbWl0 dGVkKHdhaXRfZm9yX3hpZCkpCisJCQlicmVhazsKKworCQlwYV9sb2NrX3RyYW5zYWN0aW9uKHdh aXRfZm9yX3hpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHdh aXRfZm9yX3hpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhh dmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLworCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCX0KKworCWVsb2coREVCVUcxLCAiZmluaXNoZWQgd2FpdCBmb3IgcmVtb3RlX3hp ZCAldSB0byBmaW5pc2giLAorCQkgd2FpdF9mb3JfeGlkKTsKK30KKwogLyoKICAqIEludGVycnVw dCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICovCkBA IC04ODcsMjEgKzk4OSwzNCBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRs ZSAqbXFoKQogCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSBQcVJlcGxN c2dfV0FMRGF0YS4KIAkJCSAqLwogCQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOwotCQkJaWYgKGMg IT0gUHFSZXBsTXNnX1dBTERhdGEpCi0JCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbWVzc2Fn ZSBcIiVjXCIiLCBjKTsKLQotCQkJLyoKLQkJCSAqIElnbm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0 aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIKLQkJCSAqIGFwcGx5IHdvcmtlci4K LQkJCSAqCi0JCQkgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcgdGhlIHN0YXRpc3RpY3MgZmll bGRzIGZyb20gdGhlIGxlYWRlcgotCQkJICogYXBwbHkgd29ya2VyIGJ1dCBmb3IgdGhhdCwgaXQg bmVlZHMgdG8gcmVidWlsZCB0aGUgZW50aXJlCi0JCQkgKiBtZXNzYWdlIGJ5IHJlbW92aW5nIHRo ZXNlIGZpZWxkcyB3aGljaCBjb3VsZCBiZSBtb3JlIHdvcmsgdGhhbgotCQkJICogc2ltcGx5IGln bm9yaW5nIHRoZXNlIGZpZWxkcyBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCQkJICov Ci0JCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CisJCQlpZiAoYyA9PSBQcVJlcGxN c2dfV0FMRGF0YSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElnbm9yZSBzdGF0aXN0aWNzIGZpZWxk cyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZQorCQkJCSAqIGxlYWRlciBhcHBseSB3b3Jr ZXIuCisJCQkJICoKKwkJCQkgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcgdGhlIHN0YXRpc3Rp Y3MgZmllbGRzIGZyb20gdGhlCisJCQkJICogbGVhZGVyIGFwcGx5IHdvcmtlciBidXQgZm9yIHRo YXQsIGl0IG5lZWRzIHRvIHJlYnVpbGQgdGhlCisJCQkJICogZW50aXJlIG1lc3NhZ2UgYnkgcmVt b3ZpbmcgdGhlc2UgZmllbGRzIHdoaWNoIGNvdWxkIGJlIG1vcmUKKwkJCQkgKiB3b3JrIHRoYW4g c2ltcGx5IGlnbm9yaW5nIHRoZXNlIGZpZWxkcyBpbiB0aGUgcGFyYWxsZWwKKwkJCQkgKiBhcHBs eSB3b3JrZXIuCisJCQkJICovCisJCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOwog Ci0JCQlhcHBseV9kaXNwYXRjaCgmcyk7CisJCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQkJfQor CQkJZWxzZSBpZiAoYyA9PSBQQVJBTExFTF9BUFBMWV9JTlRFUk5BTF9NRVNTQUdFKQorCQkJewor CQkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29y a2VyIHRvCisJCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSAndycgb3Ig J2knLgorCQkJCSAqLworCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wi IiwgYyk7CisJCQl9CiAJCX0KIAkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX1dPVUxEX0JM T0NLKQogCQl7CkBAIC05MTgsNiArMTAzMyw5IEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChz aG1fbXFfaGFuZGxlICptcWgpCiAKIAkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCiAJCQkJCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJCQlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCQkJ CQlwZ3N0YXRfcmVwb3J0X3N0YXQodHJ1ZSk7CiAJCQl9CiAJCX0KIAkJZWxzZQpAQCAtOTU1LDYg KzEwNzMsOSBAQCBwYV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogCQkJCSAgIElOVkFM SURfUFJPQ19OVU1CRVIpOwogCiAJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQ b2ludGVyKGFyZykpOworCisJaWYgKHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhKQorCQlkc2FfZGV0 YWNoKHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhKTsKIH0KIAogLyoKQEAgLTEyNjcsNyArMTM4OCw2 IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5 dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCXNobV9tcV9yZXN1bHQgcmVzdWx0OwogCVRpbWVzdGFt cFR6IHN0YXJ0VGltZSA9IDA7CiAKLQlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAlB c3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyk7CiAKIAkvKgpAQCAtMTMxOSw2ICsxNDM5 LDY3IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUg bmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCX0KIH0KIAorLyoKKyAqIERpc3RyaWJ1dGUgcmVt b3RlIHJlbGF0aW9uIGluZm9ybWF0aW9uIHRvIGFsbCBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29y a2VycworICogdGhhdCByZXF1aXJlIGl0LgorICovCit2b2lkCitwYV9kaXN0cmlidXRlX3NjaGVt YV9jaGFuZ2VzX3RvX3dvcmtlcnMoTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCit7CisJTGlzdAkg ICAqd29ya2Vyc19zdG9wcGVkID0gTklMOworCVN0cmluZ0luZm9EYXRhIG91dDsKKworCWlmICgh UGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJCXJldHVybjsKKworCWluaXRTdHJpbmdJbmZvKCZv dXQpOworCisJd3JpdGVfaW50ZXJuYWxfcmVsYXRpb24oJm91dCwgcmVsKTsKKworCWZvcmVhY2hf cHRyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvLCB3aW5mbywgUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpCisJeworCQkvKgorCQkgKiBTa2lwIHRoZSB3b3JrZXIgcmVzcG9uc2libGUgZm9yIHRoZSBj dXJyZW50IHRyYW5zYWN0aW9uLCBhcyB0aGUKKwkJICogcmVsYXRpb24gaW5mb3JtYXRpb24gaGFz IGFscmVhZHkgYmVlbiBzZW50IHRvIGl0LgorCQkgKi8KKwkJaWYgKHdpbmZvID09IHN0cmVhbV9h cHBseV93b3JrZXIpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBTa2lwIHRoZSB3b3JrZXIg dGhhdCBpcyBpbiBzZXJpYWxpemUgbW9kZSwgYXMgdGhleSB3aWxsIHNvb24gc3RvcAorCQkgKiBv bmNlIHRoZXkgZmluaXNoIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbi4KKwkJICovCisJCWlmICh3 aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCisJCQljb250aW51ZTsKKworCQllbG9nKERFQlVHMSwg ImRpc3RyaWJ1dGluZyBzY2hlbWEgY2hhbmdlcyB0byBwYSB3b3JrZXJzIik7CisKKwkJaWYgKHBh X3NlbmRfZGF0YSh3aW5mbywgb3V0Lmxlbiwgb3V0LmRhdGEpKQorCQkJY29udGludWU7CisKKwkJ ZWxvZyhERUJVRzEsICJmYWlsZWQgdG8gZGlzdHJpYnV0ZSwgd2lsbCBzdG9wIHRoYXQgd29ya2Vy IGluc3RlYWQiKTsKKworCQkvKgorCQkgKiBEaXN0cmlidXRpb24gdG8gdGhpcyB3b3JrZXIgZmFp bGVkIGR1ZSB0byBhIHNlbmRpbmcgdGltZW91dC4gV2FpdAorCQkgKiBmb3IgdGhlIHdvcmtlciB0 byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gYW5kIHRoZW4gc3RvcCBpdC4gVGhpcworCQkgKiBp cyBjb25zaXN0ZW50IHdpdGggdGhlIGhhbmRsaW5nIG9mIHdvcmtlcnMgaW4gc2VyaWFsaXplIG1v ZGUgKHNlZQorCQkgKiBwYV9mcmVlX3dvcmtlcigpIGZvciBkZXRhaWxzKS4KKwkJICovCisJCXBh X3dhaXRfZm9yX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCk7CisKKwkJcGFfZ2V0X2xh c3RfY29tbWl0X2VuZCh3aW5mby0+c2hhcmVkLT54aWQsIGZhbHNlLCBOVUxMKTsKKworCQlsb2dp Y2FscmVwX3BhX3dvcmtlcl9zdG9wKHdpbmZvKTsKKworCQl3b3JrZXJzX3N0b3BwZWQgPSBsYXBw ZW5kKHdvcmtlcnNfc3RvcHBlZCwgd2luZm8pOworCX0KKworCXBmcmVlKG91dC5kYXRhKTsKKwor CWZvcmVhY2hfcHRyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvLCB3aW5mbywgd29ya2Vyc19zdG9w cGVkKQorCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKK30KKwogLyoKICAqIFN3aXRjaCB0 byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiAtLSB0 aGlzIG1lYW5zCiAgKiB0aGF0IHRoZSBjdXJyZW50IGRhdGEgYW5kIGFueSBzdWJzZXF1ZW50IGRh dGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQpAQCAtMTQwMSw4ICsxNTgyLDggQEAgcGFf d2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCiAJ LyoKIAkgKiBXYWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gbG9jayB0byBiZSByZWxlYXNlZC4gVGhp cyBpcyByZXF1aXJlZCB0bwotCSAqIGRldGVjdCBkZWFkbG9jayBhbW9uZyBsZWFkZXIgYW5kIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuIFJlZmVyIHRvIHRoZQotCSAqIGNvbW1lbnRzIGF0b3AgdGhp cyBmaWxlLgorCSAqIGRldGVjdCBkZXRlY3QgZGVhZGxvY2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJh bGxlbCBhcHBseSB3b3JrZXJzLiBSZWZlcgorCSAqIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMg ZmlsZS4KIAkgKi8KIAlwYV9sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNj ZXNzU2hhcmVMb2NrKTsKIAlwYV91bmxvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlk LCBBY2Nlc3NTaGFyZUxvY2spOwpAQCAtMTQ3OSw2ICsxNjYwLDkgQEAgcGFfc2F2ZXBvaW50X25h bWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNw KQogdm9pZAogcGFfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJh bnNhY3Rpb25JZCB0b3BfeGlkKQogeworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQodG9wX3hp ZCkpCisJCXJldHVybjsKKwogCWlmIChjdXJyZW50X3hpZCAhPSB0b3BfeGlkICYmCiAJCSFsaXN0 X21lbWJlcl94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKSkKIAl7CkBAIC0xNzM1LDI1ICsx OTE5LDQxIEBAIHBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQpCiB2b2lkCiBwYV94 YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVt b3RlX2xzbikKIHsKKwlYTG9nUmVjUHRyCWxvY2FsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwor CVRyYW5zYWN0aW9uSWQgcGFfcmVtb3RlX3hpZCA9IHdpbmZvLT5zaGFyZWQtPnhpZDsKKwogCUFz c2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpOwogCiAJLyoKLQkgKiBVbmxvY2sgdGhlIHNo YXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KLQkgKiBj b250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCSAqIFVubG9jayB0aGUgc2hh cmVkIG9iamVjdCBsb2NrIHRha2VuIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHNvIHRoYXQK KwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFw cGx5IGNoYW5nZXMuCiAJICovCi0JcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQs IEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCWlmICh3aW5mby0+c3RyZWFtX3R4bikKKwkJcGFfdW5s b2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCiAJ LyoKLQkgKiBXYWl0IGZvciB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5 IHRvIG1haW50YWluIGNvbW1pdAotCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUg dG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAotCSAqIGRlYWRsb2Nrcy4KKwkgKiBXYWl0 IGZvciB0aGF0IHdvcmtlciBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGZpbmlzaC4gVGhp cyBpcworCSAqIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQgb3JkZXIgd2hpY2ggYXZvaWRz IGZhaWx1cmVzIGR1ZSB0bworCSAqIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQgZGVhZGxv Y2tzLgorCSAqCisJICogRm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb24gYnV0IGluIHBhcnRp YWwgc2VyYWxpemUgbW9kZSwgd2FpdCBmb3IKKwkgKiBzdG9wIGFzIHdlbGwgYXMgdGhlIHdvcmtl ciBpcyBhbnl3YXkgY2Fubm90IGJlIHJldXNlZCBhbnltb3JlIChzZWUKKwkgKiBwYV9mcmVlX3dv cmtlcigpIGZvciBkZXRhaWxzKS4KIAkgKi8KLQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5m byk7CisJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyB8fCB3aW5mby0+c3RyZWFtX3R4bikK Kwl7CisJCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKKworCQlsb2NhbF9sc24gPSB3 aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQ7CisJCXBhX3JlbW90ZV94aWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKworCQlwYV9mcmVlX3dvcmtlcih3aW5mbyk7CisJfQogCiAJaWYgKFhM b2dSZWNQdHJJc1ZhbGlkKHJlbW90ZV9sc24pKQotCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyZW1v dGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOworCQlzdG9yZV9mbHVzaF9w b3NpdGlvbihyZW1vdGVfbHNuLCBsb2NhbF9sc24sIHBhX3JlbW90ZV94aWQpOwogCi0JcGFfZnJl ZV93b3JrZXIod2luZm8pOworCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOwogfQog CiBib29sCkBAIC0xODUyLDYgKzIwNTIsMjIgQEAgcGFfcmVjb3JkX2RlcGVuZGVuY3lfb25fdHJh bnNhY3Rpb25zKExpc3QgKmRlcGVuZHNfb25feGlkcykKIAl9CiB9CiAKKy8qCisgKiBNYXJrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBhcyBmaW5pc2hlZCBhbmQgcmVtb3ZlIHRoZSBzaGFyZWQgaGFz aCBlbnRyeS4KKyAqLwordm9pZAorcGFfY29tbWl0X3RyYW5zYWN0aW9uKHZvaWQpCit7CisJVHJh bnNhY3Rpb25JZCB4aWQgPSBNeVBhcmFsbGVsU2hhcmVkLT54aWQ7CisKKwlTcGluTG9ja0FjcXVp cmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT54YWN0X3N0 YXRlID0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQ7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFs bGVsU2hhcmVkLT5tdXRleCk7CisKKwlkc2hhc2hfZGVsZXRlX2tleShwYXJhbGxlbGl6ZWRfdHhu cywgJnhpZCk7CisJZWxvZyhERUJVRzEsICJkZXBlbmRlZCB4aWQgJXUgY29tbWl0dGVkIiwgeGlk KTsKK30KKwogLyoKICAqIFdhaXQgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiB0byBmaW5pc2gu CiAgKi8KQEAgLTE4NjAsNiArMjA3NiwxMyBAQCBwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2Fj dGlvbihUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAllbG9nKERFQlVHMSwgIndhaXQgZm9yIGRlcGVu ZGVkIHhpZCAldSIsIHhpZCk7CiAKKwkvKgorCSAqIFF1aWNrIGV4aXQgaWYgcGFyYWxsZWxpemVk X3R4bnMgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4gVGhpcyBjYW4KKwkgKiBoYXBwZW4g d2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgbGVhZGVyIHdvcmtlci4KKwkgKi8K KwlpZiAoIXBhcmFsbGVsaXplZF90eG5zKQorCQlyZXR1cm47CisKIAlmb3IgKDs7KQogCXsKIAkJ UGFyYWxsZWxpemVkVHhuRW50cnkgKnR4bl9lbnRyeTsKQEAgLTE4ODAsMyArMjEwMyw0NSBAQCBw YV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCkKIAogCWVs b2coREVCVUcxLCAiZmluaXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVkIHhpZCAldSIsIHhpZCk7CiB9 CisKKy8qCisgKiBXcml0ZSBpbnRlcm5hbCByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0 cHV0IHN0cmVhbS4KKyAqLworc3RhdGljIHZvaWQKK3dyaXRlX2ludGVybmFsX3JlbGF0aW9uKFN0 cmluZ0luZm8gcywgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCit7CisJcHFfc2VuZGJ5dGUocywg UEFSQUxMRUxfQVBQTFlfSU5URVJOQUxfTUVTU0FHRSk7CisJcHFfc2VuZGJ5dGUocywgTE9HSUNB TF9SRVBfTVNHX0lOVEVSTkFMX1JFTEFUSU9OKTsKKworCWlmIChyZWwpCisJeworCQlwcV9zZW5k aW50KHMsIDEsIDQpOworCQlsb2dpY2FscmVwX3dyaXRlX2ludGVybmFsX3JlbChzLCByZWwpOwor CX0KKwllbHNlCisJeworCQlwcV9zZW5kaW50KHMsIGxvZ2ljYWxyZXBfZ2V0X251bV9yZWxzKCks IDQpOworCQlsb2dpY2FscmVwX3dyaXRlX2FsbF9yZWxzKHMpOworCX0KK30KKworLyoKKyAqIFJl Z2lzdGVyIGEgdHJhbnNhY3Rpb24gdG8gdGhlIHNoYXJlZCBoYXNoIHRhYmxlLgorICoKKyAqIFRo aXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGR1cmluZyB0aGUgY29tbWl0IHBo YXNlIG9mCisgKiBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLiBPdGhlciBwYXJhbGxlbCB3b3Jr ZXJzIHdvdWxkIHdhaXQsCisgKiByZW1vdmluZyB0aGUgYWRkZWQgZW50cnkuCisgKi8KK3ZvaWQK K3BhX2FkZF9wYXJhbGxlbGl6ZWRfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJ Ym9vbAkJZm91bmQ7CisJUGFyYWxsZWxpemVkVHhuRW50cnkgKnR4bl9lbnRyeTsKKworCUFzc2Vy dChwYXJhbGxlbGl6ZWRfdHhucyk7CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkp OworCisJdHhuX2VudHJ5ID0gZHNoYXNoX2ZpbmRfb3JfaW5zZXJ0KHBhcmFsbGVsaXplZF90eG5z LCAmeGlkLCAmZm91bmQpOworCisJZHNoYXNoX3JlbGVhc2VfbG9jayhwYXJhbGxlbGl6ZWRfdHhu cywgdHhuX2VudHJ5KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpp bmRleCA2NmY5MzBjOGIwNi4uZDIzMWJmYjQ4YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMKQEAgLTY5MSw2ICs2OTEsNDQgQEAgbG9naWNhbHJlcF93cml0ZV9yZWwo U3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBSZWxhdGlvbiByZWwsCiAJbG9naWNh bHJlcF93cml0ZV9hdHRycyhvdXQsIHJlbCwgY29sdW1ucywgaW5jbHVkZV9nZW5jb2xzX3R5cGUp OwogfQogCisvKgorICogV3JpdGUgaW50ZXJuYWwgcmVsYXRpb24gZGVzY3JpcHRpb24gdG8gdGhl IG91dHB1dCBzdHJlYW0uCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfaW50ZXJuYWxfcmVs KFN0cmluZ0luZm8gb3V0LCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKK3sKKwlwcV9zZW5kaW50 MzIob3V0LCByZWwtPnJlbW90ZWlkKTsKKworCS8qIFdyaXRlIHJlbGF0aW9uIG5hbWUgKi8KKwlw cV9zZW5kc3RyaW5nKG91dCwgcmVsLT5uc3BuYW1lKTsKKwlwcV9zZW5kc3RyaW5nKG91dCwgcmVs LT5yZWxuYW1lKTsKKworCS8qIFdyaXRlIHRoZSByZXBsaWNhIGlkZW50aXR5LiAqLworCXBxX3Nl bmRieXRlKG91dCwgcmVsLT5yZXBsaWRlbnQpOworCisJLyogV3JpdGUgYXR0cmlidXRlIGRlc2Ny aXB0aW9uICovCisJcHFfc2VuZGludDE2KG91dCwgcmVsLT5uYXR0cyk7CisKKwlmb3IgKGludCBp ID0gMDsgaSA8IHJlbC0+bmF0dHM7IGkrKykKKwl7CisJCXVpbnQ4CQlmbGFncyA9IDA7CisKKwkJ aWYgKGJtc19pc19tZW1iZXIoaSwgcmVsLT5hdHRrZXlzKSkKKwkJCWZsYWdzIHw9IExPR0lDQUxS RVBfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlwcV9zZW5kYnl0ZShvdXQsIGZsYWdzKTsKKwor CQkvKiBhdHRyaWJ1dGUgbmFtZSAqLworCQlwcV9zZW5kc3RyaW5nKG91dCwgcmVsLT5hdHRuYW1l c1tpXSk7CisKKwkJLyogYXR0cmlidXRlIHR5cGUgaWQgKi8KKwkJcHFfc2VuZGludDMyKG91dCwg cmVsLT5hdHR0eXBzW2ldKTsKKworCQkvKiBpZ25vcmUgYXR0cmlidXRlIG1vZGUgZm9yIG5vdyAq LworCQlwcV9zZW5kaW50MzIob3V0LCAwKTsKKwl9Cit9CisKIC8qCiAgKiBSZWFkIHRoZSByZWxh dGlvbiBpbmZvIGZyb20gc3RyZWFtIGFuZCByZXR1cm4gYXMgTG9naWNhbFJlcFJlbGF0aW9uLgog ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9u LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggYWI2 MzEzZWIxYmMuLmUxY2UxODNkZmQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZWxhdGlvbi5jCkBAIC05NjEsNiArOTYxLDM3IEBAIEZpbmRMb2dpY2FsUmVwTG9jYWxJbmRl eChSZWxhdGlvbiBsb2NhbHJlbCwgTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwsCiAJcmV0 dXJuIEludmFsaWRPaWQ7CiB9CiAKKy8qCisgKiBHZXQgdGhlIG51bWJlciBvZiBlbnRyaWVzIGlu IHRoZSBMb2dpY2FsUmVwUmVsTWFwLgorICovCitpbnQKK2xvZ2ljYWxyZXBfZ2V0X251bV9yZWxz KHZvaWQpCit7CisJaWYgKExvZ2ljYWxSZXBSZWxNYXAgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisK KwlyZXR1cm4gaGFzaF9nZXRfbnVtX2VudHJpZXMoTG9naWNhbFJlcFJlbE1hcCk7Cit9CisKKy8q CisgKiBXcml0ZSBhbGwgdGhlIHJlbW90ZSByZWxhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBM b2dpY2FsUmVwUmVsTWFwRW50cnkgdG8KKyAqIHRoZSBvdXRwdXQgc3RyZWFtLgorICovCit2b2lk Citsb2dpY2FscmVwX3dyaXRlX2FsbF9yZWxzKFN0cmluZ0luZm8gb3V0KQoreworCUxvZ2ljYWxS ZXBSZWxNYXBFbnRyeSAqZW50cnk7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKworCWlmIChM b2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgTG9naWNhbFJlcFJlbE1hcCk7CisKKwl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWxvZ2lj YWxyZXBfd3JpdGVfaW50ZXJuYWxfcmVsKG91dCwgJmVudHJ5LT5yZW1vdGVyZWwpOworfQorCiAv KgogICogR2V0IHRoZSBMb2dpY2FsUmVwUmVsTWFwRW50cnkgY29ycmVzcG9uZGluZyB0byB0aGUg Z2l2ZW4gcmVsaWQgd2l0aG91dAogICogb3BlbmluZyB0aGUgbG9jYWwgcmVsYXRpb24uCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBjMjk2N2NhZjFlNS4uZDFi YTgwMWY5NmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAt Mjg2LDYgKzI4Niw3IEBACiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0 aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2luamVj dGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTQ4NCw2ICs0ODUs OCBAQCBzdGF0aWMgTGlzdCAqb25fY29tbWl0X3dha2V1cF93b3JrZXJzX3N1YmlkcyA9IE5JTDsK IAogYm9vbAkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1JlY1B0 ciByZW1vdGVfZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CitzdGF0aWMgVHJhbnNhY3Rp b25JZCByZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CitzdGF0aWMgVHJhbnNhY3Rp b25JZCBsYXN0X3JlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogLyogZmllbGRz IHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9uICovCiBzdGF0 aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtNjAyLDExICs2MDUs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW51cF9zdWJ4YWN0X2luZm8odm9pZCk7CiAvKgog ICogU2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBjaGFuZ2VzIGZvciBhIHRvcGxldmVsIHRyYW5z YWN0aW9uLgogICovCi1zdGF0aWMgdm9pZCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJh bnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJIGJvb2wgZmlyc3Rfc2VnbWVudCk7CiBzdGF0aWMgdm9p ZCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwotc3RhdGlj IHZvaWQgc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hh ciBhY3Rpb24sIFN0cmluZ0luZm8gcyk7Ci1zdGF0aWMgdm9pZCBzdHJlYW1fY2xvc2VfZmlsZSh2 b2lkKTsKIAogc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJv b2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIApAQCAtNjc2LDYgKzY3NSw4IEBAIHN0YXRp YyB2b2lkIG9uX2V4aXRfY2xlYXJfeGFjdF9zdGF0ZShpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0 YXRpYyBib29sIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVzKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbywKIAkJCQkJCQkJCSAgIFN0cmluZ0luZm8gcyk7CiAKK3N0YXRpYyBib29sIGJ1 aWxkX2RlcGVuZGVuY3lfd2l0aF9sYXN0X2NvbW1pdHRlZF90eG4oUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvKTsKKwogLyoKICAqIENvbXB1dGUgdGhlIGhhc2ggdmFsdWUgZm9yIGVudHJp ZXMgaW4gdGhlIHJlcGxpY2FfaWRlbnRpdHlfdGFibGUuCiAgKi8KQEAgLTE0MDYsNyArMTQwNywx MSBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9u LCBTdHJpbmdJbmZvIHMpCiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAJU3RyaW5n SW5mb0RhdGEgb3JpZ2luYWxfbXNnOwogCi0JYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCUFzc2VydCghaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24gfHwgVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOworCisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihpbl9zdHJlYW1lZF90cmFu c2FjdGlvbgorCQkJCQkJCQkJCQkJPyBzdHJlYW1feGlkIDogcmVtb3RlX3hpZCwKKwkJCQkJCQkJ CQkJCSZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KIAlpZiAoYXBwbHlf YWN0aW9uID09IFRSQU5TX0xFQURFUl9BUFBMWSkKQEAgLTE0MTUsOCArMTQyMCw2IEBAIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChzdHJlYW1feGlkKSk7Ci0KIAkvKgogCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbmVl ZHMgdGhlIHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVjaWRlCiAJICogd2hldGhlciB0byBkZWZp bmUgYSBzYXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCBoYXMKQEAg LTE0MjcsMTUgKzE0MzAsMjggQEAgaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxS ZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCi0J ICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KKwkgKiBtZXNzYWdlIGluIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JY3VycmVudF94aWQgPSBwcV9nZXRtc2dp bnQocywgNCk7CisJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQljdXJyZW50X3hpZCA9 IHBxX2dldG1zZ2ludChzLCA0KTsKKwllbHNlCisJCWN1cnJlbnRfeGlkID0gcmVtb3RlX3hpZDsK IAogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJy bXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0 aW9uIHRyYW5zYWN0aW9uIikpKTsKIAorCWhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShhY3Rp b24sIHMsIGN1cnJlbnRfeGlkLCB3aW5mbyk7CisKKwkvKgorCSAqIFJlLWZldGNoIHRoZSBsYXRl c3QgYXBwbHkgYWN0aW9uIGFzIGl0IG1pZ2h0IGhhdmUgYmVlbiBjaGFuZ2VkIGR1cmluZworCSAq IGRlcGVuZGVuY3kgY2hlY2suCisJICovCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihpbl9zdHJlYW1lZF90cmFuc2FjdGlvbgorCQkJCQkJCQkJCQkJPyBzdHJl YW1feGlkIDogcmVtb3RlX3hpZCwKKwkJCQkJCQkJCQkJCSZ3aW5mbyk7CisKIAlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKIAl7CiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKQEAgLTE4Mzks MTcgKzE4NTUsNzEgQEAgc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9iZWdpbihTdHJpbmdJbmZv IHMpCiB7CiAJTG9naWNhbFJlcEJlZ2luRGF0YSBiZWdpbl9kYXRhOworCVBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8q IFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9E YXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJLyogVGhlcmUgbXVzdCBub3QgYmUgYW4gYWN0aXZl IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KIAlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHN0cmVhbV94aWQpKTsKIAogCWxvZ2ljYWxyZXBfcmVhZF9iZWdpbihzLCAmYmVnaW5fZGF0YSk7 Ci0Jc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChiZWdpbl9kYXRhLnhpZCwgYmVnaW5fZGF0 YS5maW5hbF9sc24pOworCisJcmVtb3RlX3hpZCA9IGJlZ2luX2RhdGEueGlkOworCisJc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfeGFjdChyZW1vdGVfeGlkLCBiZWdpbl9kYXRhLmZpbmFsX2xzbik7 CiAKIAlyZW1vdGVfZmluYWxfbHNuID0gYmVnaW5fZGF0YS5maW5hbF9sc247CiAKIAltYXliZV9z dGFydF9za2lwcGluZ19jaGFuZ2VzKGJlZ2luX2RhdGEuZmluYWxfbHNuKTsKIAorCXBhX2FsbG9j YXRlX3dvcmtlcihyZW1vdGVfeGlkLCBmYWxzZSk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJh bnNhY3Rpb25fYXBwbHlfYWN0aW9uKHJlbW90ZV94aWQsICZ3aW5mbyk7CisKKwllbG9nKERFQlVH MSwgIm5ldyByZW1vdGVfeGlkICV1IiwgcmVtb3RlX3hpZCk7CisJc3dpdGNoIChhcHBseV9hY3Rp b24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9BUFBMWToKKwkJCWJyZWFrOworCisJCWNhc2Ug VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlp ZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCXBhX3Nl dF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoK KwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBz ZW5kIHRoZQorCQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLwor CQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworLyogZmFs bCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJ QXNzZXJ0KHdpbmZvKTsKKworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0df QkVHSU4sICZvcmlnaW5hbF9tc2cpOworCisJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93 b3JrZXIod2luZm8pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToK KwkJCS8qIEhvbGQgdGhlIGxvY2sgdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uICov CisJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzRXhj bHVzaXZlTG9jayk7CisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJB TExFTF9UUkFOU19TVEFSVEVEKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBhcHBseSBhY3Rpb246ICVkIiwgKGludCkgYXBwbHlfYWN0aW9uKTsK KwkJCWJyZWFrOworCX0KKwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IHRydWU7CiAKIAlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwpAQCAtMTg4Miw2ICsxOTUy LDM3IEBAIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVzKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbywgU3RyaW5nSW5mbyBzKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIE1ha2Ug YSBkZXBlbmRlbmN5IGJldHdlZW4gdGhpcyBhbmQgdGhlIGxhc3RseSBjb21taXR0ZWQgdHJhbnNh Y3Rpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIGNvbW1pdCBvcmRl cmluZyBoYW5kbGVkIGJ5IHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGlzIHByZXNlcnZlZC4g UmV0dXJucyBmYWxzZSBpZiB3ZSBzd2l0Y2hlZCB0byB0aGUgc2VyaWFsaXplIG1vZGUgdG8KKyAq IHNlbmQgdGhlIG1hc3NhZ2UsIHRydWUgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorYnVp bGRfZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bihQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8pCit7CisJU3RyaW5nSW5mb0RhdGEgZGVwZW5kZW5jeV9tc2c7CisJYm9vbAkJ cmV0OworCisJLyogU2tpcCBpZiB0cmFuc2FjdGlvbnMgaGF2ZSBub3QgYmVlbiBhcHBsaWVkIHll dCAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9yZW1vdGVfeGlkKSkKKwkJcmV0 dXJuIHRydWU7CisKKwkvKiBCdWlsZCB0aGUgZGVwZW5kZW5jeSBtZXNzYWdlIHVzZWQgdG8gc2Vu ZCB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwlpbml0U3RyaW5nSW5mbygmZGVwZW5kZW5j eV9tc2cpOworCisJcHFfc2VuZGJ5dGUoJmRlcGVuZGVuY3lfbXNnLCBQQVJBTExFTF9BUFBMWV9J TlRFUk5BTF9NRVNTQUdFKTsKKwlwcV9zZW5kYnl0ZSgmZGVwZW5kZW5jeV9tc2csIExPR0lDQUxf UkVQX01TR19JTlRFUk5BTF9ERVBFTkRFTkNZKTsKKwlwcV9zZW5kaW50MzIoJmRlcGVuZGVuY3lf bXNnLCAxKTsKKwlwcV9zZW5kaW50MzIoJmRlcGVuZGVuY3lfbXNnLCBsYXN0X3JlbW90ZV94aWQp OworCisJcmV0ID0gc2VuZF9pbnRlcm5hbF9kZXBlbmRlbmNpZXMod2luZm8sICZkZXBlbmRlbmN5 X21zZyk7CisKKwlwZnJlZShkZXBlbmRlbmN5X21zZy5kYXRhKTsKKwlyZXR1cm4gcmV0OworfQor CiAvKgogICogSGFuZGxlIENPTU1JVCBtZXNzYWdlLgogICoKQEAgLTE4OTEsNiArMTk5MiwxMSBA QCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7CiAJTG9n aWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUg bWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2lu YWxfbXNnID0gKnM7CiAKIAlsb2dpY2FscmVwX3JlYWRfY29tbWl0KHMsICZjb21taXRfZGF0YSk7 CiAKQEAgLTE5MDEsNyArMjAwNyw5OCBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8g cykKIAkJCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhjb21taXRfZGF0YS5jb21taXRfbHNuKSwKIAkJ CQkJCQkJIExTTl9GT1JNQVRfQVJHUyhyZW1vdGVfZmluYWxfbHNuKSkpKTsKIAotCWFwcGx5X2hh bmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRf dHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHJlbW90ZV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2gg KGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX0FQUExZOgorCisJCQkvKgor CQkJICogQXBhcnQgZnJvbSBwYXJhbGxlbGl6ZWQgdHJhbnNhY3Rpb25zLCB3ZSBkbyBub3QgaGF2 ZSB0bworCQkJICogcmVnaXN0ZXIgdGhpcyB0cmFuc2FjdGlvbiB0byBwYXJhbGxlbGl6ZWRfdHhu cy4gVGhlIGNvbW1pdAorCQkJICogb3JkZXJpbmcgaXMgYWx3YXlzIHByZXNlcnZlZC4KKwkJCSAq LworCisJCQkvKiBXYWl0IHVudGlsIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGZpbmlzaGVzICovCisJ CQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9yZW1vdGVfeGlkKSkKKwkJCQlwYV93YWl0 X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihsYXN0X3JlbW90ZV94aWQpOworCisJCQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJ CQkvKgorCQkJICogTWFyayB0aGlzIHRyYW5zYWN0aW9uIGFzIHBhcmFsbGVsaXplZC4gVGhpcyBl bnN1cmVzIHRoYXQKKwkJCSAqIHVwY29taW5nIHRyYW5zYWN0aW9ucyB3YWl0IHVudGlsIHRoaXMg dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCQkJICovCisJCQlwYV9hZGRfcGFyYWxsZWxpemVk X3RyYW5zYWN0aW9uKHJlbW90ZV94aWQpOworCisJCQkvKgorCQkJICogQnVpbGQgYSBkZXBlbmRl bmN5IGJldHdlZW4gdGhpcyB0cmFuc2FjdGlvbiBhbmQgdGhlIGxhc3RseQorCQkJICogY29tbWl0 dGVkIHRyYW5zYWN0aW9uIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRoZW4gdHJ5IHRv CisJCQkgKiBzZW5kIGEgQ09NTUlUIG1lc3NhZ2UgaWYgc3VjY2VlZGVkLgorCQkJICovCisJCQlp ZiAoYnVpbGRfZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbykgJiYKKwkJ CQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyogRmlu aXNoIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJCXBhX3hhY3RfZmluaXNoKHdp bmZvLCBjb21taXRfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJ CSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5k IHRoZQorCQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJ cGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKy8qIGZhbGwgdGhy b3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2Vy dCh3aW5mbyk7CisKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UocmVtb3RlX3hpZCwg TE9HSUNBTF9SRVBfTVNHX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJ CXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsK KworCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFj dF9maW5pc2god2luZm8sIGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9z ZSB0aGUgZmlsZSBiZWZvcmUgY29tbWl0dGluZy4KKwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkK KwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCisJCQlJTkpFQ1RJT05fUE9JTlQoInBhcmFsbGVs LXdvcmtlci1iZWZvcmUtY29tbWl0IiwgTlVMTCk7CisKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRf aW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21t aXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCXBhX2NvbW1pdF90cmFuc2FjdGlvbigp OworCisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24ocmVtb3RlX3hpZCwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgYXBwbHkgYWN0aW9uOiAlZCIsIChpbnQpIGFwcGx5X2FjdGlvbik7CisJCQlicmVhazsKKwl9 CisKKwkvKiBDYWNoZSB0aGUgcmVtb3RlX3hpZCAqLworCWxhc3RfcmVtb3RlX3hpZCA9IHJlbW90 ZV94aWQ7CisKKwlyZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJaW5fcmVtb3Rl X3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwllbG9nKERFQlVHMSwgInJlc2V0IHJlbW90ZV94aWQg JXUiLCByZW1vdGVfeGlkKTsKIAogCS8qCiAJICogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbCwgYXMgd2VsbCBhcwpAQCAtMjAyNCw3ICsy MjIxLDggQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCSAqIFhhY3RMYXN0 Q29tbWl0RW5kLCBhbmQgYWRkaW5nIGl0IGZvciB0aGlzIHB1cnBvc2UgZG9lc24ndCBzZWVtcyB3 b3J0aAogCSAqIGl0LgogCSAqLwotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5l bmRfbHNuLCBJbnZhbGlkWExvZ1JlY1B0cik7CisJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFy ZV9kYXRhLmVuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJIEludmFsaWRUcmFuc2Fj dGlvbklkKTsKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC0yMDg0LDcg KzIyODIsOCBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwog Ci0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29t bWl0RW5kKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFj dExhc3RDb21taXRFbmQsCisJCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyoKQEAgLTIxNTMsNyArMjM1Miw4IEBAIGFwcGx5 X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJICogdHJhbnNhY3Rpb24g YmVjYXVzZSB3ZSBhbHdheXMgZmx1c2ggdGhlIFdBTCByZWNvcmQgZm9yIGl0LiBTZWUKIAkgKiBh cHBseV9oYW5kbGVfcHJlcGFyZS4KIAkgKi8KLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFj a19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyKTsKKwlzdG9yZV9mbHVz aF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIEludmFsaWRYTG9nUmVj UHRyLAorCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsKIAogCS8qCkBAIC0yMjE1LDcgKzI0MTUsOCBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJICogSXQgaXMgb2theSBub3QgdG8gc2V0IHRo ZSBsb2NhbF9lbmQgTFNOIGZvciB0aGUgcHJlcGFyZSBiZWNhdXNlCiAJCQkgKiB3ZSBhbHdheXMg Zmx1c2ggdGhlIHByZXBhcmUgcmVjb3JkLiBTZWUgYXBwbHlfaGFuZGxlX3ByZXBhcmUuCiAJCQkg Ki8KLQkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZhbGlk WExvZ1JlY1B0cik7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xz biwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAK IAkJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC0yNDY3LDYgKzI2NjgsMTEg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNf TEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAorCQkJLyoKKwkJ CSAqIFRPRE8sIHRoZSBwYSB3b3JrZXIgY291bGQgc3RhcnQgdG8gd2FpdCB0b28gc29vbiB3aGVu CisJCQkgKiBwcm9jZXNzaW5nIHNvbWUgb2xkIHN0cmVhbSBzdGFydAorCQkJICovCisKIAkJCS8q CiAJCQkgKiBPcGVuIHRoZSBzcG9vbCBmaWxlIHVubGVzcyBpdCB3YXMgYWxyZWFkeSBvcGVuZWQg d2hlbiBzd2l0Y2hpbmcKIAkJCSAqIHRvIHNlcmlhbGl6ZSBtb2RlLiBUaGUgdHJhbnNhY3Rpb24g c3RhcnRlZCBpbgpAQCAtMzE5NCw3ICszNDAwLDggQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAKIAkJcGdzdGF0X3JlcG9y dF9zdGF0KGZhbHNlKTsKIAotCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQpOworCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRf ZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQsCisJCQkJCQkJIEludmFsaWRUcmFuc2Fj dGlvbklkKTsKIAl9CiAJZWxzZQogCXsKQEAgLTMyMjcsNiArMzQzNCw5IEBAIGFwcGx5X2hhbmRs ZV9yZWxhdGlvbihTdHJpbmdJbmZvIHMpCiAKIAkvKiBBbHNvIHJlc2V0IGFsbCBlbnRyaWVzIGlu IHRoZSBwYXJ0aXRpb24gbWFwIHRoYXQgcmVmZXIgdG8gcmVtb3RlcmVsLiAqLwogCWxvZ2ljYWxy ZXBfcGFydG1hcF9yZXNldF9yZWxtYXAocmVsKTsKKworCWlmIChhbV9sZWFkZXJfYXBwbHlfd29y a2VyKCkpCisJCXBhX2Rpc3RyaWJ1dGVfc2NoZW1hX2NoYW5nZXNfdG9fd29ya2VycyhyZWwpOwog fQogCiAvKgpAQCAtNDAwMSw2ICs0MjExLDggQEAgRmluZERlbGV0ZWRUdXBsZUluTG9jYWxSZWwo UmVsYXRpb24gbG9jYWxyZWwsIE9pZCBsb2NhbGlkeG9pZCwKIAogLyoKICAqIFRoaXMgaGFuZGxl cyBpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlIG9uIGEgcGFydGl0aW9uZWQgdGFibGUuCisgKgorICog VE9ETywgc3VwcG9ydCBwYXJhbGxlbCBhcHBseS4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hh bmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00NTUxLDYg KzQ3NjMsMTAgQEAgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogICogY2hlY2sgd2hpY2gg ZW50cmllcyBvbiBpdCBhcmUgYWxyZWFkeSBsb2NhbGx5IGZsdXNoZWQuIFRob3NlIHdlIGNhbiBy ZXBvcnQKICAqIGFzIGhhdmluZyBiZWVuIGZsdXNoZWQuCiAgKgorICogRm9yIG5vbi1zdHJlYW1p bmcgdHJhbnNhY3Rpb25zIG1hbmFnZWQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdlIHdp bGwKKyAqIGdldCB0aGUgbG9jYWwgY29tbWl0IGVuZCBmcm9tIHRoZSBzaGFyZWQgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGluZm8gb25jZSB0aGUKKyAqIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNvbW1p dHRlZCBieSB0aGUgd29ya2VyLgorICoKICAqIFRoZSBoYXZlX3BlbmRpbmdfdHhlcyBpcyB0cnVl IGlmIHRoZXJlIGFyZSBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMgdGhhdAogICogbmVlZCB0byBi ZSBmbHVzaGVkLgogICovCkBAIC00NTYwLDYgKzQ3NzYsNyBAQCBnZXRfZmx1c2hfcG9zaXRpb24o WExvZ1JlY1B0ciAqd3JpdGUsIFhMb2dSZWNQdHIgKmZsdXNoLAogewogCWRsaXN0X211dGFibGVf aXRlciBpdGVyOwogCVhMb2dSZWNQdHIJbG9jYWxfZmx1c2ggPSBHZXRGbHVzaFJlY1B0cihOVUxM KTsKKwlMaXN0CSAgICpjb21taXR0ZWRfcGFfeGlkID0gTklMOwogCiAJKndyaXRlID0gSW52YWxp ZFhMb2dSZWNQdHI7CiAJKmZsdXNoID0gSW52YWxpZFhMb2dSZWNQdHI7CkBAIC00NTY5LDYgKzQ3 ODYsMzYgQEAgZ2V0X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgKndyaXRlLCBYTG9nUmVjUHRy ICpmbHVzaCwKIAkJRmx1c2hQb3NpdGlvbiAqcG9zID0KIAkJCWRsaXN0X2NvbnRhaW5lcihGbHVz aFBvc2l0aW9uLCBub2RlLCBpdGVyLmN1cik7CiAKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHBvcy0+cGFfcmVtb3RlX3hpZCkgJiYKKwkJCVhMb2dSZWNQdHJJc0ludmFsaWQocG9zLT5sb2Nh bF9lbmQpKQorCQl7CisJCQlib29sCQlza2lwcGVkX3dyaXRlOworCisJCQlwb3MtPmxvY2FsX2Vu ZCA9IHBhX2dldF9sYXN0X2NvbW1pdF9lbmQocG9zLT5wYV9yZW1vdGVfeGlkLCB0cnVlLAorCQkJ CQkJCQkJCQkJCSZza2lwcGVkX3dyaXRlKTsKKworCQkJZWxvZyhERUJVRzEsCisJCQkJICJnb3Qg Y29tbWl0IGVuZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgIgorCQkJCSAidHhuOiAldSwg cmVtb3RlX2VuZCAlWC8lWCwgbG9jYWxfZW5kICVYLyVYIiwKKwkJCQkgcG9zLT5wYV9yZW1vdGVf eGlkLCBMU05fRk9STUFUX0FSR1MocG9zLT5yZW1vdGVfZW5kKSwKKwkJCQkgTFNOX0ZPUk1BVF9B UkdTKHBvcy0+bG9jYWxfZW5kKSk7CisKKwkJCS8qCisJCQkgKiBCcmVhayB0aGUgbG9vcCBpZiB0 aGUgd29ya2VyIGhhcyBub3QgZmluaXNoZWQgYXBwbHlpbmcgdGhlCisJCQkgKiB0cmFuc2FjdGlv bi4gVGhlcmUncyBubyBuZWVkIHRvIGNoZWNrIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb25zLAorCQkJ ICogYXMgdGhleSBtdXN0IGNvbW1pdCBhZnRlciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBiZWlu ZworCQkJICogZXhhbWluZWQgYW5kIHRodXMgd29uJ3QgaGF2ZSB0aGVpciBjb21taXQgZW5kIGF2 YWlsYWJsZSB5ZXQuCisJCQkgKi8KKwkJCWlmICghc2tpcHBlZF93cml0ZSAmJiBYTG9nUmVjUHRy SXNJbnZhbGlkKHBvcy0+bG9jYWxfZW5kKSkKKwkJCQlicmVhazsKKworCQkJY29tbWl0dGVkX3Bh X3hpZCA9IGxhcHBlbmRfeGlkKGNvbW1pdHRlZF9wYV94aWQsIHBvcy0+cGFfcmVtb3RlX3hpZCk7 CisJCX0KKworCQkvKgorCQkgKiBXb3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIG9yIHRoZSB0 cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBpbiB0aGUKKwkJICogbGVhZGVyIGFwcGx5IHdvcmtlcgor CQkgKi8KIAkJKndyaXRlID0gcG9zLT5yZW1vdGVfZW5kOwogCiAJCWlmIChwb3MtPmxvY2FsX2Vu ZCA8PSBsb2NhbF9mbHVzaCkKQEAgLTQ1NzcsMjkgKzQ4MjQsMTkgQEAgZ2V0X2ZsdXNoX3Bvc2l0 aW9uKFhMb2dSZWNQdHIgKndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIAkJCWRsaXN0X2RlbGV0 ZShpdGVyLmN1cik7CiAJCQlwZnJlZShwb3MpOwogCQl9Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJ CSAqIERvbid0IHdhbnQgdG8gdXNlbGVzc2x5IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUg bGlzdCB3aGljaAotCQkJICogY291bGQgcG90ZW50aWFsbHkgYmUgbG9uZy4gSW5zdGVhZCBnZXQg dGhlIGxhc3QgZWxlbWVudCBhbmQKLQkJCSAqIGdyYWIgdGhlIHdyaXRlIHBvc2l0aW9uIGZyb20g dGhlcmUuCi0JCQkgKi8KLQkJCXBvcyA9IGRsaXN0X3RhaWxfZWxlbWVudChGbHVzaFBvc2l0aW9u LCBub2RlLAotCQkJCQkJCQkJICZsc25fbWFwcGluZyk7Ci0JCQkqd3JpdGUgPSBwb3MtPnJlbW90 ZV9lbmQ7Ci0JCQkqaGF2ZV9wZW5kaW5nX3R4ZXMgPSB0cnVlOwotCQkJcmV0dXJuOwotCQl9CiAJ fQogCiAJKmhhdmVfcGVuZGluZ190eGVzID0gIWRsaXN0X2lzX2VtcHR5KCZsc25fbWFwcGluZyk7 CisKKwljbGVhbnVwX3JlcGxpY2FfaWRlbnRpdHlfdGFibGUoY29tbWl0dGVkX3BhX3hpZCk7CiB9 CiAKIC8qCiAgKiBTdG9yZSBjdXJyZW50IHJlbW90ZS9sb2NhbCBsc24gcGFpciBpbiB0aGUgdHJh Y2tpbmcgbGlzdC4KICAqLwogdm9pZAotc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciBy ZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbikKK3N0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhM b2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24sCisJCQkJCSBUcmFuc2Fj dGlvbklkIHJlbW90ZV94aWQpCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKQEAgLTQ2 MTcsNiArNDg1NCw3IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xz biwgWExvZ1JlY1B0ciBsb2NhbF9sc24pCiAJZmx1c2hwb3MgPSBwYWxsb2Nfb2JqZWN0KEZsdXNo UG9zaXRpb24pOwogCWZsdXNocG9zLT5sb2NhbF9lbmQgPSBsb2NhbF9sc247CiAJZmx1c2hwb3Mt PnJlbW90ZV9lbmQgPSByZW1vdGVfbHNuOworCWZsdXNocG9zLT5wYV9yZW1vdGVfeGlkID0gcmVt b3RlX3hpZDsKIAogCWRsaXN0X3B1c2hfdGFpbCgmbHNuX21hcHBpbmcsICZmbHVzaHBvcy0+bm9k ZSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOwpAQCAtNjA2 NCw3ICs2MzAyLDcgQEAgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCkKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24sIGNyZWF0ZSB0aGUgYnVm ZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZmlsZS4KICAq Lwotc3RhdGljIHZvaWQKK3ZvaWQKIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2Fj dGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogewogCWNoYXIJCXBhdGhbTUFYUEdQQVRI XTsKQEAgLTYxMDksNyArNjM0Nyw3IEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFu c2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogICogc3RyZWFtX2Nsb3NlX2ZpbGUK ICAqCSAgQ2xvc2UgdGhlIGN1cnJlbnRseSBvcGVuIGZpbGUgd2l0aCBzdHJlYW1lZCBjaGFuZ2Vz LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKIAlB c3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwpAQCAtNjE1Nyw3ICs2Mzk1LDcgQEAgc3RyZWFtX3dy aXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogICogdGFyZ2V0IGZpbGUgaWYg bm90IGFscmVhZHkgYmVmb3JlIHdyaXRpbmcgdGhlIG1lc3NhZ2UgYW5kIGNsb3NlIHRoZSBmaWxl IGF0CiAgKiB0aGUgZW5kLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3RyZWFtX29wZW5fYW5k X3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rpb24sIFN0cmluZ0luZm8g cykKIHsKIAlBc3NlcnQoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggOTA0MjQ3MGY1MDAuLmMwYzBiMzg1ZDQwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMjUzLDYgKzI1Myw4IEBAIGV4 dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChT dHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWws IEJpdG1hcHNldCAqY29sdW1ucywKIAkJCQkJCQkJIFB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRl X2dlbmNvbHNfdHlwZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2ludGVybmFsX3Jl bChTdHJpbmdJbmZvIG91dCwKKwkJCQkJCQkJCQkgIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKTsK IGV4dGVybiBMb2dpY2FsUmVwUmVsYXRpb24gKmxvZ2ljYWxyZXBfcmVhZF9yZWwoU3RyaW5nSW5m byBpbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3R5cChTdHJpbmdJbmZvIG91dCwg VHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBPaWQgdHlwb2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKaW5kZXggZjlhYTllNTlhNmQuLjI3ZTM2NWY4NGMy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAtNTIsNiAr NTIsOCBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbCwKIAkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiBib29sIElz SW5kZXhVc2FibGVGb3JSZXBsaWNhSWRlbnRpdHlGdWxsKFJlbGF0aW9uIGlkeHJlbCwgQXR0ck1h cCAqYXR0cm1hcCk7CiBleHRlcm4gT2lkCUdldFJlbGF0aW9uSWRlbnRpdHlPclBLKFJlbGF0aW9u IHJlbCk7CitleHRlcm4gaW50CWxvZ2ljYWxyZXBfZ2V0X251bV9yZWxzKHZvaWQpOworZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93cml0ZV9hbGxfcmVscyhTdHJpbmdJbmZvIG91dCk7CiBleHRlcm4g TG9naWNhbFJlcFJlbE1hcEVudHJ5ICpsb2dpY2FscmVwX2dldF9yZWxlbnRyeShMb2dpY2FsUmVw UmVsSWQgcmVtb3RlaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMWRiZWM2MjVj ODEuLmQ1YmY0NTk4OTgwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaApAQCAtMzE0LDYgKzMxNCwxMCBAQCBleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpOwogZXh0ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsK IAogZXh0ZXJuIHZvaWQgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCk7CitleHRlcm4gdm9pZCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCk7CitleHRlcm4gdm9pZCBzdHJlYW1fY2xv c2VfZmlsZSh2b2lkKTsKK2V4dGVybiB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2Uo VHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLAorCQkJCQkJCQkJCSBTdHJpbmdJbmZvIHMp OwogCiBleHRlcm4gdm9pZCBzZXRfc3RyZWFtX29wdGlvbnMoV2FsUmN2U3RyZWFtT3B0aW9ucyAq b3B0aW9ucywKIAkJCQkJCQkgICBjaGFyICpzbG90bmFtZSwKQEAgLTMyNyw3ICszMzEsOCBAQCBl eHRlcm4gdm9pZCBTZXR1cEFwcGx5T3JTeW5jV29ya2VyKGludCB3b3JrZXJfc2xvdCk7CiAKIGV4 dGVybiB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi1leHRlcm4gdm9p ZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIg bG9jYWxfbHNuKTsKK2V4dGVybiB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIg cmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24sCisJCQkJCQkJCSBUcmFuc2FjdGlvbklk IHJlbW90ZV94aWQpOwogCiAvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8K IGV4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CkBAIC0zNDIsNiAr MzQ3LDcgQEAgZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0 ZXJuIGJvb2wgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6 ZSBuYnl0ZXMsCiAJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBwYV9kaXN0 cmlidXRlX3NjaGVtYV9jaGFuZ2VzX3RvX3dvcmtlcnMoTG9naWNhbFJlcFJlbGF0aW9uICpyZWwp OwogZXh0ZXJuIHZvaWQgcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCQkJCQkgICBib29sIHN0cmVhbV9sb2NrZWQpOwog CkBAIC0zNjgsOCArMzc0LDkgQEAgZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLAogCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsK IGV4dGVybiBib29sIHBhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZChUcmFuc2FjdGlvbklkIHhpZCk7 CiBleHRlcm4gdm9pZCBwYV9yZWNvcmRfZGVwZW5kZW5jeV9vbl90cmFuc2FjdGlvbnMoTGlzdCAq ZGVwZW5kc19vbl94aWRzKTsKLQorZXh0ZXJuIHZvaWQgcGFfY29tbWl0X3RyYW5zYWN0aW9uKHZv aWQpOwogZXh0ZXJuIHZvaWQgcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24oVHJhbnNh Y3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgcGFfYWRkX3BhcmFsbGVsaXplZF90cmFuc2FjdGlv bihUcmFuc2FjdGlvbklkIHhpZCk7CiAKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdv cmtlcikgKCh3b3JrZXIpLT5pbl91c2UgJiYgXAogCQkJCQkJCQkJICAgKHdvcmtlciktPnR5cGUg PT0gV09SS0VSVFlQRV9QQVJBTExFTF9BUFBMWSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApp bmRleCBhNGM3ZGJhZmY1OS4uNjI1MWVlYzIwMzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVp bGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBs JywKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5w bCcsCisgICAgICAndC8wNTBfcGFyYWxsZWxfYXBwbHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3Mu cGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MDFfcmVwX2NoYW5nZXMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5n ZXMucGwKaW5kZXggZDdlNjJlNGQ0ODguLjA1ZDAyZWY2NDA3IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5nZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDAxX3JlcF9jaGFuZ2VzLnBsCkBAIC0xNiw2ICsxNiw4IEBAICRub2RlX3B1Ymxp c2hlci0+c3RhcnQ7CiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKIG15ICRub2RlX3N1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKICRub2Rl X3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKKwkibWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDEwIik7CiAk bm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250 ZW50IG9uIHB1Ymxpc2hlcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEw X3RydW5jYXRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3RydW5jYXRlLnBsCmlu ZGV4IDk0NTUwNWQwMjM5Li5lMTVhNmJiMmEwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDEwX3RydW5jYXRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx MF90cnVuY2F0ZS5wbApAQCAtMTcsNyArMTcsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0Owog bXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vi c2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKICRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCXFxKG1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMgPSA2KSk7CisJcXEobWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDcp KTsKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCiBteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAk bm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBhYzk2YmMzZjAwOS4uNzA1YmM4M2Y1ZWEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMjMyLDYgKzIzMiwxMiBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCisj IEZJWE1FOiBDdXJyZW50bHksIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVk IGluIHBhcmFsbGVsIGJ5CisjIGRlZmF1bHQuIFNvLCB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gaXMg aGFuZGxlZCBieSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVG8KKyMgdHJpZ2dlciB0aGUgZGVh ZGxvY2ssIGluaXRpYXRlIGFuIG1vcmUgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBieSB0aGUK KyMgbGVhZGVyLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfdGFiXzIgdmFsdWVzKDEpIik7CisKICRoLT5xdWVyeV9zYWZlKCdDT01NSVQn KTsKICRoLT5xdWl0OwogCkBAIC0yNDcsNyArMjUzLDcgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIp OwotaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBpbmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAwMiksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwogCiAjIENsZWFuIHVw IHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjZfc3RhdHMucGwKaW5kZXggNWQ0NTcwNjBhMDIuLjkxMTAwNWJkZTIwIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDI2X3N0YXRzLnBsCkBAIC0xNiw2ICsxNiw3IEBAICRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUuCiBteSAkbm9kZV9zdWJz Y3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7CiAk bm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsK ICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyN19ub3N1cGVydXNlci5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy N19ub3N1cGVydXNlci5wbAppbmRleCAzMjJmNWI0Y2M2YS4uZmRmYzQ0YWM3MjkgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19ub3N1cGVydXNlci5wbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfbm9zdXBlcnVzZXIucGwKQEAgLTg2LDYgKzg2LDcgQEAg JG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNo ZXInKTsKICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3N1YnNjcmliZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ ICdsb2dpY2FsJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzID0gMTAiKTsKICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAkbm9kZV9zdWJzY3JpYmVy LT5zdGFydDsKICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAu ICcgZGJuYW1lPXBvc3RncmVzJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzA1MF9wYXJhbGxlbF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJh bGxlbF9hcHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjlj ZjQ4Y2I3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBf cGFyYWxsZWxfYXBwbHkucGwKQEAgLTAsMCArMSwxMzAgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIw MjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGhpcyB0ZXN0cyB0 aGF0IGRlcGVuZGVuY3kgdHJhY2tpbmcgYmV0d2VlbiB0cmFuc2FjdGlvbnMgY2FuIHdvcmsgd2Vs bAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor aWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tp cF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsK K30KKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlz aGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisKKyMgSW5zZXJ0IGluaXRpYWwgZGF0YQorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGFiIChpZCBpbnQg UFJJTUFSWSBLRVksIHZhbHVlIHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMSwgMTApLCAndGVzdCcpOyIpOworCisjIENyZWF0ZSBhIHB1YmxpY2F0aW9uCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWIgRk9SIEFMTCBUQUJMRVM7Iik7CisKKyMgSW5pdGlhbGl6ZSBzdWJz Y3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2Fn ZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAorCSJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsKKyRub2Rl X3N1YnNjcmliZXItPnN0YXJ0OworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9u X3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMg c2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3Vs ZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNo ZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4g J0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0 aW9uX3BvaW50czsnKTsKKworIyBDcmVhdGUgYSBzdWJzY3JpcHRpb24KK215ICRwdWJsaXNoZXJf Y29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsK KworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIkNSRUFURSBU QUJMRSByZWdyZXNzX3RhYiAoaWQgaW50IFBSSU1BUlkgS0VZLCB2YWx1ZSB0ZXh0KTsiKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3Nfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElD QVRJT04gcmVncmVzc19wdWI7Iik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRv IGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5v ZGVfcHVibGlzaGVyLCAncmVncmVzc19zdWInKTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxp c2hlcgorIworIyBYWFggVGhpcyBtYXkgbm90IGVub3VnaCB0byBsYXVuY2ggYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIsIGJlY2F1c2UKKyMgdGFibGVfc3RhdGVzX25vdF9yZWFkeSBpcyBub3QgZGlz Y2FyZGVkIHlldC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAg IklOU0VSVCBJTlRPIHJlZ3Jlc3NfdGFiIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCks ICd0ZXN0Jyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jlc3Nf c3ViJyk7CisKKyMgSW5zZXJ0IHR1cGxlcyBhZ2FpbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoMjEsIDMwKSwgJ3Rlc3QnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpcyBsYXVuY2hlZAorbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoMSkgRlJPTSBwZ19zdGF0X2FjdGl2 aXR5IFdIRVJFIGJhY2tlbmRfdHlwZSA9ICdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdv cmtlciciKTsKK2lzKCRyZXN1bHQsICcxJywgInBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBsYXVj bmhlZCBieSBhIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbiIpOworCisjIEF0dGFjaCBhbiBpbmpl Y3Rpb25fcG9pbnQuIFBhcmFsbGVsIHdvcmtlcnMgd291bGQgd2FpdCBiZWZvcmUgdGhlIGNvbW1p dAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQnLCd3YWl0 Jyk7IgorKTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSwgJ3Rlc3QnKTsiKTsKKworIyBXYWl0IHVudGls IHRoZSBwYXJhbGxlbCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9pbnQuCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3 b3JrZXInLAorCSdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOworCitteSAkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1 Ymxpc2hlciBhZ2Fpbi4gVGhpcyB0cmFuc2FjdGlvbiBpcyBpbmRlcGVuZGVudCBmcm9tIHRoZQor IyBwcmV2aW91cyBvbmUsIGJ1dCB0aGUgcGFyYWxsZWwgd29ya2VyIHdvdWxkIHdhaXQgdGlsbCBp dCBmaW5pc2hlcworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAi SU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSwg J3Rlc3QnKTsiKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0cyBmb3IgdGhl IHRyYW5zYWN0aW9uCitteSAkc3RyID0gJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L3dhaXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLywgJG9mZnNldCk7CitteSAkeGlk ID0gJHN0ciA9fiAvd2FpdCBmb3IgZGVwZW5kZWQgeGlkIChbMS05XVswLTldKykvOworCisjIFVw ZGF0ZSB0dXBsZXMgd2hpY2ggaGF2ZSBub3QgYmVlbiBhcHBsaWVkIHlldCBvbiBzdWJzY3JpYmVy IGJlY2F1c2UgdGhlCisjIHBhcmFsbGVsIHdvcmtlciBzdG9wcyBhdCB0aGUgaW5qZWN0aW9uIHBv aW50LiBOZXdseSBhc3NpZ25lZCB3b3JrZXIgYWxzbworIyB3YWl0cyBmb3IgdGhlIHNhbWUgdHJh bnNhY3Rpb25zIGFzIGFib3ZlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKyAgICAiVVBEQVRFIHJlZ3Jlc3NfdGFiIFNFVCB2YWx1ZSA9ICd1cGRhdGVkJyBXSEVSRSBp ZCBCRVRXRUVOIDMxIEFORCAzNTsiKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3 YWl0cyBmb3IgdGhlIHNhbWUgdHJhbnNhY3Rpb24KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci93YWl0IGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCisjIFdha2V1 cCB0aGUgcGFyYWxsZWwgd29ya2VyLiBXZSBkZXRhY2ggZmlyc3Qgbm8gdG8gc3RvcCBvdGhlciBw YXJhbGxlbCB3b3JrZXJzCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXFbCisgICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdwYXJhbGxlbC13b3JrZXIt YmVmb3JlLWNvbW1pdCcpOworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncGFy YWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQnKTsKK10pOworCisjIFZlcmlmeSB0aGUgcGFyYWxs ZWwgd29ya2VyIHdha2VzIHVwCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvZmlu aXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVkIHhpZCAkeGlkLywgJG9mZnNldCk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgxKSBGUk9NIHJlZ3Jlc3NfdGFiIik7CitpcyAoJHJlc3VsdCwgNTAsICdpbnNlcnRzIGFyZSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoMSkgRlJPTSByZWdy ZXNzX3RhYiBXSEVSRSB2YWx1ZSA9ICd1cGRhdGVkJyIpOworaXMgKCRyZXN1bHQsIDUsICd1cGRh dGVzIGFyZSBhbHNvIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcicpOworCitkb25lX3Rlc3Rpbmco KTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMDU5MzZkNjFhNTQuLjgxMWEyM2FjMDNj IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjA5NCw2ICsyMDk0LDcgQEAgUGFyYWxs ZWxIYXNoR3Jvd3RoCiBQYXJhbGxlbEhhc2hKb2luQmF0Y2gKIFBhcmFsbGVsSGFzaEpvaW5CYXRj aEFjY2Vzc29yCiBQYXJhbGxlbEhhc2hKb2luU3RhdGUKK1BhcmFsbGVsaXplZFR4bkVudHJ5CiBQ YXJhbGxlbEluZGV4U2NhbkRlc2MKIFBhcmFsbGVsaXplZFR4bkVudHJ5CiBQYXJhbGxlbFNsb3QK QEAgLTQwOTgsNiArNDA5OSw3IEBAIHJlbmRlenZvdXNIYXNoRW50cnkKIHJlcAogcmVwbGFjZV9y dGVfdmFyaWFibGVzX2NhbGxiYWNrCiByZXBsYWNlX3J0ZV92YXJpYWJsZXNfY29udGV4dAorcmVw bGljYV9pZGVudGl0eV9oYXNoCiByZXBvcnRfZXJyb3JfZm4KIHJldF90eXBlCiByZXdpbmRfc291 cmNlCi0tIAoyLjQ3LjMKCg== --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0005-support-2PC.patch" Content-Description: v8-0005-support-2PC.patch Content-Disposition: attachment; filename="v8-0005-support-2PC.patch"; size=14280; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA0ZTc2MjQxNDYwYTA3MDdkYmJlYWJiODFlMzY3MjNkZGFjZjkwYmNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MDE6MjYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY4IDUvOV0gc3VwcG9ydCAyUEMKClRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBQUkVQQVJFIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwuIFBhcmFsbGVsCmFwcGx5IHdvcmtlcnMg YXJlIGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gd2hlbiBCRUdJTl9QUkVQQVJFIGlzIHJlY2Vp dmVkLiBUaGlzCnBhcnQgYW5kIHRoZSBkZXBlbmRlbmN5LXdhaXRpbmcgbWVjaGFuaXNtIGFyZSB0 aGUgc2FtZSBhcyBhIG5vcm1hbCB0cmFuc2FjdGlvbi4KCkEgcGFyYWxsZWwgd29ya2VyIGNhbiBi ZSBmcmVlZCBhZnRlciBpdCBoYW5kbGVzIGEgUFJFUEFSRSBtZXNzYWdlLiBUaGUgcHJlcGFyZWQK dHJhbnNhY3Rpb24gY2FuIGJlIGRlbGV0ZWQgZnJvbSBwYXJhbGxlbGl6ZWRfdHhucyBhdCB0aGF0 IHRpbWU7IHRoZSB1cGNvbWluZwp0cmFuc2FjdGlvbnMgd2lsbCB3YWl0IHVudGlsIHRoZW4uCgpU aGUgbGVhZGVyIGFwcGx5IHdvcmtlciByZXNvbHZlcyBDT01NSVQgUFJFUEFSRUQvUk9MTEJBQ0sg UFJFUEFSRUQuIFNpbmNlIGl0IGNhbgpiZSBzZXJpYWxpemVkIGF1dG9tYXRpY2FsbHksIGl0IGRv ZXMgbm90IGFkZCB0aGUgdHJhbnNhY3Rpb24gdG8gcGFyYWxsZWxpemVkX3R4bnMuCi0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMjM5ICsrKysrKysr KysrKysrKystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBs IHwgIDYwICsrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI3MSBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBk MWJhODAxZjk2Zi4uNDFkYTgwMGIyZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwpAQCAtNzU2LDYgKzc1NiwxNCBAQCBjbGVhbnVwX3JlcGxpY2FfaWRlbnRpdHlf dGFibGUoTGlzdCAqY29tbWl0dGVkX3hpZCkKIAlpZiAoIWNvbW1pdHRlZF94aWQpCiAJCXJldHVy bjsKIAorCS8qCisJICogU2tpcCBpZiB0aGUgcmVwbGljYV9pZGVudGl0eV90YWJsZSBpcyBub3Qg aW5pdGlhbGl6ZWQgeWV0LiBUaGlzIGNhbgorCSAqIGhhcHBlbiBpZiB0aGUgZW1wdHkgdHJhbnNh Y3Rpb24gd2FzIHJlcGxpY2F0ZWQgYW5kIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd2Fz IGxhdW5jaGVkLiBTZWUgY29tbWVudHMgaW4gYXBwbHlfaGFuZGxlX3ByZXBhcmUoKS4KKwkgKi8K KwlpZiAoIXJlcGxpY2FfaWRlbnRpdHlfdGFibGUpCisJCXJldHVybjsKKwogCXJlcGxpY2FfaWRl bnRpdHlfc3RhcnRfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7CiAJd2hpbGUg KChyaWVudHJ5ID0gcmVwbGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRlbnRpdHlfdGFi bGUsICZpKSkgIT0gTlVMTCkKIAl7CkBAIC0yMTE3LDYgKzIxMjUsMTEgQEAgc3RhdGljIHZvaWQK IGFwcGx5X2hhbmRsZV9iZWdpbl9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVw UHJlcGFyZWRUeG5EYXRhIGJlZ2luX2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVz c2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxf bXNnID0gKnM7CiAKIAkvKiBUYWJsZXN5bmMgc2hvdWxkIG5ldmVyIHJlY2VpdmUgcHJlcGFyZS4g Ki8KIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQpAQCAtMjEyOCwxMiArMjE0MSw2MSBAQCBh cHBseV9oYW5kbGVfYmVnaW5fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKIAlsb2dpY2FscmVwX3JlYWRfYmVnaW5fcHJl cGFyZShzLCAmYmVnaW5fZGF0YSk7Ci0Jc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChiZWdp bl9kYXRhLnhpZCwgYmVnaW5fZGF0YS5wcmVwYXJlX2xzbik7CisKKwlyZW1vdGVfeGlkID0gYmVn aW5fZGF0YS54aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHJlbW90ZV94aWQs IGJlZ2luX2RhdGEucHJlcGFyZV9sc24pOwogCiAJcmVtb3RlX2ZpbmFsX2xzbiA9IGJlZ2luX2Rh dGEucHJlcGFyZV9sc247CiAKIAltYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGJlZ2luX2Rh dGEucHJlcGFyZV9sc24pOwogCisJcGFfYWxsb2NhdGVfd29ya2VyKHJlbW90ZV94aWQsIGZhbHNl KTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocmVtb3Rl X3hpZCwgJndpbmZvKTsKKworCWVsb2coREVCVUcxLCAibmV3IHJlbW90ZV94aWQgJXUiLCByZW1v dGVfeGlkKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVS X0FQUExZOgorCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxl biwgcy0+ZGF0YSkpCisJCQl7CisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8p OworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBt b2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJp YWxpemUod2luZm8sIHRydWUpOworCisvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1f d3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQX01TR19CRUdJTl9QUkVQQVJFLCAmb3JpZ2luYWxfbXNn KTsKKworCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFu c2FjdGlvbi4gKi8KKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQkvKiBIb2xkIHRoZSBsb2Nr IHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfbG9ja190cmFuc2Fj dGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJcGFf c2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7 CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgYXBw bHkgYWN0aW9uOiAlZCIsIChpbnQpIGFwcGx5X2FjdGlvbik7CisJCQlicmVhazsKKwl9CisKIAlp bl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0cnVlOwogCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9SVU5OSU5HLCBOVUxMKTsKQEAgLTIxODMsNiArMjI0NSwxMSBAQCBzdGF0aWMgdm9pZAog YXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJl ZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2Ug YmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9 ICpzOwogCiAJbG9naWNhbHJlcF9yZWFkX3ByZXBhcmUocywgJnByZXBhcmVfZGF0YSk7CiAKQEAg LTIxOTMsMzYgKzIyNjAsMTM3IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykK IAkJCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pLAogCQkJ CQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHJlbW90ZV9maW5hbF9sc24pKSkpOwogCi0JLyoKLQkgKiBV bmxpa2UgY29tbWl0LCBoZXJlLCB3ZSBhbHdheXMgcHJlcGFyZSB0aGUgdHJhbnNhY3Rpb24gZXZl biB0aG91Z2ggbm8KLQkgKiBjaGFuZ2UgaGFzIGhhcHBlbmVkIGluIHRoaXMgdHJhbnNhY3Rpb24g b3IgYWxsIGNoYW5nZXMgYXJlIHNraXBwZWQuIEl0Ci0JICogaXMgZG9uZSB0aGlzIHdheSBiZWNh dXNlIGF0IGNvbW1pdCBwcmVwYXJlZCB0aW1lLCB3ZSB3b24ndCBrbm93IHdoZXRoZXIKLQkgKiB3 ZSBoYXZlIHNraXBwZWQgcHJlcGFyaW5nIGEgdHJhbnNhY3Rpb24gYmVjYXVzZSBvZiB0aG9zZSBy ZWFzb25zLgotCSAqCi0JICogWFhYLCBXZSBjYW4gb3B0aW1pemUgc3VjaCB0aGF0IGF0IGNvbW1p dCBwcmVwYXJlZCB0aW1lLCB3ZSBmaXJzdCBjaGVjawotCSAqIHdoZXRoZXIgd2UgaGF2ZSBwcmVw YXJlZCB0aGUgdHJhbnNhY3Rpb24gb3Igbm90IGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbQotCSAqIHdv cnRod2hpbGUgYmVjYXVzZSBzdWNoIGNhc2VzIHNob3VsZG4ndCBiZSBjb21tb24uCi0JICovCi0J YmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZvKTsKIAotCWFwcGx5X2hhbmRsZV9wcmVw YXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsK KwkJY2FzZSBUUkFOU19MRUFERVJfQVBQTFk6CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwot CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7 CisJCQkvKgorCQkJICogVW5saWtlIGNvbW1pdCwgaGVyZSwgd2UgYWx3YXlzIHByZXBhcmUgdGhl IHRyYW5zYWN0aW9uIGV2ZW4KKwkJCSAqIHRob3VnaCBubyBjaGFuZ2UgaGFzIGhhcHBlbmVkIGlu IHRoaXMgdHJhbnNhY3Rpb24gb3IgYWxsCisJCQkgKiBjaGFuZ2VzIGFyZSBza2lwcGVkLiBJdCBp cyBkb25lIHRoaXMgd2F5IGJlY2F1c2UgYXQgY29tbWl0CisJCQkgKiBwcmVwYXJlZCB0aW1lLCB3 ZSB3b24ndCBrbm93IHdoZXRoZXIgd2UgaGF2ZSBza2lwcGVkIHByZXBhcmluZworCQkJICogYSB0 cmFuc2FjdGlvbiBiZWNhdXNlIG9mIHRob3NlIHJlYXNvbnMuCisJCQkgKgorCQkJICogWFhYLCBX ZSBjYW4gb3B0aW1pemUgc3VjaCB0aGF0IGF0IGNvbW1pdCBwcmVwYXJlZCB0aW1lLCB3ZQorCQkJ ICogZmlyc3QgY2hlY2sgd2hldGhlciB3ZSBoYXZlIHByZXBhcmVkIHRoZSB0cmFuc2FjdGlvbiBv ciBub3QgYnV0CisJCQkgKiB0aGF0IGRvZXNuJ3Qgc2VlbSB3b3J0aHdoaWxlIGJlY2F1c2Ugc3Vj aCBjYXNlcyBzaG91bGRuJ3QgYmUKKwkJCSAqIGNvbW1vbi4KKwkJCSAqLworCQkJYmVnaW5fcmVw bGljYXRpb25fc3RlcCgpOwogCi0JLyoKLQkgKiBJdCBpcyBva2F5IG5vdCB0byBzZXQgdGhlIGxv Y2FsX2VuZCBMU04gZm9yIHRoZSBwcmVwYXJlIGJlY2F1c2Ugd2UKLQkgKiBhbHdheXMgZmx1c2gg dGhlIHByZXBhcmUgcmVjb3JkLiBTbywgd2UgY2FuIHNlbmQgdGhlIGFja25vd2xlZGdtZW50IG9m Ci0JICogdGhlIHJlbW90ZV9lbmQgTFNOIGFzIHNvb24gYXMgcHJlcGFyZSBpcyBmaW5pc2hlZC4K LQkgKgotCSAqIFhYWCBGb3IgdGhlIHNha2Ugb2YgY29uc2lzdGVuY3kgd2l0aCBjb21taXQsIHdl IGNvdWxkIGhhdmUgc2V0IGl0IHdpdGgKLQkgKiB0aGUgTFNOIG9mIHByZXBhcmUgYnV0IGFzIG9m IG5vdyB3ZSBkb24ndCB0cmFjayB0aGF0IHZhbHVlIHNpbWlsYXIgdG8KLQkgKiBYYWN0TGFzdENv bW1pdEVuZCwgYW5kIGFkZGluZyBpdCBmb3IgdGhpcyBwdXJwb3NlIGRvZXNuJ3Qgc2VlbXMgd29y dGgKLQkgKiBpdC4KLQkgKi8KLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5k X2xzbiwgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwor CQkJLyogV2FpdCB1bnRpbCB0aGUgbGFzdCB0cmFuc2FjdGlvbiBmaW5pc2hlcyAqLworCQkJaWYg KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhc3RfcmVtb3RlX3hpZCkpCisJCQkJcGFfd2FpdF9mb3Jf ZGVwZW5kZWRfdHJhbnNhY3Rpb24obGFzdF9yZW1vdGVfeGlkKTsKKworCQkJYXBwbHlfaGFuZGxl X3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9z dGVwKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXBnc3RhdF9yZXBvcnRf c3RhdChmYWxzZSk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBva2F5IG5vdCB0byBzZXQgdGhlIGxv Y2FsX2VuZCBMU04gZm9yIHRoZSBwcmVwYXJlIGJlY2F1c2UKKwkJCSAqIHdlIGFsd2F5cyBmbHVz aCB0aGUgcHJlcGFyZSByZWNvcmQuIFNvLCB3ZSBjYW4gc2VuZCB0aGUKKwkJCSAqIGFja25vd2xl ZGdtZW50IG9mIHRoZSByZW1vdGVfZW5kIExTTiBhcyBzb29uIGFzIHByZXBhcmUgaXMKKwkJCSAq IGZpbmlzaGVkLgorCQkJICoKKwkJCSAqIFhYWCBGb3IgdGhlIHNha2Ugb2YgY29uc2lzdGVuY3kg d2l0aCBjb21taXQsIHdlIGNvdWxkIGhhdmUgc2V0CisJCQkgKiBpdCB3aXRoIHRoZSBMU04gb2Yg cHJlcGFyZSBidXQgYXMgb2Ygbm93IHdlIGRvbid0IHRyYWNrIHRoYXQKKwkJCSAqIHZhbHVlIHNp bWlsYXIgdG8gWGFjdExhc3RDb21taXRFbmQsIGFuZCBhZGRpbmcgaXQgZm9yIHRoaXMKKwkJCSAq IHB1cnBvc2UgZG9lc24ndCBzZWVtcyB3b3J0aCBpdC4KKwkJCSAqLworCQkJc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJ CQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOworCisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xF QURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAq IE1hcmsgdGhpcyB0cmFuc2FjdGlvbiBhcyBwYXJhbGxlbGl6ZWQuIFRoaXMgZW5zdXJlcyB0aGF0 CisJCQkgKiB1cGNvbWluZyB0cmFuc2FjdGlvbnMgd2FpdCB1bnRpbCB0aGlzIHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZC4KKwkJCSAqLworCQkJcGFfYWRkX3BhcmFsbGVsaXplZF90cmFuc2FjdGlv bihyZW1vdGVfeGlkKTsKKworCQkJLyoKKwkJCSAqIEJ1aWxkIGEgZGVwZW5kZW5jeSBiZXR3ZWVu IHRoaXMgdHJhbnNhY3Rpb24gYW5kIHRoZSBsYXN0bHkKKwkJCSAqIGNvbW1pdHRlZCB0cmFuc2Fj dGlvbiB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLiBUaGVuIHRyeSB0bworCQkJICogc2Vu ZCBhIENPTU1JVCBtZXNzYWdlIGlmIHN1Y2NlZWRlZC4KKwkJCSAqLworCQkJaWYgKGJ1aWxkX2Rl cGVuZGVuY3lfd2l0aF9sYXN0X2NvbW1pdHRlZF90eG4od2luZm8pICYmCisJCQkJcGFfc2VuZF9k YXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qIEZpbmlzaCBwcm9jZXNz aW5nIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgcHJlcGFy ZV9kYXRhLmVuZF9sc24pOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogU3dpdGNo IHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkg KiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hf dG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIHRydWUpOworLyogZmFsbCB0aHJvdWdoICovCisJ CWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsK KworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShyZW1vdGVfeGlkLCBMT0dJQ0FMX1JF UF9NU0dfUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3NldF9m aWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJLyog RmluaXNoIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5pc2go d2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNf UEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZp bGUgYmVmb3JlIGNvbW1pdHRpbmcuCisJCQkgKi8KKwkJCWlmIChzdHJlYW1fZmQpCisJCQkJc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJCQlJ TkpFQ1RJT05fUE9JTlQoInBhcmFsbGVsLXdvcmtlci1iZWZvcmUtcHJlcGFyZSIsIE5VTEwpOwor CisJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hh bmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQllbmRfcmVwbGljYXRp b25fc3RlcCgpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0 YS5lbmRfbHNuLCBJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlv bklkKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIG9rYXkgbm90IHRvIHNldCB0aGUgbG9jYWxfZW5k IExTTiBmb3IgdGhlIHByZXBhcmUgYmVjYXVzZQorCQkJICogd2UgYWx3YXlzIGZsdXNoIHRoZSBw cmVwYXJlIHJlY29yZC4gU2VlIGFwcGx5X2hhbmRsZV9wcmVwYXJlLgorCQkJICovCisJCQlNeVBh cmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJCXBh X2NvbW1pdF90cmFuc2FjdGlvbigpOworCisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJh bGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3Vi dHJhbnMoKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBl Y3RlZCBhcHBseSBhY3Rpb246ICVkIiwgKGludCkgYXBwbHlfYWN0aW9uKTsKKwkJCWJyZWFrOwor CX0KKworCS8qIENhY2hlIHRoZSByZW1vdGVfeGlkICovCisJbGFzdF9yZW1vdGVfeGlkID0gcmVt b3RlX3hpZDsKKworCXJlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC0yMjcwLDYgKzI0MzgsOSBAQCBhcHBseV9o YW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAkvKiBUaGVyZSBpcyBubyB0cmFu c2FjdGlvbiB3aGVuIENPTU1JVCBQUkVQQVJFRCBpcyBjYWxsZWQgKi8KIAliZWdpbl9yZXBsaWNh dGlvbl9zdGVwKCk7CiAKKwlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9yZW1vdGVfeGlk KSkKKwkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24obGFzdF9yZW1vdGVfeGlkKTsK KwogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1p bmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCiAJICogaW4gY2FzZSBvZiBjcmFzaC4KQEAgLTIyODIs NiArMjQ1MywxNCBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykK IAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2Up OwogCisJLyoKKwkgKiBObyBuZWVkIHRvIHVwZGF0ZSBsYXN0X3JlbW90ZV94aWQgYmVjYXVzZSBs ZWFkZXIgd29ya2VyIGFwcGxpZWQgdGhlCisJICogbWVzc2FnZSB0aHVzIHVwY29taW5nIHRyYW5z YWN0aW9uIHByZXNlcnZlcyB0aGUgb3JkZXIgYXV0b21hdGljYWxseS4KKwkgKiBMZXQncyBzZXQg dGhlIHhpZCB0byBhbiBpbnZhbGlkIHZhbHVlIHRvIHNraXAgc2VuZGluZyB0aGUKKwkgKiBJTlRF Uk5BTF9ERVBFTkRFTkNZIG1lc3NhZ2UuCisJICovCisJbGFzdF9yZW1vdGVfeGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQsCiAJCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwog CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtMjMzOCw2ICsyNTE3LDEwIEBAIGFw cGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIAkJLyogVGhlcmUg aXMgbm8gdHJhbnNhY3Rpb24gd2hlbiBBQk9SVC9ST0xMQkFDSyBQUkVQQVJFRCBpcyBjYWxsZWQg Ki8KIAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJCWlmIChUcmFuc2FjdGlvbklkSXNW YWxpZChsYXN0X3JlbW90ZV94aWQpKQorCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rp b24obGFzdF9yZW1vdGVfeGlkKTsKKwogCQlGaW5pc2hQcmVwYXJlZFRyYW5zYWN0aW9uKGdpZCwg ZmFsc2UpOwogCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxl bF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5w bAppbmRleCA2OWNmNDhjYjdhYy4uMTU5NzNmN2QwZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKQEAgLTE3LDYgKzE3LDggQEAgaWYgKCRFTlZ7 ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQogIyBJbml0aWFsaXplIHB1Ymxpc2hl ciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisgICAgIm1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMCIpOwogJG5vZGVfcHVi bGlzaGVyLT5zdGFydDsKIAogIyBJbnNlcnQgaW5pdGlhbCBkYXRhCkBAIC0zNSw2ICszNyw4IEBA ICRub2RlX3N1YnNjcmliZXItPmluaXQ7CiAkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKICRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAogCSJtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorICAgICJtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAi KTsKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCiAjIENoZWNrIGlmIHRoZSBleHRlbnNpb24g aW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQpAQCAtMTI3LDQgKzEz MSw2MCBAQCAkcmVzdWx0ID0KICAgICAiU0VMRUNUIGNvdW50KDEpIEZST00gcmVncmVzc190YWIg V0hFUkUgdmFsdWUgPSAndXBkYXRlZCciKTsKIGlzICgkcmVzdWx0LCA1LCAndXBkYXRlcyBhcmUg YWxzbyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXInKTsKIAorIyBFbnN1cmUgUFJFUEFSRWQgdHJh bnNhY3Rpb24gYWxzbyBhZmZlY3RzIHRoZSBwYXJhbGxlbCBhcHBseQorCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3Nfc3ViIERJU0FCTEU7Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdI RVJFIGJhY2tlbmRfdHlwZSA9ICdsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciciCisp OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICIKKyAgICBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc19zdWIgU0VUICh0d29fcGhhc2UgPSBvbik7CisgICAgQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc3ViIEVOQUJMRTsiKTsKKworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoMSkg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIGJhY2tlbmRfdHlwZSA9ICdsb2dpY2FsIHJlcGxp Y2F0aW9uIHBhcmFsbGVsIHdvcmtlciciKTsKK2lzKCRyZXN1bHQsICcwJywgIm5vIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMgZXhpc3QgYWZ0ZXIgcmVzdGFydCIpOworCisjIEF0dGFjaCBhbiBpbmpl Y3Rpb25fcG9pbnQuIFBhcmFsbGVsIHdvcmtlcnMgd291bGQgd2FpdCBiZWZvcmUgdGhlIHByZXBh cmUKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtcHJlcGFyZScsJ3dh aXQnKTsiCispOworCisjIFBSRVBBUkUgYSB0cmFuc2FjdGlvbiBvbiBwdWJsaXNoZXIuIEl0IHdv dWxkIGJlIGhhbmRsZWQgYnkgYSBwYXJhbGxlbCBhcHBseQorIyB3b3JrZXIuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVsKKyAgICBCRUdJTjsKKyAgICBJTlNFUlQg SU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg1MSwgNjApLCAncHJlcGFy ZScpOworICAgIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ3JlZ3Jlc3NfcHJlcGFyZSc7CitdKTsKKwor IyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9p bnQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCB3b3JrZXInLAorCSdwYXJhbGxlbC13b3JrZXItYmVmb3JlLXByZXBhcmUnKTsK KworJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMgSW5zZXJ0IHR1 cGxlcyBvbiBwdWJsaXNoZXIgYWdhaW4uIFRoaXMgdHJhbnNhY3Rpb24gd2FpdHMgZm9yIHRoZSBw cmVwYXJlZAorIyB0cmFuc2FjdGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJp ZXMoNjEsIDcwKSwgJ3Rlc3QnKTsiKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3 YWl0cyBmb3IgdGhlIHRyYW5zYWN0aW9uCiskc3RyID0gJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyL3dhaXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLywgJG9mZnNldCk7 CiskeGlkID0gJHN0ciA9fiAvd2FpdCBmb3IgZGVwZW5kZWQgeGlkIChbMS05XVswLTldKykvOwor CisjIFdha2V1cCB0aGUgcGFyYWxsZWwgd29ya2VyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdw YXJhbGxlbC13b3JrZXItYmVmb3JlLXByZXBhcmUnKTsKKyAgICBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c193YWtldXAoJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtcHJlcGFyZScpOworXSk7CisKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9maW5pc2ggd2FpdGluZyBmb3IgZGVwZW5k ZWQgeGlkICR4aWQvLCAkb2Zmc2V0KTsKKworIyBDT01NSVQgdGhlIHByZXBhcmVkIHRyYW5zYWN0 aW9uLiBJdCBpcyBhbHdheXMgaGFuZGxlZCBieSB0aGUgbGVhZGVyCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdyZWdyZXNzX3ByZXBhcmUn OyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX3N1YicpOwor CiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcuMwoK --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0006-Track-dependencies-for-streamed-transactions.patch" Content-Description: v8-0006-Track-dependencies-for-streamed-transactions.patch Content-Disposition: attachment; filename="v8-0006-Track-dependencies-for-streamed-transactions.patch"; size=10929; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSAwOWQyMWRkNmI2OWMyZTA3ZTU4NDIyNzU0NzcxM2E2OWViZDVkMzM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMjA6NTU6MjYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY4IDYvOV0gVHJhY2sgZGVwZW5kZW5jaWVzIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMKClRo aXMgY29tbWl0IGFsbG93cyB0cmFja2luZyBkZXBlbmRlbmNpZXMgb2Ygc3RyZWFtZWQgdHJhbnNh Y3Rpb25zLgoKUmVnYXJkaW5nIHRoZSBzdHJlYW1pbmc9b24gY2FzZSwgZGVwZW5kZW5jeSB0cmFj a2luZyBpcyBlbmFibGVkIHdoaWxlIGFwcGx5aW5nCnNwb29sZWQgY2hhbmdlcyBmcm9tIGZpbGVz LgoKSW4gdGhlIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlLCBkZXBlbmRlbmN5IHRyYWNraW5nIGlz IHBlcmZvcm1lZCB3aGVuIHRoZSBsZWFkZXIKc2VuZHMgY2hhbmdlcyB0byBwYXJhbGxlbCB3b3Jr ZXJzLiBBcGFydCBmcm9tIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHRoZQpsZWFkZXIgd2Fp dHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgdGlsbCB0aGUgYXNzaWduZWQgdHJhbnNhY3Rpb25zIGFy ZSBmaW5pc2hlZCBhdApDT01NSVQvUFJFUEFSRS9BQk9SVDsgdGh1cywgdGhlIFhJRCBvZiBzdHJl YW1lZCB0cmFuc2FjdGlvbnMgaXMgbm90IGNhY2hlZCBhcwp0aGUgbGFzdGx5IGhhbmRsZWQgb25l LiBBbHNvLCBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgYXJlIG5vdCByZWNvcmRlZCBhcwpwYXJhbGxl bGl6ZWQgdHJhbnNhY3Rpb25zIGJlY2F1c2UgdXBjb21pbmcgd29ya2VycyBkbyBub3QgaGF2ZSB0 byB3YWl0IGZvciB0aGVtLgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYyB8IDE5ICsrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgNjYgKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgIDIgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbCB8IDQ3ICsrKysrKysrKysrKysKIDQgZmlsZXMgY2hh bmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAz Mzk2ZWUxY2RmMS4uMTczYTgxZjRkOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNjgsNyArMTY4LDE0IEBA CiAgKiBrZXkpIGFzIGFub3RoZXIgb25nb2luZyB0cmFuc2FjdGlvbiAoc2VlIGhhbmRsZV9kZXBl bmRlbmN5X29uX2NoYW5nZSBmb3IKICAqIGRldGFpbHMpLiBJZiBzbywgdGhlIGxlYWRlciBzZW5k cyBhIGxpc3Qgb2YgZGVwZW5kZW50IHRyYW5zYWN0aW9uIElEcyB0byB0aGUKICAqIHBhcmFsbGVs IHdvcmtlciwgaW5kaWNhdGluZyB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVzdCB3 YWl0IGZvcgotICogdGhlc2UgdHJhbnNhY3Rpb25zIHRvIGNvbW1pdCBiZWZvcmUgcHJvY2VlZGlu Zy4KKyAqIHRoZXNlIHRyYW5zYWN0aW9ucyB0byBjb21taXQgYmVmb3JlIHByb2NlZWRpbmcuIElm IHRyYW5zYWN0aW9ucyBhcmUgc3RyZWFtZWQKKyAqIGJ1dCBsZWFkZXIgZGVjaWVkZXMgbm8gdG8g YXNzaWduIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGRlcGVuZGVuY2llcyBhcmUKKyAqIHZlcmlm aWVkIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKyAqCisgKiBOb24tc3RyZWFt aW5nIHRyYW5zYWN0aW9ucworICogPT09PT09PT09PT09PT09PT09PT09PQorICogVGhlIGhhbmRs aW5nIGlzIHNpbWlsYXIgdG8gc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgYnV0IGluY2x1ZGluZyBm ZXcKKyAqIGRpZmZlcmVuY2VzOgogICoKICAqIENvbW1pdCBvcmRlcgogICogLS0tLS0tLS0tLS0t CkBAIC0xNjM1LDYgKzE2NDIsMTIgQEAgcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCXN0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsK IH0KIAorYm9vbAorcGFfc3RyZWFtX2FwcGx5X3dvcmtlcl9pc19udWxsKHZvaWQpCit7CisJcmV0 dXJuIHN0cmVhbV9hcHBseV93b3JrZXIgPT0gTlVMTDsKK30KKwogLyoKICAqIEZvcm0gYSB1bmlx dWUgc2F2ZXBvaW50IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCiAgKgpAQCAt MTcyMCw2ICsxNzMzLDEwIEBAIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhICphYm9ydF9kYXRhKQogCVRyYW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOwog CVRyYW5zYWN0aW9uSWQgc3VieGlkID0gYWJvcnRfZGF0YS0+c3VieGlkOwogCisJLyogU3RyZWFt ZWQgdHJhbnNhY3Rpb25zIHdvbid0IGJlIHJlZ2lzdGVyZWQgKi8KKwlBc3NlcnQoIWRzaGFzaF9m aW5kKHBhcmFsbGVsaXplZF90eG5zLCAmeGlkLCBmYWxzZSkgJiYKKwkJICAgIWRzaGFzaF9maW5k KHBhcmFsbGVsaXplZF90eG5zLCAmc3VieGlkLCBmYWxzZSkpOworCiAJLyoKIAkgKiBVcGRhdGUg b3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9z aXRpb24KIAkgKiBpbiBjYXNlIG9mIGNyYXNoLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKaW5kZXggNDFkYTgwMGIyZTQuLjdmOWQ5OTkwMWMwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTk2OSwxMyArOTY5LDI2IEBAIGNoZWNr X2RlcGVuZGVuY3lfb25fcmVwbGljYV9pZGVudGl0eShPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQkJ ICAgJnJpZW50cnktPnJlbW90ZV94aWQsCiAJCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hp ZCk7CiAKKwkvKgorCSAqIFJlbW92ZSB0aGUgZW50cnkgaWYgaXQgaXMgcmVnaXN0ZXJlZCBmb3Ig dGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4gV2UKKwkgKiBkbyBub3QgaGF2ZSB0byByZWdpc3Rl ciBhbiBlbnRyeSBmb3IgdGhlbTsgVGhlIGxlYWRlciB3b3JrZXIgYWx3YXlzCisJICogd2FpdHMg dW50aWwgdGhlIHBhcmFsbGVsIHdvcmtlciBmaW5pc2hlcyBoYW5kbGluZyBzdHJlYW1lZAorCSAq IHRyYW5zYWN0aW9ucywgdGh1cyBubyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBwb3NzaWJsaXR5IHRo YXQgdXBjb21pbmcKKwkgKiBwYXJhbGxlbCB3b3JrZXJzIHdvdWxkIGdvIGFoZWFkLgorCSAqLwor CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSAmJiAhZm91bmQpCisJeworCQlm cmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJpZW50cnktPmtleWRhdGEpOworCQlyZXBsaWNhX2lk ZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIHJpZW50cnkpOworCX0K KwogCS8qCiAJICogVXBkYXRlIHRoZSBuZXcgZGVwZW5kZWQgeGlkIGludG8gdGhlIGVudHJ5IGlm IHZhbGlkLCB0aGUgbmV3IHhpZCBjb3VsZAogCSAqIGJlIGludmFsaWQgaWYgdGhlIHRyYW5zYWN0 aW9uIHdpbGwgYmUgYXBwbGllZCBieSB0aGUgbGVhZGVyIGl0c2VsZgogCSAqIHdoaWNoIG1lYW5z IGFsbCB0aGUgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCBiZWZvcmUgcHJvY2Vzc2luZyBuZXh0 CiAJICogdHJhbnNhY3Rpb24sIHNvIG5vIG5lZWQgdG8gYmUgZGVwZW5kZWQgb24uCiAJICovCi0J aWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQorCWVsc2UgaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQogCQlyaWVudHJ5LT5yZW1vdGVf eGlkID0gbmV3X2RlcGVuZGVkX3hpZDsKIAogCS8qCkBAIC0xMDg5LDggKzExMDIsMTEgQEAgaGFu ZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5n SW5mbyBzLAogCSAqLwogCVN0cmluZ0luZm9EYXRhIGNoYW5nZSA9ICpzOwogCi0JLyogQ29tcHV0 ZSBkZXBlbmRlbmN5IG9ubHkgZm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb24gKi8KLQlpZiAo aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gfHwgKHdpbmZvICYmIHdpbmZvLT5zdHJlYW1fdHhuKSkK KwkvKgorCSAqIFNraXAgaWYgd2UgYXJlIGhhbmRsaW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMg YnV0IGNoYW5nZXMgYXJlIG5vdAorCSAqIGFwcGxpZWQgeWV0LgorCSAqLworCWlmIChwYV9zdHJl YW1fYXBwbHlfd29ya2VyX2lzX251bGwoKSAmJiBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJ cmV0dXJuOwogCiAJLyogT25seSB0aGUgbGVhZGVyIGNoZWNrcyBkZXBlbmRlbmNpZXMgYW5kIHNj aGVkdWxlcyB0aGUgcGFyYWxsZWwgYXBwbHkgKi8KQEAgLTE0NTAsNyArMTQ2NiwxOCBAQCBoYW5k bGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJ bmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBl cnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGlj YXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0JaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKGFj dGlvbiwgcywgY3VycmVudF94aWQsIHdpbmZvKTsKKwkvKgorCSAqIENoZWNrIGRlcGVuZGVuY2ll cyByZWxhdGVkIHRvIHRoZSByZWNlaXZlZCBjaGFuZ2UuIFRoZSBYSUQgb2YgdGhlIHRvcAorCSAq IHRyYW5zYWN0aW9uIGlzIGFsd2F5cyB1c2VkIHRvIGF2b2lkIGRldGVjdGluZyBmYWxzZS1wb3Np dGl2ZQorCSAqIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRvcCBhbmQgc3ViIHRyYW5zYWN0aW9ucy4g U3ViLXRyYW5zYWN0aW9ucyBjYW4gYmUKKwkgKiByZXBsaWNhdGVkIGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbnMsIGFuZCB0aGV5IHdvbid0IGJlIG1hcmtlZCBhcworCSAqIHBhcmFsbGVsaXplZCBz byB0aGF0IHBhcmFsbGVsIHdvcmtlcnMgd29uJ3Qgd2FpdCBmb3Igcm9sbGVkLWJhY2sKKwkgKiBz dWItdHJhbnNhY3Rpb25zLgorCSAqLworCWhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShhY3Rp b24sIHMsCisJCQkJCQkJCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uCisJCQkJCQkJCT8gc3RyZWFt X3hpZCA6IHJlbW90ZV94aWQsCisJCQkJCQkJCXdpbmZvKTsKIAogCS8qCiAJICogUmUtZmV0Y2gg dGhlIGxhdGVzdCBhcHBseSBhY3Rpb24gYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQgZHVy aW5nCkBAIC0yNTg5LDYgKzI2MTYsMTAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0 cmluZ0luZm8gcykKIAkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCwKIAkJCQkJCQkJICAgcHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9k YXRhLnByZXBhcmVfbHNuKTsKIAorCQkJLyogV2FpdCB1bnRpbCB0aGUgbGFzdCB0cmFuc2FjdGlv biBmaW5pc2hlcyAqLworCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhc3RfcmVtb3RlX3hp ZCkpCisJCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24obGFzdF9yZW1vdGVfeGlk KTsKKwogCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCiAJCQlhcHBs eV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIApAQCAtMjYxMiw3ICsy NjQzLDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJY2Fz ZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKLQkJ CWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQlpZiAoYnVpbGRf ZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbykgJiYKKwkJCQlwYV9zZW5k X2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCiAJCQl7CiAJCQkJLyogRmluaXNoIHByb2Nl c3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KIAkJCQlwYV94YWN0X2ZpbmlzaCh3 aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMjY3OCw2ICsyNzEwLDExIEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlwZ3N0YXRfcmVwb3J0X3N0 YXQoZmFsc2UpOwogCisJLyoKKwkgKiBObyBuZWVkIHRvIHVwZGF0ZSB0aGUgbGFzdF9yZW1vdGVf eGlkIGhlcmUgYmVjYXVzZSBsZWFkZXIgd29ya2VyIGFsd2F5cworCSAqIHdhaXQgdW50aWwgc3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIGZpbmlzaC4KKwkgKi8KKwogCS8qCiAJICogUHJvY2VzcyBhbnkg dGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbCwgYXMgd2VsbCBh cwogCSAqIGFueSBuZXdseSBhZGRlZCB0YWJsZXMgb3Igc2VxdWVuY2VzLgpAQCAtMzQ2Miw2ICsz NDk5LDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJCWFw cGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwg eGlkLAogCQkJCQkJCQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAorCQkJLyogV2FpdCB1 bnRpbCB0aGUgbGFzdCB0cmFuc2FjdGlvbiBmaW5pc2hlcyAqLworCQkJaWYgKFRyYW5zYWN0aW9u SWRJc1ZhbGlkKGxhc3RfcmVtb3RlX3hpZCkpCisJCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJh bnNhY3Rpb24obGFzdF9yZW1vdGVfeGlkKTsKKwogCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbCgmY29tbWl0X2RhdGEpOwogCiAJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCkBAIC0zNDczLDcgKzM1MTQsMjAgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5TX0xF QURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAotCQkJaWYgKHBhX3Nl bmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCS8qCisJCQkgKiBBcGFydCBmcm9t IG5vbi1zdHJlYW1pbmcgY2FzZSwgbm8gbmVlZCB0byBtYXJrIHRoaXMgdHJhbnNhY3Rpb24KKwkJ CSAqIGFzIHBhcmFsbGVsaXplZC4gQmVjYXVzZSB0aGUgbGVhZGVyIHdhaXRzIHVudGlsIHRoZSBz dHJlYW1lZAorCQkJICogdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIHRodXMgY29tbWl0IG9yZGVy aW5nIGlzIGFsd2F5cworCQkJICogcHJlc2VydmVkLgorCQkJICovCisKKwkJCS8qCisJCQkgKiBC dWlsZCBhIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGlzIHRyYW5zYWN0aW9uIGFuZCB0aGUgbGFzdGx5 CisJCQkgKiBjb21taXR0ZWQgdHJhbnNhY3Rpb24gdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRl ci4gVGhlbiB0cnkgdG8KKwkJCSAqIHNlbmQgYSBDT01NSVQgbWVzc2FnZSBpZiBzdWNjZWVkZWQu CisJCQkgKi8KKwkJCWlmIChidWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhu KHdpbmZvKSAmJgorCQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKIAkJ CXsKIAkJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAq LwogCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBjb21taXRfZGF0YS5lbmRfbHNuKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggZDViZjQ1OTg5ODAuLjVk NzE0M2I3OWIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApA QCAtMzU0LDcgKzM1NCw3IEBAIGV4dGVybiB2b2lkIHBhX3N3aXRjaF90b19wYXJ0aWFsX3Nlcmlh bGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiBleHRlcm4gdm9pZCBwYV9zZXRf eGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAogCQkJCQkJCSAg UGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGUpOwogZXh0ZXJuIHZvaWQgcGFfc2V0X3N0cmVh bV9hcHBseV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKLQorZXh0ZXJu IGJvb2wgcGFfc3RyZWFtX2FwcGx5X3dvcmtlcl9pc19udWxsKHZvaWQpOwogZXh0ZXJuIHZvaWQg cGFfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwKIAkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgdG9wX3hpZCk7CiBleHRlcm4gdm9pZCBwYV9yZXNldF9zdWJ0cmFucyh2b2lk KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBs eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAppbmRl eCAxNTk3M2Y3ZDBlMC4uOTI1NGI4NWQzNTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKQEAgLTE4Nyw0ICsxODcsNTEgQEAgJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL2ZpbmlzaCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhp ZC8sICRvZmZzZXQKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01N SVQgUFJFUEFSRUQgJ3JlZ3Jlc3NfcHJlcGFyZSc7Iik7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ3JlZ3Jlc3Nfc3ViJyk7CiAKKyMgRW5zdXJlIHN0cmVhbWVkIHRyYW5zYWN0 aW9ucyB3YWl0cyB0aGUgcHJldmlvdXMgdHJhbnNhY3Rpb24KKworJG5vZGVfcHVibGlzaGVyLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKyAgICJsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtID0gNjRrQiIpOworJG5vZGVfcHVibGlzaGVyLT5yZWxvYWQ7CisjIFJ1biBhIHF1ZXJ5IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgMSIpOworCisjIEF0dGFjaCB0aGUg aW5qZWN0aW9uX3BvaW50IGFnYWluCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdwYXJhbGxlbC13b3JrZXIt YmVmb3JlLWNvbW1pdCcsJ3dhaXQnKTsiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKGdlbmVy YXRlX3Nlcmllcyg3MSwgODApLCAndGVzdCcpOyIpOworCisjIFdhaXQgdW50aWwgdGhlIHBhcmFs bGVsIHdvcmtlciBlbnRlcnMgdGhlIGluamVjdGlvbiBwb2ludC4KKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtlcicsCisJ J3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisKKyMgUnVuIGEgdHJhbnNhY3Rpb24g d2hpY2ggd291bGQgYmUgc3RyZWFtZWQKK215ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRoLT5xdWVyeV9zYWZlKAorCXF7CitCRUdJ TjsKK1VQREFURSByZWdyZXNzX3RhYiBTRVQgdmFsdWUgPSAnc3RyZWFtZWQtdXBkYXRlZCcgV0hF UkUgaWQgQkVUV0VFTiA3MSBBTkQgODA7CitJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygxMDAsIDUxMDApLCAnc3RyZWFtZWQnKTsKK30pOworCisjIFZlcmlm eSB0aGUgcGFyYWxsZWwgd29ya2VyIHdhaXRzIGZvciB0aGUgdHJhbnNhY3Rpb24KKyRzdHIgPSAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvd2FpdCBmb3IgZGVwZW5kZWQgeGlkIChb MS05XVswLTldKykvLCAkb2Zmc2V0KTsKKyR4aWQgPSAkc3RyID1+IC93YWl0IGZvciBkZXBlbmRl ZCB4aWQgKFsxLTldWzAtOV0rKS87CisKKyMgV2FrZXVwIHRoZSBwYXJhbGxlbCB3b3JrZXIKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7Cisg ICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdwYXJhbGxlbC13b3JrZXItYmVmb3Jl LWNvbW1pdCcpOworXSk7CisKKyMgVmVyaWZ5IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiBjYW4g YmUgYXBwbGllZAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL2ZpbmlzaCB3YWl0 aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCiskaC0+cXVlcnlfc2FmZSgi Q09NTUlUOyIpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcuMwoK --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0007-Wait-applying-transaction-if-one-of-user-defined-.patch" Content-Description: v8-0007-Wait-applying-transaction-if-one-of-user-defined-.patch Content-Disposition: attachment; filename="v8-0007-Wait-applying-transaction-if-one-of-user-defined-.patch"; size=12074; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ODk3MGFiZTQwYjc4MzI3ZjIyODAwODkwNzFmMmM5YzFjNzFkMGUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUdWUsIDIzIERlYyAyMDI1IDE3OjU4OjE1ICswOTAwClN1YmplY3Q6IFtQQVRD SCB2OCA3LzldIFdhaXQgYXBwbHlpbmcgdHJhbnNhY3Rpb24gaWYgb25lIG9mIHVzZXItZGVmaW5l ZAogdHJpZ2dlcnMgaXMgaW1tdXRhYmxlCgpTaW5jZSBtYW55IHBhcmFsbGVsIHdvcmtlcnMgYXBw bHkgdHJhbnNhY3Rpb25zLCB0cmlnZ2VycyBmb3IgcmVsYXRpb25zIGNhbiBhbHNvCmJlIGZpcmVk IGluIHBhcmFsbGVsLCB3aGljaCBtYXkgb2J0YWluIHVuZXhwZWN0ZWQgcmVzdWx0cy4gVG8gbWFr ZSBpdCBzYWZlLApwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHdhaXQgZm9yIHRoZSBwcmV2aW91c2x5 IGRpc3BhdGNoZWQgdHJhbnNhY3Rpb24gYmVmb3JlCmFwcGx5aW5nIGNoYW5nZXMgdG8gdGhlIHJl bGF0aW9uIHRoYXQgaGFzIG11dGFibGUgdHJpZ2dlcnMuCi0tLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIHwgMTIzICsrKysrKysrKysrKysrKysrKy0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgIHwgIDY4ICsrKysrKysrKysr Kwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggIHwgIDIwICsrKysK IDMgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBlMWNlMTgzZGZk My4uZWViODVmOGNjNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMKQEAgLTIxLDcgKzIxLDkgQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNs dWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uX3JlbC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgpAQCAtMTYwLDYgKzE2MiwxMCBAQCBsb2dp Y2FscmVwX3JlbG1hcF9mcmVlX2VudHJ5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAg KgogICogQ2FsbGVkIHdoZW4gbmV3IHJlbGF0aW9uIG1hcHBpbmcgaXMgc2VudCBieSB0aGUgcHVi bGlzaGVyIHRvIHVwZGF0ZQogICogb3VyIGV4cGVjdGVkIHZpZXcgb2YgaW5jb21pbmcgZGF0YSBm cm9tIHNhaWQgcHVibGlzaGVyLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkbyBub3QgY2hlY2sgdGhl IHVzZXItZGVmaW5lZCBjb25zdHJhaW50cyBoZXJlLiBQb3N0Z3JlU1FMIGhhcworICogYWxyZWFk eSBhc3N1bWVkIHRoYXQgQ0hFQ0sgY29uc3RyYWludHMnIGNvbmRpdGlvbnMgYXJlIGltbXV0YWJs ZSBhbmQgaGVyZQorICogZm9sbG93cyB0aGUgcnVsZS4KICAqLwogdm9pZAogbG9naWNhbHJlcF9y ZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQpAQCAtMjA5LDYgKzIx NSw4IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90 ZXJlbCkKIAkJKHJlbW90ZXJlbC0+cmVsa2luZCA9PSAwKSA/IFJFTEtJTkRfUkVMQVRJT04gOiBy ZW1vdGVyZWwtPnJlbGtpbmQ7CiAKIAllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29w eShyZW1vdGVyZWwtPmF0dGtleXMpOworCisJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBMT0dJQ0FM UkVQX1BBUkFMTEVMX1VOS05PV047CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9 CiAKQEAgLTM1NCwyNyArMzYyLDc5IEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiB9CiAKIC8qCi0gKiBPcGVuIHRoZSBsb2NhbCBy ZWxhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCisgKiBDaGVjayBhbGwgbG9j YWwgdHJpZ2dlcnMgZm9yIHRoZSByZWxhdGlvbiB0byBzZWUgdGhlIHBhcmFsbGVsaXphYmlsaXR5 LgogICoKLSAqIFJlYnVpbGRzIHRoZSBSZWxjYWNoZSBtYXBwaW5nIGlmIGl0IHdhcyBpbnZhbGlk YXRlZCBieSBsb2NhbCBEREwuCisgKiBXZSByZWdhcmQgcmVsYXRpb25zIGFzIGFwcGxpY2FibGUg aW4gcGFyYWxsZWwgaWYgYWxsIHRyaWdnZXJzIGFyZSBpbW11dGFibGUuCisgKiBSZXN1bHQgaXMg ZGlyZWN0bHkgc2V0IHRvIExvZ2ljYWxSZXBSZWxNYXBFbnRyeTo6cGFyYWxsZWxfc2FmZS4KICAq LwotTG9naWNhbFJlcFJlbE1hcEVudHJ5ICoKLWxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJl cFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3N0YXRpYyB2b2lkCitjaGVja19k ZWZpbmVkX3RyaWdnZXJzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7CisJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYzsKKworCS8qIFF1aWNr IGV4aXQgaWYgdHJpZmZlciBpcyBub3QgZGVmaW5lZCAqLworCWlmICh0cmlnZGVzYyA9PSBOVUxM KQorCXsKKwkJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1NBRkU7 CisJCXJldHVybjsKKwl9CisKKwkvKiBTZWVrIHRyaWdnZXJzIG9uZSBieSBvbmUgdG8gc2VlIHRo ZSB2b2xhdGlsaXR5ICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dl cnM7IGkrKykKKwl7CisJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJz W2ldOworCisJCUFzc2VydChPaWRJc1ZhbGlkKHRyaWdnZXItPnRnZm9pZCkpOworCisJCS8qIFNr aXAgaWYgdGhlIHRyaWdnZXIgaXMgbm90IGVuYWJsZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24g Ki8KKwkJaWYgKHRyaWdnZXItPnRnZW5hYmxlZCA9PSBUUklHR0VSX0RJU0FCTEVEIHx8CisJCQl0 cmlnZ2VyLT50Z2VuYWJsZWQgPT0gVFJJR0dFUl9GSVJFU19PTl9PUklHSU4pCisJCQljb250aW51 ZTsKKworCQkvKiBDaGVjayB0aGUgdm9sYXRpbGl0eSBvZiB0aGUgdHJpZ2dlci4gRXhpdCBpZiBp dCBpcyBub3QgaW1tdXRhYmxlICovCisJCWlmIChmdW5jX3ZvbGF0aWxlKHRyaWdnZXItPnRnZm9p ZCkgIT0gUFJPVk9MQVRJTEVfSU1NVVRBQkxFKQorCQl7CisJCQllbnRyeS0+cGFyYWxsZWxfc2Fm ZSA9IExPR0lDQUxSRVBfUEFSQUxMRUxfUkVTVFJJQ1RFRDsKKwkJCXJldHVybjsKKwkJfQorCX0K KworCS8qIEFsbCB0cmlnZ2VycyBhcmUgaW1tdXRhYmxlLCBzZXQgYXMgcGFyYWxsZWwgc2FmZSAq LworCWVudHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9QQVJBTExFTF9TQUZFOworfQor CisvKgorICogQWN0dWFsIHdvcmtob3JzZSBmb3IgbG9naWNhbHJlcF9yZWxfb3BlbigpLgorICoK KyAqIENhbGxlciBtdXN0IHNwZWNpZnkgKmVpdGhlciogZW50cnkgb3Iga2V5LiBJZiB0aGUgZW50 cnkgaXMgc3BlY2lmaWVkLCBpdHMKKyAqIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCBhbmQgcmV0dXJu ZWQuIFRoZSBsb2dpY2FsIHJlbGF0aW9uIGlzIGtlcHQgb3BlbmluZy4KKyAqIElmIHRoZSBrZXkg aXMgZ2l2ZW4sIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGlzIGZpcnN0IHNlYXJjaGVkIGluIHRo ZSBoYXNoCisgKiB0YWJsZSBhbmQgcHJvY2Vzc2VkIGFzIGluIHRoZSBhYm92ZSBjYXNlLiBBdCB0 aGUgZW5kLCBsb2dpY2FsIHJlcGxpY2F0aW9uIGlzCisgKiBjbG9zZWQuCisgICovCit2b2lkCits b2dpY2FscmVwX3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnksIExvZ2ljYWxS ZXBSZWxJZCByZW1vdGVpZCwKKwkJCQkJTE9DS01PREUgbG9ja21vZGUpCiB7Ci0JTG9naWNhbFJl cFJlbE1hcEVudHJ5ICplbnRyeTsKLQlib29sCQlmb3VuZDsKIAlMb2dpY2FsUmVwUmVsYXRpb24g KnJlbW90ZXJlbDsKIAotCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCi0JCWxvZ2ljYWxy ZXBfcmVsbWFwX2luaXQoKTsKKwlBc3NlcnQoKGVudHJ5ICYmICFyZW1vdGVpZCkgfHwgKCFlbnRy eSAmJiByZW1vdGVpZCkpOwogCi0JLyogU2VhcmNoIGZvciBleGlzdGluZyBlbnRyeS4gKi8KLQll bnRyeSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBSZWxNYXAsICZyZW1vdGVpZCwKLQkJCQkJCUhB U0hfRklORCwgJmZvdW5kKTsKKwlpZiAoIWVudHJ5KQorCXsKKwkJYm9vbAkJZm91bmQ7CiAKLQlp ZiAoIWZvdW5kKQotCQllbG9nKEVSUk9SLCAibm8gcmVsYXRpb24gbWFwIGVudHJ5IGZvciByZW1v dGUgcmVsYXRpb24gSUQgJXUiLAotCQkJIHJlbW90ZWlkKTsKKwkJaWYgKExvZ2ljYWxSZXBSZWxN YXAgPT0gTlVMTCkKKwkJCWxvZ2ljYWxyZXBfcmVsbWFwX2luaXQoKTsKKworCQkvKiBTZWFyY2gg Zm9yIGV4aXN0aW5nIGVudHJ5LiAqLworCQllbnRyeSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBS ZWxNYXAsICZyZW1vdGVpZCwKKwkJCQkJCQlIQVNIX0ZJTkQsICZmb3VuZCk7CisKKwkJaWYgKCFm b3VuZCkKKwkJCWVsb2coRVJST1IsICJubyByZWxhdGlvbiBtYXAgZW50cnkgZm9yIHJlbW90ZSBy ZWxhdGlvbiBJRCAldSIsCisJCQkJIHJlbW90ZWlkKTsKKwl9CiAKIAlyZW1vdGVyZWwgPSAmZW50 cnktPnJlbW90ZXJlbDsKIApAQCAtNTAwLDYgKzU2MCwxMyBAQCBsb2dpY2FscmVwX3JlbF9vcGVu KExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCWVudHJ5LT5s b2NhbGluZGV4b2lkID0gRmluZExvZ2ljYWxSZXBMb2NhbEluZGV4KGVudHJ5LT5sb2NhbHJlbCwg cmVtb3RlcmVsLAogCQkJCQkJCQkJCQkJCQllbnRyeS0+YXR0cm1hcCk7CiAKKwkJLyoKKwkJICog TGVhZGVyIG11c3QgYWxzbyBjb2xsZWN0IGFsbCBsb2NhbCB1bmlxdWUgaW5kZXhlcyBmb3IgZGVw ZW5kZW5jeQorCQkgKiB0cmFja2luZy4KKwkJICovCisJCWlmIChhbV9sZWFkZXJfYXBwbHlfd29y a2VyKCkpCisJCQljaGVja19kZWZpbmVkX3RyaWdnZXJzKGVudHJ5KTsKKwogCQllbnRyeS0+bG9j YWxyZWx2YWxpZCA9IHRydWU7CiAJfQogCkBAIC01MDgsNiArNTc1LDM0IEBAIGxvZ2ljYWxyZXBf cmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJ CQkJCQkJCQkJICAgZW50cnktPmxvY2FscmVsb2lkLAogCQkJCQkJCQkJCQkgICAmZW50cnktPnN0 YXRlbHNuKTsKIAorCWlmIChyZW1vdGVpZCkKKwkJbG9naWNhbHJlcF9yZWxfY2xvc2UoZW50cnks IGxvY2ttb2RlKTsKK30KKworLyoKKyAqIE9wZW4gdGhlIGxvY2FsIHJlbGF0aW9uIGFzc29jaWF0 ZWQgd2l0aCB0aGUgcmVtb3RlIG9uZS4KKyAqCisgKiBSZWJ1aWxkcyB0aGUgUmVsY2FjaGUgbWFw cGluZyBpZiBpdCB3YXMgaW52YWxpZGF0ZWQgYnkgbG9jYWwgRERMLgorICovCitMb2dpY2FsUmVw UmVsTWFwRW50cnkgKgorbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3Rl aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7 CisJYm9vbAkJZm91bmQ7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlsb2dp Y2FscmVwX3JlbG1hcF9pbml0KCk7CisKKwkvKiBTZWFyY2ggZm9yIGV4aXN0aW5nIGVudHJ5LiAq LworCWVudHJ5ID0gaGFzaF9zZWFyY2goTG9naWNhbFJlcFJlbE1hcCwgJnJlbW90ZWlkLAorCQkJ CQkJSEFTSF9GSU5ELCAmZm91bmQpOworCisJaWYgKCFmb3VuZCkKKwkJZWxvZyhFUlJPUiwgIm5v IHJlbGF0aW9uIG1hcCBlbnRyeSBmb3IgcmVtb3RlIHJlbGF0aW9uIElEICV1IiwKKwkJCSByZW1v dGVpZCk7CisKKwlsb2dpY2FscmVwX3JlbF9sb2FkKGVudHJ5LCAwLCBsb2NrbW9kZSk7CisKIAly ZXR1cm4gZW50cnk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CmluZGV4IDdmOWQ5OTkwMWMwLi5jMTJiODNhMDVkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xMDcwLDYgKzEwNzAsNTkgQEAgY2hlY2tfZGVwZW5kZW5j eV9vbl9yZWwoTG9naWNhbFJlcFJlbElkIHJlbGlkLCBUcmFuc2FjdGlvbklkIG5ld19kZXBlbmRl ZF94aWQsCiAJCXJlbGVudHJ5LT5sYXN0X2RlcGVuZGVkX3hpZCA9IG5ld19kZXBlbmRlZF94aWQ7 CiB9CiAKKy8qCisgKiBDaGVjayB0aGUgcGFyYWxsZWxpemFiaWxpdHkgb2YgYXBwbHlpbmcgY2hh bmdlcyBmb3IgdGhlIHJlbGF0aW9uLgorICogQXBwZW5kIHRoZSBsYXN0bHkgZGlzcGF0Y2hlZCB0 cmFuc2FjdGlvbiBpbiBpbiAnZGVwZW5kc19vbl94aWRzJyBpZiB0aGUKKyAqIHJlbGF0aW9uIGlz IHBhcmFsbGVsIHVuc2FmZS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2RlcGVuZGVuY3lfZm9y X3BhcmFsbGVsX3NhZmV0eShMb2dpY2FsUmVwUmVsSWQgcmVsaWQsCisJCQkJCQkJCQkgVHJhbnNh Y3Rpb25JZCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJIExpc3QgKipkZXBlbmRzX29uX3hp ZHMpCit7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKworCS8qIFF1aWNrIGV4 aXQgaWYgbm8gdHJhbnNhY3Rpb25zIGhhdmUgYmVlbiBkaXNwYXRjaGVkICovCisJaWYgKCFUcmFu c2FjdGlvbklkSXNWYWxpZChsYXN0X3JlbW90ZV94aWQpKQorCQlyZXR1cm47CisKKwlyZWxlbnRy eSA9IGxvZ2ljYWxyZXBfZ2V0X3JlbGVudHJ5KHJlbGlkKTsKKworCS8qCisJICogR2F0aGVyIGlu Zm9ybWF0aW9uIGZvciBsb2NhbCB0cmlnZ3JlcyBpZiBub3QgeWV0LiBXZSByZXF1aXJlIHRvIGJl IGluIGEKKwkgKiB0cmFuc2FjdGlvbiBzdGF0ZSBiZWNhdXNlIHN5c3RlbSBjYXRhbG9ncyBhcmUg cmVhZC4KKwkgKi8KKwlpZiAocmVsZW50cnktPnBhcmFsbGVsX3NhZmUgPT0gTE9HSUNBTFJFUF9Q QVJBTExFTF9VTktOT1dOKQorCXsKKwkJYm9vbAkJbmVlZHNfc3RhcnQgPSAhSXNUcmFuc2FjdGlv bk9yVHJhbnNhY3Rpb25CbG9jaygpOworCisJCWlmIChuZWVkc19zdGFydCkKKwkJCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkJbG9naWNhbHJlcF9yZWxfbG9hZChOVUxMLCByZWxpZCwg QWNjZXNzU2hhcmVMb2NrKTsKKworCQkvKgorCQkgKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24gaWYg d2Ugc3RhcnQgaGVyZS4gV2UgbXVzdCBub3QgYWJvcnQgYmVjYXVzZQorCQkgKiBpdCB3b3VsZCBy ZWxlYXNlIGFsbCBzZXNzaW9uLWxldmVsIGxvY2tzLCBzdWNoIGFzIHRoZSBzdHJlYW0gbG9jaywK KwkJICogYW5kIGJyZWFrIHRoZSBkZWFkbG9jayBkZXRlY3Rpb24gbWVjaGFuaXNtIGJldHdlZW4g TEEgYW5kIFBBLiBUaGUKKwkJICogb3V0Y29tZSBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIHRo ZSBlbmQgc3RhdHVzLCBzaW5jZSB0aGUKKwkJICogdHJhbnNhY3Rpb24gZGlkIG5vdCBtb2RpZnkg YW55IHR1cGxlcy4KKwkJICovCisJCWlmIChuZWVkc19zdGFydCkKKwkJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCisJCUFzc2VydChyZWxlbnRyeS0+cGFyYWxsZWxfc2FmZSAhPSBMT0dJ Q0FMUkVQX1BBUkFMTEVMX1VOS05PV04pOworCX0KKworCS8qIERvIG5vdGhpbmcgZm9yIHBhcmFs bGVsIHNhZmUgcmVsYXRpb25zICovCisJaWYgKHJlbGVudHJ5LT5wYXJhbGxlbF9zYWZlID09IExP R0lDQUxSRVBfUEFSQUxMRUxfU0FGRSkKKwkJcmV0dXJuOworCisJKmRlcGVuZHNfb25feGlkcyA9 IGNoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKKwkJCQkJ CQkJCQkJCQkgICAmbGFzdF9yZW1vdGVfeGlkLAorCQkJCQkJCQkJCQkJCSAgIG5ld19kZXBlbmRl ZF94aWQpOworfQorCiAvKgogICogQ2hlY2sgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIGN1 cnJlbnQgY2hhbmdlIGJ5IGRldGVybWluaW5nIGlmIHRoZQogICogbW9kaWZpY2F0aW9uIGltcGFj dHMgdGhlIHNhbWUgcm93IG9yIHRhYmxlIGFzIGFub3RoZXIgb25nb2luZyB0cmFuc2FjdGlvbi4g SWYKQEAgLTExMjgsNiArMTE4MSw4IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dp Y2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVuZGVuY3lf b25fcmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm5ld3R1cCwKIAkJCQkJCQkJCQkJCSBuZXdfZGVw ZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVw ZW5kZW5jeV9mb3JfcGFyYWxsZWxfc2FmZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJ CQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBMT0dJQ0FM X1JFUF9NU0dfVVBEQVRFOgpAQCAtMTEzNSwxMyArMTE5MCwxOSBAQCBoYW5kbGVfZGVwZW5kZW5j eV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMsCiAJCQkJ CQkJCQkJICAgJm5ld3R1cCk7CiAKIAkJCWlmIChoYXNfb2xkdHVwKQorCQkJewogCQkJCWNoZWNr X2RlcGVuZGVuY3lfb25fcmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm9sZHR1cCwKIAkJCQkJCQkJ CQkJCQkgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7 CisJCQkJY2hlY2tfZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxfc2FmZXR5KHJlbGlkLCBuZXdfZGVw ZW5kZWRfeGlkLAorCQkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKKwkJCX0KIAogCQkJ Y2hlY2tfZGVwZW5kZW5jeV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmbmV3dHVwLAogCQkJ CQkJCQkJCQkJIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlk cyk7CisJCQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsK IAogCQljYXNlIExPR0lDQUxfUkVQX01TR19ERUxFVEU6CkBAIC0xMTQ5LDYgKzEyMTAsOCBAQCBo YW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJp bmdJbmZvIHMsCiAJCQljaGVja19kZXBlbmRlbmN5X29uX3JlcGxpY2FfaWRlbnRpdHkocmVsaWQs ICZvbGR0dXAsCiAJCQkJCQkJCQkJCQkgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCSAm ZGVwZW5kc19vbl94aWRzKTsKKwkJCWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0 eShyZWxpZCwgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRz KTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1RSVU5DQVRFOgpAQCAtMTE2 MSw4ICsxMjI0LDEzIEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNn VHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCSAqIG1vZGlmaWVkIHRoZSBzYW1lIHRhYmxl LgogCQkJICovCiAJCQlmb3JlYWNoX2ludCh0cnVuY2F0ZWRfcmVsaWQsIHJlbW90ZV9yZWxpZHMp CisJCQl7CiAJCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9yZWwodHJ1bmNhdGVkX3JlbGlkLCBuZXdf ZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCSZkZXBlbmRzX29uX3hpZHMpOworCQkJCWNoZWNrX2Rl cGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eSh0cnVuY2F0ZWRfcmVsaWQsCisJCQkJCQkJCQkJ CQkJIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOwor CQkJfQogCiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRp b24uaAppbmRleCAyN2UzNjVmODRjMi4uOTE2ZDIxYzJkYmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0zOSw2ICszOSwyMCBAQCB0eXBlZGVmIHN0cnVj dCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAlYTG9nUmVjUHRyCXN0YXRlbHNuOwogCiAJVHJhbnNh Y3Rpb25JZCBsYXN0X2RlcGVuZGVkX3hpZDsKKworCS8qCisJICogV2hldGhlciB0aGUgcmVsYXRp b24gY2FuIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwgb3Igbm90LiBJdCBpcworCSAqIGRpc3Rpbmds aXNoIHdoZXRoZXIgZGVmaW5lZCB0cmlnZ2VycyBhcmUgdGhlIGltbXV0YWJsZSBvciBub3QuCisJ ICoKKwkgKiBUaGVvcmV0aWNhbGx5LCB3ZSBjYW4gZGV0ZXJtaW5lIHRoZSBwYXJhbGxlbGl6YWJp bGl0eSBmb3IgZWFjaCB0eXBlIG9mCisJICogcmVwbGljYXRpb24gbWVzc2FnZXMsIElOU0VSVC9V UERBVEUvREVMRVRFL1RSVU5DQVRFLiBCdXQgaXQgaXMgbm90IGRvbmUKKwkgKiB5ZXQgdG8gcmVk dWNlIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KKwkgKgorCSAqIE5vdGUgdGhhdCB3ZSBkbyBu b3QgY2hlY2sgdGhlIHVzZXItZGVmaW5lZCBjb25zdHJhaW50cyBoZXJlLiBQb3N0Z3JlU1FMCisJ ICogaGFzIGFscmVhZHkgYXNzdW1lZCB0aGF0IENIRUNLIGNvbnN0cmFpbnRzJyBjb25kaXRpb25z IGFyZSBpbW11dGFibGUgYW5kCisJICogaGVyZSBmb2xsb3dzIHRoZSBydWxlLgorCSAqLworCWNo YXIJCXBhcmFsbGVsX3NhZmU7CiB9IExvZ2ljYWxSZXBSZWxNYXBFbnRyeTsKIAogZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVs KTsKQEAgLTQ2LDYgKzYwLDggQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0 X3JlbG1hcChMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCk7CiAKIGV4dGVybiBMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKmxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90 ZWlkLAogCQkJCQkJCQkJCQkJICBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnksCisJCQkJCQkJCUxv Z2ljYWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJvb3QsCiAJCQkJCQkJCQkJCQkJCVJlbGF0aW9uIHBhcnRyZWwsIEF0dHJNYXAg Km1hcCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbCwKQEAgLTU2LDQgKzcyLDggQEAgZXh0ZXJuIGludAlsb2dpY2FscmVwX2dldF9u dW1fcmVscyh2b2lkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYWxsX3JlbHMoU3Ry aW5nSW5mbyBvdXQpOwogZXh0ZXJuIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqbG9naWNhbHJlcF9n ZXRfcmVsZW50cnkoTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkKTsKIAorI2RlZmluZSBMT0dJQ0FM UkVQX1BBUkFMTEVMX1NBRkUJCSdzJworI2RlZmluZSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1JFU1RS SUNURUQJJ3InCisjZGVmaW5lIExPR0lDQUxSRVBfUEFSQUxMRUxfVU5LTk9XTgkJJ3UnCisKICNl bmRpZgkJCQkJCQkvKiBMT0dJQ0FMUkVMQVRJT05fSCAqLwotLSAKMi40Ny4zCgo= --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0008-Support-dependency-tracking-via-local-unique-inde.patch" Content-Description: v8-0008-Support-dependency-tracking-via-local-unique-inde.patch Content-Disposition: attachment; filename="v8-0008-Support-dependency-tracking-via-local-unique-inde.patch"; size=24419; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA5MDYxYTVmZTZkNzllZjcyOTY5ODQ4NWM4MjI0NWVlMmU3ZjVhZTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxoYXlhdG9AZXhhbXBsZS5jb20+CkRh dGU6IFRodSwgMTEgRGVjIDIwMjUgMjI6MjE6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY4IDgv OV0gU3VwcG9ydCBkZXBlbmRlbmN5IHRyYWNraW5nIHZpYSBsb2NhbCB1bmlxdWUgaW5kZXhlcwoK Q3VycmVudGx5LCBsb2dpY2FsIHJlcGxpY2F0aW9uJ3MgcGFyYWxsZWwgYXBwbHkgbWVjaGFuaXNt IHRyYWNrcyBkZXBlbmRlbmNpZXMKcHJpbWFyaWx5IGJhc2VkIG9uIHRoZSBSRVBMSUNBIElERU5U SVRZIGRlZmluZWQgb24gdGhlIHB1Ymxpc2hlciB0YWJsZS4KSG93ZXZlciwgbG9jYWwgc3Vic2Ny aWJlciB0YWJsZXMgbWlnaHQgaGF2ZSBhZGRpdGlvbmFsIHVuaXF1ZSBpbmRleGVzIHRoYXQKY291 bGQgZWZmZWN0aXZlbHkgc2VydmUgYXMgZGVwZW5kZW5jeSBrZXlzLCBldmVuIGlmIHRoZXkgZG9u J3QgY29ycmVzcG9uZCB0bwp0aGUgcHVibGlzaGVyJ3MgUkVQTElDQSBJREVOVElUWS4gRmFpbGlu ZyB0byB0cmFjayB0aGVzZSBhZGRpdGlvbmFsIHVuaXF1ZQprZXlzIGNhbiBsZWFkIHRvIGluY29y cmVjdCBkYXRhIGFuZC9vciBkZWFkbG9ja3MgZHVyaW5nIHBhcmFsbGVsIGFwcGxpY2F0aW9uLgoK VGhpcyBwYXRjaCBleHRlbmRzIHRoZSBwYXJhbGxlbCBhcHBseSdzIGRlcGVuZGVuY3kgdHJhY2tp bmcgdG8gY29uc2lkZXIKbG9jYWwgdW5pcXVlIGluZGV4ZXMgb24gdGhlIHN1YnNjcmliZXIgdGFi bGUuIFRoaXMgaXMgYWNoaWV2ZWQgYnkgZXh0ZW5kaW5nCnRoZSBleGlzdGluZyBSZXBsaWNhIElk ZW50aXR5IGhhc2ggdGFibGUgdG8gYWxzbyBzdG9yZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uCmJh c2VkIG9uIHRoZXNlIGxvY2FsIHVuaXF1ZSBpbmRleGVzLgoKVGhlIExvZ2ljYWxSZXBSZWxNYXBF bnRyeSBzdHJ1Y3R1cmUgaXMgZXh0ZW5kZWQgdG8gc3RvcmUgZGV0YWlscyBhYm91dCB0aGVzZQps b2NhbCB1bmlxdWUgaW5kZXhlcy4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjb2xsZWN0ZWQgYW5kIGNh Y2hlZCB3aGVuCmRlcGVuZGVuY3kgY2hlY2tpbmcgaXMgZmlyc3QgcGVyZm9ybWVkIGZvciBhIHJl bW90ZSB0cmFuc2FjdGlvbiBvbiBhIGdpdmVuCnJlbGF0aW9uLiBUaGlzIGNvbGxlY3Rpb24gcHJv Y2VzcyByZXF1aXJlcyB0byBiZSBpbiBhIHRyYW5zYWN0aW9uIHRvIGFjY2VzcwpzeXN0ZW0gY2F0 YWxvZyBpbmZvcm1hdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl bGF0aW9uLmMgICAgfCAxNjEgKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8IDI3MCArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9kZWFkbG9jay5jICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCAgICAgfCAgMTQgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsIHwgIDU3ICsrKysKIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMiArCiA2IGZpbGVzIGNoYW5nZWQs IDQ0NiBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggZWViODVmOGNjNWQuLjY2NjVmNWMwY2M5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC0xMjgsNiAr MTI4LDIxIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIAkJCQkJCQkJICAoRGF0dW0p IDApOwogfQogCisvKgorICogUmVsZWFzZSBsb2NhbCBpbmRleCBsaXN0CisgKi8KK3N0YXRpYyB2 b2lkCitmcmVlX2xvY2FsX3VuaXF1ZV9pbmRleGVzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50 cnkpCit7CisJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisKKwlmb3JlYWNoX3B0 cihMb2dpY2FsUmVwU3Vic2NyaWJlcklkeCwgaWR4aW5mbywgZW50cnktPmxvY2FsX3VuaXF1ZV9p bmRleGVzKQorCQlibXNfZnJlZShpZHhpbmZvLT5pbmRleGtleXMpOworCisJbGlzdF9mcmVlX2Rl ZXAoZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVzKTsKKwllbnRyeS0+bG9jYWxfdW5pcXVlX2lu ZGV4ZXMgPSBOSUw7Cit9CisKIC8qCiAgKiBGcmVlIHRoZSBlbnRyeSBvZiBhIHJlbGF0aW9uIG1h cCBjYWNoZS4KICAqLwpAQCAtMTU1LDYgKzE3MCw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ZyZWVf ZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAogCWlmIChlbnRyeS0+YXR0cm1h cCkKIAkJZnJlZV9hdHRybWFwKGVudHJ5LT5hdHRybWFwKTsKKworCWlmIChlbnRyeS0+bG9jYWxf dW5pcXVlX2luZGV4ZXMgIT0gTklMKQorCQlmcmVlX2xvY2FsX3VuaXF1ZV9pbmRleGVzKGVudHJ5 KTsKIH0KIAogLyoKQEAgLTM2MSw2ICszNzksMTI2IEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBk YXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJfQogfQogCisvKgorICogQ29s bGVjdCBhbGwgbG9jYWwgdW5pcXVlIGluZGV4ZXMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVwZW5k ZW5jeSB0cmFja2luZy4KKyAqLworc3RhdGljIHZvaWQKK2NvbGxlY3RfbG9jYWxfaW5kZXhlcyhM b2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUxpc3QJICAgKmlkeGxpc3Q7CisKKwlp ZiAoZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVzICE9IE5JTCkKKwkJZnJlZV9sb2NhbF91bmlx dWVfaW5kZXhlcyhlbnRyeSk7CisKKwllbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXNfY29sbGVj dGVkID0gdHJ1ZTsKKworCWlkeGxpc3QgPSBSZWxhdGlvbkdldEluZGV4TGlzdChlbnRyeS0+bG9j YWxyZWwpOworCisJLyogUXVpY2sgZXhpdCBpZiB0aGVyZSBhcmUgbm8gaW5kZXhlcyAqLworCWlm IChpZHhsaXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyogSXRlcmF0ZSBpbmRleGVzIHRvIGxp c3QgYWxsIHVzYWJsZSBpbmRleGVzICovCisJZm9yZWFjaF9vaWQoaWR4b2lkLCBpZHhsaXN0KQor CXsKKwkJUmVsYXRpb24JaWR4cmVsOworCQlpbnQJCQlpbmRua2V5czsKKwkJQXR0ck1hcCAgICAq YXR0cm1hcDsKKwkJQml0bWFwc2V0ICAqaW5kZXhrZXlzID0gTlVMTDsKKwkJYm9vbAkJc3VpdGFi bGUgPSB0cnVlOworCisJCWlkeHJlbCA9IGluZGV4X29wZW4oaWR4b2lkLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJCS8qCisJCSAqIENoZWNrIHdoZXRoZXIgdGhlIGluZGV4IGNhbiBiZSB1c2VkIGZv ciB0aGUgZGVwZW5kZW5jeSB0cmFja2luZy4KKwkJICoKKwkJICogRm9yIHNpbXBsaWZpY2F0aW9u LCB0aGUgc2FtZSBjb25kaXRpb24gYXMgUkVQTElDQSBJREVOVElUWSBGVUxMLAorCQkgKiBwbHVz IGl0IG11c3QgYmUgYSB1bmlxdWUgaW5kZXguCisJCSAqLworCQlpZiAoIShpZHhyZWwtPnJkX2lu ZGV4LT5pbmRpc3VuaXF1ZSAmJgorCQkJICBJc0luZGV4VXNhYmxlRm9yUmVwbGljYUlkZW50aXR5 RnVsbChpZHhyZWwsIGVudHJ5LT5hdHRybWFwKSkpCisJCXsKKwkJCWluZGV4X2Nsb3NlKGlkeHJl bCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaW5kbmtleXMgPSBp ZHhyZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0czsKKwkJYXR0cm1hcCA9IGVudHJ5LT5hdHRybWFw OworCisJCUFzc2VydChpbmRua2V5cyk7CisKKwkJLyogU2VlayBlYWNoIGF0dHJpYnV0ZXMgYW5k IGFkZCB0byBhIEJpdG1hcCAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IGluZG5rZXlzOyBpKysp CisJCXsKKwkJCUF0dHJOdW1iZXIJbG9jYWxjb2wgPSBpZHhyZWwtPnJkX2luZGV4LT5pbmRrZXku dmFsdWVzW2ldOworCQkJQXR0ck51bWJlcglyZW1vdGVjb2w7CisKKwkJCS8qCisJCQkgKiBYWFg6 IE1hcmsgYSByZWxhdGlvbiBhcyBwYXJhbGxlbC11bnNhZmUgaWYgaXQgaGFzIGV4cHJlc3Npb24K KwkJCSAqIGluZGV4ZXMgYmVjYXVzZSB3ZSBjYW5ub3QgY29tcHV0ZSB0aGUgaGFzaCB2YWx1ZSBm b3IgdGhlCisJCQkgKiBkZXBlbmRlbmN5IHRyYWNraW5nLiBGb3Igc2FmZXR5LCB0cmFuc2FjdGlv bnMgdGhhdCBtb2RpZnkgc3VjaAorCQkJICogdGFibGVzIGNhbiB3YWl0IGZvciBhcHBsaWNhdGlv bnMgdGlsbCB0aGUgbGFzdGx5IGRpc3BhdGNoZWQKKwkJCSAqIHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZC4KKwkJCSAqLworCQkJaWYgKCFBdHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKGxvY2FsY29sKSkK KwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfc2FmZSA9IExPR0lDQUxSRVBfUEFSQUxMRUxfUkVT VFJJQ1RFRDsKKwkJCQlzdWl0YWJsZSA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCisJCQly ZW1vdGVjb2wgPSBhdHRybWFwLT5hdHRudW1zW0F0dHJOdW1iZXJHZXRBdHRyT2Zmc2V0KGxvY2Fs Y29sKV07CisKKwkJCS8qCisJCQkgKiBTa2lwIGlmIHRoZSBjb2x1bW4gZG9lcyBub3QgZXhpc3Qg b24gcHVibGlzaGVyIG5vZGUuIEluIHRoaXMKKwkJCSAqIGNhc2UgdGhlIHJlcGxpY2F0ZWQgdHVw bGVzIGFsd2F5cyBoYXZlIE5VTEwgb3IgZGVmYXVsdCB2YWx1ZS4KKwkJCSAqLworCQkJaWYgKHJl bW90ZWNvbCA8IDApCisJCQl7CisJCQkJc3VpdGFibGUgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJ CX0KKworCQkJLyogQ2hlY2tzIGFyZSBwYXNzZWQsIHJlbWVtYmVyIHRoZSBhdHRyaWJ1dGUgKi8K KwkJCWluZGV4a2V5cyA9IGJtc19hZGRfbWVtYmVyKGluZGV4a2V5cywgcmVtb3RlY29sKTsKKwkJ fQorCisJCWluZGV4X2Nsb3NlKGlkeHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkvKgorCQkg KiBTa2lwIHVzaW5nIHRoZSBpbmRleCBpZiBpdCBpcyBub3Qgc3VpdGFibGUuIFRoaXMgY2FuIGhh cHBlbiBpZiAxKQorCQkgKiBvbmUgb2YgdGhlIGNvbHVtbnMgZG9lcyBub3QgZXhpc3Qgb24gdGhl IHB1Ymxpc2hlciBzaWRlLCBvciAyKQorCQkgKiB0aGVyZSBpcyBhbiBleHByZXNzaW9uIGNvbHVt bi4KKwkJICovCisJCWlmICghc3VpdGFibGUpCisJCXsKKwkJCWlmIChpbmRleGtleXMpCisJCQkJ Ym1zX2ZyZWUoaW5kZXhrZXlzKTsKKworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUaGlzIGlu ZGV4IGlzIHVzYWJsZSwgc3RvcmUgb24gbWVtb3J5ICovCisJCWlmIChpbmRleGtleXMpCisJCXsK KwkJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQkJTG9naWNhbFJlcFN1YnNjcmliZXJJZHggKmlk eGluZm87CisKKwkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhMb2dpY2FsUmVwUmVs TWFwQ29udGV4dCk7CisJCQlpZHhpbmZvID0gcGFsbG9jKHNpemVvZihMb2dpY2FsUmVwU3Vic2Ny aWJlcklkeCkpOworCQkJaWR4aW5mby0+aW5kZXhvaWQgPSBpZHhvaWQ7CisJCQlpZHhpbmZvLT5p bmRleGtleXMgPSBibXNfY29weShpbmRleGtleXMpOworCQkJZW50cnktPmxvY2FsX3VuaXF1ZV9p bmRleGVzID0KKwkJCQlsYXBwZW5kKGVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlcywgaWR4aW5m byk7CisKKwkJCXBmcmVlKGluZGV4a2V5cyk7CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3R4KTsKKwkJfQorCX0KKworCWxpc3RfZnJlZShpZHhsaXN0KTsKK30KKwogLyoKICAqIENoZWNr IGFsbCBsb2NhbCB0cmlnZ2VycyBmb3IgdGhlIHJlbGF0aW9uIHRvIHNlZSB0aGUgcGFyYWxsZWxp emFiaWxpdHkuCiAgKgpAQCAtMzcwLDcgKzUwOCwxNiBAQCBsb2dpY2FscmVwX3JlbF9tYXJrX3Vw ZGF0YWJsZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogc3RhdGljIHZvaWQKIGNoZWNr X2RlZmluZWRfdHJpZ2dlcnMoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIHsKLQlUcmln Z2VyRGVzYyAqdHJpZ2Rlc2MgPSBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjOworCVRyaWdnZXJE ZXNjICp0cmlnZGVzYzsKKworCS8qCisJICogU2tpcCBpZiB0aGUgcGFyYWxsZWxpemFiaWxpdHkg aGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLiBQb3NzaWxibGUgaWYKKwkgKiB0aGUgcmVsYXRpb24g aGFzIGV4cHJlc3Npb24gaW5kZXhlcy4KKwkgKi8KKwlpZiAoZW50cnktPnBhcmFsbGVsX3NhZmUg IT0gTE9HSUNBTFJFUF9QQVJBTExFTF9VTktOT1dOKQorCQlyZXR1cm47CisKKwl0cmlnZGVzYyA9 IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2M7CiAKIAkvKiBRdWljayBleGl0IGlmIHRyaWZmZXIg aXMgbm90IGRlZmluZWQgKi8KIAlpZiAodHJpZ2Rlc2MgPT0gTlVMTCkKQEAgLTQxMSw3ICs1NTgs NyBAQCBjaGVja19kZWZpbmVkX3RyaWdnZXJzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkp CiAgKiBJZiB0aGUga2V5IGlzIGdpdmVuLCB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpcyBmaXJz dCBzZWFyY2hlZCBpbiB0aGUgaGFzaAogICogdGFibGUgYW5kIHByb2Nlc3NlZCBhcyBpbiB0aGUg YWJvdmUgY2FzZS4gQXQgdGhlIGVuZCwgbG9naWNhbCByZXBsaWNhdGlvbiBpcwogICogY2xvc2Vk LgotICAqLworICovCiB2b2lkCiBsb2dpY2FscmVwX3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqZW50cnksIExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwKIAkJCQkJTE9DS01PREUgbG9j a21vZGUpCkBAIC01NjUsNyArNzEyLDExIEBAIGxvZ2ljYWxyZXBfcmVsX2xvYWQoTG9naWNhbFJl cFJlbE1hcEVudHJ5ICplbnRyeSwgTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLAogCQkgKiB0cmFj a2luZy4KIAkJICovCiAJCWlmIChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXsKKwkJCWVu dHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9QQVJBTExFTF9VTktOT1dOOworCQkJY29s bGVjdF9sb2NhbF9pbmRleGVzKGVudHJ5KTsKIAkJCWNoZWNrX2RlZmluZWRfdHJpZ2dlcnMoZW50 cnkpOworCQl9CiAKIAkJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCX0KQEAgLTg2Nyw2 ICsxMDE4LDEyIEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICpyb290LAogCWVudHJ5LT5sb2NhbGluZGV4b2lkID0gRmluZExvZ2ljYWxSZXBMb2NhbElu ZGV4KHBhcnRyZWwsIHJlbW90ZXJlbCwKIAkJCQkJCQkJCQkJCQllbnRyeS0+YXR0cm1hcCk7CiAK KwkvKgorCSAqIFRPRE86IFBhcmFsbGVsIGFwcGx5IGRvZXMgbm90IHN1cHBvcnQgdGhlIHBhcmFs bGVsIGFwcGx5IGZvciBub3cuIEp1c3QKKwkgKiBtYXJrIGxvY2FsIGluZGV4ZXMgYXJlIGNvbGxl Y3RlZC4KKwkgKi8KKwllbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXNfY29sbGVjdGVkID0gdHJ1 ZTsKKwogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAogCXJldHVybiBlbnRyeTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGMxMmI4M2EwNWQ1Li42 ODUxNTk2NjI1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBA IC01NDgsOSArNTQ4LDE5IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5U3ViWGFjdERhdGEKIAogc3Rh dGljIEFwcGx5U3ViWGFjdERhdGEgc3VieGFjdF9kYXRhID0gezAsIDAsIEludmFsaWRUcmFuc2Fj dGlvbklkLCBOVUxMfTsKIAorLyoKKyAqIFR5cGUgb2Yga2V5IHVzZWQgZm9yIGRlcGVuZGVuY3kg dHJhY2tpbmcuCisgKi8KK3R5cGVkZWYgZW51bSBMb2dpY2FsUmVwS2V5S2luZAoreworCUxPR0lD QUxSRVBfS0VZX1JFUExJQ0FfSURFTlRJVFksCisJTE9HSUNBTFJFUF9LRVlfTE9DQUxfVU5JUVVF Cit9IExvZ2ljYWxSZXBLZXlLaW5kOworCiB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhSWRlbnRpdHlL ZXkKIHsKIAlPaWQJCQlyZWxpZDsKKwlMb2dpY2FsUmVwS2V5S2luZCBraW5kOwogCUxvZ2ljYWxS ZXBUdXBsZURhdGEgKmRhdGE7CiB9IFJlcGxpY2FJZGVudGl0eUtleTsKIApAQCAtNzEwLDcgKzcy MCw4IEBAIHN0YXRpYyBib29sCiBoYXNoX3JlcGxpY2FfaWRlbnRpdHlfY29tcGFyZShSZXBsaWNh SWRlbnRpdHlLZXkgKmEsIFJlcGxpY2FJZGVudGl0eUtleSAqYikKIHsKIAlpZiAoYS0+cmVsaWQg IT0gYi0+cmVsaWQgfHwKLQkJYS0+ZGF0YS0+bmNvbHMgIT0gYi0+ZGF0YS0+bmNvbHMpCisJCWEt PmRhdGEtPm5jb2xzICE9IGItPmRhdGEtPm5jb2xzIHx8CisJCWEtPmtpbmQgIT0gYi0+a2luZCkK IAkJcmV0dXJuIGZhbHNlOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBhLT5kYXRhLT5uY29sczsg aSsrKQpAQCAtNzE4LDYgKzcyOSw5IEBAIGhhc2hfcmVwbGljYV9pZGVudGl0eV9jb21wYXJlKFJl cGxpY2FJZGVudGl0eUtleSAqYSwgUmVwbGljYUlkZW50aXR5S2V5ICpiKQogCQlpZiAoYS0+ZGF0 YS0+Y29sc3RhdHVzW2ldICE9IGItPmRhdGEtPmNvbHN0YXR1c1tpXSkKIAkJCXJldHVybiBmYWxz ZTsKIAorCQlpZiAoYS0+ZGF0YS0+Y29sc3RhdHVzW2ldID09IExPR0lDQUxSRVBfQ09MVU1OX05V TEwpCisJCQljb250aW51ZTsKKwogCQlpZiAoYS0+ZGF0YS0+Y29sdmFsdWVzW2ldLmxlbiAhPSBi LT5kYXRhLT5jb2x2YWx1ZXNbaV0ubGVuKQogCQkJcmV0dXJuIGZhbHNlOwogCkBAIC04NDcsNiAr ODYxLDkzIEBAIGNoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koTGlzdCAqZGVwZW5kc19v bl94aWRzLAogCXJldHVybiBsYXBwZW5kX3hpZChkZXBlbmRzX29uX3hpZHMsICpkZXBlbmRzX29u X3hpZCk7CiB9CiAKKy8qCisgKiBDb21tb24gZnVuY3Rpb24gZm9yIGNoZWNraW5nIGRlcGVuZGVu Y3kgYnkgdXNpbmcgdGhlIGtleS4gVXNlZCBieSBib3RoCisgKiBjaGVja19kZXBlbmRlbmN5X29u X3JlcGxpY2FfaWRlbnRpdHkgYW5kIGNoZWNrX2RlcGVuZGVuY3lfb25fbG9jYWxfa2V5LgorICov CitzdGF0aWMgdm9pZAorY2hlY2tfZGVwZW5kZW5jeV9ieV9rZXkoUmVwbGljYUlkZW50aXR5S2V5 ICprZXksIFRyYW5zYWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCUxpc3QgKipkZXBl bmRzX29uX3hpZHMpCit7CisJUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CisJYm9vbAkJ Zm91bmQgPSBmYWxzZTsKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJaWYgKFRyYW5zYWN0aW9uSWRJc1Zh bGlkKG5ld19kZXBlbmRlZF94aWQpKQorCXsKKwkJcmllbnRyeSA9IHJlcGxpY2FfaWRlbnRpdHlf aW5zZXJ0KHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIGtleSwKKwkJCQkJCQkJCQkgICZmb3VuZCk7 CisKKwkJLyoKKwkJICogUmVsZWFzZSB0aGUga2V5IGJ1aWx0IHRvIHNlYXJjaCB0aGUgZW50cnks IGlmIHRoZSBlbnRyeSBhbHJlYWR5CisJCSAqIGV4aXN0cy4gT3RoZXJ3aXNlLCBpbml0aWFsaXpl IHRoZSByZW1vdGVfeGlkLgorCQkgKi8KKwkJaWYgKGZvdW5kKQorCQl7CisJCQllbG9nKERFQlVH MSwKKwkJCQkga2V5LT5raW5kID09IExPR0lDQUxSRVBfS0VZX1JFUExJQ0FfSURFTlRJVFkgPwor CQkJCSAiZm91bmQgY29uZmxpY3RpbmcgcmVwbGljYSBpZGVudGl0eSBjaGFuZ2UgZnJvbSAldSIg OgorCQkJCSAiZm91bmQgY29uZmxpY3RpbmcgbG9jYWwgdW5pcXVlIGNoYW5nZSBmcm9tICV1IiwK KwkJCQkgcmllbnRyeS0+cmVtb3RlX3hpZCk7CisKKwkJCWZyZWVfcmVwbGljYV9pZGVudGl0eV9r ZXkoa2V5KTsKKwkJfQorCQllbHNlCisJCQlyaWVudHJ5LT5yZW1vdGVfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CisJfQorCWVsc2UKKwl7CisJCXJpZW50cnkgPSByZXBsaWNhX2lkZW50aXR5 X2xvb2t1cChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCBrZXkpOworCQlmcmVlX3JlcGxpY2FfaWRl bnRpdHlfa2V5KGtleSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisK KwkvKiBSZXR1cm4gaWYgbm8gZW50cnkgZm91bmQgKi8KKwlpZiAoIXJpZW50cnkpCisJCXJldHVy bjsKKworCUFzc2VydCghZm91bmQgfHwgVHJhbnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+cmVt b3RlX3hpZCkpOworCisJKmRlcGVuZHNfb25feGlkcyA9IGNoZWNrX2FuZF9hcHBlbmRfeGlkX2Rl cGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKKwkJCQkJCQkJCQkJCQkgICAmcmllbnRyeS0+cmVt b3RlX3hpZCwKKwkJCQkJCQkJCQkJCQkgICBuZXdfZGVwZW5kZWRfeGlkKTsKKworCS8qCisJICog UmVtb3ZlIHRoZSBlbnRyeSBpZiBpdCBpcyByZWdpc3RlcmVkIGZvciB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb25zLiBXZQorCSAqIGRvIG5vdCBoYXZlIHRvIHJlZ2lzdGVyIGFuIGVudHJ5IGZvciB0 aGVtOyBUaGUgbGVhZGVyIHdvcmtlciBhbHdheXMKKwkgKiB3YWl0cyB1bnRpbCB0aGUgcGFyYWxs ZWwgd29ya2VyIGZpbmlzaGVzIGhhbmRsaW5nIHN0cmVhbWVkCisJICogdHJhbnNhY3Rpb25zLCB0 aHVzIG5vIG5lZWQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmxpdHkgdGhhdCB1cGNvbWluZworCSAq IHBhcmFsbGVsIHdvcmtlcnMgd291bGQgZ28gYWhlYWQuCisJICovCisJaWYgKFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHN0cmVhbV94aWQpICYmICFmb3VuZCkKKwl7CisJCWZyZWVfcmVwbGljYV9pZGVu dGl0eV9rZXkocmllbnRyeS0+a2V5ZGF0YSk7CisJCXJlcGxpY2FfaWRlbnRpdHlfZGVsZXRlX2l0 ZW0ocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmllbnRyeSk7CisJfQorCisJLyoKKwkgKiBVcGRh dGUgdGhlIG5ldyBkZXBlbmRlZCB4aWQgaW50byB0aGUgZW50cnkgaWYgdmFsaWQsIHRoZSBuZXcg eGlkIGNvdWxkCisJICogYmUgaW52YWxpZCBpZiB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBhcHBs aWVkIGJ5IHRoZSBsZWFkZXIgaXRzZWxmCisJICogd2hpY2ggbWVhbnMgYWxsIHRoZSBjaGFuZ2Vz IHdpbGwgYmUgY29tbWl0dGVkIGJlZm9yZSBwcm9jZXNzaW5nIG5leHQKKwkgKiB0cmFuc2FjdGlv biwgc28gbm8gbmVlZCB0byBiZSBkZXBlbmRlZCBvbi4KKwkgKi8KKwllbHNlIGlmIChUcmFuc2Fj dGlvbklkSXNWYWxpZChuZXdfZGVwZW5kZWRfeGlkKSkKKwkJcmllbnRyeS0+cmVtb3RlX3hpZCA9 IG5ld19kZXBlbmRlZF94aWQ7CisKKwkvKgorCSAqIFJlbW92ZSB0aGUgZW50cnkgaWYgdGhlIHRy YW5zYWN0aW9uIGhhcyBiZWVuIGNvbW1pdHRlZCBhbmQgbm8gbmV3CisJICogZGVwZW5kZW5jeSBu ZWVkcyB0byBiZSBhZGRlZC4KKwkgKi8KKwllbHNlIGlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQo cmllbnRyeS0+cmVtb3RlX3hpZCkpCisJeworCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJp ZW50cnktPmtleWRhdGEpOworCQlyZXBsaWNhX2lkZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxpY2Ff aWRlbnRpdHlfdGFibGUsIHJpZW50cnkpOworCX0KK30KKwogLyoKICAqIENoZWNrIGZvciBkZXBl bmRlbmNpZXMgb24gcHJlY2VkaW5nIHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlmeSB0aGUgc2FtZSBr ZXkuCiAgKiBSZXR1cm5zIHRoZSBkZXBlbmRlbnQgdHJhbnNhY3Rpb25zIGluICdkZXBlbmRzX29u X3hpZHMnIGFuZCByZWNvcmRzIHRoZQpAQCAtODYxLDEwICs5NjIsOCBAQCBjaGVja19kZXBlbmRl bmN5X29uX3JlcGxpY2FfaWRlbnRpdHkoT2lkIHJlbGlkLAogCUxvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsZW50cnk7CiAJTG9naWNhbFJlcFR1cGxlRGF0YSAqcmlkYXRhOwogCVJlcGxpY2FJZGVu dGl0eUtleSAqcmlrZXk7Ci0JUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CiAJTWVtb3J5 Q29udGV4dCBvbGRjdHg7CiAJaW50CQkJbl9yaTsKLQlib29sCQlmb3VuZCA9IGZhbHNlOwogCiAJ QXNzZXJ0KGRlcGVuZHNfb25feGlkcyk7CiAKQEAgLTkzMCw3NSArMTAyOSwxMjIgQEAgY2hlY2tf ZGVwZW5kZW5jeV9vbl9yZXBsaWNhX2lkZW50aXR5KE9pZCByZWxpZCwKIAogCXJpa2V5ID0gcGFs bG9jMF9vYmplY3QoUmVwbGljYUlkZW50aXR5S2V5KTsKIAlyaWtleS0+cmVsaWQgPSByZWxpZDsK KwlyaWtleS0+a2luZCA9IExPR0lDQUxSRVBfS0VZX1JFUExJQ0FfSURFTlRJVFk7CiAJcmlrZXkt PmRhdGEgPSByaWRhdGE7CiAKLQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobmV3X2RlcGVuZGVk X3hpZCkpCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisKKwljaGVja19kZXBlbmRl bmN5X2J5X2tleShyaWtleSwgbmV3X2RlcGVuZGVkX3hpZCwgZGVwZW5kc19vbl94aWRzKTsKK30K KworLyoKKyAqIE1vc3RseSBzYW1lIGFzIGNoZWNrX2RlcGVuZGVuY3lfb25fcmVwbGljYV9pZGVu dGl0eSgpIGJ1dCBmb3IgbG9jYWwgdW5pcXVlCisgKiBpbmRleGVzLgorICovCitzdGF0aWMgdm9p ZAorY2hlY2tfZGVwZW5kZW5jeV9vbl9sb2NhbF9rZXkoT2lkIHJlbGlkLAorCQkJCQkJCSAgTG9n aWNhbFJlcFR1cGxlRGF0YSAqb3JpZ2luYWxfZGF0YSwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQg bmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkgIExpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7CisJ TG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhICpy aWRhdGE7CisJUmVwbGljYUlkZW50aXR5S2V5ICpyaWtleTsKKwlNZW1vcnlDb250ZXh0IG9sZGN0 eDsKKworCUFzc2VydChkZXBlbmRzX29uX3hpZHMpOworCisJLyogU2VhcmNoIGZvciBleGlzdGlu ZyBlbnRyeSAqLworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50cnkocmVsaWQpOwor CisJQXNzZXJ0KHJlbGVudHJ5KTsKKworCS8qCisJICogR2F0aGVyIGluZm9ybWF0aW9uIGZvciBs b2NhbCBpbmRleGVzIGlmIG5vdCB5ZXQuIFdlIHJlcXVpcmUgdG8gYmUgaW4gYQorCSAqIHRyYW5z YWN0aW9uIHN0YXRlIGJlY2F1c2Ugc3lzdGVtIGNhdGFsb2dzIGFyZSByZWFkLgorCSAqLworCWlm ICghcmVsZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVzX2NvbGxlY3RlZCkKIAl7Ci0JCXJpZW50 cnkgPSByZXBsaWNhX2lkZW50aXR5X2luc2VydChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCByaWtl eSwKLQkJCQkJCQkJCQkgICZmb3VuZCk7CisJCWJvb2wJCW5lZWRzX3N0YXJ0ID0gIUlzVHJhbnNh Y3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKTsKKworCQlpZiAobmVlZHNfc3RhcnQpCisJCQlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWxvZ2ljYWxyZXBfcmVsX2xvYWQoTlVMTCwgcmVs aWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKIAkJLyoKLQkJICogUmVsZWFzZSB0aGUga2V5IGJ1aWx0 IHRvIHNlYXJjaCB0aGUgZW50cnksIGlmIHRoZSBlbnRyeSBhbHJlYWR5Ci0JCSAqIGV4aXN0cy4g T3RoZXJ3aXNlLCBpbml0aWFsaXplIHRoZSByZW1vdGVfeGlkLgorCQkgKiBDbG9zZSB0aGUgdHJh bnNhY3Rpb24gaWYgd2Ugc3RhcnQgaGVyZS4gV2UgbXVzdCBub3QgYWJvcnQgYmVjYXVzZQorCQkg KiBpdCB3b3VsZCByZWxlYXNlIGFsbCBzZXNzaW9uLWxldmVsIGxvY2tzLCBzdWNoIGFzIHRoZSBz dHJlYW0gbG9jaywKKwkJICogYW5kIGJyZWFrIHRoZSBkZWFkbG9jayBkZXRlY3Rpb24gbWVjaGFu aXNtIGJldHdlZW4gTEEgYW5kIFBBLiBUaGUKKwkJICogb3V0Y29tZSBpcyB0aGUgc2FtZSByZWdh cmRsZXNzIG9mIHRoZSBlbmQgc3RhdHVzLCBzaW5jZSB0aGUKKwkJICogdHJhbnNhY3Rpb24gZGlk IG5vdCBtb2RpZnkgYW55IHR1cGxlcy4KIAkJICovCi0JCWlmIChmb3VuZCkKLQkJewotCQkJZWxv ZyhERUJVRzEsICJmb3VuZCBjb25mbGljdGluZyByZXBsaWNhIGlkZW50aXR5IGNoYW5nZSBmcm9t ICV1IiwKLQkJCQkgcmllbnRyeS0+cmVtb3RlX3hpZCk7CisJCWlmIChuZWVkc19zdGFydCkKKwkJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlf a2V5KHJpa2V5KTsKLQkJfQotCQllbHNlCi0JCQlyaWVudHJ5LT5yZW1vdGVfeGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJCUFzc2VydChyZWxlbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXNf Y29sbGVjdGVkKTsKIAl9Ci0JZWxzZQorCisJZm9yZWFjaF9wdHIoTG9naWNhbFJlcFN1YnNjcmli ZXJJZHgsIGlkeGluZm8sIHJlbGVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlcykKIAl7Ci0JCXJp ZW50cnkgPSByZXBsaWNhX2lkZW50aXR5X2xvb2t1cChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCBy aWtleSk7Ci0JCWZyZWVfcmVwbGljYV9pZGVudGl0eV9rZXkocmlrZXkpOwotCX0KKwkJaW50CQkJ Y29sdW1ucyA9IGJtc19udW1fbWVtYmVycyhpZHhpbmZvLT5pbmRleGtleXMpOworCQlib29sCQlz dWl0YWJsZSA9IHRydWU7CiAKLQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJQXNz ZXJ0KGNvbHVtbnMpOwogCi0JLyogUmV0dXJuIGlmIG5vIGVudHJ5IGZvdW5kICovCi0JaWYgKCFy aWVudHJ5KQotCQlyZXR1cm47CisJCWZvciAoaW50IGkgPSAwOyBpIDwgb3JpZ2luYWxfZGF0YS0+ bmNvbHM7IGkrKykKKwkJeworCQkJaWYgKCFibXNfaXNfbWVtYmVyKGksIGlkeGluZm8tPmluZGV4 a2V5cykpCisJCQkJY29udGludWU7CiAKLQlBc3NlcnQoIWZvdW5kIHx8IFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHJpZW50cnktPnJlbW90ZV94aWQpKTsKKwkJCS8qCisJCQkgKiBTa2lwIGlmIHRoZSBj b2x1bW4gaXMgbm90IGNoYW5nZWQuCisJCQkgKgorCQkJICogWFhYOiBOVUxMIGlzIGFsbG93ZWQu CisJCQkgKi8KKwkJCWlmIChvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9HSUNBTFJF UF9DT0xVTU5fVU5DSEFOR0VEKQorCQkJeworCQkJCXN1aXRhYmxlID0gZmFsc2U7CisJCQkJYnJl YWs7CisJCQl9CisJCX0KIAotCSpkZXBlbmRzX29uX3hpZHMgPSBjaGVja19hbmRfYXBwZW5kX3hp ZF9kZXBlbmRlbmN5KCpkZXBlbmRzX29uX3hpZHMsCi0JCQkJCQkJCQkJCQkJICAgJnJpZW50cnkt PnJlbW90ZV94aWQsCi0JCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hpZCk7CisJCWlmICgh c3VpdGFibGUpCisJCQljb250aW51ZTsKIAotCS8qCi0JICogUmVtb3ZlIHRoZSBlbnRyeSBpZiBp dCBpcyByZWdpc3RlcmVkIGZvciB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLiBXZQotCSAqIGRv IG5vdCBoYXZlIHRvIHJlZ2lzdGVyIGFuIGVudHJ5IGZvciB0aGVtOyBUaGUgbGVhZGVyIHdvcmtl ciBhbHdheXMKLQkgKiB3YWl0cyB1bnRpbCB0aGUgcGFyYWxsZWwgd29ya2VyIGZpbmlzaGVzIGhh bmRsaW5nIHN0cmVhbWVkCi0JICogdHJhbnNhY3Rpb25zLCB0aHVzIG5vIG5lZWQgdG8gY29uc2lk ZXIgdGhlIHBvc3NpYmxpdHkgdGhhdCB1cGNvbWluZwotCSAqIHBhcmFsbGVsIHdvcmtlcnMgd291 bGQgZ28gYWhlYWQuCi0JICovCi0JaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQp ICYmICFmb3VuZCkKLQl7Ci0JCWZyZWVfcmVwbGljYV9pZGVudGl0eV9rZXkocmllbnRyeS0+a2V5 ZGF0YSk7Ci0JCXJlcGxpY2FfaWRlbnRpdHlfZGVsZXRlX2l0ZW0ocmVwbGljYV9pZGVudGl0eV90 YWJsZSwgcmllbnRyeSk7Ci0JfQorCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlDb250ZXh0KTsKIAotCS8qCi0JICogVXBkYXRlIHRoZSBuZXcgZGVwZW5kZWQgeGlkIGludG8g dGhlIGVudHJ5IGlmIHZhbGlkLCB0aGUgbmV3IHhpZCBjb3VsZAotCSAqIGJlIGludmFsaWQgaWYg dGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCBieSB0aGUgbGVhZGVyIGl0c2VsZgotCSAq IHdoaWNoIG1lYW5zIGFsbCB0aGUgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCBiZWZvcmUgcHJv Y2Vzc2luZyBuZXh0Ci0JICogdHJhbnNhY3Rpb24sIHNvIG5vIG5lZWQgdG8gYmUgZGVwZW5kZWQg b24uCi0JICovCi0JZWxzZSBpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobmV3X2RlcGVuZGVkX3hp ZCkpCi0JCXJpZW50cnktPnJlbW90ZV94aWQgPSBuZXdfZGVwZW5kZWRfeGlkOworCQkvKiBBbGxv Y2F0ZSBzcGFjZSBmb3IgcmVwbGljYSBpZGVudGl0eSB2YWx1ZXMgKi8KKwkJcmlkYXRhID0gcGFs bG9jMF9vYmplY3QoTG9naWNhbFJlcFR1cGxlRGF0YSk7CisJCXJpZGF0YS0+Y29sdmFsdWVzID0g cGFsbG9jMF9hcnJheShTdHJpbmdJbmZvRGF0YSwgY29sdW1ucyk7CisJCXJpZGF0YS0+Y29sc3Rh dHVzID0gcGFsbG9jMF9hcnJheShjaGFyLCBjb2x1bW5zKTsKKwkJcmlkYXRhLT5uY29scyA9IGNv bHVtbnM7CiAKLQkvKgotCSAqIFJlbW92ZSB0aGUgZW50cnkgaWYgdGhlIHRyYW5zYWN0aW9uIGhh cyBiZWVuIGNvbW1pdHRlZCBhbmQgbm8gbmV3Ci0JICogZGVwZW5kZW5jeSBuZWVkcyB0byBiZSBh ZGRlZC4KLQkgKi8KLQllbHNlIGlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+cmVt b3RlX3hpZCkpCi0JewotCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJpZW50cnktPmtleWRh dGEpOwotCQlyZXBsaWNhX2lkZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxpY2FfaWRlbnRpdHlfdGFi bGUsIHJpZW50cnkpOworCQlmb3IgKGludCBpX29yaWdpbmFsID0gMCwgaV9rZXkgPSAwOyBpX29y aWdpbmFsIDwgb3JpZ2luYWxfZGF0YS0+bmNvbHM7IGlfb3JpZ2luYWwrKykKKwkJeworCQkJaWYg KCFibXNfaXNfbWVtYmVyKGlfb3JpZ2luYWwsIGlkeGluZm8tPmluZGV4a2V5cykpCisJCQkJY29u dGludWU7CisKKwkJCWlmIChvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV9vcmlnaW5hbF0gIT0g TE9HSUNBTFJFUF9DT0xVTU5fTlVMTCkKKwkJCXsKKwkJCQlTdHJpbmdJbmZvCW9yaWdpbmFsX2Nv bHZhbHVlID0gJm9yaWdpbmFsX2RhdGEtPmNvbHZhbHVlc1tpX29yaWdpbmFsXTsKKworCQkJCWlu aXRTdHJpbmdJbmZvRXh0KCZyaWRhdGEtPmNvbHZhbHVlc1tpX2tleV0sIG9yaWdpbmFsX2NvbHZh bHVlLT5sZW4gKyAxKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZyaWRhdGEtPmNvbHZh bHVlc1tpX2tleV0sIG9yaWdpbmFsX2NvbHZhbHVlLT5kYXRhKTsKKwkJCX0KKworCQkJcmlkYXRh LT5jb2xzdGF0dXNbaV9rZXldID0gb3JpZ2luYWxfZGF0YS0+Y29sc3RhdHVzW2lfb3JpZ2luYWxd OworCQkJaV9rZXkrKzsKKwkJfQorCisJCXJpa2V5ID0gcGFsbG9jMF9vYmplY3QoUmVwbGljYUlk ZW50aXR5S2V5KTsKKwkJcmlrZXktPnJlbGlkID0gcmVsaWQ7CisJCXJpa2V5LT5raW5kID0gTE9H SUNBTFJFUF9LRVlfTE9DQUxfVU5JUVVFOworCQlyaWtleS0+ZGF0YSA9IHJpZGF0YTsKKworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKworCQljaGVja19kZXBlbmRlbmN5X2J5X2tl eShyaWtleSwgbmV3X2RlcGVuZGVkX3hpZCwgZGVwZW5kc19vbl94aWRzKTsKIAl9CiB9CiAKQEAg LTExODEsNiArMTMyNyw5IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVw TXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVw bGljYV9pZGVudGl0eShyZWxpZCwgJm5ld3R1cCwKIAkJCQkJCQkJCQkJCSBuZXdfZGVwZW5kZWRf eGlkLAogCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVwZW5kZW5j eV9vbl9sb2NhbF9rZXkocmVsaWQsICZuZXd0dXAsCisJCQkJCQkJCQkJICBuZXdfZGVwZW5kZWRf eGlkLAorCQkJCQkJCQkJCSAgJmRlcGVuZHNfb25feGlkcyk7CiAJCQljaGVja19kZXBlbmRlbmN5 X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJ CQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKQEAgLTExOTQsNiArMTM0Myw5IEBAIGhh bmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmlu Z0luZm8gcywKIAkJCQljaGVja19kZXBlbmRlbmN5X29uX3JlcGxpY2FfaWRlbnRpdHkocmVsaWQs ICZvbGR0dXAsCiAJCQkJCQkJCQkJCQkJIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkJ ICZkZXBlbmRzX29uX3hpZHMpOworCQkJCWNoZWNrX2RlcGVuZGVuY3lfb25fbG9jYWxfa2V5KHJl bGlkLCAmb2xkdHVwLAorCQkJCQkJCQkJCQkgIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJ CSAgJmRlcGVuZHNfb25feGlkcyk7CiAJCQkJY2hlY2tfZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxf c2FmZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJCSAmZGVwZW5kc19v bl94aWRzKTsKIAkJCX0KQEAgLTEyMDEsNiArMTM1Myw5IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29u X2NoYW5nZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCWNoZWNr X2RlcGVuZGVuY3lfb25fcmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm5ld3R1cCwKIAkJCQkJCQkJ CQkJCSBuZXdfZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOwor CQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9sb2NhbF9rZXkocmVsaWQsICZuZXd0dXAsCisJCQkJCQkJ CQkJICBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCSAgJmRlcGVuZHNfb25feGlkcyk7CiAJ CQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRl ZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKQEAgLTEy MTAsNiArMTM2NSw5IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNn VHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVwbGlj YV9pZGVudGl0eShyZWxpZCwgJm9sZHR1cCwKIAkJCQkJCQkJCQkJCSBuZXdfZGVwZW5kZWRfeGlk LAogCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVwZW5kZW5jeV9v bl9sb2NhbF9rZXkocmVsaWQsICZvbGR0dXAsCisJCQkJCQkJCQkJICBuZXdfZGVwZW5kZWRfeGlk LAorCQkJCQkJCQkJCSAgJmRlcGVuZHNfb25feGlkcyk7CiAJCQljaGVja19kZXBlbmRlbmN5X2Zv cl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkg JmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9kZWFkbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2RlYWRsb2Nr LmMKaW5kZXggODMzNGE4ODc2MTguLmIzN2Q4NzJiZmQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvZGVhZGxvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv ZGVhZGxvY2suYwpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJl ci5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKLQogLyoKICAqIE9uZSBlZGdlIGlu IHRoZSB3YWl0cy1mb3IgZ3JhcGguCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cmVsYXRpb24uaAppbmRleCA5MTZkMjFjMmRiZC4uOTE1MmVmZmIyY2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNiw2ICsxNiwxMiBAQAogI2luY2x1 ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aCIKIAordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN1YnNjcmliZXJJZHgKK3sKKwlPaWQJCQlp bmRleG9pZDsJLyogT0lEIG9mIHRoZSBsb2NhbCBrZXkgKi8KKwlCaXRtYXBzZXQgICppbmRleGtl eXM7CS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqb24gcmVtb3RlKiAqLworfSBMb2dpY2FsUmVw U3Vic2NyaWJlcklkeDsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiB7 CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJLyoga2V5IGlzIHJlbW90ZXJlbC5yZW1v dGVpZCAqLwpAQCAtNDAsNiArNDYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1h cEVudHJ5CiAKIAlUcmFuc2FjdGlvbklkIGxhc3RfZGVwZW5kZWRfeGlkOwogCisJLyogTG9jYWwg dW5pcXVlIGluZGV4ZXMuIFVzZWQgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmcgKi8KKwlMaXN0CSAg ICpsb2NhbF91bmlxdWVfaW5kZXhlczsKKwlib29sCQlsb2NhbF91bmlxdWVfaW5kZXhlc19jb2xs ZWN0ZWQ7CisKIAkvKgogCSAqIFdoZXRoZXIgdGhlIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIGlu IHBhcmFsbGVsIG9yIG5vdC4gSXQgaXMKIAkgKiBkaXN0aW5nbGlzaCB3aGV0aGVyIGRlZmluZWQg dHJpZ2dlcnMgYXJlIHRoZSBpbW11dGFibGUgb3Igbm90LgpAQCAtNTEsNiArNjEsMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJICogTm90ZSB0aGF0IHdlIGRvIG5v dCBjaGVjayB0aGUgdXNlci1kZWZpbmVkIGNvbnN0cmFpbnRzIGhlcmUuIFBvc3RncmVTUUwKIAkg KiBoYXMgYWxyZWFkeSBhc3N1bWVkIHRoYXQgQ0hFQ0sgY29uc3RyYWludHMnIGNvbmRpdGlvbnMg YXJlIGltbXV0YWJsZSBhbmQKIAkgKiBoZXJlIGZvbGxvd3MgdGhlIHJ1bGUuCisJICoKKwkgKiBY WFg6IEFkZGl0b25hbGx5LCB0aGlzIGNhbiBiZSBmYWxzZSBpZiB0aGUgcmVsYXRpb24gaGFzIGV4 cHJlc3Npb24KKwkgKiBpbmRleGVzLiBCZWNhdXNlIHdlIGNhbm5vdCBjb21wdXRlIHRoZSBoYXNo IHZhbHVlIGZvciB0aGUgZGVwZW5kZW5jeQorCSAqIHRyYWNraW5nLgogCSAqLwogCWNoYXIJCXBh cmFsbGVsX3NhZmU7CiB9IExvZ2ljYWxSZXBSZWxNYXBFbnRyeTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAppbmRleCA5MjU0Yjg1ZDM1MC4uOWNiMzk1 ZmE0ZDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9h cHBseS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHku cGwKQEAgLTIzNCw0ICsyMzQsNjEgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L2ZpbmlzaCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQKIAogJGgtPnF1 ZXJ5X3NhZmUoIkNPTU1JVDsiKTsKIAorIyBFbnN1cmUgc3Vic2NyaWJlci1sb2NhbCBpbmRleGVz IGFyZSBhbHNvIHVzZWQgZm9yIHRoZSBkZXBlbmRlbmN5IHRyYWNraW5nCisKKyMgVHJ1bmNhdGUg dGhlIGRhdGEgZm9yIHVwY29taW5nIHRlc3RzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgcmVncmVzc190YWI7Iik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jlc3Nfc3ViJyk7CisKKyMgRGVmaW5lIGFuIHVuaXF1 ZSBpbmRleCBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKyAgICAiQ1JFQVRFIElOREVYIE9OIHJlZ3Jlc3NfdGFiICh2YWx1ZSk7Iik7CisKKyMg QXR0YWNoIGFuIGluamVjdGlvbl9wb2ludC4gUGFyYWxsZWwgd29ya2VycyB3b3VsZCB3YWl0IGJl Zm9yZSB0aGUgY29tbWl0Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdwYXJhbGxlbC13b3JrZXItYmVmb3Jl LWNvbW1pdCcsJ3dhaXQnKTsiCispOworCisjIEluc2VydCBhIHR1cGxlIG9uIHB1Ymxpc2hlci4g UGFyYWxsZWwgd29ya2VyIHdvdWxkIHdhaXQgYXQgdGhlIGluamVjdGlvbgorIyBwb2ludAorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVn cmVzc190YWIgVkFMVUVTICgxLCAnd291bGQgY29uZmxpY3QnKTsiKTsKKworIyBXYWl0IHVudGls IHRoZSBwYXJhbGxlbCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9pbnQuCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3 b3JrZXInLAorCSdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOworCiskb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxp c2hlciBhZ2Fpbi4gVGhpcyB0cmFuc2FjdGlvbiBpcyB3b3VsZCB3YWl0IGJlY2F1c2UgYWxsCisj IHBhcmFsbGVsIHdvcmtlcnMgd2FpdCB0aWxsIHRoZSBwcmV2aW91c2x5IGxhdW5jaGVkIHdvcmtl ciBjb21taXRzLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAi SU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTICgyLCAnd291bGQgbm90IGNvbmZsaWN0Jyk7 Iik7CisKKyMgVmVyaWZ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgd2FpdHMgZm9yIHRoZSB0cmFuc2Fj dGlvbgorJHN0ciA9ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci93YWl0IGZvciBk ZXBlbmRlZCB4aWQgKFsxLTldWzAtOV0rKS8sICRvZmZzZXQpOworJHhpZCA9ICRzdHIgPX4gL3dh aXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLzsKKworIyBJbnNlcnQgYSBjb25mbGlj dGluZyB0dXBsZSBvbiBwdWJsaXNoZXIuIExlYWRlciB3b3JrZXIgd291bGQgZGV0ZWN0IHRoZSBj b25mbGljdAorIyBhbmQgd2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIHRvIGNvbW1pdC4KKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIklOU0VSVCBJTlRPIHJlZ3Jl c3NfdGFiIFZBTFVFUyAoMywgJ3dvdWxkIGNvbmZsaWN0Jyk7Iik7CisKKyMgVmVyaWZ5IHRoZSBw YXJhbGxlbCB3b3JrZXIgd2FpdHMgZm9yIHRoZSBzYW1lIHRyYW5zYWN0aW9uCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvd2FpdCBmb3IgZGVwZW5kZWQgeGlkICR4aWQvLCAkb2Zm c2V0KTsKKworIyBXYWtldXAgdGhlIHBhcmFsbGVsIHdvcmtlcgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2Rl dGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQnKTsKKyAgICBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c193YWtldXAoJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CitdKTsK KworIyBWZXJpZnkgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIGNhbiBiZSBhcHBsaWVkCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvZmluaXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVk IHhpZCAkeGlkLywgJG9mZnNldCk7CisKKyMgQ2xlYW51cAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHJlZ3Jlc3NfdGFiX3ZhbHVlX2lkeDsiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSBy ZWdyZXNzX3RhYjsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVz c19zdWInKTsKKwogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4 IDgxMWEyM2FjMDNjLi4xOGVlZjAwZTczNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAg LTE2NDIsNiArMTY0Miw3IEBAIExvZ2ljYWxSZXBCZWdpbkRhdGEKIExvZ2ljYWxSZXBDb21taXRE YXRhCiBMb2dpY2FsUmVwQ29tbWl0UHJlcGFyZWRUeG5EYXRhCiBMb2dpY2FsUmVwQ3R4U3RydWN0 CitMb2dpY2FsUmVwS2V5S2luZAogTG9naWNhbFJlcE1zZ1R5cGUKIExvZ2ljYWxSZXBQYXJ0TWFw RW50cnkKIExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEKQEAgLTE2NTEsNiArMTY1Miw3IEBAIExv Z2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiBMb2dp Y2FsUmVwU2VxdWVuY2VJbmZvCiBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCitMb2dpY2FsUmVw U3Vic2NyaWJlcklkeAogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAogTG9naWNh bFJlcFdvcmtlcgotLSAKMi40Ny4zCgo= --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v8-0009-Support-dependency-tracking-via-foreign-keys.patch" Content-Description: v8-0009-Support-dependency-tracking-via-foreign-keys.patch Content-Disposition: attachment; filename="v8-0009-Support-dependency-tracking-via-foreign-keys.patch"; size=17133; creation-date="Fri, 30 Jan 2026 10:44:02 GMT"; modification-date="Fri, 30 Jan 2026 10:47:20 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNzRhOTY4MTViMGE3MzZiZjMwMWY2ZjE0NDNhN2M4ZDA0NDQ4NzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxoYXlhdG9AZXhhbXBsZS5jb20+CkRh dGU6IEZyaSwgMjMgSmFuIDIwMjYgMTU6MDg6MTUgKzA5MDAKU3ViamVjdDogW1BBVENIIHY4IDkv OV0gU3VwcG9ydCBkZXBlbmRlbmN5IHRyYWNraW5nIHZpYSBmb3JlaWduIGtleXMKCkxvZ2ljYWwg cmVwbGljYXRpb24ncyBwYXJhbGxlbCBhcHBseSBtZWNoYW5pc20gZGlkIG5vdCBhY2NvdW50IGZv ciBmb3JlaWduLWtleQpkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGNhdXNlIGEgZmFpbHVyZSBiZWNh dXNlIHRoZSByZWZlcmVuY2UgY29sdW1uIG1heSBiZQpjb21taXR0ZWQgYmVmb3JlIHRoZSByZWZl cmVuY2VkIGNvbHVtbi4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgcGFyYWxsZWwgYXBwbHkncyBk ZXBlbmRlbmN5IHRyYWNraW5nIHRvIGFjY291bnQgZm9yCmZvcmVpZ24ga2V5cyBpbiB0aGUgc3Vi c2NyaWJlciB0YWJsZS4gT25lIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IHJlZmVyZW5jZWQKY29s dW1ucyBjYW4gYmUgcmVnaXN0ZXJlZCB0byB0aGUgaWRlbnRpdHkgaGFzaCB0YWJsZS4KVGhlIGxl YWRlciBhcHBseSB3b3JrZXIgY2hlY2tzIHRvIGRldGVybWluZSB3aGV0aGVyIHZhbHVlcyBpbiBy ZWZlcmVuY2luZwpjb2x1bW5zIGhhdmUgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgb3Igbm90LCBh bmQgcmVnYXJkcyB0aGF0IHRoZXJlIGlzIGEKZGVwZW5kZW5jeSBpZiBmb3VuZC4KLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAxODUgKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAg fCAxNDIgKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxh dGlvbi5oICAgICB8ICAxMSArKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVs X2FwcGx5LnBsIHwgIDUwICsrKystCiA0IGZpbGVzIGNoYW5nZWQsIDM4NSBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRp b24uYwppbmRleCA2NjY1ZjVjMGNjOS4uODM2MDJkY2Q0Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uX3JlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTE0Myw2ICsxNDQs MjEgQEAgZnJlZV9sb2NhbF91bmlxdWVfaW5kZXhlcyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5KQogCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlcyA9IE5JTDsKIH0KIAorLyoKKyAqIFJl bGVhc2UgZm9yZWlnbiBrZXkgbGlzdAorICovCitzdGF0aWMgdm9pZAorZnJlZV9sb2NhbF9ma2V5 cyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUFzc2VydChhbV9sZWFkZXJfYXBw bHlfd29ya2VyKCkpOworCisJZm9yZWFjaF9wdHIoTG9naWNhbFJlcFN1YnNjcmliZXJGSywgZmtp bmZvLCBlbnRyeS0+bG9jYWxfZmtleXMpCisJCWJtc19mcmVlKGZraW5mby0+Y29ua2V5cyk7CisK KwlsaXN0X2ZyZWVfZGVlcChlbnRyeS0+bG9jYWxfZmtleXMpOworCWVudHJ5LT5sb2NhbF9ma2V5 cyA9IE5JTDsKK30KKwogLyoKICAqIEZyZWUgdGhlIGVudHJ5IG9mIGEgcmVsYXRpb24gbWFwIGNh Y2hlLgogICovCkBAIC0xNzMsNiArMTg5LDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9lbnRy eShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCiAJaWYgKGVudHJ5LT5sb2NhbF91bmlx dWVfaW5kZXhlcyAhPSBOSUwpCiAJCWZyZWVfbG9jYWxfdW5pcXVlX2luZGV4ZXMoZW50cnkpOwor CisJaWYgKGVudHJ5LT5sb2NhbF9ma2V5cyAhPSBOSUwpCisJCWZyZWVfbG9jYWxfZmtleXMoZW50 cnkpOwogfQogCiAvKgpAQCAtNDk5LDYgKzUxOCwxNzEgQEAgY29sbGVjdF9sb2NhbF9pbmRleGVz KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJbGlzdF9mcmVlKGlkeGxpc3QpOwogfQog CisvKgorICogU2VhcmNoIGEgcmVsbWFwIGVudHJ5IGJ5IGxvY2FsIHJlbGF0aW9uIE9JRC4KKyAq Lworc3RhdGljIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqCitsb2dpY2FscmVwX2dldF9yZWxlbnRy eV9ieV9sb2NhbF9vaWQoT2lkIGxvY2FscmVsb2lkKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoTG9naWNh bFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRWFjaCBlbnRy eSBtdXN0IGJlIGNoZWNrZWQgaW5kaXZpZHVhbGx5LiBCZWNhdXNlIHRoZSBrZXkgb2YKKwkgKiBM b2dpY2FsUmVwUmVsTWFwIGlzIHRoZSAicmVtb3RlIiByZWxpZCBidXQgd2Ugb25seSBoYXZlIHRo ZSBsb2NhbCBvbmUuCisJICoKKwkgKiBOb3RlOiBUaGlzIGl0ZXJhdGlvbiBpZ25vcmVzIHJlbGF0 aW9ucyB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisJICogcmVnaXN0ZXJlZCBpbiBMb2dpY2FsUmVw UmVsTWFwLiBJdCBpcyBPSyBiZWNhdXNlIHN1Y2ggcmVsYXRpb25zIGhhdmUKKwkgKiBub3QgYmVl biBtb2RpZmllZCB5ZXQgc2luY2UgdGhlIHN1YnNjcmliZXIgc3RhcnRlZCByZWNlaXZpbmcgY2hh bmdlcy4KKwkgKi8KKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBSZWxNYXApOwor CXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCWlmIChlbnRyeS0+bG9jYWxyZWxvaWQgPT0gbG9j YWxyZWxvaWQpCisJCXsKKwkJCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQlyZXR1cm4gZW50 cnk7CisJCX0KKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlm IHRoZSBGSyBjb25zdHJhaW50IGlzIGFsd2F5cyBkZWZlcnJlZC4KKyAqLworc3RhdGljIGJvb2wK K2ZvcmVpZ25fa2V5X2lzX2Fsd2F5c19kZWZlcnJlZChPaWQgY29ub2lkKQoreworCUhlYXBUdXBs ZQl0dXA7CisJRm9ybV9wZ19jb25zdHJhaW50IGNvbjsKKwlib29sCQlkZWZlcnJlZDsKKworCXR1 cCA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsIE9iamVjdElkR2V0RGF0dW0oY29ub2lkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBmb3JlaWduIGtleSAldSIsIGNvbm9pZCk7CisKKwljb24gPSAoRm9ybV9w Z19jb25zdHJhaW50KSBHRVRTVFJVQ1QodHVwKTsKKwlkZWZlcnJlZCA9IGNvbi0+Y29uZGVmZXJy YWJsZSAmJiBjb24tPmNvbmRlZmVycmVkOworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0 dXJuIGRlZmVycmVkOworfQorCisvKgorICogQ29sbGVjdCBhbGwgbG9jYWwgZm9yZWlnbiBrZXlz IHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmcuCisgKi8KK3N0YXRpYyB2 b2lkCitjb2xsZWN0X2xvY2FsX2ZrZXlzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7 CisJTGlzdAkgICAqZmtleXM7CisKKwlpZiAoZW50cnktPmxvY2FsX2ZrZXlzICE9IE5JTCkKKwkJ ZnJlZV9sb2NhbF9ma2V5cyhlbnRyeSk7CisKKwllbnRyeS0+bG9jYWxfZmtleXNfY29sbGVjdGVk ID0gdHJ1ZTsKKworCS8qCisJICogR2V0IHRoZSBsaXN0IG9mIGZvcmVpZ24ga2V5cyBmb3IgdGhl IHJlbGF0aW9uLgorCSAqCisJICogWFhYOiBBcGFydCBmcm9tIFJlbGF0aW9uR2V0SW5kZXhMaXN0 KCksIHRoZSByZXR1cm5lZCBsaXN0IGlzIGEgcGFydCBvZgorCSAqIHJlbGNhY2hlIGFuZCBtdXN0 IGJlIGNvcGllZCBiZWZvcmUgZG9pbmcgYW55dGhpbmcuIFNlZSBjb21tZW50cyBhdG9wCisJICog UmVsYXRpb25HZXRGS2V5TGlzdCgpLgorCSAqLworCWZrZXlzID0gY29weU9iamVjdChSZWxhdGlv bkdldEZLZXlMaXN0KGVudHJ5LT5sb2NhbHJlbCkpOworCisJLyogUXVpY2sgZXhpdCBpZiB0aGVy ZSBhcmUgbm8gZm9yZWlnbiBrZXlzICovCisJaWYgKGZrZXlzID09IE5JTCkKKwkJcmV0dXJuOwor CisJZm9yZWFjaF9wdHIoRm9yZWlnbktleUNhY2hlSW5mbywgZmssIGZrZXlzKQorCXsKKwkJTG9n aWNhbFJlcFJlbE1hcEVudHJ5ICpyZWZlbnRyeTsKKwkJQml0bWFwc2V0ICAqZmtrZXlzID0gTlVM TDsKKwkJYm9vbAkJc3VpdGFibGUgPSB0cnVlOworCisJCS8qCisJCSAqIFNraXAgTk9UIEVORk9S Q0VEIGNvbnN0cmFpbnRzIGJlY2F1c2UgdGhleSB3b24ndCBiZSBjaGVja2VkIGF0IGFueQorCQkg KiB0aW1lcy4KKwkJICovCisJCWlmICghZmstPmNvbmVuZm9yY2VkKQorCQkJY29udGludWU7CisK KwkJLyoKKwkJICogU2tpcCBpZiB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpcyBhbHdheXMg ZGVmZXJyZWQuIFRoZSBjb21taXQKKwkJICogb3JkZXJpbmcgaXMgYWx3YXlzIHByZXNlcnZlZCB0 aHVzIHRoZSBjb25zdHJhaW50IGNhbiBiZSBjaGVja2VkIGluCisJCSAqIGNvcnJlY3Qgb3JkZXIu CisJCSAqLworCQlpZiAoZm9yZWlnbl9rZXlfaXNfYWx3YXlzX2RlZmVycmVkKGZrLT5jb25vaWQp KQorCQkJY29udGludWU7CisKKwkJLyogRmluZCB0aGUgcmVmZXJlbmNlZCByZWxhdGlvbiBieSB0 aGUgbG9jYWwgT0lEICovCisJCXJlZmVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50cnlfYnlf bG9jYWxfb2lkKGZrLT5jb25mcmVsaWQpOworCisJCS8qCisJCSAqIFNraXAgaWYgdGhlIHJlZmVy ZW5jZWQgcmVsYXRpb24gaXMgbm90IHRoZSB0YXJnZXQgb2YgdGhpcworCQkgKiBzdWJzY3JpcHRp b24uCisJCSAqLworCQlpZiAoIXJlZmVudHJ5KQorCQkJY29udGludWU7CisKKwkJLyogU2VlayBl YWNoIGF0dHJpYnV0ZXMgYW5kIGFkZCB0byBhIEJpdG1hcCAqLworCQlmb3IgKGludCBpID0gMDsg aSA8IGZrLT5ua2V5czsgaSsrKQorCQl7CisJCQlBdHRyTnVtYmVyCWxvY2FsY29sID0gZmstPmNv bmtleVtpXTsKKwkJCWludAkJCXJlbW90ZWNvbCA9CisJCQkJZW50cnktPmF0dHJtYXAtPmF0dG51 bXNbQXR0ck51bWJlckdldEF0dHJPZmZzZXQobG9jYWxjb2wpXTsKKworCQkJLyogU2tpcCBpZiB0 aGUgY29sdW1uIGRvZXMgbm90IGV4aXN0IG9uIHB1Ymxpc2hlciBub2RlICovCisJCQlpZiAocmVt b3RlY29sIDwgMCkKKwkJCXsKKwkJCQlzdWl0YWJsZSA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJ fQorCisJCQkvKgorCQkJICogWFhYOiBXaGF0IGlmIHRoZSBGSyBjb2x1bW4gaXMgc3BlY2lmaWVk IHdpdGggZGlmZmVyZW50IG9yZGVyPworCQkJICogRS5nLiwgdGhlcmUgaXMgYSB0YWJsZSAoYSwg YikgYW5kIG90aGVyIHRhYmxlIHJlZmVycyBsaWtlCisJCQkgKiBSRUZFUkVOQ0VTIChiLCBhKS4g V2lsbCBpdCB3b3JrIGNvcnJlY3RseT8KKwkJCSAqLworCQkJZmtrZXlzID0gYm1zX2FkZF9tZW1i ZXIoZmtrZXlzLCByZW1vdGVjb2wpOworCQl9CisKKwkJLyoKKwkJICogT25lIG9mIHRoZSBjb2x1 bW5zIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBwdWJsaXNoZXIgc2lkZSwgc2tpcCBzdWNoCisJCSAq IGEgY29uc3RyYWludC4KKwkJICovCisJCWlmICghc3VpdGFibGUpCisJCXsKKwkJCWlmIChma2tl eXMpCisJCQkJYm1zX2ZyZWUoZmtrZXlzKTsKKworCQkJY29udGludWU7CisJCX0KKworCQlpZiAo ZmtrZXlzKQorCQl7CisJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJCUxvZ2ljYWxSZXBTdWJz Y3JpYmVyRksgKmZraW5mbzsKKworCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKExv Z2ljYWxSZXBSZWxNYXBDb250ZXh0KTsKKwkJCWZraW5mbyA9IHBhbGxvYyhzaXplb2YoTG9naWNh bFJlcFN1YnNjcmliZXJGSykpOworCQkJZmtpbmZvLT5jb25vaWQgPSBmay0+Y29ub2lkOworCQkJ ZmtpbmZvLT5yZWZfcmVtb3RlaWQgPSByZWZlbnRyeS0+cmVtb3RlcmVsLnJlbW90ZWlkOworCQkJ ZmtpbmZvLT5jb25rZXlzID0gYm1zX2NvcHkoZmtrZXlzKTsKKworCQkJYm1zX2ZyZWUoZmtrZXlz KTsKKwkJCWVudHJ5LT5sb2NhbF9ma2V5cyA9IGxhcHBlbmQoZW50cnktPmxvY2FsX2ZrZXlzLCBm a2luZm8pOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCX0KKwl9CisKKwls aXN0X2ZyZWVfZGVlcChma2V5cyk7Cit9CisKIC8qCiAgKiBDaGVjayBhbGwgbG9jYWwgdHJpZ2dl cnMgZm9yIHRoZSByZWxhdGlvbiB0byBzZWUgdGhlIHBhcmFsbGVsaXphYmlsaXR5LgogICoKQEAg LTcxNSw2ICs4OTksNyBAQCBsb2dpY2FscmVwX3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqZW50cnksIExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwKIAkJewogCQkJZW50cnktPnBhcmFs bGVsX3NhZmUgPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV047CiAJCQljb2xsZWN0X2xvY2Fs X2luZGV4ZXMoZW50cnkpOworCQkJY29sbGVjdF9sb2NhbF9ma2V5cyhlbnRyeSk7CiAJCQljaGVj a19kZWZpbmVkX3RyaWdnZXJzKGVudHJ5KTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCA2ODUxNTk2NjI1ZS4uZTM2YzZkZDgwMWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTE0OCw2ICsxMTQ4LDEzNiBA QCBjaGVja19kZXBlbmRlbmN5X29uX2xvY2FsX2tleShPaWQgcmVsaWQsCiAJfQogfQogCisvKgor ICogTG9va3VwLW9ubHkgZGVwZW5kZW5jeSBjaGVjayBieSBrZXkuIERvZXMgbm90IHJlZ2lzdGVy L3VwZGF0ZSBlbnRyaWVzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfZGVwZW5kZW5jeV9sb29r dXBfYnlfa2V5KFJlcGxpY2FJZGVudGl0eUtleSAqa2V5LAorCQkJCQkJCSAgIFRyYW5zYWN0aW9u SWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkgICBMaXN0ICoqZGVwZW5kc19vbl94aWRzKQor eworCVJlcGxpY2FJZGVudGl0eUVudHJ5ICpyaWVudHJ5OworCU1lbW9yeUNvbnRleHQgb2xkY3R4 OworCisJQXNzZXJ0KHJlcGxpY2FfaWRlbnRpdHlfdGFibGUpOworCisJb2xkY3R4ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwlyaWVudHJ5ID0gcmVwbGljYV9pZGVu dGl0eV9sb29rdXAocmVwbGljYV9pZGVudGl0eV90YWJsZSwga2V5KTsKKwlmcmVlX3JlcGxpY2Ff aWRlbnRpdHlfa2V5KGtleSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwor CWlmICghcmllbnRyeSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDbGVhbiB1cCBjb21taXR0ZWQg ZW50cmllcyB3aGlsZSBvbiBpdC4KKwkgKi8KKwlpZiAocGFfdHJhbnNhY3Rpb25fY29tbWl0dGVk KHJpZW50cnktPnJlbW90ZV94aWQpKQorCXsKKwkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShy aWVudHJ5LT5rZXlkYXRhKTsKKwkJcmVwbGljYV9pZGVudGl0eV9kZWxldGVfaXRlbShyZXBsaWNh X2lkZW50aXR5X3RhYmxlLCByaWVudHJ5KTsKKwkJcmV0dXJuOworCX0KKworCSpkZXBlbmRzX29u X3hpZHMgPSBjaGVja19hbmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KCpkZXBlbmRzX29uX3hpZHMs CisJCQkJCQkJCQkJCQkJICAgJnJpZW50cnktPnJlbW90ZV94aWQsCisJCQkJCQkJCQkJCQkJICAg bmV3X2RlcGVuZGVkX3hpZCk7Cit9CisKKy8qCisgKiBDaGVjayBmb3IgZGVwZW5kZW5jaWVzIG9u IHByZWNlZGluZyB0cmFuc2FjdGlvbnMgdGhhdCBtb2RpZnkgdGhlIHJlZmVyZW5jZWQKKyAqIHVu aXF1ZSBrZXkgb2YgZm9yZWlnbiBrZXlzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfZGVwZW5k ZW5jeV9vbl9mb3JlaWduX2tleShPaWQgcmVsaWQsCisJCQkJCQkJCUxvZ2ljYWxSZXBUdXBsZURh dGEgKm9yaWdpbmFsX2RhdGEsCisJCQkJCQkJCVRyYW5zYWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hp ZCwKKwkJCQkJCQkJTGlzdCAqKmRlcGVuZHNfb25feGlkcykKK3sKKwlMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbGVudHJ5OworCUxvZ2ljYWxSZXBUdXBsZURhdGEgKnJpZGF0YTsKKwlSZXBsaWNh SWRlbnRpdHlLZXkgKnJpa2V5OworCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJQXNzZXJ0KGRl cGVuZHNfb25feGlkcyk7CisKKwlyZWxlbnRyeSA9IGxvZ2ljYWxyZXBfZ2V0X3JlbGVudHJ5KHJl bGlkKTsKKworCUFzc2VydChyZWxlbnRyeSk7CisKKwkvKgorCSAqIFdlIGhhdmUgYWxyZWFkeSBj aGVja2VkIHRoZSBsb2NhbCB1bmlxdWUgaW5kZXhlcyBhbmQgYWxzbyBnYXRoZXJlZCB0aGUKKwkg KiBGSyBpbmZvIGF0IHRoYXQgdGltZS4KKwkgKgorCSAqIFhYWDogU2hvdWxkIHdlIGNoZWNrIGFu ZCBsb2FkIGFnYWluPworCSAqLworCUFzc2VydChyZWxlbnRyeS0+bG9jYWxfZmtleXNfY29sbGVj dGVkKTsKKworCWZvcmVhY2hfcHRyKExvZ2ljYWxSZXBTdWJzY3JpYmVyRkssIGZraW5mbywgcmVs ZW50cnktPmxvY2FsX2ZrZXlzKQorCXsKKwkJaW50CQkJY29sdW1ucyA9IGJtc19udW1fbWVtYmVy cyhma2luZm8tPmNvbmtleXMpOworCQlib29sCQlzdWl0YWJsZSA9IHRydWU7CisKKwkJQXNzZXJ0 KGNvbHVtbnMpOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgb3JpZ2luYWxfZGF0YS0+bmNvbHM7 IGkrKykKKwkJeworCQkJaWYgKCFibXNfaXNfbWVtYmVyKGksIGZraW5mby0+Y29ua2V5cykpCisJ CQkJY29udGludWU7CisKKwkJCS8qIFNraXAgaWYgdGhlIGNvbHVtbiBpcyBOVUxMIG9yIG5vdCBj aGFuZ2VkICovCisJCQlpZiAob3JpZ2luYWxfZGF0YS0+Y29sc3RhdHVzW2ldID09IExPR0lDQUxS RVBfQ09MVU1OX05VTEwgfHwKKwkJCQlvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9H SUNBTFJFUF9DT0xVTU5fVU5DSEFOR0VEKQorCQkJeworCQkJCXN1aXRhYmxlID0gZmFsc2U7CisJ CQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoIXN1aXRhYmxlKQorCQkJY29udGludWU7CisK KwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwkJLyog QWxsb2NhdGUgc3BhY2UgZm9yIHJlcGxpY2EgaWRlbnRpdHkgdmFsdWVzICovCisJCXJpZGF0YSA9 IHBhbGxvYzBfb2JqZWN0KExvZ2ljYWxSZXBUdXBsZURhdGEpOworCQlyaWRhdGEtPmNvbHZhbHVl cyA9IHBhbGxvYzBfYXJyYXkoU3RyaW5nSW5mb0RhdGEsIGNvbHVtbnMpOworCQlyaWRhdGEtPmNv bHN0YXR1cyA9IHBhbGxvYzBfYXJyYXkoY2hhciwgY29sdW1ucyk7CisJCXJpZGF0YS0+bmNvbHMg PSBjb2x1bW5zOworCisJCWZvciAoaW50IGlfb3JpZ2luYWwgPSAwLCBpX2tleSA9IDA7IGlfb3Jp Z2luYWwgPCBvcmlnaW5hbF9kYXRhLT5uY29sczsgaV9vcmlnaW5hbCsrKQorCQl7CisJCQlTdHJp bmdJbmZvCW9yaWdpbmFsX2NvbHZhbHVlOworCisJCQlpZiAoIWJtc19pc19tZW1iZXIoaV9vcmln aW5hbCwgZmtpbmZvLT5jb25rZXlzKSkKKwkJCQljb250aW51ZTsKKworCQkJb3JpZ2luYWxfY29s dmFsdWUgPSAmb3JpZ2luYWxfZGF0YS0+Y29sdmFsdWVzW2lfb3JpZ2luYWxdOworCQkJaW5pdFN0 cmluZ0luZm9FeHQoJnJpZGF0YS0+Y29sdmFsdWVzW2lfa2V5XSwgb3JpZ2luYWxfY29sdmFsdWUt PmxlbiArIDEpOworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcmlkYXRhLT5jb2x2YWx1ZXNb aV9rZXldLCBvcmlnaW5hbF9jb2x2YWx1ZS0+ZGF0YSk7CisKKwkJCXJpZGF0YS0+Y29sc3RhdHVz W2lfa2V5XSA9IG9yaWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpX29yaWdpbmFsXTsKKwkJCWlfa2V5 Kys7CisJCX0KKworCQlyaWtleSA9IHBhbGxvYzBfb2JqZWN0KFJlcGxpY2FJZGVudGl0eUtleSk7 CisJCXJpa2V5LT5yZWxpZCA9IGZraW5mby0+cmVmX3JlbW90ZWlkOworCisJCS8qCisJCSAqIFhY WDogdXNlIExPR0lDQUxSRVBfS0VZX0xPQ0FMX1VOSVFVRSB0byBjb21wYXJlIHdpdGggbG9jYWwg dW5pcXVlCisJCSAqIGluZGV4ZXMuCisJCSAqLworCQlyaWtleS0+a2luZCA9IExPR0lDQUxSRVBf S0VZX0xPQ0FMX1VOSVFVRTsKKwkJcmlrZXktPmRhdGEgPSByaWRhdGE7CisKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CisKKwkJY2hlY2tfZGVwZW5kZW5jeV9sb29rdXBfYnlfa2V5 KHJpa2V5LCBuZXdfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworCX0KK30KKwogLyoK ICAqIENoZWNrIGZvciBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRoYXQgaW52b2x2ZSBpbnNlcnQs IGRlbGV0ZSwgb3IgdXBkYXRlCiAgKiBvcGVyYXRpb25zIG9uIHRoZSBzcGVjaWZpZWQgdGFibGUs IGFuZCByZXR1cm4gdGhlbSBpbiAnZGVwZW5kc19vbl94aWRzJy4KQEAgLTEzMzAsNiArMTQ2MCw5 IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24s IFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVuZGVuY3lfb25fbG9jYWxfa2V5KHJlbGlkLCAm bmV3dHVwLAogCQkJCQkJCQkJCSAgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkgICZkZXBl bmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9mb3JlaWduX2tleShyZWxpZCwg Jm5ld3R1cCwKKwkJCQkJCQkJCQkJbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJJmRlcGVu ZHNfb25feGlkcyk7CiAJCQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVs aWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJ CQlicmVhazsKQEAgLTEzNDYsNiArMTQ3OSw5IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5n ZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCQljaGVja19kZXBl bmRlbmN5X29uX2xvY2FsX2tleShyZWxpZCwgJm9sZHR1cCwKIAkJCQkJCQkJCQkJICBuZXdfZGVw ZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkgICZkZXBlbmRzX29uX3hpZHMpOworCQkJCWNoZWNrX2Rl cGVuZGVuY3lfb25fZm9yZWlnbl9rZXkocmVsaWQsICZvbGR0dXAsCisJCQkJCQkJCQkJCQluZXdf ZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCQkJJmRlcGVuZHNfb25feGlkcyk7CiAJCQkJY2hlY2tf ZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxfc2FmZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLAog CQkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCX0KQEAgLTEzNTYsNiArMTQ5Miw5 IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24s IFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVuZGVuY3lfb25fbG9jYWxfa2V5KHJlbGlkLCAm bmV3dHVwLAogCQkJCQkJCQkJCSAgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkgICZkZXBl bmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9mb3JlaWduX2tleShyZWxpZCwg Jm5ld3R1cCwKKwkJCQkJCQkJCQkJbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJJmRlcGVu ZHNfb25feGlkcyk7CiAJCQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVs aWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJ CQlicmVhazsKQEAgLTEzNjgsNiArMTUwNyw5IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5n ZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVu ZGVuY3lfb25fbG9jYWxfa2V5KHJlbGlkLCAmb2xkdHVwLAogCQkJCQkJCQkJCSAgbmV3X2RlcGVu ZGVkX3hpZCwKIAkJCQkJCQkJCQkgICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVwZW5k ZW5jeV9vbl9mb3JlaWduX2tleShyZWxpZCwgJm9sZHR1cCwKKwkJCQkJCQkJCQkJbmV3X2RlcGVu ZGVkX3hpZCwKKwkJCQkJCQkJCQkJJmRlcGVuZHNfb25feGlkcyk7CiAJCQljaGVja19kZXBlbmRl bmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJ CQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgKaW5kZXggOTE1MmVmZmIyY2QuLmU5MTVmYjUzMjQ2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAtMjIsNiArMjIsMTMg QEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN1YnNjcmliZXJJZHgKIAlCaXRtYXBzZXQgICpp bmRleGtleXM7CS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqb24gcmVtb3RlKiAqLwogfSBMb2dp Y2FsUmVwU3Vic2NyaWJlcklkeDsKIAordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN1YnNjcmli ZXJGSworeworCU9pZAkJCWNvbm9pZDsJCS8qIE9JRCBvZiB0aGUgRksgY29uc3RyYWludCAqLwor CUxvZ2ljYWxSZXBSZWxJZCByZWZfcmVtb3RlaWQ7IC8qIHJlZmVyZW5jZWQgcmVtb3RlIHJlbGlk ICovCisJQml0bWFwc2V0ICAqY29ua2V5czsJLyogQml0bWFwIG9mIGtleSBjb2x1bW5zICpvbiBy ZW1vdGUqICovCit9IExvZ2ljYWxSZXBTdWJzY3JpYmVyRks7CisKIHR5cGVkZWYgc3RydWN0IExv Z2ljYWxSZXBSZWxNYXBFbnRyeQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1vdGVyZWw7CS8q IGtleSBpcyByZW1vdGVyZWwucmVtb3RlaWQgKi8KQEAgLTUwLDYgKzU3LDEwIEBAIHR5cGVkZWYg c3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogCUxpc3QJICAgKmxvY2FsX3VuaXF1ZV9pbmRl eGVzOwogCWJvb2wJCWxvY2FsX3VuaXF1ZV9pbmRleGVzX2NvbGxlY3RlZDsKIAorCS8qIExvY2Fs IGZvcmVpZ24ga2V5cy4gVXNlZCBmb3IgZGVwZW5kZW5jeSB0cmFja2luZyAqLworCUxpc3QJICAg KmxvY2FsX2ZrZXlzOworCWJvb2wJCWxvY2FsX2ZrZXlzX2NvbGxlY3RlZDsKKwogCS8qCiAJICog V2hldGhlciB0aGUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwgb3Igbm90LiBJ dCBpcwogCSAqIGRpc3RpbmdsaXNoIHdoZXRoZXIgZGVmaW5lZCB0cmlnZ2VycyBhcmUgdGhlIGlt bXV0YWJsZSBvciBub3QuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBf cGFyYWxsZWxfYXBwbHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxf YXBwbHkucGwKaW5kZXggOWNiMzk1ZmE0ZDguLjU0MzUyYTVmOWI5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsCkBAIC0yNiw2ICsyNiw4IEBAICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAgICAgIkNSRUFURSBUQUJMRSBy ZWdyZXNzX3RhYiAoaWQgaW50IFBSSU1BUlkgS0VZLCB2YWx1ZSB0ZXh0KTsiKTsKICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAgICAgIklOU0VSVCBJTlRPIHJlZ3Jlc3Nf dGFiIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSwgJ3Rlc3QnKTsiKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIkNSRUFURSBUQUJMRSByZWdyZXNz X3RhYl9mayAoaWQgaW50IFBSSU1BUlkgS0VZLCBmayBpbnQpOyIpOwogCiAjIENyZWF0ZSBhIHB1 YmxpY2F0aW9uCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtNTYs NiArNTgsOCBAQCBteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5z dHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogICAgICJDUkVBVEUgVEFCTEUgcmVncmVzc190YWIgKGlkIGludCBQUklNQVJZ IEtFWSwgdmFsdWUgdGV4dCk7Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKyAgICAiQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGFiX2ZrIChpZCBpbnQgUFJJTUFSWSBL RVksIGZrIGludCBSRUZFUkVOQ0VTIHJlZ3Jlc3NfdGFiIChpZCkpOyIpOwogJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAgICAgIkNSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc19zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiByZWdy ZXNzX3B1YjsiKTsKIApAQCAtMjM2LDggKzI0MCw4IEBAICRoLT5xdWVyeV9zYWZlKCJDT01NSVQ7 Iik7CiAKICMgRW5zdXJlIHN1YnNjcmliZXItbG9jYWwgaW5kZXhlcyBhcmUgYWxzbyB1c2VkIGZv ciB0aGUgZGVwZW5kZW5jeSB0cmFja2luZwogCi0jIFRydW5jYXRlIHRoZSBkYXRhIGZvciB1cGNv bWluZyB0ZXN0cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5D QVRFIFRBQkxFIHJlZ3Jlc3NfdGFiOyIpOworIyBkZWxldGUgdGhlIGRhdGEgZm9yIHVwY29taW5n IHRlc3RzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZS T00gcmVncmVzc190YWI7Iik7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Jl Z3Jlc3Nfc3ViJyk7CiAKICMgRGVmaW5lIGFuIHVuaXF1ZSBpbmRleCBvbiBzdWJzY3JpYmVyCkBA IC0yODgsNyArMjkyLDQ3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9maW5p c2ggd2FpdGluZyBmb3IgZGVwZW5kZWQgeGlkICR4aWQvLCAkb2Zmc2V0CiAKICMgQ2xlYW51cAog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHJlZ3Jl c3NfdGFiX3ZhbHVlX2lkeDsiKTsKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJUUlVOQ0FURSBUQUJMRSByZWdyZXNzX3RhYjsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSByZWdyZXNzX3RhYjsiKTsKICRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKIAorIyBFbnN1cmUgc3Vi c2NyaWJlci1sb2NhbCBpbmRleGVzIGFyZSBhbHNvIHVzZWQgZm9yIHRoZSBkZXBlbmRlbmN5IHRy YWNraW5nCisKKyMgSW5zZXJ0IGFuIGluaXRpYWwgdHVwbGUKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIklOU0VSVCBJTlRPIHJlZ3Jlc3NfdGFiIFZBTFVFUyAo MSwgJ2luaXRpYWwgdHVwbGUnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgncmVncmVzc19zdWInKTsKKworIyBBdHRhY2ggYW4gaW5qZWN0aW9uX3BvaW50LiBQYXJhbGxl bCB3b3JrZXJzIHdvdWxkIHdhaXQgYmVmb3JlIHRoZSBjb21taXQKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jywnd2FpdCcpOyIKKyk7CisKKyMgSW5zZXJ0 IGEgdHVwbGUgb24gcHVibGlzaGVyLiBQYXJhbGxlbCB3b3JrZXIgd291bGQgd2FpdCBhdCB0aGUg aW5qZWN0aW9uCisjIHBvaW50Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKDIsICd0bXAnKTsiKTsKKwor IyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9p bnQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCB3b3JrZXInLAorCSdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOwor Ciskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworIyBJbnNlcnQgdHVw bGVzIG9uIHB1Ymxpc2hlciBhZ2Fpbi4gVGhpcyB0cmFuc2FjdGlvbiB3YWl0cyBmb3IgcmVmZXJy aW5nIHR1cGxlCisjIGlzIGNvbW1pdHRlZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisgICAgIklOU0VSVCBJTlRPIHJlZ3Jlc3NfdGFiX2ZrIFZBTFVFUyAoMSwgMSk7 Iik7CisKKyMgVmVyaWZ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgd2FpdHMgZm9yIHRoZSB0cmFuc2Fj dGlvbgorJHN0ciA9ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci93YWl0IGZvciBk ZXBlbmRlZCB4aWQgKFsxLTldWzAtOV0rKS8sICRvZmZzZXQpOworJHhpZCA9ICRzdHIgPX4gL3dh aXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLzsKKworIyBXYWtldXAgdGhlIHBhcmFs bGVsIHdvcmtlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWwor ICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9y ZS1jb21taXQnKTsKKyAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3BhcmFsbGVs LXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CitdKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyL2ZpbmlzaCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQp OworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcuMwoK --_010_TY7PR01MB1455403538191EE4FA429106FF59FATY7PR01MB14554jp_--