From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4A369481A8 for ; Sun, 12 Nov 2023 10:37:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EEBA368CC91; Sun, 12 Nov 2023 12:36:21 +0200 (EET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2037.outbound.protection.outlook.com [40.92.52.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1F86468CC4C for ; Sun, 12 Nov 2023 12:36:13 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q7mE0Uf3wFnBZRpGoIme28O+fEBOINhVzI69wLtW1SiJNFE47YSwJGfctdO4FT8HumG8PaFv9AWgZWf6cXwRNN6BYv4CMmnxCXNQFrZ91BTTGgScxG5NfV0F3wsdu0W5/DMpTdOq2dyc8hOCKoXNfLxY9bVtXXDv7KH8nqwfeH3tSN3ibIG8B1Jd6olx+Zdih3pDkhsiOymulJjvz7H3dVFf/gSvHsnt3Hji4qhFL74/GzjPwoTJDoXq8tNPzfneEOypISRY7BGhGHRPLlwli0IRI5fBkQawok8kskJVGBxxHdjNzsU2EXD5SS/IRJ/66i1L42mD7RmFrGJakuFK/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z2QVz+Az87lnprzgxEGkkzbufzrAJK07fEKsezbMkUw=; b=kEoQnqXqaaZ/QeEROJD4WmAGi+DnOJa11qG9nhi04L/LITdFkMdSAlthrk2korI9lvN5NVTgq9cpIXU1tVapUSF5RKoeUBJ8oEYOHTJCwmj91wsMXS+XKP8tOzWaxn/ftpSXA61wbhIZSSXTgbcyMkf0DeMImLX9/P6UlQYMY6a5QeI6bInQK2ietDxmeblMZ659EyFoQJps7GXNXTUSI2gC2jP5nN0vztQa4Fa+utNlX/XZOPlO4EVnLsd8+rJgQMip85I+ok+rHjHTYJBaOc7E93GrNXfjpnu+hj/mY2cx7PXeBVX0XTT7eg8H6gmuTvsyd086zaVDDSO3VB2WyA== 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=z2QVz+Az87lnprzgxEGkkzbufzrAJK07fEKsezbMkUw=; b=QfimG5K+uS4Rce4BmYv1/eGQIRMVO/hol7WM75ch2/6keiCI3H5tQaGQwufYDTZ8uDXg2YejDDqhroCmxIINcAYex0quljtDKwdQ9p4nTiKfo3wHlEQgxAJ7RdMqS8URXUwalUvCSDwPmGZA2tNsJ0CLlzmPe0smbXt5iRz/9cRguHAvWN8v1UtJoDKRblizhLquGV4M0YPiELEOnCYykrnOOT66VgtIUYKXLRrcPyNNofGV5I6n32MYsm9C5TLgTe7VvvV+wx4HJex8aFUZtW5SlpIFUFfIpqWUKepZC1BU6O0lxdn6YR91dlC8vmHJdqhP3tiAJ8tPiSF4muf5xw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYSPR06MB6768.apcprd06.prod.outlook.com (2603:1096:400:475::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Sun, 12 Nov 2023 10:35:56 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::80b3:be24:949c:e49f]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::80b3:be24:949c:e49f%4]) with mapi id 15.20.6954.028; Sun, 12 Nov 2023 10:35:56 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 12 Nov 2023 18:35:16 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231112103526.11245-1-nuomi2021@gmail.com> References: <20231112103526.11245-1-nuomi2021@gmail.com> X-TMN: [m4VwshQZKbFf18EbTIaLEppaorxL92a5] X-ClientProxiedBy: TYWP286CA0030.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:262::20) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20231112103526.11245-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYSPR06MB6768:EE_ X-MS-Office365-Filtering-Correlation-Id: bc6ed160-287e-489f-f504-08dbe36b2759 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: U6L5D7Ziq7H2MJwAA0u4rkm2aI+oFbVtI5M9THpNSe3SvGwl9Z63PRRqVFHp1AxYJwLBVjkX8BF3XnM1jhalPyWrJCvvZ0AA9OUpDgF6mAifh8RJRD8MfxohDu3YQKihp7R3gVQ338U331Bd30SxKqg9rtvHS9YiGojz0X60FaE2tqsQzMl+SUgvk3K2orGVcX9V4VMlVUWqtH8Bfcrku5cXcZl2pRSbF2q+eoN1wFp0pxSvtCX5zSa2H916jqVdShdSzSrMV8J95otlByRCfBWhB0+4LNtmh/8lNZqK/TvuDL2DJfpeXqVWpodjsaj1RwliXDfsUhidP0WnqUZjx5lt8+8ze0mM2og0hdVSs6gW7UznWxMTJ0N7Uqi7a4ywm3GES0gXL2U0pvz42Siql5NtifOgxoTphk/0ulyxPtU41NSocj2dFDiYfR9Dcf4/XbeZbuf+QdmbKjpywgzNtYaJ8U4TKOWzAQNgRG1vOeRQ6UNenYR6eAw6QA1U3lb0NDAHNhNbfCDtcGCHFx4KrW8XI7SOkBSA3OAOwfY1+LWz6+rROnqut421PErprKBwKXYh3dAeSVG2U0Fn+XDLviSULnGW74XsAI8kvTZW4nSb6g/mBNckBilZZ3EW48Bc X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c3JvQ1cwbkM3L1pwM3VRb0pOR25qOG53bGlrNHNPNGw3N1JSNFdYcC9kZ2NV?= =?utf-8?B?S2d0d3c5cS9WUHk2OW8wcXFiZnlnYWV0aXgxUUtFUVA0VFExdDlxRWVDWlZv?= =?utf-8?B?bUVvMFJReUZxTU1pbS9TQm9YRThKSmticEJWOUJ5OXVONUFNaUxRLzZnbDZG?= =?utf-8?B?Zi92MlJpY21UejR1aWZpcXZFNzNKNWNDM1JtUnZXekZVcDdMQmVQWkdFYVZr?= =?utf-8?B?MC9WTk1rK1M0SWVSOHk0ZkJMYjZxSGFPRUsyTXFQUHRVa0JOejRpejZEK21J?= =?utf-8?B?Vk5yUTBZcUljNWtVVnBZUVBhS2p6VXI5YW5oclkrOXRIRHVibWVTbStaY3RZ?= =?utf-8?B?ZWt3ci93bmlLYXlEOWoya3ZWR0x2czhDWlB2NHppcjhoY2ZsLzRXWnloWnhG?= =?utf-8?B?VGRIaTcxb3FaaDdKVlliWHFVR1VGV00xUk9CQmpJanN6dXlWRXVXODNRczFv?= =?utf-8?B?bUVmbktKeEdseWFCZEJvWTdBbHpZVWxjcFBqalk0MXNiSDUyU2t2bTNDTkhW?= =?utf-8?B?Lzd6dm1ERHN6Yk0yTFI3NGtXN1M1eS9STUszdk5tUzJXQzVUWFlBTG53TWRX?= =?utf-8?B?MTNDbjJmMmJ4Wk4rNjhLc0pOMGpNTFVueml5NTk4bEtPcE9WZEhqZEtvbjVy?= =?utf-8?B?ZzVINEVEVG9SaG0vblV4eWo1cGVoTiswYm9qY0lpZ0FOUHdZWW0rZVFHT3BE?= =?utf-8?B?bGFOM0FhQ1paakxZckQ3bzJTK0ZKdEEySDdUU1JFU3REYkhpQ3lyUW1YdkJy?= =?utf-8?B?QkpmQnVyZFF5WjZDMmNKV0kvRVNxcVVyeVBJa2QyTER5eUIwU3BYSnByWW0y?= =?utf-8?B?VGFiRm1aWDFxYTR0WXBmOUpBNFM4U0w1OWtYRllwSGRqbWJGd1IvZFJ4WGRJ?= =?utf-8?B?NjY0YzFPT3dBU2NkRnQ3cWpCN0N2MGlWWlkvQXVWMzNuWnFXZHhKNCsrQ1Fj?= =?utf-8?B?UnJqdU5KR3hrUzJjOGhsVDVHY2pjaG9ITUZLTVBBNlR2Ry9ZZjhSSnY4TWxv?= =?utf-8?B?Z3VGUXRNRExCc1lNZjM5WC80ZnhEakVPUnBKNU5qajJiUjRSUUlKeExkWXdh?= =?utf-8?B?a0kraEd0RzFLNEx6UEVXWDdSU2dUNXRSNmpMZUc4WVB3WDdOSUQySGxHRGND?= =?utf-8?B?WkNQeTU0YkEwUW8zUDl3MHJBUk10NXJHb3MrU0lzdGxVSVF4OU8xK0ZWY2g3?= =?utf-8?B?M09JOStZU09ScytXbkRXUXhvMXk1WkErKzZ3MStkOFI5SWU2Q3hqWHFjYzN6?= =?utf-8?B?OEtmN2lsWnFrVnN4WlV0R1hQbklzNTkvSktLSkI1VGZEUXBmYytrMno3amdn?= =?utf-8?B?N0N6RVI1Z1huZmtNSTBYU0hwc0RhZ0w1S1FUTk1kcVRCeWkwNHYrSHV1alFo?= =?utf-8?B?c3lYNFNGa0duMmlYbmZ2VFlseXBSaVM3eWtzYWx0R2pvbDdaMlJsMG85dHZP?= =?utf-8?B?ak1oMHJkUmxQQ3huc1V6emtxdkY5KzFySzRYUHpxVlN5UWVoT0ppckgxaTl6?= =?utf-8?B?NFd0dm5LcStTZmxiM1V2UDMrTVFxZE1BcGd6UzUvUjJiWDRMYm9Kb3BMTEZ4?= =?utf-8?B?cC9nK0JpQ0JES2V0Wm1TS25SNWNRY3BVTzhYV2dtNU56WDhtMWorTllYejZy?= =?utf-8?B?dE8yTUhweXRQaHQ0VGdKYnNFenJ4QStINW5wSkhGN1FqUmI5VGdseHBtVDMx?= =?utf-8?Q?VWL4C1k4ToL8qOqX73Z9?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc6ed160-287e-489f-f504-08dbe36b2759 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2023 10:35:56.7665 (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: TYSPR06MB6768 Subject: [FFmpeg-devel] [PATCH v5 04/14] vvcdec: add cabac decoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nuo Mi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: YWRkIENvbnRleHQtYmFzZWQgQWRhcHRpdmUgQmluYXJ5IEFyaXRobWV0aWMgQ29kaW5nIChDQUJB QykgZGVjb2RlcgotLS0KIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgIHwgICAgMiArCiBsaWJh dmNvZGVjL3Z2Yy92dmNfY2FiYWMuYyB8IDI0ODQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaCB8ICAxMjYgKysKIGxpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuYyAgIHwgICAzMiArCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmggICB8 ICA0NjMgKysrKysrKwogbGliYXZjb2RlYy92dmMvdnZjZGVjLmggICAgfCAgICA3ICsKIDYgZmls ZXMgY2hhbmdlZCwgMzExNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZj b2RlYy92dmMvdnZjX2NhYmFjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92 dmNfY2FiYWMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaAoKZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlIGIvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKaW5kZXgg YjJiMTg3YWM2Zi4uNmMwM2JhMTlhYyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy92dmMvTWFrZWZp bGUKKysrIGIvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKQEAgLTIsNSArMiw3IEBAIGNsZWFuOjoK IAkkKFJNKSAkKENMRUFOU1VGRklYRVM6JT1saWJhdmNvZGVjL3Z2Yy8lKQogCiBPQkpTLSQoQ09O RklHX1ZWQ19ERUNPREVSKSAgICAgICAgICArPSAgdnZjL3Z2Y2RlYy5vICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfY2FiYWMubyAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZj X2N0dS5vICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdnZjL3Z2Y19kYXRhLm8gICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZ2Yy92dmNfcHMubyAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvdnZjL3Z2Y19jYWJhYy5jIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzI3NWY0NGM0ZAotLS0gL2Rldi9udWxs CisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCkBAIC0wLDAgKzEsMjQ4NCBAQAorLyoK KyAqIFZWQyBDQUJBQyBkZWNvZGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIxIE51byBNaQor ICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworI2luY2x1ZGUgImxpYmF2Y29k ZWMvY2FiYWNfZnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJ2dmNfY2FiYWMuaCIKKyNpbmNsdWRl ICJ2dmNfY3R1LmgiCisjaW5jbHVkZSAidnZjX2RhdGEuaCIKKworI2RlZmluZSBDQUJBQ19NQVhf QklOIDMxCisKKyNkZWZpbmUgQ05VIDM1CisKK2VudW0gU3ludGF4RWxlbWVudCB7CisgICAgQUxG X0NUQl9GTEFHICAgICAgICAgICAgICAgICAgICA9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMCwKKyAgICBBTEZfVVNFX0FQU19GTEFHICAgICAgICAgICAgICAgID0gQUxGX0NUQl9G TEFHICAgICAgICAgICAgICAgICAgKyA5LAorICAgIEFMRl9DVEJfQ0NfQ0JfSURDLAorICAgIEFM Rl9DVEJfQ0NfQ1JfSURDICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0NDX0NCX0lEQyAgICAgICAg ICAgICArIDMsCisgICAgQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAgICA9IEFMRl9DVEJf Q0NfQ1JfSURDICAgICAgICAgICAgICsgMywKKyAgICBTQU9fTUVSR0VfRkxBRyAgICAgICAgICAg ICAgICAgID0gQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAgKyAyLAorICAgIFNBT19UWVBF X0lEWCwKKyAgICBTUExJVF9DVV9GTEFHLAorICAgIFNQTElUX1FUX0ZMQUcgICAgICAgICAgICAg ICAgICAgPSBTUExJVF9DVV9GTEFHICAgICAgICAgICAgICAgICArIDksCisgICAgTVRUX1NQTElU X0NVX1ZFUlRJQ0FMX0ZMQUcgICAgICA9IFNQTElUX1FUX0ZMQUcgICAgICAgICAgICAgICAgICsg NiwKKyAgICBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICAgID0gTVRUX1NQTElUX0NVX1ZF UlRJQ0FMX0ZMQUcgICAgKyA1LAorICAgIE5PTl9JTlRFUl9GTEFHICAgICAgICAgICAgICAgICAg PSBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICArIDQsCisgICAgQ1VfU0tJUF9GTEFHICAg ICAgICAgICAgICAgICAgICA9IE5PTl9JTlRFUl9GTEFHICAgICAgICAgICAgICAgICsgMiwKKyAg ICBQUkVEX01PREVfSUJDX0ZMQUcgICAgICAgICAgICAgID0gQ1VfU0tJUF9GTEFHICAgICAgICAg ICAgICAgICAgKyAzLAorICAgIFBSRURfTU9ERV9GTEFHICAgICAgICAgICAgICAgICAgPSBQUkVE X01PREVfSUJDX0ZMQUcgICAgICAgICAgICArIDMsCisgICAgUFJFRF9NT0RFX1BMVF9GTEFHICAg ICAgICAgICAgICA9IFBSRURfTU9ERV9GTEFHICAgICAgICAgICAgICAgICsgMiwKKyAgICBDVV9B Q1RfRU5BQkxFRF9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFfRkxBRywKKyAgICBJTlRSQV9C RFBDTV9MVU1BX0RJUl9GTEFHLAorICAgIElOVFJBX01JUF9GTEFHLAorICAgIElOVFJBX0xVTUFf UkVGX0lEWCAgICAgICAgICAgICAgPSBJTlRSQV9NSVBfRkxBRyAgICAgICAgICAgICAgICArIDQs CisgICAgSU5UUkFfU1VCUEFSVElUSU9OU19NT0RFX0ZMQUcgICA9IElOVFJBX0xVTUFfUkVGX0lE WCAgICAgICAgICAgICsgMiwKKyAgICBJTlRSQV9TVUJQQVJUSVRJT05TX1NQTElUX0ZMQUcsCisg ICAgSU5UUkFfTFVNQV9NUE1fRkxBRywKKyAgICBJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRywK KyAgICBJTlRSQV9CRFBDTV9DSFJPTUFfRkxBRyAgICAgICAgID0gSU5UUkFfTFVNQV9OT1RfUExB TkFSX0ZMQUcgICAgKyAyLAorICAgIElOVFJBX0JEUENNX0NIUk9NQV9ESVJfRkxBRywKKyAgICBD Q0xNX01PREVfRkxBRywKKyAgICBDQ0xNX01PREVfSURYLAorICAgIElOVFJBX0NIUk9NQV9QUkVE X01PREUsCisgICAgR0VORVJBTF9NRVJHRV9GTEFHLAorICAgIElOVEVSX1BSRURfSURDLAorICAg IElOVEVSX0FGRklORV9GTEFHICAgICAgICAgICAgICAgPSBJTlRFUl9QUkVEX0lEQyAgICAgICAg ICAgICAgICArIDYsCisgICAgQ1VfQUZGSU5FX1RZUEVfRkxBRyAgICAgICAgICAgICA9IElOVEVS X0FGRklORV9GTEFHICAgICAgICAgICAgICsgMywKKyAgICBTWU1fTVZEX0ZMQUcsCisgICAgUkVG X0lEWF9MWCwKKyAgICBNVlBfTFhfRkxBRyAgICAgICAgICAgICAgICAgICAgID0gUkVGX0lEWF9M WCAgICAgICAgICAgICAgICAgICAgKyAyLAorICAgIEFNVlJfRkxBRywKKyAgICBBTVZSX1BSRUNJ U0lPTl9JRFggICAgICAgICAgICAgID0gQU1WUl9GTEFHICAgICAgICAgICAgICAgICAgICAgKyAy LAorICAgIEJDV19JRFggICAgICAgICAgICAgICAgICAgICAgICAgPSBBTVZSX1BSRUNJU0lPTl9J RFggICAgICAgICAgICArIDMsCisgICAgQ1VfQ09ERURfRkxBRywKKyAgICBDVV9TQlRfRkxBRywK KyAgICBDVV9TQlRfUVVBRF9GTEFHICAgICAgICAgICAgICAgID0gQ1VfU0JUX0ZMQUcgICAgICAg ICAgICAgICAgICAgKyAyLAorICAgIENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcsCisgICAgQ1VfU0JU X1BPU19GTEFHICAgICAgICAgICAgICAgICA9IENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcgICAgICAg ICsgMywKKyAgICBMRk5TVF9JRFgsCisgICAgTVRTX0lEWCAgICAgICAgICAgICAgICAgICAgICAg ICA9IExGTlNUX0lEWCAgICAgICAgICAgICAgICAgICAgICsgMywKKyAgICBDT1BZX0FCT1ZFX1BB TEVUVEVfSU5ESUNFU19GTEFHID0gTVRTX0lEWCAgICAgICAgICAgICAgICAgICAgICAgKyA0LAor ICAgIFBBTEVUVEVfVFJBTlNQT1NFX0ZMQUcsCisgICAgUlVOX0NPUFlfRkxBRywKKyAgICBSRUdV TEFSX01FUkdFX0ZMQUcgICAgICAgICAgICAgID0gUlVOX0NPUFlfRkxBRyAgICAgICAgICAgICAg ICAgKyA4LAorICAgIE1NVkRfTUVSR0VfRkxBRyAgICAgICAgICAgICAgICAgPSBSRUdVTEFSX01F UkdFX0ZMQUcgICAgICAgICAgICArIDIsCisgICAgTU1WRF9DQU5EX0ZMQUcsCisgICAgTU1WRF9E SVNUQU5DRV9JRFgsCisgICAgQ0lJUF9GTEFHLAorICAgIE1FUkdFX1NVQkJMT0NLX0ZMQUcsCisg ICAgTUVSR0VfU1VCQkxPQ0tfSURYICAgICAgICAgICAgICA9IE1FUkdFX1NVQkJMT0NLX0ZMQUcg ICAgICAgICAgICsgMywKKyAgICBNRVJHRV9JRFgsCisgICAgQUJTX01WRF9HUkVBVEVSMF9GTEFH LAorICAgIEFCU19NVkRfR1JFQVRFUjFfRkxBRywKKyAgICBUVV9ZX0NPREVEX0ZMQUcsCisgICAg VFVfQ0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICA9IFRVX1lfQ09ERURfRkxBRyAgICAgICAg ICAgICAgICsgNCwKKyAgICBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAgICAgID0gVFVfQ0Jf Q09ERURfRkxBRyAgICAgICAgICAgICAgKyAyLAorICAgIENVX1FQX0RFTFRBX0FCUyAgICAgICAg ICAgICAgICAgPSBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAgICArIDMsCisgICAgQ1VfQ0hS T01BX1FQX09GRlNFVF9GTEFHICAgICAgICA9IENVX1FQX0RFTFRBX0FCUyAgICAgICAgICAgICAg ICsgMiwKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0lEWCwKKyAgICBUUkFOU0ZPUk1fU0tJUF9G TEFHLAorICAgIFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICAgPSBUUkFOU0ZPUk1fU0tJ UF9GTEFHICAgICAgICAgICArIDIsCisgICAgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVggICAgICAg ICA9IFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICsgMywKKyAgICBMQVNUX1NJR19DT0VG Rl9ZX1BSRUZJWCAgICAgICAgID0gTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVggICAgICAgKzIzLAor ICAgIFNCX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICAgPSBMQVNUX1NJR19DT0VGRl9ZX1BS RUZJWCAgICAgICArMjMsCisgICAgU0lHX0NPRUZGX0ZMQUcgICAgICAgICAgICAgICAgICA9IFNC X0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICsgNywKKyAgICBQQVJfTEVWRUxfRkxBRyAgICAg ICAgICAgICAgICAgID0gU0lHX0NPRUZGX0ZMQUcgICAgICAgICAgICAgICAgKzYzLAorICAgIEFC U19MRVZFTF9HVFhfRkxBRyAgICAgICAgICAgICAgPSBQQVJfTEVWRUxfRkxBRyAgICAgICAgICAg ICAgICArMzMsCisgICAgQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAgICA9IEFCU19MRVZF TF9HVFhfRkxBRyAgICAgICAgICAgICs3MiwKKyAgICBTWU5UQVhfRUxFTUVOVF9MQVNUICAgICAg ICAgICAgID0gQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAgKyA2LAorfTsKKworc3RhdGlj IGNvbnN0IHVpbnQ4X3QgaW5pdF92YWx1ZXNbNF1bU1lOVEFYX0VMRU1FTlRfTEFTVF0gPSB7Cisg ICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICA2MiwgIDM5LCAgMzksICA1NCwg IDM5LCAgMzksICAzMSwgIDM5LCAgMzksCisgICAgICAgIC8vYWxmX3VzZV9hcHNfZmxhZworICAg ICAgICA0NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAgICAxOCwgIDMwLCAg MzEsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgMTgsICAzMCwgIDMxLAor ICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgMTEsICAxMSwKKyAgICAg ICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxhZworICAgICAgICA2 MCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQor ICAgICAgICAxMywKKyAgICAgICAgLy9zcGxpdF9jdV9mbGFnCisgICAgICAgIDE5LCAgMjgsICAz OCwgIDI3LCAgMjksICAzOCwgIDIwLCAgMzAsICAzMSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFn CisgICAgICAgIDI3LCAgIDYsICAxNSwgIDI1LCAgMTksICAzNywKKyAgICAgICAgLy9tdHRfc3Bs aXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICA0MywgIDQyLCAgMjksICAyNywgIDQ0LAorICAg ICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxhZworICAgICAgICAzNiwgIDQ1LCAgMzYsICA0 NSwKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAg Ly9jdV9za2lwX2ZsYWcKKyAgICAgICAgMCwgIDI2LCAgMjgsCisgICAgICAgIC8vcHJlZF9tb2Rl X2liY19mbGFnCisgICAgICAgIDE3LCAgNDIsICAzNiwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxh ZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9wcmVkX21vZGVfcGx0X2ZsYWcKKyAgICAg ICAgMjUsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICA1MiwKKyAgICAg ICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgMTksCisgICAgICAgIC8vaW50cmFf YmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9pbnRyYV9taXBfZmxh ZworICAgICAgICAzMywgIDQ5LCAgNTAsICAyNSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3JlZl9p ZHgKKyAgICAgICAgMjUsICA2MCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVf ZmxhZworICAgICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0X2Zs YWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAgICA0 NSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAxMywgIDI4 LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAxLAorICAgICAg ICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAyNywKKyAgICAgICAgLy9j Y2xtX21vZGVfZmxhZworICAgICAgICA1OSwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4CisgICAg ICAgIDI3LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgMzQsCisg ICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDI2LAorICAgICAgICAvL2ludGVy X3ByZWRfaWRjCisgICAgICAgIENOVSwgQ05VLCBDTlUsIENOVSwgQ05VLCBDTlUsCisgICAgICAg IC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9j dV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcK KyAgICAgICAgQ05VLAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9pZHhfbDEKKyAgICAg ICAgQ05VLCBDTlUsCisgICAgICAgIC8vbXZwX2wwX2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAg ICAgIDQyLAorICAgICAgICAvL2FtdnJfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAg Ly9hbXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgMzUsICAzNCwgIDM1LAorICAgICAgICAvL2Jj d19pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAgIDYs CisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8vY3Vf c2J0X3F1YWRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3Vfc2J0X2hvcml6b250YWxf ZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAorICAgICAgICAvL2N1X3NidF9wb3NfZmxhZwor ICAgICAgICBDTlUsCisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgIDI4LCAgNTIsICA0MiwK KyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDI5LCAgIDAsICAyOCwgICAwLAorICAgICAgICAv L2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8v cGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICA0MiwKKyAgICAgICAgLy9ydW5fY29weV9m bGFnCisgICAgICAgIDUwLCAgMzcsICA0NSwgIDMwLCAgNDYsICA0NSwgIDM4LCAgNDYsCisgICAg ICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL21t dmRfbWVyZ2VfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcKKyAg ICAgICAgQ05VLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgIENOVSwKKyAg ICAgICAgLy9jaWlwX2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX3N1YmJsb2Nr X2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19p ZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX2lkeCwgbWVyZ2VfZ3BtX2lkeDAsIGFu ZCBtZXJnZV9ncG1faWR4MQorICAgICAgICAzNCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIw X2ZsYWcKKyAgICAgICAgMTQsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMV9mbGFnCisgICAg ICAgIDQ1LAorICAgICAgICAvL3R1X3lfY29kZWRfZmxhZworICAgICAgICAxNSwgIDEyLCAgIDUs ICAgNywKKyAgICAgICAgLy90dV9jYl9jb2RlZF9mbGFnCisgICAgICAgIDEyLCAgMjEsCisgICAg ICAgIC8vdHVfY3JfY29kZWRfZmxhZworICAgICAgICAzMywgIDI4LCAgMzYsCisgICAgICAgIC8v Y3VfcXBfZGVsdGFfYWJzCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9x cF9vZmZzZXRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNl dF9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL3RyYW5zZm9ybV9za2lwX2ZsYWcKKyAgICAg ICAgMjUsICAgOSwKKyAgICAgICAgLy90dV9qb2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKyAgICAg ICAgMTIsICAyMSwgIDM1LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3hfcHJlZml4CisgICAg ICAgIDEzLCAgIDUsICAgNCwgIDIxLCAgMTQsICAgNCwgICA2LCAgMTQsICAyMSwgIDExLCAgMTQs ICAgNywgIDE0LCAgIDUsICAxMSwgIDIxLAorICAgICAgICAzMCwgIDIyLCAgMTMsICA0MiwgIDEy LCAgIDQsICAgMywKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl95X3ByZWZpeAorICAgICAgICAx MywgICA1LCAgIDQsICAgNiwgIDEzLCAgMTEsICAxNCwgICA2LCAgIDUsICAgMywgIDE0LCAgMjIs ICAgNiwgICA0LCAgIDMsICAgNiwKKyAgICAgICAgMjIsICAyOSwgIDIwLCAgMzQsICAxMiwgICA0 LCAgIDMsCisgICAgICAgIC8vc2JfY29kZWRfZmxhZworICAgICAgICAxOCwgIDMxLCAgMjUsICAx NSwgIDE4LCAgMjAsICAzOCwKKyAgICAgICAgLy9zaWdfY29lZmZfZmxhZworICAgICAgICAyNSwg IDE5LCAgMjgsICAxNCwgIDI1LCAgMjAsICAyOSwgIDMwLCAgMTksICAzNywgIDMwLCAgMzgsICAx MSwgIDM4LCAgNDYsICA1NCwKKyAgICAgICAgMjcsICAzOSwgIDM5LCAgMzksICA0NCwgIDM5LCAg MzksICAzOSwgIDE4LCAgMzksICAzOSwgIDM5LCAgMjcsICAzOSwgIDM5LCAgMzksCisgICAgICAg ICAwLCAgMzksICAzOSwgIDM5LCAgMjUsICAyNywgIDI4LCAgMzcsICAzNCwgIDUzLCAgNTMsICA0 NiwgIDE5LCAgNDYsICAzOCwgIDM5LAorICAgICAgICA1MiwgIDM5LCAgMzksICAzOSwgIDExLCAg MzksICAzOSwgIDM5LCAgMTksICAzOSwgIDM5LCAgMzksICAyNSwgIDI4LCAgMzgsCisgICAgICAg IC8vcGFyX2xldmVsX2ZsYWcKKyAgICAgICAgMzMsICAyNSwgIDE4LCAgMjYsICAzNCwgIDI3LCAg MjUsICAyNiwgIDE5LCAgNDIsICAzNSwgIDMzLCAgMTksICAyNywgIDM1LCAgMzUsCisgICAgICAg IDM0LCAgNDIsICAyMCwgIDQzLCAgMjAsICAzMywgIDI1LCAgMjYsICA0MiwgIDE5LCAgMjcsICAy NiwgIDUwLCAgMzUsICAyMCwgIDQzLAorICAgICAgICAxMSwKKyAgICAgICAgLy9hYnNfbGV2ZWxf Z3R4X2ZsYWcKKyAgICAgICAgMjUsICAyNSwgIDExLCAgMjcsICAyMCwgIDIxLCAgMzMsICAxMiwg IDI4LCAgMjEsICAyMiwgIDM0LCAgMjgsICAyOSwgIDI5LCAgMzAsCisgICAgICAgIDM2LCAgMjks ICA0NSwgIDMwLCAgMjMsICA0MCwgIDMzLCAgMjcsICAyOCwgIDIxLCAgMzcsICAzNiwgIDM3LCAg NDUsICAzOCwgIDQ2LAorICAgICAgICAyNSwgICAxLCAgNDAsICAyNSwgIDMzLCAgMTEsICAxNywg IDI1LCAgMjUsICAxOCwgICA0LCAgMTcsICAzMywgIDI2LCAgMTksICAxMywKKyAgICAgICAgMzMs ICAxOSwgIDIwLCAgMjgsICAyMiwgIDQwLCAgIDksICAyNSwgIDE4LCAgMjYsICAzNSwgIDI1LCAg MjYsICAzNSwgIDI4LCAgMzcsCisgICAgICAgIDExLCAgIDUsICAgNSwgIDE0LCAgMTAsICAgMywg ICAzLCAgIDMsCisgICAgICAgIC8vY29lZmZfc2lnbl9mbGFnCisgICAgICAgIDEyLCAgMTcsICA0 NiwgIDI4LCAgMjUsICA0NiwKKyAgICB9LAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcK KyAgICAgICAgMTMsICAyMywgIDQ2LCAgIDQsICA2MSwgIDU0LCAgMTksICA0NiwgIDU0LAorICAg ICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vYWxmX2N0Yl9j Y19jYl9pZGMKKyAgICAgICAgMTgsICAyMSwgIDM4LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3Jf aWRjCisgICAgICAgIDE4LCAgMjEsICAzOCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRf aWR4CisgICAgICAgIDIwLCAgMTIsCisgICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQg c2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAgNjAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1 bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgNSwKKyAgICAgICAgLy9zcGxpdF9j dV9mbGFnCisgICAgICAgIDExLCAgMzUsICA1MywgIDEyLCAgIDYsICAzMCwgIDEzLCAgMTUsICAz MSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDIwLCAgMTQsICAyMywgIDE4LCAg MTksICAgNiwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICA0 MywgIDM1LCAgMzcsICAzNCwgIDUyLAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxh ZworICAgICAgICA0MywgIDM3LCAgMjEsICAyMiwKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZwor ICAgICAgICAyNSwgIDEyLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICA1NywgIDU5 LCAgNDUsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAwLCAgNTcsICA0 NCwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0MCwgIDM1LAorICAgICAgICAv L3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAwLAorICAgICAgICAvL2N1X2FjdF9lbmFibGVk X2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vaW50cmFfYmRwY21fbHVtYV9mbGFnCisgICAg ICAgIDQwLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZGlyX2ZsYWcKKyAgICAgICAgMzYs CisgICAgICAgIC8vaW50cmFfbWlwX2ZsYWcKKyAgICAgICAgNDEsICA1NywgIDU4LCAgMjYsCisg ICAgICAgIC8vaW50cmFfbHVtYV9yZWZfaWR4CisgICAgICAgIDI1LCAgNTgsCisgICAgICAgIC8v aW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcKKyAgICAgICAgMzMsCisgICAgICAgIC8vaW50 cmFfc3VicGFydGl0aW9uc19zcGxpdF9mbGFnCisgICAgICAgIDM2LAorICAgICAgICAvL2ludHJh X2x1bWFfbXBtX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vaW50cmFfbHVtYV9ub3RfcGxh bmFyX2ZsYWcKKyAgICAgICAgMTIsICAyMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFf ZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcK KyAgICAgICAgMTMsCisgICAgICAgIC8vY2NsbV9tb2RlX2ZsYWcKKyAgICAgICAgMzQsCisgICAg ICAgIC8vY2NsbV9tb2RlX2lkeAorICAgICAgICAyNywKKyAgICAgICAgLy9pbnRyYV9jaHJvbWFf cHJlZF9tb2RlCisgICAgICAgIDI1LAorICAgICAgICAvL2dlbmVyYWxfbWVyZ2VfZmxhZworICAg ICAgICAyMSwKKyAgICAgICAgLy9pbnRlcl9wcmVkX2lkYworICAgICAgICAgNywgICA2LCAgIDUs ICAxMiwgICA0LCAgNDAsCisgICAgICAgIC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgMTIs ICAxMywgIDE0LAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgMzUsCisg ICAgICAgIC8vc3ltX212ZF9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL3JlZl9pZHhfbDAg YW5kIHJlZl9pZHhfbDEKKyAgICAgICAgMjAsICAzNSwKKyAgICAgICAgLy9tdnBfbDBfZmxhZyBh bmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgMzQsCisgICAgICAgIC8vYW12cl9mbGFnCisgICAgICAg IDU5LCAgNTgsCisgICAgICAgIC8vYW12cl9wcmVjaXNpb25faWR4CisgICAgICAgIDYwLCAgNDgs ICA2MCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICA0LAorICAgICAgICAvL2N1X2NvZGVk X2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgNTYsICA1 NywKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAvL2N1 X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgMjAsICA0MywgIDEyLAorICAgICAgICAvL2N1 X3NidF9wb3NfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAg MzcsICA0NSwgIDI3LAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgNDUsICA0MCwgIDI3LCAg IDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAgICA1 OSwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgIDQyLAorICAgICAg ICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTEsICAzMCwgIDMwLCAgMzgsICAyMywgIDM4LCAg NTMsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgMzgsICAgNywK KyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vbW12ZF9j YW5kX2ZsYWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAg ICAgNjAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgIDU3LAorICAgICAgICAvL21lcmdl X3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgNDgsICA1NywgIDQ0LAorICAgICAgICAvL21lcmdlX3N1 YmJsb2NrX2lkeAorICAgICAgICAgNSwKKyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9p ZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgMjAsCisgICAgICAgIC8vYWJzX212ZF9n cmVhdGVyMF9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxh ZworICAgICAgICA0MywKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgMjMsICAg NSwgIDIwLCAgIDcsCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDI4 LAorICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICAyOSwgIDQ1LAorICAg ICAgICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9j aHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9x cF9vZmZzZXRfaWR4CisgICAgICAgIENOVSwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFn CisgICAgICAgIDI1LCAgIDksCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFn CisgICAgICAgIDI3LCAgMzYsICA0NSwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZp eAorICAgICAgICAgNiwgIDEzLCAgMTIsICAgNiwgICA2LCAgMTIsICAxNCwgIDE0LCAgMTMsICAx MiwgIDI5LCAgIDcsICAgNiwgIDEzLCAgMzYsICAyOCwKKyAgICAgICAgMTQsICAxMywgICA1LCAg MjYsICAxMiwgICA0LCAgMTgsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAg ICAgICAgIDUsICAgNSwgIDEyLCAgIDYsICAgNiwgICA0LCAgIDYsICAxNCwgICA1LCAgMTIsICAx NCwgICA3LCAgMTMsICAgNSwgIDEzLCAgMjEsCisgICAgICAgIDE0LCAgMjAsICAxMiwgIDM0LCAg MTEsICAgNCwgIDE4LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICAzMCwg IDI1LCAgNDUsICAxOCwgIDEyLCAgMjksCisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAg ICAgMTcsICA0MSwgIDQyLCAgMjksICAyNSwgIDQ5LCAgNDMsICAzNywgIDMzLCAgNTgsICA1MSwg IDMwLCAgMTksICAzOCwgIDM4LCAgNDYsCisgICAgICAgIDM0LCAgNTQsICA1NCwgIDM5LCAgIDYs ICAzOSwgIDM5LCAgMzksICAxOSwgIDM5LCAgNTQsICAzOSwgIDE5LCAgMzksICAzOSwgIDM5LAor ICAgICAgICA1NiwgIDM5LCAgMzksICAzOSwgIDE3LCAgMzQsICAzNSwgIDIxLCAgNDEsICA1OSwg IDYwLCAgMzgsICAzNSwgIDQ1LCAgNTMsICA1NCwKKyAgICAgICAgNDQsICAzOSwgIDM5LCAgMzks ICAzNCwgIDM4LCAgNjIsICAzOSwgIDI2LCAgMzksICAzOSwgIDM5LCAgNDAsICAzNSwgIDQ0LAor ICAgICAgICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgIDE4LCAgMTcsICAzMywgIDE4LCAgMjYs ICA0MiwgIDI1LCAgMzMsICAyNiwgIDQyLCAgMjcsICAyNSwgIDM0LCAgNDIsICA0MiwgIDM1LAor ICAgICAgICAyNiwgIDI3LCAgNDIsICAyMCwgIDIwLCAgMjUsICAyNSwgIDI2LCAgMTEsICAxOSwg IDI3LCAgMzMsICA0MiwgIDM1LCAgMzUsICA0MywKKyAgICAgICAgIDMsCisgICAgICAgIC8vYWJz X2xldmVsX2d0eF9mbGFnCisgICAgICAgICAwLCAgMTcsICAyNiwgIDE5LCAgMzUsICAyMSwgIDI1 LCAgMzQsICAyMCwgIDI4LCAgMjksICAzMywgIDI3LCAgMjgsICAyOSwgIDIyLAorICAgICAgICAz NCwgIDI4LCAgNDQsICAzNywgIDM4LCAgIDAsICAyNSwgIDE5LCAgMjAsICAxMywgIDE0LCAgNTcs ICA0NCwgIDMwLCAgMzAsICAyMywKKyAgICAgICAgMTcsICAgMCwgICAxLCAgMTcsICAyNSwgIDE4 LCAgIDAsICAgOSwgIDI1LCAgMzMsICAzNCwgICA5LCAgMjUsICAxOCwgIDI2LCAgMjAsCisgICAg ICAgIDI1LCAgMTgsICAxOSwgIDI3LCAgMjksICAxNywgICA5LCAgMjUsICAxMCwgIDE4LCAgIDQs ICAxNywgIDMzLCAgMTksICAyMCwgIDI5LAorICAgICAgICAxOCwgIDExLCAgIDQsICAyOCwgICAy LCAgMTAsICAgMywgICAzLAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAgNSwg IDEwLCAgNTMsICA0MywgIDI1LCAgNDYsCisgICAgfSwKKyAgICB7CisgICAgICAgIC8vYWxmX2N0 Yl9mbGFnCisgICAgICAgIDMzLCAgNTIsICA0NiwgIDI1LCAgNjEsICA1NCwgIDI1LCAgNjEsICA1 NCwKKyAgICAgICAgLy9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2Fs Zl9jdGJfY2NfY2JfaWRjCisgICAgICAgIDI1LCAgMzUsICAzOCwKKyAgICAgICAgLy9hbGZfY3Ri X2NjX2NyX2lkYworICAgICAgICAyNSwgIDI4LCAgMzgsCisgICAgICAgIC8vYWxmX2N0Yl9maWx0 ZXJfYWx0X2lkeAorICAgICAgICAxMSwgIDI2LAorICAgICAgICAvL3Nhb19tZXJnZV9sZWZ0X2Zs YWcgYW5kIHNhb19tZXJnZV91cF9mbGFnCisgICAgICAgIDIsCisgICAgICAgIC8vc2FvX3R5cGVf aWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgMiwKKyAgICAgICAgLy9z cGxpdF9jdV9mbGFnCisgICAgICAgIDE4LCAgMjcsICAxNSwgIDE4LCAgMjgsICA0NSwgIDI2LCAg IDcsICAyMywKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDI2LCAgMzYsICAzOCwg IDE4LCAgMzQsICAyMSwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAg ICAgICA0MywgIDQyLCAgMzcsICA0MiwgIDQ0LAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5h cnlfZmxhZworICAgICAgICAyOCwgIDI5LCAgMjgsICAyOSwKKyAgICAgICAgLy9ub25faW50ZXJf ZmxhZworICAgICAgICAyNSwgIDIwLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICA1 NywgIDYwLCAgNDYsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAwLCAg NDMsICA0NSwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0MCwgIDM1LAorICAg ICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAxNywKKyAgICAgICAgLy9jdV9hY3Rf ZW5hYmxlZF9mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZmxh ZworICAgICAgICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisgICAg ICAgIDIxLAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgIDU2LCAgNTcsICA1MCwg IDI2LAorICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAyNSwgIDU5LAorICAg ICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgIDMzLAorICAgICAg ICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICA0MywKKyAgICAgICAg Ly9pbnRyYV9sdW1hX21wbV9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2ludHJhX2x1bWFf bm90X3BsYW5hcl9mbGFnCisgICAgICAgIDEzLCAgIDYsCisgICAgICAgIC8vaW50cmFfYmRwY21f Y2hyb21hX2ZsYWcKKyAgICAgICAgIDAsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Rp cl9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAgIDI2 LAorICAgICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcsCisgICAgICAgIC8vaW50cmFf Y2hyb21hX3ByZWRfbW9kZQorICAgICAgICAyNSwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdlX2Zs YWcKKyAgICAgICAgIDYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgMTQsICAx MywgICA1LCAgIDQsICAgMywgIDQwLAorICAgICAgICAvL2ludGVyX2FmZmluZV9mbGFnCisgICAg ICAgIDE5LCAgMTMsICAgNiwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAg IDM1LAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9yZWZf aWR4X2wwIGFuZCByZWZfaWR4X2wxCisgICAgICAgICA1LCAgMzUsCisgICAgICAgIC8vbXZwX2ww X2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAgICAgIDM0LAorICAgICAgICAvL2FtdnJfZmxhZwor ICAgICAgICA1OSwgIDUwLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAgICAz OCwgIDI2LCAgNjAsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAgICAgNSwKKyAgICAgICAgLy9j dV9jb2RlZF9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2N1X3NidF9mbGFnCisgICAgICAg IDQxLCAgNTcsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRfZmxhZworICAgICAgICA0MiwKKyAgICAg ICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIDM1LCAgNTEsICAyNywKKyAgICAg ICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAgMjgsCisgICAgICAgIC8vbGZuc3RfaWR4Cisg ICAgICAgIDUyLCAgMzcsICAyNywKKyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDQ1LCAgMjUs ICAyNywgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAg ICAgICAgNTAsCisgICAgICAgIC8vcGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICAzNSwK KyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAgIDU4LCAgNDUsICA0NSwgIDMwLCAgMzgs ICA0NSwgIDM4LCAgNDYsCisgICAgICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgIDQ2 LCAgMTUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisgICAgICAgIDI1LAorICAgICAgICAv L21tdmRfY2FuZF9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4 CisgICAgICAgIDU5LAorICAgICAgICAvL2NpaXBfZmxhZworICAgICAgICA1NywKKyAgICAgICAg Ly9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAgIDI1LCAgNTgsICA0NSwKKyAgICAgICAgLy9t ZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDQsCisgICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJn ZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisgICAgICAgIDE4LAorICAgICAgICAvL2Fi c19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICA1MSwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0 ZXIxX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vdHVfeV9jb2RlZF9mbGFnCisgICAgICAg IDE1LCAgIDYsICAgNSwgIDE0LAorICAgICAgICAvL3R1X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAg MjUsICAzNywKKyAgICAgICAgLy90dV9jcl9jb2RlZF9mbGFnCisgICAgICAgICA5LCAgMzYsICA0 NSwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAg IC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9jdV9j aHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vdHJhbnNmb3JtX3Nr aXBfZmxhZworICAgICAgICAyNSwgIDE3LAorICAgICAgICAvL3R1X2pvaW50X2NiY3JfcmVzaWR1 YWxfZmxhZworICAgICAgICA0MiwgIDQzLCAgNTIsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZf eF9wcmVmaXgKKyAgICAgICAgIDYsICAgNiwgIDEyLCAgMTQsICAgNiwgICA0LCAgMTQsICAgNywg ICA2LCAgIDQsICAyOSwgICA3LCAgIDYsICAgNiwgIDEyLCAgMjgsCisgICAgICAgICA3LCAgMTMs ICAxMywgIDM1LCAgMTksICAgNSwgICA0LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3lfcHJl Zml4CisgICAgICAgICA1LCAgIDUsICAyMCwgIDEzLCAgMTMsICAxOSwgIDIxLCAgIDYsICAxMiwg IDEyLCAgMTQsICAxNCwgICA1LCAgIDQsICAxMiwgIDEzLAorICAgICAgICAgNywgIDEzLCAgMTIs ICA0MSwgIDExLCAgIDUsICAyNywKKyAgICAgICAgLy9zYl9jb2RlZF9mbGFnCisgICAgICAgIDI1 LCAgNDUsICAyNSwgIDE0LCAgMTgsICAzNSwgIDQ1LAorICAgICAgICAvL3NpZ19jb2VmZl9mbGFn CisgICAgICAgIDE3LCAgNDEsICA0OSwgIDM2LCAgIDEsICA0OSwgIDUwLCAgMzcsICA0OCwgIDUx LCAgNTgsICA0NSwgIDI2LCAgNDUsICA1MywgIDQ2LAorICAgICAgICA0OSwgIDU0LCAgNjEsICAz OSwgIDM1LCAgMzksICAzOSwgIDM5LCAgMTksICA1NCwgIDM5LCAgMzksICA1MCwgIDM5LCAgMzks ICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAgMzksICAgOSwgIDQ5LCAgNTAsICAzNiwgIDQ4 LCAgNTksICA1OSwgIDM4LCAgMzQsICA0NSwgIDM4LCAgMzEsCisgICAgICAgIDU4LCAgMzksICAz OSwgIDM5LCAgMzQsICAzOCwgIDU0LCAgMzksICA0MSwgIDM5LCAgMzksICAzOSwgIDI1LCAgNTAs ICAzNywKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAgICAgICAzMywgIDQwLCAgMjUsICA0 MSwgIDI2LCAgNDIsICAyNSwgIDMzLCAgMjYsICAzNCwgIDI3LCAgMjUsICA0MSwgIDQyLCAgNDIs ICAzNSwKKyAgICAgICAgMzMsICAyNywgIDM1LCAgNDIsICA0MywgIDMzLCAgMjUsICAyNiwgIDM0 LCAgMTksICAyNywgIDMzLCAgNDIsICA0MywgIDM1LCAgNDMsCisgICAgICAgIDExLAorICAgICAg ICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAgMCwgICAwLCAgMzMsICAzNCwgIDM1LCAg MjEsICAyNSwgIDM0LCAgMzUsICAyOCwgIDI5LCAgNDAsICA0MiwgIDQzLCAgMjksICAzMCwKKyAg ICAgICAgNDksICAzNiwgIDM3LCAgNDUsICAzOCwgICAwLCAgNDAsICAzNCwgIDQzLCAgMzYsICAz NywgIDU3LCAgNTIsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIDI1LCAgIDAsICAgMCwgIDE3LCAg MjUsICAyNiwgICAwLCAgIDksICAyNSwgIDMzLCAgMTksICAgMCwgIDI1LCAgMzMsICAyNiwgIDIw LAorICAgICAgICAyNSwgIDMzLCAgMjcsICAzNSwgIDIyLCAgMjUsICAgMSwgIDI1LCAgMzMsICAy NiwgIDEyLCAgMjUsICAzMywgIDI3LCAgMjgsICAzNywKKyAgICAgICAgMTksICAxMSwgICA0LCAg IDYsICAgMywgICA0LCAgIDQsICAgNSwKKyAgICAgICAgLy9jb2VmZl9zaWduX2ZsYWcKKyAgICAg ICAgMzUsICAyNSwgIDQ2LCAgMjgsICAzMywgIDM4LAorICAgIH0sCisgICAgLy9zaGlmdElkeAor ICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAgIDAsICAgMCwgICAwLCAgIDQs ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLAorICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAg ICAgICAgIDAsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMKKyAgICAgICAgIDQsICAgMSwg ICA0LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAgICAgICA0LCAgIDEsICAgNCwK KyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAgICAgICAwLCAgIDAsCisgICAg ICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAg IDAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEK KyAgICAgICAgIDQsCisgICAgICAgIC8vc3BsaXRfY3VfZmxhZworICAgICAgICAxMiwgIDEzLCAg IDgsICAgOCwgIDEzLCAgMTIsICAgNSwgICA5LCAgIDksCisgICAgICAgIC8vc3BsaXRfcXRfZmxh ZworICAgICAgICAgMCwgICA4LCAgIDgsICAxMiwgIDEyLCAgIDgsCisgICAgICAgIC8vbXR0X3Nw bGl0X2N1X3ZlcnRpY2FsX2ZsYWcKKyAgICAgICAgIDksICAgOCwgICA5LCAgIDgsICAgNSwKKyAg ICAgICAgLy9tdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcKKyAgICAgICAgMTIsICAxMywgIDEyLCAg MTMsCisgICAgICAgIC8vbm9uX2ludGVyX2ZsYWcKKyAgICAgICAgIDEsICAgMCwKKyAgICAgICAg Ly9jdV9za2lwX2ZsYWcKKyAgICAgICAgIDUsICAgNCwgICA4LAorICAgICAgICAvL3ByZWRfbW9k ZV9pYmNfZmxhZworICAgICAgICAgMSwgICA1LCAgIDgsCisgICAgICAgIC8vcHJlZF9tb2RlX2Zs YWcKKyAgICAgICAgIDUsICAgMSwKKyAgICAgICAgLy9wcmVkX21vZGVfcGx0X2ZsYWcKKyAgICAg ICAgIDEsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICAgMSwKKyAgICAg ICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFf YmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9pbnRyYV9taXBfZmxh ZworICAgICAgICAgOSwgIDEwLCAgIDksICAgNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3JlZl9p ZHgKKyAgICAgICAgIDUsICAgOCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVf ZmxhZworICAgICAgICAgOSwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0X2Zs YWcKKyAgICAgICAgIDIsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAgICAg NiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAgMSwgICA1 LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAxLAorICAgICAg ICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9j Y2xtX21vZGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4CisgICAg ICAgICA5LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgIDUsCisg ICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgICA0LAorICAgICAgICAvL2ludGVy X3ByZWRfaWRjCisgICAgICAgICAwLCAgIDAsICAgMSwgICA0LCAgIDQsICAgMCwKKyAgICAgICAg Ly9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICAgNCwgICAwLCAgIDAsCisgICAgICAgIC8vY3Vf YWZmaW5lX3R5cGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcKKyAg ICAgICAgIDUsCisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAgICAg MCwgICA0LAorICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBfbDFfZmxhZworICAgICAgICAx MiwKKyAgICAgICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgIDAsICAgMCwKKyAgICAgICAgLy9hbXZy X3ByZWNpc2lvbl9pZHgKKyAgICAgICAgIDQsICAgNSwgIDAsCisgICAgICAgIC8vYmN3X2lkeAor ICAgICAgICAgMSwKKyAgICAgICAgLy9jdV9jb2RlZF9mbGFnCisgICAgICAgICA0LAorICAgICAg ICAvL2N1X3NidF9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRf ZmxhZworICAgICAgICAxMCwKKyAgICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAg ICAgICA4LCAgIDQsICAgMSwKKyAgICAgICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAgMTMs CisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgICA5LCAgIDksICAxMCwKKyAgICAgICAgLy9t dHNfaWR4CisgICAgICAgICA4LCAgIDAsICAgOSwgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVf cGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgIDksCisgICAgICAgIC8vcGFsZXR0ZV90cmFu c3Bvc2VfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAg ICA5LCAgIDYsICAgOSwgIDEwLCAgIDUsICAgMCwgICA5LCAgIDUsCisgICAgICAgIC8vcmVndWxh cl9tZXJnZV9mbGFnCisgICAgICAgICA1LCAgIDUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFn CisgICAgICAgICA0LAorICAgICAgICAvL21tdmRfY2FuZF9mbGFnCisgICAgICAgIDEwLAorICAg ICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgICAwLAorICAgICAgICAvL2NpaXBfZmxh ZworICAgICAgICAgMSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAgICA0 LCAgIDQsICAgNCwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDAsCisg ICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisg ICAgICAgICA0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICAgOSwK KyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8v dHVfeV9jb2RlZF9mbGFnCisgICAgICAgICA1LCAgIDEsICAgOCwgICA5LAorICAgICAgICAvL3R1 X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsICAgMCwKKyAgICAgICAgLy90dV9jcl9jb2RlZF9m bGFnCisgICAgICAgICAyLCAgIDEsICAgMCwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAg ICAgICAgIDgsICAgOCwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAg ICAgIDgsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAgICAgICAgIDgsCisg ICAgICAgIC8vdHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAgMSwgICAxLAorICAgICAgICAv L3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICAgMSwgICAxLCAgIDAsCisgICAg ICAgIC8vbGFzdF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgIDgsICAgNSwgICA0LCAgIDUs ICAgNCwgICA0LCAgIDUsICAgNCwgICAxLCAgIDAsICAgNCwgICAxLCAgIDAsICAgMCwgICAwLCAg IDAsCisgICAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDUsICAgNCwgICA0LAorICAgICAgICAv L2xhc3Rfc2lnX2NvZWZmX3lfcHJlZml4CisgICAgICAgICA4LCAgIDUsICAgOCwgICA1LCAgIDUs ICAgNCwgICA1LCAgIDUsICAgNCwgICAwLCAgIDUsICAgNCwgICAxLCAgIDAsICAgMCwgICAxLAor ICAgICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDUsICAgNSwKKyAgICAgICAgLy9zYl9j b2RlZF9mbGFnCisgICAgICAgICA4LCAgIDUsICAgNSwgICA4LCAgIDUsICAgOCwgICA4LAorICAg ICAgICAvL3NpZ19jb2VmZl9mbGFnCisgICAgICAgIDEyLCAgIDksICAgOSwgIDEwLCAgIDksICAg OSwgICA5LCAgMTAsICAgOCwgICA4LCAgIDgsICAxMCwgICA5LCAgMTMsICAgOCwgICA4LAorICAg ICAgICAgOCwgICA4LCAgIDgsICAgNSwgICA4LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwgICA4 LCAgIDgsICAgOCwgICAwLCAgIDQsICAgNCwKKyAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAx MiwgIDEyLCAgIDksICAxMywgICA0LCAgIDUsICAgOCwgICA5LCAgIDgsICAxMiwgIDEyLCAgIDgs CisgICAgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwgICA4LCAgIDgsICAgNCwgICAw LCAgIDAsICAgMCwgIDEzLCAgMTMsICAgOCwKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAg ICAgICAgOCwgICA5LCAgMTIsICAxMywgIDEzLCAgMTMsICAxMCwgIDEzLCAgMTMsICAxMywgIDEz LCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgMTAsICAxMywgIDEzLCAgMTMsICAx MywgICA4LCAgMTIsICAxMiwgIDEyLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMs CisgICAgICAgICA2LAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAgOSwg ICA1LCAgMTAsICAxMywgIDEzLCAgMTAsICAgOSwgIDEwLCAgMTMsICAxMywgIDEzLCAgIDksICAx MCwgIDEwLCAgMTAsICAxMywKKyAgICAgICAgIDgsICAgOSwgIDEwLCAgMTAsICAxMywgICA4LCAg IDgsICAgOSwgIDEyLCAgMTIsICAxMCwgICA1LCAgIDksICAgOSwgICA5LCAgMTMsCisgICAgICAg ICAxLCAgIDUsICAgOSwgICA5LCAgIDksICAgNiwgICA1LCAgIDksICAxMCwgIDEwLCAgIDksICAg OSwgICA5LCAgIDksICAgOSwgICA5LAorICAgICAgICAgNiwgICA4LCAgIDksICAgOSwgIDEwLCAg IDEsICAgNSwgICA4LCAgIDgsICAgOSwgICA2LCAgIDYsICAgOSwgICA4LCAgIDgsICAgOSwKKyAg ICAgICAgIDQsICAgMiwgICAxLCAgIDYsICAgMSwgICAxLCAgIDEsICAgMSwKKyAgICAgICAgLy9j b2VmZl9zaWduX2ZsYWcKKyAgICAgICAgIDEsICAgNCwgICA0LCAgIDUsICAgOCwgICA4LAorICAg IH0KK307CisKKyNkZWZpbmUgTUFYX1NVQl9CTE9DS1MgMTYKKyNkZWZpbmUgTUFYX1NVQl9CTE9D S19TSVpFIDQKKyNkZWZpbmUgTUFYX1RCX1NJWkUgNjQKKwordHlwZWRlZiBzdHJ1Y3QgUmVzaWR1 YWxDb2RpbmcgeworICAgIC8vY29tbW9uIGZvciB0cyBhbmQgbm9uIHRzCisgICAgVHJhbnNmb3Jt QmxvY2sgKnRiOworCisgICAgaW50IGxvZzJfc2JfdzsKKyAgICBpbnQgbG9nMl9zYl9oOworICAg IGludCBsYXN0X3N1Yl9ibG9jazsKKyAgICBpbnQgaGlzdF92YWx1ZTsKKyAgICBpbnQgdXBkYXRl X2hpc3Q7CisgICAgaW50IG51bV9zYl9jb2VmZjsKKyAgICBpbnQgcmVtX2JpbnNfcGFzczE7CisK KyAgICBpbnQgd2lkdGhfaW5fc2JzOworICAgIGludCBoZWlnaHRfaW5fc2JzOworICAgIGludCBu Yl9zYnM7CisKKyAgICBjb25zdCB1aW50OF90ICpzYl9zY2FuX3hfb2ZmOworICAgIGNvbnN0IHVp bnQ4X3QgKnNiX3NjYW5feV9vZmY7CisgICAgY29uc3QgdWludDhfdCAqc2Nhbl94X29mZjsKKyAg ICBjb25zdCB1aW50OF90ICpzY2FuX3lfb2ZmOworCisgICAgdWludDhfdCBzYl9jb2RlZF9mbGFn W01BWF9TVUJfQkxPQ0tTICogTUFYX1NVQl9CTE9DS1NdOworICAgIGludCBzaWdfY29lZmZfZmxh Z1tNQVhfVEJfU0laRSAqIE1BWF9UQl9TSVpFXTsKKyAgICBpbnQgYWJzX2xldmVsX3Bhc3MxW01B WF9UQl9TSVpFICogTUFYX1RCX1NJWkVdOyAgICAgICAgICAgICAgLy8vPCBBYnNMZXZlbFBhc3Mx W11bXQorICAgIGludCBhYnNfbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07CisKKyAg ICAvL2ZvciB0cyBvbmx5CisgICAgdWludDhfdCBpbmZlcl9zYl9jYmY7CisgICAgaW50IGNvZWZm X3NpZ25fbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07ICAgICAgICAgICAgIC8vLzwg Q29lZmZTaWduTGV2ZWxbXVtdCisKKyAgICAvL2ZvciBub24gdHMgb25seQorICAgIGludCBxc3Rh dGU7CisgICAgaW50IGxhc3Rfc2Nhbl9wb3M7CisgICAgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeDsKKyAgICBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95OworfSBSZXNpZHVhbENvZGlu ZzsKKworc3RhdGljIGludCBjYWJhY19yZWluaXQoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAg ICByZXR1cm4gc2tpcF9ieXRlcygmbGMtPmVwLT5jYywgMCkgPT0gTlVMTCA/IEFWRVJST1JfSU5W QUxJRERBVEEgOiAwOworfQorCitzdGF0aWMgdm9pZCBjYWJhY19pbml0X3N0YXRlKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgICAgICA9IGxj LT5mYy0+cHMuc3BzOworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoICAgPSBsYy0+ c2MtPnNoLnI7CisgICAgY29uc3QgaW50IHFwICAgICAgICAgICAgICAgICAgICA9IGF2X2NsaXBf dWludHAyKGxjLT5zYy0+c2guc2xpY2VfcXBfeSwgNik7CisgICAgaW50IGluaXRfdHlwZSAgICAg ICAgICAgICAgICAgICA9IDIgLSByc2gtPnNoX3NsaWNlX3R5cGU7CisKKyAgICBhdl9hc3NlcnQw KFZWQ19DT05URVhUUyA9PSBTWU5UQVhfRUxFTUVOVF9MQVNUKTsKKworICAgIGZmX3Z2Y19lcF9p bml0X3N0YXRfY29lZmYobGMtPmVwLCBzcHMtPmJpdF9kZXB0aCwgc3BzLT5yLT5zcHNfcGVyc2lz dGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnKTsKKworICAgIGlmIChyc2gtPnNoX2Nh YmFjX2luaXRfZmxhZyAmJiAhSVNfSShyc2gpKQorICAgICAgICBpbml0X3R5cGUgXj0gMzsKKwor ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVlZDX0NPTlRFWFRTOyBpKyspIHsKKyAgICAgICAgVlZD Q2FiYWNTdGF0ZSAqc3RhdGUgPSAmbGMtPmVwLT5jYWJhY19zdGF0ZVtpXTsKKyAgICAgICAgY29u c3QgaW50IGluaXRfdmFsdWUgPSBpbml0X3ZhbHVlc1tpbml0X3R5cGVdW2ldOworICAgICAgICBj b25zdCBpbnQgc2hpZnRfaWR4ICA9IGluaXRfdmFsdWVzWzNdW2ldOworICAgICAgICBjb25zdCBp bnQgbSA9IChpbml0X3ZhbHVlID4+IDMpIC0gNDsKKyAgICAgICAgY29uc3QgaW50IG4gPSAoKGlu aXRfdmFsdWUgJiA3KSAqIDE4KSArIDE7CisgICAgICAgIGNvbnN0IGludCBwcmUgPSBhdl9jbGlw KCgobSAqIChxcCAtIDE2KSkgPj4gMSkgKyBuLCAxLCAxMjcpOworCisgICAgICAgIHN0YXRlLT5z dGF0ZVswXSA9IHByZSA8PCAzOworICAgICAgICBzdGF0ZS0+c3RhdGVbMV0gPSBwcmUgPDwgNzsK KyAgICAgICAgc3RhdGUtPnNoaWZ0WzBdID0gKHNoaWZ0X2lkeCA+PiAyICkgKyAyOworICAgICAg ICBzdGF0ZS0+c2hpZnRbMV0gPSAoc2hpZnRfaWR4ICYgMyApICsgMyArIHN0YXRlLT5zaGlmdFsw XTsKKyAgICB9Cit9CisKK2ludCBmZl92dmNfY2FiYWNfaW5pdChWVkNMb2NhbENvbnRleHQgKmxj LAorICAgIGNvbnN0IGludCBjdHVfaWR4LCBjb25zdCBpbnQgcngsIGNvbnN0IGludCByeSkKK3sK KyAgICBpbnQgcmV0ID0gMDsKKyAgICBjb25zdCBWVkNQUFMgKnBwcyAgICAgICAgICAgICAgID0g bGMtPmZjLT5wcy5wcHM7CisgICAgY29uc3QgaW50IGZpcnN0X2N0Yl9pbl9zbGljZSAgICA9ICFj dHVfaWR4OworICAgIGNvbnN0IGludCBmaXJzdF9jdGJfaW5fdGlsZSAgICAgPSByeCA9PSBwcHMt PmN0Yl90b19jb2xfYmRbcnhdICYmIHJ5ID09IHBwcy0+Y3RiX3RvX3Jvd19iZFtyeV07CisKKyAg ICBpZiAoZmlyc3RfY3RiX2luX3NsaWNlfHwgZmlyc3RfY3RiX2luX3RpbGUpIHsKKyAgICAgICAg aWYgKGxjLT5zYy0+bmJfZXBzID09IDEgJiYgIWZpcnN0X2N0Yl9pbl9zbGljZSkKKyAgICAgICAg ICAgIHJldCA9IGNhYmFjX3JlaW5pdChsYyk7CisgICAgICAgIGlmIChyZXQgPT0gMCkKKyAgICAg ICAgICAgIGNhYmFjX2luaXRfc3RhdGUobGMpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQor CisvL2ZpeG1lCitzdGF0aWMgdm9pZCB2dmNfcmVmaWxsMihDQUJBQ0NvbnRleHQqIGMpIHsKKyAg ICBpbnQgaTsKKyAgICB1bnNpZ25lZCB4OworI2lmICFIQVZFX0ZBU1RfQ0xaCisgICAgeCA9IGMt PmxvdyBeIChjLT5sb3cgLSAxKTsKKyAgICBpID0gNyAtIGZmX2gyNjRfbm9ybV9zaGlmdFt4ID4+ IChDQUJBQ19CSVRTIC0gMSldOworI2Vsc2UKKyAgICBpID0gZmZfY3R6KGMtPmxvdykgLSBDQUJB Q19CSVRTOworI2VuZGlmCisKKyAgICB4ID0gLUNBQkFDX01BU0s7CisKKyNpZiBDQUJBQ19CSVRT ID09IDE2CisgICAgeCArPSAoYy0+Ynl0ZXN0cmVhbVswXSA8PCA5KSArIChjLT5ieXRlc3RyZWFt WzFdIDw8IDEpOworI2Vsc2UKKyAgICB4ICs9IGMtPmJ5dGVzdHJlYW1bMF0gPDwgMTsKKyNlbmRp ZgorCisgICAgYy0+bG93ICs9IHggPDwgaTsKKyNpZiAhVU5DSEVDS0VEX0JJVFNUUkVBTV9SRUFE RVIKKyAgICBpZiAoYy0+Ynl0ZXN0cmVhbSA8IGMtPmJ5dGVzdHJlYW1fZW5kKQorI2VuZGlmCisg ICAgICAgIGMtPmJ5dGVzdHJlYW0gKz0gQ0FCQUNfQklUUyAvIDg7Cit9CisKK3N0YXRpYyBpbnQg aW5saW5lIHZ2Y19nZXRfY2FiYWMoQ0FCQUNDb250ZXh0ICpjLCBWVkNDYWJhY1N0YXRlKiBiYXNl LCBjb25zdCBpbnQgY3R4KQoreworICAgIFZWQ0NhYmFjU3RhdGUgKnMgPSBiYXNlICsgY3R4Owor ICAgIGNvbnN0IGludCBxUmFuZ2VJZHggPSBjLT5yYW5nZSA+PiA1OworICAgIGNvbnN0IGludCBw U3RhdGUgPSBzLT5zdGF0ZVsxXSArIChzLT5zdGF0ZVswXSA8PCA0KTsKKyAgICBjb25zdCBpbnQg dmFsTXBzID0gcFN0YXRlID4+IDE0OworICAgIGNvbnN0IGludCBSYW5nZUxQUyA9IChxUmFuZ2VJ ZHggKiAoKHZhbE1wcyA/IDMyNzY3IC0gcFN0YXRlIDogcFN0YXRlKSA+PiA5ICkgPj4gMSkgKyA0 OworICAgIGludCBiaXQsIGxwc19tYXNrOworCisgICAgYy0+cmFuZ2UgLT0gUmFuZ2VMUFM7Cisg ICAgbHBzX21hc2sgPSAoKGMtPnJhbmdlPDwoQ0FCQUNfQklUUysxKSkgLSBjLT5sb3cpPj4zMTsK KworICAgIGMtPmxvdyAtPSAoYy0+cmFuZ2U8PChDQUJBQ19CSVRTKzEpKSAmIGxwc19tYXNrOwor ICAgIGMtPnJhbmdlICs9IChSYW5nZUxQUyAtIGMtPnJhbmdlKSAmIGxwc19tYXNrOworCisgICAg Yml0ID0gdmFsTXBzIF4gKGxwc19tYXNrICYgMSk7CisKKyAgICBscHNfbWFzayA9IGZmX2gyNjRf bm9ybV9zaGlmdFtjLT5yYW5nZV07CisgICAgYy0+cmFuZ2UgPDw9IGxwc19tYXNrOworICAgIGMt PmxvdyAgPDw9IGxwc19tYXNrOworCisgICAgaWYgKCEoYy0+bG93ICYgQ0FCQUNfTUFTSykpCisg ICAgICAgIHZ2Y19yZWZpbGwyKGMpOworICAgIHMtPnN0YXRlWzBdID0gcy0+c3RhdGVbMF0gLSAo cy0+c3RhdGVbMF0gPj4gcy0+c2hpZnRbMF0pICsgKDEwMjMgKiBiaXQgPj4gcy0+c2hpZnRbMF0p OworICAgIHMtPnN0YXRlWzFdID0gcy0+c3RhdGVbMV0gLSAocy0+c3RhdGVbMV0gPj4gcy0+c2hp ZnRbMV0pICsgKDE2MzgzICogYml0ID4+IHMtPnNoaWZ0WzFdKTsKKyAgICByZXR1cm4gYml0Owor fQorCisjZGVmaW5lIEdFVF9DQUJBQyhjdHgpIHZ2Y19nZXRfY2FiYWMoJmxjLT5lcC0+Y2MsIGxj LT5lcC0+Y2FiYWNfc3RhdGUsIGN0eCkKKworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IHZ2 Y19nZXRfY2FiYWNfYnlwYXNzKENBQkFDQ29udGV4dCAqYykKK3sKKyAgICByZXR1cm4gZ2V0X2Nh YmFjX2J5cGFzcyhjKTsKK30KKworLy85LjMuMy40IFRydW5jYXRlZCBiaW5hcnkgKFRCKSBiaW5h cml6YXRpb24gcHJvY2Vzcworc3RhdGljIGludCB0cnVuY2F0ZWRfYmluYXJ5X2RlY29kZShWVkNM b2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgY29uc3QgaW50IG4gPSBj X21heCArIDE7CisgICAgY29uc3QgaW50IGsgPSBhdl9sb2cyKG4pOworICAgIGNvbnN0IGludCB1 ID0gKDEgPDwgKGsrMSkpIC0gbjsKKyAgICBpbnQgdiA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBrOyBpKyspCisgICAgICAgIHYgPSAodiA8PCAxKSB8IHZ2Y19nZXRfY2FiYWNfYnlwYXNz KCZsYy0+ZXAtPmNjKTsKKyAgICBpZiAodiA+PSB1KSB7CisgICAgICAgIHYgPSAodiA8PCAxKSB8 IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICAgICAgdiAtPSB1OworICAg IH0KKyAgICByZXR1cm4gdjsKK30KKworLy8gOS4zLjMuNiBMaW1pdGVkIGstdGggb3JkZXIgRXhw LUdvbG9tYiBiaW5hcml6YXRpb24gcHJvY2Vzcworc3RhdGljIGludCBsaW1pdGVkX2t0aF9vcmRl cl9lZ2tfZGVjb2RlKENBQkFDQ29udGV4dCAqYywgY29uc3QgaW50IGssIGNvbnN0IGludCBtYXhf cHJlX2V4dF9sZW4sIGNvbnN0IGludCB0cnVuY19zdWZmaXhfbGVuKQoreworICAgIGludCBwcmVf ZXh0X2xlbiA9IDA7CisgICAgaW50IGVzY2FwZV9sZW5ndGg7CisgICAgaW50IHZhbCA9IDA7Cisg ICAgd2hpbGUgKChwcmVfZXh0X2xlbiA8IG1heF9wcmVfZXh0X2xlbikgJiYgdnZjX2dldF9jYWJh Y19ieXBhc3MoYykpCisgICAgICAgIHByZV9leHRfbGVuKys7CisgICAgaWYgKHByZV9leHRfbGVu ID09IG1heF9wcmVfZXh0X2xlbikKKyAgICAgICAgZXNjYXBlX2xlbmd0aCA9IHRydW5jX3N1ZmZp eF9sZW47CisgICAgZWxzZQorICAgICAgICBlc2NhcGVfbGVuZ3RoID0gcHJlX2V4dF9sZW4gKyBr OworICAgIHdoaWxlIChlc2NhcGVfbGVuZ3RoLS0gPiAwKSB7CisgICAgICAgIHZhbCA9ICh2YWwg PDwgMSkgKyB2dmNfZ2V0X2NhYmFjX2J5cGFzcyhjKTsKKyAgICB9CisgICAgdmFsICs9ICgoMSA8 PCBwcmVfZXh0X2xlbikgLSAxKSA8PCBrOworICAgIHJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBh dl9hbHdheXNfaW5saW5lCit2b2lkIGdldF9sZWZ0X3RvcChjb25zdCBWVkNMb2NhbENvbnRleHQg KmxjLCB1aW50OF90ICpsZWZ0LCB1aW50OF90ICp0b3AsCisgICAgY29uc3QgaW50IHgwLCBjb25z dCBpbnQgeTAsIGNvbnN0IHVpbnQ4X3QgKmxlZnRfY3R4LCBjb25zdCB1aW50OF90ICp0b3BfY3R4 KQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgICA9IGxjLT5mYzsKKyAgICBjb25z dCBWVkNTUFMgKnNwcyAgICAgICAgICAgPSBmYy0+cHMuc3BzOworICAgIGNvbnN0IGludCBtaW5f Y2Jfd2lkdGggICAgICA9IGZjLT5wcy5wcHMtPm1pbl9jYl93aWR0aDsKKyAgICBjb25zdCBpbnQg eDBiID0gYXZfbW9kX3VpbnRwMih4MCwgc3BzLT5jdGJfbG9nMl9zaXplX3kpOworICAgIGNvbnN0 IGludCB5MGIgPSBhdl9tb2RfdWludHAyKHkwLCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7CisgICAg Y29uc3QgaW50IHhfY2IgPSB4MCA+PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICBjb25z dCBpbnQgeV9jYiA9IHkwID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworCisgICAgaWYgKGxj LT5jdGJfbGVmdF9mbGFnIHx8IHgwYikKKyAgICAgICAgKmxlZnQgPSBTQU1QTEVfQ1RCKGxlZnRf Y3R4LCB4X2NiIC0gMSwgeV9jYik7CisgICAgaWYgKGxjLT5jdGJfdXBfZmxhZyB8fCB5MGIpCisg ICAgICAgICp0b3AgPSBTQU1QTEVfQ1RCKHRvcF9jdHgsIHhfY2IsIHlfY2IgLSAxKTsKK30KKwor c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUKK3VpbnQ4X3QgZ2V0X2luYyhWVkNMb2NhbENvbnRleHQg KmxjLCBjb25zdCB1aW50OF90ICpjdHgpCit7CisgICAgdWludDhfdCBsZWZ0ID0gMCwgdG9wID0g MDsKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0LCAmdG9wLCBsYy0+Y3UtPngwLCBsYy0+Y3Ut PnkwLCBjdHgsIGN0eCk7CisgICAgcmV0dXJuIGxlZnQgKyB0b3A7Cit9CisKK2ludCBmZl92dmNf c2FvX21lcmdlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJu IEdFVF9DQUJBQyhTQU9fTUVSR0VfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc2FvX3R5cGVfaWR4 X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGlmICghR0VUX0NBQkFDKFNBT19U WVBFX0lEWCkpCisgICAgICAgIHJldHVybiBTQU9fTk9UX0FQUExJRUQ7CisKKyAgICBpZiAoIXZ2 Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgcmV0dXJuIFNBT19CQU5E OworICAgIHJldHVybiBTQU9fRURHRTsKK30KKworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3NpdGlv bl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgdmFs dWUgPSB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisKKyAgICBmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8IHZ2Y19nZXRfY2Fi YWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2ludCBmZl92 dmNfc2FvX29mZnNldF9hYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50 IGkgPSAwOworICAgIGludCBsZW5ndGggPSAoMSA8PCAoRkZNSU4obGMtPmZjLT5wcy5zcHMtPmJp dF9kZXB0aCwgMTApIC0gNSkpIC0gMTsKKworICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgaSsrOworICAgIHJldHVybiBp OworfQorCitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfc2lnbl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0 ICpsYykKK3sKKyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOwor fQorCitpbnQgZmZfdnZjX3Nhb19lb19jbGFzc19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICBpbnQgcmV0ID0gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpIDw8IDE7 CisgICAgcmV0ICAgIHw9IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICBy ZXR1cm4gcmV0OworfQorCitpbnQgZmZfdnZjX2FsZl9jdGJfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjLCBjb25zdCBpbnQgcngsIGNvbnN0IGludCByeSwgY29uc3QgaW50IGNfaWR4KQoreworICAg IGludCBpbmMgPSBjX2lkeCAqIDM7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxj LT5mYzsKKyAgICBpZiAobGMtPmN0Yl9sZWZ0X2ZsYWcpIHsKKyAgICAgICAgY29uc3QgQUxGUGFy YW1zICpsZWZ0ID0gJkNUQihmYy0+dGFiLmFsZiwgcnggLSAxLCByeSk7CisgICAgICAgIGluYyAr PSBsZWZ0LT5jdGJfZmxhZ1tjX2lkeF07CisgICAgfQorICAgIGlmIChsYy0+Y3RiX3VwX2ZsYWcp IHsKKyAgICAgICAgY29uc3QgQUxGUGFyYW1zICphYm92ZSA9ICZDVEIoZmMtPnRhYi5hbGYsIHJ4 LCByeSAtIDEpOworICAgICAgICBpbmMgKz0gYWJvdmUtPmN0Yl9mbGFnW2NfaWR4XTsKKyAgICB9 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBTEZfQ1RCX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZf dnZjX2FsZl91c2VfYXBzX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKEFMRl9VU0VfQVBTX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2FsZl9sdW1hX3By ZXZfZmlsdGVyX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB0cnVuY2F0 ZWRfYmluYXJ5X2RlY29kZShsYywgbGMtPnNjLT5zaC5yLT5zaF9udW1fYWxmX2Fwc19pZHNfbHVt YSAtIDEpOworfQorCitpbnQgZmZfdnZjX2FsZl9sdW1hX2ZpeGVkX2ZpbHRlcl9pZHgoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMs IDE1KTsKK30KKworaW50IGZmX3Z2Y19hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4KFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGNvbnN0IGludCBjX2lkeCwgY29uc3QgaW50IG51bV9jaHJvbWFfZmlsdGVycykK K3sKKyAgICBpbnQgaSA9IDA7CisgICAgY29uc3QgaW50IGxlbmd0aCA9IG51bV9jaHJvbWFfZmls dGVycyAtIDE7CisKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBHRVRfQ0FCQUMoQUxGX0NUQl9G SUxURVJfQUxUX0lEWCArIGNfaWR4IC0gMSkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsK K30KKworaW50IGZmX3Z2Y19hbGZfY3RiX2NjX2lkYyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25z dCBpbnQgcngsIGNvbnN0IGludCByeSwgY29uc3QgaW50IGlkeCwgY29uc3QgaW50IGNjX2ZpbHRl cnNfc2lnbmFsbGVkKQoreworICAgIGludCBpbmMgPSAhaWR4ID8gQUxGX0NUQl9DQ19DQl9JREMg OiBBTEZfQ1RCX0NDX0NSX0lEQzsKKyAgICBpbnQgaSA9IDA7CisgICAgY29uc3QgVlZDRnJhbWVD b250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBpZiAobGMtPmN0Yl9sZWZ0X2ZsYWcpIHsKKyAgICAg ICAgY29uc3QgQUxGUGFyYW1zICpsZWZ0ID0gJkNUQihmYy0+dGFiLmFsZiwgcnggLSAxLCByeSk7 CisgICAgICAgIGluYyArPSBsZWZ0LT5jdGJfY2NfaWRjW2lkeF0gIT0gMDsKKyAgICB9CisgICAg aWYgKGxjLT5jdGJfdXBfZmxhZykgeworICAgICAgICBjb25zdCBBTEZQYXJhbXMgKmFib3ZlID0g JkNUQihmYy0+dGFiLmFsZiwgcngsIHJ5IC0gMSk7CisgICAgICAgIGluYyArPSBhYm92ZS0+Y3Ri X2NjX2lkY1tpZHhdICE9IDA7CisgICAgfQorCisgICAgaWYgKCFHRVRfQ0FCQUMoaW5jKSkKKyAg ICAgICAgcmV0dXJuIDA7CisgICAgaSsrOworICAgIHdoaWxlIChpIDwgY2NfZmlsdGVyc19zaWdu YWxsZWQgJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICBpKys7 CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfc3BsaXRfY3VfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwKKyAgICBjb25zdCBpbnQgY2Jf d2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsIGNvbnN0IGludCBpc19jaHJvbWEsIGNvbnN0IFZW Q0FsbG93ZWRTcGxpdCAqYSkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMt PmZjOworICAgIGNvbnN0IFZWQ1BQUyAqcHBzICAgPSBmYy0+cHMucHBzOworICAgIGNvbnN0IGlu dCBpc19pbnNpZGUgPSAoeDAgKyBjYl93aWR0aCA8PSBwcHMtPndpZHRoKSAmJiAoeTAgKyBjYl9o ZWlnaHQgPD0gcHBzLT5oZWlnaHQpOworCisgICAgaWYgKChhLT5idHYgfHwgYS0+YnRoIHx8IGEt PnR0diB8fCBhLT50dGggfHwgYS0+cXQpICYmIGlzX2luc2lkZSkKKyAgICB7CisgICAgICAgIHVp bnQ4X3QgaW5jID0gMCwgbGVmdF9oZWlnaHQgPSBjYl9oZWlnaHQsIHRvcF93aWR0aCA9IGNiX3dp ZHRoOworCisgICAgICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRfaGVpZ2h0LCAmdG9wX3dpZHRo LCB4MCwgeTAsIGZjLT50YWIuY2JfaGVpZ2h0W2lzX2Nocm9tYV0sIGZjLT50YWIuY2Jfd2lkdGhb aXNfY2hyb21hXSk7CisgICAgICAgIGluYyArPSBsZWZ0X2hlaWdodCA8IGNiX2hlaWdodDsKKyAg ICAgICAgaW5jICs9IHRvcF93aWR0aCAgIDwgY2Jfd2lkdGg7CisgICAgICAgIGluYyArPSAoYS0+ YnR2ICsgYS0+YnRoICsgYS0+dHR2ICsgYS0+dHRoICsgMiAqIGEtPnF0IC0gMSkgLyAyICogMzsK KworICAgICAgICByZXR1cm4gR0VUX0NBQkFDKFNQTElUX0NVX0ZMQUcgKyBpbmMpOworCisgICAg fQorICAgIHJldHVybiAhaXNfaW5zaWRlOworfQorCitzdGF0aWMgaW50IHNwbGl0X3F0X2ZsYWdf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLCBj b25zdCBpbnQgY2hfdHlwZSwgY29uc3QgaW50IGNxdF9kZXB0aCkKK3sKKyAgICBjb25zdCBWVkNG cmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGludCBpbmMgPSAwOworICAgIHVpbnQ4X3Qg ZGVwdGhfbGVmdCA9IDAsIGRlcHRoX3RvcCA9IDA7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICAm ZGVwdGhfbGVmdCwgJmRlcHRoX3RvcCwgeDAsIHkwLCBmYy0+dGFiLmNxdF9kZXB0aFtjaF90eXBl XSwgZmMtPnRhYi5jcXRfZGVwdGhbY2hfdHlwZV0pOworICAgIGluYyArPSBkZXB0aF9sZWZ0ID4g Y3F0X2RlcHRoOworICAgIGluYyArPSBkZXB0aF90b3AgID4gY3F0X2RlcHRoOworICAgIGluYyAr PSAoY3F0X2RlcHRoID49IDIpICogMzsKKworICAgIHJldHVybiBHRVRfQ0FCQUMoU1BMSVRfUVRf RkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWdf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLAor ICAgIGNvbnN0IGludCBjYl93aWR0aCwgY29uc3QgaW50IGNiX2hlaWdodCwgY29uc3QgaW50IGNo X3R5cGUsIGNvbnN0IFZWQ0FsbG93ZWRTcGxpdCogYSkKK3sKKyAgICBpZiAoKGEtPmJ0aCB8fCBh LT50dGgpICYmIChhLT5idHYgfHwgYS0+dHR2KSkgeworICAgICAgICBpbnQgaW5jOworICAgICAg ICBjb25zdCBpbnQgdiA9IGEtPmJ0diArIGEtPnR0djsKKyAgICAgICAgY29uc3QgaW50IGggPSBh LT5idGggKyBhLT50dGg7CisgICAgICAgIGlmICh2ID4gaCkKKyAgICAgICAgICAgIGluYyA9IDQ7 CisgICAgICAgIGVsc2UgaWYgKHYgPCBoKQorICAgICAgICAgICAgaW5jID0gMzsKKyAgICAgICAg ZWxzZSB7CisgICAgICAgICAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjICAgPSBsYy0+ZmM7 CisgICAgICAgICAgICBjb25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgPSBmYy0+cHMuc3BzOwor ICAgICAgICAgICAgY29uc3QgaW50IG1pbl9jYl93aWR0aCAgICAgID0gZmMtPnBzLnBwcy0+bWlu X2NiX3dpZHRoOworICAgICAgICAgICAgY29uc3QgaW50IHgwYiAgICAgICAgICAgICAgID0gYXZf bW9kX3VpbnRwMih4MCwgc3BzLT5jdGJfbG9nMl9zaXplX3kpOworICAgICAgICAgICAgY29uc3Qg aW50IHkwYiAgICAgICAgICAgICAgID0gYXZfbW9kX3VpbnRwMih5MCwgc3BzLT5jdGJfbG9nMl9z aXplX3kpOworICAgICAgICAgICAgY29uc3QgaW50IHhfY2IgICAgICAgICAgICAgID0geDAgPj4g c3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAgICAgICAgICBjb25zdCBpbnQgeV9jYiAgICAg ICAgICAgICAgPSB5MCA+PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgICAgIGNv bnN0IGludCBhdmFpbGFibGVfYSAgICAgICA9IGxjLT5jdGJfdXBfZmxhZyB8fCB5MGI7CisgICAg ICAgICAgICBjb25zdCBpbnQgYXZhaWxhYmxlX2wgICAgICAgPSBsYy0+Y3RiX2xlZnRfZmxhZyB8 fCB4MGI7CisgICAgICAgICAgICBjb25zdCBpbnQgZGEgICAgICAgICAgICAgICAgPSBjYl93aWR0 aCAgLyAoYXZhaWxhYmxlX2EgPyBTQU1QTEVfQ1RCKGZjLT50YWIuY2Jfd2lkdGhbY2hfdHlwZV0s IHhfY2IsIHlfY2IgLSAxKSA6IDEpOworICAgICAgICAgICAgY29uc3QgaW50IGRsICAgICAgICAg ICAgICAgID0gY2JfaGVpZ2h0IC8gKGF2YWlsYWJsZV9sID8gU0FNUExFX0NUQihmYy0+dGFiLmNi X2hlaWdodFtjaF90eXBlXSwgeF9jYiAtIDEsIHlfY2IpIDogMSk7CisKKyAgICAgICAgICAgIGlm IChkYSA9PSBkbCB8fCAhYXZhaWxhYmxlX2EgfHwgIWF2YWlsYWJsZV9sKQorICAgICAgICAgICAg ICAgIGluYyA9IDA7CisgICAgICAgICAgICBlbHNlIGlmIChkYSA8IGRsKQorICAgICAgICAgICAg ICAgIGluYyA9IDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5jID0gMjsK KyAgICAgICAgfQorICAgICAgICByZXR1cm4gR0VUX0NBQkFDKE1UVF9TUExJVF9DVV9WRVJUSUNB TF9GTEFHICsgaW5jKTsKKyAgICB9CisgICAgcmV0dXJuICEoYS0+YnRoIHx8IGEtPnR0aCk7Cit9 CisKK3N0YXRpYyBpbnQgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnX2RlY29kZShWVkNMb2NhbENv bnRleHQgKmxjLCBjb25zdCBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcsIGNvbnN0IGlu dCBtdHRfZGVwdGgpCit7CisgICAgaW50IGluYyA9ICgyICogbXR0X3NwbGl0X2N1X3ZlcnRpY2Fs X2ZsYWcpICsgKChtdHRfZGVwdGggPD0gMSkgPyAxIDogMCk7CisgICAgcmV0dXJuIEdFVF9DQUJB QyhNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgKyBpbmMpOworfQorCitWVkNTcGxpdE1vZGUgZmZf dnZjX3NwbGl0X21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBp bnQgeTAsIGNvbnN0IGludCBjYl93aWR0aCwgY29uc3QgaW50IGNiX2hlaWdodCwKKyAgICBjb25z dCBpbnQgY3F0X2RlcHRoLCBjb25zdCBpbnQgbXR0X2RlcHRoLCBjb25zdCBpbnQgY2hfdHlwZSwg Y29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKQoreworICAgIGludCBhbGxvd19ub19xdCA9IGEtPmJ0 diB8fCBhLT5idGggfHwgYS0+dHR2IHx8IGEtPnR0aDsKKyAgICBpbnQgc3BsaXRfcXRfZmxhZzsK KyAgICBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAgaW50IG10dF9zcGxpdF9j dV9iaW5hcnlfZmxhZzsKKyAgICBjb25zdCBWVkNTcGxpdE1vZGUgbXR0X3NwbGl0X21vZGVzW10g PSB7CisgICAgICAgIFNQTElUX1RUX0hPUiwgU1BMSVRfQlRfSE9SLCBTUExJVF9UVF9WRVIsIFNQ TElUX0JUX1ZFUiwKKyAgICB9OworICAgIGlmIChhbGxvd19ub19xdCAmJiBhLT5xdCkgeworICAg ICAgICBzcGxpdF9xdF9mbGFnID0gc3BsaXRfcXRfZmxhZ19kZWNvZGUobGMsIHgwLCB5MCwgY2hf dHlwZSwgY3F0X2RlcHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzcGxpdF9xdF9mbGFnID0g IWFsbG93X25vX3F0IHx8IGEtPnF0OworICAgIH0KKyAgICBpZiAoc3BsaXRfcXRfZmxhZykKKyAg ICAgICAgcmV0dXJuIFNQTElUX1FUOworICAgIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnID0g bXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWdfZGVjb2RlKGxjLCB4MCwgeTAsIGNiX3dpZHRoLCBj Yl9oZWlnaHQsIGNoX3R5cGUsIGEpOworICAgIGlmICgoYS0+YnR2ICYmIGEtPnR0diAmJiBtdHRf c3BsaXRfY3VfdmVydGljYWxfZmxhZykgfHwKKyAgICAgICAgKGEtPmJ0aCAmJiBhLT50dGggJiYg IW10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnKSkgeworICAgICAgICBtdHRfc3BsaXRfY3VfYmlu YXJ5X2ZsYWcgPSBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWdfZGVjb2RlKGxjLCBtdHRfc3BsaXRf Y3VfdmVydGljYWxfZmxhZywgbXR0X2RlcHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo IWEtPmJ0diAmJiAhYS0+YnRoKQorICAgICAgICAgICAgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFn ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoIWEtPnR0diAmJiAhYS0+dHRoKQorICAgICAgICAgICAg bXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0gMTsKKyAgICAgICAgZWxzZSBpZiAoYS0+YnRoICYm IGEtPnR0dikKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IDEgLSBtdHRf c3BsaXRfY3VfdmVydGljYWxfZmxhZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbXR0X3Nw bGl0X2N1X2JpbmFyeV9mbGFnID0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAgfQor ICAgIHJldHVybiBtdHRfc3BsaXRfbW9kZXNbKG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnIDw8 IDEpICsgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnXTsKK30KKworaW50IGZmX3Z2Y19ub25faW50 ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwg Y29uc3QgaW50IGNoX3R5cGUpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxj LT5mYzsKKyAgICB1aW50OF90IGluYywgbGVmdCA9IDAsIHRvcCA9IDA7CisKKyAgICBnZXRfbGVm dF90b3AobGMsICZsZWZ0LCAmdG9wLCB4MCwgeTAsIGZjLT50YWIuY3BtW2NoX3R5cGVdLCBmYy0+ dGFiLmNwbVtjaF90eXBlXSk7CisgICAgaW5jID0gbGVmdCB8fCB0b3A7CisgICAgcmV0dXJuIEdF VF9DQUJBQyhOT05fSU5URVJfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2Rl X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlzX2Nocm9tYSkKK3sKKyAgICBj b25zdCBWVkNGcmFtZUNvbnRleHQgKmZjICAgID0gbGMtPmZjOworICAgIGNvbnN0IENvZGluZ1Vu aXQgKmN1ICAgICAgICA9IGxjLT5jdTsKKyAgICB1aW50OF90IGluYywgbGVmdCA9IDAsIHRvcCA9 IDA7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0LCAmdG9wLCBjdS0+eDAsIGN1LT55MCwg ZmMtPnRhYi5jcG1baXNfY2hyb21hXSwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSk7CisgICAgaW5j ID0gbGVmdCB8fCB0b3A7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVEX01PREVfRkxBRyArIGlu Yyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2RlX3BsdF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVEX01PREVfUExUX0ZMQUcpOworfQorCitp bnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fTFVNQV9GTEFHKTsKK30KKworaW50IGZm X3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9CRFBDTV9MVU1BX0RJUl9GTEFHKTsKK30KKworaW50 IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fQ0hST01BX0ZMQUcpOworfQorCitpbnQg ZmZfdnZjX2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fQ0hST01BX0RJUl9GTEFHKTsKK30K KworaW50IGZmX3Z2Y19jdV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgdWlu dDhfdCAqY3Vfc2tpcF9mbGFnKQoreworICAgIGNvbnN0IGludCBpbmMgPSBnZXRfaW5jKGxjLCBj dV9za2lwX2ZsYWcpOworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0tJUF9GTEFHICsgaW5jKTsK K30KKworaW50IGZmX3Z2Y19wcmVkX21vZGVfaWJjX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IGlzX2Nocm9tYSkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0g bGMtPmZjOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgICAgICA9IGxjLT5jdTsKKyAgICB1 aW50OF90IGxlZnRfbW9kZSA9IE1PREVfSU5URVIsIHRvcF9tb2RlID0gTU9ERV9JTlRFUjsKKyAg ICBpbnQgaW5jOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdF9tb2RlLCAmdG9wX21vZGUs IGN1LT54MCwgY3UtPnkwLCBmYy0+dGFiLmNwbVtpc19jaHJvbWFdLCBmYy0+dGFiLmNwbVtpc19j aHJvbWFdKTsKKyAgICBpbmMgPSAobGVmdF9tb2RlID09IE1PREVfSUJDKSArICh0b3BfbW9kZSA9 PSBNT0RFX0lCQyk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVEX01PREVfSUJDX0ZMQUcgKyBp bmMpOworfQorCitpbnQgZmZfdnZjX2ludHJhX21pcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGNvbnN0IHVpbnQ4X3QgKmludHJhX21pcF9mbGFnKQoreworICAgIGNvbnN0IGludCB3ICAgICA9 IGxjLT5jdS0+Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGggICAgID0gbGMtPmN1LT5jYl9oZWln aHQ7CisgICAgY29uc3QgaW50IGluYyAgID0gICh3ID4gaCAqIDIgfHwgaCA+IHcgKiAyKSA/IDMg OiBnZXRfaW5jKGxjLCBpbnRyYV9taXBfZmxhZyk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRS QV9NSVBfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlwX3RyYW5zcG9zZWRf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNiX3dpZHRo OworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0IGlu dCBjX21heCA9ICh3ID09IDQgJiYgaCA9PSA0KSA/IDE1IDoKKyAgICAgICAgKCh3ID09IDQgfHwg aCA9PSA0KSB8fCAodyA9PSA4ICYmIGggPT0gOCkpID8gNzogNTsKKyAgICByZXR1cm4gdHJ1bmNh dGVkX2JpbmFyeV9kZWNvZGUobGMsIGNfbWF4KTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1h X3JlZl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkg PSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIGlmICghR0VUX0NBQkFDKElOVFJBX0xVTUFfUkVG X0lEWCArIGkpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBpOwor fQorCitpbnQgZmZfdnZjX2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9TVUJQQVJUSVRJT05TX01P REVfRkxBRyk7Cit9CisKK2VudW0gSXNwVHlwZSBmZl92dmNfaXNwX3NwbGl0X3R5cGUoVlZDTG9j YWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKQor eworICAgIGlmICghaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcpCisgICAgICAgIHJldHVy biBJU1BfTk9fU1BMSVQ7CisgICAgcmV0dXJuIDEgKyBHRVRfQ0FCQUMoSU5UUkFfU1VCUEFSVElU SU9OU19TUExJVF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX21wbV9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1BX01Q TV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcp Cit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRyArICFp bnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVt YV9tcG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgZm9yIChp ID0gMDsgaSA8IDQgJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKyspCisg ICAgICAgIC8qIG5vdGhpbmcgKi87CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfaW50 cmFfbHVtYV9tcG1fcmVtYWluZGVyKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJu IHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCA2MCk7Cit9CisKK2ludCBmZl92dmNfY2NsbV9t b2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKEND TE1fTU9ERV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19jY2xtX21vZGVfaWR4KFZWQ0xvY2FsQ29u dGV4dCAqbGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoQ0NMTV9NT0RFX0lEWCkpCisgICAgICAg IHJldHVybiAwOworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykg KyAxOworfQorCitpbnQgZmZfdnZjX2ludHJhX2Nocm9tYV9wcmVkX21vZGUoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICBpZiAoIUdFVF9DQUJBQyhJTlRSQV9DSFJPTUFfUFJFRF9NT0RFKSkK KyAgICAgICAgcmV0dXJuIDQ7CisgICAgcmV0dXJuICh2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYykgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisK K2ludCBmZl92dmNfZ2VuZXJhbF9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhHRU5FUkFMX01FUkdFX0ZMQUcpOworfQorCitzdGF0aWMgaW50 IGdldF9pbnRlcl9mbGFnX2luYyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNv bnN0IGludCB5MCkKK3sKKyAgICB1aW50OF90IGxlZnRfbWVyZ2UgPSAwLCAgdG9wX21lcmdlID0g MDsKKyAgICB1aW50OF90IGxlZnRfYWZmaW5lID0gMCwgdG9wX2FmZmluZSA9IDA7CisgICAgY29u c3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKworICAgIGdldF9sZWZ0X3RvcChsYywg JmxlZnRfbWVyZ2UsICZ0b3BfbWVyZ2UsIHgwLCB5MCwgZmMtPnRhYi5tc2YsIGZjLT50YWIubXNm KTsKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X2FmZmluZSwgJnRvcF9hZmZpbmUsIHgwLCB5 MCwgZmMtPnRhYi5pYWYsIGZjLT50YWIuaWFmKTsKKyAgICByZXR1cm4gKGxlZnRfbWVyZ2UgfHwg bGVmdF9hZmZpbmUpICsgKHRvcF9tZXJnZSArIHRvcF9hZmZpbmUpOworfQorCitpbnQgZmZfdnZj X21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBp bnQgaW5jID0gZ2V0X2ludGVyX2ZsYWdfaW5jKGxjLCBsYy0+Y3UtPngwLCBsYy0+Y3UtPnkwKTsK KyAgICByZXR1cm4gR0VUX0NBQkFDKE1FUkdFX1NVQkJMT0NLX0ZMQUcgKyBpbmMpOworfQorCitp bnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBp bnQgbWF4X251bV9zdWJibG9ja19tZXJnZV9jYW5kKQoreworICAgIGludCBpOworICAgIGlmICgh R0VUX0NBQkFDKE1FUkdFX1NVQkJMT0NLX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAgIGZv ciAoaSA9IDE7IGkgPCBtYXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQgLSAxICYmIHZ2Y19nZXRf Y2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOwor ICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3JlZ3VsYXJfbWVyZ2VfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjLCBjb25zdCBpbnQgY3Vfc2tpcF9mbGFnKQoreworICAgIGludCBpbmMgPSAh Y3Vfc2tpcF9mbGFnOworICAgIHJldHVybiBHRVRfQ0FCQUMoUkVHVUxBUl9NRVJHRV9GTEFHICsg aW5jKTsKK30KKworaW50IGZmX3Z2Y19tbXZkX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps YykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKE1NVkRfTUVSR0VfRkxBRyk7Cit9CisKK2ludCBm Zl92dmNfbW12ZF9jYW5kX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKE1NVkRfQ0FORF9GTEFHKTsKK30KKworc3RhdGljIGludCBtbXZkX2Rpc3RhbmNl X2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBpZiAo IUdFVF9DQUJBQyhNTVZEX0RJU1RBTkNFX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAgIGZv ciAoaSA9IDE7IGkgPCA3ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsr KQorICAgICAgICAvKiBub3RoaW5nICovOworICAgIHJldHVybiBpOworfQorCitzdGF0aWMgaW50 IG1tdmRfZGlyZWN0aW9uX2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBy ZXR1cm4gKHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSA8PCAxKSB8IHZ2Y19nZXRf Y2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKwordm9pZCBmZl92dmNfbW12ZF9vZmZzZXRf Y29kaW5nKFZWQ0xvY2FsQ29udGV4dCAqbGMsIE12ICptbXZkX29mZnNldCwgY29uc3QgaW50IHBo X21tdmRfZnVsbHBlbF9vbmx5X2ZsYWcpCit7CisgICAgY29uc3QgaW50IHNoaWZ0ID0gcGhfbW12 ZF9mdWxscGVsX29ubHlfZmxhZyA/IDQgOiAyOworICAgIGNvbnN0IGludCBtbXZkX2Rpc3RhbmNl ID0gMSA8PCAobW12ZF9kaXN0YW5jZV9pZHhfZGVjb2RlKGxjKSArIHNoaWZ0KTsKKyAgICBjb25z dCBpbnQgbW12ZF9kaXJlY3Rpb25faWR4ID0gbW12ZF9kaXJlY3Rpb25faWR4X2RlY29kZShsYyk7 CisgICAgY29uc3QgaW50IG1tdmRfc2lnbnNbXVsyXSA9IHsgezEsIDB9LCB7LTEsIDB9LCB7MCwg MX0sIHswLCAtMX0gfTsKKyAgICBtbXZkX29mZnNldC0+eCA9IG1tdmRfZGlzdGFuY2UgKiBtbXZk X3NpZ25zW21tdmRfZGlyZWN0aW9uX2lkeF1bMF07CisgICAgbW12ZF9vZmZzZXQtPnkgPSBtbXZk X2Rpc3RhbmNlICogbW12ZF9zaWduc1ttbXZkX2RpcmVjdGlvbl9pZHhdWzFdOworfQorCitzdGF0 aWMgUHJlZE1vZGUgZ2V0X2x1bWFfcHJlZF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgPSBsYy0+ZmM7CisgICAgY29uc3QgQ29kaW5n VW5pdCAqY3UgPSBsYy0+Y3U7CisgICAgUHJlZE1vZGUgcHJlZF9tb2RlOworICAgIGlmIChjdS0+ dHJlZV90eXBlICE9IERVQUxfVFJFRV9DSFJPTUEpIHsKKyAgICAgICAgcHJlZF9tb2RlID0gY3Ut PnByZWRfbW9kZTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgeF9jYiAgICAgICAg ICAgPSBjdS0+eDAgPj4gZmMtPnBzLnNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAgICBj b25zdCBpbnQgeV9jYiAgICAgICAgICAgPSBjdS0+eTAgPj4gZmMtPnBzLnNwcy0+bWluX2NiX2xv ZzJfc2l6ZV95OworICAgICAgICBjb25zdCBpbnQgbWluX2NiX3dpZHRoICAgPSBmYy0+cHMucHBz LT5taW5fY2Jfd2lkdGg7CisgICAgICAgIHByZWRfbW9kZSA9IFNBTVBMRV9DVEIoZmMtPnRhYi5j cG1bMF0sIHhfY2IsIHlfY2IpOworICAgIH0KKyAgICByZXR1cm4gcHJlZF9tb2RlOworfQorCitp bnQgZmZfdnZjX21lcmdlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IFZW Q1NQUyAqc3BzID0gbGMtPmZjLT5wcy5zcHM7CisgICAgY29uc3QgaW50IGlzX2liYyA9IGdldF9s dW1hX3ByZWRfbW9kZShsYykgPT0gTU9ERV9JQkM7CisgICAgY29uc3QgaW50IGNfbWF4ID0gKGlz X2liYyA/IHNwcy0+bWF4X251bV9pYmNfbWVyZ2VfY2FuZCA6IHNwcy0+bWF4X251bV9tZXJnZV9j YW5kKSAtIDE7CisgICAgaW50IGk7CisKKyAgICBpZiAoIUdFVF9DQUJBQyhNRVJHRV9JRFgpKQor ICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoaSA9IDE7IGkgPCBjX21heCAmJiB2dmNfZ2V0 X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsK KyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9ncG1fcGFydGl0aW9uX2lkeChW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGludCBpID0gMDsKKworICAgIGZvciAoaW50IGog PSAwOyBqIDwgNjsgaisrKQorICAgICAgICBpID0gKGkgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7CisKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19tZXJn ZV9ncG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpZHgpCit7CisgICAgY29u c3QgaW50IGNfbWF4ID0gbGMtPmZjLT5wcy5zcHMtPm1heF9udW1fZ3BtX21lcmdlX2NhbmQgLSBp ZHggLSAxOworICAgIGludCBpOworCisgICAgaWYgKCFHRVRfQ0FCQUMoTUVSR0VfSURYKSkKKyAg ICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAxOyBpIDwgY19tYXggJiYgdnZjX2dldF9j YWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKyspCisgICAgICAgIC8qIG5vdGhpbmcgKi87CisK KyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19jaWlwX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKENJSVBfRkxBRyk7Cit9CisKK1ByZWRGbGFn IGZmX3Z2Y19wcmVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlzX2IpCit7 CisgICAgY29uc3QgaW50IHcgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoID0g bGMtPmN1LT5jYl9oZWlnaHQ7CisgICAgaWYgKCFpc19iKQorICAgICAgICByZXR1cm4gIFBGX0ww OworICAgIGlmICh3ICsgaCA+IDEyKSB7CisgICAgICAgIGNvbnN0IGludCBsb2cyID0gYXZfbG9n Mih3KSArIGF2X2xvZzIoaCk7CisgICAgICAgIGNvbnN0IGludCBpbmMgPSA3IC0gKCgxICsgbG9n Mik+PjEpOworICAgICAgICBpZiAoR0VUX0NBQkFDKElOVEVSX1BSRURfSURDICsgaW5jKSkKKyAg ICAgICAgICAgIHJldHVybiBQRl9CSTsKKyAgICB9CisgICAgcmV0dXJuIFBGX0wwICsgR0VUX0NB QkFDKElOVEVSX1BSRURfSURDICsgNSk7Cit9CisKK2ludCBmZl92dmNfaW50ZXJfYWZmaW5lX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2ludGVy X2ZsYWdfaW5jKGxjLCBsYy0+Y3UtPngwLCBsYy0+Y3UtPnkwKTsKKyAgICByZXR1cm4gR0VUX0NB QkFDKElOVEVSX0FGRklORV9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19jdV9hZmZpbmVf dHlwZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhD VV9BRkZJTkVfVFlQRV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19zeW1fbXZkX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFNZTV9NVkRfRkxBRyk7Cit9 CisKK2ludCBmZl92dmNfcmVmX2lkeF9seChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCB1aW50 OF90IG5iX3JlZnMpCit7CisgICAgY29uc3QgaW50IGNfbWF4ID0gbmJfcmVmcyAtIDE7CisgICAg Y29uc3QgaW50IG1heF9jdHggPSBGRk1JTihjX21heCwgMik7CisgICAgaW50IGkgPSAwOworCisg ICAgd2hpbGUgKGkgPCBtYXhfY3R4ICYmIEdFVF9DQUJBQyhSRUZfSURYX0xYICsgaSkpCisgICAg ICAgIGkrKzsKKyAgICBpZiAoaSA9PSAyKSB7CisgICAgICAgIHdoaWxlIChpIDwgY19tYXggJiYg dnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICAgICAgaSsrOworICAg IH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19hYnNfbXZkX2dyZWF0ZXIwX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19NVkRfR1JF QVRFUjBfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVyMV9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBQlNfTVZEX0dSRUFURVIx X0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfbWludXMyKFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgcmV0dXJuIGxpbWl0ZWRfa3RoX29yZGVyX2Vna19kZWNvZGUoJmxjLT5lcC0+ Y2MsIDEsIDE1LCAxNyk7Cit9CisKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5j Yyk7Cit9CisKK2ludCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sK KyAgICByZXR1cm4gR0VUX0NBQkFDKE1WUF9MWF9GTEFHKTsKK30KKworc3RhdGljIGludCBhbXZy X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludGVyX2FmZmluZV9mbGFnKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoQU1WUl9GTEFHICsgaW50ZXJfYWZmaW5lX2ZsYWcpOwor fQorCitzdGF0aWMgaW50IGFtdnJfcHJlY2lzaW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCBpbnQgaW5jLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgaW50IGkgPSAwOworICAgIGlm ICghR0VUX0NBQkFDKEFNVlJfUFJFQ0lTSU9OX0lEWCArIGluYykpCisgICAgICAgIHJldHVybiAw OworICAgIGkrKzsKKyAgICBpZiAoaSA8IGNfbWF4ICYmIEdFVF9DQUJBQyhBTVZSX1BSRUNJU0lP Tl9JRFggKyAxKSkKKyAgICAgICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZj X2FtdnJfc2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludGVyX2FmZmluZV9m bGFnLAorICAgIGNvbnN0IFByZWRNb2RlIHByZWRfbW9kZSwgY29uc3QgaW50IGhhc19hbXZyX2Zs YWcpCit7CisgICAgaW50IGFtdnJfc2hpZnQgPSAyOworICAgIGlmIChoYXNfYW12cl9mbGFnKSB7 CisgICAgICAgIGlmIChhbXZyX2ZsYWcobGMsIGludGVyX2FmZmluZV9mbGFnKSkgeworICAgICAg ICAgICAgaW50IGlkeDsKKyAgICAgICAgICAgIGlmIChpbnRlcl9hZmZpbmVfZmxhZykgeworICAg ICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJlY2lzaW9uX2lkeChsYywgMiwgMSk7CisgICAgICAg ICAgICAgICAgYW12cl9zaGlmdCA9IGlkeCAqIDQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBy ZWRfbW9kZSA9PSBNT0RFX0lCQykgeworICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJlY2lz aW9uX2lkeChsYywgMSwgMSk7CisgICAgICAgICAgICAgICAgYW12cl9zaGlmdCA9IDQgKyBpZHgg KiAyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg aW50IHNoaWZ0c1tdID0gezMsIDQsIDZ9OworICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJl Y2lzaW9uX2lkeChsYywgMCwgMik7CisgICAgICAgICAgICAgICAgYW12cl9zaGlmdCA9IHNoaWZ0 c1tpZHhdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBhbXZy X3NoaWZ0OworfQorCitpbnQgZmZfdnZjX2Jjd19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29u c3QgaW50IG5vX2JhY2t3YXJkX3ByZWRfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgY19tYXggPSBu b19iYWNrd2FyZF9wcmVkX2ZsYWcgPyA0IDogMjsKKyAgICBpbnQgaSA9IDE7CisgICAgaWYgKCFH RVRfQ0FCQUMoQkNXX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAgIHdoaWxlIChpIDwgY19t YXggJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICBpKys7Cisg ICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfdHVfY2JfY29kZWRfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoVFVfQ0JfQ09ERURfRkxBRyArIGxj LT5jdS0+YmRwY21fZmxhZ1sxXSk7Cit9CisKK2ludCBmZl92dmNfdHVfY3JfY29kZWRfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKFRVX0NSX0NPREVEX0ZMQUcgKyAobGMtPmN1LT5iZHBjbV9mbGFnWzFdID8gMiA6 IHR1X2NiX2NvZGVkX2ZsYWcpKTsKK30KKworaW50IGZmX3Z2Y190dV95X2NvZGVkX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSA9IGxjLT5jdTsK KyAgICBpbnQgaW5jOworICAgIGlmIChjdS0+YmRwY21fZmxhZ1swXSkKKyAgICAgICAgaW5jID0g MTsKKyAgICBlbHNlIGlmIChjdS0+aXNwX3NwbGl0X3R5cGUgPT0gSVNQX05PX1NQTElUKQorICAg ICAgICBpbmMgPSAwOworICAgIGVsc2UKKyAgICAgICAgaW5jID0gMiArIGxjLT5wYXJzZS5wcmV2 X3R1X2NiZl95OworICAgIGxjLT5wYXJzZS5wcmV2X3R1X2NiZl95ID0gR0VUX0NBQkFDKFRVX1lf Q09ERURfRkxBRyArIGluYyk7CisgICAgcmV0dXJuIGxjLT5wYXJzZS5wcmV2X3R1X2NiZl95Owor fQorCitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX2FicyhWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIGludCB2LCBpLCBrOworICAgIGlmICghR0VUX0NBQkFDKENVX1FQX0RFTFRBX0FCUykpCisg ICAgICAgIHJldHVybiAwOworCisgICAgLy8gcHJlZml4VmFsCisgICAgZm9yICh2ID0gMTsgdiA8 IDUgJiYgR0VUX0NBQkFDKENVX1FQX0RFTFRBX0FCUyArIDEpOyB2KyspCisgICAgICAgIC8qIG5v dGhpbmcgKi87CisgICAgaWYgKHYgPCA1KQorICAgICAgICByZXR1cm4gdjsKKworICAgIC8vIDku My4zLjUgay10aCBvcmRlciBFeHAtR29sb21iIGJpbmFyaXphdGlvbiBwcm9jZXNzCisgICAgLy8g c3VmZml4VmFsCisKKyAgICAvLyBDdVFwRGVsdGFWYWwgc2hhbGwgaW4gdGhlIHJhbmdlIG9mIOKI kiggMzIgKyBRcEJkT2Zmc2V0IC8gMiApIHRvICsoIDMxICsgUXBCZE9mZnNldCAvIDIgKQorICAg IC8vIHNvIGsgPSA2IHNob3VsZCBlbm91Z2gKKyAgICBmb3IgKGsgPSAwOyBrIDwgNiAmJiB2dmNf Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGsrKykKKyAgICAgICAgLyogbm90aGluZyAq LzsKKyAgICBpID0gKDEgPDwgaykgLSAxOworICAgIHYgPSAwOworICAgIHdoaWxlIChrLS0pCisg ICAgICAgIHYgPSAodiA8PCAxKSArIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsK KyAgICB2ICs9IGk7CisKKyAgICByZXR1cm4gdiArIDU7Cit9CisKK2ludCBmZl92dmNfY3VfcXBf ZGVsdGFfc2lnbl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19jdV9jaHJvbWFf cXBfb2Zmc2V0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NB QkFDKENVX0NIUk9NQV9RUF9PRkZTRVRfRkxBRyk7Cit9CitpbnQgZmZfdnZjX2N1X2Nocm9tYV9x cF9vZmZzZXRfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IGNfbWF4 ID0gbGMtPmZjLT5wcy5wcHMtPnItPnBwc19jaHJvbWFfcXBfb2Zmc2V0X2xpc3RfbGVuX21pbnVz MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY19tYXggJiYgR0VUX0NBQkFDKENV X0NIUk9NQV9RUF9PRkZTRVRfSURYKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOworICAg IHJldHVybiBpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZp Y2FudF9jb2VmZl94eV9wcmVmaXgoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQg bG9nMl90Yl9zaXplLCBjb25zdCBpbnQgbG9nMl96b190Yl9zaXplLCBjb25zdCBpbnQgY19pZHgs IGNvbnN0IGludCBjdHgpCit7CisgICAgaW50IGkgPSAwOworICAgIGludCBtYXggPSAobG9nMl96 b190Yl9zaXplIDw8IDEpIC0gMTsKKyAgICBpbnQgY3R4X29mZnNldCwgY3R4X3NoaWZ0OworICAg IGlmICghbG9nMl90Yl9zaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWNfaWR4KSB7 CisgICAgICAgIGNvbnN0IGludCBvZmZzZXRfeVtdID0gezAsIDAsIDMsIDYsIDEwLCAxNX07Cisg ICAgICAgIGN0eF9vZmZzZXQgPSBvZmZzZXRfeVtsb2cyX3RiX3NpemUgLSAxXTsKKyAgICAgICAg Y3R4X3NoaWZ0ICA9IChsb2cyX3RiX3NpemUgKyAxKSA+PiAyOworICAgIH0gZWxzZSB7CisgICAg ICAgIGNvbnN0IGludCBzaGlmdHNbXSA9IHswLCAwLCAwLCAxLCAyLCAyLCAyfTsKKyAgICAgICAg Y3R4X29mZnNldCA9IDIwOworICAgICAgICBjdHhfc2hpZnQgID0gc2hpZnRzW2xvZzJfdGJfc2l6 ZV07CisgICAgfQorICAgIHdoaWxlIChpIDwgbWF4ICYmIEdFVF9DQUJBQyhjdHggKyAoaSA+PiBj dHhfc2hpZnQpICsgY3R4X29mZnNldCkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsKK30K Kworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeF9w cmVmaXhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfdGJf d2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBjb25zdCBpbnQgY19pZHgpCit7Cisg ICAgcmV0dXJuIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeHlfcHJlZml4KGxjLCBsb2cyX3RiX3dp ZHRoLCBsb2cyX3pvX3RiX3dpZHRoLCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVgpOwor fQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95 X3ByZWZpeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbG9nMl90 Yl9oZWlnaHQsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCwgY29uc3QgaW50IGNfaWR4KQor eworICAgIHJldHVybiBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3h5X3ByZWZpeChsYywgbG9nMl90 Yl9oZWlnaHQsIGxvZzJfem9fdGJfaGVpZ2h0LCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWV9QUkVG SVgpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdfY29lZmZfc3Vm Zml4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsYXN0X3NpZ25p ZmljYW50X2NvZWZmX3lfcHJlZml4KQoreworICAgIGludCBpOworICAgIGNvbnN0IGludCBsZW5n dGggPSAobGFzdF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZpeCA+PiAxKSAtIDE7CisgICAgaW50 IHZhbHVlID0gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworCisgICAgZm9yIChp ID0gMTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8IHZ2 Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisK K2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IGludCB0dV9jYl9jb2RlZF9mbGFnLCBjb25zdCBpbnQgdHVfY3JfY29kZWRfZmxh ZykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAr IDIgKiB0dV9jYl9jb2RlZF9mbGFnICsgdHVfY3JfY29kZWRfZmxhZyAtIDEpOworfQorCitpbnQg ZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50 IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRSQU5TRk9STV9TS0lQX0ZMQUcgKyBpbmMp OworfQorCisvLzkuMy40LjIuNyBEZXJpdmF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2YXJpYWJsZXMg bG9jTnVtU2lnLCBsb2NTdW1BYnNQYXNzMQorc3RhdGljIGludCBnZXRfbG9jYWxfc3VtKGNvbnN0 IGludCAqbGV2ZWwsIGNvbnN0IGludCB3LCBjb25zdCBpbnQgaCwKKyAgICBjb25zdCBpbnQgeGMs IGNvbnN0IGludCB5YywgY29uc3QgaW50IGhpc3RfdmFsdWUpCit7CisgICAgaW50IGxvY19zdW0g PSAzICogaGlzdF92YWx1ZTsKKyAgICBsZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAoeGMg PCB3IC0gMSkgeworICAgICAgICBsb2Nfc3VtICs9IGxldmVsWzFdOworICAgICAgICBpZiAoeGMg PCB3IC0gMikKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbMl0gLSBoaXN0X3ZhbHVlOwor ICAgICAgICBpZiAoeWMgPCBoIC0gMSkKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbdyAr IDFdIC0gaGlzdF92YWx1ZTsKKyAgICB9CisgICAgaWYgKHljIDwgaCAtIDEpIHsKKyAgICAgICAg bG9jX3N1bSArPSBsZXZlbFt3XTsKKyAgICAgICAgaWYgKHljIDwgaCAtIDIpCisgICAgICAgICAg ICBsb2Nfc3VtICs9IGxldmVsW3cgPDwgMV0gLSBoaXN0X3ZhbHVlOworICAgIH0KKyAgICByZXR1 cm4gbG9jX3N1bTsKK30KKworLy85LjMuNC4yLjcgRGVyaXZhdGlvbiBwcm9jZXNzIGZvciB0aGUg dmFyaWFibGVzIGxvY051bVNpZywgbG9jU3VtQWJzUGFzczEKK3N0YXRpYyBpbnQgZ2V0X2xvY2Fs X3N1bV90cyhjb25zdCBpbnQgKmxldmVsLCBjb25zdCBpbnQgdywgY29uc3QgaW50IGgsIGNvbnN0 IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGludCBsb2Nfc3VtID0gMDsKKyAgICBsZXZl bCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAoeGMgPiAwKQorICAgICAgICBsb2Nfc3VtICs9IGxl dmVsWy0xXTsKKyAgICBpZiAoeWMgPiAwKQorICAgICAgICBsb2Nfc3VtICs9IGxldmVsWy13XTsK KyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworc3RhdGljIGludCBnZXRfZ3R4X2ZsYWdfaW5jKGNv bnN0IFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMsIGNvbnN0 IGludCBsYXN0KQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJjLT50YjsKKyAg ICBpbnQgaW5jOworICAgIGlmIChsYXN0KSB7CisgICAgICAgIGNvbnN0IGludCBpbmNzW10gPSB7 MCwgMjEsIDIxfTsKKyAgICAgICAgaW5jID0gIGluY3NbdGItPmNfaWR4XTsKKyAgICB9IGVsc2Ug eworICAgICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7CisgICAgICAgIGNvbnN0IGludCBsb2Nh bF9zdW1fc2lnID0gZ2V0X2xvY2FsX3N1bShyYy0+c2lnX2NvZWZmX2ZsYWcsCisgICAgICAgICAg ICAgICAgdGItPnRiX3dpZHRoLHRiLT50Yl9oZWlnaHQsIHhjLCB5YywgcmMtPmhpc3RfdmFsdWUp OworICAgICAgICBjb25zdCBpbnQgbG9jX3N1bV9hYnNfcGFzczEgPSBnZXRfbG9jYWxfc3VtKHJj LT5hYnNfbGV2ZWxfcGFzczEsCisgICAgICAgICAgICAgICAgdGItPnRiX3dpZHRoLCB0Yi0+dGJf aGVpZ2h0LCB4YywgeWMsIHJjLT5oaXN0X3ZhbHVlKTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNl dCA9IEZGTUlOKGxvY19zdW1fYWJzX3Bhc3MxIC0gbG9jYWxfc3VtX3NpZywgNCk7CisKKyAgICAg ICAgaWYgKCF0Yi0+Y19pZHgpCisgICAgICAgICAgICBpbmMgPSAgMSArIG9mZnNldCArICghZCA/ IDE1IDogKGQgPCAzID8gMTAgOiAoZCA8IDEwID8gNSA6IDApKSk7CisgICAgICAgIGVsc2UKKyAg ICAgICAgICAgIGluYyA9IDIyICsgb2Zmc2V0ICsgKCFkID8gNSA6IDApOworICAgIH0KKyAgICBy ZXR1cm4gaW5jOworfQorCitzdGF0aWMgaW50IGFic19sZXZlbF9ndHhfZmxhZ19kZWNvZGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KEFCU19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgcGFyX2xldmVsX2Zs YWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbmMpCit7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhQQVJfTEVWRUxfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgcGFy X2xldmVsX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3Qg aW50IGluYyA9IDMyOworICAgIHJldHVybiBHRVRfQ0FCQUMoUEFSX0xFVkVMX0ZMQUcgKyBpbmMp OworfQorCitzdGF0aWMgaW50IHNiX2NvZGVkX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcsCisgICAgY29uc3QgUmVzaWR1YWxDb2Rp bmcgKnJjLCBjb25zdCBpbnQgeHMsIGNvbnN0IGludCB5cykKK3sKKyAgICBjb25zdCBIMjY2UmF3 U2xpY2VIZWFkZXIgKnJzaCAgID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9ybUJs b2NrICp0YiAgICAgICAgPSByYy0+dGI7CisgICAgY29uc3QgaW50IHcgICAgICAgICAgICAgICAg ICAgICA9IHJjLT53aWR0aF9pbl9zYnM7CisgICAgY29uc3QgaW50IGggICAgICAgICAgICAgICAg ICAgICA9IHJjLT5oZWlnaHRfaW5fc2JzOworICAgIGludCBpbmM7CisKKyAgICBpZiAodGItPnRz ICYmICFyc2gtPnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9mbGFnKSB7CisgICAgICAg IGNvbnN0IGludCBsZWZ0ID0geHMgPiAwID8gc2JfY29kZWRfZmxhZ1stMV0gOiAwOworICAgICAg ICBjb25zdCBpbnQgYWJvdmUgPSB5cyA+IDAgPyBzYl9jb2RlZF9mbGFnWy13XSA6IDA7CisgICAg ICAgIGluYyA9IGxlZnQgKyBhYm92ZSArIDQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3Qg aW50IHJpZ2h0ICA9ICh4cyA8IHcgLSAxKSA/IHNiX2NvZGVkX2ZsYWdbMV0gOiAwOworICAgICAg ICBjb25zdCBpbnQgYm90dG9tID0gKHlzIDwgaCAtIDEpID8gc2JfY29kZWRfZmxhZ1t3XSA6IDA7 CisgICAgICAgIGluYyA9IChyaWdodCB8IGJvdHRvbSkgKyAodGItPmNfaWR4ID8gMiA6IDApOwor ICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKFNCX0NPREVEX0ZMQUcgKyBpbmMpOworfQorCitz dGF0aWMgaW50IHNpZ19jb2VmZl9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25z dCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAg IGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoICAgPSBsYy0+c2MtPnNoLnI7CisgICAgY29u c3QgVHJhbnNmb3JtQmxvY2sgKnRiICAgICAgICA9IHJjLT50YjsKKyAgICBpbnQgaW5jOworCisg ICAgaWYgKHRiLT50cyAmJiAhcnNoLT5zaF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxh ZykgeworICAgICAgICBjb25zdCBpbnQgbG9jYWxfbnVtX3NpZyA9IGdldF9sb2NhbF9zdW1fdHMo cmMtPnNpZ19jb2VmZl9mbGFnLCB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5Yyk7 CisgICAgICAgIGluYyA9IDYwICsgbG9jYWxfbnVtX3NpZzsKKyAgICB9IGVsc2UgeworICAgICAg ICBjb25zdCBpbnQgZCA9IHhjICsgeWM7CisgICAgICAgIGNvbnN0IGludCBsb2Nfc3VtX2Fic19w YXNzMSA9IGdldF9sb2NhbF9zdW0ocmMtPmFic19sZXZlbF9wYXNzMSwKKyAgICAgICAgICAgICAg ICB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5YywgMCk7CisKKyAgICAgICAgaWYg KCF0Yi0+Y19pZHgpIHsKKyAgICAgICAgICAgIGluYyA9IDEyICogRkZNQVgoMCwgcmMtPnFzdGF0 ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoKGQgPCAy KSA/IDggOiAoZCA8IDUgPyA0IDogMCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg aW5jID0gMzYgKyA4ICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1f YWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoZCA8IDIgPyA0IDogMCk7CisgICAgICAgIH0KKyAg ICB9CisgICAgcmV0dXJuIEdFVF9DQUJBQyhTSUdfQ09FRkZfRkxBRyArIGluYyk7Cit9CisKK3N0 YXRpYyBpbnQgYWJzX2dldF9yaWNlX3BhcmFtKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJl c2lkdWFsQ29kaW5nKiByYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu dCB4YywgY29uc3QgaW50IHljLCBjb25zdCBpbnQgYmFzZV9sZXZlbCkKK3sKKyAgICBjb25zdCBW VkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrKiB0 YiA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgcmljZV9wYXJhbXNbXSA9IHsKKyAgICAgICAgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMiwKKyAgICAgICAgMiwg MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMywgMywgMywgMywKKyAgICB9OworICAg IGludCBsb2Nfc3VtX2FiczsKKyAgICBpbnQgc2hpZnRfdmFsOworCisgICAgbG9jX3N1bV9hYnMg PSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNfbGV2ZWwsIHRiLT50Yl93aWR0aCwgdGItPnRiX2hlaWdo dCwgeGMsCisgICAgICAgICAgICB5YywgcmMtPmhpc3RfdmFsdWUpOworCisgICAgaWYgKCFzcHMt PnItPnNwc19ycmNfcmljZV9leHRlbnNpb25fZmxhZykgeworICAgICAgICBzaGlmdF92YWwgPSAw OworICAgIH0gZWxzZSB7CisgICAgICAgIHNoaWZ0X3ZhbCA9IChhdl9sb2cyKEZGTUFYKEZGTUlO KGxvY19zdW1fYWJzLCAyMDQ4KSwgOCkpIC0gMykgJiB+MTsKKyAgICB9CisKKyAgICBsb2Nfc3Vt X2FicyA9IGF2X2NsaXBfdWludHAyKChsb2Nfc3VtX2FicyA+PiBzaGlmdF92YWwpIC0gYmFzZV9s ZXZlbCAqIDUsIDUpOworCisgICAgcmV0dXJuIHJpY2VfcGFyYW1zW2xvY19zdW1fYWJzXSArIHNo aWZ0X3ZhbDsKK30KKworc3RhdGljIGludCBhYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGNvbnN0IGludCBjX3JpY2VfcGFyYW0pCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgPSBsYy0+ ZmMtPnBzLnNwczsKKyAgICBjb25zdCBpbnQgTUFYX0JJTiA9IDY7CisgICAgaW50IHByZWZpeCA9 IDA7CisgICAgaW50IHN1ZmZpeCA9IDA7CisgICAgaW50IGk7CisKKyAgICB3aGlsZSAocHJlZml4 IDwgTUFYX0JJTiAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAg IHByZWZpeCsrOworICAgIGlmIChwcmVmaXggPCBNQVhfQklOKSB7CisgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBjX3JpY2VfcGFyYW07IGkrKykgeworICAgICAgICAgICAgc3VmZml4ID0gKHN1ZmZp eCA8PCAxKSB8IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICAgICAgfQor ICAgIH0gZWxzZSB7CisgICAgICAgIHN1ZmZpeCA9IGxpbWl0ZWRfa3RoX29yZGVyX2Vna19kZWNv ZGUoJmxjLT5lcC0+Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY19yaWNlX3BhcmFtICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAyNiAtIHNwcy0+bG9nMl90cmFuc2Zvcm1fcmFuZ2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BzLT5sb2cyX3RyYW5zZm9ybV9y YW5nZSk7CisgICAgfQorICAgIHJldHVybiBzdWZmaXggKyAocHJlZml4IDw8IGNfcmljZV9wYXJh bSk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX3JlbWFpbmRlcl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5 YykKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgID0gbGMtPmZjLT5wcy5zcHM7 CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggPSBsYy0+c2MtPnNoLnI7CisgICAg Y29uc3QgaW50IGJhc2VfbGV2ZWxbXVsyXVsyXSA9IHsKKyAgICAgICAgeyB7NCwgNH0sIHs0LCA0 fSB9LAorICAgICAgICB7IHszLCAyfSwgezIsIDF9IH0KKyAgICB9OworICAgIGNvbnN0IGludCBj X3JpY2VfcGFyYW0gPSBhYnNfZ2V0X3JpY2VfcGFyYW0obGMsIHJjLCB4YywgeWMsCisgICAgICAg IGJhc2VfbGV2ZWxbc3BzLT5yLT5zcHNfcnJjX3JpY2VfZXh0ZW5zaW9uX2ZsYWddW3Nwcy0+Yml0 X2RlcHRoID4gMTJdW0lTX0kocnNoKV0pOworICAgIGNvbnN0IGludCByZW0gPSBhYnNfZGVjb2Rl KGxjLCBjX3JpY2VfcGFyYW0pOworICAgIHJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQgYWJz X3JlbWFpbmRlcl90c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgUmVzaWR1YWxD b2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBjb25zdCBIMjY2 UmF3U2xpY2VIZWFkZXIgKnJzaCA9IGxjLT5zYy0+c2gucjsKKyAgICBjb25zdCBpbnQgY19yaWNl X3BhcmFtID0gcnNoLT5zaF90c19yZXNpZHVhbF9jb2RpbmdfcmljZV9pZHhfbWludXMxICsgMTsK KyAgICBjb25zdCBpbnQgcmVtID0gYWJzX2RlY29kZShsYywgY19yaWNlX3BhcmFtKTsKKworICAg IHJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQgY29lZmZfc2lnbl9mbGFnX2RlY29kZShWVkNM b2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYyk7Cit9CisKKy8vOS4zLjQuMi4xMCBEZXJpdmF0aW9uIHByb2Nlc3Mgb2YgY3R4SW5j IGZvciB0aGUgc3ludGF4IGVsZW1lbnQgY29lZmZfc2lnbl9mbGFnIGZvciB0cmFuc2Zvcm0gc2tp cCBtb2RlCitzdGF0aWMgaW50IGNvZWZmX3NpZ25fZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250 ZXh0ICpsYywgY29uc3QgQ29kaW5nVW5pdCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywg Y29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sg KnRiICAgID0gcmMtPnRiOworICAgIGNvbnN0IGludCB3ICAgICAgICAgICAgICAgICA9IHRiLT50 Yl93aWR0aDsKKyAgICBjb25zdCBpbnQgKmxldmVsICAgICAgICAgICAgPSByYy0+Y29lZmZfc2ln bl9sZXZlbCArIHljICogdyArIHhjOworICAgIGNvbnN0IGludCBsZWZ0X3NpZ24gICAgICAgICA9 ICh4YyA9PSAwKSA/IDAgOiBsZXZlbFstMV07CisgICAgY29uc3QgaW50IGFib3ZlX3NpZ24gICAg ICAgID0gKHljID09IDApID8gMCA6IGxldmVsWy13XTsKKyAgICBjb25zdCBpbnQgYmRwY21fZmxh ZyAgICAgICAgPSBjdS0+YmRwY21fZmxhZ1t0Yi0+Y19pZHhdOworICAgIGludCBpbmM7CisKKyAg ICBpZiAobGVmdF9zaWduID09IC1hYm92ZV9zaWduKQorICAgICAgICBpbmMgPSBiZHBjbV9mbGFn ID09IDAgPyAwIDogMzsKKyAgICBlbHNlIGlmIChsZWZ0X3NpZ24gPj0gMCAmJiBhYm92ZV9zaWdu ID49IDApCisgICAgICAgIGluYyA9IGJkcGNtX2ZsYWcgPT0gMCA/IDEgOiA0OworICAgIGVsc2UK KyAgICAgICAgaW5jID0gYmRwY21fZmxhZyA9PSAwID8gMiA6IDU7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhDT0VGRl9TSUdOX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IGFic19sZXZlbF9n dDFfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgQ29kaW5nVW5pdCAq Y3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMp Cit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiID0gcmMtPnRiOworICAgIGNvbnN0IGlu dCAqc2lnX2NvZWZmX2ZsYWcgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyB5YyAqIHRiLT50Yl93aWR0 aCArIHhjOworICAgIGludCBpbmM7CisKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdbdGItPmNfaWR4 XSkgeworICAgICAgICBpbmMgPSA2NzsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQg bCA9IHhjID4gMCA/IHNpZ19jb2VmZl9mbGFnWy0xXSA6IDA7CisgICAgICAgIGNvbnN0IGludCBh ID0geWMgPiAwID8gc2lnX2NvZWZmX2ZsYWdbLXRiLT50Yl93aWR0aF0gOiAwOworICAgICAgICBp bmMgPSA2NCArIGEgKyBsOworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZFTF9H VFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2xldmVsX2d0eF9mbGFnX3RzX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaikKK3sKKyAgICBjb25zdCBpbnQg aW5jID0gNjcgKyBqOworICAgIHJldHVybiBHRVRfQ0FCQUMoQUJTX0xFVkVMX0dUWF9GTEFHICsg aW5jKTsKK30KKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgcXN0YXRlX3RyYW5zbGF0ZV90YWJsZVtd WzJdID0geworICAgIHsgMCwgMiB9LCB7IDIsIDAgfSwgeyAxLCAzIH0sIHsgMywgMSB9Cit9Owor CitzdGF0aWMgaW50IGRlY19hYnNfbGV2ZWxfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNv bnN0IFJlc2lkdWFsQ29kaW5nICpyYywKKyAgICBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5Yywg aW50ICphYnNfbGV2ZWwpCit7CisgICAgY29uc3QgaW50IGNfcmljZV9wYXJhbSAgPSBhYnNfZ2V0 X3JpY2VfcGFyYW0obGMsIHJjLCB4YywgeWMsIDApOworICAgIGNvbnN0IGludCBkZWNfYWJzX2xl dmVsID0gIGFic19kZWNvZGUobGMsIGNfcmljZV9wYXJhbSk7CisgICAgY29uc3QgaW50IHplcm9f cG9zICAgICAgPSAocmMtPnFzdGF0ZSA8IDIgPyAxIDogMikgPDwgY19yaWNlX3BhcmFtOworCisg ICAgKmFic19sZXZlbCA9IDA7CisgICAgaWYgKGRlY19hYnNfbGV2ZWwgIT0gemVyb19wb3MpIHsK KyAgICAgICAgKmFic19sZXZlbCA9IGRlY19hYnNfbGV2ZWw7CisgICAgICAgIGlmIChkZWNfYWJz X2xldmVsIDwgemVyb19wb3MpCisgICAgICAgICAgICAqYWJzX2xldmVsICs9IDE7CisgICAgfQor ICAgIHJldHVybiBkZWNfYWJzX2xldmVsOworfQorCitzdGF0aWMgdm9pZCBlcF91cGRhdGVfaGlz dChFbnRyeVBvaW50ICplcCwgUmVzaWR1YWxDb2RpbmcgKnJjLAorICAgIGNvbnN0IGludCByZW1h aW5kZXIsIGNvbnN0IGludCBhZGRpbikKK3sKKyAgICBpbnQgKnN0YXQgPSBlcC0+c3RhdF9jb2Vm ZiArIHJjLT50Yi0+Y19pZHg7CisgICAgaWYgKHJjLT51cGRhdGVfaGlzdCAmJiByZW1haW5kZXIg PiAwKSB7CisgICAgICAgICpzdGF0ID0gKCpzdGF0ICsgYXZfbG9nMihyZW1haW5kZXIpICsgYWRk aW4pID4+IDE7CisgICAgICAgIHJjLT51cGRhdGVfaGlzdCA9IDA7CisgICAgfQorfQorCitzdGF0 aWMgdm9pZCBpbml0X3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVh bENvZGluZyAqcmMsCisgICAgICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBjb25zdCBp bnQgbG9nMl96b190Yl9oZWlnaHQsCisgICAgICAgIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAg ICBjb25zdCBWVkNTUFMgKnNwcyAgID0gbGMtPmZjLT5wcy5zcHM7CisgICAgaW50IGxvZzJfc2Jf dyA9IChGRk1JTihsb2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodCApIDwgMiA/IDEg OiAyICk7CisgICAgaW50IGxvZzJfc2JfaCA9IGxvZzJfc2JfdzsKKworICAgIGlmICggbG9nMl96 b190Yl93aWR0aCArIGxvZzJfem9fdGJfaGVpZ2h0ID4gMyApIHsKKyAgICAgICAgaWYgKCBsb2cy X3pvX3RiX3dpZHRoIDwgMiApIHsKKyAgICAgICAgICAgIGxvZzJfc2JfdyA9IGxvZzJfem9fdGJf d2lkdGg7CisgICAgICAgICAgICBsb2cyX3NiX2ggPSA0IC0gbG9nMl9zYl93OworICAgICAgICB9 IGVsc2UgaWYgKCBsb2cyX3pvX3RiX2hlaWdodCA8IDIgKSB7CisgICAgICAgICAgICBsb2cyX3Ni X2ggPSBsb2cyX3pvX3RiX2hlaWdodDsKKyAgICAgICAgICAgIGxvZzJfc2JfdyA9IDQgLSBsb2cy X3NiX2g7CisgICAgICAgIH0KKyAgICB9CisgICAgcmMtPmxvZzJfc2JfdyA9IGxvZzJfc2JfdzsK KyAgICByYy0+bG9nMl9zYl9oID0gbG9nMl9zYl9oOworICAgIHJjLT5udW1fc2JfY29lZmYgICA9 IDEgPDwgKGxvZzJfc2JfdyArIGxvZzJfc2JfaCk7CisgICAgcmMtPmxhc3Rfc3ViX2Jsb2NrID0g KCAxIDw8ICggbG9nMl96b190Yl93aWR0aCArIGxvZzJfem9fdGJfaGVpZ2h0IC0gKGxvZzJfc2Jf dyArIGxvZzJfc2JfaCkpKSAtIDE7CisgICAgcmMtPmhpc3RfdmFsdWUgICAgID0gc3BzLT5yLT5z cHNfcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnID8gKDEgPDwgbGMtPmVw LT5zdGF0X2NvZWZmW3RiLT5jX2lkeF0pIDogMDsKKyAgICByYy0+dXBkYXRlX2hpc3QgICAgPSBz cHMtPnItPnNwc19wZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcgPyAxIDog MDsKKyAgICByYy0+cmVtX2JpbnNfcGFzczEgPSAoKCAxIDw8ICggbG9nMl96b190Yl93aWR0aCAr IGxvZzJfem9fdGJfaGVpZ2h0KSkgKiA3ICkgPj4gMjsKKworCisgICAgcmMtPnNiX3NjYW5feF9v ZmYgPSBmZl92dmNfZGlhZ19zY2FuX3hbbG9nMl96b190Yl93aWR0aCAtIGxvZzJfc2Jfd11bbG9n Ml96b190Yl9oZWlnaHQgLSBsb2cyX3NiX2hdOworICAgIHJjLT5zYl9zY2FuX3lfb2ZmID0gZmZf dnZjX2RpYWdfc2Nhbl95W2xvZzJfem9fdGJfd2lkdGggLSBsb2cyX3NiX3ddW2xvZzJfem9fdGJf aGVpZ2h0IC0gbG9nMl9zYl9oXTsKKworICAgIHJjLT5zY2FuX3hfb2ZmID0gZmZfdnZjX2RpYWdf c2Nhbl94W2xvZzJfc2Jfd11bbG9nMl9zYl9oXTsKKyAgICByYy0+c2Nhbl95X29mZiA9IGZmX3Z2 Y19kaWFnX3NjYW5feVtsb2cyX3NiX3ddW2xvZzJfc2JfaF07CisKKyAgICByYy0+aW5mZXJfc2Jf Y2JmID0gMTsKKworICAgIHJjLT53aWR0aF9pbl9zYnMgID0gKDEgPDwgKGxvZzJfem9fdGJfd2lk dGggLSBsb2cyX3NiX3cpKTsKKyAgICByYy0+aGVpZ2h0X2luX3NicyA9ICgxIDw8IChsb2cyX3pv X3RiX2hlaWdodCAtIGxvZzJfc2JfaCkpOworICAgIHJjLT5uYl9zYnMgICAgICAgID0gcmMtPndp ZHRoX2luX3NicyAqIHJjLT5oZWlnaHRfaW5fc2JzOworCisgICAgcmMtPmxhc3Rfc2Nhbl9wb3Mg PSByYy0+bnVtX3NiX2NvZWZmOworICAgIHJjLT5xc3RhdGUgICAgICAgID0gMDsKKworICAgIHJj LT50YiA9IHRiOworfQorCitzdGF0aWMgaW50IHJlc2lkdWFsX3RzX2NvZGluZ19zdWJibG9jayhW VkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCBpKQorewor ICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgID0gbGMtPmN1OworICAgIFRyYW5zZm9ybUJsb2Nr ICp0YiAgICAgID0gcmMtPnRiOworICAgIGNvbnN0IGludCBiZHBjbV9mbGFnICAgID0gY3UtPmJk cGNtX2ZsYWdbdGItPmNfaWR4XTsKKyAgICBjb25zdCBpbnQgeHMgICAgICAgICAgICA9IHJjLT5z Yl9zY2FuX3hfb2ZmW2ldOworICAgIGNvbnN0IGludCB5cyAgICAgICAgICAgID0gcmMtPnNiX3Nj YW5feV9vZmZbaV07CisgICAgdWludDhfdCAqc2JfY29kZWRfZmxhZyAgPSByYy0+c2JfY29kZWRf ZmxhZyArIHlzICogcmMtPndpZHRoX2luX3NicyArIHhzOworICAgIGludCBpbmZlcl9zYl9zaWdf Y29lZmZfZmxhZyA9IDE7CisgICAgaW50IGxhc3Rfc2Nhbl9wb3NfcGFzczEgPSAtMSwgbGFzdF9z Y2FuX3Bvc19wYXNzMiA9IC0xLCBuOworICAgIGludCBhYnNfbGV2ZWxfZ3R4X2ZsYWdbTUFYX1NV Ql9CTE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFXTsKKyAgICBpbnQgYWJzX2xldmVsX3Bh c3MyW01BWF9TVUJfQkxPQ0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0laRV07ICAgICAgIC8vLzwg QWJzTGV2ZWxQYXNzMgorCisgICAgaWYgKGkgIT0gcmMtPmxhc3Rfc3ViX2Jsb2NrIHx8ICFyYy0+ aW5mZXJfc2JfY2JmKQorICAgICAgICAqc2JfY29kZWRfZmxhZyA9IHNiX2NvZGVkX2ZsYWdfZGVj b2RlKGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlzKTsKKyAgICBlbHNlCisgICAgICAgICpz Yl9jb2RlZF9mbGFnID0gMTsKKyAgICBpZiAoKnNiX2NvZGVkX2ZsYWcgJiYgaSA8IHJjLT5sYXN0 X3N1Yl9ibG9jaykKKyAgICAgICAgcmMtPmluZmVyX3NiX2NiZiA9IDA7CisKKyAgICAvL2ZpcnN0 IHNjYW4gcGFzcworICAgIGZvciAobiA9IDA7IG4gPCByYy0+bnVtX3NiX2NvZWZmICYmIHJjLT5y ZW1fYmluc19wYXNzMSA+PSA0OyBuKyspIHsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8 PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQg eWMgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAg IGNvbnN0IGludCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBpbnQgKnNp Z19jb2VmZl9mbGFnICAgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyBvZmY7CisgICAgICAgIGludCAq YWJzX2xldmVsX3Bhc3MxICA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyBvZmY7CisgICAgICAgIGlu dCAqY29lZmZfc2lnbl9sZXZlbCA9IHJjLT5jb2VmZl9zaWduX2xldmVsICsgb2ZmOworICAgICAg ICBpbnQgcGFyX2xldmVsX2ZsYWcgICAgPSAwOworCisgICAgICAgIGFic19sZXZlbF9ndHhfZmxh Z1tuXSA9IDA7CisgICAgICAgIGxhc3Rfc2Nhbl9wb3NfcGFzczEgPSBuOworICAgICAgICBpZiAo KnNiX2NvZGVkX2ZsYWcgJiYgKG4gIT0gcmMtPm51bV9zYl9jb2VmZiAtIDEgfHwgIWluZmVyX3Ni X3NpZ19jb2VmZl9mbGFnKSkgeworICAgICAgICAgICAgKnNpZ19jb2VmZl9mbGFnID0gc2lnX2Nv ZWZmX2ZsYWdfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmlu c19wYXNzMS0tOworICAgICAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykKKyAgICAgICAgICAg ICAgICBpbmZlcl9zYl9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSAobiA9PSByYy0+bnVtX3NiX2NvZWZmIC0gMSkgJiYg aW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgJiYgKnNiX2NvZGVkX2ZsYWc7CisgICAgICAgIH0KKyAg ICAgICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAwOworICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFn KSB7CisgICAgICAgICAgICAqY29lZmZfc2lnbl9sZXZlbCA9IDEgLSAyICogY29lZmZfc2lnbl9m bGFnX3RzX2RlY29kZShsYywgY3UsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgYWJzX2xldmVs X2d0eF9mbGFnW25dID0gYWJzX2xldmVsX2d0MV9mbGFnX3RzX2RlY29kZShsYywgY3UsIHJjLCB4 YywgeWMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAgICAg ICBpZiAoYWJzX2xldmVsX2d0eF9mbGFnW25dKSB7CisgICAgICAgICAgICAgICAgcGFyX2xldmVs X2ZsYWcgPSBwYXJfbGV2ZWxfZmxhZ190c19kZWNvZGUobGMpOworICAgICAgICAgICAgICAgIHJj LT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICph YnNfbGV2ZWxfcGFzczEgPSAqc2lnX2NvZWZmX2ZsYWcgKyBwYXJfbGV2ZWxfZmxhZyArIGFic19s ZXZlbF9ndHhfZmxhZ1tuXTsKKyAgICB9CisKKyAgICAvL2dyZWF0ZXIgdGhhbiB4IHNjYW4gcGFz cworICAgIGZvciAobiA9IDA7IG4gPCByYy0+bnVtX3NiX2NvZWZmICYmIHJjLT5yZW1fYmluc19w YXNzMSA+PSA0OyBuKyspIHsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCByYy0+bG9n Ml9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgID0gKHlz IDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGlu dCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworCisgICAgICAgIGFic19sZXZlbF9wYXNz MltuXSA9IHJjLT5hYnNfbGV2ZWxfcGFzczFbb2ZmXTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDE7 IGogPCA1ICYmIGFic19sZXZlbF9ndHhfZmxhZ1tuXTsgaisrKSB7CisgICAgICAgICAgICBhYnNf bGV2ZWxfZ3R4X2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfdHNfZGVjb2RlKGxjLCBqKTsK KyAgICAgICAgICAgIGFic19sZXZlbF9wYXNzMltuXSArPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl0g PDwgMTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICB9CisgICAg ICAgIGxhc3Rfc2Nhbl9wb3NfcGFzczIgPSBuOworICAgIH0KKworICAgIC8qIHJlbWFpbmRlciBz Y2FuIHBhc3MgKi8KKyAgICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9jb2VmZjsgbisrKSB7 CisgICAgICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nh bl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9o KSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+ dGJfd2lkdGggKyB4YzsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWxfcGFzczEgID0gcmMt PmFic19sZXZlbF9wYXNzMSArIG9mZjsKKyAgICAgICAgaW50ICphYnNfbGV2ZWwgICAgICAgICAg ICAgID0gcmMtPmFic19sZXZlbCArIG9mZjsKKyAgICAgICAgaW50ICpjb2VmZl9zaWduX2xldmVs ICAgICAgID0gcmMtPmNvZWZmX3NpZ25fbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCBhYnNfcmVt YWluZGVyID0gMDsKKworICAgICAgICBpZiAoKG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMiAmJiBh YnNfbGV2ZWxfcGFzczJbbl0gPj0gMTApIHx8CisgICAgICAgICAgICAobiA+IGxhc3Rfc2Nhbl9w b3NfcGFzczIgJiYgbiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxICYmCisgICAgICAgICAgICAqYWJz X2xldmVsX3Bhc3MxID49IDIpIHx8CisgICAgICAgICAgICAobiA+IGxhc3Rfc2Nhbl9wb3NfcGFz czEgJiYgICpzYl9jb2RlZF9mbGFnKSkKKyAgICAgICAgICAgIGFic19yZW1haW5kZXIgPSBhYnNf cmVtYWluZGVyX3RzX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgIGlmIChuIDw9IGxh c3Rfc2Nhbl9wb3NfcGFzczIpIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSBhYnNfbGV2ZWxf cGFzczJbbl0gKyAyICogYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChuIDw9IGxh c3Rfc2Nhbl9wb3NfcGFzczEpIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSAqYWJzX2xldmVs X3Bhc3MxICsgMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAqYWJzX2xldmVsID0gYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgICAgIGlmIChhYnNfcmVtYWlu ZGVyKSB7CisgICAgICAgICAgICAgICAgLy9uID4gbGFzdFNjYW5Qb3NQYXNzMQorICAgICAgICAg ICAgICAgICpjb2VmZl9zaWduX2xldmVsID0gMSAtIDIgKiBjb2VmZl9zaWduX2ZsYWdfZGVjb2Rl KGxjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWJkcGNtX2ZsYWcg JiYgbiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgbGVm dCAgPSB4YyA+IDAgPyBhYnNfbGV2ZWxbLTFdIDogMDsKKyAgICAgICAgICAgIGNvbnN0IGludCBh Ym92ZSA9IHljID4gMCA/IGFic19sZXZlbFstdGItPnRiX3dpZHRoXSA6IDA7CisgICAgICAgICAg ICBjb25zdCBpbnQgcHJlZCA9IEZGTUFYKGxlZnQsIGFib3ZlKTsKKworICAgICAgICAgICAgaWYg KCphYnNfbGV2ZWwgPT0gMSAmJiBwcmVkID4gMCkKKyAgICAgICAgICAgICAgICAqYWJzX2xldmVs ID0gcHJlZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCphYnNfbGV2ZWwgPiAwICYmICphYnNfbGV2 ZWwgPD0gcHJlZCkKKyAgICAgICAgICAgICAgICAoKmFic19sZXZlbCktLTsKKyAgICAgICAgfQor ICAgICAgICBpZiAoKmFic19sZXZlbCkgeworICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0g KmNvZWZmX3NpZ25fbGV2ZWwgKiAqYWJzX2xldmVsOworICAgICAgICAgICAgdGItPm1heF9zY2Fu X3ggPSBGRk1BWCh4YywgdGItPm1heF9zY2FuX3gpOworICAgICAgICAgICAgdGItPm1heF9zY2Fu X3kgPSBGRk1BWCh5YywgdGItPm1heF9zY2FuX3kpOworICAgICAgICAgICAgdGItPm1pbl9zY2Fu X3ggPSBGRk1JTih4YywgdGItPm1pbl9zY2FuX3gpOworICAgICAgICAgICAgdGItPm1pbl9zY2Fu X3kgPSBGRk1JTih5YywgdGItPm1pbl9zY2FuX3kpOworICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgdGItPmNvZWZmc1tvZmZdID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgaW50IGhsc19yZXNpZHVhbF90c19jb2RpbmcoVlZDTG9jYWxDb250 ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIFJlc2lkdWFsQ29kaW5nIHJjOwor ICAgIHRiLT5taW5fc2Nhbl94ID0gdGItPm1pbl9zY2FuX3kgPSBJTlRfTUFYOworICAgIGluaXRf cmVzaWR1YWxfY29kaW5nKGxjLCAmcmMsIHRiLT5sb2cyX3RiX3dpZHRoLCB0Yi0+bG9nMl90Yl9o ZWlnaHQsIHRiKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8PSByYy5sYXN0X3N1Yl9ibG9jazsg aSsrKSB7CisgICAgICAgIGludCByZXQgPSByZXNpZHVhbF90c19jb2Rpbmdfc3ViYmxvY2sobGMs ICZyYywgaSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsK KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgcmVzaWR1YWxf Y29kaW5nX3N1YmJsb2NrKFZWQ0xvY2FsQ29udGV4dCAqbGMsIFJlc2lkdWFsQ29kaW5nICpyYywg Y29uc3QgaW50IGkpCit7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggICA9IGxj LT5zYy0+c2gucjsKKyAgICBUcmFuc2Zvcm1CbG9jayAqdGIgICAgICAgICAgICAgID0gcmMtPnRi OworICAgIGludCBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IsIGxhc3Rfc2lnX3NjYW5fcG9zX3NiOwor ICAgIGludCBmaXJzdF9wb3NfbW9kZTAsIGZpcnN0X3Bvc19tb2RlMTsKKyAgICBpbnQgaW5mZXJf c2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgIGludCBuLCBzaWdfaGlkZGVuX2ZsYWcsIHN1 bSA9IDA7CisgICAgaW50IGFic19sZXZlbF9ndDJfZmxhZ1tNQVhfU1VCX0JMT0NLX1NJWkUgKiBN QVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGNvbnN0IGludCBzdGFydF9xc3RhdGVfc2IgPSByYy0+ cXN0YXRlOworICAgIGNvbnN0IGludCB4cyA9IHJjLT5zYl9zY2FuX3hfb2ZmW2ldOworICAgIGNv bnN0IGludCB5cyA9IHJjLT5zYl9zY2FuX3lfb2ZmW2ldOworICAgIHVpbnQ4X3QgKnNiX2NvZGVk X2ZsYWcgPSByYy0+c2JfY29kZWRfZmxhZyArIHlzICogcmMtPndpZHRoX2luX3NicyArIHhzOwor CisKKyAgICBhdl9hc3NlcnQwKHJjLT5udW1fc2JfY29lZmYgPD0gTUFYX1NVQl9CTE9DS19TSVpF ICogTUFYX1NVQl9CTE9DS19TSVpFKTsKKyAgICBpZiAoaSA8IHJjLT5sYXN0X3N1Yl9ibG9jayAm JiBpID4gMCkgeworICAgICAgICAqc2JfY29kZWRfZmxhZyA9IHNiX2NvZGVkX2ZsYWdfZGVjb2Rl KGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlzKTsKKyAgICAgICAgaW5mZXJfc2JfZGNfc2ln X2NvZWZmX2ZsYWcgPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgICpzYl9jb2RlZF9mbGFnID0g MTsKKyAgICB9CisgICAgaWYgKCpzYl9jb2RlZF9mbGFnICYmICh4cyA+IDMgfHwgeXMgPiAzKSAm JiB0Yi0+Y19pZHggPT0gMCkKKyAgICAgICAgbGMtPnBhcnNlLm10c196ZXJvX291dF9zaWdfY29l ZmZfZmxhZyA9IDA7CisKKyAgICBpZiAoISpzYl9jb2RlZF9mbGFnKQorICAgICAgICByZXR1cm4g MDsKKworICAgIGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA9IHJjLT5udW1fc2JfY29lZmY7CisgICAg bGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSAtMTsKKyAgICBmaXJzdF9wb3NfbW9kZTAgPSAoaSA9PSBy Yy0+bGFzdF9zdWJfYmxvY2sgPyByYy0+bGFzdF9zY2FuX3BvcyA6IHJjLT5udW1fc2JfY29lZmYg LTEpOworICAgIGZpcnN0X3Bvc19tb2RlMSA9IGZpcnN0X3Bvc19tb2RlMDsKKyAgICBmb3IgKG4g PSBmaXJzdF9wb3NfbW9kZTA7IG4gPj0gMCAmJiByYy0+cmVtX2JpbnNfcGFzczEgPj0gNDsgbi0t KSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgID0gKHhzIDw8IHJjLT5sb2cyX3NiX3cpICsgcmMt PnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAgID0gKHlzIDw8IHJjLT5sb2cy X3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCBsYXN0ID0gKHhj ID09IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggJiYgeWMgPT0gcmMtPmxhc3Rfc2lnbmlm aWNhbnRfY29lZmZfeSk7CisgICAgICAgIGludCAqYWJzX2xldmVsX3Bhc3MxID0gcmMtPmFic19s ZXZlbF9wYXNzMSArIHljICogdGItPnRiX3dpZHRoICsgeGM7CisgICAgICAgIGludCAqc2lnX2Nv ZWZmX2ZsYWcgID0gcmMtPnNpZ19jb2VmZl9mbGFnICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsK KworICAgICAgICBpZiAoKG4gPiAwIHx8ICFpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxhZyApICYm ICFsYXN0KSB7CisgICAgICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSBzaWdfY29lZmZfZmxhZ19k ZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07 CisgICAgICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFnKQorICAgICAgICAgICAgICAgIGluZmVy X3NiX2RjX3NpZ19jb2VmZl9mbGFnID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICpzaWdfY29lZmZfZmxhZyA9IGxhc3QgfHwgKCFyYy0+c2Nhbl94X29mZltuXSAmJiAhcmMgLT5z Y2FuX3lfb2ZmW25dICYmCisgICAgICAgICAgICAgICAgaW5mZXJfc2JfZGNfc2lnX2NvZWZmX2Zs YWcpOworICAgICAgICB9CisgICAgICAgICphYnNfbGV2ZWxfcGFzczEgPSAwOworICAgICAgICBp ZiAoKnNpZ19jb2VmZl9mbGFnKSB7CisgICAgICAgICAgICBpbnQgYWJzX2xldmVsX2d0MV9mbGFn LCBwYXJfbGV2ZWxfZmxhZyA9IDA7CisgICAgICAgICAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2d0 eF9mbGFnX2luYyhyYywgeGMsIHljLCBsYXN0KTsKKyAgICAgICAgICAgIGFic19sZXZlbF9ndDFf ZmxhZyA9IGFic19sZXZlbF9ndHhfZmxhZ19kZWNvZGUobGMsIGluYyk7CisgICAgICAgICAgICBy Yy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAgICAgIGlmIChhYnNfbGV2ZWxfZ3QxX2ZsYWcp IHsKKyAgICAgICAgICAgICAgICBwYXJfbGV2ZWxfZmxhZyA9IHBhcl9sZXZlbF9mbGFnX2RlY29k ZShsYywgaW5jKTsKKyAgICAgICAgICAgICAgICBhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSBhYnNf bGV2ZWxfZ3R4X2ZsYWdfZGVjb2RlKGxjLCBpbmMgKyAzMik7CisgICAgICAgICAgICAgICAgcmMt PnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgIGFic19sZXZlbF9ndDJfZmxhZ1tuXSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiAobGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPT0gLTEpCisgICAgICAgICAgICAgICAgbGFzdF9z aWdfc2Nhbl9wb3Nfc2IgPSBuOworICAgICAgICAgICAgZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID0g bjsKKworICAgICAgICAgICAgKmFic19sZXZlbF9wYXNzMSA9CisgICAgICAgICAgICAgICAgMSAg KyBwYXJfbGV2ZWxfZmxhZyArIGFic19sZXZlbF9ndDFfZmxhZyArIChhYnNfbGV2ZWxfZ3QyX2Zs YWdbbl0gPDwgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhYnNfbGV2ZWxfZ3Qy X2ZsYWdbbl0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJzaC0+c2hfZGVwX3F1YW50 X3VzZWRfZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVfdHJhbnNsYXRlX3Rh YmxlW3JjLT5xc3RhdGVdWyphYnNfbGV2ZWxfcGFzczEgJiAxXTsKKworICAgICAgICBmaXJzdF9w b3NfbW9kZTEgPSBuIC0gMTsKKyAgICB9CisgICAgZm9yIChuID0gZmlyc3RfcG9zX21vZGUwOyBu ID4gZmlyc3RfcG9zX21vZGUxOyBuLS0pIHsKKyAgICAgICAgY29uc3QgaW50IHhjID0gKHhzIDw8 IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5 YyA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBj b25zdCBpbnQgKmFic19sZXZlbF9wYXNzMSAgPSByYy0+YWJzX2xldmVsX3Bhc3MxICsgeWMgKiB0 Yi0+dGJfd2lkdGggKyB4YzsKKyAgICAgICAgaW50ICphYnNfbGV2ZWwgICAgICAgICAgICAgID0g cmMtPmFic19sZXZlbCArIHljICogdGItPnRiX3dpZHRoICsgeGM7CisKKyAgICAgICAgKmFic19s ZXZlbCA9ICphYnNfbGV2ZWxfcGFzczE7CisgICAgICAgIGlmIChhYnNfbGV2ZWxfZ3QyX2ZsYWdb bl0pIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBhYnNfcmVtYWluZGVyID0gYWJzX3JlbWFpbmRl cl9kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgZXBfdXBkYXRlX2hpc3QobGMt PmVwLCByYywgYWJzX3JlbWFpbmRlciwgMik7CisgICAgICAgICAgICAqYWJzX2xldmVsICs9IDIg KiBhYnNfcmVtYWluZGVyOworICAgICAgICB9CisgICAgfQorICAgIGZvciAobiA9IGZpcnN0X3Bv c19tb2RlMTsgbiA+PSAwOyBuLS0pIHsKKyAgICAgICAgY29uc3QgaW50IHhjICAgID0gKHhzIDw8 IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5 YyAgICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAg ICBpbnQgKmFic19sZXZlbCAgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4 YzsKKworICAgICAgICBpZiAoKnNiX2NvZGVkX2ZsYWcpIHsKKyAgICAgICAgICAgIGNvbnN0IGlu dCBkZWNfYWJzX2xldmVsID0gZGVjX2Fic19sZXZlbF9kZWNvZGUobGMsIHJjLCB4YywgeWMsIGFi c19sZXZlbCk7CisgICAgICAgICAgICBlcF91cGRhdGVfaGlzdChsYy0+ZXAsIHJjLCBkZWNfYWJz X2xldmVsLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmFic19sZXZlbCA+IDApIHsKKyAg ICAgICAgICAgIGlmIChsYXN0X3NpZ19zY2FuX3Bvc19zYiA9PSAtMSkKKyAgICAgICAgICAgICAg ICBsYXN0X3NpZ19zY2FuX3Bvc19zYiA9IG47CisgICAgICAgICAgICBmaXJzdF9zaWdfc2Nhbl9w b3Nfc2IgPSBuOworICAgICAgICB9CisgICAgICAgIGlmIChyc2gtPnNoX2RlcF9xdWFudF91c2Vk X2ZsYWcpCisgICAgICAgICAgICByYy0+cXN0YXRlID0gcXN0YXRlX3RyYW5zbGF0ZV90YWJsZVty Yy0+cXN0YXRlXVsqYWJzX2xldmVsICYgMV07CisgICAgfQorICAgIHNpZ19oaWRkZW5fZmxhZyA9 IHJzaC0+c2hfc2lnbl9kYXRhX2hpZGluZ191c2VkX2ZsYWcgJiYKKyAgICAgICAgKGxhc3Rfc2ln X3NjYW5fcG9zX3NiIC0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID4gMyA/IDEgOiAwKTsKKworICAg IGlmIChyc2gtPnNoX2RlcF9xdWFudF91c2VkX2ZsYWcpCisgICAgICAgIHJjLT5xc3RhdGUgPSBz dGFydF9xc3RhdGVfc2I7CisgICAgbiA9IChpID09IHJjLT5sYXN0X3N1Yl9ibG9jayA/IHJjLT5s YXN0X3NjYW5fcG9zIDogcmMtPm51bV9zYl9jb2VmZiAtMSk7CisgICAgZm9yICgvKiBub3RoaW5n ICovOyBuID49IDA7IG4tLSkgeworICAgICAgICBpbnQgdHJhbnNfY29lZmZfbGV2ZWw7CisgICAg ICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29m ZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJj LT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+dGJfd2lk dGggKyB4YzsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWwgPSByYy0+YWJzX2xldmVsICsg b2ZmOworCisgICAgICAgIGlmICgqYWJzX2xldmVsID4gMCkgeworICAgICAgICAgICAgaW50IHNp Z24gPSAxOworICAgICAgICAgICAgaWYgKCFzaWdfaGlkZGVuX2ZsYWcgfHwgKG4gIT0gZmlyc3Rf c2lnX3NjYW5fcG9zX3NiKSkKKyAgICAgICAgICAgICAgICBzaWduID0gMSAtIDIgKiBjb2VmZl9z aWduX2ZsYWdfZGVjb2RlKGxjKTsKKyAgICAgICAgICAgIGlmIChyc2gtPnNoX2RlcF9xdWFudF91 c2VkX2ZsYWcpIHsKKyAgICAgICAgICAgICAgICB0cmFuc19jb2VmZl9sZXZlbCA9ICgyICogKmFi c19sZXZlbCAtIChyYy0+cXN0YXRlID4gMSkpICogc2lnbjsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgdHJhbnNfY29lZmZfbGV2ZWwgPSAqYWJzX2xldmVsICogc2lnbjsK KyAgICAgICAgICAgICAgICBpZiAoc2lnX2hpZGRlbl9mbGFnKSB7CisgICAgICAgICAgICAgICAg ICAgIHN1bSArPSAqYWJzX2xldmVsOworICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSBmaXJz dF9zaWdfc2Nhbl9wb3Nfc2IgJiYgKHN1bSAlIDIpKQorICAgICAgICAgICAgICAgICAgICAgICAg dHJhbnNfY29lZmZfbGV2ZWwgPSAtdHJhbnNfY29lZmZfbGV2ZWw7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0gdHJhbnNfY29l ZmZfbGV2ZWw7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feCA9IEZGTUFYKHhjLCB0Yi0+bWF4 X3NjYW5feCk7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feSA9IEZGTUFYKHljLCB0Yi0+bWF4 X3NjYW5feSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJzaC0+c2hfZGVwX3F1YW50X3VzZWRf ZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVfdHJhbnNsYXRlX3RhYmxlW3Jj LT5xc3RhdGVdWyphYnNfbGV2ZWwgJiAxXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgZGVyaXZlX2xhc3Rfc2Nhbl9wb3MoUmVzaWR1YWxDb2RpbmcgKnJjLAorICAg IGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBpbnQgbG9nMl96b190Yl9oZWlnaHQpCit7Cisg ICAgaW50IHhjLCB5YywgeHMsIHlzOworICAgIGRvIHsKKyAgICAgICAgaWYgKHJjLT5sYXN0X3Nj YW5fcG9zID09IDApIHsKKyAgICAgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zID0gcmMtPm51bV9z Yl9jb2VmZjsKKyAgICAgICAgICAgIHJjLT5sYXN0X3N1Yl9ibG9jay0tOworICAgICAgICB9Cisg ICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zLS07CisgICAgICAgIHhzID0gcmMtPnNiX3NjYW5feF9v ZmZbcmMtPmxhc3Rfc3ViX2Jsb2NrXTsKKyAgICAgICAgeXMgPSByYy0+c2Jfc2Nhbl95X29mZlty Yy0+bGFzdF9zdWJfYmxvY2tdOworICAgICAgICB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSAr IHJjLT5zY2FuX3hfb2ZmW3JjLT5sYXN0X3NjYW5fcG9zXTsKKyAgICAgICAgeWMgPSAoeXMgPDwg cmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltyYy0+bGFzdF9zY2FuX3Bvc107CisgICAg fSB3aGlsZSAoKHhjICE9IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3gpIHx8ICh5YyAhPSBy Yy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95KSk7Cit9CisKK3N0YXRpYyB2b2lkIGxhc3Rfc2ln bmlmaWNhbnRfY29lZmZfeF95X2RlY29kZShSZXNpZHVhbENvZGluZyAqcmMsIFZWQ0xvY2FsQ29u dGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfem9fdGJfd2lkdGgsIGNvbnN0IGludCBsb2cy X3pvX3RiX2hlaWdodCkKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCAgID0g bGMtPnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiAgICAgICAgPSByYy0+ dGI7CisgICAgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCwgbGFzdF9zaWduaWZpY2FudF9j b2VmZl95OworCisgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID0gbGFzdF9zaWduaWZpY2Fu dF9jb2VmZl94X3ByZWZpeF9kZWNvZGUobGMsCisgICAgICAgICAgICB0Yi0+bG9nMl90Yl93aWR0 aCwgbG9nMl96b190Yl93aWR0aCwgdGItPmNfaWR4KTsKKworICAgIGxhc3Rfc2lnbmlmaWNhbnRf Y29lZmZfeSA9IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeV9wcmVmaXhfZGVjb2RlKGxjLAorICAg ICAgICB0Yi0+bG9nMl90Yl9oZWlnaHQsIGxvZzJfem9fdGJfaGVpZ2h0LCB0Yi0+Y19pZHgpOwor CisgICAgaWYgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA+IDMpIHsKKyAgICAgICAgaW50IHN1 ZmZpeCA9IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNvZGUobGMsIGxhc3Rfc2lnbmlmaWNhbnRf Y29lZmZfeCk7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9ICgxIDw8ICgobGFz dF9zaWduaWZpY2FudF9jb2VmZl94ID4+IDEpIC0gMSkpICoKKyAgICAgICAgICAgICgyICsgKGxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeCAmIDEpKSArIHN1ZmZpeDsKKyAgICB9CisgICAgaWYgKGxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA+IDMpIHsKKyAgICAgICAgaW50IHN1ZmZpeCA9IGxhc3Rf c2lnX2NvZWZmX3N1ZmZpeF9kZWNvZGUobGMsIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSk7Cisg ICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9ICgxIDw8ICgobGFzdF9zaWduaWZpY2Fu dF9jb2VmZl95ID4+IDEpIC0gMSkpICoKKyAgICAgICAgICAgICgyICsgKGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeSAmIDEpKSArIHN1ZmZpeDsKKyAgICB9CisgICAgaWYgKHJzaC0+c2hfcmV2ZXJz ZV9sYXN0X3NpZ19jb2VmZl9mbGFnKSB7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eCA9ICgxIDw8IGxvZzJfem9fdGJfd2lkdGgpIC0gMSAtIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eDsKKyAgICAgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID0gKDEgPDwgbG9nMl96b190Yl9o ZWlnaHQpIC0gMSAtIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeTsKKyAgICB9CisgICAgcmMtPmxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeDsKKyAgICBy Yy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl95Owor fQorCitzdGF0aWMgaW50IGhsc19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywg VHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IFZWQ1NQUyAqc3BzICAgICAgICAgICA9 IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgICAgICA9IGxjLT5j dTsKKyAgICBjb25zdCBpbnQgbG9nMl90Yl93aWR0aCAgICAgPSB0Yi0+bG9nMl90Yl93aWR0aDsK KyAgICBjb25zdCBpbnQgbG9nMl90Yl9oZWlnaHQgICAgPSB0Yi0+bG9nMl90Yl9oZWlnaHQ7Cisg ICAgY29uc3QgaW50IGNfaWR4ICAgICAgICAgICAgID0gdGItPmNfaWR4OworICAgIGludCBsb2cy X3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodDsKKyAgICBSZXNpZHVhbENvZGluZyByYzsK KworICAgIGlmIChzcHMtPnItPnNwc19tdHNfZW5hYmxlZF9mbGFnICYmIGN1LT5zYnRfZmxhZyAm JiBjX2lkeCA9PSAwICYmIGxvZzJfdGJfd2lkdGggPT0gNSAmJiBsb2cyX3RiX2hlaWdodCA8IDYp CisgICAgICAgIGxvZzJfem9fdGJfd2lkdGggPSA0OworICAgIGVsc2UKKyAgICAgICAgbG9nMl96 b190Yl93aWR0aCA9IEZGTUlOKGxvZzJfdGJfd2lkdGgsIDUgKTsKKworICAgIGlmIChzcHMtPnIt PnNwc19tdHNfZW5hYmxlZF9mbGFnICYmIGN1LT5zYnRfZmxhZyAmJiBjX2lkeCA9PSAwICYmIGxv ZzJfdGJfd2lkdGggPCA2ICYmIGxvZzJfdGJfaGVpZ2h0ID09IDUgKQorICAgICAgICBsb2cyX3pv X3RiX2hlaWdodCA9IDQ7CisgICAgZWxzZQorICAgICAgICBsb2cyX3pvX3RiX2hlaWdodCA9IEZG TUlOKGxvZzJfdGJfaGVpZ2h0LCA1KTsKKworICAgIGluaXRfcmVzaWR1YWxfY29kaW5nKGxjLCAm cmMsIGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0LCB0Yik7CisgICAgbGFzdF9z aWduaWZpY2FudF9jb2VmZl94X3lfZGVjb2RlKCZyYywgbGMsIGxvZzJfem9fdGJfd2lkdGgsIGxv ZzJfem9fdGJfaGVpZ2h0KTsKKyAgICBkZXJpdmVfbGFzdF9zY2FuX3BvcygmcmMsIGxvZzJfem9f dGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0KTsKKworICAgIGlmIChyYy5sYXN0X3N1Yl9ibG9j ayA9PSAwICYmIGxvZzJfdGJfd2lkdGggPj0gMiAmJiBsb2cyX3RiX2hlaWdodCA+PSAyICYmICF0 Yi0+dHMgJiYgcmMubGFzdF9zY2FuX3BvcyA+IDApCisgICAgICAgIGxjLT5wYXJzZS5sZm5zdF9k Y19vbmx5ID0gMDsKKyAgICBpZiAoKHJjLmxhc3Rfc3ViX2Jsb2NrID4gMCAmJiBsb2cyX3RiX3dp ZHRoID49IDIgJiYgbG9nMl90Yl9oZWlnaHQgPj0gMiApIHx8CisgICAgICAgICAocmMubGFzdF9z Y2FuX3BvcyA+IDcgJiYgKGxvZzJfdGJfd2lkdGggPT0gMiB8fCBsb2cyX3RiX3dpZHRoID09IDMg KSAmJgorICAgICAgICAgbG9nMl90Yl93aWR0aCA9PSBsb2cyX3RiX2hlaWdodCkpCisgICAgICAg IGxjLT5wYXJzZS5sZm5zdF96ZXJvX291dF9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgaWYgKChy Yy5sYXN0X3N1Yl9ibG9jayA+IDAgfHwgcmMubGFzdF9zY2FuX3BvcyA+IDAgKSAmJiBjX2lkeCA9 PSAwKQorICAgICAgICBsYy0+cGFyc2UubXRzX2RjX29ubHkgPSAwOworCisgICAgbWVtc2V0KHRi LT5jb2VmZnMsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YoKnRiLT5j b2VmZnMpKTsKKyAgICBtZW1zZXQocmMuYWJzX2xldmVsLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+ dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLmFic19sZXZlbFswXSkpOworICAgIG1lbXNldChyYy5zYl9j b2RlZF9mbGFnLCAwLCByYy5uYl9zYnMpOworICAgIG1lbXNldChyYy5hYnNfbGV2ZWxfcGFzczEs IDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YocmMuYWJzX2xldmVsX3Bh c3MxWzBdKSk7CisgICAgbWVtc2V0KHJjLnNpZ19jb2VmZl9mbGFnLCAwLCB0Yi0+dGJfd2lkdGgg KiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLnNpZ19jb2VmZl9mbGFnWzBdKSk7CisKKyAgICBm b3IgKGludCBpID0gcmMubGFzdF9zdWJfYmxvY2s7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlu dCByZXQgPSByZXNpZHVhbF9jb2Rpbmdfc3ViYmxvY2sobGMsICZyYywgaSk7CisgICAgICAgIGlm IChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1cm4g MDsKK30KKworaW50IGZmX3Z2Y19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywg VHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNo ICAgPSBsYy0+c2MtPnNoLnI7CisgICAgY29uc3QgaW50IHRzICAgICAgICAgICAgICAgICAgICA9 ICFyc2gtPnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9mbGFnICYmIHRiLT50czsKKwor ICAgIHJldHVybiB0cyA/IGhsc19yZXNpZHVhbF90c19jb2RpbmcobGMsIHRiKSA6IGhsc19yZXNp ZHVhbF9jb2RpbmcobGMsIHRiKTsKK30KKworaW50IGZmX3Z2Y19jdV9jb2RlZF9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9DT0RFRF9GTEFHKTsK K30KKworaW50IGZmX3Z2Y19zYnRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNv bnN0IGludCB3ICAgICA9IGxjLT5jdS0+Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGggICAgID0g bGMtPmN1LT5jYl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyAgID0gdyAqIGggPD0gMjU2Owor ICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0JUX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZj X3NidF9xdWFkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NB QkFDKENVX1NCVF9RVUFEX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3NidF9ob3Jpem9udGFsX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyA9IGxjLT5jdS0+Y2Jf d2lkdGg7CisgICAgY29uc3QgaW50IGggPSBsYy0+Y3UtPmNiX2hlaWdodDsKKyAgICBjb25zdCBp bnQgaW5jID0gKHcgPT0gaCkgPyAwIDogKCh3IDwgaCkgPyAxIDogMik7CisgICAgcmV0dXJuIEdF VF9DQUJBQyhDVV9TQlRfSE9SSVpPTlRBTF9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19z YnRfcG9zX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KENVX1NCVF9QT1NfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfbGZuc3RfaWR4KFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGNvbnN0IGludCBpbmMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoTEZOU1RfSURY ICsgaW5jKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFHRVRfQ0FCQUMoTEZOU1RfSURY ICsgMikpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiAyOworfQorCitpbnQgZmZfdnZj X210c19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkg PSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIGlmICghR0VUX0NBQkFDKE1UU19JRFggKyBpKSkK KyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZm X3Z2Y19lbmRfb2Zfc2xpY2VfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAg ICByZXR1cm4gZ2V0X2NhYmFjX3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92 dmNfZW5kX29mX3RpbGVfb25lX2JpdChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVy biBnZXRfY2FiYWNfdGVybWluYXRlKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19lbmRf b2Zfc3Vic2V0X29uZV9iaXQoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0 X2NhYmFjX3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7Cit9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVj L3Z2Yy92dmNfY2FiYWMuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjViYjFhZTgzZjcKLS0tIC9kZXYvbnVsbAorKysg Yi9saWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIFZW QyBDQUJBQyBkZWNvZGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE51byBNaQorICoKKyAq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNfVlZDX0NB QkFDX0gKKyNkZWZpbmUgQVZDT0RFQ19WVkNfQ0FCQUNfSAorCisjaW5jbHVkZSAidnZjX2N0dS5o IgorCitpbnQgZmZfdnZjX2NhYmFjX2luaXQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGN0dV9p ZHgsIGludCByeCwgaW50IHJ5KTsKKworLy9zYW8KK2ludCBmZl92dmNfc2FvX21lcmdlX2ZsYWdf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fdHlwZV9pZHhfZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3NpdGlvbl9k ZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfYWJzX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX29mZnNldF9zaWduX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX2VvX2NsYXNzX2RlY29k ZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9hbGYKK2ludCBmZl92dmNfYWxmX2N0Yl9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCByeCwgaW50IHJ5LCBpbnQgY19pZHgpOworaW50IGZm X3Z2Y19hbGZfdXNlX2Fwc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19h bGZfbHVtYV9wcmV2X2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZj X2FsZl9sdW1hX2ZpeGVkX2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGNfaWR4 LCBpbnQgbnVtX2Nocm9tYV9maWx0ZXJzKTsKK2ludCBmZl92dmNfYWxmX2N0Yl9jY19pZGMoVlZD TG9jYWxDb250ZXh0ICpsYywgaW50IHJ4LCBpbnQgcnksIGludCBpZHgsIGludCBjY19maWx0ZXJz X3NpZ25hbGxlZCk7CisKKy8vY29kaW5nX3RyZWUKK2ludCBmZl92dmNfc3BsaXRfY3VfZmxhZyhW VkNMb2NhbENvbnRleHQqIGxjLCBpbnQgeDAsIGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2Jf aGVpZ2h0LAorICAgIGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOworVlZD U3BsaXRNb2RlIGZmX3Z2Y19zcGxpdF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsICBpbnQgeDAs IGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2JfaGVpZ2h0LAorICAgIGludCBjcXRfZGVwdGgs IGludCBtdHRfZGVwdGgsIGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOwor aW50IGZmX3Z2Y19ub25faW50ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgeDAsIGlu dCB5MCwgaW50IGNoX3R5cGUpOworCisvL2NvZGluZyB1bml0CitpbnQgZmZfdnZjX3ByZWRfbW9k ZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpc19jaHJvbWEpOworaW50IGZmX3Z2Y19w cmVkX21vZGVfcGx0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJh X2JkcGNtX2x1bWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFf YmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50 cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2lu dHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmN1X3Nr aXBfZmxhZyk7CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9pYmNfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjLCBpbnQgY2hfdHlwZSk7CitpbnQgZmZfdnZjX2N1X2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX2FicyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfY3VfcXBfZGVsdGFfc2lnbl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMp OworaW50IGZmX3Z2Y19zYnRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf c2J0X3F1YWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X2hvcml6 b250YWxfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X3Bvc19mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworCisvL2ludHJhCitpbnQgZmZfdnZjX2ludHJhX21pcF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmludHJhX21pcF9mbGFnKTsK K2ludCBmZl92dmNfaW50cmFfbWlwX3RyYW5zcG9zZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQg ZmZfdnZjX2ludHJhX2x1bWFfcmVmX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7Citl bnVtIElzcFR5cGUgZmZfdnZjX2lzcF9zcGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGlu dCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFf bXBtX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbm90 X3BsYW5hcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRyYV9zdWJwYXJ0aXRpb25z X21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChWVkNMb2NhbENvbnRl eHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1fcmVtYWluZGVyKFZWQ0xvY2FsQ29u dGV4dCAqbGMpOworaW50IGZmX3Z2Y19jY2xtX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfY2NsbV9tb2RlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBm Zl92dmNfaW50cmFfY2hyb21hX3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9p bnRlcgoraW50IGZmX3Z2Y19nZW5lcmFsX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7Citp bnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbWF4 X251bV9zdWJibG9ja19tZXJnZV9jYW5kKTsKK2ludCBmZl92dmNfcmVndWxhcl9tZXJnZV9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjdV9za2lwX2ZsYWcpOworaW50IGZmX3Z2Y19tZXJn ZV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21tdmRfbWVyZ2VfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbW12ZF9jYW5kX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYyk7Cit2b2lkIGZmX3Z2Y19tbXZkX29mZnNldF9jb2RpbmcoVlZDTG9jYWxDb250 ZXh0ICpsYywgTXYgKm12ZF9vZmZzZXQsIGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnKTsK K2ludCBmZl92dmNfY2lpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19t ZXJnZV9ncG1fcGFydGl0aW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf bWVyZ2VfZ3BtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgaWR4KTsKK1ByZWRGbGFnIGZm X3Z2Y19wcmVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGlzX2IpOworaW50IGZmX3Z2 Y19pbnRlcl9hZmZpbmVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3Vf YWZmaW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc3ltX212 ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19yZWZfaWR4X2x4KFZWQ0xv Y2FsQ29udGV4dCAqbGMsIHVpbnQ4X3QgbmJfcmVmcyk7CitpbnQgZmZfdnZjX2Fic19tdmRfZ3Jl YXRlcjBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWJzX212ZF9ncmVh dGVyMV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hYnNfbXZkX21pbnVz MihWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps Yyk7CitpbnQgZmZfdnZjX2FtdnJfc2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGludGVy X2FmZmluZV9mbGFnLCBQcmVkTW9kZSBwcmVkX21vZGUsIGludCBoYXNfYW12cl9mbGFnKTsKK2lu dCBmZl92dmNfYmN3X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbm9fYmFja3dhcmRfcHJl ZF9mbGFnKTsKKworLy90cmFuc2Zvcm0KK2ludCBmZl92dmNfdHVfY2JfY29kZWRfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfY3JfY29kZWRfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3R1X3lfY29kZWRf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNl dF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBfb2Zm c2V0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9y ZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCB0dV9jYl9jb2RlZF9mbGFnLCBp bnQgdHVfY3JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYywgaW50IGN0eCk7CitpbnQgZmZfdnZjX3Jlc2lkdWFsX2NvZGluZyhW VkNMb2NhbENvbnRleHQgKmxjLCBUcmFuc2Zvcm1CbG9jayAqdGIpOworaW50IGZmX3Z2Y19sZm5z dF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGluYyk7CitpbnQgZmZfdnZjX210c19pZHgo VlZDTG9jYWxDb250ZXh0ICpsYyk7CisKK2ludCBmZl92dmNfZW5kX29mX3NsaWNlX2ZsYWdfZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2ZfdGlsZV9vbmVfYml0 KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2Zfc3Vic2V0X29uZV9iaXQo VlZDTG9jYWxDb250ZXh0ICpsYyk7CisKKyNlbmRpZiAvL0FWQ09ERUNfVlZDX0NBQkFDX0gKZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuYyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19j dHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43OGIxM2ZmYjAwCi0t LSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5jCkBAIC0wLDAgKzEsMzIg QEAKKy8qCisgKiBWVkMgQ1RVKENvZGluZyBUcmVlIFVuaXQpIHBhcnNlcgorICoKKyAqIENvcHly aWdodCAoQykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcu CisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisg Ki8KKworI2luY2x1ZGUgInZ2Y19jdHUuaCIKKwordm9pZCBmZl92dmNfZXBfaW5pdF9zdGF0X2Nv ZWZmKEVudHJ5UG9pbnQgKmVwLAorCWNvbnN0IGludCBiaXRfZGVwdGgsIGNvbnN0IGludCBwZXJz aXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcpCit7CisgICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhlcC0+c3RhdF9jb2VmZik7ICsraSkgeworICAgICAg ICBlcC0+c3RhdF9jb2VmZltpXSA9CisgICAgICAgICAgICBwZXJzaXN0ZW50X3JpY2VfYWRhcHRh dGlvbl9lbmFibGVkX2ZsYWcgPyAyICogKGF2X2xvZzIoYml0X2RlcHRoIC0gMTApKSA6IDA7Cisg ICAgfQorfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5oIGIvbGliYXZjb2Rl Yy92dmMvdnZjX2N0dS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmVi OTE3ZGNiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmgKQEAg LTAsMCArMSw0NjMgQEAKKy8qCisgKiBWVkMgQ1RVKENvZGluZyBUcmVlIFVuaXQpIHBhcnNlcgor ICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBG Rm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw LTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVDX1ZWQ19DVFVfSAorI2RlZmluZSBBVkNP REVDX1ZWQ19DVFVfSAorCisjaW5jbHVkZSAibGliYXZjb2RlYy9jYWJhYy5oIgorI2luY2x1ZGUg ImxpYmF2dXRpbC9tZW1faW50ZXJuYWwuaCIKKworI2luY2x1ZGUgInZ2Y2RlYy5oIgorCisjZGVm aW5lIE1BWF9DVFVfU0laRSAgICAgICAgICAgIDEyOAorCisjZGVmaW5lIE1BWF9DVV9TSVpFICAg ICAgICAgICAgIE1BWF9DVFVfU0laRQorI2RlZmluZSBNSU5fQ1VfU0laRSAgICAgICAgICAgICA0 CisjZGVmaW5lIE1JTl9DVV9MT0cyICAgICAgICAgICAgIDIKKyNkZWZpbmUgTUFYX0NVX0RFUFRI ICAgICAgICAgICAgNworCisjZGVmaW5lIE1BWF9QQVJUU19JTl9DVFUgICAgICAgICgoTUFYX0NU VV9TSVpFID4+IE1JTl9DVV9MT0cyKSAqIChNQVhfQ1RVX1NJWkUgPj4gTUlOX0NVX0xPRzIpKQor CisjZGVmaW5lIE1JTl9QVV9TSVpFICAgICAgICAgICAgIDQKKworI2RlZmluZSBNQVhfVEJfU0la RSAgICAgICAgICAgICA2NAorI2RlZmluZSBNSU5fVFVfU0laRSAgICAgICAgICAgICA0CisjZGVm aW5lIE1BWF9UVVNfSU5fQ1UgICAgICAgICAgIDY0CisKKyNkZWZpbmUgTUFYX1FQICAgICAgICAg ICAgICAgICAgNjMKKworI2RlZmluZSBNQVhfUEJfU0laRSAgICAgICAgICAgICAxMjgKKyNkZWZp bmUgRURHRV9FTVVfQlVGRkVSX1NUUklERSAgKE1BWF9QQl9TSVpFICsgMzIpCisKKyNkZWZpbmUg Q0hST01BX0VYVFJBX0JFRk9SRSAgICAgMQorI2RlZmluZSBDSFJPTUFfRVhUUkFfQUZURVIgICAg ICAyCisjZGVmaW5lIENIUk9NQV9FWFRSQSAgICAgICAgICAgIDMKKyNkZWZpbmUgTFVNQV9FWFRS QV9CRUZPUkUgICAgICAgMworI2RlZmluZSBMVU1BX0VYVFJBX0FGVEVSICAgICAgICA0CisjZGVm aW5lIExVTUFfRVhUUkEgICAgICAgICAgICAgIDcKKyNkZWZpbmUgQklMSU5FQVJfRVhUUkFfQkVG T1JFICAgMAorI2RlZmluZSBCSUxJTkVBUl9FWFRSQV9BRlRFUiAgICAxCisjZGVmaW5lIEJJTElO RUFSX0VYVFJBICAgICAgICAgIDEKKworI2RlZmluZSBNQVhfQ09OVFJPTF9QT0lOVFMgICAgICAz CisKKyNkZWZpbmUgQUZGSU5FX01JTl9CTE9DS19TSVpFICAgNAorCisjZGVmaW5lIE1SR19NQVhf TlVNX0NBTkRTICAgICAgIDYKKyNkZWZpbmUgTUFYX05VTV9ITVZQX0NBTkRTICAgICAgNQorCisj ZGVmaW5lIFNBT19QQURESU5HX1NJWkUgICAgICAgIDEKKworI2RlZmluZSBBTEZfUEFERElOR19T SVpFICAgICAgICA4CisjZGVmaW5lIEFMRl9CTE9DS19TSVpFICAgICAgICAgIDQKKworI2RlZmlu ZSBBTEZfQk9SREVSX0xVTUEgICAgICAgICAzCisjZGVmaW5lIEFMRl9CT1JERVJfQ0hST01BICAg ICAgIDIKKworI2RlZmluZSBBTEZfVkJfUE9TX0FCT1ZFX0xVTUEgICA0CisjZGVmaW5lIEFMRl9W Ql9QT1NfQUJPVkVfQ0hST01BIDIKKworI2RlZmluZSBBTEZfR1JBRElFTlRfU1RFUCAgICAgICAy CisjZGVmaW5lIEFMRl9HUkFESUVOVF9CT1JERVIgICAgIDIKKyNkZWZpbmUgQUxGX0dSQURJRU5U X1NJWkUgICAgICAgKChNQVhfQ1VfU0laRSArIEFMRl9HUkFESUVOVF9CT1JERVIgKiAyKSAvIEFM Rl9HUkFESUVOVF9TVEVQKQorI2RlZmluZSBBTEZfTlVNX0RJUiAgICAgICAgICAgICA0CisKKwor LyoqCisgKiBWYWx1ZSBvZiB0aGUgbHVtYSBzYW1wbGUgYXQgcG9zaXRpb24gKHgsIHkpIGluIHRo ZSAyRCBhcnJheSB0YWIuCisgKi8KKyNkZWZpbmUgU0FNUExFKHRhYiwgeCwgeSkgKCh0YWIpWyh5 KSAqIHMtPnNwcy0+d2lkdGggKyAoeCldKQorI2RlZmluZSBTQU1QTEVfQ1RCKHRhYiwgeCwgeSkg KCh0YWIpWyh5KSAqIG1pbl9jYl93aWR0aCArICh4KV0pCisjZGVmaW5lIENUQih0YWIsIHgsIHkp ICgodGFiKVsoeSkgKiBmYy0+cHMucHBzLT5jdGJfd2lkdGggKyAoeCldKQorCitlbnVtIFNBT1R5 cGUgeworICAgIFNBT19OT1RfQVBQTElFRCA9IDAsCisgICAgU0FPX0JBTkQsCisgICAgU0FPX0VE R0UsCit9OworCitlbnVtIFNBT0VPQ2xhc3MgeworICAgIFNBT19FT19IT1JJWiA9IDAsCisgICAg U0FPX0VPX1ZFUlQsCisgICAgU0FPX0VPXzEzNUQsCisgICAgU0FPX0VPXzQ1RCwKK307CisKK3R5 cGVkZWYgc3RydWN0IE5laWdoYm91ckF2YWlsYWJsZSB7CisgICAgaW50IGNhbmRfbGVmdDsKKyAg ICBpbnQgY2FuZF91cDsKKyAgICBpbnQgY2FuZF91cF9sZWZ0OworICAgIGludCBjYW5kX3VwX3Jp Z2h0OworICAgIGludCBjYW5kX3VwX3JpZ2h0X3NhcDsKK30gTmVpZ2hib3VyQXZhaWxhYmxlOwor CitlbnVtIElzcFR5cGV7CisgICAgSVNQX05PX1NQTElULAorICAgIElTUF9IT1JfU1BMSVQsCisg ICAgSVNQX1ZFUl9TUExJVCwKK307CisKK3R5cGVkZWYgZW51bSBWVkNTcGxpdE1vZGUgeworICAg IFNQTElUX05PTkUsCisgICAgU1BMSVRfVFRfSE9SLAorICAgIFNQTElUX0JUX0hPUiwKKyAgICBT UExJVF9UVF9WRVIsCisgICAgU1BMSVRfQlRfVkVSLAorICAgIFNQTElUX1FULAorfSBWVkNTcGxp dE1vZGU7CisKK3R5cGVkZWYgZW51bSBNdHNJZHggeworICAgIE1UU19EQ1QyX0RDVDIsCisgICAg TVRTX0RTVDdfRFNUNywKKyAgICBNVFNfRFNUN19EQ1Q4LAorICAgIE1UU19EQ1Q4X0RTVDcsCisg ICAgTVRTX0RDVDhfRENUOCwKK30gTXRzSWR4OworCit0eXBlZGVmIHN0cnVjdCBUcmFuc2Zvcm1C bG9jayB7CisgICAgdWludDhfdCBoYXNfY29lZmZzOworICAgIHVpbnQ4X3QgY19pZHg7CisgICAg dWludDhfdCB0czsgICAgICAgICAgICAgLy8vPCAgdHJhbnNmb3JtX3NraXBfZmxhZworICAgIGlu dCB4MDsKKyAgICBpbnQgeTA7CisKKyAgICBpbnQgdGJfd2lkdGg7CisgICAgaW50IHRiX2hlaWdo dDsKKyAgICBpbnQgbG9nMl90Yl93aWR0aDsKKyAgICBpbnQgbG9nMl90Yl9oZWlnaHQ7CisKKyAg ICBpbnQgbWF4X3NjYW5feDsKKyAgICBpbnQgbWF4X3NjYW5feTsKKyAgICBpbnQgbWluX3NjYW5f eDsKKyAgICBpbnQgbWluX3NjYW5feTsKKworICAgIGludCBxcDsKKyAgICBpbnQgcmVjdF9ub25f dHNfZmxhZzsKKyAgICBpbnQgYmRfc2hpZnQ7CisgICAgaW50IGJkX29mZnNldDsKKworICAgIGlu dCAqY29lZmZzOworfSBUcmFuc2Zvcm1CbG9jazsKKwordHlwZWRlZiBlbnVtIFZWQ1RyZWVUeXBl IHsKKyAgICBTSU5HTEVfVFJFRSwKKyAgICBEVUFMX1RSRUVfTFVNQSwKKyAgICBEVUFMX1RSRUVf Q0hST01BLAorfSBWVkNUcmVlVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgVHJhbnNmb3JtVW5pdCB7 CisgICAgaW50IHgwOworICAgIGludCB5MDsKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdo dDsKKworICAgIHVpbnQ4X3Qgam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnOyAgICAgICAgICAgICAg ICAgICAvLy88IHR1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworCisgICAgdWludDhfdCBjb2Rl ZF9mbGFnW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107ICAgICAgICAgIC8vLzwgdHVfeV9jb2RlZF9m bGFnLCB0dV9jYl9jb2RlZF9mbGFnLCB0dV9jcl9jb2RlZF9mbGFnCisgICAgdWludDhfdCBuYl90 YnM7CisgICAgVHJhbnNmb3JtQmxvY2sgdGJzW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107CisKKyAg ICBzdHJ1Y3QgVHJhbnNmb3JtVW5pdCAqbmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgLy8v PCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCit9IFRyYW5zZm9ybVVuaXQ7CisKK3R5cGVkZWYgZW51bSBQ cmVkTW9kZSB7CisgICAgTU9ERV9JTlRFUiwKKyAgICBNT0RFX0lOVFJBLAorICAgIE1PREVfU0tJ UCwKKyAgICBNT0RFX1BMVCwKKyAgICBNT0RFX0lCQywKK30gUHJlZE1vZGU7CisKK3R5cGVkZWYg c3RydWN0IE12IHsKKyAgICBpbnQgeDsgIC8vLzwgaG9yaXpvbnRhbCBjb21wb25lbnQgb2YgbW90 aW9uIHZlY3RvcgorICAgIGludCB5OyAgLy8vPCB2ZXJ0aWNhbCBjb21wb25lbnQgb2YgbW90aW9u IHZlY3RvcgorfSBNdjsKKwordHlwZWRlZiBzdHJ1Y3QgTXZGaWVsZCB7CisgICAgREVDTEFSRV9B TElHTkVEKDQsIE12LCBtdilbMl07ICAvLy88IG12TDAsIHZ2TDEKKyAgICBpbnQ4X3QgIHJlZl9p ZHhbMl07ICAgICAgICAgICAgIC8vLzwgcmVmSWR4TDAsIHJlZklkeEwxCisgICAgdWludDhfdCBo cGVsX2lmX2lkeDsgICAgICAgICAgICAvLy88IGhwZWxJZklkeAorICAgIHVpbnQ4X3QgYmN3X2lk eDsgICAgICAgICAgICAgICAgLy8vPCBiY3dJZHgKKyAgICB1aW50OF90IHByZWRfZmxhZzsKKyAg ICB1aW50OF90IGNpaXBfZmxhZzsgICAgICAgICAgICAgIC8vLzwgY2lpcF9mbGFnCit9IE12Rmll bGQ7CisKK3R5cGVkZWYgc3RydWN0IERNVlJJbmZvIHsKKyAgICBERUNMQVJFX0FMSUdORUQoNCwg TXYsIG12KVsyXTsgIC8vLzwgbXZMMCwgdnZMMQorICAgIHVpbnQ4X3QgZG12cl9lbmFibGVkOwor fSBETVZSSW5mbzsKKwordHlwZWRlZiBlbnVtIE1vdGlvbk1vZGVsSWRjIHsKKyAgICBNT1RJT05f VFJBTlNMQVRJT04sCisgICAgTU9USU9OXzRfUEFSQU1TX0FGRklORSwKKyAgICBNT1RJT05fNl9Q QVJBTVNfQUZGSU5FLAorfSBNb3Rpb25Nb2RlbElkYzsKKwordHlwZWRlZiBlbnVtIFByZWRGbGFn IHsKKyAgICBQRl9JTlRSQSA9IDB4MCwKKyAgICBQRl9MMCAgICA9IDB4MSwKKyAgICBQRl9MMSAg ICA9IDB4MiwKKyAgICBQRl9CSSAgICA9IDB4MywKK30gUHJlZEZsYWc7CisKK3R5cGVkZWYgZW51 bSBJbnRyYVByZWRNb2RlIHsKKyAgICBJTlRSQV9JTlZBTElEICAgPSAtMSwKKyAgICBJTlRSQV9Q TEFOQVIgICAgPSAwLAorICAgIElOVFJBX0RDLAorICAgIElOVFJBX0hPUlogICAgICA9IDE4LAor ICAgIElOVFJBX0RJQUcgICAgICA9IDM0LAorICAgIElOVFJBX1ZFUlQgICAgICA9IDUwLAorICAg IElOVFJBX1ZESUFHICAgICA9IDY2LAorICAgIElOVFJBX0xUX0NDTE0gICA9IDgxLAorICAgIElO VFJBX0xfQ0NMTSwKKyAgICBJTlRSQV9UX0NDTE0KK30gSW50cmFQcmVkTW9kZTsKKwordHlwZWRl ZiBzdHJ1Y3QgTW90aW9uSW5mbyB7CisgICAgTW90aW9uTW9kZWxJZGMgbW90aW9uX21vZGVsX2lk YzsgLy8vPCBNb3Rpb25Nb2RlbElkYworICAgIGludDhfdCAgIHJlZl9pZHhbMl07ICAgICAgICAg ICAgIC8vLzwgcmVmSWR4TDAsIHJlZklkeEwxCisgICAgdWludDhfdCAgaHBlbF9pZl9pZHg7ICAg ICAgICAgICAgLy8vPCBocGVsSWZJZHgKKyAgICB1aW50OF90ICBiY3dfaWR4OyAgICAgICAgICAg ICAgICAvLy88IGJjd0lkeAorICAgIFByZWRGbGFnIHByZWRfZmxhZzsKKworICAgIE12IG12WzJd W01BWF9DT05UUk9MX1BPSU5UU107CisKKyAgICBpbnQgbnVtX3NiX3gsIG51bV9zYl95OworfSBN b3Rpb25JbmZvOworCit0eXBlZGVmIHN0cnVjdCBQcmVkaWN0aW9uVW5pdCB7CisgICAgdWludDhf dCBnZW5lcmFsX21lcmdlX2ZsYWc7CisgICAgdWludDhfdCBtbXZkX21lcmdlX2ZsYWc7CisgICAg Ly9JbnRlclByZWRJZGMgaW50ZXJfcHJlZF9pZGM7CisgICAgdWludDhfdCBpbnRlcl9hZmZpbmVf ZmxhZzsKKworICAgIC8vc3ViYmxvY2sgcHJlZGljdAorICAgIHVpbnQ4X3QgbWVyZ2Vfc3ViYmxv Y2tfZmxhZzsKKworICAgIHVpbnQ4X3QgbWVyZ2VfZ3BtX2ZsYWc7CisgICAgdWludDhfdCBncG1f cGFydGl0aW9uX2lkeDsKKyAgICBNdkZpZWxkIGdwbV9tdlsyXTsKKworICAgIGludCBzeW1fbXZk X2ZsYWc7CisKKyAgICBNb3Rpb25JbmZvIG1pOworCisgICAgLy8gZm9yIHJlZ3VsYXIgcHJlZGlj dGlvbiBvbmx5CisgICAgdWludDhfdCBkbXZyX2ZsYWc7CisgICAgdWludDhfdCBiZG9mX2ZsYWc7 CisKKyAgICBpbnQxNl90IGRpZmZfbXZfeFsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJWkUgKiBBRkZJ TkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQxNl90IGRpZmZfbXZf eVsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJWkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8v LzwgZGlmZk12TFgKKyAgICBpbnQgY2JfcHJvZl9mbGFnWzJdOworfSBQcmVkaWN0aW9uVW5pdDsK KwordHlwZWRlZiBzdHJ1Y3QgQ29kaW5nVW5pdCB7CisgICAgVlZDVHJlZVR5cGUgdHJlZV90eXBl OworICAgIGludCB4MDsKKyAgICBpbnQgeTA7CisgICAgaW50IGNiX3dpZHRoOworICAgIGludCBj Yl9oZWlnaHQ7CisgICAgaW50IGNoX3R5cGU7CisgICAgaW50IGNxdF9kZXB0aDsKKworICAgIHVp bnQ4X3QgY29kZWRfZmxhZzsKKworICAgIHVpbnQ4X3Qgc2J0X2ZsYWc7CisgICAgdWludDhfdCBz YnRfaG9yaXpvbnRhbF9mbGFnOworICAgIHVpbnQ4X3Qgc2J0X3Bvc19mbGFnOworCisgICAgaW50 IGxmbnN0X2lkeDsKKyAgICBNdHNJZHggbXRzX2lkeDsKKworICAgIHVpbnQ4X3QgYWN0X2VuYWJs ZWRfZmxhZzsKKworICAgIHVpbnQ4X3QgaW50cmFfbHVtYV9yZWZfaWR4OyAgICAgICAgICAgICAg ICAgICAgIC8vLzwgSW50cmFMdW1hUmVmTGluZUlkeFtdW10KKyAgICB1aW50OF90IGludHJhX21p cF9mbGFnOyAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGludHJhX21pcF9mbGFnCisgICAg dWludDhfdCBza2lwX2ZsYWc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBjdV9z a2lwX2ZsYWc7CisKKyAgICAvL2ludGVyCisgICAgdWludDhfdCBjaWlwX2ZsYWc7CisKKyAgICAv LyBJbmZlcnJlZCBwYXJhbWV0ZXJzCisgICAgZW51bSBJc3BUeXBlIGlzcF9zcGxpdF90eXBlOyAg ICAgICAgICAgICAgICAgICAgLy8vPCBJbnRyYVN1YlBhcnRpdGlvbnNTcGxpdFR5cGUKKworICAg IGVudW0gUHJlZE1vZGUgcHJlZF9tb2RlOyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUHJl ZE1vZGUKKworICAgIGludCBudW1faW50cmFfc3VicGFydGl0aW9uczsKKworICAgIEludHJhUHJl ZE1vZGUgaW50cmFfcHJlZF9tb2RlX3k7ICAgICAgICAgICAgICAgIC8vLzwgSW50cmFQcmVkTW9k ZVkKKyAgICBJbnRyYVByZWRNb2RlIGludHJhX3ByZWRfbW9kZV9jOyAgICAgICAgICAgICAgICAv Ly88IEludHJhUHJlZE1vZGVDCisgICAgaW50IG1pcF9jaHJvbWFfZGlyZWN0X2ZsYWc7ICAgICAg ICAgICAgICAgICAgICAgLy8vPCBNaXBDaHJvbWFEaXJlY3RGbGFnCisKKyAgICBpbnQgYmRwY21f ZmxhZ1tWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOyAgICAgICAgICAvLy88IEJkcGNtRmxhZworCisg ICAgaW50IGFwcGx5X2xmbnN0X2ZsYWdbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsgICAgLy8vPCBB cHBseUxmbnN0RmxhZ1tdCisKKyAgICBzdHJ1Y3QgeworICAgICAgICBUcmFuc2Zvcm1Vbml0ICpo ZWFkOyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAg ICAgICBUcmFuc2Zvcm1Vbml0ICp0YWlsOyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmVm U3RydWN0IHJlZmVyZW5jZQorICAgIH0gdHVzOworCisgICAgaW50OF90IHFwWzRdOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBRcFksIFFw4oCyQ2IsIFFw4oCyQ3IsIFFw 4oCyQ2JDcgorCisgICAgUHJlZGljdGlvblVuaXQgcHU7CisKKyAgICBzdHJ1Y3QgQ29kaW5nVW5p dCAqbmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2UK K30gQ29kaW5nVW5pdDsKKwordHlwZWRlZiBzdHJ1Y3QgQ1RVIHsKKyAgICBDb2RpbmdVbml0ICpj dXM7CisgICAgaW50IG1heF95WzJdW1ZWQ19NQVhfUkVGX0VOVFJJRVNdOworICAgIGludCBtYXhf eV9pZHhbMl07Cit9IENUVTsKKwordHlwZWRlZiBzdHJ1Y3QgUmVjb25zdHJ1Y3RlZEFyZWEgewor ICAgIGludCB4OworICAgIGludCB5OworICAgIGludCB3OworICAgIGludCBoOworfSBSZWNvbnN0 cnVjdGVkQXJlYTsKKwordHlwZWRlZiBzdHJ1Y3QgVlZDQ2FiYWNTdGF0ZSB7CisgICAgdWludDE2 X3Qgc3RhdGVbMl07CisgICAgdWludDhfdCAgc2hpZnRbMl07Cit9IFZWQ0NhYmFjU3RhdGU7CisK Ky8vIFZWQ19DT05URVhUUyBtYXRjaGVkIHdpdGggU1lOVEFYX0VMRU1FTlRfTEFTVCwgaXQncyBj aGVja2VkIGJ5IGNhYmFjX2luaXRfc3RhdGUuCisjZGVmaW5lIFZWQ19DT05URVhUUyAzNzgKK3R5 cGVkZWYgc3RydWN0IEVudHJ5UG9pbnQgeworICAgIGludDhfdCBxcF95OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUXBZCisKKyAgICBpbnQgc3RhdF9jb2VmZltWVkNf TUFYX1NBTVBMRV9BUlJBWVNdOyAgICAgICAgICAvLy88IFN0YXRDb2VmZgorCisgICAgVlZDQ2Fi YWNTdGF0ZSBjYWJhY19zdGF0ZVtWVkNfQ09OVEVYVFNdOworICAgIENBQkFDQ29udGV4dCBjYzsK KworICAgIGludCBjdHVfc3RhcnQ7CisgICAgaW50IGN0dV9lbmQ7CisKKyAgICB1aW50OF90IGlz X2ZpcnN0X3FnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXJzdCBxdWFudGl6YXRp b24gZ3JvdXAKKyAgICBNdkZpZWxkIGhtdnBbTUFYX05VTV9ITVZQX0NBTkRTXTsgICAgICAgICAg ICAgICAvLy88IEhtdnBDYW5kTGlzdAorICAgIGludCAgICAgbnVtX2htdnA7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vLzwgTnVtSG12cENhbmQKK30gRW50cnlQb2ludDsKKwordHlw ZWRlZiBzdHJ1Y3QgVlZDTG9jYWxDb250ZXh0IHsKKyAgICB1aW50OF90IGN0Yl9sZWZ0X2ZsYWc7 CisgICAgdWludDhfdCBjdGJfdXBfZmxhZzsKKyAgICB1aW50OF90IGN0Yl91cF9yaWdodF9mbGFn OworICAgIHVpbnQ4X3QgY3RiX3VwX2xlZnRfZmxhZzsKKyAgICBpbnQgICAgIGVuZF9vZl90aWxl c194OworICAgIGludCAgICAgZW5kX29mX3RpbGVzX3k7CisKKyAgICAvKiArNyBpcyBmb3Igc3Vi cGl4ZWwgaW50ZXJwb2xhdGlvbiwgKjIgZm9yIGhpZ2ggYml0IGRlcHRocyAqLworICAgIERFQ0xB UkVfQUxJR05FRCgzMiwgdWludDhfdCwgZWRnZV9lbXVfYnVmZmVyKVsoTUFYX1BCX1NJWkUgKyA3 KSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICAvKiBUaGUgZXh0ZW5kZWQgc2l6 ZSBiZXR3ZWVuIHRoZSBuZXcgZWRnZSBlbXUgYnVmZmVyIGlzIGFidXNlZCBieSBTQU8gKi8KKyAg ICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGVkZ2VfZW11X2J1ZmZlcjIpWyhNQVhfUEJf U0laRSArIDcpICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAqIDJdOworICAgIERFQ0xBUkVfQUxJ R05FRCgzMiwgaW50MTZfdCwgdG1wKVtNQVhfUEJfU0laRSAqIE1BWF9QQl9TSVpFXTsKKyAgICBE RUNMQVJFX0FMSUdORUQoMzIsIGludDE2X3QsIHRtcDEpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJ WkVdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgaW50MTZfdCwgdG1wMilbTUFYX1BCX1NJWkUg KiBNQVhfUEJfU0laRV07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBjaWlwX3Rt cDEpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQo MzIsIHVpbnQ4X3QsIGNpaXBfdG1wMilbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRSAqIDJdOwor ICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgc2FvX2J1ZmZlcilbKE1BWF9DVFVfU0la RSArIDIgKiBTQU9fUEFERElOR19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsK KyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGFsZl9idWZmZXJfbHVtYSlbKE1BWF9D VFVfU0laRSArIDIgKiBBTEZfUEFERElOR19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUg KiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGFsZl9idWZmZXJfY2hyb21h KVsoTUFYX0NUVV9TSVpFICsgMiAqIEFMRl9QQURESU5HX1NJWkUpICogRURHRV9FTVVfQlVGRkVS X1NUUklERSAqIDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgaW50MzJfdCwgYWxmX2dyYWRp ZW50X3RtcClbQUxGX0dSQURJRU5UX1NJWkUgKiBBTEZfR1JBRElFTlRfU0laRSAqIEFMRl9OVU1f RElSXTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGludCBzYnRfbnVtX2ZvdXJ0aHNfdGIwOyAg ICAgICAgICAgICAgICAvLy88IFNidE51bUZvdXJ0aHNUYjAKKworICAgICAgICB1aW50OF90IGlz X2N1X3FwX2RlbHRhX2NvZGVkOyAgICAgICAgICAgLy8vPCBJc0N1UXBEZWx0YUNvZGVkCisgICAg ICAgIGludCBjdV9xZ190b3BfbGVmdF94OyAgICAgICAgICAgICAgICAgICAvLy88IEN1UWdUb3BM ZWZ0WAorICAgICAgICBpbnQgY3VfcWdfdG9wX2xlZnRfeTsgICAgICAgICAgICAgICAgICAgLy8v PCBDdVFnVG9wTGVmdFkKKyAgICAgICAgaW50IGlzX2N1X2Nocm9tYV9xcF9vZmZzZXRfY29kZWQ7 ICAgICAgIC8vLzwgSXNDdUNocm9tYVFwT2Zmc2V0Q29kZWQKKyAgICAgICAgaW50IGNocm9tYV9x cF9vZmZzZXRbM107ICAgICAgICAgICAgICAgIC8vLzwgQ3VRcE9mZnNldENiLCBDdVFwT2Zmc2V0 Q3IsIEN1UXBPZmZzZXRDYkNyCisKKyAgICAgICAgaW50IGluZmVyX3R1X2NiZl9sdW1hOyAgICAg ICAgICAgICAgICAgIC8vLzwgSW5mZXJUdUNiZkx1bWEKKyAgICAgICAgaW50IHByZXZfdHVfY2Jm X3k7ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgcHJldlR1Q2JmWTsKKworICAgICAgICBpbnQg bGZuc3RfZGNfb25seTsgICAgICAgICAgICAgICAgICAgICAgLy8vPCBMZm5zdERjT25seQorICAg ICAgICBpbnQgbGZuc3RfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWc7ICAgICAgLy8vPCBMZm5zdFpl cm9PdXRTaWdDb2VmZkZsYWcKKworICAgICAgICBpbnQgbXRzX2RjX29ubHk7ICAgICAgICAgICAg ICAgICAgICAgICAgLy8vPCBNdHNEY09ubHkKKyAgICAgICAgaW50IG10c196ZXJvX291dF9zaWdf Y29lZmZfZmxhZzsgICAgICAgIC8vLzwgTXRzWmVyb091dFNpZ0NvZWZmRmxhZzsKKyAgICB9IHBh cnNlOworCisgICAgc3RydWN0IHsKKyAgICAgICAgLy8gbG1jcyBjYWNoZSwgZm9yIHJlY29uIG9u bHkKKyAgICAgICAgaW50IGNocm9tYV9zY2FsZTsKKyAgICAgICAgaW50IHhfdnBkdTsKKyAgICAg ICAgaW50IHlfdnBkdTsKKyAgICB9IGxtY3M7CisKKyAgICBDb2RpbmdVbml0ICpjdTsKKyAgICBS ZWNvbnN0cnVjdGVkQXJlYSByYXNbMl1bTUFYX1BBUlRTX0lOX0NUVV07CisgICAgaW50ICBudW1f cmFzWzJdOworCisgICAgTmVpZ2hib3VyQXZhaWxhYmxlIG5hOworCisjZGVmaW5lIEJPVU5EQVJZ X0xFRlRfU0xJQ0UgICAgICgxIDw8IDApCisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfVElMRSAgICAg ICgxIDw8IDEpCisjZGVmaW5lIEJPVU5EQVJZX1VQUEVSX1NMSUNFICAgICgxIDw8IDIpCisjZGVm aW5lIEJPVU5EQVJZX1VQUEVSX1RJTEUgICAgICgxIDw8IDMpCisgICAgLyogcHJvcGVydGllcyBv ZiB0aGUgYm91bmRhcnkgb2YgdGhlIGN1cnJlbnQgQ1RCIGZvciB0aGUgcHVycG9zZXMKKyAgICAg KiBvZiB0aGUgZGVibG9ja2luZyBmaWx0ZXIgKi8KKyAgICBpbnQgYm91bmRhcnlfZmxhZ3M7CisK KyAgICBTbGljZUNvbnRleHQgKnNjOworICAgIFZWQ0ZyYW1lQ29udGV4dCAqZmM7CisgICAgRW50 cnlQb2ludCAqZXA7CisgICAgaW50ICpjb2VmZnM7Cit9IFZWQ0xvY2FsQ29udGV4dDsKKwordHlw ZWRlZiBzdHJ1Y3QgVlZDQWxsb3dlZFNwbGl0IHsKKyAgICBpbnQgcXQ7CisgICAgaW50IGJ0djsK KyAgICBpbnQgYnRoOworICAgIGludCB0dHY7CisgICAgaW50IHR0aDsKK30gVlZDQWxsb3dlZFNw bGl0OworCit0eXBlZGVmIHN0cnVjdCBTQU9QYXJhbXMgeworICAgIGludCBvZmZzZXRfYWJzWzNd WzRdOyAgICAgICAgICAgICAgIC8vLzwgc2FvX29mZnNldF9hYnMKKyAgICBpbnQgb2Zmc2V0X3Np Z25bM11bNF07ICAgICAgICAgICAgICAvLy88IHNhb19vZmZzZXRfc2lnbgorCisgICAgdWludDhf dCBiYW5kX3Bvc2l0aW9uWzNdOyAgICAgICAgICAgLy8vPCBzYW9fYmFuZF9wb3NpdGlvbgorCisg ICAgaW50IGVvX2NsYXNzWzNdOyAgICAgICAgICAgICAgICAgICAgLy8vPCBzYW9fZW9fY2xhc3MK KworICAgIGludDE2X3Qgb2Zmc2V0X3ZhbFszXVs1XTsgICAgICAgICAgIC8vLzxTYW9PZmZzZXRW YWwKKworICAgIHVpbnQ4X3QgdHlwZV9pZHhbM107ICAgICAgICAgICAgICAgIC8vLzwgc2FvX3R5 cGVfaWR4Cit9IFNBT1BhcmFtczsKKwordHlwZWRlZiBzdHJ1Y3QgQUxGUGFyYW1zIHsKKyAgICB1 aW50OF90IGN0Yl9mbGFnWzNdOyAgICAgICAgICAgICAgICAvLy88IGFsZl9jdGJfZmxhZ1tdCisg ICAgdWludDhfdCBjdGJfZmlsdF9zZXRfaWR4X3k7ICAgICAgICAgLy8vPCBBbGZDdGJGaWx0U2V0 SWR4WQorICAgIHVpbnQ4X3QgYWxmX2N0Yl9maWx0ZXJfYWx0X2lkeFsyXTsgIC8vLzwgYWxmX2N0 Yl9maWx0ZXJfYWx0X2lkeFtdCisgICAgdWludDhfdCBjdGJfY2NfaWRjWzJdOyAgICAgICAgICAg ICAgLy8vPCBhbGZfY3RiX2NjX2NiX2lkYywgYWxmX2N0Yl9jY19jcl9pZGMKKworICAgIHVpbnQ4 X3QgYXBwbGllZFszXTsKK30gQUxGUGFyYW1zOworCit2b2lkIGZmX3Z2Y19lcF9pbml0X3N0YXRf Y29lZmYoRW50cnlQb2ludCAqZXAsIGludCBiaXRfZGVwdGgsIGludCBwZXJzaXN0ZW50X3JpY2Vf YWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcpOworCisjZW5kaWYgLy8gQVZDT0RFQ19WVkNfQ1RVX0gK ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oIGIvbGliYXZjb2RlYy92dmMvdnZj ZGVjLmgKaW5kZXggZmJiZWRiZWMwMC4uNzQ2ZWU0MTY2MSAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl Yy92dmMvdnZjZGVjLmgKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjZGVjLmgKQEAgLTgwLDYgKzgw LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVlZDRnJhbWUgewogCiB0eXBlZGVmIHN0cnVjdCBTbGljZUNv bnRleHQgewogICAgIGludCBzbGljZV9pZHg7CisgICAgVlZDU0ggc2g7CiAgICAgc3RydWN0IEVu dHJ5UG9pbnQgKmVwczsKICAgICBpbnQgbmJfZXBzOwogICAgIFJlZlBpY0xpc3QgKnJwbDsKQEAg LTk0LDYgKzk1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVlZDRnJhbWVDb250ZXh0IHsKICAgICBzdHJ1 Y3QgQVZGcmFtZSAqZnJhbWU7CiAgICAgc3RydWN0IEFWRnJhbWUgKm91dHB1dF9mcmFtZTsKIAor ICAgIFZWQ0ZyYW1lUGFyYW1TZXRzIHBzOworCiAgICAgU2xpY2VDb250ZXh0ICAqKnNsaWNlczsK ICAgICBpbnQgbmJfc2xpY2VzOwogICAgIGludCBuYl9zbGljZXNfYWxsb2NhdGVkOwpAQCAtMTEz LDYgKzExNiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBWVkNGcmFtZUNvbnRleHQgewogICAgIHN0cnVj dCB7CiAgICAgICAgIGludDE2X3QgKnNsaWNlX2lkeDsKIAorICAgICAgICBEQlBhcmFtcyAgKmRl YmxvY2s7CisgICAgICAgIHN0cnVjdCBTQU9QYXJhbXMgKnNhbzsKKyAgICAgICAgc3RydWN0IEFM RlBhcmFtcyAqYWxmOworCiAgICAgICAgIGludCAgICAgKmNiX3Bvc194WzJdOyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vLzwgQ2JQb3NYW11bXVtdCiAgICAgICAgIGludCAgICAgKmNiX3Bv c195WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgQ2JQb3NZW11bXVtdCiAgICAg ICAgIHVpbnQ4X3QgKmNiX3dpZHRoWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwg Q2JXaWR0aFtdW11bXQotLSAKMi4yNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==