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 1vwyBH-007KDc-1t for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 07:59:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwyBG-00G8W7-1k for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 07:59:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vwyBF-00G8Vz-1o for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 07:59:06 +0000 Received: from mail-japanwestazlp170110001.outbound.protection.outlook.com ([2a01:111:f403:c407::1] helo=OS0P286CU010.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vwyBB-0000000280v-0lqX for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 07:59:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jcnXeYrVBj4gUVP+kXLuTScTT35rgTdG+Jhvm7T+P+WQwYxyJ/UWn65xSbHL2ePfVEgrm4+EGreh2cKXOdmHRKKrN9FRk4Z0wydczNo8kTvbBSympTViM1TxZ5V/CMfs11anSfKIF/DTcIuy2y4XRR1T22/0xK+9caqCSymX8l7Lc9H2ylzov7HLeZiKDiSsMW1SKouIsbHIy/syhlExkBFIKBP6uFsXd0UwjpAh3CyIYkTdNFy+eaWXHE1ccegp3Url0MH5y4dvr3MrxJO/mNhNR3uW+d1bPLmZvTzPSH6BBFBcbq6TTcaoA9Fpg9RY5Du15/ZX/V+vqL2wDDEIgg== 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=na7Clb8dYBsjSxBHZfKgxl/BNcnyJpGpEDS28GssY7o=; b=SNWR0gPA8yEI/vwj8+wvydUBb7Oad2BUHwbtoN6bnFZYf6npTfxUI0CkqQJgAvAWpDhMn6R6OsEdVrhW6vi3Gz9uVAyLBqSHO8DH8IXn9STRm6yttBbE7V15Gn4QQ5pU4FlKEJ0Xw44Kxe7MH9tFVAAJTmts71d/QR3e8J4fvd6aui5Ed2Rvk+4o7q7ZIhjtNhONskTAvWloaqdHSo1AsN89anQPWVhDwZOF/u2UjycG1A4mQRZJhBLViGKBCxPhA0JISvIXwHFMEndLmMVkmao50sxex0xxHrAete1Wmo54mVg74Yvhzi2GHIGBsUkoIiPOw3RcfmIj26cHtfQi9g== 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=na7Clb8dYBsjSxBHZfKgxl/BNcnyJpGpEDS28GssY7o=; b=Dyg2Z8Fx8fydfPJV++bnKY6X5YuNio1SYIMvlX0/Ib0t8ozVlOCmE835hEpJjUugdIj7gPj5wxb7MPW1asjIr5f6ZPBiXBaLsfTjag2VBOTU4NIN2L9TzpT6UgXfS3IFBV/JDfPzgby4roKAB961Y9WSTROA9NDpqaTd7lAxa5+7zZQ+2VwxrrnAvPrDwrLhkGMukdb+J2oj5cVLgIQuAM4mVSmHhbDoKG4BUR/gfVzYk28dorKhlmhFqyCLdn5rF3esA5quxZA4EgA0lSXuytCEFRA3cr9dRjJ/5xk024B76b71ERVj8ZI4XDcxhdWnHbqFOX19a9/9Gao8DlRmyg== Received: from TY4PR01MB16907.jpnprd01.prod.outlook.com (2603:1096:405:338::22) by TYWPR01MB9660.jpnprd01.prod.outlook.com (2603:1096:400:232::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.20; Mon, 2 Mar 2026 07:58:55 +0000 Received: from TY4PR01MB16907.jpnprd01.prod.outlook.com ([fe80::bbb7:659c:a6e:927d]) by TY4PR01MB16907.jpnprd01.prod.outlook.com ([fe80::bbb7:659c:a6e:927d%4]) with mapi id 15.20.9654.015; Mon, 2 Mar 2026 07:58:55 +0000 From: "Zhijie Hou (Fujitsu)" To: "Zhijie Hou (Fujitsu)" , Amit Kapila , Ajin Cherian CC: "Hayato Kuroda (Fujitsu)" , shveta malik , Ashutosh Sharma , PostgreSQL Hackers Subject: RE: [PATCH] Support automatic sequence replication Thread-Topic: [PATCH] Support automatic sequence replication Thread-Index: AQHclMAEzANLvjhWZU6Kdy4EwfRGq7VwxE4AgALLp4CAAdjUAIAAAIgAgAd6mACAAfU5gIAH/IAAgAEknICAACZ5gIAAMc0AgAMzVQCABBduAIAB47QAgABQMgCABLf1qYABZaZQgAMbtXA= Date: Mon, 2 Mar 2026 07:58:54 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-AS, 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?NTBfQWN0aW9uSWQ9MWU2YjAyYmQtM2Y2Zi00YTk1LTk4MDItMzAzNTljOGZh?= =?utf-8?B?NTZhO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZXREYXRlPTIwMjYtMDItMjhUMDg6Mjc6NTdaO01TSVBfTGFiZWxfYTcyOTVj?= =?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: TY4PR01MB16907:EE_|TYWPR01MB9660:EE_ x-ms-office365-filtering-correlation-id: 21dab024-4eb5-4e21-110b-08de78318d25 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|6049299003|38070700021|1580799027|4053099003; x-microsoft-antispam-message-info: MsC9z/XW57Vu/kdpz6alUHD+iQkyvvRaCKxRk1Eg4fas6xIm99xiIPKt/sN8JqyFqSCyW2OuYPkhS6czx8Iy/jD8NtloKotB2+yLcAAaRFWImz5tkpBoD8xj3e9uJDNs0FbGbsvTstXp9ydoNDlae5aaywPiivfQOmZLfbom+H8YnS2Wb7XgjlCLbyaWQkdbl+Si0k0nPn2msFhsmbj+19Qk4JOBYATazs/Bejd1eFIU+XHHPh/f1QeJNsJok2L+wqQDeyDiguPgXfnbUdzC0lrIrEVnMj4++hnr2XiG8mbL+EH8fFr3J9PQyGFaDxl/xh79f0DfHui0gWiG/5VicMIoY5CEdYGOctbuMD3vbUjiHuZMS+TmkLebwvCHu9b39uEQFnFQZtDpelHWPIcIjbaGxAdgo4sfTdAQpy/3nIof25mqlgKafT8qSRMxGBk1quSl1zCBN4CXuEDnKwPbxe2EeIAuHkSFV2pBqjn67S5p2dzvpKpuQOMcvlRC5RjLpeIxxo+7sNUu09XxqBVMTsczajAW+yZYXysQuCbLGnc+y2DsfTjri2ifdn61KUfEFUdlstqHxRTHHxWCFPyeXHQo8NwdBWbDtOpMNtmfhyEaX5R35vu69fJyfZxWuyPnC3t4+7bVxpvK2AyJK6w+LbW/g5HXroVejB6OQ/nsWZr93Fx+Dl5AwFQyNSiJCHs0DtQyv9EKrKUaHuv1awwz5REOBbbItxdZpcbGsVxy7O52gg+w7O6mMAF4jbwG4pZrkNOR9mPy0ATwcHtC16qG2jEXBzHLW2hlWMYtEMwhLGfT4Gx8QEAT6IhVufdFTG2zOt+8DNkGozF4DqSHQGHOIw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY4PR01MB16907.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(6049299003)(38070700021)(1580799027)(4053099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VTFzYTRDdGhjalM3YTIrZVFIWjg1VjdWMm9hN0NESENGU3g3T1ZEeEhmWFAw?= =?utf-8?B?R0I2WGxlcURjUmQwVU82ZlpBYkpSYU5zbExzQUxXYytES1VTNkJOaXdNSVlq?= =?utf-8?B?dUhIT1cyN1d1ZThPMVA4dkRKSVZKLzI4TUZpR0JnbUlHcDNHOGJrZWRXcklS?= =?utf-8?B?QytlTGc2eUlTWmI5bTQ0czR0QndGcUtxVjlGSklXZ3RnM3U0ZUppYXZwM0VT?= =?utf-8?B?U0RzWm9iQ3NIQW9OeEw1UlRnUER3Y0oxS1lZdFBvMzZqa3ZGMFIrZXp0c1pS?= =?utf-8?B?SDRIODgrdnFvZWRJTnpycktaeWJnREJreEpRM01mc0l1UEtRMXFWVFJjTlJJ?= =?utf-8?B?Nk5ndS9iWEJnaElQKzVnMWVLL3FKYTROWFhHMXk3TGEzMTNXRzRNdVlvNk1F?= =?utf-8?B?RVVLZWtINU0xMlIyZjl4UUJEVGlXSDhlby9ucVB1U2IybkpVRGY1UTdaVUgv?= =?utf-8?B?QWZkTHN5OSs1VlRuT0M2Q21XaTFpUE1kS1VkK1dSeDNHTEhjZzFDaU1teGND?= =?utf-8?B?a01CMDdLdldxOElkNkJjMVBNUVhlWTgxd01xOEEzcmpPNzlBUytWRWYxT0ty?= =?utf-8?B?N1FYTW1UZkRSQU1ObkdCcFl4ZWNzOUMyWnpsZzB5Q0d6L0Y1OTNndjRYZWpO?= =?utf-8?B?TDcwSHY5Tmt0TzZhVTBMTE8waWpvdTI1dnU1WXZZYTExUE9NMHlKQk51dzJP?= =?utf-8?B?b0liY21HZGg2S0RRUjYzVU5vK3JVTU5YNnBXK0FQekRqV04zTy9RYWdWUjBo?= =?utf-8?B?ZUFZcVpoM2swRjNoUDFwT2RCRWltQ3B0US9weWV3S0xuZTVlRDI1RlZtYTY1?= =?utf-8?B?L0J2SThTNU9sMUlMLys2My9nbkxoZEZoM1BNM3dtVmJUSkJmc1BHak9xQmx1?= =?utf-8?B?TnN6Qm82TEsrU21vSkdXRWVidUFpWStXQno0R2dJNlZmZ2dCbm5lZE1CZU43?= =?utf-8?B?b1BTM3UzWWUyRHpxRUpvd3VubzVURnV4eVpaNmxqM0lEbGRwVmthNjdJOWlL?= =?utf-8?B?MW5MV0RlN3VLWlJpS2JkcHlLTXEwY3dPZ3ZpTmpwK0MxaFF4QVdZRWVBTHk2?= =?utf-8?B?QVFWNDg0TCtodnZDS2ZERzAveGF5dEdzV3lMKytBc3dHY0RyL0w5bkkwaFAr?= =?utf-8?B?aWwwUVBwVVNJMXVma25UWU15NW1yZFFNVyswR3g2dHhWS0p1SmhpbjdoZkJr?= =?utf-8?B?QWtEVmFKN2xOeVlVVkY3QnhKZGFBMzZIbVhTWTkxcGZwL3NJSXFoV0wwajJC?= =?utf-8?B?VGhHQzhTWUVLaWxLNTJnVGR3a21OQXRtQzNsS0lQelVuSzZ2MGZEZVV0cHZW?= =?utf-8?B?STNRaVI2YVpyYzMwNVorMFR6MnpTbVVvTmNzVWd0Z3MvOHJWMHVic29yNkhr?= =?utf-8?B?eHJZMGNHVlk3T2NBZmxxMDErSDVFU0M1c3pKdUJaQWhEcEd6dTdMUm51L2lS?= =?utf-8?B?OGlzT1pWaXg2NlVmRHNLbHZxc09hWEsySFRPMUJUMlVRaVE5RGt6Y2RPeW9G?= =?utf-8?B?UzhKV2ZuMzhMZjR4ZTVZTmM1bUhZL1ZyTGFoZ2tRcWZWeUFVTmFrYjQ4NDYy?= =?utf-8?B?cGtNV3JoWHIzZ21pTmtBQzdsY1hYbFpGSnpBM2JWVVFqV1BsU3BIL3BJUTJ5?= =?utf-8?B?d2JHSlhiUDR4VDhpMjZNMHE1YkhSakVWeWtNSWJqbXBJd0wxZkN1VzQ0UHlH?= =?utf-8?B?MTBOaVhsdUpIMWlnM2JLaXZ6SWRRREsyODNXSWYxZGUwRlNSdlp4NkRycDV3?= =?utf-8?B?LzBrMEtOYjZHM2FDKytYeW5ib0dNV2xPT0dmUUxpWG5YZC9ucm1LdmZrQmND?= =?utf-8?B?VWcyYytmVmROaGJ0S0ovU2hDZWVjRjdXWHROOURvNGlCWVBtK2xqVUdYMVNZ?= =?utf-8?B?aDNUSkd2RzNMSkZNZHVBbXZSM2t1U1pFQk1XZXZscmVJK2xFZUlZYXk4ajZM?= =?utf-8?B?QWdzQ1FOTlJrTFR1SEl6cFJvQnhCV1EwaFM2ODdvcFg5UUtLQjdBWCtwOWRW?= =?utf-8?B?UHZrcitkZ1pTTURGbTh2YiswUGdncXp0ZElYRTFSUW16MnZpVCtGSTJnZmli?= =?utf-8?B?TVR0VEw2dlRDaTg2MHI0TXo5VlNLMW1ONTNWOHVtb25IUTVsTVFtSzNacjl2?= =?utf-8?B?V04vbDJkbVlQbkZhL1ZhVEZxWHVrczNFUmtkZFZoOG9sZTllZG1pckp1VkxX?= =?utf-8?B?amhTci9tMVNYMjJJRXFGZ1R5Y3FIdENjS0JDWHV3aEFnZHdzUnJiTkxIWnJL?= =?utf-8?B?U0VJSHlMK0h0RlhxUTJ1U2lMYU5DbFAxSHZYODhUUTYxRnY0SXRrZ1JMUnlC?= =?utf-8?B?eksvRi8vMXRzbnVTOTJtM2Z1b3k5QzgwOHVEektncmZmUTFXbVpmdz09?= Content-Type: multipart/mixed; boundary="_003_TY4PR01MB1690715895CDE6FEFA13C2A2C947EATY4PR01MB16907jp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY4PR01MB16907.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21dab024-4eb5-4e21-110b-08de78318d25 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2026 07:58:54.9512 (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: ItiSayi1+M9vJV3K+30NgynRvDoeCMdTLIlGXAdIXUllFoI0YjBZPRpumHKBVMQKZ1qDSKXgjnbw5yni17kB0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB9660 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_TY4PR01MB1690715895CDE6FEFA13C2A2C947EATY4PR01MB16907jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gU2F0dXJkYXksIEZlYnJ1YXJ5IDI4LCAyMDI2IDQ6NDEgUE0gWmhpamllIEhvdSAoRnVqaXRz dSkgPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0KPiBIZXJlIGlzIHRoZSBWOCBwYXRj aCBzZXQgYWRkcmVzc2luZyB0aGUgcHJldmlvdXMgcmV2aWV3IGNvbW1lbnRzOg0KPiANCj4gLSBG b3IgMDAwMSwgSSBub3RpY2VkIHRoYXQgdGhlIEdldFNlcXVlbmNlKCkgZnVuY3Rpb24gYWRkZWQg aW4gdGhlIHBhdGNoDQo+ICAgZmV0Y2hlcyB0aGUgbG9jYWwgc2VxdWVuY2UgdmFsdWUgd2l0aG91 dCBhbnkgcHJpdmlsZWdlIGNoZWNrLiBUaGlzDQo+ICAgYWxsb3dzIHRoZSB3b3JrZXIgdG8gcmVh ZCBzZXF1ZW5jZSBkYXRhIGV2ZW4gd2l0aG91dCBwcm9wZXIgU0VMRUNUDQo+ICAgcHJpdmlsZWdl LCB3aGljaCBzZWVtcyB1bnNhZmUuIEkndmUgYWRkZWQgYSBTRUxFQ1QgcHJpdmlsZWdlIGNoZWNr DQo+ICAgYmVmb3JlIGZldGNoaW5nIHRoZSBzZXF1ZW5jZSB2YWx1ZS4gQWRkaXRpb25hbGx5LCBJ J3ZlIHVwZGF0ZWQgc2V2ZXJhbA0KPiAgIGNvbW1lbnRzLCBtYWRlIGNvc21ldGljIGNoYW5nZXMs IGNvbW1pdCBtZXNzYWdlIHVwZGF0ZSwgYW5kIHJ1bg0KPiAgIHBnaW5kZW50IG9uIGFsbCBwYXRj aGVzLg0KPiANCj4gLSAwMDAyIGluY2x1ZGVzIHRoZSBjaGFuZ2VzIHRvIHN5bmNocm9uaXplIHNl cXVlbmNlcyBkaXJlY3RseSBpbiB0aGUNCj4gICBSRUZSRVNIIFNFUVVFTkNFUyBjb21tYW5kDQoN ClJlYmFzZWQgdGhlIHBhdGNoIHRvIHNpbGVuY2UgY29tcGlsZSB3YXJuaW5nIGR1ZSB0byBhIHJl Y2VudCBjb21taXQNCmEyYzg5ODM1Lg0KDQpCZXN0IFJlZ2FyZHMsDQpIb3UgemoNCg== --_003_TY4PR01MB1690715895CDE6FEFA13C2A2C947EATY4PR01MB16907jp_ Content-Type: application/octet-stream; name="v9-0002-Synchronize-sequences-directly-in-REFRESH-SEQUENC.patch" Content-Description: v9-0002-Synchronize-sequences-directly-in-REFRESH-SEQUENC.patch Content-Disposition: attachment; filename="v9-0002-Synchronize-sequences-directly-in-REFRESH-SEQUENC.patch"; size=17634; creation-date="Mon, 02 Mar 2026 07:57:18 GMT"; modification-date="Mon, 02 Mar 2026 07:58:54 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNWQxN2RiMWU2MWY5MDc4ZGFiMzc0MTdlYmI4ZTA2ZDJhNGJhNzY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE2OjE0OjE0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2OSAy LzJdIFN5bmNocm9uaXplIHNlcXVlbmNlcyBkaXJlY3RseSBpbiBSRUZSRVNIIFNFUVVFTkNFUwog Y29tbWFuZAoKVGhlIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMgY29t bWFuZCBjdXJyZW50bHkgc2V0cyBhbGwKc2VxdWVuY2Ugc3RhdGVzIGluIHBnX3N1YnNjcmlwdGlv bl9yZWwgdG8gSU5JVCBhbmQgcmVsaWVzIG9uIHRoZSBzZXF1ZW5jZSBzeW5jCndvcmtlciB0byBw ZXJmb3JtIHRoZSBhY3R1YWwgc3luY2hyb25pemF0aW9uIGFuZCB1cGRhdGUgc3RhdGVzIHRvIFJF QURZLgoKV2l0aCB0aGUgcmVjZW50IGNoYW5nZSBtYWtpbmcgdGhlIHNlcXVlbmNlIHN5bmMgd29y a2VyIGxvbmctbGl2ZWQsIG1vc3QKc2VxdWVuY2VzIGFyZSBub3cgc3luY2hyb25pemVkIGluIHRo ZSBiYWNrZ3JvdW5kLCByZWR1Y2luZyB0aGUgbmVlZCBmb3IKUkVGUkVTSCBTRVFVRU5DRVMuIEhv d2V2ZXIsIHRoZSBjb21tYW5kIHJlbWFpbnMgbmVjZXNzYXJ5IGZvciBzZXF1ZW5jZXMgdGhhdApo YXZlbid0IGJlZW4gc3luY2hyb25pemVkLgoKVGhpcyBjb21taXQgZW5oYW5jZXMgUkVGUkVTSCBT RVFVRU5DRVMgdG8gc3luY2hyb25pemUgc2VxdWVuY2VzIGRpcmVjdGx5IHdpdGhpbgp0aGUgY29t bWFuZCBpdHNlbGYsIGVsaW1pbmF0aW5nIHRoZSBvdmVyaGVhZCBvZiBsYXVuY2hpbmcgYSB3b3Jr ZXIgYW5kIHVwZGF0aW5nCmNhdGFsb2cgZW50cmllcyB1bm5lY2Vzc2FyaWx5LgotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAxNyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgMTY1ICsrKysrKysrKysr KysrLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwg ICA1ICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgICAgICB8ICA0 OSArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCA1ZTNjMDk2 NGQzOC4uMGE1YWNmZGEwZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmMKQEAgLTEyNDUsMjUgKzEyNDUsMTAgQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaF9zZXEo U3Vic2NyaXB0aW9uICpzdWIpCiAKIAlQR19UUlkoKTsKIAl7Ci0JCUxpc3QJICAgKnN1YnJlbF9z dGF0ZXM7Ci0KIAkJY2hlY2tfcHVibGljYXRpb25zX29yaWdpbl9zZXF1ZW5jZXMod3Jjb25uLCBz dWItPnB1YmxpY2F0aW9ucywgdHJ1ZSwKIAkJCQkJCQkJCQkJc3ViLT5vcmlnaW4sIE5VTEwsIDAs IHN1Yi0+bmFtZSk7CiAKLQkJLyogR2V0IGxvY2FsIHNlcXVlbmNlIGxpc3QuICovCi0JCXN1YnJl bF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMoc3ViLT5vaWQsIGZhbHNlLCB0cnVl LCBmYWxzZSk7Ci0JCWZvcmVhY2hfcHRyKFN1YnNjcmlwdGlvblJlbFN0YXRlLCBzdWJyZWwsIHN1 YnJlbF9zdGF0ZXMpCi0JCXsKLQkJCU9pZAkJCXJlbGlkID0gc3VicmVsLT5yZWxpZDsKLQotCQkJ VXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViLT5vaWQsIHJlbGlkLCBTVUJSRUxfU1RBVEVf SU5JVCwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLCBmYWxzZSk7Ci0JCQllcmVwb3J0 KERFQlVHMSwKLQkJCQkJZXJybXNnX2ludGVybmFsKCJzZXF1ZW5jZSBcIiVzLiVzXCIgb2Ygc3Vi c2NyaXB0aW9uIFwiJXNcIiBzZXQgdG8gSU5JVCBzdGF0ZSIsCi0JCQkJCQkJCQlnZXRfbmFtZXNw YWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQpKSwKLQkJCQkJCQkJCWdldF9yZWxfbmFt ZShyZWxpZCksCi0JCQkJCQkJCQlzdWItPm5hbWUpKTsKLQkJfQorCQlBbHRlclN1YlN5bmNTZXF1 ZW5jZXMod3Jjb25uLCBzdWItPm9pZCwgc3ViLT5uYW1lLCBzdWItPnJ1bmFzb3duZXIpOwogCX0K IAlQR19GSU5BTExZKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2VxdWVuY2VzeW5jLmMKaW5kZXggZmFkMWJiNTQ4YjIuLmI0MDgxMjE2NDc3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTIwOSw3ICsy MDksNyBAQCBnZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBMaXN0ICpzZXFp bmZvcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2b2lkCiByZXBvcnRfc2VxdWVuY2Vf ZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19p ZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQorCQkJ CQkgICBMaXN0ICptaXNzaW5nX3NlcXNfaWR4LCBMaXN0ICpzZXFpbmZvcywgY2hhciAqc3VibmFt ZSkKIHsKIAlTdHJpbmdJbmZvCXNlcXN0cjsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIHJlcG9ydF9z ZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVy bV9zZXFzX2lkeCwKIAllcmVwb3J0KEVSUk9SLAogCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCWVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gZmFpbGVkIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IiwKLQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOworCQkJCSAgIHN1Ym5hbWUpKTsKIH0K IAogLyoKQEAgLTI4Myw2ICsyODMsNyBAQCBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxl VGFibGVTbG90ICpzbG90LCBSZWxhdGlvbiAqc2VxdWVuY2VfcmVsLAogCUhlYXBUdXBsZQl0dXA7 CiAJRm9ybV9wZ19zZXF1ZW5jZSBsb2NhbF9zZXE7CiAJTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAq c2VxaW5mb19sb2NhbDsKKwlMT0NLTU9ERQlsb2NrbW9kZTsKIAogCSpzZXFpZHggPSBEYXR1bUdl dEludDMyKHNsb3RfZ2V0YXR0cihzbG90LCArK2NvbCwgJmlzbnVsbCkpOwogCUFzc2VydCghaXNu dWxsKTsKQEAgLTMyOSw3ICszMzAsMjAgQEAgZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhUdXBs ZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwKIAogCXNlcWluZm9fbG9j YWwtPmZvdW5kX29uX3B1YiA9IHRydWU7CiAKLQkqc2VxdWVuY2VfcmVsID0gdHJ5X3RhYmxlX29w ZW4oc2VxaW5mb19sb2NhbC0+bG9jYWxyZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7CisJLyoKKwkg KiBXZSB0YWtlIGEgc3Ryb25nZXIgbG9jayBkdXJpbmcgRERMIGNvbW1hbmRzIChjdXJyZW50bHkg b25seSBBTFRFUgorCSAqIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMpIHRvIHBy ZXZlbnQgY29uY3VycmVudCBzZXF1ZW5jZXN5bmMKKwkgKiB3b3JrZXJzIGZyb20gdXBkYXRpbmcg dGhlIHBhZ2VfbHNuIHdoaWxlIHRoZSBEREwgaXMgYWxzbyB1cGRhdGluZyB0aGUKKwkgKiBzYW1l IHNlcXVlbmNlLiBUaGlzIGVuc3VyZXMgd2UgY2FuIGFsd2F5cyBmZXRjaCB0aGUgbGF0ZXN0IHBh Z2VfbHNuIHRvCisJICogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlbW90ZSBzZXF1ZW5jZSB2YWx1 ZSBzaG91bGQgYmUgc3luY2hyb25pemVkIChzZWUKKwkgKiB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRl KS4KKwkgKi8KKwlpZiAoSXNMb2dpY2FsV29ya2VyKCkpCisJCWxvY2ttb2RlID0gUm93RXhjbHVz aXZlTG9jazsKKwllbHNlCisJCWxvY2ttb2RlID0gU2hhcmVSb3dFeGNsdXNpdmVMb2NrOworCisJ KnNlcXVlbmNlX3JlbCA9IHRyeV90YWJsZV9vcGVuKHNlcWluZm9fbG9jYWwtPmxvY2FscmVsaWQs IGxvY2ttb2RlKTsKIAogCS8qIFNlcXVlbmNlIHdhcyBjb25jdXJyZW50bHkgZHJvcHBlZD8gKi8K IAlpZiAoISpzZXF1ZW5jZV9yZWwpCkBAIC0zNjcsNyArMzgxLDggQEAgZ2V0X2FuZF92YWxpZGF0 ZV9zZXFfaW5mbyhUdXBsZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwK ICAqIFByZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWluZSBpZiBjb3B5aW5nIHRoZSBzZXF1ZW5j ZSBpcyBhbGxvd2VkLgogICovCiBzdGF0aWMgQ29weVNlcVJlc3VsdAotdmFsaWRhdGVfc2Vxc3lu Y19zdGF0ZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBSZWxhdGlvbiBzZXF1ZW5j ZV9yZWwpCit2YWxpZGF0ZV9zZXFzeW5jX3N0YXRlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNl cWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCwKKwkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9w YWdlX2xzbikKIHsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCU9pZAkJCXNlcW9pZCA9IHNlcWlu Zm8tPmxvY2FscmVsaWQ7CkBAIC0zNzcsNiArMzkyLDE2IEBAIHZhbGlkYXRlX3NlcXN5bmNfc3Rh dGUoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVs KQogCS8qIFBlcmZvcm0gZHJpZnQgY2hlY2sgaWYgaXQncyBub3QgdGhlIGluaXRpYWwgc3luYyAq LwogCWlmIChzZXFpbmZvLT5yZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkpCiAJeworCQkv KgorCQkgKiBTa2lwIHN5bmNocm9uaXphdGlvbiBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBvdXRkYXRl ZCBzZXF1ZW5jZSBpbmZvCisJCSAqIGJhc2VkIG9uIHRoZSBMU04uIFRoaXMgb2NjdXJzIHdoZW4g dGhlIHNlcXVlbmNlIGhhcyBiZWVuIHVwZGF0ZWQgdG8KKwkJICogbW9yZSByZWNlbnQgZGF0YSBj b25jdXJyZW50bHkgKHZpYSBlaXRoZXIgQUxURVIgU1VCU0NSSVBUSU9OIC4uLgorCQkgKiBSRUZS RVNIIFNFUVVFTkNFUyBvciB0aGUgc2VxdWVuY2VzeW5jIHdvcmtlcikuCisJCSAqLworCQlpZiAo WExvZ1JlY1B0cklzVmFsaWQobG9jYWxfcGFnZV9sc24pICYmCisJCQlsb2NhbF9wYWdlX2xzbiA+ IHNlcWluZm8tPnBhZ2VfbHNuKQorCQkJcmV0dXJuIENPUFlTRVFfTk9fRFJJRlQ7CisKIAkJLyoK IAkJICogVmVyaWZ5IHRoYXQgdGhlIGN1cnJlbnQgdXNlciBoYXMgU0VMRUNUIHByaXZpbGVnZSBv biB0aGUgc2VxdWVuY2UuCiAJCSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gcmVhZCB0aGUgc2VxdWVu Y2Ugc3RhdGUgYmVsb3cuCkBAIC0zOTAsOSArNDE1LDMyIEBAIHZhbGlkYXRlX3NlcXN5bmNfc3Rh dGUoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVs KQogCQlHZXRTZXF1ZW5jZShzZXF1ZW5jZV9yZWwsICZsb2NhbF9sYXN0X3ZhbHVlLCAmbG9jYWxf aXNfY2FsbGVkKTsKIAogCQkvKgotCQkgKiBTa2lwIHN5bmNocm9uaXphdGlvbiBpZiB0aGUgc2Vx dWVuY2UgaXMgYWxyZWFkeSBpbiBSRUFEWSBzdGF0ZSBhbmQKLQkJICogaGFzIG5vdCBkcmlmdGVk IGZyb20gdGhlIHB1Ymxpc2hlcidzIHZhbHVlLgorCQkgKiBTa2lwIHN5bmNocm9uaXphdGlvbiBp ZiB0aGUgbG9jYWwgc2VxdWVuY2UgdmFsdWUgaXMgYWxyZWFkeSBhaGVhZCBvZgorCQkgKiB0aGUg cHVibGlzaGVyJ3MgdmFsdWUuCisJCSAqCisJCSAqIFhYWCBUaGlzIG9jY3VycyBub3Qgb25seSB3 aGVuIHRoZSBsb2NhbCBzZXF1ZW5jZSBoYXMgYmVlbgorCQkgKiBzeW5jaHJvbml6ZWQgdG8gYSBu ZXdlciB2YWx1ZSBmcm9tIHRoZSBwdWJsaXNoZXIgKHdoZXJlIHNraXBwaW5nIGlzCisJCSAqIG5l Y2Vzc2FyeSB0byBhdm9pZCBiYWNrd2FyZCBtb3ZlbWVudCksIGJ1dCBhbHNvIHdoZW4gdGhlIGxv Y2FsCisJCSAqIHNlcXVlbmNlIGhhcyBiZWVuIG1hbnVhbGx5IHVwZGF0ZWQgYnkgdGhlIHVzZXIg b24gdGhlIHN1YnNjcmliZXIuIFRoZQorCQkgKiBsYXR0ZXIgY291bGQgYmUgY29uc2lkZXJlZCBh IHJlcGxpY2F0aW9uIGNvbmZsaWN0LCBhbmQgb3ZlcndyaXRpbmcKKwkJICogdGhlIHVzZXIncyB1 cGRhdGUgbWlnaHQgYmUgYWNjZXB0YWJsZS4gSG93ZXZlciwgc2luY2Ugd2UgY2Fubm90CisJCSAq IGVhc2lseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZXNlIHR3byBzY2VuYXJpb3MsIHdlIGNob29z ZSB0byBza2lwCisJCSAqIHN5bmNocm9uaXphdGlvbiBpbiBhbGwgY2FzZXMgYW5kIGVtaXQgYSBX QVJOSU5HIHRvIG5vdGlmeSB0aGUgdXNlciB0bworCQkgKiBtYW51YWxseSByZXNvbHZlIHRoZSBj b25mbGljdC4KIAkJICovCisJCWlmIChsb2NhbF9sYXN0X3ZhbHVlID4gc2VxaW5mby0+bGFzdF92 YWx1ZSkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQllcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQllcnJtc2coInNraXBwZWQgc3lu Y2hyb25pemluZyB0aGUgc2VxdWVuY2UgXCIlcy4lc1wiIiwKKwkJCQkJCSAgIHNlcWluZm8tPm5z cG5hbWUsIHNlcWluZm8tPnNlcW5hbWUpLAorCQkJCQllcnJkZXRhaWwoIlRoZSBsb2NhbCBsYXN0 X3ZhbHVlICVsbGQgaXMgYWhlYWQgb2YgdGhlIG9uZSBvbiBwdWJsaXNoZXIiLAorCQkJCQkJCSAg KGxvbmcgbG9uZyBpbnQpIGxvY2FsX2xhc3RfdmFsdWUpKTsKKworCQkJcmV0dXJuIENPUFlTRVFf Tk9fRFJJRlQ7CisJCX0KKworCQkvKiBTa2lwIHN5bmNocm9uaXphdGlvbiBpZiB0aGUgc2VxdWVu Y2UgaGFzbid0IGRyaWZ0ZWQgKi8KIAkJaWYgKGxvY2FsX2xhc3RfdmFsdWUgPT0gc2VxaW5mby0+ bGFzdF92YWx1ZSAmJgogCQkJbG9jYWxfaXNfY2FsbGVkID09IHNlcWluZm8tPmlzX2NhbGxlZCkK IAkJCXJldHVybiBDT1BZU0VRX05PX0RSSUZUOwpAQCAtNDEzLDEyICs0NjEsMTYgQEAgdmFsaWRh dGVfc2Vxc3luY19zdGF0ZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBSZWxhdGlv biBzZXF1ZW5jZV9yZWwpCiAgKiBzeW5jaHJvbml6ZWQuCiAgKi8KIHN0YXRpYyBDb3B5U2VxUmVz dWx0Ci1jb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0 aW9uIHNlcXVlbmNlX3JlbCkKK2NvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAq c2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsLAorCQkJICBPaWQgc3ViaWQsIGJvb2wgcnVu X2FzX293bmVyKQogewogCVVzZXJDb250ZXh0IHVjeHQ7Ci0JYm9vbAkJcnVuX2FzX293bmVyID0g TXlTdWJzY3JpcHRpb24tPnJ1bmFzb3duZXI7CiAJT2lkCQkJc2Vxb2lkID0gc2VxaW5mby0+bG9j YWxyZWxpZDsKIAlDb3B5U2VxUmVzdWx0IHJlc3VsdDsKKwlYTG9nUmVjUHRyCWxvY2FsX3BhZ2Vf bHNuOworCisJKHZvaWQpIEdldFN1YnNjcmlwdGlvblJlbFN0YXRlKHN1YmlkLCBSZWxhdGlvbkdl dFJlbGlkKHNlcXVlbmNlX3JlbCksCisJCQkJCQkJCSAgICZsb2NhbF9wYWdlX2xzbik7CiAKIAkv KgogCSAqIElmIHRoZSB1c2VyIGRpZCBub3Qgb3B0IHRvIHJ1biBhcyB0aGUgb3duZXIgb2YgdGhl IHN1YnNjcmlwdGlvbgpAQCAtNDI3LDcgKzQ3OSw3IEBAIGNvcHlfc2VxdWVuY2UoTG9naWNhbFJl cFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsKQogCWlmICghcnVu X2FzX293bmVyKQogCQlTd2l0Y2hUb1VudHJ1c3RlZFVzZXIoc2VxdWVuY2VfcmVsLT5yZF9yZWwt PnJlbG93bmVyLCAmdWN4dCk7CiAKLQlyZXN1bHQgPSB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRlKHNl cWluZm8sIHNlcXVlbmNlX3JlbCk7CisJcmVzdWx0ID0gdmFsaWRhdGVfc2Vxc3luY19zdGF0ZShz ZXFpbmZvLCBzZXF1ZW5jZV9yZWwsIGxvY2FsX3BhZ2VfbHNuKTsKIAogCWlmIChyZXN1bHQgIT0g Q09QWVNFUV9TVUNDRVNTKQogCXsKQEAgLTQ1NCw4ICs1MDYsOSBAQCBjb3B5X3NlcXVlbmNlKExv Z2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCkKIAkg KiBSZWNvcmQgdGhlIHJlbW90ZSBzZXF1ZW5jZSdzIExTTiBpbiBwZ19zdWJzY3JpcHRpb25fcmVs IGFuZCBtYXJrIHRoZQogCSAqIHNlcXVlbmNlIGFzIFJFQURZIGlmIHVwZGF0aW5nIGEgc2VxdWVu Y2UgdGhhdCBpcyBpbiBJTklUIHN0YXRlLgogCSAqLwotCWlmIChzZXFpbmZvLT5yZWxzdGF0ZSA9 PSBTVUJSRUxfU1RBVEVfSU5JVCkKLQkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJz Y3JpcHRpb24tPm9pZCwgc2Vxb2lkLCBTVUJSRUxfU1RBVEVfUkVBRFksCisJaWYgKHNlcWluZm8t PnJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9JTklUIHx8CisJCXNlcWluZm8tPnBhZ2VfbHNuICE9 IGxvY2FsX3BhZ2VfbHNuKQorCQlVcGRhdGVTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWJpZCwgc2Vx b2lkLCBTVUJSRUxfU1RBVEVfUkVBRFksCiAJCQkJCQkJCSAgIHNlcWluZm8tPnBhZ2VfbHNuLCBm YWxzZSk7CiAKIAlyZXR1cm4gQ09QWVNFUV9TVUNDRVNTOwpAQCAtNDcxLDcgKzUyNCw4IEBAIGNv cHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2Vx dWVuY2VfcmVsKQogICogUmV0dXJucyB0cnVlL2ZhbHNlIGlmIGFueSBzZXF1ZW5jZXMgd2VyZSBh Y3R1YWxseSBjb3BpZWQuCiAgKi8KIHN0YXRpYyBib29sCi1jb3B5X3NlcXVlbmNlcyhXYWxSZWNl aXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQorY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2 ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcywgT2lkIHN1YmlkLCBjaGFyICpzdWJuYW1lLAor CQkJICAgYm9vbCBydW5hc293bmVyKQogewogCWludAkJCWN1cl9iYXRjaF9iYXNlX2luZGV4ID0g MDsKIAlpbnQJCQluX3NlcWluZm9zID0gbGlzdF9sZW5ndGgoc2VxaW5mb3MpOwpAQCAtNDk3LDEx ICs1NTEsMTYgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpz ZXFpbmZvcykKIAkJaW50CQkJYmF0Y2hfbm9fZHJpZnQgPSAwOwogCQlpbnQJCQliYXRjaF9taXNz aW5nX2NvdW50OwogCQlSZWxhdGlvbglzZXF1ZW5jZV9yZWwgPSBOVUxMOworCQlib29sCQlzdGFy dGVkX3R4ID0gZmFsc2U7CiAKIAkJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCQlUdXBsZVRhYmxl U2xvdCAqc2xvdDsKIAotCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlpZiAoIUlzVHJh bnNhY3Rpb25TdGF0ZSgpKQorCQl7CisJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJ c3RhcnRlZF90eCA9IHRydWU7CisJCX0KIAogCQlmb3IgKGludCBpZHggPSBjdXJfYmF0Y2hfYmFz ZV9pbmRleDsgaWR4IDwgbl9zZXFpbmZvczsgaWR4KyspCiAJCXsKQEAgLTU5NywxNCArNjU2LDE1 IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3Mp CiAJCQkgKiBzZXF1ZW5jZXMgaW4gUkVBRFkgc3RhdGUsIG9ubHkgc3luYyBpZiB0aGVyZSdzIGRy aWZ0LgogCQkJICovCiAJCQlpZiAoc3luY19zdGF0dXMgPT0gQ09QWVNFUV9TVUNDRVNTKQotCQkJ CXN5bmNfc3RhdHVzID0gY29weV9zZXF1ZW5jZShzZXFpbmZvLCBzZXF1ZW5jZV9yZWwpOworCQkJ CXN5bmNfc3RhdHVzID0gY29weV9zZXF1ZW5jZShzZXFpbmZvLCBzZXF1ZW5jZV9yZWwsCisJCQkJ CQkJCQkJCXN1YmlkLCBydW5hc293bmVyKTsKIAogCQkJc3dpdGNoIChzeW5jX3N0YXR1cykKIAkJ CXsKIAkJCQljYXNlIENPUFlTRVFfU1VDQ0VTUzoKIAkJCQkJZWxvZyhERUJVRzEsCiAJCQkJCQkg ImxvZ2ljYWwgcmVwbGljYXRpb24gc3luY2hyb25pemF0aW9uIGhhcyB1cGRhdGVkIHNlcXVlbmNl IFwiJXMuJXNcIiBpbiBzdWJzY3JpcHRpb24gXCIlc1wiIiwKLQkJCQkJCSBzZXFpbmZvLT5uc3Bu YW1lLCBzZXFpbmZvLT5zZXFuYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisJCQkJCQkgc2Vx aW5mby0+bnNwbmFtZSwgc2VxaW5mby0+c2VxbmFtZSwgc3VibmFtZSk7CiAJCQkJCWJhdGNoX3N1 Y2NlZWRlZF9jb3VudCsrOwogCQkJCQlzZXF1ZW5jZV9jb3BpZWQgPSB0cnVlOwogCQkJCQlicmVh azsKQEAgLTYxMiw5ICs2NzIsOCBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNv bm4sIExpc3QgKnNlcWluZm9zKQogCQkJCWNhc2UgQ09QWVNFUV9NSVNNQVRDSDoKIAogCQkJCQkv KgotCQkJCQkgKiBSZW1lbWJlciBtaXNtYXRjaGVkIHNlcXVlbmNlcyBpbiBTZXF1ZW5jZVN5bmND b250ZXh0Ci0JCQkJCSAqIHNpbmNlIHRoZXNlIHdpbGwgYmUgdXNlZCBhZnRlciB0aGUgdHJhbnNh Y3Rpb24gaXMKLQkJCQkJICogY29tbWl0dGVkLgorCQkJCQkgKiBSZW1lbWJlciBtaXNtYXRjaGVk IHNlcXVlbmNlcyBpbiBTZXF1ZW5jZVN5bmNDb250ZXh0IHNpbmNlCisJCQkJCSAqIHRoZXNlIHdp bGwgYmUgdXNlZCBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgogCQkJCQkgKi8K IAkJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRleHQp OwogCQkJCQltaXNtYXRjaGVkX3NlcXNfaWR4ID0gbGFwcGVuZF9pbnQobWlzbWF0Y2hlZF9zZXFz X2lkeCwKQEAgLTY4MCwxMyArNzM5LDE3IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29u biAqY29ubiwgTGlzdCAqc2VxaW5mb3MpCiAKIAkJZWxvZyhERUJVRzEsCiAJCQkgImxvZ2ljYWwg cmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIC0gYmF0Y2ggIyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNjZWVkZWQsICVkIG1pc21hdGNo ZWQsICVkIGluc3VmZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNzaW5nIGZyb20gcHVibGlzaGVy LCAlZCBza2lwcGVkLCAlZCBubyBkcmlmdCIsCi0JCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJ CQkgc3VibmFtZSwKIAkJCSAoY3VyX2JhdGNoX2Jhc2VfaW5kZXggLyBNQVhfU0VRVUVOQ0VTX1NZ TkNfUEVSX0JBVENIKSArIDEsCiAJCQkgYmF0Y2hfc2l6ZSwgYmF0Y2hfc3VjY2VlZGVkX2NvdW50 LCBiYXRjaF9taXNtYXRjaGVkX2NvdW50LAogCQkJIGJhdGNoX2luc3VmZnBlcm1fY291bnQsIGJh dGNoX21pc3NpbmdfY291bnQsIGJhdGNoX3NraXBwZWRfY291bnQsIGJhdGNoX25vX2RyaWZ0KTsK IAotCQkvKiBDb21taXQgdGhpcyBiYXRjaCwgYW5kIHByZXBhcmUgZm9yIG5leHQgYmF0Y2ggKi8K LQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCS8qCisJCSAqIENvbW1pdCB0aGlzIGJh dGNoIGlmIHN0YXJ0ZWQgYSB0cmFuc2FjdGlvbiwgYW5kIHByZXBhcmUgZm9yIG5leHQKKwkJICog YmF0Y2guCisJCSAqLworCQlpZiAoc3RhcnRlZF90eCkKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCiAJCWlmIChiYXRjaF9taXNzaW5nX2NvdW50KQogCQl7CkBAIC03MTEsNyArNzc0 LDcgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZv cykKIAogCS8qIFJlcG9ydCBtaXNtYXRjaGVzLCBwZXJtaXNzaW9uIGlzc3Vlcywgb3IgbWlzc2lu ZyBzZXF1ZW5jZXMgKi8KIAlyZXBvcnRfc2VxdWVuY2VfZXJyb3JzKG1pc21hdGNoZWRfc2Vxc19p ZHgsIGluc3VmZnBlcm1fc2Vxc19pZHgsCi0JCQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4LCBzZXFp bmZvcyk7CisJCQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4LCBzZXFpbmZvcywgc3VibmFtZSk7CiAK IAlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwogfQpAQCAtNzIzLDIwICs3ODYsMjMgQEAgY29weV9z ZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcykKICAqIFJldHVy bnMgdHJ1ZSBpZiBzZXF1ZW5jZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgKi8KIHN0YXRpYyBib29s Ci1Mb2dpY2FsUmVwU3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCitMb2dpY2Fs UmVwU3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIE9pZCBzdWJpZCwgY2hhciAq c3VibmFtZSwKKwkJCQkJCWJvb2wgcnVuYXNvd25lcikKIHsKIAlSZWxhdGlvbglyZWw7CiAJSGVh cFR1cGxlCXR1cDsKIAlTY2FuS2V5RGF0YSBza2V5WzFdOwogCVN5c1NjYW5EZXNjIHNjYW47Ci0J T2lkCQkJc3ViaWQgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkOwogCWJvb2wJCXNlcXVlbmNl X2NvcGllZCA9IGZhbHNlOwogCUxpc3QJICAgKnNlcWluZm9zID0gTklMOwogCU1lbW9yeUNvbnRl eHQgb2xkY3R4OworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCUFzc2VydChTZXF1ZW5j ZVN5bmNDb250ZXh0KTsKLQotCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJaWYgKCFJc1Ry YW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0 YXJ0ZWRfdHggPSB0cnVlOworCX0KIAogCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVs UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtNzk2LDcgKzg2Miw4IEBAIExvZ2lj YWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAlzeXN0YWJsZV9lbmRz Y2FuKHNjYW4pOwogCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAotCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKIAogCS8qCiAJICogRXhpdCBlYXJseSBpZiBubyBjYXRhbG9nIGVudHJp ZXMgZm91bmQsIGxpa2VseSBkdWUgdG8gY29uY3VycmVudCBkcm9wcy4KQEAgLTgwNSw3ICs4NzIs OCBAQCBMb2dpY2FsUmVwU3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJCXJl dHVybiBmYWxzZTsKIAogCS8qIFByb2Nlc3Mgc2VxdWVuY2VzICovCi0Jc2VxdWVuY2VfY29waWVk ID0gY29weV9zZXF1ZW5jZXMoY29ubiwgc2VxaW5mb3MpOworCXNlcXVlbmNlX2NvcGllZCA9IGNv cHlfc2VxdWVuY2VzKGNvbm4sIHNlcWluZm9zLCBzdWJpZCwgc3VibmFtZSwKKwkJCQkJCQkJCSBy dW5hc293bmVyKTsKIAogCXJldHVybiBzZXF1ZW5jZV9jb3BpZWQ7CiB9CkBAIC04ODAsNyArOTQ4 LDEwIEBAIHN0YXJ0X3NlcXVlbmNlX3N5bmModm9pZCkKIAkJCS8qCiAJCQkgKiBTeW5jaHJvbml6 ZSBhbGwgc2VxdWVuY2VzIChib3RoIFJFQURZIGFuZCBJTklUIHN0YXRlcykuCiAJCQkgKi8KLQkJ CXNlcXVlbmNlX2NvcGllZCA9IExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKExvZ1JlcFdvcmtlcldh bFJjdkNvbm4pOworCQkJc2VxdWVuY2VfY29waWVkID0gTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMo TG9nUmVwV29ya2VyV2FsUmN2Q29ubiwKKwkJCQkJCQkJCQkJCQkgIE15U3Vic2NyaXB0aW9uLT5v aWQsCisJCQkJCQkJCQkJCQkJICBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQkJCQkg IE15U3Vic2NyaXB0aW9uLT5ydW5hc293bmVyKTsKIAogCQkJTWVtb3J5Q29udGV4dFJlc2V0KFNl cXVlbmNlU3luY0NvbnRleHQpOwogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CkBA IC05NDIsMyArMTAxMywzNyBAQCBTZXF1ZW5jZVN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQogCiAJRmluaXNoU3luY1dvcmtlcigpOwogfQorCisvKgorICogV3JhcHBlciBmb3IgTG9naWNh bFJlcFN5bmNTZXF1ZW5jZXMgdG8gc3luY2hyb25pemUgYWxsIHNlcXVlbmNlcyBvZiBhCisgKiBz dWJzY3JpcHRpb24gZnJvbSBvdXRzaWRlIHRoZSBzZXF1ZW5jZXN5bmMgd29ya2VyCisgKi8KK3Zv aWQKK0FsdGVyU3ViU3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIE9pZCBzdWJp ZCwgY2hhciAqc3VibmFtZSwKKwkJCQkJICBib29sIHJ1bmFzb3duZXIpCit7CisJLyoKKwkgKiBJ bml0IHRoZSBTZXF1ZW5jZVN5bmNDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIHRoZSBz ZXF1ZW5jZQorCSAqIHN5bmNocm9uaXphdGlvbi4KKwkgKi8KKwlTZXF1ZW5jZVN5bmNDb250ZXh0 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJ CQkJIlNlcXVlbmNlU3luY0NvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9T SVpFUyk7CisKKwlQR19UUlkoKTsKKwl7CisJCU1lbW9yeUNvbnRleHQJb2xkY3R4OworCisJCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKworCQlM b2dpY2FsUmVwU3luY1NlcXVlbmNlcyhjb25uLCBzdWJpZCwgc3VibmFtZSwgcnVuYXNvd25lcik7 CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCVBHX0ZJTkFMTFkoKTsK Kwl7CisJCU1lbW9yeUNvbnRleHREZWxldGUoU2VxdWVuY2VTeW5jQ29udGV4dCk7CisJCVNlcXVl bmNlU3luY0NvbnRleHQgPSBOVUxMOworCX0KKwlQR19FTkRfVFJZKCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggN2Q3NDhhMjhkYTguLjczYWZkNzg1M2Qw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xNCw2ICsxNCw4 IEBACiAKICNpbmNsdWRlIDxzaWduYWwuaD4KIAorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgiCisKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFy YWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOwogCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpOwpAQCAtMzEsNCArMzMsNyBAQCBleHRlcm4gdm9pZCBMb2dpY2FsUmVw V29ya2Vyc1dha2V1cEF0Q29tbWl0KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIEF0RU9YYWN0 X0xvZ2ljYWxSZXBXb3JrZXJzKGJvb2wgaXNDb21taXQpOwogCitleHRlcm4gdm9pZCBBbHRlclN1 YlN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBPaWQgc3ViaWQsCisJCQkJCQkJ CSAgY2hhciAqc3VibmFtZSwgYm9vbCBydW5hc293bmVyKTsKKwogI2VuZGlmCQkJCQkJCS8qIExP R0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2 X3NlcXVlbmNlcy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwK aW5kZXggMWQ4MTUxOGZlMjIuLjlhNjFiN2JkMGM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNl9zZXF1ZW5jZXMucGwKQEAgLTE3Niw0ICsxNzYsNTMgQEAgJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAogCXFyL1dBUk5JTkc6ICggW0EtWjAtOV0rOik/IG1pc3Npbmcgc2VxdWVu Y2Ugb24gcHVibGlzaGVyIFwoInB1YmxpYy5yZWdyZXNzX3M0IlwpLywKIAkkbG9nX29mZnNldCk7 CiAKKyMjIyMjIyMjIyMKKyMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNF UyBzeW5jaHJvbml6ZXMgc2VxdWVuY2VzIG9ubGluZSwKKyMgZWxpbWluYXRpbmcgdGhlIG5lZWQg dG8gbGF1bmNoIGEgc2VxdWVuY2VzeW5jIHdvcmtlci4KKyMjIyMjIyMjIyMKKworIyBSZWR1Y2Ug bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyB0byBkaXNhbGxvdyBzZXF1ZW5jZSB3b3Jr ZXIgZnJvbSBydW5uaW5nCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwlxcShtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMCkpOworJG5v ZGVfc3Vic2NyaWJlci0+cmVzdGFydDsKKworIyBWZXJpZnkgdGhlcmUgaXMgbm8gbG9naWNhbCBy ZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgcnVubmluZworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19z dGF0X2FjdGl2aXR5IFdIRVJFIGJhY2tlbmRfdHlwZSA9ICdsb2dpY2FsIHJlcGxpY2F0aW9uIGFw cGx5IHdvcmtlciciKTsKKworaXMoJHJlc3VsdCwgJzAnLCAnbm8gbG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXIgaXMgcnVubmluZycpOworCisjIEluY3JlbWVudCBzZXF1ZW5jZSBvbiBwdWJsaXNo ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXEoU0VMRUNUIG5l eHR2YWwoJ3JlZ3Jlc3NfczEnKTspKTsKKworIyBUaGUgY29tbWFuZCBzaG91bGQgZmFpbCBkdWUg dG8gbWlzc2luZyBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczQnKQorbXkgKCRjbWRyZXQsICRzdGRvdXQs ICRzdGRlcnIpID0gJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc19zZXFfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOyIpOworCitsaWtl KAorCSRzdGRlcnIsCisJcXIvV0FSTklORzogIG1pc3Npbmcgc2VxdWVuY2Ugb24gcHVibGlzaGVy IFwoInB1YmxpYy5yZWdyZXNzX3M0IlwpLywKKwkib3V0cHV0IHRoZSB3YW5yaW5nIGZvciB0aGUg bWlzc2luZyBzZXF1ZW5jZSByZWdyZXNzX3M0Iik7CisKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9F UlJPUjogIGxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZhaWxl ZCBmb3Igc3Vic2NyaXB0aW9uIFwicmVncmVzc19zZXFfc3ViXCIvLAorCSJ0aGUgY29tbWFuZCBm YWlsZWQgZHVlIHRvIHRoZSBtaXNzaW5nIHNlcXVlbmNlIHJlZ3Jlc3NfczQiKTsKKworIyBSZWZy ZXNoIHRoZSBwdWJsaWNhdGlvbiB0byByZW1vdmUgdGhlIG1pc3Npbmcgc2VxdWVuY2UKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc19zZXFfc3ViIFJFRlJFU0ggUFVCTElDQVRJT047Iik7CisKKyMgU3luYyB0aGUgc2Vx dWVuY2UgcmVncmVzc19zMQorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3NlcV9zdWIgUkVGUkVTSCBTRVFVRU5DRVM7 Iik7CisKKyMgR2V0IHRoZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcShTRUxF Q1QgbGFzdF92YWx1ZSBGUk9NIHJlZ3Jlc3NfczE7KSk7CisKK2lzKCRyZXN1bHQsICcyMDEnLCAn c2VxdWVuY2UgcmVncmVzc19zMSBpcyBzeW5jZWQgbm93Jyk7CisKIGRvbmVfdGVzdGluZygpOwot LSAKMi41MS4xLndpbmRvd3MuMQoK --_003_TY4PR01MB1690715895CDE6FEFA13C2A2C947EATY4PR01MB16907jp_ Content-Type: application/octet-stream; name="v9-0001-Support-automatic-sequence-replication.patch" Content-Description: v9-0001-Support-automatic-sequence-replication.patch Content-Disposition: attachment; filename="v9-0001-Support-automatic-sequence-replication.patch"; size=42563; creation-date="Mon, 02 Mar 2026 07:57:18 GMT"; modification-date="Mon, 02 Mar 2026 07:58:54 GMT" Content-Transfer-Encoding: base64 RnJvbSA2NDE1MzJjNmIzMDM0YzM0NTk2OGQ3NDIxNTU3NmY3MDIwZWU1MzdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IEZlYiAyMDI2IDIxOjM3OjAxICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2OSAxLzJd IFN1cHBvcnQgYXV0b21hdGljIHNlcXVlbmNlIHJlcGxpY2F0aW9uLgoKQ3VycmVudGx5LCBzZXF1 ZW5jZSB2YWx1ZXMgYXJlIHN5bmNocm9uaXplZCBmcm9tIHB1Ymxpc2hlciB0byBzdWJzY3JpYmVy IG9ubHkKd2hlbiB0aGUgdXNlciBtYW51YWxseSBydW5zIEFMVEVSIFNVQlNDUklQVElPTiAuLi4g UkVGUkVTSCBQVUJMSUNBVElPTiAod2hpY2gKYWZmZWN0cyBvbmx5IG5ld2x5IHN1YnNjcmliZWQg c2VxdWVuY2VzKSBvciBSRUZSRVNIIFNFUVVFTkNFUy4gVGhlIHNlcXVlbmNlIHN5bmMKd29ya2Vy IGV4aXRzIGltbWVkaWF0ZWx5IGFmdGVyIGNvbXBsZXRpbmcgZWFjaCBzeW5jaHJvbml6YXRpb24g cm91bmQuCgpUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3Igc2VxdWVuY2UgcmVwbGljYXRpb24gaXMg ZHVyaW5nIHVwZ3JhZGVzLCB3aGVyZSBpdCdzCnJlY29tbWVuZGVkIHRoYXQgdXNlcnMgZW5zdXJl IHNlcXVlbmNlcyBhcmUgaW4gc3luYyBieSBydW5uaW5nIFJFRlJFU0ggU0VRVUVOQ0VTCmJlZm9y ZSBmaW5pc2hpbmcgdGhlIHVwZ3JhZGUuIEhvd2V2ZXIsIHRoaXMgY29tbWFuZCBjYW4gYmUgc2xv dyB3aGVuCnN5bmNocm9uaXppbmcgYSBsYXJnZSBudW1iZXIgb2Ygc2VxdWVuY2VzLCBwb3RlbnRp YWxseSBpbmNyZWFzaW5nIGRvd250aW1lLgoKVG8gYWRkcmVzcyB0aGlzLCB0aGlzIGNvbW1pdCBt YWtlcyB0aGUgc2VxdWVuY2Ugc3luYyB3b3JrZXIgbG9uZy1saXZlZCwKY29udGludW91c2x5IG1v bml0b3Jpbmcgc2VxdWVuY2VzIGFuZCByZXN5bmNocm9uaXppbmcgdGhlbSB3aGVuIGRyaWZ0IGlz CmRldGVjdGVkLiBUaGUgd29ya2VyIHVzZXMgYW4gYWRhcHRpdmUgc2xlZXAgaW50ZXJ2YWw6IGl0 IHN0YXJ0cyBhdCAyIHNlY29uZHMsCmRvdWJsZXMgdXAgdG8gYSBtYXhpbXVtIG9mIDMwIHNlY29u ZHMgd2hlbiBubyBkcmlmdCBpcyBvYnNlcnZlZCwgYW5kIHJlc2V0cyB0bwp0aGUgbWluaW11bSBp bnRlcnZhbCBvbmNlIGRyaWZ0IGlzIGZvdW5kLgoKV2l0aCB0aGlzIGNoYW5nZSwgbW9zdCBzZXF1 ZW5jZXMgYXJlIHNpbGVudGx5IHN5bmNocm9uaXplZCBpbiB0aGUgYmFja2dyb3VuZCwKZWxpbWlu YXRpbmcgdGhlIG5lZWQgdG8gcnVuIFJFRlJFU0ggU0VRVUVOQ0VTIGZvciB0aGUgbWFqb3JpdHkg b2YgY2FzZXMuCgpIb3dldmVyLCBmcmVxdWVudGx5IHVwZGF0ZWQgc2VxdWVuY2VzIG1heSBzdGls bCBsYWcgYmVoaW5kLCByZXF1aXJpbmcgYSBmaW5hbApSRUZSRVNIIFNFUVVFTkNFUyBiZWZvcmUg dXBncmFkZSBjb21wbGV0aW9uLiBVc2VycyBjYW4gbW9uaXRvciBwcm9ncmVzcyBieQpjaGVja2lu ZyB3aGV0aGVyIHNlcXVlbmNlIHN0YXRlcyB0cmFuc2l0aW9uIGZyb20gSU5JVCB0byBSRUFEWSBp bgpwZ19zdWJzY3JpcHRpb25fcmVsLgoKVGhlIFJFRlJFU0ggU0VRVUVOQ0VTIGNvbW1hbmQgaXMg cmV0YWluZWQgZm9yIHRoaXMgZmluYWwgc3luY2hyb25pemF0aW9uIHN0ZXAsCnRob3VnaCBpdCBj dXJyZW50bHkgdXBkYXRlcyBhbGwgc2VxdWVuY2Ugc3RhdGVzIHRvIElOSVQsIHdoaWNoIGhhcyBy b29tIGZvcgppbXByb3ZlbWVudC4gQSBmdXR1cmUgcGF0Y2ggd2lsbCBlbmhhbmNlIHRoaXMgY29t bWFuZCB0byBzeW5jaHJvbml6ZSBzZXF1ZW5jZXMKZGlyZWN0bHkgd2l0aG91dCBsYXVuY2hpbmcg YSB3b3JrZXIsIHJlZHVjaW5nIGNhdGFsb2cgb3ZlcmhlYWQuCgpBdXRob3I6IEFqaW4gQ2hlcmlh biA8aXRzYWppbkBnbWFpbC5jb20+CkF1dGhvcjogWmhpamllIEhvdSA8aG91emouZm5zdEBmdWpp dHN1LmNvbT4KUmV2aWV3ZWQtYnk6IFNodmV0YSBNYWxpayA8c2h2ZXRhLm1hbGlrQGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IFBldGVyIFNtaXRoIDxzbWl0aHBiMjI1MEBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4KLS0tCiBkb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgMjMgKy0KIGRvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgICAgICB8ICAgNSAtCiBzcmMvYmFja2VuZC9j b21tYW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgfCAgMjkgKysKIC4uLi9yZXBsaWNhdGlv bi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jICAgICAgICB8IDM3NCArKysrKysrKysrKysrLS0tLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMgICB8ICA0NyArLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8ICAxMSArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgMiArLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDI2X3N0YXRzLnBsICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgICAgICB8ICA3OSArLS0tCiAxMSBmaWxl cyBjaGFuZ2VkLCAzNzAgaW5zZXJ0aW9ucygrKSwgMjA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhmZTlhZjA5Li5iYjUyM2FmNWQzNyAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNzg3LDggKzE3ODcsOSBA QCBQdWJsaWNhdGlvbnM6CiAKICAgPHBhcmE+CiAgICBBIDxmaXJzdHRlcm0+c2VxdWVuY2Ugc3lu Y2hyb25pemF0aW9uIHdvcmtlcjwvZmlyc3R0ZXJtPiB3aWxsIGJlIHN0YXJ0ZWQKLSAgIGFmdGVy IGV4ZWN1dGluZyBhbnkgb2YgdGhlIGFib3ZlIHN1YnNjcmliZXIgY29tbWFuZHMsIGFuZCB3aWxs IGV4aXQgb25jZSB0aGUKLSAgIHNlcXVlbmNlcyBhcmUgc3luY2hyb25pemVkLgorICAgYWZ0ZXIg ZXhlY3V0aW5nIGFueSBvZiB0aGUgYWJvdmUgc3Vic2NyaWJlciBjb21tYW5kcy4gVGhlIHdvcmtl ciB3aWxsCisgICByZW1haW4gcnVubmluZyBmb3IgdGhlIGxpZmUgb2YgdGhlIHN1YnNjcmlwdGlv biwgcGVyaW9kaWNhbGx5CisgICBzeW5jaHJvbml6aW5nIGFsbCBwdWJsaXNoZWQgc2VxdWVuY2Vz LgogICA8L3BhcmE+CiAgIDxwYXJhPgogICAgVGhlIGFiaWxpdHkgdG8gbGF1bmNoIGEgc2VxdWVu Y2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciBpcyBsaW1pdGVkIGJ5IHRoZQpAQCAtMTgxNyw3ICsx ODE4LDcgQEAgUHVibGljYXRpb25zOgogICA8c2VjdDIgaWQ9InNlcXVlbmNlcy1vdXQtb2Ytc3lu YyI+CiAgICA8dGl0bGU+UmVmcmVzaGluZyBPdXQtb2YtU3luYyBTZXF1ZW5jZXM8L3RpdGxlPgog ICAgPHBhcmE+Ci0gICAgU3Vic2NyaWJlciBzZXF1ZW5jZSB2YWx1ZXMgd2lsbCBiZWNvbWUgb3V0 IG9mIHN5bmMgYXMgdGhlIHB1Ymxpc2hlcgorICAgIFN1YnNjcmliZXIgc2VxdWVuY2UgdmFsdWVz IGNhbiBiZWNvbWUgb3V0IG9mIHN5bmMgYXMgdGhlIHB1Ymxpc2hlcgogICAgIGFkdmFuY2VzIHRo ZW0uCiAgICA8L3BhcmE+CiAgICA8cGFyYT4KQEAgLTIzMzUsMTUgKzIzMzYsMTMgQEAgQ09OVEVY VDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYz OTUiIGR1cmluZyAiSU5TRVIKIAogICAgPGxpc3RpdGVtPgogICAgIDxwYXJhPgotICAgICBJbmNy ZW1lbnRhbCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBub3QgcmVwbGljYXRlZC4gIEFsdGhvdWdoIHRo ZSBkYXRhIGluCi0gICAgIHNlcmlhbCBvciBpZGVudGl0eSBjb2x1bW5zIGJhY2tlZCBieSBzZXF1 ZW5jZXMgd2lsbCBiZSByZXBsaWNhdGVkIGFzIHBhcnQKLSAgICAgb2YgdGhlIHRhYmxlLCB0aGUg c2VxdWVuY2VzIHRoZW1zZWx2ZXMgZG8gbm90IHJlcGxpY2F0ZSBvbmdvaW5nIGNoYW5nZXMuCi0g ICAgIE9uIHRoZSBzdWJzY3JpYmVyLCBhIHNlcXVlbmNlIHdpbGwgcmV0YWluIHRoZSBsYXN0IHZh bHVlIGl0IHN5bmNocm9uaXplZAotICAgICBmcm9tIHRoZSBwdWJsaXNoZXIuIElmIHRoZSBzdWJz Y3JpYmVyIGlzIHVzZWQgYXMgYSByZWFkLW9ubHkgZGF0YWJhc2UsCi0gICAgIHRoZW4gdGhpcyBz aG91bGQgdHlwaWNhbGx5IG5vdCBiZSBhIHByb2JsZW0uICBJZiwgaG93ZXZlciwgc29tZSBraW5k IG9mCi0gICAgIHN3aXRjaG92ZXIgb3IgZmFpbG92ZXIgdG8gdGhlIHN1YnNjcmliZXIgZGF0YWJh c2UgaXMgaW50ZW5kZWQsIHRoZW4gdGhlCi0gICAgIHNlcXVlbmNlcyB3b3VsZCBuZWVkIHRvIGJl IHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2YWx1ZXMsIGVpdGhlciBieQotICAgICBleGVjdXRpbmcg PGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1yZWZyZXNoLXNlcXVl bmNlcyI+CisgICAgIEluY3JlbWVudGFsIHNlcXVlbmNlIGNoYW5nZXMgYXJlIGNvbnRpbnVvdXNs eSByZXBsaWNhdGVkLiBJZiwgaG93ZXZlciwKKyAgICAgc29tZSBraW5kIG9mIHN3aXRjaG92ZXIg b3IgZmFpbG92ZXIgdG8gdGhlIHN1YnNjcmliZXIgZGF0YWJhc2UgaXMKKyAgICAgaW50ZW5kZWQs IHRoZW4gdGhlIHNlcXVlbmNlcyByZXBsaWNhdGlvbiBjb3VsZCBiZSBsYWdnaW5nIGJlaGluZCBh bmQKKyAgICAgdGhlIHNlcXVlbmNlcyBvbiB0aGUgc3Vic2NyaWJlciBzaG91bGQgYmUgY29tcGFy ZWQgd2l0aCB0aGF0IG9mIHRoZQorICAgICBwdWJsaXNoZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhl eSBhcmUgdXAgdG8gZGF0ZSwgaWYgbm90IHRoZXkKKyAgICAgbmVlZCB0byBiZSB1cGRhdGVkIHRv IHRoZSBsYXRlc3QgdmFsdWVzLCBlaXRoZXIgYnkgZXhlY3V0aW5nCisgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1ZW5jZXMiPgogICAg ICA8Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTPC9jb21t YW5kPjwvbGluaz4KICAgICAgb3IgYnkgY29weWluZyB0aGUgY3VycmVudCBkYXRhIGZyb20gdGhl IHB1Ymxpc2hlciAocGVyaGFwcyB1c2luZwogICAgICA8Y29tbWFuZD5wZ19kdW1wPC9jb21tYW5k Pikgb3IgYnkgZGV0ZXJtaW5pbmcgYSBzdWZmaWNpZW50bHkgaGlnaCB2YWx1ZQpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNTMxODk5OGU4MGMuLjVhN2I0ZjNj MmMyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTE5MCwx MSArMTkwLDYgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgICAgICBQcmV2aW91c2x5 IHN1YnNjcmliZWQgdGFibGVzIGFyZSBub3QgY29waWVkLCBldmVuIGlmIGEgdGFibGUncyByb3cK ICAgICAgICAgICBmaWx0ZXIgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBoYXMgc2lu Y2UgYmVlbiBtb2RpZmllZC4KICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgIDxwYXJhPgotICAg ICAgICAgIFByZXZpb3VzbHkgc3Vic2NyaWJlZCBzZXF1ZW5jZXMgYXJlIG5vdCByZS1zeW5jaHJv bml6ZWQuIFRvIGRvIHRoYXQsCi0gICAgICAgICAgdXNlIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRl cnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1ZW5jZXMiPgotICAgICAgICAgIDxjb21t YW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVM8L2NvbW1hbmQ+PC9s aW5rPi4KLSAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNlZSA8 eHJlZiBsaW5rZW5kPSJzZXF1ZW5jZS1kZWZpbml0aW9uLW1pc21hdGNoZXMiLz4gZm9yIHJlY29t bWVuZGF0aW9ucyBvbiBob3cKICAgICAgICAgICB0byBoYW5kbGUgYW55IHdhcm5pbmdzIGFib3V0 IHNlcXVlbmNlIGRlZmluaXRpb24gZGlmZmVyZW5jZXMgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKaW5kZXggZTFiODA4YmJiNjAuLmFjNWEwMTk3ZTFjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKQEAgLTkyOSw2ICs5MjksMzUgQEAgbGFzdHZhbChQR19GVU5DVElPTl9BUkdTKQogCVBH X1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQogCisvKgorICogUmVhZCB0aGUgY3VycmVudCBzZXF1 ZW5jZSB2YWx1ZXMgKGxhc3RfdmFsdWUgYW5kIGlzX2NhbGxlZCkKKyAqCisgKiBUaGlzIGlzIGEg cmVhZC1vbmx5IG9wZXJhdGlvbiB1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2UK KyAqIHN5bmNocm9uaXphdGlvbiB0byBkZXRlY3QgZHJpZnQuIFRoZSBjYWxsZXIgbXVzdCBob2xk IGEgbG9jayBvbiB0aGUgc2VxdWVuY2UKKyAqIGFuZCBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdl cyB0byBhY2Nlc3MgaXQuCisgKi8KK3ZvaWQKK0dldFNlcXVlbmNlKFJlbGF0aW9uIHNlcXJlbCwg aW50NjQgKmxhc3RfdmFsdWUsIGJvb2wgKmlzX2NhbGxlZCkKK3sKKwlCdWZmZXIJCWJ1ZjsKKwlI ZWFwVHVwbGVEYXRhIHNlcXR1cGxlOworCUZvcm1fcGdfc2VxdWVuY2VfZGF0YSBzZXE7CisKKwkv KiBDb25maXJtIHRoYXQgdGhlIHJlbGF0aW9uIGlzIGEgc2VxdWVuY2UgYW5kIGlzIGxvY2tlZCAq LworCUFzc2VydChzZXFyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsK KwlBc3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoc2VxcmVsLCBBY2Nlc3NTaGFyZUxvY2ss IHRydWUpKTsKKworCS8qIFJlYWQgdGhlIHNlcXVlbmNlIHR1cGxlICovCisJc2VxID0gcmVhZF9z ZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVwbGUpOworCisJLyogRXh0cmFjdCB0aGUgdmFs dWVzICovCisJKmxhc3RfdmFsdWUgPSBzZXEtPmxhc3RfdmFsdWU7CisJKmlzX2NhbGxlZCA9IHNl cS0+aXNfY2FsbGVkOworCisJLyogUmVsZWFzZSBidWZmZXIgKi8KKwlVbmxvY2tSZWxlYXNlQnVm ZmVyKGJ1Zik7Cit9CisKIC8qCiAgKiBNYWluIGludGVybmFsIHByb2NlZHVyZSB0aGF0IGhhbmRs ZXMgMiAmIDMgYXJnIGZvcm1zIG9mIFNFVFZBTC4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwppbmRleCA5YzkyZmRkZDYyNC4uZmFkMWJiNTQ4 YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2Vz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMu YwpAQCAtMTksMTAgKzE5LDYgQEAKICAqIENSRUFURSBTVUJTQ1JJUFRJT04KICAqIEFMVEVSIFNV QlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTgogICoKLSAqIEV4ZWN1dGluZyB0aGUg Zm9sbG93aW5nIGNvbW1hbmQgcmVzZXRzIGFsbCBzZXF1ZW5jZXMgaW4gdGhlIHN1YnNjcmlwdGlv biB0bwotICogc3RhdGUgSU5JVCwgdHJpZ2dlcmluZyByZS1zeW5jaHJvbml6YXRpb246Ci0gKiBB TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTCi0gKgogICogVGhlIGFwcGx5 IHdvcmtlciBwZXJpb2RpY2FsbHkgc2NhbnMgcGdfc3Vic2NyaXB0aW9uX3JlbCBmb3Igc2VxdWVu Y2VzIGluCiAgKiBJTklUIHN0YXRlLiBXaGVuIHN1Y2ggc2VxdWVuY2VzIGFyZSBmb3VuZCwgaXQg c3Bhd25zIGEgc2VxdWVuY2VzeW5jIHdvcmtlcgogICogdG8gaGFuZGxlIHN5bmNocm9uaXphdGlv bi4KQEAgLTM2LDggKzMyLDI0IEBACiAgKiBsb2NhbCBzdWJzY3JpYmVyLCBhbmQgZmluYWxseSBt YXJrcyBlYWNoIHNlcXVlbmNlIGFzIFJFQURZIHVwb24gc3VjY2Vzc2Z1bAogICogc3luY2hyb25p emF0aW9uLgogICoKKyAqIFRoZSBzZXF1ZW5jZXN5bmMgd29ya2VyIHRoZW4gZmV0Y2hlcyBhbGwg c2VxdWVuY2VzIHRoYXQgYXJlCisgKiBpbiB0aGUgUkVBRFkgc3RhdGUsIHF1ZXJpZXMgdGhlIHB1 Ymxpc2hlciBmb3IgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZXMsIGFuZAorICogdXBkYXRlcyBhbnkg c2VxdWVuY2VzIHRoYXQgaGF2ZSBkcmlmdGVkIGFuZCB0aGVuIGdvZXMgdG8gc2xlZXAuIFRoZSBz bGVlcAorICogaW50ZXJ2YWwgc3RhcnRzIGFzIFNFUVNZTkNfTUlOX1NMRUVQX01TIGFuZCBkb3Vi bGVzIGFmdGVyIGVhY2ggd2FrZSBjeWNsZQorICogKHVwIHRvIFNFUVNZTkNfTUFYX1NMRUVQX01T KS4gV2hlbiBkcmlmdCBpcyBkZXRlY3RlZCwgdGhlIGludGVydmFsIHJlc2V0cyB0bworICogdGhl IG1pbmltdW0gdG8gZW5zdXJlIHRpbWVseSB1cGRhdGVzLgorICoKKyAqIEFmdGVyIENSRUFURSBT VUJTQ1JJUFRJT04sIHNlcXVlbmNlcyBiZWdpbiBpbiB0aGUgSU5JVCBzdGF0ZS4gU2VxdWVuY2Vz CisgKiBhZGRlZCB0aHJvdWdoIEFMVEVSIFNVQlNDUklQVElPTi4uIFJFRlJFU0ggUFVCTElDQVRJ T04gYWxzbyBzdGFydCBpbiB0aGUgSU5JVAorICogc3RhdGUuIEFsbCBJTklUIHNlcXVlbmNlcyBh cmUgc3luY2hyb25pemVkIHVuY29uZGl0aW9uYWxseSwgdGhlbiB0cmFuc2l0aW9uCisgKiB0byB0 aGUgUkVBRFkgc3RhdGUuIE9uY2UgaW4gdGhlIFJFQURZIHN0YXRlLCBzZXF1ZW5jZXMgYXJlIGNo ZWNrZWQgZm9yIGRyaWZ0CisgKiBmcm9tIHRoZSBwdWJsaXNoZXIgYW5kIHN5bmNocm9uaXplZCBv bmx5IHdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWQuCisgKgogICogU2VxdWVuY2Ugc3RhdGUgdHJhbnNp dGlvbnMgZm9sbG93IHRoaXMgcGF0dGVybjoKLSAqICAgSU5JVCAtPiBSRUFEWQorICogIElOSVQg LS0+IFJFQURZIC0+LSsKKyAqICAgICAgICAgICAgIF4gICAgICB8IChjaGVjay9zeW5jaHJvbml6 ZSkKKyAqICAgICAgICAgICAgIHwgICAgICB8CisgKiAgICAgICAgICAgICArLS08LS0tKwogICoK ICAqIFRvIGF2b2lkIGNyZWF0aW5nIHRvbyBtYW55IHRyYW5zYWN0aW9ucywgdXAgdG8gTUFYX1NF UVVFTkNFU19TWU5DX1BFUl9CQVRDSAogICogc2VxdWVuY2VzIGFyZSBzeW5jaHJvbml6ZWQgcGVy IHRyYW5zYWN0aW9uLiBUaGUgbG9ja3Mgb24gdGhlIHNlcXVlbmNlCkBAIC02MCw2ICs3Miw3IEBA CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK QEAgLTc4LDIzICs5MSwzNSBAQCB0eXBlZGVmIGVudW0gQ29weVNlcVJlc3VsdAogCUNPUFlTRVFf U1VDQ0VTUywKIAlDT1BZU0VRX01JU01BVENILAogCUNPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk0s Ci0JQ09QWVNFUV9TS0lQUEVECisJQ09QWVNFUV9TS0lQUEVELAorCUNPUFlTRVFfTk9fRFJJRlQs CiB9IENvcHlTZXFSZXN1bHQ7CiAKLXN0YXRpYyBMaXN0ICpzZXFpbmZvcyA9IE5JTDsKKy8qIFNs ZWVwIGludGVydmFscyBmb3Igc3luYyAqLworI2RlZmluZSBTRVFTWU5DX01JTl9TTEVFUF9NUyAy MDAwCS8qIDIgc2Vjb25kcyAqLworI2RlZmluZSBTRVFTWU5DX01BWF9TTEVFUF9NUyAzMDAwMAkv KiAzMCBzZWNvbmRzICovCisKK3N0YXRpYyBsb25nIHNsZWVwX21zID0gU0VRU1lOQ19NSU5fU0xF RVBfTVM7CisKK3N0YXRpYyBNZW1vcnlDb250ZXh0IFNlcXVlbmNlU3luY0NvbnRleHQgPSBOVUxM OwogCiAvKgotICogQXBwbHkgd29ya2VyIGRldGVybWluZXMgaWYgc2VxdWVuY2Ugc3luY2hyb25p emF0aW9uIGlzIG5lZWRlZC4KKyAqIEFwcGx5IHdvcmtlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBz ZXF1ZW5jZSBzeW5jIHdvcmtlciBpcyBuZWVkZWQuCisgKgorICogQ2hlY2sgaWYgdGhlIHN1YnNj cmlwdGlvbiBpbmNsdWRlcyBzZXF1ZW5jZXMgYW5kIHN0YXJ0IGEgc2VxdWVuY2VzeW5jCisgKiB3 b3JrZXIgaWYgb25lIGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcuIFRoZSBhY3RpdmUgc2VxdWVuY2Vz eW5jIHdvcmtlciB3aWxsCisgKiBoYW5kbGUgYWxsIHBlbmRpbmcgc2VxdWVuY2Ugc3luY2hyb25p emF0aW9uLiBJZiBhbnkgc2VxdWVuY2VzIHJlbWFpbgorICogdW5zeW5jaHJvbml6ZWQgYWZ0ZXIg aXQgZXhpdHMsIGEgbmV3IHdvcmtlciBjYW4gYmUgc3RhcnRlZCBpbiB0aGUgbmV4dAorICogaXRl cmF0aW9uLgogICoKLSAqIFN0YXJ0IGEgc2VxdWVuY2VzeW5jIHdvcmtlciBpZiBvbmUgaXMgbm90 IGFscmVhZHkgcnVubmluZy4gVGhlIGFjdGl2ZQotICogc2VxdWVuY2VzeW5jIHdvcmtlciB3aWxs IGhhbmRsZSBhbGwgcGVuZGluZyBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24uIElmIGFueQotICog c2VxdWVuY2VzIHJlbWFpbiB1bnN5bmNocm9uaXplZCBhZnRlciBpdCBleGl0cywgYSBuZXcgd29y a2VyIGNhbiBiZSBzdGFydGVkCi0gKiBpbiB0aGUgbmV4dCBpdGVyYXRpb24uCisgKiBUaGUgcG9p bnRlciB0byB0aGUgc2VxdWVuY2VzeW5jIHdvcmtlciBpcyBjYWNoZWQgdG8gYXZvaWQgc2Nhbm5p bmcgdGhlCisgKiB3b3JrZXJzIGFycmF5IGVhY2ggdGltZSB2aWEgbG9naWNhbHJlcF93b3JrZXJf ZmluZCgpLgogICovCiB2b2lkCi1Qcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKQorTWF5YmVM YXVuY2hTZXF1ZW5jZVN5bmNXb3JrZXIodm9pZCkKIHsKLQlMb2dpY2FsUmVwV29ya2VyICpzZXF1 ZW5jZXN5bmNfd29ya2VyOworCXN0YXRpYyBMb2dpY2FsUmVwV29ya2VyICpzZXF1ZW5jZXN5bmNf d29ya2VyID0gTlVMTDsKKwogCWludAkJCW5zeW5jd29ya2VyczsKIAlib29sCQloYXNfcGVuZGlu Z19zZXF1ZW5jZXM7CiAJYm9vbAkJc3RhcnRlZF90eDsKQEAgLTExMiw2ICsxMzcsMTkgQEAgUHJv Y2Vzc1NlcXVlbmNlc0ZvclN5bmModm9pZCkKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdv cmtlckxvY2ssIExXX1NIQVJFRCk7CiAKKwkvKgorCSAqIFF1aWNrIGV4aXQgaWYgdGhlIHNlcXVl bmNlIHN5bmMgd29ya2VyIGZvciB0aGUgY3VycmVudCBzdWJzY3JpcHRpb24gaXMKKwkgKiBhbHJl YWR5IGFsaXZlLgorCSAqLworCWlmIChzZXF1ZW5jZXN5bmNfd29ya2VyICYmCisJCXNlcXVlbmNl c3luY193b3JrZXItPnByb2MgJiYKKwkJaXNTZXF1ZW5jZVN5bmNXb3JrZXIoc2VxdWVuY2VzeW5j X3dvcmtlcikgJiYKKwkJc2VxdWVuY2VzeW5jX3dvcmtlci0+c3ViaWQgPT0gTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCkKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OworCQlyZXR1cm47CisJfQorCiAJLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSBzZXF1ZW5jZXN5bmMg d29ya2VyIGFscmVhZHkgcnVubmluZz8gKi8KIAlzZXF1ZW5jZXN5bmNfd29ya2VyID0gbG9naWNh bHJlcF93b3JrZXJfZmluZChXT1JLRVJUWVBFX1NFUVVFTkNFU1lOQywKIAkJCQkJCQkJCQkJCSBN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLApAQCAtMTQ0LDcgKzE4Miw3IEBAIFByb2Nlc3NTZXF1 ZW5jZXNGb3JTeW5jKHZvaWQpCiAgKiBmb3IgdGhlIGdpdmVuIGxpc3Qgb2Ygc2VxdWVuY2UgaW5k ZXhlcy4KICAqLwogc3RhdGljIHZvaWQKLWdldF9zZXF1ZW5jZXNfc3RyaW5nKExpc3QgKnNlcWlu ZGV4ZXMsIFN0cmluZ0luZm8gYnVmKQorZ2V0X3NlcXVlbmNlc19zdHJpbmcoTGlzdCAqc2VxaW5k ZXhlcywgTGlzdCAqc2VxaW5mb3MsIFN0cmluZ0luZm8gYnVmKQogewogCXJlc2V0U3RyaW5nSW5m byhidWYpOwogCWZvcmVhY2hfaW50KHNlcWlkeCwgc2VxaW5kZXhlcykKQEAgLTE3MSw3ICsyMDks NyBAQCBnZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBTdHJpbmdJbmZvIGJ1 ZikKICAqLwogc3RhdGljIHZvaWQKIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0 Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKLQkJCQkJICAgTGlzdCAq bWlzc2luZ19zZXFzX2lkeCkKKwkJCQkJICAgTGlzdCAqbWlzc2luZ19zZXFzX2lkeCwgTGlzdCAq c2VxaW5mb3MpCiB7CiAJU3RyaW5nSW5mbwlzZXFzdHI7CiAKQEAgLTE4Myw3ICsyMjEsNyBAQCBy ZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmlu c3VmZnBlcm1fc2Vxc19pZHgsCiAKIAlpZiAobWlzbWF0Y2hlZF9zZXFzX2lkeCkKIAl7Ci0JCWdl dF9zZXF1ZW5jZXNfc3RyaW5nKG1pc21hdGNoZWRfc2Vxc19pZHgsIHNlcXN0cik7CisJCWdldF9z ZXF1ZW5jZXNfc3RyaW5nKG1pc21hdGNoZWRfc2Vxc19pZHgsIHNlcWluZm9zLCBzZXFzdHIpOwog CQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKIAkJCQllcnJtc2dfcGx1cmFsKCJtaXNtYXRjaGVkIG9yIHJlbmFt ZWQgc2VxdWVuY2Ugb24gc3Vic2NyaWJlciAoJXMpIiwKQEAgLTE5NCw3ICsyMzIsNyBAQCByZXBv cnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3Vm ZnBlcm1fc2Vxc19pZHgsCiAKIAlpZiAoaW5zdWZmcGVybV9zZXFzX2lkeCkKIAl7Ci0JCWdldF9z ZXF1ZW5jZXNfc3RyaW5nKGluc3VmZnBlcm1fc2Vxc19pZHgsIHNlcXN0cik7CisJCWdldF9zZXF1 ZW5jZXNfc3RyaW5nKGluc3VmZnBlcm1fc2Vxc19pZHgsIHNlcWluZm9zLCBzZXFzdHIpOwogCQll cmVwb3J0KFdBUk5JTkcsCiAJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKIAkJCQllcnJtc2dfcGx1cmFsKCJpbnN1ZmZpY2llbnQgcHJpdmlsZWdl cyBvbiBzZXF1ZW5jZSAoJXMpIiwKQEAgLTIwNSw3ICsyNDMsNyBAQCByZXBvcnRfc2VxdWVuY2Vf ZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19p ZHgsCiAKIAlpZiAobWlzc2luZ19zZXFzX2lkeCkKIAl7Ci0JCWdldF9zZXF1ZW5jZXNfc3RyaW5n KG1pc3Npbmdfc2Vxc19pZHgsIHNlcXN0cik7CisJCWdldF9zZXF1ZW5jZXNfc3RyaW5nKG1pc3Np bmdfc2Vxc19pZHgsIHNlcWluZm9zLCBzZXFzdHIpOwogCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJ ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQll cnJtc2dfcGx1cmFsKCJtaXNzaW5nIHNlcXVlbmNlIG9uIHB1Ymxpc2hlciAoJXMpIiwKQEAgLTIy OSw3ICsyNjcsOCBAQCByZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vx c19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19pZHgsCiAgKi8KIHN0YXRpYyBDb3B5U2VxUmVz dWx0CiBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxlVGFibGVTbG90ICpzbG90LCBSZWxh dGlvbiAqc2VxdWVuY2VfcmVsLAotCQkJCQkJICBMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICoqc2Vx aW5mbywgaW50ICpzZXFpZHgpCisJCQkJCQkgIExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKipzZXFp bmZvLCBpbnQgKnNlcWlkeCwKKwkJCQkJCSAgTGlzdCAqc2VxaW5mb3MpCiB7CiAJYm9vbAkJaXNu dWxsOwogCWludAkJCWNvbCA9IDA7CkBAIC0zMjUsMzIgKzM2NCw3NyBAQCBnZXRfYW5kX3ZhbGlk YXRlX3NlcV9pbmZvKFR1cGxlVGFibGVTbG90ICpzbG90LCBSZWxhdGlvbiAqc2VxdWVuY2VfcmVs LAogfQogCiAvKgotICogQXBwbHkgcmVtb3RlIHNlcXVlbmNlIHN0YXRlIHRvIGxvY2FsIHNlcXVl bmNlIGFuZCBtYXJrIGl0IGFzCi0gKiBzeW5jaHJvbml6ZWQgKFJFQURZKS4KKyAqIFByZWxpbWlu YXJ5IGNoZWNrIHRvIGRldGVybWluZSBpZiBjb3B5aW5nIHRoZSBzZXF1ZW5jZSBpcyBhbGxvd2Vk LgogICovCiBzdGF0aWMgQ29weVNlcVJlc3VsdAotY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2Vx dWVuY2VJbmZvICpzZXFpbmZvLCBPaWQgc2Vxb3duZXIpCit2YWxpZGF0ZV9zZXFzeW5jX3N0YXRl KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCkK IHsKLQlVc2VyQ29udGV4dCB1Y3h0OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJc2Vx b2lkID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKKwlpbnQ2NAkJbG9jYWxfbGFzdF92YWx1ZTsKKwli b29sCQlsb2NhbF9pc19jYWxsZWQ7CisKKwkvKiBQZXJmb3JtIGRyaWZ0IGNoZWNrIGlmIGl0J3Mg bm90IHRoZSBpbml0aWFsIHN5bmMgKi8KKwlpZiAoc2VxaW5mby0+cmVsc3RhdGUgPT0gU1VCUkVM X1NUQVRFX1JFQURZKQorCXsKKwkJLyoKKwkJICogVmVyaWZ5IHRoYXQgdGhlIGN1cnJlbnQgdXNl ciBoYXMgU0VMRUNUIHByaXZpbGVnZSBvbiB0aGUgc2VxdWVuY2UuCisJCSAqIFRoaXMgaXMgcmVx dWlyZWQgdG8gcmVhZCB0aGUgc2VxdWVuY2Ugc3RhdGUgYmVsb3cuCisJCSAqLworCQlhY2xyZXN1 bHQgPSBwZ19jbGFzc19hY2xjaGVjayhzZXFvaWQsIEdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsK KworCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJcmV0dXJuIENPUFlTRVFfSU5T VUZGSUNJRU5UX1BFUk07CisKKwkJLyogR2V0IGN1cnJlbnQgbG9jYWwgc2VxdWVuY2Ugc3RhdGUg Ki8KKwkJR2V0U2VxdWVuY2Uoc2VxdWVuY2VfcmVsLCAmbG9jYWxfbGFzdF92YWx1ZSwgJmxvY2Fs X2lzX2NhbGxlZCk7CisKKwkJLyoKKwkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgdGhlIHNl cXVlbmNlIGlzIGFscmVhZHkgaW4gUkVBRFkgc3RhdGUgYW5kCisJCSAqIGhhcyBub3QgZHJpZnRl ZCBmcm9tIHRoZSBwdWJsaXNoZXIncyB2YWx1ZS4KKwkJICovCisJCWlmIChsb2NhbF9sYXN0X3Zh bHVlID09IHNlcWluZm8tPmxhc3RfdmFsdWUgJiYKKwkJCWxvY2FsX2lzX2NhbGxlZCA9PSBzZXFp bmZvLT5pc19jYWxsZWQpCisJCQlyZXR1cm4gQ09QWVNFUV9OT19EUklGVDsKKwl9CisKKwkvKiBW ZXJpZnkgdGhhdCB0aGUgY3VycmVudCB1c2VyIGNhbiB1cGRhdGUgdGhlIHNlcXVlbmNlICovCisJ YWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2soc2Vxb2lkLCBHZXRVc2VySWQoKSwgQUNMX1VQ REFURSk7CisKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlyZXR1cm4gQ09QWVNF UV9JTlNVRkZJQ0lFTlRfUEVSTTsKKworCXJldHVybiBDT1BZU0VRX1NVQ0NFU1M7Cit9CisKKy8q CisgKiBBcHBseSByZW1vdGUgc2VxdWVuY2Ugc3RhdGUgdG8gbG9jYWwgc2VxdWVuY2UuIElmIHdl IGFyZSBkb2luZyB0aGlzCisgKiBmb3Igc2VxdWVuY2VzIGluIHRoZSBJTklUIHN0YXRlLCBtb3Zl IHRoZW0gdG8gdGhlIFJFQURZIHN0YXRlIG9uY2UKKyAqIHN5bmNocm9uaXplZC4KKyAqLworc3Rh dGljIENvcHlTZXFSZXN1bHQKK2NvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAq c2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsKQoreworCVVzZXJDb250ZXh0IHVjeHQ7CiAJ Ym9vbAkJcnVuX2FzX293bmVyID0gTXlTdWJzY3JpcHRpb24tPnJ1bmFzb3duZXI7CiAJT2lkCQkJ c2Vxb2lkID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKKwlDb3B5U2VxUmVzdWx0IHJlc3VsdDsKIAog CS8qCiAJICogSWYgdGhlIHVzZXIgZGlkIG5vdCBvcHQgdG8gcnVuIGFzIHRoZSBvd25lciBvZiB0 aGUgc3Vic2NyaXB0aW9uCiAJICogKCdydW5fYXNfb3duZXInKSwgdGhlbiBjb3B5IHRoZSBzZXF1 ZW5jZSBhcyB0aGUgb3duZXIgb2YgdGhlIHNlcXVlbmNlLgogCSAqLwogCWlmICghcnVuX2FzX293 bmVyKQotCQlTd2l0Y2hUb1VudHJ1c3RlZFVzZXIoc2Vxb3duZXIsICZ1Y3h0KTsKKwkJU3dpdGNo VG9VbnRydXN0ZWRVc2VyKHNlcXVlbmNlX3JlbC0+cmRfcmVsLT5yZWxvd25lciwgJnVjeHQpOwog Ci0JYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2soc2Vxb2lkLCBHZXRVc2VySWQoKSwgQUNM X1VQREFURSk7CisJcmVzdWx0ID0gdmFsaWRhdGVfc2Vxc3luY19zdGF0ZShzZXFpbmZvLCBzZXF1 ZW5jZV9yZWwpOwogCi0JaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwlpZiAocmVzdWx0 ICE9IENPUFlTRVFfU1VDQ0VTUykKIAl7CiAJCWlmICghcnVuX2FzX293bmVyKQogCQkJUmVzdG9y ZVVzZXJDb250ZXh0KCZ1Y3h0KTsKIAotCQlyZXR1cm4gQ09QWVNFUV9JTlNVRkZJQ0lFTlRfUEVS TTsKKwkJcmV0dXJuIHJlc3VsdDsKIAl9CiAKIAkvKgpAQCAtMzY4LDE5ICs0NTIsMjYgQEAgY29w eV9zZXF1ZW5jZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBPaWQgc2Vxb3duZXIp CiAKIAkvKgogCSAqIFJlY29yZCB0aGUgcmVtb3RlIHNlcXVlbmNlJ3MgTFNOIGluIHBnX3N1YnNj cmlwdGlvbl9yZWwgYW5kIG1hcmsgdGhlCi0JICogc2VxdWVuY2UgYXMgUkVBRFkuCisJICogc2Vx dWVuY2UgYXMgUkVBRFkgaWYgdXBkYXRpbmcgYSBzZXF1ZW5jZSB0aGF0IGlzIGluIElOSVQgc3Rh dGUuCiAJICovCi0JVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRpb24tPm9p ZCwgc2Vxb2lkLCBTVUJSRUxfU1RBVEVfUkVBRFksCi0JCQkJCQkJICAgc2VxaW5mby0+cGFnZV9s c24sIGZhbHNlKTsKKwlpZiAoc2VxaW5mby0+cmVsc3RhdGUgPT0gU1VCUkVMX1NUQVRFX0lOSVQp CisJCVVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9p ZCwgU1VCUkVMX1NUQVRFX1JFQURZLAorCQkJCQkJCQkgICBzZXFpbmZvLT5wYWdlX2xzbiwgZmFs c2UpOwogCiAJcmV0dXJuIENPUFlTRVFfU1VDQ0VTUzsKIH0KIAogLyoKICAqIENvcHkgZXhpc3Rp bmcgZGF0YSBvZiBzZXF1ZW5jZXMgZnJvbSB0aGUgcHVibGlzaGVyLgorICoKKyAqIElmIHJlbHN0 YXRlIGlzIFNVQlJFTF9TVEFURV9SRUFEWSwgb25seSBzeW5jaHJvbml6ZSBzZXF1ZW5jZXMgdGhh dAorICogaGF2ZSBkcmlmdGVkIGZyb20gdGhlaXIgcHVibGlzaGVyIHZhbHVlcy4gT3RoZXJ3aXNl LCBzeW5jaHJvbml6ZQorICogYWxsIHNlcXVlbmNlcy4KKyAqCisgKiBSZXR1cm5zIHRydWUvZmFs c2UgaWYgYW55IHNlcXVlbmNlcyB3ZXJlIGFjdHVhbGx5IGNvcGllZC4KICAqLwotc3RhdGljIHZv aWQKLWNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKK3N0YXRpYyBib29sCitj b3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQogewog CWludAkJCWN1cl9iYXRjaF9iYXNlX2luZGV4ID0gMDsKIAlpbnQJCQluX3NlcWluZm9zID0gbGlz dF9sZW5ndGgoc2VxaW5mb3MpOwpAQCAtMzkwLDEzICs0ODEsMTAgQEAgY29weV9zZXF1ZW5jZXMo V2FsUmVjZWl2ZXJDb25uICpjb25uKQogCVN0cmluZ0luZm8Jc2Vxc3RyID0gbWFrZVN0cmluZ0lu Zm8oKTsKIAlTdHJpbmdJbmZvCWNtZCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJTWVtb3J5Q29udGV4 dCBvbGRjdHg7CisJYm9vbAkJc2VxdWVuY2VfY29waWVkID0gZmFsc2U7CiAKICNkZWZpbmUgTUFY X1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSCAxMDAKIAotCWVsb2coREVCVUcxLAotCQkgImxvZ2lj YWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIC0gdG90YWwgdW5zeW5jaHJvbml6ZWQ6ICVkIiwKLQkJIE15U3Vic2NyaXB0aW9uLT5u YW1lLCBuX3NlcWluZm9zKTsKLQogCXdoaWxlIChjdXJfYmF0Y2hfYmFzZV9pbmRleCA8IG5fc2Vx aW5mb3MpCiAJewogCQlPaWQJCQlzZXFSb3dbUkVNT1RFX1NFUV9DT0xfQ09VTlRdID0ge0lOVDhP SUQsIElOVDhPSUQsCkBAIC00MDYsNiArNDk0LDcgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2 ZXJDb25uICpjb25uKQogCQlpbnQJCQliYXRjaF9taXNtYXRjaGVkX2NvdW50ID0gMDsKIAkJaW50 CQkJYmF0Y2hfc2tpcHBlZF9jb3VudCA9IDA7CiAJCWludAkJCWJhdGNoX2luc3VmZnBlcm1fY291 bnQgPSAwOworCQlpbnQJCQliYXRjaF9ub19kcmlmdCA9IDA7CiAJCWludAkJCWJhdGNoX21pc3Np bmdfY291bnQ7CiAJCVJlbGF0aW9uCXNlcXVlbmNlX3JlbCA9IE5VTEw7CiAKQEAgLTUwMSw0NiAr NTkwLDUzIEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAkJCX0KIAog CQkJc3luY19zdGF0dXMgPSBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKHNsb3QsICZzZXF1ZW5j ZV9yZWwsCi0JCQkJCQkJCQkJCQkJJnNlcWluZm8sICZzZXFpZHgpOworCQkJCQkJCQkJCQkJCSZz ZXFpbmZvLCAmc2VxaWR4LCBzZXFpbmZvcyk7CisKKwkJCS8qCisJCQkgKiBGb3Igc2VxdWVuY2Vz IGluIElOSVQgc3RhdGUsIGFsd2F5cyBzeW5jLiBPdGhlcndpc2UsIGZvcgorCQkJICogc2VxdWVu Y2VzIGluIFJFQURZIHN0YXRlLCBvbmx5IHN5bmMgaWYgdGhlcmUncyBkcmlmdC4KKwkJCSAqLwog CQkJaWYgKHN5bmNfc3RhdHVzID09IENPUFlTRVFfU1VDQ0VTUykKLQkJCQlzeW5jX3N0YXR1cyA9 IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywKLQkJCQkJCQkJCQkJc2VxdWVuY2VfcmVsLT5yZF9yZWwt PnJlbG93bmVyKTsKKwkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywgc2Vx dWVuY2VfcmVsKTsKIAogCQkJc3dpdGNoIChzeW5jX3N0YXR1cykKIAkJCXsKIAkJCQljYXNlIENP UFlTRVFfU1VDQ0VTUzoKIAkJCQkJZWxvZyhERUJVRzEsCi0JCQkJCQkgImxvZ2ljYWwgcmVwbGlj YXRpb24gc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCBzZXF1ZW5jZSBc IiVzLiVzXCIgaGFzIGZpbmlzaGVkIiwKLQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwgc2Vx aW5mby0+bnNwbmFtZSwKLQkJCQkJCSBzZXFpbmZvLT5zZXFuYW1lKTsKKwkJCQkJCSAibG9naWNh bCByZXBsaWNhdGlvbiBzeW5jaHJvbml6YXRpb24gaGFzIHVwZGF0ZWQgc2VxdWVuY2UgXCIlcy4l c1wiIGluIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNlcWluZm8tPm5zcG5hbWUsIHNl cWluZm8tPnNlcW5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsKIAkJCQkJYmF0Y2hfc3VjY2Vl ZGVkX2NvdW50Kys7CisJCQkJCXNlcXVlbmNlX2NvcGllZCA9IHRydWU7CiAJCQkJCWJyZWFrOwor CiAJCQkJY2FzZSBDT1BZU0VRX01JU01BVENIOgogCiAJCQkJCS8qCi0JCQkJCSAqIFJlbWVtYmVy IG1pc21hdGNoZWQgc2VxdWVuY2VzIGluIGEgbG9uZy1saXZlZCBtZW1vcnkKLQkJCQkJICogY29u dGV4dCBzaW5jZSB0aGVzZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uCi0JCQkJ CSAqIGlzIGNvbW1pdHRlZC4KKwkJCQkJICogUmVtZW1iZXIgbWlzbWF0Y2hlZCBzZXF1ZW5jZXMg aW4gU2VxdWVuY2VTeW5jQ29udGV4dAorCQkJCQkgKiBzaW5jZSB0aGVzZSB3aWxsIGJlIHVzZWQg YWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCisJCQkJCSAqIGNvbW1pdHRlZC4KIAkJCQkJICovCi0J CQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkJCQlv bGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAJCQkJ CW1pc21hdGNoZWRfc2Vxc19pZHggPSBsYXBwZW5kX2ludChtaXNtYXRjaGVkX3NlcXNfaWR4LAog CQkJCQkJCQkJCQkJCSAgc2VxaWR4KTsKIAkJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7CiAJCQkJCWJhdGNoX21pc21hdGNoZWRfY291bnQrKzsKIAkJCQkJYnJlYWs7CisKIAkJCQlj YXNlIENPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk06CiAKIAkJCQkJLyoKLQkJCQkJICogUmVtZW1i ZXIgc2VxdWVuY2VzIHdpdGggaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgaW4gYQotCQkJCQkgKiBs b25nLWxpdmVkIG1lbW9yeSBjb250ZXh0IHNpbmNlIHRoZXNlIHdpbGwgYmUgdXNlZAotCQkJCQkg KiBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCQkJCQkgKiBSZW1lbWJlciBz ZXF1ZW5jZXMgd2l0aCBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyBpbgorCQkJCQkgKiBTZXF1ZW5j ZVN5bmNDb250ZXh0IHNpbmNlIHRoZXNlIHdpbGwgYmUgdXNlZCBhZnRlciB0aGUKKwkJCQkJICog dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgogCQkJCQkgKi8KLQkJCQkJb2xkY3R4ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJCQkJaW5zdWZmcGVybV9zZXFzX2lk eCA9IGxhcHBlbmRfaW50KGluc3VmZnBlcm1fc2Vxc19pZHgsCiAJCQkJCQkJCQkJCQkJICBzZXFp ZHgpOwogCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAkJCQkJYmF0Y2hfaW5z dWZmcGVybV9jb3VudCsrOwogCQkJCQlicmVhazsKKwogCQkJCWNhc2UgQ09QWVNFUV9TS0lQUEVE OgogCiAJCQkJCS8qCkBAIC01NTgsNiArNjU0LDE1IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2Vp dmVyQ29ubiAqY29ubikKIAkJCQkJCWJhdGNoX3NraXBwZWRfY291bnQrKzsKIAkJCQkJfQogCQkJ CQlicmVhazsKKworCQkJCWNhc2UgQ09QWVNFUV9OT19EUklGVDoKKwkJCQkJLyogTm90aGluZyB0 byBkbyAqLworCQkJCQliYXRjaF9ub19kcmlmdCsrOworCQkJCQlicmVhazsKKworCQkJCWRlZmF1 bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU2VxdWVuY2UgcmVwbGljYXRpb24g cmVzdWx0OiAlZCIsIChpbnQpIHN5bmNfc3RhdHVzKTsKKwogCQkJfQogCiAJCQlpZiAoc2VxdWVu Y2VfcmVsKQpAQCAtNTY2LDIwICs2NzEsMTkgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJD b25uICpjb25uKQogCiAJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAJCXdh bHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKLQkJcmVzZXRTdHJpbmdJbmZvKHNlcXN0cik7Ci0JCXJl c2V0U3RyaW5nSW5mbyhjbWQpOwogCiAJCWJhdGNoX21pc3NpbmdfY291bnQgPSBiYXRjaF9zaXpl IC0gKGJhdGNoX3N1Y2NlZWRlZF9jb3VudCArCiAJCQkJCQkJCQkJCWJhdGNoX21pc21hdGNoZWRf Y291bnQgKwogCQkJCQkJCQkJCQliYXRjaF9pbnN1ZmZwZXJtX2NvdW50ICsKLQkJCQkJCQkJCQkJ YmF0Y2hfc2tpcHBlZF9jb3VudCk7CisJCQkJCQkJCQkJCWJhdGNoX3NraXBwZWRfY291bnQgKwor CQkJCQkJCQkJCQliYXRjaF9ub19kcmlmdCk7CiAKIAkJZWxvZyhERUJVRzEsCi0JCQkgImxvZ2lj YWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIC0gYmF0Y2ggIyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNjZWVkZWQsICVkIG1pc21h dGNoZWQsICVkIGluc3VmZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNzaW5nIGZyb20gcHVibGlz aGVyLCAlZCBza2lwcGVkIiwKKwkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5j aHJvbml6YXRpb24gZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgLSBiYXRjaCAjJWQgPSAlZCBhdHRl bXB0ZWQsICVkIHN1Y2NlZWRlZCwgJWQgbWlzbWF0Y2hlZCwgJWQgaW5zdWZmaWNpZW50IHBlcm1p c3Npb24sICVkIG1pc3NpbmcgZnJvbSBwdWJsaXNoZXIsICVkIHNraXBwZWQsICVkIG5vIGRyaWZ0 IiwKIAkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJCSAoY3VyX2JhdGNoX2Jhc2VfaW5kZXgg LyBNQVhfU0VRVUVOQ0VTX1NZTkNfUEVSX0JBVENIKSArIDEsCiAJCQkgYmF0Y2hfc2l6ZSwgYmF0 Y2hfc3VjY2VlZGVkX2NvdW50LCBiYXRjaF9taXNtYXRjaGVkX2NvdW50LAotCQkJIGJhdGNoX2lu c3VmZnBlcm1fY291bnQsIGJhdGNoX21pc3NpbmdfY291bnQsIGJhdGNoX3NraXBwZWRfY291bnQp OworCQkJIGJhdGNoX2luc3VmZnBlcm1fY291bnQsIGJhdGNoX21pc3NpbmdfY291bnQsIGJhdGNo X3NraXBwZWRfY291bnQsIGJhdGNoX25vX2RyaWZ0KTsKIAogCQkvKiBDb21taXQgdGhpcyBiYXRj aCwgYW5kIHByZXBhcmUgZm9yIG5leHQgYmF0Y2ggKi8KIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CkBAIC02MDcsNTEgKzcxMSw1NSBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNv bm4gKmNvbm4pCiAKIAkvKiBSZXBvcnQgbWlzbWF0Y2hlcywgcGVybWlzc2lvbiBpc3N1ZXMsIG9y IG1pc3Npbmcgc2VxdWVuY2VzICovCiAJcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhtaXNtYXRjaGVk X3NlcXNfaWR4LCBpbnN1ZmZwZXJtX3NlcXNfaWR4LAotCQkJCQkJICAgbWlzc2luZ19zZXFzX2lk eCk7CisJCQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4LCBzZXFpbmZvcyk7CisKKwlyZXR1cm4gc2Vx dWVuY2VfY29waWVkOwogfQogCiAvKgogICogSWRlbnRpZmllcyBzZXF1ZW5jZXMgdGhhdCByZXF1 aXJlIHN5bmNocm9uaXphdGlvbiBhbmQgaW5pdGlhdGVzIHRoZQogICogc3luY2hyb25pemF0aW9u IHByb2Nlc3MuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHNlcXVlbmNlcyBoYXZlIGJlZW4gdXBk YXRlZC4KICAqLwotc3RhdGljIHZvaWQKLUxvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKHZvaWQpCitz dGF0aWMgYm9vbAorTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25u KQogewotCWNoYXIJICAgKmVycjsKLQlib29sCQltdXN0X3VzZV9wYXNzd29yZDsKIAlSZWxhdGlv bglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKLQlTY2FuS2V5RGF0YSBza2V5WzJdOworCVNjYW5LZXlE YXRhIHNrZXlbMV07CiAJU3lzU2NhbkRlc2Mgc2NhbjsKIAlPaWQJCQlzdWJpZCA9IE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQ7Ci0JU3RyaW5nSW5mb0RhdGEgYXBwX25hbWU7CisJYm9vbAkJc2Vx dWVuY2VfY29waWVkID0gZmFsc2U7CisJTGlzdAkgICAqc2VxaW5mb3MgPSBOSUw7CisJTWVtb3J5 Q29udGV4dCBvbGRjdHg7CisKKwlBc3NlcnQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAKIAlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCiAJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25S ZWxSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCisJLyogU2NhbiBmb3IgYWxsIHNlcXVl bmNlcyBiZWxvbmdpbmcgdG8gdGhpcyBzdWJzY3JpcHRpb24gKi8KIAlTY2FuS2V5SW5pdCgmc2tl eVswXSwKIAkJCQlBbnVtX3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JzdWJpZCwKIAkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCiAJCQkJT2JqZWN0SWRHZXREYXR1bShzdWJpZCkpOwog Ci0JU2NhbktleUluaXQoJnNrZXlbMV0sCi0JCQkJQW51bV9wZ19zdWJzY3JpcHRpb25fcmVsX3Ny c3Vic3RhdGUsCi0JCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKLQkJCQlDaGFy R2V0RGF0dW0oU1VCUkVMX1NUQVRFX0lOSVQpKTsKLQogCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNj YW4ocmVsLCBJbnZhbGlkT2lkLCBmYWxzZSwKLQkJCQkJCQkgIE5VTEwsIDIsIHNrZXkpOworCQkJ CQkJCSAgTlVMTCwgMSwgc2tleSk7CisKIAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBz eXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKIAl7CiAJCUZvcm1fcGdfc3Vic2NyaXB0aW9uX3JlbCBz dWJyZWw7CiAJCUxvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcTsKIAkJUmVsYXRpb24Jc2VxdWVu Y2VfcmVsOwotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJcmVsc3RhdGU7CiAKIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQlzdWJyZWwgPSAoRm9ybV9wZ19zdWJzY3JpcHRp b25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJcmVsc3RhdGUgPSBzdWJyZWwtPnNyc3Vic3RhdGU7 CiAKIAkJc2VxdWVuY2VfcmVsID0gdHJ5X3RhYmxlX29wZW4oc3VicmVsLT5zcnJlbGlkLCBSb3dF eGNsdXNpdmVMb2NrKTsKIApAQCAtNjY2LDE4ICs3NzQsMTkgQEAgTG9naWNhbFJlcFN5bmNTZXF1 ZW5jZXModm9pZCkKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJQXNzZXJ0KHJlbHN0YXRlID09IFNV QlJFTF9TVEFURV9JTklUIHx8IHJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSk7CisKIAkJ LyoKIAkJICogV29ya2VyIG5lZWRzIHRvIHByb2Nlc3Mgc2VxdWVuY2VzIGFjcm9zcyB0cmFuc2Fj dGlvbiBib3VuZGFyeSwgc28KLQkJICogYWxsb2NhdGUgdGhlbSB1bmRlciBsb25nLWxpdmVkIGNv bnRleHQuCisJCSAqIGFsbG9jYXRlIHRoZW0gdW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dC4KIAkJ ICovCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwotCisJ CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJ c2VxID0gcGFsbG9jMF9vYmplY3QoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyk7CiAJCXNlcS0+bG9j YWxyZWxpZCA9IHN1YnJlbC0+c3JyZWxpZDsKIAkJc2VxLT5uc3BuYW1lID0gZ2V0X25hbWVzcGFj ZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHNlcXVlbmNlX3JlbCkpOwogCQlzZXEtPnNlcW5h bWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXVlbmNlX3JlbCkpOworCQlz ZXEtPnJlbHN0YXRlID0gcmVsc3RhdGU7CiAJCXNlcWluZm9zID0gbGFwcGVuZChzZXFpbmZvcywg c2VxKTsKLQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAogCQl0YWJsZV9jbG9z ZShzZXF1ZW5jZV9yZWwsIE5vTG9jayk7CkBAIC02OTMsMzYgKzgwMiwxNiBAQCBMb2dpY2FsUmVw U3luY1NlcXVlbmNlcyh2b2lkKQogCSAqIEV4aXQgZWFybHkgaWYgbm8gY2F0YWxvZyBlbnRyaWVz IGZvdW5kLCBsaWtlbHkgZHVlIHRvIGNvbmN1cnJlbnQgZHJvcHMuCiAJICovCiAJaWYgKCFzZXFp bmZvcykKLQkJcmV0dXJuOwotCi0JLyogSXMgdGhlIHVzZSBvZiBhIHBhc3N3b3JkIG1hbmRhdG9y eT8gKi8KLQltdXN0X3VzZV9wYXNzd29yZCA9IE15U3Vic2NyaXB0aW9uLT5wYXNzd29yZHJlcXVp cmVkICYmCi0JCSFNeVN1YnNjcmlwdGlvbi0+b3duZXJzdXBlcnVzZXI7CisJCXJldHVybiBmYWxz ZTsKIAotCWluaXRTdHJpbmdJbmZvKCZhcHBfbmFtZSk7Ci0JYXBwZW5kU3RyaW5nSW5mbygmYXBw X25hbWUsICJwZ18ldV9zZXF1ZW5jZV9zeW5jXyIgVUlOVDY0X0ZPUk1BVCwKLQkJCQkJIE15U3Vi c2NyaXB0aW9uLT5vaWQsIEdldFN5c3RlbUlkZW50aWZpZXIoKSk7CisJLyogUHJvY2VzcyBzZXF1 ZW5jZXMgKi8KKwlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZv cyk7CiAKLQkvKgotCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHVibGlzaGVy IGZvciBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24uCi0JICovCi0JTG9nUmVwV29ya2VyV2FsUmN2 Q29ubiA9Ci0JCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywgdHJ1ZSwg dHJ1ZSwKLQkJCQkJICAgbXVzdF91c2VfcGFzc3dvcmQsCi0JCQkJCSAgIGFwcF9uYW1lLmRhdGEs ICZlcnIpOwotCWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCi0JCWVyZXBvcnQo RVJST1IsCi0JCQkJZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCi0JCQkJZXJy bXNnKCJzZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGNvdWxkIG5v dCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwKLQkJCQkJICAgTXlTdWJzY3JpcHRpb24t Pm5hbWUsIGVycikpOwotCi0JcGZyZWUoYXBwX25hbWUuZGF0YSk7Ci0KLQljb3B5X3NlcXVlbmNl cyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKwlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwogfQog CiAvKgotICogRXhlY3V0ZSB0aGUgaW5pdGlhbCBzeW5jIHdpdGggZXJyb3IgaGFuZGxpbmcuIERp c2FibGUgdGhlIHN1YnNjcmlwdGlvbiwKKyAqIEV4ZWN1dGUgdGhlIHNlcXVlbmNlIHN5bmMgd2l0 aCBlcnJvciBoYW5kbGluZy4gRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uLAogICogaWYgcmVxdWly ZWQuCiAgKgogICogTm90ZSB0aGF0IHdlIGRvbid0IGhhbmRsZSBGQVRBTCBlcnJvcnMgd2hpY2gg YXJlIHByb2JhYmx5IGJlY2F1c2Ugb2Ygc3lzdGVtCkBAIC03MzUsOCArODI0LDkxIEBAIHN0YXJ0 X3NlcXVlbmNlX3N5bmModm9pZCkKIAogCVBHX1RSWSgpOwogCXsKLQkJLyogQ2FsbCBpbml0aWFs IHN5bmMuICovCi0JCUxvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKCk7CisJCWNoYXIJICAgKmVycjsK KwkJYm9vbAkJbXVzdF91c2VfcGFzc3dvcmQ7CisJCVN0cmluZ0luZm9EYXRhIGFwcF9uYW1lOwor CisJCS8qIElzIHRoZSB1c2Ugb2YgYSBwYXNzd29yZCBtYW5kYXRvcnk/ICovCisJCW11c3RfdXNl X3Bhc3N3b3JkID0gTXlTdWJzY3JpcHRpb24tPnBhc3N3b3JkcmVxdWlyZWQgJiYKKwkJCSFNeVN1 YnNjcmlwdGlvbi0+b3duZXJzdXBlcnVzZXI7CisKKwkJaW5pdFN0cmluZ0luZm8oJmFwcF9uYW1l KTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICJwZ18ldV9zZXF1ZW5jZV9zeW5jXyIg VUlOVDY0X0ZPUk1BVCwKKwkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLCBHZXRTeXN0ZW1JZGVu dGlmaWVyKCkpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUg cHVibGlzaGVyIGZvciBzZXF1ZW5jZQorCQkgKiBzeW5jaHJvbml6YXRpb24uCisJCSAqLworCQlM b2dSZXBXb3JrZXJXYWxSY3ZDb25uID0KKwkJCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9u LT5jb25uaW5mbywgdHJ1ZSwgdHJ1ZSwKKwkJCQkJCSAgIG11c3RfdXNlX3Bhc3N3b3JkLAorCQkJ CQkJICAgYXBwX25hbWUuZGF0YSwgJmVycik7CisJCWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25u ID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ09OTkVD VElPTl9GQUlMVVJFKSwKKwkJCQkJZXJybXNnKCJzZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIGNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwK KwkJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lLCBlcnIpKTsKKworCQlwZnJlZShhcHBfbmFt ZS5kYXRhKTsKKworCQkvKgorCQkgKiBJbml0IHRoZSBTZXF1ZW5jZVN5bmNDb250ZXh0IHdoaWNo IHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggc2VxdWVuY2UKKwkJICogc3luY2hyb25pemF0aW9uLgor CQkgKi8KKwkJU2VxdWVuY2VTeW5jQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBs eUNvbnRleHQsCisJCQkJCQkJCQkJCQkJIlNlcXVlbmNlU3luY0NvbnRleHQiLAorCQkJCQkJCQkJ CQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJCWZvciAoOzspCisJCXsKKwkJCWJvb2wJ CXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOworCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCS8qIFByb2Nlc3MgYW55IGludmFsaWRhdGlv biBtZXNzYWdlcyB0aGF0IG1pZ2h0IGhhdmUgYWNjdW11bGF0ZWQgKi8KKwkJCUFjY2VwdEludmFs aWRhdGlvbk1lc3NhZ2VzKCk7CisJCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisKKwkJ CS8qCisJCQkgKiBQZXJmb3JtIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiB1bmRlciBTZXF1ZW5j ZVN5bmNDb250ZXh0IGFuZAorCQkJICogcmVzZXQgaXQgZWFjaCBjeWNsZSB0byBhdm9pZCBtYW51 YWwgbWVtb3J5IG1hbmFnZW1lbnQuCisJCQkgKi8KKwkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKworCQkJLyoKKwkJCSAqIFN5bmNocm9uaXpl IGFsbCBzZXF1ZW5jZXMgKGJvdGggUkVBRFkgYW5kIElOSVQgc3RhdGVzKS4KKwkJCSAqLworCQkJ c2VxdWVuY2VfY29waWVkID0gTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2Fs UmN2Q29ubik7CisKKwkJCU1lbW9yeUNvbnRleHRSZXNldChTZXF1ZW5jZVN5bmNDb250ZXh0KTsK KwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCisJCQkvKgorCQkJICogQWRqdXN0 IHNsZWVwIGludGVydmFsIGJhc2VkIG9uIHdoZXRoZXIgc2VxdWVuY2VzIHdlcmUgY29waWVkCisJ CQkgKiBvdmVyCisJCQkgKi8KKwkJCWlmIChzZXF1ZW5jZV9jb3BpZWQpCisJCQl7CisJCQkJc2xl ZXBfbXMgPSBTRVFTWU5DX01JTl9TTEVFUF9NUzsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkv KgorCQkJCSAqIERvdWJsZSB0aGUgc2xlZXAgdGltZSwgYnV0IG5vdCBiZXlvbmQgdGhlIG1heGlt dW0gYWxsb3dhYmxlCisJCQkJICogdmFsdWUuCisJCQkJICovCisJCQkJc2xlZXBfbXMgPSBNaW4o c2xlZXBfbXMgKiAyLCBTRVFTWU5DX01BWF9TTEVFUF9NUyk7CisJCQl9CisKKwkJCS8qIFNsZWVw IGZvciB0aGUgY29uZmlndXJlZCBpbnRlcnZhbCAqLworCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLAorCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCQkgc2xlZXBfbXMsCisJCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5D X1NUQVRFX0NIQU5HRSk7CisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQl9CiAJfQogCVBHX0NB VENIKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z eW5jdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMK aW5kZXggZWY2MWNhMDQzN2QuLjIzM2FjN2FlODczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKQEAgLTE3Miw3ICsxNzIsOSBAQCBQcm9jZXNzU3luY2lu Z1JlbGF0aW9ucyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCiAJCWNhc2UgV09SS0VSVFlQRV9B UFBMWToKIAkJCVByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoY3VycmVudF9sc24pOwotCQkJ UHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmMoKTsKKworCQkJLyogQ2hlY2sgaWYgc2VxdWVuY2Ugd29y a2VyIG5lZWRzIHRvIGJlIHN0YXJ0ZWQgKi8KKwkJCU1heWJlTGF1bmNoU2VxdWVuY2VTeW5jV29y a2VyKCk7CiAJCQlicmVhazsKIAogCQljYXNlIFdPUktFUlRZUEVfU0VRVUVOQ0VTWU5DOgpAQCAt MTkxLDEzICsxOTMsMTMgQEAgUHJvY2Vzc1N5bmNpbmdSZWxhdGlvbnMoWExvZ1JlY1B0ciBjdXJy ZW50X2xzbikKICAqCiAgKiBUaGUgcGdfc3Vic2NyaXB0aW9uX3JlbCBjYXRhbG9nIGlzIHNoYXJl ZCBieSB0YWJsZXMgYW5kIHNlcXVlbmNlcy4gQ2hhbmdlcwogICogdG8gZWl0aGVyIHNlcXVlbmNl cyBvciB0YWJsZXMgY2FuIGFmZmVjdCB0aGUgdmFsaWRpdHkgb2YgcmVsYXRpb24gc3RhdGVzLCBz bwotICogd2UgaWRlbnRpZnkgbm9uLVJFQURZIHRhYmxlcyBhbmQgbm9uLVJFQURZIHNlcXVlbmNl cyB0b2dldGhlciB0byBlbnN1cmUKKyAqIHdlIGlkZW50aWZ5IG5vbi1SRUFEWSB0YWJsZXMgYW5k IHNlcXVlbmNlcyAoaW4gYW55IHN0YXRlKSB0b2dldGhlciB0byBlbnN1cmUKICAqIGNvbnNpc3Rl bmN5LgogICoKICAqIGhhc19wZW5kaW5nX3N1YnRhYmxlczogdHJ1ZSBpZiB0aGUgc3Vic2NyaXB0 aW9uIGhhcyBvbmUgb3IgbW9yZSB0YWJsZXMgdGhhdAogICogYXJlIG5vdCBpbiBSRUFEWSBzdGF0 ZSwgb3RoZXJ3aXNlIGZhbHNlLgogICogaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2VzOiB0cnVlIGlm IHRoZSBzdWJzY3JpcHRpb24gaGFzIG9uZSBvciBtb3JlIHNlcXVlbmNlcwotICogdGhhdCBhcmUg bm90IGluIFJFQURZIHN0YXRlLCBvdGhlcndpc2UgZmFsc2UuCisgKiAoaW4gYW55IHN0YXRlKSwg b3RoZXJ3aXNlIGZhbHNlLgogICovCiB2b2lkCiBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhh c19wZW5kaW5nX3N1YnRhYmxlcywKQEAgLTIwNSwyMyArMjA3LDIyIEBAIEZldGNoUmVsYXRpb25T dGF0ZXMoYm9vbCAqaGFzX3BlbmRpbmdfc3VidGFibGVzLAogCQkJCQlib29sICpzdGFydGVkX3R4 KQogewogCS8qCi0JICogaGFzX3N1YnRhYmxlcyBhbmQgaGFzX3N1YnNlcXVlbmNlc19ub25fcmVh ZHkgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYywKLQkgKiBzaW5jZSB0aGUgc2FtZSB2YWx1ZSBjYW4g YmUgdXNlZCB1bnRpbCB0aGUgc3lzdGVtIHRhYmxlIGlzIGludmFsaWRhdGVkLgorCSAqIGhhc19z dWJ0YWJsZXMgYW5kIGhhc19zdWJzZXF1ZW5jZXMgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYywgc2lu Y2UgdGhlCisJICogc2FtZSB2YWx1ZSBjYW4gYmUgdXNlZCB1bnRpbCB0aGUgc3lzdGVtIHRhYmxl IGlzIGludmFsaWRhdGVkLgogCSAqLwogCXN0YXRpYyBib29sIGhhc19zdWJ0YWJsZXMgPSBmYWxz ZTsKLQlzdGF0aWMgYm9vbCBoYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IGZhbHNlOworCXN0 YXRpYyBib29sIGhhc19zdWJzZXF1ZW5jZXMgPSBmYWxzZTsKIAogCSpzdGFydGVkX3R4ID0gZmFs c2U7Ci0KIAlpZiAocmVsYXRpb25fc3RhdGVzX3ZhbGlkaXR5ICE9IFNZTkNfUkVMQVRJT05TX1NU QVRFX1ZBTElEKQogCXsKIAkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAJCUxpc3QJICAgKnJzdGF0 ZXM7CisJCUxpc3QJICAgKnNlcV9zdGF0ZXM7CiAJCVN1YnNjcmlwdGlvblJlbFN0YXRlICpyc3Rh dGU7CiAKIAkJcmVsYXRpb25fc3RhdGVzX3ZhbGlkaXR5ID0gU1lOQ19SRUxBVElPTlNfU1RBVEVf UkVCVUlMRF9TVEFSVEVEOwotCQloYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IGZhbHNlOwot CisJCWhhc19zdWJzZXF1ZW5jZXMgPSBmYWxzZTsKIAkJLyogQ2xlYW4gdGhlIG9sZCBsaXN0cy4g Ki8KIAkJbGlzdF9mcmVlX2RlZXAodGFibGVfc3RhdGVzX25vdF9yZWFkeSk7CiAJCXRhYmxlX3N0 YXRlc19ub3RfcmVhZHkgPSBOSUw7CkBAIC0yMzEsMjcgKzIzMiwyNyBAQCBGZXRjaFJlbGF0aW9u U3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1YnRhYmxlcywKIAkJCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAJCQkqc3RhcnRlZF90eCA9IHRydWU7CiAJCX0KLQotCQkvKiBGZXRjaCB0YWJs ZXMgYW5kIHNlcXVlbmNlcyB0aGF0IGFyZSBpbiBub24tUkVBRFkgc3RhdGUuICovCi0JCXJzdGF0 ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMoTXlTdWJzY3JpcHRpb24tPm9pZCwgdHJ1ZSwg dHJ1ZSwKKwkJLyogRmV0Y2ggdGFibGVzIHRoYXQgYXJlIGluIG5vbi1SRUFEWSBzdGF0ZS4gKi8K KwkJcnN0YXRlcyA9IEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucyhNeVN1YnNjcmlwdGlvbi0+b2lk LCB0cnVlLCBmYWxzZSwKIAkJCQkJCQkJCQkgICB0cnVlKTsKLQorCQkvKiBGZXRjaCBhbGwgc2Vx dWVuY2VzIChyZWdhcmRsZXNzIG9mIHN0YXRlKS4gKi8KKwkJc2VxX3N0YXRlcyA9IEdldFN1YnNj cmlwdGlvblJlbGF0aW9ucyhNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJ CQkJCQkJICBmYWxzZSk7CiAJCS8qIEFsbG9jYXRlIHRoZSB0cmFja2luZyBpbmZvIGluIGEgcGVy bWFuZW50IG1lbW9yeSBjb250ZXh0LiAqLwogCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAkJZm9yZWFjaF9wdHIoU3Vic2NyaXB0aW9uUmVsU3Rh dGUsIHN1YnJlbCwgcnN0YXRlcykKIAkJewotCQkJaWYgKGdldF9yZWxfcmVsa2luZChzdWJyZWwt PnJlbGlkKSA9PSBSRUxLSU5EX1NFUVVFTkNFKQotCQkJCWhhc19zdWJzZXF1ZW5jZXNfbm9uX3Jl YWR5ID0gdHJ1ZTsKLQkJCWVsc2UKLQkJCXsKLQkJCQlyc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KFN1 YnNjcmlwdGlvblJlbFN0YXRlKTsKLQkJCQltZW1jcHkocnN0YXRlLCBzdWJyZWwsIHNpemVvZihT dWJzY3JpcHRpb25SZWxTdGF0ZSkpOwotCQkJCXRhYmxlX3N0YXRlc19ub3RfcmVhZHkgPSBsYXBw ZW5kKHRhYmxlX3N0YXRlc19ub3RfcmVhZHksCi0JCQkJCQkJCQkJCQkgcnN0YXRlKTsKLQkJCX0K KwkJCXJzdGF0ZSA9IHBhbGxvY19vYmplY3QoU3Vic2NyaXB0aW9uUmVsU3RhdGUpOworCQkJbWVt Y3B5KHJzdGF0ZSwgc3VicmVsLCBzaXplb2YoU3Vic2NyaXB0aW9uUmVsU3RhdGUpKTsKKwkJCXRh YmxlX3N0YXRlc19ub3RfcmVhZHkgPSBsYXBwZW5kKHRhYmxlX3N0YXRlc19ub3RfcmVhZHksCisJ CQkJCQkJCQkJCSByc3RhdGUpOwogCQl9CisJCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2Vx dWVuY2VzLiAqLworCQloYXNfc3Vic2VxdWVuY2VzID0gKHNlcV9zdGF0ZXMgIT0gTklMKTsKIAkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwkJbGlzdF9mcmVlX2RlZXAoc2VxX3N0 YXRlcyk7CisKIAkJLyoKIAkJICogRG9lcyB0aGUgc3Vic2NyaXB0aW9uIGhhdmUgdGFibGVzPwog CQkgKgpAQCAtMjc3LDUgKzI3OCw1IEBAIEZldGNoUmVsYXRpb25TdGF0ZXMoYm9vbCAqaGFzX3Bl bmRpbmdfc3VidGFibGVzLAogCQkqaGFzX3BlbmRpbmdfc3VidGFibGVzID0gaGFzX3N1YnRhYmxl czsKIAogCWlmIChoYXNfcGVuZGluZ19zdWJzZXF1ZW5jZXMpCi0JCSpoYXNfcGVuZGluZ19zdWJz ZXF1ZW5jZXMgPSBoYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeTsKKwkJKmhhc19wZW5kaW5nX3N1 YnNlcXVlbmNlcyA9IGhhc19zdWJzZXF1ZW5jZXM7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCBmOWM0YjQ4NDc1NC4uZjkxYzhmOWVjZGUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtNTA5OSw2ICs1MDk5LDkgQEAg bWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCSAqIHdvcmtlciB3b24ndCByZXN0YXJ0 IGlmIHRoZSBzdHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUgaXMgY2hhbmdlZCBmcm9tCiAJICogJ3Bh cmFsbGVsJyB0byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhlIHNlcnZlciBkZWNpZGVzIG5vdCB0byBz dHJlYW0gdGhlCiAJICogaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24uCisJICoKKwkgKiBOb3RlOiBz b21lIHBhcmFtZXRlcnMgbWF5IG5vdCBiZSByZWxldmFudCB0byB0aGUgc2VxdWVuY2Ugc3luYyB3 b3JrZXIsCisJICogYnV0IGV4aXQgYW55d2F5LgogCSAqLwogCWlmIChzdHJjbXAobmV3c3ViLT5j b25uaW5mbywgTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvKSAhPSAwIHx8CiAJCXN0cmNtcChuZXdz dWItPm5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKSAhPSAwIHx8CkBAIC01MTE0LDYgKzUxMTcs MTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCQkJZXJlcG9ydChMT0csCiAJ CQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNo YW5nZSIsCiAJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWVsc2UgaWYgKGFtX3Nl cXVlbmNlc3luY193b3JrZXIoKSkKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwK KwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAkJZWxzZQogCQkJZXJlcG9ydChMT0cs CiAJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRp b24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCkBA IC01MTMyLDYgKzUxMzksMTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCQkJ ZXJlcG9ydChMT0csCiAJCQkJCWVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBh cHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhl IHN1YnNjcmlwdGlvbiBvd25lcidzIHN1cGVydXNlciBwcml2aWxlZ2VzIGhhdmUgYmVlbiByZXZv a2VkIiwKIAkJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7CisJCWVsc2UgaWYgKGFtX3Nl cXVlbmNlc3luY193b3JrZXIoKSkKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQllcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIG93bmVyJ3Mg c3VwZXJ1c2VyIHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJldm9rZWQiLAorCQkJCQkJICAgTXlTdWJz Y3JpcHRpb24tPm5hbWUpKTsKIAkJZWxzZQogCQkJZXJlcG9ydChMT0csCiAJCQkJCWVycm1zZygi bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBy ZXN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiBvd25lcidzIHN1cGVydXNlciBwcml2aWxl Z2VzIGhhdmUgYmVlbiByZXZva2VkIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b25fcmVsLmgKaW5kZXggNTAyNjQwZDMwMTguLjg2NTc0YjY5MTY5IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaApAQCAtOTYsNiArOTYsNyBAQCB0eXBlZGVmIHN0 cnVjdCBMb2dpY2FsUmVwU2VxdWVuY2VJbmZvCiAJY2hhcgkgICAqc2VxbmFtZTsKIAljaGFyCSAg ICpuc3BuYW1lOwogCU9pZAkJCWxvY2FscmVsaWQ7CisJY2hhcgkJcmVsc3RhdGU7CiAKIAkvKiBT ZXF1ZW5jZSBpbmZvcm1hdGlvbiByZXRyaWV2ZWQgZnJvbSB0aGUgcHVibGlzaGVyIG5vZGUgKi8K IAlYTG9nUmVjUHRyCXBhZ2VfbHNuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv c2VxdWVuY2UuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKaW5kZXggMmMzYzRh M2YwNzQuLmYwMGVlYTlmYmQxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1 ZW5jZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKQEAgLTQ3LDYgKzQ3 LDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyU2VxU3RtdCAqc3RtdCk7CiBleHRlcm4gdm9pZCBTZXF1ZW5jZUNoYW5nZVBlcnNp c3RlbmNlKE9pZCByZWxpZCwgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSk7CiBleHRlcm4gdm9pZCBE ZWxldGVTZXF1ZW5jZVR1cGxlKE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBSZXNldFNlcXVlbmNl KE9pZCBzZXFfcmVsaWQpOworZXh0ZXJuIHZvaWQgR2V0U2VxdWVuY2UoUmVsYXRpb24gc2VxcmVs LCBpbnQ2NCAqbGFzdF92YWx1ZSwgYm9vbCAqaXNfY2FsbGVkKTsKIGV4dGVybiB2b2lkIFNldFNl cXVlbmNlKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCk7CiBleHRlcm4gdm9p ZCBSZXNldFNlcXVlbmNlQ2FjaGVzKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCmluZGV4IDRlY2JkY2ZhZGFjLi5hNDFjYjA0NWYxOSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTI4Niw3ICsyODYsNyBAQCBl eHRlcm4gdm9pZCBVcGRhdGVUd29QaGFzZVN0YXRlKE9pZCBzdWJvaWQsIGNoYXIgbmV3X3N0YXRl KTsKIAogZXh0ZXJuIHZvaWQgUHJvY2Vzc1N5bmNpbmdUYWJsZXNGb3JTeW5jKFhMb2dSZWNQdHIg Y3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1N5bmNpbmdUYWJsZXNGb3JBcHBseShY TG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKLWV4dGVybiB2b2lkIFByb2Nlc3NTZXF1ZW5jZXNGb3JT eW5jKHZvaWQpOworZXh0ZXJuIHZvaWQgTWF5YmVMYXVuY2hTZXF1ZW5jZVN5bmNXb3JrZXIodm9p ZCk7CiAKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIEZpbmlzaFN5bmNXb3JrZXIodm9pZCk7CiBl eHRlcm4gdm9pZCBJbnZhbGlkYXRlU3luY2luZ1JlbFN0YXRlcyhEYXR1bSBhcmcsIFN5c0NhY2hl SWRlbnRpZmllciBjYWNoZWlkLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDI2X3N0YXRzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI2X3N0YXRzLnBsCmluZGV4 IDVkNDU3MDYwYTAyLi4yZmUyMDlmNDYxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDI2X3N0YXRzLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0 cy5wbApAQCAtMTYsNiArMTYsOCBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogIyBDcmVhdGUg c3Vic2NyaWJlciBub2RlLgogbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OwogCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCmluZGV4IDQ3MTc4 MGEzNTg1Li4xZDgxNTE4ZmUyMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM2X3NlcXVlbmNlcy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVu Y2VzLnBsCkBAIC03NSw4ICs3NSw3IEBAIGlzKCRyZXN1bHQsICcxMDB8dCcsCiAKICMjIyMjIyMj IyMKICMjIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiBzaG91bGQg Y2F1c2Ugc3luYyBvZiBuZXcKLSMgc2VxdWVuY2VzIG9mIHRoZSBwdWJsaXNoZXIsIGJ1dCBjaGFu Z2VzIHRvIGV4aXN0aW5nIHNlcXVlbmNlcyBzaG91bGQKLSMgbm90IGJlIHN5bmNlZC4KKyMgc2Vx dWVuY2VzIG9mIHRoZSBwdWJsaXNoZXIuCiAjIyMjIyMjIyMjCiAKICMgQ3JlYXRlIGEgbmV3IHNl cXVlbmNlICdyZWdyZXNzX3MyJywgYW5kIHVwZGF0ZSBleGlzdGluZyBzZXF1ZW5jZSAncmVncmVz c19zMScKQEAgLTg0LDkgKzgzLDYgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bv c3RncmVzJywgcXEoCiAJQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfczI7CiAJSU5TRVJUIElOVE8g cmVncmVzc19zZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMicpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKTsKLQotCS0tIEV4aXN0aW5nIHNlcXVlbmNlCi0JSU5TRVJUIElOVE8g cmVncmVzc19zZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMScpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKTsKICkpOwogCiAjIERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVG UkVTSCBQVUJMSUNBVElPTgpAQCAtOTcsMTkgKzkzLDYgQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywgJHN5bmNlZF9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKIAotJHJlc3VsdCA9ICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCVNFTEVDVCBsYXN0X3Zh bHVlLCBpc19jYWxsZWQgRlJPTSByZWdyZXNzX3MxOwotKSk7Ci1pcygkcmVzdWx0LCAnMjAwfHQn LCAnQ2hlY2sgc2VxdWVuY2UgdmFsdWUgaW4gdGhlIHB1Ymxpc2hlcicpOwotCi0jIENoZWNrIC0g ZXhpc3Rpbmcgc2VxdWVuY2UgKCdyZWdyZXNzX3MxJykgaXMgbm90IHN5bmNlZAotJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1Qg bGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJlc3VsdCwg JzEwMHx0JywgJ1JFRlJFU0ggUFVCTElDQVRJT04gd2lsbCBub3Qgc3luYyBleGlzdGluZyBzZXF1 ZW5jZScpOwotCiAjIENoZWNrIC0gbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlICgncmVncmVzc19z MicpIGlzIHN5bmNlZAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkn cG9zdGdyZXMnLCBxcSgKQEAgLTExOSwxNiArMTAyLDEzIEBAIGlzKCRyZXN1bHQsICcxMDB8dCcs CiAJJ1JFRlJFU0ggUFVCTElDQVRJT04gd2lsbCBzeW5jIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5j ZScpOwogCiAjIyMjIyMjIyMjCi0jIFRlc3Q6IFJFRlJFU0ggU0VRVUVOQ0VTIGFuZCBSRUZSRVNI IFBVQkxJQ0FUSU9OIChjb3B5X2RhdGEgPSBmYWxzZSkKLSMKLSMgMS4gQUxURVIgU1VCU0NSSVBU SU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNFUyBzaG91bGQgcmUtc3luY2hyb25pemUgYWxsCi0jICAg IGV4aXN0aW5nIHNlcXVlbmNlcywgYnV0IG5vdCBzeW5jaHJvbml6ZSBuZXdseSBhZGRlZCBvbmVz LgotIyAyLiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gd2l0aCAo Y29weV9kYXRhID0gZmFsc2UpIHNob3VsZAotIyAgICBhbHNvIG5vdCB1cGRhdGUgc2VxdWVuY2Ug dmFsdWVzIGZvciBuZXdseSBhZGRlZCBzZXF1ZW5jZXMuCisjIFRlc3Q6CisjIDEuIEF1dG9tYXRp YyB1cGRhdGUgb2YgZXhpc3Rpbmcgc2VxdWVuY2UgdmFsdWVzCisjIDIuIE5ld2x5IGFkZGVkIHNl cXVlbmNlcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgdXBkYXRlZC4KICMjIyMjIyMjIyMKIAotIyBD cmVhdGUgYSBuZXcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczMnLCBhbmQgdXBkYXRlIHRoZSBleGlzdGlu ZyBzZXF1ZW5jZQotIyAncmVncmVzc19zMicuCisjIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAncmVn cmVzc19zMycsIGFuZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHNlcXVlbmNlcworIyAncmVncmVzc19z MicgYW5kICdyZWdyZXNzX3MxJy4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0 Z3JlcycsIHFxKAogCUNSRUFURSBTRVFVRU5DRSByZWdyZXNzX3MzOwpAQCAtMTM2LDUzICsxMTYs MjggQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAKIAktLSBFeGlzdGluZyBzZXF1ZW5j ZQogCUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3JlZ3Jlc3Nf czInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gcmVncmVzc19z ZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMScpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwKTsKICkpOwogCi0jIDEuIERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBT RVFVRU5DRVMKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXEoCi0JQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFNF UVVFTkNFUzsKLSkpOwotJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdy ZXMnLCAkc3luY2VkX3F1ZXJ5KQotICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOwotCiAjIENoZWNrIC0gZXhpc3Rpbmcg c2VxdWVuY2VzICgncmVncmVzc19zMScgYW5kICdyZWdyZXNzX3MyJykgYXJlIHN5bmNlZAotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlT RUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJl c3VsdCwgJzIwMHx0JywgJ1JFRlJFU0ggU0VRVUVOQ0VTIHdpbGwgc3luYyBleGlzdGluZyBzZXF1 ZW5jZXMnKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3NfczI7 Ci0pKTsKLWlzKCRyZXN1bHQsICcyMDB8dCcsICdSRUZSRVNIIFNFUVVFTkNFUyB3aWxsIHN5bmMg ZXhpc3Rpbmcgc2VxdWVuY2VzJyk7CiAKLSMgQ2hlY2sgLSBuZXdseSBwdWJsaXNoZWQgc2VxdWVu Y2UgKCdyZWdyZXNzX3MzJykgaXMgbm90IHN5bmNlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNf Y2FsbGVkIEZST00gcmVncmVzc19zMzsKLSkpOwotaXMoJHJlc3VsdCwgJzF8ZicsCi0JJ1JFRlJF U0ggU0VRVUVOQ0VTIHdpbGwgbm90IHN5bmMgbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlJyk7Cisj IFBvbGwgdW50aWwgcmVncmVzc19zMSByZWZsZWN0cyB0aGUgdXBkYXRlZCBzZXF1ZW5jZSB2YWx1 ZQorJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorICAgIHFx KFNFTEVDVCBsYXN0X3ZhbHVlID0gMjAwIEFORCBpc19jYWxsZWQgPSAndCcgRlJPTSByZWdyZXNz X3MxOykpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlZ3Jlc3NfczEg c2VxdWVuY2UgdG8gc3luYyI7CiAKLSMgMi4gRG8gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZS RVNIIFBVQkxJQ0FUSU9OIHdpdGggY29weV9kYXRhIGFzIGZhbHNlCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCUFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3NlcV9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTiBXSVRIIChjb3B5X2RhdGEg PSBmYWxzZSk7Ci0pKTsKLSRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgJHN5bmNlZF9xdWVyeSkKLSAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKyMgUG9sbCB1bnRpbCByZWdyZXNz X3MyIHJlZmxlY3RzIHRoZSB1cGRhdGVkIHNlcXVlbmNlIHZhbHVlCiskbm9kZV9zdWJzY3JpYmVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisgICAgcXEoU0VMRUNUIGxhc3RfdmFsdWUg PSAyMDAgQU5EIGlzX2NhbGxlZCA9ICd0JyBGUk9NIHJlZ3Jlc3NfczI7KSkKKyAgb3IgZGllICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVncmVzc19zMiBzZXF1ZW5jZSB0byBzeW5jIjsK IAotIyBDaGVjayAtIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczMnKSBpcyBu b3Qgc3luY2VkIHdpdGggY29weV9kYXRhCi0jIGFzIGZhbHNlLgorIyBDaGVjayAtIG5ld2x5IHB1 Ymxpc2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczMnKSBpcyBub3Qgc3luY2VkCiAkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCVNFTEVDVCBs YXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSByZWdyZXNzX3MzOwogKSk7CiBpcygkcmVzdWx0LCAn MXxmJywKLQknUkVGUkVTSCBQVUJMSUNBVElPTiB3aWxsIG5vdCBzeW5jIG5ld2x5IHB1Ymxpc2hl ZCBzZXF1ZW5jZSB3aXRoIGNvcHlfZGF0YSBhcyBmYWxzZScKLSk7CisJJ05ld2x5IHB1Ymxpc2hl ZCBzZXF1ZW5jZXMgYXJlIG5vdCBzeW5jZWQgYXV0b21hdGljYWxseScpOwogCiAjIyMjIyMjIyMj CiAjIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiBzaG91bGQgcmVw b3J0IGFuIGVycm9yIHdoZW46Ci0tIAoyLjUxLjEud2luZG93cy4xCgo= --_003_TY4PR01MB1690715895CDE6FEFA13C2A2C947EATY4PR01MB16907jp_--