From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id AA4884D0E1
	for <ffmpegdev@gitmailbox.com>; Wed, 19 Mar 2025 21:20:41 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 64367687B53;
	Wed, 19 Mar 2025 23:20:38 +0200 (EET)
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 (mail-am0eur02olkn2103.outbound.protection.outlook.com [40.92.49.103])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31094687A69
 for <ffmpeg-devel@ffmpeg.org>; Wed, 19 Mar 2025 23:20:31 +0200 (EET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yMH5t+l3h1uUacfskKSd6cXtCjpsH44qNTHAowWUUVn49lAbizcAbyHWiqkfC8SITZFL88w4SZhBJqxMhMeKeiGiQKNB9ufe5NA2k+UDiIPZick3Yg1TfMuEsgrAdHwT/haKHPuVHuTJxeEzNwxZuMWup7jZaQVADd4Hwz1pNyS8FeW+RdGMABje7s2PVRb3T4mU/e8PHShUKu3xyTQ/JMaQhGvpJKXBbjPZaixNzV8y9I+8gTNqw0u8xz//WglayMchbUFduefOK1nT4rAAZXbm76ESlVgsJ8cNEfvc2vAPzQj/WlqSZrzz3ZjwGi4WY6xT0n7/9pCbu8xBbNyR4g==
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=6d+9C7uSgMYQbcxIzd/TvY8npc+HzWBoXwUYOYiSIqw=;
 b=hic0r1mXtyt2Ld0Dz49Td884nIEPQUMJjwNUBFDf8jh19600XmXCWlQvTrviVSyehQMGT20z20vEeoDssVuQOnDRFXSfcmjD5CaCVY5uCXKgMiQWrfWzAxLeBKCj7u1R/2l8wI8BJEHprTlFLnBZs3oMhS02CH4ZUaTtTihlj8jLdFtXSWjKm/dC92siqQQBJRfGBGdVNFgORILFYEJyJB0XHSgoy+h7FsGxm/Vjept6CCGRFZos3QW7rVf5Reg/xdm9GXbm8fuljunqjcUiaco6PdtIandri+20M9IfvWYNbnm4LeKAsfFsMn2GJ5TyoqtoPcAkPblUyJcPzsQhYA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=6d+9C7uSgMYQbcxIzd/TvY8npc+HzWBoXwUYOYiSIqw=;
 b=PDMkJPrGpMVEMVBESjfLKvvwd/gGMdTTmgHE51K7QWZWwsN4dPWrMzUJVuswZeXth1NqgP13J1tHt49ZXaFQPUa4ZhMQFuuLvgsReNeYw9MlEpjSvrKqZ9R19fKcO8CghtGMfcV2hnbQyEqniLJHhv3hgTJ9bAz8BaIh8W0LAVWg/+YzWTWyssXR4JOhQ2F4nDkSnPSydjS0OqX+ZikPcuPZAJLCybjnhDg6DQh1O0FPwi21gU0utWJDiXfu1ylC/xl4U5h/+YPG3eghtAQQgY6qNT0YAdRxRuwdEbHhQKosF+GeCZTbo6EQucIAuUcdtJApLdgDP0SBiqLMq1pUmQ==
Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14)
 by GV2P250MB0850.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:ae::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Wed, 19 Mar
 2025 21:20:25 +0000
Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 ([fe80::384d:40d4:ecb7:1c9%5]) with mapi id 15.20.8534.034; Wed, 19 Mar 2025
 21:20:25 +0000
Content-Type: multipart/mixed; boundary="------------9QiYbQBBvMxpoUafndAf0vI8"
Message-ID: <AS8P250MB07446BD9DA9523CB9EA6DDD88FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
Date: Wed, 19 Mar 2025 22:20:22 +0100
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <AS8P250MB0744A8DBC25ABEC4F82344B58FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
Content-Language: en-US
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
In-Reply-To: <AS8P250MB0744A8DBC25ABEC4F82344B58FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
X-ClientProxiedBy: ZR2P278CA0055.CHEP278.PROD.OUTLOOK.COM
 (2603:10a6:910:53::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:20b:541::14)
X-Microsoft-Original-Message-ID: <33ca4633-a826-442f-8243-095f16a1c477@outlook.com>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|GV2P250MB0850:EE_
X-MS-Office365-Filtering-Correlation-Id: 50c3e19a-c5ce-48de-567b-08dd672bdcc6
X-Microsoft-Antispam: BCL:0;
 ARA:14566002|19110799003|15080799006|5072599009|7092599003|6092099012|461199028|12121999004|8060799006|1602099012|4302099013|440099028|3412199025|20055399003;
X-Microsoft-Antispam-Message-Info: =?utf-8?B?SEJ3T0ZOaGtzbXB3by82UFYySFpNRjlIRmM5ekRyVDIvQ2prSmgrOVhkRnBa?=
 =?utf-8?B?b0pBa21nT1JlY3JPSGpVVUtQakFQMXRwWEJxL3JPVVdqSG5SVHdGdzd0M0li?=
 =?utf-8?B?VXdtR25XWUJHR2FudXRpTkVEb0RreXkxZEw3YTFnajl2MkNMRlQzN3I0Ymkx?=
 =?utf-8?B?SVNxSld5anNtOVZvUThxeS9jT24xWmNLYnd2Z3daVXdmTGNFaVhqSXhLbEt4?=
 =?utf-8?B?c2NDenFOUytoRFkyOStKTi8weWtORmJsdjVuNk5NMkxnb1puajlBU2tBTWgy?=
 =?utf-8?B?c2lSNVdPNElXTXpVdVVRdWVrU2VwbDlNTUlsekdNc2R4TEYyREFOVDlsYTZS?=
 =?utf-8?B?UmhNNmxFQmVqS1RZczJ3dFRxYVRBa3J6V2VJVkZsck4ySlJsYjMyOWZUemhn?=
 =?utf-8?B?Y0VpTHFZK1pNSVR1c1NjWVl6T0pqSTVKMkQwd2JoY1dEdEo2MFVYcGk4K2Fi?=
 =?utf-8?B?M256TGdsWHFhNDY0TlVYY1J5aGgvUjU4ZHM1ekdTcjZXVytOWjBWeTE5OHE0?=
 =?utf-8?B?QVpmQ2hKbGdwN0laRzNaWC9tRU9za1M3ayt0LzJtbFVpUENGeTZ5UEtoVU41?=
 =?utf-8?B?RG9SR29qTnRORGJ2eXlwdFpmVXUzOVlXcU9ndHNlcXNua0s4dnFzNGtYOGFj?=
 =?utf-8?B?aW9DV09wSG9YYW1zT2ttNldnWFVpUUdiUlRLTFh3QXRHNFZEM0Y5SDFkY3Yv?=
 =?utf-8?B?NE5XSldLOHlvWFowNGVWZGZQSjRpZW9GR1lrSmtyNWV2djFiRUFMYlM3RzZG?=
 =?utf-8?B?QTUwY1pIL2hQNzBUUGNyMm1Bd3FsbDRteDcwaVJ5MGlEaVhEQktRQ280NHdV?=
 =?utf-8?B?c3hDemR5MHNVZWsyNVpxa2tFZ2ZweUF3VUlJdmdoNkgxVklubVZWMXg0ejEr?=
 =?utf-8?B?aWpuWEdWQXNWdHdLc1dpSVh4TVpwRGM0R2xpdks5WHYxanlQa0E0dU1OdzhV?=
 =?utf-8?B?djRvM1FKa09sM2NHRUxkNzdYNE1BbmpHa1IvcVNNN3NLd2F4QTUrbmlNcnlr?=
 =?utf-8?B?Z0hTVmRhU21MZlRSRXh6anBKbUVlT0JRZG5UYVg3Y21pY2JmWFVCR3BoTGFJ?=
 =?utf-8?B?R1QwUGlFUHVpbWsvanhWWjlKYzJ4R1hhTmljeEpMdWtDSVZzNkFqcTZLNEJG?=
 =?utf-8?B?d1BSc0dOYUExUWt0TDNzdlk1SlhTRFhvc3p3aXpLcUJwZzhMQ1FVU2puWGZ1?=
 =?utf-8?B?QlFVajlIbm1sSXk5d25xbnlwNTdjOFNPMHF1YlVGVzVyQzFMTzlFbjY1T0l5?=
 =?utf-8?B?UWxhWThkQjNhQ291YjBQWUpGVlMvU0FyenRXem96a1BvN0JzUURET0F4VDhK?=
 =?utf-8?B?ZXJmTXl3V0JEN2FrMFMzOFE3aEhnZnJqUmdIQ2ZLVHZWZThSMWM3dkhhK3Rr?=
 =?utf-8?B?eFBCSG5tU3N6SlRvOVNvVWdSbFJ2VjJFYjJ5SEJ1bW9sQTIvR3FaejB5WUxh?=
 =?utf-8?B?b3VUMjdTMTFMTWRVOFovVnNwb3hBcCtEazk1cDdmZnp3YXBxYUpTWnNGb0Jr?=
 =?utf-8?B?UHNwTTBpSEJsL3R2TTNwK0xaS2JyZGNVSGMvUDdMNVBpWnplTm0rYzhWYldk?=
 =?utf-8?B?aHM2Sjh4Q2d5QWxoRTBtcEhFbmVueDlHWGl5TGVtWGZvSFZUWGY1WkJLS0Rv?=
 =?utf-8?B?WHlaSGNnR3VDNVR4eGJKc0s1Ynh0ZmdrQ0syYVc0d0UzU09QeVVPL2F0djEx?=
 =?utf-8?B?VDQ5TW9wODV5RGZxbEZyOVhNQWp4WTc4cG1CdmdRTzF6ekdTTzRpaE41a3NF?=
 =?utf-8?B?WnpHbFdpZXFiWGRZakRRYzZ6ZkV6SFZhb1hOd3ZUNklPWVluVWYrcWVzKzVp?=
 =?utf-8?B?Zi9jbHZ3YUlLOGFCZnB4dz09?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UjJKQ2ZISktTVzVIcXZia3VyM0ZNL0lvQlBENVJaMUtZL2JCVHRWQXVtZHZJ?=
 =?utf-8?B?R2toYVdnOUpWOThrR2pYcEZ0VHl4cU8vMkF6SVJNL1E0azMxQkNRcnVUeFB5?=
 =?utf-8?B?bmV3NFZ4Zll0R1B5OTVEek5OUHVtRmovL0ZMMXlMZ0JIS2hYRHJNamdaMCts?=
 =?utf-8?B?TERGRXFyc09URzF2dFFOZFhIYmdFRU50dGtkRERpeVN5SWRZQzU1MlRRRkty?=
 =?utf-8?B?c2xJN2x0blRFWHprZGl6cCsvMjUzTGhPYjZkWXNseFdvQUJOVFAvSVF6alNp?=
 =?utf-8?B?Tkc2dGxGNGg4ZlRCOUY1bE56Wno1THhuOHI4VnNnOStORUk4SXI4UFBxRGdj?=
 =?utf-8?B?bU5Ca29KY3dtOHZJWnpUczIrMEpCQit3eithQTVnWDRBZlhRcWM4S1lwd2hp?=
 =?utf-8?B?bkJWK2hzVjVuS2FSdGdlUVN2b0ZscDRXcnVKNzZkSmdkMHM4enpJZ1FPanJx?=
 =?utf-8?B?S1hyK2FCQThHcHZ0OTNZNUZRNkh2bE9IMXR4cVdPOVluV3UzRWZRMWJmQkJ3?=
 =?utf-8?B?aloyYXgwOE9INWcvTzVpSFJ6bTRSNTNRTk45L2p2dFJrbGhkdWR4VmVRU1Mx?=
 =?utf-8?B?UnVxSWpoa3JNbk1iRGZRQmhWTVN1NG84NmFVVE9XZ0s0TUJQemwvanU0Tno5?=
 =?utf-8?B?OGNtcEZhS1J1VFdBcXBra2p2c29Dcy94QWlWdGhtNGlJdllVaVJwSEI2QkJY?=
 =?utf-8?B?Z2FJaWpKbnh1eEVZVE9iVHRSeW9XNUUrRm9oTFhpRFVuWXh1cWtkS0d3VEww?=
 =?utf-8?B?bVhUMWo0V1JiRThHYU1rWFVRcmc2UzZLTW5BejF4NTE2WWtWRUFKT0tCS0dm?=
 =?utf-8?B?UEhUUnM4NVg1S1RjZXI5WjVpU0kyaTFCK1NBVmFQWlZaNHlrTjZtem56ODFC?=
 =?utf-8?B?Z0dGWFpzUVNtZmRQbm9kaytoZkxYTFlTbDI5YjZJdlVjMTRPU3NJQ084dFhQ?=
 =?utf-8?B?aGNyY3JXOTR0bkNJYjZHZ2NoNnRMNDRPQTRnNmNhYytiNkhKZTNxdlBsb293?=
 =?utf-8?B?ZHpWekpPRHpTYjJqZnc2dTY4QUV3NWo2WllQeGFpdWdhTG1ZMUJvWXFVOGFt?=
 =?utf-8?B?NXY4Wm9zeGNwaFdCK0FvOUozRlNpTVBEeWVqU1hNRDVVbDV1ejlWUUlGZ0tX?=
 =?utf-8?B?aXpnVmZ4UTdJdnFwUzEzdUIxTTFzY1kzK2NLaWRmckFmNDFiYk81bCs2WTZy?=
 =?utf-8?B?QktvQWliU29oYUduZm54djB2Nk1CM0MwOEk0dy9uNi9iYjZrMjIyTTlIcEtv?=
 =?utf-8?B?WHZ5Vnlsa0JiWTZscmdxbXA3SGVJM0d2T05KU0lwUnRIMWZsSjdMNzM5K0tU?=
 =?utf-8?B?QWpseGtBcnp5RDB3T1d0bURZV1VudGZ3RXdmbWd5dG92QUVTOGtoOWtGMDVh?=
 =?utf-8?B?K2FId2xRMCtXUnRXc1ZuOFpDMnRWbDQzYXA4U0dlczRWMlcwT2d6d2wrdklM?=
 =?utf-8?B?UllLam9IVFBDenNMNlVhSm90Yll3ek1KYjkxc2F5VHlZSjQzai9TUzdKcHZp?=
 =?utf-8?B?Y2lJZ2dCR2lrcFVDczR3a1JGdkFVU3BmSjFndFd4ZEg2dzF3QXZUdmFOM1FX?=
 =?utf-8?B?K1FwdnF0c0xRd293UW41bVdFQkdueTNIU1R4VmxXREFPYlJTbEhUaTRoTHFR?=
 =?utf-8?B?M2Q2empLc1NOaXFZVTgxZkZFRWJkOG1QT3JrVDFzc2RjOThNSkhZaWQxR2cv?=
 =?utf-8?B?T1lIMTZTRkNKTWdzaTI3VVRURitrRHRtclh6UmJjNWVDc2xiQ2dMeWtBPT0=?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 50c3e19a-c5ce-48de-567b-08dd672bdcc6
X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Mar 2025 21:20:24.8239 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2P250MB0850
Subject: Re: [FFmpeg-devel] [PATCH 01/77] avcodec/mpegvideo(_enc)?: Mark
 init, close functions as, av_cold
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/AS8P250MB07446BD9DA9523CB9EA6DDD88FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Andreas Rheinhardt:
> First part of a patchset; the second part will be sent separately
> because the complete set crosses the ML thresholds ("Message body is too
> big: 1731572 bytes with a limit of 1000 KB"). A complete branch can be
> found here: https://github.com/mkver/FFmpeg/tree/mpvenc
> 
> - Andreas

And here is the remainder.

- Andreas

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0063-avcodec-mpegvideoenc-Add-MPVEncContext.patch"
Content-Disposition: attachment;
 filename="0063-avcodec-mpegvideoenc-Add-MPVEncContext.patch"
Content-Transfer-Encoding: base64

RnJvbSA0ZWVjMmEzNjU0NTA5NzQxZTdhNDZmYjc4OGU0YjMwMDRhNWYwNWNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAwODoxMTowMSArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjMvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvZW5jOiBBZGQgTVBWRW5jQ29udGV4
dAoKTWFueSBvZiB0aGUgZmllbGRzIG9mIE1wZWdFbmNDb250ZXh0ICh3aGljaCBpcyBhbHNvIHVz
ZWQgYnkgZGVjb2RlcnMpCmFyZSBhY3R1YWxseSBvbmx5IHVzZWQgYnkgZW5jb2RlcnMuIFRoZXJl
Zm9yZSB0aGlzIGNvbW1pdCBhZGRzCmEgbmV3IGVuY29kZXItb25seSBzdHJ1Y3R1cmUgYW5kIG1v
dmVzIGFsbCBvZiB0aGUgZW5jb2Rlci1vbmx5CmZpZWxkcyB0byBpdCBleGNlcHQgZm9yIHRob3Nl
IHdoaWNoIHJlcXVpcmUgbW9yZSBleHBsaWNpdApzeW5jaHJvbmlzYXRpb24gYmV0d2VlbiB0aGUg
bWFpbiBzbGljZSBjb250ZXh0IGFuZCB0aGUgb3RoZXIKc2xpY2UgY29udGV4dHMuIFRoaXMgc3lu
Y2hyb25pc2F0aW9uIGlzIGN1cnJlbnRseSBtYWlubHkgcHJvdmlkZWQKYnkgZmZfdXBkYXRlX3Ro
cmVhZF9jb250ZXh0KCkgd2hpY2ggc2ltcGx5IGNvcGllcyBtb3N0IG9mCnRoZSBtYWluIHNsaWNl
IGNvbnRleHQgb3ZlciB0aGUgb3RoZXIgc2xpY2UgY29udGV4dHMuIEZpZWxkcwp3aGljaCBhcmUg
bW92ZWQgdG8gdGhlIG5ldyBNUFZFbmNDb250ZXh0IG5vIGxvbmdlciBwYXJ0aWNpcGF0ZQppbiB0
aGlzICh3aGljaCBpcyBkZXNpcmVkLCBiZWNhdXNlIGl0IGlzIGhvcnJpYmxlIGFuZCBmb3IgdGhl
CmZpZWxkcyBiKSBiZWxvdyB3YXN0ZWZ1bCkgd2hpY2ggbWVhbnMgdGhhdCBzb21lIGZpZWxkcyBj
YW4gb25seQpiZSBtb3ZlZCB3aGVuIGV4cGxpY2l0IHN5bmNocm9uaXNhdGlvbiBjb2RlIGlzIGFk
ZGVkIGluIGxhdGVyIGNvbW1pdHMuCgpNb3JlIGV4cGxpY2l0bHksIHRoaXMgY29tbWl0IG1vdmVz
IHRoZSBmb2xsb3dpbmcgZmllbGRzOgphKSBGaWVsZHMgbm90IGNvcGllZCBieSBmZl91cGRhdGVf
ZHVwbGljYXRlX2NvbnRleHQoKToKZGN0X2Vycm9yX3N1bSBhbmQgZGN0X2NvdW50OyB0aGUgZm9y
bWVyIGRvZXMgbm90IG5lZWQgc3luY2hyb25pc2F0aW9uLAp0aGUgbGF0dGVyIGlzIHN5bmNocm9u
aXNlZCBpbiBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29kZSgpLgpiKSBGaWVsZHMgd2hpY2ggZG8g
bm90IGNoYW5nZSBhZnRlciBpbml0aWFsaXNhdGlvbiAodGhlc2UgZmllbGRzCmNvdWxkIGFsc28g
YmUgcHV0IGludG8gTVBWTWFpbkVuY0NvbnRleHQgYXQgdGhlIGNvc3Qgb2YKYW4gaW5kaXJlY3Rp
b24gdG8gYWNjZXNzIHRoZW0pOiBsYW1iZGFfdGFibGUsIGFkYXB0aXZlX3F1YW50LAp7bHVtYSxj
aHJvbWF9X2VsaW1fdGhyZXNob2xkLCBuZXdfcGljLCBmZHNwLCBtcHZlbmNkc3AsIHBkc3AsCntw
LGJfZm9ydyxiX2JhY2ssYl9iaWRpcl9mb3J3LGJfYmlkaXJfYmFjayxiX2RpcmVjdCxiX2ZpZWxk
fV9tdl90YWJsZSwKW3BiXV9maWVsZF9zZWxlY3RfdGFibGUsIG1iX3t0eXBlLHZhcixtZWFufSwg
bWNfbWJfdmFyLCB7bWluLG1heH1fcWNvZWZmLAp7aW50ZXIsaW50cmF9X3F1YW50X2JpYXMsIGFj
X2VzY19sZW5ndGgsIHRoZSAqX3ZsY19sZW5ndGggZmllbGRzLAp0aGUgcV97aW50cmEsaW50ZXIs
Y2hyb21hX2ludHJhfV9tYXRyaXh7LDE2fSwgZGN0X29mZnNldCwgbWJfaW5mbywKbWpwZWdfY3R4
LCBydHBfbW9kZSwgcnRwX3BheWxvYWRfc2l6ZSwgZW5jb2RlX21iLCBhbGwgZnVuY3Rpb24KcG9p
bnRlcnMsIG1wdl9mbGFncywgcXVhbnRpemVyX25vaXNlX3NoYXBpbmcsCmZyYW1lX3JlY29uc3Ry
dWN0aW9uX2JpdGZpZWxkLCBlcnJvcl9yYXRlIGFuZCBpbnRyYV9wZW5hbHR5LgpjKSBGaWVsZHMg
d2hpY2ggYXJlIGFscmVhZHkgKHJlKXNldCBleHBsaWNpdGx5OiBUaGUgUHV0Qml0Q29udGV4dHMK
cGIsIHRleF9wYiwgcGIyOyBkcXVhbnQsIHNraXBkY3QsIGVuY29kaW5nX2Vycm9yLCB0aGUgc3Rh
dGlzdGljcwpmaWVsZHMge212LGlfdGV4LHBfdGV4LG1pc2MsbGFzdH1fYml0cyBhbmQgaV9jb3Vu
dDsgbGFzdF9tdl9kaXIsCmVzY19wb3MgKHJlc2V0IHdoZW4gd3JpdGluZyB0aGUgaGVhZGVyKS4K
ZCkgRmllbGRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgYnkgZW5jb2RlcnMgbm90IHN1cHBvcnRpbmcg
c2xpY2UKdGhyZWFkaW5nIGZvciB3aGljaCBzeW5jaHJvbmlzYXRpb24gZG9lc24ndCBtYXR0ZXI6
IGVzYzNfbGV2ZWxfbGVuZ3RoCmFuZCB0aGUgcmVtYWluaW5nIG1iX2luZm8gZmllbGRzLgplKSBj
b2RlZF9zY29yZTogVGhpcyBmaWVsZCBpcyBvbmx5IHJlYWxseSB1c2VkIHdoZW4gRkZfTVBWX0ZM
QUdfQ0JQX1JECmlzIHNldCAod2hpY2ggaW1wbGllcyB0cmVsbGlzKSBhbmQgZXZlbiB0aGVuIGl0
IGlzIG9ubHkgdXNlZCBmb3IKbm9uLWludHJhIGJsb2Nrcy4gRm9yIHRoZXNlIGJsb2NrcyBkY3Rf
cXVhbnRpemVfdHJlbGxpc19jKCkgZWl0aGVyCnNldHMgY29kZWRfc2NvcmVbbl0gb3IgcmV0dXJu
cyBhIGxhc3Rfbm9uX3plcm8gdmFsdWUgb2YgLTEKaW4gd2hpY2ggY2FzZSBjb2RlZF9zY29yZSB3
aWxsIGJlIHJlc2V0IGluIGVuY29kZV9tYl9pbnRlcm5hbCgpLgpUaGVyZWZvcmUgbm8gb2xkIHZh
bHVlcyBhcmUgZXZlciB1c2VkLgoKVGhlIE1vdGlvbkVzdENvbnRleHQgaGFzIG5vdCBiZWVuIG1v
dmVkIHlldC4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVp
bmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5pdF9h
YXJjaDY0LmMgICAgfCAgIDU4ICstCiBsaWJhdmNvZGVjL2FybS9tZV9jbXBfaW5pdF9hcm0uYyAg
ICAgICAgICAgIHwgICAxMSArLQogbGliYXZjb2RlYy9kbnhoZGVuYy5jICAgICAgICAgICAgICAg
ICAgICAgICB8ICAyODMgKystCiBsaWJhdmNvZGVjL2RueGhkZW5jLmggICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNCArLQogbGliYXZjb2RlYy9mbHZlbmMuYyAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMzIgKy0KIGxpYmF2Y29kZWMvaDI2MWVuYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgMTA0ICstCiBsaWJhdmNvZGVjL2gyNjFlbmMuaCAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgNCArLQogbGliYXZjb2RlYy9oMjYzZW5jLmggICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjYgKy0KIGxpYmF2Y29kZWMvaXR1aDI2M2VuYy5jICAgICAgICAgICAgICAgICAgICAgfCAg
MjQ4ICsrLQogbGliYXZjb2RlYy9tZV9jbXAuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx
MDAgKy0KIGxpYmF2Y29kZWMvbWVfY21wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2
ICstCiBsaWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaCAgICAgICAgICAgICAgIHwgICAzMiAr
LQogbGliYXZjb2RlYy9taXBzL21lX2NtcF9tc2EuYyAgICAgICAgICAgICAgICB8ICAgMjggKy0K
IGxpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9fbWlwcy5oICAgICAgICAgICAgfCAgICAzICstCiBs
aWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX2luaXRfbWlwcy5jICAgIHwgICAgMiArLQogbGli
YXZjb2RlYy9taXBzL21wZWd2aWRlb2VuY19tbWkuYyAgICAgICAgICB8ICAgIDQgKy0KIGxpYmF2
Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNkc3BfaW5pdF9taXBzLmMgfCAgICAxICsKIGxpYmF2Y29k
ZWMvbWlwcy9waXhibG9ja2RzcF9pbml0X21pcHMuYyAgICAgfCAgICAxICsKIGxpYmF2Y29kZWMv
bWlwcy9waXhibG9ja2RzcF9taXBzLmggICAgICAgICAgfCAgICAzICstCiBsaWJhdmNvZGVjL21q
cGVnZW5jLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA4NiArLQogbGliYXZjb2RlYy9tanBl
Z2VuYy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIGxpYmF2Y29kZWMvbW90aW9u
X2VzdC5jICAgICAgICAgICAgICAgICAgICAgfCAgNDk5ICsrLS0tCiBsaWJhdmNvZGVjL21vdGlv
bl9lc3QuaCAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArLQogbGliYXZjb2RlYy9tb3Rpb25f
ZXN0X3RlbXBsYXRlLmMgICAgICAgICAgICB8ICAxMDQgKy0KIGxpYmF2Y29kZWMvbXBlZzEyZW5j
LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNDYwICsrLS0KIGxpYmF2Y29kZWMvbXBlZzEyZW5j
LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBsaWJhdmNvZGVjL21wZWc0dmlkZW9l
bmMuYyAgICAgICAgICAgICAgICAgIHwgIDUwNSArKystLQogbGliYXZjb2RlYy9tcGVnNHZpZGVv
ZW5jLmggICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAzIC0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmggICAg
ICAgICAgICAgICAgICAgICAgfCAgMTIzICstCiBsaWJhdmNvZGVjL21wZWd2aWRlb19kZWMuYyAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgICAg
ICAgICAgICAgICAgICB8IDIxMDUgKysrKysrKysrKy0tLS0tLS0tLQogbGliYXZjb2RlYy9tcGVn
dmlkZW9lbmMuaCAgICAgICAgICAgICAgICAgICB8ICAxNTUgKy0KIGxpYmF2Y29kZWMvbXNtcGVn
NGVuYy5jICAgICAgICAgICAgICAgICAgICAgfCAgMTU2ICstCiBsaWJhdmNvZGVjL21zbXBlZzRl
bmMuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogbGliYXZjb2RlYy9wcGMvbWVfY21w
LmMgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKy0KIGxpYmF2Y29kZWMvcmF0ZWNvbnRyb2wu
YyAgICAgICAgICAgICAgICAgICAgfCAgMjUzICsrLQogbGliYXZjb2RlYy9yaXNjdi9tZV9jbXBf
aW5pdC5jICAgICAgICAgICAgICB8ICAgNDQgKy0KIGxpYmF2Y29kZWMvcnYxMGVuYy5jICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCiBsaWJhdmNvZGVjL3J2MjBlbmMuYyAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzNiArLQogbGliYXZjb2RlYy9zbm93X2R3dC5jICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTQgKy0KIGxpYmF2Y29kZWMvc25vd19kd3QuaCAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA2ICstCiBsaWJhdmNvZGVjL3Nub3dlbmMuYyAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDEyOCArLQogbGliYXZjb2RlYy9zcGVlZGhxZW5jLmMgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjggKy0KIGxpYmF2Y29kZWMvc3BlZWRocWVuYy5oICAgICAgICAgICAgICAg
ICAgICAgfCAgICA2ICstCiBsaWJhdmNvZGVjL3N2cTFlbmMuYyAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEyNiArLQogbGliYXZjb2RlYy93bXYyZW5jLmMgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNjYgKy0KIGxpYmF2Y29kZWMveDg2L21lX2NtcC5hc20gICAgICAgICAgICAgICAgICAg
fCAgIDE2ICstCiBsaWJhdmNvZGVjL3g4Ni9tZV9jbXBfaW5pdC5jICAgICAgICAgICAgICAgIHwg
ICA2MiArLQogbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvZW5jLmMgICAgICAgICAgICAgICB8ICAg
IDkgKy0KIGxpYmF2Y29kZWMveDg2L21wZWd2aWRlb2VuY190ZW1wbGF0ZS5jICAgICAgfCAgIDM4
ICstCiB0ZXN0cy9jaGVja2FzbS9tb3Rpb24uYyAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogNTIgZmlsZXMgY2hhbmdlZCwgMzA0NiBpbnNlcnRpb25zKCspLCAzMDMwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5pdF9hYXJjaDY0LmMg
Yi9saWJhdmNvZGVjL2FhcmNoNjQvbWVfY21wX2luaXRfYWFyY2g2NC5jCmluZGV4IGZhMjcyNDQw
M2QuLmRhYzY2NzY4ODYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5p
dF9hYXJjaDY0LmMKKysrIGIvbGliYXZjb2RlYy9hYXJjaDY0L21lX2NtcF9pbml0X2FhcmNoNjQu
YwpAQCAtMjEsNjYgKzIxLDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAibGli
YXZ1dGlsL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvYWFyY2g2NC9jcHUuaCIK
LSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMv
bXBlZ3ZpZGVvZW5jLmgiCiAKLWludCBmZl9waXhfYWJzMTZfbmVvbihNcGVnRW5jQ29udGV4dCAq
cywgY29uc3QgdWludDhfdCAqYmxrMSwgY29uc3QgdWludDhfdCAqYmxrMiwKK2ludCBmZl9waXhf
YWJzMTZfbmVvbihNUFZFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpibGsxLCBjb25zdCB1
aW50OF90ICpibGsyLAogICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu
dCBoKTsKLWludCBmZl9waXhfYWJzMTZfeHkyX25lb24oTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0
IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCitpbnQgZmZfcGl4X2FiczE2X3h5
Ml9uZW9uKE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4
X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu
dCBoKTsKLWludCBmZl9waXhfYWJzMTZfeDJfbmVvbihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeDJf
bmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90
ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo
KTsKLWludCBmZl9waXhfYWJzMTZfeTJfbmVvbihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu
dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeTJfbmVv
bihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw
aXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsK
LWludCBmZl9waXhfYWJzOF9uZW9uKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpi
bGsxLCBjb25zdCB1aW50OF90ICpibGsyLAoraW50IGZmX3BpeF9hYnM4X25lb24oTVBWRW5jQ29u
dGV4dCAqcywgY29uc3QgdWludDhfdCAqYmxrMSwgY29uc3QgdWludDhfdCAqYmxrMiwKICAgICAg
ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIAotaW50IHNzZTE2X25l
b24oTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCitpbnQgc3NlMTZfbmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw
aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk
ZSwgaW50IGgpOwotaW50IHNzZThfbmVvbihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhf
dCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBzc2U4X25lb24oTVBWRW5jQ29udGV4
dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAg
ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IHNzZTRfbmVvbihNcGVnRW5jQ29u
dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBz
c2U0X25lb24oTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu
dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogCi1p
bnQgdnNhZDE2X25lb24oTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25z
dCB1aW50OF90ICpzMiwKK2ludCB2c2FkMTZfbmVvbihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1
aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgcHRyZGlmZl90
IHN0cmlkZSwgaW50IGgpOwotaW50IHZzYWRfaW50cmExNl9uZW9uKE1wZWdFbmNDb250ZXh0ICpj
LCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1teSwKK2ludCB2c2FkX2ludHJh
MTZfbmVvbihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90
ICpkdW1teSwKICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkg
OwotaW50IHZzYWRfaW50cmE4X25lb24oTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3Qg
KnMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LAoraW50IHZzYWRfaW50cmE4X25lb24oTVBWRW5jQ29u
dGV4dCAqYywgY29uc3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCiAgICAgICAg
ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgOwotaW50IHZzc2UxNl9uZW9u
KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIs
CitpbnQgdnNzZTE2X25lb24oTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNv
bnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo
KTsKLWludCB2c3NlX2ludHJhMTZfbmVvbihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhf
dCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCitpbnQgdnNzZV9pbnRyYTE2X25lb24oTVBWRW5j
Q29udGV4dCAqYywgY29uc3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCiAgICAg
ICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogaW50IG5zc2UxNl9u
ZW9uKGludCBtdWx0aXBsaWVyLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpzMiwK
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgbnNzZTE2X25l
b25fd3JhcHBlcihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVp
bnQ4X3QgKnMyLAoraW50IG5zc2UxNl9uZW9uX3dyYXBwZXIoTVBWRW5jQ29udGV4dCAqYywgY29u
c3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IHBpeF9tZWRpYW5fYWJzMTZfbmVvbihN
cGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4
MiwKK2ludCBwaXhfbWVkaWFuX2FiczE2X25lb24oTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu
dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IHBpeF9tZWRpYW5fYWJzOF9uZW9uKE1w
ZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgy
LAoraW50IHBpeF9tZWRpYW5fYWJzOF9uZW9uKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4
X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
cHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3gyX25lb24oTXBlZ0Vu
Y0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitp
bnQgZmZfcGl4X2FiczhfeDJfbmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw
aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlm
Zl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3kyX25lb24oTXBlZ0VuY0NvbnRl
eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZf
cGl4X2FiczhfeTJfbmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj
b25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3h5Ml9uZW9uKE1wZWdFbmNDb250ZXh0ICp2
LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9h
YnM4X3h5Ml9uZW9uKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0
IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk
ZSwgaW50IGgpOwogCiBpbnQgbnNzZThfbmVvbihpbnQgbXVsdGlwbGllciwgY29uc3QgdWludDhf
dCAqcywgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRl
LCBpbnQgaCk7Ci1pbnQgbnNzZThfbmVvbl93cmFwcGVyKE1wZWdFbmNDb250ZXh0ICpjLCBjb25z
dCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCitpbnQgbnNzZThfbmVvbl93cmFwcGVy
KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogCi1pbnQg
dnNzZThfbmVvbihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVp
bnQ4X3QgKnMyLAoraW50IHZzc2U4X25lb24oTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhf
dCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk
ZSwgaW50IGgpOwogCi1pbnQgdnNzZV9pbnRyYThfbmVvbihNcGVnRW5jQ29udGV4dCAqYywgY29u
c3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCitpbnQgdnNzZV9pbnRyYThfbmVv
bihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1t
eSwKICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIAogI2lm
IEhBVkVfRE9UUFJPRAotaW50IHNzZTE2X25lb25fZG90cHJvZChNcGVnRW5jQ29udGV4dCAqdiwg
Y29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBzc2UxNl9uZW9u
X2RvdHByb2QoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu
dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50
IGgpOwotaW50IHZzc2VfaW50cmExNl9uZW9uX2RvdHByb2QoTXBlZ0VuY0NvbnRleHQgKmMsIGNv
bnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKK2ludCB2c3NlX2ludHJhMTZfbmVv
bl9kb3Rwcm9kKE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50
OF90ICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUs
IGludCBoKTsKICNlbmRpZgogCkBAIC0xMjksMjAgKzEyOSwyMCBAQCBhdl9jb2xkIHZvaWQgZmZf
bWVfY21wX2luaXRfYWFyY2g2NChNRUNtcENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0
eCkKICNlbmRpZgogfQogCi1pbnQgbnNzZTE2X25lb25fd3JhcHBlcihNcGVnRW5jQ29udGV4dCAq
YywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAoraW50IG5zc2UxNl9uZW9u
X3dyYXBwZXIoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4
X3QgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgp
CiB7CiAgICAgaWYgKGMpCi0gICAgICAgIHJldHVybiBuc3NlMTZfbmVvbihjLT5hdmN0eC0+bnNz
ZV93ZWlnaHQsIHMxLCBzMiwgc3RyaWRlLCBoKTsKKyAgICAgICAgcmV0dXJuIG5zc2UxNl9uZW9u
KGMtPmMuYXZjdHgtPm5zc2Vfd2VpZ2h0LCBzMSwgczIsIHN0cmlkZSwgaCk7CiAgICAgZWxzZQog
ICAgICAgICByZXR1cm4gbnNzZTE2X25lb24oOCwgczEsIHMyLCBzdHJpZGUsIGgpOwogfQogCi1p
bnQgbnNzZThfbmVvbl93cmFwcGVyKE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpz
MSwgY29uc3QgdWludDhfdCAqczIsCitpbnQgbnNzZThfbmVvbl93cmFwcGVyKE1QVkVuY0NvbnRl
eHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaWYgKGMpCi0gICAg
ICAgIHJldHVybiBuc3NlOF9uZW9uKGMtPmF2Y3R4LT5uc3NlX3dlaWdodCwgczEsIHMyLCBzdHJp
ZGUsIGgpOworICAgICAgICByZXR1cm4gbnNzZThfbmVvbihjLT5jLmF2Y3R4LT5uc3NlX3dlaWdo
dCwgczEsIHMyLCBzdHJpZGUsIGgpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG5zc2U4X25l
b24oOCwgczEsIHMyLCBzdHJpZGUsIGgpOwogfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcm0v
bWVfY21wX2luaXRfYXJtLmMgYi9saWJhdmNvZGVjL2FybS9tZV9jbXBfaW5pdF9hcm0uYwppbmRl
eCA4YzU1NmYxNzU1Li5hNDdlMmJjNGZhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2FybS9tZV9j
bXBfaW5pdF9hcm0uYworKysgYi9saWJhdmNvZGVjL2FybS9tZV9jbXBfaW5pdF9hcm0uYwpAQCAt
MjMsMTkgKzIzLDE4IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL2FybS9jcHUuaCIKICNpbmNsdWRl
ICJsaWJhdmNvZGVjL2F2Y29kZWMuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL21lX2NtcC5oIgot
I2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgiCiAKLWludCBmZl9waXhfYWJzMTZfYXJt
djYoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3Qg
KmJsazIsCitpbnQgZmZfcGl4X2FiczE2X2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVp
bnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzMTZfeDJfYXJtdjYoTXBl
Z0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIs
CitpbnQgZmZfcGl4X2FiczE2X3gyX2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4
X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzMTZfeTJfYXJtdjYoTXBl
Z0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIs
CitpbnQgZmZfcGl4X2FiczE2X3kyX2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4
X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIAotaW50IGZmX3BpeF9hYnM4X2FybXY2KE1wZWdF
bmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpibGsxLCBjb25zdCB1aW50OF90ICpibGsyLAor
aW50IGZmX3BpeF9hYnM4X2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJs
azEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90
IHN0cmlkZSwgaW50IGgpOwogCi1pbnQgZmZfc3NlMTZfYXJtdjYoTXBlZ0VuY0NvbnRleHQgKnMs
IGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCitpbnQgZmZfc3NlMTZf
YXJtdjYoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYmxrMSwgY29uc3QgdWludDhf
dCAqYmxrMiwKICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7CiAK
IGF2X2NvbGQgdm9pZCBmZl9tZV9jbXBfaW5pdF9hcm0oTUVDbXBDb250ZXh0ICpjLCBBVkNvZGVj
Q29udGV4dCAqYXZjdHgpCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RueGhkZW5jLmMgYi9saWJh
dmNvZGVjL2RueGhkZW5jLmMKaW5kZXggNjAwOWUzOTJmOC4uYThmOGFiM2NkOSAxMDA2NDQKLS0t
IGEvbGliYXZjb2RlYy9kbnhoZGVuYy5jCisrKyBiL2xpYmF2Y29kZWMvZG54aGRlbmMuYwpAQCAt
MTE3LDEyICsxMTcsMTIgQEAgdm9pZCBkbnhoZF8xMGJpdF9nZXRfcGl4ZWxzXzh4NF9zeW0oaW50
MTZfdCAqcmVzdHJpY3QgYmxvY2ssCiAgICAgbWVtY3B5KGJsb2NrICsgNCAqIDgsIHBpeGVscyAr
IDMgKiBsaW5lX3NpemUsIDggKiBzaXplb2YoKmJsb2NrKSk7CiB9CiAKLXN0YXRpYyBpbnQgZG54
aGRfMTBiaXRfZGN0X3F1YW50aXplXzQ0NChNcGVnRW5jQ29udGV4dCAqY3R4LCBpbnQxNl90ICpi
bG9jaywKK3N0YXRpYyBpbnQgZG54aGRfMTBiaXRfZGN0X3F1YW50aXplXzQ0NChNUFZFbmNDb250
ZXh0ICpjdHgsIGludDE2X3QgKmJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBuLCBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KQogewogICAgIGludCBp
LCBqLCBsZXZlbCwgbGFzdF9ub25femVybywgc3RhcnRfaTsKICAgICBjb25zdCBpbnQgKnFtYXQ7
Ci0gICAgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlPSBjdHgtPmludHJhX3NjYW50YWJsZS5zY2Fu
dGFibGU7CisgICAgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlID0gY3R4LT5jLmludHJhX3NjYW50
YWJsZS5zY2FudGFibGU7CiAgICAgaW50IGJpYXM7CiAgICAgaW50IG1heCA9IDA7CiAgICAgdW5z
aWduZWQgaW50IHRocmVzaG9sZDEsIHRocmVzaG9sZDI7CkBAIC0xNjksMTcgKzE2OSwxNyBAQCBz
dGF0aWMgaW50IGRueGhkXzEwYml0X2RjdF9xdWFudGl6ZV80NDQoTXBlZ0VuY0NvbnRleHQgKmN0
eCwgaW50MTZfdCAqYmxvY2ssCiAgICAgKm92ZXJmbG93ID0gY3R4LT5tYXhfcWNvZWZmIDwgbWF4
OyAvL292ZXJmbG93IG1pZ2h0IGhhdmUgaGFwcGVuZWQKIAogICAgIC8qIHdlIG5lZWQgdGhpcyBw
ZXJtdXRhdGlvbiBzbyB0aGF0IHdlIGNvcnJlY3QgdGhlIElEQ1QsIHdlIG9ubHkgcGVybXV0ZSB0
aGUgIT0wIGVsZW1lbnRzICovCi0gICAgaWYgKGN0eC0+aWRzcC5wZXJtX3R5cGUgIT0gRkZfSURD
VF9QRVJNX05PTkUpCi0gICAgICAgIGZmX2Jsb2NrX3Blcm11dGUoYmxvY2ssIGN0eC0+aWRzcC5p
ZGN0X3Blcm11dGF0aW9uLAorICAgIGlmIChjdHgtPmMuaWRzcC5wZXJtX3R5cGUgIT0gRkZfSURD
VF9QRVJNX05PTkUpCisgICAgICAgIGZmX2Jsb2NrX3Blcm11dGUoYmxvY2ssIGN0eC0+Yy5pZHNw
LmlkY3RfcGVybXV0YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbnRhYmxlLCBs
YXN0X25vbl96ZXJvKTsKIAogICAgIHJldHVybiBsYXN0X25vbl96ZXJvOwogfQogCi1zdGF0aWMg
aW50IGRueGhkXzEwYml0X2RjdF9xdWFudGl6ZShNcGVnRW5jQ29udGV4dCAqY3R4LCBpbnQxNl90
ICpibG9jaywKK3N0YXRpYyBpbnQgZG54aGRfMTBiaXRfZGN0X3F1YW50aXplKE1QVkVuY0NvbnRl
eHQgKmN0eCwgaW50MTZfdCAqYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbiwgaW50IHFzY2FsZSwgaW50ICpvdmVyZmxvdykKIHsKLSAgICBjb25zdCB1aW50
OF90ICpzY2FudGFibGU9IGN0eC0+aW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsKKyAgICBjb25z
dCB1aW50OF90ICpzY2FudGFibGUgPSBjdHgtPmMuaW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsK
ICAgICBjb25zdCBpbnQgKnFtYXQgPSBuPDQgPyBjdHgtPnFfaW50cmFfbWF0cml4W3FzY2FsZV0g
OiBjdHgtPnFfY2hyb21hX2ludHJhX21hdHJpeFtxc2NhbGVdOwogICAgIGludCBsYXN0X25vbl96
ZXJvID0gMDsKICAgICBpbnQgaTsKQEAgLTIwMCw4ICsyMDAsOCBAQCBzdGF0aWMgaW50IGRueGhk
XzEwYml0X2RjdF9xdWFudGl6ZShNcGVnRW5jQ29udGV4dCAqY3R4LCBpbnQxNl90ICpibG9jaywK
ICAgICB9CiAKICAgICAvKiB3ZSBuZWVkIHRoaXMgcGVybXV0YXRpb24gc28gdGhhdCB3ZSBjb3Jy
ZWN0IHRoZSBJRENULCB3ZSBvbmx5IHBlcm11dGUgdGhlICE9MCBlbGVtZW50cyAqLwotICAgIGlm
IChjdHgtPmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9OT05FKQotICAgICAgICBmZl9i
bG9ja19wZXJtdXRlKGJsb2NrLCBjdHgtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbiwKKyAgICBpZiAo
Y3R4LT5jLmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9OT05FKQorICAgICAgICBmZl9i
bG9ja19wZXJtdXRlKGJsb2NrLCBjdHgtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjYW50YWJsZSwgbGFzdF9ub25femVybyk7CiAKICAgICByZXR1
cm4gbGFzdF9ub25femVybzsKQEAgLTI2NiwzNCArMjY2LDMzIEBAIHN0YXRpYyBhdl9jb2xkIGlu
dCBkbnhoZF9pbml0X3FtYXQoRE5YSERFbmNDb250ZXh0ICpjdHgsIGludCBsYmlhcywgaW50IGNi
aWFzKQogewogICAgIC8vIGluaXQgZmlyc3QgZWxlbSB0byAxIHRvIGF2b2lkIGRpdiBieSAwIGlu
IGNvbnZlcnRfbWF0cml4CiAgICAgdWludDE2X3Qgd2VpZ2h0X21hdHJpeFs2NF0gPSB7IDEsIH07
IC8vIGNvbnZlcnRfbWF0cml4IG5lZWRzIHVpbnQxNl90KgotICAgIGludCBxc2NhbGUsIGk7CiAg
ICAgY29uc3QgdWludDhfdCAqbHVtYV93ZWlnaHRfdGFibGUgICA9IGN0eC0+Y2lkX3RhYmxlLT5s
dW1hX3dlaWdodDsKICAgICBjb25zdCB1aW50OF90ICpjaHJvbWFfd2VpZ2h0X3RhYmxlID0gY3R4
LT5jaWRfdGFibGUtPmNocm9tYV93ZWlnaHQ7CiAKLSAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9B
UlJBWShjdHgtPnFtYXRyaXhfbCwgICBjdHgtPm0uYXZjdHgtPnFtYXggKyAxKSB8fAotICAgICAg
ICAhRkZfQUxMT0NaX1RZUEVEX0FSUkFZKGN0eC0+cW1hdHJpeF9jLCAgIGN0eC0+bS5hdmN0eC0+
cW1heCArIDEpIHx8Ci0gICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJSQVkoY3R4LT5xbWF0cml4
X2wxNiwgY3R4LT5tLmF2Y3R4LT5xbWF4ICsgMSkgfHwKLSAgICAgICAgIUZGX0FMTE9DWl9UWVBF
RF9BUlJBWShjdHgtPnFtYXRyaXhfYzE2LCBjdHgtPm0uYXZjdHgtPnFtYXggKyAxKSkKKyAgICBp
ZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPnFtYXRyaXhfbCwgICBjdHgtPm0uYy5hdmN0
eC0+cW1heCArIDEpIHx8CisgICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJSQVkoY3R4LT5xbWF0
cml4X2MsICAgY3R4LT5tLmMuYXZjdHgtPnFtYXggKyAxKSB8fAorICAgICAgICAhRkZfQUxMT0Na
X1RZUEVEX0FSUkFZKGN0eC0+cW1hdHJpeF9sMTYsIGN0eC0+bS5jLmF2Y3R4LT5xbWF4ICsgMSkg
fHwKKyAgICAgICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPnFtYXRyaXhfYzE2LCBjdHgt
Pm0uYy5hdmN0eC0+cW1heCArIDEpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwog
CiAgICAgaWYgKGN0eC0+Yml0X2RlcHRoID09IDgpIHsKLSAgICAgICAgZm9yIChpID0gMTsgaSA8
IDY0OyBpKyspIHsKLSAgICAgICAgICAgIGludCBqID0gY3R4LT5tLmlkc3AuaWRjdF9wZXJtdXRh
dGlvbltmZl96aWd6YWdfZGlyZWN0W2ldXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA2
NDsgaSsrKSB7CisgICAgICAgICAgICBpbnQgaiA9IGN0eC0+bS5jLmlkc3AuaWRjdF9wZXJtdXRh
dGlvbltmZl96aWd6YWdfZGlyZWN0W2ldXTsKICAgICAgICAgICAgIHdlaWdodF9tYXRyaXhbal0g
PSBjdHgtPmNpZF90YWJsZS0+bHVtYV93ZWlnaHRbaV07CiAgICAgICAgIH0KICAgICAgICAgZmZf
Y29udmVydF9tYXRyaXgoJmN0eC0+bSwgY3R4LT5xbWF0cml4X2wsIGN0eC0+cW1hdHJpeF9sMTYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodF9tYXRyaXgsIGN0eC0+aW50cmFfcXVh
bnRfYmlhcywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5tLmF2Y3R4LT5xbWF4
LCAxKTsKLSAgICAgICAgZm9yIChpID0gMTsgaSA8IDY0OyBpKyspIHsKLSAgICAgICAgICAgIGlu
dCBqID0gY3R4LT5tLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltmZl96aWd6YWdfZGlyZWN0W2ldXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5tLmMuYXZjdHgtPnFtYXgsIDEpOworICAg
ICAgICBmb3IgKGludCBpID0gMTsgaSA8IDY0OyBpKyspIHsKKyAgICAgICAgICAgIGludCBqID0g
Y3R4LT5tLmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2ZmX3ppZ3phZ19kaXJlY3RbaV1dOwogICAg
ICAgICAgICAgd2VpZ2h0X21hdHJpeFtqXSA9IGN0eC0+Y2lkX3RhYmxlLT5jaHJvbWFfd2VpZ2h0
W2ldOwogICAgICAgICB9CiAgICAgICAgIGZmX2NvbnZlcnRfbWF0cml4KCZjdHgtPm0sIGN0eC0+
cW1hdHJpeF9jLCBjdHgtPnFtYXRyaXhfYzE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWlnaHRfbWF0cml4LCBjdHgtPmludHJhX3F1YW50X2JpYXMsIDEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGN0eC0+bS5hdmN0eC0+cW1heCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN0eC0+bS5jLmF2Y3R4LT5xbWF4LCAxKTsKIAotICAgICAgICBmb3IgKHFzY2FsZSA9IDE7
IHFzY2FsZSA8PSBjdHgtPm0uYXZjdHgtPnFtYXg7IHFzY2FsZSsrKSB7Ci0gICAgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgeworICAgICAgICBmb3IgKGludCBxc2NhbGUgPSAxOyBx
c2NhbGUgPD0gY3R4LT5tLmMuYXZjdHgtPnFtYXg7IHFzY2FsZSsrKSB7CisgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IDY0OyBpKyspIHsKICAgICAgICAgICAgICAgICBjdHgtPnFtYXRy
aXhfbFtxc2NhbGVdW2ldICAgICAgPDw9IDI7CiAgICAgICAgICAgICAgICAgY3R4LT5xbWF0cml4
X2NbcXNjYWxlXVtpXSAgICAgIDw8PSAyOwogICAgICAgICAgICAgICAgIGN0eC0+cW1hdHJpeF9s
MTZbcXNjYWxlXVswXVtpXSA8PD0gMjsKQEAgLTMwNCw4ICszMDMsOCBAQCBzdGF0aWMgYXZfY29s
ZCBpbnQgZG54aGRfaW5pdF9xbWF0KEROWEhERW5jQ29udGV4dCAqY3R4LCBpbnQgbGJpYXMsIGlu
dCBjYmlhcykKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIDEwLWJpdAotICAg
ICAgICBmb3IgKHFzY2FsZSA9IDE7IHFzY2FsZSA8PSBjdHgtPm0uYXZjdHgtPnFtYXg7IHFzY2Fs
ZSsrKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgNjQ7IGkrKykgeworICAgICAgICBm
b3IgKGludCBxc2NhbGUgPSAxOyBxc2NhbGUgPD0gY3R4LT5tLmMuYXZjdHgtPnFtYXg7IHFzY2Fs
ZSsrKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDY0OyBpKyspIHsKICAgICAg
ICAgICAgICAgICBpbnQgaiA9IGZmX3ppZ3phZ19kaXJlY3RbaV07CiAKICAgICAgICAgICAgICAg
ICAvKiBUaGUgcXVhbnRpemF0aW9uIGZvcm11bGEgZnJvbSB0aGUgVkMtMyBzdGFuZGFyZCBpczoK
QEAgLTMzNywxMiArMzM2LDEyIEBAIHN0YXRpYyBhdl9jb2xkIGludCBkbnhoZF9pbml0X3FtYXQo
RE5YSERFbmNDb250ZXh0ICpjdHgsIGludCBsYmlhcywgaW50IGNiaWFzKQogCiBzdGF0aWMgYXZf
Y29sZCBpbnQgZG54aGRfaW5pdF9yYyhETlhIREVuY0NvbnRleHQgKmN0eCkKIHsKLSAgICBpZiAo
IUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX3JjLCAoY3R4LT5tLmF2Y3R4LT5xbWF4ICsg
MSkgKiBjdHgtPm0ubWJfbnVtKSkKKyAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgt
Pm1iX3JjLCAoY3R4LT5tLmMuYXZjdHgtPnFtYXggKyAxKSAqIGN0eC0+bS5jLm1iX251bSkpCiAg
ICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICBpZiAoY3R4LT5tLmF2Y3R4LT5t
Yl9kZWNpc2lvbiAhPSBGRl9NQl9ERUNJU0lPTl9SRCkgewotICAgICAgICBpZiAoIUZGX0FMTE9D
Wl9UWVBFRF9BUlJBWShjdHgtPm1iX2NtcCwgICAgIGN0eC0+bS5tYl9udW0pIHx8Ci0gICAgICAg
ICAgICAhRkZfQUxMT0NaX1RZUEVEX0FSUkFZKGN0eC0+bWJfY21wX3RtcCwgY3R4LT5tLm1iX251
bSkpCisgICAgaWYgKGN0eC0+bS5jLmF2Y3R4LT5tYl9kZWNpc2lvbiAhPSBGRl9NQl9ERUNJU0lP
Tl9SRCkgeworICAgICAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX2NtcCwg
ICAgIGN0eC0+bS5jLm1iX251bSkgfHwKKyAgICAgICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJS
QVkoY3R4LT5tYl9jbXBfdG1wLCBjdHgtPm0uYy5tYl9udW0pKQogICAgICAgICAgICAgcmV0dXJu
IEFWRVJST1IoRU5PTUVNKTsKICAgICB9CiAgICAgY3R4LT5mcmFtZV9iaXRzID0gKGN0eC0+Y29k
aW5nX3VuaXRfc2l6ZSAtCkBAIC00MTQsMjEgKzQxMywyMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQg
ZG54aGRfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgIGN0eC0+Y2lkX3Rh
YmxlID0gZmZfZG54aGRfZ2V0X2NpZF90YWJsZShjdHgtPmNpZCk7CiAgICAgYXZfYXNzZXJ0MChj
dHgtPmNpZF90YWJsZSk7CiAKLSAgICBjdHgtPm0uYXZjdHggICAgPSBhdmN0eDsKLSAgICBjdHgt
Pm0ubWJfaW50cmEgPSAxOwotICAgIGN0eC0+bS5oMjYzX2FpYyA9IDE7CisgICAgY3R4LT5tLmMu
YXZjdHggICAgPSBhdmN0eDsKKyAgICBjdHgtPm0uYy5tYl9pbnRyYSA9IDE7CisgICAgY3R4LT5t
LmMuaDI2M19haWMgPSAxOwogCiAgICAgYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgPSBjdHgt
PmJpdF9kZXB0aDsKIAotICAgIGZmX2Jsb2NrZHNwX2luaXQoJmN0eC0+bS5iZHNwKTsKKyAgICBm
Zl9ibG9ja2RzcF9pbml0KCZjdHgtPm0uYy5iZHNwKTsKICAgICBmZl9mZGN0ZHNwX2luaXQoJmN0
eC0+bS5mZHNwLCBhdmN0eCk7Ci0gICAgZmZfbXB2X2lkY3RfaW5pdCgmY3R4LT5tKTsKKyAgICBm
Zl9tcHZfaWRjdF9pbml0KCZjdHgtPm0uYyk7CiAgICAgZmZfbXBlZ3ZpZGVvZW5jZHNwX2luaXQo
JmN0eC0+bS5tcHZlbmNkc3AsIGF2Y3R4KTsKICAgICBmZl9waXhibG9ja2RzcF9pbml0KCZjdHgt
Pm0ucGRzcCwgYXZjdHgpOwogICAgIGZmX2RjdF9lbmNvZGVfaW5pdCgmY3R4LT5tKTsKIAogICAg
IGlmIChjdHgtPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9ETlhIRCkKLSAgICAgICAgZmZfdmlkZW9k
c3BfaW5pdCgmY3R4LT5tLnZkc3AsIGN0eC0+Yml0X2RlcHRoKTsKKyAgICAgICAgZmZfdmlkZW9k
c3BfaW5pdCgmY3R4LT5tLmMudmRzcCwgY3R4LT5iaXRfZGVwdGgpOwogCiAgICAgaWYgKGN0eC0+
aXNfNDQ0IHx8IGN0eC0+cHJvZmlsZSA9PSBBVl9QUk9GSUxFX0ROWEhSX0hRWCkgewogICAgICAg
ICBjdHgtPm0uZGN0X3F1YW50aXplICAgICA9IGRueGhkXzEwYml0X2RjdF9xdWFudGl6ZV80NDQ7
CkBAIC00NDUsMTIgKzQ0NCwxMiBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZG54aGRfZW5jb2RlX2lu
aXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogCiAgICAgZmZfZG54aGRlbmNfaW5pdChjdHgpOwog
Ci0gICAgY3R4LT5tLm1iX2hlaWdodCA9IChhdmN0eC0+aGVpZ2h0ICsgMTUpIC8gMTY7Ci0gICAg
Y3R4LT5tLm1iX3dpZHRoICA9IChhdmN0eC0+d2lkdGggICsgMTUpIC8gMTY7CisgICAgY3R4LT5t
LmMubWJfaGVpZ2h0ID0gKGF2Y3R4LT5oZWlnaHQgKyAxNSkgLyAxNjsKKyAgICBjdHgtPm0uYy5t
Yl93aWR0aCAgPSAoYXZjdHgtPndpZHRoICArIDE1KSAvIDE2OwogCiAgICAgaWYgKGF2Y3R4LT5m
bGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QpIHsKICAgICAgICAgY3R4LT5pbnRl
cmxhY2VkICAgPSAxOwotICAgICAgICBjdHgtPm0ubWJfaGVpZ2h0IC89IDI7CisgICAgICAgIGN0
eC0+bS5jLm1iX2hlaWdodCAvPSAyOwogICAgIH0KIAogICAgIGlmIChjdHgtPmludGVybGFjZWQg
JiYgY3R4LT5wcm9maWxlICE9IEFWX1BST0ZJTEVfRE5YSEQpIHsKQEAgLTQ1OSw3ICs0NTgsNyBA
QCBzdGF0aWMgYXZfY29sZCBpbnQgZG54aGRfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2
Y3R4KQogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAotICAgIGN0eC0+
bS5tYl9udW0gPSBjdHgtPm0ubWJfaGVpZ2h0ICogY3R4LT5tLm1iX3dpZHRoOworICAgIGN0eC0+
bS5jLm1iX251bSA9IGN0eC0+bS5jLm1iX2hlaWdodCAqIGN0eC0+bS5jLm1iX3dpZHRoOwogCiAg
ICAgaWYgKGN0eC0+Y2lkX3RhYmxlLT5mcmFtZV9zaXplID09IEROWEhEX1ZBUklBQkxFKSB7CiAg
ICAgICAgIGN0eC0+ZnJhbWVfc2l6ZSA9IGZmX2RueGhkX2dldF9ocl9mcmFtZV9zaXplKGN0eC0+
Y2lkLApAQCAtNDcxLDggKzQ3MCw4IEBAIHN0YXRpYyBhdl9jb2xkIGludCBkbnhoZF9lbmNvZGVf
aW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIGN0eC0+Y29kaW5nX3VuaXRfc2l6
ZSA9IGN0eC0+Y2lkX3RhYmxlLT5jb2RpbmdfdW5pdF9zaXplOwogICAgIH0KIAotICAgIGlmIChj
dHgtPm0ubWJfaGVpZ2h0ID4gNjgpCi0gICAgICAgIGN0eC0+ZGF0YV9vZmZzZXQgPSAweDE3MCAr
IChjdHgtPm0ubWJfaGVpZ2h0IDw8IDIpOworICAgIGlmIChjdHgtPm0uYy5tYl9oZWlnaHQgPiA2
OCkKKyAgICAgICAgY3R4LT5kYXRhX29mZnNldCA9IDB4MTcwICsgKGN0eC0+bS5jLm1iX2hlaWdo
dCA8PCAyKTsKICAgICBlbHNlCiAgICAgICAgIGN0eC0+ZGF0YV9vZmZzZXQgPSAweDI4MDsKIApA
QCAtNDkwLDEwICs0ODksMTAgQEAgc3RhdGljIGF2X2NvbGQgaW50IGRueGhkX2VuY29kZV9pbml0
KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBpZiAoKHJldCA9IGRueGhkX2luaXRfcmMoY3R4
KSkgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCi0gICAgaWYgKCFGRl9BTExPQ1pfVFlQRURf
QVJSQVkoY3R4LT5zbGljZV9zaXplLCBjdHgtPm0ubWJfaGVpZ2h0KSB8fAotICAgICAgICAhRkZf
QUxMT0NaX1RZUEVEX0FSUkFZKGN0eC0+c2xpY2Vfb2ZmcywgY3R4LT5tLm1iX2hlaWdodCkgfHwK
LSAgICAgICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX2JpdHMsICAgIGN0eC0+bS5t
Yl9udW0pICAgIHx8Ci0gICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJSQVkoY3R4LT5tYl9xc2Nh
bGUsICBjdHgtPm0ubWJfbnVtKSkKKyAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgt
PnNsaWNlX3NpemUsIGN0eC0+bS5jLm1iX2hlaWdodCkgfHwKKyAgICAgICAgIUZGX0FMTE9DWl9U
WVBFRF9BUlJBWShjdHgtPnNsaWNlX29mZnMsIGN0eC0+bS5jLm1iX2hlaWdodCkgfHwKKyAgICAg
ICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX2JpdHMsICAgIGN0eC0+bS5jLm1iX251
bSkgICAgfHwKKyAgICAgICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX3FzY2FsZSwg
IGN0eC0+bS5jLm1iX251bSkpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKICAg
ICBpZiAoYXZjdHgtPmFjdGl2ZV90aHJlYWRfdHlwZSA9PSBGRl9USFJFQURfU0xJQ0UpIHsKQEAg
LTU0OCw4ICs1NDcsOCBAQCBzdGF0aWMgaW50IGRueGhkX3dyaXRlX2hlYWRlcihBVkNvZGVjQ29u
dGV4dCAqYXZjdHgsIHVpbnQ4X3QgKmJ1ZikKICAgICBidWZbMHg1Zl0gPSAweDAxOyAvLyBVREwK
IAogICAgIGJ1ZlsweDE2N10gPSAweDAyOyAvLyByZXNlcnZlZAotICAgIEFWX1dCMTYoYnVmICsg
MHgxNmEsIGN0eC0+bS5tYl9oZWlnaHQgKiA0ICsgNCk7IC8vIE1TSVBTCi0gICAgQVZfV0IxNihi
dWYgKyAweDE2YywgY3R4LT5tLm1iX2hlaWdodCk7IC8vIE5zCisgICAgQVZfV0IxNihidWYgKyAw
eDE2YSwgY3R4LT5tLmMubWJfaGVpZ2h0ICogNCArIDQpOyAvLyBNU0lQUworICAgIEFWX1dCMTYo
YnVmICsgMHgxNmMsIGN0eC0+bS5jLm1iX2hlaWdodCk7IC8vIE5zCiAgICAgYnVmWzB4MTZmXSA9
IDB4MTA7IC8vIHJlc2VydmVkCiAKICAgICBjdHgtPm1zaXAgPSBidWYgKyAweDE3MDsKQEAgLTU3
NywxMSArNTc2LDExIEBAIHZvaWQgZG54aGRfZW5jb2RlX2Jsb2NrKFB1dEJpdENvbnRleHQgKnBi
LCBETlhIREVuY0NvbnRleHQgKmN0eCwKICAgICBpbnQgbGFzdF9ub25femVybyA9IDA7CiAgICAg
aW50IHNsZXZlbCwgaSwgajsKIAotICAgIGRueGhkX2VuY29kZV9kYyhwYiwgY3R4LCBibG9ja1sw
XSAtIGN0eC0+bS5sYXN0X2RjW25dKTsKLSAgICBjdHgtPm0ubGFzdF9kY1tuXSA9IGJsb2NrWzBd
OworICAgIGRueGhkX2VuY29kZV9kYyhwYiwgY3R4LCBibG9ja1swXSAtIGN0eC0+bS5jLmxhc3Rf
ZGNbbl0pOworICAgIGN0eC0+bS5jLmxhc3RfZGNbbl0gPSBibG9ja1swXTsKIAogICAgIGZvciAo
aSA9IDE7IGkgPD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGogPSBjdHgtPm0uaW50cmFf
c2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAgIGogPSBjdHgtPm0uYy5pbnRyYV9zY2Fu
dGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgc2xldmVsID0gYmxvY2tbal07CiAgICAgICAg
IGlmIChzbGV2ZWwpIHsKICAgICAgICAgICAgIGludCBydW5fbGV2ZWwgPSBpIC0gbGFzdF9ub25f
emVybyAtIDE7CkBAIC02MTMsNyArNjEyLDcgQEAgdm9pZCBkbnhoZF91bnF1YW50aXplX2MoRE5Y
SERFbmNDb250ZXh0ICpjdHgsIGludDE2X3QgKmJsb2NrLCBpbnQgbiwKICAgICB9CiAKICAgICBm
b3IgKGkgPSAxOyBpIDw9IGxhc3RfaW5kZXg7IGkrKykgewotICAgICAgICBpbnQgaiA9IGN0eC0+
bS5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgaW50IGogPSBjdHgtPm0u
Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgbGV2ZWwgPSBibG9ja1tq
XTsKICAgICAgICAgaWYgKGxldmVsKSB7CiAgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7CkBA
IC02NjEsNyArNjYwLDcgQEAgaW50IGRueGhkX2NhbGNfYWNfYml0cyhETlhIREVuY0NvbnRleHQg
KmN0eCwgaW50MTZfdCAqYmxvY2ssIGludCBsYXN0X2luZGV4KQogICAgIGludCBiaXRzID0gMDsK
ICAgICBpbnQgaSwgaiwgbGV2ZWw7CiAgICAgZm9yIChpID0gMTsgaSA8PSBsYXN0X2luZGV4OyBp
KyspIHsKLSAgICAgICAgaiA9IGN0eC0+bS5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsK
KyAgICAgICAgaiA9IGN0eC0+bS5jLmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwogICAg
ICAgICBsZXZlbCA9IGJsb2NrW2pdOwogICAgICAgICBpZiAobGV2ZWwpIHsKICAgICAgICAgICAg
IGludCBydW5fbGV2ZWwgPSBpIC0gbGFzdF9ub25femVybyAtIDE7CkBAIC02ODAsMzYgKzY3OSwz
NiBAQCB2b2lkIGRueGhkX2dldF9ibG9ja3MoRE5YSERFbmNDb250ZXh0ICpjdHgsIGludCBtYl94
LCBpbnQgbWJfeSkKICAgICBjb25zdCBpbnQgYncgPSAxIDw8IGJzOwogICAgIGludCBkY3RfeV9v
ZmZzZXQgPSBjdHgtPmRjdF95X29mZnNldDsKICAgICBpbnQgZGN0X3V2X29mZnNldCA9IGN0eC0+
ZGN0X3V2X29mZnNldDsKLSAgICBpbnQgbGluZXNpemUgPSBjdHgtPm0ubGluZXNpemU7Ci0gICAg
aW50IHV2bGluZXNpemUgPSBjdHgtPm0udXZsaW5lc2l6ZTsKKyAgICBpbnQgbGluZXNpemUgPSBj
dHgtPm0uYy5saW5lc2l6ZTsKKyAgICBpbnQgdXZsaW5lc2l6ZSA9IGN0eC0+bS5jLnV2bGluZXNp
emU7CiAgICAgY29uc3QgdWludDhfdCAqcHRyX3kgPSBjdHgtPnRocmVhZFswXS0+c3JjWzBdICsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWJfeSA8PCA0KSAqIGN0eC0+bS5saW5lc2l6
ZSkgKyAobWJfeCA8PCBicyArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYl95
IDw8IDQpICogY3R4LT5tLmMubGluZXNpemUpICsgKG1iX3ggPDwgYnMgKyAxKTsKICAgICBjb25z
dCB1aW50OF90ICpwdHJfdSA9IGN0eC0+dGhyZWFkWzBdLT5zcmNbMV0gKwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKChtYl95IDw8IDQpICogY3R4LT5tLnV2bGluZXNpemUpICsgKG1iX3gg
PDwgYnMgKyBjdHgtPmlzXzQ0NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1iX3kg
PDwgNCkgKiBjdHgtPm0uYy51dmxpbmVzaXplKSArIChtYl94IDw8IGJzICsgY3R4LT5pc180NDQp
OwogICAgIGNvbnN0IHVpbnQ4X3QgKnB0cl92ID0gY3R4LT50aHJlYWRbMF0tPnNyY1syXSArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1iX3kgPDwgNCkgKiBjdHgtPm0udXZsaW5lc2l6
ZSkgKyAobWJfeCA8PCBicyArIGN0eC0+aXNfNDQ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgobWJfeSA8PCA0KSAqIGN0eC0+bS5jLnV2bGluZXNpemUpICsgKG1iX3ggPDwgYnMgKyBj
dHgtPmlzXzQ0NCk7CiAgICAgUGl4YmxvY2tEU1BDb250ZXh0ICpwZHNwID0gJmN0eC0+bS5wZHNw
OwotICAgIFZpZGVvRFNQQ29udGV4dCAqdmRzcCA9ICZjdHgtPm0udmRzcDsKKyAgICBWaWRlb0RT
UENvbnRleHQgKnZkc3AgPSAmY3R4LT5tLmMudmRzcDsKIAotICAgIGlmIChjdHgtPmJpdF9kZXB0
aCAhPSAxMCAmJiB2ZHNwLT5lbXVsYXRlZF9lZGdlX21jICYmICgobWJfeCA8PCA0KSArIDE2ID4g
Y3R4LT5tLmF2Y3R4LT53aWR0aCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobWJfeSA8PCA0KSArIDE2ID4gY3R4LT5tLmF2Y3R4
LT5oZWlnaHQpKSB7Ci0gICAgICAgIGludCB5X3cgPSBjdHgtPm0uYXZjdHgtPndpZHRoICAtICht
Yl94IDw8IDQpOwotICAgICAgICBpbnQgeV9oID0gY3R4LT5tLmF2Y3R4LT5oZWlnaHQgLSAobWJf
eSA8PCA0KTsKKyAgICBpZiAoY3R4LT5iaXRfZGVwdGggIT0gMTAgJiYgdmRzcC0+ZW11bGF0ZWRf
ZWRnZV9tYyAmJiAoKG1iX3ggPDwgNCkgKyAxNiA+IGN0eC0+bS5jLmF2Y3R4LT53aWR0aCB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobWJfeSA8PCA0KSArIDE2ID4gY3R4LT5tLmMuYXZjdHgtPmhlaWdodCkpIHsKKyAgICAgICAg
aW50IHlfdyA9IGN0eC0+bS5jLmF2Y3R4LT53aWR0aCAgLSAobWJfeCA8PCA0KTsKKyAgICAgICAg
aW50IHlfaCA9IGN0eC0+bS5jLmF2Y3R4LT5oZWlnaHQgLSAobWJfeSA8PCA0KTsKICAgICAgICAg
aW50IHV2X3cgPSAoeV93ICsgMSkgLyAyOwogICAgICAgICBpbnQgdXZfaCA9IHlfaDsKICAgICAg
ICAgbGluZXNpemUgPSAxNjsKICAgICAgICAgdXZsaW5lc2l6ZSA9IDg7CiAKICAgICAgICAgdmRz
cC0+ZW11bGF0ZWRfZWRnZV9tYygmY3R4LT5lZGdlX2J1Zl95WzBdLCBwdHJfeSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2l6ZSwgY3R4LT5tLmxpbmVzaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplLCBjdHgtPm0uYy5saW5lc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2l6ZSwgMTYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgeV93LCB5X2gpOwogICAgICAgICB2ZHNwLT5lbXVsYXRl
ZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3V2WzBdWzBdLCBwdHJfdSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0udXZsaW5lc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0uYy51dmxpbmVzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUsIDE2LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHV2X3csIHV2X2gpOwogICAgICAgICB2ZHNwLT5l
bXVsYXRlZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3V2WzFdWzBdLCBwdHJfdiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0udXZsaW5lc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0uYy51dmxpbmVz
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUsIDE2LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHV2X3csIHV2X2gpOwogCkBAIC03MTgs
MjUgKzcxNywyNSBAQCB2b2lkIGRueGhkX2dldF9ibG9ja3MoRE5YSERFbmNDb250ZXh0ICpjdHgs
IGludCBtYl94LCBpbnQgbWJfeSkKICAgICAgICAgcHRyX3kgPSAmY3R4LT5lZGdlX2J1Zl95WzBd
OwogICAgICAgICBwdHJfdSA9ICZjdHgtPmVkZ2VfYnVmX3V2WzBdWzBdOwogICAgICAgICBwdHJf
diA9ICZjdHgtPmVkZ2VfYnVmX3V2WzFdWzBdOwotICAgIH0gZWxzZSBpZiAoY3R4LT5iaXRfZGVw
dGggPT0gMTAgJiYgdmRzcC0+ZW11bGF0ZWRfZWRnZV9tYyAmJiAoKG1iX3ggPDwgNCkgKyAxNiA+
IGN0eC0+bS5hdmN0eC0+d2lkdGggfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYl95IDw8IDQpICsgMTYgPiBjdHgt
Pm0uYXZjdHgtPmhlaWdodCkpIHsKLSAgICAgICAgaW50IHlfdyA9IGN0eC0+bS5hdmN0eC0+d2lk
dGggIC0gKG1iX3ggPDwgNCk7Ci0gICAgICAgIGludCB5X2ggPSBjdHgtPm0uYXZjdHgtPmhlaWdo
dCAtIChtYl95IDw8IDQpOworICAgIH0gZWxzZSBpZiAoY3R4LT5iaXRfZGVwdGggPT0gMTAgJiYg
dmRzcC0+ZW11bGF0ZWRfZWRnZV9tYyAmJiAoKG1iX3ggPDwgNCkgKyAxNiA+IGN0eC0+bS5jLmF2
Y3R4LT53aWR0aCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG1iX3kgPDwgNCkgKyAxNiA+IGN0eC0+bS5jLmF2Y3R4
LT5oZWlnaHQpKSB7CisgICAgICAgIGludCB5X3cgPSBjdHgtPm0uYy5hdmN0eC0+d2lkdGggIC0g
KG1iX3ggPDwgNCk7CisgICAgICAgIGludCB5X2ggPSBjdHgtPm0uYy5hdmN0eC0+aGVpZ2h0IC0g
KG1iX3kgPDwgNCk7CiAgICAgICAgIGludCB1dl93ID0gY3R4LT5pc180NDQgPyB5X3cgOiAoeV93
ICsgMSkgLyAyOwogICAgICAgICBpbnQgdXZfaCA9IHlfaDsKICAgICAgICAgbGluZXNpemUgPSAz
MjsKICAgICAgICAgdXZsaW5lc2l6ZSA9IDE2ICsgMTYgKiBjdHgtPmlzXzQ0NDsKIAogICAgICAg
ICB2ZHNwLT5lbXVsYXRlZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3lbMF0sIHB0cl95LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplLCBjdHgtPm0ubGluZXNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNpemUsIGN0eC0+bS5jLmxpbmVzaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplIC8gMiwgMTYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgeV93LCB5X2gpOwogICAgICAgICB2ZHNw
LT5lbXVsYXRlZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3V2WzBdWzBdLCBwdHJfdSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0udXZsaW5lc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0uYy51dmxp
bmVzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUgLyAyLCAx
NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCB1dl93LCB1dl9oKTsKICAg
ICAgICAgdmRzcC0+ZW11bGF0ZWRfZWRnZV9tYygmY3R4LT5lZGdlX2J1Zl91dlsxXVswXSwgcHRy
X3YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXZsaW5lc2l6ZSwgY3R4LT5tLnV2
bGluZXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXZsaW5lc2l6ZSwgY3R4
LT5tLmMudXZsaW5lc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVz
aXplIC8gMiwgMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgdXZfdywg
dXZfaCk7CiAKQEAgLTc1Myw3ICs3NTIsNyBAQCB2b2lkIGRueGhkX2dldF9ibG9ja3MoRE5YSERF
bmNDb250ZXh0ICpjdHgsIGludCBtYl94LCBpbnQgbWJfeSkKICAgICAgICAgcGRzcC0+Z2V0X3Bp
eGVscyhjdHgtPmJsb2Nrc1syXSwgcHRyX3UsICAgICAgdXZsaW5lc2l6ZSk7CiAgICAgICAgIHBk
c3AtPmdldF9waXhlbHMoY3R4LT5ibG9ja3NbM10sIHB0cl92LCAgICAgIHV2bGluZXNpemUpOwog
Ci0gICAgICAgIGlmIChtYl95ICsgMSA9PSBjdHgtPm0ubWJfaGVpZ2h0ICYmIGN0eC0+bS5hdmN0
eC0+aGVpZ2h0ID09IDEwODApIHsKKyAgICAgICAgaWYgKG1iX3kgKyAxID09IGN0eC0+bS5jLm1i
X2hlaWdodCAmJiBjdHgtPm0uYy5hdmN0eC0+aGVpZ2h0ID09IDEwODApIHsKICAgICAgICAgICAg
IGlmIChjdHgtPmludGVybGFjZWQpIHsKICAgICAgICAgICAgICAgICBjdHgtPmdldF9waXhlbHNf
OHg0X3N5bShjdHgtPmJsb2Nrc1s0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdHJfeSArIGRjdF95X29mZnNldCwKQEAgLTc2OCwxMCArNzY3LDEwIEBAIHZvaWQg
ZG54aGRfZ2V0X2Jsb2NrcyhETlhIREVuY0NvbnRleHQgKmN0eCwgaW50IG1iX3gsIGludCBtYl95
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl92ICsgZGN0X3V2
X29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVz
aXplKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY3R4LT5tLmJkc3Au
Y2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNF0pOwotICAgICAgICAgICAgICAgIGN0eC0+bS5iZHNw
LmNsZWFyX2Jsb2NrKGN0eC0+YmxvY2tzWzVdKTsKLSAgICAgICAgICAgICAgICBjdHgtPm0uYmRz
cC5jbGVhcl9ibG9jayhjdHgtPmJsb2Nrc1s2XSk7Ci0gICAgICAgICAgICAgICAgY3R4LT5tLmJk
c3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbN10pOworICAgICAgICAgICAgICAgIGN0eC0+bS5j
LmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNF0pOworICAgICAgICAgICAgICAgIGN0eC0+
bS5jLmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNV0pOworICAgICAgICAgICAgICAgIGN0
eC0+bS5jLmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNl0pOworICAgICAgICAgICAgICAg
IGN0eC0+bS5jLmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbN10pOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGRzcC0+Z2V0X3BpeGVscyhjdHgtPmJs
b2Nrc1s0XSwKQEAgLTgxOSwxNyArODE4LDE3IEBAIHN0YXRpYyBpbnQgZG54aGRfY2FsY19iaXRz
X3RocmVhZChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmFyZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgam9ibnIsIGludCB0aHJlYWRucikKIHsKICAgICBETlhI
REVuY0NvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgaW50IG1iX3kgPSBqb2Ju
ciwgbWJfeDsKKyAgICBpbnQgbWJfeSA9IGpvYm5yOwogICAgIGludCBxc2NhbGUgPSBjdHgtPnFz
Y2FsZTsKICAgICBMT0NBTF9BTElHTkVEXzE2KGludDE2X3QsIGJsb2NrLCBbNjRdKTsKICAgICBj
dHggPSBjdHgtPnRocmVhZFt0aHJlYWRucl07CiAKLSAgICBjdHgtPm0ubGFzdF9kY1swXSA9Ci0g
ICAgY3R4LT5tLmxhc3RfZGNbMV0gPQotICAgIGN0eC0+bS5sYXN0X2RjWzJdID0gMSA8PCAoY3R4
LT5iaXRfZGVwdGggKyAyKTsKKyAgICBjdHgtPm0uYy5sYXN0X2RjWzBdID0KKyAgICBjdHgtPm0u
Yy5sYXN0X2RjWzFdID0KKyAgICBjdHgtPm0uYy5sYXN0X2RjWzJdID0gMSA8PCAoY3R4LT5iaXRf
ZGVwdGggKyAyKTsKIAotICAgIGZvciAobWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0ubWJfd2lkdGg7
IG1iX3grKykgewotICAgICAgICB1bnNpZ25lZCBtYiA9IG1iX3kgKiBjdHgtPm0ubWJfd2lkdGgg
KyBtYl94OworICAgIGZvciAoaW50IG1iX3ggPSAwOyBtYl94IDwgY3R4LT5tLmMubWJfd2lkdGg7
IG1iX3grKykgeworICAgICAgICB1bnNpZ25lZCBtYiA9IG1iX3kgKiBjdHgtPm0uYy5tYl93aWR0
aCArIG1iX3g7CiAgICAgICAgIGludCBzc2QgICAgID0gMDsKICAgICAgICAgaW50IGFjX2JpdHMg
PSAwOwogICAgICAgICBpbnQgZGNfYml0cyA9IDA7CkBAIC04NDgsNyArODQ3LDcgQEAgc3RhdGlj
IGludCBkbnhoZF9jYWxjX2JpdHNfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAq
YXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXNjYWxl
LCAmb3ZlcmZsb3cpOwogICAgICAgICAgICAgYWNfYml0cyAgICs9IGRueGhkX2NhbGNfYWNfYml0
cyhjdHgsIGJsb2NrLCBsYXN0X2luZGV4KTsKIAotICAgICAgICAgICAgZGlmZiA9IGJsb2NrWzBd
IC0gY3R4LT5tLmxhc3RfZGNbbl07CisgICAgICAgICAgICBkaWZmID0gYmxvY2tbMF0gLSBjdHgt
Pm0uYy5sYXN0X2RjW25dOwogICAgICAgICAgICAgaWYgKGRpZmYgPCAwKQogICAgICAgICAgICAg
ICAgIG5iaXRzID0gYXZfbG9nMl8xNmJpdCgtMiAqIGRpZmYpOwogICAgICAgICAgICAgZWxzZQpA
QCAtODU3LDE2ICs4NTYsMTYgQEAgc3RhdGljIGludCBkbnhoZF9jYWxjX2JpdHNfdGhyZWFkKEFW
Q29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAqYXJnLAogICAgICAgICAgICAgYXZfYXNzZXJ0MShu
Yml0cyA8IGN0eC0+Yml0X2RlcHRoICsgNCk7CiAgICAgICAgICAgICBkY19iaXRzICs9IGN0eC0+
Y2lkX3RhYmxlLT5kY19iaXRzW25iaXRzXSArIG5iaXRzOwogCi0gICAgICAgICAgICBjdHgtPm0u
bGFzdF9kY1tuXSA9IGJsb2NrWzBdOworICAgICAgICAgICAgY3R4LT5tLmMubGFzdF9kY1tuXSA9
IGJsb2NrWzBdOwogCiAgICAgICAgICAgICBpZiAoYXZjdHgtPm1iX2RlY2lzaW9uID09IEZGX01C
X0RFQ0lTSU9OX1JEIHx8ICFSQ19WQVJJQU5DRSkgewogICAgICAgICAgICAgICAgIGRueGhkX3Vu
cXVhbnRpemVfYyhjdHgsIGJsb2NrLCBpLCBxc2NhbGUsIGxhc3RfaW5kZXgpOwotICAgICAgICAg
ICAgICAgIGN0eC0+bS5pZHNwLmlkY3QoYmxvY2spOworICAgICAgICAgICAgICAgIGN0eC0+bS5j
Lmlkc3AuaWRjdChibG9jayk7CiAgICAgICAgICAgICAgICAgc3NkICs9IGRueGhkX3NzZF9ibG9j
ayhibG9jaywgc3JjX2Jsb2NrKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBj
dHgtPm1iX3JjWyhxc2NhbGUgKiBjdHgtPm0ubWJfbnVtKSArIG1iXS5zc2QgID0gc3NkOwotICAg
ICAgICBjdHgtPm1iX3JjWyhxc2NhbGUgKiBjdHgtPm0ubWJfbnVtKSArIG1iXS5iaXRzID0gYWNf
Yml0cyArIGRjX2JpdHMgKyAxMiArCisgICAgICAgIGN0eC0+bWJfcmNbKHFzY2FsZSAqIGN0eC0+
bS5jLm1iX251bSkgKyBtYl0uc3NkICA9IHNzZDsKKyAgICAgICAgY3R4LT5tYl9yY1socXNjYWxl
ICogY3R4LT5tLmMubWJfbnVtKSArIG1iXS5iaXRzID0gYWNfYml0cyArIGRjX2JpdHMgKyAxMiAr
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgKyBjdHgtPmlzXzQ0NCkg
KiA4ICogY3R4LT52bGNfYml0c1swXTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC04NzcsMTYg
Kzg3NiwxNiBAQCBzdGF0aWMgaW50IGRueGhkX2VuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRleHQg
KmF2Y3R4LCB2b2lkICphcmcsCiB7CiAgICAgRE5YSERFbmNDb250ZXh0ICpjdHggPSBhdmN0eC0+
cHJpdl9kYXRhOwogICAgIFB1dEJpdENvbnRleHQgcGIwLCAqY29uc3QgcGIgPSAmcGIwOwotICAg
IGludCBtYl95ID0gam9ibnIsIG1iX3g7CisgICAgaW50IG1iX3kgPSBqb2JucjsKICAgICBjdHgg
PSBjdHgtPnRocmVhZFt0aHJlYWRucl07CiAgICAgaW5pdF9wdXRfYml0cyhwYiwgKHVpbnQ4X3Qg
KilhcmcgKyBjdHgtPmRhdGFfb2Zmc2V0ICsgY3R4LT5zbGljZV9vZmZzW2pvYm5yXSwKICAgICAg
ICAgICAgICAgICAgIGN0eC0+c2xpY2Vfc2l6ZVtqb2Jucl0pOwogCi0gICAgY3R4LT5tLmxhc3Rf
ZGNbMF0gPQotICAgIGN0eC0+bS5sYXN0X2RjWzFdID0KLSAgICBjdHgtPm0ubGFzdF9kY1syXSA9
IDEgPDwgKGN0eC0+Yml0X2RlcHRoICsgMik7Ci0gICAgZm9yIChtYl94ID0gMDsgbWJfeCA8IGN0
eC0+bS5tYl93aWR0aDsgbWJfeCsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1iID0gbWJfeSAqIGN0
eC0+bS5tYl93aWR0aCArIG1iX3g7CisgICAgY3R4LT5tLmMubGFzdF9kY1swXSA9CisgICAgY3R4
LT5tLmMubGFzdF9kY1sxXSA9CisgICAgY3R4LT5tLmMubGFzdF9kY1syXSA9IDEgPDwgKGN0eC0+
Yml0X2RlcHRoICsgMik7CisgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0uYy5t
Yl93aWR0aDsgbWJfeCsrKSB7CisgICAgICAgIHVuc2lnbmVkIG1iID0gbWJfeSAqIGN0eC0+bS5j
Lm1iX3dpZHRoICsgbWJfeDsKICAgICAgICAgaW50IHFzY2FsZSA9IGN0eC0+bWJfcXNjYWxlW21i
XTsKICAgICAgICAgaW50IGk7CiAKQEAgLTkxMiwxNCArOTExLDEyIEBAIHN0YXRpYyBpbnQgZG54
aGRfZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmFyZywKIAogc3Rh
dGljIHZvaWQgZG54aGRfc2V0dXBfdGhyZWFkc19zbGljZXMoRE5YSERFbmNDb250ZXh0ICpjdHgp
CiB7Ci0gICAgaW50IG1iX3ksIG1iX3g7Ci0gICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yICht
Yl95ID0gMDsgbWJfeSA8IGN0eC0+bS5tYl9oZWlnaHQ7IG1iX3krKykgeworICAgIGZvciAoaW50
IG1iX3kgPSAwLCBvZmZzZXQgPSAwOyBtYl95IDwgY3R4LT5tLmMubWJfaGVpZ2h0OyBtYl95Kysp
IHsKICAgICAgICAgaW50IHRocmVhZF9zaXplOwogICAgICAgICBjdHgtPnNsaWNlX29mZnNbbWJf
eV0gPSBvZmZzZXQ7CiAgICAgICAgIGN0eC0+c2xpY2Vfc2l6ZVttYl95XSA9IDA7Ci0gICAgICAg
IGZvciAobWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0ubWJfd2lkdGg7IG1iX3grKykgewotICAgICAg
ICAgICAgdW5zaWduZWQgbWIgPSBtYl95ICogY3R4LT5tLm1iX3dpZHRoICsgbWJfeDsKKyAgICAg
ICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0uYy5tYl93aWR0aDsgbWJfeCsrKSB7
CisgICAgICAgICAgICB1bnNpZ25lZCBtYiA9IG1iX3kgKiBjdHgtPm0uYy5tYl93aWR0aCArIG1i
X3g7CiAgICAgICAgICAgICBjdHgtPnNsaWNlX3NpemVbbWJfeV0gKz0gY3R4LT5tYl9iaXRzW21i
XTsKICAgICAgICAgfQogICAgICAgICBjdHgtPnNsaWNlX3NpemVbbWJfeV0gICA9IChjdHgtPnNs
aWNlX3NpemVbbWJfeV0gKyAzMVUpICYgfjMxVTsKQEAgLTkzMywyOCArOTMwLDI4IEBAIHN0YXRp
YyBpbnQgZG54aGRfbWJfdmFyX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmFy
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgam9ibnIsIGludCB0aHJlYWRu
cikKIHsKICAgICBETlhIREVuY0NvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAg
aW50IG1iX3kgPSBqb2JuciwgbWJfeCwgeCwgeTsKLSAgICBpbnQgcGFydGlhbF9sYXN0X3JvdyA9
IChtYl95ID09IGN0eC0+bS5tYl9oZWlnaHQgLSAxKSAmJgorICAgIGludCBtYl95ID0gam9ibnIs
IHgsIHk7CisgICAgaW50IHBhcnRpYWxfbGFzdF9yb3cgPSAobWJfeSA9PSBjdHgtPm0uYy5tYl9o
ZWlnaHQgLSAxKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhdmN0eC0+aGVpZ2h0
ID4+IGN0eC0+aW50ZXJsYWNlZCkgJiAweEYpOwogCiAgICAgY3R4ID0gY3R4LT50aHJlYWRbdGhy
ZWFkbnJdOwogICAgIGlmIChjdHgtPmJpdF9kZXB0aCA9PSA4KSB7Ci0gICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeCA9IGN0eC0+dGhyZWFkWzBdLT5zcmNbMF0gKyAoKG1iX3kgPDwgNCkgKiBjdHgt
Pm0ubGluZXNpemUpOwotICAgICAgICBmb3IgKG1iX3ggPSAwOyBtYl94IDwgY3R4LT5tLm1iX3dp
ZHRoOyArK21iX3gsIHBpeCArPSAxNikgewotICAgICAgICAgICAgdW5zaWduZWQgbWIgPSBtYl95
ICogY3R4LT5tLm1iX3dpZHRoICsgbWJfeDsKKyAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ID0g
Y3R4LT50aHJlYWRbMF0tPnNyY1swXSArICgobWJfeSA8PCA0KSAqIGN0eC0+bS5jLmxpbmVzaXpl
KTsKKyAgICAgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0uYy5tYl93aWR0aDsg
KyttYl94LCBwaXggKz0gMTYpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1iID0gbWJfeSAqIGN0
eC0+bS5jLm1iX3dpZHRoICsgbWJfeDsKICAgICAgICAgICAgIGludCBzdW07CiAgICAgICAgICAg
ICBpbnQgdmFyYzsKIAogICAgICAgICAgICAgaWYgKCFwYXJ0aWFsX2xhc3Rfcm93ICYmIG1iX3gg
KiAxNiA8PSBhdmN0eC0+d2lkdGggLSAxNiAmJiAoYXZjdHgtPndpZHRoICUgMTYpID09IDApIHsK
LSAgICAgICAgICAgICAgICBzdW0gID0gY3R4LT5tLm1wdmVuY2RzcC5waXhfc3VtKHBpeCwgY3R4
LT5tLmxpbmVzaXplKTsKLSAgICAgICAgICAgICAgICB2YXJjID0gY3R4LT5tLm1wdmVuY2RzcC5w
aXhfbm9ybTEocGl4LCBjdHgtPm0ubGluZXNpemUpOworICAgICAgICAgICAgICAgIHN1bSAgPSBj
dHgtPm0ubXB2ZW5jZHNwLnBpeF9zdW0ocGl4LCBjdHgtPm0uYy5saW5lc2l6ZSk7CisgICAgICAg
ICAgICAgICAgdmFyYyA9IGN0eC0+bS5tcHZlbmNkc3AucGl4X25vcm0xKHBpeCwgY3R4LT5tLmMu
bGluZXNpemUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgYncg
PSBGRk1JTihhdmN0eC0+d2lkdGggLSAxNiAqIG1iX3gsIDE2KTsKICAgICAgICAgICAgICAgICBp
bnQgYmggPSBGRk1JTigoYXZjdHgtPmhlaWdodCA+PiBjdHgtPmludGVybGFjZWQpIC0gMTYgKiBt
Yl95LCAxNik7CiAgICAgICAgICAgICAgICAgc3VtID0gdmFyYyA9IDA7CiAgICAgICAgICAgICAg
ICAgZm9yICh5ID0gMDsgeSA8IGJoOyB5KyspIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh4
ID0gMDsgeCA8IGJ3OyB4KyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdmFs
ID0gcGl4W3ggKyB5ICogY3R4LT5tLmxpbmVzaXplXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgdmFsID0gcGl4W3ggKyB5ICogY3R4LT5tLmMubGluZXNpemVdOwogICAgICAgICAg
ICAgICAgICAgICAgICAgc3VtICArPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJj
ICs9IHZhbCAqIHZhbDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtOTY2LDExICs5NjMsMTEg
QEAgc3RhdGljIGludCBkbnhoZF9tYl92YXJfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg
dm9pZCAqYXJnLAogICAgICAgICAgICAgY3R4LT5tYl9jbXBbbWJdLm1iICAgID0gbWI7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgeyAvLyAxMC1iaXQKLSAgICAgICAgY29uc3QgaW50IGxpbmVzaXpl
ID0gY3R4LT5tLmxpbmVzaXplID4+IDE7Ci0gICAgICAgIGZvciAobWJfeCA9IDA7IG1iX3ggPCBj
dHgtPm0ubWJfd2lkdGg7ICsrbWJfeCkgeworICAgICAgICBjb25zdCBpbnQgbGluZXNpemUgPSBj
dHgtPm0uYy5saW5lc2l6ZSA+PiAxOworICAgICAgICBmb3IgKGludCBtYl94ID0gMDsgbWJfeCA8
IGN0eC0+bS5jLm1iX3dpZHRoOyArK21iX3gpIHsKICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90
ICpwaXggPSAoY29uc3QgdWludDE2X3QgKiljdHgtPnRocmVhZFswXS0+c3JjWzBdICsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1iX3kgPDwgNCkgKiBsaW5lc2l6ZSkg
KyAobWJfeCA8PCA0KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIG1iICA9IG1iX3kgKiBjdHgtPm0u
bWJfd2lkdGggKyBtYl94OworICAgICAgICAgICAgdW5zaWduZWQgbWIgID0gbWJfeSAqIGN0eC0+
bS5jLm1iX3dpZHRoICsgbWJfeDsKICAgICAgICAgICAgIGludCBzdW0gPSAwOwogICAgICAgICAg
ICAgaW50IHNxc3VtID0gMDsKICAgICAgICAgICAgIGludCBidyA9IEZGTUlOKGF2Y3R4LT53aWR0
aCAtIDE2ICogbWJfeCwgMTYpOwpAQCAtMTAwMSwxMiArOTk4LDExIEBAIHN0YXRpYyBpbnQgZG54
aGRfZW5jb2RlX3JkbyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEROWEhERW5jQ29udGV4dCAqY3R4
KQogewogICAgIGludCBsYW1iZGEsIHVwX3N0ZXAsIGRvd25fc3RlcDsKICAgICBpbnQgbGFzdF9s
b3dlciA9IElOVF9NQVgsIGxhc3RfaGlnaGVyID0gMDsKLSAgICBpbnQgeCwgeSwgcTsKIAotICAg
IGZvciAocSA9IDE7IHEgPCBhdmN0eC0+cW1heDsgcSsrKSB7CisgICAgZm9yIChpbnQgcSA9IDE7
IHEgPCBhdmN0eC0+cW1heDsgcSsrKSB7CiAgICAgICAgIGN0eC0+cXNjYWxlID0gcTsKICAgICAg
ICAgYXZjdHgtPmV4ZWN1dGUyKGF2Y3R4LCBkbnhoZF9jYWxjX2JpdHNfdGhyZWFkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY3R4LT5tLm1iX2hlaWdodCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjdHgtPm0uYy5tYl9oZWlnaHQpOwogICAgIH0K
ICAgICB1cF9zdGVwID0gZG93bl9zdGVwID0gMiA8PCBMQU1CREFfRlJBQ19CSVRTOwogICAgIGxh
bWJkYSAgPSBjdHgtPmxhbWJkYTsKQEAgLTEwMTgsMTQgKzEwMTQsMTQgQEAgc3RhdGljIGludCBk
bnhoZF9lbmNvZGVfcmRvKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgRE5YSERFbmNDb250ZXh0ICpj
dHgpCiAgICAgICAgICAgICBsYW1iZGErKzsKICAgICAgICAgICAgIGVuZCA9IDE7IC8vIG5lZWQg
dG8gc2V0IGZpbmFsIHFzY2FsZXMvYml0cwogICAgICAgICB9Ci0gICAgICAgIGZvciAoeSA9IDA7
IHkgPCBjdHgtPm0ubWJfaGVpZ2h0OyB5KyspIHsKLSAgICAgICAgICAgIGZvciAoeCA9IDA7IHgg
PCBjdHgtPm0ubWJfd2lkdGg7IHgrKykgeworICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGN0
eC0+bS5jLm1iX2hlaWdodDsgeSsrKSB7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IGN0eC0+bS5jLm1iX3dpZHRoOyB4KyspIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW4g
PSBVSU5UX01BWDsKICAgICAgICAgICAgICAgICBpbnQgcXNjYWxlID0gMTsKLSAgICAgICAgICAg
ICAgICBpbnQgbWIgICAgID0geSAqIGN0eC0+bS5tYl93aWR0aCArIHg7CisgICAgICAgICAgICAg
ICAgaW50IG1iICAgICA9IHkgKiBjdHgtPm0uYy5tYl93aWR0aCArIHg7CiAgICAgICAgICAgICAg
ICAgaW50IHJjID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKHEgPSAxOyBxIDwgYXZjdHgtPnFt
YXg7IHErKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IChxKmN0eC0+bS5tYl9udW0p
ICsgbWI7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgcSA9IDE7IHEgPCBhdmN0eC0+cW1heDsg
cSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpID0gKHEqY3R4LT5tLmMubWJfbnVtKSAr
IG1iOwogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzY29yZSA9IGN0eC0+bWJfcmNbaV0u
Yml0cyAqIGxhbWJkYSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1
bnNpZ25lZCkgY3R4LT5tYl9yY1tpXS5zc2QgPDwgTEFNQkRBX0ZSQUNfQklUUyk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChzY29yZSA8IG1pbikgewpAQCAtMTA4MiwxOCArMTA3OCwxNyBAQCBz
dGF0aWMgaW50IGRueGhkX2ZpbmRfcXNjYWxlKEROWEhERW5jQ29udGV4dCAqY3R4KQogICAgIGlu
dCBsYXN0X2hpZ2hlciA9IDA7CiAgICAgaW50IGxhc3RfbG93ZXIgPSBJTlRfTUFYOwogICAgIGlu
dCBxc2NhbGU7Ci0gICAgaW50IHgsIHk7CiAKICAgICBxc2NhbGUgPSBjdHgtPnFzY2FsZTsKICAg
ICBmb3IgKDs7KSB7CiAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICBjdHgtPnFzY2FsZSA9IHFz
Y2FsZTsKICAgICAgICAgLy8gWFhYIGF2b2lkIHJlY2FsY3VsYXRpbmcgYml0cwotICAgICAgICBj
dHgtPm0uYXZjdHgtPmV4ZWN1dGUyKGN0eC0+bS5hdmN0eCwgZG54aGRfY2FsY19iaXRzX3RocmVh
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjdHgtPm0ubWJf
aGVpZ2h0KTsKLSAgICAgICAgZm9yICh5ID0gMDsgeSA8IGN0eC0+bS5tYl9oZWlnaHQ7IHkrKykg
ewotICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IGN0eC0+bS5tYl93aWR0aDsgeCsrKQotICAg
ICAgICAgICAgICAgIGJpdHMgKz0gY3R4LT5tYl9yY1socXNjYWxlKmN0eC0+bS5tYl9udW0pICsg
KHkqY3R4LT5tLm1iX3dpZHRoK3gpXS5iaXRzOworICAgICAgICBjdHgtPm0uYy5hdmN0eC0+ZXhl
Y3V0ZTIoY3R4LT5tLmMuYXZjdHgsIGRueGhkX2NhbGNfYml0c190aHJlYWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY3R4LT5tLmMubWJfaGVpZ2h0KTsKKyAg
ICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBjdHgtPm0uYy5tYl9oZWlnaHQ7IHkrKykgeworICAg
ICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBjdHgtPm0uYy5tYl93aWR0aDsgeCsrKQorICAg
ICAgICAgICAgICAgIGJpdHMgKz0gY3R4LT5tYl9yY1socXNjYWxlKmN0eC0+bS5jLm1iX251bSkg
KyAoeSpjdHgtPm0uYy5tYl93aWR0aCt4KV0uYml0czsKICAgICAgICAgICAgIGJpdHMgPSAoYml0
cyszMSkmfjMxOyAvLyBwYWRkaW5nCiAgICAgICAgICAgICBpZiAoYml0cyA+IGN0eC0+ZnJhbWVf
Yml0cykKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMjIsNyArMTExNyw3IEBAIHN0YXRp
YyBpbnQgZG54aGRfZmluZF9xc2NhbGUoRE5YSERFbmNDb250ZXh0ICpjdHgpCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgcXNjYWxlICs9IHVwX3N0ZXArKzsKICAgICAgICAgICAg
IGRvd25fc3RlcCA9IDE7Ci0gICAgICAgICAgICBpZiAocXNjYWxlID49IGN0eC0+bS5hdmN0eC0+
cW1heCkKKyAgICAgICAgICAgIGlmIChxc2NhbGUgPj0gY3R4LT5tLmMuYXZjdHgtPnFtYXgpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTExODksMjQgKzExODQsMjQgQEAgc3RhdGljIHZvaWQgcmFkaXhfc29ydChSQ0NNUEVudHJ5
ICpkYXRhLCBSQ0NNUEVudHJ5ICp0bXAsIGludCBzaXplKQogc3RhdGljIGludCBkbnhoZF9lbmNv
ZGVfZmFzdChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEROWEhERW5jQ29udGV4dCAqY3R4KQogewog
ICAgIGludCBtYXhfYml0cyA9IDA7Ci0gICAgaW50IHJldCwgeCwgeTsKKyAgICBpbnQgcmV0Owog
ICAgIGlmICgocmV0ID0gZG54aGRfZmluZF9xc2NhbGUoY3R4KSkgPCAwKQogICAgICAgICByZXR1
cm4gcmV0OwotICAgIGZvciAoeSA9IDA7IHkgPCBjdHgtPm0ubWJfaGVpZ2h0OyB5KyspIHsKLSAg
ICAgICAgZm9yICh4ID0gMDsgeCA8IGN0eC0+bS5tYl93aWR0aDsgeCsrKSB7Ci0gICAgICAgICAg
ICBpbnQgbWIgPSB5ICogY3R4LT5tLm1iX3dpZHRoICsgeDsKLSAgICAgICAgICAgIGludCByYyA9
IChjdHgtPnFzY2FsZSAqIGN0eC0+bS5tYl9udW0gKSArIG1iOworICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgY3R4LT5tLmMubWJfaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCBjdHgtPm0uYy5tYl93aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBpbnQgbWIgPSB5ICog
Y3R4LT5tLmMubWJfd2lkdGggKyB4OworICAgICAgICAgICAgaW50IHJjID0gKGN0eC0+cXNjYWxl
ICogY3R4LT5tLmMubWJfbnVtICkgKyBtYjsKICAgICAgICAgICAgIGludCBkZWx0YV9iaXRzOwog
ICAgICAgICAgICAgY3R4LT5tYl9xc2NhbGVbbWJdID0gY3R4LT5xc2NhbGU7CiAgICAgICAgICAg
ICBjdHgtPm1iX2JpdHNbbWJdID0gY3R4LT5tYl9yY1tyY10uYml0czsKICAgICAgICAgICAgIG1h
eF9iaXRzICs9IGN0eC0+bWJfcmNbcmNdLmJpdHM7CiAgICAgICAgICAgICBpZiAoIVJDX1ZBUklB
TkNFKSB7CiAgICAgICAgICAgICAgICAgZGVsdGFfYml0cyA9IGN0eC0+bWJfcmNbcmNdLmJpdHMg
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm1iX3JjW3JjICsgY3R4LT5tLm1i
X251bV0uYml0czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5tYl9yY1tyYyAr
IGN0eC0+bS5jLm1iX251bV0uYml0czsKICAgICAgICAgICAgICAgICBjdHgtPm1iX2NtcFttYl0u
bWIgPSBtYjsKICAgICAgICAgICAgICAgICBjdHgtPm1iX2NtcFttYl0udmFsdWUgPQogICAgICAg
ICAgICAgICAgICAgICBkZWx0YV9iaXRzID8gKChjdHgtPm1iX3JjW3JjXS5zc2QgLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm1iX3JjW3JjICsgY3R4LT5tLm1iX251
bV0uc3NkKSAqIDEwMCkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgt
Pm1iX3JjW3JjICsgY3R4LT5tLmMubWJfbnVtXS5zc2QpICogMTAwKSAvCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsdGFfYml0cwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogSU5UX01JTjsgLy8gYXZvaWQgaW5jcmVhc2luZyBxc2NhbGUKICAgICAgICAgICAg
IH0KQEAgLTEyMTYsMTcgKzEyMTEsMTcgQEAgc3RhdGljIGludCBkbnhoZF9lbmNvZGVfZmFzdChB
VkNvZGVjQ29udGV4dCAqYXZjdHgsIEROWEhERW5jQ29udGV4dCAqY3R4KQogICAgIGlmICghcmV0
KSB7CiAgICAgICAgIGlmIChSQ19WQVJJQU5DRSkKICAgICAgICAgICAgIGF2Y3R4LT5leGVjdXRl
MihhdmN0eCwgZG54aGRfbWJfdmFyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLCBOVUxMLCBjdHgtPm0ubWJfaGVpZ2h0KTsKLSAgICAgICAgcmFkaXhfc29ydChjdHgt
Pm1iX2NtcCwgY3R4LT5tYl9jbXBfdG1wLCBjdHgtPm0ubWJfbnVtKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjdHgtPm0uYy5tYl9oZWlnaHQpOworICAgICAgICBy
YWRpeF9zb3J0KGN0eC0+bWJfY21wLCBjdHgtPm1iX2NtcF90bXAsIGN0eC0+bS5jLm1iX251bSk7
CiByZXRyeToKLSAgICAgICAgZm9yICh4ID0gMDsgeCA8IGN0eC0+bS5tYl9udW0gJiYgbWF4X2Jp
dHMgPiBjdHgtPmZyYW1lX2JpdHM7IHgrKykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IGN0eC0+bS5jLm1iX251bSAmJiBtYXhfYml0cyA+IGN0eC0+ZnJhbWVfYml0czsgeCsrKSB7CiAg
ICAgICAgICAgICBpbnQgbWIgPSBjdHgtPm1iX2NtcFt4XS5tYjsKLSAgICAgICAgICAgIGludCBy
YyA9IChjdHgtPnFzY2FsZSAqIGN0eC0+bS5tYl9udW0gKSArIG1iOworICAgICAgICAgICAgaW50
IHJjID0gKGN0eC0+cXNjYWxlICogY3R4LT5tLmMubWJfbnVtICkgKyBtYjsKICAgICAgICAgICAg
IG1heF9iaXRzIC09IGN0eC0+bWJfcmNbcmNdLmJpdHMgLQotICAgICAgICAgICAgICAgICAgICAg
ICAgY3R4LT5tYl9yY1tyYyArIGN0eC0+bS5tYl9udW1dLmJpdHM7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjdHgtPm1iX3JjW3JjICsgY3R4LT5tLmMubWJfbnVtXS5iaXRzOwogICAgICAgICAg
ICAgaWYgKGN0eC0+bWJfcXNjYWxlW21iXSA8IDI1NSkKICAgICAgICAgICAgICAgICBjdHgtPm1i
X3FzY2FsZVttYl0rKzsKLSAgICAgICAgICAgIGN0eC0+bWJfYml0c1ttYl0gICA9IGN0eC0+bWJf
cmNbcmMgKyBjdHgtPm0ubWJfbnVtXS5iaXRzOworICAgICAgICAgICAgY3R4LT5tYl9iaXRzW21i
XSAgID0gY3R4LT5tYl9yY1tyYyArIGN0eC0+bS5jLm1iX251bV0uYml0czsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChtYXhfYml0cyA+IGN0eC0+ZnJhbWVfYml0cykKQEAgLTEyMzcsMTMgKzEy
MzIsMTEgQEAgcmV0cnk6CiAKIHN0YXRpYyB2b2lkIGRueGhkX2xvYWRfcGljdHVyZShETlhIREVu
Y0NvbnRleHQgKmN0eCwgY29uc3QgQVZGcmFtZSAqZnJhbWUpCiB7Ci0gICAgaW50IGk7Ci0KLSAg
ICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5tLmF2Y3R4LT50aHJlYWRfY291bnQ7IGkrKykgewotICAg
ICAgICBjdHgtPnRocmVhZFtpXS0+bS5saW5lc2l6ZSAgICA9IGZyYW1lLT5saW5lc2l6ZVswXSA8
PCBjdHgtPmludGVybGFjZWQ7Ci0gICAgICAgIGN0eC0+dGhyZWFkW2ldLT5tLnV2bGluZXNpemUg
ID0gZnJhbWUtPmxpbmVzaXplWzFdIDw8IGN0eC0+aW50ZXJsYWNlZDsKLSAgICAgICAgY3R4LT50
aHJlYWRbaV0tPmRjdF95X29mZnNldCAgPSBjdHgtPm0ubGluZXNpemUgICo4OwotICAgICAgICBj
dHgtPnRocmVhZFtpXS0+ZGN0X3V2X29mZnNldCA9IGN0eC0+bS51dmxpbmVzaXplKjg7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPm0uYy5hdmN0eC0+dGhyZWFkX2NvdW50OyBpKyspIHsK
KyAgICAgICAgY3R4LT50aHJlYWRbaV0tPm0uYy5saW5lc2l6ZSAgICA9IGZyYW1lLT5saW5lc2l6
ZVswXSA8PCBjdHgtPmludGVybGFjZWQ7CisgICAgICAgIGN0eC0+dGhyZWFkW2ldLT5tLmMudXZs
aW5lc2l6ZSAgPSBmcmFtZS0+bGluZXNpemVbMV0gPDwgY3R4LT5pbnRlcmxhY2VkOworICAgICAg
ICBjdHgtPnRocmVhZFtpXS0+ZGN0X3lfb2Zmc2V0ICAgID0gY3R4LT5tLmMubGluZXNpemUgICo4
OworICAgICAgICBjdHgtPnRocmVhZFtpXS0+ZGN0X3V2X29mZnNldCAgID0gY3R4LT5tLmMudXZs
aW5lc2l6ZSo4OwogICAgIH0KIAogICAgIGN0eC0+Y3VyX2ZpZWxkID0gKGZyYW1lLT5mbGFncyAm
IEFWX0ZSQU1FX0ZMQUdfSU5URVJMQUNFRCkgJiYKQEAgLTEyODYsMTMgKzEyNzksMTMgQEAgZW5j
b2RlX2NvZGluZ191bml0OgogICAgIGRueGhkX3NldHVwX3RocmVhZHNfc2xpY2VzKGN0eCk7CiAK
ICAgICBvZmZzZXQgPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm0ubWJfaGVpZ2h0OyBp
KyspIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5tLmMubWJfaGVpZ2h0OyBpKyspIHsKICAg
ICAgICAgQVZfV0IzMihjdHgtPm1zaXAgKyBpICogNCwgb2Zmc2V0KTsKICAgICAgICAgb2Zmc2V0
ICs9IGN0eC0+c2xpY2Vfc2l6ZVtpXTsKICAgICAgICAgYXZfYXNzZXJ0MSghKGN0eC0+c2xpY2Vf
c2l6ZVtpXSAmIDMpKTsKICAgICB9CiAKLSAgICBhdmN0eC0+ZXhlY3V0ZTIoYXZjdHgsIGRueGhk
X2VuY29kZV90aHJlYWQsIGJ1ZiwgTlVMTCwgY3R4LT5tLm1iX2hlaWdodCk7CisgICAgYXZjdHgt
PmV4ZWN1dGUyKGF2Y3R4LCBkbnhoZF9lbmNvZGVfdGhyZWFkLCBidWYsIE5VTEwsIGN0eC0+bS5j
Lm1iX2hlaWdodCk7CiAKICAgICBhdl9hc3NlcnQxKGN0eC0+ZGF0YV9vZmZzZXQgKyBvZmZzZXQg
KyA0IDw9IGN0eC0+Y29kaW5nX3VuaXRfc2l6ZSk7CiAgICAgbWVtc2V0KGJ1ZiArIGN0eC0+ZGF0
YV9vZmZzZXQgKyBvZmZzZXQsIDAsCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RueGhkZW5jLmgg
Yi9saWJhdmNvZGVjL2RueGhkZW5jLmgKaW5kZXggMDBkNDg2YmFiZC4uNzU0MDYwN2NkYyAxMDA2
NDQKLS0tIGEvbGliYXZjb2RlYy9kbnhoZGVuYy5oCisrKyBiL2xpYmF2Y29kZWMvZG54aGRlbmMu
aApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5o
IgogCi0jaW5jbHVkZSAibXBlZ3ZpZGVvLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvZW5jLmgiCiAj
aW5jbHVkZSAiZG54aGRkYXRhLmgiCiAKIHR5cGVkZWYgc3RydWN0IFJDQ01QRW50cnkgewpAQCAt
NDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBSQ0VudHJ5IHsKIAogdHlwZWRlZiBzdHJ1Y3Qg
RE5YSERFbmNDb250ZXh0IHsKICAgICBBVkNsYXNzICpjbGFzczsKLSAgICBNcGVnRW5jQ29udGV4
dCBtOyAvLy88IFVzZWQgZm9yIHF1YW50aXphdGlvbiBkc3AgZnVuY3Rpb25zCisgICAgTVBWRW5j
Q29udGV4dCBtOyAvLy88IFVzZWQgZm9yIHF1YW50aXphdGlvbiBkc3AgZnVuY3Rpb25zCiAKICAg
ICBpbnQgY2lkOwogICAgIGludCBwcm9maWxlOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9mbHZl
bmMuYyBiL2xpYmF2Y29kZWMvZmx2ZW5jLmMKaW5kZXggYjRhMzBmZTU1OC4uZGYxYTY1MDIyMiAx
MDA2NDQKLS0tIGEvbGliYXZjb2RlYy9mbHZlbmMuYworKysgYi9saWJhdmNvZGVjL2ZsdmVuYy5j
CkBAIC0yNSw0MiArMjUsNDIgQEAKIAogaW50IGZmX2Zsdl9lbmNvZGVfcGljdHVyZV9oZWFkZXIo
TVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0
IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgaW50
IGZvcm1hdDsKIAogICAgIGFsaWduX3B1dF9iaXRzKCZzLT5wYik7CiAKICAgICBwdXRfYml0cygm
cy0+cGIsIDE3LCAxKTsKICAgICAvKiAwOiBILjI2MyBlc2NhcGUgY29kZXMgMTogMTEtYml0IGVz
Y2FwZSBjb2RlcyAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgKHMtPmgyNjNfZmx2IC0gMSkp
OworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgKHMtPmMuaDI2M19mbHYgLSAxKSk7CiAgICAgcHV0
X2JpdHMoJnMtPnBiLCA4LAotICAgICAgICAgICAgICgoKGludDY0X3QpIHMtPnBpY3R1cmVfbnVt
YmVyICogMzAgKiBzLT5hdmN0eC0+dGltZV9iYXNlLm51bSkgLyAgIC8vIEZJWE1FIHVzZSB0aW1l
c3RhbXAKLSAgICAgICAgICAgICAgcy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4pICYgMHhmZik7ICAg
LyogVGVtcG9yYWxSZWZlcmVuY2UgKi8KLSAgICBpZiAocy0+d2lkdGggPT0gMzUyICYmIHMtPmhl
aWdodCA9PSAyODgpCisgICAgICAgICAgICAgKCgoaW50NjRfdCkgcy0+Yy5waWN0dXJlX251bWJl
ciAqIDMwICogcy0+Yy5hdmN0eC0+dGltZV9iYXNlLm51bSkgLyAgIC8vIEZJWE1FIHVzZSB0aW1l
c3RhbXAKKyAgICAgICAgICAgICAgcy0+Yy5hdmN0eC0+dGltZV9iYXNlLmRlbikgJiAweGZmKTsg
ICAvKiBUZW1wb3JhbFJlZmVyZW5jZSAqLworICAgIGlmIChzLT5jLndpZHRoID09IDM1MiAmJiBz
LT5jLmhlaWdodCA9PSAyODgpCiAgICAgICAgIGZvcm1hdCA9IDI7Ci0gICAgZWxzZSBpZiAocy0+
d2lkdGggPT0gMTc2ICYmIHMtPmhlaWdodCA9PSAxNDQpCisgICAgZWxzZSBpZiAocy0+Yy53aWR0
aCA9PSAxNzYgJiYgcy0+Yy5oZWlnaHQgPT0gMTQ0KQogICAgICAgICBmb3JtYXQgPSAzOwotICAg
IGVsc2UgaWYgKHMtPndpZHRoID09IDEyOCAmJiBzLT5oZWlnaHQgPT0gOTYpCisgICAgZWxzZSBp
ZiAocy0+Yy53aWR0aCA9PSAxMjggJiYgcy0+Yy5oZWlnaHQgPT0gOTYpCiAgICAgICAgIGZvcm1h
dCA9IDQ7Ci0gICAgZWxzZSBpZiAocy0+d2lkdGggPT0gMzIwICYmIHMtPmhlaWdodCA9PSAyNDAp
CisgICAgZWxzZSBpZiAocy0+Yy53aWR0aCA9PSAzMjAgJiYgcy0+Yy5oZWlnaHQgPT0gMjQwKQog
ICAgICAgICBmb3JtYXQgPSA1OwotICAgIGVsc2UgaWYgKHMtPndpZHRoID09IDE2MCAmJiBzLT5o
ZWlnaHQgPT0gMTIwKQorICAgIGVsc2UgaWYgKHMtPmMud2lkdGggPT0gMTYwICYmIHMtPmMuaGVp
Z2h0ID09IDEyMCkKICAgICAgICAgZm9ybWF0ID0gNjsKLSAgICBlbHNlIGlmIChzLT53aWR0aCA8
PSAyNTUgJiYgcy0+aGVpZ2h0IDw9IDI1NSkKKyAgICBlbHNlIGlmIChzLT5jLndpZHRoIDw9IDI1
NSAmJiBzLT5jLmhlaWdodCA8PSAyNTUpCiAgICAgICAgIGZvcm1hdCA9IDA7ICAgLyogdXNlIDEg
Ynl0ZSB3aWR0aCAmIGhlaWdodCAqLwogICAgIGVsc2UKICAgICAgICAgZm9ybWF0ID0gMTsgICAv
KiB1c2UgMiBieXRlcyB3aWR0aCAmIGhlaWdodCAqLwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMywg
Zm9ybWF0KTsgICAvKiBQaWN0dXJlU2l6ZSAqLwogICAgIGlmIChmb3JtYXQgPT0gMCkgewotICAg
ICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPndpZHRoKTsKLSAgICAgICAgcHV0X2JpdHMoJnMt
PnBiLCA4LCBzLT5oZWlnaHQpOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPmMud2lk
dGgpOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPmMuaGVpZ2h0KTsKICAgICB9IGVs
c2UgaWYgKGZvcm1hdCA9PSAxKSB7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTYsIHMtPndp
ZHRoKTsKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxNiwgcy0+aGVpZ2h0KTsKKyAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCAxNiwgcy0+Yy53aWR0aCk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5w
YiwgMTYsIHMtPmMuaGVpZ2h0KTsKICAgICB9Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5w
aWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1ApOyAgIC8qIFBpY3R1cmVUeXBlICovCisgICAg
cHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCk7
ICAgLyogUGljdHVyZVR5cGUgKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgIC8qIERl
YmxvY2tpbmdGbGFnOiBvbiAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+cXNjYWxlKTsg
ICAvKiBRdWFudGl6ZXIgKi8KKyAgICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPmMucXNjYWxlKTsg
ICAvKiBRdWFudGl6ZXIgKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAgIC8qIEV4dHJh
SW5mb3JtYXRpb24gKi8KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9o
MjYxZW5jLmMgYi9saWJhdmNvZGVjL2gyNjFlbmMuYwppbmRleCBkYTg3MzZhNzhjLi43YzNjODc1
MmRmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjFlbmMuYworKysgYi9saWJhdmNvZGVjL2gy
NjFlbmMuYwpAQCAtNjksMjAgKzY5LDIwIEBAIHR5cGVkZWYgc3RydWN0IEgyNjFFbmNDb250ZXh0
IHsKIHN0YXRpYyBpbnQgaDI2MV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0pCiB7CiAgICAgSDI2MUVuY0NvbnRleHQgKmNvbnN0IGggPSAoSDI2MUVuY0Nv
bnRleHQgKiltOwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsKKyAgICBN
UFZFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsKICAgICBpbnQgdGVtcF9yZWY7CiAKICAg
ICBhbGlnbl9wdXRfYml0cygmcy0+cGIpOwogCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAyMCwgMHgx
MCk7IC8qIFBTQyAqLwogCi0gICAgdGVtcF9yZWYgPSBzLT5waWN0dXJlX251bWJlciAqIDMwMDAw
TEwgKiBzLT5hdmN0eC0+dGltZV9iYXNlLm51bSAvCi0gICAgICAgICAgICAgICAoMTAwMUxMICog
cy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4pOyAgIC8vIEZJWE1FIG1heWJlIHRoaXMgc2hvdWxkIHVz
ZSBhIHRpbWVzdGFtcAorICAgIHRlbXBfcmVmID0gcy0+Yy5waWN0dXJlX251bWJlciAqIDMwMDAw
TEwgKiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtIC8KKyAgICAgICAgICAgICAgICgxMDAxTEwg
KiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsgICAvLyBGSVhNRSBtYXliZSB0aGlzIHNob3Vs
ZCB1c2UgYSB0aW1lc3RhbXAKICAgICBwdXRfc2JpdHMoJnMtPnBiLCA1LCB0ZW1wX3JlZik7IC8q
IFRlbXBvcmFsUmVmZXJlbmNlICovCiAKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAvKiBz
cGxpdCBzY3JlZW4gb2ZmICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgLyogY2FtZXJh
ICBvZmYgKi8KLSAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNU
VVJFX1RZUEVfSSk7IC8qIGZyZWV6ZSBwaWN0dXJlIHJlbGVhc2Ugb24vb2ZmICovCisgICAgcHV0
X2JpdHMoJnMtPnBiLCAxLCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7IC8q
IGZyZWV6ZSBwaWN0dXJlIHJlbGVhc2Ugb24vb2ZmICovCiAKICAgICBwdXRfYml0cygmcy0+cGIs
IDEsIGgtPmZvcm1hdCk7IC8qIDAgPT0gUUNJRiwgMSA9PSBDSUYgKi8KIApAQCAtOTEsNyArOTEs
NyBAQCBzdGF0aWMgaW50IGgyNjFfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250
ZXh0ICpjb25zdCBtKQogCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgLyogbm8gUEVJICov
CiAgICAgaC0+Z29iX251bWJlciA9IGgtPmZvcm1hdCAtIDE7Ci0gICAgcy0+bWJfc2tpcF9ydW4g
PSAwOworICAgIHMtPmMubWJfc2tpcF9ydW4gPSAwOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05
OSw3ICs5OSw3IEBAIHN0YXRpYyBpbnQgaDI2MV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFp
bkVuY0NvbnRleHQgKmNvbnN0IG0pCiAvKioKICAqIEVuY29kZSBhIGdyb3VwIG9mIGJsb2NrcyBo
ZWFkZXIuCiAgKi8KLXN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX2dvYl9oZWFkZXIoTXBlZ0VuY0Nv
bnRleHQgKnMsIGludCBtYl9saW5lKQorc3RhdGljIHZvaWQgaDI2MV9lbmNvZGVfZ29iX2hlYWRl
cihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgbWJfbGluZSkKIHsKICAgICBIMjYxRW5jQ29u
dGV4dCAqY29uc3QgaCA9IChIMjYxRW5jQ29udGV4dCAqKXM7CiAgICAgaWYgKGgtPmZvcm1hdCA9
PSBIMjYxX1FDSUYpIHsKQEAgLTEwOSwzOCArMTA5LDM4IEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5j
b2RlX2dvYl9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBtYl9saW5lKQogICAgIH0KICAg
ICBwdXRfYml0cygmcy0+cGIsIDE2LCAxKTsgICAgICAgICAgICAvKiBHQlNDICovCiAgICAgcHV0
X2JpdHMoJnMtPnBiLCA0LCBoLT5nb2JfbnVtYmVyKTsgLyogR04gKi8KLSAgICBwdXRfYml0cygm
cy0+cGIsIDUsIHMtPnFzY2FsZSk7ICAgICAvKiBHUVVBTlQgKi8KKyAgICBwdXRfYml0cygmcy0+
cGIsIDUsIHMtPmMucXNjYWxlKTsgICAgIC8qIEdRVUFOVCAqLwogICAgIHB1dF9iaXRzKCZzLT5w
YiwgMSwgMCk7ICAgICAgICAgICAgIC8qIG5vIEdFSSAqLwotICAgIHMtPm1iX3NraXBfcnVuID0g
MDsKLSAgICBzLT5sYXN0X212WzBdWzBdWzBdID0gMDsKLSAgICBzLT5sYXN0X212WzBdWzBdWzFd
ID0gMDsKKyAgICBzLT5jLm1iX3NraXBfcnVuID0gMDsKKyAgICBzLT5jLmxhc3RfbXZbMF1bMF1b
MF0gPSAwOworICAgIHMtPmMubGFzdF9tdlswXVswXVsxXSA9IDA7CiB9CiAKLXZvaWQgZmZfaDI2
MV9yZW9yZGVyX21iX2luZGV4KE1wZWdFbmNDb250ZXh0ICpzKQordm9pZCBmZl9oMjYxX3Jlb3Jk
ZXJfbWJfaW5kZXgoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKIHsKICAgICBjb25zdCBIMjYxRW5j
Q29udGV4dCAqY29uc3QgaCA9IChIMjYxRW5jQ29udGV4dCopczsKLSAgICBpbnQgaW5kZXggPSBz
LT5tYl94ICsgcy0+bWJfeSAqIHMtPm1iX3dpZHRoOworICAgIGludCBpbmRleCA9IHMtPmMubWJf
eCArIHMtPmMubWJfeSAqIHMtPmMubWJfd2lkdGg7CiAKICAgICBpZiAoaW5kZXggJSAxMSA9PSAw
KSB7CiAgICAgICAgIGlmIChpbmRleCAlIDMzID09IDApCiAgICAgICAgICAgICBoMjYxX2VuY29k
ZV9nb2JfaGVhZGVyKHMsIDApOwotICAgICAgICBzLT5sYXN0X212WzBdWzBdWzBdID0gMDsKLSAg
ICAgICAgcy0+bGFzdF9tdlswXVswXVsxXSA9IDA7CisgICAgICAgIHMtPmMubGFzdF9tdlswXVsw
XVswXSA9IDA7CisgICAgICAgIHMtPmMubGFzdF9tdlswXVswXVsxXSA9IDA7CiAgICAgfQogCiAg
ICAgLyogZm9yIENJRiB0aGUgR09CJ3MgYXJlIGZyYWdtZW50ZWQgaW4gdGhlIG1pZGRsZSBvZiBh
IHNjYW5saW5lCiAgICAgICogdGhhdCdzIHdoeSB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgeCBhbmQg
eSBpbmRleCBvZiB0aGUgbWFjcm9ibG9ja3MgKi8KICAgICBpZiAoaC0+Zm9ybWF0ID09IEgyNjFf
Q0lGKSB7Ci0gICAgICAgIHMtPm1iX3ggID0gaW5kZXggJSAxMTsKKyAgICAgICAgcy0+Yy5tYl94
ICA9IGluZGV4ICUgMTE7CiAgICAgICAgIGluZGV4ICAgLz0gMTE7Ci0gICAgICAgIHMtPm1iX3kg
ID0gaW5kZXggJSAzOworICAgICAgICBzLT5jLm1iX3kgID0gaW5kZXggJSAzOwogICAgICAgICBp
bmRleCAgIC89IDM7Ci0gICAgICAgIHMtPm1iX3ggKz0gMTEgKiAoaW5kZXggJSAyKTsKKyAgICAg
ICAgcy0+Yy5tYl94ICs9IDExICogKGluZGV4ICUgMik7CiAgICAgICAgIGluZGV4ICAgLz0gMjsK
LSAgICAgICAgcy0+bWJfeSArPSAzICogaW5kZXg7CisgICAgICAgIHMtPmMubWJfeSArPSAzICog
aW5kZXg7CiAKLSAgICAgICAgZmZfaW5pdF9ibG9ja19pbmRleChzKTsKLSAgICAgICAgZmZfdXBk
YXRlX2Jsb2NrX2luZGV4KHMsIDgsIDAsIDEpOworICAgICAgICBmZl9pbml0X2Jsb2NrX2luZGV4
KCZzLT5jKTsKKyAgICAgICAgZmZfdXBkYXRlX2Jsb2NrX2luZGV4KCZzLT5jLCA4LCAwLCAxKTsK
ICAgICB9CiB9CiAKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5jb2Rl
X21vdGlvbihQdXRCaXRDb250ZXh0ICpwYiwgaW50IHZhbCkKICAgICAgICAgICAgICAgICAgaDI2
MV9tdl9jb2Rlc1tNVl9UQUJfT0ZGU0VUICsgdmFsXVswXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
aW50IGdldF9jYnAoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNl1bNjRdKQorc3Rh
dGljIGlubGluZSBpbnQgZ2V0X2NicChjb25zdCBpbnQgYmxvY2tfbGFzdF9pbmRleFs2XSkKIHsK
ICAgICBpbnQgaSwgY2JwOwogICAgIGNicCA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkr
KykKLSAgICAgICAgaWYgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKKyAgICAgICAgaWYg
KGJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKICAgICAgICAgICAgIGNicCB8PSAxIDw8ICg1IC0g
aSk7CiAgICAgcmV0dXJuIGNicDsKIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHN0YXRpYyBpbmxp
bmUgaW50IGdldF9jYnAoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNl1bNjRdKQog
ICovCiBzdGF0aWMgdm9pZCBoMjYxX2VuY29kZV9ibG9jayhIMjYxRW5jQ29udGV4dCAqaCwgaW50
MTZfdCAqYmxvY2ssIGludCBuKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJmgt
PnMuczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsKICAgICBpbnQgbGV2
ZWwsIHJ1biwgaSwgaiwgbGFzdF9pbmRleCwgbGFzdF9ub25femVybzsKIAotICAgIGlmIChzLT5t
Yl9pbnRyYSkgeworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CiAgICAgICAgIC8qIERDIGNvZWYg
Ki8KICAgICAgICAgbGV2ZWwgPSBibG9ja1swXTsKICAgICAgICAgLyogMjU1IGNhbm5vdCBiZSBy
ZXByZXNlbnRlZCwgc28gd2UgY2xhbXAgKi8KQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9p
ZCBoMjYxX2VuY29kZV9ibG9jayhIMjYxRW5jQ29udGV4dCAqaCwgaW50MTZfdCAqYmxvY2ssIGlu
dCBuKQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBsZXZlbCk7CiAgICAgICAgIGkg
PSAxOwogICAgIH0gZWxzZSBpZiAoKGJsb2NrWzBdID09IDEgfHwgYmxvY2tbMF0gPT0gLTEpICYm
Ci0gICAgICAgICAgICAgICAocy0+YmxvY2tfbGFzdF9pbmRleFtuXSA+IC0xKSkgeworICAgICAg
ICAgICAgICAgKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXSA+IC0xKSkgewogICAgICAgICAvLyBz
cGVjaWFsIGNhc2UKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBibG9ja1swXSA+IDAgPyAy
IDogMyk7CiAgICAgICAgIGkgPSAxOwpAQCAtMTk4LDEwICsxOTgsMTAgQEAgc3RhdGljIHZvaWQg
aDI2MV9lbmNvZGVfYmxvY2soSDI2MUVuY0NvbnRleHQgKmgsIGludDE2X3QgKmJsb2NrLCBpbnQg
bikKICAgICB9CiAKICAgICAvKiBBQyBjb2VmcyAqLwotICAgIGxhc3RfaW5kZXggICAgPSBzLT5i
bG9ja19sYXN0X2luZGV4W25dOworICAgIGxhc3RfaW5kZXggICAgPSBzLT5jLmJsb2NrX2xhc3Rf
aW5kZXhbbl07CiAgICAgbGFzdF9ub25femVybyA9IGkgLSAxOwogICAgIGZvciAoOyBpIDw9IGxh
c3RfaW5kZXg7IGkrKykgewotICAgICAgICBqICAgICA9IHMtPmludHJhX3NjYW50YWJsZS5wZXJt
dXRhdGVkW2ldOworICAgICAgICBqICAgICA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0
ZWRbaV07CiAgICAgICAgIGxldmVsID0gYmxvY2tbal07CiAgICAgICAgIGlmIChsZXZlbCkgewog
ICAgICAgICAgICAgcnVuICAgID0gaSAtIGxhc3Rfbm9uX3plcm8gLSAxOwpAQCAtMjI1LDcgKzIy
NSw3IEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX2Jsb2NrKEgyNjFFbmNDb250ZXh0ICpoLCBp
bnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgMHgyKTsg
Ly8gRU9CCiB9CiAKLXN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpj
b25zdCBzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKK3N0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX21i
KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbNl1bNjRdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpCiB7CiAgICAgLyog
VGhlIGZvbGxvd2luZyBpcyBvbmx5IGFsbG93ZWQgYmVjYXVzZSB0aGlzIGVuY29kZXIKQEAgLTIz
OCwzNiArMjM4LDM2IEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0
ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKIAogICAgIGNvbS0+bXR5cGUgPSAwOwog
Ci0gICAgaWYgKCFzLT5tYl9pbnRyYSkgeworICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAg
ICAgICAvKiBjb21wdXRlIGNicCAqLwotICAgICAgICBjYnAgPSBnZXRfY2JwKHMsIGJsb2NrKTsK
KyAgICAgICAgY2JwID0gZ2V0X2NicChzLT5jLmJsb2NrX2xhc3RfaW5kZXgpOwogCiAgICAgICAg
IC8qIG12ZCBpbmRpY2F0ZXMgaWYgdGhpcyBibG9jayBpcyBtb3Rpb24gY29tcGVuc2F0ZWQgKi8K
ICAgICAgICAgbXZkID0gbW90aW9uX3ggfCBtb3Rpb25feTsKIAogICAgICAgICBpZiAoKGNicCB8
IG12ZCkgPT0gMCkgewogICAgICAgICAgICAgLyogc2tpcCBtYWNyb2Jsb2NrICovCi0gICAgICAg
ICAgICBzLT5tYl9za2lwX3J1bisrOwotICAgICAgICAgICAgcy0+bGFzdF9tdlswXVswXVswXSA9
IDA7Ci0gICAgICAgICAgICBzLT5sYXN0X212WzBdWzBdWzFdID0gMDsKLSAgICAgICAgICAgIHMt
PnFzY2FsZSAtPSBzLT5kcXVhbnQ7CisgICAgICAgICAgICBzLT5jLm1iX3NraXBfcnVuKys7Cisg
ICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1bMF1bMF0gPSAwOworICAgICAgICAgICAgcy0+Yy5s
YXN0X212WzBdWzBdWzFdID0gMDsKKyAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFu
dDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIE1CIGlz
IG5vdCBza2lwcGVkLCBlbmNvZGUgTUJBICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLAotICAgICAg
ICAgICAgIGZmX2gyNjFfbWJhX2JpdHNbcy0+bWJfc2tpcF9ydW5dLAotICAgICAgICAgICAgIGZm
X2gyNjFfbWJhX2NvZGVbcy0+bWJfc2tpcF9ydW5dKTsKLSAgICBzLT5tYl9za2lwX3J1biA9IDA7
CisgICAgICAgICAgICAgZmZfaDI2MV9tYmFfYml0c1tzLT5jLm1iX3NraXBfcnVuXSwKKyAgICAg
ICAgICAgICBmZl9oMjYxX21iYV9jb2RlW3MtPmMubWJfc2tpcF9ydW5dKTsKKyAgICBzLT5jLm1i
X3NraXBfcnVuID0gMDsKIAogICAgIC8qIGNhbGN1bGF0ZSBNVFlQRSAqLwotICAgIGlmICghcy0+
bWJfaW50cmEpIHsKKyAgICBpZiAoIXMtPmMubWJfaW50cmEpIHsKICAgICAgICAgY29tLT5tdHlw
ZSsrOwogCi0gICAgICAgIGlmIChtdmQgfHwgcy0+bG9vcF9maWx0ZXIpCisgICAgICAgIGlmICht
dmQgfHwgcy0+Yy5sb29wX2ZpbHRlcikKICAgICAgICAgICAgIGNvbS0+bXR5cGUgKz0gMzsKLSAg
ICAgICAgaWYgKHMtPmxvb3BfZmlsdGVyKQorICAgICAgICBpZiAocy0+Yy5sb29wX2ZpbHRlcikK
ICAgICAgICAgICAgIGNvbS0+bXR5cGUgKz0gMzsKICAgICAgICAgaWYgKGNicCkKICAgICAgICAg
ICAgIGNvbS0+bXR5cGUrKzsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgdm9pZCBoMjYxX2Vu
Y29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCiAg
ICAgaWYgKHMtPmRxdWFudCAmJiBjYnApIHsKICAgICAgICAgY29tLT5tdHlwZSsrOwogICAgIH0g
ZWxzZQotICAgICAgICBzLT5xc2NhbGUgLT0gcy0+ZHF1YW50OworICAgICAgICBzLT5jLnFzY2Fs
ZSAtPSBzLT5kcXVhbnQ7CiAKICAgICBwdXRfYml0cygmcy0+cGIsCiAgICAgICAgICAgICAgZmZf
aDI2MV9tdHlwZV9iaXRzW2NvbS0+bXR5cGVdLApAQCAtMjg2LDE1ICsyODYsMTUgQEAgc3RhdGlj
IHZvaWQgaDI2MV9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxv
Y2tbNl1bNjRdLAogICAgIGNvbS0+bXR5cGUgPSBmZl9oMjYxX210eXBlX21hcFtjb20tPm10eXBl
XTsKIAogICAgIGlmIChJU19RVUFOVChjb20tPm10eXBlKSkgewotICAgICAgICBmZl9zZXRfcXNj
YWxlKHMsIHMtPnFzY2FsZSArIHMtPmRxdWFudCk7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwg
NSwgcy0+cXNjYWxlKTsKKyAgICAgICAgZmZfc2V0X3FzY2FsZSgmcy0+Yywgcy0+Yy5xc2NhbGUg
KyBzLT5kcXVhbnQpOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPmMucXNjYWxlKTsK
ICAgICB9CiAKICAgICBpZiAoSVNfMTZYMTYoY29tLT5tdHlwZSkpIHsKLSAgICAgICAgbXZfZGlm
Zl94ICAgICAgID0gKG1vdGlvbl94ID4+IDEpIC0gcy0+bGFzdF9tdlswXVswXVswXTsKLSAgICAg
ICAgbXZfZGlmZl95ICAgICAgID0gKG1vdGlvbl95ID4+IDEpIC0gcy0+bGFzdF9tdlswXVswXVsx
XTsKLSAgICAgICAgcy0+bGFzdF9tdlswXVswXVswXSA9IChtb3Rpb25feCA+PiAxKTsKLSAgICAg
ICAgcy0+bGFzdF9tdlswXVswXVsxXSA9IChtb3Rpb25feSA+PiAxKTsKKyAgICAgICAgbXZfZGlm
Zl94ICAgICAgID0gKG1vdGlvbl94ID4+IDEpIC0gcy0+Yy5sYXN0X212WzBdWzBdWzBdOworICAg
ICAgICBtdl9kaWZmX3kgICAgICAgPSAobW90aW9uX3kgPj4gMSkgLSBzLT5jLmxhc3RfbXZbMF1b
MF1bMV07CisgICAgICAgIHMtPmMubGFzdF9tdlswXVswXVswXSA9IChtb3Rpb25feCA+PiAxKTsK
KyAgICAgICAgcy0+Yy5sYXN0X212WzBdWzBdWzFdID0gKG1vdGlvbl95ID4+IDEpOwogICAgICAg
ICBoMjYxX2VuY29kZV9tb3Rpb24oJnMtPnBiLCBtdl9kaWZmX3gpOwogICAgICAgICBoMjYxX2Vu
Y29kZV9tb3Rpb24oJnMtPnBiLCBtdl9kaWZmX3kpOwogICAgIH0KQEAgLTMxMCw4ICszMTAsOCBA
QCBzdGF0aWMgdm9pZCBoMjYxX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50
MTZfdCBibG9ja1s2XVs2NF0sCiAgICAgICAgIGgyNjFfZW5jb2RlX2Jsb2NrKGgsIGJsb2NrW2ld
LCBpKTsKIAogICAgIGlmICghSVNfMTZYMTYoY29tLT5tdHlwZSkpIHsKLSAgICAgICAgcy0+bGFz
dF9tdlswXVswXVswXSA9IDA7Ci0gICAgICAgIHMtPmxhc3RfbXZbMF1bMF1bMV0gPSAwOworICAg
ICAgICBzLT5jLmxhc3RfbXZbMF1bMF1bMF0gPSAwOworICAgICAgICBzLT5jLmxhc3RfbXZbMF1b
MF1bMV0gPSAwOwogICAgIH0KIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBhdl9jb2xk
IGludCBoMjYxX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAgICBzdGF0
aWMgQVZPbmNlIGluaXRfc3RhdGljX29uY2UgPSBBVl9PTkNFX0lOSVQ7CiAgICAgSDI2MUVuY0Nv
bnRleHQgKmNvbnN0IGggPSBhdmN0eC0+cHJpdl9kYXRhOwotICAgIE1wZWdFbmNDb250ZXh0ICpj
b25zdCBzID0gJmgtPnMuczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsK
IAogICAgIGlmIChhdmN0eC0+d2lkdGggPT0gMTc2ICYmIGF2Y3R4LT5oZWlnaHQgPT0gMTQ0KSB7
CiAgICAgICAgIGgtPmZvcm1hdCA9IEgyNjFfUUNJRjsKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0
aWMgYXZfY29sZCBpbnQgaDI2MV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAg
ICAgICAgICAgICAgICBhdmN0eC0+d2lkdGgsIGF2Y3R4LT5oZWlnaHQpOwogICAgICAgICByZXR1
cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KLSAgICBzLT5wcml2YXRlX2N0eCA9ICZoLT5jb21t
b247CisgICAgcy0+Yy5wcml2YXRlX2N0eCA9ICZoLT5jb21tb247CiAgICAgaC0+cy5lbmNvZGVf
cGljdHVyZV9oZWFkZXIgPSBoMjYxX2VuY29kZV9waWN0dXJlX2hlYWRlcjsKICAgICBzLT5lbmNv
ZGVfbWIgICAgICAgICAgICAgICA9IGgyNjFfZW5jb2RlX21iOwogCkBAIC0zNzcsNyArMzc3LDcg
QEAgc3RhdGljIGF2X2NvbGQgaW50IGgyNjFfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2
Y3R4KQogICAgIHMtPm1heF9xY29lZmYgICAgICAgPSAxMjc7CiAgICAgcy0+YWNfZXNjX2xlbmd0
aCAgICA9IEgyNjFfRVNDX0xFTjsKIAotICAgIHMtPm1lLm12X3BlbmFsdHkgPSBtdl9wZW5hbHR5
OworICAgIHMtPmMubWUubXZfcGVuYWx0eSA9IG12X3BlbmFsdHk7CiAKICAgICBzLT5pbnRyYV9h
Y192bGNfbGVuZ3RoICAgICAgPSBzLT5pbnRlcl9hY192bGNfbGVuZ3RoICAgICAgPSB1bmlfaDI2
MV9ybF9sZW47CiAgICAgcy0+aW50cmFfYWNfdmxjX2xhc3RfbGVuZ3RoID0gcy0+aW50ZXJfYWNf
dmxjX2xhc3RfbGVuZ3RoID0gdW5pX2gyNjFfcmxfbGVuX2xhc3Q7CmRpZmYgLS1naXQgYS9saWJh
dmNvZGVjL2gyNjFlbmMuaCBiL2xpYmF2Y29kZWMvaDI2MWVuYy5oCmluZGV4IDc5Y2RkMzFjMmYu
Ljc3ZjA3MmE1ZTcgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaDI2MWVuYy5oCisrKyBiL2xpYmF2
Y29kZWMvaDI2MWVuYy5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWZuZGVmIEFWQ09ERUNfSDI2MUVO
Q19ICiAjZGVmaW5lIEFWQ09ERUNfSDI2MUVOQ19ICiAKLSNpbmNsdWRlICJtcGVndmlkZW8uaCIK
K3R5cGVkZWYgc3RydWN0IE1QVkVuY0NvbnRleHQgTVBWRW5jQ29udGV4dDsKIAotdm9pZCBmZl9o
MjYxX3Jlb3JkZXJfbWJfaW5kZXgoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9oMjYxX3Jl
b3JkZXJfbWJfaW5kZXgoTVBWRW5jQ29udGV4dCAqcyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
bGliYXZjb2RlYy9oMjYzZW5jLmggYi9saWJhdmNvZGVjL2gyNjNlbmMuaAppbmRleCBkZDljYWE3
OTY5Li4xZjQ1OWEzMzJjIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjNlbmMuaAorKysgYi9s
aWJhdmNvZGVjL2gyNjNlbmMuaApAQCAtMjcsMjIgKzI3LDIyIEBACiBjb25zdCB1aW50OF90ICgq
ZmZfaDI2M19nZXRfbXZfcGVuYWx0eSh2b2lkKSlbTUFYX0RNVioyKzFdOwogCiB2b2lkIGZmX2gy
NjNfZW5jb2RlX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKm0pOwotdm9pZCBmZl9oMjYzX2VuY29k
ZV9nb2JfaGVhZGVyKE1wZWdFbmNDb250ZXh0ICogcywgaW50IG1iX2xpbmUpOwotdm9pZCBmZl9o
MjYzX2VuY29kZV9tYmEoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9oMjYzX2VuY29kZV9n
b2JfaGVhZGVyKE1QVkVuY0NvbnRleHQgKnMsIGludCBtYl9saW5lKTsKK3ZvaWQgZmZfaDI2M19l
bmNvZGVfbWJhKE1QVkVuY0NvbnRleHQgKnMpOwogCi12b2lkIGZmX2NsZWFuX2gyNjNfcXNjYWxl
cyhNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2NsZWFuX2gyNjNfcXNjYWxlcyhNUFZFbmND
b250ZXh0ICpzKTsKIAogdm9pZCBmZl9oMjYzX2VuY29kZV9tb3Rpb24oUHV0Qml0Q29udGV4dCAq
cGIsIGludCB2YWwsIGludCBmX2NvZGUpOwotdm9pZCBmZl9oMjYzX3VwZGF0ZV9tYihNcGVnRW5j
Q29udGV4dCAqcyk7Cit2b2lkIGZmX2gyNjNfdXBkYXRlX21iKE1QVkVuY0NvbnRleHQgKnMpOwog
Ci1zdGF0aWMgaW5saW5lIHZvaWQgZmZfaDI2M19lbmNvZGVfbW90aW9uX3ZlY3RvcihNcGVnRW5j
Q29udGV4dCAqIHMsCitzdGF0aWMgaW5saW5lIHZvaWQgZmZfaDI2M19lbmNvZGVfbW90aW9uX3Zl
Y3RvcihNUFZFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBpbnQgZl9jb2RlKQogewogICAgIGZmX2gyNjNf
ZW5jb2RlX21vdGlvbigmcy0+cGIsIHgsIGZfY29kZSk7CiAgICAgZmZfaDI2M19lbmNvZGVfbW90
aW9uKCZzLT5wYiwgeSwgZl9jb2RlKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgZ2V0X3BfY2Jw
KE1wZWdFbmNDb250ZXh0ICogcywKK3N0YXRpYyBpbmxpbmUgaW50IGdldF9wX2NicChNUFZFbmND
b250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgYmxvY2tbNl1b
NjRdLAogICAgICAgICAgICAgICAgICAgICAgIGludCBtb3Rpb25feCwgaW50IG1vdGlvbl95KXsK
ICAgICBpbnQgY2JwOwpAQCAtNTEsOCArNTEsOCBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfcF9j
YnAoTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgICAgICBpbnQgYmVzdF9jYnB5X3Njb3JlID0gSU5U
X01BWDsKICAgICAgICAgaW50IGJlc3RfY2JwY19zY29yZSA9IElOVF9NQVg7CiAgICAgICAgIGlu
dCBjYnBjID0gKC0xKSwgY2JweSA9ICgtMSk7Ci0gICAgICAgIGNvbnN0IGludCBvZmZzZXQgPSAo
cy0+bXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2ID8gMCA6IDE2KSArIChzLT5kcXVhbnQgPyA4IDog
MCk7Ci0gICAgICAgIGNvbnN0IGludCBsYW1iZGEgPSBzLT5sYW1iZGEyID4+IChGRl9MQU1CREFf
U0hJRlQgLSA2KTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNldCA9IChzLT5jLm12X3R5cGUgPT0g
TVZfVFlQRV8xNlgxNiA/IDAgOiAxNikgKyAocy0+ZHF1YW50ID8gOCA6IDApOworICAgICAgICBj
b25zdCBpbnQgbGFtYmRhID0gcy0+Yy5sYW1iZGEyID4+IChGRl9MQU1CREFfU0hJRlQgLSA2KTsK
IAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICAgaW50
IHNjb3JlID0gZmZfaDI2M19pbnRlcl9NQ0JQQ19iaXRzW2kgKyBvZmZzZXRdICogbGFtYmRhOwpA
QCAtNzgsMjEgKzc4LDIxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9wX2NicChNcGVnRW5jQ29u
dGV4dCAqIHMsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2JwID0gY2JwYyAr
IDQgKiBjYnB5OwotICAgICAgICBpZiAoIShtb3Rpb25feCB8IG1vdGlvbl95IHwgcy0+ZHF1YW50
KSAmJiBzLT5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsKKyAgICAgICAgaWYgKCEobW90aW9u
X3ggfCBtb3Rpb25feSB8IHMtPmRxdWFudCkgJiYgcy0+Yy5tdl90eXBlID09IE1WX1RZUEVfMTZY
MTYpIHsKICAgICAgICAgICAgIGlmIChiZXN0X2NicHlfc2NvcmUgKyBiZXN0X2NicGNfc2NvcmUg
KyAyICogbGFtYmRhID49IDApCiAgICAgICAgICAgICAgICAgY2JwPSAwOwogICAgICAgICB9CiAK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspIHsKLSAgICAgICAgICAgIGlmIChz
LT5ibG9ja19sYXN0X2luZGV4W2ldID49IDAgJiYgISgoY2JwID4+ICg1IC0gaSkpICYgMSkpIHsK
LSAgICAgICAgICAgICAgICBzLT5ibG9ja19sYXN0X2luZGV4W2ldID0gLTE7Ci0gICAgICAgICAg
ICAgICAgcy0+YmRzcC5jbGVhcl9ibG9jayhzLT5ibG9ja1tpXSk7CisgICAgICAgICAgICBpZiAo
cy0+Yy5ibG9ja19sYXN0X2luZGV4W2ldID49IDAgJiYgISgoY2JwID4+ICg1IC0gaSkpICYgMSkp
IHsKKyAgICAgICAgICAgICAgICBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKKyAgICAg
ICAgICAgICAgICBzLT5jLmJkc3AuY2xlYXJfYmxvY2socy0+Yy5ibG9ja1tpXSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBjYnAgPSAwOwogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykgewotICAgICAgICAgICAgaWYgKHMtPmJsb2Nr
X2xhc3RfaW5kZXhbaV0gPj0gMCkKKyAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xhc3RfaW5k
ZXhbaV0gPj0gMCkKICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8PCAoNSAtIGkpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9pdHVoMjYzZW5jLmMgYi9saWJhdmNv
ZGVjL2l0dWgyNjNlbmMuYwppbmRleCA4NzZlMTc4MDcwLi42YmQ3YjZhNmNkIDEwMDY0NAotLS0g
YS9saWJhdmNvZGVjL2l0dWgyNjNlbmMuYworKysgYi9saWJhdmNvZGVjL2l0dWgyNjNlbmMuYwpA
QCAtMjIzLDE5ICsyMjMsMTkgQEAgYXZfY29uc3QgaW50IGZmX2gyNjNfYXNwZWN0X3RvX2luZm8o
QVZSYXRpb25hbCBhc3BlY3QpewogCiBzdGF0aWMgaW50IGgyNjNfZW5jb2RlX3BpY3R1cmVfaGVh
ZGVyKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpj
b25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAg
IGludCBmb3JtYXQsIGNvZGVkX2ZyYW1lX3JhdGUsIGNvZGVkX2ZyYW1lX3JhdGVfYmFzZSwgaSwg
dGVtcF9yZWY7CiAgICAgaW50IGJlc3RfY2xvY2tfY29kZT0xOwogICAgIGludCBiZXN0X2Rpdmlz
b3I9NjA7CiAgICAgaW50IGJlc3RfZXJyb3I9IElOVF9NQVg7CiAgICAgaW50IGN1c3RvbV9wY2Y7
CiAKLSAgICBpZihzLT5oMjYzX3BsdXMpeworICAgIGlmKHMtPmMuaDI2M19wbHVzKXsKICAgICAg
ICAgZm9yKGk9MDsgaTwyOyBpKyspewogICAgICAgICAgICAgaW50IGRpdiwgZXJyb3I7Ci0gICAg
ICAgICAgICBkaXY9IChzLT5hdmN0eC0+dGltZV9iYXNlLm51bSoxODAwMDAwTEwgKyA1MDBMTCpz
LT5hdmN0eC0+dGltZV9iYXNlLmRlbikgLyAoKDEwMDBMTCtpKSpzLT5hdmN0eC0+dGltZV9iYXNl
LmRlbik7CisgICAgICAgICAgICBkaXY9IChzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtKjE4MDAw
MDBMTCArIDUwMExMKnMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4pIC8gKCgxMDAwTEwraSkqcy0+
Yy5hdmN0eC0+dGltZV9iYXNlLmRlbik7CiAgICAgICAgICAgICBkaXY9IGF2X2NsaXAoZGl2LCAx
LCAxMjcpOwotICAgICAgICAgICAgZXJyb3I9IEZGQUJTKHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVt
KjE4MDAwMDBMTCAtICgxMDAwTEwraSkqcy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4qZGl2KTsKKyAg
ICAgICAgICAgIGVycm9yPSBGRkFCUyhzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtKjE4MDAwMDBM
TCAtICgxMDAwTEwraSkqcy0+Yy5hdmN0eC0+dGltZV9iYXNlLmRlbipkaXYpOwogICAgICAgICAg
ICAgaWYoZXJyb3IgPCBiZXN0X2Vycm9yKXsKICAgICAgICAgICAgICAgICBiZXN0X2Vycm9yPSBl
cnJvcjsKICAgICAgICAgICAgICAgICBiZXN0X2Rpdmlzb3I9IGRpdjsKQEAgLTI1MCw4ICsyNTAs
OCBAQCBzdGF0aWMgaW50IGgyNjNfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250
ZXh0ICpjb25zdCBtKQogICAgIGFsaWduX3B1dF9iaXRzKCZzLT5wYik7CiAKICAgICBwdXRfYml0
cygmcy0+cGIsIDIyLCAweDIwKTsgLyogUFNDICovCi0gICAgdGVtcF9yZWY9IHMtPnBpY3R1cmVf
bnVtYmVyICogKGludDY0X3QpY29kZWRfZnJhbWVfcmF0ZSAqIHMtPmF2Y3R4LT50aW1lX2Jhc2Uu
bnVtIC8gLy9GSVhNRSB1c2UgdGltZXN0YW1wCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGNv
ZGVkX2ZyYW1lX3JhdGVfYmFzZSAqIChpbnQ2NF90KXMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsK
KyAgICB0ZW1wX3JlZj0gcy0+Yy5waWN0dXJlX251bWJlciAqIChpbnQ2NF90KWNvZGVkX2ZyYW1l
X3JhdGUgKiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtIC8gLy9GSVhNRSB1c2UgdGltZXN0YW1w
CisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVkX2ZyYW1lX3JhdGVfYmFzZSAqIChpbnQ2
NF90KXMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4pOwogICAgIHB1dF9zYml0cygmcy0+cGIsIDgs
IHRlbXBfcmVmKTsgLyogVGVtcG9yYWxSZWZlcmVuY2UgKi8KIAogICAgIHB1dF9iaXRzKCZzLT5w
YiwgMSwgMSk7ICAgICAvKiBtYXJrZXIgKi8KQEAgLTI2MCwxOSArMjYwLDE5IEBAIHN0YXRpYyBp
bnQgaDI2M19lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0p
CiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgIC8qIGNhbWVyYSAgb2ZmICovCiAgICAg
cHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgIC8qIGZyZWV6ZSBwaWN0dXJlIHJlbGVhc2Ugb2Zm
ICovCiAKLSAgICBmb3JtYXQgPSBmZl9tYXRjaF8ydWludDE2KGZmX2gyNjNfZm9ybWF0LCBGRl9B
UlJBWV9FTEVNUyhmZl9oMjYzX2Zvcm1hdCksIHMtPndpZHRoLCBzLT5oZWlnaHQpOwotICAgIGlm
ICghcy0+aDI2M19wbHVzKSB7CisgICAgZm9ybWF0ID0gZmZfbWF0Y2hfMnVpbnQxNihmZl9oMjYz
X2Zvcm1hdCwgRkZfQVJSQVlfRUxFTVMoZmZfaDI2M19mb3JtYXQpLCBzLT5jLndpZHRoLCBzLT5j
LmhlaWdodCk7CisgICAgaWYgKCFzLT5jLmgyNjNfcGx1cykgewogICAgICAgICAvKiBILjI2M3Yx
ICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywgZm9ybWF0KTsKLSAgICAgICAgcHV0X2Jp
dHMoJnMtPnBiLCAxLCAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9QKSk7CisgICAg
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQ
RV9QKSk7CiAgICAgICAgIC8qIEJ5IG5vdyBVTVYgSVMgRElTQUJMRUQgT04gSC4yNjN2MSwgc2lu
Y2UgdGhlIHJlc3RyaWN0aW9ucwogICAgICAgICBvZiBILjI2M3YxIFVNViBpbXBsaWVzIHRvIGNo
ZWNrIHRoZSBwcmVkaWN0ZWQgTVYgYWZ0ZXIKICAgICAgICAgY2FsY3VsYXRpb24gb2YgdGhlIGN1
cnJlbnQgTUIgdG8gc2VlIGlmIHdlJ3JlIG9uIHRoZSBsaW1pdHMgKi8KICAgICAgICAgcHV0X2Jp
dHMoJnMtPnBiLCAxLCAwKTsgICAgICAgICAvKiBVbnJlc3RyaWN0ZWQgTW90aW9uIFZlY3Rvcjog
b2ZmICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAgICAgLyogU0FDOiBv
ZmYgKi8KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5vYm1jKTsgICAvKiBBZHZhbmNl
ZCBQcmVkaWN0aW9uICovCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5vYm1jKTsg
ICAvKiBBZHZhbmNlZCBQcmVkaWN0aW9uICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwg
MCk7ICAgICAgICAgLyogb25seSBJL1AtZnJhbWVzLCBubyBQQi1mcmFtZSAqLwotICAgICAgICBw
dXRfYml0cygmcy0+cGIsIDUsIHMtPnFzY2FsZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwg
NSwgcy0+Yy5xc2NhbGUpOwogICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAgICAgICAg
IC8qIENvbnRpbnVvdXMgUHJlc2VuY2UgTXVsdGlwb2ludCBtb2RlOiBvZmYgKi8KICAgICB9IGVs
c2UgewogICAgICAgICBpbnQgdWZlcD0xOwpAQCAtMjg3LDI0ICsyODcsMjQgQEAgc3RhdGljIGlu
dCBoMjYzX2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkK
ICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywgZm9ybWF0KTsKIAogICAgICAgICBwdXRf
Yml0cygmcy0+cGIsMSwgY3VzdG9tX3BjZik7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLCBz
LT51bXZwbHVzKTsgLyogVW5yZXN0cmljdGVkIE1vdGlvbiBWZWN0b3IgKi8KKyAgICAgICAgcHV0
X2JpdHMoJnMtPnBiLDEsIHMtPmMudW12cGx1cyk7IC8qIFVucmVzdHJpY3RlZCBNb3Rpb24gVmVj
dG9yICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLDApOyAvKiBTQUM6IG9mZiAqLwotICAg
ICAgICBwdXRfYml0cygmcy0+cGIsMSxzLT5vYm1jKTsgLyogQWR2YW5jZWQgUHJlZGljdGlvbiBN
b2RlICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmgyNjNfYWljKTsgLyogQWR2YW5j
ZWQgSW50cmEgQ29kaW5nICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmxvb3BfZmls
dGVyKTsgLyogRGVibG9ja2luZyBGaWx0ZXIgKi8KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDEs
cy0+aDI2M19zbGljZV9zdHJ1Y3R1cmVkKTsgLyogU2xpY2UgU3RydWN0dXJlZCAqLworICAgICAg
ICBwdXRfYml0cygmcy0+cGIsMSxzLT5jLm9ibWMpOyAvKiBBZHZhbmNlZCBQcmVkaWN0aW9uIE1v
ZGUgKi8KKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDEscy0+Yy5oMjYzX2FpYyk7IC8qIEFkdmFu
Y2VkIEludHJhIENvZGluZyAqLworICAgICAgICBwdXRfYml0cygmcy0+cGIsMSxzLT5jLmxvb3Bf
ZmlsdGVyKTsgLyogRGVibG9ja2luZyBGaWx0ZXIgKi8KKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LDEscy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVyZWQpOyAvKiBTbGljZSBTdHJ1Y3R1cmVkICovCiAg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLDApOyAvKiBSZWZlcmVuY2UgUGljdHVyZSBTZWxlY3Rp
b246IG9mZiAqLwogICAgICAgICBwdXRfYml0cygmcy0+cGIsMSwwKTsgLyogSW5kZXBlbmRlbnQg
U2VnbWVudCBEZWNvZGluZzogb2ZmICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmFs
dF9pbnRlcl92bGMpOyAvKiBBbHRlcm5hdGl2ZSBJbnRlciBWTEMgKi8KLSAgICAgICAgcHV0X2Jp
dHMoJnMtPnBiLDEscy0+bW9kaWZpZWRfcXVhbnQpOyAvKiBNb2RpZmllZCBRdWFudGl6YXRpb246
ICovCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmMuYWx0X2ludGVyX3ZsYyk7IC8qIEFs
dGVybmF0aXZlIEludGVyIFZMQyAqLworICAgICAgICBwdXRfYml0cygmcy0+cGIsMSxzLT5jLm1v
ZGlmaWVkX3F1YW50KTsgLyogTW9kaWZpZWQgUXVhbnRpemF0aW9uOiAqLwogICAgICAgICBwdXRf
Yml0cygmcy0+cGIsMSwxKTsgLyogIjEiIHRvIHByZXZlbnQgc3RhcnQgY29kZSBlbXVsYXRpb24g
Ki8KICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDMsMCk7IC8qIFJlc2VydmVkICovCiAKLSAgICAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1Ap
OworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDMsIHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RV
UkVfVFlQRV9QKTsKIAogICAgICAgICBwdXRfYml0cygmcy0+cGIsMSwwKTsgLyogUmVmZXJlbmNl
IFBpY3R1cmUgUmVzYW1wbGluZzogb2ZmICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLDAp
OyAvKiBSZWR1Y2VkLVJlc29sdXRpb24gVXBkYXRlOiBvZmYgKi8KLSAgICAgICAgcHV0X2JpdHMo
JnMtPnBiLDEscy0+bm9fcm91bmRpbmcpOyAvKiBSb3VuZGluZyBUeXBlICovCisgICAgICAgIHB1
dF9iaXRzKCZzLT5wYiwxLHMtPmMubm9fcm91bmRpbmcpOyAvKiBSb3VuZGluZyBUeXBlICovCiAg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwyLDApOyAvKiBSZXNlcnZlZCAqLwogICAgICAgICBwdXRf
Yml0cygmcy0+cGIsMSwxKTsgLyogIjEiIHRvIHByZXZlbnQgc3RhcnQgY29kZSBlbXVsYXRpb24g
Ki8KIApAQCAtMzEzLDE1ICszMTMsMTUgQEAgc3RhdGljIGludCBoMjYzX2VuY29kZV9waWN0dXJl
X2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAgICAgICBpZiAoZm9ybWF0
ID09IDgpIHsKICAgICAgICAgICAgIC8qIEN1c3RvbSBQaWN0dXJlIEZvcm1hdCAoQ1BGTVQpICov
Ci0gICAgICAgICAgICB1bnNpZ25lZCBhc3BlY3RfcmF0aW9faW5mbyA9IGZmX2gyNjNfYXNwZWN0
X3RvX2luZm8ocy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8pOworICAgICAgICAgICAgdW5z
aWduZWQgYXNwZWN0X3JhdGlvX2luZm8gPSBmZl9oMjYzX2FzcGVjdF90b19pbmZvKHMtPmMuYXZj
dHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8pOwogCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs
NCwgYXNwZWN0X3JhdGlvX2luZm8pOwotICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDksKHMt
PndpZHRoID4+IDIpIC0gMSk7CisgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsOSwocy0+Yy53
aWR0aCA+PiAyKSAtIDEpOwogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDEsMSk7IC8qICIx
IiB0byBwcmV2ZW50IHN0YXJ0IGNvZGUgZW11bGF0aW9uICovCi0gICAgICAgICAgICBwdXRfYml0
cygmcy0+cGIsOSwocy0+aGVpZ2h0ID4+IDIpKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5w
Yiw5LChzLT5jLmhlaWdodCA+PiAyKSk7CiAgICAgICAgICAgICBpZiAoYXNwZWN0X3JhdGlvX2lu
Zm8gPT0gRkZfQVNQRUNUX0VYVEVOREVEKXsKLSAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+
cGIsIDgsIHMtPmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSk7Ci0gICAgICAgICAgICAg
ICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBzLT5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4p
OworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgcy0+Yy5hdmN0eC0+c2FtcGxl
X2FzcGVjdF9yYXRpby5udW0pOworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwg
cy0+Yy5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4pOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGlmIChjdXN0b21fcGNmKSB7CkBAIC0zMzMsMjIgKzMzMywyMiBAQCBz
dGF0aWMgaW50IGgyNjNfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpj
b25zdCBtKQogICAgICAgICB9CiAKICAgICAgICAgLyogVW5saW1pdGVkIFVucmVzdHJpY3RlZCBN
b3Rpb24gVmVjdG9ycyBJbmRpY2F0b3IgKFVVSSkgKi8KLSAgICAgICAgaWYgKHMtPnVtdnBsdXMp
CisgICAgICAgIGlmIChzLT5jLnVtdnBsdXMpCiAvLyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5w
YiwxLDEpOyAvKiBMaW1pdGVkIGFjY29yZGluZyB0YWJsZXMgb2YgQW5uZXggRCAqLwogLy9GSVhN
RSBjaGVjayBhY3R1YWwgcmVxdWVzdGVkIHJhbmdlCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+
cGIsMiwxKTsgLyogdW5saW1pdGVkICovCi0gICAgICAgIGlmKHMtPmgyNjNfc2xpY2Vfc3RydWN0
dXJlZCkKKyAgICAgICAgaWYocy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVyZWQpCiAgICAgICAgICAg
ICBwdXRfYml0cygmcy0+cGIsMiwwKTsgLyogbm8gd2VpcmQgc3VibW9kZXMgKi8KIAotICAgICAg
ICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPnFzY2FsZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5w
YiwgNSwgcy0+Yy5xc2NhbGUpOwogICAgIH0KIAogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7
ICAgICAvKiBubyBQRUkgKi8KIAotICAgIGlmKHMtPmgyNjNfc2xpY2Vfc3RydWN0dXJlZCl7Cisg
ICAgaWYocy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVyZWQpewogICAgICAgICBwdXRfYml0cygmcy0+
cGIsIDEsIDEpOwogCi0gICAgICAgIGF2X2Fzc2VydDEocy0+bWJfeCA9PSAwICYmIHMtPm1iX3kg
PT0gMCk7CisgICAgICAgIGF2X2Fzc2VydDEocy0+Yy5tYl94ID09IDAgJiYgcy0+Yy5tYl95ID09
IDApOwogICAgICAgICBmZl9oMjYzX2VuY29kZV9tYmEocyk7CiAKICAgICAgICAgcHV0X2JpdHMo
JnMtPnBiLCAxLCAxKTsKQEAgLTM2MCw1MCArMzYwLDUxIEBAIHN0YXRpYyBpbnQgaDI2M19lbmNv
ZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAvKioKICAqIEVu
Y29kZSBhIGdyb3VwIG9mIGJsb2NrcyBoZWFkZXIuCiAgKi8KLXZvaWQgZmZfaDI2M19lbmNvZGVf
Z29iX2hlYWRlcihNcGVnRW5jQ29udGV4dCAqIHMsIGludCBtYl9saW5lKQordm9pZCBmZl9oMjYz
X2VuY29kZV9nb2JfaGVhZGVyKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCBtYl9saW5lKQog
ewogICAgIHB1dF9iaXRzKCZzLT5wYiwgMTcsIDEpOyAvKiBHQlNDICovCiAKLSAgICBpZihzLT5o
MjYzX3NsaWNlX3N0cnVjdHVyZWQpeworICAgIGlmKHMtPmMuaDI2M19zbGljZV9zdHJ1Y3R1cmVk
KXsKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsKIAogICAgICAgICBmZl9oMjYzX2Vu
Y29kZV9tYmEocyk7CiAKLSAgICAgICAgaWYocy0+bWJfbnVtID4gMTU4MykKKyAgICAgICAgaWYo
cy0+Yy5tYl9udW0gPiAxNTgzKQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsK
LSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5xc2NhbGUpOyAvKiBHUVVBTlQgKi8KKyAg
ICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5jLnFzY2FsZSk7IC8qIEdRVUFOVCAqLwogICAg
ICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIs
IHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7IC8qIEdGSUQgKi8KKyAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7
IC8qIEdGSUQgKi8KICAgICB9ZWxzZXsKLSAgICAgICAgaW50IGdvYl9udW1iZXI9IG1iX2xpbmUg
LyBzLT5nb2JfaW5kZXg7CisgICAgICAgIGludCBnb2JfbnVtYmVyPSBtYl9saW5lIC8gcy0+Yy5n
b2JfaW5kZXg7CiAKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBnb2JfbnVtYmVyKTsgLyog
R04gKi8KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5waWN0X3R5cGUgPT0gQVZfUElD
VFVSRV9UWVBFX0kpOyAvKiBHRklEICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+
cXNjYWxlKTsgLyogR1FVQU5UICovCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5w
aWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpOyAvKiBHRklEICovCisgICAgICAgIHB1dF9i
aXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOyAvKiBHUVVBTlQgKi8KICAgICB9CiB9CiAKIC8q
KgogICogbW9kaWZ5IHFzY2FsZSBzbyB0aGF0IGVuY29kaW5nIGlzIGFjdHVhbGx5IHBvc3NpYmxl
IGluIEguMjYzIChsaW1pdCBkaWZmZXJlbmNlIHRvIC0yLi4yKQogICovCi12b2lkIGZmX2NsZWFu
X2gyNjNfcXNjYWxlcyhNcGVnRW5jQ29udGV4dCAqcyl7Ci0gICAgaW50IGk7Ci0gICAgaW50OF90
ICogY29uc3QgcXNjYWxlX3RhYmxlID0gcy0+Y3VyX3BpYy5xc2NhbGVfdGFibGU7Cit2b2lkIGZm
X2NsZWFuX2gyNjNfcXNjYWxlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGludDhf
dCAqIGNvbnN0IHFzY2FsZV90YWJsZSA9IHMtPmMuY3VyX3BpYy5xc2NhbGVfdGFibGU7CiAKLSAg
ICBmb3IoaT0xOyBpPHMtPm1iX251bTsgaSsrKXsKLSAgICAgICAgaWYocXNjYWxlX3RhYmxlWyBz
LT5tYl9pbmRleDJ4eVtpXSBdIC0gcXNjYWxlX3RhYmxlWyBzLT5tYl9pbmRleDJ4eVtpLTFdIF0g
PjIpCi0gICAgICAgICAgICBxc2NhbGVfdGFibGVbIHMtPm1iX2luZGV4Mnh5W2ldIF09IHFzY2Fs
ZV90YWJsZVsgcy0+bWJfaW5kZXgyeHlbaS0xXSBdKzI7CisgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBzLT5jLm1iX251bTsgaSsrKSB7CisgICAgICAgIGlmIChxc2NhbGVfdGFibGVbIHMtPmMubWJf
aW5kZXgyeHlbaV0gXSAtIHFzY2FsZV90YWJsZVsgcy0+Yy5tYl9pbmRleDJ4eVtpLTFdIF0gPiAy
KQorICAgICAgICAgICAgcXNjYWxlX3RhYmxlWyBzLT5jLm1iX2luZGV4Mnh5W2ldIF0gPSBxc2Nh
bGVfdGFibGVbIHMtPmMubWJfaW5kZXgyeHlbaS0xXSBdICsgMjsKICAgICB9Ci0gICAgZm9yKGk9
cy0+bWJfbnVtLTI7IGk+PTA7IGktLSl7Ci0gICAgICAgIGlmKHFzY2FsZV90YWJsZVsgcy0+bWJf
aW5kZXgyeHlbaV0gXSAtIHFzY2FsZV90YWJsZVsgcy0+bWJfaW5kZXgyeHlbaSsxXSBdID4yKQot
ICAgICAgICAgICAgcXNjYWxlX3RhYmxlWyBzLT5tYl9pbmRleDJ4eVtpXSBdPSBxc2NhbGVfdGFi
bGVbIHMtPm1iX2luZGV4Mnh5W2krMV0gXSsyOworICAgIGZvcihpbnQgaSA9IHMtPmMubWJfbnVt
IC0gMjsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKHFzY2FsZV90YWJsZVsgcy0+Yy5tYl9p
bmRleDJ4eVtpXSBdIC0gcXNjYWxlX3RhYmxlWyBzLT5jLm1iX2luZGV4Mnh5W2krMV0gXSA+IDIp
CisgICAgICAgICAgICBxc2NhbGVfdGFibGVbIHMtPmMubWJfaW5kZXgyeHlbaV0gXSA9IHFzY2Fs
ZV90YWJsZVsgcy0+Yy5tYl9pbmRleDJ4eVtpKzFdIF0gKyAyOwogICAgIH0KIAotICAgIGlmKHMt
PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjNQKXsKLSAgICAgICAgZm9yKGk9MTsgaTxzLT5t
Yl9udW07IGkrKyl7Ci0gICAgICAgICAgICBpbnQgbWJfeHk9IHMtPm1iX2luZGV4Mnh5W2ldOwor
ICAgIGlmIChzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjNQKSB7CisgICAgICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgcy0+Yy5tYl9udW07IGkrKykgeworICAgICAgICAgICAgaW50IG1i
X3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKIAotICAgICAgICAgICAgaWYocXNjYWxlX3RhYmxl
W21iX3h5XSAhPSBxc2NhbGVfdGFibGVbcy0+bWJfaW5kZXgyeHlbaS0xXV0gJiYgKHMtPm1iX3R5
cGVbbWJfeHldJkNBTkRJREFURV9NQl9UWVBFX0lOVEVSNFYpKXsKKyAgICAgICAgICAgIGlmIChx
c2NhbGVfdGFibGVbbWJfeHldICE9IHFzY2FsZV90YWJsZVtzLT5jLm1iX2luZGV4Mnh5W2kgLSAx
XV0gJiYKKyAgICAgICAgICAgICAgICAocy0+bWJfdHlwZVttYl94eV0gJiBDQU5ESURBVEVfTUJf
VFlQRV9JTlRFUjRWKSkgewogICAgICAgICAgICAgICAgIHMtPm1iX3R5cGVbbWJfeHldfD0gQ0FO
RElEQVRFX01CX1RZUEVfSU5URVI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNywx
MyArNDE4LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgZHF1YW50X2NvZGVbNV09IHsxLDAsOSwyLDN9
OwogICogQHBhcmFtIGJsb2NrIHRoZSA4eDggYmxvY2sKICAqIEBwYXJhbSBuIGJsb2NrIGluZGV4
ICgwLTMgYXJlIGx1bWEsIDQtNSBhcmUgY2hyb21hKQogICovCi1zdGF0aWMgdm9pZCBoMjYzX2Vu
Y29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCitz
dGF0aWMgdm9pZCBoMjYzX2VuY29kZV9ibG9jayhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQx
Nl90IGJsb2NrW10sIGludCBuKQogewogICAgIGludCBsZXZlbCwgcnVuLCBsYXN0LCBpLCBqLCBs
YXN0X2luZGV4LCBsYXN0X25vbl96ZXJvLCBzaWduLCBzbGV2ZWwsIGNvZGU7CiAgICAgY29uc3Qg
UkxUYWJsZSAqcmw7CiAKICAgICBybCA9ICZmZl9oMjYzX3JsX2ludGVyOwotICAgIGlmIChzLT5t
Yl9pbnRyYSAmJiAhcy0+aDI2M19haWMpIHsKKyAgICBpZiAocy0+Yy5tYl9pbnRyYSAmJiAhcy0+
Yy5oMjYzX2FpYykgewogICAgICAgICAvKiBEQyBjb2VmICovCiAgICAgICAgIGxldmVsID0gYmxv
Y2tbMF07CiAgICAgICAgIC8qIDI1NSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQsIHNvIHdlIGNsYW1w
ICovCkBAIC00NDMsMTkgKzQ0NCwxOSBAQCBzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9ibG9jayhN
cGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCiAgICAgICAgIGkgPSAx
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGkgPSAwOwotICAgICAgICBpZiAocy0+aDI2M19haWMg
JiYgcy0+bWJfaW50cmEpCisgICAgICAgIGlmIChzLT5jLmgyNjNfYWljICYmIHMtPmMubWJfaW50
cmEpCiAgICAgICAgICAgICBybCA9ICZmZl9ybF9pbnRyYV9haWM7CiAKLSAgICAgICAgaWYocy0+
YWx0X2ludGVyX3ZsYyAmJiAhcy0+bWJfaW50cmEpeworICAgICAgICBpZihzLT5jLmFsdF9pbnRl
cl92bGMgJiYgIXMtPmMubWJfaW50cmEpewogICAgICAgICAgICAgaW50IGFpY192bGNfYml0cz0w
OwogICAgICAgICAgICAgaW50IGludGVyX3ZsY19iaXRzPTA7CiAgICAgICAgICAgICBpbnQgd3Jv
bmdfcG9zPS0xOwogICAgICAgICAgICAgaW50IGFpY19jb2RlOwogCi0gICAgICAgICAgICBsYXN0
X2luZGV4ID0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKKyAgICAgICAgICAgIGxhc3RfaW5kZXgg
PSBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbbl07CiAgICAgICAgICAgICBsYXN0X25vbl96ZXJvID0g
aSAtIDE7CiAgICAgICAgICAgICBmb3IgKDsgaSA8PSBsYXN0X2luZGV4OyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBqID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAg
ICAgICAgICAgaiA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAgICAg
ICAgICAgICAgbGV2ZWwgPSBibG9ja1tqXTsKICAgICAgICAgICAgICAgICBpZiAobGV2ZWwpIHsK
ICAgICAgICAgICAgICAgICAgICAgcnVuID0gaSAtIGxhc3Rfbm9uX3plcm8gLSAxOwpAQCAtNDg2
LDEwICs0ODcsMTAgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRl
eHQgKiBzLCBpbnQxNl90ICogYmxvY2ssIGludCBuKQogICAgIH0KIAogICAgIC8qIEFDIGNvZWZz
ICovCi0gICAgbGFzdF9pbmRleCA9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgbGFzdF9p
bmRleCA9IHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXTsKICAgICBsYXN0X25vbl96ZXJvID0gaSAt
IDE7CiAgICAgZm9yICg7IGkgPD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGogPSBzLT5p
bnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgaiA9IHMtPmMuaW50cmFfc2Nh
bnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAgICAgIGxldmVsID0gYmxvY2tbal07CiAgICAgICAg
IGlmIChsZXZlbCkgewogICAgICAgICAgICAgcnVuID0gaSAtIGxhc3Rfbm9uX3plcm8gLSAxOwpA
QCAtNTAzLDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX2Jsb2NrKE1wZWdFbmND
b250ZXh0ICogcywgaW50MTZfdCAqIGJsb2NrLCBpbnQgbikKICAgICAgICAgICAgIGNvZGUgPSBn
ZXRfcmxfaW5kZXgocmwsIGxhc3QsIHJ1biwgbGV2ZWwpOwogICAgICAgICAgICAgcHV0X2JpdHMo
JnMtPnBiLCBybC0+dGFibGVfdmxjW2NvZGVdWzFdLCBybC0+dGFibGVfdmxjW2NvZGVdWzBdKTsK
ICAgICAgICAgICAgIGlmIChjb2RlID09IHJsLT5uKSB7Ci0gICAgICAgICAgICAgIGlmKCFDT05G
SUdfRkxWX0VOQ09ERVIgfHwgcy0+aDI2M19mbHYgPD0gMSl7CisgICAgICAgICAgICAgIGlmKCFD
T05GSUdfRkxWX0VOQ09ERVIgfHwgcy0+Yy5oMjYzX2ZsdiA8PSAxKXsKICAgICAgICAgICAgICAg
ICBwdXRfYml0cygmcy0+cGIsIDEsIGxhc3QpOwogICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZz
LT5wYiwgNiwgcnVuKTsKIApAQCAtNTY1LDIyICs1NjYsMjIgQEAgc3RhdGljIHZvaWQgaDI2M3Bf
ZW5jb2RlX3Vtb3Rpb24oUHV0Qml0Q29udGV4dCAqcGIsIGludCB2YWwpCiAgICAgfQogfQogCi1z
dGF0aWMgaW50IGgyNjNfcHJlZF9kYyhNcGVnRW5jQ29udGV4dCAqIHMsIGludCBuLCBpbnQxNl90
ICoqZGNfdmFsX3B0cikKK3N0YXRpYyBpbnQgaDI2M19wcmVkX2RjKE1QVkVuY0NvbnRleHQgKmNv
bnN0IHMsIGludCBuLCBpbnQxNl90ICoqZGNfdmFsX3B0cikKIHsKICAgICBpbnQgeCwgeSwgd3Jh
cCwgYSwgYywgcHJlZF9kYzsKICAgICBpbnQxNl90ICpkY192YWw7CiAKICAgICAvKiBmaW5kIHBy
ZWRpY3Rpb24gKi8KICAgICBpZiAobiA8IDQpIHsKLSAgICAgICAgeCA9IDIgKiBzLT5tYl94ICsg
KG4gJiAxKTsKLSAgICAgICAgeSA9IDIgKiBzLT5tYl95ICsgKChuICYgMikgPj4gMSk7Ci0gICAg
ICAgIHdyYXAgPSBzLT5iOF9zdHJpZGU7Ci0gICAgICAgIGRjX3ZhbCA9IHMtPmRjX3ZhbFswXTsK
KyAgICAgICAgeCA9IDIgKiBzLT5jLm1iX3ggKyAobiAmIDEpOworICAgICAgICB5ID0gMiAqIHMt
PmMubWJfeSArICgobiAmIDIpID4+IDEpOworICAgICAgICB3cmFwID0gcy0+Yy5iOF9zdHJpZGU7
CisgICAgICAgIGRjX3ZhbCA9IHMtPmMuZGNfdmFsWzBdOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHggPSBzLT5tYl94OwotICAgICAgICB5ID0gcy0+bWJfeTsKLSAgICAgICAgd3JhcCA9IHMtPm1i
X3N0cmlkZTsKLSAgICAgICAgZGNfdmFsID0gcy0+ZGNfdmFsW24gLSA0ICsgMV07CisgICAgICAg
IHggPSBzLT5jLm1iX3g7CisgICAgICAgIHkgPSBzLT5jLm1iX3k7CisgICAgICAgIHdyYXAgPSBz
LT5jLm1iX3N0cmlkZTsKKyAgICAgICAgZGNfdmFsID0gcy0+Yy5kY192YWxbbiAtIDQgKyAxXTsK
ICAgICB9CiAgICAgLyogQiBDCiAgICAgICogQSBYCkBAIC01ODksOSArNTkwLDkgQEAgc3RhdGlj
IGludCBoMjYzX3ByZWRfZGMoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbiwgaW50MTZfdCAqKmRj
X3ZhbF9wdHIpCiAgICAgYyA9IGRjX3ZhbFsoeCkgKyAoeSAtIDEpICogd3JhcF07CiAKICAgICAv
KiBObyBwcmVkaWN0aW9uIG91dHNpZGUgR09CIGJvdW5kYXJ5ICovCi0gICAgaWYgKHMtPmZpcnN0
X3NsaWNlX2xpbmUgJiYgbiAhPSAzKSB7CisgICAgaWYgKHMtPmMuZmlyc3Rfc2xpY2VfbGluZSAm
JiBuICE9IDMpIHsKICAgICAgICAgaWYgKG4gIT0gMikgYyA9IDEwMjQ7Ci0gICAgICAgIGlmIChu
ICE9IDEgJiYgcy0+bWJfeCA9PSBzLT5yZXN5bmNfbWJfeCkgYSA9IDEwMjQ7CisgICAgICAgIGlm
IChuICE9IDEgJiYgcy0+Yy5tYl94ID09IHMtPmMucmVzeW5jX21iX3gpIGEgPSAxMDI0OwogICAg
IH0KICAgICAvKiBqdXN0IERDIHByZWRpY3Rpb24gKi8KICAgICBpZiAoYSAhPSAxMDI0ICYmIGMg
IT0gMTAyNCkKQEAgLTYwNiw3ICs2MDcsNyBAQCBzdGF0aWMgaW50IGgyNjNfcHJlZF9kYyhNcGVn
RW5jQ29udGV4dCAqIHMsIGludCBuLCBpbnQxNl90ICoqZGNfdmFsX3B0cikKICAgICByZXR1cm4g
cHJlZF9kYzsKIH0KIAotc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQg
KmNvbnN0IHMsCitzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9tYihNUFZFbmNDb250ZXh0ICpjb25z
dCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBibG9ja1tdWzY0XSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb3Rpb25feCwgaW50IG1vdGlvbl95KQogewpA
QCAtNjE0LDEzICs2MTUsMTMgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0Nv
bnRleHQgKmNvbnN0IHMsCiAgICAgaW50MTZfdCBwcmVkX2RjOwogICAgIGludDE2X3QgcmVjX2lu
dHJhZGNbNl07CiAgICAgaW50MTZfdCAqZGNfcHRyWzZdOwotICAgIGNvbnN0IGludCBpbnRlcmxl
YXZlZF9zdGF0cyA9IHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzE7CisgICAg
Y29uc3QgaW50IGludGVybGVhdmVkX3N0YXRzID0gcy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RF
Q19GTEFHX1BBU1MxOwogCi0gICAgaWYgKCFzLT5tYl9pbnRyYSkgeworICAgIGlmICghcy0+Yy5t
Yl9pbnRyYSkgewogICAgICAgICAvKiBjb21wdXRlIGNicCAqLwogICAgICAgICBjYnA9IGdldF9w
X2NicChzLCBibG9jaywgbW90aW9uX3gsIG1vdGlvbl95KTsKIAotICAgICAgICBpZiAoKGNicCB8
IG1vdGlvbl94IHwgbW90aW9uX3kgfCBzLT5kcXVhbnQgfCAocy0+bXZfdHlwZSAtIE1WX1RZUEVf
MTZYMTYpKSA9PSAwKSB7CisgICAgICAgIGlmICgoY2JwIHwgbW90aW9uX3ggfCBtb3Rpb25feSB8
IHMtPmRxdWFudCB8IChzLT5jLm12X3R5cGUgLSBNVl9UWVBFXzE2WDE2KSkgPT0gMCkgewogICAg
ICAgICAgICAgLyogc2tpcCBtYWNyb2Jsb2NrICovCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+
cGIsIDEsIDEpOwogICAgICAgICAgICAgaWYoaW50ZXJsZWF2ZWRfc3RhdHMpewpAQCAtNjM0LDEw
ICs2MzUsMTAgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNv
bnN0IHMsCiAKICAgICAgICAgY2JwYyA9IGNicCAmIDM7CiAgICAgICAgIGNicHkgPSBjYnAgPj4g
MjsKLSAgICAgICAgaWYocy0+YWx0X2ludGVyX3ZsYz09MCB8fCBjYnBjIT0zKQorICAgICAgICBp
ZihzLT5jLmFsdF9pbnRlcl92bGM9PTAgfHwgY2JwYyE9MykKICAgICAgICAgICAgIGNicHkgXj0g
MHhGOwogICAgICAgICBpZihzLT5kcXVhbnQpIGNicGMrPSA4OwotICAgICAgICBpZihzLT5tdl90
eXBlPT1NVl9UWVBFXzE2WDE2KXsKKyAgICAgICAgaWYocy0+Yy5tdl90eXBlPT1NVl9UWVBFXzE2
WDE2KXsKICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKICAgICAgICAgICAgICAgICAgICAg
ZmZfaDI2M19pbnRlcl9NQ0JQQ19iaXRzW2NicGNdLAogICAgICAgICAgICAgICAgICAgICBmZl9o
MjYzX2ludGVyX01DQlBDX2NvZGVbY2JwY10pOwpAQCAtNjUxLDkgKzY1Miw5IEBAIHN0YXRpYyB2
b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvKiBtb3Rpb24gdmVjdG9yczogMTZ4MTYgbW9kZSAqLwotICAgICAg
ICAgICAgZmZfaDI2M19wcmVkX21vdGlvbihzLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKKyAg
ICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIDAsIDAsICZwcmVkX3gsICZwcmVk
X3kpOwogCi0gICAgICAgICAgICBpZiAoIXMtPnVtdnBsdXMpIHsKKyAgICAgICAgICAgIGlmICgh
cy0+Yy51bXZwbHVzKSB7CiAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3Zl
Y3RvcihzLCBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvbl95IC0gcHJlZF95LCAxKTsKICAgICAgICAgICAgIH0K
QEAgLTY3OCwxMSArNjc5LDExIEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmND
b250ZXh0ICpjb25zdCBzLAogCiAgICAgICAgICAgICBmb3IoaT0wOyBpPDQ7IGkrKyl7CiAgICAg
ICAgICAgICAgICAgLyogbW90aW9uIHZlY3RvcnM6IDh4OCBtb2RlKi8KLSAgICAgICAgICAgICAg
ICBmZl9oMjYzX3ByZWRfbW90aW9uKHMsIGksIDAsICZwcmVkX3gsICZwcmVkX3kpOworICAgICAg
ICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIGksIDAsICZwcmVkX3gsICZwcmVk
X3kpOwogCi0gICAgICAgICAgICAgICAgbW90aW9uX3ggPSBzLT5jdXJfcGljLm1vdGlvbl92YWxb
MF1bcy0+YmxvY2tfaW5kZXhbaV1dWzBdOwotICAgICAgICAgICAgICAgIG1vdGlvbl95ID0gcy0+
Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmJsb2NrX2luZGV4W2ldXVsxXTsKLSAgICAgICAgICAg
ICAgICBpZiAoIXMtPnVtdnBsdXMpIHsKKyAgICAgICAgICAgICAgICBtb3Rpb25feCA9IHMtPmMu
Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbaV1dWzBdOworICAgICAgICAg
ICAgICAgIG1vdGlvbl95ID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5ibG9ja19p
bmRleFtpXV1bMV07CisgICAgICAgICAgICAgICAgaWYgKCFzLT5jLnVtdnBsdXMpIHsKICAgICAg
ICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3ZlY3RvcihzLCBtb3Rpb25feCAt
IHByZWRfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3Rpb25feSAtIHByZWRfeSwgMSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzAwLDE3
ICs3MDEsMTQgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNv
bnN0IHMsCiAgICAgICAgICAgICBzLT5tdl9iaXRzKz0gZ2V0X2JpdHNfZGlmZihzKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF2X2Fzc2VydDIocy0+bWJfaW50cmEpOworICAg
ICAgICBhdl9hc3NlcnQyKHMtPmMubWJfaW50cmEpOwogCiAgICAgICAgIGNicCA9IDA7Ci0gICAg
ICAgIGlmIChzLT5oMjYzX2FpYykgeworICAgICAgICBpZiAocy0+Yy5oMjYzX2FpYykgewogICAg
ICAgICAgICAgLyogUHJlZGljdCBEQyAqLwogICAgICAgICAgICAgZm9yKGk9MDsgaTw2OyBpKysp
IHsKICAgICAgICAgICAgICAgICBpbnQxNl90IGxldmVsID0gYmxvY2tbaV1bMF07Ci0gICAgICAg
ICAgICAgICAgaW50IHNjYWxlOwotCi0gICAgICAgICAgICAgICAgaWYoaTw0KSBzY2FsZT0gcy0+
eV9kY19zY2FsZTsKLSAgICAgICAgICAgICAgICBlbHNlICAgIHNjYWxlPSBzLT5jX2RjX3NjYWxl
OworICAgICAgICAgICAgICAgIGludCBzY2FsZSA9IGkgPCA0ID8gcy0+Yy55X2RjX3NjYWxlIDog
cy0+Yy5jX2RjX3NjYWxlOwogCiAgICAgICAgICAgICAgICAgcHJlZF9kYyA9IGgyNjNfcHJlZF9k
YyhzLCBpLCAmZGNfcHRyW2ldKTsKICAgICAgICAgICAgICAgICBsZXZlbCAtPSBwcmVkX2RjOwpA
QCAtNzIwLDcgKzcxOCw3IEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmNDb250
ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
bGV2ZWwgPSAobGV2ZWwgLSAoc2NhbGU+PjEpKS9zY2FsZTsKIAotICAgICAgICAgICAgICAgIGlm
KCFzLT5tb2RpZmllZF9xdWFudCl7CisgICAgICAgICAgICAgICAgaWYgKCFzLT5jLm1vZGlmaWVk
X3F1YW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbCA8IC0xMjcpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbCA9IC0xMjc7CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGxldmVsID4gMTI3KQpAQCAtNzQzLDIwICs3NDEsMjAgQEAgc3RhdGljIHZvaWQgaDI2M19l
bmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgLyogVXBk
YXRlIEFDL0RDIHRhYmxlcyAqLwogICAgICAgICAgICAgICAgICpkY19wdHJbaV0gPSByZWNfaW50
cmFkY1tpXTsKICAgICAgICAgICAgICAgICAvKiBBSUMgY2FuIGNoYW5nZSBDQlAgKi8KLSAgICAg
ICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+IDAgfHwKLSAgICAgICAgICAg
ICAgICAgICAgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPT0gMCAmJiBsZXZlbCAhPTApKQorICAg
ICAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPiAwIHx8CisgICAgICAg
ICAgICAgICAgICAgIChzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPT0gMCAmJiBsZXZlbCAhPTAp
KQogICAgICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8PCAoNSAtIGkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgIGZvcihpPTA7IGk8NjsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgLyogY29tcHV0ZSBjYnAgKi8KLSAgICAgICAgICAgICAgICBpZiAocy0+Ymxv
Y2tfbGFzdF9pbmRleFtpXSA+PSAxKQorICAgICAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xh
c3RfaW5kZXhbaV0gPj0gMSkKICAgICAgICAgICAgICAgICAgICAgY2JwIHw9IDEgPDwgKDUgLSBp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGNicGMgPSBjYnAgJiAzOwot
ICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAg
IGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewogICAgICAgICAgICAg
aWYocy0+ZHF1YW50KSBjYnBjKz00OwogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLAogICAg
ICAgICAgICAgICAgIGZmX2gyNjNfaW50cmFfTUNCUENfYml0c1tjYnBjXSwKQEAgLTc2OCw3ICs3
NjYsNyBAQCBzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3Qg
cywKICAgICAgICAgICAgICAgICBmZl9oMjYzX2ludGVyX01DQlBDX2JpdHNbY2JwYyArIDRdLAog
ICAgICAgICAgICAgICAgIGZmX2gyNjNfaW50ZXJfTUNCUENfY29kZVtjYnBjICsgNF0pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChzLT5oMjYzX2FpYykgeworICAgICAgICBpZiAocy0+Yy5oMjYz
X2FpYykgewogICAgICAgICAgICAgLyogWFhYOiBjdXJyZW50bHksIHdlIGRvIG5vdCB0cnkgdG8g
dXNlIGFjIHByZWRpY3Rpb24gKi8KICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7
ICAgICAvKiBubyBBQyBwcmVkaWN0aW9uICovCiAgICAgICAgIH0KQEAgLTc4NywxNCArNzg1LDEy
IEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog
ICAgICAgICBoMjYzX2VuY29kZV9ibG9jayhzLCBibG9ja1tpXSwgaSk7CiAKICAgICAgICAgLyog
VXBkYXRlIElOVFJBREMgZm9yIGRlY29kaW5nICovCi0gICAgICAgIGlmIChzLT5oMjYzX2FpYyAm
JiBzLT5tYl9pbnRyYSkgeworICAgICAgICBpZiAocy0+Yy5oMjYzX2FpYyAmJiBzLT5jLm1iX2lu
dHJhKQogICAgICAgICAgICAgYmxvY2tbaV1bMF0gPSByZWNfaW50cmFkY1tpXTsKLQotICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYoaW50ZXJsZWF2ZWRfc3RhdHMpewotICAgICAgICBpZiAoIXMt
Pm1iX2ludHJhKSB7CisgICAgICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAgICAg
cy0+cF90ZXhfYml0cys9IGdldF9iaXRzX2RpZmYocyk7CiAgICAgICAgIH1lbHNlewogICAgICAg
ICAgICAgcy0+aV90ZXhfYml0cys9IGdldF9iaXRzX2RpZmYocyk7CkBAIC04MDMsNTQgKzc5OSw1
NCBAQCBzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywK
ICAgICB9CiB9CiAKLXZvaWQgZmZfaDI2M191cGRhdGVfbWIoTXBlZ0VuY0NvbnRleHQgKnMpCit2
b2lkIGZmX2gyNjNfdXBkYXRlX21iKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0gICAgY29u
c3QgaW50IG1iX3h5ID0gcy0+bWJfeSAqIHMtPm1iX3N0cmlkZSArIHMtPm1iX3g7CisgICAgY29u
c3QgaW50IG1iX3h5ID0gcy0+Yy5tYl95ICogcy0+Yy5tYl9zdHJpZGUgKyBzLT5jLm1iX3g7CiAK
LSAgICBpZiAocy0+Y3VyX3BpYy5tYnNraXBfdGFibGUpCi0gICAgICAgIHMtPmN1cl9waWMubWJz
a2lwX3RhYmxlW21iX3h5XSA9IHMtPm1iX3NraXBwZWQ7CisgICAgaWYgKHMtPmMuY3VyX3BpYy5t
YnNraXBfdGFibGUpCisgICAgICAgIHMtPmMuY3VyX3BpYy5tYnNraXBfdGFibGVbbWJfeHldID0g
cy0+Yy5tYl9za2lwcGVkOwogCi0gICAgaWYgKHMtPm12X3R5cGUgPT0gTVZfVFlQRV84WDgpCi0g
ICAgICAgIHMtPmN1cl9waWMubWJfdHlwZVttYl94eV0gPSBNQl9UWVBFX0ZPUldBUkRfTVYgfCBN
Ql9UWVBFXzh4ODsKLSAgICBlbHNlIGlmKHMtPm1iX2ludHJhKQotICAgICAgICBzLT5jdXJfcGlj
Lm1iX3R5cGVbbWJfeHldID0gTUJfVFlQRV9JTlRSQTsKKyAgICBpZiAocy0+Yy5tdl90eXBlID09
IE1WX1RZUEVfOFg4KQorICAgICAgICBzLT5jLmN1cl9waWMubWJfdHlwZVttYl94eV0gPSBNQl9U
WVBFX0ZPUldBUkRfTVYgfCBNQl9UWVBFXzh4ODsKKyAgICBlbHNlIGlmKHMtPmMubWJfaW50cmEp
CisgICAgICAgIHMtPmMuY3VyX3BpYy5tYl90eXBlW21iX3h5XSA9IE1CX1RZUEVfSU5UUkE7CiAg
ICAgZWxzZQotICAgICAgICBzLT5jdXJfcGljLm1iX3R5cGVbbWJfeHldID0gTUJfVFlQRV9GT1JX
QVJEX01WIHwgTUJfVFlQRV8xNngxNjsKKyAgICAgICAgcy0+Yy5jdXJfcGljLm1iX3R5cGVbbWJf
eHldID0gTUJfVFlQRV9GT1JXQVJEX01WIHwgTUJfVFlQRV8xNngxNjsKIAotICAgIGZmX2gyNjNf
dXBkYXRlX21vdGlvbl92YWwocyk7CisgICAgZmZfaDI2M191cGRhdGVfbW90aW9uX3ZhbCgmcy0+
Yyk7CiB9CiAKIGF2X2NvbGQgdm9pZCBmZl9oMjYzX2VuY29kZV9pbml0KE1QVk1haW5FbmNDb250
ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7Cisg
ICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogCi0gICAgcy0+bWUubXZfcGVuYWx0
eSA9IGZmX2gyNjNfZ2V0X212X3BlbmFsdHkoKTsgLy8gRklYTUUgZXhhY3QgdGFibGUgZm9yIE1T
TVBFRzQgJiBILjI2MysKKyAgICBzLT5jLm1lLm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9w
ZW5hbHR5KCk7IC8vIEZJWE1FIGV4YWN0IHRhYmxlIGZvciBNU01QRUc0ICYgSC4yNjMrCiAKLSAg
ICBmZl9oMjYzZHNwX2luaXQoJnMtPmgyNjNkc3ApOworICAgIGZmX2gyNjNkc3BfaW5pdCgmcy0+
Yy5oMjYzZHNwKTsKIAotICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkK
KyAgICBpZiAocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgcy0+aW50cmFfYWNfdmxjX2xlbmd0aCAgICAgPXMtPmludGVyX2FjX3ZsY19s
ZW5ndGggICAgID0gdW5pX2gyNjNfaW50ZXJfcmxfbGVuOwogICAgIHMtPmludHJhX2FjX3ZsY19s
YXN0X2xlbmd0aD1zLT5pbnRlcl9hY192bGNfbGFzdF9sZW5ndGg9IHVuaV9oMjYzX2ludGVyX3Js
X2xlbiArIDEyOCo2NDsKLSAgICBpZihzLT5oMjYzX2FpYyl7CisgICAgaWYgKHMtPmMuaDI2M19h
aWMpIHsKICAgICAgICAgcy0+aW50cmFfYWNfdmxjX2xlbmd0aCAgICAgPSB1bmlfaDI2M19pbnRy
YV9haWNfcmxfbGVuOwogICAgICAgICBzLT5pbnRyYV9hY192bGNfbGFzdF9sZW5ndGg9IHVuaV9o
MjYzX2ludHJhX2FpY19ybF9sZW4gKyAxMjgqNjQ7CiAKLSAgICAgICAgcy0+eV9kY19zY2FsZV90
YWJsZSA9Ci0gICAgICAgIHMtPmNfZGNfc2NhbGVfdGFibGUgPSBmZl9haWNfZGNfc2NhbGVfdGFi
bGU7CisgICAgICAgIHMtPmMueV9kY19zY2FsZV90YWJsZSA9CisgICAgICAgIHMtPmMuY19kY19z
Y2FsZV90YWJsZSA9IGZmX2FpY19kY19zY2FsZV90YWJsZTsKICAgICB9CiAgICAgcy0+YWNfZXNj
X2xlbmd0aD0gNysxKzYrODsKIAotICAgIGlmIChzLT5tb2RpZmllZF9xdWFudCkKLSAgICAgICAg
cy0+Y2hyb21hX3FzY2FsZV90YWJsZSA9IGZmX2gyNjNfY2hyb21hX3FzY2FsZV90YWJsZTsKKyAg
ICBpZiAocy0+Yy5tb2RpZmllZF9xdWFudCkKKyAgICAgICAgcy0+Yy5jaHJvbWFfcXNjYWxlX3Rh
YmxlID0gZmZfaDI2M19jaHJvbWFfcXNjYWxlX3RhYmxlOwogCiAgICAgLy8gdXNlIGZjb2RlcyA+
MSBvbmx5IGZvciBNUEVHLTQgJiBILjI2MyAmIEguMjYzKyBGSVhNRQotICAgIHN3aXRjaChzLT5j
b2RlY19pZCl7CisgICAgc3dpdGNoKHMtPmMuY29kZWNfaWQpewogICAgIGNhc2UgQVZfQ09ERUNf
SURfSDI2M1A6Ci0gICAgICAgIGlmKHMtPnVtdnBsdXMpCisgICAgICAgIGlmIChzLT5jLnVtdnBs
dXMpCiAgICAgICAgICAgICBtLT5mY29kZV90YWIgPSB1bXZfZmNvZGVfdGFiICsgTUFYX01WOwot
ICAgICAgICBpZihzLT5tb2RpZmllZF9xdWFudCl7CisgICAgICAgIGlmIChzLT5jLm1vZGlmaWVk
X3F1YW50KSB7CiAgICAgICAgICAgICBzLT5taW5fcWNvZWZmPSAtMjA0NzsKICAgICAgICAgICAg
IHMtPm1heF9xY29lZmY9ICAyMDQ3OwogICAgICAgICB9ZWxzZXsKQEAgLTg2MSw3ICs4NTcsNyBA
QCBhdl9jb2xkIHZvaWQgZmZfaDI2M19lbmNvZGVfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqY29u
c3QgbSkKICAgICAgICAgLy8gTm90ZSBmb3IgTVBFRy00ICYgSC4yNjMgdGhlIGRjLXNjYWxlIHRh
YmxlIHdpbGwgYmUgc2V0IHBlciBmcmFtZSBhcyBuZWVkZWQgbGF0ZXIKICAgICBjYXNlIEFWX0NP
REVDX0lEX0ZMVjE6CiAgICAgICAgIG0tPmVuY29kZV9waWN0dXJlX2hlYWRlciA9IGZmX2Zsdl9l
bmNvZGVfcGljdHVyZV9oZWFkZXI7Ci0gICAgICAgIGlmIChzLT5oMjYzX2ZsdiA+IDEpIHsKKyAg
ICAgICAgaWYgKHMtPmMuaDI2M19mbHYgPiAxKSB7CiAgICAgICAgICAgICBzLT5taW5fcWNvZWZm
PSAtMTAyMzsKICAgICAgICAgICAgIHMtPm1heF9xY29lZmY9ICAxMDIzOwogICAgICAgICB9IGVs
c2UgewpAQCAtODgwLDE0ICs4NzYsMTQgQEAgYXZfY29sZCB2b2lkIGZmX2gyNjNfZW5jb2RlX2lu
aXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIHMtPmVuY29kZV9tYiA9IGgy
NjNfZW5jb2RlX21iOwogfQogCi12b2lkIGZmX2gyNjNfZW5jb2RlX21iYShNcGVnRW5jQ29udGV4
dCAqcykKK3ZvaWQgZmZfaDI2M19lbmNvZGVfbWJhKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7
CiAgICAgaW50IGksIG1iX3BvczsKIAogICAgIGZvcihpPTA7IGk8NjsgaSsrKXsKLSAgICAgICAg
aWYocy0+bWJfbnVtLTEgPD0gZmZfbWJhX21heFtpXSkgYnJlYWs7CisgICAgICAgIGlmKHMtPmMu
bWJfbnVtLTEgPD0gZmZfbWJhX21heFtpXSkgYnJlYWs7CiAgICAgfQotICAgIG1iX3Bvcz0gcy0+
bWJfeCArIHMtPm1iX3dpZHRoKnMtPm1iX3k7CisgICAgbWJfcG9zPSBzLT5jLm1iX3ggKyBzLT5j
Lm1iX3dpZHRoKnMtPmMubWJfeTsKICAgICBwdXRfYml0cygmcy0+cGIsIGZmX21iYV9sZW5ndGhb
aV0sIG1iX3Bvcyk7CiB9CiAKQEAgLTg5NSw3ICs4OTEsNyBAQCB2b2lkIGZmX2gyNjNfZW5jb2Rl
X21iYShNcGVnRW5jQ29udGV4dCAqcykKICNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFS
QU0gfCBBVl9PUFRfRkxBR19FTkNPRElOR19QQVJBTQogc3RhdGljIGNvbnN0IEFWT3B0aW9uIGgy
NjNfb3B0aW9uc1tdID0gewogICAgIHsgIm9ibWMiLCAgICAgICAgICJ1c2Ugb3ZlcmxhcHBlZCBi
bG9jayBtb3Rpb24gY29tcGVuc2F0aW9uLiIsIE9GRlNFVChvYm1jKSwgQVZfT1BUX1RZUEVfQk9P
TCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBWRSB9LAotICAgIHsgIm1iX2luZm8iLCAgICAgICJlbWl0
IG1hY3JvYmxvY2sgaW5mbyBmb3IgUkZDIDIxOTAgcGFja2V0aXphdGlvbiwgdGhlIHBhcmFtZXRl
ciB2YWx1ZSBpcyB0aGUgbWF4aW11bSBwYXlsb2FkIHNpemUiLCBPRkZTRVQobWJfaW5mbyksIEFW
X09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gMCB9LCAwLCBJTlRfTUFYLCBWRSB9LAorICAgIHsgIm1i
X2luZm8iLCAgICAgICJlbWl0IG1hY3JvYmxvY2sgaW5mbyBmb3IgUkZDIDIxOTAgcGFja2V0aXph
dGlvbiwgdGhlIHBhcmFtZXRlciB2YWx1ZSBpcyB0aGUgbWF4aW11bSBwYXlsb2FkIHNpemUiLCBG
Rl9NUFZfT0ZGU0VUKG1iX2luZm8pLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IDAgfSwgMCwg
SU5UX01BWCwgVkUgfSwKICAgICBGRl9NUFZfQ09NTU9OX09QVFMKICAgICBGRl9NUFZfQ09NTU9O
X01PVElPTl9FU1RfT1BUUwogICAgIHsgTlVMTCB9LApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9t
ZV9jbXAuYyBiL2xpYmF2Y29kZWMvbWVfY21wLmMKaW5kZXggZjNlMmYyNDgyZS4uMDlhODMwZDE1
ZSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tZV9jbXAuYworKysgYi9saWJhdmNvZGVjL21lX2Nt
cC5jCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IHVpbnQzMl90IGZmX3NxdWFyZV90YWJbNTEyXSA9
IHsKICAgICA1NzYwMCwgNTgwODEsIDU4NTY0LCA1OTA0OSwgNTk1MzYsIDYwMDI1LCA2MDUxNiwg
NjEwMDksIDYxNTA0LCA2MjAwMSwgNjI1MDAsIDYzMDAxLCA2MzUwNCwgNjQwMDksIDY0NTE2LCA2
NTAyNSwKIH07CiAKLXN0YXRpYyBpbnQgc3NlNF9jKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1
aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGludCBzc2U0X2MoTVBW
RW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw
aXgyLAogICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAg
aW50IHMgPSAwLCBpOwpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW50IHNzZTRfYyhNcGVnRW5j
Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg
ICByZXR1cm4gczsKIH0KIAotc3RhdGljIGludCBzc2U4X2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNv
bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNzZThf
YyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4
X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsK
ICAgICBpbnQgcyA9IDAsIGk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGludCBzc2U4X2Mo
TXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBp
eDIsCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBpbnQgc3NlMTZfYyhNcGVnRW5jQ29udGV4
dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBp
bnQgc3NlMTZfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv
bnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBp
bnQgc3VtX2Fic19kY3RlbGVtX2MoY29uc3QgaW50MTZfdCAqYmxvY2spCiAjZGVmaW5lIGF2ZzIo
YSwgYikgKCgoYSkgKyAoYikgKyAxKSA+PiAxKQogI2RlZmluZSBhdmc0KGEsIGIsIGMsIGQpICgo
KGEpICsgKGIpICsgKGMpICsgKGQpICsgMikgPj4gMikKIAotc3RhdGljIGlubGluZSBpbnQgcGl4
X2FiczE2X2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVp
bnQ4X3QgKnBpeDIsCitzdGF0aWMgaW5saW5lIGludCBwaXhfYWJzMTZfYyhNUFZFbmNDb250ZXh0
ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAg
ICBpbnQgcyA9IDAsIGk7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcGl4
X2FiczE2X2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVp
bnQKICAgICByZXR1cm4gczsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcGl4X21lZGlhbl9hYnMx
Nl9jKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90
ICpwaXgyLAorc3RhdGljIGlubGluZSBpbnQgcGl4X21lZGlhbl9hYnMxNl9jKE1QVkVuY0NvbnRl
eHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAg
ICAgaW50IHMgPSAwLCBpLCBqOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBpbmxpbmUgaW50
IHBpeF9tZWRpYW5fYWJzMTZfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4
MSwgY29uCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBpbnQgcGl4X2FiczE2X3gyX2MoTXBl
Z0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs
CitzdGF0aWMgaW50IHBpeF9hYnMxNl94Ml9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAt
MjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgcGl4X2FiczE2X3gyX2MoTXBlZ0VuY0NvbnRleHQg
KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gczsKIH0K
IAotc3RhdGljIGludCBwaXhfYWJzMTZfeTJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu
dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbnQgcGl4X2FiczE2X3ky
X2MoTVBWRW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50
OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBp
bnQgaCkKIHsKICAgICBpbnQgcyA9IDAsIGk7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIGlu
dCBwaXhfYWJzMTZfeTJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg
Y29uc3QgdWludDhfdAogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50IHBpeF9hYnMxNl94
eTJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhf
dCAqcGl4MiwKK3N0YXRpYyBpbnQgcGl4X2FiczE2X3h5Ml9jKE1QVkVuY0NvbnRleHQgKnVudXNl
ZCwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBzID0g
MCwgaTsKQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgaW50IHBpeF9hYnMxNl94eTJfYyhNcGVn
RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdAogICAgIHJl
dHVybiBzOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBwaXhfYWJzOF9jKE1wZWdFbmNDb250ZXh0
ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGlu
bGluZSBpbnQgcGl4X2FiczhfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBzID0gMCwgaTsKQEAgLTMyNCw3
ICszMjQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwaXhfYWJzOF9jKE1wZWdFbmNDb250ZXh0ICp2
LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OAogICAgIHJldHVybiBzOwogfQogCi1z
dGF0aWMgaW5saW5lIGludCBwaXhfbWVkaWFuX2FiczhfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29u
c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbmxpbmUgaW50
IHBpeF9tZWRpYW5fYWJzOF9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAq
cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpLCBqOwpAQCAtMzU1
LDcgKzM1NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBpeF9tZWRpYW5fYWJzOF9jKE1wZWdFbmND
b250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zCiAgICAgcmV0dXJuIHM7CiB9CiAK
LXN0YXRpYyBpbnQgcGl4X2FiczhfeDJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhf
dCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbnQgcGl4X2FiczhfeDJfYyhN
UFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgp
CiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyBpbnQgcGl4
X2FiczhfeDJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg
dWludDhfdCAqCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBpbnQgcGl4X2FiczhfeTJfYyhN
cGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4
MiwKK3N0YXRpYyBpbnQgcGl4X2FiczhfeTJfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0
IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAt
Mzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyBpbnQgcGl4X2FiczhfeTJfYyhNcGVnRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqCiAgICAgcmV0dXJuIHM7CiB9
CiAKLXN0YXRpYyBpbnQgcGl4X2FiczhfeHkyX2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp
bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHBpeF9hYnM4X3h5
Ml9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu
dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyBp
bnQgcGl4X2FiczhfeHkyX2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEs
IGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gczsKIH0KIAotc3RhdGljIGludCBuc3NlMTZfYyhN
cGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAor
c3RhdGljIGludCBuc3NlMTZfYyhNUFZFbmNDb250ZXh0ICpjb25zdCBjLCBjb25zdCB1aW50OF90
ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBz
dHJpZGUsIGludCBoKQogewogICAgIGludCBzY29yZTEgPSAwLCBzY29yZTIgPSAwLCB4LCB5OwpA
QCAtNDM5LDEyICs0MzksMTIgQEAgc3RhdGljIGludCBuc3NlMTZfYyhNcGVnRW5jQ29udGV4dCAq
YywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgIH0KIAogICAgIGlm
IChjKQotICAgICAgICByZXR1cm4gc2NvcmUxICsgRkZBQlMoc2NvcmUyKSAqIGMtPmF2Y3R4LT5u
c3NlX3dlaWdodDsKKyAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiBjLT5j
LmF2Y3R4LT5uc3NlX3dlaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBzY29yZTEgKyBG
RkFCUyhzY29yZTIpICogODsKIH0KIAotc3RhdGljIGludCBuc3NlOF9jKE1wZWdFbmNDb250ZXh0
ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCitzdGF0aWMgaW50IG5z
c2U4X2MoTVBWRW5jQ29udGV4dCAqY29uc3QgYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVp
bnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQog
ewogICAgIGludCBzY29yZTEgPSAwLCBzY29yZTIgPSAwLCB4LCB5OwpAQCAtNDY0LDEyICs0NjQs
MTIgQEAgc3RhdGljIGludCBuc3NlOF9jKE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90
ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgfQogCiAgICAgaWYgKGMpCi0gICAgICAgIHJl
dHVybiBzY29yZTEgKyBGRkFCUyhzY29yZTIpICogYy0+YXZjdHgtPm5zc2Vfd2VpZ2h0OworICAg
ICAgICByZXR1cm4gc2NvcmUxICsgRkZBQlMoc2NvcmUyKSAqIGMtPmMuYXZjdHgtPm5zc2Vfd2Vp
Z2h0OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiA4
OwogfQogCi1zdGF0aWMgaW50IHplcm9fY21wKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50
OF90ICphLCBjb25zdCB1aW50OF90ICpiLAorc3RhdGljIGludCB6ZXJvX2NtcChNUFZFbmNDb250
ZXh0ICpzLCBjb25zdCB1aW50OF90ICphLCBjb25zdCB1aW50OF90ICpiLAogICAgICAgICAgICAg
ICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICByZXR1cm4gMDsKQEAgLTU0
Niw3ICs1NDYsNyBAQCBhdl9jb2xkIGludCBmZl9zZXRfY21wKGNvbnN0IE1FQ21wQ29udGV4dCAq
YywgbWVfY21wX2Z1bmMgKmNtcCwgaW50IHR5cGUsIGludCBtcAogCiAjZGVmaW5lIEJVVFRFUkZM
WUEoeCwgeSkgKEZGQUJTKCh4KSArICh5KSkgKyBGRkFCUygoeCkgLSAoeSkpKQogCi1zdGF0aWMg
aW50IGhhZGFtYXJkOF9kaWZmOHg4X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3Qg
KmRzdCwKK3N0YXRpYyBpbnQgaGFkYW1hcmQ4X2RpZmY4eDhfYyhNUFZFbmNDb250ZXh0ICp1bnVz
ZWQsIGNvbnN0IHVpbnQ4X3QgKmRzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBp
LCB0ZW1wWzY0XSwgc3VtID0gMDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgaW50IGhhZGFt
YXJkOF9kaWZmOHg4X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRzdCwKICAg
ICByZXR1cm4gc3VtOwogfQogCi1zdGF0aWMgaW50IGhhZGFtYXJkOF9pbnRyYTh4OF9jKE1wZWdF
bmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMsCitzdGF0aWMgaW50IGhhZGFtYXJkOF9p
bnRyYTh4OF9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAqc3JjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkdW1teSwgcHRyZGlm
Zl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IGksIHRlbXBbNjRdLCBzdW0gPSAwOwpAQCAt
NjQ2LDcgKzY0Niw3IEBAIHN0YXRpYyBpbnQgaGFkYW1hcmQ4X2ludHJhOHg4X2MoTXBlZ0VuY0Nv
bnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYywKICAgICByZXR1cm4gc3VtOwogfQogCi1zdGF0
aWMgaW50IGRjdF9zYWQ4eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3Jj
MSwKK3N0YXRpYyBpbnQgZGN0X3NhZDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0
IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpz
cmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBMT0NBTF9BTElHTkVEXzE2KGlu
dDE2X3QsIHRlbXAsIFs2NF0pOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHN0YXRpYyBpbnQgZGN0X3Nh
ZDh4OF9jKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLAogICAgICAgICBE
U1QoNywgKGE0ID4+IDIpIC0gYTcpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQog
Ci1zdGF0aWMgaW50IGRjdDI2NF9zYWQ4eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWlu
dDhfdCAqc3JjMSwKK3N0YXRpYyBpbnQgZGN0MjY0X3NhZDh4OF9jKE1QVkVuY0NvbnRleHQgKmNv
bnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpbnQx
Nl90IGRjdFs4XVs4XTsKQEAgLTcxMCw3ICs3MTAsNyBAQCBzdGF0aWMgaW50IGRjdDI2NF9zYWQ4
eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3JjMSwKIH0KICNlbmRpZgog
Ci1zdGF0aWMgaW50IGRjdF9tYXg4eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhf
dCAqc3JjMSwKK3N0YXRpYyBpbnQgZGN0X21heDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMs
IGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBMT0NBTF9BTElHTkVE
XzE2KGludDE2X3QsIHRlbXAsIFs2NF0pOwpAQCAtNzI1LDIyICs3MjUsMjIgQEAgc3RhdGljIGlu
dCBkY3RfbWF4OHg4X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAg
ICAgcmV0dXJuIHN1bTsKIH0KIAotc3RhdGljIGludCBxdWFudF9wc25yOHg4X2MoTXBlZ0VuY0Nv
bnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCitzdGF0aWMgaW50IHF1YW50X3BzbnI4eDhf
YyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCB1aW50OF90ICpzcmMxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjMiwgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGgpCiB7CiAgICAgTE9DQUxfQUxJR05FRF8xNihpbnQxNl90LCB0ZW1wLCBbNjQgKiAyXSk7
CiAgICAgaW50MTZfdCAqY29uc3QgYmFrID0gdGVtcCArIDY0OwogICAgIGludCBzdW0gPSAwLCBp
OwogCi0gICAgcy0+bWJfaW50cmEgPSAwOworICAgIHMtPmMubWJfaW50cmEgPSAwOwogCiAgICAg
cy0+cGRzcC5kaWZmX3BpeGVsc191bmFsaWduZWQodGVtcCwgc3JjMSwgc3JjMiwgc3RyaWRlKTsK
IAogICAgIG1lbWNweShiYWssIHRlbXAsIDY0ICogc2l6ZW9mKGludDE2X3QpKTsKIAotICAgIHMt
PmJsb2NrX2xhc3RfaW5kZXhbMCAvKiBGSVhNRSAqL10gPQotICAgICAgICBzLT5kY3RfcXVhbnRp
emUocywgdGVtcCwgMCAvKiBGSVhNRSAqLywgcy0+cXNjYWxlLCAmaSk7Ci0gICAgcy0+ZGN0X3Vu
cXVhbnRpemVfaW50ZXIocywgdGVtcCwgMCwgcy0+cXNjYWxlKTsKKyAgICBzLT5jLmJsb2NrX2xh
c3RfaW5kZXhbMCAvKiBGSVhNRSAqL10gPQorICAgICAgICBzLT5kY3RfcXVhbnRpemUocywgdGVt
cCwgMCAvKiBGSVhNRSAqLywgcy0+Yy5xc2NhbGUsICZpKTsKKyAgICBzLT5jLmRjdF91bnF1YW50
aXplX2ludGVyKCZzLT5jLCB0ZW1wLCAwLCBzLT5jLnFzY2FsZSk7CiAgICAgZmZfc2ltcGxlX2lk
Y3RfaW50MTZfOGJpdCh0ZW1wKTsgLy8gRklYTUUKIAogICAgIGZvciAoaSA9IDA7IGkgPCA2NDsg
aSsrKQpAQCAtNzQ5LDEwICs3NDksMTAgQEAgc3RhdGljIGludCBxdWFudF9wc25yOHg4X2MoTXBl
Z0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgcmV0dXJuIHN1bTsKIH0K
IAotc3RhdGljIGludCByZDh4OF9jKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpz
cmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAorc3RhdGljIGludCByZDh4OF9jKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnNyYzIsCiAg
ICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7Ci0gICAgY29uc3Qg
dWludDhfdCAqc2NhbnRhYmxlID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAg
Y29uc3QgdWludDhfdCAqc2NhbnRhYmxlID0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRl
ZDsKICAgICBMT0NBTF9BTElHTkVEXzE2KGludDE2X3QsIHRlbXAsIFs2NF0pOwogICAgIExPQ0FM
X0FMSUdORURfMTYodWludDhfdCwgbHNyYzEsIFs2NF0pOwogICAgIExPQ0FMX0FMSUdORURfMTYo
dWludDhfdCwgbHNyYzIsIFs2NF0pOwpAQCAtNzY1LDEzICs3NjUsMTMgQEAgc3RhdGljIGludCBy
ZDh4OF9jKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50
OF90ICpzcmMyLAogCiAgICAgcy0+cGRzcC5kaWZmX3BpeGVscyh0ZW1wLCBsc3JjMSwgbHNyYzIs
IDgpOwogCi0gICAgcy0+YmxvY2tfbGFzdF9pbmRleFswIC8qIEZJWE1FICovXSA9CisgICAgcy0+
Yy5ibG9ja19sYXN0X2luZGV4WzAgLyogRklYTUUgKi9dID0KICAgICBsYXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0KLSAgICAgICAgcy0+ZGN0X3F1YW50aXplKHMsIHRlbXAsIDAg
LyogRklYTUUgKi8sIHMtPnFzY2FsZSwgJmkpOworICAgICAgICBzLT5kY3RfcXVhbnRpemUocywg
dGVtcCwgMCAvKiBGSVhNRSAqLywgcy0+Yy5xc2NhbGUsICZpKTsKIAogICAgIGJpdHMgPSAwOwog
Ci0gICAgaWYgKHMtPm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAg
ICAgc3RhcnRfaSAgICAgPSAxOwogICAgICAgICBsZW5ndGggICAgICA9IHMtPmludHJhX2FjX3Zs
Y19sZW5ndGg7CiAgICAgICAgIGxhc3RfbGVuZ3RoID0gcy0+aW50cmFfYWNfdmxjX2xhc3RfbGVu
Z3RoOwpAQCAtODExLDIzICs4MTEsMjMgQEAgc3RhdGljIGludCByZDh4OF9jKE1wZWdFbmNDb250
ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAogICAgIH0K
IAogICAgIGlmIChsYXN0ID49IDApIHsKLSAgICAgICAgaWYgKHMtPm1iX2ludHJhKQotICAgICAg
ICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEocywgdGVtcCwgMCwgcy0+cXNjYWxlKTsKKyAg
ICAgICAgaWYgKHMtPmMubWJfaW50cmEpCisgICAgICAgICAgICBzLT5jLmRjdF91bnF1YW50aXpl
X2ludHJhKCZzLT5jLCB0ZW1wLCAwLCBzLT5jLnFzY2FsZSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyKHMsIHRlbXAsIDAsIHMtPnFzY2FsZSk7Cisg
ICAgICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludGVyKCZzLT5jLCB0ZW1wLCAwLCBzLT5j
LnFzY2FsZSk7CiAgICAgfQogCi0gICAgcy0+aWRzcC5pZGN0X2FkZChsc3JjMiwgOCwgdGVtcCk7
CisgICAgcy0+Yy5pZHNwLmlkY3RfYWRkKGxzcmMyLCA4LCB0ZW1wKTsKIAogICAgIGRpc3RvcnRp
b24gPSBzLT5zc2VfY21wWzFdKE5VTEwsIGxzcmMyLCBsc3JjMSwgOCwgOCk7CiAKLSAgICByZXR1
cm4gZGlzdG9ydGlvbiArICgoYml0cyAqIHMtPnFzY2FsZSAqIHMtPnFzY2FsZSAqIDEwOSArIDY0
KSA+PiA3KTsKKyAgICByZXR1cm4gZGlzdG9ydGlvbiArICgoYml0cyAqIHMtPmMucXNjYWxlICog
cy0+Yy5xc2NhbGUgKiAxMDkgKyA2NCkgPj4gNyk7CiB9CiAKLXN0YXRpYyBpbnQgYml0OHg4X2Mo
TXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnNy
YzIsCitzdGF0aWMgaW50IGJpdDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVp
bnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnNyYzIsCiAgICAgICAgICAgICAgICAgICAgIHB0
cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewotICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW50YWJsZSA9
IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkOworICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW50
YWJsZSA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CiAgICAgTE9DQUxfQUxJR05F
RF8xNihpbnQxNl90LCB0ZW1wLCBbNjRdKTsKICAgICBpbnQgaSwgbGFzdCwgcnVuLCBiaXRzLCBs
ZXZlbCwgc3RhcnRfaTsKICAgICBjb25zdCBpbnQgZXNjX2xlbmd0aCA9IHMtPmFjX2VzY19sZW5n
dGg7CkBAIC04MzUsMTMgKzgzNSwxMyBAQCBzdGF0aWMgaW50IGJpdDh4OF9jKE1wZWdFbmNDb250
ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAogCiAgICAg
cy0+cGRzcC5kaWZmX3BpeGVsc191bmFsaWduZWQodGVtcCwgc3JjMSwgc3JjMiwgc3RyaWRlKTsK
IAotICAgIHMtPmJsb2NrX2xhc3RfaW5kZXhbMCAvKiBGSVhNRSAqL10gPQorICAgIHMtPmMuYmxv
Y2tfbGFzdF9pbmRleFswIC8qIEZJWE1FICovXSA9CiAgICAgbGFzdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9Ci0gICAgICAgIHMtPmRjdF9xdWFudGl6ZShzLCB0ZW1wLCAwIC8qIEZJ
WE1FICovLCBzLT5xc2NhbGUsICZpKTsKKyAgICAgICAgcy0+ZGN0X3F1YW50aXplKHMsIHRlbXAs
IDAgLyogRklYTUUgKi8sIHMtPmMucXNjYWxlLCAmaSk7CiAKICAgICBiaXRzID0gMDsKIAotICAg
IGlmIChzLT5tYl9pbnRyYSkgeworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CiAgICAgICAgIHN0
YXJ0X2kgICAgID0gMTsKICAgICAgICAgbGVuZ3RoICAgICAgPSBzLT5pbnRyYV9hY192bGNfbGVu
Z3RoOwogICAgICAgICBsYXN0X2xlbmd0aCA9IHMtPmludHJhX2FjX3ZsY19sYXN0X2xlbmd0aDsK
QEAgLTg4NCw3ICs4ODQsNyBAQCBzdGF0aWMgaW50IGJpdDh4OF9jKE1wZWdFbmNDb250ZXh0ICpz
LCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAogfQogCiAjZGVmaW5l
IFZTQURfSU5UUkEoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi1zdGF0aWMgaW50IHZzYWRfaW50cmEgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29u
dGV4dCAqYywgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgaW50IHZzYWRfaW50cmEgIyMgc2l6
ZSAjIyBfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsICAgICAgICAgICAgICBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90
ICpkdW1teSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90
IHN0cmlkZSwgaW50IGgpICAgICAgICAgICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtOTA2LDcg
KzkwNiw3IEBAIFZTQURfSU5UUkEoOCkKIFZTQURfSU5UUkEoMTYpCiAKICNkZWZpbmUgVlNBRChz
aXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi1zdGF0aWMgaW50IHZzYWQgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29udGV4dCAq
YywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIGludCB2c2FkICMjIHNp
emUgIyMgX2MoTVBWRW5jQ29udGV4dCAqdW51c2VkLCAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25z
dCB1aW50OF90ICpzMiwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTkyNiw3ICs5MjYsNyBAQCBWU0FEKDE2KQog
CiAjZGVmaW5lIFNRKGEpICgoYSkgKiAoYSkpCiAjZGVmaW5lIFZTU0VfSU5UUkEoc2l6ZSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgaW50
IHZzc2VfaW50cmEgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29udGV4dCAqYywgICAgICAgICAgICAg
ICAgICBcCitzdGF0aWMgaW50IHZzc2VfaW50cmEgIyMgc2l6ZSAjIyBfYyhNUFZFbmNDb250ZXh0
ICp1bnVzZWQsICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1teSwgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpICAgICAg
ICAgICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtOTQ4LDggKzk0OCw4IEBAIFZTU0VfSU5UUkEo
OCkKIFZTU0VfSU5UUkEoMTYpCiAKICNkZWZpbmUgVlNTRShzaXplKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgaW50
IHZzc2UgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEs
IGNvbnN0IHVpbnQ4X3QgKnMyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJk
aWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIGlu
dCB2c3NlICMjIHNpemUgIyMgX2MoTVBWRW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90
ICpzMSwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICBcCiB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIGludCBzY29yZSA9IDAsIHgsIHk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CkBAIC05NjYsOCArOTY2LDggQEAgVlNTRSg4KQogVlNTRSgxNikKIAogI2RlZmluZSBXUkFQUEVS
OF8xNl9TUShuYW1lOCwgbmFtZTE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotc3RhdGljIGludCBuYW1lMTYoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRz
dCwgY29uc3QgdWludDhfdCAqc3JjLCBcCi0gICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry
aWRlLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgaW50IG5h
bWUxNihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCB1aW50OF90ICpkc3QsICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJp
ZGUsIGludCBoKSAgICAgICAgICBcCiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaW50IHNjb3JlID0g
MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21lX2NtcC5oIGIvbGli
YXZjb2RlYy9tZV9jbXAuaAppbmRleCAwODU3ZWQwM2UyLi5mMWRiY2Q1MTQ2IDEwMDY0NAotLS0g
YS9saWJhdmNvZGVjL21lX2NtcC5oCisrKyBiL2xpYmF2Y29kZWMvbWVfY21wLmgKQEAgLTQxLDEz
ICs0MSwxMyBAQCBFWFRFUk4gY29uc3QgdWludDMyX3QgZmZfc3F1YXJlX3RhYls1MTJdOwogICog
IWZ1dHVyZSB2aWRlbyBjb2RlY3MgbWlnaHQgbmVlZCBmdW5jdGlvbnMgd2l0aCBsZXNzIHN0cmlj
dCBhbGlnbm1lbnQKICAqLwogCi1zdHJ1Y3QgTXBlZ0VuY0NvbnRleHQ7Cit0eXBlZGVmIHN0cnVj
dCBNUFZFbmNDb250ZXh0IE1QVkVuY0NvbnRleHQ7CiAvKiBNb3Rpb24gZXN0aW1hdGlvbjoKICAq
IGggaXMgbGltaXRlZCB0byB7IHdpZHRoIC8gMiwgd2lkdGgsIDIgKiB3aWR0aCB9LAogICogYnV0
IG5ldmVyIGxhcmdlciB0aGFuIDE2IGFuZCBuZXZlciBzbWFsbGVyIHRoYW4gMi4KICAqIEFsdGhv
dWdoIGN1cnJlbnRseSBoIDwgNCBpcyBub3QgdXNlZCBhcyBmdW5jdGlvbnMgd2l0aAogICogd2lk
dGggPCA4IGFyZSBuZWl0aGVyIHVzZWQgbm9yIGltcGxlbWVudGVkLiAqLwotdHlwZWRlZiBpbnQg
KCptZV9jbXBfZnVuYykoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpjLAordHlwZWRlZiBpbnQgKCpt
ZV9jbXBfZnVuYykoTVBWRW5jQ29udGV4dCAqYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKmJsazEgLyogYWxpZ24gd2lkdGggKDggb3IgMTYpICovLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmxrMiAvKiBhbGlnbiAxICovLCBw
dHJkaWZmX3Qgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGgpOwpAQCAt
ODYsNyArODYsNyBAQCB2b2lkIGZmX21lX2NtcF9pbml0X21pcHMoTUVDbXBDb250ZXh0ICpjLCBB
VkNvZGVjQ29udGV4dCAqYXZjdHgpOwogICogRmlsbCB0aGUgZnVuY3Rpb24gcG9pbnRlciBhcnJh
eSBjbXBbNl0gd2l0aCBtZV9jbXBfZnVuY3MgZnJvbQogICogYyBiYXNlZCB1cG9uIHR5cGUuIElm
IG1wdmVuYyBpcyBub3Qgc2V0LCBhbiBlcnJvciBpcyByZXR1cm5lZAogICogaWYgdGhlIHR5cGUg
b2YgY29tcGFyaXNvbiBmdW5jdGlvbnMgcmVxdWlyZXMgYW4gaW5pdGlhbGl6ZWQKLSAqIE1wZWdF
bmNDb250ZXh0LgorICogTVBWRW5jQ29udGV4dC4KICAqLwogaW50IGZmX3NldF9jbXAoY29uc3Qg
TUVDbXBDb250ZXh0ICpjLCBtZV9jbXBfZnVuYyAqY21wLAogICAgICAgICAgICAgICAgaW50IHR5
cGUsIGludCBtcHZlbmMpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9taXBzL21lX2NtcF9taXBz
LmggYi9saWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaAppbmRleCA3MmI3ZGU3MGI0Li43ZTJj
OTI2ZDNhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaAorKysgYi9s
aWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaApAQCAtMjEsMzggKzIxLDM4IEBACiAjaWZuZGVm
IEFWQ09ERUNfTUlQU19NRV9DTVBfTUlQU19ICiAjZGVmaW5lIEFWQ09ERUNfTUlQU19NRV9DTVBf
TUlQU19ICiAKLSNpbmNsdWRlICIuLi9tcGVndmlkZW8uaCIKKyNpbmNsdWRlICIuLi9tcGVndmlk
ZW9lbmMuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL2JpdF9kZXB0aF90ZW1wbGF0ZS5jIgogCi1p
bnQgZmZfaGFkYW1hcmQ4X2RpZmY4eDhfbXNhKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50
OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRhbWFyZDhfZGlmZjh4OF9t
c2EoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpz
cmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo
KTsKLWludCBmZl9oYWRhbWFyZDhfaW50cmE4eDhfbXNhKE1wZWdFbmNDb250ZXh0ICpzLCBjb25z
dCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRhbWFyZDhfaW50
cmE4eDhfbXNhKE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRzdCwgY29uc3QgdWlu
dDhfdCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk
ZSwgaW50IGgpOwotaW50IGZmX2hhZGFtYXJkOF9kaWZmMTZfbXNhKE1wZWdFbmNDb250ZXh0ICpz
LCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRhbWFy
ZDhfZGlmZjE2X21zYShNUFZFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0
IHVpbnQ4X3QgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry
aWRlLCBpbnQgaCk7Ci1pbnQgZmZfaGFkYW1hcmQ4X2ludHJhMTZfbXNhKE1wZWdFbmNDb250ZXh0
ICpzLCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRh
bWFyZDhfaW50cmExNl9tc2EoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqZHN0LCBj
b25zdCB1aW50OF90ICpzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf
dCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzMTZfbXNhKE1wZWdFbmNDb250ZXh0ICp2
LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9h
YnMxNl9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu
dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo
KTsKLWludCBmZl9waXhfYWJzMTZfeDJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50
OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnMxNl94Ml9tc2Eo
TVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4
MiwKICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWlu
dCBmZl9waXhfYWJzMTZfeTJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw
aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnMxNl95Ml9tc2EoTVBWRW5j
Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9w
aXhfYWJzMTZfeHkyX21zYShNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg
Y29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeHkyX21zYShNUFZFbmNDb250
ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhf
YWJzOF9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVp
bnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczhfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0
IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzOF94Ml9tc2EoTXBlZ0Vu
Y0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitp
bnQgZmZfcGl4X2FiczhfeDJfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp
eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf
dCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzOF95Ml9tc2EoTXBlZ0VuY0NvbnRleHQg
KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4
X2FiczhfeTJfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0
IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUs
IGludCBoKTsKLWludCBmZl9waXhfYWJzOF94eTJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25z
dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnM4X3h5
Ml9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhf
dCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo
KTsKLWludCBmZl9zc2UxNl9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnB1
OFNyYywgY29uc3QgdWludDhfdCAqcHU4UmVmLAoraW50IGZmX3NzZTE2X21zYShNUFZFbmNDb250
ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwdThTcmMsIGNvbnN0IHVpbnQ4X3QgKnB1OFJlZiwKICAg
ICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGkzMkhlaWdodCk7Ci1pbnQgZmZf
c3NlOF9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnB1OFNyYywgY29uc3Qg
dWludDhfdCAqcHU4UmVmLAoraW50IGZmX3NzZThfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0
IHVpbnQ4X3QgKnB1OFNyYywgY29uc3QgdWludDhfdCAqcHU4UmVmLAogICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBpMzJIZWlnaHQpOwotaW50IGZmX3NzZTRfbXNhKE1wZWdF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwdThTcmMsIGNvbnN0IHVpbnQ4X3QgKnB1OFJl
ZiwKK2ludCBmZl9zc2U0X21zYShNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwdThT
cmMsIGNvbnN0IHVpbnQ4X3QgKnB1OFJlZiwKICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry
aWRlLCBpbnQgaTMySGVpZ2h0KTsKIHZvaWQgZmZfYWRkX3BpeGVsczhfbXNhKGNvbnN0IHVpbnQ4
X3QgKnJlc3RyaWN0IHBpeGVscywgaW50MTZfdCAqYmxvY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICBwdHJkaWZmX3Qgc3RyaWRlKTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9tZV9j
bXBfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvbWVfY21wX21zYS5jCmluZGV4IDM1MTQ5NDE2MWYu
LjhlY2M2MzUyZTYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbWlwcy9tZV9jbXBfbXNhLmMKKysr
IGIvbGliYXZjb2RlYy9taXBzL21lX2NtcF9tc2EuYwpAQCAtNzMyLDc5ICs3MzIsNzkgQEAgc3Rh
dGljIGludDMyX3QgaGFkYW1hcmRfaW50cmFfOHg4X21zYShjb25zdCB1aW50OF90ICpzcmMsIGlu
dDMyX3Qgc3JjX3N0cmlkZSwKICAgICByZXR1cm4gc3VtX3JlczsKIH0KIAotaW50IGZmX3BpeF9h
YnMxNl9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnNyYywgY29uc3QgdWlu
dDhfdCAqcmVmLAoraW50IGZmX3BpeF9hYnMxNl9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqc3JjLCBjb25zdCB1aW50OF90ICpyZWYsCiAgICAgICAgICAgICAgICAgICAgICBw
dHJkaWZmX3Qgc3RyaWRlLCBpbnQgaGVpZ2h0KQogewogICAgIHJldHVybiBzYWRfMTZ3aWR0aF9t
c2Eoc3JjLCBzdHJpZGUsIHJlZiwgc3RyaWRlLCBoZWlnaHQpOwogfQogCi1pbnQgZmZfcGl4X2Fi
czhfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4
X3QgKnJlZiwKK2ludCBmZl9waXhfYWJzOF9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu
dDhfdCAqc3JjLCBjb25zdCB1aW50OF90ICpyZWYsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRp
ZmZfdCBzdHJpZGUsIGludCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIHNhZF84d2lkdGhfbXNhKHNy
Yywgc3RyaWRlLCByZWYsIHN0cmlkZSwgaGVpZ2h0KTsKIH0KIAotaW50IGZmX3BpeF9hYnMxNl94
Ml9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4
X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczE2X3gyX21zYShNUFZFbmNDb250ZXh0ICp2LCBjb25z
dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF9ob3Jpel9i
aWxpbmVhcl9maWx0ZXJfMTZ3aWR0aF9tc2EocGl4MSwgc3RyaWRlLCBwaXgyLCBzdHJpZGUsIGgp
OwogfQogCi1pbnQgZmZfcGl4X2FiczE2X3kyX21zYShNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeTJf
bXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkK
IHsKICAgICByZXR1cm4gc2FkX3ZlcnRfYmlsaW5lYXJfZmlsdGVyXzE2d2lkdGhfbXNhKHBpeDEs
IHN0cmlkZSwgcGl4Miwgc3RyaWRlLCBoKTsKIH0KIAotaW50IGZmX3BpeF9hYnMxNl94eTJfbXNh
KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw
aXgyLAoraW50IGZmX3BpeF9hYnMxNl94eTJfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVp
bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF9odl9iaWxpbmVh
cl9maWx0ZXJfMTZ3aWR0aF9tc2EocGl4MSwgc3RyaWRlLCBwaXgyLCBzdHJpZGUsIGgpOwogfQog
Ci1pbnQgZmZfcGl4X2FiczhfeDJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90
ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnM4X3gyX21zYShNUFZF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAog
ICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBy
ZXR1cm4gc2FkX2hvcml6X2JpbGluZWFyX2ZpbHRlcl84d2lkdGhfbXNhKHBpeDEsIHN0cmlkZSwg
cGl4Miwgc3RyaWRlLCBoKTsKIH0KIAotaW50IGZmX3BpeF9hYnM4X3kyX21zYShNcGVnRW5jQ29u
dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBm
Zl9waXhfYWJzOF95Ml9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg
Y29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF92ZXJ0X2JpbGluZWFyX2ZpbHRlcl84d2lk
dGhfbXNhKHBpeDEsIHN0cmlkZSwgcGl4Miwgc3RyaWRlLCBoKTsKIH0KIAotaW50IGZmX3BpeF9h
YnM4X3h5Ml9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0
IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczhfeHkyX21zYShNUFZFbmNDb250ZXh0ICp2
LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF9o
dl9iaWxpbmVhcl9maWx0ZXJfOHdpZHRoX21zYShwaXgxLCBzdHJpZGUsIHBpeDIsIHN0cmlkZSwg
aCk7CiB9CiAKLWludCBmZl9zc2UxNl9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4
X3QgKnNyYywgY29uc3QgdWludDhfdCAqcmVmLAoraW50IGZmX3NzZTE2X21zYShNUFZFbmNDb250
ZXh0ICp2LCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4X3QgKnJlZiwKICAgICAgICAg
ICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGhlaWdodCkKIHsKICAgICByZXR1cm4gc3Nl
XzE2d2lkdGhfbXNhKHNyYywgc3RyaWRlLCByZWYsIHN0cmlkZSwgaGVpZ2h0KTsKIH0KIAotaW50
IGZmX3NzZThfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0
IHVpbnQ4X3QgKnJlZiwKK2ludCBmZl9zc2U4X21zYShNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1
aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4X3QgKnJlZiwKICAgICAgICAgICAgICAgICBwdHJkaWZm
X3Qgc3RyaWRlLCBpbnQgaGVpZ2h0KQogewogICAgIHJldHVybiBzc2VfOHdpZHRoX21zYShzcmMs
IHN0cmlkZSwgcmVmLCBzdHJpZGUsIGhlaWdodCk7CiB9CiAKLWludCBmZl9zc2U0X21zYShNcGVn
RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqc3JjLCBjb25zdCB1aW50OF90ICpyZWYsCitp
bnQgZmZfc3NlNF9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqc3JjLCBjb25z
dCB1aW50OF90ICpyZWYsCiAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGhl
aWdodCkKIHsKICAgICByZXR1cm4gc3NlXzR3aWR0aF9tc2Eoc3JjLCBzdHJpZGUsIHJlZiwgc3Ry
aWRlLCBoZWlnaHQpOwogfQogCi1pbnQgZmZfaGFkYW1hcmQ4X2RpZmY4eDhfbXNhKE1wZWdFbmND
b250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBm
Zl9oYWRhbWFyZDhfZGlmZjh4OF9tc2EoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAq
ZHN0LCBjb25zdCB1aW50OF90ICpzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0
cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIHJldHVybiBoYWRhbWFyZF9kaWZmXzh4OF9t
c2Eoc3JjLCBzdHJpZGUsIGRzdCwgc3RyaWRlKTsKIH0KIAotaW50IGZmX2hhZGFtYXJkOF9pbnRy
YTh4OF9tc2EoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYywgY29uc3QgdWlu
dDhfdCAqZHVtbXksCitpbnQgZmZfaGFkYW1hcmQ4X2ludHJhOHg4X21zYShNUFZFbmNDb250ZXh0
ICpzLCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0
dXJuIGhhZGFtYXJkX2ludHJhXzh4OF9tc2Eoc3JjLCBzdHJpZGUsIGR1bW15LCBzdHJpZGUpOwpA
QCAtODEyLDcgKzgxMiw3IEBAIGludCBmZl9oYWRhbWFyZDhfaW50cmE4eDhfbXNhKE1wZWdFbmND
b250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4CiAKIC8qIEhhZGFtYXJk
IFRyYW5zZm9ybSBmdW5jdGlvbnMgKi8KICNkZWZpbmUgV1JBUFBFUjhfMTZfU1EobmFtZTgsIG5h
bWUxNikgICAgICAgICAgICAgICAgICAgICAgXAotaW50IG5hbWUxNihNcGVnRW5jQ29udGV4dCAq
cywgY29uc3QgdWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpzcmMsICBcCitpbnQgbmFtZTE2
KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3Jj
LCAgXAogICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICAgICAgICAgICAg
ICAgICAgICBcCiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBpbnQgc2NvcmUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9taXBzL21wZWd2aWRl
b19taXBzLmggYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX21pcHMuaAppbmRleCA3NjBkN2Iz
Mjk1Li43MmZmZWQ2OTg1IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX21p
cHMuaAorKysgYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX21pcHMuaApAQCAtMjIsNiArMjIs
NyBAQAogI2RlZmluZSBBVkNPREVDX01JUFNfTVBFR1ZJREVPX01JUFNfSAogCiAjaW5jbHVkZSAi
bGliYXZjb2RlYy9tcGVndmlkZW8uaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlb2Vu
Yy5oIgogCiB2b2lkIGZmX2RjdF91bnF1YW50aXplX2gyNjNfaW50cmFfbW1pKE1wZWdFbmNDb250
ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKICAgICAgICAgaW50IG4sIGludCBxc2NhbGUpOwpAQCAt
MzMsNiArMzQsNiBAQCB2b2lkIGZmX2RjdF91bnF1YW50aXplX21wZWcxX2ludGVyX21taShNcGVn
RW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCiAgICAgICAgIGludCBuLCBpbnQgcXNjYWxl
KTsKIHZvaWQgZmZfZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmFfbW1pKE1wZWdFbmNDb250ZXh0
ICpzLCBpbnQxNl90ICpibG9jaywKICAgICAgICAgaW50IG4sIGludCBxc2NhbGUpOwotdm9pZCBm
Zl9kZW5vaXNlX2RjdF9tbWkoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrKTsKK3Zv
aWQgZmZfZGVub2lzZV9kY3RfbW1pKE1QVkVuY0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrKTsK
IAogI2VuZGlmIC8qIEFWQ09ERUNfTUlQU19NUEVHVklERU9fTUlQU19IICovCmRpZmYgLS1naXQg
YS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX2luaXRfbWlwcy5jIGIvbGliYXZjb2RlYy9t
aXBzL21wZWd2aWRlb2VuY19pbml0X21pcHMuYwppbmRleCA1ZWYwNjY0OTM3Li43ODMxOTczZWI4
IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX2luaXRfbWlwcy5jCisr
KyBiL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNfaW5pdF9taXBzLmMKQEAgLTIzLDcgKzIz
LDcgQEAKICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oIgogI2luY2x1ZGUgIm1w
ZWd2aWRlb19taXBzLmgiCiAKLWF2X2NvbGQgdm9pZCBmZl9tcHZlbmNfZGN0X2luaXRfbWlwcyhN
cGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQgdm9pZCBmZl9tcHZlbmNfZGN0X2luaXRfbWlwcyhN
UFZFbmNDb250ZXh0ICpzKQogewogICAgIGludCBjcHVfZmxhZ3MgPSBhdl9nZXRfY3B1X2ZsYWdz
KCk7CiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNfbW1pLmMgYi9s
aWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX21taS5jCmluZGV4IDY1ZGExNTVlOWYuLjA4NWJl
M2IwZWMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNfbW1pLmMKKysr
IGIvbGliYXZjb2RlYy9taXBzL21wZWd2aWRlb2VuY19tbWkuYwpAQCAtMjUsOSArMjUsOSBAQAog
I2luY2x1ZGUgIm1wZWd2aWRlb19taXBzLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvbW1p
dXRpbHMuaCIKIAotdm9pZCBmZl9kZW5vaXNlX2RjdF9tbWkoTXBlZ0VuY0NvbnRleHQgKnMsIGlu
dDE2X3QgKmJsb2NrKQordm9pZCBmZl9kZW5vaXNlX2RjdF9tbWkoTVBWRW5jQ29udGV4dCAqcywg
aW50MTZfdCAqYmxvY2spCiB7Ci0gICAgY29uc3QgaW50IGludHJhID0gcy0+bWJfaW50cmE7Cisg
ICAgY29uc3QgaW50IGludHJhID0gcy0+Yy5tYl9pbnRyYTsKICAgICBpbnQgKnN1bSA9IHMtPmRj
dF9lcnJvcl9zdW1baW50cmFdOwogICAgIHVpbnQxNl90ICpvZmZzZXQgPSBzLT5kY3Rfb2Zmc2V0
W2ludHJhXTsKICAgICBkb3VibGUgZnRtcFs4XTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlw
cy9tcGVndmlkZW9lbmNkc3BfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVv
ZW5jZHNwX2luaXRfbWlwcy5jCmluZGV4IDNlZmJlZWMzNGEuLjI0YTE3YjkxZGIgMTAwNjQ0Ci0t
LSBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNkc3BfaW5pdF9taXBzLmMKKysrIGIvbGli
YXZjb2RlYy9taXBzL21wZWd2aWRlb2VuY2RzcF9pbml0X21pcHMuYwpAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAibGliYXZ1dGls
L21pcHMvY3B1LmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9iaXRfZGVwdGhfdGVtcGxhdGUuYyIK
KyNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlb2VuY2RzcC5oIgogI2luY2x1ZGUgImgyNjNk
c3BfbWlwcy5oIgogCiBhdl9jb2xkIHZvaWQgZmZfbXBlZ3ZpZGVvZW5jZHNwX2luaXRfbWlwcyhN
cGVndmlkZW9FbmNEU1BDb250ZXh0ICpjLApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9taXBzL3Bp
eGJsb2NrZHNwX2luaXRfbWlwcy5jIGIvbGliYXZjb2RlYy9taXBzL3BpeGJsb2NrZHNwX2luaXRf
bWlwcy5jCmluZGV4IDJlMmQ3MDk1M2IuLjAwZjE4OWQ1NTggMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k
ZWMvbWlwcy9waXhibG9ja2RzcF9pbml0X21pcHMuYworKysgYi9saWJhdmNvZGVjL21pcHMvcGl4
YmxvY2tkc3BfaW5pdF9taXBzLmMKQEAgLTIwLDYgKzIwLDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
bGliYXZ1dGlsL21pcHMvY3B1LmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9waXhibG9ja2RzcC5o
IgogI2luY2x1ZGUgInBpeGJsb2NrZHNwX21pcHMuaCIKIAogdm9pZCBmZl9waXhibG9ja2RzcF9p
bml0X21pcHMoUGl4YmxvY2tEU1BDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCmRp
ZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvcGl4YmxvY2tkc3BfbWlwcy5oIGIvbGliYXZjb2Rl
Yy9taXBzL3BpeGJsb2NrZHNwX21pcHMuaAppbmRleCA3ZmQxMzdjZDA5Li5mYzM4N2VhNDI3IDEw
MDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvcGl4YmxvY2tkc3BfbWlwcy5oCisrKyBiL2xpYmF2
Y29kZWMvbWlwcy9waXhibG9ja2RzcF9taXBzLmgKQEAgLTIyLDcgKzIyLDggQEAKICNpZm5kZWYg
QVZDT0RFQ19NSVBTX1BJWEJMT0NLRFNQX01JUFNfSAogI2RlZmluZSBBVkNPREVDX01JUFNfUElY
QkxPQ0tEU1BfTUlQU19ICiAKLSNpbmNsdWRlICIuLi9tcGVndmlkZW8uaCIKKyNpbmNsdWRlIDxz
dGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogdm9pZCBmZl9kaWZmX3BpeGVsc19tc2Eo
aW50MTZfdCAqcmVzdHJpY3QgYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlKTsKZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWpwZWdlbmMuYyBiL2xpYmF2Y29kZWMvbWpwZWdlbmMuYwpp
bmRleCBhNmYyMDJkYTBhLi42NjgwNjUwMTFjIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21qcGVn
ZW5jLmMKKysrIGIvbGliYXZjb2RlYy9tanBlZ2VuYy5jCkBAIC02MSw4ICs2MSw4IEBAIHR5cGVk
ZWYgc3RydWN0IE1KcGVnSHVmZm1hbkNvZGUgewogCiAvKiBUaGUgZm9sbG93aW5nIGlzIHRoZSBw
cml2YXRlIGNvbnRleHQgb2YgTUpQRUcvQU1WIGRlY29kZXIuCiAgKiBOb3RlIHRoYXQgd2hlbiB1
c2luZyBzbGljZSB0aHJlYWRpbmcgb25seSB0aGUgbWFpbiB0aHJlYWQncwotICogTXBlZ0VuY0Nv
bnRleHQgaXMgZm9sbG93ZWQgYnkgYSBNanBlZ0NvbnRleHQ7IHRoZSBvdGhlciB0aHJlYWRzCi0g
KiBjYW4gYWNjZXNzIHRoaXMgc2hhcmVkIGNvbnRleHQgdmlhIE1wZWdFbmNDb250ZXh0Lm1qcGVn
LiAqLworICogTVBWRW5jQ29udGV4dCBpcyBmb2xsb3dlZCBieSBhIE1qcGVnQ29udGV4dDsgdGhl
IG90aGVyIHRocmVhZHMKKyAqIGNhbiBhY2Nlc3MgdGhpcyBzaGFyZWQgY29udGV4dCB2aWEgTVBW
RW5jQ29udGV4dC5tanBlZy4gKi8KIHR5cGVkZWYgc3RydWN0IE1KUEVHRW5jQ29udGV4dCB7CiAg
ICAgTVBWTWFpbkVuY0NvbnRleHQgbXBlZzsKICAgICBNSnBlZ0NvbnRleHQgICBtanBlZzsKQEAg
LTkyLDIyICs5MiwyMiBAQCBzdGF0aWMgYXZfY29sZCB2b2lkIGluaXRfdW5pX2FjX3ZsYyhjb25z
dCB1aW50OF90IGh1ZmZfc2l6ZV9hY1syNTZdLAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbWpw
ZWdfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1wZWdFbmNDb250ZXh0ICpzKQorc3RhdGljIHZvaWQg
bWpwZWdfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0g
ICAgZmZfbWpwZWdfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKHMtPmF2Y3R4LCAmcy0+cGIsIHMtPmN1
cl9waWMucHRyLT5mLCBzLT5tanBlZ19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkLCAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLT5pbnRyYV9tYXRyaXgsIHMtPmNocm9tYV9pbnRyYV9tYXRy
aXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNsaWNlX2NvbnRleHRf
Y291bnQgPiAxKTsKKyAgICBmZl9tanBlZ19lbmNvZGVfcGljdHVyZV9oZWFkZXIocy0+Yy5hdmN0
eCwgJnMtPnBiLCBzLT5jLmN1cl9waWMucHRyLT5mLCBzLT5tanBlZ19jdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuaW50cmFfbWF0cml4
LCBzLT5jLmNocm9tYV9pbnRyYV9tYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCA+IDEpOwogCiAgICAgcy0+ZXNjX3BvcyA9
IHB1dF9ieXRlc19jb3VudCgmcy0+cGIsIDApOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcy0+
c2xpY2VfY29udGV4dF9jb3VudDsgaSsrKQotICAgICAgICBzLT50aHJlYWRfY29udGV4dFtpXS0+
ZXNjX3BvcyA9IDA7CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzLT5jLnNsaWNlX2NvbnRleHRf
Y291bnQ7IGkrKykKKyAgICAgICAgcy0+Yy5lbmNfY29udGV4dHNbaV0tPmVzY19wb3MgPSAwOwog
fQogCiBzdGF0aWMgaW50IG1qcGVnX2Ftdl9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVu
Y0NvbnRleHQgKmNvbnN0IG0pCiB7CiAgICAgTUpQRUdFbmNDb250ZXh0ICpjb25zdCBtMiA9IChN
SlBFR0VuY0NvbnRleHQqKW07Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsK
KyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgYXZfYXNzZXJ0MihzLT5t
anBlZ19jdHggPT0gJm0yLT5tanBlZyk7CiAgICAgLyogcy0+aHVmZm1hbiA9PSBIVUZGTUFOX1RB
QkxFX09QVElNQUwgY2FuIG9ubHkgYmUgdHJ1ZSBmb3IgTUpQRUcuICovCiAgICAgaWYgKCFDT05G
SUdfTUpQRUdfRU5DT0RFUiB8fCBtMi0+bWpwZWcuaHVmZm1hbiAhPSBIVUZGTUFOX1RBQkxFX09Q
VElNQUwpCkBAIC0xMjAsMTEgKzEyMCwxMSBAQCBzdGF0aWMgaW50IG1qcGVnX2Ftdl9lbmNvZGVf
cGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAvKioKICAqIEVuY29k
ZXMgYW5kIG91dHB1dHMgdGhlIGVudGlyZSBmcmFtZSBpbiB0aGUgSlBFRyBmb3JtYXQuCiAgKgot
ICogQHBhcmFtIHMgVGhlIE1wZWdFbmNDb250ZXh0LgorICogQHBhcmFtIG1haW4gVGhlIE1QVk1h
aW5FbmNDb250ZXh0LgogICovCiBzdGF0aWMgdm9pZCBtanBlZ19lbmNvZGVfcGljdHVyZV9mcmFt
ZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbWFpbikKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAq
Y29uc3QgcyA9ICZtYWluLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbWFpbi0+
czsKICAgICBpbnQgbmJpdHMsIGNvZGUsIHRhYmxlX2lkOwogICAgIE1KcGVnQ29udGV4dCAqbSA9
IHMtPm1qcGVnX2N0eDsKICAgICB1aW50OF90ICAqaHVmZl9zaXplWzRdID0geyBtLT5odWZmX3Np
emVfZGNfbHVtaW5hbmNlLApAQCAtMjMyLDE0ICsyMzIsMTQgQEAgc3RhdGljIHZvaWQgbWpwZWdf
YnVpbGRfb3B0aW1hbF9odWZmbWFuKE1KcGVnQ29udGV4dCAqbSkKICAqCiAgKiBIZWFkZXIgKyB2
YWx1ZXMgKyBzdHVmZmluZy4KICAqCi0gKiBAcGFyYW0gcyBUaGUgTXBlZ0VuY0NvbnRleHQuCisg
KiBAcGFyYW0gcyBUaGUgTVBWRW5jQ29udGV4dC4KICAqIEByZXR1cm4gaW50IEVycm9yIGNvZGUs
IDAgaWYgc3VjY2Vzc2Z1bC4KICAqLwotaW50IGZmX21qcGVnX2VuY29kZV9zdHVmZmluZyhNcGVn
RW5jQ29udGV4dCAqcykKK2ludCBmZl9tanBlZ19lbmNvZGVfc3R1ZmZpbmcoTVBWRW5jQ29udGV4
dCAqY29uc3QgcykKIHsKICAgICBNSnBlZ0NvbnRleHQgKmNvbnN0IG0gPSBzLT5tanBlZ19jdHg7
CiAgICAgUHV0Qml0Q29udGV4dCAqcGJjID0gJnMtPnBiOwotICAgIGludCBtYl95ID0gcy0+bWJf
eSAtICFzLT5tYl94OworICAgIGludCBtYl95ID0gcy0+Yy5tYl95IC0gIXMtPmMubWJfeDsKICAg
ICBpbnQgcmV0OwogCiAjaWYgQ09ORklHX01KUEVHX0VOQ09ERVIKQEAgLTI2NywxOSArMjY3LDE5
IEBAIGludCBmZl9tanBlZ19lbmNvZGVfc3R1ZmZpbmcoTXBlZ0VuY0NvbnRleHQgKnMpCiAgICAg
cmV0ID0gZmZfbXB2X3JlYWxsb2NhdGVfcHV0Yml0YnVmZmVyKHMsIHB1dF9iaXRzX2NvdW50KCZz
LT5wYikgLyA4ICsgMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXRfYml0c19jb3VudCgmcy0+cGIpIC8gNCArIDEwMDApOwogICAgIGlmIChyZXQgPCAw
KSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiQnVmZmVyIHJlYWxs
b2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VS
Uk9SLCAiQnVmZmVyIHJlYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwogICAgICAgICBnb3RvIGZhaWw7
CiAgICAgfQogCiAgICAgZmZfbWpwZWdfZXNjYXBlX0ZGKHBiYywgcy0+ZXNjX3Bvcyk7CiAKLSAg
ICBpZiAocy0+c2xpY2VfY29udGV4dF9jb3VudCA+IDEgJiYgbWJfeSA8IHMtPm1iX2hlaWdodCAt
IDEpCisgICAgaWYgKHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCA+IDEgJiYgbWJfeSA8IHMtPmMu
bWJfaGVpZ2h0IC0gMSkKICAgICAgICAgcHV0X21hcmtlcihwYmMsIFJTVDAgKyAobWJfeSY3KSk7
CiAgICAgcy0+ZXNjX3BvcyA9IHB1dF9ieXRlc19jb3VudChwYmMsIDApOwogCiBmYWlsOgogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKQotICAgICAgICBzLT5sYXN0X2RjW2ldID0gMTI4
IDw8IHMtPmludHJhX2RjX3ByZWNpc2lvbjsKKyAgICAgICAgcy0+Yy5sYXN0X2RjW2ldID0gMTI4
IDw8IHMtPmMuaW50cmFfZGNfcHJlY2lzaW9uOwogCiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTI4
NywxNCArMjg3LDE0IEBAIGZhaWw6CiBzdGF0aWMgaW50IGFsbG9jX2h1ZmZtYW4oTUpQRUdFbmND
b250ZXh0ICpjb25zdCBtMikKIHsKICAgICBNSnBlZ0NvbnRleHQgICAqY29uc3QgbSA9ICZtMi0+
bWpwZWc7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbTItPm1wZWcuczsKKyAgICBN
UFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0yLT5tcGVnLnM7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIgYmxvY2tzX3Blcl9tYltdID0gewogICAgICAgICBbQ0hST01BXzQyMF0gPSA2LCBbQ0hST01B
XzQyMl0gPSA4LCBbQ0hST01BXzQ0NF0gPSAxMgogICAgIH07CiAgICAgc2l6ZV90IG51bV9ibG9j
a3MsIG51bV9jb2RlczsKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBzcGFjZSB0
byBob2xkIHRoaXMgZnJhbWUuCi0gICAgbnVtX2Jsb2NrcyA9IHMtPm1iX251bSAqIGJsb2Nrc19w
ZXJfbWJbcy0+Y2hyb21hX2Zvcm1hdF07CisgICAgbnVtX2Jsb2NrcyA9IHMtPmMubWJfbnVtICog
YmxvY2tzX3Blcl9tYltzLT5jLmNocm9tYV9mb3JtYXRdOwogICAgIG51bV9jb2RlcyA9IG51bV9i
bG9ja3MgKiA2NDsKIAogICAgIG0tPmh1ZmZfYnVmZmVyID0gYXZfbWFsbG9jX2FycmF5KG51bV9j
b2RlcywKQEAgLTM1OCwxMSArMzU4LDExIEBAIHN0YXRpYyB2b2lkIG1qcGVnX2VuY29kZV9jb2Vm
KE1KcGVnQ29udGV4dCAqcywgdWludDhfdCB0YWJsZV9pZCwgaW50IHZhbCwgaW50IHJ1CiAvKioK
ICAqIEFkZCB0aGUgYmxvY2sncyBkYXRhIGludG8gdGhlIEpQRUcgYnVmZmVyLgogICoKLSAqIEBw
YXJhbSBzIFRoZSBNcGVnRW5jQ29udGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBKUEVHIGJ1ZmZlci4K
KyAqIEBwYXJhbSBzIFRoZSBNUFZFbmNDb250ZXh0IHRoYXQgY29udGFpbnMgdGhlIEpQRUcgYnVm
ZmVyLgogICogQHBhcmFtIGJsb2NrIFRoZSBibG9jay4KICAqIEBwYXJhbSBuIFRoZSBibG9jaydz
IGluZGV4IG9yIG51bWJlci4KICAqLwotc3RhdGljIHZvaWQgcmVjb3JkX2Jsb2NrKE1wZWdFbmND
b250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCitzdGF0aWMgdm9pZCByZWNvcmRfYmxv
Y2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdLCBpbnQgbikKIHsKICAg
ICBpbnQgaSwgaiwgdGFibGVfaWQ7CiAgICAgaW50IGNvbXBvbmVudCwgZGMsIGxhc3RfaW5kZXgs
IHZhbCwgcnVuOwpAQCAtMzcyLDIwICszNzIsMjAgQEAgc3RhdGljIHZvaWQgcmVjb3JkX2Jsb2Nr
KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgY29tcG9uZW50
ID0gKG4gPD0gMyA/IDAgOiAobiYxKSArIDEpOwogICAgIHRhYmxlX2lkID0gKG4gPD0gMyA/IDAg
OiAxKTsKICAgICBkYyA9IGJsb2NrWzBdOyAvKiBvdmVyZmxvdyBpcyBpbXBvc3NpYmxlICovCi0g
ICAgdmFsID0gZGMgLSBzLT5sYXN0X2RjW2NvbXBvbmVudF07CisgICAgdmFsID0gZGMgLSBzLT5j
Lmxhc3RfZGNbY29tcG9uZW50XTsKIAogICAgIG1qcGVnX2VuY29kZV9jb2VmKG0sIHRhYmxlX2lk
LCB2YWwsIDApOwogCi0gICAgcy0+bGFzdF9kY1tjb21wb25lbnRdID0gZGM7CisgICAgcy0+Yy5s
YXN0X2RjW2NvbXBvbmVudF0gPSBkYzsKIAogICAgIC8qIEFDIGNvZWZzICovCiAKICAgICBydW4g
PSAwOwotICAgIGxhc3RfaW5kZXggPSBzLT5ibG9ja19sYXN0X2luZGV4W25dOworICAgIGxhc3Rf
aW5kZXggPSBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbbl07CiAgICAgdGFibGVfaWQgfD0gMjsKIAog
ICAgIGZvcihpPTE7aTw9bGFzdF9pbmRleDtpKyspIHsKLSAgICAgICAgaiA9IHMtPmludHJhX3Nj
YW50YWJsZS5wZXJtdXRhdGVkW2ldOworICAgICAgICBqID0gcy0+Yy5pbnRyYV9zY2FudGFibGUu
cGVybXV0YXRlZFtpXTsKICAgICAgICAgdmFsID0gYmxvY2tbal07CiAKICAgICAgICAgaWYgKHZh
bCA9PSAwKSB7CkBAIC00MDUsNyArNDA1LDcgQEAgc3RhdGljIHZvaWQgcmVjb3JkX2Jsb2NrKE1w
ZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgICAgIG1qcGVnX2Vu
Y29kZV9jb2RlKG0sIHRhYmxlX2lkLCAwKTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlX2Jsb2Nr
KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCitzdGF0aWMgdm9pZCBl
bmNvZGVfYmxvY2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdLCBpbnQg
bikKIHsKICAgICBpbnQgbWFudCwgbmJpdHMsIGNvZGUsIGksIGo7CiAgICAgaW50IGNvbXBvbmVu
dCwgZGMsIHJ1biwgbGFzdF9pbmRleCwgdmFsOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHN0YXRpYyB2
b2lkIGVuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssIGludCBu
KQogICAgIC8qIERDIGNvZWYgKi8KICAgICBjb21wb25lbnQgPSAobiA8PSAzID8gMCA6IChuJjEp
ICsgMSk7CiAgICAgZGMgPSBibG9ja1swXTsgLyogb3ZlcmZsb3cgaXMgaW1wb3NzaWJsZSAqLwot
ICAgIHZhbCA9IGRjIC0gcy0+bGFzdF9kY1tjb21wb25lbnRdOworICAgIHZhbCA9IGRjIC0gcy0+
Yy5sYXN0X2RjW2NvbXBvbmVudF07CiAgICAgaWYgKG4gPCA0KSB7CiAgICAgICAgIGZmX21qcGVn
X2VuY29kZV9kYygmcy0+cGIsIHZhbCwgbS0+aHVmZl9zaXplX2RjX2x1bWluYW5jZSwgbS0+aHVm
Zl9jb2RlX2RjX2x1bWluYW5jZSk7CiAgICAgICAgIGh1ZmZfc2l6ZV9hYyA9IG0tPmh1ZmZfc2l6
ZV9hY19sdW1pbmFuY2U7CkBAIC00MjYsMTQgKzQyNiwxNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVf
YmxvY2soTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrLCBpbnQgbikKICAgICAgICAg
aHVmZl9zaXplX2FjID0gbS0+aHVmZl9zaXplX2FjX2Nocm9taW5hbmNlOwogICAgICAgICBodWZm
X2NvZGVfYWMgPSBtLT5odWZmX2NvZGVfYWNfY2hyb21pbmFuY2U7CiAgICAgfQotICAgIHMtPmxh
c3RfZGNbY29tcG9uZW50XSA9IGRjOworICAgIHMtPmMubGFzdF9kY1tjb21wb25lbnRdID0gZGM7
CiAKICAgICAvKiBBQyBjb2VmcyAqLwogCiAgICAgcnVuID0gMDsKLSAgICBsYXN0X2luZGV4ID0g
cy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKKyAgICBsYXN0X2luZGV4ID0gcy0+Yy5ibG9ja19sYXN0
X2luZGV4W25dOwogICAgIGZvcihpPTE7aTw9bGFzdF9pbmRleDtpKyspIHsKLSAgICAgICAgaiA9
IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOworICAgICAgICBqID0gcy0+Yy5pbnRy
YV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgdmFsID0gYmxvY2tbal07CiAgICAg
ICAgIGlmICh2YWwgPT0gMCkgewogICAgICAgICAgICAgcnVuKys7CkBAIC00NjMsMTAgKzQ2Mywx
MCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3Qg
KmJsb2NrLCBpbnQgbikKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCBodWZmX3NpemVfYWNbMF0s
IGh1ZmZfY29kZV9hY1swXSk7CiB9CiAKLXN0YXRpYyB2b2lkIG1qcGVnX3JlY29yZF9tYihNcGVn
RW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKK3N0YXRpYyB2b2lkIG1q
cGVnX3JlY29yZF9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bnVzZWRfeCwgaW50IHVudXNlZF95
KQogewotICAgIGlmIChzLT5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80NDQpIHsKKyAgICBpZiAo
cy0+Yy5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80NDQpIHsKICAgICAgICAgcmVjb3JkX2Jsb2Nr
KHMsIGJsb2NrWzBdLCAwKTsKICAgICAgICAgcmVjb3JkX2Jsb2NrKHMsIGJsb2NrWzJdLCAyKTsK
ICAgICAgICAgcmVjb3JkX2Jsb2NrKHMsIGJsb2NrWzRdLCA0KTsKQEAgLTQ3NCw3ICs0NzQsNyBA
QCBzdGF0aWMgdm9pZCBtanBlZ19yZWNvcmRfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGlu
dDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1s1XSwgNSk7
CiAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1s5XSwgOSk7CiAKLSAgICAgICAgaWYgKDE2
KnMtPm1iX3grOCA8IHMtPndpZHRoKSB7CisgICAgICAgIGlmICgxNipzLT5jLm1iX3grOCA8IHMt
PmMud2lkdGgpIHsKICAgICAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1sxXSwgICAxKTsK
ICAgICAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1szXSwgICAzKTsKICAgICAgICAgICAg
IHJlY29yZF9ibG9jayhzLCBibG9ja1s2XSwgICA2KTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0
aWMgdm9pZCBtanBlZ19yZWNvcmRfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3Qg
YmxvY2tbXVs2NF0sCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1
OyBpKyspCiAgICAgICAgICAgICByZWNvcmRfYmxvY2socywgYmxvY2tbaV0sIGkpOwotICAgICAg
ICBpZiAocy0+Y2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIwKSB7CisgICAgICAgIGlmIChzLT5j
LmNocm9tYV9mb3JtYXQgPT0gQ0hST01BXzQyMCkgewogICAgICAgICAgICAgcmVjb3JkX2Jsb2Nr
KHMsIGJsb2NrWzVdLCA1KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlY29yZF9i
bG9jayhzLCBibG9ja1s2XSwgNik7CkBAIC00OTUsMTAgKzQ5NSwxMCBAQCBzdGF0aWMgdm9pZCBt
anBlZ19yZWNvcmRfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2
NF0sCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtanBlZ19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRl
eHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCitzdGF0aWMgdm9pZCBtanBlZ19lbmNv
ZGVfbWIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdW51c2VkX3gsIGludCB1bnVzZWRfeSkKIHsKLSAg
ICBpZiAocy0+Y2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDQ0KSB7CisgICAgaWYgKHMtPmMuY2hy
b21hX2Zvcm1hdCA9PSBDSFJPTUFfNDQ0KSB7CiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9j
a1swXSwgMCk7CiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1syXSwgMik7CiAgICAgICAg
IGVuY29kZV9ibG9jayhzLCBibG9ja1s0XSwgNCk7CkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGlj
IHZvaWQgbWpwZWdfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJs
b2NrW11bNjRdLAogICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbNV0sIDUpOwogICAgICAg
ICBlbmNvZGVfYmxvY2socywgYmxvY2tbOV0sIDkpOwogCi0gICAgICAgIGlmICgxNiAqIHMtPm1i
X3ggKyA4IDwgcy0+d2lkdGgpIHsKKyAgICAgICAgaWYgKDE2ICogcy0+Yy5tYl94ICsgOCA8IHMt
PmMud2lkdGgpIHsKICAgICAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1sxXSwgMSk7CiAg
ICAgICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbM10sIDMpOwogICAgICAgICAgICAgZW5j
b2RlX2Jsb2NrKHMsIGJsb2NrWzZdLCA2KTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBzdGF0aWMgdm9p
ZCBtanBlZ19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tb
XVs2NF0sCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKysp
CiAgICAgICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbaV0sIGkpOwotICAgICAgICBpZiAo
cy0+Y2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIwKSB7CisgICAgICAgIGlmIChzLT5jLmNocm9t
YV9mb3JtYXQgPT0gQ0hST01BXzQyMCkgewogICAgICAgICAgICAgZW5jb2RlX2Jsb2NrKHMsIGJs
b2NrWzVdLCA1KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVuY29kZV9ibG9jayhz
LCBibG9ja1s2XSwgNik7CkBAIC01MzMsNyArNTMzLDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IG1q
cGVnX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAgICBNSlBFR0VuY0Nv
bnRleHQgKmNvbnN0IG0yID0gYXZjdHgtPnByaXZfZGF0YTsKICAgICBNSnBlZ0NvbnRleHQgICAg
KmNvbnN0IG0gID0gJm0yLT5tanBlZzsKLSAgICBNcGVnRW5jQ29udGV4dCAgKmNvbnN0IHMgID0g
Jm0yLT5tcGVnLnM7CisgICAgTVBWRW5jQ29udGV4dCAgKmNvbnN0IHMgID0gJm0yLT5tcGVnLnM7
CiAgICAgaW50IHJldDsKIAogICAgIHMtPm1qcGVnX2N0eCA9IG07CkBAIC01OTcsNyArNTk3LDcg
QEAgc3RhdGljIGF2X2NvbGQgaW50IG1qcGVnX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICph
dmN0eCkKICAgICAvLyBCdWZmZXJzIHN0YXJ0IG91dCBlbXB0eS4KICAgICBtLT5odWZmX25jb2Rl
ID0gMDsKIAotICAgIGlmIChzLT5zbGljZV9jb250ZXh0X2NvdW50ID4gMSkKKyAgICBpZiAocy0+
Yy5zbGljZV9jb250ZXh0X2NvdW50ID4gMSkKICAgICAgICAgbS0+aHVmZm1hbiA9IEhVRkZNQU5f
VEFCTEVfREVGQVVMVDsKIAogICAgIGlmIChtLT5odWZmbWFuID09IEhVRkZNQU5fVEFCTEVfT1BU
SU1BTCkgewpAQCAtNjE1LDcgKzYxNSw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBtanBlZ19lbmNv
ZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiBzdGF0aWMgaW50IGFtdl9lbmNvZGVfcGlj
dHVyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpwaWNfYXJnLCBpbnQgKmdvdF9wYWNrZXQp
CiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIE1QVkVu
Y0NvbnRleHQgKmNvbnN0IHMgPSBhdmN0eC0+cHJpdl9kYXRhOwogICAgIEFWRnJhbWUgKnBpYzsK
ICAgICBpbnQgaSwgcmV0OwogICAgIGludCBjaHJvbWFfdl9zaGlmdCA9IDE7IC8qIEFNViBpcyA0
MjAtb25seSAqLwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBpbnQgYW12X2VuY29kZV9waWN0
dXJlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAvL3BpY3R1cmUg
c2hvdWxkIGJlIGZsaXBwZWQgdXBzaWRlLWRvd24KICAgICBmb3IoaT0wOyBpIDwgMzsgaSsrKSB7
CiAgICAgICAgIGludCB2c2FtcGxlID0gaSA/IDIgPj4gY2hyb21hX3Zfc2hpZnQgOiAyOwotICAg
ICAgICBwaWMtPmRhdGFbaV0gKz0gcGljLT5saW5lc2l6ZVtpXSAqICh2c2FtcGxlICogcy0+aGVp
Z2h0IC8gVl9NQVggLSAxKTsKKyAgICAgICAgcGljLT5kYXRhW2ldICs9IHBpYy0+bGluZXNpemVb
aV0gKiAodnNhbXBsZSAqIHMtPmMuaGVpZ2h0IC8gVl9NQVggLSAxKTsKICAgICAgICAgcGljLT5s
aW5lc2l6ZVtpXSAqPSAtMTsKICAgICB9CiAgICAgcmV0ID0gZmZfbXB2X2VuY29kZV9waWN0dXJl
KGF2Y3R4LCBwa3QsIHBpYywgZ290X3BhY2tldCk7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21q
cGVnZW5jLmggYi9saWJhdmNvZGVjL21qcGVnZW5jLmgKaW5kZXggY2VhY2JhOTg5My4uOTJmZWVk
MjhiNCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tanBlZ2VuYy5oCisrKyBiL2xpYmF2Y29kZWMv
bWpwZWdlbmMuaApAQCAtNTYsOSArNTYsOSBAQCB0eXBlZGVmIHN0cnVjdCBNSnBlZ0NvbnRleHQg
ewogICAgIHVpbnQ4X3QgaHVmZl9zaXplX2FjX2Nocm9taW5hbmNlWzI1Nl07ICAvLy88IEFDIGNo
cm9taW5hbmNlIEh1ZmZtYW4gdGFibGUgc2l6ZS4KICAgICB1aW50MTZfdCBodWZmX2NvZGVfYWNf
Y2hyb21pbmFuY2VbMjU2XTsgLy8vPCBBQyBjaHJvbWluYW5jZSBIdWZmbWFuIHRhYmxlIGNvZGVz
LgogCi0gICAgLyoqIFN0b3JhZ2UgZm9yIEFDIGx1bWluYW5jZSBWTEMgKGluIE1wZWdFbmNDb250
ZXh0KSAqLworICAgIC8qKiBTdG9yYWdlIGZvciBBQyBsdW1pbmFuY2UgVkxDICovCiAgICAgdWlu
dDhfdCB1bmlfYWNfdmxjX2xlbls2NCAqIDY0ICogMl07Ci0gICAgLyoqIFN0b3JhZ2UgZm9yIEFD
IGNocm9taW5hbmNlIFZMQyAoaW4gTXBlZ0VuY0NvbnRleHQpICovCisgICAgLyoqIFN0b3JhZ2Ug
Zm9yIEFDIGNocm9taW5hbmNlIFZMQyAqLwogICAgIHVpbnQ4X3QgdW5pX2Nocm9tYV9hY192bGNf
bGVuWzY0ICogNjQgKiAyXTsKIAogICAgIC8vIERlZmF1bHQgREMgdGFibGVzIGhhdmUgZXhhY3Rs
eSAxMiB2YWx1ZXMKQEAgLTkyLDggKzkyLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dF9tYXJr
ZXIoUHV0Qml0Q29udGV4dCAqcCwgZW51bSBKcGVnTWFya2VyIGNvZGUpCiAgICAgcHV0X2JpdHMo
cCwgOCwgY29kZSk7CiB9CiAKLXR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IE1wZWdFbmND
b250ZXh0OwordHlwZWRlZiBzdHJ1Y3QgTVBWRW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OwogCi1p
bnQgIGZmX21qcGVnX2VuY29kZV9zdHVmZmluZyhNcGVnRW5jQ29udGV4dCAqcyk7CitpbnQgZmZf
bWpwZWdfZW5jb2RlX3N0dWZmaW5nKE1QVkVuY0NvbnRleHQgKnMpOwogCiAjZW5kaWYgLyogQVZD
T0RFQ19NSlBFR0VOQ19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21vdGlvbl9lc3QuYyBi
L2xpYmF2Y29kZWMvbW90aW9uX2VzdC5jCmluZGV4IGZmYWQzZGJjNzkuLjkyM2JmNTY4N2IgMTAw
NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbW90aW9uX2VzdC5jCisrKyBiL2xpYmF2Y29kZWMvbW90aW9u
X2VzdC5jCkBAIC00Niw3ICs0Niw3IEBACiAjZGVmaW5lIE1FX01BUF9TSElGVCAzCiAjZGVmaW5l
IE1FX01BUF9NVl9CSVRTIDExCiAKLXN0YXRpYyBpbnQgc2FkX2hwZWxfbW90aW9uX3NlYXJjaChN
cGVnRW5jQ29udGV4dCAqIHMsCitzdGF0aWMgaW50IHNhZF9ocGVsX21vdGlvbl9zZWFyY2goTVBW
RW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgKm14X3B0ciwgaW50ICpteV9wdHIsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBoKTsKQEAgLTEwNiwxMCArMTA2LDEw
IEBAIHN0YXRpYyBpbnQgZ2V0X2ZsYWdzKE1vdGlvbkVzdENvbnRleHQgKmMsIGludCBkaXJlY3Qs
IGludCBjaHJvbWEpewogICAgICAgICAgICArIChjaHJvbWEgPyBGTEFHX0NIUk9NQSA6IDApOwog
fQogCi1zdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2RpcmVjdF9pbmxpbmUoTXBlZ0Vu
Y0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1YngsIGNv
bnN0IGludCBzdWJ5LAorc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNtcF9kaXJlY3RfaW5s
aW5lKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29u
c3QgaW50IHN1YngsIGNvbnN0IGludCBzdWJ5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludCBzaXplLCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hy
b21hX2NtcF9mdW5jLCBpbnQgcXBlbCl7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9
ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7CiAgICAg
Y29uc3QgaW50IHN0cmlkZT0gYy0+c3RyaWRlOwogICAgIGNvbnN0IGludCBoeCA9IHN1YnggKyB4
ICogKDEgPDwgKDEgKyBxcGVsKSk7CiAgICAgY29uc3QgaW50IGh5ID0gc3VieSArIHkgKiAoMSA8
PCAoMSArIHFwZWwpKTsKQEAgLTExOSwxMCArMTE5LDEwIEBAIHN0YXRpYyBhdl9hbHdheXNfaW5s
aW5lIGludCBjbXBfZGlyZWN0X2lubGluZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgs
IGNvCiAgICAgLy9GSVhNRSBjaGVjayBjaHJvbWEgNG12LCAobm8gY3Jhc2hlcyAuLi4pCiAgICAg
ICAgIGF2X2Fzc2VydDIoeCA+PSBjLT54bWluICYmIGh4IDw9IGMtPnhtYXg8PChxcGVsKzEpICYm
IHkgPj0gYy0+eW1pbiAmJiBoeSA8PSBjLT55bWF4PDwocXBlbCsxKSk7CiAgICAgICAgIGlmKHgg
Pj0gYy0+eG1pbiAmJiBoeCA8PSBjLT54bWF4PDwocXBlbCsxKSAmJiB5ID49IGMtPnltaW4gJiYg
aHkgPD0gYy0+eW1heDw8KHFwZWwrMSkpewotICAgICAgICAgICAgY29uc3QgaW50IHRpbWVfcHA9
IHMtPnBwX3RpbWU7Ci0gICAgICAgICAgICBjb25zdCBpbnQgdGltZV9wYj0gcy0+cGJfdGltZTsK
KyAgICAgICAgICAgIGNvbnN0IGludCB0aW1lX3BwID0gcy0+Yy5wcF90aW1lOworICAgICAgICAg
ICAgY29uc3QgaW50IHRpbWVfcGIgPSBzLT5jLnBiX3RpbWU7CiAgICAgICAgICAgICBjb25zdCBp
bnQgbWFzaz0gMipxcGVsKzE7Ci0gICAgICAgICAgICBpZihzLT5tdl90eXBlPT1NVl9UWVBFXzhY
OCl7CisgICAgICAgICAgICBpZiAocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfOFg4KSB7CiAgICAg
ICAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgICAgICAgZm9yKGk9MDsgaTw0OyBpKyspewog
ICAgICAgICAgICAgICAgICAgICBpbnQgZnggPSBjLT5kaXJlY3RfYmFzaXNfbXZbaV1bMF0gKyBo
eDsKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBjbXBf
ZGlyZWN0X2lubGluZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgsIGNvCiAgICAgICAg
ICAgICAgICAgICAgIGMtPnFwZWxfYXZnWzFdW2J4eV0oYy0+dGVtcCAgICAgKyA4KnN0cmlkZSwg
cmVmWzhdICsgKGJ4Pj4yKSArIChieT4+Mikqc3RyaWRlICAgICArIDgqc3RyaWRlLCBzdHJpZGUp
OwogICAgICAgICAgICAgICAgICAgICBjLT5xcGVsX2F2Z1sxXVtieHldKGMtPnRlbXAgKyA4ICsg
OCpzdHJpZGUsIHJlZls4XSArIChieD4+MikgKyAoYnk+PjIpKnN0cmlkZSArIDggKyA4KnN0cmlk
ZSwgc3RyaWRlKTsKICAgICAgICAgICAgICAgICB9ZWxzZXsKLSAgICAgICAgICAgICAgICAgICAg
YXZfYXNzZXJ0MigoZng+PjEpICsgMTYqcy0+bWJfeCA+PSAtMTYpOwotICAgICAgICAgICAgICAg
ICAgICBhdl9hc3NlcnQyKChmeT4+MSkgKyAxNipzLT5tYl95ID49IC0xNik7Ci0gICAgICAgICAg
ICAgICAgICAgIGF2X2Fzc2VydDIoKGZ4Pj4xKSArIDE2KnMtPm1iX3ggPD0gcy0+d2lkdGgpOwot
ICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKChmeT4+MSkgKyAxNipzLT5tYl95IDw9IHMt
PmhlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoKGJ4Pj4xKSArIDE2KnMt
Pm1iX3ggPj0gLTE2KTsKLSAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MigoYnk+PjEpICsg
MTYqcy0+bWJfeSA+PSAtMTYpOwotICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKChieD4+
MSkgKyAxNipzLT5tYl94IDw9IHMtPndpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgYXZfYXNz
ZXJ0MigoYnk+PjEpICsgMTYqcy0+bWJfeSA8PSBzLT5oZWlnaHQpOworICAgICAgICAgICAgICAg
ICAgICBhdl9hc3NlcnQyKChmeD4+MSkgKyAxNipzLT5jLm1iX3ggPj0gLTE2KTsKKyAgICAgICAg
ICAgICAgICAgICAgYXZfYXNzZXJ0MigoZnk+PjEpICsgMTYqcy0+Yy5tYl95ID49IC0xNik7Cisg
ICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoKGZ4Pj4xKSArIDE2KnMtPmMubWJfeCA8PSBz
LT5jLndpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MigoZnk+PjEpICsgMTYq
cy0+Yy5tYl95IDw9IHMtPmMuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0
MigoYng+PjEpICsgMTYqcy0+Yy5tYl94ID49IC0xNik7CisgICAgICAgICAgICAgICAgICAgIGF2
X2Fzc2VydDIoKGJ5Pj4xKSArIDE2KnMtPmMubWJfeSA+PSAtMTYpOworICAgICAgICAgICAgICAg
ICAgICBhdl9hc3NlcnQyKChieD4+MSkgKyAxNipzLT5jLm1iX3ggPD0gcy0+Yy53aWR0aCk7Cisg
ICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoKGJ5Pj4xKSArIDE2KnMtPmMubWJfeSA8PSBz
LT5jLmhlaWdodCk7CiAKICAgICAgICAgICAgICAgICAgICAgYy0+aHBlbF9wdXRbMF1bZnh5XShj
LT50ZW1wLCByZWZbMF0gKyAoZng+PjEpICsgKGZ5Pj4xKSpzdHJpZGUsIHN0cmlkZSwgMTYpOwog
ICAgICAgICAgICAgICAgICAgICBjLT5ocGVsX2F2Z1swXVtieHldKGMtPnRlbXAsIHJlZls4XSAr
IChieD4+MSkgKyAoYnk+PjEpKnN0cmlkZSwgc3RyaWRlLCAxNik7CkBAIC0xNzgsMTAgKzE3OCwx
MCBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2RpcmVjdF9pbmxpbmUoTXBlZ0Vu
Y0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjbwogICAgIHJldHVybiBkOwogfQogCi1zdGF0aWMg
YXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2lubGluZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3Qg
aW50IHgsIGNvbnN0IGludCB5LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCitzdGF0
aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2lubGluZShNUFZFbmNDb250ZXh0ICpjb25zdCBz
LCBjb25zdCBpbnQgeCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3Vi
eSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZSwgY29uc3QgaW50IGgsIGlu
dCByZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgbWVfY21w
X2Z1bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9tYV9jbXBfZnVuYywgaW50IHFwZWwsIGlu
dCBjaHJvbWEpewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAg
TW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGNvbnN0IGludCBzdHJp
ZGU9IGMtPnN0cmlkZTsKICAgICBjb25zdCBpbnQgdXZzdHJpZGU9IGMtPnV2c3RyaWRlOwogICAg
IGNvbnN0IGludCBkeHk9IHN1YnggKyAoc3VieTw8KDErcXBlbCkpOyAvL0ZJWE1FIGxvZzJfc3Vi
cGVsPwpAQCAtMjMwLDEzICsyMzAsMTMgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNt
cF9pbmxpbmUoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQKICAgICBy
ZXR1cm4gZDsKIH0KIAotc3RhdGljIGludCBjbXBfc2ltcGxlKE1wZWdFbmNDb250ZXh0ICpzLCBj
b25zdCBpbnQgeCwgY29uc3QgaW50IHksCitzdGF0aWMgaW50IGNtcF9zaW1wbGUoTVBWRW5jQ29u
dGV4dCAqY29uc3QgcywgY29uc3QgaW50IHgsIGNvbnN0IGludCB5LAogICAgICAgICAgICAgICAg
ICAgICAgIGludCByZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgbWVfY21wX2Z1bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9tYV9jbXBfZnVuYyl7CiAg
ICAgcmV0dXJuIGNtcF9pbmxpbmUocyx4LHksMCwwLDAsMTYscmVmX2luZGV4LHNyY19pbmRleCwg
Y21wX2Z1bmMsIGNocm9tYV9jbXBfZnVuYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbnQgY21wX2Zw
ZWxfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwK
K3N0YXRpYyBpbnQgY21wX2ZwZWxfaW50ZXJuYWwoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29u
c3QgaW50IHgsIGNvbnN0IGludCB5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBz
aXplLCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hyb21hX2Nt
cF9mdW5jLCBjb25zdCBpbnQgZmxhZ3MpewogICAgIGlmKGZsYWdzJkZMQUdfRElSRUNUKXsKQEAg
LTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgaW50IGNtcF9mcGVsX2ludGVybmFsKE1wZWdFbmNDb250
ZXh0ICpzLCBjb25zdCBpbnQgeCwgY29uc3QgaW50IHksCiAgICAgfQogfQogCi1zdGF0aWMgaW50
IGNtcF9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgsIGNvbnN0IGludCB5
LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCitzdGF0aWMgaW50IGNtcF9pbnRlcm5h
bChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCBpbnQgeCwgY29uc3QgaW50IHksIGNvbnN0
IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgc2l6ZSwgY29uc3QgaW50IGgsIGludCByZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgbWVfY21wX2Z1bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9t
YV9jbXBfZnVuYywgY29uc3QgaW50IGZsYWdzKXsKICAgICBpZihmbGFncyZGTEFHX0RJUkVDVCl7
CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIGludCBjbXBfaW50ZXJuYWwoTXBlZ0VuY0NvbnRl
eHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHMKIC8qKiBAYnJpZWYg
Y29tcGFyZXMgYSBibG9jayAoZWl0aGVyIGEgZnVsbCBtYWNyb2Jsb2NrIG9yIGEgcGFydGl0aW9u
IHRoZXJlb2YpCiAgICAgYWdhaW5zdCBhIHByb3Bvc2VkIG1vdGlvbi1jb21wZW5zYXRlZCBwcmVk
aWN0aW9uIG9mIHRoYXQgYmxvY2sKICAqLwotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNt
cChNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgsIGNvbnN0IGludCB5LCBjb25zdCBpbnQg
c3VieCwgY29uc3QgaW50IHN1YnksCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wKE1Q
VkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50
IHN1YngsIGNvbnN0IGludCBzdWJ5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBz
aXplLCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hyb21hX2Nt
cF9mdW5jLCBjb25zdCBpbnQgZmxhZ3MpewogICAgIGlmKGF2X2J1aWx0aW5fY29uc3RhbnRfcChm
bGFncykgJiYgYXZfYnVpbHRpbl9jb25zdGFudF9wKGgpICYmIGF2X2J1aWx0aW5fY29uc3RhbnRf
cChzaXplKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBj
bXAoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uCiAgICAg
fQogfQogCi1zdGF0aWMgaW50IGNtcF9ocGVsKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCBpbnQg
eCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKK3N0YXRpYyBp
bnQgY21wX2hwZWwoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50IHgsIGNvbnN0IGlu
dCB5LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCiAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50IHNpemUsIGNvbnN0IGludCBoLCBpbnQgcmVmX2luZGV4LCBpbnQgc3JjX2lu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgIG1lX2NtcF9mdW5jIGNtcF9mdW5jLCBtZV9jbXBf
ZnVuYyBjaHJvbWFfY21wX2Z1bmMsIGNvbnN0IGludCBmbGFncyl7CiAgICAgaWYoZmxhZ3MmRkxB
R19ESVJFQ1QpewpAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBpbnQgY21wX2hwZWwoTXBlZ0Vu
Y0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1YngsCiAg
ICAgfQogfQogCi1zdGF0aWMgaW50IGNtcF9xcGVsKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCBp
bnQgeCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKK3N0YXRp
YyBpbnQgY21wX3FwZWwoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50IHgsIGNvbnN0
IGludCB5LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50IHNpemUsIGNvbnN0IGludCBoLCBpbnQgcmVmX2luZGV4LCBpbnQgc3Jj
X2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgIG1lX2NtcF9mdW5jIGNtcF9mdW5jLCBtZV9j
bXBfZnVuYyBjaHJvbWFfY21wX2Z1bmMsIGNvbnN0IGludCBmbGFncyl7CiAgICAgaWYoZmxhZ3Mm
RkxBR19ESVJFQ1QpewpAQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBpbnQgY21wX3FwZWwoTXBl
Z0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1Yngs
CiAKICNpbmNsdWRlICJtb3Rpb25fZXN0X3RlbXBsYXRlLmMiCiAKLXN0YXRpYyBpbnQgemVyb19j
bXAoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmEsIGNvbnN0IHVpbnQ4X3QgKmIs
CitzdGF0aWMgaW50IHplcm9fY21wKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4
X3QgKmEsIGNvbnN0IHVpbnQ4X3QgKmIsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBz
dHJpZGUsIGludCBoKQogewogICAgIHJldHVybiAwOwpAQCAtMzY3LDMyICszNjcsMzIgQEAgYXZf
Y29sZCBpbnQgZmZfbWVfaW5pdChNb3Rpb25Fc3RDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAq
YXZjdHgsCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgZmZfbWVfaW5pdF9waWMoTXBlZ0VuY0Nv
bnRleHQgKnMpCit2b2lkIGZmX21lX2luaXRfcGljKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7
Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RD
b250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAKLS8qRklYTUUgcy0+bm9fcm91bmRpbmcgYl90
eXBlKi8KKy8qRklYTUUgcy0+Yy5ub19yb3VuZGluZyBiX3R5cGUqLwogICAgIGlmIChjLT5hdmN0
eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQRUwpIHsKLSAgICAgICAgYy0+cXBlbF9hdmcgPSBz
LT5xZHNwLmF2Z19xcGVsX3BpeGVsc190YWI7Ci0gICAgICAgIGlmIChzLT5ub19yb3VuZGluZykK
LSAgICAgICAgICAgIGMtPnFwZWxfcHV0ID0gcy0+cWRzcC5wdXRfbm9fcm5kX3FwZWxfcGl4ZWxz
X3RhYjsKKyAgICAgICAgYy0+cXBlbF9hdmcgPSBzLT5jLnFkc3AuYXZnX3FwZWxfcGl4ZWxzX3Rh
YjsKKyAgICAgICAgaWYgKHMtPmMubm9fcm91bmRpbmcpCisgICAgICAgICAgICBjLT5xcGVsX3B1
dCA9IHMtPmMucWRzcC5wdXRfbm9fcm5kX3FwZWxfcGl4ZWxzX3RhYjsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYy0+cXBlbF9wdXQgPSBzLT5xZHNwLnB1dF9xcGVsX3BpeGVsc190YWI7Cisg
ICAgICAgICAgICBjLT5xcGVsX3B1dCA9IHMtPmMucWRzcC5wdXRfcXBlbF9waXhlbHNfdGFiOwog
ICAgIH0KLSAgICBjLT5ocGVsX2F2ZyA9IHMtPmhkc3AuYXZnX3BpeGVsc190YWI7Ci0gICAgaWYg
KHMtPm5vX3JvdW5kaW5nKQotICAgICAgICBjLT5ocGVsX3B1dCA9IHMtPmhkc3AucHV0X25vX3Ju
ZF9waXhlbHNfdGFiOworICAgIGMtPmhwZWxfYXZnID0gcy0+Yy5oZHNwLmF2Z19waXhlbHNfdGFi
OworICAgIGlmIChzLT5jLm5vX3JvdW5kaW5nKQorICAgICAgICBjLT5ocGVsX3B1dCA9IHMtPmMu
aGRzcC5wdXRfbm9fcm5kX3BpeGVsc190YWI7CiAgICAgZWxzZQotICAgICAgICBjLT5ocGVsX3B1
dCA9IHMtPmhkc3AucHV0X3BpeGVsc190YWI7CisgICAgICAgIGMtPmhwZWxfcHV0ID0gcy0+Yy5o
ZHNwLnB1dF9waXhlbHNfdGFiOwogCi0gICAgaWYocy0+bGluZXNpemUpewotICAgICAgICBjLT5z
dHJpZGUgID0gcy0+bGluZXNpemU7Ci0gICAgICAgIGMtPnV2c3RyaWRlPSBzLT51dmxpbmVzaXpl
OworICAgIGlmIChzLT5jLmxpbmVzaXplKSB7CisgICAgICAgIGMtPnN0cmlkZSAgID0gcy0+Yy5s
aW5lc2l6ZTsKKyAgICAgICAgYy0+dXZzdHJpZGUgPSBzLT5jLnV2bGluZXNpemU7CiAgICAgfWVs
c2V7Ci0gICAgICAgIGMtPnN0cmlkZSAgPSAxNipzLT5tYl93aWR0aCArIDMyOwotICAgICAgICBj
LT51dnN0cmlkZT0gIDgqcy0+bWJfd2lkdGggKyAxNjsKKyAgICAgICAgYy0+c3RyaWRlICAgPSAx
NipzLT5jLm1iX3dpZHRoICsgMzI7CisgICAgICAgIGMtPnV2c3RyaWRlID0gIDgqcy0+Yy5tYl93
aWR0aCArIDE2OwogICAgIH0KLSAgICBpZiAocy0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfU05P
VykgeworICAgIGlmIChzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1NOT1cpIHsKICAgICAg
ICAgYy0+aHBlbF9wdXRbMl1bMF09IGMtPmhwZWxfcHV0WzJdWzFdPQogICAgICAgICBjLT5ocGVs
X3B1dFsyXVsyXT0gYy0+aHBlbF9wdXRbMl1bM109IHplcm9faHBlbDsKICAgICB9CkBAIC00MDUs
MTIgKzQwNSwxMiBAQCB2b2lkIGZmX21lX2luaXRfcGljKE1wZWdFbmNDb250ZXh0ICpzKQogICAg
IENPUFkzX0lGX0xUKGRtaW5oLCBkLCBkeCwgeCwgZHksIHkpXAogfQogCi1zdGF0aWMgaW50IHNh
ZF9ocGVsX21vdGlvbl9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLAorc3RhdGljIGludCBzYWRf
aHBlbF9tb3Rpb25fc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ICpteF9wdHIsIGludCAqbXlfcHRyLCBpbnQgZG1pbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVm
X2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQg
aCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlv
bkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKICAgICBjb25zdCBpbnQgcGVuYWx0eV9m
YWN0b3I9IGMtPnN1Yl9wZW5hbHR5X2ZhY3RvcjsKICAgICBpbnQgbXgsIG15LCBkbWluaDsKICAg
ICBjb25zdCB1aW50OF90ICpwaXgsICpwdHI7CkBAIC01MTAsNTggKzUxMCw1OCBAQCBzdGF0aWMg
aW50IHNhZF9ocGVsX21vdGlvbl9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIHJldHVy
biBkbWluaDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldF9wX212X3RhYmxlcyhNcGVnRW5j
Q29udGV4dCAqIHMsIGludCBteCwgaW50IG15LCBpbnQgbXY0KQorc3RhdGljIGlubGluZSB2b2lk
IHNldF9wX212X3RhYmxlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgbXgsIGludCBteSwg
aW50IG12NCkKIHsKLSAgICBjb25zdCBpbnQgeHk9IHMtPm1iX3ggKyBzLT5tYl95KnMtPm1iX3N0
cmlkZTsKKyAgICBjb25zdCBpbnQgeHkgPSBzLT5jLm1iX3ggKyBzLT5jLm1iX3kgKiBzLT5jLm1i
X3N0cmlkZTsKIAogICAgIHMtPnBfbXZfdGFibGVbeHldWzBdID0gbXg7CiAgICAgcy0+cF9tdl90
YWJsZVt4eV1bMV0gPSBteTsKIAogICAgIC8qIGhhcyBhbHJlYWR5IGJlZW4gc2V0IHRvIHRoZSA0
IE1WIGlmIDRNViBpcyBkb25lICovCiAgICAgaWYobXY0KXsKLSAgICAgICAgaW50IG1vdF94eT0g
cy0+YmxvY2tfaW5kZXhbMF07Ci0KLSAgICAgICAgcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21v
dF94eSAgICBdWzBdID0gbXg7Ci0gICAgICAgIHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3Rf
eHkgICAgXVsxXSA9IG15OwotICAgICAgICBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5
ICsgMV1bMF0gPSBteDsKLSAgICAgICAgcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAr
IDFdWzFdID0gbXk7Ci0KLSAgICAgICAgbW90X3h5ICs9IHMtPmI4X3N0cmlkZTsKLSAgICAgICAg
cy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAgICBdWzBdID0gbXg7Ci0gICAgICAgIHMt
PmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgICAgXVsxXSA9IG15OwotICAgICAgICBzLT5j
dXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5ICsgMV1bMF0gPSBteDsKLSAgICAgICAgcy0+Y3Vy
X3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSArIDFdWzFdID0gbXk7CisgICAgICAgIGludCBtb3Rf
eHkgPSBzLT5jLmJsb2NrX2luZGV4WzBdOworCisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f
dmFsWzBdW21vdF94eSAgICBdWzBdID0gbXg7CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f
dmFsWzBdW21vdF94eSAgICBdWzFdID0gbXk7CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f
dmFsWzBdW21vdF94eSArIDFdWzBdID0gbXg7CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f
dmFsWzBdW21vdF94eSArIDFdWzFdID0gbXk7CisKKyAgICAgICAgbW90X3h5ICs9IHMtPmMuYjhf
c3RyaWRlOworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgICAgXVsw
XSA9IG14OworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgICAgXVsx
XSA9IG15OworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgKyAxXVsw
XSA9IG14OworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgKyAxXVsx
XSA9IG15OwogICAgIH0KIH0KIAogLyoqCiAgKiBnZXQgZnVsbHBlbCBNRSBzZWFyY2ggbGltaXRz
LgogICovCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2V0X2xpbWl0cyhNcGVnRW5jQ29udGV4dCAqcywg
aW50IHgsIGludCB5LCBpbnQgYmZyYW1lKQorc3RhdGljIGlubGluZSB2b2lkIGdldF9saW1pdHMo
TVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IHgsIGludCB5LCBpbnQgYmZyYW1lKQogewotICAg
IE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4
dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGludCByYW5nZT0gYy0+YXZjdHgtPm1lX3Jhbmdl
ID4+ICgxICsgISEoYy0+ZmxhZ3MmRkxBR19RUEVMKSk7CiAgICAgaW50IG1heF9yYW5nZSA9IE1B
WF9NViA+PiAoMSArICEhKGMtPmZsYWdzJkZMQUdfUVBFTCkpOwogLyoKICAgICBpZihjLT5hdmN0
eC0+bWVfcmFuZ2UpIGMtPnJhbmdlPSBjLT5hdmN0eC0+bWVfcmFuZ2UgPj4gMTsKICAgICBlbHNl
ICAgICAgICAgICAgICAgICAgIGMtPnJhbmdlPSAxNjsKICovCi0gICAgaWYgKHMtPnVucmVzdHJp
Y3RlZF9tdikgeworICAgIGlmIChzLT5jLnVucmVzdHJpY3RlZF9tdikgewogICAgICAgICBjLT54
bWluID0gLSB4IC0gMTY7CiAgICAgICAgIGMtPnltaW4gPSAtIHkgLSAxNjsKLSAgICAgICAgYy0+
eG1heCA9IC0geCArIHMtPndpZHRoOwotICAgICAgICBjLT55bWF4ID0gLSB5ICsgcy0+aGVpZ2h0
OwotICAgIH0gZWxzZSBpZiAoIShhdl9idWlsdGluX2NvbnN0YW50X3AoYmZyYW1lKSAmJiBiZnJh
bWUpICYmIHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpeworICAgICAgICBjLT54bWF4ID0gLSB4
ICsgcy0+Yy53aWR0aDsKKyAgICAgICAgYy0+eW1heCA9IC0geSArIHMtPmMuaGVpZ2h0OworICAg
IH0gZWxzZSBpZiAoIShhdl9idWlsdGluX2NvbnN0YW50X3AoYmZyYW1lKSAmJiBiZnJhbWUpICYm
IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSl7CiAgICAgICAgIC8vIFNlYXJjaCByYW5nZSBv
ZiBILjI2MSBpcyBkaWZmZXJlbnQgZnJvbSBvdGhlciBjb2RlYyBzdGFuZGFyZHMKICAgICAgICAg
Yy0+eG1pbiA9ICh4ID4gMTUpID8gLSAxNSA6IDA7CiAgICAgICAgIGMtPnltaW4gPSAoeSA+IDE1
KSA/IC0gMTUgOiAwOwotICAgICAgICBjLT54bWF4ID0gKHggPCBzLT5tYl93aWR0aCAqIDE2IC0g
MTYpID8gMTUgOiAwOwotICAgICAgICBjLT55bWF4ID0gKHkgPCBzLT5tYl9oZWlnaHQgKiAxNiAt
IDE2KSA/IDE1IDogMDsKKyAgICAgICAgYy0+eG1heCA9ICh4IDwgcy0+Yy5tYl93aWR0aCAqIDE2
IC0gMTYpID8gMTUgOiAwOworICAgICAgICBjLT55bWF4ID0gKHkgPCBzLT5jLm1iX2hlaWdodCAq
IDE2IC0gMTYpID8gMTUgOiAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGMtPnhtaW4gPSAtIHg7
CiAgICAgICAgIGMtPnltaW4gPSAtIHk7Ci0gICAgICAgIGMtPnhtYXggPSAtIHggKyBzLT5tYl93
aWR0aCAqMTYgLSAxNjsKLSAgICAgICAgYy0+eW1heCA9IC0geSArIHMtPm1iX2hlaWdodCoxNiAt
IDE2OworICAgICAgICBjLT54bWF4ID0gLSB4ICsgcy0+Yy5tYl93aWR0aCAqMTYgLSAxNjsKKyAg
ICAgICAgYy0+eW1heCA9IC0geSArIHMtPmMubWJfaGVpZ2h0KjE2IC0gMTY7CiAgICAgfQogICAg
IGlmKCFyYW5nZSB8fCByYW5nZSA+IG1heF9yYW5nZSkKICAgICAgICAgcmFuZ2UgPSBtYXhfcmFu
Z2U7CkBAIC01ODQsOSArNTg0LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRfbXY0X3JlZihN
b3Rpb25Fc3RDb250ZXh0ICpjKXsKICAgICBjLT5zcmNbM11bMF0gPSBjLT5zcmNbMl1bMF0gKyA4
OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBoMjYzX212NF9zZWFyY2goTXBlZ0VuY0NvbnRleHQg
KnMsIGludCBteCwgaW50IG15LCBpbnQgc2hpZnQpCitzdGF0aWMgaW5saW5lIGludCBoMjYzX212
NF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG14LCBpbnQgbXksIGludCBzaGlm
dCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlv
bkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKICAgICBjb25zdCBpbnQgc2l6ZT0gMTsK
ICAgICBjb25zdCBpbnQgaD04OwogICAgIGludCBibG9jazsKQEAgLTU5NSw3ICs1OTUsNyBAQCBz
dGF0aWMgaW5saW5lIGludCBoMjYzX212NF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKnMsIGludCBt
eCwgaW50IG15LCBpbnQgc2hpZnQpCiAgICAgaW50IHNhbWU9MTsKICAgICBjb25zdCBpbnQgc3Ry
aWRlPSBjLT5zdHJpZGU7CiAgICAgY29uc3QgdWludDhfdCAqbXZfcGVuYWx0eSA9IGMtPmN1cnJl
bnRfbXZfcGVuYWx0eTsKLSAgICBpbnQgc2FmZXR5X2NsaXBwaW5nPSBzLT51bnJlc3RyaWN0ZWRf
bXYgJiYgKHMtPndpZHRoJjE1KSAmJiAocy0+aGVpZ2h0JjE1KTsKKyAgICBpbnQgc2FmZXR5X2Ns
aXBwaW5nID0gcy0+Yy51bnJlc3RyaWN0ZWRfbXYgJiYgKHMtPmMud2lkdGgmMTUpICYmIChzLT5j
LmhlaWdodCYxNSk7CiAKICAgICBpbml0X212NF9yZWYoYyk7CiAKQEAgLTYwNCwyOCArNjA0LDI4
IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgyNjNfbXY0X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywg
aW50IG14LCBpbnQgbXksIGludCBzaGlmdCkKICAgICAgICAgaW50IHByZWRfeDQsIHByZWRfeTQ7
CiAgICAgICAgIGludCBkbWluNDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBvZmZbNF09IHsy
LCAxLCAxLCAtMX07Ci0gICAgICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yjhfc3RyaWRl
OwotICAgICAgICBjb25zdCBpbnQgbW90X3h5ID0gcy0+YmxvY2tfaW5kZXhbYmxvY2tdOworICAg
ICAgICBjb25zdCBpbnQgbW90X3N0cmlkZSA9IHMtPmMuYjhfc3RyaWRlOworICAgICAgICBjb25z
dCBpbnQgbW90X3h5ID0gcy0+Yy5ibG9ja19pbmRleFtibG9ja107CiAKICAgICAgICAgaWYoc2Fm
ZXR5X2NsaXBwaW5nKXsKLSAgICAgICAgICAgIGMtPnhtYXggPSAtIDE2KnMtPm1iX3ggKyBzLT53
aWR0aCAgLSA4KihibG9jayAmMSk7Ci0gICAgICAgICAgICBjLT55bWF4ID0gLSAxNipzLT5tYl95
ICsgcy0+aGVpZ2h0IC0gOCooYmxvY2s+PjEpOworICAgICAgICAgICAgYy0+eG1heCA9IC0gMTYq
cy0+Yy5tYl94ICsgcy0+Yy53aWR0aCAgLSA4KihibG9jayAmMSk7CisgICAgICAgICAgICBjLT55
bWF4ID0gLSAxNipzLT5jLm1iX3kgKyBzLT5jLmhlaWdodCAtIDgqKGJsb2NrPj4xKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFBfTEVGVFswXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3Rf
eHkgLSAxXVswXTsKLSAgICAgICAgUF9MRUZUWzFdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBd
W21vdF94eSAtIDFdWzFdOworICAgICAgICBQX0xFRlRbMF0gPSBzLT5jLmN1cl9waWMubW90aW9u
X3ZhbFswXVttb3RfeHkgLSAxXVswXTsKKyAgICAgICAgUF9MRUZUWzFdID0gcy0+Yy5jdXJfcGlj
Lm1vdGlvbl92YWxbMF1bbW90X3h5IC0gMV1bMV07CiAKICAgICAgICAgaWYgKFBfTEVGVFswXSA+
IGMtPnhtYXggKiAoMSA8PCBzaGlmdCkpIFBfTEVGVFswXSA9IGMtPnhtYXggKiAoMSA8PCBzaGlm
dCk7CiAKICAgICAgICAgLyogc3BlY2lhbCBjYXNlIGZvciBmaXJzdCBsaW5lICovCi0gICAgICAg
IGlmIChzLT5maXJzdF9zbGljZV9saW5lICYmIGJsb2NrPDIpIHsKKyAgICAgICAgaWYgKHMtPmMu
Zmlyc3Rfc2xpY2VfbGluZSAmJiBibG9jayA8IDIpIHsKICAgICAgICAgICAgIGMtPnByZWRfeD0g
cHJlZF94ND0gUF9MRUZUWzBdOwogICAgICAgICAgICAgYy0+cHJlZF95PSBwcmVkX3k0PSBQX0xF
RlRbMV07CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQX1RPUFswXSAgICAgID0gcy0+
Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgICAgICAgICAgICAgXVsw
XTsKLSAgICAgICAgICAgIFBfVE9QWzFdICAgICAgPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1b
bW90X3h5IC0gbW90X3N0cmlkZSAgICAgICAgICAgICBdWzFdOwotICAgICAgICAgICAgUF9UT1BS
SUdIVFswXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgLSBtb3Rfc3RyaWRlICsg
b2ZmW2Jsb2NrXV1bMF07Ci0gICAgICAgICAgICBQX1RPUFJJR0hUWzFdID0gcy0+Y3VyX3BpYy5t
b3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgKyBvZmZbYmxvY2tdXVsxXTsKKyAgICAg
ICAgICAgIFBfVE9QWzBdICAgICAgPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkg
LSBtb3Rfc3RyaWRlICAgICAgICAgICAgIF1bMF07CisgICAgICAgICAgICBQX1RPUFsxXSAgICAg
ID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5IC0gbW90X3N0cmlkZSAgICAgICAg
ICAgICBdWzFdOworICAgICAgICAgICAgUF9UT1BSSUdIVFswXSA9IHMtPmMuY3VyX3BpYy5tb3Rp
b25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgKyBvZmZbYmxvY2tdXVswXTsKKyAgICAgICAg
ICAgIFBfVE9QUklHSFRbMV0gPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgLSBt
b3Rfc3RyaWRlICsgb2ZmW2Jsb2NrXV1bMV07CiAgICAgICAgICAgICBpZiAoUF9UT1BbMV0gICAg
ICA+IGMtPnltYXggKiAoMSA8PCBzaGlmdCkpIFBfVE9QWzFdICAgICAgPSBjLT55bWF4ICogKDEg
PDwgc2hpZnQpOwogICAgICAgICAgICAgaWYgKFBfVE9QUklHSFRbMF0gPCBjLT54bWluICogKDEg
PDwgc2hpZnQpKSBQX1RPUFJJR0hUWzBdID0gYy0+eG1pbiAqICgxIDw8IHNoaWZ0KTsKICAgICAg
ICAgICAgIGlmIChQX1RPUFJJR0hUWzBdID4gYy0+eG1heCAqICgxIDw8IHNoaWZ0KSkgUF9UT1BS
SUdIVFswXSA9IGMtPnhtYXggKiAoMSA8PCBzaGlmdCk7CkBAIC02NDEsNyArNjQxLDcgQEAgc3Rh
dGljIGlubGluZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgs
IGludCBteSwgaW50IHNoaWZ0KQogICAgICAgICBQX01WMVsxXT0gbXk7CiAgICAgICAgIGlmKHNh
ZmV0eV9jbGlwcGluZykKICAgICAgICAgICAgIGZvcihpPTE7IGk8MTA7IGkrKyl7Ci0gICAgICAg
ICAgICAgICAgaWYgKHMtPmZpcnN0X3NsaWNlX2xpbmUgJiYgYmxvY2s8MiAmJiBpPjEgJiYgaTw5
KQorICAgICAgICAgICAgICAgIGlmIChzLT5jLmZpcnN0X3NsaWNlX2xpbmUgJiYgYmxvY2sgPCAy
ICYmIGkgPiAxICYmIGkgPCA5KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBpZiAoaT40ICYmIGk8OSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC02NTcsNyArNjU3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1w
ZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwgaW50IHNoaWZ0KQogICAgICAgICAgICAg
aW50IGR4eTsKICAgICAgICAgICAgIGNvbnN0IGludCBvZmZzZXQ9ICgoYmxvY2smMSkgKyAoYmxv
Y2s+PjEpKnN0cmlkZSkqODsKICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RfeSA9IGMtPnNjcmF0
Y2hwYWQgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBpZihzLT5xdWFydGVyX3NhbXBsZSl7CisgICAg
ICAgICAgICBpZiAocy0+Yy5xdWFydGVyX3NhbXBsZSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnJlZiA9IGMtPnJlZltibG9ja11bMF0gKyAobXg0Pj4yKSArIChteTQ+PjIpKnN0
cmlkZTsKICAgICAgICAgICAgICAgICBkeHkgPSAoKG15NCAmIDMpIDw8IDIpIHwgKG14NCAmIDMp
OwogCkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIGlubGluZSBpbnQgaDI2M19tdjRfc2VhcmNo
KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwgaW50IHNoaWZ0KQogICAgICAgICB9
ZWxzZQogICAgICAgICAgICAgZG1pbl9zdW0rPSBkbWluNDsKIAotICAgICAgICBpZihzLT5xdWFy
dGVyX3NhbXBsZSl7CisgICAgICAgIGlmIChzLT5jLnF1YXJ0ZXJfc2FtcGxlKSB7CiAgICAgICAg
ICAgICBteDRfc3VtKz0gbXg0LzI7CiAgICAgICAgICAgICBteTRfc3VtKz0gbXk0LzI7CiAgICAg
ICAgIH1lbHNlewpAQCAtNjgwLDggKzY4MCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgyNjNfbXY0
X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzaGlmdCkKICAg
ICAgICAgICAgIG15NF9zdW0rPSBteTQ7CiAgICAgICAgIH0KIAotICAgICAgICBzLT5jdXJfcGlj
Lm1vdGlvbl92YWxbMF1bcy0+YmxvY2tfaW5kZXhbYmxvY2tdXVswXSA9IG14NDsKLSAgICAgICAg
cy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmJsb2NrX2luZGV4W2Jsb2NrXV1bMV0gPSBteTQ7
CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbYmxv
Y2tdXVswXSA9IG14NDsKKyAgICAgICAgcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5i
bG9ja19pbmRleFtibG9ja11dWzFdID0gbXk0OwogCiAgICAgICAgIGlmKG14NCAhPSBteCB8fCBt
eTQgIT0gbXkpIHNhbWU9MDsKICAgICB9CkBAIC02OTIsNyArNjkyLDcgQEAgc3RhdGljIGlubGlu
ZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwg
aW50IHNoaWZ0KQogICAgIGlmIChjLT5tZV9zdWJfY21wWzBdICE9IGMtPm1iX2NtcFswXSkgewog
ICAgICAgICBkbWluX3N1bSArPSBjLT5tYl9jbXBbMF0ocywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPm5ld19waWMtPmRhdGFbMF0gKwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+bWJfeCAqIDE2ICsgcy0+bWJfeSAqIDE2ICogc3RyaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl94ICogMTYgKyBzLT5jLm1iX3kgKiAx
NiAqIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPnNjcmF0Y2hw
YWQsIHN0cmlkZSwgMTYpOwogICAgIH0KIApAQCAtNzA1LDEzICs3MDUsMTMgQEAgc3RhdGljIGlu
bGluZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBt
eSwgaW50IHNoaWZ0KQogICAgICAgICBteT0gZmZfaDI2M19yb3VuZF9jaHJvbWEobXk0X3N1bSk7
CiAgICAgICAgIGR4eSA9ICgobXkgJiAxKSA8PCAxKSB8IChteCAmIDEpOwogCi0gICAgICAgIG9m
ZnNldD0gKHMtPm1iX3gqOCArIChteD4+MSkpICsgKHMtPm1iX3kqOCArIChteT4+MSkpKnMtPnV2
bGluZXNpemU7CisgICAgICAgIG9mZnNldCA9IChzLT5jLm1iX3gqOCArIChteD4+MSkpICsgKHMt
PmMubWJfeSo4ICsgKG15Pj4xKSkqcy0+Yy51dmxpbmVzaXplOwogCi0gICAgICAgIGMtPmhwZWxf
cHV0WzFdW2R4eV0oYy0+c2NyYXRjaHBhZCAgICAsIHMtPmxhc3RfcGljLmRhdGFbMV0gKyBvZmZz
ZXQsIHMtPnV2bGluZXNpemUsIDgpOwotICAgICAgICBjLT5ocGVsX3B1dFsxXVtkeHldKGMtPnNj
cmF0Y2hwYWQgKyA4LCBzLT5sYXN0X3BpYy5kYXRhWzJdICsgb2Zmc2V0LCBzLT51dmxpbmVzaXpl
LCA4KTsKKyAgICAgICAgYy0+aHBlbF9wdXRbMV1bZHh5XShjLT5zY3JhdGNocGFkICAgICwgcy0+
Yy5sYXN0X3BpYy5kYXRhWzFdICsgb2Zmc2V0LCBzLT5jLnV2bGluZXNpemUsIDgpOworICAgICAg
ICBjLT5ocGVsX3B1dFsxXVtkeHldKGMtPnNjcmF0Y2hwYWQgKyA4LCBzLT5jLmxhc3RfcGljLmRh
dGFbMl0gKyBvZmZzZXQsIHMtPmMudXZsaW5lc2l6ZSwgOCk7CiAKLSAgICAgICAgZG1pbl9zdW0g
Kz0gYy0+bWJfY21wWzFdKHMsIHMtPm5ld19waWMtPmRhdGFbMV0gKyBzLT5tYl94ICogOCArIHMt
Pm1iX3kgKiA4ICogcy0+dXZsaW5lc2l6ZSwgYy0+c2NyYXRjaHBhZCwgICAgIHMtPnV2bGluZXNp
emUsIDgpOwotICAgICAgICBkbWluX3N1bSArPSBjLT5tYl9jbXBbMV0ocywgcy0+bmV3X3BpYy0+
ZGF0YVsyXSArIHMtPm1iX3ggKiA4ICsgcy0+bWJfeSAqIDggKiBzLT51dmxpbmVzaXplLCBjLT5z
Y3JhdGNocGFkICsgOCwgcy0+dXZsaW5lc2l6ZSwgOCk7CisgICAgICAgIGRtaW5fc3VtICs9IGMt
Pm1iX2NtcFsxXShzLCBzLT5uZXdfcGljLT5kYXRhWzFdICsgcy0+Yy5tYl94ICogOCArIHMtPmMu
bWJfeSAqIDggKiBzLT5jLnV2bGluZXNpemUsIGMtPnNjcmF0Y2hwYWQsICAgICBzLT5jLnV2bGlu
ZXNpemUsIDgpOworICAgICAgICBkbWluX3N1bSArPSBjLT5tYl9jbXBbMV0ocywgcy0+bmV3X3Bp
Yy0+ZGF0YVsyXSArIHMtPmMubWJfeCAqIDggKyBzLT5jLm1iX3kgKiA4ICogcy0+Yy51dmxpbmVz
aXplLCBjLT5zY3JhdGNocGFkICsgOCwgcy0+Yy51dmxpbmVzaXplLCA4KTsKICAgICB9CiAKICAg
ICBjLT5wcmVkX3g9IG14OwpAQCAtNzE5LDcgKzcxOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgy
NjNfbXY0X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzaGlm
dCkKIAogICAgIHN3aXRjaChjLT5hdmN0eC0+bWJfY21wJjB4RkYpewogICAgIC8qY2FzZSBGRl9D
TVBfU1NFOgotICAgICAgICByZXR1cm4gZG1pbl9zdW0rIDMyKnMtPnFzY2FsZSpzLT5xc2NhbGU7
Ki8KKyAgICAgICAgcmV0dXJuIGRtaW5fc3VtKyAzMipzLT5jLnFzY2FsZSpzLT5jLnFzY2FsZTsq
LwogICAgIGNhc2UgRkZfQ01QX1JEOgogICAgICAgICByZXR1cm4gZG1pbl9zdW07CiAgICAgZGVm
YXVsdDoKQEAgLTcyNywzMyArNzI3LDM0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgyNjNfbXY0X3Nl
YXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzaGlmdCkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2ludGVybGFjZWRfcmVmKE1wZWdFbmNDb250
ZXh0ICpzLCBpbnQgcmVmX2luZGV4KXsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0g
JnMtPm1lOworc3RhdGljIGlubGluZSB2b2lkIGluaXRfaW50ZXJsYWNlZF9yZWYoTVBWRW5jQ29u
dGV4dCAqY29uc3QgcywgaW50IHJlZl9pbmRleCkKK3sKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpj
b25zdCBjID0gJnMtPmMubWU7CiAKLSAgICBjLT5yZWZbMStyZWZfaW5kZXhdWzBdID0gYy0+cmVm
WzArcmVmX2luZGV4XVswXSArIHMtPmxpbmVzaXplOwotICAgIGMtPnNyY1sxXVswXSA9IGMtPnNy
Y1swXVswXSArIHMtPmxpbmVzaXplOworICAgIGMtPnJlZlsxK3JlZl9pbmRleF1bMF0gPSBjLT5y
ZWZbMCtyZWZfaW5kZXhdWzBdICsgcy0+Yy5saW5lc2l6ZTsKKyAgICBjLT5zcmNbMV1bMF0gPSBj
LT5zcmNbMF1bMF0gKyBzLT5jLmxpbmVzaXplOwogICAgIGlmKGMtPmZsYWdzICYgRkxBR19DSFJP
TUEpewotICAgICAgICBjLT5yZWZbMStyZWZfaW5kZXhdWzFdID0gYy0+cmVmWzArcmVmX2luZGV4
XVsxXSArIHMtPnV2bGluZXNpemU7Ci0gICAgICAgIGMtPnJlZlsxK3JlZl9pbmRleF1bMl0gPSBj
LT5yZWZbMCtyZWZfaW5kZXhdWzJdICsgcy0+dXZsaW5lc2l6ZTsKLSAgICAgICAgYy0+c3JjWzFd
WzFdID0gYy0+c3JjWzBdWzFdICsgcy0+dXZsaW5lc2l6ZTsKLSAgICAgICAgYy0+c3JjWzFdWzJd
ID0gYy0+c3JjWzBdWzJdICsgcy0+dXZsaW5lc2l6ZTsKKyAgICAgICAgYy0+cmVmWzErcmVmX2lu
ZGV4XVsxXSA9IGMtPnJlZlswK3JlZl9pbmRleF1bMV0gKyBzLT5jLnV2bGluZXNpemU7CisgICAg
ICAgIGMtPnJlZlsxK3JlZl9pbmRleF1bMl0gPSBjLT5yZWZbMCtyZWZfaW5kZXhdWzJdICsgcy0+
Yy51dmxpbmVzaXplOworICAgICAgICBjLT5zcmNbMV1bMV0gPSBjLT5zcmNbMF1bMV0gKyBzLT5j
LnV2bGluZXNpemU7CisgICAgICAgIGMtPnNyY1sxXVsyXSA9IGMtPnNyY1swXVsyXSArIHMtPmMu
dXZsaW5lc2l6ZTsKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgaW50ZXJsYWNlZF9zZWFyY2goTXBl
Z0VuY0NvbnRleHQgKnMsIGludCByZWZfaW5kZXgsCitzdGF0aWMgaW50IGludGVybGFjZWRfc2Vh
cmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCByZWZfaW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDE2X3QgKCptdl90YWJsZXNbMl1bMl0pWzJdLCB1aW50OF90ICpm
aWVsZF9zZWxlY3RfdGFibGVzWzJdLCBpbnQgbXgsIGludCBteSwgaW50IHVzZXJfZmllbGRfc2Vs
ZWN0KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90
aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGNvbnN0IGludCBzaXplPTA7
CiAgICAgY29uc3QgaW50IGg9ODsKICAgICBpbnQgYmxvY2s7CiAgICAgaW50IFBbMTBdWzJdOwog
ICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9wZW5hbHR5ID0gYy0+Y3VycmVudF9tdl9wZW5h
bHR5OwogICAgIGludCBzYW1lPTE7Ci0gICAgY29uc3QgaW50IHN0cmlkZT0gMipzLT5saW5lc2l6
ZTsKKyAgICBjb25zdCBpbnQgc3RyaWRlID0gMipzLT5jLmxpbmVzaXplOwogICAgIGludCBkbWlu
X3N1bT0gMDsKLSAgICBjb25zdCBpbnQgbW90X3N0cmlkZT0gcy0+bWJfc3RyaWRlOwotICAgIGNv
bnN0IGludCB4eT0gcy0+bWJfeCArIHMtPm1iX3kqbW90X3N0cmlkZTsKKyAgICBjb25zdCBpbnQg
bW90X3N0cmlkZSA9IHMtPmMubWJfc3RyaWRlOworICAgIGNvbnN0IGludCB4eSA9IHMtPmMubWJf
eCArIHMtPmMubWJfeSptb3Rfc3RyaWRlOwogCiAgICAgYy0+eW1pbj4+PTE7CiAgICAgYy0+eW1h
eD4+PTE7CkBAIC03ODQsNyArNzg1LDcgQEAgc3RhdGljIGludCBpbnRlcmxhY2VkX3NlYXJjaChN
cGVnRW5jQ29udGV4dCAqcywgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgIGMtPnByZWRfeD0g
UF9MRUZUWzBdOwogICAgICAgICAgICAgYy0+cHJlZF95PSBQX0xFRlRbMV07CiAKLSAgICAgICAg
ICAgIGlmKCFzLT5maXJzdF9zbGljZV9saW5lKXsKKyAgICAgICAgICAgIGlmICghcy0+Yy5maXJz
dF9zbGljZV9saW5lKSB7CiAgICAgICAgICAgICAgICAgUF9UT1BbMF0gICAgICA9IG12X3RhYmxl
W3h5IC0gbW90X3N0cmlkZV1bMF07CiAgICAgICAgICAgICAgICAgUF9UT1BbMV0gICAgICA9IG12
X3RhYmxlW3h5IC0gbW90X3N0cmlkZV1bMV07CiAgICAgICAgICAgICAgICAgUF9UT1BSSUdIVFsw
XSA9IG12X3RhYmxlW3h5IC0gbW90X3N0cmlkZSArIDFdWzBdOwpAQCAtODUwLDcgKzg1MSw3IEBA
IHN0YXRpYyBpbnQgaW50ZXJsYWNlZF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKnMsIGludCByZWZf
aW5kZXgsCiAKICAgICBzd2l0Y2goYy0+YXZjdHgtPm1iX2NtcCYweEZGKXsKICAgICAvKmNhc2Ug
RkZfQ01QX1NTRToKLSAgICAgICAgcmV0dXJuIGRtaW5fc3VtKyAzMipzLT5xc2NhbGUqcy0+cXNj
YWxlOyovCisgICAgICAgIHJldHVybiBkbWluX3N1bSsgMzIqcy0+Yy5xc2NhbGUqcy0+Yy5xc2Nh
bGU7Ki8KICAgICBjYXNlIEZGX0NNUF9SRDoKICAgICAgICAgcmV0dXJuIGRtaW5fc3VtOwogICAg
IGRlZmF1bHQ6CkBAIC04ODMsNTcgKzg4NCw1NyBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfcGVu
YWx0eV9mYWN0b3IoaW50IGxhbWJkYSwgaW50IGxhbWJkYTIsIGludCB0eXBlKXsKICAgICB9CiB9
CiAKLXZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBzLAor
dm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1iX3kpCiB7Ci0g
ICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250
ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7CiAgICAgY29uc3QgdWludDhfdCAqcGl4LCAqcHBpeDsK
ICAgICBpbnQgc3VtLCBteCA9IDAsIG15ID0gMCwgZG1pbiA9IDA7CiAgICAgaW50IHZhcmM7ICAg
ICAgICAgICAgLy8vPCB0aGUgdmFyaWFuY2Ugb2YgdGhlIGJsb2NrIChzdW0gb2Ygc3F1YXJlZCAo
cFt5XVt4XS1hdmVyYWdlKSkKICAgICBpbnQgdmFyZDsgICAgICAgICAgICAvLy88IHN1bSBvZiBz
cXVhcmVkIGRpZmZlcmVuY2VzIHdpdGggdGhlIGVzdGltYXRlZCBtb3Rpb24gdmVjdG9yCiAgICAg
aW50IFBbMTBdWzJdOwotICAgIGNvbnN0IGludCBzaGlmdD0gMStzLT5xdWFydGVyX3NhbXBsZTsK
KyAgICBjb25zdCBpbnQgc2hpZnQgPSAxICsgcy0+Yy5xdWFydGVyX3NhbXBsZTsKICAgICBpbnQg
bWJfdHlwZT0wOwogCi0gICAgaW5pdF9yZWYoYywgcy0+bmV3X3BpYy0+ZGF0YSwgcy0+bGFzdF9w
aWMuZGF0YSwgTlVMTCwgMTYqbWJfeCwgMTYqbWJfeSwgMCk7CisgICAgaW5pdF9yZWYoYywgcy0+
bmV3X3BpYy0+ZGF0YSwgcy0+Yy5sYXN0X3BpYy5kYXRhLCBOVUxMLCAxNiptYl94LCAxNiptYl95
LCAwKTsKIAotICAgIGF2X2Fzc2VydDAocy0+cXVhcnRlcl9zYW1wbGU9PTAgfHwgcy0+cXVhcnRl
cl9zYW1wbGU9PTEpOwotICAgIGF2X2Fzc2VydDAocy0+bGluZXNpemUgPT0gYy0+c3RyaWRlKTsK
LSAgICBhdl9hc3NlcnQwKHMtPnV2bGluZXNpemUgPT0gYy0+dXZzdHJpZGUpOworICAgIGF2X2Fz
c2VydDAocy0+Yy5xdWFydGVyX3NhbXBsZT09MCB8fCBzLT5jLnF1YXJ0ZXJfc2FtcGxlPT0xKTsK
KyAgICBhdl9hc3NlcnQwKHMtPmMubGluZXNpemUgPT0gYy0+c3RyaWRlKTsKKyAgICBhdl9hc3Nl
cnQwKHMtPmMudXZsaW5lc2l6ZSA9PSBjLT51dnN0cmlkZSk7CiAKLSAgICBjLT5wZW5hbHR5X2Zh
Y3RvciAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMtPmF2
Y3R4LT5tZV9jbXApOwotICAgIGMtPnN1Yl9wZW5hbHR5X2ZhY3Rvcj0gZ2V0X3BlbmFsdHlfZmFj
dG9yKHMtPmxhbWJkYSwgcy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3N1Yl9jbXApOwotICAgIGMt
Pm1iX3BlbmFsdHlfZmFjdG9yID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmxhbWJkYSwgcy0+bGFt
YmRhMiwgYy0+YXZjdHgtPm1iX2NtcCk7Ci0gICAgYy0+Y3VycmVudF9tdl9wZW5hbHR5PSBjLT5t
dl9wZW5hbHR5W3MtPmZfY29kZV0gKyBNQVhfRE1WOworICAgIGMtPnBlbmFsdHlfZmFjdG9yICAg
ICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0
eC0+bWVfY21wKTsKKyAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0
b3Iocy0+Yy5sYW1iZGEsIHMtPmMubGFtYmRhMiwgYy0+YXZjdHgtPm1lX3N1Yl9jbXApOworICAg
IGMtPm1iX3BlbmFsdHlfZmFjdG9yICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwg
cy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWJfY21wKTsKKyAgICBjLT5jdXJyZW50X212X3BlbmFs
dHkgPSBjLT5tdl9wZW5hbHR5W3MtPmMuZl9jb2RlXSArIE1BWF9ETVY7CiAKICAgICBnZXRfbGlt
aXRzKHMsIDE2Km1iX3gsIDE2Km1iX3ksIDApOwogICAgIGMtPnNraXA9MDsKIAogICAgIC8qIGlu
dHJhIC8gcHJlZGljdGl2ZSBkZWNpc2lvbiAqLwogICAgIHBpeCA9IGMtPnNyY1swXVswXTsKLSAg
ICBzdW0gID0gcy0+bXB2ZW5jZHNwLnBpeF9zdW0ocGl4LCBzLT5saW5lc2l6ZSk7Ci0gICAgdmFy
YyA9IHMtPm1wdmVuY2RzcC5waXhfbm9ybTEocGl4LCBzLT5saW5lc2l6ZSkgLQorICAgIHN1bSAg
PSBzLT5tcHZlbmNkc3AucGl4X3N1bShwaXgsIHMtPmMubGluZXNpemUpOworICAgIHZhcmMgPSBz
LT5tcHZlbmNkc3AucGl4X25vcm0xKHBpeCwgcy0+Yy5saW5lc2l6ZSkgLQogICAgICAgICAgICAo
KCh1bnNpZ25lZCkgc3VtICogc3VtKSA+PiA4KSArIDUwMDsKIAotICAgIHMtPm1iX21lYW5bcy0+
bWJfc3RyaWRlICogbWJfeSArIG1iX3hdID0gKHN1bSsxMjgpPj44OwotICAgIHMtPm1iX3ZhciBb
cy0+bWJfc3RyaWRlICogbWJfeSArIG1iX3hdID0gKHZhcmMrMTI4KT4+ODsKKyAgICBzLT5tYl9t
ZWFuW3MtPmMubWJfc3RyaWRlICogbWJfeSArIG1iX3hdID0gKHN1bSAgKyAxMjgpID4+IDg7Cisg
ICAgcy0+bWJfdmFyIFtzLT5jLm1iX3N0cmlkZSAqIG1iX3kgKyBtYl94XSA9ICh2YXJjICsgMTI4
KSA+PiA4OwogICAgIGMtPm1iX3Zhcl9zdW1fdGVtcCArPSAodmFyYysxMjgpPj44OwogCiAgICAg
aWYgKGMtPm1vdGlvbl9lc3QgIT0gRkZfTUVfWkVSTykgewotICAgICAgICBjb25zdCBpbnQgbW90
X3N0cmlkZSA9IHMtPmI4X3N0cmlkZTsKLSAgICAgICAgY29uc3QgaW50IG1vdF94eSA9IHMtPmJs
b2NrX2luZGV4WzBdOworICAgICAgICBjb25zdCBpbnQgbW90X3N0cmlkZSA9IHMtPmMuYjhfc3Ry
aWRlOworICAgICAgICBjb25zdCBpbnQgbW90X3h5ID0gcy0+Yy5ibG9ja19pbmRleFswXTsKIAot
ICAgICAgICBQX0xFRlRbMF0gPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5IC0gMV1b
MF07Ci0gICAgICAgIFBfTEVGVFsxXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkg
LSAxXVsxXTsKKyAgICAgICAgUF9MRUZUWzBdID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1b
bW90X3h5IC0gMV1bMF07CisgICAgICAgIFBfTEVGVFsxXSA9IHMtPmMuY3VyX3BpYy5tb3Rpb25f
dmFsWzBdW21vdF94eSAtIDFdWzFdOwogCiAgICAgICAgIGlmIChQX0xFRlRbMF0gPiAoYy0+eG1h
eCA8PCBzaGlmdCkpCiAgICAgICAgICAgICBQX0xFRlRbMF0gPSAgYy0+eG1heCA8PCBzaGlmdDsK
IAotICAgICAgICBpZiAoIXMtPmZpcnN0X3NsaWNlX2xpbmUpIHsKLSAgICAgICAgICAgIFBfVE9Q
WzBdICAgICAgPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5IC0gbW90X3N0cmlkZSAg
ICBdWzBdOwotICAgICAgICAgICAgUF9UT1BbMV0gICAgICA9IHMtPmN1cl9waWMubW90aW9uX3Zh
bFswXVttb3RfeHkgLSBtb3Rfc3RyaWRlICAgIF1bMV07Ci0gICAgICAgICAgICBQX1RPUFJJR0hU
WzBdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgKyAyXVsw
XTsKLSAgICAgICAgICAgIFBfVE9QUklHSFRbMV0gPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1b
bW90X3h5IC0gbW90X3N0cmlkZSArIDJdWzFdOworICAgICAgICBpZiAoIXMtPmMuZmlyc3Rfc2xp
Y2VfbGluZSkgeworICAgICAgICAgICAgUF9UT1BbMF0gICAgICA9IHMtPmMuY3VyX3BpYy5tb3Rp
b25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVswXTsKKyAgICAgICAgICAgIFBfVE9Q
WzFdICAgICAgPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgLSBtb3Rfc3RyaWRl
ICAgIF1bMV07CisgICAgICAgICAgICBQX1RPUFJJR0hUWzBdID0gcy0+Yy5jdXJfcGljLm1vdGlv
bl92YWxbMF1bbW90X3h5IC0gbW90X3N0cmlkZSArIDJdWzBdOworICAgICAgICAgICAgUF9UT1BS
SUdIVFsxXSA9IHMtPmMuY3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUg
KyAyXVsxXTsKICAgICAgICAgICAgIGlmIChQX1RPUFsxXSA+IChjLT55bWF4IDw8IHNoaWZ0KSkK
ICAgICAgICAgICAgICAgICBQX1RPUFsxXSA9ICBjLT55bWF4IDw8IHNoaWZ0OwogICAgICAgICAg
ICAgaWYgKFBfVE9QUklHSFRbMF0gPCAoYy0+eG1pbiAqICgxIDw8IHNoaWZ0KSkpCkBAIC05NDQs
NyArOTQ1LDcgQEAgdm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4
dCAqIHMsCiAgICAgICAgICAgICBQX01FRElBTlswXSA9IG1pZF9wcmVkKFBfTEVGVFswXSwgUF9U
T1BbMF0sIFBfVE9QUklHSFRbMF0pOwogICAgICAgICAgICAgUF9NRURJQU5bMV0gPSBtaWRfcHJl
ZChQX0xFRlRbMV0sIFBfVE9QWzFdLCBQX1RPUFJJR0hUWzFdKTsKIAotICAgICAgICAgICAgaWYg
KHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjMpIHsKKyAgICAgICAgICAgIGlmIChzLT5jLm91dF9m
b3JtYXQgPT0gRk1UX0gyNjMpIHsKICAgICAgICAgICAgICAgICBjLT5wcmVkX3ggPSBQX01FRElB
TlswXTsKICAgICAgICAgICAgICAgICBjLT5wcmVkX3kgPSBQX01FRElBTlsxXTsKICAgICAgICAg
ICAgIH0gZWxzZSB7IC8qIE1QRUctMSBhdCBsZWFzdCAqLwpAQCAtOTU5LDIyICs5NjAsMjIgQEAg
dm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAg
fQogCiAgICAgLyogQXQgdGhpcyBwb2ludCAobXgsbXkpIGFyZSBmdWxsLXBlbGwgYW5kIHRoZSBy
ZWxhdGl2ZSBkaXNwbGFjZW1lbnQgKi8KLSAgICBwcGl4ID0gYy0+cmVmWzBdWzBdICsgKG15ICog
cy0+bGluZXNpemUpICsgbXg7CisgICAgcHBpeCA9IGMtPnJlZlswXVswXSArIChteSAqIHMtPmMu
bGluZXNpemUpICsgbXg7CiAKLSAgICB2YXJkID0gYy0+c3NlKE5VTEwsIHBpeCwgcHBpeCwgcy0+
bGluZXNpemUsIDE2KTsKKyAgICB2YXJkID0gYy0+c3NlKE5VTEwsIHBpeCwgcHBpeCwgcy0+Yy5s
aW5lc2l6ZSwgMTYpOwogCi0gICAgcy0+bWNfbWJfdmFyW3MtPm1iX3N0cmlkZSAqIG1iX3kgKyBt
Yl94XSA9ICh2YXJkKzEyOCk+Pjg7CisgICAgcy0+bWNfbWJfdmFyW3MtPmMubWJfc3RyaWRlICog
bWJfeSArIG1iX3hdID0gKHZhcmQrMTI4KT4+ODsKICAgICBjLT5tY19tYl92YXJfc3VtX3RlbXAg
Kz0gKHZhcmQrMTI4KT4+ODsKIAogICAgIGlmIChjLT5hdmN0eC0+bWJfZGVjaXNpb24gPiBGRl9N
Ql9ERUNJU0lPTl9TSU1QTEUpIHsKLSAgICAgICAgaW50IHBfc2NvcmU9IEZGTUlOKHZhcmQsIHZh
cmMtNTAwKyhzLT5sYW1iZGEyPj5GRl9MQU1CREFfU0hJRlQpKjEwMCk7Ci0gICAgICAgIGludCBp
X3Njb3JlPSB2YXJjLTUwMCsocy0+bGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSoyMDsKKyAgICAg
ICAgaW50IHBfc2NvcmUgPSBGRk1JTih2YXJkLCB2YXJjIC0gNTAwICsgKHMtPmMubGFtYmRhMiA+
PiBGRl9MQU1CREFfU0hJRlQpKjEwMCk7CisgICAgICAgIGludCBpX3Njb3JlID0gdmFyYyAtIDUw
MCArIChzLT5jLmxhbWJkYTIgPj4gRkZfTEFNQkRBX1NISUZUKSoyMDsKICAgICAgICAgYy0+c2Nl
bmVfY2hhbmdlX3Njb3JlKz0gZmZfc3FydChwX3Njb3JlKSAtIGZmX3NxcnQoaV9zY29yZSk7CiAK
ICAgICAgICAgaWYgKHZhcmQqMiArIDIwMCoyNTYgPiB2YXJjICYmICFzLT5pbnRyYV9wZW5hbHR5
KQogICAgICAgICAgICAgbWJfdHlwZXw9IENBTkRJREFURV9NQl9UWVBFX0lOVFJBOwotICAgICAg
ICBpZiAodmFyYyoyICsgMjAwKjI1NiA+IHZhcmQgfHwgcy0+cXNjYWxlID4gMjQpewotLy8gICAg
ICAgIGlmICh2YXJjKjIgKyAyMDAqMjU2ICsgNTAqKHMtPmxhbWJkYTI+PkZGX0xBTUJEQV9TSElG
VCkgPiB2YXJkKXsKKyAgICAgICAgaWYgKHZhcmMqMiArIDIwMCoyNTYgPiB2YXJkIHx8IHMtPmMu
cXNjYWxlID4gMjQpeworLy8gICAgICAgIGlmICh2YXJjKjIgKyAyMDAqMjU2ICsgNTAqKHMtPmMu
bGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSA+IHZhcmQpewogICAgICAgICAgICAgbWJfdHlwZXw9
IENBTkRJREFURV9NQl9UWVBFX0lOVEVSOwogICAgICAgICAgICAgYy0+c3ViX21vdGlvbl9zZWFy
Y2gocywgJm14LCAmbXksIGRtaW4sIDAsIDAsIDAsIDE2KTsKICAgICAgICAgICAgIGlmIChzLT5t
cHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19NVjApCkBAIC05OTQsNyArOTk1LDcgQEAgdm9pZCBmZl9l
c3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAgICAgICAgICBz
ZXRfcF9tdl90YWJsZXMocywgbXgsIG15LCAxKTsKICAgICAgICAgaWYgKChjLT5hdmN0eC0+Zmxh
Z3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpCiAgICAgICAgICAgICYmICFjLT5za2lw
KXsgLy9GSVhNRSB2YXJjL2QgY2hlY2tzCi0gICAgICAgICAgICBpZihpbnRlcmxhY2VkX3NlYXJj
aChzLCAwLCBzLT5wX2ZpZWxkX212X3RhYmxlLCBzLT5wX2ZpZWxkX3NlbGVjdF90YWJsZSwgbXgs
IG15LCAwKSA8IElOVF9NQVgpCisgICAgICAgICAgICBpZihpbnRlcmxhY2VkX3NlYXJjaChzLCAw
LCBzLT5jLnBfZmllbGRfbXZfdGFibGUsIHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlLCBteCwgbXks
IDApIDwgSU5UX01BWCkKICAgICAgICAgICAgICAgICBtYl90eXBlIHw9IENBTkRJREFURV9NQl9U
WVBFX0lOVEVSX0k7CiAgICAgICAgIH0KICAgICB9ZWxzZXsKQEAgLTEwMTUsNyArMTAxNiw3IEBA
IHZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBzLAogICAg
ICAgICB9CiAgICAgICAgIGlmICgoYy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19JTlRF
UkxBQ0VEX01FKQogICAgICAgICAgICAmJiAhYy0+c2tpcCl7IC8vRklYTUUgdmFyYy9kIGNoZWNr
cwotICAgICAgICAgICAgaW50IGRtaW5faT0gaW50ZXJsYWNlZF9zZWFyY2gocywgMCwgcy0+cF9m
aWVsZF9tdl90YWJsZSwgcy0+cF9maWVsZF9zZWxlY3RfdGFibGUsIG14LCBteSwgMCk7CisgICAg
ICAgICAgICBpbnQgZG1pbl9pPSBpbnRlcmxhY2VkX3NlYXJjaChzLCAwLCBzLT5jLnBfZmllbGRf
bXZfdGFibGUsIHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlLCBteCwgbXksIDApOwogICAgICAgICAg
ICAgaWYoZG1pbl9pIDwgZG1pbil7CiAgICAgICAgICAgICAgICAgbWJfdHlwZSA9IENBTkRJREFU
RV9NQl9UWVBFX0lOVEVSX0k7CiAgICAgICAgICAgICAgICAgZG1pbj0gZG1pbl9pOwpAQCAtMTAz
Miw0NiArMTAzMyw0NiBAQCB2b2lkIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1wZWdFbmND
b250ZXh0ICogcywKICAgICAgICAgICAgIG1lYW4qPSAweDAxMDEwMTAxOwogCiAgICAgICAgICAg
ICBmb3IoaT0wOyBpPDE2OyBpKyspewotICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+
c2NyYXRjaHBhZFtpKnMtPmxpbmVzaXplKyAwXSkgPSBtZWFuOwotICAgICAgICAgICAgICAgICoo
dWludDMyX3QqKSgmYy0+c2NyYXRjaHBhZFtpKnMtPmxpbmVzaXplKyA0XSkgPSBtZWFuOwotICAg
ICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+c2NyYXRjaHBhZFtpKnMtPmxpbmVzaXplKyA4
XSkgPSBtZWFuOwotICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+c2NyYXRjaHBhZFtp
KnMtPmxpbmVzaXplKzEyXSkgPSBtZWFuOworICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgm
Yy0+c2NyYXRjaHBhZFtpKnMtPmMubGluZXNpemUrIDBdKSA9IG1lYW47CisgICAgICAgICAgICAg
ICAgKih1aW50MzJfdCopKCZjLT5zY3JhdGNocGFkW2kqcy0+Yy5saW5lc2l6ZSsgNF0pID0gbWVh
bjsKKyAgICAgICAgICAgICAgICAqKHVpbnQzMl90KikoJmMtPnNjcmF0Y2hwYWRbaSpzLT5jLmxp
bmVzaXplKyA4XSkgPSBtZWFuOworICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+c2Ny
YXRjaHBhZFtpKnMtPmMubGluZXNpemUrMTJdKSA9IG1lYW47CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGludHJhX3Njb3JlPSBjLT5tYl9jbXBbMF0ocywgYy0+c2NyYXRjaHBhZCwgcGl4
LCBzLT5saW5lc2l6ZSwgMTYpOworICAgICAgICAgICAgaW50cmFfc2NvcmU9IGMtPm1iX2NtcFsw
XShzLCBjLT5zY3JhdGNocGFkLCBwaXgsIHMtPmMubGluZXNpemUsIDE2KTsKICAgICAgICAgfQog
ICAgICAgICBpbnRyYV9zY29yZSArPSBjLT5tYl9wZW5hbHR5X2ZhY3RvcioxNiArIHMtPmludHJh
X3BlbmFsdHk7CiAKICAgICAgICAgaWYoaW50cmFfc2NvcmUgPCBkbWluKXsKICAgICAgICAgICAg
IG1iX3R5cGU9IENBTkRJREFURV9NQl9UWVBFX0lOVFJBOwotICAgICAgICAgICAgcy0+Y3VyX3Bp
Yy5tYl90eXBlW21iX3kqcy0+bWJfc3RyaWRlICsgbWJfeF0gPSBDQU5ESURBVEVfTUJfVFlQRV9J
TlRSQTsgLy9GSVhNRSBjbGVhbnVwCisgICAgICAgICAgICBzLT5jLmN1cl9waWMubWJfdHlwZVtt
Yl95KnMtPmMubWJfc3RyaWRlICsgbWJfeF0gPSBDQU5ESURBVEVfTUJfVFlQRV9JTlRSQTsgLy9G
SVhNRSBjbGVhbnVwCiAgICAgICAgIH1lbHNlCi0gICAgICAgICAgICBzLT5jdXJfcGljLm1iX3R5
cGVbbWJfeSpzLT5tYl9zdHJpZGUgKyBtYl94XSA9IDA7CisgICAgICAgICAgICBzLT5jLmN1cl9w
aWMubWJfdHlwZVttYl95KnMtPmMubWJfc3RyaWRlICsgbWJfeF0gPSAwOwogCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGludCBwX3Njb3JlPSBGRk1JTih2YXJkLCB2YXJjLTUwMCsocy0+bGFtYmRh
Mj4+RkZfTEFNQkRBX1NISUZUKSoxMDApOwotICAgICAgICAgICAgaW50IGlfc2NvcmU9IHZhcmMt
NTAwKyhzLT5sYW1iZGEyPj5GRl9MQU1CREFfU0hJRlQpKjIwOworICAgICAgICAgICAgaW50IHBf
c2NvcmUgPSBGRk1JTih2YXJkLCB2YXJjLTUwMCsocy0+Yy5sYW1iZGEyPj5GRl9MQU1CREFfU0hJ
RlQpKjEwMCk7CisgICAgICAgICAgICBpbnQgaV9zY29yZSA9IHZhcmMtNTAwKyhzLT5jLmxhbWJk
YTI+PkZGX0xBTUJEQV9TSElGVCkqMjA7CiAgICAgICAgICAgICBjLT5zY2VuZV9jaGFuZ2Vfc2Nv
cmUrPSBmZl9zcXJ0KHBfc2NvcmUpIC0gZmZfc3FydChpX3Njb3JlKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIHMtPm1iX3R5cGVbbWJfeSpzLT5tYl9zdHJpZGUgKyBtYl94XT0gbWJfdHlwZTsK
KyAgICBzLT5tYl90eXBlW21iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94XSA9IG1iX3R5cGU7CiB9
CiAKLWludCBmZl9wcmVfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBz
LAoraW50IGZmX3ByZV9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpjb25z
dCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1iX3gsIGludCBt
Yl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90
aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGludCBteCwgbXksIGRtaW47
CiAgICAgaW50IFBbMTBdWzJdOwotICAgIGNvbnN0IGludCBzaGlmdD0gMStzLT5xdWFydGVyX3Nh
bXBsZTsKLSAgICBjb25zdCBpbnQgeHk9IG1iX3ggKyBtYl95KnMtPm1iX3N0cmlkZTsKLSAgICBp
bml0X3JlZihjLCBzLT5uZXdfcGljLT5kYXRhLCBzLT5sYXN0X3BpYy5kYXRhLCBOVUxMLCAxNipt
Yl94LCAxNiptYl95LCAwKTsKKyAgICBjb25zdCBpbnQgc2hpZnQgPSAxICsgcy0+Yy5xdWFydGVy
X3NhbXBsZTsKKyAgICBjb25zdCBpbnQgeHkgICAgPSBtYl94ICsgbWJfeSpzLT5jLm1iX3N0cmlk
ZTsKKyAgICBpbml0X3JlZihjLCBzLT5uZXdfcGljLT5kYXRhLCBzLT5jLmxhc3RfcGljLmRhdGEs
IE5VTEwsIDE2Km1iX3gsIDE2Km1iX3ksIDApOwogCi0gICAgYXZfYXNzZXJ0MChzLT5xdWFydGVy
X3NhbXBsZT09MCB8fCBzLT5xdWFydGVyX3NhbXBsZT09MSk7CisgICAgYXZfYXNzZXJ0MChzLT5j
LnF1YXJ0ZXJfc2FtcGxlPT0wIHx8IHMtPmMucXVhcnRlcl9zYW1wbGU9PTEpOwogCi0gICAgYy0+
cHJlX3BlbmFsdHlfZmFjdG9yICAgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmxhbWJkYSwgcy0+
bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3ByZV9jbXApOwotICAgIGMtPmN1cnJlbnRfbXZfcGVuYWx0
eT0gYy0+bXZfcGVuYWx0eVtzLT5mX2NvZGVdICsgTUFYX0RNVjsKKyAgICBjLT5wcmVfcGVuYWx0
eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+Yy5sYW1iZGEsIHMtPmMubGFtYmRhMiwg
Yy0+YXZjdHgtPm1lX3ByZV9jbXApOworICAgIGMtPmN1cnJlbnRfbXZfcGVuYWx0eSA9IGMtPm12
X3BlbmFsdHlbcy0+Yy5mX2NvZGVdICsgTUFYX0RNVjsKIAogICAgIGdldF9saW1pdHMocywgMTYq
bWJfeCwgMTYqbWJfeSwgMCk7CiAgICAgYy0+c2tpcD0wOwpAQCAtMTA4MiwxNiArMTA4MywxNiBA
QCBpbnQgZmZfcHJlX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywK
ICAgICBpZihQX0xFRlRbMF0gICAgICAgPCAoYy0+eG1pbjw8c2hpZnQpKSBQX0xFRlRbMF0gICAg
ICAgPSAoYy0+eG1pbjw8c2hpZnQpOwogCiAgICAgLyogc3BlY2lhbCBjYXNlIGZvciBmaXJzdCBs
aW5lICovCi0gICAgaWYgKHMtPmZpcnN0X3NsaWNlX2xpbmUpIHsKKyAgICBpZiAocy0+Yy5maXJz
dF9zbGljZV9saW5lKSB7CiAgICAgICAgIGMtPnByZWRfeD0gUF9MRUZUWzBdOwogICAgICAgICBj
LT5wcmVkX3k9IFBfTEVGVFsxXTsKICAgICAgICAgUF9UT1BbMF09IFBfVE9QUklHSFRbMF09IFBf
TUVESUFOWzBdPQogICAgICAgICBQX1RPUFsxXT0gUF9UT1BSSUdIVFsxXT0gUF9NRURJQU5bMV09
IDA7IC8vRklYTUUKICAgICB9IGVsc2UgewotICAgICAgICBQX1RPUFswXSAgICAgID0gcy0+cF9t
dl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAgICBdWzBdOwotICAgICAgICBQX1RPUFsxXSAgICAg
ID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAgICBdWzFdOwotICAgICAgICBQX1RP
UFJJR0hUWzBdID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAtIDFdWzBdOwotICAg
ICAgICBQX1RPUFJJR0hUWzFdID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAtIDFd
WzFdOworICAgICAgICBQX1RPUFswXSAgICAgID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPmMubWJf
c3RyaWRlICAgIF1bMF07CisgICAgICAgIFBfVE9QWzFdICAgICAgPSBzLT5wX212X3RhYmxlW3h5
ICsgcy0+Yy5tYl9zdHJpZGUgICAgXVsxXTsKKyAgICAgICAgUF9UT1BSSUdIVFswXSA9IHMtPnBf
bXZfdGFibGVbeHkgKyBzLT5jLm1iX3N0cmlkZSAtIDFdWzBdOworICAgICAgICBQX1RPUFJJR0hU
WzFdID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPmMubWJfc3RyaWRlIC0gMV1bMV07CiAgICAgICAg
IGlmKFBfVE9QWzFdICAgICAgPCAoYy0+eW1pbjw8c2hpZnQpKSBQX1RPUFsxXSAgICAgPSAoYy0+
eW1pbjw8c2hpZnQpOwogICAgICAgICBpZihQX1RPUFJJR0hUWzBdID4gKGMtPnhtYXg8PHNoaWZ0
KSkgUF9UT1BSSUdIVFswXT0gKGMtPnhtYXg8PHNoaWZ0KTsKICAgICAgICAgaWYoUF9UT1BSSUdI
VFsxXSA8IChjLT55bWluPDxzaGlmdCkpIFBfVE9QUklHSFRbMV09IChjLT55bWluPDxzaGlmdCk7
CkBAIC0xMTExLDE0ICsxMTEyLDE0IEBAIGludCBmZl9wcmVfZXN0aW1hdGVfcF9mcmFtZV9tb3Rp
b24oTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIHJldHVybiBkbWluOwogfQogCi1zdGF0aWMgaW50
IGVzdGltYXRlX21vdGlvbl9iKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbWJfeCwgaW50IG1iX3ks
CitzdGF0aWMgaW50IGVzdGltYXRlX21vdGlvbl9iKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGlu
dCBtYl94LCBpbnQgbWJfeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAo
Km12X3RhYmxlKVsyXSwgaW50IHJlZl9pbmRleCwgaW50IGZfY29kZSkKIHsKLSAgICBNb3Rpb25F
c3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25z
dCBjPSAmcy0+Yy5tZTsKICAgICBpbnQgbXggPSAwLCBteSA9IDAsIGRtaW4gPSAwOwogICAgIGlu
dCBQWzEwXVsyXTsKLSAgICBjb25zdCBpbnQgc2hpZnQ9IDErcy0+cXVhcnRlcl9zYW1wbGU7Ci0g
ICAgY29uc3QgaW50IG1vdF9zdHJpZGUgPSBzLT5tYl9zdHJpZGU7CisgICAgY29uc3QgaW50IHNo
aWZ0PSAxK3MtPmMucXVhcnRlcl9zYW1wbGU7CisgICAgY29uc3QgaW50IG1vdF9zdHJpZGUgPSBz
LT5jLm1iX3N0cmlkZTsKICAgICBjb25zdCBpbnQgbW90X3h5ID0gbWJfeSptb3Rfc3RyaWRlICsg
bWJfeDsKICAgICBjb25zdCB1aW50OF90ICogY29uc3QgbXZfcGVuYWx0eSA9IGMtPm12X3BlbmFs
dHlbZl9jb2RlXSArIE1BWF9ETVY7CiAgICAgaW50IG12X3NjYWxlOwpAQCAtMTEzNCw3ICsxMTM1
LDcgQEAgc3RhdGljIGludCBlc3RpbWF0ZV9tb3Rpb25fYihNcGVnRW5jQ29udGV4dCAqcywgaW50
IG1iX3gsIGludCBtYl95LAogICAgICAgICBpZiAoUF9MRUZUWzBdID4gKGMtPnhtYXggPDwgc2hp
ZnQpKSBQX0xFRlRbMF0gPSAoYy0+eG1heCA8PCBzaGlmdCk7CiAKICAgICAgICAgLyogc3BlY2lh
bCBjYXNlIGZvciBmaXJzdCBsaW5lICovCi0gICAgICAgIGlmICghcy0+Zmlyc3Rfc2xpY2VfbGlu
ZSkgeworICAgICAgICBpZiAoIXMtPmMuZmlyc3Rfc2xpY2VfbGluZSkgewogICAgICAgICAgICAg
UF9UT1BbMF0gICAgICA9IG12X3RhYmxlW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVswXTsKICAg
ICAgICAgICAgIFBfVE9QWzFdICAgICAgPSBtdl90YWJsZVttb3RfeHkgLSBtb3Rfc3RyaWRlICAg
IF1bMV07CiAgICAgICAgICAgICBQX1RPUFJJR0hUWzBdID0gbXZfdGFibGVbbW90X3h5IC0gbW90
X3N0cmlkZSArIDFdWzBdOwpAQCAtMTE1MCw5ICsxMTUxLDkgQEAgc3RhdGljIGludCBlc3RpbWF0
ZV9tb3Rpb25fYihNcGVnRW5jQ29udGV4dCAqcywgaW50IG1iX3gsIGludCBtYl95LAogICAgICAg
ICBjLT5wcmVkX3kgPSBQX0xFRlRbMV07CiAKICAgICAgICAgaWYobXZfdGFibGUgPT0gcy0+Yl9m
b3J3X212X3RhYmxlKXsKLSAgICAgICAgICAgIG12X3NjYWxlPSAocy0+cGJfdGltZTw8MTYpIC8g
KHMtPnBwX3RpbWU8PHNoaWZ0KTsKKyAgICAgICAgICAgIG12X3NjYWxlPSAocy0+Yy5wYl90aW1l
PDwxNikgLyAocy0+Yy5wcF90aW1lPDxzaGlmdCk7CiAgICAgICAgIH1lbHNlewotICAgICAgICAg
ICAgbXZfc2NhbGUgPSAoKHMtPnBiX3RpbWUgLSBzLT5wcF90aW1lKSAqICgxIDw8IDE2KSkgLyAo
cy0+cHBfdGltZTw8c2hpZnQpOworICAgICAgICAgICAgbXZfc2NhbGUgPSAoKHMtPmMucGJfdGlt
ZSAtIHMtPmMucHBfdGltZSkgKiAoMSA8PCAxNikpIC8gKHMtPmMucHBfdGltZTw8c2hpZnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgZG1pbiA9IGZmX2VwenNfbW90aW9uX3NlYXJjaChzLCAmbXgs
ICZteSwgUCwgMCwgcmVmX2luZGV4LCBzLT5wX212X3RhYmxlLCBtdl9zY2FsZSwgMCwgMTYpOwpA
QCAtMTE2MywxNCArMTE2NCwxNCBAQCBzdGF0aWMgaW50IGVzdGltYXRlX21vdGlvbl9iKE1wZWdF
bmNDb250ZXh0ICpzLCBpbnQgbWJfeCwgaW50IG1iX3ksCiAgICAgaWYoYy0+YXZjdHgtPm1lX3N1
Yl9jbXAgIT0gYy0+YXZjdHgtPm1iX2NtcCAmJiAhYy0+c2tpcCkKICAgICAgICAgZG1pbj0gZ2V0
X21iX3Njb3JlKHMsIG14LCBteSwgMCwgcmVmX2luZGV4LCAwLCAxNiwgMSk7CiAKLS8vICAgIHMt
Pm1iX3R5cGVbbWJfeSpzLT5tYl93aWR0aCArIG1iX3hdPSBtYl90eXBlOworLy8gICAgcy0+bWJf
dHlwZVttYl95KnMtPmMubWJfd2lkdGggKyBtYl94XT0gbWJfdHlwZTsKICAgICBtdl90YWJsZVtt
b3RfeHldWzBdPSBteDsKICAgICBtdl90YWJsZVttb3RfeHldWzFdPSBteTsKIAogICAgIHJldHVy
biBkbWluOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBjaGVja19iaWRpcl9tdihNcGVnRW5jQ29u
dGV4dCAqIHMsCitzdGF0aWMgaW5saW5lIGludCBjaGVja19iaWRpcl9tdihNUFZFbmNDb250ZXh0
ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgIGludCBtb3Rpb25fZngsIGludCBtb3Rpb25f
ZnksCiAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl9ieCwgaW50IG1vdGlvbl9ieSwKICAg
ICAgICAgICAgICAgICAgICBpbnQgcHJlZF9meCwgaW50IHByZWRfZnksCkBAIC0xMTgwLDkgKzEx
ODEsOSBAQCBzdGF0aWMgaW5saW5lIGludCBjaGVja19iaWRpcl9tdihNcGVnRW5jQ29udGV4dCAq
IHMsCiAgICAgLy9GSVhNRSBvcHRpbWl6ZT8KICAgICAvL0ZJWE1FIGJldHRlciBmX2NvZGUgcHJl
ZGljdGlvbiAobWF4IG12ICYgZGlzdGFuY2UpCiAgICAgLy9GSVhNRSBwb2ludGVycwotICAgIE1v
dGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7Ci0gICAgY29uc3QgdWludDhfdCAqIGNv
bnN0IG12X3BlbmFsdHlfZiA9IGMtPm12X3BlbmFsdHlbcy0+Zl9jb2RlXSArIE1BWF9ETVY7IC8v
IGZfY29kZSBvZiB0aGUgcHJldiBmcmFtZQotICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9w
ZW5hbHR5X2IgPSBjLT5tdl9wZW5hbHR5W3MtPmJfY29kZV0gKyBNQVhfRE1WOyAvLyBmX2NvZGUg
b2YgdGhlIHByZXYgZnJhbWUKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMu
bWU7CisgICAgY29uc3QgdWludDhfdCAqIGNvbnN0IG12X3BlbmFsdHlfZiA9IGMtPm12X3BlbmFs
dHlbcy0+Yy5mX2NvZGVdICsgTUFYX0RNVjsgLy8gZl9jb2RlIG9mIHRoZSBwcmV2IGZyYW1lCisg
ICAgY29uc3QgdWludDhfdCAqIGNvbnN0IG12X3BlbmFsdHlfYiA9IGMtPm12X3BlbmFsdHlbcy0+
Yy5iX2NvZGVdICsgTUFYX0RNVjsgLy8gZl9jb2RlIG9mIHRoZSBwcmV2IGZyYW1lCiAgICAgaW50
IHN0cmlkZT0gYy0+c3RyaWRlOwogICAgIHVpbnQ4X3QgKmRlc3RfeSA9IGMtPnNjcmF0Y2hwYWQ7
CiAgICAgY29uc3QgdWludDhfdCAqcHRyOwpAQCAtMTE5MywzNCArMTE5NCwzNCBAQCBzdGF0aWMg
aW5saW5lIGludCBjaGVja19iaWRpcl9tdihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAgY29uc3Qg
dWludDhfdCAqY29uc3QgKnJlZl9kYXRhICA9IGMtPnJlZlswXTsKICAgICBjb25zdCB1aW50OF90
ICpjb25zdCAqcmVmMl9kYXRhID0gYy0+cmVmWzJdOwogCi0gICAgaWYocy0+cXVhcnRlcl9zYW1w
bGUpeworICAgIGlmKHMtPmMucXVhcnRlcl9zYW1wbGUpewogICAgICAgICBkeHkgPSAoKG1vdGlv
bl9meSAmIDMpIDw8IDIpIHwgKG1vdGlvbl9meCAmIDMpOwogICAgICAgICBzcmNfeCA9IG1vdGlv
bl9meCA+PiAyOwogICAgICAgICBzcmNfeSA9IG1vdGlvbl9meSA+PiAyOwogCiAgICAgICAgIHB0
ciA9IHJlZl9kYXRhWzBdICsgKHNyY195ICogc3RyaWRlKSArIHNyY194OwotICAgICAgICBzLT5x
ZHNwLnB1dF9xcGVsX3BpeGVsc190YWJbMF1bZHh5XShkZXN0X3ksIHB0ciwgc3RyaWRlKTsKKyAg
ICAgICAgcy0+Yy5xZHNwLnB1dF9xcGVsX3BpeGVsc190YWJbMF1bZHh5XShkZXN0X3ksIHB0ciwg
c3RyaWRlKTsKIAogICAgICAgICBkeHkgPSAoKG1vdGlvbl9ieSAmIDMpIDw8IDIpIHwgKG1vdGlv
bl9ieCAmIDMpOwogICAgICAgICBzcmNfeCA9IG1vdGlvbl9ieCA+PiAyOwogICAgICAgICBzcmNf
eSA9IG1vdGlvbl9ieSA+PiAyOwogCiAgICAgICAgIHB0ciA9IHJlZjJfZGF0YVswXSArIChzcmNf
eSAqIHN0cmlkZSkgKyBzcmNfeDsKLSAgICAgICAgcy0+cWRzcC5hdmdfcXBlbF9waXhlbHNfdGFi
W3NpemVdW2R4eV0oZGVzdF95LCBwdHIsIHN0cmlkZSk7CisgICAgICAgIHMtPmMucWRzcC5hdmdf
cXBlbF9waXhlbHNfdGFiW3NpemVdW2R4eV0oZGVzdF95LCBwdHIsIHN0cmlkZSk7CiAgICAgfWVs
c2V7CiAgICAgICAgIGR4eSA9ICgobW90aW9uX2Z5ICYgMSkgPDwgMSkgfCAobW90aW9uX2Z4ICYg
MSk7CiAgICAgICAgIHNyY194ID0gbW90aW9uX2Z4ID4+IDE7CiAgICAgICAgIHNyY195ID0gbW90
aW9uX2Z5ID4+IDE7CiAKICAgICAgICAgcHRyID0gcmVmX2RhdGFbMF0gKyAoc3JjX3kgKiBzdHJp
ZGUpICsgc3JjX3g7Ci0gICAgICAgIHMtPmhkc3AucHV0X3BpeGVsc190YWJbc2l6ZV1bZHh5XShk
ZXN0X3kgICAgLCBwdHIgICAgLCBzdHJpZGUsIGgpOworICAgICAgICBzLT5jLmhkc3AucHV0X3Bp
eGVsc190YWJbc2l6ZV1bZHh5XShkZXN0X3kgICAgLCBwdHIgICAgLCBzdHJpZGUsIGgpOwogCiAg
ICAgICAgIGR4eSA9ICgobW90aW9uX2J5ICYgMSkgPDwgMSkgfCAobW90aW9uX2J4ICYgMSk7CiAg
ICAgICAgIHNyY194ID0gbW90aW9uX2J4ID4+IDE7CiAgICAgICAgIHNyY195ID0gbW90aW9uX2J5
ID4+IDE7CiAKICAgICAgICAgcHRyID0gcmVmMl9kYXRhWzBdICsgKHNyY195ICogc3RyaWRlKSAr
IHNyY194OwotICAgICAgICBzLT5oZHNwLmF2Z19waXhlbHNfdGFiW3NpemVdW2R4eV0oZGVzdF95
ICAgICwgcHRyICAgICwgc3RyaWRlLCBoKTsKKyAgICAgICAgcy0+Yy5oZHNwLmF2Z19waXhlbHNf
dGFiW3NpemVdW2R4eV0oZGVzdF95ICAgICwgcHRyICAgICwgc3RyaWRlLCBoKTsKICAgICB9CiAK
ICAgICBmYm1pbiA9IChtdl9wZW5hbHR5X2ZbbW90aW9uX2Z4LXByZWRfZnhdICsgbXZfcGVuYWx0
eV9mW21vdGlvbl9meS1wcmVkX2Z5XSkqYy0+bWJfcGVuYWx0eV9mYWN0b3IKQEAgLTEyMzUsMTAg
KzEyMzYsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfYmlkaXJfbXYoTXBlZ0VuY0NvbnRl
eHQgKiBzLAogfQogCiAvKiByZWZpbmUgdGhlIGJpZGlyIHZlY3RvcnMgaW4gaHEgbW9kZSBhbmQg
cmV0dXJuIHRoZSBzY29yZSBpbiBib3RoIGxxICYgaHEgbW9kZSovCi1zdGF0aWMgaW5saW5lIGlu
dCBiaWRpcl9yZWZpbmUoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbWJfeCwgaW50IG1iX3kpCitz
dGF0aWMgaW5saW5lIGludCBiaWRpcl9yZWZpbmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50
IG1iX3gsIGludCBtYl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+
bWU7Ci0gICAgY29uc3QgaW50IG1vdF9zdHJpZGUgPSBzLT5tYl9zdHJpZGU7CisgICAgTW90aW9u
RXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIGNvbnN0IGludCBtb3Rfc3RyaWRl
ID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAgY29uc3QgaW50IHh5ID0gbWJfeSAqbW90X3N0cmlkZSAr
IG1iX3g7CiAgICAgaW50IGZibWluOwogICAgIGludCBwcmVkX2Z4PSBzLT5iX2JpZGlyX2Zvcndf
bXZfdGFibGVbeHktMV1bMF07CkBAIC0xMzgyLDE2ICsxMzgzLDE2IEBAIENIRUNLX0JJRElSKC0o
YSksLShiKSwtKGMpLC0oZCkpCiAgICAgcmV0dXJuIGZibWluOwogfQogCi1zdGF0aWMgaW5saW5l
IGludCBkaXJlY3Rfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50IG1iX3gsIGludCBtYl95
KQorc3RhdGljIGlubGluZSBpbnQgZGlyZWN0X3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz
LCBpbnQgbWJfeCwgaW50IG1iX3kpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9
ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAg
aW50IFBbMTBdWzJdOwotICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+bWJfc3RyaWRlOwor
ICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAgY29uc3QgaW50
IG1vdF94eSA9IG1iX3kqbW90X3N0cmlkZSArIG1iX3g7Ci0gICAgY29uc3QgaW50IHNoaWZ0PSAx
K3MtPnF1YXJ0ZXJfc2FtcGxlOworICAgIGNvbnN0IGludCBzaGlmdD0gMStzLT5jLnF1YXJ0ZXJf
c2FtcGxlOwogICAgIGludCBkbWluLCBpOwotICAgIGNvbnN0IGludCB0aW1lX3BwPSBzLT5wcF90
aW1lOwotICAgIGNvbnN0IGludCB0aW1lX3BiPSBzLT5wYl90aW1lOworICAgIGNvbnN0IGludCB0
aW1lX3BwPSBzLT5jLnBwX3RpbWU7CisgICAgY29uc3QgaW50IHRpbWVfcGI9IHMtPmMucGJfdGlt
ZTsKICAgICBpbnQgbXgsIG15LCB4bWluLCB4bWF4LCB5bWluLCB5bWF4OwogICAgIGludDE2X3Qg
KCptdl90YWJsZSlbMl09IHMtPmJfZGlyZWN0X212X3RhYmxlOwogCkBAIC0xMzk5LDE4ICsxNDAw
LDE4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmVjdF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBz
LCBpbnQgbWJfeCwgaW50IG1iX3kpCiAgICAgeW1pbj0geG1pbj0oLTMyKT4+c2hpZnQ7CiAgICAg
eW1heD0geG1heD0gICAzMT4+c2hpZnQ7CiAKLSAgICBpZiAoSVNfOFg4KHMtPm5leHRfcGljLm1i
X3R5cGVbbW90X3h5XSkpIHsKLSAgICAgICAgcy0+bXZfdHlwZT0gTVZfVFlQRV84WDg7CisgICAg
aWYgKElTXzhYOChzLT5jLm5leHRfcGljLm1iX3R5cGVbbW90X3h5XSkpIHsKKyAgICAgICAgcy0+
Yy5tdl90eXBlPSBNVl9UWVBFXzhYODsKICAgICB9ZWxzZXsKLSAgICAgICAgcy0+bXZfdHlwZT0g
TVZfVFlQRV8xNlgxNjsKKyAgICAgICAgcy0+Yy5tdl90eXBlPSBNVl9UWVBFXzE2WDE2OwogICAg
IH0KIAogICAgIGZvcihpPTA7IGk8NDsgaSsrKXsKLSAgICAgICAgaW50IGluZGV4PSBzLT5ibG9j
a19pbmRleFtpXTsKKyAgICAgICAgaW50IGluZGV4PSBzLT5jLmJsb2NrX2luZGV4W2ldOwogICAg
ICAgICBpbnQgbWluLCBtYXg7CiAKLSAgICAgICAgYy0+Y29fbG9jYXRlZF9tdltpXVswXSA9IHMt
Pm5leHRfcGljLm1vdGlvbl92YWxbMF1baW5kZXhdWzBdOwotICAgICAgICBjLT5jb19sb2NhdGVk
X212W2ldWzFdID0gcy0+bmV4dF9waWMubW90aW9uX3ZhbFswXVtpbmRleF1bMV07CisgICAgICAg
IGMtPmNvX2xvY2F0ZWRfbXZbaV1bMF0gPSBzLT5jLm5leHRfcGljLm1vdGlvbl92YWxbMF1baW5k
ZXhdWzBdOworICAgICAgICBjLT5jb19sb2NhdGVkX212W2ldWzFdID0gcy0+Yy5uZXh0X3BpYy5t
b3Rpb25fdmFsWzBdW2luZGV4XVsxXTsKICAgICAgICAgYy0+ZGlyZWN0X2Jhc2lzX212W2ldWzBd
PSBjLT5jb19sb2NhdGVkX212W2ldWzBdKnRpbWVfcGIvdGltZV9wcCArICgoaSYgMSk8PChzaGlm
dCszKSk7CiAgICAgICAgIGMtPmRpcmVjdF9iYXNpc19tdltpXVsxXT0gYy0+Y29fbG9jYXRlZF9t
dltpXVsxXSp0aW1lX3BiL3RpbWVfcHAgKyAoKGk+PjEpPDwoc2hpZnQrMykpOwogLy8gICAgICAg
IGMtPmRpcmVjdF9iYXNpc19tdlsxXVtpXVswXT0gYy0+Y29fbG9jYXRlZF9tdltpXVswXSoodGlt
ZV9wYiAtIHRpbWVfcHApL3RpbWVfcHAgKyAoKGkgJjEpPDwoc2hpZnQrMyk7CkBAIC0xNDIwLDE3
ICsxNDIxLDE3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmVjdF9zZWFyY2goTXBlZ0VuY0NvbnRl
eHQgKiBzLCBpbnQgbWJfeCwgaW50IG1iX3kpCiAgICAgICAgIG1pbj0gRkZNSU4oYy0+ZGlyZWN0
X2Jhc2lzX212W2ldWzBdLCBjLT5kaXJlY3RfYmFzaXNfbXZbaV1bMF0gLSBjLT5jb19sb2NhdGVk
X212W2ldWzBdKT4+c2hpZnQ7CiAgICAgICAgIG1heCs9IDE2Km1iX3ggKyAxOyAvLyArLTEgaXMg
Zm9yIHRoZSBzaW1wbGVyIHJvdW5kaW5nCiAgICAgICAgIG1pbis9IDE2Km1iX3ggLSAxOwotICAg
ICAgICB4bWF4PSBGRk1JTih4bWF4LCBzLT53aWR0aCAtIG1heCk7CisgICAgICAgIHhtYXg9IEZG
TUlOKHhtYXgsIHMtPmMud2lkdGggLSBtYXgpOwogICAgICAgICB4bWluPSBGRk1BWCh4bWluLCAt
IDE2ICAgICAtIG1pbik7CiAKICAgICAgICAgbWF4PSBGRk1BWChjLT5kaXJlY3RfYmFzaXNfbXZb
aV1bMV0sIGMtPmRpcmVjdF9iYXNpc19tdltpXVsxXSAtIGMtPmNvX2xvY2F0ZWRfbXZbaV1bMV0p
Pj5zaGlmdDsKICAgICAgICAgbWluPSBGRk1JTihjLT5kaXJlY3RfYmFzaXNfbXZbaV1bMV0sIGMt
PmRpcmVjdF9iYXNpc19tdltpXVsxXSAtIGMtPmNvX2xvY2F0ZWRfbXZbaV1bMV0pPj5zaGlmdDsK
ICAgICAgICAgbWF4Kz0gMTYqbWJfeSArIDE7IC8vICstMSBpcyBmb3IgdGhlIHNpbXBsZXIgcm91
bmRpbmcKICAgICAgICAgbWluKz0gMTYqbWJfeSAtIDE7Ci0gICAgICAgIHltYXg9IEZGTUlOKHlt
YXgsIHMtPmhlaWdodCAtIG1heCk7CisgICAgICAgIHltYXg9IEZGTUlOKHltYXgsIHMtPmMuaGVp
Z2h0IC0gbWF4KTsKICAgICAgICAgeW1pbj0gRkZNQVgoeW1pbiwgLSAxNiAgICAgIC0gbWluKTsK
IAotICAgICAgICBpZihzLT5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIGJyZWFrOworICAgICAg
ICBpZihzLT5jLm12X3R5cGUgPT0gTVZfVFlQRV8xNlgxNikgYnJlYWs7CiAgICAgfQogCiAgICAg
YXZfYXNzZXJ0Mih4bWF4IDw9IDE1ICYmIHltYXggPD0gMTUgJiYgeG1pbiA+PSAtMTYgJiYgeW1p
biA+PSAtMTYpOwpAQCAtMTQ1NSw3ICsxNDU2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZGlyZWN0
X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCBtYl94LCBpbnQgbWJfeSkKICAgICBQX0xF
RlRbMV0gPSBhdl9jbGlwKG12X3RhYmxlW21vdF94eSAtIDFdWzFdLCB5bWluICogKDEgPDwgc2hp
ZnQpLCB5bWF4IDw8IHNoaWZ0KTsKIAogICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgZmlyc3QgbGlu
ZSAqLwotICAgIGlmICghcy0+Zmlyc3Rfc2xpY2VfbGluZSkgeyAvL0ZJWE1FIG1heWJlIGFsbG93
IHRoaXMgb3ZlciB0aHJlYWQgYm91bmRhcnkgYXMgaXQgaXMgY2xpcHBlZAorICAgIGlmICghcy0+
Yy5maXJzdF9zbGljZV9saW5lKSB7IC8vRklYTUUgbWF5YmUgYWxsb3cgdGhpcyBvdmVyIHRocmVh
ZCBib3VuZGFyeSBhcyBpdCBpcyBjbGlwcGVkCiAgICAgICAgIFBfVE9QWzBdICAgICAgPSBhdl9j
bGlwKG12X3RhYmxlW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVswXSwgeG1pbiAqICgxIDw8IHNo
aWZ0KSwgeG1heCA8PCBzaGlmdCk7CiAgICAgICAgIFBfVE9QWzFdICAgICAgPSBhdl9jbGlwKG12
X3RhYmxlW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVsxXSwgeW1pbiAqICgxIDw8IHNoaWZ0KSwg
eW1heCA8PCBzaGlmdCk7CiAgICAgICAgIFBfVE9QUklHSFRbMF0gPSBhdl9jbGlwKG12X3RhYmxl
W21vdF94eSAtIG1vdF9zdHJpZGUgKyAxXVswXSwgeG1pbiAqICgxIDw8IHNoaWZ0KSwgeG1heCA8
PCBzaGlmdCk7CkBAIC0xNDg0LDQ3ICsxNDg1LDQ3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmVj
dF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbWJfeCwgaW50IG1iX3kpCiAgICAgcmV0
dXJuIGRtaW47CiB9CiAKLXZvaWQgZmZfZXN0aW1hdGVfYl9mcmFtZV9tb3Rpb24oTXBlZ0VuY0Nv
bnRleHQgKiBzLAordm9pZCBmZl9lc3RpbWF0ZV9iX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0
ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1i
X3kpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rp
b25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAgaW50IGZtaW4sIGJtaW4sIGRt
aW4sIGZibWluLCBiaW1pbiwgZmltaW47CiAgICAgaW50IHR5cGU9MDsKLSAgICBjb25zdCBpbnQg
eHkgPSBtYl95KnMtPm1iX3N0cmlkZSArIG1iX3g7Ci0gICAgaW5pdF9yZWYoYywgcy0+bmV3X3Bp
Yy0+ZGF0YSwgcy0+bGFzdF9waWMuZGF0YSwKLSAgICAgICAgICAgICBzLT5uZXh0X3BpYy5kYXRh
LCAxNiAqIG1iX3gsIDE2ICogbWJfeSwgMik7CisgICAgY29uc3QgaW50IHh5ID0gbWJfeSpzLT5j
Lm1iX3N0cmlkZSArIG1iX3g7CisgICAgaW5pdF9yZWYoYywgcy0+bmV3X3BpYy0+ZGF0YSwgcy0+
Yy5sYXN0X3BpYy5kYXRhLAorICAgICAgICAgICAgIHMtPmMubmV4dF9waWMuZGF0YSwgMTYgKiBt
Yl94LCAxNiAqIG1iX3ksIDIpOwogCiAgICAgZ2V0X2xpbWl0cyhzLCAxNiptYl94LCAxNiptYl95
LCAxKTsKIAogICAgIGMtPnNraXA9MDsKIAotICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9DT0RF
Q19JRF9NUEVHNCAmJiBzLT5uZXh0X3BpYy5tYnNraXBfdGFibGVbeHldKSB7CisgICAgaWYgKHMt
PmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgcy0+Yy5uZXh0X3BpYy5tYnNraXBf
dGFibGVbeHldKSB7CiAgICAgICAgIGludCBzY29yZT0gZGlyZWN0X3NlYXJjaChzLCBtYl94LCBt
Yl95KTsgLy9GSVhNRSBqdXN0IGNoZWNrIDAsMAogCiAgICAgICAgIHNjb3JlPSAoKHVuc2lnbmVk
KShzY29yZSpzY29yZSArIDEyOCoyNTYpKT4+MTY7CiAgICAgICAgIGMtPm1jX21iX3Zhcl9zdW1f
dGVtcCArPSBzY29yZTsKLSAgICAgICAgcy0+bWNfbWJfdmFyW21iX3kqcy0+bWJfc3RyaWRlICsg
bWJfeF0gPSBzY29yZTsgLy9GSVhNRSB1c2UgU1NFCi0gICAgICAgIHMtPm1iX3R5cGVbbWJfeSpz
LT5tYl9zdHJpZGUgKyBtYl94XT0gQ0FORElEQVRFX01CX1RZUEVfRElSRUNUMDsKKyAgICAgICAg
cy0+bWNfbWJfdmFyW21iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94XSA9IHNjb3JlOyAvL0ZJWE1F
IHVzZSBTU0UKKyAgICAgICAgcy0+bWJfdHlwZVttYl95KnMtPmMubWJfc3RyaWRlICsgbWJfeF09
IENBTkRJREFURV9NQl9UWVBFX0RJUkVDVDA7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGMtPnBlbmFsdHlfZmFjdG9yICAgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmxhbWJkYSwg
cy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX2NtcCk7Ci0gICAgYy0+c3ViX3BlbmFsdHlfZmFjdG9y
PSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+bGFtYmRhLCBzLT5sYW1iZGEyLCBjLT5hdmN0eC0+bWVf
c3ViX2NtcCk7Ci0gICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Io
cy0+bGFtYmRhLCBzLT5sYW1iZGEyLCBjLT5hdmN0eC0+bWJfY21wKTsKKyAgICBjLT5wZW5hbHR5
X2ZhY3RvciAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEy
LCBjLT5hdmN0eC0+bWVfY21wKTsKKyAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3I9IGdldF9wZW5h
bHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWVfc3ViX2Nt
cCk7CisgICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+Yy5s
YW1iZGEsIHMtPmMubGFtYmRhMiwgYy0+YXZjdHgtPm1iX2NtcCk7CiAKLSAgICBpZiAocy0+Y29k
ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpCisgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZf
Q09ERUNfSURfTVBFRzQpCiAgICAgICAgIGRtaW49IGRpcmVjdF9zZWFyY2gocywgbWJfeCwgbWJf
eSk7CiAgICAgZWxzZQogICAgICAgICBkbWluPSBJTlRfTUFYOwogCiAvLyBGSVhNRSBwZW5hbHR5
IHN0dWZmIGZvciBub24tTVBFRy00CiAgICAgYy0+c2tpcD0wOwotICAgIGZtaW4gPSBlc3RpbWF0
ZV9tb3Rpb25fYihzLCBtYl94LCBtYl95LCBzLT5iX2ZvcndfbXZfdGFibGUsIDAsIHMtPmZfY29k
ZSkgKworICAgIGZtaW4gPSBlc3RpbWF0ZV9tb3Rpb25fYihzLCBtYl94LCBtYl95LCBzLT5iX2Zv
cndfbXZfdGFibGUsIDAsIHMtPmMuZl9jb2RlKSArCiAgICAgICAgICAgIDMgKiBjLT5tYl9wZW5h
bHR5X2ZhY3RvcjsKIAogICAgIGMtPnNraXA9MDsKLSAgICBibWluID0gZXN0aW1hdGVfbW90aW9u
X2IocywgbWJfeCwgbWJfeSwgcy0+Yl9iYWNrX212X3RhYmxlLCAyLCBzLT5iX2NvZGUpICsKKyAg
ICBibWluID0gZXN0aW1hdGVfbW90aW9uX2IocywgbWJfeCwgbWJfeSwgcy0+Yl9iYWNrX212X3Rh
YmxlLCAyLCBzLT5jLmJfY29kZSkgKwogICAgICAgICAgICAyICogYy0+bWJfcGVuYWx0eV9mYWN0
b3I7CiAgICAgZmZfZGxvZyhjLT5hdmN0eCwgIiAlZCAlZCAiLCBzLT5iX2ZvcndfbXZfdGFibGVb
eHldWzBdLCBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzFdKTsKIApAQCAtMTUzNSwxMSArMTUzNiwx
MSBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywK
ICAgICBpZiAoYy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX01FKSB7
CiAvL0ZJWE1FIG1iIHR5cGUgcGVuYWx0eQogICAgICAgICBjLT5za2lwPTA7Ci0gICAgICAgIGMt
PmN1cnJlbnRfbXZfcGVuYWx0eT0gYy0+bXZfcGVuYWx0eVtzLT5mX2NvZGVdICsgTUFYX0RNVjsK
KyAgICAgICAgYy0+Y3VycmVudF9tdl9wZW5hbHR5PSBjLT5tdl9wZW5hbHR5W3MtPmMuZl9jb2Rl
XSArIE1BWF9ETVY7CiAgICAgICAgIGZpbWluPSBpbnRlcmxhY2VkX3NlYXJjaChzLCAwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yl9maWVsZF9tdl90YWJsZVswXSwgcy0+
Yl9maWVsZF9zZWxlY3RfdGFibGVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzBdLCBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzFdLCAw
KTsKLSAgICAgICAgYy0+Y3VycmVudF9tdl9wZW5hbHR5PSBjLT5tdl9wZW5hbHR5W3MtPmJfY29k
ZV0gKyBNQVhfRE1WOworICAgICAgICBjLT5jdXJyZW50X212X3BlbmFsdHk9IGMtPm12X3BlbmFs
dHlbcy0+Yy5iX2NvZGVdICsgTUFYX0RNVjsKICAgICAgICAgYmltaW49IGludGVybGFjZWRfc2Vh
cmNoKHMsIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5iX2ZpZWxkX212
X3RhYmxlWzFdLCBzLT5iX2ZpZWxkX3NlbGVjdF90YWJsZVsxXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMtPmJfYmFja19tdl90YWJsZVt4eV1bMF0sIHMtPmJfYmFja19tdl90
YWJsZVt4eV1bMV0sIDApOwpAQCAtMTU3Myw3ICsxNTc0LDcgQEAgdm9pZCBmZl9lc3RpbWF0ZV9i
X2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4dCAqIHMsCiAKICAgICAgICAgc2NvcmU9ICgodW5z
aWduZWQpKHNjb3JlKnNjb3JlICsgMTI4KjI1NikpPj4xNjsKICAgICAgICAgYy0+bWNfbWJfdmFy
X3N1bV90ZW1wICs9IHNjb3JlOwotICAgICAgICBzLT5tY19tYl92YXJbbWJfeSpzLT5tYl9zdHJp
ZGUgKyBtYl94XSA9IHNjb3JlOyAvL0ZJWE1FIHVzZSBTU0UKKyAgICAgICAgcy0+bWNfbWJfdmFy
W21iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94XSA9IHNjb3JlOyAvL0ZJWE1FIHVzZSBTU0UKICAg
ICB9CiAKICAgICBpZihjLT5hdmN0eC0+bWJfZGVjaXNpb24gPiBGRl9NQl9ERUNJU0lPTl9TSU1Q
TEUpewpAQCAtMTU4NywzOSArMTU4OCwzOSBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90
aW9uKE1wZWdFbmNDb250ZXh0ICogcywKICAgICAgICAgfQogICAgICAgICAgLy9GSVhNRSBzb21l
dGhpbmcgc21hcnRlcgogICAgICAgICBpZihkbWluPjI1NioyNTYqMTYpIHR5cGUmPSB+Q0FORElE
QVRFX01CX1RZUEVfRElSRUNUOyAvL2RvIG5vdCB0cnkgZGlyZWN0IG1vZGUgaWYgaXQgaXMgaW52
YWxpZCBmb3IgdGhpcyBNQgotICAgICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf
TVBFRzQgJiYgdHlwZSZDQU5ESURBVEVfTUJfVFlQRV9ESVJFQ1QgJiYKKyAgICAgICAgaWYgKHMt
PmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgdHlwZSZDQU5ESURBVEVfTUJfVFlQ
RV9ESVJFQ1QgJiYKICAgICAgICAgICAgIHMtPm1wdl9mbGFncyAmIEZGX01QVl9GTEFHX01WMCAm
JiAqKHVpbnQzMl90KilzLT5iX2RpcmVjdF9tdl90YWJsZVt4eV0pCiAgICAgICAgICAgICB0eXBl
IHw9IENBTkRJREFURV9NQl9UWVBFX0RJUkVDVDA7CiAgICAgfQogCi0gICAgcy0+bWJfdHlwZVtt
Yl95KnMtPm1iX3N0cmlkZSArIG1iX3hdPSB0eXBlOworICAgIHMtPm1iX3R5cGVbbWJfeSpzLT5j
Lm1iX3N0cmlkZSArIG1iX3hdPSB0eXBlOwogfQogCiAvKiBmaW5kIGJlc3QgZl9jb2RlIGZvciBN
RSB3aGljaCBkbyB1bmxpbWl0ZWQgc2VhcmNoZXMgKi8KIGludCBmZl9nZXRfYmVzdF9mY29kZShN
UFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgaW50MTZfdCAoKm12X3RhYmxlKVsyXSwg
aW50IHR5cGUpCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKLSAgICBN
b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOworICAgIE1QVkVuY0NvbnRleHQgKmNv
bnN0IHMgPSAmbS0+czsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7
CiAKICAgICBpZiAoYy0+bW90aW9uX2VzdCAhPSBGRl9NRV9aRVJPKSB7CiAgICAgICAgIGludCBz
Y29yZVs4XTsKLSAgICAgICAgaW50IGksIHksIHJhbmdlID0gYy0+YXZjdHgtPm1lX3JhbmdlID8g
Yy0+YXZjdHgtPm1lX3JhbmdlIDogKElOVF9NQVgvMik7CisgICAgICAgIGludCBpLCByYW5nZSA9
IGMtPmF2Y3R4LT5tZV9yYW5nZSA/IGMtPmF2Y3R4LT5tZV9yYW5nZSA6IChJTlRfTUFYLzIpOwog
ICAgICAgICBjb25zdCB1aW50OF90ICogZmNvZGVfdGFiID0gbS0+ZmNvZGVfdGFiOwogICAgICAg
ICBpbnQgYmVzdF9mY29kZT0tMTsKICAgICAgICAgaW50IGJlc3Rfc2NvcmU9LTEwMDAwMDAwOwog
Ci0gICAgICAgIGlmIChzLT5tc21wZWc0X3ZlcnNpb24gIT0gTVNNUDRfVU5VU0VEKQorICAgICAg
ICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gIT0gTVNNUDRfVU5VU0VEKQogICAgICAgICAgICAg
cmFuZ2U9IEZGTUlOKHJhbmdlLCAxNik7Ci0gICAgICAgIGVsc2UgaWYgKHMtPmNvZGVjX2lkID09
IEFWX0NPREVDX0lEX01QRUcyVklERU8gJiYKKyAgICAgICAgZWxzZSBpZiAocy0+Yy5jb2RlY19p
ZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPICYmCiAgICAgICAgICAgICAgICAgIGMtPmF2Y3R4
LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPj0gRkZfQ09NUExJQU5DRV9OT1JNQUwpCiAgICAgICAg
ICAgICByYW5nZT0gRkZNSU4ocmFuZ2UsIDI1Nik7CiAKLSAgICAgICAgZm9yKGk9MDsgaTw4OyBp
KyspIHNjb3JlW2ldPSBzLT5tYl9udW0qKDgtaSk7CisgICAgICAgIGZvcihpPTA7IGk8ODsgaSsr
KSBzY29yZVtpXT0gcy0+Yy5tYl9udW0qKDgtaSk7CiAKLSAgICAgICAgZm9yKHk9MDsgeTxzLT5t
Yl9oZWlnaHQ7IHkrKyl7CisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcy0+Yy5tYl9oZWln
aHQ7IHkrKykgewogICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICBpbnQgeHk9IHkqcy0+
bWJfc3RyaWRlOwotICAgICAgICAgICAgZm9yKHg9MDsgeDxzLT5tYl93aWR0aDsgeCsrLCB4eSsr
KXsKKyAgICAgICAgICAgIGludCB4eT0geSpzLT5jLm1iX3N0cmlkZTsKKyAgICAgICAgICAgIGZv
cih4PTA7IHg8cy0+Yy5tYl93aWR0aDsgeCsrLCB4eSsrKXsKICAgICAgICAgICAgICAgICBpZihz
LT5tYl90eXBlW3h5XSAmIHR5cGUpewogICAgICAgICAgICAgICAgICAgICBpbnQgbXg9IG12X3Rh
YmxlW3h5XVswXTsKICAgICAgICAgICAgICAgICAgICAgaW50IG15PSBtdl90YWJsZVt4eV1bMV07
CkBAIC0xNjMxLDcgKzE2MzIsNyBAQCBpbnQgZmZfZ2V0X2Jlc3RfZmNvZGUoTVBWTWFpbkVuY0Nv
bnRleHQgKmNvbnN0IG0sIGNvbnN0IGludDE2X3QgKCptdl90YWJsZSlbMl0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBmb3Ioaj0wOyBq
PGZjb2RlICYmIGo8ODsgaisrKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5waWN0
X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQiB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPm1jX21iX3Zhclt4eV0gPCBzLT5tYl92YXJbeHldKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjb3JlW2pdLT0gMTcwOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC0xNjUyLDQyICsxNjUzLDQyIEBAIGludCBmZl9nZXRfYmVzdF9mY29kZShNUFZNYWluRW5j
Q29udGV4dCAqY29uc3QgbSwgY29uc3QgaW50MTZfdCAoKm12X3RhYmxlKVsyXSwKICAgICB9CiB9
CiAKLXZvaWQgZmZfZml4X2xvbmdfcF9tdnMoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgdHlwZSkK
K3ZvaWQgZmZfZml4X2xvbmdfcF9tdnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IHR5cGUp
CiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKLSAgICBjb25zdCBp
bnQgZl9jb2RlPSBzLT5mX2NvZGU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZz
LT5jLm1lOworICAgIGNvbnN0IGludCBmX2NvZGU9IHMtPmMuZl9jb2RlOwogICAgIGludCB5LCBy
YW5nZTsKLSAgICBhdl9hc3NlcnQwKHMtPnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX1ApOwor
ICAgIGF2X2Fzc2VydDAocy0+Yy5waWN0X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9QKTsKIAotICAg
IHJhbmdlID0gKCgocy0+b3V0X2Zvcm1hdCA9PSBGTVRfTVBFRzEgfHwgcy0+bXNtcGVnNF92ZXJz
aW9uICE9IE1TTVA0X1VOVVNFRCkgPyA4IDogMTYpIDw8IGZfY29kZSk7CisgICAgcmFuZ2UgPSAo
KChzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01QRUcxIHx8IHMtPmMubXNtcGVnNF92ZXJzaW9uICE9
IE1TTVA0X1VOVVNFRCkgPyA4IDogMTYpIDw8IGZfY29kZSk7CiAKLSAgICBhdl9hc3NlcnQwKHJh
bmdlIDw9IDE2IHx8IHMtPm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9VTlVTRUQpOwotICAgIGF2
X2Fzc2VydDAocmFuZ2UgPD0yNTYgfHwgIShzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVH
MlZJREVPICYmIGMtPmF2Y3R4LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPj0gRkZfQ09NUExJQU5D
RV9OT1JNQUwpKTsKKyAgICBhdl9hc3NlcnQwKHJhbmdlIDw9IDE2IHx8IHMtPmMubXNtcGVnNF92
ZXJzaW9uID09IE1TTVA0X1VOVVNFRCk7CisgICAgYXZfYXNzZXJ0MChyYW5nZSA8PTI1NiB8fCAh
KHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzJWSURFTyAmJiBjLT5hdmN0eC0+c3Ry
aWN0X3N0ZF9jb21wbGlhbmNlID49IEZGX0NPTVBMSUFOQ0VfTk9STUFMKSk7CiAKICAgICBpZihj
LT5hdmN0eC0+bWVfcmFuZ2UgJiYgcmFuZ2UgPiBjLT5hdmN0eC0+bWVfcmFuZ2UpIHJhbmdlPSBj
LT5hdmN0eC0+bWVfcmFuZ2U7CiAKICAgICBpZiAoYy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNf
RkxBR180TVYpIHsKLSAgICAgICAgY29uc3QgaW50IHdyYXA9IHMtPmI4X3N0cmlkZTsKKyAgICAg
ICAgY29uc3QgaW50IHdyYXA9IHMtPmMuYjhfc3RyaWRlOwogCiAgICAgICAgIC8qIGNsaXAgLyBj
b252ZXJ0IHRvIGludHJhIDh4OCB0eXBlIE1WcyAqLwotICAgICAgICBmb3IoeT0wOyB5PHMtPm1i
X2hlaWdodDsgeSsrKXsKKyAgICAgICAgZm9yKHk9MDsgeTxzLT5jLm1iX2hlaWdodDsgeSsrKXsK
ICAgICAgICAgICAgIGludCB4eT0geSoyKndyYXA7Ci0gICAgICAgICAgICBpbnQgaT0geSpzLT5t
Yl9zdHJpZGU7CisgICAgICAgICAgICBpbnQgaT0geSpzLT5jLm1iX3N0cmlkZTsKICAgICAgICAg
ICAgIGludCB4OwogCi0gICAgICAgICAgICBmb3IoeD0wOyB4PHMtPm1iX3dpZHRoOyB4Kyspewor
ICAgICAgICAgICAgZm9yKHg9MDsgeDxzLT5jLm1iX3dpZHRoOyB4KyspewogICAgICAgICAgICAg
ICAgIGlmKHMtPm1iX3R5cGVbaV0mQ0FORElEQVRFX01CX1RZUEVfSU5URVI0Vil7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBibG9jazsKICAgICAgICAgICAgICAgICAgICAgZm9yKGJsb2NrPTA7
IGJsb2NrPDQ7IGJsb2NrKyspewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZj0gKGJs
b2NrJiAxKSArIChibG9jaz4+MSkqd3JhcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
eCA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVsgeHkgKyBvZmYgXVswXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBteSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVsgeHkgKyBvZmYg
XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBteCA9IHMtPmMuY3VyX3BpYy5tb3Rp
b25fdmFsWzBdWyB4eSArIG9mZiBdWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG15
ID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bIHh5ICsgb2ZmIF1bMV07CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmKCAgIG14ID49cmFuZ2UgfHwgbXggPC1yYW5nZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgbXkgPj1yYW5nZSB8fCBteSA8LXJhbmdlKXsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLT5tYl90eXBlW2ldICY9IH5DQU5ESURBVEVfTUJfVFlQRV9J
TlRFUjRWOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm1iX3R5cGVbaV0gfD0gdHlw
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jdXJfcGljLm1iX3R5cGVbaV0gPSB0
eXBlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuY3VyX3BpYy5tYl90eXBlW2ld
ID0gdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KQEAgLTE3MDEsMTQgKzE3MDIsMTQgQEAgdm9pZCBmZl9maXhf
bG9uZ19wX212cyhNcGVnRW5jQ29udGV4dCAqIHMsIGludCB0eXBlKQogLyoqCiAgKiBAcGFyYW0g
dHJ1bmNhdGUgMSBmb3IgdHJ1bmNhdGlvbiwgMCBmb3IgdXNpbmcgaW50cmEKICAqLwotdm9pZCBm
Zl9maXhfbG9uZ19tdnMoTXBlZ0VuY0NvbnRleHQgKiBzLCB1aW50OF90ICpmaWVsZF9zZWxlY3Rf
dGFibGUsIGludCBmaWVsZF9zZWxlY3QsCit2b2lkIGZmX2ZpeF9sb25nX212cyhNUFZFbmNDb250
ZXh0ICpjb25zdCBzLCB1aW50OF90ICpmaWVsZF9zZWxlY3RfdGFibGUsIGludCBmaWVsZF9zZWxl
Y3QsCiAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICgqbXZfdGFibGUpWzJdLCBpbnQgZl9j
b2RlLCBpbnQgdHlwZSwgaW50IHRydW5jYXRlKQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBj
b25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1l
OwogICAgIGludCB5LCBoX3JhbmdlLCB2X3JhbmdlOwogCiAgICAgLy8gUkFMOiA4IGluIE1QRUct
MSwgMTYgaW4gTVBFRy00Ci0gICAgaW50IHJhbmdlID0gKCgocy0+b3V0X2Zvcm1hdCA9PSBGTVRf
TVBFRzEgfHwgcy0+bXNtcGVnNF92ZXJzaW9uICE9IE1TTVA0X1VOVVNFRCkgPyA4IDogMTYpIDw8
IGZfY29kZSk7CisgICAgaW50IHJhbmdlID0gKCgocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9NUEVH
MSB8fCBzLT5jLm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQpID8gOCA6IDE2KSA8PCBm
X2NvZGUpOwogCiAgICAgaWYoYy0+YXZjdHgtPm1lX3JhbmdlICYmIHJhbmdlID4gYy0+YXZjdHgt
Pm1lX3JhbmdlKSByYW5nZT0gYy0+YXZjdHgtPm1lX3JhbmdlOwogCkBAIC0xNzE2LDEwICsxNzE3
LDEwIEBAIHZvaWQgZmZfZml4X2xvbmdfbXZzKE1wZWdFbmNDb250ZXh0ICogcywgdWludDhfdCAq
ZmllbGRfc2VsZWN0X3RhYmxlLCBpbnQgZmllbGRfCiAgICAgdl9yYW5nZT0gZmllbGRfc2VsZWN0
X3RhYmxlID8gcmFuZ2U+PjEgOiByYW5nZTsKIAogICAgIC8qIGNsaXAgLyBjb252ZXJ0IHRvIGlu
dHJhIDE2eDE2IHR5cGUgTVZzICovCi0gICAgZm9yKHk9MDsgeTxzLT5tYl9oZWlnaHQ7IHkrKyl7
CisgICAgZm9yKHk9MDsgeTxzLT5jLm1iX2hlaWdodDsgeSsrKXsKICAgICAgICAgaW50IHg7Ci0g
ICAgICAgIGludCB4eT0geSpzLT5tYl9zdHJpZGU7Ci0gICAgICAgIGZvcih4PTA7IHg8cy0+bWJf
d2lkdGg7IHgrKyl7CisgICAgICAgIGludCB4eT0geSpzLT5jLm1iX3N0cmlkZTsKKyAgICAgICAg
Zm9yKHg9MDsgeDxzLT5jLm1iX3dpZHRoOyB4KyspewogICAgICAgICAgICAgaWYgKHMtPm1iX3R5
cGVbeHldICYgdHlwZSl7ICAgIC8vIFJBTDogInR5cGUiIHRlc3QgYWRkZWQuLi4KICAgICAgICAg
ICAgICAgICBpZiAoIWZpZWxkX3NlbGVjdF90YWJsZSB8fCBmaWVsZF9zZWxlY3RfdGFibGVbeHld
ID09IGZpZWxkX3NlbGVjdCkgewogICAgICAgICAgICAgICAgICAgICBpZiggICBtdl90YWJsZVt4
eV1bMF0gPj1oX3JhbmdlIHx8IG12X3RhYmxlW3h5XVswXSA8LWhfcmFuZ2UKZGlmZiAtLWdpdCBh
L2xpYmF2Y29kZWMvbW90aW9uX2VzdC5oIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmgKaW5kZXgg
NWZhOTYxNjFjNi4uMTY5NzVhYmZlMSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tb3Rpb25fZXN0
LmgKKysrIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNs
dWRlICJtZV9jbXAuaCIKICNpbmNsdWRlICJxcGVsZHNwLmgiCiAKLXN0cnVjdCBNcGVnRW5jQ29u
dGV4dDsKK3R5cGVkZWYgc3RydWN0IE1QVkVuY0NvbnRleHQgTVBWRW5jQ29udGV4dDsKIHR5cGVk
ZWYgc3RydWN0IE1QVk1haW5FbmNDb250ZXh0IE1QVk1haW5FbmNDb250ZXh0OwogCiAjaWYgQVJD
SF9JQTY0IC8vIExpbWl0IHN0YXRpYyBhcnJheXMgdG8gYXZvaWQgZ2NjIGZhaWxpbmcgInNob3J0
IGRhdGEgc2VnbWVudCBvdmVyZmxvd2VkIgpAQCAtMTAwLDcgKzEwMCw3IEBAIHR5cGVkZWYgc3Ry
dWN0IE1vdGlvbkVzdENvbnRleHQgewogICAgIHFwZWxfbWNfZnVuYygqcXBlbF9hdmcpWzE2XTsK
ICAgICBjb25zdCB1aW50OF90ICgqbXZfcGVuYWx0eSlbTUFYX0RNViAqIDIgKyAxXTsgLy8vPCBi
aXQgYW1vdW50IG5lZWRlZCB0byBlbmNvZGUgYSBNVgogICAgIGNvbnN0IHVpbnQ4X3QgKmN1cnJl
bnRfbXZfcGVuYWx0eTsKLSAgICBpbnQgKCpzdWJfbW90aW9uX3NlYXJjaCkoc3RydWN0IE1wZWdF
bmNDb250ZXh0ICpzLAorICAgIGludCAoKnN1Yl9tb3Rpb25fc2VhcmNoKShNUFZFbmNDb250ZXh0
ICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm14X3B0ciwgaW50ICpteV9w
dHIsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4
LCBpbnQgcmVmX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwg
aW50IGgpOwpAQCAtMTIyLDI3ICsxMjIsMjcgQEAgc3RhdGljIGlubGluZSBpbnQgZmZfaDI2M19y
b3VuZF9jaHJvbWEoaW50IHgpCiBpbnQgZmZfbWVfaW5pdChNb3Rpb25Fc3RDb250ZXh0ICpjLCBz
dHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0
IE1FQ21wQ29udGV4dCAqbWVjYywgaW50IG1wdmVuYyk7CiAKLXZvaWQgZmZfbWVfaW5pdF9waWMo
c3RydWN0IE1wZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbWVfaW5pdF9waWMoTVBWRW5jQ29u
dGV4dCAqcyk7CiAKLXZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oc3RydWN0IE1wZWdF
bmNDb250ZXh0ICpzLCBpbnQgbWJfeCwgaW50IG1iX3kpOwotdm9pZCBmZl9lc3RpbWF0ZV9iX2Zy
YW1lX21vdGlvbihzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMsIGludCBtYl94LCBpbnQgbWJfeSk7
Cit2b2lkIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKnMsIGludCBt
Yl94LCBpbnQgbWJfeSk7Cit2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1QVkVuY0Nv
bnRleHQgKnMsIGludCBtYl94LCBpbnQgbWJfeSk7CiAKLWludCBmZl9wcmVfZXN0aW1hdGVfcF9m
cmFtZV9tb3Rpb24oc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAoraW50IGZmX3ByZV9lc3RpbWF0
ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1iX3kpOwogCi1pbnQgZmZfZXB6c19tb3Rpb25f
c2VhcmNoKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywgaW50ICpteF9wdHIsIGludCAqbXlfcHRy
LAoraW50IGZmX2VwenNfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpzLCBpbnQgKm14X3B0
ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBQWzEwXVsyXSwg
aW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLCBpbnQgcmVmX212X3NjYWxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpOwogCi1pbnQgZmZfZ2V0X21iX3Njb3Jl
KHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzcmNfaW5kZXgs
CitpbnQgZmZfZ2V0X21iX3Njb3JlKE1QVkVuY0NvbnRleHQgKnMsIGludCBteCwgaW50IG15LCBp
bnQgc3JjX2luZGV4LAogICAgICAgICAgICAgICAgICAgICBpbnQgcmVmX2luZGV4LCBpbnQgc2l6
ZSwgaW50IGgsIGludCBhZGRfcmF0ZSk7CiAKIGludCBmZl9nZXRfYmVzdF9mY29kZShNUFZNYWlu
RW5jQ29udGV4dCAqbSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICgqbXZf
dGFibGUpWzJdLCBpbnQgdHlwZSk7CiAKLXZvaWQgZmZfZml4X2xvbmdfcF9tdnMoc3RydWN0IE1w
ZWdFbmNDb250ZXh0ICpzLCBpbnQgdHlwZSk7Ci12b2lkIGZmX2ZpeF9sb25nX212cyhzdHJ1Y3Qg
TXBlZ0VuY0NvbnRleHQgKnMsIHVpbnQ4X3QgKmZpZWxkX3NlbGVjdF90YWJsZSwKK3ZvaWQgZmZf
Zml4X2xvbmdfcF9tdnMoTVBWRW5jQ29udGV4dCAqcywgaW50IHR5cGUpOwordm9pZCBmZl9maXhf
bG9uZ19tdnMoTVBWRW5jQ29udGV4dCAqcywgdWludDhfdCAqZmllbGRfc2VsZWN0X3RhYmxlLAog
ICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkX3NlbGVjdCwgaW50MTZfdCAoKm12X3RhYmxl
KVsyXSwgaW50IGZfY29kZSwKICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCBpbnQgdHJ1
bmNhdGUpOwogCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21vdGlvbl9lc3RfdGVtcGxhdGUuYyBi
L2xpYmF2Y29kZWMvbW90aW9uX2VzdF90ZW1wbGF0ZS5jCmluZGV4IDU0OThmOWM5ODIuLjdjN2U2
NDU2MjUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbW90aW9uX2VzdF90ZW1wbGF0ZS5jCisrKyBi
L2xpYmF2Y29kZWMvbW90aW9uX2VzdF90ZW1wbGF0ZS5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8K
IAogI2luY2x1ZGUgImxpYmF2dXRpbC9xc29ydC5oIgotI2luY2x1ZGUgIm1wZWd2aWRlby5oIgor
I2luY2x1ZGUgIm1wZWd2aWRlb2VuYy5oIgogCiAvL0xldCB1cyBob3BlIGdjYyB3aWxsIHJlbW92
ZSB0aGUgdW51c2VkIHZhcnMgLi4uKGdjYyAzLjIuMiBzZWVtcyB0byBkbyBpdCAuLi4pCiAjZGVm
aW5lIExPQURfQ09NTU9OXApAQCAtNDcsMTIgKzQ3LDEyIEBACiAgICAgQ09QWTNfSUZfTFQoZG1p
biwgZCwgYngsIGh4LCBieSwgaHkpXAogfQogCi1zdGF0aWMgaW50IGhwZWxfbW90aW9uX3NlYXJj
aChNcGVnRW5jQ29udGV4dCAqIHMsCitzdGF0aWMgaW50IGhwZWxfbW90aW9uX3NlYXJjaChNUFZF
bmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAqbXhfcHRyLCBpbnQgKm15X3B0ciwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90aW9uRXN0Q29u
dGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0g
JnMtPmMubWU7CiAgICAgY29uc3QgaW50IG14ID0gKm14X3B0cjsKICAgICBjb25zdCBpbnQgbXkg
PSAqbXlfcHRyOwogICAgIGNvbnN0IGludCBwZW5hbHR5X2ZhY3Rvcj0gYy0+c3ViX3BlbmFsdHlf
ZmFjdG9yOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyBpbnQgaHBlbF9tb3Rpb25fc2VhcmNo
KE1wZWdFbmNDb250ZXh0ICogcywKICAgICByZXR1cm4gZG1pbjsKIH0KIAotc3RhdGljIGludCBu
b19zdWJfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsCitzdGF0aWMgaW50IG5vX3N1
Yl9tb3Rpb25fc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgaW50ICpt
eF9wdHIsIGludCAqbXlfcHRyLCBpbnQgZG1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCkKQEAgLTE2MiwxMSArMTYyLDExIEBAIHN0
YXRpYyBpbnQgbm9fc3ViX21vdGlvbl9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIHJl
dHVybiBkbWluOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBnZXRfbWJfc2NvcmUoTXBlZ0VuY0Nv
bnRleHQgKnMsIGludCBteCwgaW50IG15LAorc3RhdGljIGlubGluZSBpbnQgZ2V0X21iX3Njb3Jl
KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCBteCwgaW50IG15LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGludCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoLCBpbnQgYWRkX3JhdGUpCiB7Ci0g
ICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250
ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAgY29uc3QgaW50IHBlbmFsdHlfZmFjdG9yPSBj
LT5tYl9wZW5hbHR5X2ZhY3RvcjsKICAgICBjb25zdCBpbnQgZmxhZ3M9IGMtPm1iX2ZsYWdzOwog
ICAgIGNvbnN0IGludCBxcGVsPSBmbGFncyAmIEZMQUdfUVBFTDsKQEAgLTE4OSw3ICsxODksNyBA
QCBzdGF0aWMgaW5saW5lIGludCBnZXRfbWJfc2NvcmUoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBt
eCwgaW50IG15LAogICAgIHJldHVybiBkOwogfQogCi1pbnQgZmZfZ2V0X21iX3Njb3JlKE1wZWdF
bmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwgaW50IHNyY19pbmRleCwKK2ludCBmZl9nZXRf
bWJfc2NvcmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG14LCBpbnQgbXksIGludCBzcmNf
aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIGludCByZWZfaW5kZXgsIGludCBzaXplLCBpbnQg
aCwgaW50IGFkZF9yYXRlKQogewogICAgIHJldHVybiBnZXRfbWJfc2NvcmUocywgbXgsIG15LCBz
cmNfaW5kZXgsIHJlZl9pbmRleCwgc2l6ZSwgaCwgYWRkX3JhdGUpOwpAQCAtMjA0LDEyICsyMDQs
MTIgQEAgaW50IGZmX2dldF9tYl9zY29yZShNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQg
bXksIGludCBzcmNfaW5kZXgsCiAgICAgQ09QWTNfSUZfTFQoZG1pbiwgZCwgYngsIGh4LCBieSwg
aHkpXAogfQogCi1zdGF0aWMgaW50IHFwZWxfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4dCAq
IHMsCitzdGF0aWMgaW50IHFwZWxfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbXhfcHRyLCBpbnQgKm15
X3B0ciwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNy
Y19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZz
LT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAgY29u
c3QgaW50IG14ID0gKm14X3B0cjsKICAgICBjb25zdCBpbnQgbXkgPSAqbXlfcHRyOwogICAgIGNv
bnN0IGludCBwZW5hbHR5X2ZhY3Rvcj0gYy0+c3ViX3BlbmFsdHlfZmFjdG9yOwpAQCAtMjU2LDcg
KzI1Niw3IEBAIHN0YXRpYyBpbnQgcXBlbF9tb3Rpb25fc2VhcmNoKE1wZWdFbmNDb250ZXh0ICog
cywKICAgICAgICAgaW50IGJlc3RfcG9zWzhdWzJdOwogCiAgICAgICAgIG1lbXNldChiZXN0LCA2
NCwgc2l6ZW9mKGludCkqOCk7Ci0gICAgICAgIGlmKHMtPm1lLmRpYV9zaXplPj0yKXsKKyAgICAg
ICAgaWYocy0+Yy5tZS5kaWFfc2l6ZT49Mil7CiAgICAgICAgICAgICBjb25zdCBpbnQgdGw9IHNj
b3JlX21hcFsoaW5kZXgtKDE8PE1FX01BUF9TSElGVCktMSkmKE1FX01BUF9TSVpFLTEpXTsKICAg
ICAgICAgICAgIGNvbnN0IGludCBibD0gc2NvcmVfbWFwWyhpbmRleCsoMTw8TUVfTUFQX1NISUZU
KS0xKSYoTUVfTUFQX1NJWkUtMSldOwogICAgICAgICAgICAgY29uc3QgaW50IHRyPSBzY29yZV9t
YXBbKGluZGV4LSgxPDxNRV9NQVBfU0hJRlQpKzEpJihNRV9NQVBfU0laRS0xKV07CkBAIC00MDMs
MjEgKzQwMywyMSBAQCBzdGF0aWMgaW50IHFwZWxfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4
dCAqIHMsCiB9CiAKICNkZWZpbmUgY2hlY2soeCx5LFMsdilcCi1pZiggKHgpPCh4bWluPDwoUykp
ICkgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIiVkICVkICVkICVkICVkIHhtaW4iICN2LCB4
bWluLCAoeCksICh5KSwgcy0+bWJfeCwgcy0+bWJfeSk7XAotaWYoICh4KT4oeG1heDw8KFMpKSAp
IGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICIlZCAlZCAlZCAlZCAlZCB4bWF4IiAjdiwgeG1h
eCwgKHgpLCAoeSksIHMtPm1iX3gsIHMtPm1iX3kpO1wKLWlmKCAoeSk8KHltaW48PChTKSkgKSBh
dl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiJWQgJWQgJWQgJWQgJWQgeW1pbiIgI3YsIHltaW4s
ICh4KSwgKHkpLCBzLT5tYl94LCBzLT5tYl95KTtcCi1pZiggKHkpPih5bWF4PDwoUykpICkgYXZf
bG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIiVkICVkICVkICVkICVkIHltYXgiICN2LCB5bWF4LCAo
eCksICh5KSwgcy0+bWJfeCwgcy0+bWJfeSk7XAoraWYoICh4KTwoeG1pbjw8KFMpKSApIGF2X2xv
ZyhOVUxMLCBBVl9MT0dfRVJST1IsICIlZCAlZCAlZCAlZCAlZCB4bWluIiAjdiwgeG1pbiwgKHgp
LCAoeSksIHMtPmMubWJfeCwgcy0+Yy5tYl95KTtcCitpZiggKHgpPih4bWF4PDwoUykpICkgYXZf
bG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIiVkICVkICVkICVkICVkIHhtYXgiICN2LCB4bWF4LCAo
eCksICh5KSwgcy0+Yy5tYl94LCBzLT5jLm1iX3kpO1wKK2lmKCAoeSk8KHltaW48PChTKSkgKSBh
dl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiJWQgJWQgJWQgJWQgJWQgeW1pbiIgI3YsIHltaW4s
ICh4KSwgKHkpLCBzLT5jLm1iX3gsIHMtPmMubWJfeSk7XAoraWYoICh5KT4oeW1heDw8KFMpKSAp
IGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICIlZCAlZCAlZCAlZCAlZCB5bWF4IiAjdiwgeW1h
eCwgKHgpLCAoeSksIHMtPmMubWJfeCwgcy0+Yy5tYl95KTtcCiAKICNkZWZpbmUgTE9BRF9DT01N
T04yXAogICAgIHVpbnQzMl90ICptYXA9IGMtPm1hcDtcCiAgICAgY29uc3QgaW50IHFwZWw9IGZs
YWdzJkZMQUdfUVBFTDtcCiAgICAgY29uc3QgaW50IHNoaWZ0PSAxK3FwZWw7XAogCi1zdGF0aWMg
YXZfYWx3YXlzX2lubGluZSBpbnQgc21hbGxfZGlhbW9uZF9zZWFyY2goTXBlZ0VuY0NvbnRleHQg
KiBzLCBpbnQgKmJlc3QsIGludCBkbWluLAorc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IHNt
YWxsX2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50
IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2lu
ZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykK
IHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVz
dENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJv
bWFfY21wZjsKICAgICBpbnQgbmV4dF9kaXI9LTE7CiAgICAgTE9BRF9DT01NT04KQEAgLTQ1NCwx
MSArNDU0LDExIEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBzbWFsbF9kaWFtb25kX3Nl
YXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwKICAgICB9CiB9CiAKLXN0YXRpYyBp
bnQgZnVubnlfZGlhbW9uZF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgKmJlc3QsIGlu
dCBkbWluLAorc3RhdGljIGludCBmdW5ueV9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0ICpj
b25zdCBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBlbmFs
dHlfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNp
emUsIGludCBoLCBpbnQgZmxhZ3MpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9
ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAg
bWVfY21wX2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7CiAgICAgaW50IGRpYV9zaXplOwogICAgIExP
QURfQ09NTU9OCkBAIC00OTYsMTEgKzQ5NiwxMSBAQCBzdGF0aWMgaW50IGZ1bm55X2RpYW1vbmRf
c2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAgICByZXR1
cm4gZG1pbjsKIH0KIAotc3RhdGljIGludCBoZXhfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywg
aW50ICpiZXN0LCBpbnQgZG1pbiwKK3N0YXRpYyBpbnQgaGV4X3NlYXJjaChNUFZFbmNDb250ZXh0
ICpjb25zdCBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBl
bmFsdHlfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNpemUsIGludCBoLCBpbnQgZmxhZ3MsIGludCBkaWFfc2l6ZSkKIHsKLSAgICBNb3Rpb25Fc3RD
b250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBj
PSAmcy0+Yy5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FE
X0NPTU1PTgogICAgIExPQURfQ09NTU9OMgpAQCAtNTMwLDExICs1MzAsMTEgQEAgc3RhdGljIGlu
dCBoZXhfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAg
ICByZXR1cm4gZG1pbjsKIH0KIAotc3RhdGljIGludCBsMnNfZGlhX3NlYXJjaChNcGVnRW5jQ29u
dGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCitzdGF0aWMgaW50IGwyc19kaWFfc2VhcmNo
KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4
LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RD
b250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBj
PSAmcy0+Yy5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FE
X0NPTU1PTgogICAgIExPQURfQ09NTU9OMgpAQCAtNTY4LDExICs1NjgsMTEgQEAgc3RhdGljIGlu
dCBsMnNfZGlhX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4s
CiAgICAgcmV0dXJuIGRtaW47CiB9CiAKLXN0YXRpYyBpbnQgdW1oX3NlYXJjaChNcGVnRW5jQ29u
dGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCitzdGF0aWMgaW50IHVtaF9zZWFyY2goTVBW
RW5jQ29udGV4dCAqY29uc3QgcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGNv
bnN0IGludCBwZW5hbHR5X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzaXplLCBpbnQgaCwgaW50IGZsYWdzKQogewotICAgIE1vdGlvbkVzdENvbnRl
eHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZz
LT5jLm1lOwogICAgIG1lX2NtcF9mdW5jIGNtcGYsIGNocm9tYV9jbXBmOwogICAgIExPQURfQ09N
TU9OCiAgICAgTE9BRF9DT01NT04yCkBAIC02MTUsMTEgKzYxNSwxMSBAQCBzdGF0aWMgaW50IHVt
aF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgIHJl
dHVybiBoZXhfc2VhcmNoKHMsIGJlc3QsIGRtaW4sIHNyY19pbmRleCwgcmVmX2luZGV4LCBwZW5h
bHR5X2ZhY3Rvciwgc2l6ZSwgaCwgZmxhZ3MsIDIpOwogfQogCi1zdGF0aWMgaW50IGZ1bGxfc2Vh
cmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKK3N0YXRpYyBpbnQg
ZnVsbF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50ICpiZXN0LCBpbnQgZG1pbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGlu
dCByZWZfaW5kZXgsIGNvbnN0IGludCBwZW5hbHR5X2ZhY3RvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCwgaW50IGZsYWdzKQogewotICAg
IE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4
dCAqIGNvbnN0IGM9ICZzLT5jLm1lOwogICAgIG1lX2NtcF9mdW5jIGNtcGYsIGNocm9tYV9jbXBm
OwogICAgIExPQURfQ09NTU9OCiAgICAgTE9BRF9DT01NT04yCkBAIC02NzgsMTEgKzY3OCwxMSBA
QCBzdGF0aWMgaW50IGZ1bGxfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBp
bnQgZG1pbiwKIH0KIAogI2RlZmluZSBNQVhfU0FCX1NJWkUgTUVfTUFQX1NJWkUKLXN0YXRpYyBp
bnQgc2FiX2RpYW1vbmRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQg
ZG1pbiwKK3N0YXRpYyBpbnQgc2FiX2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0
IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9m
YWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwg
aW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMt
Pm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBtZV9j
bXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBNaW5pbWEgbWluaW1hW01BWF9TQUJfU0la
RV07CiAgICAgY29uc3QgaW50IG1pbmltYV9jb3VudD0gRkZBQlMoYy0+ZGlhX3NpemUpOwpAQCAt
NzY4LDExICs3NjgsMTEgQEAgc3RhdGljIGludCBzYWJfZGlhbW9uZF9zZWFyY2goTXBlZ0VuY0Nv
bnRleHQgKiBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgIHJldHVybiBkbWluOwogfQogCi1z
dGF0aWMgaW50IHZhcl9kaWFtb25kX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVz
dCwgaW50IGRtaW4sCitzdGF0aWMgaW50IHZhcl9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0
ICpjb25zdCBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBl
bmFsdHlfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNpemUsIGludCBoLCBpbnQgZmxhZ3MpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0
IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAg
ICAgbWVfY21wX2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7CiAgICAgaW50IGRpYV9zaXplOwogICAg
IExPQURfQ09NTU9OCkBAIC04MjksMTAgKzgyOSwxMCBAQCBzdGF0aWMgaW50IHZhcl9kaWFtb25k
X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgcmV0
dXJuIGRtaW47CiB9CiAKLXN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBkaWFtb25kX3NlYXJj
aChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCitzdGF0aWMgYXZfYWx3
YXlzX2lubGluZSBpbnQgZGlhbW9uZF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50
ICpiZXN0LCBpbnQgZG1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGNvbnN0IGludCBwZW5hbHR5X2ZhY3RvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCwg
aW50IGZsYWdzKXsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAg
IE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBpZihjLT5kaWFfc2l6
ZT09LTEpCiAgICAgICAgIHJldHVybiBmdW5ueV9kaWFtb25kX3NlYXJjaChzLCBiZXN0LCBkbWlu
LCBzcmNfaW5kZXgsIHJlZl9pbmRleCwgcGVuYWx0eV9mYWN0b3IsIHNpemUsIGgsIGZsYWdzKTsK
ICAgICBlbHNlIGlmKGMtPmRpYV9zaXplPC0xKQpAQCAtODU3LDExICs4NTcsMTEgQEAgc3RhdGlj
IGF2X2Fsd2F5c19pbmxpbmUgaW50IGRpYW1vbmRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywg
aW50ICpiZXN0LCBpbnQgZG0KICAgIGl0IHRha2VzIGZld2VyIGl0ZXJhdGlvbnMuIEFuZCBpdCBp
bmNyZWFzZXMgdGhlIGNoYW5jZSB0aGF0IHdlIGZpbmQgdGhlCiAgICBvcHRpbWFsIG12LgogICov
Ci1zdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZXB6c19tb3Rpb25fc2VhcmNoX2ludGVybmFs
KE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpteF9wdHIsIGludCAqbXlfcHRyLAorc3RhdGljIGF2
X2Fsd2F5c19pbmxpbmUgaW50IGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChNUFZFbmNDb250
ZXh0ICpjb25zdCBzLCBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBQWzEwXVsyXSwgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwg
Y29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgcmVmX212X3NjYWxlLCBpbnQgZmxhZ3MsIGludCBzaXplLCBpbnQgaCkKIHsKLSAgICBN
b3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQg
KiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07ICAgICAgLyoqPCB4
IGFuZCB5IGNvb3JkaW5hdGVzIG9mIHRoZSBiZXN0IG1vdGlvbiB2ZWN0b3IuCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaS5lLiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBwb3Np
dGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBjdXJyZW50
bHkgYmVpbmcgZW5jb2RlZCBhbmQgdGhlIHBvc2l0aW9uIG9mCkBAIC04NzEsOCArODcxLDggQEAg
c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChN
cGVnRW5jQ29udGV4dCAqIHMsIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
cnJlc3BvbmRpbmcgdG8gdGhlIG12IHN0b3JlZCBpbiBiZXN0W10uICovCiAgICAgdW5zaWduZWQg
bWFwX2dlbmVyYXRpb247CiAgICAgaW50IHBlbmFsdHlfZmFjdG9yOwotICAgIGNvbnN0IGludCBy
ZWZfbXZfc3RyaWRlPSBzLT5tYl9zdHJpZGU7IC8vcGFzcyBhcyBhcmcgIEZJWE1FCi0gICAgY29u
c3QgaW50IHJlZl9tdl94eSA9IHMtPm1iX3ggKyBzLT5tYl95ICogcmVmX212X3N0cmlkZTsgLy8g
YWRkIHRvIGxhc3RfbXYgYmVmb3JlIHBhc3NpbmcgRklYTUUKKyAgICBjb25zdCBpbnQgcmVmX212
X3N0cmlkZT0gcy0+Yy5tYl9zdHJpZGU7IC8vcGFzcyBhcyBhcmcgIEZJWE1FCisgICAgY29uc3Qg
aW50IHJlZl9tdl94eSA9IHMtPmMubWJfeCArIHMtPmMubWJfeSAqIHJlZl9tdl9zdHJpZGU7IC8v
IGFkZCB0byBsYXN0X212IGJlZm9yZSBwYXNzaW5nIEZJWE1FCiAgICAgbWVfY21wX2Z1bmMgY21w
ZiwgY2hyb21hX2NtcGY7CiAKICAgICBMT0FEX0NPTU1PTgpAQCAtODk2LDEyICs4OTYsMTIgQEAg
c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChN
cGVnRW5jQ29udGV4dCAqIHMsIGludAogICAgIHNjb3JlX21hcFswXT0gZG1pbjsKIAogICAgIC8v
RklYTUUgcHJlY2FsYyBmaXJzdCB0ZXJtIGJlbG93PwotICAgIGlmICgocy0+cGljdF90eXBlID09
IEFWX1BJQ1RVUkVfVFlQRV9CICYmICEoYy0+ZmxhZ3MgJiBGTEFHX0RJUkVDVCkpIHx8CisgICAg
aWYgKChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQiAmJiAhKGMtPmZsYWdzICYg
RkxBR19ESVJFQ1QpKSB8fAogICAgICAgICBzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19NVjAp
CiAgICAgICAgIGRtaW4gKz0gKG12X3BlbmFsdHlbcHJlZF94XSArIG12X3BlbmFsdHlbcHJlZF95
XSkqcGVuYWx0eV9mYWN0b3I7CiAKICAgICAvKiBmaXJzdCBsaW5lICovCi0gICAgaWYgKHMtPmZp
cnN0X3NsaWNlX2xpbmUpIHsKKyAgICBpZiAocy0+Yy5maXJzdF9zbGljZV9saW5lKSB7CiAgICAg
ICAgIENIRUNLX01WKFBfTEVGVFswXT4+c2hpZnQsIFBfTEVGVFsxXT4+c2hpZnQpCiAgICAgICAg
IENIRUNLX0NMSVBQRURfTVYoKGxhc3RfbXZbcmVmX212X3h5XVswXSpyZWZfbXZfc2NhbGUgKyAo
MTw8MTUpKT4+MTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAobGFzdF9tdltyZWZfbXZfeHld
WzFdKnJlZl9tdl9zY2FsZSArICgxPDwxNSkpPj4xNikKQEAgLTkzMCwxMyArOTMwLDEzIEBAIHN0
YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBlcHpzX21vdGlvbl9zZWFyY2hfaW50ZXJuYWwoTXBl
Z0VuY0NvbnRleHQgKiBzLCBpbnQKICAgICAgICAgaWYoYy0+cHJlX3Bhc3MpewogICAgICAgICAg
ICAgQ0hFQ0tfQ0xJUFBFRF9NVigobGFzdF9tdltyZWZfbXZfeHktMV1bMF0qcmVmX212X3NjYWxl
ICsgKDE8PDE1KSk+PjE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYXN0X212W3Jl
Zl9tdl94eS0xXVsxXSpyZWZfbXZfc2NhbGUgKyAoMTw8MTUpKT4+MTYpCi0gICAgICAgICAgICBp
Zighcy0+Zmlyc3Rfc2xpY2VfbGluZSkKKyAgICAgICAgICAgIGlmKCFzLT5jLmZpcnN0X3NsaWNl
X2xpbmUpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfQ0xJUFBFRF9NVigobGFzdF9tdltyZWZfbXZf
eHktcmVmX212X3N0cmlkZV1bMF0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobGFzdF9tdltyZWZfbXZfeHktcmVmX212X3N0cmlk
ZV1bMV0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2KQogICAgICAgICB9ZWxzZXsKICAgICAg
ICAgICAgIENIRUNLX0NMSVBQRURfTVYoKGxhc3RfbXZbcmVmX212X3h5KzFdWzBdKnJlZl9tdl9z
Y2FsZSArICgxPDwxNSkpPj4xNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFzdF9t
dltyZWZfbXZfeHkrMV1bMV0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2KQotICAgICAgICAg
ICAgaWYocy0+bWJfeSsxPHMtPmVuZF9tYl95KSAgLy9GSVhNRSByZXBsYWNlIGF0IGxlYXN0IHdp
dGggbGFzdF9zbGljZV9saW5lCisgICAgICAgICAgICBpZihzLT5jLm1iX3krMTxzLT5jLmVuZF9t
Yl95KSAgLy9GSVhNRSByZXBsYWNlIGF0IGxlYXN0IHdpdGggbGFzdF9zbGljZV9saW5lCiAgICAg
ICAgICAgICAgICAgQ0hFQ0tfQ0xJUFBFRF9NVigobGFzdF9tdltyZWZfbXZfeHkrcmVmX212X3N0
cmlkZV1bMF0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobGFzdF9tdltyZWZfbXZfeHkrcmVmX212X3N0cmlkZV1bMV0qcmVmX212
X3NjYWxlICsgKDE8PDE1KSk+PjE2KQogICAgICAgICB9CkBAIC05NDQsMTAgKzk0NCwxMCBAQCBz
dGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZXB6c19tb3Rpb25fc2VhcmNoX2ludGVybmFsKE1w
ZWdFbmNDb250ZXh0ICogcywgaW50CiAKICAgICBpZihjLT5hdmN0eC0+bGFzdF9wcmVkaWN0b3Jf
Y291bnQpewogICAgICAgICBjb25zdCBpbnQgY291bnQ9IGMtPmF2Y3R4LT5sYXN0X3ByZWRpY3Rv
cl9jb3VudDsKLSAgICAgICAgY29uc3QgaW50IHhzdGFydD0gRkZNQVgoMCwgcy0+bWJfeCAtIGNv
dW50KTsKLSAgICAgICAgY29uc3QgaW50IHlzdGFydD0gRkZNQVgoMCwgcy0+bWJfeSAtIGNvdW50
KTsKLSAgICAgICAgY29uc3QgaW50IHhlbmQ9IEZGTUlOKHMtPm1iX3dpZHRoICwgcy0+bWJfeCAr
IGNvdW50ICsgMSk7Ci0gICAgICAgIGNvbnN0IGludCB5ZW5kPSBGRk1JTihzLT5tYl9oZWlnaHQs
IHMtPm1iX3kgKyBjb3VudCArIDEpOworICAgICAgICBjb25zdCBpbnQgeHN0YXJ0PSBGRk1BWCgw
LCBzLT5jLm1iX3ggLSBjb3VudCk7CisgICAgICAgIGNvbnN0IGludCB5c3RhcnQ9IEZGTUFYKDAs
IHMtPmMubWJfeSAtIGNvdW50KTsKKyAgICAgICAgY29uc3QgaW50IHhlbmQ9IEZGTUlOKHMtPmMu
bWJfd2lkdGggLCBzLT5jLm1iX3ggKyBjb3VudCArIDEpOworICAgICAgICBjb25zdCBpbnQgeWVu
ZD0gRkZNSU4ocy0+Yy5tYl9oZWlnaHQsIHMtPmMubWJfeSArIGNvdW50ICsgMSk7CiAgICAgICAg
IGludCBtYl95OwogCiAgICAgICAgIGZvcihtYl95PXlzdGFydDsgbWJfeTx5ZW5kOyBtYl95Kysp
ewpAQCAtOTc0LDEyICs5NzQsMTIgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGVwenNf
bW90aW9uX3NlYXJjaF9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqIHMsIGludAogfQogCiAvL3Ro
aXMgZnVuY3Rpb24gaXMgZGVkaWNhdGVkIHRvIHRoZSBicmFpbiBkYW1hZ2VkIGdjYwotaW50IGZm
X2VwenNfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50ICpteF9wdHIsIGludCAq
bXlfcHRyLAoraW50IGZmX2VwenNfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz
LCBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBQWzEwXVsyXSwgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLCBpbnQgcmVmX212X3NjYWxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90
aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICog
Y29uc3QgYz0gJnMtPmMubWU7CiAvL0ZJWE1FIGNvbnZlcnQgb3RoZXIgZnVuY3Rpb25zIGluIHRo
ZSBzYW1lIHdheSBpZiBmYXN0ZXIKICAgICBpZihjLT5mbGFncz09MCAmJiBoPT0xNiAmJiBzaXpl
PT0wKXsKICAgICAgICAgcmV0dXJuIGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChzLCBteF9w
dHIsIG15X3B0ciwgUCwgc3JjX2luZGV4LCByZWZfaW5kZXgsIGxhc3RfbXYsIHJlZl9tdl9zY2Fs
ZSwgMCwgMCwgMTYpOwpAQCAtOTkwLDE5ICs5OTAsMTkgQEAgaW50IGZmX2VwenNfbW90aW9uX3Nl
YXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50ICpteF9wdHIsIGludCAqbXlfcHRyLAogICAgIH0K
IH0KIAotc3RhdGljIGludCBlcHpzX21vdGlvbl9zZWFyY2gyKE1wZWdFbmNDb250ZXh0ICogcywK
K3N0YXRpYyBpbnQgZXB6c19tb3Rpb25fc2VhcmNoMihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsIGlu
dCBQWzEwXVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwg
aW50IHJlZl9pbmRleCwgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgcmVmX212X3NjYWxlLCBjb25zdCBpbnQgc2l6ZSkKIHsKLSAg
ICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRl
eHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07CiAgICAgaW50
IGQsIGRtaW47CiAgICAgdW5zaWduZWQgbWFwX2dlbmVyYXRpb247CiAgICAgY29uc3QgaW50IHBl
bmFsdHlfZmFjdG9yPSBjLT5wZW5hbHR5X2ZhY3RvcjsKICAgICBjb25zdCBpbnQgaD04OwotICAg
IGNvbnN0IGludCByZWZfbXZfc3RyaWRlPSBzLT5tYl9zdHJpZGU7Ci0gICAgY29uc3QgaW50IHJl
Zl9tdl94eT0gcy0+bWJfeCArIHMtPm1iX3kgKnJlZl9tdl9zdHJpZGU7CisgICAgY29uc3QgaW50
IHJlZl9tdl9zdHJpZGU9IHMtPmMubWJfc3RyaWRlOworICAgIGNvbnN0IGludCByZWZfbXZfeHk9
IHMtPmMubWJfeCArIHMtPmMubWJfeSAqcmVmX212X3N0cmlkZTsKICAgICBtZV9jbXBfZnVuYyBj
bXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FEX0NPTU1PTgogICAgIGludCBmbGFncz0gYy0+Zmxh
Z3M7CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMgaW50IGVwenNfbW90aW9uX3NlYXJjaDIo
TXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIGRtaW4gPSAxMDAwMDAwOwogCiAgICAgLyogZmlyc3Qg
bGluZSAqLwotICAgIGlmIChzLT5maXJzdF9zbGljZV9saW5lKSB7CisgICAgaWYgKHMtPmMuZmly
c3Rfc2xpY2VfbGluZSkgewogICAgICAgICBDSEVDS19NVihQX0xFRlRbMF0+PnNoaWZ0LCBQX0xF
RlRbMV0+PnNoaWZ0KQogICAgICAgICBDSEVDS19DTElQUEVEX01WKChsYXN0X212W3JlZl9tdl94
eV1bMF0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2LAogICAgICAgICAgICAgICAgICAgICAg
ICAgKGxhc3RfbXZbcmVmX212X3h5XVsxXSpyZWZfbXZfc2NhbGUgKyAoMTw8MTUpKT4+MTYpCkBA
IC0xMDM0LDcgKzEwMzQsNyBAQCBzdGF0aWMgaW50IGVwenNfbW90aW9uX3NlYXJjaDIoTXBlZ0Vu
Y0NvbnRleHQgKiBzLAogICAgIGlmKGRtaW4+NjQqNCl7CiAgICAgICAgIENIRUNLX0NMSVBQRURf
TVYoKGxhc3RfbXZbcmVmX212X3h5KzFdWzBdKnJlZl9tdl9zY2FsZSArICgxPDwxNSkpPj4xNiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIChsYXN0X212W3JlZl9tdl94eSsxXVsxXSpyZWZfbXZf
c2NhbGUgKyAoMTw8MTUpKT4+MTYpCi0gICAgICAgIGlmKHMtPm1iX3krMTxzLT5lbmRfbWJfeSkg
IC8vRklYTUUgcmVwbGFjZSBhdCBsZWFzdCB3aXRoIGxhc3Rfc2xpY2VfbGluZQorICAgICAgICBp
ZihzLT5jLm1iX3krMTxzLT5jLmVuZF9tYl95KSAgLy9GSVhNRSByZXBsYWNlIGF0IGxlYXN0IHdp
dGggbGFzdF9zbGljZV9saW5lCiAgICAgICAgICAgICBDSEVDS19DTElQUEVEX01WKChsYXN0X212
W3JlZl9tdl94eStyZWZfbXZfc3RyaWRlXVswXSpyZWZfbXZfc2NhbGUgKyAoMTw8MTUpKT4+MTYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhc3RfbXZbcmVmX212X3h5K3JlZl9tdl9z
dHJpZGVdWzFdKnJlZl9tdl9zY2FsZSArICgxPDwxNSkpPj4xNikKICAgICB9CmRpZmYgLS1naXQg
YS9saWJhdmNvZGVjL21wZWcxMmVuYy5jIGIvbGliYXZjb2RlYy9tcGVnMTJlbmMuYwppbmRleCBh
ZTg3ZjI4ZDY2Li41YTkxZjlmZmYxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWcxMmVuYy5j
CisrKyBiL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBhdl9jb2xk
IHZvaWQgZmZfbXBlZzFfaW5pdF91bmlfYWNfdmxjKGNvbnN0IGludDhfdCBtYXhfbGV2ZWxbXSwK
IH0KIAogI2lmIENPTkZJR19NUEVHMVZJREVPX0VOQ09ERVIgfHwgQ09ORklHX01QRUcyVklERU9f
RU5DT0RFUgotc3RhdGljIHZvaWQgcHV0X2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcywgdWludDMy
X3QgaGVhZGVyKQorc3RhdGljIHZvaWQgcHV0X2hlYWRlcihNUFZFbmNDb250ZXh0ICpjb25zdCBz
LCB1aW50MzJfdCBoZWFkZXIpCiB7CiAgICAgYWxpZ25fcHV0X2JpdHMoJnMtPnBiKTsKICAgICBw
dXRfYml0czMyKCZzLT5wYiwgaGVhZGVyKTsKQEAgLTE0NiwxNiArMTQ2LDE2IEBAIHN0YXRpYyB2
b2lkIHB1dF9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMsIHVpbnQzMl90IGhlYWRlcikKIC8qIHB1
dCBzZXF1ZW5jZSBoZWFkZXIgaWYgbmVlZGVkICovCiBzdGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVf
c2VxdWVuY2VfaGVhZGVyKE1QRUcxMkVuY0NvbnRleHQgKm1wZWcxMikKIHsKLSAgICBNcGVnRW5j
Q29udGV4dCAqY29uc3QgcyA9ICZtcGVnMTItPm1wZWcuczsKKyAgICBNUFZFbmNDb250ZXh0ICpj
b25zdCBzID0gJm1wZWcxMi0+bXBlZy5zOwogICAgIHVuc2lnbmVkIGludCB2YnZfYnVmZmVyX3Np
emUsIGZwcywgdjsKICAgICBpbnQgY29uc3RyYWludF9wYXJhbWV0ZXJfZmxhZzsKICAgICBBVlJh
dGlvbmFsIGZyYW1lcmF0ZSA9IGZmX21wZWcxMl9mcmFtZV9yYXRlX3RhYlttcGVnMTItPmZyYW1l
X3JhdGVfaW5kZXhdOwogICAgIHVpbnQ2NF90IHRpbWVfY29kZTsKICAgICBpbnQ2NF90IGJlc3Rf
YXNwZWN0X2Vycm9yID0gSU5UNjRfTUFYOwotICAgIEFWUmF0aW9uYWwgYXNwZWN0X3JhdGlvID0g
cy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW87CisgICAgQVZSYXRpb25hbCBhc3BlY3RfcmF0
aW8gPSBzLT5jLmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvOwogICAgIGludCBhc3BlY3RfcmF0
aW9faW5mbzsKIAotICAgIGlmICghKHMtPmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZSQU1F
X0ZMQUdfS0VZKSkKKyAgICBpZiAoIShzLT5jLmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZS
QU1FX0ZMQUdfS0VZKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGFzcGVjdF9yYXRpby5u
dW0gPT0gMCB8fCBhc3BlY3RfcmF0aW8uZGVuID09IDApCkBAIC0xNjQsMTUgKzE2NCwxNSBAQCBz
dGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVfc2VxdWVuY2VfaGVhZGVyKE1QRUcxMkVuY0NvbnRleHQg
Km1wZWcxMikKICAgICAvKiBNUEVHLTEgaGVhZGVyIHJlcGVhdGVkIGV2ZXJ5IEdPUCAqLwogICAg
IHB1dF9oZWFkZXIocywgU0VRX1NUQVJUX0NPREUpOwogCi0gICAgcHV0X3NiaXRzKCZzLT5wYiwg
MTIsIHMtPndpZHRoICAmIDB4RkZGKTsKLSAgICBwdXRfc2JpdHMoJnMtPnBiLCAxMiwgcy0+aGVp
Z2h0ICYgMHhGRkYpOworICAgIHB1dF9zYml0cygmcy0+cGIsIDEyLCBzLT5jLndpZHRoICAmIDB4
RkZGKTsKKyAgICBwdXRfc2JpdHMoJnMtPnBiLCAxMiwgcy0+Yy5oZWlnaHQgJiAweEZGRik7CiAK
ICAgICBmb3IgKGludCBpID0gMTsgaSA8IDE1OyBpKyspIHsKICAgICAgICAgaW50NjRfdCBlcnJv
ciA9IGFzcGVjdF9yYXRpby5udW0gKiAoMUxMPDwzMikgLyBhc3BlY3RfcmF0aW8uZGVuOwotICAg
ICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTyB8fCBpIDw9IDEp
CisgICAgICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8gfHwg
aSA8PSAxKQogICAgICAgICAgICAgZXJyb3IgLT0gKDFMTDw8MzIpIC8gZmZfbXBlZzFfYXNwZWN0
W2ldOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBlcnJvciAtPSAoMUxMPDwzMikqZmZfbXBl
ZzJfYXNwZWN0W2ldLm51bSAqIHMtPmhlaWdodCAvIHMtPndpZHRoIC8gZmZfbXBlZzJfYXNwZWN0
W2ldLmRlbjsKKyAgICAgICAgICAgIGVycm9yIC09ICgxTEw8PDMyKSpmZl9tcGVnMl9hc3BlY3Rb
aV0ubnVtICogcy0+Yy5oZWlnaHQgLyBzLT5jLndpZHRoIC8gZmZfbXBlZzJfYXNwZWN0W2ldLmRl
bjsKIAogICAgICAgICBlcnJvciA9IEZGQUJTKGVycm9yKTsKIApAQCAtMTg1LDE2ICsxODUsMTYg
QEAgc3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX3NlcXVlbmNlX2hlYWRlcihNUEVHMTJFbmNDb250
ZXh0ICptcGVnMTIpCiAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBhc3BlY3RfcmF0aW9faW5mbyk7
CiAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBtcGVnMTItPmZyYW1lX3JhdGVfaW5kZXgpOwogCi0g
ICAgaWYgKHMtPmF2Y3R4LT5yY19tYXhfcmF0ZSkgewotICAgICAgICB2ID0gKHMtPmF2Y3R4LT5y
Y19tYXhfcmF0ZSArIDM5OSkgLyA0MDA7Ci0gICAgICAgIGlmICh2ID4gMHgzZmZmZiAmJiBzLT5j
b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPKQorICAgIGlmIChzLT5jLmF2Y3R4LT5y
Y19tYXhfcmF0ZSkgeworICAgICAgICB2ID0gKHMtPmMuYXZjdHgtPnJjX21heF9yYXRlICsgMzk5
KSAvIDQwMDsKKyAgICAgICAgaWYgKHYgPiAweDNmZmZmICYmIHMtPmMuY29kZWNfaWQgPT0gQVZf
Q09ERUNfSURfTVBFRzFWSURFTykKICAgICAgICAgICAgIHYgPSAweDNmZmZmOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHYgPSAweDNGRkZGOwogICAgIH0KIAotICAgIGlmIChzLT5hdmN0eC0+cmNf
YnVmZmVyX3NpemUpCi0gICAgICAgIHZidl9idWZmZXJfc2l6ZSA9IHMtPmF2Y3R4LT5yY19idWZm
ZXJfc2l6ZTsKKyAgICBpZiAocy0+Yy5hdmN0eC0+cmNfYnVmZmVyX3NpemUpCisgICAgICAgIHZi
dl9idWZmZXJfc2l6ZSA9IHMtPmMuYXZjdHgtPnJjX2J1ZmZlcl9zaXplOwogICAgIGVsc2UKICAg
ICAgICAgLyogVkJWIGNhbGN1bGF0aW9uOiBTY2FsZWQgc28gdGhhdCBhIFZDRCBoYXMgdGhlIHBy
b3BlcgogICAgICAgICAgKiBWQlYgc2l6ZSBvZiA0MCBraWxvYnl0ZXMgKi8KQEAgLTIwNiw0OCAr
MjA2LDQ4IEBAIHN0YXRpYyB2b2lkIG1wZWcxX2VuY29kZV9zZXF1ZW5jZV9oZWFkZXIoTVBFRzEy
RW5jQ29udGV4dCAqbXBlZzEyKQogICAgIHB1dF9zYml0cygmcy0+cGIsIDEwLCB2YnZfYnVmZmVy
X3NpemUpOwogCiAgICAgY29uc3RyYWludF9wYXJhbWV0ZXJfZmxhZyA9Ci0gICAgICAgIHMtPndp
ZHRoICA8PSA3NjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAg
ICBzLT5oZWlnaHQgPD0gNTc2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYK
LSAgICAgICAgcy0+bWJfd2lkdGggKiBzLT5tYl9oZWlnaHQgICAgICAgICAgICAgICAgIDw9IDM5
NiAgICYmCi0gICAgICAgIHMtPm1iX3dpZHRoICogcy0+bWJfaGVpZ2h0ICogZnJhbWVyYXRlLm51
bSA8PSAzOTYgKiAyNSAqIGZyYW1lcmF0ZS5kZW4gJiYKKyAgICAgICAgcy0+Yy53aWR0aCAgPD0g
NzY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgcy0+Yy5o
ZWlnaHQgPD0gNTc2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAg
ICAgcy0+Yy5tYl93aWR0aCAqIHMtPmMubWJfaGVpZ2h0ICAgICAgICAgICAgICAgICA8PSAzOTYg
ICAmJgorICAgICAgICBzLT5jLm1iX3dpZHRoICogcy0+Yy5tYl9oZWlnaHQgKiBmcmFtZXJhdGUu
bnVtIDw9IDM5NiAqIDI1ICogZnJhbWVyYXRlLmRlbiAmJgogICAgICAgICBmcmFtZXJhdGUubnVt
IDw9IGZyYW1lcmF0ZS5kZW4gKiAzMCAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgcy0+YXZj
dHgtPm1lX3JhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAg
IHMtPmF2Y3R4LT5tZV9yYW5nZSA8IDEyOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgor
ICAgICAgICBzLT5jLmF2Y3R4LT5tZV9yYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJgorICAgICAgICBzLT5jLmF2Y3R4LT5tZV9yYW5nZSA8IDEyOCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJgogICAgICAgICB2YnZfYnVmZmVyX3NpemUgPD0gMjAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYKICAgICAgICAgdiA8PSAxODU2MDAwIC8gNDAwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgIHMtPmNvZGVjX2lkID09IEFW
X0NPREVDX0lEX01QRUcxVklERU87CisgICAgICAgIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNf
SURfTVBFRzFWSURFTzsKIAogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgY29uc3RyYWludF9wYXJh
bWV0ZXJfZmxhZyk7CiAKLSAgICBmZl93cml0ZV9xdWFudF9tYXRyaXgoJnMtPnBiLCBzLT5hdmN0
eC0+aW50cmFfbWF0cml4KTsKLSAgICBmZl93cml0ZV9xdWFudF9tYXRyaXgoJnMtPnBiLCBzLT5h
dmN0eC0+aW50ZXJfbWF0cml4KTsKKyAgICBmZl93cml0ZV9xdWFudF9tYXRyaXgoJnMtPnBiLCBz
LT5jLmF2Y3R4LT5pbnRyYV9tYXRyaXgpOworICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+
cGIsIHMtPmMuYXZjdHgtPmludGVyX21hdHJpeCk7CiAKLSAgICBpZiAocy0+Y29kZWNfaWQgPT0g
QVZfQ09ERUNfSURfTVBFRzJWSURFTykgeworICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NP
REVDX0lEX01QRUcyVklERU8pIHsKICAgICAgICAgY29uc3QgQVZGcmFtZVNpZGVEYXRhICpzaWRl
X2RhdGE7Ci0gICAgICAgIGludCB3aWR0aCA9IHMtPndpZHRoOwotICAgICAgICBpbnQgaGVpZ2h0
ID0gcy0+aGVpZ2h0OworICAgICAgICBpbnQgd2lkdGggPSBzLT5jLndpZHRoOworICAgICAgICBp
bnQgaGVpZ2h0ID0gcy0+Yy5oZWlnaHQ7CiAgICAgICAgIGludCB1c2Vfc2VxX2Rpc3BfZXh0Owog
CiAgICAgICAgIHB1dF9oZWFkZXIocywgRVhUX1NUQVJUX0NPREUpOwogICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDQsIDEpOyAgICAgICAgICAgICAgICAgLy8gc2VxIGV4dAogCi0gICAgICAgIHB1
dF9iaXRzKCZzLT5wYiwgMSwgcy0+YXZjdHgtPnByb2ZpbGUgPT0gQVZfUFJPRklMRV9NUEVHMl80
MjIpOyAvLyBlc2N4IDEgZm9yIDQ6MjoyIHByb2ZpbGUKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LCAxLCBzLT5jLmF2Y3R4LT5wcm9maWxlID09IEFWX1BST0ZJTEVfTVBFRzJfNDIyKTsgLy8gZXNj
eCAxIGZvciA0OjI6MiBwcm9maWxlCiAKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5h
dmN0eC0+cHJvZmlsZSk7IC8vIHByb2ZpbGUKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBz
LT5hdmN0eC0+bGV2ZWwpOyAgIC8vIGxldmVsCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywg
cy0+Yy5hdmN0eC0+cHJvZmlsZSk7IC8vIHByb2ZpbGUKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LCA0LCBzLT5jLmF2Y3R4LT5sZXZlbCk7ICAgLy8gbGV2ZWwKIAotICAgICAgICBwdXRfYml0cygm
cy0+cGIsIDEsIHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlKTsKLSAgICAgICAgcHV0X2JpdHMoJnMt
PnBiLCAyLCBzLT5jaHJvbWFfZm9ybWF0KTsKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBz
LT53aWR0aCAgPj4gMTIpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPmhlaWdodCA+
PiAxMik7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1
ZW5jZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5jaHJvbWFfZm9ybWF0KTsK
KyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLndpZHRoICA+PiAxMik7CisgICAgICAg
IHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5oZWlnaHQgPj4gMTIpOwogICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDEyLCB2ID4+IDE4KTsgICAgICAgICAgLy8gYml0cmF0ZSBleHQKICAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsgICAgICAgICAgICAgICAgIC8vIG1hcmtlcgogICAgICAg
ICBwdXRfYml0cygmcy0+cGIsIDgsIHZidl9idWZmZXJfc2l6ZSA+PiAxMCk7IC8vIHZidiBidWZm
ZXIgZXh0Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+bG93X2RlbGF5KTsKKyAgICAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmxvd19kZWxheSk7CiAgICAgICAgIHB1dF9iaXRz
KCZzLT5wYiwgMiwgbXBlZzEyLT5mcmFtZV9yYXRlX2V4dC5udW0tMSk7IC8vIGZyYW1lX3JhdGVf
ZXh0X24KICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBtcGVnMTItPmZyYW1lX3JhdGVfZXh0
LmRlbi0xKTsgLy8gZnJhbWVfcmF0ZV9leHRfZAogCi0gICAgICAgIHNpZGVfZGF0YSA9IGF2X2Zy
YW1lX2dldF9zaWRlX2RhdGEocy0+Y3VyX3BpYy5wdHItPmYsIEFWX0ZSQU1FX0RBVEFfUEFOU0NB
Tik7CisgICAgICAgIHNpZGVfZGF0YSA9IGF2X2ZyYW1lX2dldF9zaWRlX2RhdGEocy0+Yy5jdXJf
cGljLnB0ci0+ZiwgQVZfRlJBTUVfREFUQV9QQU5TQ0FOKTsKICAgICAgICAgaWYgKHNpZGVfZGF0
YSkgewogICAgICAgICAgICAgY29uc3QgQVZQYW5TY2FuICpwYW5fc2NhbiA9IChBVlBhblNjYW4g
KilzaWRlX2RhdGEtPmRhdGE7CiAgICAgICAgICAgICBpZiAocGFuX3NjYW4tPndpZHRoICYmIHBh
bl9zY2FuLT5oZWlnaHQpIHsKQEAgLTI1NiwxMSArMjU2LDExIEBAIHN0YXRpYyB2b2lkIG1wZWcx
X2VuY29kZV9zZXF1ZW5jZV9oZWFkZXIoTVBFRzEyRW5jQ29udGV4dCAqbXBlZzEyKQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdXNlX3NlcV9kaXNwX2V4dCA9ICh3aWR0aCAh
PSBzLT53aWR0aCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAhPSBzLT5o
ZWlnaHQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5hdmN0eC0+Y29sb3JfcHJp
bWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xfVFJDX1VOU1BFQ0lGSUVEIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+YXZjdHgtPmNvbG9yc3BhY2UgIT0gQVZDT0xf
U1BDX1VOU1BFQ0lGSUVEIHx8CisgICAgICAgIHVzZV9zZXFfZGlzcF9leHQgPSAod2lkdGggIT0g
cy0+Yy53aWR0aCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAhPSBzLT5j
LmhlaWdodCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYXZjdHgtPmNvbG9y
X3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5jLmF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xfVFJDX1VOU1BFQ0lGSUVE
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hdmN0eC0+Y29sb3JzcGFjZSAh
PSBBVkNPTF9TUENfVU5TUEVDSUZJRUQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
cGVnMTItPnZpZGVvX2Zvcm1hdCAhPSBWSURFT19GT1JNQVRfVU5TUEVDSUZJRUQpOwogCiAgICAg
ICAgIGlmIChtcGVnMTItPnNlcV9kaXNwX2V4dCA9PSAxIHx8CkBAIC0yNjksOSArMjY5LDkgQEAg
c3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX3NlcXVlbmNlX2hlYWRlcihNUEVHMTJFbmNDb250ZXh0
ICptcGVnMTIpCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDQsIDIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzZXF1ZW5jZSBkaXNwbGF5IGV4dGVuc2lvbgogICAgICAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCAzLCBtcGVnMTItPnZpZGVvX2Zvcm1hdCk7ICAgICAgLy8gdmlkZW9f
Zm9ybWF0CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjb2xvdXJfZGVzY3JpcHRpb24KLSAgICAgICAgICAgIHB1dF9iaXRzKCZz
LT5wYiwgOCwgcy0+YXZjdHgtPmNvbG9yX3ByaW1hcmllcyk7IC8vIGNvbG91cl9wcmltYXJpZXMK
LSAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgcy0+YXZjdHgtPmNvbG9yX3RyYyk7ICAg
ICAgIC8vIHRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcwotICAgICAgICAgICAgcHV0X2JpdHMoJnMt
PnBiLCA4LCBzLT5hdmN0eC0+Y29sb3JzcGFjZSk7ICAgICAgLy8gbWF0cml4X2NvZWZmaWNpZW50
cworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBzLT5jLmF2Y3R4LT5jb2xvcl9wcmlt
YXJpZXMpOyAvLyBjb2xvdXJfcHJpbWFyaWVzCisgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs
IDgsIHMtPmMuYXZjdHgtPmNvbG9yX3RyYyk7ICAgICAgIC8vIHRyYW5zZmVyX2NoYXJhY3Rlcmlz
dGljcworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBzLT5jLmF2Y3R4LT5jb2xvcnNw
YWNlKTsgICAgICAvLyBtYXRyaXhfY29lZmZpY2llbnRzCiAgICAgICAgICAgICBwdXRfYml0cygm
cy0+cGIsIDE0LCB3aWR0aCk7ICAgICAgICAgICAgICAgICAgICAvLyBkaXNwbGF5X2hvcml6b250
YWxfc2l6ZQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbWFya2VyX2JpdAogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAx
NCwgaGVpZ2h0KTsgICAgICAgICAgICAgICAgICAgLy8gZGlzcGxheV92ZXJ0aWNhbF9zaXplCkBA
IC0yODQsMTAgKzI4NCwxMCBAQCBzdGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVfc2VxdWVuY2VfaGVh
ZGVyKE1QRUcxMkVuY0NvbnRleHQgKm1wZWcxMikKICAgICAvKiB0aW1lIGNvZGU6IHdlIG11c3Qg
Y29udmVydCBmcm9tIHRoZSByZWFsIGZyYW1lIHJhdGUgdG8gYQogICAgICAqIGZha2UgTVBFRyBm
cmFtZSByYXRlIGluIGNhc2Ugb2YgbG93IGZyYW1lIHJhdGUgKi8KICAgICBmcHMgICAgICAgPSAo
ZnJhbWVyYXRlLm51bSArIGZyYW1lcmF0ZS5kZW4gLyAyKSAvIGZyYW1lcmF0ZS5kZW47Ci0gICAg
dGltZV9jb2RlID0gcy0+Y3VyX3BpYy5wdHItPmNvZGVkX3BpY3R1cmVfbnVtYmVyICsKKyAgICB0
aW1lX2NvZGUgPSBzLT5jLmN1cl9waWMucHRyLT5jb2RlZF9waWN0dXJlX251bWJlciArCiAgICAg
ICAgICAgICAgICAgbXBlZzEyLT50aW1lY29kZV9mcmFtZV9zdGFydDsKIAotICAgIG1wZWcxMi0+
Z29wX3BpY3R1cmVfbnVtYmVyID0gcy0+Y3VyX3BpYy5wdHItPmNvZGVkX3BpY3R1cmVfbnVtYmVy
OworICAgIG1wZWcxMi0+Z29wX3BpY3R1cmVfbnVtYmVyID0gcy0+Yy5jdXJfcGljLnB0ci0+Y29k
ZWRfcGljdHVyZV9udW1iZXI7CiAKICAgICBhdl9hc3NlcnQwKG1wZWcxMi0+ZHJvcF9mcmFtZV90
aW1lY29kZSA9PSAhIShtcGVnMTItPnRjLmZsYWdzICYgQVZfVElNRUNPREVfRkxBR19EUk9QRlJB
TUUpKTsKICAgICBpZiAobXBlZzEyLT5kcm9wX2ZyYW1lX3RpbWVjb2RlKQpAQCAtMjk4LDEyICsy
OTgsMTIgQEAgc3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX3NlcXVlbmNlX2hlYWRlcihNUEVHMTJF
bmNDb250ZXh0ICptcGVnMTIpCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsKICAgICBwdXRf
Yml0cygmcy0+cGIsIDYsICh1aW50MzJfdCkoKHRpbWVfY29kZSAvIGZwcykgJSA2MCkpOwogICAg
IHB1dF9iaXRzKCZzLT5wYiwgNiwgKHVpbnQzMl90KSgodGltZV9jb2RlICUgZnBzKSkpOwotICAg
IHB1dF9iaXRzKCZzLT5wYiwgMSwgISEocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19D
TE9TRURfR09QKSB8fAorICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgISEocy0+Yy5hdmN0eC0+Zmxh
Z3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1ApIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICBtcGVnMTItPm1wZWcuaW50cmFfb25seSB8fCAhbXBlZzEyLT5nb3BfcGljdHVyZV9udW1iZXIp
OwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAgICAgICAgICAgICAgICAgLy8gYnJv
a2VuIGxpbmsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGVuY29kZV9tYl9za2lwX3J1bihNcGVn
RW5jQ29udGV4dCAqcywgaW50IHJ1bikKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfbWJfc2tp
cF9ydW4oTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IHJ1bikKIHsKICAgICB3aGlsZSAocnVu
ID49IDMzKSB7CiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTEsIDB4MDA4KTsKQEAgLTMxMywy
MCArMzEzLDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfbWJfc2tpcF9ydW4oTXBlZ0Vu
Y0NvbnRleHQgKnMsIGludCBydW4pCiAgICAgICAgICAgICAgZmZfbXBlZzEyX21iQWRkckluY3JU
YWJsZVtydW5dWzBdKTsKIH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBwdXRfcXNj
YWxlKE1wZWdFbmNDb250ZXh0ICpzKQorc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBwdXRf
cXNjYWxlKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCA1
LCBzLT5xc2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOwogfQog
Ci12b2lkIGZmX21wZWcxX2VuY29kZV9zbGljZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpCit2
b2lkIGZmX21wZWcxX2VuY29kZV9zbGljZV9oZWFkZXIoTVBWRW5jQ29udGV4dCAqY29uc3QgcykK
IHsKLSAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzJWSURFTyAmJiBzLT5o
ZWlnaHQgPiAyODAwKSB7Ci0gICAgICAgIHB1dF9oZWFkZXIocywgU0xJQ0VfTUlOX1NUQVJUX0NP
REUgKyAocy0+bWJfeSAmIDEyNykpOworICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVD
X0lEX01QRUcyVklERU8gJiYgcy0+Yy5oZWlnaHQgPiAyODAwKSB7CisgICAgICAgIHB1dF9oZWFk
ZXIocywgU0xJQ0VfTUlOX1NUQVJUX0NPREUgKyAocy0+Yy5tYl95ICYgMTI3KSk7CiAgICAgICAg
IC8qIHNsaWNlX3ZlcnRpY2FsX3Bvc2l0aW9uX2V4dGVuc2lvbiAqLwotICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDMsIHMtPm1iX3kgPj4gNyk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywg
cy0+Yy5tYl95ID4+IDcpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF2X2Fzc2VydDEocy0+bWJf
eSA8PSBTTElDRV9NQVhfU1RBUlRfQ09ERSAtIFNMSUNFX01JTl9TVEFSVF9DT0RFKTsKLSAgICAg
ICAgcHV0X2hlYWRlcihzLCBTTElDRV9NSU5fU1RBUlRfQ09ERSArIHMtPm1iX3kpOworICAgICAg
ICBhdl9hc3NlcnQxKHMtPmMubWJfeSA8PSBTTElDRV9NQVhfU1RBUlRfQ09ERSAtIFNMSUNFX01J
Tl9TVEFSVF9DT0RFKTsKKyAgICAgICAgcHV0X2hlYWRlcihzLCBTTElDRV9NSU5fU1RBUlRfQ09E
RSArIHMtPmMubWJfeSk7CiAgICAgfQogICAgIHB1dF9xc2NhbGUocyk7CiAgICAgLyogc2xpY2Ug
ZXh0cmEgaW5mb3JtYXRpb24gKi8KQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIGZmX21wZWcxX2Vu
Y29kZV9zbGljZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpCiBzdGF0aWMgaW50IG1wZWcxX2Vu
Y29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKICAgICBN
UEVHMTJFbmNDb250ZXh0ICpjb25zdCBtcGVnMTIgPSAoTVBFRzEyRW5jQ29udGV4dCopbTsKLSAg
ICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNv
bnN0IHMgPSAmbS0+czsKICAgICBjb25zdCBBVkZyYW1lU2lkZURhdGEgKnNpZGVfZGF0YTsKIAog
ICAgIG1wZWcxX2VuY29kZV9zZXF1ZW5jZV9oZWFkZXIobXBlZzEyKTsKQEAgLTM0NSw3NCArMzQ1
LDc0IEBAIHN0YXRpYyBpbnQgbXBlZzFfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmND
b250ZXh0ICpjb25zdCBtKQogICAgIHB1dF9oZWFkZXIocywgUElDVFVSRV9TVEFSVF9DT0RFKTsK
ICAgICAvKiB0ZW1wb3JhbCByZWZlcmVuY2UgKi8KIAotICAgIC8vIFJBTDogcy0+cGljdHVyZV9u
dW1iZXIgaW5zdGVhZCBvZiBzLT5mYWtlX3BpY3R1cmVfbnVtYmVyCisgICAgLy8gUkFMOiBzLT5j
LnBpY3R1cmVfbnVtYmVyIGluc3RlYWQgb2Ygcy0+ZmFrZV9waWN0dXJlX251bWJlcgogICAgIHB1
dF9iaXRzKCZzLT5wYiwgMTAsCi0gICAgICAgICAgICAgKHMtPnBpY3R1cmVfbnVtYmVyIC0gbXBl
ZzEyLT5nb3BfcGljdHVyZV9udW1iZXIpICYgMHgzZmYpOwotICAgIHB1dF9iaXRzKCZzLT5wYiwg
Mywgcy0+cGljdF90eXBlKTsKKyAgICAgICAgICAgICAocy0+Yy5waWN0dXJlX251bWJlciAtIG1w
ZWcxMi0+Z29wX3BpY3R1cmVfbnVtYmVyKSAmIDB4M2ZmKTsKKyAgICBwdXRfYml0cygmcy0+cGIs
IDMsIHMtPmMucGljdF90eXBlKTsKIAogICAgIG0tPnZidl9kZWxheV9wb3MgPSBwdXRfYnl0ZXNf
Y291bnQoJnMtPnBiLCAwKTsKICAgICBwdXRfYml0cygmcy0+cGIsIDE2LCAweEZGRkYpOyAgICAg
ICAgICAgICAgIC8qIHZidl9kZWxheSAqLwogCiAgICAgLy8gUkFMOiBGb3J3YXJkIGZfY29kZSBh
bHNvIG5lZWRlZCBmb3IgQi1mcmFtZXMKLSAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RV
UkVfVFlQRV9QIHx8Ci0gICAgICAgIHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikg
eworICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCB8fAorICAgICAg
ICBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgewogICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDEsIDApOyAgICAgICAgICAgICAgICAgLyogaGFsZiBwZWwgY29vcmRpbmF0ZXMg
Ki8KLSAgICAgICAgaWYgKHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8pCi0g
ICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDMsIHMtPmZfY29kZSk7ICAgICAvKiBmb3J3YXJk
X2ZfY29kZSAqLworICAgICAgICBpZiAocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVH
MVZJREVPKQorICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5jLmZfY29kZSk7ICAg
ICAvKiBmb3J3YXJkX2ZfY29kZSAqLwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDMsIDcpOyAgICAgICAgICAgICAvKiBmb3J3YXJkX2ZfY29kZSAqLwogICAgIH0K
IAogICAgIC8vIFJBTDogQmFja3dhcmQgZl9jb2RlIG5lY2Vzc2FyeSBmb3IgQi1mcmFtZXMKLSAg
ICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAgaWYgKHMtPmMu
cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CiAgICAgICAgIHB1dF9iaXRzKCZzLT5w
YiwgMSwgMCk7ICAgICAgICAgICAgICAgICAvKiBoYWxmIHBlbCBjb29yZGluYXRlcyAqLwotICAg
ICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTykKLSAgICAgICAg
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMywgcy0+Yl9jb2RlKTsgICAgIC8qIGJhY2t3YXJkX2ZfY29k
ZSAqLworICAgICAgICBpZiAocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVP
KQorICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5jLmJfY29kZSk7ICAgICAvKiBi
YWNrd2FyZF9mX2NvZGUgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHV0X2JpdHMoJnMt
PnBiLCAzLCA3KTsgICAgICAgICAgICAgLyogYmFja3dhcmRfZl9jb2RlICovCiAgICAgfQogCiAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgICAgICAgICAgICAgICAgICAvKiBleHRyYSBi
aXQgcGljdHVyZSAqLwogCi0gICAgcy0+ZnJhbWVfcHJlZF9mcmFtZV9kY3QgPSAxOwotICAgIGlm
IChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7CisgICAgcy0+Yy5mcmFt
ZV9wcmVkX2ZyYW1lX2RjdCA9IDE7CisgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNf
SURfTVBFRzJWSURFTykgewogICAgICAgICBwdXRfaGVhZGVyKHMsIEVYVF9TVEFSVF9DT0RFKTsK
ICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCA4KTsgICAgICAgICAgICAgICAgIC8qIHBpYyBl
eHQgKi8KLSAgICAgICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCB8fAot
ICAgICAgICAgICAgcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Ci0gICAgICAg
ICAgICBwdXRfYml0cygmcy0+cGIsIDQsIHMtPmZfY29kZSk7Ci0gICAgICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDQsIHMtPmZfY29kZSk7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBB
Vl9QSUNUVVJFX1RZUEVfUCB8fAorICAgICAgICAgICAgcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElD
VFVSRV9UWVBFX0IpIHsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNCwgcy0+Yy5mX2Nv
ZGUpOworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5jLmZfY29kZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIDI1NSk7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgewot
ICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5iX2NvZGUpOwotICAgICAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5iX2NvZGUpOworICAgICAgICBpZiAocy0+Yy5waWN0X3R5
cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwg
NCwgcy0+Yy5iX2NvZGUpOworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5jLmJf
Y29kZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgs
IDI1NSk7CiAgICAgICAgIH0KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5pbnRyYV9k
Y19wcmVjaXNpb24pOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPmMuaW50cmFfZGNf
cHJlY2lzaW9uKTsKIAotICAgICAgICBhdl9hc3NlcnQwKHMtPnBpY3R1cmVfc3RydWN0dXJlID09
IFBJQ1RfRlJBTUUpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPnBpY3R1cmVfc3Ry
dWN0dXJlKTsKLSAgICAgICAgaWYgKHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlKQorICAgICAgICBh
dl9hc3NlcnQwKHMtPmMucGljdHVyZV9zdHJ1Y3R1cmUgPT0gUElDVF9GUkFNRSk7CisgICAgICAg
IHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5waWN0dXJlX3N0cnVjdHVyZSk7CisgICAgICAgIGlm
IChzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlKQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LCAxLCAwKTsgICAgICAgICAgICAgLyogbm8gcmVwZWF0ICovCiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgISEocy0+Y3VyX3BpYy5wdHItPmYtPmZsYWdzICYg
QVZfRlJBTUVfRkxBR19UT1BfRklFTERfRklSU1QpKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZz
LT5wYiwgMSwgISEocy0+Yy5jdXJfcGljLnB0ci0+Zi0+ZmxhZ3MgJiBBVl9GUkFNRV9GTEFHX1RP
UF9GSUVMRF9GSVJTVCkpOwogICAgICAgICAvKiBYWFg6IG9wdGltaXplIHRoZSBnZW5lcmF0aW9u
IG9mIHRoaXMgZmxhZyB3aXRoIGVudHJvcHkgbWVhc3VyZXMgKi8KLSAgICAgICAgcy0+ZnJhbWVf
cHJlZF9mcmFtZV9kY3QgPSBzLT5wcm9ncmVzc2l2ZV9zZXF1ZW5jZTsKLQotICAgICAgICBwdXRf
Yml0cygmcy0+cGIsIDEsIHMtPmZyYW1lX3ByZWRfZnJhbWVfZGN0KTsKLSAgICAgICAgcHV0X2Jp
dHMoJnMtPnBiLCAxLCBzLT5jb25jZWFsbWVudF9tb3Rpb25fdmVjdG9ycyk7Ci0gICAgICAgIHB1
dF9iaXRzKCZzLT5wYiwgMSwgcy0+cV9zY2FsZV90eXBlKTsKLSAgICAgICAgcHV0X2JpdHMoJnMt
PnBiLCAxLCBzLT5pbnRyYV92bGNfZm9ybWF0KTsKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAx
LCBzLT5hbHRlcm5hdGVfc2Nhbik7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+cmVw
ZWF0X2ZpcnN0X2ZpZWxkKTsKLSAgICAgICAgcy0+cHJvZ3Jlc3NpdmVfZnJhbWUgPSBzLT5wcm9n
cmVzc2l2ZV9zZXF1ZW5jZTsKKyAgICAgICAgcy0+Yy5mcmFtZV9wcmVkX2ZyYW1lX2RjdCA9IHMt
PmMucHJvZ3Jlc3NpdmVfc2VxdWVuY2U7CisKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBz
LT5jLmZyYW1lX3ByZWRfZnJhbWVfZGN0KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBz
LT5jLmNvbmNlYWxtZW50X21vdGlvbl92ZWN0b3JzKTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LCAxLCBzLT5jLnFfc2NhbGVfdHlwZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+
Yy5pbnRyYV92bGNfZm9ybWF0KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmFs
dGVybmF0ZV9zY2FuKTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLnJlcGVhdF9m
aXJzdF9maWVsZCk7CisgICAgICAgIHMtPmMucHJvZ3Jlc3NpdmVfZnJhbWUgPSBzLT5jLnByb2dy
ZXNzaXZlX3NlcXVlbmNlOwogICAgICAgICAvKiBjaHJvbWFfNDIwX3R5cGUgKi8KLSAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jaHJvbWFfZm9ybWF0ID09Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0hST01BXzQyMCA/IHMtPnByb2dyZXNzaXZlX2ZyYW1lIDogMCk7Ci0gICAg
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+cHJvZ3Jlc3NpdmVfZnJhbWUpOworICAgICAgICBw
dXRfYml0cygmcy0+cGIsIDEsIHMtPmMuY2hyb21hX2Zvcm1hdCA9PQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENIUk9NQV80MjAgPyBzLT5jLnByb2dyZXNzaXZlX2ZyYW1lIDogMCk7Cisg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5wcm9ncmVzc2l2ZV9mcmFtZSk7CiAgICAg
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAgICAgICAgICAgICAvKiBjb21wb3NpdGVf
ZGlzcGxheV9mbGFnICovCiAgICAgfQogICAgIGlmIChtcGVnMTItPnNjYW5fb2Zmc2V0KSB7CkBA
IC00MjIsNyArNDIyLDcgQEAgc3RhdGljIGludCBtcGVnMV9lbmNvZGVfcGljdHVyZV9oZWFkZXIo
TVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXpl
b2Yoc3ZjZF9zY2FuX29mZnNldF9wbGFjZWhvbGRlcik7IGkrKykKICAgICAgICAgICAgIHB1dF9i
aXRzKCZzLT5wYiwgOCwgc3ZjZF9zY2FuX29mZnNldF9wbGFjZWhvbGRlcltpXSk7CiAgICAgfQot
ICAgIHNpZGVfZGF0YSA9IGF2X2ZyYW1lX2dldF9zaWRlX2RhdGEocy0+Y3VyX3BpYy5wdHItPmYs
CisgICAgc2lkZV9kYXRhID0gYXZfZnJhbWVfZ2V0X3NpZGVfZGF0YShzLT5jLmN1cl9waWMucHRy
LT5mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfRlJBTUVfREFU
QV9TVEVSRU8zRCk7CiAgICAgaWYgKHNpZGVfZGF0YSkgewogICAgICAgICBjb25zdCBBVlN0ZXJl
bzNEICpzdGVyZW8gPSAoQVZTdGVyZW8zRCAqKXNpZGVfZGF0YS0+ZGF0YTsKQEAgLTQ2MCw3ICs0
NjAsNyBAQCBzdGF0aWMgaW50IG1wZWcxX2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5j
Q29udGV4dCAqY29uc3QgbSkKICAgICB9CiAKICAgICBpZiAoQ09ORklHX01QRUcyVklERU9fRU5D
T0RFUiAmJiBtcGVnMTItPmE1M19jYykgewotICAgICAgICBzaWRlX2RhdGEgPSBhdl9mcmFtZV9n
ZXRfc2lkZV9kYXRhKHMtPmN1cl9waWMucHRyLT5mLAorICAgICAgICBzaWRlX2RhdGEgPSBhdl9m
cmFtZV9nZXRfc2lkZV9kYXRhKHMtPmMuY3VyX3BpYy5wdHItPmYsCiAgICAgICAgICAgICBBVl9G
UkFNRV9EQVRBX0E1M19DQyk7CiAgICAgICAgIGlmIChzaWRlX2RhdGEpIHsKICAgICAgICAgICAg
IGlmIChzaWRlX2RhdGEtPnNpemUgPD0gQTUzX01BWF9DQ19DT1VOVCAqIDMgJiYgc2lkZV9kYXRh
LT5zaXplICUgMyA9PSAwKSB7CkBAIC00NzYsMzMgKzQ3NiwzMyBAQCBzdGF0aWMgaW50IG1wZWcx
X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAg
ICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgMHhmZik7ICAgICAgICAgICAgICAgICAg
Ly8gbWFya2VyX2JpdHMKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXZf
bG9nKHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+
Yy5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsCiAgICAgICAgICAgICAgICAgICAgICJDbG9zZWQgQ2Fw
dGlvbiBzaXplICglIlNJWkVfU1BFQ0lGSUVSIikgY2FuIG5vdCBleGNlZWQgIgogICAgICAgICAg
ICAgICAgICAgICAiOTMgYnl0ZXMgYW5kIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzXG4iLCBzaWRl
X2RhdGEtPnNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcy0+
bWJfeSA9IDA7CisgICAgcy0+Yy5tYl95ID0gMDsKICAgICBmZl9tcGVnMV9lbmNvZGVfc2xpY2Vf
aGVhZGVyKHMpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRf
bWJfbW9kZXMoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBuLCBpbnQgYml0cywKK3N0YXRpYyBpbmxp
bmUgdm9pZCBwdXRfbWJfbW9kZXMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG4sIGludCBi
aXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzX212LCBpbnQgZmll
bGRfbW90aW9uKQogewogICAgIHB1dF9iaXRzKCZzLT5wYiwgbiwgYml0cyk7Ci0gICAgaWYgKCFz
LT5mcmFtZV9wcmVkX2ZyYW1lX2RjdCkgeworICAgIGlmICghcy0+Yy5mcmFtZV9wcmVkX2ZyYW1l
X2RjdCkgewogICAgICAgICBpZiAoaGFzX212KQogICAgICAgICAgICAgLyogbW90aW9uX3R5cGU6
IGZyYW1lL2ZpZWxkICovCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDIgLSBmaWVs
ZF9tb3Rpb24pOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmludGVybGFjZWRfZGN0
KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsKICAg
ICB9CiB9CiAKIC8vIFJBTDogUGFyYW1ldGVyIGFkZGVkOiBmX29yX2JfY29kZQotc3RhdGljIHZv
aWQgbXBlZzFfZW5jb2RlX21vdGlvbihNcGVnRW5jQ29udGV4dCAqcywgaW50IHZhbCwgaW50IGZf
b3JfYl9jb2RlKQorc3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX21vdGlvbihNUFZFbmNDb250ZXh0
ICpjb25zdCBzLCBpbnQgdmFsLCBpbnQgZl9vcl9iX2NvZGUpCiB7CiAgICAgaWYgKHZhbCA9PSAw
KSB7CiAgICAgICAgIC8qIHplcm8gdmVjdG9yLCBjb3JyZXNwb25kcyB0byBmZl9tcGVnMTJfbWJN
b3Rpb25WZWN0b3JUYWJsZVswXSAqLwpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyB2b2lkIG1w
ZWcxX2VuY29kZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKnMsIGludCB2YWwsIGludCBmX29yX2Jf
Y29kZSkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfZGMoTXBlZ0VuY0Nv
bnRleHQgKnMsIGludCBkaWZmLCBpbnQgY29tcG9uZW50KQorc3RhdGljIGlubGluZSB2b2lkIGVu
Y29kZV9kYyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgZGlmZiwgaW50IGNvbXBvbmVudCkK
IHsKICAgICB1bnNpZ25lZCBpbnQgZGlmZl91ID0gZGlmZiArIDI1NTsKICAgICBpZiAoZGlmZl91
ID49IDUxMSkgewpAQCAtNTczLDIzICs1NzMsMjMgQEAgc3RhdGljIGlubGluZSB2b2lkIGVuY29k
ZV9kYyhNcGVnRW5jQ29udGV4dCAqcywgaW50IGRpZmYsIGludCBjb21wb25lbnQpCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRleHQgKnMsIGNv
bnN0IGludDE2X3QgKmJsb2NrLCBpbnQgbikKK3N0YXRpYyB2b2lkIG1wZWcxX2VuY29kZV9ibG9j
ayhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCBpbnQxNl90IGJsb2NrW10sIGludCBuKQog
ewogICAgIGludCBhbGV2ZWwsIGxldmVsLCBsYXN0X25vbl96ZXJvLCBkYywgZGlmZiwgaSwgaiwg
cnVuLCBsYXN0X2luZGV4LCBzaWduOwogICAgIGludCBjb2RlLCBjb21wb25lbnQ7CiAgICAgY29u
c3QgdWludDE2X3QgKCp0YWJsZV92bGMpWzJdID0gZmZfbXBlZzFfdmxjX3RhYmxlOwogCi0gICAg
bGFzdF9pbmRleCA9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgbGFzdF9pbmRleCA9IHMt
PmMuYmxvY2tfbGFzdF9pbmRleFtuXTsKIAogICAgIC8qIERDIGNvZWYgKi8KLSAgICBpZiAocy0+
bWJfaW50cmEpIHsKKyAgICBpZiAocy0+Yy5tYl9pbnRyYSkgewogICAgICAgICBjb21wb25lbnQg
PSAobiA8PSAzID8gMCA6IChuICYgMSkgKyAxKTsKICAgICAgICAgZGMgICAgICAgID0gYmxvY2tb
MF07ICAgICAgICAgICAgICAgICAgIC8qIG92ZXJmbG93IGlzIGltcG9zc2libGUgKi8KLSAgICAg
ICAgZGlmZiAgICAgID0gZGMgLSBzLT5sYXN0X2RjW2NvbXBvbmVudF07CisgICAgICAgIGRpZmYg
ICAgICA9IGRjIC0gcy0+Yy5sYXN0X2RjW2NvbXBvbmVudF07CiAgICAgICAgIGVuY29kZV9kYyhz
LCBkaWZmLCBjb21wb25lbnQpOwotICAgICAgICBzLT5sYXN0X2RjW2NvbXBvbmVudF0gPSBkYzsK
KyAgICAgICAgcy0+Yy5sYXN0X2RjW2NvbXBvbmVudF0gPSBkYzsKICAgICAgICAgaSA9IDE7Ci0g
ICAgICAgIGlmIChzLT5pbnRyYV92bGNfZm9ybWF0KQorICAgICAgICBpZiAocy0+Yy5pbnRyYV92
bGNfZm9ybWF0KQogICAgICAgICAgICAgdGFibGVfdmxjID0gZmZfbXBlZzJfdmxjX3RhYmxlOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIGVuY29kZSB0aGUgZmlyc3QgY29lZmZpY2llbnQ6IG5l
ZWRzIHRvIGJlIGRvbmUgaGVyZSBiZWNhdXNlCkBAIC02MTAsNyArNjEwLDcgQEAgc3RhdGljIHZv
aWQgbXBlZzFfZW5jb2RlX2Jsb2NrKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCBpbnQxNl90ICpi
bG9jaywgaW50IG4pCiAgICAgbGFzdF9ub25femVybyA9IGkgLSAxOwogCiAgICAgZm9yICg7IGkg
PD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGogICAgID0gcy0+aW50cmFfc2NhbnRhYmxl
LnBlcm11dGF0ZWRbaV07CisgICAgICAgIGogICAgID0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVy
bXV0YXRlZFtpXTsKICAgICAgICAgbGV2ZWwgPSBibG9ja1tqXTsKIAogbmV4dF9jb2VmOgpAQCAt
NjM0LDcgKzYzNCw3IEBAIG5leHRfY29lZjoKICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+
cGIsIDYsIDB4MDEpOwogICAgICAgICAgICAgICAgIC8qIGVzY2FwZTogb25seSBjbGlwIGluIHRo
aXMgY2FzZSAqLwogICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNiwgcnVuKTsKLSAg
ICAgICAgICAgICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTykg
eworICAgICAgICAgICAgICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcx
VklERU8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFsZXZlbCA8IDEyOCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHV0X3NiaXRzKCZzLT5wYiwgOCwgbGV2ZWwpOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtNjU0LDU1ICs2NTQsNTUgQEAgbmV4dF9jb2VmOgogICAg
IHB1dF9iaXRzKCZzLT5wYiwgdGFibGVfdmxjWzExMl1bMV0sIHRhYmxlX3ZsY1sxMTJdWzBdKTsK
IH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBtcGVnMV9lbmNvZGVfbWJfaW50ZXJu
YWwoTXBlZ0VuY0NvbnRleHQgKnMsCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIG1wZWcx
X2VuY29kZV9tYl9pbnRlcm5hbChNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCBi
bG9ja1s4XVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbW90aW9uX3gsIGludCBtb3Rpb25feSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYl9ibG9ja19jb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBjaHJvbWFfeV9zaGlmdCkKIHsKIC8qIE1QRUctMSBpcyBhbHdheXMgNDIwLiAqLwotI2RlZmlu
ZSBJU19NUEVHMShzKSAoY2hyb21hX3lfc2hpZnQgPT0gMSAmJiAocyktPmNvZGVjX2lkID09IEFW
X0NPREVDX0lEX01QRUcxVklERU8pCisjZGVmaW5lIElTX01QRUcxKHMpIChjaHJvbWFfeV9zaGlm
dCA9PSAxICYmIChzKS0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPKQogICAg
IGludCBpLCBjYnA7Ci0gICAgY29uc3QgaW50IG1iX3ggICAgID0gcy0+bWJfeDsKLSAgICBjb25z
dCBpbnQgbWJfeSAgICAgPSBzLT5tYl95OwotICAgIGNvbnN0IGludCBmaXJzdF9tYiA9IG1iX3gg
PT0gcy0+cmVzeW5jX21iX3ggJiYgbWJfeSA9PSBzLT5yZXN5bmNfbWJfeTsKKyAgICBjb25zdCBp
bnQgbWJfeCAgICAgPSBzLT5jLm1iX3g7CisgICAgY29uc3QgaW50IG1iX3kgICAgID0gcy0+Yy5t
Yl95OworICAgIGNvbnN0IGludCBmaXJzdF9tYiA9IG1iX3ggPT0gcy0+Yy5yZXN5bmNfbWJfeCAm
JiBtYl95ID09IHMtPmMucmVzeW5jX21iX3k7CiAKICAgICAvKiBjb21wdXRlIGNicCAqLwogICAg
IGNicCA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2NvdW50OyBpKyspCi0gICAg
ICAgIGlmIChzLT5ibG9ja19sYXN0X2luZGV4W2ldID49IDApCisgICAgICAgIGlmIChzLT5jLmJs
b2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKICAgICAgICAgICAgIGNicCB8PSAxIDw8IChtYl9ibG9j
a19jb3VudCAtIDEgLSBpKTsKIAotICAgIGlmIChjYnAgPT0gMCAmJiAhZmlyc3RfbWIgJiYgcy0+
bXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2ICYmCi0gICAgICAgIChtYl94ICE9IHMtPm1iX3dpZHRo
IC0gMSB8fAotICAgICAgICAgKG1iX3kgIT0gcy0+ZW5kX21iX3kgLSAxICYmIElTX01QRUcxKHMp
KSkgJiYKLSAgICAgICAgKChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AgJiYgKG1v
dGlvbl94IHwgbW90aW9uX3kpID09IDApIHx8Ci0gICAgICAgICAocy0+cGljdF90eXBlID09IEFW
X1BJQ1RVUkVfVFlQRV9CICYmIHMtPm12X2RpciA9PSBzLT5sYXN0X212X2RpciAmJgotICAgICAg
ICAgICgoKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKQotICAgICAgICAgICAgPyAoKHMtPm12
WzBdWzBdWzBdIC0gcy0+bGFzdF9tdlswXVswXVswXSkgfAotICAgICAgICAgICAgICAgKHMtPm12
WzBdWzBdWzFdIC0gcy0+bGFzdF9tdlswXVswXVsxXSkpIDogMCkgfAotICAgICAgICAgICAoKHMt
Pm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkKLSAgICAgICAgICAgID8gKChzLT5tdlsxXVswXVsw
XSAtIHMtPmxhc3RfbXZbMV1bMF1bMF0pIHwKLSAgICAgICAgICAgICAgIChzLT5tdlsxXVswXVsx
XSAtIHMtPmxhc3RfbXZbMV1bMF1bMV0pKSA6IDApKSA9PSAwKSkpIHsKLSAgICAgICAgcy0+bWJf
c2tpcF9ydW4rKzsKLSAgICAgICAgcy0+cXNjYWxlIC09IHMtPmRxdWFudDsKKyAgICBpZiAoY2Jw
ID09IDAgJiYgIWZpcnN0X21iICYmIHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2ICYmCisg
ICAgICAgIChtYl94ICE9IHMtPmMubWJfd2lkdGggLSAxIHx8CisgICAgICAgICAobWJfeSAhPSBz
LT5jLmVuZF9tYl95IC0gMSAmJiBJU19NUEVHMShzKSkpICYmCisgICAgICAgICgocy0+Yy5waWN0
X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AgJiYgKG1vdGlvbl94IHwgbW90aW9uX3kpID09IDAp
IHx8CisgICAgICAgICAocy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgJiYgcy0+
Yy5tdl9kaXIgPT0gcy0+bGFzdF9tdl9kaXIgJiYKKyAgICAgICAgICAoKChzLT5jLm12X2RpciAm
IE1WX0RJUl9GT1JXQVJEKQorICAgICAgICAgICAgPyAoKHMtPmMubXZbMF1bMF1bMF0gLSBzLT5j
Lmxhc3RfbXZbMF1bMF1bMF0pIHwKKyAgICAgICAgICAgICAgIChzLT5jLm12WzBdWzBdWzFdIC0g
cy0+Yy5sYXN0X212WzBdWzBdWzFdKSkgOiAwKSB8CisgICAgICAgICAgICgocy0+Yy5tdl9kaXIg
JiBNVl9ESVJfQkFDS1dBUkQpCisgICAgICAgICAgICA/ICgocy0+Yy5tdlsxXVswXVswXSAtIHMt
PmMubGFzdF9tdlsxXVswXVswXSkgfAorICAgICAgICAgICAgICAgKHMtPmMubXZbMV1bMF1bMV0g
LSBzLT5jLmxhc3RfbXZbMV1bMF1bMV0pKSA6IDApKSA9PSAwKSkpIHsKKyAgICAgICAgcy0+Yy5t
Yl9za2lwX3J1bisrOworICAgICAgICBzLT5jLnFzY2FsZSAtPSBzLT5kcXVhbnQ7CiAgICAgICAg
IHMtPm1pc2NfYml0cysrOwogICAgICAgICBzLT5sYXN0X2JpdHMrKzsKLSAgICAgICAgaWYgKHMt
PnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkgewotICAgICAgICAgICAgcy0+bGFzdF9t
dlswXVswXVswXSA9Ci0gICAgICAgICAgICBzLT5sYXN0X212WzBdWzBdWzFdID0KLSAgICAgICAg
ICAgIHMtPmxhc3RfbXZbMF1bMV1bMF0gPQotICAgICAgICAgICAgcy0+bGFzdF9tdlswXVsxXVsx
XSA9IDA7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkg
eworICAgICAgICAgICAgcy0+Yy5sYXN0X212WzBdWzBdWzBdID0KKyAgICAgICAgICAgIHMtPmMu
bGFzdF9tdlswXVswXVsxXSA9CisgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1bMV1bMF0gPQor
ICAgICAgICAgICAgcy0+Yy5sYXN0X212WzBdWzFdWzFdID0gMDsKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChmaXJzdF9tYikgewotICAgICAgICAgICAgYXZfYXNzZXJ0MChz
LT5tYl9za2lwX3J1biA9PSAwKTsKLSAgICAgICAgICAgIGVuY29kZV9tYl9za2lwX3J1bihzLCBz
LT5tYl94KTsKKyAgICAgICAgICAgIGF2X2Fzc2VydDAocy0+Yy5tYl9za2lwX3J1biA9PSAwKTsK
KyAgICAgICAgICAgIGVuY29kZV9tYl9za2lwX3J1bihzLCBzLT5jLm1iX3gpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZW5jb2RlX21iX3NraXBfcnVuKHMsIHMtPm1iX3NraXBfcnVu
KTsKKyAgICAgICAgICAgIGVuY29kZV9tYl9za2lwX3J1bihzLCBzLT5jLm1iX3NraXBfcnVuKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF
X0kpIHsKKyAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7
CiAgICAgICAgICAgICBpZiAocy0+ZHF1YW50ICYmIGNicCkgewogICAgICAgICAgICAgICAgIC8q
IG1hY3JvYmxvY2tfdHlwZTogbWFjcm9ibG9ja19xdWFudCA9IDEgKi8KICAgICAgICAgICAgICAg
ICBwdXRfbWJfbW9kZXMocywgMiwgMSwgMCwgMCk7CkBAIC03MTAsMjMgKzcxMCwyMyBAQCBzdGF0
aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIG1wZWcxX2VuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5j
Q29udGV4dCAqcywKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogbWFj
cm9ibG9ja190eXBlOiBtYWNyb2Jsb2NrX3F1YW50ID0gMCAqLwogICAgICAgICAgICAgICAgIHB1
dF9tYl9tb2RlcyhzLCAxLCAxLCAwLCAwKTsKLSAgICAgICAgICAgICAgICBzLT5xc2NhbGUgLT0g
cy0+ZHF1YW50OworICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHMtPm1pc2NfYml0cyArPSBnZXRfYml0c19kaWZmKHMp
OwogICAgICAgICAgICAgcy0+aV9jb3VudCsrOwotICAgICAgICB9IGVsc2UgaWYgKHMtPm1iX2lu
dHJhKSB7CisgICAgICAgIH0gZWxzZSBpZiAocy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAgICAg
aWYgKHMtPmRxdWFudCAmJiBjYnApIHsKICAgICAgICAgICAgICAgICBwdXRfbWJfbW9kZXMocywg
NiwgMHgwMSwgMCwgMCk7CiAgICAgICAgICAgICAgICAgcHV0X3FzY2FsZShzKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHV0X21iX21vZGVzKHMsIDUsIDB4MDMsIDAs
IDApOwotICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVhbnQ7CisgICAgICAgICAg
ICAgICAgcy0+Yy5xc2NhbGUgLT0gcy0+ZHF1YW50OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAgICAgICAgICAgICBzLT5pX2Nv
dW50Kys7Ci0gICAgICAgICAgICBtZW1zZXQocy0+bGFzdF9tdiwgMCwgc2l6ZW9mKHMtPmxhc3Rf
bXYpKTsKLSAgICAgICAgfSBlbHNlIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF
X1ApIHsKLSAgICAgICAgICAgIGlmIChzLT5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsKKyAg
ICAgICAgICAgIG1lbXNldChzLT5jLmxhc3RfbXYsIDAsIHNpemVvZihzLT5jLmxhc3RfbXYpKTsK
KyAgICAgICAgfSBlbHNlIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkg
eworICAgICAgICAgICAgaWYgKHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2KSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGNicCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobW90
aW9uX3ggfCBtb3Rpb25feSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMt
PmRxdWFudCkgewpAQCAtNzQ4LDM0ICs3NDgsMzQgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUg
dm9pZCBtcGVnMV9lbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlmZihzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFJBTDogZl9jb2RlIHBhcmFtZXRlciBhZGRlZAogICAgICAg
ICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25feCAtIHMtPmxhc3RfbXZbMF1bMF1b
MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl94
IC0gcy0+Yy5sYXN0X212WzBdWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBS
QUw6IGZfY29kZSBwYXJhbWV0ZXIgYWRkZWQKICAgICAgICAgICAgICAgICAgICAgICAgIG1wZWcx
X2VuY29kZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW90aW9uX3kgLSBzLT5sYXN0X212WzBdWzBdWzFdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5mX2NvZGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25feSAtIHMtPmMubGFzdF9tdlswXVswXVsx
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5mX2Nv
ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZfYml0cyArPSBnZXRfYml0c19kaWZm
KHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCAxKTsgICAgICAgICAvKiBtb3Rp
b24gb25seSAqLwotICAgICAgICAgICAgICAgICAgICBpZiAoIXMtPmZyYW1lX3ByZWRfZnJhbWVf
ZGN0KQorICAgICAgICAgICAgICAgICAgICBpZiAoIXMtPmMuZnJhbWVfcHJlZF9mcmFtZV9kY3Qp
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDIpOyAgICAgLyog
bW90aW9uX3R5cGU6IGZyYW1lICovCiAgICAgICAgICAgICAgICAgICAgIHMtPm1pc2NfYml0cyAr
PSBnZXRfYml0c19kaWZmKHMpOwogICAgICAgICAgICAgICAgICAgICAvLyBSQUw6IGZfY29kZSBw
YXJhbWV0ZXIgYWRkZWQKICAgICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl94IC0gcy0+
bGFzdF9tdlswXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5mX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
dGlvbl94IC0gcy0+Yy5sYXN0X212WzBdWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMtPmMuZl9jb2RlKTsKICAgICAgICAgICAgICAgICAgICAgLy8gUkFM
OiBmX2NvZGUgcGFyYW1ldGVyIGFkZGVkCiAgICAgICAgICAgICAgICAgICAgIG1wZWcxX2VuY29k
ZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rp
b25feSAtIHMtPmxhc3RfbXZbMF1bMF1bMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Zl9jb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgcy0+cXNjYWxlICAt
PSBzLT5kcXVhbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90
aW9uX3kgLSBzLT5jLmxhc3RfbXZbMF1bMF1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcy0+Yy5mX2NvZGUpOworICAgICAgICAgICAgICAgICAgICBzLT5jLnFz
Y2FsZSAgLT0gcy0+ZHF1YW50OwogICAgICAgICAgICAgICAgICAgICBzLT5tdl9iaXRzICs9IGdl
dF9iaXRzX2RpZmYocyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMtPmxh
c3RfbXZbMF1bMV1bMF0gPSBzLT5sYXN0X212WzBdWzBdWzBdID0gbW90aW9uX3g7Ci0gICAgICAg
ICAgICAgICAgcy0+bGFzdF9tdlswXVsxXVsxXSA9IHMtPmxhc3RfbXZbMF1bMF1bMV0gPSBtb3Rp
b25feTsKKyAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1bMV1bMF0gPSBzLT5jLmxhc3Rf
bXZbMF1bMF1bMF0gPSBtb3Rpb25feDsKKyAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1b
MV1bMV0gPSBzLT5jLmxhc3RfbXZbMF1bMF1bMV0gPSBtb3Rpb25feTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0Mighcy0+ZnJhbWVfcHJlZF9mcmFtZV9k
Y3QgJiYgcy0+bXZfdHlwZSA9PSBNVl9UWVBFX0ZJRUxEKTsKKyAgICAgICAgICAgICAgICBhdl9h
c3NlcnQyKCFzLT5jLmZyYW1lX3ByZWRfZnJhbWVfZGN0ICYmIHMtPmMubXZfdHlwZSA9PSBNVl9U
WVBFX0ZJRUxEKTsKIAogICAgICAgICAgICAgICAgIGlmIChjYnApIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHMtPmRxdWFudCkgewpAQCAtNzg3LDE5ICs3ODcsMTkgQEAgc3RhdGljIGF2X2Fs
d2F5c19pbmxpbmUgdm9pZCBtcGVnMV9lbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQg
KnMsCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHV0X2Jp
dHMoJnMtPnBiLCAzLCAxKTsgICAgICAgICAgICAgLyogbW90aW9uIG9ubHkgKi8KICAgICAgICAg
ICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCAxKTsgICAgICAgICAgICAgLyogbW90aW9u
X3R5cGU6IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVh
bnQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2Rp
ZmYocyk7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewotICAgICAg
ICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmZpZWxkX3NlbGVjdFswXVtpXSk7
CisgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxl
Y3RbMF1baV0pOwogICAgICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90aW9uKHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1baV1bMF0gLSBz
LT5sYXN0X212WzBdW2ldWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cy0+Yy5tdlswXVtpXVswXSAtIHMtPmMubGFzdF9tdlswXVtpXVswXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1wZWcxX2VuY29kZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5tdlswXVtpXVsxXSAtIChzLT5sYXN0X212WzBdW2ldWzFdID4+IDEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29kZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1baV1bMF0gPSBzLT5tdlswXVtpXVswXTsKLSAg
ICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlswXVtpXVsxXSA9IDIgKiBzLT5tdlswXVtpXVsx
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ld
WzFdIC0gKHMtPmMubGFzdF9tdlswXVtpXVsxXSA+PiAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAgIHMt
PmMubGFzdF9tdlswXVtpXVswXSA9IHMtPmMubXZbMF1baV1bMF07CisgICAgICAgICAgICAgICAg
ICAgIHMtPmMubGFzdF9tdlswXVtpXVsxXSA9IDIgKiBzLT5jLm12WzBdW2ldWzFdOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzLT5tdl9iaXRzICs9IGdldF9iaXRzX2RpZmYo
cyk7CiAgICAgICAgICAgICB9CkBAIC04MTYsOTEgKzgxNiw5MSBAQCBzdGF0aWMgYXZfYWx3YXlz
X2lubGluZSB2b2lkIG1wZWcxX2VuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2KSB7CisgICAgICAgICAgICBp
ZiAocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y2JwKSB7ICAgICAgICAgICAgICAgICAgICAgIC8vIFdpdGggY29kZWQgYmxvYyBwYXR0ZXJuCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChzLT5kcXVhbnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzLT5tdl9kaXIgPT0gTVZfRElSX0ZPUldBUkQpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocy0+Yy5tdl9kaXIgPT0gTVZfRElSX0ZPUldBUkQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHV0X21iX21vZGVzKHMsIDYsIDMsIDEsIDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9tYl9tb2Rlcyhz
LCA4IC0gcy0+bXZfZGlyLCAyLCAxLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXRfbWJfbW9kZXMocywgOCAtIHMtPmMubXZfZGlyLCAyLCAxLCAwKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1dF9xc2NhbGUocyk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdXRfbWJfbW9kZXMocywgNSAtIHMtPm12X2RpciwgMywg
MSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRfbWJfbW9kZXMocywgNSAtIHMtPmMu
bXZfZGlyLCAzLCAxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gY29kZWQgYmxvYyBwYXR0ZXJu
Ci0gICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNSAtIHMtPm12X2RpciwgMik7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcy0+ZnJhbWVfcHJlZF9mcmFtZV9kY3QpCisgICAg
ICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNSAtIHMtPmMubXZfZGlyLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFzLT5jLmZyYW1lX3ByZWRfZnJhbWVfZGN0KQogICAgICAg
ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCAyKTsgLyogbW90aW9uX3R5cGU6
IGZyYW1lICovCi0gICAgICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVhbnQ7Cisg
ICAgICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7
Ci0gICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHMtPmMubXZfZGlyICYgTVZfRElSX0ZPUldBUkQpIHsKICAgICAgICAg
ICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdIC0gcy0+bGFzdF9tdlswXVswXVswXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5mX2NvZGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gLSBz
LT5jLmxhc3RfbXZbMF1bMF1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5mX2NvZGUpOwogICAgICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90
aW9uKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1b
MF1bMV0gLSBzLT5sYXN0X212WzBdWzBdWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPmZfY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZb
MF1bMF1bMF0gPQotICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzFdWzBdID0gcy0+
bXZbMF1bMF1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1bMF1bMV0gPQot
ICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzFdWzFdID0gcy0+bXZbMF1bMF1bMV07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsx
XSAtIHMtPmMubGFzdF9tdlswXVswXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5jLmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9t
dlswXVswXVswXSA9CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlswXVsxXVswXSA9
IHMtPmMubXZbMF1bMF1bMF07CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlswXVsw
XVsxXSA9CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlswXVsxXVsxXSA9IHMtPmMu
bXZbMF1bMF1bMV07CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzLT5t
dl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5tdl9k
aXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKICAgICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2Rl
X21vdGlvbihzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12
WzFdWzBdWzBdIC0gcy0+bGFzdF9tdlsxXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLT5iX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPmMubXZbMV1bMF1bMF0gLSBzLT5jLmxhc3RfbXZbMV1bMF1bMF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5iX2NvZGUpOwogICAg
ICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90aW9uKHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMV1bMF1bMV0gLSBzLT5sYXN0X212WzFdWzBd
WzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJfY29kZSk7
Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1bMF1bMF0gPQotICAgICAgICAgICAg
ICAgICAgICBzLT5sYXN0X212WzFdWzFdWzBdID0gcy0+bXZbMV1bMF1bMF07Ci0gICAgICAgICAg
ICAgICAgICAgIHMtPmxhc3RfbXZbMV1bMF1bMV0gPQotICAgICAgICAgICAgICAgICAgICBzLT5s
YXN0X212WzFdWzFdWzFdID0gcy0+bXZbMV1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVswXVsxXSAtIHMtPmMubGFzdF9tdlsxXVswXVsx
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmJfY29kZSk7
CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVswXVswXSA9CisgICAgICAgICAg
ICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVsxXVswXSA9IHMtPmMubXZbMV1bMF1bMF07CisgICAg
ICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVswXVsxXSA9CisgICAgICAgICAgICAgICAg
ICAgIHMtPmMubGFzdF9tdlsxXVsxXVsxXSA9IHMtPmMubXZbMV1bMF1bMV07CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdl9hc3NlcnQy
KHMtPm12X3R5cGUgPT0gTVZfVFlQRV9GSUVMRCk7Ci0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0
Mighcy0+ZnJhbWVfcHJlZF9mcmFtZV9kY3QpOworICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIo
cy0+Yy5tdl90eXBlID09IE1WX1RZUEVfRklFTEQpOworICAgICAgICAgICAgICAgIGF2X2Fzc2Vy
dDIoIXMtPmMuZnJhbWVfcHJlZF9mcmFtZV9kY3QpOwogICAgICAgICAgICAgICAgIGlmIChjYnAp
IHsgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBjb2RlZCBibG9jIHBhdHRlcm4KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHMtPmRxdWFudCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHMtPm12X2RpciA9PSBNVl9ESVJfRk9SV0FSRCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzLT5jLm12X2RpciA9PSBNVl9ESVJfRk9SV0FSRCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXRfbWJfbW9kZXMocywgNiwgMywgMSwgMSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0X21iX21vZGVzKHMsIDgg
LSBzLT5tdl9kaXIsIDIsIDEsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9t
Yl9tb2RlcyhzLCA4IC0gcy0+Yy5tdl9kaXIsIDIsIDEsIDEpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcHV0X3FzY2FsZShzKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHB1dF9tYl9tb2RlcyhzLCA1IC0gcy0+bXZfZGlyLCAzLCAxLCAx
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9tYl9tb2RlcyhzLCA1IC0gcy0+Yy5tdl9k
aXIsIDMsIDEsIDEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBjb2RlZCBibG9jIHBhdHRlcm4KLSAg
ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1IC0gcy0+bXZfZGlyLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1IC0gcy0+Yy5tdl9kaXIsIDIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDEpOyAgICAgLyogbW90aW9u
X3R5cGU6IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVh
bnQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2Rp
ZmYocyk7Ci0gICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7
CisgICAgICAgICAgICAgICAgaWYgKHMtPmMubXZfZGlyICYgTVZfRElSX0ZPUldBUkQpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5maWVsZF9zZWxlY3RbMF1baV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmZpZWxkX3Nl
bGVjdFswXVtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90aW9u
KHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBd
W2ldWzBdIC0gcy0+bGFzdF9tdlswXVtpXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVswXSAtIHMtPmMubGFzdF9tdlswXVtpXVsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5mX2Nv
ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtpXVsxXSAt
IChzLT5sYXN0X212WzBdW2ldWzFdID4+IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLT5mX2NvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+
bGFzdF9tdlswXVtpXVswXSA9IHMtPm12WzBdW2ldWzBdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcy0+bGFzdF9tdlswXVtpXVsxXSA9IHMtPm12WzBdW2ldWzFdICogMjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVsxXSAtIChzLT5j
Lmxhc3RfbXZbMF1baV1bMV0gPj4gMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPmMuZl9jb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMu
bGFzdF9tdlswXVtpXVswXSA9IHMtPmMubXZbMF1baV1bMF07CisgICAgICAgICAgICAgICAgICAg
ICAgICBzLT5jLmxhc3RfbXZbMF1baV1bMV0gPSBzLT5jLm12WzBdW2ldWzFdICogMjsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
cy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMu
bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCAyOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5w
YiwgMSwgcy0+ZmllbGRfc2VsZWN0WzFdW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxlY3RbMV1baV0pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsxXVtpXVswXSAtIHMtPmxhc3RfbXZbMV1baV1b
MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJfY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZb
MV1baV1bMF0gLSBzLT5jLmxhc3RfbXZbMV1baV1bMF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYl9jb2RlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1wZWcxX2VuY29kZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcy0+bXZbMV1baV1bMV0gLSAocy0+bGFzdF9tdlsxXVtpXVsxXSA+PiAx
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yl9jb2Rl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1baV1bMF0gPSBzLT5tdlsx
XVtpXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1baV1bMV0gPSBz
LT5tdlsxXVtpXVsxXSAqIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmMubXZbMV1baV1bMV0gLSAocy0+Yy5sYXN0X212WzFdW2ldWzFdID4+IDEpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmJfY29kZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMV1baV1bMF0gPSBzLT5jLm12
WzFdW2ldWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X212WzFdW2ldWzFd
ID0gcy0+Yy5tdlsxXVtpXVsxXSAqIDI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05MjEsMjAgKzkyMSwyMCBAQCBzdGF0aWMgYXZf
YWx3YXlzX2lubGluZSB2b2lkIG1wZWcxX2VuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4
dCAqcywKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2NvdW50OyBpKyspCiAgICAg
ICAgICAgICBpZiAoY2JwICYgKDEgPDwgKG1iX2Jsb2NrX2NvdW50IC0gMSAtIGkpKSkKICAgICAg
ICAgICAgICAgICBtcGVnMV9lbmNvZGVfYmxvY2socywgYmxvY2tbaV0sIGkpOwotICAgICAgICBz
LT5tYl9za2lwX3J1biA9IDA7Ci0gICAgICAgIGlmIChzLT5tYl9pbnRyYSkKKyAgICAgICAgcy0+
Yy5tYl9za2lwX3J1biA9IDA7CisgICAgICAgIGlmIChzLT5jLm1iX2ludHJhKQogICAgICAgICAg
ICAgcy0+aV90ZXhfYml0cyArPSBnZXRfYml0c19kaWZmKHMpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBzLT5wX3RleF9iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBtcGVnMTJfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJs
b2NrW11bNjRdLAorc3RhdGljIHZvaWQgbXBlZzEyX2VuY29kZV9tYihNUFZFbmNDb250ZXh0ICpj
b25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbW90aW9uX3gsIGludCBtb3Rpb25feSkKIHsKLSAgICBpZiAoIXMtPm1iX2ludHJhKQot
ICAgICAgICBzLT5sYXN0X2RjWzBdID0gcy0+bGFzdF9kY1sxXSA9IHMtPmxhc3RfZGNbMl0gPSAx
MjggPDwgcy0+aW50cmFfZGNfcHJlY2lzaW9uOwotICAgIGlmIChzLT5jaHJvbWFfZm9ybWF0ID09
IENIUk9NQV80MjApCisgICAgaWYgKCFzLT5jLm1iX2ludHJhKQorICAgICAgICBzLT5jLmxhc3Rf
ZGNbMF0gPSBzLT5jLmxhc3RfZGNbMV0gPSBzLT5jLmxhc3RfZGNbMl0gPSAxMjggPDwgcy0+Yy5p
bnRyYV9kY19wcmVjaXNpb247CisgICAgaWYgKHMtPmMuY2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFf
NDIwKQogICAgICAgICBtcGVnMV9lbmNvZGVfbWJfaW50ZXJuYWwocywgYmxvY2ssIG1vdGlvbl94
LCBtb3Rpb25feSwgNiwgMSk7CiAgICAgZWxzZQogICAgICAgICBtcGVnMV9lbmNvZGVfbWJfaW50
ZXJuYWwocywgYmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSwgOCwgMCk7CkBAIC0xMDQ4LDcgKzEw
NDgsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2
Y3R4KQogICAgIHN0YXRpYyBBVk9uY2UgaW5pdF9zdGF0aWNfb25jZSA9IEFWX09OQ0VfSU5JVDsK
ICAgICBNUEVHMTJFbmNDb250ZXh0ICpjb25zdCBtcGVnMTIgPSBhdmN0eC0+cHJpdl9kYXRhOwog
ICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtID0gJm1wZWcxMi0+bXBlZzsKLSAgICBNcGVn
RW5jQ29udGV4dCAgICAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgICAgKmNv
bnN0IHMgPSAmbS0+czsKICAgICBpbnQgcmV0OwogICAgIGludCBtYXhfc2l6ZSA9IGF2Y3R4LT5j
b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPID8gMTYzODMgOiA0MDk1OwogCkBAIC0x
MDcxLDcgKzEwNzEsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0Nv
bnRleHQgKmF2Y3R4KQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHMtPnFfc2NhbGVfdHlw
ZSA9PSAxKSB7CisgICAgaWYgKHMtPmMucV9zY2FsZV90eXBlID09IDEpIHsKICAgICAgICAgaWYg
KGF2Y3R4LT5xbWF4ID4gMjgpIHsKICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VS
Uk9SLAogICAgICAgICAgICAgICAgICAgICJub24gbGluZWFyIHF1YW50IG9ubHkgc3VwcG9ydHMg
cW1heCA8PSAyOCBjdXJyZW50bHlcbiIpOwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgc3RhdGljIGF2
X2NvbGQgaW50IGVuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBtLT5lbmNv
ZGVfcGljdHVyZV9oZWFkZXIgPSBtcGVnMV9lbmNvZGVfcGljdHVyZV9oZWFkZXI7CiAgICAgcy0+
ZW5jb2RlX21iICAgICAgICAgICAgID0gbXBlZzEyX2VuY29kZV9tYjsKIAotICAgIHMtPm1lLm12
X3BlbmFsdHkgPSBtdl9wZW5hbHR5OworICAgIHMtPmMubWUubXZfcGVuYWx0eSA9IG12X3BlbmFs
dHk7CiAgICAgbS0+ZmNvZGVfdGFiICAgICA9IGZjb2RlX3RhYiArIE1BWF9NVjsKICAgICBpZiAo
YXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8pIHsKICAgICAgICAgcy0+
bWluX3Fjb2VmZiA9IC0yNTU7CkBAIC0xMTIxLDkgKzExMjEsOSBAQCBzdGF0aWMgYXZfY29sZCBp
bnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHMtPm1pbl9xY29lZmYgPSAtMjA0NzsKICAgICAgICAgcy0+bWF4X3Fjb2VmZiA9IDIwNDc7
Ci0gICAgICAgIHMtPm1wZWdfcXVhbnQgPSAxOworICAgICAgICBzLT5jLm1wZWdfcXVhbnQgPSAx
OwogICAgIH0KLSAgICBpZiAocy0+aW50cmFfdmxjX2Zvcm1hdCkgeworICAgIGlmIChzLT5jLmlu
dHJhX3ZsY19mb3JtYXQpIHsKICAgICAgICAgcy0+aW50cmFfYWNfdmxjX2xlbmd0aCAgICAgID0K
ICAgICAgICAgcy0+aW50cmFfYWNfdmxjX2xhc3RfbGVuZ3RoID0gdW5pX21wZWcyX2FjX3ZsY19s
ZW47CiAgICAgfSBlbHNlIHsKQEAgLTExMzgsNyArMTEzOCw3IEBAIHN0YXRpYyBhdl9jb2xkIGlu
dCBlbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIHJldHVybiByZXQ7
CiAKICAgICBpZiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8gJiYK
LSAgICAgICAgcy0+dGhyZWFkX2NvbnRleHRbcy0+c2xpY2VfY29udGV4dF9jb3VudCAtIDFdLT5z
dGFydF9tYl95ID4KKyAgICAgICAgcy0+Yy50aHJlYWRfY29udGV4dFtzLT5jLnNsaWNlX2NvbnRl
eHRfY291bnQgLSAxXS0+c3RhcnRfbWJfeSA+CiAgICAgICAgICAgICBTTElDRV9NQVhfU1RBUlRf
Q09ERSAtIFNMSUNFX01JTl9TVEFSVF9DT0RFKSB7CiAgICAgICAgIC8vIE1QRUctMSBzbGljZXMg
bXVzdCBub3Qgc3RhcnQgYXQgYSBNQiByb3cgbnVtYmVyIHRoYXQgd291bGQgbWFrZQogICAgICAg
ICAvLyB0aGVpciBzdGFydCBjb2RlID4gU0xJQ0VfTUFYX1NUQVJUX0NPREUuIFNvIG1ha2UgdGhl
IGxhc3Qgc2xpY2UKQEAgLTExNDgsMTUgKzExNDgsMTUgQEAgc3RhdGljIGF2X2NvbGQgaW50IGVu
Y29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgICAgICAgICAgICAgICAgICAi
dGhlIGNhc2UgaW4gd2hpY2ggdGhlcmUgaXMgbm8gd29yayB0byBkbyBmb3Igc29tZSAiCiAgICAg
ICAgICAgICAgICAgICAgICAgInNsaWNlIGNvbnRleHRzLiIpOwogICAgICAgICBjb25zdCBpbnQg
bWJfaGVpZ2h0ID0gU0xJQ0VfTUFYX1NUQVJUX0NPREUgLSBTTElDRV9NSU5fU1RBUlRfQ09ERTsK
LSAgICAgICAgY29uc3QgaW50IG5iX3NsaWNlcyA9IHMtPnNsaWNlX2NvbnRleHRfY291bnQgLSAx
OworICAgICAgICBjb25zdCBpbnQgbmJfc2xpY2VzID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50
IC0gMTsKIAotICAgICAgICBzLT50aHJlYWRfY29udGV4dFtuYl9zbGljZXNdLT5zdGFydF9tYl95
ID0gbWJfaGVpZ2h0OworICAgICAgICBzLT5jLnRocmVhZF9jb250ZXh0W25iX3NsaWNlc10tPnN0
YXJ0X21iX3kgPSBtYl9oZWlnaHQ7CiAKICAgICAgICAgYXZfYXNzZXJ0MShuYl9zbGljZXMgPj0g
MSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJfc2xpY2VzOyBpKyspIHsKLSAgICAg
ICAgICAgIHMtPnRocmVhZF9jb250ZXh0W2ldLT5zdGFydF9tYl95ID0KKyAgICAgICAgICAgIHMt
PmMudGhyZWFkX2NvbnRleHRbaV0tPnN0YXJ0X21iX3kgPQogICAgICAgICAgICAgICAgIChtYl9o
ZWlnaHQgKiAoaSAgICApICsgbmJfc2xpY2VzIC8gMikgLyBuYl9zbGljZXM7Ci0gICAgICAgICAg
ICBzLT50aHJlYWRfY29udGV4dFtpXS0+ZW5kX21iX3kgICA9CisgICAgICAgICAgICBzLT5jLnRo
cmVhZF9jb250ZXh0W2ldLT5lbmRfbWJfeSAgID0KICAgICAgICAgICAgICAgICAobWJfaGVpZ2h0
ICogKGkgKyAxKSArIG5iX3NsaWNlcyAvIDIpIC8gbmJfc2xpY2VzOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTIyOSw5ICsxMjI5LDkgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIG1wZWcxX29wdGlv
bnNbXSA9IHsKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBtcGVnMl9vcHRpb25zW10gPSB7CiAgICAg
Q09NTU9OX09QVFMKICAgICB7ICJpbnRyYV92bGMiLCAgICAgICAgIlVzZSBNUEVHLTIgaW50cmEg
VkxDIHRhYmxlLiIsCi0gICAgICBGRl9NUFZfT0ZGU0VUKGludHJhX3ZsY19mb3JtYXQpLCAgICBB
Vl9PUFRfVFlQRV9CT09MLCB7IC5pNjQgPSAwIH0sIDAsIDEsIFZFIH0sCi0gICAgeyAibm9uX2xp
bmVhcl9xdWFudCIsICJVc2Ugbm9ubGluZWFyIHF1YW50aXplci4iLCAgICBGRl9NUFZfT0ZGU0VU
KHFfc2NhbGVfdHlwZSksICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBW
RSB9LAotICAgIHsgImFsdGVybmF0ZV9zY2FuIiwgICAiRW5hYmxlIGFsdGVybmF0ZSBzY2FudGFi
bGUuIiwgRkZfTVBWX09GRlNFVChhbHRlcm5hdGVfc2NhbiksIEFWX09QVF9UWVBFX0JPT0wsIHsg
Lmk2NCA9IDAgfSwgMCwgMSwgVkUgfSwKKyAgICAgIEZGX01QVl9PRkZTRVQoYy5pbnRyYV92bGNf
Zm9ybWF0KSwgICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBWRSB9LAor
ICAgIHsgIm5vbl9saW5lYXJfcXVhbnQiLCAiVXNlIG5vbmxpbmVhciBxdWFudGl6ZXIuIiwgICAg
RkZfTVBWX09GRlNFVChjLnFfc2NhbGVfdHlwZSksICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0
ID0gMCB9LCAwLCAxLCBWRSB9LAorICAgIHsgImFsdGVybmF0ZV9zY2FuIiwgICAiRW5hYmxlIGFs
dGVybmF0ZSBzY2FudGFibGUuIiwgRkZfTVBWX09GRlNFVChjLmFsdGVybmF0ZV9zY2FuKSwgQVZf
T1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBWRSB9LAogICAgIHsgImE1M2NjIiwg
IlVzZSBBNTMgQ2xvc2VkIENhcHRpb25zIChpZiBhdmFpbGFibGUpIiwgT0ZGU0VUKGE1M19jYyks
ICAgICAgICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMSB9LCAwLCAxLCBWRSB9LAogICAg
IHsgInNlcV9kaXNwX2V4dCIsICAgICAiV3JpdGUgc2VxdWVuY2VfZGlzcGxheV9leHRlbnNpb24g
YmxvY2tzLiIsIE9GRlNFVChzZXFfZGlzcF9leHQpLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9
IC0xIH0sIC0xLCAxLCBWRSwgLnVuaXQgPSAic2VxX2Rpc3BfZXh0IiB9LAogICAgIHsgICAgICJh
dXRvIiwgICBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgIHsuaTY0ID0gLTF9LCAgMCwgMCwg
VkUsIC51bml0ID0gInNlcV9kaXNwX2V4dCIgfSwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBl
ZzEyZW5jLmggYi9saWJhdmNvZGVjL21wZWcxMmVuYy5oCmluZGV4IDhmZmE0NzFhNjMuLmE4YWVh
ZGJiM2UgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmgKKysrIGIvbGliYXZjb2Rl
Yy9tcGVnMTJlbmMuaApAQCAtMjQsMTYgKzI0LDE2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4K
IAotI2luY2x1ZGUgIm1wZWd2aWRlby5oIgorI2luY2x1ZGUgIm1wZWd2aWRlb2VuYy5oIgogI2lu
Y2x1ZGUgIm1wZWd2aWRlb2RhdGEuaCIKIAotdm9pZCBmZl9tcGVnMV9lbmNvZGVfc2xpY2VfaGVh
ZGVyKE1wZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbXBlZzFfZW5jb2RlX3NsaWNlX2hlYWRl
cihNUFZFbmNDb250ZXh0ICpzKTsKIAogLy8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBpbnRy
YV9kY19wcmVjaXNpb24gaGFzIGJlZW4gc2FuaXRpemVkIGluIGZmX21wdl9lbmNvZGVfaW5pdCgp
Ci1zdGF0aWMgaW5saW5lIHZvaWQgZmZfbXBlZzFfZW5jb2RlX2luaXQoTXBlZ0VuY0NvbnRleHQg
KnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZmZfbXBlZzFfZW5jb2RlX2luaXQoTVBWRW5jQ29udGV4
dCAqcykKIHsKLSAgICBzLT55X2RjX3NjYWxlX3RhYmxlID0KLSAgICBzLT5jX2RjX3NjYWxlX3Rh
YmxlID0gZmZfbXBlZzEyX2RjX3NjYWxlX3RhYmxlW3MtPmludHJhX2RjX3ByZWNpc2lvbl07Cisg
ICAgcy0+Yy55X2RjX3NjYWxlX3RhYmxlID0KKyAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBm
Zl9tcGVnMTJfZGNfc2NhbGVfdGFibGVbcy0+Yy5pbnRyYV9kY19wcmVjaXNpb25dOwogfQogCiAj
ZW5kaWYgLyogQVZDT0RFQ19NUEVHMTJFTkNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9t
cGVnNHZpZGVvZW5jLmMgYi9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYwppbmRleCBkZGI2OTU4
MjI5Li45ZjkzM2I1MTdlIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYwor
KysgYi9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYwpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMg
aW5saW5lIE1wZWc0RW5jQ29udGV4dCAqbWFpbmN0eF90b19tcGVnNChNUFZNYWluRW5jQ29udGV4
dCAqbSkKICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgdGhhdCBlbmNvZGluZyB0aGUgOHg4
IGJsb2NrIGluIGJsb2NrIHdvdWxkIG5lZWQuCiAgKiBAcGFyYW1baW5dICBibG9ja19sYXN0X2lu
ZGV4IGxhc3QgaW5kZXggaW4gc2NhbnRhYmxlIG9yZGVyIHRoYXQgcmVmZXJzIHRvIGEgbm9uIHpl
cm8gZWxlbWVudCBpbiBibG9jay4KICAqLwotc3RhdGljIGlubGluZSBpbnQgZ2V0X2Jsb2NrX3Jh
dGUoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNjRdLAorc3RhdGljIGlubGluZSBp
bnQgZ2V0X2Jsb2NrX3JhdGUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1s2
NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tfbGFzdF9pbmRl
eCwgY29uc3QgdWludDhfdCBzY2FudGFibGVbNjRdKQogewogICAgIGludCBsYXN0ID0gMDsKQEAg
LTExNSwxMTMgKzExNSwxMTMgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2Jsb2NrX3JhdGUoTXBl
Z0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNjRdLAogCiAvKioKICAqIFJlc3RvcmUgdGhl
IGFjIGNvZWZmaWNpZW50cyBpbiBibG9jayB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IGRlY2lk
ZV9hY19wcmVkKCkuCi0gKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmVzdG9yZXMgcy0+YmxvY2tfbGFz
dF9pbmRleC4KKyAqIFRoaXMgZnVuY3Rpb24gYWxzbyByZXN0b3JlcyBzLT5jLmJsb2NrX2xhc3Rf
aW5kZXguCiAgKiBAcGFyYW1baW4sb3V0XSBibG9jayBNQiBjb2VmZmljaWVudHMsIHRoZXNlIHdp
bGwgYmUgcmVzdG9yZWQKICAqIEBwYXJhbVtpbl0gZGlyIGFjIHByZWRpY3Rpb24gZGlyZWN0aW9u
IGZvciBlYWNoIDh4OCBibG9jawogICogQHBhcmFtW291dF0gc3Qgc2NhbnRhYmxlIGZvciBlYWNo
IDh4OCBibG9jawogICogQHBhcmFtW2luXSB6aWd6YWdfbGFzdF9pbmRleCBpbmRleCByZWZlcnJp
bmcgdG8gdGhlIGxhc3Qgbm9uIHplcm8gY29lZmZpY2llbnQgaW4gemlnemFnIG9yZGVyCiAgKi8K
LXN0YXRpYyBpbmxpbmUgdm9pZCByZXN0b3JlX2FjX2NvZWZmcyhNcGVnRW5jQ29udGV4dCAqcywg
aW50MTZfdCBibG9ja1s2XVs2NF0sCitzdGF0aWMgaW5saW5lIHZvaWQgcmVzdG9yZV9hY19jb2Vm
ZnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGRpcls2XSwgY29uc3QgdWlu
dDhfdCAqc3RbNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50IHppZ3phZ19sYXN0X2luZGV4WzZdKQogewogICAgIGludCBpLCBuOwotICAgIG1lbWNweShz
LT5ibG9ja19sYXN0X2luZGV4LCB6aWd6YWdfbGFzdF9pbmRleCwgc2l6ZW9mKGludCkgKiA2KTsK
KyAgICBtZW1jcHkocy0+Yy5ibG9ja19sYXN0X2luZGV4LCB6aWd6YWdfbGFzdF9pbmRleCwgc2l6
ZW9mKGludCkgKiA2KTsKIAogICAgIGZvciAobiA9IDA7IG4gPCA2OyBuKyspIHsKLSAgICAgICAg
aW50MTZfdCAqYWNfdmFsID0gJnMtPmFjX3ZhbFswXVswXVswXSArIHMtPmJsb2NrX2luZGV4W25d
ICogMTY7CisgICAgICAgIGludDE2X3QgKmFjX3ZhbCA9ICZzLT5jLmFjX3ZhbFswXVswXVswXSAr
IHMtPmMuYmxvY2tfaW5kZXhbbl0gKiAxNjsKIAotICAgICAgICBzdFtuXSA9IHMtPmludHJhX3Nj
YW50YWJsZS5wZXJtdXRhdGVkOworICAgICAgICBzdFtuXSA9IHMtPmMuaW50cmFfc2NhbnRhYmxl
LnBlcm11dGF0ZWQ7CiAgICAgICAgIGlmIChkaXJbbl0pIHsKICAgICAgICAgICAgIC8qIHRvcCBw
cmVkaWN0aW9uICovCiAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgODsgaSsrKQotICAgICAg
ICAgICAgICAgIGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXV0gPSBhY192YWxb
aSArIDhdOworICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0
aW9uW2ldXSA9IGFjX3ZhbFtpICsgOF07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAv
KiBsZWZ0IHByZWRpY3Rpb24gKi8KICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCA4OyBpKysp
Ci0gICAgICAgICAgICAgICAgYmxvY2tbbl1bcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uW2kgPDwg
M11dID0gYWNfdmFsW2ldOworICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmMuaWRzcC5pZGN0
X3Blcm11dGF0aW9uW2kgPDwgM11dID0gYWNfdmFsW2ldOwogICAgICAgICB9CiAgICAgfQogfQog
CiAvKioKICAqIFJldHVybiB0aGUgb3B0aW1hbCB2YWx1ZSAoMCBvciAxKSBmb3IgdGhlIGFjX3By
ZWQgZWxlbWVudCBmb3IgdGhlIGdpdmVuIE1CIGluIE1QRUctNC4KLSAqIFRoaXMgZnVuY3Rpb24g
d2lsbCBhbHNvIHVwZGF0ZSBzLT5ibG9ja19sYXN0X2luZGV4IGFuZCBzLT5hY192YWwuCisgKiBU
aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyB1cGRhdGUgcy0+Yy5ibG9ja19sYXN0X2luZGV4IGFuZCBz
LT5jLmFjX3ZhbC4KICAqIEBwYXJhbVtpbixvdXRdIGJsb2NrIE1CIGNvZWZmaWNpZW50cywgdGhl
c2Ugd2lsbCBiZSB1cGRhdGVkIGlmIDEgaXMgcmV0dXJuZWQKICAqIEBwYXJhbVtpbl0gZGlyIGFj
IHByZWRpY3Rpb24gZGlyZWN0aW9uIGZvciBlYWNoIDh4OCBibG9jawogICogQHBhcmFtW291dF0g
c3Qgc2NhbnRhYmxlIGZvciBlYWNoIDh4OCBibG9jawogICogQHBhcmFtW291dF0gemlnemFnX2xh
c3RfaW5kZXggaW5kZXggcmVmZXJyaW5nIHRvIHRoZSBsYXN0IG5vbiB6ZXJvIGNvZWZmaWNpZW50
IGluIHppZ3phZyBvcmRlcgogICovCi1zdGF0aWMgaW5saW5lIGludCBkZWNpZGVfYWNfcHJlZChN
cGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCitzdGF0aWMgaW5saW5lIGlu
dCBkZWNpZGVfYWNfcHJlZChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrWzZd
WzY0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBkaXJbNl0s
IGNvbnN0IHVpbnQ4X3QgKnN0WzZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHppZ3phZ19sYXN0X2luZGV4WzZdKQogewogICAgIGludCBzY29yZSA9IDA7CiAgICAgaW50
IGksIG47Ci0gICAgY29uc3QgaW50OF90ICpjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jdXJfcGlj
LnFzY2FsZV90YWJsZTsKKyAgICBjb25zdCBpbnQ4X3QgKmNvbnN0IHFzY2FsZV90YWJsZSA9IHMt
PmMuY3VyX3BpYy5xc2NhbGVfdGFibGU7CiAKLSAgICBtZW1jcHkoemlnemFnX2xhc3RfaW5kZXgs
IHMtPmJsb2NrX2xhc3RfaW5kZXgsIHNpemVvZihpbnQpICogNik7CisgICAgbWVtY3B5KHppZ3ph
Z19sYXN0X2luZGV4LCBzLT5jLmJsb2NrX2xhc3RfaW5kZXgsIHNpemVvZihpbnQpICogNik7CiAK
ICAgICBmb3IgKG4gPSAwOyBuIDwgNjsgbisrKSB7CiAgICAgICAgIGludDE2X3QgKmFjX3ZhbCwg
KmFjX3ZhbDE7CiAKLSAgICAgICAgc2NvcmUgLT0gZ2V0X2Jsb2NrX3JhdGUocywgYmxvY2tbbl0s
IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkKTsKKyAgICAgICAgc2NvcmUgLT0gZ2V0X2Js
b2NrX3JhdGUocywgYmxvY2tbbl0sIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZCk7
CiAKLSAgICAgICAgYWNfdmFsICA9ICZzLT5hY192YWxbMF1bMF1bMF0gKyBzLT5ibG9ja19pbmRl
eFtuXSAqIDE2OworICAgICAgICBhY192YWwgID0gJnMtPmMuYWNfdmFsWzBdWzBdWzBdICsgcy0+
Yy5ibG9ja19pbmRleFtuXSAqIDE2OwogICAgICAgICBhY192YWwxID0gYWNfdmFsOwogICAgICAg
ICBpZiAoZGlyW25dKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgeHkgPSBzLT5tYl94ICsgcy0+
bWJfeSAqIHMtPm1iX3N0cmlkZSAtIHMtPm1iX3N0cmlkZTsKKyAgICAgICAgICAgIGNvbnN0IGlu
dCB4eSA9IHMtPmMubWJfeCArIHMtPmMubWJfeSAqIHMtPmMubWJfc3RyaWRlIC0gcy0+Yy5tYl9z
dHJpZGU7CiAgICAgICAgICAgICAvKiB0b3AgcHJlZGljdGlvbiAqLwotICAgICAgICAgICAgYWNf
dmFsIC09IHMtPmJsb2NrX3dyYXBbbl0gKiAxNjsKLSAgICAgICAgICAgIGlmIChzLT5tYl95ID09
IDAgfHwgcy0+cXNjYWxlID09IHFzY2FsZV90YWJsZVt4eV0gfHwgbiA9PSAyIHx8IG4gPT0gMykg
eworICAgICAgICAgICAgYWNfdmFsIC09IHMtPmMuYmxvY2tfd3JhcFtuXSAqIDE2OworICAgICAg
ICAgICAgaWYgKHMtPmMubWJfeSA9PSAwIHx8IHMtPmMucXNjYWxlID09IHFzY2FsZV90YWJsZVt4
eV0gfHwgbiA9PSAyIHx8IG4gPT0gMykgewogICAgICAgICAgICAgICAgIC8qIHNhbWUgcXNjYWxl
ICovCiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IDg7IGkrKykgewotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQgbGV2ZWwgPSBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0
YXRpb25baV1dOwotICAgICAgICAgICAgICAgICAgICBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVy
bXV0YXRpb25baV1dID0gbGV2ZWwgLSBhY192YWxbaSArIDhdOwotICAgICAgICAgICAgICAgICAg
ICBhY192YWwxW2ldICAgICA9IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8
IDNdXTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxldmVsID0gYmxvY2tbbl1bcy0+
Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25baV1dOworICAgICAgICAgICAgICAgICAgICBibG9ja1tu
XVtzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXV0gPSBsZXZlbCAtIGFjX3ZhbFtpICsgOF07
CisgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFbaV0gICAgID0gYmxvY2tbbl1bcy0+Yy5pZHNw
LmlkY3RfcGVybXV0YXRpb25baSA8PCAzXV07CiAgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFb
aSArIDhdID0gbGV2ZWw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvKiBkaWZmZXJlbnQgcXNjYWxlLCB3ZSBtdXN0IHJlc2NhbGUgKi8K
ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgODsgaSsrKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludCBsZXZlbCA9IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlv
bltpXV07Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRh
dGlvbltpXV0gPSBsZXZlbCAtIFJPVU5ERURfRElWKGFjX3ZhbFtpICsgOF0gKiBxc2NhbGVfdGFi
bGVbeHldLCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgICAgICAgICBhY192YWwxW2ldICAgICA9
IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8IDNdXTsKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50IGxldmVsID0gYmxvY2tbbl1bcy0+Yy5pZHNwLmlkY3RfcGVybXV0
YXRpb25baV1dOworICAgICAgICAgICAgICAgICAgICBibG9ja1tuXVtzLT5jLmlkc3AuaWRjdF9w
ZXJtdXRhdGlvbltpXV0gPSBsZXZlbCAtIFJPVU5ERURfRElWKGFjX3ZhbFtpICsgOF0gKiBxc2Nh
bGVfdGFibGVbeHldLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFb
aV0gICAgID0gYmxvY2tbbl1bcy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25baSA8PCAzXV07CiAg
ICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFbaSArIDhdID0gbGV2ZWw7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Rbbl0gPSBzLT5wZXJtdXRhdGVkX2lu
dHJhX2hfc2NhbnRhYmxlOworICAgICAgICAgICAgc3Rbbl0gPSBzLT5jLnBlcm11dGF0ZWRfaW50
cmFfaF9zY2FudGFibGU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQg
eHkgPSBzLT5tYl94IC0gMSArIHMtPm1iX3kgKiBzLT5tYl9zdHJpZGU7CisgICAgICAgICAgICBj
b25zdCBpbnQgeHkgPSBzLT5jLm1iX3ggLSAxICsgcy0+Yy5tYl95ICogcy0+Yy5tYl9zdHJpZGU7
CiAgICAgICAgICAgICAvKiBsZWZ0IHByZWRpY3Rpb24gKi8KICAgICAgICAgICAgIGFjX3ZhbCAt
PSAxNjsKLSAgICAgICAgICAgIGlmIChzLT5tYl94ID09IDAgfHwgcy0+cXNjYWxlID09IHFzY2Fs
ZV90YWJsZVt4eV0gfHwgbiA9PSAxIHx8IG4gPT0gMykgeworICAgICAgICAgICAgaWYgKHMtPmMu
bWJfeCA9PSAwIHx8IHMtPmMucXNjYWxlID09IHFzY2FsZV90YWJsZVt4eV0gfHwgbiA9PSAxIHx8
IG4gPT0gMykgewogICAgICAgICAgICAgICAgIC8qIHNhbWUgcXNjYWxlICovCiAgICAgICAgICAg
ICAgICAgZm9yIChpID0gMTsgaSA8IDg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgbGV2ZWwgPSBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25baSA8PCAzXV07
Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltp
IDw8IDNdXSA9IGxldmVsIC0gYWNfdmFsW2ldOworICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgbGV2ZWwgPSBibG9ja1tuXVtzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8IDNdXTsK
KyAgICAgICAgICAgICAgICAgICAgYmxvY2tbbl1bcy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25b
aSA8PCAzXV0gPSBsZXZlbCAtIGFjX3ZhbFtpXTsKICAgICAgICAgICAgICAgICAgICAgYWNfdmFs
MVtpXSAgICAgPSBsZXZlbDsKLSAgICAgICAgICAgICAgICAgICAgYWNfdmFsMVtpICsgOF0gPSBi
bG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25baV1dOworICAgICAgICAgICAgICAgICAg
ICBhY192YWwxW2kgKyA4XSA9IGJsb2NrW25dW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2ld
XTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIC8qIGRpZmZlcmVudCBxc2NhbGUsIHdlIG11c3QgcmVzY2FsZSAqLwogICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDE7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50IGxldmVsID0gYmxvY2tbbl1bcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uW2kgPDwgM11dOwot
ICAgICAgICAgICAgICAgICAgICBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25baSA8
PCAzXV0gPSBsZXZlbCAtIFJPVU5ERURfRElWKGFjX3ZhbFtpXSAqIHFzY2FsZV90YWJsZVt4eV0s
IHMtPnFzY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZXZlbCA9IGJsb2Nr
W25dW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2kgPDwgM11dOworICAgICAgICAgICAgICAg
ICAgICBibG9ja1tuXVtzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8IDNdXSA9IGxldmVs
IC0gUk9VTkRFRF9ESVYoYWNfdmFsW2ldICogcXNjYWxlX3RhYmxlW3h5XSwgcy0+Yy5xc2NhbGUp
OwogICAgICAgICAgICAgICAgICAgICBhY192YWwxW2ldICAgICA9IGxldmVsOwotICAgICAgICAg
ICAgICAgICAgICBhY192YWwxW2kgKyA4XSA9IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRh
dGlvbltpXV07CisgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFbaSArIDhdID0gYmxvY2tbbl1b
cy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25baV1dOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN0W25dID0gcy0+cGVybXV0YXRlZF9pbnRyYV92X3NjYW50
YWJsZTsKKyAgICAgICAgICAgIHN0W25dID0gcy0+Yy5wZXJtdXRhdGVkX2ludHJhX3Zfc2NhbnRh
YmxlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpID0gNjM7IGkgPiAwOyBpLS0pICAvLyBG
SVhNRSBvcHRpbWl6ZQogICAgICAgICAgICAgaWYgKGJsb2NrW25dW3N0W25dW2ldXSkKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtuXSA9IGk7Cisg
ICAgICAgIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXSA9IGk7CiAKLSAgICAgICAgc2NvcmUgKz0g
Z2V0X2Jsb2NrX3JhdGUocywgYmxvY2tbbl0sIHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0sIHN0W25d
KTsKKyAgICAgICAgc2NvcmUgKz0gZ2V0X2Jsb2NrX3JhdGUocywgYmxvY2tbbl0sIHMtPmMuYmxv
Y2tfbGFzdF9pbmRleFtuXSwgc3Rbbl0pOwogICAgIH0KIAogICAgIGlmIChzY29yZSA8IDApIHsK
QEAgLTIzNSwzOSArMjM1LDM4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRlY2lkZV9hY19wcmVkKE1w
ZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKIC8qKgogICogbW9kaWZ5IG1i
X3R5cGUgJiBxc2NhbGUgc28gdGhhdCBlbmNvZGluZyBpcyBhY3R1YWxseSBwb3NzaWJsZSBpbiBN
UEVHLTQKICAqLwotdm9pZCBmZl9jbGVhbl9tcGVnNF9xc2NhbGVzKE1wZWdFbmNDb250ZXh0ICpz
KQordm9pZCBmZl9jbGVhbl9tcGVnNF9xc2NhbGVzKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7
Ci0gICAgaW50IGk7Ci0gICAgaW50OF90ICpjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jdXJfcGlj
LnFzY2FsZV90YWJsZTsKKyAgICBpbnQ4X3QgKmNvbnN0IHFzY2FsZV90YWJsZSA9IHMtPmMuY3Vy
X3BpYy5xc2NhbGVfdGFibGU7CiAKICAgICBmZl9jbGVhbl9oMjYzX3FzY2FsZXMocyk7CiAKLSAg
ICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAgaWYgKHMtPmMu
cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CiAgICAgICAgIGludCBvZGQgPSAwOwog
ICAgICAgICAvKiBvaywgY29tZSBvbiwgdGhpcyBpc24ndCBmdW5ueSBhbnltb3JlLCB0aGVyZSdz
IG1vcmUgY29kZSBmb3IKICAgICAgICAgICogaGFuZGxpbmcgdGhpcyBNUEVHLTQgbWVzcyB0aGFu
IGZvciB0aGUgYWN0dWFsIGFkYXB0aXZlIHF1YW50aXphdGlvbiAqLwogCi0gICAgICAgIGZvciAo
aSA9IDA7IGkgPCBzLT5tYl9udW07IGkrKykgewotICAgICAgICAgICAgaW50IG1iX3h5ID0gcy0+
bWJfaW5kZXgyeHlbaV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+Yy5tYl9udW07
IGkrKykgeworICAgICAgICAgICAgaW50IG1iX3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKICAg
ICAgICAgICAgIG9kZCArPSBxc2NhbGVfdGFibGVbbWJfeHldICYgMTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICgyICogb2RkID4gcy0+bWJfbnVtKQorICAgICAgICBpZiAoMiAqIG9kZCA+IHMt
PmMubWJfbnVtKQogICAgICAgICAgICAgb2RkID0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgb2RkID0gMDsKIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bWJfbnVtOyBpKyspIHsK
LSAgICAgICAgICAgIGludCBtYl94eSA9IHMtPm1iX2luZGV4Mnh5W2ldOworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHMtPmMubWJfbnVtOyBpKyspIHsKKyAgICAgICAgICAgIGludCBtYl94
eSA9IHMtPmMubWJfaW5kZXgyeHlbaV07CiAgICAgICAgICAgICBpZiAoKHFzY2FsZV90YWJsZVtt
Yl94eV0gJiAxKSAhPSBvZGQpCiAgICAgICAgICAgICAgICAgcXNjYWxlX3RhYmxlW21iX3h5XSsr
OwogICAgICAgICAgICAgaWYgKHFzY2FsZV90YWJsZVttYl94eV0gPiAzMSkKICAgICAgICAgICAg
ICAgICBxc2NhbGVfdGFibGVbbWJfeHldID0gMzE7CiAgICAgICAgIH0KIAotICAgICAgICBmb3Ig
KGkgPSAxOyBpIDwgcy0+bWJfbnVtOyBpKyspIHsKLSAgICAgICAgICAgIGludCBtYl94eSA9IHMt
Pm1iX2luZGV4Mnh5W2ldOwotICAgICAgICAgICAgaWYgKHFzY2FsZV90YWJsZVttYl94eV0gIT0g
cXNjYWxlX3RhYmxlW3MtPm1iX2luZGV4Mnh5W2kgLSAxXV0gJiYKKyAgICAgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCBzLT5jLm1iX251bTsgaSsrKSB7CisgICAgICAgICAgICBpbnQgbWJfeHkgPSBz
LT5jLm1iX2luZGV4Mnh5W2ldOworICAgICAgICAgICAgaWYgKHFzY2FsZV90YWJsZVttYl94eV0g
IT0gcXNjYWxlX3RhYmxlW3MtPmMubWJfaW5kZXgyeHlbaSAtIDFdXSAmJgogICAgICAgICAgICAg
ICAgIChzLT5tYl90eXBlW21iX3h5XSAmIENBTkRJREFURV9NQl9UWVBFX0RJUkVDVCkpIHsKICAg
ICAgICAgICAgICAgICBzLT5tYl90eXBlW21iX3h5XSB8PSBDQU5ESURBVEVfTUJfVFlQRV9CSURJ
UjsKICAgICAgICAgICAgIH0KQEAgLTMwNCw3ICszMDMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBt
cGVnNF9nZXRfZGNfbGVuZ3RoKGludCBsZXZlbCwgaW50IG4pCiAgKiBFbmNvZGUgYW4gOHg4IGJs
b2NrLgogICogQHBhcmFtIG4gYmxvY2sgaW5kZXggKDAtMyBhcmUgbHVtYSwgNC01IGFyZSBjaHJv
bWEpCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBtcGVnNF9lbmNvZGVfYmxvY2soY29uc3QgTXBl
Z0VuY0NvbnRleHQgKnMsCitzdGF0aWMgaW5saW5lIHZvaWQgbXBlZzRfZW5jb2RlX2Jsb2NrKGNv
bnN0IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IGludHJhX2RjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzY2FuX3Rh
YmxlLCBQdXRCaXRDb250ZXh0ICpkY19wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHV0Qml0Q29udGV4dCAqYWNfcGIpCkBAIC0zMTIsOSArMzExLDkgQEAgc3RhdGlj
IGlubGluZSB2b2lkIG1wZWc0X2VuY29kZV9ibG9jayhjb25zdCBNcGVnRW5jQ29udGV4dCAqcywK
ICAgICBpbnQgaSwgbGFzdF9ub25femVybzsKICAgICBjb25zdCB1aW50MzJfdCAqYml0c190YWI7
CiAgICAgY29uc3QgdWludDhfdCAqbGVuX3RhYjsKLSAgICBjb25zdCBpbnQgbGFzdF9pbmRleCA9
IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgY29uc3QgaW50IGxhc3RfaW5kZXggPSBzLT5j
LmJsb2NrX2xhc3RfaW5kZXhbbl07CiAKLSAgICBpZiAocy0+bWJfaW50cmEpIHsgIC8vIE5vdGUg
Z2NjICgzLjIuMSBhdCBsZWFzdCkgd2lsbCBvcHRpbWl6ZSB0aGlzIGF3YXkKKyAgICBpZiAocy0+
Yy5tYl9pbnRyYSkgeyAgLy8gTm90ZSBnY2MgKDMuMi4xIGF0IGxlYXN0KSB3aWxsIG9wdGltaXpl
IHRoaXMgYXdheQogICAgICAgICAvKiBNUEVHLTQgYmFzZWQgREMgcHJlZGljdG9yICovCiAgICAg
ICAgIG1wZWc0X2VuY29kZV9kYyhkY19wYiwgaW50cmFfZGMsIG4pOwogICAgICAgICBpZiAobGFz
dF9pbmRleCA8IDEpCkBAIC0zNjUsMTYgKzM2NCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbXBl
ZzRfZW5jb2RlX2Jsb2NrKGNvbnN0IE1wZWdFbmNDb250ZXh0ICpzLAogICAgIH0KIH0KIAotc3Rh
dGljIGludCBtcGVnNF9nZXRfYmxvY2tfbGVuZ3RoKE1wZWdFbmNDb250ZXh0ICpzLAorc3RhdGlj
IGludCBtcGVnNF9nZXRfYmxvY2tfbGVuZ3RoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqYmxvY2ssIGludCBu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnRyYV9kYywgY29uc3Qg
dWludDhfdCAqc2Nhbl90YWJsZSkKIHsKICAgICBpbnQgaSwgbGFzdF9ub25femVybzsKICAgICBj
b25zdCB1aW50OF90ICpsZW5fdGFiOwotICAgIGNvbnN0IGludCBsYXN0X2luZGV4ID0gcy0+Ymxv
Y2tfbGFzdF9pbmRleFtuXTsKKyAgICBjb25zdCBpbnQgbGFzdF9pbmRleCA9IHMtPmMuYmxvY2tf
bGFzdF9pbmRleFtuXTsKICAgICBpbnQgbGVuID0gMDsKIAotICAgIGlmIChzLT5tYl9pbnRyYSkg
eyAgLy8gTm90ZSBnY2MgKDMuMi4xIGF0IGxlYXN0KSB3aWxsIG9wdGltaXplIHRoaXMgYXdheQor
ICAgIGlmIChzLT5jLm1iX2ludHJhKSB7ICAvLyBOb3RlIGdjYyAoMy4yLjEgYXQgbGVhc3QpIHdp
bGwgb3B0aW1pemUgdGhpcyBhd2F5CiAgICAgICAgIC8qIE1QRUctNCBiYXNlZCBEQyBwcmVkaWN0
b3IgKi8KICAgICAgICAgbGVuICs9IG1wZWc0X2dldF9kY19sZW5ndGgoaW50cmFfZGMsIG4pOwog
ICAgICAgICBpZiAobGFzdF9pbmRleCA8IDEpCkBAIC00MTksNyArNDE4LDcgQEAgc3RhdGljIGlu
dCBtcGVnNF9nZXRfYmxvY2tfbGVuZ3RoKE1wZWdFbmNDb250ZXh0ICpzLAogICAgIHJldHVybiBs
ZW47CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtcGVnNF9lbmNvZGVfYmxvY2tzKE1wZWdFbmND
b250ZXh0ICpzLAorc3RhdGljIGlubGluZSB2b2lkIG1wZWc0X2VuY29kZV9ibG9ja3MoTVBWRW5j
Q29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDE2X3QgYmxvY2tbNl1bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50IGludHJhX2RjWzZdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqIGNvbnN0ICpzY2FuX3RhYmxlLApAQCAt
NDI5LDcgKzQyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtcGVnNF9lbmNvZGVfYmxvY2tzKE1w
ZWdFbmNDb250ZXh0ICpzLAogICAgIGludCBpOwogCiAgICAgaWYgKHNjYW5fdGFibGUpIHsKLSAg
ICAgICAgaWYgKHMtPmF2Y3R4LT5mbGFnczIgJiBBVl9DT0RFQ19GTEFHMl9OT19PVVRQVVQpIHsK
KyAgICAgICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdzMiAmIEFWX0NPREVDX0ZMQUcyX05PX09VVFBV
VCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgICAg
ICBza2lwX3B1dF9iaXRzKCZzLT5wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1w
ZWc0X2dldF9ibG9ja19sZW5ndGgocywgYmxvY2tbaV0sIGksCkBAIC00NDEsMjggKzQ0MCwyOCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgbXBlZzRfZW5jb2RlX2Jsb2NrcyhNcGVnRW5jQ29udGV4dCAq
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cmFfZGNbaV0sIHNjYW5f
dGFibGVbaV0sIGRjX3BiLCBhY19wYik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAg
ICBpZiAocy0+YXZjdHgtPmZsYWdzMiAmIEFWX0NPREVDX0ZMQUcyX05PX09VVFBVVCkgeworICAg
ICAgICBpZiAocy0+Yy5hdmN0eC0+ZmxhZ3MyICYgQVZfQ09ERUNfRkxBRzJfTk9fT1VUUFVUKSB7
CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgICAgIHNr
aXBfcHV0X2JpdHMoJnMtPnBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBlZzRf
Z2V0X2Jsb2NrX2xlbmd0aChzLCBibG9ja1tpXSwgaSwgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11
dGF0ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZCkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLyogZW5jb2RlIGVhY2ggYmxvY2sgKi8KICAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICAgICAgbXBlZzRfZW5jb2RlX2Jsb2NrKHMs
IGJsb2NrW2ldLCBpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5p
bnRyYV9zY2FudGFibGUucGVybXV0YXRlZCwgZGNfcGIsIGFjX3BiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZCwgZGNf
cGIsIGFjX3BiKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBpbnQgZ2V0
X2JfY2JwKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKK3N0YXRpYyBp
bmxpbmUgaW50IGdldF9iX2NicChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2Nr
WzZdWzY0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW90aW9uX3gsIGludCBt
b3Rpb25feSwgaW50IG1iX3R5cGUpCiB7CiAgICAgaW50IGNicCA9IDAsIGk7CiAKICAgICBpZiAo
cy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfQ0JQX1JEKSB7CiAgICAgICAgIGludCBzY29yZSAg
ICAgICAgPSAwOwotICAgICAgICBjb25zdCBpbnQgbGFtYmRhID0gcy0+bGFtYmRhMiA+PiAoRkZf
TEFNQkRBX1NISUZUIC0gNik7CisgICAgICAgIGNvbnN0IGludCBsYW1iZGEgPSBzLT5jLmxhbWJk
YTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2
OyBpKyspIHsKICAgICAgICAgICAgIGlmIChzLT5jb2RlZF9zY29yZVtpXSA8IDApIHsKQEAgLTQ4
MiwxNCArNDgxLDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9iX2NicChNcGVnRW5jQ29udGV4
dCAqcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgNjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtp
XSA+PSAwICYmICgoY2JwID4+ICg1IC0gaSkpICYgMSkgPT0gMCkgewotICAgICAgICAgICAgICAg
IHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKLSAgICAgICAgICAgICAgICBzLT5iZHNwLmNs
ZWFyX2Jsb2NrKHMtPmJsb2NrW2ldKTsKKyAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xhc3Rf
aW5kZXhbaV0gPj0gMCAmJiAoKGNicCA+PiAoNSAtIGkpKSAmIDEpID09IDApIHsKKyAgICAgICAg
ICAgICAgICBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKKyAgICAgICAgICAgICAgICBz
LT5jLmJkc3AuY2xlYXJfYmxvY2socy0+Yy5ibG9ja1tpXSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7Ci0g
ICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQorICAgICAgICAgICAg
aWYgKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQogICAgICAgICAgICAgICAgIGNicCB8
PSAxIDw8ICg1IC0gaSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00OTksMjkgKzQ5OCwyOSBAQCBz
dGF0aWMgaW5saW5lIGludCBnZXRfYl9jYnAoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxv
Y2tbNl1bNjRdLAogLy8gRklYTUUgdGhpcyBpcyBkdXBsaWNhdGVkIHRvIGgyNjMuYwogc3RhdGlj
IGNvbnN0IGludCBkcXVhbnRfY29kZVs1XSA9IHsgMSwgMCwgOSwgMiwgMyB9OwogCi1zdGF0aWMg
dm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxv
Y2tbXVs2NF0sCitzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTVBWRW5jQ29udGV4dCAqY29u
c3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbW90aW9uX3gsIGludCBtb3Rpb25feSkKIHsKICAgICBpbnQgY2JwYywgY2JweSwgcHJlZF94
LCBwcmVkX3k7Ci0gICAgUHV0Qml0Q29udGV4dCAqY29uc3QgcGIyICAgID0gcy0+ZGF0YV9wYXJ0
aXRpb25pbmcgPyAmcy0+cGIyIDogJnMtPnBiOwotICAgIFB1dEJpdENvbnRleHQgKmNvbnN0IHRl
eF9wYiA9IHMtPmRhdGFfcGFydGl0aW9uaW5nICYmIHMtPnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJF
X1RZUEVfQiA/ICZzLT50ZXhfcGIgOiAmcy0+cGI7Ci0gICAgUHV0Qml0Q29udGV4dCAqY29uc3Qg
ZGNfcGIgID0gcy0+ZGF0YV9wYXJ0aXRpb25pbmcgJiYgcy0+cGljdF90eXBlICE9IEFWX1BJQ1RV
UkVfVFlQRV9JID8gJnMtPnBiMiA6ICZzLT5wYjsKLSAgICBjb25zdCBpbnQgaW50ZXJsZWF2ZWRf
c3RhdHMgPSAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMSkgJiYgIXMtPmRh
dGFfcGFydGl0aW9uaW5nID8gMSA6IDA7CisgICAgUHV0Qml0Q29udGV4dCAqY29uc3QgcGIyICAg
ID0gcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyA/ICZzLT5wYjIgOiAmcy0+cGI7CisgICAgUHV0Qml0
Q29udGV4dCAqY29uc3QgdGV4X3BiID0gcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyAmJiBzLT5jLnBp
Y3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfQiA/ICZzLT50ZXhfcGIgOiAmcy0+cGI7CisgICAg
UHV0Qml0Q29udGV4dCAqY29uc3QgZGNfcGIgID0gcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyAmJiBz
LT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfSSA/ICZzLT5wYjIgOiAmcy0+cGI7Cisg
ICAgY29uc3QgaW50IGludGVybGVhdmVkX3N0YXRzID0gKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZf
Q09ERUNfRkxBR19QQVNTMSkgJiYgIXMtPmMuZGF0YV9wYXJ0aXRpb25pbmcgPyAxIDogMDsKIAot
ICAgIGlmICghcy0+bWJfaW50cmEpIHsKKyAgICBpZiAoIXMtPmMubWJfaW50cmEpIHsKICAgICAg
ICAgaW50IGksIGNicDsKIAotICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVf
VFlQRV9CKSB7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVf
QikgewogICAgICAgICAgICAgLyogY29udmVydCBmcm9tIG12X2RpciB0byB0eXBlICovCiAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1iX3R5cGVfdGFibGVbOF0gPSB7IC0xLCAzLCAyLCAx
LCAtMSwgLTEsIC0xLCAwIH07Ci0gICAgICAgICAgICBpbnQgbWJfdHlwZSA9IG1iX3R5cGVfdGFi
bGVbcy0+bXZfZGlyXTsKKyAgICAgICAgICAgIGludCBtYl90eXBlID0gbWJfdHlwZV90YWJsZVtz
LT5jLm12X2Rpcl07CiAKLSAgICAgICAgICAgIGlmIChzLT5tYl94ID09IDApIHsKKyAgICAgICAg
ICAgIGlmIChzLT5jLm1iX3ggPT0gMCkgewogICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg
PCAyOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbaV1bMF1bMF0gPQotICAg
ICAgICAgICAgICAgICAgICBzLT5sYXN0X212W2ldWzBdWzFdID0KLSAgICAgICAgICAgICAgICAg
ICAgcy0+bGFzdF9tdltpXVsxXVswXSA9Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZb
aV1bMV1bMV0gPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbaV1bMF1bMF0g
PQorICAgICAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbaV1bMF1bMV0gPQorICAgICAgICAg
ICAgICAgICAgICBzLT5jLmxhc3RfbXZbaV1bMV1bMF0gPQorICAgICAgICAgICAgICAgICAgICBz
LT5jLmxhc3RfbXZbaV1bMV1bMV0gPSAwOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBh
dl9hc3NlcnQyKHMtPmRxdWFudCA+PSAtMiAmJiBzLT5kcXVhbnQgPD0gMik7CkBAIC01MjksMTQg
KzUyOCwxNCBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNv
bnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICBhdl9hc3NlcnQyKG1iX3R5
cGUgPj0gMCk7CiAKICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gaWYgdGhpcyBNQiB3YXMg
c2tpcHBlZCBpbiB0aGUgbmV4dCBQLWZyYW1lICovCi0gICAgICAgICAgICBpZiAocy0+bmV4dF9w
aWMubWJza2lwX3RhYmxlW3MtPm1iX3kgKiBzLT5tYl9zdHJpZGUgKyBzLT5tYl94XSkgeyAgLy8g
RklYTUUgYXZvaWQgRENUICYgLi4uCi0gICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1bMF0gPQot
ICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFdID0KLSAgICAgICAgICAgICAgICBzLT5tdlsx
XVswXVswXSA9Ci0gICAgICAgICAgICAgICAgcy0+bXZbMV1bMF1bMV0gPSAwOwotICAgICAgICAg
ICAgICAgIHMtPm12X2RpciAgPSBNVl9ESVJfRk9SV0FSRDsgIC8vIGRvZXNuJ3QgbWF0dGVyCi0g
ICAgICAgICAgICAgICAgcy0+cXNjYWxlIC09IHMtPmRxdWFudDsKLS8vICAgICAgICAgICAgICAg
IHMtPm1iX3NraXBwZWQgPSAxOworICAgICAgICAgICAgaWYgKHMtPmMubmV4dF9waWMubWJza2lw
X3RhYmxlW3MtPmMubWJfeSAqIHMtPmMubWJfc3RyaWRlICsgcy0+Yy5tYl94XSkgeyAgLy8gRklY
TUUgYXZvaWQgRENUICYgLi4uCisgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVswXSA9Cisg
ICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsxXSA9CisgICAgICAgICAgICAgICAgcy0+Yy5t
dlsxXVswXVswXSA9CisgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVswXVsxXSA9IDA7CisgICAg
ICAgICAgICAgICAgcy0+Yy5tdl9kaXIgID0gTVZfRElSX0ZPUldBUkQ7ICAvLyBkb2Vzbid0IG1h
dHRlcgorICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKKy8vICAgICAg
ICAgICAgICAgIHMtPmMubWJfc2tpcHBlZCA9IDE7CiAKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CkBAIC01NjgsNzEgKzU2Nyw3MSBAQCBzdGF0aWMgdm9pZCBtcGVnNF9l
bmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs
IDEsIDApOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcy0+cXNjYWxlIC09
IHMtPmRxdWFudDsKKyAgICAgICAgICAgICAgICBzLT5jLnFzY2FsZSAtPSBzLT5kcXVhbnQ7CiAK
LSAgICAgICAgICAgIGlmICghcy0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UpIHsKKyAgICAgICAgICAg
IGlmICghcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSkgewogICAgICAgICAgICAgICAgIGlmIChj
YnApCi0gICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+aW50ZXJsYWNl
ZF9kY3QpOworICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmMuaW50
ZXJsYWNlZF9kY3QpOwogICAgICAgICAgICAgICAgIGlmIChtYl90eXBlKSAgICAgICAgICAgICAg
ICAgIC8vIG5vdCBkaXJlY3QgbW9kZQotICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+
cGIsIDEsIHMtPm12X3R5cGUgPT0gTVZfVFlQRV9GSUVMRCk7CisgICAgICAgICAgICAgICAgICAg
IHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5tdl90eXBlID09IE1WX1RZUEVfRklFTEQpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaW50ZXJsZWF2ZWRfc3RhdHMpCiAgICAgICAg
ICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAKICAgICAgICAgICAg
IGlmICghbWJfdHlwZSkgewotICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIocy0+bXZfZGlyICYg
TVZfRElSRUNUKTsKKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKHMtPmMubXZfZGlyICYgTVZf
RElSRUNUKTsKICAgICAgICAgICAgICAgICBmZl9oMjYzX2VuY29kZV9tb3Rpb25fdmVjdG9yKHMs
IG1vdGlvbl94LCBtb3Rpb25feSwgMSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGF2X2Fzc2VydDIobWJfdHlwZSA+IDAgJiYgbWJfdHlwZSA8IDQpOwotICAgICAgICAg
ICAgICAgIGlmIChzLT5tdl90eXBlICE9IE1WX1RZUEVfRklFTEQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7CisgICAgICAgICAgICAgICAg
aWYgKHMtPmMubXZfdHlwZSAhPSBNVl9UWVBFX0ZJRUxEKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzLT5jLm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmZl9oMjYzX2VuY29kZV9tb3Rpb25fdmVjdG9yKHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdIC0gcy0+bGFz
dF9tdlswXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+bXZbMF1bMF1bMV0gLSBzLT5sYXN0X212WzBdWzBdWzFdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5mX2NvZGUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlswXVswXVswXSA9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzFdWzBdID0gcy0+bXZbMF1bMF1bMF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzBdWzFdID0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1bMV1bMV0gPSBzLT5tdlswXVswXVsxXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsw
XVswXVswXSAtIHMtPmMubGFzdF9tdlswXVswXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsxXSAtIHMtPmMubGFz
dF9tdlswXVswXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5mX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5s
YXN0X212WzBdWzBdWzBdID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlsw
XVsxXVswXSA9IHMtPmMubXZbMF1bMF1bMF07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5j
Lmxhc3RfbXZbMF1bMF1bMV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X212
WzBdWzFdWzFdID0gcy0+Yy5tdlswXVswXVsxXTsKICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzLT5jLm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3ZlY3RvcihzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsx
XVswXVswXSAtIHMtPmxhc3RfbXZbMV1bMF1bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdWzBdWzFdIC0gcy0+bGFzdF9tdlsx
XVswXVsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yl9jb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1b
MF1bMF0gPQotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlsxXVsxXVswXSA9IHMt
Pm12WzFdWzBdWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlsxXVswXVsx
XSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzFdWzFdWzFdID0gcy0+bXZb
MV1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmMubXZbMV1bMF1bMF0gLSBzLT5jLmxhc3RfbXZbMV1bMF1bMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMV1b
MF1bMV0gLSBzLT5jLmxhc3RfbXZbMV1bMF1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYl9jb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVswXVswXSA9CisgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5jLmxhc3RfbXZbMV1bMV1bMF0gPSBzLT5jLm12WzFdWzBdWzBdOworICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5sYXN0X212WzFdWzBdWzFdID0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPmMubGFzdF9tdlsxXVsxXVsxXSA9IHMtPmMubXZbMV1bMF1bMV07CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0ZPUldBUkQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZmllbGRfc2VsZWN0WzBdWzBdKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZmllbGRfc2VsZWN0WzBdWzFd
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmMubXZfZGlyICYgTVZfRElSX0ZPUldBUkQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVs
ZF9zZWxlY3RbMF1bMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LCAxLCBzLT5jLmZpZWxkX3NlbGVjdFswXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5maWVsZF9zZWxlY3Rb
MV1bMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5m
aWVsZF9zZWxlY3RbMV1bMV0pOworICAgICAgICAgICAgICAgICAgICBpZiAocy0+Yy5tdl9kaXIg
JiBNVl9ESVJfQkFDS1dBUkQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZz
LT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxlY3RbMV1bMF0pOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmZpZWxkX3NlbGVjdFsxXVsxXSk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJ
Ul9GT1JXQVJEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jLm12X2RpciAmIE1WX0RJ
Ul9GT1JXQVJEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9u
X3ZlY3RvcihzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+bXZbMF1baV1bMF0gLSBzLT5sYXN0X212WzBdW2ldWzBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZb
MF1baV1bMV0gLSBzLT5sYXN0X212WzBdW2ldWzFdIC8gMiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29kZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlswXVtpXVswXSA9IHMtPm12WzBdW2ldWzBd
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1baV1bMV0gPSBzLT5t
dlswXVtpXVsxXSAqIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ldWzBdIC0gcy0+Yy5sYXN0X212WzBdW2ldWzBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy0+Yy5tdlswXVtpXVsxXSAtIHMtPmMubGFzdF9tdlswXVtpXVsxXSAvIDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZf
Y29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X212WzBdW2ldWzBd
ID0gcy0+Yy5tdlswXVtpXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmxh
c3RfbXZbMF1baV1bMV0gPSBzLT5jLm12WzBdW2ldWzFdICogMjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAo
cy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChz
LT5jLm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZm
X2gyNjNfZW5jb2RlX21vdGlvbl92ZWN0b3IocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdW2ldWzBdIC0gcy0+bGFzdF9t
dlsxXVtpXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPm12WzFdW2ldWzFdIC0gcy0+bGFzdF9tdlsxXVtpXVsxXSAvIDIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LT5iX2NvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1baV1b
MF0gPSBzLT5tdlsxXVtpXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0
X212WzFdW2ldWzFdID0gcy0+bXZbMV1baV1bMV0gKiAyOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVtpXVswXSAtIHMt
PmMubGFzdF9tdlsxXVtpXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMV1baV1bMV0gLSBzLT5jLmxhc3RfbXZbMV1b
aV1bMV0gLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5iX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMt
PmMubGFzdF9tdlsxXVtpXVswXSA9IHMtPmMubXZbMV1baV1bMF07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5sYXN0X212WzFdW2ldWzFdID0gcy0+Yy5tdlsxXVtpXVsxXSAqIDI7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CkBAIC02NDUsMTEgKzY0NCwxMSBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNv
ZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAKICAg
ICAgICAgICAgIGlmIChpbnRlcmxlYXZlZF9zdGF0cykKICAgICAgICAgICAgICAgICBzLT5wX3Rl
eF9iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7Ci0gICAgICAgIH0gZWxzZSB7IC8qIHMtPnBpY3Rf
dHlwZT09QVZfUElDVFVSRV9UWVBFX0IgKi8KKyAgICAgICAgfSBlbHNlIHsgLyogcy0+Yy5waWN0
X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9CICovCiAgICAgICAgICAgICBjYnAgPSBnZXRfcF9jYnAo
cywgYmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSk7CiAKICAgICAgICAgICAgIGlmICgoY2JwIHwg
bW90aW9uX3ggfCBtb3Rpb25feSB8IHMtPmRxdWFudCkgPT0gMCAmJgotICAgICAgICAgICAgICAg
IHMtPm12X3R5cGUgPT0gTVZfVFlQRV8xNlgxNikgeworICAgICAgICAgICAgICAgIHMtPmMubXZf
dHlwZSA9PSBNVl9UWVBFXzE2WDE2KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTVBWTWFpbkVu
Y0NvbnRleHQgKmNvbnN0IG0gPSBzbGljZV90b19tYWluZW5jKHMpOwogICAgICAgICAgICAgICAg
IC8qIENoZWNrIGlmIHRoZSBCLWZyYW1lcyBjYW4gc2tpcCBpdCB0b28sIGFzIHdlIG11c3Qgc2tp
cCBpdAogICAgICAgICAgICAgICAgICAqIGlmIHdlIHNraXAgaGVyZSB3aHkgZGlkbid0IHRoZXkg
anVzdCBjb21wcmVzcwpAQCAtNjU4LDEzICs2NTcsMTMgQEAgc3RhdGljIHZvaWQgbXBlZzRfZW5j
b2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogICAg
ICAgICAgICAgICAgICAgICBpbnQgeCwgeSwgb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwX3BpYzsKIAotICAgICAgICAgICAgICAgICAgICB4ID0gcy0+bWJfeCAq
IDE2OwotICAgICAgICAgICAgICAgICAgICB5ID0gcy0+bWJfeSAqIDE2OworICAgICAgICAgICAg
ICAgICAgICB4ID0gcy0+Yy5tYl94ICogMTY7CisgICAgICAgICAgICAgICAgICAgIHkgPSBzLT5j
Lm1iX3kgKiAxNjsKIAotICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB4ICsgeSAqIHMtPmxp
bmVzaXplOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB4ICsgeSAqIHMtPmMubGluZXNp
emU7CiAgICAgICAgICAgICAgICAgICAgIHBfcGljICA9IHMtPm5ld19waWMtPmRhdGFbMF0gKyBv
ZmZzZXQ7CiAKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfc2tpcHBlZCA9IDE7CisgICAgICAg
ICAgICAgICAgICAgIHMtPmMubWJfc2tpcHBlZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbS0+bWF4X2JfZnJhbWVzOyBpKyspIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJfcGljOwogICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGRpZmY7CkBAIC02NzcsMjkgKzY3NiwyOSBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVf
bWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBpYy0+c2hhcmVkKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJfcGljICs9IElOUExBQ0VfT0ZGU0VUOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoeCArIDE2ID4gcy0+d2lkdGggfHwgeSArIDE2ID4gcy0+aGVpZ2h0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoeCArIDE2ID4gcy0+Yy53aWR0aCB8fCB5ICsgMTYgPiBzLT5j
LmhlaWdodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MSwgeTE7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHhlID0gRkZNSU4oMTYsIHMtPndpZHRoIC0geCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHllID0gRkZNSU4oMTYsIHMtPmhlaWdo
dCAtIHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4ZSA9IEZGTUlOKDE2LCBz
LT5jLndpZHRoIC0geCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHllID0gRkZN
SU4oMTYsIHMtPmMuaGVpZ2h0IC0geSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlm
ZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh5MSA9IDA7IHkxIDwgeWU7
IHkxKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh4MSA9IDA7IHgx
IDwgeGU7IHgxKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYg
Kz0gRkZBQlMocF9waWNbeDEgKyB5MSAqIHMtPmxpbmVzaXplXSAtIGJfcGljW3gxICsgeTEgKiBz
LT5saW5lc2l6ZV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiAr
PSBGRkFCUyhwX3BpY1t4MSArIHkxICogcy0+Yy5saW5lc2l6ZV0gLSBiX3BpY1t4MSArIHkxICog
cy0+Yy5saW5lc2l6ZV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZmYgPSBkaWZmICogMjU2IC8gKHhlICogeWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gcy0+c2FkX2NtcFswXShO
VUxMLCBwX3BpYywgYl9waWMsIHMtPmxpbmVzaXplLCAxNik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlmZiA9IHMtPnNhZF9jbXBbMF0oTlVMTCwgcF9waWMsIGJfcGljLCBzLT5jLmxp
bmVzaXplLCAxNik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZGlmZiA+IHMtPnFzY2FsZSAqIDcwKSB7ICAvLyBGSVhNRSBjaGVjayB0aGF0
IDcwIGlzIG9wdGltYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tYl9za2lwcGVk
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID4gcy0+Yy5xc2NhbGUgKiA3
MCkgeyAgLy8gRklYTUUgY2hlY2sgdGhhdCA3MCBpcyBvcHRpbWFsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5tYl9za2lwcGVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzLT5tYl9z
a2lwcGVkID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9za2lwcGVkID0gMTsKIAot
ICAgICAgICAgICAgICAgIGlmIChzLT5tYl9za2lwcGVkID09IDEpIHsKKyAgICAgICAgICAgICAg
ICBpZiAocy0+Yy5tYl9za2lwcGVkID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogc2tp
cCBtYWNyb2Jsb2NrICovCiAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwg
MSk7CiAKQEAgLTcxNiw3ICs3MTUsNyBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBl
Z0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICBj
YnBjICA9IGNicCAmIDM7CiAgICAgICAgICAgICBjYnB5ICA9IGNicCA+PiAyOwogICAgICAgICAg
ICAgY2JweSBePSAweGY7Ci0gICAgICAgICAgICBpZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFXzE2
WDE2KSB7CisgICAgICAgICAgICBpZiAocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsK
ICAgICAgICAgICAgICAgICBpZiAocy0+ZHF1YW50KQogICAgICAgICAgICAgICAgICAgICBjYnBj
ICs9IDg7CiAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLApAQCAtNzI3LDkgKzcyNiw5
IEBAIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3Qgcywg
aW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICBpZiAocy0+ZHF1YW50KQogICAg
ICAgICAgICAgICAgICAgICBwdXRfYml0cyhwYjIsIDIsIGRxdWFudF9jb2RlW3MtPmRxdWFudCAr
IDJdKTsKIAotICAgICAgICAgICAgICAgIGlmICghcy0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXMtPmMucHJvZ3Jlc3NpdmVfc2VxdWVuY2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNicCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRz
KHBiMiwgMSwgcy0+aW50ZXJsYWNlZF9kY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgcHV0
X2JpdHMocGIyLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsKICAgICAgICAgICAgICAgICAgICAg
cHV0X2JpdHMocGIyLCAxLCAwKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTczNywxMyArNzM2
LDEzIEBAIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3Qg
cywgaW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRz
ICs9IGdldF9iaXRzX2RpZmYocyk7CiAKICAgICAgICAgICAgICAgICAvKiBtb3Rpb24gdmVjdG9y
czogMTZ4MTYgbW9kZSAqLwotICAgICAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24ocywg
MCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CisgICAgICAgICAgICAgICAgZmZfaDI2M19wcmVkX21v
dGlvbigmcy0+YywgMCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CiAKICAgICAgICAgICAgICAgICBm
Zl9oMjYzX2VuY29kZV9tb3Rpb25fdmVjdG9yKHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl95IC0gcHJlZF95LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFX0ZJRUxEKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFX0ZJRUxEKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHMtPmRxdWFudCkKICAgICAgICAgICAgICAgICAgICAgY2JwYyArPSA4Owog
ICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKQEAgLTc1NCw1MCArNzUzLDUwIEBAIHN0
YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZf
dCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICBpZiAocy0+ZHF1YW50KQogICAgICAgICAg
ICAgICAgICAgICBwdXRfYml0cyhwYjIsIDIsIGRxdWFudF9jb2RlW3MtPmRxdWFudCArIDJdKTsK
IAotICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoIXMtPnByb2dyZXNzaXZlX3NlcXVlbmNlKTsK
KyAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKCFzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlKTsK
ICAgICAgICAgICAgICAgICBpZiAoY2JwKQotICAgICAgICAgICAgICAgICAgICBwdXRfYml0cyhw
YjIsIDEsIHMtPmludGVybGFjZWRfZGN0KTsKKyAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMo
cGIyLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsKICAgICAgICAgICAgICAgICBwdXRfYml0cyhw
YjIsIDEsIDEpOwogCiAgICAgICAgICAgICAgICAgaWYgKGludGVybGVhdmVkX3N0YXRzKQogICAg
ICAgICAgICAgICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlmZihzKTsKIAogICAg
ICAgICAgICAgICAgIC8qIG1vdGlvbiB2ZWN0b3JzOiAxNng4IGludGVybGFjZWQgbW9kZSAqLwot
ICAgICAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24ocywgMCwgMCwgJnByZWRfeCwgJnBy
ZWRfeSk7CisgICAgICAgICAgICAgICAgZmZfaDI2M19wcmVkX21vdGlvbigmcy0+YywgMCwgMCwg
JnByZWRfeCwgJnByZWRfeSk7CiAgICAgICAgICAgICAgICAgcHJlZF95IC89IDI7CiAKLSAgICAg
ICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmZpZWxkX3NlbGVjdFswXVswXSk7Ci0g
ICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5maWVsZF9zZWxlY3RbMF1bMV0p
OworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxlY3Rb
MF1bMF0pOworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9z
ZWxlY3RbMF1bMV0pOwogCiAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3Zl
Y3RvcihzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+
bXZbMF1bMF1bMF0gLSBwcmVkX3gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5tdlswXVswXVsxXSAtIHByZWRfeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzBdIC0gcHJlZF94LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsx
XSAtIHByZWRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMtPmMuZl9jb2RlKTsKICAgICAgICAgICAgICAgICBmZl9oMjYzX2VuY29kZV9tb3Rpb25fdmVj
dG9yKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5t
dlswXVsxXVswXSAtIHByZWRfeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPm12WzBdWzFdWzFdIC0gcHJlZF95LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMV1bMF0gLSBwcmVkX3gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzFdWzFd
IC0gcHJlZF95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cy0+Yy5mX2NvZGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdl9h
c3NlcnQyKHMtPm12X3R5cGUgPT0gTVZfVFlQRV84WDgpOworICAgICAgICAgICAgICAgIGF2X2Fz
c2VydDIocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfOFg4KTsKICAgICAgICAgICAgICAgICBwdXRf
Yml0cygmcy0+cGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19pbnRlcl9NQ0JQ
Q19iaXRzW2NicGMgKyAxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19pbnRl
cl9NQ0JQQ19jb2RlW2NicGMgKyAxNl0pOwogICAgICAgICAgICAgICAgIHB1dF9iaXRzKHBiMiwg
ZmZfaDI2M19jYnB5X3RhYltjYnB5XVsxXSwgZmZfaDI2M19jYnB5X3RhYltjYnB5XVswXSk7CiAK
LSAgICAgICAgICAgICAgICBpZiAoIXMtPnByb2dyZXNzaXZlX3NlcXVlbmNlICYmIGNicCkKLSAg
ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMocGIyLCAxLCBzLT5pbnRlcmxhY2VkX2RjdCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlICYmIGNicCkKKyAg
ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMocGIyLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsK
IAogICAgICAgICAgICAgICAgIGlmIChpbnRlcmxlYXZlZF9zdGF0cykKICAgICAgICAgICAgICAg
ICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAKICAgICAgICAgICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIG1vdGlv
biB2ZWN0b3JzOiA4eDggbW9kZSovCi0gICAgICAgICAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9t
b3Rpb24ocywgaSwgMCwgJnByZWRfeCwgJnByZWRfeSk7CisgICAgICAgICAgICAgICAgICAgIGZm
X2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIGksIDAsICZwcmVkX3gsICZwcmVkX3kpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGZmX2gyNjNfZW5jb2RlX21vdGlvbl92ZWN0b3IocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jdXJfcGljLm1vdGlv
bl92YWxbMF1bcy0+YmxvY2tfaW5kZXhbaV1dWzBdIC0gcHJlZF94LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmN1cl9waWMubW90aW9uX3ZhbFsw
XVtzLT5ibG9ja19pbmRleFtpXV1bMV0gLSBwcmVkX3ksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFsw
XVtzLT5jLmJsb2NrX2luZGV4W2ldXVswXSAtIHByZWRfeCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVtz
LT5jLmJsb2NrX2luZGV4W2ldXVsxXSAtIHByZWRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCkBAIC04MTgsMjkgKzgxNywyOSBAQCBzdGF0aWMgdm9pZCBtcGVn
NF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0s
CiAgICAgICAgIGludCBpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKSB7
Ci0gICAgICAgICAgICBpbnQgcHJlZCAgPSBmZl9tcGVnNF9wcmVkX2RjKHMsIGksICZkaXJbaV0p
OwotICAgICAgICAgICAgaW50IHNjYWxlID0gaSA8IDQgPyBzLT55X2RjX3NjYWxlIDogcy0+Y19k
Y19zY2FsZTsKKyAgICAgICAgICAgIGludCBwcmVkICA9IGZmX21wZWc0X3ByZWRfZGMoJnMtPmMs
IGksICZkaXJbaV0pOworICAgICAgICAgICAgaW50IHNjYWxlID0gaSA8IDQgPyBzLT5jLnlfZGNf
c2NhbGUgOiBzLT5jLmNfZGNfc2NhbGU7CiAKICAgICAgICAgICAgIHByZWQgPSBGQVNURElWKChw
cmVkICsgKHNjYWxlID4+IDEpKSwgc2NhbGUpOwogICAgICAgICAgICAgZGNfZGlmZltpXSA9IGJs
b2NrW2ldWzBdIC0gcHJlZDsKLSAgICAgICAgICAgIHMtPmRjX3ZhbFswXVtzLT5ibG9ja19pbmRl
eFtpXV0gPSBhdl9jbGlwX3VpbnRwMihibG9ja1tpXVswXSAqIHNjYWxlLCAxMSk7CisgICAgICAg
ICAgICBzLT5jLmRjX3ZhbFswXVtzLT5jLmJsb2NrX2luZGV4W2ldXSA9IGF2X2NsaXBfdWludHAy
KGJsb2NrW2ldWzBdICogc2NhbGUsIDExKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzLT5h
dmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0FDX1BSRUQpIHsKLSAgICAgICAgICAgIHMtPmFj
X3ByZWQgPSBkZWNpZGVfYWNfcHJlZChzLCBibG9jaywgZGlyLCBzY2FuX3RhYmxlLCB6aWd6YWdf
bGFzdF9pbmRleCk7CisgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZM
QUdfQUNfUFJFRCkgeworICAgICAgICAgICAgcy0+Yy5hY19wcmVkID0gZGVjaWRlX2FjX3ByZWQo
cywgYmxvY2ssIGRpciwgc2Nhbl90YWJsZSwgemlnemFnX2xhc3RfaW5kZXgpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKLSAgICAgICAgICAg
ICAgICBzY2FuX3RhYmxlW2ldID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAg
ICAgICAgICAgICAgc2Nhbl90YWJsZVtpXSA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0
ZWQ7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBjb21wdXRlIGNicCAqLwogICAgICAgICBjYnAg
PSAwOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQotICAgICAgICAgICAgaWYgKHMt
PmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMSkKKyAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xh
c3RfaW5kZXhbaV0gPj0gMSkKICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8PCAoNSAtIGkpOwog
CiAgICAgICAgIGNicGMgPSBjYnAgJiAzOwotICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFW
X1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNU
VVJFX1RZUEVfSSkgewogICAgICAgICAgICAgaWYgKHMtPmRxdWFudCkKICAgICAgICAgICAgICAg
ICBjYnBjICs9IDQ7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsCkBAIC04NTQsMTQgKzg1
MywxNCBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0
IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICBmZl9oMjYzX2lu
dGVyX01DQlBDX2JpdHNbY2JwYyArIDRdLAogICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19p
bnRlcl9NQ0JQQ19jb2RlW2NicGMgKyA0XSk7CiAgICAgICAgIH0KLSAgICAgICAgcHV0X2JpdHMo
cGIyLCAxLCBzLT5hY19wcmVkKTsKKyAgICAgICAgcHV0X2JpdHMocGIyLCAxLCBzLT5jLmFjX3By
ZWQpOwogICAgICAgICBjYnB5ID0gY2JwID4+IDI7CiAgICAgICAgIHB1dF9iaXRzKHBiMiwgZmZf
aDI2M19jYnB5X3RhYltjYnB5XVsxXSwgZmZfaDI2M19jYnB5X3RhYltjYnB5XVswXSk7CiAgICAg
ICAgIGlmIChzLT5kcXVhbnQpCiAgICAgICAgICAgICBwdXRfYml0cyhkY19wYiwgMiwgZHF1YW50
X2NvZGVbcy0+ZHF1YW50ICsgMl0pOwogCi0gICAgICAgIGlmICghcy0+cHJvZ3Jlc3NpdmVfc2Vx
dWVuY2UpCi0gICAgICAgICAgICBwdXRfYml0cyhkY19wYiwgMSwgcy0+aW50ZXJsYWNlZF9kY3Qp
OworICAgICAgICBpZiAoIXMtPmMucHJvZ3Jlc3NpdmVfc2VxdWVuY2UpCisgICAgICAgICAgICBw
dXRfYml0cyhkY19wYiwgMSwgcy0+Yy5pbnRlcmxhY2VkX2RjdCk7CiAKICAgICAgICAgaWYgKGlu
dGVybGVhdmVkX3N0YXRzKQogICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2Rp
ZmYocyk7CkBAIC04NzQsNyArODczLDcgQEAgc3RhdGljIHZvaWQgbXBlZzRfZW5jb2RlX21iKE1w
ZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogCiAgICAgICAgIC8q
IHJlc3RvcmUgYWMgY29lZmZzICYgbGFzdF9pbmRleCBzdHVmZgogICAgICAgICAgKiBpZiB3ZSBt
ZXNzZWQgdGhlbSB1cCB3aXRoIHRoZSBwcmVkaWN0aW9uICovCi0gICAgICAgIGlmIChzLT5hY19w
cmVkKQorICAgICAgICBpZiAocy0+Yy5hY19wcmVkKQogICAgICAgICAgICAgcmVzdG9yZV9hY19j
b2VmZnMocywgYmxvY2ssIGRpciwgc2Nhbl90YWJsZSwgemlnemFnX2xhc3RfaW5kZXgpOwogICAg
IH0KIH0KQEAgLTg5MCwzMSArODg5LDMxIEBAIHZvaWQgZmZfbXBlZzRfc3R1ZmZpbmcoUHV0Qml0
Q29udGV4dCAqcGJjKQogfQogCiAvKiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgd3JpdGluZyB0aGUg
aGVhZGVyICovCi12b2lkIGZmX3NldF9tcGVnNF90aW1lKE1wZWdFbmNDb250ZXh0ICpzKQordm9p
ZCBmZl9zZXRfbXBlZzRfdGltZShNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewotICAgIGlmIChz
LT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKLSAgICAgICAgZmZfbXBlZzRfaW5p
dF9kaXJlY3RfbXYocyk7CisgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQ
RV9CKSB7CisgICAgICAgIGZmX21wZWc0X2luaXRfZGlyZWN0X212KCZzLT5jKTsKICAgICB9IGVs
c2UgewotICAgICAgICBzLT5sYXN0X3RpbWVfYmFzZSA9IHMtPnRpbWVfYmFzZTsKLSAgICAgICAg
cy0+dGltZV9iYXNlICAgICAgPSBGRlVESVYocy0+dGltZSwgcy0+YXZjdHgtPnRpbWVfYmFzZS5k
ZW4pOworICAgICAgICBzLT5jLmxhc3RfdGltZV9iYXNlID0gcy0+Yy50aW1lX2Jhc2U7CisgICAg
ICAgIHMtPmMudGltZV9iYXNlICAgICAgPSBGRlVESVYocy0+Yy50aW1lLCBzLT5jLmF2Y3R4LT50
aW1lX2Jhc2UuZGVuKTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9nb3Bf
aGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0
ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwog
ICAgIGludDY0X3QgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHM7CiAgICAgaW50NjRfdCB0aW1lOwog
CiAgICAgcHV0X2JpdHMzMigmcy0+cGIsIEdPUF9TVEFSVENPREUpOwogCi0gICAgdGltZSA9IHMt
PmN1cl9waWMucHRyLT5mLT5wdHM7CisgICAgdGltZSA9IHMtPmMuY3VyX3BpYy5wdHItPmYtPnB0
czsKICAgICBpZiAobS0+cmVvcmRlcmVkX2lucHV0X3BpY3R1cmVbMV0pCiAgICAgICAgIHRpbWUg
PSBGRk1JTih0aW1lLCBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVsxXS0+Zi0+cHRzKTsKLSAg
ICB0aW1lID0gdGltZSAqIHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVtOwotICAgIHMtPmxhc3RfdGlt
ZV9iYXNlID0gRkZVRElWKHRpbWUsIHMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKKyAgICB0aW1l
ID0gdGltZSAqIHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5udW07CisgICAgcy0+Yy5sYXN0X3RpbWVf
YmFzZSA9IEZGVURJVih0aW1lLCBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKIAotICAgIHNl
Y29uZHMgPSBGRlVESVYodGltZSwgcy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4pOworICAgIHNlY29u
ZHMgPSBGRlVESVYodGltZSwgcy0+Yy5hdmN0eC0+dGltZV9iYXNlLmRlbik7CiAgICAgbWludXRl
cyA9IEZGVURJVihzZWNvbmRzLCA2MCk7IHNlY29uZHMgPSBGRlVNT0Qoc2Vjb25kcywgNjApOwog
ICAgIGhvdXJzICAgPSBGRlVESVYobWludXRlcywgNjApOyBtaW51dGVzID0gRkZVTU9EKG1pbnV0
ZXMsIDYwKTsKICAgICBob3VycyAgID0gRkZVTU9EKGhvdXJzICAsIDI0KTsKQEAgLTkyNCw3ICs5
MjMsNyBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfZ29wX2hlYWRlcihNUFZNYWluRW5jQ29u
dGV4dCAqY29uc3QgbSkKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOwogICAgIHB1dF9iaXRz
KCZzLT5wYiwgNiwgc2Vjb25kcyk7CiAKLSAgICBwdXRfYml0cygmcy0+cGIsIDEsICEhKHMtPmF2
Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCkpOworICAgIHB1dF9iaXRzKCZz
LT5wYiwgMSwgISEocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1Ap
KTsKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAgLy8gYnJva2VuIGxpbmsgPT0gTk8KIAog
ICAgIGZmX21wZWc0X3N0dWZmaW5nKCZzLT5wYik7CkBAIC05MzIsMjAgKzkzMSwyMCBAQCBzdGF0
aWMgdm9pZCBtcGVnNF9lbmNvZGVfZ29wX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3Qg
bSkKIAogc3RhdGljIHZvaWQgbXBlZzRfZW5jb2RlX3Zpc3VhbF9vYmplY3RfaGVhZGVyKE1QVk1h
aW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0g
Jm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIGludCBwcm9m
aWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uOwogICAgIGludCB2b192ZXJfaWQ7CiAKLSAgICBpZiAo
cy0+YXZjdHgtPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9VTktOT1dOKSB7Ci0gICAgICAgIHByb2Zp
bGVfYW5kX2xldmVsX2luZGljYXRpb24gPSBzLT5hdmN0eC0+cHJvZmlsZSA8PCA0OwotICAgIH0g
ZWxzZSBpZiAobS0+bWF4X2JfZnJhbWVzIHx8IHMtPnF1YXJ0ZXJfc2FtcGxlKSB7CisgICAgaWYg
KHMtPmMuYXZjdHgtPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9VTktOT1dOKSB7CisgICAgICAgIHBy
b2ZpbGVfYW5kX2xldmVsX2luZGljYXRpb24gPSBzLT5jLmF2Y3R4LT5wcm9maWxlIDw8IDQ7Cisg
ICAgfSBlbHNlIGlmIChtLT5tYXhfYl9mcmFtZXMgfHwgcy0+Yy5xdWFydGVyX3NhbXBsZSkgewog
ICAgICAgICBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uID0gMHhGMDsgIC8vIGFkdiBzaW1w
bGUKICAgICB9IGVsc2UgewogICAgICAgICBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uID0g
MHgwMDsgIC8vIHNpbXBsZQogICAgIH0KIAotICAgIGlmIChzLT5hdmN0eC0+bGV2ZWwgIT0gQVZf
TEVWRUxfVU5LTk9XTikKLSAgICAgICAgcHJvZmlsZV9hbmRfbGV2ZWxfaW5kaWNhdGlvbiB8PSBz
LT5hdmN0eC0+bGV2ZWw7CisgICAgaWYgKHMtPmMuYXZjdHgtPmxldmVsICE9IEFWX0xFVkVMX1VO
S05PV04pCisgICAgICAgIHByb2ZpbGVfYW5kX2xldmVsX2luZGljYXRpb24gfD0gcy0+Yy5hdmN0
eC0+bGV2ZWw7CiAgICAgZWxzZQogICAgICAgICBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9u
IHw9IDE7ICAgLy8gbGV2ZWwgMQogCkBAIC05NzcsMTAgKzk3NiwxMCBAQCBzdGF0aWMgdm9pZCBt
cGVnNF9lbmNvZGVfdm9sX2hlYWRlcihNcGVnNEVuY0NvbnRleHQgKmNvbnN0IG00LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZvX251bWJlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2b2xfbnVtYmVyKQogewotICAgIE1wZWdFbmND
b250ZXh0ICpjb25zdCBzID0gJm00LT5tLnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9
ICZtNC0+bS5zOwogICAgIGludCB2b192ZXJfaWQsIHZvX3R5cGUsIGFzcGVjdF9yYXRpb19pbmZv
OwogCi0gICAgaWYgKG00LT5tLm1heF9iX2ZyYW1lcyB8fCBzLT5xdWFydGVyX3NhbXBsZSkgewor
ICAgIGlmIChtNC0+bS5tYXhfYl9mcmFtZXMgfHwgcy0+Yy5xdWFydGVyX3NhbXBsZSkgewogICAg
ICAgICB2b192ZXJfaWQgID0gNTsKICAgICAgICAgdm9fdHlwZSA9IEFEVl9TSU1QTEVfVk9fVFlQ
RTsKICAgICB9IGVsc2UgewpAQCAtOTk3LDM1ICs5OTYsMzUgQEAgc3RhdGljIHZvaWQgbXBlZzRf
ZW5jb2RlX3ZvbF9oZWFkZXIoTXBlZzRFbmNDb250ZXh0ICpjb25zdCBtNCwKICAgICBwdXRfYml0
cygmcy0+cGIsIDQsIHZvX3Zlcl9pZCk7ICAgICAvKiBpcyBvYmogbGF5ZXIgdmVyIGlkICovCiAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAzLCAxKTsgICAgICAgICAgICAgLyogaXMgb2JqIGxheWVyIHBy
aW9yaXR5ICovCiAKLSAgICBhc3BlY3RfcmF0aW9faW5mbyA9IGZmX2gyNjNfYXNwZWN0X3RvX2lu
Zm8ocy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8pOworICAgIGFzcGVjdF9yYXRpb19pbmZv
ID0gZmZfaDI2M19hc3BlY3RfdG9faW5mbyhzLT5jLmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlv
KTsKIAogICAgIHB1dF9iaXRzKCZzLT5wYiwgNCwgYXNwZWN0X3JhdGlvX2luZm8pOyAvKiBhc3Bl
Y3QgcmF0aW8gaW5mbyAqLwogICAgIGlmIChhc3BlY3RfcmF0aW9faW5mbyA9PSBGRl9BU1BFQ1Rf
RVhURU5ERUQpIHsKLSAgICAgICAgYXZfcmVkdWNlKCZzLT5hdmN0eC0+c2FtcGxlX2FzcGVjdF9y
YXRpby5udW0sICZzLT5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4sCi0gICAgICAgICAg
ICAgICAgICAgcy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtLCAgcy0+YXZjdHgtPnNh
bXBsZV9hc3BlY3RfcmF0aW8uZGVuLCAyNTUpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgs
IHMtPmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSk7Ci0gICAgICAgIHB1dF9iaXRzKCZz
LT5wYiwgOCwgcy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuKTsKKyAgICAgICAgYXZf
cmVkdWNlKCZzLT5jLmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSwgJnMtPmMuYXZjdHgt
PnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuLAorICAgICAgICAgICAgICAgICAgIHMtPmMuYXZjdHgt
PnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtLCAgcy0+Yy5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRp
by5kZW4sIDI1NSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgcy0+Yy5hdmN0eC0+c2Ft
cGxlX2FzcGVjdF9yYXRpby5udW0pOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPmMu
YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuKTsKICAgICB9CiAKICAgICBwdXRfYml0cygm
cy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAvKiB2b2wgY29udHJvbCBwYXJhbWV0ZXJzPSB5ZXMg
Ki8KICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDEpOyAgICAgICAgICAgICAvKiBjaHJvbWEgZm9y
bWF0IFlVViA0MjAvWVYxMiAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+bG93X2RlbGF5
KTsKKyAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmMubG93X2RlbGF5KTsKICAgICBwdXRfYml0
cygmcy0+cGIsIDEsIDApOyAgICAgICAgICAgICAvKiB2YnYgcGFyYW1ldGVycz0gbm8gKi8KIAog
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgUkVDVF9TSEFQRSk7ICAgIC8qIHZvbCBzaGFwZT0gcmVj
dGFuZ2xlICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsgICAgICAgICAgICAgLyogbWFy
a2VyIGJpdCAqLwogCi0gICAgcHV0X2JpdHMoJnMtPnBiLCAxNiwgcy0+YXZjdHgtPnRpbWVfYmFz
ZS5kZW4pOworICAgIHB1dF9iaXRzKCZzLT5wYiwgMTYsIHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5k
ZW4pOwogICAgIGlmIChtNC0+dGltZV9pbmNyZW1lbnRfYml0cyA8IDEpCiAgICAgICAgIG00LT50
aW1lX2luY3JlbWVudF9iaXRzID0gMTsKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgICAg
ICAgICAgICAvKiBtYXJrZXIgYml0ICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAg
ICAgICAgICAgLyogZml4ZWQgdm9wIHJhdGU9bm8gKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEs
IDEpOyAgICAgICAgICAgICAvKiBtYXJrZXIgYml0ICovCi0gICAgcHV0X2JpdHMoJnMtPnBiLCAx
Mywgcy0+d2lkdGgpOyAgICAgLyogdm9sIHdpZHRoICovCisgICAgcHV0X2JpdHMoJnMtPnBiLCAx
Mywgcy0+Yy53aWR0aCk7ICAgICAvKiB2b2wgd2lkdGggKi8KICAgICBwdXRfYml0cygmcy0+cGIs
IDEsIDEpOyAgICAgICAgICAgICAvKiBtYXJrZXIgYml0ICovCi0gICAgcHV0X2JpdHMoJnMtPnBi
LCAxMywgcy0+aGVpZ2h0KTsgICAgLyogdm9sIGhlaWdodCAqLworICAgIHB1dF9iaXRzKCZzLT5w
YiwgMTMsIHMtPmMuaGVpZ2h0KTsgICAgLyogdm9sIGhlaWdodCAqLwogICAgIHB1dF9iaXRzKCZz
LT5wYiwgMSwgMSk7ICAgICAgICAgICAgIC8qIG1hcmtlciBiaXQgKi8KLSAgICBwdXRfYml0cygm
cy0+cGIsIDEsIHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlID8gMCA6IDEpOworICAgIHB1dF9iaXRz
KCZzLT5wYiwgMSwgcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSA/IDAgOiAxKTsKICAgICBwdXRf
Yml0cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAvKiBvYm1jIGRpc2FibGUgKi8KICAgICBp
ZiAodm9fdmVyX2lkID09IDEpCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAg
IC8qIHNwcml0ZSBlbmFibGUgKi8KQEAgLTEwMzMsMTkgKzEwMzIsMTkgQEAgc3RhdGljIHZvaWQg
bXBlZzRfZW5jb2RlX3ZvbF9oZWFkZXIoTXBlZzRFbmNDb250ZXh0ICpjb25zdCBtNCwKICAgICAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAyLCAwKTsgICAgICAgLyogc3ByaXRlIGVuYWJsZSAqLwogCiAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgICAgICAgICAgLyogbm90IDggYml0ID09IGZh
bHNlICovCi0gICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5tcGVnX3F1YW50KTsgLyogcXVhbnQg
dHlwZSA9ICgwID0gSC4yNjMgc3R5bGUpICovCisgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5j
Lm1wZWdfcXVhbnQpOyAvKiBxdWFudCB0eXBlID0gKDAgPSBILjI2MyBzdHlsZSkgKi8KIAotICAg
IGlmIChzLT5tcGVnX3F1YW50KSB7Ci0gICAgICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+
cGIsIHMtPmF2Y3R4LT5pbnRyYV9tYXRyaXgpOwotICAgICAgICBmZl93cml0ZV9xdWFudF9tYXRy
aXgoJnMtPnBiLCBzLT5hdmN0eC0+aW50ZXJfbWF0cml4KTsKKyAgICBpZiAocy0+Yy5tcGVnX3F1
YW50KSB7CisgICAgICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+cGIsIHMtPmMuYXZjdHgt
PmludHJhX21hdHJpeCk7CisgICAgICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+cGIsIHMt
PmMuYXZjdHgtPmludGVyX21hdHJpeCk7CiAgICAgfQogCiAgICAgaWYgKHZvX3Zlcl9pZCAhPSAx
KQotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPnF1YXJ0ZXJfc2FtcGxlKTsKKyAgICAg
ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLnF1YXJ0ZXJfc2FtcGxlKTsKICAgICBwdXRfYml0
cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAvKiBjb21wbGV4aXR5IGVzdGltYXRpb24gZGlz
YWJsZSAqLwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+cnRwX21vZGUgPyAwIDogMSk7IC8q
IHJlc3luYyBtYXJrZXIgZGlzYWJsZSAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZGF0
YV9wYXJ0aXRpb25pbmcgPyAxIDogMCk7Ci0gICAgaWYgKHMtPmRhdGFfcGFydGl0aW9uaW5nKQor
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyA/IDEgOiAwKTsK
KyAgICBpZiAocy0+Yy5kYXRhX3BhcnRpdGlvbmluZykKICAgICAgICAgcHV0X2JpdHMoJnMtPnBi
LCAxLCAwKTsgICAgICAgICAvKiBubyBydmxjICovCiAKICAgICBpZiAodm9fdmVyX2lkICE9IDEp
IHsKQEAgLTEwNTcsNyArMTA1Niw3IEBAIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV92b2xfaGVh
ZGVyKE1wZWc0RW5jQ29udGV4dCAqY29uc3QgbTQsCiAgICAgZmZfbXBlZzRfc3R1ZmZpbmcoJnMt
PnBiKTsKIAogICAgIC8qIHVzZXIgZGF0YSAqLwotICAgIGlmICghKHMtPmF2Y3R4LT5mbGFncyAm
IEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKSB7CisgICAgaWYgKCEocy0+Yy5hdmN0eC0+ZmxhZ3Mg
JiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUKSkgewogICAgICAgICBwdXRfYml0czMyKCZzLT5wYiwg
VVNFUl9EQVRBX1NUQVJUQ09ERSk7CiAgICAgICAgIGZmX3B1dF9zdHJpbmcoJnMtPnBiLCBMSUJB
VkNPREVDX0lERU5ULCAwKTsKICAgICB9CkBAIC0xMDY3LDMyICsxMDY2LDMyIEBAIHN0YXRpYyB2
b2lkIG1wZWc0X2VuY29kZV92b2xfaGVhZGVyKE1wZWc0RW5jQ29udGV4dCAqY29uc3QgbTQsCiBz
dGF0aWMgaW50IG1wZWc0X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAq
Y29uc3QgbSkKIHsKICAgICBNcGVnNEVuY0NvbnRleHQgKmNvbnN0IG00ID0gbWFpbmN0eF90b19t
cGVnNChtKTsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVu
Y0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICB1aW50NjRfdCB0aW1lX2luY3I7CiAgICAg
aW50NjRfdCB0aW1lX2RpdiwgdGltZV9tb2Q7CiAKLSAgICBpZiAocy0+cGljdF90eXBlID09IEFW
X1BJQ1RVUkVfVFlQRV9JKSB7Ci0gICAgICAgIGlmICghKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NP
REVDX0ZMQUdfR0xPQkFMX0hFQURFUikpIHsKLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+c3Ry
aWN0X3N0ZF9jb21wbGlhbmNlIDwgRkZfQ09NUExJQU5DRV9WRVJZX1NUUklDVCkgIC8vIEhBQ0ss
IHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgPT0gQVZf
UElDVFVSRV9UWVBFX0kpIHsKKyAgICAgICAgaWYgKCEocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9D
T0RFQ19GTEFHX0dMT0JBTF9IRUFERVIpKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+
c3RyaWN0X3N0ZF9jb21wbGlhbmNlIDwgRkZfQ09NUExJQU5DRV9WRVJZX1NUUklDVCkgIC8vIEhB
Q0ssIHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKICAgICAgICAgICAgICAgICBtcGVnNF9lbmNv
ZGVfdmlzdWFsX29iamVjdF9oZWFkZXIobSk7Ci0gICAgICAgICAgICBpZiAocy0+YXZjdHgtPnN0
cmljdF9zdGRfY29tcGxpYW5jZSA8IEZGX0NPTVBMSUFOQ0VfVkVSWV9TVFJJQ1QgfHwgcy0+cGlj
dHVyZV9udW1iZXIgPT0gMCkgIC8vIEhBQ0ssIHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKKyAg
ICAgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPCBGRl9DT01Q
TElBTkNFX1ZFUllfU1RSSUNUIHx8IHMtPmMucGljdHVyZV9udW1iZXIgPT0gMCkgIC8vIEhBQ0ss
IHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKICAgICAgICAgICAgICAgICBtcGVnNF9lbmNvZGVf
dm9sX2hlYWRlcihtNCwgMCwgMCk7CiAgICAgICAgIH0KICAgICAgICAgbXBlZzRfZW5jb2RlX2dv
cF9oZWFkZXIobSk7CiAgICAgfQogCi0gICAgcy0+cGFydGl0aW9uZWRfZnJhbWUgPSBzLT5kYXRh
X3BhcnRpdGlvbmluZyAmJiBzLT5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0I7CisgICAg
cy0+Yy5wYXJ0aXRpb25lZF9mcmFtZSA9IHMtPmMuZGF0YV9wYXJ0aXRpb25pbmcgJiYgcy0+Yy5w
aWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0I7CiAKICAgICBwdXRfYml0czMyKCZzLT5wYiwg
Vk9QX1NUQVJUQ09ERSk7ICAgICAgLyogdm9wIGhlYWRlciAqLwotICAgIHB1dF9iaXRzKCZzLT5w
YiwgMiwgcy0+cGljdF90eXBlIC0gMSk7ICAvKiBwaWN0IHR5cGU6IEkgPSAwICwgUCA9IDEgKi8K
KyAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPmMucGljdF90eXBlIC0gMSk7ICAvKiBwaWN0IHR5
cGU6IEkgPSAwICwgUCA9IDEgKi8KIAotICAgIHRpbWVfZGl2ICA9IEZGVURJVihzLT50aW1lLCBz
LT5hdmN0eC0+dGltZV9iYXNlLmRlbik7Ci0gICAgdGltZV9tb2QgID0gRkZVTU9EKHMtPnRpbWUs
IHMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKLSAgICB0aW1lX2luY3IgPSB0aW1lX2RpdiAtIHMt
Pmxhc3RfdGltZV9iYXNlOworICAgIHRpbWVfZGl2ICA9IEZGVURJVihzLT5jLnRpbWUsIHMtPmMu
YXZjdHgtPnRpbWVfYmFzZS5kZW4pOworICAgIHRpbWVfbW9kICA9IEZGVU1PRChzLT5jLnRpbWUs
IHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4pOworICAgIHRpbWVfaW5jciA9IHRpbWVfZGl2IC0g
cy0+Yy5sYXN0X3RpbWVfYmFzZTsKIAogICAgIC8vIFRoaXMgbGltaXRzIHRoZSBmcmFtZSBkdXJh
dGlvbiB0byBtYXggMSBkYXkKICAgICBpZiAodGltZV9pbmNyID4gMzYwMCoyNCkgewotICAgICAg
ICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgInRpbWVfaW5jciAlIlBSSXU2NCIgdG9v
IGxhcmdlXG4iLCB0aW1lX2luY3IpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9H
X0VSUk9SLCAidGltZV9pbmNyICUiUFJJdTY0IiB0b28gbGFyZ2VcbiIsIHRpbWVfaW5jcik7CiAg
ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQogICAgIHdoaWxlICh0aW1lX2lu
Y3ItLSkKQEAgLTExMDQsMjIgKzExMDMsMjIgQEAgc3RhdGljIGludCBtcGVnNF9lbmNvZGVfcGlj
dHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgcHV0X2JpdHMoJnMt
PnBiLCBtNC0+dGltZV9pbmNyZW1lbnRfYml0cywgdGltZV9tb2QpOyAvKiB0aW1lIGluY3JlbWVu
dCAqLwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBtYXJrZXIgKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdm9wIGNvZGVkICovCi0gICAgaWYgKHMtPnBpY3RfdHlwZSA9
PSBBVl9QSUNUVVJFX1RZUEVfUCkgewotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPm5v
X3JvdW5kaW5nKTsgICAgLyogcm91bmRpbmcgdHlwZSAqLworICAgIGlmIChzLT5jLnBpY3RfdHlw
ZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkgeworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMt
PmMubm9fcm91bmRpbmcpOyAgICAvKiByb3VuZGluZyB0eXBlICovCiAgICAgfQogICAgIHB1dF9i
aXRzKCZzLT5wYiwgMywgMCk7ICAgICAvKiBpbnRyYSBkYyBWTEMgdGhyZXNob2xkICovCi0gICAg
aWYgKCFzLT5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSkgewotICAgICAgICBwdXRfYml0cygmcy0+cGIs
IDEsICEhKHMtPmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZSQU1FX0ZMQUdfVE9QX0ZJRUxE
X0ZJUlNUKSk7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+YWx0ZXJuYXRlX3NjYW4p
OworICAgIGlmICghcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSkgeworICAgICAgICBwdXRfYml0
cygmcy0+cGIsIDEsICEhKHMtPmMuY3VyX3BpYy5wdHItPmYtPmZsYWdzICYgQVZfRlJBTUVfRkxB
R19UT1BfRklFTERfRklSU1QpKTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmFs
dGVybmF0ZV9zY2FuKTsKICAgICB9CiAgICAgLy8gRklYTUUgc3ByaXRlIHN0dWZmCiAKLSAgICBw
dXRfYml0cygmcy0+cGIsIDUsIHMtPnFzY2FsZSk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBz
LT5jLnFzY2FsZSk7CiAKLSAgICBpZiAocy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9J
KQotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDMsIHMtPmZfY29kZSk7ICAvKiBmY29kZV9mb3Ig
Ki8KLSAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKQotICAgICAgICBw
dXRfYml0cygmcy0+cGIsIDMsIHMtPmJfY29kZSk7ICAvKiBmY29kZV9iYWNrICovCisgICAgaWYg
KHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKQorICAgICAgICBwdXRfYml0cygm
cy0+cGIsIDMsIHMtPmMuZl9jb2RlKTsgIC8qIGZjb2RlX2ZvciAqLworICAgIGlmIChzLT5jLnBp
Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAz
LCBzLT5jLmJfY29kZSk7ICAvKiBmY29kZV9iYWNrICovCiAKICAgICByZXR1cm4gMDsKIH0KQEAg
LTEyOTQsNyArMTI5Myw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5pdChBVkNvZGVj
Q29udGV4dCAqYXZjdHgpCiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNlID0gQVZf
T05DRV9JTklUOwogICAgIE1wZWc0RW5jQ29udGV4dCAqY29uc3QgbTQgPSBhdmN0eC0+cHJpdl9k
YXRhOwogICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtID0gJm00LT5tOwotICAgIE1wZWdF
bmNDb250ZXh0ICAqY29uc3QgIHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBz
ID0gJm0tPnM7CiAgICAgaW50IHJldDsKIAogICAgIGlmIChhdmN0eC0+d2lkdGggPj0gKDE8PDEz
KSB8fCBhdmN0eC0+aGVpZ2h0ID49ICgxPDwxMykpIHsKQEAgLTEzMTUsMTAgKzEzMTQsMTAgQEAg
c3RhdGljIGF2X2NvbGQgaW50IGVuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAg
ICBzLT5pbnRlcl9hY192bGNfbGFzdF9sZW5ndGggPSB1bmlfbXBlZzRfaW50ZXJfcmxfbGVuICsg
MTI4ICogNjQ7CiAgICAgcy0+bHVtYV9kY192bGNfbGVuZ3RoICAgICAgID0gdW5pX0RDdGFiX2x1
bV9sZW47CiAgICAgcy0+YWNfZXNjX2xlbmd0aCAgICAgICAgICAgID0gNyArIDIgKyAxICsgNiAr
IDEgKyAxMiArIDE7Ci0gICAgcy0+eV9kY19zY2FsZV90YWJsZSAgICAgICAgID0gZmZfbXBlZzRf
eV9kY19zY2FsZV90YWJsZTsKLSAgICBzLT5jX2RjX3NjYWxlX3RhYmxlICAgICAgICAgPSBmZl9t
cGVnNF9jX2RjX3NjYWxlX3RhYmxlOworICAgIHMtPmMueV9kY19zY2FsZV90YWJsZSAgICAgICAg
ID0gZmZfbXBlZzRfeV9kY19zY2FsZV90YWJsZTsKKyAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUg
ICAgICAgICA9IGZmX21wZWc0X2NfZGNfc2NhbGVfdGFibGU7CiAKLSAgICBmZl9xcGVsZHNwX2lu
aXQoJnMtPnFkc3ApOworICAgIGZmX3FwZWxkc3BfaW5pdCgmcy0+Yy5xZHNwKTsKICAgICBpZiAo
KHJldCA9IGZmX21wdl9lbmNvZGVfaW5pdChhdmN0eCkpIDwgMCkKICAgICAgICAgcmV0dXJuIHJl
dDsKIApAQCAtMTMzNSwyMyArMTMzNCwyMyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2lu
aXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogCiAgICAgbTQtPnRpbWVfaW5jcmVtZW50X2JpdHMg
ICAgID0gYXZfbG9nMihhdmN0eC0+dGltZV9iYXNlLmRlbiAtIDEpICsgMTsKIAotICAgIGlmIChz
LT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dMT0JBTF9IRUFERVIpIHsKLSAgICAgICAg
cy0+YXZjdHgtPmV4dHJhZGF0YSA9IGF2X21hbGxvYygxMDI0KTsKLSAgICAgICAgaWYgKCFzLT5h
dmN0eC0+ZXh0cmFkYXRhKQorICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dM
T0JBTF9IRUFERVIpIHsKKyAgICAgICAgYXZjdHgtPmV4dHJhZGF0YSA9IGF2X21hbGxvYygxMDI0
KTsKKyAgICAgICAgaWYgKCFhdmN0eC0+ZXh0cmFkYXRhKQogICAgICAgICAgICAgcmV0dXJuIEFW
RVJST1IoRU5PTUVNKTsKLSAgICAgICAgaW5pdF9wdXRfYml0cygmcy0+cGIsIHMtPmF2Y3R4LT5l
eHRyYWRhdGEsIDEwMjQpOworICAgICAgICBpbml0X3B1dF9iaXRzKCZzLT5wYiwgYXZjdHgtPmV4
dHJhZGF0YSwgMTAyNCk7CiAKICAgICAgICAgbXBlZzRfZW5jb2RlX3Zpc3VhbF9vYmplY3RfaGVh
ZGVyKG0pOwogICAgICAgICBtcGVnNF9lbmNvZGVfdm9sX2hlYWRlcihtNCwgMCwgMCk7CiAKIC8v
ICAgICAgICAgICAgZmZfbXBlZzRfc3R1ZmZpbmcoJnMtPnBiKTsgPwogICAgICAgICBmbHVzaF9w
dXRfYml0cygmcy0+cGIpOwotICAgICAgICBzLT5hdmN0eC0+ZXh0cmFkYXRhX3NpemUgPSBwdXRf
Ynl0ZXNfb3V0cHV0KCZzLT5wYik7CisgICAgICAgIGF2Y3R4LT5leHRyYWRhdGFfc2l6ZSA9IHB1
dF9ieXRlc19vdXRwdXQoJnMtPnBiKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
ZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKE1wZWdFbmNDb250ZXh0ICpzKQordm9pZCBmZl9tcGVn
NF9pbml0X3BhcnRpdGlvbnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKIHsKICAgICB1aW50OF90
ICpzdGFydCA9IHB1dF9iaXRzX3B0cigmcy0+cGIpOwogICAgIHVpbnQ4X3QgKmVuZCAgID0gcy0+
cGIuYnVmX2VuZDsKQEAgLTEzNjQsMTMgKzEzNjMsMTMgQEAgdm9pZCBmZl9tcGVnNF9pbml0X3Bh
cnRpdGlvbnMoTXBlZ0VuY0NvbnRleHQgKnMpCiAgICAgaW5pdF9wdXRfYml0cygmcy0+cGIyLCBz
dGFydCArIHBiX3NpemUgKyB0ZXhfc2l6ZSwgcGJfc2l6ZSk7CiB9CiAKLXZvaWQgZmZfbXBlZzRf
bWVyZ2VfcGFydGl0aW9ucyhNcGVnRW5jQ29udGV4dCAqcykKK3ZvaWQgZmZfbXBlZzRfbWVyZ2Vf
cGFydGl0aW9ucyhNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewogICAgIGNvbnN0IGludCBwYjJf
bGVuICAgID0gcHV0X2JpdHNfY291bnQoJnMtPnBiMik7CiAgICAgY29uc3QgaW50IHRleF9wYl9s
ZW4gPSBwdXRfYml0c19jb3VudCgmcy0+dGV4X3BiKTsKICAgICBjb25zdCBpbnQgYml0cyAgICAg
ICA9IHB1dF9iaXRzX2NvdW50KCZzLT5wYik7CiAKLSAgICBpZiAocy0+cGljdF90eXBlID09IEFW
X1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVf
VFlQRV9JKSB7CiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTksIERDX01BUktFUik7CiAgICAg
ICAgIHMtPm1pc2NfYml0cyAgKz0gMTkgKyBwYjJfbGVuICsgYml0cyAtIHMtPmxhc3RfYml0czsK
ICAgICAgICAgcy0+aV90ZXhfYml0cyArPSB0ZXhfcGJfbGVuOwpAQCAtMTM5MCwxOSArMTM4OSwx
OSBAQCB2b2lkIGZmX21wZWc0X21lcmdlX3BhcnRpdGlvbnMoTXBlZ0VuY0NvbnRleHQgKnMpCiAg
ICAgcy0+bGFzdF9iaXRzID0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKIH0KIAotdm9pZCBmZl9t
cGVnNF9lbmNvZGVfdmlkZW9fcGFja2V0X2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcykKK3ZvaWQg
ZmZfbXBlZzRfZW5jb2RlX3ZpZGVvX3BhY2tldF9oZWFkZXIoTVBWRW5jQ29udGV4dCAqY29uc3Qg
cykKIHsKLSAgICBpbnQgbWJfbnVtX2JpdHMgPSBhdl9sb2cyKHMtPm1iX251bSAtIDEpICsgMTsK
KyAgICBpbnQgbWJfbnVtX2JpdHMgPSBhdl9sb2cyKHMtPmMubWJfbnVtIC0gMSkgKyAxOwogCi0g
ICAgcHV0X2JpdHMoJnMtPnBiLCBmZl9tcGVnNF9nZXRfdmlkZW9fcGFja2V0X3ByZWZpeF9sZW5n
dGgocyksIDApOworICAgIHB1dF9iaXRzKCZzLT5wYiwgZmZfbXBlZzRfZ2V0X3ZpZGVvX3BhY2tl
dF9wcmVmaXhfbGVuZ3RoKCZzLT5jKSwgMCk7CiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsK
IAotICAgIHB1dF9iaXRzKCZzLT5wYiwgbWJfbnVtX2JpdHMsIHMtPm1iX3ggKyBzLT5tYl95ICog
cy0+bWJfd2lkdGgpOwotICAgIHB1dF9iaXRzKCZzLT5wYiwgNSAvKiBxdWFudF9wcmVjaXNpb24g
Ki8sIHMtPnFzY2FsZSk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCBtYl9udW1fYml0cywgcy0+Yy5t
Yl94ICsgcy0+Yy5tYl95ICogcy0+Yy5tYl93aWR0aCk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCA1
IC8qIHF1YW50X3ByZWNpc2lvbiAqLywgcy0+Yy5xc2NhbGUpOwogICAgIHB1dF9iaXRzKCZzLT5w
YiwgMSwgMCk7IC8qIG5vIEhFQyAqLwogfQogCi0jZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihN
cGVnRW5jQ29udGV4dCwgeCkKKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKE1QVkVuY0NvbnRl
eHQsIGMueCkKICNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0gfCBBVl9PUFRfRkxB
R19FTkNPRElOR19QQVJBTQogc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKICAg
ICB7ICJkYXRhX3BhcnRpdGlvbmluZyIsICJVc2UgZGF0YSBwYXJ0aXRpb25pbmcuIiwgICAgICBP
RkZTRVQoZGF0YV9wYXJ0aXRpb25pbmcpLCBBVl9PUFRfVFlQRV9CT09MLCB7IC5pNjQgPSAwIH0s
IDAsIDEsIFZFIH0sCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuaCBiL2xp
YmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5oCmluZGV4IDA3MjdiZTY3NTAuLjgxNWYxNmYwNzMgMTAw
NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5oCisrKyBiL2xpYmF2Y29kZWMvbXBl
ZzR2aWRlb2VuYy5oCkBAIC0yNywxNCArMjcsMTQgQEAKIAogI2luY2x1ZGUgInB1dF9iaXRzLmgi
CiAKLXR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IE1wZWdFbmNDb250ZXh0OwordHlwZWRl
ZiBzdHJ1Y3QgTVBWRW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OwogCi12b2lkIGZmX3NldF9tcGVn
NF90aW1lKE1wZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfc2V0X21wZWc0X3RpbWUoTVBWRW5j
Q29udGV4dCAqcyk7CiAKLXZvaWQgZmZfbXBlZzRfZW5jb2RlX3ZpZGVvX3BhY2tldF9oZWFkZXIo
TXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9tcGVnNF9lbmNvZGVfdmlkZW9fcGFja2V0X2hl
YWRlcihNUFZFbmNDb250ZXh0ICpzKTsKIHZvaWQgZmZfbXBlZzRfc3R1ZmZpbmcoUHV0Qml0Q29u
dGV4dCAqcGJjKTsKLXZvaWQgZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKE1wZWdFbmNDb250ZXh0
ICpzKTsKLXZvaWQgZmZfbXBlZzRfbWVyZ2VfcGFydGl0aW9ucyhNcGVnRW5jQ29udGV4dCAqcyk7
Ci12b2lkIGZmX2NsZWFuX21wZWc0X3FzY2FsZXMoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBm
Zl9tcGVnNF9pbml0X3BhcnRpdGlvbnMoTVBWRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX21wZWc0
X21lcmdlX3BhcnRpdGlvbnMoTVBWRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2NsZWFuX21wZWc0
X3FzY2FsZXMoTVBWRW5jQ29udGV4dCAqcyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZj
b2RlYy9tcGVndmlkZW8uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKaW5kZXggMTI2ZmVmYTFi
ZS4uYTY1MTI1Y2MxMyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYworKysgYi9s
aWJhdmNvZGVjL21wZWd2aWRlby5jCkBAIC00MzUsOSArNDM1LDYgQEAgc3RhdGljIHZvaWQgYmFj
a3VwX2R1cGxpY2F0ZV9jb250ZXh0KE1wZWdFbmNDb250ZXh0ICpiYWssIE1wZWdFbmNDb250ZXh0
ICpzcmMpCiAgICAgQ09QWShzdGFydF9tYl95KTsKICAgICBDT1BZKGVuZF9tYl95KTsKICAgICBD
T1BZKG1lLm1hcF9nZW5lcmF0aW9uKTsKLSAgICBDT1BZKGRjdF9lcnJvcl9zdW0pOwotICAgIENP
UFkoZGN0X2NvdW50WzBdKTsKLSAgICBDT1BZKGRjdF9jb3VudFsxXSk7CiAgICAgQ09QWShhY192
YWxfYmFzZSk7CiAgICAgQ09QWShhY192YWxbMF0pOwogICAgIENPUFkoYWNfdmFsWzFdKTsKZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmggYi9saWJhdmNvZGVjL21wZWd2aWRlby5o
CmluZGV4IDg1MjI3ZmRiOGYuLmFkYWEwY2YyZDAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBl
Z3ZpZGVvLmgKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaApAQCAtMzAsMTggKzMwLDEzIEBA
CiAKICNpbmNsdWRlICJibG9ja2RzcC5oIgogI2luY2x1ZGUgImVycm9yX3Jlc2lsaWVuY2UuaCIK
LSNpbmNsdWRlICJmZGN0ZHNwLmgiCiAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKICNpbmNsdWRlICJo
MjY0Y2hyb21hLmgiCiAjaW5jbHVkZSAiaDI2M2RzcC5oIgogI2luY2x1ZGUgImhwZWxkc3AuaCIK
ICNpbmNsdWRlICJpZGN0ZHNwLmgiCi0jaW5jbHVkZSAibWVfY21wLmgiCiAjaW5jbHVkZSAibW90
aW9uX2VzdC5oIgogI2luY2x1ZGUgIm1wZWdwaWN0dXJlLmgiCi0jaW5jbHVkZSAibXBlZ3ZpZGVv
ZW5jZHNwLmgiCi0jaW5jbHVkZSAicGl4YmxvY2tkc3AuaCIKLSNpbmNsdWRlICJwdXRfYml0cy5o
IgogI2luY2x1ZGUgInFwZWxkc3AuaCIKICNpbmNsdWRlICJ2aWRlb2RzcC5oIgogCkBAIC0xMDUs
OCArMTAwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogCiAgICAgZW51bSBB
VkNvZGVjSUQgY29kZWNfaWQ7ICAgICAvKiBzZWUgQVZfQ09ERUNfSURfeHh4ICovCiAgICAgaW50
IGVuY29kaW5nOyAgICAgLy8vPCB0cnVlIGlmIHdlIGFyZSBlbmNvZGluZyAodnMgZGVjb2Rpbmcp
Ci0gICAgaW50IGx1bWFfZWxpbV90aHJlc2hvbGQ7Ci0gICAgaW50IGNocm9tYV9lbGltX3RocmVz
aG9sZDsKICAgICBpbnQgd29ya2Fyb3VuZF9idWdzOyAgICAgICAvLy88IHdvcmthcm91bmQgYnVn
cyBpbiBlbmNvZGVycyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseQogICAg
IGludCBjb2RlY190YWc7ICAgICAgICAgICAgIC8vLzwgaW50ZXJuYWwgY29kZWNfdGFnIHVwcGVy
IGNhc2UgY29udmVydGVkIGZyb20gYXZjdHggY29kZWNfdGFnCiAgICAgLyogdGhlIGZvbGxvd2lu
ZyBmaWVsZHMgYXJlIG1hbmFnZWQgaW50ZXJuYWxseSBieSB0aGUgZW5jb2RlciAqLwpAQCAtMTI1
LDEyICsxMTgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogCiAgICAgQnVm
ZmVyUG9vbENvbnRleHQgYnVmZmVyX3Bvb2xzOwogCi0gICAgLyoqIGJpdCBvdXRwdXQgKi8KLSAg
ICBQdXRCaXRDb250ZXh0IHBiOwotCiAgICAgaW50IHN0YXJ0X21iX3k7ICAgICAgICAgICAgLy8v
PCBzdGFydCBtYl95IG9mIHRoaXMgdGhyZWFkIChzbyBjdXJyZW50IHRocmVhZCBzaG91bGQgcHJv
Y2VzcyBzdGFydF9tYl95IDw9IHJvdyA8IGVuZF9tYl95KQogICAgIGludCBlbmRfbWJfeTsgICAg
ICAgICAgICAgIC8vLzwgZW5kICAgbWJfeSBvZiB0aGlzIHRocmVhZCAoc28gY3VycmVudCB0aHJl
YWQgc2hvdWxkIHByb2Nlc3Mgc3RhcnRfbWJfeSA8PSByb3cgPCBlbmRfbWJfeSkKLSAgICBzdHJ1
Y3QgTXBlZ0VuY0NvbnRleHQgKnRocmVhZF9jb250ZXh0W01BWF9USFJFQURTXTsKKyAgICB1bmlv
biB7CisgICAgICAgIHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdGhyZWFkX2NvbnRleHRbTUFYX1RI
UkVBRFNdOworICAgICAgICBzdHJ1Y3QgTVBWRW5jQ29udGV4dCAgKmVuY19jb250ZXh0c1tNQVhf
VEhSRUFEU107CisgICAgfTsKICAgICBpbnQgc2xpY2VfY29udGV4dF9jb3VudDsgICAvLy88IG51
bWJlciBvZiB1c2VkIHRocmVhZF9jb250ZXh0cwogCiAgICAgLyoqCkBAIC0xNDUsMTIgKzEzOCw2
IEBAIHR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IHsKICAgICAgKi8KICAgICBNUFZXb3Jr
UGljdHVyZSBuZXh0X3BpYzsKIAotICAgIC8qKgotICAgICAqIFJlZmVyZW5jZSB0byB0aGUgc291
cmNlIHBpY3R1cmUgZm9yIGVuY29kaW5nLgotICAgICAqIG5vdGUsIGxpbmVzaXplICYgZGF0YSwg
bWlnaHQgbm90IG1hdGNoIHRoZSBzb3VyY2UgcGljdHVyZSAoZm9yIGZpZWxkIHBpY3R1cmVzKQot
ICAgICAqLwotICAgIEFWRnJhbWUgKm5ld19waWM7Ci0KICAgICAvKioKICAgICAgKiBjb3B5IG9m
IHRoZSBjdXJyZW50IHBpY3R1cmUgc3RydWN0dXJlLgogICAgICAqIG5vdGUsIGxpbmVzaXplICYg
ZGF0YSwgbWlnaHQgbm90IG1hdGNoIHRoZSBjdXJyZW50IHBpY3R1cmUgKGZvciBmaWVsZCBwaWN0
dXJlcykKQEAgLTE4MSw0NiArMTY4LDI0IEBAIHR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0
IHsKICAgICBpbnQgY2hyb21hX3FzY2FsZTsgICAgICAgICAgLy8vPCBjaHJvbWEgUVAKICAgICB1
bnNpZ25lZCBpbnQgbGFtYmRhOyAgICAgICAgLy8vPCBMYWdyYW5nZSBtdWx0aXBsaWVyIHVzZWQg
aW4gcmF0ZSBkaXN0b3J0aW9uCiAgICAgdW5zaWduZWQgaW50IGxhbWJkYTI7ICAgICAgIC8vLzwg
KGxhbWJkYSpsYW1iZGEpID4+IEZGX0xBTUJEQV9TSElGVAotICAgIGludCAqbGFtYmRhX3RhYmxl
OwotICAgIGludCBhZGFwdGl2ZV9xdWFudDsgICAgICAgICAvLy88IHVzZSBhZGFwdGl2ZSBxdWFu
dGl6YXRpb24KLSAgICBpbnQgZHF1YW50OyAgICAgICAgICAgICAgICAgLy8vPCBxc2NhbGUgZGlm
ZmVyZW5jZSB0byBwcmV2IHFzY2FsZQogICAgIGludCBwaWN0X3R5cGU7ICAgICAgICAgICAgICAv
Ly88IEFWX1BJQ1RVUkVfVFlQRV9JLCBBVl9QSUNUVVJFX1RZUEVfUCwgQVZfUElDVFVSRV9UWVBF
X0IsIC4uLgogICAgIGludCBkcm9wcGFibGU7Ci0gICAgaW50IHNraXBkY3Q7ICAgICAgICAgICAg
ICAgIC8vLzwgc2tpcCBkY3QgYW5kIGNvZGUgemVybyByZXNpZHVhbAogCiAgICAgLyogbW90aW9u
IGNvbXBlbnNhdGlvbiAqLwogICAgIGludCB1bnJlc3RyaWN0ZWRfbXY7ICAgICAgICAvLy88IG12
IGNhbiBwb2ludCBvdXRzaWRlIG9mIHRoZSBjb2RlZCBwaWN0dXJlCiAgICAgaW50IGgyNjNfbG9u
Z192ZWN0b3JzOyAgICAgIC8vLzwgdXNlIGhvcnJpYmxlIEguMjYzdjEgbG9uZyB2ZWN0b3IgbW9k
ZQogCiAgICAgQmxvY2tEU1BDb250ZXh0IGJkc3A7Ci0gICAgRkRDVERTUENvbnRleHQgZmRzcDsK
ICAgICBIMjY0Q2hyb21hQ29udGV4dCBoMjY0Y2hyb21hOwogICAgIEhwZWxEU1BDb250ZXh0IGhk
c3A7CiAgICAgSURDVERTUENvbnRleHQgaWRzcDsKLSAgICBNcGVndmlkZW9FbmNEU1BDb250ZXh0
IG1wdmVuY2RzcDsKLSAgICBQaXhibG9ja0RTUENvbnRleHQgcGRzcDsKICAgICBRcGVsRFNQQ29u
dGV4dCBxZHNwOwogICAgIFZpZGVvRFNQQ29udGV4dCB2ZHNwOwogICAgIEgyNjNEU1BDb250ZXh0
IGgyNjNkc3A7CiAgICAgaW50IGZfY29kZTsgICAgICAgICAgICAgICAgIC8vLzwgZm9yd2FyZCBN
ViByZXNvbHV0aW9uCiAgICAgaW50IGJfY29kZTsgICAgICAgICAgICAgICAgIC8vLzwgYmFja3dh
cmQgTVYgcmVzb2x1dGlvbiBmb3IgQi1mcmFtZXMgKE1QRUctNCkKICAgICBpbnQxNl90ICgqcF9m
aWVsZF9tdl90YWJsZV9iYXNlKVsyXTsKLSAgICBpbnQxNl90ICgqcF9tdl90YWJsZSlbMl07ICAg
ICAgICAgICAgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgUC1mcmFtZSBlbmNvZGluZwotICAg
IGludDE2X3QgKCpiX2ZvcndfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYg
cGVyIE1CKSBmb3J3YXJkIG1vZGUgQi1mcmFtZSBlbmNvZGluZwotICAgIGludDE2X3QgKCpiX2Jh
Y2tfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1CKSBiYWNrd2Fy
ZCBtb2RlIEItZnJhbWUgZW5jb2RpbmcKLSAgICBpbnQxNl90ICgqYl9iaWRpcl9mb3J3X212X3Rh
YmxlKVsyXTsgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgYmlkaXIgbW9kZSBCLWZyYW1lIGVu
Y29kaW5nCi0gICAgaW50MTZfdCAoKmJfYmlkaXJfYmFja19tdl90YWJsZSlbMl07IC8vLzwgTVYg
dGFibGUgKDFNViBwZXIgTUIpIGJpZGlyIG1vZGUgQi1mcmFtZSBlbmNvZGluZwotICAgIGludDE2
X3QgKCpiX2RpcmVjdF9tdl90YWJsZSlbMl07ICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1C
KSBkaXJlY3QgbW9kZSBCLWZyYW1lIGVuY29kaW5nCiAgICAgaW50MTZfdCAoKnBfZmllbGRfbXZf
dGFibGVbMl1bMl0pWzJdOyAgIC8vLzwgTVYgdGFibGUgKDJNViBwZXIgTUIpIGludGVybGFjZWQg
UC1mcmFtZSBlbmNvZGluZwotICAgIGludDE2X3QgKCpiX2ZpZWxkX212X3RhYmxlWzJdWzJdWzJd
KVsyXTsvLy88IE1WIHRhYmxlICg0TVYgcGVyIE1CKSBpbnRlcmxhY2VkIEItZnJhbWUgZW5jb2Rp
bmcKLSAgICB1aW50OF90ICgqcF9maWVsZF9zZWxlY3RfdGFibGVbMl0pOyAgLy8vPCBPbmx5IHRo
ZSBmaXJzdCBlbGVtZW50IGlzIGFsbG9jYXRlZAotICAgIHVpbnQ4X3QgKCpiX2ZpZWxkX3NlbGVj
dF90YWJsZVsyXVsyXSk7IC8vLzwgYWxsb2NhdGVkIGpvaW50bHkgd2l0aCBwX2ZpZWxkX3NlbGVj
dF90YWJsZQotCi0gICAgLyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIGVuY29kZXItb25seSAq
LwotICAgIHVpbnQxNl90ICptYl92YXI7ICAgICAgICAgICAvLy88IFRhYmxlIGZvciBNQiB2YXJp
YW5jZXMKLSAgICB1aW50MTZfdCAqbWNfbWJfdmFyOyAgICAgICAgLy8vPCBUYWJsZSBmb3IgbW90
aW9uIGNvbXBlbnNhdGVkIE1CIHZhcmlhbmNlcwotICAgIHVpbnQ4X3QgKm1iX21lYW47ICAgICAg
ICAgICAvLy88IFRhYmxlIGZvciBNQiBsdW1pbmFuY2UKLSAgICB1aW50NjRfdCBlbmNvZGluZ19l
cnJvcltNUFZfTUFYX1BMQU5FU107CiAKICAgICBpbnQgbXZfZGlyOwogI2RlZmluZSBNVl9ESVJf
Rk9SV0FSRCAgIDEKQEAgLTI1MSw3ICsyMTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29u
dGV4dCB7CiAgICAgaW50IG1iX3gsIG1iX3k7CiAgICAgaW50IG1iX3NraXBfcnVuOwogICAgIGlu
dCBtYl9pbnRyYTsKLSAgICB1aW50MTZfdCAqbWJfdHlwZTsgIC8vLzwgVGFibGUgZm9yIGNhbmRp
ZGF0ZSBNQiB0eXBlcyBmb3IgZW5jb2RpbmcgKGRlZmluZXMgaW4gbXBlZ3ZpZGVvZW5jLmgpCiAK
ICAgICBpbnQgYmxvY2tfaW5kZXhbNl07IC8vLzwgaW5kZXggdG8gY3VycmVudCBNQiBpbiBibG9j
ayBiYXNlZCBhcnJheXMgd2l0aCBlZGdlcwogICAgIGludCBibG9ja193cmFwWzZdOwpAQCAtMjY1
LDQzICsyMjksNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgdWludDE2
X3QgaW50ZXJfbWF0cml4WzY0XTsKICAgICB1aW50MTZfdCBjaHJvbWFfaW50ZXJfbWF0cml4WzY0
XTsKIAotICAgIGludCBpbnRyYV9xdWFudF9iaWFzOyAgICAvLy88IGJpYXMgZm9yIHRoZSBxdWFu
dGl6ZXIKLSAgICBpbnQgaW50ZXJfcXVhbnRfYmlhczsgICAgLy8vPCBiaWFzIGZvciB0aGUgcXVh
bnRpemVyCi0gICAgaW50IG1pbl9xY29lZmY7ICAgICAgICAgIC8vLzwgbWluaW11bSBlbmNvZGFi
bGUgY29lZmZpY2llbnQKLSAgICBpbnQgbWF4X3Fjb2VmZjsgICAgICAgICAgLy8vPCBtYXhpbXVt
IGVuY29kYWJsZSBjb2VmZmljaWVudAotICAgIGludCBhY19lc2NfbGVuZ3RoOyAgICAgICAvLy88
IG51bSBvZiBiaXRzIG5lZWRlZCB0byBlbmNvZGUgdGhlIGxvbmdlc3QgZXNjCi0gICAgdWludDhf
dCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKLSAgICB1aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9s
ZW5ndGg7Ci0gICAgdWludDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7Ci0gICAgdWlu
dDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sYXN0X2xlbmd0aDsKLSAgICB1aW50OF90ICppbnRl
cl9hY192bGNfbGVuZ3RoOwotICAgIHVpbnQ4X3QgKmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsK
LSAgICB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5ndGg7Ci0KLSAgICBpbnQgY29kZWRfc2NvcmVb
MTJdOwotCi0gICAgLyoqIHByZWNvbXB1dGVkIG1hdHJpeCAoY29tYmluZSBxc2NhbGUgYW5kIERD
VCByZW5vcm0pICovCi0gICAgaW50ICgqcV9pbnRyYV9tYXRyaXgpWzY0XTsKLSAgICBpbnQgKCpx
X2Nocm9tYV9pbnRyYV9tYXRyaXgpWzY0XTsKLSAgICBpbnQgKCpxX2ludGVyX21hdHJpeClbNjRd
OwotICAgIC8qKiBpZGVudGljYWwgdG8gdGhlIGFib3ZlIGJ1dCBmb3IgTU1YICYgdGhlc2UgYXJl
IG5vdCBwZXJtdXRhdGVkLCBzZWNvbmQgNjQgZW50cmllcyBhcmUgYmlhcyovCi0gICAgdWludDE2
X3QgKCpxX2ludHJhX21hdHJpeDE2KVsyXVs2NF07Ci0gICAgdWludDE2X3QgKCpxX2Nocm9tYV9p
bnRyYV9tYXRyaXgxNilbMl1bNjRdOwotICAgIHVpbnQxNl90ICgqcV9pbnRlcl9tYXRyaXgxNilb
Ml1bNjRdOwotCi0gICAgLyogbm9pc2UgcmVkdWN0aW9uICovCi0gICAgaW50ICgqZGN0X2Vycm9y
X3N1bSlbNjRdOwotICAgIGludCBkY3RfY291bnRbMl07Ci0gICAgdWludDE2X3QgKCpkY3Rfb2Zm
c2V0KVs2NF07Ci0KLSAgICAvKiBzdGF0aXN0aWNzLCB1c2VkIGZvciAyLXBhc3MgZW5jb2Rpbmcg
Ki8KLSAgICBpbnQgbXZfYml0czsKLSAgICBpbnQgaV90ZXhfYml0czsKLSAgICBpbnQgcF90ZXhf
Yml0czsKLSAgICBpbnQgaV9jb3VudDsKLSAgICBpbnQgbWlzY19iaXRzOyAvLy88IGNicCwgbWJf
dHlwZQotICAgIGludCBsYXN0X2JpdHM7IC8vLzwgdGVtcCB2YXIgdXNlZCBmb3IgY2FsY3VsYXRp
bmcgdGhlIGFib3ZlIHZhcnMKLQogICAgIC8qIGVycm9yIGNvbmNlYWxtZW50IC8gcmVzeW5jICov
CiAgICAgaW50IHJlc3luY19tYl94OyAgICAgICAgICAgICAgICAgLy8vPCB4IHBvc2l0aW9uIG9m
IGxhc3QgcmVzeW5jIG1hcmtlcgogICAgIGludCByZXN5bmNfbWJfeTsgICAgICAgICAgICAgICAg
IC8vLzwgeSBwb3NpdGlvbiBvZiBsYXN0IHJlc3luYyBtYXJrZXIKQEAgLTMxMSwxMCArMjM4LDYg
QEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogICAgIC8qIEguMjYzIHNwZWNpZmlj
ICovCiAgICAgaW50IGdvYl9pbmRleDsKICAgICBpbnQgb2JtYzsgICAgICAgICAgICAgICAgICAg
ICAgIC8vLzwgb3ZlcmxhcHBlZCBibG9jayBtb3Rpb24gY29tcGVuc2F0aW9uCi0gICAgaW50IG1i
X2luZm87ICAgICAgICAgICAgICAgICAgICAvLy88IGludGVydmFsIGZvciBvdXRwdXR0aW5nIGlu
Zm8gYWJvdXQgbWIgb2Zmc2V0cyBhcyBzaWRlIGRhdGEKLSAgICBpbnQgcHJldl9tYl9pbmZvLCBs
YXN0X21iX2luZm87Ci0gICAgdWludDhfdCAqbWJfaW5mb19wdHI7Ci0gICAgaW50IG1iX2luZm9f
c2l6ZTsKICAgICBpbnQgZWhjX21vZGU7CiAKICAgICAvKiBILjI2Mysgc3BlY2lmaWMgKi8KQEAg
LTM0Miw4ICsyNjUsNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgaW50
IGRhdGFfcGFydGl0aW9uaW5nOyAgICAgICAgICAgLy8vPCBkYXRhIHBhcnRpdGlvbmluZyBmbGFn
IGZyb20gaGVhZGVyCiAgICAgaW50IHBhcnRpdGlvbmVkX2ZyYW1lOyAgICAgICAgICAgLy8vPCBp
cyBjdXJyZW50IGZyYW1lIHBhcnRpdGlvbmVkCiAgICAgaW50IGxvd19kZWxheTsgICAgICAgICAg
ICAgICAgICAgLy8vPCBubyByZW9yZGVyaW5nIG5lZWRlZCAvIGhhcyBubyBCLWZyYW1lcwotICAg
IFB1dEJpdENvbnRleHQgdGV4X3BiOyAgICAgICAgICAgIC8vLzwgdXNlZCBmb3IgZGF0YSBwYXJ0
aXRpb25lZCBWT1BzCi0gICAgUHV0Qml0Q29udGV4dCBwYjI7ICAgICAgICAgICAgICAgLy8vPCB1
c2VkIGZvciBkYXRhIHBhcnRpdGlvbmVkIFZPUHMKICAgICBpbnQgbXBlZ19xdWFudDsKICAgICBp
bnQgcGFkZGluZ19idWdfc2NvcmU7ICAgICAgICAgICAgIC8vLzwgdXNlZCB0byBkZXRlY3QgdGhl
IFZFUlkgY29tbW9uIHBhZGRpbmcgYnVnIGluIE1QRUctNAogCkBAIC0zNTQsMTAgKzI3NSw2IEBA
IHR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IHsKICAgICBpbnQgcnYxMF92ZXJzaW9uOyAv
Ly88IFJWMTAgdmVyc2lvbjogMCBvciAzCiAgICAgaW50IHJ2MTBfZmlyc3RfZGNfY29kZWRbM107
CiAKLSAgICAvKiBNSlBFRyBzcGVjaWZpYyAqLwotICAgIHN0cnVjdCBNSnBlZ0NvbnRleHQgKm1q
cGVnX2N0eDsKLSAgICBpbnQgZXNjX3BvczsKLQogICAgIC8qIE1TTVBFRzQgc3BlY2lmaWMgKi8K
ICAgICBpbnQgc2xpY2VfaGVpZ2h0OyAgICAgIC8vLzwgaW4gbWFjcm9ibG9ja3MKICAgICBpbnQg
Zmlyc3Rfc2xpY2VfbGluZTsgIC8vLzwgdXNlZCBpbiBNUEVHLTQgdG9vIHRvIGhhbmRsZSByZXN5
bmMgbWFya2VycwpAQCAtMzcxLDE2ICsyODgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0Nv
bnRleHQgewogICAgICAgICBNU01QNF9XTVYyLAogICAgICAgICBNU01QNF9WQzEsICAgICAgICAv
Ly88IGZvciBWQzEgKGltYWdlKSwgV01WMyAoaW1hZ2UpIGFuZCBNU1MyLgogICAgIH0gbXNtcGVn
NF92ZXJzaW9uOwotICAgIGludCBlc2MzX2xldmVsX2xlbmd0aDsKICAgICBpbnQgaW50ZXJfaW50
cmFfcHJlZDsKICAgICBpbnQgbXNwZWw7CiAKICAgICAvKiBkZWNvbXByZXNzaW9uIHNwZWNpZmlj
ICovCiAgICAgR2V0Qml0Q29udGV4dCBnYjsKIAotICAgIC8qIE1QRUctMSBzcGVjaWZpYyAqLwot
ICAgIGludCBsYXN0X212X2RpcjsgICAgICAgICAvLy88IGxhc3QgbXZfZGlyLCB1c2VkIGZvciBC
LWZyYW1lIGVuY29kaW5nCi0KICAgICAvKiBNUEVHLTItc3BlY2lmaWMgLSBJIHdpc2hlZCBub3Qg
dG8gaGF2ZSB0byBzdXBwb3J0IHRoaXMgbWVzcy4gKi8KICAgICBpbnQgcHJvZ3Jlc3NpdmVfc2Vx
dWVuY2U7CiAgICAgaW50IG1wZWdfZl9jb2RlWzJdWzJdOwpAQCAtNDA5LDE5ICszMjIsOSBAQCB0
eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgaW50IGludGVybGFjZWRfZGN0Owog
ICAgIGludCBmaXJzdF9maWVsZDsgICAgICAgICAvLy88IGlzIDEgZm9yIHRoZSBmaXJzdCBmaWVs
ZCBvZiBhIGZpZWxkIHBpY3R1cmUgMCBvdGhlcndpc2UKIAotICAgIC8qIFJUUCBzcGVjaWZpYyAq
LwotICAgIGludCBydHBfbW9kZTsKLSAgICBpbnQgcnRwX3BheWxvYWRfc2l6ZTsKLQotICAgIHVp
bnQ4X3QgKnB0cl9sYXN0Z29iOwotCiAgICAgaW50MTZfdCAoKmJsb2NrKVs2NF07IC8vLzwgcG9p
bnRzIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJsb2NrcwogICAgIGludDE2X3QgKCpibG9ja3Mp
WzEyXVs2NF07IC8vIGZvciBIUSBtb2RlIHdlIG5lZWQgdG8ga2VlcCB0aGUgYmVzdCBibG9jawot
ICAgIHVuaW9uIHsKICAgICBpbnQgKCpkZWNvZGVfbWIpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq
cywgaW50MTZfdCBibG9ja1sxMl1bNjRdKTsgLy8gdXNlZCBieSBzb21lIGNvZGVjcyB0byBhdm9p
ZCBhIHN3aXRjaCgpCi0gICAgICAgIHZvaWQgKCplbmNvZGVfbWIpKHN0cnVjdCBNcGVnRW5jQ29u
dGV4dCAqcywgaW50MTZfdCBibG9ja1tdWzY0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpOwotICAgIH07CiAKICNkZWZpbmUgU0xJQ0VfT0sg
ICAgICAgICAwCiAjZGVmaW5lIFNMSUNFX0VSUk9SICAgICAtMQpAQCAtNDQ0LDIwICszNDcsNiBA
QCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2NhbGUpOwogICAg
IHZvaWQgKCpkY3RfdW5xdWFudGl6ZV9pbnRlcikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLCAv
LyB1bnF1YW50aXplciB0byB1c2UgKE1QRUctNCBjYW4gdXNlIGJvdGgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2Nh
bGUpOwotICAgIGludCAoKmRjdF9xdWFudGl6ZSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLCBp
bnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2NhbGUsIGludCAqb3ZlcmZs
b3cpOwotICAgIHZvaWQgKCpkZW5vaXNlX2RjdCkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLCBp
bnQxNl90ICpibG9jayk7Ci0KLSAgICBpbnQgbXB2X2ZsYWdzOyAgICAgIC8vLzwgZmxhZ3Mgc2V0
IGJ5IHByaXZhdGUgb3B0aW9ucwotICAgIGludCBxdWFudGl6ZXJfbm9pc2Vfc2hhcGluZzsKLQot
ICAgIG1lX2NtcF9mdW5jIGlsZGN0X2NtcFsyXTsgLy8vPCAwID0gaW50cmEsIDEgPSBub24taW50
cmEKLSAgICBtZV9jbXBfZnVuYyBuX3NzZV9jbXBbMl07IC8vLzwgZWl0aGVyIFNTRSBvciBOU1NF
IGNtcCBmdW5jCi0gICAgbWVfY21wX2Z1bmMgc2FkX2NtcFsyXTsKLSAgICBtZV9jbXBfZnVuYyBz
c2VfY21wWzJdOwotICAgIGludCAoKnN1bV9hYnNfZGN0ZWxlbSkoY29uc3QgaW50MTZfdCAqYmxv
Y2spOwotCi0gICAgLy8vIEJpdGZpZWxkIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gd2hpY2ggZnJh
bWVzIHRvIHJlY29uc3RydWN0LgotICAgIGludCBmcmFtZV9yZWNvbnN0cnVjdGlvbl9iaXRmaWVs
ZDsKIAogICAgIC8qIGZsYWcgdG8gaW5kaWNhdGUgYSByZWluaXRpYWxpemF0aW9uIGlzIHJlcXVp
cmVkLCBlLmcuIGFmdGVyCiAgICAgICogYSBmcmFtZSBzaXplIGNoYW5nZSAqLwpAQCAtNDY3LDEw
ICszNTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgdW5zaWduZWQg
c2xpY2VfY3R4X3NpemU7CiAKICAgICBFUkNvbnRleHQgZXI7Ci0KLSAgICBpbnQgZXJyb3JfcmF0
ZTsKLQotICAgIGludCBpbnRyYV9wZW5hbHR5OwogfSBNcGVnRW5jQ29udGV4dDsKIAogCmRpZmYg
LS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb19kZWMuYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVv
X2RlYy5jCmluZGV4IDI4NTZkYmZiZDYuLjhjODRiNTljNWUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k
ZWMvbXBlZ3ZpZGVvX2RlYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jCkBAIC0x
MzYsNyArMTM2LDcgQEAgaW50IGZmX21wZWdfdXBkYXRlX3RocmVhZF9jb250ZXh0KEFWQ29kZWND
b250ZXh0ICpkc3QsCiAKICAgICAvLyBNUEVHLTIvaW50ZXJsYWNpbmcgaW5mbwogICAgIG1lbWNw
eSgmcy0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UsICZzMS0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UsCi0g
ICAgICAgICAgIChjaGFyICopICZzMS0+cnRwX21vZGUgLSAoY2hhciAqKSAmczEtPnByb2dyZXNz
aXZlX3NlcXVlbmNlKTsKKyAgICAgICAgICAgKGNoYXIgKikgJnMxLT5maXJzdF9maWVsZCArIHNp
emVvZihzMS0+Zmlyc3RfZmllbGQpIC0gKGNoYXIgKikgJnMxLT5wcm9ncmVzc2l2ZV9zZXF1ZW5j
ZSk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVv
X2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKaW5kZXggMzMyNDFkNmNiMC4uNzA2
MWFkMDcxOSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKKysrIGIvbGli
YXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAgLTg0LDEzICs4NCwxMyBAQAogI2RlZmluZSBRTUFU
X1NISUZUIDIxCiAKIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQg
KmNvbnN0IHMsIGNvbnN0IEFWUGFja2V0ICpwa3QpOwotc3RhdGljIGludCBkY3RfcXVhbnRpemVf
cmVmaW5lKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50MTZfdCAqd2VpZ2h0
LCBpbnQxNl90ICpvcmlnLCBpbnQgbiwgaW50IHFzY2FsZSk7Ci1zdGF0aWMgaW50IHNzZV9tYihN
cGVnRW5jQ29udGV4dCAqcyk7Ci1zdGF0aWMgdm9pZCBkZW5vaXNlX2RjdF9jKE1wZWdFbmNDb250
ZXh0ICpzLCBpbnQxNl90ICpibG9jayk7Ci1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1wZWdF
bmNDb250ZXh0ICpzLAorc3RhdGljIGludCBkY3RfcXVhbnRpemVfcmVmaW5lKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsIGludDE2X3QgKmJsb2NrLCBpbnQxNl90ICp3ZWlnaHQsIGludDE2X3QgKm9y
aWcsIGludCBuLCBpbnQgcXNjYWxlKTsKK3N0YXRpYyBpbnQgc3NlX21iKE1QVkVuY0NvbnRleHQg
KmNvbnN0IHMpOworc3RhdGljIHZvaWQgZGVub2lzZV9kY3RfYyhNUFZFbmNDb250ZXh0ICpjb25z
dCBzLCBpbnQxNl90ICpibG9jayk7CitzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1QVkVuY0Nv
bnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2Nr
LCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFzY2FsZSwgaW50ICpvdmVy
Zmxvdyk7Ci1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTXBlZ0VuY0NvbnRleHQg
KnMsIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSwgaW50ICpvdmVyZmxvdyk7Citz
dGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTVBWRW5jQ29udGV4dCAqY29uc3Qgcywg
aW50MTZfdCAqYmxvY2ssIGludCBuLCBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KTsKIAogc3Rh
dGljIHVpbnQ4X3QgZGVmYXVsdF9mY29kZV90YWJbTUFYX01WICogMiArIDFdOwogCkBAIC0xMDcs
NyArMTA3LDcgQEAgY29uc3QgQVZDbGFzcyBmZl9tcHZfZW5jX2NsYXNzID0gewogICAgIC52ZXJz
aW9uICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAogfTsKIAotdm9pZCBmZl9jb252ZXJ0X21h
dHJpeChNcGVnRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLAordm9pZCBmZl9jb252ZXJ0
X21hdHJpeChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgKCpxbWF0KVs2NF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQxNl90ICgqcW1hdDE2KVsyXVs2NF0sCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9tYXRyaXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBiaWFzLCBpbnQgcW1pbiwgaW50IHFtYXgsIGludCBpbnRyYSkKQEAgLTEyMCw3
ICsxMjAsNyBAQCB2b2lkIGZmX2NvbnZlcnRfbWF0cml4KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQg
KCpxbWF0KVs2NF0sCiAgICAgICAgIGludCBpOwogICAgICAgICBpbnQgcXNjYWxlMjsKIAotICAg
ICAgICBpZiAocy0+cV9zY2FsZV90eXBlKSBxc2NhbGUyID0gZmZfbXBlZzJfbm9uX2xpbmVhcl9x
c2NhbGVbcXNjYWxlXTsKKyAgICAgICAgaWYgKHMtPmMucV9zY2FsZV90eXBlKSBxc2NhbGUyID0g
ZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbcXNjYWxlXTsKICAgICAgICAgZWxzZSAgICAgICAg
ICAgICAgICAgcXNjYWxlMiA9IHFzY2FsZSA8PCAxOwogCiAgICAgICAgIGlmIChmZHNwLT5mZGN0
ID09IGZmX2pwZWdfZmRjdF9pc2xvd184ICB8fApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgZmZf
Y29udmVydF9tYXRyaXgoTXBlZ0VuY0NvbnRleHQgKnMsIGludCAoKnFtYXQpWzY0XSwKICNlbmRp
ZiAvKiBDT05GSUdfRkFBTkRDVCAqLwogICAgICAgICAgICAgZmRzcC0+ZmRjdCA9PSBmZl9qcGVn
X2ZkY3RfaXNsb3dfMTApIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgaW50IGogPSBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25b
aV07CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGogPSBzLT5jLmlkc3AuaWRjdF9wZXJtdXRh
dGlvbltpXTsKICAgICAgICAgICAgICAgICBpbnQ2NF90IGRlbiA9IChpbnQ2NF90KSBxc2NhbGUy
ICogcXVhbnRfbWF0cml4W2pdOwogICAgICAgICAgICAgICAgIC8qIDEgKiAxIDw9IHFzY2FsZTIg
KiBxdWFudF9tYXRyaXhbal0gPD0gMTEyICogMjU1CiAgICAgICAgICAgICAgICAgICogQXNzdW1l
IHggPSBxc2NhbGUyICogcXVhbnRfbWF0cml4W2pdCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBm
Zl9jb252ZXJ0X21hdHJpeChNcGVnRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLAogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGZkc3AtPmZkY3QgPT0gZmZfZmRjdF9pZmFz
dCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBjb25zdCBpbnQgaiA9IHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBpbnQgaiA9IHMtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2ldOwogICAg
ICAgICAgICAgICAgIGludDY0X3QgZGVuID0gZmZfYWFuc2NhbGVzW2ldICogKGludDY0X3QpIHFz
Y2FsZTIgKiBxdWFudF9tYXRyaXhbal07CiAgICAgICAgICAgICAgICAgLyogMTI0NyAqIDEgKiAx
IDw9IGZmX2FhbnNjYWxlc1tpXSAqIHFzY2FsZTIgKiBxdWFudF9tYXRyaXhbal0gPD0gMzE1MjEg
KiAxMTIgKiAyNTUKICAgICAgICAgICAgICAgICAgKiBBc3N1bWUgeCA9IGZmX2FhbnNjYWxlc1tp
XSAqIHFzY2FsZTIgKiBxdWFudF9tYXRyaXhbal0KQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIGZm
X2NvbnZlcnRfbWF0cml4KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgKCpxbWF0KVs2NF0sCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
NjQ7IGkrKykgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCBqID0gcy0+aWRzcC5pZGN0X3Bl
cm11dGF0aW9uW2ldOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBqID0gcy0+Yy5pZHNwLmlk
Y3RfcGVybXV0YXRpb25baV07CiAgICAgICAgICAgICAgICAgaW50NjRfdCBkZW4gPSAoaW50NjRf
dCkgcXNjYWxlMiAqIHF1YW50X21hdHJpeFtqXTsKICAgICAgICAgICAgICAgICAvKiAxICogMSA8
PSBxc2NhbGUyICogcXVhbnRfbWF0cml4W2pdIDw9IDExMiAqIDI1NQogICAgICAgICAgICAgICAg
ICAqIEFzc3VtZSB4ID0gcXNjYWxlMiAqIHF1YW50X21hdHJpeFtqXQpAQCAtMTg4LDcgKzE4OCw3
IEBAIHZvaWQgZmZfY29udmVydF9tYXRyaXgoTXBlZ0VuY0NvbnRleHQgKnMsIGludCAoKnFtYXQp
WzY0XSwKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoc2hpZnQpIHsKLSAgICAgICAgYXZfbG9n
KHMtPmF2Y3R4LCBBVl9MT0dfSU5GTywKKyAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xP
R19JTkZPLAogICAgICAgICAgICAgICAgIldhcm5pbmcsIFFNQVRfU0hJRlQgaXMgbGFyZ2VyIHRo
YW4gJWQsIG92ZXJmbG93cyBwb3NzaWJsZVxuIiwKICAgICAgICAgICAgICAgIFFNQVRfU0hJRlQg
LSBzaGlmdCk7CiAgICAgfQpAQCAtMTk2LDMxICsxOTYsMzEgQEAgdm9pZCBmZl9jb252ZXJ0X21h
dHJpeChNcGVnRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLAogCiBzdGF0aWMgaW5saW5l
IHZvaWQgdXBkYXRlX3FzY2FsZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKLSAgICBN
cGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0
IHMgPSAmbS0+czsKIAotICAgIGlmIChzLT5xX3NjYWxlX3R5cGUgPT0gMSAmJiAwKSB7CisgICAg
aWYgKHMtPmMucV9zY2FsZV90eXBlID09IDEgJiYgMCkgewogICAgICAgICBpbnQgaTsKICAgICAg
ICAgaW50IGJlc3RkaWZmPUlOVF9NQVg7CiAgICAgICAgIGludCBiZXN0ID0gMTsKIAogICAgICAg
ICBmb3IgKGkgPSAwIDsgaTxGRl9BUlJBWV9FTEVNUyhmZl9tcGVnMl9ub25fbGluZWFyX3FzY2Fs
ZSk7IGkrKykgewotICAgICAgICAgICAgaW50IGRpZmYgPSBGRkFCUygoZmZfbXBlZzJfbm9uX2xp
bmVhcl9xc2NhbGVbaV08PChGRl9MQU1CREFfU0hJRlQgKyA2KSkgLSAoaW50KXMtPmxhbWJkYSAq
IDEzOSk7Ci0gICAgICAgICAgICBpZiAoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV0gPCBz
LT5hdmN0eC0+cW1pbiB8fAotICAgICAgICAgICAgICAgIChmZl9tcGVnMl9ub25fbGluZWFyX3Fz
Y2FsZVtpXSA+IHMtPmF2Y3R4LT5xbWF4ICYmICFtLT52YnZfaWdub3JlX3FtYXgpKQorICAgICAg
ICAgICAgaW50IGRpZmYgPSBGRkFCUygoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV08PChG
Rl9MQU1CREFfU0hJRlQgKyA2KSkgLSAoaW50KXMtPmMubGFtYmRhICogMTM5KTsKKyAgICAgICAg
ICAgIGlmIChmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtpXSA8IHMtPmMuYXZjdHgtPnFtaW4g
fHwKKyAgICAgICAgICAgICAgICAoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV0gPiBzLT5j
LmF2Y3R4LT5xbWF4ICYmICFtLT52YnZfaWdub3JlX3FtYXgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKGRpZmYgPCBiZXN0ZGlmZikgewogICAgICAgICAgICAg
ICAgIGJlc3RkaWZmID0gZGlmZjsKICAgICAgICAgICAgICAgICBiZXN0ID0gaTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICBzLT5xc2NhbGUgPSBiZXN0OworICAgICAgICBzLT5j
LnFzY2FsZSA9IGJlc3Q7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcy0+cXNjYWxlID0gKHMtPmxh
bWJkYSAqIDEzOSArIEZGX0xBTUJEQV9TQ0FMRSAqIDY0KSA+PgorICAgICAgICBzLT5jLnFzY2Fs
ZSA9IChzLT5jLmxhbWJkYSAqIDEzOSArIEZGX0xBTUJEQV9TQ0FMRSAqIDY0KSA+PgogICAgICAg
ICAgICAgICAgICAgICAoRkZfTEFNQkRBX1NISUZUICsgNyk7Ci0gICAgICAgIHMtPnFzY2FsZSA9
IGF2X2NsaXAocy0+cXNjYWxlLCBzLT5hdmN0eC0+cW1pbiwgbS0+dmJ2X2lnbm9yZV9xbWF4ID8g
MzEgOiBzLT5hdmN0eC0+cW1heCk7CisgICAgICAgIHMtPmMucXNjYWxlID0gYXZfY2xpcChzLT5j
LnFzY2FsZSwgcy0+Yy5hdmN0eC0+cW1pbiwgbS0+dmJ2X2lnbm9yZV9xbWF4ID8gMzEgOiBzLT5j
LmF2Y3R4LT5xbWF4KTsKICAgICB9CiAKLSAgICBzLT5sYW1iZGEyID0gKHMtPmxhbWJkYSAqIHMt
PmxhbWJkYSArIEZGX0xBTUJEQV9TQ0FMRSAvIDIpID4+CisgICAgcy0+Yy5sYW1iZGEyID0gKHMt
PmMubGFtYmRhICogcy0+Yy5sYW1iZGEgKyBGRl9MQU1CREFfU0NBTEUgLyAyKSA+PgogICAgICAg
ICAgICAgICAgICBGRl9MQU1CREFfU0hJRlQ7CiB9CiAKQEAgLTIzOCwzNCArMjM4LDM0IEBAIHZv
aWQgZmZfd3JpdGVfcXVhbnRfbWF0cml4KFB1dEJpdENvbnRleHQgKnBiLCB1aW50MTZfdCAqbWF0
cml4KQogfQogCiAvKioKLSAqIGluaXQgcy0+Y3VyX3BpYy5xc2NhbGVfdGFibGUgZnJvbSBzLT5s
YW1iZGFfdGFibGUKKyAqIGluaXQgcy0+Yy5jdXJfcGljLnFzY2FsZV90YWJsZSBmcm9tIHMtPmxh
bWJkYV90YWJsZQogICovCi1zdGF0aWMgdm9pZCBpbml0X3FzY2FsZV90YWIoTXBlZ0VuY0NvbnRl
eHQgKnMpCitzdGF0aWMgdm9pZCBpbml0X3FzY2FsZV90YWIoTVBWRW5jQ29udGV4dCAqY29uc3Qg
cykKIHsKLSAgICBpbnQ4X3QgKiBjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jdXJfcGljLnFzY2Fs
ZV90YWJsZTsKKyAgICBpbnQ4X3QgKiBjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jLmN1cl9waWMu
cXNjYWxlX3RhYmxlOwogICAgIGludCBpOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHMtPm1iX251
bTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBsYW0gPSBzLT5sYW1iZGFfdGFibGVbcy0+
bWJfaW5kZXgyeHlbaV1dOworICAgIGZvciAoaSA9IDA7IGkgPCBzLT5jLm1iX251bTsgaSsrKSB7
CisgICAgICAgIHVuc2lnbmVkIGludCBsYW0gPSBzLT5sYW1iZGFfdGFibGVbcy0+Yy5tYl9pbmRl
eDJ4eVtpXV07CiAgICAgICAgIGludCBxcCA9IChsYW0gKiAxMzkgKyBGRl9MQU1CREFfU0NBTEUg
KiA2NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcpOwotICAgICAgICBxc2NhbGVfdGFibGVbcy0+
bWJfaW5kZXgyeHlbaV1dID0gYXZfY2xpcChxcCwgcy0+YXZjdHgtPnFtaW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmF2Y3R4LT5xbWF4KTsK
KyAgICAgICAgcXNjYWxlX3RhYmxlW3MtPmMubWJfaW5kZXgyeHlbaV1dID0gYXZfY2xpcChxcCwg
cy0+Yy5hdmN0eC0+cW1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5hdmN0eC0+cW1heCk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB1
cGRhdGVfZHVwbGljYXRlX2NvbnRleHRfYWZ0ZXJfbWUoTXBlZ0VuY0NvbnRleHQgKmRzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNcGVnRW5j
Q29udGV4dCAqc3JjKQorc3RhdGljIHZvaWQgdXBkYXRlX2R1cGxpY2F0ZV9jb250ZXh0X2FmdGVy
X21lKE1QVkVuY0NvbnRleHQgKmNvbnN0IGRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBNUFZFbmNDb250ZXh0ICpjb25zdCBzcmMpCiB7Ci0j
ZGVmaW5lIENPUFkoYSkgZHN0LT5hPSBzcmMtPmEKLSAgICBDT1BZKHBpY3RfdHlwZSk7Ci0gICAg
Q09QWShmX2NvZGUpOwotICAgIENPUFkoYl9jb2RlKTsKLSAgICBDT1BZKHFzY2FsZSk7Ci0gICAg
Q09QWShsYW1iZGEpOwotICAgIENPUFkobGFtYmRhMik7Ci0gICAgQ09QWShmcmFtZV9wcmVkX2Zy
YW1lX2RjdCk7IC8vIEZJWE1FIGRvbid0IHNldCBpbiBlbmNvZGVfaGVhZGVyCi0gICAgQ09QWShw
cm9ncmVzc2l2ZV9mcmFtZSk7ICAgIC8vIEZJWE1FIGRvbid0IHNldCBpbiBlbmNvZGVfaGVhZGVy
Ci0gICAgQ09QWShwYXJ0aXRpb25lZF9mcmFtZSk7ICAgIC8vIEZJWE1FIGRvbid0IHNldCBpbiBl
bmNvZGVfaGVhZGVyCisjZGVmaW5lIENPUFkoYSkgZHN0LT5hID0gc3JjLT5hCisgICAgQ09QWShj
LnBpY3RfdHlwZSk7CisgICAgQ09QWShjLmZfY29kZSk7CisgICAgQ09QWShjLmJfY29kZSk7Cisg
ICAgQ09QWShjLnFzY2FsZSk7CisgICAgQ09QWShjLmxhbWJkYSk7CisgICAgQ09QWShjLmxhbWJk
YTIpOworICAgIENPUFkoYy5mcmFtZV9wcmVkX2ZyYW1lX2RjdCk7IC8vIEZJWE1FIGRvbid0IHNl
dCBpbiBlbmNvZGVfaGVhZGVyCisgICAgQ09QWShjLnByb2dyZXNzaXZlX2ZyYW1lKTsgICAgLy8g
RklYTUUgZG9uJ3Qgc2V0IGluIGVuY29kZV9oZWFkZXIKKyAgICBDT1BZKGMucGFydGl0aW9uZWRf
ZnJhbWUpOyAgICAvLyBGSVhNRSBkb24ndCBzZXQgaW4gZW5jb2RlX2hlYWRlcgogI3VuZGVmIENP
UFkKIH0KIApAQCAtMjc2LDI2ICsyNzYsMjYgQEAgc3RhdGljIGF2X2NvbGQgdm9pZCBtcHZfZW5j
b2RlX2luaXRfc3RhdGljKHZvaWQpCiB9CiAKIC8qKgotICogU2V0IHRoZSBnaXZlbiBNcGVnRW5j
Q29udGV4dCB0byBkZWZhdWx0cyBmb3IgZW5jb2RpbmcuCisgKiBTZXQgdGhlIGdpdmVuIE1QVkVu
Y0NvbnRleHQgdG8gZGVmYXVsdHMgZm9yIGVuY29kaW5nLgogICovCiBzdGF0aWMgYXZfY29sZCB2
b2lkIG1wdl9lbmNvZGVfZGVmYXVsdHMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7Ci0g
ICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpj
b25zdCBzID0gJm0tPnM7CiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNlID0gQVZf
T05DRV9JTklUOwogCi0gICAgZmZfbXB2X2NvbW1vbl9kZWZhdWx0cyhzKTsKKyAgICBmZl9tcHZf
Y29tbW9uX2RlZmF1bHRzKCZzLT5jKTsKIAogICAgIGlmICghbS0+ZmNvZGVfdGFiKSB7CiAgICAg
ICAgIG0tPmZjb2RlX3RhYiA9IGRlZmF1bHRfZmNvZGVfdGFiICsgTUFYX01WOwogICAgICAgICBm
Zl90aHJlYWRfb25jZSgmaW5pdF9zdGF0aWNfb25jZSwgbXB2X2VuY29kZV9pbml0X3N0YXRpYyk7
CiAgICAgfQotICAgIGlmICghcy0+eV9kY19zY2FsZV90YWJsZSkgewotICAgICAgICBzLT55X2Rj
X3NjYWxlX3RhYmxlID0KLSAgICAgICAgcy0+Y19kY19zY2FsZV90YWJsZSA9IGZmX21wZWcxX2Rj
X3NjYWxlX3RhYmxlOworICAgIGlmICghcy0+Yy55X2RjX3NjYWxlX3RhYmxlKSB7CisgICAgICAg
IHMtPmMueV9kY19zY2FsZV90YWJsZSA9CisgICAgICAgIHMtPmMuY19kY19zY2FsZV90YWJsZSA9
IGZmX21wZWcxX2RjX3NjYWxlX3RhYmxlOwogICAgIH0KIH0KIAotYXZfY29sZCB2b2lkIGZmX2Rj
dF9lbmNvZGVfaW5pdChNcGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQgdm9pZCBmZl9kY3RfZW5j
b2RlX2luaXQoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKIHsKICAgICBzLT5kY3RfcXVhbnRpemUg
PSBkY3RfcXVhbnRpemVfYzsKICAgICBzLT5kZW5vaXNlX2RjdCAgPSBkZW5vaXNlX2RjdF9jOwpA
QCAtMzA2LDE5ICszMDYsMTkgQEAgYXZfY29sZCB2b2lkIGZmX2RjdF9lbmNvZGVfaW5pdChNcGVn
RW5jQ29udGV4dCAqcykKICAgICBmZl9kY3RfZW5jb2RlX2luaXRfeDg2KHMpOwogI2VuZGlmCiAK
LSAgICBpZiAocy0+YXZjdHgtPnRyZWxsaXMpCisgICAgaWYgKHMtPmMuYXZjdHgtPnRyZWxsaXMp
CiAgICAgICAgIHMtPmRjdF9xdWFudGl6ZSAgPSBkY3RfcXVhbnRpemVfdHJlbGxpc19jOwogfQog
CiBzdGF0aWMgYXZfY29sZCBpbnQgbWVfY21wX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0
IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3Qg
cyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBNRUNt
cENvbnRleHQgbWVjYzsKICAgICBtZV9jbXBfZnVuYyBtZV9jbXBbNl07CiAgICAgaW50IHJldDsK
IAogICAgIGZmX21lX2NtcF9pbml0KCZtZWNjLCBhdmN0eCk7Ci0gICAgcmV0ID0gZmZfbWVfaW5p
dCgmcy0+bWUsIGF2Y3R4LCAmbWVjYywgMSk7CisgICAgcmV0ID0gZmZfbWVfaW5pdCgmcy0+Yy5t
ZSwgYXZjdHgsICZtZWNjLCAxKTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJl
dDsKICAgICByZXQgPSBmZl9zZXRfY21wKCZtZWNjLCBtZV9jbXAsIG0tPmZyYW1lX3NraXBfY21w
LCAxKTsKQEAgLTM1NSw4ICszNTUsOCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgbWVfY21wX2luaXQo
TVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0eAogI2RlZmlu
ZSBBTExPQ1pfQVJSQVlTKHAsIG11bHQsIG51bWIpICgocCkgPSBhdl9jYWxsb2MobnVtYiwgbXVs
dCAqIHNpemVvZigqKHApKSkpCiBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9tYXRyaWNlcyhNUFZN
YWluRW5jQ29udGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogewotICAgIE1w
ZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7Ci0gICAgY29uc3QgaW50IG5iX21hdHJpY2Vz
ID0gMSArIChzLT5vdXRfZm9ybWF0ID09IEZNVF9NSlBFRykgKyAhbS0+aW50cmFfb25seTsKKyAg
ICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgY29uc3QgaW50IG5iX21hdHJp
Y2VzID0gMSArIChzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01KUEVHKSArICFtLT5pbnRyYV9vbmx5
OwogICAgIGNvbnN0IHVpbnQxNl90ICppbnRyYV9tYXRyaXgsICppbnRlcl9tYXRyaXg7CiAgICAg
aW50IHJldDsKIApAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X21h
dHJpY2VzKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29udGV4dCAqYXZjCiAg
ICAgICAgICFBTExPQ1pfQVJSQVlTKHMtPnFfaW50cmFfbWF0cml4MTYsIDMyLCBuYl9tYXRyaWNl
cykpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICBpZiAocy0+b3V0X2Zv
cm1hdCA9PSBGTVRfTUpQRUcpIHsKKyAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9NSlBF
RykgewogICAgICAgICBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXggICA9IHMtPnFfaW50cmFfbWF0
cml4ICAgKyAzMjsKICAgICAgICAgcy0+cV9jaHJvbWFfaW50cmFfbWF0cml4MTYgPSBzLT5xX2lu
dHJhX21hdHJpeDE2ICsgMzI7CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IHFfaW50ZXJfbWF0
cml4CkBAIC0zODAsMTEgKzM4MCwxMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9tYXRyaWNl
cyhNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2YwogICAgICAg
ICBzLT5xX2ludGVyX21hdHJpeDE2ID0gcy0+cV9pbnRyYV9tYXRyaXgxNiArIDMyOwogICAgIH0K
IAotICAgIGlmIChDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBzLT5jb2RlY19pZCA9PSBBVl9DT0RF
Q19JRF9NUEVHNCAmJgotICAgICAgICBzLT5tcGVnX3F1YW50KSB7CisgICAgaWYgKENPTkZJR19N
UEVHNF9FTkNPREVSICYmIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgJiYKKyAg
ICAgICAgcy0+Yy5tcGVnX3F1YW50KSB7CiAgICAgICAgIGludHJhX21hdHJpeCA9IGZmX21wZWc0
X2RlZmF1bHRfaW50cmFfbWF0cml4OwogICAgICAgICBpbnRlcl9tYXRyaXggPSBmZl9tcGVnNF9k
ZWZhdWx0X25vbl9pbnRyYV9tYXRyaXg7Ci0gICAgfSBlbHNlIGlmIChzLT5vdXRfZm9ybWF0ID09
IEZNVF9IMjYzIHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpIHsKKyAgICB9IGVsc2UgaWYg
KHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gy
NjEpIHsKICAgICAgICAgaW50cmFfbWF0cml4ID0KICAgICAgICAgaW50ZXJfbWF0cml4ID0gZmZf
bXBlZzFfZGVmYXVsdF9ub25faW50cmFfbWF0cml4OwogICAgIH0gZWxzZSB7CkBAIC0zOTksMTAg
KzM5OSwxMCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9tYXRyaWNlcyhNUFZNYWluRW5jQ29u
dGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2YwogCiAgICAgLyogaW5pdCBxIG1hdHJp
eCAqLwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7IGkrKykgewotICAgICAgICBpbnQgaiA9
IHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXTsKKyAgICAgICAgaW50IGogPSBzLT5jLmlkc3Au
aWRjdF9wZXJtdXRhdGlvbltpXTsKIAotICAgICAgICBzLT5pbnRyYV9tYXRyaXhbal0gPSBzLT5j
aHJvbWFfaW50cmFfbWF0cml4W2pdID0gaW50cmFfbWF0cml4W2ldOwotICAgICAgICBzLT5pbnRl
cl9tYXRyaXhbal0gPSBpbnRlcl9tYXRyaXhbaV07CisgICAgICAgIHMtPmMuaW50cmFfbWF0cml4
W2pdID0gcy0+Yy5jaHJvbWFfaW50cmFfbWF0cml4W2pdID0gaW50cmFfbWF0cml4W2ldOworICAg
ICAgICBzLT5jLmludGVyX21hdHJpeFtqXSA9IGludGVyX21hdHJpeFtpXTsKICAgICB9CiAKICAg
ICAvKiBwcmVjb21wdXRlIG1hdHJpeCAqLwpAQCAtNDExLDExICs0MTEsMTEgQEAgc3RhdGljIGF2
X2NvbGQgaW50IGluaXRfbWF0cmljZXMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIEFWQ29k
ZWNDb250ZXh0ICphdmMKICAgICAgICAgcmV0dXJuIHJldDsKIAogICAgIGZmX2NvbnZlcnRfbWF0
cml4KHMsIHMtPnFfaW50cmFfbWF0cml4LCBzLT5xX2ludHJhX21hdHJpeDE2LAotICAgICAgICAg
ICAgICAgICAgICAgIHMtPmludHJhX21hdHJpeCwgcy0+aW50cmFfcXVhbnRfYmlhcywgYXZjdHgt
PnFtaW4sCisgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRyYV9tYXRyaXgsIHMtPmludHJh
X3F1YW50X2JpYXMsIGF2Y3R4LT5xbWluLAogICAgICAgICAgICAgICAgICAgICAgIDMxLCAxKTsK
ICAgICBpZiAocy0+cV9pbnRlcl9tYXRyaXgpCiAgICAgICAgIGZmX2NvbnZlcnRfbWF0cml4KHMs
IHMtPnFfaW50ZXJfbWF0cml4LCBzLT5xX2ludGVyX21hdHJpeDE2LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5pbnRlcl9tYXRyaXgsIHMtPmludGVyX3F1YW50X2JpYXMsIGF2Y3R4LT5x
bWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmludGVyX21hdHJpeCwgcy0+aW50
ZXJfcXVhbnRfYmlhcywgYXZjdHgtPnFtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMx
LCAwKTsKIAogICAgIHJldHVybiAwOwpAQCAtNDIzLDcgKzQyMyw3IEBAIHN0YXRpYyBhdl9jb2xk
IGludCBpbml0X21hdHJpY2VzKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29u
dGV4dCAqYXZjCiAKIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0Nv
bnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKLSAgICBNcGVnRW5jQ29u
dGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+
czsKICAgICAvLyBBbGlnbiB0aGUgZm9sbG93aW5nIHBlci10aHJlYWQgYnVmZmVycyB0byBhdm9p
ZCBmYWxzZSBzaGFyaW5nLgogICAgIGVudW0gewogI2lmbmRlZiBfTVNDX1ZFUgpAQCAtNDMyLDEy
ICs0MzIsMTIgQEAgc3RhdGljIGF2X2NvbGQgaW50IGluaXRfYnVmZmVycyhNUFZNYWluRW5jQ29u
dGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2Y3QKICNlbHNlCiAgICAgICAgIEFMSUdO
ID0gMTI4LAogI2VuZGlmCi0gICAgICAgIE1FX01BUF9BTExPQ19TSVpFID0gRkZBTElHTigyICog
TUVfTUFQX1NJWkUgKiBzaXplb2YoKnMtPm1lLm1hcCksIEFMSUdOKSwKKyAgICAgICAgTUVfTUFQ
X0FMTE9DX1NJWkUgPSBGRkFMSUdOKDIgKiBNRV9NQVBfU0laRSAqIHNpemVvZigqcy0+Yy5tZS5t
YXApLCBBTElHTiksCiAgICAgICAgIERDVF9FUlJPUl9TSVpFICAgID0gRkZBTElHTigyICogc2l6
ZW9mKCpzLT5kY3RfZXJyb3Jfc3VtKSwgQUxJR04pLAogICAgIH07CiAgICAgc3RhdGljX2Fzc2Vy
dChGRk1BWChNRV9NQVBfQUxMT0NfU0laRSwgRENUX0VSUk9SX1NJWkUpICogTUFYX1RIUkVBRFMg
KyBBTElHTiAtIDEgPD0gU0laRV9NQVgsCiAgICAgICAgICAgICAgICAgICAiTmVlZCBjaGVja3Mg
Zm9yIHBvdGVudGlhbCBvdmVyZmxvdy4iKTsKLSAgICB1bnNpZ25lZCBuYl9zbGljZXMgPSBzLT5z
bGljZV9jb250ZXh0X2NvdW50LCBtdl90YWJsZV9zaXplLCBtYl9hcnJheV9zaXplOworICAgIHVu
c2lnbmVkIG5iX3NsaWNlcyA9IHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCwgbXZfdGFibGVfc2l6
ZSwgbWJfYXJyYXlfc2l6ZTsKICAgICBjaGFyICpkY3RfZXJyb3IgPSBOVUxMLCAqbWVfbWFwOwog
ICAgIGludCBoYXNfYl9mcmFtZXMgPSAhIW0tPm1heF9iX2ZyYW1lcywgbmJfbXZfdGFibGVzID0g
MSArIDUgKiBoYXNfYl9mcmFtZXM7CiAgICAgaW50MTZfdCAoKm12X3RhYmxlKVsyXTsKQEAgLTQ1
OCwxNiArNDU4LDE2IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVu
Y0NvbnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgbWVfbWFwICs9IEZG
QUxJR04oKHVpbnRwdHJfdCltZV9tYXAsIEFMSUdOKSAtICh1aW50cHRyX3QpbWVfbWFwOwogCiAg
ICAgLyogQWxsb2NhdGUgTUIgdHlwZSB0YWJsZSAqLwotICAgIG1iX2FycmF5X3NpemUgPSBzLT5t
Yl9zdHJpZGUgKiBzLT5tYl9oZWlnaHQ7CisgICAgbWJfYXJyYXlfc2l6ZSA9IHMtPmMubWJfc3Ry
aWRlICogcy0+Yy5tYl9oZWlnaHQ7CiAgICAgcy0+bWJfdHlwZSA9IGF2X2NhbGxvYyhtYl9hcnJh
eV9zaXplLCAzICogc2l6ZW9mKCpzLT5tYl90eXBlKSArIHNpemVvZigqcy0+bWJfbWVhbikpOwog
ICAgIGlmICghcy0+bWJfdHlwZSkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAg
ICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShzLT5sYW1iZGFfdGFibGUsIG1iX2FycmF5X3Np
emUpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCi0gICAgbXZfdGFibGVfc2l6
ZSA9IChzLT5tYl9oZWlnaHQgKyAyKSAqIHMtPm1iX3N0cmlkZSArIDE7Ci0gICAgaWYgKHMtPmNv
ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0gICAgICAgIChzLT5hdmN0eC0+ZmxhZ3Mg
JiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpKSB7CisgICAgbXZfdGFibGVfc2l6ZSA9IChz
LT5jLm1iX2hlaWdodCArIDIpICogcy0+Yy5tYl9zdHJpZGUgKyAxOworICAgIGlmIChzLT5jLmNv
ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CisgICAgICAgIChzLT5jLmF2Y3R4LT5mbGFn
cyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9NRSkpIHsKICAgICAgICAgbmJfbXZfdGFibGVz
ICs9IDggKiBoYXNfYl9mcmFtZXM7CiAgICAgICAgIGlmICghQUxMT0NaX0FSUkFZUyhzLT5wX2Zp
ZWxkX3NlbGVjdF90YWJsZVswXSwgMiAqICgyICsgNCAqIGhhc19iX2ZyYW1lcyksIG12X3RhYmxl
X3NpemUpKQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKQEAgLTQ3NywxMCAr
NDc3LDEwIEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgaWYgKCFtdl90YWJsZSkKICAg
ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICBtLT5tdl90YWJsZV9iYXNlID0gbXZf
dGFibGU7Ci0gICAgbXZfdGFibGUgKz0gcy0+bWJfc3RyaWRlICsgMTsKKyAgICBtdl90YWJsZSAr
PSBzLT5jLm1iX3N0cmlkZSArIDE7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmJf
c2xpY2VzOyArK2kpIHsKLSAgICAgICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMyID0gcy0+dGhy
ZWFkX2NvbnRleHRbaV07CisgICAgICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMyID0gcy0+Yy5l
bmNfY29udGV4dHNbaV07CiAgICAgICAgIGludDE2X3QgKCp0bXBfbXZfdGFibGUpWzJdID0gbXZf
dGFibGU7CiAKICAgICAgICAgaWYgKGRjdF9lcnJvcikgewpAQCAtNDk1LDggKzQ5NSw4IEBAIHN0
YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0s
IEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgICAgIHMyLT5tYl9tZWFuICAgICAgPSAodWludDhf
dCopKHMyLT5tYl92YXIgKyBtYl9hcnJheV9zaXplKTsKICAgICAgICAgczItPmxhbWJkYV90YWJs
ZSA9IHMtPmxhbWJkYV90YWJsZTsKIAotICAgICAgICBzMi0+bWUubWFwICAgICAgID0gKHVpbnQz
Ml90KiltZV9tYXA7Ci0gICAgICAgIHMyLT5tZS5zY29yZV9tYXAgPSBzMi0+bWUubWFwICsgTUVf
TUFQX1NJWkU7CisgICAgICAgIHMyLT5jLm1lLm1hcCAgICAgPSAodWludDMyX3QqKW1lX21hcDsK
KyAgICAgICAgczItPmMubWUuc2NvcmVfbWFwID0gczItPmMubWUubWFwICsgTUVfTUFQX1NJWkU7
CiAgICAgICAgIG1lX21hcCAgICAgICAgICArPSBNRV9NQVBfQUxMT0NfU0laRTsKIAogICAgICAg
ICBzMi0+cF9tdl90YWJsZSAgICAgICAgICAgID0gdG1wX212X3RhYmxlOwpAQCAtNTMyLDcgKzUz
Miw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRleHQg
KmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2Rl
X2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogewogICAgIE1QVk1haW5FbmNDb250ZXh0ICpj
b25zdCBtID0gYXZjdHgtPnByaXZfZGF0YTsKLSAgICBNcGVnRW5jQ29udGV4dCAgICAqY29uc3Qg
cyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgICAgKmNvbnN0IHMgPSAmbS0+czsKICAgICBB
VkNQQlByb3BlcnRpZXMgKmNwYl9wcm9wczsKICAgICBpbnQgaSwgcmV0OwogCkBAIC01NDEsMjQg
KzU0MSwyNCBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg
KmF2Y3R4KQogICAgIHN3aXRjaCAoYXZjdHgtPnBpeF9mbXQpIHsKICAgICBjYXNlIEFWX1BJWF9G
TVRfWVVWSjQ0NFA6CiAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFA6Ci0gICAgICAgIHMtPmNo
cm9tYV9mb3JtYXQgPSBDSFJPTUFfNDQ0OworICAgICAgICBzLT5jLmNocm9tYV9mb3JtYXQgPSBD
SFJPTUFfNDQ0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX1BJWF9GTVRfWVVWSjQyMlA6
CiAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMlA6Ci0gICAgICAgIHMtPmNocm9tYV9mb3JtYXQg
PSBDSFJPTUFfNDIyOworICAgICAgICBzLT5jLmNocm9tYV9mb3JtYXQgPSBDSFJPTUFfNDIyOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX1BJWF9GTVRfWVVWSjQyMFA6CiAgICAgY2FzZSBB
Vl9QSVhfRk1UX1lVVjQyMFA6CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcy0+Y2hyb21hX2Zvcm1h
dCA9IENIUk9NQV80MjA7CisgICAgICAgIHMtPmMuY2hyb21hX2Zvcm1hdCA9IENIUk9NQV80MjA7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxl
ID0gYXZfY2xpcChhdmN0eC0+Yml0c19wZXJfcmF3X3NhbXBsZSwgMCwgOCk7CiAKICAgICBtLT5i
aXRfcmF0ZSA9IGF2Y3R4LT5iaXRfcmF0ZTsKLSAgICBzLT53aWR0aCAgICA9IGF2Y3R4LT53aWR0
aDsKLSAgICBzLT5oZWlnaHQgICA9IGF2Y3R4LT5oZWlnaHQ7CisgICAgcy0+Yy53aWR0aCAgICA9
IGF2Y3R4LT53aWR0aDsKKyAgICBzLT5jLmhlaWdodCAgID0gYXZjdHgtPmhlaWdodDsKICAgICBp
ZiAoYXZjdHgtPmdvcF9zaXplID4gNjAwICYmCiAgICAgICAgIGF2Y3R4LT5zdHJpY3Rfc3RkX2Nv
bXBsaWFuY2UgPiBGRl9DT01QTElBTkNFX0VYUEVSSU1FTlRBTCkgewogICAgICAgICBhdl9sb2co
YXZjdHgsIEFWX0xPR19XQVJOSU5HLApAQCAtNTY3LDcgKzU2Nyw3IEBAIGF2X2NvbGQgaW50IGZm
X21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIGF2Y3R4LT5n
b3Bfc2l6ZSA9IDYwMDsKICAgICB9CiAgICAgbS0+Z29wX3NpemUgICAgID0gYXZjdHgtPmdvcF9z
aXplOwotICAgIHMtPmF2Y3R4ICAgICAgICA9IGF2Y3R4OworICAgIHMtPmMuYXZjdHggICAgICAg
ID0gYXZjdHg7CiAgICAgaWYgKGF2Y3R4LT5tYXhfYl9mcmFtZXMgPiBNUFZFTkNfTUFYX0JfRlJB
TUVTKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVG9vIG1hbnkgQi1m
cmFtZXMgcmVxdWVzdGVkLCBtYXhpbXVtICIKICAgICAgICAgICAgICAgICJpcyAiIEFWX1NUUklO
R0lGWShNUFZFTkNfTUFYX0JfRlJBTUVTKSAiLlxuIik7CkBAIC01NzgsMzAgKzU3OCwzMCBAQCBh
dl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAg
ICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KICAgICBtLT5tYXhfYl9mcmFtZXMg
PSBhdmN0eC0+bWF4X2JfZnJhbWVzOwotICAgIHMtPmNvZGVjX2lkICAgICA9IGF2Y3R4LT5jb2Rl
Yy0+aWQ7CisgICAgcy0+Yy5jb2RlY19pZCAgICAgPSBhdmN0eC0+Y29kZWMtPmlkOwogICAgIGlm
IChtLT5tYXhfYl9mcmFtZXMgJiYgIShhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NP
REVDX0NBUF9ERUxBWSkpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJC
LWZyYW1lcyBub3Qgc3VwcG9ydGVkIGJ5IGNvZGVjXG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJS
T1IoRUlOVkFMKTsKICAgICB9CiAKLSAgICBzLT5xdWFydGVyX3NhbXBsZSAgICAgPSAoYXZjdHgt
PmZsYWdzICYgQVZfQ09ERUNfRkxBR19RUEVMKSAhPSAwOworICAgIHMtPmMucXVhcnRlcl9zYW1w
bGUgICAgID0gKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUVBFTCkgIT0gMDsKICAgICBz
LT5ydHBfbW9kZSAgICAgICAgICAgPSAhIXMtPnJ0cF9wYXlsb2FkX3NpemU7Ci0gICAgcy0+aW50
cmFfZGNfcHJlY2lzaW9uID0gYXZjdHgtPmludHJhX2RjX3ByZWNpc2lvbjsKKyAgICBzLT5jLmlu
dHJhX2RjX3ByZWNpc2lvbiA9IGF2Y3R4LT5pbnRyYV9kY19wcmVjaXNpb247CiAKICAgICAvLyB3
b3JrYXJvdW5kIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBob3cgYXBwbGljYXRpb25zIHNwZWNp
ZnkgZGMgcHJlY2lzaW9uCi0gICAgaWYgKHMtPmludHJhX2RjX3ByZWNpc2lvbiA8IDApIHsKLSAg
ICAgICAgcy0+aW50cmFfZGNfcHJlY2lzaW9uICs9IDg7Ci0gICAgfSBlbHNlIGlmIChzLT5pbnRy
YV9kY19wcmVjaXNpb24gPj0gOCkKLSAgICAgICAgcy0+aW50cmFfZGNfcHJlY2lzaW9uIC09IDg7
CisgICAgaWYgKHMtPmMuaW50cmFfZGNfcHJlY2lzaW9uIDwgMCkgeworICAgICAgICBzLT5jLmlu
dHJhX2RjX3ByZWNpc2lvbiArPSA4OworICAgIH0gZWxzZSBpZiAocy0+Yy5pbnRyYV9kY19wcmVj
aXNpb24gPj0gOCkKKyAgICAgICAgcy0+Yy5pbnRyYV9kY19wcmVjaXNpb24gLT0gODsKIAotICAg
IGlmIChzLT5pbnRyYV9kY19wcmVjaXNpb24gPCAwKSB7CisgICAgaWYgKHMtPmMuaW50cmFfZGNf
cHJlY2lzaW9uIDwgMCkgewogICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwKICAg
ICAgICAgICAgICAgICAiaW50cmEgZGMgcHJlY2lzaW9uIG11c3QgYmUgcG9zaXRpdmUsIG5vdGUg
c29tZSBhcHBsaWNhdGlvbnMgdXNlIgogICAgICAgICAgICAgICAgICIgMCBhbmQgc29tZSA4IGFz
IGJhc2UgbWVhbmluZyA4Yml0LCB0aGUgdmFsdWUgbXVzdCBub3QgYmUgc21hbGxlciB0aGFuIHRo
YXRcbiIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAotICAgIGlm
IChzLT5pbnRyYV9kY19wcmVjaXNpb24gPiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lE
X01QRUcyVklERU8gPyAzIDogMCkpIHsKKyAgICBpZiAocy0+Yy5pbnRyYV9kY19wcmVjaXNpb24g
PiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gPyAzIDogMCkpIHsK
ICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJpbnRyYSBkYyBwcmVjaXNpb24g
dG9vIGxhcmdlXG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9CkBA
IC02MjYsNyArNjI2LDcgQEAgYXZfY29sZCBpbnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWND
b250ZXh0ICphdmN0eCkKICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+bXB2X2ZsYWdzICYg
RkZfTVBWX0ZMQUdfUVBfUkQpKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgIW0tPmZpeGVk
X3FzY2FsZTsKIAotICAgIHMtPmxvb3BfZmlsdGVyID0gISEoYXZjdHgtPmZsYWdzICYgQVZfQ09E
RUNfRkxBR19MT09QX0ZJTFRFUik7CisgICAgcy0+Yy5sb29wX2ZpbHRlciA9ICEhKGF2Y3R4LT5m
bGFncyAmIEFWX0NPREVDX0ZMQUdfTE9PUF9GSUxURVIpOwogCiAgICAgaWYgKGF2Y3R4LT5yY19t
YXhfcmF0ZSAmJiAhYXZjdHgtPnJjX2J1ZmZlcl9zaXplKSB7CiAgICAgICAgIHN3aXRjaChhdmN0
eC0+Y29kZWNfaWQpIHsKQEAgLTcwMCwyNyArNzAwLDI3IEBAIGF2X2NvbGQgaW50IGZmX21wdl9l
bmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICAgICBhdmN0eC0+Yml0
X3JhdGVfdG9sZXJhbmNlID0gSU5UX01BWDsKICAgICB9CiAKLSAgICBpZiAoKGF2Y3R4LT5mbGFn
cyAmIEFWX0NPREVDX0ZMQUdfNE1WKSAmJiBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVH
NCAmJgotICAgICAgICBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjYzICYmIHMtPmNvZGVj
X2lkICE9IEFWX0NPREVDX0lEX0gyNjNQICYmCi0gICAgICAgIHMtPmNvZGVjX2lkICE9IEFWX0NP
REVDX0lEX0ZMVjEpIHsKKyAgICBpZiAoKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfNE1W
KSAmJiBzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0ICYmCisgICAgICAgIHMtPmMu
Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2MyAmJiBzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVD
X0lEX0gyNjNQICYmCisgICAgICAgIHMtPmMuY29kZWNfaWQgIT0gQVZfQ09ERUNfSURfRkxWMSkg
ewogICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIjRNViBub3Qgc3VwcG9ydGVk
IGJ5IGNvZGVjXG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9CiAK
LSAgICBpZiAocy0+b2JtYyAmJiBhdmN0eC0+bWJfZGVjaXNpb24gIT0gRkZfTUJfREVDSVNJT05f
U0lNUExFKSB7CisgICAgaWYgKHMtPmMub2JtYyAmJiBhdmN0eC0+bWJfZGVjaXNpb24gIT0gRkZf
TUJfREVDSVNJT05fU0lNUExFKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S
LAogICAgICAgICAgICAgICAgIk9CTUMgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBzaW1wbGUgbWIg
ZGVjaXNpb25cbiIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAot
ICAgIGlmIChzLT5xdWFydGVyX3NhbXBsZSAmJiBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9N
UEVHNCkgeworICAgIGlmIChzLT5jLnF1YXJ0ZXJfc2FtcGxlICYmIHMtPmMuY29kZWNfaWQgIT0g
QVZfQ09ERUNfSURfTVBFRzQpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is
ICJxcGVsIG5vdCBzdXBwb3J0ZWQgYnkgY29kZWNcbiIpOwogICAgICAgICByZXR1cm4gQVZFUlJP
UihFSU5WQUwpOwogICAgIH0KIAotICAgIGlmICgocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf
TVBFRzQgfHwKLSAgICAgICAgIHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjMgIHx8Ci0g
ICAgICAgICBzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCkgJiYKKyAgICBpZiAoKHMt
PmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKKyAgICAgICAgIHMtPmMuY29kZWNf
aWQgPT0gQVZfQ09ERUNfSURfSDI2MyAgfHwKKyAgICAgICAgIHMtPmMuY29kZWNfaWQgPT0gQVZf
Q09ERUNfSURfSDI2M1ApICYmCiAgICAgICAgIChhdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5u
dW0gPiAyNTUgfHwKICAgICAgICAgIGF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbiA+IDI1
NSkpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfV0FSTklORywKQEAgLTczMCw0NCAr
NzMwLDQ0IEBAIGF2X2NvbGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAq
YXZjdHgpCiAgICAgICAgICAgICAgICAgICAgYXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVt
LCAgYXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuLCAyNTUpOwogICAgIH0KIAotICAgIGlm
ICgocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2MyAgfHwKLSAgICAgICAgIHMtPmNvZGVj
X2lkID09IEFWX0NPREVDX0lEX0gyNjNQKSAmJgorICAgIGlmICgocy0+Yy5jb2RlY19pZCA9PSBB
Vl9DT0RFQ19JRF9IMjYzICB8fAorICAgICAgICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19J
RF9IMjYzUCkgJiYKICAgICAgICAgKGF2Y3R4LT53aWR0aCAgPiAyMDQ4IHx8CiAgICAgICAgICBh
dmN0eC0+aGVpZ2h0ID4gMTE1MiApKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VS
Uk9SLCAiSC4yNjMgZG9lcyBub3Qgc3VwcG9ydCByZXNvbHV0aW9ucyBhYm92ZSAyMDQ4eDExNTJc
biIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KLSAgICBpZiAocy0+
Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRkxWMSAmJgorICAgIGlmIChzLT5jLmNvZGVjX2lkID09
IEFWX0NPREVDX0lEX0ZMVjEgJiYKICAgICAgICAgKGF2Y3R4LT53aWR0aCAgPiA2NTUzNSB8fAog
ICAgICAgICAgYXZjdHgtPmhlaWdodCA+IDY1NTM1ICkpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4
LCBBVl9MT0dfRVJST1IsICJGTFYgZG9lcyBub3Qgc3VwcG9ydCByZXNvbHV0aW9ucyBhYm92ZSAx
NmJpdFxuIik7CiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQotICAgIGlm
ICgocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2MyAgfHwKLSAgICAgICAgIHMtPmNvZGVj
X2lkID09IEFWX0NPREVDX0lEX0gyNjNQIHx8Ci0gICAgICAgICBzLT5jb2RlY19pZCA9PSBBVl9D
T0RFQ19JRF9SVjIwKSAmJgorICAgIGlmICgocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I
MjYzICB8fAorICAgICAgICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCB8fAor
ICAgICAgICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9SVjIwKSAmJgogICAgICAgICAo
KGF2Y3R4LT53aWR0aCAmMykgfHwKICAgICAgICAgIChhdmN0eC0+aGVpZ2h0JjMpICkpIHsKICAg
ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJ3aWR0aCBhbmQgaGVpZ2h0IG11c3Qg
YmUgYSBtdWx0aXBsZSBvZiA0XG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK
ICAgICB9CiAKLSAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfUlYxMCAmJgorICAg
IGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1JWMTAgJiYKICAgICAgICAgKGF2Y3R4
LT53aWR0aCAmMTUgfHwKICAgICAgICAgIGF2Y3R4LT5oZWlnaHQmMTUgKSkgewogICAgICAgICBh
dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIndpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBhIG11
bHRpcGxlIG9mIDE2XG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9
CiAKLSAgICBpZiAoKHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1dNVjEgfHwKLSAgICAgICAg
IHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1dNVjIpICYmCisgICAgaWYgKChzLT5jLmNvZGVj
X2lkID09IEFWX0NPREVDX0lEX1dNVjEgfHwKKyAgICAgICAgIHMtPmMuY29kZWNfaWQgPT0gQVZf
Q09ERUNfSURfV01WMikgJiYKICAgICAgICAgIGF2Y3R4LT53aWR0aCAmIDEpIHsKICAgICAgICAg
YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJ3aWR0aCBtdXN0IGJlIG11bHRpcGxlIG9mIDJc
biIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAogICAgIGlmICgo
YXZjdHgtPmZsYWdzICYgKEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QgfCBBVl9DT0RFQ19G
TEFHX0lOVEVSTEFDRURfTUUpKSAmJgotICAgICAgICBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19J
RF9NUEVHNCAmJiBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7CisgICAg
ICAgIHMtPmMuY29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgcy0+Yy5jb2RlY19pZCAh
PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H
X0VSUk9SLCAiaW50ZXJsYWNpbmcgbm90IHN1cHBvcnRlZCBieSBjb2RlY1xuIik7CiAgICAgICAg
IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQpAQCAtNzkyLDcgKzc5Miw3IEBAIGF2X2Nv
bGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgfQog
CiAgICAgaWYgKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfTE9XX0RFTEFZKSB7Ci0gICAg
ICAgIGlmIChzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPICYmCisgICAgICAg
IGlmIChzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUcyVklERU8gJiYKICAgICAgICAg
ICAgIGF2Y3R4LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPj0gRkZfQ09NUExJQU5DRV9OT1JNQUwp
IHsKICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLAogICAgICAgICAgICAg
ICAgICAgICJsb3cgZGVsYXkgZm9yY2luZyBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgbXBlZzIsICIK
QEAgLTgyNiw3ICs4MjYsNyBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2Rl
Y0NvbnRleHQgKmF2Y3R4KQogICAgICAgICAvL3JldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAo
cy0+bXBlZ19xdWFudCB8fCBzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPIHx8
IHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gfHwgcy0+Y29kZWNfaWQgPT0g
QVZfQ09ERUNfSURfTUpQRUcgfHwgcy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQU1WIHx8IHMt
PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1NQRUVESFEpIHsKKyAgICBpZiAocy0+Yy5tcGVnX3F1
YW50IHx8IHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTyB8fCBzLT5jLmNv
ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gfHwgcy0+Yy5jb2RlY19pZCA9PSBBVl9D
T0RFQ19JRF9NSlBFRyB8fCBzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FNViB8fCBzLT5j
LmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1NQRUVESFEpIHsKICAgICAgICAgLy8gKGEgKyB4ICog
MyAvIDgpIC8geAogICAgICAgICBzLT5pbnRyYV9xdWFudF9iaWFzID0gMyA8PCAoUVVBTlRfQklB
U19TSElGVCAtIDMpOwogICAgICAgICBzLT5pbnRlcl9xdWFudF9iaWFzID0gMDsKQEAgLTg0OSwx
NDggKzg0OSwxNDggQEAgYXZfY29sZCBpbnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWNDb250
ZXh0ICphdmN0eCkKICAgICAgICAgcy0+cnRwX21vZGUgICA9IDE7CiAgICAgICAgIC8qIGZhbGx0
aHJvdWdoICovCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPOgotICAgICAgICBzLT5v
dXRfZm9ybWF0ID0gRk1UX01QRUcxOwotICAgICAgICBzLT5sb3dfZGVsYXkgID0gISEoYXZjdHgt
PmZsYWdzICYgQVZfQ09ERUNfRkxBR19MT1dfREVMQVkpOwotICAgICAgICBhdmN0eC0+ZGVsYXkg
ID0gcy0+bG93X2RlbGF5ID8gMCA6IChtLT5tYXhfYl9mcmFtZXMgKyAxKTsKKyAgICAgICAgcy0+
Yy5vdXRfZm9ybWF0ID0gRk1UX01QRUcxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgPSAhIShh
dmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0xPV19ERUxBWSk7CisgICAgICAgIGF2Y3R4LT5k
ZWxheSAgPSBzLT5jLmxvd19kZWxheSA/IDAgOiAobS0+bWF4X2JfZnJhbWVzICsgMSk7CiAgICAg
ICAgIGZmX21wZWcxX2VuY29kZV9pbml0KHMpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lm
IENPTkZJR19NSlBFR19FTkNPREVSIHx8IENPTkZJR19BTVZfRU5DT0RFUgogICAgIGNhc2UgQVZf
Q09ERUNfSURfTUpQRUc6CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9BTVY6Ci0gICAgICAgIHMtPm91
dF9mb3JtYXQgPSBGTVRfTUpQRUc7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCA9IEZNVF9NSlBF
RzsKICAgICAgICAgbS0+aW50cmFfb25seSA9IDE7IC8qIGZvcmNlIGludHJhIG9ubHkgZm9yIGpw
ZWcgKi8KICAgICAgICAgYXZjdHgtPmRlbGF5ID0gMDsKLSAgICAgICAgcy0+bG93X2RlbGF5ID0g
MTsKKyAgICAgICAgcy0+Yy5sb3dfZGVsYXkgPSAxOwogICAgICAgICBicmVhazsKICNlbmRpZgog
ICAgIGNhc2UgQVZfQ09ERUNfSURfU1BFRURIUToKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCA9IEZN
VF9TUEVFREhROworICAgICAgICBzLT5jLm91dF9mb3JtYXQgPSBGTVRfU1BFRURIUTsKICAgICAg
ICAgbS0+aW50cmFfb25seSA9IDE7IC8qIGZvcmNlIGludHJhIG9ubHkgZm9yIFNIUSAqLwogICAg
ICAgICBhdmN0eC0+ZGVsYXkgPSAwOwotICAgICAgICBzLT5sb3dfZGVsYXkgPSAxOworICAgICAg
ICBzLT5jLmxvd19kZWxheSA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNf
SURfSDI2MToKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCA9IEZNVF9IMjYxOworICAgICAgICBzLT5j
Lm91dF9mb3JtYXQgPSBGTVRfSDI2MTsKICAgICAgICAgYXZjdHgtPmRlbGF5ICA9IDA7Ci0gICAg
ICAgIHMtPmxvd19kZWxheSAgPSAxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgPSAxOwogICAg
ICAgICBzLT5ydHBfbW9kZSAgID0gMDsgLyogU2xpY2VkIGVuY29kaW5nIG5vdCBzdXBwb3J0ZWQg
Ki8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9IMjYzOgogICAgICAgICBp
ZiAoIUNPTkZJR19IMjYzX0VOQ09ERVIpCiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FTkNP
REVSX05PVF9GT1VORDsKICAgICAgICAgaWYgKGZmX21hdGNoXzJ1aW50MTYoZmZfaDI2M19mb3Jt
YXQsIEZGX0FSUkFZX0VMRU1TKGZmX2gyNjNfZm9ybWF0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcy0+d2lkdGgsIHMtPmhlaWdodCkgPT0gOCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5jLndpZHRoLCBzLT5jLmhlaWdodCkgPT0gOCkgewogICAgICAgICAgICAg
YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgIlRoZSBzcGVj
aWZpZWQgcGljdHVyZSBzaXplIG9mICVkeCVkIGlzIG5vdCB2YWxpZCBmb3IgIgogICAgICAgICAg
ICAgICAgICAgICJ0aGUgSC4yNjMgY29kZWMuXG5WYWxpZCBzaXplcyBhcmUgMTI4eDk2LCAxNzZ4
MTQ0LCAiCiAgICAgICAgICAgICAgICAgICAgIjM1MngyODgsIDcwNHg1NzYsIGFuZCAxNDA4eDEx
NTIuICIKLSAgICAgICAgICAgICAgICAgICAiVHJ5IEguMjYzKy5cbiIsIHMtPndpZHRoLCBzLT5o
ZWlnaHQpOworICAgICAgICAgICAgICAgICAgICJUcnkgSC4yNjMrLlxuIiwgcy0+Yy53aWR0aCwg
cy0+Yy5oZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAg
ICAgfQotICAgICAgICBzLT5vdXRfZm9ybWF0ID0gRk1UX0gyNjM7CisgICAgICAgIHMtPmMub3V0
X2Zvcm1hdCA9IEZNVF9IMjYzOwogICAgICAgICBhdmN0eC0+ZGVsYXkgID0gMDsKLSAgICAgICAg
cy0+bG93X2RlbGF5ICA9IDE7CisgICAgICAgIHMtPmMubG93X2RlbGF5ICA9IDE7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfSDI2M1A6Ci0gICAgICAgIHMtPm91dF9mb3Jt
YXQgPSBGTVRfSDI2MzsKLSAgICAgICAgcy0+aDI2M19wbHVzICA9IDE7CisgICAgICAgIHMtPmMu
b3V0X2Zvcm1hdCA9IEZNVF9IMjYzOworICAgICAgICBzLT5jLmgyNjNfcGx1cyAgPSAxOwogICAg
ICAgICAvKiBGeCAqLwotICAgICAgICBzLT5oMjYzX2FpYyAgICAgICAgPSAoYXZjdHgtPmZsYWdz
ICYgQVZfQ09ERUNfRkxBR19BQ19QUkVEKSA/IDEgOiAwOwotICAgICAgICBzLT5tb2RpZmllZF9x
dWFudCAgPSBzLT5oMjYzX2FpYzsKLSAgICAgICAgcy0+bG9vcF9maWx0ZXIgICAgID0gKGF2Y3R4
LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfTE9PUF9GSUxURVIpID8gMSA6IDA7Ci0gICAgICAgIHMt
PnVucmVzdHJpY3RlZF9tdiA9IHMtPm9ibWMgfHwgcy0+bG9vcF9maWx0ZXIgfHwgcy0+dW12cGx1
czsKLSAgICAgICAgcy0+ZmxpcGZsb3Bfcm91bmRpbmcgPSAxOworICAgICAgICBzLT5jLmgyNjNf
YWljICAgICAgICA9IChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0FDX1BSRUQpID8gMSA6
IDA7CisgICAgICAgIHMtPmMubW9kaWZpZWRfcXVhbnQgID0gcy0+Yy5oMjYzX2FpYzsKKyAgICAg
ICAgcy0+Yy5sb29wX2ZpbHRlciAgICAgPSAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19M
T09QX0ZJTFRFUikgPyAxIDogMDsKKyAgICAgICAgcy0+Yy51bnJlc3RyaWN0ZWRfbXYgPSBzLT5j
Lm9ibWMgfHwgcy0+Yy5sb29wX2ZpbHRlciB8fCBzLT5jLnVtdnBsdXM7CisgICAgICAgIHMtPmMu
ZmxpcGZsb3Bfcm91bmRpbmcgPSAxOwogCiAgICAgICAgIC8qIC9GeCAqLwogICAgICAgICAvKiBU
aGVzZSBhcmUganVzdCB0byBiZSBzdXJlICovCiAgICAgICAgIGF2Y3R4LT5kZWxheSA9IDA7Ci0g
ICAgICAgIHMtPmxvd19kZWxheSA9IDE7CisgICAgICAgIHMtPmMubG93X2RlbGF5ID0gMTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9GTFYxOgotICAgICAgICBzLT5vdXRf
Zm9ybWF0ICAgICAgPSBGTVRfSDI2MzsKLSAgICAgICAgcy0+aDI2M19mbHYgICAgICAgID0gMjsg
LyogZm9ybWF0ID0gMTsgMTEtYml0IGNvZGVzICovCi0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9t
diA9IDE7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7CisgICAgICAg
IHMtPmMuaDI2M19mbHYgICAgICAgID0gMjsgLyogZm9ybWF0ID0gMTsgMTEtYml0IGNvZGVzICov
CisgICAgICAgIHMtPmMudW5yZXN0cmljdGVkX212ID0gMTsKICAgICAgICAgcy0+cnRwX21vZGUg
ID0gMDsgLyogZG9uJ3QgYWxsb3cgR09CICovCiAgICAgICAgIGF2Y3R4LT5kZWxheSA9IDA7Ci0g
ICAgICAgIHMtPmxvd19kZWxheSA9IDE7CisgICAgICAgIHMtPmMubG93X2RlbGF5ID0gMTsKICAg
ICAgICAgYnJlYWs7CiAjaWYgQ09ORklHX1JWMTBfRU5DT0RFUgogICAgIGNhc2UgQVZfQ09ERUNf
SURfUlYxMDoKICAgICAgICAgbS0+ZW5jb2RlX3BpY3R1cmVfaGVhZGVyID0gZmZfcnYxMF9lbmNv
ZGVfcGljdHVyZV9oZWFkZXI7Ci0gICAgICAgIHMtPm91dF9mb3JtYXQgPSBGTVRfSDI2MzsKKyAg
ICAgICAgcy0+Yy5vdXRfZm9ybWF0ID0gRk1UX0gyNjM7CiAgICAgICAgIGF2Y3R4LT5kZWxheSAg
PSAwOwotICAgICAgICBzLT5sb3dfZGVsYXkgID0gMTsKKyAgICAgICAgcy0+Yy5sb3dfZGVsYXkg
ID0gMTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBDT05GSUdfUlYyMF9FTkNPREVSCiAg
ICAgY2FzZSBBVl9DT0RFQ19JRF9SVjIwOgogICAgICAgICBtLT5lbmNvZGVfcGljdHVyZV9oZWFk
ZXIgPSBmZl9ydjIwX2VuY29kZV9waWN0dXJlX2hlYWRlcjsKLSAgICAgICAgcy0+b3V0X2Zvcm1h
dCAgICAgID0gRk1UX0gyNjM7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gy
NjM7CiAgICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICA9IDA7Ci0gICAgICAgIHMtPmxvd19kZWxh
eSAgICAgICA9IDE7Ci0gICAgICAgIHMtPm1vZGlmaWVkX3F1YW50ICA9IDE7Ci0gICAgICAgIHMt
PmgyNjNfYWljICAgICAgICA9IDE7Ci0gICAgICAgIHMtPmgyNjNfcGx1cyAgICAgICA9IDE7Ci0g
ICAgICAgIHMtPmxvb3BfZmlsdGVyICAgICA9IDE7Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9t
diA9IDA7CisgICAgICAgIHMtPmMubG93X2RlbGF5ICAgICAgID0gMTsKKyAgICAgICAgcy0+Yy5t
b2RpZmllZF9xdWFudCAgPSAxOworICAgICAgICBzLT5jLmgyNjNfYWljICAgICAgICA9IDE7Cisg
ICAgICAgIHMtPmMuaDI2M19wbHVzICAgICAgID0gMTsKKyAgICAgICAgcy0+Yy5sb29wX2ZpbHRl
ciAgICAgPSAxOworICAgICAgICBzLT5jLnVucmVzdHJpY3RlZF9tdiA9IDA7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHNDoKLSAgICAgICAgcy0+b3V0
X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7Ci0gICAgICAgIHMtPmgyNjNfcHJlZCAgICAgICA9IDE7
Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9tdiA9IDE7Ci0gICAgICAgIHMtPmZsaXBmbG9wX3Jv
dW5kaW5nID0gMTsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAgID0gbS0+bWF4X2JfZnJhbWVz
ID8gMCA6IDE7Ci0gICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICA9IHMtPmxvd19kZWxheSA/IDAg
OiAobS0+bWF4X2JfZnJhbWVzICsgMSk7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgID0g
Rk1UX0gyNjM7CisgICAgICAgIHMtPmMuaDI2M19wcmVkICAgICAgID0gMTsKKyAgICAgICAgcy0+
Yy51bnJlc3RyaWN0ZWRfbXYgPSAxOworICAgICAgICBzLT5jLmZsaXBmbG9wX3JvdW5kaW5nID0g
MTsKKyAgICAgICAgcy0+Yy5sb3dfZGVsYXkgICAgICAgPSBtLT5tYXhfYl9mcmFtZXMgPyAwIDog
MTsKKyAgICAgICAgYXZjdHgtPmRlbGF5ICAgICAgID0gcy0+Yy5sb3dfZGVsYXkgPyAwIDogKG0t
Pm1heF9iX2ZyYW1lcyArIDEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX0NPREVDX0lE
X01TTVBFRzRWMjoKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7Ci0gICAg
ICAgIHMtPmgyNjNfcHJlZCAgICAgICA9IDE7Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9tdiA9
IDE7Ci0gICAgICAgIHMtPm1zbXBlZzRfdmVyc2lvbiA9IE1TTVA0X1YyOworICAgICAgICBzLT5j
Lm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOworICAgICAgICBzLT5jLmgyNjNfcHJlZCAgICAg
ICA9IDE7CisgICAgICAgIHMtPmMudW5yZXN0cmljdGVkX212ID0gMTsKKyAgICAgICAgcy0+Yy5t
c21wZWc0X3ZlcnNpb24gPSBNU01QNF9WMjsKICAgICAgICAgYXZjdHgtPmRlbGF5ICAgICAgID0g
MDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAgID0gMTsKKyAgICAgICAgcy0+Yy5sb3dfZGVs
YXkgICAgICAgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX0NPREVDX0lEX01TTVBF
RzRWMzoKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCAgICAgICAgPSBGTVRfSDI2MzsKLSAgICAgICAg
cy0+aDI2M19wcmVkICAgICAgICAgPSAxOwotICAgICAgICBzLT51bnJlc3RyaWN0ZWRfbXYgICA9
IDE7Ci0gICAgICAgIHMtPm1zbXBlZzRfdmVyc2lvbiAgID0gTVNNUDRfVjM7Ci0gICAgICAgIHMt
PmZsaXBmbG9wX3JvdW5kaW5nID0gMTsKKyAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ICAgICAgICA9
IEZNVF9IMjYzOworICAgICAgICBzLT5jLmgyNjNfcHJlZCAgICAgICAgID0gMTsKKyAgICAgICAg
cy0+Yy51bnJlc3RyaWN0ZWRfbXYgICA9IDE7CisgICAgICAgIHMtPmMubXNtcGVnNF92ZXJzaW9u
ICAgPSBNU01QNF9WMzsKKyAgICAgICAgcy0+Yy5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CiAgICAg
ICAgIGF2Y3R4LT5kZWxheSAgICAgICAgID0gMDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAg
ICAgPSAxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgICAgICAgID0gMTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9XTVYxOgotICAgICAgICBzLT5vdXRfZm9ybWF0ICAg
ICAgICA9IEZNVF9IMjYzOwotICAgICAgICBzLT5oMjYzX3ByZWQgICAgICAgICA9IDE7Ci0gICAg
ICAgIHMtPnVucmVzdHJpY3RlZF9tdiAgID0gMTsKLSAgICAgICAgcy0+bXNtcGVnNF92ZXJzaW9u
ICAgPSBNU01QNF9XTVYxOwotICAgICAgICBzLT5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CisgICAg
ICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgICAgPSBGTVRfSDI2MzsKKyAgICAgICAgcy0+Yy5oMjYz
X3ByZWQgICAgICAgICA9IDE7CisgICAgICAgIHMtPmMudW5yZXN0cmljdGVkX212ICAgPSAxOwor
ICAgICAgICBzLT5jLm1zbXBlZzRfdmVyc2lvbiAgID0gTVNNUDRfV01WMTsKKyAgICAgICAgcy0+
Yy5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CiAgICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICAgID0g
MDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAgICAgPSAxOworICAgICAgICBzLT5jLmxvd19k
ZWxheSAgICAgICAgID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9X
TVYyOgotICAgICAgICBzLT5vdXRfZm9ybWF0ICAgICAgICA9IEZNVF9IMjYzOwotICAgICAgICBz
LT5oMjYzX3ByZWQgICAgICAgICA9IDE7Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9tdiAgID0g
MTsKLSAgICAgICAgcy0+bXNtcGVnNF92ZXJzaW9uICAgPSBNU01QNF9XTVYyOwotICAgICAgICBz
LT5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgICAg
PSBGTVRfSDI2MzsKKyAgICAgICAgcy0+Yy5oMjYzX3ByZWQgICAgICAgICA9IDE7CisgICAgICAg
IHMtPmMudW5yZXN0cmljdGVkX212ICAgPSAxOworICAgICAgICBzLT5jLm1zbXBlZzRfdmVyc2lv
biAgID0gTVNNUDRfV01WMjsKKyAgICAgICAgcy0+Yy5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CiAg
ICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICAgID0gMDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAg
ICAgICAgPSAxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgICAgICAgID0gMTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAg
ICB9CiAKLSAgICBhdmN0eC0+aGFzX2JfZnJhbWVzID0gIXMtPmxvd19kZWxheTsKKyAgICBhdmN0
eC0+aGFzX2JfZnJhbWVzID0gIXMtPmMubG93X2RlbGF5OwogCi0gICAgcy0+ZW5jb2RpbmcgPSAx
OworICAgIHMtPmMuZW5jb2RpbmcgPSAxOwogCi0gICAgcy0+cHJvZ3Jlc3NpdmVfZnJhbWUgICAg
PQotICAgIHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlID0gIShhdmN0eC0+ZmxhZ3MgJiAoQVZfQ09E
RUNfRkxBR19JTlRFUkxBQ0VEX0RDVCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmFsdGVybmF0ZV9zY2FuKTsKKyAgICBzLT5jLnBy
b2dyZXNzaXZlX2ZyYW1lICAgID0KKyAgICBzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlID0gIShh
dmN0eC0+ZmxhZ3MgJiAoQVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX0RDVCB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0NPREVDX0ZMQUdfSU5U
RVJMQUNFRF9NRSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hbHRl
cm5hdGVfc2Nhbik7CiAKICAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QU05S
IHx8IGF2Y3R4LT5tYl9kZWNpc2lvbiA9PSBGRl9NQl9ERUNJU0lPTl9SRCB8fAogICAgICAgICBt
LT5mcmFtZV9za2lwX3RocmVzaG9sZCB8fCBtLT5mcmFtZV9za2lwX2ZhY3RvcikgewpAQCAtMTAw
OSw4ICsxMDA5LDEwIEBAIGF2X2NvbGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29u
dGV4dCAqYXZjdHgpCiAgICAgICAgIG0tPmxtaW4gPSBtLT5sbWF4OwogICAgIH0KIAotICAgIC8q
IGluaXQgKi8KLSAgICBmZl9tcHZfaWRjdF9pbml0KHMpOworICAgIC8qIGZmX21wdl9jb21tb25f
aW5pdCgpIHdpbGwgY29weSAobWVtZHVwKSB0aGUgY29udGVudHMgbWFpbiBzbGljZQorICAgICAq
IHRvIHRoZSBzbGljZSBjb250ZXh0cywgc28gd2UgaW5pdGlhbGl6ZSB2YXJpb3VzIGZpZWxkcyBv
ZiBpdAorICAgICAqIGJlZm9yZSBjYWxsaW5nIGZmX21wdl9jb21tb25faW5pdCgpLiAqLworICAg
IGZmX21wdl9pZGN0X2luaXQoJnMtPmMpOwogICAgIGZmX2ZkY3Rkc3BfaW5pdCgmcy0+ZmRzcCwg
YXZjdHgpOwogICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0KCZzLT5tcHZlbmNkc3AsIGF2Y3R4
KTsKICAgICBmZl9waXhibG9ja2RzcF9pbml0KCZzLT5wZHNwLCBhdmN0eCk7CkBAIC0xMDIwLDcg
KzEwMjIsNyBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg
KmF2Y3R4KQogCiAgICAgaWYgKCEoYXZjdHgtPnN0YXRzX291dCA9IGF2X21hbGxvY3ooMjU2KSkg
ICAgICAgICAgICAgICB8fAogICAgICAgICAhKHMtPm5ld19waWMgPSBhdl9mcmFtZV9hbGxvYygp
KSB8fAotICAgICAgICAhKHMtPnBpY3R1cmVfcG9vbCA9IGZmX21wdl9hbGxvY19waWNfcG9vbCgw
KSkpCisgICAgICAgICEocy0+Yy5waWN0dXJlX3Bvb2wgPSBmZl9tcHZfYWxsb2NfcGljX3Bvb2wo
MCkpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCiAgICAgcmV0ID0gaW5pdF9t
YXRyaWNlcyhtLCBhdmN0eCk7CkBAIC0xMDI5LDM1ICsxMDMxLDM2IEBAIGF2X2NvbGQgaW50IGZm
X21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAKICAgICBmZl9kY3RfZW5j
b2RlX2luaXQocyk7CiAKLSAgICBpZiAocy0+bXBlZ19xdWFudCB8fCBzLT5jb2RlY19pZCA9PSBB
Vl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludHJh
ID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50
aXplX2ludGVyID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXI7Ci0gICAgfSBlbHNlIGlm
IChzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjEp
IHsKLSAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSBzLT5kY3RfdW5xdWFudGl6ZV9o
MjYzX2ludHJhOwotICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRlciA9IHMtPmRjdF91bnF1
YW50aXplX2gyNjNfaW50ZXI7CisgICAgaWYgKHMtPmMubXBlZ19xdWFudCB8fCBzLT5jLmNvZGVj
X2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8pIHsKKyAgICAgICAgcy0+Yy5kY3RfdW5xdWFu
dGl6ZV9pbnRyYSA9IHMtPmMuZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7CisgICAgICAgIHMt
PmMuZGN0X3VucXVhbnRpemVfaW50ZXIgPSBzLT5jLmRjdF91bnF1YW50aXplX21wZWcyX2ludGVy
OworICAgIH0gZWxzZSBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0
X2Zvcm1hdCA9PSBGTVRfSDI2MSkgeworICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludHJh
ID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhOworICAgICAgICBzLT5jLmRjdF91bnF1
YW50aXplX2ludGVyID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludHJhID0gcy0+ZGN0X3VucXVhbnRpemVf
bXBlZzFfaW50cmE7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ZGN0X3Vu
cXVhbnRpemVfbXBlZzFfaW50ZXI7CisgICAgICAgIHMtPmMuZGN0X3VucXVhbnRpemVfaW50cmEg
PSBzLT5jLmRjdF91bnF1YW50aXplX21wZWcxX2ludHJhOworICAgICAgICBzLT5jLmRjdF91bnF1
YW50aXplX2ludGVyID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlcjsKICAgICB9CiAK
LSAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUiAmJiBzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYz
KSB7CisgICAgaWYgKENPTkZJR19IMjYzX0VOQ09ERVIgJiYgcy0+Yy5vdXRfZm9ybWF0ID09IEZN
VF9IMjYzKSB7CiAgICAgICAgIGZmX2gyNjNfZW5jb2RlX2luaXQobSk7CiAjaWYgQ09ORklHX01T
TVBFRzRFTkMKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQp
CisgICAgICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQpCiAgICAg
ICAgICAgICBmZl9tc21wZWc0X2VuY29kZV9pbml0KG0pOwogI2VuZGlmCiAgICAgfQogCi0gICAg
cmV0ID0gZmZfbXB2X2NvbW1vbl9pbml0KHMpOworICAgIHMtPmMuc2xpY2VfY3R4X3NpemUgPSBz
aXplb2YoKnMpOworICAgIHJldCA9IGZmX21wdl9jb21tb25faW5pdCgmcy0+Yyk7CiAgICAgaWYg
KHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICBpZiAocy0+c2xpY2VfY29udGV4
dF9jb3VudCA+IDEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5zbGljZV9jb250
ZXh0X2NvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHMtPnRocmVhZF9jb250ZXh0W2ldLT5ydHBf
bW9kZSA9IDE7CisgICAgaWYgKHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCA+IDEpIHsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5jLnNsaWNlX2NvbnRleHRfY291bnQ7ICsraSkgewor
ICAgICAgICAgICAgcy0+Yy5lbmNfY29udGV4dHNbaV0tPnJ0cF9tb2RlID0gMTsKIAogICAgICAg
ICAgICAgaWYgKGF2Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCkKLSAgICAgICAg
ICAgICAgICBzLT50aHJlYWRfY29udGV4dFtpXS0+aDI2M19zbGljZV9zdHJ1Y3R1cmVkID0gMTsK
KyAgICAgICAgICAgICAgICBzLT5jLmVuY19jb250ZXh0c1tpXS0+Yy5oMjYzX3NsaWNlX3N0cnVj
dHVyZWQgPSAxOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDc2LDggKzEwNzksOCBAQCBhdl9j
b2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAg
ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKICAgICAgICAgICAgIG0tPnRtcF9m
cmFtZXNbaV0tPmZvcm1hdCA9IEFWX1BJWF9GTVRfWVVWNDIwUDsKLSAgICAgICAgICAgIG0tPnRt
cF9mcmFtZXNbaV0tPndpZHRoICA9IHMtPndpZHRoICA+PiBtLT5icmRfc2NhbGU7Ci0gICAgICAg
ICAgICBtLT50bXBfZnJhbWVzW2ldLT5oZWlnaHQgPSBzLT5oZWlnaHQgPj4gbS0+YnJkX3NjYWxl
OworICAgICAgICAgICAgbS0+dG1wX2ZyYW1lc1tpXS0+d2lkdGggID0gcy0+Yy53aWR0aCAgPj4g
bS0+YnJkX3NjYWxlOworICAgICAgICAgICAgbS0+dG1wX2ZyYW1lc1tpXS0+aGVpZ2h0ID0gcy0+
Yy5oZWlnaHQgPj4gbS0+YnJkX3NjYWxlOwogCiAgICAgICAgICAgICByZXQgPSBhdl9mcmFtZV9n
ZXRfYnVmZmVyKG0tPnRtcF9mcmFtZXNbaV0sIDApOwogICAgICAgICAgICAgaWYgKHJldCA8IDAp
CkBAIC0xMDk5LDEyICsxMTAyLDEyIEBAIGF2X2NvbGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChB
VkNvZGVjQ29udGV4dCAqYXZjdHgpCiBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2VuZChBVkNv
ZGVjQ29udGV4dCAqYXZjdHgpCiB7CiAgICAgTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0gPSBh
dmN0eC0+cHJpdl9kYXRhOwotICAgIE1wZWdFbmNDb250ZXh0ICAgICpjb25zdCBzID0gJm0tPnM7
CisgICAgTVBWRW5jQ29udGV4dCAgICAqY29uc3QgcyA9ICZtLT5zOwogCiAgICAgZmZfcmF0ZV9j
b250cm9sX3VuaW5pdCgmbS0+cmNfY29udGV4dCk7CiAKLSAgICBmZl9tcHZfY29tbW9uX2VuZChz
KTsKLSAgICBhdl9yZWZzdHJ1Y3RfcG9vbF91bmluaXQoJnMtPnBpY3R1cmVfcG9vbCk7CisgICAg
ZmZfbXB2X2NvbW1vbl9lbmQoJnMtPmMpOworICAgIGF2X3JlZnN0cnVjdF9wb29sX3VuaW5pdCgm
cy0+Yy5waWN0dXJlX3Bvb2wpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNUFZFTkNfTUFY
X0JfRlJBTUVTICsgMTsgaSsrKSB7CiAgICAgICAgIGF2X3JlZnN0cnVjdF91bnJlZigmbS0+aW5w
dXRfcGljdHVyZVtpXSk7CkBAIC0xMTMzLDg4ICsxMTM2LDg4IEBAIGF2X2NvbGQgaW50IGZmX21w
dl9lbmNvZGVfZW5kKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIH0KIAogLyogcHV0IGJsb2NrW10g
dG8gZGVzdFtdICovCi1zdGF0aWMgaW5saW5lIHZvaWQgcHV0X2RjdChNcGVnRW5jQ29udGV4dCAq
cywKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRfZGN0KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IGksIHVpbnQ4X3Qg
KmRlc3QsIGludCBsaW5lX3NpemUsIGludCBxc2NhbGUpCiB7Ci0gICAgcy0+ZGN0X3VucXVhbnRp
emVfaW50cmEocywgYmxvY2ssIGksIHFzY2FsZSk7Ci0gICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0
LCBsaW5lX3NpemUsIGJsb2NrKTsKKyAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludHJhKCZzLT5j
LCBibG9jaywgaSwgcXNjYWxlKTsKKyAgICBzLT5jLmlkc3AuaWRjdF9wdXQoZGVzdCwgbGluZV9z
aXplLCBibG9jayk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfZGVxdWFudF9kY3QoTXBl
Z0VuY0NvbnRleHQgKnMsCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2RlcXVhbnRfZGN0KE1QVkVu
Y0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpi
bG9jaywgaW50IGksIHVpbnQ4X3QgKmRlc3QsIGludCBsaW5lX3NpemUsIGludCBxc2NhbGUpCiB7
Ci0gICAgaWYgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkgewotICAgICAgICBzLT5kY3Rf
dW5xdWFudGl6ZV9pbnRlcihzLCBibG9jaywgaSwgcXNjYWxlKTsKKyAgICBpZiAocy0+Yy5ibG9j
a19sYXN0X2luZGV4W2ldID49IDApIHsKKyAgICAgICAgcy0+Yy5kY3RfdW5xdWFudGl6ZV9pbnRl
cigmcy0+YywgYmxvY2ssIGksIHFzY2FsZSk7CiAKLSAgICAgICAgcy0+aWRzcC5pZGN0X2FkZChk
ZXN0LCBsaW5lX3NpemUsIGJsb2NrKTsKKyAgICAgICAgcy0+Yy5pZHNwLmlkY3RfYWRkKGRlc3Qs
IGxpbmVfc2l6ZSwgYmxvY2spOwogICAgIH0KIH0KIAogLyoqCiAgKiBQZXJmb3JtcyBkZXF1YW50
aXphdGlvbiBhbmQgSURDVCAoaWYgbmVjZXNzYXJ5KQogICovCi1zdGF0aWMgdm9pZCBtcHZfcmVj
b25zdHJ1Y3RfbWIoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSkKK3N0
YXRpYyB2b2lkIG1wdl9yZWNvbnN0cnVjdF9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQx
Nl90IGJsb2NrWzEyXVs2NF0pCiB7Ci0gICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVH
X0RDVF9DT0VGRikgeworICAgIGlmIChzLT5jLmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX0RDVF9D
T0VGRikgewogICAgICAgIC8qIHByaW50IERDVCBjb2VmZmljaWVudHMgKi8KLSAgICAgICBhdl9s
b2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywgIkRDVCBjb2VmZnMgb2YgTUIgYXQgJWR4JWQ6XG4i
LCBzLT5tYl94LCBzLT5tYl95KTsKKyAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0RF
QlVHLCAiRENUIGNvZWZmcyBvZiBNQiBhdCAlZHglZDpcbiIsIHMtPmMubWJfeCwgcy0+Yy5tYl95
KTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykgewogICAgICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IDY0OyBqKyspIHsKLSAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0
eCwgQVZfTE9HX0RFQlVHLCAiJTVkIiwKLSAgICAgICAgICAgICAgICAgICAgICBibG9ja1tpXVtz
LT5pZHNwLmlkY3RfcGVybXV0YXRpb25bal1dKTsKKyAgICAgICAgICAgICAgIGF2X2xvZyhzLT5j
LmF2Y3R4LCBBVl9MT0dfREVCVUcsICIlNWQiLAorICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
W2ldW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2pdXSk7CiAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfREVCVUcsICJcbiIpOworICAgICAgICAgICBh
dl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0RFQlVHLCAiXG4iKTsKICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKCgxIDw8IHMtPnBpY3RfdHlwZSkgJiBzLT5mcmFtZV9yZWNvbnN0cnVjdGlvbl9i
aXRmaWVsZCkgewotICAgICAgICB1aW50OF90ICpkZXN0X3kgPSBzLT5kZXN0WzBdLCAqZGVzdF9j
YiA9IHMtPmRlc3RbMV0sICpkZXN0X2NyID0gcy0+ZGVzdFsyXTsKKyAgICBpZiAoKDEgPDwgcy0+
Yy5waWN0X3R5cGUpICYgcy0+ZnJhbWVfcmVjb25zdHJ1Y3Rpb25fYml0ZmllbGQpIHsKKyAgICAg
ICAgdWludDhfdCAqZGVzdF95ID0gcy0+Yy5kZXN0WzBdLCAqZGVzdF9jYiA9IHMtPmMuZGVzdFsx
XSwgKmRlc3RfY3IgPSBzLT5jLmRlc3RbMl07CiAgICAgICAgIGludCBkY3RfbGluZXNpemUsIGRj
dF9vZmZzZXQ7Ci0gICAgICAgIGNvbnN0IGludCBsaW5lc2l6ZSAgID0gcy0+Y3VyX3BpYy5saW5l
c2l6ZVswXTsKLSAgICAgICAgY29uc3QgaW50IHV2bGluZXNpemUgPSBzLT5jdXJfcGljLmxpbmVz
aXplWzFdOworICAgICAgICBjb25zdCBpbnQgbGluZXNpemUgICA9IHMtPmMuY3VyX3BpYy5saW5l
c2l6ZVswXTsKKyAgICAgICAgY29uc3QgaW50IHV2bGluZXNpemUgPSBzLT5jLmN1cl9waWMubGlu
ZXNpemVbMV07CiAgICAgICAgIGNvbnN0IGludCBibG9ja19zaXplID0gODsKIAotICAgICAgICBk
Y3RfbGluZXNpemUgPSBsaW5lc2l6ZSA8PCBzLT5pbnRlcmxhY2VkX2RjdDsKLSAgICAgICAgZGN0
X29mZnNldCAgID0gcy0+aW50ZXJsYWNlZF9kY3QgPyBsaW5lc2l6ZSA6IGxpbmVzaXplICogYmxv
Y2tfc2l6ZTsKKyAgICAgICAgZGN0X2xpbmVzaXplID0gbGluZXNpemUgPDwgcy0+Yy5pbnRlcmxh
Y2VkX2RjdDsKKyAgICAgICAgZGN0X29mZnNldCAgID0gcy0+Yy5pbnRlcmxhY2VkX2RjdCA/IGxp
bmVzaXplIDogbGluZXNpemUgKiBibG9ja19zaXplOwogCi0gICAgICAgIGlmICghcy0+bWJfaW50
cmEpIHsKKyAgICAgICAgaWYgKCFzLT5jLm1iX2ludHJhKSB7CiAgICAgICAgICAgICAvKiBObyBN
QywgYXMgdGhhdCB3YXMgYWxyZWFkeSBkb25lIG90aGVyd2lzZSAqLwotICAgICAgICAgICAgYWRk
X2RlcXVhbnRfZGN0KHMsIGJsb2NrWzBdLCAwLCBkZXN0X3kgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgYWRkX2RlcXVhbnRf
ZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0X3kgICAgICAgICAgICAgICsgYmxvY2tfc2l6ZSwgZGN0
X2xpbmVzaXplLCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJs
b2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICAgICAgICAgICAgICwgZGN0X2xpbmVzaXpl
LCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzNdLCAz
LCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5xc2Nh
bGUpOwotCi0gICAgICAgICAgICBpZiAoIUNPTkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZsYWdz
ICYgQVZfQ09ERUNfRkxBR19HUkFZKSkgewotICAgICAgICAgICAgICAgIGlmIChzLT5jaHJvbWFf
eV9zaGlmdCkgewotICAgICAgICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tb
NF0sIDQsIGRlc3RfY2IsIHV2bGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwotICAgICAgICAg
ICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsIHV2bGlu
ZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOworICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMs
IGJsb2NrWzBdLCAwLCBkZXN0X3kgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVz
aXplLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tb
MV0sIDEsIGRlc3RfeSAgICAgICAgICAgICAgKyBibG9ja19zaXplLCBkY3RfbGluZXNpemUsIHMt
PmMucXNjYWxlKTsKKyAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1syXSwgMiwg
ZGVzdF95ICsgZGN0X29mZnNldCAgICAgICAgICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+Yy5xc2Nh
bGUpOworICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzNdLCAzLCBkZXN0X3kg
KyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7CisK
KyAgICAgICAgICAgIGlmICghQ09ORklHX0dSQVkgfHwgIShzLT5jLmF2Y3R4LT5mbGFncyAmIEFW
X0NPREVDX0ZMQUdfR1JBWSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5jaHJvbWFfeV9z
aGlmdCkgeworICAgICAgICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNF0s
IDQsIGRlc3RfY2IsIHV2bGluZXNpemUsIHMtPmMuY2hyb21hX3FzY2FsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgdXZsaW5l
c2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBkY3RfbGluZXNpemUgPj49IDE7CiAgICAgICAgICAgICAgICAgICAg
IGRjdF9vZmZzZXQgICA+Pj0gMTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0
KHMsIGJsb2NrWzRdLCA0LCBkZXN0X2NiLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5j
aHJvbWFfcXNjYWxlKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJs
b2NrWzVdLCA1LCBkZXN0X2NyLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFf
cXNjYWxlKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzZd
LCA2LCBkZXN0X2NiICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxl
KTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzddLCA3LCBk
ZXN0X2NyICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzRdLCA0LCBkZXN0X2Ni
LCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jLmNocm9tYV9xc2NhbGUpOworICAgICAg
ICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsICAg
ICAgICAgICAgICBkY3RfbGluZXNpemUsIHMtPmMuY2hyb21hX3FzY2FsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s2XSwgNiwgZGVzdF9jYiArIGRjdF9v
ZmZzZXQsIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzddLCA3LCBkZXN0X2NyICsgZGN0X29mZnNl
dCwgZGN0X2xpbmVzaXplLCBzLT5jLmNocm9tYV9xc2NhbGUpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIGRjdCBvbmx5
IGluIGludHJhIGJsb2NrICovCi0gICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzBdLCAwLCBk
ZXN0X3kgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUp
OwotICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1sxXSwgMSwgZGVzdF95ICAgICAgICAgICAg
ICArIGJsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKLSAgICAgICAgICAgIHB1
dF9kY3QocywgYmxvY2tbMl0sIDIsIGRlc3RfeSArIGRjdF9vZmZzZXQgICAgICAgICAgICAgLCBk
Y3RfbGluZXNpemUsIHMtPnFzY2FsZSk7Ci0gICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzNd
LCAzLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5x
c2NhbGUpOwotCi0gICAgICAgICAgICBpZiAoIUNPTkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZs
YWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSkgewotICAgICAgICAgICAgICAgIGlmIChzLT5jaHJv
bWFfeV9zaGlmdCkgewotICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzRdLCA0
LCBkZXN0X2NiLCB1dmxpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHV0X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgdXZsaW5lc2l6ZSwgcy0+Y2hy
b21hX3FzY2FsZSk7CisgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzBdLCAwLCBkZXN0X3kg
ICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7Cisg
ICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0X3kgICAgICAgICAgICAgICsg
YmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICBwdXRf
ZGN0KHMsIGJsb2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICAgICAgICAgICAgICwgZGN0
X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzNd
LCAzLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5j
LnFzY2FsZSk7CisKKyAgICAgICAgICAgIGlmICghQ09ORklHX0dSQVkgfHwgIShzLT5jLmF2Y3R4
LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+
Yy5jaHJvbWFfeV9zaGlmdCkgeworICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2Nr
WzRdLCA0LCBkZXN0X2NiLCB1dmxpbmVzaXplLCBzLT5jLmNocm9tYV9xc2NhbGUpOworICAgICAg
ICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzVdLCA1LCBkZXN0X2NyLCB1dmxpbmVzaXpl
LCBzLT5jLmNocm9tYV9xc2NhbGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIGRjdF9vZmZzZXQgICA+Pj0gMTsKICAgICAgICAgICAgICAgICAgICAgZGN0
X2xpbmVzaXplID4+PSAxOwotICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzRd
LCA0LCBkZXN0X2NiLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxl
KTsKLSAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwg
ICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1dF9kY3QocywgYmxvY2tbNl0sIDYsIGRlc3RfY2IgKyBkY3Rfb2Zmc2V0LCBk
Y3RfbGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwotICAgICAgICAgICAgICAgICAgICBwdXRf
ZGN0KHMsIGJsb2NrWzddLCA3LCBkZXN0X2NyICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBz
LT5jaHJvbWFfcXNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s0
XSwgNCwgZGVzdF9jYiwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNj
YWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9j
ciwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s2XSwgNiwgZGVzdF9jYiArIGRjdF9vZmZz
ZXQsIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHV0X2RjdChzLCBibG9ja1s3XSwgNywgZGVzdF9jciArIGRjdF9vZmZzZXQsIGRjdF9saW5l
c2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTEyMzUsMTQgKzEyMzgsMTQgQEAgc3RhdGljIGludCBnZXRfc2Fl
KGNvbnN0IHVpbnQ4X3QgKnNyYywgaW50IHJlZiwgaW50IHN0cmlkZSkKICAgICByZXR1cm4gYWNj
OwogfQogCi1zdGF0aWMgaW50IGdldF9pbnRyYV9jb3VudChNcGVnRW5jQ29udGV4dCAqcywgY29u
c3QgdWludDhfdCAqc3JjLAorc3RhdGljIGludCBnZXRfaW50cmFfY291bnQoTVBWRW5jQ29udGV4
dCAqY29uc3QgcywgY29uc3QgdWludDhfdCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqcmVmLCBpbnQgc3RyaWRlKQogewogICAgIGludCB4LCB5LCB3LCBo
OwogICAgIGludCBhY2MgPSAwOwogCi0gICAgdyA9IHMtPndpZHRoICAmIH4xNTsKLSAgICBoID0g
cy0+aGVpZ2h0ICYgfjE1OworICAgIHcgPSBzLT5jLndpZHRoICAmIH4xNTsKKyAgICBoID0gcy0+
Yy5oZWlnaHQgJiB+MTU7CiAKICAgICBmb3IgKHkgPSAwOyB5IDwgaDsgeSArPSAxNikgewogICAg
ICAgICBmb3IgKHggPSAwOyB4IDwgdzsgeCArPSAxNikgewpAQCAtMTI2Miw5ICsxMjY1LDkgQEAg
c3RhdGljIGludCBnZXRfaW50cmFfY291bnQoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4
X3QgKnNyYywKICAqIEFsbG9jYXRlcyBuZXcgYnVmZmVycyBmb3IgYW4gQVZGcmFtZSBhbmQgY29w
aWVzIHRoZSBwcm9wZXJ0aWVzCiAgKiBmcm9tIGFub3RoZXIgQVZGcmFtZS4KICAqLwotc3RhdGlj
IGludCBwcmVwYXJlX3BpY3R1cmUoTXBlZ0VuY0NvbnRleHQgKnMsIEFWRnJhbWUgKmYsIGNvbnN0
IEFWRnJhbWUgKnByb3BzX2ZyYW1lKQorc3RhdGljIGludCBwcmVwYXJlX3BpY3R1cmUoTVBWRW5j
Q29udGV4dCAqY29uc3QgcywgQVZGcmFtZSAqZiwgY29uc3QgQVZGcmFtZSAqcHJvcHNfZnJhbWUp
CiB7Ci0gICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ID0gcy0+YXZjdHg7CisgICAgQVZDb2RlY0Nv
bnRleHQgKmF2Y3R4ID0gcy0+Yy5hdmN0eDsKICAgICBpbnQgcmV0OwogCiAgICAgZi0+d2lkdGgg
ID0gYXZjdHgtPndpZHRoICArIDIgKiBFREdFX1dJRFRIOwpAQCAtMTI3NCwxNCArMTI3NywxNCBA
QCBzdGF0aWMgaW50IHByZXBhcmVfcGljdHVyZShNcGVnRW5jQ29udGV4dCAqcywgQVZGcmFtZSAq
ZiwgY29uc3QgQVZGcmFtZSAqcHJvcHNfZgogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1
cm4gcmV0OwogCi0gICAgcmV0ID0gZmZfbXB2X3BpY19jaGVja19saW5lc2l6ZShhdmN0eCwgZiwg
JnMtPmxpbmVzaXplLCAmcy0+dXZsaW5lc2l6ZSk7CisgICAgcmV0ID0gZmZfbXB2X3BpY19jaGVj
a19saW5lc2l6ZShhdmN0eCwgZiwgJnMtPmMubGluZXNpemUsICZzLT5jLnV2bGluZXNpemUpOwog
ICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGYtPmRhdGFbaV07IGkrKykgewotICAgICAgICBpbnQgb2Zmc2V0ID0gKEVER0VfV0lEVEgg
Pj4gKGkgPyBzLT5jaHJvbWFfeV9zaGlmdCA6IDApKSAqCisgICAgICAgIGludCBvZmZzZXQgPSAo
RURHRV9XSURUSCA+PiAoaSA/IHMtPmMuY2hyb21hX3lfc2hpZnQgOiAwKSkgKgogICAgICAgICAg
ICAgICAgICAgICAgZi0+bGluZXNpemVbaV0gKwotICAgICAgICAgICAgICAgICAgICAgKEVER0Vf
V0lEVEggPj4gKGkgPyBzLT5jaHJvbWFfeF9zaGlmdCA6IDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgIChFREdFX1dJRFRIID4+IChpID8gcy0+Yy5jaHJvbWFfeF9zaGlmdCA6IDApKTsKICAgICAg
ICAgZi0+ZGF0YVtpXSArPSBvZmZzZXQ7CiAgICAgfQogICAgIGYtPndpZHRoICA9IGF2Y3R4LT53
aWR0aDsKQEAgLTEyOTYsMTIgKzEyOTksMTIgQEAgc3RhdGljIGludCBwcmVwYXJlX3BpY3R1cmUo
TXBlZ0VuY0NvbnRleHQgKnMsIEFWRnJhbWUgKmYsIGNvbnN0IEFWRnJhbWUgKnByb3BzX2YKIAog
c3RhdGljIGludCBsb2FkX2lucHV0X3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0s
IGNvbnN0IEFWRnJhbWUgKnBpY19hcmcpCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMg
PSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgTVBWUGlj
dHVyZSAqcGljID0gTlVMTDsKICAgICBpbnQ2NF90IHB0czsKICAgICBpbnQgZGlzcGxheV9waWN0
dXJlX251bWJlciA9IDAsIHJldDsKICAgICBpbnQgZW5jb2RpbmdfZGVsYXkgPSBtLT5tYXhfYl9m
cmFtZXMgPyBtLT5tYXhfYl9mcmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAocy0+bG93X2RlbGF5ID8gMCA6IDEpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IChzLT5jLmxvd19kZWxheSA/IDAgOiAxKTsKICAgICBpbnQg
Zmx1c2hfb2Zmc2V0ID0gMTsKICAgICBpbnQgZGlyZWN0ID0gMTsKIApAQCAtMTMxNiwxMyArMTMx
OSwxMyBAQCBzdGF0aWMgaW50IGxvYWRfaW5wdXRfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAq
Y29uc3QgbSwgY29uc3QgQVZGcmFtZSAqcGljX2FyZwogICAgICAgICAgICAgICAgIGludDY0X3Qg
bGFzdCA9IG0tPnVzZXJfc3BlY2lmaWVkX3B0czsKIAogICAgICAgICAgICAgICAgIGlmIChwdHMg
PD0gbGFzdCkgewotICAgICAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19F
UlJPUiwKKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJP
UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHB0cyAoJSJQUklkNjQiKSA8
PSBsYXN0ICglIlBSSWQ2NCIpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRzLCBs
YXN0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoIXMtPmxvd19kZWxheSAmJiBkaXNw
bGF5X3BpY3R1cmVfbnVtYmVyID09IDEpCisgICAgICAgICAgICAgICAgaWYgKCFzLT5jLmxvd19k
ZWxheSAmJiBkaXNwbGF5X3BpY3R1cmVfbnVtYmVyID09IDEpCiAgICAgICAgICAgICAgICAgICAg
IG0tPmR0c19kZWx0YSA9IHB0cyAtIGxhc3Q7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
LT51c2VyX3NwZWNpZmllZF9wdHMgPSBwdHM7CkBAIC0xMzMwLDcgKzEzMzMsNyBAQCBzdGF0aWMg
aW50IGxvYWRfaW5wdXRfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3Qg
QVZGcmFtZSAqcGljX2FyZwogICAgICAgICAgICAgaWYgKG0tPnVzZXJfc3BlY2lmaWVkX3B0cyAh
PSBBVl9OT1BUU19WQUxVRSkgewogICAgICAgICAgICAgICAgIG0tPnVzZXJfc3BlY2lmaWVkX3B0
cyA9CiAgICAgICAgICAgICAgICAgcHRzID0gbS0+dXNlcl9zcGVjaWZpZWRfcHRzICsgMTsKLSAg
ICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19JTkZPLAorICAgICAgICAgICAg
ICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfSU5GTywKICAgICAgICAgICAgICAgICAgICAg
ICAgIldhcm5pbmc6IEFWRnJhbWUucHRzPT8gdHJ5aW5nIHRvIGd1ZXNzICglIlBSSWQ2NCIpXG4i
LAogICAgICAgICAgICAgICAgICAgICAgICBwdHMpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTEzMzgsMjEgKzEzNDEsMjEgQEAgc3RhdGljIGludCBsb2FkX2lucHV0X3BpY3R1cmUoTVBWTWFp
bkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWRnJhbWUgKnBpY19hcmcKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChwaWNfYXJnLT5saW5lc2l6ZVswXSAhPSBzLT5s
aW5lc2l6ZSB8fAotICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMV0gIT0gcy0+dXZsaW5l
c2l6ZSB8fAotICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMl0gIT0gcy0+dXZsaW5lc2l6
ZSkKKyAgICAgICAgaWYgKHBpY19hcmctPmxpbmVzaXplWzBdICE9IHMtPmMubGluZXNpemUgfHwK
KyAgICAgICAgICAgIHBpY19hcmctPmxpbmVzaXplWzFdICE9IHMtPmMudXZsaW5lc2l6ZSB8fAor
ICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMl0gIT0gcy0+Yy51dmxpbmVzaXplKQogICAg
ICAgICAgICAgZGlyZWN0ID0gMDsKLSAgICAgICAgaWYgKChzLT53aWR0aCAmIDE1KSB8fCAocy0+
aGVpZ2h0ICYgMTUpKQorICAgICAgICBpZiAoKHMtPmMud2lkdGggJiAxNSkgfHwgKHMtPmMuaGVp
Z2h0ICYgMTUpKQogICAgICAgICAgICAgZGlyZWN0ID0gMDsKICAgICAgICAgaWYgKCgoaW50cHRy
X3QpKHBpY19hcmctPmRhdGFbMF0pKSAmIChTVFJJREVfQUxJR04tMSkpCiAgICAgICAgICAgICBk
aXJlY3QgPSAwOwotICAgICAgICBpZiAocy0+bGluZXNpemUgJiAoU1RSSURFX0FMSUdOLTEpKQor
ICAgICAgICBpZiAocy0+Yy5saW5lc2l6ZSAmIChTVFJJREVfQUxJR04tMSkpCiAgICAgICAgICAg
ICBkaXJlY3QgPSAwOwogCi0gICAgICAgIGZmX2Rsb2cocy0+YXZjdHgsICIlZCAlZCAlIlBUUkRJ
RkZfU1BFQ0lGSUVSIiAlIlBUUkRJRkZfU1BFQ0lGSUVSIlxuIiwgcGljX2FyZy0+bGluZXNpemVb
MF0sCi0gICAgICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMV0sIHMtPmxpbmVzaXplLCBz
LT51dmxpbmVzaXplKTsKKyAgICAgICAgZmZfZGxvZyhzLT5jLmF2Y3R4LCAiJWQgJWQgJSJQVFJE
SUZGX1NQRUNJRklFUiIgJSJQVFJESUZGX1NQRUNJRklFUiJcbiIsIHBpY19hcmctPmxpbmVzaXpl
WzBdLAorICAgICAgICAgICAgICAgIHBpY19hcmctPmxpbmVzaXplWzFdLCBzLT5jLmxpbmVzaXpl
LCBzLT5jLnV2bGluZXNpemUpOwogCi0gICAgICAgIHBpYyA9IGF2X3JlZnN0cnVjdF9wb29sX2dl
dChzLT5waWN0dXJlX3Bvb2wpOworICAgICAgICBwaWMgPSBhdl9yZWZzdHJ1Y3RfcG9vbF9nZXQo
cy0+Yy5waWN0dXJlX3Bvb2wpOwogICAgICAgICBpZiAoIXBpYykKICAgICAgICAgICAgIHJldHVy
biBBVkVSUk9SKEVOT01FTSk7CiAKQEAgLTEzNjcsMjEgKzEzNzAsMjEgQEAgc3RhdGljIGludCBs
b2FkX2lucHV0X3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWRnJh
bWUgKnBpY19hcmcKIAogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsK
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3JjX3N0cmlkZSA9IHBpY19hcmctPmxpbmVzaXpl
W2ldOwotICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBkc3Rfc3RyaWRlID0gaSA/IHMtPnV2bGlu
ZXNpemUgOiBzLT5saW5lc2l6ZTsKLSAgICAgICAgICAgICAgICBpbnQgaF9zaGlmdCA9IGkgPyBz
LT5jaHJvbWFfeF9zaGlmdCA6IDA7Ci0gICAgICAgICAgICAgICAgaW50IHZfc2hpZnQgPSBpID8g
cy0+Y2hyb21hX3lfc2hpZnQgOiAwOwotICAgICAgICAgICAgICAgIGludCB3ID0gQVZfQ0VJTF9S
U0hJRlQocy0+d2lkdGggLCBoX3NoaWZ0KTsKLSAgICAgICAgICAgICAgICBpbnQgaCA9IEFWX0NF
SUxfUlNISUZUKHMtPmhlaWdodCwgdl9zaGlmdCk7CisgICAgICAgICAgICAgICAgcHRyZGlmZl90
IGRzdF9zdHJpZGUgPSBpID8gcy0+Yy51dmxpbmVzaXplIDogcy0+Yy5saW5lc2l6ZTsKKyAgICAg
ICAgICAgICAgICBpbnQgaF9zaGlmdCA9IGkgPyBzLT5jLmNocm9tYV94X3NoaWZ0IDogMDsKKyAg
ICAgICAgICAgICAgICBpbnQgdl9zaGlmdCA9IGkgPyBzLT5jLmNocm9tYV95X3NoaWZ0IDogMDsK
KyAgICAgICAgICAgICAgICBpbnQgdyA9IEFWX0NFSUxfUlNISUZUKHMtPmMud2lkdGggLCBoX3No
aWZ0KTsKKyAgICAgICAgICAgICAgICBpbnQgaCA9IEFWX0NFSUxfUlNISUZUKHMtPmMuaGVpZ2h0
LCB2X3NoaWZ0KTsKICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBwaWNfYXJn
LT5kYXRhW2ldOwogICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRzdCA9IHBpYy0+Zi0+ZGF0YVtp
XTsKICAgICAgICAgICAgICAgICBpbnQgdnBhZCA9IDE2OwogCi0gICAgICAgICAgICAgICAgaWYg
KCAgIHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8KLSAgICAgICAgICAgICAg
ICAgICAgJiYgIXMtPnByb2dyZXNzaXZlX3NlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgICYm
IEZGQUxJR04ocy0+aGVpZ2h0LCAzMikgLSBzLT5oZWlnaHQgPiAxNikKKyAgICAgICAgICAgICAg
ICBpZiAoICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPCisgICAgICAg
ICAgICAgICAgICAgICYmICFzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlCisgICAgICAgICAgICAg
ICAgICAgICYmIEZGQUxJR04ocy0+Yy5oZWlnaHQsIDMyKSAtIHMtPmMuaGVpZ2h0ID4gMTYpCiAg
ICAgICAgICAgICAgICAgICAgIHZwYWQgPSAzMjsKIAotICAgICAgICAgICAgICAgIGlmICghcy0+
YXZjdHgtPnJjX2J1ZmZlcl9zaXplKQorICAgICAgICAgICAgICAgIGlmICghcy0+Yy5hdmN0eC0+
cmNfYnVmZmVyX3NpemUpCiAgICAgICAgICAgICAgICAgICAgIGRzdCArPSBJTlBMQUNFX09GRlNF
VDsKIAogICAgICAgICAgICAgICAgIGlmIChzcmNfc3RyaWRlID09IGRzdF9zdHJpZGUpCkBAIC0x
Mzk1LDcgKzEzOTgsNyBAQCBzdGF0aWMgaW50IGxvYWRfaW5wdXRfcGljdHVyZShNUFZNYWluRW5j
Q29udGV4dCAqY29uc3QgbSwgY29uc3QgQVZGcmFtZSAqcGljX2FyZwogICAgICAgICAgICAgICAg
ICAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChzLT53aWR0aCAmIDE1KSB8fCAocy0+
aGVpZ2h0ICYgKHZwYWQtMSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKChzLT5jLndpZHRoICYg
MTUpIHx8IChzLT5jLmhlaWdodCAmICh2cGFkLTEpKSkgewogICAgICAgICAgICAgICAgICAgICBz
LT5tcHZlbmNkc3AuZHJhd19lZGdlcyhkc3QsIGRzdF9zdHJpZGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcsIGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE2ID4+IGhfc2hpZnQsCkBAIC0xNDM4LDcgKzE0NDEsNyBA
QCBmYWlsOgogc3RhdGljIGludCBza2lwX2NoZWNrKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt
LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1QVlBpY3R1cmUgKnAsIGNvbnN0IE1QVlBp
Y3R1cmUgKnJlZikKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAg
IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBpbnQgeCwgeSwgcGxhbmU7CiAg
ICAgaW50IHNjb3JlID0gMDsKICAgICBpbnQ2NF90IHNjb3JlNjQgPSAwOwpAQCAtMTQ0Niw4ICsx
NDQ5LDggQEAgc3RhdGljIGludCBza2lwX2NoZWNrKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt
LAogICAgIGZvciAocGxhbmUgPSAwOyBwbGFuZSA8IDM7IHBsYW5lKyspIHsKICAgICAgICAgY29u
c3QgaW50IHN0cmlkZSA9IHAtPmYtPmxpbmVzaXplW3BsYW5lXTsKICAgICAgICAgY29uc3QgaW50
IGJ3ID0gcGxhbmUgPyAxIDogMjsKLSAgICAgICAgZm9yICh5ID0gMDsgeSA8IHMtPm1iX2hlaWdo
dCAqIGJ3OyB5KyspIHsKLSAgICAgICAgICAgIGZvciAoeCA9IDA7IHggPCBzLT5tYl93aWR0aCAq
IGJ3OyB4KyspIHsKKyAgICAgICAgZm9yICh5ID0gMDsgeSA8IHMtPmMubWJfaGVpZ2h0ICogYnc7
IHkrKykgeworICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IHMtPmMubWJfd2lkdGggKiBidzsg
eCsrKSB7CiAgICAgICAgICAgICAgICAgaW50IG9mZiA9IHAtPnNoYXJlZCA/IDAgOiAxNjsKICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkcHRyID0gcC0+Zi0+ZGF0YVtwbGFuZV0gKyA4
ICogKHggKyB5ICogc3RyaWRlKSArIG9mZjsKICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpycHRyID0gcmVmLT5mLT5kYXRhW3BsYW5lXSArIDggKiAoeCArIHkgKiBzdHJpZGUpOwpAQCAt
MTQ2OCwxMiArMTQ3MSwxMiBAQCBzdGF0aWMgaW50IHNraXBfY2hlY2soTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0sCiAgICAgaWYgKHNjb3JlKQogICAgICAgICBzY29yZTY0ID0gc2NvcmU7CiAg
ICAgaWYgKG0tPmZyYW1lX3NraXBfZXhwIDwgMCkKLSAgICAgICAgc2NvcmU2NCA9IHBvdyhzY29y
ZTY0IC8gKGRvdWJsZSkocy0+bWJfd2lkdGggKiBzLT5tYl9oZWlnaHQpLAorICAgICAgICBzY29y
ZTY0ID0gcG93KHNjb3JlNjQgLyAoZG91YmxlKShzLT5jLm1iX3dpZHRoICogcy0+Yy5tYl9oZWln
aHQpLAogICAgICAgICAgICAgICAgICAgICAgIC0xLjAvbS0+ZnJhbWVfc2tpcF9leHApOwogCiAg
ICAgaWYgKHNjb3JlNjQgPCBtLT5mcmFtZV9za2lwX3RocmVzaG9sZCkKICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgaWYgKHNjb3JlNjQgPCAoKG0tPmZyYW1lX3NraXBfZmFjdG9yICogKGludDY0X3Qp
IHMtPmxhbWJkYSkgPj4gOCkpCisgICAgaWYgKHNjb3JlNjQgPCAoKG0tPmZyYW1lX3NraXBfZmFj
dG9yICogKGludDY0X3QpIHMtPmMubGFtYmRhKSA+PiA4KSkKICAgICAgICAgcmV0dXJuIDE7CiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC0xNTAxLDExICsxNTA0LDExIEBAIHN0YXRpYyBpbnQgZW5jb2Rl
X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICpjLCBjb25zdCBBVkZyYW1lICpmcmFtZSwgQVZQYWNrZXQg
KnBrdCkKIAogc3RhdGljIGludCBlc3RpbWF0ZV9iZXN0X2JfY291bnQoTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAg
ICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgQVZQYWNrZXQgKnBrdDsKICAg
ICBjb25zdCBpbnQgc2NhbGUgPSBtLT5icmRfc2NhbGU7Ci0gICAgaW50IHdpZHRoICA9IHMtPndp
ZHRoICA+PiBzY2FsZTsKLSAgICBpbnQgaGVpZ2h0ID0gcy0+aGVpZ2h0ID4+IHNjYWxlOworICAg
IGludCB3aWR0aCAgPSBzLT5jLndpZHRoICA+PiBzY2FsZTsKKyAgICBpbnQgaGVpZ2h0ID0gcy0+
Yy5oZWlnaHQgPj4gc2NhbGU7CiAgICAgaW50IG91dF9zaXplLCBwX2xhbWJkYSwgYl9sYW1iZGEs
IGxhbWJkYTI7CiAgICAgaW50NjRfdCBiZXN0X3JkICA9IElOVDY0X01BWDsKICAgICBpbnQgYmVz
dF9iX2NvdW50ID0gLTE7CkBAIC0xNTE5LDcgKzE1MjIsNyBAQCBzdGF0aWMgaW50IGVzdGltYXRl
X2Jlc3RfYl9jb3VudChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAgIC8vZW1tc19j
KCk7CiAgICAgcF9sYW1iZGEgPSBtLT5sYXN0X2xhbWJkYV9mb3JbQVZfUElDVFVSRV9UWVBFX1Bd
OwotICAgIC8vcF9sYW1iZGEgKiBGRkFCUyhzLT5hdmN0eC0+Yl9xdWFudF9mYWN0b3IpICsgcy0+
YXZjdHgtPmJfcXVhbnRfb2Zmc2V0OworICAgIC8vcF9sYW1iZGEgKiBGRkFCUyhzLT5jLmF2Y3R4
LT5iX3F1YW50X2ZhY3RvcikgKyBzLT5jLmF2Y3R4LT5iX3F1YW50X29mZnNldDsKICAgICBiX2xh
bWJkYSA9IG0tPmxhc3RfbGFtYmRhX2ZvcltBVl9QSUNUVVJFX1RZUEVfQl07CiAgICAgaWYgKCFi
X2xhbWJkYSkgLy8gRklYTUUgd2Ugc2hvdWxkIGRvIHRoaXMgc29tZXdoZXJlIGVsc2UKICAgICAg
ICAgYl9sYW1iZGEgPSBwX2xhbWJkYTsKQEAgLTE1MjgsNyArMTUzMSw3IEBAIHN0YXRpYyBpbnQg
ZXN0aW1hdGVfYmVzdF9iX2NvdW50KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtLT5tYXhfYl9mcmFtZXMgKyAyOyBpKyspIHsKICAgICAgICAg
Y29uc3QgTVBWUGljdHVyZSAqcHJlX2lucHV0X3B0ciA9IGkgPyBtLT5pbnB1dF9waWN0dXJlW2kg
LSAxXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bmV4
dF9waWMucHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMt
PmMubmV4dF9waWMucHRyOwogCiAgICAgICAgIGlmIChwcmVfaW5wdXRfcHRyKSB7CiAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpkYXRhWzRdOwpAQCAtMTU3NCwxNiArMTU3NywxNiBAQCBzdGF0
aWMgaW50IGVzdGltYXRlX2Jlc3RfYl9jb3VudChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkK
ICAgICAgICAgYy0+d2lkdGggICAgICAgID0gd2lkdGg7CiAgICAgICAgIGMtPmhlaWdodCAgICAg
ICA9IGhlaWdodDsKICAgICAgICAgYy0+ZmxhZ3MgICAgICAgID0gQVZfQ09ERUNfRkxBR19RU0NB
TEUgfCBBVl9DT0RFQ19GTEFHX1BTTlI7Ci0gICAgICAgIGMtPmZsYWdzICAgICAgIHw9IHMtPmF2
Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUVBFTDsKLSAgICAgICAgYy0+bWJfZGVjaXNpb24g
ID0gcy0+YXZjdHgtPm1iX2RlY2lzaW9uOwotICAgICAgICBjLT5tZV9jbXAgICAgICAgPSBzLT5h
dmN0eC0+bWVfY21wOwotICAgICAgICBjLT5tYl9jbXAgICAgICAgPSBzLT5hdmN0eC0+bWJfY21w
OwotICAgICAgICBjLT5tZV9zdWJfY21wICAgPSBzLT5hdmN0eC0+bWVfc3ViX2NtcDsKKyAgICAg
ICAgYy0+ZmxhZ3MgICAgICAgfD0gcy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQ
RUw7CisgICAgICAgIGMtPm1iX2RlY2lzaW9uICA9IHMtPmMuYXZjdHgtPm1iX2RlY2lzaW9uOwor
ICAgICAgICBjLT5tZV9jbXAgICAgICAgPSBzLT5jLmF2Y3R4LT5tZV9jbXA7CisgICAgICAgIGMt
Pm1iX2NtcCAgICAgICA9IHMtPmMuYXZjdHgtPm1iX2NtcDsKKyAgICAgICAgYy0+bWVfc3ViX2Nt
cCAgID0gcy0+Yy5hdmN0eC0+bWVfc3ViX2NtcDsKICAgICAgICAgYy0+cGl4X2ZtdCAgICAgID0g
QVZfUElYX0ZNVF9ZVVY0MjBQOwotICAgICAgICBjLT50aW1lX2Jhc2UgICAgPSBzLT5hdmN0eC0+
dGltZV9iYXNlOworICAgICAgICBjLT50aW1lX2Jhc2UgICAgPSBzLT5jLmF2Y3R4LT50aW1lX2Jh
c2U7CiAgICAgICAgIGMtPm1heF9iX2ZyYW1lcyA9IG0tPm1heF9iX2ZyYW1lczsKIAotICAgICAg
ICByZXQgPSBhdmNvZGVjX29wZW4yKGMsIHMtPmF2Y3R4LT5jb2RlYywgTlVMTCk7CisgICAgICAg
IHJldCA9IGF2Y29kZWNfb3BlbjIoYywgcy0+Yy5hdmN0eC0+Y29kZWMsIE5VTEwpOwogICAgICAg
ICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKIApAQCAtMTY1NCw3ICsxNjU3
LDcgQEAgZmFpbDoKICAqLwogc3RhdGljIGludCBzZXRfYmZyYW1lX2NoYWluX2xlbmd0aChNUFZN
YWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9
ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAogICAgIC8qIEVp
dGhlciBub3RoaW5nIHRvIGRvIG9yIGNhbid0IGRvIGFueXRoaW5nICovCiAgICAgaWYgKG0tPnJl
b3JkZXJlZF9pbnB1dF9waWN0dXJlWzBdIHx8ICFtLT5pbnB1dF9waWN0dXJlWzBdKQpAQCAtMTY2
Myw4ICsxNjY2LDggQEAgc3RhdGljIGludCBzZXRfYmZyYW1lX2NoYWluX2xlbmd0aChNUFZNYWlu
RW5jQ29udGV4dCAqY29uc3QgbSkKICAgICAvKiBzZXQgbmV4dCBwaWN0dXJlIHR5cGUgJiBvcmRl
cmluZyAqLwogICAgIGlmIChtLT5mcmFtZV9za2lwX3RocmVzaG9sZCB8fCBtLT5mcmFtZV9za2lw
X2ZhY3RvcikgewogICAgICAgICBpZiAobS0+cGljdHVyZV9pbl9nb3BfbnVtYmVyIDwgbS0+Z29w
X3NpemUgJiYKLSAgICAgICAgICAgIHMtPm5leHRfcGljLnB0ciAmJgotICAgICAgICAgICAgc2tp
cF9jaGVjayhtLCBtLT5pbnB1dF9waWN0dXJlWzBdLCBzLT5uZXh0X3BpYy5wdHIpKSB7CisgICAg
ICAgICAgICBzLT5jLm5leHRfcGljLnB0ciAmJgorICAgICAgICAgICAgc2tpcF9jaGVjayhtLCBt
LT5pbnB1dF9waWN0dXJlWzBdLCBzLT5jLm5leHRfcGljLnB0cikpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FIGNoZWNrIHRoYXQgdGhlIGdvcCBjaGVjayBhYm92ZSBpcyArLTEgY29ycmVjdAogICAg
ICAgICAgICAgYXZfcmVmc3RydWN0X3VucmVmKCZtLT5pbnB1dF9waWN0dXJlWzBdKTsKIApAQCAt
MTY3NSw3ICsxNjc4LDcgQEAgc3RhdGljIGludCBzZXRfYmZyYW1lX2NoYWluX2xlbmd0aChNUFZN
YWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICB9CiAKICAgICBpZiAoLyogbS0+cGljdHVyZV9p
bl9nb3BfbnVtYmVyID49IG0tPmdvcF9zaXplIHx8ICovCi0gICAgICAgICFzLT5uZXh0X3BpYy5w
dHIgfHwgbS0+aW50cmFfb25seSkgeworICAgICAgICAhcy0+Yy5uZXh0X3BpYy5wdHIgfHwgbS0+
aW50cmFfb25seSkgewogICAgICAgICBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXSA9IG0t
PmlucHV0X3BpY3R1cmVbMF07CiAgICAgICAgIG0tPmlucHV0X3BpY3R1cmVbMF0gPSBOVUxMOwog
ICAgICAgICBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXS0+Zi0+cGljdF90eXBlID0gQVZf
UElDVFVSRV9UWVBFX0k7CkBAIC0xNjg0LDcgKzE2ODcsNyBAQCBzdGF0aWMgaW50IHNldF9iZnJh
bWVfY2hhaW5fbGVuZ3RoKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogICAgIH0gZWxzZSB7
CiAgICAgICAgIGludCBiX2ZyYW1lcyA9IDA7CiAKLSAgICAgICAgaWYgKHMtPmF2Y3R4LT5mbGFn
cyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpIHsKKyAgICAgICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdz
ICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtLT5tYXhfYl9mcmFtZXMgKyAxOyBpKyspIHsKICAgICAgICAgICAgICAgICBpbnQgcGljdF9u
dW0gPSBtLT5pbnB1dF9waWN0dXJlWzBdLT5kaXNwbGF5X3BpY3R1cmVfbnVtYmVyICsgaTsKIApA
QCAtMTcxMiwxMyArMTcxNSwxMyBAQCBzdGF0aWMgaW50IHNldF9iZnJhbWVfY2hhaW5fbGVuZ3Ro
KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
X2ludHJhX2NvdW50KHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bS0+aW5wdXRfcGljdHVyZVtpICAgIF0tPmYtPmRhdGFbMF0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbS0+aW5wdXRfcGljdHVyZVtpIC0gMV0tPmYtPmRhdGFbMF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZXNpemUpICsg
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmxpbmVzaXpl
KSArIDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtLT5tYXhfYl9mcmFtZXMgKyAxOyBpKyspIHsKICAgICAgICAgICAg
ICAgICBpZiAoIW0tPmlucHV0X3BpY3R1cmVbaV0gfHwKICAgICAgICAgICAgICAgICAgICAgbS0+
aW5wdXRfcGljdHVyZVtpXS0+Yl9mcmFtZV9zY29yZSAtIDEgPgotICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+bWJfbnVtIC8gbS0+Yl9zZW5zaXRpdml0eSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5tYl9udW0gLyBtLT5iX3NlbnNpdGl2aXR5KSB7CiAgICAgICAgICAgICAgICAg
ICAgIGJfZnJhbWVzID0gRkZNQVgoMCwgaSAtIDEpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzQ0LDcgKzE3NDcsNyBAQCBzdGF0aWMgaW50IHNl
dF9iZnJhbWVfY2hhaW5fbGVuZ3RoKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogICAgICAg
ICB9CiAgICAgICAgIGlmIChtLT5pbnB1dF9waWN0dXJlW2JfZnJhbWVzXS0+Zi0+cGljdF90eXBl
ID09IEFWX1BJQ1RVUkVfVFlQRV9CICYmCiAgICAgICAgICAgICBiX2ZyYW1lcyA9PSBtLT5tYXhf
Yl9mcmFtZXMpIHsKLSAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLAor
ICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJPUiwKICAgICAgICAgICAg
ICAgICAgICAgIndhcm5pbmcsIHRvbyBtYW55IEItZnJhbWVzIGluIGEgcm93XG4iKTsKICAgICAg
ICAgfQogCkBAIC0xNzUzLDEzICsxNzU2LDEzIEBAIHN0YXRpYyBpbnQgc2V0X2JmcmFtZV9jaGFp
bl9sZW5ndGgoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICAgICAgbS0+
Z29wX3NpemUgPiBtLT5waWN0dXJlX2luX2dvcF9udW1iZXIpIHsKICAgICAgICAgICAgICAgICBi
X2ZyYW1lcyA9IG0tPmdvcF9zaXplIC0gbS0+cGljdHVyZV9pbl9nb3BfbnVtYmVyIC0gMTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHMtPmF2Y3R4LT5mbGFncyAm
IEFWX0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCkKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5hdmN0
eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1ApCiAgICAgICAgICAgICAgICAgICAg
IGJfZnJhbWVzID0gMDsKICAgICAgICAgICAgICAgICBtLT5pbnB1dF9waWN0dXJlW2JfZnJhbWVz
XS0+Zi0+cGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0k7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ0xP
U0VEX0dPUCkgJiYgYl9mcmFtZXMgJiYKKyAgICAgICAgaWYgKChzLT5jLmF2Y3R4LT5mbGFncyAm
IEFWX0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCkgJiYgYl9mcmFtZXMgJiYKICAgICAgICAgICAgIG0t
PmlucHV0X3BpY3R1cmVbYl9mcmFtZXNdLT5mLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF
X0kpCiAgICAgICAgICAgICBiX2ZyYW1lcy0tOwogCkBAIC0xNzg0LDcgKzE3ODcsNyBAQCBzdGF0
aWMgaW50IHNldF9iZnJhbWVfY2hhaW5fbGVuZ3RoKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt
KQogCiBzdGF0aWMgaW50IHNlbGVjdF9pbnB1dF9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpj
b25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBW
RW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIGludCByZXQ7CiAKICAgICBhdl9hc3Nl
cnQxKCFtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXSk7CkBAIC0xODA0LDcgKzE4MDcsNyBA
QCBzdGF0aWMgaW50IHNlbGVjdF9pbnB1dF9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25z
dCBtKQogICAgICAgICBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXS0+cmVmZXJlbmNlID0K
ICAgICAgICAgICAgbS0+cmVvcmRlcmVkX2lucHV0X3BpY3R1cmVbMF0tPmYtPnBpY3RfdHlwZSAh
PSBBVl9QSUNUVVJFX1RZUEVfQjsKIAotICAgICAgICBpZiAobS0+cmVvcmRlcmVkX2lucHV0X3Bp
Y3R1cmVbMF0tPnNoYXJlZCB8fCBzLT5hdmN0eC0+cmNfYnVmZmVyX3NpemUpIHsKKyAgICAgICAg
aWYgKG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0dXJlWzBdLT5zaGFyZWQgfHwgcy0+Yy5hdmN0eC0+
cmNfYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8vIGlucHV0IGlzIGEgc2hhcmVkIHBpeCwg
c28gd2UgY2FuJ3QgbW9kaWZ5IGl0IC0+IGFsbG9jYXRlIGEgbmV3CiAgICAgICAgICAgICAvLyBv
bmUgJiBlbnN1cmUgdGhhdCB0aGUgc2hhcmVkIG9uZSBpcyByZXVzZWFibGUKICAgICAgICAgICAg
IGF2X2ZyYW1lX21vdmVfcmVmKHMtPm5ld19waWMsIG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0dXJl
WzBdLT5mKTsKQEAgLTE4MjIsMTggKzE4MjUsMTggQEAgc3RhdGljIGludCBzZWxlY3RfaW5wdXRf
cGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICAgICAgICAgICAgICAgICAg
cy0+bmV3X3BpYy0+ZGF0YVtpXSArPSBJTlBMQUNFX09GRlNFVDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBzLT5jdXJfcGljLnB0ciA9IG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0
dXJlWzBdOworICAgICAgICBzLT5jLmN1cl9waWMucHRyID0gbS0+cmVvcmRlcmVkX2lucHV0X3Bp
Y3R1cmVbMF07CiAgICAgICAgIG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0dXJlWzBdID0gTlVMTDsK
LSAgICAgICAgYXZfYXNzZXJ0MShzLT5tYl93aWR0aCAgPT0gcy0+YnVmZmVyX3Bvb2xzLmFsbG9j
X21iX3dpZHRoKTsKLSAgICAgICAgYXZfYXNzZXJ0MShzLT5tYl9oZWlnaHQgPT0gcy0+YnVmZmVy
X3Bvb2xzLmFsbG9jX21iX2hlaWdodCk7Ci0gICAgICAgIGF2X2Fzc2VydDEocy0+bWJfc3RyaWRl
ID09IHMtPmJ1ZmZlcl9wb29scy5hbGxvY19tYl9zdHJpZGUpOwotICAgICAgICByZXQgPSBmZl9t
cHZfYWxsb2NfcGljX2FjY2Vzc29yaWVzKHMtPmF2Y3R4LCAmcy0+Y3VyX3BpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcy0+c2MsICZzLT5idWZmZXJfcG9v
bHMsIHMtPm1iX2hlaWdodCk7CisgICAgICAgIGF2X2Fzc2VydDEocy0+Yy5tYl93aWR0aCAgPT0g
cy0+Yy5idWZmZXJfcG9vbHMuYWxsb2NfbWJfd2lkdGgpOworICAgICAgICBhdl9hc3NlcnQxKHMt
PmMubWJfaGVpZ2h0ID09IHMtPmMuYnVmZmVyX3Bvb2xzLmFsbG9jX21iX2hlaWdodCk7CisgICAg
ICAgIGF2X2Fzc2VydDEocy0+Yy5tYl9zdHJpZGUgPT0gcy0+Yy5idWZmZXJfcG9vbHMuYWxsb2Nf
bWJfc3RyaWRlKTsKKyAgICAgICAgcmV0ID0gZmZfbXB2X2FsbG9jX3BpY19hY2Nlc3Nvcmllcyhz
LT5jLmF2Y3R4LCAmcy0+Yy5jdXJfcGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZzLT5jLnNjLCAmcy0+Yy5idWZmZXJfcG9vbHMsIHMtPmMubWJfaGVpZ2h0
KTsKICAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIGZmX21wdl91bnJlZl9waWN0
dXJlKCZzLT5jdXJfcGljKTsKKyAgICAgICAgICAgIGZmX21wdl91bnJlZl9waWN0dXJlKCZzLT5j
LmN1cl9waWMpOwogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgfQotICAgICAgICBz
LT5waWN0dXJlX251bWJlciA9IHMtPmN1cl9waWMucHRyLT5kaXNwbGF5X3BpY3R1cmVfbnVtYmVy
OworICAgICAgICBzLT5jLnBpY3R1cmVfbnVtYmVyID0gcy0+Yy5jdXJfcGljLnB0ci0+ZGlzcGxh
eV9waWN0dXJlX251bWJlcjsKIAogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTE4NDQsMjkgKzE4
NDcsMjkgQEAgZmFpbDoKIAogc3RhdGljIHZvaWQgZnJhbWVfZW5kKE1QVk1haW5FbmNDb250ZXh0
ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAg
TVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogCi0gICAgaWYgKHMtPnVucmVzdHJpY3Rl
ZF9tdiAmJgotICAgICAgICBzLT5jdXJfcGljLnJlZmVyZW5jZSAmJgorICAgIGlmIChzLT5jLnVu
cmVzdHJpY3RlZF9tdiAmJgorICAgICAgICBzLT5jLmN1cl9waWMucmVmZXJlbmNlICYmCiAgICAg
ICAgICFtLT5pbnRyYV9vbmx5KSB7Ci0gICAgICAgIGludCBoc2hpZnQgPSBzLT5jaHJvbWFfeF9z
aGlmdDsKLSAgICAgICAgaW50IHZzaGlmdCA9IHMtPmNocm9tYV95X3NoaWZ0OwotICAgICAgICBz
LT5tcHZlbmNkc3AuZHJhd19lZGdlcyhzLT5jdXJfcGljLmRhdGFbMF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPmN1cl9waWMubGluZXNpemVbMF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPmhfZWRnZV9wb3MsIHMtPnZfZWRnZV9wb3MsCisgICAgICAg
IGludCBoc2hpZnQgPSBzLT5jLmNocm9tYV94X3NoaWZ0OworICAgICAgICBpbnQgdnNoaWZ0ID0g
cy0+Yy5jaHJvbWFfeV9zaGlmdDsKKyAgICAgICAgcy0+bXB2ZW5jZHNwLmRyYXdfZWRnZXMocy0+
Yy5jdXJfcGljLmRhdGFbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMu
Y3VyX3BpYy5saW5lc2l6ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+
Yy5oX2VkZ2VfcG9zLCBzLT5jLnZfZWRnZV9wb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVER0VfV0lEVEgsIEVER0VfV0lEVEgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVER0VfVE9QIHwgRURHRV9CT1RUT00pOwotICAgICAgICBzLT5tcHZlbmNkc3AuZHJh
d19lZGdlcyhzLT5jdXJfcGljLmRhdGFbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPmN1cl9waWMubGluZXNpemVbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPmhfZWRnZV9wb3MgPj4gaHNoaWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLT52X2VkZ2VfcG9zID4+IHZzaGlmdCwKKyAgICAgICAgcy0+bXB2ZW5jZHNwLmRyYXdf
ZWRnZXMocy0+Yy5jdXJfcGljLmRhdGFbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPmMuY3VyX3BpYy5saW5lc2l6ZVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5oX2VkZ2VfcG9zID4+IGhzaGlmdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcy0+Yy52X2VkZ2VfcG9zID4+IHZzaGlmdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRURHRV9XSURUSCA+PiBoc2hpZnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVER0VfV0lEVEggPj4gdnNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFREdFX1RPUCB8IEVER0VfQk9UVE9NKTsKLSAgICAgICAgcy0+bXB2ZW5jZHNwLmRy
YXdfZWRnZXMocy0+Y3VyX3BpYy5kYXRhWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLT5jdXJfcGljLmxpbmVzaXplWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLT5oX2VkZ2VfcG9zID4+IGhzaGlmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+dl9lZGdlX3BvcyA+PiB2c2hpZnQsCisgICAgICAgIHMtPm1wdmVuY2RzcC5kcmF3
X2VkZ2VzKHMtPmMuY3VyX3BpYy5kYXRhWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLT5jLmN1cl9waWMubGluZXNpemVbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmMuaF9lZGdlX3BvcyA+PiBoc2hpZnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPmMudl9lZGdlX3BvcyA+PiB2c2hpZnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVER0VfV0lEVEggPj4gaHNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFREdFX1dJRFRIID4+IHZzaGlmdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRURHRV9UT1AgfCBFREdFX0JPVFRPTSk7CkBAIC0xODc0LDE1ICsxODc3LDE1IEBA
IHN0YXRpYyB2b2lkIGZyYW1lX2VuZChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAg
IGVtbXNfYygpOwogCi0gICAgbS0+bGFzdF9waWN0X3R5cGUgICAgICAgICAgICAgICAgPSBzLT5w
aWN0X3R5cGU7Ci0gICAgbS0+bGFzdF9sYW1iZGFfZm9yW3MtPnBpY3RfdHlwZV0gPSBzLT5jdXJf
cGljLnB0ci0+Zi0+cXVhbGl0eTsKLSAgICBpZiAocy0+cGljdF90eXBlIT0gQVZfUElDVFVSRV9U
WVBFX0IpCi0gICAgICAgIG0tPmxhc3Rfbm9uX2JfcGljdF90eXBlID0gcy0+cGljdF90eXBlOwor
ICAgIG0tPmxhc3RfcGljdF90eXBlICAgICAgICAgICAgICAgID0gcy0+Yy5waWN0X3R5cGU7Cisg
ICAgbS0+bGFzdF9sYW1iZGFfZm9yW3MtPmMucGljdF90eXBlXSA9IHMtPmMuY3VyX3BpYy5wdHIt
PmYtPnF1YWxpdHk7CisgICAgaWYgKHMtPmMucGljdF90eXBlIT0gQVZfUElDVFVSRV9UWVBFX0Ip
CisgICAgICAgIG0tPmxhc3Rfbm9uX2JfcGljdF90eXBlID0gcy0+Yy5waWN0X3R5cGU7CiB9CiAK
IHN0YXRpYyB2b2lkIHVwZGF0ZV9ub2lzZV9yZWR1Y3Rpb24oTVBWTWFpbkVuY0NvbnRleHQgKmNv
bnN0IG0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAgICBNUFZF
bmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgaW50IGludHJhLCBpOwogCiAgICAgZm9y
IChpbnRyYSA9IDA7IGludHJhIDwgMjsgaW50cmErKykgewpAQCAtMTkwNCwxMyArMTkwNywxMyBA
QCBzdGF0aWMgdm9pZCB1cGRhdGVfbm9pc2VfcmVkdWN0aW9uKE1QVk1haW5FbmNDb250ZXh0ICpj
b25zdCBtKQogCiBzdGF0aWMgdm9pZCBmcmFtZV9zdGFydChNUFZNYWluRW5jQ29udGV4dCAqY29u
c3QgbSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVu
Y0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAotICAgIHMtPmN1cl9waWMucHRyLT5mLT5waWN0
X3R5cGUgPSBzLT5waWN0X3R5cGU7CisgICAgcy0+Yy5jdXJfcGljLnB0ci0+Zi0+cGljdF90eXBl
ID0gcy0+Yy5waWN0X3R5cGU7CiAKLSAgICBpZiAocy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVf
VFlQRV9CKSB7Ci0gICAgICAgIGZmX21wdl9yZXBsYWNlX3BpY3R1cmUoJnMtPmxhc3RfcGljLCAm
cy0+bmV4dF9waWMpOwotICAgICAgICBmZl9tcHZfcmVwbGFjZV9waWN0dXJlKCZzLT5uZXh0X3Bp
YywgJnMtPmN1cl9waWMpOworICAgIGlmIChzLT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZ
UEVfQikgeworICAgICAgICBmZl9tcHZfcmVwbGFjZV9waWN0dXJlKCZzLT5jLmxhc3RfcGljLCAm
cy0+Yy5uZXh0X3BpYyk7CisgICAgICAgIGZmX21wdl9yZXBsYWNlX3BpY3R1cmUoJnMtPmMubmV4
dF9waWMsICZzLT5jLmN1cl9waWMpOwogICAgIH0KIAogICAgIGF2X2Fzc2VydDIoISFtLT5ub2lz
ZV9yZWR1Y3Rpb24gPT0gISFzLT5kY3RfZXJyb3Jfc3VtKTsKQEAgLTE5MjMsMTEgKzE5MjYsMTEg
QEAgaW50IGZmX21wdl9lbmNvZGVfcGljdHVyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFj
a2V0ICpwa3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRnJhbWUgKnBpY19h
cmcsIGludCAqZ290X3BhY2tldCkKIHsKICAgICBNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSA9
IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgTXBlZ0VuY0NvbnRleHQgICAgKmNvbnN0IHMgPSAmbS0+
czsKKyAgICBNUFZFbmNDb250ZXh0ICAgICpjb25zdCBzID0gJm0tPnM7CiAgICAgaW50IHN0dWZm
aW5nX2NvdW50LCByZXQ7Ci0gICAgaW50IGNvbnRleHRfY291bnQgPSBzLT5zbGljZV9jb250ZXh0
X2NvdW50OworICAgIGludCBjb250ZXh0X2NvdW50ID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50
OwogCi0gICAgZmZfbXB2X3VucmVmX3BpY3R1cmUoJnMtPmN1cl9waWMpOworICAgIGZmX21wdl91
bnJlZl9waWN0dXJlKCZzLT5jLmN1cl9waWMpOwogCiAgICAgbS0+dmJ2X2lnbm9yZV9xbWF4ID0g
MDsKIApAQCAtMTk0Myw4ICsxOTQ2LDggQEAgaW50IGZmX21wdl9lbmNvZGVfcGljdHVyZShBVkNv
ZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAKICAgICAvKiBvdXRwdXQ/ICovCiAg
ICAgaWYgKHMtPm5ld19waWMtPmRhdGFbMF0pIHsKLSAgICAgICAgaW50IGdyb3dpbmdfYnVmZmVy
ID0gY29udGV4dF9jb3VudCA9PSAxICYmICFzLT5kYXRhX3BhcnRpdGlvbmluZzsKLSAgICAgICAg
c2l6ZV90IHBrdF9zaXplID0gMTAwMDAgKyBzLT5tYl93aWR0aCAqIHMtPm1iX2hlaWdodCAqCisg
ICAgICAgIGludCBncm93aW5nX2J1ZmZlciA9IGNvbnRleHRfY291bnQgPT0gMSAmJiAhcy0+Yy5k
YXRhX3BhcnRpdGlvbmluZzsKKyAgICAgICAgc2l6ZV90IHBrdF9zaXplID0gMTAwMDAgKyBzLT5j
Lm1iX3dpZHRoICogcy0+Yy5tYl9oZWlnaHQgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChncm93aW5nX2J1ZmZlciA/IDY0IDogKE1BWF9NQl9CWVRFUyArIDEwMCkpOwogICAg
ICAgICBpZiAoQ09ORklHX01KUEVHX0VOQ09ERVIgJiYgYXZjdHgtPmNvZGVjX2lkID09IEFWX0NP
REVDX0lEX01KUEVHKSB7CiAgICAgICAgICAgICByZXQgPSBmZl9tanBlZ19hZGRfaWNjX3Byb2Zp
bGVfc2l6ZShhdmN0eCwgcy0+bmV3X3BpYywgJnBrdF9zaXplKTsKQEAgLTE5NTcsMTMgKzE5NjAs
MTMgQEAgaW50IGZmX21wdl9lbmNvZGVfcGljdHVyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFW
UGFja2V0ICpwa3QsCiAgICAgICAgIGlmIChzLT5tYl9pbmZvKSB7CiAgICAgICAgICAgICBzLT5t
Yl9pbmZvX3B0ciA9IGF2X3BhY2tldF9uZXdfc2lkZV9kYXRhKHBrdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFWX1BLVF9EQVRBX0gyNjNfTUJfSU5GTywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPm1iX3dpZHRoKnMtPm1iX2hlaWdodCoxMik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX3dpZHRoKnMtPmMubWJfaGVpZ2h0
KjEyKTsKICAgICAgICAgICAgIGlmICghcy0+bWJfaW5mb19wdHIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICAgICAgICAgIHMtPnByZXZfbWJfaW5mbyA9IHMt
Pmxhc3RfbWJfaW5mbyA9IHMtPm1iX2luZm9fc2l6ZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAg
ICBzLT5waWN0X3R5cGUgPSBzLT5uZXdfcGljLT5waWN0X3R5cGU7CisgICAgICAgIHMtPmMucGlj
dF90eXBlID0gcy0+bmV3X3BpYy0+cGljdF90eXBlOwogICAgICAgICAvL2VtbXNfYygpOwogICAg
ICAgICBmcmFtZV9zdGFydChtKTsKIHZidl9yZXRyeToKQEAgLTE5NzgsNyArMTk4MSw3IEBAIHZi
dl9yZXRyeToKIAogICAgICAgICBmcmFtZV9lbmQobSk7CiAKLSAgICAgICBpZiAoKENPTkZJR19N
SlBFR19FTkNPREVSIHx8IENPTkZJR19BTVZfRU5DT0RFUikgJiYgcy0+b3V0X2Zvcm1hdCA9PSBG
TVRfTUpQRUcpCisgICAgICAgaWYgKChDT05GSUdfTUpQRUdfRU5DT0RFUiB8fCBDT05GSUdfQU1W
X0VOQ09ERVIpICYmIHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfTUpQRUcpCiAgICAgICAgICAgICBm
Zl9tanBlZ19lbmNvZGVfcGljdHVyZV90cmFpbGVyKCZzLT5wYiwgbS0+aGVhZGVyX2JpdHMpOwog
CiAgICAgICAgIGlmIChhdmN0eC0+cmNfYnVmZmVyX3NpemUpIHsKQEAgLTE5ODgsMjUgKzE5OTEs
MjQgQEAgdmJ2X3JldHJ5OgogICAgICAgICAgICAgaW50IG1pbl9zdGVwID0gaHEgPyAxIDogKDE8
PChGRl9MQU1CREFfU0hJRlQgKyA3KSkvMTM5OwogCiAgICAgICAgICAgICBpZiAocHV0X2JpdHNf
Y291bnQoJnMtPnBiKSA+IG1heF9zaXplICYmCi0gICAgICAgICAgICAgICAgcy0+bGFtYmRhIDwg
bS0+bG1heCkgewotICAgICAgICAgICAgICAgIG0tPm5leHRfbGFtYmRhID0gRkZNQVgocy0+bGFt
YmRhICsgbWluX3N0ZXAsIHMtPmxhbWJkYSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocy0+cXNjYWxlICsgMSkgLyBzLT5xc2NhbGUpOworICAgICAgICAgICAgICAg
IHMtPmMubGFtYmRhIDwgbS0+bG1heCkgeworICAgICAgICAgICAgICAgIG0tPm5leHRfbGFtYmRh
ID0gRkZNQVgocy0+Yy5sYW1iZGEgKyBtaW5fc3RlcCwgcy0+Yy5sYW1iZGEgKgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmMucXNjYWxlICsgMSkgLyBzLT5jLnFz
Y2FsZSk7CiAgICAgICAgICAgICAgICAgaWYgKHMtPmFkYXB0aXZlX3F1YW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
cy0+bWJfaGVpZ2h0ICogcy0+bWJfc3RyaWRlOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcy0+Yy5tYl9oZWlnaHQgKiBzLT5jLm1iX3N0cmlkZTsgaSsrKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFtYmRhX3RhYmxlW2ldID0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGRk1BWChzLT5sYW1iZGFfdGFibGVbaV0gKyBtaW5fc3RlcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYW1iZGFfdGFibGVbaV0gKiAocy0+
cXNjYWxlICsgMSkgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnFzY2Fs
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFtYmRhX3RhYmxlW2ld
ICogKHMtPmMucXNjYWxlICsgMSkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMtPmMucXNjYWxlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcy0+bWJf
c2tpcHBlZCA9IDA7ICAgICAgICAvLyBkb25lIGluIGZyYW1lX3N0YXJ0KCkKKyAgICAgICAgICAg
ICAgICBzLT5jLm1iX3NraXBwZWQgPSAwOyAgICAgICAgLy8gZG9uZSBpbiBmcmFtZV9zdGFydCgp
CiAgICAgICAgICAgICAgICAgLy8gZG9uZSBpbiBlbmNvZGVfcGljdHVyZSgpIHNvIHdlIG11c3Qg
dW5kbyBpdAotICAgICAgICAgICAgICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U
WVBFX1ApIHsKLSAgICAgICAgICAgICAgICAgICAgcy0+bm9fcm91bmRpbmcgXj0gcy0+ZmxpcGZs
b3Bfcm91bmRpbmc7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJ
Q1RVUkVfVFlQRV9QKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubm9fcm91bmRpbmcgXj0g
cy0+Yy5mbGlwZmxvcF9yb3VuZGluZzsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKHMtPnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfQikgewotICAgICAgICAgICAg
ICAgICAgICBzLT50aW1lX2Jhc2UgICAgICAgPSBzLT5sYXN0X3RpbWVfYmFzZTsKLSAgICAgICAg
ICAgICAgICAgICAgcy0+bGFzdF9ub25fYl90aW1lID0gcy0+dGltZSAtIHMtPnBwX3RpbWU7Cisg
ICAgICAgICAgICAgICAgaWYgKHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9CKSB7
CisgICAgICAgICAgICAgICAgICAgIHMtPmMudGltZV9iYXNlICAgICAgID0gcy0+Yy5sYXN0X3Rp
bWVfYmFzZTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X25vbl9iX3RpbWUgPSBzLT5j
LnRpbWUgLSBzLT5jLnBwX3RpbWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IG0tPnZidl9pZ25vcmVfcW1heCA9IDE7CiAgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBB
Vl9MT0dfVkVSQk9TRSwgInJlZW5jb2RpbmcgZnJhbWUgZHVlIHRvIFZCVlxuIik7CkBAIC0yMDIx
LDEwICsyMDIzLDEwIEBAIHZidl9yZXRyeToKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IE1QVl9NQVhfUExBTkVTOyBpKyspCiAgICAgICAgICAgICBhdmN0eC0+ZXJyb3JbaV0gKz0gcy0+
ZW5jb2RpbmdfZXJyb3JbaV07Ci0gICAgICAgIGZmX3NpZGVfZGF0YV9zZXRfZW5jb2Rlcl9zdGF0
cyhwa3QsIHMtPmN1cl9waWMucHRyLT5mLT5xdWFsaXR5LAorICAgICAgICBmZl9zaWRlX2RhdGFf
c2V0X2VuY29kZXJfc3RhdHMocGt0LCBzLT5jLmN1cl9waWMucHRyLT5mLT5xdWFsaXR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZW5jb2RpbmdfZXJyb3IsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXZjdHgtPmZsYWdzJkFWX0NP
REVDX0ZMQUdfUFNOUikgPyBNUFZfTUFYX1BMQU5FUyA6IDAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLT5waWN0X3R5cGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcy0+Yy5waWN0X3R5cGUpOwogCiAgICAgICAgIGlmIChhdmN0eC0+
ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MxKQogICAgICAgICAgICAgYXNzZXJ0KHB1dF9iaXRz
X2NvdW50KCZzLT5wYikgPT0gbS0+aGVhZGVyX2JpdHMgKyBzLT5tdl9iaXRzICsKQEAgLTIwNDEs
NyArMjA0Myw3IEBAIHZidl9yZXRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHN3aXRjaCAocy0+Y29kZWNfaWQpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAocy0+Yy5jb2RlY19pZCkgewogICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19J
RF9NUEVHMVZJREVPOgogICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPOgog
ICAgICAgICAgICAgICAgIHdoaWxlIChzdHVmZmluZ19jb3VudC0tKSB7CkBAIC0yMDY3LDcgKzIw
NjksNyBAQCB2YnZfcmV0cnk6CiAgICAgICAgIC8qIHVwZGF0ZSBNUEVHLTEvMiB2YnZfZGVsYXkg
Zm9yIENCUiAqLwogICAgICAgICBpZiAoYXZjdHgtPnJjX21heF9yYXRlICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJgogICAgICAgICAgICAgYXZjdHgtPnJjX21pbl9yYXRlID09IGF2Y3R4LT5y
Y19tYXhfcmF0ZSAmJgotICAgICAgICAgICAgcy0+b3V0X2Zvcm1hdCA9PSBGTVRfTVBFRzEgICAg
ICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9N
UEVHMSAgICAgICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICA5MDAwMExMICogKGF2Y3R4
LT5yY19idWZmZXJfc2l6ZSAtIDEpIDw9CiAgICAgICAgICAgICAgICAgYXZjdHgtPnJjX21heF9y
YXRlICogMHhGRkZGTEwpIHsKICAgICAgICAgICAgIEFWQ1BCUHJvcGVydGllcyAqcHJvcHM7CkBA
IC0yMDg1LDcgKzIwODcsNyBAQCB2YnZfcmV0cnk6CiAgICAgICAgICAgICAgICAgYXZfbG9nKGF2
Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJv
ciwgbmVnYXRpdmUgYml0c1xuIik7CiAKLSAgICAgICAgICAgIGF2X2Fzc2VydDEocy0+cmVwZWF0
X2ZpcnN0X2ZpZWxkID09IDApOworICAgICAgICAgICAgYXZfYXNzZXJ0MShzLT5jLnJlcGVhdF9m
aXJzdF9maWVsZCA9PSAwKTsKIAogICAgICAgICAgICAgdmJ2X2RlbGF5ID0gYml0cyAqIDkwMDAw
IC8gYXZjdHgtPnJjX21heF9yYXRlOwogICAgICAgICAgICAgbWluX2RlbGF5ID0gKG1pbmJpdHMg
KiA5MDAwMExMICsgYXZjdHgtPnJjX21heF9yYXRlIC0gMSkgLwpAQCAtMjExNSwxMCArMjExNywx
MCBAQCB2YnZfcmV0cnk6CiAgICAgICAgIH0KICAgICAgICAgbS0+dG90YWxfYml0cyArPSBtLT5m
cmFtZV9iaXRzOwogCi0gICAgICAgIHBrdC0+cHRzID0gcy0+Y3VyX3BpYy5wdHItPmYtPnB0czsK
LSAgICAgICAgcGt0LT5kdXJhdGlvbiA9IHMtPmN1cl9waWMucHRyLT5mLT5kdXJhdGlvbjsKLSAg
ICAgICAgaWYgKCFzLT5sb3dfZGVsYXkgJiYgcy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQ
RV9CKSB7Ci0gICAgICAgICAgICBpZiAoIXMtPmN1cl9waWMucHRyLT5jb2RlZF9waWN0dXJlX251
bWJlcikKKyAgICAgICAgcGt0LT5wdHMgPSBzLT5jLmN1cl9waWMucHRyLT5mLT5wdHM7CisgICAg
ICAgIHBrdC0+ZHVyYXRpb24gPSBzLT5jLmN1cl9waWMucHRyLT5mLT5kdXJhdGlvbjsKKyAgICAg
ICAgaWYgKCFzLT5jLmxvd19kZWxheSAmJiBzLT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZ
UEVfQikgeworICAgICAgICAgICAgaWYgKCFzLT5jLmN1cl9waWMucHRyLT5jb2RlZF9waWN0dXJl
X251bWJlcikKICAgICAgICAgICAgICAgICBwa3QtPmR0cyA9IHBrdC0+cHRzIC0gbS0+ZHRzX2Rl
bHRhOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHBrdC0+ZHRzID0gbS0+cmVv
cmRlcmVkX3B0czsKQEAgLTIxMjgsMTIgKzIxMzAsMTIgQEAgdmJ2X3JldHJ5OgogCiAgICAgICAg
IC8vIHRoZSBuby1kZWxheSBjYXNlIGlzIGhhbmRsZWQgaW4gZ2VuZXJpYyBjb2RlCiAgICAgICAg
IGlmIChhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSkgewot
ICAgICAgICAgICAgcmV0ID0gZmZfZW5jb2RlX3Jlb3JkZXJlZF9vcGFxdWUoYXZjdHgsIHBrdCwg
cy0+Y3VyX3BpYy5wdHItPmYpOworICAgICAgICAgICAgcmV0ID0gZmZfZW5jb2RlX3Jlb3JkZXJl
ZF9vcGFxdWUoYXZjdHgsIHBrdCwgcy0+Yy5jdXJfcGljLnB0ci0+Zik7CiAgICAgICAgICAgICBp
ZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHMtPmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZSQU1FX0ZMQUdfS0VZKQor
ICAgICAgICBpZiAocy0+Yy5jdXJfcGljLnB0ci0+Zi0+ZmxhZ3MgJiBBVl9GUkFNRV9GTEFHX0tF
WSkKICAgICAgICAgICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtUX0ZMQUdfS0VZOwogICAgICAgICBp
ZiAocy0+bWJfaW5mbykKICAgICAgICAgICAgIGF2X3BhY2tldF9zaHJpbmtfc2lkZV9kYXRhKHBr
dCwgQVZfUEtUX0RBVEFfSDI2M19NQl9JTkZPLCBzLT5tYl9pbmZvX3NpemUpOwpAQCAtMjE0MSw3
ICsyMTQzLDcgQEAgdmJ2X3JldHJ5OgogICAgICAgICBtLT5mcmFtZV9iaXRzID0gMDsKICAgICB9
CiAKLSAgICBmZl9tcHZfdW5yZWZfcGljdHVyZSgmcy0+Y3VyX3BpYyk7CisgICAgZmZfbXB2X3Vu
cmVmX3BpY3R1cmUoJnMtPmMuY3VyX3BpYyk7CiAKICAgICBhdl9hc3NlcnQxKChtLT5mcmFtZV9i
aXRzICYgNykgPT0gMCk7CiAKQEAgLTIxNTAsNyArMjE1Miw3IEBAIHZidl9yZXRyeToKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGRjdF9zaW5nbGVfY29lZmZfZWxpbWlu
YXRpb24oTXBlZ0VuY0NvbnRleHQgKnMsCitzdGF0aWMgaW5saW5lIHZvaWQgZGN0X3NpbmdsZV9j
b2VmZl9lbGltaW5hdGlvbihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4sIGludCB0aHJlc2hvbGQpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgdGFiWzY0XSA9IHsKQEAgLTIxNjYsOCArMjE2OCw4IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBkY3Rfc2luZ2xlX2NvZWZmX2VsaW1pbmF0aW9uKE1wZWdFbmND
b250ZXh0ICpzLAogICAgIGludCBzY29yZSA9IDA7CiAgICAgaW50IHJ1biA9IDA7CiAgICAgaW50
IGk7Ci0gICAgaW50MTZfdCAqYmxvY2sgPSBzLT5ibG9ja1tuXTsKLSAgICBjb25zdCBpbnQgbGFz
dF9pbmRleCA9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgaW50MTZfdCAqYmxvY2sgPSBz
LT5jLmJsb2NrW25dOworICAgIGNvbnN0IGludCBsYXN0X2luZGV4ID0gcy0+Yy5ibG9ja19sYXN0
X2luZGV4W25dOwogICAgIGludCBza2lwX2RjOwogCiAgICAgaWYgKHRocmVzaG9sZCA8IDApIHsK
QEAgLTIxODEsNyArMjE4Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkY3Rfc2luZ2xlX2NvZWZm
X2VsaW1pbmF0aW9uKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICByZXR1cm47CiAKICAgICBm
b3IgKGkgPSAwOyBpIDw9IGxhc3RfaW5kZXg7IGkrKykgewotICAgICAgICBjb25zdCBpbnQgaiA9
IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOworICAgICAgICBjb25zdCBpbnQgaiA9
IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAgICAgIGNvbnN0IGludCBs
ZXZlbCA9IEZGQUJTKGJsb2NrW2pdKTsKICAgICAgICAgaWYgKGxldmVsID09IDEpIHsKICAgICAg
ICAgICAgIGlmIChza2lwX2RjICYmIGkgPT0gMCkKQEAgLTIxOTcsMTYgKzIxOTksMTYgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRjdF9zaW5nbGVfY29lZmZfZWxpbWluYXRpb24oTXBlZ0VuY0NvbnRl
eHQgKnMsCiAgICAgaWYgKHNjb3JlID49IHRocmVzaG9sZCkKICAgICAgICAgcmV0dXJuOwogICAg
IGZvciAoaSA9IHNraXBfZGM7IGkgPD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0
IGludCBqID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAgIGNvbnN0
IGludCBqID0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgYmxv
Y2tbal0gPSAwOwogICAgIH0KICAgICBpZiAoYmxvY2tbMF0pCi0gICAgICAgIHMtPmJsb2NrX2xh
c3RfaW5kZXhbbl0gPSAwOworICAgICAgICBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbbl0gPSAwOwog
ICAgIGVsc2UKLSAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtuXSA9IC0xOworICAgICAgICBz
LT5jLmJsb2NrX2xhc3RfaW5kZXhbbl0gPSAtMTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGNs
aXBfY29lZmZzKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKK3N0YXRpYyBpbmxp
bmUgdm9pZCBjbGlwX2NvZWZmcyhjb25zdCBNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90
IGJsb2NrW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhc3RfaW5kZXgp
CiB7CiAgICAgaW50IGk7CkBAIC0yMjE0LDEzICsyMjE2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjbGlwX2NvZWZmcyhNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCiAgICAgY29u
c3QgaW50IG1pbmxldmVsID0gcy0+bWluX3Fjb2VmZjsKICAgICBpbnQgb3ZlcmZsb3cgPSAwOwog
Ci0gICAgaWYgKHMtPm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAg
ICAgaSA9IDE7IC8vIHNraXAgY2xpcHBpbmcgb2YgaW50cmEgZGMKICAgICB9IGVsc2UKICAgICAg
ICAgaSA9IDA7CiAKICAgICBmb3IgKDsgaSA8PSBsYXN0X2luZGV4OyBpKyspIHsKLSAgICAgICAg
Y29uc3QgaW50IGogPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAg
Y29uc3QgaW50IGogPSBzLT5jLmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwogICAgICAg
ICBpbnQgbGV2ZWwgPSBibG9ja1tqXTsKIAogICAgICAgICBpZiAobGV2ZWwgPiBtYXhsZXZlbCkg
ewpAQCAtMjIzNCw4ICsyMjM2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNsaXBfY29lZmZzKE1w
ZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKICAgICAgICAgYmxvY2tbal0gPSBsZXZl
bDsKICAgICB9CiAKLSAgICBpZiAob3ZlcmZsb3cgJiYgcy0+YXZjdHgtPm1iX2RlY2lzaW9uID09
IEZGX01CX0RFQ0lTSU9OX1NJTVBMRSkKLSAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0df
SU5GTywKKyAgICBpZiAob3ZlcmZsb3cgJiYgcy0+Yy5hdmN0eC0+bWJfZGVjaXNpb24gPT0gRkZf
TUJfREVDSVNJT05fU0lNUExFKQorICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0lO
Rk8sCiAgICAgICAgICAgICAgICAid2FybmluZywgY2xpcHBpbmcgJWQgZGN0IGNvZWZmaWNpZW50
cyB0byAlZC4uJWRcbiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvdywgbWlubGV2ZWwsIG1heGxl
dmVsKTsKIH0KQEAgLTIyNjQsNyArMjI2Niw3IEBAIHN0YXRpYyB2b2lkIGdldF92aXN1YWxfd2Vp
Z2h0KGludDE2X3QgKndlaWdodCwgY29uc3QgdWludDhfdCAqcHRyLCBpbnQgc3RyaWRlKQogICAg
IH0KIH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50ZXJuYWwo
TXBlZ0VuY0NvbnRleHQgKnMsCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9t
Yl9pbnRlcm5hbChNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3ksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfYmxv
Y2tfaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG1iX2Jsb2NrX3dpZHRoLApAQCAtMjI3NiwxNSArMjI3OCwxNSBAQCBzdGF0aWMgYXZf
YWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywK
IC8qIEludGVybGFjZWQgRENUIGlzIG9ubHkgcG9zc2libGUgd2l0aCBNUEVHLTIgYW5kIE1QRUct
NAogICogYW5kIG5laXRoZXIgb2YgdGhlc2UgZW5jb2RlcnMgY3VycmVudGx5IHN1cHBvcnRzIDQ0
NC4gKi8KICNkZWZpbmUgSU5URVJMQUNFRF9EQ1QocykgKChjaHJvbWFfZm9ybWF0ID09IENIUk9N
QV80MjAgfHwgY2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIyKSAmJiBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAocyktPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNF
RF9EQ1QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocyktPmMuYXZjdHgtPmZsYWdzICYg
QVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX0RDVCkKICAgICBpbnQxNl90IHdlaWdodFsxMl1bNjRd
OwogICAgIGludDE2X3Qgb3JpZ1sxMl1bNjRdOwotICAgIGNvbnN0IGludCBtYl94ID0gcy0+bWJf
eDsKLSAgICBjb25zdCBpbnQgbWJfeSA9IHMtPm1iX3k7CisgICAgY29uc3QgaW50IG1iX3ggPSBz
LT5jLm1iX3g7CisgICAgY29uc3QgaW50IG1iX3kgPSBzLT5jLm1iX3k7CiAgICAgaW50IGk7CiAg
ICAgaW50IHNraXBfZGN0WzEyXTsKLSAgICBpbnQgZGN0X29mZnNldCA9IHMtPmxpbmVzaXplICog
ODsgLy8gZGVmYXVsdCBmb3IgcHJvZ3Jlc3NpdmUgZnJhbWVzCi0gICAgaW50IHV2X2RjdF9vZmZz
ZXQgPSBzLT51dmxpbmVzaXplICogODsKKyAgICBpbnQgZGN0X29mZnNldCA9IHMtPmMubGluZXNp
emUgKiA4OyAvLyBkZWZhdWx0IGZvciBwcm9ncmVzc2l2ZSBmcmFtZXMKKyAgICBpbnQgdXZfZGN0
X29mZnNldCA9IHMtPmMudXZsaW5lc2l6ZSAqIDg7CiAgICAgY29uc3QgdWludDhfdCAqcHRyX3ks
ICpwdHJfY2IsICpwdHJfY3I7CiAgICAgcHRyZGlmZl90IHdyYXBfeSwgd3JhcF9jOwogCkBAIC0y
MjkyLDM3ICsyMjk0LDM3IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgZW5jb2RlX21i
X2ludGVybmFsKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICBza2lwX2RjdFtpXSA9IHMtPnNr
aXBkY3Q7CiAKICAgICBpZiAocy0+YWRhcHRpdmVfcXVhbnQpIHsKLSAgICAgICAgY29uc3QgaW50
IGxhc3RfcXAgPSBzLT5xc2NhbGU7Ci0gICAgICAgIGNvbnN0IGludCBtYl94eSA9IG1iX3ggKyBt
Yl95ICogcy0+bWJfc3RyaWRlOworICAgICAgICBjb25zdCBpbnQgbGFzdF9xcCA9IHMtPmMucXNj
YWxlOworICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBtYl94ICsgbWJfeSAqIHMtPmMubWJfc3Ry
aWRlOwogCi0gICAgICAgIHMtPmxhbWJkYSA9IHMtPmxhbWJkYV90YWJsZVttYl94eV07Ci0gICAg
ICAgIHMtPmxhbWJkYTIgPSAocy0+bGFtYmRhICogcy0+bGFtYmRhICsgRkZfTEFNQkRBX1NDQUxF
IC8gMikgPj4KLSAgICAgICAgICAgICAgICAgICAgIEZGX0xBTUJEQV9TSElGVDsKKyAgICAgICAg
cy0+Yy5sYW1iZGEgPSBzLT5sYW1iZGFfdGFibGVbbWJfeHldOworICAgICAgICBzLT5jLmxhbWJk
YTIgPSAocy0+Yy5sYW1iZGEgKiBzLT5jLmxhbWJkYSArIEZGX0xBTUJEQV9TQ0FMRSAvIDIpID4+
CisgICAgICAgICAgICAgICAgICAgICAgIEZGX0xBTUJEQV9TSElGVDsKIAogICAgICAgICBpZiAo
IShzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19RUF9SRCkpIHsKLSAgICAgICAgICAgIHMtPmRx
dWFudCA9IHMtPmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSAtIGxhc3RfcXA7CisgICAgICAg
ICAgICBzLT5kcXVhbnQgPSBzLT5jLmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSAtIGxhc3Rf
cXA7CiAKLSAgICAgICAgICAgIGlmIChzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYzKSB7CisgICAg
ICAgICAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzKSB7CiAgICAgICAgICAgICAg
ICAgcy0+ZHF1YW50ID0gYXZfY2xpcChzLT5kcXVhbnQsIC0yLCAyKTsKIAotICAgICAgICAgICAg
ICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXMtPm1iX2ludHJhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHMtPmRxdWFudCAmIDEgfHwgcy0+bXZfZGlyICYgTVZfRElSRUNUKQorICAg
ICAgICAgICAgICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmRxdWFudCAmIDEgfHwgcy0+Yy5tdl9kaXIg
JiBNVl9ESVJFQ1QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmRxdWFudCA9
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFXzhYOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzLT5jLm12X3R5cGUgPT0gTVZfVFlQRV84WDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy0+ZHF1YW50ID0gMDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmZl9zZXRfcXNjYWxlKHMsIGxh
c3RfcXAgKyBzLT5kcXVhbnQpOworICAgICAgICBmZl9zZXRfcXNjYWxlKCZzLT5jLCBsYXN0X3Fw
ICsgcy0+ZHF1YW50KTsKICAgICB9IGVsc2UgaWYgKHMtPm1wdl9mbGFncyAmIEZGX01QVl9GTEFH
X1FQX1JEKQotICAgICAgICBmZl9zZXRfcXNjYWxlKHMsIHMtPnFzY2FsZSArIHMtPmRxdWFudCk7
CisgICAgICAgIGZmX3NldF9xc2NhbGUoJnMtPmMsIHMtPmMucXNjYWxlICsgcy0+ZHF1YW50KTsK
IAotICAgIHdyYXBfeSA9IHMtPmxpbmVzaXplOwotICAgIHdyYXBfYyA9IHMtPnV2bGluZXNpemU7
CisgICAgd3JhcF95ID0gcy0+Yy5saW5lc2l6ZTsKKyAgICB3cmFwX2MgPSBzLT5jLnV2bGluZXNp
emU7CiAgICAgcHRyX3kgID0gcy0+bmV3X3BpYy0+ZGF0YVswXSArCiAgICAgICAgICAgICAgKG1i
X3kgKiAxNiAqIHdyYXBfeSkgICAgICAgICAgICAgICsgbWJfeCAqIDE2OwogICAgIHB0cl9jYiA9
IHMtPm5ld19waWMtPmRhdGFbMV0gKwpAQCAtMjMzMCwyMiArMjMzMiwyMyBAQCBzdGF0aWMgYXZf
YWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywK
ICAgICBwdHJfY3IgPSBzLT5uZXdfcGljLT5kYXRhWzJdICsKICAgICAgICAgICAgICAobWJfeSAq
IG1iX2Jsb2NrX2hlaWdodCAqIHdyYXBfYykgKyBtYl94ICogbWJfYmxvY2tfd2lkdGg7CiAKLSAg
ICBpZigobWJfeCAqIDE2ICsgMTYgPiBzLT53aWR0aCB8fCBtYl95ICogMTYgKyAxNiA+IHMtPmhl
aWdodCkgJiYgcy0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfQU1WKXsKLSAgICAgICAgdWludDhf
dCAqZWJ1ZiA9IHMtPnNjLmVkZ2VfZW11X2J1ZmZlciArIDM4ICogd3JhcF95OwotICAgICAgICBp
bnQgY3cgPSAocy0+d2lkdGggICsgY2hyb21hX3hfc2hpZnQpID4+IGNocm9tYV94X3NoaWZ0Owot
ICAgICAgICBpbnQgY2ggPSAocy0+aGVpZ2h0ICsgY2hyb21hX3lfc2hpZnQpID4+IGNocm9tYV95
X3NoaWZ0OwotICAgICAgICBzLT52ZHNwLmVtdWxhdGVkX2VkZ2VfbWMoZWJ1ZiwgcHRyX3ksCisg
ICAgaWYgKChtYl94ICogMTYgKyAxNiA+IHMtPmMud2lkdGggfHwgbWJfeSAqIDE2ICsgMTYgPiBz
LT5jLmhlaWdodCkgJiYKKyAgICAgICAgcy0+Yy5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9BTVYp
IHsKKyAgICAgICAgdWludDhfdCAqZWJ1ZiA9IHMtPmMuc2MuZWRnZV9lbXVfYnVmZmVyICsgMzgg
KiB3cmFwX3k7CisgICAgICAgIGludCBjdyA9IChzLT5jLndpZHRoICArIGNocm9tYV94X3NoaWZ0
KSA+PiBjaHJvbWFfeF9zaGlmdDsKKyAgICAgICAgaW50IGNoID0gKHMtPmMuaGVpZ2h0ICsgY2hy
b21hX3lfc2hpZnQpID4+IGNocm9tYV95X3NoaWZ0OworICAgICAgICBzLT5jLnZkc3AuZW11bGF0
ZWRfZWRnZV9tYyhlYnVmLCBwdHJfeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyYXBfeSwgd3JhcF95LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCBtYl94ICogMTYsIG1iX3kgKiAxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMtPndpZHRoLCBzLT5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cy0+Yy53aWR0aCwgcy0+Yy5oZWlnaHQpOwogICAgICAgICBwdHJfeSA9IGVidWY7Ci0gICAgICAg
IHMtPnZkc3AuZW11bGF0ZWRfZWRnZV9tYyhlYnVmICsgMTYgKiB3cmFwX3ksIHB0cl9jYiwKKyAg
ICAgICAgcy0+Yy52ZHNwLmVtdWxhdGVkX2VkZ2VfbWMoZWJ1ZiArIDE2ICogd3JhcF95LCBwdHJf
Y2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2MsIHdyYXBfYywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iX2Jsb2NrX3dpZHRoLCBtYl9ibG9ja19o
ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYl94ICogbWJfYmxvY2tf
d2lkdGgsIG1iX3kgKiBtYl9ibG9ja19oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdywgY2gpOwogICAgICAgICBwdHJfY2IgPSBlYnVmICsgMTYgKiB3cmFwX3k7Ci0g
ICAgICAgIHMtPnZkc3AuZW11bGF0ZWRfZWRnZV9tYyhlYnVmICsgMTYgKiB3cmFwX3kgKyAxNiwg
cHRyX2NyLAorICAgICAgICBzLT5jLnZkc3AuZW11bGF0ZWRfZWRnZV9tYyhlYnVmICsgMTYgKiB3
cmFwX3kgKyAxNiwgcHRyX2NyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jh
cF9jLCB3cmFwX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYl9ibG9ja193
aWR0aCwgbWJfYmxvY2tfaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWJfeCAqIG1iX2Jsb2NrX3dpZHRoLCBtYl95ICogbWJfYmxvY2tfaGVpZ2h0LApAQCAtMjM1Mywx
MSArMjM1NiwxMSBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRl
cm5hbChNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgcHRyX2NyID0gZWJ1ZiArIDE2ICogd3Jh
cF95ICsgMTY7CiAgICAgfQogCi0gICAgaWYgKHMtPm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMu
bWJfaW50cmEpIHsKICAgICAgICAgaWYgKElOVEVSTEFDRURfRENUKHMpKSB7CiAgICAgICAgICAg
ICBpbnQgcHJvZ3Jlc3NpdmVfc2NvcmUsIGludGVybGFjZWRfc2NvcmU7CiAKLSAgICAgICAgICAg
IHMtPmludGVybGFjZWRfZGN0ID0gMDsKKyAgICAgICAgICAgIHMtPmMuaW50ZXJsYWNlZF9kY3Qg
PSAwOwogICAgICAgICAgICAgcHJvZ3Jlc3NpdmVfc2NvcmUgPSBzLT5pbGRjdF9jbXBbMV0ocywg
cHRyX3ksIE5VTEwsIHdyYXBfeSwgOCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5pbGRjdF9jbXBbMV0ocywgcHRyX3kgKyB3cmFwX3kgKiA4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgd3JhcF95LCA4KSAtIDQwMDsK
QEAgLTIzNjgsNyArMjM3MSw3IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgZW5jb2Rl
X21iX2ludGVybmFsKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5pbGRjdF9jbXBbMV0ocywgcHRyX3kgKyB3cmFwX3ksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCB3cmFwX3kgKiAy
LCA4KTsKICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3NpdmVfc2NvcmUgPiBpbnRlcmxhY2Vk
X3Njb3JlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmludGVybGFjZWRfZGN0ID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRlcmxhY2VkX2RjdCA9IDE7CiAKICAgICAgICAgICAg
ICAgICAgICAgZGN0X29mZnNldCA9IHdyYXBfeTsKICAgICAgICAgICAgICAgICAgICAgdXZfZGN0
X29mZnNldCA9IHdyYXBfYzsKQEAgLTIzODAsMjcgKzIzODMsMjcgQEAgc3RhdGljIGF2X2Fsd2F5
c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Ymxv
Y2tbMF0sIHB0cl95LCAgICAgICAgICAgICAgICAgIHdyYXBfeSk7Ci0gICAgICAgIHMtPnBkc3Au
Z2V0X3BpeGVscyhzLT5ibG9ja1sxXSwgcHRyX3kgKyA4LCAgICAgICAgICAgICAgd3JhcF95KTsK
LSAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmJsb2NrWzJdLCBwdHJfeSArIGRjdF9vZmZz
ZXQsICAgICB3cmFwX3kpOwotICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tbM10s
IHB0cl95ICsgZGN0X29mZnNldCArIDgsIHdyYXBfeSk7CisgICAgICAgIHMtPnBkc3AuZ2V0X3Bp
eGVscyhzLT5jLmJsb2NrWzBdLCBwdHJfeSwgICAgICAgICAgICAgICAgICB3cmFwX3kpOworICAg
ICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sxXSwgcHRyX3kgKyA4LCAgICAgICAg
ICAgICAgd3JhcF95KTsKKyAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmMuYmxvY2tbMl0s
IHB0cl95ICsgZGN0X29mZnNldCwgICAgIHdyYXBfeSk7CisgICAgICAgIHMtPnBkc3AuZ2V0X3Bp
eGVscyhzLT5jLmJsb2NrWzNdLCBwdHJfeSArIGRjdF9vZmZzZXQgKyA4LCB3cmFwX3kpOwogCi0g
ICAgICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpIHsKKyAgICAg
ICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSB7CiAgICAgICAg
ICAgICBza2lwX2RjdFs0XSA9IDE7CiAgICAgICAgICAgICBza2lwX2RjdFs1XSA9IDE7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tbNF0s
IHB0cl9jYiwgd3JhcF9jKTsKLSAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5ibG9j
a1s1XSwgcHRyX2NyLCB3cmFwX2MpOworICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMt
PmMuYmxvY2tbNF0sIHB0cl9jYiwgd3JhcF9jKTsKKyAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3Bp
eGVscyhzLT5jLmJsb2NrWzVdLCBwdHJfY3IsIHdyYXBfYyk7CiAgICAgICAgICAgICBpZiAoY2hy
b21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIyKSB7Ci0gICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRf
cGl4ZWxzKHMtPmJsb2NrWzZdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0LCB3cmFwX2MpOwotICAg
ICAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5ibG9ja1s3XSwgcHRyX2NyICsgdXZf
ZGN0X29mZnNldCwgd3JhcF9jKTsKKyAgICAgICAgICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMo
cy0+Yy5ibG9ja1s2XSwgcHRyX2NiICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKKyAgICAgICAg
ICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1s3XSwgcHRyX2NyICsgdXZfZGN0
X29mZnNldCwgd3JhcF9jKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hyb21hX2Zvcm1hdCA9
PSBDSFJPTUFfNDQ0KSB7Ci0gICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmJs
b2NrWyA2XSwgcHRyX2NiICsgOCwgd3JhcF9jKTsKLSAgICAgICAgICAgICAgICBzLT5wZHNwLmdl
dF9waXhlbHMocy0+YmxvY2tbIDddLCBwdHJfY3IgKyA4LCB3cmFwX2MpOwotICAgICAgICAgICAg
ICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5ibG9ja1sgOF0sIHB0cl9jYiArIHV2X2RjdF9vZmZz
ZXQsIHdyYXBfYyk7Ci0gICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmJsb2Nr
WyA5XSwgcHRyX2NyICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKLSAgICAgICAgICAgICAgICBz
LT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tbMTBdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0ICsg
OCwgd3JhcF9jKTsKLSAgICAgICAgICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tb
MTFdLCBwdHJfY3IgKyB1dl9kY3Rfb2Zmc2V0ICsgOCwgd3JhcF9jKTsKKyAgICAgICAgICAgICAg
ICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sgNl0sIHB0cl9jYiArIDgsIHdyYXBfYyk7
CisgICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmMuYmxvY2tbIDddLCBwdHJf
Y3IgKyA4LCB3cmFwX2MpOworICAgICAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5j
LmJsb2NrWyA4XSwgcHRyX2NiICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKKyAgICAgICAgICAg
ICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sgOV0sIHB0cl9jciArIHV2X2RjdF9v
ZmZzZXQsIHdyYXBfYyk7CisgICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmMu
YmxvY2tbMTBdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0ICsgOCwgd3JhcF9jKTsKKyAgICAgICAg
ICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sxMV0sIHB0cl9jciArIHV2X2Rj
dF9vZmZzZXQgKyA4LCB3cmFwX2MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKQEAgLTI0MDgsNDEgKzI0MTEsNDEgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9p
ZCBlbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgIHFwZWxfbWNf
ZnVuYyAoKm9wX3FwaXgpWzE2XTsKICAgICAgICAgdWludDhfdCAqZGVzdF95LCAqZGVzdF9jYiwg
KmRlc3RfY3I7CiAKLSAgICAgICAgZGVzdF95ICA9IHMtPmRlc3RbMF07Ci0gICAgICAgIGRlc3Rf
Y2IgPSBzLT5kZXN0WzFdOwotICAgICAgICBkZXN0X2NyID0gcy0+ZGVzdFsyXTsKKyAgICAgICAg
ZGVzdF95ICA9IHMtPmMuZGVzdFswXTsKKyAgICAgICAgZGVzdF9jYiA9IHMtPmMuZGVzdFsxXTsK
KyAgICAgICAgZGVzdF9jciA9IHMtPmMuZGVzdFsyXTsKIAotICAgICAgICBpZiAoKCFzLT5ub19y
b3VuZGluZykgfHwgcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Ci0gICAgICAg
ICAgICBvcF9waXggID0gcy0+aGRzcC5wdXRfcGl4ZWxzX3RhYjsKLSAgICAgICAgICAgIG9wX3Fw
aXggPSBzLT5xZHNwLnB1dF9xcGVsX3BpeGVsc190YWI7CisgICAgICAgIGlmICgoIXMtPmMubm9f
cm91bmRpbmcpIHx8IHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAg
ICAgICAgICBvcF9waXggID0gcy0+Yy5oZHNwLnB1dF9waXhlbHNfdGFiOworICAgICAgICAgICAg
b3BfcXBpeCA9IHMtPmMucWRzcC5wdXRfcXBlbF9waXhlbHNfdGFiOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgb3BfcGl4ICA9IHMtPmhkc3AucHV0X25vX3JuZF9waXhlbHNfdGFiOwot
ICAgICAgICAgICAgb3BfcXBpeCA9IHMtPnFkc3AucHV0X25vX3JuZF9xcGVsX3BpeGVsc190YWI7
CisgICAgICAgICAgICBvcF9waXggID0gcy0+Yy5oZHNwLnB1dF9ub19ybmRfcGl4ZWxzX3RhYjsK
KyAgICAgICAgICAgIG9wX3FwaXggPSBzLT5jLnFkc3AucHV0X25vX3JuZF9xcGVsX3BpeGVsc190
YWI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0ZPUldBUkQp
IHsKLSAgICAgICAgICAgIGZmX21wdl9tb3Rpb24ocywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2Ny
LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X3BpYy5kYXRhLAorICAgICAg
ICBpZiAocy0+Yy5tdl9kaXIgJiBNVl9ESVJfRk9SV0FSRCkgeworICAgICAgICAgICAgZmZfbXB2
X21vdGlvbigmcy0+YywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyLCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLT5jLmxhc3RfcGljLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wX3BpeCwgb3BfcXBpeCk7Ci0gICAgICAgICAgICBvcF9waXggID0gcy0+aGRzcC5hdmdf
cGl4ZWxzX3RhYjsKLSAgICAgICAgICAgIG9wX3FwaXggPSBzLT5xZHNwLmF2Z19xcGVsX3BpeGVs
c190YWI7CisgICAgICAgICAgICBvcF9waXggID0gcy0+Yy5oZHNwLmF2Z19waXhlbHNfdGFiOwor
ICAgICAgICAgICAgb3BfcXBpeCA9IHMtPmMucWRzcC5hdmdfcXBlbF9waXhlbHNfdGFiOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChzLT5tdl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKLSAgICAg
ICAgICAgIGZmX21wdl9tb3Rpb24ocywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyLCAxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLT5uZXh0X3BpYy5kYXRhLAorICAgICAgICBpZiAocy0+
Yy5tdl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKKyAgICAgICAgICAgIGZmX21wdl9tb3Rpb24o
JnMtPmMsIGRlc3RfeSwgZGVzdF9jYiwgZGVzdF9jciwgMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5uZXh0X3BpYy5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9w
aXgsIG9wX3FwaXgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKElOVEVSTEFDRURfRENUKHMp
KSB7CiAgICAgICAgICAgICBpbnQgcHJvZ3Jlc3NpdmVfc2NvcmUsIGludGVybGFjZWRfc2NvcmU7
CiAKLSAgICAgICAgICAgIHMtPmludGVybGFjZWRfZGN0ID0gMDsKKyAgICAgICAgICAgIHMtPmMu
aW50ZXJsYWNlZF9kY3QgPSAwOwogICAgICAgICAgICAgcHJvZ3Jlc3NpdmVfc2NvcmUgPSBzLT5p
bGRjdF9jbXBbMF0ocywgZGVzdF95LCBwdHJfeSwgd3JhcF95LCA4KSArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPmlsZGN0X2NtcFswXShzLCBkZXN0X3kgKyB3cmFwX3kgKiA4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyX3kg
KyB3cmFwX3kgKiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JhcF95LCA4KSAtIDQwMDsKIAotICAgICAgICAgICAgaWYgKHMtPmF2Y3R4LT5pbGRj
dF9jbXAgPT0gRkZfQ01QX1ZTU0UpCisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+aWxkY3Rf
Y21wID09IEZGX0NNUF9WU1NFKQogICAgICAgICAgICAgICAgIHByb2dyZXNzaXZlX3Njb3JlIC09
IDQwMDsKIAogICAgICAgICAgICAgaWYgKHByb2dyZXNzaXZlX3Njb3JlID4gMCkgewpAQCAtMjQ1
Myw3ICsyNDU2LDcgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50
ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cmFwX3kgKiAyLCA4KTsKIAogICAgICAgICAgICAgICAgIGlm
IChwcm9ncmVzc2l2ZV9zY29yZSA+IGludGVybGFjZWRfc2NvcmUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcy0+aW50ZXJsYWNlZF9kY3QgPSAxOworICAgICAgICAgICAgICAgICAgICBzLT5jLmlu
dGVybGFjZWRfZGN0ID0gMTsKIAogICAgICAgICAgICAgICAgICAgICBkY3Rfb2Zmc2V0ID0gd3Jh
cF95OwogICAgICAgICAgICAgICAgICAgICB1dl9kY3Rfb2Zmc2V0ID0gd3JhcF9jOwpAQCAtMjQ2
NCw1MSArMjQ2Nyw1MSBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9p
bnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbMF0sIHB0cl95LCBkZXN0X3ksIHdy
YXBfeSk7Ci0gICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbMV0sIHB0cl95ICsg
OCwgZGVzdF95ICsgOCwgd3JhcF95KTsKLSAgICAgICAgcy0+cGRzcC5kaWZmX3BpeGVscyhzLT5i
bG9ja1syXSwgcHRyX3kgKyBkY3Rfb2Zmc2V0LAorICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxz
KHMtPmMuYmxvY2tbMF0sIHB0cl95LCBkZXN0X3ksIHdyYXBfeSk7CisgICAgICAgIHMtPnBkc3Au
ZGlmZl9waXhlbHMocy0+Yy5ibG9ja1sxXSwgcHRyX3kgKyA4LCBkZXN0X3kgKyA4LCB3cmFwX3kp
OworICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmMuYmxvY2tbMl0sIHB0cl95ICsgZGN0
X29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3kgKyBkY3Rfb2Zmc2V0
LCB3cmFwX3kpOwotICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmJsb2NrWzNdLCBwdHJf
eSArIGRjdF9vZmZzZXQgKyA4LAorICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmMuYmxv
Y2tbM10sIHB0cl95ICsgZGN0X29mZnNldCArIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdF95ICsgZGN0X29mZnNldCArIDgsIHdyYXBfeSk7CiAKLSAgICAgICAgaWYgKHMtPmF2
Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkgeworICAgICAgICBpZiAocy0+Yy5hdmN0
eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpIHsKICAgICAgICAgICAgIHNraXBfZGN0WzRd
ID0gMTsKICAgICAgICAgICAgIHNraXBfZGN0WzVdID0gMTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbNF0sIHB0cl9jYiwgZGVzdF9j
Yiwgd3JhcF9jKTsKLSAgICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbNV0s
IHB0cl9jciwgZGVzdF9jciwgd3JhcF9jKTsKKyAgICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhl
bHMocy0+Yy5ibG9ja1s0XSwgcHRyX2NiLCBkZXN0X2NiLCB3cmFwX2MpOworICAgICAgICAgICAg
cy0+cGRzcC5kaWZmX3BpeGVscyhzLT5jLmJsb2NrWzVdLCBwdHJfY3IsIGRlc3RfY3IsIHdyYXBf
Yyk7CiAgICAgICAgICAgICBpZiAoIWNocm9tYV95X3NoaWZ0KSB7IC8qIDQyMiAqLwotICAgICAg
ICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbNl0sIHB0cl9jYiArIHV2X2Rj
dF9vZmZzZXQsCisgICAgICAgICAgICAgICAgcy0+cGRzcC5kaWZmX3BpeGVscyhzLT5jLmJsb2Nr
WzZdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdF9jYiArIHV2X2RjdF9vZmZzZXQsIHdyYXBfYyk7Ci0gICAgICAgICAgICAg
ICAgcy0+cGRzcC5kaWZmX3BpeGVscyhzLT5ibG9ja1s3XSwgcHRyX2NyICsgdXZfZGN0X29mZnNl
dCwKKyAgICAgICAgICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmMuYmxvY2tbN10sIHB0
cl9jciArIHV2X2RjdF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0X2NyICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAvKiBwcmUgcXVhbnRpemF0aW9uICovCi0gICAgICAgIGlmIChzLT5tY19t
Yl92YXJbcy0+bWJfc3RyaWRlICogbWJfeSArIG1iX3hdIDwgMiAqIHMtPnFzY2FsZSAqIHMtPnFz
Y2FsZSkgeworICAgICAgICBpZiAocy0+bWNfbWJfdmFyW3MtPmMubWJfc3RyaWRlICogbWJfeSAr
IG1iX3hdIDwgMiAqIHMtPmMucXNjYWxlICogcy0+Yy5xc2NhbGUpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FIG9wdGltaXplCi0gICAgICAgICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJf
eSwgZGVzdF95LCB3cmFwX3ksIDgpIDwgMjAgKiBzLT5xc2NhbGUpCisgICAgICAgICAgICBpZiAo
cy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfeSwgZGVzdF95LCB3cmFwX3ksIDgpIDwgMjAgKiBzLT5j
LnFzY2FsZSkKICAgICAgICAgICAgICAgICBza2lwX2RjdFswXSA9IDE7Ci0gICAgICAgICAgICBp
ZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfeSArIDgsIGRlc3RfeSArIDgsIHdyYXBfeSwgOCkg
PCAyMCAqIHMtPnFzY2FsZSkKKyAgICAgICAgICAgIGlmIChzLT5zYWRfY21wWzFdKE5VTEwsIHB0
cl95ICsgOCwgZGVzdF95ICsgOCwgd3JhcF95LCA4KSA8IDIwICogcy0+Yy5xc2NhbGUpCiAgICAg
ICAgICAgICAgICAgc2tpcF9kY3RbMV0gPSAxOwogICAgICAgICAgICAgaWYgKHMtPnNhZF9jbXBb
MV0oTlVMTCwgcHRyX3kgKyBkY3Rfb2Zmc2V0LCBkZXN0X3kgKyBkY3Rfb2Zmc2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF95LCA4KSA8IDIwICogcy0+cXNjYWxlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF95LCA4KSA8IDIwICogcy0+Yy5xc2NhbGUp
CiAgICAgICAgICAgICAgICAgc2tpcF9kY3RbMl0gPSAxOwogICAgICAgICAgICAgaWYgKHMtPnNh
ZF9jbXBbMV0oTlVMTCwgcHRyX3kgKyBkY3Rfb2Zmc2V0ICsgOCwgZGVzdF95ICsgZGN0X29mZnNl
dCArIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX3ksIDgpIDwgMjAgKiBz
LT5xc2NhbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX3ksIDgpIDwgMjAg
KiBzLT5jLnFzY2FsZSkKICAgICAgICAgICAgICAgICBza2lwX2RjdFszXSA9IDE7Ci0gICAgICAg
ICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfY2IsIGRlc3RfY2IsIHdyYXBfYywgOCkg
PCAyMCAqIHMtPnFzY2FsZSkKKyAgICAgICAgICAgIGlmIChzLT5zYWRfY21wWzFdKE5VTEwsIHB0
cl9jYiwgZGVzdF9jYiwgd3JhcF9jLCA4KSA8IDIwICogcy0+Yy5xc2NhbGUpCiAgICAgICAgICAg
ICAgICAgc2tpcF9kY3RbNF0gPSAxOwotICAgICAgICAgICAgaWYgKHMtPnNhZF9jbXBbMV0oTlVM
TCwgcHRyX2NyLCBkZXN0X2NyLCB3cmFwX2MsIDgpIDwgMjAgKiBzLT5xc2NhbGUpCisgICAgICAg
ICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfY3IsIGRlc3RfY3IsIHdyYXBfYywgOCkg
PCAyMCAqIHMtPmMucXNjYWxlKQogICAgICAgICAgICAgICAgIHNraXBfZGN0WzVdID0gMTsKICAg
ICAgICAgICAgIGlmICghY2hyb21hX3lfc2hpZnQpIHsgLyogNDIyICovCiAgICAgICAgICAgICAg
ICAgaWYgKHMtPnNhZF9jbXBbMV0oTlVMTCwgcHRyX2NiICsgdXZfZGN0X29mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2NiICsgdXZfZGN0X29mZnNldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2MsIDgpIDwgMjAgKiBzLT5xc2Nh
bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF9jLCA4KSA8IDIwICog
cy0+Yy5xc2NhbGUpCiAgICAgICAgICAgICAgICAgICAgIHNraXBfZGN0WzZdID0gMTsKICAgICAg
ICAgICAgICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfY3IgKyB1dl9kY3Rfb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfY3IgKyB1dl9kY3Rfb2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBfYywgOCkgPCAyMCAq
IHMtPnFzY2FsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2MsIDgp
IDwgMjAgKiBzLT5jLnFzY2FsZSkKICAgICAgICAgICAgICAgICAgICAgc2tpcF9kY3RbN10gPSAx
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNTM1LDEwMiArMjUzOCwxMDIgQEAgc3Rh
dGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRl
eHQgKnMsCiAgICAgICAgICAgICAgICAgZ2V0X3Zpc3VhbF93ZWlnaHQod2VpZ2h0WzddLCBwdHJf
Y3IgKyB1dl9kY3Rfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
YXBfYyk7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KG9yaWdbMF0sIHMtPmJsb2NrWzBdLCBz
aXplb2YoaW50MTZfdCkgKiA2NCAqIG1iX2Jsb2NrX2NvdW50KTsKKyAgICAgICAgbWVtY3B5KG9y
aWdbMF0sIHMtPmMuYmxvY2tbMF0sIHNpemVvZihpbnQxNl90KSAqIDY0ICogbWJfYmxvY2tfY291
bnQpOwogICAgIH0KIAogICAgIC8qIERDVCAmIHF1YW50aXplICovCi0gICAgYXZfYXNzZXJ0Mihz
LT5vdXRfZm9ybWF0ICE9IEZNVF9NSlBFRyB8fCBzLT5xc2NhbGUgPT0gOCk7CisgICAgYXZfYXNz
ZXJ0MihzLT5jLm91dF9mb3JtYXQgIT0gRk1UX01KUEVHIHx8IHMtPmMucXNjYWxlID09IDgpOwog
ICAgIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2NvdW50OyBpKyspIHsKICAg
ICAgICAgICAgIGlmICghc2tpcF9kY3RbaV0pIHsKICAgICAgICAgICAgICAgICBpbnQgb3ZlcmZs
b3c7Ci0gICAgICAgICAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtpXSA9IHMtPmRjdF9xdWFu
dGl6ZShzLCBzLT5ibG9ja1tpXSwgaSwgcy0+cXNjYWxlLCAmb3ZlcmZsb3cpOworICAgICAgICAg
ICAgICAgIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA9IHMtPmRjdF9xdWFudGl6ZShzLCBzLT5j
LmJsb2NrW2ldLCBpLCBzLT5jLnFzY2FsZSwgJm92ZXJmbG93KTsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRSB3ZSBjb3VsZCBkZWNpZGUgdG8gY2hhbmdlIHRvIHF1YW50aXplciBpbnN0ZWFkIG9m
CiAgICAgICAgICAgICAgICAgLy8gY2xpcHBpbmcKICAgICAgICAgICAgICAgICAvLyBKUzogSSBk
b24ndCB0aGluayB0aGF0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIGl0IGNvdWxkIGxvd2VyCiAgICAg
ICAgICAgICAgICAgLy8gICAgIHF1YWxpdHkgaW5zdGVhZCBvZiBpbXByb3ZlIGl0LiBKdXN0IElO
VFJBREMgY2xpcHBpbmcKICAgICAgICAgICAgICAgICAvLyAgICAgZGVzZXJ2ZXMgY2hhbmdlcyBp
biBxdWFudGl6ZXIKICAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAgICAgICAg
ICAgICAgIGNsaXBfY29lZmZzKHMsIHMtPmJsb2NrW2ldLCBzLT5ibG9ja19sYXN0X2luZGV4W2ld
KTsKKyAgICAgICAgICAgICAgICAgICAgY2xpcF9jb2VmZnMocywgcy0+Yy5ibG9ja1tpXSwgcy0+
Yy5ibG9ja19sYXN0X2luZGV4W2ldKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKKyAgICAgICAgICAgICAgICBzLT5jLmJs
b2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAocy0+cXVhbnRp
emVyX25vaXNlX3NoYXBpbmcpIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtYl9ibG9j
a19jb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFza2lwX2RjdFtpXSkgewotICAg
ICAgICAgICAgICAgICAgICBzLT5ibG9ja19sYXN0X2luZGV4W2ldID0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRjdF9xdWFudGl6ZV9yZWZpbmUocywgcy0+YmxvY2tbaV0sIHdlaWdodFtpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ1tpXSwgaSwg
cy0+cXNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2luZGV4W2ld
ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9xdWFudGl6ZV9yZWZpbmUocywgcy0+Yy5i
bG9ja1tpXSwgd2VpZ2h0W2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcmlnW2ldLCBpLCBzLT5jLnFzY2FsZSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHMtPmx1bWFfZWxpbV90aHJlc2hv
bGQgJiYgIXMtPm1iX2ludHJhKQorICAgICAgICBpZiAocy0+bHVtYV9lbGltX3RocmVzaG9sZCAm
JiAhcy0+Yy5tYl9pbnRyYSkKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAg
ICAgICAgICAgICAgICAgZGN0X3NpbmdsZV9jb2VmZl9lbGltaW5hdGlvbihzLCBpLCBzLT5sdW1h
X2VsaW1fdGhyZXNob2xkKTsKLSAgICAgICAgaWYgKHMtPmNocm9tYV9lbGltX3RocmVzaG9sZCAm
JiAhcy0+bWJfaW50cmEpCisgICAgICAgIGlmIChzLT5jaHJvbWFfZWxpbV90aHJlc2hvbGQgJiYg
IXMtPmMubWJfaW50cmEpCiAgICAgICAgICAgICBmb3IgKGkgPSA0OyBpIDwgbWJfYmxvY2tfY291
bnQ7IGkrKykKICAgICAgICAgICAgICAgICBkY3Rfc2luZ2xlX2NvZWZmX2VsaW1pbmF0aW9uKHMs
IGksIHMtPmNocm9tYV9lbGltX3RocmVzaG9sZCk7CiAKICAgICAgICAgaWYgKHMtPm1wdl9mbGFn
cyAmIEZGX01QVl9GTEFHX0NCUF9SRCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1i
X2Jsb2NrX2NvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9p
bmRleFtpXSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5ibG9ja19sYXN0X2luZGV4
W2ldID09IC0xKQogICAgICAgICAgICAgICAgICAgICBzLT5jb2RlZF9zY29yZVtpXSA9IElOVF9N
QVggLyAyNTY7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKHMt
PmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkgJiYgcy0+bWJfaW50cmEpIHsKLSAg
ICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFs0XSA9Ci0gICAgICAgIHMtPmJsb2NrX2xhc3RfaW5k
ZXhbNV0gPSAwOwotICAgICAgICBzLT5ibG9ja1s0XVswXSA9Ci0gICAgICAgIHMtPmJsb2NrWzVd
WzBdID0gKDEwMjQgKyBzLT5jX2RjX3NjYWxlIC8gMikgLyBzLT5jX2RjX3NjYWxlOworICAgIGlm
ICgocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpICYmIHMtPmMubWJfaW50
cmEpIHsKKyAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2luZGV4WzRdID0KKyAgICAgICAgcy0+Yy5i
bG9ja19sYXN0X2luZGV4WzVdID0gMDsKKyAgICAgICAgcy0+Yy5ibG9ja1s0XVswXSA9CisgICAg
ICAgIHMtPmMuYmxvY2tbNV1bMF0gPSAoMTAyNCArIHMtPmMuY19kY19zY2FsZSAvIDIpIC8gcy0+
Yy5jX2RjX3NjYWxlOwogICAgICAgICBpZiAoIWNocm9tYV95X3NoaWZ0KSB7IC8qIDQyMiAvIDQ0
NCAqLwogICAgICAgICAgICAgZm9yIChpPTY7IGk8MTI7IGkrKykgewotICAgICAgICAgICAgICAg
IHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAwOwotICAgICAgICAgICAgICAgIHMtPmJsb2NrW2ld
WzBdID0gcy0+YmxvY2tbNF1bMF07CisgICAgICAgICAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2lu
ZGV4W2ldID0gMDsKKyAgICAgICAgICAgICAgICBzLT5jLmJsb2NrW2ldWzBdID0gcy0+Yy5ibG9j
a1s0XVswXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIG5vbiBj
IHF1YW50aXplIGNvZGUgcmV0dXJucyBpbmNvcnJlY3QgYmxvY2tfbGFzdF9pbmRleCBGSVhNRQot
ICAgIGlmIChzLT5hbHRlcm5hdGVfc2NhbiAmJiBzLT5kY3RfcXVhbnRpemUgIT0gZGN0X3F1YW50
aXplX2MpIHsKKyAgICBpZiAocy0+Yy5hbHRlcm5hdGVfc2NhbiAmJiBzLT5kY3RfcXVhbnRpemUg
IT0gZGN0X3F1YW50aXplX2MpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2Nv
dW50OyBpKyspIHsKICAgICAgICAgICAgIGludCBqOwotICAgICAgICAgICAgaWYgKHMtPmJsb2Nr
X2xhc3RfaW5kZXhbaV0gPiAwKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5ibG9ja19sYXN0X2lu
ZGV4W2ldID4gMCkgewogICAgICAgICAgICAgICAgIGZvciAoaiA9IDYzOyBqID4gMDsgai0tKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5ibG9ja1tpXVtzLT5pbnRyYV9zY2FudGFibGUu
cGVybXV0YXRlZFtqXV0pCisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrW2ldW3Mt
PmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbal1dKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMtPmJsb2NrX2xh
c3RfaW5kZXhbaV0gPSBqOworICAgICAgICAgICAgICAgIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtp
XSA9IGo7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzLT5lbmNvZGVf
bWIocywgcy0+YmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSk7CisgICAgcy0+ZW5jb2RlX21iKHMs
IHMtPmMuYmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29k
ZV9tYihNcGVnRW5jQ29udGV4dCAqcywgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpCitzdGF0
aWMgdm9pZCBlbmNvZGVfbWIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG1vdGlvbl94LCBp
bnQgbW90aW9uX3kpCiB7Ci0gICAgaWYgKHMtPmNocm9tYV9mb3JtYXQgPT0gQ0hST01BXzQyMCkK
KyAgICBpZiAocy0+Yy5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80MjApCiAgICAgICAgIGVuY29k
ZV9tYl9pbnRlcm5hbChzLCBtb3Rpb25feCwgbW90aW9uX3ksICA4LCA4LCA2LCAxLCAxLCBDSFJP
TUFfNDIwKTsKLSAgICBlbHNlIGlmIChzLT5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80MjIpCisg
ICAgZWxzZSBpZiAocy0+Yy5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80MjIpCiAgICAgICAgIGVu
Y29kZV9tYl9pbnRlcm5hbChzLCBtb3Rpb25feCwgbW90aW9uX3ksIDE2LCA4LCA4LCAxLCAwLCBD
SFJPTUFfNDIyKTsKICAgICBlbHNlCiAgICAgICAgIGVuY29kZV9tYl9pbnRlcm5hbChzLCBtb3Rp
b25feCwgbW90aW9uX3ksIDE2LCAxNiwgMTIsIDAsIDAsIENIUk9NQV80NDQpOwogfQogCi1zdGF0
aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2JlZm9yZV9lbmNvZGUoTXBlZ0VuY0NvbnRleHQg
KmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TXBlZ0VuY0NvbnRleHQgKnMpCitzdGF0aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2JlZm9y
ZV9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewog
ICAgIGludCBpOwogCi0gICAgbWVtY3B5KGQtPmxhc3RfbXYsIHMtPmxhc3RfbXYsIDIqMioyKnNp
emVvZihpbnQpKTsgLy9GSVhNRSBpcyBtZW1jcHkgZmFzdGVyIHRoYW4gYSBsb29wPworICAgIG1l
bWNweShkLT5jLmxhc3RfbXYsIHMtPmMubGFzdF9tdiwgMioyKjIqc2l6ZW9mKGludCkpOyAvL0ZJ
WE1FIGlzIG1lbWNweSBmYXN0ZXIgdGhhbiBhIGxvb3A/CiAKICAgICAvKiBNUEVHLTEgKi8KLSAg
ICBkLT5tYl9za2lwX3J1bj0gcy0+bWJfc2tpcF9ydW47CisgICAgZC0+Yy5tYl9za2lwX3J1biA9
IHMtPmMubWJfc2tpcF9ydW47CiAgICAgZm9yKGk9MDsgaTwzOyBpKyspCi0gICAgICAgIGQtPmxh
c3RfZGNbaV0gPSBzLT5sYXN0X2RjW2ldOworICAgICAgICBkLT5jLmxhc3RfZGNbaV0gPSBzLT5j
Lmxhc3RfZGNbaV07CiAKICAgICAvKiBzdGF0aXN0aWNzICovCiAgICAgZC0+bXZfYml0cz0gcy0+
bXZfYml0czsKQEAgLTI2NDAsMjUgKzI2NDMsMjUgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvcHlf
Y29udGV4dF9iZWZvcmVfZW5jb2RlKE1wZWdFbmNDb250ZXh0ICpkLAogICAgIGQtPm1pc2NfYml0
cz0gcy0+bWlzY19iaXRzOwogICAgIGQtPmxhc3RfYml0cz0gMDsKIAotICAgIGQtPm1iX3NraXBw
ZWQ9IDA7Ci0gICAgZC0+cXNjYWxlPSBzLT5xc2NhbGU7CisgICAgZC0+Yy5tYl9za2lwcGVkID0g
MDsKKyAgICBkLT5jLnFzY2FsZSA9IHMtPmMucXNjYWxlOwogICAgIGQtPmRxdWFudD0gcy0+ZHF1
YW50OwogCiAgICAgZC0+ZXNjM19sZXZlbF9sZW5ndGg9IHMtPmVzYzNfbGV2ZWxfbGVuZ3RoOwog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2FmdGVyX2VuY29kZShNcGVnRW5j
Q29udGV4dCAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IE1wZWdFbmNDb250ZXh0ICpzKQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfY29udGV4
dF9hZnRlcl9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMp
CiB7CiAgICAgaW50IGk7CiAKLSAgICBtZW1jcHkoZC0+bXYsIHMtPm12LCAyKjQqMipzaXplb2Yo
aW50KSk7Ci0gICAgbWVtY3B5KGQtPmxhc3RfbXYsIHMtPmxhc3RfbXYsIDIqMioyKnNpemVvZihp
bnQpKTsgLy9GSVhNRSBpcyBtZW1jcHkgZmFzdGVyIHRoYW4gYSBsb29wPworICAgIG1lbWNweShk
LT5jLm12LCBzLT5jLm12LCAyKjQqMipzaXplb2YoaW50KSk7CisgICAgbWVtY3B5KGQtPmMubGFz
dF9tdiwgcy0+Yy5sYXN0X212LCAyKjIqMipzaXplb2YoaW50KSk7IC8vRklYTUUgaXMgbWVtY3B5
IGZhc3RlciB0aGFuIGEgbG9vcD8KIAogICAgIC8qIE1QRUctMSAqLwotICAgIGQtPm1iX3NraXBf
cnVuPSBzLT5tYl9za2lwX3J1bjsKKyAgICBkLT5jLm1iX3NraXBfcnVuID0gcy0+Yy5tYl9za2lw
X3J1bjsKICAgICBmb3IoaT0wOyBpPDM7IGkrKykKLSAgICAgICAgZC0+bGFzdF9kY1tpXSA9IHMt
Pmxhc3RfZGNbaV07CisgICAgICAgIGQtPmMubGFzdF9kY1tpXSA9IHMtPmMubGFzdF9kY1tpXTsK
IAogICAgIC8qIHN0YXRpc3RpY3MgKi8KICAgICBkLT5tdl9iaXRzPSBzLT5tdl9iaXRzOwpAQCAt
MjY2NywyNSArMjY3MCwyNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2FmdGVy
X2VuY29kZShNcGVnRW5jQ29udGV4dCAqZCwKICAgICBkLT5pX2NvdW50PSBzLT5pX2NvdW50Owog
ICAgIGQtPm1pc2NfYml0cz0gcy0+bWlzY19iaXRzOwogCi0gICAgZC0+bWJfaW50cmE9IHMtPm1i
X2ludHJhOwotICAgIGQtPm1iX3NraXBwZWQ9IHMtPm1iX3NraXBwZWQ7Ci0gICAgZC0+bXZfdHlw
ZT0gcy0+bXZfdHlwZTsKLSAgICBkLT5tdl9kaXI9IHMtPm12X2RpcjsKKyAgICBkLT5jLm1iX2lu
dHJhICAgPSBzLT5jLm1iX2ludHJhOworICAgIGQtPmMubWJfc2tpcHBlZCA9IHMtPmMubWJfc2tp
cHBlZDsKKyAgICBkLT5jLm12X3R5cGUgICAgPSBzLT5jLm12X3R5cGU7CisgICAgZC0+Yy5tdl9k
aXIgICAgID0gcy0+Yy5tdl9kaXI7CiAgICAgZC0+cGI9IHMtPnBiOwotICAgIGlmKHMtPmRhdGFf
cGFydGl0aW9uaW5nKXsKKyAgICBpZiAocy0+Yy5kYXRhX3BhcnRpdGlvbmluZykgewogICAgICAg
ICBkLT5wYjI9IHMtPnBiMjsKICAgICAgICAgZC0+dGV4X3BiPSBzLT50ZXhfcGI7CiAgICAgfQot
ICAgIGQtPmJsb2NrPSBzLT5ibG9jazsKKyAgICBkLT5jLmJsb2NrID0gcy0+Yy5ibG9jazsKICAg
ICBmb3IoaT0wOyBpPDg7IGkrKykKLSAgICAgICAgZC0+YmxvY2tfbGFzdF9pbmRleFtpXT0gcy0+
YmxvY2tfbGFzdF9pbmRleFtpXTsKLSAgICBkLT5pbnRlcmxhY2VkX2RjdD0gcy0+aW50ZXJsYWNl
ZF9kY3Q7Ci0gICAgZC0+cXNjYWxlPSBzLT5xc2NhbGU7CisgICAgICAgIGQtPmMuYmxvY2tfbGFz
dF9pbmRleFtpXT0gcy0+Yy5ibG9ja19sYXN0X2luZGV4W2ldOworICAgIGQtPmMuaW50ZXJsYWNl
ZF9kY3QgPSBzLT5jLmludGVybGFjZWRfZGN0OworICAgIGQtPmMucXNjYWxlID0gcy0+Yy5xc2Nh
bGU7CiAKICAgICBkLT5lc2MzX2xldmVsX2xlbmd0aD0gcy0+ZXNjM19sZXZlbF9sZW5ndGg7CiB9
CiAKLXN0YXRpYyB2b2lkIGVuY29kZV9tYl9ocShNcGVnRW5jQ29udGV4dCAqcywgTXBlZ0VuY0Nv
bnRleHQgKmJhY2t1cCwgTXBlZ0VuY0NvbnRleHQgKmJlc3QsCitzdGF0aWMgdm9pZCBlbmNvZGVf
bWJfaHEoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgTVBWRW5jQ29udGV4dCAqY29uc3QgYmFja3Vw
LCBNUFZFbmNDb250ZXh0ICpjb25zdCBiZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFB1
dEJpdENvbnRleHQgcGJbMl0sIFB1dEJpdENvbnRleHQgcGIyWzJdLCBQdXRCaXRDb250ZXh0IHRl
eF9wYlsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRtaW4sIGludCAqbmV4dF9i
bG9jaywgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpCiB7CkBAIC0yNjk0LDM4ICsyNjk3LDM4
IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9tYl9ocShNcGVnRW5jQ29udGV4dCAqcywgTXBlZ0VuY0Nv
bnRleHQgKmJhY2t1cCwgTXBlZ0VuY0NvbnRlCiAKICAgICBjb3B5X2NvbnRleHRfYmVmb3JlX2Vu
Y29kZShzLCBiYWNrdXApOwogCi0gICAgcy0+YmxvY2s9IHMtPmJsb2Nrc1sqbmV4dF9ibG9ja107
Ci0gICAgcy0+cGI9IHBiWypuZXh0X2Jsb2NrXTsKLSAgICBpZihzLT5kYXRhX3BhcnRpdGlvbmlu
Zyl7CisgICAgcy0+Yy5ibG9jayA9IHMtPmMuYmxvY2tzWypuZXh0X2Jsb2NrXTsKKyAgICBzLT5w
YiAgICAgID0gcGJbKm5leHRfYmxvY2tdOworICAgIGlmIChzLT5jLmRhdGFfcGFydGl0aW9uaW5n
KSB7CiAgICAgICAgIHMtPnBiMiAgID0gcGIyICAgWypuZXh0X2Jsb2NrXTsKICAgICAgICAgcy0+
dGV4X3BiPSB0ZXhfcGJbKm5leHRfYmxvY2tdOwogICAgIH0KIAogICAgIGlmKCpuZXh0X2Jsb2Nr
KXsKLSAgICAgICAgbWVtY3B5KGRlc3RfYmFja3VwLCBzLT5kZXN0LCBzaXplb2Yocy0+ZGVzdCkp
OwotICAgICAgICBzLT5kZXN0WzBdID0gcy0+c2MucmRfc2NyYXRjaHBhZDsKLSAgICAgICAgcy0+
ZGVzdFsxXSA9IHMtPnNjLnJkX3NjcmF0Y2hwYWQgKyAxNipzLT5saW5lc2l6ZTsKLSAgICAgICAg
cy0+ZGVzdFsyXSA9IHMtPnNjLnJkX3NjcmF0Y2hwYWQgKyAxNipzLT5saW5lc2l6ZSArIDg7Ci0g
ICAgICAgIGF2X2Fzc2VydDAocy0+bGluZXNpemUgPj0gMzIpOyAvL0ZJWE1FCisgICAgICAgIG1l
bWNweShkZXN0X2JhY2t1cCwgcy0+Yy5kZXN0LCBzaXplb2Yocy0+Yy5kZXN0KSk7CisgICAgICAg
IHMtPmMuZGVzdFswXSA9IHMtPmMuc2MucmRfc2NyYXRjaHBhZDsKKyAgICAgICAgcy0+Yy5kZXN0
WzFdID0gcy0+Yy5zYy5yZF9zY3JhdGNocGFkICsgMTYqcy0+Yy5saW5lc2l6ZTsKKyAgICAgICAg
cy0+Yy5kZXN0WzJdID0gcy0+Yy5zYy5yZF9zY3JhdGNocGFkICsgMTYqcy0+Yy5saW5lc2l6ZSAr
IDg7CisgICAgICAgIGF2X2Fzc2VydDAocy0+Yy5saW5lc2l6ZSA+PSAzMik7IC8vRklYTUUKICAg
ICB9CiAKICAgICBlbmNvZGVfbWIocywgbW90aW9uX3gsIG1vdGlvbl95KTsKIAogICAgIHNjb3Jl
PSBwdXRfYml0c19jb3VudCgmcy0+cGIpOwotICAgIGlmKHMtPmRhdGFfcGFydGl0aW9uaW5nKXsK
KyAgICBpZiAocy0+Yy5kYXRhX3BhcnRpdGlvbmluZykgewogICAgICAgICBzY29yZSs9IHB1dF9i
aXRzX2NvdW50KCZzLT5wYjIpOwogICAgICAgICBzY29yZSs9IHB1dF9iaXRzX2NvdW50KCZzLT50
ZXhfcGIpOwogICAgIH0KIAotICAgIGlmKHMtPmF2Y3R4LT5tYl9kZWNpc2lvbiA9PSBGRl9NQl9E
RUNJU0lPTl9SRCl7Ci0gICAgICAgIG1wdl9yZWNvbnN0cnVjdF9tYihzLCBzLT5ibG9jayk7Cisg
ICAgaWYocy0+Yy5hdmN0eC0+bWJfZGVjaXNpb24gPT0gRkZfTUJfREVDSVNJT05fUkQpeworICAg
ICAgICBtcHZfcmVjb25zdHJ1Y3RfbWIocywgcy0+Yy5ibG9jayk7CiAKLSAgICAgICAgc2NvcmUg
Kj0gcy0+bGFtYmRhMjsKKyAgICAgICAgc2NvcmUgKj0gcy0+Yy5sYW1iZGEyOwogICAgICAgICBz
Y29yZSArPSBzc2VfbWIocykgPDwgRkZfTEFNQkRBX1NISUZUOwogICAgIH0KIAogICAgIGlmKCpu
ZXh0X2Jsb2NrKXsKLSAgICAgICAgbWVtY3B5KHMtPmRlc3QsIGRlc3RfYmFja3VwLCBzaXplb2Yo
cy0+ZGVzdCkpOworICAgICAgICBtZW1jcHkocy0+Yy5kZXN0LCBkZXN0X2JhY2t1cCwgc2l6ZW9m
KHMtPmMuZGVzdCkpOwogICAgIH0KIAogICAgIGlmKHNjb3JlPCpkbWluKXsKQEAgLTI3MzYsNyAr
MjczOSw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9tYl9ocShNcGVnRW5jQ29udGV4dCAqcywgTXBl
Z0VuY0NvbnRleHQgKmJhY2t1cCwgTXBlZ0VuY0NvbnRlCiAgICAgfQogfQogCi1zdGF0aWMgaW50
IHNzZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3JjMSwgY29uc3QgdWludDhf
dCAqc3JjMiwgaW50IHcsIGludCBoLCBpbnQgc3RyaWRlKXsKK3N0YXRpYyBpbnQgc3NlKGNvbnN0
IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4
X3QgKnNyYzIsIGludCB3LCBpbnQgaCwgaW50IHN0cmlkZSkKK3sKICAgICBjb25zdCB1aW50MzJf
dCAqc3EgPSBmZl9zcXVhcmVfdGFiICsgMjU2OwogICAgIGludCBhY2M9MDsKICAgICBpbnQgeCx5
OwpAQCAtMjc1NywxMjkgKzI3NjEsMTI4IEBAIHN0YXRpYyBpbnQgc3NlKE1wZWdFbmNDb250ZXh0
ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLCBpbnQKICAgICBy
ZXR1cm4gYWNjOwogfQogCi1zdGF0aWMgaW50IHNzZV9tYihNcGVnRW5jQ29udGV4dCAqcyl7Citz
dGF0aWMgaW50IHNzZV9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzKQorewogICAgIGludCB3PSAx
NjsKICAgICBpbnQgaD0gMTY7Ci0gICAgaW50IGNocm9tYV9tYl93ID0gdyA+PiBzLT5jaHJvbWFf
eF9zaGlmdDsKLSAgICBpbnQgY2hyb21hX21iX2ggPSBoID4+IHMtPmNocm9tYV95X3NoaWZ0Owor
ICAgIGludCBjaHJvbWFfbWJfdyA9IHcgPj4gcy0+Yy5jaHJvbWFfeF9zaGlmdDsKKyAgICBpbnQg
Y2hyb21hX21iX2ggPSBoID4+IHMtPmMuY2hyb21hX3lfc2hpZnQ7CiAKLSAgICBpZihzLT5tYl94
KjE2ICsgMTYgPiBzLT53aWR0aCApIHc9IHMtPndpZHRoIC0gcy0+bWJfeCoxNjsKLSAgICBpZihz
LT5tYl95KjE2ICsgMTYgPiBzLT5oZWlnaHQpIGg9IHMtPmhlaWdodC0gcy0+bWJfeSoxNjsKKyAg
ICBpZiAocy0+Yy5tYl94KjE2ICsgMTYgPiBzLT5jLndpZHRoICkgdyA9IHMtPmMud2lkdGggLSBz
LT5jLm1iX3gqMTY7CisgICAgaWYgKHMtPmMubWJfeSoxNiArIDE2ID4gcy0+Yy5oZWlnaHQpIGgg
PSBzLT5jLmhlaWdodC0gcy0+Yy5tYl95KjE2OwogCiAgICAgaWYodz09MTYgJiYgaD09MTYpCi0g
ICAgICAgIHJldHVybiBzLT5uX3NzZV9jbXBbMF0ocywgcy0+bmV3X3BpYy0+ZGF0YVswXSArIHMt
Pm1iX3ggKiAxNiArIHMtPm1iX3kgKiBzLT5saW5lc2l6ZSAqIDE2LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMtPmRlc3RbMF0sIHMtPmxpbmVzaXplLCAxNikgKwotICAgICAgICAg
ICAgICAgcy0+bl9zc2VfY21wWzFdKHMsIHMtPm5ld19waWMtPmRhdGFbMV0gKyBzLT5tYl94ICog
Y2hyb21hX21iX3cgKyBzLT5tYl95ICogcy0+dXZsaW5lc2l6ZSAqIGNocm9tYV9tYl9oLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMV0sIHMtPnV2bGluZXNpemUsIGNo
cm9tYV9tYl9oKSArCi0gICAgICAgICAgICAgICBzLT5uX3NzZV9jbXBbMV0ocywgcy0+bmV3X3Bp
Yy0+ZGF0YVsyXSArIHMtPm1iX3ggKiBjaHJvbWFfbWJfdyArIHMtPm1iX3kgKiBzLT51dmxpbmVz
aXplICogY2hyb21hX21iX2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZGVz
dFsyXSwgcy0+dXZsaW5lc2l6ZSwgY2hyb21hX21iX2gpOworICAgICAgICByZXR1cm4gcy0+bl9z
c2VfY21wWzBdKHMsIHMtPm5ld19waWMtPmRhdGFbMF0gKyBzLT5jLm1iX3ggKiAxNiArIHMtPmMu
bWJfeSAqIHMtPmMubGluZXNpemUgKiAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5jLmRlc3RbMF0sIHMtPmMubGluZXNpemUsIDE2KSArCisgICAgICAgICAgICAgICBzLT5u
X3NzZV9jbXBbMV0ocywgcy0+bmV3X3BpYy0+ZGF0YVsxXSArIHMtPmMubWJfeCAqIGNocm9tYV9t
Yl93ICsgcy0+Yy5tYl95ICogcy0+Yy51dmxpbmVzaXplICogY2hyb21hX21iX2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5kZXN0WzFdLCBzLT5jLnV2bGluZXNpemUsIGNo
cm9tYV9tYl9oKSArCisgICAgICAgICAgICAgICBzLT5uX3NzZV9jbXBbMV0ocywgcy0+bmV3X3Bp
Yy0+ZGF0YVsyXSArIHMtPmMubWJfeCAqIGNocm9tYV9tYl93ICsgcy0+Yy5tYl95ICogcy0+Yy51
dmxpbmVzaXplICogY2hyb21hX21iX2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cy0+Yy5kZXN0WzJdLCBzLT5jLnV2bGluZXNpemUsIGNocm9tYV9tYl9oKTsKICAgICBlbHNlCi0g
ICAgICAgIHJldHVybiAgc3NlKHMsIHMtPm5ld19waWMtPmRhdGFbMF0gKyBzLT5tYl94ICogMTYg
KyBzLT5tYl95ICogcy0+bGluZXNpemUgKiAxNiwKLSAgICAgICAgICAgICAgICAgICAgcy0+ZGVz
dFswXSwgdywgaCwgcy0+bGluZXNpemUpICsKLSAgICAgICAgICAgICAgICBzc2Uocywgcy0+bmV3
X3BpYy0+ZGF0YVsxXSArIHMtPm1iX3ggKiBjaHJvbWFfbWJfdyArIHMtPm1iX3kgKiBzLT51dmxp
bmVzaXplICogY2hyb21hX21iX2gsCi0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMV0sIHcg
Pj4gcy0+Y2hyb21hX3hfc2hpZnQsIGggPj4gcy0+Y2hyb21hX3lfc2hpZnQsIHMtPnV2bGluZXNp
emUpICsKLSAgICAgICAgICAgICAgICBzc2Uocywgcy0+bmV3X3BpYy0+ZGF0YVsyXSArIHMtPm1i
X3ggKiBjaHJvbWFfbWJfdyArIHMtPm1iX3kgKiBzLT51dmxpbmVzaXplICogY2hyb21hX21iX2gs
Ci0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMl0sIHcgPj4gcy0+Y2hyb21hX3hfc2hpZnQs
IGggPj4gcy0+Y2hyb21hX3lfc2hpZnQsIHMtPnV2bGluZXNpemUpOworICAgICAgICByZXR1cm4g
IHNzZShzLCBzLT5uZXdfcGljLT5kYXRhWzBdICsgcy0+Yy5tYl94ICogMTYgKyBzLT5jLm1iX3kg
KiBzLT5jLmxpbmVzaXplICogMTYsCisgICAgICAgICAgICAgICAgICAgIHMtPmMuZGVzdFswXSwg
dywgaCwgcy0+Yy5saW5lc2l6ZSkgKworICAgICAgICAgICAgICAgIHNzZShzLCBzLT5uZXdfcGlj
LT5kYXRhWzFdICsgcy0+Yy5tYl94ICogY2hyb21hX21iX3cgKyBzLT5jLm1iX3kgKiBzLT5jLnV2
bGluZXNpemUgKiBjaHJvbWFfbWJfaCwKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5kZXN0WzFd
LCB3ID4+IHMtPmMuY2hyb21hX3hfc2hpZnQsIGggPj4gcy0+Yy5jaHJvbWFfeV9zaGlmdCwgcy0+
Yy51dmxpbmVzaXplKSArCisgICAgICAgICAgICAgICAgc3NlKHMsIHMtPm5ld19waWMtPmRhdGFb
Ml0gKyBzLT5jLm1iX3ggKiBjaHJvbWFfbWJfdyArIHMtPmMubWJfeSAqIHMtPmMudXZsaW5lc2l6
ZSAqIGNocm9tYV9tYl9oLAorICAgICAgICAgICAgICAgICAgICBzLT5jLmRlc3RbMl0sIHcgPj4g
cy0+Yy5jaHJvbWFfeF9zaGlmdCwgaCA+PiBzLT5jLmNocm9tYV95X3NoaWZ0LCBzLT5jLnV2bGlu
ZXNpemUpOwogfQogCiBzdGF0aWMgaW50IHByZV9lc3RpbWF0ZV9tb3Rpb25fdGhyZWFkKEFWQ29k
ZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewotICAgIE1wZWdFbmNDb250ZXh0ICpzPSAqKHZvaWQq
Kilhcmc7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICoodm9pZCoqKWFyZzsKIAogCi0g
ICAgcy0+bWUucHJlX3Bhc3M9MTsKLSAgICBzLT5tZS5kaWFfc2l6ZT0gcy0+YXZjdHgtPnByZV9k
aWFfc2l6ZTsKLSAgICBzLT5maXJzdF9zbGljZV9saW5lPTE7Ci0gICAgZm9yKHMtPm1iX3k9IHMt
PmVuZF9tYl95LTE7IHMtPm1iX3kgPj0gcy0+c3RhcnRfbWJfeTsgcy0+bWJfeS0tKSB7Ci0gICAg
ICAgIGZvcihzLT5tYl94PXMtPm1iX3dpZHRoLTE7IHMtPm1iX3ggPj0wIDtzLT5tYl94LS0pIHsK
LSAgICAgICAgICAgIGZmX3ByZV9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihzLCBzLT5tYl94LCBz
LT5tYl95KTsKLSAgICAgICAgfQotICAgICAgICBzLT5maXJzdF9zbGljZV9saW5lPTA7CisgICAg
cy0+Yy5tZS5wcmVfcGFzcyA9IDE7CisgICAgcy0+Yy5tZS5kaWFfc2l6ZSA9IHMtPmMuYXZjdHgt
PnByZV9kaWFfc2l6ZTsKKyAgICBzLT5jLmZpcnN0X3NsaWNlX2xpbmUgPSAxOworICAgIGZvciAo
cy0+Yy5tYl95ID0gcy0+Yy5lbmRfbWJfeSAtIDE7IHMtPmMubWJfeSA+PSBzLT5jLnN0YXJ0X21i
X3k7IHMtPmMubWJfeS0tKSB7CisgICAgICAgIGZvciAocy0+Yy5tYl94ID0gcy0+Yy5tYl93aWR0
aCAtIDE7IHMtPmMubWJfeCA+PTAgOyBzLT5jLm1iX3gtLSkKKyAgICAgICAgICAgIGZmX3ByZV9l
c3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihzLCBzLT5jLm1iX3gsIHMtPmMubWJfeSk7CisgICAgICAg
IHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgfQogCi0gICAgcy0+bWUucHJlX3Bhc3M9
MDsKKyAgICBzLT5jLm1lLnByZV9wYXNzID0gMDsKIAogICAgIHJldHVybiAwOwogfQogCiBzdGF0
aWMgaW50IGVzdGltYXRlX21vdGlvbl90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZvaWQgKmFy
Zyl7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKnM9ICoodm9pZCoqKWFyZzsKLQotICAgIHMtPm1lLmRp
YV9zaXplPSBzLT5hdmN0eC0+ZGlhX3NpemU7Ci0gICAgcy0+Zmlyc3Rfc2xpY2VfbGluZT0xOwot
ICAgIGZvcihzLT5tYl95PSBzLT5zdGFydF9tYl95OyBzLT5tYl95IDwgcy0+ZW5kX21iX3k7IHMt
Pm1iX3krKykgewotICAgICAgICBzLT5tYl94PTA7IC8vZm9yIGJsb2NrIGluaXQgYmVsb3cKLSAg
ICAgICAgZmZfaW5pdF9ibG9ja19pbmRleChzKTsKLSAgICAgICAgZm9yKHMtPm1iX3g9MDsgcy0+
bWJfeCA8IHMtPm1iX3dpZHRoOyBzLT5tYl94KyspIHsKLSAgICAgICAgICAgIHMtPmJsb2NrX2lu
ZGV4WzBdKz0yOwotICAgICAgICAgICAgcy0+YmxvY2tfaW5kZXhbMV0rPTI7Ci0gICAgICAgICAg
ICBzLT5ibG9ja19pbmRleFsyXSs9MjsKLSAgICAgICAgICAgIHMtPmJsb2NrX2luZGV4WzNdKz0y
OworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CisKKyAgICBzLT5j
Lm1lLmRpYV9zaXplPSBzLT5jLmF2Y3R4LT5kaWFfc2l6ZTsKKyAgICBzLT5jLmZpcnN0X3NsaWNl
X2xpbmU9MTsKKyAgICBmb3IgKHMtPmMubWJfeSA9IHMtPmMuc3RhcnRfbWJfeTsgcy0+Yy5tYl95
IDwgcy0+Yy5lbmRfbWJfeTsgcy0+Yy5tYl95KyspIHsKKyAgICAgICAgcy0+Yy5tYl94PTA7IC8v
Zm9yIGJsb2NrIGluaXQgYmVsb3cKKyAgICAgICAgZmZfaW5pdF9ibG9ja19pbmRleCgmcy0+Yyk7
CisgICAgICAgIGZvciAocy0+Yy5tYl94ID0gMDsgcy0+Yy5tYl94IDwgcy0+Yy5tYl93aWR0aDsg
cy0+Yy5tYl94KyspIHsKKyAgICAgICAgICAgIHMtPmMuYmxvY2tfaW5kZXhbMF0gKz0gMjsKKyAg
ICAgICAgICAgIHMtPmMuYmxvY2tfaW5kZXhbMV0gKz0gMjsKKyAgICAgICAgICAgIHMtPmMuYmxv
Y2tfaW5kZXhbMl0gKz0gMjsKKyAgICAgICAgICAgIHMtPmMuYmxvY2tfaW5kZXhbM10gKz0gMjsK
IAogICAgICAgICAgICAgLyogY29tcHV0ZSBtb3Rpb24gdmVjdG9yICYgbWJfdHlwZSBhbmQgc3Rv
cmUgaW4gY29udGV4dCAqLwotICAgICAgICAgICAgaWYocy0+cGljdF90eXBlPT1BVl9QSUNUVVJF
X1RZUEVfQikKLSAgICAgICAgICAgICAgICBmZl9lc3RpbWF0ZV9iX2ZyYW1lX21vdGlvbihzLCBz
LT5tYl94LCBzLT5tYl95KTsKKyAgICAgICAgICAgIGlmKHMtPmMucGljdF90eXBlPT1BVl9QSUNU
VVJFX1RZUEVfQikKKyAgICAgICAgICAgICAgICBmZl9lc3RpbWF0ZV9iX2ZyYW1lX21vdGlvbihz
LCBzLT5jLm1iX3gsIHMtPmMubWJfeSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24ocywgcy0+bWJfeCwgcy0+bWJfeSk7CisgICAg
ICAgICAgICAgICAgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24ocywgcy0+Yy5tYl94LCBzLT5j
Lm1iX3kpOwogICAgICAgICB9Ci0gICAgICAgIHMtPmZpcnN0X3NsaWNlX2xpbmU9MDsKKyAgICAg
ICAgcy0+Yy5maXJzdF9zbGljZV9saW5lID0gMDsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAK
IHN0YXRpYyBpbnQgbWJfdmFyX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsK
LSAgICBNcGVnRW5jQ29udGV4dCAqcz0gKih2b2lkKiopYXJnOwotICAgIGludCBtYl94LCBtYl95
OworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CiAKLSAgICBmb3Io
bWJfeT1zLT5zdGFydF9tYl95OyBtYl95IDwgcy0+ZW5kX21iX3k7IG1iX3krKykgewotICAgICAg
ICBmb3IobWJfeD0wOyBtYl94IDwgcy0+bWJfd2lkdGg7IG1iX3grKykgeworICAgIGZvciAoaW50
IG1iX3kgPSBzLT5jLnN0YXJ0X21iX3k7IG1iX3kgPCBzLT5jLmVuZF9tYl95OyBtYl95KyspIHsK
KyAgICAgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBzLT5jLm1iX3dpZHRoOyBtYl94Kysp
IHsKICAgICAgICAgICAgIGludCB4eCA9IG1iX3ggKiAxNjsKICAgICAgICAgICAgIGludCB5eSA9
IG1iX3kgKiAxNjsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeCA9IHMtPm5ld19waWMt
PmRhdGFbMF0gKyAoeXkgKiBzLT5saW5lc2l6ZSkgKyB4eDsKKyAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeCA9IHMtPm5ld19waWMtPmRhdGFbMF0gKyAoeXkgKiBzLT5jLmxpbmVzaXplKSAr
IHh4OwogICAgICAgICAgICAgaW50IHZhcmM7Ci0gICAgICAgICAgICBpbnQgc3VtID0gcy0+bXB2
ZW5jZHNwLnBpeF9zdW0ocGl4LCBzLT5saW5lc2l6ZSk7CisgICAgICAgICAgICBpbnQgc3VtID0g
cy0+bXB2ZW5jZHNwLnBpeF9zdW0ocGl4LCBzLT5jLmxpbmVzaXplKTsKIAotICAgICAgICAgICAg
dmFyYyA9IChzLT5tcHZlbmNkc3AucGl4X25vcm0xKHBpeCwgcy0+bGluZXNpemUpIC0KKyAgICAg
ICAgICAgIHZhcmMgPSAocy0+bXB2ZW5jZHNwLnBpeF9ub3JtMShwaXgsIHMtPmMubGluZXNpemUp
IC0KICAgICAgICAgICAgICAgICAgICAgKCgodW5zaWduZWQpIHN1bSAqIHN1bSkgPj4gOCkgKyA1
MDAgKyAxMjgpID4+IDg7CiAKLSAgICAgICAgICAgIHMtPm1iX3ZhciBbcy0+bWJfc3RyaWRlICog
bWJfeSArIG1iX3hdID0gdmFyYzsKLSAgICAgICAgICAgIHMtPm1iX21lYW5bcy0+bWJfc3RyaWRl
ICogbWJfeSArIG1iX3hdID0gKHN1bSsxMjgpPj44OwotICAgICAgICAgICAgcy0+bWUubWJfdmFy
X3N1bV90ZW1wICAgICs9IHZhcmM7CisgICAgICAgICAgICBzLT5tYl92YXIgW3MtPmMubWJfc3Ry
aWRlICogbWJfeSArIG1iX3hdID0gdmFyYzsKKyAgICAgICAgICAgIHMtPm1iX21lYW5bcy0+Yy5t
Yl9zdHJpZGUgKiBtYl95ICsgbWJfeF0gPSAoc3VtKzEyOCk+Pjg7CisgICAgICAgICAgICBzLT5j
Lm1lLm1iX3Zhcl9zdW1fdGVtcCAgICArPSB2YXJjOwogICAgICAgICB9CiAgICAgfQogICAgIHJl
dHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB3cml0ZV9zbGljZV9lbmQoTXBlZ0VuY0NvbnRleHQg
KnMpewotICAgIGlmKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmNvZGVjX2lkPT1BVl9DT0RF
Q19JRF9NUEVHNCl7Ci0gICAgICAgIGlmKHMtPnBhcnRpdGlvbmVkX2ZyYW1lKXsKK3N0YXRpYyB2
b2lkIHdyaXRlX3NsaWNlX2VuZChNUFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGlmKENP
TkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQp
IHsKKyAgICAgICAgaWYgKHMtPmMucGFydGl0aW9uZWRfZnJhbWUpCiAgICAgICAgICAgICBmZl9t
cGVnNF9tZXJnZV9wYXJ0aXRpb25zKHMpOwotICAgICAgICB9CiAKICAgICAgICAgZmZfbXBlZzRf
c3R1ZmZpbmcoJnMtPnBiKTsKICAgICB9IGVsc2UgaWYgKChDT05GSUdfTUpQRUdfRU5DT0RFUiB8
fCBDT05GSUdfQU1WX0VOQ09ERVIpICYmCi0gICAgICAgICAgICAgICBzLT5vdXRfZm9ybWF0ID09
IEZNVF9NSlBFRykgeworICAgICAgICAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9NSlBF
RykgewogICAgICAgICBmZl9tanBlZ19lbmNvZGVfc3R1ZmZpbmcocyk7Ci0gICAgfSBlbHNlIGlm
IChDT05GSUdfU1BFRURIUV9FTkNPREVSICYmIHMtPm91dF9mb3JtYXQgPT0gRk1UX1NQRUVESFEp
IHsKKyAgICB9IGVsc2UgaWYgKENPTkZJR19TUEVFREhRX0VOQ09ERVIgJiYgcy0+Yy5vdXRfZm9y
bWF0ID09IEZNVF9TUEVFREhRKSB7CiAgICAgICAgIGZmX3NwZWVkaHFfZW5kX3NsaWNlKHMpOwog
ICAgIH0KIAogICAgIGZsdXNoX3B1dF9iaXRzKCZzLT5wYik7CiAKLSAgICBpZiAoKHMtPmF2Y3R4
LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzEpICYmICFzLT5wYXJ0aXRpb25lZF9mcmFtZSkK
KyAgICBpZiAoKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMSkgJiYgIXMt
PmMucGFydGl0aW9uZWRfZnJhbWUpCiAgICAgICAgIHMtPm1pc2NfYml0cys9IGdldF9iaXRzX2Rp
ZmYocyk7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlX21iX2luZm8oTXBlZ0VuY0NvbnRleHQgKnMp
CitzdGF0aWMgdm9pZCB3cml0ZV9tYl9pbmZvKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7CiAg
ICAgdWludDhfdCAqcHRyID0gcy0+bWJfaW5mb19wdHIgKyBzLT5tYl9pbmZvX3NpemUgLSAxMjsK
ICAgICBpbnQgb2Zmc2V0ID0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKLSAgICBpbnQgbWJhICA9
IHMtPm1iX3ggKyBzLT5tYl93aWR0aCAqIChzLT5tYl95ICUgcy0+Z29iX2luZGV4KTsKLSAgICBp
bnQgZ29ibiA9IHMtPm1iX3kgLyBzLT5nb2JfaW5kZXg7CisgICAgaW50IG1iYSAgPSBzLT5jLm1i
X3ggKyBzLT5jLm1iX3dpZHRoICogKHMtPmMubWJfeSAlIHMtPmMuZ29iX2luZGV4KTsKKyAgICBp
bnQgZ29ibiA9IHMtPmMubWJfeSAvIHMtPmMuZ29iX2luZGV4OwogICAgIGludCBwcmVkX3gsIHBy
ZWRfeTsKICAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUikKLSAgICAgICAgZmZfaDI2M19wcmVk
X21vdGlvbihzLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKKyAgICAgICAgZmZfaDI2M19wcmVk
X21vdGlvbigmcy0+YywgMCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CiAgICAgYnl0ZXN0cmVhbV9w
dXRfbGUzMigmcHRyLCBvZmZzZXQpOwotICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoJnB0ciwgcy0+
cXNjYWxlKTsKKyAgICBieXRlc3RyZWFtX3B1dF9ieXRlKCZwdHIsIHMtPmMucXNjYWxlKTsKICAg
ICBieXRlc3RyZWFtX3B1dF9ieXRlKCZwdHIsIGdvYm4pOwogICAgIGJ5dGVzdHJlYW1fcHV0X2xl
MTYoJnB0ciwgbWJhKTsKICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKCZwdHIsIHByZWRfeCk7IC8q
IGhtdjEgKi8KQEAgLTI4ODksNyArMjg5Miw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX21iX2luZm8o
TXBlZ0VuY0NvbnRleHQgKnMpCiAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZSgmcHRyLCAwKTsgLyog
dm12MiAqLwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVfbWJfaW5mbyhNcGVnRW5jQ29udGV4dCAq
cywgaW50IHN0YXJ0Y29kZSkKK3N0YXRpYyB2b2lkIHVwZGF0ZV9tYl9pbmZvKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsIGludCBzdGFydGNvZGUpCiB7CiAgICAgaWYgKCFzLT5tYl9pbmZvKQogICAg
ICAgICByZXR1cm47CkBAIC0yOTEyLDMyICsyOTE1LDMyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9t
Yl9pbmZvKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgc3RhcnRjb2RlKQogICAgIHdyaXRlX21iX2lu
Zm8ocyk7CiB9CiAKLWludCBmZl9tcHZfcmVhbGxvY2F0ZV9wdXRiaXRidWZmZXIoTXBlZ0VuY0Nv
bnRleHQgKnMsIHNpemVfdCB0aHJlc2hvbGQsIHNpemVfdCBzaXplX2luY3JlYXNlKQoraW50IGZm
X21wdl9yZWFsbG9jYXRlX3B1dGJpdGJ1ZmZlcihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBzaXpl
X3QgdGhyZXNob2xkLCBzaXplX3Qgc2l6ZV9pbmNyZWFzZSkKIHsKICAgICBpZiAocHV0X2J5dGVz
X2xlZnQoJnMtPnBiLCAwKSA8IHRocmVzaG9sZAotICAgICAgICAmJiBzLT5zbGljZV9jb250ZXh0
X2NvdW50ID09IDEKLSAgICAgICAgJiYgcy0+cGIuYnVmID09IHMtPmF2Y3R4LT5pbnRlcm5hbC0+
Ynl0ZV9idWZmZXIpIHsKKyAgICAgICAgJiYgcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50ID09IDEK
KyAgICAgICAgJiYgcy0+cGIuYnVmID09IHMtPmMuYXZjdHgtPmludGVybmFsLT5ieXRlX2J1ZmZl
cikgewogICAgICAgICBpbnQgbGFzdGdvYl9wb3MgPSBzLT5wdHJfbGFzdGdvYiAtIHMtPnBiLmJ1
ZjsKIAogICAgICAgICB1aW50OF90ICpuZXdfYnVmZmVyID0gTlVMTDsKICAgICAgICAgaW50IG5l
d19idWZmZXJfc2l6ZSA9IDA7CiAKLSAgICAgICAgaWYgKChzLT5hdmN0eC0+aW50ZXJuYWwtPmJ5
dGVfYnVmZmVyX3NpemUgKyBzaXplX2luY3JlYXNlKSA+PSBJTlRfTUFYLzgpIHsKLSAgICAgICAg
ICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiQ2Fubm90IHJlYWxsb2NhdGUgcHV0
Yml0IGJ1ZmZlclxuIik7CisgICAgICAgIGlmICgocy0+Yy5hdmN0eC0+aW50ZXJuYWwtPmJ5dGVf
YnVmZmVyX3NpemUgKyBzaXplX2luY3JlYXNlKSA+PSBJTlRfTUFYLzgpIHsKKyAgICAgICAgICAg
IGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfRVJST1IsICJDYW5ub3QgcmVhbGxvY2F0ZSBwdXRi
aXQgYnVmZmVyXG4iKTsKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBlbW1zX2MoKTsKIAogICAgICAgICBhdl9mYXN0X3BhZGRlZF9tYWxs
b2MoJm5ld19idWZmZXIsICZuZXdfYnVmZmVyX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLT5hdmN0eC0+aW50ZXJuYWwtPmJ5dGVfYnVmZmVyX3NpemUgKyBzaXplX2luY3Jl
YXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYXZjdHgtPmludGVybmFs
LT5ieXRlX2J1ZmZlcl9zaXplICsgc2l6ZV9pbmNyZWFzZSk7CiAgICAgICAgIGlmICghbmV3X2J1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICAgICAgbWVt
Y3B5KG5ld19idWZmZXIsIHMtPmF2Y3R4LT5pbnRlcm5hbC0+Ynl0ZV9idWZmZXIsIHMtPmF2Y3R4
LT5pbnRlcm5hbC0+Ynl0ZV9idWZmZXJfc2l6ZSk7Ci0gICAgICAgIGF2X2ZyZWUocy0+YXZjdHgt
PmludGVybmFsLT5ieXRlX2J1ZmZlcik7Ci0gICAgICAgIHMtPmF2Y3R4LT5pbnRlcm5hbC0+Ynl0
ZV9idWZmZXIgICAgICA9IG5ld19idWZmZXI7Ci0gICAgICAgIHMtPmF2Y3R4LT5pbnRlcm5hbC0+
Ynl0ZV9idWZmZXJfc2l6ZSA9IG5ld19idWZmZXJfc2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld19i
dWZmZXIsIHMtPmMuYXZjdHgtPmludGVybmFsLT5ieXRlX2J1ZmZlciwgcy0+Yy5hdmN0eC0+aW50
ZXJuYWwtPmJ5dGVfYnVmZmVyX3NpemUpOworICAgICAgICBhdl9mcmVlKHMtPmMuYXZjdHgtPmlu
dGVybmFsLT5ieXRlX2J1ZmZlcik7CisgICAgICAgIHMtPmMuYXZjdHgtPmludGVybmFsLT5ieXRl
X2J1ZmZlciAgICAgID0gbmV3X2J1ZmZlcjsKKyAgICAgICAgcy0+Yy5hdmN0eC0+aW50ZXJuYWwt
PmJ5dGVfYnVmZmVyX3NpemUgPSBuZXdfYnVmZmVyX3NpemU7CiAgICAgICAgIHJlYmFzZV9wdXRf
Yml0cygmcy0+cGIsIG5ld19idWZmZXIsIG5ld19idWZmZXJfc2l6ZSk7CiAgICAgICAgIHMtPnB0
cl9sYXN0Z29iICAgPSBzLT5wYi5idWYgKyBsYXN0Z29iX3BvczsKICAgICB9CkBAIC0yOTQ3LDEx
ICsyOTUwLDEwIEBAIGludCBmZl9tcHZfcmVhbGxvY2F0ZV9wdXRiaXRidWZmZXIoTXBlZ0VuY0Nv
bnRleHQgKnMsIHNpemVfdCB0aHJlc2hvbGQsIHNpemVfdCBzCiB9CiAKIHN0YXRpYyBpbnQgZW5j
b2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKLSAgICBNcGVnRW5jQ29u
dGV4dCAqcz0gKih2b2lkKiopYXJnOwotICAgIGludCBtYl94LCBtYl95LCBtYl95X29yZGVyOwot
ICAgIGludCBjaHJfaD0gMTY+PnMtPmNocm9tYV95X3NoaWZ0OworICAgIE1QVkVuY0NvbnRleHQg
KmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CisgICAgaW50IGNocl9oID0gMTYgPj4gcy0+Yy5jaHJv
bWFfeV9zaGlmdDsKICAgICBpbnQgaSwgajsKLSAgICBNcGVnRW5jQ29udGV4dCBiZXN0X3MgPSB7
IDAgfSwgYmFja3VwX3M7CisgICAgTVBWRW5jQ29udGV4dCBiZXN0X3MgPSB7IDAgfSwgYmFja3Vw
X3M7CiAgICAgdWludDhfdCBiaXRfYnVmWzJdW01BWF9NQl9CWVRFU107CiAgICAgdWludDhfdCBi
aXRfYnVmMlsyXVtNQVhfTUJfQllURVNdOwogICAgIHVpbnQ4X3QgYml0X2J1Zl90ZXhbMl1bTUFY
X01CX0JZVEVTXTsKQEAgLTI5NzMsODIgKzI5NzUsODMgQEAgc3RhdGljIGludCBlbmNvZGVfdGhy
ZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgIGZvcihpPTA7IGk8MzsgaSsr
KXsKICAgICAgICAgLyogaW5pdCBsYXN0IGRjIHZhbHVlcyAqLwogICAgICAgICAvKiBub3RlOiBx
dWFudCBtYXRyaXggdmFsdWUgKDgpIGlzIGltcGxpZWQgaGVyZSAqLwotICAgICAgICBzLT5sYXN0
X2RjW2ldID0gMTI4IDw8IHMtPmludHJhX2RjX3ByZWNpc2lvbjsKKyAgICAgICAgcy0+Yy5sYXN0
X2RjW2ldID0gMTI4IDw8IHMtPmMuaW50cmFfZGNfcHJlY2lzaW9uOwogCiAgICAgICAgIHMtPmVu
Y29kaW5nX2Vycm9yW2ldID0gMDsKICAgICB9Ci0gICAgaWYocy0+Y29kZWNfaWQ9PUFWX0NPREVD
X0lEX0FNVil7Ci0gICAgICAgIHMtPmxhc3RfZGNbMF0gPSAxMjgqOC8xMzsKLSAgICAgICAgcy0+
bGFzdF9kY1sxXSA9IDEyOCo4LzE0OwotICAgICAgICBzLT5sYXN0X2RjWzJdID0gMTI4KjgvMTQ7
CisgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQU1WKSB7CisgICAgICAgIHMt
PmMubGFzdF9kY1swXSA9IDEyOCAqIDggLyAxMzsKKyAgICAgICAgcy0+Yy5sYXN0X2RjWzFdID0g
MTI4ICogOCAvIDE0OworICAgICAgICBzLT5jLmxhc3RfZGNbMl0gPSAxMjggKiA4IC8gMTQ7CiAg
ICAgfQotICAgIHMtPm1iX3NraXBfcnVuID0gMDsKLSAgICBtZW1zZXQocy0+bGFzdF9tdiwgMCwg
c2l6ZW9mKHMtPmxhc3RfbXYpKTsKKyAgICBzLT5jLm1iX3NraXBfcnVuID0gMDsKKyAgICBtZW1z
ZXQocy0+Yy5sYXN0X212LCAwLCBzaXplb2Yocy0+Yy5sYXN0X212KSk7CiAKICAgICBzLT5sYXN0
X212X2RpciA9IDA7CiAKLSAgICBzd2l0Y2gocy0+Y29kZWNfaWQpeworICAgIHN3aXRjaChzLT5j
LmNvZGVjX2lkKXsKICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjM6CiAgICAgY2FzZSBBVl9DT0RF
Q19JRF9IMjYzUDoKICAgICBjYXNlIEFWX0NPREVDX0lEX0ZMVjE6CiAgICAgICAgIGlmIChDT05G
SUdfSDI2M19FTkNPREVSKQotICAgICAgICAgICAgcy0+Z29iX2luZGV4ID0gSDI2M19HT0JfSEVJ
R0hUKHMtPmhlaWdodCk7CisgICAgICAgICAgICBzLT5jLmdvYl9pbmRleCA9IEgyNjNfR09CX0hF
SUdIVChzLT5jLmhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURf
TVBFRzQ6Ci0gICAgICAgIGlmKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPnBhcnRpdGlvbmVk
X2ZyYW1lKQorICAgICAgICBpZihDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBzLT5jLnBhcnRpdGlv
bmVkX2ZyYW1lKQogICAgICAgICAgICAgZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKHMpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzLT5yZXN5bmNfbWJfeD0wOwotICAgIHMtPnJlc3lu
Y19tYl95PTA7Ci0gICAgcy0+Zmlyc3Rfc2xpY2VfbGluZSA9IDE7CisgICAgcy0+Yy5yZXN5bmNf
bWJfeCA9IDA7CisgICAgcy0+Yy5yZXN5bmNfbWJfeSA9IDA7CisgICAgcy0+Yy5maXJzdF9zbGlj
ZV9saW5lID0gMTsKICAgICBzLT5wdHJfbGFzdGdvYiA9IHMtPnBiLmJ1ZjsKLSAgICBmb3IgKG1i
X3lfb3JkZXIgPSBzLT5zdGFydF9tYl95OyBtYl95X29yZGVyIDwgcy0+ZW5kX21iX3k7IG1iX3lf
b3JkZXIrKykgewotICAgICAgICBpZiAoQ09ORklHX1NQRUVESFFfRU5DT0RFUiAmJiBzLT5jb2Rl
Y19pZCA9PSBBVl9DT0RFQ19JRF9TUEVFREhRKSB7CisgICAgZm9yIChpbnQgbWJfeV9vcmRlciA9
IHMtPmMuc3RhcnRfbWJfeTsgbWJfeV9vcmRlciA8IHMtPmMuZW5kX21iX3k7IG1iX3lfb3JkZXIr
KykgeworICAgICAgICBpbnQgbWJfeTsKKyAgICAgICAgaWYgKENPTkZJR19TUEVFREhRX0VOQ09E
RVIgJiYgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9TUEVFREhRKSB7CiAgICAgICAgICAg
ICBpbnQgZmlyc3RfaW5fc2xpY2U7Ci0gICAgICAgICAgICBtYl95ID0gZmZfc3BlZWRocV9tYl95
X29yZGVyX3RvX21iKG1iX3lfb3JkZXIsIHMtPm1iX2hlaWdodCwgJmZpcnN0X2luX3NsaWNlKTsK
LSAgICAgICAgICAgIGlmIChmaXJzdF9pbl9zbGljZSAmJiBtYl95X29yZGVyICE9IHMtPnN0YXJ0
X21iX3kpCisgICAgICAgICAgICBtYl95ID0gZmZfc3BlZWRocV9tYl95X29yZGVyX3RvX21iKG1i
X3lfb3JkZXIsIHMtPmMubWJfaGVpZ2h0LCAmZmlyc3RfaW5fc2xpY2UpOworICAgICAgICAgICAg
aWYgKGZpcnN0X2luX3NsaWNlICYmIG1iX3lfb3JkZXIgIT0gcy0+Yy5zdGFydF9tYl95KQogICAg
ICAgICAgICAgICAgIGZmX3NwZWVkaHFfZW5kX3NsaWNlKHMpOwotICAgICAgICAgICAgcy0+bGFz
dF9kY1swXSA9IHMtPmxhc3RfZGNbMV0gPSBzLT5sYXN0X2RjWzJdID0gMTAyNCA8PCBzLT5pbnRy
YV9kY19wcmVjaXNpb247CisgICAgICAgICAgICBzLT5jLmxhc3RfZGNbMF0gPSBzLT5jLmxhc3Rf
ZGNbMV0gPSBzLT5jLmxhc3RfZGNbMl0gPSAxMDI0IDw8IHMtPmMuaW50cmFfZGNfcHJlY2lzaW9u
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbWJfeSA9IG1iX3lfb3JkZXI7CiAgICAg
ICAgIH0KLSAgICAgICAgcy0+bWJfeD0wOwotICAgICAgICBzLT5tYl95PSBtYl95OworICAgICAg
ICBzLT5jLm1iX3ggPSAwOworICAgICAgICBzLT5jLm1iX3kgPSBtYl95OwogCi0gICAgICAgIGZm
X3NldF9xc2NhbGUocywgcy0+cXNjYWxlKTsKLSAgICAgICAgZmZfaW5pdF9ibG9ja19pbmRleChz
KTsKKyAgICAgICAgZmZfc2V0X3FzY2FsZSgmcy0+Yywgcy0+Yy5xc2NhbGUpOworICAgICAgICBm
Zl9pbml0X2Jsb2NrX2luZGV4KCZzLT5jKTsKIAotICAgICAgICBmb3IobWJfeD0wOyBtYl94IDwg
cy0+bWJfd2lkdGg7IG1iX3grKykgewotICAgICAgICAgICAgaW50IHh5PSBtYl95KnMtPm1iX3N0
cmlkZSArIG1iX3g7IC8vIHJlbW92ZWQgY29uc3QsIEgyNjEgbmVlZHMgdG8gYWRqdXN0IHRoaXMK
KyAgICAgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBzLT5jLm1iX3dpZHRoOyBtYl94Kysp
IHsKKyAgICAgICAgICAgIGludCB4eSA9IG1iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94OyAvLyBy
ZW1vdmVkIGNvbnN0LCBIMjYxIG5lZWRzIHRvIGFkanVzdCB0aGlzCiAgICAgICAgICAgICBpbnQg
bWJfdHlwZT0gcy0+bWJfdHlwZVt4eV07CiAvLyAgICAgICAgICAgIGludCBkOwogICAgICAgICAg
ICAgaW50IGRtaW49IElOVF9NQVg7CiAgICAgICAgICAgICBpbnQgZGlyOwotICAgICAgICAgICAg
aW50IHNpemVfaW5jcmVhc2UgPSAgcy0+YXZjdHgtPmludGVybmFsLT5ieXRlX2J1ZmZlcl9zaXpl
LzQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHMtPm1iX3dpZHRoKk1BWF9NQl9C
WVRFUzsKKyAgICAgICAgICAgIGludCBzaXplX2luY3JlYXNlID0gIHMtPmMuYXZjdHgtPmludGVy
bmFsLT5ieXRlX2J1ZmZlcl9zaXplLzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
IHMtPmMubWJfd2lkdGgqTUFYX01CX0JZVEVTOwogCiAgICAgICAgICAgICBmZl9tcHZfcmVhbGxv
Y2F0ZV9wdXRiaXRidWZmZXIocywgTUFYX01CX0JZVEVTLCBzaXplX2luY3JlYXNlKTsKICAgICAg
ICAgICAgIGlmIChwdXRfYnl0ZXNfbGVmdCgmcy0+cGIsIDApIDwgTUFYX01CX0JZVEVTKXsKLSAg
ICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgImVuY29kZWQgZnJh
bWUgdG9vIGxhcmdlXG4iKTsKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZf
TE9HX0VSUk9SLCAiZW5jb2RlZCBmcmFtZSB0b28gbGFyZ2VcbiIpOwogICAgICAgICAgICAgICAg
IHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKHMtPmRhdGFfcGFydGl0
aW9uaW5nKXsKKyAgICAgICAgICAgIGlmIChzLT5jLmRhdGFfcGFydGl0aW9uaW5nKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHB1dF9ieXRlc19sZWZ0KCZzLT5wYjIsICAgIDApIDwgTUFYX01CX0JZ
VEVTIHx8CiAgICAgICAgICAgICAgICAgICAgIHB1dF9ieXRlc19sZWZ0KCZzLT50ZXhfcGIsIDAp
IDwgTUFYX01CX0JZVEVTKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwg
QVZfTE9HX0VSUk9SLCAiZW5jb2RlZCBwYXJ0aXRpb25lZCBmcmFtZSB0b28gbGFyZ2VcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiZW5j
b2RlZCBwYXJ0aXRpb25lZCBmcmFtZSB0b28gbGFyZ2VcbiIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBzLT5tYl94ID0gbWJfeDsKLSAgICAgICAgICAgIHMtPm1iX3kgPSBtYl95OyAgLy8gbW92
ZWQgaW50byBsb29wLCBjYW4gZ2V0IGNoYW5nZWQgYnkgSC4yNjEKLSAgICAgICAgICAgIGZmX3Vw
ZGF0ZV9ibG9ja19pbmRleChzLCA4LCAwLCBzLT5jaHJvbWFfeF9zaGlmdCk7CisgICAgICAgICAg
ICBzLT5jLm1iX3ggPSBtYl94OworICAgICAgICAgICAgcy0+Yy5tYl95ID0gbWJfeTsgIC8vIG1v
dmVkIGludG8gbG9vcCwgY2FuIGdldCBjaGFuZ2VkIGJ5IEguMjYxCisgICAgICAgICAgICBmZl91
cGRhdGVfYmxvY2tfaW5kZXgoJnMtPmMsIDgsIDAsIHMtPmMuY2hyb21hX3hfc2hpZnQpOwogCi0g
ICAgICAgICAgICBpZihDT05GSUdfSDI2MV9FTkNPREVSICYmIHMtPmNvZGVjX2lkID09IEFWX0NP
REVDX0lEX0gyNjEpeworICAgICAgICAgICAgaWYoQ09ORklHX0gyNjFfRU5DT0RFUiAmJiBzLT5j
LmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjEpewogICAgICAgICAgICAgICAgIGZmX2gyNjFf
cmVvcmRlcl9tYl9pbmRleChzKTsKLSAgICAgICAgICAgICAgICB4eT0gcy0+bWJfeSpzLT5tYl9z
dHJpZGUgKyBzLT5tYl94OworICAgICAgICAgICAgICAgIHh5ID0gcy0+Yy5tYl95KnMtPmMubWJf
c3RyaWRlICsgcy0+Yy5tYl94OwogICAgICAgICAgICAgICAgIG1iX3R5cGU9IHMtPm1iX3R5cGVb
eHldOwogICAgICAgICAgICAgfQogCkBAIC0zMDYzLDQwICszMDY2LDM5IEBAIHN0YXRpYyBpbnQg
ZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3BhY2tldF9zaXplID49IHMtPnJ0cF9wYXlsb2Fk
X3NpemUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYl95ICsgbWJfeCA+IDA7
CiAKLSAgICAgICAgICAgICAgICBpZihzLT5zdGFydF9tYl95ID09IG1iX3kgJiYgbWJfeSA+IDAg
JiYgbWJfeD09MCkgaXNfZ29iX3N0YXJ0PTE7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMuc3Rh
cnRfbWJfeSA9PSBtYl95ICYmIG1iX3kgPiAwICYmIG1iX3ggPT0gMCkgaXNfZ29iX3N0YXJ0ID0g
MTsKIAotICAgICAgICAgICAgICAgIHN3aXRjaChzLT5jb2RlY19pZCl7CisgICAgICAgICAgICAg
ICAgc3dpdGNoKHMtPmMuY29kZWNfaWQpewogICAgICAgICAgICAgICAgIGNhc2UgQVZfQ09ERUNf
SURfSDI2MzoKICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjNQOgotICAgICAg
ICAgICAgICAgICAgICBpZighcy0+aDI2M19zbGljZV9zdHJ1Y3R1cmVkKQotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYocy0+bWJfeCB8fCBzLT5tYl95JXMtPmdvYl9pbmRleCkgaXNfZ29iX3N0
YXJ0PTA7CisgICAgICAgICAgICAgICAgICAgIGlmICghcy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVy
ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy0+Yy5tYl94IHx8IHMtPmMubWJfeSAl
IHMtPmMuZ29iX2luZGV4KSBpc19nb2Jfc3RhcnQgPSAwOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01QRUcyVklERU86Ci0gICAg
ICAgICAgICAgICAgICAgIGlmKHMtPm1iX3g9PTAgJiYgcy0+bWJfeSE9MCkgaXNfZ29iX3N0YXJ0
PTE7CisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jLm1iX3ggPT0gMCAmJiBzLT5jLm1iX3kg
IT0gMCkgaXNfZ29iX3N0YXJ0ID0gMTsKICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lE
X01QRUcxVklERU86Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9D
T0RFQ19JRF9NUEVHMVZJREVPICYmIHMtPm1iX3kgPj0gMTc1IHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzLT5tYl9za2lwX3J1bikKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmMuY29k
ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTyAmJiBzLT5jLm1iX3kgPj0gMTc1IHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX3NraXBfcnVuKQogICAgICAgICAgICAgICAg
ICAgICAgICAgaXNfZ29iX3N0YXJ0PTA7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgQVZfQ09ERUNfSURfTUpQRUc6Ci0gICAgICAgICAgICAgICAgICAg
IGlmKHMtPm1iX3g9PTAgJiYgcy0+bWJfeSE9MCkgaXNfZ29iX3N0YXJ0PTE7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzLT5jLm1iX3ggPT0gMCAmJiBzLT5jLm1iX3kgIT0gMCkgaXNfZ29iX3N0
YXJ0ID0gMTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgaWYoaXNfZ29iX3N0YXJ0KXsKLSAgICAgICAgICAgICAgICAgICAg
aWYocy0+c3RhcnRfbWJfeSAhPSBtYl95IHx8IG1iX3ghPTApeworICAgICAgICAgICAgICAgICAg
ICBpZiAocy0+Yy5zdGFydF9tYl95ICE9IG1iX3kgfHwgbWJfeCAhPSAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZV9zbGljZV9lbmQocyk7CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmNvZGVjX2lkPT1BVl9DT0RFQ19JRF9N
UEVHNCAmJiBzLT5wYXJ0aXRpb25lZF9mcmFtZSl7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoQ09ORklHX01QRUc0X0VOQ09ERVIgJiYgcy0+Yy5jb2RlY19pZD09QVZfQ09ERUNfSURfTVBF
RzQgJiYgcy0+Yy5wYXJ0aXRpb25lZF9mcmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmZl9tcGVnNF9pbml0X3BhcnRpdGlvbnMocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQy
KChwdXRfYml0c19jb3VudCgmcy0+cGIpJjcpID09IDApOwogICAgICAgICAgICAgICAgICAgICBj
dXJyZW50X3BhY2tldF9zaXplPSBwdXRfYml0c19wdHIoJnMtPnBiKSAtIHMtPnB0cl9sYXN0Z29i
OwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5lcnJvcl9yYXRlICYmIHMtPnJlc3luY19t
Yl94ICsgcy0+cmVzeW5jX21iX3kgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQg
ciA9IHB1dF9ieXRlc19jb3VudCgmcy0+cGIsIDApICsgcy0+cGljdHVyZV9udW1iZXIgKyAxNiAr
IHMtPm1iX3ggKyBzLT5tYl95OworICAgICAgICAgICAgICAgICAgICBpZiAocy0+ZXJyb3JfcmF0
ZSAmJiBzLT5jLnJlc3luY19tYl94ICsgcy0+Yy5yZXN5bmNfbWJfeSA+IDApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGludCByID0gcHV0X2J5dGVzX2NvdW50KCZzLT5wYiwgMCkgKyBzLT5j
LnBpY3R1cmVfbnVtYmVyICsgMTYgKyBzLT5jLm1iX3ggKyBzLT5jLm1iX3k7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZCA9IDEwMCAvIHMtPmVycm9yX3JhdGU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZihyICUgZCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXJyZW50X3BhY2tldF9zaXplPTA7CkBAIC0zMTA1LDE4ICszMTA3LDE4IEBAIHN0YXRpYyBpbnQg
ZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
ICAgIHN3aXRjaChzLT5jb2RlY19pZCl7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocy0+
Yy5jb2RlY19pZCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01QRUc0
OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENPTkZJR19NUEVHNF9FTkNPREVSKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfbXBlZzRfZW5jb2RlX3ZpZGVvX3BhY2tldF9o
ZWFkZXIocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfbXBlZzRfY2xlYW5fYnVm
ZmVycyhzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZl9tcGVnNF9jbGVhbl9idWZm
ZXJzKCZzLT5jKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzFWSURF
TzoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKENPTkZJR19NUEVHMVZJREVPX0VOQ09ERVIgfHwgQ09O
RklHX01QRUcyVklERU9fRU5DT0RFUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZm
X21wZWcxX2VuY29kZV9zbGljZV9oZWFkZXIocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmZfbXBlZzFfY2xlYW5fYnVmZmVycyhzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmZl9tcGVnMV9jbGVhbl9idWZmZXJzKCZzLT5jKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QVZfQ09ERUNfSURfSDI2MzoKQEAgLTMxMjgsMjUgKzMxMzAsMjUgQEAgc3RhdGljIGludCBlbmNv
ZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAg
IGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MxKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzEpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRzPSBwdXRfYml0c19jb3VudCgmcy0+cGIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzKz0gYml0cyAtIHMtPmxhc3Rf
Yml0czsKICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfYml0cz0gYml0czsKICAgICAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHMtPnB0cl9sYXN0Z29iICs9
IGN1cnJlbnRfcGFja2V0X3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmZpcnN0X3NsaWNl
X2xpbmU9MTsKLSAgICAgICAgICAgICAgICAgICAgcy0+cmVzeW5jX21iX3g9bWJfeDsKLSAgICAg
ICAgICAgICAgICAgICAgcy0+cmVzeW5jX21iX3k9bWJfeTsKKyAgICAgICAgICAgICAgICAgICAg
cy0+cHRyX2xhc3Rnb2IgICAgICAgKz0gY3VycmVudF9wYWNrZXRfc2l6ZTsKKyAgICAgICAgICAg
ICAgICAgICAgcy0+Yy5maXJzdF9zbGljZV9saW5lID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
cy0+Yy5yZXN5bmNfbWJfeCAgICAgID0gbWJfeDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5y
ZXN5bmNfbWJfeSAgICAgID0gbWJfeTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmKCAgKHMtPnJlc3luY19tYl94ICAgPT0gcy0+bWJfeCkKLSAgICAg
ICAgICAgICAgICYmIHMtPnJlc3luY19tYl95KzEgPT0gcy0+bWJfeSl7Ci0gICAgICAgICAgICAg
ICAgcy0+Zmlyc3Rfc2xpY2VfbGluZT0wOworICAgICAgICAgICAgaWYoICAocy0+Yy5yZXN5bmNf
bWJfeCAgID09IHMtPmMubWJfeCkKKyAgICAgICAgICAgICAgICYmIHMtPmMucmVzeW5jX21iX3kr
MSA9PSBzLT5jLm1iX3kpeworICAgICAgICAgICAgICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9
IDA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHMtPm1iX3NraXBwZWQ9MDsKKyAgICAg
ICAgICAgIHMtPmMubWJfc2tpcHBlZCA9IDA7CiAgICAgICAgICAgICBzLT5kcXVhbnQ9MDsgLy9v
bmx5IGZvciBRUF9SRAogCiAgICAgICAgICAgICB1cGRhdGVfbWJfaW5mbyhzLCAwKTsKQEAgLTMx
NTcsMTczICszMTU5LDE3MyBAQCBzdGF0aWMgaW50IGVuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRl
eHQgKmMsIHZvaWQgKmFyZyl7CiAKICAgICAgICAgICAgICAgICBjb3B5X2NvbnRleHRfYmVmb3Jl
X2VuY29kZSgmYmFja3VwX3MsIHMpOwogICAgICAgICAgICAgICAgIGJhY2t1cF9zLnBiPSBzLT5w
YjsKLSAgICAgICAgICAgICAgICBiZXN0X3MuZGF0YV9wYXJ0aXRpb25pbmc9IHMtPmRhdGFfcGFy
dGl0aW9uaW5nOwotICAgICAgICAgICAgICAgIGJlc3Rfcy5wYXJ0aXRpb25lZF9mcmFtZT0gcy0+
cGFydGl0aW9uZWRfZnJhbWU7Ci0gICAgICAgICAgICAgICAgaWYocy0+ZGF0YV9wYXJ0aXRpb25p
bmcpeworICAgICAgICAgICAgICAgIGJlc3Rfcy5jLmRhdGFfcGFydGl0aW9uaW5nID0gcy0+Yy5k
YXRhX3BhcnRpdGlvbmluZzsKKyAgICAgICAgICAgICAgICBiZXN0X3MuYy5wYXJ0aXRpb25lZF9m
cmFtZSA9IHMtPmMucGFydGl0aW9uZWRfZnJhbWU7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMu
ZGF0YV9wYXJ0aXRpb25pbmcpIHsKICAgICAgICAgICAgICAgICAgICAgYmFja3VwX3MucGIyPSBz
LT5wYjI7CiAgICAgICAgICAgICAgICAgICAgIGJhY2t1cF9zLnRleF9wYj0gcy0+dGV4X3BiOwog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRF
X01CX1RZUEVfSU5URVIpewotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBNVl9ESVJf
Rk9SV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1WX1RZUEVfMTZYMTY7
Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAgICAgICAgICAg
ICBzLT5tdlswXVswXVswXSA9IHMtPnBfbXZfdGFibGVbeHldWzBdOwotICAgICAgICAgICAgICAg
ICAgICBzLT5tdlswXVswXVsxXSA9IHMtPnBfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAg
ICAgICAgICBzLT5jLm12X2RpciAgICAgID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAg
ICAgICAgIHMtPmMubXZfdHlwZSAgICAgPSBNVl9UWVBFXzE2WDE2OworICAgICAgICAgICAgICAg
ICAgICBzLT5jLm1iX2ludHJhICAgID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsw
XVswXVswXSA9IHMtPnBfbXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBzLT5j
Lm12WzBdWzBdWzFdID0gcy0+cF9tdl90YWJsZVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAg
IGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+bXZb
MF1bMF1bMF0sIHMtPm12WzBdWzBdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+Yy5tdlswXVswXVswXSwgcy0+Yy5tdlswXVswXVsx
XSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElE
QVRFX01CX1RZUEVfSU5URVJfSSl7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1W
X0RJUl9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV9G
SUVMRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7CisgICAgICAgICAgICAg
ICAgICAgIHMtPmMubXZfZGlyICAgPSBNVl9ESVJfRk9SV0FSRDsKKyAgICAgICAgICAgICAgICAg
ICAgcy0+Yy5tdl90eXBlICA9IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMt
PmMubWJfaW50cmEgPSAwOwogICAgICAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPDI7IGkrKyl7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqPSBzLT5maWVsZF9zZWxlY3RbMF1baV0gPSBzLT5w
X2ZpZWxkX3NlbGVjdF90YWJsZVtpXVt4eV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5t
dlswXVtpXVswXSA9IHMtPnBfZmllbGRfbXZfdGFibGVbaV1bal1beHldWzBdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcy0+bXZbMF1baV1bMV0gPSBzLT5wX2ZpZWxkX212X3RhYmxlW2ldW2pd
W3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGogPSBzLT5jLmZpZWxkX3NlbGVjdFsw
XVtpXSA9IHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlW2ldW3h5XTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHMtPmMubXZbMF1baV1bMF0gPSBzLT5jLnBfZmllbGRfbXZfdGFibGVbaV1bal1beHld
WzBdOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVsxXSA9IHMtPmMucF9m
aWVsZF9tdl90YWJsZVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBi
MiwgdGV4X3BiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0
X2Jsb2NrLCAwLCAwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYobWJf
dHlwZSZDQU5ESURBVEVfTUJfVFlQRV9TS0lQUEVEKXsKLSAgICAgICAgICAgICAgICAgICAgcy0+
bXZfZGlyID0gTVZfRElSX0ZPUldBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X3R5cGUg
PSBNVl9UWVBFXzE2WDE2OwotICAgICAgICAgICAgICAgICAgICBzLT5tYl9pbnRyYT0gMDsKLSAg
ICAgICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1bMF0gPSAwOwotICAgICAgICAgICAgICAgICAg
ICBzLT5tdlswXVswXVsxXSA9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyICAg
ICAgPSBNVl9ESVJfRk9SV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl90eXBlICAg
ICA9IE1WX1RZUEVfMTZYMTY7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgICAg
PSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzBdID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGVu
Y29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+bXZbMF1b
MF1bMF0sIHMtPm12WzBdWzBdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZkbWluLCAmbmV4dF9ibG9jaywgcy0+Yy5tdlswXVswXVswXSwgcy0+Yy5tdlswXVswXVsxXSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRF
X01CX1RZUEVfSU5URVI0Vil7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJ
Ul9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV84WDg7
Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAg
ICBzLT5jLm12X2RpciAgID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMt
PmMubXZfdHlwZSAgPSBNVl9UWVBFXzhYODsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9p
bnRyYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8NDsgaSsrKXsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFs
WzBdW3MtPmJsb2NrX2luZGV4W2ldXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12
WzBdW2ldWzFdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmJsb2NrX2luZGV4W2ldXVsx
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1baV1bMF0gPSBzLT5jLmN1cl9w
aWMubW90aW9uX3ZhbFswXVtzLT5jLmJsb2NrX2luZGV4W2ldXVswXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPmMubXZbMF1baV1bMV0gPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVtz
LT5jLmJsb2NrX2luZGV4W2ldXVsxXTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVfbWJfaHEocywgJmJhY2t1cF9zLCAmYmVzdF9zLCBwYiwgcGIyLCB0
ZXhfcGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG1pbiwgJm5leHRfYmxv
Y2ssIDAsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZihtYl90eXBl
JkNBTkRJREFURV9NQl9UWVBFX0ZPUldBUkQpewotICAgICAgICAgICAgICAgICAgICBzLT5tdl9k
aXIgPSBNVl9ESVJfRk9SV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1W
X1RZUEVfMTZYMTY7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAg
ICAgICAgICAgICAgICBzLT5tdlswXVswXVswXSA9IHMtPmJfZm9yd19tdl90YWJsZVt4eV1bMF07
Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFdID0gcy0+Yl9mb3J3X212X3RhYmxl
W3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl9kaXIgICAgICA9IE1WX0RJUl9G
T1JXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGUgICAgID0gTVZfVFlQRV8x
NlgxNjsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYSAgICA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzBd
OworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzFdID0gcy0+Yl9mb3J3X212X3Rh
YmxlW3h5XVsxXTsKICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBf
cywgJmJlc3RfcywgcGIsIHBiMiwgdGV4X3BiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmRtaW4sICZuZXh0X2Jsb2NrLCBzLT5tdlswXVswXVswXSwgcy0+bXZbMF1bMF1bMV0p
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0X2Jsb2NrLCBz
LT5jLm12WzBdWzBdWzBdLCBzLT5jLm12WzBdWzBdWzFdKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYobWJfdHlwZSZDQU5ESURBVEVfTUJfVFlQRV9CQUNLV0FSRCl7Ci0g
ICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsKLSAgICAgICAg
ICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1WX1RZUEVfMTZYMTY7Ci0gICAgICAgICAgICAgICAg
ICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdlsxXVswXVswXSA9
IHMtPmJfYmFja19tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzFd
WzBdWzFdID0gcy0+Yl9iYWNrX212X3RhYmxlW3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAg
cy0+Yy5tdl9kaXIgICAgICA9IE1WX0RJUl9CQUNLV0FSRDsKKyAgICAgICAgICAgICAgICAgICAg
cy0+Yy5tdl90eXBlICAgICA9IE1WX1RZUEVfMTZYMTY7CisgICAgICAgICAgICAgICAgICAgIHMt
PmMubWJfaW50cmEgICAgPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzFdWzBdWzBd
ID0gcy0+Yl9iYWNrX212X3RhYmxlW3h5XVswXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t
dlsxXVswXVsxXSA9IHMtPmJfYmFja19tdl90YWJsZVt4eV1bMV07CiAgICAgICAgICAgICAgICAg
ICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+
bXZbMV1bMF1bMF0sIHMtPm12WzFdWzBdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+Yy5tdlsxXVswXVswXSwgcy0+Yy5tdlsxXVsw
XVsxXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FO
RElEQVRFX01CX1RZUEVfQklESVIpewotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBN
Vl9ESVJfRk9SV0FSRCB8IE1WX0RJUl9CQUNLV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+
bXZfdHlwZSA9IE1WX1RZUEVfMTZYMTY7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJh
PSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVswXVswXSA9IHMtPmJfYmlkaXJfZm9y
d19tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFdID0g
cy0+Yl9iaWRpcl9mb3J3X212X3RhYmxlW3h5XVsxXTsKLSAgICAgICAgICAgICAgICAgICAgcy0+
bXZbMV1bMF1bMF0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVbeHldWzBdOwotICAgICAgICAg
ICAgICAgICAgICBzLT5tdlsxXVswXVsxXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4eV1b
MV07CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZPUldBUkQgfCBN
Vl9ESVJfQkFDS1dBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9IE1WX1RZ
UEVfMTZYMTY7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CisgICAgICAg
ICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBzLT5iX2JpZGlyX2ZvcndfbXZfdGFibGVb
eHldWzBdOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzFdID0gcy0+Yl9iaWRp
cl9mb3J3X212X3RhYmxlW3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVsw
XVswXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4eV1bMF07CisgICAgICAgICAgICAgICAg
ICAgIHMtPmMubXZbMV1bMF1bMV0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVbeHldWzFdOwog
ICAgICAgICAgICAgICAgICAgICBlbmNvZGVfbWJfaHEocywgJmJhY2t1cF9zLCAmYmVzdF9zLCBw
YiwgcGIyLCB0ZXhfcGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG1pbiwg
Jm5leHRfYmxvY2ssIDAsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZihtYl90eXBlJkNBTkRJREFURV9NQl9UWVBFX0ZPUldBUkRfSSl7Ci0gICAgICAgICAgICAgICAg
ICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5t
dl90eXBlID0gTVZfVFlQRV9GSUVMRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9
IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZPUldBUkQ7Cisg
ICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9IE1WX1RZUEVfRklFTEQ7CisgICAgICAg
ICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihp
PTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIGo9IHMtPmZpZWxkX3NlbGVj
dFswXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0X3RhYmxlWzBdW2ldW3h5XTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVswXVtpXVtq
XVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtpXVsxXSA9IHMtPmJf
ZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzFdOworICAgICAgICAgICAgICAgICAgICAgICAg
aiA9IHMtPmMuZmllbGRfc2VsZWN0WzBdW2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFibGVbMF1b
aV1beHldOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVswXSA9IHMtPmJf
ZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzBdOworICAgICAgICAgICAgICAgICAgICAgICAg
cy0+Yy5tdlswXVtpXVsxXSA9IHMtPmJfZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzFdOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9tYl9ocShz
LCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRFX01CX1RZUEVfQkFDS1dB
UkRfSSl7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsK
LSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1WX1RZUEVfRklFTEQ7Ci0gICAgICAg
ICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12
X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl90eXBl
ID0gTVZfVFlQRV9GSUVMRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYT0gMDsK
ICAgICAgICAgICAgICAgICAgICAgZm9yKGk9MDsgaTwyOyBpKyspewotICAgICAgICAgICAgICAg
ICAgICAgICAgaj0gcy0+ZmllbGRfc2VsZWN0WzFdW2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFi
bGVbMV1baV1beHldOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMV1baV1bMF0gPSBz
LT5iX2ZpZWxkX212X3RhYmxlWzFdW2ldW2pdW3h5XVswXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPm12WzFdW2ldWzFdID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMV07
CisgICAgICAgICAgICAgICAgICAgICAgICBqID0gcy0+Yy5maWVsZF9zZWxlY3RbMV1baV0gPSBz
LT5iX2ZpZWxkX3NlbGVjdF90YWJsZVsxXVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5jLm12WzFdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMF07
CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzFdW2ldWzFdID0gcy0+Yl9maWVsZF9t
dl90YWJsZVsxXVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBiMiwg
dGV4X3BiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0X2Js
b2NrLCAwLCAwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYobWJfdHlw
ZSZDQU5ESURBVEVfTUJfVFlQRV9CSURJUl9JKXsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZf
ZGlyID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQ7Ci0gICAgICAgICAgICAgICAg
ICAgIHMtPm12X3R5cGUgPSBNVl9UWVBFX0ZJRUxEOwotICAgICAgICAgICAgICAgICAgICBzLT5t
Yl9pbnRyYT0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl9kaXIgICA9IE1WX0RJUl9G
T1JXQVJEIHwgTVZfRElSX0JBQ0tXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5
cGUgID0gTVZfVFlQRV9GSUVMRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYSA9
IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihkaXI9MDsgZGlyPDI7IGRpcisrKXsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqPSBzLT5maWVsZF9zZWxlY3RbZGlyXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0
X3RhYmxlW2Rpcl1baV1beHldOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12W2Rp
cl1baV1bMF0gPSBzLT5iX2ZpZWxkX212X3RhYmxlW2Rpcl1baV1bal1beHldWzBdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPm12W2Rpcl1baV1bMV0gPSBzLT5iX2ZpZWxkX212X3Rh
YmxlW2Rpcl1baV1bal1beHldWzFdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBz
LT5jLmZpZWxkX3NlbGVjdFtkaXJdW2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFibGVbZGlyXVtp
XVt4eV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdltkaXJdW2ldWzBdID0g
cy0+Yl9maWVsZF9tdl90YWJsZVtkaXJdW2ldW2pdW3h5XVswXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5jLm12W2Rpcl1baV1bMV0gPSBzLT5iX2ZpZWxkX212X3RhYmxlW2Rpcl1b
aV1bal1beHldWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZi
ZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZkbWluLCAmbmV4dF9ibG9jaywgMCwgMCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRFX01CX1RZUEVfSU5UUkEpewotICAgICAgICAgICAg
ICAgICAgICBzLT5tdl9kaXIgPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0g
TVZfVFlQRV8xNlgxNjsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDE7Ci0gICAg
ICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAg
cy0+bXZbMF1bMF1bMV0gPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X2RpciAgICAg
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl90eXBlICAgICA9IE1WX1RZUEVfMTZY
MTY7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgICAgPSAxOworICAgICAgICAg
ICAgICAgICAgICBzLT5jLm12WzBdWzBdWzBdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+
Yy5tdlswXVswXVsxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAm
YmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgMCwgMCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHMtPm1iaW50cmFfdGFibGVbeHldID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t
YmludHJhX3RhYmxlW3h5XSA9IDE7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgaWYgKChzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19RUF9SRCkgJiYgZG1pbiA8IElOVF9N
QVgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoYmVzdF9zLm12X3R5cGU9PU1WX1RZUEVfMTZY
MTYpeyAvL0ZJWE1FIG1vdmUgNG12IGFmdGVyIFFQUkQKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludCBsYXN0X3FwPSBiYWNrdXBfcy5xc2NhbGU7CisgICAgICAgICAgICAgICAgICAg
IGlmIChiZXN0X3MuYy5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsgLy9GSVhNRSBtb3ZlIDRt
diBhZnRlciBRUFJECisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGFzdF9xcCA9
IGJhY2t1cF9zLmMucXNjYWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFwaSwgcXAs
IGRjWzZdOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBhY1s2XVsxNl07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbXZkaXI9IChiZXN0X3MubXZfZGlyJk1WX0RJ
Ul9CQUNLV0FSRCkgPyAxIDogMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBt
dmRpciA9IChiZXN0X3MuYy5tdl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpID8gMSA6IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgaW50IGRxdWFudF90YWJbNF09ey0xLDEs
LTIsMn07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RvcmVjb2VmcyA9IHMtPm1iX2lu
dHJhICYmIHMtPmRjX3ZhbFswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdG9yZWNv
ZWZzID0gcy0+Yy5tYl9pbnRyYSAmJiBzLT5jLmRjX3ZhbFswXTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgYXZfYXNzZXJ0MihiYWNrdXBfcy5kcXVhbnQgPT0gMCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vRklYTUUgaW50cmEKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12
X2Rpcj0gYmVzdF9zLm12X2RpcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12X3R5cGUg
PSBNVl9UWVBFXzE2WDE2OwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IGJl
c3Rfcy5tYl9pbnRyYTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdID0g
YmVzdF9zLm12WzBdWzBdWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1b
MV0gPSBiZXN0X3MubXZbMF1bMF1bMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsx
XVswXVswXSA9IGJlc3Rfcy5tdlsxXVswXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMt
Pm12WzFdWzBdWzFdID0gYmVzdF9zLm12WzFdWzBdWzFdOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBxcGkgPSBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgPyAyIDogMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyICAgPSBiZXN0X3MuYy5tdl9kaXI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGUgID0gTVZfVFlQRV8xNlgxNjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgPSBiZXN0X3MuYy5tYl9pbnRyYTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBiZXN0X3MuYy5tdlsw
XVswXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMV0gPSBiZXN0
X3MuYy5tdlswXVswXVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMV1bMF1b
MF0gPSBiZXN0X3MuYy5tdlsxXVswXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMu
bXZbMV1bMF1bMV0gPSBiZXN0X3MuYy5tdlsxXVswXVsxXTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgcXBpID0gcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgPyAyIDogMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcig7IHFwaTw0OyBxcGkrKyl7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGRxdWFudD0gZHF1YW50X3RhYltxcGldOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHFwPSBsYXN0X3FwICsgZHF1YW50OwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmKHFwIDwgcy0+YXZjdHgtPnFtaW4gfHwgcXAgPiBzLT5hdmN0eC0+cW1h
eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXAgPCBzLT5jLmF2Y3R4LT5xbWlu
IHx8IHFwID4gcy0+Yy5hdmN0eC0+cW1heCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3VwX3MuZHF1YW50
PSBkcXVhbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RvcmVjb2Vmcyl7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8NjsgaSsrKXsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjW2ldPSBzLT5kY192YWxbMF1bIHMtPmJs
b2NrX2luZGV4W2ldIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1j
cHkoYWNbaV0sIHMtPmFjX3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV0sIHNpemVvZihpbnQxNl90
KSoxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY1tpXSA9IHMtPmMu
ZGNfdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbaV1dOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVtY3B5KGFjW2ldLCBzLT5jLmFjX3ZhbFswXVtzLT5jLmJsb2NrX2luZGV4
W2ldXSwgc2l6ZW9mKGludDE2X3QpKjE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRl
eF9wYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZu
ZXh0X2Jsb2NrLCBzLT5tdlttdmRpcl1bMF1bMF0sIHMtPm12W212ZGlyXVswXVsxXSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmVzdF9zLnFzY2FsZSAhPSBxcCl7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+
Yy5tdlttdmRpcl1bMF1bMF0sIHMtPmMubXZbbXZkaXJdWzBdWzFdKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYmVzdF9zLmMucXNjYWxlICE9IHFwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmKHN0b3JlY29lZnMpewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yKGk9MDsgaTw2OyBpKyspewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPmRjX3ZhbFswXVsgcy0+YmxvY2tfaW5kZXhbaV0gXT0gZGNb
aV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHMtPmFj
X3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV0sIGFjW2ldLCBzaXplb2YoaW50MTZfdCkqMTYpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuZGNfdmFsWzBdW3Mt
PmMuYmxvY2tfaW5kZXhbaV1dID0gZGNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVtY3B5KHMtPmMuYWNfdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbaV1dLCBh
Y1tpXSwgc2l6ZW9mKGludDE2X3QpKjE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTMzMzUsNDUgKzMzMzcsNDUgQEAgc3RhdGljIGludCBlbmNv
ZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICAgICAgICAg
ICAgICBpbnQgbXk9IHMtPmJfZGlyZWN0X212X3RhYmxlW3h5XVsxXTsKIAogICAgICAgICAgICAg
ICAgICAgICBiYWNrdXBfcy5kcXVhbnQgPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl9k
aXIgPSBNVl9ESVJfRk9SV0FSRCB8IE1WX0RJUl9CQUNLV0FSRCB8IE1WX0RJUkVDVDsKLSAgICAg
ICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZmX21w
ZWc0X3NldF9kaXJlY3RfbXYocywgbXgsIG15KTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t
dl9kaXIgICAgID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQgfCBNVl9ESVJFQ1Q7
CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgICA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIGZmX21wZWc0X3NldF9kaXJlY3RfbXYoJnMtPmMsIG14LCBteSk7CiAgICAgICAgICAg
ICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRl
eF9wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9j
aywgbXgsIG15KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYoQ09ORklH
X01QRUc0X0VOQ09ERVIgJiYgbWJfdHlwZSZDQU5ESURBVEVfTUJfVFlQRV9ESVJFQ1QwKXsKICAg
ICAgICAgICAgICAgICAgICAgYmFja3VwX3MuZHF1YW50ID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgcy0+bXZfZGlyID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQgfCBNVl9ESVJF
Q1Q7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAgICAgICAg
ICAgICBmZl9tcGVnNF9zZXRfZGlyZWN0X212KHMsIDAsIDApOworICAgICAgICAgICAgICAgICAg
ICBzLT5jLm12X2RpciAgID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQgfCBNVl9E
SVJFQ1Q7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgPSAwOworICAgICAgICAg
ICAgICAgICAgICBmZl9tcGVnNF9zZXRfZGlyZWN0X212KCZzLT5jLCAwLCAwKTsKICAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBiMiwg
dGV4X3BiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0X2Js
b2NrLCAwLCAwKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFiZXN0
X3MubWJfaW50cmEgJiYgcy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfU0tJUF9SRCkgeworICAg
ICAgICAgICAgICAgIGlmICghYmVzdF9zLmMubWJfaW50cmEgJiYgcy0+bXB2X2ZsYWdzICYgRkZf
TVBWX0ZMQUdfU0tJUF9SRCkgewogICAgICAgICAgICAgICAgICAgICBpbnQgY29kZWQ9MDsKICAg
ICAgICAgICAgICAgICAgICAgZm9yKGk9MDsgaTw2OyBpKyspCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb2RlZCB8PSBzLT5ibG9ja19sYXN0X2luZGV4W2ldOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29kZWQgfD0gcy0+Yy5ibG9ja19sYXN0X2luZGV4W2ldOwogICAgICAgICAgICAgICAg
ICAgICBpZihjb2RlZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbXgsbXk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtZW1jcHkocy0+bXYsIGJlc3Rfcy5tdiwgc2l6ZW9mKHMtPm12
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZihDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBi
ZXN0X3MubXZfZGlyICYgTVZfRElSRUNUKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNw
eShzLT5jLm12LCBiZXN0X3MuYy5tdiwgc2l6ZW9mKHMtPmMubXYpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBiZXN0X3MuYy5tdl9kaXIgJiBN
Vl9ESVJFQ1QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteD1teT0wOyAvL0ZJWE1F
IGZpbmQgdGhlIG9uZSB3ZSBhY3R1YWxseSB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmZfbXBlZzRfc2V0X2RpcmVjdF9tdihzLCBteCwgbXkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfWVsc2UgaWYoYmVzdF9zLm12X2RpciZNVl9ESVJfQkFDS1dBUkQpewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG14PSBzLT5tdlsxXVswXVswXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBteT0gcy0+bXZbMV1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmZfbXBlZzRfc2V0X2RpcmVjdF9tdigmcy0+YywgbXgsIG15KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoYmVzdF9zLmMubXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSBzLT5jLm12WzFdWzBdWzBdOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG15ID0gcy0+Yy5tdlsxXVswXVsxXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH1lbHNlewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG14PSBz
LT5tdlswXVswXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBteT0gcy0+bXZbMF1b
MF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSBzLT5jLm12WzBdWzBdWzBd
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ID0gcy0+Yy5tdlswXVswXVsxXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZf
ZGlyPSBiZXN0X3MubXZfZGlyOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9
IGJlc3Rfcy5tdl90eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7
Ci0vKiAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdID0gYmVzdF9zLm12WzBd
WzBdWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1bMV0gPSBiZXN0X3Mu
bXZbMF1bMF1bMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsxXVswXVswXSA9IGJl
c3Rfcy5tdlsxXVswXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdWzBdWzFd
ID0gYmVzdF9zLm12WzFdWzBdWzFdOyovCisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12
X2RpciAgID0gYmVzdF9zLmMubXZfZGlyOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5t
dl90eXBlICA9IGJlc3Rfcy5jLm12X3R5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5j
Lm1iX2ludHJhID0gMDsKKy8qICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsw
XSA9IGJlc3Rfcy5tdlswXVswXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZb
MF1bMF1bMV0gPSBiZXN0X3MubXZbMF1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICBz
LT5jLm12WzFdWzBdWzBdID0gYmVzdF9zLm12WzFdWzBdWzBdOworICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5tdlsxXVswXVsxXSA9IGJlc3Rfcy5tdlsxXVswXVsxXTsqLwogICAgICAgICAg
ICAgICAgICAgICAgICAgYmFja3VwX3MuZHF1YW50PSAwOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcy0+c2tpcGRjdD0xOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMs
ICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBiMiwgdGV4X3BiLApAQCAtMzM4OSw3ICszMzkxLDcg
QEAgc3RhdGljIGludCBlbmNvZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcp
ewogICAgICAgICAgICAgICAgIGZmX2NvcHlfYml0cygmYmFja3VwX3MucGIsIGJpdF9idWZbbmV4
dF9ibG9ja14xXSwgcGJfYml0c19jb3VudCk7CiAgICAgICAgICAgICAgICAgcy0+cGI9IGJhY2t1
cF9zLnBiOwogCi0gICAgICAgICAgICAgICAgaWYocy0+ZGF0YV9wYXJ0aXRpb25pbmcpeworICAg
ICAgICAgICAgICAgIGlmIChzLT5jLmRhdGFfcGFydGl0aW9uaW5nKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHBiMl9iaXRzX2NvdW50PSBwdXRfYml0c19jb3VudCgmcy0+cGIyKTsKICAgICAgICAg
ICAgICAgICAgICAgZmx1c2hfcHV0X2JpdHMoJnMtPnBiMik7CiAgICAgICAgICAgICAgICAgICAg
IGZmX2NvcHlfYml0cygmYmFja3VwX3MucGIyLCBiaXRfYnVmMltuZXh0X2Jsb2NrXjFdLCBwYjJf
Yml0c19jb3VudCk7CkBAIC0zNDAzLDE3OCArMzQwNSwxNzggQEAgc3RhdGljIGludCBlbmNvZGVf
dGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICAgICAgICAgIHMt
Pmxhc3RfYml0cz0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKIAogICAgICAgICAgICAgICAgIGlm
IChDT05GSUdfSDI2M19FTkNPREVSICYmCi0gICAgICAgICAgICAgICAgICAgIHMtPm91dF9mb3Jt
YXQgPT0gRk1UX0gyNjMgJiYgcy0+cGljdF90eXBlIT1BVl9QSUNUVVJFX1RZUEVfQikKKyAgICAg
ICAgICAgICAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzICYmIHMtPmMucGljdF90
eXBlIT1BVl9QSUNUVVJFX1RZUEVfQikKICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M191cGRh
dGVfbWIocyk7CiAKICAgICAgICAgICAgICAgICBpZihuZXh0X2Jsb2NrPT0wKXsgLy9GSVhNRSAx
NiB2cyBsaW5lc2l6ZTE2Ci0gICAgICAgICAgICAgICAgICAgIHMtPmhkc3AucHV0X3BpeGVsc190
YWJbMF1bMF0ocy0+ZGVzdFswXSwgcy0+c2MucmRfc2NyYXRjaHBhZCAgICAgICAgICAgICAgICAg
ICAgICwgcy0+bGluZXNpemUgICwxNik7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmhkc3AucHV0
X3BpeGVsc190YWJbMV1bMF0ocy0+ZGVzdFsxXSwgcy0+c2MucmRfc2NyYXRjaHBhZCArIDE2KnMt
PmxpbmVzaXplICAgICwgcy0+dXZsaW5lc2l6ZSwgOCk7Ci0gICAgICAgICAgICAgICAgICAgIHMt
Pmhkc3AucHV0X3BpeGVsc190YWJbMV1bMF0ocy0+ZGVzdFsyXSwgcy0+c2MucmRfc2NyYXRjaHBh
ZCArIDE2KnMtPmxpbmVzaXplICsgOCwgcy0+dXZsaW5lc2l6ZSwgOCk7CisgICAgICAgICAgICAg
ICAgICAgIHMtPmMuaGRzcC5wdXRfcGl4ZWxzX3RhYlswXVswXShzLT5jLmRlc3RbMF0sIHMtPmMu
c2MucmRfc2NyYXRjaHBhZCAgICAgICAgICAgICAgICAgICAgICwgcy0+Yy5saW5lc2l6ZSAgLDE2
KTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5oZHNwLnB1dF9waXhlbHNfdGFiWzFdWzBdKHMt
PmMuZGVzdFsxXSwgcy0+Yy5zYy5yZF9zY3JhdGNocGFkICsgMTYqcy0+Yy5saW5lc2l6ZSAgICAs
IHMtPmMudXZsaW5lc2l6ZSwgOCk7CisgICAgICAgICAgICAgICAgICAgIHMtPmMuaGRzcC5wdXRf
cGl4ZWxzX3RhYlsxXVswXShzLT5jLmRlc3RbMl0sIHMtPmMuc2MucmRfc2NyYXRjaHBhZCArIDE2
KnMtPmMubGluZXNpemUgKyA4LCBzLT5jLnV2bGluZXNpemUsIDgpOwogICAgICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGlmKHMtPmF2Y3R4LT5tYl9kZWNpc2lvbiA9PSBGRl9NQl9E
RUNJU0lPTl9CSVRTKQotICAgICAgICAgICAgICAgICAgICBtcHZfcmVjb25zdHJ1Y3RfbWIocywg
cy0+YmxvY2spOworICAgICAgICAgICAgICAgIGlmKHMtPmMuYXZjdHgtPm1iX2RlY2lzaW9uID09
IEZGX01CX0RFQ0lTSU9OX0JJVFMpCisgICAgICAgICAgICAgICAgICAgIG1wdl9yZWNvbnN0cnVj
dF9tYihzLCBzLT5jLmJsb2NrKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgaW50IG1vdGlvbl94ID0gMCwgbW90aW9uX3kgPSAwOwotICAgICAgICAgICAgICAgIHMtPm12
X3R5cGU9TVZfVFlQRV8xNlgxNjsKKyAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGU9TVZfVFlQ
RV8xNlgxNjsKICAgICAgICAgICAgICAgICAvLyBvbmx5IG9uZSBNQi1UeXBlIHBvc3NpYmxlCiAK
ICAgICAgICAgICAgICAgICBzd2l0Y2gobWJfdHlwZSl7CiAgICAgICAgICAgICAgICAgY2FzZSBD
QU5ESURBVEVfTUJfVFlQRV9JTlRSQToKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfZGlyID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDE7Ci0gICAgICAgICAgICAgICAg
ICAgIG1vdGlvbl94PSBzLT5tdlswXVswXVswXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1v
dGlvbl95PSBzLT5tdlswXVswXVsxXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iaW50
cmFfdGFibGVbeHldID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl9kaXIgPSAwOwor
ICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAxOworICAgICAgICAgICAgICAgICAg
ICBtb3Rpb25feD0gcy0+Yy5tdlswXVswXVswXSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1v
dGlvbl95PSBzLT5jLm12WzBdWzBdWzFdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t
YmludHJhX3RhYmxlW3h5XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGNhc2UgQ0FORElEQVRFX01CX1RZUEVfSU5URVI6Ci0gICAgICAgICAgICAgICAg
ICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5t
Yl9pbnRyYT0gMDsKLSAgICAgICAgICAgICAgICAgICAgbW90aW9uX3g9IHMtPm12WzBdWzBdWzBd
ID0gcy0+cF9tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIG1vdGlvbl95PSBz
LT5tdlswXVswXVsxXSA9IHMtPnBfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAgICAgICAg
ICBzLT5jLm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5j
Lm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICBtb3Rpb25feD0gcy0+Yy5tdlswXVsw
XVswXSA9IHMtPnBfbXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBtb3Rpb25f
eT0gcy0+Yy5tdlswXVswXVsxXSA9IHMtPnBfbXZfdGFibGVbeHldWzFdOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENBTkRJREFURV9NQl9UWVBFX0lO
VEVSX0k6Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwot
ICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV9GSUVMRDsKLSAgICAgICAg
ICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZf
ZGlyID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9
IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CiAg
ICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGo9IHMtPmZpZWxkX3NlbGVjdFswXVtpXSA9IHMtPnBfZmllbGRfc2VsZWN0X3RhYmxl
W2ldW3h5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+cF9m
aWVsZF9tdl90YWJsZVtpXVtqXVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5t
dlswXVtpXVsxXSA9IHMtPnBfZmllbGRfbXZfdGFibGVbaV1bal1beHldWzFdOworICAgICAgICAg
ICAgICAgICAgICAgICAgaj0gcy0+Yy5maWVsZF9zZWxlY3RbMF1baV0gPSBzLT5wX2ZpZWxkX3Nl
bGVjdF90YWJsZVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ld
WzBdID0gcy0+Yy5wX2ZpZWxkX212X3RhYmxlW2ldW2pdW3h5XVswXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPmMubXZbMF1baV1bMV0gPSBzLT5jLnBfZmllbGRfbXZfdGFibGVbaV1bal1b
eHldWzFdOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgQ0FORElEQVRFX01CX1RZUEVfSU5URVI0VjoKLSAgICAg
ICAgICAgICAgICAgICAgcy0+bXZfZGlyID0gTVZfRElSX0ZPUldBUkQ7Ci0gICAgICAgICAgICAg
ICAgICAgIHMtPm12X3R5cGUgPSBNVl9UWVBFXzhYODsKLSAgICAgICAgICAgICAgICAgICAgcy0+
bWJfaW50cmE9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZP
UldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9IE1WX1RZUEVfOFg4Owor
ICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAwOwogICAgICAgICAgICAgICAgICAg
ICBmb3IoaT0wOyBpPDQ7IGkrKyl7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtp
XVswXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV1bMF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtpXVsxXSA9IHMtPmN1cl9waWMubW90aW9u
X3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICBz
LT5jLm12WzBdW2ldWzBdID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5ibG9ja19p
bmRleFtpXV1bMF07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ldWzFdID0g
cy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5ibG9ja19pbmRleFtpXV1bMV07CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgY2FzZSBDQU5ESURBVEVfTUJfVFlQRV9ESVJFQ1Q6CiAgICAgICAgICAgICAgICAgICAg
IGlmIChDT05GSUdfTVBFRzRfRU5DT0RFUikgewotICAgICAgICAgICAgICAgICAgICAgICAgcy0+
bXZfZGlyID0gTVZfRElSX0ZPUldBUkR8TVZfRElSX0JBQ0tXQVJEfE1WX0RJUkVDVDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgcy0+Yy5tdl9kaXIgPSBNVl9ESVJfRk9SV0FSRHxNVl9ESVJfQkFDS1dBUkR8TVZfRElSRUNU
OworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYT0gMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vdGlvbl94PXMtPmJfZGlyZWN0X212X3RhYmxlW3h5XVswXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvbl95PXMtPmJfZGlyZWN0X212X3RhYmxlW3h5XVsxXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZmX21wZWc0X3NldF9kaXJlY3RfbXYocywgbW90aW9u
X3gsIG1vdGlvbl95KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZmX21wZWc0X3NldF9kaXJl
Y3RfbXYoJnMtPmMsIG1vdGlvbl94LCBtb3Rpb25feSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURB
VEVfTUJfVFlQRV9ESVJFQ1QwOgogICAgICAgICAgICAgICAgICAgICBpZiAoQ09ORklHX01QRUc0
X0VOQ09ERVIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9G
T1JXQVJEfE1WX0RJUl9CQUNLV0FSRHxNVl9ESVJFQ1Q7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzLT5tYl9pbnRyYT0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZmX21wZWc0X3NldF9k
aXJlY3RfbXYocywgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12X2RpciA9
IE1WX0RJUl9GT1JXQVJEfE1WX0RJUl9CQUNLV0FSRHxNVl9ESVJFQ1Q7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZmZf
bXBlZzRfc2V0X2RpcmVjdF9tdigmcy0+YywgMCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURB
VEVfTUJfVFlQRV9CSURJUjoKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfZGlyID0gTVZfRElS
X0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2lu
dHJhPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVswXVswXSA9IHMtPmJfYmlkaXJf
Zm9yd19tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFd
ID0gcy0+Yl9iaWRpcl9mb3J3X212X3RhYmxlW3h5XVsxXTsKLSAgICAgICAgICAgICAgICAgICAg
cy0+bXZbMV1bMF1bMF0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVbeHldWzBdOwotICAgICAg
ICAgICAgICAgICAgICBzLT5tdlsxXVswXVsxXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4
eV1bMV07CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZPUldBUkQg
fCBNVl9ESVJfQkFDS1dBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7
CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBzLT5iX2JpZGlyX2Zvcndf
bXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzFdID0g
cy0+Yl9iaWRpcl9mb3J3X212X3RhYmxlW3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+
Yy5tdlsxXVswXVswXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4eV1bMF07CisgICAgICAg
ICAgICAgICAgICAgIHMtPmMubXZbMV1bMF1bMV0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVb
eHldWzFdOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNl
IENBTkRJREFURV9NQl9UWVBFX0JBQ0tXQVJEOgotICAgICAgICAgICAgICAgICAgICBzLT5tdl9k
aXIgPSBNVl9ESVJfQkFDS1dBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAw
OwotICAgICAgICAgICAgICAgICAgICBtb3Rpb25feD0gcy0+bXZbMV1bMF1bMF0gPSBzLT5iX2Jh
Y2tfbXZfdGFibGVbeHldWzBdOwotICAgICAgICAgICAgICAgICAgICBtb3Rpb25feT0gcy0+bXZb
MV1bMF1bMV0gPSBzLT5iX2JhY2tfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAgICAgICAg
ICBzLT5jLm12X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+
Yy5tYl9pbnRyYT0gMDsKKyAgICAgICAgICAgICAgICAgICAgbW90aW9uX3g9IHMtPmMubXZbMV1b
MF1bMF0gPSBzLT5iX2JhY2tfbXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBt
b3Rpb25feT0gcy0+Yy5tdlsxXVswXVsxXSA9IHMtPmJfYmFja19tdl90YWJsZVt4eV1bMV07CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ0FORElEQVRF
X01CX1RZUEVfRk9SV0FSRDoKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfZGlyID0gTVZfRElS
X0ZPUldBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAg
ICAgICAgICAgICBtb3Rpb25feD0gcy0+bXZbMF1bMF1bMF0gPSBzLT5iX2ZvcndfbXZfdGFibGVb
eHldWzBdOwotICAgICAgICAgICAgICAgICAgICBtb3Rpb25feT0gcy0+bXZbMF1bMF1bMV0gPSBz
LT5iX2ZvcndfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X2Rp
ciA9IE1WX0RJUl9GT1JXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAw
OworICAgICAgICAgICAgICAgICAgICBtb3Rpb25feD0gcy0+Yy5tdlswXVswXVswXSA9IHMtPmJf
Zm9yd19tdl90YWJsZVt4eV1bMF07CisgICAgICAgICAgICAgICAgICAgIG1vdGlvbl95PSBzLT5j
Lm12WzBdWzBdWzFdID0gcy0+Yl9mb3J3X212X3RhYmxlW3h5XVsxXTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURBVEVfTUJfVFlQRV9GT1JX
QVJEX0k6Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwot
ICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV9GSUVMRDsKLSAgICAgICAg
ICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZf
ZGlyID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9
IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CiAg
ICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGo9IHMtPmZpZWxkX3NlbGVjdFswXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0X3RhYmxl
WzBdW2ldW3h5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+
Yl9maWVsZF9tdl90YWJsZVswXVtpXVtqXVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzLT5tdlswXVtpXVsxXSA9IHMtPmJfZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzFdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaj0gcy0+Yy5maWVsZF9zZWxlY3RbMF1baV0gPSBzLT5i
X2ZpZWxkX3NlbGVjdF90YWJsZVswXVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAgICAgICBz
LT5jLm12WzBdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVswXVtpXVtqXVt4eV1bMF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ldWzFdID0gcy0+Yl9maWVsZF9tdl90
YWJsZVswXVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURBVEVfTUJfVFlQRV9C
QUNLV0FSRF9JOgotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBNVl9ESVJfQkFDS1dB
UkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X3R5cGUgPSBNVl9UWVBFX0ZJRUxEOwotICAg
ICAgICAgICAgICAgICAgICBzLT5tYl9pbnRyYT0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+
Yy5tdl9kaXIgPSBNVl9ESVJfQkFDS1dBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZf
dHlwZSA9IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9
IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGo9IHMtPmZpZWxkX3NlbGVjdFsxXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0
X3RhYmxlWzFdW2ldW3h5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdW2ldWzBd
ID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMF07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzLT5tdlsxXVtpXVsxXSA9IHMtPmJfZmllbGRfbXZfdGFibGVbMV1baV1bal1beHld
WzFdOworICAgICAgICAgICAgICAgICAgICAgICAgaj0gcy0+Yy5maWVsZF9zZWxlY3RbMV1baV0g
PSBzLT5iX2ZpZWxkX3NlbGVjdF90YWJsZVsxXVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAg
ICAgICBzLT5jLm12WzFdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1b
MF07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzFdW2ldWzFdID0gcy0+Yl9maWVs
ZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURBVEVfTUJf
VFlQRV9CSURJUl9JOgotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBNVl9ESVJfRk9S
V0FSRCB8IE1WX0RJUl9CQUNLV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9
IE1WX1RZUEVfRklFTEQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAg
ICAgICAgICAgICAgICAgICBzLT5jLm12X2RpciA9IE1WX0RJUl9GT1JXQVJEIHwgTVZfRElSX0JB
Q0tXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGUgPSBNVl9UWVBFX0ZJRUxE
OworICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAwOwogICAgICAgICAgICAgICAg
ICAgICBmb3IoZGlyPTA7IGRpcjwyOyBkaXIrKyl7CiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IoaT0wOyBpPDI7IGkrKyl7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaj0gcy0+Zmll
bGRfc2VsZWN0W2Rpcl1baV0gPSBzLT5iX2ZpZWxkX3NlbGVjdF90YWJsZVtkaXJdW2ldW3h5XTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tdltkaXJdW2ldWzBdID0gcy0+Yl9maWVs
ZF9tdl90YWJsZVtkaXJdW2ldW2pdW3h5XVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5tdltkaXJdW2ldWzFdID0gcy0+Yl9maWVsZF9tdl90YWJsZVtkaXJdW2ldW2pdW3h5XVsx
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqPSBzLT5jLmZpZWxkX3NlbGVjdFtkaXJd
W2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFibGVbZGlyXVtpXVt4eV07CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcy0+Yy5tdltkaXJdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVtk
aXJdW2ldW2pdW3h5XVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12W2Rp
cl1baV1bMV0gPSBzLT5iX2ZpZWxkX212X3RhYmxlW2Rpcl1baV1bal1beHldWzFdOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiaWxsZWdhbCBNQiB0eXBlXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJPUiwgImls
bGVnYWwgTUIgdHlwZVxuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
ZW5jb2RlX21iKHMsIG1vdGlvbl94LCBtb3Rpb25feSk7CiAKICAgICAgICAgICAgICAgICAvLyBS
QUw6IFVwZGF0ZSBsYXN0IG1hY3JvYmxvY2sgdHlwZQotICAgICAgICAgICAgICAgIHMtPmxhc3Rf
bXZfZGlyID0gcy0+bXZfZGlyOworICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZfZGlyID0gcy0+
Yy5tdl9kaXI7CiAKICAgICAgICAgICAgICAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUiAmJgot
ICAgICAgICAgICAgICAgICAgICBzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYzICYmIHMtPnBpY3Rf
dHlwZSE9QVZfUElDVFVSRV9UWVBFX0IpCisgICAgICAgICAgICAgICAgICAgIHMtPmMub3V0X2Zv
cm1hdCA9PSBGTVRfSDI2MyAmJiBzLT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfQikK
ICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M191cGRhdGVfbWIocyk7CiAKLSAgICAgICAgICAg
ICAgICBtcHZfcmVjb25zdHJ1Y3RfbWIocywgcy0+YmxvY2spOworICAgICAgICAgICAgICAgIG1w
dl9yZWNvbnN0cnVjdF9tYihzLCBzLT5jLmJsb2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgcy0+Y3VyX3BpYy5xc2NhbGVfdGFibGVbeHldID0gcy0+cXNjYWxlOworICAgICAgICAg
ICAgcy0+Yy5jdXJfcGljLnFzY2FsZV90YWJsZVt4eV0gPSBzLT5jLnFzY2FsZTsKIAogICAgICAg
ICAgICAgLyogY2xlYW4gdGhlIE1WIHRhYmxlIGluIElQUyBmcmFtZXMgZm9yIGRpcmVjdCBtb2Rl
IGluIEItZnJhbWVzICovCi0gICAgICAgICAgICBpZihzLT5tYl9pbnRyYSAvKiAmJiBJLFAsU19U
WVBFICovKXsKKyAgICAgICAgICAgIGlmIChzLT5jLm1iX2ludHJhIC8qICYmIEksUCxTX1RZUEUg
Ki8pIHsKICAgICAgICAgICAgICAgICBzLT5wX212X3RhYmxlW3h5XVswXT0wOwogICAgICAgICAg
ICAgICAgIHMtPnBfbXZfdGFibGVbeHldWzFdPTA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKChz
LT5oMjYzX3ByZWQgfHwgcy0+aDI2M19haWMpICYmIHMtPm1iaW50cmFfdGFibGVbeHldKQotICAg
ICAgICAgICAgICAgIGZmX2NsZWFuX2ludHJhX3RhYmxlX2VudHJpZXMocyk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKChzLT5jLmgyNjNfcHJlZCB8fCBzLT5jLmgyNjNfYWljKSAmJiBzLT5jLm1i
aW50cmFfdGFibGVbeHldKQorICAgICAgICAgICAgICAgIGZmX2NsZWFuX2ludHJhX3RhYmxlX2Vu
dHJpZXMoJnMtPmMpOwogCi0gICAgICAgICAgICBpZiAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09E
RUNfRkxBR19QU05SKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9D
T0RFQ19GTEFHX1BTTlIpIHsKICAgICAgICAgICAgICAgICBpbnQgdz0gMTY7CiAgICAgICAgICAg
ICAgICAgaW50IGg9IDE2OwogCi0gICAgICAgICAgICAgICAgaWYocy0+bWJfeCoxNiArIDE2ID4g
cy0+d2lkdGggKSB3PSBzLT53aWR0aCAtIHMtPm1iX3gqMTY7Ci0gICAgICAgICAgICAgICAgaWYo
cy0+bWJfeSoxNiArIDE2ID4gcy0+aGVpZ2h0KSBoPSBzLT5oZWlnaHQtIHMtPm1iX3kqMTY7Cisg
ICAgICAgICAgICAgICAgaWYocy0+Yy5tYl94KjE2ICsgMTYgPiBzLT5jLndpZHRoICkgdz0gcy0+
Yy53aWR0aCAtIHMtPmMubWJfeCoxNjsKKyAgICAgICAgICAgICAgICBpZihzLT5jLm1iX3kqMTYg
KyAxNiA+IHMtPmMuaGVpZ2h0KSBoPSBzLT5jLmhlaWdodC0gcy0+Yy5tYl95KjE2OwogCiAgICAg
ICAgICAgICAgICAgcy0+ZW5jb2RpbmdfZXJyb3JbMF0gKz0gc3NlKAotICAgICAgICAgICAgICAg
ICAgICBzLCBzLT5uZXdfcGljLT5kYXRhWzBdICsgcy0+bWJfeCoxNiArIHMtPm1iX3kqcy0+bGlu
ZXNpemUqMTYsCi0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMF0sIHcsIGgsIHMtPmxpbmVz
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgcywgcy0+bmV3X3BpYy0+ZGF0YVswXSArIHMtPmMu
bWJfeCoxNiArIHMtPmMubWJfeSpzLT5jLmxpbmVzaXplKjE2LAorICAgICAgICAgICAgICAgICAg
ICBzLT5jLmRlc3RbMF0sIHcsIGgsIHMtPmMubGluZXNpemUpOwogICAgICAgICAgICAgICAgIHMt
PmVuY29kaW5nX2Vycm9yWzFdICs9IHNzZSgKLSAgICAgICAgICAgICAgICAgICAgcywgcy0+bmV3
X3BpYy0+ZGF0YVsxXSArIHMtPm1iX3gqOCAgKyBzLT5tYl95KnMtPnV2bGluZXNpemUqY2hyX2gs
Ci0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMV0sIHc+PjEsIGg+PnMtPmNocm9tYV95X3No
aWZ0LCBzLT51dmxpbmVzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcywgcy0+bmV3X3BpYy0+
ZGF0YVsxXSArIHMtPmMubWJfeCo4ICArIHMtPmMubWJfeSpzLT5jLnV2bGluZXNpemUqY2hyX2gs
CisgICAgICAgICAgICAgICAgICAgIHMtPmMuZGVzdFsxXSwgdz4+MSwgaD4+cy0+Yy5jaHJvbWFf
eV9zaGlmdCwgcy0+Yy51dmxpbmVzaXplKTsKICAgICAgICAgICAgICAgICBzLT5lbmNvZGluZ19l
cnJvclsyXSArPSBzc2UoCi0gICAgICAgICAgICAgICAgICAgIHMsIHMtPm5ld19waWMtPmRhdGFb
Ml0gKyBzLT5tYl94KjggICsgcy0+bWJfeSpzLT51dmxpbmVzaXplKmNocl9oLAotICAgICAgICAg
ICAgICAgICAgICBzLT5kZXN0WzJdLCB3Pj4xLCBoPj5zLT5jaHJvbWFfeV9zaGlmdCwgcy0+dXZs
aW5lc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHMsIHMtPm5ld19waWMtPmRhdGFbMl0gKyBz
LT5jLm1iX3gqOCAgKyBzLT5jLm1iX3kqcy0+Yy51dmxpbmVzaXplKmNocl9oLAorICAgICAgICAg
ICAgICAgICAgICBzLT5jLmRlc3RbMl0sIHc+PjEsIGg+PnMtPmMuY2hyb21hX3lfc2hpZnQsIHMt
PmMudXZsaW5lc2l6ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZihzLT5sb29wX2Zp
bHRlcil7Ci0gICAgICAgICAgICAgICAgaWYoQ09ORklHX0gyNjNfRU5DT0RFUiAmJiBzLT5vdXRf
Zm9ybWF0ID09IEZNVF9IMjYzKQotICAgICAgICAgICAgICAgICAgICBmZl9oMjYzX2xvb3BfZmls
dGVyKHMpOworICAgICAgICAgICAgaWYgKHMtPmMubG9vcF9maWx0ZXIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUiAmJiBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gy
NjMpCisgICAgICAgICAgICAgICAgICAgIGZmX2gyNjNfbG9vcF9maWx0ZXIoJnMtPmMpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZmZfZGxvZyhzLT5hdmN0eCwgIk1CICVkICVkIGJpdHNc
biIsCi0gICAgICAgICAgICAgICAgICAgIHMtPm1iX3ggKyBzLT5tYl95ICogcy0+bWJfc3RyaWRl
LCBwdXRfYml0c19jb3VudCgmcy0+cGIpKTsKKyAgICAgICAgICAgIGZmX2Rsb2cocy0+Yy5hdmN0
eCwgIk1CICVkICVkIGJpdHNcbiIsCisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfeCArIHMt
PmMubWJfeSAqIHMtPmMubWJfc3RyaWRlLCBwdXRfYml0c19jb3VudCgmcy0+cGIpKTsKICAgICAg
ICAgfQogICAgIH0KIAogI2lmIENPTkZJR19NU01QRUc0RU5DCiAgICAgLy9ub3QgYmVhdXRpZnVs
IGhlcmUgYnV0IHdlIG11c3Qgd3JpdGUgaXQgYmVmb3JlIGZsdXNoaW5nIHNvIGl0IGhhcyB0byBi
ZSBoZXJlCi0gICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQgJiYgcy0+
bXNtcGVnNF92ZXJzaW9uIDwgTVNNUDRfV01WMSAmJgotICAgICAgICBzLT5waWN0X3R5cGUgPT0g
QVZfUElDVFVSRV9UWVBFX0kpCisgICAgaWYgKHMtPmMubXNtcGVnNF92ZXJzaW9uICE9IE1TTVA0
X1VOVVNFRCAmJiBzLT5jLm1zbXBlZzRfdmVyc2lvbiA8IE1TTVA0X1dNVjEgJiYKKyAgICAgICAg
cy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpCiAgICAgICAgIGZmX21zbXBlZzRf
ZW5jb2RlX2V4dF9oZWFkZXIocyk7CiAjZW5kaWYKIApAQCAtMzU4NCwxMyArMzU4NiwxNSBAQCBz
dGF0aWMgaW50IGVuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZvaWQgKmFyZyl7CiB9
CiAKICNkZWZpbmUgTUVSR0UoZmllbGQpIGRzdC0+ZmllbGQgKz0gc3JjLT5maWVsZDsgc3JjLT5m
aWVsZD0wCi1zdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX21lKE1wZWdFbmNDb250ZXh0
ICpkc3QsIE1wZWdFbmNDb250ZXh0ICpzcmMpewotICAgIE1FUkdFKG1lLnNjZW5lX2NoYW5nZV9z
Y29yZSk7Ci0gICAgTUVSR0UobWUubWNfbWJfdmFyX3N1bV90ZW1wKTsKLSAgICBNRVJHRShtZS5t
Yl92YXJfc3VtX3RlbXApOworc3RhdGljIHZvaWQgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShNUFZF
bmNDb250ZXh0ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKK3sKKyAgICBN
RVJHRShjLm1lLnNjZW5lX2NoYW5nZV9zY29yZSk7CisgICAgTUVSR0UoYy5tZS5tY19tYl92YXJf
c3VtX3RlbXApOworICAgIE1FUkdFKGMubWUubWJfdmFyX3N1bV90ZW1wKTsKIH0KIAotc3RhdGlj
IHZvaWQgbWVyZ2VfY29udGV4dF9hZnRlcl9lbmNvZGUoTXBlZ0VuY0NvbnRleHQgKmRzdCwgTXBl
Z0VuY0NvbnRleHQgKnNyYyl7CitzdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29k
ZShNUFZFbmNDb250ZXh0ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKK3sK
ICAgICBpbnQgaTsKIAogICAgIE1FUkdFKGRjdF9jb3VudFswXSk7IC8vbm90ZSwgdGhlIG90aGVy
IGRjdCB2YXJzIGFyZSBub3QgcGFydCBvZiB0aGUgY29udGV4dApAQCAtMzYxOSwyMiArMzYyMywy
MiBAQCBzdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29kZShNcGVnRW5jQ29udGV4
dCAqZHN0LCBNcGVnRW5jQ29udGV4dCAqc3JjKQogCiBzdGF0aWMgaW50IGVzdGltYXRlX3FwKE1Q
Vk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBpbnQgZHJ5X3J1bikKIHsKLSAgICBNcGVnRW5jQ29u
dGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+
czsKIAogICAgIGlmIChtLT5uZXh0X2xhbWJkYSl7Ci0gICAgICAgIHMtPmN1cl9waWMucHRyLT5m
LT5xdWFsaXR5ID0gbS0+bmV4dF9sYW1iZGE7CisgICAgICAgIHMtPmMuY3VyX3BpYy5wdHItPmYt
PnF1YWxpdHkgPSBtLT5uZXh0X2xhbWJkYTsKICAgICAgICAgaWYoIWRyeV9ydW4pIG0tPm5leHRf
bGFtYmRhPSAwOwogICAgIH0gZWxzZSBpZiAoIW0tPmZpeGVkX3FzY2FsZSkgewogICAgICAgICBp
bnQgcXVhbGl0eSA9IGZmX3JhdGVfZXN0aW1hdGVfcXNjYWxlKG0sIGRyeV9ydW4pOwotICAgICAg
ICBzLT5jdXJfcGljLnB0ci0+Zi0+cXVhbGl0eSA9IHF1YWxpdHk7Ci0gICAgICAgIGlmIChzLT5j
dXJfcGljLnB0ci0+Zi0+cXVhbGl0eSA8IDApCisgICAgICAgIHMtPmMuY3VyX3BpYy5wdHItPmYt
PnF1YWxpdHkgPSBxdWFsaXR5OworICAgICAgICBpZiAocy0+Yy5jdXJfcGljLnB0ci0+Zi0+cXVh
bGl0eSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgaWYocy0+YWRh
cHRpdmVfcXVhbnQpewogICAgICAgICBpbml0X3FzY2FsZV90YWIocyk7CiAKLSAgICAgICAgc3dp
dGNoKHMtPmNvZGVjX2lkKXsKKyAgICAgICAgc3dpdGNoIChzLT5jLmNvZGVjX2lkKSB7CiAgICAg
ICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzQ6CiAgICAgICAgICAgICBpZiAoQ09ORklHX01QRUc0
X0VOQ09ERVIpCiAgICAgICAgICAgICAgICAgZmZfY2xlYW5fbXBlZzRfcXNjYWxlcyhzKTsKQEAg
LTM2NDcsMTY5ICszNjUxLDE3NCBAQCBzdGF0aWMgaW50IGVzdGltYXRlX3FwKE1QVk1haW5FbmND
b250ZXh0ICpjb25zdCBtLCBpbnQgZHJ5X3J1bikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgcy0+bGFtYmRhPSBzLT5sYW1iZGFfdGFibGVbMF07CisgICAgICAgIHMt
PmMubGFtYmRhPSBzLT5sYW1iZGFfdGFibGVbMF07CiAgICAgICAgIC8vRklYTUUgYnJva2VuCiAg
ICAgfWVsc2UKLSAgICAgICAgcy0+bGFtYmRhID0gcy0+Y3VyX3BpYy5wdHItPmYtPnF1YWxpdHk7
CisgICAgICAgIHMtPmMubGFtYmRhID0gcy0+Yy5jdXJfcGljLnB0ci0+Zi0+cXVhbGl0eTsKICAg
ICB1cGRhdGVfcXNjYWxlKG0pOwogICAgIHJldHVybiAwOwogfQogCiAvKiBtdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgd3JpdGluZyB0aGUgaGVhZGVyICovCi1zdGF0aWMgdm9pZCBzZXRfZnJhbWVfZGlz
dGFuY2VzKE1wZWdFbmNDb250ZXh0ICogcyl7Ci0gICAgYXZfYXNzZXJ0MShzLT5jdXJfcGljLnB0
ci0+Zi0+cHRzICE9IEFWX05PUFRTX1ZBTFVFKTsKLSAgICBzLT50aW1lID0gcy0+Y3VyX3BpYy5w
dHItPmYtPnB0cyAqIHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVtOworc3RhdGljIHZvaWQgc2V0X2Zy
YW1lX2Rpc3RhbmNlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGF2X2Fzc2VydDEo
cy0+Yy5jdXJfcGljLnB0ci0+Zi0+cHRzICE9IEFWX05PUFRTX1ZBTFVFKTsKKyAgICBzLT5jLnRp
bWUgPSBzLT5jLmN1cl9waWMucHRyLT5mLT5wdHMgKiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVt
OwogCi0gICAgaWYocy0+cGljdF90eXBlPT1BVl9QSUNUVVJFX1RZUEVfQil7Ci0gICAgICAgIHMt
PnBiX3RpbWU9IHMtPnBwX3RpbWUgLSAocy0+bGFzdF9ub25fYl90aW1lIC0gcy0+dGltZSk7Ci0g
ICAgICAgIGF2X2Fzc2VydDEocy0+cGJfdGltZSA+IDAgJiYgcy0+cGJfdGltZSA8IHMtPnBwX3Rp
bWUpOworICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgeworICAg
ICAgICBzLT5jLnBiX3RpbWUgPSBzLT5jLnBwX3RpbWUgLSAocy0+Yy5sYXN0X25vbl9iX3RpbWUg
LSBzLT5jLnRpbWUpOworICAgICAgICBhdl9hc3NlcnQxKHMtPmMucGJfdGltZSA+IDAgJiYgcy0+
Yy5wYl90aW1lIDwgcy0+Yy5wcF90aW1lKTsKICAgICB9ZWxzZXsKLSAgICAgICAgcy0+cHBfdGlt
ZT0gcy0+dGltZSAtIHMtPmxhc3Rfbm9uX2JfdGltZTsKLSAgICAgICAgcy0+bGFzdF9ub25fYl90
aW1lPSBzLT50aW1lOwotICAgICAgICBhdl9hc3NlcnQxKHMtPnBpY3R1cmVfbnVtYmVyPT0wIHx8
IHMtPnBwX3RpbWUgPiAwKTsKKyAgICAgICAgcy0+Yy5wcF90aW1lID0gcy0+Yy50aW1lIC0gcy0+
Yy5sYXN0X25vbl9iX3RpbWU7CisgICAgICAgIHMtPmMubGFzdF9ub25fYl90aW1lID0gcy0+Yy50
aW1lOworICAgICAgICBhdl9hc3NlcnQxKHMtPmMucGljdHVyZV9udW1iZXI9PTAgfHwgcy0+Yy5w
cF90aW1lID4gMCk7CiAgICAgfQogfQogCiBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1h
aW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogewotICAgIE1wZWdF
bmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9
ICZtLT5zOwogICAgIGludCBpLCByZXQ7CiAgICAgaW50IGJpdHM7Ci0gICAgaW50IGNvbnRleHRf
Y291bnQgPSBzLT5zbGljZV9jb250ZXh0X2NvdW50OworICAgIGludCBjb250ZXh0X2NvdW50ID0g
cy0+Yy5zbGljZV9jb250ZXh0X2NvdW50OwogCiAgICAgLyogUmVzZXQgdGhlIGF2ZXJhZ2UgTUIg
dmFyaWFuY2UgKi8KLSAgICBzLT5tZS5tYl92YXJfc3VtX3RlbXAgICAgPQotICAgIHMtPm1lLm1j
X21iX3Zhcl9zdW1fdGVtcCA9IDA7CisgICAgcy0+Yy5tZS5tYl92YXJfc3VtX3RlbXAgICAgPQor
ICAgIHMtPmMubWUubWNfbWJfdmFyX3N1bV90ZW1wID0gMDsKIAogICAgIC8qIHdlIG5lZWQgdG8g
aW5pdGlhbGl6ZSBzb21lIHRpbWUgdmFycyBiZWZvcmUgd2UgY2FuIGVuY29kZSBCLWZyYW1lcyAq
LwogICAgIC8vIFJBTDogQ29uZGl0aW9uIGFkZGVkIGZvciBNUEVHMVZJREVPCi0gICAgaWYgKHMt
Pm91dF9mb3JtYXQgPT0gRk1UX01QRUcxIHx8IChzLT5oMjYzX3ByZWQgJiYgcy0+bXNtcGVnNF92
ZXJzaW9uID09IE1TTVA0X1VOVVNFRCkpCisgICAgaWYgKHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRf
TVBFRzEgfHwgKHMtPmMuaDI2M19wcmVkICYmIHMtPmMubXNtcGVnNF92ZXJzaW9uID09IE1TTVA0
X1VOVVNFRCkpCiAgICAgICAgIHNldF9mcmFtZV9kaXN0YW5jZXMocyk7Ci0gICAgaWYoQ09ORklH
X01QRUc0X0VOQ09ERVIgJiYgcy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpCisgICAg
aWYgKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURf
TVBFRzQpCiAgICAgICAgIGZmX3NldF9tcGVnNF90aW1lKHMpOwogCi0gICAgcy0+bWUuc2NlbmVf
Y2hhbmdlX3Njb3JlPTA7CisgICAgcy0+Yy5tZS5zY2VuZV9jaGFuZ2Vfc2NvcmU9MDsKIAotLy8g
ICAgcy0+bGFtYmRhPSBzLT5jdXJfcGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAu
Li4gc3R1ZmYgZm9yIE1FIHJhdGUgZGlzdG9ydGlvbgorLy8gICAgcy0+Yy5sYW1iZGE9IHMtPmMu
Y3VyX3BpYy5wdHItPnF1YWxpdHk7IC8vRklYTUUgcXNjYWxlIC8gLi4uIHN0dWZmIGZvciBNRSBy
YXRlIGRpc3RvcnRpb24KIAotICAgIGlmKHMtPnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX0kp
ewotICAgICAgICBzLT5ub19yb3VuZGluZyA9IHMtPm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9W
MzsKLSAgICB9ZWxzZSBpZihzLT5waWN0X3R5cGUhPUFWX1BJQ1RVUkVfVFlQRV9CKXsKLSAgICAg
ICAgcy0+bm9fcm91bmRpbmcgXj0gcy0+ZmxpcGZsb3Bfcm91bmRpbmc7CisgICAgaWYgKHMtPmMu
cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAgIHMtPmMubm9fcm91bmRp
bmcgPSBzLT5jLm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMzsKKyAgICB9IGVsc2UgaWYgKHMt
PmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAgICAgIHMtPmMubm9fcm91
bmRpbmcgXj0gcy0+Yy5mbGlwZmxvcF9yb3VuZGluZzsKICAgICB9CiAKLSAgICBpZiAocy0+YXZj
dHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgeworICAgIGlmIChzLT5jLmF2Y3R4LT5m
bGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpIHsKICAgICAgICAgcmV0ID0gZXN0aW1hdGVfcXAo
bSwgMSk7CiAgICAgICAgIGlmIChyZXQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAg
ICAgICAgZmZfZ2V0XzJwYXNzX2Zjb2RlKG0pOwotICAgIH0gZWxzZSBpZiAoIShzLT5hdmN0eC0+
ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FTQ0FMRSkpIHsKLSAgICAgICAgaWYocy0+cGljdF90eXBl
PT1BVl9QSUNUVVJFX1RZUEVfQikKLSAgICAgICAgICAgIHMtPmxhbWJkYSA9IG0tPmxhc3RfbGFt
YmRhX2ZvcltzLT5waWN0X3R5cGVdOworICAgIH0gZWxzZSBpZiAoIShzLT5jLmF2Y3R4LT5mbGFn
cyAmIEFWX0NPREVDX0ZMQUdfUVNDQUxFKSkgeworICAgICAgICBpZihzLT5jLnBpY3RfdHlwZT09
QVZfUElDVFVSRV9UWVBFX0IpCisgICAgICAgICAgICBzLT5jLmxhbWJkYSA9IG0tPmxhc3RfbGFt
YmRhX2ZvcltzLT5jLnBpY3RfdHlwZV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHMtPmxh
bWJkYSA9IG0tPmxhc3RfbGFtYmRhX2ZvclttLT5sYXN0X25vbl9iX3BpY3RfdHlwZV07CisgICAg
ICAgICAgICBzLT5jLmxhbWJkYSA9IG0tPmxhc3RfbGFtYmRhX2ZvclttLT5sYXN0X25vbl9iX3Bp
Y3RfdHlwZV07CiAgICAgICAgIHVwZGF0ZV9xc2NhbGUobSk7CiAgICAgfQogCiAgICAgZmZfbWVf
aW5pdF9waWMocyk7CiAKLSAgICBzLT5tYl9pbnRyYT0wOyAvL2ZvciB0aGUgcmF0ZSBkaXN0b3J0
aW9uICYgYml0IGNvbXBhcmUgZnVuY3Rpb25zCisgICAgcy0+Yy5tYl9pbnRyYSA9IDA7IC8vZm9y
IHRoZSByYXRlIGRpc3RvcnRpb24gJiBiaXQgY29tcGFyZSBmdW5jdGlvbnMKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvbnRleHRfY291bnQ7IGkrKykgewotICAgICAgICBNcGVnRW5jQ29udGV4
dCAqY29uc3Qgc2xpY2UgPSBzLT50aHJlYWRfY29udGV4dFtpXTsKKyAgICAgICAgTVBWRW5jQ29u
dGV4dCAqY29uc3Qgc2xpY2UgPSBzLT5jLmVuY19jb250ZXh0c1tpXTsKICAgICAgICAgdWludDhf
dCAqc3RhcnQsICplbmQ7CiAgICAgICAgIGludCBoOwogCiAgICAgICAgIGlmIChpKSB7Ci0gICAg
ICAgICAgICByZXQgPSBmZl91cGRhdGVfZHVwbGljYXRlX2NvbnRleHQoc2xpY2UsIHMpOworICAg
ICAgICAgICAgcmV0ID0gZmZfdXBkYXRlX2R1cGxpY2F0ZV9jb250ZXh0KCZzbGljZS0+YywgJnMt
PmMpOwogICAgICAgICAgICAgaWYgKHJldCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
dDsKICAgICAgICAgfQotICAgICAgICBzbGljZS0+bWUudGVtcCA9IHNsaWNlLT5tZS5zY3JhdGNo
cGFkID0gc2xpY2UtPnNjLnNjcmF0Y2hwYWRfYnVmOworICAgICAgICBzbGljZS0+Yy5tZS50ZW1w
ID0gc2xpY2UtPmMubWUuc2NyYXRjaHBhZCA9IHNsaWNlLT5jLnNjLnNjcmF0Y2hwYWRfYnVmOwog
Ci0gICAgICAgIGggICAgID0gcy0+bWJfaGVpZ2h0OwotICAgICAgICBzdGFydCA9IHBrdC0+ZGF0
YSArIChzaXplX3QpKCgoaW50NjRfdCkgcGt0LT5zaXplKSAqIHNsaWNlLT5zdGFydF9tYl95IC8g
aCk7Ci0gICAgICAgIGVuZCAgID0gcGt0LT5kYXRhICsgKHNpemVfdCkoKChpbnQ2NF90KSBwa3Qt
PnNpemUpICogc2xpY2UtPiAgZW5kX21iX3kgLyBoKTsKKyAgICAgICAgaCAgICAgPSBzLT5jLm1i
X2hlaWdodDsKKyAgICAgICAgc3RhcnQgPSBwa3QtPmRhdGEgKyAoc2l6ZV90KSgoKGludDY0X3Qp
IHBrdC0+c2l6ZSkgKiBzbGljZS0+Yy5zdGFydF9tYl95IC8gaCk7CisgICAgICAgIGVuZCAgID0g
cGt0LT5kYXRhICsgKHNpemVfdCkoKChpbnQ2NF90KSBwa3QtPnNpemUpICogc2xpY2UtPmMuICBl
bmRfbWJfeSAvIGgpOwogCi0gICAgICAgIGluaXRfcHV0X2JpdHMoJnMtPnRocmVhZF9jb250ZXh0
W2ldLT5wYiwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgaW5pdF9wdXRfYml0cygmcy0+
Yy5lbmNfY29udGV4dHNbaV0tPnBiLCBzdGFydCwgZW5kIC0gc3RhcnQpOwogICAgIH0KIAogICAg
IC8qIEVzdGltYXRlIG1vdGlvbiBmb3IgZXZlcnkgTUIgKi8KLSAgICBpZihzLT5waWN0X3R5cGUg
IT0gQVZfUElDVFVSRV9UWVBFX0kpewotICAgICAgICBzLT5sYW1iZGEgID0gKHMtPmxhbWJkYSAg
KiBtLT5tZV9wZW5hbHR5X2NvbXBlbnNhdGlvbiArIDEyOCkgPj4gODsKLSAgICAgICAgcy0+bGFt
YmRhMiA9IChzLT5sYW1iZGEyICogKGludDY0X3QpIG0tPm1lX3BlbmFsdHlfY29tcGVuc2F0aW9u
ICsgMTI4KSA+PiA4OwotICAgICAgICBpZiAocy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQ
RV9CKSB7CisgICAgaWYgKHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKSB7Cisg
ICAgICAgIHMtPmMubGFtYmRhICA9IChzLT5jLmxhbWJkYSAgKiBtLT5tZV9wZW5hbHR5X2NvbXBl
bnNhdGlvbiArIDEyOCkgPj4gODsKKyAgICAgICAgcy0+Yy5sYW1iZGEyID0gKHMtPmMubGFtYmRh
MiAqIChpbnQ2NF90KSBtLT5tZV9wZW5hbHR5X2NvbXBlbnNhdGlvbiArIDEyOCkgPj4gODsKKyAg
ICAgICAgaWYgKHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CiAgICAgICAg
ICAgICBpZiAoKG0tPm1lX3ByZSAmJiBtLT5sYXN0X25vbl9iX3BpY3RfdHlwZSA9PSBBVl9QSUNU
VVJFX1RZUEVfSSkgfHwKICAgICAgICAgICAgICAgICBtLT5tZV9wcmUgPT0gMikgewotICAgICAg
ICAgICAgICAgIHMtPmF2Y3R4LT5leGVjdXRlKHMtPmF2Y3R4LCBwcmVfZXN0aW1hdGVfbW90aW9u
X3RocmVhZCwgJnMtPnRocmVhZF9jb250ZXh0WzBdLCBOVUxMLCBjb250ZXh0X2NvdW50LCBzaXpl
b2Yodm9pZCopKTsKKyAgICAgICAgICAgICAgICBzLT5jLmF2Y3R4LT5leGVjdXRlKHMtPmMuYXZj
dHgsIHByZV9lc3RpbWF0ZV9tb3Rpb25fdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnMtPmMuZW5jX2NvbnRleHRzWzBdLCBOVUxMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9jb3VudCwgc2l6ZW9mKHZvaWQqKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzLT5hdmN0eC0+ZXhlY3V0ZShzLT5hdmN0
eCwgZXN0aW1hdGVfbW90aW9uX3RocmVhZCwgJnMtPnRocmVhZF9jb250ZXh0WzBdLCBOVUxMLCBj
b250ZXh0X2NvdW50LCBzaXplb2Yodm9pZCopKTsKLSAgICB9ZWxzZSAvKiBpZihzLT5waWN0X3R5
cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpICoveworICAgICAgICBzLT5jLmF2Y3R4LT5leGVjdXRl
KHMtPmMuYXZjdHgsIGVzdGltYXRlX21vdGlvbl90aHJlYWQsICZzLT5jLmVuY19jb250ZXh0c1sw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBjb250ZXh0X2NvdW50LCBzaXpl
b2Yodm9pZCopKTsKKyAgICB9ZWxzZSAvKiBpZihzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJF
X1RZUEVfSSkgKi97CiAgICAgICAgIC8qIEktRnJhbWUgKi8KLSAgICAgICAgZm9yKGk9MDsgaTxz
LT5tYl9zdHJpZGUqcy0+bWJfaGVpZ2h0OyBpKyspCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcy0+Yy5tYl9zdHJpZGUgKiBzLT5jLm1iX2hlaWdodDsgaSsrKQogICAgICAgICAgICAgcy0+
bWJfdHlwZVtpXT0gQ0FORElEQVRFX01CX1RZUEVfSU5UUkE7CiAKICAgICAgICAgaWYgKCFtLT5m
aXhlZF9xc2NhbGUpIHsKICAgICAgICAgICAgIC8qIGZpbmRpbmcgc3BhdGlhbCBjb21wbGV4aXR5
IGZvciBJLWZyYW1lIHJhdGUgY29udHJvbCAqLwotICAgICAgICAgICAgcy0+YXZjdHgtPmV4ZWN1
dGUocy0+YXZjdHgsIG1iX3Zhcl90aHJlYWQsICZzLT50aHJlYWRfY29udGV4dFswXSwgTlVMTCwg
Y29udGV4dF9jb3VudCwgc2l6ZW9mKHZvaWQqKSk7CisgICAgICAgICAgICBzLT5jLmF2Y3R4LT5l
eGVjdXRlKHMtPmMuYXZjdHgsIG1iX3Zhcl90aHJlYWQsICZzLT5jLmVuY19jb250ZXh0c1swXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgY29udGV4dF9jb3VudCwgc2l6
ZW9mKHZvaWQqKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yKGk9MTsgaTxjb250ZXh0X2Nv
dW50OyBpKyspewotICAgICAgICBtZXJnZV9jb250ZXh0X2FmdGVyX21lKHMsIHMtPnRocmVhZF9j
b250ZXh0W2ldKTsKKyAgICAgICAgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShzLCBzLT5jLmVuY19j
b250ZXh0c1tpXSk7CiAgICAgfQotICAgIG0tPm1jX21iX3Zhcl9zdW0gPSBzLT5tZS5tY19tYl92
YXJfc3VtX3RlbXA7Ci0gICAgbS0+bWJfdmFyX3N1bSAgICA9IHMtPm1lLiAgIG1iX3Zhcl9zdW1f
dGVtcDsKKyAgICBtLT5tY19tYl92YXJfc3VtID0gcy0+Yy5tZS5tY19tYl92YXJfc3VtX3RlbXA7
CisgICAgbS0+bWJfdmFyX3N1bSAgICA9IHMtPmMubWUuICAgbWJfdmFyX3N1bV90ZW1wOwogICAg
IGVtbXNfYygpOwogCi0gICAgaWYgKHMtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA+IG0tPnNjZW5l
Y2hhbmdlX3RocmVzaG9sZCAmJgotICAgICAgICBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U
WVBFX1ApIHsKLSAgICAgICAgcy0+cGljdF90eXBlPSBBVl9QSUNUVVJFX1RZUEVfSTsKLSAgICAg
ICAgZm9yKGk9MDsgaTxzLT5tYl9zdHJpZGUqcy0+bWJfaGVpZ2h0OyBpKyspCi0gICAgICAgICAg
ICBzLT5tYl90eXBlW2ldPSBDQU5ESURBVEVfTUJfVFlQRV9JTlRSQTsKLSAgICAgICAgaWYgKHMt
Pm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMykKLSAgICAgICAgICAgIHMtPm5vX3JvdW5kaW5n
PTE7Ci0gICAgICAgIGZmX2Rsb2cocy0+YXZjdHgsICJTY2VuZSBjaGFuZ2UgZGV0ZWN0ZWQsIGVu
Y29kaW5nIGFzIEkgRnJhbWUgJSJQUklkNjQiICUiUFJJZDY0IlxuIiwKKyAgICBpZiAocy0+Yy5t
ZS5zY2VuZV9jaGFuZ2Vfc2NvcmUgPiBtLT5zY2VuZWNoYW5nZV90aHJlc2hvbGQgJiYKKyAgICAg
ICAgcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1ApIHsKKyAgICAgICAgcy0+Yy5w
aWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfSTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzLT5jLm1iX3N0cmlkZSAqIHMtPmMubWJfaGVpZ2h0OyBpKyspCisgICAgICAgICAgICBzLT5t
Yl90eXBlW2ldID0gQ0FORElEQVRFX01CX1RZUEVfSU5UUkE7CisgICAgICAgIGlmIChzLT5jLm1z
bXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMykKKyAgICAgICAgICAgIHMtPmMubm9fcm91bmRpbmcg
PSAxOworICAgICAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICJTY2VuZSBjaGFuZ2UgZGV0ZWN0ZWQs
IGVuY29kaW5nIGFzIEkgRnJhbWUgJSJQUklkNjQiICUiUFJJZDY0IlxuIiwKICAgICAgICAgICAg
ICAgICBtLT5tYl92YXJfc3VtLCBtLT5tY19tYl92YXJfc3VtKTsKICAgICB9CiAKLSAgICBpZigh
cy0+dW12cGx1cyl7Ci0gICAgICAgIGlmKHMtPnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX1Ag
fHwgcy0+cGljdF90eXBlPT1BVl9QSUNUVVJFX1RZUEVfUykgewotICAgICAgICAgICAgcy0+Zl9j
b2RlID0gZmZfZ2V0X2Jlc3RfZmNvZGUobSwgcy0+cF9tdl90YWJsZSwgQ0FORElEQVRFX01CX1RZ
UEVfSU5URVIpOworICAgIGlmICghcy0+Yy51bXZwbHVzKSB7CisgICAgICAgIGlmIChzLT5jLnBp
Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCB8fCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNU
VVJFX1RZUEVfUykgeworICAgICAgICAgICAgcy0+Yy5mX2NvZGUgPSBmZl9nZXRfYmVzdF9mY29k
ZShtLCBzLT5wX212X3RhYmxlLCBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUik7CiAKLSAgICAgICAg
ICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsK
KyAgICAgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJM
QUNFRF9NRSkgewogICAgICAgICAgICAgICAgIGludCBhLGI7Ci0gICAgICAgICAgICAgICAgYSA9
IGZmX2dldF9iZXN0X2Zjb2RlKG0sIHMtPnBfZmllbGRfbXZfdGFibGVbMF1bMF0sIENBTkRJREFU
RV9NQl9UWVBFX0lOVEVSX0kpOyAvL0ZJWE1FIGZpZWxkX3NlbGVjdAotICAgICAgICAgICAgICAg
IGIgPSBmZl9nZXRfYmVzdF9mY29kZShtLCBzLT5wX2ZpZWxkX212X3RhYmxlWzFdWzFdLCBDQU5E
SURBVEVfTUJfVFlQRV9JTlRFUl9JKTsKLSAgICAgICAgICAgICAgICBzLT5mX2NvZGU9IEZGTUFY
MyhzLT5mX2NvZGUsIGEsIGIpOworICAgICAgICAgICAgICAgIGEgPSBmZl9nZXRfYmVzdF9mY29k
ZShtLCBzLT5jLnBfZmllbGRfbXZfdGFibGVbMF1bMF0sIENBTkRJREFURV9NQl9UWVBFX0lOVEVS
X0kpOyAvL0ZJWE1FIGZpZWxkX3NlbGVjdAorICAgICAgICAgICAgICAgIGIgPSBmZl9nZXRfYmVz
dF9mY29kZShtLCBzLT5jLnBfZmllbGRfbXZfdGFibGVbMV1bMV0sIENBTkRJREFURV9NQl9UWVBF
X0lOVEVSX0kpOworICAgICAgICAgICAgICAgIHMtPmMuZl9jb2RlPSBGRk1BWDMocy0+Yy5mX2Nv
ZGUsIGEsIGIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZl9maXhfbG9uZ19wX212
cyhzLCBzLT5pbnRyYV9wZW5hbHR5ID8gQ0FORElEQVRFX01CX1RZUEVfSU5URVIgOiBDQU5ESURB
VEVfTUJfVFlQRV9JTlRSQSk7Ci0gICAgICAgICAgICBmZl9maXhfbG9uZ19tdnMocywgTlVMTCwg
MCwgcy0+cF9tdl90YWJsZSwgcy0+Zl9jb2RlLCBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUiwgISFz
LT5pbnRyYV9wZW5hbHR5KTsKLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9D
T0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsKKyAgICAgICAgICAgIGZmX2ZpeF9sb25nX212cyhz
LCBOVUxMLCAwLCBzLT5wX212X3RhYmxlLCBzLT5jLmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVf
SU5URVIsICEhcy0+aW50cmFfcGVuYWx0eSk7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+
ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsKICAgICAgICAgICAgICAgICBp
bnQgajsKICAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPDI7IGkrKyl7CiAgICAgICAgICAgICAg
ICAgICAgIGZvcihqPTA7IGo8MjsgaisrKQogICAgICAgICAgICAgICAgICAgICAgICAgZmZfZml4
X2xvbmdfbXZzKHMsIHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlW2ldLCBqLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBfZmllbGRfbXZfdGFibGVbaV1bal0sIHMt
PmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfSU5URVJfSSwgISFzLT5pbnRyYV9wZW5hbHR5KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLnBfZmllbGRfbXZf
dGFibGVbaV1bal0sIHMtPmMuZl9jb2RlLCBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUl9JLCAhIXMt
PmludHJhX3BlbmFsdHkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgewogICAg
ICAgICAgICAgaW50IGEsIGI7CiAKICAgICAgICAgICAgIGEgPSBmZl9nZXRfYmVzdF9mY29kZSht
LCBzLT5iX2ZvcndfbXZfdGFibGUsIENBTkRJREFURV9NQl9UWVBFX0ZPUldBUkQpOwogICAgICAg
ICAgICAgYiA9IGZmX2dldF9iZXN0X2Zjb2RlKG0sIHMtPmJfYmlkaXJfZm9yd19tdl90YWJsZSwg
Q0FORElEQVRFX01CX1RZUEVfQklESVIpOwotICAgICAgICAgICAgcy0+Zl9jb2RlID0gRkZNQVgo
YSwgYik7CisgICAgICAgICAgICBzLT5jLmZfY29kZSA9IEZGTUFYKGEsIGIpOwogCiAgICAgICAg
ICAgICBhID0gZmZfZ2V0X2Jlc3RfZmNvZGUobSwgcy0+Yl9iYWNrX212X3RhYmxlLCBDQU5ESURB
VEVfTUJfVFlQRV9CQUNLV0FSRCk7CiAgICAgICAgICAgICBiID0gZmZfZ2V0X2Jlc3RfZmNvZGUo
bSwgcy0+Yl9iaWRpcl9iYWNrX212X3RhYmxlLCBDQU5ESURBVEVfTUJfVFlQRV9CSURJUik7Ci0g
ICAgICAgICAgICBzLT5iX2NvZGUgPSBGRk1BWChhLCBiKTsKKyAgICAgICAgICAgIHMtPmMuYl9j
b2RlID0gRkZNQVgoYSwgYik7CiAKLSAgICAgICAgICAgIGZmX2ZpeF9sb25nX212cyhzLCBOVUxM
LCAwLCBzLT5iX2ZvcndfbXZfdGFibGUsIHMtPmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfRk9S
V0FSRCwgMSk7Ci0gICAgICAgICAgICBmZl9maXhfbG9uZ19tdnMocywgTlVMTCwgMCwgcy0+Yl9i
YWNrX212X3RhYmxlLCBzLT5iX2NvZGUsIENBTkRJREFURV9NQl9UWVBFX0JBQ0tXQVJELCAxKTsK
LSAgICAgICAgICAgIGZmX2ZpeF9sb25nX212cyhzLCBOVUxMLCAwLCBzLT5iX2JpZGlyX2Zvcndf
bXZfdGFibGUsIHMtPmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfQklESVIsIDEpOwotICAgICAg
ICAgICAgZmZfZml4X2xvbmdfbXZzKHMsIE5VTEwsIDAsIHMtPmJfYmlkaXJfYmFja19tdl90YWJs
ZSwgcy0+Yl9jb2RlLCBDQU5ESURBVEVfTUJfVFlQRV9CSURJUiwgMSk7Ci0gICAgICAgICAgICBp
ZiAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX01FKSB7CisgICAg
ICAgICAgICBmZl9maXhfbG9uZ19tdnMocywgTlVMTCwgMCwgcy0+Yl9mb3J3X212X3RhYmxlLCBz
LT5jLmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfRk9SV0FSRCwgMSk7CisgICAgICAgICAgICBm
Zl9maXhfbG9uZ19tdnMocywgTlVMTCwgMCwgcy0+Yl9iYWNrX212X3RhYmxlLCBzLT5jLmJfY29k
ZSwgQ0FORElEQVRFX01CX1RZUEVfQkFDS1dBUkQsIDEpOworICAgICAgICAgICAgZmZfZml4X2xv
bmdfbXZzKHMsIE5VTEwsIDAsIHMtPmJfYmlkaXJfZm9yd19tdl90YWJsZSwgcy0+Yy5mX2NvZGUs
IENBTkRJREFURV9NQl9UWVBFX0JJRElSLCAxKTsKKyAgICAgICAgICAgIGZmX2ZpeF9sb25nX212
cyhzLCBOVUxMLCAwLCBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGUsIHMtPmMuYl9jb2RlLCBDQU5E
SURBVEVfTUJfVFlQRV9CSURJUiwgMSk7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+Zmxh
Z3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsKICAgICAgICAgICAgICAgICBpbnQg
ZGlyLCBqOwogICAgICAgICAgICAgICAgIGZvcihkaXI9MDsgZGlyPDI7IGRpcisrKXsKICAgICAg
ICAgICAgICAgICAgICAgZm9yKGk9MDsgaTwyOyBpKyspewpAQCAtMzgxNyw3ICszODI2LDcgQEAg
c3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29u
c3QgQVZQYWNrZXQgKnBrdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZT0g
ZGlyID8gKENBTkRJREFURV9NQl9UWVBFX0JBQ0tXQVJEX0l8Q0FORElEQVRFX01CX1RZUEVfQklE
SVJfSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKENBTkRJ
REFURV9NQl9UWVBFX0ZPUldBUkRfSSB8Q0FORElEQVRFX01CX1RZUEVfQklESVJfSSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmZfZml4X2xvbmdfbXZzKHMsIHMtPmJfZmllbGRfc2Vs
ZWN0X3RhYmxlW2Rpcl1baV0sIGosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPmJfZmllbGRfbXZfdGFibGVbZGlyXVtpXVtqXSwgZGlyID8gcy0+Yl9jb2Rl
IDogcy0+Zl9jb2RlLCB0eXBlLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy0+Yl9maWVsZF9tdl90YWJsZVtkaXJdW2ldW2pdLCBkaXIgPyBzLT5jLmJf
Y29kZSA6IHMtPmMuZl9jb2RlLCB0eXBlLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTM4MjksNzAgKzM4
MzgsNzAgQEAgc3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29u
c3QgbSwgY29uc3QgQVZQYWNrZXQgKnBrdCkKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0
dXJuIHJldDsKIAotICAgIGlmIChzLT5xc2NhbGUgPCAzICYmIHMtPm1heF9xY29lZmYgPD0gMTI4
ICYmCi0gICAgICAgIHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSAmJgotICAgICAg
ICAhKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUVNDQUxFKSkKLSAgICAgICAgcy0+
cXNjYWxlPSAzOyAvL3JlZHVjZSBjbGlwcGluZyBwcm9ibGVtcworICAgIGlmIChzLT5jLnFzY2Fs
ZSA8IDMgJiYgcy0+bWF4X3Fjb2VmZiA8PSAxMjggJiYKKyAgICAgICAgcy0+Yy5waWN0X3R5cGUg
PT0gQVZfUElDVFVSRV9UWVBFX0kgJiYKKyAgICAgICAgIShzLT5jLmF2Y3R4LT5mbGFncyAmIEFW
X0NPREVDX0ZMQUdfUVNDQUxFKSkKKyAgICAgICAgcy0+Yy5xc2NhbGU9IDM7IC8vcmVkdWNlIGNs
aXBwaW5nIHByb2JsZW1zCiAKLSAgICBpZiAocy0+b3V0X2Zvcm1hdCA9PSBGTVRfTUpQRUcpIHsK
LSAgICAgICAgcmV0ID0gZmZfY2hlY2tfY29kZWNfbWF0cmljZXMocy0+YXZjdHgsIEZGX01BVFJJ
WF9UWVBFX0lOVFJBIHwgRkZfTUFUUklYX1RZUEVfQ0hST01BX0lOVFJBLCAoNyArIHMtPnFzY2Fs
ZSkgLyBzLT5xc2NhbGUsIDY1NTM1KTsKKyAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9N
SlBFRykgeworICAgICAgICByZXQgPSBmZl9jaGVja19jb2RlY19tYXRyaWNlcyhzLT5jLmF2Y3R4
LCBGRl9NQVRSSVhfVFlQRV9JTlRSQSB8IEZGX01BVFJJWF9UWVBFX0NIUk9NQV9JTlRSQSwgKDcg
KyBzLT5jLnFzY2FsZSkgLyBzLT5jLnFzY2FsZSwgNjU1MzUpOwogICAgICAgICBpZiAocmV0IDwg
MCkKICAgICAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICAgICAgaWYgKHMtPmNvZGVjX2lkICE9
IEFWX0NPREVDX0lEX0FNVikgeworICAgICAgICBpZiAocy0+Yy5jb2RlY19pZCAhPSBBVl9DT0RF
Q19JRF9BTVYpIHsKICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICogIGx1bWFfbWF0cml4ID0g
ZmZfbXBlZzFfZGVmYXVsdF9pbnRyYV9tYXRyaXg7CiAgICAgICAgICAgICBjb25zdCB1aW50MTZf
dCAqY2hyb21hX21hdHJpeCA9IGZmX21wZWcxX2RlZmF1bHRfaW50cmFfbWF0cml4OwogCi0gICAg
ICAgICAgICBpZiAocy0+YXZjdHgtPmludHJhX21hdHJpeCkgeworICAgICAgICAgICAgaWYgKHMt
PmMuYXZjdHgtPmludHJhX21hdHJpeCkgewogICAgICAgICAgICAgICAgIGNocm9tYV9tYXRyaXgg
PQotICAgICAgICAgICAgICAgIGx1bWFfbWF0cml4ID0gcy0+YXZjdHgtPmludHJhX21hdHJpeDsK
KyAgICAgICAgICAgICAgICBsdW1hX21hdHJpeCA9IHMtPmMuYXZjdHgtPmludHJhX21hdHJpeDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+Y2hyb21hX2ludHJhX21h
dHJpeCkKLSAgICAgICAgICAgICAgICBjaHJvbWFfbWF0cml4ID0gcy0+YXZjdHgtPmNocm9tYV9p
bnRyYV9tYXRyaXg7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+Y2hyb21hX2ludHJhX21h
dHJpeCkKKyAgICAgICAgICAgICAgICBjaHJvbWFfbWF0cml4ID0gcy0+Yy5hdmN0eC0+Y2hyb21h
X2ludHJhX21hdHJpeDsKIAogICAgICAgICAgICAgLyogZm9yIG1qcGVnLCB3ZSBkbyBpbmNsdWRl
IHFzY2FsZSBpbiB0aGUgbWF0cml4ICovCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8
IDY0OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpbnQgaiA9IHMtPmlkc3AuaWRjdF9wZXJtdXRh
dGlvbltpXTsKKyAgICAgICAgICAgICAgICBpbnQgaiA9IHMtPmMuaWRzcC5pZGN0X3Blcm11dGF0
aW9uW2ldOwogCi0gICAgICAgICAgICAgICAgcy0+Y2hyb21hX2ludHJhX21hdHJpeFtqXSA9IGF2
X2NsaXBfdWludDgoKGNocm9tYV9tYXRyaXhbaV0gKiBzLT5xc2NhbGUpID4+IDMpOwotICAgICAg
ICAgICAgICAgIHMtPiAgICAgICBpbnRyYV9tYXRyaXhbal0gPSBhdl9jbGlwX3VpbnQ4KCggIGx1
bWFfbWF0cml4W2ldICogcy0+cXNjYWxlKSA+PiAzKTsKKyAgICAgICAgICAgICAgICBzLT5jLmNo
cm9tYV9pbnRyYV9tYXRyaXhbal0gPSBhdl9jbGlwX3VpbnQ4KChjaHJvbWFfbWF0cml4W2ldICog
cy0+Yy5xc2NhbGUpID4+IDMpOworICAgICAgICAgICAgICAgIHMtPmMuICAgICAgIGludHJhX21h
dHJpeFtqXSA9IGF2X2NsaXBfdWludDgoKCAgbHVtYV9tYXRyaXhbaV0gKiBzLT5jLnFzY2FsZSkg
Pj4gMyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzLT55X2RjX3NjYWxlX3RhYmxlID0K
LSAgICAgICAgICAgIHMtPmNfZGNfc2NhbGVfdGFibGUgPSBmZl9tcGVnMTJfZGNfc2NhbGVfdGFi
bGVbcy0+aW50cmFfZGNfcHJlY2lzaW9uXTsKLSAgICAgICAgICAgIHMtPmNocm9tYV9pbnRyYV9t
YXRyaXhbMF0gPQotICAgICAgICAgICAgcy0+aW50cmFfbWF0cml4WzBdICA9IGZmX21wZWcxMl9k
Y19zY2FsZV90YWJsZVtzLT5pbnRyYV9kY19wcmVjaXNpb25dWzhdOworICAgICAgICAgICAgcy0+
Yy55X2RjX3NjYWxlX3RhYmxlID0KKyAgICAgICAgICAgIHMtPmMuY19kY19zY2FsZV90YWJsZSA9
IGZmX21wZWcxMl9kY19zY2FsZV90YWJsZVtzLT5jLmludHJhX2RjX3ByZWNpc2lvbl07CisgICAg
ICAgICAgICBzLT5jLmNocm9tYV9pbnRyYV9tYXRyaXhbMF0gPQorICAgICAgICAgICAgcy0+Yy5p
bnRyYV9tYXRyaXhbMF0gID0gZmZfbXBlZzEyX2RjX3NjYWxlX3RhYmxlW3MtPmMuaW50cmFfZGNf
cHJlY2lzaW9uXVs4XTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCB1aW50OF90IHlbMzJdID0gezEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEz
LDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEz
fTsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGNbMzJdID0gezE0LDE0LDE0LDE0
LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0
LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0fTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgNjQ7IGkrKykgewotICAgICAgICAgICAgICAgIGludCBqID0gcy0+aWRzcC5pZGN0X3Bl
cm11dGF0aW9uW2ZmX3ppZ3phZ19kaXJlY3RbaV1dOworICAgICAgICAgICAgICAgIGludCBqID0g
cy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25bZmZfemlnemFnX2RpcmVjdFtpXV07CiAKLSAgICAg
ICAgICAgICAgICBzLT5pbnRyYV9tYXRyaXhbal0gICAgICAgID0gc3A1eF9xc2NhbGVfZml2ZV9x
dWFudF90YWJsZVswXVtpXTsKLSAgICAgICAgICAgICAgICBzLT5jaHJvbWFfaW50cmFfbWF0cml4
W2pdID0gc3A1eF9xc2NhbGVfZml2ZV9xdWFudF90YWJsZVsxXVtpXTsKKyAgICAgICAgICAgICAg
ICBzLT5jLmludHJhX21hdHJpeFtqXSAgICAgICAgPSBzcDV4X3FzY2FsZV9maXZlX3F1YW50X3Rh
YmxlWzBdW2ldOworICAgICAgICAgICAgICAgIHMtPmMuY2hyb21hX2ludHJhX21hdHJpeFtqXSA9
IHNwNXhfcXNjYWxlX2ZpdmVfcXVhbnRfdGFibGVbMV1baV07CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzLT55X2RjX3NjYWxlX3RhYmxlID0geTsKLSAgICAgICAgICAgIHMtPmNfZGNfc2Nh
bGVfdGFibGUgPSBjOwotICAgICAgICAgICAgcy0+aW50cmFfbWF0cml4WzBdID0gMTM7Ci0gICAg
ICAgICAgICBzLT5jaHJvbWFfaW50cmFfbWF0cml4WzBdID0gMTQ7CisgICAgICAgICAgICBzLT5j
LnlfZGNfc2NhbGVfdGFibGUgPSB5OworICAgICAgICAgICAgcy0+Yy5jX2RjX3NjYWxlX3RhYmxl
ID0gYzsKKyAgICAgICAgICAgIHMtPmMuaW50cmFfbWF0cml4WzBdID0gMTM7CisgICAgICAgICAg
ICBzLT5jLmNocm9tYV9pbnRyYV9tYXRyaXhbMF0gPSAxNDsKICAgICAgICAgfQogICAgICAgICBm
Zl9jb252ZXJ0X21hdHJpeChzLCBzLT5xX2ludHJhX21hdHJpeCwgcy0+cV9pbnRyYV9tYXRyaXgx
NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aW50cmFfbWF0cml4LCBzLT5pbnRyYV9x
dWFudF9iaWFzLCA4LCA4LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRy
YV9tYXRyaXgsIHMtPmludHJhX3F1YW50X2JpYXMsIDgsIDgsIDEpOwogICAgICAgICBmZl9jb252
ZXJ0X21hdHJpeChzLCBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXgsIHMtPnFfY2hyb21hX2ludHJh
X21hdHJpeDE2LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jaHJvbWFfaW50cmFfbWF0
cml4LCBzLT5pbnRyYV9xdWFudF9iaWFzLCA4LCA4LCAxKTsKLSAgICAgICAgcy0+cXNjYWxlID0g
ODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5jaHJvbWFfaW50cmFfbWF0cml4LCBz
LT5pbnRyYV9xdWFudF9iaWFzLCA4LCA4LCAxKTsKKyAgICAgICAgcy0+Yy5xc2NhbGUgPSA4Owog
ICAgIH0KIAotICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpIHsKLSAg
ICAgICAgcy0+Y3VyX3BpYy5wdHItPmYtPmZsYWdzIHw9IEFWX0ZSQU1FX0ZMQUdfS0VZOworICAg
IGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgeworICAgICAgICBzLT5j
LmN1cl9waWMucHRyLT5mLT5mbGFncyB8PSBBVl9GUkFNRV9GTEFHX0tFWTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBzLT5jdXJfcGljLnB0ci0+Zi0+ZmxhZ3MgJj0gfkFWX0ZSQU1FX0ZMQUdfS0VZ
OworICAgICAgICBzLT5jLmN1cl9waWMucHRyLT5mLT5mbGFncyAmPSB+QVZfRlJBTUVfRkxBR19L
RVk7CiAgICAgfQotICAgIHMtPmN1cl9waWMucHRyLT5mLT5waWN0X3R5cGUgPSBzLT5waWN0X3R5
cGU7CisgICAgcy0+Yy5jdXJfcGljLnB0ci0+Zi0+cGljdF90eXBlID0gcy0+Yy5waWN0X3R5cGU7
CiAKLSAgICBpZiAocy0+Y3VyX3BpYy5wdHItPmYtPmZsYWdzICYgQVZfRlJBTUVfRkxBR19LRVkp
CisgICAgaWYgKHMtPmMuY3VyX3BpYy5wdHItPmYtPmZsYWdzICYgQVZfRlJBTUVfRkxBR19LRVkp
CiAgICAgICAgIG0tPnBpY3R1cmVfaW5fZ29wX251bWJlciA9IDA7CiAKLSAgICBzLT5tYl94ID0g
cy0+bWJfeSA9IDA7CisgICAgcy0+Yy5tYl94ID0gcy0+Yy5tYl95ID0gMDsKICAgICBzLT5sYXN0
X2JpdHM9IHB1dF9iaXRzX2NvdW50KCZzLT5wYik7CiAgICAgcmV0ID0gbS0+ZW5jb2RlX3BpY3R1
cmVfaGVhZGVyKG0pOwogICAgIGlmIChyZXQgPCAwKQpAQCAtMzkwMSwyMCArMzkxMCwyMiBAQCBz
dGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25z
dCBBVlBhY2tldCAqcGt0KQogICAgIG0tPmhlYWRlcl9iaXRzID0gYml0cyAtIHMtPmxhc3RfYml0
czsKIAogICAgIGZvcihpPTE7IGk8Y29udGV4dF9jb3VudDsgaSsrKXsKLSAgICAgICAgdXBkYXRl
X2R1cGxpY2F0ZV9jb250ZXh0X2FmdGVyX21lKHMtPnRocmVhZF9jb250ZXh0W2ldLCBzKTsKKyAg
ICAgICAgdXBkYXRlX2R1cGxpY2F0ZV9jb250ZXh0X2FmdGVyX21lKHMtPmMuZW5jX2NvbnRleHRz
W2ldLCBzKTsKICAgICB9Ci0gICAgcy0+YXZjdHgtPmV4ZWN1dGUocy0+YXZjdHgsIGVuY29kZV90
aHJlYWQsICZzLT50aHJlYWRfY29udGV4dFswXSwgTlVMTCwgY29udGV4dF9jb3VudCwgc2l6ZW9m
KHZvaWQqKSk7CisgICAgcy0+Yy5hdmN0eC0+ZXhlY3V0ZShzLT5jLmF2Y3R4LCBlbmNvZGVfdGhy
ZWFkLCAmcy0+Yy5lbmNfY29udGV4dHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LCBjb250ZXh0X2NvdW50LCBzaXplb2Yodm9pZCopKTsKICAgICBmb3IoaT0xOyBpPGNvbnRleHRf
Y291bnQ7IGkrKyl7Ci0gICAgICAgIGlmIChzLT5wYi5idWZfZW5kID09IHMtPnRocmVhZF9jb250
ZXh0W2ldLT5wYi5idWYpCi0gICAgICAgICAgICBzZXRfcHV0X2JpdHNfYnVmZmVyX3NpemUoJnMt
PnBiLCBGRk1JTihzLT50aHJlYWRfY29udGV4dFtpXS0+cGIuYnVmX2VuZCAtIHMtPnBiLmJ1Ziwg
SU5UX01BWC84LUJVRl9CSVRTKSk7Ci0gICAgICAgIG1lcmdlX2NvbnRleHRfYWZ0ZXJfZW5jb2Rl
KHMsIHMtPnRocmVhZF9jb250ZXh0W2ldKTsKKyAgICAgICAgaWYgKHMtPnBiLmJ1Zl9lbmQgPT0g
cy0+Yy5lbmNfY29udGV4dHNbaV0tPnBiLmJ1ZikKKyAgICAgICAgICAgIHNldF9wdXRfYml0c19i
dWZmZXJfc2l6ZSgmcy0+cGIsIEZGTUlOKHMtPmMuZW5jX2NvbnRleHRzW2ldLT5wYi5idWZfZW5k
IC0gcy0+cGIuYnVmLCBJTlRfTUFYLzgtQlVGX0JJVFMpKTsKKyAgICAgICAgbWVyZ2VfY29udGV4
dF9hZnRlcl9lbmNvZGUocywgcy0+Yy5lbmNfY29udGV4dHNbaV0pOwogICAgIH0KICAgICBlbW1z
X2MoKTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZGVub2lzZV9kY3RfYyhNcGVn
RW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2spewotICAgIGNvbnN0IGludCBpbnRyYT0gcy0+
bWJfaW50cmE7CitzdGF0aWMgdm9pZCBkZW5vaXNlX2RjdF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0
IHMsIGludDE2X3QgKmJsb2NrKQoreworICAgIGNvbnN0IGludCBpbnRyYT0gcy0+Yy5tYl9pbnRy
YTsKICAgICBpbnQgaTsKIAogICAgIHMtPmRjdF9jb3VudFtpbnRyYV0rKzsKQEAgLTM5MzcsNyAr
Mzk0OCw3IEBAIHN0YXRpYyB2b2lkIGRlbm9pc2VfZGN0X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGlu
dDE2X3QgKmJsb2NrKXsKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxs
aXNfYyhNcGVnRW5jQ29udGV4dCAqcywKK3N0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxsaXNf
YyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KXsKICAgICBjb25zdCBpbnQgKnFtYXQ7CkBA
IC0zOTYxLDcgKzM5NzIsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTXBl
Z0VuY0NvbnRleHQgKnMsCiAgICAgaW50IHFtdWwsIHFhZGQsIHN0YXJ0X2ksIGxhc3Rfbm9uX3pl
cm8sIGksIGRjOwogICAgIGNvbnN0IGludCBlc2NfbGVuZ3RoPSBzLT5hY19lc2NfbGVuZ3RoOwog
ICAgIGNvbnN0IHVpbnQ4X3QgKmxlbmd0aCwgKmxhc3RfbGVuZ3RoOwotICAgIGNvbnN0IGludCBs
YW1iZGE9IHMtPmxhbWJkYTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYpOworICAgIGNvbnN0IGlu
dCBsYW1iZGE9IHMtPmMubGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZUIC0gNik7CiAgICAgaW50
IG1wZWcyX3FzY2FsZTsKIAogICAgIHMtPmZkc3AuZmRjdChibG9jayk7CkBAIC0zOTcxLDE4ICsz
OTgyLDE4IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxsaXNfYyhNcGVnRW5jQ29udGV4
dCAqcywKICAgICBxbXVsPSBxc2NhbGUqMTY7CiAgICAgcWFkZD0gKChxc2NhbGUtMSl8MSkqODsK
IAotICAgIGlmIChzLT5xX3NjYWxlX3R5cGUpIG1wZWcyX3FzY2FsZSA9IGZmX21wZWcyX25vbl9s
aW5lYXJfcXNjYWxlW3FzY2FsZV07CisgICAgaWYgKHMtPmMucV9zY2FsZV90eXBlKSBtcGVnMl9x
c2NhbGUgPSBmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtxc2NhbGVdOwogICAgIGVsc2UgICAg
ICAgICAgICAgICAgIG1wZWcyX3FzY2FsZSA9IHFzY2FsZSA8PCAxOwogCi0gICAgaWYgKHMtPm1i
X2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAgICAgaW50IHE7Ci0gICAg
ICAgIHNjYW50YWJsZT0gcy0+aW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsKLSAgICAgICAgcGVy
bV9zY2FudGFibGU9IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkOwotICAgICAgICBpZiAo
IXMtPmgyNjNfYWljKSB7CisgICAgICAgIHNjYW50YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUu
c2NhbnRhYmxlOworICAgICAgICBwZXJtX3NjYW50YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUu
cGVybXV0YXRlZDsKKyAgICAgICAgaWYgKCFzLT5jLmgyNjNfYWljKSB7CiAgICAgICAgICAgICBp
ZiAobiA8IDQpCi0gICAgICAgICAgICAgICAgcSA9IHMtPnlfZGNfc2NhbGU7CisgICAgICAgICAg
ICAgICAgcSA9IHMtPmMueV9kY19zY2FsZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBxID0gcy0+Y19kY19zY2FsZTsKKyAgICAgICAgICAgICAgICBxID0gcy0+Yy5jX2RjX3Nj
YWxlOwogICAgICAgICAgICAgcSA9IHEgPDwgMzsKICAgICAgICAgfSBlbHNlewogICAgICAgICAg
ICAgLyogRm9yIEFJQyB3ZSBza2lwIHF1YW50L2RlcXVhbnQgb2YgSU5UUkFEQyAqLwpAQCAtMzk5
NSw4ICs0MDA2LDggQEAgc3RhdGljIGludCBkY3RfcXVhbnRpemVfdHJlbGxpc19jKE1wZWdFbmND
b250ZXh0ICpzLAogICAgICAgICBzdGFydF9pID0gMTsKICAgICAgICAgbGFzdF9ub25femVybyA9
IDA7CiAgICAgICAgIHFtYXQgPSBuIDwgNCA/IHMtPnFfaW50cmFfbWF0cml4W3FzY2FsZV0gOiBz
LT5xX2Nocm9tYV9pbnRyYV9tYXRyaXhbcXNjYWxlXTsKLSAgICAgICAgbWF0cml4ID0gbiA8IDQg
PyBzLT5pbnRyYV9tYXRyaXggOiBzLT5jaHJvbWFfaW50cmFfbWF0cml4OwotICAgICAgICBpZihz
LT5tcGVnX3F1YW50IHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX01QRUcxIHx8IHMtPm91dF9mb3Jt
YXQgPT0gRk1UX01KUEVHKQorICAgICAgICBtYXRyaXggPSBuIDwgNCA/IHMtPmMuaW50cmFfbWF0
cml4IDogcy0+Yy5jaHJvbWFfaW50cmFfbWF0cml4OworICAgICAgICBpZiAocy0+Yy5tcGVnX3F1
YW50IHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfTVBFRzEgfHwgcy0+Yy5vdXRfZm9ybWF0ID09
IEZNVF9NSlBFRykKICAgICAgICAgICAgIGJpYXM9IDE8PChRTUFUX1NISUZULTEpOwogCiAgICAg
ICAgIGlmIChuID4gMyAmJiBzLT5pbnRyYV9jaHJvbWFfYWNfdmxjX2xlbmd0aCkgewpAQCAtNDAw
NywxMiArNDAxOCwxMiBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTXBlZ0Vu
Y0NvbnRleHQgKnMsCiAgICAgICAgICAgICBsYXN0X2xlbmd0aD0gcy0+aW50cmFfYWNfdmxjX2xh
c3RfbGVuZ3RoOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbnRhYmxlPSBz
LT5pbnRlcl9zY2FudGFibGUuc2NhbnRhYmxlOwotICAgICAgICBwZXJtX3NjYW50YWJsZT0gcy0+
aW50ZXJfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAgICAgIHNjYW50YWJsZSAgICAgID0gcy0+
Yy5pbnRlcl9zY2FudGFibGUuc2NhbnRhYmxlOworICAgICAgICBwZXJtX3NjYW50YWJsZSA9IHMt
PmMuaW50ZXJfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CiAgICAgICAgIHN0YXJ0X2kgPSAwOwogICAg
ICAgICBsYXN0X25vbl96ZXJvID0gLTE7CiAgICAgICAgIHFtYXQgPSBzLT5xX2ludGVyX21hdHJp
eFtxc2NhbGVdOwotICAgICAgICBtYXRyaXggPSBzLT5pbnRlcl9tYXRyaXg7CisgICAgICAgIG1h
dHJpeCA9IHMtPmMuaW50ZXJfbWF0cml4OwogICAgICAgICBsZW5ndGggICAgID0gcy0+aW50ZXJf
YWNfdmxjX2xlbmd0aDsKICAgICAgICAgbGFzdF9sZW5ndGg9IHMtPmludGVyX2FjX3ZsY19sYXN0
X2xlbmd0aDsKICAgICB9CkBAIC00MDg2LDE0ICs0MDk3LDE0IEBAIHN0YXRpYyBpbnQgZGN0X3F1
YW50aXplX3RyZWxsaXNfYyhNcGVnRW5jQ29udGV4dCAqcywKIAogICAgICAgICAgICAgYXZfYXNz
ZXJ0MihsZXZlbCk7CiAKLSAgICAgICAgICAgIGlmKHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjMg
fHwgcy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSl7CisgICAgICAgICAgICBpZiAocy0+Yy5vdXRf
Zm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSkgewogICAg
ICAgICAgICAgICAgIHVucXVhbnRfY29lZmY9IGFsZXZlbCpxbXVsICsgcWFkZDsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZihzLT5vdXRfZm9ybWF0ID09IEZNVF9NSlBFRykgewotICAgICAgICAgICAg
ICAgIGogPSBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25bc2NhbnRhYmxlW2ldXTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZihzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01KUEVHKSB7CisgICAgICAgICAg
ICAgICAgaiA9IHMtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW3NjYW50YWJsZVtpXV07CiAgICAg
ICAgICAgICAgICAgdW5xdWFudF9jb2VmZiA9IGFsZXZlbCAqIG1hdHJpeFtqXSAqIDg7CiAgICAg
ICAgICAgICB9ZWxzZXsgLy8gTVBFRy0xCi0gICAgICAgICAgICAgICAgaiA9IHMtPmlkc3AuaWRj
dF9wZXJtdXRhdGlvbltzY2FudGFibGVbaV1dOyAvLyBGSVhNRTogb3B0aW1pemUKLSAgICAgICAg
ICAgICAgICBpZihzLT5tYl9pbnRyYSl7CisgICAgICAgICAgICAgICAgaiA9IHMtPmMuaWRzcC5p
ZGN0X3Blcm11dGF0aW9uW3NjYW50YWJsZVtpXV07IC8vIEZJWE1FOiBvcHRpbWl6ZQorICAgICAg
ICAgICAgICAgIGlmKHMtPmMubWJfaW50cmEpewogICAgICAgICAgICAgICAgICAgICAgICAgdW5x
dWFudF9jb2VmZiA9IChpbnQpKCAgYWxldmVsICAqIG1wZWcyX3FzY2FsZSAqIG1hdHJpeFtqXSkg
Pj4gNDsKICAgICAgICAgICAgICAgICAgICAgICAgIHVucXVhbnRfY29lZmYgPSAgICh1bnF1YW50
X2NvZWZmIC0gMSkgfCAxOwogICAgICAgICAgICAgICAgIH1lbHNlewpAQCAtNDExOCw3ICs0MTI5
LDcgQEAgc3RhdGljIGludCBkY3RfcXVhbnRpemVfdHJlbGxpc19jKE1wZWdFbmNDb250ZXh0ICpz
LAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgaWYocy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5vdXRfZm9ybWF0ID09IEZN
VF9IMjYxKXsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYz
IHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSkgewogICAgICAgICAgICAgICAgICAgICBm
b3Ioaj1zdXJ2aXZvcl9jb3VudC0xOyBqPj0wOyBqLS0pewogICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHJ1bj0gaSAtIHN1cnZpdm9yW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNjb3JlPSBkaXN0b3J0aW9uICsgbGFzdF9sZW5ndGhbVU5JX0FDX0VOQ19JTkRFWChydW4sIGxl
dmVsKV0qbGFtYmRhOwpAQCAtNDE0NCw3ICs0MTU1LDcgQEAgc3RhdGljIGludCBkY3RfcXVhbnRp
emVfdHJlbGxpc19jKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYocy0+b3V0X2Zvcm1hdCA9PSBG
TVRfSDI2MyB8fCBzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYxKXsKKyAgICAgICAgICAgICAgICBp
ZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRf
SDI2MSkgewogICAgICAgICAgICAgICAgICAgZm9yKGo9c3Vydml2b3JfY291bnQtMTsgaj49MDsg
ai0tKXsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydW49IGkgLSBzdXJ2aXZvcltqXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY29yZT0gZGlzdG9ydGlvbiArIHNjb3JlX3Rh
YltpLXJ1bl07CkBAIC00MTc3LDcgKzQxODgsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90
cmVsbGlzX2MoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgIHN1cnZpdm9yWyBzdXJ2aXZvcl9j
b3VudCsrIF09IGkrMTsKICAgICB9CiAKLSAgICBpZihzLT5vdXRfZm9ybWF0ICE9IEZNVF9IMjYz
ICYmIHMtPm91dF9mb3JtYXQgIT0gRk1UX0gyNjEpeworICAgIGlmKHMtPmMub3V0X2Zvcm1hdCAh
PSBGTVRfSDI2MyAmJiBzLT5jLm91dF9mb3JtYXQgIT0gRk1UX0gyNjEpewogICAgICAgICBsYXN0
X3Njb3JlPSAyNTYqMjU2KjI1NioxMjA7CiAgICAgICAgIGZvcihpPSBzdXJ2aXZvclswXTsgaTw9
bGFzdF9ub25femVybyArIDE7IGkrKyl7CiAgICAgICAgICAgICBpbnQgc2NvcmU9IHNjb3JlX3Rh
YltpXTsKQEAgLTQyMTEsNyArNDIyMiw3IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxs
aXNfYyhNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgICAgIGludCBhbGV2ZWw9IEZGQUJTKGxl
dmVsKTsKICAgICAgICAgICAgIGludCB1bnF1YW50X2NvZWZmLCBzY29yZSwgZGlzdG9ydGlvbjsK
IAotICAgICAgICAgICAgaWYocy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5vdXRfZm9y
bWF0ID09IEZNVF9IMjYxKXsKKyAgICAgICAgICAgIGlmKHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRf
SDI2MyB8fCBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpewogICAgICAgICAgICAgICAgICAg
ICB1bnF1YW50X2NvZWZmPSAoYWxldmVsKnFtdWwgKyBxYWRkKT4+MzsKICAgICAgICAgICAgIH0g
ZWxzZXsgLy8gTVBFRy0xCiAgICAgICAgICAgICAgICAgICAgIHVucXVhbnRfY29lZmYgPSAoKCgg
IGFsZXZlbCAgPDwgMSkgKyAxKSAqIG1wZWcyX3FzY2FsZSAqICgoaW50KSBtYXRyaXhbMF0pKSA+
PiA1OwpAQCAtNDI3MCw3ICs0MjgxLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfYmFzaXModWludDhf
dCAqcGVybSl7CiAgICAgfQogfQogCi1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9yZWZpbmUoTXBl
Z0VuY0NvbnRleHQgKnMsIC8vRklYTUUgYnJlYWtzIGRlbm9pc2U/CitzdGF0aWMgaW50IGRjdF9x
dWFudGl6ZV9yZWZpbmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgLy9GSVhNRSBicmVha3MgZGVu
b2lzZT8KICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQxNl90ICp3
ZWlnaHQsIGludDE2X3QgKm9yaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgaW50
IHFzY2FsZSl7CiAgICAgaW50MTZfdCByZW1bNjRdOwpAQCAtNDI4NiwyMSArNDI5NywyMSBAQCBz
dGF0aWMgaW50IGRjdF9xdWFudGl6ZV9yZWZpbmUoTXBlZ0VuY0NvbnRleHQgKnMsIC8vRklYTUUg
YnJlYWtzIGRlbm9pc2U/CiAgICAgY29uc3QgdWludDhfdCAqbGVuZ3RoOwogICAgIGNvbnN0IHVp
bnQ4X3QgKmxhc3RfbGVuZ3RoOwogICAgIGludCBsYW1iZGE7Ci0gICAgaW50IHJsZV9pbmRleCwg
cnVuLCBxID0gMSwgc3VtOyAvL3EgaXMgb25seSB1c2VkIHdoZW4gcy0+bWJfaW50cmEgaXMgdHJ1
ZQorICAgIGludCBybGVfaW5kZXgsIHJ1biwgcSA9IDEsIHN1bTsgLy9xIGlzIG9ubHkgdXNlZCB3
aGVuIHMtPmMubWJfaW50cmEgaXMgdHJ1ZQogCiAgICAgaWYoYmFzaXNbMF1bMF0gPT0gMCkKLSAg
ICAgICAgYnVpbGRfYmFzaXMocy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uKTsKKyAgICAgICAgYnVp
bGRfYmFzaXMocy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb24pOwogCiAgICAgcW11bD0gcXNjYWxl
KjI7CiAgICAgcWFkZD0gKHFzY2FsZS0xKXwxOwotICAgIGlmIChzLT5tYl9pbnRyYSkgewotICAg
ICAgICBzY2FudGFibGU9IHMtPmludHJhX3NjYW50YWJsZS5zY2FudGFibGU7Ci0gICAgICAgIHBl
cm1fc2NhbnRhYmxlPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZDsKLSAgICAgICAgaWYg
KCFzLT5oMjYzX2FpYykgeworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CisgICAgICAgIHNjYW50
YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUuc2NhbnRhYmxlOworICAgICAgICBwZXJtX3NjYW50
YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZDsKKyAgICAgICAgaWYgKCFzLT5j
LmgyNjNfYWljKSB7CiAgICAgICAgICAgICBpZiAobiA8IDQpCi0gICAgICAgICAgICAgICAgcSA9
IHMtPnlfZGNfc2NhbGU7CisgICAgICAgICAgICAgICAgcSA9IHMtPmMueV9kY19zY2FsZTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBxID0gcy0+Y19kY19zY2FsZTsKKyAgICAg
ICAgICAgICAgICBxID0gcy0+Yy5jX2RjX3NjYWxlOwogICAgICAgICB9IGVsc2V7CiAgICAgICAg
ICAgICAvKiBGb3IgQUlDIHdlIHNraXAgcXVhbnQvZGVxdWFudCBvZiBJTlRSQURDICovCiAgICAg
ICAgICAgICBxID0gMTsKQEAgLTQzMTEsNyArNDMyMiw3IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50
aXplX3JlZmluZShNcGVnRW5jQ29udGV4dCAqcywgLy9GSVhNRSBicmVha3MgZGVub2lzZT8KICAg
ICAgICAgZGM9IGJsb2NrWzBdKnE7CiAvLyAgICAgICAgYmxvY2tbMF0gPSAoYmxvY2tbMF0gKyAo
cSA+PiAxKSkgLyBxOwogICAgICAgICBzdGFydF9pID0gMTsKLS8vICAgICAgICBpZihzLT5tcGVn
X3F1YW50IHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX01QRUcxKQorLy8gICAgICAgIGlmKHMtPmMu
bXBlZ19xdWFudCB8fCBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01QRUcxKQogLy8gICAgICAgICAg
ICBiaWFzPSAxPDwoUU1BVF9TSElGVC0xKTsKICAgICAgICAgaWYgKG4gPiAzICYmIHMtPmludHJh
X2Nocm9tYV9hY192bGNfbGVuZ3RoKSB7CiAgICAgICAgICAgICBsZW5ndGggICAgID0gcy0+aW50
cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7CkBAIC00MzIxLDE0ICs0MzMyLDE0IEBAIHN0YXRpYyBp
bnQgZGN0X3F1YW50aXplX3JlZmluZShNcGVnRW5jQ29udGV4dCAqcywgLy9GSVhNRSBicmVha3Mg
ZGVub2lzZT8KICAgICAgICAgICAgIGxhc3RfbGVuZ3RoPSBzLT5pbnRyYV9hY192bGNfbGFzdF9s
ZW5ndGg7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzY2FudGFibGU9IHMtPmlu
dGVyX3NjYW50YWJsZS5zY2FudGFibGU7Ci0gICAgICAgIHBlcm1fc2NhbnRhYmxlPSBzLT5pbnRl
cl9zY2FudGFibGUucGVybXV0YXRlZDsKKyAgICAgICAgc2NhbnRhYmxlPSBzLT5jLmludGVyX3Nj
YW50YWJsZS5zY2FudGFibGU7CisgICAgICAgIHBlcm1fc2NhbnRhYmxlPSBzLT5jLmludGVyX3Nj
YW50YWJsZS5wZXJtdXRhdGVkOwogICAgICAgICBkYz0gMDsKICAgICAgICAgc3RhcnRfaSA9IDA7
CiAgICAgICAgIGxlbmd0aCAgICAgPSBzLT5pbnRlcl9hY192bGNfbGVuZ3RoOwogICAgICAgICBs
YXN0X2xlbmd0aD0gcy0+aW50ZXJfYWNfdmxjX2xhc3RfbGVuZ3RoOwogICAgIH0KLSAgICBsYXN0
X25vbl96ZXJvID0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKKyAgICBsYXN0X25vbl96ZXJvID0g
cy0+Yy5ibG9ja19sYXN0X2luZGV4W25dOwogCiAgICAgZGMgKz0gKDE8PChSRUNPTl9TSElGVC0x
KSk7CiAgICAgZm9yKGk9MDsgaTw2NDsgaSsrKXsKQEAgLTQzNTEsNyArNDM2Miw3IEBAIHN0YXRp
YyBpbnQgZGN0X3F1YW50aXplX3JlZmluZShNcGVnRW5jQ29udGV4dCAqcywgLy9GSVhNRSBicmVh
a3MgZGVub2lzZT8KICAgICAgICAgYXZfYXNzZXJ0Mih3PCgxPDw2KSk7CiAgICAgICAgIHN1bSAr
PSB3Knc7CiAgICAgfQotICAgIGxhbWJkYT0gc3VtKih1aW50NjRfdClzLT5sYW1iZGEyID4+IChG
Rl9MQU1CREFfU0hJRlQgLSA2ICsgNiArIDYgKyA2KTsKKyAgICBsYW1iZGE9IHN1bSoodWludDY0
X3Qpcy0+Yy5sYW1iZGEyID4+IChGRl9MQU1CREFfU0hJRlQgLSA2ICsgNiArIDYgKyA2KTsKIAog
ICAgIHJ1bj0wOwogICAgIHJsZV9pbmRleD0wOwpAQCAtNDM5Miw3ICs0NDAzLDcgQEAgc3RhdGlj
IGludCBkY3RfcXVhbnRpemVfcmVmaW5lKE1wZWdFbmNDb250ZXh0ICpzLCAvL0ZJWE1FIGJyZWFr
cyBkZW5vaXNlPwogICAgICAgICAgICAgY29uc3QgaW50IGxldmVsPSBibG9ja1swXTsKICAgICAg
ICAgICAgIGludCBjaGFuZ2UsIG9sZF9jb2VmZjsKIAotICAgICAgICAgICAgYXZfYXNzZXJ0Mihz
LT5tYl9pbnRyYSk7CisgICAgICAgICAgICBhdl9hc3NlcnQyKHMtPmMubWJfaW50cmEpOwogCiAg
ICAgICAgICAgICBvbGRfY29lZmY9IHEqbGV2ZWw7CiAKQEAgLTQ2MjIsNyArNDYzMyw3IEBAIHZv
aWQgZmZfYmxvY2tfcGVybXV0ZShpbnQxNl90ICpibG9jaywgY29uc3QgdWludDhfdCAqcGVybXV0
YXRpb24sCiAgICAgfQogfQogCi1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1wZWdFbmNDb250
ZXh0ICpzLAorc3RhdGljIGludCBkY3RfcXVhbnRpemVfYyhNUFZFbmNDb250ZXh0ICpjb25zdCBz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBxc2NhbGUsIGludCAqb3ZlcmZsb3cpCiB7CkBAIC00
NjM4LDEzICs0NjQ5LDEzIEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX2MoTXBlZ0VuY0NvbnRl
eHQgKnMsCiAgICAgaWYocy0+ZGN0X2Vycm9yX3N1bSkKICAgICAgICAgcy0+ZGVub2lzZV9kY3Qo
cywgYmxvY2spOwogCi0gICAgaWYgKHMtPm1iX2ludHJhKSB7Ci0gICAgICAgIHNjYW50YWJsZT0g
cy0+aW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsKLSAgICAgICAgaWYgKCFzLT5oMjYzX2FpYykg
eworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CisgICAgICAgIHNjYW50YWJsZT0gcy0+Yy5pbnRy
YV9zY2FudGFibGUuc2NhbnRhYmxlOworICAgICAgICBpZiAoIXMtPmMuaDI2M19haWMpIHsKICAg
ICAgICAgICAgIGlmIChuIDwgNCkKLSAgICAgICAgICAgICAgICBxID0gcy0+eV9kY19zY2FsZTsK
KyAgICAgICAgICAgICAgICBxID0gcy0+Yy55X2RjX3NjYWxlOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHEgPSBzLT5jX2RjX3NjYWxlOworICAgICAgICAgICAgICAgIHEgPSBz
LT5jLmNfZGNfc2NhbGU7CiAgICAgICAgICAgICBxID0gcSA8PCAzOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIC8qIEZvciBBSUMgd2Ugc2tpcCBxdWFudC9kZXF1YW50IG9mIElOVFJBREMg
Ki8KQEAgLTQ2NTcsNyArNDY2OCw3IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX2MoTXBlZ0Vu
Y0NvbnRleHQgKnMsCiAgICAgICAgIHFtYXQgPSBuIDwgNCA/IHMtPnFfaW50cmFfbWF0cml4W3Fz
Y2FsZV0gOiBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXhbcXNjYWxlXTsKICAgICAgICAgYmlhcz0g
cy0+aW50cmFfcXVhbnRfYmlhcyooMTw8KFFNQVRfU0hJRlQgLSBRVUFOVF9CSUFTX1NISUZUKSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbnRhYmxlPSBzLT5pbnRlcl9zY2FudGFibGUuc2Nh
bnRhYmxlOworICAgICAgICBzY2FudGFibGU9IHMtPmMuaW50ZXJfc2NhbnRhYmxlLnNjYW50YWJs
ZTsKICAgICAgICAgc3RhcnRfaSA9IDA7CiAgICAgICAgIGxhc3Rfbm9uX3plcm8gPSAtMTsKICAg
ICAgICAgcW1hdCA9IHMtPnFfaW50ZXJfbWF0cml4W3FzY2FsZV07CkBAIC00Njk4LDggKzQ3MDks
OCBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICpv
dmVyZmxvdz0gcy0+bWF4X3Fjb2VmZiA8IG1heDsgLy9vdmVyZmxvdyBtaWdodCBoYXZlIGhhcHBl
bmVkCiAKICAgICAvKiB3ZSBuZWVkIHRoaXMgcGVybXV0YXRpb24gc28gdGhhdCB3ZSBjb3JyZWN0
IHRoZSBJRENULCB3ZSBvbmx5IHBlcm11dGUgdGhlICE9MCBlbGVtZW50cyAqLwotICAgIGlmIChz
LT5pZHNwLnBlcm1fdHlwZSAhPSBGRl9JRENUX1BFUk1fTk9ORSkKLSAgICAgICAgZmZfYmxvY2tf
cGVybXV0ZShibG9jaywgcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uLAorICAgIGlmIChzLT5jLmlk
c3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9OT05FKQorICAgICAgICBmZl9ibG9ja19wZXJt
dXRlKGJsb2NrLCBzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICBzY2FudGFibGUsIGxhc3Rfbm9uX3plcm8pOwogCiAgICAgcmV0dXJuIGxhc3Rfbm9uX3pl
cm87CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oIGIvbGliYXZjb2RlYy9t
cGVndmlkZW9lbmMuaAppbmRleCBiYzhhM2U4MGQ1Li4xZDEyNGIxYmQxIDEwMDY0NAotLS0gYS9s
aWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgK
QEAgLTMyLDEzICszMiwxNDIgQEAKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgog
I2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKKyNpbmNsdWRlICJmZGN0ZHNwLmgiCiAjaW5jbHVk
ZSAibXBlZ3ZpZGVvLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvZW5jZHNwLmgiCisjaW5jbHVkZSAi
cGl4YmxvY2tkc3AuaCIKKyNpbmNsdWRlICJwdXRfYml0cy5oIgogI2luY2x1ZGUgInJhdGVjb250
cm9sLmgiCiAKICNkZWZpbmUgTVBWRU5DX01BWF9CX0ZSQU1FUyAxNgogCit0eXBlZGVmIHN0cnVj
dCBNUFZFbmNDb250ZXh0IHsKKyAgICBNcGVnRW5jQ29udGV4dCBjOyAgICAgICAgICAgLy8vPCB0
aGUgY29tbW9uIGJhc2UgY29udGV4dAorCisgICAgLyoqIGJpdCBvdXRwdXQgKi8KKyAgICBQdXRC
aXRDb250ZXh0IHBiOworCisgICAgaW50ICpsYW1iZGFfdGFibGU7CisgICAgaW50IGFkYXB0aXZl
X3F1YW50OyAgICAgICAgIC8vLzwgdXNlIGFkYXB0aXZlIHF1YW50aXphdGlvbgorICAgIGludCBk
cXVhbnQ7ICAgICAgICAgICAgICAgICAvLy88IHFzY2FsZSBkaWZmZXJlbmNlIHRvIHByZXYgcXNj
YWxlCisgICAgaW50IHNraXBkY3Q7ICAgICAgICAgICAgICAgIC8vLzwgc2tpcCBkY3QgYW5kIGNv
ZGUgemVybyByZXNpZHVhbAorCisgICAgaW50IGx1bWFfZWxpbV90aHJlc2hvbGQ7CisgICAgaW50
IGNocm9tYV9lbGltX3RocmVzaG9sZDsKKworICAgIC8qKgorICAgICAqIFJlZmVyZW5jZSB0byB0
aGUgc291cmNlIHBpY3R1cmUuCisgICAgICovCisgICAgQVZGcmFtZSAqbmV3X3BpYzsKKworICAg
IEZEQ1REU1BDb250ZXh0IGZkc3A7CisgICAgTXBlZ3ZpZGVvRW5jRFNQQ29udGV4dCBtcHZlbmNk
c3A7CisgICAgUGl4YmxvY2tEU1BDb250ZXh0IHBkc3A7CisKKyAgICBpbnQxNl90ICgqcF9tdl90
YWJsZSlbMl07ICAgICAgICAgICAgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgUC1mcmFtZQor
ICAgIGludDE2X3QgKCpiX2ZvcndfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgx
TVYgcGVyIE1CKSBmb3J3YXJkIG1vZGUgQi1mcmFtZQorICAgIGludDE2X3QgKCpiX2JhY2tfbXZf
dGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1CKSBiYWNrd2FyZCBtb2Rl
IEItZnJhbWUKKyAgICBpbnQxNl90ICgqYl9iaWRpcl9mb3J3X212X3RhYmxlKVsyXTsgLy8vPCBN
ViB0YWJsZSAoMU1WIHBlciBNQikgYmlkaXIgbW9kZSBCLWZyYW1lCisgICAgaW50MTZfdCAoKmJf
YmlkaXJfYmFja19tdl90YWJsZSlbMl07IC8vLzwgTVYgdGFibGUgKDFNViBwZXIgTUIpIGJpZGly
IG1vZGUgQi1mcmFtZQorICAgIGludDE2X3QgKCpiX2RpcmVjdF9tdl90YWJsZSlbMl07ICAgICAv
Ly88IE1WIHRhYmxlICgxTVYgcGVyIE1CKSBkaXJlY3QgbW9kZSBCLWZyYW1lCisgICAgaW50MTZf
dCAoKmJfZmllbGRfbXZfdGFibGVbMl1bMl1bMl0pWzJdOy8vLzwgTVYgdGFibGUgKDRNViBwZXIg
TUIpIGludGVybGFjZWQgQi1mcmFtZQorICAgIHVpbnQ4X3QgKCpwX2ZpZWxkX3NlbGVjdF90YWJs
ZVsyXSk7ICAvLy88IE9ubHkgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYWxsb2NhdGVkCisgICAgdWlu
dDhfdCAoKmJfZmllbGRfc2VsZWN0X3RhYmxlWzJdWzJdKTsgLy8vPCBhbGxvY2F0ZWQgam9pbnRs
eSB3aXRoIHBfZmllbGRfc2VsZWN0X3RhYmxlCisKKyAgICB1aW50MTZfdCAqbWJfdHlwZTsgICAg
ICAgICAgLy8vPCBUYWJsZSBmb3IgY2FuZGlkYXRlIE1CIHR5cGVzCisgICAgdWludDE2X3QgKm1i
X3ZhcjsgICAgICAgICAgIC8vLzwgVGFibGUgZm9yIE1CIHZhcmlhbmNlcworICAgIHVpbnQxNl90
ICptY19tYl92YXI7ICAgICAgICAvLy88IFRhYmxlIGZvciBtb3Rpb24gY29tcGVuc2F0ZWQgTUIg
dmFyaWFuY2VzCisgICAgdWludDhfdCAgKm1iX21lYW47ICAgICAgICAgIC8vLzwgVGFibGUgZm9y
IE1CIGx1bWluYW5jZQorICAgIHVpbnQ2NF90IGVuY29kaW5nX2Vycm9yW01QVl9NQVhfUExBTkVT
XTsKKworICAgIGludCBpbnRyYV9xdWFudF9iaWFzOyAgICAvLy88IGJpYXMgZm9yIHRoZSBxdWFu
dGl6ZXIKKyAgICBpbnQgaW50ZXJfcXVhbnRfYmlhczsgICAgLy8vPCBiaWFzIGZvciB0aGUgcXVh
bnRpemVyCisgICAgaW50IG1pbl9xY29lZmY7ICAgICAgICAgIC8vLzwgbWluaW11bSBlbmNvZGFi
bGUgY29lZmZpY2llbnQKKyAgICBpbnQgbWF4X3Fjb2VmZjsgICAgICAgICAgLy8vPCBtYXhpbXVt
IGVuY29kYWJsZSBjb2VmZmljaWVudAorICAgIGludCBhY19lc2NfbGVuZ3RoOyAgICAgICAvLy88
IG51bSBvZiBiaXRzIG5lZWRlZCB0byBlbmNvZGUgdGhlIGxvbmdlc3QgZXNjCisgICAgdWludDhf
dCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKKyAgICB1aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9s
ZW5ndGg7CisgICAgdWludDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7CisgICAgdWlu
dDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sYXN0X2xlbmd0aDsKKyAgICB1aW50OF90ICppbnRl
cl9hY192bGNfbGVuZ3RoOworICAgIHVpbnQ4X3QgKmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsK
KyAgICB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5ndGg7CisKKyAgICBpbnQgY29kZWRfc2NvcmVb
MTJdOworCisgICAgLyoqIHByZWNvbXB1dGVkIG1hdHJpeCAoY29tYmluZSBxc2NhbGUgYW5kIERD
VCByZW5vcm0pICovCisgICAgaW50ICgqcV9pbnRyYV9tYXRyaXgpWzY0XTsKKyAgICBpbnQgKCpx
X2Nocm9tYV9pbnRyYV9tYXRyaXgpWzY0XTsKKyAgICBpbnQgKCpxX2ludGVyX21hdHJpeClbNjRd
OworICAgIC8qKiBpZGVudGljYWwgdG8gdGhlIGFib3ZlIGJ1dCBmb3IgTU1YICYgdGhlc2UgYXJl
IG5vdCBwZXJtdXRhdGVkLCBzZWNvbmQgNjQgZW50cmllcyBhcmUgYmlhcyovCisgICAgdWludDE2
X3QgKCpxX2ludHJhX21hdHJpeDE2KVsyXVs2NF07CisgICAgdWludDE2X3QgKCpxX2Nocm9tYV9p
bnRyYV9tYXRyaXgxNilbMl1bNjRdOworICAgIHVpbnQxNl90ICgqcV9pbnRlcl9tYXRyaXgxNilb
Ml1bNjRdOworCisgICAgLyogbm9pc2UgcmVkdWN0aW9uICovCisgICAgaW50ICgqZGN0X2Vycm9y
X3N1bSlbNjRdOworICAgIGludCBkY3RfY291bnRbMl07CisgICAgdWludDE2X3QgKCpkY3Rfb2Zm
c2V0KVs2NF07CisKKyAgICAvKiBzdGF0aXN0aWNzLCB1c2VkIGZvciAyLXBhc3MgZW5jb2Rpbmcg
Ki8KKyAgICBpbnQgbXZfYml0czsKKyAgICBpbnQgaV90ZXhfYml0czsKKyAgICBpbnQgcF90ZXhf
Yml0czsKKyAgICBpbnQgaV9jb3VudDsKKyAgICBpbnQgbWlzY19iaXRzOyAvLy88IGNicCwgbWJf
dHlwZQorICAgIGludCBsYXN0X2JpdHM7IC8vLzwgdGVtcCB2YXIgdXNlZCBmb3IgY2FsY3VsYXRp
bmcgdGhlIGFib3ZlIHZhcnMKKworICAgIC8qIEguMjYzIHNwZWNpZmljICovCisgICAgaW50IG1i
X2luZm87ICAgICAgICAgICAgICAgICAgIC8vLzwgaW50ZXJ2YWwgZm9yIG91dHB1dHRpbmcgaW5m
byBhYm91dCBtYiBvZmZzZXRzIGFzIHNpZGUgZGF0YQorICAgIGludCBwcmV2X21iX2luZm8sIGxh
c3RfbWJfaW5mbzsKKyAgICBpbnQgbWJfaW5mb19zaXplOworICAgIHVpbnQ4X3QgKm1iX2luZm9f
cHRyOworCisgICAgLyogTVBFRy00IHNwZWNpZmljICovCisgICAgUHV0Qml0Q29udGV4dCB0ZXhf
cGI7ICAgICAgICAgIC8vLzwgdXNlZCBmb3IgZGF0YSBwYXJ0aXRpb25lZCBWT1BzCisgICAgUHV0
Qml0Q29udGV4dCBwYjI7ICAgICAgICAgICAgIC8vLzwgdXNlZCBmb3IgZGF0YSBwYXJ0aXRpb25l
ZCBWT1BzCisKKyAgICAvKiBNU01QRUc0IHNwZWNpZmljICovCisgICAgaW50IGVzYzNfbGV2ZWxf
bGVuZ3RoOworCisgICAgLyogTUpQRUcgc3BlY2lmaWMgKi8KKyAgICBzdHJ1Y3QgTUpwZWdDb250
ZXh0ICptanBlZ19jdHg7CisgICAgaW50IGVzY19wb3M7CisKKyAgICAvKiBNUEVHLTEgc3BlY2lm
aWMgKi8KKyAgICBpbnQgbGFzdF9tdl9kaXI7ICAgICAgICAgLy8vPCBsYXN0IG12X2RpciwgdXNl
ZCBmb3IgQi1mcmFtZSBlbmNvZGluZworCisgICAgLyogUlRQIHNwZWNpZmljICovCisgICAgaW50
IHJ0cF9tb2RlOworICAgIGludCBydHBfcGF5bG9hZF9zaXplOworCisgICAgdWludDhfdCAqcHRy
X2xhc3Rnb2I7CisKKyAgICB2b2lkICgqZW5jb2RlX21iKShzdHJ1Y3QgTVBWRW5jQ29udGV4dCAq
cywgaW50MTZfdCBibG9ja1tdWzY0XSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbW90aW9u
X3gsIGludCBtb3Rpb25feSk7CisKKyAgICBpbnQgKCpkY3RfcXVhbnRpemUpKHN0cnVjdCBNUFZF
bmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2Nh
bGUsIGludCAqb3ZlcmZsb3cpOworICAgIHZvaWQgKCpkZW5vaXNlX2RjdCkoc3RydWN0IE1QVkVu
Y0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrKTsKKworICAgIGludCBtcHZfZmxhZ3M7ICAgICAg
Ly8vPCBmbGFncyBzZXQgYnkgcHJpdmF0ZSBvcHRpb25zCisgICAgaW50IHF1YW50aXplcl9ub2lz
ZV9zaGFwaW5nOworCisgICAgbWVfY21wX2Z1bmMgaWxkY3RfY21wWzJdOyAvLy88IDAgPSBpbnRy
YSwgMSA9IG5vbi1pbnRyYQorICAgIG1lX2NtcF9mdW5jIG5fc3NlX2NtcFsyXTsgLy8vPCBlaXRo
ZXIgU1NFIG9yIE5TU0UgY21wIGZ1bmMKKyAgICBtZV9jbXBfZnVuYyBzYWRfY21wWzJdOworICAg
IG1lX2NtcF9mdW5jIHNzZV9jbXBbMl07CisgICAgaW50ICgqc3VtX2Fic19kY3RlbGVtKShjb25z
dCBpbnQxNl90ICpibG9jayk7CisKKyAgICAvLy8gQml0ZmllbGQgY29udGFpbmluZyBpbmZvcm1h
dGlvbiB3aGljaCBmcmFtZXMgdG8gcmVjb25zdHJ1Y3QuCisgICAgaW50IGZyYW1lX3JlY29uc3Ry
dWN0aW9uX2JpdGZpZWxkOworCisgICAgaW50IGVycm9yX3JhdGU7CisKKyAgICBpbnQgaW50cmFf
cGVuYWx0eTsKK30gTVBWRW5jQ29udGV4dDsKKwogdHlwZWRlZiBzdHJ1Y3QgTVBWTWFpbkVuY0Nv
bnRleHQgewotICAgIE1wZWdFbmNDb250ZXh0IHM7ICAvLy88IFRoZSBtYWluIHNsaWNlY29udGV4
dAorICAgIE1QVkVuY0NvbnRleHQgczsgICAgICAgICAgICAgICAvLy88IFRoZSBtYWluIHNsaWNl
Y29udGV4dAogCiAgICAgaW50IHNjZW5lY2hhbmdlX3RocmVzaG9sZDsKIApAQCAtMTEyLDE0ICsy
NDEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgTVBWTWFpbkVuY0NvbnRleHQgewogICAgIGludDE2X3Qg
KCptdl90YWJsZV9iYXNlKVsyXTsKIH0gTVBWTWFpbkVuY0NvbnRleHQ7CiAKLXN0YXRpYyBpbmxp
bmUgY29uc3QgTVBWTWFpbkVuY0NvbnRleHQgKnNsaWNlX3RvX21haW5lbmMoY29uc3QgTXBlZ0Vu
Y0NvbnRleHQgKnMpCitzdGF0aWMgaW5saW5lIGNvbnN0IE1QVk1haW5FbmNDb250ZXh0ICpzbGlj
ZV90b19tYWluZW5jKGNvbnN0IE1QVkVuY0NvbnRleHQgKnMpCiB7CiAjaWZkZWYgTk9fU0xJQ0Vf
VEhSRUFESU5HX0hFUkUKLSAgICBhdl9hc3NlcnQyKHMtPnNsaWNlX2NvbnRleHRfY291bnQgPD0g
MSAmJgotICAgICAgICAgICAgICAgIShzLT5hdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFW
X0NPREVDX0NBUF9TTElDRV9USFJFQURTKSk7CisgICAgYXZfYXNzZXJ0MihzLT5jLnNsaWNlX2Nv
bnRleHRfY291bnQgPD0gMSAmJgorICAgICAgICAgICAgICAgIShzLT5jLmF2Y3R4LT5jb2RlYy0+
Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1NMSUNFX1RIUkVBRFMpKTsKICAgICByZXR1cm4g
KGNvbnN0IE1QVk1haW5FbmNDb250ZXh0KilzOwogI2Vsc2UKLSAgICByZXR1cm4gcy0+ZW5jcGFy
ZW50OworICAgIHJldHVybiBzLT5jLmVuY3BhcmVudDsKICNlbmRpZgogfQogCkBAIC0xNzAsNyAr
Mjk5LDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBNUFZNYWluRW5jQ29udGV4dCAqc2xpY2VfdG9f
bWFpbmVuYyhjb25zdCBNcGVnRW5jQ29udGV4dCAqcykKIHsgImNocm9tYSIsIE5VTEwsIDAsIEFW
X09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IEZGX0NNUF9DSFJPTUEgfSwgSU5UX01JTiwgSU5UX01B
WCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAiY21wX2Z1bmMiIH0sIFwKIHsgIm1zYWQiLCAg
ICJTdW0gb2YgYWJzb2x1dGUgZGlmZmVyZW5jZXMsIG1lZGlhbiBwcmVkaWN0ZWQiLCAwLCBBVl9P
UFRfVFlQRV9DT05TVCwgey5pNjQgPSBGRl9DTVBfTUVESUFOX1NBRCB9LCBJTlRfTUlOLCBJTlRf
TUFYLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJjbXBfZnVuYyIgfQogCi0jZGVmaW5lIEZG
X01QVl9PRkZTRVQoeCkgb2Zmc2V0b2YoTXBlZ0VuY0NvbnRleHQsIHgpCisjZGVmaW5lIEZGX01Q
Vl9PRkZTRVQoeCkgb2Zmc2V0b2YoTVBWRW5jQ29udGV4dCwgeCkKICNkZWZpbmUgRkZfTVBWX01B
SU5fT0ZGU0VUKHgpIG9mZnNldG9mKE1QVk1haW5FbmNDb250ZXh0LCB4KQogI2RlZmluZSBGRl9S
Q19PRkZTRVQoeCkgIG9mZnNldG9mKE1QVk1haW5FbmNDb250ZXh0LCByY19jb250ZXh0LngpCiAj
ZGVmaW5lIEZGX01QVl9PUFRfRkxBR1MgKEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNIHwgQVZfT1BU
X0ZMQUdfRU5DT0RJTkdfUEFSQU0pCkBAIC0yMTcsNyArMzQ2LDcgQEAgRkZfTVBWX09QVF9DTVBf
RlVOQywgXAogCiAjZGVmaW5lIEZGX01QVl9DT01NT05fTU9USU9OX0VTVF9PUFRTIFwKIHsgIm12
MCIsICAgICAgICAgICAgImFsd2F5cyB0cnkgYSBtYiB3aXRoIG12PTwwLDA+IiwgICAgICAgICAg
ICAgICAgICAgICAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gRkZfTVBWX0ZMQUdfTVYw
IH0sICAgIDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1wdl9mbGFncyIgfSxcCi17
Im1vdGlvbl9lc3QiLCAibW90aW9uIGVzdGltYXRpb24gYWxnb3JpdGhtIiwgICAgICAgICAgICAg
ICAgICAgICAgIEZGX01QVl9PRkZTRVQobWUubW90aW9uX2VzdCksIEFWX09QVF9UWVBFX0lOVCwg
ey5pNjQgPSBGRl9NRV9FUFpTIH0sIEZGX01FX1pFUk8sIEZGX01FX1hPTkUsIEZGX01QVl9PUFRf
RkxBR1MsIC51bml0ID0gIm1vdGlvbl9lc3QiIH0sICAgXAoreyJtb3Rpb25fZXN0IiwgIm1vdGlv
biBlc3RpbWF0aW9uIGFsZ29yaXRobSIsICAgICAgICAgICAgICAgICAgICAgICBGRl9NUFZfT0ZG
U0VUKGMubWUubW90aW9uX2VzdCksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSBGRl9NRV9FUFpT
IH0sIEZGX01FX1pFUk8sIEZGX01FX1hPTkUsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1v
dGlvbl9lc3QiIH0sICAgXAogeyAiemVybyIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7
IC5pNjQgPSBGRl9NRV9aRVJPIH0sIDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1v
dGlvbl9lc3QiIH0sIFwKIHsgImVwenMiLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAu
aTY0ID0gRkZfTUVfRVBaUyB9LCAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtb3Rp
b25fZXN0IiB9LCBcCiB7ICJ4b25lIiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2
NCA9IEZGX01FX1hPTkUgfSwgMCwgMCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90aW9u
X2VzdCIgfSwgXApAQCAtMjMzLDIxICszNjIsMjEgQEAgaW50IGZmX21wdl9lbmNvZGVfaW5pdChB
VkNvZGVjQ29udGV4dCAqYXZjdHgpOwogaW50IGZmX21wdl9lbmNvZGVfZW5kKEFWQ29kZWNDb250
ZXh0ICphdmN0eCk7CiBpbnQgZmZfbXB2X2VuY29kZV9waWN0dXJlKEFWQ29kZWNDb250ZXh0ICph
dmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZG
cmFtZSAqZnJhbWUsIGludCAqZ290X3BhY2tldCk7Ci1pbnQgZmZfbXB2X3JlYWxsb2NhdGVfcHV0
Yml0YnVmZmVyKE1wZWdFbmNDb250ZXh0ICpzLCBzaXplX3QgdGhyZXNob2xkLCBzaXplX3Qgc2l6
ZV9pbmNyZWFzZSk7CitpbnQgZmZfbXB2X3JlYWxsb2NhdGVfcHV0Yml0YnVmZmVyKE1QVkVuY0Nv
bnRleHQgKnMsIHNpemVfdCB0aHJlc2hvbGQsIHNpemVfdCBzaXplX2luY3JlYXNlKTsKIAogdm9p
ZCBmZl93cml0ZV9xdWFudF9tYXRyaXgoUHV0Qml0Q29udGV4dCAqcGIsIHVpbnQxNl90ICptYXRy
aXgpOwogCi12b2lkIGZmX2RjdF9lbmNvZGVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lk
IGZmX21wdmVuY19kY3RfaW5pdF9taXBzKE1wZWdFbmNDb250ZXh0ICpzKTsKLXZvaWQgZmZfZGN0
X2VuY29kZV9pbml0X3g4NihNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2RjdF9lbmNvZGVf
aW5pdChNUFZFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbXB2ZW5jX2RjdF9pbml0X21pcHMoTVBW
RW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2RjdF9lbmNvZGVfaW5pdF94ODYoTVBWRW5jQ29udGV4
dCAqcyk7CiAKLXZvaWQgZmZfY29udmVydF9tYXRyaXgoTXBlZ0VuY0NvbnRleHQgKnMsIGludCAo
KnFtYXQpWzY0XSwgdWludDE2X3QgKCpxbWF0MTYpWzJdWzY0XSwKK3ZvaWQgZmZfY29udmVydF9t
YXRyaXgoTVBWRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLCB1aW50MTZfdCAoKnFtYXQx
NilbMl1bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqcXVhbnRf
bWF0cml4LCBpbnQgYmlhcywgaW50IHFtaW4sIGludCBxbWF4LCBpbnQgaW50cmEpOwogCiB2b2lk
IGZmX2Jsb2NrX3Blcm11dGUoaW50MTZfdCAqYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnBlcm11dGF0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW50YWJsZSwgaW50
IGxhc3QpOwogCi1zdGF0aWMgaW5saW5lIGludCBnZXRfYml0c19kaWZmKE1wZWdFbmNDb250ZXh0
ICpzKQorc3RhdGljIGlubGluZSBpbnQgZ2V0X2JpdHNfZGlmZihNUFZFbmNDb250ZXh0ICpzKQog
ewogICAgIGNvbnN0IGludCBiaXRzID0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKICAgICBjb25z
dCBpbnQgbGFzdCA9IHMtPmxhc3RfYml0czsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXNtcGVn
NGVuYy5jIGIvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmMKaW5kZXggYmJhMDQ5M2YwMS4uOTllNDE1
MzAzYSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmMKKysrIGIvbGliYXZjb2Rl
Yy9tc21wZWc0ZW5jLmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgYXZfY29sZCB2b2lkIG1z
bXBlZzRfZW5jb2RlX2luaXRfc3RhdGljKHZvaWQpCiAKIHN0YXRpYyB2b2lkIGZpbmRfYmVzdF90
YWJsZXMoTVNNUEVHNEVuY0NvbnRleHQgKm1zKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25z
dCBzID0gJm1zLT5tLnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtcy0+bS5zOwog
ICAgIGludCBpOwogICAgIGludCBiZXN0ICAgICAgICA9IDAsIGJlc3Rfc2l6ZSAgICAgICAgPSBJ
TlRfTUFYOwogICAgIGludCBjaHJvbWFfYmVzdCA9IDAsIGJlc3RfY2hyb21hX3NpemUgPSBJTlRf
TUFYOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyB2b2lkIGZpbmRfYmVzdF90YWJsZXMoTVNN
UEVHNEVuY0NvbnRleHQgKm1zKQogICAgICAgICAgICAgICAgICAgICBpbnQgaW50cmFfbHVtYV9j
b3VudCAgPSBtcy0+YWNfc3RhdHNbMV1bMF1bbGV2ZWxdW3J1bl1bbGFzdF07CiAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnRyYV9jaHJvbWFfY291bnQ9IG1zLT5hY19zdGF0c1sxXVsxXVtsZXZl
bF1bcnVuXVtsYXN0XTsKIAotICAgICAgICAgICAgICAgICAgICBpZihzLT5waWN0X3R5cGU9PUFW
X1BJQ1RVUkVfVFlQRV9JKXsKKyAgICAgICAgICAgICAgICAgICAgaWYocy0+Yy5waWN0X3R5cGU9
PUFWX1BJQ1RVUkVfVFlQRV9JKXsKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgICAgICAg
Kz0gaW50cmFfbHVtYV9jb3VudCAgKnJsX2xlbmd0aFtpICBdW2xldmVsXVtydW5dW2xhc3RdOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hyb21hX3NpemUrPSBpbnRyYV9jaHJvbWFfY291bnQq
cmxfbGVuZ3RoW2krM11bbGV2ZWxdW3J1bl1bbGFzdF07CiAgICAgICAgICAgICAgICAgICAgIH1l
bHNlewpAQCAtMTk2LDE2ICsxOTYsMTYgQEAgc3RhdGljIHZvaWQgZmluZF9iZXN0X3RhYmxlcyhN
U01QRUc0RW5jQ29udGV4dCAqbXMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZihzLT5waWN0
X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9QKSBjaHJvbWFfYmVzdD0gYmVzdDsKKyAgICBpZihzLT5j
LnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX1ApIGNocm9tYV9iZXN0PSBiZXN0OwogCiAgICAg
bWVtc2V0KG1zLT5hY19zdGF0cywgMCwgc2l6ZW9mKG1zLT5hY19zdGF0cykpOwogCiAgICAgbXMt
PnJsX3RhYmxlX2luZGV4ICAgICAgICA9ICAgICAgICBiZXN0OwogICAgIG1zLT5ybF9jaHJvbWFf
dGFibGVfaW5kZXggPSBjaHJvbWFfYmVzdDsKIAotICAgIGlmIChzLT5waWN0X3R5cGUgIT0gbXMt
Pm0ubGFzdF9ub25fYl9waWN0X3R5cGUpIHsKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgIT0gbXMt
Pm0ubGFzdF9ub25fYl9waWN0X3R5cGUpIHsKICAgICAgICAgbXMtPnJsX3RhYmxlX2luZGV4PSAy
OwotICAgICAgICBpZihzLT5waWN0X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9JKQorICAgICAgICBp
ZihzLT5jLnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX0kpCiAgICAgICAgICAgICBtcy0+cmxf
Y2hyb21hX3RhYmxlX2luZGV4ID0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbXMtPnJs
X2Nocm9tYV90YWJsZV9pbmRleCA9IDI7CkBAIC0yMTcsMTUgKzIxNywxNSBAQCBzdGF0aWMgdm9p
ZCBmaW5kX2Jlc3RfdGFibGVzKE1TTVBFRzRFbmNDb250ZXh0ICptcykKIHN0YXRpYyBpbnQgbXNt
cGVnNF9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7
CiAgICAgTVNNUEVHNEVuY0NvbnRleHQgKmNvbnN0IG1zID0gKE1TTVBFRzRFbmNDb250ZXh0Kilt
OwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4
dCAqY29uc3QgcyA9ICZtLT5zOwogCiAgICAgZmluZF9iZXN0X3RhYmxlcyhtcyk7CiAKICAgICBh
bGlnbl9wdXRfYml0cygmcy0+cGIpOwotICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+cGljdF90
eXBlIC0gMSk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLnBpY3RfdHlwZSAtIDEpOwog
Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5xc2NhbGUpOwotICAgIGlmIChzLT5tc21wZWc0
X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKKyAgICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPmMucXNj
YWxlKTsKKyAgICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKICAgICAg
ICAgbXMtPnJsX3RhYmxlX2luZGV4ID0gMjsKICAgICAgICAgbXMtPnJsX2Nocm9tYV90YWJsZV9p
bmRleCA9IDI7CiAgICAgfQpAQCAtMjM0LDI0ICsyMzQsMjQgQEAgc3RhdGljIGludCBtc21wZWc0
X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICBt
cy0+bXZfdGFibGVfaW5kZXggICA9IDE7IC8qIG9ubHkgaWYgUC1mcmFtZSAqLwogICAgIG1zLT51
c2Vfc2tpcF9tYl9jb2RlID0gMTsgLyogb25seSBpZiBQLWZyYW1lICovCiAgICAgbXMtPnBlcl9t
Yl9ybF90YWJsZSAgPSAwOwotICAgIGlmIChzLT5tc21wZWc0X3ZlcnNpb24gPT0gTVNNUDRfV01W
MSkKLSAgICAgICAgcy0+aW50ZXJfaW50cmFfcHJlZCA9IHMtPndpZHRoICogcy0+aGVpZ2h0IDwg
MzIwKjI0MCAmJgorICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9XTVYxKQor
ICAgICAgICBzLT5jLmludGVyX2ludHJhX3ByZWQgPSBzLT5jLndpZHRoICogcy0+Yy5oZWlnaHQg
PCAzMjAqMjQwICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLT5iaXRfcmF0ZSAg
PD0gSUlfQklUUkFURSAgICAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBp
Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUDsKLSAgICBmZl9kbG9nKHMtPmF2Y3R4LCAiJWQg
JSJQUklkNjQiICVkICVkICVkXG4iLCBzLT5waWN0X3R5cGUsIG0tPmJpdF9yYXRlLAotICAgICAg
ICAgICAgcy0+aW50ZXJfaW50cmFfcHJlZCwgcy0+d2lkdGgsIHMtPmhlaWdodCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVf
UDsKKyAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICIlZCAlIlBSSWQ2NCIgJWQgJWQgJWRcbiIsIHMt
PmMucGljdF90eXBlLCBtLT5iaXRfcmF0ZSwKKyAgICAgICAgICAgIHMtPmMuaW50ZXJfaW50cmFf
cHJlZCwgcy0+Yy53aWR0aCwgcy0+Yy5oZWlnaHQpOwogCi0gICAgaWYgKHMtPnBpY3RfdHlwZSA9
PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICBzLT5zbGljZV9oZWlnaHQ9IHMtPm1iX2hl
aWdodC8xOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDUsIDB4MTYgKyBzLT5tYl9oZWlnaHQv
cy0+c2xpY2VfaGVpZ2h0KTsKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U
WVBFX0kpIHsKKyAgICAgICAgcy0+Yy5zbGljZV9oZWlnaHQgPSBzLT5jLm1iX2hlaWdodC8xOwor
ICAgICAgICBwdXRfYml0cygmcy0+cGIsIDUsIDB4MTYgKyBzLT5jLm1iX2hlaWdodC9zLT5jLnNs
aWNlX2hlaWdodCk7CiAKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9X
TVYxKSB7CisgICAgICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9XTVYxKSB7
CiAgICAgICAgICAgICBmZl9tc21wZWc0X2VuY29kZV9leHRfaGVhZGVyKHMpOwogICAgICAgICAg
ICAgaWYgKG0tPmJpdF9yYXRlID4gTUJBQ19CSVRSQVRFKQogICAgICAgICAgICAgICAgIHB1dF9i
aXRzKCZzLT5wYiwgMSwgbXMtPnBlcl9tYl9ybF90YWJsZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAocy0+bXNtcGVnNF92ZXJzaW9uID4gTVNNUDRfVjIpIHsKKyAgICAgICAgaWYgKHMtPmMu
bXNtcGVnNF92ZXJzaW9uID4gTVNNUDRfVjIpIHsKICAgICAgICAgICAgIGlmICghbXMtPnBlcl9t
Yl9ybF90YWJsZSl7CiAgICAgICAgICAgICAgICAgZmZfbXNtcGVnNF9jb2RlMDEyKCZzLT5wYiwg
bXMtPnJsX2Nocm9tYV90YWJsZV9pbmRleCk7CiAgICAgICAgICAgICAgICAgZmZfbXNtcGVnNF9j
b2RlMDEyKCZzLT5wYiwgbXMtPnJsX3RhYmxlX2luZGV4KTsKQEAgLTI2MiwxMCArMjYyLDEwIEBA
IHN0YXRpYyBpbnQgbXNtcGVnNF9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0pCiAgICAgfSBlbHNlIHsKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBt
cy0+dXNlX3NraXBfbWJfY29kZSk7CiAKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA9
PSBNU01QNF9XTVYxICYmIG0tPmJpdF9yYXRlID4gTUJBQ19CSVRSQVRFKQorICAgICAgICBpZiAo
cy0+Yy5tc21wZWc0X3ZlcnNpb24gPT0gTVNNUDRfV01WMSAmJiBtLT5iaXRfcmF0ZSA+IE1CQUNf
QklUUkFURSkKICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgbXMtPnBlcl9tYl9ybF90
YWJsZSk7CiAKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA+IE1TTVA0X1YyKSB7Cisg
ICAgICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA+IE1TTVA0X1YyKSB7CiAgICAgICAgICAg
ICBpZiAoIW1zLT5wZXJfbWJfcmxfdGFibGUpCiAgICAgICAgICAgICAgICAgZmZfbXNtcGVnNF9j
b2RlMDEyKCZzLT5wYiwgbXMtPnJsX3RhYmxlX2luZGV4KTsKIApAQCAtMjgxLDE4ICsyODEsMTgg
QEAgc3RhdGljIGludCBtc21wZWc0X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29u
dGV4dCAqY29uc3QgbSkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBmZl9tc21wZWc0X2VuY29k
ZV9leHRfaGVhZGVyKE1wZWdFbmNDb250ZXh0ICogcykKK3ZvaWQgZmZfbXNtcGVnNF9lbmNvZGVf
ZXh0X2hlYWRlcihNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewogICAgIGNvbnN0IE1QVk1haW5F
bmNDb250ZXh0ICpjb25zdCBtID0gc2xpY2VfdG9fbWFpbmVuYyhzKTsKICAgICB1bnNpZ25lZCBm
cHM7CiAKLSAgICBpZiAocy0+YXZjdHgtPmZyYW1lcmF0ZS5udW0gPiAwICYmIHMtPmF2Y3R4LT5m
cmFtZXJhdGUuZGVuID4gMCkKLSAgICAgICAgZnBzID0gcy0+YXZjdHgtPmZyYW1lcmF0ZS5udW0g
LyBzLT5hdmN0eC0+ZnJhbWVyYXRlLmRlbjsKKyAgICBpZiAocy0+Yy5hdmN0eC0+ZnJhbWVyYXRl
Lm51bSA+IDAgJiYgcy0+Yy5hdmN0eC0+ZnJhbWVyYXRlLmRlbiA+IDApCisgICAgICAgIGZwcyA9
IHMtPmMuYXZjdHgtPmZyYW1lcmF0ZS5udW0gLyBzLT5jLmF2Y3R4LT5mcmFtZXJhdGUuZGVuOwog
ICAgIGVsc2UgewogRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwotICAgICAgICBmcHMg
PSBzLT5hdmN0eC0+dGltZV9iYXNlLmRlbiAvIHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVtCisgICAg
ICAgIGZwcyA9IHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyBzLT5jLmF2Y3R4LT50aW1lX2Jh
c2UubnVtCiAjaWYgRkZfQVBJX1RJQ0tTX1BFUl9GUkFNRQotICAgICAgICAgICAgLyBGRk1BWChz
LT5hdmN0eC0+dGlja3NfcGVyX2ZyYW1lLCAxKQorICAgICAgICAgICAgLyBGRk1BWChzLT5jLmF2
Y3R4LT50aWNrc19wZXJfZnJhbWUsIDEpCiAjZW5kaWYKICAgICAgICAgICAgIDsKIEZGX0VOQUJM
RV9ERVBSRUNBVElPTl9XQVJOSU5HUwpAQCAtMzAyLDE2ICszMDIsMTYgQEAgRkZfRU5BQkxFX0RF
UFJFQ0FUSU9OX1dBUk5JTkdTCiAKICAgICBwdXRfYml0cygmcy0+cGIsIDExLCBGRk1JTihtLT5i
aXRfcmF0ZSAvIDEwMjQsIDIwNDcpKTsKIAotICAgIGlmIChzLT5tc21wZWc0X3ZlcnNpb24gPj0g
TVNNUDRfVjMpCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZmxpcGZsb3Bfcm91bmRp
bmcpOworICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMykKKyAgICAgICAg
cHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmZsaXBmbG9wX3JvdW5kaW5nKTsKICAgICBlbHNlCi0g
ICAgICAgIGF2X2Fzc2VydDAoIXMtPmZsaXBmbG9wX3JvdW5kaW5nKTsKKyAgICAgICAgYXZfYXNz
ZXJ0MCghcy0+Yy5mbGlwZmxvcF9yb3VuZGluZyk7CiB9CiAKIHZvaWQgZmZfbXNtcGVnNF9lbmNv
ZGVfbW90aW9uKE1TTVBFRzRFbmNDb250ZXh0ICpjb25zdCBtcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbXgsIGludCBteSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAq
Y29uc3QgcyA9ICZtcy0+bS5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbXMtPm0u
czsKICAgICBjb25zdCB1aW50MzJfdCAqY29uc3QgbXZfdmVjdG9yX3RhYmxlID0gbXZfdmVjdG9y
X3RhYmxlc1ttcy0+bXZfdGFibGVfaW5kZXhdOwogICAgIHVpbnQzMl90IGNvZGU7CiAKQEAgLTMz
NCwyMCArMzM0LDIxIEBAIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfbW90aW9uKE1TTVBFRzRFbmND
b250ZXh0ICpjb25zdCBtcywKICAgICBwdXRfYml0cygmcy0+cGIsIGNvZGUgJiAweGZmLCBjb2Rl
ID4+IDgpOwogfQogCi12b2lkIGZmX21zbXBlZzRfaGFuZGxlX3NsaWNlcyhNcGVnRW5jQ29udGV4
dCAqcyl7Ci0gICAgaWYgKHMtPm1iX3ggPT0gMCkgewotICAgICAgICBpZiAocy0+c2xpY2VfaGVp
Z2h0ICYmIChzLT5tYl95ICUgcy0+c2xpY2VfaGVpZ2h0KSA9PSAwKSB7Ci0gICAgICAgICAgICBp
ZiAocy0+bXNtcGVnNF92ZXJzaW9uIDwgTVNNUDRfV01WMSkgewotICAgICAgICAgICAgICAgIGZm
X21wZWc0X2NsZWFuX2J1ZmZlcnMocyk7Cit2b2lkIGZmX21zbXBlZzRfaGFuZGxlX3NsaWNlcyhN
UFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGlmIChzLT5jLm1iX3ggPT0gMCkgeworICAg
ICAgICBpZiAocy0+Yy5zbGljZV9oZWlnaHQgJiYgKHMtPmMubWJfeSAlIHMtPmMuc2xpY2VfaGVp
Z2h0KSA9PSAwKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPCBNU01Q
NF9XTVYxKSB7CisgICAgICAgICAgICAgICAgZmZfbXBlZzRfY2xlYW5fYnVmZmVycygmcy0+Yyk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzLT5maXJzdF9zbGljZV9saW5lID0gMTsKKyAg
ICAgICAgICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzLT5maXJzdF9zbGljZV9saW5lID0gMDsKKyAgICAgICAgICAgIHMtPmMuZmly
c3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1z
bXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywgaW50IHZhbCkKK3N0YXRp
YyB2b2lkIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGlu
dCB2YWwpCiB7CiAgICAgaW50IHJhbmdlLCBiaXRfc2l6ZSwgc2lnbiwgY29kZSwgYml0czsKIApA
QCAtMzU1LDcgKzM1Niw3IEBAIHN0YXRpYyB2b2lkIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1w
ZWdFbmNDb250ZXh0ICogcywgaW50IHZhbCkKICAgICAgICAgLyogemVybyB2ZWN0b3I7IGNvcnJl
c3BvbmRzIHRvIGZmX212dGFiWzBdICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMHgx
KTsKICAgICB9IGVsc2UgewotICAgICAgICBiaXRfc2l6ZSA9IHMtPmZfY29kZSAtIDE7CisgICAg
ICAgIGJpdF9zaXplID0gcy0+Yy5mX2NvZGUgLSAxOwogICAgICAgICByYW5nZSA9IDEgPDwgYml0
X3NpemU7CiAgICAgICAgIGlmICh2YWwgPD0gLTY0KQogICAgICAgICAgICAgdmFsICs9IDY0OwpA
QCAtMzc5LDcgKzM4MCw3IEBAIHN0YXRpYyB2b2lkIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1w
ZWdFbmNDb250ZXh0ICogcywgaW50IHZhbCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1zbXBl
ZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAorc3RhdGljIHZvaWQgbXNtcGVn
NF9lbmNvZGVfbWIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbW90aW9uX3gsIGludCBtb3Rpb25feSkKIHsKQEAgLTM4OSwxMSArMzkwLDExIEBA
IHN0YXRpYyB2b2lkIG1zbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog
CiAgICAgZmZfbXNtcGVnNF9oYW5kbGVfc2xpY2VzKHMpOwogCi0gICAgaWYgKCFzLT5tYl9pbnRy
YSkgeworICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAvKiBjb21wdXRlIGNicCAq
LwogICAgICAgICBjYnAgPSAwOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7Ci0g
ICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQorICAgICAgICAgICAg
aWYgKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQogICAgICAgICAgICAgICAgIGNicCB8
PSAxIDw8ICg1IC0gaSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1zLT51c2Vfc2tpcF9tYl9j
b2RlICYmIChjYnAgfCBtb3Rpb25feCB8IG1vdGlvbl95KSA9PSAwKSB7CkBAIC00MDcsNyArNDA4
LDcgQEAgc3RhdGljIHZvaWQgbXNtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0
IHMsCiAgICAgICAgIGlmIChtcy0+dXNlX3NraXBfbWJfY29kZSkKICAgICAgICAgICAgIHB1dF9i
aXRzKCZzLT5wYiwgMSwgMCk7ICAgICAvKiBtYiBjb2RlZCAqLwogCi0gICAgICAgIGlmIChzLT5t
c21wZWc0X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKKyAgICAgICAgaWYgKHMtPmMubXNtcGVnNF92
ZXJzaW9uIDw9IE1TTVA0X1YyKSB7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsCiAgICAg
ICAgICAgICAgICAgICAgICBmZl92Ml9tYl90eXBlW2NicCYzXVsxXSwKICAgICAgICAgICAgICAg
ICAgICAgIGZmX3YyX21iX3R5cGVbY2JwJjNdWzBdKTsKQEAgLTQyMCw3ICs0MjEsNyBAQCBzdGF0
aWMgdm9pZCBtc21wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywKIAogICAg
ICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAKLSAgICAgICAgICAg
IGZmX2gyNjNfcHJlZF9tb3Rpb24ocywgMCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CisgICAgICAg
ICAgICBmZl9oMjYzX3ByZWRfbW90aW9uKCZzLT5jLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsK
ICAgICAgICAgICAgIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKHMsIG1vdGlvbl94IC0gcHJlZF94
KTsKICAgICAgICAgICAgIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKHMsIG1vdGlvbl95IC0gcHJl
ZF95KTsKICAgICAgICAgfWVsc2V7CkBAIC00MzEsNyArNDMyLDcgQEAgc3RhdGljIHZvaWQgbXNt
cGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICBzLT5t
aXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlmZihzKTsKIAogICAgICAgICAgICAgLyogbW90aW9uIHZl
Y3RvciAqLwotICAgICAgICAgICAgZmZfaDI2M19wcmVkX21vdGlvbihzLCAwLCAwLCAmcHJlZF94
LCAmcHJlZF95KTsKKyAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIDAsIDAs
ICZwcmVkX3gsICZwcmVkX3kpOwogICAgICAgICAgICAgZmZfbXNtcGVnNF9lbmNvZGVfbW90aW9u
KG1zLCBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3Rpb25feSAtIHByZWRfeSk7CiAgICAgICAgIH0KQEAgLTQ0NiwxMSArNDQ3LDExIEBA
IHN0YXRpYyB2b2lkIG1zbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog
ICAgICAgICAvKiBjb21wdXRlIGNicCAqLwogICAgICAgICBjYnAgPSAwOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDY7IGkrKykgewotICAgICAgICAgICAgaW50IHZhbCA9IChzLT5ibG9j
a19sYXN0X2luZGV4W2ldID49IDEpOworICAgICAgICAgICAgaW50IHZhbCA9IChzLT5jLmJsb2Nr
X2xhc3RfaW5kZXhbaV0gPj0gMSk7CiAgICAgICAgICAgICBjYnAgfD0gdmFsIDw8ICg1IC0gaSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA8PSBNU01QNF9WMikg
ewotICAgICAgICAgICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewor
ICAgICAgICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKKyAgICAgICAg
ICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewogICAgICAgICAg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICBmZl92Ml9p
bnRyYV9jYnBjW2NicCYzXVsxXSwgZmZfdjJfaW50cmFfY2JwY1tjYnAmM11bMF0pOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTQ2NSwxNCArNDY2LDE0IEBAIHN0YXRpYyB2b2lkIG1zbXBlZzRf
ZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAg
ZmZfaDI2M19jYnB5X3RhYltjYnA+PjJdWzFdLAogICAgICAgICAgICAgICAgICAgICAgZmZfaDI2
M19jYnB5X3RhYltjYnA+PjJdWzBdKTsKICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICBpZiAo
cy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAgICAgICBpZiAocy0+
Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpIHsKICAgICAgICAgICAgICAgICAvKiBj
b21wdXRlIGNvZGVkX2NicDsgdGhlIDB4MyBjb3JyZXNwb25kcyB0byBjaHJvbWEgY2JwOwogICAg
ICAgICAgICAgICAgICAqIGx1bWEgY29kZWRfY2JwIGFyZSBzZXQgaW4gdGhlIGxvb3AgYmVsb3cg
Ki8KICAgICAgICAgICAgICAgICBjb2RlZF9jYnAgPSBjYnAgJiAweDM7CiAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqY29kZWRfYmxvY2s7Ci0gICAgICAgICAgICAgICAgICAgIGludCBwcmVkID0gZmZfbXNt
cGVnNF9jb2RlZF9ibG9ja19wcmVkKHMsIGksICZjb2RlZF9ibG9jayk7Ci0gICAgICAgICAgICAg
ICAgICAgIGludCB2YWwgPSAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW50IHByZWQgPSBmZl9tc21wZWc0X2NvZGVkX2Jsb2NrX3ByZWQoJnMtPmMs
IGksICZjb2RlZF9ibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWwgPSAocy0+Yy5i
bG9ja19sYXN0X2luZGV4W2ldID49IDEpOwogICAgICAgICAgICAgICAgICAgICAqY29kZWRfYmxv
Y2sgPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgIHZhbCBePSBwcmVkOwogICAgICAgICAgICAg
ICAgICAgICBjb2RlZF9jYnAgfD0gdmFsIDw8ICg1IC0gaSk7CkBAIC00ODgsOSArNDg5LDEwIEBA
IHN0YXRpYyB2b2lkIG1zbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGZmX3RhYmxlX21iX25vbl9pbnRyYVtjYnBdWzBdKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAg
ICAgICAgIC8qIG5vIEFDIHByZWRpY3Rpb24geWV0ICovCi0gICAgICAgICAgICBpZihzLT5pbnRl
cl9pbnRyYV9wcmVkKXsKLSAgICAgICAgICAgICAgICBzLT5oMjYzX2FpY19kaXI9MDsKLSAgICAg
ICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmgyNjNf
YWljX2Rpcl1bMV0sIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmgyNjNfYWljX2Rpcl1bMF0pOwor
ICAgICAgICAgICAgaWYgKHMtPmMuaW50ZXJfaW50cmFfcHJlZCkgeworICAgICAgICAgICAgICAg
IHMtPmMuaDI2M19haWNfZGlyID0gMDsKKyAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs
IGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmMuaDI2M19haWNfZGlyXVsxXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmMuaDI2M19haWNf
ZGlyXVswXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcy0+bWlzY19iaXRz
ICs9IGdldF9iaXRzX2RpZmYocyk7CkBAIC01MDUsMjQgKzUwNywyNCBAQCBzdGF0aWMgdm9pZCBt
c21wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywKIAogc3RhdGljIHZvaWQg
bXNtcGVnNF9lbmNvZGVfZGMoTVNNUEVHNEVuY0NvbnRleHQgKmNvbnN0IG1zLCBpbnQgbGV2ZWws
IGludCBuLCBpbnQgKmRpcl9wdHIpCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAm
bXMtPm0uczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm1zLT5tLnM7CiAgICAgaW50
IHNpZ24sIGNvZGU7CiAgICAgaW50IHByZWQ7CiAKICAgICBpbnQxNl90ICpkY192YWw7Ci0gICAg
cHJlZCA9IGZmX21zbXBlZzRfcHJlZF9kYyhzLCBuLCAmZGNfdmFsLCBkaXJfcHRyKTsKKyAgICBw
cmVkID0gZmZfbXNtcGVnNF9wcmVkX2RjKCZzLT5jLCBuLCAmZGNfdmFsLCBkaXJfcHRyKTsKIAog
ICAgIC8qIHVwZGF0ZSBwcmVkaWN0b3IgKi8KICAgICBpZiAobiA8IDQpIHsKLSAgICAgICAgKmRj
X3ZhbCA9IGxldmVsICogcy0+eV9kY19zY2FsZTsKKyAgICAgICAgKmRjX3ZhbCA9IGxldmVsICog
cy0+Yy55X2RjX3NjYWxlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICpkY192YWwgPSBsZXZlbCAq
IHMtPmNfZGNfc2NhbGU7CisgICAgICAgICpkY192YWwgPSBsZXZlbCAqIHMtPmMuY19kY19zY2Fs
ZTsKICAgICB9CiAKICAgICAvKiBkbyB0aGUgcHJlZGljdGlvbiAqLwogICAgIGxldmVsIC09IHBy
ZWQ7CiAKLSAgICBpZiAocy0+bXNtcGVnNF92ZXJzaW9uIDw9IE1TTVA0X1YyKSB7CisgICAgaWYg
KHMtPmMubXNtcGVnNF92ZXJzaW9uIDw9IE1TTVA0X1YyKSB7CiAgICAgICAgIGlmIChuIDwgNCkg
ewogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLAogICAgICAgICAgICAgICAgICAgICAgZmZf
djJfZGNfbHVtX3RhYmxlW2xldmVsICsgMjU2XVsxXSwKQEAgLTU1Niw3ICs1NTgsNyBAQCBzdGF0
aWMgdm9pZCBtc21wZWc0X2VuY29kZV9kYyhNU01QRUc0RW5jQ29udGV4dCAqY29uc3QgbXMsIGlu
dCBsZXZlbCwgaW50IG4sIGludAogCiAvKiBFbmNvZGluZyBvZiBhIGJsb2NrOyB2ZXJ5IHNpbWls
YXIgdG8gTVBFRy00IGV4Y2VwdCBmb3IgYSBkaWZmZXJlbnQKICAqIGVzY2FwZSBjb2RpbmcgKHNh
bWUgYXMgSC4yNjMpIGFuZCBtb3JlIFZMQyB0YWJsZXMuICovCi12b2lkIGZmX21zbXBlZzRfZW5j
b2RlX2Jsb2NrKE1wZWdFbmNDb250ZXh0ICogcywgaW50MTZfdCAqIGJsb2NrLCBpbnQgbikKK3Zv
aWQgZmZfbXNtcGVnNF9lbmNvZGVfYmxvY2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZf
dCAqIGJsb2NrLCBpbnQgbikKIHsKICAgICBNU01QRUc0RW5jQ29udGV4dCAqY29uc3QgbXMgPSAo
TVNNUEVHNEVuY0NvbnRleHQqKXM7CiAgICAgaW50IGxldmVsLCBydW4sIGxhc3QsIGksIGosIGxh
c3RfaW5kZXg7CkBAIC01NjUsNyArNTY3LDcgQEAgdm9pZCBmZl9tc21wZWc0X2VuY29kZV9ibG9j
ayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCiAgICAgY29uc3Qg
UkxUYWJsZSAqcmw7CiAgICAgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlOwogCi0gICAgaWYgKHMt
Pm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAgICAgbXNtcGVnNF9l
bmNvZGVfZGMobXMsIGJsb2NrWzBdLCBuLCAmZGNfcHJlZF9kaXIpOwogICAgICAgICBpID0gMTsK
ICAgICAgICAgaWYgKG4gPCA0KSB7CkBAIC01NzMsMjMgKzU3NSwyMyBAQCB2b2lkIGZmX21zbXBl
ZzRfZW5jb2RlX2Jsb2NrKE1wZWdFbmNDb250ZXh0ICogcywgaW50MTZfdCAqIGJsb2NrLCBpbnQg
bikKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJsID0gJmZmX3JsX3RhYmxlWzMgKyBt
cy0+cmxfY2hyb21hX3RhYmxlX2luZGV4XTsKICAgICAgICAgfQotICAgICAgICBydW5fZGlmZiA9
IHMtPm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9XTVYxOwotICAgICAgICBzY2FudGFibGU9IHMt
PmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkOworICAgICAgICBydW5fZGlmZiA9IHMtPmMubXNt
cGVnNF92ZXJzaW9uID49IE1TTVA0X1dNVjE7CisgICAgICAgIHNjYW50YWJsZT0gcy0+Yy5pbnRy
YV9zY2FudGFibGUucGVybXV0YXRlZDsKICAgICB9IGVsc2UgewogICAgICAgICBpID0gMDsKICAg
ICAgICAgcmwgPSAmZmZfcmxfdGFibGVbMyArIG1zLT5ybF90YWJsZV9pbmRleF07Ci0gICAgICAg
IHJ1bl9kaWZmID0gcy0+bXNtcGVnNF92ZXJzaW9uID4gTVNNUDRfVjI7Ci0gICAgICAgIHNjYW50
YWJsZT0gcy0+aW50ZXJfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAgICAgIHJ1bl9kaWZmID0g
cy0+Yy5tc21wZWc0X3ZlcnNpb24gPiBNU01QNF9WMjsKKyAgICAgICAgc2NhbnRhYmxlPSBzLT5j
LmludGVyX3NjYW50YWJsZS5wZXJtdXRhdGVkOwogICAgIH0KIAogICAgIC8qIHJlY2FsY3VsYXRl
IGJsb2NrX2xhc3RfaW5kZXggZm9yIE0kIHdtdjEgKi8KLSAgICBpZiAocy0+bXNtcGVnNF92ZXJz
aW9uID49IE1TTVA0X1dNVjEgJiYgcy0+YmxvY2tfbGFzdF9pbmRleFtuXSA+IDApIHsKKyAgICBp
ZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPj0gTVNNUDRfV01WMSAmJiBzLT5jLmJsb2NrX2xhc3Rf
aW5kZXhbbl0gPiAwKSB7CiAgICAgICAgIGZvcihsYXN0X2luZGV4PTYzOyBsYXN0X2luZGV4Pj0w
OyBsYXN0X2luZGV4LS0pewogICAgICAgICAgICAgaWYoYmxvY2tbc2NhbnRhYmxlW2xhc3RfaW5k
ZXhdXSkgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtuXT0g
bGFzdF9pbmRleDsKKyAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2luZGV4W25dPSBsYXN0X2luZGV4
OwogICAgIH1lbHNlCi0gICAgICAgIGxhc3RfaW5kZXggPSBzLT5ibG9ja19sYXN0X2luZGV4W25d
OworICAgICAgICBsYXN0X2luZGV4ID0gcy0+Yy5ibG9ja19sYXN0X2luZGV4W25dOwogICAgIC8q
IEFDIGNvZWZzICovCiAgICAgbGFzdF9ub25femVybyA9IGkgLSAxOwogICAgIGZvciAoOyBpIDw9
IGxhc3RfaW5kZXg7IGkrKykgewpAQCAtNjA2LDEwICs2MDgsMTAgQEAgdm9pZCBmZl9tc21wZWc0
X2VuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4p
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmKGxldmVsPD1NQVhfTEVWRUwgJiYgcnVu
PD1NQVhfUlVOKXsKLSAgICAgICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+bWJfaW50cmFdW24+
M11bbGV2ZWxdW3J1bl1bbGFzdF0rKzsKKyAgICAgICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+
Yy5tYl9pbnRyYV1bbj4zXVtsZXZlbF1bcnVuXVtsYXN0XSsrOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+bWJfaW50cmFdW24gPiAzXVs0MF1bNjNdWzBdKys7
IC8vZXNjMyBsaWtlCisgICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+Yy5tYl9pbnRyYV1bbiA+
IDNdWzQwXVs2M11bMF0rKzsgLy9lc2MzIGxpa2UKIAogICAgICAgICAgICAgY29kZSA9IGdldF9y
bF9pbmRleChybCwgbGFzdCwgcnVuLCBsZXZlbCk7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+
cGIsIHJsLT50YWJsZV92bGNbY29kZV1bMV0sIHJsLT50YWJsZV92bGNbY29kZV1bMF0pOwpAQCAt
NjI5LDcgKzYzMSw3IEBAIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRl
eHQgKiBzLCBpbnQxNl90ICogYmxvY2ssIGludCBuKQogICAgICAgICAgICAgICAgICAgICBpZiAo
cnVuMSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVzYzM7CiAgICAgICAgICAg
ICAgICAgICAgIGNvZGUgPSBnZXRfcmxfaW5kZXgocmwsIGxhc3QsIHJ1bjErMSwgbGV2ZWwpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocy0+bXNtcGVnNF92ZXJzaW9uID09IE1TTVA0X1dNVjEg
JiYgY29kZSA9PSBybC0+bikKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmMubXNtcGVnNF92
ZXJzaW9uID09IE1TTVA0X1dNVjEgJiYgY29kZSA9PSBybC0+bikKICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZXNjMzsKICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGdldF9ybF9pbmRl
eChybCwgbGFzdCwgcnVuMSwgbGV2ZWwpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9
PSBybC0+bikgewpAQCAtNjM3LDEyICs2MzksMTIgQEAgdm9pZCBmZl9tc21wZWc0X2VuY29kZV9i
bG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0aGlyZCBlc2NhcGUgKi8KICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXRf
Yml0cygmcy0+cGIsIDEsIGxhc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMtPm1z
bXBlZzRfdmVyc2lvbiA+PSBNU01QNF9XTVYxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPj0gTVNNUDRfV01WMSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzLT5lc2MzX2xldmVsX2xlbmd0aCA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPmVzYzNfbGV2ZWxfbGVuZ3RoID0gODsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXMtPmVzYzNfcnVuX2xlbmd0aCAgPSA2OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvL0VTQ0xWTFNaICsgRVNDUlVOU1oKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYocy0+cXNjYWxlPDgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmKHMtPmMucXNjYWxlPDgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDYsIDMpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXRfYml0cygmcy0+cGIsIDgsIDMpOwpAQCAtNjc2LDE3ICs2NzgsMTcgQEAgdm9pZCBmZl9tc21w
ZWc0X2VuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50
IG4pCiAKIGF2X2NvbGQgdm9pZCBmZl9tc21wZWc0X2VuY29kZV9pbml0KE1QVk1haW5FbmNDb250
ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7Cisg
ICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIHN0YXRpYyBBVk9uY2UgaW5p
dF9zdGF0aWNfb25jZSA9IEFWX09OQ0VfSU5JVDsKIAotICAgIGZmX21zbXBlZzRfY29tbW9uX2lu
aXQocyk7CisgICAgZmZfbXNtcGVnNF9jb21tb25faW5pdCgmcy0+Yyk7CiAKLSAgICBpZiAocy0+
bXNtcGVnNF92ZXJzaW9uIDw9IE1TTVA0X1dNVjEpIHsKKyAgICBpZiAocy0+Yy5tc21wZWc0X3Zl
cnNpb24gPD0gTVNNUDRfV01WMSkgewogICAgICAgICBtLT5lbmNvZGVfcGljdHVyZV9oZWFkZXIg
PSBtc21wZWc0X2VuY29kZV9waWN0dXJlX2hlYWRlcjsKICAgICAgICAgcy0+ZW5jb2RlX21iICAg
ICAgICAgICAgID0gbXNtcGVnNF9lbmNvZGVfbWI7CiAgICAgfQogCi0gICAgaWYgKHMtPm1zbXBl
ZzRfdmVyc2lvbiA+PSBNU01QNF9XTVYxKSB7CisgICAgaWYgKHMtPmMubXNtcGVnNF92ZXJzaW9u
ID49IE1TTVA0X1dNVjEpIHsKICAgICAgICAgcy0+bWluX3Fjb2VmZiA9IC0yNTU7CiAgICAgICAg
IHMtPm1heF9xY29lZmYgPSAgMjU1OwogICAgIH0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXNt
cGVnNGVuYy5oIGIvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmgKaW5kZXggYmNlMTI2NWJiNS4uMTY3
NjAwZjAxZiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmgKKysrIGIvbGliYXZj
b2RlYy9tc21wZWc0ZW5jLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBNU01Q
RUc0RW5jQ29udGV4dCB7CiAgICAgdW5zaWduZWQgYWNfc3RhdHNbMl1bMl1bTUFYX0xFVkVMICsg
MV1bTUFYX1JVTiArIDFdWzJdOwogfSBNU01QRUc0RW5jQ29udGV4dDsKIAotc3RhdGljIGlubGlu
ZSBNU01QRUc0RW5jQ29udGV4dCAqbXB2X3RvX21zbXBlZzQoTXBlZ0VuY0NvbnRleHQgKnMpCitz
dGF0aWMgaW5saW5lIE1TTVBFRzRFbmNDb250ZXh0ICptcHZfdG9fbXNtcGVnNChNUFZFbmNDb250
ZXh0ICpzKQogewogICAgIC8vIE9ubHkgbGVnYWwgYmVjYXVzZSBubyBNU01QRUctNCBkZWNvZGVy
IHVzZXMgc2xpY2UtdGhyZWFkaW5nLgogICAgIHJldHVybiAoTVNNUEVHNEVuY0NvbnRleHQqKXM7
CiB9CiAKIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqbSk7
Ci12b2lkIGZmX21zbXBlZzRfZW5jb2RlX2V4dF9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpOwot
dm9pZCBmZl9tc21wZWc0X2VuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3Qg
KiBibG9jaywgaW50IG4pOwotdm9pZCBmZl9tc21wZWc0X2hhbmRsZV9zbGljZXMoTXBlZ0VuY0Nv
bnRleHQgKnMpOwordm9pZCBmZl9tc21wZWc0X2VuY29kZV9leHRfaGVhZGVyKE1QVkVuY0NvbnRl
eHQgKnMpOwordm9pZCBmZl9tc21wZWc0X2VuY29kZV9ibG9jayhNUFZFbmNDb250ZXh0ICogcywg
aW50MTZfdCAqIGJsb2NrLCBpbnQgbik7Cit2b2lkIGZmX21zbXBlZzRfaGFuZGxlX3NsaWNlcyhN
UFZFbmNDb250ZXh0ICpzKTsKIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfbW90aW9uKE1TTVBFRzRF
bmNDb250ZXh0ICptcywgaW50IG14LCBpbnQgbXkpOwogCiB2b2lkIGZmX21zbXBlZzRfY29kZTAx
MihQdXRCaXRDb250ZXh0ICpwYiwgaW50IG4pOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9wcGMv
bWVfY21wLmMgYi9saWJhdmNvZGVjL3BwYy9tZV9jbXAuYwppbmRleCA5MGYyMTUyNWQ3Li43NjRl
MzBkYTJhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3BwYy9tZV9jbXAuYworKysgYi9saWJhdmNv
ZGVjL3BwYy9tZV9jbXAuYwpAQCAtNTEsNyArNTEsNyBAQAogICAgIGl2ID0gdmVjX3ZzeF9sZCgx
LCAgcGl4KTtcCiB9CiAjZW5kaWYKLXN0YXRpYyBpbnQgc2FkMTZfeDJfYWx0aXZlYyhNcGVnRW5j
Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0
YXRpYyBpbnQgc2FkMTZfeDJfYWx0aXZlYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90
ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBpOwpAQCAtOTEsNyArOTEsNyBA
QCBzdGF0aWMgaW50IHNhZDE2X3gyX2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp
bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4XwogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50
IHNhZDE2X3kyX2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEs
IGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNhZDE2X3kyX2FsdGl2ZWMoTVBWRW5j
Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAg
ICBpbnQgaTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IHNhZDE2X3kyX2FsdGl2ZWMo
TXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4XwogICAg
IHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50IHNhZDE2X3h5Ml9hbHRpdmVjKE1wZWdFbmNDb250
ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGlj
IGludCBzYWQxNl94eTJfYWx0aXZlYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw
aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpbnQgaTsKQEAgLTIzMCw3ICsyMzAsNyBA
QCBzdGF0aWMgaW50IHNhZDE2X3h5Ml9hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1
aW50OF90ICpwaXgxLCBjb25zdCB1aW50OAogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50
IHNhZDE2X2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv
bnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNhZDE2X2FsdGl2ZWMoTVBWRW5jQ29udGV4
dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpbnQgaTsK
QEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgaW50IHNhZDE2X2FsdGl2ZWMoTXBlZ0VuY0NvbnRl
eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKgogICAgIHJldHVybiBz
OwogfQogCi1zdGF0aWMgaW50IHNhZDhfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbnQgc2FkOF9hbHRp
dmVjKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkK
IHsKICAgICBpbnQgaTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgaW50IHNhZDhfYWx0aXZl
YyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAq
cAogCiAvKiBTdW0gb2YgU3F1YXJlZCBFcnJvcnMgZm9yIGFuIDh4OCBibG9jaywgQWx0aVZlYy1l
bmhhbmNlZC4KICAqIEl0J3MgdGhlIHNhZDhfYWx0aXZlYyBjb2RlIGFib3ZlIHcvIHNxdWFyaW5n
IGFkZGVkLiAqLwotc3RhdGljIGludCBzc2U4X2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNv
bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNzZThf
YWx0aXZlYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50
OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50
IGgpCiB7CiAgICAgaW50IGk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGludCBzc2U4X2Fs
dGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4
X3QgKnAKIAogLyogU3VtIG9mIFNxdWFyZWQgRXJyb3JzIGZvciBhIDE2eDE2IGJsb2NrLCBBbHRp
VmVjLWVuaGFuY2VkLgogICogSXQncyB0aGUgc2FkMTZfYWx0aXZlYyBjb2RlIGFib3ZlIHcvIHNx
dWFyaW5nIGFkZGVkLiAqLwotc3RhdGljIGludCBzc2UxNl9hbHRpdmVjKE1wZWdFbmNDb250ZXh0
ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGlu
dCBzc2UxNl9hbHRpdmVjKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv
bnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IGk7CkBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIGlu
dCBzc2UxNl9hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj
b25zdCB1aW50OF90ICoKICAgICByZXR1cm4gczsKIH0KIAotc3RhdGljIGludCBoYWRhbWFyZDhf
ZGlmZjh4OF9hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpkc3QsCitz
dGF0aWMgaW50IGhhZGFtYXJkOF9kaWZmOHg4X2FsdGl2ZWMoTVBWRW5jQ29udGV4dCAqcywgY29u
c3QgdWludDhfdCAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IF9f
YXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkgc3VtOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHN0YXRp
YyBpbnQgaGFkYW1hcmQ4X2RpZmY4eDhfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3Qg
dWludDhfdCAqZHN0LAogICogT24gdGhlIDk3MCwgdGhlIGhhbmQtbWFkZSBSQSBpcyBzdGlsbCBh
IHdpbiAoYXJvdW5kIDY5MCB2cy4gYXJvdW5kIDc4MCksCiAgKiBidXQgeGxjIGdvZXMgdG8gYXJv
dW5kIDY2MCBvbiB0aGUgcmVndWxhciBDIGNvZGUuLi4KICAqLwotc3RhdGljIGludCBoYWRhbWFy
ZDhfZGlmZjE2eDhfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqZHN0
LAorc3RhdGljIGludCBoYWRhbWFyZDhfZGlmZjE2eDhfYWx0aXZlYyhNUFZFbmNDb250ZXh0ICpz
LCBjb25zdCB1aW50OF90ICpkc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAg
aW50IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkgc3VtOwpAQCAtNzA5LDcgKzcwOSw3IEBA
IHN0YXRpYyBpbnQgaGFkYW1hcmQ4X2RpZmYxNng4X2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnMs
IGNvbnN0IHVpbnQ4X3QgKmRzdCwKICAgICByZXR1cm4gc3VtOwogfQogCi1zdGF0aWMgaW50IGhh
ZGFtYXJkOF9kaWZmMTZfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAq
ZHN0LAorc3RhdGljIGludCBoYWRhbWFyZDhfZGlmZjE2X2FsdGl2ZWMoTVBWRW5jQ29udGV4dCAq
cywgY29uc3QgdWludDhfdCAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBp
bnQgc2NvcmUgPSBoYWRhbWFyZDhfZGlmZjE2eDhfYWx0aXZlYyhzLCBkc3QsIHNyYywgc3RyaWRl
LCA4KTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmF0ZWNvbnRyb2wuYyBiL2xpYmF2Y29kZWMv
cmF0ZWNvbnRyb2wuYwppbmRleCBiMTMxZjYxYjcwLi5kNjBlMTQyNTJlIDEwMDY0NAotLS0gYS9s
aWJhdmNvZGVjL3JhdGVjb250cm9sLmMKKysrIGIvbGliYXZjb2RlYy9yYXRlY29udHJvbC5jCkBA
IC0zNywyMCArMzcsMjAgQEAKIAogdm9pZCBmZl93cml0ZV9wYXNzMV9zdGF0cyhNUFZNYWluRW5j
Q29udGV4dCAqY29uc3QgbSkKIHsKLSAgICBjb25zdCBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9
ICZtLT5zOwotICAgIHNucHJpbnRmKHMtPmF2Y3R4LT5zdGF0c19vdXQsIDI1NiwKKyAgICBjb25z
dCBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgc25wcmludGYocy0+Yy5hdmN0
eC0+c3RhdHNfb3V0LCAyNTYsCiAgICAgICAgICAgICAgImluOiVkIG91dDolZCB0eXBlOiVkIHE6
JWQgaXRleDolZCBwdGV4OiVkIG12OiVkIG1pc2M6JWQgIgogICAgICAgICAgICAgICJmY29kZTol
ZCBiY29kZTolZCBtYy12YXI6JSJQUklkNjQiIHZhcjolIlBSSWQ2NCIgaWNvdW50OiVkIGhiaXRz
OiVkO1xuIiwKLSAgICAgICAgICAgICBzLT5jdXJfcGljLnB0ci0+ZGlzcGxheV9waWN0dXJlX251
bWJlciwKLSAgICAgICAgICAgICBzLT5jdXJfcGljLnB0ci0+Y29kZWRfcGljdHVyZV9udW1iZXIs
Ci0gICAgICAgICAgICAgcy0+cGljdF90eXBlLAotICAgICAgICAgICAgIHMtPmN1cl9waWMucHRy
LT5mLT5xdWFsaXR5LAorICAgICAgICAgICAgIHMtPmMuY3VyX3BpYy5wdHItPmRpc3BsYXlfcGlj
dHVyZV9udW1iZXIsCisgICAgICAgICAgICAgcy0+Yy5jdXJfcGljLnB0ci0+Y29kZWRfcGljdHVy
ZV9udW1iZXIsCisgICAgICAgICAgICAgcy0+Yy5waWN0X3R5cGUsCisgICAgICAgICAgICAgcy0+
Yy5jdXJfcGljLnB0ci0+Zi0+cXVhbGl0eSwKICAgICAgICAgICAgICBzLT5pX3RleF9iaXRzLAog
ICAgICAgICAgICAgIHMtPnBfdGV4X2JpdHMsCiAgICAgICAgICAgICAgcy0+bXZfYml0cywKICAg
ICAgICAgICAgICBzLT5taXNjX2JpdHMsCi0gICAgICAgICAgICAgcy0+Zl9jb2RlLAotICAgICAg
ICAgICAgIHMtPmJfY29kZSwKKyAgICAgICAgICAgICBzLT5jLmZfY29kZSwKKyAgICAgICAgICAg
ICBzLT5jLmJfY29kZSwKICAgICAgICAgICAgICBtLT5tY19tYl92YXJfc3VtLAogICAgICAgICAg
ICAgIG0tPm1iX3Zhcl9zdW0sCiAgICAgICAgICAgICAgcy0+aV9jb3VudCwKQEAgLTEwNCw5ICsx
MDQsOSBAQCBzdGF0aWMgZG91YmxlIGJpdHMycXBfY2Iodm9pZCAqcmNlLCBkb3VibGUgcXApCiAK
IHN0YXRpYyBkb3VibGUgZ2V0X2RpZmZfbGltaXRlZF9xKE1QVk1haW5FbmNDb250ZXh0ICptLCBj
b25zdCBSYXRlQ29udHJvbEVudHJ5ICpyY2UsIGRvdWJsZSBxKQogewotICAgIE1wZWdFbmNDb250
ZXh0ICAgICAqY29uc3QgICBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAgICAgICpjb25z
dCAgIHMgPSAmbS0+czsKICAgICBSYXRlQ29udHJvbENvbnRleHQgKmNvbnN0IHJjYyA9ICZtLT5y
Y19jb250ZXh0OwotICAgIEFWQ29kZWNDb250ZXh0ICphICAgICAgICAgPSBzLT5hdmN0eDsKKyAg
ICBBVkNvZGVjQ29udGV4dCAgICAgKmNvbnN0ICAgYSA9IHMtPmMuYXZjdHg7CiAgICAgY29uc3Qg
aW50IHBpY3RfdHlwZSAgICAgICA9IHJjZS0+bmV3X3BpY3RfdHlwZTsKICAgICBjb25zdCBkb3Vi
bGUgbGFzdF9wX3EgICAgID0gcmNjLT5sYXN0X3FzY2FsZV9mb3JbQVZfUElDVFVSRV9UWVBFX1Bd
OwogICAgIGNvbnN0IGRvdWJsZSBsYXN0X25vbl9iX3EgPSByY2MtPmxhc3RfcXNjYWxlX2Zvclty
Y2MtPmxhc3Rfbm9uX2JfcGljdF90eXBlXTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgZG91
YmxlIGdldF9kaWZmX2xpbWl0ZWRfcShNUFZNYWluRW5jQ29udGV4dCAqbSwgY29uc3QgUmF0ZUNv
bnRyb2xFbnRyeSAqcgogICovCiBzdGF0aWMgdm9pZCBnZXRfcW1pbm1heChpbnQgKnFtaW5fcmV0
LCBpbnQgKnFtYXhfcmV0LCBNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IHBpY3RfdHlw
ZSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0Nv
bnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBpbnQgcW1pbiA9IG0tPmxtaW47CiAgICAgaW50
IHFtYXggPSBtLT5sbWF4OwogCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBzdGF0aWMgdm9pZCBnZXRf
cW1pbm1heChpbnQgKnFtaW5fcmV0LCBpbnQgKnFtYXhfcmV0LCBNUFZNYWluRW5jQ29udGV4dCAq
Y29uc3QgbQogCiAgICAgc3dpdGNoIChwaWN0X3R5cGUpIHsKICAgICBjYXNlIEFWX1BJQ1RVUkVf
VFlQRV9COgotICAgICAgICBxbWluID0gKGludCkocW1pbiAqIEZGQUJTKHMtPmF2Y3R4LT5iX3F1
YW50X2ZhY3RvcikgKyBzLT5hdmN0eC0+Yl9xdWFudF9vZmZzZXQgKyAwLjUpOwotICAgICAgICBx
bWF4ID0gKGludCkocW1heCAqIEZGQUJTKHMtPmF2Y3R4LT5iX3F1YW50X2ZhY3RvcikgKyBzLT5h
dmN0eC0+Yl9xdWFudF9vZmZzZXQgKyAwLjUpOworICAgICAgICBxbWluID0gKGludCkocW1pbiAq
IEZGQUJTKHMtPmMuYXZjdHgtPmJfcXVhbnRfZmFjdG9yKSArIHMtPmMuYXZjdHgtPmJfcXVhbnRf
b2Zmc2V0ICsgMC41KTsKKyAgICAgICAgcW1heCA9IChpbnQpKHFtYXggKiBGRkFCUyhzLT5jLmF2
Y3R4LT5iX3F1YW50X2ZhY3RvcikgKyBzLT5jLmF2Y3R4LT5iX3F1YW50X29mZnNldCArIDAuNSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfUElDVFVSRV9UWVBFX0k6Ci0gICAgICAgIHFt
aW4gPSAoaW50KShxbWluICogRkZBQlMocy0+YXZjdHgtPmlfcXVhbnRfZmFjdG9yKSArIHMtPmF2
Y3R4LT5pX3F1YW50X29mZnNldCArIDAuNSk7Ci0gICAgICAgIHFtYXggPSAoaW50KShxbWF4ICog
RkZBQlMocy0+YXZjdHgtPmlfcXVhbnRfZmFjdG9yKSArIHMtPmF2Y3R4LT5pX3F1YW50X29mZnNl
dCArIDAuNSk7CisgICAgICAgIHFtaW4gPSAoaW50KShxbWluICogRkZBQlMocy0+Yy5hdmN0eC0+
aV9xdWFudF9mYWN0b3IpICsgcy0+Yy5hdmN0eC0+aV9xdWFudF9vZmZzZXQgKyAwLjUpOworICAg
ICAgICBxbWF4ID0gKGludCkocW1heCAqIEZGQUJTKHMtPmMuYXZjdHgtPmlfcXVhbnRfZmFjdG9y
KSArIHMtPmMuYXZjdHgtPmlfcXVhbnRfb2Zmc2V0ICsgMC41KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBzdGF0aWMgdm9pZCBnZXRfcW1pbm1heChpbnQg
KnFtaW5fcmV0LCBpbnQgKnFtYXhfcmV0LCBNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbQogc3Rh
dGljIGRvdWJsZSBtb2RpZnlfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25z
dCBSYXRlQ29udHJvbEVudHJ5ICpyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91
YmxlIHEsIGludCBmcmFtZV9udW0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgICAgICpjb25zdCAg
IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICAgICAgKmNvbnN0ICAgcyA9ICZtLT5zOwog
ICAgIFJhdGVDb250cm9sQ29udGV4dCAqY29uc3QgcmNjID0gJm0tPnJjX2NvbnRleHQ7Ci0gICAg
Y29uc3QgZG91YmxlIGJ1ZmZlcl9zaXplID0gcy0+YXZjdHgtPnJjX2J1ZmZlcl9zaXplOwotICAg
IGNvbnN0IGRvdWJsZSBmcHMgICAgICAgICA9IGdldF9mcHMocy0+YXZjdHgpOwotICAgIGNvbnN0
IGRvdWJsZSBtaW5fcmF0ZSAgICA9IHMtPmF2Y3R4LT5yY19taW5fcmF0ZSAvIGZwczsKLSAgICBj
b25zdCBkb3VibGUgbWF4X3JhdGUgICAgPSBzLT5hdmN0eC0+cmNfbWF4X3JhdGUgLyBmcHM7Cisg
ICAgY29uc3QgZG91YmxlIGJ1ZmZlcl9zaXplID0gcy0+Yy5hdmN0eC0+cmNfYnVmZmVyX3NpemU7
CisgICAgY29uc3QgZG91YmxlIGZwcyAgICAgICAgID0gZ2V0X2ZwcyhzLT5jLmF2Y3R4KTsKKyAg
ICBjb25zdCBkb3VibGUgbWluX3JhdGUgICAgPSBzLT5jLmF2Y3R4LT5yY19taW5fcmF0ZSAvIGZw
czsKKyAgICBjb25zdCBkb3VibGUgbWF4X3JhdGUgICAgPSBzLT5jLmF2Y3R4LT5yY19tYXhfcmF0
ZSAvIGZwczsKICAgICBjb25zdCBpbnQgcGljdF90eXBlICAgICAgPSByY2UtPm5ld19waWN0X3R5
cGU7CiAgICAgaW50IHFtaW4sIHFtYXg7CiAKQEAgLTIwNiwxMSArMjA2LDExIEBAIHN0YXRpYyBk
b3VibGUgbW9kaWZ5X3FzY2FsZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgUmF0
ZUNvbnRyb2xFbnRyeSAqCiAKICAgICAgICAgICAgIHFfbGltaXQgPSBiaXRzMnFwKHJjZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZGTUFYKChtaW5fcmF0ZSAtIGJ1ZmZlcl9zaXpl
ICsgcmNjLT5idWZmZXJfaW5kZXgpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMtPmF2Y3R4LT5yY19taW5fdmJ2X292ZXJmbG93X3VzZSwgMSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hdmN0eC0+cmNfbWluX3Zidl9vdmVyZmxvd191
c2UsIDEpKTsKIAogICAgICAgICAgICAgaWYgKHEgPiBxX2xpbWl0KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JDKQotICAgICAgICAgICAgICAgICAg
ICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywKKyAgICAgICAgICAgICAgICBpZiAocy0+
Yy5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19SQykKKyAgICAgICAgICAgICAgICAgICAgYXZfbG9n
KHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs
aW1pdGluZyBRUCAlZiAtPiAlZlxuIiwgcSwgcV9saW1pdCk7CiAgICAgICAgICAgICAgICAgcSA9
IHFfbGltaXQ7CiAgICAgICAgICAgICB9CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0aWMgZG91
YmxlIG1vZGlmeV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IFJhdGVD
b250cm9sRW50cnkgKgogCiAgICAgICAgICAgICBxX2xpbWl0ID0gYml0czJxcChyY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGRk1BWChyY2MtPmJ1ZmZlcl9pbmRleCAqCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5hdmN0eC0+cmNfbWF4X2F2YWlsYWJs
ZV92YnZfdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hdmN0
eC0+cmNfbWF4X2F2YWlsYWJsZV92YnZfdXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSkpOwogICAgICAgICAgICAgaWYgKHEgPCBxX2xpbWl0KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JDKQotICAgICAgICAgICAgICAg
ICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywKKyAgICAgICAgICAgICAgICBpZiAo
cy0+Yy5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19SQykKKyAgICAgICAgICAgICAgICAgICAgYXZf
bG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJsaW1pdGluZyBRUCAlZiAtPiAlZlxuIiwgcSwgcV9saW1pdCk7CiAgICAgICAgICAgICAgICAg
cSA9IHFfbGltaXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgZmZfZGxv
ZyhzLT5hdmN0eCwgInE6JWYgbWF4OiVmIG1pbjolZiBzaXplOiVmIGluZGV4OiVmIGFncjolZlxu
IiwKKyAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICJxOiVmIG1heDolZiBtaW46JWYgc2l6ZTolZiBp
bmRleDolZiBhZ3I6JWZcbiIsCiAgICAgICAgICAgICBxLCBtYXhfcmF0ZSwgbWluX3JhdGUsIGJ1
ZmZlcl9zaXplLCByY2MtPmJ1ZmZlcl9pbmRleCwKICAgICAgICAgICAgIHJjYy0+YnVmZmVyX2Fn
Z3Jlc3Npdml0eSk7CiAgICAgaWYgKHJjYy0+cXNxdWlzaCA9PSAwLjAgfHwgcW1pbiA9PSBxbWF4
KSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCBzdGF0aWMgZG91YmxlIG1vZGlmeV9xc2NhbGUoTVBW
TWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IFJhdGVDb250cm9sRW50cnkgKgogc3RhdGlj
IGRvdWJsZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBSYXRlQ29udHJv
bEVudHJ5ICpyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJhdGVfZmFjdG9y
LCBpbnQgZnJhbWVfbnVtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7
CisgICAgTVBWRW5jQ29udGV4dCAgKmNvbnN0IHMgPSAmbS0+czsKICAgICBSYXRlQ29udHJvbENv
bnRleHQgKnJjYyA9ICZtLT5yY19jb250ZXh0OwotICAgIEFWQ29kZWNDb250ZXh0ICphICAgICAg
ID0gcy0+YXZjdHg7CisgICAgQVZDb2RlY0NvbnRleHQgKmNvbnN0IGEgPSBzLT5jLmF2Y3R4Owog
ICAgIGNvbnN0IGludCBwaWN0X3R5cGUgICAgID0gcmNlLT5uZXdfcGljdF90eXBlOwotICAgIGNv
bnN0IGRvdWJsZSBtYl9udW0gICAgID0gcy0+bWJfbnVtOworICAgIGNvbnN0IGRvdWJsZSBtYl9u
dW0gICAgID0gcy0+Yy5tYl9udW07CiAgICAgZG91YmxlIHEsIGJpdHM7CiAgICAgaW50IGk7CiAK
QEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgZG91YmxlIGdldF9xc2NhbGUoTVBWTWFpbkVuY0Nv
bnRleHQgKmNvbnN0IG0sIFJhdGVDb250cm9sRW50cnkgKnJjZSwKIAogICAgIGJpdHMgPSBhdl9l
eHByX2V2YWwocmNjLT5yY19lcV9ldmFsLCBjb25zdF92YWx1ZXMsIHJjZSk7CiAgICAgaWYgKGlz
bmFuKGJpdHMpKSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJy
b3IgZXZhbHVhdGluZyByY19lcSBcIiVzXCJcbiIsIHJjYy0+cmNfZXEpOworICAgICAgICBhdl9s
b2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJyb3IgZXZhbHVhdGluZyByY19lcSBcIiVz
XCJcbiIsIHJjYy0+cmNfZXEpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0zMTEs
OCArMzExLDggQEAgc3RhdGljIGRvdWJsZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpj
b25zdCBtLCBSYXRlQ29udHJvbEVudHJ5ICpyY2UsCiAgICAgYml0cyArPSAxLjA7IC8vIGF2b2lk
IDEvMCBpc3N1ZXMKIAogICAgIC8qIHVzZXIgb3ZlcnJpZGUgKi8KLSAgICBmb3IgKGkgPSAwOyBp
IDwgcy0+YXZjdHgtPnJjX292ZXJyaWRlX2NvdW50OyBpKyspIHsKLSAgICAgICAgUmNPdmVycmlk
ZSAqcmNvID0gcy0+YXZjdHgtPnJjX292ZXJyaWRlOworICAgIGZvciAoaSA9IDA7IGkgPCBzLT5j
LmF2Y3R4LT5yY19vdmVycmlkZV9jb3VudDsgaSsrKSB7CisgICAgICAgIFJjT3ZlcnJpZGUgKnJj
byA9IHMtPmMuYXZjdHgtPnJjX292ZXJyaWRlOwogICAgICAgICBpZiAocmNvW2ldLnN0YXJ0X2Zy
YW1lID4gZnJhbWVfbnVtKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChyY29b
aV0uZW5kX2ZyYW1lIDwgZnJhbWVfbnVtKQpAQCAtMzI3LDEwICszMjcsMTAgQEAgc3RhdGljIGRv
dWJsZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBSYXRlQ29udHJvbEVu
dHJ5ICpyY2UsCiAgICAgcSA9IGJpdHMycXAocmNlLCBiaXRzKTsKIAogICAgIC8qIEkvQiBkaWZm
ZXJlbmNlICovCi0gICAgaWYgKHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSAmJiBzLT5h
dmN0eC0+aV9xdWFudF9mYWN0b3IgPCAwLjApCi0gICAgICAgIHEgPSAtcSAqIHMtPmF2Y3R4LT5p
X3F1YW50X2ZhY3RvciArIHMtPmF2Y3R4LT5pX3F1YW50X29mZnNldDsKLSAgICBlbHNlIGlmIChw
aWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgJiYgcy0+YXZjdHgtPmJfcXVhbnRfZmFjdG9y
IDwgMC4wKQotICAgICAgICBxID0gLXEgKiBzLT5hdmN0eC0+Yl9xdWFudF9mYWN0b3IgKyBzLT5h
dmN0eC0+Yl9xdWFudF9vZmZzZXQ7CisgICAgaWYgKHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZ
UEVfSSAmJiBzLT5jLmF2Y3R4LT5pX3F1YW50X2ZhY3RvciA8IDAuMCkKKyAgICAgICAgcSA9IC1x
ICogcy0+Yy5hdmN0eC0+aV9xdWFudF9mYWN0b3IgKyBzLT5jLmF2Y3R4LT5pX3F1YW50X29mZnNl
dDsKKyAgICBlbHNlIGlmIChwaWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgJiYgcy0+Yy5h
dmN0eC0+Yl9xdWFudF9mYWN0b3IgPCAwLjApCisgICAgICAgIHEgPSAtcSAqIHMtPmMuYXZjdHgt
PmJfcXVhbnRfZmFjdG9yICsgcy0+Yy5hdmN0eC0+Yl9xdWFudF9vZmZzZXQ7CiAgICAgaWYgKHEg
PCAxKQogICAgICAgICBxID0gMTsKIApAQCAtMzQwLDEwICszNDAsMTAgQEAgc3RhdGljIGRvdWJs
ZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBSYXRlQ29udHJvbEVudHJ5
ICpyY2UsCiBzdGF0aWMgaW50IGluaXRfcGFzczIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0p
CiB7CiAgICAgUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25zdCByY2MgPSAmbS0+cmNfY29udGV4dDsK
LSAgICBNcGVnRW5jQ29udGV4dCAgICAgKmNvbnN0ICAgcyA9ICZtLT5zOwotICAgIEFWQ29kZWND
b250ZXh0ICphICAgICAgID0gcy0+YXZjdHg7CisgICAgTVBWRW5jQ29udGV4dCAgICAgICpjb25z
dCAgIHMgPSAmbS0+czsKKyAgICBBVkNvZGVjQ29udGV4dCAgICAgKmNvbnN0ICAgYSA9IHMtPmMu
YXZjdHg7CiAgICAgaW50IGksIHRvb2JpZzsKLSAgICBBVlJhdGlvbmFsIGZwcyAgICAgICAgID0g
Z2V0X2Zwc1Eocy0+YXZjdHgpOworICAgIEFWUmF0aW9uYWwgZnBzICAgICAgICAgPSBnZXRfZnBz
UShzLT5jLmF2Y3R4KTsKICAgICBkb3VibGUgY29tcGxleGl0eVs1XSAgID0geyAwIH07IC8vIGFw
cHJveGltYXRlIGJpdHMgYXQgcXVhbnQ9MQogICAgIHVpbnQ2NF90IGNvbnN0X2JpdHNbNV0gPSB7
IDAgfTsgLy8gcXVhbnRpemVyIGluZGVwZW5kZW50IGJpdHMKICAgICB1aW50NjRfdCBhbGxfY29u
c3RfYml0czsKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgaW50IGluaXRfcGFzczIoTVBWTWFp
bkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICAgICAgICAgICBjb25zdF9iaXRzW0FW
X1BJQ1RVUkVfVFlQRV9CXTsKIAogICAgIGlmIChhbGxfYXZhaWxhYmxlX2JpdHMgPCBhbGxfY29u
c3RfYml0cykgewotICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgInJlcXVl
c3RlZCBiaXRyYXRlIGlzIHRvbyBsb3dcbiIpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwg
QVZfTE9HX0VSUk9SLCAicmVxdWVzdGVkIGJpdHJhdGUgaXMgdG9vIGxvd1xuIik7CiAgICAgICAg
IHJldHVybiAtMTsKICAgICB9CiAKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgaW50IGluaXRf
cGFzczIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIGV4cGVjdGVkX2JpdHMg
PSAwOwogICAgICAgICByYXRlX2ZhY3RvciAgKz0gc3RlcDsKIAotICAgICAgICByY2MtPmJ1ZmZl
cl9pbmRleCA9IHMtPmF2Y3R4LT5yY19idWZmZXJfc2l6ZSAvIDI7CisgICAgICAgIHJjYy0+YnVm
ZmVyX2luZGV4ID0gcy0+Yy5hdmN0eC0+cmNfYnVmZmVyX3NpemUgLyAyOwogCiAgICAgICAgIC8q
IGZpbmQgcXNjYWxlICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByY2MtPm51bV9lbnRyaWVz
OyBpKyspIHsKQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IGluaXRfcGFzczIoTVBWTWFp
bkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICBleHBlY3RlZF9iaXRzICAgICArPSBi
aXRzOwogICAgICAgICB9CiAKLSAgICAgICAgZmZfZGxvZyhzLT5hdmN0eCwKKyAgICAgICAgZmZf
ZGxvZyhzLT5jLmF2Y3R4LAogICAgICAgICAgICAgICAgICJleHBlY3RlZF9iaXRzOiAlZiBhbGxf
YXZhaWxhYmxlX2JpdHM6ICVkIHJhdGVfZmFjdG9yOiAlZlxuIiwKICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9iaXRzLCAoaW50KWFsbF9hdmFpbGFibGVfYml0cywgcmF0ZV9mYWN0b3IpOwogICAg
ICAgICBpZiAoZXhwZWN0ZWRfYml0cyA+IGFsbF9hdmFpbGFibGVfYml0cykgewpAQCAtNDY3LDMy
ICs0NjcsMzIgQEAgc3RhdGljIGludCBpbml0X3Bhc3MyKE1QVk1haW5FbmNDb250ZXh0ICpjb25z
dCBtKQogICAgIC8qIGNoZWNrIGJpdHJhdGUgY2FsY3VsYXRpb25zIGFuZCBwcmludCBpbmZvICov
CiAgICAgcXNjYWxlX3N1bSA9IDAuMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgcmNjLT5udW1fZW50
cmllczsgaSsrKSB7Ci0gICAgICAgIGZmX2Rsb2cocy0+YXZjdHgsICJbbGF2YyByY10gZW50cnlb
JWRdLm5ld19xc2NhbGUgPSAlLjNmICBxcCA9ICUuM2ZcbiIsCisgICAgICAgIGZmX2Rsb2cocy0+
Yy5hdmN0eCwgIltsYXZjIHJjXSBlbnRyeVslZF0ubmV3X3FzY2FsZSA9ICUuM2YgIHFwID0gJS4z
ZlxuIiwKICAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgIHJjYy0+ZW50cnlbaV0u
bmV3X3FzY2FsZSwKICAgICAgICAgICAgICAgICByY2MtPmVudHJ5W2ldLm5ld19xc2NhbGUgLyBG
Rl9RUDJMQU1CREEpOwogICAgICAgICBxc2NhbGVfc3VtICs9IGF2X2NsaXAocmNjLT5lbnRyeVtp
XS5uZXdfcXNjYWxlIC8gRkZfUVAyTEFNQkRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy0+YXZjdHgtPnFtaW4sIHMtPmF2Y3R4LT5xbWF4KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMtPmMuYXZjdHgtPnFtaW4sIHMtPmMuYXZjdHgtPnFtYXgpOwogICAgIH0KICAg
ICBhdl9hc3NlcnQwKHRvb2JpZyA8PSA0MCk7Ci0gICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0df
REVCVUcsCisgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAg
IltsYXZjIHJjXSByZXF1ZXN0ZWQgYml0cmF0ZTogJSJQUklkNjQiIGJwcyAgZXhwZWN0ZWQgYml0
cmF0ZTogJSJQUklkNjQiIGJwc1xuIiwKICAgICAgICAgICAgbS0+Yml0X3JhdGUsCiAgICAgICAg
ICAgIChpbnQ2NF90KShleHBlY3RlZF9iaXRzIC8gKChkb3VibGUpYWxsX2F2YWlsYWJsZV9iaXRz
IC8gbS0+Yml0X3JhdGUpKSk7Ci0gICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfREVCVUcsCisg
ICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgIltsYXZjIHJj
XSBlc3RpbWF0ZWQgdGFyZ2V0IGF2ZXJhZ2UgcXA6ICUuM2ZcbiIsCiAgICAgICAgICAgIChmbG9h
dClxc2NhbGVfc3VtIC8gcmNjLT5udW1fZW50cmllcyk7CiAgICAgaWYgKHRvb2JpZyA9PSAwKSB7
Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0lORk8sCisgICAgICAgIGF2X2xvZyhz
LT5jLmF2Y3R4LCBBVl9MT0dfSU5GTywKICAgICAgICAgICAgICAgICJbbGF2YyByY10gVXNpbmcg
YWxsIG9mIHJlcXVlc3RlZCBiaXRyYXRlIGlzIG5vdCAiCiAgICAgICAgICAgICAgICAibmVjZXNz
YXJ5IGZvciB0aGlzIHZpZGVvIHdpdGggdGhlc2UgcGFyYW1ldGVycy5cbiIpOwogICAgIH0gZWxz
ZSBpZiAodG9vYmlnID09IDQwKSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VS
Uk9SLAorICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLAogICAgICAgICAg
ICAgICAgIltsYXZjIHJjXSBFcnJvcjogYml0cmF0ZSB0b28gbG93IGZvciB0aGlzIHZpZGVvICIK
ICAgICAgICAgICAgICAgICJ3aXRoIHRoZXNlIHBhcmFtZXRlcnMuXG4iKTsKICAgICAgICAgcmV0
dXJuIC0xOwogICAgIH0gZWxzZSBpZiAoZmFicyhleHBlY3RlZF9iaXRzIC8gYWxsX2F2YWlsYWJs
ZV9iaXRzIC0gMS4wKSA+IDAuMDEpIHsKLSAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0df
RVJST1IsCisgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAg
ICAgICAgICAiW2xhdmMgcmNdIEVycm9yOiAycGFzcyBjdXJ2ZSBmYWlsZWQgdG8gY29udmVyZ2Vc
biIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRp
YyBpbnQgaW5pdF9wYXNzMihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogYXZfY29sZCBp
bnQgZmZfcmF0ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7Ci0g
ICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICAq
Y29uc3QgcyA9ICZtLT5zOwogICAgIFJhdGVDb250cm9sQ29udGV4dCAqcmNjID0gJm0tPnJjX2Nv
bnRleHQ7CiAgICAgaW50IGksIHJlczsKICAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNv
bnN0X25hbWVzW10gPSB7CkBAIC01NDAsMTkgKzU0MCwxOSBAQCBhdl9jb2xkIGludCBmZl9yYXRl
X2NvbnRyb2xfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICB9OwogICAgIGVt
bXNfYygpOwogCi0gICAgaWYgKCFzLT5hdmN0eC0+cmNfbWF4X2F2YWlsYWJsZV92YnZfdXNlICYm
IHMtPmF2Y3R4LT5yY19idWZmZXJfc2l6ZSkgewotICAgICAgICBpZiAocy0+YXZjdHgtPnJjX21h
eF9yYXRlKSB7Ci0gICAgICAgICAgICBzLT5hdmN0eC0+cmNfbWF4X2F2YWlsYWJsZV92YnZfdXNl
ID0gYXZfY2xpcGYocy0+YXZjdHgtPnJjX21heF9yYXRlLyhzLT5hdmN0eC0+cmNfYnVmZmVyX3Np
emUqZ2V0X2ZwcyhzLT5hdmN0eCkpLCAxLjAvMywgMS4wKTsKKyAgICBpZiAoIXMtPmMuYXZjdHgt
PnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSAmJiBzLT5jLmF2Y3R4LT5yY19idWZmZXJfc2l6ZSkg
eworICAgICAgICBpZiAocy0+Yy5hdmN0eC0+cmNfbWF4X3JhdGUpIHsKKyAgICAgICAgICAgIHMt
PmMuYXZjdHgtPnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSA9IGF2X2NsaXBmKHMtPmMuYXZjdHgt
PnJjX21heF9yYXRlLyhzLT5jLmF2Y3R4LT5yY19idWZmZXJfc2l6ZSpnZXRfZnBzKHMtPmMuYXZj
dHgpKSwgMS4wLzMsIDEuMCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcy0+YXZjdHgt
PnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSA9IDEuMDsKKyAgICAgICAgICAgIHMtPmMuYXZjdHgt
PnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSA9IDEuMDsKICAgICB9CiAKICAgICByZXMgPSBhdl9l
eHByX3BhcnNlKCZyY2MtPnJjX2VxX2V2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICByY2Mt
PnJjX2VxID8gcmNjLT5yY19lcSA6ICJ0ZXhecUNvbXAiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3RfbmFtZXMsIGZ1bmMxX25hbWVzLCBmdW5jMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwsIE5VTEwsIDAsIHMtPmF2Y3R4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsIE5VTEwsIDAsIHMtPmMuYXZjdHgpOwogICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGF2
X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJyb3IgcGFyc2luZyByY19lcSBcIiVzXCJc
biIsIHJjYy0+cmNfZXEpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9S
LCAiRXJyb3IgcGFyc2luZyByY19lcSBcIiVzXCJcbiIsIHJjYy0+cmNfZXEpOwogICAgICAgICBy
ZXR1cm4gcmVzOwogICAgIH0KIApAQCAtNTY5LDE2ICs1NjksMTYgQEAgYXZfY29sZCBpbnQgZmZf
cmF0ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAKICAgICAgICAg
cmNjLT5sYXN0X3FzY2FsZV9mb3JbaV0gPSBGRl9RUDJMQU1CREEgKiA1OwogICAgIH0KLSAgICBy
Y2MtPmJ1ZmZlcl9pbmRleCA9IHMtPmF2Y3R4LT5yY19pbml0aWFsX2J1ZmZlcl9vY2N1cGFuY3k7
CisgICAgcmNjLT5idWZmZXJfaW5kZXggPSBzLT5jLmF2Y3R4LT5yY19pbml0aWFsX2J1ZmZlcl9v
Y2N1cGFuY3k7CiAgICAgaWYgKCFyY2MtPmJ1ZmZlcl9pbmRleCkKLSAgICAgICAgcmNjLT5idWZm
ZXJfaW5kZXggPSBzLT5hdmN0eC0+cmNfYnVmZmVyX3NpemUgKiAzIC8gNDsKKyAgICAgICAgcmNj
LT5idWZmZXJfaW5kZXggPSBzLT5jLmF2Y3R4LT5yY19idWZmZXJfc2l6ZSAqIDMgLyA0OwogCi0g
ICAgaWYgKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpIHsKKyAgICBpZiAo
cy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7CiAgICAgICAgIGludCBp
OwogICAgICAgICBjaGFyICpwOwogCiAgICAgICAgIC8qIGZpbmQgbnVtYmVyIG9mIHBpY3MgKi8K
LSAgICAgICAgcCA9IHMtPmF2Y3R4LT5zdGF0c19pbjsKKyAgICAgICAgcCA9IHMtPmMuYXZjdHgt
PnN0YXRzX2luOwogICAgICAgICBmb3IgKGkgPSAtMTsgcDsgaSsrKQogICAgICAgICAgICAgcCA9
IHN0cmNocihwICsgMSwgJzsnKTsKICAgICAgICAgaSArPSBtLT5tYXhfYl9mcmFtZXM7CkBAIC01
OTYsMTIgKzU5NiwxMiBAQCBhdl9jb2xkIGludCBmZl9yYXRlX2NvbnRyb2xfaW5pdChNUFZNYWlu
RW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAgICAgICAgICAgcmNlLT5waWN0X3R5cGUgID0gcmNl
LT5uZXdfcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX1A7CiAgICAgICAgICAgICByY2UtPnFz
Y2FsZSAgICAgPSByY2UtPm5ld19xc2NhbGUgICAgPSBGRl9RUDJMQU1CREEgKiAyOwotICAgICAg
ICAgICAgcmNlLT5taXNjX2JpdHMgID0gcy0+bWJfbnVtICsgMTA7Ci0gICAgICAgICAgICByY2Ut
Pm1iX3Zhcl9zdW0gPSBzLT5tYl9udW0gKiAxMDA7CisgICAgICAgICAgICByY2UtPm1pc2NfYml0
cyAgPSBzLT5jLm1iX251bSArIDEwOworICAgICAgICAgICAgcmNlLT5tYl92YXJfc3VtID0gcy0+
Yy5tYl9udW0gKiAxMDA7CiAgICAgICAgIH0KIAogICAgICAgICAvKiByZWFkIHN0YXRzICovCi0g
ICAgICAgIHAgPSBzLT5hdmN0eC0+c3RhdHNfaW47CisgICAgICAgIHAgPSBzLT5jLmF2Y3R4LT5z
dGF0c19pbjsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJjYy0+bnVtX2VudHJpZXMgLSBtLT5t
YXhfYl9mcmFtZXM7IGkrKykgewogICAgICAgICAgICAgUmF0ZUNvbnRyb2xFbnRyeSAqcmNlOwog
ICAgICAgICAgICAgaW50IHBpY3R1cmVfbnVtYmVyOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGF2X2Nv
bGQgaW50IGZmX3JhdGVfY29udHJvbF9pbml0KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQog
ICAgICAgICAgICAgICAgICAgICAgICAgJnJjZS0+bWNfbWJfdmFyX3N1bSwgJnJjZS0+bWJfdmFy
X3N1bSwKICAgICAgICAgICAgICAgICAgICAgICAgICZyY2UtPmlfY291bnQsICZyY2UtPmhlYWRl
cl9iaXRzKTsKICAgICAgICAgICAgIGlmIChlICE9IDEzKSB7Ci0gICAgICAgICAgICAgICAgYXZf
bG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmMu
YXZjdHgsIEFWX0xPR19FUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRpc3RpY3Mg
YXJlIGRhbWFnZWQgYXQgbGluZSAlZCwgcGFyc2VyIG91dD0lZFxuIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgaSwgZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjQ0LDIxICs2
NDQsMjEgQEAgYXZfY29sZCBpbnQgZmZfcmF0ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0pCiAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KIAotICAgIGlmICgh
KHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpKSB7CisgICAgaWYgKCEocy0+
Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSkgewogICAgICAgICByY2MtPnNo
b3J0X3Rlcm1fcXN1bSAgID0gMC4wMDE7CiAgICAgICAgIHJjYy0+c2hvcnRfdGVybV9xY291bnQg
PSAwLjAwMTsKIAogICAgICAgICByY2MtPnBhc3MxX3JjX2VxX291dHB1dF9zdW0gPSAwLjAwMTsK
ICAgICAgICAgcmNjLT5wYXNzMV93YW50ZWRfYml0cyAgICAgID0gMC4wMDE7CiAKLSAgICAgICAg
aWYgKHMtPmF2Y3R4LT5xYmx1ciA+IDEuMCkgewotICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4
LCBBVl9MT0dfRVJST1IsICJxYmx1ciB0b28gbGFyZ2VcbiIpOworICAgICAgICBpZiAocy0+Yy5h
dmN0eC0+cWJsdXIgPiAxLjApIHsKKyAgICAgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9M
T0dfRVJST1IsICJxYmx1ciB0b28gbGFyZ2VcbiIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwog
ICAgICAgICB9CiAgICAgICAgIC8qIGluaXQgc3R1ZmYgd2l0aCB0aGUgdXNlciBzcGVjaWZpZWQg
Y29tcGxleGl0eSAqLwogICAgICAgICBpZiAocmNjLT5pbml0aWFsX2NwbHgpIHsKICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCA2MCAqIDMwOyBpKyspIHsKLSAgICAgICAgICAgICAgICBkb3Vi
bGUgYml0cyA9IHJjYy0+aW5pdGlhbF9jcGx4ICogKGkgLyAxMDAwMC4wICsgMS4wKSAqIHMtPm1i
X251bTsKKyAgICAgICAgICAgICAgICBkb3VibGUgYml0cyA9IHJjYy0+aW5pdGlhbF9jcGx4ICog
KGkgLyAxMDAwMC4wICsgMS4wKSAqIHMtPmMubWJfbnVtOwogICAgICAgICAgICAgICAgIFJhdGVD
b250cm9sRW50cnkgcmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKGkgJSAoKG0tPmdvcF9zaXpl
ICsgMykgLyA0KSA9PSAwKQpAQCAtNjY5LDE2ICs2NjksMTYgQEAgYXZfY29sZCBpbnQgZmZfcmF0
ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICAg
ICAgICAgIHJjZS5waWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfUDsKIAogICAgICAgICAgICAg
ICAgIHJjZS5uZXdfcGljdF90eXBlID0gcmNlLnBpY3RfdHlwZTsKLSAgICAgICAgICAgICAgICBy
Y2UubWNfbWJfdmFyX3N1bSA9IGJpdHMgKiBzLT5tYl9udW0gLyAxMDAwMDA7Ci0gICAgICAgICAg
ICAgICAgcmNlLm1iX3Zhcl9zdW0gICAgPSBzLT5tYl9udW07CisgICAgICAgICAgICAgICAgcmNl
Lm1jX21iX3Zhcl9zdW0gPSBiaXRzICogcy0+Yy5tYl9udW0gLyAxMDAwMDA7CisgICAgICAgICAg
ICAgICAgcmNlLm1iX3Zhcl9zdW0gICAgPSBzLT5jLm1iX251bTsKIAogICAgICAgICAgICAgICAg
IHJjZS5xc2NhbGUgICAgPSBGRl9RUDJMQU1CREEgKiAyOwogICAgICAgICAgICAgICAgIHJjZS5m
X2NvZGUgICAgPSAyOwogICAgICAgICAgICAgICAgIHJjZS5iX2NvZGUgICAgPSAxOwogICAgICAg
ICAgICAgICAgIHJjZS5taXNjX2JpdHMgPSAxOwogCi0gICAgICAgICAgICAgICAgaWYgKHMtPnBp
Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICAgICAgICAgICAgICByY2Uu
aV9jb3VudCAgICA9IHMtPm1iX251bTsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5waWN0X3R5
cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpIHsKKyAgICAgICAgICAgICAgICAgICAgcmNlLmlfY291
bnQgICAgPSBzLT5jLm1iX251bTsKICAgICAgICAgICAgICAgICAgICAgcmNlLmlfdGV4X2JpdHMg
PSBiaXRzOwogICAgICAgICAgICAgICAgICAgICByY2UucF90ZXhfYml0cyA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIHJjZS5tdl9iaXRzICAgID0gMDsKQEAgLTY5NiwxMyArNjk2LDEzIEBAIGF2
X2NvbGQgaW50IGZmX3JhdGVfY29udHJvbF9pbml0KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt
KQogICAgICAgICAgICAgICAgIGdldF9xc2NhbGUobSwgJnJjZSwgcmNjLT5wYXNzMV93YW50ZWRf
Yml0cyAvIHJjYy0+cGFzczFfcmNfZXFfb3V0cHV0X3N1bSwgaSk7CiAKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRSBtaXNiZWhhdmVzIGEgbGl0dGxlIGZvciB2YXJpYWJsZSBmcHMKLSAgICAgICAg
ICAgICAgICByY2MtPnBhc3MxX3dhbnRlZF9iaXRzICs9IG0tPmJpdF9yYXRlIC8gZ2V0X2Zwcyhz
LT5hdmN0eCk7CisgICAgICAgICAgICAgICAgcmNjLT5wYXNzMV93YW50ZWRfYml0cyArPSBtLT5i
aXRfcmF0ZSAvIGdldF9mcHMocy0+Yy5hdmN0eCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAocy0+YWRhcHRpdmVfcXVhbnQpIHsKLSAgICAgICAgdW5zaWduZWQg
bWJfYXJyYXlfc2l6ZSA9IHMtPm1iX3N0cmlkZSAqIHMtPm1iX2hlaWdodDsKKyAgICAgICAgdW5z
aWduZWQgbWJfYXJyYXlfc2l6ZSA9IHMtPmMubWJfc3RyaWRlICogcy0+Yy5tYl9oZWlnaHQ7CiAK
ICAgICAgICAgcmNjLT5jcGx4X3RhYiA9IGF2X21hbGxvY19hcnJheShtYl9hcnJheV9zaXplLCAy
ICogc2l6ZW9mKHJjYy0+Y3BseF90YWIpKTsKICAgICAgICAgaWYgKCFyY2MtPmNwbHhfdGFiKQpA
QCAtNzI2LDE0ICs3MjYsMTQgQEAgYXZfY29sZCB2b2lkIGZmX3JhdGVfY29udHJvbF91bmluaXQo
UmF0ZUNvbnRyb2xDb250ZXh0ICpyY2MpCiAKIGludCBmZl92YnZfdXBkYXRlKE1QVk1haW5FbmND
b250ZXh0ICptLCBpbnQgZnJhbWVfc2l6ZSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAgICAgKmNv
bnN0ICAgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgICAgICAqY29uc3QgICBzID0gJm0t
PnM7CiAgICAgUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25zdCByY2MgPSAmbS0+cmNfY29udGV4dDsK
LSAgICBjb25zdCBkb3VibGUgZnBzICAgICAgICA9IGdldF9mcHMocy0+YXZjdHgpOwotICAgIGNv
bnN0IGludCBidWZmZXJfc2l6ZSAgID0gcy0+YXZjdHgtPnJjX2J1ZmZlcl9zaXplOwotICAgIGNv
bnN0IGRvdWJsZSBtaW5fcmF0ZSAgID0gcy0+YXZjdHgtPnJjX21pbl9yYXRlIC8gZnBzOwotICAg
IGNvbnN0IGRvdWJsZSBtYXhfcmF0ZSAgID0gcy0+YXZjdHgtPnJjX21heF9yYXRlIC8gZnBzOwor
ICAgIGNvbnN0IGRvdWJsZSBmcHMgICAgICAgID0gZ2V0X2ZwcyhzLT5jLmF2Y3R4KTsKKyAgICBj
b25zdCBpbnQgYnVmZmVyX3NpemUgICA9IHMtPmMuYXZjdHgtPnJjX2J1ZmZlcl9zaXplOworICAg
IGNvbnN0IGRvdWJsZSBtaW5fcmF0ZSAgID0gcy0+Yy5hdmN0eC0+cmNfbWluX3JhdGUgLyBmcHM7
CisgICAgY29uc3QgZG91YmxlIG1heF9yYXRlICAgPSBzLT5jLmF2Y3R4LT5yY19tYXhfcmF0ZSAv
IGZwczsKIAotICAgIGZmX2Rsb2cocy0+YXZjdHgsICIlZCAlZiAlZCAlZiAlZlxuIiwKKyAgICBm
Zl9kbG9nKHMtPmMuYXZjdHgsICIlZCAlZiAlZCAlZiAlZlxuIiwKICAgICAgICAgICAgIGJ1ZmZl
cl9zaXplLCByY2MtPmJ1ZmZlcl9pbmRleCwgZnJhbWVfc2l6ZSwgbWluX3JhdGUsIG1heF9yYXRl
KTsKIAogICAgIGlmIChidWZmZXJfc2l6ZSkgewpAQCAtNzQxLDkgKzc0MSw5IEBAIGludCBmZl92
YnZfdXBkYXRlKE1QVk1haW5FbmNDb250ZXh0ICptLCBpbnQgZnJhbWVfc2l6ZSkKIAogICAgICAg
ICByY2MtPmJ1ZmZlcl9pbmRleCAtPSBmcmFtZV9zaXplOwogICAgICAgICBpZiAocmNjLT5idWZm
ZXJfaW5kZXggPCAwKSB7Ci0gICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJP
UiwgInJjIGJ1ZmZlciB1bmRlcmZsb3dcbiIpOwotICAgICAgICAgICAgaWYgKGZyYW1lX3NpemUg
PiBtYXhfcmF0ZSAmJiBzLT5xc2NhbGUgPT0gcy0+YXZjdHgtPnFtYXgpIHsKLSAgICAgICAgICAg
ICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIm1heCBiaXRyYXRlIHBvc3NpYmx5
IHRvbyBzbWFsbCBvciB0cnkgdHJlbGxpcyB3aXRoIGxhcmdlIGxtYXggb3IgaW5jcmVhc2UgcW1h
eFxuIik7CisgICAgICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAicmMg
YnVmZmVyIHVuZGVyZmxvd1xuIik7CisgICAgICAgICAgICBpZiAoZnJhbWVfc2l6ZSA+IG1heF9y
YXRlICYmIHMtPmMucXNjYWxlID09IHMtPmMuYXZjdHgtPnFtYXgpIHsKKyAgICAgICAgICAgICAg
ICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAibWF4IGJpdHJhdGUgcG9zc2libHkg
dG9vIHNtYWxsIG9yIHRyeSB0cmVsbGlzIHdpdGggbGFyZ2UgbG1heCBvciBpbmNyZWFzZSBxbWF4
XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJjYy0+YnVmZmVyX2luZGV4ID0gMDsK
ICAgICAgICAgfQpAQCAtNzU0LDEyICs3NTQsMTIgQEAgaW50IGZmX3Zidl91cGRhdGUoTVBWTWFp
bkVuY0NvbnRleHQgKm0sIGludCBmcmFtZV9zaXplKQogICAgICAgICBpZiAocmNjLT5idWZmZXJf
aW5kZXggPiBidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgaW50IHN0dWZmaW5nID0gY2VpbCgo
cmNjLT5idWZmZXJfaW5kZXggLSBidWZmZXJfc2l6ZSkgLyA4KTsKIAotICAgICAgICAgICAgaWYg
KHN0dWZmaW5nIDwgNCAmJiBzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkKKyAgICAg
ICAgICAgIGlmIChzdHVmZmluZyA8IDQgJiYgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9N
UEVHNCkKICAgICAgICAgICAgICAgICBzdHVmZmluZyA9IDQ7CiAgICAgICAgICAgICByY2MtPmJ1
ZmZlcl9pbmRleCAtPSA4ICogc3R1ZmZpbmc7CiAKLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+
ZGVidWcgJiBGRl9ERUJVR19SQykKLSAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFW
X0xPR19ERUJVRywgInN0dWZmaW5nICVkIGJ5dGVzXG4iLCBzdHVmZmluZyk7CisgICAgICAgICAg
ICBpZiAocy0+Yy5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19SQykKKyAgICAgICAgICAgICAgICBh
dl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0RFQlVHLCAic3R1ZmZpbmcgJWQgYnl0ZXNcbiIsIHN0
dWZmaW5nKTsKIAogICAgICAgICAgICAgcmV0dXJuIHN0dWZmaW5nOwogICAgICAgICB9CkBAIC03
ODcsMzEgKzc4NywzMCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcHJlZGljdG9yKFByZWRpY3RvciAq
cCwgZG91YmxlIHEsIGRvdWJsZSB2YXIsIGRvdWJsZSBzaXplKQogc3RhdGljIHZvaWQgYWRhcHRp
dmVfcXVhbnRpemF0aW9uKFJhdGVDb250cm9sQ29udGV4dCAqY29uc3QgcmNjLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBkb3Vi
bGUgcSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwotICAgIGludCBp
OwotICAgIGNvbnN0IGZsb2F0IGx1bWlfbWFza2luZyAgICAgICAgID0gcy0+YXZjdHgtPmx1bWlf
bWFza2luZyAvICgxMjguMCAqIDEyOC4wKTsKLSAgICBjb25zdCBmbG9hdCBkYXJrX21hc2tpbmcg
ICAgICAgICA9IHMtPmF2Y3R4LT5kYXJrX21hc2tpbmcgLyAoMTI4LjAgKiAxMjguMCk7Ci0gICAg
Y29uc3QgZmxvYXQgdGVtcF9jcGx4X21hc2tpbmcgICAgPSBzLT5hdmN0eC0+dGVtcG9yYWxfY3Bs
eF9tYXNraW5nOwotICAgIGNvbnN0IGZsb2F0IHNwYXRpYWxfY3BseF9tYXNraW5nID0gcy0+YXZj
dHgtPnNwYXRpYWxfY3BseF9tYXNraW5nOwotICAgIGNvbnN0IGZsb2F0IHBfbWFza2luZyAgICAg
ICAgICAgID0gcy0+YXZjdHgtPnBfbWFza2luZzsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBz
ID0gJm0tPnM7CisgICAgY29uc3QgZmxvYXQgbHVtaV9tYXNraW5nICAgICAgICAgPSBzLT5jLmF2
Y3R4LT5sdW1pX21hc2tpbmcgLyAoMTI4LjAgKiAxMjguMCk7CisgICAgY29uc3QgZmxvYXQgZGFy
a19tYXNraW5nICAgICAgICAgPSBzLT5jLmF2Y3R4LT5kYXJrX21hc2tpbmcgLyAoMTI4LjAgKiAx
MjguMCk7CisgICAgY29uc3QgZmxvYXQgdGVtcF9jcGx4X21hc2tpbmcgICAgPSBzLT5jLmF2Y3R4
LT50ZW1wb3JhbF9jcGx4X21hc2tpbmc7CisgICAgY29uc3QgZmxvYXQgc3BhdGlhbF9jcGx4X21h
c2tpbmcgPSBzLT5jLmF2Y3R4LT5zcGF0aWFsX2NwbHhfbWFza2luZzsKKyAgICBjb25zdCBmbG9h
dCBwX21hc2tpbmcgICAgICAgICAgICA9IHMtPmMuYXZjdHgtPnBfbWFza2luZzsKICAgICBjb25z
dCBmbG9hdCBib3JkZXJfbWFza2luZyAgICAgICA9IG0tPmJvcmRlcl9tYXNraW5nOwogICAgIGZs
b2F0IGJpdHNfc3VtICAgICAgICAgICAgICAgICAgID0gMC4wOwogICAgIGZsb2F0IGNwbHhfc3Vt
ICAgICAgICAgICAgICAgICAgID0gMC4wOwogICAgIGZsb2F0ICpjcGx4X3RhYiAgICAgICAgICAg
ICAgICAgID0gcmNjLT5jcGx4X3RhYjsKICAgICBmbG9hdCAqYml0c190YWIgICAgICAgICAgICAg
ICAgICA9IHJjYy0+Yml0c190YWI7Ci0gICAgY29uc3QgaW50IHFtaW4gICAgICAgICAgICAgICAg
ICAgPSBzLT5hdmN0eC0+bWJfbG1pbjsKLSAgICBjb25zdCBpbnQgcW1heCAgICAgICAgICAgICAg
ICAgICA9IHMtPmF2Y3R4LT5tYl9sbWF4OwotICAgIGNvbnN0IGludCBtYl93aWR0aCAgICAgICAg
ICAgICAgID0gcy0+bWJfd2lkdGg7Ci0gICAgY29uc3QgaW50IG1iX2hlaWdodCAgICAgICAgICAg
ICAgPSBzLT5tYl9oZWlnaHQ7CisgICAgY29uc3QgaW50IHFtaW4gICAgICAgICAgICAgICAgICAg
PSBzLT5jLmF2Y3R4LT5tYl9sbWluOworICAgIGNvbnN0IGludCBxbWF4ICAgICAgICAgICAgICAg
ICAgID0gcy0+Yy5hdmN0eC0+bWJfbG1heDsKKyAgICBjb25zdCBpbnQgbWJfd2lkdGggICAgICAg
ICAgICAgICA9IHMtPmMubWJfd2lkdGg7CisgICAgY29uc3QgaW50IG1iX2hlaWdodCAgICAgICAg
ICAgICAgPSBzLT5jLm1iX2hlaWdodDsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzLT5tYl9udW07
IGkrKykgewotICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBzLT5tYl9pbmRleDJ4eVtpXTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHMtPmMubWJfbnVtOyBpKyspIHsKKyAgICAgICAgY29uc3Qg
aW50IG1iX3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKICAgICAgICAgZmxvYXQgdGVtcF9jcGx4
ID0gc3FydChzLT5tY19tYl92YXJbbWJfeHldKTsgLy8gRklYTUUgbWVyZ2UgaW4gcG93KCkKICAg
ICAgICAgZmxvYXQgc3BhdF9jcGx4ID0gc3FydChzLT5tYl92YXJbbWJfeHldKTsKICAgICAgICAg
Y29uc3QgaW50IGx1bWkgID0gcy0+bWJfbWVhblttYl94eV07CiAgICAgICAgIGZsb2F0IGJpdHMs
IGNwbHgsIGZhY3RvcjsKLSAgICAgICAgaW50IG1iX3ggPSBtYl94eSAlIHMtPm1iX3N0cmlkZTsK
LSAgICAgICAgaW50IG1iX3kgPSBtYl94eSAvIHMtPm1iX3N0cmlkZTsKKyAgICAgICAgaW50IG1i
X3ggPSBtYl94eSAlIHMtPmMubWJfc3RyaWRlOworICAgICAgICBpbnQgbWJfeSA9IG1iX3h5IC8g
cy0+Yy5tYl9zdHJpZGU7CiAgICAgICAgIGludCBtYl9kaXN0YW5jZTsKICAgICAgICAgZmxvYXQg
bWJfZmFjdG9yID0gMC4wOwogICAgICAgICBpZiAoc3BhdF9jcGx4IDwgNCkKQEAgLTg2NSw3ICs4
NjQsNyBAQCBzdGF0aWMgdm9pZCBhZGFwdGl2ZV9xdWFudGl6YXRpb24oUmF0ZUNvbnRyb2xDb250
ZXh0ICpjb25zdCByY2MsCiAgICAgLyogaGFuZGxlIHFtaW4vcW1heCBjbGlwcGluZyAqLwogICAg
IGlmIChzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19OQVEpIHsKICAgICAgICAgZmxvYXQgZmFj
dG9yID0gYml0c19zdW0gLyBjcGx4X3N1bTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHMtPm1i
X251bTsgaSsrKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+Yy5tYl9udW07IGkr
KykgewogICAgICAgICAgICAgZmxvYXQgbmV3cSA9IHEgKiBjcGx4X3RhYltpXSAvIGJpdHNfdGFi
W2ldOwogICAgICAgICAgICAgbmV3cSAqPSBmYWN0b3I7CiAKQEAgLTg4Myw4ICs4ODIsOCBAQCBz
dGF0aWMgdm9pZCBhZGFwdGl2ZV9xdWFudGl6YXRpb24oUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25z
dCByY2MsCiAgICAgICAgICAgICBjcGx4X3N1bSA9IDAuMDAxOwogICAgIH0KIAotICAgIGZvciAo
aSA9IDA7IGkgPCBzLT5tYl9udW07IGkrKykgewotICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBz
LT5tYl9pbmRleDJ4eVtpXTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHMtPmMubWJfbnVtOyBp
KyspIHsKKyAgICAgICAgY29uc3QgaW50IG1iX3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKICAg
ICAgICAgZmxvYXQgbmV3cSAgICAgID0gcSAqIGNwbHhfdGFiW2ldIC8gYml0c190YWJbaV07CiAg
ICAgICAgIGludCBpbnRxOwogCkBAIC05MDQsMzkgKzkwMywzOSBAQCBzdGF0aWMgdm9pZCBhZGFw
dGl2ZV9xdWFudGl6YXRpb24oUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25zdCByY2MsCiAKIHZvaWQg
ZmZfZ2V0XzJwYXNzX2Zjb2RlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1w
ZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3Qg
cyA9ICZtLT5zOwogICAgIGNvbnN0IFJhdGVDb250cm9sQ29udGV4dCAqcmNjID0gJm0tPnJjX2Nv
bnRleHQ7Ci0gICAgY29uc3QgUmF0ZUNvbnRyb2xFbnRyeSAgICpyY2UgPSAmcmNjLT5lbnRyeVtz
LT5waWN0dXJlX251bWJlcl07CisgICAgY29uc3QgUmF0ZUNvbnRyb2xFbnRyeSAgICpyY2UgPSAm
cmNjLT5lbnRyeVtzLT5jLnBpY3R1cmVfbnVtYmVyXTsKIAotICAgIHMtPmZfY29kZSA9IHJjZS0+
Zl9jb2RlOwotICAgIHMtPmJfY29kZSA9IHJjZS0+Yl9jb2RlOworICAgIHMtPmMuZl9jb2RlID0g
cmNlLT5mX2NvZGU7CisgICAgcy0+Yy5iX2NvZGUgPSByY2UtPmJfY29kZTsKIH0KIAogLy8gRklY
TUUgcmQgb3IgYXQgbGVhc3QgYXBwcm94IGZvciBkcXVhbnQKIAogZmxvYXQgZmZfcmF0ZV9lc3Rp
bWF0ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGludCBkcnlfcnVuKQogewot
ICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAg
KmNvbnN0IHMgPSAmbS0+czsKICAgICBSYXRlQ29udHJvbENvbnRleHQgKnJjYyA9ICZtLT5yY19j
b250ZXh0OworICAgIEFWQ29kZWNDb250ZXh0ICpjb25zdCBhID0gcy0+Yy5hdmN0eDsKICAgICBm
bG9hdCBxOwogICAgIGludCBxbWluLCBxbWF4OwogICAgIGZsb2F0IGJyX2NvbXBlbnNhdGlvbjsK
ICAgICBkb3VibGUgZGlmZjsKICAgICBkb3VibGUgc2hvcnRfdGVybV9xOwogICAgIGRvdWJsZSBm
cHM7Ci0gICAgaW50IHBpY3R1cmVfbnVtYmVyID0gcy0+cGljdHVyZV9udW1iZXI7CisgICAgaW50
IHBpY3R1cmVfbnVtYmVyID0gcy0+Yy5waWN0dXJlX251bWJlcjsKICAgICBpbnQ2NF90IHdhbnRl
ZF9iaXRzOwotICAgIEFWQ29kZWNDb250ZXh0ICphICAgICAgID0gcy0+YXZjdHg7CiAgICAgUmF0
ZUNvbnRyb2xFbnRyeSBsb2NhbF9yY2UsICpyY2U7CiAgICAgZG91YmxlIGJpdHM7CiAgICAgZG91
YmxlIHJhdGVfZmFjdG9yOwogICAgIGludDY0X3QgdmFyOwotICAgIGNvbnN0IGludCBwaWN0X3R5
cGUgPSBzLT5waWN0X3R5cGU7CisgICAgY29uc3QgaW50IHBpY3RfdHlwZSA9IHMtPmMucGljdF90
eXBlOwogICAgIGVtbXNfYygpOwogCiAgICAgZ2V0X3FtaW5tYXgoJnFtaW4sICZxbWF4LCBtLCBw
aWN0X3R5cGUpOwogCi0gICAgZnBzID0gZ2V0X2ZwcyhzLT5hdmN0eCk7CisgICAgZnBzID0gZ2V0
X2ZwcyhzLT5jLmF2Y3R4KTsKICAgICAvKiB1cGRhdGUgcHJlZGljdG9ycyAqLwogICAgIGlmIChw
aWN0dXJlX251bWJlciA+IDIgJiYgIWRyeV9ydW4pIHsKICAgICAgICAgY29uc3QgaW50NjRfdCBs
YXN0X3ZhciA9CkBAIC05NDksMTAgKzk0OCwxMCBAQCBmbG9hdCBmZl9yYXRlX2VzdGltYXRlX3Fz
Y2FsZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IGRyeV9ydW4pCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgbS0+ZnJhbWVfYml0cyAtIG0tPnN0dWZmaW5nX2JpdHMpOwogICAgIH0K
IAotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7CisgICAg
aWYgKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewogICAgICAgICBh
dl9hc3NlcnQwKHBpY3R1cmVfbnVtYmVyID49IDApOwogICAgICAgICBpZiAocGljdHVyZV9udW1i
ZXIgPj0gcmNjLT5udW1fZW50cmllcykgewotICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBB
Vl9MT0dfRVJST1IsICJJbnB1dCBpcyBsb25nZXIgdGhhbiAyLXBhc3MgbG9nIGZpbGVcbiIpOwor
ICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJPUiwgIklucHV0IGlzIGxv
bmdlciB0aGFuIDItcGFzcyBsb2cgZmlsZVxuIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAg
ICAgICAgIH0KICAgICAgICAgcmNlICAgICAgICAgPSAmcmNjLT5lbnRyeVtwaWN0dXJlX251bWJl
cl07CkBAIC05NjUsMTcgKzk2NCwxNyBAQCBmbG9hdCBmZl9yYXRlX2VzdGltYXRlX3FzY2FsZShN
UFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IGRyeV9ydW4pCiAgICAgICAgIC8qIEZJWE1F
IGFkZCBhIGR0cyBmaWVsZCB0byBBVkZyYW1lIGFuZCBlbnN1cmUgaXQgaXMgc2V0IGFuZCB1c2Ug
aXQKICAgICAgICAgICogaGVyZSBpbnN0ZWFkIG9mIHJlb3JkZXJpbmcgYnV0IHRoZSByZW9yZGVy
aW5nIGlzIHNpbXBsZXIgZm9yIG5vdwogICAgICAgICAgKiB1bnRpbCBILjI2NCBCLXB5cmFtaWQg
bXVzdCBiZSBoYW5kbGVkLiAqLwotICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RV
UkVfVFlQRV9CIHx8IHMtPmxvd19kZWxheSkKLSAgICAgICAgICAgIGR0c19waWMgPSBzLT5jdXJf
cGljLnB0cjsKKyAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9C
IHx8IHMtPmMubG93X2RlbGF5KQorICAgICAgICAgICAgZHRzX3BpYyA9IHMtPmMuY3VyX3BpYy5w
dHI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGR0c19waWMgPSBzLT5sYXN0X3BpYy5wdHI7
CisgICAgICAgICAgICBkdHNfcGljID0gcy0+Yy5sYXN0X3BpYy5wdHI7CiAKICAgICAgICAgaWYg
KCFkdHNfcGljIHx8IGR0c19waWMtPmYtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSkKICAgICAgICAg
ICAgIHdhbnRlZF9iaXRzX2RvdWJsZSA9IG0tPmJpdF9yYXRlICogKGRvdWJsZSlwaWN0dXJlX251
bWJlciAvIGZwczsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgd2FudGVkX2JpdHNfZG91Ymxl
ID0gbS0+Yml0X3JhdGUgKiAoZG91YmxlKWR0c19waWMtPmYtPnB0cyAvIGZwczsKICAgICAgICAg
aWYgKHdhbnRlZF9iaXRzX2RvdWJsZSA+IElOVDY0X01BWCkgewotICAgICAgICAgICAgYXZfbG9n
KHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklORywgIkJpdHMgZXhjZWVkIDY0Yml0IHJhbmdlXG4iKTsK
KyAgICAgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfV0FSTklORywgIkJpdHMgZXhj
ZWVkIDY0Yml0IHJhbmdlXG4iKTsKICAgICAgICAgICAgIHdhbnRlZF9iaXRzID0gSU5UNjRfTUFY
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHdhbnRlZF9iaXRzID0gKGludDY0X3Qpd2Fu
dGVkX2JpdHNfZG91YmxlOwpAQCAtOTg5LDEyICs5ODgsMTIgQEAgZmxvYXQgZmZfcmF0ZV9lc3Rp
bWF0ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGludCBkcnlfcnVuKQogICAg
IHZhciA9IHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSA/IG0tPm1iX3Zhcl9zdW0gOiBt
LT5tY19tYl92YXJfc3VtOwogCiAgICAgc2hvcnRfdGVybV9xID0gMDsgLyogYXZvaWQgd2Fybmlu
ZyAqLwotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7Cisg
ICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewogICAgICAg
ICBpZiAocGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKQogICAgICAgICAgICAgYXZfYXNz
ZXJ0MChwaWN0X3R5cGUgPT0gcmNlLT5uZXdfcGljdF90eXBlKTsKIAogICAgICAgICBxID0gcmNl
LT5uZXdfcXNjYWxlIC8gYnJfY29tcGVuc2F0aW9uOwotICAgICAgICBmZl9kbG9nKHMtPmF2Y3R4
LCAiJWYgJWYgJWYgbGFzdDolZCB2YXI6JSJQUklkNjQiIHR5cGU6JWQvL1xuIiwgcSwgcmNlLT5u
ZXdfcXNjYWxlLAorICAgICAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICIlZiAlZiAlZiBsYXN0OiVk
IHZhcjolIlBSSWQ2NCIgdHlwZTolZC8vXG4iLCBxLCByY2UtPm5ld19xc2NhbGUsCiAgICAgICAg
ICAgICAgICAgYnJfY29tcGVuc2F0aW9uLCBtLT5mcmFtZV9iaXRzLCB2YXIsIHBpY3RfdHlwZSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmNlLT5waWN0X3R5cGUgICAgID0KQEAgLTEwMDIsMTMg
KzEwMDEsMTMgQEAgZmxvYXQgZmZfcmF0ZV9lc3RpbWF0ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRl
eHQgKmNvbnN0IG0sIGludCBkcnlfcnVuKQogICAgICAgICByY2UtPm1jX21iX3Zhcl9zdW0gPSBt
LT5tY19tYl92YXJfc3VtOwogICAgICAgICByY2UtPm1iX3Zhcl9zdW0gICAgPSBtLT5tYl92YXJf
c3VtOwogICAgICAgICByY2UtPnFzY2FsZSAgICAgICAgPSBGRl9RUDJMQU1CREEgKiAyOwotICAg
ICAgICByY2UtPmZfY29kZSAgICAgICAgPSBzLT5mX2NvZGU7Ci0gICAgICAgIHJjZS0+Yl9jb2Rl
ICAgICAgICA9IHMtPmJfY29kZTsKKyAgICAgICAgcmNlLT5mX2NvZGUgICAgICAgID0gcy0+Yy5m
X2NvZGU7CisgICAgICAgIHJjZS0+Yl9jb2RlICAgICAgICA9IHMtPmMuYl9jb2RlOwogICAgICAg
ICByY2UtPm1pc2NfYml0cyAgICAgPSAxOwogCiAgICAgICAgIGJpdHMgPSBwcmVkaWN0X3NpemUo
JnJjYy0+cHJlZFtwaWN0X3R5cGVdLCByY2UtPnFzY2FsZSwgc3FydCh2YXIpKTsKICAgICAgICAg
aWYgKHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICAgICAgcmNlLT5p
X2NvdW50ICAgID0gcy0+bWJfbnVtOworICAgICAgICAgICAgcmNlLT5pX2NvdW50ICAgID0gcy0+
Yy5tYl9udW07CiAgICAgICAgICAgICByY2UtPmlfdGV4X2JpdHMgPSBiaXRzOwogICAgICAgICAg
ICAgcmNlLT5wX3RleF9iaXRzID0gMDsKICAgICAgICAgICAgIHJjZS0+bXZfYml0cyAgICA9IDA7
CkBAIC0xMDUyLDggKzEwNTEsOCBAQCBmbG9hdCBmZl9yYXRlX2VzdGltYXRlX3FzY2FsZShNUFZN
YWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IGRyeV9ydW4pCiAgICAgICAgIGF2X2Fzc2VydDAo
cSA+IDAuMCk7CiAgICAgfQogCi0gICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JD
KSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0RFQlVHLAorICAgIGlmIChzLT5j
LmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JDKSB7CisgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4
LCBBVl9MT0dfREVCVUcsCiAgICAgICAgICAgICAgICAiJWMgcXA6JWQ8JTIuMWY8JWQgJWQgd2Fu
dDolIlBSSWQ2NCIgdG90YWw6JSJQUklkNjQiIGNvbXA6JWYgc3RfcTolMi4yZiAiCiAgICAgICAg
ICAgICAgICAic2l6ZTolZCB2YXI6JSJQUklkNjQiLyUiUFJJZDY0IiBicjolIlBSSWQ2NCIgZnBz
OiVkXG4iLAogICAgICAgICAgICAgICAgYXZfZ2V0X3BpY3R1cmVfdHlwZV9jaGFyKHBpY3RfdHlw
ZSksCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Jpc2N2L21lX2NtcF9pbml0LmMgYi9saWJhdmNv
ZGVjL3Jpc2N2L21lX2NtcF9pbml0LmMKaW5kZXggZjI0NmU1NWNiMS4uZjIyZGJmZjdmNCAxMDA2
NDQKLS0tIGEvbGliYXZjb2RlYy9yaXNjdi9tZV9jbXBfaW5pdC5jCisrKyBiL2xpYmF2Y29kZWMv
cmlzY3YvbWVfY21wX2luaXQuYwpAQCAtMjQsNTUgKzI0LDU1IEBACiAjaW5jbHVkZSAibGliYXZ1
dGlsL2NwdS5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9yaXNjdi9jcHUuaCIKICNpbmNsdWRlICJs
aWJhdmNvZGVjL21lX2NtcC5oIgotI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgiCisj
aW5jbHVkZSAibGliYXZjb2RlYy9tcGVndmlkZW9lbmMuaCIKIAotaW50IGZmX3BpeF9hYnMxNl9y
dnYoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCitpbnQgZmZfcGl4X2FiczE2X3J2dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50
OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3J2dihNcGVn
RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK
K2ludCBmZl9waXhfYWJzOF9ydnYoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4
MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRy
ZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnMxNl94Ml9ydnYoTXBlZ0VuY0Nv
bnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQg
ZmZfcGl4X2FiczE2X3gyX3J2dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgx
LCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf
dCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzOF94Ml9ydnYoTXBlZ0VuY0NvbnRleHQg
KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4
X2FiczhfeDJfcnZ2KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0
IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk
ZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnMxNl95Ml9ydnYoTXBlZ0VuY0NvbnRleHQgKnYsIGNv
bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczE2
X3kyX3J2dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50
OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBp
bnQgaCk7Ci1pbnQgZmZfcGl4X2FiczhfeTJfcnZ2KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1
aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnM4X3kyX3J2
dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw
aXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7
CiAKLWludCBmZl9zc2UxNl9ydnYoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp
eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfc3NlMTZfcnZ2KE1QVkVuY0NvbnRleHQg
KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAg
ICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3NzZThfcnZ2KE1wZWdF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAor
aW50IGZmX3NzZThfcnZ2KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv
bnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGgpOwotaW50IGZmX3NzZTRfcnZ2KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90
ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3NzZTRfcnZ2KE1QVkVuY0NvbnRl
eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAg
ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogCi1pbnQgZmZfdnNzZTE2X3J2
dihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMy
LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfdnNzZThfcnZ2KE1wZWdFbmNDb250
ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsIHB0cmRpZmZfdCBz
dHJpZGUsIGludCBoKTsKLWludCBmZl92c3NlX2ludHJhMTZfcnZ2KE1wZWdFbmNDb250ZXh0ICpj
LCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1teSwgcHRyZGlmZl90IHN0cmlk
ZSwgaW50IGgpOwotaW50IGZmX3Zzc2VfaW50cmE4X3J2dihNcGVnRW5jQ29udGV4dCAqYywgY29u
c3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksIHB0cmRpZmZfdCBzdHJpZGUsIGlu
dCBoKTsKLWludCBmZl92c2FkMTZfcnZ2KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90
ICpzMSwgY29uc3QgdWludDhfdCAqczIsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBm
Zl92c2FkOF9ydnYoTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1
aW50OF90ICpzMiwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3ZzYWRfaW50cmEx
Nl9ydnYoTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMsIGNvbnN0IHVpbnQ4X3Qg
KmR1bW15LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfdnNhZF9pbnRyYThfcnZ2
KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1t
eSwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOworaW50IGZmX3Zzc2UxNl9ydnYoTVBWRW5jQ29u
dGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLCBwdHJkaWZmX3Qg
c3RyaWRlLCBpbnQgaCk7CitpbnQgZmZfdnNzZThfcnZ2KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0
IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgp
OworaW50IGZmX3Zzc2VfaW50cmExNl9ydnYoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhf
dCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKK2lu
dCBmZl92c3NlX2ludHJhOF9ydnYoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqcywg
Y29uc3QgdWludDhfdCAqZHVtbXksIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKK2ludCBmZl92
c2FkMTZfcnZ2KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50
OF90ICpzMiwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOworaW50IGZmX3ZzYWQ4X3J2dihNUFZF
bmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsIHB0cmRp
ZmZfdCBzdHJpZGUsIGludCBoKTsKK2ludCBmZl92c2FkX2ludHJhMTZfcnZ2KE1QVkVuY0NvbnRl
eHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LCBwdHJkaWZmX3Qg
c3RyaWRlLCBpbnQgaCk7CitpbnQgZmZfdnNhZF9pbnRyYThfcnZ2KE1QVkVuY0NvbnRleHQgKmMs
IGNvbnN0IHVpbnQ4X3QgKnMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LCBwdHJkaWZmX3Qgc3RyaWRl
LCBpbnQgaCk7CiBpbnQgZmZfbnNzZTE2X3J2dihpbnQgbXVsdGlwbGllciwgY29uc3QgdWludDhf
dCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg
c3RyaWRlLCBpbnQgaCk7CiBpbnQgZmZfbnNzZThfcnZ2KGludCBtdWx0aXBsaWVyLCBjb25zdCB1
aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRp
ZmZfdCBzdHJpZGUsIGludCBoKTsKIAotc3RhdGljIGludCBuc3NlMTZfcnZ2X3dyYXBwZXIoTXBl
Z0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKK3N0
YXRpYyBpbnQgbnNzZTE2X3J2dl93cmFwcGVyKE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4
X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRp
ZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGlmIChjKQotICAgICAgICByZXR1cm4gZmZfbnNz
ZTE2X3J2dihjLT5hdmN0eC0+bnNzZV93ZWlnaHQsIHMxLCBzMiwgc3RyaWRlLCBoKTsKKyAgICAg
ICAgcmV0dXJuIGZmX25zc2UxNl9ydnYoYy0+Yy5hdmN0eC0+bnNzZV93ZWlnaHQsIHMxLCBzMiwg
c3RyaWRlLCBoKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmZl9uc3NlMTZfcnZ2KDgsIHMx
LCBzMiwgc3RyaWRlLCBoKTsKIH0KIAotc3RhdGljIGludCBuc3NlOF9ydnZfd3JhcHBlcihNcGVn
RW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAorc3Rh
dGljIGludCBuc3NlOF9ydnZfd3JhcHBlcihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90
ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm
X3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpZiAoYykKLSAgICAgICAgcmV0dXJuIGZmX25zc2U4
X3J2dihjLT5hdmN0eC0+bnNzZV93ZWlnaHQsIHMxLCBzMiwgc3RyaWRlLCBoKTsKKyAgICAgICAg
cmV0dXJuIGZmX25zc2U4X3J2dihjLT5jLmF2Y3R4LT5uc3NlX3dlaWdodCwgczEsIHMyLCBzdHJp
ZGUsIGgpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZmX25zc2U4X3J2dig4LCBzMSwgczIs
IHN0cmlkZSwgaCk7CiB9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3J2MTBlbmMuYyBiL2xpYmF2
Y29kZWMvcnYxMGVuYy5jCmluZGV4IDBiNTA2NTIxMmQuLjk4NGZlMzM3OWQgMTAwNjQ0Ci0tLSBh
L2xpYmF2Y29kZWMvcnYxMGVuYy5jCisrKyBiL2xpYmF2Y29kZWMvcnYxMGVuYy5jCkBAIC0zMywz
MyArMzMsMzMgQEAKIAogaW50IGZmX3J2MTBfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5F
bmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0t
PnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIGludCBmdWxsX2Zy
YW1lPSAwOwogCiAgICAgYWxpZ25fcHV0X2JpdHMoJnMtPnBiKTsKIAogICAgIHB1dF9iaXRzKCZz
LT5wYiwgMSwgMSk7ICAgICAvKiBtYXJrZXIgKi8KIAotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwg
KHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkpOworICAgIHB1dF9iaXRzKCZzLT5w
YiwgMSwgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9QKSk7CiAKICAgICBwdXRf
Yml0cygmcy0+cGIsIDEsIDApOyAgICAgLyogbm90IFBCLW1mcmFtZSAqLwogCi0gICAgcHV0X2Jp
dHMoJnMtPnBiLCA1LCBzLT5xc2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5x
c2NhbGUpOwogCi0gICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewor
ICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewogICAgICAgICAv
KiBzcGVjaWZpYyBNUEVHIGxpa2UgREMgY29kaW5nIG5vdCB1c2VkICovCiAgICAgfQogICAgIC8q
IGlmIG11bHRpcGxlIHBhY2tldHMgcGVyIGZyYW1lIGFyZSBzZW50LCB0aGUgcG9zaXRpb24gYXQg
d2hpY2gKICAgICAgICB0byBkaXNwbGF5IHRoZSBtYWNyb2Jsb2NrcyBpcyBjb2RlZCBoZXJlICov
CiAgICAgaWYoIWZ1bGxfZnJhbWUpewotICAgICAgICBpZiAocy0+bWJfd2lkdGggKiBzLT5tYl9o
ZWlnaHQgPj0gKDFVIDw8IDEyKSkgewotICAgICAgICAgICAgYXZwcml2X3JlcG9ydF9taXNzaW5n
X2ZlYXR1cmUocy0+YXZjdHgsICJFbmNvZGluZyBmcmFtZXMgd2l0aCAlZCAoPj0gNDA5NikgbWFj
cm9ibG9ja3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+
bWJfd2lkdGggKiBzLT5tYl9oZWlnaHQpOworICAgICAgICBpZiAocy0+Yy5tYl93aWR0aCAqIHMt
PmMubWJfaGVpZ2h0ID49ICgxVSA8PCAxMikpIHsKKyAgICAgICAgICAgIGF2cHJpdl9yZXBvcnRf
bWlzc2luZ19mZWF0dXJlKHMtPmMuYXZjdHgsICJFbmNvZGluZyBmcmFtZXMgd2l0aCAlZCAoPj0g
NDA5NikgbWFjcm9ibG9ja3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+Yy5tYl93aWR0aCAqIHMtPmMubWJfaGVpZ2h0KTsKICAgICAgICAgICAgIHJldHVy
biBBVkVSUk9SKEVOT1NZUyk7CiAgICAgICAgIH0KICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA2
LCAwKTsgLyogbWJfeCAqLwogICAgICAgICBwdXRfYml0cygmcy0+cGIsIDYsIDApOyAvKiBtYl95
ICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTIsIHMtPm1iX3dpZHRoICogcy0+bWJfaGVp
Z2h0KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxMiwgcy0+Yy5tYl93aWR0aCAqIHMtPmMu
bWJfaGVpZ2h0KTsKICAgICB9CiAKICAgICBwdXRfYml0cygmcy0+cGIsIDMsIDApOyAgICAgLyog
aWdub3JlZCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9ydjIwZW5jLmMgYi9saWJhdmNvZGVj
L3J2MjBlbmMuYwppbmRleCAxYTU5ZmQ0YzcwLi5kZWE4OWM4YmU0IDEwMDY0NAotLS0gYS9saWJh
dmNvZGVjL3J2MjBlbmMuYworKysgYi9saWJhdmNvZGVjL3J2MjBlbmMuYwpAQCAtMzYsMzIgKzM2
LDMyIEBACiAKIGludCBmZl9ydjIwX2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29u
dGV4dCAqY29uc3QgbSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwor
ICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAotICAgIHB1dF9iaXRzKCZzLT5w
YiwgMiwgcy0+cGljdF90eXBlKTsgLy9JIDAgdnMuIDEgPworICAgIHB1dF9iaXRzKCZzLT5wYiwg
Miwgcy0+Yy5waWN0X3R5cGUpOyAvL0kgMCB2cy4gMSA/CiAgICAgcHV0X2JpdHMoJnMtPnBiLCAx
LCAwKTsgICAgIC8qIHVua25vd24gYml0ICovCi0gICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5x
c2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOwogCi0gICAgcHV0
X3NiaXRzKCZzLT5wYiwgOCwgcy0+cGljdHVyZV9udW1iZXIpOyAvL0ZJWE1FIHdyb25nLCBidXQg
Y29ycmVjdCBpcyBub3Qga25vd24KLSAgICBzLT5tYl94PSBzLT5tYl95PSAwOworICAgIHB1dF9z
Yml0cygmcy0+cGIsIDgsIHMtPmMucGljdHVyZV9udW1iZXIpOyAvL0ZJWE1FIHdyb25nLCBidXQg
Y29ycmVjdCBpcyBub3Qga25vd24KKyAgICBzLT5jLm1iX3ggPSBzLT5jLm1iX3kgPSAwOwogICAg
IGZmX2gyNjNfZW5jb2RlX21iYShzKTsKIAotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+bm9f
cm91bmRpbmcpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5ub19yb3VuZGluZyk7CiAK
LSAgICBhdl9hc3NlcnQwKHMtPmZfY29kZSA9PSAxKTsKLSAgICBhdl9hc3NlcnQwKHMtPnVucmVz
dHJpY3RlZF9tdiA9PSAwKTsKLSAgICBhdl9hc3NlcnQwKHMtPmFsdF9pbnRlcl92bGMgPT0gMCk7
Ci0gICAgYXZfYXNzZXJ0MChzLT51bXZwbHVzID09IDApOwotICAgIGF2X2Fzc2VydDAocy0+bW9k
aWZpZWRfcXVhbnQ9PTEpOwotICAgIGF2X2Fzc2VydDAocy0+bG9vcF9maWx0ZXI9PTEpOworICAg
IGF2X2Fzc2VydDAocy0+Yy5mX2NvZGUgPT0gMSk7CisgICAgYXZfYXNzZXJ0MChzLT5jLnVucmVz
dHJpY3RlZF9tdiA9PSAwKTsKKyAgICBhdl9hc3NlcnQwKHMtPmMuYWx0X2ludGVyX3ZsYyA9PSAw
KTsKKyAgICBhdl9hc3NlcnQwKHMtPmMudW12cGx1cyA9PSAwKTsKKyAgICBhdl9hc3NlcnQwKHMt
PmMubW9kaWZpZWRfcXVhbnQ9PTEpOworICAgIGF2X2Fzc2VydDAocy0+Yy5sb29wX2ZpbHRlcj09
MSk7CiAKLSAgICBzLT5oMjYzX2FpYz0gcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9J
OwotICAgIGlmKHMtPmgyNjNfYWljKXsKLSAgICAgICAgcy0+eV9kY19zY2FsZV90YWJsZT0KLSAg
ICAgICAgcy0+Y19kY19zY2FsZV90YWJsZT0gZmZfYWljX2RjX3NjYWxlX3RhYmxlOworICAgIHMt
PmMuaDI2M19haWM9IHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JOworICAgIGlm
KHMtPmMuaDI2M19haWMpeworICAgICAgICBzLT5jLnlfZGNfc2NhbGVfdGFibGUgPQorICAgICAg
ICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBmZl9haWNfZGNfc2NhbGVfdGFibGU7CiAgICAgfWVs
c2V7Ci0gICAgICAgIHMtPnlfZGNfc2NhbGVfdGFibGU9Ci0gICAgICAgIHMtPmNfZGNfc2NhbGVf
dGFibGU9IGZmX21wZWcxX2RjX3NjYWxlX3RhYmxlOworICAgICAgICBzLT5jLnlfZGNfc2NhbGVf
dGFibGUgPQorICAgICAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBmZl9tcGVnMV9kY19zY2Fs
ZV90YWJsZTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVj
L3Nub3dfZHd0LmMgYi9saWJhdmNvZGVjL3Nub3dfZHd0LmMKaW5kZXggMTI1MDU5N2VlMC4uMGYy
Yjg2ZTJjYyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9zbm93X2R3dC5jCisrKyBiL2xpYmF2Y29k
ZWMvc25vd19kd3QuYwpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgZmZfc3BhdGlhbF9pZHd0KElE
V1RFTEVNICpidWZmZXIsIElEV1RFTEVNICp0ZW1wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvbXBvc2l0aW9uX2NvdW50LCB5KTsKIH0K
IAotc3RhdGljIGlubGluZSBpbnQgd19jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwK
K3N0YXRpYyBpbmxpbmUgaW50IHdfYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw
aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBwdHJkaWZmX3QgbGluZV9zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgIGludCB3LCBpbnQgaCwgaW50IHR5cGUpCiB7CiAgICAgaW50IHMsIGksIGo7
CkBAIC04MTAsMzIgKzgxMCwzMiBAQCBzdGF0aWMgaW5saW5lIGludCB3X2Moc3RydWN0IE1wZWdF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OAogICAgIHJldHVy
biBzID4+IDk7CiB9CiAKLXN0YXRpYyBpbnQgdzUzXzhfYyhzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg
KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBs
aW5lX3NpemUsIGludCBoKQorc3RhdGljIGludCB3NTNfOF9jKE1QVkVuY0NvbnRleHQgKnYsIGNv
bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBsaW5lX3Np
emUsIGludCBoKQogewogICAgIHJldHVybiB3X2ModiwgcGl4MSwgcGl4MiwgbGluZV9zaXplLCA4
LCBoLCAxKTsKIH0KIAotc3RhdGljIGludCB3OTdfOF9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxp
bmVfc2l6ZSwgaW50IGgpCitzdGF0aWMgaW50IHc5N184X2MoTVBWRW5jQ29udGV4dCAqdiwgY29u
c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6
ZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUsIDgs
IGgsIDApOwogfQogCi1zdGF0aWMgaW50IHc1M18xNl9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxp
bmVfc2l6ZSwgaW50IGgpCitzdGF0aWMgaW50IHc1M18xNl9jKE1QVkVuY0NvbnRleHQgKnYsIGNv
bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBsaW5lX3Np
emUsIGludCBoKQogewogICAgIHJldHVybiB3X2ModiwgcGl4MSwgcGl4MiwgbGluZV9zaXplLCAx
NiwgaCwgMSk7CiB9CiAKLXN0YXRpYyBpbnQgdzk3XzE2X2Moc3RydWN0IE1wZWdFbmNDb250ZXh0
ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBwdHJkaWZmX3Qg
bGluZV9zaXplLCBpbnQgaCkKK3N0YXRpYyBpbnQgdzk3XzE2X2MoTVBWRW5jQ29udGV4dCAqdiwg
Y29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVf
c2l6ZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUs
IDE2LCBoLCAwKTsKIH0KIAotaW50IGZmX3c1M18zMl9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxp
bmVfc2l6ZSwgaW50IGgpCitpbnQgZmZfdzUzXzMyX2MoTVBWRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwg
aW50IGgpCiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUsIDMyLCBo
LCAxKTsKIH0KIAotaW50IGZmX3c5N18zMl9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29u
c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6
ZSwgaW50IGgpCitpbnQgZmZfdzk3XzMyX2MoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhf
dCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgp
CiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUsIDMyLCBoLCAwKTsK
IH0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc25vd19kd3QuaCBiL2xpYmF2Y29kZWMvc25vd19k
d3QuaAppbmRleCA2ZTdkMjJjNzFhLi5iNTgwM2JjOTlhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj
L3Nub3dfZHd0LmgKKysrIGIvbGliYXZjb2RlYy9zbm93X2R3dC5oCkBAIC0yNiw3ICsyNiw3IEBA
CiAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgogCi1zdHJ1Y3QgTXBlZ0VuY0Nv
bnRleHQ7Cit0eXBlZGVmIHN0cnVjdCBNUFZFbmNDb250ZXh0IE1QVkVuY0NvbnRleHQ7CiAKIHR5
cGVkZWYgaW50IERXVEVMRU07CiB0eXBlZGVmIHNob3J0IElEV1RFTEVNOwpAQCAtMTQ0LDggKzE0
NCw4IEBAIHZvaWQgZmZfc25vd19pbm5lcl9hZGRfeWJsb2NrKGNvbnN0IHVpbnQ4X3QgKm9ibWMs
IGNvbnN0IGludCBvYm1jX3N0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzcmNfeSwgaW50IHNyY19zdHJpZGUsIHNsaWNlX2J1ZmZlciAqc2IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgYWRkLCB1aW50OF90ICpkc3Q4KTsKIAotaW50IGZmX3c1M18z
Ml9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg
dWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOwotaW50IGZmX3c5N18z
Ml9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg
dWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOworaW50IGZmX3c1M18z
Ml9jKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKTsKK2ludCBmZl93OTdfMzJfYyhNUFZF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBw
dHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCk7CiAKIHZvaWQgZmZfc3BhdGlhbF9kd3QoaW50ICpi
dWZmZXIsIGludCAqdGVtcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgc3RyaWRlLAogICAg
ICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgaW50IGRlY29tcG9zaXRpb25fY291bnQpOwpkaWZm
IC0tZ2l0IGEvbGliYXZjb2RlYy9zbm93ZW5jLmMgYi9saWJhdmNvZGVjL3Nub3dlbmMuYwppbmRl
eCBmYzJhNTZhODA4Li5mOWIxMGY3ZGFiIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3Nub3dlbmMu
YworKysgYi9saWJhdmNvZGVjL3Nub3dlbmMuYwpAQCAtNjEsNyArNjEsNyBAQCB0eXBlZGVmIHN0
cnVjdCBTbm93RW5jQ29udGV4dCB7CiAgICAgaW50IHNjZW5lY2hhbmdlX3RocmVzaG9sZDsKIAog
ICAgIE1FQ21wQ29udGV4dCBtZWNjOwotICAgIE1QVk1haW5FbmNDb250ZXh0IG07IC8vIG5lZWRl
ZCBmb3IgbW90aW9uIGVzdGltYXRpb24sIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55dGhpbmcg
ZWxzZSwgdGhlIGlkZWEgaXMgdG8gZXZlbnR1YWxseSBtYWtlIHRoZSBtb3Rpb24gZXN0aW1hdGlv
biBpbmRlcGVuZGVudCBvZiBNcGVnRW5jQ29udGV4dCwgc28gdGhpcyB3aWxsIGJlIHJlbW92ZWQg
dGhlbiAoRklYTUUvWFhYKQorICAgIE1QVk1haW5FbmNDb250ZXh0IG07IC8vIG5lZWRlZCBmb3Ig
bW90aW9uIGVzdGltYXRpb24sIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55dGhpbmcgZWxzZSwg
dGhlIGlkZWEgaXMgdG8gZXZlbnR1YWxseSBtYWtlIHRoZSBtb3Rpb24gZXN0aW1hdGlvbiBpbmRl
cGVuZGVudCBvZiBNUFZFbmNDb250ZXh0LCBzbyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB0aGVuIChG
SVhNRS9YWFgpCiAgICAgTVBWUGljdHVyZSBjdXJfcGljLCBsYXN0X3BpYzsKICNkZWZpbmUgTUVf
Q0FDSEVfU0laRSAxMDI0CiAgICAgdW5zaWduZWQgbWVfY2FjaGVbTUVfQ0FDSEVfU0laRV07CkBA
IC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IGVuY29kZV9pbml0KEFWQ29kZWND
b250ZXh0ICphdmN0eCkKIHsKICAgICBTbm93RW5jQ29udGV4dCAqY29uc3QgZW5jID0gYXZjdHgt
PnByaXZfZGF0YTsKICAgICBTbm93Q29udGV4dCAqY29uc3QgcyA9ICZlbmMtPmNvbTsKLSAgICBN
cGVnRW5jQ29udGV4dCAqY29uc3QgbXB2ID0gJmVuYy0+bS5zOworICAgIE1QVkVuY0NvbnRleHQg
KmNvbnN0IG1wdiA9ICZlbmMtPm0uczsKICAgICBpbnQgcGxhbmVfaW5kZXgsIHJldDsKICAgICBp
bnQgaTsKIApAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5p
dChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgbWNmKDEyLDEyKQogCiAgICAgZmZfbWVfY21w
X2luaXQoJmVuYy0+bWVjYywgYXZjdHgpOwotICAgIHJldCA9IGZmX21lX2luaXQoJm1wdi0+bWUs
IGF2Y3R4LCAmZW5jLT5tZWNjLCAwKTsKKyAgICByZXQgPSBmZl9tZV9pbml0KCZtcHYtPmMubWUs
IGF2Y3R4LCAmZW5jLT5tZWNjLCAwKTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJu
IHJldDsKICAgICBmZl9tcGVndmlkZW9lbmNkc3BfaW5pdCgmZW5jLT5tcHZlbmNkc3AsIGF2Y3R4
KTsKQEAgLTIyNiwyMSArMjI2LDIxIEBAIHN0YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5pdChB
VkNvZGVjQ29udGV4dCAqYXZjdHgpCiAKICAgICBzLT52ZXJzaW9uPTA7CiAKLSAgICBtcHYtPmF2
Y3R4ICAgPSBhdmN0eDsKKyAgICBtcHYtPmMuYXZjdHggICA9IGF2Y3R4OwogICAgIGVuYy0+bS5i
aXRfcmF0ZSA9IGF2Y3R4LT5iaXRfcmF0ZTsKICAgICBlbmMtPm0ubG1pbiAgPSBhdmN0eC0+bWJf
bG1pbjsKICAgICBlbmMtPm0ubG1heCAgPSBhdmN0eC0+bWJfbG1heDsKLSAgICBtcHYtPm1iX251
bSAgPSAoYXZjdHgtPndpZHRoICogYXZjdHgtPmhlaWdodCArIDI1NSkgLyAyNTY7IC8vIEZvciBy
YXRlY29udHJvbAorICAgIG1wdi0+Yy5tYl9udW0gID0gKGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5o
ZWlnaHQgKyAyNTUpIC8gMjU2OyAvLyBGb3IgcmF0ZWNvbnRyb2wKIAotICAgIG1wdi0+bWUudGVt
cCAgICAgID0KLSAgICBtcHYtPm1lLnNjcmF0Y2hwYWQgPSBhdl9jYWxsb2MoYXZjdHgtPndpZHRo
ICsgNjQsIDIqMTYqMipzaXplb2YodWludDhfdCkpOwotICAgIG1wdi0+c2Mub2JtY19zY3JhdGNo
cGFkPSBhdl9tYWxsb2N6KE1CX1NJWkUqTUJfU0laRSoxMipzaXplb2YodWludDMyX3QpKTsKLSAg
ICBtcHYtPm1lLm1hcCAgICAgICA9IGF2X21hbGxvY3ooMiAqIE1FX01BUF9TSVpFICogc2l6ZW9m
KCptcHYtPm1lLm1hcCkpOwotICAgIGlmICghbXB2LT5tZS5zY3JhdGNocGFkIHx8ICFtcHYtPm1l
Lm1hcCB8fCAhbXB2LT5zYy5vYm1jX3NjcmF0Y2hwYWQpCisgICAgbXB2LT5jLm1lLnRlbXAgICAg
ICA9CisgICAgbXB2LT5jLm1lLnNjcmF0Y2hwYWQgPSBhdl9jYWxsb2MoYXZjdHgtPndpZHRoICsg
NjQsIDIqMTYqMipzaXplb2YodWludDhfdCkpOworICAgIG1wdi0+Yy5zYy5vYm1jX3NjcmF0Y2hw
YWQ9IGF2X21hbGxvY3ooTUJfU0laRSpNQl9TSVpFKjEyKnNpemVvZih1aW50MzJfdCkpOworICAg
IG1wdi0+Yy5tZS5tYXAgICAgICAgPSBhdl9tYWxsb2N6KDIgKiBNRV9NQVBfU0laRSAqIHNpemVv
ZigqbXB2LT5jLm1lLm1hcCkpOworICAgIGlmICghbXB2LT5jLm1lLnNjcmF0Y2hwYWQgfHwgIW1w
di0+Yy5tZS5tYXAgfHwgIW1wdi0+Yy5zYy5vYm1jX3NjcmF0Y2hwYWQpCiAgICAgICAgIHJldHVy
biBBVkVSUk9SKEVOT01FTSk7Ci0gICAgbXB2LT5tZS5zY29yZV9tYXAgPSBtcHYtPm1lLm1hcCAr
IE1FX01BUF9TSVpFOworICAgIG1wdi0+Yy5tZS5zY29yZV9tYXAgPSBtcHYtPmMubWUubWFwICsg
TUVfTUFQX1NJWkU7CiAKLSAgICBtcHYtPm1lLm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9w
ZW5hbHR5KCk7CisgICAgbXB2LT5jLm1lLm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5h
bHR5KCk7CiAKICAgICBzLT5tYXhfcmVmX2ZyYW1lcyA9IGF2X2NsaXAoYXZjdHgtPnJlZnMsIDEs
IE1BWF9SRUZfRlJBTUVTKTsKIApAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50
IGdldF9wZW5hbHR5X2ZhY3RvcihpbnQgbGFtYmRhLCBpbnQgbGFtYmRhMiwgaW50IHR5cGUpewog
c3RhdGljIGludCBlbmNvZGVfcV9icmFuY2goU25vd0VuY0NvbnRleHQgKmVuYywgaW50IGxldmVs
LCBpbnQgeCwgaW50IHkpCiB7CiAgICAgU25vd0NvbnRleHQgICAgICAqY29uc3QgcyA9ICZlbmMt
PmNvbTsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJmVuYy0+bS5zLm1lOworICAg
IE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmZW5jLT5tLnMuYy5tZTsKICAgICB1aW50OF90
IHBfYnVmZmVyWzEwMjRdOwogICAgIHVpbnQ4X3QgaV9idWZmZXJbMTAyNF07CiAgICAgdWludDhf
dCBwX3N0YXRlW3NpemVvZihzLT5ibG9ja19zdGF0ZSldOwpAQCAtNDM1LDkgKzQzNSw5IEBAIHN0
YXRpYyBpbnQgZW5jb2RlX3FfYnJhbmNoKFNub3dFbmNDb250ZXh0ICplbmMsIGludCBsZXZlbCwg
aW50IHgsIGludCB5KQogICAgIGxhc3RfbXZbMl1bMF09IGJvdHRvbS0+bXg7CiAgICAgbGFzdF9t
dlsyXVsxXT0gYm90dG9tLT5teTsKIAotICAgIGVuYy0+bS5zLm1iX3N0cmlkZSA9IDI7Ci0gICAg
ZW5jLT5tLnMubWJfeCA9Ci0gICAgZW5jLT5tLnMubWJfeSA9IDA7CisgICAgZW5jLT5tLnMuYy5t
Yl9zdHJpZGUgPSAyOworICAgIGVuYy0+bS5zLmMubWJfeCA9CisgICAgZW5jLT5tLnMuYy5tYl95
ID0gMDsKICAgICBjLT5za2lwPSAwOwogCiAgICAgYXZfYXNzZXJ0MShjLT4gIHN0cmlkZSA9PSAg
IHN0cmlkZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIGludCBlbmNvZGVfcV9icmFuY2go
U25vd0VuY0NvbnRleHQgKmVuYywgaW50IGxldmVsLCBpbnQgeCwgaW50IHkpCiAgICAgYy0+cGVu
YWx0eV9mYWN0b3IgICAgPSBnZXRfcGVuYWx0eV9mYWN0b3IoZW5jLT5sYW1iZGEsIGVuYy0+bGFt
YmRhMiwgYy0+YXZjdHgtPm1lX2NtcCk7CiAgICAgYy0+c3ViX3BlbmFsdHlfZmFjdG9yPSBnZXRf
cGVuYWx0eV9mYWN0b3IoZW5jLT5sYW1iZGEsIGVuYy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3N1
Yl9jbXApOwogICAgIGMtPm1iX3BlbmFsdHlfZmFjdG9yID0gZ2V0X3BlbmFsdHlfZmFjdG9yKGVu
Yy0+bGFtYmRhLCBlbmMtPmxhbWJkYTIsIGMtPmF2Y3R4LT5tYl9jbXApOwotICAgIGMtPmN1cnJl
bnRfbXZfcGVuYWx0eSA9IGMtPm12X3BlbmFsdHlbZW5jLT5tLnMuZl9jb2RlPTFdICsgTUFYX0RN
VjsKKyAgICBjLT5jdXJyZW50X212X3BlbmFsdHkgPSBjLT5tdl9wZW5hbHR5W2VuYy0+bS5zLmMu
Zl9jb2RlPTFdICsgTUFYX0RNVjsKIAogICAgIGMtPnhtaW4gPSAtIHgqYmxvY2tfdyAtIDE2KzM7
CiAgICAgYy0+eW1pbiA9IC0geSpibG9ja193IC0gMTYrMzsKQEAgLTU2OSw3ICs1NjksNyBAQCBz
dGF0aWMgaW50IGVuY29kZV9xX2JyYW5jaChTbm93RW5jQ29udGV4dCAqZW5jLCBpbnQgbGV2ZWws
IGludCB4LCBpbnQgeSkKICAgICAgICAgaWYgKHZhcmQgPD0gNjQgfHwgdmFyZCA8IHZhcmMpCiAg
ICAgICAgICAgICBjLT5zY2VuZV9jaGFuZ2Vfc2NvcmUrPSBmZl9zcXJ0KHZhcmQpIC0gZmZfc3Fy
dCh2YXJjKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYy0+c2NlbmVfY2hhbmdlX3Njb3Jl
ICs9IGVuYy0+bS5zLnFzY2FsZTsKKyAgICAgICAgICAgIGMtPnNjZW5lX2NoYW5nZV9zY29yZSAr
PSBlbmMtPm0ucy5jLnFzY2FsZTsKICAgICB9CiAKICAgICBpZihsZXZlbCE9cy0+YmxvY2tfbWF4
X2RlcHRoKXsKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgaW50IGdldF9kYyhTbm93RW5jQ29u
dGV4dCAqZW5jLCBpbnQgbWJfeCwgaW50IG1iX3ksIGludCBwbGFuZV9pbmRleCkKICAgICBjb25z
dCBpbnQgb2JtY19zdHJpZGU9IHBsYW5lX2luZGV4ID8gKDIqYmxvY2tfc2l6ZSk+PnMtPmNocm9t
YV9oX3NoaWZ0IDogMipibG9ja19zaXplOwogICAgIGNvbnN0IGludCByZWZfc3RyaWRlPSBzLT5j
dXJyZW50X3BpY3R1cmUtPmxpbmVzaXplW3BsYW5lX2luZGV4XTsKICAgICBjb25zdCB1aW50OF90
ICpzcmMgPSBzLT5pbnB1dF9waWN0dXJlLT5kYXRhW3BsYW5lX2luZGV4XTsKLSAgICBJRFdURUxF
TSAqZHN0PSAoSURXVEVMRU0qKWVuYy0+bS5zLnNjLm9ibWNfc2NyYXRjaHBhZCArIHBsYW5lX2lu
ZGV4KmJsb2NrX3NpemUqYmxvY2tfc2l6ZSo0OyAvL0ZJWE1FIGNoYW5nZSB0byB1bnNpZ25lZAor
ICAgIElEV1RFTEVNICpkc3Q9IChJRFdURUxFTSopZW5jLT5tLnMuYy5zYy5vYm1jX3NjcmF0Y2hw
YWQgKyBwbGFuZV9pbmRleCpibG9ja19zaXplKmJsb2NrX3NpemUqNDsgLy9GSVhNRSBjaGFuZ2Ug
dG8gdW5zaWduZWQKICAgICBjb25zdCBpbnQgYl9zdHJpZGUgPSBzLT5iX3dpZHRoIDw8IHMtPmJs
b2NrX21heF9kZXB0aDsKICAgICBjb25zdCBpbnQgdz0gcC0+d2lkdGg7CiAgICAgY29uc3QgaW50
IGg9IHAtPmhlaWdodDsKQEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgaW50IGdldF9ibG9ja19y
ZChTbm93RW5jQ29udGV4dCAqZW5jLCBpbnQgbWJfeCwgaW50IG1iX3ksCiAgICAgY29uc3QgaW50
IHJlZl9zdHJpZGU9IHMtPmN1cnJlbnRfcGljdHVyZS0+bGluZXNpemVbcGxhbmVfaW5kZXhdOwog
ICAgIHVpbnQ4X3QgKmRzdD0gcy0+Y3VycmVudF9waWN0dXJlLT5kYXRhW3BsYW5lX2luZGV4XTsK
ICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBzLT5pbnB1dF9waWN0dXJlLT5kYXRhW3BsYW5lX2lu
ZGV4XTsKLSAgICBJRFdURUxFTSAqcHJlZD0gKElEV1RFTEVNKillbmMtPm0ucy5zYy5vYm1jX3Nj
cmF0Y2hwYWQgKyBwbGFuZV9pbmRleCpibG9ja19zaXplKmJsb2NrX3NpemUqNDsKKyAgICBJRFdU
RUxFTSAqcHJlZD0gKElEV1RFTEVNKillbmMtPm0ucy5jLnNjLm9ibWNfc2NyYXRjaHBhZCArIHBs
YW5lX2luZGV4KmJsb2NrX3NpemUqYmxvY2tfc2l6ZSo0OwogICAgIHVpbnQ4X3QgKmN1ciA9IHMt
PnNjcmF0Y2hidWY7CiAgICAgdWludDhfdCAqdG1wID0gcy0+ZW11X2VkZ2VfYnVmZmVyOwogICAg
IGNvbnN0IGludCBiX3N0cmlkZSA9IHMtPmJfd2lkdGggPDwgcy0+YmxvY2tfbWF4X2RlcHRoOwpA
QCAtODQwLDEyICs4NDAsMTIgQEAgc3RhdGljIGludCBnZXRfYmxvY2tfcmQoU25vd0VuY0NvbnRl
eHQgKmVuYywgaW50IG1iX3gsIGludCBtYl95LAogICAgICAgICAgICAgZGlzdG9ydGlvbiA9IDA7
CiAgICAgICAgICAgICBmb3IoaT0wOyBpPDQ7IGkrKyl7CiAgICAgICAgICAgICAgICAgaW50IG9m
ZiA9IHN4KzE2KihpJjEpICsgKHN5KzE2KihpPj4xKSkqcmVmX3N0cmlkZTsKLSAgICAgICAgICAg
ICAgICBkaXN0b3J0aW9uICs9IGVuYy0+bS5zLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyAr
IG9mZiwgZHN0ICsgb2ZmLCByZWZfc3RyaWRlLCAxNik7CisgICAgICAgICAgICAgICAgZGlzdG9y
dGlvbiArPSBlbmMtPm0ucy5jLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIG9mZiwgZHN0
ICsgb2ZmLCByZWZfc3RyaWRlLCAxNik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
ZWxzZXsKICAgICAgICAgYXZfYXNzZXJ0MihibG9ja193PT04KTsKLSAgICAgICAgZGlzdG9ydGlv
biA9IGVuYy0+bS5zLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIHN4ICsgc3kqcmVmX3N0
cmlkZSwgZHN0ICsgc3ggKyBzeSpyZWZfc3RyaWRlLCByZWZfc3RyaWRlLCBibG9ja193KjIpOwor
ICAgICAgICBkaXN0b3J0aW9uID0gZW5jLT5tLnMuYy5tZS5tZV9jbXBbMF0oJmVuYy0+bS5zLCBz
cmMgKyBzeCArIHN5KnJlZl9zdHJpZGUsIGRzdCArIHN4ICsgc3kqcmVmX3N0cmlkZSwgcmVmX3N0
cmlkZSwgYmxvY2tfdyoyKTsKICAgICB9CiAKICAgICBpZihwbGFuZV9pbmRleD09MCl7CkBAIC05
MTEsNyArOTExLDcgQEAgc3RhdGljIGludCBnZXRfNGJsb2NrX3JkKFNub3dFbmNDb250ZXh0ICpl
bmMsIGludCBtYl94LCBpbnQgbWJfeSwgaW50IHBsYW5lX2luZGUKICAgICAgICAgfQogCiAgICAg
ICAgIGF2X2Fzc2VydDEoYmxvY2tfdz09IDggfHwgYmxvY2tfdz09MTYpOwotICAgICAgICBkaXN0
b3J0aW9uICs9IGVuYy0+bS5zLm1lLm1lX2NtcFtibG9ja193PT04XSgmZW5jLT5tLnMsIHNyYyAr
IHggKyB5KnJlZl9zdHJpZGUsIGRzdCArIHggKyB5KnJlZl9zdHJpZGUsIHJlZl9zdHJpZGUsIGJs
b2NrX2gpOworICAgICAgICBkaXN0b3J0aW9uICs9IGVuYy0+bS5zLmMubWUubWVfY21wW2Jsb2Nr
X3c9PThdKCZlbmMtPm0ucywgc3JjICsgeCArIHkqcmVmX3N0cmlkZSwgZHN0ICsgeCArIHkqcmVm
X3N0cmlkZSwgcmVmX3N0cmlkZSwgYmxvY2tfaCk7CiAgICAgfQogCiAgICAgaWYocGxhbmVfaW5k
ZXg9PTApewpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgc3RhdGljIGludCBlbmNvZGVfZnJhbWUoQVZD
b2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0LAogewogICAgIFNub3dFbmNDb250ZXh0
ICpjb25zdCBlbmMgPSBhdmN0eC0+cHJpdl9kYXRhOwogICAgIFNub3dDb250ZXh0ICpjb25zdCBz
ID0gJmVuYy0+Y29tOwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBtcHYgPSAmZW5jLT5tLnM7
CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgbXB2ID0gJmVuYy0+bS5zOwogICAgIFJhbmdlQ29k
ZXIgKiBjb25zdCBjPSAmcy0+YzsKICAgICBBVkNvZGVjSW50ZXJuYWwgKmF2Y2kgPSBhdmN0eC0+
aW50ZXJuYWw7CiAgICAgQVZGcmFtZSAqcGljOwpAQCAtMTc5Myw5ICsxNzkzLDkgQEAgc3RhdGlj
IGludCBlbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0LAog
ICAgIHBpYy0+cGljdF90eXBlID0gcGljdC0+cGljdF90eXBlOwogICAgIHBpYy0+cXVhbGl0eSA9
IHBpY3QtPnF1YWxpdHk7CiAKLSAgICBtcHYtPnBpY3R1cmVfbnVtYmVyID0gYXZjdHgtPmZyYW1l
X251bTsKKyAgICBtcHYtPmMucGljdHVyZV9udW1iZXIgPSBhdmN0eC0+ZnJhbWVfbnVtOwogICAg
IGlmKGF2Y3R4LT5mbGFncyZBVl9DT0RFQ19GTEFHX1BBU1MyKXsKLSAgICAgICAgbXB2LT5waWN0
X3R5cGUgPSBwaWMtPnBpY3RfdHlwZSA9IGVuYy0+bS5yY19jb250ZXh0LmVudHJ5W2F2Y3R4LT5m
cmFtZV9udW1dLm5ld19waWN0X3R5cGU7CisgICAgICAgIG1wdi0+Yy5waWN0X3R5cGUgPSBwaWMt
PnBpY3RfdHlwZSA9IGVuYy0+bS5yY19jb250ZXh0LmVudHJ5W2F2Y3R4LT5mcmFtZV9udW1dLm5l
d19waWN0X3R5cGU7CiAgICAgICAgIHMtPmtleWZyYW1lID0gcGljLT5waWN0X3R5cGUgPT0gQVZf
UElDVFVSRV9UWVBFX0k7CiAgICAgICAgIGlmKCEoYXZjdHgtPmZsYWdzJkFWX0NPREVDX0ZMQUdf
UVNDQUxFKSkgewogICAgICAgICAgICAgcGljLT5xdWFsaXR5ID0gZmZfcmF0ZV9lc3RpbWF0ZV9x
c2NhbGUoJmVuYy0+bSwgMCk7CkBAIC0xODA0LDcgKzE4MDQsNyBAQCBzdGF0aWMgaW50IGVuY29k
ZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAgICAgICAgIH0K
ICAgICB9ZWxzZXsKICAgICAgICAgcy0+a2V5ZnJhbWU9IGF2Y3R4LT5nb3Bfc2l6ZT09MCB8fCBh
dmN0eC0+ZnJhbWVfbnVtICUgYXZjdHgtPmdvcF9zaXplID09IDA7Ci0gICAgICAgIG1wdi0+cGlj
dF90eXBlID0gcGljLT5waWN0X3R5cGUgPSBzLT5rZXlmcmFtZSA/IEFWX1BJQ1RVUkVfVFlQRV9J
IDogQVZfUElDVFVSRV9UWVBFX1A7CisgICAgICAgIG1wdi0+Yy5waWN0X3R5cGUgPSBwaWMtPnBp
Y3RfdHlwZSA9IHMtPmtleWZyYW1lID8gQVZfUElDVFVSRV9UWVBFX0kgOiBBVl9QSUNUVVJFX1RZ
UEVfUDsKICAgICB9CiAKICAgICBpZiAoZW5jLT5wYXNzMV9yYyAmJiBhdmN0eC0+ZnJhbWVfbnVt
ID09IDApCkBAIC0xODQxLDkgKzE4NDEsOSBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShBVkNv
ZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAgICAgaWYgKHJldCA8IDApCiAgICAg
ICAgIHJldHVybiByZXQ7CiAKLSAgICBtcHYtPmN1cl9waWMucHRyICAgICAgICAgPSAmZW5jLT5j
dXJfcGljOwotICAgIG1wdi0+Y3VyX3BpYy5wdHItPmYgICAgICA9IHMtPmN1cnJlbnRfcGljdHVy
ZTsKLSAgICBtcHYtPmN1cl9waWMucHRyLT5mLT5wdHMgPSBwaWN0LT5wdHM7CisgICAgbXB2LT5j
LmN1cl9waWMucHRyICAgICAgICAgPSAmZW5jLT5jdXJfcGljOworICAgIG1wdi0+Yy5jdXJfcGlj
LnB0ci0+ZiAgICAgID0gcy0+Y3VycmVudF9waWN0dXJlOworICAgIG1wdi0+Yy5jdXJfcGljLnB0
ci0+Zi0+cHRzID0gcGljdC0+cHRzOwogICAgIGlmKHBpYy0+cGljdF90eXBlID09IEFWX1BJQ1RV
UkVfVFlQRV9QKXsKICAgICAgICAgaW50IGJsb2NrX3dpZHRoID0gKHdpZHRoICsxNSk+PjQ7CiAg
ICAgICAgIGludCBibG9ja19oZWlnaHQ9IChoZWlnaHQrMTUpPj40OwpAQCAtMTg1MiwzNSArMTg1
MiwzNSBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFW
UGFja2V0ICpwa3QsCiAgICAgICAgIGF2X2Fzc2VydDAocy0+Y3VycmVudF9waWN0dXJlLT5kYXRh
WzBdKTsKICAgICAgICAgYXZfYXNzZXJ0MChzLT5sYXN0X3BpY3R1cmVbMF0tPmRhdGFbMF0pOwog
Ci0gICAgICAgIG1wdi0+YXZjdHggPSBzLT5hdmN0eDsKLSAgICAgICAgbXB2LT5sYXN0X3BpYy5w
dHIgICAgPSAmZW5jLT5sYXN0X3BpYzsKLSAgICAgICAgbXB2LT5sYXN0X3BpYy5wdHItPmYgPSBz
LT5sYXN0X3BpY3R1cmVbMF07CisgICAgICAgIG1wdi0+Yy5hdmN0eCA9IHMtPmF2Y3R4OworICAg
ICAgICBtcHYtPmMubGFzdF9waWMucHRyICAgID0gJmVuYy0+bGFzdF9waWM7CisgICAgICAgIG1w
di0+Yy5sYXN0X3BpYy5wdHItPmYgPSBzLT5sYXN0X3BpY3R1cmVbMF07CiAgICAgICAgIG1wdi0+
IG5ld19waWMgICAgID0gcy0+aW5wdXRfcGljdHVyZTsKLSAgICAgICAgbXB2LT5saW5lc2l6ZSAg
ID0gc3RyaWRlOwotICAgICAgICBtcHYtPnV2bGluZXNpemUgPSBzLT5jdXJyZW50X3BpY3R1cmUt
PmxpbmVzaXplWzFdOwotICAgICAgICBtcHYtPndpZHRoICAgICAgPSB3aWR0aDsKLSAgICAgICAg
bXB2LT5oZWlnaHQgICAgID0gaGVpZ2h0OwotICAgICAgICBtcHYtPm1iX3dpZHRoICAgPSBibG9j
a193aWR0aDsKLSAgICAgICAgbXB2LT5tYl9oZWlnaHQgID0gYmxvY2tfaGVpZ2h0OwotICAgICAg
ICBtcHYtPm1iX3N0cmlkZSAgPSAgICAgbXB2LT5tYl93aWR0aCArIDE7Ci0gICAgICAgIG1wdi0+
Yjhfc3RyaWRlICA9IDIgKiBtcHYtPm1iX3dpZHRoICsgMTsKLSAgICAgICAgbXB2LT5mX2NvZGUg
ICAgID0gMTsKLSAgICAgICAgbXB2LT5waWN0X3R5cGUgID0gcGljLT5waWN0X3R5cGU7Ci0gICAg
ICAgIG1wdi0+bWUubW90aW9uX2VzdCA9IGVuYy0+bW90aW9uX2VzdDsKLSAgICAgICAgbXB2LT5t
ZS5zY2VuZV9jaGFuZ2Vfc2NvcmUgPSAwOwotICAgICAgICBtcHYtPm1lLmRpYV9zaXplID0gYXZj
dHgtPmRpYV9zaXplOwotICAgICAgICBtcHYtPnF1YXJ0ZXJfc2FtcGxlICA9IChzLT5hdmN0eC0+
ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQRUwpIT0wOwotICAgICAgICBtcHYtPm91dF9mb3JtYXQg
ICAgICA9IEZNVF9IMjYzOwotICAgICAgICBtcHYtPnVucmVzdHJpY3RlZF9tdiA9IDE7Ci0KLSAg
ICAgICAgbXB2LT5sYW1iZGEgPSBlbmMtPmxhbWJkYTsKLSAgICAgICAgbXB2LT5xc2NhbGUgPSAo
bXB2LT5sYW1iZGEqMTM5ICsgRkZfTEFNQkRBX1NDQUxFKjY0KSA+PiAoRkZfTEFNQkRBX1NISUZU
ICsgNyk7Ci0gICAgICAgIGVuYy0+bGFtYmRhMiAgPSBtcHYtPmxhbWJkYTIgPSAobXB2LT5sYW1i
ZGEqbXB2LT5sYW1iZGEgKyBGRl9MQU1CREFfU0NBTEUvMikgPj4gRkZfTEFNQkRBX1NISUZUOwot
Ci0gICAgICAgIG1wdi0+cWRzcCA9IGVuYy0+cWRzcDsgLy9tb3ZlCi0gICAgICAgIG1wdi0+aGRz
cCA9IHMtPmhkc3A7CisgICAgICAgIG1wdi0+Yy5saW5lc2l6ZSAgID0gc3RyaWRlOworICAgICAg
ICBtcHYtPmMudXZsaW5lc2l6ZSA9IHMtPmN1cnJlbnRfcGljdHVyZS0+bGluZXNpemVbMV07Cisg
ICAgICAgIG1wdi0+Yy53aWR0aCAgICAgID0gd2lkdGg7CisgICAgICAgIG1wdi0+Yy5oZWlnaHQg
ICAgID0gaGVpZ2h0OworICAgICAgICBtcHYtPmMubWJfd2lkdGggICA9IGJsb2NrX3dpZHRoOwor
ICAgICAgICBtcHYtPmMubWJfaGVpZ2h0ICA9IGJsb2NrX2hlaWdodDsKKyAgICAgICAgbXB2LT5j
Lm1iX3N0cmlkZSAgPSAgICAgbXB2LT5jLm1iX3dpZHRoICsgMTsKKyAgICAgICAgbXB2LT5jLmI4
X3N0cmlkZSAgPSAyICogbXB2LT5jLm1iX3dpZHRoICsgMTsKKyAgICAgICAgbXB2LT5jLmZfY29k
ZSAgICAgPSAxOworICAgICAgICBtcHYtPmMucGljdF90eXBlICA9IHBpYy0+cGljdF90eXBlOwor
ICAgICAgICBtcHYtPmMubWUubW90aW9uX2VzdCA9IGVuYy0+bW90aW9uX2VzdDsKKyAgICAgICAg
bXB2LT5jLm1lLnNjZW5lX2NoYW5nZV9zY29yZSA9IDA7CisgICAgICAgIG1wdi0+Yy5tZS5kaWFf
c2l6ZSA9IGF2Y3R4LT5kaWFfc2l6ZTsKKyAgICAgICAgbXB2LT5jLnF1YXJ0ZXJfc2FtcGxlICA9
IChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQRUwpIT0wOworICAgICAgICBtcHYt
PmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7CisgICAgICAgIG1wdi0+Yy51bnJlc3RyaWN0
ZWRfbXYgPSAxOworCisgICAgICAgIG1wdi0+Yy5sYW1iZGEgPSBlbmMtPmxhbWJkYTsKKyAgICAg
ICAgbXB2LT5jLnFzY2FsZSA9IChtcHYtPmMubGFtYmRhKjEzOSArIEZGX0xBTUJEQV9TQ0FMRSo2
NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcpOworICAgICAgICBlbmMtPmxhbWJkYTIgID0gbXB2
LT5jLmxhbWJkYTIgPSAobXB2LT5jLmxhbWJkYSptcHYtPmMubGFtYmRhICsgRkZfTEFNQkRBX1ND
QUxFLzIpID4+IEZGX0xBTUJEQV9TSElGVDsKKworICAgICAgICBtcHYtPmMucWRzcCA9IGVuYy0+
cWRzcDsgLy9tb3ZlCisgICAgICAgIG1wdi0+Yy5oZHNwID0gcy0+aGRzcDsKICAgICAgICAgZmZf
bWVfaW5pdF9waWMobXB2KTsKLSAgICAgICAgcy0+aGRzcCA9IG1wdi0+aGRzcDsKKyAgICAgICAg
cy0+aGRzcCA9IG1wdi0+Yy5oZHNwOwogICAgIH0KIAogICAgIGlmIChlbmMtPnBhc3MxX3JjKSB7
CkBAIC0xOTAxLDcgKzE5MDEsNyBAQCByZWRvX2ZyYW1lOgogICAgICAgICByZXR1cm4gQVZFUlJP
UihFSU5WQUwpOwogICAgIH0KIAotICAgIG1wdi0+cGljdF90eXBlID0gcGljLT5waWN0X3R5cGU7
CisgICAgbXB2LT5jLnBpY3RfdHlwZSA9IHBpYy0+cGljdF90eXBlOwogICAgIHMtPnFiaWFzID0g
cGljLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AgPyAyIDogMDsKIAogICAgIGZmX3Nu
b3dfY29tbW9uX2luaXRfYWZ0ZXJfaGVhZGVyKGF2Y3R4KTsKQEAgLTE5MzcsNyArMTkzNyw3IEBA
IHJlZG9fZnJhbWU6CiAgICAgICAgICAgICBpZiggICBwbGFuZV9pbmRleD09MAogICAgICAgICAg
ICAgICAgJiYgcGljLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AKICAgICAgICAgICAg
ICAgICYmICEoYXZjdHgtPmZsYWdzJkFWX0NPREVDX0ZMQUdfUEFTUzIpCi0gICAgICAgICAgICAg
ICAmJiBtcHYtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA+IGVuYy0+c2NlbmVjaGFuZ2VfdGhyZXNo
b2xkKSB7CisgICAgICAgICAgICAgICAmJiBtcHYtPmMubWUuc2NlbmVfY2hhbmdlX3Njb3JlID4g
ZW5jLT5zY2VuZWNoYW5nZV90aHJlc2hvbGQpIHsKICAgICAgICAgICAgICAgICBmZl9pbml0X3Jh
bmdlX2VuY29kZXIoYywgcGt0LT5kYXRhLCBwa3QtPnNpemUpOwogICAgICAgICAgICAgICAgIGZm
X2J1aWxkX3JhY19zdGF0ZXMoYywgKDFMTDw8MzIpLzIwLCAyNTYtOCk7CiAgICAgICAgICAgICAg
ICAgcGljLT5waWN0X3R5cGU9IEFWX1BJQ1RVUkVfVFlQRV9JOwpAQCAtMjA1OCw3ICsyMDU4LDcg
QEAgcmVkb19mcmFtZToKICAgICB9CiAgICAgaWYoYXZjdHgtPmZsYWdzJkFWX0NPREVDX0ZMQUdf
UEFTUzEpCiAgICAgICAgIGZmX3dyaXRlX3Bhc3MxX3N0YXRzKCZlbmMtPm0pOwotICAgIGVuYy0+
bS5sYXN0X3BpY3RfdHlwZSA9IG1wdi0+cGljdF90eXBlOworICAgIGVuYy0+bS5sYXN0X3BpY3Rf
dHlwZSA9IG1wdi0+Yy5waWN0X3R5cGU7CiAKICAgICBlbW1zX2MoKTsKIApAQCAtMjA5MiwxMCAr
MjA5MiwxMCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2VuZChBVkNvZGVjQ29udGV4dCAq
YXZjdHgpCiAgICAgICAgIGF2X2ZyZWVwKCZzLT5yZWZfc2NvcmVzW2ldKTsKICAgICB9CiAKLSAg
ICBlbmMtPm0ucy5tZS50ZW1wID0gTlVMTDsKLSAgICBhdl9mcmVlcCgmZW5jLT5tLnMubWUuc2Ny
YXRjaHBhZCk7Ci0gICAgYXZfZnJlZXAoJmVuYy0+bS5zLm1lLm1hcCk7Ci0gICAgYXZfZnJlZXAo
JmVuYy0+bS5zLnNjLm9ibWNfc2NyYXRjaHBhZCk7CisgICAgZW5jLT5tLnMuYy5tZS50ZW1wID0g
TlVMTDsKKyAgICBhdl9mcmVlcCgmZW5jLT5tLnMuYy5tZS5zY3JhdGNocGFkKTsKKyAgICBhdl9m
cmVlcCgmZW5jLT5tLnMuYy5tZS5tYXApOworICAgIGF2X2ZyZWVwKCZlbmMtPm0ucy5jLnNjLm9i
bWNfc2NyYXRjaHBhZCk7CiAKICAgICBhdl9mcmVlcCgmYXZjdHgtPnN0YXRzX291dCk7CiAKZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvc3BlZWRocWVuYy5jIGIvbGliYXZjb2RlYy9zcGVlZGhxZW5j
LmMKaW5kZXggMWUyODcwMmYxOC4uN2RkZmI5MjA3NiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9z
cGVlZGhxZW5jLmMKKysrIGIvbGliYXZjb2RlYy9zcGVlZGhxZW5jLmMKQEAgLTk4LDkgKzk4LDkg
QEAgc3RhdGljIGF2X2NvbGQgdm9pZCBzcGVlZGhxX2luaXRfc3RhdGljX2RhdGEodm9pZCkKIHN0
YXRpYyBpbnQgc3BlZWRocV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQg
KmNvbnN0IG0pCiB7CiAgICAgU3BlZWRIUUVuY0NvbnRleHQgKmNvbnN0IGN0eCA9IChTcGVlZEhR
RW5jQ29udGV4dCopbTsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAg
IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAotICAgIHB1dF9iaXRzX2xlKCZzLT5w
YiwgOCwgMTAwIC0gcy0+cXNjYWxlICogMik7ICAvKiBGSVhNRSB3aHkgZG91YmxlZCAqLworICAg
IHB1dF9iaXRzX2xlKCZzLT5wYiwgOCwgMTAwIC0gcy0+Yy5xc2NhbGUgKiAyKTsgIC8qIEZJWE1F
IHdoeSBkb3VibGVkICovCiAgICAgcHV0X2JpdHNfbGUoJnMtPnBiLCAyNCwgNCk7ICAvKiBubyBz
ZWNvbmQgZmllbGQgKi8KIAogICAgIGN0eC0+c2xpY2Vfc3RhcnQgPSA0OwpAQCAtMTEwLDcgKzEx
MCw3IEBAIHN0YXRpYyBpbnQgc3BlZWRocV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVu
Y0NvbnRleHQgKmNvbnN0IG0pCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgZmZfc3BlZWRocV9l
bmRfc2xpY2UoTXBlZ0VuY0NvbnRleHQgKnMpCit2b2lkIGZmX3NwZWVkaHFfZW5kX3NsaWNlKE1Q
VkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7CiAgICAgU3BlZWRIUUVuY0NvbnRleHQgKmN0eCA9IChT
cGVlZEhRRW5jQ29udGV4dCopczsKICAgICBpbnQgc2xpY2VfbGVuOwpAQCAtMTU4LDcgKzE1OCw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfZGMoUHV0Qml0Q29udGV4dCAqcGIsIGludCBk
aWZmLCBpbnQgY29tcG9uZW50KQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlX2Jsb2Nr
KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCitzdGF0aWMgdm9pZCBl
bmNvZGVfYmxvY2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50MTZfdCBibG9ja1td
LCBpbnQgbikKIHsKICAgICBpbnQgYWxldmVsLCBsZXZlbCwgbGFzdF9ub25femVybywgZGMsIGks
IGosIHJ1biwgbGFzdF9pbmRleCwgc2lnbjsKICAgICBpbnQgY29kZTsKQEAgLTE2NywxNiArMTY3
LDE2IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqcywgaW50MTZf
dCAqYmxvY2ssIGludCBuKQogICAgIC8qIERDIGNvZWYgKi8KICAgICBjb21wb25lbnQgPSAobiA8
PSAzID8gMCA6IChuJjEpICsgMSk7CiAgICAgZGMgPSBibG9ja1swXTsgLyogb3ZlcmZsb3cgaXMg
aW1wb3NzaWJsZSAqLwotICAgIHZhbCA9IHMtPmxhc3RfZGNbY29tcG9uZW50XSAtIGRjOyAgLyog
b3Bwb3NpdGUgb2YgbW9zdCBjb2RlY3MgKi8KKyAgICB2YWwgPSBzLT5jLmxhc3RfZGNbY29tcG9u
ZW50XSAtIGRjOyAgLyogb3Bwb3NpdGUgb2YgbW9zdCBjb2RlY3MgKi8KICAgICBlbmNvZGVfZGMo
JnMtPnBiLCB2YWwsIGNvbXBvbmVudCk7Ci0gICAgcy0+bGFzdF9kY1tjb21wb25lbnRdID0gZGM7
CisgICAgcy0+Yy5sYXN0X2RjW2NvbXBvbmVudF0gPSBkYzsKIAogICAgIC8qIG5vdyBxdWFudGlm
eSAmIGVuY29kZSBBQyBjb2VmcyAqLwogICAgIGxhc3Rfbm9uX3plcm8gPSAwOwotICAgIGxhc3Rf
aW5kZXggPSBzLT5ibG9ja19sYXN0X2luZGV4W25dOworICAgIGxhc3RfaW5kZXggPSBzLT5jLmJs
b2NrX2xhc3RfaW5kZXhbbl07CiAKICAgICBmb3IgKGkgPSAxOyBpIDw9IGxhc3RfaW5kZXg7IGkr
KykgewotICAgICAgICBqICAgICA9IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwor
ICAgICAgICBqICAgICA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAg
ICAgIGxldmVsID0gYmxvY2tbal07CiAKICAgICAgICAgLyogZW5jb2RlIHVzaW5nIFZMQyAqLwpA
QCAtMjA3LDE0ICsyMDcsMTQgQEAgc3RhdGljIHZvaWQgZW5jb2RlX2Jsb2NrKE1wZWdFbmNDb250
ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgcHV0X2JpdHNfbGUoJnMtPnBiLCA0
LCA2KTsKIH0KIAotc3RhdGljIHZvaWQgc3BlZWRocV9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQg
KmNvbnN0IHMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSwKK3N0YXRpYyB2b2lkIHNwZWVkaHFfZW5j
b2RlX21iKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bnVzZWRfeCwgaW50IHVudXNlZF95KQog
ewogICAgIGludCBpOwogICAgIGZvcihpPTA7aTw2O2krKykgewogICAgICAgICBlbmNvZGVfYmxv
Y2socywgYmxvY2tbaV0sIGkpOwogICAgIH0KLSAgICBpZiAocy0+Y2hyb21hX2Zvcm1hdCA9PSBD
SFJPTUFfNDQ0KSB7CisgICAgaWYgKHMtPmMuY2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDQ0KSB7
CiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1s4XSwgOCk7CiAgICAgICAgIGVuY29kZV9i
bG9jayhzLCBibG9ja1s5XSwgOSk7CiAKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgdm9pZCBz
cGVlZGhxX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1sx
Ml1bNjRdLAogCiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1sxMF0sIDEwKTsKICAgICAg
ICAgZW5jb2RlX2Jsb2NrKHMsIGJsb2NrWzExXSwgMTEpOwotICAgIH0gZWxzZSBpZiAocy0+Y2hy
b21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIyKSB7CisgICAgfSBlbHNlIGlmIChzLT5jLmNocm9tYV9m
b3JtYXQgPT0gQ0hST01BXzQyMikgewogICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbNl0s
IDYpOwogICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbN10sIDcpOwogICAgIH0KQEAgLTIz
NSw3ICsyMzUsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgc3BlZWRocV9lbmNvZGVfaW5pdChBVkNv
ZGVjQ29udGV4dCAqYXZjdHgpCiB7CiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNl
ID0gQVZfT05DRV9JTklUOwogICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtID0gYXZjdHgt
PnByaXZfZGF0YTsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1Q
VkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBpbnQgcmV0OwogCiAgICAgaWYgKGF2
Y3R4LT53aWR0aCA+IDY1NTAwIHx8IGF2Y3R4LT5oZWlnaHQgPiA2NTUwMCkgewpAQCAtMjc0LDgg
KzI3NCw4IEBAIHN0YXRpYyBhdl9jb2xkIGludCBzcGVlZGhxX2VuY29kZV9pbml0KEFWQ29kZWND
b250ZXh0ICphdmN0eCkKICAgICBzLT5pbnRyYV9jaHJvbWFfYWNfdmxjX2xlbmd0aCAgICAgID0K
ICAgICBzLT5pbnRyYV9jaHJvbWFfYWNfdmxjX2xhc3RfbGVuZ3RoID0gdW5pX3NwZWVkaHFfYWNf
dmxjX2xlbjsKIAotICAgIHMtPnlfZGNfc2NhbGVfdGFibGUgPQotICAgIHMtPmNfZGNfc2NhbGVf
dGFibGUgPSBmZl9tcGVnMTJfZGNfc2NhbGVfdGFibGVbM107CisgICAgcy0+Yy55X2RjX3NjYWxl
X3RhYmxlID0KKyAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBmZl9tcGVnMTJfZGNfc2NhbGVf
dGFibGVbM107CiAKICAgICByZXQgPSBmZl9tcHZfZW5jb2RlX2luaXQoYXZjdHgpOwogICAgIGlm
IChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9zcGVlZGhxZW5jLmggYi9saWJhdmNv
ZGVjL3NwZWVkaHFlbmMuaAppbmRleCBlODA0Y2U3MTRhLi41NjhmODJjNzZlIDEwMDY0NAotLS0g
YS9saWJhdmNvZGVjL3NwZWVkaHFlbmMuaAorKysgYi9saWJhdmNvZGVjL3NwZWVkaHFlbmMuaApA
QCAtMjksMTEgKzI5LDkgQEAKICNpZm5kZWYgQVZDT0RFQ19TUEVFREhRRU5DX0gKICNkZWZpbmUg
QVZDT0RFQ19TUEVFREhRRU5DX0gKIAotI2luY2x1ZGUgPHN0ZGludC5oPgordHlwZWRlZiBzdHJ1
Y3QgTVBWRW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OwogCi0jaW5jbHVkZSAibXBlZ3ZpZGVvLmgi
Ci0KLXZvaWQgZmZfc3BlZWRocV9lbmRfc2xpY2UoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBm
Zl9zcGVlZGhxX2VuZF9zbGljZShNUFZFbmNDb250ZXh0ICpzKTsKIAogc3RhdGljIGlubGluZSBp
bnQgZmZfc3BlZWRocV9tYl9yb3dzX2luX3NsaWNlKGludCBzbGljZV9udW0sIGludCBtYl9oZWln
aHQpCiB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3N2cTFlbmMuYyBiL2xpYmF2Y29kZWMvc3Zx
MWVuYy5jCmluZGV4IDY1MmRjMTFiMDMuLmRkYzk0ZGZmZTUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k
ZWMvc3ZxMWVuYy5jCisrKyBiL2xpYmF2Y29kZWMvc3ZxMWVuYy5jCkBAIC01OCw4ICs1OCw4IEBA
CiB0eXBlZGVmIHN0cnVjdCBTVlExRW5jQ29udGV4dCB7CiAgICAgLyogRklYTUU6IE5lZWRlZCBm
b3IgbW90aW9uIGVzdGltYXRpb24sIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55dGhpbmcKICAg
ICAgKiBlbHNlLCB0aGUgaWRlYSBpcyB0byBtYWtlIHRoZSBtb3Rpb24gZXN0aW1hdGlvbiBldmVu
dHVhbGx5IGluZGVwZW5kZW50Ci0gICAgICogb2YgTXBlZ0VuY0NvbnRleHQsIHNvIHRoaXMgd2ls
bCBiZSByZW1vdmVkIHRoZW4uICovCi0gICAgTXBlZ0VuY0NvbnRleHQgbTsKKyAgICAgKiBvZiBN
UFZFbmNDb250ZXh0LCBzbyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB0aGVuLiAqLworICAgIE1QVkVu
Y0NvbnRleHQgbTsKICAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHg7CiAgICAgTUVDbXBDb250ZXh0
IG1lY2M7CiAgICAgSHBlbERTUENvbnRleHQgaGRzcDsKQEAgLTI4OSw3ICsyODksOCBAQCBzdGF0
aWMgaW50IGVuY29kZV9ibG9jayhTVlExRW5jQ29udGV4dCAqcywgdWludDhfdCAqc3JjLCB1aW50
OF90ICpyZWYsCiAgICAgcmV0dXJuIGJlc3Rfc2NvcmU7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRf
YmxvY2tfaW5kZXgoTXBlZ0VuY0NvbnRleHQgKnMpeworc3RhdGljIHZvaWQgaW5pdF9ibG9ja19p
bmRleChNcGVnRW5jQ29udGV4dCAqY29uc3QgcykKK3sKICAgICBzLT5ibG9ja19pbmRleFswXT0g
cy0+Yjhfc3RyaWRlKihzLT5tYl95KjIgICAgKSAgICAgKyBzLT5tYl94KjI7CiAgICAgcy0+Ymxv
Y2tfaW5kZXhbMV09IHMtPmI4X3N0cmlkZSoocy0+bWJfeSoyICAgICkgKyAxICsgcy0+bWJfeCoy
OwogICAgIHMtPmJsb2NrX2luZGV4WzJdPSBzLT5iOF9zdHJpZGUqKHMtPm1iX3kqMiArIDEpICAg
ICArIHMtPm1iX3gqMjsKQEAgLTMwNSw2ICszMDYsNyBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2Rl
X3BsYW5lKFNWUTFFbmNDb250ZXh0ICpzLCBpbnQgcGxhbmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlY29kZWRfcGxhbmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNyY19zdHJpZGUsIGludCBz
dHJpZGUpCiB7CisgICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMyID0gJnMtPm0uYzsKICAgICBp
bnQgeCwgeTsKICAgICBpbnQgaTsKICAgICBpbnQgYmxvY2tfd2lkdGgsIGJsb2NrX2hlaWdodDsK
QEAgLTMyMywzNiArMzI1LDM2IEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxhbmUoU1ZRMUVu
Y0NvbnRleHQgKnMsIGludCBwbGFuZSwKICAgICBibG9ja19oZWlnaHQgPSAoaGVpZ2h0ICsgMTUp
IC8gMTY7CiAKICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9QKSB7Ci0g
ICAgICAgIHMtPm0uYXZjdHggICAgICAgICAgICAgICAgICAgICAgICAgPSBzLT5hdmN0eDsKLSAg
ICAgICAgcy0+bS5sYXN0X3BpYy5kYXRhWzBdICAgICAgICA9IHJlZl9wbGFuZTsKLSAgICAgICAg
cy0+bS5saW5lc2l6ZSAgICAgICAgICAgICAgICAgICAgICA9Ci0gICAgICAgIHMtPm0ubGFzdF9w
aWMubGluZXNpemVbMF0gICAgPQorICAgICAgICBzMi0+YXZjdHggICAgICAgICAgICAgICAgICAg
ICAgICAgPSBzLT5hdmN0eDsKKyAgICAgICAgczItPmxhc3RfcGljLmRhdGFbMF0gICAgICAgID0g
cmVmX3BsYW5lOworICAgICAgICBzMi0+bGluZXNpemUgICAgICAgICAgICAgICAgICAgICAgPQor
ICAgICAgICBzMi0+bGFzdF9waWMubGluZXNpemVbMF0gICAgPQogICAgICAgICBzLT5tLm5ld19w
aWMtPmxpbmVzaXplWzBdICAgICAgPQotICAgICAgICBzLT5tLmN1cl9waWMubGluZXNpemVbMF0g
PSBzdHJpZGU7Ci0gICAgICAgIHMtPm0ud2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgPSB3
aWR0aDsKLSAgICAgICAgcy0+bS5oZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICA9IGhlaWdo
dDsKLSAgICAgICAgcy0+bS5tYl93aWR0aCAgICAgICAgICAgICAgICAgICAgICA9IGJsb2NrX3dp
ZHRoOwotICAgICAgICBzLT5tLm1iX2hlaWdodCAgICAgICAgICAgICAgICAgICAgID0gYmxvY2tf
aGVpZ2h0OwotICAgICAgICBzLT5tLm1iX3N0cmlkZSAgICAgICAgICAgICAgICAgICAgID0gcy0+
bS5tYl93aWR0aCArIDE7Ci0gICAgICAgIHMtPm0uYjhfc3RyaWRlICAgICAgICAgICAgICAgICAg
ICAgPSAyICogcy0+bS5tYl93aWR0aCArIDE7Ci0gICAgICAgIHMtPm0uZl9jb2RlICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxOwotICAgICAgICBzLT5tLnBpY3RfdHlwZSAgICAgICAgICAgICAg
ICAgICAgID0gcy0+cGljdF90eXBlOwotICAgICAgICBzLT5tLm1lLnNjZW5lX2NoYW5nZV9zY29y
ZSAgICAgICAgID0gMDsKLSAgICAgICAgLy8gcy0+bS5vdXRfZm9ybWF0ICAgICAgICAgICAgICAg
ICAgICA9IEZNVF9IMjYzOwotICAgICAgICAvLyBzLT5tLnVucmVzdHJpY3RlZF9tdiAgICAgICAg
ICAgICAgID0gMTsKLSAgICAgICAgcy0+bS5sYW1iZGEgICAgICAgICAgICAgICAgICAgICAgICA9
IHMtPnF1YWxpdHk7Ci0gICAgICAgIHMtPm0ucXNjYWxlICAgICAgICAgICAgICAgICAgICAgICAg
PSBzLT5tLmxhbWJkYSAqIDEzOSArCisgICAgICAgIHMyLT5jdXJfcGljLmxpbmVzaXplWzBdID0g
c3RyaWRlOworICAgICAgICBzMi0+d2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgPSB3aWR0
aDsKKyAgICAgICAgczItPmhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgID0gaGVpZ2h0Owor
ICAgICAgICBzMi0+bWJfd2lkdGggICAgICAgICAgICAgICAgICAgICAgPSBibG9ja193aWR0aDsK
KyAgICAgICAgczItPm1iX2hlaWdodCAgICAgICAgICAgICAgICAgICAgID0gYmxvY2tfaGVpZ2h0
OworICAgICAgICBzMi0+bWJfc3RyaWRlICAgICAgICAgICAgICAgICAgICAgPSBzMi0+bWJfd2lk
dGggKyAxOworICAgICAgICBzMi0+Yjhfc3RyaWRlICAgICAgICAgICAgICAgICAgICAgPSAyICog
czItPm1iX3dpZHRoICsgMTsKKyAgICAgICAgczItPmZfY29kZSAgICAgICAgICAgICAgICAgICAg
ICAgID0gMTsKKyAgICAgICAgczItPnBpY3RfdHlwZSAgICAgICAgICAgICAgICAgICAgID0gcy0+
cGljdF90eXBlOworICAgICAgICBzMi0+bWUuc2NlbmVfY2hhbmdlX3Njb3JlICAgICAgICAgPSAw
OworICAgICAgICAvLyBzMi0+b3V0X2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgPSBGTVRfSDI2
MzsKKyAgICAgICAgLy8gczItPnVucmVzdHJpY3RlZF9tdiAgICAgICAgICAgICAgID0gMTsKKyAg
ICAgICAgczItPmxhbWJkYSAgICAgICAgICAgICAgICAgICAgICAgID0gcy0+cXVhbGl0eTsKKyAg
ICAgICAgczItPnFzY2FsZSAgICAgICAgICAgICAgICAgICAgICAgID0gczItPmxhbWJkYSAqIDEz
OSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGRl9MQU1C
REFfU0NBTEUgKiA2NCA+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkZfTEFNQkRBX1NISUZUICsgNzsKLSAgICAgICAgcy0+bS5sYW1iZGEyICAgICAgICAg
ICAgICAgICAgICAgICA9IHMtPm0ubGFtYmRhICogcy0+bS5sYW1iZGEgKworICAgICAgICBzMi0+
bGFtYmRhMiAgICAgICAgICAgICAgICAgICAgICAgPSBzMi0+bGFtYmRhICogczItPmxhbWJkYSAr
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGRl9MQU1CREFf
U0NBTEUgLyAyID4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGRl9MQU1CREFfU0hJRlQ7CiAKICAgICAgICAgaWYgKCFzLT5tb3Rpb25fdmFsOFtwbGFuZV0p
IHsKLSAgICAgICAgICAgIHMtPm1vdGlvbl92YWw4W3BsYW5lXSAgPSBhdl9tYWxsb2N6KChzLT5t
LmI4X3N0cmlkZSAqCisgICAgICAgICAgICBzLT5tb3Rpb25fdmFsOFtwbGFuZV0gID0gYXZfbWFs
bG9jeigoczItPmI4X3N0cmlkZSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmxvY2tfaGVpZ2h0ICogMiArIDIpICoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBzaXplb2YoaW50MTZfdCkpOwotICAg
ICAgICAgICAgcy0+bW90aW9uX3ZhbDE2W3BsYW5lXSA9IGF2X21hbGxvY3ooKHMtPm0ubWJfc3Ry
aWRlICoKKyAgICAgICAgICAgIHMtPm1vdGlvbl92YWwxNltwbGFuZV0gPSBhdl9tYWxsb2N6KChz
Mi0+bWJfc3RyaWRlICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYmxvY2tfaGVpZ2h0ICsgMikgKyAxKSAqCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAg
ICAgIGlmICghcy0+bW90aW9uX3ZhbDhbcGxhbmVdIHx8ICFzLT5tb3Rpb25fdmFsMTZbcGxhbmVd
KQpAQCAtMzY1LDE4ICszNjcsMTggQEAgc3RhdGljIGludCBzdnExX2VuY29kZV9wbGFuZShTVlEx
RW5jQ29udGV4dCAqcywgaW50IHBsYW5lLAogICAgICAgICBzLT5tLm1iX21lYW4gICA9ICh1aW50
OF90ICopcy0+ZHVtbXk7CiAgICAgICAgIHMtPm0ubWJfdmFyICAgID0gKHVpbnQxNl90ICopcy0+
ZHVtbXk7CiAgICAgICAgIHMtPm0ubWNfbWJfdmFyID0gKHVpbnQxNl90ICopcy0+ZHVtbXk7Ci0g
ICAgICAgIHMtPm0uY3VyX3BpYy5tYl90eXBlID0gcy0+ZHVtbXk7CisgICAgICAgIHMyLT5jdXJf
cGljLm1iX3R5cGUgPSBzLT5kdW1teTsKIAotICAgICAgICBzLT5tLmN1cl9waWMubW90aW9uX3Zh
bFswXSAgID0gcy0+bW90aW9uX3ZhbDhbcGxhbmVdICsgMjsKLSAgICAgICAgcy0+bS5wX212X3Rh
YmxlICAgICAgICAgICAgICAgICAgICAgID0gcy0+bW90aW9uX3ZhbDE2W3BsYW5lXSArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm0ubWJfc3RyaWRl
ICsgMTsKKyAgICAgICAgczItPmN1cl9waWMubW90aW9uX3ZhbFswXSAgID0gcy0+bW90aW9uX3Zh
bDhbcGxhbmVdICsgMjsKKyAgICAgICAgcy0+bS5wX212X3RhYmxlICAgICAgICAgICAgID0gcy0+
bW90aW9uX3ZhbDE2W3BsYW5lXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzMi0+bWJfc3RyaWRlICsgMTsKICAgICAgICAgZmZfbWVfaW5pdF9waWMoJnMt
Pm0pOwogCi0gICAgICAgIHMtPm0ubWUuZGlhX3NpemUgICAgICA9IHMtPmF2Y3R4LT5kaWFfc2l6
ZTsKLSAgICAgICAgcy0+bS5maXJzdF9zbGljZV9saW5lID0gMTsKKyAgICAgICAgczItPm1lLmRp
YV9zaXplICAgICAgPSBzLT5hdmN0eC0+ZGlhX3NpemU7CisgICAgICAgIHMyLT5maXJzdF9zbGlj
ZV9saW5lID0gMTsKICAgICAgICAgZm9yICh5ID0gMDsgeSA8IGJsb2NrX2hlaWdodDsgeSsrKSB7
CiAgICAgICAgICAgICBzLT5tLm5ld19waWMtPmRhdGFbMF0gID0gc3JjIC0geSAqIDE2ICogc3Ry
aWRlOyAvLyB1Z2x5Ci0gICAgICAgICAgICBzLT5tLm1iX3kgICAgICAgICAgICAgICAgICA9IHk7
CisgICAgICAgICAgICBzMi0+bWJfeSAgICAgICAgICAgICAgICAgID0geTsKIAogICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IDE2ICYmIGkgKyAxNiAqIHkgPCBoZWlnaHQ7IGkrKykgewogICAg
ICAgICAgICAgICAgIG1lbWNweSgmc3JjW2kgKiBzdHJpZGVdLCAmc3JjX3BsYW5lWyhpICsgMTYg
KiB5KSAqIHNyY19zdHJpZGVdLApAQCAtMzg5LDIwICszOTEsMjAgQEAgc3RhdGljIGludCBzdnEx
X2VuY29kZV9wbGFuZShTVlExRW5jQ29udGV4dCAqcywgaW50IHBsYW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAxNiAqIGJsb2NrX3dpZHRoKTsKIAogICAgICAgICAgICAgZm9yICh4ID0gMDsg
eCA8IGJsb2NrX3dpZHRoOyB4KyspIHsKLSAgICAgICAgICAgICAgICBzLT5tLm1iX3ggPSB4Owot
ICAgICAgICAgICAgICAgIGluaXRfYmxvY2tfaW5kZXgoJnMtPm0pOworICAgICAgICAgICAgICAg
IHMyLT5tYl94ID0geDsKKyAgICAgICAgICAgICAgICBpbml0X2Jsb2NrX2luZGV4KHMyKTsKIAog
ICAgICAgICAgICAgICAgIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKCZzLT5tLCB4LCB5KTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMtPm0uZmlyc3Rfc2xpY2VfbGluZSA9IDA7Cisg
ICAgICAgICAgICBzMi0+Zmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgICAgIH0KIAogICAgICAg
ICBmZl9maXhfbG9uZ19wX212cygmcy0+bSwgQ0FORElEQVRFX01CX1RZUEVfSU5UUkEpOwotICAg
ICAgICBmZl9maXhfbG9uZ19tdnMoJnMtPm0sIE5VTEwsIDAsIHMtPm0ucF9tdl90YWJsZSwgcy0+
bS5mX2NvZGUsCisgICAgICAgIGZmX2ZpeF9sb25nX212cygmcy0+bSwgTlVMTCwgMCwgcy0+bS5w
X212X3RhYmxlLCBzMi0+Zl9jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0FORElEQVRF
X01CX1RZUEVfSU5URVIsIDApOwogICAgIH0KIAotICAgIHMtPm0uZmlyc3Rfc2xpY2VfbGluZSA9
IDE7CisgICAgczItPmZpcnN0X3NsaWNlX2xpbmUgPSAxOwogICAgIGZvciAoeSA9IDA7IHkgPCBi
bG9ja19oZWlnaHQ7IHkrKykgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTYgJiYgaSArIDE2
ICogeSA8IGhlaWdodDsgaSsrKSB7CiAgICAgICAgICAgICBtZW1jcHkoJnNyY1tpICogc3RyaWRl
XSwgJnNyY19wbGFuZVsoaSArIDE2ICogeSkgKiBzcmNfc3RyaWRlXSwKQEAgLTQxMyw3ICs0MTUs
NyBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2RlX3BsYW5lKFNWUTFFbmNDb250ZXh0ICpzLCBpbnQg
cGxhbmUsCiAgICAgICAgIGZvciAoOyBpIDwgMTYgJiYgaSArIDE2ICogeSA8IDE2ICogYmxvY2tf
aGVpZ2h0OyBpKyspCiAgICAgICAgICAgICBtZW1jcHkoJnNyY1tpICogc3RyaWRlXSwgJnNyY1so
aSAtIDEpICogc3RyaWRlXSwgMTYgKiBibG9ja193aWR0aCk7CiAKLSAgICAgICAgcy0+bS5tYl95
ID0geTsKKyAgICAgICAgczItPm1iX3kgPSB5OwogICAgICAgICBmb3IgKHggPSAwOyB4IDwgYmxv
Y2tfd2lkdGg7IHgrKykgewogICAgICAgICAgICAgdWludDhfdCByZW9yZGVyX2J1ZmZlclsyXVs2
XVs3ICogMzJdOwogICAgICAgICAgICAgaW50IGNvdW50WzJdWzZdOwpAQCAtNDI4LDExICs0MzAs
MTEgQEAgc3RhdGljIGludCBzdnExX2VuY29kZV9wbGFuZShTVlExRW5jQ29udGV4dCAqcywgaW50
IHBsYW5lLAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgcy0+bS5tYl94ID0geDsKLSAgICAgICAgICAgIGluaXRfYmxvY2tfaW5kZXgoJnMt
Pm0pOworICAgICAgICAgICAgczItPm1iX3ggPSB4OworICAgICAgICAgICAgaW5pdF9ibG9ja19p
bmRleChzMik7CiAKICAgICAgICAgICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U
WVBFX0kgfHwKLSAgICAgICAgICAgICAgICAocy0+bS5tYl90eXBlW3ggKyB5ICogcy0+bS5tYl9z
dHJpZGVdICYKKyAgICAgICAgICAgICAgICAocy0+bS5tYl90eXBlW3ggKyB5ICogczItPm1iX3N0
cmlkZV0gJgogICAgICAgICAgICAgICAgICBDQU5ESURBVEVfTUJfVFlQRV9JTlRSQSkpIHsKICAg
ICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgICAgICAg
ICBpbml0X3B1dF9iaXRzKCZzLT5yZW9yZGVyX3BiW2ldLCByZW9yZGVyX2J1ZmZlclswXVtpXSwK
QEAgLTQ1Niw4ICs0NTgsOCBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2RlX3BsYW5lKFNWUTFFbmND
b250ZXh0ICpzLCBpbnQgcGxhbmUsCiAgICAgICAgICAgICAgICAgaW50IG14LCBteSwgcHJlZF94
LCBwcmVkX3ksIGR4eTsKICAgICAgICAgICAgICAgICBpbnQxNl90ICptb3Rpb25fcHRyOwogCi0g
ICAgICAgICAgICAgICAgbW90aW9uX3B0ciA9IGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPm0sIDAs
IDAsICZwcmVkX3gsICZwcmVkX3kpOwotICAgICAgICAgICAgICAgIGlmIChzLT5tLm1iX3R5cGVb
eCArIHkgKiBzLT5tLm1iX3N0cmlkZV0gJgorICAgICAgICAgICAgICAgIG1vdGlvbl9wdHIgPSBm
Zl9oMjYzX3ByZWRfbW90aW9uKHMyLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKKyAgICAgICAg
ICAgICAgICBpZiAocy0+bS5tYl90eXBlW3ggKyB5ICogczItPm1iX3N0cmlkZV0gJgogICAgICAg
ICAgICAgICAgICAgICBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUikgewogICAgICAgICAgICAgICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgaW5p
dF9wdXRfYml0cygmcy0+cmVvcmRlcl9wYltpXSwgcmVvcmRlcl9idWZmZXJbMV1baV0sCkBAIC01
MDYsMTAgKzUwOCwxMCBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2RlX3BsYW5lKFNWUTFFbmNDb250
ZXh0ICpzLCBpbnQgcGxhbmUsCiAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl9wdHJbMV0gICAg
ICAgICAgICAgICAgICAgICAgPQogICAgICAgICAgICAgICAgICAgICBtb3Rpb25fcHRyWzJdICAg
ICAgICAgICAgICAgICAgICAgID0KICAgICAgICAgICAgICAgICAgICAgbW90aW9uX3B0clszXSAg
ICAgICAgICAgICAgICAgICAgICA9Ci0gICAgICAgICAgICAgICAgICAgIG1vdGlvbl9wdHJbMCAr
IDIgKiBzLT5tLmI4X3N0cmlkZV0gPQotICAgICAgICAgICAgICAgICAgICBtb3Rpb25fcHRyWzEg
KyAyICogcy0+bS5iOF9zdHJpZGVdID0KLSAgICAgICAgICAgICAgICAgICAgbW90aW9uX3B0clsy
ICsgMiAqIHMtPm0uYjhfc3RyaWRlXSA9Ci0gICAgICAgICAgICAgICAgICAgIG1vdGlvbl9wdHJb
MyArIDIgKiBzLT5tLmI4X3N0cmlkZV0gPSAwOworICAgICAgICAgICAgICAgICAgICBtb3Rpb25f
cHRyWzAgKyAyICogczItPmI4X3N0cmlkZV0gPQorICAgICAgICAgICAgICAgICAgICBtb3Rpb25f
cHRyWzEgKyAyICogczItPmI4X3N0cmlkZV0gPQorICAgICAgICAgICAgICAgICAgICBtb3Rpb25f
cHRyWzIgKyAyICogczItPmI4X3N0cmlkZV0gPQorICAgICAgICAgICAgICAgICAgICBtb3Rpb25f
cHRyWzMgKyAyICogczItPmI4X3N0cmlkZV0gPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIApAQCAtNTIyLDcgKzUyNCw3IEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxh
bmUoU1ZRMUVuY0NvbnRleHQgKnMsIGludCBwbGFuZSwKICAgICAgICAgICAgIGlmIChiZXN0ID09
IDApCiAgICAgICAgICAgICAgICAgcy0+aGRzcC5wdXRfcGl4ZWxzX3RhYlswXVswXShkZWNvZGVk
LCB0ZW1wLCBzdHJpZGUsIDE2KTsKICAgICAgICAgfQotICAgICAgICBzLT5tLmZpcnN0X3NsaWNl
X2xpbmUgPSAwOworICAgICAgICBzMi0+Zmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgfQogICAg
IHJldHVybiAwOwogfQpAQCAtNTM3LDE0ICs1MzksMTQgQEAgc3RhdGljIGF2X2NvbGQgaW50IHN2
cTFfZW5jb2RlX2VuZChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICAgICAgICBzLT5y
ZF90b3RhbCAvIChkb3VibGUpKGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQgKgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+ZnJhbWVfbnVtKSk7CiAKLSAg
ICBhdl9mcmVlcCgmcy0+bS5tZS5zY3JhdGNocGFkKTsKLSAgICBhdl9mcmVlcCgmcy0+bS5tZS5t
YXApOworICAgIGF2X2ZyZWVwKCZzLT5tLmMubWUuc2NyYXRjaHBhZCk7CisgICAgYXZfZnJlZXAo
JnMtPm0uYy5tZS5tYXApOwogICAgIGF2X2ZyZWVwKCZzLT5tYl90eXBlKTsKICAgICBhdl9mcmVl
cCgmcy0+ZHVtbXkpOwogICAgIGF2X2ZyZWVwKCZzLT5zY3JhdGNoYnVmKTsKIAogICAgIHMtPm0u
bWJfdHlwZSA9IE5VTEw7Ci0gICAgZmZfbXB2X2NvbW1vbl9lbmQoJnMtPm0pOworICAgIGZmX21w
dl9jb21tb25fZW5kKCZzLT5tLmMpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewog
ICAgICAgICBhdl9mcmVlcCgmcy0+bW90aW9uX3ZhbDhbaV0pOwpAQCAtNTgzLDcgKzU4NSw3IEBA
IHN0YXRpYyBhdl9jb2xkIGludCBzdnExX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0
eCkKIAogICAgIGZmX2hwZWxkc3BfaW5pdCgmcy0+aGRzcCwgYXZjdHgtPmZsYWdzKTsKICAgICBm
Zl9tZV9jbXBfaW5pdCgmcy0+bWVjYywgYXZjdHgpOwotICAgIHJldCA9IGZmX21lX2luaXQoJnMt
Pm0ubWUsIGF2Y3R4LCAmcy0+bWVjYywgMCk7CisgICAgcmV0ID0gZmZfbWVfaW5pdCgmcy0+bS5j
Lm1lLCBhdmN0eCwgJnMtPm1lY2MsIDApOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1
cm4gcmV0OwogICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0KCZzLT5tLm1wdmVuY2RzcCwgYXZj
dHgpOwpAQCAtNjA0LDMxICs2MDYsMzEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHN2cTFfZW5jb2Rl
X2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgIHMtPmNfYmxvY2tfaGVpZ2h0ID0gKHMt
PmZyYW1lX2hlaWdodCAvIDQgKyAxNSkgLyAxNjsKIAogICAgIHMtPmF2Y3R4ICAgICAgICAgICAg
ICAgPSBhdmN0eDsKLSAgICBzLT5tLmF2Y3R4ICAgICAgICAgICAgID0gYXZjdHg7CisgICAgcy0+
bS5jLmF2Y3R4ICAgICAgICAgICA9IGF2Y3R4OwogCi0gICAgaWYgKChyZXQgPSBmZl9tcHZfY29t
bW9uX2luaXQoJnMtPm0pKSA8IDApIHsKKyAgICByZXQgPSBmZl9tcHZfY29tbW9uX2luaXQoJnMt
Pm0uYyk7CisgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQogCi0g
ICAgcy0+bS5waWN0dXJlX3N0cnVjdHVyZSA9IFBJQ1RfRlJBTUU7Ci0gICAgcy0+bS5tZS50ZW1w
ICAgICAgICAgICA9Ci0gICAgcy0+bS5tZS5zY3JhdGNocGFkICAgICA9IGF2X21hbGxvY3ooKGF2
Y3R4LT53aWR0aCArIDY0KSAqCisgICAgcy0+bS5jLnBpY3R1cmVfc3RydWN0dXJlID0gUElDVF9G
UkFNRTsKKyAgICBzLT5tLmMubWUudGVtcCAgICAgICAgICAgPQorICAgIHMtPm0uYy5tZS5zY3Jh
dGNocGFkICAgICA9IGF2X21hbGxvY3ooKGF2Y3R4LT53aWR0aCArIDY0KSAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIDE2ICogMiAqIHNpemVvZih1aW50OF90
KSk7CiAgICAgcy0+bWJfdHlwZSAgICAgICAgICAgICA9IGF2X21hbGxvY3ooKHMtPnlfYmxvY2tf
d2lkdGggKyAxKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+
eV9ibG9ja19oZWlnaHQgKiBzaXplb2YoaW50MTZfdCkpOwogICAgIHMtPmR1bW15ICAgICAgICAg
ICAgICAgPSBhdl9tYWxsb2N6KChzLT55X2Jsb2NrX3dpZHRoICsgMSkgKgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnlfYmxvY2tfaGVpZ2h0ICogc2l6ZW9mKGlu
dDMyX3QpKTsKLSAgICBzLT5tLm1lLm1hcCAgICAgICAgICAgID0gYXZfbWFsbG9jeigyICogTUVf
TUFQX1NJWkUgKiBzaXplb2YoKnMtPm0ubWUubWFwKSk7CisgICAgcy0+bS5jLm1lLm1hcCAgICAg
ICAgICAgID0gYXZfbWFsbG9jeigyICogTUVfTUFQX1NJWkUgKiBzaXplb2YoKnMtPm0uYy5tZS5t
YXApKTsKICAgICBzLT5tLm5ld19waWMgICAgICAgPSBhdl9mcmFtZV9hbGxvYygpOwogCi0gICAg
aWYgKCFzLT5tLm1lLnNjcmF0Y2hwYWQgfHwgIXMtPm0ubWUubWFwIHx8CisgICAgaWYgKCFzLT5t
LmMubWUuc2NyYXRjaHBhZCB8fCAhcy0+bS5jLm1lLm1hcCB8fAogICAgICAgICAhcy0+bWJfdHlw
ZSB8fCAhcy0+ZHVtbXkgfHwgIXMtPm0ubmV3X3BpYykKICAgICAgICAgcmV0dXJuIEFWRVJST1Io
RU5PTUVNKTsKLSAgICBzLT5tLm1lLnNjb3JlX21hcCA9IHMtPm0ubWUubWFwICsgTUVfTUFQX1NJ
WkU7CisgICAgcy0+bS5jLm1lLnNjb3JlX21hcCA9IHMtPm0uYy5tZS5tYXAgKyBNRV9NQVBfU0la
RTsKIAogICAgIGZmX3N2cTFlbmNfaW5pdCgmcy0+c3ZxMWVuY2RzcCk7CiAKLSAgICBzLT5tLm1l
Lm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7CisgICAgcy0+bS5jLm1lLm12
X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7CiAKICAgICByZXR1cm4gd3JpdGVf
aWRlbnQoYXZjdHgsIHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QgPyAi
TGF2YyIgOiBMSUJBVkNPREVDX0lERU5UKTsKIH0KQEAgLTcxNiw3ICs3MTgsNyBAQCBzdGF0aWMg
aW50IHN2cTFfZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBr
dCwKICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKHN0cnVjdCBTVlExRW5jQ29udGV4dCwgeCkK
ICNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0gfCBBVl9PUFRfRkxBR19FTkNPRElO
R19QQVJBTQogc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICB7ICJtb3Rp
b24tZXN0IiwgIk1vdGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsIE9GRlNFVChtLm1lLm1vdGlv
bl9lc3QpLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IEZGX01FX0VQWlMgfSwgRkZfTUVfWkVS
TywgRkZfTUVfWE9ORSwgVkUsIC51bml0ID0gIm1vdGlvbi1lc3QifSwKKyAgICB7ICJtb3Rpb24t
ZXN0IiwgIk1vdGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsIE9GRlNFVChtLmMubWUubW90aW9u
X2VzdCksIEFWX09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gRkZfTUVfRVBaUyB9LCBGRl9NRV9aRVJP
LCBGRl9NRV9YT05FLCBWRSwgLnVuaXQgPSAibW90aW9uLWVzdCJ9LAogICAgICAgICB7ICJ6ZXJv
IiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEZGX01FX1pFUk8gfSwgMCwg
MCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90aW9uLWVzdCIgfSwKICAgICAgICAgeyAi
ZXB6cyIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBGRl9NRV9FUFpTIH0s
IDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1vdGlvbi1lc3QiIH0sCiAgICAgICAg
IHsgInhvbmUiLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gRkZfTUVfWE9O
RSB9LCAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtb3Rpb24tZXN0IiB9LApkaWZm
IC0tZ2l0IGEvbGliYXZjb2RlYy93bXYyZW5jLmMgYi9saWJhdmNvZGVjL3dtdjJlbmMuYwppbmRl
eCA4MWIwYWNlMDUzLi5mOWZkOTE4ZGJmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3dtdjJlbmMu
YworKysgYi9saWJhdmNvZGVjL3dtdjJlbmMuYwpAQCAtNDgsMTcgKzQ4LDE3IEBAIHR5cGVkZWYg
c3RydWN0IFdNVjJFbmNDb250ZXh0IHsKIAogc3RhdGljIGludCBlbmNvZGVfZXh0X2hlYWRlcihX
TVYyRW5jQ29udGV4dCAqdykKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZ3LT5t
c21wZWc0Lm0uczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJnctPm1zbXBlZzQubS5z
OwogICAgIFB1dEJpdENvbnRleHQgcGI7CiAgICAgaW50IGNvZGU7CiAKLSAgICBpbml0X3B1dF9i
aXRzKCZwYiwgcy0+YXZjdHgtPmV4dHJhZGF0YSwgV01WMl9FWFRSQURBVEFfU0laRSk7CisgICAg
aW5pdF9wdXRfYml0cygmcGIsIHMtPmMuYXZjdHgtPmV4dHJhZGF0YSwgV01WMl9FWFRSQURBVEFf
U0laRSk7CiAKLSAgICBwdXRfYml0cygmcGIsIDUsIHMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuIC8g
cy0+YXZjdHgtPnRpbWVfYmFzZS5udW0pOyAvLyB5ZXMgMjkuOTcgLT4gMjkKKyAgICBwdXRfYml0
cygmcGIsIDUsIHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyBzLT5jLmF2Y3R4LT50aW1lX2Jh
c2UubnVtKTsgLy8geWVzIDI5Ljk3IC0+IDI5CiAgICAgcHV0X2JpdHMoJnBiLCAxMSwgRkZNSU4o
dy0+bXNtcGVnNC5tLmJpdF9yYXRlIC8gMTAyNCwgMjA0NykpOwogCiAgICAgcHV0X2JpdHMoJnBi
LCAxLCB3LT5tc3BlbF9iaXQgICAgICAgID0gMSk7Ci0gICAgcHV0X2JpdHMoJnBiLCAxLCBzLT5s
b29wX2ZpbHRlcik7CisgICAgcHV0X2JpdHMoJnBiLCAxLCBzLT5jLmxvb3BfZmlsdGVyKTsKICAg
ICBwdXRfYml0cygmcGIsIDEsIHctPmFidF9mbGFnICAgICAgICAgPSAxKTsKICAgICBwdXRfYml0
cygmcGIsIDEsIHctPmpfdHlwZV9iaXQgICAgICAgPSAxKTsKICAgICBwdXRfYml0cygmcGIsIDEs
IHctPnRvcF9sZWZ0X212X2ZsYWcgPSAwKTsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGludCBl
bmNvZGVfZXh0X2hlYWRlcihXTVYyRW5jQ29udGV4dCAqdykKIAogICAgIGZsdXNoX3B1dF9iaXRz
KCZwYik7CiAKLSAgICBzLT5zbGljZV9oZWlnaHQgPSBzLT5tYl9oZWlnaHQgLyBjb2RlOworICAg
IHMtPmMuc2xpY2VfaGVpZ2h0ID0gcy0+Yy5tYl9oZWlnaHQgLyBjb2RlOwogCiAgICAgcmV0dXJu
IDA7CiB9CkBAIC03NiwyNSArNzYsMjUgQEAgc3RhdGljIGludCB3bXYyX2VuY29kZV9waWN0dXJl
X2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKICAgICBXTVYyRW5jQ29udGV4
dCAqY29uc3QgdyA9IChXTVYyRW5jQ29udGV4dCAqKSBtOwogICAgIE1TTVBFRzRFbmNDb250ZXh0
ICpjb25zdCBtcyA9ICZ3LT5tc21wZWc0OwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0g
Jm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogCi0gICAgcHV0X2Jp
dHMoJnMtPnBiLCAxLCBzLT5waWN0X3R5cGUgLSAxKTsKLSAgICBpZiAocy0+cGljdF90eXBlID09
IEFWX1BJQ1RVUkVfVFlQRV9JKQorICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5waWN0X3R5
cGUgLSAxKTsKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpCiAg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNywgMCk7Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBz
LT5xc2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOwogCiAgICAg
bXMtPmRjX3RhYmxlX2luZGV4ICA9IDE7CiAgICAgbXMtPm12X3RhYmxlX2luZGV4ICA9IDE7IC8q
IG9ubHkgaWYgUC1mcmFtZSAqLwogICAgIG1zLT5wZXJfbWJfcmxfdGFibGUgPSAwOwotICAgIHMt
Pm1zcGVsICAgICAgICAgICA9IDA7CisgICAgcy0+Yy5tc3BlbCAgICAgICAgICA9IDA7CiAgICAg
dy0+cGVyX21iX2FidCAgICAgID0gMDsKICAgICB3LT5hYnRfdHlwZSAgICAgICAgPSAwOwogICAg
IHctPmpfdHlwZSAgICAgICAgICA9IDA7CiAKLSAgICBhdl9hc3NlcnQwKHMtPmZsaXBmbG9wX3Jv
dW5kaW5nKTsKKyAgICBhdl9hc3NlcnQwKHMtPmMuZmxpcGZsb3Bfcm91bmRpbmcpOwogCi0gICAg
aWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICBhdl9hc3Nl
cnQwKHMtPm5vX3JvdW5kaW5nID09IDEpOworICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9Q
SUNUVVJFX1RZUEVfSSkgeworICAgICAgICBhdl9hc3NlcnQwKHMtPmMubm9fcm91bmRpbmcgPT0g
MSk7CiAgICAgICAgIGlmICh3LT5qX3R5cGVfYml0KQogICAgICAgICAgICAgcHV0X2JpdHMoJnMt
PnBiLCAxLCB3LT5qX3R5cGUpOwogCkBAIC0xMDgsMTcgKzEwOCwxNyBAQCBzdGF0aWMgaW50IHdt
djJfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogCiAg
ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgbXMtPmRjX3RhYmxlX2luZGV4KTsKIAotICAgICAg
ICBzLT5pbnRlcl9pbnRyYV9wcmVkID0gMDsKKyAgICAgICAgcy0+Yy5pbnRlcl9pbnRyYV9wcmVk
ID0gMDsKICAgICB9IGVsc2UgewogICAgICAgICBpbnQgY2JwX2luZGV4OwogCiAgICAgICAgIHB1
dF9iaXRzKCZzLT5wYiwgMiwgU0tJUF9UWVBFX05PTkUpOwogCiAgICAgICAgIGZmX21zbXBlZzRf
Y29kZTAxMigmcy0+cGIsIGNicF9pbmRleCA9IDApOwotICAgICAgICB3LT5jYnBfdGFibGVfaW5k
ZXggPSB3bXYyX2dldF9jYnBfdGFibGVfaW5kZXgocywgY2JwX2luZGV4KTsKKyAgICAgICAgdy0+
Y2JwX3RhYmxlX2luZGV4ID0gd212Ml9nZXRfY2JwX3RhYmxlX2luZGV4KCZzLT5jLCBjYnBfaW5k
ZXgpOwogCiAgICAgICAgIGlmICh3LT5tc3BlbF9iaXQpCi0gICAgICAgICAgICBwdXRfYml0cygm
cy0+cGIsIDEsIHMtPm1zcGVsKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+
Yy5tc3BlbCk7CiAKICAgICAgICAgaWYgKHctPmFidF9mbGFnKSB7CiAgICAgICAgICAgICBwdXRf
Yml0cygmcy0+cGIsIDEsIHctPnBlcl9tYl9hYnQgXiAxKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBz
dGF0aWMgaW50IHdtdjJfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpj
b25zdCBtKQogICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIG1zLT5kY190YWJsZV9pbmRleCk7
CiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgbXMtPm12X3RhYmxlX2luZGV4KTsKIAotICAg
ICAgICBzLT5pbnRlcl9pbnRyYV9wcmVkID0gMDsgLy8gKHMtPndpZHRoICogcy0+aGVpZ2h0IDwg
MzIwICogMjQwICYmIG0tPmJpdF9yYXRlIDw9IElJX0JJVFJBVEUpOworICAgICAgICBzLT5jLmlu
dGVyX2ludHJhX3ByZWQgPSAwOyAvLyAocy0+Yy53aWR0aCAqIHMtPmMuaGVpZ2h0IDwgMzIwICog
MjQwICYmIG0tPmJpdF9yYXRlIDw9IElJX0JJVFJBVEUpOwogICAgIH0KICAgICBzLT5lc2MzX2xl
dmVsX2xlbmd0aCA9IDA7CiAgICAgbXMtPmVzYzNfcnVuX2xlbmd0aCAgPSAwOwpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHN0YXRpYyBpbnQgd212Ml9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVu
Y0NvbnRleHQgKmNvbnN0IG0pCiAvKiBOZWFybHkgaWRlbnRpY2FsIHRvIHdtdjEgYnV0IHRoYXQg
aXMganVzdCBiZWNhdXNlIHdlIGRvIG5vdCB1c2UgdGhlCiAgKiB1c2VsZXNzIE0kIGNyYXAgZmVh
dHVyZXMuIEl0IGlzIGR1cGxpY2F0ZWQgaGVyZSBpbiBjYXNlIHNvbWVvbmUgd2FudHMKICAqIHRv
IGFkZCBzdXBwb3J0IGZvciB0aGVzZSBjcmFwIGZlYXR1cmVzLiAqLwotc3RhdGljIHZvaWQgd212
Ml9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0s
CitzdGF0aWMgdm9pZCB3bXYyX2VuY29kZV9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQx
Nl90IGJsb2NrW11bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94
LCBpbnQgbW90aW9uX3kpCiB7CiAgICAgV01WMkVuY0NvbnRleHQgKmNvbnN0IHcgPSAoV01WMkVu
Y0NvbnRleHQgKikgczsKQEAgLTE1NywxMSArMTU3LDExIEBAIHN0YXRpYyB2b2lkIHdtdjJfZW5j
b2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogCiAg
ICAgZmZfbXNtcGVnNF9oYW5kbGVfc2xpY2VzKHMpOwogCi0gICAgaWYgKCFzLT5tYl9pbnRyYSkg
eworICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAvKiBjb21wdXRlIGNicCAqLwog
ICAgICAgICBjYnAgPSAwOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQotICAgICAg
ICAgICAgaWYgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKKyAgICAgICAgICAgIGlmIChz
LT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8
PCAoNSAtIGkpOwogCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKQEAgLTE3MCw3ICsxNzAsNyBA
QCBzdGF0aWMgdm9pZCB3bXYyX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50
MTZfdCBibG9ja1tdWzY0XSwKIAogICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlm
ZihzKTsKICAgICAgICAgLyogbW90aW9uIHZlY3RvciAqLwotICAgICAgICBmZl9oMjYzX3ByZWRf
bW90aW9uKHMsIDAsIDAsICZwcmVkX3gsICZwcmVkX3kpOworICAgICAgICBmZl9oMjYzX3ByZWRf
bW90aW9uKCZzLT5jLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKICAgICAgICAgZmZfbXNtcGVn
NF9lbmNvZGVfbW90aW9uKCZ3LT5tc21wZWc0LCBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl95IC0gcHJlZF95KTsKICAgICAgICAgcy0+
bXZfYml0cyArPSBnZXRfYml0c19kaWZmKHMpOwpAQCAtMTc5LDE5ICsxNzksMTkgQEAgc3RhdGlj
IHZvaWQgd212Ml9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxv
Y2tbXVs2NF0sCiAgICAgICAgIGNicCAgICAgICA9IDA7CiAgICAgICAgIGNvZGVkX2NicCA9IDA7
CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsKLSAgICAgICAgICAgIGludCB2YWws
IHByZWQ7Ci0gICAgICAgICAgICB2YWwgID0gKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMSk7
CisgICAgICAgICAgICBpbnQgdmFsID0gKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA+PSAxKTsK
KwogICAgICAgICAgICAgY2JwIHw9IHZhbCA8PCAoNSAtIGkpOwogICAgICAgICAgICAgaWYgKGkg
PCA0KSB7CiAgICAgICAgICAgICAgICAgLyogcHJlZGljdCB2YWx1ZSBmb3IgY2xvc2UgYmxvY2tz
IG9ubHkgZm9yIGx1bWEgKi8KLSAgICAgICAgICAgICAgICBwcmVkICAgICAgICAgPSBmZl9tc21w
ZWc0X2NvZGVkX2Jsb2NrX3ByZWQocywgaSwgJmNvZGVkX2Jsb2NrKTsKKyAgICAgICAgICAgICAg
ICBpbnQgcHJlZCAgICAgPSBmZl9tc21wZWc0X2NvZGVkX2Jsb2NrX3ByZWQoJnMtPmMsIGksICZj
b2RlZF9ibG9jayk7CiAgICAgICAgICAgICAgICAgKmNvZGVkX2Jsb2NrID0gdmFsOwogICAgICAg
ICAgICAgICAgIHZhbCAgICAgICAgICA9IHZhbCBeIHByZWQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjb2RlZF9jYnAgfD0gdmFsIDw8ICg1IC0gaSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKQorICAgICAgICBpZiAocy0+
Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpCiAgICAgICAgICAgICBwdXRfYml0cygm
cy0+cGIsCiAgICAgICAgICAgICAgICAgICAgICBmZl9tc21wNF9tYl9pX3RhYmxlW2NvZGVkX2Ni
cF1bMV0sCiAgICAgICAgICAgICAgICAgICAgICBmZl9tc21wNF9tYl9pX3RhYmxlW2NvZGVkX2Ni
cF1bMF0pOwpAQCAtMjAwLDE4ICsyMDAsMTggQEAgc3RhdGljIHZvaWQgd212Ml9lbmNvZGVfbWIo
TXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAg
ICAgICAgICAgICBmZl93bXYyX2ludGVyX3RhYmxlW3ctPmNicF90YWJsZV9pbmRleF1bY2JwXVsx
XSwKICAgICAgICAgICAgICAgICAgICAgIGZmX3dtdjJfaW50ZXJfdGFibGVbdy0+Y2JwX3RhYmxl
X2luZGV4XVtjYnBdWzBdKTsKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgICAg
ICAvKiBubyBBQyBwcmVkaWN0aW9uIHlldCAqLwotICAgICAgICBpZiAocy0+aW50ZXJfaW50cmFf
cHJlZCkgewotICAgICAgICAgICAgcy0+aDI2M19haWNfZGlyID0gMDsKKyAgICAgICAgaWYgKHMt
PmMuaW50ZXJfaW50cmFfcHJlZCkgeworICAgICAgICAgICAgcy0+Yy5oMjYzX2FpY19kaXIgPSAw
OwogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLAotICAgICAgICAgICAgICAgICAgICAgZmZf
dGFibGVfaW50ZXJfaW50cmFbcy0+aDI2M19haWNfZGlyXVsxXSwKLSAgICAgICAgICAgICAgICAg
ICAgIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmgyNjNfYWljX2Rpcl1bMF0pOworICAgICAgICAg
ICAgICAgICAgICAgZmZfdGFibGVfaW50ZXJfaW50cmFbcy0+Yy5oMjYzX2FpY19kaXJdWzFdLAor
ICAgICAgICAgICAgICAgICAgICAgZmZfdGFibGVfaW50ZXJfaW50cmFbcy0+Yy5oMjYzX2FpY19k
aXJdWzBdKTsKICAgICAgICAgfQogICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlm
ZihzKTsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICBmZl9t
c21wZWc0X2VuY29kZV9ibG9jayhzLCBibG9ja1tpXSwgaSk7Ci0gICAgaWYgKHMtPm1iX2ludHJh
KQorICAgIGlmIChzLT5jLm1iX2ludHJhKQogICAgICAgICBzLT5pX3RleF9iaXRzICs9IGdldF9i
aXRzX2RpZmYocyk7CiAgICAgZWxzZQogICAgICAgICBzLT5wX3RleF9iaXRzICs9IGdldF9iaXRz
X2RpZmYocyk7CkBAIC0yMjAsMTcgKzIyMCwxNyBAQCBzdGF0aWMgdm9pZCB3bXYyX2VuY29kZV9t
YihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKIHN0YXRpYyBh
dl9jb2xkIGludCB3bXYyX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAg
ICBXTVYyRW5jQ29udGV4dCAqY29uc3QgdyA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgTXBlZ0Vu
Y0NvbnRleHQgKmNvbnN0IHMgPSAmdy0+bXNtcGVnNC5tLnM7CisgICAgTVBWRW5jQ29udGV4dCAq
Y29uc3QgcyA9ICZ3LT5tc21wZWc0Lm0uczsKICAgICBpbnQgcmV0OwogCiAgICAgdy0+bXNtcGVn
NC5tLmVuY29kZV9waWN0dXJlX2hlYWRlciA9IHdtdjJfZW5jb2RlX3BpY3R1cmVfaGVhZGVyOwog
ICAgIHMtPmVuY29kZV9tYiAgICAgICAgICAgICAgICAgICAgICAgPSB3bXYyX2VuY29kZV9tYjsK
LSAgICBzLT5wcml2YXRlX2N0eCA9ICZ3LT5jb21tb247CisgICAgcy0+Yy5wcml2YXRlX2N0eCA9
ICZ3LT5jb21tb247CiAgICAgcmV0ID0gZmZfbXB2X2VuY29kZV9pbml0KGF2Y3R4KTsKICAgICBp
ZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJldDsKIAotICAgIGZmX3dtdjJfY29tbW9uX2lu
aXQocyk7CisgICAgZmZfd212Ml9jb21tb25faW5pdCgmcy0+Yyk7CiAKICAgICBhdmN0eC0+ZXh0
cmFkYXRhX3NpemUgPSBXTVYyX0VYVFJBREFUQV9TSVpFOwogICAgIGF2Y3R4LT5leHRyYWRhdGEg
ICAgICA9IGF2X21hbGxvY3ooYXZjdHgtPmV4dHJhZGF0YV9zaXplICsgQVZfSU5QVVRfQlVGRkVS
X1BBRERJTkdfU0laRSk7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni9tZV9jbXAuYXNtIGIv
bGliYXZjb2RlYy94ODYvbWVfY21wLmFzbQppbmRleCA5MjNlYjgwNzhiLi5hNDk0Y2RlYjY0IDEw
MDY0NAotLS0gYS9saWJhdmNvZGVjL3g4Ni9tZV9jbXAuYXNtCisrKyBiL2xpYmF2Y29kZWMveDg2
L21lX2NtcC5hc20KQEAgLTIxNCw3ICsyMTQsNyBAQCBoYWRhbWFyZDh4OF9kaWZmICUrIFNVRkZJ
WDoKIGhhZGFtYXJkOF8xNl93cmFwcGVyICUxLCAzCiAlZWxpZiBjcHVmbGFnKG1teCkKIEFMSUdO
IDE2Ci07IGludCBmZl9oYWRhbWFyZDhfZGlmZl8gIyMgY3B1KE1wZWdFbmNDb250ZXh0ICpzLCBj
b25zdCB1aW50OF90ICpzcmMxLAorOyBpbnQgZmZfaGFkYW1hcmQ4X2RpZmZfICMjIGNwdShNUFZF
bmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLAogOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkK
IDsgcjAgPSB2b2lkICpzID0gdW51c2VkLCBpbnQgaCA9IHVudXNlZCAoYWx3YXlzIDgpCiA7IG5v
dGUgaG93IHIxLCByMiBhbmQgcjMgYXJlIG5vdCBjbG9iYmVyZWQgaW4gdGhpcyBmdW5jdGlvbiwg
c28gMTZ4MTYKQEAgLTI3OCw3ICsyNzgsNyBAQCBJTklUX1hNTSBzc3NlMwogJWRlZmluZSBBQlNf
U1VNXzh4OCBBQlNfU1VNXzh4OF82NAogSEFEQU1BUkQ4X0RJRkYgOQogCi07IGludCBmZl9zc2Uq
XyooTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCis7IGludCBmZl9zc2UqXyooTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq
cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKIDsgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGlu
ZV9zaXplLCBpbnQgaCkKIAogJW1hY3JvIFNVTV9TUVVBUkVEX0VSUk9SUyAxCkBAIC00NjYsNyAr
NDY2LDcgQEAgSEZfTk9JU0UgOAogSEZfTk9JU0UgMTYKIAogOy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotO2ludCBmZl9zYWRfPG9wdD4oTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp
bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo
KTsKKztpbnQgZmZfc2FkXzxvcHQ+KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp
eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIDstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDslMSA9IDgvMTYKICVtYWNybyBTQUQgMQpAQCAt
NTIxLDcgKzUyMSw3IEBAIElOSVRfWE1NIHNzZTIKIFNBRCAxNgogCiA7LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi07aW50IGZmX3NhZF94Ml88b3B0PihNcGVnRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpOworO2ludCBmZl9zYWRfeDJfPG9wdD4oTVBWRW5jQ29udGV4dCAqdiwgY29u
c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGgpOwogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogOyUxID0gOC8xNgog
JW1hY3JvIFNBRF9YMiAxCkBAIC01OTgsNyArNTk4LDcgQEAgSU5JVF9YTU0gc3NlMgogU0FEX1gy
IDE2CiAKIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTtpbnQgZmZfc2FkX3ky
XzxvcHQ+KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50
OF90ICpwaXgyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Cis7aW50IGZmX3NhZF95Ml88b3B0
PihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw
aXgyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7CiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiA7JTEgPSA4LzE2CiAlbWFjcm8gU0FEX1kyIDEKQEAgLTY2OCw3ICs2NjgsNyBA
QCBJTklUX1hNTSBzc2UyCiBTQURfWTIgMTYKIAogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLTtpbnQgZmZfc2FkX2FwcHJveF94eTJfPG9wdD4oTXBlZ0VuY0NvbnRleHQgKnYs
IGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBzdHJp
ZGUsIGludCBoKTsKKztpbnQgZmZfc2FkX2FwcHJveF94eTJfPG9wdD4oTVBWRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpOwogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDslMSA9
IDgvMTYKICVtYWNybyBTQURfQVBQUk9YX1hZMiAxCkBAIC03NjksNyArNzY5LDcgQEAgSU5JVF9Y
TU0gc3NlMgogU0FEX0FQUFJPWF9YWTIgMTYKIAogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi07aW50IGZmX3ZzYWRf
aW50cmEoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4
X3QgKnBpeDIsCis7aW50IGZmX3ZzYWRfaW50cmEoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu
dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKIDsgICAgICAgICAgICAgICAgICBwdHJk
aWZmX3QgbGluZV9zaXplLCBpbnQgaCk7CiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDsgJTEgPSA4LzE2CkBAIC04
MzAsNyArODMwLDcgQEAgSU5JVF9YTU0gc3NlMgogVlNBRF9JTlRSQSAxNgogCiA7LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi07aW50IGZmX3ZzYWRfYXBwcm94KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90
ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorO2ludCBmZl92c2FkX2FwcHJveChNUFZFbmND
b250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogOyAg
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCk7CiA7LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiA7ICUxID0gOC8xNgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy94ODYvbWVfY21wX2luaXQu
YyBiL2xpYmF2Y29kZWMveDg2L21lX2NtcF9pbml0LmMKaW5kZXggOThiNzFiMTg5NC4uNDU0MjVm
NzEwOSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy94ODYvbWVfY21wX2luaXQuYworKysgYi9saWJh
dmNvZGVjL3g4Ni9tZV9jbXBfaW5pdC5jCkBAIC0yOCw1OSArMjgsNTkgQEAKICNpbmNsdWRlICJs
aWJhdnV0aWwveDg2L2FzbS5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC94ODYvY3B1LmgiCiAjaW5j
bHVkZSAibGliYXZjb2RlYy9tZV9jbXAuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRl
by5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgiCiAKIGludCBmZl9zdW1f
YWJzX2RjdGVsZW1fc3NlMihjb25zdCBpbnQxNl90ICpibG9jayk7CiBpbnQgZmZfc3VtX2Fic19k
Y3RlbGVtX3Nzc2UzKGNvbnN0IGludDE2X3QgKmJsb2NrKTsKLWludCBmZl9zc2U4X21teChNcGVn
RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK
K2ludCBmZl9zc2U4X21teChNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj
b25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu
dCBoKTsKLWludCBmZl9zc2UxNl9tbXgoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfc3NlMTZfbW14KE1QVkVuY0NvbnRl
eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAg
ICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9zc2UxNl9zc2UyKE1w
ZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgy
LAoraW50IGZmX3NzZTE2X3NzZTIoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4
MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJp
ZGUsIGludCBoKTsKIGludCBmZl9oZl9ub2lzZThfbW14KGNvbnN0IHVpbnQ4X3QgKnBpeDEsIHB0
cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIGludCBmZl9oZl9ub2lzZTE2X21teChjb25zdCB1aW50
OF90ICpwaXgxLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkOF9tbXhleHQo
TXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBp
eDIsCitpbnQgZmZfc2FkOF9tbXhleHQoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq
cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg
c3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfbW14ZXh0KE1wZWdFbmNDb250ZXh0ICp2LCBj
b25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3NhZDE2X21t
eGV4dChNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90
ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1p
bnQgZmZfc2FkMTZfc3NlMihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg
Y29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9zYWQxNl9zc2UyKE1QVkVuY0NvbnRleHQgKnYs
IGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAg
ICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkOF94Ml9tbXhleHQoTXBl
Z0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs
CitpbnQgZmZfc2FkOF94Ml9tbXhleHQoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq
cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm
X3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeDJfbW14ZXh0KE1wZWdFbmNDb250ZXh0
ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3Nh
ZDE2X3gyX21teGV4dChNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25z
dCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRl
LCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeDJfc3NlMihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg
dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9zYWQxNl94Ml9zc2Uy
KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBp
eDIsCiAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg
ZmZfc2FkOF95Ml9tbXhleHQoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEs
IGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfc2FkOF95Ml9tbXhleHQoTVBWRW5jQ29udGV4
dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAg
ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeTJf
bW14ZXh0KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50
OF90ICpwaXgyLAoraW50IGZmX3NhZDE2X3kyX21teGV4dChNUFZFbmNDb250ZXh0ICp2LCBjb25z
dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAg
ICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeTJfc3NlMihNcGVn
RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK
K2ludCBmZl9zYWQxNl95Ml9zc2UyKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp
eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg
c3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkOF9hcHByb3hfeHkyX21teGV4dChNcGVnRW5jQ29u
dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBm
Zl9zYWQ4X2FwcHJveF94eTJfbW14ZXh0KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfYXBwcm94X3h5Ml9tbXhl
eHQoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCitpbnQgZmZfc2FkMTZfYXBwcm94X3h5Ml9tbXhleHQoTVBWRW5jQ29udGV4dCAqdiwg
Y29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZf
YXBwcm94X3h5Ml9zc2UyKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj
b25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3NhZDE2X2FwcHJveF94eTJfc3NlMihNUFZFbmND
b250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg
ZmZfdnNhZF9pbnRyYThfbW14ZXh0KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw
aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3ZzYWRfaW50cmE4X21teGV4dChNUFZF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg
ZmZfdnNhZF9pbnRyYTE2X21teGV4dChNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq
cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkX2ludHJhMTZfbW14ZXh0KE1Q
VkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1p
bnQgZmZfdnNhZF9pbnRyYTE2X3NzZTIoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfdnNhZF9pbnRyYTE2X3NzZTIoTVBW
RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg
ZmZfdnNhZDhfYXBwcm94X21teGV4dChNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq
cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkOF9hcHByb3hfbW14ZXh0KE1Q
VkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs
CiAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl92
c2FkMTZfYXBwcm94X21teGV4dChNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4
MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkMTZfYXBwcm94X21teGV4dChNUFZF
bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAog
ICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3Zz
YWQxNl9hcHByb3hfc3NlMihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg
Y29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkMTZfYXBwcm94X3NzZTIoTVBWRW5jQ29u
dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAg
ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7CiAKLSNkZWZpbmUgaGFkYW1h
cmRfZnVuYyhjcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmZfICMjIGNwdShNcGVnRW5jQ29udGV4
dCAqcywgY29uc3QgdWludDhfdCAqc3JjMSwgICAgIFwKKyNkZWZpbmUgaGFkYW1hcmRfZnVuYyhj
cHUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmZfICMjIGNwdShNUFZFbmNDb250ZXh0ICpzLCBj
b25zdCB1aW50OF90ICpzcmMxLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7IFwK
LSAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmYxNl8gIyMgY3B1KE1wZWdFbmNDb250ZXh0ICpzLCBj
b25zdCB1aW50OF90ICpzcmMxLCAgIFwKKyAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmYxNl8gIyMg
Y3B1KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsICAgICAgIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYzIsIHB0cmRp
ZmZfdCBzdHJpZGUsIGludCBoKTsKIAogaGFkYW1hcmRfZnVuYyhtbXhleHQpCkBAIC04OCw3ICs4
OCw3IEBAIGhhZGFtYXJkX2Z1bmMoc3NlMikKIGhhZGFtYXJkX2Z1bmMoc3NzZTMpCiAKICNpZiBI
QVZFX1g4NkFTTQotc3RhdGljIGludCBuc3NlMTZfbW14KE1wZWdFbmNDb250ZXh0ICpjLCBjb25z
dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGludCBuc3NlMTZf
bW14KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg
KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7
CiAgICAgaW50IHNjb3JlMSwgc2NvcmUyOwpAQCAtMTAxLDEyICsxMDEsMTIgQEAgc3RhdGljIGlu
dCBuc3NlMTZfbW14KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25z
dCB1aW50OF90ICpwaXgKICAgICAgICAgICAgLSBmZl9oZl9ub2lzZTE2X21teChwaXgyLCBzdHJp
ZGUsIGgpIC0gZmZfaGZfbm9pc2U4X21teChwaXgyKzgsIHN0cmlkZSwgaCk7CiAKICAgICBpZiAo
YykKLSAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiBjLT5hdmN0eC0+bnNz
ZV93ZWlnaHQ7CisgICAgICAgIHJldHVybiBzY29yZTEgKyBGRkFCUyhzY29yZTIpICogYy0+Yy5h
dmN0eC0+bnNzZV93ZWlnaHQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gc2NvcmUxICsgRkZB
QlMoc2NvcmUyKSAqIDg7CiB9CiAKLXN0YXRpYyBpbnQgbnNzZThfbW14KE1wZWdFbmNDb250ZXh0
ICpjLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGlu
dCBuc3NlOF9tbXgoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg
dWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu
dCBoKQogewogICAgIGludCBzY29yZTEgPSBmZl9zc2U4X21teChjLCBwaXgxLCBwaXgyLCBzdHJp
ZGUsIGgpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBpbnQgbnNzZThfbW14KE1wZWdFbmND
b250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyCiAgICAg
ICAgICAgICAgICAgIGZmX2hmX25vaXNlOF9tbXgocGl4Miwgc3RyaWRlLCBoKTsKIAogICAgIGlm
IChjKQotICAgICAgICByZXR1cm4gc2NvcmUxICsgRkZBQlMoc2NvcmUyKSAqIGMtPmF2Y3R4LT5u
c3NlX3dlaWdodDsKKyAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiBjLT5j
LmF2Y3R4LT5uc3NlX3dlaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBzY29yZTEgKyBG
RkFCUyhzY29yZTIpICogODsKIH0KQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIGlu
dCBzdW1fbW14KHZvaWQpCiB9CiAKICNkZWZpbmUgUElYX1NBRFhZKHN1ZikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBpbnQgc2FkOF94
eTJfICMjIHN1ZihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqYmxrMiwgICAgIFwK
K3N0YXRpYyBpbnQgc2FkOF94eTJfICMjIHN1ZihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50
OF90ICpibGsyLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpibGsxLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgXAogeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIF9fYXNtX18gdm9sYXRpbGUgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbnQgc2FkOF94eTJf
ICMjIHN1ZihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqYmxrMiwgICAgIFwKICAg
ICByZXR1cm4gc3VtXyAjIyBzdWYoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRp
YyBpbnQgc2FkMTZfeHkyXyAjIyBzdWYoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg
KmJsazIsICAgIFwKK3N0YXRpYyBpbnQgc2FkMTZfeHkyXyAjIyBzdWYoTVBWRW5jQ29udGV4dCAq
diwgY29uc3QgdWludDhfdCAqYmxrMiwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqYmxrMSwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpIFwKIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBfX2FzbV9fIHZvbGF0aWxlICggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMveDg2
L21wZWd2aWRlb2VuYy5jIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvZW5jLmMKaW5kZXggNjEy
ZTdmZjc1OC4uOTlkYWNjZWYzYiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVv
ZW5jLmMKKysrIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvZW5jLmMKQEAgLTcwLDggKzcwLDkg
QEAgREVDTEFSRV9BTElHTkVEKDE2LCBzdGF0aWMgY29uc3QgdWludDE2X3QsIGludl96aWd6YWdf
ZGlyZWN0MTYpWzY0XSA9IHsKIAogI2lmIEhBVkVfSU5MSU5FX0FTTQogI2lmIEhBVkVfU1NFMl9J
TkxJTkUKLXN0YXRpYyB2b2lkICBkZW5vaXNlX2RjdF9zc2UyKE1wZWdFbmNDb250ZXh0ICpzLCBp
bnQxNl90ICpibG9jayl7Ci0gICAgY29uc3QgaW50IGludHJhPSBzLT5tYl9pbnRyYTsKK3N0YXRp
YyB2b2lkIGRlbm9pc2VfZGN0X3NzZTIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBi
bG9ja1tdKQoreworICAgIGNvbnN0IGludCBpbnRyYT0gcy0+Yy5tYl9pbnRyYTsKICAgICBpbnQg
KnN1bT0gcy0+ZGN0X2Vycm9yX3N1bVtpbnRyYV07CiAgICAgdWludDE2X3QgKm9mZnNldD0gcy0+
ZGN0X29mZnNldFtpbnRyYV07CiAKQEAgLTEyOCw5ICsxMjksOSBAQCBzdGF0aWMgdm9pZCAgZGVu
b2lzZV9kY3Rfc3NlMihNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2spewogI2VuZGlm
IC8qIEhBVkVfU1NFMl9JTkxJTkUgKi8KICNlbmRpZiAvKiBIQVZFX0lOTElORV9BU00gKi8KIAot
YXZfY29sZCB2b2lkIGZmX2RjdF9lbmNvZGVfaW5pdF94ODYoTXBlZ0VuY0NvbnRleHQgKnMpCith
dl9jb2xkIHZvaWQgZmZfZGN0X2VuY29kZV9pbml0X3g4NihNUFZFbmNDb250ZXh0ICpjb25zdCBz
KQogewotICAgIGNvbnN0IGludCBkY3RfYWxnbyA9IHMtPmF2Y3R4LT5kY3RfYWxnbzsKKyAgICBj
b25zdCBpbnQgZGN0X2FsZ28gPSBzLT5jLmF2Y3R4LT5kY3RfYWxnbzsKIAogICAgIGlmIChkY3Rf
YWxnbyA9PSBGRl9EQ1RfQVVUTyB8fCBkY3RfYWxnbyA9PSBGRl9EQ1RfTU1YKSB7CiAjaWYgSEFW
RV9NTVhfSU5MSU5FCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni9tcGVndmlkZW9lbmNfdGVt
cGxhdGUuYyBiL2xpYmF2Y29kZWMveDg2L21wZWd2aWRlb2VuY190ZW1wbGF0ZS5jCmluZGV4IGY5
MzdjNzE2NmIuLjA4NjE5YWM1NzAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMveDg2L21wZWd2aWRl
b2VuY190ZW1wbGF0ZS5jCisrKyBiL2xpYmF2Y29kZWMveDg2L21wZWd2aWRlb2VuY190ZW1wbGF0
ZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5o
IgogI2luY2x1ZGUgImxpYmF2dXRpbC94ODYvYXNtLmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9t
cGVndXRpbHMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgorI2luY2x1ZGUg
ImxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgiCiAjaW5jbHVkZSAiZmRjdC5oIgogCiAjdW5kZWYg
TU1SRUdfV0lEVEgKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgICAgICJwc3VidyAiYSIsICJi
IiAgICAgICAgICAgICBcblx0IiAvLyBvdXQ9KChBQlMoYmxvY2tbaV0pKnFtYXRbMF0gLSBiaWFz
WzBdKnFtYXRbMF0pPj4xNikqc2lnbihibG9ja1tpXSkKICNlbmRpZgogCi1zdGF0aWMgaW50IFJF
TkFNRShkY3RfcXVhbnRpemUpKE1wZWdFbmNDb250ZXh0ICpzLAorc3RhdGljIGludCBSRU5BTUUo
ZGN0X3F1YW50aXplKShNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KQogewpAQCAtMTA1LDE5ICsxMDUsMTkgQEAg
c3RhdGljIGludCBSRU5BTUUoZGN0X3F1YW50aXplKShNcGVnRW5jQ29udGV4dCAqcywKICAgICBp
ZihzLT5kY3RfZXJyb3Jfc3VtKQogICAgICAgICBzLT5kZW5vaXNlX2RjdChzLCBibG9jayk7CiAK
LSAgICBpZiAocy0+bWJfaW50cmEpIHsKKyAgICBpZiAocy0+Yy5tYl9pbnRyYSkgewogICAgICAg
ICBpbnQgZHVtbXk7CiAgICAgICAgIGlmIChuIDwgNCl7Ci0gICAgICAgICAgICBxID0gcy0+eV9k
Y19zY2FsZTsKKyAgICAgICAgICAgIHEgPSBzLT5jLnlfZGNfc2NhbGU7CiAgICAgICAgICAgICBi
aWFzID0gcy0+cV9pbnRyYV9tYXRyaXgxNltxc2NhbGVdWzFdOwogICAgICAgICAgICAgcW1hdCA9
IHMtPnFfaW50cmFfbWF0cml4MTZbcXNjYWxlXVswXTsKICAgICAgICAgfWVsc2V7Ci0gICAgICAg
ICAgICBxID0gcy0+Y19kY19zY2FsZTsKKyAgICAgICAgICAgIHEgPSBzLT5jLmNfZGNfc2NhbGU7
CiAgICAgICAgICAgICBiaWFzID0gcy0+cV9jaHJvbWFfaW50cmFfbWF0cml4MTZbcXNjYWxlXVsx
XTsKICAgICAgICAgICAgIHFtYXQgPSBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXgxNltxc2NhbGVd
WzBdOwogICAgICAgICB9CiAgICAgICAgIC8qIG5vdGU6IGJsb2NrWzBdIGlzIGFzc3VtZWQgdG8g
YmUgcG9zaXRpdmUgKi8KLSAgICAgICAgaWYgKCFzLT5oMjYzX2FpYykgeworICAgICAgICBpZiAo
IXMtPmMuaDI2M19haWMpIHsKICAgICAgICAgX19hc21fXyB2b2xhdGlsZSAoCiAgICAgICAgICAg
ICAgICAgIm11bCAlJWVjeCAgICAgICAgICAgICAgICBcblx0IgogICAgICAgICAgICAgICAgIDog
Ij1kIiAobGV2ZWwpLCAiPWEiKGR1bW15KQpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbnQg
UkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgIHFtYXQgPSBz
LT5xX2ludGVyX21hdHJpeDE2W3FzY2FsZV1bMF07CiAgICAgfQogCi0gICAgaWYoKHMtPm91dF9m
b3JtYXQgPT0gRk1UX0gyNjMgfHwgcy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSkgJiYgcy0+bXBl
Z19xdWFudD09MCl7CisgICAgaWYoKHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5j
Lm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpICYmIHMtPmMubXBlZ19xdWFudD09MCl7CiAKICAgICAg
ICAgX19hc21fXyB2b2xhdGlsZSgKICAgICAgICAgICAgICJtb3ZkICUlIkZGX1JFR19hIiwgIk1N
IjMgICAgICAgICAgIFxuXHQiIC8vIGxhc3Rfbm9uX3plcm9fcDEKQEAgLTIyMCwxMSArMjIwLDEx
IEBAIHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAg
ICAgICAgIDogImciIChzLT5tYXhfcWNvZWZmKQogICAgICk7CiAKLSAgICBpZihzLT5tYl9pbnRy
YSkgYmxvY2tbMF09IGxldmVsOworICAgIGlmKHMtPmMubWJfaW50cmEpIGJsb2NrWzBdPSBsZXZl
bDsKICAgICBlbHNlICAgICAgICAgICAgYmxvY2tbMF09IHRlbXBfYmxvY2tbMF07CiAKLSAgICBh
dl9hc3NlcnQyKEFSQ0hfWDg2XzMyIHx8IHMtPmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVS
TV9TSU1QTEUpOwotICAgIGlmIChBUkNIX1g4Nl8zMiAmJiBzLT5pZHNwLnBlcm1fdHlwZSA9PSBG
Rl9JRENUX1BFUk1fU0lNUExFKSB7CisgICAgYXZfYXNzZXJ0MihBUkNIX1g4Nl8zMiB8fCBzLT5j
Lmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9TSU1QTEUpOworICAgIGlmIChBUkNIX1g4
Nl8zMiAmJiBzLT5jLmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9TSU1QTEUpIHsKICAg
ICAgICAgaWYobGFzdF9ub25femVyb19wMSA8PSAxKSBnb3RvIGVuZDsKICAgICAgICAgYmxvY2tb
MHgwOF0gPSB0ZW1wX2Jsb2NrWzB4MDFdOyBibG9ja1sweDEwXSA9IHRlbXBfYmxvY2tbMHgwOF07
CiAgICAgICAgIGJsb2NrWzB4MjBdID0gdGVtcF9ibG9ja1sweDEwXTsKQEAgLTI2OCw3ICsyNjgs
NyBAQCBzdGF0aWMgaW50IFJFTkFNRShkY3RfcXVhbnRpemUpKE1wZWdFbmNDb250ZXh0ICpzLAog
ICAgICAgICBibG9ja1sweDNFXSA9IHRlbXBfYmxvY2tbMHgzRF07IGJsb2NrWzB4MjddID0gdGVt
cF9ibG9ja1sweDM2XTsKICAgICAgICAgYmxvY2tbMHgzRF0gPSB0ZW1wX2Jsb2NrWzB4MkZdOyBi
bG9ja1sweDJGXSA9IHRlbXBfYmxvY2tbMHgzN107CiAgICAgICAgIGJsb2NrWzB4MzddID0gdGVt
cF9ibG9ja1sweDNFXTsgYmxvY2tbMHgzRl0gPSB0ZW1wX2Jsb2NrWzB4M0ZdOwotICAgIH1lbHNl
IGlmKHMtPmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9MSUJNUEVHMil7CisgICAgfWVs
c2UgaWYocy0+Yy5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTElCTVBFRzIpewogICAg
ICAgICBpZihsYXN0X25vbl96ZXJvX3AxIDw9IDEpIGdvdG8gZW5kOwogICAgICAgICBibG9ja1sw
eDA0XSA9IHRlbXBfYmxvY2tbMHgwMV07CiAgICAgICAgIGJsb2NrWzB4MDhdID0gdGVtcF9ibG9j
a1sweDA4XTsgYmxvY2tbMHgxMF0gPSB0ZW1wX2Jsb2NrWzB4MTBdOwpAQCAtMzEyLDcgKzMxMiw3
IEBAIHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAg
ICAgICAgIGJsb2NrWzB4M0VdID0gdGVtcF9ibG9ja1sweDNEXTsgYmxvY2tbMHgzM10gPSB0ZW1w
X2Jsb2NrWzB4MzZdOwogICAgICAgICBibG9ja1sweDJGXSA9IHRlbXBfYmxvY2tbMHgyRl07IGJs
b2NrWzB4MzddID0gdGVtcF9ibG9ja1sweDM3XTsKICAgICAgICAgYmxvY2tbMHgzQl0gPSB0ZW1w
X2Jsb2NrWzB4M0VdOyBibG9ja1sweDNGXSA9IHRlbXBfYmxvY2tbMHgzRl07Ci0gICAgfSBlbHNl
IGlmIChzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTk9ORSkgeworICAgIH0gZWxz
ZSBpZiAocy0+Yy5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTk9ORSkgewogICAgICAg
ICBpZihsYXN0X25vbl96ZXJvX3AxIDw9IDEpIGdvdG8gZW5kOwogICAgICAgICBibG9ja1sweDAx
XSA9IHRlbXBfYmxvY2tbMHgwMV07CiAgICAgICAgIGJsb2NrWzB4MDhdID0gdGVtcF9ibG9ja1sw
eDA4XTsgYmxvY2tbMHgxMF0gPSB0ZW1wX2Jsb2NrWzB4MTBdOwpAQCAtMzU2LDcgKzM1Niw3IEBA
IHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAg
ICAgIGJsb2NrWzB4M0RdID0gdGVtcF9ibG9ja1sweDNEXTsgYmxvY2tbMHgzNl0gPSB0ZW1wX2Js
b2NrWzB4MzZdOwogICAgICAgICBibG9ja1sweDJGXSA9IHRlbXBfYmxvY2tbMHgyRl07IGJsb2Nr
WzB4MzddID0gdGVtcF9ibG9ja1sweDM3XTsKICAgICAgICAgYmxvY2tbMHgzRV0gPSB0ZW1wX2Js
b2NrWzB4M0VdOyBibG9ja1sweDNGXSA9IHRlbXBfYmxvY2tbMHgzRl07Ci0gICAgfSBlbHNlIGlm
IChzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fVFJBTlNQT1NFKSB7CisgICAgfSBl
bHNlIGlmIChzLT5jLmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9UUkFOU1BPU0UpIHsK
ICAgICAgICAgaWYobGFzdF9ub25femVyb19wMSA8PSAxKSBnb3RvIGVuZDsKICAgICAgICAgYmxv
Y2tbMHgwOF0gPSB0ZW1wX2Jsb2NrWzB4MDFdOwogICAgICAgICBibG9ja1sweDAxXSA9IHRlbXBf
YmxvY2tbMHgwOF07IGJsb2NrWzB4MDJdID0gdGVtcF9ibG9ja1sweDEwXTsKQEAgLTQwMSwxMiAr
NDAxLDEyIEBAIHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQg
KnMsCiAgICAgICAgIGJsb2NrWzB4M0RdID0gdGVtcF9ibG9ja1sweDJGXTsgYmxvY2tbMHgzRV0g
PSB0ZW1wX2Jsb2NrWzB4MzddOwogICAgICAgICBibG9ja1sweDM3XSA9IHRlbXBfYmxvY2tbMHgz
RV07IGJsb2NrWzB4M0ZdID0gdGVtcF9ibG9ja1sweDNGXTsKICAgICB9IGVsc2UgewotICAgICAg
ICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywgInMtPmlkc3AucGVybV90eXBlOiAlZFxu
IiwKLSAgICAgICAgICAgICAgICAoaW50KXMtPmlkc3AucGVybV90eXBlKTsKLSAgICAgICAgYXZf
YXNzZXJ0MChzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTk9ORSB8fAotICAgICAg
ICAgICAgICAgIHMtPmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9MSUJNUEVHMiB8fAot
ICAgICAgICAgICAgICAgIHMtPmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9TSU1QTEUg
fHwKLSAgICAgICAgICAgICAgICBzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fVFJB
TlNQT1NFKTsKKyAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywgInMtPmMu
aWRzcC5wZXJtX3R5cGU6ICVkXG4iLAorICAgICAgICAgICAgICAgIChpbnQpcy0+Yy5pZHNwLnBl
cm1fdHlwZSk7CisgICAgICAgIGF2X2Fzc2VydDAocy0+Yy5pZHNwLnBlcm1fdHlwZSA9PSBGRl9J
RENUX1BFUk1fTk9ORSB8fAorICAgICAgICAgICAgICAgIHMtPmMuaWRzcC5wZXJtX3R5cGUgPT0g
RkZfSURDVF9QRVJNX0xJQk1QRUcyIHx8CisgICAgICAgICAgICAgICAgcy0+Yy5pZHNwLnBlcm1f
dHlwZSA9PSBGRl9JRENUX1BFUk1fU0lNUExFIHx8CisgICAgICAgICAgICAgICAgcy0+Yy5pZHNw
LnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fVFJBTlNQT1NFKTsKICAgICB9CiAgICAgZW5kOgog
ICAgIHJldHVybiBsYXN0X25vbl96ZXJvX3AxIC0gMTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNr
YXNtL21vdGlvbi5jIGIvdGVzdHMvY2hlY2thc20vbW90aW9uLmMKaW5kZXggN2UzMjJkYTBkNS4u
OTYwYTQxYThlZCAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vbW90aW9uLmMKKysrIGIvdGVz
dHMvY2hlY2thc20vbW90aW9uLmMKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9t
b3Rpb24oY29uc3QgY2hhciAqbmFtZSwgbWVfY21wX2Z1bmMgdGVzdF9mdW5jKQogICAgIExPQ0FM
X0FMSUdORURfMTYodWludDhfdCwgaW1nMSwgW1dJRFRIICogSEVJR0hUXSk7CiAgICAgTE9DQUxf
QUxJR05FRF8xNih1aW50OF90LCBpbWcyLCBbV0lEVEggKiBIRUlHSFRdKTsKIAotICAgIGRlY2xh
cmVfZnVuY19lbW1zKEFWX0NQVV9GTEFHX01NWCwgaW50LCBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg
KmMsCisgICAgZGVjbGFyZV9mdW5jX2VtbXMoQVZfQ1BVX0ZMQUdfTU1YLCBpbnQsIE1QVkVuY0Nv
bnRleHQgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmxrMSAvKiBh
bGlnbiB3aWR0aCAoOCBvciAxNikgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqYmxrMiAvKiBhbGlnbiAxICovLCBwdHJkaWZmX3Qgc3RyaWRlLAogICAgICAgICAgICAg
ICAgICAgICAgIGludCBoKTsKLS0gCjIuNDUuMgoK

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0064-avcodec-mpeg12enc-speedhqenc-Optimize-writing-escape.patch"
Content-Disposition: attachment;
 filename*0="0064-avcodec-mpeg12enc-speedhqenc-Optimize-writing-escape.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSBjNTk1YTNiMGEzMzZkNmIwNmI4YTE4ZTMwMDhhNmI3ZThmOTg5YzJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMjoyNjo0NyArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjQvNzddIGF2Y29kZWMvbXBlZzEyZW5jLCBzcGVlZGhxZW5jOiBPcHRpbWl6
ZSB3cml0aW5nIGVzY2FwZQogY29kZXMKClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJk
dCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvbXBlZzEy
ZW5jLmMgIHwgOSArKysrLS0tLS0KIGxpYmF2Y29kZWMvc3BlZWRocWVuYy5jIHwgOSArKysrLS0t
LS0KIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWcxMmVuYy5jIGIvbGliYXZjb2RlYy9tcGVnMTJlbmMu
YwppbmRleCA1YTkxZjlmZmYxLi41ODQ1NzNiNDY2IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21w
ZWcxMmVuYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmMKQEAgLTYyOCwxMiArNjI4LDEx
IEBAIG5leHRfY29lZjoKICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIHRhYmxlX3Zs
Y1tjb2RlXVsxXSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYmxlX3ZsY1tjb2Rl
XVswXSA8PCAxKSArIHNpZ24pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAvKiBFc2NhcGUgc2VlbXMgdG8gYmUgcHJldHR5IHJhcmUgPDUlIHNvIEkgZG8gbm90IG9wdGlt
aXplIGl0OwotICAgICAgICAgICAgICAgICAqIHRoZSBmb2xsb3dpbmcgdmFsdWUgaXMgdGhlIGNv
bW1vbiBlc2NhcGUgdmFsdWUgZm9yIGJvdGgKLSAgICAgICAgICAgICAgICAgKiBwb3NzaWJsZSB0
YWJsZXMgKGkuZS4gdGFibGVfdmxjWzExMV0pLiAqLwotICAgICAgICAgICAgICAgIHB1dF9iaXRz
KCZzLT5wYiwgNiwgMHgwMSk7CisgICAgICAgICAgICAgICAgLyogRXNjYXBlIHNlZW1zIHRvIGJl
IHByZXR0eSByYXJlIDw1JSBzbyBJIGRvIG5vdCBvcHRpbWl6ZSBpdC4KKyAgICAgICAgICAgICAg
ICAgKiBUaGUgZm9sbG93aW5nIGVuY29kZXMgcnVuIHRvZ2V0aGVyIHdpdGggdGhlIGNvbW1vbiBl
c2NhcGUKKyAgICAgICAgICAgICAgICAgKiB2YWx1ZSBvZiBib3RoIHRhYmxlcyAwMDAwMDFiLiAq
LworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNiArIDYsIDB4MDEgPDwgNiB8IHJ1
bik7CiAgICAgICAgICAgICAgICAgLyogZXNjYXBlOiBvbmx5IGNsaXAgaW4gdGhpcyBjYXNlICov
Ci0gICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA2LCBydW4pOwogICAgICAgICAgICAg
ICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8pIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGFsZXZlbCA8IDEyOCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0X3NiaXRzKCZzLT5wYiwgOCwgbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9z
cGVlZGhxZW5jLmMgYi9saWJhdmNvZGVjL3NwZWVkaHFlbmMuYwppbmRleCA3ZGRmYjkyMDc2Li5l
Y2JhMmNkODQwIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3NwZWVkaHFlbmMuYworKysgYi9saWJh
dmNvZGVjL3NwZWVkaHFlbmMuYwpAQCAtMTk0LDExICsxOTQsMTAgQEAgc3RhdGljIHZvaWQgZW5j
b2RlX2Jsb2NrKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludDE2X3QgYmxvY2tbXSwg
aW50IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfc3BlZWRocV92bGNfdGFibGVb
Y29kZV1bMF0gfCAoc2lnbiA8PCBmZl9zcGVlZGhxX3ZsY190YWJsZVtjb2RlXVsxXSkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBlc2NhcGUgc2VlbXMgdG8gYmUg
cHJldHR5IHJhcmUgPDUlIHNvIEkgZG8gbm90IG9wdGltaXplIGl0OwotICAgICAgICAgICAgICAg
ICAqIHRoZSB2YWx1ZXMgY29ycmVzcG9uZCB0byBmZl9zcGVlZGhxX3ZsY190YWJsZVsxMjFdICov
Ci0gICAgICAgICAgICAgICAgcHV0X2JpdHNfbGUoJnMtPnBiLCA2LCAzMik7Ci0gICAgICAgICAg
ICAgICAgLyogZXNjYXBlOiBvbmx5IGNsaXAgaW4gdGhpcyBjYXNlICovCi0gICAgICAgICAgICAg
ICAgcHV0X2JpdHNfbGUoJnMtPnBiLCA2LCBydW4pOwotICAgICAgICAgICAgICAgIHB1dF9iaXRz
X2xlKCZzLT5wYiwgMTIsIGxldmVsICsgMjA0OCk7CisgICAgICAgICAgICAgICAgICogVGhlIGZv
bGxvd2luZyBlbmNvZGVzIHRoZSBlc2NhcGUgdmFsdWUgMTAwMDAwYiB0b2dldGhlciB3aXRoCisg
ICAgICAgICAgICAgICAgICogcnVuIGFuZCBsZXZlbC4gKi8KKyAgICAgICAgICAgICAgICBwdXRf
Yml0c19sZSgmcy0+cGIsIDYgKyA2ICsgMTIsIDB4MjAgfCBydW4gPDwgNiB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwgKyAyMDQ4KSA8PCAx
Mik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsYXN0X25vbl96ZXJvID0gaTsKICAgICAg
ICAgfQotLSAKMi40NS4yCgo=

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0065-avcodec-mpegvideo_enc-Move-lambda-lambda2-to-MPVEncC.patch"
Content-Disposition: attachment;
 filename*0="0065-avcodec-mpegvideo_enc-Move-lambda-lambda2-to-MPVEncC.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSAxMDBkMzNiNWVjMjhmNDUzNWNiY2MwMDA2MTgwN2YxMDk1NDMzYzVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMjo1MDowNiArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjUvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogTW92ZSBsYW1iZGEsIGxh
bWJkYTIgdG8KIE1QVkVuY0NvbnRleHQKClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJk
dCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvaDI2M2Vu
Yy5oICAgICAgIHwgIDIgKy0KIGxpYmF2Y29kZWMvbW90aW9uX2VzdC5jICAgIHwgMjQgKysrKysr
KysrKystLS0tLS0tLS0tLQogbGliYXZjb2RlYy9tcGVnNHZpZGVvZW5jLmMgfCAgMiArLQogbGli
YXZjb2RlYy9tcGVndmlkZW8uaCAgICAgfCAgMiAtLQogbGliYXZjb2RlYy9tcGVndmlkZW9fZW5j
LmMgfCA0MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogbGliYXZjb2Rl
Yy9tcGVndmlkZW9lbmMuaCAgfCAgMiArKwogbGliYXZjb2RlYy9zbm93ZW5jLmMgICAgICAgfCAg
NiArKystLS0KIGxpYmF2Y29kZWMvc3ZxMWVuYy5jICAgICAgIHwgIDYgKysrLS0tCiA4IGZpbGVz
IGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L2xpYmF2Y29kZWMvaDI2M2VuYy5oIGIvbGliYXZjb2RlYy9oMjYzZW5jLmgKaW5kZXggMWY0NTlh
MzMyYy4uNjNhZjNhNTc2ZiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9oMjYzZW5jLmgKKysrIGIv
bGliYXZjb2RlYy9oMjYzZW5jLmgKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGlubGluZSBpbnQg
Z2V0X3BfY2JwKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgIGludCBiZXN0X2NicGNf
c2NvcmUgPSBJTlRfTUFYOwogICAgICAgICBpbnQgY2JwYyA9ICgtMSksIGNicHkgPSAoLTEpOwog
ICAgICAgICBjb25zdCBpbnQgb2Zmc2V0ID0gKHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2
ID8gMCA6IDE2KSArIChzLT5kcXVhbnQgPyA4IDogMCk7Ci0gICAgICAgIGNvbnN0IGludCBsYW1i
ZGEgPSBzLT5jLmxhbWJkYTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYpOworICAgICAgICBjb25z
dCBpbnQgbGFtYmRhID0gcy0+bGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZUIC0gNik7CiAKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgIGludCBzY29y
ZSA9IGZmX2gyNjNfaW50ZXJfTUNCUENfYml0c1tpICsgb2Zmc2V0XSAqIGxhbWJkYTsKZGlmZiAt
LWdpdCBhL2xpYmF2Y29kZWMvbW90aW9uX2VzdC5jIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMK
aW5kZXggOTIzYmY1Njg3Yi4uYjJiODg4MjM3YiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tb3Rp
b25fZXN0LmMKKysrIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMKQEAgLTkwMiw5ICs5MDIsOSBA
QCB2b2lkIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMs
CiAgICAgYXZfYXNzZXJ0MChzLT5jLmxpbmVzaXplID09IGMtPnN0cmlkZSk7CiAgICAgYXZfYXNz
ZXJ0MChzLT5jLnV2bGluZXNpemUgPT0gYy0+dXZzdHJpZGUpOwogCi0gICAgYy0+cGVuYWx0eV9m
YWN0b3IgICAgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmMubGFtYmRhLCBzLT5jLmxhbWJkYTIs
IGMtPmF2Y3R4LT5tZV9jbXApOwotICAgIGMtPnN1Yl9wZW5hbHR5X2ZhY3RvciA9IGdldF9wZW5h
bHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWVfc3ViX2Nt
cCk7Ci0gICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmMu
bGFtYmRhLCBzLT5jLmxhbWJkYTIsIGMtPmF2Y3R4LT5tYl9jbXApOworICAgIGMtPnBlbmFsdHlf
ZmFjdG9yICAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMt
PmF2Y3R4LT5tZV9jbXApOworICAgIGMtPnN1Yl9wZW5hbHR5X2ZhY3RvciA9IGdldF9wZW5hbHR5
X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMtPmF2Y3R4LT5tZV9zdWJfY21wKTsKKyAg
ICBjLT5tYl9wZW5hbHR5X2ZhY3RvciAgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+bGFtYmRhLCBz
LT5sYW1iZGEyLCBjLT5hdmN0eC0+bWJfY21wKTsKICAgICBjLT5jdXJyZW50X212X3BlbmFsdHkg
PSBjLT5tdl9wZW5hbHR5W3MtPmMuZl9jb2RlXSArIE1BWF9ETVY7CiAKICAgICBnZXRfbGltaXRz
KHMsIDE2Km1iX3gsIDE2Km1iX3ksIDApOwpAQCAtOTY4LDE0ICs5NjgsMTQgQEAgdm9pZCBmZl9l
c3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgIGMtPm1j
X21iX3Zhcl9zdW1fdGVtcCArPSAodmFyZCsxMjgpPj44OwogCiAgICAgaWYgKGMtPmF2Y3R4LT5t
Yl9kZWNpc2lvbiA+IEZGX01CX0RFQ0lTSU9OX1NJTVBMRSkgewotICAgICAgICBpbnQgcF9zY29y
ZSA9IEZGTUlOKHZhcmQsIHZhcmMgLSA1MDAgKyAocy0+Yy5sYW1iZGEyID4+IEZGX0xBTUJEQV9T
SElGVCkqMTAwKTsKLSAgICAgICAgaW50IGlfc2NvcmUgPSB2YXJjIC0gNTAwICsgKHMtPmMubGFt
YmRhMiA+PiBGRl9MQU1CREFfU0hJRlQpKjIwOworICAgICAgICBpbnQgcF9zY29yZSA9IEZGTUlO
KHZhcmQsIHZhcmMgLSA1MDAgKyAocy0+bGFtYmRhMiA+PiBGRl9MQU1CREFfU0hJRlQpKjEwMCk7
CisgICAgICAgIGludCBpX3Njb3JlID0gdmFyYyAtIDUwMCArIChzLT5sYW1iZGEyID4+IEZGX0xB
TUJEQV9TSElGVCkqMjA7CiAgICAgICAgIGMtPnNjZW5lX2NoYW5nZV9zY29yZSs9IGZmX3NxcnQo
cF9zY29yZSkgLSBmZl9zcXJ0KGlfc2NvcmUpOwogCiAgICAgICAgIGlmICh2YXJkKjIgKyAyMDAq
MjU2ID4gdmFyYyAmJiAhcy0+aW50cmFfcGVuYWx0eSkKICAgICAgICAgICAgIG1iX3R5cGV8PSBD
QU5ESURBVEVfTUJfVFlQRV9JTlRSQTsKICAgICAgICAgaWYgKHZhcmMqMiArIDIwMCoyNTYgPiB2
YXJkIHx8IHMtPmMucXNjYWxlID4gMjQpewotLy8gICAgICAgIGlmICh2YXJjKjIgKyAyMDAqMjU2
ICsgNTAqKHMtPmMubGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSA+IHZhcmQpeworLy8gICAgICAg
IGlmICh2YXJjKjIgKyAyMDAqMjU2ICsgNTAqKHMtPmxhbWJkYTI+PkZGX0xBTUJEQV9TSElGVCkg
PiB2YXJkKXsKICAgICAgICAgICAgIG1iX3R5cGV8PSBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUjsK
ICAgICAgICAgICAgIGMtPnN1Yl9tb3Rpb25fc2VhcmNoKHMsICZteCwgJm15LCBkbWluLCAwLCAw
LCAwLCAxNik7CiAgICAgICAgICAgICBpZiAocy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfTVYw
KQpAQCAtMTA1MCw4ICsxMDUwLDggQEAgdm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihN
UFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgcy0+Yy5jdXJfcGljLm1iX3R5cGVb
bWJfeSpzLT5jLm1iX3N0cmlkZSArIG1iX3hdID0gMDsKIAogICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnQgcF9zY29yZSA9IEZGTUlOKHZhcmQsIHZhcmMtNTAwKyhzLT5jLmxhbWJkYTI+PkZGX0xB
TUJEQV9TSElGVCkqMTAwKTsKLSAgICAgICAgICAgIGludCBpX3Njb3JlID0gdmFyYy01MDArKHMt
PmMubGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSoyMDsKKyAgICAgICAgICAgIGludCBwX3Njb3Jl
ID0gRkZNSU4odmFyZCwgdmFyYy01MDArKHMtPmxhbWJkYTI+PkZGX0xBTUJEQV9TSElGVCkqMTAw
KTsKKyAgICAgICAgICAgIGludCBpX3Njb3JlID0gdmFyYy01MDArKHMtPmxhbWJkYTI+PkZGX0xB
TUJEQV9TSElGVCkqMjA7CiAgICAgICAgICAgICBjLT5zY2VuZV9jaGFuZ2Vfc2NvcmUrPSBmZl9z
cXJ0KHBfc2NvcmUpIC0gZmZfc3FydChpX3Njb3JlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEw
NzEsNyArMTA3MSw3IEBAIGludCBmZl9wcmVfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTVBWRW5j
Q29udGV4dCAqY29uc3QgcywKIAogICAgIGF2X2Fzc2VydDAocy0+Yy5xdWFydGVyX3NhbXBsZT09
MCB8fCBzLT5jLnF1YXJ0ZXJfc2FtcGxlPT0xKTsKIAotICAgIGMtPnByZV9wZW5hbHR5X2ZhY3Rv
ciA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0
eC0+bWVfcHJlX2NtcCk7CisgICAgYy0+cHJlX3BlbmFsdHlfZmFjdG9yID0gZ2V0X3BlbmFsdHlf
ZmFjdG9yKHMtPmxhbWJkYSwgcy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3ByZV9jbXApOwogICAg
IGMtPmN1cnJlbnRfbXZfcGVuYWx0eSA9IGMtPm12X3BlbmFsdHlbcy0+Yy5mX2NvZGVdICsgTUFY
X0RNVjsKIAogICAgIGdldF9saW1pdHMocywgMTYqbWJfeCwgMTYqbWJfeSwgMCk7CkBAIC0xNTEw
LDkgKzE1MTAsOSBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjLT5wZW5hbHR5X2Zh
Y3RvciAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBj
LT5hdmN0eC0+bWVfY21wKTsKLSAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3I9IGdldF9wZW5hbHR5
X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWVfc3ViX2NtcCk7
Ci0gICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+Yy5sYW1i
ZGEsIHMtPmMubGFtYmRhMiwgYy0+YXZjdHgtPm1iX2NtcCk7CisgICAgYy0+cGVuYWx0eV9mYWN0
b3IgICAgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+bGFtYmRhLCBzLT5sYW1iZGEyLCBjLT5hdmN0
eC0+bWVfY21wKTsKKyAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3I9IGdldF9wZW5hbHR5X2ZhY3Rv
cihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMtPmF2Y3R4LT5tZV9zdWJfY21wKTsKKyAgICBjLT5t
Yl9wZW5hbHR5X2ZhY3RvciA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJk
YTIsIGMtPmF2Y3R4LT5tYl9jbXApOwogCiAgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZfQ09E
RUNfSURfTVBFRzQpCiAgICAgICAgIGRtaW49IGRpcmVjdF9zZWFyY2gocywgbWJfeCwgbWJfeSk7
CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYyBiL2xpYmF2Y29kZWMvbXBl
ZzR2aWRlb2VuYy5jCmluZGV4IDlmOTMzYjUxN2UuLmZlZmQ5NGVlOTkgMTAwNjQ0Ci0tLSBhL2xp
YmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5j
CkBAIC00NjEsNyArNDYxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2JfY2JwKE1QVkVuY0Nv
bnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbNl1bNjRdLAogCiAgICAgaWYgKHMtPm1wdl9m
bGFncyAmIEZGX01QVl9GTEFHX0NCUF9SRCkgewogICAgICAgICBpbnQgc2NvcmUgICAgICAgID0g
MDsKLSAgICAgICAgY29uc3QgaW50IGxhbWJkYSA9IHMtPmMubGFtYmRhMiA+PiAoRkZfTEFNQkRB
X1NISUZUIC0gNik7CisgICAgICAgIGNvbnN0IGludCBsYW1iZGEgPSBzLT5sYW1iZGEyID4+IChG
Rl9MQU1CREFfU0hJRlQgLSA2KTsKIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7
CiAgICAgICAgICAgICBpZiAocy0+Y29kZWRfc2NvcmVbaV0gPCAwKSB7CmRpZmYgLS1naXQgYS9s
aWJhdmNvZGVjL21wZWd2aWRlby5oIGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaAppbmRleCBhZGFh
MGNmMmQwLi41MzAxMzM4MTg4IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlby5oCisr
KyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgKQEAgLTE2Niw4ICsxNjYsNiBAQCB0eXBlZGVmIHN0
cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAKICAgICBpbnQgcXNjYWxlOyAgICAgICAgICAgICAgICAg
Ly8vPCBRUAogICAgIGludCBjaHJvbWFfcXNjYWxlOyAgICAgICAgICAvLy88IGNocm9tYSBRUAot
ICAgIHVuc2lnbmVkIGludCBsYW1iZGE7ICAgICAgICAvLy88IExhZ3JhbmdlIG11bHRpcGxpZXIg
dXNlZCBpbiByYXRlIGRpc3RvcnRpb24KLSAgICB1bnNpZ25lZCBpbnQgbGFtYmRhMjsgICAgICAg
Ly8vPCAobGFtYmRhKmxhbWJkYSkgPj4gRkZfTEFNQkRBX1NISUZUCiAgICAgaW50IHBpY3RfdHlw
ZTsgICAgICAgICAgICAgIC8vLzwgQVZfUElDVFVSRV9UWVBFX0ksIEFWX1BJQ1RVUkVfVFlQRV9Q
LCBBVl9QSUNUVVJFX1RZUEVfQiwgLi4uCiAgICAgaW50IGRyb3BwYWJsZTsKIApkaWZmIC0tZ2l0
IGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMu
YwppbmRleCA3MDYxYWQwNzE5Li42YzFkMTU3YjY0IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21w
ZWd2aWRlb19lbmMuYworKysgYi9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYwpAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfcXNjYWxlKE1QVk1haW5FbmNDb250
ZXh0ICpjb25zdCBtKQogICAgICAgICBpbnQgYmVzdCA9IDE7CiAKICAgICAgICAgZm9yIChpID0g
MCA7IGk8RkZfQVJSQVlfRUxFTVMoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGUpOyBpKyspIHsK
LSAgICAgICAgICAgIGludCBkaWZmID0gRkZBQlMoKGZmX21wZWcyX25vbl9saW5lYXJfcXNjYWxl
W2ldPDwoRkZfTEFNQkRBX1NISUZUICsgNikpIC0gKGludClzLT5jLmxhbWJkYSAqIDEzOSk7Cisg
ICAgICAgICAgICBpbnQgZGlmZiA9IEZGQUJTKChmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtp
XTw8KEZGX0xBTUJEQV9TSElGVCArIDYpKSAtIChpbnQpcy0+bGFtYmRhICogMTM5KTsKICAgICAg
ICAgICAgIGlmIChmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtpXSA8IHMtPmMuYXZjdHgtPnFt
aW4gfHwKICAgICAgICAgICAgICAgICAoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV0gPiBz
LT5jLmF2Y3R4LT5xbWF4ICYmICFtLT52YnZfaWdub3JlX3FtYXgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMjE1LDEyICsyMTUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0
ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIH0KICAgICAgICAg
cy0+Yy5xc2NhbGUgPSBiZXN0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHMtPmMucXNjYWxlID0g
KHMtPmMubGFtYmRhICogMTM5ICsgRkZfTEFNQkRBX1NDQUxFICogNjQpID4+CisgICAgICAgIHMt
PmMucXNjYWxlID0gKHMtPmxhbWJkYSAqIDEzOSArIEZGX0xBTUJEQV9TQ0FMRSAqIDY0KSA+Pgog
ICAgICAgICAgICAgICAgICAgICAoRkZfTEFNQkRBX1NISUZUICsgNyk7CiAgICAgICAgIHMtPmMu
cXNjYWxlID0gYXZfY2xpcChzLT5jLnFzY2FsZSwgcy0+Yy5hdmN0eC0+cW1pbiwgbS0+dmJ2X2ln
bm9yZV9xbWF4ID8gMzEgOiBzLT5jLmF2Y3R4LT5xbWF4KTsKICAgICB9CiAKLSAgICBzLT5jLmxh
bWJkYTIgPSAocy0+Yy5sYW1iZGEgKiBzLT5jLmxhbWJkYSArIEZGX0xBTUJEQV9TQ0FMRSAvIDIp
ID4+CisgICAgcy0+bGFtYmRhMiA9IChzLT5sYW1iZGEgKiBzLT5sYW1iZGEgKyBGRl9MQU1CREFf
U0NBTEUgLyAyKSA+PgogICAgICAgICAgICAgICAgICBGRl9MQU1CREFfU0hJRlQ7CiB9CiAKQEAg
LTI2MSw4ICsyNjEsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZHVwbGljYXRlX2NvbnRleHRfYWZ0
ZXJfbWUoTVBWRW5jQ29udGV4dCAqY29uc3QgZHN0LAogICAgIENPUFkoYy5mX2NvZGUpOwogICAg
IENPUFkoYy5iX2NvZGUpOwogICAgIENPUFkoYy5xc2NhbGUpOwotICAgIENPUFkoYy5sYW1iZGEp
OwotICAgIENPUFkoYy5sYW1iZGEyKTsKKyAgICBDT1BZKGxhbWJkYSk7CisgICAgQ09QWShsYW1i
ZGEyKTsKICAgICBDT1BZKGMuZnJhbWVfcHJlZF9mcmFtZV9kY3QpOyAvLyBGSVhNRSBkb24ndCBz
ZXQgaW4gZW5jb2RlX2hlYWRlcgogICAgIENPUFkoYy5wcm9ncmVzc2l2ZV9mcmFtZSk7ICAgIC8v
IEZJWE1FIGRvbid0IHNldCBpbiBlbmNvZGVfaGVhZGVyCiAgICAgQ09QWShjLnBhcnRpdGlvbmVk
X2ZyYW1lKTsgICAgLy8gRklYTUUgZG9uJ3Qgc2V0IGluIGVuY29kZV9oZWFkZXIKQEAgLTE0NzYs
NyArMTQ3Niw3IEBAIHN0YXRpYyBpbnQgc2tpcF9jaGVjayhNUFZNYWluRW5jQ29udGV4dCAqY29u
c3QgbSwKIAogICAgIGlmIChzY29yZTY0IDwgbS0+ZnJhbWVfc2tpcF90aHJlc2hvbGQpCiAgICAg
ICAgIHJldHVybiAxOwotICAgIGlmIChzY29yZTY0IDwgKChtLT5mcmFtZV9za2lwX2ZhY3RvciAq
IChpbnQ2NF90KSBzLT5jLmxhbWJkYSkgPj4gOCkpCisgICAgaWYgKHNjb3JlNjQgPCAoKG0tPmZy
YW1lX3NraXBfZmFjdG9yICogKGludDY0X3QpIHMtPmxhbWJkYSkgPj4gOCkpCiAgICAgICAgIHJl
dHVybiAxOwogICAgIHJldHVybiAwOwogfQpAQCAtMTk5MSw4ICsxOTkxLDggQEAgdmJ2X3JldHJ5
OgogICAgICAgICAgICAgaW50IG1pbl9zdGVwID0gaHEgPyAxIDogKDE8PChGRl9MQU1CREFfU0hJ
RlQgKyA3KSkvMTM5OwogCiAgICAgICAgICAgICBpZiAocHV0X2JpdHNfY291bnQoJnMtPnBiKSA+
IG1heF9zaXplICYmCi0gICAgICAgICAgICAgICAgcy0+Yy5sYW1iZGEgPCBtLT5sbWF4KSB7Ci0g
ICAgICAgICAgICAgICAgbS0+bmV4dF9sYW1iZGEgPSBGRk1BWChzLT5jLmxhbWJkYSArIG1pbl9z
dGVwLCBzLT5jLmxhbWJkYSAqCisgICAgICAgICAgICAgICAgcy0+bGFtYmRhIDwgbS0+bG1heCkg
eworICAgICAgICAgICAgICAgIG0tPm5leHRfbGFtYmRhID0gRkZNQVgocy0+bGFtYmRhICsgbWlu
X3N0ZXAsIHMtPmxhbWJkYSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAocy0+Yy5xc2NhbGUgKyAxKSAvIHMtPmMucXNjYWxlKTsKICAgICAgICAgICAgICAgICBpZiAo
cy0+YWRhcHRpdmVfcXVhbnQpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzLT5jLm1iX2hlaWdodCAqIHMtPmMubWJfc3RyaWRlOyBpKyspCkBAIC0yMjk3LDggKzIy
OTcsOCBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRlcm5hbChN
UFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICBjb25zdCBpbnQgbGFzdF9xcCA9IHMtPmMu
cXNjYWxlOwogICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBtYl94ICsgbWJfeSAqIHMtPmMubWJf
c3RyaWRlOwogCi0gICAgICAgIHMtPmMubGFtYmRhID0gcy0+bGFtYmRhX3RhYmxlW21iX3h5XTsK
LSAgICAgICAgcy0+Yy5sYW1iZGEyID0gKHMtPmMubGFtYmRhICogcy0+Yy5sYW1iZGEgKyBGRl9M
QU1CREFfU0NBTEUgLyAyKSA+PgorICAgICAgICBzLT5sYW1iZGEgID0gcy0+bGFtYmRhX3RhYmxl
W21iX3h5XTsKKyAgICAgICAgcy0+bGFtYmRhMiA9IChzLT5sYW1iZGEgKiBzLT5sYW1iZGEgKyBG
Rl9MQU1CREFfU0NBTEUgLyAyKSA+PgogICAgICAgICAgICAgICAgICAgICAgICBGRl9MQU1CREFf
U0hJRlQ7CiAKICAgICAgICAgaWYgKCEocy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfUVBfUkQp
KSB7CkBAIC0yNzIzLDcgKzI3MjMsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfbWJfaHEoTVBWRW5j
Q29udGV4dCAqY29uc3QgcywgTVBWRW5jQ29udGV4dCAqY29uc3QgYmFja3VwLCBNUAogICAgIGlm
KHMtPmMuYXZjdHgtPm1iX2RlY2lzaW9uID09IEZGX01CX0RFQ0lTSU9OX1JEKXsKICAgICAgICAg
bXB2X3JlY29uc3RydWN0X21iKHMsIHMtPmMuYmxvY2spOwogCi0gICAgICAgIHNjb3JlICo9IHMt
PmMubGFtYmRhMjsKKyAgICAgICAgc2NvcmUgKj0gcy0+bGFtYmRhMjsKICAgICAgICAgc2NvcmUg
Kz0gc3NlX21iKHMpIDw8IEZGX0xBTUJEQV9TSElGVDsKICAgICB9CiAKQEAgLTM2NTEsMTAgKzM2
NTEsMTAgQEAgc3RhdGljIGludCBlc3RpbWF0ZV9xcChNUFZNYWluRW5jQ29udGV4dCAqY29uc3Qg
bSwgaW50IGRyeV9ydW4pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IHMtPmMubGFtYmRhPSBzLT5sYW1iZGFfdGFibGVbMF07CisgICAgICAgIHMtPmxhbWJkYSA9IHMt
PmxhbWJkYV90YWJsZVswXTsKICAgICAgICAgLy9GSVhNRSBicm9rZW4KICAgICB9ZWxzZQotICAg
ICAgICBzLT5jLmxhbWJkYSA9IHMtPmMuY3VyX3BpYy5wdHItPmYtPnF1YWxpdHk7CisgICAgICAg
IHMtPmxhbWJkYSA9IHMtPmMuY3VyX3BpYy5wdHItPmYtPnF1YWxpdHk7CiAgICAgdXBkYXRlX3Fz
Y2FsZShtKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTM2OTUsNyArMzY5NSw3IEBAIHN0YXRpYyBp
bnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWUGFj
a2V0ICpwa3QpCiAKICAgICBzLT5jLm1lLnNjZW5lX2NoYW5nZV9zY29yZT0wOwogCi0vLyAgICBz
LT5jLmxhbWJkYT0gcy0+Yy5jdXJfcGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAu
Li4gc3R1ZmYgZm9yIE1FIHJhdGUgZGlzdG9ydGlvbgorLy8gICAgcy0+bGFtYmRhID0gcy0+Yy5j
dXJfcGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAuLi4gc3R1ZmYgZm9yIE1FIHJh
dGUgZGlzdG9ydGlvbgogCiAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQ
RV9JKSB7CiAgICAgICAgIHMtPmMubm9fcm91bmRpbmcgPSBzLT5jLm1zbXBlZzRfdmVyc2lvbiA+
PSBNU01QNF9WMzsKQEAgLTM3MTAsOSArMzcxMCw5IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1
cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWUGFja2V0ICpwa3QpCiAgICAg
ICAgIGZmX2dldF8ycGFzc19mY29kZShtKTsKICAgICB9IGVsc2UgaWYgKCEocy0+Yy5hdmN0eC0+
ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FTQ0FMRSkpIHsKICAgICAgICAgaWYocy0+Yy5waWN0X3R5
cGU9PUFWX1BJQ1RVUkVfVFlQRV9CKQotICAgICAgICAgICAgcy0+Yy5sYW1iZGEgPSBtLT5sYXN0
X2xhbWJkYV9mb3Jbcy0+Yy5waWN0X3R5cGVdOworICAgICAgICAgICAgcy0+bGFtYmRhID0gbS0+
bGFzdF9sYW1iZGFfZm9yW3MtPmMucGljdF90eXBlXTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcy0+Yy5sYW1iZGEgPSBtLT5sYXN0X2xhbWJkYV9mb3JbbS0+bGFzdF9ub25fYl9waWN0X3R5
cGVdOworICAgICAgICAgICAgcy0+bGFtYmRhID0gbS0+bGFzdF9sYW1iZGFfZm9yW20tPmxhc3Rf
bm9uX2JfcGljdF90eXBlXTsKICAgICAgICAgdXBkYXRlX3FzY2FsZShtKTsKICAgICB9CiAKQEAg
LTM3MjgsNiArMzcyOCw4IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0Nv
bnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWUGFja2V0ICpwa3QpCiAgICAgICAgICAgICByZXQgPSBm
Zl91cGRhdGVfZHVwbGljYXRlX2NvbnRleHQoJnNsaWNlLT5jLCAmcy0+Yyk7CiAgICAgICAgICAg
ICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAg
c2xpY2UtPmxhbWJkYSAgPSBzLT5sYW1iZGE7CisgICAgICAgICAgICBzbGljZS0+bGFtYmRhMiA9
IHMtPmxhbWJkYTI7CiAgICAgICAgIH0KICAgICAgICAgc2xpY2UtPmMubWUudGVtcCA9IHNsaWNl
LT5jLm1lLnNjcmF0Y2hwYWQgPSBzbGljZS0+Yy5zYy5zY3JhdGNocGFkX2J1ZjsKIApAQCAtMzc0
MCw4ICszNzQyLDggQEAgc3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4
dCAqY29uc3QgbSwgY29uc3QgQVZQYWNrZXQgKnBrdCkKIAogICAgIC8qIEVzdGltYXRlIG1vdGlv
biBmb3IgZXZlcnkgTUIgKi8KICAgICBpZiAocy0+Yy5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9U
WVBFX0kpIHsKLSAgICAgICAgcy0+Yy5sYW1iZGEgID0gKHMtPmMubGFtYmRhICAqIG0tPm1lX3Bl
bmFsdHlfY29tcGVuc2F0aW9uICsgMTI4KSA+PiA4OwotICAgICAgICBzLT5jLmxhbWJkYTIgPSAo
cy0+Yy5sYW1iZGEyICogKGludDY0X3QpIG0tPm1lX3BlbmFsdHlfY29tcGVuc2F0aW9uICsgMTI4
KSA+PiA4OworICAgICAgICBzLT5sYW1iZGEgID0gKHMtPmxhbWJkYSAgKiBtLT5tZV9wZW5hbHR5
X2NvbXBlbnNhdGlvbiArIDEyOCkgPj4gODsKKyAgICAgICAgcy0+bGFtYmRhMiA9IChzLT5sYW1i
ZGEyICogKGludDY0X3QpIG0tPm1lX3BlbmFsdHlfY29tcGVuc2F0aW9uICsgMTI4KSA+PiA4Owog
ICAgICAgICBpZiAocy0+Yy5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKICAgICAg
ICAgICAgIGlmICgobS0+bWVfcHJlICYmIG0tPmxhc3Rfbm9uX2JfcGljdF90eXBlID09IEFWX1BJ
Q1RVUkVfVFlQRV9JKSB8fAogICAgICAgICAgICAgICAgIG0tPm1lX3ByZSA9PSAyKSB7CkBAIC0z
OTcyLDcgKzM5NzQsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTVBWRW5j
Q29udGV4dCAqY29uc3QgcywKICAgICBpbnQgcW11bCwgcWFkZCwgc3RhcnRfaSwgbGFzdF9ub25f
emVybywgaSwgZGM7CiAgICAgY29uc3QgaW50IGVzY19sZW5ndGg9IHMtPmFjX2VzY19sZW5ndGg7
CiAgICAgY29uc3QgdWludDhfdCAqbGVuZ3RoLCAqbGFzdF9sZW5ndGg7Ci0gICAgY29uc3QgaW50
IGxhbWJkYT0gcy0+Yy5sYW1iZGEyID4+IChGRl9MQU1CREFfU0hJRlQgLSA2KTsKKyAgICBjb25z
dCBpbnQgbGFtYmRhID0gcy0+bGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZUIC0gNik7CiAgICAg
aW50IG1wZWcyX3FzY2FsZTsKIAogICAgIHMtPmZkc3AuZmRjdChibG9jayk7CkBAIC00MzYyLDcg
KzQzNjQsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9yZWZpbmUoTVBWRW5jQ29udGV4dCAq
Y29uc3QgcywgLy9GSVhNRSBicmVha3MgZGVub2lzZT8KICAgICAgICAgYXZfYXNzZXJ0Mih3PCgx
PDw2KSk7CiAgICAgICAgIHN1bSArPSB3Knc7CiAgICAgfQotICAgIGxhbWJkYT0gc3VtKih1aW50
NjRfdClzLT5jLmxhbWJkYTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYgKyA2ICsgNiArIDYpOwor
ICAgIGxhbWJkYSA9IHN1bSoodWludDY0X3Qpcy0+bGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZU
IC0gNiArIDYgKyA2ICsgNik7CiAKICAgICBydW49MDsKICAgICBybGVfaW5kZXg9MDsKZGlmZiAt
LWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmggYi9saWJhdmNvZGVjL21wZWd2aWRlb2Vu
Yy5oCmluZGV4IDFkMTI0YjFiZDEuLmEyYjU0NGQ3MGUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv
bXBlZ3ZpZGVvZW5jLmgKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9lbmMuaApAQCAtNDcsNiAr
NDcsOCBAQCB0eXBlZGVmIHN0cnVjdCBNUFZFbmNDb250ZXh0IHsKICAgICAvKiogYml0IG91dHB1
dCAqLwogICAgIFB1dEJpdENvbnRleHQgcGI7CiAKKyAgICB1bnNpZ25lZCBpbnQgbGFtYmRhOyAg
ICAgICAgLy8vPCBMYWdyYW5nZSBtdWx0aXBsaWVyIHVzZWQgaW4gcmF0ZSBkaXN0b3J0aW9uCisg
ICAgdW5zaWduZWQgaW50IGxhbWJkYTI7ICAgICAgIC8vLzwgKGxhbWJkYSpsYW1iZGEpID4+IEZG
X0xBTUJEQV9TSElGVAogICAgIGludCAqbGFtYmRhX3RhYmxlOwogICAgIGludCBhZGFwdGl2ZV9x
dWFudDsgICAgICAgICAvLy88IHVzZSBhZGFwdGl2ZSBxdWFudGl6YXRpb24KICAgICBpbnQgZHF1
YW50OyAgICAgICAgICAgICAgICAgLy8vPCBxc2NhbGUgZGlmZmVyZW5jZSB0byBwcmV2IHFzY2Fs
ZQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9zbm93ZW5jLmMgYi9saWJhdmNvZGVjL3Nub3dlbmMu
YwppbmRleCBmOWIxMGY3ZGFiLi4yNjlmYzhhNTk5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3Nu
b3dlbmMuYworKysgYi9saWJhdmNvZGVjL3Nub3dlbmMuYwpAQCAtMTg3Myw5ICsxODczLDkgQEAg
c3RhdGljIGludCBlbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAq
cGt0LAogICAgICAgICBtcHYtPmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7CiAgICAgICAg
IG1wdi0+Yy51bnJlc3RyaWN0ZWRfbXYgPSAxOwogCi0gICAgICAgIG1wdi0+Yy5sYW1iZGEgPSBl
bmMtPmxhbWJkYTsKLSAgICAgICAgbXB2LT5jLnFzY2FsZSA9IChtcHYtPmMubGFtYmRhKjEzOSAr
IEZGX0xBTUJEQV9TQ0FMRSo2NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcpOwotICAgICAgICBl
bmMtPmxhbWJkYTIgID0gbXB2LT5jLmxhbWJkYTIgPSAobXB2LT5jLmxhbWJkYSptcHYtPmMubGFt
YmRhICsgRkZfTEFNQkRBX1NDQUxFLzIpID4+IEZGX0xBTUJEQV9TSElGVDsKKyAgICAgICAgbXB2
LT5sYW1iZGEgICA9IGVuYy0+bGFtYmRhOworICAgICAgICBtcHYtPmMucXNjYWxlID0gKG1wdi0+
bGFtYmRhKjEzOSArIEZGX0xBTUJEQV9TQ0FMRSo2NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcp
OworICAgICAgICBlbmMtPmxhbWJkYTIgID0gbXB2LT5sYW1iZGEyID0gKG1wdi0+bGFtYmRhKm1w
di0+bGFtYmRhICsgRkZfTEFNQkRBX1NDQUxFLzIpID4+IEZGX0xBTUJEQV9TSElGVDsKIAogICAg
ICAgICBtcHYtPmMucWRzcCA9IGVuYy0+cWRzcDsgLy9tb3ZlCiAgICAgICAgIG1wdi0+Yy5oZHNw
ID0gcy0+aGRzcDsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc3ZxMWVuYy5jIGIvbGliYXZjb2Rl
Yy9zdnExZW5jLmMKaW5kZXggZGRjOTRkZmZlNS4uNmU1MTQ2ZDZhNSAxMDA2NDQKLS0tIGEvbGli
YXZjb2RlYy9zdnExZW5jLmMKKysrIGIvbGliYXZjb2RlYy9zdnExZW5jLmMKQEAgLTM0MiwxMSAr
MzQyLDExIEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxhbmUoU1ZRMUVuY0NvbnRleHQgKnMs
IGludCBwbGFuZSwKICAgICAgICAgczItPm1lLnNjZW5lX2NoYW5nZV9zY29yZSAgICAgICAgID0g
MDsKICAgICAgICAgLy8gczItPm91dF9mb3JtYXQgICAgICAgICAgICAgICAgICAgID0gRk1UX0gy
NjM7CiAgICAgICAgIC8vIHMyLT51bnJlc3RyaWN0ZWRfbXYgICAgICAgICAgICAgICA9IDE7Ci0g
ICAgICAgIHMyLT5sYW1iZGEgICAgICAgICAgICAgICAgICAgICAgICA9IHMtPnF1YWxpdHk7Ci0g
ICAgICAgIHMyLT5xc2NhbGUgICAgICAgICAgICAgICAgICAgICAgICA9IHMyLT5sYW1iZGEgKiAx
MzkgKworICAgICAgICBzLT5tLmxhbWJkYSAgICAgICAgICAgICAgICAgICAgICAgPSBzLT5xdWFs
aXR5OworICAgICAgICBzMi0+cXNjYWxlICAgICAgICAgICAgICAgICAgICAgICAgPSBzLT5tLmxh
bWJkYSAqIDEzOSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGRl9MQU1CREFfU0NBTEUgKiA2NCA+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkZfTEFNQkRBX1NISUZUICsgNzsKLSAgICAgICAgczItPmxhbWJkYTIg
ICAgICAgICAgICAgICAgICAgICAgID0gczItPmxhbWJkYSAqIHMyLT5sYW1iZGEgKworICAgICAg
ICBzLT5tLmxhbWJkYTIgICAgICAgICAgICAgICAgICAgICAgPSBzLT5tLmxhbWJkYSAqIHMtPm0u
bGFtYmRhICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZG
X0xBTUJEQV9TQ0FMRSAvIDIgPj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZGX0xBTUJEQV9TSElGVDsKIAotLSAKMi40NS4yCgo=

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0066-avcodec-mpegvideo_enc-Don-t-reset-statistics-twice.patch"
Content-Disposition: attachment;
 filename*0="0066-avcodec-mpegvideo_enc-Don-t-reset-statistics-twice.patc";
 filename*1="h"
Content-Transfer-Encoding: base64

RnJvbSBhYzYyODNhN2QyNmJhZDg4MTQzNzJjYTcwYmI4ZTk4MGE1MTIwOWRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMjo1Mzo0NCArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjYvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogRG9uJ3QgcmVzZXQgc3Rh
dGlzdGljcyB0d2ljZQoKVGhpcyBoYXBwZW5zIGN1cnJlbnRseSBmb3IgdGhlIG5vbi1tYWluIHNs
aWNlIGNvbnRleHRzLgpCdXQgdGhlc2UgdmFyaWFibGVzIGdldCByZXNldCBhdCB0aGUgc3RhcnQg
b2YgZW5jb2RlX3RocmVhZCgpCmFueXdheSBmb3IgYWxsIHNsaWNlcywgc28gdGhpcyBpcyB1bm5l
Y2Vzc2FyeS4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVp
bmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jIHwgMTcg
KysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDggZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgYi9saWJh
dmNvZGVjL21wZWd2aWRlb19lbmMuYwppbmRleCA2YzFkMTU3YjY0Li43NDkyYTlmZGJkIDEwMDY0
NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYworKysgYi9saWJhdmNvZGVjL21wZWd2
aWRlb19lbmMuYwpAQCAtMzU4NSw2ICszNTg1LDcgQEAgc3RhdGljIGludCBlbmNvZGVfdGhyZWFk
KEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgIHJldHVybiAwOwogfQogCisjZGVm
aW5lIEFERChmaWVsZCkgICBkc3QtPmZpZWxkICs9IHNyYy0+ZmllbGQ7CiAjZGVmaW5lIE1FUkdF
KGZpZWxkKSBkc3QtPmZpZWxkICs9IHNyYy0+ZmllbGQ7IHNyYy0+ZmllbGQ9MAogc3RhdGljIHZv
aWQgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShNUFZFbmNDb250ZXh0ICpjb25zdCBkc3QsIE1QVkVu
Y0NvbnRleHQgKmNvbnN0IHNyYykKIHsKQEAgLTM1OTksMTQgKzM2MDAsMTQgQEAgc3RhdGljIHZv
aWQgbWVyZ2VfY29udGV4dF9hZnRlcl9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZHN0LCBN
UFZFbmNDb250ZXh0ICoKIAogICAgIE1FUkdFKGRjdF9jb3VudFswXSk7IC8vbm90ZSwgdGhlIG90
aGVyIGRjdCB2YXJzIGFyZSBub3QgcGFydCBvZiB0aGUgY29udGV4dAogICAgIE1FUkdFKGRjdF9j
b3VudFsxXSk7Ci0gICAgTUVSR0UobXZfYml0cyk7Ci0gICAgTUVSR0UoaV90ZXhfYml0cyk7Ci0g
ICAgTUVSR0UocF90ZXhfYml0cyk7Ci0gICAgTUVSR0UoaV9jb3VudCk7Ci0gICAgTUVSR0UobWlz
Y19iaXRzKTsKLSAgICBNRVJHRShlbmNvZGluZ19lcnJvclswXSk7Ci0gICAgTUVSR0UoZW5jb2Rp
bmdfZXJyb3JbMV0pOwotICAgIE1FUkdFKGVuY29kaW5nX2Vycm9yWzJdKTsKKyAgICBBREQobXZf
Yml0cyk7CisgICAgQUREKGlfdGV4X2JpdHMpOworICAgIEFERChwX3RleF9iaXRzKTsKKyAgICBB
REQoaV9jb3VudCk7CisgICAgQUREKG1pc2NfYml0cyk7CisgICAgQUREKGVuY29kaW5nX2Vycm9y
WzBdKTsKKyAgICBBREQoZW5jb2RpbmdfZXJyb3JbMV0pOworICAgIEFERChlbmNvZGluZ19lcnJv
clsyXSk7CiAKICAgICBpZiAoZHN0LT5kY3RfZXJyb3Jfc3VtKSB7CiAgICAgICAgIGZvcihpPTA7
IGk8NjQ7IGkrKyl7Ci0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0067-avcodec-mpegvideoenc-Constify-vlc-length-pointees.patch"
Content-Disposition: attachment;
 filename*0="0067-avcodec-mpegvideoenc-Constify-vlc-length-pointees.patch"
Content-Transfer-Encoding: base64

RnJvbSA2NTgwMzM1OTNlYjg4NWNhNGZlMzc4MDQ1ODFhYWU1MmQ4ODZlZDg5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMzowMzoyMiArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjcvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvZW5jOiBDb25zdGlmeSB2bGMgbGVu
Z3RoIHBvaW50ZWVzCgpUaGVzZSBwb2ludGVycyBwb2ludCB0byBzdGF0aWMgdGFibGVzIHdoaWNo
IG11c3Qgbm90IGJlIG1vZGlmaWVkCmJ5IGFueW9uZSBhZnRlciB0aGV5IGhhdmUgYmVlbiBpbml0
aWFsaXplZC4gU28gY29uc3RpZnkgdGhlIHBvaW50ZWVzLgoKU2lnbmVkLW9mZi1ieTogQW5kcmVh
cyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogbGliYXZj
b2RlYy9tZV9jbXAuYyAgICAgICB8ICA0ICsrLS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgg
fCAxNCArKysrKysrLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZV9jbXAuYyBiL2xpYmF2Y29k
ZWMvbWVfY21wLmMKaW5kZXggMDlhODMwZDE1ZS4uMmE4ZWRlNTk1NSAxMDA2NDQKLS0tIGEvbGli
YXZjb2RlYy9tZV9jbXAuYworKysgYi9saWJhdmNvZGVjL21lX2NtcC5jCkBAIC03NTgsNyArNzU4
LDcgQEAgc3RhdGljIGludCByZDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVp
bnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnMKICAgICBMT0NBTF9BTElHTkVEXzE2KHVpbnQ4
X3QsIGxzcmMyLCBbNjRdKTsKICAgICBpbnQgaSwgbGFzdCwgcnVuLCBiaXRzLCBsZXZlbCwgZGlz
dG9ydGlvbiwgc3RhcnRfaTsKICAgICBjb25zdCBpbnQgZXNjX2xlbmd0aCA9IHMtPmFjX2VzY19s
ZW5ndGg7Ci0gICAgdWludDhfdCAqbGVuZ3RoLCAqbGFzdF9sZW5ndGg7CisgICAgY29uc3QgdWlu
dDhfdCAqbGVuZ3RoLCAqbGFzdF9sZW5ndGg7CiAKICAgICBjb3B5X2Jsb2NrOChsc3JjMSwgc3Jj
MSwgOCwgc3RyaWRlLCA4KTsKICAgICBjb3B5X2Jsb2NrOChsc3JjMiwgc3JjMiwgOCwgc3RyaWRl
LCA4KTsKQEAgLTgzMSw3ICs4MzEsNyBAQCBzdGF0aWMgaW50IGJpdDh4OF9jKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKgogICAgIExP
Q0FMX0FMSUdORURfMTYoaW50MTZfdCwgdGVtcCwgWzY0XSk7CiAgICAgaW50IGksIGxhc3QsIHJ1
biwgYml0cywgbGV2ZWwsIHN0YXJ0X2k7CiAgICAgY29uc3QgaW50IGVzY19sZW5ndGggPSBzLT5h
Y19lc2NfbGVuZ3RoOwotICAgIHVpbnQ4X3QgKmxlbmd0aCwgKmxhc3RfbGVuZ3RoOworICAgIGNv
bnN0IHVpbnQ4X3QgKmxlbmd0aCwgKmxhc3RfbGVuZ3RoOwogCiAgICAgcy0+cGRzcC5kaWZmX3Bp
eGVsc191bmFsaWduZWQodGVtcCwgc3JjMSwgc3JjMiwgc3RyaWRlKTsKIApkaWZmIC0tZ2l0IGEv
bGliYXZjb2RlYy9tcGVndmlkZW9lbmMuaCBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgKaW5k
ZXggYTJiNTQ0ZDcwZS4uNjk4NWM0MTk1NSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlk
ZW9lbmMuaAorKysgYi9saWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oCkBAIC04NywxMyArODcsMTMg
QEAgdHlwZWRlZiBzdHJ1Y3QgTVBWRW5jQ29udGV4dCB7CiAgICAgaW50IG1pbl9xY29lZmY7ICAg
ICAgICAgIC8vLzwgbWluaW11bSBlbmNvZGFibGUgY29lZmZpY2llbnQKICAgICBpbnQgbWF4X3Fj
b2VmZjsgICAgICAgICAgLy8vPCBtYXhpbXVtIGVuY29kYWJsZSBjb2VmZmljaWVudAogICAgIGlu
dCBhY19lc2NfbGVuZ3RoOyAgICAgICAvLy88IG51bSBvZiBiaXRzIG5lZWRlZCB0byBlbmNvZGUg
dGhlIGxvbmdlc3QgZXNjCi0gICAgdWludDhfdCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKLSAgICB1
aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9sZW5ndGg7Ci0gICAgdWludDhfdCAqaW50cmFfY2hy
b21hX2FjX3ZsY19sZW5ndGg7Ci0gICAgdWludDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sYXN0
X2xlbmd0aDsKLSAgICB1aW50OF90ICppbnRlcl9hY192bGNfbGVuZ3RoOwotICAgIHVpbnQ4X3Qg
KmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsKLSAgICB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5n
dGg7CisgICAgY29uc3QgdWludDhfdCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKKyAgICBjb25zdCB1
aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9sZW5ndGg7CisgICAgY29uc3QgdWludDhfdCAqaW50
cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7CisgICAgY29uc3QgdWludDhfdCAqaW50cmFfY2hyb21h
X2FjX3ZsY19sYXN0X2xlbmd0aDsKKyAgICBjb25zdCB1aW50OF90ICppbnRlcl9hY192bGNfbGVu
Z3RoOworICAgIGNvbnN0IHVpbnQ4X3QgKmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsKKyAgICBj
b25zdCB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5ndGg7CiAKICAgICBpbnQgY29kZWRfc2NvcmVb
MTJdOwogCi0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0068-avcodec-motion_est-Move-ff_h263_round_chroma-to-h263.patch"
Content-Disposition: attachment;
 filename*0="0068-avcodec-motion_est-Move-ff_h263_round_chroma-to-h263.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSA4YjExOTFjYjQzYjYyNzg0MGQ1NzU2OGIzNmZkYmZkYzIxNGY2MDcwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMzoyNjozNyArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjgvNzddIGF2Y29kZWMvbW90aW9uX2VzdDogTW92ZSBmZl9oMjYzX3JvdW5k
X2Nocm9tYSgpIHRvCiBoMjYzLmgKClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8
YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvaDI2My5oICAg
ICAgICAgICAgIHwgMTAgKysrKysrKysrKwogbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgICAgICAg
fCAgMSArCiBsaWJhdmNvZGVjL21vdGlvbl9lc3QuaCAgICAgICB8IDEwIC0tLS0tLS0tLS0KIGxp
YmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jICAgIHwgIDEgKwogbGliYXZjb2RlYy9tcGVndmlkZW9f
bW90aW9uLmMgfCAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEwIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2My5oIGIvbGliYXZjb2RlYy9o
MjYzLmgKaW5kZXggMjdhNWYzMWM1OS4uNTlmOTM3MDcwZSAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl
Yy9oMjYzLmgKKysrIGIvbGliYXZjb2RlYy9oMjYzLmgKQEAgLTI3LDYgKzI3LDE2IEBACiAKICNk
ZWZpbmUgSDI2M19HT0JfSEVJR0hUKGgpICgoaCkgPD0gNDAwID8gMSA6IChoKSA8PSA4MDAgPyAy
IDogNCkKIAorc3RhdGljIGlubGluZSBpbnQgZmZfaDI2M19yb3VuZF9jaHJvbWEoaW50IHgpCit7
CisgICAgLy9GSVhNRSBzdGF0aWMgb3Igbm90PworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGgy
NjNfY2hyb21hX3JvdW5kdGFiWzE2XSA9IHsKKyAgICAvLyAgMCAgMSAgMiAgMyAgNCAgNSAgNiAg
NyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNQorICAgICAgICAwLCAwLCAwLCAxLCAxLCAxLCAxLCAx
LCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLAorICAgIH07CisgICAgcmV0dXJuIGgyNjNfY2hyb21h
X3JvdW5kdGFiW3ggJiAweGZdICsgKHggPj4gMyk7Cit9CisKIGF2X2NvbnN0IGludCBmZl9oMjYz
X2FzcGVjdF90b19pbmZvKEFWUmF0aW9uYWwgYXNwZWN0KTsKIGludDE2X3QgKmZmX2gyNjNfcHJl
ZF9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgYmxvY2ssIGludCBkaXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqcHgsIGludCAqcHkpOwpkaWZmIC0tZ2l0IGEvbGli
YXZjb2RlYy9tb3Rpb25fZXN0LmMgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwppbmRleCBiMmI4
ODgyMzdiLi5kYjYxMGMzMjQ1IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwor
KysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
PGxpbWl0cy5oPgogCiAjaW5jbHVkZSAiYXZjb2RlYy5oIgorI2luY2x1ZGUgImgyNjMuaCIKICNp
bmNsdWRlICJtYXRob3BzLmgiCiAjaW5jbHVkZSAibW90aW9uX2VzdC5oIgogI2luY2x1ZGUgIm1w
ZWd1dGlscy5oIgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmggYi9saWJhdmNv
ZGVjL21vdGlvbl9lc3QuaAppbmRleCAxNjk3NWFiZmUxLi5mZTNkNjFmYWZiIDEwMDY0NAotLS0g
YS9saWJhdmNvZGVjL21vdGlvbl9lc3QuaAorKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuaApA
QCAtMTA2LDE2ICsxMDYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNb3Rpb25Fc3RDb250ZXh0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBoKTsKIH0gTW90aW9uRXN0
Q29udGV4dDsKIAotc3RhdGljIGlubGluZSBpbnQgZmZfaDI2M19yb3VuZF9jaHJvbWEoaW50IHgp
Ci17Ci0gICAgLy9GSVhNRSBzdGF0aWMgb3Igbm90PwotICAgIHN0YXRpYyBjb25zdCB1aW50OF90
IGgyNjNfY2hyb21hX3JvdW5kdGFiWzE2XSA9IHsKLSAgICAvLyAgMCAgMSAgMiAgMyAgNCAgNSAg
NiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNQotICAgICAgICAwLCAwLCAwLCAxLCAxLCAxLCAx
LCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLAotICAgIH07Ci0gICAgcmV0dXJuIGgyNjNfY2hy
b21hX3JvdW5kdGFiW3ggJiAweGZdICsgKHggPj4gMyk7Ci19Ci0KIC8qKgogICogUGVyZm9ybXMg
b25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE1vdGlvbkVzdENvbnRleHQuCiAgKi8KZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jIGIvbGliYXZjb2RlYy9tcGVndmlk
ZW9fZGVjLmMKaW5kZXggOGM4NGI1OWM1ZS4uNDAxOWI0ZjBkYSAxMDA2NDQKLS0tIGEvbGliYXZj
b2RlYy9tcGVndmlkZW9fZGVjLmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZGVjLmMKQEAg
LTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgImF2Y29kZWMuaCIKICNpbmNsdWRlICJkZWNvZGUu
aCIKKyNpbmNsdWRlICJoMjYzLmgiCiAjaW5jbHVkZSAiaDI2NGNocm9tYS5oIgogI2luY2x1ZGUg
ImludGVybmFsLmgiCiAjaW5jbHVkZSAibXBlZ3V0aWxzLmgiCmRpZmYgLS1naXQgYS9saWJhdmNv
ZGVjL21wZWd2aWRlb19tb3Rpb24uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX21vdGlvbi5jCmlu
ZGV4IDZlOTM2OGRkOWMuLmVkYzQ5MzEwOTIgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZ3Zp
ZGVvX21vdGlvbi5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX21vdGlvbi5jCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJhdmNvZGVjLmgiCiAjaW5jbHVkZSAiaDI2MS5oIgorI2lu
Y2x1ZGUgImgyNjMuaCIKICNpbmNsdWRlICJtcGVndXRpbHMuaCIKICNpbmNsdWRlICJtcGVndmlk
ZW8uaCIKICNpbmNsdWRlICJtcGVnNHZpZGVvZGVjLmgiCi0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0069-avcodec-mpegvideo-Move-MotionEstContext-to-MPVEncCon.patch"
Content-Disposition: attachment;
 filename*0="0069-avcodec-mpegvideo-Move-MotionEstContext-to-MPVEncCon.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSBmZDVlNjg3OGE5OTU2YjEyM2MxZDczZDY0NzJiYzRhY2Y0MjBhN2Y1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNDoyNDo1NiArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNjkvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvOiBNb3ZlIE1vdGlvbkVzdENvbnRl
eHQgdG8KIE1QVkVuY0NvbnRleHQKCkFsbCB0aGF0IGlzIG5lY2Vzc2FyeSB0byBkbyBzbyBpcyBw
ZXJmb3JtIGZmX21lX2luaXRfcGljKCkKb24gZXZlcnkgc2xpY2UuCgpTaWduZWQtb2ZmLWJ5OiBB
bmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KLS0tCiBs
aWJhdmNvZGVjL2gyNjFlbmMuYyAgICAgICAgICAgICB8ICAyICstCiBsaWJhdmNvZGVjL2l0dWgy
NjNlbmMuYyAgICAgICAgICB8ICAyICstCiBsaWJhdmNvZGVjL21vdGlvbl9lc3QuYyAgICAgICAg
ICB8IDM2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvbW90aW9uX2Vz
dF90ZW1wbGF0ZS5jIHwgMzIgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogbGliYXZjb2RlYy9t
cGVnMTJlbmMuYyAgICAgICAgICAgfCAgMiArLQogbGliYXZjb2RlYy9tcGVndmlkZW8uYyAgICAg
ICAgICAgfCAgNiAtLS0tLQogbGliYXZjb2RlYy9tcGVndmlkZW8uaCAgICAgICAgICAgfCAgMyAt
LS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jICAgICAgIHwgNDEgKysrKysrKysrKysrKysr
Ky0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmggICAgICAgIHwgIDQg
KysrLQogbGliYXZjb2RlYy9zbm93ZW5jLmMgICAgICAgICAgICAgfCAzNiArKysrKysrKysrKysr
Ky0tLS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL3N2cTFlbmMuYyAgICAgICAgICAgICB8IDI0ICsr
KysrKysrKy0tLS0tLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDk4
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2MWVuYy5jIGIvbGliYXZj
b2RlYy9oMjYxZW5jLmMKaW5kZXggN2MzYzg3NTJkZi4uYWU1ZDdiMTIwNSAxMDA2NDQKLS0tIGEv
bGliYXZjb2RlYy9oMjYxZW5jLmMKKysrIGIvbGliYXZjb2RlYy9oMjYxZW5jLmMKQEAgLTM3Nyw3
ICszNzcsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaDI2MV9lbmNvZGVfaW5pdChBVkNvZGVjQ29u
dGV4dCAqYXZjdHgpCiAgICAgcy0+bWF4X3Fjb2VmZiAgICAgICA9IDEyNzsKICAgICBzLT5hY19l
c2NfbGVuZ3RoICAgID0gSDI2MV9FU0NfTEVOOwogCi0gICAgcy0+Yy5tZS5tdl9wZW5hbHR5ID0g
bXZfcGVuYWx0eTsKKyAgICBzLT5tZS5tdl9wZW5hbHR5ID0gbXZfcGVuYWx0eTsKIAogICAgIHMt
PmludHJhX2FjX3ZsY19sZW5ndGggICAgICA9IHMtPmludGVyX2FjX3ZsY19sZW5ndGggICAgICA9
IHVuaV9oMjYxX3JsX2xlbjsKICAgICBzLT5pbnRyYV9hY192bGNfbGFzdF9sZW5ndGggPSBzLT5p
bnRlcl9hY192bGNfbGFzdF9sZW5ndGggPSB1bmlfaDI2MV9ybF9sZW5fbGFzdDsKZGlmZiAtLWdp
dCBhL2xpYmF2Y29kZWMvaXR1aDI2M2VuYy5jIGIvbGliYXZjb2RlYy9pdHVoMjYzZW5jLmMKaW5k
ZXggNmJkN2I2YTZjZC4uMmUwODdjNTE4ZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9pdHVoMjYz
ZW5jLmMKKysrIGIvbGliYXZjb2RlYy9pdHVoMjYzZW5jLmMKQEAgLTgyMCw3ICs4MjAsNyBAQCBh
dl9jb2xkIHZvaWQgZmZfaDI2M19lbmNvZGVfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqY29uc3Qg
bSkKIHsKICAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAKLSAgICBzLT5jLm1l
Lm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7IC8vIEZJWE1FIGV4YWN0IHRh
YmxlIGZvciBNU01QRUc0ICYgSC4yNjMrCisgICAgcy0+bWUubXZfcGVuYWx0eSA9IGZmX2gyNjNf
Z2V0X212X3BlbmFsdHkoKTsgLy8gRklYTUUgZXhhY3QgdGFibGUgZm9yIE1TTVBFRzQgJiBILjI2
MysKIAogICAgIGZmX2gyNjNkc3BfaW5pdCgmcy0+Yy5oMjYzZHNwKTsKIApkaWZmIC0tZ2l0IGEv
bGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwppbmRleCBk
YjYxMGMzMjQ1Li5hZjA2YWNkOWIyIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21vdGlvbl9lc3Qu
YworKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp
YyBpbnQgZ2V0X2ZsYWdzKE1vdGlvbkVzdENvbnRleHQgKmMsIGludCBkaXJlY3QsIGludCBjaHJv
bWEpewogc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNtcF9kaXJlY3RfaW5saW5lKE1QVkVu
Y0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1
YngsIGNvbnN0IGludCBzdWJ5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBzaXpl
LCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hyb21hX2NtcF9m
dW5jLCBpbnQgcXBlbCl7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1l
OworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgY29uc3QgaW50
IHN0cmlkZT0gYy0+c3RyaWRlOwogICAgIGNvbnN0IGludCBoeCA9IHN1YnggKyB4ICogKDEgPDwg
KDEgKyBxcGVsKSk7CiAgICAgY29uc3QgaW50IGh5ID0gc3VieSArIHkgKiAoMSA8PCAoMSArIHFw
ZWwpKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21w
X2RpcmVjdF9pbmxpbmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50CiBzdGF0aWMg
YXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2lubGluZShNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBj
b25zdCBpbnQgeCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwK
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZSwgY29uc3QgaW50IGgsIGludCBy
ZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgbWVfY21wX2Z1
bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9tYV9jbXBfZnVuYywgaW50IHFwZWwsIGludCBj
aHJvbWEpewotICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBN
b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNvbnN0IGludCBzdHJpZGU9
IGMtPnN0cmlkZTsKICAgICBjb25zdCBpbnQgdXZzdHJpZGU9IGMtPnV2c3RyaWRlOwogICAgIGNv
bnN0IGludCBkeHk9IHN1YnggKyAoc3VieTw8KDErcXBlbCkpOyAvL0ZJWE1FIGxvZzJfc3VicGVs
PwpAQCAtMzcwLDcgKzM3MCw3IEBAIGF2X2NvbGQgaW50IGZmX21lX2luaXQoTW90aW9uRXN0Q29u
dGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogCiB2b2lkIGZmX21lX2luaXRfcGljKE1Q
VkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9
ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAKIC8q
RklYTUUgcy0+Yy5ub19yb3VuZGluZyBiX3R5cGUqLwogICAgIGlmIChjLT5hdmN0eC0+ZmxhZ3Mg
JiBBVl9DT0RFQ19GTEFHX1FQRUwpIHsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzdGF0aWMgaW50IHNh
ZF9ocGVsX21vdGlvbl9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCkKIHsKLSAgICBN
b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4
dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3I9IGMtPnN1
Yl9wZW5hbHR5X2ZhY3RvcjsKICAgICBpbnQgbXgsIG15LCBkbWluaDsKICAgICBjb25zdCB1aW50
OF90ICpwaXgsICpwdHI7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNl
dF9wX212X3RhYmxlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgbXgsIGludCBteSwgaW50
IG0KICAqLwogc3RhdGljIGlubGluZSB2b2lkIGdldF9saW1pdHMoTVBWRW5jQ29udGV4dCAqY29u
c3QgcywgaW50IHgsIGludCB5LCBpbnQgYmZyYW1lKQogewotICAgIE1vdGlvbkVzdENvbnRleHQg
KmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMt
Pm1lOwogICAgIGludCByYW5nZT0gYy0+YXZjdHgtPm1lX3JhbmdlID4+ICgxICsgISEoYy0+Zmxh
Z3MmRkxBR19RUEVMKSk7CiAgICAgaW50IG1heF9yYW5nZSA9IE1BWF9NViA+PiAoMSArICEhKGMt
PmZsYWdzJkZMQUdfUVBFTCkpOwogLyoKQEAgLTU4Nyw3ICs1ODcsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgaW5pdF9tdjRfcmVmKE1vdGlvbkVzdENvbnRleHQgKmMpewogCiBzdGF0aWMgaW5saW5l
IGludCBoMjYzX212NF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG14LCBpbnQg
bXksIGludCBzaGlmdCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMu
bWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBjb25zdCBp
bnQgc2l6ZT0gMTsKICAgICBjb25zdCBpbnQgaD04OwogICAgIGludCBibG9jazsKQEAgLTczMCw3
ICs3MzAsNyBAQCBzdGF0aWMgaW5saW5lIGludCBoMjYzX212NF9zZWFyY2goTVBWRW5jQ29udGV4
dCAqY29uc3QgcywgaW50IG14LCBpbnQgbXksIGludCBzaAogCiBzdGF0aWMgaW5saW5lIHZvaWQg
aW5pdF9pbnRlcmxhY2VkX3JlZihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgcmVmX2luZGV4
KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBNb3Rp
b25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogCiAgICAgYy0+cmVmWzErcmVmX2luZGV4
XVswXSA9IGMtPnJlZlswK3JlZl9pbmRleF1bMF0gKyBzLT5jLmxpbmVzaXplOwogICAgIGMtPnNy
Y1sxXVswXSA9IGMtPnNyY1swXVswXSArIHMtPmMubGluZXNpemU7CkBAIC03NDUsNyArNzQ1LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRfaW50ZXJsYWNlZF9yZWYoTVBWRW5jQ29udGV4dCAq
Y29uc3QgcywgaW50IHJlZl9pbmRleCkKIHN0YXRpYyBpbnQgaW50ZXJsYWNlZF9zZWFyY2goTVBW
RW5jQ29udGV4dCAqY29uc3QgcywgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCAoKm12X3RhYmxlc1syXVsyXSlbMl0sIHVpbnQ4X3QgKmZpZWxkX3Nl
bGVjdF90YWJsZXNbMl0sIGludCBteCwgaW50IG15LCBpbnQgdXNlcl9maWVsZF9zZWxlY3QpCiB7
Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOworICAgIE1vdGlvbkVz
dENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgY29uc3QgaW50IHNpemU9MDsKICAgICBj
b25zdCBpbnQgaD04OwogICAgIGludCBibG9jazsKQEAgLTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMg
aW5saW5lIGludCBnZXRfcGVuYWx0eV9mYWN0b3IoaW50IGxhbWJkYSwgaW50IGxhbWJkYTIsIGlu
dCB0eXBlKXsKIHZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTVBWRW5jQ29udGV4dCAq
Y29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1iX3gsIGludCBt
Yl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBN
b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNvbnN0IHVpbnQ4X3QgKnBp
eCwgKnBwaXg7CiAgICAgaW50IHN1bSwgbXggPSAwLCBteSA9IDAsIGRtaW4gPSAwOwogICAgIGlu
dCB2YXJjOyAgICAgICAgICAgIC8vLzwgdGhlIHZhcmlhbmNlIG9mIHRoZSBibG9jayAoc3VtIG9m
IHNxdWFyZWQgKHBbeV1beF0tYXZlcmFnZSkpCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIGZm
X2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiBpbnQgZmZf
cHJlX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1iX3kpCiB7Ci0g
ICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENv
bnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgaW50IG14LCBteSwgZG1pbjsKICAgICBpbnQg
UFsxMF1bMl07CiAgICAgY29uc3QgaW50IHNoaWZ0ID0gMSArIHMtPmMucXVhcnRlcl9zYW1wbGU7
CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBpbnQgZmZfcHJlX2VzdGltYXRlX3BfZnJhbWVfbW90aW9u
KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiBzdGF0aWMgaW50IGVzdGltYXRlX21vdGlvbl9iKE1Q
VkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCBtYl94LCBpbnQgbWJfeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MTZfdCAoKm12X3RhYmxlKVsyXSwgaW50IHJlZl9pbmRleCwgaW50
IGZfY29kZSkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7Cisg
ICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgbXggPSAwLCBt
eSA9IDAsIGRtaW4gPSAwOwogICAgIGludCBQWzEwXVsyXTsKICAgICBjb25zdCBpbnQgc2hpZnQ9
IDErcy0+Yy5xdWFydGVyX3NhbXBsZTsKQEAgLTExODIsNyArMTE4Miw3IEBAIHN0YXRpYyBpbmxp
bmUgaW50IGNoZWNrX2JpZGlyX212KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgLy9GSVhN
RSBvcHRpbWl6ZT8KICAgICAvL0ZJWE1FIGJldHRlciBmX2NvZGUgcHJlZGljdGlvbiAobWF4IG12
ICYgZGlzdGFuY2UpCiAgICAgLy9GSVhNRSBwb2ludGVycwotICAgIE1vdGlvbkVzdENvbnRleHQg
KiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMt
Pm1lOwogICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9wZW5hbHR5X2YgPSBjLT5tdl9wZW5h
bHR5W3MtPmMuZl9jb2RlXSArIE1BWF9ETVY7IC8vIGZfY29kZSBvZiB0aGUgcHJldiBmcmFtZQog
ICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9wZW5hbHR5X2IgPSBjLT5tdl9wZW5hbHR5W3Mt
PmMuYl9jb2RlXSArIE1BWF9ETVY7IC8vIGZfY29kZSBvZiB0aGUgcHJldiBmcmFtZQogICAgIGlu
dCBzdHJpZGU9IGMtPnN0cmlkZTsKQEAgLTEyMzksNyArMTIzOSw3IEBAIHN0YXRpYyBpbmxpbmUg
aW50IGNoZWNrX2JpZGlyX212KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAvKiByZWZpbmUgdGhl
IGJpZGlyIHZlY3RvcnMgaW4gaHEgbW9kZSBhbmQgcmV0dXJuIHRoZSBzY29yZSBpbiBib3RoIGxx
ICYgaHEgbW9kZSovCiBzdGF0aWMgaW5saW5lIGludCBiaWRpcl9yZWZpbmUoTVBWRW5jQ29udGV4
dCAqY29uc3QgcywgaW50IG1iX3gsIGludCBtYl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQg
KiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMt
Pm1lOwogICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAgY29u
c3QgaW50IHh5ID0gbWJfeSAqbW90X3N0cmlkZSArIG1iX3g7CiAgICAgaW50IGZibWluOwpAQCAt
MTM4Niw3ICsxMzg2LDcgQEAgQ0hFQ0tfQklESVIoLShhKSwtKGIpLC0oYyksLShkKSkKIAogc3Rh
dGljIGlubGluZSBpbnQgZGlyZWN0X3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQg
bWJfeCwgaW50IG1iX3kpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5j
Lm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgaW50IFBb
MTBdWzJdOwogICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAg
Y29uc3QgaW50IG1vdF94eSA9IG1iX3kqbW90X3N0cmlkZSArIG1iX3g7CkBAIC0xNDg5LDcgKzE0
ODksNyBAQCBzdGF0aWMgaW5saW5lIGludCBkaXJlY3Rfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNv
bnN0IHMsIGludCBtYl94LCBpbnQgbWJfeSkKIHZvaWQgZmZfZXN0aW1hdGVfYl9mcmFtZV9tb3Rp
b24oTVBWRW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG1iX3gsIGludCBtYl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAm
cy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGlu
dCBmbWluLCBibWluLCBkbWluLCBmYm1pbiwgYmltaW4sIGZpbWluOwogICAgIGludCB0eXBlPTA7
CiAgICAgY29uc3QgaW50IHh5ID0gbWJfeSpzLT5jLm1iX3N0cmlkZSArIG1iX3g7CkBAIC0xNjAx
LDcgKzE2MDEsNyBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsCiBpbnQgZmZfZ2V0X2Jlc3RfZmNvZGUoTVBWTWFpbkVuY0NvbnRleHQgKmNv
bnN0IG0sIGNvbnN0IGludDE2X3QgKCptdl90YWJsZSlbMl0sIGludCB0eXBlKQogewogICAgIE1Q
VkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25z
dCBjID0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsK
IAogICAgIGlmIChjLT5tb3Rpb25fZXN0ICE9IEZGX01FX1pFUk8pIHsKICAgICAgICAgaW50IHNj
b3JlWzhdOwpAQCAtMTY1Niw3ICsxNjU2LDcgQEAgaW50IGZmX2dldF9iZXN0X2Zjb2RlKE1QVk1h
aW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBpbnQxNl90ICgqbXZfdGFibGUpWzJdLAogCiB2
b2lkIGZmX2ZpeF9sb25nX3BfbXZzKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCB0eXBlKQog
ewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25F
c3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNvbnN0IGludCBmX2NvZGU9IHMtPmMu
Zl9jb2RlOwogICAgIGludCB5LCByYW5nZTsKICAgICBhdl9hc3NlcnQwKHMtPmMucGljdF90eXBl
PT1BVl9QSUNUVVJFX1RZUEVfUCk7CkBAIC0xNzA2LDcgKzE3MDYsNyBAQCB2b2lkIGZmX2ZpeF9s
b25nX3BfbXZzKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCB0eXBlKQogdm9pZCBmZl9maXhf
bG9uZ19tdnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgdWludDhfdCAqZmllbGRfc2VsZWN0X3Rh
YmxlLCBpbnQgZmllbGRfc2VsZWN0LAogICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAoKm12
X3RhYmxlKVsyXSwgaW50IGZfY29kZSwgaW50IHR5cGUsIGludCB0cnVuY2F0ZSkKIHsKLSAgICBN
b3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4
dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgeSwgaF9yYW5nZSwgdl9yYW5nZTsKIAogICAg
IC8vIFJBTDogOCBpbiBNUEVHLTEsIDE2IGluIE1QRUctNApkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl
Yy9tb3Rpb25fZXN0X3RlbXBsYXRlLmMgYi9saWJhdmNvZGVjL21vdGlvbl9lc3RfdGVtcGxhdGUu
YwppbmRleCA3YzdlNjQ1NjI1Li5hYTY2OWUwZWU3IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21v
dGlvbl9lc3RfdGVtcGxhdGUuYworKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3RfdGVtcGxhdGUu
YwpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW50IGhwZWxfbW90aW9uX3NlYXJjaChNUFZFbmND
b250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
cmNfaW5kZXgsIGludCByZWZfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNpemUsIGludCBoKQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAm
cy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNv
bnN0IGludCBteCA9ICpteF9wdHI7CiAgICAgY29uc3QgaW50IG15ID0gKm15X3B0cjsKICAgICBj
b25zdCBpbnQgcGVuYWx0eV9mYWN0b3I9IGMtPnN1Yl9wZW5hbHR5X2ZhY3RvcjsKQEAgLTE2Niw3
ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfbWJfc2NvcmUoTVBWRW5jQ29udGV4dCAq
Y29uc3QgcywgaW50IG14LCBpbnQgbXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgaW50IHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGgsIGludCBhZGRfcmF0ZSkKIHsKLSAgICBNb3Rpb25Fc3RDb250
ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9
ICZzLT5tZTsKICAgICBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3I9IGMtPm1iX3BlbmFsdHlfZmFj
dG9yOwogICAgIGNvbnN0IGludCBmbGFncz0gYy0+bWJfZmxhZ3M7CiAgICAgY29uc3QgaW50IHFw
ZWw9IGZsYWdzICYgRkxBR19RUEVMOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBpbnQgcXBl
bF9tb3Rpb25fc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90aW9u
RXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNv
bnN0IGMgPSAmcy0+bWU7CiAgICAgY29uc3QgaW50IG14ID0gKm14X3B0cjsKICAgICBjb25zdCBp
bnQgbXkgPSAqbXlfcHRyOwogICAgIGNvbnN0IGludCBwZW5hbHR5X2ZhY3Rvcj0gYy0+c3ViX3Bl
bmFsdHlfZmFjdG9yOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBpbnQgcXBlbF9tb3Rpb25f
c2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgIGludCBiZXN0X3Bvc1s4XVsy
XTsKIAogICAgICAgICBtZW1zZXQoYmVzdCwgNjQsIHNpemVvZihpbnQpKjgpOwotICAgICAgICBp
ZihzLT5jLm1lLmRpYV9zaXplPj0yKXsKKyAgICAgICAgaWYocy0+bWUuZGlhX3NpemU+PTIpewog
ICAgICAgICAgICAgY29uc3QgaW50IHRsPSBzY29yZV9tYXBbKGluZGV4LSgxPDxNRV9NQVBfU0hJ
RlQpLTEpJihNRV9NQVBfU0laRS0xKV07CiAgICAgICAgICAgICBjb25zdCBpbnQgYmw9IHNjb3Jl
X21hcFsoaW5kZXgrKDE8PE1FX01BUF9TSElGVCktMSkmKE1FX01BUF9TSVpFLTEpXTsKICAgICAg
ICAgICAgIGNvbnN0IGludCB0cj0gc2NvcmVfbWFwWyhpbmRleC0oMTw8TUVfTUFQX1NISUZUKSsx
KSYoTUVfTUFQX1NJWkUtMSldOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHN0YXRpYyBhdl9hbHdheXNf
aW5saW5lIGludCBzbWFsbF9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBp
bnQgKmJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2lu
ZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykK
IHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9u
RXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJv
bWFfY21wZjsKICAgICBpbnQgbmV4dF9kaXI9LTE7CiAgICAgTE9BRF9DT01NT04KQEAgLTQ1OCw3
ICs0NTgsNyBAQCBzdGF0aWMgaW50IGZ1bm55X2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQg
KmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVu
YWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3Qg
Yz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAg
ICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBpbnQgZGlhX3NpemU7CiAgICAg
TE9BRF9DT01NT04KQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50IGhleF9zZWFyY2goTVBW
RW5jQ29udGV4dCAqY29uc3QgcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGNv
bnN0IGludCBwZW5hbHR5X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzaXplLCBpbnQgaCwgaW50IGZsYWdzLCBpbnQgZGlhX3NpemUpCiB7Ci0gICAg
TW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRl
eHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgbWVfY21wX2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7
CiAgICAgTE9BRF9DT01NT04KICAgICBMT0FEX0NPTU1PTjIKQEAgLTUzNCw3ICs1MzQsNyBAQCBz
dGF0aWMgaW50IGwyc19kaWFfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVz
dCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBm
bGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAg
TW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBm
LCBjaHJvbWFfY21wZjsKICAgICBMT0FEX0NPTU1PTgogICAgIExPQURfQ09NTU9OMgpAQCAtNTcy
LDcgKzU3Miw3IEBAIHN0YXRpYyBpbnQgdW1oX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz
LCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBlbmFsdHlfZmFj
dG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGlu
dCBoLCBpbnQgZmxhZ3MpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5j
Lm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgbWVfY21w
X2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7CiAgICAgTE9BRF9DT01NT04KICAgICBMT0FEX0NPTU1P
TjIKQEAgLTYxOSw3ICs2MTksNyBAQCBzdGF0aWMgaW50IGZ1bGxfc2VhcmNoKE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQg
cGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29u
c3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsK
ICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FEX0NPTU1PTgogICAg
IExPQURfQ09NTU9OMgpAQCAtNjgyLDcgKzY4Miw3IEBAIHN0YXRpYyBpbnQgc2FiX2RpYW1vbmRf
c2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVm
X2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rp
b25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAq
Y29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAg
ICBNaW5pbWEgbWluaW1hW01BWF9TQUJfU0laRV07CiAgICAgY29uc3QgaW50IG1pbmltYV9jb3Vu
dD0gRkZBQlMoYy0+ZGlhX3NpemUpOwpAQCAtNzcyLDcgKzc3Miw3IEBAIHN0YXRpYyBpbnQgdmFy
X2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRt
aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4
LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsK
LSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0
Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFf
Y21wZjsKICAgICBpbnQgZGlhX3NpemU7CiAgICAgTE9BRF9DT01NT04KQEAgLTgzMiw3ICs4MzIs
NyBAQCBzdGF0aWMgaW50IHZhcl9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz
LCBpbnQgKmJlc3QsIGludCBkbWluLAogc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGRpYW1v
bmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQg
cmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncyl7Ci0gICAgTW90
aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRleHQg
KmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgaWYoYy0+ZGlhX3NpemU9PS0xKQogICAgICAgICByZXR1
cm4gZnVubnlfZGlhbW9uZF9zZWFyY2gocywgYmVzdCwgZG1pbiwgc3JjX2luZGV4LCByZWZfaW5k
ZXgsIHBlbmFsdHlfZmFjdG9yLCBzaXplLCBoLCBmbGFncyk7CiAgICAgZWxzZSBpZihjLT5kaWFf
c2l6ZTwtMSkKQEAgLTg2MSw3ICs4NjEsNyBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQg
ZXB6c19tb3Rpb25fc2VhcmNoX2ludGVybmFsKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBQWzEwXVsyXSwgaW50IHNyY19pbmRleCwgaW50
IHJlZl9pbmRleCwgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcmVmX212X3NjYWxlLCBpbnQgZmxhZ3MsIGludCBzaXplLCBpbnQg
aCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90
aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07
ICAgICAgLyoqPCB4IGFuZCB5IGNvb3JkaW5hdGVzIG9mIHRoZSBiZXN0IG1vdGlvbiB2ZWN0b3Iu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5lLiB0aGUgZGlmZmVyZW5jZSBiZXR3
ZWVuIHRoZSBwb3NpdGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
bG9jayBjdXJyZW50bHkgYmVpbmcgZW5jb2RlZCBhbmQgdGhlIHBvc2l0aW9uIG9mCkBAIC05Nzks
NyArOTc5LDcgQEAgaW50IGZmX2VwenNfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25z
dCBzLCBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDE2X3QgKCpsYXN0X212KVsyXSwgaW50IHJlZl9tdl9zY2FsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBoKQogewotICAgIE1vdGlvbkVzdENvbnRl
eHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0g
JnMtPm1lOwogLy9GSVhNRSBjb252ZXJ0IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgc2FtZSB3YXkg
aWYgZmFzdGVyCiAgICAgaWYoYy0+ZmxhZ3M9PTAgJiYgaD09MTYgJiYgc2l6ZT09MCl7CiAgICAg
ICAgIHJldHVybiBlcHpzX21vdGlvbl9zZWFyY2hfaW50ZXJuYWwocywgbXhfcHRyLCBteV9wdHIs
IFAsIHNyY19pbmRleCwgcmVmX2luZGV4LCBsYXN0X212LCByZWZfbXZfc2NhbGUsIDAsIDAsIDE2
KTsKQEAgLTk5NSw3ICs5OTUsNyBAQCBzdGF0aWMgaW50IGVwenNfbW90aW9uX3NlYXJjaDIoTVBW
RW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNy
Y19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVmX212X3NjYWxlLCBjb25zdCBpbnQgc2l6
ZSkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90
aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07
CiAgICAgaW50IGQsIGRtaW47CiAgICAgdW5zaWduZWQgbWFwX2dlbmVyYXRpb247CmRpZmYgLS1n
aXQgYS9saWJhdmNvZGVjL21wZWcxMmVuYy5jIGIvbGliYXZjb2RlYy9tcGVnMTJlbmMuYwppbmRl
eCA1ODQ1NzNiNDY2Li5lNGFjMjU2NTM4IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWcxMmVu
Yy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmMKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0
YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAg
bS0+ZW5jb2RlX3BpY3R1cmVfaGVhZGVyID0gbXBlZzFfZW5jb2RlX3BpY3R1cmVfaGVhZGVyOwog
ICAgIHMtPmVuY29kZV9tYiAgICAgICAgICAgICA9IG1wZWcxMl9lbmNvZGVfbWI7CiAKLSAgICBz
LT5jLm1lLm12X3BlbmFsdHkgPSBtdl9wZW5hbHR5OworICAgIHMtPm1lLm12X3BlbmFsdHkgPSBt
dl9wZW5hbHR5OwogICAgIG0tPmZjb2RlX3RhYiAgICAgPSBmY29kZV90YWIgKyBNQVhfTVY7CiAg
ICAgaWYgKGF2Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPKSB7CiAgICAg
ICAgIHMtPm1pbl9xY29lZmYgPSAtMjU1OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlk
ZW8uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKaW5kZXggYTY1MTI1Y2MxMy4uZWZjOWVlMjRk
NiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYworKysgYi9saWJhdmNvZGVjL21w
ZWd2aWRlby5jCkBAIC00MDYsNyArNDA2LDYgQEAgc3RhdGljIGF2X2NvbGQgdm9pZCBmcmVlX2R1
cGxpY2F0ZV9jb250ZXh0KE1wZWdFbmNDb250ZXh0ICpzKQogCiAgICAgYXZfZnJlZXAoJnMtPnNj
LmVkZ2VfZW11X2J1ZmZlcik7CiAgICAgYXZfZnJlZXAoJnMtPnNjLnNjcmF0Y2hwYWRfYnVmKTsK
LSAgICBzLT5tZS50ZW1wID0gcy0+bWUuc2NyYXRjaHBhZCA9CiAgICAgcy0+c2Mub2JtY19zY3Jh
dGNocGFkID0gTlVMTDsKICAgICBzLT5zYy5saW5lc2l6ZSA9IDA7CiAKQEAgLTQyOCwxMyArNDI3
LDEwIEBAIHN0YXRpYyB2b2lkIGJhY2t1cF9kdXBsaWNhdGVfY29udGV4dChNcGVnRW5jQ29udGV4
dCAqYmFrLCBNcGVnRW5jQ29udGV4dCAqc3JjKQogewogI2RlZmluZSBDT1BZKGEpIGJhay0+YSA9
IHNyYy0+YQogICAgIENPUFkoc2MpOwotICAgIENPUFkobWUubWFwKTsKLSAgICBDT1BZKG1lLnNj
b3JlX21hcCk7CiAgICAgQ09QWShibG9ja3MpOwogICAgIENPUFkoYmxvY2spOwogICAgIENPUFko
c3RhcnRfbWJfeSk7CiAgICAgQ09QWShlbmRfbWJfeSk7Ci0gICAgQ09QWShtZS5tYXBfZ2VuZXJh
dGlvbik7CiAgICAgQ09QWShhY192YWxfYmFzZSk7CiAgICAgQ09QWShhY192YWxbMF0pOwogICAg
IENPUFkoYWNfdmFsWzFdKTsKQEAgLTYzNiw4ICs2MzIsNiBAQCBzdGF0aWMgdm9pZCBjbGVhcl9j
b250ZXh0KE1wZWdFbmNDb250ZXh0ICpzKQogICAgIHMtPmFjX3ZhbFswXSA9CiAgICAgcy0+YWNf
dmFsWzFdID0KICAgICBzLT5hY192YWxbMl0gPU5VTEw7Ci0gICAgcy0+bWUuc2NyYXRjaHBhZCA9
IE5VTEw7Ci0gICAgcy0+bWUudGVtcCA9IE5VTEw7CiAgICAgbWVtc2V0KCZzLT5zYywgMCwgc2l6
ZW9mKHMtPnNjKSk7CiAKIApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW8uaCBiL2xp
YmF2Y29kZWMvbXBlZ3ZpZGVvLmgKaW5kZXggNTMwMTMzODE4OC4uMWRjZmNhNmIwMyAxMDA2NDQK
LS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uaAorKysgYi9saWJhdmNvZGVjL21wZWd2aWRlby5o
CkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiaDI2M2RzcC5oIgogI2luY2x1ZGUgImhwZWxk
c3AuaCIKICNpbmNsdWRlICJpZGN0ZHNwLmgiCi0jaW5jbHVkZSAibW90aW9uX2VzdC5oIgogI2lu
Y2x1ZGUgIm1wZWdwaWN0dXJlLmgiCiAjaW5jbHVkZSAicXBlbGRzcC5oIgogI2luY2x1ZGUgInZp
ZGVvZHNwLmgiCkBAIC0yMDUsOCArMjA0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRl
eHQgewogICAgIGludCBsYXN0X212WzJdWzJdWzJdOyAgICAgICAgICAgICAvLy88IGxhc3QgTVYs
IHVzZWQgZm9yIE1WIHByZWRpY3Rpb24gaW4gTVBFRy0xICYgQi1mcmFtZSBNUEVHLTQKICAgICBp
bnQxNl90IGRpcmVjdF9zY2FsZV9tdlsyXVs2NF07ICAgLy8vPCBwcmVjb21wdXRlZCB0byBhdm9p
ZCBkaXZpc2lvbnMgaW4gZmZfbXBlZzRfc2V0X2RpcmVjdF9tdgogCi0gICAgTW90aW9uRXN0Q29u
dGV4dCBtZTsKLQogICAgIGludCBub19yb3VuZGluZzsgIC8qKjwgYXBwbHkgbm8gcm91bmRpbmcg
dG8gbW90aW9uIGNvbXBlbnNhdGlvbiAoTVBFRy00LCBtc21wZWc0LCAuLi4pCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgQi1mcmFtZXMgcm91bmRpbmcgbW9kZSBpcyBhbHdheXMgMCAqLwog
CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYyBiL2xpYmF2Y29kZWMvbXBl
Z3ZpZGVvX2VuYy5jCmluZGV4IDc0OTJhOWZkYmQuLjExNmNhMDA3YmEgMTAwNjQ0Ci0tLSBhL2xp
YmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5j
CkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IG1lX2NtcF9pbml0KE1QVk1h
aW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgKICAgICBpbnQgcmV0
OwogCiAgICAgZmZfbWVfY21wX2luaXQoJm1lY2MsIGF2Y3R4KTsKLSAgICByZXQgPSBmZl9tZV9p
bml0KCZzLT5jLm1lLCBhdmN0eCwgJm1lY2MsIDEpOworICAgIHJldCA9IGZmX21lX2luaXQoJnMt
Pm1lLCBhdmN0eCwgJm1lY2MsIDEpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4g
cmV0OwogICAgIHJldCA9IGZmX3NldF9jbXAoJm1lY2MsIG1lX2NtcCwgbS0+ZnJhbWVfc2tpcF9j
bXAsIDEpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZl
cnMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAjZWxz
ZQogICAgICAgICBBTElHTiA9IDEyOCwKICNlbmRpZgotICAgICAgICBNRV9NQVBfQUxMT0NfU0la
RSA9IEZGQUxJR04oMiAqIE1FX01BUF9TSVpFICogc2l6ZW9mKCpzLT5jLm1lLm1hcCksIEFMSUdO
KSwKKyAgICAgICAgTUVfTUFQX0FMTE9DX1NJWkUgPSBGRkFMSUdOKDIgKiBNRV9NQVBfU0laRSAq
IHNpemVvZigqcy0+bWUubWFwKSwgQUxJR04pLAogICAgICAgICBEQ1RfRVJST1JfU0laRSAgICA9
IEZGQUxJR04oMiAqIHNpemVvZigqcy0+ZGN0X2Vycm9yX3N1bSksIEFMSUdOKSwKICAgICB9Owog
ICAgIHN0YXRpY19hc3NlcnQoRkZNQVgoTUVfTUFQX0FMTE9DX1NJWkUsIERDVF9FUlJPUl9TSVpF
KSAqIE1BWF9USFJFQURTICsgQUxJR04gLSAxIDw9IFNJWkVfTUFYLApAQCAtNDk1LDggKzQ5NSw4
IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRleHQgKmNv
bnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgICAgIHMyLT5tYl9tZWFuICAgICAgPSAo
dWludDhfdCopKHMyLT5tYl92YXIgKyBtYl9hcnJheV9zaXplKTsKICAgICAgICAgczItPmxhbWJk
YV90YWJsZSA9IHMtPmxhbWJkYV90YWJsZTsKIAotICAgICAgICBzMi0+Yy5tZS5tYXAgICAgID0g
KHVpbnQzMl90KiltZV9tYXA7Ci0gICAgICAgIHMyLT5jLm1lLnNjb3JlX21hcCA9IHMyLT5jLm1l
Lm1hcCArIE1FX01BUF9TSVpFOworICAgICAgICBzMi0+bWUubWFwICAgICAgID0gKHVpbnQzMl90
KiltZV9tYXA7CisgICAgICAgIHMyLT5tZS5zY29yZV9tYXAgPSBzMi0+bWUubWFwICsgTUVfTUFQ
X1NJWkU7CiAgICAgICAgIG1lX21hcCAgICAgICAgICArPSBNRV9NQVBfQUxMT0NfU0laRTsKIAog
ICAgICAgICBzMi0+cF9tdl90YWJsZSAgICAgICAgICAgID0gdG1wX212X3RhYmxlOwpAQCAtMjc5
MSw4ICsyNzkxLDggQEAgc3RhdGljIGludCBwcmVfZXN0aW1hdGVfbW90aW9uX3RocmVhZChBVkNv
ZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0g
Kih2b2lkKiopYXJnOwogCiAKLSAgICBzLT5jLm1lLnByZV9wYXNzID0gMTsKLSAgICBzLT5jLm1l
LmRpYV9zaXplID0gcy0+Yy5hdmN0eC0+cHJlX2RpYV9zaXplOworICAgIHMtPm1lLnByZV9wYXNz
ID0gMTsKKyAgICBzLT5tZS5kaWFfc2l6ZSA9IHMtPmMuYXZjdHgtPnByZV9kaWFfc2l6ZTsKICAg
ICBzLT5jLmZpcnN0X3NsaWNlX2xpbmUgPSAxOwogICAgIGZvciAocy0+Yy5tYl95ID0gcy0+Yy5l
bmRfbWJfeSAtIDE7IHMtPmMubWJfeSA+PSBzLT5jLnN0YXJ0X21iX3k7IHMtPmMubWJfeS0tKSB7
CiAgICAgICAgIGZvciAocy0+Yy5tYl94ID0gcy0+Yy5tYl93aWR0aCAtIDE7IHMtPmMubWJfeCA+
PTAgOyBzLT5jLm1iX3gtLSkKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHN0YXRpYyBpbnQgcHJlX2Vz
dGltYXRlX21vdGlvbl90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZvaWQgKmFyZyl7CiAgICAg
ICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgfQogCi0gICAgcy0+Yy5tZS5wcmVf
cGFzcyA9IDA7CisgICAgcy0+bWUucHJlX3Bhc3MgPSAwOwogCiAgICAgcmV0dXJuIDA7CiB9CkBA
IC0yODA4LDcgKzI4MDgsNyBAQCBzdGF0aWMgaW50IHByZV9lc3RpbWF0ZV9tb3Rpb25fdGhyZWFk
KEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogc3RhdGljIGludCBlc3RpbWF0ZV9tb3Rp
b25fdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgIE1QVkVuY0NvbnRl
eHQgKmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CiAKLSAgICBzLT5jLm1lLmRpYV9zaXplPSBzLT5j
LmF2Y3R4LT5kaWFfc2l6ZTsKKyAgICBzLT5tZS5kaWFfc2l6ZSA9IHMtPmMuYXZjdHgtPmRpYV9z
aXplOwogICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZT0xOwogICAgIGZvciAocy0+Yy5tYl95ID0g
cy0+Yy5zdGFydF9tYl95OyBzLT5jLm1iX3kgPCBzLT5jLmVuZF9tYl95OyBzLT5jLm1iX3krKykg
ewogICAgICAgICBzLT5jLm1iX3g9MDsgLy9mb3IgYmxvY2sgaW5pdCBiZWxvdwpAQCAtMjg0Niw3
ICsyODQ2LDcgQEAgc3RhdGljIGludCBtYl92YXJfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2
b2lkICphcmcpewogCiAgICAgICAgICAgICBzLT5tYl92YXIgW3MtPmMubWJfc3RyaWRlICogbWJf
eSArIG1iX3hdID0gdmFyYzsKICAgICAgICAgICAgIHMtPm1iX21lYW5bcy0+Yy5tYl9zdHJpZGUg
KiBtYl95ICsgbWJfeF0gPSAoc3VtKzEyOCk+Pjg7Ci0gICAgICAgICAgICBzLT5jLm1lLm1iX3Zh
cl9zdW1fdGVtcCAgICArPSB2YXJjOworICAgICAgICAgICAgcy0+bWUubWJfdmFyX3N1bV90ZW1w
ICAgICs9IHZhcmM7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0zNTg5LDkg
KzM1ODksOSBAQCBzdGF0aWMgaW50IGVuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZv
aWQgKmFyZyl7CiAjZGVmaW5lIE1FUkdFKGZpZWxkKSBkc3QtPmZpZWxkICs9IHNyYy0+ZmllbGQ7
IHNyYy0+ZmllbGQ9MAogc3RhdGljIHZvaWQgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShNUFZFbmND
b250ZXh0ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKIHsKLSAgICBNRVJH
RShjLm1lLnNjZW5lX2NoYW5nZV9zY29yZSk7Ci0gICAgTUVSR0UoYy5tZS5tY19tYl92YXJfc3Vt
X3RlbXApOwotICAgIE1FUkdFKGMubWUubWJfdmFyX3N1bV90ZW1wKTsKKyAgICBNRVJHRShtZS5z
Y2VuZV9jaGFuZ2Vfc2NvcmUpOworICAgIE1FUkdFKG1lLm1jX21iX3Zhcl9zdW1fdGVtcCk7Cisg
ICAgTUVSR0UobWUubWJfdmFyX3N1bV90ZW1wKTsKIH0KIAogc3RhdGljIHZvaWQgbWVyZ2VfY29u
dGV4dF9hZnRlcl9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZHN0LCBNUFZFbmNDb250ZXh0
ICpjb25zdCBzcmMpCkBAIC0zNjg0LDggKzM2ODQsOCBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0
dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAg
IGludCBjb250ZXh0X2NvdW50ID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50OwogCiAgICAgLyog
UmVzZXQgdGhlIGF2ZXJhZ2UgTUIgdmFyaWFuY2UgKi8KLSAgICBzLT5jLm1lLm1iX3Zhcl9zdW1f
dGVtcCAgICA9Ci0gICAgcy0+Yy5tZS5tY19tYl92YXJfc3VtX3RlbXAgPSAwOworICAgIHMtPm1l
Lm1iX3Zhcl9zdW1fdGVtcCAgICA9CisgICAgcy0+bWUubWNfbWJfdmFyX3N1bV90ZW1wID0gMDsK
IAogICAgIC8qIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBzb21lIHRpbWUgdmFycyBiZWZvcmUgd2Ug
Y2FuIGVuY29kZSBCLWZyYW1lcyAqLwogICAgIC8vIFJBTDogQ29uZGl0aW9uIGFkZGVkIGZvciBN
UEVHMVZJREVPCkBAIC0zNjk0LDcgKzM2OTQsNyBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJl
KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAgIGlm
IChDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01Q
RUc0KQogICAgICAgICBmZl9zZXRfbXBlZzRfdGltZShzKTsKIAotICAgIHMtPmMubWUuc2NlbmVf
Y2hhbmdlX3Njb3JlPTA7CisgICAgcy0+bWUuc2NlbmVfY2hhbmdlX3Njb3JlPTA7CiAKIC8vICAg
IHMtPmxhbWJkYSA9IHMtPmMuY3VyX3BpYy5wdHItPnF1YWxpdHk7IC8vRklYTUUgcXNjYWxlIC8g
Li4uIHN0dWZmIGZvciBNRSByYXRlIGRpc3RvcnRpb24KIApAQCAtMzcxNyw4ICszNzE3LDYgQEAg
c3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29u
c3QgQVZQYWNrZXQgKnBrdCkKICAgICAgICAgdXBkYXRlX3FzY2FsZShtKTsKICAgICB9CiAKLSAg
ICBmZl9tZV9pbml0X3BpYyhzKTsKLQogICAgIHMtPmMubWJfaW50cmEgPSAwOyAvL2ZvciB0aGUg
cmF0ZSBkaXN0b3J0aW9uICYgYml0IGNvbXBhcmUgZnVuY3Rpb25zCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjb250ZXh0X2NvdW50OyBpKyspIHsKICAgICAgICAgTVBWRW5jQ29udGV4dCAqY29u
c3Qgc2xpY2UgPSBzLT5jLmVuY19jb250ZXh0c1tpXTsKQEAgLTM3MzIsNyArMzczMCw4IEBAIHN0
YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0
IEFWUGFja2V0ICpwa3QpCiAgICAgICAgICAgICBzbGljZS0+bGFtYmRhICA9IHMtPmxhbWJkYTsK
ICAgICAgICAgICAgIHNsaWNlLT5sYW1iZGEyID0gcy0+bGFtYmRhMjsKICAgICAgICAgfQotICAg
ICAgICBzbGljZS0+Yy5tZS50ZW1wID0gc2xpY2UtPmMubWUuc2NyYXRjaHBhZCA9IHNsaWNlLT5j
LnNjLnNjcmF0Y2hwYWRfYnVmOworICAgICAgICBzbGljZS0+bWUudGVtcCA9IHNsaWNlLT5tZS5z
Y3JhdGNocGFkID0gc2xpY2UtPmMuc2Muc2NyYXRjaHBhZF9idWY7CisgICAgICAgIGZmX21lX2lu
aXRfcGljKHNsaWNlKTsKIAogICAgICAgICBoICAgICA9IHMtPmMubWJfaGVpZ2h0OwogICAgICAg
ICBzdGFydCA9IHBrdC0+ZGF0YSArIChzaXplX3QpKCgoaW50NjRfdCkgcGt0LT5zaXplKSAqIHNs
aWNlLT5jLnN0YXJ0X21iX3kgLyBoKTsKQEAgLTM3NzAsMTEgKzM3NjksMTEgQEAgc3RhdGljIGlu
dCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgQVZQYWNr
ZXQgKnBrdCkKICAgICBmb3IoaT0xOyBpPGNvbnRleHRfY291bnQ7IGkrKyl7CiAgICAgICAgIG1l
cmdlX2NvbnRleHRfYWZ0ZXJfbWUocywgcy0+Yy5lbmNfY29udGV4dHNbaV0pOwogICAgIH0KLSAg
ICBtLT5tY19tYl92YXJfc3VtID0gcy0+Yy5tZS5tY19tYl92YXJfc3VtX3RlbXA7Ci0gICAgbS0+
bWJfdmFyX3N1bSAgICA9IHMtPmMubWUuICAgbWJfdmFyX3N1bV90ZW1wOworICAgIG0tPm1jX21i
X3Zhcl9zdW0gPSBzLT5tZS5tY19tYl92YXJfc3VtX3RlbXA7CisgICAgbS0+bWJfdmFyX3N1bSAg
ICA9IHMtPm1lLiAgIG1iX3Zhcl9zdW1fdGVtcDsKICAgICBlbW1zX2MoKTsKIAotICAgIGlmIChz
LT5jLm1lLnNjZW5lX2NoYW5nZV9zY29yZSA+IG0tPnNjZW5lY2hhbmdlX3RocmVzaG9sZCAmJgor
ICAgIGlmIChzLT5tZS5zY2VuZV9jaGFuZ2Vfc2NvcmUgPiBtLT5zY2VuZWNoYW5nZV90aHJlc2hv
bGQgJiYKICAgICAgICAgcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1ApIHsKICAg
ICAgICAgcy0+Yy5waWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfSTsKICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzLT5jLm1iX3N0cmlkZSAqIHMtPmMubWJfaGVpZ2h0OyBpKyspCmRpZmYg
LS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oIGIvbGliYXZjb2RlYy9tcGVndmlkZW9l
bmMuaAppbmRleCA2OTg1YzQxOTU1Li4zNDQzODcxNGUwIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj
L21wZWd2aWRlb2VuYy5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKICNpbmNsdWRlICJsaWJh
dnV0aWwvb3B0LmgiCiAjaW5jbHVkZSAiZmRjdGRzcC5oIgorI2luY2x1ZGUgIm1vdGlvbl9lc3Qu
aCIKICNpbmNsdWRlICJtcGVndmlkZW8uaCIKICNpbmNsdWRlICJtcGVndmlkZW9lbmNkc3AuaCIK
ICNpbmNsdWRlICJwaXhibG9ja2RzcC5oIgpAQCAtNjUsNiArNjYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBNUFZFbmNDb250ZXh0IHsKICAgICBGRENURFNQQ29udGV4dCBmZHNwOwogICAgIE1wZWd2aWRl
b0VuY0RTUENvbnRleHQgbXB2ZW5jZHNwOwogICAgIFBpeGJsb2NrRFNQQ29udGV4dCBwZHNwOwor
ICAgIE1vdGlvbkVzdENvbnRleHQgbWU7CiAKICAgICBpbnQxNl90ICgqcF9tdl90YWJsZSlbMl07
ICAgICAgICAgICAgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgUC1mcmFtZQogICAgIGludDE2
X3QgKCpiX2ZvcndfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1C
KSBmb3J3YXJkIG1vZGUgQi1mcmFtZQpAQCAtMzQ4LDcgKzM1MCw3IEBAIEZGX01QVl9PUFRfQ01Q
X0ZVTkMsIFwKIAogI2RlZmluZSBGRl9NUFZfQ09NTU9OX01PVElPTl9FU1RfT1BUUyBcCiB7ICJt
djAiLCAgICAgICAgICAgICJhbHdheXMgdHJ5IGEgbWIgd2l0aCBtdj08MCwwPiIsICAgICAgICAg
ICAgICAgICAgICAgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEZGX01QVl9GTEFHX01W
MCB9LCAgICAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtcHZfZmxhZ3MiIH0sXAot
eyJtb3Rpb25fZXN0IiwgIm1vdGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsICAgICAgICAgICAg
ICAgICAgICAgICBGRl9NUFZfT0ZGU0VUKGMubWUubW90aW9uX2VzdCksIEFWX09QVF9UWVBFX0lO
VCwgey5pNjQgPSBGRl9NRV9FUFpTIH0sIEZGX01FX1pFUk8sIEZGX01FX1hPTkUsIEZGX01QVl9P
UFRfRkxBR1MsIC51bml0ID0gIm1vdGlvbl9lc3QiIH0sICAgXAoreyJtb3Rpb25fZXN0IiwgIm1v
dGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsICAgICAgICAgICAgICAgICAgICAgICBGRl9NUFZf
T0ZGU0VUKG1lLm1vdGlvbl9lc3QpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gRkZfTUVfRVBa
UyB9LCBGRl9NRV9aRVJPLCBGRl9NRV9YT05FLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJt
b3Rpb25fZXN0IiB9LCAgIFwKIHsgInplcm8iLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwg
eyAuaTY0ID0gRkZfTUVfWkVSTyB9LCAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJt
b3Rpb25fZXN0IiB9LCBcCiB7ICJlcHpzIiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsg
Lmk2NCA9IEZGX01FX0VQWlMgfSwgMCwgMCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90
aW9uX2VzdCIgfSwgXAogeyAieG9uZSIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5p
NjQgPSBGRl9NRV9YT05FIH0sIDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1vdGlv
bl9lc3QiIH0sIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc25vd2VuYy5jIGIvbGliYXZjb2Rl
Yy9zbm93ZW5jLmMKaW5kZXggMjY5ZmM4YTU5OS4uMGM5OWIyMDM3OSAxMDA2NDQKLS0tIGEvbGli
YXZjb2RlYy9zbm93ZW5jLmMKKysrIGIvbGliYXZjb2RlYy9zbm93ZW5jLmMKQEAgLTIxNyw3ICsy
MTcsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2
Y3R4KQogICAgIG1jZigxMiwxMikKIAogICAgIGZmX21lX2NtcF9pbml0KCZlbmMtPm1lY2MsIGF2
Y3R4KTsKLSAgICByZXQgPSBmZl9tZV9pbml0KCZtcHYtPmMubWUsIGF2Y3R4LCAmZW5jLT5tZWNj
LCAwKTsKKyAgICByZXQgPSBmZl9tZV9pbml0KCZtcHYtPm1lLCBhdmN0eCwgJmVuYy0+bWVjYywg
MCk7CiAgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgZmZfbXBlZ3Zp
ZGVvZW5jZHNwX2luaXQoJmVuYy0+bXB2ZW5jZHNwLCBhdmN0eCk7CkBAIC0yMzIsMTUgKzIzMiwx
NSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4
KQogICAgIGVuYy0+bS5sbWF4ICA9IGF2Y3R4LT5tYl9sbWF4OwogICAgIG1wdi0+Yy5tYl9udW0g
ID0gKGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQgKyAyNTUpIC8gMjU2OyAvLyBGb3IgcmF0
ZWNvbnRyb2wKIAotICAgIG1wdi0+Yy5tZS50ZW1wICAgICAgPQotICAgIG1wdi0+Yy5tZS5zY3Jh
dGNocGFkID0gYXZfY2FsbG9jKGF2Y3R4LT53aWR0aCArIDY0LCAyKjE2KjIqc2l6ZW9mKHVpbnQ4
X3QpKTsKKyAgICBtcHYtPm1lLnRlbXAgICAgICA9CisgICAgbXB2LT5tZS5zY3JhdGNocGFkID0g
YXZfY2FsbG9jKGF2Y3R4LT53aWR0aCArIDY0LCAyKjE2KjIqc2l6ZW9mKHVpbnQ4X3QpKTsKICAg
ICBtcHYtPmMuc2Mub2JtY19zY3JhdGNocGFkPSBhdl9tYWxsb2N6KE1CX1NJWkUqTUJfU0laRSox
MipzaXplb2YodWludDMyX3QpKTsKLSAgICBtcHYtPmMubWUubWFwICAgICAgID0gYXZfbWFsbG9j
eigyICogTUVfTUFQX1NJWkUgKiBzaXplb2YoKm1wdi0+Yy5tZS5tYXApKTsKLSAgICBpZiAoIW1w
di0+Yy5tZS5zY3JhdGNocGFkIHx8ICFtcHYtPmMubWUubWFwIHx8ICFtcHYtPmMuc2Mub2JtY19z
Y3JhdGNocGFkKQorICAgIG1wdi0+bWUubWFwICAgICAgID0gYXZfbWFsbG9jeigyICogTUVfTUFQ
X1NJWkUgKiBzaXplb2YoKm1wdi0+bWUubWFwKSk7CisgICAgaWYgKCFtcHYtPm1lLnNjcmF0Y2hw
YWQgfHwgIW1wdi0+bWUubWFwIHx8ICFtcHYtPmMuc2Mub2JtY19zY3JhdGNocGFkKQogICAgICAg
ICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotICAgIG1wdi0+Yy5tZS5zY29yZV9tYXAgPSBtcHYt
PmMubWUubWFwICsgTUVfTUFQX1NJWkU7CisgICAgbXB2LT5tZS5zY29yZV9tYXAgPSBtcHYtPm1l
Lm1hcCArIE1FX01BUF9TSVpFOwogCi0gICAgbXB2LT5jLm1lLm12X3BlbmFsdHkgPSBmZl9oMjYz
X2dldF9tdl9wZW5hbHR5KCk7CisgICAgbXB2LT5tZS5tdl9wZW5hbHR5ID0gZmZfaDI2M19nZXRf
bXZfcGVuYWx0eSgpOwogCiAgICAgcy0+bWF4X3JlZl9mcmFtZXMgPSBhdl9jbGlwKGF2Y3R4LT5y
ZWZzLCAxLCBNQVhfUkVGX0ZSQU1FUyk7CiAKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgaW5s
aW5lIGludCBnZXRfcGVuYWx0eV9mYWN0b3IoaW50IGxhbWJkYSwgaW50IGxhbWJkYTIsIGludCB0
eXBlKXsKIHN0YXRpYyBpbnQgZW5jb2RlX3FfYnJhbmNoKFNub3dFbmNDb250ZXh0ICplbmMsIGlu
dCBsZXZlbCwgaW50IHgsIGludCB5KQogewogICAgIFNub3dDb250ZXh0ICAgICAgKmNvbnN0IHMg
PSAmZW5jLT5jb207Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZlbmMtPm0ucy5j
Lm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmZW5jLT5tLnMubWU7CiAgICAg
dWludDhfdCBwX2J1ZmZlclsxMDI0XTsKICAgICB1aW50OF90IGlfYnVmZmVyWzEwMjRdOwogICAg
IHVpbnQ4X3QgcF9zdGF0ZVtzaXplb2Yocy0+YmxvY2tfc3RhdGUpXTsKQEAgLTg0MCwxMiArODQw
LDEyIEBAIHN0YXRpYyBpbnQgZ2V0X2Jsb2NrX3JkKFNub3dFbmNDb250ZXh0ICplbmMsIGludCBt
Yl94LCBpbnQgbWJfeSwKICAgICAgICAgICAgIGRpc3RvcnRpb24gPSAwOwogICAgICAgICAgICAg
Zm9yKGk9MDsgaTw0OyBpKyspewogICAgICAgICAgICAgICAgIGludCBvZmYgPSBzeCsxNiooaSYx
KSArIChzeSsxNiooaT4+MSkpKnJlZl9zdHJpZGU7Ci0gICAgICAgICAgICAgICAgZGlzdG9ydGlv
biArPSBlbmMtPm0ucy5jLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIG9mZiwgZHN0ICsg
b2ZmLCByZWZfc3RyaWRlLCAxNik7CisgICAgICAgICAgICAgICAgZGlzdG9ydGlvbiArPSBlbmMt
Pm0ucy5tZS5tZV9jbXBbMF0oJmVuYy0+bS5zLCBzcmMgKyBvZmYsIGRzdCArIG9mZiwgcmVmX3N0
cmlkZSwgMTYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfWVsc2V7CiAgICAgICAg
IGF2X2Fzc2VydDIoYmxvY2tfdz09OCk7Ci0gICAgICAgIGRpc3RvcnRpb24gPSBlbmMtPm0ucy5j
Lm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIHN4ICsgc3kqcmVmX3N0cmlkZSwgZHN0ICsg
c3ggKyBzeSpyZWZfc3RyaWRlLCByZWZfc3RyaWRlLCBibG9ja193KjIpOworICAgICAgICBkaXN0
b3J0aW9uID0gZW5jLT5tLnMubWUubWVfY21wWzBdKCZlbmMtPm0ucywgc3JjICsgc3ggKyBzeSpy
ZWZfc3RyaWRlLCBkc3QgKyBzeCArIHN5KnJlZl9zdHJpZGUsIHJlZl9zdHJpZGUsIGJsb2NrX3cq
Mik7CiAgICAgfQogCiAgICAgaWYocGxhbmVfaW5kZXg9PTApewpAQCAtOTExLDcgKzkxMSw3IEBA
IHN0YXRpYyBpbnQgZ2V0XzRibG9ja19yZChTbm93RW5jQ29udGV4dCAqZW5jLCBpbnQgbWJfeCwg
aW50IG1iX3ksIGludCBwbGFuZV9pbmRlCiAgICAgICAgIH0KIAogICAgICAgICBhdl9hc3NlcnQx
KGJsb2NrX3c9PSA4IHx8IGJsb2NrX3c9PTE2KTsKLSAgICAgICAgZGlzdG9ydGlvbiArPSBlbmMt
Pm0ucy5jLm1lLm1lX2NtcFtibG9ja193PT04XSgmZW5jLT5tLnMsIHNyYyArIHggKyB5KnJlZl9z
dHJpZGUsIGRzdCArIHggKyB5KnJlZl9zdHJpZGUsIHJlZl9zdHJpZGUsIGJsb2NrX2gpOworICAg
ICAgICBkaXN0b3J0aW9uICs9IGVuYy0+bS5zLm1lLm1lX2NtcFtibG9ja193PT04XSgmZW5jLT5t
LnMsIHNyYyArIHggKyB5KnJlZl9zdHJpZGUsIGRzdCArIHggKyB5KnJlZl9zdHJpZGUsIHJlZl9z
dHJpZGUsIGJsb2NrX2gpOwogICAgIH0KIAogICAgIGlmKHBsYW5lX2luZGV4PT0wKXsKQEAgLTE4
NjYsOSArMTg2Niw5IEBAIHN0YXRpYyBpbnQgZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph
dmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAgICAgbXB2LT5jLmI4X3N0cmlkZSAgPSAyICogbXB2
LT5jLm1iX3dpZHRoICsgMTsKICAgICAgICAgbXB2LT5jLmZfY29kZSAgICAgPSAxOwogICAgICAg
ICBtcHYtPmMucGljdF90eXBlICA9IHBpYy0+cGljdF90eXBlOwotICAgICAgICBtcHYtPmMubWUu
bW90aW9uX2VzdCA9IGVuYy0+bW90aW9uX2VzdDsKLSAgICAgICAgbXB2LT5jLm1lLnNjZW5lX2No
YW5nZV9zY29yZSA9IDA7Ci0gICAgICAgIG1wdi0+Yy5tZS5kaWFfc2l6ZSA9IGF2Y3R4LT5kaWFf
c2l6ZTsKKyAgICAgICAgbXB2LT5tZS5tb3Rpb25fZXN0ID0gZW5jLT5tb3Rpb25fZXN0OworICAg
ICAgICBtcHYtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA9IDA7CisgICAgICAgIG1wdi0+bWUuZGlh
X3NpemUgPSBhdmN0eC0+ZGlhX3NpemU7CiAgICAgICAgIG1wdi0+Yy5xdWFydGVyX3NhbXBsZSAg
PSAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19RUEVMKSE9MDsKICAgICAgICAgbXB2
LT5jLm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOwogICAgICAgICBtcHYtPmMudW5yZXN0cmlj
dGVkX212ID0gMTsKQEAgLTE5MzcsNyArMTkzNyw3IEBAIHJlZG9fZnJhbWU6CiAgICAgICAgICAg
ICBpZiggICBwbGFuZV9pbmRleD09MAogICAgICAgICAgICAgICAgJiYgcGljLT5waWN0X3R5cGUg
PT0gQVZfUElDVFVSRV9UWVBFX1AKICAgICAgICAgICAgICAgICYmICEoYXZjdHgtPmZsYWdzJkFW
X0NPREVDX0ZMQUdfUEFTUzIpCi0gICAgICAgICAgICAgICAmJiBtcHYtPmMubWUuc2NlbmVfY2hh
bmdlX3Njb3JlID4gZW5jLT5zY2VuZWNoYW5nZV90aHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAg
ICYmIG1wdi0+bWUuc2NlbmVfY2hhbmdlX3Njb3JlID4gZW5jLT5zY2VuZWNoYW5nZV90aHJlc2hv
bGQpIHsKICAgICAgICAgICAgICAgICBmZl9pbml0X3JhbmdlX2VuY29kZXIoYywgcGt0LT5kYXRh
LCBwa3QtPnNpemUpOwogICAgICAgICAgICAgICAgIGZmX2J1aWxkX3JhY19zdGF0ZXMoYywgKDFM
TDw8MzIpLzIwLCAyNTYtOCk7CiAgICAgICAgICAgICAgICAgcGljLT5waWN0X3R5cGU9IEFWX1BJ
Q1RVUkVfVFlQRV9JOwpAQCAtMjA5Miw5ICsyMDkyLDkgQEAgc3RhdGljIGF2X2NvbGQgaW50IGVu
Y29kZV9lbmQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICBhdl9mcmVlcCgmcy0+cmVm
X3Njb3Jlc1tpXSk7CiAgICAgfQogCi0gICAgZW5jLT5tLnMuYy5tZS50ZW1wID0gTlVMTDsKLSAg
ICBhdl9mcmVlcCgmZW5jLT5tLnMuYy5tZS5zY3JhdGNocGFkKTsKLSAgICBhdl9mcmVlcCgmZW5j
LT5tLnMuYy5tZS5tYXApOworICAgIGVuYy0+bS5zLm1lLnRlbXAgPSBOVUxMOworICAgIGF2X2Zy
ZWVwKCZlbmMtPm0ucy5tZS5zY3JhdGNocGFkKTsKKyAgICBhdl9mcmVlcCgmZW5jLT5tLnMubWUu
bWFwKTsKICAgICBhdl9mcmVlcCgmZW5jLT5tLnMuYy5zYy5vYm1jX3NjcmF0Y2hwYWQpOwogCiAg
ICAgYXZfZnJlZXAoJmF2Y3R4LT5zdGF0c19vdXQpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9z
dnExZW5jLmMgYi9saWJhdmNvZGVjL3N2cTFlbmMuYwppbmRleCA2ZTUxNDZkNmE1Li4xM2Y4NmE3
NmRiIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3N2cTFlbmMuYworKysgYi9saWJhdmNvZGVjL3N2
cTFlbmMuYwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxhbmUo
U1ZRMUVuY0NvbnRleHQgKnMsIGludCBwbGFuZSwKICAgICAgICAgczItPmI4X3N0cmlkZSAgICAg
ICAgICAgICAgICAgICAgID0gMiAqIHMyLT5tYl93aWR0aCArIDE7CiAgICAgICAgIHMyLT5mX2Nv
ZGUgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgIHMyLT5waWN0X3R5cGUgICAg
ICAgICAgICAgICAgICAgICA9IHMtPnBpY3RfdHlwZTsKLSAgICAgICAgczItPm1lLnNjZW5lX2No
YW5nZV9zY29yZSAgICAgICAgID0gMDsKKyAgICAgICAgcy0+bS5tZS5zY2VuZV9jaGFuZ2Vfc2Nv
cmUgICAgICAgID0gMDsKICAgICAgICAgLy8gczItPm91dF9mb3JtYXQgICAgICAgICAgICAgICAg
ICAgID0gRk1UX0gyNjM7CiAgICAgICAgIC8vIHMyLT51bnJlc3RyaWN0ZWRfbXYgICAgICAgICAg
ICAgICA9IDE7CiAgICAgICAgIHMtPm0ubGFtYmRhICAgICAgICAgICAgICAgICAgICAgICA9IHMt
PnF1YWxpdHk7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIGludCBzdnExX2VuY29kZV9wbGFu
ZShTVlExRW5jQ29udGV4dCAqcywgaW50IHBsYW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgczItPm1iX3N0cmlkZSArIDE7CiAgICAgICAgIGZmX21lX2lu
aXRfcGljKCZzLT5tKTsKIAotICAgICAgICBzMi0+bWUuZGlhX3NpemUgICAgICA9IHMtPmF2Y3R4
LT5kaWFfc2l6ZTsKKyAgICAgICAgcy0+bS5tZS5kaWFfc2l6ZSAgICAgPSBzLT5hdmN0eC0+ZGlh
X3NpemU7CiAgICAgICAgIHMyLT5maXJzdF9zbGljZV9saW5lID0gMTsKICAgICAgICAgZm9yICh5
ID0gMDsgeSA8IGJsb2NrX2hlaWdodDsgeSsrKSB7CiAgICAgICAgICAgICBzLT5tLm5ld19waWMt
PmRhdGFbMF0gID0gc3JjIC0geSAqIDE2ICogc3RyaWRlOyAvLyB1Z2x5CkBAIC01MzksOCArNTM5
LDggQEAgc3RhdGljIGF2X2NvbGQgaW50IHN2cTFfZW5jb2RlX2VuZChBVkNvZGVjQ29udGV4dCAq
YXZjdHgpCiAgICAgICAgICAgICAgICBzLT5yZF90b3RhbCAvIChkb3VibGUpKGF2Y3R4LT53aWR0
aCAqIGF2Y3R4LT5oZWlnaHQgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdmN0eC0+ZnJhbWVfbnVtKSk7CiAKLSAgICBhdl9mcmVlcCgmcy0+bS5jLm1lLnNjcmF0Y2hw
YWQpOwotICAgIGF2X2ZyZWVwKCZzLT5tLmMubWUubWFwKTsKKyAgICBhdl9mcmVlcCgmcy0+bS5t
ZS5zY3JhdGNocGFkKTsKKyAgICBhdl9mcmVlcCgmcy0+bS5tZS5tYXApOwogICAgIGF2X2ZyZWVw
KCZzLT5tYl90eXBlKTsKICAgICBhdl9mcmVlcCgmcy0+ZHVtbXkpOwogICAgIGF2X2ZyZWVwKCZz
LT5zY3JhdGNoYnVmKTsKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgc3Zx
MV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAKICAgICBmZl9ocGVsZHNwX2lu
aXQoJnMtPmhkc3AsIGF2Y3R4LT5mbGFncyk7CiAgICAgZmZfbWVfY21wX2luaXQoJnMtPm1lY2Ms
IGF2Y3R4KTsKLSAgICByZXQgPSBmZl9tZV9pbml0KCZzLT5tLmMubWUsIGF2Y3R4LCAmcy0+bWVj
YywgMCk7CisgICAgcmV0ID0gZmZfbWVfaW5pdCgmcy0+bS5tZSwgYXZjdHgsICZzLT5tZWNjLCAw
KTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJldDsKICAgICBmZl9tcGVndmlk
ZW9lbmNkc3BfaW5pdCgmcy0+bS5tcHZlbmNkc3AsIGF2Y3R4KTsKQEAgLTYxMywyNCArNjEzLDI0
IEBAIHN0YXRpYyBhdl9jb2xkIGludCBzdnExX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICph
dmN0eCkKICAgICAgICAgcmV0dXJuIHJldDsKIAogICAgIHMtPm0uYy5waWN0dXJlX3N0cnVjdHVy
ZSA9IFBJQ1RfRlJBTUU7Ci0gICAgcy0+bS5jLm1lLnRlbXAgICAgICAgICAgID0KLSAgICBzLT5t
LmMubWUuc2NyYXRjaHBhZCAgICAgPSBhdl9tYWxsb2N6KChhdmN0eC0+d2lkdGggKyA2NCkgKgor
ICAgIHMtPm0ubWUudGVtcCAgICAgICAgICAgPQorICAgIHMtPm0ubWUuc2NyYXRjaHBhZCAgICAg
PSBhdl9tYWxsb2N6KChhdmN0eC0+d2lkdGggKyA2NCkgKgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIgKiAxNiAqIDIgKiBzaXplb2YodWludDhfdCkpOwogICAgIHMt
Pm1iX3R5cGUgICAgICAgICAgICAgPSBhdl9tYWxsb2N6KChzLT55X2Jsb2NrX3dpZHRoICsgMSkg
KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnlfYmxvY2tfaGVp
Z2h0ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICBzLT5kdW1teSAgICAgICAgICAgICAgID0gYXZf
bWFsbG9jeigocy0+eV9ibG9ja193aWR0aCArIDEpICoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLT55X2Jsb2NrX2hlaWdodCAqIHNpemVvZihpbnQzMl90KSk7Ci0g
ICAgcy0+bS5jLm1lLm1hcCAgICAgICAgICAgID0gYXZfbWFsbG9jeigyICogTUVfTUFQX1NJWkUg
KiBzaXplb2YoKnMtPm0uYy5tZS5tYXApKTsKKyAgICBzLT5tLm1lLm1hcCAgICAgICAgICAgID0g
YXZfbWFsbG9jeigyICogTUVfTUFQX1NJWkUgKiBzaXplb2YoKnMtPm0ubWUubWFwKSk7CiAgICAg
cy0+bS5uZXdfcGljICAgICAgID0gYXZfZnJhbWVfYWxsb2MoKTsKIAotICAgIGlmICghcy0+bS5j
Lm1lLnNjcmF0Y2hwYWQgfHwgIXMtPm0uYy5tZS5tYXAgfHwKKyAgICBpZiAoIXMtPm0ubWUuc2Ny
YXRjaHBhZCB8fCAhcy0+bS5tZS5tYXAgfHwKICAgICAgICAgIXMtPm1iX3R5cGUgfHwgIXMtPmR1
bW15IHx8ICFzLT5tLm5ld19waWMpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0g
ICAgcy0+bS5jLm1lLnNjb3JlX21hcCA9IHMtPm0uYy5tZS5tYXAgKyBNRV9NQVBfU0laRTsKKyAg
ICBzLT5tLm1lLnNjb3JlX21hcCA9IHMtPm0ubWUubWFwICsgTUVfTUFQX1NJWkU7CiAKICAgICBm
Zl9zdnExZW5jX2luaXQoJnMtPnN2cTFlbmNkc3ApOwogCi0gICAgcy0+bS5jLm1lLm12X3BlbmFs
dHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7CisgICAgcy0+bS5tZS5tdl9wZW5hbHR5ID0g
ZmZfaDI2M19nZXRfbXZfcGVuYWx0eSgpOwogCiAgICAgcmV0dXJuIHdyaXRlX2lkZW50KGF2Y3R4
LCBzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUID8gIkxhdmMiIDogTElC
QVZDT0RFQ19JREVOVCk7CiB9CkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIGludCBzdnExX2Vu
Y29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAjZGVmaW5l
IE9GRlNFVCh4KSBvZmZzZXRvZihzdHJ1Y3QgU1ZRMUVuY0NvbnRleHQsIHgpCiAjZGVmaW5lIFZF
IEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNIHwgQVZfT1BUX0ZMQUdfRU5DT0RJTkdfUEFSQU0KIHN0
YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7Ci0gICAgeyAibW90aW9uLWVzdCIsICJN
b3Rpb24gZXN0aW1hdGlvbiBhbGdvcml0aG0iLCBPRkZTRVQobS5jLm1lLm1vdGlvbl9lc3QpLCBB
Vl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IEZGX01FX0VQWlMgfSwgRkZfTUVfWkVSTywgRkZfTUVf
WE9ORSwgVkUsIC51bml0ID0gIm1vdGlvbi1lc3QifSwKKyAgICB7ICJtb3Rpb24tZXN0IiwgIk1v
dGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsIE9GRlNFVChtLm1lLm1vdGlvbl9lc3QpLCBBVl9P
UFRfVFlQRV9JTlQsIHsgLmk2NCA9IEZGX01FX0VQWlMgfSwgRkZfTUVfWkVSTywgRkZfTUVfWE9O
RSwgVkUsIC51bml0ID0gIm1vdGlvbi1lc3QifSwKICAgICAgICAgeyAiemVybyIsIE5VTEwsIDAs
IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBGRl9NRV9aRVJPIH0sIDAsIDAsIEZGX01QVl9P
UFRfRkxBR1MsIC51bml0ID0gIm1vdGlvbi1lc3QiIH0sCiAgICAgICAgIHsgImVwenMiLCBOVUxM
LCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gRkZfTUVfRVBaUyB9LCAwLCAwLCBGRl9N
UFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtb3Rpb24tZXN0IiB9LAogICAgICAgICB7ICJ4b25lIiwg
TlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEZGX01FX1hPTkUgfSwgMCwgMCwg
RkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90aW9uLWVzdCIgfSwKLS0gCjIuNDUuMgoK

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0070-avcodec-mpegvideo_enc-Move-code-to-initialize-variab.patch"
Content-Disposition: attachment;
 filename*0="0070-avcodec-mpegvideo_enc-Move-code-to-initialize-variab.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSBkZjNlYTJjNzUxNmU2Y2RiYjNjNWM0YmVmYjgwNzQ0ZDdhMjkxMDk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNDo0NzowMCArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzAvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogTW92ZSBjb2RlIHRvIGlu
aXRpYWxpemUKIHZhcmlhYmxlcyBpbW1lZGlhdGVseQoKQWxzbyBhdm9pZCBjYXN0cyBhbmQgcGFy
ZW50aGVzZXMuCihUaGlzIGlzIG9ubHkgcG9zc2libGUgbm93IGJlY2F1c2UgZmZfdXBkYXRlX2R1
cGxpY2F0ZV9jb250ZXh0KCkKbm8gbG9uZ2VyIHRvdWNoZXMgdGhlIFB1dEJpdENvbnRleHQuKQoK
U2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0
bG9vay5jb20+Ci0tLQogbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgfCAxMyArKysrKy0tLS0t
LS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlk
ZW9fZW5jLmMKaW5kZXggMTE2Y2EwMDdiYS4uNjJlM2U1YTIyZiAxMDA2NDQKLS0tIGEvbGliYXZj
b2RlYy9tcGVndmlkZW9fZW5jLmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAg
LTM3MjAsOCArMzcyMCwxMSBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1haW5FbmND
b250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAgIHMtPmMubWJfaW50cmEg
PSAwOyAvL2ZvciB0aGUgcmF0ZSBkaXN0b3J0aW9uICYgYml0IGNvbXBhcmUgZnVuY3Rpb25zCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb250ZXh0X2NvdW50OyBpKyspIHsKICAgICAgICAgTVBW
RW5jQ29udGV4dCAqY29uc3Qgc2xpY2UgPSBzLT5jLmVuY19jb250ZXh0c1tpXTsKLSAgICAgICAg
dWludDhfdCAqc3RhcnQsICplbmQ7Ci0gICAgICAgIGludCBoOworICAgICAgICBpbnQgaCA9IHMt
PmMubWJfaGVpZ2h0OworICAgICAgICB1aW50OF90ICpzdGFydCA9IHBrdC0+ZGF0YSArIChpbnQ2
NF90KXBrdC0+c2l6ZSAqIHNsaWNlLT5jLnN0YXJ0X21iX3kgLyBoOworICAgICAgICB1aW50OF90
ICplbmQgICA9IHBrdC0+ZGF0YSArIChpbnQ2NF90KXBrdC0+c2l6ZSAqIHNsaWNlLT5jLiAgZW5k
X21iX3kgLyBoOworCisgICAgICAgIGluaXRfcHV0X2JpdHMoJnNsaWNlLT5wYiwgc3RhcnQsIGVu
ZCAtIHN0YXJ0KTsKIAogICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgcmV0ID0gZmZfdXBk
YXRlX2R1cGxpY2F0ZV9jb250ZXh0KCZzbGljZS0+YywgJnMtPmMpOwpAQCAtMzczMiwxMiArMzcz
NSw2IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0
IG0sIGNvbnN0IEFWUGFja2V0ICpwa3QpCiAgICAgICAgIH0KICAgICAgICAgc2xpY2UtPm1lLnRl
bXAgPSBzbGljZS0+bWUuc2NyYXRjaHBhZCA9IHNsaWNlLT5jLnNjLnNjcmF0Y2hwYWRfYnVmOwog
ICAgICAgICBmZl9tZV9pbml0X3BpYyhzbGljZSk7Ci0KLSAgICAgICAgaCAgICAgPSBzLT5jLm1i
X2hlaWdodDsKLSAgICAgICAgc3RhcnQgPSBwa3QtPmRhdGEgKyAoc2l6ZV90KSgoKGludDY0X3Qp
IHBrdC0+c2l6ZSkgKiBzbGljZS0+Yy5zdGFydF9tYl95IC8gaCk7Ci0gICAgICAgIGVuZCAgID0g
cGt0LT5kYXRhICsgKHNpemVfdCkoKChpbnQ2NF90KSBwa3QtPnNpemUpICogc2xpY2UtPmMuICBl
bmRfbWJfeSAvIGgpOwotCi0gICAgICAgIGluaXRfcHV0X2JpdHMoJnMtPmMuZW5jX2NvbnRleHRz
W2ldLT5wYiwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKICAgICB9CiAKICAgICAvKiBFc3RpbWF0ZSBt
b3Rpb24gZm9yIGV2ZXJ5IE1CICovCi0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0071-avcodec-motion_est-Reset-scene_change-score-MB-varia.patch"
Content-Disposition: attachment;
 filename*0="0071-avcodec-motion_est-Reset-scene_change-score-MB-varia.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSAzYWI5MTFmMjE2NGI0Yzk4ZDI3YTJmNTk0NTcyMGUxZWU1MTFjOTMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNToxODoxNyArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzEvNzddIGF2Y29kZWMvbW90aW9uX2VzdDogUmVzZXQgc2NlbmVfY2hhbmdl
IHNjb3JlLCBNQgogdmFyaWFuY2Ugc3RhdHMKClJlc2V0IHRoZW0gaW4gZmZfbWVfaW5pdF9waWMo
KS4gSXQgaXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGZvciBpdAphbmQgYWxsb3dzIHRvIHJlbW92
ZSByZXNldHRpbmcgY29kZSBmcm9tIG11bHRpcGxlIHBsYWNlcwooZS5nLiBtcGVndmlkZW9fZW5j
LmMgcmVzZXR0ZWQgaXQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMKKG9uZSBmb3IgdGhlIG1haW4g
c2xpY2UgY29udGV4dCwgb25lIGZvciBhbGwgdGhlIG90aGVycykpLgoKU2lnbmVkLW9mZi1ieTog
QW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQog
bGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgICAgfCAgNCArKysrCiBsaWJhdmNvZGVjL21wZWd2aWRl
b19lbmMuYyB8IDEyICsrKy0tLS0tLS0tLQogbGliYXZjb2RlYy9zbm93ZW5jLmMgICAgICAgfCAg
MSAtCiAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgYi9saWJhdmNvZGVjL21vdGlvbl9l
c3QuYwppbmRleCBhZjA2YWNkOWIyLi4zNWY4NTNiYzYxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj
L21vdGlvbl9lc3QuYworKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwpAQCAtMzk3LDYgKzM5
NywxMCBAQCB2b2lkIGZmX21lX2luaXRfcGljKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiAgICAg
ICAgIGMtPmhwZWxfcHV0WzJdWzBdPSBjLT5ocGVsX3B1dFsyXVsxXT0KICAgICAgICAgYy0+aHBl
bF9wdXRbMl1bMl09IGMtPmhwZWxfcHV0WzJdWzNdPSB6ZXJvX2hwZWw7CiAgICAgfQorICAgIC8q
IFJlc2V0IHRoZSBhdmVyYWdlIE1CIHZhcmlhbmNlIGFuZCBzY2VuZSBjaGFuZ2Ugc3RhdHMgKi8K
KyAgICBjLT5zY2VuZV9jaGFuZ2Vfc2NvcmUgPSAwOworICAgIGMtPm1iX3Zhcl9zdW1fdGVtcCAg
ICA9CisgICAgYy0+bWNfbWJfdmFyX3N1bV90ZW1wID0gMDsKIH0KIAogI2RlZmluZSBDSEVDS19T
QURfSEFMRl9NVihzdWZmaXgsIHgsIHkpIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3Zp
ZGVvX2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKaW5kZXggNjJlM2U1YTIyZi4u
ZTg0ZjFkZDQ2NyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKKysrIGIv
bGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAgLTM1ODksOSArMzU4OSw5IEBAIHN0YXRpYyBp
bnQgZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICNkZWZpbmUg
TUVSR0UoZmllbGQpIGRzdC0+ZmllbGQgKz0gc3JjLT5maWVsZDsgc3JjLT5maWVsZD0wCiBzdGF0
aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX21lKE1QVkVuY0NvbnRleHQgKmNvbnN0IGRzdCwg
TVBWRW5jQ29udGV4dCAqY29uc3Qgc3JjKQogewotICAgIE1FUkdFKG1lLnNjZW5lX2NoYW5nZV9z
Y29yZSk7Ci0gICAgTUVSR0UobWUubWNfbWJfdmFyX3N1bV90ZW1wKTsKLSAgICBNRVJHRShtZS5t
Yl92YXJfc3VtX3RlbXApOworICAgIEFERChtZS5zY2VuZV9jaGFuZ2Vfc2NvcmUpOworICAgIEFE
RChtZS5tY19tYl92YXJfc3VtX3RlbXApOworICAgIEFERChtZS5tYl92YXJfc3VtX3RlbXApOwog
fQogCiBzdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29kZShNUFZFbmNDb250ZXh0
ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKQEAgLTM2ODMsMTAgKzM2ODMs
NiBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt
LCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAgIGludCBiaXRzOwogICAgIGludCBjb250ZXh0X2Nv
dW50ID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50OwogCi0gICAgLyogUmVzZXQgdGhlIGF2ZXJh
Z2UgTUIgdmFyaWFuY2UgKi8KLSAgICBzLT5tZS5tYl92YXJfc3VtX3RlbXAgICAgPQotICAgIHMt
Pm1lLm1jX21iX3Zhcl9zdW1fdGVtcCA9IDA7Ci0KICAgICAvKiB3ZSBuZWVkIHRvIGluaXRpYWxp
emUgc29tZSB0aW1lIHZhcnMgYmVmb3JlIHdlIGNhbiBlbmNvZGUgQi1mcmFtZXMgKi8KICAgICAv
LyBSQUw6IENvbmRpdGlvbiBhZGRlZCBmb3IgTVBFRzFWSURFTwogICAgIGlmIChzLT5jLm91dF9m
b3JtYXQgPT0gRk1UX01QRUcxIHx8IChzLT5jLmgyNjNfcHJlZCAmJiBzLT5jLm1zbXBlZzRfdmVy
c2lvbiA9PSBNU01QNF9VTlVTRUQpKQpAQCAtMzY5NCw4ICszNjkwLDYgQEAgc3RhdGljIGludCBl
bmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgQVZQYWNrZXQg
KnBrdCkKICAgICBpZiAoQ09ORklHX01QRUc0X0VOQ09ERVIgJiYgcy0+Yy5jb2RlY19pZCA9PSBB
Vl9DT0RFQ19JRF9NUEVHNCkKICAgICAgICAgZmZfc2V0X21wZWc0X3RpbWUocyk7CiAKLSAgICBz
LT5tZS5zY2VuZV9jaGFuZ2Vfc2NvcmU9MDsKLQogLy8gICAgcy0+bGFtYmRhID0gcy0+Yy5jdXJf
cGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAuLi4gc3R1ZmYgZm9yIE1FIHJhdGUg
ZGlzdG9ydGlvbgogCiAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9J
KSB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Nub3dlbmMuYyBiL2xpYmF2Y29kZWMvc25vd2Vu
Yy5jCmluZGV4IDBjOTliMjAzNzkuLmZlNzEwNDhhNDUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv
c25vd2VuYy5jCisrKyBiL2xpYmF2Y29kZWMvc25vd2VuYy5jCkBAIC0xODY3LDcgKzE4NjcsNiBA
QCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0
ICpwa3QsCiAgICAgICAgIG1wdi0+Yy5mX2NvZGUgICAgID0gMTsKICAgICAgICAgbXB2LT5jLnBp
Y3RfdHlwZSAgPSBwaWMtPnBpY3RfdHlwZTsKICAgICAgICAgbXB2LT5tZS5tb3Rpb25fZXN0ID0g
ZW5jLT5tb3Rpb25fZXN0OwotICAgICAgICBtcHYtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA9IDA7
CiAgICAgICAgIG1wdi0+bWUuZGlhX3NpemUgPSBhdmN0eC0+ZGlhX3NpemU7CiAgICAgICAgIG1w
di0+Yy5xdWFydGVyX3NhbXBsZSAgPSAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19R
UEVMKSE9MDsKICAgICAgICAgbXB2LT5jLm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOwotLSAK
Mi40NS4yCgo=

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0072-avcodec-mpegvideo_enc-Defer-initialization-of-mb-pos.patch"
Content-Disposition: attachment;
 filename*0="0072-avcodec-mpegvideo_enc-Defer-initialization-of-mb-pos.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSA2ZDJkMzRlYzNiMjdjMzE1OTM4ODI2MjMzOTQ2ZDIxMDVlMzAzN2YzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAyMToyODowMCArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzIvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogRGVmZXIgaW5pdGlhbGl6
YXRpb24gb2YgbWItcG9zCiBkZXBlbmRlbnQgdmFycwoKT25seSBzZXQgdGhlbSBhZnRlciBtYl94
IGFuZCBtYl95IGFyZSBrbm93biB3aGljaCBoYXBwZW5zCm9ubHkgYWZ0ZXIgdGhlIGNhbGwgdG8g
ZmZfaDI2MV9yZW9yZGVyX21iX2luZGV4KCkuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFJoZWlu
aGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KLS0tCiBsaWJhdmNvZGVjL21w
ZWd2aWRlb19lbmMuYyB8IDEwICsrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv
bnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW9f
ZW5jLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYwppbmRleCBlODRmMWRkNDY3Li5kYzE2
NWQ5MmQyIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYworKysgYi9saWJh
dmNvZGVjL21wZWd2aWRlb19lbmMuYwpAQCAtMzAyNCw4ICszMDI0LDcgQEAgc3RhdGljIGludCBl
bmNvZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICBmZl9p
bml0X2Jsb2NrX2luZGV4KCZzLT5jKTsKIAogICAgICAgICBmb3IgKGludCBtYl94ID0gMDsgbWJf
eCA8IHMtPmMubWJfd2lkdGg7IG1iX3grKykgewotICAgICAgICAgICAgaW50IHh5ID0gbWJfeSpz
LT5jLm1iX3N0cmlkZSArIG1iX3g7IC8vIHJlbW92ZWQgY29uc3QsIEgyNjEgbmVlZHMgdG8gYWRq
dXN0IHRoaXMKLSAgICAgICAgICAgIGludCBtYl90eXBlPSBzLT5tYl90eXBlW3h5XTsKKyAgICAg
ICAgICAgIGludCBtYl90eXBlLCB4eTsKIC8vICAgICAgICAgICAgaW50IGQ7CiAgICAgICAgICAg
ICBpbnQgZG1pbj0gSU5UX01BWDsKICAgICAgICAgICAgIGludCBkaXI7CkBAIC0zMDQ5LDExICsz
MDQ4LDEwIEBAIHN0YXRpYyBpbnQgZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9p
ZCAqYXJnKXsKICAgICAgICAgICAgIHMtPmMubWJfeSA9IG1iX3k7ICAvLyBtb3ZlZCBpbnRvIGxv
b3AsIGNhbiBnZXQgY2hhbmdlZCBieSBILjI2MQogICAgICAgICAgICAgZmZfdXBkYXRlX2Jsb2Nr
X2luZGV4KCZzLT5jLCA4LCAwLCBzLT5jLmNocm9tYV94X3NoaWZ0KTsKIAotICAgICAgICAgICAg
aWYoQ09ORklHX0gyNjFfRU5DT0RFUiAmJiBzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gy
NjEpeworICAgICAgICAgICAgaWYgKENPTkZJR19IMjYxX0VOQ09ERVIgJiYgcy0+Yy5jb2RlY19p
ZCA9PSBBVl9DT0RFQ19JRF9IMjYxKQogICAgICAgICAgICAgICAgIGZmX2gyNjFfcmVvcmRlcl9t
Yl9pbmRleChzKTsKLSAgICAgICAgICAgICAgICB4eSA9IHMtPmMubWJfeSpzLT5jLm1iX3N0cmlk
ZSArIHMtPmMubWJfeDsKLSAgICAgICAgICAgICAgICBtYl90eXBlPSBzLT5tYl90eXBlW3h5XTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHh5ICAgICAgPSBzLT5jLm1iX3kgKiBzLT5jLm1i
X3N0cmlkZSArIHMtPmMubWJfeDsKKyAgICAgICAgICAgIG1iX3R5cGUgPSBzLT5tYl90eXBlW3h5
XTsKIAogICAgICAgICAgICAgLyogd3JpdGUgZ29iIC8gdmlkZW8gcGFja2V0IGhlYWRlciAgKi8K
ICAgICAgICAgICAgIGlmKHMtPnJ0cF9tb2RlKXsKLS0gCjIuNDUuMgoK

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0073-avcodec-mpegvideo_enc-Use-better-variable-name.patch"
Content-Disposition: attachment;
 filename*0="0073-avcodec-mpegvideo_enc-Use-better-variable-name.patch"
Content-Transfer-Encoding: base64

RnJvbSAxYWIzNjYyZmVhODQ5ZjkxMTYxOGZlOWQ3Mjc2YmY0OWViYmJmZmQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAyMTo1NTozNCArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzMvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogVXNlIGJldHRlciB2YXJp
YWJsZSBuYW1lCgpBbHNvIGZpeGVzIHNoYWRvd2luZy4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMg
UmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29k
ZWMvbXBlZ3ZpZGVvX2VuYy5jIHwgMTAgKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5z
ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2
aWRlb19lbmMuYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCmluZGV4IGRjMTY1ZDkyZDIu
Ljk1ZDc3NDE1NWEgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCisrKyBi
L2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCkBAIC01MzQsNyArNTM0LDcgQEAgYXZfY29sZCBp
bnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBNUFZNYWlu
RW5jQ29udGV4dCAqY29uc3QgbSA9IGF2Y3R4LT5wcml2X2RhdGE7CiAgICAgTVBWRW5jQ29udGV4
dCAgICAqY29uc3QgcyA9ICZtLT5zOwogICAgIEFWQ1BCUHJvcGVydGllcyAqY3BiX3Byb3BzOwot
ICAgIGludCBpLCByZXQ7CisgICAgaW50IGdjZCwgcmV0OwogCiAgICAgbXB2X2VuY29kZV9kZWZh
dWx0cyhtKTsKIApAQCAtODE4LDExICs4MTgsMTEgQEAgYXZfY29sZCBpbnQgZmZfbXB2X2VuY29k
ZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgICAgbS0+Yl9mcmFtZV9zdHJhdGVn
eSA9IDA7CiAgICAgfQogCi0gICAgaSA9IGF2X2djZChhdmN0eC0+dGltZV9iYXNlLmRlbiwgYXZj
dHgtPnRpbWVfYmFzZS5udW0pOwotICAgIGlmIChpID4gMSkgeworICAgIGdjZCA9IGF2X2djZChh
dmN0eC0+dGltZV9iYXNlLmRlbiwgYXZjdHgtPnRpbWVfYmFzZS5udW0pOworICAgIGlmIChnY2Qg
PiAxKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lORk8sICJyZW1vdmluZyBjb21t
b24gZmFjdG9ycyBmcm9tIGZyYW1lcmF0ZVxuIik7Ci0gICAgICAgIGF2Y3R4LT50aW1lX2Jhc2Uu
ZGVuIC89IGk7Ci0gICAgICAgIGF2Y3R4LT50aW1lX2Jhc2UubnVtIC89IGk7CisgICAgICAgIGF2
Y3R4LT50aW1lX2Jhc2UuZGVuIC89IGdjZDsKKyAgICAgICAgYXZjdHgtPnRpbWVfYmFzZS5udW0g
Lz0gZ2NkOwogICAgICAgICAvL3JldHVybiAtMTsKICAgICB9CiAKLS0gCjIuNDUuMgoK

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0074-avcodec-h261dec-Set-FF_CODEC_CAP_SKIP_FRAME_FILL_PAR.patch"
Content-Disposition: attachment;
 filename*0="0074-avcodec-h261dec-Set-FF_CODEC_CAP_SKIP_FRAME_FILL_PAR.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSA4YmYxNjVjYmFiMjA2NDEyOWEzZDM4Y2E3MGI3ZGQ3MDk5Nzk3OGEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNjo1NToyMiArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzQvNzddIGF2Y29kZWMvaDI2MWRlYzogU2V0IEZGX0NPREVDX0NBUF9TS0lQ
X0ZSQU1FX0ZJTExfUEFSQU0KClRoaXMgZGVjb2RlciBzZXRzIHRoZSBBVkNvZGVjQ29udGV4dCBm
aWVsZHMgZXZlbiB3aGVuIGEgZnJhbWUKaXMgc2tpcHBlZC4KClNpZ25lZC1vZmYtYnk6IEFuZHJl
YXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2
Y29kZWMvaDI2MWRlYy5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKCmRp
ZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjFkZWMuYyBiL2xpYmF2Y29kZWMvaDI2MWRlYy5jCmlu
ZGV4IGMzMmRkZDJkZGYuLjFmNTdjOWY4ZmUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaDI2MWRl
Yy5jCisrKyBiL2xpYmF2Y29kZWMvaDI2MWRlYy5jCkBAIC02MTcsNCArNjE3LDUgQEAgY29uc3Qg
RkZDb2RlYyBmZl9oMjYxX2RlY29kZXIgPSB7CiAgICAgLmNsb3NlICAgICAgICAgID0gZmZfbXB2
X2RlY29kZV9jbG9zZSwKICAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfRFIxLAog
ICAgIC5wLm1heF9sb3dyZXMgICA9IDMsCisgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNf
Q0FQX1NLSVBfRlJBTUVfRklMTF9QQVJBTSwKIH07Ci0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0075-avcodec-error_resilience-Avoid-me_cmp.h-inclusion.patch"
Content-Disposition: attachment;
 filename*0="0075-avcodec-error_resilience-Avoid-me_cmp.h-inclusion.patch"
Content-Transfer-Encoding: base64

RnJvbSAxZjMyYWQxNTE3MTFiMzcxY2IxYTdhNTBjMTM4ODY4ZjNkOTRlNzNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNzowMzozMSArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzUvNzddIGF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZTogQXZvaWQgbWVfY21w
LmggaW5jbHVzaW9uCgpVc2Ugc3BlbGwgb3V0IHdoYXQgbWVfY21wX2Z1bmMgbWVhbnMuCkF2b2lk
cyBpbmNsdXNpb25zIGluIHRoZSBILjI2NCBkZWNvZGVyIGFzIHdlbGwgYXMgYWxsCm1wZWd2aWRl
byBkZWNvZGVycy4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5y
aGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5o
IHwgNiArKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmggYi9saWJhdmNv
ZGVjL2Vycm9yX3Jlc2lsaWVuY2UuaAppbmRleCA0MDA1MDE4Njc2Li44ZTQzMjE5YjA5IDEwMDY0
NAotLS0gYS9saWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuaAorKysgYi9saWJhdmNvZGVjL2Vy
cm9yX3Jlc2lsaWVuY2UuaApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgPHN0ZGF0b21pYy5o
PgogCiAjaW5jbHVkZSAiYXZjb2RlYy5oIgotI2luY2x1ZGUgIm1lX2NtcC5oIgogCiAvLy8gY3Vy
cmVudCBNQiBpcyB0aGUgZmlyc3QgYWZ0ZXIgYSByZXN5bmMgbWFya2VyCiAjZGVmaW5lIFZQX1NU
QVJUICAgICAgICAgICAgICAgMQpAQCAtMzcsNiArMzYsOCBAQAogI2RlZmluZSBFUl9NQl9FUlJP
UiAoRVJfQUNfRVJST1J8RVJfRENfRVJST1J8RVJfTVZfRVJST1IpCiAjZGVmaW5lIEVSX01CX0VO
RCAgIChFUl9BQ19FTkR8RVJfRENfRU5EfEVSX01WX0VORCkKIAordHlwZWRlZiBzdHJ1Y3QgTVBW
RW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OworCiB0eXBlZGVmIHN0cnVjdCBFUlBpY3R1cmUgewog
ICAgIEFWRnJhbWUgKmY7CiAgICAgY29uc3Qgc3RydWN0IFRocmVhZEZyYW1lICp0ZjsKQEAgLTUz
LDcgKzU0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVJQaWN0dXJlIHsKIHR5cGVkZWYgc3RydWN0IEVS
Q29udGV4dCB7CiAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4OwogCi0gICAgbWVfY21wX2Z1bmMg
c2FkOworICAgIGludCAoKnNhZCkoTVBWRW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90
ICpibGsxLAorICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmxrMiwgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpOwogICAgIGludCBtZWNjX2luaXRlZDsKIAogICAgIGludCAqbWJfaW5kZXgy
eHk7Ci0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0076-avcodec-mpegvideo-Move-unquantize-functions-into-a-f.patch"
Content-Disposition: attachment;
 filename*0="0076-avcodec-mpegvideo-Move-unquantize-functions-into-a-f.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSAzZGY3Nzk5MWI5YzUwM2I1YzU2MDdmNjQxY2E4Zjc1MzQzOTdlMWNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogU3VuLCAyIE1hciAyMDI1IDA1OjQ0OjA5ICswMTAwClN1Ympl
Y3Q6IFtQQVRDSCA3Ni83N10gYXZjb2RlYy9tcGVndmlkZW86IE1vdmUgdW5xdWFudGl6ZSBmdW5j
dGlvbnMgaW50byBhCiBmaWxlIG9mIHRoZWlyIG93bgoKVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBm
b3Igb25seSBrZWVwaW5nIHRoZSBhY3R1YWxseSB1c2VkCnVucXVhbnRpemUgZnVuY3Rpb25zIGlu
IE1wZWdFbmNDb250ZXh0LgoKU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRy
ZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAg
ICAgICAgICAgICAgICB8ICAgMSArCiBsaWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmMgICAg
ICAgIHwgICAxICsKIGxpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9faW5pdF9taXBzLmMgfCAgIDEg
KwogbGliYXZjb2RlYy9tcGVndmlkZW8uYyAgICAgICAgICAgICAgICB8IDIzNyArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL21wZWd2aWRlby5oICAgICAgICAgICAgICAgIHwgICA1
IC0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuYyAgICAgfCAyNzMgKysrKysrKysr
KysrKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaCAgICAg
fCAgMzcgKysrKwogbGliYXZjb2RlYy9uZW9uL21wZWd2aWRlby5jICAgICAgICAgICB8ICAgMSAr
CiBsaWJhdmNvZGVjL3BwYy9tcGVndmlkZW9fYWx0aXZlYy5jICAgIHwgICAxICsKIGxpYmF2Y29k
ZWMveDg2L21wZWd2aWRlby5jICAgICAgICAgICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwg
MzE4IGluc2VydGlvbnMoKyksIDI0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh
dmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01h
a2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCAzN2IyMDFlYzRhLi5iMmFiYjNiODYz
IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZp
bGUKQEAgLTE0Nyw2ICsxNDcsNyBAQCBPQkpTLSQoQ09ORklHX01QRUdBVURJT0hFQURFUikgICAg
ICAgICArPSBtcGVnYXVkaW9kZWNoZWFkZXIubyBtcGVnYXVkaW90YWJzLm8KIE9CSlMtJChDT05G
SUdfTVBFRzRBVURJTykgICAgICAgICAgICAgICs9IG1wZWc0YXVkaW8ubyBtcGVnNGF1ZGlvX3Nh
bXBsZV9yYXRlcy5vCiBPQkpTLSQoQ09ORklHX01QRUdWSURFTykgICAgICAgICAgICAgICArPSBt
cGVndmlkZW8ubyBybC5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1wZWd2aWRlb19tb3Rpb24ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtcGVndmlkZW9fdW5xdWFudGl6ZS5vIFwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1wZWd2aWRlb2RhdGEubyBtcGVncGljdHVyZS5vICBcCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b191cHBlcjQubwogT0JK
Uy0kKENPTkZJR19NUEVHVklERU9ERUMpICAgICAgICAgICAgKz0gbXBlZ3ZpZGVvX2RlYy5vIG1w
ZWd1dGlscy5vCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmMgYi9s
aWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmMKaW5kZXggMjhhM2YyY2RkOS4uZTMyNDUxYjU1
NCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5jCisrKyBiL2xpYmF2
Y29kZWMvYXJtL21wZWd2aWRlb19hcm0uYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImxp
YmF2dXRpbC9hcm0vY3B1LmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9hdmNvZGVjLmgiCiAjaW5j
bHVkZSAibGliYXZjb2RlYy9tcGVndmlkZW8uaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2
aWRlb191bnF1YW50aXplLmgiCiAjaW5jbHVkZSAibXBlZ3ZpZGVvX2FybS5oIgogI2luY2x1ZGUg
ImFzbS1vZmZzZXRzLmgiCiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9f
aW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlwcy5jCmluZGV4
IDFkMDJiMGM5MzcuLmE5YWNhZTk0Y2UgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbWlwcy9tcGVn
dmlkZW9faW5pdF9taXBzLmMKKysrIGIvbGliYXZjb2RlYy9taXBzL21wZWd2aWRlb19pbml0X21p
cHMuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMu
aCIKICNpbmNsdWRlICJsaWJhdnV0aWwvbWlwcy9jcHUuaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVj
L21wZWd2aWRlb191bnF1YW50aXplLmgiCiAjaW5jbHVkZSAiaDI2M2RzcF9taXBzLmgiCiAjaW5j
bHVkZSAibXBlZ3ZpZGVvX21pcHMuaCIKIApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlk
ZW8uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKaW5kZXggZWZjOWVlMjRkNi4uOWE0MDkzN2Ji
ZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYworKysgYi9saWJhdmNvZGVjL21w
ZWd2aWRlby5jCkBAIC00MSwyMjEgKzQxLDkgQEAKICNpbmNsdWRlICJtcGVndXRpbHMuaCIKICNp
bmNsdWRlICJtcGVndmlkZW8uaCIKICNpbmNsdWRlICJtcGVndmlkZW9kYXRhLmgiCisjaW5jbHVk
ZSAibXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvcmVmc3RydWN0
LmgiCiAKLXN0YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX21wZWcxX2ludHJhX2MoTXBlZ0VuY0Nv
bnRleHQgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJs
b2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKLXsKLSAgICBpbnQgaSwgbGV2ZWwsIG5Db2VmZnM7Ci0g
ICAgY29uc3QgdWludDE2X3QgKnF1YW50X21hdHJpeDsKLQotICAgIG5Db2VmZnM9IHMtPmJsb2Nr
X2xhc3RfaW5kZXhbbl07Ci0KLSAgICBibG9ja1swXSAqPSBuIDwgNCA/IHMtPnlfZGNfc2NhbGUg
OiBzLT5jX2RjX3NjYWxlOwotICAgIC8qIFhYWDogb25seSBNUEVHLTEgKi8KLSAgICBxdWFudF9t
YXRyaXggPSBzLT5pbnRyYV9tYXRyaXg7Ci0gICAgZm9yKGk9MTtpPD1uQ29lZmZzO2krKykgewot
ICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07Ci0gICAgICAg
IGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChsZXZlbCkgewotICAgICAgICAgICAgaWYg
KGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxldmVsID0gLWxldmVsOwotICAgICAgICAg
ICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+
IDM7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAobGV2ZWwgLSAxKSB8IDE7Ci0gICAgICAgICAg
ICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+IDM7
Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAobGV2ZWwgLSAxKSB8IDE7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBibG9ja1tqXSA9IGxldmVsOwotICAgICAgICB9Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlcl9jKE1wZWdFbmNDb250ZXh0ICpz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50
IG4sIGludCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVsLCBuQ29lZmZzOwotICAgIGNvbnN0
IHVpbnQxNl90ICpxdWFudF9tYXRyaXg7Ci0KLSAgICBuQ29lZmZzPSBzLT5ibG9ja19sYXN0X2lu
ZGV4W25dOwotCi0gICAgcXVhbnRfbWF0cml4ID0gcy0+aW50ZXJfbWF0cml4OwotICAgIGZvcihp
PTA7IGk8PW5Db2VmZnM7IGkrKykgewotICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxl
LnBlcm11dGF0ZWRbaV07Ci0gICAgICAgIGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChs
ZXZlbCkgewotICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxl
dmVsID0gLWxldmVsOwotICAgICAgICAgICAgICAgIGxldmVsID0gKCgobGV2ZWwgPDwgMSkgKyAx
KSAqIHFzY2FsZSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgKChpbnQpIChxdWFudF9tYXRy
aXhbal0pKSkgPj4gNDsKLSAgICAgICAgICAgICAgICBsZXZlbCA9IChsZXZlbCAtIDEpIHwgMTsK
LSAgICAgICAgICAgICAgICBsZXZlbCA9IC1sZXZlbDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgbGV2ZWwgPSAoKChsZXZlbCA8PCAxKSArIDEpICogcXNjYWxlICoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAoKGludCkgKHF1YW50X21hdHJpeFtqXSkpKSA+PiA0Owot
ICAgICAgICAgICAgICAgIGxldmVsID0gKGxldmVsIC0gMSkgfCAxOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYmxvY2tbal0gPSBsZXZlbDsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmFfYyhNcGVnRW5jQ29udGV4dCAqcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBu
LCBpbnQgcXNjYWxlKQotewotICAgIGludCBpLCBsZXZlbCwgbkNvZWZmczsKLSAgICBjb25zdCB1
aW50MTZfdCAqcXVhbnRfbWF0cml4OwotCi0gICAgaWYgKHMtPnFfc2NhbGVfdHlwZSkgcXNjYWxl
ID0gZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbcXNjYWxlXTsKLSAgICBlbHNlICAgICAgICAg
ICAgICAgICBxc2NhbGUgPDw9IDE7Ci0KLSAgICBuQ29lZmZzPSBzLT5ibG9ja19sYXN0X2luZGV4
W25dOwotCi0gICAgYmxvY2tbMF0gKj0gbiA8IDQgPyBzLT55X2RjX3NjYWxlIDogcy0+Y19kY19z
Y2FsZTsKLSAgICBxdWFudF9tYXRyaXggPSBzLT5pbnRyYV9tYXRyaXg7Ci0gICAgZm9yKGk9MTtp
PD1uQ29lZmZzO2krKykgewotICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11
dGF0ZWRbaV07Ci0gICAgICAgIGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChsZXZlbCkg
ewotICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxldmVsID0g
LWxldmVsOwotICAgICAgICAgICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBx
dWFudF9tYXRyaXhbal0pID4+IDQ7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxldmVsID0gKGludCkobGV2ZWwg
KiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+IDQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBibG9ja1tqXSA9IGxldmVsOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9iaXRleGFjdChNcGVnRW5jQ29udGV4dCAqcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBu
LCBpbnQgcXNjYWxlKQotewotICAgIGludCBpLCBsZXZlbCwgbkNvZWZmczsKLSAgICBjb25zdCB1
aW50MTZfdCAqcXVhbnRfbWF0cml4OwotICAgIGludCBzdW09LTE7Ci0KLSAgICBpZiAocy0+cV9z
Y2FsZV90eXBlKSBxc2NhbGUgPSBmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtxc2NhbGVdOwot
ICAgIGVsc2UgICAgICAgICAgICAgICAgIHFzY2FsZSA8PD0gMTsKLQotICAgIG5Db2VmZnM9IHMt
PmJsb2NrX2xhc3RfaW5kZXhbbl07Ci0KLSAgICBibG9ja1swXSAqPSBuIDwgNCA/IHMtPnlfZGNf
c2NhbGUgOiBzLT5jX2RjX3NjYWxlOwotICAgIHN1bSArPSBibG9ja1swXTsKLSAgICBxdWFudF9t
YXRyaXggPSBzLT5pbnRyYV9tYXRyaXg7Ci0gICAgZm9yKGk9MTtpPD1uQ29lZmZzO2krKykgewot
ICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07Ci0gICAgICAg
IGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChsZXZlbCkgewotICAgICAgICAgICAgaWYg
KGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxldmVsID0gLWxldmVsOwotICAgICAgICAg
ICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+
IDQ7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9t
YXRyaXhbal0pID4+IDQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBibG9ja1tqXSA9IGxl
dmVsOwotICAgICAgICAgICAgc3VtKz1sZXZlbDsKLSAgICAgICAgfQotICAgIH0KLSAgICBibG9j
a1s2M11ePXN1bSYxOwotfQotCi1zdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRl
cl9jKE1wZWdFbmNDb250ZXh0ICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90ICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVs
LCBuQ29lZmZzOwotICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9tYXRyaXg7Ci0gICAgaW50IHN1
bT0tMTsKLQotICAgIGlmIChzLT5xX3NjYWxlX3R5cGUpIHFzY2FsZSA9IGZmX21wZWcyX25vbl9s
aW5lYXJfcXNjYWxlW3FzY2FsZV07Ci0gICAgZWxzZSAgICAgICAgICAgICAgICAgcXNjYWxlIDw8
PSAxOwotCi0gICAgbkNvZWZmcz0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKLQotICAgIHF1YW50
X21hdHJpeCA9IHMtPmludGVyX21hdHJpeDsKLSAgICBmb3IoaT0wOyBpPD1uQ29lZmZzOyBpKysp
IHsKLSAgICAgICAgaW50IGo9IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwotICAg
ICAgICBsZXZlbCA9IGJsb2NrW2pdOwotICAgICAgICBpZiAobGV2ZWwpIHsKLSAgICAgICAgICAg
IGlmIChsZXZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICBsZXZlbCA9IC1sZXZlbDsKLSAgICAg
ICAgICAgICAgICBsZXZlbCA9ICgoKGxldmVsIDw8IDEpICsgMSkgKiBxc2NhbGUgKgotICAgICAg
ICAgICAgICAgICAgICAgICAgICgoaW50KSAocXVhbnRfbWF0cml4W2pdKSkpID4+IDU7Ci0gICAg
ICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGxldmVsID0gKCgobGV2ZWwgPDwgMSkgKyAxKSAqIHFzY2FsZSAqCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgKChpbnQpIChxdWFudF9tYXRyaXhbal0pKSkgPj4gNTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJsb2NrW2pdID0gbGV2ZWw7Ci0gICAgICAgICAgICBzdW0r
PWxldmVsOwotICAgICAgICB9Ci0gICAgfQotICAgIGJsb2NrWzYzXV49c3VtJjE7Ci19Ci0KLXN0
YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50cmFfYyhNcGVnRW5jQ29udGV4dCAqcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4s
IGludCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVsLCBxbXVsLCBxYWRkOwotICAgIGludCBu
Q29lZmZzOwotCi0gICAgYXZfYXNzZXJ0MihzLT5ibG9ja19sYXN0X2luZGV4W25dPj0wIHx8IHMt
PmgyNjNfYWljKTsKLQotICAgIHFtdWwgPSBxc2NhbGUgPDwgMTsKLQotICAgIGlmICghcy0+aDI2
M19haWMpIHsKLSAgICAgICAgYmxvY2tbMF0gKj0gbiA8IDQgPyBzLT55X2RjX3NjYWxlIDogcy0+
Y19kY19zY2FsZTsKLSAgICAgICAgcWFkZCA9IChxc2NhbGUgLSAxKSB8IDE7Ci0gICAgfWVsc2V7
Ci0gICAgICAgIHFhZGQgPSAwOwotICAgIH0KLSAgICBpZihzLT5hY19wcmVkKQotICAgICAgICBu
Q29lZmZzPTYzOwotICAgIGVsc2UKLSAgICAgICAgbkNvZWZmcz0gcy0+aW50cmFfc2NhbnRhYmxl
LnJhc3Rlcl9lbmRbIHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0gXTsKLQotICAgIGZvcihpPTE7IGk8
PW5Db2VmZnM7IGkrKykgewotICAgICAgICBsZXZlbCA9IGJsb2NrW2ldOwotICAgICAgICBpZiAo
bGV2ZWwpIHsKLSAgICAgICAgICAgIGlmIChsZXZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICBs
ZXZlbCA9IGxldmVsICogcW11bCAtIHFhZGQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGxldmVsID0gbGV2ZWwgKiBxbXVsICsgcWFkZDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJsb2NrW2ldID0gbGV2ZWw7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRp
YyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50ZXJfYyhNcGVnRW5jQ29udGV4dCAqcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sIGlu
dCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVsLCBxbXVsLCBxYWRkOwotICAgIGludCBuQ29l
ZmZzOwotCi0gICAgYXZfYXNzZXJ0MihzLT5ibG9ja19sYXN0X2luZGV4W25dPj0wKTsKLQotICAg
IHFhZGQgPSAocXNjYWxlIC0gMSkgfCAxOwotICAgIHFtdWwgPSBxc2NhbGUgPDwgMTsKLQotICAg
IG5Db2VmZnM9IHMtPmludGVyX3NjYW50YWJsZS5yYXN0ZXJfZW5kWyBzLT5ibG9ja19sYXN0X2lu
ZGV4W25dIF07Ci0KLSAgICBmb3IoaT0wOyBpPD1uQ29lZmZzOyBpKyspIHsKLSAgICAgICAgbGV2
ZWwgPSBibG9ja1tpXTsKLSAgICAgICAgaWYgKGxldmVsKSB7Ci0gICAgICAgICAgICBpZiAobGV2
ZWwgPCAwKSB7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSBsZXZlbCAqIHFtdWwgLSBxYWRkOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXZlbCA9IGxldmVsICogcW11
bCArIHFhZGQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBibG9ja1tpXSA9IGxldmVsOwot
ICAgICAgICB9Ci0gICAgfQotfQotCiAKIHN0YXRpYyB2b2lkIGdyYXkxNih1aW50OF90ICpkc3Qs
IGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IGxpbmVzaXplLCBpbnQgaCkKIHsKQEAgLTMy
NSwyOCArMTEzLDcgQEAgYXZfY29sZCB2b2lkIGZmX21wdl9pZGN0X2luaXQoTXBlZ0VuY0NvbnRl
eHQgKnMpCiAgICAgZmZfcGVybXV0ZV9zY2FudGFibGUocy0+cGVybXV0YXRlZF9pbnRyYV92X3Nj
YW50YWJsZSwgZmZfYWx0ZXJuYXRlX3ZlcnRpY2FsX3NjYW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uKTsKIAotICAgIHMtPmRjdF91bnF1YW50aXpl
X2gyNjNfaW50cmEgID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYV9jOwotICAgIHMtPmRjdF91
bnF1YW50aXplX2gyNjNfaW50ZXIgID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9jOwotICAg
IHMtPmRjdF91bnF1YW50aXplX21wZWcxX2ludHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFfaW50
cmFfYzsKLSAgICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlciA9IGRjdF91bnF1YW50aXpl
X21wZWcxX2ludGVyX2M7Ci0gICAgcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmEgPSBkY3Rf
dW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9jOwotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9D
T0RFQ19GTEFHX0JJVEVYQUNUKQotICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRy
YSA9IGRjdF91bnF1YW50aXplX21wZWcyX2ludHJhX2JpdGV4YWN0OwotICAgIHMtPmRjdF91bnF1
YW50aXplX21wZWcyX2ludGVyID0gZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXJfYzsKLQotI2lm
IEhBVkVfSU5UUklOU0lDU19ORU9OCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7Ci0j
ZW5kaWYKLQotI2lmIEFSQ0hfQVJNCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X2FybShzKTsKLSNl
bGlmIEFSQ0hfUFBDCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X3BwYyhzKTsKLSNlbGlmIEFSQ0hf
WDg2Ci0gICAgZmZfbXB2X2NvbW1vbl9pbml0X3g4NihzKTsKLSNlbGlmIEFSQ0hfTUlQUwotICAg
IGZmX21wdl9jb21tb25faW5pdF9taXBzKHMpOwotI2VuZGlmCisgICAgZmZfbXB2X3VucXVhbnRp
emVfaW5pdChzKTsKIH0KIAogc3RhdGljIGF2X2NvbGQgaW50IGluaXRfZHVwbGljYXRlX2NvbnRl
eHQoTXBlZ0VuY0NvbnRleHQgKnMpCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlby5o
IGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaAppbmRleCAxZGNmY2E2YjAzLi43Mzc5MTYwMTU5IDEw
MDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlby5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3Zp
ZGVvLmgKQEAgLTM2MiwxMSArMzYyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg
ewogdm9pZCBmZl9tcHZfY29tbW9uX2RlZmF1bHRzKE1wZWdFbmNDb250ZXh0ICpzKTsKIAogaW50
IGZmX21wdl9jb21tb25faW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lkIGZmX21wdl9jb21t
b25faW5pdF9hcm0oTXBlZ0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZfY29tbW9uX2luaXRf
bmVvbihNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lkIGZmX21wdl9jb21tb25faW5pdF9wcGMoTXBl
Z0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2KE1wZWdFbmNDb250
ZXh0ICpzKTsKLXZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0VuY0NvbnRleHQgKnMp
OwogLyoqCiAgKiBJbml0aWFsaXplIGFuIE1wZWdFbmNDb250ZXh0J3MgdGhyZWFkIGNvbnRleHRz
LiBQcmVzdW1lcyB0aGF0CiAgKiBzbGljZV9jb250ZXh0X2NvdW50IGlzIGFscmVhZHkgc2V0IGFu
ZCB0aGF0IGFsbCB0aGUgZmllbGRzCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb191
bnF1YW50aXplLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTJiYWNkZjQyNAotLS0gL2Rldi9udWxsCisr
KyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuYwpAQCAtMCwwICsxLDI3MyBAQAor
LyoKKyAqIFVucXVhbnRpemUgZnVuY3Rpb25zIGZvciBtcGVndmlkZW8KKyAqIENvcHlyaWdodCAo
YykgMjAwMCwyMDAxIEZhYnJpY2UgQmVsbGFyZAorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDQg
TWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KKyAqCisgKiA0TVYgJiBocSAm
IEItZnJhbWUgZW5jb2Rpbmcgc3R1ZmYgYnkgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5p
QGdteC5hdD4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZt
cGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1
ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJsaWJhdnV0
aWwvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgorI2luY2x1
ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJtcGVndmlkZW8uaCIKKyNpbmNsdWRlICJtcGVndmlk
ZW9kYXRhLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKKworc3RhdGljIHZv
aWQgZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmFfYyhNcGVnRW5jQ29udGV4dCAqcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBuLCBpbnQg
cXNjYWxlKQoreworICAgIGludCBpLCBsZXZlbCwgbkNvZWZmczsKKyAgICBjb25zdCB1aW50MTZf
dCAqcXVhbnRfbWF0cml4OworCisgICAgbkNvZWZmcz0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsK
KworICAgIGJsb2NrWzBdICo9IG4gPCA0ID8gcy0+eV9kY19zY2FsZSA6IHMtPmNfZGNfc2NhbGU7
CisgICAgLyogWFhYOiBvbmx5IE1QRUctMSAqLworICAgIHF1YW50X21hdHJpeCA9IHMtPmludHJh
X21hdHJpeDsKKyAgICBmb3IoaT0xO2k8PW5Db2VmZnM7aSsrKSB7CisgICAgICAgIGludCBqPSBz
LT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgbGV2ZWwgPSBibG9ja1tq
XTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7Cisg
ICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAo
aW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gMzsKKyAgICAgICAgICAg
ICAgICBsZXZlbCA9IChsZXZlbCAtIDEpIHwgMTsKKyAgICAgICAgICAgICAgICBsZXZlbCA9IC1s
ZXZlbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAoaW50
KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gMzsKKyAgICAgICAgICAgICAg
ICBsZXZlbCA9IChsZXZlbCAtIDEpIHwgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJs
b2NrW2pdID0gbGV2ZWw7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRjdF91
bnF1YW50aXplX21wZWcxX2ludGVyX2MoTXBlZ0VuY0NvbnRleHQgKnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkK
K3sKKyAgICBpbnQgaSwgbGV2ZWwsIG5Db2VmZnM7CisgICAgY29uc3QgdWludDE2X3QgKnF1YW50
X21hdHJpeDsKKworICAgIG5Db2VmZnM9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisKKyAgICBx
dWFudF9tYXRyaXggPSBzLT5pbnRlcl9tYXRyaXg7CisgICAgZm9yKGk9MDsgaTw9bkNvZWZmczsg
aSsrKSB7CisgICAgICAgIGludCBqPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsK
KyAgICAgICAgbGV2ZWwgPSBibG9ja1tqXTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAg
ICAgICBpZiAobGV2ZWwgPCAwKSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Cisg
ICAgICAgICAgICAgICAgbGV2ZWwgPSAoKChsZXZlbCA8PCAxKSArIDEpICogcXNjYWxlICoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAoKGludCkgKHF1YW50X21hdHJpeFtqXSkpKSA+PiA0Owor
ICAgICAgICAgICAgICAgIGxldmVsID0gKGxldmVsIC0gMSkgfCAxOworICAgICAgICAgICAgICAg
IGxldmVsID0gLWxldmVsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBs
ZXZlbCA9ICgoKGxldmVsIDw8IDEpICsgMSkgKiBxc2NhbGUgKgorICAgICAgICAgICAgICAgICAg
ICAgICAgICgoaW50KSAocXVhbnRfbWF0cml4W2pdKSkpID4+IDQ7CisgICAgICAgICAgICAgICAg
bGV2ZWwgPSAobGV2ZWwgLSAxKSB8IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBibG9j
a1tqXSA9IGxldmVsOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBkY3RfdW5x
dWFudGl6ZV9tcGVnMl9pbnRyYV9jKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpCit7
CisgICAgaW50IGksIGxldmVsLCBuQ29lZmZzOworICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9t
YXRyaXg7CisKKyAgICBpZiAocy0+cV9zY2FsZV90eXBlKSBxc2NhbGUgPSBmZl9tcGVnMl9ub25f
bGluZWFyX3FzY2FsZVtxc2NhbGVdOworICAgIGVsc2UgICAgICAgICAgICAgICAgIHFzY2FsZSA8
PD0gMTsKKworICAgIG5Db2VmZnM9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisKKyAgICBibG9j
a1swXSAqPSBuIDwgNCA/IHMtPnlfZGNfc2NhbGUgOiBzLT5jX2RjX3NjYWxlOworICAgIHF1YW50
X21hdHJpeCA9IHMtPmludHJhX21hdHJpeDsKKyAgICBmb3IoaT0xO2k8PW5Db2VmZnM7aSsrKSB7
CisgICAgICAgIGludCBqPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAg
ICAgbGV2ZWwgPSBibG9ja1tqXTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAgICAgICBp
ZiAobGV2ZWwgPCAwKSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7CisgICAgICAg
ICAgICAgICAgbGV2ZWwgPSAoaW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkg
Pj4gNDsKKyAgICAgICAgICAgICAgICBsZXZlbCA9IC1sZXZlbDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAoaW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50
X21hdHJpeFtqXSkgPj4gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrW2pdID0g
bGV2ZWw7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRjdF91bnF1YW50aXpl
X21wZWcyX2ludHJhX2JpdGV4YWN0KE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpCit7
CisgICAgaW50IGksIGxldmVsLCBuQ29lZmZzOworICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9t
YXRyaXg7CisgICAgaW50IHN1bT0tMTsKKworICAgIGlmIChzLT5xX3NjYWxlX3R5cGUpIHFzY2Fs
ZSA9IGZmX21wZWcyX25vbl9saW5lYXJfcXNjYWxlW3FzY2FsZV07CisgICAgZWxzZSAgICAgICAg
ICAgICAgICAgcXNjYWxlIDw8PSAxOworCisgICAgbkNvZWZmcz0gcy0+YmxvY2tfbGFzdF9pbmRl
eFtuXTsKKworICAgIGJsb2NrWzBdICo9IG4gPCA0ID8gcy0+eV9kY19zY2FsZSA6IHMtPmNfZGNf
c2NhbGU7CisgICAgc3VtICs9IGJsb2NrWzBdOworICAgIHF1YW50X21hdHJpeCA9IHMtPmludHJh
X21hdHJpeDsKKyAgICBmb3IoaT0xO2k8PW5Db2VmZnM7aSsrKSB7CisgICAgICAgIGludCBqPSBz
LT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgbGV2ZWwgPSBibG9ja1tq
XTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7Cisg
ICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAo
aW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gNDsKKyAgICAgICAgICAg
ICAgICBsZXZlbCA9IC1sZXZlbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgbGV2ZWwgPSAoaW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gNDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrW2pdID0gbGV2ZWw7CisgICAgICAgICAg
ICBzdW0rPWxldmVsOworICAgICAgICB9CisgICAgfQorICAgIGJsb2NrWzYzXV49c3VtJjE7Cit9
CisKK3N0YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX21wZWcyX2ludGVyX2MoTXBlZ0VuY0NvbnRl
eHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2Nr
LCBpbnQgbiwgaW50IHFzY2FsZSkKK3sKKyAgICBpbnQgaSwgbGV2ZWwsIG5Db2VmZnM7CisgICAg
Y29uc3QgdWludDE2X3QgKnF1YW50X21hdHJpeDsKKyAgICBpbnQgc3VtPS0xOworCisgICAgaWYg
KHMtPnFfc2NhbGVfdHlwZSkgcXNjYWxlID0gZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbcXNj
YWxlXTsKKyAgICBlbHNlICAgICAgICAgICAgICAgICBxc2NhbGUgPDw9IDE7CisKKyAgICBuQ29l
ZmZzPSBzLT5ibG9ja19sYXN0X2luZGV4W25dOworCisgICAgcXVhbnRfbWF0cml4ID0gcy0+aW50
ZXJfbWF0cml4OworICAgIGZvcihpPTA7IGk8PW5Db2VmZnM7IGkrKykgeworICAgICAgICBpbnQg
aj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAgIGxldmVsID0gYmxv
Y2tbal07CisgICAgICAgIGlmIChsZXZlbCkgeworICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkg
eworICAgICAgICAgICAgICAgIGxldmVsID0gLWxldmVsOworICAgICAgICAgICAgICAgIGxldmVs
ID0gKCgobGV2ZWwgPDwgMSkgKyAxKSAqIHFzY2FsZSAqCisgICAgICAgICAgICAgICAgICAgICAg
ICAgKChpbnQpIChxdWFudF9tYXRyaXhbal0pKSkgPj4gNTsKKyAgICAgICAgICAgICAgICBsZXZl
bCA9IC1sZXZlbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwg
PSAoKChsZXZlbCA8PCAxKSArIDEpICogcXNjYWxlICoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAoKGludCkgKHF1YW50X21hdHJpeFtqXSkpKSA+PiA1OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYmxvY2tbal0gPSBsZXZlbDsKKyAgICAgICAgICAgIHN1bSs9bGV2ZWw7CisgICAgICAg
IH0KKyAgICB9CisgICAgYmxvY2tbNjNdXj1zdW0mMTsKK30KKworc3RhdGljIHZvaWQgZGN0X3Vu
cXVhbnRpemVfaDI2M19pbnRyYV9jKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKK3sK
KyAgICBpbnQgaSwgbGV2ZWwsIHFtdWwsIHFhZGQ7CisgICAgaW50IG5Db2VmZnM7CisKKyAgICBh
dl9hc3NlcnQyKHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0+PTAgfHwgcy0+aDI2M19haWMpOworCisg
ICAgcW11bCA9IHFzY2FsZSA8PCAxOworCisgICAgaWYgKCFzLT5oMjYzX2FpYykgeworICAgICAg
ICBibG9ja1swXSAqPSBuIDwgNCA/IHMtPnlfZGNfc2NhbGUgOiBzLT5jX2RjX3NjYWxlOworICAg
ICAgICBxYWRkID0gKHFzY2FsZSAtIDEpIHwgMTsKKyAgICB9ZWxzZXsKKyAgICAgICAgcWFkZCA9
IDA7CisgICAgfQorICAgIGlmKHMtPmFjX3ByZWQpCisgICAgICAgIG5Db2VmZnM9NjM7CisgICAg
ZWxzZQorICAgICAgICBuQ29lZmZzPSBzLT5pbnRyYV9zY2FudGFibGUucmFzdGVyX2VuZFsgcy0+
YmxvY2tfbGFzdF9pbmRleFtuXSBdOworCisgICAgZm9yKGk9MTsgaTw9bkNvZWZmczsgaSsrKSB7
CisgICAgICAgIGxldmVsID0gYmxvY2tbaV07CisgICAgICAgIGlmIChsZXZlbCkgeworICAgICAg
ICAgICAgaWYgKGxldmVsIDwgMCkgeworICAgICAgICAgICAgICAgIGxldmVsID0gbGV2ZWwgKiBx
bXVsIC0gcWFkZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwg
PSBsZXZlbCAqIHFtdWwgKyBxYWRkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYmxvY2tb
aV0gPSBsZXZlbDsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgZGN0X3VucXVh
bnRpemVfaDI2M19pbnRlcl9jKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKK3sKKyAg
ICBpbnQgaSwgbGV2ZWwsIHFtdWwsIHFhZGQ7CisgICAgaW50IG5Db2VmZnM7CisKKyAgICBhdl9h
c3NlcnQyKHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0+PTApOworCisgICAgcWFkZCA9IChxc2NhbGUg
LSAxKSB8IDE7CisgICAgcW11bCA9IHFzY2FsZSA8PCAxOworCisgICAgbkNvZWZmcz0gcy0+aW50
ZXJfc2NhbnRhYmxlLnJhc3Rlcl9lbmRbIHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0gXTsKKworICAg
IGZvcihpPTA7IGk8PW5Db2VmZnM7IGkrKykgeworICAgICAgICBsZXZlbCA9IGJsb2NrW2ldOwor
ICAgICAgICBpZiAobGV2ZWwpIHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA8IDApIHsKKyAgICAg
ICAgICAgICAgICBsZXZlbCA9IGxldmVsICogcW11bCAtIHFhZGQ7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGxldmVsID0gbGV2ZWwgKiBxbXVsICsgcWFkZDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrW2ldID0gbGV2ZWw7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2F2X2NvbGQgdm9pZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0KE1wZWdFbmNDb250ZXh0
ICpzKQoreworICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50cmEgID0gZGN0X3VucXVhbnRp
emVfaDI2M19pbnRyYV9jOworICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXIgID0gZGN0
X3VucXVhbnRpemVfaDI2M19pbnRlcl9jOworICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcxX2lu
dHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmFfYzsKKyAgICBzLT5kY3RfdW5xdWFudGl6
ZV9tcGVnMV9pbnRlciA9IGRjdF91bnF1YW50aXplX21wZWcxX2ludGVyX2M7CisgICAgcy0+ZGN0
X3VucXVhbnRpemVfbXBlZzJfaW50cmEgPSBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9jOwor
ICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUKQorICAgICAg
ICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYSA9IGRjdF91bnF1YW50aXplX21wZWcyX2lu
dHJhX2JpdGV4YWN0OworICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcyX2ludGVyID0gZGN0X3Vu
cXVhbnRpemVfbXBlZzJfaW50ZXJfYzsKKworI2lmIEhBVkVfSU5UUklOU0lDU19ORU9OCisgICAg
ZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7CisjZW5kaWYKKworI2lmIEFSQ0hfQVJNCisgICAg
ZmZfbXB2X2NvbW1vbl9pbml0X2FybShzKTsKKyNlbGlmIEFSQ0hfUFBDCisgICAgZmZfbXB2X2Nv
bW1vbl9pbml0X3BwYyhzKTsKKyNlbGlmIEFSQ0hfWDg2CisgICAgZmZfbXB2X2NvbW1vbl9pbml0
X3g4NihzKTsKKyNlbGlmIEFSQ0hfTUlQUworICAgIGZmX21wdl9jb21tb25faW5pdF9taXBzKHMp
OworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXpl
LmggYi9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMC4uMWU3NTkwNTYxYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2
Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogVW5x
dWFudGl6ZSBmdW5jdGlvbnMgZm9yIG1wZWd2aWRlbworICogQ29weXJpZ2h0IChjKSAyMDAwLDIw
MDEgRmFicmljZSBCZWxsYXJkCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCBNaWNoYWVsIE5p
ZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgorICoKKyAqIDRNViAmIGhxICYgQi1mcmFtZSBl
bmNvZGluZyBzdHVmZiBieSBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0Pgor
ICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNf
TVBFR1ZJREVPX1VOUVVBTlRJWkVfSAorI2RlZmluZSBBVkNPREVDX01QRUdWSURFT19VTlFVQU5U
SVpFX0gKKwordHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgTXBlZ0VuY0NvbnRleHQ7CisK
K3ZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZm
X21wdl9jb21tb25faW5pdF9hcm0oTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9tcHZfY29t
bW9uX2luaXRfbmVvbihNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX21wdl9jb21tb25faW5p
dF9wcGMoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2KE1w
ZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0VuY0Nv
bnRleHQgKnMpOworCisjZW5kaWYgLyogQVZDT0RFQ19NUEVHVklERU9fVU5RVUFOVElaRV9IICov
CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL25lb24vbXBlZ3ZpZGVvLmMgYi9saWJhdmNvZGVjL25l
b24vbXBlZ3ZpZGVvLmMKaW5kZXggOGYwNWQ3N2E2NS4uYThiMmEwNjA2ZCAxMDA2NDQKLS0tIGEv
bGliYXZjb2RlYy9uZW9uL21wZWd2aWRlby5jCisrKyBiL2xpYmF2Y29kZWMvbmVvbi9tcGVndmlk
ZW8uYwpAQCAtMzIsNiArMzIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJsaWJhdmNvZGVjL21w
ZWd2aWRlby5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIK
IAogc3RhdGljIHZvaWQgaW5saW5lIGZmX2RjdF91bnF1YW50aXplX2gyNjNfbmVvbihpbnQgcXNj
YWxlLCBpbnQgcWFkZCwgaW50IG5Db2VmZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrKQpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl
Yy9wcGMvbXBlZ3ZpZGVvX2FsdGl2ZWMuYyBiL2xpYmF2Y29kZWMvcHBjL21wZWd2aWRlb19hbHRp
dmVjLmMKaW5kZXggYmNiNTliYTg0NS4uYzM2MWNhNzg1NyAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl
Yy9wcGMvbXBlZ3ZpZGVvX2FsdGl2ZWMuYworKysgYi9saWJhdmNvZGVjL3BwYy9tcGVndmlkZW9f
YWx0aXZlYy5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL3BwYy91dGls
X2FsdGl2ZWMuaCIKIAogI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgiCisjaW5jbHVk
ZSAibGliYXZjb2RlYy9tcGVndmlkZW9fdW5xdWFudGl6ZS5oIgogCiAjaWYgSEFWRV9BTFRJVkVD
CiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMveDg2L21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy94
ODYvbXBlZ3ZpZGVvLmMKaW5kZXggOTg3ODYwN2E4MS4uMTFhNWVlNDc0YiAxMDA2NDQKLS0tIGEv
bGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvLmMKKysrIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVv
LmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJsaWJhdmNvZGVjL2F2Y29kZWMuaCIKICNp
bmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBl
Z3ZpZGVvZGF0YS5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUu
aCIKIAogI2lmIEhBVkVfTU1YX0lOTElORQogCi0tIAoyLjQ1LjIKCg==

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/x-patch; charset=UTF-8;
 name="0077-avcodec-mpegvideo-Only-keep-the-actually-used-unquan.patch"
Content-Disposition: attachment;
 filename*0="0077-avcodec-mpegvideo-Only-keep-the-actually-used-unquan.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSAzZDE2NTZiYThiYWUzZmIxODIwYmNhOWI5MjlhZWI0MWIyZDI4YjhmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk
dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNToyNDo1NyArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggNzcvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvOiBPbmx5IGtlZXAgdGhlIGFjdHVh
bGx5IHVzZWQKIHVucXVhbnRpemUgZnVuY3MKCkZvciBhbGwgZW5jb2RlcnMgYW5kIGFsbCBkZWNv
ZGVycyBleGNlcHQgTVBFRy00IHRoZSB1bnF1YW50aXplCmZ1bmN0aW9ucyB0byB1c2UgZG9uJ3Qg
Y2hhbmdlIGF0IGFsbCBhbmQgdGhlcmVmb3JlIG5lZWRuJ3QgYmUKa2VwdCBpbiB0aGUgY29udGV4
dC4gU28gZGlzY2FyZCB0aGVtIGFmdGVyIHNldHRpbmcgdGhlbTsKZm9yIE1QRUctNCwgdGhlIGZ1
bmN0aW9ucyBnZXQgYXNzaWduZWQgb24gYSBwZXItZnJhbWUgYmFzaXMuCgpEZWNvZGVycyBub3Qg
dXNpbmcgYW55IHVucXVhbnRpemUgZnVuY3Rpb25zIChILjI2MSwgTVBFRy0xLzIpCmFzIHdlbGwg
YXMgZGVjb2RlcnMgdGhhdCBvbmx5IGNhbGwgZmZfbXB2X3JlY29uc3RydWN0X21iKCkKdGhyb3Vn
aCBlcnJvciByZXNpbGllbmNlIChSVjMwLzQwLCB0aGUgVkMtMSBmYW1pbHkpIGRvbid0IGhhdmUK
dGhlIHJlbWFpbmluZyBwb2ludGVycyBzZXQgYXQgYWxsLgoKU2lnbmVkLW9mZi1ieTogQW5kcmVh
cyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogbGliYXZj
b2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5jICAgICAgICB8ICA1ICsrLS0KIGxpYmF2Y29kZWMvYXJt
L21wZWd2aWRlb19hcm0uaCAgICAgICAgfCAgNCArLS0KIGxpYmF2Y29kZWMvYXJtL21wZWd2aWRl
b19hcm12NXRlLmMgICAgfCAgMiArLQogbGliYXZjb2RlYy9oMjYzZGVjLmMgICAgICAgICAgICAg
ICAgICB8IDE1ICsrKystLS0tLS0tCiBsaWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlw
cy5jIHwgIDkgKysrKy0tLQogbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmMgICAgICAgICAgICB8
IDEzICsrKysrKysrKwogbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmggICAgICAgICAgICB8ICA1
ICsrKysKIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMgICAgICAgICAgICAgICAgfCAgMiAtLQogbGli
YXZjb2RlYy9tcGVndmlkZW8uaCAgICAgICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQogbGliYXZj
b2RlYy9tcGVndmlkZW9fZW5jLmMgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrLS0t
LS0tLQogbGliYXZjb2RlYy9tcGVndmlkZW9fdW5xdWFudGl6ZS5jICAgICB8IDE1ICsrKysrKy0t
LS0tCiBsaWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmggICAgIHwgMzggKysrKysrKysr
KysrKysrKysrKysrKy0tLS0tCiBsaWJhdmNvZGVjL25lb24vbXBlZ3ZpZGVvLmMgICAgICAgICAg
IHwgIDMgKystCiBsaWJhdmNvZGVjL3BwYy9tcGVndmlkZW9fYWx0aXZlYy5jICAgIHwgIDcgKyst
LS0KIGxpYmF2Y29kZWMveDg2L21wZWd2aWRlby5jICAgICAgICAgICAgfCAgNSArKy0tCiAxNSBm
aWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5jIGIvbGliYXZjb2RlYy9hcm0vbXBl
Z3ZpZGVvX2FybS5jCmluZGV4IGUzMjQ1MWI1NTQuLmU1ZTQxOGI2YzQgMTAwNjQ0Ci0tLSBhL2xp
YmF2Y29kZWMvYXJtL21wZWd2aWRlb19hcm0uYworKysgYi9saWJhdmNvZGVjL2FybS9tcGVndmlk
ZW9fYXJtLmMKQEAgLTQ2LDEyICs0NiwxMyBAQCB2b2lkIGZmX2RjdF91bnF1YW50aXplX2gyNjNf
aW50ZXJfbmVvbihNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCiB2b2lkIGZmX2Rj
dF91bnF1YW50aXplX2gyNjNfaW50cmFfbmVvbihNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAq
YmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgaW50
IHFzY2FsZSk7CiAKLWF2X2NvbGQgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfYXJtKE1wZWdFbmND
b250ZXh0ICpzKQorYXZfY29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfYXJtKE1QVlVu
cXVhbnREU1BDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAgICBpbnQgY3B1X2ZsYWdzID0gYXZfZ2V0
X2NwdV9mbGFncygpOwogCiAgICAgaWYgKGhhdmVfYXJtdjV0ZShjcHVfZmxhZ3MpKQotICAgICAg
ICBmZl9tcHZfY29tbW9uX2luaXRfYXJtdjV0ZShzKTsKKyAgICAgICAgZmZfbXB2X3VucXVhbnRp
emVfaW5pdF9hcm12NXRlKHMpOwogCiAgICAgaWYgKGhhdmVfbmVvbihjcHVfZmxhZ3MpKSB7CiAg
ICAgICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50cmEgPSBmZl9kY3RfdW5xdWFudGl6ZV9o
MjYzX2ludHJhX25lb247CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJt
LmggYi9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmgKaW5kZXggNzA5YWU2YjI0Ny4uOTNk
YTdhNTY2NCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5oCisrKyBi
L2xpYmF2Y29kZWMvYXJtL21wZWd2aWRlb19hcm0uaApAQCAtMTksOCArMTksOCBAQAogI2lmbmRl
ZiBBVkNPREVDX0FSTV9NUEVHVklERU9fQVJNX0gKICNkZWZpbmUgQVZDT0RFQ19BUk1fTVBFR1ZJ
REVPX0FSTV9ICiAKLSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgorI2luY2x1ZGUg
ImxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKIAotdm9pZCBmZl9tcHZfY29tbW9u
X2luaXRfYXJtdjV0ZShNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX21wdl91bnF1YW50aXpl
X2luaXRfYXJtdjV0ZShNUFZVbnF1YW50RFNQQ29udGV4dCAqcyk7CiAKICNlbmRpZiAvKiBBVkNP
REVDX0FSTV9NUEVHVklERU9fQVJNX0ggKi8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXJtL21w
ZWd2aWRlb19hcm12NXRlLmMgYi9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtdjV0ZS5jCmlu
ZGV4IGUyMGJiNGM2NDUuLjI3MzdmNjg2NDMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYXJtL21w
ZWd2aWRlb19hcm12NXRlLmMKKysrIGIvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybXY1dGUu
YwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVy
X2FybXY1dGUoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgZmZfZGN0X3VucXVhbnRpemVfaDI2M19h
cm12NXRlKGJsb2NrLCBxbXVsLCBxYWRkLCBuQ29lZmZzICsgMSk7CiB9CiAKLWF2X2NvbGQgdm9p
ZCBmZl9tcHZfY29tbW9uX2luaXRfYXJtdjV0ZShNcGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQg
dm9pZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0X2FybXY1dGUoTVBWVW5xdWFudERTUENvbnRleHQg
KnMpCiB7CiAgICAgcy0+ZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSA9IGRjdF91bnF1YW50aXpl
X2gyNjNfaW50cmFfYXJtdjV0ZTsKICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyID0g
ZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9hcm12NXRlOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl
Yy9oMjYzZGVjLmMgYi9saWJhdmNvZGVjL2gyNjNkZWMuYwppbmRleCA4NDM0ZjZlN2NmLi44ZDAw
ZTViZjNkIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjNkZWMuYworKysgYi9saWJhdmNvZGVj
L2gyNjNkZWMuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIm1wZWd2aWRlby5oIgogI2lu
Y2x1ZGUgIm1wZWd2aWRlb2RhdGEuaCIKICNpbmNsdWRlICJtcGVndmlkZW9kZWMuaCIKKyNpbmNs
dWRlICJtcGVndmlkZW9fdW5xdWFudGl6ZS5oIgogI2luY2x1ZGUgIm1zbXBlZzRkZWMuaCIKICNp
bmNsdWRlICJ0aHJlYWQuaCIKICNpbmNsdWRlICJ3bXYyZGVjLmgiCkBAIC05MCw2ICs5MSw3IEBA
IHN0YXRpYyBlbnVtIEFWUGl4ZWxGb3JtYXQgaDI2M19nZXRfZm9ybWF0KEFWQ29kZWNDb250ZXh0
ICphdmN0eCkKIGF2X2NvbGQgaW50IGZmX2gyNjNfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg
KmF2Y3R4KQogewogICAgIE1wZWdFbmNDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKyAg
ICBNUFZVbnF1YW50RFNQQ29udGV4dCB1bnF1YW50X2RzcF9jdHg7CiAgICAgaW50IHJldDsKIAog
ICAgIHMtPm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOwpAQCAtMTA1LDEwICsxMDcsMTEgQEAg
YXZfY29sZCBpbnQgZmZfaDI2M19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAg
ICAgcy0+eV9kY19zY2FsZV90YWJsZSA9CiAgICAgcy0+Y19kY19zY2FsZV90YWJsZSA9IGZmX21w
ZWcxX2RjX3NjYWxlX3RhYmxlOwogCisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdCgmdW5xdWFu
dF9kc3BfY3R4LCBhdmN0eCwgMCk7CiAgICAgLy8gZGN0X3VucXVhbnRpemUgZGVmYXVsdHMgZm9y
IEguMjYzOwogICAgIC8vIHRoZXkgbWlnaHQgY2hhbmdlIG9uIGEgcGVyLWZyYW1lIGJhc2lzIGZv
ciBNUEVHLTQuCi0gICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSBzLT5kY3RfdW5xdWFudGl6
ZV9oMjYzX2ludHJhOwotICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ZGN0X3VucXVh
bnRpemVfaDI2M19pbnRlcjsKKyAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRyYSA9IHVucXVhbnRf
ZHNwX2N0eC5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhOworICAgIHMtPmRjdF91bnF1YW50aXpl
X2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXI7CiAKICAg
ICAvKiBzZWxlY3Qgc3ViIGNvZGVjICovCiAgICAgc3dpdGNoIChhdmN0eC0+Y29kZWMtPmlkKSB7
CkBAIC0xMTcsOSArMTIwLDYgQEAgYXZfY29sZCBpbnQgZmZfaDI2M19kZWNvZGVfaW5pdChBVkNv
ZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIGF2Y3R4LT5jaHJvbWFfc2FtcGxlX2xvY2F0aW9u
ID0gQVZDSFJPTUFfTE9DX0NFTlRFUjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RF
Q19JRF9NUEVHNDoKLSAgICAgICAgLy8gZGN0X3VucXVhbnRpemVfaW50ZXIgaXMgb25seSB1c2Vk
IHdpdGggTVBFRy0yIHF1YW50aXplcnMsCi0gICAgICAgIC8vIHNvIHdlIGNhbiBhbHJlYWR5IHNl
dCBkY3RfdW5xdWFudGl6ZV9pbnRlciBoZXJlIG9uY2UgYW5kIGZvciBhbGwuCi0gICAgICAgIHMt
PmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXI7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfTVNNUEVHNFYxOgogICAgICAgICBz
LT5oMjYzX3ByZWQgICAgICAgPSAxOwpAQCAtNTA4LDExICs1MDgsNiBAQCByZXRyeToKICAgICAg
ICAgICAgIGdvdG8gcmV0cnk7CiAgICAgICAgIGlmIChzLT5zdHVkaW9fcHJvZmlsZSAhPSAocy0+
aWRzcC5pZGN0ID09IE5VTEwpKQogICAgICAgICAgICAgZmZfbXB2X2lkY3RfaW5pdChzKTsKLSAg
ICAgICAgaWYgKHMtPm1wZWdfcXVhbnQpIHsKLSAgICAgICAgICAgIHMtPmRjdF91bnF1YW50aXpl
X2ludHJhID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRyYSA9IHMtPmRjdF91bnF1YW50aXpl
X2gyNjNfaW50cmE7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBBZnRlciBILjI2MyAmIE1Q
RUctNCBoZWFkZXIgZGVjb2RlIHdlIGhhdmUgdGhlIGhlaWdodCwgd2lkdGgsCmRpZmYgLS1naXQg
YS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlwcy5jIGIvbGliYXZjb2RlYy9taXBz
L21wZWd2aWRlb19pbml0X21pcHMuYwppbmRleCBhOWFjYWU5NGNlLi4wZGU4MjQ1NDYwIDEwMDY0
NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlwcy5jCisrKyBiL2xpYmF2
Y29kZWMvbWlwcy9tcGVndmlkZW9faW5pdF9taXBzLmMKQEAgLTI0LDcgKzI0LDggQEAKICNpbmNs
dWRlICJoMjYzZHNwX21pcHMuaCIKICNpbmNsdWRlICJtcGVndmlkZW9fbWlwcy5oIgogCi1hdl9j
b2xkIHZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0VuY0NvbnRleHQgKnMpCithdl9j
b2xkIHZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9taXBzKE1QVlVucXVhbnREU1BDb250ZXh0
ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkNvZGVjQ29u
dGV4dCAqYXZjdHgsIGludCBxX3NjYWxlX3R5cGUpCiB7CiAgICAgaW50IGNwdV9mbGFncyA9IGF2
X2dldF9jcHVfZmxhZ3MoKTsKIApAQCAtMzQsMTUgKzM1LDE1IEBAIGF2X2NvbGQgdm9pZCBmZl9t
cHZfY29tbW9uX2luaXRfbWlwcyhNcGVnRW5jQ29udGV4dCAqcykKICAgICAgICAgcy0+ZGN0X3Vu
cXVhbnRpemVfbXBlZzFfaW50cmEgPSBmZl9kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRyYV9tbWk7
CiAgICAgICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcxX2ludGVyID0gZmZfZGN0X3VucXVhbnRp
emVfbXBlZzFfaW50ZXJfbW1pOwogCi0gICAgICAgIGlmICghKHMtPmF2Y3R4LT5mbGFncyAmIEFW
X0NPREVDX0ZMQUdfQklURVhBQ1QpKQotICAgICAgICAgICAgaWYgKCFzLT5xX3NjYWxlX3R5cGUp
CisgICAgICAgIGlmICghKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKQor
ICAgICAgICAgICAgaWYgKCFxX3NjYWxlX3R5cGUpCiAgICAgICAgICAgICAgICAgcy0+ZGN0X3Vu
cXVhbnRpemVfbXBlZzJfaW50cmEgPSBmZl9kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9tbWk7
CiAgICAgfQogCiAgICAgaWYgKGhhdmVfbXNhKGNwdV9mbGFncykpIHsKICAgICAgICAgcy0+ZGN0
X3VucXVhbnRpemVfaDI2M19pbnRyYSA9IGZmX2RjdF91bnF1YW50aXplX2gyNjNfaW50cmFfbXNh
OwogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyID0gZmZfZGN0X3VucXVhbnRp
emVfaDI2M19pbnRlcl9tc2E7Ci0gICAgICAgIGlmICghcy0+cV9zY2FsZV90eXBlKQorICAgICAg
ICBpZiAoIXFfc2NhbGVfdHlwZSkKICAgICAgICAgICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcy
X2ludGVyID0gZmZfZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXJfbXNhOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZzR2aWRlb2RlYy5jIGIvbGliYXZjb2RlYy9tcGVnNHZp
ZGVvZGVjLmMKaW5kZXggMTM5YjZkNGIwOC4uODgwMzgwMWI2MyAxMDA2NDQKLS0tIGEvbGliYXZj
b2RlYy9tcGVnNHZpZGVvZGVjLmMKKysrIGIvbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmMKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJtcGVndmlkZW8uaCIKICNpbmNsdWRlICJtcGVndmlk
ZW9kYXRhLmgiCiAjaW5jbHVkZSAibXBlZ3ZpZGVvZGVjLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVv
X3VucXVhbnRpemUuaCIKICNpbmNsdWRlICJtcGVnNHZpZGVvLmgiCiAjaW5jbHVkZSAibXBlZzR2
aWRlb2RhdGEuaCIKICNpbmNsdWRlICJtcGVnNHZpZGVvZGVjLmgiCkBAIC0zMzkwLDYgKzMzOTEs
OSBAQCBzdGF0aWMgaW50IGRlY29kZV92b3BfaGVhZGVyKE1wZWc0RGVjQ29udGV4dCAqY3R4LCBH
ZXRCaXRDb250ZXh0ICpnYiwKICAgICAgICAgfQogICAgIH0KIAorICAgIHMtPmRjdF91bnF1YW50
aXplX2ludHJhID0gcy0+bXBlZ19xdWFudCA/IGN0eC0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50
cmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjdHgtPmRj
dF91bnF1YW50aXplX2gyNjNfaW50cmE7CisKIGVuZDoKICAgICAvKiBkZXRlY3QgYnVnZ3kgZW5j
b2RlcnMgd2hpY2ggZG9uJ3Qgc2V0IHRoZSBsb3dfZGVsYXkgZmxhZwogICAgICAqIChkaXZ4NC94
dmlkL29wZW5kaXZ4KS4gTm90ZSB3ZSBjYW5ub3QgZGV0ZWN0IGRpdng1IHdpdGhvdXQgQi1mcmFt
ZXMKQEAgLTM4NjIsNiArMzg2Niw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBkZWNvZGVfaW5pdChB
VkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNl
ID0gQVZfT05DRV9JTklUOwogICAgIE1wZWc0RGVjQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZf
ZGF0YTsKICAgICBNcGVnRW5jQ29udGV4dCAqcyA9ICZjdHgtPm07CisgICAgTVBWVW5xdWFudERT
UENvbnRleHQgdW5xdWFudF9kc3BfY3R4OwogICAgIGludCByZXQ7CiAKICAgICBjdHgtPmRpdnhf
dmVyc2lvbiA9CkBAIC0zODcyLDYgKzM4NzcsMTQgQEAgc3RhdGljIGF2X2NvbGQgaW50IGRlY29k
ZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBpZiAoKHJldCA9IGZmX2gyNjNfZGVj
b2RlX2luaXQoYXZjdHgpKSA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAKKyAgICBmZl9tcHZf
dW5xdWFudGl6ZV9pbml0KCZ1bnF1YW50X2RzcF9jdHgsIGF2Y3R4LCAwKTsKKworICAgIGN0eC0+
ZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSAgPSB1bnF1YW50X2RzcF9jdHguZGN0X3VucXVhbnRp
emVfaDI2M19pbnRyYTsKKyAgICBjdHgtPmRjdF91bnF1YW50aXplX21wZWcyX2ludHJhID0gdW5x
dWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX21wZWcyX2ludHJhOworICAgIC8vIGRjdF91bnF1
YW50aXplX2ludGVyIGlzIG9ubHkgdXNlZCB3aXRoIE1QRUctMiBxdWFudGl6ZXJzLAorICAgIC8v
IHNvIHdlIGNhbiBhbHJlYWR5IHNldCBkY3RfdW5xdWFudGl6ZV9pbnRlciBoZXJlIG9uY2UgYW5k
IGZvciBhbGwuCisgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50ZXIgPSB1bnF1YW50X2RzcF9jdHgu
ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXI7CisKICAgICBzLT5oMjYzX3ByZWQgPSAxOwogICAg
IHMtPmxvd19kZWxheSA9IDA7IC8qIGRlZmF1bHQsIG1pZ2h0IGJlIG92ZXJyaWRkZW4gaW4gdGhl
IHZvbCBoZWFkZXIgZHVyaW5nIGhlYWRlciBwYXJzaW5nICovCiAgICAgcy0+ZGVjb2RlX21iID0g
bXBlZzRfZGVjb2RlX21iOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmgg
Yi9saWJhdmNvZGVjL21wZWc0dmlkZW9kZWMuaAppbmRleCBiYjE0ZDI0Yzg4Li4zYTI1NGYyODM4
IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWc0dmlkZW9kZWMuaAorKysgYi9saWJhdmNvZGVj
L21wZWc0dmlkZW9kZWMuaApAQCAtODgsNiArODgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZzRE
ZWNDb250ZXh0IHsKIAogICAgIE1wZWc0VmlkZW9EU1BDb250ZXh0IG1kc3A7CiAKKyAgICB2b2lk
ICgqZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmEpKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2
Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfaDI2M19p
bnRyYSkoTXBlZ0VuY0NvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CisK
ICAgICBERUNMQVJFX0FMSUdORUQoOCwgaW50MzJfdCwgYmxvY2szMilbMTJdWzY0XTsKICAgICAv
LyAwID0gRENULCAxID0gRFBDTSB0b3AgdG8gYm90dG9tIHNjYW4sIC0xID0gRFBDTSBib3R0b20g
dG8gdG9wIHNjYW4KICAgICBpbnQgZHBjbV9kaXJlY3Rpb247CmRpZmYgLS1naXQgYS9saWJhdmNv
ZGVjL21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW8uYwppbmRleCA5YTQwOTM3YmJk
Li43OTRiMmQwZjY2IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlby5jCisrKyBiL2xp
YmF2Y29kZWMvbXBlZ3ZpZGVvLmMKQEAgLTExMiw4ICsxMTIsNiBAQCBhdl9jb2xkIHZvaWQgZmZf
bXB2X2lkY3RfaW5pdChNcGVnRW5jQ29udGV4dCAqcykKICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb24pOwogICAgIGZmX3Blcm11dGVfc2NhbnRhYmxlKHMt
PnBlcm11dGF0ZWRfaW50cmFfdl9zY2FudGFibGUsIGZmX2FsdGVybmF0ZV92ZXJ0aWNhbF9zY2Fu
LAogICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbik7Ci0K
LSAgICBmZl9tcHZfdW5xdWFudGl6ZV9pbml0KHMpOwogfQogCiBzdGF0aWMgYXZfY29sZCBpbnQg
aW5pdF9kdXBsaWNhdGVfY29udGV4dChNcGVnRW5jQ29udGV4dCAqcykKZGlmZiAtLWdpdCBhL2xp
YmF2Y29kZWMvbXBlZ3ZpZGVvLmggYi9saWJhdmNvZGVjL21wZWd2aWRlby5oCmluZGV4IDczNzkx
NjAxNTkuLjJkNjBjOWRkZjAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgKKysr
IGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaApAQCAtMzI2LDE4ICszMjYsNiBAQCB0eXBlZGVmIHN0
cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAjZGVmaW5lIFNMSUNFX0VORCAgICAgICAtMiAvLy88ZW5k
IG1hcmtlciBmb3VuZAogI2RlZmluZSBTTElDRV9OT0VORCAgICAgLTMgLy8vPG5vIGVuZCBtYXJr
ZXIgb3IgZXJyb3IgZm91bmQgYnV0IG1iIGNvdW50IGV4Y2VlZGVkCiAKLSAgICB2b2lkICgqZGN0
X3VucXVhbnRpemVfbXBlZzFfaW50cmEpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwg
aW50IHFzY2FsZSk7Ci0gICAgdm9pZCAoKmRjdF91bnF1YW50aXplX21wZWcxX2ludGVyKShzdHJ1
Y3QgTXBlZ0VuY0NvbnRleHQgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90
ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2NhbGUpOwotICAgIHZvaWQgKCpkY3Rf
dW5xdWFudGl6ZV9tcGVnMl9pbnRyYSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8sIGludCBuLCBp
bnQgcXNjYWxlKTsKLSAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXIpKHN0cnVj
dCBNcGVnRW5jQ29udGV4dCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
KmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7Ci0gICAgdm9pZCAoKmRjdF91
bnF1YW50aXplX2gyNjNfaW50cmEpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50
IHFzY2FsZSk7Ci0gICAgdm9pZCAoKmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXIpKHN0cnVjdCBN
cGVnRW5jQ29udGV4dCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJs
b2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CiAgICAgdm9pZCAoKmRjdF91bnF1
YW50aXplX2ludHJhKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMsIC8vIHVucXVhbnRpemVyIHRv
IHVzZSAoTVBFRy00IGNhbiB1c2UgYm90aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CiAgICAgdm9pZCAo
KmRjdF91bnF1YW50aXplX2ludGVyKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMsIC8vIHVucXVh
bnRpemVyIHRvIHVzZSAoTVBFRy00IGNhbiB1c2UgYm90aCkKZGlmZiAtLWdpdCBhL2xpYmF2Y29k
ZWMvbXBlZ3ZpZGVvX2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKaW5kZXggOTVk
Nzc0MTU1YS4uN2JlNDg1YmNhZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5j
LmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAgLTYwLDYgKzYwLDcgQEAKICNp
bmNsdWRlICJtanBlZ2VuY19jb21tb24uaCIKICNpbmNsdWRlICJtYXRob3BzLmgiCiAjaW5jbHVk
ZSAibXBlZ3V0aWxzLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKICNpbmNs
dWRlICJtanBlZ2VuYy5oIgogI2luY2x1ZGUgInNwZWVkaHFlbmMuaCIKICNpbmNsdWRlICJtc21w
ZWc0ZW5jLmgiCkBAIC0zMTAsNiArMzExLDI0IEBAIGF2X2NvbGQgdm9pZCBmZl9kY3RfZW5jb2Rl
X2luaXQoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKICAgICAgICAgcy0+ZGN0X3F1YW50aXplICA9
IGRjdF9xdWFudGl6ZV90cmVsbGlzX2M7CiB9CiAKK3N0YXRpYyBhdl9jb2xkIHZvaWQgaW5pdF91
bnF1YW50aXplKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgp
Cit7CisgICAgTVBWVW5xdWFudERTUENvbnRleHQgdW5xdWFudF9kc3BfY3R4OworCisgICAgZmZf
bXB2X3VucXVhbnRpemVfaW5pdCgmdW5xdWFudF9kc3BfY3R4LCBhdmN0eCwgcy0+cV9zY2FsZV90
eXBlKTsKKworICAgIGlmIChzLT5tcGVnX3F1YW50IHx8IHMtPmNvZGVjX2lkID09IEFWX0NPREVD
X0lEX01QRUcyVklERU8pIHsKKyAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSB1bnF1
YW50X2RzcF9jdHguZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7CisgICAgICAgIHMtPmRjdF91
bnF1YW50aXplX2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX21wZWcyX2lu
dGVyOworICAgIH0gZWxzZSBpZiAocy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5vdXRf
Zm9ybWF0ID09IEZNVF9IMjYxKSB7CisgICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludHJhID0g
dW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX2gyNjNfaW50cmE7CisgICAgICAgIHMtPmRj
dF91bnF1YW50aXplX2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX2gyNjNf
aW50ZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSB1
bnF1YW50X2RzcF9jdHguZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmE7CisgICAgICAgIHMtPmRj
dF91bnF1YW50aXplX2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX21wZWcx
X2ludGVyOworICAgIH0KK30KKwogc3RhdGljIGF2X2NvbGQgaW50IG1lX2NtcF9pbml0KE1QVk1h
aW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiB7CiAgICAgTVBW
RW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwpAQCAtMTAxMyw2ICsxMDMyLDcgQEAgYXZfY29s
ZCBpbnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgKiB0
byB0aGUgc2xpY2UgY29udGV4dHMsIHNvIHdlIGluaXRpYWxpemUgdmFyaW91cyBmaWVsZHMgb2Yg
aXQKICAgICAgKiBiZWZvcmUgY2FsbGluZyBmZl9tcHZfY29tbW9uX2luaXQoKS4gKi8KICAgICBm
Zl9tcHZfaWRjdF9pbml0KCZzLT5jKTsKKyAgICBpbml0X3VucXVhbnRpemUoJnMtPmMsIGF2Y3R4
KTsKICAgICBmZl9mZGN0ZHNwX2luaXQoJnMtPmZkc3AsIGF2Y3R4KTsKICAgICBmZl9tcGVndmlk
ZW9lbmNkc3BfaW5pdCgmcy0+bXB2ZW5jZHNwLCBhdmN0eCk7CiAgICAgZmZfcGl4YmxvY2tkc3Bf
aW5pdCgmcy0+cGRzcCwgYXZjdHgpOwpAQCAtMTAzMSwxNSArMTA1MSwxMSBAQCBhdl9jb2xkIGlu
dCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogCiAgICAgZmZfZGN0
X2VuY29kZV9pbml0KHMpOwogCi0gICAgaWYgKHMtPmMubXBlZ19xdWFudCB8fCBzLT5jLmNvZGVj
X2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8pIHsKLSAgICAgICAgcy0+Yy5kY3RfdW5xdWFu
dGl6ZV9pbnRyYSA9IHMtPmMuZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7Ci0gICAgICAgIHMt
PmMuZGN0X3VucXVhbnRpemVfaW50ZXIgPSBzLT5jLmRjdF91bnF1YW50aXplX21wZWcyX2ludGVy
OwotICAgIH0gZWxzZSBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0
X2Zvcm1hdCA9PSBGTVRfSDI2MSkgewotICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludHJh
ID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhOwotICAgICAgICBzLT5jLmRjdF91bnF1
YW50aXplX2ludGVyID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHMtPmMuZGN0X3VucXVhbnRpemVfaW50cmEgPSBzLT5jLmRjdF91bnF1YW50
aXplX21wZWcxX2ludHJhOwotICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+
Yy5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlcjsKKyAgICBpZiAocy0+Yy5zbGljZV9jb250ZXh0
X2NvdW50ID4gMSkgeworICAgICAgICBzLT5ydHBfbW9kZSA9IDE7CisKKyAgICAgICAgaWYgKGF2
Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCkKKyAgICAgICAgICAgIHMtPmMuaDI2
M19zbGljZV9zdHJ1Y3R1cmVkID0gMTsKICAgICB9CiAKICAgICBpZiAoQ09ORklHX0gyNjNfRU5D
T0RFUiAmJiBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gyNjMpIHsKZGlmZiAtLWdpdCBhL2xpYmF2
Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVh
bnRpemUuYwppbmRleCAxMmJhY2RmNDI0Li5mZTQ1ZjM1MGQ3IDEwMDY0NAotLS0gYS9saWJhdmNv
ZGVjL21wZWd2aWRlb191bnF1YW50aXplLmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fdW5x
dWFudGl6ZS5jCkBAIC0yNDYsMjggKzI0NiwyOSBAQCBzdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6
ZV9oMjYzX2ludGVyX2MoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgfQogfQogCi1hdl9jb2xkIHZv
aWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdChNcGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQgdm9p
ZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0KE1QVlVucXVhbnREU1BDb250ZXh0ICpzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBpbnQg
cV9zY2FsZV90eXBlKQogewogICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50cmEgID0gZGN0
X3VucXVhbnRpemVfaDI2M19pbnRyYV9jOwogICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50
ZXIgID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9jOwogICAgIHMtPmRjdF91bnF1YW50aXpl
X21wZWcxX2ludHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmFfYzsKICAgICBzLT5kY3Rf
dW5xdWFudGl6ZV9tcGVnMV9pbnRlciA9IGRjdF91bnF1YW50aXplX21wZWcxX2ludGVyX2M7CiAg
ICAgcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmEgPSBkY3RfdW5xdWFudGl6ZV9tcGVnMl9p
bnRyYV9jOwotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNU
KQorICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUKQogICAgICAg
ICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYSA9IGRjdF91bnF1YW50aXplX21wZWcyX2lu
dHJhX2JpdGV4YWN0OwogICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcyX2ludGVyID0gZGN0X3Vu
cXVhbnRpemVfbXBlZzJfaW50ZXJfYzsKIAogI2lmIEhBVkVfSU5UUklOU0lDU19ORU9OCi0gICAg
ZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7CisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9u
ZW9uKHMsIGF2Y3R4KTsKICNlbmRpZgogCiAjaWYgQVJDSF9BUk0KLSAgICBmZl9tcHZfY29tbW9u
X2luaXRfYXJtKHMpOworICAgIGZmX21wdl91bnF1YW50aXplX2luaXRfYXJtKHMsIGF2Y3R4KTsK
ICNlbGlmIEFSQ0hfUFBDCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X3BwYyhzKTsKKyAgICBmZl9t
cHZfdW5xdWFudGl6ZV9pbml0X3BwYyhzLCBhdmN0eCk7CiAjZWxpZiBBUkNIX1g4NgotICAgIGZm
X21wdl9jb21tb25faW5pdF94ODYocyk7CisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdF94ODYo
cywgYXZjdHgpOwogI2VsaWYgQVJDSF9NSVBTCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMo
cyk7CisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9taXBzKHMuIGF2Y3R4LCBxX3NjYWxlX3R5
cGUpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50
aXplLmggYi9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmgKaW5kZXggMWU3NTkwNTYx
Yy4uY2ZhMzQ5Y2NjZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fdW5xdWFudGl6
ZS5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaApAQCAtMjUsMTMgKzI1
LDM5IEBACiAjaWZuZGVmIEFWQ09ERUNfTVBFR1ZJREVPX1VOUVVBTlRJWkVfSAogI2RlZmluZSBB
VkNPREVDX01QRUdWSURFT19VTlFVQU5USVpFX0gKIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKK3R5cGVkZWYgc3RydWN0IEFWQ29kZWNDb250ZXh0IEFWQ29k
ZWNDb250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgTXBlZ0VuY0NvbnRleHQ7
CiAKLXZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lk
IGZmX21wdl9jb21tb25faW5pdF9hcm0oTXBlZ0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZf
Y29tbW9uX2luaXRfbmVvbihNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lkIGZmX21wdl9jb21tb25f
aW5pdF9wcGMoTXBlZ0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2
KE1wZWdFbmNDb250ZXh0ICpzKTsKLXZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0Vu
Y0NvbnRleHQgKnMpOwordHlwZWRlZiBzdHJ1Y3QgTVBWVW5xdWFudERTUENvbnRleHQgeworICAg
IHZvaWQgKCpkY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRyYSkoc3RydWN0IE1wZWdFbmNDb250ZXh0
ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2
Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfbXBlZzFf
aW50ZXIpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CisgICAg
dm9pZCAoKmRjdF91bnF1YW50aXplX21wZWcyX2ludHJhKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg
KnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYq
LywgaW50IG4sIGludCBxc2NhbGUpOworICAgIHZvaWQgKCpkY3RfdW5xdWFudGl6ZV9tcGVnMl9p
bnRlcikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2
b2lkICgqZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8s
IGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfaDI2M19pbnRl
cikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKK30gTVBWVW5x
dWFudERTUENvbnRleHQ7CisKKyNpZiAhQVJDSF9NSVBTCisjZGVmaW5lIGZmX21wdl91bnF1YW50
aXplX2luaXQocywgYXZjdHgsIHFfc2NhbGVfdHlwZSkgZmZfbXB2X3VucXVhbnRpemVfaW5pdChz
LCBhdmN0eCkKKyNlbmRpZgorCit2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXQoTVBWVW5xdWFu
dERTUENvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRl
eHQgKmF2Y3R4LCBpbnQgcV9zY2FsZV90eXBlKTsKK3ZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5p
dF9hcm0oTVBWVW5xdWFudERTUENvbnRleHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cit2
b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfbmVvbihNUFZVbnF1YW50RFNQQ29udGV4dCAqcywg
QVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKK3ZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9wcGMo
TVBWVW5xdWFudERTUENvbnRleHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cit2b2lkIGZm
X21wdl91bnF1YW50aXplX2luaXRfeDg2KE1QVlVucXVhbnREU1BDb250ZXh0ICpzLCBBVkNvZGVj
Q29udGV4dCAqYXZjdHgpOwordm9pZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0X21pcHMoTVBWVW5x
dWFudERTUENvbnRleHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBxX3NjYWxlX3R5cGUpOwogCiAjZW5kaWYgLyogQVZDT0RF
Q19NUEVHVklERU9fVU5RVUFOVElaRV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL25lb24v
bXBlZ3ZpZGVvLmMgYi9saWJhdmNvZGVjL25lb24vbXBlZ3ZpZGVvLmMKaW5kZXggYThiMmEwNjA2
ZC4uMjRjZjhmZTliMiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9uZW9uL21wZWd2aWRlby5jCisr
KyBiL2xpYmF2Y29kZWMvbmVvbi9tcGVndmlkZW8uYwpAQCAtMTI1LDcgKzEyNSw4IEBAIHN0YXRp
YyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50cmFfbmVvbihNcGVnRW5jQ29udGV4dCAqcywg
aW50MTZfdCAqYmxvY2ssCiB9CiAKIAotYXZfY29sZCB2b2lkIGZmX21wdl9jb21tb25faW5pdF9u
ZW9uKE1wZWdFbmNDb250ZXh0ICpzKQorYXZfY29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2lu
aXRfbmVvbihNUFZVbnF1YW50RFNQQ29udGV4dCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogewogICAgIGludCBjcHVf
ZmxhZ3MgPSBhdl9nZXRfY3B1X2ZsYWdzKCk7CiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcHBj
L21wZWd2aWRlb19hbHRpdmVjLmMgYi9saWJhdmNvZGVjL3BwYy9tcGVndmlkZW9fYWx0aXZlYy5j
CmluZGV4IGMzNjFjYTc4NTcuLmYyODAxZmRkNTAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvcHBj
L21wZWd2aWRlb19hbHRpdmVjLmMKKysrIGIvbGliYXZjb2RlYy9wcGMvbXBlZ3ZpZGVvX2FsdGl2
ZWMuYwpAQCAtMTE3LDE0ICsxMTcsMTUgQEAgc3RhdGljIHZvaWQgZGN0X3VucXVhbnRpemVfaDI2
M19hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICpzLAogCiAjZW5kaWYgLyogSEFWRV9BTFRJVkVDICov
CiAKLWF2X2NvbGQgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfcHBjKE1wZWdFbmNDb250ZXh0ICpz
KQorYXZfY29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfcHBjKE1QVlVucXVhbnREU1BD
b250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWQ29k
ZWNDb250ZXh0ICphdmN0eCkKIHsKICNpZiBIQVZFX0FMVElWRUMKICAgICBpZiAoIVBQQ19BTFRJ
VkVDKGF2X2dldF9jcHVfZmxhZ3MoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgocy0+
YXZjdHgtPmRjdF9hbGdvID09IEZGX0RDVF9BVVRPKSB8fAotICAgICAgICAocy0+YXZjdHgtPmRj
dF9hbGdvID09IEZGX0RDVF9BTFRJVkVDKSkgeworICAgIGlmICgoYXZjdHgtPmRjdF9hbGdvID09
IEZGX0RDVF9BVVRPKSB8fAorICAgICAgICAoYXZjdHgtPmRjdF9hbGdvID09IEZGX0RDVF9BTFRJ
VkVDKSkgewogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhID0gZGN0X3VucXVh
bnRpemVfaDI2M19hbHRpdmVjOwogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVy
ID0gZGN0X3VucXVhbnRpemVfaDI2M19hbHRpdmVjOwogICAgIH0KZGlmZiAtLWdpdCBhL2xpYmF2
Y29kZWMveDg2L21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvLmMKaW5kZXgg
MTFhNWVlNDc0Yi4uMmQwMjZhZmM0MSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy94ODYvbXBlZ3Zp
ZGVvLmMKKysrIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvLmMKQEAgLTQ1MCw3ICs0NTAsOCBA
QCBfX2FzbV9fIHZvbGF0aWxlKAogCiAjZW5kaWYgLyogSEFWRV9NTVhfSU5MSU5FICovCiAKLWF2
X2NvbGQgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2KE1wZWdFbmNDb250ZXh0ICpzKQorYXZf
Y29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfeDg2KE1QVlVucXVhbnREU1BDb250ZXh0
ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWQ29kZWNDb250
ZXh0ICphdmN0eCkKIHsKICNpZiBIQVZFX01NWF9JTkxJTkUKICAgICBpbnQgY3B1X2ZsYWdzID0g
YXZfZ2V0X2NwdV9mbGFncygpOwpAQCAtNDYwLDcgKzQ2MSw3IEBAIGF2X2NvbGQgdm9pZCBmZl9t
cHZfY29tbW9uX2luaXRfeDg2KE1wZWdFbmNDb250ZXh0ICpzKQogICAgICAgICBzLT5kY3RfdW5x
dWFudGl6ZV9oMjYzX2ludGVyID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9tbXg7CiAgICAg
ICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcxX2ludHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFf
aW50cmFfbW14OwogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlciA9IGRjdF91
bnF1YW50aXplX21wZWcxX2ludGVyX21teDsKLSAgICAgICAgaWYgKCEocy0+YXZjdHgtPmZsYWdz
ICYgQVZfQ09ERUNfRkxBR19CSVRFWEFDVCkpCisgICAgICAgIGlmICghKGF2Y3R4LT5mbGFncyAm
IEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKQogICAgICAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVf
bXBlZzJfaW50cmEgPSBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9tbXg7CiAgICAgICAgIHMt
PmRjdF91bnF1YW50aXplX21wZWcyX2ludGVyID0gZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXJf
bW14OwogICAgIH0KLS0gCjIuNDUuMgoK

--------------9QiYbQBBvMxpoUafndAf0vI8
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

--------------9QiYbQBBvMxpoUafndAf0vI8--