From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E665C433E6 for ; Thu, 21 Jan 2021 04:25:49 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D5F842368A for ; Thu, 21 Jan 2021 04:25:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D5F842368A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5CD256E4E3; Thu, 21 Jan 2021 04:25:48 +0000 (UTC) Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [205.139.111.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id E34A46E4E3 for ; Thu, 21 Jan 2021 04:25:45 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-582-MzcFpDB4NYWnh-DeJpecCQ-1; Wed, 20 Jan 2021 23:25:40 -0500 X-MC-Unique: MzcFpDB4NYWnh-DeJpecCQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 27E508144E6; Thu, 21 Jan 2021 04:25:39 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (unknown [10.64.32.209]) by smtp.corp.redhat.com (Postfix) with ESMTP id 28C3610016F5; Thu, 21 Jan 2021 04:25:36 +0000 (UTC) From: Dave Airlie To: intel-gfx@lists.freedesktop.org Date: Thu, 21 Jan 2021 14:25:25 +1000 Message-Id: <20210121042532.9057-2-airlied@gmail.com> In-Reply-To: <20210121042532.9057-1-airlied@gmail.com> References: <20210121042532.9057-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=airlied@gmail.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: gmail.com Subject: [Intel-gfx] [PATCH 1/8] drm/i915: refactor ddi translations into a separate file X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dave Airlie Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClZpbGxlIHN1Z2dlc3RlZCB0 aGlzLCB0aGVzZSB0YWJsZXMgYXJlIHByb2JhYmx5IGJldHRlciBiZWluZwpzdGFuZGFsb25lLgoK VGhpcyBmaXhlcyB1cCB0aGUgY25sL2J4dCBpbnRlcmZhY2VzIHRvIGJlIGxpa2UgdGhlIG90aGVy cywKdGhlIGludGVsIG9uZSBJIGxlZnQgYWxvbmUgc2luY2UgaXQgaGFzIGEgZmV3IGV4dHJhIGVu dHJ5cG9pbnRzLgoKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhh dC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAg IHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jICAgICAg fCAxNDE3ICstLS0tLS0tLS0tLS0tLS0tCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlf YnVmX3RyYW5zLmMgICAgfCAxMzU4ICsrKysrKysrKysrKysrKysKIC4uLi9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaV9idWZfdHJhbnMuaCAgICB8ICAxMDAgKysKIDQgZmlsZXMgY2hhbmdlZCwg MTQ3MSBpbnNlcnRpb25zKCspLCAxNDA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVm X3RyYW5zLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGUyNDVhMDM2NjEzZS4uOWUxOTM5NWM4 YzhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMjQxLDYgKzI0MSw3IEBAIGk5MTUteSArPSBc CiAJZGlzcGxheS9pY2xfZHNpLm8gXAogCWRpc3BsYXkvaW50ZWxfY3J0Lm8gXAogCWRpc3BsYXkv aW50ZWxfZGRpLm8gXAorCWRpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5vIFwKIAlkaXNwbGF5 L2ludGVsX2RwLm8gXAogCWRpc3BsYXkvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5vIFwKIAlkaXNw bGF5L2ludGVsX2RwX2hkY3AubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k ZGkuYwppbmRleCAzMjZmNzBiMmJkMDguLjZjY2YyZTc1YjU4YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiaW50 ZWxfY29tYm9fcGh5LmgiCiAjaW5jbHVkZSAiaW50ZWxfY29ubmVjdG9yLmgiCiAjaW5jbHVkZSAi aW50ZWxfZGRpLmgiCisjaW5jbHVkZSAiaW50ZWxfZGRpX2J1Zl90cmFucy5oIgogI2luY2x1ZGUg ImludGVsX2Rpc3BsYXlfdHlwZXMuaCIKICNpbmNsdWRlICJpbnRlbF9kcC5oIgogI2luY2x1ZGUg ImludGVsX2RwX21zdC5oIgpAQCAtNTIsMTIgKzUzLDYgQEAKICNpbmNsdWRlICJpbnRlbF90Yy5o IgogI2luY2x1ZGUgImludGVsX3Zkc2MuaCIKIAotc3RydWN0IGRkaV9idWZfdHJhbnMgewotCXUz MiB0cmFuczE7CS8qIGJhbGFuY2UgbGVnIGVuYWJsZSwgZGUtZW1waCBsZXZlbCAqLwotCXUzMiB0 cmFuczI7CS8qIHZyZWYgc2VsLCB2c3dpbmcgKi8KLQl1OCBpX2Jvb3N0OwkvKiBTS0w6IElfYm9v c3Q7IHZhbGlkOiAweDAsIDB4MSwgMHgzLCAweDcgKi8KLX07Ci0KIHN0YXRpYyBjb25zdCB1OCBp bmRleF90b19kcF9zaWduYWxfbGV2ZWxzW10gPSB7CiAJWzBdID0gRFBfVFJBSU5fVk9MVEFHRV9T V0lOR19MRVZFTF8wIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMCwKIAlbMV0gPSBEUF9UUkFJ Tl9WT0xUQUdFX1NXSU5HX0xFVkVMXzAgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xLApAQCAt NzEsMTM4OSArNjYsMTUgQEAgc3RhdGljIGNvbnN0IHU4IGluZGV4X3RvX2RwX3NpZ25hbF9sZXZl bHNbXSA9IHsKIAlbOV0gPSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzMgfCBEUF9UUkFJ Tl9QUkVfRU1QSF9MRVZFTF8wLAogfTsKIAotLyogSERNSS9EVkkgbW9kZXMgaWdub3JlIGV2ZXJ5 dGhpbmcgYnV0IHRoZSBsYXN0IDIgaXRlbXMuIFNvIHdlIHNoYXJlCi0gKiB0aGVtIGZvciBib3Ro IERQIGFuZCBGREkgdHJhbnNwb3J0cywgYWxsb3dpbmcgdGhvc2UgcG9ydHMgdG8KLSAqIGF1dG9t YXRpY2FsbHkgYWRhcHQgdG8gSERNSSBjb25uZWN0aW9ucyBhcyB3ZWxsCi0gKi8KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBoc3dfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewot CXsgMHgwMEZGRkZGRiwgMHgwMDA2MDAwRSwgMHgwIH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMDUw MDBBLCAweDAgfSwKLQl7IDB4MDBDMzBGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LAotCXsgMHg4MEFB QUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDUwMDBBLCAweDAg fSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDQsIDB4MCB9LAotCXsgMHg4MEMzMEZGRiwgMHgw MDBCMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDQwMDA2LCAweDAgfSwKLQl7IDB4 ODBENzVGRkYsIDB4MDAwQjAwMDAsIDB4MCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2ZkaVtdID0gewotCXsgMHgwMEZGRkZG RiwgMHgwMDA3MDAwRSwgMHgwIH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMEYwMDBBLCAweDAgfSwK LQl7IDB4MDBDMzBGRkYsIDB4MDAwNjAwMDYsIDB4MCB9LAotCXsgMHgwMEFBQUZGRiwgMHgwMDFF MDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMEYwMDBBLCAweDAgfSwKLQl7IDB4MDBE NzVGRkYsIDB4MDAxNjAwMDQsIDB4MCB9LAotCXsgMHgwMEMzMEZGRiwgMHgwMDFFMDAwMCwgMHgw IH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDYwMDA2LCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4 MDAxRTAwMDAsIDB4MCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5z IGhzd19kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKLQkJCQkJLyogSWR4CU5UIG1WIGQJVCBt ViBkCWRiCSovCi0JeyAweDAwRkZGRkZGLCAweDAwMDYwMDBFLCAweDAgfSwvKiAwOgk0MDAJNDAw CTAJKi8KLQl7IDB4MDBFNzlGRkYsIDB4MDAwRTAwMEMsIDB4MCB9LC8qIDE6CTQwMAk1MDAJMgkq LwotCXsgMHgwMEQ3NUZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sLyogMjoJNDAwCTYwMAkzLjUJKi8K LQl7IDB4MDBGRkZGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LC8qIDM6CTYwMAk2MDAJMAkqLwotCXsg MHgwMEU3OUZGRiwgMHgwMDFEMDAwNywgMHgwIH0sLyogNDoJNjAwCTc1MAkyCSovCi0JeyAweDAw RDc1RkZGLCAweDAwMEMwMDA0LCAweDAgfSwvKiA1Ogk2MDAJOTAwCTMuNQkqLwotCXsgMHgwMEZG RkZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sLyogNjoJODAwCTgwMAkwCSovCi0JeyAweDgwRTc5RkZG LCAweDAwMDMwMDAyLCAweDAgfSwvKiA3Ogk4MDAJMTAwMAkyCSovCi0JeyAweDAwRkZGRkZGLCAw eDAwMTQwMDA1LCAweDAgfSwvKiA4Ogk4NTAJODUwCTAJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAw QzAwMDQsIDB4MCB9LC8qIDk6CTkwMAk5MDAJMAkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDFDMDAw MywgMHgwIH0sLyogMTA6CTk1MAk5NTAJMAkqLwotCXsgMHg4MEZGRkZGRiwgMHgwMDAzMDAwMiwg MHgwIH0sLyogMTE6CTEwMDAJMTAwMAkwCSovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgYmR3X2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Ci0JeyAweDAwRkZGRkZG LCAweDAwMDAwMDEyLCAweDAgfSwKLQl7IDB4MDBFQkFGRkYsIDB4MDAwMjAwMTEsIDB4MCB9LAot CXsgMHgwMEM3MUZGRiwgMHgwMDA2MDAwRiwgMHgwIH0sCi0JeyAweDAwQUFBRkZGLCAweDAwMEUw MDBBLCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwMjAwMTEsIDB4MCB9LAotCXsgMHgwMERC NkZGRiwgMHgwMDA1MDAwRiwgMHgwIH0sCi0JeyAweDAwQkVFRkZGLCAweDAwMEEwMDBDLCAweDAg fSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNTAwMEYsIDB4MCB9LAotCXsgMHgwMERCNkZGRiwgMHgw MDBBMDAwQywgMHgwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMg YmR3X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUs IDB4MCB9LAotCXsgMHgwMEQ3NUZGRiwgMHgwMDBFMDAwQSwgMHgwIH0sCi0JeyAweDAwQkVGRkZG LCAweDAwMTQwMDA2LCAweDAgfSwKLQl7IDB4ODBCMkNGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAot CXsgMHgwMEZGRkZGRiwgMHgwMDBFMDAwQSwgMHgwIH0sCi0JeyAweDAwREI2RkZGLCAweDAwMTYw MDA1LCAweDAgfSwKLQl7IDB4ODBDNzFGRkYsIDB4MDAxQTAwMDIsIDB4MCB9LAotCXsgMHgwMEY3 REZGRiwgMHgwMDE4MDAwNCwgMHgwIH0sCi0JeyAweDgwRDc1RkZGLCAweDAwMUIwMDAyLCAweDAg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5z bGF0aW9uc19mZGlbXSA9IHsKLQl7IDB4MDBGRkZGRkYsIDB4MDAwMTAwMEUsIDB4MCB9LAotCXsg MHgwMEQ3NUZGRiwgMHgwMDA0MDAwQSwgMHgwIH0sCi0JeyAweDAwQzMwRkZGLCAweDAwMDcwMDA2 LCAweDAgfSwKLQl7IDB4MDBBQUFGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAotCXsgMHgwMEZGRkZG RiwgMHgwMDA0MDAwQSwgMHgwIH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMDkwMDA0LCAweDAgfSwK LQl7IDB4MDBDMzBGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAotCXsgMHgwMEZGRkZGRiwgMHgwMDA3 MDAwNiwgMHgwIH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMEMwMDAwLCAweDAgfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9uc19oZG1p W10gPSB7Ci0JCQkJCS8qIElkeAlOVCBtViBkCVQgbVYgZGYJZGIJKi8KLQl7IDB4MDBGRkZGRkYs IDB4MDAwNzAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkqLwotCXsgMHgwMEQ3NUZGRiwgMHgw MDBFMDAwQSwgMHgwIH0sLyogMToJNDAwCTYwMAkzLjUJKi8KLQl7IDB4MDBCRUZGRkYsIDB4MDAx NDAwMDYsIDB4MCB9LC8qIDI6CTQwMAk4MDAJNgkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDA5MDAw RCwgMHgwIH0sLyogMzoJNDUwCTQ1MAkwCSovCi0JeyAweDAwRkZGRkZGLCAweDAwMEUwMDBBLCAw eDAgfSwvKiA0Ogk2MDAJNjAwCTAJKi8KLQl7IDB4MDBEN0ZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9 LC8qIDU6CTYwMAk4MDAJMi41CSovCi0JeyAweDgwQ0IyRkZGLCAweDAwMUIwMDAyLCAweDAgfSwv KiA2Ogk2MDAJMTAwMAk0LjUJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9LC8q IDc6CTgwMAk4MDAJMAkqLwotCXsgMHg4MEU3OUZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sLyogODoJ ODAwCTEwMDAJMgkqLwotCXsgMHg4MEZGRkZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sLyogOToJMTAw MAkxMDAwCTAJKi8KLX07Ci0KLS8qIFNreWxha2UgSCBhbmQgUyAqLwotc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAweDAw MDAyMDE2LCAweDAwMDAwMEEwLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUIsIDB4 MCB9LAotCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA5MDEwLCAw eDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwOUIsIDB4MCB9LAotCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMEMw LCAweDEgfSwKLQl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwREYsIDB4MCB9LAotCXsgMHg4MDAwNTAx MiwgMHgwMDAwMDBDMCwgMHgxIH0sCi19OwotCi0vKiBTa3lsYWtlIFUgKi8KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0J eyAweDAwMDAyMDFCLCAweDAwMDAwMEEyLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAw ODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwgMHgxIH0sCi0JeyAweDgwMDA5 MDEwLCAweDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwOUQsIDB4MCB9 LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDgwMDA3MDExLCAweDAw MDAwMEMwLCAweDEgfSwKLQl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4 MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgxIH0sCi19OwotCi0vKiBTa3lsYWtlIFkgKi8KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwW10g PSB7Ci0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEEyLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIsIDB4 MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwgMHgzIH0sCi0JeyAw eDgwMDA5MDEwLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQs IDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi0JeyAweDgwMDA3MDEx LCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwODgsIDB4MCB9LAot CXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi19OwotCi0vKiBLYWJ5bGFrZSBIIGFu ZCBTICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMga2JsX2RkaV90cmFuc2xh dGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQTAsIDB4MCB9LAotCXsgMHgw MDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMDg4LCAw eDAgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxNiwg MHgwMDAwMDA5QiwgMHgwIH0sCi0JeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKLQl7 IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5 NywgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKLX07Ci0KLS8qIEth YnlsYWtlIFUgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfdV9kZGlf dHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAweDAwMDAyMDFCLCAweDAwMDAwMEExLCAweDAgfSwK LQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAw MDBDRCwgMHgzIH0sCi0JeyAweDgwMDA5MDEwLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAw MDIwMUIsIDB4MDAwMDAwOUQsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgz IH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDIwMTYsIDB4 MDAwMDAwNEYsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi19Owot Ci0vKiBLYWJ5bGFrZSBZICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMga2Js X3lfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewotCXsgMHgwMDAwMTAxNywgMHgwMDAwMDBBMSwg MHgwIH0sCi0JeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKLQl7IDB4ODAwMDcwMTEs IDB4MDAwMDAwQ0QsIDB4MyB9LAotCXsgMHg4MDAwODAwRiwgMHgwMDAwMDBDMCwgMHgzIH0sCi0J eyAweDAwMDAxMDE3LCAweDAwMDAwMDlELCAweDAgfSwKLQl7IDB4ODAwMDUwMTIsIDB4MDAwMDAw QzAsIDB4MyB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgzIH0sCi0JeyAweDAwMDAx MDE3LCAweDAwMDAwMDRDLCAweDAgfSwKLQl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9 LAotfTsKLQotLyoKLSAqIFNreWxha2UvS2FieWxha2UgSCBhbmQgUwotICogZURQIDEuNCBsb3cg dnN3aW5nIHRyYW5zbGF0aW9uIHBhcmFtZXRlcnMKLSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zIHNrbF9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewotCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDBBOCwgMHgwIH0sCi0JeyAweDAwMDA0MDEzLCAweDAwMDAwMEE5LCAweDAgfSwK LQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwOTAxMCwgMHgwMDAw MDA5QywgMHgwIH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAw MDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgw IH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEFCLCAweDAgfSwKLQl7IDB4MDAwMDcwMTMsIDB4 MDAwMDAwOUYsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0sCi19Owot Ci0vKgotICogU2t5bGFrZS9LYWJ5bGFrZSBVCi0gKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNs YXRpb24gcGFyYW1ldGVycwotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMg c2tsX3VfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAw QTgsIDB4MCB9LAotCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBBOSwgMHgwIH0sCi0JeyAweDAwMDA3 MDExLCAweDAwMDAwMEEyLCAweDAgfSwKLQl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwOUMsIDB4MCB9 LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOSwgMHgwIH0sCi0JeyAweDAwMDA2MDEzLCAweDAw MDAwMEEyLCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTYsIDB4MCB9LAotCXsgMHgw MDAwMjAxNiwgMHgwMDAwMDBBQiwgMHgwIH0sCi0JeyAweDAwMDA1MDEzLCAweDAwMDAwMDlGLCAw eDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwREYsIDB4MCB9LAotfTsKLQotLyoKLSAqIFNr eWxha2UvS2FieWxha2UgWQotICogZURQIDEuNCBsb3cgdnN3aW5nIHRyYW5zbGF0aW9uIHBhcmFt ZXRlcnMKLSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90 cmFuc2xhdGlvbnNfZWRwW10gPSB7Ci0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEE4LCAweDAgfSwK LQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQUIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMSwgMHgwMDAw MDBBNCwgMHgwIH0sCi0JeyAweDAwMDA5MDEwLCAweDAwMDAwMERGLCAweDAgfSwKLQl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwQUEsIDB4MCB9LAotCXsgMHgwMDAwNjAxMywgMHgwMDAwMDBBNCwgMHgw IH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMDlELCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4 MDAwMDAwQTAsIDB4MCB9LAotCXsgMHgwMDAwNjAxMiwgMHgwMDAwMDBERiwgMHgwIH0sCi0JeyAw eDAwMDAwMDE4LCAweDAwMDAwMDhBLCAweDAgfSwKLX07Ci0KLS8qIFNreWxha2UvS2FieWxha2Ug VSwgSCBhbmQgUyAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF9kZGlf dHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUMsIDB4MCB9 LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5RCwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAw MDAwMDg4LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTEsIDB4MCB9LAotCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDA5OCwgMHgwIH0sCi0JeyAweDAwMDA0MDEzLCAweDAwMDAwMDg4LCAw eDAgfSwKLQl7IDB4ODAwMDYwMTIsIDB4MDAwMDAwQ0QsIDB4MSB9LAotCXsgMHgwMDAwMDAxOCwg MHgwMDAwMDBERiwgMHgwIH0sCi0JeyAweDgwMDAzMDE1LCAweDAwMDAwMENELCAweDEgfSwJLyog RGVmYXVsdCAqLwotCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDgwMDAw MDE4LCAweDAwMDAwMEMwLCAweDEgfSwKLX07Ci0KLS8qIFNreWxha2UvS2FieWxha2UgWSAqLwot c3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xhdGlvbnNf aGRtaVtdID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCi0JeyAweDAwMDA1 MDEyLCAweDAwMDAwMERGLCAweDAgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQ0IsIDB4MyB9 LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBNCwgMHgwIH0sCi0JeyAweDAwMDAwMDE4LCAweDAw MDAwMDlELCAweDAgfSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwODAsIDB4MCB9LAotCXsgMHg4 MDAwNjAxMywgMHgwMDAwMDBDMCwgMHgzIH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMDhBLCAw eDAgfSwKLQl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQzAsIDB4MyB9LAkvKiBEZWZhdWx0ICovCi0J eyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4ODAwMDAwMTgsIDB4MDAwMDAw QzAsIDB4MyB9LAotfTsKLQotc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIHsKLQl1OCBtYXJnaW47 CS8qIHN3aW5nIHZhbHVlICovCi0JdTggc2NhbGU7CS8qIHNjYWxlIHZhbHVlICovCi0JdTggZW5h YmxlOwkvKiBzY2FsZSBlbmFibGUgKi8KLQl1OCBkZWVtcGhhc2lzOwotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0g ewotCQkJCQkvKiBJZHgJTlQgbVYgZGlmZglkYiAgKi8KLQl7IDUyLCAgMHg5QSwgMCwgMTI4LCB9 LAkvKiAwOgk0MDAJCTAgICAqLwotCXsgNzgsICAweDlBLCAwLCA4NSwgIH0sCS8qIDE6CTQwMAkJ My41ICovCi0JeyAxMDQsIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAgKi8KLQl7IDE1 NCwgMHg5QSwgMCwgNDMsICB9LAkvKiAzOgk0MDAJCTkuNSAqLwotCXsgNzcsICAweDlBLCAwLCAx MjgsIH0sCS8qIDQ6CTYwMAkJMCAgICovCi0JeyAxMTYsIDB4OUEsIDAsIDg1LCAgfSwJLyogNToJ NjAwCQkzLjUgKi8KLQl7IDE1NCwgMHg5QSwgMCwgNjQsICB9LAkvKiA2Ogk2MDAJCTYgICAqLwot CXsgMTAyLCAweDlBLCAwLCAxMjgsIH0sCS8qIDc6CTgwMAkJMCAgICovCi0JeyAxNTQsIDB4OUEs IDAsIDg1LCAgfSwJLyogODoJODAwCQkzLjUgKi8KLQl7IDE1NCwgMHg5QSwgMSwgMTI4LCB9LAkv KiA5OgkxMjAwCQkwICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZf dHJhbnMgYnh0X2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Ci0JCQkJCS8qIElkeAlOVCBtViBk aWZmCWRiICAqLwotCXsgMjYsIDAsIDAsIDEyOCwgfSwJLyogMDoJMjAwCQkwICAgKi8KLQl7IDM4 LCAwLCAwLCAxMTIsIH0sCS8qIDE6CTIwMAkJMS41ICovCi0JeyA0OCwgMCwgMCwgOTYsICB9LAkv KiAyOgkyMDAJCTQgICAqLwotCXsgNTQsIDAsIDAsIDY5LCAgfSwJLyogMzoJMjAwCQk2ICAgKi8K LQl7IDMyLCAwLCAwLCAxMjgsIH0sCS8qIDQ6CTI1MAkJMCAgICovCi0JeyA0OCwgMCwgMCwgMTA0 LCB9LAkvKiA1OgkyNTAJCTEuNSAqLwotCXsgNTQsIDAsIDAsIDg1LCAgfSwJLyogNjoJMjUwCQk0 ICAgKi8KLQl7IDQzLCAwLCAwLCAxMjgsIH0sCS8qIDc6CTMwMAkJMCAgICovCi0JeyA1NCwgMCwg MCwgMTAxLCB9LAkvKiA4OgkzMDAJCTEuNSAqLwotCXsgNDgsIDAsIDAsIDEyOCwgfSwJLyogOToJ MzAwCQkwICAgKi8KLX07Ci0KLS8qIEJTcGVjIGhhcyAyIHJlY29tbWVuZGVkIHZhbHVlcyAtIGVu dHJpZXMgMCBhbmQgOC4KLSAqIFVzaW5nIHRoZSBlbnRyeSB3aXRoIGhpZ2hlciB2c3dpbmcuCi0g Ki8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFuc2xh dGlvbnNfaGRtaVtdID0gewotCQkJCQkvKiBJZHgJTlQgbVYgZGlmZglkYiAgKi8KLQl7IDUyLCAg MHg5QSwgMCwgMTI4LCB9LAkvKiAwOgk0MDAJCTAgICAqLwotCXsgNTIsICAweDlBLCAwLCA4NSwg IH0sCS8qIDE6CTQwMAkJMy41ICovCi0JeyA1MiwgIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAw CQk2ICAgKi8KLQl7IDQyLCAgMHg5QSwgMCwgNDMsICB9LAkvKiAzOgk0MDAJCTkuNSAqLwotCXsg NzcsICAweDlBLCAwLCAxMjgsIH0sCS8qIDQ6CTYwMAkJMCAgICovCi0JeyA3NywgIDB4OUEsIDAs IDg1LCAgfSwJLyogNToJNjAwCQkzLjUgKi8KLQl7IDc3LCAgMHg5QSwgMCwgNjQsICB9LAkvKiA2 Ogk2MDAJCTYgICAqLwotCXsgMTAyLCAweDlBLCAwLCAxMjgsIH0sCS8qIDc6CTgwMAkJMCAgICov Ci0JeyAxMDIsIDB4OUEsIDAsIDg1LCAgfSwJLyogODoJODAwCQkzLjUgKi8KLQl7IDE1NCwgMHg5 QSwgMSwgMTI4LCB9LAkvKiA5OgkxMjAwCQkwICAgKi8KLX07Ci0KLXN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyB7Ci0JdTggZHcyX3N3aW5nX3NlbDsKLQl1OCBkdzdfbl9zY2FsYXI7Ci0JdTggZHc0 X2N1cnNvcl9jb2VmZjsKLQl1OCBkdzRfcG9zdF9jdXJzb3JfMjsKLQl1OCBkdzRfcG9zdF9jdXJz b3JfMTsKLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuODVW IGZvciBEUCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRp X3RyYW5zbGF0aW9uc19kcF8wXzg1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIg ICAgKi8KLQl7IDB4QSwgMHg1RCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAg ICAwLjAgICAqLwotCXsgMHhBLCAweDZBLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDM1MCAgIDUw MCAgICAgIDMuMSAgICovCi0JeyAweEIsIDB4N0EsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogMzUw ICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3QywgMHgyRCwgMHgwMCwgMHgxMiB9LAkv KiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAweDY5LCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4N0EsIDB4MzYsIDB4MDAs IDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3QywgMHgzMCwg MHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhCLCAweDdELCAw eDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcyNSAgICAgIDAuOSAgICovCi0JeyAweDYsIDB4 N0MsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7IDB4 NiwgMHg3QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwot fTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIEhE TUkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFu c2xhdGlvbnNfaGRtaV8wXzg1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAg Ki8KLQl7IDB4QSwgMHg2MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAw LjAgICAqLwotCXsgMHhCLCAweDczLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAgIDY1MCAg ICAgIDMuMiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDUwICAg ODUwICAgICAgNS41ICAgKi8KLQl7IDB4QiwgMHg3MywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2 NTAgICA2NTAgICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM3LCAweDAwLCAweDA4IH0s CS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgw MCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBT d2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIGVEUCAqLwotc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVZb XSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4NjYsIDB4 M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KLQl7IDB4MCwgMHg3 RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAgICAgICAyLjMgICAqLwotCXsgMHg4 LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCi0J eyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAgMzAwICAgICAgMi4zICAg Ki8KLQl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNjkgICAzNTAgICAgICAy LjMgICAqLwotCXsgMHhBLCAweDY2LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAg ICAgIDEuMCAgICovCi0JeyAweEIsIDB4NzAsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDYwICAg NjAwICAgICAgMi4zICAgKi8KLQl7IDB4QywgMHg3NSwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA1 MzcgICA3MDAgICAgICAyLjMgICAqLwotCXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dy YW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgRFAgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF85NVZbXSA9IHsKLQkJCQkJ CS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4NUQsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHg2QSwgMHgzOCwgMHgw MCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwotCXsgMHhCLCAweDdBLCAweDMy LCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0Ms IDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwg MHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsg MHhCLCAweDdBLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICov Ci0JeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAgICAgNS4x ICAgKi8KLQl7IDB4QiwgMHg3RCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MjUgICAg ICAwLjkgICAqLwotCXsgMHg2LCAweDdDLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDYwMCAgIDkw MCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0IsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAw ICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcg Zm9yIFZjY0lPIDAuOTVWIGZvciBIRE1JICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVZbXSA9IHsKLQkJCQkJCS8q IE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4NUMsIDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KLQl7IDB4QiwgMHg2OSwgMHgzNywgMHgwMCwg MHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLwotCXsgMHg1LCAweDc2LCAweDMxLCAw eDAwLCAweDBFIH0sCS8qIDQwMCAgIDgwMCAgICAgIDYuMCAgICovCi0JeyAweEEsIDB4NUUsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KLQl7IDB4QiwgMHg2 OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAgICAgICAwLjAgICAqLwotCXsgMHhC LCAweDc5LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCi0J eyAweDYsIDB4N0QsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogNjAwICAgMTAwMCAgICAgNC40ICAg Ki8KLQl7IDB4NSwgMHg3NiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4MDAgICA4MDAgICAgICAw LjAgICAqLwotCXsgMHg2LCAweDdELCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDgwMCAgIDEwMDAg ICAgIDEuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODUwICAg MTA1MCAgICAgMS44ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAx MDUwICAxMDUwICAgICAwLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWlu ZyBmb3IgVmNjSU8gMC45NVYgZm9yIGVEUCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVZbXSA9IHsKLQkJCQkJCS8q IE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4NjEsIDB4M0EsIDB4MDAsIDB4MDUg fSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KLQl7IDB4MCwgMHg3RiwgMHgzOCwgMHgwMCwg MHgwNyB9LAkvKiAxNTMgICAyMDAgICAgICAyLjMgICAqLwotCXsgMHg4LCAweDdGLCAweDM4LCAw eDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCi0JeyAweDEsIDB4N0YsIDB4 MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAgMzAwICAgICAgMi4zICAgKi8KLQl7IDB4OSwgMHg3 RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNjkgICAzNTAgICAgICAyLjMgICAqLwotCXsgMHhB LCAweDYxLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEuMCAgICovCi0J eyAweEIsIDB4NjgsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNDYwICAgNjAwICAgICAgMi4zICAg Ki8KLQl7IDB4QywgMHg2RSwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA1MzcgICA3MDAgICAgICAy LjMgICAqLwotCXsgMHg0LCAweDdGLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDQ2MCAgIDYwMCAg ICAgIDIuMyAgICovCi0JeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAg NDAwICAgICAgMC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9y IFZjY0lPIDEuMDVWIGZvciBEUCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90 cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8xXzA1VltdID0gewotCQkJCQkJLyogTlQgbVYg VHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1OCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0 MDAgICA0MDAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY0LCAweDM3LCAweDAwLCAweDA4IH0s CS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCi0JeyAweDUsIDB4NzAsIDB4MzEsIDB4MDAsIDB4 MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgyQywgMHgw MCwgMHgxMyB9LAkvKiA0MDAgICAxMDUwICAgICA4LjQgICAqLwotCXsgMHhCLCAweDY0LCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCi0JeyAweDUsIDB4NzMs IDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KLQl7IDB4Niwg MHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1NTAgICAxMDUwICAgICA1LjYgICAqLwotCXsg MHg1LCAweDc2LCAweDNFLCAweDAwLCAweDAxIH0sCS8qIDg1MCAgIDkwMCAgICAgIDAuNSAgICov Ci0JeyAweDYsIDB4N0YsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNzUwICAgMTA1MCAgICAgMi45 ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxMDUwICAxMDUwICAg ICAwLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8g MS4wNVYgZm9yIEhETUkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg Y25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1OCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAg ICA0MDAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY0LCAweDM3LCAweDAwLCAweDA4IH0sCS8q IDQwMCAgIDYwMCAgICAgIDMuNSAgICovCi0JeyAweDUsIDB4NzAsIDB4MzEsIDB4MDAsIDB4MEUg fSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KLQl7IDB4QSwgMHg1QiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY0LCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCi0JeyAweDUsIDB4NzMsIDB4 MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KLQl7IDB4NiwgMHg3 QywgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA2MDAgICAxMDAwICAgICA0LjQgICAqLwotCXsgMHg1 LCAweDcwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAgICovCi0J eyAweDYsIDB4N0MsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODAwICAgMTAwMCAgICAgMS45ICAg Ki8KLQl7IDB4NiwgMHg3RiwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4NTAgICAxMDUwICAgICAx LjggICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAg ICAgIDAuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJ TyAxLjA1ViBmb3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z IGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzQSwgMHgwMCwgMHgwNSB9LAkvKiAzODQg ICA1MDAgICAgICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8q IDE1MyAgIDIwMCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcg fSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwg MHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwotCXsgMHg5LCAweDdGLCAweDM4LCAw eDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCi0JeyAweEEsIDB4NUUsIDB4 M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAgMS4wICAgKi8KLQl7IDB4QiwgMHg2 NCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwotCXsgMHhF LCAweDZBLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAgICovCi0J eyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAg Ki8KLX07Ci0KLS8qIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9ucyAqLwotc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHBfaGJyMltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4 QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwot CXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAg ICovCi0JeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAg Ni4wICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5MDAg ICAgICA4LjIgICAqLwotCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAg IDUwMCAgICAgIDAuMCAgICovCi0JeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyog NTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9 LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAw eDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzUsIDB4 MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0J eyAweDAsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgMjAwICAgICAgMC4wICAg Ki8KLQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMDAgICAyNTAgICAgICAx LjkgICAqLwotCXsgMHgxLCAweDdGLCAweDMzLCAweDAwLCAweDBDIH0sCS8qIDIwMCAgIDMwMCAg ICAgIDMuNSAgICovCi0JeyAweDksIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogMjAwICAg MzUwICAgICAgNC45ICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAy NTAgICAyNTAgICAgICAwLjAgICAqLwotCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0s CS8qIDI1MCAgIDMwMCAgICAgIDEuNiAgICovCi0JeyAweDksIDB4N0YsIDB4MzUsIDB4MDAsIDB4 MEEgfSwJLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAzMDAgICAzMDAgICAgICAwLjAgICAqLwotCXsgMHg5LCAweDdGLCAweDM4 LCAweDAwLCAweDA3IH0sCS8qIDMwMCAgIDM1MCAgICAgIDEuMyAgICovCi0JeyAweDksIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF9oYnIzW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq LwotCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAu MCAgICovCi0JeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAg ICAgMy4xICAgKi8KLQl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3 MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1 MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgw QiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAw LCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NkMsIDB4M0Ms IDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3Riwg MHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19Owot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq LwotCXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAu MCAgICovCi0JeyAweEIsIDB4NzMsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNDUwICAgNjUwICAg ICAgMy4yICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0NTAgICA4 NTAgICAgICA1LjUgICAqLwotCXsgMHhCLCAweDczLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1 MCAgIDY1MCAgICAgIDAuMCAgIEFMUyAqLwotCXsgMHg2LCAweDdGLCAweDM3LCAweDAwLCAweDA4 IH0sCS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwg MHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBlaGxfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHBbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4 MzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLQl7IDB4 QSwgMHg0NywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwot CXsgMHhDLCAweDY0LCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAg ICovCi0JeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogMzUwICAgOTAwICAgICAg OC4yICAgKi8KLQl7IDB4QSwgMHg0NiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAg ICAgICAwLjAgICAqLwotCXsgMHhDLCAweDY0LCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDUwMCAg IDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyog NTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2MSwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweDgs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDIwMCAgIDIwMCAgICAgIDAuMCAg ICovCi0JeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDIwMCAgIDI1 MCAgICAgIDEuOSAgICovCi0JeyAweDEsIDB4N0YsIDB4MzMsIDB4MDAsIDB4MEMgfSwgICAgICAg IC8qIDIwMCAgIDMwMCAgICAgIDMuNSAgICovCi0JeyAweEEsIDB4MzUsIDB4MzYsIDB4MDAsIDB4 MDkgfSwgICAgICAgIC8qIDIwMCAgIDM1MCAgICAgIDQuOSAgICovCi0JeyAweDgsIDB4N0YsIDB4 M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDI1MCAgICAgIDAuMCAgICovCi0JeyAw eDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDI1MCAgIDMwMCAgICAgIDEu NiAgICovCi0JeyAweEEsIDB4MzUsIDB4MzUsIDB4MDAsIDB4MEEgfSwgICAgICAgIC8qIDI1MCAg IDM1MCAgICAgIDIuOSAgICovCi0JeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAg ICAgIC8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4MzUsIDB4MzgsIDB4MDAs IDB4MDcgfSwgICAgICAgIC8qIDMwMCAgIDM1MCAgICAgIDEuMyAgICovCi0JeyAweEEsIDB4MzUs IDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGpzbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYg ZGIgICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjAw ICAgMjAwICAgICAgMC4wICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAg ICAgICAgLyogMjAwICAgMjUwICAgICAgMS45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzRCwgMHgw MCwgMHgwMiB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAgMy41ICAgKi8KLQl7IDB4QSwgMHgz NSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjAwICAgMzUwICAgICAgNC45ICAgKi8K LQl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjUwICAgMjUwICAg ICAgMC4wICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyog MjUwICAgMzAwICAgICAgMS42ICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzQSwgMHgwMCwgMHgwNSB9 LCAgICAgICAgLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzAwICAgMzAwICAgICAgMC4wICAgKi8KLQl7IDB4QSwg MHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMzAwICAgMzUwICAgICAgMS4zICAg Ki8KLQl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzUwICAgMzUw ICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJh bnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX3Jicl9oYnJbXSA9IHsKLQkJCQkJ CS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4MzIsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHg0OCwgMHgzNSwgMHgw MCwgMHgwQSB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwotCXsgMHhDLCAweDYzLCAweDJG LCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0Ys IDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwg MHg0MywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsg MHhDLCAweDYwLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICov Ci0JeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAgICAgNS4x ICAgKi8KLQl7IDB4QywgMHg2MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA3MDAgICAg ICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDYwMCAgIDkw MCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAw ICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyM1tdID0g ewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHgzMiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDQ4LCAw eDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAweEMsIDB4 NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4 NiwgMHg3RiwgMHgyQywgMHgwMCwgMHgxMyB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwot CXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAg ICovCi0JeyAweEMsIDB4NjAsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAg Mi45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAg ICAgICA1LjEgICAqLwotCXsgMHhDLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAg IDcwMCAgICAgIDAuNiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyog NjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RydWN0IGljbF9tZ19waHlfZGRp X2J1Zl90cmFucyB7Ci0JdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV8xMV82OwotCXUzMiBjcmlf dHhkZWVtcGhfb3ZlcnJpZGVfNV8wOwotCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTdfMTI7 Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xf bWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfcmJyX2hicltdID0gewotCQkJCS8qIFZvbHRhZ2Ugc3dp bmcgIHByZS1lbXBoYXNpcyAqLwotCXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAg ICAgICAwICAgKi8KLQl7IDB4MUQsIDB4MDAsIDB4MDUgfSwJLyogMCAgICAgICAgICAgICAgMSAg ICovCi0JeyAweDI0LCAweDAwLCAweDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLwotCXsg MHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAwICAgICAgICAgICAgICAzICAgKi8KLQl7IDB4MjEsIDB4 MDAsIDB4MDAgfSwJLyogMSAgICAgICAgICAgICAgMCAgICovCi0JeyAweDJCLCAweDAwLCAweDA4 IH0sCS8qIDEgICAgICAgICAgICAgIDEgICAqLwotCXsgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiAx ICAgICAgICAgICAgICAyICAgKi8KLQl7IDB4MzEsIDB4MDAsIDB4MDMgfSwJLyogMiAgICAgICAg ICAgICAgMCAgICovCi0JeyAweDM0LCAweDAwLCAweDBCIH0sCS8qIDIgICAgICAgICAgICAgIDEg ICAqLwotCXsgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzICAgICAgICAgICAgICAwICAgKi8KLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19w aHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjNbXSA9IHsKLQkJCQkvKiBWb2x0YWdlIHN3aW5n ICBwcmUtZW1waGFzaXMgKi8KLQl7IDB4MTgsIDB4MDAsIDB4MDAgfSwJLyogMCAgICAgICAgICAg ICAgMCAgICovCi0JeyAweDFELCAweDAwLCAweDA1IH0sCS8qIDAgICAgICAgICAgICAgIDEgICAq LwotCXsgMHgyNCwgMHgwMCwgMHgwQyB9LAkvKiAwICAgICAgICAgICAgICAyICAgKi8KLQl7IDB4 MkIsIDB4MDAsIDB4MTQgfSwJLyogMCAgICAgICAgICAgICAgMyAgICovCi0JeyAweDI2LCAweDAw LCAweDAwIH0sCS8qIDEgICAgICAgICAgICAgIDAgICAqLwotCXsgMHgyQywgMHgwMCwgMHgwNyB9 LAkvKiAxICAgICAgICAgICAgICAxICAgKi8KLQl7IDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMSAg ICAgICAgICAgICAgMiAgICovCi0JeyAweDJFLCAweDAwLCAweDAwIH0sCS8qIDIgICAgICAgICAg ICAgIDAgICAqLwotCXsgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiAyICAgICAgICAgICAgICAxICAg Ki8KLQl7IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMyAgICAgICAgICAgICAgMCAgICovCi19Owot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xfbWdfcGh5 X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewotCQkJCS8qIEhETUkgUHJlc2V0CVZTCVByZS1l bXBoICovCi0JeyAweDFBLCAweDAsIDB4MCB9LAkvKiAxCQk0MDBtVgkwZEIgKi8KLQl7IDB4MjAs IDB4MCwgMHgwIH0sCS8qIDIJCTUwMG1WCTBkQiAqLwotCXsgMHgyOSwgMHgwLCAweDAgfSwJLyog MwkJNjUwbVYJMGRCICovCi0JeyAweDMyLCAweDAsIDB4MCB9LAkvKiA0CQk4MDBtVgkwZEIgKi8K LQl7IDB4M0YsIDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KLQl7IDB4M0EsIDB4MCwg MHg1IH0sCS8qIDYJCUZ1bGwJLTEuNSBkQiAqLwotCXsgMHgzOSwgMHgwLCAweDYgfSwJLyogNwkJ RnVsbAktMS44IGRCICovCi0JeyAweDM4LCAweDAsIDB4NyB9LAkvKiA4CQlGdWxsCS0yIGRCICov Ci0JeyAweDM3LCAweDAsIDB4OCB9LAkvKiA5CQlGdWxsCS0yLjUgZEIgKi8KLQl7IDB4MzYsIDB4 MCwgMHg5IH0sCS8qIDEwCQlGdWxsCS0zIGRCICovCi19OwotCi1zdHJ1Y3QgdGdsX2RrbF9waHlf ZGRpX2J1Zl90cmFucyB7Ci0JdTMyIGRrbF92c3dpbmdfY29udHJvbDsKLQl1MzIgZGtsX3ByZXNo b290X2NvbnRyb2w7Ci0JdTMyIGRrbF9kZV9lbXBoYXNpc19jb250cm9sOwotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2RwX2Rk aV90cmFuc1tdID0gewotCQkJCS8qIFZTCXByZS1lbXAJTm9uLXRyYW5zIG1WCVByZS1lbXBoIGRC ICovCi0JeyAweDcsIDB4MCwgMHgwMCB9LAkvKiAwCTAJNDAwbVYJCTAgZEIgKi8KLQl7IDB4NSwg MHgwLCAweDA1IH0sCS8qIDAJMQk0MDBtVgkJMy41IGRCICovCi0JeyAweDIsIDB4MCwgMHgwQiB9 LAkvKiAwCTIJNDAwbVYJCTYgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDE4IH0sCS8qIDAJMwk0MDBt VgkJOS41IGRCICovCi0JeyAweDUsIDB4MCwgMHgwMCB9LAkvKiAxCTAJNjAwbVYJCTAgZEIgKi8K LQl7IDB4MiwgMHgwLCAweDA4IH0sCS8qIDEJMQk2MDBtVgkJMy41IGRCICovCi0JeyAweDAsIDB4 MCwgMHgxNCB9LAkvKiAxCTIJNjAwbVYJCTYgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDAwIH0sCS8q IDIJMAk4MDBtVgkJMCBkQiAqLwotCXsgMHgwLCAweDAsIDB4MEIgfSwJLyogMgkxCTgwMG1WCQkz LjUgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDAwIH0sCS8qIDMJMAkxMjAwbVYJCTAgZEIgSERNSSBk ZWZhdWx0ICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZf dHJhbnMgdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjJbXSA9IHsKLQkJCQkvKiBWUwlwcmUt ZW1wCU5vbi10cmFucyBtVglQcmUtZW1waCBkQiAqLwotCXsgMHg3LCAweDAsIDB4MDAgfSwJLyog MAkwCTQwMG1WCQkwIGRCICovCi0JeyAweDUsIDB4MCwgMHgwNSB9LAkvKiAwCTEJNDAwbVYJCTMu NSBkQiAqLwotCXsgMHgyLCAweDAsIDB4MEIgfSwJLyogMAkyCTQwMG1WCQk2IGRCICovCi0JeyAw eDAsIDB4MCwgMHgxOSB9LAkvKiAwCTMJNDAwbVYJCTkuNSBkQiAqLwotCXsgMHg1LCAweDAsIDB4 MDAgfSwJLyogMQkwCTYwMG1WCQkwIGRCICovCi0JeyAweDIsIDB4MCwgMHgwOCB9LAkvKiAxCTEJ NjAwbVYJCTMuNSBkQiAqLwotCXsgMHgwLCAweDAsIDB4MTQgfSwJLyogMQkyCTYwMG1WCQk2IGRC ICovCi0JeyAweDIsIDB4MCwgMHgwMCB9LAkvKiAyCTAJODAwbVYJCTAgZEIgKi8KLQl7IDB4MCwg MHgwLCAweDBCIH0sCS8qIDIJMQk4MDBtVgkJMy41IGRCICovCi0JeyAweDAsIDB4MCwgMHgwMCB9 LAkvKiAzCTAJMTIwMG1WCQkwIGRCIEhETUkgZGVmYXVsdCAqLwotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2hkbWlfZGRpX3Ry YW5zW10gPSB7Ci0JCQkJLyogSERNSSBQcmVzZXQJVlMJUHJlLWVtcGggKi8KLQl7IDB4NywgMHgw LCAweDAgfSwJLyogMQkJNDAwbVYJMGRCICovCi0JeyAweDYsIDB4MCwgMHgwIH0sCS8qIDIJCTUw MG1WCTBkQiAqLwotCXsgMHg0LCAweDAsIDB4MCB9LAkvKiAzCQk2NTBtVgkwZEIgKi8KLQl7IDB4 MiwgMHgwLCAweDAgfSwJLyogNAkJODAwbVYJMGRCICovCi0JeyAweDAsIDB4MCwgMHgwIH0sCS8q IDUJCTEwMDBtVgkwZEIgKi8KLQl7IDB4MCwgMHgwLCAweDUgfSwJLyogNgkJRnVsbAktMS41IGRC ICovCi0JeyAweDAsIDB4MCwgMHg2IH0sCS8qIDcJCUZ1bGwJLTEuOCBkQiAqLwotCXsgMHgwLCAw eDAsIDB4NyB9LAkvKiA4CQlGdWxsCS0yIGRCICovCi0JeyAweDAsIDB4MCwgMHg4IH0sCS8qIDkJ CUZ1bGwJLTIuNSBkQiAqLwotCXsgMHgwLCAweDAsIDB4QSB9LAkvKiAxMAkJRnVsbAktMyBkQiAq LwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLwotCXsgMHhBLCAweDMyLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1 MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUw ICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkv KiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdELCAweDJCLCAweDAwLCAweDE0 IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg3MywgMHgzNCwg MHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAw eDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4 NkMsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4 NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwot CXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAg ICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFu cyBtViBkYiAgICAqLwotCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAg IDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyog MzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9 LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAw eDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NDcsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg2MywgMHgz NCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdG LCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMs IDB4NjEsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7 IDB4NiwgMHg3QiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAq LwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAu MCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF91 eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBt ViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NEYsIDB4MzYsIDB4MDAsIDB4MDkg fSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg2MCwgMHgzMiwgMHgwMCwg MHgwRCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHhDLCAweDdGLCAweDJELCAw eDAwLCAweDEyIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEMsIDB4NDcsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg2 RiwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2 LCAweDdELCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0J eyAweDYsIDB4NjAsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAg Ki8KLQl7IDB4NiwgMHg3RiwgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAz LjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAg ICAgIDAuMCAgICovCi19OwotCi0vKgotICogQ2xvbmVkIHRoZSBIT0JMIGVudHJ5IHRvIGNvbXBs eSB3aXRoIHRoZSB2b2x0YWdlIGFuZCBwcmUtZW1waGFzaXMgZW50cmllcwotICogdGhhdCBEaXNw bGF5UG9ydCBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzCi0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIy X2hvYmxbXSA9IHsKLQkJCQkJCS8qIFZTCXByZS1lbXAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiAwCTAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAwCTEJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTIJKi8K LQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTMJKi8KLQl7IDB4NiwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAxCTEJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiAxCTIJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyCTAJKi8KLQl7 IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyCTEJKi8KLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgcmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwX2hicltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4 QSwgMHgyRiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwot CXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAg ICovCi0JeyAweEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAg Ni4wICAgKi8KLQl7IDB4NiwgMHg3RCwgMHgyQSwgMHgwMCwgMHgxNSB9LAkvKiAzNTAgICA5MDAg ICAgICA4LjIgICAqLwotCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAg IDUwMCAgICAgIDAuMCAgICovCi0JeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyog NTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9 LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhDLCAweDZFLCAweDNFLCAweDAwLCAw eDAxIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzUsIDB4 MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfaGJyMl9oYnIzW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq LwotCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAu MCAgICovCi0JeyAweEEsIDB4NTAsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMzUwICAgNTAwICAg ICAgMy4xICAgKi8KLQl7IDB4QywgMHg2MSwgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAzNTAgICA3 MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJFLCAweDAwLCAweDExIH0sCS8qIDM1 MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg1RiwgMHgzOCwgMHgwMCwgMHgw NyB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAw LCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NUYsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RSwg MHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19Owot Ci1zdGF0aWMgYm9vbCBpc19ob2JsX2J1Zl90cmFucyhjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgKnRhYmxlKQotewotCXJldHVybiB0YWJsZSA9PSB0Z2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZWRwX2hicjJfaG9ibDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zICoKLWJkd19nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoZGV2X3ByaXYtPnZidC5l ZHAubG93X3Zzd2luZykgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5z bGF0aW9uc19lZHApOwotCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfZWRwOwotCX0gZWxz ZSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2RwKTsK LQkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0KLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKLXNrbF9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChJ U19TS0xfVUxYKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9k ZGlfdHJhbnNsYXRpb25zX2RwKTsKLQkJcmV0dXJuIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHA7 Ci0JfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKLQkJcmV0dXJuIHNrbF91X2RkaV90 cmFuc2xhdGlvbnNfZHA7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2ts X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfZHA7 Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgota2JsX2dldF9i dWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVz KQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rl ci0+YmFzZS5kZXYpOwotCi0JaWYgKElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NG TF9VTFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NNTF9VTFgoZGV2X3ByaXYpKSB7Ci0JCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGtibF95X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4g a2JsX3lfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9IGVsc2UgaWYgKElTX0tCTF9VTFQoZGV2X3By aXYpIHx8Ci0JCSAgIElTX0NGTF9VTFQoZGV2X3ByaXYpIHx8Ci0JCSAgIElTX0NNTF9VTFQoZGV2 X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGtibF91X2RkaV90cmFuc2xhdGlv bnNfZHApOwotCQlyZXR1cm4ga2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9IGVsc2Ugewot CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShrYmxfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJl dHVybiBrYmxfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyAqCi1za2xfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKGRldl9w cml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKLQkJaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpIHx8 Ci0JCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAotCQkgICAgSVNfQ0ZMX1VMWChkZXZfcHJp dikgfHwKLQkJICAgIElTX0NNTF9VTFgoZGV2X3ByaXYpKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcCk7Ci0JCQlyZXR1cm4gc2tsX3lfZGRp X3RyYW5zbGF0aW9uc19lZHA7Ci0JCX0gZWxzZSBpZiAoSVNfU0tMX1VMVChkZXZfcHJpdikgfHwK LQkJCSAgIElTX0tCTF9VTFQoZGV2X3ByaXYpIHx8Ci0JCQkgICBJU19DRkxfVUxUKGRldl9wcml2 KSB8fAotCQkJICAgSVNfQ01MX1VMVChkZXZfcHJpdikpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKLQkJCXJldHVybiBza2xfdV9kZGlf dHJhbnNsYXRpb25zX2VkcDsKLQkJfSBlbHNlIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KHNrbF9kZGlfdHJhbnNsYXRpb25zX2VkcCk7Ci0JCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlv bnNfZWRwOwotCQl9Ci0JfQotCi0JaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSB8fAotCSAgICBJ U19DT0ZGRUVMQUtFKGRldl9wcml2KSB8fAotCSAgICBJU19DT01FVExBS0UoZGV2X3ByaXYpKQot CQlyZXR1cm4ga2JsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLQllbHNl Ci0JCXJldHVybiBza2xfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgotc2tsX2dldF9idWZfdHJhbnNf aGRtaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCAqbl9lbnRyaWVzKQot ewotCWlmIChJU19TS0xfVUxYKGRldl9wcml2KSB8fAotCSAgICBJU19LQkxfVUxYKGRldl9wcml2 KSB8fAotCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAotCSAgICBJU19DTUxfVUxYKGRldl9w cml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25z X2hkbWkpOwotCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotCX0gZWxzZSB7 Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwot CQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQg c2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhlbnVtIHBvcnQgcG9ydCwgaW50IG5fZW50cmllcykK LXsKLQkvKiBPbmx5IERESUEgYW5kIERESUUgY2FuIHNlbGVjdCB0aGUgMTB0aCByZWdpc3RlciB3 aXRoIERQICovCi0JaWYgKHBvcnQgPT0gUE9SVF9BIHx8IHBvcnQgPT0gUE9SVF9FKQotCQlyZXR1 cm4gbWluKG5fZW50cmllcywgMTApOwotCWVsc2UKLQkJcmV0dXJuIG1pbihuX2VudHJpZXMsIDkp OwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgotaW50ZWxfZGRpX2dl dF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRy aWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSB8fAotCSAgICBJ U19DT0ZGRUVMQUtFKGRldl9wcml2KSB8fAotCSAgICBJU19DT01FVExBS0UoZGV2X3ByaXYpKSB7 Ci0JCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0KLQkJCWti bF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Ci0JCSpuX2VudHJpZXMgPSBz a2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29kZXItPnBvcnQsICpuX2VudHJpZXMpOwotCQly ZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYp KSB7Ci0JCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0KLQkJ CXNrbF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Ci0JCSpuX2VudHJpZXMg PSBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29kZXItPnBvcnQsICpuX2VudHJpZXMpOwot CQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZf cHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNf ZHApOwotCQlyZXR1cm4gIGJkd19kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0gZWxzZSBpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90 cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci0JfQot Ci0JKm5fZW50cmllcyA9IDA7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyAqCi1pbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYg KElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Ci0JCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpk ZGlfdHJhbnNsYXRpb25zID0KLQkJCXNrbF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2Vu dHJpZXMpOwotCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVy LT5wb3J0LCAqbl9lbnRyaWVzKTsKLQkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7Ci0JfSBlbHNl IGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCXJldHVybiBiZHdfZ2V0X2J1Zl90cmFu c19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLQl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3By aXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2Rw KTsKLQkJcmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0KLQotCSpuX2VudHJpZXMg PSAwOwotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgKgotaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZmRpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCSAgICBpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoSVNfQlJPQURXRUxM KGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5zbGF0 aW9uc19mZGkpOwotCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfZmRpOwotCX0gZWxzZSBp ZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3 X2RkaV90cmFuc2xhdGlvbnNfZmRpKTsKLQkJcmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25zX2Zk aTsKLQl9Ci0KLQkqbl9lbnRyaWVzID0gMDsKLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNv bnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKLWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWko c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGludCAqbl9lbnRyaWVzKQot ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwotCi0JaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Ci0JCXJldHVybiBza2xf Z2V0X2J1Zl90cmFuc19oZG1pKGRldl9wcml2LCBuX2VudHJpZXMpOwotCX0gZWxzZSBpZiAoSVNf QlJPQURXRUxMKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRp X3RyYW5zbGF0aW9uc19oZG1pKTsKLQkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWk7 Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKLQkJcmV0dXJuIGhzd19kZGlfdHJh bnNsYXRpb25zX2hkbWk7Ci0JfQotCi0JKm5fZW50cmllcyA9IDA7Ci0JcmV0dXJuIE5VTEw7Ci19 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgotYnh0X2dldF9idWZf dHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQot ewotCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKLQly ZXR1cm4gYnh0X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg Ynh0X2RkaV9idWZfdHJhbnMgKgotYnh0X2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChkZXZf cHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4 dF9kZGlfdHJhbnNsYXRpb25zX2VkcCk7Ci0JCXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19l ZHA7Ci0JfQotCi0JcmV0dXJuIGJ4dF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmll cyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgotYnh0X2dl dF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2Vu dHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYnh0X2RkaV90cmFuc2xhdGlvbnNf aGRtaSk7Ci0JcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotY25sX2dldF9idWZfdHJhbnNfaGRtaShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7 Ci0JdTMyIHZvbHRhZ2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RX MykgJiBWT0xUQUdFX0lORk9fTUFTSzsKLQotCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18w Xzg1VikgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19o ZG1pXzBfODVWKTsKLQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVY7Ci0J fSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgewotCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWKTsKLQkJcmV0dXJu IGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVY7Ci0JfSBlbHNlIGlmICh2b2x0YWdlID09 IFZPTFRBR0VfSU5GT18xXzA1VikgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRp X3RyYW5zbGF0aW9uc19oZG1pXzFfMDVWKTsKLQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25z X2hkbWlfMV8wNVY7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2Nj ICovCi0JCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKLQl9Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotY25sX2dldF9idWZfdHJhbnNf ZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQotewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwotCXUzMiB2b2x0YWdlID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ05MX1BPUlRfQ09N UF9EVzMpICYgVk9MVEFHRV9JTkZPX01BU0s7Ci0KLQlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lO Rk9fMF84NVYpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlv bnNfZHBfMF84NVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVY7Ci0J fSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgewotCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1Vik7Ci0JCXJldHVybiBj bmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9M VEFHRV9JTkZPXzFfMDVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJh bnNsYXRpb25zX2RwXzFfMDVWKTsKLQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFf MDVWOwotCX0gZWxzZSB7Ci0JCSpuX2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLwotCQlN SVNTSU5HX0NBU0Uodm9sdGFnZSk7Ci0JfQotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWNubF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0J dTMyIHZvbHRhZ2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykg JiBWT0xUQUdFX0lORk9fTUFTSzsKLQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5n KSB7Ci0JCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgewotCQkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKLQkJCXJldHVy biBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVY7Ci0JCX0gZWxzZSBpZiAodm9sdGFnZSA9 PSBWT0xUQUdFX0lORk9fMF85NVYpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9k ZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1Vik7Ci0JCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlv bnNfZWRwXzBfOTVWOwotCQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVW KSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBf MV8wNVYpOwotCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VjsKLQkJfSBl bHNlIHsKLQkJCSpuX2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLwotCQkJTUlTU0lOR19D QVNFKHZvbHRhZ2UpOwotCQl9Ci0JCXJldHVybiBOVUxMOwotCX0gZWxzZSB7Ci0JCXJldHVybiBj bmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwotCX0KLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X2NvbWJvX2J1Zl90cmFu c19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICAgaW50ICpuX2VudHJpZXMp Ci17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2hkbWkpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsK LX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X2Nv bWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgaW50ICpuX2Vu dHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjIpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHBfaGJyMjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq Ci1pY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCi0JCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0J CQkgICAgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoY3J0Y19zdGF0ZS0+cG9y dF9jbG9jayA+IDU0MDAwMCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjMpOwotCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOwotCX0gZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAu bG93X3Zzd2luZykgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwotCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF9oYnIyOwotCX0gZWxzZSBpZiAoSVNfREcxKGRldl9wcml2KSAmJiBjcnRj X3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KGRnMV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyX2hicjMpOwotCQlyZXR1cm4g ZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyMzsKLQl9IGVsc2UgaWYg KElTX0RHMShkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZGcxX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX3Jicl9oYnIpOwotCQlyZXR1cm4gZGcxX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwX3Jicl9oYnI7Ci0JfQotCi0JcmV0dXJuIGljbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotaWNsX2dldF9jb21ib19idWZf dHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQljb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCWludCAqbl9lbnRyaWVzKQotewotCWlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJcmV0 dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9l bnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVM X09VVFBVVF9FRFApKQotCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZQotCQlyZXR1cm4gaWNsX2dldF9jb21i b19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgKgotaWNsX2dldF9tZ19i dWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgIGludCAqbl9lbnRyaWVz KQotewotCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9u c19oZG1pKTsKLQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Ci19Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRf bWdfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQlpbnQgKm5fZW50cmllcykK LXsKLQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewotCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGJyMl9oYnIzKTsKLQkJ cmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjM7Ci0JfSBlbHNlIHsK LQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX3Ji cl9oYnIpOwotCQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX3Jicl9oYnI7Ci0J fQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCi1p Y2xfZ2V0X21nX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJICAgICBpbnQg Km5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiBpY2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZQotCQlyZXR1cm4gaWNsX2dldF9tZ19i dWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1laGxfZ2V0X2NvbWJvX2J1Zl90cmFu c19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICAgaW50ICpuX2VudHJpZXMp Ci17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2hkbWkpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsK LX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1laGxfZ2V0X2Nv bWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgaW50ICpuX2Vu dHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZWhsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwKTsKLQlyZXR1cm4gZWhsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Rw OwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWVobF9nZXRf Y29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQg Km5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3 aW5nKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19lZHBfaGJyMik7Ci0JCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZWRwX2hicjI7Ci0JfQotCi0JcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCi0JCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKLQkJCWludCAqbl9lbnRyaWVzKQotewotCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJcmV0dXJuIGVobF9nZXRfY29tYm9f YnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlIGlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQotCQly ZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5f ZW50cmllcyk7Ci0JZWxzZQotCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5j b2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBj bmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwotCXJl dHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLX0KLQotc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19k cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hi cjIpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0X2NvbWJv X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICAgaW50ICpuX2Vu dHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykg ewotCQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewotCQkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoanNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyKTsK LQkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Ci0JCX0g ZWxzZSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShqc2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZWRwX2hicik7Ci0JCQlyZXR1cm4ganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2VkcF9oYnI7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNf ZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKGludGVsX2NydGNfaGFz X3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQlyZXR1cm4ganNsX2dldF9j b21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVs c2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkp Ci0JCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0 ZSwgbl9lbnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19k cChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7 Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfY29tYm9fYnVmX3Ry YW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmllcykKLXsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJh c2UuZGV2KTsKLQotCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Ci0JCWlm IChJU19ST0NLRVRMQUtFKGRldl9wcml2KSkgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo cmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyMyk7Ci0JCQlyZXR1cm4g cmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyMzsKLQkJfSBlbHNlIGlm IChJU19UR0xfVShkZXZfcHJpdikgfHwgSVNfVEdMX1koZGV2X3ByaXYpKSB7Ci0JCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRSh0Z2xfdXlfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJy Mik7Ci0JCQlyZXR1cm4gdGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7 Ci0JCX0gZWxzZSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Ci0JCQlyZXR1cm4gdGdsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjI7Ci0JCX0KLQl9IGVsc2UgewotCQlpZiAoSVNfUk9DS0VUTEFLRShk ZXZfcHJpdikpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHJrbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19kcF9oYnIpOwotCQkJcmV0dXJuIHJrbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19kcF9oYnI7Ci0JCX0gZWxzZSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0 Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyKTsKLQkJCXJldHVybiB0Z2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyOwotCQl9Ci0JfQotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2Vk cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQgKm5fZW50cmllcykKLXsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29k ZXIpOwotCi0JaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiA1NDAwMDApIHsKLQkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIz KTsKLQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMzsKLQl9 IGVsc2UgaWYgKGRldl9wcml2LT52YnQuZWRwLmhvYmwgJiYgIWludGVsX2RwLT5ob2JsX2ZhaWxl ZCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjJfaG9ibCk7Ci0JCXJldHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjJfaG9ibDsKLQl9IGVsc2UgaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192 c3dpbmcpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF9oYnIyKTsKLQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfaGJyMjsKLQl9Ci0KLQlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAo ZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQlyZXR1cm4gdGdsX2dldF9jb21i b19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2Ug aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCi0J CXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwg bl9lbnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChl bmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hkbWko c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgIGludCAqbl9lbnRyaWVzKQotewotCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zKTsKLQlyZXR1cm4g dGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnM7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGds X2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCi0JCQkgaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKGNydGNfc3RhdGUt PnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2Rr bF9waHlfZHBfZGRpX3RyYW5zX2hicjIpOwotCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3Ry YW5zX2hicjI7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2RrbF9w aHlfZHBfZGRpX3RyYW5zKTsKLQkJcmV0dXJuIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuczsKLQl9 Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCi10 Z2xfZ2V0X2RrbF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkgICAgICBp bnQgKm5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiB0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShl bmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2UKLQkJcmV0dXJuIHRnbF9nZXRf ZGtsX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCiBz dGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAogCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFz ZS5kZXYpOwogCWludCBuX2VudHJpZXMsIGxldmVsLCBkZWZhdWx0X2VudHJ5OwotCWVudW0gcGh5 IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKIAotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7Ci0JCWlmIChpbnRlbF9waHlfaXNfY29tYm8o ZGV2X3ByaXYsIHBoeSkpCi0JCQl0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIs IGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwotCQllbHNlCi0JCQl0Z2xfZ2V0X2RrbF9idWZfdHJh bnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKLQkJZGVmYXVsdF9lbnRy eSA9IG5fZW50cmllcyAtIDE7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID09IDEx KSB7Ci0JCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkpCi0JCQlpY2xfZ2V0 X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwot CQllbHNlCi0JCQlpY2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUs ICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKLQl9IGVsc2Ug aWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Ci0JCWNubF9nZXRfYnVmX3RyYW5zX2hkbWko ZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwot CX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKLQkJYnh0X2dldF9idWZfdHJhbnNf aGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQkJZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAt IDE7Ci0JfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewotCQlpbnRlbF9kZGlfZ2V0 X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0g ODsKLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKLQkJaW50ZWxfZGRpX2dl dF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQkJZGVmYXVsdF9lbnRyeSA9 IDc7Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewotCQlpbnRlbF9kZGlfZ2V0 X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0g NjsKLQl9IGVsc2UgewotCQlkcm1fV0FSTigmZGV2X3ByaXYtPmRybSwgMSwgImRkaSB0cmFuc2xh dGlvbiB0YWJsZSBtaXNzaW5nXG4iKTsKKwluX2VudHJpZXMgPSBpbnRlbF9kZGlfaGRtaV9udW1f ZW50cmllcyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAmZGVmYXVsdF9lbnRyeSk7CisJaWYgKG5fZW50 cmllcyA9PSAwKQogCQlyZXR1cm4gMDsKLQl9Ci0KLQlpZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2 X3ByaXYtPmRybSwgbl9lbnRyaWVzID09IDApKQotCQlyZXR1cm4gMDsKLQogCWxldmVsID0gaW50 ZWxfYmlvc19oZG1pX2xldmVsX3NoaWZ0KGVuY29kZXIpOwogCWlmIChsZXZlbCA8IDApCiAJCWxl dmVsID0gZGVmYXVsdF9lbnRyeTsKQEAgLTE2MzYsNiArMjU3LDkgQEAgdm9pZCBoc3dfZmRpX2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJ dTMyIHRlbXAsIGksIHJ4X2N0bF92YWwsIGRkaV9wbGxfc2VsOworCWludCBuX2VudHJpZXM7CisK KwlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoZGV2X3ByaXYsICZuX2VudHJpZXMpOwogCiAJ aW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKIApAQCAt MTY2OCw3ICsyOTIsNyBAQCB2b2lkIGhzd19mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKIAogCS8qIFN0YXJ0IHRoZSB0cmFpbmluZyBpdGVyYXRpbmcgdGhyb3Vn aCBhdmFpbGFibGUgdm9sdGFnZXMgYW5kIGVtcGhhc2lzLAogCSAqIHRlc3RpbmcgZWFjaCB2YWx1 ZSB0d2ljZS4gKi8KLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0 aW9uc19mZGkpICogMjsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IG5fZW50cmllcyAqIDI7IGkr KykgewogCQkvKiBDb25maWd1cmUgRFBfVFBfQ1RMIHdpdGggYXV0by10cmFpbmluZyAqLwogCQlp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFBfVFBfQ1RMKFBPUlRfRSksCiAJCQkgICAgICAgRFBf VFBfQ1RMX0ZESV9BVVRPVFJBSU4gfApAQCAtMTcxNyw3ICszNDEsNyBAQCB2b2lkIGhzd19mZGlf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJICogTGVhdmUgdGhp bmdzIGVuYWJsZWQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gdHJhaW4gRkRJLgogCQkgKiBSZXN1bHRz IGluIGxlc3MgZmlyZXdvcmtzIGZyb20gdGhlIHN0YXRlIGNoZWNrZXIuCiAJCSAqLwotCQlpZiAo aSA9PSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2ZkaSkgKiAyIC0gMSkgeworCQlp ZiAoaSA9PSBuX2VudHJpZXMgKiAyIC0gMSkgewogCQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwg IkZESSBsaW5rIHRyYWluaW5nIGZhaWxlZCFcbiIpOwogCQkJYnJlYWs7CiAJCX0KQEAgLTI0Nzks MTMgKzExMDMsNyBAQCBzdGF0aWMgdm9pZCBieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7 CiAJaW50IG5fZW50cmllczsKIAotCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUs IElOVEVMX09VVFBVVF9IRE1JKSkKLQkJZGRpX3RyYW5zbGF0aW9ucyA9IGJ4dF9nZXRfYnVmX3Ry YW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJZGRpX3RyYW5zbGF0aW9ucyA9 IGJ4dF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQllbHNlCi0JCWRk aV90cmFuc2xhdGlvbnMgPSBieHRfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVz KTsKLQorCWRkaV90cmFuc2xhdGlvbnMgPSBieHRfZ2V0X2J1Zl90cmFucyhlbmNvZGVyLCBjcnRj X3N0YXRlLCAmbl9lbnRyaWVzKTsKIAlpZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2X3ByaXYtPmRy bSwgIWRkaV90cmFuc2xhdGlvbnMpKQogCQlyZXR1cm47CiAJaWYgKGRybV9XQVJOX09OX09OQ0Uo JmRldl9wcml2LT5kcm0sIGxldmVsID49IG5fZW50cmllcykpCkBAIC0yNTIyLDE1ICsxMTQwLDkg QEAgc3RhdGljIHU4IGludGVsX2RkaV9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAogCQllbHNlCiAJCQlpY2xfZ2V0X21nX2J1Zl90cmFucyhlbmNvZGVyLCBjcnRjX3N0 YXRlLCAmbl9lbnRyaWVzKTsKIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7 Ci0JCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFAp KQotCQkJY25sX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwotCQllbHNl Ci0JCQljbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJY25sX2dl dF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CiAJfSBlbHNlIGlm IChJU19HRU45X0xQKGRldl9wcml2KSkgewotCQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJCWJ4dF9nZXRfYnVmX3RyYW5zX2VkcChlbmNv ZGVyLCAmbl9lbnRyaWVzKTsKLQkJZWxzZQotCQkJYnh0X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rl ciwgJm5fZW50cmllcyk7CisJCWJ4dF9nZXRfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUs ICZuX2VudHJpZXMpOwogCX0gZWxzZSB7CiAJCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNf c3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQogCQkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZWRw KGVuY29kZXIsICZuX2VudHJpZXMpOwpAQCAtMjU2OCwxMiArMTE4MCw3IEBAIHN0YXRpYyB2b2lk IGNubF9kZGlfdnN3aW5nX3Byb2dyYW0oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJ aW50IG5fZW50cmllcywgbG47CiAJdTMyIHZhbDsKIAotCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJZGRpX3RyYW5zbGF0aW9ucyA9IGNu bF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JZWxzZSBpZiAoaW50 ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJZGRpX3Ry YW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsK LQllbHNlCi0JCWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVy LCAmbl9lbnRyaWVzKTsKKwlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dldF9idWZfdHJhbnMoZW5j b2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CiAKIAlpZiAoZHJtX1dBUk5fT05fT05DRSgm ZGV2X3ByaXYtPmRybSwgIWRkaV90cmFuc2xhdGlvbnMpKQogCQlyZXR1cm47CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2FmYWExYmEzOTFlCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5z LmMKQEAgLTAsMCArMSwxMzU4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisv KgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9kZGkuaCIKKyNpbmNsdWRlICJpbnRlbF9k ZGlfYnVmX3RyYW5zLmgiCisjaW5jbHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5oIgorCisvKiBI RE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGluZyBidXQgdGhlIGxhc3QgMiBpdGVtcy4gU28g d2Ugc2hhcmUKKyAqIHRoZW0gZm9yIGJvdGggRFAgYW5kIEZESSB0cmFuc3BvcnRzLCBhbGxvd2lu ZyB0aG9zZSBwb3J0cyB0bworICogYXV0b21hdGljYWxseSBhZGFwdCB0byBIRE1JIGNvbm5lY3Rp b25zIGFzIHdlbGwKKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGhzd19k ZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJeyAweDAwRkZGRkZGLCAweDAwMDYwMDBFLCAweDAg fSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAorCXsgMHgwMEMzMEZGRiwgMHgw MDA0MDAwNiwgMHgwIH0sCisJeyAweDgwQUFBRkZGLCAweDAwMEIwMDAwLCAweDAgfSwKKwl7IDB4 MDBGRkZGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwg MHgwIH0sCisJeyAweDgwQzMwRkZGLCAweDAwMEIwMDAwLCAweDAgfSwKKwl7IDB4MDBGRkZGRkYs IDB4MDAwNDAwMDYsIDB4MCB9LAorCXsgMHg4MEQ3NUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlv bnNfZmRpW10gPSB7CisJeyAweDAwRkZGRkZGLCAweDAwMDcwMDBFLCAweDAgfSwKKwl7IDB4MDBE NzVGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAorCXsgMHgwMEMzMEZGRiwgMHgwMDA2MDAwNiwgMHgw IH0sCisJeyAweDAwQUFBRkZGLCAweDAwMUUwMDAwLCAweDAgfSwKKwl7IDB4MDBGRkZGRkYsIDB4 MDAwRjAwMEEsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDE2MDAwNCwgMHgwIH0sCisJeyAw eDAwQzMwRkZGLCAweDAwMUUwMDAwLCAweDAgfSwKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMDYs IDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDFFMDAwMCwgMHgwIH0sCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0g eworCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGQJZGIJKi8KKwl7IDB4MDBGRkZGRkYsIDB4MDAw NjAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkqLworCXsgMHgwMEU3OUZGRiwgMHgwMDBFMDAw QywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCisJeyAweDAwRDc1RkZGLCAweDAwMDUwMDBBLCAw eDAgfSwvKiAyOgk0MDAJNjAwCTMuNQkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwQSwgMHgw IH0sLyogMzoJNjAwCTYwMAkwCSovCisJeyAweDAwRTc5RkZGLCAweDAwMUQwMDA3LCAweDAgfSwv KiA0Ogk2MDAJNzUwCTIJKi8KKwl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDQsIDB4MCB9LC8qIDU6 CTYwMAk5MDAJMy41CSovCisJeyAweDAwRkZGRkZGLCAweDAwMDQwMDA2LCAweDAgfSwvKiA2Ogk4 MDAJODAwCTAJKi8KKwl7IDB4ODBFNzlGRkYsIDB4MDAwMzAwMDIsIDB4MCB9LC8qIDc6CTgwMAkx MDAwCTIJKi8KKwl7IDB4MDBGRkZGRkYsIDB4MDAxNDAwMDUsIDB4MCB9LC8qIDg6CTg1MAk4NTAJ MAkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sLyogOToJOTAwCTkwMAkwCSov CisJeyAweDAwRkZGRkZGLCAweDAwMUMwMDAzLCAweDAgfSwvKiAxMDoJOTUwCTk1MAkwCSovCisJ eyAweDgwRkZGRkZGLCAweDAwMDMwMDAyLCAweDAgfSwvKiAxMToJMTAwMAkxMDAwCTAJKi8KK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9u c19lZHBbXSA9IHsKKwl7IDB4MDBGRkZGRkYsIDB4MDAwMDAwMTIsIDB4MCB9LAorCXsgMHgwMEVC QUZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCisJeyAweDAwQzcxRkZGLCAweDAwMDYwMDBGLCAweDAg fSwKKwl7IDB4MDBBQUFGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgw MDAyMDAxMSwgMHgwIH0sCisJeyAweDAwREI2RkZGLCAweDAwMDUwMDBGLCAweDAgfSwKKwl7IDB4 MDBCRUVGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwRiwg MHgwIH0sCisJeyAweDAwREI2RkZGLCAweDAwMEEwMDBDLCAweDAgfSwKK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewor CXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0sCisJeyAweDAwRDc1RkZGLCAweDAwMEUw MDBBLCAweDAgfSwKKwl7IDB4MDBCRUZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9LAorCXsgMHg4MEIy Q0ZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMEUwMDBBLCAweDAg fSwKKwl7IDB4MDBEQjZGRkYsIDB4MDAxNjAwMDUsIDB4MCB9LAorCXsgMHg4MEM3MUZGRiwgMHgw MDFBMDAwMiwgMHgwIH0sCisJeyAweDAwRjdERkZGLCAweDAwMTgwMDA0LCAweDAgfSwKKwl7IDB4 ODBENzVGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaVtdID0geworCXsgMHgwMEZGRkZG RiwgMHgwMDAxMDAwRSwgMHgwIH0sCisJeyAweDAwRDc1RkZGLCAweDAwMDQwMDBBLCAweDAgfSwK Kwl7IDB4MDBDMzBGRkYsIDB4MDAwNzAwMDYsIDB4MCB9LAorCXsgMHgwMEFBQUZGRiwgMHgwMDBD MDAwMCwgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDQwMDBBLCAweDAgfSwKKwl7IDB4MDBE NzVGRkYsIDB4MDAwOTAwMDQsIDB4MCB9LAorCXsgMHgwMEMzMEZGRiwgMHgwMDBDMDAwMCwgMHgw IH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDcwMDA2LCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4 MDAwQzAwMDAsIDB4MCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5z IGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKKwkJCQkJLyogSWR4CU5UIG1WIGQJVCBt ViBkZglkYgkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0sLyogMDoJNDAwCTQw MAkwCSovCisJeyAweDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAgfSwvKiAxOgk0MDAJNjAwCTMu NQkqLworCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogMjoJNDAwCTgwMAk2CSov CisJeyAweDAwRkZGRkZGLCAweDAwMDkwMDBELCAweDAgfSwvKiAzOgk0NTAJNDUwCTAJKi8KKwl7 IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8qIDQ6CTYwMAk2MDAJMAkqLworCXsgMHgw MEQ3RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNToJNjAwCTgwMAkyLjUJKi8KKwl7IDB4ODBD QjJGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDY6CTYwMAkxMDAwCTQuNQkqLworCXsgMHgwMEZG RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNzoJODAwCTgwMAkwCSovCisJeyAweDgwRTc5RkZG LCAweDAwMUIwMDAyLCAweDAgfSwvKiA4Ogk4MDAJMTAwMAkyCSovCisJeyAweDgwRkZGRkZGLCAw eDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEwMDAJMAkqLworfTsKKworLyogU2t5bGFrZSBI IGFuZCBTICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFu c2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQTAsIDB4MCB9LAorCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMDg4 LCAweDAgfSwKKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsgMHgwMDAwMjAx NiwgMHgwMDAwMDA5QiwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwK Kwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsgMHgwMDAwMjAxNiwgMHgwMDAw MDBERiwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKK307CisKKy8q IFNreWxha2UgVSAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF91X2Rk aV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTIsIDB4MCB9 LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA3MDExLCAweDAw MDAwMENELCAweDEgfSwKKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsgMHgw MDAwMjAxQiwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAw eDEgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsgMHgwMDAwMjAxNiwg MHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKK307 CisKKy8qIFNreWxha2UgWSAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNr bF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTIs IDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA3MDEx LCAweDAwMDAwMENELCAweDMgfSwKKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAor CXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAw MEMwLCAweDMgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAw MDAxOCwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMg fSwKK307CisKKy8qIEthYnlsYWtlIEggYW5kIFMgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyBrYmxfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0geworCXsgMHgwMDAwMjAxNiwg MHgwMDAwMDBBMCwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAwMDlCLCAweDAgfSwKKwl7 IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBD MCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDlCLCAweDAgfSwKKwl7IDB4MDAwMDUw MTIsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgxIH0s CisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDk3LCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAw MDAwQzAsIDB4MSB9LAorfTsKKworLyogS2FieWxha2UgVSAqLworc3RhdGljIGNvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zIGtibF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAw MDIwMUIsIDB4MDAwMDAwQTEsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgw IH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKKwl7IDB4ODAwMDkwMTAsIDB4 MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAw eDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAs IDB4MyB9LAorCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA0RiwgMHgwIH0sCisJeyAweDgwMDA1MDEy LCAweDAwMDAwMEMwLCAweDMgfSwKK307CisKKy8qIEthYnlsYWtlIFkgKi8KK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJ eyAweDAwMDAxMDE3LCAweDAwMDAwMEExLCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAw ODgsIDB4MCB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwgMHgzIH0sCisJeyAweDgwMDA4 MDBGLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4MDAwMDEwMTcsIDB4MDAwMDAwOUQsIDB4MCB9 LAorCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAweDgwMDA3MDExLCAweDAw MDAwMEMwLCAweDMgfSwKKwl7IDB4MDAwMDEwMTcsIDB4MDAwMDAwNEMsIDB4MCB9LAorCXsgMHg4 MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCit9OworCisvKgorICogU2t5bGFrZS9LYWJ5bGFr ZSBIIGFuZCBTCisgKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwor ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlv bnNfZWRwW10gPSB7CisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE4LCAweDAgfSwKKwl7IDB4MDAw MDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBMiwgMHgw IH0sCisJeyAweDAwMDA5MDEwLCAweDAwMDAwMDlDLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4 MDAwMDAwQTksIDB4MCB9LAorCXsgMHgwMDAwNjAxMywgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAw eDAwMDA3MDExLCAweDAwMDAwMEE2LCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUIs IDB4MCB9LAorCXsgMHgwMDAwNzAxMywgMHgwMDAwMDA5RiwgMHgwIH0sCisJeyAweDAwMDAwMDE4 LCAweDAwMDAwMERGLCAweDAgfSwKK307CisKKy8qCisgKiBTa3lsYWtlL0thYnlsYWtlIFUKKyAq IGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCisgKi8KK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0g eworCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwgMHgwIH0sCisJeyAweDAwMDA0MDEzLCAweDAw MDAwMEE5LCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTIsIDB4MCB9LAorCXsgMHgw MDAwOTAxMCwgMHgwMDAwMDA5QywgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE5LCAw eDAgfSwKKwl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9LAorCXsgMHgwMDAwNzAxMSwg MHgwMDAwMDBBNiwgMHgwIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMEFCLCAweDAgfSwKKwl7 IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBE RiwgMHgwIH0sCit9OworCisvKgorICogU2t5bGFrZS9LYWJ5bGFrZSBZCisgKiBlRFAgMS40IGxv dyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycworICovCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKKwl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAorCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBBQiwgMHgw IH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMEE0LCAweDAgfSwKKwl7IDB4MDAwMDkwMTAsIDB4 MDAwMDAwREYsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQSwgMHgwIH0sCisJeyAw eDAwMDA2MDEzLCAweDAwMDAwMEE0LCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwOUQs IDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMCwgMHgwIH0sCisJeyAweDAwMDA2MDEy LCAweDAwMDAwMERGLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAor fTsKKworLyogU2t5bGFrZS9LYWJ5bGFrZSBVLCBIIGFuZCBTICovCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0geworCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAwMDlELCAw eDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwg MHgwMDAwMDBBMSwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMDk4LCAweDAgfSwKKwl7 IDB4MDAwMDQwMTMsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAwNjAxMiwgMHgwMDAwMDBD RCwgMHgxIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwKKwl7IDB4ODAwMDMw MTUsIDB4MDAwMDAwQ0QsIDB4MSB9LAkvKiBEZWZhdWx0ICovCisJeyAweDgwMDAzMDE1LCAweDAw MDAwMEMwLCAweDEgfSwKKwl7IDB4ODAwMDAwMTgsIDB4MDAwMDAwQzAsIDB4MSB9LAorfTsKKwor LyogU2t5bGFrZS9LYWJ5bGFrZSBZICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJeyAweDAwMDAwMDE4LCAweDAw MDAwMEExLCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwREYsIDB4MCB9LAorCXsgMHg4 MDAwNzAxMSwgMHgwMDAwMDBDQiwgMHgzIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE0LCAw eDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQsIDB4MCB9LAorCXsgMHgwMDAwNDAxMywg MHgwMDAwMDA4MCwgMHgwIH0sCisJeyAweDgwMDA2MDEzLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7 IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAorCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBD MCwgMHgzIH0sCS8qIERlZmF1bHQgKi8KKwl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQzAsIDB4MyB9 LAorCXsgMHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgzIH0sCit9OworCisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsK KwkJCQkJLyogSWR4CU5UIG1WIGRpZmYJZGIgICovCisJeyA1MiwgIDB4OUEsIDAsIDEyOCwgfSwJ LyogMDoJNDAwCQkwICAgKi8KKwl7IDc4LCAgMHg5QSwgMCwgODUsICB9LAkvKiAxOgk0MDAJCTMu NSAqLworCXsgMTA0LCAweDlBLCAwLCA2NCwgIH0sCS8qIDI6CTQwMAkJNiAgICovCisJeyAxNTQs IDB4OUEsIDAsIDQzLCAgfSwJLyogMzoJNDAwCQk5LjUgKi8KKwl7IDc3LCAgMHg5QSwgMCwgMTI4 LCB9LAkvKiA0Ogk2MDAJCTAgICAqLworCXsgMTE2LCAweDlBLCAwLCA4NSwgIH0sCS8qIDU6CTYw MAkJMy41ICovCisJeyAxNTQsIDB4OUEsIDAsIDY0LCAgfSwJLyogNjoJNjAwCQk2ICAgKi8KKwl7 IDEwMiwgMHg5QSwgMCwgMTI4LCB9LAkvKiA3Ogk4MDAJCTAgICAqLworCXsgMTU0LCAweDlBLCAw LCA4NSwgIH0sCS8qIDg6CTgwMAkJMy41ICovCisJeyAxNTQsIDB4OUEsIDEsIDEyOCwgfSwJLyog OToJMTIwMAkJMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3Ry YW5zIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0geworCQkJCQkvKiBJZHgJTlQgbVYgZGlm ZglkYiAgKi8KKwl7IDI2LCAwLCAwLCAxMjgsIH0sCS8qIDA6CTIwMAkJMCAgICovCisJeyAzOCwg MCwgMCwgMTEyLCB9LAkvKiAxOgkyMDAJCTEuNSAqLworCXsgNDgsIDAsIDAsIDk2LCAgfSwJLyog MjoJMjAwCQk0ICAgKi8KKwl7IDU0LCAwLCAwLCA2OSwgIH0sCS8qIDM6CTIwMAkJNiAgICovCisJ eyAzMiwgMCwgMCwgMTI4LCB9LAkvKiA0OgkyNTAJCTAgICAqLworCXsgNDgsIDAsIDAsIDEwNCwg fSwJLyogNToJMjUwCQkxLjUgKi8KKwl7IDU0LCAwLCAwLCA4NSwgIH0sCS8qIDY6CTI1MAkJNCAg ICovCisJeyA0MywgMCwgMCwgMTI4LCB9LAkvKiA3OgkzMDAJCTAgICAqLworCXsgNTQsIDAsIDAs IDEwMSwgfSwJLyogODoJMzAwCQkxLjUgKi8KKwl7IDQ4LCAwLCAwLCAxMjgsIH0sCS8qIDk6CTMw MAkJMCAgICovCit9OworCisvKiBCU3BlYyBoYXMgMiByZWNvbW1lbmRlZCB2YWx1ZXMgLSBlbnRy aWVzIDAgYW5kIDguCisgKiBVc2luZyB0aGUgZW50cnkgd2l0aCBoaWdoZXIgdnN3aW5nLgorICov CitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIGJ4dF9kZGlfdHJhbnNsYXRp b25zX2hkbWlbXSA9IHsKKwkJCQkJLyogSWR4CU5UIG1WIGRpZmYJZGIgICovCisJeyA1MiwgIDB4 OUEsIDAsIDEyOCwgfSwJLyogMDoJNDAwCQkwICAgKi8KKwl7IDUyLCAgMHg5QSwgMCwgODUsICB9 LAkvKiAxOgk0MDAJCTMuNSAqLworCXsgNTIsICAweDlBLCAwLCA2NCwgIH0sCS8qIDI6CTQwMAkJ NiAgICovCisJeyA0MiwgIDB4OUEsIDAsIDQzLCAgfSwJLyogMzoJNDAwCQk5LjUgKi8KKwl7IDc3 LCAgMHg5QSwgMCwgMTI4LCB9LAkvKiA0Ogk2MDAJCTAgICAqLworCXsgNzcsICAweDlBLCAwLCA4 NSwgIH0sCS8qIDU6CTYwMAkJMy41ICovCisJeyA3NywgIDB4OUEsIDAsIDY0LCAgfSwJLyogNjoJ NjAwCQk2ICAgKi8KKwl7IDEwMiwgMHg5QSwgMCwgMTI4LCB9LAkvKiA3Ogk4MDAJCTAgICAqLwor CXsgMTAyLCAweDlBLCAwLCA4NSwgIH0sCS8qIDg6CTgwMAkJMy41ICovCisJeyAxNTQsIDB4OUEs IDEsIDEyOCwgfSwJLyogOToJMTIwMAkJMCAgICovCit9OworCisvKiBWb2x0YWdlIFN3aW5nIFBy b2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgRFAgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVZbXSA9IHsKKwkJ CQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NUQsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7IDB4QSwgMHg2QSwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLworCXsgMHhCLCAweDdBLCAw eDMyLCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCisJeyAweDYsIDB4 N0MsIDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KKwl7IDB4 QSwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwor CXsgMHhCLCAweDdBLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAg ICovCisJeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAgICAg NS4xICAgKi8KKwl7IDB4QiwgMHg3RCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MjUg ICAgICAwLjkgICAqLworCXsgMHg2LCAweDdDLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDYwMCAg IDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0IsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog OTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1p bmcgZm9yIFZjY0lPIDAuODVWIGZvciBIRE1JICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVZbXSA9IHsKKwkJCQkJ CS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NjAsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg3MywgMHgzNiwgMHgw MCwgMHgwOSB9LAkvKiA0NTAgICA2NTAgICAgICAzLjIgICAqLworCXsgMHg2LCAweDdGLCAweDMx LCAweDAwLCAweDBFIH0sCS8qIDQ1MCAgIDg1MCAgICAgIDUuNSAgICovCisJeyAweEIsIDB4NzMs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNjUwICAgICAgMC4wICAgKi8KKwl7IDB4Niwg MHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAgICAgICAyLjMgICAqLworCXsg MHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDg1MCAgIDg1MCAgICAgIDAuMCAgICov CisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4w ICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuODVW IGZvciBlRFAgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2Rk aV90cmFuc2xhdGlvbnNfZWRwXzBfODVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBk YiAgICAqLworCXsgMHhBLCAweDY2LCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDM4NCAgIDUwMCAg ICAgIDIuMyAgICovCisJeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUzICAg MjAwICAgICAgMi4zICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAx OTIgICAyNTAgICAgICAyLjMgICAqLworCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0s CS8qIDIzMCAgIDMwMCAgICAgIDIuMyAgICovCisJeyAweDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4 MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KKwl7IDB4QSwgMHg2NiwgMHgzQywgMHgw MCwgMHgwMyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLworCXsgMHhCLCAweDcwLCAweDND LCAweDAwLCAweDAzIH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCisJeyAweEMsIDB4NzUs IDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KKwl7IDB4Miwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLworfTsK KworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC45NVYgZm9yIERQICov CitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRp b25zX2RwXzBfOTVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsg MHhBLCAweDVELCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICov CisJeyAweEEsIDB4NkEsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMzUwICAgNTAwICAgICAgMy4x ICAgKi8KKwl7IDB4QiwgMHg3QSwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3MDAgICAg ICA2LjAgICAqLworCXsgMHg2LCAweDdDLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1MCAgIDkw MCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NjksIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAw ICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg3QSwgMHgzNiwgMHgwMCwgMHgwOSB9LAkv KiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdDLCAweDMwLCAweDAwLCAweDBG IH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEIsIDB4N0QsIDB4M0MsIDB4MDAs IDB4MDMgfSwJLyogNjUwICAgNzI1ICAgICAgMC45ICAgKi8KKwl7IDB4NiwgMHg3QywgMHgzNCwg MHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdCLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCisvKiBW b2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgSERNSSAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19o ZG1pXzBfOTVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhB LCAweDVDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCisJ eyAweEIsIDB4NjksIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNDAwICAgNjAwICAgICAgMy41ICAg Ki8KKwl7IDB4NSwgMHg3NiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0MDAgICA4MDAgICAgICA2 LjAgICAqLworCXsgMHhBLCAweDVFLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAg ICAgIDAuMCAgICovCisJeyAweEIsIDB4NjksIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjAwICAg NjAwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg3OSwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2 MDAgICA4NTAgICAgICAzLjAgICAqLworCXsgMHg2LCAweDdELCAweDMyLCAweDAwLCAweDBEIH0s CS8qIDYwMCAgIDEwMDAgICAgIDQuNCAgICovCisJeyAweDUsIDB4NzYsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogODAwICAgODAwICAgICAgMC4wICAgKi8KKwl7IDB4NiwgMHg3RCwgMHgzOSwgMHgw MCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkgICAqLworCXsgMHg2LCAweDdGLCAweDM5 LCAweDAwLCAweDA2IH0sCS8qIDg1MCAgIDEwNTAgICAgIDEuOCAgICovCisJeyAweDYsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAgMC4wICAgKi8KK307CisKKy8q IFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuOTVWIGZvciBlRFAgKi8KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNf ZWRwXzBfOTVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhB LCAweDYxLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDM4NCAgIDUwMCAgICAgIDIuMyAgICovCisJ eyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUzICAgMjAwICAgICAgMi4zICAg Ki8KKwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxOTIgICAyNTAgICAgICAy LjMgICAqLworCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDIzMCAgIDMwMCAg ICAgIDIuMyAgICovCisJeyAweDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjY5ICAg MzUwICAgICAgMi4zICAgKi8KKwl7IDB4QSwgMHg2MSwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0 NDYgICA1MDAgICAgICAxLjAgICAqLworCXsgMHhCLCAweDY4LCAweDM5LCAweDAwLCAweDA2IH0s CS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCisJeyAweEMsIDB4NkUsIDB4MzksIDB4MDAsIDB4 MDYgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KKwl7IDB4NCwgMHg3RiwgMHgzQSwgMHgw MCwgMHgwNSB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLworCXsgMHgyLCAweDdGLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCit9OworCisvKiBWb2x0 YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1ViBmb3IgRFAgKi8KK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8w NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NTgs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KKwl7IDB4Qiwg MHg2NCwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLworCXsg MHg1LCAweDcwLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQwMCAgIDgwMCAgICAgIDYuMCAgICov CisJeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogNDAwICAgMTA1MCAgICAgOC40 ICAgKi8KKwl7IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAgICAg ICAwLjAgICAqLworCXsgMHg1LCAweDczLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDg1 MCAgICAgIDMuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTUw ICAgMTA1MCAgICAgNS42ICAgKi8KKwl7IDB4NSwgMHg3NiwgMHgzRSwgMHgwMCwgMHgwMSB9LAkv KiA4NTAgICA5MDAgICAgICAwLjUgICAqLworCXsgMHg2LCAweDdGLCAweDM2LCAweDAwLCAweDA5 IH0sCS8qIDc1MCAgIDEwNTAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dp bmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEuMDVWIGZvciBIRE1JICovCitzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVZb XSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NTgsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg2 NCwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLworCXsgMHg1 LCAweDcwLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQwMCAgIDgwMCAgICAgIDYuMCAgICovCisJ eyAweEEsIDB4NUIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAg Ki8KKwl7IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAgICAgICAw LjAgICAqLworCXsgMHg1LCAweDczLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDg1MCAg ICAgIDMuMCAgICovCisJeyAweDYsIDB4N0MsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogNjAwICAg MTAwMCAgICAgNC40ICAgKi8KKwl7IDB4NSwgMHg3MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4 MDAgICA4MDAgICAgICAwLjAgICAqLworCXsgMHg2LCAweDdDLCAweDM5LCAweDAwLCAweDA2IH0s CS8qIDgwMCAgIDEwMDAgICAgIDEuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MzksIDB4MDAsIDB4 MDYgfSwJLyogODUwICAgMTA1MCAgICAgMS44ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLworfTsKKworLyogVm9sdGFnZSBT d2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIGVEUCAqLworc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVZb XSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NUUsIDB4 M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KKwl7IDB4MCwgMHg3 RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAgICAgICAyLjMgICAqLworCXsgMHg4 LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCisJ eyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAgMzAwICAgICAgMi4zICAg Ki8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNjkgICAzNTAgICAgICAy LjMgICAqLworCXsgMHhBLCAweDVFLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAg ICAgIDEuMCAgICovCisJeyAweEIsIDB4NjQsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNDYwICAg NjAwICAgICAgMi4zICAgKi8KKwl7IDB4RSwgMHg2QSwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA1 MzcgICA3MDAgICAgICAyLjMgICAqLworCXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCit9OworCisvKiBpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnMgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJbXSA9IHsKKwkJCQkJCS8qIE5UIG1W IFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog MzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9 LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLworCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAw eDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MkIsIDB4 MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KKwl7IDB4QSwgMHg0QywgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLworCXsgMHhDLCAweDcz LCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYs IDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7 IDB4QywgMHg2QywgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAq LworCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMu NSAgICovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAg ICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg aWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyW10gPSB7CisJCQkJCQkvKiBO VCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHgwLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDIwMCAgIDIwMCAgICAgIDAuMCAgICovCisJeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4 MDcgfSwJLyogMjAwICAgMjUwICAgICAgMS45ICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgzMywgMHgw MCwgMHgwQyB9LAkvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLworCXsgMHg5LCAweDdGLCAweDMx LCAweDAwLCAweDBFIH0sCS8qIDIwMCAgIDM1MCAgICAgIDQuOSAgICovCisJeyAweDgsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgMjUwICAgICAgMC4wICAgKi8KKwl7IDB4MSwg MHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNTAgICAzMDAgICAgICAxLjYgICAqLworCXsg MHg5LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDI1MCAgIDM1MCAgICAgIDIuOSAgICov CisJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgMzAwICAgICAgMC4w ICAgKi8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzMDAgICAzNTAgICAg ICAxLjMgICAqLworCXsgMHg5LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1 MCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyM1tdID0geworCQkJCQkJ LyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLworCXsgMHhBLCAweDRGLCAweDM3LCAweDAw LCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCisJeyAweEMsIDB4NzEsIDB4MkYs IDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3Riwg MHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAw eDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAw eEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8K Kwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEg ICAqLworCXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAg IDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAw ICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAg ICA5MDAgICAgICAwLjAgICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0geworCQkJCQkJ LyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg2MCwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDczLCAweDM2LCAweDAw LCAweDA5IH0sCS8qIDQ1MCAgIDY1MCAgICAgIDMuMiAgICovCisJeyAweDYsIDB4N0YsIDB4MzEs IDB4MDAsIDB4MEUgfSwJLyogNDUwICAgODUwICAgICAgNS41ICAgKi8KKwl7IDB4QiwgMHg3Mywg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA2NTAgICAgICAwLjAgICBBTFMgKi8KKwl7IDB4 NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAgICAgICAyLjMgICAqLwor CXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDg1MCAgIDg1MCAgICAgIDAuMCAg ICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAg My4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgZWhs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFu cyBtViBkYiAgICAqLworCXsgMHhBLCAweDMzLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAg IDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NDcsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyog MzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg2NCwgMHgzNCwgMHgwMCwgMHgwQiB9 LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAweDdGLCAweDMwLCAweDAwLCAw eDBGIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NDYsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4QywgMHg2NCwgMHgz OCwgMHgwMCwgMHgwNyB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdG LCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEMs IDB4NjEsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7 IDB4NiwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAq LworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAu MCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGpzbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyW10gPSB7CisJCQkJCQkvKiBOVCBtViBU cmFucyBtViBkYiAgICAqLworCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAg ICAvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLworCXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAw eDA3IH0sICAgICAgICAvKiAyMDAgICAyNTAgICAgICAxLjkgICAqLworCXsgMHgxLCAweDdGLCAw eDMzLCAweDAwLCAweDBDIH0sICAgICAgICAvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLworCXsg MHhBLCAweDM1LCAweDM2LCAweDAwLCAweDA5IH0sICAgICAgICAvKiAyMDAgICAzNTAgICAgICA0 LjkgICAqLworCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAg ICAyNTAgICAgICAwLjAgICAqLworCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sICAg ICAgICAvKiAyNTAgICAzMDAgICAgICAxLjYgICAqLworCXsgMHhBLCAweDM1LCAweDM1LCAweDAw LCAweDBBIH0sICAgICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLworCXsgMHgxLCAweDdG LCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAzMDAgICAzMDAgICAgICAwLjAgICAqLwor CXsgMHhBLCAweDM1LCAweDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAzMDAgICAzNTAgICAg ICAxLjMgICAqLworCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAz NTAgICAzNTAgICAgICAwLjAgICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJbXSA9IHsK KwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweDgsIDB4N0YsIDB4M0YsIDB4 MDAsIDB4MDAgfSwgICAgICAgIC8qIDIwMCAgIDIwMCAgICAgIDAuMCAgICovCisJeyAweDgsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICov CisJeyAweDEsIDB4N0YsIDB4M0QsIDB4MDAsIDB4MDIgfSwgICAgICAgIC8qIDIwMCAgIDMwMCAg ICAgIDMuNSAgICovCisJeyAweEEsIDB4MzUsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8q IDIwMCAgIDM1MCAgICAgIDQuOSAgICovCisJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAg fSwgICAgICAgIC8qIDI1MCAgIDI1MCAgICAgIDAuMCAgICovCisJeyAweDEsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDMwMCAgICAgIDEuNiAgICovCisJeyAweEEs IDB4MzUsIDB4M0EsIDB4MDAsIDB4MDUgfSwgICAgICAgIC8qIDI1MCAgIDM1MCAgICAgIDIuOSAg ICovCisJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDMwMCAgIDMw MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4MzUsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAg IC8qIDMwMCAgIDM1MCAgICAgIDEuMyAgICovCisJeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4 MDAgfSwgICAgICAgIC8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGRnMV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9yYnJfaGJyW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsg MHhBLCAweDMyLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICov CisJeyAweEEsIDB4NDgsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogMzUwICAgNTAwICAgICAgMy4x ICAgKi8KKwl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAg ICA2LjAgICAqLworCXsgMHg2LCAweDdGLCAweDJDLCAweDAwLCAweDEzIH0sCS8qIDM1MCAgIDkw MCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NDMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAw ICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4QywgMHg2MCwgMHgzNiwgMHgwMCwgMHgwOSB9LAkv KiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdGLCAweDMwLCAweDAwLCAweDBG IH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEMsIDB4NjAsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNywg MHgwMCwgMHgwOCB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGRnMV9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19kcF9oYnIyX2hicjNbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAg ICovCisJeyAweEEsIDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAg MC4wICAgKi8KKwl7IDB4QSwgMHg0OCwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiAzNTAgICA1MDAg ICAgICAzLjEgICAqLworCXsgMHhDLCAweDYzLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAg IDcwMCAgICAgIDYuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyog MzUwICAgOTAwICAgICAgOC4yICAgKi8KKwl7IDB4QSwgMHg0MywgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLworCXsgMHhDLCAweDYwLCAweDM2LCAweDAwLCAw eDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4 MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7IDB4QywgMHg1OCwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLworCXsgMHg2LCAweDdG LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19w aHlfZGRpX3RyYW5zbGF0aW9uc19yYnJfaGJyW10gPSB7CisJCQkJLyogVm9sdGFnZSBzd2luZyAg cHJlLWVtcGhhc2lzICovCisJeyAweDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAgICAgICAg IDAgICAqLworCXsgMHgxRCwgMHgwMCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAxICAgKi8K Kwl7IDB4MjQsIDB4MDAsIDB4MEMgfSwJLyogMCAgICAgICAgICAgICAgMiAgICovCisJeyAweDJC LCAweDAwLCAweDE0IH0sCS8qIDAgICAgICAgICAgICAgIDMgICAqLworCXsgMHgyMSwgMHgwMCwg MHgwMCB9LAkvKiAxICAgICAgICAgICAgICAwICAgKi8KKwl7IDB4MkIsIDB4MDAsIDB4MDggfSwJ LyogMSAgICAgICAgICAgICAgMSAgICovCisJeyAweDMwLCAweDAwLCAweDBGIH0sCS8qIDEgICAg ICAgICAgICAgIDIgICAqLworCXsgMHgzMSwgMHgwMCwgMHgwMyB9LAkvKiAyICAgICAgICAgICAg ICAwICAgKi8KKwl7IDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogMiAgICAgICAgICAgICAgMSAgICov CisJeyAweDNGLCAweDAwLCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyM1tdID0geworCQkJCS8qIFZvbHRhZ2Ugc3dpbmcgIHBy ZS1lbXBoYXNpcyAqLworCXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAgICAgICAw ICAgKi8KKwl7IDB4MUQsIDB4MDAsIDB4MDUgfSwJLyogMCAgICAgICAgICAgICAgMSAgICovCisJ eyAweDI0LCAweDAwLCAweDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLworCXsgMHgyQiwg MHgwMCwgMHgxNCB9LAkvKiAwICAgICAgICAgICAgICAzICAgKi8KKwl7IDB4MjYsIDB4MDAsIDB4 MDAgfSwJLyogMSAgICAgICAgICAgICAgMCAgICovCisJeyAweDJDLCAweDAwLCAweDA3IH0sCS8q IDEgICAgICAgICAgICAgIDEgICAqLworCXsgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAxICAgICAg ICAgICAgICAyICAgKi8KKwl7IDB4MkUsIDB4MDAsIDB4MDAgfSwJLyogMiAgICAgICAgICAgICAg MCAgICovCisJeyAweDM2LCAweDAwLCAweDA5IH0sCS8qIDIgICAgICAgICAgICAgIDEgICAqLwor CXsgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzICAgICAgICAgICAgICAwICAgKi8KK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19waHlfZGRp X3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJCQkJLyogSERNSSBQcmVzZXQJVlMJUHJlLWVtcGgg Ki8KKwl7IDB4MUEsIDB4MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLworCXsgMHgyMCwgMHgw LCAweDAgfSwJLyogMgkJNTAwbVYJMGRCICovCisJeyAweDI5LCAweDAsIDB4MCB9LAkvKiAzCQk2 NTBtVgkwZEIgKi8KKwl7IDB4MzIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1WCTBkQiAqLworCXsg MHgzRiwgMHgwLCAweDAgfSwJLyogNQkJMTAwMG1WCTBkQiAqLworCXsgMHgzQSwgMHgwLCAweDUg fSwJLyogNgkJRnVsbAktMS41IGRCICovCisJeyAweDM5LCAweDAsIDB4NiB9LAkvKiA3CQlGdWxs CS0xLjggZEIgKi8KKwl7IDB4MzgsIDB4MCwgMHg3IH0sCS8qIDgJCUZ1bGwJLTIgZEIgKi8KKwl7 IDB4MzcsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLworCXsgMHgzNiwgMHgwLCAw eDkgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGds X2RrbF9waHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNbXSA9IHsKKwkJ CQkvKiBWUwlwcmUtZW1wCU5vbi10cmFucyBtVglQcmUtZW1waCBkQiAqLworCXsgMHg3LCAweDAs IDB4MDAgfSwJLyogMAkwCTQwMG1WCQkwIGRCICovCisJeyAweDUsIDB4MCwgMHgwNSB9LAkvKiAw CTEJNDAwbVYJCTMuNSBkQiAqLworCXsgMHgyLCAweDAsIDB4MEIgfSwJLyogMAkyCTQwMG1WCQk2 IGRCICovCisJeyAweDAsIDB4MCwgMHgxOCB9LAkvKiAwCTMJNDAwbVYJCTkuNSBkQiAqLworCXsg MHg1LCAweDAsIDB4MDAgfSwJLyogMQkwCTYwMG1WCQkwIGRCICovCisJeyAweDIsIDB4MCwgMHgw OCB9LAkvKiAxCTEJNjAwbVYJCTMuNSBkQiAqLworCXsgMHgwLCAweDAsIDB4MTQgfSwJLyogMQky CTYwMG1WCQk2IGRCICovCisJeyAweDIsIDB4MCwgMHgwMCB9LAkvKiAyCTAJODAwbVYJCTAgZEIg Ki8KKwl7IDB4MCwgMHgwLCAweDBCIH0sCS8qIDIJMQk4MDBtVgkJMy41IGRCICovCisJeyAweDAs IDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkwIGRCIEhETUkgZGVmYXVsdCAqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5 X2RwX2RkaV90cmFuc19oYnIyW10gPSB7CisJCQkJLyogVlMJcHJlLWVtcAlOb24tdHJhbnMgbVYJ UHJlLWVtcGggZEIgKi8KKwl7IDB4NywgMHgwLCAweDAwIH0sCS8qIDAJMAk0MDBtVgkJMCBkQiAq LworCXsgMHg1LCAweDAsIDB4MDUgfSwJLyogMAkxCTQwMG1WCQkzLjUgZEIgKi8KKwl7IDB4Miwg MHgwLCAweDBCIH0sCS8qIDAJMgk0MDBtVgkJNiBkQiAqLworCXsgMHgwLCAweDAsIDB4MTkgfSwJ LyogMAkzCTQwMG1WCQk5LjUgZEIgKi8KKwl7IDB4NSwgMHgwLCAweDAwIH0sCS8qIDEJMAk2MDBt VgkJMCBkQiAqLworCXsgMHgyLCAweDAsIDB4MDggfSwJLyogMQkxCTYwMG1WCQkzLjUgZEIgKi8K Kwl7IDB4MCwgMHgwLCAweDE0IH0sCS8qIDEJMgk2MDBtVgkJNiBkQiAqLworCXsgMHgyLCAweDAs IDB4MDAgfSwJLyogMgkwCTgwMG1WCQkwIGRCICovCisJeyAweDAsIDB4MCwgMHgwQiB9LAkvKiAy CTEJODAwbVYJCTMuNSBkQiAqLworCXsgMHgwLCAweDAsIDB4MDAgfSwJLyogMwkwCTEyMDBtVgkJ MCBkQiBIRE1JIGRlZmF1bHQgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9w aHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9oZG1pX2RkaV90cmFuc1tdID0geworCQkJCS8q IEhETUkgUHJlc2V0CVZTCVByZS1lbXBoICovCisJeyAweDcsIDB4MCwgMHgwIH0sCS8qIDEJCTQw MG1WCTBkQiAqLworCXsgMHg2LCAweDAsIDB4MCB9LAkvKiAyCQk1MDBtVgkwZEIgKi8KKwl7IDB4 NCwgMHgwLCAweDAgfSwJLyogMwkJNjUwbVYJMGRCICovCisJeyAweDIsIDB4MCwgMHgwIH0sCS8q IDQJCTgwMG1WCTBkQiAqLworCXsgMHgwLCAweDAsIDB4MCB9LAkvKiA1CQkxMDAwbVYJMGRCICov CisJeyAweDAsIDB4MCwgMHg1IH0sCS8qIDYJCUZ1bGwJLTEuNSBkQiAqLworCXsgMHgwLCAweDAs IDB4NiB9LAkvKiA3CQlGdWxsCS0xLjggZEIgKi8KKwl7IDB4MCwgMHgwLCAweDcgfSwJLyogOAkJ RnVsbAktMiBkQiAqLworCXsgMHgwLCAweDAsIDB4OCB9LAkvKiA5CQlGdWxsCS0yLjUgZEIgKi8K Kwl7IDB4MCwgMHgwLCAweEEgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwX2hicltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4 QSwgMHgzMiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwor CXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAg ICovCisJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAg Ni4wICAgKi8KKwl7IDB4NiwgMHg3RCwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5MDAg ICAgICA4LjIgICAqLworCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAg IDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyog NTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9 LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAw eDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4 MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7 IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAq LworCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMu MSAgICovCisJeyAweEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAg ICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5 MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDQ3LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUw MCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NjMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJ LyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgx MCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDYxLCAweDNDLCAweDAw LCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0IsIDB4MzUs IDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3Riwg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfdXlfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAg Ki8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAw LjAgICAqLworCXsgMHhBLCAweDRGLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDM1MCAgIDUwMCAg ICAgIDMuMSAgICovCisJeyAweEMsIDB4NjAsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogMzUwICAg NzAwICAgICAgNi4wICAgKi8KKwl7IDB4QywgMHg3RiwgMHgyRCwgMHgwMCwgMHgxMiB9LAkvKiAz NTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhDLCAweDQ3LCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NkYsIDB4MzYsIDB4MDAsIDB4 MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RCwgMHgzMiwgMHgw MCwgMHgwRCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHg2LCAweDYwLCAweDND LCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0Ys IDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4Niwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsK KworLyoKKyAqIENsb25lZCB0aGUgSE9CTCBlbnRyeSB0byBjb21wbHkgd2l0aCB0aGUgdm9sdGFn ZSBhbmQgcHJlLWVtcGhhc2lzIGVudHJpZXMKKyAqIHRoYXQgRGlzcGxheVBvcnQgc3BlY2lmaWNh dGlvbiByZXF1aXJlcworICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z IHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsW10gPSB7CisJCQkJ CQkvKiBWUwlwcmUtZW1wCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog MAkwCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkxCSovCisJeyAw eDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkyCSovCisJeyAweDYsIDB4N0YsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkzCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogMQkwCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMQkx CSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMQkyCSovCisJeyAweDYs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMgkwCSovCisJeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogMgkxCSovCit9OworCitib29sIGlzX2hvYmxfYnVmX3RyYW5zKGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqdGFibGUpCit7CisJcmV0dXJuIHRhYmxlID09 IHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsOworfQorCitjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitiZHdfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJaWYg KGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKKwkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRp b25zX2VkcDsKKwl9IGVsc2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3Ry YW5zbGF0aW9uc19kcCk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19kcDsKKwl9Cit9 CisKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK3NrbF9nZXRfYnVmX3RyYW5zX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK KworCWlmIChJU19TS0xfVUxYKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIHNrbF95X2RkaV90cmFuc2xh dGlvbnNfZHA7CisJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9wcml2KSkgeworCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIHNr bF91X2RkaV90cmFuc2xhdGlvbnNfZHA7CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZ X1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xh dGlvbnNfZHA7CisJfQorfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitrYmxfZ2V0 X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJp ZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7CisKKwlpZiAoSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKKwkgICAgSVNf Q0ZMX1VMWChkZXZfcHJpdikgfHwKKwkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKKwkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3lfZGRpX3RyYW5zbGF0aW9uc19kcCk7CisJCXJldHVy biBrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0gZWxzZSBpZiAoSVNfS0JMX1VMVChkZXZf cHJpdikgfHwKKwkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwKKwkJICAgSVNfQ01MX1VMVChk ZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3VfZGRpX3RyYW5zbGF0 aW9uc19kcCk7CisJCXJldHVybiBrYmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0gZWxzZSB7 CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGtibF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJ cmV0dXJuIGtibF9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0KK30KKworY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgKgorc2tsX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChkZXZfcHJpdi0+ dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCWlmIChJU19TS0xfVUxYKGRldl9wcml2KSB8fAorCQkg ICAgSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKKwkJICAgIElTX0NGTF9VTFgoZGV2X3ByaXYpIHx8 CisJCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQkJcmV0dXJuIHNrbF95X2RkaV90cmFu c2xhdGlvbnNfZWRwOworCQl9IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2X3ByaXYpIHx8CisJCQkg ICBJU19LQkxfVUxUKGRldl9wcml2KSB8fAorCQkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwK KwkJCSAgIElTX0NNTF9VTFQoZGV2X3ByaXYpKSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2VkcCk7CisJCQlyZXR1cm4gc2tsX3VfZGRpX3RyYW5z bGF0aW9uc19lZHA7CisJCX0gZWxzZSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xf ZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQkJcmV0dXJuIHNrbF9kZGlfdHJhbnNsYXRpb25zX2Vk cDsKKwkJfQorCX0KKworCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09G RkVFTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09NRVRMQUtFKGRldl9wcml2KSkKKwkJcmV0 dXJuIGtibF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7CisJZWxzZQorCQly ZXR1cm4gc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKK30KKworY29u c3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgorc2tsX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCAqbl9lbnRyaWVzKQoreworCWlmIChJU19T S0xfVUxYKGRldl9wcml2KSB8fAorCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAorCSAgICBJ U19DRkxfVUxYKGRldl9wcml2KSB8fAorCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgeworCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCQly ZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworCX0gZWxzZSB7CisJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKHNrbF9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCQlyZXR1cm4gc2ts X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKKwl9Cit9CisKK2ludCBza2xfYnVmX3RyYW5zX251bV9l bnRyaWVzKGVudW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQoreworCS8qIE9ubHkgRERJQSBh bmQgRERJRSBjYW4gc2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGggRFAgKi8KKwlpZiAocG9y dCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQT1JUX0UpCisJCXJldHVybiBtaW4obl9lbnRyaWVzLCAx MCk7CisJZWxzZQorCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Cit9CisKK2NvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChJ U19LQUJZTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09GRkVFTEFLRShkZXZfcHJpdikgfHwK KwkgICAgSVNfQ09NRVRMQUtFKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90 cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9CisJCQlrYmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVy LCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhl bmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7CisJ fSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9CisJCQlza2xfZ2V0X2J1Zl90cmFuc19kcChlbmNv ZGVyLCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmll cyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7 CisJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuICBiZHdfZGRpX3Ry YW5zbGF0aW9uc19kcDsKKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJu IGhzd19kZGlfdHJhbnNsYXRpb25zX2RwOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVy biBOVUxMOworfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0 X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRy aWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOworCisJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJCWNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0KKwkJCXNrbF9nZXRfYnVm X3RyYW5zX2VkcChlbmNvZGVyLCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90 cmFuc19udW1fZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRk aV90cmFuc2xhdGlvbnM7CisJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJ CXJldHVybiBiZHdfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKKwl9IGVs c2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KGhzd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25z X2RwOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbl9lbnRyaWVzKQorewor CWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaSk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9u c19mZGk7CisJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGkpOworCQlyZXR1cm4gaHN3X2Rk aV90cmFuc2xhdGlvbnNfZmRpOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxM OworfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90 cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBpbnQgKm5f ZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkgeworCQly ZXR1cm4gc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwgbl9lbnRyaWVzKTsKKwl9IGVs c2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0 aW9uc19oZG1pOworCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVybiBo c3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVy biBOVUxMOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4 dF9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5f ZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9u c19kcCk7CisJcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisK KwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgeworCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQlyZXR1cm4gYnh0X2RkaV90cmFu c2xhdGlvbnNfZWRwOworCX0KKworCXJldHVybiBieHRfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVy LCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5z ICoKK2J4dF9nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs IGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJh bnNsYXRpb25zX2hkbWkpOworCXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQor Citjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgorYnh0X2dldF9idWZfdHJhbnMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCisJCSAgaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gYnh0 X2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBuX2VudHJpZXMpOworCWlmIChpbnRlbF9jcnRj X2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4gYnh0X2dl dF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7CisJcmV0dXJuIGJ4dF9nZXRfYnVm X3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMyIHZvbHRh Z2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdF X0lORk9fTUFTSzsKKworCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgeworCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfODVWKTsK KwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVY7CisJfSBlbHNlIGlmICh2 b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJh bnNsYXRpb25zX2hkbWlfMF85NVY7CisJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5G T18xXzA1VikgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9u c19oZG1pXzFfMDVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVY7 CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCisJCU1JU1NJ TkdfQ0FTRSh2b2x0YWdlKTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCXUzMiB2 b2x0YWdlID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ05MX1BPUlRfQ09NUF9EVzMpICYgVk9M VEFHRV9JTkZPX01BU0s7CisKKwlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF84NVYpIHsK KwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVYp OworCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVY7CisJfSBlbHNlIGlmICh2 b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1Vik7CisJCXJldHVybiBjbmxfZGRpX3RyYW5z bGF0aW9uc19kcF8wXzk1VjsKKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFf MDVWKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2Rw XzFfMDVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWOworCX0gZWxz ZSB7CisJCSpuX2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLworCQlNSVNTSU5HX0NBU0Uo dm9sdGFnZSk7CisJfQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zICoKK2NubF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMyIHZvbHRhZ2Ug PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lO Rk9fTUFTSzsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCWlmICh2 b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKKwkJCXJldHVybiBjbmxfZGRpX3Ry YW5zbGF0aW9uc19lZHBfMF84NVY7CisJCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lO Rk9fMF85NVYpIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRp b25zX2VkcF8wXzk1Vik7CisJCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVW OworCQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7CisJCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVYpOworCQkJ cmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VjsKKwkJfSBlbHNlIHsKKwkJCSpu X2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLworCQkJTUlTU0lOR19DQVNFKHZvbHRhZ2Up OworCQl9CisJCXJldHVybiBOVUxMOworCX0gZWxzZSB7CisJCXJldHVybiBjbmxfZ2V0X2J1Zl90 cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOworCX0KK30KKworY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKK2NubF9nZXRfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAorCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAor CQkgIGludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3Rh dGUsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2hkbWko ZW5jb2Rlciwgbl9lbnRyaWVzKTsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRl LCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2VkcChlbmNv ZGVyLCBuX2VudHJpZXMpOworCXJldHVybiBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBu X2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoK K2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAor CQkJICAgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCisJCQkgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7CisJcmV0dXJuIGljbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK KworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7CisJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7CisJ CXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7CisJfSBlbHNl IGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7CisJCXJldHVy biBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7CisJfSBlbHNlIGlmIChJ U19ERzEoZGV2X3ByaXYpICYmIGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKKwkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Rw X2hicjJfaGJyMyk7CisJCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBf aGJyMl9oYnIzOworCX0gZWxzZSBpZiAoSVNfREcxKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicik7 CisJCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicjsKKwl9 CisKKwlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0 ZSwgbl9lbnRyaWVzKTsKK30KKworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2lj bF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJ Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50 cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQ VVRfSERNSSkpCisJCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIs IGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIGljbF9nZXRfY29tYm9fYnVm X3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UKKwkJcmV0 dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50 cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5z ICoKK2ljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJ ICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5 X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0 aW9uc19oZG1pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90 cmFucyAqCitpY2xfZ2V0X21nX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJ aW50ICpuX2VudHJpZXMpCit7CisJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDAp IHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25z X2hicjJfaGJyMyk7CisJCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGJyMl9o YnIzOworCX0gZWxzZSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRp X3RyYW5zbGF0aW9uc19yYnJfaGJyKTsKKwkJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0 aW9uc19yYnJfaGJyOworCX0KK30KKworY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90 cmFucyAqCitpY2xfZ2V0X21nX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKKwkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJ ICAgICBpbnQgKm5fZW50cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0 YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCisJCXJldHVybiBpY2xfZ2V0X21nX2J1Zl90cmFuc19o ZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZQorCQlyZXR1cm4gaWNs X2dldF9tZ19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitlaGxfZ2V0X2NvbWJv X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgaW50ICpu X2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2hkbWkpOworCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfaGRtaTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitl aGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAg aW50ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZWhsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwlyZXR1cm4gZWhsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2RwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoK K2VobF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJ CSAgICBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVk cC5sb3dfdnN3aW5nKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7CisJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwX2hicjI7CisJfQorCisJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3Ry YW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2NvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqCitlaGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkJaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gZWhsX2dldF9jb21i b19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2Ug aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJ CXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwg bl9lbnRyaWVzKTsKKwllbHNlCisJCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChl bmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJ cmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRfY29tYm9fYnVmX3RyYW5z X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICBpbnQgKm5fZW50cmllcykKK3sKKwkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBf aGJyMik7CisJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQgKm5f ZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5n KSB7CisJCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7CisJCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIp OworCQkJcmV0dXJuIGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKKwkJ fSBlbHNlIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfaGJyKTsKKwkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjsKKwkJfQorCX0KKworCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFu c19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgoranNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKKwkJCWludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGpzbF9nZXRfY29tYm9f YnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlIGlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQly ZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5f ZW50cmllcyk7CisJZWxzZQorCQlyZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5j b2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBj bmxfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgaW50ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCXJl dHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19k cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgaW50ICpuX2VudHJpZXMpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7CisKKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgeworCQlpZiAoSVNf VEdMX1UoZGV2X3ByaXYpIHx8IElTX1RHTF9ZKGRldl9wcml2KSkgeworCQkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUodGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjIpOwor CQkJcmV0dXJuIHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOworCQl9 IGVsc2UgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjIpOworCQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oYnIyOworCQl9CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo dGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicik7CisJCXJldHVybiB0Z2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyOworCX0KK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7 CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsK KworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7CisJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7CisJ CXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7CisJfSBlbHNl IGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5ob2JsICYmICFpbnRlbF9kcC0+aG9ibF9mYWlsZWQpIHsK KwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnIyX2hvYmwpOworCQlyZXR1cm4gdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnIyX2hvYmw7CisJfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5n KSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfaGJyMik7CisJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwX2hicjI7CisJfQorCisJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAor CQkJaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0 ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNf aGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UgaWYgKGludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVybiB0Z2xf Z2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsK KwllbHNlCisJCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRj X3N0YXRlLCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5 X2RkaV9idWZfdHJhbnMgKgordGdsX2dldF9ka2xfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKKwkJCSAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKHRnbF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zKTsKKwlyZXR1cm4gdGdsX2RrbF9waHlf aGRtaV9kZGlfdHJhbnM7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRp X2J1Zl90cmFucyAqCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCisJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCisJCQkgaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sg PiAyNzAwMDApIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfZHBfZGRp X3RyYW5zX2hicjIpOworCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjI7CisJ fSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfZHBfZGRpX3Ry YW5zKTsKKwkJcmV0dXJuIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuczsKKwl9Cit9CisKK2NvbnN0 IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfZGtsX2J1Zl90cmFu cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJICAgICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAgICAgIGludCAqbl9lbnRyaWVzKQorewor CWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkK KwkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUs IG5fZW50cmllcyk7CisJZWxzZQorCQlyZXR1cm4gdGdsX2dldF9ka2xfYnVmX3RyYW5zX2RwKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2ludCBpbnRlbF9kZGlfaGRtaV9u dW1fZW50cmllcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgICBpbnQgKmRl ZmF1bHRfZW50cnkpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19w aHkoZGV2X3ByaXYsIGVuY29kZXItPnBvcnQpOworCWludCBuX2VudHJpZXM7CisKKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMikgeworCQlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9w cml2LCBwaHkpKQorCQkJdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRj X3N0YXRlLCAmbl9lbnRyaWVzKTsKKwkJZWxzZQorCQkJdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hk bWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0g bl9lbnRyaWVzIC0gMTsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpIHsK KwkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKKwkJCWljbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CisJCWVs c2UKKwkJCWljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5f ZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKKwl9IGVsc2UgaWYg KElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7CisJCWNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5j b2RlciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKKwl9 IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7CisJCWJ4dF9nZXRfYnVmX3RyYW5zX2hk bWkoZW5jb2RlciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0g MTsKKwl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJCWludGVsX2RkaV9nZXRf YnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0g ODsKKwl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJaW50ZWxfZGRpX2dl dF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkg PSA3OworCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJaW50ZWxfZGRpX2dl dF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkg PSA2OworCX0gZWxzZSB7CisJCWRybV9XQVJOKCZkZXZfcHJpdi0+ZHJtLCAxLCAiZGRpIHRyYW5z bGF0aW9uIHRhYmxlIG1pc3NpbmdcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoZHJtX1dB Uk5fT05fT05DRSgmZGV2X3ByaXYtPmRybSwgbl9lbnRyaWVzID09IDApKQorCQlyZXR1cm4gMDsK KworCXJldHVybiBuX2VudHJpZXM7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uZjhmMGVmODdlOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmgKQEAgLTAsMCArMSwxMDAgQEAK Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX0lOVEVMX0RESV9CVUZfVFJB TlNfSF8KKyNkZWZpbmUgX0lOVEVMX0RESV9CVUZfVFJBTlNfSF8KKworI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+CisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOworc3RydWN0IGludGVsX2VuY29k ZXI7CitzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKKworc3RydWN0IGRkaV9idWZfdHJhbnMgewor CXUzMiB0cmFuczE7CS8qIGJhbGFuY2UgbGVnIGVuYWJsZSwgZGUtZW1waCBsZXZlbCAqLworCXUz MiB0cmFuczI7CS8qIHZyZWYgc2VsLCB2c3dpbmcgKi8KKwl1OCBpX2Jvb3N0OwkvKiBTS0w6IElf Ym9vc3Q7IHZhbGlkOiAweDAsIDB4MSwgMHgzLCAweDcgKi8KK307CisKK3N0cnVjdCBieHRfZGRp X2J1Zl90cmFucyB7CisJdTggbWFyZ2luOwkvKiBzd2luZyB2YWx1ZSAqLworCXU4IHNjYWxlOwkv KiBzY2FsZSB2YWx1ZSAqLworCXU4IGVuYWJsZTsJLyogc2NhbGUgZW5hYmxlICovCisJdTggZGVl bXBoYXNpczsKK307CisKK3N0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB7CisJdTggZHcyX3N3aW5n X3NlbDsKKwl1OCBkdzdfbl9zY2FsYXI7CisJdTggZHc0X2N1cnNvcl9jb2VmZjsKKwl1OCBkdzRf cG9zdF9jdXJzb3JfMjsKKwl1OCBkdzRfcG9zdF9jdXJzb3JfMTsKK307CisKK3N0cnVjdCBpY2xf bWdfcGh5X2RkaV9idWZfdHJhbnMgeworCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTFfNjsK Kwl1MzIgY3JpX3R4ZGVlbXBoX292ZXJyaWRlXzVfMDsKKwl1MzIgY3JpX3R4ZGVlbXBoX292ZXJy aWRlXzE3XzEyOworfTsKKworc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgeworCXUz MiBka2xfdnN3aW5nX2NvbnRyb2w7CisJdTMyIGRrbF9wcmVzaG9vdF9jb250cm9sOworCXUzMiBk a2xfZGVfZW1waGFzaXNfY29udHJvbDsKK307CisKK2Jvb2wgaXNfaG9ibF9idWZfdHJhbnMoY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICp0YWJsZSk7CisKK2ludCBpbnRlbF9kZGlfaGRt aV9udW1fZW50cmllcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgICBpbnQg KmRlZmF1bHRfZW50cnkpOworCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9k ZGlfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAq bl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRf YnVmX3RyYW5zX2ZkaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAg aW50ICpuX2VudHJpZXMpOworY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgoraW50ZWxfZGRp X2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAg ICAgaW50ICpuX2VudHJpZXMpOworY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgoraW50ZWxf ZGRpX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAq bl9lbnRyaWVzKTsKKworY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9nZXRf YnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgIGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgIGludCAqbl9lbnRyaWVzKTsKKwor Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5z KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1Y3Qg dGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAorCQkgICAgICBpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKgoranNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKKwkJCWludCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyAqCitlaGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAor CQkJaW50ICpuX2VudHJpZXMpOworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2lj bF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJ Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50 cmllcyk7Citjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRf bWdfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgICAgIGludCAqbl9lbnRy aWVzKTsKKworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2NubF9nZXRfYnVmX3Ry YW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgIGludCAqbl9lbnRyaWVzKTsKKworI2VuZGlm Ci0tIAoyLjI3LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=